Führerredux Wiki fuhrerreduxwiki https://fuhrerredux.miraheze.org/wiki/Main_Page MediaWiki 1.40.1 first-letter Media Special Talk User User talk Führerredux Wiki Führerredux Wiki talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk UserWiki UserWiki talk User profile User profile talk GeoJson GeoJson talk Campaign Campaign talk TimedText TimedText talk BPMN BPMN talk Gantt Gantt talk Mermaid Mermaid talk Drawio Drawio talk Module Module talk Gadget Gadget talk Gadget definition Gadget definition talk FX FX talk Template:Cite 10 1164 2490 2009-01-23T18:05:30Z w>Aervanath 0 redirect to [[Template:Citation]] per request on talk page wikitext text/x-wiki #REDIRECT [[Template:Citation]] b0762d88014fb55e2365a35525816c8f782cd8ff Template:Doc subpage 10 491 1087 2009-04-19T21:57:38Z wikipedia>MSGJ 0 [[WP:AES|←]]Redirected page to [[Template:Documentation subpage]] wikitext text/x-wiki #redirect[[Template:Documentation subpage]] 3aaef8c38750fcf2836627f907d6456f297f493d Template:Cnote2 begin 10 1621 2956 2009-09-20T18:40:37Z w>ChyranandChloe 0 redir wikitext text/x-wiki #Redirect[[Template:Cnote2 Begin]] 1d2c3a2fb7c1a2a5bd063109ecd51f51df9949d5 Template:Cnote2 end 10 1622 2957 2009-09-20T18:41:07Z w>ChyranandChloe 0 redir wikitext text/x-wiki #Redirect[[Template:Cnote2 End]] 526e9e84e398c3252c087485d73f5d070261843a Template:File other 10 1312 2647 2010-10-04T14:41:22Z w>WOSlinker 0 remove {{pp-template}} wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:6}} | file | other }} }} | file | image = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 0ae5bdb15fbe55f5787d00f85a443e4eac787c5e Template:Service record/doc 10 1520 2855 2010-11-30T17:19:02Z w>Mhiji 0 moved [[Template:Service record/doc]] to [[Template:Infobox service record/doc]] wikitext text/x-wiki #REDIRECT [[Template:Infobox service record/doc]] 38cb0b93fc4900e0c498c2a21ceaf5575b9d3853 Template:Command structure/doc 10 1516 2851 2010-11-30T17:20:18Z w>Mhiji 0 moved [[Template:Command structure/doc]] to [[Template:Infobox command structure/doc]] wikitext text/x-wiki #REDIRECT [[Template:Infobox command structure/doc]] 72133518cc1e5fc21c0f32cd8a42ae6c98d84e28 Template:Infobox tea/types 10 1488 2823 2011-04-29T17:43:28Z w>Calliopejen1 0 wikitext text/x-wiki {{#switch: {{{1}}} | Black = aaaaaa | Green = 009c00 | Oolong = 590000 | Pouchong = ff7594 | Post-fermented = 8822ff | Puerh = 5e3253 | White = d7f2ac | Wuyi = 000097 | Yellow = fff127 | aaaaaa }} 7f33a00eb961101caca49c87ec3dabd582cd4027 Template:Infobox UK place/area 10 1412 2747 2012-04-23T10:13:20Z w>AGK 0 Changed protection level of Template:Infobox UK place/area: [[Wikipedia:High-risk templates|Highly-visible template]] (between 700 and 1200 transclusions) (‎[edit=autoconfirmed] (indefinite) ‎[move=sysop] (indefinite)) wikitext text/x-wiki <includeonly>{{#ifeq: {{{type|}}}|mile|<!-- then -->{{Convert|{{{top}}}|sqmi|km2|abbr=on}}|<!-- else -->{{Convert|{{{top}}}|km2|sqmi|abbr=on}} }}</includeonly><noinclude> {{documentation|content= This subtemplate uses [[Template:Convert]] to convert area measurements from square miles to km<sup>2</sup> (if <code>type</code> equals mile) or from km<sup>2</sup> to square miles (if <code>type</code> does not equal mile). == Example == :<code><nowiki>{{Infobox UK place/area|top=1,000|type=mile}}</nowiki></code> &rarr; {{Infobox UK place/area|top=1,000|type=mile}} :<code><nowiki>{{Infobox UK place/area|top=1,000|type=km}}</nowiki></code> &rarr; {{Infobox UK place/area|top=1,000|type=km}} This template should not be used directly. }}</noinclude> 2f18ba1d6cce152785aee7b65721835ab75ab309 Template:Cite book/lua 10 692 1552 2013-03-24T23:28:10Z wikipedia>Dragons flight 0 [[WP:AES|←]]Redirected page to [[Template:Cite book]] wikitext text/x-wiki #redirect [[Template:Cite book]] 598ed4dfc9eb5f2d9778d19c1e673eca6ae6aeb4 Template:Campaign/doc 10 1509 2844 2013-05-07T21:33:04Z w>BDD 0 BDD moved page [[Template:Campaign/doc]] to [[Template:Campaignbox/doc]] over redirect: RM; see talk page wikitext text/x-wiki #REDIRECT [[Template:Campaignbox/doc]] 96204735bd25c964b25be72f9fe56c67b3302279 Template:Infobox consort styles 10 1125 2450 2013-07-13T18:50:35Z w>Pigsonthewing 0 ce wikitext text/x-wiki {{Infobox manner of address | background = #BBAADD | color = #000066 | name = {{{royal name<includeonly>|</includeonly>}}} | consort = true | image = {{{image<includeonly>|</includeonly>}}} | reference = {{{dipstyle<includeonly>|</includeonly>}}} | spoken = {{{offstyle<includeonly>|</includeonly>}}} | alternative = {{{altstyle<includeonly>|</includeonly>}}} }}<noinclude>{{documentation}}</noinclude> 54d4cc507a47d9fde85887bb2d02c274590597d6 Template:Infobox Company 10 1116 2441 2013-10-19T10:46:54Z w>WOSlinker 0 Changed protection level of Template:Infobox Company: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Infobox company]] a5464fab7611dce6198f7e414696325559cec471 Template:Infobox UK place/dens 10 1413 2748 2013-10-19T11:05:31Z w>WOSlinker 0 Changed protection level of Template:Infobox UK place/dens: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite)) wikitext text/x-wiki <!-- this template is for formatting a density (using [[Template:Convert]]) if type=mile then output is sqmi (km2) otherwise km2 (sqmi) rounding of output is to nearest whole number --><includeonly>{{#ifeq: {{{type|}}}|mile|<!-- then -->{{Convert|{{#expr: ({{formatnum: {{{top}}}|R}}/{{formatnum: {{{bottom }}}|R}}) round 0}}|/sqmi|/sqkm|abbr=on}}|<!-- else -->{{Convert|{{#expr: ({{formatnum: {{{top}}}|R}}/{{formatnum: {{{bottom }}}|R}}) round 0}}|/sqkm|/sqmi|abbr=on}} }}</includeonly> 9d6fa55efce3e6c937266f011c1bae890f0d90e5 Template:Infobox settlement/pref 10 1442 2777 2013-10-19T11:16:10Z w>WOSlinker 0 Changed protection level of Template:Infobox settlement/pref: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite)) wikitext text/x-wiki <includeonly>{{#switch:{{ucfirst:{{{1}}}}} |Imperial |English |UK|US|U.S. |US Customary|U.S. Customary |Standard = impus |{{#switch:{{{2}}} |[[United Kingdom]]|United Kingdom |[[United States]]|United States |[[United States of America]]|United States of America |[[United States|United States of America]] |[[Image:Flag of the United States.svg|20px]] [[United States]] = impus |{{#ifeq:{{{3}}}_{{lc:{{{1}}}}}|area_dunam|dunam|metric}} }} }}</includeonly><noinclude> {{documentation}} </noinclude> 7f7165e08b34afaaf9f84a31965beb8f3e8a21b8 Template:Infobox settlement/link 10 1441 2776 2013-10-19T11:19:36Z w>WOSlinker 0 Changed protection level of Template:Infobox settlement/link: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite)) wikitext text/x-wiki {{#if:{{{link|}}}<!-- -->|[[{{{link}}}|{{{type}}}]]<!-- -->|{{#ifexist:{{{type}}} of {{PAGENAME}}<!-- -->|[[{{{type}}} of {{PAGENAME}}|{{{type|}}}]]<!-- -->|{{#if:{{{name|}}}<!-- -->|{{#ifexist:{{{type}}} of {{{name}}}<!-- -->|[[{{{type}}} of {{{name}}}|{{{type|}}}]]<!-- -->|{{{type}}}<!-- -->}}<!-- -->|{{{type}}}<!-- -->}}<!-- -->}}<!-- -->}}<noinclude> {{documentation}} </noinclude> 7f1193f6be51d8bf296df176cd7c49b5d819202e Template:Country data Holy Roman Empire 10 1500 2835 2013-10-19T14:59:12Z w>WOSlinker 0 Changed protection level of Template:Country data Holy Roman Empire: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite)) wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Holy Roman Empire | flag alias = Banner of the Holy Roman Emperor (after 1400).svg | flag alias-1200 = Flag of the Holy Roman Empire (1200-1350).svg | flag alias-old = Heiliges Römisches Reich - Reichssturmfahne vor 1433.svg | size = {{{size|}}} | name = {{{name|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1200 | var2 = old </noinclude> }} c24cc53598b544658ee4420e6aa0370eca6c4d78 Template:Convinfobox/2 10 1557 2892 2013-10-21T06:35:44Z w>WOSlinker 0 Changed protection level of Template:Convinfobox/2: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite)) wikitext text/x-wiki <noinclude>empty [[Category:Subtemplates of Template Convinfobox]] </noinclude> b95cff677c7897f77c1cb03f8d7fabf9a61a3d5a Template:Convinfobox/3 10 1554 2889 2013-10-21T06:35:49Z w>WOSlinker 0 Changed protection level of Template:Convinfobox/3: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite)) wikitext text/x-wiki <noinclude>empty [[Category:Subtemplates of Template Convinfobox]] </noinclude> b95cff677c7897f77c1cb03f8d7fabf9a61a3d5a Template:Error 10 1384 2719 2013-10-29T00:20:58Z w>Mr. Stradivarius 0 Protected Template:Error: [[WP:High-risk templates|Highly visible template]]: 32,000 transclusions ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki {{#invoke:Error|error|{{{message|{{{1}}}}}}|tag={{{tag|}}}}}<noinclude> {{documentation}} </noinclude> 5da54c14258c1b1755a03bccb88dc5d9d0cefb56 Template:0 10 1169 2498 2013-11-02T02:28:36Z w>Fuhghettaboutit 0 Changed protection level of Template:0: Enable access by template editors ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki <includeonly><span style="visibility:hidden;color:transparent;">{{{1|0}}}</span></includeonly><noinclude> {{documentation}} </noinclude> 3a81b6766266cc4e7b5039558fa86857b943df9b Template:Auto link 10 1402 2737 2013-11-02T02:46:31Z w>Fuhghettaboutit 0 Changed protection level of Template:Auto link: Enable access by template editors ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki <includeonly>{{{{{|safesubst:}}}#ifexist:{{{1|}}} |[[{{{1}}}|{{{2|{{{1}}}}}}]] |{{{2|{{{1}}}}}} }}</includeonly><noinclude> {{Documentation}} </noinclude> c4960ed09830c052d57b46f4bed246f6912635ac Template:Collapsible list 10 1178 2507 2013-11-02T05:07:45Z w>Fuhghettaboutit 0 Changed protection level of Template:Collapsible list: Enable access by template editors ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:collapsible list|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> aff61df28bcc6c3457d6aa36ada4fffe68c409a9 Template:!- 10 571 1290 2013-11-17T11:54:04Z wikipedia>Mr. Stradivarius 0 Changed protection level of Template:!-: [[WP:High-risk templates|Highly visible template]]: reinstate full-protection - this should never be edited ([Edit=Block all non-admin users] (indefinite) [Move=Block all non-admin users] (indefinite)) wikitext text/x-wiki |-<noinclude> {{documentation}} </noinclude> 19a1b27b5273caa6fd83a1208fb704afa9ee7c04 Template:Native phrase 10 1195 2524 2013-12-18T21:08:38Z Nick 46 Protected Template:Native phrase: [[WP:High-risk templates|Highly visible template]]: #redirect ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki #redirect [[Template:Native name]] 561f2c45647b28659d991f0a467779366e7ec49e Template:Convinfobox 10 1161 2487 2013-12-22T16:32:09Z w>Frietjes 0 sync with sandbox, will save old version in sandbox for comparison wikitext text/x-wiki {{Convinfobox/{{#if:{{{1|}}}|pri}}{{#if:{{{3|}}}|sec}}{{#if:{{{6|}}}|{{#if:{{{5|}}}|ter}}3|2}}|{{{1}}}|{{{2}}}|{{{3}}}|{{{4}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<noinclude>{{documentation}}</noinclude> dd1f683285c4b5ba7197ff1275954bd1592ad76a Template:Dated maintenance category 10 858 1900 2014-01-08T08:14:55Z wikipedia>John of Reading 0 Second attempt. Those spaces upset inline templates such as {{As of}}. Instead, try an unconditional <nowiki/> wikitext text/x-wiki <nowiki/><!--This nowiki helps to prevent whitespace at the top of articles-->{{#ifeq:{{FULLROOTPAGENAME}}|Wikipedia:Template messages|<!--Do not categorize-->|<!-- -->{{#ifexpr:{{#if:{{NAMESPACE}}|0|1}}+{{#ifeq:{{{onlyarticles|no}}}|yes|0|1}} |{{#if:{{{3|}}} |[[Category:{{{1}}} {{{2}}} {{{3}}}]]<!-- -->{{#ifexist:Category:{{{1}}} {{{2}}} {{{3}}} |<!-- -->|[[Category:Articles with invalid date parameter in template]]<!-- -->}} |[[Category:{{#if:{{{5|}}} |{{{5}}}<!-- -->|{{{1}}}<!-- -->}}]]<!-- -->}}{{#if:{{{4|}}} |[[Category:{{{4}}}]]}}<!-- -->}}<!-- -->}}<noinclude> {{documentation}} </noinclude> 41e7d4000124d4f718ddf222af0b72825048c4c4 Template:Userbox 10 141 2619 2014-01-09T17:16:29Z w>Mr. Stradivarius 0 switch to Lua version at [[Module:Userbox]] wikitext text/x-wiki {{#invoke:userbox|userbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 43f31821f815f586868b4e5ea3e7116d7b972f58 Template:Userbox-r 10 1286 2621 2014-01-09T17:19:18Z w>Mr. Stradivarius 0 Changed protection level of Template:Userbox-r: [[WP:High-risk templates|Highly visible template]]: allow template editors ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki {{#invoke:userbox|userbox-r}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 6aa99e94ac1015b6267ab88c2e9e2ec3a9752192 Template:Cite speech 10 972 2134 2014-02-15T11:20:29Z wikipedia>Trappist the monk 0 Upgrade to Lua module; wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=speech }}</includeonly><noinclude> {{documentation}} </noinclude> cf9cd1f1cc50d72b2e007ae130b09b98802fb607 Template:Infobox geopolitical organization 10 1220 2549 2014-02-21T17:02:10Z w>Wbm1058 0 remove template in the wrong namespace, removed: {{R from other capitalisation}} using [[Project:AWB|AWB]] wikitext text/x-wiki #REDIRECT [[Template:Infobox country]]{{R from alternate name}} <!-- see Template:Infobox Geopolitical organization --> 4d4892c38a22f1866ca7a29f81ddbc7fc26967f5 Template:Location map~ 10 1633 2975 2014-03-13T19:27:13Z wikipedia>Jackmcbarn 0 new function name wikitext text/x-wiki <includeonly>{{#invoke:Location map|mark}}</includeonly><noinclude> {{Documentation}} </noinclude> 0dc485fa8e546ebe81ad6c28972fbea662afcf39 Module:Namespace detect 828 95 237 2014-04-05T17:01:23Z wikipedia>Mr. Stradivarius 0 use demopage instead of page as the main "page" parameter Scribunto text/plain --[[ -------------------------------------------------------------------------------- -- -- -- NAMESPACE DETECT -- -- -- -- This module implements the {{namespace detect}} template in Lua, with a -- -- few improvements: all namespaces and all namespace aliases are supported, -- -- and namespace names are detected automatically for the local wiki. The -- -- module can also use the corresponding subject namespace value if it is -- -- used on a talk page. Parameter names can be configured for different wikis -- -- by altering the values in the "cfg" table in -- -- Module:Namespace detect/config. -- -- -- -------------------------------------------------------------------------------- --]] local data = mw.loadData('Module:Namespace detect/data') local argKeys = data.argKeys local cfg = data.cfg local mappings = data.mappings local yesno = require('Module:Yesno') local mArguments -- Lazily initialise Module:Arguments local mTableTools -- Lazily initilalise Module:TableTools local ustringLower = mw.ustring.lower local p = {} local function fetchValue(t1, t2) -- Fetches a value from the table t1 for the first key in array t2 where -- a non-nil value of t1 exists. for i, key in ipairs(t2) do local value = t1[key] if value ~= nil then return value end end return nil end local function equalsArrayValue(t, value) -- Returns true if value equals a value in the array t. Otherwise -- returns false. for i, arrayValue in ipairs(t) do if value == arrayValue then return true end end return false end function p.getPageObject(page) -- Get the page object, passing the function through pcall in case of -- errors, e.g. being over the expensive function count limit. if page then local success, pageObject = pcall(mw.title.new, page) if success then return pageObject else return nil end else return mw.title.getCurrentTitle() end end -- Provided for backward compatibility with other modules function p.getParamMappings() return mappings end local function getNamespace(args) -- This function gets the namespace name from the page object. local page = fetchValue(args, argKeys.demopage) if page == '' then page = nil end local demospace = fetchValue(args, argKeys.demospace) if demospace == '' then demospace = nil end local subjectns = fetchValue(args, argKeys.subjectns) local ret if demospace then -- Handle "demospace = main" properly. if equalsArrayValue(argKeys.main, ustringLower(demospace)) then ret = mw.site.namespaces[0].name else ret = demospace end else local pageObject = p.getPageObject(page) if pageObject then if pageObject.isTalkPage then -- Get the subject namespace if the option is set, -- otherwise use "talk". if yesno(subjectns) then ret = mw.site.namespaces[pageObject.namespace].subject.name else ret = 'talk' end else ret = pageObject.nsText end else return nil -- return nil if the page object doesn't exist. end end ret = ret:gsub('_', ' ') return ustringLower(ret) end function p._main(args) -- Check the parameters stored in the mappings table for any matches. local namespace = getNamespace(args) or 'other' -- "other" avoids nil table keys local params = mappings[namespace] or {} local ret = fetchValue(args, params) --[[ -- If there were no matches, return parameters for other namespaces. -- This happens if there was no text specified for the namespace that -- was detected or if the demospace parameter is not a valid -- namespace. Note that the parameter for the detected namespace must be -- completely absent for this to happen, not merely blank. --]] if ret == nil then ret = fetchValue(args, argKeys.other) end return ret end function p.main(frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame, {removeBlanks = false}) local ret = p._main(args) return ret or '' end function p.table(frame) --[[ -- Create a wikitable of all subject namespace parameters, for -- documentation purposes. The talk parameter is optional, in case it -- needs to be excluded in the documentation. --]] -- Load modules and initialise variables. mTableTools = require('Module:TableTools') local namespaces = mw.site.namespaces local cfg = data.cfg local useTalk = type(frame) == 'table' and type(frame.args) == 'table' and yesno(frame.args.talk) -- Whether to use the talk parameter. -- Get the header names. local function checkValue(value, default) if type(value) == 'string' then return value else return default end end local nsHeader = checkValue(cfg.wikitableNamespaceHeader, 'Namespace') local aliasesHeader = checkValue(cfg.wikitableAliasesHeader, 'Aliases') -- Put the namespaces in order. local mappingsOrdered = {} for nsname, params in pairs(mappings) do if useTalk or nsname ~= 'talk' then local nsid = namespaces[nsname].id -- Add 1, as the array must start with 1; nsid 0 would be lost otherwise. nsid = nsid + 1 mappingsOrdered[nsid] = params end end mappingsOrdered = mTableTools.compressSparseArray(mappingsOrdered) -- Build the table. local ret = '{| class="wikitable"' .. '\n|-' .. '\n! ' .. nsHeader .. '\n! ' .. aliasesHeader for i, params in ipairs(mappingsOrdered) do for j, param in ipairs(params) do if j == 1 then ret = ret .. '\n|-' .. '\n| <code>' .. param .. '</code>' .. '\n| ' elseif j == 2 then ret = ret .. '<code>' .. param .. '</code>' else ret = ret .. ', <code>' .. param .. '</code>' end end end ret = ret .. '\n|-' .. '\n|}' return ret end return p a4757000273064f151f0f22dc0e139092e5ff443 Template:Infobox Australian place/pagelinks 10 1393 2728 2014-04-19T01:33:37Z w>AussieLegend 0 creating page for page headers wikitext text/x-wiki <div align=center>''See also: [[Template:Infobox Australian place/Blank|Blank infobox page]] | [[Template:Infobox Australian place/doc|Documentation page]] | [[Template Talk:Infobox Australian place|Discussion page]]'' | ''[[Template:Infobox Australian place/Examples|Examples page]]''</div> bafd05c658553720dccb42e2dc2ca3e82fe7dcda Template:Hatnote 10 120 287 2014-05-23T15:55:04Z wikipedia>SMcCandlish 0 tweak wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 4a1d1028d07c9056022807a96051e1c82cf2a1c7 Template:Hex2dec 10 1611 2946 2014-06-11T17:02:43Z w>Frietjes 0 optional override for default to emit error wikitext text/x-wiki {{#invoke: BaseConvert | convert | n={{{1}}} | base=10 | from=16 | default={{{default|0}}} }}<noinclude>{{documentation}}</noinclude> ec1e947900f45d54c750cf17a0b7f36620368092 Template:Pagetype 10 92 231 2014-07-09T08:29:38Z wikipedia>Callanecc 0 Changed protection level of Template:Pagetype: [[WP:High-risk templates|Highly visible template]]: With more than 5.5 million transclusions and cascade protections this should be full protected as well ([Edit=Allow only administrators] (indefinite) [Move= wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:pagetype|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> b8e6aa66678cd57877ea2c607372a45070f030a7 Template:Transwiki guide candidate 10 1675 3105 2014-07-11T02:57:19Z wikipedia>Dpleibovitz 0 inline documentation wikitext text/x-wiki <includeonly>{{ombox |style=border:#38C400 1px solid; |image=[[File:Edit-copy purple-wikit.svg|48px|alt=|link=]] |text=This is a candidate to have a [[Help:Transwiki guide|transwiki guide]]. Due to the complexity of the project or template, this guide will help editors adapt it to a remote wiki when this cannot be done by simply copying the codes of one single template. If you know this template syntax very well, feel free to start the guide in {{#if:{{{1|}}}|[[{{{1}}}]]|[[{{FULLPAGENAME}}/Transwiki guide]]}}. Once the transwiki guide page is complete, replace this tag by {{tl|Transwiki guide}}. }}[[Category:Transwiki guide candidate|{{{2|{{PAGENAME}}}}}]]</includeonly><noinclude> {{doc|content= {{Transwiki guide candidate||*}} Adding this tag to the page will automatically include it in [[:Category:Transwiki guide candidate]]. If the template has a document page, you should add it inside the <code><nowiki><includeonly></nowiki></code> tag in the document. Parameter {{{1}}} provides the option to change the page name of the transwiki guide if desired, <nowiki>[[{{FULLPAGENAME}}/Transwiki guide]]</nowiki> by default. Parameter {{{2}}} is for changing the category sorting, <nowiki>{{PAGENAME}}</nowiki> by default. }} f23b4f6bbbd56c5c856fbb1bcead70c17a389838 Template:Country data Electorate of Saxony 10 1505 2840 2014-07-31T13:55:53Z w>Taravyvan Adijene 0 стыль wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Electorate of Saxony | shortname alias = Saxony | flag alias = Flag of Electoral Saxony.svg | size = {{{size|}}} | name = {{{name|}}} <noinclude> | related1 = Kingdom of Saxony | related2 = Saxony | cat = Saxony electorate </noinclude> }} 92d992249b05224909f6fc125f5b07f9889af451 Template:Pp-template 10 852 1886 2014-08-05T17:17:27Z wikipedia>Mr. Stradivarius 0 convert this to use [[Module:Protection banner]]; see [[Module talk:Protection banner#Proposal to convert all protection templates to use this module|here]] for details wikitext text/x-wiki <includeonly>{{#invoke:Protection banner|main}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 31be6fc5b968e0deb5100a35b856393cdeb35b90 Template:))! 10 1423 2758 2014-08-07T05:34:06Z w>Plastikspork 0 Protected Template:))!: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki ]]<noinclude>{{documentation}}</noinclude> 5078ba120138d54da6e9f92897c07e5dc660ad98 Template:Strfind short 10 196 446 2014-08-31T23:39:01Z wikipedia>Mr. Stradivarius 0 Changed protection level of Template:Strfind short: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki {{#Invoke:String|find|source={{{1|}}}|{{{2}}}}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> f5475bb1d4bf09dc8dea7613cd4bc79847dafcbc Template:When on basepage 10 490 1085 2014-09-30T08:52:52Z wikipedia>Sardanaphalus 0 Sardanaphalus moved page [[Template:Basepage subpage]] to [[Template:When on basepage]]: Per move request wikitext text/x-wiki {{#switch: <!--If no or empty "page" parameter then detect basepage/subpage/subsubpage--> {{#if:{{{page|}}} | {{#if:{{#titleparts:{{{page}}}|0|3}} | subsubpage <!--Subsubpage or lower--> | {{#if:{{#titleparts:{{{page}}}|0|2}} | subpage | basepage }} }} | {{#if:{{#titleparts:{{FULLPAGENAME}}|0|3}} | subsubpage <!--Subsubpage or lower--> | {{#if:{{#titleparts:{{FULLPAGENAME}}|0|2}} | subpage | basepage }} }} }} | basepage = {{{1|}}} | subpage = {{{2|}}} | subsubpage = {{{3| {{{2|}}} }}} <!--Respecting empty parameter on purpose--> }}<!--End switch--><noinclude> {{Documentation}} </noinclude> cf4dc92df647a26ab0ce149772a1fe3ac6c3dfc0 Template:WPMILHIST Infobox style 10 1362 2697 2014-10-07T15:24:52Z w>Jackmcbarn 0 make main_box piggyback off of main_box_raw wikitext text/x-wiki <includeonly>{{#switch:{{{1|}}} |main_box=class="{{#if:{{{2|}}}|infobox {{{2}}}|infobox}}" style="{{#invoke:Data|Module:WPMILHIST Infobox style|main_box_raw}}" |{{#invoke:Data|Module:WPMILHIST Infobox style|{{{1|}}}}} }}</includeonly><noinclude> {{documentation}} </noinclude> b117547056afc703e2f1371497b0a53fa5a22751 Template:Convinfobox/priter3 10 1571 2906 2014-10-19T17:54:15Z w>Frietjes 0 wikitext text/x-wiki <includeonly>{{#switch:{{{4}}}{{{6}}} |ftin={{convert|{{{1}}}|{{{2}}}|in|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |stlb={{convert|{{{1}}}|{{{2}}}|l{{#ifexpr:{{{5}}}>=14|b stl}}b|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |lboz={{convert|{{{1}}}|{{{2}}}|oz|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |{{#switch:{{{2}}}{{{4}}} |ftin={{convert|{{{1}}}|ft|0|in|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |stlb={{convert|{{{1}}}|st|0|lb|{{#ifeq:{{{6}}}|kg|kg lb|{{{6}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |lboz={{convert|{{{1}}}|lb|0|oz|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |{{convert|{{{1}}}|{{{2}}}|{{{4}}} {{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} }} }}</includeonly><noinclude><!-- currently more or less ignoring {{{5}}} --> [[Category:Subtemplates of Template Convinfobox]] </noinclude> 1c5d795e180fa2d16e88dc012543d3f904743e16 Template:Convinfobox/sec3 10 1568 2903 2014-10-19T17:55:53Z w>Frietjes 0 wikitext text/x-wiki <includeonly>{{#switch:{{{4}}}{{{6}}} |ftin={{convert|{{{3}}}|ft|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |stlb={{convert|{{{3}}}|st|0|lb|{{#ifeq:{{{2}}}|kg|kg lb|{{{2}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |lboz={{convert|{{{3}}}|lb|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |{{#switch:{{{2}}}{{{4}}} |ftin={{convert|{{{3}}}|in|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |stlb={{convert|{{{3}}}|lb|{{#ifeq:{{{6}}}{{#ifexpr:{{{3}}}<14|n}}|kg|kg stlb|{{{6}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |lboz={{convert|{{{3}}}|oz|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |{{convert|{{{3}}}|{{{4}}}|{{{2}}} {{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} }} }}</includeonly><noinclude> [[Category:Subtemplates of Template Convinfobox]] </noinclude> 4eb7733cb3c141c03d61f9584260c61ce0f62842 Template:Convinfobox/ter3 10 1569 2904 2014-10-19T17:57:00Z w>Frietjes 0 wikitext text/x-wiki <includeonly>{{#switch:{{{4}}}{{{6}}} |ftin={{convert|{{{5}}}|in|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |stlb={{convert|{{{5}}}|lb|{{#ifeq:{{{2}}}{{#ifexpr:{{{5}}}<14|n}}|kg|kg stlb|{{{2}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |lboz={{convert|{{{5}}}|oz|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |{{#switch:{{{2}}}{{{4}}} |ftin={{convert|{{{5}}}|{{{6}}}|ftin|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |stlb={{convert|{{{5}}}|{{{6}}}|lb stlb|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |lboz={{convert|{{{5}}}|{{{6}}}|lboz|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |{{convert|{{{5}}}|{{{6}}}|{{{2}}} {{{4}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} }} }}</includeonly><noinclude> [[Category:Subtemplates of Template Convinfobox]] </noinclude> 804501b258d2d052a1fd772f4438e3b3ed44e097 Template:!! 10 572 1292 2014-11-04T14:12:38Z wikipedia>Pigsonthewing 0 stet wikitext text/x-wiki ||<noinclude> {{documentation}} </noinclude> cfbaaca3cb3edae590f75b87fb775d1be21774a4 Template:Dcr 10 1364 2699 2014-12-08T00:18:23Z w>Sroc 0 create as shortcut to {{Deprecated code|red=y}} wikitext text/x-wiki {{Deprecated code|red=y|{{{1|Example text}}}}}<noinclude> {{documentation|Template:Deprecated code/doc}} <!--Categories and interwikis go on the /doc subpage.--> </noinclude> 1dc3e61f1612d63f29d92ab18deb61cb8951419a Module:Ns has subpages 828 861 1908 2014-12-10T06:37:29Z wikipedia>Mr. Stradivarius 0 Protected Module:Ns has subpages: [[WP:High-risk templates|High-risk Lua module]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) Scribunto text/plain -- This module implements [[Template:Ns has subpages]]. -- While the template is fairly simple, this information is made available to -- Lua directly, so using a module means that we don't have to update the -- template as new namespaces are added. local p = {} function p._main(ns, frame) -- Get the current namespace if we were not passed one. if not ns then ns = mw.title.getCurrentTitle().namespace end -- Look up the namespace table from mw.site.namespaces. This should work -- for a majority of cases. local nsTable = mw.site.namespaces[ns] -- Try using string matching to get the namespace from page names. -- Do a quick and dirty bad title check to try and make sure we do the same -- thing as {{NAMESPACE}} in most cases. if not nsTable and type(ns) == 'string' and not ns:find('[<>|%[%]{}]') then local nsStripped = ns:gsub('^[_%s]*:', '') nsStripped = nsStripped:gsub(':.*$', '') nsTable = mw.site.namespaces[nsStripped] end -- If we still have no match then try the {{NAMESPACE}} parser function, -- which should catch the remainder of cases. Don't use a mw.title object, -- as this would increment the expensive function count for each new page -- tested. if not nsTable then frame = frame or mw.getCurrentFrame() local nsProcessed = frame:callParserFunction('NAMESPACE', ns) nsTable = nsProcessed and mw.site.namespaces[nsProcessed] end return nsTable and nsTable.hasSubpages end function p.main(frame) local ns = frame:getParent().args[1] if ns then ns = ns:match('^%s*(.-)%s*$') -- trim whitespace ns = tonumber(ns) or ns end local hasSubpages = p._main(ns, frame) return hasSubpages and 'yes' or '' end return p e133068ba73738b16e1e3eba47735516a461eb5b Template:Flag 10 1490 2825 2014-12-18T05:55:14Z w>Plastikspork 0 Closing wikitext text/x-wiki {{country data {{{1|}}}|flag/core|name={{{name|{{{1|}}}}}}|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<noinclude>{{documentation}}</noinclude> d13aac8e23bee030a6fc9b49a8aa1135104ace22 Template:Country data Luxembourg 10 1210 2539 2014-12-23T00:16:50Z w>Mjroots 0 variant wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Luxembourg | flag alias = Flag of Luxembourg.svg | flag alias-civil = Civil Ensign of Luxembourg.svg | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | redir1 = LUX | var1 = civil </noinclude> }} 9c76f01b95d0d97baea7583cf7d8cad58336978b Template:Icon 10 977 2148 2015-01-23T10:29:55Z wikipedia>Mr. Stradivarius 0 switch this to use [[Module:Icon]] wikitext text/x-wiki {{#invoke:Icon|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> bd5b855953c5eec9d9c48400aa39315cb4218558 Template:Color 10 213 2160 2015-02-07T15:43:19Z wikipedia>Pigsonthewing 0 allow simple form; will document wikitext text/x-wiki <span style="color:{{{1|}}}">{{{2|{{{1|}}}}}}</span><noinclude>{{Documentation}}<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --></noinclude> f12cd387c0d5c11494a7182b7538cc3292eb3a4a Template:Clear right 10 1357 2692 2015-02-09T15:14:22Z w>Edokter 0 Fix wikitext text/x-wiki {{Clear|right}}<noinclude> {{Documentation|Template:Clear/doc}} </noinclude> 12b36d3e1933e27905b1549e2e69366dc1c3c7b2 Template:Operational plan/doc 10 1512 2847 2015-03-03T09:35:46Z w>Invadibot 0 Bot: Fixing double redirect to [[Template:Infobox military operation/doc]] wikitext text/x-wiki #REDIRECT [[Template:Infobox military operation/doc]] 10b255654acded6663dadad8d9084ba41f66bd68 Template:Coord/wikidata 10 1680 3118 2015-03-12T14:57:08Z wikipedia>Frietjes 0 [[WP:AES|←]]Created page with '<includeonly>{{#invoke:coordinates|coord|3={{{1|}}}|format={{{format|}}}|display={{{display|}}}}}</includeonly><noinclude> {{documentation|content= This is a tem...' wikitext text/x-wiki <includeonly>{{#invoke:coordinates|coord|3={{{1|}}}|format={{{format|}}}|display={{{display|}}}}}</includeonly><noinclude> {{documentation|content= This is a temporary fork of [[Template:coord]] for demonstrating the ability to parse coordinates from wikidata. }}</noinclude> e4b606dc74efb921276bc7f6eed1ed8a23329387 Template:Str rep 10 160 373 2015-04-14T16:35:55Z wikipedia>Redrose64 0 Protected Template:Str rep: [[WP:High-risk templates|Highly visible template]]: 167176 transclusions ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki {{#invoke:String|replace|source={{{1}}}|{{{2}}}|{{{3}}}|1}}<noinclude> {{Documentation}}</noinclude> 4706daa3137857f2792cc7109ca24b6d58c78dee Template:Startflatlist 10 1397 2732 2015-04-28T13:11:14Z w>Edokter 0 Protected Template:Startflatlist: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Flatlist]] bbe00719a80ea6189b69639e33629793a30c1235 Template:Startplainlist 10 986 2168 2015-04-28T13:11:26Z wikipedia>Edokter 0 Protected Template:Startplainlist: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Plainlist]] 004e758d1686df1d3da2ef0f1c8778ff1f12077d Template:Separated entries 10 1097 2393 2015-05-12T11:17:13Z wikipedia>Kelapstick 0 Protected Template:Separated entries: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Separated entries|main}}<noinclude> {{Documentation|Module:Separated entries/doc}} </noinclude> f3648d40ca0c91acbdf52ad7f89c181d7f691251 Module:Buffer 828 758 1691 2015-05-15T16:15:29Z wikipedia>Mr. Stradivarius 0 Protected Module:Buffer: [[WP:High-risk templates|High-risk Lua module]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) Scribunto text/plain --[[============================= This Module was written by Alexander Zhikun He, also known as, User:Codehydro on the English Wikipedia All methods were developed independently and any resemblance to other string buffer libraries would be coincidental. Furthermore, many methods will not work when compiled by standard Lua libraries as they depend on behaviors unique to the MediaMiki Scribunto mod, which, for example, has a getmetatable() method that always returns nil on non-tables. https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual Source code comments may be thin at some points because they are intended to be supplemented by the documentation page: https://en.wikipedia.org/wiki/Module:Buffer/doc Licensed under Creative Commons Attribution-ShareAlike 3.0 Unported License https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License https://en.wikipedia.org/wiki/Module:Buffer https://en.wikipedia.org/wiki/User:Codehydro =============================--]] local function Valid(v)--type validation if v and v~=true then--reject nil/boolean; faster than 2 type() comparisons local str = tostring(v)--functions not filtered since unlikely passed by accident (Scribunto does not have userdata/thread types) if str~=v and str=='table' then return rawget(v, 1) and table.concat(v) end--tostring(string-type) returns same ref; same refs compare faster than type() if str~='' then return str end--numbers are coerced to string per table.concat op; appending in string form saves ops on repeat concat end end local noOp, MBpairs = function()end do local iMap, vMap, oMap, pIter, pOther, pFast, Next--Map local function init()--init = noOp after first run function Next(t) return next, t end--slightly faster to do this than to use select() function pIter(t, k) k = (iMap[t] or MBpairs(t, true) and iMap[t])[not k and 1 or vMap[t][k]] return k, t[k] end--don't use rawget; accepting unmapped tables does not measurably affect performance. function pOther(t, k) k = (oMap[t] or MBpairs(t, true) and oMap[t])[nil==k and 1 or vMap[t][k]] return k, t[k] end--comparison to nil because false is a valid key function pFast(t, k) k = not k and 1 or k < (vMap[t] or #t) and k + 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached --k and k < (vMap[t] or #t) and k + 1 or not k and 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached local mk = {__mode = 'k'}--use mode 'k'; found that mode 'kv' sometimes garbage collects maps mid-loop (may not error because iterators auto re-map, but that's expensive) init, iMap, vMap, oMap = noOp, setmetatable({}, mk), setmetatable({}, mk), setmetatable({}, mk)--iMap is numeric keys, oMap is non-numeric keys, and vMap points to next key end function MBpairs(t, ...)--pairs always iterates in order local iter, ex = ... iter = iter==init()--nil if iter and not oMap[t] and ex==nil and rawget(t, 1)~=nil and next(t, #t)==nil then--while possible to miss keys, more thorough check would negate the benefit of pFast vMap[t] = #t return pFast, t, nil elseif ... or not vMap[t] or select('#', ...)~=1 then local ti, tn, to, n = {}, {}, {}, #t--reduces table lookups iMap[t], vMap[t], oMap[t] = ti, tn, to for k = 1, n do ti[k], tn[k] = k, k + 1 end--stage one avoids number type checking op in stage two for most numeric keys for k in (ex or Next)(t) do if not tn[k] then table.insert(tonumber(k)~=k and to or ti, k) end end if #ti~=n then table.sort(ti) for k = 1, #ti do tn[ti[k]] = k + 1 end--somewhat wasteful, but trying to avoid overwriting can be even more expensive end for k = 1, #to do tn[to[k]] = k + 1 end end return iter and pIter or oMap[t] and pOther or noOp, t--noOp for mapless end end local parent, rawkey, spec do--new scope for variables not reused outside (reduces number of var names that need to checked outside of scope) local mkv = {__mode='kv', __call=function(t,k,v)t[k]=v return k end}--shared meta for Buffer parent property, raw mode, and specialized functions parent, rawkey, spec = setmetatable({}, mkv), setmetatable({}, mkv), setmetatable({}, mkv)--shared meta less memory end local MB, MBi, MBmix, buffHTML, gfuncs, noCache, Element do--minimize number of locals per scope to reduce time spent sifting through irrelevant variable names local _stream do local stream--keep stream near top of scope local function init(f)--init = noOp after first run local function each(self, ...) for k = 1, select('#', ...) do k = Valid(select(k, ...))--slightly faster than table.insert(self, (Valid(select(k, ...)))) if k then table.insert(self, k) end end return self end init, stream, _stream = noOp, { __call = function(t, v) v = v and Valid(v) return v and table.insert(t, v) or t end,--last_concat cleared before entering stream mode __index = function(t, i) return i=='each' and each or MB.__index(t, i) and setmetatable(t, MB)[i] end,--no table look up minimizes resources to retrieve the only stream function __tostring = function(t) return setmetatable(t, MB)() end } for k, v in next, MB do stream[k] = stream[k] or v end setmetatable(stream, getmetatable(MB)) end function _stream(self, ...) self.last_concat = init() return setmetatable(self, stream):each(...) end end local function isMBfunc(Buffer, s, ...)--helper for :getParent()-like methods (including getBuffer which does not return a parent) return s and (select('#', ...)==0 and--eventually should figure out to make this work for :getHTML which is very similar (not rawkey[s] and tostring(s):match'^_.*' and MB.__index(Buffer, s) and MB.__index(Buffer, s)(Buffer) or MBmix(Buffer, s))--unprefixed function names append as a string or assert(MB.__index(Buffer, s), ('" %s " does not match any available Module:Buffer function'):format(s))(Buffer, ...)--getParent is a one-way trip so one-time assert not expensive ) or Buffer end local function MBselect(n, ...)--helper for :_out and :_str local n, seps = n - 1, {select(2, ...)} if type(seps[n])=='table' then if buffHTML and rawget(seps[n], buffHTML) then return ... end setmetatable(seps, {__index = setmetatable(seps[n], {__index = function(t) return rawget(t, 1) end})})[n] = nil end return ..., seps end local _inHTML do local lastBuffer, lastHTML local function init(...)--init replaced and new version called on return local create, mwFunc = mw.html.create do local mwHTMLmeta = getmetatable(create()) buffHTML, mwFunc, _inHTML = setmetatable(mw.clone(mwHTMLmeta), getmetatable(MB)), mwHTMLmeta.__index--buffHTML declared near top of module; remove _inHTML from outer scope function init(nodes, ...) local name, args, tag = select(... and type(...)=='table' and 1 or 2, nil, ...) tag = create(Valid(name), args) if nodes then table.insert(nodes, tag.parent and tag or rawset(tag, 'parent', parent[nodes])) end if args then local a, b = args.selfClosing, args.parent args.selfClosing, args.parent = nil if next(args) then Element._add(parent(tag.nodes, tag), args) end args.selfClosing, args.parent = a, b--in case args is reused end return tag end for k, v in next, {[mw] = mwHTMLmeta, __call = function(h, v) return MBmix(spec[h.nodes] and h.nodes or spec(setmetatable(parent(h.nodes, h), MB), Element), v) end, __concat = false,--false means take from MB __eq = false } do buffHTML[k] = v or MB[k] end end local nonSelf, BHi = {tag=true,done=true,allDone=true}, buffHTML.__index do local g g = {__index = function(t, i) if gfuncs and gfuncs[i] then g.__index, gfuncs = gfuncs return g.__index[i] end end} setmetatable(nonSelf, g) setmetatable(BHi, g) end for k in next, nonSelf do--any HTML objects returned by these funcs will be granted Module:Buffer enhancements local func = mwFunc[k] BHi[k] = function(t, ...) local HTML = func(t, ...) return parent[HTML] and HTML or setmetatable(parent(HTML, t), buffHTML) end end do local function joinNode(HTML, sep) local nodes, join = HTML.nodes if noCache and rawkey[sep] or Valid(sep) then join, HTML.nodes = tostring(rawset(HTML, 'nodes', {MB.__call(nodes, sep)})), nodes end return join or tostring(HTML) end for k, v in next, { getParent = function(HTML, ...) lastHTML = HTML return MBi.getParent(HTML:allDone(), ...) end,--return to Buffer that created the HTML tree getBuffer = function(HTML, ...) lastHTML = HTML return isMBfunc(lastBuffer, ...) end,--return to last used killParent = function(HTML, ...) MBi.killParent(HTML:allDone(), ...) return HTML end, _out = function(HTML, ...) if ...==0 then MBi._out(HTML.nodes, ...) return HTML end lastHTML, HTML = HTML, HTML:allDone() local n, ops, seps = select('#', ...) if n > 1 then local ops, seps = MBselect(n, ...) return parent[HTML]:_in(joinNode(HTML, rawget(seps, 0))):_out(ops, rawset(seps, buffHTML, true)) end return parent[HTML]:_(joinNode(HTML, ...)) end, _str = function(HTML, ...)--does not set lastHTML if ...==0 then return joinNode(HTML, select(2, ...)) end--passing 0 strings without calling allDone() local HTML, n = HTML:allDone(), select('#', ...) if n > 1 then local ops, seps = MBselect(n, ...) return parent[HTML]:_in(joinNode(HTML, rawget(seps, 1))):_str(ops, rawset(seps, buffHTML, true)) end return joinNode(HTML, ...) end, _parent = function(HTML, ...) table.insert(HTML.nodes, parent[HTML:allDone()]:_str(...)) return HTML end } do BHi[k] = v end end do local htmlArg, skip, outFuncs = {parent=true,selfClosing=true,tagName=true}, {} do local out local function func(nodes, ...) return out(parent[nodes], ...) end outFuncs = setmetatable({ tag = function(nodes, ...) return parent(setmetatable(init(nodes, ...), buffHTML), parent[nodes]) end, done = function(b, ops) b = parent[b] while b.parent and ops~=0 do b, ops = b.parent, ops and ops - 1 or 0 end return b end }, {__index = function(nodes, i) if rawget(BHi, i) then out = BHi[i] return func end--rawget to exclude globals end}) end Element = { _add = function(nodes, t) for k, v in MBpairs(t), t, skip[t] do (v~=true and MBmix or noOp)(nodes, v) end local HTML = parent[nodes] for k, v in MBpairs(t, false) do if htmlArg[k] then HTML[k] = v elseif v and v~=true then if nonSelf[k] then if k=='tag' then if type(v)=='table' then skip[v], k = 1, rawset(create(Valid(v[1])), 'parent', HTML) Element._add(spec(parent(k.nodes, k, table.insert(nodes, k)), Element), v) if k.selfClosing then k.nodes = nil else spec[k.nodes], parent[k.nodes] = nil end--free memory/reduce clutter; parent ref will auto-unset when k.nodes is nil if not k.tagName then k.styles, k.attributes = nil end else table.insert(nodes, create(v)) end elseif mwFunc[k] then if k=='done' and tonumber(v)~=v and v[1] and tonumber(v[1])==v[1] then skip[v] = 1 end MBmix(outFuncs[k](nodes, skip[v] and v[1]).nodes, v) elseif v[1] or v[2] then k = MBi[k](nodes, unpack(v, 1, rawset(skip, v, k=='_B' and 1 or 2)[v])) Element._add(getmetatable(k) and rawget(k, 'nodes') or k, v)--if k is not a table, then v should not contain any extra keys or this may error. else MBi[k](nodes, v) end--k probably == '_G' or '_R' elseif mwFunc[k] then if type(v)~='table' or rawget(v, 'nodes') then mwFunc[k](HTML, v) else local css = k=='css' for x, y in MBpairs(v, true) do (y and y~=true and mwFunc[k] or noOp)(HTML, css and x:gsub('_', '-') or x, y) end--iterate non-numbers first for _, y in MBpairs(v, nil) do (y and y~=true and mwFunc[k] or noOp)(HTML, y) end--don't bother with gsub since text must be quoted anyhow end elseif rawget(Element, k) or rawget(MBi, k) then if tonumber(v)==v or v[1]==nil or getmetatable(v) then (Element[k] or MBi[k])(nodes, v)--v is probably string-able object, or a table to be handled by :_all else (Element[k] or MBi[k])(nodes, unpack(v, 1, table.maxn(v))) end--v is definately a table else mwFunc.css(HTML, k:gsub('_', '-', 1), tostring(v)) end--oddly enough, :_add clocked its fastest runtime after adding auto-gsub as a feature skip[v] = nil end end return nodes end } local tempMeta = {mode='v', copy={styles=true,attributes=true}} function tempMeta.__index(t, i) return tempMeta.copy[i] and rawset(t, i, MBi._cc(false, 0, t.orig[i]))[i] or t.orig[i] end rawkey[setmetatable(Element, {__index = outFuncs, __concat=function(Element, v) return setmetatable({nodes=spec({}, Element),orig=parent[v]}, tempMeta) end})] = math.huge end function MBi:getHTML(...) lastBuffer = self if ... then if select('#', ...)==1 then return not rawkey[s] and tostring(...):match'^_' and BHi[...] and BHi[...](lastHTML) or lastHTML(...) else return assert(BHi[...], ('" %s " does not match any mw.html or Buffer-mw.html function'):format(tostring(...)))(lastHTML, select(2, ...)) end end return lastHTML end function MBi:_html(...) return MBi._(self, lastHTML, select(spec[self]==Element and select('#', ...)==0 and 1 or 2, true, ...)) end return init(...) end function _inHTML(self, ...) local HTML = init(nil, ...) if HTML.selfClosing and spec[self]==Element then self.last_concat = table.insert(self, HTML) return self end lastBuffer, lastHTML = self, setmetatable(parent(HTML, self), buffHTML)--set after 'args' table processed by :_add return HTML end end local _var, unbuild do local prev, rebuild local function init(...)--init replaced before return local function pick(b, v) return b and table.insert(b, v) or v end local function c(a, num) return rawset(a.a or a, 0, a[0] and a[0] + a.c or num and a[1] or a[1]:byte())[0] end local same, build, alt = {__tostring = function(a, b) return a.a[0] and pick(b, a.a.string and string.char(a.a[0]) or a.a.table and a.a[1][a.a[0]] or a.a[0]) end}, { __index = {c = 1}, __tostring = function(t) return t:_build() end, table = function(a, b) local i = next(a[1], a[0]) or a[0]==#a[1] and next(a[1]) return pick(b, rawset(a.a or a, 0, i)[1][i]) end,--change rate (a.c) ignored since users control the table's contents number = function(a, b) return pick(b, c(a, true)) end, string = function(a, b) return pick(b, string.char(c(a))) end }, {__index = function(a, i) return a.a[i] end, __tostring = function(a, b) return (rawget(a, 0) and a[0]==tostring(a[0]) and rawset(a, 0, a[0]:byte()) or a).a._build(a, b) end} local function shift(t, c) t[0] = t[0] and t[0] + c or t:_build() and t[0] - t.c + c if t.table then t[0] = (t[0] - 1) % #t[1] + 1 end end function rebuild(...) local v, c = ... if v or select('#', ...)==0 then if v and not c then return prev end local meta, c = select(v and 1 or 3, alt, c, same, 0) return setmetatable({a = prev, _build = meta.__tostring, c = c}, meta) elseif v==nil then--no-op elseif c then shift(prev, c)--v == false else prev:_build() end end init, noCache = function(v, c) prev = setmetatable({v, c = c, _build = build[type(v)] or v, [type(v)] = true, alt = {}}, build) return prev end, true return init(...) end function unbuild(sep) for k, v in MBpairs(sep, nil) do k = getmetatable(v) if k and (k==build or k==alt) then shift(v.a or v, -v.c) end end end function _var(self, ...) local obj if ... and ...~=true then obj = init(...) elseif prev then if ...~=false then obj = rebuild(...) else rebuild(...) end end return obj and MBi._(self, obj, nil, true) or self end end local lib; MBi = setmetatable({stream = _stream, _inHTML = _inHTML, _var = _var, _ = function(self, v, ...) local at, raw = select(select('#', ...)==1 and ...==true and 1 or 2, nil, ...) if raw then rawkey[self] = math.huge else v = Valid(v) end if v or raw then if at or rawkey[self] then raw = #self end--if length increases by more than one after table.insert, then set rawkey[self] = math.huge; rawkey[self] may be equal to a previous 'at' at, self.last_concat = at and (tonumber(at)~=at and raw + at or at) table.insert(self, select(at and 1 or 2, at, v)) if at and at < 0 or raw and #self - raw > 1 then rawkey[self] = math.huge elseif at and #self==raw then rawkey[self] = rawkey[self] and math.max(rawkey[self], at) or at end end--above line looks bizarre because one table.insert op may make length jump from 0 to 8: local wtf={[2]=2,[4]=4,[8]=8}mw.log(#wtf,table.insert(wtf,1),#wtf) return self end, _nil = function(self, at, ...) if ...~=true and ...~=false then--faster than type(...) ~= 'boolean' if not at or at=='0' then self[#self] = ... if ... then rawkey[self] = math.huge end else local n, v = tonumber(at), ... if n~=at then if n then n = #self + at elseif at~=true and select('#', ...)==0 then v, n = at, #self end end if n then if v==nil and n > 0 then table.remove(self, n) else self[math.floor(n)], rawkey[self] = v, math.huge end--floor position for consistency with Table library end end self.last_concat = nil end return self end, _all = function(self, t, valKey) for k, v in MBpairs(t) do MBmix(self, v, valKey) end for k, v in valKey and MBpairs(t, false) or noOp, t do if tonumber(v) then MBi._(self, k, v)--self not always a buffer elseif rawget(MBi, k) and v and v~=true then if v[1]==nil or getmetatable(v) then MBi[k](self, v) else MBi[k](self, unpack(v, 1, table.maxn(v))) end end end return self end, _str = function(t, ...) local n = select('#', ...) if n > 1 then local k, ops, seps, r = 2, MBselect(n, ...) r = MB(t(seps[1])) while parent[t] and ops > 1 and r:_(parent[t](seps[k]), 1) do t, k, ops = parent[t], k + 1, ops - 1 end return table.concat(r, seps[k] or nil) end return MB.__call(t, ...) end, _in = function (self, ...) return parent(MB(...), self) end, _out = function(t, ...) if ...==0 then return parent(t, parent[t], MBi._cc(t, t, MB.__call(t, (select(2, ...))), getmetatable(t))) end--love how :_cc needed nothing new to implement this *self pat on back* local n = select('#', ...) if n > 1 then local k, ops, seps = 1, MBselect(n, ...) while parent[t] and ops > 0 do t, k, ops = parent[t]:_(t(seps[k])), k + 1, ops - 1 end elseif parent[t] then return parent[t]:_(t(...)) end return t end, _cc = function(self, clear, copy, meta) if clear then if rawequal(clear, copy) then return self, spec[MBi._cc] and setmetatable(spec[MBi._cc], MB)--rawequal to avoid re-string via __eq in case both are different Buffer objects elseif copy==true then copy = self end if clear~=0 then assert(type(clear)=='table', debug.traceback('Buffer:_cc can only "clear" tables. Did you forget to call with a colon?', 2))--errors can be hard to trace without this for k in self and next or noOp, clear do rawset(clear, k, nil) end else return MBi._cc(false, {unpack(copy)}, copy) end--copy length w/o empty strings; recursion to avoid self = false causing garbage collection (non-weak child may exist) if self==false or copy and type(copy)=='table' then--self==false means copy is a table (saves a type op for recursive calls) meta = meta or getmetatable(copy) if self and #copy > 1 then--preserves length with empty strings; developed from studying http://www.lua.org/source/5.1/ltable.c.html local n, null, i, e = #copy, {}, math.ldexp(2, select(2, math.frexp(#copy)) - 2) e, spec[MBi._cc], parent[null] = i - 1, null, clear for k = 1, e do table.insert(clear, false) end while i<=n do table.insert(clear, i, '') i, null[i] = i + math.ldexp(2, select(2, math.frexp(n - i)) - 2), '' end for k = 1, e do rawset(clear, k, nil) end end for k, v in next, copy do rawset(clear, k, type(v)=='table' and MBi._cc(false, 0, v) or v) end elseif copy then rawset(clear, 1, (Valid(copy))) end rawkey[setmetatable(clear, meta)], parent[clear] = rawkey[copy], parent[copy] end return self and rawset(self, 'last_concat', nil) or clear end, _parent = function(self, ...) return parent[self] and MBi._(self, parent[self]:_str(...)) or self end, getParent = function(self, ...) return isMBfunc(parent[self] or parent[parent(self, setmetatable({}, MB))], ...) end, killParent = function(self, ...) return parent[self] and isMBfunc(parent[self], ...) and parent(self) or self end, _build = function(self, t) table.insert(t, self()) end,--for compatibility with mw.html:node() last_concat = false--prevent library check }, {__index = function(t, i)--import string, mw.text, and mw.ustring libraries on an as-needed basis local func = string[i] or mw.text[i] or mw.ustring[i] or type(i)=='string' and mw.ustring[i:match'^u(.+)'] if func then lib = lib or function (s, f, ...) if parent[s] and next(s)==nil then return s:_((f(tostring(parent[Element and (spec[s]==Element and s:allDone() or spec[parent[s]]==Element and parent[s]) or s]), ...))) end return f(tostring(s), ...)--not using ternary/logical operators here to allow multiple return values end return rawset(t, i, i:match'^u?gsub' and function(self, p, r, ...)return lib(self, func, p, r or '', ...)end--Why are ugsub/gsub special? because empty strings are against my religion! or function(self, ...)return lib(self, func, ...)end)[i] end end}) end function MBmix(t, v, ...) return v and ((type(v)~='table' or getmetatable(v)) and MBi._(t, v) or (select('#', ...)==0 and spec[t] and spec[t]._add or MBi._all)(t, v, ...)) or t end--:_all always passes two args local _G, new_G = _G--localize _G for console testing (console _G ~= module _G) return setmetatable({__index = function(t, i) return spec[t] and spec[t][i] or MBi[i] end, __call = function(t, ...) local rawsep, sep, i, j, raw = noCache and rawkey[...] and ..., ... if i or j or rawsep or Valid(sep) then raw, sep, i, j = rawkey[spec[t]] or rawkey[t], rawsep or Valid(sep), i and (i~=tonumber(i) and i + #t or i), j and (j~=tonumber(j) and j + #t or j) if rawsep or raw and (raw>=(j or #t) or i < 1) then raw, i, j = {}, i and math.floor(i), j and math.floor(j)--floor for consistency with table.concat(t, sep, i, j), which ignores decimals raw.lc, t.last_concat = t.last_concat--temporarily unset last_concat to prevent disqualification from mapless iteration for k, v in MBpairs(t) do if raw[1] or not i or k>=i then if j and k > j then break end if raw.s then raw.s = table.insert(raw, tostring(sep)) end--if sep contains v and v is a Buffer-variable, sep must be strung before v k = Valid(v) if k then raw.s = rawsep or sep and raw[1] and table.insert(raw, sep) table.insert(raw, k) end end end if rawsep and not raw.s then raw[#raw] = unbuild(sep) end--unbuild rawsep if final index in t was invalid t.last_concat = raw.lc return table.concat(raw) end return table.concat(t, sep, i and math.max(i, 1), j and math.min(j, #t)) end return MB.__tostring(t) end, __tostring = function(t) if t.last_concat then return t.last_concat end local r = rawkey[spec[t]] or rawkey[t] r = table.concat(r and r>=#t and MBi._all({}, t) or t) return (noCache or rawset(t, 'last_concat', r)) and r end, __concat = function(a, b) if buffHTML then for k = 1, 2 do local v = select(k, a, b)--faster than for k, v in pairs{a, b} do if v and spec[v] and spec[v]==Element then if parent[v].selfClosing then if rawequal(a, b) then return (not noCache or parent[v].tagName) and v:_str(0):rep(2) or v:_str(0)..v:_str(0) end--rawequal avoids premature tostring of Buffer:_var objects; b, a = select(k, b, parent[v], a) else local temp = Element .. v --helper method; returns a mirror of parent[v] MBmix(MBmix(parent(temp.nodes, temp), a), k==1 and spec[b]==Element and parent[b] or b) return buffHTML.__tostring(setmetatable(temp, {__index=parent[v], __mode='v'}))--switch from tempMeta to avoid MBi._cc op of styles/attributes end end end end return table.concat(MBmix(MBmix({}, a), b)) end, __pairs = MBpairs, __ipairs = MBpairs, __eq = function(a, b) return tostring(a)==tostring(b) end--avoid a==b in this module; use rawequal(a,b) when they may be different Buffers (premature tostring waste ops and is bad for Buffer:_var) }, {__tostring = function()return''end, __call = function(self, ...) MB = MB or self if new_G then if ... and _G and ...==_G then new_G = ... end elseif ... and (...==_G or type(...)=='table' and (...)._G==...) then local Nil, mG = {}, (...):getmetatable() or (...):setmetatable{}:getmetatable() new_G, _G, gfuncs = ..., ..., {--gfuncs stored for Buffer:_inHTML; new_G is a is a Module:Buffer local declared just before the final return statement. _G = function(self, i, ...) local X, save = rawget(new_G, i), select('#', ...)==0 and self or ... if i and i~=true and not (X and save and rawequal(X, save)) and rawset(new_G, i, save) and (X~=nil or save==nil and new_G[i]~=nil) then--rawequal in case X is another buffer local mG = getmetatable(new_G) or {__call=mG.__call} if mG.__index then pcall(rawset, mG.__index, i, X) else mG.__index = setmetatable(new_G, mG) and {[i] = X} end end return self, ...--avoiding __eq with rawequal(self,save) is overkill since buffers can self-save without being passed as save end, _R = function(self, i, v, m) if i~='new_G' then if i and i~=true then rawset(new_G, i , v) end elseif not v or v==true or v._G~=_G then new_G = setmetatable(v~=true and v or {}, {__call = mG.__call, __index = v~=true and m~=true and (m or new_G) or nil}) else new_G, (not m and (m~=nil or v==new_G) and Nil or getmetatable(v)).__index = v, m~=true and (m or new_G) or nil end--setting Nil.__index is noOp return self end, _2 = function(self, ...) if new_G[...]~=nil then return new_G[...] end--higher priority so Buffer:_G('new_G', ...) can prevent an overwrite if ...=='new_G' then return rawset((select('#', ...)~=1 and MBi._R(new_G, ...) or new_G), '_G', _G) end return select(select('#', ...)==1 and 1 or 2, self:_G(...))--return only one value; 'return select(2, self:_G(...)) or self' doesn't work for returning nil end, _B = function(self, v) return v or v==nil and Nil end } for k, v in next, gfuncs do MBi[k] = v end setmetatable(Nil,{__concat=MB.__concat,__newindex=noOp,__call=noOp,__tostring=noOp,__metatable=MB,__index=setmetatable({_B=MBi._B,_=function()return Nil end,last_concat=''}, {__index=function(t,i)return (MBi[i] or i and not tonumber(i)) and t._ or nil end})}) function mG.__call(G, k, ...) return (k._G or G.type(k)=='table') and (G.select('#', ...)~=1 and G.rawset(k, ...) or G:rawset(..., k) and k) or G:rawset(k, (...)) and ... end end local new = setmetatable({}, self) if ... and (...)==new_G then return select(2, ...) and MBmix(new:_G((select(2, ...))), select(3, ...)) or new end return ... and MBi._(new, ...) or new end, __index = function(t, i) MB = MB or t return MBi[i] and function(...) return MBi[i](setmetatable({}, t), select(...==t and 2 or 1,...)) end end }) a531c35e1366f84755b75caab181cd45e5330bbe Template:Comma separated entries 10 1090 2379 2015-05-26T18:05:33Z wikipedia>Izkala 0 Switch to using [[Module:Separated entries]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:Separated entries|comma}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> f9811ed089bab742e4aad8b8463eddcc7607f062 Template:Br separated entries 10 162 377 2015-05-26T18:06:33Z wikipedia>Izkala 0 Switch to using [[Module:Separated entries]]; leading and trailing whitespace and newlines are now trimmed wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:Separated entries|br}}<noinclude> {{documentation}} </noinclude> 2019f7fc383259e70d66e43cbd97a43d20889f1b Template:Hlist 10 429 1356 2015-07-04T15:13:14Z wikipedia>Penwhale 0 Changed protection level of Template:Hlist: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:list|horizontal}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 9e3824c2e3c0e0dbef2f37556ac0b994987fecf9 Template:Redirect template 10 1013 2222 2015-07-23T08:16:39Z wikipedia>Paine Ellsworth 0 for correct appearance of documentation page on template page wikitext text/x-wiki {{#invoke:Redirect template|main}}<noinclude> {{Documentation}}</noinclude> 0b8db63883716ef3a4d3a9492f8571ae96028547 Template:Div col end 10 47 89 2015-10-03T15:58:07Z wikipedia>NeilN 0 Changed protection level of Template:Div col end: per request at [[WP:RFPP]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{Documentation|Template:Div col/doc}} </noinclude> 78088d41c21d779e3722f220fcc9773dfbbc1e4f Template:Spaces 10 840 1862 2015-10-25T11:38:26Z wikipedia>Edokter 0 use class wikitext text/x-wiki <span class="nowrap">{{#iferror:{{#expr:{{{1|1}}}}} |{{#switch:{{{1}}} |fig=&#8199; |en=&ensp; |em=&emsp; |thin=&thinsp; |hair=&#8202; |&nbsp; }} |{{#invoke:String|rep|{{#switch:{{{2}}} |fig=&#8199; |en=&ensp; |em=&emsp; |thin=&thinsp; |hair=&#8202; |&nbsp; }}|{{{1|1}}}}} }}</span><noinclude> {{documentation}} </noinclude> a9ed762825e7579f15dcb9b171b0c1c3bf524b3f Template:(( 10 479 1053 2015-11-13T02:17:23Z wikipedia>Fuhghettaboutit 0 Changed protection level of Template:((: when I changed this to add template editors, I didn't realize it had cascding protection—so all my change did was make it appear as if it could be edited by them ([Edit=Allow only administrators] (indefinite)... wikitext text/x-wiki {{<noinclude> {{documentation}} </noinclude> 3f1af626705a06bc9cdea766736e292d321af5a3 Template:Cite journal 10 891 1972 2015-11-13T02:17:24Z wikipedia>Fuhghettaboutit 0 Changed protection level of Template:Cite journal: when I changed this to add template editors, I didn't realize it had cascding protection—so all my change did was make it appear as if it could be edited by them ([Edit=Allow only administrators] (in... wikitext text/x-wiki <includeonly>{{#invoke:Citation/CS1|citation |CitationClass=journal }}</includeonly><noinclude> {{documentation}} </noinclude> 50b33a0bde8c0dc83f3753f7873bcb448b565944 Template:Cite encyclopedia 10 1701 3201 2015-11-13T02:17:24Z wikipedia>Fuhghettaboutit 0 Changed protection level of Template:Cite encyclopedia: when I changed this to add template editors, I didn't realize it had cascding protection—so all my change did was make it appear as if it could be edited by them ([Edit=Allow only administrators... wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=encyclopaedia }}</includeonly><noinclude> {{documentation}} [[Category:Lua-based templates]] </noinclude> a5fbaa0493d06b11ef4dd711383f9fd5174a4238 Template:Nowrap 10 90 227 2015-11-28T10:13:53Z wikipedia>Edokter 0 Adapt comment; edits inside noinclude blocks should not affect job queue, but won't kill parser either way. wikitext text/x-wiki <span class="nowrap">{{{1}}}</span><noinclude> {{documentation}} <!-- Categories go on the /doc page; interwikis go to Wikidata. --> </noinclude> 5d0dc6b6d89b37f4356242404f46138a4017f015 Template:\ 10 1170 2499 2015-12-13T11:55:37Z w>Graeme Bartlett 0 Changed protection level of Template:\: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki &nbsp;/&#32;<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 8cbfbe9d6f2aaa7726dfacfb2ee3c213dae39921 Template:Ordered list 10 607 1372 2015-12-14T10:30:21Z wikipedia>The Earwig 0 Protected "[[Template:Ordered list]]": [[WP:High-risk templates|Highly visible template]]: thousands of mainspace transclusions; match siblings; unlikely to be edited ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template... wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:list|ordered}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> c74568f5fac4f743ef2e52f830e220d8cdbc3ae1 Template:Bulleted list 10 606 1370 2015-12-26T16:25:12Z wikipedia>Frietjes 0 documentation does this wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:list|bulleted}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 37ac60a83d34c2df10fb601002557ad1b55919bb Template:Delink 10 166 385 2015-12-26T16:26:10Z wikipedia>Frietjes 0 {{documentation}} does this wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:delink|delink}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> ccf86b4255142fffb206ab8240f36ed22e029d6a Module:Location map/data/France 828 1451 2786 2016-01-02T11:08:51Z w>John of Reading 0 [[File:France location map-Regions and departements-2016.svg]] per edit request Scribunto text/plain return { name = 'France', top = 51.5, bottom = 41.0, left = -5.8, right = 10.0, image = 'France location map-Regions and departements-2016.svg', image1 = 'France relief location map.jpg' } f6a24cf3923848e019c3beea5e68fc676cbe98f9 Template:PAGENAMEBASE 10 170 393 2016-03-06T09:37:56Z wikipedia>Cabayi 0 per edit request & discussion wikitext text/x-wiki {{{{{|safesubst:}}}#Invoke:String|replace|{{{1|{{{{{|safesubst:}}}PAGENAME}}}}}|%s+%b()$||1|false}}<noinclude> {{documentation}} </noinclude> f23a5d434cb5b0baac5e1f58e9ceef9118e6873f Template:C 10 1321 2656 2016-04-29T21:00:11Z Ahecht 42 rm #titleparts wikitext text/x-wiki [[:Category:{{PAGENAME:{{{1}}}}}|{{{2|{{PAGENAME:{{{1}}}}}}}}]]<noinclude> {{Documentation}} </noinclude> 2f3365787e653c7567d4355e225be4c6c4295ebd Template:Infobox archbishop styles/doc 10 1272 2606 2016-06-01T10:37:33Z w>PPEMES 0 Chicbyaccident moved page [[Template:Infobox archbishop styles/doc]] to [[Template:Infobox Archbishop styles/doc]] wikitext text/x-wiki #REDIRECT [[Template:Infobox Archbishop styles/doc]] {{R from move}} 943660dede9281afbeba7e9a9962f4f35b1bb79d Template:(! 10 1172 2501 2016-08-09T22:00:28Z w>Renamed user mou89p43twvqcvm8ut9w3 0 Changed protection level of Template:(!: [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{|</includeonly><noinclude><nowiki>{|</nowiki>{{Documentation}} </noinclude> f709d1f206330f000c28ae20e722426c750f9bd5 Template:Fakeref 10 1501 2836 2016-08-16T12:12:24Z w>AvicBot 0 Bot: Fixing double redirect to [[Template:Dummy reference]] wikitext text/x-wiki #REDIRECT [[Template:Dummy reference]] c85c391fe2de3ebfd2154c56303a2085c57e9dd2 Template:Category link 10 609 1376 2016-09-21T14:41:05Z wikipedia>Anthony Appleyard 0 Anthony Appleyard moved page [[Template:Cl]] to [[Template:Category link]] over redirect: [[Special:Permalink/740508935|Requested]] by Nyuszika7H at [[WP:RM/TR]]: The template should be located at the natural, unabbreviated title and &#123;&#123;[[Temp... wikitext text/x-wiki {{#ifeq:{{#titleparts:{{PAGENAME}}|1}}|Stub types for deletion |[[:Category:{{{1}}}|Cat:{{{1}}}]] | [[:Category:{{{1}}}|{{{2|Category:{{{1}}}}}}]]{{#ifeq:{{Yesno|{{{count|no}}}}}|yes|<small> {{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|<span style="font-weight: bold; color: #DD0000;">}}(&thinsp;{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}}}&thinsp;){{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|</span>}}</small>}}}}<noinclude> {{Documentation}} </noinclude> cb0fcaeb8242d1d37c27a8dcb57f76fe5b5faa36 Template:Str left 10 1058 2314 2016-09-30T07:01:19Z wikipedia>Ymblanter 0 Changed protection level of Template:Str left: [[WP:High-risk templates|Highly visible template]]: RFPP request ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{safesubst:padleft:|{{{2|1}}}|{{{1}}}}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 2048b0d7b35e156528655b1d090e8b5ffab3f400 Template:Based on 10 1262 2596 2016-11-03T08:48:48Z w>RMCD bot 0 Removing notice of move discussion wikitext text/x-wiki <includeonly>{{#invoke:Based on|main}}</includeonly><noinclude>{{Documentation}}</noinclude> 46792656a06b09c2ef31b84b58d60e444c54fbbd Template:End date 10 1484 2819 2016-11-21T11:10:04Z Materialscientist 50 Changed protection level for "[[Template:End date]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki <includeonly>{{#if: {{{4|}}} |{{#if: {{{5|}}} |{{padleft:{{{4}}}|2|0}}:{{padleft:{{{5}}}|2|0}}{{#if: {{{6|}}} |&#58;{{padleft:{{{6}}}|2|0}} }},&#32;}} }}<!--ABOVE FOR TIME; BELOW FOR DATE -->{{#if: {{{1|}}} |{{#if: {{{2|}}} |{{#if: {{{3|}}} |{{#if:{{{df|}}}|{{#expr:{{{3}}}}}&nbsp;{{MONTHNAME|{{{2}}}}}|{{MONTHNAME|{{{2}}}}}&nbsp;{{#expr:{{{3}}}}},}}&nbsp;{{{1}}}|{{MONTHNAME|{{{2}}}}}&nbsp;{{{1}}}}}|{{{1}}}}}}}{{#if: {{{7|}}} |&#32;({{#ifeq: {{{7}}}|Z|UTC|{{{7}}}}})}}<!-- BELOW FOR hCalendar --><span style="display:none">&#160;(<span class="dtend">{{#if: {{{1|}}} | {{{1}}}{{#if: {{{2|}}} | -{{padleft:{{{2}}}|2|0}}{{#if: {{{3|}}} | -{{padleft:{{{3}}}|2|0}} }} }}<!-- -->{{#if: {{{4|}}} | T{{padleft:{{{4}}}|2|0}}{{#if: {{{5|}}} | &#58;{{padleft:{{{5}}}|2|0}}{{#if: {{{6|}}} | &#58;{{padleft:{{{6}}}|2|0}} }} }} }} }}{{{7|}}}</span>)</span></includeonly><noinclude> {{documentation}} </noinclude> bf4e79ea00f1ec70f817d021932b6371df465dcf Module:Error 828 1385 2720 2016-11-21T11:11:11Z Materialscientist 50 Changed protection level for "[[Module:Error]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain -- This module implements {{error}}. local p = {} local function _error(args) local tag = mw.ustring.lower(tostring(args.tag)) -- Work out what html tag we should use. if not (tag == 'p' or tag == 'span' or tag == 'div') then tag = 'strong' end -- Generate the html. return tostring(mw.html.create(tag) :addClass('error') :wikitext(tostring(args.message or args[1] or error('no message specified', 2))) ) end function p.error(frame) local args if type(frame.args) == 'table' then -- We're being called via #invoke. The args are passed through to the module -- from the template page, so use the args that were passed into the template. args = frame.args else -- We're being called from another module or from the debug console, so assume -- the args are passed in directly. args = frame end -- if the message parameter is present but blank, change it to nil so that Lua will -- consider it false. if args.message == "" then args.message = nil end return _error(args) end return p f77bd720c216b5626efe795d3b49462d50971f7d Template:Sp 10 1421 2756 2016-11-21T11:11:18Z Materialscientist 50 Changed protection level for "[[Template:Sp]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki <includeonly>&#32;</includeonly><noinclude> {{Documentation}} </noinclude> 91088ab5ac3317ad2587589a4d7902feaed49943 Template:Both 10 159 371 2016-12-04T04:31:50Z wikipedia>JJMC89 0 make subst'able wikitext text/x-wiki {{SAFESUBST:<noinclude />#if:{{{1|}}}|{{SAFESUBST:<noinclude />#if:{{{2|}}}|1}}}}<noinclude> {{documentation}} </noinclude> 57c3c0ffa811a7f31c675b2d79aedf4382e9b88d Template:Cite web 10 971 2132 2016-12-05T05:36:52Z wikipedia>Anthony Appleyard 0 Protected "[[Template:Cite web]]": restore old protection ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=web }}</includeonly><noinclude> {{documentation}} </noinclude> ea1b0f38afd9728a1cf9f2e3f540887a402fab8e Template:Convinfobox/pri2 10 1180 2509 2016-12-23T16:48:45Z w>Frietjes 0 we need the <noinclude> tag wikitext text/x-wiki <includeonly>{{convert|{{{1}}}|{{{2}}}|{{{4}}}|{{{5|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}</includeonly><noinclude> [[Category:Subtemplates of Template Convinfobox]] </noinclude> 4f7541f33c39c2bce052ff78783cf168d9b310b2 Template:Section link 10 128 305 2017-01-17T01:29:39Z wikipedia>Primefac 0 done wikitext text/x-wiki {{#invoke:Section link|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 8d047e5845f8a9b74a4655b5dd79ca7595a8f88b Template:Tlp 10 1249 2583 2017-01-23T13:35:17Z w>MSGJ 0 MSGJ moved page [[Template:Tlp]] to [[Template:Template link with parameters]]: expand name of template wikitext text/x-wiki #REDIRECT [[Template:Template link with parameters]] {{R from move}} 3867e4ef4fe637ce8530859b5486b23e916d0b8a Template:Pp 10 1018 2232 2017-01-24T15:07:04Z wikipedia>Xaosflux 0 Changed protection level for "[[Template:Pp]]": is linked from cascaded main page, moving would be very disruptive ([Edit=Require template editor access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki {{#invoke:Protection banner|main}}<noinclude> {{documentation}} </noinclude> 4b195ffc44cfde864ef77b55a54c006333226ced Template:See also 10 1047 2292 2017-02-02T05:40:25Z wikipedia>Nihiltres 0 Updated from sandbox to use [[Module:Labelled list hatnote]] wikitext text/x-wiki <includeonly>{{#invoke:Labelled list hatnote|labelledList|See also}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 74d2ab6a0df5605fbe2085c405925ec659be52b7 Template:Wikidata image 10 1238 2572 2017-02-08T17:10:10Z w>Primefac 0 TFD closed as keep (using [[User:Evad37/XFDcloser|XFDcloser]]) wikitext text/x-wiki {{#if:{{NAMESPACE}}|| {{#if:{{{1|}}} | {{#if:{{#property:P18}} | {{#ifeq:{{filepath:{{{1|}}} }}|{{filepath:{{#property:P18}} }} | | }} | {{#if:{{#property:P41}}{{#property:P94}}{{#property:P117}}{{#property:P154}}{{#property:P242}} | | }} }} | {{#if:{{#property:P18}} | {{#if:{{{2|}}} | | [[Category:No local image but image on Wikidata]] }} | }} }} }}<noinclude> {{doc}} </noinclude> 572e9efe168616980e2b149a2536e292dfbee5d0 Module:ParameterCount 828 191 436 2017-02-11T14:32:57Z wikipedia>Mr. Stradivarius 0 Protected "[[Module:ParameterCount]]": [[WP:High-risk templates|High-risk Lua module]]: 20,000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain -- This module produces a count of all the arguments passed to it. local yesno = require('Module:Yesno') -- Trim a string local function trim(s) return s:match('^%s*(.-)%s*$') end -- Test whether a string is blank local function isBlank(s) return not s:find('%S') end -- Tests whether a string is a valid positional key, and if so, returns it. If -- the key is invalid, this returns nil. local function isPositionalKey(s) s = trim(s) if s:find('^[1-9][0-9]*$') then return tonumber(s) end end -- Return the count of all arguments for which testFunc returns a truthy value. local function count(args, testFunc) local ret = 0 for key, val in pairs(args) do if testFunc(key, val) then ret = ret + 1 end end return ret end -- Check shared arguments and get the parent argument count. local function main(frame, testFunc) local blankifiedTestFunc if yesno(frame.args.checkblanks) ~= false then -- Extend the test function to check for blanks as well. blankifiedTestFunc = function (key, val) if not isBlank(val) then return testFunc(key, val) end end else blankifiedTestFunc = testFunc end return count(frame:getParent().args, blankifiedTestFunc) end return { -- Called with {{#invoke:ParameterCount|all}} -- All specified parameters are counted, even those not supported by the -- template. all = function (frame) return main(frame, function () return true end) end, -- Called with {{#invoke:ParameterCount|main}} -- Users can specify a list of parameters to check, and a list of Lua -- Ustring patterns to check each parameter against. main = function (frame) local args = frame.args local keys, patterns = {}, {} -- Get key list for i, key in ipairs(args) do local positionalKey = isPositionalKey(key) if positionalKey then keys[positionalKey] = true else keys[trim(key)] = true end end -- Get patterns do local function getPattern(i) local pattern = args['pattern' .. tostring(i)] if pattern and pattern ~= '' then return pattern end end local i = 1 local pattern = getPattern(i) while pattern do patterns[i] = pattern i = i + 1 pattern = getPattern(i) end end -- Construct the test function local testFunc = function (key, val) if keys[key] then return true end for i, pattern in ipairs(patterns) do if mw.ustring.find(tostring(key), pattern) then return true end end return false end return main(frame, testFunc) end } 63e3811b7a17825c071b1920ce88af06bc1e778d Template:Basepage subpage 10 1258 2592 2017-03-12T04:26:29Z w>Godsy 0 [[Template:This is a redirect]] has been deprecated, change to [[Template:Redirect category shell]]. wikitext text/x-wiki #REDIRECT [[Template:When on basepage]] {{Redirect category shell| {{R from move}} {{R from template shortcut}} }} 47118a1bed1942b7f143cdff1dec183002fc9f4b Template:- 10 1348 2683 2017-03-12T14:41:31Z w>Paine Ellsworth 0 add [[WP:RCAT|rcat]] wikitext text/x-wiki #REDIRECT [[Template:Clear]] {{Redirect category shell| {{R from modification}} {{R from template shortcut}} }} 3fb0b377ebee11659e4a3ba0034f60898dbc473f Template:Location map 10 1398 2733 2017-03-16T00:55:26Z w>Plastikspork 0 TFD closed as no consensus (using [[User:Evad37/TFDcloser|TFDcloser]]) wikitext text/x-wiki <includeonly>{{#invoke:Location map|main}}</includeonly><noinclude>{{documentation}}</noinclude> 732416b8068d2dc3549db5aa5ffa786beb502886 Template:U 10 1641 3000 2017-03-18T12:22:31Z wikipedia>John of Reading 0 Switch to Redirect category shell per edit request wikitext text/x-wiki #REDIRECT [[Template:User link]] {{Redirect category shell| {{R from template shortcut}} }} 4e19f83e5bbe5d6e452f64e86adc28c022309e09 Template:Navbar-collapsible 10 1606 2941 2017-03-21T12:45:35Z w>Jc86035 0 changed to use [[Module:Navbar]] directly (re-adds padding after it was removed from CSS) wikitext text/x-wiki {{#invoke:navbar|navbar|collapsible=1}}<noinclude> {{documentation}} <!-- Add cats and interwikis to the /doc subpage, not here! --> </noinclude> 78fb9a414152df09b31fe54f5794b38f8d664685 Template:Precision 10 1446 2781 2017-03-25T12:38:46Z w>Jo-Jo Eumerus 0 Changed protection level for "[[Template:Precision]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT|TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access] (... wikitext text/x-wiki <includeonly>{{#invoke:Math|precision|{{{1|0}}}|check_fraction=true}}</includeonly><noinclude> {{documentation}} </noinclude> 944a0e5e6c5ace1e2a418c7969c645313b30395a Template:Str ≠ len 10 1240 2574 2017-03-25T12:38:47Z w>Jo-Jo Eumerus 0 Changed protection level for "[[Template:Str ≠ len]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT|TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access]... wikitext text/x-wiki {{{{{|safesubst:}}}#ifexpr: {{{{{|safesubst:}}}#invoke:String|len|s={{{1|}}}}} != {{{2|0}}} <noinclude><!-- str >= len --></noinclude> | {{{3|}}} | {{{4|}}} }}<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 62d778f3efdfb20ede86ceede35feb64ed51fe02 Template:Smallsup 10 1464 2799 2017-03-25T12:38:47Z w>Jo-Jo Eumerus 0 Changed protection level for "[[Template:Smallsup]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT|TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access] (i... wikitext text/x-wiki <includeonly><sup><small>{{{1}}}</small></sup></includeonly><noinclude> {{Documentation}} </noinclude> c174fb3247218273210500118556feb9f3c76d5a Template:Tomorrow 10 1248 2582 2017-03-25T12:38:48Z w>Jo-Jo Eumerus 0 Changed protection level for "[[Template:Tomorrow]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT|TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access] (i... wikitext text/x-wiki {{#switch:{{{1}}} |long={{#time:F"{{{2| }}}"j",{{{2| }}}"Y|+1 day}} |num={{#time:n"{{{2| }}}"j|+1 day}} |#default={{#time:F"{{{2| }}}"j|+1 day}} }}<noinclude>{{Documentation}}</noinclude> 5e44249f064450c1b28daa6959741f668465bb5e Template:Max 10 1447 2782 2017-03-25T16:04:13Z w>Jo-Jo Eumerus 0 Changed protection level for "[[Template:Max]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access] (indefinite)... wikitext text/x-wiki <includeonly>{{#invoke:Math|max}}</includeonly><noinclude> {{Documentation}} </noinclude> f052e3a9b5b08740be624045e49f31d86e09f0ad Template:Wraps infobox 10 1270 2604 2017-04-06T22:09:28Z w>Steel1943 0 Undid revision 774200807 by [[Special:Contributions/Steel1943|Steel1943]] ([[User talk:Steel1943|talk]]) revert self - I remember why I did it that way: in case there are wrapper templates outside of the "Template:" namespace wikitext text/x-wiki {{#ifeq:{{NAMESPACE}}|Template|{{Ombox | type = style | image = [[Image:Ambox warning yellow.svg|40x40px|alt=|link=]] | text = '''This template is a customized wrapper for the [[Help:Infobox|infobox]] template {{tl|{{{1}}}}}'''. Any field from {{tld|{{{1}}}}} can work so long as it is added to this template first. Questions? Just ask over at [[Template talk:{{{1}}}]] while referencing [[{{FULLBASEPAGENAME}}]]. }}<includeonly>{{#ifeq: {{PAGENAME}} | {{BASEPAGENAME}} | {{#ifexist:Category:Templates calling {{{1}}}|[[Category:Templates calling {{{1}}}]]|[[Category:Infobox wrapper templates]]}} }}</includeonly>}}<noinclude> {{Documentation}}</noinclude> 9333031962cdc26221dd5c66ca03094535e6dbf3 Template:Country data EU 10 1207 2536 2017-04-07T20:08:10Z w>Jo-Jo Eumerus 0 Changed protection level for "[[Template:Country data EU]]": Matching redirect target ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Country data European Union]]<noinclude>[[Category: Country data redirects|EU]]</noinclude> 2267fd165f54795dc23946ea44a5a5f233a3d041 Template:Country data PER 10 1724 3250 2017-04-07T20:08:14Z wikipedia>Jo-Jo Eumerus 0 Changed protection level for "[[Template:Country data PER]]": Matching redirect target ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Country data Peru]] [[category:country data redirects|PER]] ab47b4cecba4ecbadf1dd2e33112395e6a627818 Template:Lang-gr 10 995 2186 2017-04-07T20:59:06Z wikipedia>Jo-Jo Eumerus 0 Changed protection level for "[[Template:Lang-gr]]": Matching redirect target ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:lang-el]] 5d94e6e51e5276de93e697f3f837f9a3586261c9 Template:Side box 10 113 273 2017-04-08T19:24:23Z wikipedia>Jo-Jo Eumerus 0 Changed protection level for "[[Template:Side box]]": [[WP:High-risk templates|Highly visible template]]: Allowing template editors ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki {{#invoke:Side box|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> f02d48c7bd2f7bc64e2982d16b3578c99137d27e Template:Fix/category 10 1089 2377 2017-04-08T20:24:09Z wikipedia>Jo-Jo Eumerus 0 Changed protection level for "[[Template:Fix/category]]": [[WP:High-risk templates|Highly visible template]]: Allowing template editors ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <noinclude>{{pp-template|small=yes}}</noinclude>{{{cat|[[Category:All pages needing cleanup]]}}}{{#if:{{{cat-date|}}} |[[{{{cat-date}}} {{#if:{{{date|}}} |from {{{date}}} }}]]{{#if:{{{date|}}} |{{#ifexist:{{{cat-date}}} from {{{date}}}| |[[Category:Articles with invalid date parameter in template]] }} }} }}{{#if:{{{cat2|}}}|{{{cat2}}}}}{{#if:{{{cat-date2|}}} |[[{{{cat-date2}}} {{#if:{{{date|}}} |from {{{date}}} }}]]{{#if:{{{date|}}} |{{#ifexist:{{{cat-date2}}} from {{{date}}}| |[[Category:Articles with invalid date parameter in template]] }} }} }}{{#if:{{{cat3|}}}|{{{cat3}}}}}{{#if:{{{cat-date3|}}} |[[{{{cat-date3}}} {{#if:{{{date|}}} |from {{{date}}} }}]]{{#if:{{{date|}}} |{{#ifexist:{{{cat-date3}}} from {{{date}}}| |[[Category:Articles with invalid date parameter in template]] }} }} }} 8f0a79cdee91c3d967a6d70cf7bfab4093b3d6ae Template:Navbar 10 874 1938 2017-04-22T18:49:17Z wikipedia>Plastikspork 0 Closed wikitext text/x-wiki <includeonly>{{#invoke:Navbar|navbar}}</includeonly><noinclude> {{documentation}} </noinclude> 868e3566b7e8a9a5a7f3dac75cac429c47de10d3 Template:Spaced ndash 10 1494 2829 2017-04-23T13:25:27Z w>Jo-Jo Eumerus 0 Changed protection level for "[[Template:Spaced ndash]]": Matching redirect target ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Spaced en dash]] {{R from move}} 943ce837a48a4907650d7398e8d10271b21dde62 Template:Quote box2 10 1108 2415 2017-04-30T16:51:42Z wikipedia>AnomieBOT 0 [[User:AnomieBOT/docs/TemplateSubster|Substing templates]]: {{Redr}}. See [[User:AnomieBOT/docs/TemplateSubster]] for info. wikitext text/x-wiki #REDIRECT [[Template:Quote box]] {{redirect category shell|{{R from merge}}{{R tsh}}}} 4b306c94366d95b16edcb871c5a56c3885f5a64e Template:Font 10 1556 2891 2017-05-05T07:41:21Z w>WOSlinker 0 redo without nowiki wikitext text/x-wiki <includeonly><span style="font-family:{{ {{{|safesubst:}}}#if: {{{font|}}} |{{{font}}}|sans-serif}};font-size:{{ {{{|safesubst:}}}#if: {{{size|}}} |{{{size}}}|100%}};{{ {{{|safesubst:}}}#if: {{{color|}}} |color:{{{color}}}|color:black}};{{ {{{|safesubst:}}}#if: {{{bgcolor|}}} |background-color:{{{bgcolor}}}|background-color:transparent}};{{ {{{|safesubst:}}}#if: {{{title|}}} |title:{{{title}}}|}};{{ {{{|safesubst:}}}#if: {{{css|}}} |{{{css}}}|}}">{{ {{{|safesubst:}}}#if: {{{1|}}} |{{{1}}}|{{{text}}}}}</span></includeonly><noinclude> {{documentation}} </noinclude> 9a684ea3bacb70176207da87afe59dd965dd9e1b Template:Wikipedia how to 10 151 351 2017-05-06T06:01:45Z wikipedia>AnomieBOT 0 [[User:AnomieBOT/docs/TemplateSubster|Substing templates]]: {{redr}}. See [[User:AnomieBOT/docs/TemplateSubster]] for info. wikitext text/x-wiki #REDIRECT [[Template:Wikipedia how-to]] {{redirect category shell|{{R from move}}}} a4dd8999d6f78f4bbc7d6222d0e3036a37cc6074 Template:Infobox Portuguese royalty styles 10 1129 2454 2017-05-18T11:45:38Z w>Frietjes 0 wikitext text/x-wiki {{Infobox manner of address | background = #07A983 | type = Royal | name = {{{name<includeonly>|</includeonly>}}} | image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}} | Aviz = Brasao de Aviz.PNG | UK = Coat of arms of the United Kingdom of Portugal, Brazil and the Algarves.svg | Constitution = Brasão de armas do reino de Portugal.svg | own = {{{image|}}} | #default = Coat of Arms of the Kingdom of Portugal (1640-1910).png }} | size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|100px}} | reference = {{{dipstyle<includeonly>|</includeonly>}}} | spoken = {{{offstyle<includeonly>|</includeonly>}}} | alternative = {{{altstyle<includeonly>|</includeonly>}}} }}{{<includeonly>safesubst:</includeonly>#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Portuguese royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | altstyle | dipstyle | image | image_size | name | offstyle }}<noinclude> {{documentation}} </noinclude> 96dbab7dc288fd60753296d1ada69b3ba020182f Template:Infobox Spanish royalty styles 10 1132 2457 2017-05-18T12:01:03Z w>Frietjes 0 Adding unknown parameter tracking through [[:Category:Pages using infobox manner of address with unknown parameters]] using [[Module:check for unknown parameters]] wikitext text/x-wiki {{Infobox manner of address | background = #FF7F50 | type = Royal | name = {{{name<includeonly>|</includeonly>}}} | image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}} | aragon = Armas del soberano de Aragón.svg | asturias = Escudo del Reino de Asturias (Modelo de la Bandera).svg | castile = Kingdom of Castile Arms.svg | granada = Granada Arms.svg | leon = Kingdom of Leon Arms.svg | navarre = Escudo del Reino de Navarra.svg | 1475-1516 = Escudo de los reyes Católicos 2.svg | 1516-1556 = CoA Charles I of Spain.png | 1556-1700 = Escudo de Armas de Felipe II de España.svg | 1700-1868 = Escudo del rey de España abreviado antes de 1868.svg | 1808-1812 = Señal Real de Jose I con Orden del Toison.svg | 1870-1873 = Escudo de España Amadeo de Saboya.svg | 1873-1931 = Escudo de España 1874-1931.svg | own = {{{image|}}} | #default = Escudo de España (mazonado).svg }} | size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|50px}} | reference = {{{dipstyle<includeonly>|</includeonly>}}} | spoken = {{{offstyle<includeonly>|</includeonly>}}} | alternative = {{{altstyle<includeonly>|</includeonly>}}} }}{{<includeonly>safesubst:</includeonly>#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Spanish royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | altstyle | dipstyle | image | image_size | name | offstyle }}<noinclude> {{documentation}} </noinclude> f78a1173b6a0742abab95a479a562eb00793ea76 Template:Find sources mainspace 10 1028 2254 2017-05-20T18:49:40Z wikipedia>Plastikspork 0 Fix wikitext text/x-wiki {{#invoke:Find sources|Find sources mainspace}}<noinclude> {{#invoke:Find sources/autodoc|Find sources mainspace}} </noinclude> 47c0ba9d406528e894f4077dd33ec0fe489d0af2 Template:UF-coord 10 1365 2700 2017-06-05T09:56:32Z w>WOSlinker 0 add option to hide title param wikitext text/x-wiki For [[Geographic coordinate system|coordinates]], use {{tl|coord}} with ''display=inline{{#ifeq:{{{title|}}}|no||,title}}''. Please do not be [[Wikipedia:WikiProject Geographical coordinates#Precision|overly precise]].<noinclude> [[Category:Microformat (uF) message templates]] </noinclude> c0c43b7b3c810c02429a4a11e223f186d6ffc8b4 Template:About French nav boxes 10 1454 2789 2017-06-10T22:01:49Z w>Helpful Pixie Bot 0 Update deprecated redirect template. wikitext text/x-wiki #REDIRECT [[Template:About France nav boxes]] {{Redirect category shell| {{Redirect from move}} {{Redirect from incorrect name}} }} 9604a89a021334052646856b2ef8266c8f227286 Template:Location map+ 10 1632 2973 2017-06-16T21:44:41Z wikipedia>Plastikspork 0 TFD closed as no consensus ([[WP:XFDC|XFDcloser]]) wikitext text/x-wiki <includeonly>{{#invoke:Location map/multi|container}}</includeonly><noinclude>{{documentation}}</noinclude> 6d8191274535019dfbe086080294788b4c2e6602 Template:Refend 10 173 399 2017-07-24T21:40:56Z wikipedia>WOSlinker 0 remove </dl> since no <dl> in Template:Refbegin wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{template doc|Template:refbegin/doc}} {{TemplateDataHeader}} <templatedata> { "description": "Ends a reference lists started by {{refbegin}}.", "params": { } } </templatedata> </noinclude> ae41356c6aab3e8901a484fcb46ff4aa314f1bb9 Template:Strong 10 208 2567 2017-09-16T03:10:40Z w>Matt Fitzpatrick 0 added role parameter and attribute wikitext text/x-wiki <strong {{#if:{{{role|}}}|role="{{{role}}}"}} {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</strong><noinclude> {{documentation}} <!-- Add cats and interwikis to the /doc subpage, not here! --> </noinclude> a6c6d3b520e2018e19376e2f0e1a72801336d1df Template:Vanchor 10 1245 2579 2017-09-16T17:45:37Z w>Zzuuzz 0 Changed protection level for "[[Template:Vanchor]]": [[Wikipedia:High-risk templates|High risk template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Visible anchor]] {{Redirect category shell| {{R from template shortcut}} }} 8adbd53dde59b46bf409a2fbda6056f8c0199e9c Template:Cs1 10 835 1852 2017-10-09T12:22:45Z wikipedia>Xezbeth 0 Protected "[[Template:Cs1]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki [[Help:Citation Style 1|Citation Style 1]]<noinclude> [[Category:Documentation assistance templates]] </noinclude> 1da8ad17d867e11fdecfe858aa0b0e5a632bb6e8 Template:Crossref 10 121 289 2017-10-09T12:24:30Z wikipedia>Xezbeth 0 Protected "[[Template:Crossref]]": [[Wikipedia:High-risk templates|Highly visible]] template redirect ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Crossreference]] {{Rcat shell| {{R from template shortcut}} }} dc4192593ccb8eaa34c0440c4aa712442a06c329 Template:Blue 10 850 1882 2017-10-09T16:10:03Z wikipedia>MusikAnimal 0 Protected "[[Template:Blue]]": [[WP:High-risk templates|Highly visible template]]; 11,000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <span style="color:blue">{{{1}}}</span><noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}}</noinclude> 89f3353953a76d63c4ba5cd23af400b64ef178f4 Template:Subsidebar bodystyle 10 885 1960 2017-10-09T16:52:36Z wikipedia>MusikAnimal 0 Protected "[[Template:Subsidebar bodystyle]]": [[WP:High-risk templates|Highly visible template]]; 10,000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #redirect [[Template:Subinfobox bodystyle]] 09334898141c9cd97ab7e7c9226a3424a88c0cd7 Template:Cite book 10 690 1548 2017-11-15T09:11:45Z wikipedia>Salix alba 0 put TD in a collapse top / bottom section wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=book }}</includeonly><noinclude> {{documentation}} {{collapse top|TemplateData}} {{Cite book/TemplateData}} {{collapse bottom}} </noinclude> c474cbe5d051e08f516083d594207d449245c717 Module:Citation/CS1/Utilities/doc 828 901 1992 2017-11-30T14:34:02Z wikipedia>Shellwood 0 Reverted edits by [[Special:Contribs/50.35.74.125|50.35.74.125]] ([[User talk:50.35.74.125|talk]]) to last version by Trappist the monk wikitext text/x-wiki {{#lst:Module:Citation/CS1/doc|header}} This page contains various functions and tables that are common to multiple of the various modules that make up [[Module:Citation/CS1]]. {{#lst:Module:Citation/CS1/doc|module_components_table}} c4f3e7c1767fa08a7f9f535de814b7de4d01a10f Template:See 10 983 2162 2017-12-09T06:09:36Z wikipedia>Alex 21 0 Changed redirect target from [[Template:Further information]] to [[Template:Further]] wikitext text/x-wiki #REDIRECT [[Template:Further]] 5d02b5a16045ac62c67ba614e550dec3a5661db7 Module:Lang/ISO 639 synonyms 828 475 1027 2017-12-13T23:10:47Z wikipedia>Trappist the monk 0 Scribunto text/plain -- File-Date: 2013-01-11 return { ["aar"] = "aa", ["abk"] = "ab", ["afr"] = "af", ["aka"] = "ak", ["amh"] = "am", ["ara"] = "ar", ["arg"] = "an", ["asm"] = "as", ["ava"] = "av", ["ave"] = "ae", ["aym"] = "ay", ["aze"] = "az", ["bak"] = "ba", ["bam"] = "bm", ["bel"] = "be", ["ben"] = "bn", ["bih"] = "bh", ["bis"] = "bi", ["bod"] = "bo", ["bos"] = "bs", ["bre"] = "br", ["bul"] = "bg", ["cat"] = "ca", ["ces"] = "cs", ["cha"] = "ch", ["che"] = "ce", ["chu"] = "cu", ["chv"] = "cv", ["cor"] = "kw", ["cos"] = "co", ["cre"] = "cr", ["cym"] = "cy", ["dan"] = "da", ["deu"] = "de", ["div"] = "dv", ["dzo"] = "dz", ["ell"] = "el", ["eng"] = "en", ["epo"] = "eo", ["est"] = "et", ["eus"] = "eu", ["ewe"] = "ee", ["fao"] = "fo", ["fas"] = "fa", ["fij"] = "fj", ["fin"] = "fi", ["fra"] = "fr", ["fry"] = "fy", ["ful"] = "ff", ["gla"] = "gd", ["gle"] = "ga", ["glg"] = "gl", ["glv"] = "gv", ["grn"] = "gn", ["guj"] = "gu", ["hat"] = "ht", ["hau"] = "ha", ["heb"] = "he", ["her"] = "hz", ["hin"] = "hi", ["hmo"] = "ho", ["hrv"] = "hr", ["hun"] = "hu", ["hye"] = "hy", ["ibo"] = "ig", ["ido"] = "io", ["iii"] = "ii", ["iku"] = "iu", ["ile"] = "ie", ["ina"] = "ia", ["ind"] = "id", ["ipk"] = "ik", ["isl"] = "is", ["ita"] = "it", ["jav"] = "jv", ["jpn"] = "ja", ["kal"] = "kl", ["kan"] = "kn", ["kas"] = "ks", ["kat"] = "ka", ["kau"] = "kr", ["kaz"] = "kk", ["khm"] = "km", ["kik"] = "ki", ["kin"] = "rw", ["kir"] = "ky", ["kom"] = "kv", ["kon"] = "kg", ["kor"] = "ko", ["kua"] = "kj", ["kur"] = "ku", ["lao"] = "lo", ["lat"] = "la", ["lav"] = "lv", ["lim"] = "li", ["lin"] = "ln", ["lit"] = "lt", ["ltz"] = "lb", ["lub"] = "lu", ["lug"] = "lg", ["mah"] = "mh", ["mal"] = "ml", ["mar"] = "mr", ["mkd"] = "mk", ["mlg"] = "mg", ["mlt"] = "mt", ["mon"] = "mn", ["mri"] = "mi", ["msa"] = "ms", ["mya"] = "my", ["nau"] = "na", ["nav"] = "nv", ["nbl"] = "nr", ["nde"] = "nd", ["ndo"] = "ng", ["nep"] = "ne", ["nld"] = "nl", ["nno"] = "nn", ["nob"] = "nb", ["nor"] = "no", ["nya"] = "ny", ["oci"] = "oc", ["oji"] = "oj", ["ori"] = "or", ["orm"] = "om", ["oss"] = "os", ["pan"] = "pa", ["pli"] = "pi", ["pol"] = "pl", ["por"] = "pt", ["pus"] = "ps", ["que"] = "qu", ["roh"] = "rm", ["ron"] = "ro", ["run"] = "rn", ["rus"] = "ru", ["sag"] = "sg", ["san"] = "sa", ["sin"] = "si", ["slk"] = "sk", ["slv"] = "sl", ["sme"] = "se", ["smo"] = "sm", ["sna"] = "sn", ["snd"] = "sd", ["som"] = "so", ["sot"] = "st", ["spa"] = "es", ["sqi"] = "sq", ["srd"] = "sc", ["srp"] = "sr", ["ssw"] = "ss", ["sun"] = "su", ["swa"] = "sw", ["swe"] = "sv", ["tah"] = "ty", ["tam"] = "ta", ["tat"] = "tt", ["tel"] = "te", ["tgk"] = "tg", ["tgl"] = "tl", ["tha"] = "th", ["tir"] = "ti", ["ton"] = "to", ["tsn"] = "tn", ["tso"] = "ts", ["tuk"] = "tk", ["tur"] = "tr", ["twi"] = "tw", ["uig"] = "ug", ["ukr"] = "uk", ["urd"] = "ur", ["uzb"] = "uz", ["ven"] = "ve", ["vie"] = "vi", ["vol"] = "vo", ["wln"] = "wa", ["wol"] = "wo", ["xho"] = "xh", ["yid"] = "yi", ["yor"] = "yo", ["zha"] = "za", ["zho"] = "zh", ["zul"] = "zu" } f3fb5374c9e0fdef6ce6ea22736b79468358ca19 Template:WikiProject Infoboxes sidebar 10 153 355 2017-12-20T17:30:20Z wikipedia>Frietjes 0 wikitext text/x-wiki <includeonly>{{Helpbox | name = WikiProject Infoboxes sidebar | class = plainlist collapsible {{#ifeq:{{{1|}}}|collapsed |collapsed}} | float = {{{float|right}}} | titlestyle = font-size:100%;padding:0.5em; | title = {{resize|130%|[[Wikipedia:WikiProject Infoboxes|WikiProject Infoboxes]]}}<!--(resized here otherwise [show/hide] link also resized)--> | headingstyle = font-size:105%; | list1 = {{raise|0.25em|[[Wikipedia:List of infoboxes|List of infoboxes]]}} | group2 = Style and help | list2 = *[[Wikipedia:Manual of Style/Infoboxes|Manual of Style/Infoboxes]] *[[Help:Infobox]] | group3 = Cleanup | list3 = {{Sidebar |child=yes |navbar=off | heading1 = Talk page | content1 = *{{tl|Cleanup infobox}} *{{tl|New infobox}} *{{tl|Infobox requested}} | heading2 = Article | content2 = *{{tl|Missing-taxobox}} }} | group4 = Building | list4 = *{{tl|Infobox}} *[[Wikipedia:List of infoboxes/Proposed|List of infoboxes/Proposed]] | group5 = To do | list5 = * [[:Category:Wikipedia articles with an infobox request|Add infobox]] * [[:Category:Pages needing an infobox conversion|Change template used]] * [[:Category:Wikipedia infobox cleanup|Cleanup contents]] * [[:Category:Templates suitable for conversion to use Template:Infobox|Convert to use <nowiki>{{</nowiki>Infobox}}]] }}</includeonly><noinclude> {{Documentation}} </noinclude> d2db05e6c97d88a0b4925b16966067694c2e84b8 Template:Var 10 862 1912 2017-12-21T13:31:52Z wikipedia>Izno 0 nix xml lang invocation wikitext text/x-wiki <var {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} style="padding-right: 1px;{{{style|}}}" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</var><noinclude> <!--Categories and interwikis go near the bottom of the /doc page.--> {{Documentation}} </noinclude> 0e9e47694c01ca4c7b29566a1cb11a117dfbf2c0 Template:Lang-cy 10 1406 2741 2017-12-23T22:22:05Z w>Trappist the monk 0 /* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_italic |code=cy }}</includeonly><noinclude> {{Documentation|Template:Lang-x/doc}} [[Category:Celtic multilingual support templates]] </noinclude> 369e33088d05559f9f5fb2b2892ee4d9d5f47570 Template:Lang-de 10 999 2194 2017-12-23T22:22:11Z wikipedia>Trappist the monk 0 /* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_italic |code=de }}</includeonly><noinclude> {{Documentation}} </noinclude> fce950f3988f353d598dd94038c50a0016c8f3e7 Template:Lang-fr 10 998 2192 2017-12-23T22:56:28Z wikipedia>Trappist the monk 0 /* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_italic |code=fr }}</includeonly><noinclude> {{documentation|Template:Lang-x/doc}} [[Category:Italic multilingual support templates]] </noinclude> d931674bb3f25747fd413f72d24d104de98129b6 Template:Lang-ga 10 1401 2736 2017-12-23T22:56:51Z w>Trappist the monk 0 /* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_italic |code=ga }}</includeonly><noinclude> {{Documentation|Template:Lang-x/doc}} [[Category:Celtic multilingual support templates]] </noinclude> 740ff9624e14c7aafc2ba79a3ac8a42115ec2868 Template:Lang-gd 10 1399 2734 2017-12-23T22:57:10Z w>Trappist the monk 0 /* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_italic |code=gd }}</includeonly><noinclude> {{Documentation|Template:Lang-x/doc}} [[Category:Celtic multilingual support templates]] </noinclude> abab1f7b12490144ea728c17ce94795701ad7bbb Template:Lang-gv 10 1416 2751 2017-12-23T22:58:52Z w>Trappist the monk 0 /* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_italic |code=gv }}</includeonly><noinclude> {{Documentation|Template:Lang-x/doc}} [[Category:Celtic multilingual support templates]] </noinclude> ff9779c0cd433b720fa50af0e7a4d3f39f536756 Template:Lang-sco 10 1400 2735 2017-12-24T00:04:06Z w>Trappist the monk 0 /* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_italic |code=sco |rtl=no }}{{#if:{{{abbr|}}}{{{i|}}}{{{l|}}}|[[Category:Lang-x templates with unsupported parameters]]}}</includeonly><noinclude>{{documentation}}<!-- place category links on the /doc sub-page --></noinclude> f258cc60d888eb1c551da74f8835eaffbb5bfd16 Template:Lang-el 10 996 2188 2017-12-31T16:25:28Z wikipedia>Trappist the monk 0 /* top */revise initial style for certain {{lang-xx}} templates; using [[Project:AWB|AWB]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_inherit |code=el }}</includeonly>{{#if:{{{2|}}}|{{Main other|[[Category:Instances of Lang-el using second unnamed parameter]]}}}}<noinclude> {{Documentation}} </noinclude> 1898a92fadc3297db4e90db7600d5d1d8a945355 Template:Mxt 10 1004 2204 2018-01-10T18:59:27Z wikipedia>Primefac 0 Protected "[[Template:Mxt]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki {{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example monospaced example-mono" style="font-family: monospace, monospace; color: #006400;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<!--"monospace, monospace" needed per Wikipedia:Typography#The_monospace_'bug'--><noinclude> {{Documentation|Template:Xt/doc}} <!--This category has to be done on a per-template basis, not in the shared docs, since it only apply to four templates in the family.--> [[Category:Programming typing-aid templates]] </noinclude> b00aa06d96188f3a153fd18bd7f0eebcb7f3b8d2 Template:Uses Wikidata 10 1069 2336 2018-01-10T18:59:53Z wikipedia>Primefac 0 Protected "[[Template:Uses Wikidata]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access]... wikitext text/x-wiki {{Sister project | position = {{{position|}}} | project = data | text = This {{module other|module|template}} uses {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see [[#{{{section}}}|§&nbsp;{{{section}}}]] for details. | the [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}: {{#invoke:Uses Wikidata|usesProperty}} }}}}{{#switch:{{SUBPAGENAME}} |sandbox |testcases |doc= <!--no category--> |#default={{#ifeq:{{PAGENAME}} |Uses Wikidata ||{{module other |[[Category:Modules using data from Wikidata]] |{{template other |[[Category:Templates using data from Wikidata]]}} }} }} }}<!-- --><noinclude>{{documentation}}</noinclude> 4b6f6f2ef4c6d4b84fa8aab733189b440b156a3f Template:Unichar/hexformat 10 1612 2947 2018-01-10T18:59:53Z w>Primefac 0 Protected "[[Template:Unichar/hexformat]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed acce... wikitext text/x-wiki {{#ifeq:{{{1|<#salted#>}}} | <#salted#> | <#salted#> | {{padleft:{{uc:{{#switch:{{lc:{{padleft:|2|{{{1|0}}}}}}} | 0x = {{Str right|{{{1}}}|2}} <!--rm here: prefix u+, because that option is too expensive--> |{{{1}}} }}}}|4|0 }} }}<noinclude> {{Documentation}} </noinclude> c723d83bf4332dfedf6cc64dbff3813f6be109b6 Template:Unichar/ulink 10 1613 2948 2018-01-10T18:59:54Z w>Primefac 0 Protected "[[Template:Unichar/ulink]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access]... wikitext text/x-wiki {{#switch:{{{ulink|<#salted#>}}} | <#salted#>=U+ | =[[{{{ulinkdefault|}}}|U+]] | #default=[[{{{ulink|}}}{{!}}U+]]}}<noinclude> {{Documentation}} </noinclude> 856cde83e4c4901ac1e40ed58a968201bfc0bf7b Template:Dummy reference 10 576 1300 2018-01-10T19:21:30Z wikipedia>Primefac 0 Protected "[[Template:Dummy reference]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access... wikitext text/x-wiki <sup class="reference nowrap ltr" style="color:#002bb8;">[{{#ifeq:{{yes/no|{{{txtital|}}}}}|yes|<span style="font-style:italic">}}{{#if:{{{txtcol|}}}|<span style="color:{{{txtcol|}}}">}}{{{1|1}}}{{#if:{{{txtcol|}}}|</span>}}{{#ifeq:{{yes/no|{{{txtital|}}}}}|yes|</span>}}]</sup><noinclude> {{documentation}} </noinclude> 7be6798eb28af3f887fa775b50dc87e0c575cde9 Template:Tsh 10 1584 2919 2018-01-10T19:22:23Z w>Primefac 0 Protected "[[Template:Tsh]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Template shortcut]] {{rcatsh| {{R msp}} {{R tsh}} }} 9fde60ec995035a7ff432aea9b23c316c236351d Template:Yes/no 10 577 1302 2018-01-10T19:22:36Z wikipedia>Primefac 0 Protected "[[Template:Yes/no]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefi... wikitext text/x-wiki #REDIRECT [[Template:Yesno]] 80e458cd4d851471d13896c26ecf96ce6dcdd579 Template:!mxt 10 1003 2202 2018-01-11T16:01:48Z wikipedia>SMcCandlish 0 +class wikitext text/x-wiki {{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example deprecated-content example-bad monospaced example-mono" style="font-family: monospace, monospace; color: #8B0000;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<!--"monospace, monospace" needed per Wikipedia:Typography#The_monospace_'bug'--><noinclude> {{Documentation|Template:Xt/doc}} <!--This category has to be done on a per-template basis, not in the shared docs, since it only apply to four templates in the family.--> [[Category:Programming typing-aid templates]] </noinclude> 123b663ea682585bd66d348c0b22b9356b6082bb Template:Wde 10 1738 3291 2018-01-12T21:14:24Z wikipedia>Uzume 0 [[WP:AES|←]]Redirected page to [[Template:Wikidata entity link]] wikitext text/x-wiki #REDIRECT [[Template:Wikidata entity link]] [[Category:Wikidata templates]] 6ef9e52b49c26bd5d901ebd61f6b059c8971384b Template:Break 10 1522 2857 2018-01-13T00:13:51Z w>Plastikspork 0 Add safesubst wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:string|rep|<br/>|{{<includeonly>safesubst:</includeonly>#iferror:{{<includeonly>safesubst:</includeonly>#expr:1*{{{1|1}}}}}|1}}}}<noinclude> {{Documentation}} </noinclude> 6cf61c4ac248e7e59d6800616a169450e252ad59 Template:Convinfobox/pri3 10 1559 2894 2018-01-19T00:29:04Z w>Primefac 0 Protected "[[Template:Convinfobox/pri3]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#switch:{{{4}}}{{{6}}} |ftin={{convert|{{{1}}}|{{{2}}}|ftin|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |stlb={{convert|{{{1}}}|{{{2}}}|lb stlb|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |lboz={{convert|{{{1}}}|{{{2}}}|lboz|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |{{#switch:{{{2}}}{{{4}}} |ftin={{convert|{{{1}}}|ft|0|in|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |stlb={{convert|{{{1}}}|st|0|lb|{{#ifeq:{{{6}}}|kg|kg lb|{{{6}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |lboz={{convert|{{{1}}}|lb|0|oz|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |{{convert|{{{1}}}|{{{2}}}|{{{4}}} {{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} }} }}</includeonly><noinclude> [[Category:Subtemplates of Template Convinfobox]] </noinclude> a7c30bd34a3aebd6106d54e89f332fefd6d62d19 Template:Defn 10 620 1398 2018-01-19T00:29:21Z wikipedia>Primefac 0 Protected "[[Template:Defn]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <dd class="glossary {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"|{{#if:{{{term|}}}|id="{{{term}}}-defn{{{2|{{{no|1}}}}}}"|}}|}} {{#if:{{{style|}}}|style="{{{style}}}"|}}>{{#if:{{{2|{{{no|}}}}}}|{{{2|{{{no}}}}}}.&nbsp;&nbsp;|}}{{{defn|{{{1|{{{content}}}}}}}}}</dd><noinclude> {{Documentation}}<!--Categories go in the /doc subpage.--> </noinclude> 7364e2a37ab009857bdee7a77e7e297830fc560b Template:Glossary 10 621 1400 2018-01-19T00:29:58Z wikipedia>Primefac 0 Protected "[[Template:Glossary]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <dl class="glossary {{{class|}}}" {{#if:{{{style|}}}|style="{{{style}}}"|}} {{#if:{{{id|}}}|id="{{{id}}}"|}}><noinclude>{{glossary end}} <!--Categories and interwikis go on the /doc page.--> {{Documentation}} </noinclude> afaf333b451c8bb5f581afb121ef9c3c5f8b7be8 Template:In5 10 1322 2657 2018-01-19T00:30:16Z w>Primefac 0 Protected "[[Template:In5]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{{{{|safesubst:}}}#invoke:in5|in5|1={{{1|}}}}}</includeonly><noinclude> {{Documentation}} <!--[[Category:Smart formatting templates|In5]]--> </noinclude> 4c0824d7372b628cf664469045531f09fd04428b Template:Sectionlink 10 138 325 2018-01-19T00:33:18Z wikipedia>Primefac 0 Protected "[[Template:Sectionlink]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki #REDIRECT[[Template:Section link]] b1506aa42c4652e1f14405ccedd78d7061f91540 Template:UF-hcal 10 1507 2842 2018-01-19T00:34:07Z w>Primefac 0 Protected "[[Template:UF-hcal]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki {{Microformat message | format = hCalendar | data = event details | subtemplates = {{#if:{{{hide_subtemplates}}} |<noinclude>}} Dates will only be included if you use {{tl|start date}} (for single dates) or {{tl|end date}}. Do not, however, use these templates [[Wikipedia:WikiProject Microformats/dates|if a date before 1583&nbsp;CE is involved]]. To include URLs, use {{tl|URL}}. {{#if:{{{hide_subtemplates}}} |</noinclude>}} |attendee |contact |description |dtend |dtstart |location |organiser |summary |url |vevent | nocollapse = on }}<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCalendars|{{PAGENAME}}]]}} }}</includeonly><noinclude> {{Documentation |content={{Microformat message templates}}}} [[Category:Microformat (uF) message templates]] </noinclude> f453b47f676a5c474e14155f7013b69b4716748b Template:Namespace detect 10 101 249 2018-01-27T23:54:39Z wikipedia>JJMC89 0 clean subst wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> b4af86f91bea873fdb8145e7809511fed3a610ce Template:Userbox-2 10 1285 2620 2018-02-01T22:38:09Z BrownHairedGirl 49 Reverted edits by [[Special:Contribs/BrownHairedGirl|BrownHairedGirl]] ([[User talk:BrownHairedGirl|talk]]) to last version by Mr. Stradivarius wikitext text/x-wiki {{#invoke:userbox|userbox-2}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 64b78ae9b9299893580048b4a7ed50d3fd8e1e8a Template:Remove first word 10 1193 2522 2018-02-13T20:10:27Z w>WOSlinker 0 separate pp-template not needed wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:String|replace|source={{{1}}}|pattern=^[^{{{sep|%s}}}]*{{{sep|%s}}}*|replace=|plain=false}}<noinclude>{{Documentation}}</noinclude> df7a9e692f68be1581be06af5f51eaed5483b4c8 Template:Yesno-no 10 48 91 2018-02-13T20:27:17Z wikipedia>WOSlinker 0 separate pp-template not needed wikitext text/x-wiki {{safesubst:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|no}}}|¬={{{¬|no}}}|def={{{def|no}}}}}<noinclude> {{Documentation|Template:Yesno/doc}} <!--Categories go in the doc page referenced above; interwikis go in Wikidata.--> </noinclude> 1ad7b7800da1b867ead8f6ff8cef76e6201b3b56 Template:Ns0 10 1433 2768 2018-02-20T15:44:55Z Xaosflux 7 {{Rcat shell|{{R with history}}{{R from template shortcut}}}} requested on talk wikitext text/x-wiki #REDIRECT [[Template:Main other]] {{Rcat shell|{{R with history}}{{R from template shortcut}}}} 9122fb3f145931b4d9e90d3a9b8d46e21d215f67 Template:Convinfobox/sec2 10 1555 2890 2018-02-23T16:29:42Z w>Primefac 0 Changed protection level for "[[Template:Convinfobox/sec2]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{convert|{{{3}}}|{{{4}}}|{{{2}}}|{{{5|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}</includeonly><noinclude>[[Category:Subtemplates of Template Convinfobox]] </noinclude> de2102273c8b197c846ee1de461a9b1a2fb56463 Template:Convinfobox/prisec3 10 1560 2895 2018-02-23T16:29:42Z w>Primefac 0 Changed protection level for "[[Template:Convinfobox/prisec3]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{#switch:{{{4}}}{{{6}}} |ftin={{convert|{{{1}}}|{{{2}}}|ftin|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<!--ignoring {{{3}}} --> |stlb={{convert|{{{1}}}|{{{2}}}|lb stlb|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<!--ignoring {{{3}}} --> |lboz={{convert|{{{1}}}|{{{2}}}|lboz|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<!--ignoring {{{3}}} --> |{{#switch:{{{2}}}{{{4}}} |ftin={{convert|{{{1}}}|ft|{{{3}}}|in|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |stlb={{convert|{{{1}}}|st|{{{3}}}|lb|{{#ifeq:{{{6}}}|kg|kg lb|{{{6}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |lboz={{convert|{{{1}}}|lb|{{{3}}}|oz|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |{{convert|{{{1}}}|{{{2}}}|{{{4}}} {{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<!--ignoring {{{3}}} --> }} }}</includeonly><noinclude>{{pp-template|small=yes}} [[Category:Subtemplates of Template Convinfobox]] </noinclude> 3c35b4ff4e9e53c2a8ec1830e553dbccaec9678a Template:Greater color contrast ratio 10 1102 2403 2018-02-23T16:29:56Z wikipedia>Primefac 0 Changed protection level for "[[Template:Greater color contrast ratio]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{safesubst:#invoke:Color contrast|greatercontrast}}</includeonly><noinclude> {{documentation}} </noinclude> eaba2f8ea92d1caa3afd9d70142b65215c23038d Template:Ill 10 1106 2411 2018-02-23T16:29:56Z wikipedia>Primefac 0 Changed protection level for "[[Template:Ill]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Interlanguage link]] {{R from template shortcut}} 55504a3a5908b8242853cfc46ecf93ac892b00a5 Template:Link if exists 10 1432 2767 2018-02-23T16:30:08Z w>Primefac 0 Changed protection level for "[[Template:Link if exists]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki {{#if:{{{prefix|}}}|{{#ifexist:{{{prefix}}}:{{{1}}}|[[:{{{prefix}}}:{{{1}}}]]|{{{1}}}}}|{{#if:{{{nsp|}}}|{{#ifexist:{{{nsp}}}:{{{1}}}|[[:{{{nsp}}}:{{{1}}}|{{{1}}}]]|{{{1}}}}}|{{#ifexist:{{{1}}}|[[{{{1}}}]]|{{{1}}}}}}}}}<noinclude> {{Documentation}} </noinclude> 75d07d4f262e23341348d92c559cd3a033ab4efd Template:Raise 10 134 317 2018-02-23T16:30:18Z wikipedia>Primefac 0 Changed protection level for "[[Template:Raise]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <span style="position:relative; bottom:{{#if:{{{2|}}} |{{{1}}} |0.6em}};">{{{2|{{{1}}}}}}</span><noinclude>{{Documentation}}</noinclude> da747eda753555e094baeeb84eeca1be020ee399 Template:Snd 10 1026 2250 2018-02-23T16:30:27Z wikipedia>Primefac 0 Changed protection level for "[[Template:Snd]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Spaced en dash]] {{Redirect category shell| {{R from template shortcut}} }} 3b75d99127048894a5fec4237592923ea987cd13 Template:TemplateDataHeader 10 1065 2328 2018-02-23T16:30:31Z wikipedia>Primefac 0 Changed protection level for "[[Template:TemplateDataHeader]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:TemplateData header]] {{R from move}} 61e461016bcb3a0a6fc4d8aea35d590298c19630 Template:Convinfobox/prisec2 10 1181 2510 2018-02-23T17:02:12Z w>Primefac 0 Changed protection level for "[[Template:Convinfobox/prisec2]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Convinfobox/pri2]]<!--{{convert/{{{2}}}|{{{1}}}|{{{3}}}|{{{4}}}|d=valunit2/{{{d}}}}}<noinclude> [[Category:Subtemplates of Template Convinfobox]] </noinclude>--> b2680a6b956cc0cd7c35c6ea3085e03944317fb9 Template:DfE performance tables 10 1475 2810 2018-02-23T17:02:13Z w>Primefac 0 Changed protection level for "[[Template:DfE performance tables]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki [https://www.compare-school-performance.service.gov.uk/school/{{{1}}} {{#if:{{{2|}}}|{{{2}}}|Performance tables for {{{1}}}}}]<noinclude> {{Documentation}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> b866211253fb092ef9288552b4d1b09676fa053d Template:Engvar 10 1527 2862 2018-02-23T17:02:13Z w>Primefac 0 Changed protection level for "[[Template:Engvar]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki {{#invoke:Engvar|variants}}<noinclude> {{documentation}} </noinclude> 8a5e5d43fff0053bf6bd7fab7f761a6be4c05d21 Template:EduBase 10 1474 2809 2018-02-23T17:02:14Z w>Primefac 0 Changed protection level for "[[Template:EduBase]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki [https://get-information-schools.service.gov.uk/Establishments/Establishment/Details/{{{1}}} {{#if:{{{2|}}}|{{{2}}}|EduBase details for {{{1}}}}}]<noinclude> {{Documentation}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> e1b557b24590c21cd1fe38b1d92ea247ebfd199c Template:Highlight/core 10 1382 2717 2018-02-23T17:02:19Z w>Primefac 0 Changed protection level for "[[Template:Highlight/core]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <span style="background:{{{2|yellow}}}">{{{1}}}</span> f76d1f4ced4fc1f2123540938d029827d88d49d1 Template:Ofsted 10 1476 2811 2018-02-23T17:02:48Z w>Primefac 0 Changed protection level for "[[Template:Ofsted]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki [https://reports.ofsted.gov.uk/inspection-reports/find-inspection-report/provider/ELS/{{{1|{{{id|{{#property:P2253|[[Category:Ofsted template with no id set]]}}}}}}}} {{#if:{{{2|}}}|{{{2}}}|Ofsted details for unique reference number {{{1|{{{id|{{#property:P2253|}}}}}}}}}}]<noinclude> {{Documentation}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES TO THE /doc SUBPAGE, THANKS --> </noinclude> ecd37ae7a3de5338f20455a26993f9245d6a9381 Template:Details 10 1052 2302 2018-02-26T07:20:44Z wikipedia>Galobtter 0 redirect to complete merge wikitext text/x-wiki #REDIRECT [[Template:Further]] {{Redirect category shell| {{R from merge}} }} 1a90a51d85f6cb700979ea38f5f69bee0ff2c85e Template:Redirect 10 1034 2266 2018-02-27T17:34:09Z wikipedia>Primefac 0 [[Wikipedia:Templates for discussion/Log/2018 February 18#Template:Redirect3_and_Template:About2]] closed as merge ([[WP:XFDC|XFDcloser]]) wikitext text/x-wiki <includeonly>{{#invoke:redirect hatnote|redirect|1}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> c764f9cf8b31b4d5aa3e131bf254bfc78e5ba39b Module:Location map/data/United Kingdom 828 1404 2739 2018-02-28T03:30:43Z w>Plastikspork 0 Protected "[[Module:Location map/data/United Kingdom]]": [[WP:High-risk templates|High-risk Lua module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain return { name = 'the United Kingdom', top = 61, bottom = 49, left = -11, right = 2.2, image = 'United Kingdom adm location map.svg', image1 = 'United Kingdom relief location map.jpg' } 1f97510fc974e293b60c91f5c448703dd31521fc Template:Cite news 10 970 2130 2018-03-03T19:19:37Z wikipedia>Jo-Jo Eumerus 0 Per edit request on [[Help talk:Citation Style 1]] wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=news }}</includeonly><noinclude> {{documentation}} </noinclude> d8c42e9ff15cc4f8c922db4f02cd5ea0ef1c14ee Module:No ping 828 212 480 2018-03-05T11:40:46Z Revi 24 5 revisions imported Scribunto text/plain -- This module implements {{noping}}. local p = {} function p.main(frame) local args = frame:getParent().args return p._main(args) end function p._main(args) local ret = {} local fullUrl = mw.uri.fullUrl local format = string.format for i, username in ipairs(args) do local url = fullUrl(mw.site.namespaces.User.name .. ':' .. username) url = tostring(url) local label = args['label' .. tostring(i)] url = format('[%s %s]', url, label or username) ret[#ret + 1] = url end ret = mw.text.listToText(ret) ret = '<span class="plainlinks">' .. ret .. '</span>' return ret end return p 46a1de5db467e72a12dcd8726fa83fe2cc683780 Module:Location map/data/France Île-de-France 828 1452 2787 2018-03-07T04:28:24Z w>Plastikspork 0 Protected "[[Module:Location map/data/France Île-de-France]]": [[WP:High-risk templates|High-risk Lua module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain return { name = 'Île-de-France (region)', top = 49.275, bottom = 48.075, left = 1.375, right = 3.625, image = 'Ile-de-France region location map.svg', image1 = 'Ile-de-France region relief location map.jpg' } fe238fb7298a4f1392a67720ea8aa47eff1c0c03 Template:Yesno-yes 10 601 1354 2018-03-11T01:06:35Z wikipedia>JJMC89 0 allow subst wikitext text/x-wiki {{SAFESUBST:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|yes}}}|¬={{{¬|yes}}}|def={{{def|yes}}}}}<noinclude> {{Documentation|Template:Yesno/doc}} <!--Categories go in the doc page referenced above; interwikis go in Wikidata.--> </noinclude> 1644b79058ef2cece539a411edc164d98bb11ebe Module:Location map/data/Greece 828 1458 2793 2018-03-11T23:53:18Z w>Plastikspork 0 Changed protection level for "[[Module:Location map/data/Greece]]" ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain return { name = 'Greece', top = 42.0, bottom = 34.6, left = 19.1, right = 29.9, image = 'Greece location map.svg', image1 = 'Greece relief location map.jpg' } 4332f04d7e48da6122a873dfbff04a5ba2805bd3 Module:Distinguish 828 29 53 2018-04-01T10:06:10Z wikipedia>Galobtter 0 fixed with text and selfref Scribunto text/plain local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local mTableTools --initialize lazily local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} function p.distinguish(frame) mArguments = require('Module:Arguments') mTableTools = require('Module:TableTools') local args = mArguments.getArgs(frame) local selfref = args.selfref local text = args.text args = mTableTools.compressSparseArray(args) return p._distinguish(args, text, selfref) end function p._distinguish(args, text, selfref) checkType("_distinguish", 1, args, 'table') if #args == 0 and not text then return '' end local text = string.format( 'Not to be confused with %s.', text or mHatlist.orList(args, true) ) hnOptions = {selfref = selfref} return mHatnote._hatnote(text, hnOptions) end return p 0364d14af01fc656ad1d898c5036fbd12a7ca938 Template:Tree list/branching 10 487 1077 2018-04-06T09:13:27Z wikipedia>TheDJ 0 Undid revision 834547400 by [[Special:Contributions/TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) wikitext text/x-wiki <includeonly><li class="emptyline"></includeonly><noinclude> {{Documentation|Template:Tree list/doc}} </noinclude> 530e32b7119fdb2a9fcb93fdecf211a365e6541f Template:Cref2 10 1602 2937 2018-04-11T15:07:07Z w>Primefac 0 TFD closed as no consensus ([[WP:XFDC|XFDcloser]]) wikitext text/x-wiki <sup id="ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_{{urlencode:{{anchorencode:{{{2|1}}}}}}}" class="reference">[[#cnote_{{anchorencode:{{{1}}}}}{{#if:{{{group|}}}|_grp_{{anchorencode:{{{group}}}}}}}|[{{{1}}}]]]</sup><noinclude> {{Documentation}} </noinclude> fc4539b5205c7a4601c12660a4a408b38a33b48b Template:Script/Cuneiform 10 1608 2943 2018-04-11T20:56:22Z w>TheLateDentarthurdent 0 wikitext text/x-wiki <span style="font-size:125%;font-family:{{#switch: {{{1|}}} |sux |4 = Akkadian" title="Classical Sumerian cuneiform" |akk |elx |xeb |xhu |5 = Akkadian" title="Neo-Sumerian cuneiform" |hit = UllikummiA, Assurbanipal, CuneiformNA,'Noto Sans Cuneiform'" title="Hittite cuneiform"<!-- preference for Ullikummi, later cuneiform styles as last resort --!> |xht |xlu |6 = 'Free Idg Serif',Akkadian,'Noto Sans Cuneiform','Noto Sans Sumero-Akkadian Cuneiform','Segoe UI Historic';" title="Old Assyrian cuneiform"<!-- use Akkadian, Noto, and Segoe as last resort --> |7 = CuneiformNA,Assurbanipal,Akkadian,'Noto Sans Cuneiform','Noto Sans Sumero-Akkadian Cuneiform','Segoe UI Historic';" title="Neo-Assyrian cuneiform"<!-- use Akkadian, Noto, and Segoe as last resort --> |peo = Behistun, Aegean, 'Old Persian';" title="Old Persian cuneiform" |#default = 'Segoe UI Historic','Akkadian','Noto Sans Cuneiform','Noto Sans Sumero-Akkadian Cuneiform';" title="cuneiform text" }} lang="{{#switch:{{{1|}}}|akk|elx|hit|sux|xeb|xht|xhu|xlu={{{1}}}|und}}-Xsux">{{{2|{{{1}}}}}}</span><noinclude> {{documentation}} </noinclude> 9c950719d250966ef009257ce28de495f4042f9c Template:Category see also 10 1580 2915 2018-04-28T17:31:03Z BrownHairedGirl 49 use [[Template:Category see also/Category pair check]], as tested in sandbox wikitext text/x-wiki <includeonly>{{#invoke:Category see also|main}}{{Category see also/Category pair check|{{{1|}}}}}</includeonly><noinclude> {{Documentation}} </noinclude> 14ce283b0335304ba9090d85c617ea7cddea0668 Template:Navbox lists 10 632 1424 2018-05-30T19:49:39Z Ahecht 42 Ahecht moved page [[Template:Navbox lists]] to [[Template:HTML lists]]: title is "HTML lists" wikitext text/x-wiki #REDIRECT [[Template:HTML lists]] {{R from move}} 8b26162bd61fb3a71c7bbf97d6b1aff6ba54020e Module:Based on 828 1263 2597 2018-07-08T02:54:33Z w>Alex 21 0 Include space Scribunto text/plain local p = {} function p.lua_main(frame) local s = frame.args[1] if frame.args[3] then local args = {} for i, v in ipairs(frame.args) do if i >= 2 then args[#args+1] = v end end args['style'] = 'display: inline' args['list_style'] = 'display: inline' args['item1_style'] = 'display: inline' h = mw.html.create('div') h:wikitext(s) h:tag('br') -- h:newline() is not working for some reason h:wikitext('by ') h:wikitext(frame:expandTemplate{ title = 'Unbulleted list', args = args }) return h elseif frame.args[2] then s = s .. '<br />by ' .. frame.args[2] return s end return s end function p.main(frame) return p.lua_main(frame:getParent()) end return p f339a89d130bc03d93a1769df04b16e520723fbf Template:For loop 10 568 1284 2018-07-23T22:55:18Z Pppery 6 Merge complete wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:For loop|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 12b7b7010fe32f888e21bcdfa6a904fc8a925437 Template:Asbox 10 755 1685 2018-07-24T20:05:09Z wikipedia>RMCD bot 0 Removing notice of move discussion wikitext text/x-wiki <includeonly>{{#invoke:Asbox|main}}</includeonly><noinclude> {{documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata. --> </noinclude> b20553d60f223a0f36a3089524989e235d379b74 Template:Tag 10 573 1294 2018-07-26T17:17:13Z wikipedia>SMcCandlish 0 These are called attributes; no one who does HTML calls them "parameters". wikitext text/x-wiki <code class="{{#ifeq:{{{wrap|}}}|yes|wrap|nowrap}}" style="{{#ifeq:{{{style|}}}|plain|border:none;background:transparent;|{{{style|}}}}}"><!-- Opening tag -->{{#switch:{{{2|pair}}} |c|close = |e|empty|s|single|v|void |o|open |p|pair = &lt;{{#if:{{{link|}}}|[[HTML element#{{{1|tag}}}|{{{1|tag}}}]]|{{{1|tag}}}}}{{#if:{{{params|{{{attribs|}}}}}}|&#32;{{{params|{{{attribs}}}}}}}} }}<!-- Content between tags -->{{#switch:{{{2|pair}}} |c|close = {{{content|}}} |e|empty|s|single|v|void = &#32;&#47;&gt; |o|open = &gt;{{{content|}}} |p|pair = {{#ifeq:{{{1|tag}}}|!--||&gt;}}{{{content|...}}} }}<!-- Closing tag -->{{#switch:{{{2|pair}}} |e|empty|s|single|v|void |o|open = |c|close |p|pair = {{#ifeq:{{{1|tag}}}|!--|--&gt;|&lt;&#47;{{{1|tag}}}&gt;}} }}<!-- --></code><noinclude> {{Documentation}} </noinclude> eae208bc1612c834de697fa3ee9b343966cf8602 Template:Flowlist/styles.css 10 619 1396 2018-07-27T12:35:42Z wikipedia>Galobtter 0 attribution: from [[MediaWiki:Common.css]] sanitized-css text/css .flowlist ul { overflow-x: hidden; margin-left: 0; padding-left: 1.6em; } .flowlist ol { overflow-x: hidden; margin-left: 0; padding-left: 3.2em; } .flowlist dl { overflow-x: hidden; } 9e1541baa2f3cc3d7b4d7ac39f073f3a43a91c06 Template:Further 10 982 2158 2018-07-27T17:29:22Z wikipedia>Galobtter 0 fix so that don't need [[Module:Further]] anymore wikitext text/x-wiki <includeonly>{{#invoke:labelled list hatnote|labelledList|Further information{{#if:{{{topic|}}}|&#32;on {{{topic|}}}}}}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> dd29c6dfb3894a2dc3f20144a654b7012c9a9214 Template:Infobox mapframe 10 1431 2766 2018-08-01T10:02:30Z Oshwah 51 Protected "[[Template:Infobox mapframe]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Infobox mapframe|main}}</includeonly><noinclude>{{Infobox mapframe|id=Q100}} {{Documentation}} </noinclude> 2e2f2b0dae1b73b5eb1f58d9070b6b1e3db462e1 Template:Offer help 10 144 337 2018-08-09T06:26:26Z Anomalocaris 21 {{smaller|{{hatnote...}}}} → {{hatnote|{{smaller...}}}} because {{smaller}} uses <span> and {{hatnote}} uses <div> and <span> can't wrap <div> wikitext text/x-wiki {{Hatnote|{{smaller|'''Find this page confusing? {{edit|Special:MyTalk|Just use this link to ask for help on your talk page|section=new|preload=Help:Contents/helpmepreload|preloadtitle=Help me!}}; a volunteer will visit you there shortly!'''}}}} <noinclude> [[Category:Hatnote templates]] [[Category:Wikipedia help templates]] </noinclude> 081a2d2e563a98d43f291dc22865004902a44ce0 Template:Infobox former country 10 1218 2547 2018-08-12T22:08:56Z w>Primefac 0 merge complete wikitext text/x-wiki #REDIRECT [[Template:Infobox country]] {{r from merger}} d1a087676a1c1fbf80c00fb58bf83cff967f7de4 Template:Infobox 10 86 2438 2018-08-15T18:33:36Z w>Primefac 0 Undid revision 855063393 by [[Special:Contributions/Jdlrobson|Jdlrobson]] ([[User talk:Jdlrobson|talk]]) rather problematic change mentioned [[Template_talk:Infobox#Using_template_styles_to_reduce_technical_debt_inside_mobile_skin|on talk page]], reverting until it can be sorted wikitext text/x-wiki {{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude> {{documentation}} <!-- Categories go in the /doc subpage, and interwikis go in Wikidata. --> </noinclude> 817a9f5b6524eced06a57bd1d5fd7179f9369bf2 Template:Help navigation 10 149 346 2018-09-02T18:31:09Z wikipedia>Senator2029 0 Rcats wikitext text/x-wiki #REDIRECT [[Template:Wikipedia help pages]] {{R from template shortcut}} {{R from move}} c8dc8546e49bfbe586503ce5abeeee1590843b2d Module:WPMILHIST Infobox style 828 1100 2399 2018-09-21T22:30:21Z wikipedia>Frietjes 0 slightly larger for [[Operation Fritham]] Scribunto text/plain local retval = { main_box_raw_auto_width = 'border-spacing:2px;', header_raw = 'background-color:#C3D6EF;text-align:center;vertical-align:middle;font-size:110%;', sub_header_raw = 'background-color:#DCDCDC;text-align:center;vertical-align:middle;', header_color = 'background-color:#C3D6EF;', nav_box = 'margin:0;float:right;clear:right;width:25.5em;margin-bottom:0.5em;margin-left:1em;', nav_box_child = 'margin:0;float:right;clear:right;width:25em;margin-bottom:0.5em;', nav_box_wide = '', nav_box_header = 'background-color:#C3D6EF;', nav_box_wide_header = 'background-color:#C3D6EF;', nav_box_label = 'background-color:#DCDCDC;', image_box_raw = 'text-align:center;border-bottom:1px solid #aaa;line-height:1.5em;', image_box_plain_raw = 'text-align:center;line-height:1.5em;', internal_border = '1px dotted #aaa;', section_border = '1px solid #aaa;' } retval.main_box_raw = 'width:25.5em;' .. retval.main_box_raw_auto_width retval.header_bar = 'style="' .. retval.header_raw .. '"' retval.sub_header_bar = 'style="' .. retval.sub_header_raw .. '"' retval.image_box = 'style="' .. retval.image_box_raw .. '"' retval.image_box_plain = 'style="' .. retval.image_box_plain_raw .. '"' return retval 0f9ea47bc17e40cdabbae6de54f63e40ae502f8e Template:Infobox cabinet members 10 1155 2481 2018-09-22T23:39:47Z w>Zackmann08 0 Use the new module again wikitext text/x-wiki {{#invoke:Infobox cabinet members|infobox}}<noinclude> {{documentation}} </noinclude> 18dd2deb87b06f977c67ee3b5d9e2118c3dc32ee Template:Infobox French royalty styles 10 1127 2452 2018-10-09T20:54:49Z w>DePiep 0 wikitext text/x-wiki {{Infobox manner of address | background = #6495ED | color = #000066 | type = Royal | name = {{{name|{{<includeonly>safesubst:</includeonly>PAGENAMEBASE}}}}} | image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}} | kingdom = France moderne.svg | old = France Ancient.svg | own = {{{image|}}} | #default = France moderne.svg }} | image2 = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}} | kingdom = Navarre Shield.svg | #default = }} | size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|50px}} | reference = {{{dipstyle<includeonly>|</includeonly>}}} | spoken = {{{offstyle<includeonly>|</includeonly>}}} | alternative = {{{altstyle<includeonly>|</includeonly>}}} }}{{<includeonly>safesubst:</includeonly>#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_]]}}|preview=Page using [[Template:Infobox French royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | altstyle | dipstyle | image | image_size | name | offstyle }}<noinclude> {{documentation}} <!-- add categories and interwikis to Template:Infobox French Royalty styles/doc --> </noinclude> ee72504e5dedf043a3a2f8220bf171a2e5e7a11e Template:Tree list 10 483 1065 2018-10-23T17:14:48Z wikipedia>Frietjes 0 wikitext text/x-wiki <templatestyles src="Tree list/styles.css" /><!-- --><div class="treeview"><noinclude> </div> {{Documentation}} </noinclude> 3c3df2fc2f0185fa60fd2fdde34e5b13181ff42f Template:Noitalic 10 1543 2878 2018-10-23T17:14:56Z w>Frietjes 0 wikitext text/x-wiki <templatestyles src="Noitalic/styles.css"/><span class="noitalic">{{{1}}}</span><noinclude> {{documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> b6c6960cde0b0f24db007ad9e43851203c95069d Template:Nobold 10 14 23 2018-10-23T17:15:13Z wikipedia>Frietjes 0 wikitext text/x-wiki <templatestyles src="Nobold/styles.css"/><span class="nobold">{{{1}}}</span><noinclude> {{documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 9c92b5951772bb26ca0fbe9256418b65e47700dd Template:Navbox with collapsible groups 10 1541 2876 2018-10-26T16:36:20Z w>Frietjes 0 use lua version; will temporarily save the old version in the sandbox for comparison in the testcases wikitext text/x-wiki {{#invoke:Navbox with collapsible groups|navbox}}<noinclude> {{documentation}} </noinclude> a44295b44aa63f852f43d5a21b90ff395fbfcf4e Template:Infobox royal styles 10 1131 2456 2018-11-10T14:57:24Z w>Frietjes 0 expand infoboximage, this is handled by the parent template wikitext text/x-wiki {{Infobox manner of address | background = #CCBBEE | colour = #000066 | name = {{{name<includeonly>|{{{royal name|}}}</includeonly>}}} | image = {{{image|}}} | size = {{{image_size|}}} | image_alt = {{{image_alt|}}} | reference = {{{reference<includeonly>|{{{dipstyle|}}}</includeonly>}}} | spoken = {{{spoken<includeonly>|{{{offstyle|}}}</includeonly>}}} | alternative = {{br separated entries | {{{alternative<includeonly>|{{{altstyle|}}}</includeonly>}}} | {{{{{|safesubst:}}}#if:{{{lang|}}}| {{{lang}}}: {{{altlang|}}} }} }} }}<noinclude>{{documentation}}</noinclude> c3f747e4827e3d6c75e7bdd37a2cf72bbe32af2a Template:Tracks Wikidata 10 1255 2589 2018-11-12T18:34:23Z w>Frietjes 0 use svg composite image to reduce overhead wikitext text/x-wiki {{Sister project | image = [[File:Wikidata-logo-with-magnifying-glass-icon.svg|40px|link=Wikipedia:Wikidata]] | position = {{{position|}}} | text = This {{template other | template | {{module other | module | {{category other | category | page <!-- not template, module, or category --> }} }} }} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see [[#{{{section}}}|§&nbsp;{{{section}}}]] for details. | the [[Wikidata]] propert{{#if:{{{2|}}}|ies:|y:}} {{#invoke:Uses Wikidata|usesProperty}} }} }}<includeonly>{{#switch:{{SUBPAGENAME}} |sandbox |testcases |doc= <!--no category--> |#default = {{template other | [[Category:Templates tracking Wikidata]] | {{module other | [[Category:Modules tracking Wikidata]] | {{category other | <!-- if used in a category, don't automatically add parent category --> | <!-- not template, module, or category --> }} }} }} }}</includeonly><noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc sub-page --> </noinclude> 6a945044f5d5ab2a4623ed832c541d35146e740a Template:Nbsp 10 1443 2778 2018-11-19T18:04:40Z w>Amorymeltzer 0 {{R from template shortcut}} wikitext text/x-wiki #REDIRECT [[Template:Spaces]] {{Redirect category shell| {{R from move}} {{R from alternative name}} {{R from template shortcut}} }} 13b85f36a53a9f13b06535afaa4c19339f1ea4b6 Template:Country data Slovenia 10 1209 2538 2018-11-28T21:46:29Z w>Illegitimate Barrister 0 wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Slovenia | flag alias = Flag of Slovenia.svg | link alias-army = Slovenian Ground Force | link alias-military=Slovenian Armed Forces | flag alias-military=Flag of the Slovenian Armed Forces.svg | flag alias-naval=Naval Jack of Slovenia.svg | link alias-naval=Slovenian Navy | link-alias-navy=Slovenian Navy | size = {{{size|}}} | variant = {{{variant|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} <noinclude> | redir1 = SVN | redir2 = SLO | related1 = SR Slovenia </noinclude> }} 68574d7f8429700e25b2100ce323c396d0954025 Module:Interval 828 1070 2338 2018-11-29T01:11:27Z wikipedia>Anomie 0 Changed protection level for "[[Module:Interval]]": Syncing protection from formerly cascade-protected [[Template:ACEWatchlistNotice]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) Scribunto text/plain -- This module powers {{interval}}. local p = {} -- Constants local lang = mw.language.getContentLanguage() local getArgs = require('Module:Arguments').getArgs local function getArgNums(args) -- Returns an array containing the keys of all positional arguments -- that contain data (i.e. non-whitespace values). -- (from Module:Unbulleted_list) local nums = {} for k, v in pairs(args) do if type(k) == 'number' and k >= 1 and math.floor(k) == k and mw.ustring.match(v, '%S') then table.insert(nums, k) end end table.sort(nums) return nums end function p.main(frame) local args = getArgs(frame) return p._main(args) end function p._main(args) local n, rule, format = args.n, args.rule, args.format local numbers = getArgNums(args) local low, high, lowpos, highpos = nil, nil, 0, #numbers + 1 -- If comparing times, convert them all to seconds after the epoch if format == 'time' then if n then n = lang:formatDate('U', '@' .. n) else n = os.time() -- Set n to now if no time provided end end n = tonumber(n) for i, num in ipairs(numbers) do local interval if format == 'time' then interval = tonumber(lang:formatDate('U', '@' .. args[num])) else interval = tonumber(args[num]) end if n and ((n >= interval and not rule) or (n > interval and rule == '>')) then low = interval lowpos = num else high = high and math.min(interval, high) or interval if high == interval then highpos = num end end end return lowpos .. '-' .. highpos end return p e9162c263908d88338f24fa3293ff72adfbc9277 Template:TOC limit 10 978 2150 2018-12-07T07:36:09Z wikipedia>TheDJ 0 Use template styles wikitext text/x-wiki <templatestyles src="Template:TOC limit/styles.css" /><div class="toclimit-{{{1|{{{limit|3}}}}}}">__TOC__</div><noinclude> {{documentation}} </noinclude> 76fd91b1053a09dfa5aece7e60e48693d38dfc03 Template:Format item 10 579 1306 2018-12-07T07:48:58Z MusikAnimal 4 Protected "[[Template:Format item]]": [[Wikipedia:High-risk templates|High-risk template]] ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Item|format}}</includeonly><noinclude> {{doc}} </noinclude> 0de34fe93b7513b034123ce1c532fd0f2df896dc Template:Item 10 580 1308 2018-12-07T07:48:58Z MusikAnimal 4 Protected "[[Template:Item]]": [[Wikipedia:High-risk templates|High-risk template]] ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Item|pack}}</includeonly><noinclude> {{doc}} </noinclude> 2a8d49a45be839260ad83d33fa73c804d0a39e55 Template:Oldid 10 1289 2624 2018-12-10T20:41:24Z w>Jonesey95 0 rm stray trailing space, per talk page request wikitext text/x-wiki <span class="plainlinks">[{{fullurl:{{{page|{{{1|Main Page}}}}}}|oldid={{{oldid|{{{2|}}}}}}}} {{{label|{{{title|{{{3|{{#if:{{{oldid|{{{2|}}}}}}|Old revision|Current version}} of {{#if:{{{page|{{{1|}}}}}}|'''{{{page|{{{1}}}}}}'''|a page}}}}}}}}}}}]</span><noinclude> {{documentation}} </noinclude> 4a42ae0cc77ec0385d4b6508c5d3f366db39ecdb Template:Flagdeco 10 1721 3244 2018-12-16T14:05:04Z wikipedia>Frietjes 0 wikitext text/x-wiki <includeonly>{{#ifeq: {{Yesno-no|{{{noredlink|}}}}}|yes<!-- -->|<!-- #Check for existence of Template: Country data foo before invoking it -->{{#ifexist: Template: Country data {{{1|}}}<!-- -->|<!-- # It exists, so proceed -->{{country data {{{1|}}}|flagdeco/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<!-- -->|<!-- # It doesn't exist, so do nothing -->}}<!-- -->|<!-- # DEFAULT call Template: Country data {{{1|}}} # with no prior checks -->{{country data {{{1|}}}|flagdeco/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<!-- # Track use where "Template:Country data Foo" does not exist -->{{#ifexist: Template:Country data {{{1|}}}||{{namespace detect showall | 1 = | 2 = [[Category:Flagdeco with missing country data templates]] | user = 1 | talk = 1 | other = 2 }}}}<!-- -->}}</includeonly><noinclude> {{Documentation}} </noinclude> 2cd50bb91e18505de93484a7348c92b68745dbf9 Template:!) 10 1171 2500 2018-12-16T17:33:17Z w>Amorymeltzer 0 Changed protection level for "[[Template:!)]]": [[WP:High-risk templates|Highly visible template]]: 200k+ transclusions ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki |}<noinclude> {{Documentation}} </noinclude> 4708392952b330b1c5bf605bc6fc76222b1609d2 Template:Category handler 10 1085 2369 2018-12-16T20:13:00Z wikipedia>Amorymeltzer 0 Changed protection level for "[[Template:Category handler]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki {{#invoke:Category handler|main}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, and interwikis to Wikidata. --> </noinclude> d14e9f545cf1833acbe174ae70b615c39b18cf63 Template:Template other 10 25 45 2018-12-16T22:06:25Z wikipedia>Amorymeltzer 0 Changed protection level for "[[Template:Template other]]": [[WP:High-risk templates|Highly visible template]]: Transclusion count has increased dramatically ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Template}} | template | other }} }} | template = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 06fb13d264df967b5232141067eb7d2b67372d76 Template:MONTHNUMBER 10 1341 2676 2018-12-17T15:25:23Z w>Amorymeltzer 0 Changed protection level for "[[Template:MONTHNUMBER]]": Allow template editor access, see [[Template:MONTHNAME]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{#if:{{{1|}}} |{{#switch:{{lc:{{{1}}}}} |january|jan=1 |february|feb=2 |march|mar=3 |apr|april=4 |may=5 |june|jun=6 |july|jul=7 |august|aug=8 |september|sep|sept=9 |october|oct=10 |november|nov=11 |december|dec=12 |{{#ifexpr:{{{1}}}<0 |{{#ifexpr:(({{{1}}})round 0)!=({{{1}}}) |{{#expr:12-(((0.5-({{{1}}}))round 0)mod 12)}} |{{#expr:12-(((11.5-({{{1}}}))round 0)mod 12)}} }} |{{#expr:(((10.5+{{{1}}})round 0)mod 12)+1}} }} }} |Missing required parameter 1=''month''! }}</includeonly><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> c2ade663b96231e493986cd17b454923da290098 Module:Separated entries 828 165 383 2018-12-17T20:54:33Z wikipedia>Amorymeltzer 0 Changed protection level for "[[Module:Separated entries]]": [[WP:High-risk templates|High-risk Lua module]]: Over 2M transclusions ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) Scribunto text/plain -- This module takes positional parameters as input and concatenates them with -- an optional separator. The final separator (the "conjunction") can be -- specified independently, enabling natural-language lists like -- "foo, bar, baz and qux". The starting parameter can also be specified. local compressSparseArray = require('Module:TableTools').compressSparseArray local p = {} function p._main(args) local separator = args.separator -- Decode (convert to Unicode) HTML escape sequences, such as "&#32;" for space. and mw.text.decode(args.separator) or '' local conjunction = args.conjunction and mw.text.decode(args.conjunction) or separator -- Discard values before the starting parameter. local start = tonumber(args.start) if start then for i = 1, start - 1 do args[i] = nil end end -- Discard named parameters. local values = compressSparseArray(args) return mw.text.listToText(values, separator, conjunction) end local function makeInvokeFunction(separator, conjunction, first) return function (frame) local args = require('Module:Arguments').getArgs(frame) args.separator = separator or args.separator args.conjunction = conjunction or args.conjunction args.first = first or args.first return p._main(args) end end p.main = makeInvokeFunction() p.br = makeInvokeFunction('<br />') p.comma = makeInvokeFunction(mw.message.new('comma-separator'):plain()) return p e80231ff3de01afd7f62a94e0a34dc1e67504085 Template:Getalias 10 1466 2801 2018-12-18T17:22:20Z w>Frietjes 0 Undid revision 874341463 by [[Special:Contributions/Frietjes|Frietjes]] ([[User talk:Frietjes|talk]]) wikitext text/x-wiki {{country data {{{1}}}|getalias/core|name={{{2|}}}|variant={{{variant|{{{3|}}}}}}}}<noinclude> {{documentation}} </noinclude> 5b427cd2c7117883f1c5abf4e355f7a28f7dfa03 Module:Location map/info 828 1637 2989 2018-12-19T19:56:18Z wikipedia>Frietjes 0 use while loop Scribunto text/plain local p = {} function p.main(frame) local map = mw.loadData(string.gsub(mw.title.getCurrentTitle().prefixedText,'/doc$','')) local retval = [=[{| class="wikitable" style="text-align:center; margin-top:0;" |+ Location map of ]=] .. map.name .. '\n' .. [=[ |- ! name |colspan="3"| ]=] .. map.name .. [=[ |- ]=] if map.top then retval = retval .. [=[!rowspan="4"|border<br/>coordinates |- |colspan="3"| ]=] .. map.top .. '\n' .. [=[ |- |style="width:7em;"| ]=] .. map.left .. '\n' .. [=[ | ←↕→ |style="width:7em;"| ]=] .. map.right if map.right > 180 then retval = retval .. ' (' .. map.right - 360 .. ')' end retval = retval .. '\n' .. [=[ |- |colspan="3"| ]=] .. map.bottom .. '\n' .. [=[ |- ! map center |colspan="4"| ]=] local width = (map.right - map.left) % 360 if width == 0 then width = 360 end local center = (map.left + width/2) % 360 if center >= 180 then center = center - 360 end retval = retval .. frame:expandTemplate{title = 'coord', args = { (map.top + map.bottom)/2, center }} retval = retval .. '\n' .. [=[ |-]=] end if map.x then retval = retval .. '\n' .. [=[ ! x |colspan="3" style="overflow: auto; white-space: auto; width: 350px"| ]=] .. map.x .. '\n' .. [=[ |- ! y |colspan="3" style="overflow: auto; white-space: auto; width: 350px"| ]=] .. map.y .. '\n' .. [=[ |-]=] end retval = retval .. '\n' .. [=[ ! image |colspan="3"| <code>[[:File:]=] .. map.image .. '|' .. map.image .. [=[]]</code> |- |colspan="4"|[[File:]=] .. map.image .. [=[|400x400px]] |-]=] local i = 0 while map['image' .. (i+1)] or map['image' .. (i+2)] do i = i + 1 if map['image' .. i] then retval = retval .. '\n' .. [=[ ! image]=] .. i .. '\n' .. [=[ |colspan="3"| <code>[[:File:]=] .. map['image' .. i] .. '|' .. map['image' .. i] .. [=[]]</code> |- |colspan="4"|[[File:]=] .. map['image' .. i] .. [=[|400x400px]] |-]=] end end if map.skew then retval = retval .. '\n' .. [=[ ! skew |colspan="3"| ]=] .. map.skew .. '\n' .. [=[ |-]=] end if map.lat_skew then retval = retval .. '\n' .. [=[ ! lat_skew |colspan="3"| ]=] .. map.lat_skew .. '\n' .. [=[ |-]=] end if map.mark then retval = retval .. '\n' .. [=[ ! mark |colspan="3"| <code>[[:File:]=] .. map.mark .. '|' .. map.mark .. [=[]]</code> |-]=] end if map.marksize then retval = retval .. '\n' .. [=[ ! marksize |colspan="3"| ]=] .. map.marksize .. '\n' .. [=[ |-]=] end retval = retval .. '\n|}' return retval end return p 6de577a38f924784dc5d0f48ae864c6199f783ed Template:Wikipedia glossary 10 147 343 2018-12-29T19:34:03Z wikipedia>AlanM1 0 Undid revision 875859439 by [[Special:Contributions/2601:5CB:C100:7F81:A918:9ACD:1FCC:CEE1|2601:5CB:C100:7F81:A918:9ACD:1FCC:CEE1]] ([[User talk:2601:5CB:C100:7F81:A918:9ACD:1FCC:CEE1|talk]]) Rv apparent test wikitext text/x-wiki {{Side box | imageright = [[File:Wiki letter w.svg]] | text = This page is referenced in the {{#if:{{{1|}}} |Wikipedia Glossary, under [[Wikipedia:Glossary#{{{1}}}|{{{1}}}]] |{{nowrap|[[Wikipedia:Glossary|Wikipedia Glossary]]}} }}. | class = plainlinks }}<includeonly>{{#switch:{{NAMESPACE}} |Help|Wikipedia={{#if:{{{nocat|{{{category|}}}}}}||[[Category:Wikipedia glossary items]]}} |User={{#ifeq:{{YesNo-No|{{{category}}}}}|yes|[[Category:Wikipedia glossary items]]}} |#default= }}</includeonly><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 4287695cf50f15b3de9f5acbe926e13d83cb1ef4 Module:Color contrast 828 148 1360 2019-01-06T22:38:25Z wikipedia>Johnuniq 0 fix unintended color2lum global error which is causing errors; clean whitespace Scribunto text/plain -- -- This module implements -- {{Color contrast ratio}} -- {{Greater color contrast ratio}} -- {{ColorToLum}} -- {{RGBColorToLum}} -- local p = {} local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' ) local function sRGB (v) if (v <= 0.03928) then v = v / 12.92 else v = math.pow((v+0.055)/1.055, 2.4) end return v end local function rgbdec2lum(R, G, B) if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255) else return '' end end local function hsl2lum(h, s, l) if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then local c = (1 - math.abs(2*l - 1))*s local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) ) local m = l - c/2 local r, g, b = m, m, m if( 0 <= h and h < 60 ) then r = r + c g = g + x elseif( 60 <= h and h < 120 ) then r = r + x g = g + c elseif( 120 <= h and h < 180 ) then g = g + c b = b + x elseif( 180 <= h and h < 240 ) then g = g + x b = b + c elseif( 240 <= h and h < 300 ) then r = r + x b = b + c elseif( 300 <= h and h < 360 ) then r = r + c b = b + x end return rgbdec2lum(255*r, 255*g, 255*b) else return '' end end local function color2lum(c) if (c == nil) then return '' end -- html '#' entity c = c:gsub("&#35;", "#") -- whitespace c = c:match( '^%s*(.-)[%s;]*$' ) -- unstrip nowiki strip markers c = mw.text.unstripNoWiki(c) -- lowercase c = c:lower() -- first try to look it up local L = HTMLcolor[c] if (L ~= nil) then return L end -- convert from hsl if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100) end -- convert from rgb if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$') return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B)) end -- convert from rgb percent if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100) end -- remove leading # (if there is one) and whitespace c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$') -- split into rgb local cs = mw.text.split(c or '', '') if( #cs == 6 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2]) local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4]) local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6]) return rgbdec2lum(R, G, B) elseif ( #cs == 3 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1]) local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2]) local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3]) return rgbdec2lum(R, G, B) end -- failure, return blank return '' end -- This exports the function for use in other modules. -- The colour is passed as a string. function p._lum(color) return color2lum(color) end function p._greatercontrast(args) local bias = tonumber(args['bias'] or '0') or 0 local css = (args['css'] and args['css'] ~= '') and true or false local v1 = color2lum(args[1] or '') local c2 = args[2] or '#FFFFFF' local v2 = color2lum(c2) local c3 = args[3] or '#000000' local v3 = color2lum(c3) local ratio1 = -1; local ratio2 = -1; if (type(v1) == 'number' and type(v2) == 'number') then ratio1 = (v2 + 0.05)/(v1 + 0.05) ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1 end if (type(v1) == 'number' and type(v3) == 'number') then ratio2 = (v3 + 0.05)/(v1 + 0.05) ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2 end if css then local c1 = args[1] or '' if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c1 = '#' .. c1 end if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c2 = '#' .. c2 end if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c3 = '#' .. c3 end return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';' end return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '' end function p._ratio(args) local v1 = color2lum(args[1]) local v2 = color2lum(args[2]) if (type(v1) == 'number' and type(v2) == 'number') then -- v1 should be the brighter of the two. if v2 > v1 then v1, v2 = v2, v1 end return (v1 + 0.05)/(v2 + 0.05) else return args['error'] or '?' end end function p._styleratio(args) local style = (args[1] or ''):lower() local bg, fg = 'white', 'black' local lum_bg, lum_fg = 1, 0 if args[2] then local lum = color2lum(args[2]) if lum ~= '' then bg, lum_bg = args[2], lum end end if args[3] then local lum = color2lum(args[3]) if lum ~= '' then fg, lum_fg = args[3], lum end end local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '&#35;', '#'), ';') for k = 1,#slist do local s = slist[k] local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' ) k = k or '' v = v or '' if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_bg = v, lum end elseif (k:match('^[%s]*(color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_fg = v, lum end end end if lum_bg > lum_fg then return (lum_bg + 0.05)/(lum_fg + 0.05) else return (lum_fg + 0.05)/(lum_bg + 0.05) end end --[[ Use {{#invoke:Color contrast|somecolor}} directly or {{#invoke:Color contrast}} from a wrapper template. Parameters: -- |1= — required; A color to check. --]] function p.lum(frame) local color = frame.args[1] or frame:getParent().args[1] return p._lum(color) end function p.ratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._ratio(args) end function p.styleratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._styleratio(args) end function p.greatercontrast(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._greatercontrast(args) end return p 1e399769117591366a63f62996c9a407077cc711 Template:FULLBASEPAGENAME 10 1269 2603 2019-01-07T15:38:13Z w>Bsherr 0 bypassing redirect, removing excess white space wikitext text/x-wiki {{#if: {{Ns has subpages | {{#if:{{{1|}}}|{{NAMESPACE:{{{1}}}}}|{{NAMESPACE}}}} }} | {{#if: {{#titleparts:{{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}|-1}} | {{#titleparts:{{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}|-1}} | {{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}} }} | {{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}} }}<noinclude> {{documentation}} </noinclude> a21f32ffc20eab6d41631b3fb8af4c63e153a6c3 Template:Death date and age 10 1355 2690 2019-01-07T22:52:46Z w>Johnuniq 0 update from sandbox: use [[Module:Age]] for better checking of dates and more consistent results wikitext text/x-wiki <includeonly>{{{{{♥|safesubst:}}}#invoke:age|death_date_and_age}}</includeonly><noinclude>{{documentation}}</noinclude> ea101f2e404c144901a5394890ee3b892075c848 Template:Country data Portugal 10 1196 2525 2019-01-12T11:28:17Z w>Cabayi 0 Per [[Special:Permalink/878009113#Template-protected edit request on 7 January 2019|request]] by [[User:Havsjö]] wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Portugal | flag alias = Flag of Portugal.svg | flag alias-1248 = PortugueseFlag1248.svg | flag alias-1385 = PortugueseFlag1385.svg | flag alias-1495 = Flag Portugal (1495).svg | flag alias-1578 = Flag Portugal (1578).svg | flag alias-1640 = Flag Portugal (1640).svg | flag alias-1707 = Flag Portugal (1707).svg | flag alias-1750 = Flag of Portugal (1750).svg | flag alias-1816 = Flag of the United Kingdom of Portugal, Brazil, and the Algarves.svg | flag alias-1830 = Flag Portugal (1830).svg | flag alias-civil = Flag Portugal sea (1830).svg | flag alias-air force=Portugal Air force fin flash.svg | flag alias-army = Military flag of Portugal.svg | link alias-air force = Portuguese Air Force | link alias-army = Portuguese Army | link alias-naval = Portuguese Navy | flag alias-navy=Naval Jack of Portugal.svg | link alias-navy = Portuguese Navy | flag alias-marines=Naval Jack of Portugal.svg | link alias-marines=Portuguese Marine Corps | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1248 | var2 = 1385 | var3 = 1495 | var4 = 1578 | var5 = 1640 | var6 = 1707 | var7 = 1750 | var8 = 1816 | var9 = 1830 | var13 = civil | redir1 = PRT | redir2 = POR | related1 = Portuguese Empire </noinclude> }} 208ba0708db45e46bb27b8b9f46d8c0b7b4bb9ed Module:Color contrast/colors 828 150 1362 2019-01-24T12:30:11Z wikipedia>Galobtter 0 Changed protection level for "[[Module:Color contrast/colors]]": [[WP:High-risk templates|High-risk Lua module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain return { aliceblue = 0.92880068253475, antiquewhite = 0.84646951707754, aqua = 0.7874, aquamarine = 0.8078549208338, azure = 0.97265264954166, beige = 0.8988459998705, bisque = 0.80732327372979, black = 0, blanchedalmond = 0.85084439608156, blue = 0.0722, blueviolet = 0.12622014321946, brown = 0.098224287876511, burlywood = 0.51559844533893, cadetblue = 0.29424681085422, chartreuse = 0.76032025902623, chocolate = 0.23898526114557, coral = 0.37017930872924, cornflowerblue = 0.30318641994179, cornsilk = 0.93562110372965, crimson = 0.16042199953026, cyan = 0.7874, darkblue = 0.018640801980939, darkcyan = 0.20329317839046, darkgoldenrod = 0.27264703559993, darkgray = 0.39675523072563, darkgreen = 0.091143429047575, darkgrey = 0.39675523072563, darkkhaki = 0.45747326349994, darkmagenta = 0.07353047651207, darkolivegreen = 0.12651920884889, darkorange = 0.40016167026524, darkorchid = 0.13413142174857, darkred = 0.054889674531132, darksalmon = 0.40541471563381, darkseagreen = 0.43789249325969, darkslateblue = 0.065792846227988, darkslategray = 0.067608151928044, darkslategrey = 0.067608151928044, darkturquoise = 0.4874606277449, darkviolet = 0.10999048339343, deeppink = 0.23866895828276, deepskyblue = 0.44481603395575, dimgray = 0.14126329114027, dimgrey = 0.14126329114027, dodgerblue = 0.27442536991456, firebrick = 0.10724525535015, floralwhite = 0.95922484825004, forestgreen = 0.18920812076002, fuchsia = 0.2848, gainsboro = 0.71569350050648, ghostwhite = 0.94311261886323, gold = 0.69860877428159, goldenrod = 0.41919977809569, gray = 0.2158605001139, green = 0.15438342968146, greenyellow = 0.80609472611453, grey = 0.2158605001139, honeydew = 0.96336535554782, hotpink = 0.34658438169715, indianred = 0.21406134963884, indigo = 0.03107561486337, ivory = 0.99071270600615, khaki = 0.77012343394121, lavender = 0.80318750514521, lavenderblush = 0.90172748631046, lawngreen = 0.73905893124963, lemonchiffon = 0.94038992245622, lightblue = 0.63709141280807, lightcoral = 0.35522120733135, lightcyan = 0.94587293494829, lightgoldenrodyellow = 0.93348351018297, lightgray = 0.65140563741982, lightgreen = 0.69091979956865, lightgrey = 0.65140563741982, lightpink = 0.58566152734898, lightsalmon = 0.4780675225206, lightseagreen = 0.35050145117042, lightskyblue = 0.56195637618331, lightslategray = 0.23830165007287, lightslategrey = 0.23830165007287, lightsteelblue = 0.53983888284666, lightyellow = 0.98161818392882, lime = 0.7152, limegreen = 0.44571042246098, linen = 0.88357340984379, magenta = 0.2848, maroon = 0.045891942324215, mediumaquamarine = 0.49389703310801, mediumblue = 0.044077780212328, mediumorchid = 0.21639251153773, mediumpurple = 0.22905858091648, mediumseagreen = 0.34393112338131, mediumslateblue = 0.20284629471622, mediumspringgreen = 0.70704308194184, mediumturquoise = 0.5133827926448, mediumvioletred = 0.14371899849357, midnightblue = 0.02071786635086, mintcream = 0.97834604947588, mistyrose = 0.82183047859185, moccasin = 0.80083000991567, navajowhite = 0.76519682342785, navy = 0.015585128108224, oldlace = 0.91900633405549, olive = 0.20027537200568, olivedrab = 0.22593150951929, orange = 0.4817026703631, orangered = 0.25516243753416, orchid = 0.31348806761439, palegoldenrod = 0.78792647887614, palegreen = 0.77936759006353, paleturquoise = 0.76436077921714, palevioletred = 0.28754994117889, papayawhip = 0.87797100199835, peachpuff = 0.74905589878251, peru = 0.30113074877936, pink = 0.63271070702466, plum = 0.45734221587969, powderblue = 0.68254586500605, purple = 0.061477070432439, rebeccapurple = 0.07492341159447, red = 0.2126, rosybrown = 0.32319457649407, royalblue = 0.16663210743188, saddlebrown = 0.097922285020521, salmon = 0.36977241527596, sandybrown = 0.46628543696283, seagreen = 0.19734199706275, seashell = 0.92737862206922, sienna = 0.13697631337098, silver = 0.52711512570581, skyblue = 0.55291668518184, slateblue = 0.14784278062136, slategray = 0.20896704076536, slategrey = 0.20896704076536, snow = 0.96533341834849, springgreen = 0.73052306068529, steelblue = 0.20562642207625, tan = 0.48237604163921, teal = 0.16996855778968, thistle = 0.56818401093733, tomato = 0.30638612719415, turquoise = 0.5895536427578, violet = 0.40315452986676, wheat = 0.74909702820482, white = 1, whitesmoke = 0.91309865179342, yellow = 0.9278, yellowgreen = 0.50762957208707, } 6ae47fdb24de4eed5ec26d203faf5341a388987b Module:Navbox with collapsible groups 828 1542 2877 2019-01-24T21:07:28Z MusikAnimal 4 Protected "[[Module:Navbox with collapsible groups]]": [[WP:High-risk templates|High-risk Lua module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain -- This module implements {{Navbox with collapsible groups}} local q = {} local Navbox = require('Module:Navbox') -- helper functions local function concatstrings(s) local r = table.concat(s, '') if r:match('^%s*$') then r = nil end return r end local function concatstyles(s) local r = table.concat(s, ';') while r:match(';%s*;') do r = mw.ustring.gsub(r, ';%s*;', ';') end if r:match('^%s*;%s*$') then r = nil end return r end function q._navbox(pargs) -- table for args passed to navbox local targs = {} -- process args local passthrough = { ['name']=true,['navbar']=true,['state']=true,['border']=true, ['bodyclass']=true,['groupclass']=true,['listclass']=true, ['style']=true,['bodystyle']=true,['basestyle']=true, ['title']=true,['titleclass']=true,['titlestyle']=true, ['above']=true,['aboveclass']=true,['abovestyle']=true, ['below']=true,['belowclass']=true,['belowstyle']=true, ['image']=true,['imageclass']=true,['imagestyle']=true, ['imageleft']=true,['imageleftstyle']=true } for k,v in pairs(pargs) do if k and type(k) == 'string' then if passthrough[k] then targs[k] = v elseif (k:match('^list[0-9][0-9]*$') or k:match('^content[0-9][0-9]*$') ) then local n = mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1') if (targs['list' .. n] == nil and pargs['group' .. n] == nil and pargs['sect' .. n] == nil and pargs['section' .. n] == nil) then targs['list' .. n] = concatstrings( {pargs['list' .. n] or '', pargs['content' .. n] or ''}) end elseif (k:match('^group[0-9][0-9]*$') or k:match('^sect[0-9][0-9]*$') or k:match('^section[0-9][0-9]*$') ) then local n = mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1') if targs['list' .. n] == nil then local titlestyle = concatstyles( {pargs['groupstyle'] or '',pargs['secttitlestyle'] or '', pargs['group' .. n .. 'style'] or '', pargs['section' .. n ..'titlestyle'] or ''}) local liststyle = concatstyles( {pargs['liststyle'] or '', pargs['contentstyle'] or '', pargs['list' .. n .. 'style'] or '', pargs['content' .. n .. 'style'] or ''}) local title = concatstrings( {pargs['group' .. n] or '', pargs['sect' .. n] or '', pargs['section' .. n] or ''}) local list = concatstrings( {pargs['list' .. n] or '', pargs['content' .. n] or ''}) local state = (pargs['abbr' .. n] and pargs['abbr' .. n] == pargs['selected']) and 'uncollapsed' or pargs['state' .. n] or 'collapsed' targs['list' .. n] = Navbox._navbox( {'child', navbar = 'plain', state = state, basestyle = pargs['basestyle'], title = title, titlestyle = titlestyle, list1 = list, liststyle = liststyle, listclass = pargs['list' .. n .. 'class'], image = pargs['image' .. n], imageleft = pargs['imageleft' .. n], listpadding = pargs['listpadding']}) end end end end -- ordering of style and bodystyle targs['style'] = concatstyles({targs['style'] or '', targs['bodystyle'] or ''}) targs['bodystyle'] = nil -- child or subgroup if targs['border'] == nil then targs['border'] = pargs[1] end return Navbox._navbox(targs) end function q.navbox(frame) local pargs = require('Module:Arguments').getArgs(frame, {wrappers = {'Template:Navbox with collapsible groups'}}) -- Read the arguments in the order they'll be output in, to make references number in the right order. local _ _ = pargs.title _ = pargs.above for i = 1, 20 do _ = pargs["group" .. tostring(i)] _ = pargs["list" .. tostring(i)] end _ = pargs.below return q._navbox(pargs) end return q 2864676f591b877887a32d4052e2f3a2c90c8d97 Module:Item 828 583 1314 2019-01-24T21:24:24Z MusikAnimal 4 Protected "[[Module:Item]]": [[Wikipedia:High-risk templates|High-risk module]] ([Edit=Require autoconfirmed or confirmed access] (indefinite)) Scribunto text/plain local p = {} local function escape(str) return str:gsub("[|\\]", function (c) return string.format("\\%03d", c:byte()) end) end local function unescape(str) return str:gsub("\\(%d%d%d)", function (d) return string.char(d) end) end -- Implements [[Template:Item]] function p.pack(frame) local parent = frame:getParent() local result = '' for key, value in pairs(parent.args) do result = result .. "|" .. escape(tostring(key)) .. "|" .. escape(value) end return result .. "|"; end local function unpack(str) local result = { } for key, value in str:gfind("|([^|]*)|([^|]*)") do result[unescape(key)] = unescape(value) end return result end -- Implements [[Template:Component]] function p.component(frame) return unpack(frame.args[1])[frame.args[2]] end local function getItems(frame) return frame:getParent().args end local function invert(tbl) local result = { } for key, value in pairs(tbl) do result[value] = key end return result end -- Add args into item as appropriate (see [[Template:Format item]]) local function addArgs( item, -- unpacked item to modify args, -- arguments for adding into item ignore, -- pass in invert{keys to ignore} shift -- for numbered arguments, args[key+shift] is assigned to item[key] -- returns: item ) for key, value in pairs(args) do if not ignore[key] then local _, _, paramKey = string.find(key, "^param (.*)") local _, _, importantKey = string.find(key, "^important (.*)") paramKey = paramKey or importantKey or key if shift and type(paramKey) == "number" then paramKey = paramKey - shift if paramKey < 1 then paramKey = nil end end if paramKey and (importantKey or item[paramKey] == nil) then item[paramKey] = value end end end return item end -- Implements [[Template:Format item]] function p.format(frame) local args = frame:getParent().args local ignore = invert{ "template", "item" } local templateArgs = addArgs(unpack(args.item), args, ignore) return frame:expandTemplate{ title = args.template, args = templateArgs } end -- See [[Template:Item#Format each item using a template]] function p.each(frame) local args = frame.args local items = getItems(frame) local separator = args[1] or "" local prepend = args[2] or "" local append = args[3] or "" local ignore = invert{ "template" } local shift = 3 local result = "" for i, item in ipairs(items) do local templateArgs = addArgs(unpack(item), args, ignore, shift) result = result .. prepend .. frame:expandTemplate{ title = args.template, args = templateArgs } .. append if items[i + 1] then result = result .. separator end end return result end -- See [[Template:Item#Gather given parameter from all items]] function p.gather(frame) local args = frame.args local items = getItems(frame) local parameter = args.parameter or "1" local templateArgs = { } for i, item in ipairs(items) do templateArgs[i] = unpack(item)[parameter] end return frame:expandTemplate{ title = args.template, args = templateArgs } end return p 46e61b1549d18c301bcc79ecd120a0aa790f8894 Module:In5 828 1323 2658 2019-01-24T21:24:24Z MusikAnimal 4 Protected "[[Module:In5]]": [[Wikipedia:High-risk templates|High-risk module]] ([Edit=Require autoconfirmed or confirmed access] (indefinite)) Scribunto text/plain -- This module implements {{in5}}. local p = {} function p.in5(frame) local indent = frame.args[1] -- Trim whitespace and convert to number. Default to 5 if not present, -- as per the template title. indent = tonumber( mw.text.trim(indent) ) or 5 -- Round down to nearest integer. Decimal values produce funky results -- from the original template, but there's no need for us to replicate that. indent = math.floor( indent ) -- Don't output anything for zero or less. Again, there was some funky output -- here for negatives, but now we're in Lua we should use sane defaults. if indent <= 0 then return end local base = '&nbsp; ' local modulo = '&nbsp;' --[[ Indent values and the corresponding values for base and modulo: indent base modulo 1 0 1 2 0 2 3 1 1 4 1 2 5 2 1 6 2 2 7 3 1 8 3 2 9 4 1 10 4 2 ]] local baseNum = math.floor( (indent - 1) / 2 ) local modNum = math.fmod( indent - 1 , 2 ) + 1 return mw.ustring.rep( base, baseNum) .. mw.ustring.rep( modulo, modNum ) end return p 6fe4f26677b1aa215e77c4071bf60ff3ec286466 Module:WikidataIB/nolinks 828 1232 2565 2019-01-31T16:27:33Z w>RexxS 0 add abbreviations UK and USA Scribunto text/plain local p ={} --[[ The values here are the English sitelinks for items that should not be linked. These 36 are not definitive and may be altered to suit. --]] p.items = { "Australia", "Austria", "Belgium", "Canada", "China", "Denmark", "England", "France", "Germany", "Greece", "Hungary", "Iceland", "India", "Republic of Ireland", "Israel", "Italy", "Jamaica", "Japan", "Luxembourg", "Mexico", "Netherlands", "New Zealand", "Northern Ireland", "Norway", "Poland", "Portugal", "Russia", "Scotland", "South Africa", "Spain", "Sweden", "Switzerland", "Turkey", "United Kingdom", "UK", "United States", "USA", "Wales", } --[[ This provides a convenient way to create a test whether an item is on the list. --]] p.itemsindex = {} for i, v in ipairs(p.items) do p.itemsindex[v] = true end return p d42a1e1cb5d411ab1b578dc0d36aa0266f32b2d6 Module:Location map/data/USA 828 1681 3120 2019-02-10T18:47:41Z wikipedia>Zyxw 0 update name used in automatic captions Scribunto text/plain return { name = 'the United States', x = '50.0 + 124.03149777329222 * ((1.9694462586094064-($1 * pi / 180)) * sin(0.6010514667026994 * ($2 + 96) * pi / 180))', y = '50.0 + 1.6155950752393982 * 124.03149777329222 * ( 0.02613325650382181 - (1.3236744353715044 - (1.9694462586094064 - ($1 * pi / 180)) * cos(0.6010514667026994 * ($2 + 96) * pi / 180)))', image = 'Usa edcp location map.svg', image1 = 'Usa edcp relief location map.png' } d2c98c333c13b7dc164dbaccae5a3365c15aa096 Template:Mbox templates (small) 10 1310 2645 2019-02-15T16:20:44Z w>Frietjes 0 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = nowrap | bodystyle = width:auto;padding-bottom:0.6em;line-height:1.25em; | abovestyle = font-size:inherit; | above = Message box<br/>meta-templates | labelstyle = margin:0;padding:0 0.3em 0;text-align:center;font-weight:normal; | datastyle = margin:0;padding:0 0.5em 0 0; | label1 = ''template'' | data1 = ''context'' | label2 = {{tl|Ambox}} | data2 = article | label3 = {{tl|Cmbox}} | data3 = category | label4 = {{tl|Imbox}} | data4 = image | label5 = {{tl|Tmbox}} | data5 = talk | label6 = {{tl|Fmbox}} | data6 = footer / header | label7 = {{tl|Ombox}} | data7 = other pages | label8 = {{tl|Mbox}} | data8 = auto-detect | label9 = {{tl|Asbox}} | data9 = article stub | label10 = {{tl|Dmbox}} | data10 = disambiguation }}</includeonly><noinclude> {{Documentation}} </noinclude> 0b3ecac37228509c27b7b87ac29255ffde9ae20b Template:Tlm 10 1673 3101 2019-02-23T03:01:01Z Pppery 6 Module renamed wikitext text/x-wiki {{#invoke:tlm|format_link}}<noinclude>{{documentation}} 4ad7a6ab500f2a6f21da459c329c828b24999af4 Module:Engvar 828 1528 2863 2019-02-25T04:25:52Z w>JJMC89 0 Changed protection level for "[[Module:Engvar]]": [[WP:High-risk templates|Highly visible module]]: match template ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain -- This module implements Template:Engvar. -- Template:Engvar is to be build into the template (like an infobox), with default & variant spellings defined. -- That template should also allow parameter '|engvar=' for the editor (article page). -- The module/template Engvar then returns the spelling variant as is set in that article (for example '|engvar=en-GB'). -- The defaultWord is returned, unless the engvar input hits on a defined (en-XX) variant word. local p = {} local getArgs = require('Module:Arguments').getArgs local gsub = string.gsub local lower = string.lower local upper = string.upper function p.variants(frame) local args = getArgs(frame) return p._variants(args) end function p._variants(args) local returnWord = nil local defaultWord = args.defaultWord or '' if args.engvar == nil then -- Nothing to look for; use defaultWord right away returnWord = defaultWord elseif args.defaultLang == gsub(lower(args.engvar), '^en%-(%w%w)$', formatISO) then -- By the defaultLang, the defaultWord is asked returnWord = defaultWord else returnWord = args[gsub(lower(args.engvar), '^en%-(%w%w)$', formatISO)] end if returnWord == nil then -- No hit so far. Search by words in the engvar entered, checking the list local useLang = engvarLang(args.engvar) if useLang == nil then returnWord = defaultWord .. addMaintCat(args) else returnWord = args[useLang] or defaultWord end end return returnWord end -- Returns arguments and intermediate result. Plus the template result, in front. function p.explain(frame) local args = getArgs(frame) local ret = {} table.insert(ret, '\n\n: Settings:') table.insert(ret, 'defaultWord=' .. (args.defaultWord or '') .. '; ') table.insert(ret, 'defaultLang=' .. (args.defaultLang or '') .. '; ') table.insert(ret, 'engvarCat=' .. (args.engvarCat or '[default:yes]') .. '; ') table.insert(ret, 'engvarCatSort=' .. (args.engvarCatSort or '')) table.insert(ret, '\n\n: engvar=' .. (args.engvar or '') .. ' [input] ') local useLang = engvarLang(args.engvar or '') table.insert(ret, ' => Engvar code [used]: >' .. (useLang or '') .. '<.') for k, v in pairs(args) do if k == 'en-UK' then table.insert(ret, k .. ' ? better: use "en-GB"; ') elseif k == 'en-SA' then table.insert(ret, k .. ' ? misleading; use "en-ZA"; ') end if k == 'defaultWord' then elseif k == 'defaultLang' then elseif k == 'engvar' then elseif k == 'engvarcat' then elseif k == gsub(lower(k), '^en%-(%w%w)$', formatISO) then table.insert(ret, k .. '=' .. v .. '; ') else table.insert(ret, k .. ' [not standard:]=' .. v .. '; ') end end return (args.engvar or '') .. ' => ' .. p._variants(args) .. table.concat(ret, ' ') end -- Turn a match into pattern 'en-XX' function formatISO(country) return ('en-' .. upper(country) or '') end function engvarLang(searchEngvar) -- Search verbose language identifiers to ISO-format 'en-XX' -- Assumed: not a blank string '' to search local match = string.match searchEngvar = gsub(searchEngvar, '^%s*en%-(.*)', '%1') -- rm any opening 'en-'. searchEngvar = gsub(lower(searchEngvar), '[%s%(%)%-]', '') -- To lc, remove all: (, ) , ws, hyphen. local useLang --Special codes if match(searchEngvar, 'oxford') or searchEngvar == 'oed' then useLang = 'en-OED' -- 'oxford' to catch before anyting 'british' elseif match(searchEngvar, 'iupac') then useLang = 'en-IUPAC' -- chemistry -- Very often used elseif match(searchEngvar, 'british') or searchEngvar == 'uk' or searchEngvar == 'gbr' then useLang = 'en-GB' elseif searchEngvar == 'us' or match(searchEngvar, 'unitedstates') or searchEngvar == 'american' or searchEngvar == 'usa' then useLang = 'en-US' elseif match(searchEngvar, 'australia') or searchEngvar == 'aus' then useLang = 'en-AU' -- Often used elseif match(searchEngvar, 'india') or searchEngvar == 'ind' then useLang = 'en-IN' elseif searchEngvar == 'newzealand' or searchEngvar == 'nzl' then useLang = 'en-NZ' elseif match(searchEngvar, 'southafrica') -- not: en-SA or searchEngvar == 'zaf' then useLang = 'en-ZA' elseif searchEngvar == 'canada' or searchEngvar == 'can' then useLang = 'en-CA' elseif match(searchEngvar, 'hiberno') or match(searchEngvar, 'ireland') or match(searchEngvar, 'irish') or searchEngvar == 'irl' then useLang = 'en-EI' elseif match(searchEngvar, 'hongkong') or searchEngvar == 'hkg' then useLang = 'en-HK' -- Less often used elseif match(searchEngvar, 'jamaica') or searchEngvar == 'jam' then useLang = 'en-JM' elseif match(searchEngvar, 'malawi') or searchEngvar == 'mwi' then useLang = 'en-MW' elseif match(searchEngvar, 'nigeria') or searchEngvar == 'nga' then useLang = 'en-NG' elseif match(searchEngvar, 'pakistan') or searchEngvar == 'pak' then useLang = 'en-PK' elseif match(searchEngvar, 'philippine') or searchEngvar == 'phl' then useLang = 'en-PH' elseif match(searchEngvar, 'scotland') or match(searchEngvar, 'scottish') or searchEngvar == 'sco' then useLang = 'en-SCO' -- Has no alpha-2 code; not 'scotch' elseif match(searchEngvar, 'singapore') or searchEngvar == 'sgp' then useLang = 'en-SG' elseif match(searchEngvar, 'trinidad') or match(searchEngvar, 'tobago') or searchEngvar == 'tto' then useLang = 'en-TT' else useLang = nil end return useLang end function addMaintCat(args) local catMaintenance if args.engvarCat == 'no' then else local title = mw.title.getCurrentTitle() if title:inNamespaces(0) then -- 0=main, 10=templ, 828=module if args.engvarCatSort then catMaintenance = '|' .. args.engvarCatSort .. ', ' .. title.text end catMaintenance = '[[Category:Articles using an unknown Template:Engvar option' .. (catMaintenance or '') .. ']]' end end return catMaintenance or '' end return p c67c97cf2bc643d26781b77fd4b0d63383ab47a8 Module:Page 828 180 413 2019-02-25T22:06:47Z MusikAnimal 4 Changed protection level for "[[Module:Page]]": [[Wikipedia:High-risk templates|High-risk template or module]]; used in system message ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) Scribunto text/plain local callAssert = require('Module:CallAssert') local function main(frame, field) local args, pargs = frame.args, ( frame:getParent() or {} ).args or {} local makeTitle=args.makeTitle or pargs.makeTitle local namespace=args.namespace or pargs.namespace or "" local fragment=args.fragment or pargs.fragment or "" local interwiki=args.interwiki or pargs.interwiki or "" local page=args.page or args[1] or pargs.page or pargs[1] or "" local id= tonumber( args.id or pargs.id ) local pn = {} local title -- holds the result of the mw.title.xxx call for i = 1,9 do pn[i] = args['p'..i] or pargs['p'..i] end if not id and not mw.ustring.match( page, '%S' ) then page = nil end if id then title = callAssert(mw.title.new, 'mw.title.new', id) elseif not page then title = callAssert(mw.title.getCurrentTitle, 'getCurrentTitle') elseif makeTitle then title = callAssert(mw.title.makeTitle, 'makeTitle', namespace, page, fragment, interwiki) else title = callAssert(mw.title.new, 'mw.title.new', page, namespace) end local result = title[field] if type(result) == "function" then result = result(title, unpack(pn)) end return tostring(result or "") end -- handle all errors in main main = require('Module:Protect')(main) local p = {} -- main function does all the work local meta = {} function meta.__index(self, key) return function(frame) return main(frame, key) end end setmetatable(p, meta) function p.getContent(frame) local args, pargs = frame.args, ( frame:getParent() or {} ).args or {} local fmt = args.as or pargs.as or "pre" local text = main(frame, "getContent") fmt = mw.text.split( fmt, ", ?" ) for _, how in ipairs( fmt ) do if how == "pre" then text = table.concat{ "<pre>", text, "</pre>" } elseif how == "expand" then text = frame:preprocess(text) elseif how == "nowiki" then text = mw.text.nowiki(text) end end return text end return p 9b70f0ff53b1c20fd8667c9f3d80167653279cc4 Template:Stub 10 754 1683 2019-02-26T06:07:29Z wikipedia>Grutness 0 wikitext text/x-wiki {{asbox | image = | pix = | subject = | article = article | qualifier = | category = Stubs | tempsort = no | lowercase = y | name = Template:Stub }} c8372a9cd3ab0d8ef30c901442b93e0675510604 Template:Collapsible lists option 10 854 1890 2019-02-28T00:22:15Z wikipedia>Bsherr 0 replacing PAGENAMEBASE with BASEPAGENAME wikitext text/x-wiki <div style="padding-right:3.6em<!--i.e. around three times Wikipedia's standard indent width, to keep the following away from e.g. template/s on righthand side of page-->;"> This template includes collapsible lists. <!------------ (to show all lists) --------------> : {{Unbulleted list |style=padding-bottom:0.3em; |list_style=line-height:1.5em; | 1 = {{blue|•}} To set it to display all lists when it appears (i.e. all lists expanded), use: | 2 = <span class="nowrap">{{pad|1.2em}}<code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}all}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}all}}</code></span>{{spaces|2}}(i.e. omitting "<code>expanded{{=}}</code>"). }} <!------------ (to show one list) ---------------> : {{Unbulleted list |style=padding-bottom:0.3em; |list_style=line-height:1.5em; | 1 = {{blue|•}} To set it to display one particular list while keeping the remainder collapsed (i.e. hidden apart from their headings), use: | 2 = <span class="nowrap">{{pad|1.2em}}<code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}''listname''}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}''listname''}}</code></span> | 3 = …where ''listname'' is one of the following (do not include any quotemarks): |item4_style=;padding:0.2em 0 0.3em 1.4em; | 4 = <kbd style="border: none; background: transparent;">{{{listnames<includeonly>|{{color|red|''Required parameter "listnames" missing!''}}</includeonly>}}} </kbd> | 5 = {{#if:{{{example<includeonly>|</includeonly>}}} <!--------(optional example)---------> | <noinclude>{{small|[''optional:''{{thinsp}}]}}<br /></noinclude><!-- -->For example, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}{{{example}}}}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}{{{example}}}}}</code></span> }} }}<!-- <!------------ (optional default) ---------------> {{#if:{{{default<includeonly>|</includeonly>}}} | * {{#ifeq:{{{default}}}|all |All lists have | <noinclude>{{small|[''optional:''{{thinsp}}]}}&nbsp; [All lists have]{{\}}[The list named '''''default''''' has]</noinclude><!-- --><includeonly>The list named '''<code>{{{default}}}</code>''' has</includeonly>}} been set to be shown when the template appears. }} </div><noinclude>{{Documentation}}</noinclude> 637dd404169257c607f658e1515b2824edef2441 Template:TOC limit/styles.css 10 979 2152 2019-03-03T23:36:55Z wikipedia>Pppery 0 Adding protection template sanitized-css text/css /* {{pp-template}} Allow limiting of which header levels are shown in a TOC; <div class="toclimit-3">, for instance, will limit to showing ==headings== and ===headings=== but no further (as long as there are no =headings= on the page, which there shouldn't be according to the MoS). */ .toclimit-2 .toclevel-1 ul, .toclimit-3 .toclevel-2 ul, .toclimit-4 .toclevel-3 ul, .toclimit-5 .toclevel-4 ul, .toclimit-6 .toclevel-5 ul, .toclimit-7 .toclevel-6 ul { display: none; } 6bdcbe092c6376237fc1740ef6832611c1f3c8fa Template:Nobold/styles.css 10 15 25 2019-03-03T23:43:41Z Pppery 6 Adding protection template text text/plain /* {{pp-template}} */ /* Styling for Template:Nobold */ .nobold { font-weight: normal; } 83e5f0adacf8c7984251f1fd9d11ed82ebaadf03 Template:Noitalic/styles.css 10 1544 2879 2019-03-03T23:58:52Z Pppery 6 Adding protection template sanitized-css text/css /* {{pp-template}} */ /* Styling for Template:Noitalic */ .noitalic { font-style: normal; } 60f12a58153e983e13c50327a57398edc337e9d0 Template:Mono/styles.css 10 463 1352 2019-03-04T00:01:15Z Pppery 6 Adding protection template sanitized-css text/css /* {{pp-template}} */ .monospaced { /* "monospace, monospace" per [[WP:MONO]] */ font-family: monospace, monospace; } cadfc2ad2e42cde230abf3e74ad418f7c4c71ab4 Template:Image other 10 1314 2649 2019-03-05T14:22:01Z Xaosflux 7 Changed protection level for "[[Template:Image other]]": Pages alread protected from [[Wikipedia:Cascade-protected items/content]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki #redirect [[Template:File other]] {{R from move}} e3583b1d79b68a0ef4746b77209e6b23ebe74381 Module:Protect 828 182 417 2019-03-13T12:54:02Z Xaosflux 7 Changed protection level for "[[Module:Protect]]": used in interface [[MediaWiki:Protectedinterface]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) Scribunto text/plain local function processResult(options, success, ...) if not success then local message = tostring(... or '(no message)') if options.removeLocation then message = string.gsub(message, '^Module:[^:]+:%d+: ', '', 1) end return string.format(options.errFormat, message) end return ... end local function protect(func, errFormat, options) if type(errFormat) == 'table' then options = options or errFormat errFormat = nil end options = mw.clone(options) or {} options.errFormat = errFormat or options.errFormat or 'Error: %s' if not options.raw then options.errFormat = '<strong class="error">' .. options.errFormat .. '</strong>' end options.removeLocation = options.removeLocation == nil or options.removeLocation return function (...) return processResult(options, pcall(func, ...)) end end return protect b9ef98da3f3df35e58a7136f9a9c73a12aa8b35d Module:CallAssert 828 179 411 2019-03-13T12:54:41Z Xaosflux 7 Changed protection level for "[[Module:CallAssert]]": used in interface [[MediaWiki:Protectedinterface]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) Scribunto text/plain local function pack(...) return {...}, select('#', ...) end local function mapArray(func, array, count) local result = {} for i = 1, count or #array do result[i] = func(array[i]) end return result end local function quote(value) if type(value) == 'string' then return (string.gsub(string.format('%q', value), '\\\n', '\\n')) -- Outer parentheses remove second value returned by gsub end local str = tostring(value) if type(value) == 'table' and str ~= 'table' then return '{' .. str .. '}' end return str end local function callAssert(func, funcName, ...) local result, resultCount = pack(func(...)) if not result[1] then local args, argsCount = pack(...) args = mapArray(quote, args, argsCount) local message = mw.ustring.format( '%s(%s) failed', funcName, table.concat(args, ', ') ) error(message, 2) end return unpack(result, 1, resultCount) end return callAssert 1f6b71105b007b84f1593a11438484f1ad94f68a Template:User link 10 1642 3002 2019-03-16T07:58:47Z wikipedia>Jonesey95 0 display "Example" on this page only, per talk page request wikitext text/x-wiki [[User:{{{1<noinclude>|Example</noinclude>}}}|{{<includeonly>safesubst:</includeonly>#if:{{{2|}}}|{{{2}}}|{{{1<noinclude>|Example</noinclude>}}}}}]]<noinclude> {{documentation}} </noinclude> 77cabe6631a64537cdf8e5ca3d3d8d3ae2734552 Template:Lua 10 65 125 2019-03-20T22:04:45Z wikipedia>RMCD bot 0 Removing notice of move discussion wikitext text/x-wiki <includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude> {{Lua|Module:Lua banner}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7 Template:Demo 10 1338 2673 2019-03-22T06:54:17Z w>JJMC89 0 handled by {{documentation}} wikitext text/x-wiki {{#invoke:Demo|main}}<noinclude>{{documentation}}</noinclude> e458e378477c6077a01987f334fdc73bee48512c Template:Shortcut compact 10 1135 2461 2019-03-22T07:02:15Z DannyS712 44 remove old unneeded inline html comment wikitext text/x-wiki <table class="shortcutbox shortcutbox-compact noprint" style="clear:right; float:right; border:1px solid #aaa; background:#fff; margin: 0.1em 0.1em 0.1em 0.1em; padding:1px; text-align:center;"><tr><th><small>&nbsp;[[Wikipedia:Shortcut|Shortcut{{#if:{{{2|}}}|s}}]]: &nbsp;&nbsp;{{#if:{{{1|}}}|[[{{{1}}}]] }}{{#if:{{{2|}}}|&nbsp;&nbsp; [[{{{2}}}]] }}{{#if:{{{3|}}}|&nbsp;&nbsp; [[{{{3}}}]] }}{{#if:{{{4|}}}|&nbsp;&nbsp; [[{{{4}}}]] }}{{#if:{{{5|}}}|&nbsp;&nbsp; [[{{{5}}}]] }}&nbsp;</small></th></tr></table><noinclude> {{Documentation}} </noinclude> d33089183a3f8b3ef85f64beb703cad9f7eece42 Template:Map caption 10 1730 3264 2019-03-23T17:46:25Z wikipedia>Galobtter 0 fix spacing wikitext text/x-wiki <div style="text-align:center;line-height:1.15em;">Location of{{#if:{{{countryprefix|}}} |&nbsp;{{{countryprefix}}} }}&nbsp;{{#ifexist:{{{country}}} |[[{{{country}}}]] |{{{country|{{PAGENAME}}}}} }}{{#ifeq:{{{location|{{{location_color|any}}}}}}|none| |&nbsp;({{{location|{{{location_color|orange}}}}}}) }}{{#if:{{{region|{{{legend|}}}}}} |{{#if:{{{subregion|}}} |<p style="text-align:left;margin-left:1.2ex;margin-top:0px;margin-bottom:0px;line-height:1.15em;">–&nbsp; |<p style="text-align:center;margin-top:0px;margin-bottom:0px;line-height:1.15em;"> }}{{#switch:{{{region|none}}} | none = | Europe | [[Europe]] | in Europe | in [[Europe]] | on the European continent | on the [[Europe|European continent]] = in [[Europe]] | Pacific | [[Pacific]] | the Pacific | the [[Pacific]] | the Pacific Ocean = in the [[Pacific Ocean]] | Middle East | [[Middle East]] | Arctic Circle | [[Arctic Circle]] | Pacific Ocean | [[Pacific Ocean]] = in the {{#ifexist:{{{region}}}|[[{{{region}}}]]|{{{region}}}}} | #default = in {{#ifexist:{{{region}}} |[[{{{region}}}]] |{{{region}}} }} }}{{#if:{{{region|}}} |{{#ifeq:{{{region_color|any}}}|none| |&nbsp;({{#if:{{{subregion|}}} |{{#ifeq:{{{subregion_color|tan}}}|{{{region_color|white}}}| |{{#ifeq:{{{subregion_color|any}}}|none| |{{{subregion_color|tan}}} &&nbsp; }} }} }}{{{region_color|white}}}) }}{{#if:{{{subregion|}}} |<br />–&nbsp;{{#switch:{{{subregion|none}}} | EU | [[EU]] | the EU | the [[EU]] | European Union | [[European Union]] | the European Union | the [[European Union]] = in the [[European Union]] | #default = in {{#ifexist:{{{subregion}}} |[[{{{subregion}}}]] |{{{subregion}}} }} }}{{#ifeq:{{{subregion_color|any}}}|none| |&nbsp;({{{subregion_color|tan}}}) }} }} }}{{#if:{{{legend|}}} |{{#switch:<!--[13]-->{{{subregion|none}}} | EU | [[EU]] | the EU | the [[EU]] | European Union | [[European Union]] | the European Union | the [[European Union]] = {{#ifeq:{{{subregion_color|tan}}}|tan |&nbsp; |&nbsp; –&nbsp; }} | none = {{#ifeq:{{{region|none}}}|none| |&nbsp; –&nbsp; }} | #default = &nbsp; –&nbsp; }} &#91;[[:File:{{{legend}}}|Legend]]&#93; }}</p> }}</div><noinclude> {{documentation}} </noinclude> 6f689b2b33b7f1e8612ae284122114c91acec1f2 Template:Lang-la 10 1463 2798 2019-04-03T12:06:16Z w>WOSlinker 0 pp templates not needed here wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_italic |code=la }}</includeonly><noinclude> {{Documentation|Template:Lang-x/doc}} [[Category:Italic multilingual support templates]] </noinclude> e9fb23bc455a402a9643bb61d1c151a865c3ff66 Template:Lang-kw 10 1414 2749 2019-04-03T12:07:40Z w>WOSlinker 0 pp templates not needed here wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_italic |code=kw }}</includeonly><noinclude> {{Documentation|Template:Lang-x/doc}} [[Category:Celtic multilingual support templates]] </noinclude> 46c715ee6b9def2a94113dcd89e67018ee32050c Template:Cl 10 610 1378 2019-04-24T04:30:48Z wikipedia>JJMC89 0 actual template is in the category wikitext text/x-wiki #REDIRECT [[Template:Category link]] {{R from move}} f79fddc38797fc163b6e6ddeb4377afbea7d0cfc Template:Clc 10 200 454 2019-04-24T04:30:59Z wikipedia>JJMC89 0 actual template is in the category wikitext text/x-wiki #REDIRECT [[Template:Category link with count]] 02280e2ab57b544236e11f913e3759c5781ca9d5 Module:ISO 3166 828 185 423 2019-04-28T16:52:10Z wikipedia>Frietjes 0 restrict tracking to articlespace per request Scribunto text/plain -- to enable us to replicate the current functioning of Country extract, we need to deal with: -- 2 {{<name>}} DONE! -- 3 [[<name>]] DONE! -- 4 [[<name>|<junk>]] DONE! -- 5 [[image:flag of <country>.[svg|gif|png|jpg]|\d+px]] DONE! local p = {} local getArgs = require("Module:Arguments").getArgs local data = mw.loadData("Module:ISO 3166/data/National") --[[----------F I N D N A M E----------]]-- -- Finds the name in the database local function findname(code,cdata,qry) local sqry = p.strip(qry) if cdata["name"] and sqry==p.strip(cdata["name"]) or cdata["isoname"] and sqry==p.strip(cdata["isoname"]) or not cdata["nocode"] and sqry==code or sqry==cdata["alpha3"] or sqry==cdata["numeric"] then return true end for _,tname in pairs(cdata["isonames"] or {}) do if sqry==p.strip(tname) then return true end end for _,tname in pairs(cdata["altnames"] or {}) do if sqry==p.strip(tname) then return true end end return false end --[[----------I S O N A M E----------]]-- -- Find the ISO name of a country/region local function isoname(data,code,lang) if data[code]["isonames"] then local name = data[code]["isodisplaynames"] and data[code]["isodisplaynames"][lang] or data[code]["isonames"][lang] or data[code]["isodisplaynames"] and data[code]["isodisplaynames"][data[code]["defaultlang"] or data["defaultlang"]] or data[code]["isonames"][data[code]["defaultlang"] or data["defaultlang"]] or data[code]["isodisplaynames"] and data[code]["isodisplaynames"]["en"] or data[code]["isonames"]["en"] if name then return name end for _,iname in pairs(data[code]["isonames"]) do return iname end return data[code]["isodisplayname"] or data[code]["isoname"] else return data[code]["isodisplayname"] or data[code]["isoname"] end end --[[----------S T R I P----------]]-- -- Removes junk from the input function p.strip(text) local accents = {["À"]="A",["Á"]="A",["Â"]="A",["Ã"]="A", -- accent list ["Ä"]="A",["Å"]="A",["Ç"]="C",["È"]="E",["É"]="E", ["Ê"]="E",["Ë"]="E",["Ì"]="I",["Í"]="I",["Î"]="I", ["Ï"]="I",["Ñ"]="N",["Ò"]="O",["Ó"]="O",["Ô"]="O", ["Õ"]="O",["Ö"]="O",["Ø"]="O",["Ù"]="U",["Ú"]="U", ["Û"]="U",["Ü"]="U",["Ý"]="Y" } local remove = {"NATION OF","COUNTRY OF","TERRITORY OF", -- text to be removed list "FLAG OF","FLAG","KINGDOM OF","STATE OF"," STATE ", "PROVINCE OF","PROVINCE","TERRITORY" } local patterns = {[".+:"]="",["|.+"]="",["%(.-%)"]="", -- patterns to follow (order may matter) ["%..*"]="",["^THE "]="",["%_"]=" ",["%-"]=" ", ["%d%d?%d?PX"]="", } text = mw.ustring.upper(text) -- Case insensitivity text = mw.ustring.gsub(text,"[À-Ý]",accents) -- Deaccent for pattern,value in pairs(patterns) do -- Follow patterns text = mw.ustring.gsub(text,pattern,value) end for _,words in pairs(remove) do -- Remove unneeded words text = mw.ustring.gsub(text,words,"") end text = mw.ustring.gsub(text,"%W","") -- Remove non alpha-numeric return text end --[[----------P . C A L L S T R I P ---------]]-- -- Calls P.strip but using Module:Arguments function p.callstrip(frame) local args = getArgs(frame) return p.strip(args[1]) or "" end --[[----------P . L U A C O D E---------]]-- -- Makes the ISO code of a country function p.luacode(args) if string.find(args[1] or '',"%-") then args[1], args[2] = string.match(args[1] or '',"^([^%-]*)%-(.*)$") end if args[1] then args[1] = p.strip(args[1]) end if args[2] then args[2] = p.strip(args[2]) end if args["codetype"]=="3" then args["codetype"]="alpha3" end local eot = args.error or "" local catnocountry = (args.nocat and args.nocat == 'true') and '' or '[[Category:Wikipedia page with obscure country]]' local catnosubdivision = (args.nocat and args.nocat == 'true') and '' or '[[Category:Wikipedia page with obscure subdivision]]' if not args[1] then if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end return catnocountry, '<span style="font-size:100%" class="error">"No parameter for the country given"</span>' end if not args[2] then --3166-1 code for alpha2,cdata in pairs(data) do if findname(alpha2,cdata,args[1]) then if args["codetype"]=="numeric" or args["codetype"]=="alpha3" then return cdata[args["codetype"]] else return alpha2 end end end if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end return catnocountry else --3166-2 code for alpha2,cdata in pairs(data) do if findname(alpha2,cdata,args[1]) then if mw.ustring.match(alpha2,"GB") then -- For England, Wales etc. alpha2 = "GB" end local sdata = mw.loadData("Module:ISO 3166/data/"..alpha2) local empty = true for scode,scdata in pairs(sdata) do if type(scdata)=="table" then empty = false if findname(scode,scdata,args[2]) then return alpha2.."-"..scode end end end if mw.title.getCurrentTitle().namespace ~= 0 then catnosubdivision = '' end return catnosubdivision end end if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end return catnocountry end end --[[----------P . C O D E---------]]-- -- Calls P.Luacode but using Module:Arguments function p.code(frame) return p.luacode(getArgs(frame)) or "" end --[[----------P . N U M E R I C---------]]-- -- Calls P.Luacode but using Module:Arguments and setting it to output a numeric value function p.numeric(frame) local args = getArgs(frame) args["codetype"]="numeric" return p.luacode(args) or "" end --[[----------P . L U A N A M E---------]]-- -- Makes the ISO/common name of a country function p.luaname(args) local code1 = p.luacode(args) local code2 = '' if string.find(code1,"%-") then code1, code2 = string.match(code1,"^([^%-]*)%-(.*)$") end if string.find(code1,"^%u%u$") then if code2=="" then --3166-1 alpha-2 code if data[code1] then return (args.isoname or args.lang) and isoname(data,code1,args.lang) or (data[code1]["displayname"] or data[code1]["name"]) else return '[[Category:Wikipedia page with obscure country]]' end else --3166-2 code local sdata if data[code1] then sdata = mw.loadData("Module:ISO 3166/data/"..code1) else return '[[Category:Wikipedia page with obscure country]]' end if sdata[code2] then return (args.isoname or args.lang) and isoname(sdata,code2,args.lang) or (sdata[code2]["displayname"] or sdata[code2]["name"]) else return '[[Category:Wikipedia page with obscure country]]' end end end end --[[----------P . N A M E---------]]-- -- Calls P.Luaname but using Module:Arguments function p.name(frame) return p.luaname(getArgs(frame)) or "" end --[[----------P . G E O C O O R D I N S E R T---------]]-- -- Wrapper for Module:Coordinates.coordinsert function p.geocoordinsert(frame) -- {{#invoke:ISO 3166|geocoordinsert|{{coord|...}} -- |country=..|subdivision1=...|subdivision2=... -- |type=...|scale=...|dim=...|source=...|globe=... -- }} local args = frame.args local subdivisionqueried = false local catnocountry = (args.nocat and args.nocat == 'true') and '' or '[[Category:Wikipedia page with obscure country]]' local catnosubdivision = (args.nocat and args.nocat == 'true') and '' or '[[Category:Wikipedia page with obscure subdivision]]' or '' local tracking = '' local targs = {} targs[1] = args[1] or '' for i, v in pairs(args) do if i == 'country' and not mw.ustring.find(targs[1], 'region:') then local country = v local k, region = 1, '' -- look for a valid subdivision while region == '' and k < 3 do local subdivision = args['subdivision' .. k] or '' if subdivision ~= '' then region = p.luacode({country, subdivision, nocat = 'true'}) subdivisionqueried = true end k = k + 1 end -- subdivision lookup failed or never attempted, try country only if region == '' then region = p.luacode({country, nocat = 'true'}) if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry, catnosubdivision = '', '' end if region == '' then tracking = tracking .. catnocountry elseif subdivisionqueried == true then tracking = tracking .. catnosubdivision end end -- something worked, add it to the targs if region ~= '' then targs[#targs + 1] = 'region:' .. region end elseif i == 'type' or i == 'scale' or i == 'dim' or i == 'source' or i == 'globe' then targs[#targs + 1] = i .. ':' .. v end end -- call Module:Coordinates.coordinsert if there is something to insert if #targs > 1 then local coordinsert = require('Module:Coordinates').coordinsert return coordinsert({args = targs}) .. tracking end -- otherwise, just return the coordinates return targs[1] .. tracking end return p 6bc354f2610f29e712065cbe3ea814144fa3a600 Template:Citation 10 1091 2381 2019-05-06T17:38:52Z wikipedia>Trappist the monk 0 per [[Wikipedia:Templates for discussion/Log/2019 April 18#separate patent cites from Template:Citation‎|TfD]]; wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=citation }}</includeonly><noinclude> {{Documentation}} </noinclude> 682134a60c143dec260ce779777d3be2d4c94eaa Template:Str endswith 10 1540 2875 2019-05-30T14:16:29Z w>MSGJ 0 use [[Module:String]] per [[Wikipedia:Templates_for_discussion/Log/2019_February_18#Module:Str_endswith|TfD]] discussion wikitext text/x-wiki {{#ifeq:{{{1|a}}}{{{2|a}}}|{{{1|b}}}{{{2|b}}}|{{#invoke:String|endswith|source={{{1}}}|pattern={{{2}}} }}|yes<!--backward compatibility -->}}<noinclude> {{documentation}} </noinclude> 13dfad2dc8c562869bc85a37524258ffebf9a62f Template:Infobox country/multirow 10 428 1261 2019-06-29T22:48:38Z wikipedia>Primefac 0 update /doc wikitext text/x-wiki {{infobox | child = yes | decat=yes | rowclass25 = mergedrow | label25 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{1|}}}</div> | data25 = {{{2|}}} | rowclass26 = mergedrow | label26 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{3|}}}</div> | data26 = {{{4|}}} | rowclass27 = mergedrow | label27 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{5|}}}</div> | data27 = {{{6|}}} | rowclass28 = mergedrow | label28 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{7|}}}</div> | data28 = {{{8|}}} | rowclass29 = mergedrow | label29 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{9|}}}</div> | data29 = {{{10|}}} | rowclass30 = mergedrow | label30 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{11|}}}</div> | data30 = {{{12|}}} | rowclass31 = mergedrow | label31 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{13|}}}</div> | data31 = {{{14|}}} | rowclass32 = mergedrow | label32 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{15|}}}</div> | data32 = {{{16|}}} | rowclass33 = mergedrow | label33 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{17|}}}</div> | data33 = {{{18|}}} | rowclass34 = mergedrow | label34 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{19|}}}</div> | data34 = {{{20|}}} | rowclass35 = mergedrow | label35 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{21|}}}</div> | data35 = {{{22|}}} | rowclass36 = mergedrow | label36 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{23|}}}</div> | data36 = {{{24|}}} | rowclass37 = mergedrow | label37 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{25|}}}</div> | data37 = {{{26|}}} | rowclass38 = mergedrow | label38 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{27|}}}</div> | data38 = {{{28|}}} | rowclass39 = mergedrow | label39 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{29|}}}</div> | data39 = {{{30|}}} | rowclass40 = mergedrow | label40 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{31|}}}</div> | data40 = {{{32|}}} | rowclass41 = mergedrow | label41 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{33|}}}</div> | data41 = {{{34|}}} | rowclass42 = mergedrow | label42 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{35|}}}</div> | data42 = {{{36|}}} | rowclass43 = mergedrow | label43 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{37|}}}</div> | data43 = {{{38|}}} | rowclass44 = mergedrow | label44 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{39|}}}</div> | data44 = {{{40|}}} }}<noinclude> {{documentation|content= This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. It can currently take up to 20 rows. }}</noinclude> 52b488ce963e6b79723ab148c9a82507ed2b4078 Template:Infobox military conflict 10 1152 2478 2019-07-01T21:49:58Z w>Frietjes 0 moving to module wikitext text/x-wiki <includeonly>{{#invoke:Infobox military conflict|main}}</includeonly><noinclude>{{documentation}}</noinclude> d340eca466eb5d0a69c1f4ac57d0f34d306ed031 Template:Wikidata 10 1054 2306 2019-07-03T10:25:41Z wikipedia>Ymblanter 0 Changed protection level for "[[Template:Wikidata]]": [[WP:High-risk templates|Highly visible template]]: request at [[WP:RFPP]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{safesubst:#invoke:Wd|main}}</includeonly><noinclude> {{Documentation}} </noinclude> 5bf277586915dfd4207113978658a5f0bfd87abf Template:V 10 1334 2669 2019-07-05T10:02:32Z w>Deryck Chan 0 Deryck Chan moved page [[Template:V]] to [[Template:VTE]] over redirect: [[Wikipedia:Redirects_for_discussion/Log/2019_June_26#Template:Vte]] wikitext text/x-wiki #REDIRECT [[Template:VTE]] {{R from move}} a5f11734455ad74228b1d295ede41cc7ab830fcf Module:Military navigation 828 1099 2397 2019-07-11T13:06:26Z wikipedia>Frietjes 0 Scribunto text/plain local p = { } local Navbox = require('Module:Navbox') local Styles = require('Module:WPMILHIST Infobox style') local function isblank(s) return (not s) or s == '' end local function isnotblank(s) return s and s ~= '' end function p.main(frame) local args = { } local pargs = frame:getParent().args local sargs = {} local tcats = '' -- process bodystyle and titlestyle if (pargs['style'] or '') == 'wide' then args['titlestyle'] = Styles['nav_box_wide_header'] args['bodystyle'] = Styles['nav_box_wide'] else args['titlestyle'] = Styles['nav_box_header'] if (pargs['border'] or '') == 'child' or (pargs['border'] or '') == 'subgroup' then args['bodystyle'] = Styles['nav_box_child'] tcats = tcats .. '[[Category:Pages using military navigation subgroups without wide style]]' else args['bodystyle'] = Styles['nav_box'] end end sargs['titlestyle'] = 1 sargs['bodystyle'] = 1 -- process groupstyle, abovestyle, belowstyle args['groupstyle'] = Styles['nav_box_label'] .. (pargs['groupstyle'] or '') sargs['groupstyle'] = 1 args['abovestyle'] = Styles['nav_box_label'] .. (pargs['abovestyle'] or '') sargs['abovestyle'] = 1 args['belowstyle'] = Styles['nav_box_label'] .. (pargs['belowstyle'] or '') sargs['belowstyle'] = 1 -- process oddstyle, evenstyle args['oddstyle'] = isnotblank(pargs['odd_color']) and ('background:' .. pargs['odd_color']) or nil sargs['oddstyle'] = 1 args['evenstyle'] = isnotblank(pargs['even_color']) and ('background:' .. pargs['even_color']) or nil sargs['evenstyle'] = 1 -- process name and rawname args['name'] = (isnotblank(pargs['name']) and pargs['name']) or pargs['rawname'] if isblank(args['name']) then args['navbar'] = 'plain' end sargs['name'] = 1 sargs['rawname'] = 1 -- copy the remaining args for k, v in pairs(pargs) do if v and v ~= '' and sargs[k] == nil then args[k] = v end end -- add allow wrap if args['title'] and (pargs['style'] or '') ~= 'wide' then if not mw.ustring.match(args['title'], '<span class="wrap">') then -- probably a more efficient way to match 15 or more characters local m = '[^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|]' m = m .. m .. m args['title'] = mw.ustring.gsub(args['title'], '%[%[(' .. m .. '[^%[%]<>|]*)%]%]', '[[%1|<span class="wrap">%1</span>]]') args['title'] = mw.ustring.gsub(args['title'], '%[%[([^%[%]<>|]*)|(' .. m .. '[^%[%]<>|]*)%]%]', '[[%1|<span class="wrap">%2</span>]]') end end -- add navbox-vertical for non-wide format if (pargs['style'] or '') ~= 'wide' then args['bodyclass'] = 'navbox-vertical' .. (args['bodyclass'] and (' ' .. args['bodyclass']) or '') end return tcats .. Navbox._navbox(args) end return p 26dd1b8952c65fbc4d05e418e8d7c3daed93fa49 Module:Formatted appearance 828 1264 2598 2019-07-18T17:24:43Z w>Gonnym 0 Scribunto text/plain -- This module requires the use of Module:List. local list = require('Module:List') local p = {} -- Local function which is used to get a correctly formatted entry. -- Function checks if the array had a value added by checking the counter, -- and returns the relevant result. local function getFormattedEntry(args, counter) if (counter == 1) then -- Check if the counter stayed the same. return "" -- Nothing was added to array; Return empty string. elseif (counter == 2) then -- Check if only one value was added to the array. return args[1] -- Only one value was added to array; Return that value. else -- The array had more than one value added. return list.makeList("unbulleted", args) -- Call list.makeList() to retrieve the formatted plainlist. end end --[[ Local function which is used to format an appearance for a comic book, in the style of: Line 1: <comic book title> #<issue number> (with comic book title in italics) Line 2: <release date> For other usages, see createGenericEntry(). The function works with the following combinations: -- Only comic book title (example: "The Incredible Hulk"). -- Title and issue number (example: "The Incredible Hulk" and "181"). -- Title and release date (example: "The Incredible Hulk and "November 1974"). -- Title, issue number and release date (example: "The Incredible Hulk", "181" and "November 1974"). -- Only release date (example: "November 1974"). --]] local function createComicEntry(appearanceMajor, appearanceMinor, appearanceDate) local fullString = {} -- Variable to save the array. local counter = 1 -- Variable to save the array counter. if (appearanceMajor ~= nil) then -- Check if a comic book title was entered. if (appearanceMinor == nil) then -- A comic book title was entered; Check if a issue number was entered. fullString[counter] = appearanceMajor -- A issue was not entered; Add only the comic book title to the array. counter = counter + 1 -- Increment counter by one. else fullString[counter] = appearanceMajor .. " " .. appearanceMinor -- A issue was entered; Add both to the array. counter = counter + 1 -- Increment counter by one. end end if (appearanceDate ~= nil) then -- Check if a release date was entered. fullString[counter] = appearanceDate -- A release date was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end return getFormattedEntry(fullString, counter) -- Call getFormattedEntry() to get a correctly formatted entry. end --[[ Local function which is used to format an appearance for most usages, including television, film, books, songs and games, in the style of: Line 1: <minor work title> (in quotes) (Minor works include: TV episodes, chapters, songs and game missions) Line 2: <major work title> (in italics) (Major works include: TV series, films, books, albums and games) Line 3: <release date> For comic book usages, see createComicEntry(). The function works with the following combinations: -- Only minor work title (example: "Live Together, Die Alone"). -- Minor work title and major work title (example: "Live Together, Die Alone" and "Lost"). -- Minor work title and release date (example: "Live Together, Die Alone" and "May 24, 2006"). -- Minor work title, major work title and release date (example: "Live Together, Die Alone", "Lost" and "May 24, 2006"). -- Only major work title (example: "Lost"). -- major work title and release date (example: "Lost" and "May 24, 2006"). -- Only release date (example: "May 24, 2006"). --]] local function createGenericEntry(appearanceMajor, appearanceMinor, appearanceDate) local fullString = {} -- Variable to save the array. local counter = 1 -- Variable to save the array counter. if (appearanceMinor ~= nil) then -- Check if a minor appearance was entered. fullString[counter] = appearanceMinor -- A minor appearance was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end if (appearanceMajor ~= nil) then -- Check if a major appearance was entered. fullString[counter] = appearanceMajor -- A major appearance was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end if (appearanceDate ~= nil) then -- Check if a release date was entered. fullString[counter] = appearanceDate -- A release date was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end return getFormattedEntry(fullString, counter) -- Call getFormattedEntry() to get a correctly formatted entry. end -- Local function which is used to format with a hash symbol comic book issues. -- For other minor works, see getFormattedGenericMinorWork(). local function getFormattedComicMinorWorkTitle(issue) if (issue ~= nil) then -- Check if the issue is not nil. if (string.find(issue, "#")) then -- Check if the issue already has a hash symbol. return issue -- Hash symbol already present; Return issue. else local formattedString = string.gsub(issue, "%d+", "#%1") -- Hash symbol not found; Add the symbol before the issue number. return formattedString -- Return issue. end else return nil -- issue is nil; Return nil. end end -- Local function which is used to format with quotes a minor work title of most types. -- For comic book issues, see getFormattedComicMinorWork() (see [MOS:MINORWORK]). local function getFormattedGenericMinorWorkTitle(title) if (title ~= nil) then -- Check if the title is not nil. return "\"" .. title .. "\"" -- Title is not nil; Add quotes to the title. else return nil -- Title is nil; Return nil. end end -- Local function which is used to format with italics a major work title (see [MOS:MAJORWORK]). local function getFormattedMajorWorkTitle(title) if (title ~= nil) then -- Check if the title is not nil. return "''" .. title .. "''" -- Title is not nil; Add italics to the title. else return nil -- Title is nil; Return nil. end end -- Local function which does the actual main process. local function _getFormattedAppearance(args) local appearanceMajor = args['major_work'] -- Get the title of the major work. local appearanceMinor = args['minor_work'] -- Get the title of the minor work. local isComic = false -- Variable to save the status of wether the appearence is from a comic book. if (args['issue'] ~= nil) then -- Check if the comic specific issue is not nil. appearanceMinor = args['issue'] -- Issue is not nil; Get the issue number. isComic = true -- Set isComic to true. end local appearanceDate = args['date'] -- Get the release date of the minor work. local formattedAppearanceMajor = getFormattedMajorWorkTitle(appearanceMajor) -- Call getFormattedMajorWorkTitle() to get a formatted major work title. if (isComic == false) then -- Check if the appearance is a comic book appearance. -- The appearance is not a comic book appearance; local formattedAppearanceMinor = getFormattedGenericMinorWorkTitle(appearanceMinor) -- Call getFormattedGenericMinorWorkTitle() to get a formatted minor work title. return createGenericEntry(formattedAppearanceMajor, formattedAppearanceMinor, appearanceDate) -- Call createGenericEntry() to create an appearance entry. else -- The appearance is a comic book appearance. local formattedAppearanceMinor = getFormattedComicMinorWorkTitle(appearanceMinor) -- Call getFormattedComicMinorWorkTitle() to get a formatted minor work title. return createComicEntry(formattedAppearanceMajor, formattedAppearanceMinor, appearanceDate) -- Call createComicEntry() to create a comic book appearance entry. end end --[[ Public function which is used to format the |first_appeared= and |last_appeared= fields. The usage of this module allows for correct title formatting (see [MOS:MAJORWORK] and [MOS:MINORWORK]), and correct line breaks based on guidelines (see [WP:UBLIST]). Parameters: -- |major_work= — optional; The title of the major work the fictional element appeared in. Major works include TV series, films, books, albums and games. -- |minor_work= — optional; The title of the minor work the fictional element appeared in. Minor works include TV episodes, chapters, songs and game missions. -- |issue= — optional; The number of the comic book issue the fictional element appeared in. -- |date= — optional; The date of the publication/release of the minor work where the fictional element appeared in. --]] function p.getFormattedAppearance(frame) local getArgs = require('Module:Arguments').getArgs -- Use Module:Arguments to access module arguments. local args = getArgs(frame) -- Get the arguments sent via the template. return _getFormattedAppearance(args) -- Call _getFormattedAppearance() to perform the actual process. end return p 21c7590d5c0d7d710104335553aa10711c9b3b6e Template:WIA 10 1740 3295 2019-08-20T18:35:30Z wikipedia>Muboshgu 0 [[MOS:ACCESS#Text]] / [[MOS:FONTSIZE]]: "Avoid using smaller font sizes in elements that already use a smaller font size, such as infoboxes, navboxes and reference sections." wikitext text/x-wiki &nbsp;([[Wounded in action|{{abbr|WIA|Wounded in action}}]])<noinclude>{{documentation}}</noinclude> e1621e089aafa654395dd85099656f4d070e1f5e Template:KIA 10 1495 2830 2019-08-20T18:37:30Z w>Muboshgu 0 [[MOS:ACCESS#Text]] / [[MOS:FONTSIZE]]: "Avoid using smaller font sizes in elements that already use a smaller font size, such as infoboxes, navboxes and reference sections." wikitext text/x-wiki &nbsp;[[<!---(link:)-->{{{1|Killed in action}}}<!-- -->|<!--(label:)-->{{#ifeq:{{{alt|}}}|yes |(KIA) |<span style="font-family:'Times New Roman','Old English Text MT',serif">{{#ifeq:{{{bold|}}}|no |&dagger; |'''&dagger;'''}}</span>}}<!-- -->]]<noinclude> {{Documentation}} </noinclude> 40db638380717ea2f21d23962d35f009deec5b20 Template:Infobox pope styles 10 1128 2453 2019-09-11T09:48:34Z w>RMCD bot 0 Removing notice of move discussion wikitext text/x-wiki {{Infobox manner of address | background = gold | type = Papal | name = {{{name|{{{papal name|{{<includeonly>safesubst:</includeonly>PAGENAME}}}}}}}} | image = {{<includeonly>safesubst:</includeonly>#if:{{{image|}}}|{{{image}}}|Emblem of the Papacy SE.svg}} | size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|60px}} | reference = {{{dipstyle<includeonly>|</includeonly>}}} | spoken = {{{offstyle<includeonly>|</includeonly>}}} | religious = {{{relstyle<includeonly>|</includeonly>}}} | posthumous = {{{deathstyle<includeonly>|</includeonly>}}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Pope styles]] with unknown parameter "_VALUE_"|ignoreblank=y| deathstyle | dipstyle | image | image_size | name | offstyle | papal name | relstyle }}<noinclude> {{documentation}} </noinclude> 6d3096faba3a697b5e6da3e933b32598e4561958 Template:Ubl 10 1239 2573 2019-09-11T19:30:27Z w>Paine Ellsworth 0 convert to shell template wikitext text/x-wiki #REDIRECT [[Template:Unbulleted list]] {{Rcat shell| {{R from template shortcut}} }} 6b250cba5f224bbaa761c7bdc41463e1cef32a3d Template:Infobox person/height 10 177 407 2019-09-26T15:11:11Z wikipedia>Frietjes 0 use lua version for efficiency and readability, passes all tests in the testscases so seems fine wikitext text/x-wiki {{#invoke:person height|main}}<noinclude> {{Documentation}} </noinclude> 7e4749e2788885b5a8760fedb7cc278e9a60a85a Module:Is infobox in lead 828 1356 2691 2019-10-07T04:35:39Z w>Galobtter 0 exclude certain infoboxes per talk Scribunto text/plain local p = {} function p.main (frame) return p._main (frame.args[1]) end function p._main (searchString) local content = mw.title.getCurrentTitle():getContent() local offset = string.find(content, "==", 1 , true) if offset then local lead = string.sub(content, 1, offset-1) if (string.find(lead, searchString)) then lead = lead :gsub( "{{%s-[Ii]nfobox%s-mapframe", "") --don't check for infobox mapframe :gsub( "{{%s-[Ii]nfobo[^}]-%|%s-embed%s-=%s-yes", "") --don't check for embeded infoboxes :gsub( "{{%s-[Ii]nfobo[^}]-%|%s-child%s-=%s-yes", "") --don't check for child infoboxes local iter = string.gmatch(lead, "{{%s-[Ii]nfobox") iter() if not iter() then --if able to find two infoboxes in the lead, then don't return true local iter2 = string.gmatch(content, searchString) iter2() if not iter2() then --if able to find two of the specific infobox in the article, then don't return true return true end end end end end return p e51275218355573466c0d04d6f23c98f0d6532f4 Template:Mono 10 461 1348 2019-10-13T01:15:06Z wikipedia>Izno 0 implement ifsubst wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>ifsubst|1=|2=<templatestyles src="Mono/styles.css" />}}<span class="monospaced">{{{2|{{{1}}}}}}</span><noinclude> {{Documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 800f06823c02b03f8b9cf1e245ad8c4829cfe931 Template:Infobox settlement/lengthdisp 10 1456 2791 2019-10-16T22:18:36Z w>WOSlinker 0 avoid redirects wikitext text/x-wiki <includeonly>{{infobox settlement/{{infobox settlement/pref|{{{pref}}}|{{{name}}}}} |metv={{#if:{{{km|}}}{{{m|}}} |{{{km|}}}{{{m|}}} |{{#if:{{{mi|}}} |{{round |{{#expr:{{formatnum:{{{mi}}}|R}}*1.609344}} |{{precision|{{formatnum:{{{mi}}}|R}}}} }} |{{round |{{#expr:{{formatnum:{{{ft}}}|R}}*0.3048}} |{{max |{{precision|{{formatnum:{{{ft}}}|R}}}} |-{{Order of magnitude|{{#expr:{{formatnum:{{{ft}}}|R}}*0.3048}}}} }} }} }} }} |metu={{#if:{{{km|}}}{{{mi|}}}|k}}m |impv={{#if:{{{mi|}}}{{{ft|}}} |{{{mi|}}}{{{ft|}}} |{{#if:{{{km|}}} |{{round |{{#expr:{{formatnum:{{{km}}}|R}}/1.609344}} |{{max |{{precision|{{formatnum:{{{km}}}|R}}}} |-{{Order of magnitude|{{#expr:{{formatnum:{{{km}}}|R}}/1.609344}}}} }} }} |{{round |{{#expr:{{formatnum:{{{m}}}|R}}/0.3048}} |{{precision|{{formatnum:{{{m}}}|R}}}} }} }} }} |impu={{#if:{{{km|}}}{{{mi|}}}|mi|ft}} }}</includeonly><noinclude> {{Documentation}} </noinclude> 8525c091822d9f317f267e88861faee9689a3a3f Template:Infobox settlement/areadisp 10 1438 2773 2019-10-16T22:23:26Z w>WOSlinker 0 avoid redirects wikitext text/x-wiki <includeonly>{{infobox settlement/{{infobox settlement/pref|{{{pref}}}|{{{name}}}|area}}{{#if:{{{mag|}}}|/mag}} |metv={{#if:{{{ha|}}}{{{km2|}}} |{{#if:{{{ha|}}}|{{{ha}}}|{{{km2}}}}} |{{#if:{{{dunam|}}} |{{#ifexpr:{{formatnum:{{{dunam}}}|R}}<1E3 |{{round<!-- convert dunams to hectares --> |{{#expr:{{formatnum:{{{dunam}}}|R}}/10}} |({{precision|{{formatnum:{{{dunam}}}|R}}}}+1) }}<!-- end round --> |{{round<!-- convert dunams to square kilometres --> |{{#expr:{{formatnum:{{{dunam}}}|R}}/1E3}} |({{precision|{{formatnum:{{{dunam}}}|R}}}}+3) }}<!-- end round --> }}<!-- end #ifexpr:...{{{dunam}}}...<1E3 --> |{{#if:{{{acre|}}} |{{round<!-- convert acres to hectares --> |{{#expr:{{formatnum:{{{acre}}}|R}}*0.4046856422}} |{{max<!-- output at least one sig fig --> |{{precision|{{formatnum:{{{acre}}}|R}}}} |-{{Order of magnitude|{{#expr:{{formatnum:{{{acre}}}|R}}*0.4046856422}}}} }}<!-- end max --> }}<!-- end round --> |{{round<!-- convert square miles to square kilometres --> |{{#expr:{{formatnum:{{{sqmi}}}|R}}*2.589988110336}} |{{max<!-- output at least one sig fig --> |({{precision|{{formatnum:{{{sqmi}}}|R}}}}-1) |-{{Order of magnitude|{{#expr:{{formatnum:{{{sqmi}}}|R}}*2.589988110336}}}} }}<!-- end max --> }}<!-- end rnd --> }}<!-- end #if:{{{acre|}}} --> }}<!-- end #if:{{{dunam|}}} --> }}<!-- end #if:{{{ha|}}}{{{km2|}}} --> |metu={{#if:{{{ha|}}}{{#if:{{{km2|}}} | |{{#if:{{{dunam|}}} |{{#ifexpr:{{formatnum:{{{dunam}}}|R}}<1E3|X}} |{{{acre|}}} }} }} |ha |km<sup>2</sup> }} |impv={{#if:{{{acre|}}}{{{sqmi|}}} |{{#if:{{{acre|}}}|{{{acre}}}|{{{sqmi}}}}} |{{#if:{{{ha|}}}{{{km2|}}} |{{#if:{{{ha|}}} |{{round<!-- convert hectares to acres --> |{{#expr:{{formatnum:{{{ha}}}|R}}/0.4046856422}} |({{precision|{{formatnum:{{{ha}}}|R}}}}) }}<!-- end round --> |{{round<!-- convert square kilometres to square miles --> |{{#expr:{{formatnum:{{{km2}}}|R}}/2.589988110336}} |{{max<!-- output at least one sig fig --> |{{precision|{{formatnum:{{{km2}}}|R}}}} |-{{Order of magnitude|{{#expr:{{formatnum:{{{km2}}}|R}}/2.589988110336}}}} }}<!-- end max --> }}<!-- end round --> }}<!-- end #if:{{{ha|}}} --> |{{#ifexpr:{{formatnum:{{{dunam}}}|R}}<2589 |{{round<!-- convert dunams to acres --> |{{#expr:{{formatnum:{{{dunam}}}|R}}/4.046856422}} |{{max<!-- output at least one sig fig --> |({{precision|{{formatnum:{{{dunam}}}|R}}}}) |-{{Order of magnitude|{{#expr:{{formatnum:{{{dunam}}}|R}}/4.046856422}}}} }}<!-- end max --> }}<!-- end round --> |{{round<!-- convert dunams to square miles --> |{{#expr:{{formatnum:{{{dunam}}}|R}}/2589.988110336}} |{{max<!-- output at least one sig fig --> |({{precision|{{formatnum:{{{dunam}}}|R}}}}+3) |-{{Order of magnitude|{{#expr:{{formatnum:{{{dunam}}}|R}}/2589.988110336}}}} }}<!-- end max --> }}<!-- end round --> }}<!-- end #ifexpr:...{{{dunam}}}...<2589 --> }}<!-- end #if:{{{ha|}}}{{{km2|}}} --> }}<!-- end #if:{{{acre|}}}{{{sqmi|}}} --> |impu={{#if:{{{acre|}}}{{#if:{{{sqmi|}}} | |{{{ha|}}}{{#if:{{{km2|}}} | |{{#ifexpr:{{formatnum:{{{dunam}}}|R}}<2589|X}} }} }} |acre |sq&nbsp;mi }} |dunv={{#if:{{#ifeq:{{lc:{{{pref}}}}}|dunam|{{{dunam|}}}|no dunams}} |{{{dunam}}} |{{#if:{{{ha|}}}{{{km2|}}} |{{#if:{{{km2|}}} |{{round<!-- convert square kilometres to dunams --> |{{#expr:{{formatnum:{{{km2}}}|R}}*1E3}} |({{precision|{{formatnum:{{{km2}}}|R}}}}-3) }}<!-- end round --> |{{round<!-- convert hectares to dunams --> |{{#expr:{{formatnum:{{{ha}}}|R}}*10}} |({{precision|{{formatnum:{{{ha}}}|R}}}}-1) }}<!-- end round --> }}<!-- end #if:{{{km2|}}} --> |{{#if:{{{sqmi|}}} |{{round<!-- convert square miles to dunams --> |{{#expr:{{formatnum:{{{sqmi}}}|R}}*2589.988110336}} |{{max<!-- output at least one sig fig --> |({{precision|{{formatnum:{{{sqmi}}}|R}}}}-4) |-{{Order of magnitude|{{#expr:{{formatnum:{{{sqmi}}}|R}}*2589.988110336}}}} }}<!-- end max --> }}<!-- end round --> |{{round<!-- convert acres to dunams --> |{{#expr:{{formatnum:{{{acre}}}|R}}*4.046856422}} |{{max<!-- output at least one sig fig --> |({{precision|{{formatnum:{{{acre}}}|R}}}}-1) |-{{Order of magnitude|{{#expr:{{formatnum:{{{acre}}}|R}}*4.046856422}}}} }}<!-- end max --> }}<!-- end round --> }}<!-- end #if:{{{sqmi|}}} --> }}<!-- end #if:{{{ha|}}}{{{km2|}}} --> }} |dunu={{#if:{{{link|}}}|[[dunam]]|dunam}} }}</includeonly><noinclude> {{documentation}} </noinclude> a6ccd372b44beed9525741b6fcd5317fb970eb89 Template:Edit 10 100 247 2019-10-17T18:13:48Z Wugapodes 19 Add support for tooltips per edit request on talk wikitext text/x-wiki <span class="noprint plainlinks" title="{{#if:{{{tooltip|}}}|{{{tooltip}}}|Edit {{{1}}}}}">[{{fullurl:{{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}|action=edit{{#if:{{{section|}}}|&section={{{section}}}}}{{#if:{{{editintro|}}}|&editintro={{urlencode:{{{editintro}}}|wiki}}}}{{#if:{{{preload|}}}|&preload={{urlencode:{{{preload}}}|wiki}}}}{{#if:{{{preloadtitle|}}}|&preloadtitle={{urlencode:{{{preloadtitle}}}}}}}}} {{{2|edit}}}]</span><noinclude> {{documentation}} </noinclude> 20ae9613e64bbdd279f1d1c7a3d2ddf64d1b1b48 Template:Flagdeco/core 10 1722 3246 2019-10-22T23:20:36Z wikipedia>S.A. Julio 0 /* top */adjusting for improved method to define custom flag sizes wikitext text/x-wiki <span class="flagicon">[[File:{{{flag alias-{{{variant}}}|{{{flag alias}}}}}}|{{#if:{{{size|}}}|{{{size}}}|{{{size flag alias-{{{variant}}}|{{#if:{{{variant|}}}|23x15px|{{{size flag alias|23x15px}}}}}}}}}}|{{{border-{{{variant}}}|{{{border|border}}}}}} |alt=|link=]]</span><noinclude>{{documentation}}</noinclude> 42dea5caf343aa87e6e075eb1bec3aebe1f396b1 Template:To 10 222 502 2019-10-25T21:00:29Z RhinosF1 27 12 revisions imported: requested + few more wikitext text/x-wiki {{SAFESUBST:<noinclude />#if:{{{1|<noinclude>$</noinclude>}}} |<span class="template-ping">'''''<small>To</small>''''' [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{1|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label1|{{{1|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{2|}}} |{{SAFESUBST:<noinclude />#if:{{{3|}}}|,|&nbsp;and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{2|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label2|{{{2|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{3|}}} |{{SAFESUBST:<noinclude />#if:{{{4|}}}|,|&nbsp;and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{3|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label3|{{{3|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{4|}}} |{{SAFESUBST:<noinclude />#if:{{{5|}}}|,|&nbsp;and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{4|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label4|{{{4|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{5|}}} |{{SAFESUBST:<noinclude />#if:{{{6|}}}|,|&nbsp;and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{5|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label5|{{{5|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{6|}}} |{{SAFESUBST:<noinclude />#if:{{{7|}}}|,|&nbsp;and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{6|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label6|{{{6|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{7|}}} |&nbsp;and [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{7|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label7|{{{7|Example}}}}}}}}]] }} }} }} }} }} }}{{{p|:}}}</span> |{{SAFESUBST:<noinclude />Error|Error in [[Template:To]]: Username not given.}} }}<noinclude> {{documentation}} </noinclude> 9c0fea6f23b8ce7384dc9f1dcde0385ac8f6288e Template:Center 10 431 936 2019-10-25T21:01:11Z meta>RhinosF1 0 11 revisions imported: requested + few more wikitext text/x-wiki <includeonly><div class="center" style="width:auto; margin-left:auto; margin-right:auto;{{#if: {{{style|}}} | {{{style}}};}}">{{{1}}}</div>{{#if:{{{1|}}}||[[Category:Pages using center with no arguments]]}}</includeonly><noinclude> {{documentation}} </noinclude> 7bbd9f349458b75c72afaefd8f39f80b7903afc7 Template:Imbox 10 1313 2648 2019-10-30T12:49:02Z w>RMCD bot 0 Removing notice of move discussion wikitext text/x-wiki {{#invoke:Message box|imbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 4d46e2eee16ad5fba44d200a3b26b401f2fd6710 Template:Time ago 10 1532 2867 2019-11-08T05:01:19Z Wugapodes 19 noncaps wikitext text/x-wiki {{#invoke:Time ago|main}}<noinclude> {{documentation}} <!-- Categories go in the /doc subpage and interwikis go in Wikidata. --> </noinclude> c4d4d92759a3f7eea8f93dd962df4c0abcea36fd Module:Location map/data/Earth 828 1502 2837 2019-11-17T21:50:23Z w>Sumanuil 0 Blast it. Scribunto text/plain return { name = 'Earth', top = 90, bottom = -90, left = -180, right = 180, image = 'World location map (equirectangular 180).svg', image1='World location map (equirectangular 180).svg'} 0c7a9c4349065ea43134d0a61037d31862f2a042 Template:URL 10 1175 2504 2019-11-18T00:50:36Z w>Jonesey95 0 Adding unknown parameter tracking through [[:Category:Pages using URL template with unknown parameters]] using [[Module:check for unknown parameters]] wikitext text/x-wiki <includeonly>{{#invoke:URL|url}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using URL template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:URL]] with unknown parameter "_VALUE_"|ignoreblank=y | 1 | 2 }}<noinclude>{{documentation}}</noinclude> 5671474ce4656f07c5bdc47292d1dcbe9c70317e Template:Getalias/core 10 1467 2802 2019-12-02T23:56:56Z w>S.A. Julio 0 cat wikitext text/x-wiki {{{{{{name|}}} alias-{{{variant}}}|{{{{{{name|}}} alias|{{{alias}}}}}}}}}<noinclude> {{Documentation|content=This template is used internally by [[Template:getalias]]. It is not intended to be transcluded directly.}} [[Category:Flag template system]] [[Category:Flag template system cores]] </noinclude> 78b28eacac86e1f96380a66894b79478231bc541 Template:Unbulleted list 10 163 379 2019-12-09T17:31:16Z wikipedia>Jonesey95 0 Undid revision 929522913 by [[Special:Contributions/MSGJ|MSGJ]] ([[User talk:MSGJ|talk]]). Reverted, as this change has been shown to have bugs. Discussion continues on talk page. wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:list|unbulleted}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 89815a491d3e05b20af446e34cda13f13c25fb4f Template:Wdib 10 1230 2563 2019-12-19T17:05:39Z w>RexxS 0 Undid revision 931560015 by [[Special:Contributions/RexxS|RexxS]] ([[User talk:RexxS|talk]]) rv test wikitext text/x-wiki {{#invoke:WikidataIB|getValue}}<noinclude> {{documentation}} </noinclude> fa7d9c2bb5c42c526c39cda90ec66adf62985650 Template:Purge page 10 876 1942 2020-01-01T18:16:39Z wikipedia>DannyS712 0 use [[Special:Purge]] shortcut wikitext text/x-wiki <i class="noprint">[[Special:Purge/{{FULLPAGENAME}}|<small {{#if:{{{color|}}}|style="color:{{{color}}}"}}>{{{1|Purge server cache}}}</small>]]</i><noinclude>{{Documentation}}</noinclude> 2b1975cb149a2921ef0b42dc0a85a8d2b12e9fde Module:Location map/data/North America 828 1682 3122 2020-01-06T15:45:38Z wikipedia>CommonsDelinker 0 Replacing North_America_laea_relief_location_map.jpg with [[File:North_America_laea_relief_location_map_with_borders.jpg]] (by [[commons:User:CommonsDelinker|CommonsDelinker]] because: [[:c:COM:FR|File renamed]]: [[:c:COM:FR#FR2|Criterion 2]] (meaningless Scribunto text/plain return { name = 'North America', x = '(69.398)*( cos( $1*0.01745329252 )*sin( ($2-(-100.0))*0.01745329252 ) ) * ( ((1 + sin( $1*0.01745329252 )*sin( 47.5*0.01745329252 ) + cos( $1*0.01745329252 )*cos( 47.5*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) *0.5)^ -0.5) - (-50.0)', y = '(100 + (-50.0) ) - (68.9773)*( cos( 47.5*0.01745329252 )*sin( $1*0.01745329252 ) - sin( 47.5*0.01745329252 )*cos( $1*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) * ( ((1 + sin( $1*0.01745329252 )*sin( 47.5*0.01745329252 ) + cos( $1*0.01745329252 )*cos( 47.5*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) *0.5)^ -0.5)', image = 'North_America_laea_location map.svg', image1 = 'North America laea relief location map with borders.jpg' } 5023e7c80f1e6a04f4c3eba9557784b383579454 Template:Cs2 10 836 1854 2020-01-10T12:28:45Z wikipedia>Redrose64 0 Undid revision 934607874 by [[Special:Contributions/Milker|Milker]] ([[User talk:Milker|talk]]) please don't do this, it screws with tools wikitext text/x-wiki [[Help:Citation Style 2|Citation Style 2]]<noinclude> [[Category:Documentation assistance templates]] </noinclude> 858b36b946491e8f374a732e2a72589c9d6f7f00 Template:Strongbad 10 1254 2588 2020-01-20T02:07:28Z w>JJMC89 0 make sure "{{{style}}}" is not passed to {{strong}} per request by 184.254.188.63; use {{main other}} wikitext text/x-wiki {{main other|{{FormattingError|Template:Strongbad is only for use in template documentation, guidelines and other Wikipedia-internal purposes. Do not use it in actual articles.}}|{{strong|1={{{1}}}|style=color: red; {{{style|}}} |role={{{role|}}} |class={{{class|}}} |id={{{id|}}} |title={{{title|}}} }}}}<noinclude> {{documentation}} <!-- Add cats and interwikis to the /doc subpage, not here! --> </noinclude> c695b91f21a832d4e6d92504b57ab3c0d6520996 Template:\sandbox 10 1317 2652 2020-02-11T15:54:10Z w>Christian75 0 {{sandbox other}} was changed so its now like (sandbox OR doc) other - fixing that wikitext text/x-wiki {{#ifeq:{{SUBPAGENAME}}|sandbox |/sandbox}}<noinclude>{{Documentation}}</noinclude> 24faafab5125adc84dc558242ae324e5040dc906 Template:Infobox Austrian royalty styles 10 1120 2445 2020-03-10T18:31:08Z w>Zyxw 0 {{Wraps infobox|Infobox manner of address}} wikitext text/x-wiki {{Infobox manner of address | type = Monarchical | name = {{{royal name<includeonly>|</includeonly>}}} | image = Imperial Coat of Arms of the Empire of Austria (1815).svg | size = 50px | reference = {{{dipstyle<includeonly>|</includeonly>}}} | spoken = {{{offstyle<includeonly>|</includeonly>}}} | alternative = {{{altstyle<includeonly>|</includeonly>}}} }}<noinclude>{{Documentation|content= {{Wraps infobox|Infobox manner of address}} {{DEFAULTSORT:Austrian royalty styles}} [[Category:Royalty and nobility infobox templates]] [[Category:Styles infobox templates]] }}</noinclude> 69499ae914132efb0c35f278c64b1225dcdfc017 Template:Sfnm 10 890 1970 2020-03-27T22:18:25Z wikipedia>Trappist the monk 0 +template; wikitext text/x-wiki <includeonly>{{#invoke:Footnotes|sfnm|template=sfnm}}</includeonly><noinclude> {{Documentation}} </noinclude> 19c7cdc6dc3804ba6e3901ed90cd2817f9956898 Template:Ombox 10 111 269 2020-04-01T06:12:36Z MusikAnimal 4 1 revision imported wikitext text/x-wiki {{#invoke:Message box|ombox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 0e54065432d540737b9e56c4e3a8e7f74d4534ea Module:Arguments 828 7 9 2020-04-01T06:12:40Z MusikAnimal 4 1 revision imported Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Module:Category handler 828 143 2240 2020-04-01T06:12:40Z wikipedia>MusikAnimal 0 1 revision imported Scribunto text/plain -------------------------------------------------------------------------------- -- -- -- CATEGORY HANDLER -- -- -- -- This module implements the {{category handler}} template in Lua, -- -- with a few improvements: all namespaces and all namespace aliases -- -- are supported, and namespace names are detected automatically for -- -- the local wiki. This module requires [[Module:Namespace detect]] -- -- and [[Module:Yesno]] to be available on the local wiki. It can be -- -- configured for different wikis by altering the values in -- -- [[Module:Category handler/config]], and pages can be blacklisted -- -- from categorisation by using [[Module:Category handler/blacklist]]. -- -- -- -------------------------------------------------------------------------------- -- Load required modules local yesno = require('Module:Yesno') -- Lazily load things we don't always need local mShared, mappings local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function trimWhitespace(s, removeBlanks) if type(s) ~= 'string' then return s end s = s:match('^%s*(.-)%s*$') if removeBlanks then if s ~= '' then return s else return nil end else return s end end -------------------------------------------------------------------------------- -- CategoryHandler class -------------------------------------------------------------------------------- local CategoryHandler = {} CategoryHandler.__index = CategoryHandler function CategoryHandler.new(data, args) local obj = setmetatable({ _data = data, _args = args }, CategoryHandler) -- Set the title object do local pagename = obj:parameter('demopage') local success, titleObj if pagename then success, titleObj = pcall(mw.title.new, pagename) end if success and titleObj then obj.title = titleObj if titleObj == mw.title.getCurrentTitle() then obj._usesCurrentTitle = true end else obj.title = mw.title.getCurrentTitle() obj._usesCurrentTitle = true end end -- Set suppression parameter values for _, key in ipairs{'nocat', 'categories'} do local value = obj:parameter(key) value = trimWhitespace(value, true) obj['_' .. key] = yesno(value) end do local subpage = obj:parameter('subpage') local category2 = obj:parameter('category2') if type(subpage) == 'string' then subpage = mw.ustring.lower(subpage) end if type(category2) == 'string' then subpage = mw.ustring.lower(category2) end obj._subpage = trimWhitespace(subpage, true) obj._category2 = trimWhitespace(category2) -- don't remove blank values end return obj end function CategoryHandler:parameter(key) local parameterNames = self._data.parameters[key] local pntype = type(parameterNames) if pntype == 'string' or pntype == 'number' then return self._args[parameterNames] elseif pntype == 'table' then for _, name in ipairs(parameterNames) do local value = self._args[name] if value ~= nil then return value end end return nil else error(string.format( 'invalid config key "%s"', tostring(key) ), 2) end end function CategoryHandler:isSuppressedByArguments() return -- See if a category suppression argument has been set. self._nocat == true or self._categories == false or ( self._category2 and self._category2 ~= self._data.category2Yes and self._category2 ~= self._data.category2Negative ) -- Check whether we are on a subpage, and see if categories are -- suppressed based on our subpage status. or self._subpage == self._data.subpageNo and self.title.isSubpage or self._subpage == self._data.subpageOnly and not self.title.isSubpage end function CategoryHandler:shouldSkipBlacklistCheck() -- Check whether the category suppression arguments indicate we -- should skip the blacklist check. return self._nocat == false or self._categories == true or self._category2 == self._data.category2Yes end function CategoryHandler:matchesBlacklist() if self._usesCurrentTitle then return self._data.currentTitleMatchesBlacklist else mShared = mShared or require('Module:Category handler/shared') return mShared.matchesBlacklist( self.title.prefixedText, mw.loadData('Module:Category handler/blacklist') ) end end function CategoryHandler:isSuppressed() -- Find if categories are suppressed by either the arguments or by -- matching the blacklist. return self:isSuppressedByArguments() or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist() end function CategoryHandler:getNamespaceParameters() if self._usesCurrentTitle then return self._data.currentTitleNamespaceParameters else if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end return mShared.getNamespaceParameters( self.title, mappings ) end end function CategoryHandler:namespaceParametersExist() -- Find whether any namespace parameters have been specified. -- We use the order "all" --> namespace params --> "other" as this is what -- the old template did. if self:parameter('all') then return true end if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end for ns, params in pairs(mappings) do for i, param in ipairs(params) do if self._args[param] then return true end end end if self:parameter('other') then return true end return false end function CategoryHandler:getCategories() local params = self:getNamespaceParameters() local nsCategory for i, param in ipairs(params) do local value = self._args[param] if value ~= nil then nsCategory = value break end end if nsCategory ~= nil or self:namespaceParametersExist() then -- Namespace parameters exist - advanced usage. if nsCategory == nil then nsCategory = self:parameter('other') end local ret = {self:parameter('all')} local numParam = tonumber(nsCategory) if numParam and numParam >= 1 and math.floor(numParam) == numParam then -- nsCategory is an integer ret[#ret + 1] = self._args[numParam] else ret[#ret + 1] = nsCategory end if #ret < 1 then return nil else return table.concat(ret) end elseif self._data.defaultNamespaces[self.title.namespace] then -- Namespace parameters don't exist, simple usage. return self._args[1] end return nil end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- Used for testing purposes. return { CategoryHandler = CategoryHandler } end function p._main(args, data) data = data or mw.loadData('Module:Category handler/data') local handler = CategoryHandler.new(data, args) if handler:isSuppressed() then return nil end return handler:getCategories() end function p.main(frame, data) data = data or mw.loadData('Module:Category handler/data') local args = require('Module:Arguments').getArgs(frame, { wrappers = data.wrappers, valueFunc = function (k, v) v = trimWhitespace(v) if type(k) == 'number' then if v ~= '' then return v else return nil end else return v end end }) return p._main(args, data) end return p b74dd63857b24904ac452429b11213f18647471f Module:Category handler/config 828 1023 2244 2020-04-01T06:12:40Z wikipedia>MusikAnimal 0 1 revision imported Scribunto text/plain -------------------------------------------------------------------------------- -- [[Module:Category handler]] configuration data -- -- Language-specific parameter names and values can be set here. -- -- For blacklist config, see [[Module:Category handler/blacklist]]. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Start configuration data -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Parameter names -- -- These configuration items specify custom parameter names. -- -- To add one extra name, you can use this format: -- -- -- -- foo = 'parameter name', -- -- -- -- To add multiple names, you can use this format: -- -- -- -- foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'}, -- -------------------------------------------------------------------------------- cfg.parameters = { -- The nocat and categories parameter suppress -- categorisation. They are used with Module:Yesno, and work as follows: -- -- cfg.nocat: -- Result of yesno() Effect -- true Categorisation is suppressed -- false Categorisation is allowed, and -- the blacklist check is skipped -- nil Categorisation is allowed -- -- cfg.categories: -- Result of yesno() Effect -- true Categorisation is allowed, and -- the blacklist check is skipped -- false Categorisation is suppressed -- nil Categorisation is allowed nocat = 'nocat', categories = 'categories', -- The parameter name for the legacy "category2" parameter. This skips the -- blacklist if set to the cfg.category2Yes value, and suppresses -- categorisation if present but equal to anything other than -- cfg.category2Yes or cfg.category2Negative. category2 = 'category2', -- cfg.subpage is the parameter name to specify how to behave on subpages. subpage = 'subpage', -- The parameter for data to return in all namespaces. all = 'all', -- The parameter name for data to return if no data is specified for the -- namespace that is detected. other = 'other', -- The parameter name used to specify a page other than the current page; -- used for testing and demonstration. demopage = 'page', } -------------------------------------------------------------------------------- -- Parameter values -- -- These are set values that can be used with certain parameters. Only one -- -- value can be specified, like this: -- -- -- -- cfg.foo = 'value name' -- -- -------------------------------------------------------------------------------- -- The following settings are used with the cfg.category2 parameter. Setting -- cfg.category2 to cfg.category2Yes skips the blacklist, and if cfg.category2 -- is present but equal to anything other than cfg.category2Yes or -- cfg.category2Negative then it supresses cateogrisation. cfg.category2Yes = 'yes' cfg.category2Negative = '¬' -- The following settings are used with the cfg.subpage parameter. -- cfg.subpageNo is the value to specify to not categorise on subpages; -- cfg.subpageOnly is the value to specify to only categorise on subpages. cfg.subpageNo = 'no' cfg.subpageOnly = 'only' -------------------------------------------------------------------------------- -- Default namespaces -- -- This is a table of namespaces to categorise by default. The keys are the -- -- namespace numbers. -- -------------------------------------------------------------------------------- cfg.defaultNamespaces = { [ 0] = true, -- main [ 6] = true, -- file [ 12] = true, -- help [ 14] = true, -- category [100] = true, -- portal [108] = true, -- book } -------------------------------------------------------------------------------- -- Wrappers -- -- This is a wrapper template or a list of wrapper templates to be passed to -- -- [[Module:Arguments]]. -- -------------------------------------------------------------------------------- cfg.wrappers = 'Template:Category handler' -------------------------------------------------------------------------------- -- End configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line. 373cd107b13a5b00e6a1b7e66a749f12502c849d Module:Category handler/data 828 1022 2242 2020-04-01T06:12:41Z wikipedia>MusikAnimal 0 1 revision imported Scribunto text/plain -- This module assembles data to be passed to [[Module:Category handler]] using -- mw.loadData. This includes the configuration data and whether the current -- page matches the title blacklist. local data = require('Module:Category handler/config') local mShared = require('Module:Category handler/shared') local blacklist = require('Module:Category handler/blacklist') local title = mw.title.getCurrentTitle() data.currentTitleMatchesBlacklist = mShared.matchesBlacklist( title.prefixedText, blacklist ) data.currentTitleNamespaceParameters = mShared.getNamespaceParameters( title, mShared.getParamMappings() ) return data abbc68048ff698e88dda06b64ecf384bbf583120 Module:Category handler/shared 828 1024 2246 2020-04-01T06:12:41Z wikipedia>MusikAnimal 0 1 revision imported Scribunto text/plain -- This module contains shared functions used by [[Module:Category handler]] -- and its submodules. local p = {} function p.matchesBlacklist(page, blacklist) for i, pattern in ipairs(blacklist) do local match = mw.ustring.match(page, pattern) if match then return true end end return false end function p.getParamMappings(useLoadData) local dataPage = 'Module:Namespace detect/data' if useLoadData then return mw.loadData(dataPage).mappings else return require(dataPage).mappings end end function p.getNamespaceParameters(titleObj, mappings) -- We don't use title.nsText for the namespace name because it adds -- underscores. local mappingsKey if titleObj.isTalkPage then mappingsKey = 'talk' else mappingsKey = mw.site.namespaces[titleObj.namespace].name end mappingsKey = mw.ustring.lower(mappingsKey) return mappings[mappingsKey] or {} end return p d2d5de1a031e6ce97c242cbfa8afe7a92cb9eca5 Module:Namespace detect/config 828 97 241 2020-04-01T06:12:44Z MusikAnimal 4 1 revision imported Scribunto text/plain -------------------------------------------------------------------------------- -- Namespace detect configuration data -- -- -- -- This module stores configuration data for Module:Namespace detect. Here -- -- you can localise the module to your wiki's language. -- -- -- -- To activate a configuration item, you need to uncomment it. This means -- -- that you need to remove the text "-- " at the start of the line. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Parameter names -- -- These configuration items specify custom parameter names. Values added -- -- here will work in addition to the default English parameter names. -- -- To add one extra name, you can use this format: -- -- -- -- cfg.foo = 'parameter name' -- -- -- -- To add multiple names, you can use this format: -- -- -- -- cfg.foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'} -- -------------------------------------------------------------------------------- ---- This parameter displays content for the main namespace: -- cfg.main = 'main' ---- This parameter displays in talk namespaces: -- cfg.talk = 'talk' ---- This parameter displays content for "other" namespaces (namespaces for which ---- parameters have not been specified): -- cfg.other = 'other' ---- This parameter makes talk pages behave as though they are the corresponding ---- subject namespace. Note that this parameter is used with [[Module:Yesno]]. ---- Edit that module to change the default values of "yes", "no", etc. -- cfg.subjectns = 'subjectns' ---- This parameter sets a demonstration namespace: -- cfg.demospace = 'demospace' ---- This parameter sets a specific page to compare: cfg.demopage = 'page' -------------------------------------------------------------------------------- -- Table configuration -- -- These configuration items allow customisation of the "table" function, -- -- used to generate a table of possible parameters in the module -- -- documentation. -- -------------------------------------------------------------------------------- ---- The header for the namespace column in the wikitable containing the list of ---- possible subject-space parameters. -- cfg.wikitableNamespaceHeader = 'Namespace' ---- The header for the wikitable containing the list of possible subject-space ---- parameters. -- cfg.wikitableAliasesHeader = 'Aliases' -------------------------------------------------------------------------------- -- End of configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line. 0e4ff08d13c4b664d66b32c232deb129b77c1a56 Module:Namespace detect/data 828 96 239 2020-04-01T06:12:45Z MusikAnimal 4 1 revision imported Scribunto text/plain -------------------------------------------------------------------------------- -- Namespace detect data -- -- This module holds data for [[Module:Namespace detect]] to be loaded per -- -- page, rather than per #invoke, for performance reasons. -- -------------------------------------------------------------------------------- local cfg = require('Module:Namespace detect/config') local function addKey(t, key, defaultKey) if key ~= defaultKey then t[#t + 1] = key end end -- Get a table of parameters to query for each default parameter name. -- This allows wikis to customise parameter names in the cfg table while -- ensuring that default parameter names will always work. The cfg table -- values can be added as a string, or as an array of strings. local defaultKeys = { 'main', 'talk', 'other', 'subjectns', 'demospace', 'demopage' } local argKeys = {} for i, defaultKey in ipairs(defaultKeys) do argKeys[defaultKey] = {defaultKey} end for defaultKey, t in pairs(argKeys) do local cfgValue = cfg[defaultKey] local cfgValueType = type(cfgValue) if cfgValueType == 'string' then addKey(t, cfgValue, defaultKey) elseif cfgValueType == 'table' then for i, key in ipairs(cfgValue) do addKey(t, key, defaultKey) end end cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more. end local function getParamMappings() --[[ -- Returns a table of how parameter names map to namespace names. The keys -- are the actual namespace names, in lower case, and the values are the -- possible parameter names for that namespace, also in lower case. The -- table entries are structured like this: -- { -- [''] = {'main'}, -- ['wikipedia'] = {'wikipedia', 'project', 'wp'}, -- ... -- } --]] local mappings = {} local mainNsName = mw.site.subjectNamespaces[0].name mainNsName = mw.ustring.lower(mainNsName) mappings[mainNsName] = mw.clone(argKeys.main) mappings['talk'] = mw.clone(argKeys.talk) for nsid, ns in pairs(mw.site.subjectNamespaces) do if nsid ~= 0 then -- Exclude main namespace. local nsname = mw.ustring.lower(ns.name) local canonicalName = mw.ustring.lower(ns.canonicalName) mappings[nsname] = {nsname} if canonicalName ~= nsname then table.insert(mappings[nsname], canonicalName) end for _, alias in ipairs(ns.aliases) do table.insert(mappings[nsname], mw.ustring.lower(alias)) end end end return mappings end return { argKeys = argKeys, cfg = cfg, mappings = getParamMappings() } d224f42a258bc308ef3ad8cc8686cd7a4f47d005 Module:Yesno 828 6 7 2020-04-01T06:27:55Z MusikAnimal 4 Undid revision 948472533 by [[Special:Contributions/w>Vogone|w>Vogone]] ([[User talk:w>Vogone|talk]]) Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Module:File link 828 32 59 2020-04-01T06:31:54Z MusikAnimal 4 Undid revision 948472508 by [[Special:Contributions/w>IPad365|w>IPad365]] ([[User talk:w>IPad365|talk]]) Scribunto text/plain -- This module provides a library for formatting file wikilinks. local yesno = require('Module:Yesno') local checkType = require('libraryUtil').checkType local p = {} function p._main(args) checkType('_main', 1, args, 'table') -- This is basically libraryUtil.checkTypeForNamedArg, but we are rolling our -- own function to get the right error level. local function checkArg(key, val, level) if type(val) ~= 'string' then error(string.format( "type error in '%s' parameter of '_main' (expected string, got %s)", key, type(val) ), level) end end local ret = {} -- Adds a positional parameter to the buffer. local function addPositional(key) local val = args[key] if not val then return nil end checkArg(key, val, 4) ret[#ret + 1] = val end -- Adds a named parameter to the buffer. We assume that the parameter name -- is the same as the argument key. local function addNamed(key) local val = args[key] if not val then return nil end checkArg(key, val, 4) ret[#ret + 1] = key .. '=' .. val end -- Filename checkArg('file', args.file, 3) ret[#ret + 1] = 'File:' .. args.file -- Format if args.format then checkArg('format', args.format) if args.formatfile then checkArg('formatfile', args.formatfile) ret[#ret + 1] = args.format .. '=' .. args.formatfile else ret[#ret + 1] = args.format end end -- Border if yesno(args.border) then ret[#ret + 1] = 'border' end addPositional('location') addPositional('alignment') addPositional('size') addNamed('upright') addNamed('link') addNamed('alt') addNamed('page') addNamed('class') addNamed('lang') addNamed('start') addNamed('end') addNamed('thumbtime') addPositional('caption') return string.format('[[%s]]', table.concat(ret, '|')) end function p.main(frame) local origArgs = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:File link' }) if not origArgs.file then error("'file' parameter missing from [[Template:File link]]", 0) end -- Copy the arguments that were passed to a new table to avoid looking up -- every possible parameter in the frame object. local args = {} for k, v in pairs(origArgs) do -- Make _BLANK a special argument to add a blank parameter. For use in -- conditional templates etc. it is useful for blank arguments to be -- ignored, but we still need a way to specify them so that we can do -- things like [[File:Example.png|link=]]. if v == '_BLANK' then v = '' end args[k] = v end return p._main(args) end return p 66925f088d11530f2482f04181a3baaaa0ad3d0c Template:Template error report 10 1074 2346 2020-04-02T18:00:39Z wikipedia>MusikBot II 0 Protected "[[Template:Template error report]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Template parameter usage]] ec2d98a233a7e573eee70a96c736db071107fc23 Template:Sandbox other 10 54 103 2020-04-03T00:08:09Z wikipedia>Evad37 0 Also match subpage names beginning with "sandbox", per [[Template_talk:Sandbox_other#Template-protected_edit_request_on_28_March_2020|edit request]] wikitext text/x-wiki {{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> 91e4ae891d6b791615152c1fbc971414961ba872 Template:Tlf 10 57 109 2020-04-13T14:42:57Z wikipedia>Primefac 0 Primefac moved page [[Template:Tlf]] to [[Template:Template link with link off]]: full name to indicate what it does wikitext text/x-wiki #REDIRECT [[Template:Template link with link off]] {{Redirect category shell| {{R from move}} }} 52759e1d3f7c9aa4a03d0b7d4f84f4c6adf53edf Template:Template link with alternate text 10 1304 2639 2020-04-13T14:54:11Z w>Primefac 0 Primefac moved page [[Template:Tla]] to [[Template:Template link with alternate text]]: full name for clarity wikitext text/x-wiki {{Tlg|subst={{{subst|}}}|nowrap={{{nowrap|}}}|{{{1|}}}<!-- -->|alttext{{#ifeq:{{{2}}}|{{{2|x}}}||x}}={{{2}}}<!-- -->|3{{#ifeq:{{{3}}}|{{{3|x}}}||x}}={{{3}}}<!-- -->|4{{#ifeq:{{{4}}}|{{{4|x}}}||x}}={{{4}}}<!-- -->|5{{#ifeq:{{{5}}}|{{{5|x}}}||x}}={{{5}}}<!-- -->|6{{#ifeq:{{{6}}}|{{{6|x}}}||x}}={{{6}}}<!-- -->|7{{#ifeq:{{{7}}}|{{{7|x}}}||x}}={{{7}}}<!-- -->|8{{#ifeq:{{{8}}}|{{{8|x}}}||x}}={{{8}}}<!-- -->|9{{#ifeq:{{{9}}}|{{{9|x}}}||x}}={{{9}}}<!-- -->|10{{#ifeq:{{{10}}}|{{{10|x}}}||x}}={{{10}}}<!-- -->|11{{#ifeq:{{{11}}}|{{{11|x}}}||x}}={{{11}}}<!-- -->|12{{#ifeq:{{{12}}}|{{{12|x}}}||x}}={{{12}}}}}<noinclude> {{Documentation}} </noinclude> 7caf0bb11d2f63149bfc961432b7cf4a05b02cad Template:Tla 10 1305 2640 2020-04-13T14:54:11Z w>Primefac 0 Primefac moved page [[Template:Tla]] to [[Template:Template link with alternate text]]: full name for clarity wikitext text/x-wiki #REDIRECT [[Template:Template link with alternate text]] {{Redirect category shell| {{R from move}} }} 5705a62c7a5cc85e5377bd4b550ebeb0cc5b10fa Template:Lower 10 1206 2535 2020-04-17T00:36:35Z Ahecht 42 Make substable wikitext text/x-wiki <span style="position: relative; top: {{safesubst<noinclude />:#if:{{{2|}}}|{{{1}}}|0.6em}};">{{{2|{{{1}}}}}}</span><noinclude> {{documentation}} </noinclude> 8c1373e7c520b1f0a9dd17ea8a02e8922e84bb99 Module:Category handler/blacklist 828 1025 2248 2020-04-18T08:48:05Z wikipedia>Jo-Jo Eumerus 0 Per category talk page Scribunto text/plain -- This module contains the blacklist used by [[Module:Category handler]]. -- Pages that match Lua patterns in this list will not be categorised unless -- categorisation is explicitly requested. return { '^Main Page$', -- don't categorise the main page. -- Don't categorise the following pages or their subpages. -- "%f[/\0]" matches if the next character is "/" or the end of the string. '^Wikipedia:Cascade%-protected items%f[/\0]', '^User:UBX%f[/\0]', -- The userbox "template" space. '^User talk:UBX%f[/\0]', -- Don't categorise subpages of these pages, but allow -- categorisation of the base page. '^Wikipedia:Template index/.*$', -- Don't categorise archives. '/[aA]rchive', "^Wikipedia:Administrators' noticeboard/IncidentArchive%d+$", } 87469d7a9ef2a3c41b2bf04ae18f7c59a18fb855 Template:Infobox country/status text 10 562 1263 2020-04-21T23:25:38Z wikipedia>Jonesey95 0 Fix too small font per [[MOS:FONTSIZE]]. wikitext text/x-wiki {{#if:{{{status_text|}}} |{{{status_text}}} |{{#switch:{{ucfirst:{{{status|}}}}} |Empire=<!--Empire--> |Nomadic empire|Nomadic Empire=[[Nomadic empire]] |Ancient Chinese state |Ancient Chinese State=[[Ancient Chinese state]] |Federation |Federal=<!--Federation--> |Confederation=<!--Confederation--> |State union |State Union |Union=<!--State union--> |Special |Special territory=<!--Special territory--> |Unrecognized state |Unrecognised state |Unrecognized State |Unrecognised State |Unrecognized |Unrecognised=[[List of states with limited recognition|Unrecognized state]] |City-state |City-State |City state |City State |City={{#if:{{{empire|}}} | {{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[Free Imperial City]] of the [[Holy Roman Empire]] {{#if:{{{year_end|}}}|{{#ifexpr:{{{year_end}}}>1806|<br/>(until 1806)}}|}} |#default=City-state {{#if:{{{empire|}}}|of [[{{{empire}}}]]|}} }} |<!--City-state--> }} |Commonwealth realm |Commonwealth Realm=[[Commonwealth Realm]] |League of Nations Mandate |League of Nations |Mandate={{#if:{{{empire|}}} | [[League of Nations mandate|Mandate]] of&nbsp;{{#switch:{{{empire}}} |United Kingdom |UK=the [[United Kingdom]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }} | [[League of Nations mandate]] }} |United Nations Trust Territory| UN Trust Territory |Trust Territory=[[United Nations Trust Territories|Trust Territory]]<!-- -->{{#if:{{{empire|}}} |&nbsp;of&nbsp;{{#switch:{{{empire}}} |United Kingdom |UK=the [[United Kingdom]] |United States |US |USA=the [[United States]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }} }} |Protectorate=Protectorate of&nbsp;<!-- -->{{#if:{{{empire|}}} |{{#switch:{{{empire}}} |United Kingdom |UK=the [[United Kingdom]] |United States |US |USA=the [[United States]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }} |whom? {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}} }} |Client |Client state |Client State |Puppet |Puppet-state |Puppet state={{#if:{{{empire|}}} | {{#switch:{{{empire}}} |First French Empire |France=[[French client republic|Client]] of the [[First French Empire]] |#default=[[Puppet state]] of {{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }} | Puppet state ''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}} }} |Vassal={{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[States of the Holy Roman Empire|State]] of the [[Holy Roman Empire]] {{#if:{{{year_end|}}}|{{#ifexpr:{{{year_end}}}>1806|(until 1806)}}|}} |#default=Vassal{{#if:{{{empire|}}}|&nbsp;of&nbsp;{{{empire}}}|&nbsp;''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }} |Fief={{#switch:{{{empire|}}} |#default=Fief{{#if:{{{empire|}}}|&nbsp;of&nbsp;{{{empire}}}|&nbsp;''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }} |Abbey={{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[Imperial Abbey]] of the [[Holy Roman Empire]] {{Main other|[[Category:Imperial abbeys|{{{common_name}}}]]}} |#default=Abbey{{#if:{{{empire|}}}|&nbsp;of&nbsp;{{{empire}}}|&nbsp;''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }} |Satellite state |Satellite State |Satellite= Satellite state of the [[Soviet Union]] |Colony={{#switch:{{ucfirst:{{{empire}}}}} |United Kingdom |UK |British Empire |Britain=[[Territorial evolution of the British Empire|British colony]] |England=[[English overseas possessions|English colony]] |France |First French Empire| French Empire=[[French colonial empire|French colony]] |NL |Netherlands |The Netherlands=[[Dutch Empire|Dutch colony]] |Belgium=[[Belgian colonial empire|Belgian colony]] |Spain |Spanish Empire=[[Spanish Empire|Spanish colony]] |Portugal=[[Portuguese Empire|Portuguese colony]] |Germany |German Empire=[[German colonial empire|German colony]] |Italy=[[Italian Empire|Italian colony]] |Sweden=[[Swedish overseas colonies|Swedish colony]] |Denmark=[[Danish colonial empire|Danish colony]] |Norway=[[Norwegian Empire|Norwegian colony]] |Russia=[[Russian Empire|Russian colony]] |Japan=[[Empire of Japan|Japanese colony]] |#default=Colony ({{#if:{{{empire|}}} |{{{empire}}}) |''of whom?'') {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}} }} }} |Provisional Government |Provisional government |Provisional=[[Provisional government]] |Exiled Government |Exiled government |Exile={{#if:{{{year_exile_start|}}} | [[Government in exile|In exile]] {{#if:{{{year_exile_end|}}} |({{{year_exile_start}}}{{spaced ndash}}{{{year_exile_end}}}) |since {{{year_exile_start}}} }} | [[Government in exile]] }} |#default={{{status}}} }} }}<noinclude> {{documentation|content= This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. }}</noinclude> 4f904d43bb6c4d628d19a39a391cc105027b09bf Template:Birth date 10 1361 2696 2020-04-23T08:58:57Z Uzume 8 update tracking to use [[Module:Wd]] and not the unmaintained and deprecated [[Module:Wikidata]] wikitext text/x-wiki <span style="display:none">(<span class="bday">{{{1|{{{year}}}}}}-{{padleft:{{MONTHNUMBER|{{{2|{{{month}}}}}}}}|2|0}}-{{padleft:{{{3|{{{day}}}}}}|2|0}}</span>)</span>{{#if:{{{df|}}} |{{#expr:{{{3|{{{day}}}}}}}} {{MONTHNAME|{{{2|{{{month}}}}}}}} |{{MONTHNAME|{{{2|{{{month<noinclude>|1</noinclude>}}}}}}}} {{#expr:{{{3|{{{day<noinclude>|1</noinclude>}}}}}}}}, }} {{#expr:{{{1|{{{year<noinclude>|1900</noinclude>}}}}}}}}<includeonly><!-- -- Error checks -- -->{{#ifexpr: ( {{{1|{{{year}}}}}} > {{CURRENTYEAR}} ) | &#32;{{error|invalid year}}{{main other|[[Category:Pages using age template with invalid date]]}} }}{{#if:{{{2|}}}|{{#ifexpr: ( {{{2|{{{month}}}}}} > 12 ) OR ( {{{2|{{{month}}}}}} < 1 ) | &#32;{{error|invalid month}}{{main other|[[Category:Pages using age template with invalid date]]}}|}} }}{{#if:{{{3|}}}|{{#ifexpr: ( {{{3|{{{day}}}}}} > 31 ) OR ( {{{3|{{{day}}}}}} < 1 ) | &#32;{{error|invalid day}}{{main other|[[Category:Pages using age template with invalid date]]}}|}} }}{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{#invoke:wd|label|raw}} | {{#if: {{#invoke:String|match|{{#invoke:wd|properties|raw|P31}},|Q5,|1|1|true|}} | {{#if: {{#invoke:wd|properties|raw|P569}} | | [[Category:Date of birth not in Wikidata]] }} }} | [[Category:Articles without Wikidata item]] }} }}</includeonly><noinclude> {{Documentation}} </noinclude> de0809a844b9b3f3cf78bd54c37f6436fd2e7233 Template:Sidebar with collapsible lists 10 845 1872 2020-04-23T17:08:31Z wikipedia>Plastikspork 0 TFD closed as oppose ([[WP:XFDC|XFDcloser]]) wikitext text/x-wiki {{#invoke: Sidebar | collapsible }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 4bd1f39f9101790ed6e315752e377a8ac7a95869 Template:Convinfobox/doc 10 1570 2905 2020-04-24T16:09:17Z w>Vanisaac 0 missed removing #ifeq wikitext text/x-wiki {{Documentation subpage}} {{high-use|135543}} <!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE --> This template is a frontend for {{tl|convert}}. It is intended as a meta-template for use within the code for a template, where the input is not known ''a priori''. For unit conversions within articles, one should use {{tl|convert}} directly. This template accepts from four to seven unnamed parameters. Odd parameters must be numerical (or empty) and specify the numerical value of a measurement and the intended precision of the conversion. Even parameters must be unit codes as used in {{tlf|convert}}. Named parameters are the same as used by {{tlf|convert}}. This template differs from {{tlf|convert}} in the following respects. * The units to convert to and the units to convert from must be specified (therefore there are no default convert-to units). * Fields for the numerical value of a measurement may be left blank. * The default is to abbreviate units (where abbreviations exist). * Range conversions are not available. This template may be used when it is unknown in which direction the conversion is to be made. The direction is determined as shown in the following examples. * <code><nowiki>{{convinfobox|100|m2||sqft}}</nowiki></code> → {{convinfobox|100|m2||sqft}} * <code><nowiki>{{convinfobox||m2|100|sqft}}</nowiki></code> → {{convinfobox||m2|100|sqft}} ==Dual conversions== Dual conversions may be performed by adding a fifth (possibly blank) and sixth unnamed parameter. * <code><nowiki>{{convinfobox|375|ml||impoz||USoz}}</nowiki></code> → {{convinfobox|375|ml||impoz||USoz}} * <code><nowiki>{{convinfobox||ml|40|impoz||USoz}}</nowiki></code> → {{convinfobox||ml|40|impoz||USoz}} * <code><nowiki>{{convinfobox||ml||impoz|32|USoz}}</nowiki></code> → {{convinfobox||ml||impoz|32|USoz}} ==Paired units== Length may be expressed in feet and inches. * <code><nowiki>{{convinfobox|180|cm||ft||in}}</nowiki></code> → {{convinfobox|180|cm||ft||in}} * <code><nowiki>{{convinfobox||cm|5|ft||in}}</nowiki></code> → {{convinfobox||cm|5|ft||in}} * <code><nowiki>{{convinfobox||cm||ft|120|in}}</nowiki></code> → {{convinfobox||cm||ft|120|in}} * <code><nowiki>{{convinfobox||cm|5|ft|6|in}}</nowiki></code> → {{convinfobox||cm|5|ft|6|in}} * <code><nowiki>{{convinfobox||ft||in|180|cm}}</nowiki></code> → {{convinfobox||ft||in|180|cm}} * <code><nowiki>{{convinfobox|5|ft||in||cm}}</nowiki></code> → {{convinfobox|5|ft||in||cm}} * <code><nowiki>{{convinfobox||ft|120|in||cm}}</nowiki></code> → {{convinfobox||ft|120|in||cm}} * <code><nowiki>{{convinfobox|5|ft|6|in||cm}}</nowiki></code> → {{convinfobox|5|ft|6|in||cm}} Similarly, mass may be expressed in pounds and ounces. * <code><nowiki>{{convinfobox|8.5|kg||lb||oz}}</nowiki></code> → {{convinfobox|8.5|kg||lb||oz}} * <code><nowiki>{{convinfobox||kg|4|lb|3|oz}}</nowiki></code> → {{convinfobox||kg|4|lb|3|oz}} Mass may also be expressed in stone and pounds. * <code><nowiki>{{convinfobox|65|kg||st||lb}}</nowiki></code> → {{convinfobox|65|kg||st||lb}} * <code><nowiki>{{convinfobox||kg|10|st||lb}}</nowiki></code> → {{convinfobox||kg|10|st||lb}} * <code><nowiki>{{convinfobox||kg|10|st|7|lb}}</nowiki></code> → {{convinfobox||kg|10|st|7|lb}} * <code><nowiki>{{convinfobox||kg||st|145|lb}}</nowiki></code> → {{convinfobox||kg||st|145|lb}} ==Specifying more than one value== The template currently bases conversions on the first non-blank numerical value ignoring any secondary or tertiary values. * <code><nowiki>{{convinfobox|100|m2|100|sqft}}</nowiki></code> → {{convinfobox|100|m2|100|sqft}} * <code><nowiki>{{convinfobox|375|ml|40|impoz||USoz}}</nowiki></code> → {{convinfobox|375|ml|40|impoz||USoz}} * <code><nowiki>{{convinfobox|375|ml||impoz|32|USoz}}</nowiki></code> → {{convinfobox|375|ml||impoz|32|USoz}} * <code><nowiki>{{convinfobox||ml|40|impoz|32|USoz}}</nowiki></code> → {{convinfobox||ml|40|impoz|32|USoz}} ==Rounding== As with {{tlf|convert}} rounding can be done automatically or manually by specifying the precision and/or number of significant figures in the converted value. The number of significant figures can be determined by the parameter {{para|sigfig|}}. The precision can be determined by the fifth (if there is no sixth) or seventh (if there is a sixth) unnamed parameter as shown in the examples below. * <code><nowiki>{{convinfobox|100|m2||sqft|4}}</nowiki></code> → {{convinfobox|100|m2||sqft|4}} * <code><nowiki>{{convinfobox|100|m2||sqft|sigfig=4}}</nowiki></code> → {{convinfobox|100|m2||sqft|sigfig=4}} * <code><nowiki>{{convinfobox||ml|40|impoz||USoz|2}}</nowiki></code> → {{convinfobox||ml|40|impoz||USoz|2}} * <code><nowiki>{{convinfobox||ml|40|impoz||USoz|sigfig=3}}</nowiki></code> → {{convinfobox||ml|40|impoz||USoz|sigfig=3}} * <code><nowiki>{{convinfobox||kg|10|st|7|lb|3}}</nowiki></code> → {{convinfobox||kg|10|st|7|lb|3}} * <code><nowiki>{{convinfobox||kg|10|st|7|lb|sigfig=5}}</nowiki></code> → {{convinfobox||kg|10|st|7|lb|sigfig=5}} Specify precision "0" to prevent rounding of values ending in zero: * kilograms (kg) ** with "0": <code><nowiki>{{convinfobox|110|kg||lb|0}}</nowiki></code> → {{convinfobox|110|kg||lb|0}} ** without: <code><nowiki>{{convinfobox|110|kg||lb}}</nowiki></code> → {{convinfobox|110|kg||lb}} * pounds (lb) ** with "0": <code><nowiki>{{convinfobox||kg|240|lb|0}}</nowiki></code> → {{convinfobox||kg|240|lb|0}} ** without: <code><nowiki>{{convinfobox||kg|240|lb}}</nowiki></code> → {{convinfobox||kg|240|lb}} * metres (m) ** with "0": <code><nowiki>{{convinfobox|100|m||ft|0}}</nowiki></code> → {{convinfobox|100|m||ft|0}} ** without: <code><nowiki>{{convinfobox|100|m||ft}}</nowiki></code> → {{convinfobox|100|m||ft}} * inches (in) ** with "0": <code><nowiki>{{convinfobox||cm|100|in|0}}</nowiki></code> → {{convinfobox||cm|100|in|0}} ** without: <code><nowiki>{{convinfobox||cm|100|in}}</nowiki></code> → {{convinfobox||cm|100|in}} ==Leaving all numerical fields blank== If all numerical value fields are left blank the template returns nothing. * <code><nowiki>{{convinfobox||m2||sqft}}</nowiki></code> → {{convinfobox||m2||sqft}} * <code><nowiki>{{convinfobox||ml||impoz||USoz}}</nowiki></code> → {{convinfobox||ml||impoz||USoz}} ==See also== ; Supporting templates * [[Template:Convert]] (invokes [[Module:Convert]]) * [[:Category:Subtemplates of Template Convinfobox]] ** [[Template:Convinfobox/2]] ** [[Template:Convinfobox/3]] ** [[Template:Convinfobox/pri2]] ** [[Template:Convinfobox/pri3]] ** [[Template:Convinfobox/prisec3]] ** [[Template:Convinfobox/priter3]] ** [[Template:Convinfobox/sec2]] ** [[Template:Convinfobox/sec3]] ** [[Template:Convinfobox/secter3]] ** [[Template:Convinfobox/ter3]] ; Templates transcluding {{tl|convinfobox}} {{Collapsible list | framestyle = border 1px; | titlestyle = text-align:left;background-color:lightgrey; | # [[Template:Infobox amusement park]] # [[Template:Infobox animal]] # [[Template:Infobox bandy biography]] # [[Template:Infobox body of water]] # [[Template:Infobox cemetery]] # [[Template:Infobox college football player]] # [[Template:Infobox combat robot]] # [[Template:Infobox diocese]] # [[Template:Infobox figure skater]] # [[Template:Infobox football biography]] # [[Template:Infobox hiking trail]] # [[Template:Infobox islands/area]] #* [[Template:Infobox islands]] (via [[Template:Infobox islands/area]]) # [[Template:Infobox mountain]] #* [[Template:Infobox Berg]] (via [[Template:Infobox mountain]]) # [[Template:Infobox mountain range]] #* [[Template:Infobox Gebirgsgruppe]] (via [[Template:Infobox mountain range]]) # [[Template:Infobox NFL player]] # [[Template:Infobox person]] # [[Template:Infobox pipeline]] # [[Template:Infobox power transmission line]] # [[Template:Infobox protected area]] # [[Template:Infobox rail line]] #* [[Template:Infobox Paris Metro line]] (via [[Template:Infobox rail line]]) # [[Template:Infobox rugby biography]] # [[Template:Infobox rugby league biography]] # [[Template:Infobox sportsperson]] #* [[Template:Infobox biathlete]] (via [[Template:Infobox sportsperson]]) #* [[Template:Infobox boxer (amateur)]] (via [[Template:Infobox sportsperson]]) #* [[Template:Infobox sailor]] (via [[Template:Infobox sportsperson]]) #* [[Template:Infobox speed skater]] (via [[Template:Infobox sportsperson]]) #* [[Template:Infobox sport wrestler]] (via [[Template:Infobox sportsperson]]) #* [[Template:Infobox swimmer]] (via [[Template:Infobox sportsperson]]) # [[Template:Infobox tennis biography]] # [[Template:Infobox themed area]] # [[Template:Infobox valley]] # [[Template:Infobox water park]] # [[Template:Infobox YouTube personality]] }} {{Math templates|conversion}} <includeonly>{{Sandbox other|| <!-- Categories go here --> [[Category:Subtemplates of Template Convinfobox| ]] [[Category:Convert-like templates|{{SUBPAGENAME}}]] }}</includeonly> bcd9e864b587a1b0402f275454301f7b6e85e425 Template:Cslist 10 612 1382 2020-04-25T18:00:10Z wikipedia>MusikBot II 0 Protected "[[Template:Cslist]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <templatestyles src="Cslist/styles.css" />{{#invoke:Cslist |makelist}}<noinclude> {{documentation}} </noinclude> 8de0ef2dc8a52f1f2d050ca747d583cd776a0b84 Module:WikidataIB/titleformats 828 1233 2566 2020-04-30T16:11:19Z w>RexxS 0 add magazine Scribunto text/plain --[[ To satisfy Wikipedia:Manual of Style/Titles, certain types of items are italicised, and others are quoted. This submodule lists the entity-ids used in 'instance of' (P31), which allows a module to identify the values that should be formatted. The table p.formats is indexed by entity-id, and contains the value " or '' --]] local p = {} p.italics = { "Q571", -- book "Q13593966", -- literary trilogy "Q277759", -- book series "Q2188189", -- musical work "Q11424", -- film "Q13593818", -- film trilogy "Q24856", -- film series "Q5398426", -- television series "Q482994", -- album "Q169930", -- extended play "Q1760610", -- comic book "Q7889", -- video game "Q7058673", -- video game series "Q25379", -- play "Q2743", -- musical "Q37484", -- epic poem "Q41298", -- magazine } p.quotes = { "Q207628", -- musical composition } p.size = 0 p.formats = {} for i, v in ipairs(p.italics) do p.formats[v] = "''" p.size = p.size + 1 end for i, v in ipairs(p.quotes) do p.formats[v] = '"' p.size = p.size + 1 end return p aecc52ff69e56d315f5b60dc21d02dd94a63dfea Template:Flagicon/core 10 1174 2503 2020-04-30T21:02:17Z Ahecht 42 safesubst<noinclude />: wikitext text/x-wiki <span class="flagicon">[[File:{{{flag alias-{{{variant}}}|{{safesubst<noinclude />:#if:{{{flag alias|}}}|{{{flag alias}}}|Flag placeholder.svg}}}}}|{{safesubst<noinclude />:#if:{{{size|}}}|{{{size}}}|{{{size flag alias-{{{variant}}}|{{safesubst<noinclude />:#if:{{{variant|}}}|23x15px|{{{size flag alias|23x15px}}}}}}}}}}|{{{border-{{{variant}}}|{{{border|border}}}}}} |alt={{{alias}}}|link={{{alias}}}]]</span><noinclude>{{documentation}}</noinclude> 14677aa18a0f6a866112637a51ba28adf4dd4bbe Template:Allow wrap 10 1523 2858 2020-05-06T01:06:14Z w>Plastikspork 0 Per [[Wikipedia:Templates for discussion/Log/2020 April 27#Template:Allow wrap]] wikitext text/x-wiki #REDIRECT [[Template:Wrap]] d248c393d32080c1c735591d205ab0fdca5737f1 Template:Wrap 10 1493 2828 2020-05-06T01:08:38Z w>Plastikspork 0 Merged wikitext text/x-wiki <includeonly><span class="wrap">{{{1|&#32;}}}</span></includeonly><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> aa85f77c2939e3f50fa04a160b08510cf331ee11 Template:Flagicon image 10 1492 2827 2020-05-10T01:25:28Z w>Ɱ 0 add link param per talk wikitext text/x-wiki <span class="flagicon">[[File:{{#if:{{{1|}}}|{{{1}}}|Flag placeholder.svg}}|{{{size|23x15px}}}|{{{border|{{#if:{{{1|}}}|border}}}}} |alt=|link={{{link|}}}]]</span><noinclude>{{documentation}}</noinclude> 057d0b94a9367359ad010c3da1fcdcb1e880dcb5 Module:ISO 3166/data/GR 828 1457 2792 2020-05-18T22:17:47Z w>Drmccreedy 0 Undid revision 957444222 by [[Special:Contributions/Aliwal2012|Aliwal2012]] ([[User talk:Aliwal2012|talk]]) Revert edit that contradicts the source at https://www.iso.org/obp/ui/#iso:code:3166:GR Scribunto text/plain return { lang = "el", -- Administrative regions & self-governed part ["A"] = {name="Eastern Macedonia and Thrace",isoname="Anatolikí Makedonía kai Thráki"}, ["B"] = {name="Central Macedonia",isoname="Kentrikí Makedonía"}, ["C"] = {name="Western Macedonia",isoname="Dytikí Makedonía"}, ["D"] = {name="Epirus",isoname="Ípeiros"}, ["E"] = {name="Thessaly",isoname="Thessalía"}, ["F"] = {name="Ionian Islands",isoname="Ionía Nísia"}, ["G"] = {name="Western Greece",isoname="Dytikí Elláda"}, ["H"] = {name="Central Greece",isoname="Stereá Elláda"}, ["I"] = {name="Attica",isoname="Attikí"}, ["J"] = {name="Peloponnese",isoname="Pelopónnisos"}, ["K"] = {name="North Aegean",isoname="Vóreio Aigaío"}, ["L"] = {name="South Aegean",isoname="Nótio Aigaío"}, ["M"] = {name="Crete",isoname="Kríti"}, ["69"] = {name="Mount Athos",isoname="Ágion Óros"} } d64f5cf8df26c3d16093a20be7a4fa19074a1410 Module:For loop 828 569 1286 2020-05-22T07:38:08Z wikipedia>Johnuniq 0 require [[Module:Template invocation]] only if required (see [[Template talk:Post-nominals#Use of Module:Template_invocation]]); clean whitespace, variables Scribunto text/plain -- This module implements {{for loop}}. local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local p = {} function p.main(frame) local args = getArgs(frame, { trim = false, removeBlanks = false }) return p._main(args) end function p._main(args) local template = args['call'] or 'void' local calltemplates = yesno(args.substall or "", true) or not mw.isSubsting() local variableParam = args.pv variableParam = tonumber(variableParam) or variableParam or 1 -- fix for positional parameters local variableValPrefix = args.prefix or '' local variableValPostfix = args.postfix or '' local sep = args[1] or '' local constantArgs = p.getConstants(args) local variableVals = p.getVariableVals(args) local result = '' local addSeparator = false; for _, v in ipairs(variableVals) do v = mw.text.trim(v) if #v > 0 or not yesno(args.skipBlanks) then if addSeparator then result = result .. sep end addSeparator = true; local targs = constantArgs targs[variableParam] = variableValPrefix .. v .. variableValPostfix if calltemplates then local output = p.callTemplate(template, targs) if #mw.text.trim(output) == 0 then addSeparator = false end result = result .. output else local makeTemplate = require('Module:Template invocation').invocation result = result .. makeTemplate(template, targs) end end end return result end function p.getConstants(args) local constantArgNums = p.getArgNums(args, 'pc', 'n') local constantArgs = {} for _, num in ipairs(constantArgNums) do local keyArg = 'pc' .. tostring(num) .. 'n' local valArg = 'pc' .. tostring(num) .. 'v' local key = args[keyArg] key = tonumber(key) or key local value = args[valArg] constantArgs[key] = value end return constantArgs end function p.getVariableVals(args) local variableVals = {} if args.start or args.stop or args.by then if args[2] then error("Both start/stop/by and numbered parameters specified") end local start = tonumber(args.start or 1) local stop = tonumber(args.stop or 1) local by = tonumber(args.by or 1) for i = start, stop, by do variableVals [#variableVals + 1] = i end else for i, v in ipairs(args) do if i ~= 1 then variableVals[i - 1] = v end end end return variableVals end function p.getArgNums(args, prefix, suffix) -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix and suffix. local nums = {} local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' for k, _ in pairs(args) do local num = tostring(k):match(pattern) if num then nums[#nums + 1] = tonumber(num) end end table.sort(nums) return nums end function p.callTemplate(template, targs) return mw.getCurrentFrame():expandTemplate{title = template, args = targs} end return p 4ed4682b1fd3fbf2bf0836b46dd19bc0363d40e2 Module:Color contrast/colors 828 150 349 2020-06-03T20:27:38Z MrJaroslavik 18 1 revision imported: :) Scribunto text/plain return { aliceblue = 0.92880068253475, antiquewhite = 0.84646951707754, aqua = 0.7874, aquamarine = 0.8078549208338, azure = 0.97265264954166, beige = 0.8988459998705, bisque = 0.80732327372979, black = 0, blanchedalmond = 0.85084439608156, blue = 0.0722, blueviolet = 0.12622014321946, brown = 0.098224287876511, burlywood = 0.51559844533893, cadetblue = 0.29424681085422, chartreuse = 0.76032025902623, chocolate = 0.23898526114557, coral = 0.37017930872924, cornflowerblue = 0.30318641994179, cornsilk = 0.93562110372965, crimson = 0.16042199953026, cyan = 0.7874, darkblue = 0.018640801980939, darkcyan = 0.20329317839046, darkgoldenrod = 0.27264703559993, darkgray = 0.39675523072563, darkgreen = 0.091143429047575, darkgrey = 0.39675523072563, darkkhaki = 0.45747326349994, darkmagenta = 0.07353047651207, darkolivegreen = 0.12651920884889, darkorange = 0.40016167026524, darkorchid = 0.13413142174857, darkred = 0.054889674531132, darksalmon = 0.40541471563381, darkseagreen = 0.43789249325969, darkslateblue = 0.065792846227988, darkslategray = 0.067608151928044, darkslategrey = 0.067608151928044, darkturquoise = 0.4874606277449, darkviolet = 0.10999048339343, deeppink = 0.23866895828276, deepskyblue = 0.44481603395575, dimgray = 0.14126329114027, dimgrey = 0.14126329114027, dodgerblue = 0.27442536991456, firebrick = 0.10724525535015, floralwhite = 0.95922484825004, forestgreen = 0.18920812076002, fuchsia = 0.2848, gainsboro = 0.71569350050648, ghostwhite = 0.94311261886323, gold = 0.69860877428159, goldenrod = 0.41919977809569, gray = 0.2158605001139, green = 0.15438342968146, greenyellow = 0.80609472611453, grey = 0.2158605001139, honeydew = 0.96336535554782, hotpink = 0.34658438169715, indianred = 0.21406134963884, indigo = 0.03107561486337, ivory = 0.99071270600615, khaki = 0.77012343394121, lavender = 0.80318750514521, lavenderblush = 0.90172748631046, lawngreen = 0.73905893124963, lemonchiffon = 0.94038992245622, lightblue = 0.63709141280807, lightcoral = 0.35522120733135, lightcyan = 0.94587293494829, lightgoldenrodyellow = 0.93348351018297, lightgray = 0.65140563741982, lightgreen = 0.69091979956865, lightgrey = 0.65140563741982, lightpink = 0.58566152734898, lightsalmon = 0.4780675225206, lightseagreen = 0.35050145117042, lightskyblue = 0.56195637618331, lightslategray = 0.23830165007287, lightslategrey = 0.23830165007287, lightsteelblue = 0.53983888284666, lightyellow = 0.98161818392882, lime = 0.7152, limegreen = 0.44571042246098, linen = 0.88357340984379, magenta = 0.2848, maroon = 0.045891942324215, mediumaquamarine = 0.49389703310801, mediumblue = 0.044077780212328, mediumorchid = 0.21639251153773, mediumpurple = 0.22905858091648, mediumseagreen = 0.34393112338131, mediumslateblue = 0.20284629471622, mediumspringgreen = 0.70704308194184, mediumturquoise = 0.5133827926448, mediumvioletred = 0.14371899849357, midnightblue = 0.02071786635086, mintcream = 0.97834604947588, mistyrose = 0.82183047859185, moccasin = 0.80083000991567, navajowhite = 0.76519682342785, navy = 0.015585128108224, oldlace = 0.91900633405549, olive = 0.20027537200568, olivedrab = 0.22593150951929, orange = 0.4817026703631, orangered = 0.25516243753416, orchid = 0.31348806761439, palegoldenrod = 0.78792647887614, palegreen = 0.77936759006353, paleturquoise = 0.76436077921714, palevioletred = 0.28754994117889, papayawhip = 0.87797100199835, peachpuff = 0.74905589878251, peru = 0.30113074877936, pink = 0.63271070702466, plum = 0.45734221587969, powderblue = 0.68254586500605, purple = 0.061477070432439, rebeccapurple = 0.07492341159447, red = 0.2126, rosybrown = 0.32319457649407, royalblue = 0.16663210743188, saddlebrown = 0.097922285020521, salmon = 0.36977241527596, sandybrown = 0.46628543696283, seagreen = 0.19734199706275, seashell = 0.92737862206922, sienna = 0.13697631337098, silver = 0.52711512570581, skyblue = 0.55291668518184, slateblue = 0.14784278062136, slategray = 0.20896704076536, slategrey = 0.20896704076536, snow = 0.96533341834849, springgreen = 0.73052306068529, steelblue = 0.20562642207625, tan = 0.48237604163921, teal = 0.16996855778968, thistle = 0.56818401093733, tomato = 0.30638612719415, turquoise = 0.5895536427578, violet = 0.40315452986676, wheat = 0.74909702820482, white = 1, whitesmoke = 0.91309865179342, yellow = 0.9278, yellowgreen = 0.50762957208707, } 6ae47fdb24de4eed5ec26d203faf5341a388987b Template:If empty 10 425 924 2020-06-03T20:37:55Z MrJaroslavik 18 1 revision imported: :) wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:If empty|main}} 0882eceea8d0ea6f2b8509518c8f1dd1779a1bb8 Template:Ombox 10 111 468 269 2020-06-03T20:37:57Z MrJaroslavik 18 1 revision imported: :) wikitext text/x-wiki {{#invoke:Message box|ombox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 0e54065432d540737b9e56c4e3a8e7f74d4534ea Module:If empty 828 426 926 2020-06-03T20:37:59Z MrJaroslavik 18 1 revision imported: :) Scribunto text/plain local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = '' lowestNil = i end end for k,v in ipairs(args) do if v ~= '' then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', '[[Category:Instances of Template:If_empty missing arguments]]', {group = 'TrackingCategory'}) frame:extensionTag('references', '', {group = 'TrackingCategory'}) end return v end end end return p 39b83f8d043283ec767774d927e2f6f3fb3078b4 Template:Sidebar 10 28 51 2020-06-04T02:43:13Z wikipedia>Primefac 0 TFD closed as keep ([[WP:XFDC|XFDcloser]]) wikitext text/x-wiki {{#invoke:Sidebar|sidebar}}<noinclude> {{documentation}}</noinclude> ab2498000a99daf324f656b0badd187b4a3e2b42 Template:Birth date and age 10 1241 2575 2020-06-07T01:32:39Z Uzume 8 update tracking to use [[Module:Wd]] instead of the unmaintained and deprecated [[Module:Wikidata]] wikitext text/x-wiki <includeonly>{{{{{♥|safesubst:}}}#invoke:age|birth_date_and_age}}{{#invoke:Check for unknown parameters|check|ignoreblank=y|preview=Page using [[Template:Birth date and age]] with unknown parameter "_VALUE_"|unknown={{main other|[[Category:Pages using birth date and age template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|1|2|3|day|month|year|df|mf}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{#invoke:wd|label|raw}} | {{#if: {{#invoke:String|match|{{#invoke:wd|properties|raw|P31}},|Q5,|1|1|true|}} | {{#if: {{#invoke:wd|properties|raw|P569}} | | [[Category:Date of birth not in Wikidata]] }} }} | [[Category:Articles without Wikidata item]] }} }}</includeonly><noinclude>{{documentation}}</noinclude> 55c7a1b79d4b09cf1b1c81565ac2bd7da422612e Template:Death year and age 10 1380 2715 2020-06-07T01:44:35Z Uzume 8 update tracking to use [[Module:Wd]] instead of the unmaintained and deprecated [[Module:Wikidata]] wikitext text/x-wiki <includeonly>{{#if:{{{3|}}}|{{MONTHNAME|{{{3|}}}}} {{{1|}}}|{{{1|}}}}} (aged&nbsp;{{#expr:{{{1}}}-{{{2}}}-1}}&ndash;{{#expr:{{{1}}}-{{{2}}}}}){{#invoke:Check for unknown parameters|check|ignoreblank=y|preview=Page using [[Template:Death year and age]] with unknown parameter "_VALUE_"|unknown=[[Category:Pages using death year and age template with unknown parameters|_VALUE_{{PAGENAME}}]]|1|2|3}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{#invoke:wd|label|raw}} | {{#if: {{#invoke:String|match|{{#invoke:wd|properties|raw|P31}},|Q5,|1|1|true|}} | {{#if: {{#invoke:wd|properties|raw|P570}} | | [[Category:Date of death not in Wikidata]] }}{{#if: {{#invoke:wd|properties|raw|P569}} | | [[Category:Date of birth not in Wikidata]] }} }} | [[Category:Articles without Wikidata item]] }} }}</includeonly><noinclude> {{Documentation}} </noinclude> 8323e50ca35831b2f1c4809287d485f7d2d6af78 Template:Navbox with columns 10 1548 2883 2020-06-08T16:31:04Z Ahecht 42 Reduce [[WP:PEIS]] wikitext text/x-wiki <!-- Please do not edit without discussion first as this is a "VERY complex" template. -->{{#invoke:Navbox|navbox |name = {{{name|}}} |navbar = {{{navbar|}}} |state = {{{state|}}} |border = {{{border|{{{1|}}}}}} |title = {{{title|}}} |above = {{{above|}}} |image = {{{image|}}} |imageleft = {{{imageleft|}}} |bodyclass = {{{bodyclass|}}} |titleclass = {{{titleclass|}}} |aboveclass = {{{aboveclass|}}} |belowclass = {{{belowclass|}}} |groupclass = {{{groupclass|}}} |listclass = {{{listclass|}}} |style = {{{style|}}}{{{bodystyle|}}} |basestyle = {{{basestyle|}}} |titlestyle = {{{titlestyle|}}} |abovestyle = {{{abovestyle|}}} |belowstyle = {{{belowstyle|}}} |imagestyle = {{{imagestyle|}}} |imageleftstyle = {{{imageleftstyle|}}} |oddstyle = {{{oddstyle|}}} |evenstyle = {{{evenstyle|}}} |{{#if:{{{evenodd|}}}|evenodd|void}} = {{{evenodd|}}} |list1padding = 0px; |list1 = <!-- --><table class="navbox-columns-table" style="border-spacing: 0px; text-align:left;<!-- -->{{#if:{{{col1header|}}}{{{fullwidth|}}}|width:100%;<!-- -->|width:auto; margin-left:auto; margin-right:auto;}}{{{coltablestyle|}}}"><!-- --- Header row --- -->{{#if:{{{col1header|}}}|<tr><!-- --><td class="navbox-abovebelow" <!-- -->colspan={{{col1headercolspan|1}}} style="<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col1headerstyle|}}}">{{{col1header}}}</td><!-- -->{{#if:{{{col2header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col2headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col2headerstyle|}}}">{{{col2header}}}</td>}}<!-- -->{{#if:{{{col3header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col3headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col3headerstyle|}}}">{{{col3header}}}</td>}}<!-- -->{{#if:{{{col4header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col4headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col4headerstyle|}}}">{{{col4header}}}</td>}}<!-- -->{{#if:{{{col5header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col5headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col5headerstyle|}}}">{{{col5header}}}</td>}}<!-- -->{{#if:{{{col6header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col6headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col6headerstyle|}}}">{{{col6header}}}</td>}}<!-- -->{{#if:{{{col7header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col7headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col7headerstyle|}}}">{{{col7header}}}</td>}}<!-- -->{{#if:{{{col8header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col8headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col8headerstyle|}}}">{{{col8header}}}</td>}}<!-- -->{{#if:{{{col9header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col9headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col9headerstyle|}}}">{{{col9header}}}</td>}}<!-- -->{{#if:{{{col10header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col10headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col10headerstyle|}}}">{{{col10header}}}</td>}}<!-- -->{{#if:{{{col11header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col11headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col11headerstyle|}}}">{{{col11header}}}</td>}}<!-- -->{{#if:{{{col12header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col12headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col12headerstyle|}}}">{{{col12header}}}</td>}}<!-- -->{{#if:{{{col13header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col13headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col13headerstyle|}}}">{{{col13header}}}</td>}}<!-- -->{{#if:{{{col14header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col14headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col14headerstyle|}}}">{{{col14header}}}</td>}}<!-- -->{{#if:{{{col15header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col15headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col15headerstyle|}}}">{{{col15header}}}</td>}}<!-- -->{{#if:{{{col16header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col16headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col16headerstyle|}}}">{{{col16header}}}</td>}}<!-- -->{{#if:{{{col17header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col17headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col17headerstyle|}}}">{{{col17header}}}</td>}}<!-- -->{{#if:{{{col18header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col18headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col18headerstyle|}}}">{{{col18header}}}</td>}}<!-- -->{{#if:{{{col19header|}}}|<td class="navbox-abovebelow" <!-- -->colspan={{{col19headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col19headerstyle|}}}">{{{col19header}}}</td>}}<!-- -->{{#if:{{{col20header|}}}|<td class="navbox-abovebelow" <!-- -->style="border-left:2px solid #fdfdfd;<!-- -->font-weight:bold;{{{colheaderstyle|}}}{{{col20headerstyle|}}}">{{{col20header}}}</td>}}<!-- --></tr>}}<!-- --- Main columns--- --><tr style="vertical-align:top;"><!-- -->{{#if:{{{col1|}}}|<!-- -->{{#if:{{{col1header|}}}{{{col1footer|}}}{{{fullwidth|}}}|<!-- -->|{{#switch:{{{padding|}}}|off|0|0em|0px|0%|0;|0em;|0px;|0%;=<!-- -->|#default=<td style="width:{{{padding|5em}}};">&nbsp;&nbsp;&nbsp;</td>}}}}<!-- --><td class="navbox-list" style="padding:0px;<!-- -->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col1style|}}};width:{{{col1width|{{{colwidth|10em}}}}}};"><div> {{{col1}}} </div></td>}}<!-- -->{{#if:{{{col2|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{evencolstyle|}}};{{{col2style|}}};width:{{{col2width|{{{colwidth|10em}}}}}};"><div> {{{col2}}} </div></td>}}<!-- -->{{#if:{{{col3|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col3style|}}};width:{{{col3width|{{{colwidth|10em}}}}}};"><div> {{{col3}}} </div></td>}}<!-- -->{{#if:{{{col4|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{evencolstyle|}}};{{{col4style|}}};width:{{{col4width|{{{colwidth|10em}}}}}};"><div> {{{col4}}} </div></td>}}<!-- -->{{#if:{{{col5|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col5style|}}};width:{{{col5width|{{{colwidth|10em}}}}}};"><div> {{{col5}}} </div></td>}}<!-- -->{{#if:{{{col6|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{evencolstyle|}}};{{{col6style|}}};width:{{{col6width|{{{colwidth|10em}}}}}};"><div> {{{col6}}} </div></td>}}<!-- -->{{#if:{{{col7|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col7style|}}};width:{{{col7width|{{{colwidth|10em}}}}}};"><div> {{{col7}}} </div></td>}}<!-- -->{{#if:{{{col8|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{evencolstyle|}}};{{{col8style|}}};width:{{{col8width|{{{colwidth|10em}}}}}};"><div> {{{col8}}} </div></td>}}<!-- -->{{#if:{{{col9|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col9style|}}};width:{{{col9width|{{{colwidth|10em}}}}}};"><div> {{{col9}}} </div></td>}}<!-- -->{{#if:{{{col10|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{evencolstyle|}}};{{{col10style|}}};width:{{{col10width|{{{colwidth|10em}}}}}};"><div> {{{col10}}} </div></td>}}<!-- -->{{#if:{{{col11|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col11style|}}};width:{{{col11width|{{{colwidth|10em}}}}}};"><div> {{{col11}}} </div></td>}}<!-- -->{{#if:{{{col12|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{evencolstyle|}}};{{{col12style|}}};width:{{{col12width|{{{colwidth|10em}}}}}};"><div> {{{col12}}} </div></td>}}<!-- -->{{#if:{{{col13|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col13style|}}};width:{{{col13width|{{{colwidth|10em}}}}}};"><div> {{{col13}}} </div></td>}}<!-- -->{{#if:{{{col14|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{evencolstyle|}}};{{{col14style|}}};width:{{{col14width|{{{colwidth|10em}}}}}};"><div> {{{col14}}} </div></td>}}<!-- -->{{#if:{{{col15|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col15style|}}};width:{{{col15width|{{{colwidth|10em}}}}}};"><div> {{{col15}}} </div></td>}}<!-- -->{{#if:{{{col16|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{evencolstyle|}}};{{{col16style|}}};width:{{{col16width|{{{colwidth|10em}}}}}};"><div> {{{col16}}} </div></td>}}<!-- -->{{#if:{{{col17|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col17style|}}};width:{{{col17width|{{{colwidth|10em}}}}}};"><div> {{{col17}}} </div></td>}}<!-- -->{{#if:{{{col18|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{evencolstyle|}}};{{{col18style|}}};width:{{{col18width|{{{colwidth|10em}}}}}};"><div> {{{col18}}} </div></td>}}<!-- -->{{#if:{{{col19|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col19style|}}};width:{{{col19width|{{{colwidth|10em}}}}}};"><div> {{{col19}}} </div></td>}}<!-- -->{{#if:{{{col20|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!-- -->{{{colstyle|}}};{{{evencolstyle|}}};{{{col20style|}}};width:{{{col20width|{{{colwidth|10em}}}}}};"><div> {{{col20}}} </div></td>}}<!-- --></tr><!-- --- Footer row --- -->{{#if:{{{col1footer|}}}|<!-- --><tr><!-- --><td class="navbox-abovebelow" colspan={{{col1footercolspan|1}}} style="<!-- -->font-weight:bold;{{{colfooterstyle|}}};{{{col1footerstyle|}}}">{{{col1footer}}}</td><!-- -->{{#if:{{{col2footer|}}}|<td class="navbox-abovebelow" colspan={{{col2footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col2footerstyle|}}}">{{{col2footer}}}</td>}}<!-- -->{{#if:{{{col3footer|}}}|<td class="navbox-abovebelow" colspan={{{col3footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col3footerstyle|}}}">{{{col3footer}}}</td>}}<!-- -->{{#if:{{{col4footer|}}}|<td class="navbox-abovebelow" colspan={{{col4footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col4footerstyle|}}}">{{{col4footer}}}</td>}}<!-- -->{{#if:{{{col5footer|}}}|<td class="navbox-abovebelow" colspan={{{col5footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col5footerstyle|}}}">{{{col5footer}}}</td>}}<!-- -->{{#if:{{{col6footer|}}}|<td class="navbox-abovebelow" colspan={{{col6footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col6footerstyle|}}}">{{{col6footer}}}</td>}}<!-- -->{{#if:{{{col7footer|}}}|<td class="navbox-abovebelow" colspan={{{col7footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col7footerstyle|}}}">{{{col7footer}}}</td>}}<!-- -->{{#if:{{{col8footer|}}}|<td class="navbox-abovebelow" colspan={{{col8footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col8footerstyle|}}}">{{{col8footer}}}</td>}}<!-- -->{{#if:{{{col9footer|}}}|<td class="navbox-abovebelow" colspan={{{col9footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col9footerstyle|}}}">{{{col9footer}}}</td>}}<!-- -->{{#if:{{{col10footer|}}}|<td class="navbox-abovebelow" colspan={{{col10footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col10footerstyle|}}}">{{{col10footer}}}</td>}}<!-- -->{{#if:{{{col11footer|}}}|<td class="navbox-abovebelow" colspan={{{col11footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col11footerstyle|}}}">{{{col11footer}}}</td>}}<!-- -->{{#if:{{{col12footer|}}}|<td class="navbox-abovebelow" colspan={{{col12footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col12footerstyle|}}}">{{{col12footer}}}</td>}}<!-- -->{{#if:{{{col13footer|}}}|<td class="navbox-abovebelow" colspan={{{col13footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col13footerstyle|}}}">{{{col13footer}}}</td>}}<!-- -->{{#if:{{{col14footer|}}}|<td class="navbox-abovebelow" colspan={{{col14footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col14footerstyle|}}}">{{{col14footer}}}</td>}}<!-- -->{{#if:{{{col15footer|}}}|<td class="navbox-abovebelow" colspan={{{col15footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col15footerstyle|}}}">{{{col15footer}}}</td>}}<!-- -->{{#if:{{{col16footer|}}}|<td class="navbox-abovebelow" colspan={{{col16footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col16footerstyle|}}}">{{{col16footer}}}</td>}}<!-- -->{{#if:{{{col17footer|}}}|<td class="navbox-abovebelow" colspan={{{col17footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col17footerstyle|}}}">{{{col17footer}}}</td>}}<!-- -->{{#if:{{{col18footer|}}}|<td class="navbox-abovebelow" colspan={{{col18footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col18footerstyle|}}}">{{{col18footer}}}</td>}}<!-- -->{{#if:{{{col19footer|}}}|<td class="navbox-abovebelow" colspan={{{col19footercolspan|1}}} style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col19footerstyle|}}}">{{{col19footer}}}</td>}}<!-- -->{{#if:{{{col20footer|}}}|<td class="navbox-abovebelow" style="<!-- -->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col20footerstyle|}}}">{{{col20footer}}}</td>}}<!-- -->}}<!-- --></tr></table>{{#if:{{{col1header|}}}{{{col1|}}}{{{col1footer|}}}||[[Category:Pages using navbox columns without the first column]]}} <!-- Allow a few additional groups/lists after columns --> |liststyle = {{{liststyle|}}} |list1style = background:transparent;color:inherit; |list3style = {{{list1style|}}} |list4style = {{{list2style|}}} |list5style = {{{list3style|}}} |list6style = {{{list4style|}}} |list7style = {{{list5style|}}} |list8style = {{{list6style|}}} |list9style = {{{list7style|}}} |list10style = {{{list8style|}}} |list11style = {{{list9style|}}} |list12style = {{{list10style|}}} |list3 = {{{list1|}}} |list4 = {{{list2|}}} |list5 = {{{list3|}}} |list6 = {{{list4|}}} |list7 = {{{list5|}}} |list8 = {{{list6|}}} |list9 = {{{list7|}}} |list10 = {{{list8|}}} |list11 = {{{list9|}}} |list12 = {{{list10|}}} |groupstyle = {{{groupstyle|}}} |group3style = {{{group1style|}}} |group4style = {{{group2style|}}} |group5style = {{{group3style|}}} |group6style = {{{group4style|}}} |group7style = {{{group5style|}}} |group8style = {{{group6style|}}} |group9style = {{{group7style|}}} |group10style = {{{group8style|}}} |group11style = {{{group9style|}}} |group12style = {{{group10style|}}} |group3 = {{{group1|}}} |group4 = {{{group2|}}} |group5 = {{{group3|}}} |group6 = {{{group4|}}} |group7 = {{{group5|}}} |group8 = {{{group6|}}} |group9 = {{{group7|}}} |group10 = {{{group8|}}} |group11 = {{{group9|}}} |group12 = {{{group10|}}} |below = {{{below|}}} |tracking = no }}<noinclude> {{documentation}} <!---Please add metadata to the <includeonly> section at the bottom of the /doc subpage---> </noinclude> 894f4dbf70ef056dc92f156e092c2d819b49b95d Template:MONTHNAME 10 1342 2677 2020-06-10T21:21:03Z w>Primefac 0 Reverted edits by [[Special:Contribs/Primefac|Primefac]] ([[User talk:Primefac|talk]]) to last version by Jo-Jo Eumerus wikitext text/x-wiki <includeonly>{{#if:{{{1|}}}|{{#switch:{{MONTHNUMBER|{{{1}}}}}|1=January|2=February|3=March|4=April|5=May|6=June|7=July|8=August|9=September|10=October|11=November|12=December|Incorrect required parameter 1=''month''!}}|Missing required parameter 1=''month''!}}</includeonly><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 25327282f70efd1189b70245a0e23509f3bb65e6 Template:Plain link 10 833 1848 2020-06-10T21:31:27Z wikipedia>Primefac 0 TFD withdrawn wikitext text/x-wiki <span class="plainlinks">{{SAFESUBST:<noinclude />#if:{{{2|{{{NAME|{{{name|}}}}}}}}} |[{{{1|{{{URL|{{{url}}}}}}}}} {{{2|{{{NAME|{{{name|}}}}}}}}}] |[{{{1|{{{URL|{{{url}}}}}}}}}] }}</span><noinclude> {{documentation}} </noinclude> 2730384491e116ee2f16e9ceed1cb23b7bb148a0 Module:Infobox military conflict/styles.css 828 1498 2833 2020-06-19T22:52:04Z w>Frietjes 0 per request sanitized-css text/css /* {{pp-template}} */ @media all and (min-width:720px) { .desktop-float-right { box-sizing: border-box; float: right; clear: right; } } .infobox.vevent .status > p:first-child { margin: 0; } 1acb4afebca5f88c4679a397575d07b5de04407d Template:Country data Wales 10 1472 2807 2020-06-19T23:23:56Z w>CommonsDelinker 0 Replacing Flag_of_Wales.svg with [[File:Flag_of_Wales_(1959).svg]] (by [[commons:User:CommonsDelinker|CommonsDelinker]] because: [[:c:COM:FR|File renamed]]: [[:c:COM:FR#FR4|Criterion 4]] (harmonizing names of file set)). wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Wales | flag alias = Flag of Wales (1959–present).svg | flag alias-1807 = Flag of Wales (1807–1953).svg | flag alias-1953 = Flag of Wales (1953–1959).svg | flag alias-1959 = Flag of Wales (1959).svg | size = {{{size|}}} | name = {{{name|}}} | variant = {{{variant|}}} | altlink = {{{altlink|}}} <noinclude> | var1 = 1807 | var2 = 1953 | var3 = 1959 | redir1 = WAL </noinclude> }} 957019bb66a64636b3969a43e593f430dacb379b Template:Cnote2 10 1599 2934 2020-06-20T16:35:27Z w>Jonesey95 0 div instead of span for ref text to allow for multi-line notes, e.g. at [[Spanish invasion of Portugal (1762)]] wikitext text/x-wiki <li id="cnote_{{anchorencode:{{{1}}}}}{{#if:{{{group|}}}|_grp_{{anchorencode:{{{group}}}}}}}" name="cnote_{{anchorencode:{{{1}}}}}{{#if:{{{group|}}}|_grp_{{anchorencode:{{{group}}}}}}}" {{#if:{{{value|}}}|value{{=}}"{{{value}}}"}} >{{#if:{{{n|}}}|{{#switch: {{{n}}}<!-- -->|0=<!-- -->|1=<span class="mw-cite-backlink">'''[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|^]]'''</span><!-- -->|2=<span class="mw-cite-backlink">^ '''''<sup>[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|a]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_2|b]]</sup>'''''</span><!-- -->|3=<span class="mw-cite-backlink">^ '''''<sup>[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|a]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_2|b]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_3|c]]</sup>'''''</span><!-- -->|4=<span class="mw-cite-backlink">^ '''''<sup>[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|a]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_2|b]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_3|c]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_4|d]]</sup>'''''</span><!-- -->|5=<span class="mw-cite-backlink">^ '''''<sup>[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|a]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_2|b]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_3|c]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_4|d]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_5|e]]</sup>'''''</span><!-- -->|6=<span class="mw-cite-backlink">^ '''''<sup>[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|a]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_2|b]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_3|c]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_4|d]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_5|e]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_6|f]]</sup>'''''</span><!-- -->|#default = <span class="error">n must either be omitted or equal an integer between 1 and 6</span><!-- -->}}|<span class="mw-cite-backlink">'''[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|^]]'''</span> }} <div style="display:inline;" class="reference-text">{{{2|<span class="error">parameter "2", text parameter, is empty</span>}}}</div></li><noinclude> {{Documentation}} </noinclude> 59e5c114f31cbaa7f982d01b7e46be191fa94987 Template:Non-admin comment 10 225 508 2020-06-22T19:25:35Z MrJaroslavik 18 Protected "[[Template:Non-admin comment]]": High-risk template ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <small>(<span style="color:#555;">Non-{{{{{|safesubst:}}}#switch:{{{1}}} |admin |sysop= administrator |crat= bureaucrat |cu= checkuser |steward= steward |sysadmin= system administrator |#default={{{{{|safesubst:}}}#if: {{{1|}}}|{{{1}}}|administrator}}}} comment</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 74955aa8ac53710e3ce1e366be475275521360ac Template:Non-admin closure 10 227 512 2020-06-22T19:27:33Z MrJaroslavik 18 Protected "[[Template:Non-admin closure]]": High-risk template ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <small>(<span style="color:#555;">Non-{{{{{|safesubst:}}}#switch:{{{1}}} |admin |sysop= administrator |crat= bureaucrat |cu= checkuser |steward= steward |sysadmin= system administrator |#default={{{{{|safesubst:}}}#if: {{{1|}}}|{{{1}}}|administrator}}}} closure</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> d22fc6e8966962e37b3af6a3649df85fe7462c5c Module:Reply to 828 210 476 2020-06-29T14:27:31Z MrJaroslavik 18 1 revision imported Scribunto text/plain local p = {} local function makeError(msg) msg ='Error in [[Template:Reply to]]: ' .. msg return mw.text.tag('strong', {['class']='error'}, msg) end function p.replyto(frame) local origArgs = frame:getParent().args local args = {} local maxArg = 1 local usernames = 0 for k, v in pairs(origArgs) do if type(k) == 'number' then if mw.ustring.match(v,'%S') then if k > maxArg then maxArg = k end usernames = usernames + 1 local title = mw.title.new(v) if not title then return makeError('Input contains forbidden characters.') end args[k] = title.rootText end elseif v == '' and k:sub(0,5) == 'label' then args[k] = '&#x200B;' else args[k] = v end end if usernames > (tonumber(frame.args.max) or 50) then return makeError(string.format( 'More than %s names specified.', tostring(frame.args.max or 50) )) else if usernames < 1 then if frame.args.example then args[1] = frame.args.example else return makeError('Username not given.') end end args['label1'] = args['label1'] or args['label'] local isfirst = true local outStr = args['prefix'] or '@' for i = 1, maxArg do if args[i] then if isfirst then isfirst = false else if ( (usernames > 2) or ((usernames == 2) and (args['c'] == '')) ) then outStr = outStr..', ' end if i == maxArg then outStr = outStr..' '..(args['c'] or 'and') .. ' ' end end outStr = string.format( '%s[[User:%s|%s]]', outStr, args[i], args['label'..tostring(i)] or args[i] ) end end outStr = outStr..(args['p'] or ':') return mw.text.tag('span', {['class']='template-ping'}, outStr) end end return p 14f0cd73a8a9f122c0e0e15382219083c602c62a Module:Userbox 828 142 333 2020-07-01T19:43:34Z MrJaroslavik 18 Scribunto text/plain -- This module implements {{userbox}}. local categoryHandler = require('Module:Category handler').main local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function checkNum(val, default) -- Checks whether a value is a number greater than or equal to zero. If so, -- returns it as a number. If not, returns a default value. val = tonumber(val) if val and val >= 0 then return val else return default end end local function addSuffix(num, suffix) -- Turns a number into a string and adds a suffix. if num then return tostring(num) .. suffix else return nil end end local function checkNumAndAddSuffix(num, default, suffix) -- Checks a value with checkNum and adds a suffix. num = checkNum(num, default) return addSuffix(num, suffix) end local function makeCat(cat, sort) -- Makes a category link. if sort then return mw.ustring.format('[[Category:%s|%s]]', cat, sort) else return mw.ustring.format('[[Category:%s]]', cat) end end -------------------------------------------------------------------------------- -- Argument processing -------------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local origArgs = require('Module:Arguments').getArgs(frame) local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.main(funcName, args) end end p.userbox = makeInvokeFunc('_userbox') p['userbox-2'] = makeInvokeFunc('_userbox-2') p['userbox-r'] = makeInvokeFunc('_userbox-r') -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.main(funcName, args) local userboxData = p[funcName](args) local userbox = p.render(userboxData) local cats = p.categories(args) return userbox .. (cats or '') end function p._userbox(args) -- Does argument processing for {{userbox}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] data.infoClass = args['info-class'] -- Get id values. local id = args.logo or args[3] or args.id data.id = id data.showId = id and true or false data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.idTextAlign = args['id-a'] or 'center' data.idFontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.idOtherParams = args['logo-other-param'] or args['id-op'] data.idClass = args['id-class'] return data end p['_userbox-2'] = function (args) -- Does argument processing for {{userbox-2}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args[9] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args[1] or args['border-c'] or args['id1-c'] or '#999999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args[2] or args['info-c'] or '#eeeeee' -- Get info values. data.info = args[4] or args.info or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') data.infoColor = args[8] or args['info-fc'] or 'black' data.infoPadding = args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-lh'] or '1.25em' data.infoOtherParams = args['info-op'] -- Get id values. data.showId = true data.id = args.logo or args[3] or args.id1 or 'id1' data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') data.idBackgroundColor = args[1] or args['id1-c'] or '#dddddd' data.idTextAlign = 'center' data.idFontSize = checkNumAndAddSuffix(args['id1-s'], 14, 'pt') data.idLineHeight = args['id1-lh'] or '1.25em' data.idColor = args['id1-fc'] or data.infoColor data.idPadding = args['id1-p'] or '0 1px 0 0' data.idOtherParams = args['id1-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[5] or args.id2 or 'id2' data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') data.id2Height = data.idHeight data.id2BackgroundColor = args[7] or args['id2-c'] or args[1] or '#dddddd' data.id2TextAlign = 'center' data.id2FontSize = checkNumAndAddSuffix(args['id2-s'], 14, 'pt') data.id2LineHeight = args['id2-lh'] or '1.25em' data.id2Color = args['id2-fc'] or data.infoColor data.id2Padding = args['id2-p'] or '0 0 0 1px' data.id2OtherParams = args['id2-op'] return data end p['_userbox-r'] = function (args) -- Does argument processing for {{userbox-r}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get id values. data.showId = false -- We only show id2 in userbox-r. -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-align'] or args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[3] or args.id or 'id' data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.id2TextAlign = args['id-a'] or 'center' data.id2FontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.id2OtherParams = args['logo-other-param'] or args['id-op'] return data end function p.render(data) -- Renders the userbox html using the content of the data table. -- Render the div tag html. local root = mw.html.create('div') root :css('float', data.float) :css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or '')) :css('margin', '1px') :css('width', data.width) :addClass('wikipediauserbox') :addClass(data.bodyClass) -- Render the table tag html. local tableroot = root:tag('table') tableroot :css('border-collapse', 'collapse') :css('width', data.width) :css('margin-bottom', '0') :css('margin-top', '0') :css('background', data.backgroundColor) -- Render the id html. local tablerow = tableroot:tag('tr') if data.showId then tablerow:tag('th') :css('border', '0') :css('width', data.idWidth) :css('height', data.idHeight) :css('background', data.idBackgroundColor) :css('text-align', data.idTextAlign) :css('font-size', data.idFontSize) :css('color', data.idColor) :css('padding', data.idPadding) :css('line-height', data.idLineHeight) :css('vertical-align', 'middle') :cssText(data.idOtherParams) :addClass(data.idClass) :wikitext(data.id) end -- Render the info html. tablerow:tag('td') :css('border', '0') :css('text-align', data.infoTextAlign) :css('font-size', data.infoFontSize) :css('padding', data.infoPadding) :css('height', data.infoHeight) :css('line-height', data.infoLineHeight) :css('color', data.infoColor) :css('vertical-align', 'middle') :cssText(data.infoOtherParams) :addClass(data.infoClass) :wikitext(data.info) -- Render the second id html. if data.showId2 then tablerow:tag('th') :css('border', '0') :css('width', data.id2Width) :css('height', data.id2Height) :css('background', data.id2BackgroundColor) :css('text-align', data.id2TextAlign) :css('font-size', data.id2FontSize) :css('color', data.id2Color) :css('padding', data.id2Padding) :css('line-height', data.id2LineHeight) :css('vertical-align', 'middle') :cssText(data.id2OtherParams) :wikitext(data.id2) end local title = mw.title.getCurrentTitle() if (title.namespace == 2) and not title.text:match("/") then return tostring(root) -- regular user page elseif title.namespace == 14 then return tostring(root) -- category elseif title.isTalkPage then return tostring(root) -- talk page end local legible = true local contrast = require('Module:Color contrast')._ratio local function has_text(wikitext) local function get_alt(text) return text:match("|alt=([^|]*)") or "" end wikitext = wikitext:gsub("]]", "|]]") wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", get_alt) wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", get_alt) wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", get_alt) return mw.text.trim(wikitext) ~= "" end if contrast { data.infoColor, data.backgroundColor, error = 0 } < 4.5 then legible = false end if data.showId and contrast { data.idColor, data.idBackgroundColor, error = 0 } < 4.5 then if has_text(data.id or "") then legible = false end end if data.showId2 and contrast { data.id2Color, data.id2BackgroundColor, error = 0 } < 4.5 then if has_text(data.id2 or "") then legible = false end end if not legible then root:wikitext('[[Category:Potentially illegible userboxes]]') end return tostring(root) end function p.categories(args, page) -- Gets categories from [[Module:Category handler]]. -- The page parameter makes the function act as though the module was being called from that page. -- It is included for testing purposes. local cats = {} cats[#cats + 1] = args.usercategory cats[#cats + 1] = args.usercategory2 cats[#cats + 1] = args.usercategory3 if #cats > 0 then -- Get the title object local title if page then title = mw.title.new(page) else title = mw.title.getCurrentTitle() end -- Build category handler arguments. local chargs = {} chargs.page = page chargs.nocat = args.nocat chargs.main = '[[Category:Pages with misplaced templates]]' if args.notcatsubpages then chargs.subpage = 'no' end -- User namespace. local user = '' for i, cat in ipairs(cats) do user = user .. makeCat(cat) end chargs.user = user -- Template namespace. local basepage = title.baseText local template = '' for i, cat in ipairs(cats) do template = template .. makeCat(cat, ' ' .. basepage) end chargs.template = template return categoryHandler(chargs) else return nil end end return p 1a6d5c3f5a72eb494c764796412b42184f714b7b Module:About 828 112 271 2020-07-14T13:59:23Z wikipedia>Nihiltres 0 Removed defaultOptions.namespace as redundant, per request on talk by Andrybak Scribunto text/plain local mArguments --initialize lazily local mHatnote = require('Module:Hatnote') local mHatList = require('Module:Hatnote list') local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} function p.about (frame) -- A passthrough that gets args from the frame and all mArguments = require('Module:Arguments') args = mArguments.getArgs(frame) return p._about(args) end function p._about (args, options) -- Produces "about" hatnote. -- Type checks and defaults checkType('_about', 1, args, 'table', true) args = args or {} checkType('_about', 2, options, 'table', true) options = options or {} local defaultOptions = { aboutForm = 'This %s is about %s. ', PageType = require('Module:Pagetype').main(), otherText = nil, --included for complete list sectionString = 'section' } for k, v in pairs(defaultOptions) do if options[k] == nil then options[k] = v end end -- Set initial "about" string local pageType = (args.section and options.sectionString) or options.PageType local about = '' if args[1] then about = string.format(options.aboutForm, pageType, args[1]) end --Allow passing through certain options local fsOptions = { otherText = options.otherText, extratext = args.text } local hnOptions = { selfref = args.selfref } -- Set for-see list local forSee = mHatList._forSee(args, 2, fsOptions) -- Concatenate and return return mHatnote._hatnote(about .. forSee, hnOptions) end return p 1abb25315b25b63b97d98ecae17733cbea8fcc6a Template:Flagcountry 10 1204 2533 2020-07-17T15:28:45Z w>Jonesey95 0 Adding unknown parameter tracking through [[:Category:Pages using flagcountry template with unknown parameters]] using [[Module:check for unknown parameters]] wikitext text/x-wiki {{country data {{{1}}}|flagcountry/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}|name={{{name|}}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using flagcountry template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Flagcountry]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | name | size | variant }}<noinclude>{{documentation}}</noinclude> 8e77099d5f28ae1a07d27fb07c9fac8684bd56cf Module:String 828 17 29 2020-08-02T15:49:42Z wikipedia>RexxS 0 separate annotations for str.match from those for str._match Scribunto text/plain --[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ) local s = new_args['s'] or '' return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The fist index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ) local s = new_args['s'] or '' local i = tonumber( new_args['i'] ) or 1 local j = tonumber( new_args['j'] ) or -1 local len = mw.ustring.len( s ) -- Convert negatives for range checking if i < 0 then i = len + i + 1 end if j < 0 then j = len + j + 1 end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ) end if j < i then return str._error( 'String subset indices out of order' ) end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ _match This function returns a substring from the source string that matches a specified pattern. It is exported for use in other modules Usage: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain_flag, nomatch ) if s == '' then return str._error( 'Target string is empty' ) end if pattern == '' then return str._error( 'Pattern string is empty' ) end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ) end if match_index == 0 then return str._error( 'Match index is out of range' ) end if plain_flag then pattern = str._escapePattern( pattern ) end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ) end local iterator = mw.ustring.gmatch(s, pattern) if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1 if match_index == 0 then result = w break end end else -- Reverse search local result_table = {} local count = 1 for w in iterator do result_table[count] = w count = count + 1 end result = result_table[ count + match_index ] end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ) else return nomatch end else return result end end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} OR {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ) local s = new_args['s'] or '' local start = tonumber( new_args['start'] ) or 1 local plain_flag = str._getBoolean( new_args['plain'] or false ) local pattern = new_args['pattern'] or '' local match_index = math.floor( tonumber(new_args['match']) or 1 ) local nomatch = new_args['nomatch'] return str._match( s, pattern, start, match_index, plain_flag, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ) local target_str = new_args['target'] or '' local pos = tonumber( new_args['pos'] ) or 0 if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ) end return mw.ustring.sub( target_str, pos, pos ) end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ) local source_str = new_args['source'] or '' local target_str = new_args['target'] or '' if target_str == '' then return 1 end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['target'] or '' local start_pos = tonumber(new_args['start']) or 1 local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return 0 end plain = str._getBoolean( plain ) local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['pattern'] or '' local replace = new_args['replace'] or '' local count = tonumber( new_args['count'] ) local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return source_str end plain = str._getBoolean( plain ) if plain then pattern = str._escapePattern( pattern ) replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end local result if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ) else result = mw.ustring.gsub( source_str, pattern, replace ) end return result end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ) end local result = str._escapePattern( pattern_str ) return result end --[[ count This function counts the number of occurrences of one string in another. ]] function str.count(frame) local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = str._getBoolean(args.plain or true) if plain then pattern = str._escapePattern(pattern) end local _, count = mw.ustring.gsub(source, pattern, '') return count end --[[ endswith This function determines whether a string ends with another string. ]] function str.endswith(frame) local args = str._getParameters(frame.args, {'source', 'pattern'}) local source = args.source or '' local pattern = args.pattern or '' if pattern == '' then -- All strings end with the empty string. return "yes" end if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then return "yes" else return "" end end --[[ join Join all non empty arguments together; the first argument is the separator. Usage: {{#invoke:String|join|sep|one|two|three}} ]] function str.join(frame) local args = {} local sep for _, v in ipairs( frame.args ) do if sep then if v ~= '' then table.insert(args, v) end else sep = v end end return table.concat( args, sep or '' ) end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {} local index = 1 local value for _, arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index] index = index + 1 end new_args[arg] = value end return new_args end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame() local error_category = frame.args.error_category or 'Errors reported by Module String' local ignore_errors = frame.args.ignore_errors or false local no_category = frame.args.no_category or false if str._getBoolean(ignore_errors) then return '' end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>' if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str end return error_str end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false else boolean_value = true end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else error( 'No boolean value found' ) end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ) end return str 6df794dd52434e0f6a372c9918f5a9dedd15f579 Module:Switcher 828 1734 3277 2020-08-02T16:55:17Z wikipedia>Jackmcbarn 0 stop using the function name to hold the default Scribunto text/plain local p = {} function p.main(frame) local root = mw.html.create('div'):addClass('switcher-container') local default = (tonumber(frame.args.default) or 0) * 2 - 1 for i,v in ipairs(frame.args) do if i % 2 == 1 then local span = root :tag('div') :wikitext(frame.args[i]) :tag('span') :addClass('switcher-label') :css('display', 'none') :wikitext(mw.text.trim(frame.args[i + 1])) if i == default then span:attr('data-switcher-default', '') end end end return root end return p 9393d11155145cb28d5fdad5ce6b9cde1bbad60f Module:Date 828 1228 2561 2020-08-03T02:55:18Z w>Johnuniq 0 update from sandbox: implement show=M (minutes) and show=s (seconds); better method to fill a partial date Scribunto text/plain -- Date functions for use by other modules. -- I18N and time zones are not supported. local MINUS = '−' -- Unicode U+2212 MINUS SIGN local floor = math.floor local Date, DateDiff, diffmt -- forward declarations local uniq = { 'unique identifier' } local function is_date(t) -- The system used to make a date read-only means there is no unique -- metatable that is conveniently accessible to check. return type(t) == 'table' and t._id == uniq end local function is_diff(t) return type(t) == 'table' and getmetatable(t) == diffmt end local function _list_join(list, sep) return table.concat(list, sep) end local function collection() -- Return a table to hold items. return { n = 0, add = function (self, item) self.n = self.n + 1 self[self.n] = item end, join = _list_join, } end local function strip_to_nil(text) -- If text is a string, return its trimmed content, or nil if empty. -- Otherwise return text (convenient when Date fields are provided from -- another module which may pass a string, a number, or another type). if type(text) == 'string' then text = text:match('(%S.-)%s*$') end return text end local function is_leap_year(year, calname) -- Return true if year is a leap year. if calname == 'Julian' then return year % 4 == 0 end return (year % 4 == 0 and year % 100 ~= 0) or year % 400 == 0 end local function days_in_month(year, month, calname) -- Return number of days (1..31) in given month (1..12). if month == 2 and is_leap_year(year, calname) then return 29 end return ({ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 })[month] end local function h_m_s(time) -- Return hour, minute, second extracted from fraction of a day. time = floor(time * 24 * 3600 + 0.5) -- number of seconds local second = time % 60 time = floor(time / 60) return floor(time / 60), time % 60, second end local function hms(date) -- Return fraction of a day from date's time, where (0 <= fraction < 1) -- if the values are valid, but could be anything if outside range. return (date.hour + (date.minute + date.second / 60) / 60) / 24 end local function julian_date(date) -- Return jd, jdz from a Julian or Gregorian calendar date where -- jd = Julian date and its fractional part is zero at noon -- jdz = same, but assume time is 00:00:00 if no time given -- http://www.tondering.dk/claus/cal/julperiod.php#formula -- Testing shows this works for all dates from year -9999 to 9999! -- JDN 0 is the 24-hour period starting at noon UTC on Monday -- 1 January 4713 BC = (-4712, 1, 1) Julian calendar -- 24 November 4714 BC = (-4713, 11, 24) Gregorian calendar local offset local a = floor((14 - date.month)/12) local y = date.year + 4800 - a if date.calendar == 'Julian' then offset = floor(y/4) - 32083 else offset = floor(y/4) - floor(y/100) + floor(y/400) - 32045 end local m = date.month + 12*a - 3 local jd = date.day + floor((153*m + 2)/5) + 365*y + offset if date.hastime then jd = jd + hms(date) - 0.5 return jd, jd end return jd, jd - 0.5 end local function set_date_from_jd(date) -- Set the fields of table date from its Julian date field. -- Return true if date is valid. -- http://www.tondering.dk/claus/cal/julperiod.php#formula -- This handles the proleptic Julian and Gregorian calendars. -- Negative Julian dates are not defined but they work. local calname = date.calendar local low, high -- min/max limits for date ranges −9999-01-01 to 9999-12-31 if calname == 'Gregorian' then low, high = -1930999.5, 5373484.49999 elseif calname == 'Julian' then low, high = -1931076.5, 5373557.49999 else return end local jd = date.jd if not (type(jd) == 'number' and low <= jd and jd <= high) then return end local jdn = floor(jd) if date.hastime then local time = jd - jdn -- 0 <= time < 1 if time >= 0.5 then -- if at or after midnight of next day jdn = jdn + 1 time = time - 0.5 else time = time + 0.5 end date.hour, date.minute, date.second = h_m_s(time) else date.second = 0 date.minute = 0 date.hour = 0 end local b, c if calname == 'Julian' then b = 0 c = jdn + 32082 else -- Gregorian local a = jdn + 32044 b = floor((4*a + 3)/146097) c = a - floor(146097*b/4) end local d = floor((4*c + 3)/1461) local e = c - floor(1461*d/4) local m = floor((5*e + 2)/153) date.day = e - floor((153*m + 2)/5) + 1 date.month = m + 3 - 12*floor(m/10) date.year = 100*b + d - 4800 + floor(m/10) return true end local function fix_numbers(numbers, y, m, d, H, M, S, partial, hastime, calendar) -- Put the result of normalizing the given values in table numbers. -- The result will have valid m, d values if y is valid; caller checks y. -- The logic of PHP mktime is followed where m or d can be zero to mean -- the previous unit, and -1 is the one before that, etc. -- Positive values carry forward. local date if not (1 <= m and m <= 12) then date = Date(y, 1, 1) if not date then return end date = date + ((m - 1) .. 'm') y, m = date.year, date.month end local days_hms if not partial then if hastime and H and M and S then if not (0 <= H and H <= 23 and 0 <= M and M <= 59 and 0 <= S and S <= 59) then days_hms = hms({ hour = H, minute = M, second = S }) end end if days_hms or not (1 <= d and d <= days_in_month(y, m, calendar)) then date = date or Date(y, m, 1) if not date then return end date = date + (d - 1 + (days_hms or 0)) y, m, d = date.year, date.month, date.day if days_hms then H, M, S = date.hour, date.minute, date.second end end end numbers.year = y numbers.month = m numbers.day = d if days_hms then -- Don't set H unless it was valid because a valid H will set hastime. numbers.hour = H numbers.minute = M numbers.second = S end end local function set_date_from_numbers(date, numbers, options) -- Set the fields of table date from numeric values. -- Return true if date is valid. if type(numbers) ~= 'table' then return end local y = numbers.year or date.year local m = numbers.month or date.month local d = numbers.day or date.day local H = numbers.hour local M = numbers.minute or date.minute or 0 local S = numbers.second or date.second or 0 local need_fix if y and m and d then date.partial = nil if not (-9999 <= y and y <= 9999 and 1 <= m and m <= 12 and 1 <= d and d <= days_in_month(y, m, date.calendar)) then if not date.want_fix then return end need_fix = true end elseif y and date.partial then if d or not (-9999 <= y and y <= 9999) then return end if m and not (1 <= m and m <= 12) then if not date.want_fix then return end need_fix = true end else return end if date.partial then H = nil -- ignore any time M = nil S = nil else if H then -- It is not possible to set M or S without also setting H. date.hastime = true else H = 0 end if not (0 <= H and H <= 23 and 0 <= M and M <= 59 and 0 <= S and S <= 59) then if date.want_fix then need_fix = true else return end end end date.want_fix = nil if need_fix then fix_numbers(numbers, y, m, d, H, M, S, date.partial, date.hastime, date.calendar) return set_date_from_numbers(date, numbers, options) end date.year = y -- -9999 to 9999 ('n BC' → year = 1 - n) date.month = m -- 1 to 12 (may be nil if partial) date.day = d -- 1 to 31 (* = nil if partial) date.hour = H -- 0 to 59 (*) date.minute = M -- 0 to 59 (*) date.second = S -- 0 to 59 (*) if type(options) == 'table' then for _, k in ipairs({ 'am', 'era', 'format' }) do if options[k] then date.options[k] = options[k] end end end return true end local function make_option_table(options1, options2) -- If options1 is a string, return a table with its settings, or -- if it is a table, use its settings. -- Missing options are set from table options2 or defaults. -- If a default is used, a flag is set so caller knows the value was not intentionally set. -- Valid option settings are: -- am: 'am', 'a.m.', 'AM', 'A.M.' -- 'pm', 'p.m.', 'PM', 'P.M.' (each has same meaning as corresponding item above) -- era: 'BCMINUS', 'BCNEGATIVE', 'BC', 'B.C.', 'BCE', 'B.C.E.', 'AD', 'A.D.', 'CE', 'C.E.' -- Option am = 'am' does not mean the hour is AM; it means 'am' or 'pm' is used, depending on the hour, -- and am = 'pm' has the same meaning. -- Similarly, era = 'BC' means 'BC' is used if year <= 0. -- BCMINUS displays a MINUS if year < 0 and the display format does not include %{era}. -- BCNEGATIVE is similar but displays a hyphen. local result = { bydefault = {} } if type(options1) == 'table' then result.am = options1.am result.era = options1.era elseif type(options1) == 'string' then -- Example: 'am:AM era:BC' or 'am=AM era=BC'. for item in options1:gmatch('%S+') do local lhs, rhs = item:match('^(%w+)[:=](.+)$') if lhs then result[lhs] = rhs end end end options2 = type(options2) == 'table' and options2 or {} local defaults = { am = 'am', era = 'BC' } for k, v in pairs(defaults) do if not result[k] then if options2[k] then result[k] = options2[k] else result[k] = v result.bydefault[k] = true end end end return result end local ampm_options = { -- lhs = input text accepted as an am/pm option -- rhs = code used internally ['am'] = 'am', ['AM'] = 'AM', ['a.m.'] = 'a.m.', ['A.M.'] = 'A.M.', ['pm'] = 'am', -- same as am ['PM'] = 'AM', ['p.m.'] = 'a.m.', ['P.M.'] = 'A.M.', } local era_text = { -- Text for displaying an era with a positive year (after adjusting -- by replacing year with 1 - year if date.year <= 0). -- options.era = { year<=0 , year>0 } ['BCMINUS'] = { 'BC' , '' , isbc = true, sign = MINUS }, ['BCNEGATIVE'] = { 'BC' , '' , isbc = true, sign = '-' }, ['BC'] = { 'BC' , '' , isbc = true }, ['B.C.'] = { 'B.C.' , '' , isbc = true }, ['BCE'] = { 'BCE' , '' , isbc = true }, ['B.C.E.'] = { 'B.C.E.', '' , isbc = true }, ['AD'] = { 'BC' , 'AD' }, ['A.D.'] = { 'B.C.' , 'A.D.' }, ['CE'] = { 'BCE' , 'CE' }, ['C.E.'] = { 'B.C.E.', 'C.E.' }, } local function get_era_for_year(era, year) return (era_text[era] or era_text['BC'])[year > 0 and 2 or 1] or '' end local function strftime(date, format, options) -- Return date formatted as a string using codes similar to those -- in the C strftime library function. local sformat = string.format local shortcuts = { ['%c'] = '%-I:%M %p %-d %B %-Y %{era}', -- date and time: 2:30 pm 1 April 2016 ['%x'] = '%-d %B %-Y %{era}', -- date: 1 April 2016 ['%X'] = '%-I:%M %p', -- time: 2:30 pm } if shortcuts[format] then format = shortcuts[format] end local codes = { a = { field = 'dayabbr' }, A = { field = 'dayname' }, b = { field = 'monthabbr' }, B = { field = 'monthname' }, u = { fmt = '%d' , field = 'dowiso' }, w = { fmt = '%d' , field = 'dow' }, d = { fmt = '%02d', fmt2 = '%d', field = 'day' }, m = { fmt = '%02d', fmt2 = '%d', field = 'month' }, Y = { fmt = '%04d', fmt2 = '%d', field = 'year' }, H = { fmt = '%02d', fmt2 = '%d', field = 'hour' }, M = { fmt = '%02d', fmt2 = '%d', field = 'minute' }, S = { fmt = '%02d', fmt2 = '%d', field = 'second' }, j = { fmt = '%03d', fmt2 = '%d', field = 'dayofyear' }, I = { fmt = '%02d', fmt2 = '%d', field = 'hour', special = 'hour12' }, p = { field = 'hour', special = 'am' }, } options = make_option_table(options, date.options) local amopt = options.am local eraopt = options.era local function replace_code(spaces, modifier, id) local code = codes[id] if code then local fmt = code.fmt if modifier == '-' and code.fmt2 then fmt = code.fmt2 end local value = date[code.field] if not value then return nil -- an undefined field in a partial date end local special = code.special if special then if special == 'hour12' then value = value % 12 value = value == 0 and 12 or value elseif special == 'am' then local ap = ({ ['a.m.'] = { 'a.m.', 'p.m.' }, ['AM'] = { 'AM', 'PM' }, ['A.M.'] = { 'A.M.', 'P.M.' }, })[ampm_options[amopt]] or { 'am', 'pm' } return (spaces == '' and '' or '&nbsp;') .. (value < 12 and ap[1] or ap[2]) end end if code.field == 'year' then local sign = (era_text[eraopt] or {}).sign if not sign or format:find('%{era}', 1, true) then sign = '' if value <= 0 then value = 1 - value end else if value >= 0 then sign = '' else value = -value end end return spaces .. sign .. sformat(fmt, value) end return spaces .. (fmt and sformat(fmt, value) or value) end end local function replace_property(spaces, id) if id == 'era' then -- Special case so can use local era option. local result = get_era_for_year(eraopt, date.year) if result == '' then return '' end return (spaces == '' and '' or '&nbsp;') .. result end local result = date[id] if type(result) == 'string' then return spaces .. result end if type(result) == 'number' then return spaces .. tostring(result) end if type(result) == 'boolean' then return spaces .. (result and '1' or '0') end -- This occurs if id is an undefined field in a partial date, or is the name of a function. return nil end local PERCENT = '\127PERCENT\127' return (format :gsub('%%%%', PERCENT) :gsub('(%s*)%%{(%w+)}', replace_property) :gsub('(%s*)%%(%-?)(%a)', replace_code) :gsub(PERCENT, '%%') ) end local function _date_text(date, fmt, options) -- Return a formatted string representing the given date. if not is_date(date) then error('date:text: need a date (use "date:text()" with a colon)', 2) end if type(fmt) == 'string' and fmt:match('%S') then if fmt:find('%', 1, true) then return strftime(date, fmt, options) end elseif date.partial then fmt = date.month and 'my' or 'y' else fmt = 'dmy' if date.hastime then fmt = (date.second > 0 and 'hms ' or 'hm ') .. fmt end end local function bad_format() -- For consistency with other format processing, return given format -- (or cleaned format if original was not a string) if invalid. return mw.text.nowiki(fmt) end if date.partial then -- Ignore days in standard formats like 'ymd'. if fmt == 'ym' or fmt == 'ymd' then fmt = date.month and '%Y-%m %{era}' or '%Y %{era}' elseif fmt == 'my' or fmt == 'dmy' or fmt == 'mdy' then fmt = date.month and '%B %-Y %{era}' or '%-Y %{era}' elseif fmt == 'y' then fmt = date.month and '%-Y %{era}' or '%-Y %{era}' else return bad_format() end return strftime(date, fmt, options) end local function hm_fmt() local plain = make_option_table(options, date.options).bydefault.am return plain and '%H:%M' or '%-I:%M %p' end local need_time = date.hastime local t = collection() for item in fmt:gmatch('%S+') do local f if item == 'hm' then f = hm_fmt() need_time = false elseif item == 'hms' then f = '%H:%M:%S' need_time = false elseif item == 'ymd' then f = '%Y-%m-%d %{era}' elseif item == 'mdy' then f = '%B %-d, %-Y %{era}' elseif item == 'dmy' then f = '%-d %B %-Y %{era}' else return bad_format() end t:add(f) end fmt = t:join(' ') if need_time then fmt = hm_fmt() .. ' ' .. fmt end return strftime(date, fmt, options) end local day_info = { -- 0=Sun to 6=Sat [0] = { 'Sun', 'Sunday' }, { 'Mon', 'Monday' }, { 'Tue', 'Tuesday' }, { 'Wed', 'Wednesday' }, { 'Thu', 'Thursday' }, { 'Fri', 'Friday' }, { 'Sat', 'Saturday' }, } local month_info = { -- 1=Jan to 12=Dec { 'Jan', 'January' }, { 'Feb', 'February' }, { 'Mar', 'March' }, { 'Apr', 'April' }, { 'May', 'May' }, { 'Jun', 'June' }, { 'Jul', 'July' }, { 'Aug', 'August' }, { 'Sep', 'September' }, { 'Oct', 'October' }, { 'Nov', 'November' }, { 'Dec', 'December' }, } local function name_to_number(text, translate) if type(text) == 'string' then return translate[text:lower()] end end local function day_number(text) return name_to_number(text, { sun = 0, sunday = 0, mon = 1, monday = 1, tue = 2, tuesday = 2, wed = 3, wednesday = 3, thu = 4, thursday = 4, fri = 5, friday = 5, sat = 6, saturday = 6, }) end local function month_number(text) return name_to_number(text, { jan = 1, january = 1, feb = 2, february = 2, mar = 3, march = 3, apr = 4, april = 4, may = 5, jun = 6, june = 6, jul = 7, july = 7, aug = 8, august = 8, sep = 9, september = 9, sept = 9, oct = 10, october = 10, nov = 11, november = 11, dec = 12, december = 12, }) end local function _list_text(list, fmt) -- Return a list of formatted strings from a list of dates. if not type(list) == 'table' then error('date:list:text: need "list:text()" with a colon', 2) end local result = { join = _list_join } for i, date in ipairs(list) do result[i] = date:text(fmt) end return result end local function _date_list(date, spec) -- Return a possibly empty numbered table of dates meeting the specification. -- Dates in the list are in ascending order (oldest date first). -- The spec should be a string of form "<count> <day> <op>" -- where each item is optional and -- count = number of items wanted in list -- day = abbreviation or name such as Mon or Monday -- op = >, >=, <, <= (default is > meaning after date) -- If no count is given, the list is for the specified days in date's month. -- The default day is date's day. -- The spec can also be a positive or negative number: -- -5 is equivalent to '5 <' -- 5 is equivalent to '5' which is '5 >' if not is_date(date) then error('date:list: need a date (use "date:list()" with a colon)', 2) end local list = { text = _list_text } if date.partial then return list end local count, offset, operation local ops = { ['>='] = { before = false, include = true }, ['>'] = { before = false, include = false }, ['<='] = { before = true , include = true }, ['<'] = { before = true , include = false }, } if spec then if type(spec) == 'number' then count = floor(spec + 0.5) if count < 0 then count = -count operation = ops['<'] end elseif type(spec) == 'string' then local num, day, op = spec:match('^%s*(%d*)%s*(%a*)%s*([<>=]*)%s*$') if not num then return list end if num ~= '' then count = tonumber(num) end if day ~= '' then local dow = day_number(day:gsub('[sS]$', '')) -- accept plural days if not dow then return list end offset = dow - date.dow end operation = ops[op] else return list end end offset = offset or 0 operation = operation or ops['>'] local datefrom, dayfirst, daylast if operation.before then if offset > 0 or (offset == 0 and not operation.include) then offset = offset - 7 end if count then if count > 1 then offset = offset - 7*(count - 1) end datefrom = date + offset else daylast = date.day + offset dayfirst = daylast % 7 if dayfirst == 0 then dayfirst = 7 end end else if offset < 0 or (offset == 0 and not operation.include) then offset = offset + 7 end if count then datefrom = date + offset else dayfirst = date.day + offset daylast = date.monthdays end end if not count then if daylast < dayfirst then return list end count = floor((daylast - dayfirst)/7) + 1 datefrom = Date(date, {day = dayfirst}) end for i = 1, count do if not datefrom then break end -- exceeds date limits list[i] = datefrom datefrom = datefrom + 7 end return list end -- A table to get the current date/time (UTC), but only if needed. local current = setmetatable({}, { __index = function (self, key) local d = os.date('!*t') self.year = d.year self.month = d.month self.day = d.day self.hour = d.hour self.minute = d.min self.second = d.sec return rawget(self, key) end }) local function extract_date(newdate, text) -- Parse the date/time in text and return n, o where -- n = table of numbers with date/time fields -- o = table of options for AM/PM or AD/BC or format, if any -- or return nothing if date is known to be invalid. -- Caller determines if the values in n are valid. -- A year must be positive ('1' to '9999'); use 'BC' for BC. -- In a y-m-d string, the year must be four digits to avoid ambiguity -- ('0001' to '9999'). The only way to enter year <= 0 is by specifying -- the date as three numeric parameters like ymd Date(-1, 1, 1). -- Dates of form d/m/y, m/d/y, y/m/d are rejected as potentially ambiguous. local date, options = {}, {} if text:sub(-1) == 'Z' then -- Extract date/time from a Wikidata timestamp. -- The year can be 1 to 16 digits but this module handles 1 to 4 digits only. -- Examples: '+2016-06-21T14:30:00Z', '-0000000180-00-00T00:00:00Z'. local sign, y, m, d, H, M, S = text:match('^([+%-])(%d+)%-(%d%d)%-(%d%d)T(%d%d):(%d%d):(%d%d)Z$') if sign then y = tonumber(y) if sign == '-' and y > 0 then y = -y end if y <= 0 then options.era = 'BCE' end date.year = y m = tonumber(m) d = tonumber(d) H = tonumber(H) M = tonumber(M) S = tonumber(S) if m == 0 then newdate.partial = true return date, options end date.month = m if d == 0 then newdate.partial = true return date, options end date.day = d if H > 0 or M > 0 or S > 0 then date.hour = H date.minute = M date.second = S end return date, options end return end local function extract_ymd(item) -- Called when no day or month has been set. local y, m, d = item:match('^(%d%d%d%d)%-(%w+)%-(%d%d?)$') if y then if date.year then return end if m:match('^%d%d?$') then m = tonumber(m) else m = month_number(m) end if m then date.year = tonumber(y) date.month = m date.day = tonumber(d) return true end end end local function extract_day_or_year(item) -- Called when a day would be valid, or -- when a year would be valid if no year has been set and partial is set. local number, suffix = item:match('^(%d%d?%d?%d?)(.*)$') if number then local n = tonumber(number) if #number <= 2 and n <= 31 then suffix = suffix:lower() if suffix == '' or suffix == 'st' or suffix == 'nd' or suffix == 'rd' or suffix == 'th' then date.day = n return true end elseif suffix == '' and newdate.partial and not date.year then date.year = n return true end end end local function extract_month(item) -- A month must be given as a name or abbreviation; a number could be ambiguous. local m = month_number(item) if m then date.month = m return true end end local function extract_time(item) local h, m, s = item:match('^(%d%d?):(%d%d)(:?%d*)$') if date.hour or not h then return end if s ~= '' then s = s:match('^:(%d%d)$') if not s then return end end date.hour = tonumber(h) date.minute = tonumber(m) date.second = tonumber(s) -- nil if empty string return true end local item_count = 0 local index_time local function set_ampm(item) local H = date.hour if H and not options.am and index_time + 1 == item_count then options.am = ampm_options[item] -- caller checked this is not nil if item:match('^[Aa]') then if not (1 <= H and H <= 12) then return end if H == 12 then date.hour = 0 end else if not (1 <= H and H <= 23) then return end if H <= 11 then date.hour = H + 12 end end return true end end for item in text:gsub(',', ' '):gsub('&nbsp;', ' '):gmatch('%S+') do item_count = item_count + 1 if era_text[item] then -- Era is accepted in peculiar places. if options.era then return end options.era = item elseif ampm_options[item] then if not set_ampm(item) then return end elseif item:find(':', 1, true) then if not extract_time(item) then return end index_time = item_count elseif date.day and date.month then if date.year then return -- should be nothing more so item is invalid end if not item:match('^(%d%d?%d?%d?)$') then return end date.year = tonumber(item) elseif date.day then if not extract_month(item) then return end elseif date.month then if not extract_day_or_year(item) then return end elseif extract_month(item) then options.format = 'mdy' elseif extract_ymd(item) then options.format = 'ymd' elseif extract_day_or_year(item) then if date.day then options.format = 'dmy' end else return end end if not date.year or date.year == 0 then return end local era = era_text[options.era] if era and era.isbc then date.year = 1 - date.year end return date, options end local function autofill(date1, date2) -- Fill any missing month or day in each date using the -- corresponding component from the other date, if present, -- or with 1 if both dates are missing the month or day. -- This gives a good result for calculating the difference -- between two partial dates when no range is wanted. -- Return filled date1, date2 (two full dates). local function filled(a, b) -- Return date a filled, if necessary, with month and/or day from date b. -- The filled day is truncated to fit the number of days in the month. local fillmonth, fillday if not a.month then fillmonth = b.month or 1 end if not a.day then fillday = b.day or 1 end if fillmonth or fillday then -- need to create a new date a = Date(a, { month = fillmonth, day = math.min(fillday or a.day, days_in_month(a.year, fillmonth or a.month, a.calendar)) }) end return a end return filled(date1, date2), filled(date2, date1) end local function date_add_sub(lhs, rhs, is_sub) -- Return a new date from calculating (lhs + rhs) or (lhs - rhs), -- or return nothing if invalid. -- The result is nil if the calculated date exceeds allowable limits. -- Caller ensures that lhs is a date; its properties are copied for the new date. if lhs.partial then -- Adding to a partial is not supported. -- Can subtract a date or partial from a partial, but this is not called for that. return end local function is_prefix(text, word, minlen) local n = #text return (minlen or 1) <= n and n <= #word and text == word:sub(1, n) end local function do_days(n) local forcetime, jd if floor(n) == n then jd = lhs.jd else forcetime = not lhs.hastime jd = lhs.jdz end jd = jd + (is_sub and -n or n) if forcetime then jd = tostring(jd) if not jd:find('.', 1, true) then jd = jd .. '.0' end end return Date(lhs, 'juliandate', jd) end if type(rhs) == 'number' then -- Add/subtract days, including fractional days. return do_days(rhs) end if type(rhs) == 'string' then -- rhs is a single component like '26m' or '26 months' (with optional sign). -- Fractions like '3.25d' are accepted for the units which are handled as days. local sign, numstr, id = rhs:match('^%s*([+-]?)([%d%.]+)%s*(%a+)$') if sign then if sign == '-' then is_sub = not (is_sub and true or false) end local y, m, days local num = tonumber(numstr) if not num then return end id = id:lower() if is_prefix(id, 'years') then y = num m = 0 elseif is_prefix(id, 'months') then y = floor(num / 12) m = num % 12 elseif is_prefix(id, 'weeks') then days = num * 7 elseif is_prefix(id, 'days') then days = num elseif is_prefix(id, 'hours') then days = num / 24 elseif is_prefix(id, 'minutes', 3) then days = num / (24 * 60) elseif is_prefix(id, 'seconds') then days = num / (24 * 3600) else return end if days then return do_days(days) end if numstr:find('.', 1, true) then return end if is_sub then y = -y m = -m end assert(-11 <= m and m <= 11) y = lhs.year + y m = lhs.month + m if m > 12 then y = y + 1 m = m - 12 elseif m < 1 then y = y - 1 m = m + 12 end local d = math.min(lhs.day, days_in_month(y, m, lhs.calendar)) return Date(lhs, y, m, d) end end if is_diff(rhs) then local days = rhs.age_days if (is_sub or false) ~= (rhs.isnegative or false) then days = -days end return lhs + days end end local full_date_only = { dayabbr = true, dayname = true, dow = true, dayofweek = true, dowiso = true, dayofweekiso = true, dayofyear = true, gsd = true, juliandate = true, jd = true, jdz = true, jdnoon = true, } -- Metatable for a date's calculated fields. local datemt = { __index = function (self, key) if rawget(self, 'partial') then if full_date_only[key] then return end if key == 'monthabbr' or key == 'monthdays' or key == 'monthname' then if not self.month then return end end end local value if key == 'dayabbr' then value = day_info[self.dow][1] elseif key == 'dayname' then value = day_info[self.dow][2] elseif key == 'dow' then value = (self.jdnoon + 1) % 7 -- day-of-week 0=Sun to 6=Sat elseif key == 'dayofweek' then value = self.dow elseif key == 'dowiso' then value = (self.jdnoon % 7) + 1 -- ISO day-of-week 1=Mon to 7=Sun elseif key == 'dayofweekiso' then value = self.dowiso elseif key == 'dayofyear' then local first = Date(self.year, 1, 1, self.calendar).jdnoon value = self.jdnoon - first + 1 -- day-of-year 1 to 366 elseif key == 'era' then -- Era text (never a negative sign) from year and options. value = get_era_for_year(self.options.era, self.year) elseif key == 'format' then value = self.options.format or 'dmy' elseif key == 'gsd' then -- GSD = 1 from 00:00:00 to 23:59:59 on 1 January 1 AD Gregorian calendar, -- which is from jd 1721425.5 to 1721426.49999. value = floor(self.jd - 1721424.5) elseif key == 'juliandate' or key == 'jd' or key == 'jdz' then local jd, jdz = julian_date(self) rawset(self, 'juliandate', jd) rawset(self, 'jd', jd) rawset(self, 'jdz', jdz) return key == 'jdz' and jdz or jd elseif key == 'jdnoon' then -- Julian date at noon (an integer) on the calendar day when jd occurs. value = floor(self.jd + 0.5) elseif key == 'isleapyear' then value = is_leap_year(self.year, self.calendar) elseif key == 'monthabbr' then value = month_info[self.month][1] elseif key == 'monthdays' then value = days_in_month(self.year, self.month, self.calendar) elseif key == 'monthname' then value = month_info[self.month][2] end if value ~= nil then rawset(self, key, value) return value end end, } -- Date operators. local function mt_date_add(lhs, rhs) if not is_date(lhs) then lhs, rhs = rhs, lhs -- put date on left (it must be a date for this to have been called) end return date_add_sub(lhs, rhs) end local function mt_date_sub(lhs, rhs) if is_date(lhs) then if is_date(rhs) then return DateDiff(lhs, rhs) end return date_add_sub(lhs, rhs, true) end end local function mt_date_concat(lhs, rhs) return tostring(lhs) .. tostring(rhs) end local function mt_date_tostring(self) return self:text() end local function mt_date_eq(lhs, rhs) -- Return true if dates identify same date/time where, for example, -- Date(-4712, 1, 1, 'Julian') == Date(-4713, 11, 24, 'Gregorian') is true. -- This is called only if lhs and rhs have the same type and the same metamethod. if lhs.partial or rhs.partial then -- One date is partial; the other is a partial or a full date. -- The months may both be nil, but must be the same. return lhs.year == rhs.year and lhs.month == rhs.month and lhs.calendar == rhs.calendar end return lhs.jdz == rhs.jdz end local function mt_date_lt(lhs, rhs) -- Return true if lhs < rhs, for example, -- Date('1 Jan 2016') < Date('06:00 1 Jan 2016') is true. -- This is called only if lhs and rhs have the same type and the same metamethod. if lhs.partial or rhs.partial then -- One date is partial; the other is a partial or a full date. if lhs.calendar ~= rhs.calendar then return lhs.calendar == 'Julian' end if lhs.partial then lhs = lhs.partial.first end if rhs.partial then rhs = rhs.partial.first end end return lhs.jdz < rhs.jdz end --[[ Examples of syntax to construct a date: Date(y, m, d, 'julian') default calendar is 'gregorian' Date(y, m, d, H, M, S, 'julian') Date('juliandate', jd, 'julian') if jd contains "." text output includes H:M:S Date('currentdate') Date('currentdatetime') Date('1 April 1995', 'julian') parse date from text Date('1 April 1995 AD', 'julian') using an era sets a flag to do the same for output Date('04:30:59 1 April 1995', 'julian') Date(date) copy of an existing date Date(date, t) same, updated with y,m,d,H,M,S fields from table t Date(t) date with y,m,d,H,M,S fields from table t ]] function Date(...) -- for forward declaration above -- Return a table holding a date assuming a uniform calendar always applies -- (proleptic Gregorian calendar or proleptic Julian calendar), or -- return nothing if date is invalid. -- A partial date has a valid year, however its month may be nil, and -- its day and time fields are nil. -- Field partial is set to false (if a full date) or a table (if a partial date). local calendars = { julian = 'Julian', gregorian = 'Gregorian' } local newdate = { _id = uniq, calendar = 'Gregorian', -- default is Gregorian calendar hastime = false, -- true if input sets a time hour = 0, -- always set hour/minute/second so don't have to handle nil minute = 0, second = 0, options = {}, list = _date_list, subtract = function (self, rhs, options) return DateDiff(self, rhs, options) end, text = _date_text, } local argtype, datetext, is_copy, jd_number, tnums local numindex = 0 local numfields = { 'year', 'month', 'day', 'hour', 'minute', 'second' } local numbers = {} for _, v in ipairs({...}) do v = strip_to_nil(v) local vlower = type(v) == 'string' and v:lower() or nil if v == nil then -- Ignore empty arguments after stripping so modules can directly pass template parameters. elseif calendars[vlower] then newdate.calendar = calendars[vlower] elseif vlower == 'partial' then newdate.partial = true elseif vlower == 'fix' then newdate.want_fix = true elseif is_date(v) then -- Copy existing date (items can be overridden by other arguments). if is_copy or tnums then return end is_copy = true newdate.calendar = v.calendar newdate.partial = v.partial newdate.hastime = v.hastime newdate.options = v.options newdate.year = v.year newdate.month = v.month newdate.day = v.day newdate.hour = v.hour newdate.minute = v.minute newdate.second = v.second elseif type(v) == 'table' then if tnums then return end tnums = {} local tfields = { year=1, month=1, day=1, hour=2, minute=2, second=2 } for tk, tv in pairs(v) do if tfields[tk] then tnums[tk] = tonumber(tv) end if tfields[tk] == 2 then newdate.hastime = true end end else local num = tonumber(v) if not num and argtype == 'setdate' and numindex == 1 then num = month_number(v) end if num then if not argtype then argtype = 'setdate' end if argtype == 'setdate' and numindex < 6 then numindex = numindex + 1 numbers[numfields[numindex]] = num elseif argtype == 'juliandate' and not jd_number then jd_number = num if type(v) == 'string' then if v:find('.', 1, true) then newdate.hastime = true end elseif num ~= floor(num) then -- The given value was a number. The time will be used -- if the fractional part is nonzero. newdate.hastime = true end else return end elseif argtype then return elseif type(v) == 'string' then if v == 'currentdate' or v == 'currentdatetime' or v == 'juliandate' then argtype = v else argtype = 'datetext' datetext = v end else return end end end if argtype == 'datetext' then if tnums or not set_date_from_numbers(newdate, extract_date(newdate, datetext)) then return end elseif argtype == 'juliandate' then newdate.partial = nil newdate.jd = jd_number if not set_date_from_jd(newdate) then return end elseif argtype == 'currentdate' or argtype == 'currentdatetime' then newdate.partial = nil newdate.year = current.year newdate.month = current.month newdate.day = current.day if argtype == 'currentdatetime' then newdate.hour = current.hour newdate.minute = current.minute newdate.second = current.second newdate.hastime = true end newdate.calendar = 'Gregorian' -- ignore any given calendar name elseif argtype == 'setdate' then if tnums or not set_date_from_numbers(newdate, numbers) then return end elseif not (is_copy or tnums) then return end if tnums then newdate.jd = nil -- force recalculation in case jd was set before changes from tnums if not set_date_from_numbers(newdate, tnums) then return end end if newdate.partial then local year = newdate.year local month = newdate.month local first = Date(year, month or 1, 1, newdate.calendar) month = month or 12 local last = Date(year, month, days_in_month(year, month), newdate.calendar) newdate.partial = { first = first, last = last } else newdate.partial = false -- avoid index lookup end setmetatable(newdate, datemt) local readonly = {} local mt = { __index = newdate, __newindex = function(t, k, v) error('date.' .. tostring(k) .. ' is read-only', 2) end, __add = mt_date_add, __sub = mt_date_sub, __concat = mt_date_concat, __tostring = mt_date_tostring, __eq = mt_date_eq, __lt = mt_date_lt, } return setmetatable(readonly, mt) end local function _diff_age(diff, code, options) -- Return a tuple of integer values from diff as specified by code, except that -- each integer may be a list of two integers for a diff with a partial date, or -- return nil if the code is not supported. -- If want round, the least significant unit is rounded to nearest whole unit. -- For a duration, an extra day is added. local wantround, wantduration, wantrange if type(options) == 'table' then wantround = options.round wantduration = options.duration wantrange = options.range else wantround = options end if not is_diff(diff) then local f = wantduration and 'duration' or 'age' error(f .. ': need a date difference (use "diff:' .. f .. '()" with a colon)', 2) end if diff.partial then -- Ignore wantround, wantduration. local function choose(v) if type(v) == 'table' then if not wantrange or v[1] == v[2] then -- Example: Date('partial', 2005) - Date('partial', 2001) gives -- diff.years = { 3, 4 } to show the range of possible results. -- If do not want a range, choose the second value as more expected. return v[2] end end return v end if code == 'ym' or code == 'ymd' then if not wantrange and diff.iszero then -- This avoids an unexpected result such as -- Date('partial', 2001) - Date('partial', 2001) -- giving diff = { years = 0, months = { 0, 11 } } -- which would be reported as 0 years and 11 months. return 0, 0 end return choose(diff.partial.years), choose(diff.partial.months) end if code == 'y' then return choose(diff.partial.years) end if code == 'm' or code == 'w' or code == 'd' then return choose({ diff.partial.mindiff:age(code), diff.partial.maxdiff:age(code) }) end return nil end local extra_days = wantduration and 1 or 0 if code == 'wd' or code == 'w' or code == 'd' then local offset = wantround and 0.5 or 0 local days = diff.age_days + extra_days if code == 'wd' or code == 'd' then days = floor(days + offset) if code == 'd' then return days end return floor(days/7), days % 7 end return floor(days/7 + offset) end local H, M, S = diff.hours, diff.minutes, diff.seconds if code == 'dh' or code == 'dhm' or code == 'dhms' or code == 'h' or code == 'hm' or code == 'hms' or code == 'M' or code == 's' then local days = floor(diff.age_days + extra_days) local inc_hour if wantround then if code == 'dh' or code == 'h' then if M >= 30 then inc_hour = true end elseif code == 'dhm' or code == 'hm' then if S >= 30 then M = M + 1 if M >= 60 then M = 0 inc_hour = true end end elseif code == 'M' then if S >= 30 then M = M + 1 end else -- Nothing needed because S is an integer. end if inc_hour then H = H + 1 if H >= 24 then H = 0 days = days + 1 end end end if code == 'dh' or code == 'dhm' or code == 'dhms' then if code == 'dh' then return days, H elseif code == 'dhm' then return days, H, M else return days, H, M, S end end local hours = days * 24 + H if code == 'h' then return hours elseif code == 'hm' then return hours, M elseif code == 'M' or code == 's' then M = hours * 60 + M if code == 'M' then return M end return M * 60 + S end return hours, M, S end if wantround then local inc_hour if code == 'ymdh' or code == 'ymwdh' then if M >= 30 then inc_hour = true end elseif code == 'ymdhm' or code == 'ymwdhm' then if S >= 30 then M = M + 1 if M >= 60 then M = 0 inc_hour = true end end elseif code == 'ymd' or code == 'ymwd' or code == 'yd' or code == 'md' then if H >= 12 then extra_days = extra_days + 1 end end if inc_hour then H = H + 1 if H >= 24 then H = 0 extra_days = extra_days + 1 end end end local y, m, d = diff.years, diff.months, diff.days if extra_days > 0 then d = d + extra_days if d > 28 or code == 'yd' then -- Recalculate in case have passed a month. diff = diff.date1 + extra_days - diff.date2 y, m, d = diff.years, diff.months, diff.days end end if code == 'ymd' then return y, m, d elseif code == 'yd' then if y > 0 then -- It is known that diff.date1 > diff.date2. diff = diff.date1 - (diff.date2 + (y .. 'y')) end return y, floor(diff.age_days) elseif code == 'md' then return y * 12 + m, d elseif code == 'ym' or code == 'm' then if wantround then if d >= 16 then m = m + 1 if m >= 12 then m = 0 y = y + 1 end end end if code == 'ym' then return y, m end return y * 12 + m elseif code == 'ymw' then local weeks = floor(d/7) if wantround then local days = d % 7 if days > 3 or (days == 3 and H >= 12) then weeks = weeks + 1 end end return y, m, weeks elseif code == 'ymwd' then return y, m, floor(d/7), d % 7 elseif code == 'ymdh' then return y, m, d, H elseif code == 'ymwdh' then return y, m, floor(d/7), d % 7, H elseif code == 'ymdhm' then return y, m, d, H, M elseif code == 'ymwdhm' then return y, m, floor(d/7), d % 7, H, M end if code == 'y' then if wantround and m >= 6 then y = y + 1 end return y end return nil end local function _diff_duration(diff, code, options) if type(options) ~= 'table' then options = { round = options } end options.duration = true return _diff_age(diff, code, options) end -- Metatable for some operations on date differences. diffmt = { -- for forward declaration above __concat = function (lhs, rhs) return tostring(lhs) .. tostring(rhs) end, __tostring = function (self) return tostring(self.age_days) end, __index = function (self, key) local value if key == 'age_days' then if rawget(self, 'partial') then local function jdz(date) return (date.partial and date.partial.first or date).jdz end value = jdz(self.date1) - jdz(self.date2) else value = self.date1.jdz - self.date2.jdz end end if value ~= nil then rawset(self, key, value) return value end end, } function DateDiff(date1, date2, options) -- for forward declaration above -- Return a table with the difference between two dates (date1 - date2). -- The difference is negative if date1 is older than date2. -- Return nothing if invalid. -- If d = date1 - date2 then -- date1 = date2 + d -- If date1 >= date2 and the dates have no H:M:S time specified then -- date1 = date2 + (d.years..'y') + (d.months..'m') + d.days -- where the larger time units are added first. -- The result of Date(2015,1,x) + '1m' is Date(2015,2,28) for -- x = 28, 29, 30, 31. That means, for example, -- d = Date(2015,3,3) - Date(2015,1,31) -- gives d.years, d.months, d.days = 0, 1, 3 (excluding date1). if not (is_date(date1) and is_date(date2) and date1.calendar == date2.calendar) then return end local wantfill if type(options) == 'table' then wantfill = options.fill end local isnegative = false local iszero = false if date1 < date2 then isnegative = true date1, date2 = date2, date1 elseif date1 == date2 then iszero = true end -- It is known that date1 >= date2 (period is from date2 to date1). if date1.partial or date2.partial then -- Two partial dates might have timelines: ---------------------A=================B--- date1 is from A to B inclusive --------C=======D-------------------------- date2 is from C to D inclusive -- date1 > date2 iff A > C (date1.partial.first > date2.partial.first) -- The periods can overlap ('April 2001' - '2001'): -------------A===B------------------------- A=2001-04-01 B=2001-04-30 --------C=====================D------------ C=2001-01-01 D=2001-12-31 if wantfill then date1, date2 = autofill(date1, date2) else local function zdiff(date1, date2) local diff = date1 - date2 if diff.isnegative then return date1 - date1 -- a valid diff in case we call its methods end return diff end local function getdate(date, which) return date.partial and date.partial[which] or date end local maxdiff = zdiff(getdate(date1, 'last'), getdate(date2, 'first')) local mindiff = zdiff(getdate(date1, 'first'), getdate(date2, 'last')) local years, months if maxdiff.years == mindiff.years then years = maxdiff.years if maxdiff.months == mindiff.months then months = maxdiff.months else months = { mindiff.months, maxdiff.months } end else years = { mindiff.years, maxdiff.years } end return setmetatable({ date1 = date1, date2 = date2, partial = { years = years, months = months, maxdiff = maxdiff, mindiff = mindiff, }, isnegative = isnegative, iszero = iszero, age = _diff_age, duration = _diff_duration, }, diffmt) end end local y1, m1 = date1.year, date1.month local y2, m2 = date2.year, date2.month local years = y1 - y2 local months = m1 - m2 local d1 = date1.day + hms(date1) local d2 = date2.day + hms(date2) local days, time if d1 >= d2 then days = d1 - d2 else months = months - 1 -- Get days in previous month (before the "to" date) given December has 31 days. local dpm = m1 > 1 and days_in_month(y1, m1 - 1, date1.calendar) or 31 if d2 >= dpm then days = d1 - hms(date2) else days = dpm - d2 + d1 end end if months < 0 then years = years - 1 months = months + 12 end days, time = math.modf(days) local H, M, S = h_m_s(time) return setmetatable({ date1 = date1, date2 = date2, partial = false, -- avoid index lookup years = years, months = months, days = days, hours = H, minutes = M, seconds = S, isnegative = isnegative, iszero = iszero, age = _diff_age, duration = _diff_duration, }, diffmt) end return { _current = current, _Date = Date, _days_in_month = days_in_month, } 48b9402c32798b1e9f91f2ab44283ebda7b53ed9 Template:Note2 10 1535 2870 2020-08-05T18:01:16Z w>MusikBot II 0 Protected "[[Template:Note2]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:A note]] 13605dfac3b49a18480f2ac3f9f04a860d69ca5f Template:SDcat 10 762 1699 2020-08-07T18:02:31Z wikipedia>MusikBot II 0 Protected "[[Template:SDcat]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:SDcat |setCat}}</includeonly><noinclude> {{documentation}} </noinclude> 8c6e8783ddb0dc699d6fb60370db97b73725b9a6 Template:Aligned table 10 1552 2887 2020-08-09T16:18:21Z w>Bsherr 0 adding comment wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:aligned table|table}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 5cb1e4aa4b2ef03c66dc6643cfbc807bba8ed995 Template:Code 10 229 1282 2020-08-09T22:30:02Z wikipedia>Bsherr 0 adding comment wikitext text/x-wiki {{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 5d9b1a0980efe1b02eb91bc717438a5ae4a5ee04 Template:Convert 10 1168 2497 2020-08-09T22:52:24Z w>Bsherr 0 adding comment wikitext text/x-wiki <includeonly>{{{{{♥|safesubst:}}}#invoke:convert|convert}}</includeonly><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 952ac4080dc4a427c4a65db9951c8a4f4c91c626 Template:Em 10 114 275 2020-08-09T23:17:35Z wikipedia>Bsherr 0 /* top */as found, replacing [[Template:Tld]] with [[Template:Tlc]] or adding/updating category placement comments, plus general and typo fixes wikitext text/x-wiki <em {{#if:{{{role|}}}|role="{{{role}}}"}} {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</em><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> e2fac6fb507a0dd72c4e79d02403049c7d857c8d Template:Infobox British royalty styles 10 1123 2448 2020-08-10T01:29:42Z w>Bsherr 0 as found, replacing [[Template:Tld]] with [[Template:Tlc]] or adding/updating category placement comments, plus general and typo fixes wikitext text/x-wiki {{Infobox manner of address | background = #CCBBEE | colour = #000066 | type = Royal | name = {{{name|{{<includeonly>safesubst:</includeonly>PAGENAMEBASE}}}}} | image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}} | england = Royal Arms of England (1198-1340).svg | greatbritain = Royal Arms of Great Britain (1714-1801).svg | republic = Arms of the Protectorate (1653–1659).svg | scotland = Royal Arms of the Kingdom of Scotland.svg | own = {{{image|}}} | #default = Arms of the United Kingdom.svg }} | size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|50px}} | reference = {{{dipstyle<includeonly>|</includeonly>}}} | spoken = {{{offstyle<includeonly>|</includeonly>}}} | alternative = {{{altstyle<includeonly>|</includeonly>}}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox British royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | altstyle | dipstyle | image | image_size | name | offstyle }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> dfc99b45948c8197b535331a8df1fedd8c3e9315 Template:Pars 10 1562 2897 2020-08-14T20:06:37Z w>Mgkrupa 0 Fix wikitext text/x-wiki <includeonly>{{ #if: {{{2|}}} |{{font | size={{{2}}} | text=(}}<span class="nowrap" style="padding-left:0.1em; padding-right:0.1em;">{{{1|&nbsp;&nbsp;}}}</span>{{font | size={{{2}}} | text=)}}|{{#if: {{{s|}}} |{{font | size={{{s}}} | text=(}}|(}}{{ #if: {{{1|}}} |<span class="nowrap" style="padding-left:0.1em; padding-right:0.1em;">{{{1}}}</span>|&nbsp;&nbsp;}}{{ #if: {{{s|}}} |{{font | size={{{s}}} | text=)}}|)}}}}</includeonly><noinclude> <!------- Below, we add spacing to the above code to make it more readable: -------> {{#if: {{{2|}}} | <!--- Start case where 2 is defined ---> {{font | {{{2}}} | text=(}}<span class="nowrap" style="padding-left:0.1em; padding-right:0.1em;">{{{1|&nbsp;&nbsp;}}}</span>{{font | {{{2}}} | text=)}} <!--- End case where 2 is defined --> | <!-- Start case where 2 is NOT defined --> {{#if: {{{s|}}} |{{font | size={{{s}}} | text=(}}|(}} <!--- If s is defined then font ( otherwise, print a normal ( ---> {{#if: {{{1|}}} | <!--- Start case where 1 is defined ---> <span class="nowrap" style="padding-left:0.1em; padding-right:0.1em;">{{{1}}}</span> | <!--- Start case where 1 is NOT defined ---> &nbsp;&nbsp;}} {{#if: {{{s|}}} |{{font | size={{{s}}} | text=)}}|)}} <!--- If s is defined then font ) otherwise, else print a normal ) ---> }}<!--- End the if statement: {{#if: {{{2|}}} | ... ---> {{documentation}} </noinclude> 0ad03a501529101f992f0cf350d24ec4d9d9b590 Module:SDcat 828 765 1705 2020-08-16T17:20:37Z wikipedia>RexxS 0 if no connection to Wikidata, then do nothing Scribunto text/plain --[[ SDcat Module to check whether local short description matches that on Wikidata --]] local p = {} ------------------------------------------------------------------------------- --[[ setCat has the qid of a Wikidata entity passed as |qid= (it defaults to the associated qid of the current article if omitted) and the local short description passed as |sd= It returns a category if there is an associated Wikidata entity. It returns one of the following tracking categories, as appropriate: * Category:Short description matches Wikidata (case-insensitive) * Category:Short description is different from Wikidata * Category:Short description with empty Wikidata description For testing purposes, a link prefix |lp= may be set to ":" to make the categories visible. --]] -- function exported for use in other modules -- (local short description, Wikidata entity-ID, link prefix) p._setCat = function(sdesc, itemID, lp) if not mw.wikibase then return nil end if itemID == "" then itemID = nil end -- Wikidata description field local wdesc = (mw.wikibase.getDescription(itemID) or ""):lower() if wdesc == "" then return "[[" .. lp .. "Category:Short description with empty Wikidata description]]" elseif wdesc == sdesc then return "[[" .. lp .. "Category:Short description matches Wikidata]]" else return "[[" .. lp .. "Category:Short description is different from Wikidata]]" end end -- function exported for call from #invoke p.setCat = function(frame) local args if frame.args.sd then args = frame.args else args = frame:getParent().args end -- local short description local sdesc = mw.text.trim(args.sd or ""):lower() -- Wikidata entity-ID local itemID = mw.text.trim(args.qid or "") -- link prefix, strip quotes local lp = mw.text.trim(args.lp or ""):gsub('"', '') return p._setCat(sdesc, itemID, lp) end return p 6c19ac0f72c79a618eb105808f74701376bb2b38 Template:Templatedata header 10 1620 2955 2020-08-18T14:12:38Z w>Jonesey95 0 create redirect for what my hands want to type. Silly InterCaps. wikitext text/x-wiki #REDIRECT [[Template:TemplateData header]] 25d8c9db52326d0ad51e186b96b8c4cff0cf02c3 Template:Sandbox other 10 54 991 103 2020-08-21T20:48:35Z Dmehus 10 16 revisions imported: Importing [[mh:test:Template:Soft redirect|Template:Soft redirect]], [[mh:test:Template:Soft redirect 2|Template:Soft redirect 2]], [[mh:test:Template:Interwiki redirect|Template:Interwiki redirect]], and [[mh:test:Template:Interwiki redirect/doc|Template:Interwiki redirect/doc]] from TestWiki. wikitext text/x-wiki {{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> 91e4ae891d6b791615152c1fbc971414961ba872 Template:Template other 10 25 995 45 2020-08-21T20:48:37Z Dmehus 10 10 revisions imported: Importing [[mh:test:Template:Soft redirect|Template:Soft redirect]], [[mh:test:Template:Soft redirect 2|Template:Soft redirect 2]], [[mh:test:Template:Interwiki redirect|Template:Interwiki redirect]], and [[mh:test:Template:Interwiki redirect/doc|Template:Interwiki redirect/doc]] from TestWiki. wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Template}} | template | other }} }} | template = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 06fb13d264df967b5232141067eb7d2b67372d76 Module:String 828 17 997 29 2020-08-21T20:48:39Z Dmehus 10 14 revisions imported: Importing [[mh:test:Template:Soft redirect|Template:Soft redirect]], [[mh:test:Template:Soft redirect 2|Template:Soft redirect 2]], [[mh:test:Template:Interwiki redirect|Template:Interwiki redirect]], and [[mh:test:Template:Interwiki redirect/doc|Template:Interwiki redirect/doc]] from TestWiki. Scribunto text/plain --[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ) local s = new_args['s'] or '' return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The fist index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ) local s = new_args['s'] or '' local i = tonumber( new_args['i'] ) or 1 local j = tonumber( new_args['j'] ) or -1 local len = mw.ustring.len( s ) -- Convert negatives for range checking if i < 0 then i = len + i + 1 end if j < 0 then j = len + j + 1 end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ) end if j < i then return str._error( 'String subset indices out of order' ) end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ _match This function returns a substring from the source string that matches a specified pattern. It is exported for use in other modules Usage: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain_flag, nomatch ) if s == '' then return str._error( 'Target string is empty' ) end if pattern == '' then return str._error( 'Pattern string is empty' ) end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ) end if match_index == 0 then return str._error( 'Match index is out of range' ) end if plain_flag then pattern = str._escapePattern( pattern ) end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ) end local iterator = mw.ustring.gmatch(s, pattern) if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1 if match_index == 0 then result = w break end end else -- Reverse search local result_table = {} local count = 1 for w in iterator do result_table[count] = w count = count + 1 end result = result_table[ count + match_index ] end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ) else return nomatch end else return result end end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} OR {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ) local s = new_args['s'] or '' local start = tonumber( new_args['start'] ) or 1 local plain_flag = str._getBoolean( new_args['plain'] or false ) local pattern = new_args['pattern'] or '' local match_index = math.floor( tonumber(new_args['match']) or 1 ) local nomatch = new_args['nomatch'] return str._match( s, pattern, start, match_index, plain_flag, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ) local target_str = new_args['target'] or '' local pos = tonumber( new_args['pos'] ) or 0 if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ) end return mw.ustring.sub( target_str, pos, pos ) end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ) local source_str = new_args['source'] or '' local target_str = new_args['target'] or '' if target_str == '' then return 1 end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['target'] or '' local start_pos = tonumber(new_args['start']) or 1 local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return 0 end plain = str._getBoolean( plain ) local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['pattern'] or '' local replace = new_args['replace'] or '' local count = tonumber( new_args['count'] ) local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return source_str end plain = str._getBoolean( plain ) if plain then pattern = str._escapePattern( pattern ) replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end local result if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ) else result = mw.ustring.gsub( source_str, pattern, replace ) end return result end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ) end local result = str._escapePattern( pattern_str ) return result end --[[ count This function counts the number of occurrences of one string in another. ]] function str.count(frame) local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = str._getBoolean(args.plain or true) if plain then pattern = str._escapePattern(pattern) end local _, count = mw.ustring.gsub(source, pattern, '') return count end --[[ endswith This function determines whether a string ends with another string. ]] function str.endswith(frame) local args = str._getParameters(frame.args, {'source', 'pattern'}) local source = args.source or '' local pattern = args.pattern or '' if pattern == '' then -- All strings end with the empty string. return "yes" end if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then return "yes" else return "" end end --[[ join Join all non empty arguments together; the first argument is the separator. Usage: {{#invoke:String|join|sep|one|two|three}} ]] function str.join(frame) local args = {} local sep for _, v in ipairs( frame.args ) do if sep then if v ~= '' then table.insert(args, v) end else sep = v end end return table.concat( args, sep or '' ) end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {} local index = 1 local value for _, arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index] index = index + 1 end new_args[arg] = value end return new_args end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame() local error_category = frame.args.error_category or 'Errors reported by Module String' local ignore_errors = frame.args.ignore_errors or false local no_category = frame.args.no_category or false if str._getBoolean(ignore_errors) then return '' end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>' if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str end return error_str end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false else boolean_value = true end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else error( 'No boolean value found' ) end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ) end return str 6df794dd52434e0f6a372c9918f5a9dedd15f579 Module:Check for unknown parameters 828 16 999 2020-08-21T20:48:39Z Dmehus 10 6 revisions imported: Importing [[mh:test:Template:Soft redirect|Template:Soft redirect]], [[mh:test:Template:Soft redirect 2|Template:Soft redirect 2]], [[mh:test:Template:Interwiki redirect|Template:Interwiki redirect]], and [[mh:test:Template:Interwiki redirect/doc|Template:Interwiki redirect/doc]] from TestWiki. Scribunto text/plain -- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext. local pos, truncated local function truncate(text) if truncated then return '' end if mw.ustring.len(text) > 25 then truncated = true text = mw.ustring.sub(text, 1, 25) .. '...' end return mw.text.nowiki(text) end local parts = {} for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do pos = remainder table.insert(parts, truncate(before) .. '&lt;' .. tag .. '&gt;...&lt;/' .. tag .. '&gt;') end table.insert(parts, truncate(text:sub(pos or 1))) return table.concat(parts) end function p._check(args, pargs) if type(args) ~= "table" or type(pargs) ~= "table" then -- TODO: error handling return end local ignoreblank = isnotempty(args['ignoreblank']) local showblankpos = isnotempty(args['showblankpositional']) local knownargs = {} local unknown = args['unknown'] or 'Found _VALUE_, ' local preview = args['preview'] local values = {} local res = {} local regexps = {} -- create the list of known args, regular expressions, and the return string for k, v in pairs(args) do if type(k) == 'number' then v = trim(v) knownargs[v] = 1 elseif k:find('^regexp[1-9][0-9]*$') then table.insert(regexps, '^' .. v .. '$') end end if isnotempty(preview) then preview = '<div class="hatnote" style="color:red"><strong>Warning:</strong> ' .. preview .. ' (this message is shown only in preview).</div>' elseif preview == nil then preview = unknown end -- loop over the parent args, and make sure they are on the list for k, v in pairs(pargs) do if type(k) == 'string' and knownargs[k] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(k, regexp) then knownflag = true break end end if not knownflag and ( not ignoreblank or isnotempty(v) ) then table.insert(values, clean(k)) end elseif type(k) == 'number' and knownargs[tostring(k)] == nil and ( showblankpos or isnotempty(v) ) then table.insert(values, k .. ' = ' .. clean(v)) end end -- add results to the output tables if #values > 0 then if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then unknown = preview end for _, v in pairs(values) do if v == '' then -- Fix odd bug for | = which gets stripped to the empty string and -- breaks category links v = ' ' end -- avoid error with v = 'example%2' ("invalid capture index") local r = unknown:gsub('_VALUE_', {_VALUE_ = v}) table.insert(res, r) end end return table.concat(res) end function p.check(frame) local args = frame.args local pargs = frame:getParent().args return p._check(args, pargs) end return p 82e91534624e40370b95f1a60152f320b41cb688 Template:Navbox 10 205 464 2020-08-28T00:36:54Z Dmehus 10 1 revision imported: Importing [[w:Template:Not around|Template:Not around]], [[w:Template:Not around/doc|Template:Not around/doc]], and associated templates from English Wikipedia. wikitext text/x-wiki <includeonly>{{#invoke:Navbox|navbox}}</includeonly><noinclude> {{Documentation}} </noinclude> fe9b964401f895918ee4fe078678f1722a3c41ec Module:Color contrast 828 148 345 2020-08-28T00:37:19Z Dmehus 10 5 revisions imported: Importing [[w:Template:Not around|Template:Not around]], [[w:Template:Not around/doc|Template:Not around/doc]], and associated templates from English Wikipedia. Scribunto text/plain -- -- This module implements -- {{Color contrast ratio}} -- {{Greater color contrast ratio}} -- {{ColorToLum}} -- {{RGBColorToLum}} -- local p = {} local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' ) local function sRGB (v) if (v <= 0.03928) then v = v / 12.92 else v = math.pow((v+0.055)/1.055, 2.4) end return v end local function rgbdec2lum(R, G, B) if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255) else return '' end end local function hsl2lum(h, s, l) if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then local c = (1 - math.abs(2*l - 1))*s local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) ) local m = l - c/2 local r, g, b = m, m, m if( 0 <= h and h < 60 ) then r = r + c g = g + x elseif( 60 <= h and h < 120 ) then r = r + x g = g + c elseif( 120 <= h and h < 180 ) then g = g + c b = b + x elseif( 180 <= h and h < 240 ) then g = g + x b = b + c elseif( 240 <= h and h < 300 ) then r = r + x b = b + c elseif( 300 <= h and h < 360 ) then r = r + c b = b + x end return rgbdec2lum(255*r, 255*g, 255*b) else return '' end end local function color2lum(c) if (c == nil) then return '' end -- html '#' entity c = c:gsub("&#35;", "#") -- whitespace c = c:match( '^%s*(.-)[%s;]*$' ) -- unstrip nowiki strip markers c = mw.text.unstripNoWiki(c) -- lowercase c = c:lower() -- first try to look it up local L = HTMLcolor[c] if (L ~= nil) then return L end -- convert from hsl if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100) end -- convert from rgb if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$') return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B)) end -- convert from rgb percent if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100) end -- remove leading # (if there is one) and whitespace c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$') -- split into rgb local cs = mw.text.split(c or '', '') if( #cs == 6 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2]) local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4]) local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6]) return rgbdec2lum(R, G, B) elseif ( #cs == 3 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1]) local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2]) local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3]) return rgbdec2lum(R, G, B) end -- failure, return blank return '' end -- This exports the function for use in other modules. -- The colour is passed as a string. function p._lum(color) return color2lum(color) end function p._greatercontrast(args) local bias = tonumber(args['bias'] or '0') or 0 local css = (args['css'] and args['css'] ~= '') and true or false local v1 = color2lum(args[1] or '') local c2 = args[2] or '#FFFFFF' local v2 = color2lum(c2) local c3 = args[3] or '#000000' local v3 = color2lum(c3) local ratio1 = -1; local ratio2 = -1; if (type(v1) == 'number' and type(v2) == 'number') then ratio1 = (v2 + 0.05)/(v1 + 0.05) ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1 end if (type(v1) == 'number' and type(v3) == 'number') then ratio2 = (v3 + 0.05)/(v1 + 0.05) ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2 end if css then local c1 = args[1] or '' if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c1 = '#' .. c1 end if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c2 = '#' .. c2 end if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c3 = '#' .. c3 end return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';' end return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '' end function p._ratio(args) local v1 = color2lum(args[1]) local v2 = color2lum(args[2]) if (type(v1) == 'number' and type(v2) == 'number') then -- v1 should be the brighter of the two. if v2 > v1 then v1, v2 = v2, v1 end return (v1 + 0.05)/(v2 + 0.05) else return args['error'] or '?' end end function p._styleratio(args) local style = (args[1] or ''):lower() local bg, fg = 'white', 'black' local lum_bg, lum_fg = 1, 0 if args[2] then local lum = color2lum(args[2]) if lum ~= '' then bg, lum_bg = args[2], lum end end if args[3] then local lum = color2lum(args[3]) if lum ~= '' then fg, lum_fg = args[3], lum end end local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '&#35;', '#'), ';') for k = 1,#slist do local s = slist[k] local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' ) k = k or '' v = v or '' if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_bg = v, lum end elseif (k:match('^[%s]*(color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_fg = v, lum end end end if lum_bg > lum_fg then return (lum_bg + 0.05)/(lum_fg + 0.05) else return (lum_fg + 0.05)/(lum_bg + 0.05) end end --[[ Use {{#invoke:Color contrast|somecolor}} directly or {{#invoke:Color contrast}} from a wrapper template. Parameters: -- |1= — required; A color to check. --]] function p.lum(frame) local color = frame.args[1] or frame:getParent().args[1] return p._lum(color) end function p.ratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._ratio(args) end function p.styleratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._styleratio(args) end function p.greatercontrast(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._greatercontrast(args) end return p 1e399769117591366a63f62996c9a407077cc711 Template:Yesno 10 12 19 2020-08-28T03:15:17Z Xaosflux 7 add additional paramerters, "t", "f" - requested on talk - worked in sandbox /testcases wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }} |no |n |f |false |off |0 = {{{no|<!-- null -->}}} | = {{{blank|{{{no|<!-- null -->}}}}}} |¬ = {{{¬|}}} |yes |y |t |true |on |1 = {{{yes|yes}}} |#default = {{{def|{{{yes|yes}}}}}} }}<noinclude> {{Documentation}} </noinclude> 629c2937bc5cf7cfe13cd2a598582af832782399 Module:TNT 828 77 1073 2020-08-30T07:28:25Z wikipedia>Johnuniq 0 Changed protection level for "[[Module:TNT]]": [[WP:High-risk templates|High-risk Lua module]]: per request at [[WP:RFPP]] to match [[Module:Excerpt]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain -- -- INTRO: (!!! DO NOT RENAME THIS PAGE !!!) -- This module allows any template or module to be copy/pasted between -- wikis without any translation changes. All translation text is stored -- in the global Data:*.tab pages on Commons, and used everywhere. -- -- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules -- -- ATTENTION: -- Please do NOT rename this module - it has to be identical on all wikis. -- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT -- Please do not modify it anywhere else, as it may get copied and override your changes. -- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT -- -- DESCRIPTION: -- The "msg" function uses a Commons dataset to translate a message -- with a given key (e.g. source-table), plus optional arguments -- to the wiki markup in the current content language. -- Use lang=xx to set language. Example: -- -- {{#invoke:TNT | msg -- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab --> -- | source-table <!-- uses a translation message with id = "source-table" --> -- | param1 }} <!-- optional parameter --> -- -- -- The "doc" function will generate the <templatedata> parameter documentation for templates. -- This way all template parameters can be stored and localized in a single Commons dataset. -- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons. -- -- {{#invoke:TNT | doc | Graph:Lines }} -- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab -- if the current page is Template:Graph:Lines/doc -- local p = {} local i18nDataset = 'I18n/Module:TNT.tab' -- Forward declaration of the local functions local sanitizeDataset, loadData, link, formatMessage function p.msg(frame) local dataset, id local params = {} local lang = nil for k, v in pairs(frame.args) do if k == 1 then dataset = mw.text.trim(v) elseif k == 2 then id = mw.text.trim(v) elseif type(k) == 'number' then table.insert(params, mw.text.trim(v)) elseif k == 'lang' and v ~= '_' then lang = mw.text.trim(v) end end return formatMessage(dataset, id, params, lang) end -- Identical to p.msg() above, but used from other lua modules -- Parameters: name of dataset, message key, optional arguments -- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.format(dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('format', 1, dataset, 'string') checkType('format', 2, key, 'string') return formatMessage(dataset, key, {...}) end -- Identical to p.msg() above, but used from other lua modules with the language param -- Parameters: language code, name of dataset, message key, optional arguments -- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.formatInLanguage(lang, dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('formatInLanguage', 1, lang, 'string') checkType('formatInLanguage', 2, dataset, 'string') checkType('formatInLanguage', 3, key, 'string') return formatMessage(dataset, key, {...}, lang) end -- Obsolete function that adds a 'c:' prefix to the first param. -- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab' function p.link(frame) return link(frame.args[1]) end function p.doc(frame) local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1]) return frame:extensionTag('templatedata', p.getTemplateData(dataset)) .. formatMessage(i18nDataset, 'edit_doc', {link(dataset)}) end function p.getTemplateData(dataset) -- TODO: add '_' parameter once lua starts reindexing properly for "all" languages local data = loadData(dataset) local names = {} for _, field in pairs(data.schema.fields) do table.insert(names, field.name) end local params = {} local paramOrder = {} for _, row in pairs(data.data) do local newVal = {} local name = nil for pos, val in pairs(row) do local columnName = names[pos] if columnName == 'name' then name = val else newVal[columnName] = val end end if name then params[name] = newVal table.insert(paramOrder, name) end end -- Work around json encoding treating {"1":{...}} as an [{...}] params['zzz123']='' local json = mw.text.jsonEncode({ params=params, paramOrder=paramOrder, description=data.description }) json = string.gsub(json,'"zzz123":"",?', "") return json end -- Local functions sanitizeDataset = function(dataset) if not dataset then return nil end dataset = mw.text.trim(dataset) if dataset == '' then return nil elseif string.sub(dataset,-4) ~= '.tab' then return dataset .. '.tab' else return dataset end end loadData = function(dataset, lang) dataset = sanitizeDataset(dataset) if not dataset then error(formatMessage(i18nDataset, 'error_no_dataset', {})) end -- Give helpful error to thirdparties who try and copy this module. if not mw.ext or not mw.ext.data or not mw.ext.data.get then error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset) end local data = mw.ext.data.get(dataset, lang) if data == false then if dataset == i18nDataset then -- Prevent cyclical calls error('Missing Commons dataset ' .. i18nDataset) else error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)})) end end return data end -- Given a dataset name, convert it to a title with the 'commons:data:' prefix link = function(dataset) return 'c:Data:' .. mw.text.trim(dataset or '') end formatMessage = function(dataset, key, params, lang) for _, row in pairs(loadData(dataset, lang).data) do local id, msg = unpack(row) if id == key then local result = mw.message.newRawMessage(msg, unpack(params or {})) return result:plain() end end if dataset == i18nDataset then -- Prevent cyclical calls error('Invalid message key "' .. key .. '"') else error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)})) end end return p 9d0d10e54abd232c806dcabccaf03e52858634a1 Template:Gbmappingsmall 10 1403 2738 2020-09-01T00:17:20Z Ahecht 42 Reduce [[WP:PEIS]] wikitext text/x-wiki {{#if:{{{1|}}}|{{#invoke:Ordnance Survey coordinates|oscoord|{{{1}}}_region:GB_scale:25000|{{{1}}}|name={{{name|}}}}}}}<noinclude> {{documentation|Template:Gbmapping/doc}} <!-- Add cats and interwikis to the /doc subpage, not here! --> </noinclude> 62950f72eed4e5bfccd0a82c4c20fec7fd51b4b5 Template:Abbr 10 89 225 2020-09-02T09:46:47Z wikipedia>Primefac 0 remove third parameter, as it is causing lint issues (TPER) wikitext text/x-wiki <abbr {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|&quot;}}}}">{{{1|}}}</abbr><noinclude>{{Documentation}} </noinclude> 5fd53aa19ba927ce3eea9092a4fa31f881df0a6e Template:Increase 10 1176 2505 2020-09-08T22:54:27Z w>Sdkb 0 adding size parameter, per talk wikitext text/x-wiki [[File:Increase2.svg|{{{size|11px}}}|alt={{{1|Increase}}}|link=|{{{1|Increase}}}]]<noinclude> {{documentation}} </noinclude> dac0cb099f2bf8616e0649249f7e4593a2bf54bd Template:Subpage other 10 1265 2599 2020-09-10T16:00:23Z w>Favonian 0 Changed protection level for "[[Template:Subpage other]]": [[WP:High-risk templates|Highly visible template]]: requested at [[WP:RFPP]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki {{#ifeq:{{SUBPAGENAME}}|{{ROOTPAGENAME}}|{{{2|}}}|{{{1|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> ebcb508ec39c25594f4151c4e32c01eeb5732f3d Template:IsValidPageName 10 178 409 2020-09-10T21:37:46Z Pppery 6 Module being deleted wikitext text/x-wiki {{#ifeq:{{{1}}}|-||{{#iferror:{{#invoke:Page|invalid|{{{1}}}}}||valid}}}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> df8eb681019823d4eba2df6f8d521bc95426d54e Template:Cslist/styles.css 10 613 1384 2020-09-18T15:41:55Z wikipedia>Izno 0 add embedded option sanitized-css text/css /* {{pp-template}} */ /* make an inline list with either comma or semicolon separators */ ul.cslist, ul.sslist { margin: 0; padding: 0; display: inline-block; list-style: none; } ul.cslist-embedded { display: inline; } .cslist li, .sslist li { margin: 0; padding: 0 0.25em 0 0; display: inline-block; } .cslist li:after { content: ", "; } .sslist li:after { content: "; "; } .cslist li:last-child:after, .sslist li:last-child:after { content: none; } b7fc7c7a6f4e14d23d0a7483f5727aec838c7a21 Module:Cslist 828 614 1386 2020-09-18T15:45:25Z wikipedia>Izno 0 sync from sandbox Scribunto text/plain p = {} p.makelist = function(frame) local args = frame.args if not args[1] then args = frame:getParent().args if not args[1] then return end end local semi = (args.semi or ""):sub(1,1):lower() semi = (semi == "t") or (semi == "y") local embedded = (args.embedded or ""):sub(1,1):lower() embedded = (embedded == "y") local out = "" for k, v in ipairs(args) do v = mw.text.trim(v) if v ~= "" then out = out .. "<li>" .. v .. "</li>" end end local listclass = "" if semi then listclass = listclass .. "sslist" else listclass = listclass .. "cslist" end if embedded then listclass = listclass .. " cslist-embedded" end if out ~= "" then return '<ul class="'.. listclass ..'">' .. out .. '</ul>' end end return p 82fa872fef0f065ea5b7e6639e4390c93142fac9 Template:Sup 10 1483 2818 2020-09-23T06:24:01Z w>RMCD bot 0 Removing notice of move discussion wikitext text/x-wiki <includeonly><sup>{{{1}}}</sup></includeonly><noinclude> {{documentation}} <!-- Add cats and interwikis to the /doc subpage, not here! --> </noinclude> d7d0f30bf52c68f2f488db57534de2552c40c938 Module:Anchor 828 567 1280 2020-09-24T22:32:51Z Pppery 6 Add class per edit request Scribunto text/plain -- This module implements {{anchor}}. local getArgs = require('Module:Arguments').getArgs local tableTools = require('Module:TableTools') local p = {} function p.main(frame) -- Get the positional arguments from #invoke, remove any nil values, -- and pass them to p._main. local args = getArgs(frame) local argArray = tableTools.compressSparseArray(args) return p._main(unpack(argArray)) end function p._main(...) -- Generate the list of anchors. local anchors = {...} local ret = {} for _, anchor in ipairs(anchors) do ret[#ret + 1] = '<span class="anchor" id="' .. anchor .. '"></span>' end return table.concat(ret) end return p e41d3f5d2f2840528aebb9bac719873540fcb3b8 Template:Infobox settlement/metric 10 1445 2780 2020-09-28T06:57:35Z w>Jonesey95 0 This should work better; strip commas but leave decimal points wikitext text/x-wiki <includeonly>{{formatnum:{{replace|{{{metv}}}|,|}}}}{{{s|&nbsp;}}}{{{metu|m}}} ({{formatnum:{{replace|{{{impv}}}|,|}}}}{{{s|&nbsp;}}}{{{impu|ft}}}{{#ifeq:{{{impv|0}}}|1||{{#ifeq:{{{s}}}|/||{{#ifeq:{{{impu}}}|acre|s}}}}}})</includeonly><noinclude> {{documentation}} </noinclude> 238498d088545a64bfa63221c9bf59ecddda8b56 Template:Infobox settlement/densdisp 10 1428 2763 2020-09-28T06:58:54Z w>Jonesey95 0 Undid revision 980749675 by [[Special:Contributions/Jonesey95|Jonesey95]] ([[User talk:Jonesey95|talk]]). broken wikitext text/x-wiki <includeonly>{{#if: {{#iferror:{{#expr:-{{formatnum:{{{/km2}}}|R}}}} |{{#iferror:{{#expr:-{{formatnum:{{{/sqmi}}}|R}}}} |{{#switch:auto |{{{/km2}}}|{{{/sqmi}}}={{#iferror:{{#expr:-{{formatnum:{{{pop}}}|R}}}} ||{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{ha|}}}|R}}}}}} +{{#iferror:{{#expr:{{formatnum:{{{km2|}}}|R}}}}}} +{{#iferror:{{#expr:{{formatnum:{{{acre|}}}|R}}}}}} +{{#iferror:{{#expr:{{formatnum:{{{sqmi|}}}|R}}}}}} +{{#iferror:{{#expr:{{formatnum:{{{dunam|}}}|R}}}}}} +0 >0 |1}} }} }} |1 }} |1 }} |{{infobox settlement/{{infobox settlement/pref|{{{pref}}}|{{{name}}}}} |metv={{#iferror:{{#expr:-{{formatnum:{{{/km2}}}|R}}}} |{{#iferror:{{#expr:-{{formatnum:{{{/sqmi}}}|R}}}} |{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{km2|}}}|R}}}}}}+0>0 |{{round|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{km2}}}|R}}}}<!-- -->|{{#expr:1-{{Order of magnitude|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{km2}}}|R}}}}}}}}}} |{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{ha|}}}|R}}}}}}+0>0 |{{round|{{#expr:100*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{ha}}}|R}}}}<!-- -->|{{#expr:1-{{Order of magnitude|{{#expr:100*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{ha}}}|R}}}}}}}}}} |{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{dunam|}}}|R}}}}}}+0>0 |{{round|{{#expr:1000*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{dunam}}}|R}}}}<!-- -->|{{#expr:1-{{Order of magnitude|{{#expr:1000*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{dunam}}}|R}}}}}}}}}} |{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{sqmi|}}}|R}}}}}}+0>0 |{{round|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{sqmi}}}|R}}/2.589988110336}}<!-- -->|{{#expr:1-{{Order of magnitude|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{sqmi}}}|R}}/2.589988110336}}}}}}}} |{{round|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{acre}}}|R}}/0.004046856422}}<!-- -->|{{#expr:1-{{Order of magnitude|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{acre}}}|R}}/0.004046856422}}}}}}}} }}}}}}}} |{{round |{{#expr:{{formatnum:{{{/sqmi}}}|R}}/2.589988110336}} |{{max |{{precision|{{formatnum:{{{/sqmi}}}|R}}}} |-{{Order of magnitude|{{#expr:{{formatnum:{{{/sqmi}}}|R}}/2.589988110336}}}} }} }} }} |{{{/km2}}} }} |metu=km<sup>2</sup> |impv={{#iferror:{{#expr:-{{formatnum:{{{/sqmi}}}|R}}}} |{{#iferror:{{#expr:-{{formatnum:{{{/km2}}}|R}}}} |{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{sqmi|}}}|R}}}}}}+0>0 |{{round|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{sqmi}}}|R}}}}<!-- -->|{{#expr:1-{{Order of magnitude|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{sqmi}}}|R}}}}}}}}}} |{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{acre|}}}|R}}}}}}+0>0 |{{round|{{#expr:640*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{acre}}}|R}}}}<!-- -->|{{#expr:1-{{Order of magnitude|{{#expr:640*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{acre}}}|R}}}}}}}}}} |{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{km2|}}}|R}}}}}}+0>0 |{{round|{{#expr:2.589988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{km2}}}|R}}}}<!-- -->|{{#expr:1-{{Order of magnitude|{{#expr:2.589988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{km2}}}|R}}}}}}}}}} |{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{ha|}}}|R}}}}}}+0>0 |{{round|{{#expr:258.9988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{ha}}}|R}}}}<!-- -->|{{#expr:1-{{Order of magnitude|{{#expr:258.9988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{ha}}}|R}}}}}}}}}} |{{round|{{#expr:2589.988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{dunam}}}|R}}}}<!-- -->|{{#expr:1-{{Order of magnitude|{{#expr:2589.988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{dunam}}}|R}}}}}}}}}} }}}}}}}} |{{round |{{#expr:{{formatnum:{{{/km2}}}|R}}*2.589988110336}} |{{max |{{#expr:{{precision|{{formatnum:{{{/km2}}}|R}}}}-1}} |-{{Order of magnitude|{{#expr:{{formatnum:{{{/km2}}}|R}}*2.589988110336}}}} }} }} }} |{{{/sqmi}}} }} |impu=sq&nbsp;mi |s=/ }} }}</includeonly><noinclude> {{documentation}} </noinclude> 8d2587f8008e5720272fd3abbbdd54f8c8dc306a Module:Effective protection level 828 31 57 2020-09-29T03:38:47Z wikipedia>Jackmcbarn 0 bring in changes from sandbox Scribunto text/plain local p = {} -- Returns the permission required to perform a given action on a given title. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local level = mw.ext.FlaggedRevs.getStabilitySettings(title) level = level and level.autoreview if level == 'review' then return 'reviewer' elseif level ~= '' then return level else return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review end elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 ) end if title.namespace == 8 then -- MediaWiki namespace if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page return 'interfaceadmin' else -- any non-JS/CSS MediaWiki page return 'sysop' end elseif title.namespace == 2 and title.isSubpage then if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page return 'interfaceadmin' elseif title.contentModel == 'json' then -- user JSON page return 'sysop' end end if action == 'undelete' then return 'sysop' end local level = title.protectionLevels[action] and title.protectionLevels[action][1] if level == 'sysop' or level == 'editprotected' then return 'sysop' elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page return 'sysop' elseif level == 'templateeditor' then return 'templateeditor' elseif action == 'move' then local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move. if blacklistentry and not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif title.namespace == 6 then return 'filemover' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end end local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename) if blacklistentry then if not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason return 'autoconfirmed' elseif level then return level elseif action == 'upload' then return 'autoconfirmed' elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts return 'user' else return '*' end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p 70256a489edf6be9808031b14a7e3ef3e025da97 Template:Infobox president styles/doc 10 1282 2616 2020-10-02T00:31:30Z w>Funandtrvl 0 update code wikitext text/x-wiki {{Documentation subpage}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --> {{Wraps infobox|Infobox manner of address}}<includeonly>{{sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> {{DEFAULTSORT:President Styles}} [[Category:Politics and government infobox templates]] [[Category:Styles infobox templates]] }}</includeonly> fc305a1de6b95992169b7ee28a91564caa394736 Template:Infobox president styles 10 1130 2455 2020-10-02T00:32:11Z w>Funandtrvl 0 update code wikitext text/x-wiki {{Infobox manner of address | type = Presidential | name = {{{name<includeonly>|{{{{{|safesubst:}}}PAGENAME}}</includeonly>}}} | image = {{{image<includeonly>|</includeonly>}}} | image_alt = {{{image_alt<includeonly>|</includeonly>}}} | image_size = {{{image_size|{{{size|}}}}}} | image2 = {{{image2<includeonly>|</includeonly>}}} | image2_alt = {{{image2_alt<includeonly>|</includeonly>}}} | image2_size = {{{image2_size<includeonly>|{{{size2|{{{image_size|{{{size|}}}}}}}}}</includeonly>}}} | reference = {{{dipstyle<includeonly>|{{{reference|}}}</includeonly>}}} | spoken = {{{offstyle<includeonly>|{{{spoken|}}}</includeonly>}}} | alternative = {{{altstyle<includeonly>|{{{alternative|}}}</includeonly>}}} }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 36f010eb727c3f11fe68f7746b627990316ee943 Template:Infobox viceroy styles 10 1133 2458 2020-10-02T00:38:51Z w>Funandtrvl 0 sort wikitext text/x-wiki {{Infobox manner of address | background = #6C488F | colour = #fff | type = Viceregal | name = {{{name}}} | image = {{{image}}} | size = {{{size}}} | reference = {{{dipstyle}}} | spoken = {{{offstyle}}} }}<noinclude>{{Documentation|content= {{Wraps infobox|Infobox manner of address}} [[Category:Styles infobox templates|Viceroy Styles]] }}</noinclude> cd354143e4edcf04301736abc85435204215a3d5 Template:Legend/styles.css 10 1104 2407 2020-10-03T19:24:47Z wikipedia>Nihiltres 0 Updated (a touch boldly) based on discussion on talk; sets legend-color size and line-height to 1.25 em, makes width minimum, not fixed, and removes font-size sanitized-css text/css /* {{pp-template}} */ .legend { page-break-inside: avoid; break-inside: avoid-column; } .legend-color { display: inline-block; min-width: 1.25em; height: 1.25em; line-height: 1.25; margin: 1px 0; text-align: center; border: 1px solid black; background-color: transparent; color: black; } .legend-text {/*empty for now, but part of the design!*/} f55cad65402533fc931db7fefc801536194952d7 Template:Uses Infobox settlement 10 1435 2770 2020-10-07T15:07:33Z w>TerraCyprus 0 wikitext text/x-wiki {{#ifeq:{{NAMESPACE}}|Template|{{Ombox | type = style | image = [[File:Ambox warning yellow.svg|40x40px|alt=|link=]] | text = '''This template is a customized wrapper for {{tl|Infobox settlement}} and as such included in [[:Category:Templates calling Infobox settlement]]'''. Any field from {{tld|Infobox settlement}} can work so long as it is added to this template first. It will also emit the same [[hCard]] and [[Geo (microformat)|Geo]] [[microformat]]s as {{tld|Infobox settlement}}. Questions? Just ask here or over at [[Template talk:Infobox settlement]]. }}<includeonly>{{#ifeq: {{PAGENAME}} | {{BASEPAGENAME}} | [[Category:Templates calling Infobox settlement]] }}</includeonly>}}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 54c13b0fa52195c6f1f43fe35f20cb8d5e3b2823 Template:Cite Americana/doc 10 1703 3205 2020-10-13T18:53:06Z wikipedia>AManWithNoPlan 0 /* Using volume, pages, page */ wikitext text/x-wiki {{Documentation subpage}} === Purpose === This template facilitates the citation of articles from editions of ''[[Encyclopedia Americana]]'' that are in the [[public domain]] using {{tl|cite encyclopedia}}. The template can also be used to cite articles from editions that are not in the public domain. In these cases, the <code>noicon</code> parameter should be used to suppress the icon. === Usage === <code><nowiki>{{Cite Americana|wstitle=''name of the Americana article here''}}</nowiki></code> or with a specification of additional options: <pre><nowiki>{{</nowiki>Cite Americana</pre> |noicon=''1'' — suppress the leading icon |inline=''1'' — changes the prescript and should be used when this template is used as an inline citation |short=''1'' — suppresses some of the fields such as editor's name |ref=''harv'' — can be overridden (if you need to ask you do not need to change it) |wstitle=''Americana article'' — if the article is available on Wikisource |display=''alternative name'' — displayed inplace of the wstitle name |title=''Americana article'' — if the article is not available on Wikisource |url= — will not be set unless the parameter ''title='' is set If not set, set in the template Cite Americana to default values |encyclopedia= — "''Encyclopedia Americana''" |editor-first= — defaults to "''George Edwin''" |editor-last= — defaults to "''Rines''" |{encyclopedia= |year — defaults to 1920 If set pass in other standard parameters: |first= |first1= |first2= |last= |last1= |last2= |author= |author1= |author2= |authors= |authorlink= |coauthors= |volume= |page= |pages= |separator= |postscript= <pre>}}</pre> Some parameters, unless set to other values, are pre-set: *<code>editor-first</code> defaults to "''George Edwin''" *<code>editor-last</code> defaults to "''Rines''" *<code>year</code> defaults to "''1920''" === Examples === ====Simple==== <code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon}}</nowiki></code> displays as: {{Cite Americana|wstitle=Cogniet, Leon}} ====With comment==== <code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon}} A French history and portrait painter with many famous students.</nowiki></code> displays as: {{Cite Americana|wstitle=Cogniet, Leon}} A French history and portrait painter with many famous students. ====Using <code>author</code>==== <code><nowiki>{{Cite Americana|author=[[Wilbur L. Cross]] |wstitle=David Copperfield}}</nowiki></code> displays as: {{Cite Americana|author=[[Wilbur L. Cross]] |wstitle=David Copperfield}} ====Using <code>volume</code>, <code>pages</code>, <code>page</code>==== These work as with other {{tl|cite journal}} templates: <code><nowiki>{{Cite Americana |title=Pulte, Joseph Hippolyt |volume=22 |page=799 }}</nowiki></code> displays as: {{Cite Americana |title=Pulte, Joseph Hippolyt |volume=22 |page=799 }} ====Using <code>display</code>==== The mechanics of Wikisource will sometimes require that a link have disambiguation information which is not part of the original title. The <code>display</code> parameter allows this information to be hidden for the purpose of the citation. For example: <code><nowiki>{{Cite Americana|wstitle=Monroe (Louisiana) |display=Monroe, La.}}</nowiki></code> displays as: {{Cite Americana|wstitle=Monroe (Louisiana) |display=Monroe, La.}} ====Using <code>noicon</code>==== <code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon|noicon=x}}</nowiki></code> displays as: {{Cite Americana|wstitle=Cogniet, Leon|noicon=x}} ====Using <code>vb</code>==== If text is incorporated verbatim into an article, the <code>vb</code> parameter can be used to tack on a notice appropriate to the policy in [[Wikipedia:Plagiarism]]. <code><nowiki>{{Cite Americana|wstitle=Schlatter, Michael |vb=x}}</nowiki></code> displays as: {{Cite Americana|wstitle=Schlatter, Michael |vb=x}} This option is depreciated. Instead use {{tl|Americana}} which does the same thing without the need for a ''vb=x'' parameter. ====Using <code>title</code> (no Wikisource link)==== <code><nowiki>{{Cite Americana |title=Sterne, Simon}}</nowiki></code> displays as: {{Cite Americana |title=Sterne, Simon}} When <code>title</code> is being used, <code>url</code> can be used to specify an external link. For example: <pre><nowiki> {{Cite Americana |title=Sterne, Simon |url=https://books.google.com/books?id=cr9PAAAAMAAJ&pg=PA632 }} At [[Google Books]]. </nowiki></pre> displays as: {{Cite Americana |title=Sterne, Simon |url=https://books.google.com/books?id=cr9PAAAAMAAJ&pg=PA632 }} At [[Google Books]]. ====Using <code>short</code>==== If a shorter citation is desired, excluding the editor of the 1920 edition, the <code>short</code> option can be used. For example: <code><nowiki>{{Cite Americana|wstitle=Schlatter, Michael|short=x}}</nowiki></code> displays as: {{Cite Americana|wstitle=Schlatter, Michael|short=x}} If another edition besides 1920 is being used, the editor name can be customized using <code>editor-first</code> and <code>editor-last</code>. If used, these two items will be displayed whether or not the <code>short</code> option is specified. == Hidden categories == This template places articles into a hidden category with sub-categories to aid maintenance: *[[:Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana]] == See also == * {{tl|Americana}} Similar in effect to setting the parameter vb=''x'' * {{tl|Americana Poster}} <includeonly>{{Sandbox other|| <!-- CATEGORIES AND INTERWIKIS HERE, THANKS --> {{DEFAULTSORT:Americana Cite}} [[Category:Attribution templates]] [[Category:Encyclopedia source templates]] [[Category:Wikisource link templates]] [[ja:Template:Cite Americana]] }}</includeonly> 51b57656e51c3431a29d8167fb0a29bcf06f68ea Template:Tlx 10 22 205 2020-10-15T22:47:01Z Dmehus 10 1 revision imported: Importing [[w:Template:Help me|Template:Help me]], [[w:Template:Admin help|Template:Admin help]], and related templates from the English Wikipedia wikitext text/x-wiki <code><nowiki>{{</nowiki>{{#if:{{{subst|}}} |[[Help:Substitution|subst]]:}}<!-- -->[[{{{lang|{{{LANG|}}}}}}{{{sister|{{{SISTER|}}}}}}{{ns:Template}}:{{{1|}}}|{{{1|}}}]]<!-- -->{{#if:{{{2|}}} |&#124;{{{2}}}}}<!-- -->{{#if:{{{3|}}} |&#124;{{{3}}}}}<!-- -->{{#if:{{{4|}}} |&#124;{{{4}}}}}<!-- -->{{#if:{{{5|}}} |&#124;{{{5}}}}}<!-- -->{{#if:{{{6|}}} |&#124;{{{6}}}}}<!-- -->{{#if:{{{7|}}} |&#124;{{{7}}}}}<!-- -->{{#if:{{{8|}}} |&#124;{{{8}}}}}<!-- -->{{#if:{{{9|}}} |&#124;{{{9}}}}}<!-- -->{{#if:{{{10|}}} |&#124;{{{10}}}}}<!-- -->{{#if:{{{11|}}} |&#124;{{{11}}}}}<!-- -->{{#if:{{{12|}}} |&#124;{{{12}}}}}<!-- -->{{#if:{{{13|}}} |&#124;{{{13}}}}}<!-- -->{{#if:{{{14|}}} |&#124;{{{14}}}}}<!-- -->{{#if:{{{15|}}} |&#124;{{{15}}}}}<!-- -->{{#if:{{{16|}}} |&#124;{{{16}}}}}<!-- -->{{#if:{{{17|}}} |&#124;{{{17}}}}}<!-- -->{{#if:{{{18|}}} |&#124;{{{18}}}}}<!-- -->{{#if:{{{19|}}} |&#124;{{{19}}}}}<!-- -->{{#if:{{{20|}}} |&#124;{{{20}}}}}<!-- -->{{#if:{{{21|}}} |&#124;''...''}}<!-- --><nowiki>}}</nowiki></code>{{#if: {{{LANG|}}} | {{Z181}} | {{#if: {{{SISTER|}}} | {{Z181}} }} }}<noinclude> {{Documentation}} </noinclude> 111a24c08959adf503c520d62428ef5f76e1fe00 Module:Category handler 828 143 335 2020-10-15T22:47:03Z Dmehus 10 3 revisions imported: Importing [[w:Template:Help me|Template:Help me]], [[w:Template:Admin help|Template:Admin help]], and related templates from the English Wikipedia Scribunto text/plain -------------------------------------------------------------------------------- -- -- -- CATEGORY HANDLER -- -- -- -- This module implements the {{category handler}} template in Lua, -- -- with a few improvements: all namespaces and all namespace aliases -- -- are supported, and namespace names are detected automatically for -- -- the local wiki. This module requires [[Module:Namespace detect]] -- -- and [[Module:Yesno]] to be available on the local wiki. It can be -- -- configured for different wikis by altering the values in -- -- [[Module:Category handler/config]], and pages can be blacklisted -- -- from categorisation by using [[Module:Category handler/blacklist]]. -- -- -- -------------------------------------------------------------------------------- -- Load required modules local yesno = require('Module:Yesno') -- Lazily load things we don't always need local mShared, mappings local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function trimWhitespace(s, removeBlanks) if type(s) ~= 'string' then return s end s = s:match('^%s*(.-)%s*$') if removeBlanks then if s ~= '' then return s else return nil end else return s end end -------------------------------------------------------------------------------- -- CategoryHandler class -------------------------------------------------------------------------------- local CategoryHandler = {} CategoryHandler.__index = CategoryHandler function CategoryHandler.new(data, args) local obj = setmetatable({ _data = data, _args = args }, CategoryHandler) -- Set the title object do local pagename = obj:parameter('demopage') local success, titleObj if pagename then success, titleObj = pcall(mw.title.new, pagename) end if success and titleObj then obj.title = titleObj if titleObj == mw.title.getCurrentTitle() then obj._usesCurrentTitle = true end else obj.title = mw.title.getCurrentTitle() obj._usesCurrentTitle = true end end -- Set suppression parameter values for _, key in ipairs{'nocat', 'categories'} do local value = obj:parameter(key) value = trimWhitespace(value, true) obj['_' .. key] = yesno(value) end do local subpage = obj:parameter('subpage') local category2 = obj:parameter('category2') if type(subpage) == 'string' then subpage = mw.ustring.lower(subpage) end if type(category2) == 'string' then subpage = mw.ustring.lower(category2) end obj._subpage = trimWhitespace(subpage, true) obj._category2 = trimWhitespace(category2) -- don't remove blank values end return obj end function CategoryHandler:parameter(key) local parameterNames = self._data.parameters[key] local pntype = type(parameterNames) if pntype == 'string' or pntype == 'number' then return self._args[parameterNames] elseif pntype == 'table' then for _, name in ipairs(parameterNames) do local value = self._args[name] if value ~= nil then return value end end return nil else error(string.format( 'invalid config key "%s"', tostring(key) ), 2) end end function CategoryHandler:isSuppressedByArguments() return -- See if a category suppression argument has been set. self._nocat == true or self._categories == false or ( self._category2 and self._category2 ~= self._data.category2Yes and self._category2 ~= self._data.category2Negative ) -- Check whether we are on a subpage, and see if categories are -- suppressed based on our subpage status. or self._subpage == self._data.subpageNo and self.title.isSubpage or self._subpage == self._data.subpageOnly and not self.title.isSubpage end function CategoryHandler:shouldSkipBlacklistCheck() -- Check whether the category suppression arguments indicate we -- should skip the blacklist check. return self._nocat == false or self._categories == true or self._category2 == self._data.category2Yes end function CategoryHandler:matchesBlacklist() if self._usesCurrentTitle then return self._data.currentTitleMatchesBlacklist else mShared = mShared or require('Module:Category handler/shared') return mShared.matchesBlacklist( self.title.prefixedText, mw.loadData('Module:Category handler/blacklist') ) end end function CategoryHandler:isSuppressed() -- Find if categories are suppressed by either the arguments or by -- matching the blacklist. return self:isSuppressedByArguments() or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist() end function CategoryHandler:getNamespaceParameters() if self._usesCurrentTitle then return self._data.currentTitleNamespaceParameters else if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end return mShared.getNamespaceParameters( self.title, mappings ) end end function CategoryHandler:namespaceParametersExist() -- Find whether any namespace parameters have been specified. -- We use the order "all" --> namespace params --> "other" as this is what -- the old template did. if self:parameter('all') then return true end if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end for ns, params in pairs(mappings) do for i, param in ipairs(params) do if self._args[param] then return true end end end if self:parameter('other') then return true end return false end function CategoryHandler:getCategories() local params = self:getNamespaceParameters() local nsCategory for i, param in ipairs(params) do local value = self._args[param] if value ~= nil then nsCategory = value break end end if nsCategory ~= nil or self:namespaceParametersExist() then -- Namespace parameters exist - advanced usage. if nsCategory == nil then nsCategory = self:parameter('other') end local ret = {self:parameter('all')} local numParam = tonumber(nsCategory) if numParam and numParam >= 1 and math.floor(numParam) == numParam then -- nsCategory is an integer ret[#ret + 1] = self._args[numParam] else ret[#ret + 1] = nsCategory end if #ret < 1 then return nil else return table.concat(ret) end elseif self._data.defaultNamespaces[self.title.namespace] then -- Namespace parameters don't exist, simple usage. return self._args[1] end return nil end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- Used for testing purposes. return { CategoryHandler = CategoryHandler } end function p._main(args, data) data = data or mw.loadData('Module:Category handler/data') local handler = CategoryHandler.new(data, args) if handler:isSuppressed() then return nil end return handler:getCategories() end function p.main(frame, data) data = data or mw.loadData('Module:Category handler/data') local args = require('Module:Arguments').getArgs(frame, { wrappers = data.wrappers, valueFunc = function (k, v) v = trimWhitespace(v) if type(k) == 'number' then if v ~= '' then return v else return nil end else return v end end }) return p._main(args, data) end return p b74dd63857b24904ac452429b11213f18647471f Template:Uses TemplateStyles 10 81 197 2020-10-17T15:10:07Z meta>K6ka 0 Created page with "<div style="width:250px;float:right;clear:right;margin:0 0 1em 1em;border:1px solid black;-moz-border-radius:10px;-webkit-border-radius:10px;padding:10px 10px 10px 10px; backg..." wikitext text/x-wiki <div style="width:250px;float:right;clear:right;margin:0 0 1em 1em;border:1px solid black;-moz-border-radius:10px;-webkit-border-radius:10px;padding:10px 10px 10px 10px; background:#FFFFFF;"> <p style="margin:0 3% 0 3%;text-align:center;font-size:94%"> [[File:Farm-Fresh css add.svg|left|30px]] '''This template uses [[Help:TemplateStyles|TemplateStyles]]''' <br /> {{{1|}}} </p></div><includeonly>{{#ifeq:{{SUBPAGENAME}}|doc||[[Category:Templates that use TemplateStyles|{{PAGENAME}}]]}}</includeonly><noinclude> {{clr}} {{Documentation}}</noinclude> fed44ca463856190bcf6280438ed7ea020ad82c3 Template:Main 10 102 989 2020-10-17T15:14:39Z K6ka 11 Created page with ":<div class="noprint">''Main article{{#if:{{{2|}}}|s}}&#58; [[{{{1}}}]]{{#if:{{{2| }}} |{{#if:{{{3|}}}|,&#32;|&#32;and&#32;}}[[{{{2}}}]]}}{{#if:{{{3|}}} |{{#if:{{{4|}}}|,&..." wikitext text/x-wiki :<div class="noprint">''Main article{{#if:{{{2|}}}|s}}&#58; [[{{{1}}}]]{{#if:{{{2| }}} |{{#if:{{{3|}}}|,&#32;|&#32;and&#32;}}[[{{{2}}}]]}}{{#if:{{{3|}}} |{{#if:{{{4|}}}|,&#32;|,&#32;and&#32;}}[[{{{3}}}]]}}{{#if:{{{4|}}} |{{#if:{{{5|}}}|,&#32;|,&#32;and&#32;}}[[{{{4}}}]]}}{{#if:{{{5|}}} |, and [[{{{5}}}]]}}''{{#if:{{{6| }}}|<strong class="error">&#32; [[Template:Main]] error: too many pages listed, maximum is 5.</strong>}}</div> <noinclude>{{documentation}}</noinclude> dbea45af8a2459110824c7e32c4b359d2dbca61d Template:Lang 10 432 1910 2020-10-19T17:49:42Z wikipedia>Gonnym 0 wikitext text/x-wiki <includeonly>{{#invoke:Lang|{{{fn|lang}}}}}</includeonly><noinclude> {{Documentation}} </noinclude> ed35aafbfe8198c5ad80fd861124244d0c7f2742 Template:Nosubst 10 1585 2920 2020-10-24T00:12:48Z w>EmausBot 0 Bot: Fixing double redirect to [[Template:Never substitute]] wikitext text/x-wiki #REDIRECT [[Template:Never substitute]] {{Redirect category shell| {{R from move}} }} 0bb895940dbacb304662975e79cc45e09170c0ae Module:Infobox mapframe 828 1425 2760 2020-10-28T02:54:00Z w>Evad37 0 only allow shapes/lines based on wikidata id if there is an id Scribunto text/plain local mf = require('Module:Mapframe') local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local infoboxImage = require('Module:InfoboxImage').InfoboxImage -- Defaults local DEFAULT_FRAME_WIDTH = "270" local DEFAULT_FRAME_HEIGHT = "200" local DEFAULT_ZOOM = 10 local DEFAULT_GEOMASK_STROKE_WIDTH = "1" local DEFAULT_GEOMASK_STROKE_COLOR = "#777777" local DEFAULT_GEOMASK_FILL = "#888888" local DEFAULT_GEOMASK_FILL_OPACITY = "0.5" local DEFAULT_SHAPE_STROKE_WIDTH = "3" local DEFAULT_SHAPE_STROKE_COLOR = "#FF0000" local DEFAULT_SHAPE_FILL = "#606060" local DEFAULT_SHAPE_FILL_OPACITY = "0.5" local DEFAULT_LINE_STROKE_WIDTH = "5" local DEFAULT_LINE_STROKE_COLOR = "#FF0000" local DEFAULT_MARKER_COLOR = "#5E74F3" -- Trim whitespace from args, and remove empty args function trimArgs(argsTable) local cleanArgs = {} for key, val in pairs(argsTable) do if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val ~= '' then cleanArgs[key] = val end else cleanArgs[key] = val end end return cleanArgs end function getBestStatement(item_id, property_id) if not(item_id) or not(mw.wikibase.isValidEntityId(item_id)) or not(mw.wikibase.entityExists(item_id)) then return false end local statements = mw.wikibase.getBestStatements(item_id, property_id) if not statements or #statements == 0 then return false end local hasNoValue = ( statements[1].mainsnak and statements[1].mainsnak.snaktype == 'novalue' ) if hasNoValue then return false end return statements[1] end function hasWikidataProperty(item_id, property_id) return getBestStatement(item_id, property_id) and true or false end function getStatementValue(statement) return statement and statement.mainsnak and statement.mainsnak.datavalue and statement.mainsnak.datavalue.value or nil end function relatedEntity(item_id, property_id) local value = getStatementValue( getBestStatement(item_id, property_id) ) return value and value.id or false end function idType(id) if not id then return nil elseif mw.ustring.match(id, "[Pp]%d+") then return "property" elseif mw.ustring.match(id, "[Qq]%d+") then return "item" else return nil end end function getZoom(value, unit) local length_km if unit == 'km' then length_km = tonumber(value) elseif unit == 'mi' then length_km = tonumber(value)*1.609344 elseif unit == 'km2' then length_km = math.sqrt(tonumber(value)) elseif unit == 'mi2' then length_km = math.sqrt(tonumber(value))*1.609344 end -- max for zoom 2 is 6400km, for zoom 3 is 3200km, for zoom 4 is 1600km, etc local zoom = math.floor(8 - (math.log10(length_km) - 2)/(math.log10(2))) -- limit to values below 17 zoom = math.min(17, zoom) -- take off 1 when calculated from area, to account for unusual shapes if unit == 'km2' or unit == 'mi2' then zoom = zoom - 1 end -- minimum value is 1 return math.max(1, zoom) end function shouldAutoRun(frame) -- Check if should be running local explicitlyOn = yesno(mw.text.trim(frame.getParent(frame).args.mapframe or "")) -- true of false or nil local onByDefault = (explicitlyOn == nil) and yesno(mw.text.trim(frame.args.onByDefault or ""), false) -- true or false return explicitlyOn or onByDefault end function argsFromAuto(frame) -- Get args from the frame (invoke call) and the parent (template call). -- Frame arguments are default values which are overridden by parent values -- when both are present local args = getArgs(frame, {parentFirst = true}) -- Discard args not prefixed with "mapframe-", remove that prefix from those that remain local fixedArgs = {} for name, val in pairs(args) do local fixedName = string.match(name, "^mapframe%-(.+)$" ) if fixedName then fixedArgs[fixedName] = val -- allow coord, coordinates, etc to be unprefixed elseif name == "coordinates" or name == "coord" or name == "coordinate" and not fixedArgs.coord then fixedArgs.coord = val -- allow id, qid to be unprefixed, map to id (if not already present) elseif name == "id" or name == "qid" and not fixedArgs.id then fixedArgs.id = val end end return fixedArgs end local p = {} p.autocaption = function(frame) if not shouldAutoRun(frame) then return "" end local args = argsFromAuto(frame) if args.caption then return args.caption elseif args.switcher then return "" end local maskItem local maskType = idType(args.geomask) if maskType == 'item' then maskItem = args.geomask elseif maskType == "property" then maskItem = relatedEntity(args.id or mw.wikibase.getEntityIdForCurrentPage(), args.geomask) end local maskItemLabel = maskItem and mw.wikibase.getLabel( maskItem ) return maskItemLabel and "Location in "..maskItemLabel or "" end function parseCustomWikitext(customWikitext) -- infoboxImage will format an image if given wikitext containing an -- image, or else pass through the wikitext unmodified return infoboxImage({ args = { image = customWikitext } }) end p.auto = function(frame) if not shouldAutoRun(frame) then return "" end local args = argsFromAuto(frame) if args.custom then return frame:preprocess(parseCustomWikitext(args.custom)) end local mapframe = p._main(args) return frame:preprocess(mapframe) end p.main = function(frame) local parent = frame.getParent(frame) local parentArgs = parent.args local mapframe = p._main(parentArgs) return frame:preprocess(mapframe) end p._main = function(_config) -- `config` is the args passed to this module local config = trimArgs(_config) -- Require wikidata item, or specified coords local wikidataId = config.id or mw.wikibase.getEntityIdForCurrentPage() if not(wikidataId) and not(config.coord) then return '' end -- Require coords (specified or from wikidata), so that map will be centred somewhere -- (P625 = coordinate location) local hasCoordinates = hasWikidataProperty(wikidataId, 'P625') or config.coordinates or config.coord if not hasCoordinates then return '' end -- `args` is the arguments which will be passed to the mapframe module local args = {} -- Some defaults/overrides for infobox presentation args.display = "inline" args.frame = "yes" args.plain = "yes" args["frame-width"] = config["frame-width"] or config.width or DEFAULT_FRAME_WIDTH args["frame-height"] = config["frame-height"] or config.height or DEFAULT_FRAME_HEIGHT args["frame-align"] = "center" args["frame-coord"] = config["frame-coordinates"] or config["frame-coord"] or "" -- Note: config["coordinates"] or config["coord"] should not be used for the alignment of the frame; -- see talk page ( https://en.wikipedia.org/wiki/Special:Diff/876492931 ) -- deprecated lat and long parameters args["frame-lat"] = config["frame-lat"] or config["frame-latitude"] or "" args["frame-long"] = config["frame-long"] or config["frame-longitude"] or "" -- Calculate zoom from length or area (converted to km or km2) if config.length_km then args.zoom = getZoom(config.length_km, 'km') elseif config.length_mi then args.zoom = getZoom(config.length_mi, 'mi') elseif config.area_km2 then args.zoom = getZoom(config.area_km2, 'km2') elseif config.area_mi2 then args.zoom = getZoom(config.area_mi2, 'mi2') else args.zoom = config.zoom or DEFAULT_ZOOM end -- Conditionals: whether point, geomask should be shown local hasOsmRelationId = hasWikidataProperty(wikidataId, 'P402') -- P402 is OSM relation ID local shouldShowPointMarker; if config.point == "on" then shouldShowPointMarker = true elseif config.point == "none" then shouldShowPointMarker = false else shouldShowPointMarker = not(hasOsmRelationId) or (config.marker and config.marker ~= 'none') or (config.coordinates or config.coord) end local shouldShowShape = config.shape ~= 'none' local shapeType = config.shape == 'inverse' and 'shape-inverse' or 'shape' local shouldShowLine = config.line ~= 'none' local maskItem local useWikidata = wikidataId and true or false -- Use shapes/lines based on wikidata id, if there is one -- But do not use wikidata when local coords are specified (and not turned off), unless explicitly set if useWikidata and config.coord and shouldShowPointMarker then useWikidata = config.wikidata and true or false end -- Switcher if config.switcher == "zooms" then -- switching between zoom levels local maxZoom = math.max(tonumber(args.zoom), 3) -- what zoom would have otherwise been (if 3 or more, otherwise 3) local minZoom = 1 -- completely zoomed out local midZoom = math.floor((maxZoom + minZoom)/2) -- midway between maxn and min args.switch = "zoomed in, zoomed midway, zoomed out" args.zoom = string.format("SWITCH:%d,%d,%d", maxZoom, midZoom, minZoom) elseif config.switcher == "auto" then -- switching between P276 and P131 areas with recursive lookup, e.g. item's city, -- that city's state, and that state's country args.zoom = nil -- let kartographer determine the zoom local maskLabels = {} local maskItems = {} local maskItemId = relatedEntity(wikidataId, "P276") or relatedEntity(wikidataId, "P131") local maskLabel = mw.wikibase.getLabel(maskItemId) while maskItemId and maskLabel and mw.text.trim(maskLabel) ~= "" do table.insert(maskLabels, maskLabel) table.insert(maskItems, maskItemId) maskItemId = maskItemId and relatedEntity(maskItemId, "P131") maskLabel = maskItemId and mw.wikibase.getLabel(maskItemId) end if #maskLabels > 1 then args.switch = table.concat(maskLabels, "###") maskItem = "SWITCH:" .. table.concat(maskItems, ",") elseif #maskLabels == 1 then maskItem = maskItemId[1] end elseif config.switcher == "geomasks" and config.geomask then -- switching between items in geomask parameter args.zoom = nil -- let kartographer determine the zoom local separator = (mw.ustring.find(config.geomask, "###", 0, true ) and "###") or (mw.ustring.find(config.geomask, ";", 0, true ) and ";") or "," local pattern = "%s*"..separator.."%s*" local maskItems = mw.text.split(mw.ustring.gsub(config.geomask, "SWITCH:", ""), pattern) local maskLabels = {} if #maskItems > 1 then for i, item in ipairs(maskItems) do table.insert(maskLabels, mw.wikibase.getLabel(item)) end args.switch = table.concat(maskLabels, "###") maskItem = "SWITCH:" .. table.concat(maskItems, ",") end end -- resolve geomask item id (if not using geomask switcher) if not maskItem then -- local maskType = idType(config.geomask) if maskType == 'item' then maskItem = config.geomask elseif maskType == "property" then maskItem = relatedEntity(wikidataId, config.geomask) end end -- Keep track of arg numbering local argNumber = '' local function incrementArgNumber() if argNumber == '' then argNumber = 2 else argNumber = argNumber + 1 end end -- Geomask if maskItem then args["type"..argNumber] = "shape-inverse" args["id"..argNumber] = maskItem args["stroke-width"..argNumber] = config["geomask-stroke-width"] or DEFAULT_GEOMASK_STROKE_WIDTH args["stroke-color"..argNumber] = config["geomask-stroke-color"] or config["geomask-stroke-colour"] or DEFAULT_GEOMASK_STROKE_COLOR args["fill"..argNumber] = config["geomask-fill"] or DEFAULT_GEOMASK_FILL args["fill-opacity"..argNumber] = config["geomask-fill-opacity"] or DEFAULT_SHAPE_FILL_OPACITY -- Let kartographer determine zoom and position, unless it is explicitly set in config if not config.zoom and not config.switcher then args.zoom = nil args["frame-coord"] = nil args["frame-lat"] = nil args["frame-long"] = nil local maskArea = getStatementValue( getBestStatement(maskItem, 'P2046') ) end incrementArgNumber() -- Hack to fix phab:T255932 if not args.zoom then args["type"..argNumber] = "line" args["id"..argNumber] = maskItem args["stroke-width"..argNumber] = 0 incrementArgNumber() end end -- Shape (or shape-inverse) if useWikidata and shouldShowShape then args["type"..argNumber] = shapeType if config.id then args["id"..argNumber] = config.id end args["stroke-width"..argNumber] = config["shape-stroke-width"] or config["stroke-width"] or DEFAULT_SHAPE_STROKE_WIDTH args["stroke-color"..argNumber] = config["shape-stroke-color"] or config["shape-stroke-colour"] or config["stroke-color"] or config["stroke-colour"] or DEFAULT_SHAPE_STROKE_COLOR args["fill"..argNumber] = config["shape-fill"] or DEFAULT_SHAPE_FILL args["fill-opacity"..argNumber] = config["shape-fill-opacity"] or DEFAULT_SHAPE_FILL_OPACITY incrementArgNumber() end -- Line if useWikidata and shouldShowLine then args["type"..argNumber] = "line" if config.id then args["id"..argNumber] = config.id end args["stroke-width"..argNumber] = config["line-stroke-width"] or config["stroke-width"] or DEFAULT_LINE_STROKE_WIDTH args["stroke-color"..argNumber] = config["line-stroke-color"] or config["line-stroke-colour"] or config["stroke-color"] or config["stroke-colour"] or DEFAULT_LINE_STROKE_COLOR incrementArgNumber() end -- Point if shouldShowPointMarker then args["type"..argNumber] = "point" if config.id then args["id"..argNumber] = config.id end if config.coord then args["coord"..argNumber] = config.coord end if config.marker then args["marker"..argNumber] = config.marker end args["marker-color"..argNumber] = config["marker-color"] or config["marker-colour"] or DEFAULT_MARKER_COLOR incrementArgNumber() end local mapframe = args.switch and mf.multi(args) or mf._main(args) local tracking = hasOsmRelationId and '' or '[[Category:Infobox mapframe without OSM relation ID on Wikidata]]' return mapframe .. tracking end return p d17ee86b24e6e7a955ec94561da65fe2a215b5a4 Template:Tsp 10 1731 3268 2020-10-29T18:00:20Z wikipedia>MusikBot II 0 Protected "[[Template:Tsp]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Thin space]] [[Category:Inline spacing templates|Thinsp]] [[Category:Typing-aid templates|Thinsp]] 5c0846b57ba875d535c1e5602e2c070f41d4cf23 Module:WLink 828 615 1388 2020-10-30T15:03:05Z wikipedia>Plastikspork 0 Import for [[Template:LDLBerlin]] Scribunto text/plain local WLink = { suite = "WLink", serial = "2016-10-05" }; --[=[ ansiPercent() formatURL() getArticleBase() getBaseTitle() getEscapedTitle() getExtension() getFile() getFragment() getLanguage() getNamespace() getPlain() getProject() getTarget() getTargetPage() getTitle() getWeblink() isBracketedLink() isBracketedURL() isCategorization() isExternalLink() isInterlanguage() isInterwiki() isMedia() isTitledLink() isValidLink() isWikilink() wikilink() failsafe() ]=] -- local globals local URLutil = false; local utilURL = function () -- Attach URLutil library module -- Postcondition: -- Returns table, with URLutil library -- Throws error, if not available if not URLutil then local lucky, util = pcall( require, "Module:URLutil" ); if lucky then if type( util ) == "table" then URLutil = util.URLutil(); end util = "library URLutil invalid"; end if type( URLutil ) ~= "table" then error( util, 0 ); end end return URLutil; end -- utilURL() local contentExtlink = function ( attempt ) -- Retrieve span of external link between brackets -- Precondition: -- attempt -- string, with presumable link -- the first char is expected to be "[" -- Postcondition: -- Returns string, number, number -- string including whitespace -- number with index of relevant "[" -- number with index after relevant "]" -- false if nothing found local r1 = false; local r2 = false; local r3 = attempt:find( "]", 2, true ); if r3 then local s = attempt:sub( 2, r3 - 1 ); local i = s:find( "[", 1, true ); if i then r1 = s:sub( i + 1 ); r2 = i; else r1 = s; r2 = 1; end else r3 = false; end return r1, r2, r3; end -- contentExtlink() local contentWikilink = function ( attempt ) -- Retrieve span of wikilink between brackets -- Precondition: -- attempt -- string, with presumable link -- the first two chars are expected to be "[[" -- Postcondition: -- Returns string, number, number -- string including whitespace -- number with index of relevant "[[" -- number with index after relevant "]]" -- false if nothing found local r1 = false; local r2 = false; local r3 = attempt:find( "]]", 3, true ); if r3 then local s = attempt:sub( 3, r3 - 1 ); local i = s:find( "[[", 1, true ); if i then r1 = s:sub( i + 2 ); r2 = i; else r1 = s; r2 = 1; end end return r1, r2, r3; end -- contentWikilink() local extractExtlink = function ( attempt ) -- Retrieve external link -- Precondition: -- attempt -- string, with presumable link -- the first char is expected to be "[" -- Postcondition: -- Returns string, string -- first with target and title -- second result false if not titled -- false if nothing found local r1 = false; local r2 = false; local s = contentExtlink( attempt ); if s then local i = s:find( "%s", 1 ); if i then r1 = s:sub( 1, i - 1 ); r2 = mw.text.trim( s:sub( i + 1 ) ); if r2 == "" then r2 = false; end else r1 = s; end if r1 then r1 = mw.text.trim( r1 ); if r1 == "" or not utilURL().isResourceURL( r1 ) then r1 = false; end end if not r1 then r2 = false; end end return r1, r2; end -- extractExtlink() local extractWikilink = function ( attempt ) -- Retrieve wikilink -- Precondition: -- attempt -- string, with presumable link -- the first two chars are expected to be "[[" -- Postcondition: -- Returns string, string -- first with target -- second result title, or false if not piped -- false if nothing found local r1 = false; local r2 = false; local s = contentWikilink( attempt ); if s then local i = s:find( "|", 1, true ); if i then r1 = s:sub( 1, i - 1 ); r2 = s:sub( i + 1 ); else r1 = s; end r1 = mw.text.trim( r1 ); if r1 == "" then r1 = false; else r1 = r1:gsub( "_", " " ) :gsub( "&nbsp;", " " ) :gsub( "&thinsp;", " " ) :gsub( "&#160;", " " ) :gsub( "&#8239;", " " ) :gsub( " +", " " ); r1 = mw.text.decode( r1 ); end end return r1, r2; end -- extractWikilink() local prefix = function ( ask, ahead ) -- Interprete prefix of language or project type -- Precondition: -- ask -- string, with presumable prefix -- ahead -- true, if first segment -- Postcondition: -- Returns string,string or nil -- first string one of "lead", "lang", "project" -- second string is formatted value -- type is one of "lead", "lang", "project" -- nil if nothing found local r1, r2; local prefixes = { b = true, c = "commons", d = true, commons = true, m = "meta", mediawiki = "mw", mw = true, meta = true, n = true, q = true, s = true, simple = false, v = true, voy = true, w = true, wikibooks = "b", wikidata = "d", wikinews = "n", wikipedia = "w", wikiquote = "q", wikisource = "s", wikiversity = "v", wikivoyage = "voy", wikt = true, wiktionary = "wikt" }; local s = mw.text.trim( ask ); if s == "" then if ahead then r1 = "lead"; r2 = true; end else local p; s = s:lower(); p = prefixes[ s ]; if p == true then r1 = "project"; r2 = s; elseif p then r1 = "project"; r2 = p; elseif p == false then r1 = "lang"; r2 = s; elseif s:match( "^%l%l%l?$" ) and mw.language.isSupportedLanguage( s ) then r1 = "lang"; r2 = s; end end return r1, r2; end -- prefix() local target = function ( attempt, lonely ) -- Retrieve first target (wikilink or URL), or entire string -- Precondition: -- attempt -- string, with presumable link somewhere -- lonely -- remove fragment, if true -- Postcondition: -- Returns string, number -- string, with detected link target, or entire -- number, with number of brackets, if found, or 2 local r1, r2 = WLink.getTarget( attempt ); if not r1 then r1 = mw.text.trim( attempt ); r2 = 2; end if lonely then local i = r1:find( "#", 1, true ); if i == 1 then r1 = ""; elseif i then r1 = r1:sub( 1, i - 1 ); end end return r1, r2; end -- target() function WLink.ansiPercent( attempt, alter ) -- Convert string by ANSI encoding rather than UTF-8 encoding -- Precondition: -- attempt -- string, with presumable ANSI characters -- alter -- string or nil, to use for spaces instead of %20 -- Postcondition: -- Returns string, encoded local k, s; local r = attempt; if alter then r = r:gsub( " ", alter ); end for i = mw.ustring.len( r ), 1, -1 do k = mw.ustring.codepoint( r, i, i ); if k <= 32 or k > 126 then if k > 255 then s = mw.ustring.sub( r, i, i ); if k > 2047 then s = string.format( "%%%2X%%%2X%%%2X", s:byte( 1, 1 ), s:byte( 2, 2 ), s:byte( 3, 3 ) ); else s = string.format( "%%%2X%%%2X", s:byte( 1, 1 ), s:byte( 2, 2 ) ); end else s = string.format( "%%%2X", k ); end r = string.format( "%s%s%s", mw.ustring.sub( r, 1, i - 1 ), s, mw.ustring.sub( r, i + 1 ) ); end end -- for --i r = mw.ustring.gsub(r, '^%*', '%%2A') return r; end -- WLink.ansiPercent() function WLink.formatURL( adjust ) -- Create bracketed link, if not yet -- Precondition: -- adjust -- string, with URL or domain/path or bracketed link -- Postcondition: -- Returns string, with bracketed link -- false on invalid format local r; if type( adjust ) == "string" then if WLink.isBracketedLink( adjust ) then r = adjust; else local url = mw.text.trim( adjust ); local host; utilURL(); host = URLutil.getHost( adjust ); if not host then url = "http://" .. adjust; host = URLutil.getHost( url ); end if host then local path = URLutil.getRelativePath( url ); local show; if path == "/" then if not url:match( "/$" ) then url = url .. "/"; end show = host; else local i = path:find( "#" ); if i then path = path:sub( 1, i - 1 ); end show = host .. path; end r = string.format( "[%s %s]", url, show ); else r = adjust; end end else r = false; end return r; end -- WLink.formatURL() function WLink.getArticleBase( attempt ) -- Retrieve generic article title, no fragment nor brackets -- Precondition: -- attempt -- string, with wikilink or page title -- current page title, if missing -- Postcondition: -- Returns string, with identified lemma, or all -- false on invalid format local r; if attempt then local m; r, m = target( attempt, true ); if m ~= 2 then r = false; end else r = mw.title.getCurrentTitle().text; end if r then local sub = r:match( "^(.*%S) *%(.+%)$" ); if sub then r = sub; end end return r; end -- WLink.getArticleBase() function WLink.getBaseTitle( attempt ) -- Retrieve last segment in subpage, no fragment -- Precondition: -- attempt -- string, with wikilink or page title -- Postcondition: -- Returns string, with identified segment, or all local r; local s, m = target( attempt, true ); if m == 2 then local sub = s:match( "/([^/]+)$" ); if sub then r = sub; else r = s; end else r = false; end return r; end -- WLink.getBaseTitle() function WLink.getEscapedTitle( attempt ) -- Retrieve escaped link title -- Precondition: -- attempt -- string, with presumable link title -- Postcondition: -- Returns string, with suitable link title local s = mw.text.trim( attempt ); return s:gsub( "\n", " " ) :gsub( "%[", "&#91;" ) :gsub( "%]", "&#93;" ) :gsub( "|", "&#124;" ); end -- WLink.getEscapedTitle() function WLink.getExtension( attempt ) -- Retrieve media extension -- Precondition: -- attempt -- string, with wikilink (media link) or page title -- if URL, PDF may be detected -- Postcondition: -- Returns string, with detected downcased media type -- false if no extension found local r = false; local s, m = target( attempt ); if m == 2 then s = s:match( "%.(%a+)$" ); if s then r = s:lower(); end elseif s:upper():match( "[%./](PDF)%W?" ) then r = "pdf"; end return r; end -- WLink.getExtension() function WLink.getFile( attempt ) -- Retrieve media page identifier -- Precondition: -- attempt -- string, with wikilink (media link) or page title -- Postcondition: -- Returns string, with detected file title -- no namespace nor project -- false if no file found local r = false; local s, m = target( attempt ); if m == 2 then local slow = ":" .. s:lower(); local find = function ( a ) local seek = string.format( ":%s:().+%%.%%a+$", a:lower() ); local join = slow:find( seek ); local ret; if join then ret = s:sub( join + #a + 1 ); end return ret; end; r = find( "file" ); if not r then local trsl = mw.site.namespaces[6]; r = find( trsl.name ); if not r then trsl = trsl.aliases; for k, v in pairs( trsl ) do r = find( v ); if r then break; -- for k, v end end -- for k, v end end end return r; end -- WLink.getFile() function WLink.getFragment( attempt ) -- Retrieve fragment -- Precondition: -- attempt -- string, with presumable fragment -- Postcondition: -- Returns string, with detected fragment -- false if no address found local r = false; local s, m = target( attempt ); if s then local i = s:find( "#", 1, true ); if i then if i > 1 then s = s:sub( i - 1 ); i = 2; end if s:find( "&#", 1, true ) then s = mw.text.decode( s ); i = s:find( "#", 1, true ); if not i then s = ""; i = 0; end end s = s:sub( i + 1 ); r = mw.text.trim( s ); if r == "" then r = false; elseif m == 2 then r = r:gsub( "%.(%x%x)", "%%%1" ) :gsub( "_", " " ); r = mw.uri.decode( r, "PATH" ); end end end return r; end -- WLink.getFragment() function WLink.getLanguage( attempt ) -- Retrieve language project identifier -- Precondition: -- attempt -- string, with wikilink or page title -- Postcondition: -- Returns string, with detected downcased language identifier -- false if no project language found local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and w.lang then r = w.lang; end end return r; end -- WLink.getLanguage() function WLink.getNamespace( attempt ) -- Retrieve namespace number -- Precondition: -- attempt -- string, with wikilink or page title -- Postcondition: -- Returns number, of detected namespace -- false if no namespace found local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and not w.lang and not w.project and w.ns then r = w.ns; end end return r; end -- WLink.getNamespace() function WLink.getPlain( attempt ) -- Retrieve text with all links replaced by link titles -- Precondition: -- attempt -- string, with wikitext -- Postcondition: -- Returns string, with modified wikitext without links local r = attempt; local i = 1; local j, k, n, lean, s, shift, space, suffix; while ( true ) do j = r:find( "[", i, true ); if j then suffix = r:sub( j ); i = j + 1; lean = ( r:byte( i, i ) == 91 ); if lean then s, k, n = contentWikilink( suffix ); else s, k, n = contentExtlink( suffix ); end if s then if k > 1 then n = n - k; i = j + k; j = i - 1; suffix = r:sub( j ); end if lean then s, shift = extractWikilink( suffix ); if s then space = s:match( "^([^:]+):" ); if space then space = mw.site.namespaces[ space ]; if space then space = space.id; end end if space == 6 or space == 14 then shift = ""; elseif not shift then shift = s; end else s = ""; shift = ""; end else s, shift = extractExtlink( suffix ); if not s then s = ""; end if not shift then shift = ""; end i = i - 1; end if j > 1 then s = r:sub( 1, j - 1 ); else s = ""; end r = string.format( "%s%s%s", s, shift, r:sub( n + i ) ); i = i + #shift; else break; -- while true end else break; -- while true end end -- while true return r; end -- WLink.getPlain() function WLink.getProject( attempt ) -- Retrieve wikifarm project identifier -- Precondition: -- attempt -- string, with wikilink or page title -- Postcondition: -- Returns string, with detected downcased project identifier -- false if no project identifier found local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and w.project then r = w.project; end end return r; end -- WLink.getProject() function WLink.getTarget( attempt ) -- Retrieve first target (wikilink or URL) -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns string, number -- string, with first detected link target -- number, with number of brackets, if found -- false if nothing found local r1 = false; local r2 = false; local i = attempt:find( "[", 1, true ); if i then local m; r1 = attempt:sub( i ); if r1:byte( 2, 2 ) == 91 then m = 2; r1 = extractWikilink( r1 ); else m = 1; r1 = extractExtlink( r1 ); end if r1 then r2 = m; end else r1 = attempt:match( "%A?([hf]t?tps?://%S+)%s?" ); if r1 then if utilURL().isResourceURL( r1 ) then r2 = 0; else r1 = false; end else r1 = false; end end return r1, r2; end -- WLink.getTarget() function WLink.getTargetPage( attempt ) -- Retrieve first target page (page name or URL of page) -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns string, with first detected linked page -- false if nothing found local r1, r2 = WLink.getTarget( attempt ); if r1 then local i = r1:find( "#", 1, true ); if i then if i == 1 then r1 = false; else r1 = mw.text.trim( r1:sub( 1, i - 1 ) ); end end end return r1, r2; end -- WLink.getTargetPage() function WLink.getTitle( attempt ) -- Retrieve first link title (wikilink or URL), or wikilink target -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns string, with first detected link target -- false if nothing found local r = false; local i = attempt:find( "[", 1, true ); if i then local s1, s2; r = attempt:sub( i ); if r:byte( 2, 2 ) == 91 then s1, s2 = extractWikilink( r ); if s2 then r = s2; else r = s1; end else s1, r = extractExtlink( r ); end end return r; end -- WLink.getTitle() function WLink.getWeblink( attempt, anURLutil ) -- Retrieve bracketed link from resource URL -- Precondition: -- attempt -- string, with URL, or something different -- anURLutil -- library module object, or nil -- Postcondition: -- Returns string, with first detected link target -- false if nothing found local second = ".ac.co.go.gv.or."; local r; if type( anURLutil ) == "table" then URLutil = anURLutil; else utilURL(); end if URLutil.isResourceURL( attempt ) then local site = URLutil.getAuthority( attempt ); local show; if #attempt == #site then site = site .. "/"; end show = URLutil.getTop3domain( "//" .. site ); if show then local scan = "[%./](%a+)(%.%l%l%.)(%a+)$"; local search = "." .. show; local s1, s2, s3 = search:match( scan ); if s2 then if not second:find( s2, 1, true ) then show = string.format( "%s.%s", s2, s3 ); end else show = false; end end if not show then show = URLutil.getTop2domain( "//" .. site ); if not show then show = URLutil.getHost( "//" .. site ); end end r = string.format( "[%s %s]", attempt, show ); else r = attempt; end return r; end -- WLink.getWeblink() function WLink.isBracketedLink( attempt ) -- Does attempt match a bracketed link? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local i = attempt:find( "[", 1, true ); if i then local s = attempt:sub( i ); if s:byte( 2, 2 ) == 91 then s = extractWikilink( s ); else s = extractExtlink( s ); end if s then r = true; end end return r; end -- WLink.isBracketedLink() function WLink.isBracketedURL( attempt ) -- Does attempt match a bracketed URL? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local s, r = WLink.getTarget( attempt ); return ( r == 1 ); end -- WLink.isBracketedURL() function WLink.isCategorization( attempt ) -- Does attempt match a categorization? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and w.ns == 14 and not ( w.lead or w.lang or w.project ) and w.title ~= "" then r = true; end end return r; end -- WLink.isCategorization() function WLink.isExternalLink( attempt ) -- Does attempt match an external link? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local s, r = WLink.getTarget( attempt ); if r then r = ( r < 2 ); end return r; end -- WLink.isExternalLink() function WLink.isInterlanguage( attempt ) -- Does attempt match an interlanguage link? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and w.lang and not w.project and not w.lead and w.title ~= "" then r = true; end end return r; end -- WLink.isInterlanguage() function WLink.isInterwiki( attempt ) -- Does attempt match an interwiki link within wikifarm? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and ( w.lang or w.project ) and w.title ~= "" then r = true; end end return r; end -- WLink.isInterwiki() function WLink.isMedia( attempt ) -- Does attempt match a media translusion? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and w.ns == 6 and not ( w.lead or w.lang or w.project ) and w.title ~= "" and WLink.getExtension( w.title ) then r = true; end end return r; end -- WLink.isMedia() function WLink.isTitledLink( attempt ) -- Does attempt match a titled link? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local i = attempt:find( "[", 1, true ); if i then local c, n; local s = attempt:sub( i ); if s:byte( 2, 2 ) == 91 then n = s:find( "%]%]", 5 ); c = "|"; else n = s:find( "%]", 8 ); c = "%s%S"; end if n then local m = s:find( c, 2 ); if m and m + 1 < n and WLink.getTarget( attempt ) then r = true; end end end return r; end -- WLink.isTitledLink() function WLink.isValidLink( attempt ) -- Does attempt match a link? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local s, r = WLink.getTarget( attempt ); if r then r = true; end return r; end -- WLink.isValidLink() function WLink.isWikilink( attempt ) -- Does attempt match a wikilink? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local s, m = WLink.getTarget( attempt ); return ( m == 2 ); end -- WLink.isWikilink() function WLink.wikilink( attempt ) -- Retrieve wikilink components -- Precondition: -- attempt -- string, with presumable link -- expected to be enclosed in "[[" "]]" -- else wikilink -- Postcondition: -- Returns table or false -- table of assignments with { type, value} -- type is one of "lead", -- "project", "lang", -- "ns", "space", "title" -- false if nothing found local s = contentWikilink( attempt ); local got, n, r; if not s then s = attempt; end i = s:find( "|", 1, true ); if i then s = s:sub( 1, i - 1 ); end got = mw.text.split( s, ":" ); n = table.maxn( got ); if n == 1 then r = { title = mw.text.trim( s ) }; else local j, k, o, v; r = { title = "" }; if n > 4 then k = 4; else k = n - 1; end j = k; for i = 1, j do s = mw.text.trim( got[ i ] ); if s ~= "" then o = mw.site.namespaces[ mw.text.trim( got[ i ] ) ]; if o then r.ns = o.id; r.space = o.name; k = i + 1; j = i - 1; break; -- for i end end end -- for i for i = 1, j do o, v = prefix( got[ i ], ( i == 1 ) ); if o then if r[ o ] then k = i; break; -- for i else r[ o ] = v; end else k = i; break; -- for i end end -- for i for i = k, n do r.title = r.title .. got[ i ]; if i < n then r.title = r.title .. ":"; end end -- for i end if r.lead and ( r.project or not r.title or ( not r.lang and r.ns ~= 6 and r.ns ~= 14 ) ) then r.lead = false; end return r; end -- WLink.wikilink() function WLink.failsafe( assert ) -- Retrieve versioning and check for compliance -- Precondition: -- assert -- string, with required version, or false -- Postcondition: -- Returns string with appropriate version, or false local r; if assert and assert > WLink.serial then r = false; else r = WLink.serial; end return r end -- WLink.failsafe() local function Template( frame, action, leave, lone ) -- Run actual code from template transclusion -- Precondition: -- frame -- object -- action -- string, with function name -- leave -- true: keep whitespace around -- lone -- true: permit call without parameters -- Postcondition: -- Return string; might be error message local lucky = true; local s = false; local r = false; local space; for k, v in pairs( frame.args ) do if k == 1 then if leave then s = v; else s = mw.text.trim( v ); end elseif action == "ansiPercent" and k == "space" then if v ~= "" then space = v; end elseif k ~= "template" then lucky = false; if r then r = r .. "|"; else r = "Unknown parameter: "; end r = string.format( "%s%s=", r, k ); end end -- for k, v if lucky then if s or lone then lucky, r = pcall( WLink[ action ], s, space ); else r = "Parameter missing"; lucky = false; end end if lucky then if type( r ) == "boolean" then if r then r = "1"; else r = ""; end end else r = string.format( "<span class=\"error\">%s</span>", r ); end return r; end -- Template() -- Export local p = { }; p.ansiPercent = function ( frame ) return Template( frame, "ansiPercent" ); end p.formatURL = function ( frame ) return Template( frame, "formatURL" ); end p.getArticleBase = function ( frame ) return Template( frame, "getArticleBase", false, true ); end p.getBaseTitle = function ( frame ) return Template( frame, "getBaseTitle" ); end p.getEscapedTitle = function ( frame ) return Template( frame, "getEscapedTitle" ); end p.getExtension = function ( frame ) return Template( frame, "getExtension" ); end p.getFile = function ( frame ) return Template( frame, "getFile" ); end p.getFragment = function ( frame ) return Template( frame, "getFragment" ); end p.getInterwiki = function ( frame ) return Template( frame, "getInterwiki" ); end p.getLanguage = function ( frame ) return Template( frame, "getLanguage" ); end p.getNamespace = function ( frame ) return tostring( Template( frame, "getNamespace" ) ); end p.getPlain = function ( frame ) return Template( frame, "getPlain" ); end p.getProject = function ( frame ) return Template( frame, "getProject" ); end p.getTarget = function ( frame ) return Template( frame, "getTarget" ); end p.getTargetPage = function ( frame ) return Template( frame, "getTargetPage" ); end p.getTitle = function ( frame ) return Template( frame, "getTitle" ); end p.getWeblink = function ( frame ) return Template( frame, "getWeblink" ); end p.isBracketedLink = function ( frame ) return Template( frame, "isBracketedLink" ); end p.isBracketedURL = function ( frame ) return Template( frame, "isBracketedURL" ); end p.isCategorization = function ( frame ) return Template( frame, "isCategorization" ); end p.isExternalLink = function ( frame ) return Template( frame, "isExternalLink" ); end p.isInterlanguage = function ( frame ) return Template( frame, "isInterlanguage" ); end p.isInterwiki = function ( frame ) return Template( frame, "isInterwiki" ); end p.isMedia = function ( frame ) return Template( frame, "isMedia" ); end p.isTitledLink = function ( frame ) return Template( frame, "isTitledLink" ); end p.isValidLink = function ( frame ) return Template( frame, "isValidLink" ); end p.isWeblink = function ( frame ) return Template( frame, "isWeblink" ); end p.isWikilink = function ( frame ) return Template( frame, "isWikilink" ); end p.failsafe = function ( frame ) local since = frame.args[ 1 ]; if since then since = mw.text.trim( since ); if since == "" then since = false; end end return WLink.failsafe( since ) or ""; end p.WLink = function () return WLink; end return p; af57214e9ddc77f93c9fcb1dd97b58d8180700d4 Module:For 828 119 285 2020-11-02T22:29:56Z wikipedia>Andrybak 0 don't add talk pages and pages in the user namespace to [[:Category:Hatnote templates with errors]] – this is similar to [[Special:Diff/953627233/986768317|Module:Other uses of]] and [[Special:Diff/967664662|Module:Hatnote]] Scribunto text/plain local mArguments --initialize lazily local mHatlist = require('Module:Hatnote list') local mHatnote = require('Module:Hatnote') local yesNo = require('Module:Yesno') local p = {} --Implements {{For}} from the frame --uses capitalized "For" to avoid collision with Lua reserved word "for" function p.For (frame) mArguments = require('Module:Arguments') return p._For(mArguments.getArgs(frame)) end --Implements {{For}} but takes a manual arguments table function p._For (args) local use = args[1] if (not use) then return mHatnote.makeWikitextError( 'no context parameter provided. Use {{other uses}} for "other uses" hatnotes.', 'Template:For#Errors', args.category ) end local pages = {} function two (a, b) return a, b, 1 end --lets us run ipairs from 2 for k, v in two(ipairs(args)) do table.insert(pages, v) end local title = mw.title.getCurrentTitle() local skipCat = title.isTalkPage or title.namespace == 2 --don't categorise talk pages and userspace local oddCat = skipCat and '' or '[[Category:Hatnote templates using unusual parameters]]' local category = yesNo(args.category) return mHatnote._hatnote( mHatlist.forSeeTableToString({{use = use, pages = pages}}), {selfref = args.selfref} ) .. ( (use == 'other uses') and ((category == true) or (category == nil)) and oddCat or '' ) end return p 2faf1bd8c657f3425af829cbde9733a936d8d4f4 Template:Pp-move 10 1311 2646 2020-11-04T22:21:55Z w>Primefac 0 TFD closed as remove the icon ([[WP:XFDC|XFDcloser]]) wikitext text/x-wiki <includeonly>{{#invoke:Protection banner|main}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 31be6fc5b968e0deb5100a35b856393cdeb35b90 Template:Start date 10 1346 2681 2020-11-05T01:49:22Z w>Primefac 0 TFD closed as keep wikitext text/x-wiki <includeonly>{{#if: {{{4|}}} |{{#if: {{{5|}}} |{{padleft:{{{4}}}|2|0}}:{{padleft:{{{5}}}|2|0}}{{#if: {{{6|}}} |&#58;{{padleft:{{{6}}}|2|0}} }},&#32;}} }}<!--ABOVE FOR TIME; BELOW FOR DATE -->{{#if: {{{1|}}} |{{#if: {{{2|}}} |{{#if: {{{3|}}} |{{#if: {{{df|}}}|{{#expr:{{{3}}}}}&nbsp;{{MONTHNAME|{{{2}}}}}|{{MONTHNAME|{{{2}}}}}&nbsp;{{#expr:{{{3}}}}},}}&nbsp;{{{1}}}|{{MONTHNAME|{{{2}}}}}&nbsp;{{{1}}}}}|{{{1}}}}}}}{{#if: {{{7|}}} |&#32;({{#ifeq: {{{7}}}|Z|UTC|{{{7}}}}})}}<!-- BELOW FOR hCalendar --><span style="display:none">&#160;(<span class="bday dtstart published updated">{{#if: {{{1|}}} | {{{1}}}{{#if: {{{2|}}} | -{{padleft:{{{2}}}|2|0}}{{#if: {{{3|}}} | -{{padleft:{{{3}}}|2|0}} }} }}<!-- -->{{#if: {{{4|}}} | T{{padleft:{{{4}}}|2|0}}{{#if: {{{5|}}} | &#58;{{padleft:{{{5}}}|2|0}}{{#if: {{{6|}}} | &#58;{{padleft:{{{6}}}|2|0}} }} }} }} }}{{{7|}}}</span>)</span></includeonly><noinclude> {{documentation}} </noinclude> 2bdc464c20f7d568f3d482c9fb2d04f5d266f982 Template:!(( 10 1422 2757 2020-11-08T16:32:29Z Pppery 6 Undid revision 987674468 by [[Special:Contributions/Primefac|Primefac]] ([[User talk:Primefac|talk]]) [[Wikipedia:Village_pump_(technical)#Template:!((_broken?]] wikitext text/x-wiki [[<noinclude>{{documentation}}</noinclude> b31c0a6e585fb48187b92ab9ccbfdd182bbf0b64 Template:Gbm4ibx 10 1407 2742 2020-11-09T23:27:46Z w>MSGJ 0 [[WP:AES|←]]Redirected page to [[Template:Gbmappingsmall]] wikitext text/x-wiki #redirect[[Template:Gbmappingsmall]] e86d7a298d9b43b26fa5d7fdb3d785558ba70fa4 Template:Sfnm/doc 10 900 1990 2020-11-12T22:16:57Z wikipedia>Mirokado 0 ce: +"|" wikitext text/x-wiki {{Documentation subpage}} {{lua |Module:Footnotes}} <!-- PLEASE ADD TEMPLATE CATEGORIES AT THE BOTTOM OF THIS PAGE. --> This is a companion template to {{tlx|Sfn}}; see there for a more general introduction. Unlike {{tld|Sfn}}, however, {{tlx|Sfnm}} supports the inclusion of multiple sources in a single footnote. ==Usage== Each of the several sources listed in the template is identified using a set of numbered ({{var|n}}) parameters where the first source is numbered <code>1</code>, the second <code>2</code>, etc. There is no set limit to the number of sources that may be listed in a single template though editors should be aware that readability suffers with an increase of the number of sources. The following markup: <code><nowiki>{{Sfnm|1a1=Smith|1a2=Jones|1a3=Johnson|1y=2005|1p=15|2a1=Jones|2a2=Johnson|2a3=Smith|2y=2004|2p=50}}</nowiki></code> will produce the following footnote: {{Sfnm|1a1=Smith|1a2=Jones|1a3=Johnson|1y=2005|1p=15|1ignore-err=yes|2a1=Jones|2a2=Johnson|2a3=Smith|2y=2004|2p=50|2ignore-err=yes}} <!-- |#ignore-err=yes here because template can't see into transcluded doc page --> :{| style="border: 1px solid black" |{{reflist}} |} ===Parameters=== The following parameters are used where {{var|n}} always begins at 1, increases by one for each successive source; {{var|n}} has no set limit. *{{para|{{var|n}}a{{var|m}}}} – source {{var|n}} author (required) – has the form: <code>{{var|n}}a{{var|m}}</code> where <code>{{var|n}}</code> is the source number, <code>a</code> indicates that this is an author parameter, and <code>{{var|m}}</code> identifies the {{var|m}}th author of source {{var|n}} → {{para|1a1}} is first source author one, {{para|5a4}} is fifth source author four; author numbers (<code>{{var|m}}</code>) greater than <code>4</code> are ignored; *{{para|{{var|n}}y}} – year – accepted formats are: <code>YYYY</code>, <code>n.d.</code> or <code>nd</code> (no date), <code>c. YYYY</code>, <code>YYYY–YYYY</code> (endash separator); all dates may have a single lowercase letter disambiguator suffix; see [[Template:Sfn#More than one work in a year|sfn §More than one work in a year]] *{{para|{{var|n}}p}} – in-source page cited *{{para|{{var|n}}pp}} – in-source pages cited *{{para|{{var|n}}loc}} – in-source location when not pagination – appended to {{para|{{var|n}}p}} or {{para|{{var|n}}pp}} if present *{{para|{{var|n}}ref}} – alternate reference identifier used to link source to its full citation; the special keyword <code>none</code> inhibits creation of a link from source to its long form reference *{{para|{{var|n}}ps}} – source postscript – terminal character or text; defaults to none; the special keyword <code>none</code> (used by {{tld|sfn}}) is silently ignored *{{para|ps}} – postscript – template's final terminal character or text; defaults to period (<code>.</code>); the special keyword <code>none</code> inhibits the postscript character; yields to {{para|{{var|n}}ps}} where {{var|n}} is the last source When a source has a single author, use of positional parameters for author and year is supported; both <code>|{{var|author}}</code> and <code>|{{var|year}}</code> are required when there is more than one of these single-author sources listed in the template: <code><nowiki>{{Sfnm|Smith|2005|1p=15|Jones|2004|2p=2}}</nowiki></code> which will produce the following footnote: {{Sfnm|Smith|2005|1p=15|1ignore-err=yes|Jones|2004|2p=2|2ignore-err=yes}} <!-- |#ignore-err=yes here because template can't see into transcluded doc page --> :{| style="border: 1px solid black" |{{reflist}} |} ==Literature cited== *{{cite journal|last1=Jones|first1=John|year=2004|title=My Journal Article|journal=Journal of Important Studies|volume=509|issue=13 |pages=10–23}} *{{cite book|last1=Jones|first1=John|last2=Johnson|first2=John|last3=Smith|first3=John|year=2004|title=Our First Book}} *{{cite journal|last1=Smith|first1=John|year=2005|title=Another Journal Article|journal=Journal of Important Studies|volume=510|issue=14 |pages=100–134}} *{{cite book|last1=Smith|first1=John|last2=Jones|first2=John|last3=Johnson|first3=John|year=2005|title=Our Second Book}} ==See also== *{{tlx|sfnmp}} – a similar template that renders source year in parentheses <includeonly>{{sandbox other|| <!-- ADD TEMPLATE CATEGORIES BELOW THIS LINE --> [[Category:Footnote templates]] [[Category:Author–date citation templates]] }}</includeonly> fef2c7fdc6e4e76c768655462ac23beb02f19157 Module:Documentation/styles.css 828 53 101 2020-11-19T20:21:58Z wikipedia>Izno 0 Changed protection level for "[[Module:Documentation/styles.css]]": actually match module ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) text text/plain /* {{pp|small=yes}} */ .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb Template:Tnull 10 616 1390 2020-11-20T18:16:50Z wikipedia>Primefac 0 Primefac moved page [[Template:Tnull]] to [[Template:Template link null]]: more obvious template name to match family wikitext text/x-wiki #REDIRECT [[Template:Template link null]] {{Redirect category shell| {{R from move}} }} b22d666a4b16808dc3becc2403546fb9ab5dea7e Template:Tlg 10 1038 2274 2020-11-20T18:19:26Z wikipedia>Primefac 0 Primefac moved page [[Template:Tlg]] to [[Template:Template link general]]: clearer name wikitext text/x-wiki #REDIRECT [[Template:Template link general]] {{Redirect category shell| {{R from move}} }} 707ce913a3ffa8193c9377c3ded7db7b72407500 Template:Tld 10 194 442 2020-11-20T18:52:18Z wikipedia>Primefac 0 avoid redir wikitext text/x-wiki #REDIRECT [[Template:Template link code]] be5d6275ea41d83224503e05901f3405c82141f7 Template:Tlx 10 22 39 2020-11-20T18:53:35Z wikipedia>Primefac 0 Primefac moved page [[Template:Tlx]] to [[Template:Template link expanded]] over redirect: expand name, make it more obvious wikitext text/x-wiki #REDIRECT [[Template:Template link expanded]] {{Redirect category shell| {{R from move}} }} 1fec988ceb46cb324af228aac45d7cd25fcc9008 Template:Template link with parameters 10 1250 2584 2020-11-21T12:04:32Z w>Primefac 0 wikitext text/x-wiki <includeonly>{{#Invoke:Template link general|main|nowrap=yes}}</includeonly><noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlp}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 8fe73a6eea633360a927820d10469b7292bfc1c2 Template:Template link expanded 10 23 41 2020-11-21T12:04:41Z wikipedia>Primefac 0 update wikitext text/x-wiki {{#Invoke:Template link general|main|code=on}}<noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlx}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 6c99696fee02f1da368ed20d2504e19bc15b1c13 Template:Template link with link off 10 56 107 2020-11-21T12:06:17Z wikipedia>Primefac 0 update wikitext text/x-wiki <includeonly>{{#Invoke:Template link general|main|nowrap=yes|nolink=yes}}</includeonly><noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlf}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> b099fea5d1f36b0b4b9cb253ad3a9f4e095f6851 Template:Template link code 10 193 440 2020-11-21T12:06:22Z wikipedia>Primefac 0 update wikitext text/x-wiki <includeonly>{{#Invoke:Template link general|main|nolink=yes|code=yes|nowrap=yes}}</includeonly><noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlc}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 044f00ca1bfc10cb967c32e893043ccc6f739764 Template:Template link null 10 617 1392 2020-11-21T12:06:41Z wikipedia>Primefac 0 update wikitext text/x-wiki <includeonly>{{#Invoke:Template link general|main|nolink=yes|code=yes}}</includeonly><noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tnull}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 2167c503e001d24d870ef82a9de0aaa9832404cb Template:COinS safe 10 1006 2208 2020-12-10T09:01:22Z wikipedia>Andrybak 0 [[:File:Stop hand nuvola.svg]] is licensed under "Creative Commons Attribution-ShareAlike 2.5", link is required for attribution — Undid revision 987128260 by [[Special:Contributions/JsfasdF252|JsfasdF252]] ([[User talk:JsfasdF252|talk]]) wikitext text/x-wiki {{notice |image={{#ifeq: {{{1|}}}|n|Stop hand nuvola.svg}} |{{#ifeq: {{{1|}}}|n |This template should not be used in citation templates such as [[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|Citation Style 2]], because it includes markup that will pollute the [[COinS]] metadata they produce; see [[Wikipedia:COinS]]. {{{addtext|}}}{{Sandbox other||[[Category:Templates not safe for use in citation templates]]}} |This template is safe for use in citation templates that produce [[COinS]] metadata; see [[Wikipedia:COinS]]. If HTML or other markup is added, then the template must be reevaluated. {{{addtext|}}} }} }}<noinclude> {{Documentation}} <!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) --> </noinclude> 47abee673d74440d28e801111bf6ee765cd998df Template:Paragraph break 10 1387 2722 2020-12-16T06:57:50Z w>L235 0 Changed protection level for "[[Template:Paragraph break]]": [[WP:High-risk templates|Highly visible template]]: one million transclusions, about to be used in interface message ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki <div class="paragraphbreak" style="margin-top:0.5em"></div><noinclude>{{documentation}}</noinclude> e925d7431b29a50eb27a29386a5e00e801e9a924 Template:Pb 10 1386 2721 2020-12-16T06:58:19Z w>L235 0 Changed protection level for "[[Template:Pb]]": redirect target increased to full protection ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Paragraph break]] {{Redirect category shell| {{R from template shortcut}} }} 357bfb9ee480c2e7d85730836d41cf3a5def25cb Template:Unichar/name 10 1616 2951 2020-12-22T06:54:57Z w>DePiep 0 subst:small wikitext text/x-wiki {{#switch:{{{gc|}}} | Cc | Cs | Cp | Cn = <!--no smallcaps name, but straight nlink if given-->{{#ifeq:{{{nlink|}}} | <#salted#> || {{#if: {{{nlink|}}} | [[{{{nlink|}}}]] | {{error|Error using {{tl|unichar}}: Pagename expected in "nlink{{=}}"| tag=span }}}}}} | #default={{#switch:{{{nlink|<#salted#>}}} | <#salted#> =<!--no link--><span style="font-size:85%;">{{uc:{{{na|}}}}}</span> | =<!--wikilink to na-->[[{{{na|}}}{{!}}<span style="font-size:85%;">{{uc:{{{na|}}}}}</span>]] | #default =<!--piped link-->[[{{{nlink|}}}{{!}}<span style="font-size:85%;">{{uc:{{{na|}}}}}</span>]]}}}}<!-- --><noinclude>{{Documentation}}</noinclude> d4ae6ab2fe431f12b3533da8294d1703c6716178 Template:Block indent/styles.css 10 1224 2554 2020-12-27T21:05:41Z w>Izno 0 pp sanitized-css text/css /* {{pp|small=yes}} */ .block-indent { padding-left: 3em; padding-right: 0; overflow: hidden; } c89721fb334bfbd775783b44641a3466b6748d6b Template:Block indent 10 1223 2553 2020-12-27T21:23:56Z w>Izno 0 templatestyles for block indent wikitext text/x-wiki <templatestyles src="Block indent/styles.css"/><div class="block-indent {{{class|}}}" {{#if:{{{left|}}}{{{em|}}}{{{right|}}}{{{style|}}}|style="{{#if:{{{left|{{{em|}}}}}}|padding-left: {{{left|{{{em}}}}}}em;}}{{#if:{{{right|}}}|padding-right: {{{right}}}em;}}{{#if:{{{style|}}}|{{{style}}}}}"}}>{{{1|{{{text|{{{content|{{{quote|<noinclude>{{lorem ipsum}}</noinclude><includeonly>{{error|Error: No content given to indent (or equals sign used in the actual argument to an unnamed parameter)}}</includeonly>}}}}}}}}}}}}</div><noinclude> {{documentation}} </noinclude> f1e4d04c02e97bfe86521e96e8265e947e574340 Template:Quote 10 1101 2401 2020-12-28T21:58:57Z wikipedia>JJMC89 0 JJMC89 moved page [[Template:Quote]] to [[Template:Blockquote]]: [[Wikipedia:Requested moves|requested move]]; consensus at [[Template talk:Blockquote]] wikitext text/x-wiki #REDIRECT [[Template:Blockquote]] {{Redirect category shell| {{R from move}} }} 405f136736cb7a6c3831adc68bce0bf0a7b18c45 Template:Blockquote/styles.css 10 873 1936 2020-12-28T21:59:00Z wikipedia>JJMC89 0 JJMC89 moved page [[Template:Quote/styles.css]] to [[Template:Blockquote/styles.css]] without leaving a redirect: [[Wikipedia:Requested moves|requested move]]; consensus at [[Template talk:Blockquote]] sanitized-css text/css /* {{pp-template}} */ .templatequote { overflow: hidden; margin: 1em 0; padding: 0 40px; } .templatequote .templatequotecite { line-height: 1.5em; /* @noflip */ text-align: left; /* @noflip */ padding-left: 1.6em; margin-top: 0; } 2f501be7e53e631123db261484f3ef52d1d0e909 Template:Quotation 10 875 1940 2020-12-28T22:03:36Z wikipedia>JJMC89 0 [[WP:AES|←]]Changed redirect target from [[Template:Quote]] to [[Template:Blockquote]] wikitext text/x-wiki #REDIRECT [[Template:Blockquote]] 945d9b4f4764cef422ae81b16bb6713645f92824 Template:WIA/doc 10 1741 3297 2020-12-29T20:55:02Z wikipedia>Cbrittain10 0 wikitext text/x-wiki {{Documentation subpage}} ===Usage=== {{tlx|WIA}} produces: {{WIA}} This template is used to indicate wounded commanders in {{tlx|Infobox military conflict}}. ===See also=== *{{tl|DOW}} *{{tl|Executed}} *{{tl|KIA}} *{{tl|POW}} *{{tl|Surrendered}} *{{tl|MIA}} *{{tl|Natural Causes}} <includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc|| <!--Categories below here, please; interwikis to Wikidata.--> [[Category:Military abbreviation templates|{{PAGENAME}}]] }}}}</includeonly> 365dec2816e1ee347d5d8be208b2bc63cc7df513 Module:Location map/styles.css 828 1396 2731 2021-01-02T20:03:01Z w>Izno 0 Protected "[[Module:Location map/styles.css]]": [[WP:High-risk templates|Highly visible template]]: match parent ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) sanitized-css text/css /* {{pp|small=yes}} */ .locmap .od { position: absolute; } .locmap .id { position: absolute; line-height: 0; } .locmap .l0 { font-size: 0; position: absolute; } .locmap .pv { line-height: 110%; position: absolute; text-align: center; } .locmap .pl { line-height: 110%; position: absolute; top: -0.75em; text-align: right; } .locmap .pr { line-height: 110%; position: absolute; top: -0.75em; text-align: left; } .locmap .pv > div { display: inline; padding: 1px; } .locmap .pl > div { display: inline; /* inline does not impact floated elements */ padding: 1px; float: right; } .locmap .pr > div { display: inline; /* inline does not impact floated elements */ padding: 1px; float: left; } 1af8c3b5ae1ff654548b74f76b5208f6b360c5a1 Führerredux Wiki:WikiProject Geographical coordinates/source: 4 1670 3095 2021-01-07T23:39:44Z wikipedia>Funandtrvl 0 update links, copy edit wikitext text/x-wiki Specifies, where present, the data source and data source format/datum, and optionally, the original data, presented in parentheses. This is initially primarily intended for use by geotagging robots, so that data is not blindly repeatedly copied from format to format and Wikipedia to Wikipedia, with progressive loss of precision and attributability. Examples: * A lat/long geotag derived from an [[Ordnance Survey]] [[Ordnance Survey National Grid|National Grid Reference]] NM&nbsp;435&nbsp;355 found in the English-language Wikipedia would be tagged as "source:enwiki-osgb36(NM435355)" * A latitude-longitude location sourced from data taken from the German-language Wikipedia would be tagged as "source:dewiki" – and so on, for other language codes; * A location sourced from the public domain [[GEOnet Names Server|GeoNet Names Server]] database would be tagged as "source:GNS". No datum or format information is needed, since by default all Wikipedia coordinates are in latitude/longitude format based on the [[World Geodetic System|WGS84]] datum. Similarly, US locations sourced from the similar public domain [[Geographic Names Information System|GNIS]] database would be tagged as "source:GNIS". [[Category:WikiProject Geographical coordinates]] caf1408990661ff81d9edcc1ee786751081527aa Template:Math 10 1549 2884 2021-01-13T19:22:54Z w>Andrybak 0 fix usage of [[Template:Main other]] – requested by [[User:DePiep]] wikitext text/x-wiki <span class="texhtml {{#if:{{{big|}}}{{{size|}}}|texhtml-big}}" {{#if:{{{big|}}}{{{size|}}}|style="font-size:{{{size|165%}}};"}}>{{{1}}}</span><!-- -->{{#invoke:Check for unknown parameters|check | unknown = {{main other|[[Category:Pages using Math with unknown parameters|_VALUE_]]}} | showblankpositional=1 | preview = unknown parameter "_VALUE_" (consider using <code>{{!}}1=</code>, <code><nowiki>{{!}}</nowiki></code>, <code><nowiki>{{=}}</nowiki></code>) | 1 | big | size }}<noinclude> {{Documentation}} </noinclude> b9b46ed7f0b97e7448c1893c7fe0d86197f84be6 Module:Aligned table 828 1553 2888 2021-01-13T21:53:43Z w>Plastikspork 0 Optional rowclass Scribunto text/plain -- This module implements {{aligned table}} local p = {} local function isnotempty(s) return s and s:match( '^%s*(.-)%s*$' ) ~= '' end function p.table(frame) local args = (frame.args[3] ~= nil) and frame.args or frame:getParent().args local entries = {} local colclass = {} local colstyle = {} local cols = tonumber(args['cols']) or 2 -- create the root table local root = mw.html.create('table') -- add table style for fullwidth if isnotempty(args['fullwidth']) then root :css('width', '100%') :css('border-collapse', 'collapse') :css('border-spacing', '0px 0px') :css('border', 'none') end -- add table classes if isnotempty(args['class']) then root:addClass(args['class']) end -- add table style if isnotempty(args['style']) then root:cssText(args['style']) end -- build arrays with the column styles and classes if isnotempty(args['leftright']) then colstyle[1] = 'text-align:left;' colstyle[2] = 'text-align:right;' end if isnotempty(args['rightleft']) then colstyle[1] = 'text-align:right;' colstyle[2] = 'text-align:left;' end for i = 1,cols do colclass[ i ] = colclass[ i ] or '' colstyle[ i ] = colstyle[ i ] or '' if isnotempty(args['colstyle']) then colstyle[ i ] = args['colstyle'] .. ';' .. colstyle[ i ] end if isnotempty(args['colalign' .. tostring(i)]) then colstyle[ i ] = 'text-align:' .. args['colalign' .. tostring(i)] .. ';' .. colstyle[ i ] elseif isnotempty(args['col' .. tostring(i) .. 'align']) then colstyle[ i ] = 'text-align:' .. args['col' .. tostring(i) .. 'align'] .. ';' .. colstyle[ i ] elseif isnotempty(args['align' .. tostring(i)]) then colstyle[ i ] = 'text-align:' .. args['align' .. tostring(i)] .. ';' .. colstyle[ i ] end if isnotempty(args['colnowrap' .. tostring(i)]) then colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ] elseif isnotempty(args['col' .. tostring(i) .. 'nowrap']) then colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ] elseif isnotempty(args['nowrap' .. tostring(i)]) then colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ] end if isnotempty(args['colwidth' .. tostring(i)]) then colstyle[ i ] = 'width:' .. args['colwidth' .. tostring(i)] .. ';' .. colstyle[ i ] elseif isnotempty(args['col' .. tostring(i) .. 'width']) then colstyle[ i ] = 'width:' .. args['col' .. tostring(i) .. 'width'] .. ';' .. colstyle[ i ] elseif isnotempty(args['colwidth']) then colstyle[ i ] = 'width:' .. args['colwidth'] .. ';' .. colstyle[ i ] end if isnotempty(args['colstyle' .. tostring(i)]) then colstyle[ i ] = colstyle[ i ] .. args['colstyle' .. tostring(i)] elseif isnotempty(args['col' .. tostring(i) .. 'style']) then colstyle[ i ] = colstyle[ i ] .. args['col' .. tostring(i) .. 'style'] elseif isnotempty(args['style' .. tostring(i)]) then colstyle[ i ] = colstyle[ i ] .. args['style' .. tostring(i)] end if isnotempty(args['colclass' .. tostring(i)]) then colclass[ i ] = args['colclass' .. tostring(i)] elseif isnotempty(args['col' .. tostring(i) .. 'class']) then colclass[ i ] = args['col' .. tostring(i) .. 'class'] elseif isnotempty(args['class' .. tostring(i)]) then colclass[ i ] = args['class' .. tostring(i)] end end -- compute the maximum cell index local cellcount = 0 for k, v in pairs( args ) do if type( k ) == 'number' then cellcount = math.max(cellcount, k) end end -- compute the number of rows local rows = math.ceil(cellcount / cols) -- build the table content if isnotempty(args['title']) then local caption = root:tag('caption') caption:cssText(args['titlestyle']) caption:wikitext(args['title']) end if isnotempty(args['above']) then local row = root:tag('tr') local cell = row:tag('th') cell:attr('colspan', cols) cell:cssText(args['abovestyle']) cell:wikitext(args['above']) end for j=1,rows do -- start a new row local row = root:tag('tr') if isnotempty(args['rowstyle']) then row:cssText(args['rowstyle']) else row:css('vertical-align', 'top') end if isnotempty(args['rowclass']) then row:addClass(args['rowclass']) end -- loop over the cells in the row for i=1,cols do local cell if isnotempty(args['row' .. tostring(j) .. 'header']) then cell = row:tag('th'):attr('scope','col') elseif isnotempty(args['col' .. tostring(i) .. 'header']) then cell = row:tag('th'):attr('scope','row') else cell = row:tag('td') end if args['class' .. tostring(j) .. '.' .. tostring(i)] then cell:addClass(args['class' .. tostring(j) .. '.' .. tostring(i)]) else if args['rowclass' .. tostring(j)] then cell:addClass(args['rowclass' .. tostring(j)]) elseif args['row' .. tostring(j) .. 'class'] then cell:addClass(args['row' .. tostring(j) .. 'class']) elseif args['rowevenclass'] and math.fmod(j,2) == 0 then cell:addClass(args['rowevenclass']) elseif args['rowoddclass'] and math.fmod(j,2) == 1 then cell:addClass(args['rowoddclass']) end if colclass[i] ~= '' then cell:addClass(colclass[i]) end end if args['style' .. tostring(j) .. '.' .. tostring(i)] then cell:cssText(args['style' .. tostring(j) .. '.' .. tostring(i)]) else if args['rowstyle' .. tostring(j)] then cell:cssText(args['rowstyle' .. tostring(j)]) elseif args['rowevenstyle'] and math.fmod(j,2) == 0 then cell:cssText(args['rowevenstyle']) elseif args['rowoddstyle'] and math.fmod(j,2) == 1 then cell:cssText(args['rowoddstyle']) elseif args['row' .. tostring(j) .. 'style'] then cell:cssText(args['row' .. tostring(j) .. 'style']) end if isnotempty(colstyle[i]) then cell:cssText(colstyle[i]) end end cell:wikitext(mw.ustring.gsub(args[cols*(j - 1) + i] or '', '^(.-)%s*$', '%1') or '') end end -- return the root table return tostring(root) end return p be91fb962ffe123e655c15a0cffb64f72c3042cb Template:Xt 10 1225 2555 2021-01-14T19:30:02Z Xaosflux 7 Changed protection level for "[[Template:Xt]]": used in system messages ([[MediaWiki:Titleblacklist-custom-archive]]) ([Edit=Require template editor access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki {{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example" style="font-family: Georgia, 'DejaVu Serif', serif; color: #006400;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<noinclude> {{Documentation}} </noinclude> e8c5895953384f68b9648a698f7f33d79748e408 Module:Data 828 1363 2698 2021-01-16T19:03:09Z w>Jackmcbarn 0 Make this work when called with wikitext's fake tables Scribunto text/plain local mt = {} function mt.__index(t, k) return function(frame) local data = mw.loadData(k) local i = 1 for _,v in ipairs(frame.args) do local ty = type(data) if ty ~= 'table' then local args = {} for j = 1, i - 1 do args[j] = frame.args[j] end if frame.args.softfail then return '<span class="error">[[Category:Pages with failed Module:Data lookups]]Error: Tried to read index "' .. mw.text.nowiki(v) .. '" of mw.loadData("' .. mw.text.nowiki(k) .. '").' .. mw.text.nowiki(table.concat(args, '.')) .. ', which is a ' .. ty .. '</span>' else error('Tried to read index "' .. v .. '" of mw.loadData("' .. k .. '").' .. table.concat(args, '.') .. ', which is a ' .. ty) end end data = data[v] i = i + 1 end return data end end return setmetatable({}, mt) 654c5ba2e0c73e7415457ca7a67fe0dfacfdba3b Template:High risk 10 763 1701 2021-01-19T20:55:25Z Elli 39 Added {{[[:Template:R avoided double redirect|R avoided double redirect]]}} tag to redirect wikitext text/x-wiki #REDIRECT [[Template:High-use]] {{Redirect category shell| {{R avoided double redirect|1=Template:High-risk}} {{R from alternative hyphenation|'''{{-r|Template:High-risk}}'''}}{{R from template shortcut}} }} ce1776d54ed01e65417b2a4ed18778e32694aa48 Template:TemplateData header 10 59 993 2021-01-21T15:35:18Z Integer 33 properly rm unavailable template wikitext text/x-wiki <div class="templatedata-header">{{#if:{{{noheader|}}}|<!-- noheader: -->{{Template parameter usage}}|<!-- +header: -->This is the {{#if:{{{nolink|}}}|<!-- +header, nolink TD -->TemplateData|<!-- +header, +link [[TD]]; DEFAULT: -->TemplateData}}<!-- e.o. #if:nolink; DEFAULT: --> documentation for this template used by VisualEditor and other tools<!-- e.o. #if:noheader -->}} '''TemplateData for {{{1|{{BASEPAGENAME}}}}}''' </div><includeonly><!-- check parameters -->{{#invoke:Check for unknown parameters|check |unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}} |template=Template:TemplateData header |1 |nolink |noheader |preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div> }}<!-- -->{{template other|{{sandbox other|| [[Category:Templates using TemplateData]] }}}}</includeonly><!-- --><noinclude>{{Documentation}}</noinclude> 1aa9d45b42ec98f7c188b4427ab410246868bd23 Template:Cot 10 1736 3283 2021-01-23T15:32:43Z wikipedia>Elli 0 not needed wikitext text/x-wiki #REDIRECT [[Template:Collapse top]] {{Redirect category shell| {{R from template shortcut}} }} 708f8bf79aefbfe8ee62f4fa68561059be0372d2 Template:Tlc 10 1001 2198 2021-01-23T16:04:55Z wikipedia>Elli 0 cats wikitext text/x-wiki #REDIRECT [[Template:Template link code]] {{Redirect category shell| {{R from template shortcut}} {{R from high-use template}} {{R from move}} }} 48ef4a029c0e27cccb1148a29fb8b7ccb211a4a2 Module:Userbox/doc 828 1287 2622 2021-01-31T02:29:09Z w>Andrybak 0 /* Tracking categories */ a tracking category has been renamed per [[Wikipedia:Categories_for_discussion/Log/2021_January_19#Category:Pages_with_misplaced_templates]] wikitext text/x-wiki {{High-use|233415}} {{Lua|Module:Category handler|Module:Arguments|Module:Color contrast}} This module does the processing for three userbox templates, {{tl|userbox}}, {{tl|userbox-2}} and {{tl|userbox-r}}. {| class="wikitable" |- ! Template ! Description ! Examples |- | {{tl|userbox}} | Makes userboxes with an id on the left-hand side, or with no id. | {{userbox|id=id}} {{clear}} {{userbox}} |- | {{tl|userbox-2}} | Makes userboxes with an id on both the left- and right-hand sides. | {{userbox-2}} |- | {{tl|userbox-r}} | Makes userboxes with an id on the right-hand side. | {{userbox-r}} |} To use any of these templates from a wiki page, please see the individual template pages for documentation. To generate userboxes directly from Lua, read on. == Generating userboxes from Lua == To generate a userbox directly from Lua, first load the module. <syntaxhighlight lang="lua"> local userbox = require('Module:Userbox') </syntaxhighlight> You can then run any of the three templates with the code: <syntaxhighlight lang="lua"> userbox.main(functionName, args) </syntaxhighlight> For {{tl|userbox}} use the function name "<code>_userbox</code>"; for {{tl|userbox-2}} use the function name "<code>_userbox-2</code>"; and for {{tl|userbox-r}} use the function name "<code>_userbox-r</code>". The <code>args</code> parameter is a table of arguments to pass to the different userbox functions. To see a list of valid arguments, please consult the individual template pages. == Tracking categories == * {{clc|Userboxes with insufficient color contrast}} * {{clc|Pages with templates in the wrong namespace}} 959aeab2b9a931fbb3e6f5906961bd851cc3921b Template:Anchor 10 566 1278 2021-01-31T22:06:17Z wikipedia>Plastikspork 0 Fix |=FOO bug where {{anchor|=FOO}} transcludes [[Template:FOO]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:anchor|main}}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 7d65122552007ac959072bddfa6f723296c81998 Module:Location map/data/USA Minnesota 828 1631 2971 2021-02-02T04:06:43Z wikipedia>Izno 0 per tper Scribunto text/plain return { name = 'Minnesota', top = 49.6, bottom = 43.3, left = -97.4, right = -89.3, image = 'USA Minnesota location map.svg', image1 = 'USA Minnesota relief location map.svg' } cbeccbdc44b6fb67f064c0fd0fe0857151aefb98 Module:Time ago 828 1533 2868 2021-02-02T18:35:13Z w>GreenC 0 add new feature "|numeric" to print number only Scribunto text/plain -- Implement [[Template:Time ago]] local numberSpell, yesno -- lazy load function numberSpell(arg) numberSpell = require('Module:NumberSpell')._main return numberSpell(arg) end function yesno(arg) yesno = require('Module:Yesno') return yesno(arg) end local p = {} -- Table to convert entered text values to numeric values. local timeText = { ['seconds'] = 1, ['minutes'] = 60, ['hours'] = 3600, ['days'] = 86400, ['weeks'] = 604800, ['months'] = 2629800, -- 365.25 * 24 * 60 * 60 / 12 ['years'] = 31557600 } -- Table containing tables of possible units to use in output. local timeUnits = { [1] = { 'second', 'seconds', "second's", "seconds'" }, [60] = { 'minute', 'minutes', "minutes'", "minutes'" }, [3600] = { 'hour', 'hours', "hour's", "hours'" }, [86400] = { 'day', 'days', "day's", "days'" }, [604800] = { 'week', 'weeks', "week's", "weeks'", unit = 'w' }, [2629800] = { 'month', 'months', "month's", "months'", unit = 'm' }, [31557600] = { 'year', 'years', "year's", "years'", unit = 'y' } } function p._main( args ) -- Initialize variables local lang = mw.language.getContentLanguage() local auto_magnitude_num local min_magnitude_num local magnitude = args.magnitude local min_magnitude = args.min_magnitude local purge = args.purge -- Add a purge link if something (usually "yes") is entered into the purge parameter if purge then purge = ' <span class="plainlinks">([' .. mw.title.getCurrentTitle():fullUrl('action=purge') .. ' purge])</span>' else purge = '' end -- Check that the entered timestamp is valid. If it isn't, then give an error message. local success, inputTime = pcall( lang.formatDate, lang, 'xnU', args[1] ) if not success then return '<strong class="error">Error: first parameter cannot be parsed as a date or time.</strong>' end -- Store the difference between the current time and the inputted time, as well as its absolute value. local timeDiff = lang:formatDate( 'xnU' ) - inputTime local absTimeDiff = math.abs( timeDiff ) if magnitude then auto_magnitude_num = 0 min_magnitude_num = timeText[magnitude] else -- Calculate the appropriate unit of time if it was not specified as an argument. local autoMagnitudeData = { { factor = 2, amn = 31557600 }, { factor = 2, amn = 2629800 }, { factor = 2, amn = 86400 }, { factor = 2, amn = 3600 }, { factor = 2, amn = 60 } } for _, t in ipairs( autoMagnitudeData ) do if absTimeDiff / t.amn >= t.factor then auto_magnitude_num = t.amn break end end auto_magnitude_num = auto_magnitude_num or 1 if min_magnitude then min_magnitude_num = timeText[min_magnitude] else min_magnitude_num = -1 end end if not min_magnitude_num then -- Default to seconds if an invalid magnitude is entered. min_magnitude_num = 1 end local result_num local magnitude_num = math.max( min_magnitude_num, auto_magnitude_num ) local unit = timeUnits[magnitude_num].unit if unit and absTimeDiff >= 864000 then local Date = require('Module:Date')._Date local input = lang:formatDate('Y-m-d H:i:s', args[1]) -- Date needs a clean date input = Date(input) if input then local id if input.hour == 0 and input.minute == 0 then id = 'currentdate' else id = 'currentdatetime' end result_num = (Date(id) - input):age(unit) end end result_num = result_num or math.floor ( absTimeDiff / magnitude_num ) local punctuation_key, suffix if timeDiff >= 0 then -- Past if result_num == 1 then punctuation_key = 1 else punctuation_key = 2 end if args.ago == '' then suffix = '' else suffix = ' ' .. (args.ago or 'ago') end else -- Future if args.ago == '' then suffix = '' if result_num == 1 then punctuation_key = 1 else punctuation_key = 2 end else suffix = ' time' if result_num == 1 then punctuation_key = 3 else punctuation_key = 4 end end end local result_unit = timeUnits[ magnitude_num ][ punctuation_key ] -- Convert numerals to words if appropriate. local spell_out = args.spellout local spell_out_max = tonumber(args.spelloutmax) local result_num_text if spell_out and ( ( spell_out == 'auto' and 1 <= result_num and result_num <= 9 and result_num <= ( spell_out_max or 9 ) ) or ( yesno( spell_out ) and 1 <= result_num and result_num <= 100 and result_num <= ( spell_out_max or 100 ) ) ) then result_num_text = numberSpell( result_num ) else result_num_text = tostring( result_num ) end -- numeric or string local numeric_out = args.numeric local result = "" if numeric_out then result = tostring( result_num ) else result = result_num_text .. ' ' .. result_unit .. suffix -- Spaces for suffix have been added in earlier. end return result .. purge end function p.main( frame ) local args = require( 'Module:Arguments' ).getArgs( frame, { valueFunc = function( k, v ) if v then v = v:match( '^%s*(.-)%s*$' ) -- Trim whitespace. if k == 'ago' or v ~= '' then return v end end return nil end, wrappers = 'Template:Time ago' }) return p._main( args ) end return p d5309383cbe3d8c0b4e2f11cd02263496759343c Template:NCES School ID 10 1478 2813 2021-02-03T17:29:15Z w>Jonesey95 0 Fix empty citation, unnamed or unsupported parameter, or invalid parameter value; see [[Help:CS1 errors]] wikitext text/x-wiki <includeonly>{{#if: {{{do_not_render|}}}|| {{#if: {{{do_not_show_link|}}}|{{{1}}}|[https://nces.ed.gov/ccd/schoolsearch/school_detail.asp?Search=1&ID={{{1}}} {{{1}}}]}} }}{{#tag:ref| {{cite web |title=Search for Public Schools - {{{school_name}}} ({{{1}}}) |url=https://nces.ed.gov/ccd/schoolsearch/school_detail.asp?Search=1&ID={{{1}}} |publisher=[[Institute of Education Sciences]] |website=[[National Center for Education Statistics]] |access-date={{{access_date}}} }} |name={{#if: {{{ref_name|}}}|{{{ref_name}}}|"nces_sch"}}}}</includeonly><noinclude>{{documentation}}</noinclude> 45bed3660d9806dae24facca88fb9aec6d761c25 Module:Location map/data/USA Tennessee 828 1683 3124 2021-02-07T02:01:09Z wikipedia>Jonesey95 0 add relief Scribunto text/plain return { name = 'Tennessee', top = 38.1, bottom = 33.6, left = -90.5, right = -81.4, image = 'USA Tennessee location map.svg', image1 = 'USA Tennessee relief location map.svg' } 575b36ab0fd4a6a90399da47a84bac37db2fd8f9 Template:Tl 10 8 11 2021-02-12T22:03:00Z wikipedia>Anthony Appleyard 0 Anthony Appleyard moved page [[Template:Tl]] to [[Template:Template link]]: [[Special:Permalink/1006428669|Requested]] by Buidhe at [[WP:RM/TR]]: RM closed as move wikitext text/x-wiki #REDIRECT [[Template:Template link]] {{Redirect category shell| {{R from move}} }} d6593bb3b4a866249f55d0f34b047a71fe1f1529 Template:Div col 10 45 85 2021-02-14T23:20:57Z wikipedia>Matt Fitzpatrick 0 whitelist parameter class wikitext text/x-wiki <includeonly><templatestyles src="Div col/styles.css"/><!-- --><div class="div-col {{#ifeq:{{{small|}}}|yes|div-col-small}} {{#ifeq:{{{rules|}}}|yes|div-col-rules}} {{{class|}}}" <!-- -->{{#if:{{{colwidth|}}}{{{gap|}}}{{{style|}}}|<!-- -->style="{{#if:{{{colwidth|}}}|column-width: {{{colwidth}}};}}{{#if:{{{gap|}}}|column-gap: {{{gap}}};}}{{#if:{{{style|}}}|{{{style}}}}}"<!-- -->}}><!-- -->{{#if:{{{content|}}}|{{{content}}}</div>}}<!-- Inventory how many pages use small=yes -->{{#ifeq:{{{small|}}}|yes|[[Category:Pages using div col with small parameter]]}}<!-- --></includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using div col with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Div col]] with unknown parameter "_VALUE_"; use colwidth= to specify column size |ignoreblank=y | class | colwidth | content | gap | rules | small | style }}<noinclude> {{Documentation}} </noinclude> 6e84133dd867d6c701e7b161878cf66665bb7eb7 Template:Use Oxford spelling 10 973 2136 2021-02-15T02:37:48Z wikipedia>Goszei 0 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{DMCA|Use Oxford spelling|from|{{{date|}}}}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Oxford spelling template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Use Oxford spelling|Oxford spelling template]] with unknown parameter "_VALUE_"|ignoreblank=y| cs1-dates | date }}<noinclude>{{Documentation}}</noinclude> 1eda85fc7798888a17dcf7b9c4cbf511134ce261 Template:Shortcut 10 135 319 2021-02-16T17:54:05Z wikipedia>Nardog 0 TfM closed wikitext text/x-wiki <includeonly>{{#invoke:Shortcut|main}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 2f2ccc402cde40b1ae056628bffa0852ee01653c Template:Template shortcut 10 255 1406 2021-02-16T17:54:32Z wikipedia>Nardog 0 TfM closed as convert wikitext text/x-wiki <includeonly>{{#invoke:Shortcut|main|template=yes}}</includeonly><noinclude>{{Documentation}}</noinclude> bfb2889c4c0ec36294b7b667f5e03350d2df680e Module:Shortcut/config 828 137 323 2021-02-16T18:43:45Z wikipedia>Nardog 0 Scribunto text/plain -- This module holds configuration data for [[Module:Shortcut]]. return { -- The heading at the top of the shortcut box. It accepts the following parameter: -- $1 - the total number of shortcuts. (required) ['shortcut-heading'] = '[[Wikipedia:Shortcut|{{PLURAL:$1|Shortcut|Shortcuts}}]]', -- The heading when |redirect=yes is given. It accepts the following parameter: -- $1 - the total number of shortcuts. (required) ['redirect-heading'] = '[[Wikipedia:Redirect|{{PLURAL:$1|Redirect|Redirects}}]]', -- The error message to display when a shortcut is invalid (is not a string, or -- is the blank string). It accepts the following parameter: -- $1 - the number of the shortcut in the argument list. (required) ['invalid-shortcut-error'] = 'shortcut #$1 was invalid (shortcuts must be ' .. 'strings of at least one character in length)', -- The error message to display when no shortcuts or other displayable content -- were specified. (required) ['no-content-error'] = 'Error: no shortcuts were specified and the ' .. mw.text.nowiki('|msg=') .. ' parameter was not set.', -- A category to add when the no-content-error message is displayed. (optional) ['no-content-error-category'] = 'Shortcut templates with missing parameters', } f9d1d94844d5953753eb19e30a3ce389eda3d319 Führerredux Wiki:WikiProject Geographical coordinates/globe: 4 1667 3089 2021-02-17T05:24:27Z Artoria2e5 57 CRS is pretty much implied by map, so it's pretty wrong to say there is none. Update list of WMA bodies. wikitext text/x-wiki The <code>globe:</code> parameter specifies the [[planet]], [[dwarf planet]], [[asteroid]], or [[natural satellite]] upon which the coordinates reside. Apart from ''[[earth]]'' (the default), recognized values are: ''[[Mercury (planet)|mercury]]'', ''[[venus]]'', ''[[moon]]'', ''[[mars]]'', ''[[Phobos (moon)|phobos]]'', ''[[Deimos (moon)|deimos]]'', ''[[Ceres (dwarf planet)|ceres]]'', ''[[4 Vesta|vesta]]'', ''[[jupiter]]'', ''[[Ganymede (moon)|ganymede]]'', ''[[Callisto (moon)|callisto]]'', ''[[Io (moon)|io]]'', ''[[Europa (moon)|europa]]'', ''[[Mimas (moon)|mimas]]'', ''[[enceladus]]'', ''[[Tethys (moon)|tethys]]'', ''[[Dione (moon)|dione]]'', ''[[Rhea (moon)|rhea]]'', ''[[Titan (moon)|titan]]'', ''[[Hyperion (moon)|hyperion]]'', ''[[Iapetus (moon)|iapetus]]'', ''[[Phoebe (moon)|phoebe]]'', ''[[Miranda (moon)|miranda]]'', ''[[Ariel (moon)|ariel]]'', ''[[Umbriel (moon)|umbriel]]'', ''[[Titania (moon)|titania]]'', ''[[Oberon (moon)|oberon]]'', ''[[Triton (moon)|triton]]'', ''[[pluto]]'', and ''[[Charon (moon)|charon]]''. {| class="wikitable sortable" |+ Samples ! Subject ! G ! Markup ! Result |- | [[Kittu (crater)|Kittu Crater]] | ganymede | <code><nowiki>{{coord|0.4|N|334.6|W|globe:ganymede}}</nowiki></code> | {{coord|0.4|N|334.6|W|globe:ganymede}} |- | [[Viking 2]] lander | mars | <code><nowiki>{{coord|48.269|N|225.990|W|globe:mars}}</nowiki></code> | {{coord|48.269|N|225.990|W|globe:mars}} |- | [[Mozart (crater)|Mozart Crater]] | mercury | <code><nowiki>{{coord|7.8|N|190.5|W|globe:mercury}}</nowiki></code> | {{coord|7.8|N|190.5|W|globe:mercury}} |- | [[Apollo 11]] lander | moon | <code><nowiki>{{coord|0|40|26.69|N|23|28|22.69|E|globe:moon}}</nowiki></code> | {{coord|0|40|26.69|N|23|28|22.69|E|globe:moon}} |- | [[Ksa (crater)|Ksa Crater]] | titan | <code><nowiki>{{coord|14.0|N|65.4|W|globe:titan}}</nowiki></code> | {{coord|14.0|N|65.4|W|globe:titan}} |- | [[Venera 13]] lander | venus | <code><nowiki>{{coord|7.5|S|303|E|globe:venus}}</nowiki></code> | {{coord|7.5|S|303|E|globe:venus}} |- | [[Stickney (crater)|Stickney Crater]] | phobos | <code><nowiki>{{coord|1|N|49|W|globe:phobos}}</nowiki></code> | {{coord|1|N|49|W|globe:phobos}} |} Very rough mapping is provided on geohack for almost all supported globes. The pop-out WikiMiniAtlas system provides limited mapping for Moon, Mars, Mercury, Venus, Io, and Titan, {{as of|2021|02|lc=1}}. The maps roughly implies a coordinate reference system, but does not clearly specify one (unlike Earth's WGS84). Since the template defaults to east longitude, the <code>|W|</code> direction must be specified for globes that measure longitude westward. For celestial coordinates, use {{tl|Sky}} instead. [[Category:WikiProject Geographical coordinates]] ac8ba8717272d81a67cf6d6c89bd07c44965c6dc Template:Nowiki2 10 629 1418 2021-02-18T18:38:29Z wikipedia>Jonesey95 0 Reverted 1 edit by [[Special:Contributions/154.133.144.234|154.133.144.234]] ([[User talk:154.133.144.234|talk]]) to last revision by Ans wikitext text/x-wiki {{#if: {{{tag|}}} | {{#if: {{{style|}}} | <{{{tag}}} style="{{{style}}}"> | <{{{tag}}}> }} }}{{#invoke:LuaCall | call | mw.text.nowiki |\{{{1|}}}<!-- -->}}{{#if: {{{tag|}}} | </{{{tag}}}> }}<noinclude> {{Documentation}} </noinclude> 2712eeff2099493a4151603b9ed4ea74e51fa6ed Template:IUCN banner 10 1390 2725 2021-02-20T03:30:08Z w>Matt Fitzpatrick 0 implemented edit request by Reywas92, links to IUCN protected area categories instead of IUCN wikitext text/x-wiki {{#if: {{{1|}}} | {{#switch: {{uc:{{{1|}}}}} | IA = <div style="background-color: #E7AF97;">[[IUCN protected area categories|IUCN category]]<!-- --> Ia ([[strict nature reserve]]){{{2|}}}</div>{{#if:{{NAMESPACE}}||}} | IB = <div style="background-color: #DACAA5;">[[IUCN protected area categories|IUCN category]]<!-- --> Ib ([[wilderness area]]){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category Ib]]}} | II = <div style="background-color: #CDE5B2;">[[IUCN protected area categories|IUCN category]]<!-- --> II ([[national park]]){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category II]]}} | III = <div style="background-color: #BFFFBF;">[[IUCN protected area categories|IUCN category]]<!-- --> III ([[natural monument|natural monument or feature]]){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category III]]}} | IV = <div style="background-color: #B2E5CD;">[[IUCN protected area categories|IUCN category]]<!-- --> IV (habitat/species management area){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category IV]]}} | V = <div style="background-color: #A5CADA;">[[IUCN protected area categories|IUCN category]]<!-- --> V (protected landscape/seascape){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category V]]}} | VI = <div style="background-color: #A8BDEC;">[[IUCN protected area categories|IUCN category]]<!-- --> VI (protected area with sustainable use of natural resources){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category VI]]}} | #default = <div style="color: #C80815; font-weight: bold;">An unknown <!-- -->[[IUCN protected area categories|IUCN category]] was entered.{{main other|[[Category:Pages using IUCN banner with invalid value]]}}</div> }} }}<noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 4a54015e466e8edcb6ca736e10616330f5cc2b54 Template:Template link general 10 1037 2272 2021-02-20T18:40:07Z wikipedia>Pppery 0 Make substable per edit request wikitext text/x-wiki {{{{{|safesubst:}}}#Invoke:Template link general|main}}<noinclude> {{Documentation}} </noinclude> 9871d2f490eaedd832a0ae8016adbf807ddf7b71 Template:Userbox 10 141 331 2021-02-23T21:04:49Z MrJaroslavik 18 [[Category:Userboxes]] wikitext text/x-wiki {{#invoke:userbox|userbox}}<noinclude> {{documentation}} [[Category:Userboxes]]</noinclude> cef9fe752d7f8791d4317858904bde773db441a6 Module:Unsubst 828 235 530 2021-02-28T16:50:26Z Redmin 30 Undid revision 164895 by [[Special:Contributions/R4356th|R4356th]] ([[User talk:R4356th|talk]]): The edit broke the module. :( Scribunto text/plain local p = {} local specialParams = { ['$N'] = 'template name', -- Deprecated, but keeping until it is removed from transcluding templates ['$B'] = 'template content', } p[''] = function ( frame ) if not frame:getParent() then error( '{{#invoke:Unsubst|}} makes no sense without a parent frame' ) end if not frame.args['$B'] then error( '{{#invoke:Unsubst|}} requires parameter $B (template content)' ) end if mw.isSubsting() then ---- substing -- Combine passed args with passed defaults local args = {} for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end for k, v in pairs( frame:getParent().args ) do args[k] = v end -- Build an equivalent template invocation -- First, find the title to use local titleobj = mw.title.new(frame:getParent():getTitle()) local title if titleobj.namespace == 10 then -- NS_TEMPLATE title = titleobj.text elseif titleobj.namespace == 0 then -- NS_MAIN title = ':' .. titleobj.text else title = titleobj.prefixedText end -- Build the invocation body with numbered args first, then named local ret = '{{' .. title for k, v in ipairs( args ) do if string.find( v, '=', 1, true ) then -- likely something like 1=foo=bar, we need to do it as a named arg break end ret = ret .. '|' .. v args[k] = nil end for k, v in pairs( args ) do ret = ret .. '|' .. k .. '=' .. v end return ret .. '}}' else ---- Not substing -- Just return the "body" return frame.args['$B'] .. (frame.args['$N'] and frame:getParent():getTitle() == mw.title.getCurrentTitle().prefixedText and '[[Category:Calls to Module:Unsubst that use $N]]' or '') end end return p 83a208bd98f5e78524b299923e5f6e6268a17c53 Template:No ping 10 211 478 2021-03-05T21:17:26Z MrJaroslavik 18 wikitext text/x-wiki {{#invoke:No ping|main}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> f562b06355eb8e61bec522fedc6a997feb68d7c8 Template:Green 10 214 484 2021-03-06T15:01:15Z MrJaroslavik 18 wikitext text/x-wiki <span style="color: #00BA00;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> b52b710c69a84c2f5afa810e03f1c25ea5b33f78 Template:Cyan 10 232 524 2021-03-06T15:05:11Z MrJaroslavik 18 MrJaroslavik moved page [[Template:Bold Blue]] to [[Template:Cyan]] without leaving a redirect wikitext text/x-wiki <span style="color: #00cccc;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> 0e41138de5432d774a72ac7f8607b5c8bb6e9d23 Template:Big 10 231 520 2021-03-06T15:09:22Z MrJaroslavik 18 wikitext text/x-wiki <span style="font-size: 120%;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> ccacbee62715b1977a9a2534a2cd4761ed5882f1 Template:Color 10 213 482 2021-03-06T15:12:43Z MrJaroslavik 18 wikitext text/x-wiki <span style="color:{{{1|}}}">{{{2|{{{1|}}}}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> fc48e80484b6d4a0cd1821c712d8cbbdfd9a233e Template:Reflist/styles.css 10 565 1276 2021-03-08T23:00:26Z wikipedia>Izno 0 Changed protection level for "[[Template:Reflist/styles.css]]": match parent ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) sanitized-css text/css /* {{pp|small=yes}} */ /* can we remove the font size declarations? .references gets a font-size in * common.css that is always 90, and there is nothing else in reflist out in * the wild. May affect column sizes. */ .reflist { font-size: 90%; /* Default font-size */ margin-bottom: 0.5em; list-style-type: decimal; } .reflist .references { font-size: 100%; /* Reset font-size when nested in div.reflist */ margin-bottom: 0; /* Avoid double margin when nested in div.reflist */ list-style-type: inherit; /* Enable custom list style types */ } /* columns-2 and columns-3 are legacy for "2 or more" column view from when the * template was implemented with column-count. */ .reflist-columns-2 { column-width: 30em; } .reflist-columns-3 { column-width: 25em; } /* Reset top margin for lists embedded in columns */ .reflist-columns { margin-top: 0.3em; } .reflist-columns ol { margin-top: 0; } /* Avoid elements breaking between columns */ .reflist-columns li { page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */ break-inside: avoid-column; } .reflist-upper-alpha { list-style-type: upper-alpha; } .reflist-upper-roman { list-style-type: upper-roman; } .reflist-lower-alpha { list-style-type: lower-alpha; } .reflist-lower-greek { list-style-type: lower-greek; } .reflist-lower-roman { list-style-type: lower-roman; } 531a26d48f0e7826c61f764cfb7d5fb200032c34 Template:NAC 10 226 510 2021-03-10T20:37:38Z MrJaroslavik 18 [[Category:Template redirects]] wikitext text/x-wiki #REDIRECT [[Template:Non-admin closure]] [[Category:Template redirects]] e832ee229612e587cd776e14de78cad816d72d44 Template:NACC 10 224 506 2021-03-10T20:38:11Z MrJaroslavik 18 [[Category:Template redirects]] wikitext text/x-wiki #REDIRECT [[Template:Non-admin comment]] [[Category:Template redirects]] 1cd21d3bf7de101beb4306ce2af0275eae30628f Template:Serif 10 230 518 2021-03-10T20:45:26Z MrJaroslavik 18 wikitext text/x-wiki <span style="font-family: 'Georgia Pro', Georgia, 'DejaVu Serif', Times, 'Times New Roman', serif; {{{style|}}}" {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> 1f36ee4412dd29b6f8065b6a8f4191905763d83e Module:Math 828 593 1334 2021-03-11T22:23:48Z wikipedia>Primefac 0 typo fix Scribunto text/plain --[[ This module provides a number of basic mathematical operations. ]] local yesno, getArgs -- lazily initialized local p = {} -- Holds functions to be returned from #invoke, and functions to make available to other Lua modules. local wrap = {} -- Holds wrapper functions that process arguments from #invoke. These act as intemediary between functions meant for #invoke and functions meant for Lua. --[[ Helper functions used to avoid redundant code. ]] local function err(msg) -- Generates wikitext error messages. return mw.ustring.format('<strong class="error">Formatting error: %s</strong>', msg) end local function unpackNumberArgs(args) -- Returns an unpacked list of arguments specified with numerical keys. local ret = {} for k, v in pairs(args) do if type(k) == 'number' then table.insert(ret, v) end end return unpack(ret) end local function makeArgArray(...) -- Makes an array of arguments from a list of arguments that might include nils. local args = {...} -- Table of arguments. It might contain nils or non-number values, so we can't use ipairs. local nums = {} -- Stores the numbers of valid numerical arguments. local ret = {} for k, v in pairs(args) do v = p._cleanNumber(v) if v then nums[#nums + 1] = k args[k] = v end end table.sort(nums) for i, num in ipairs(nums) do ret[#ret + 1] = args[num] end return ret end local function fold(func, ...) -- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters, -- and must return a number as an output. This number is then supplied as input to the next function call. local vals = makeArgArray(...) local count = #vals -- The number of valid arguments if count == 0 then return -- Exit if we have no valid args, otherwise removing the first arg would cause an error. nil, 0 end local ret = table.remove(vals, 1) for _, val in ipairs(vals) do ret = func(ret, val) end return ret, count end --[[ Fold arguments by selectively choosing values (func should return when to choose the current "dominant" value). ]] local function binary_fold(func, ...) local value = fold((function(a, b) if func(a, b) then return a else return b end end), ...) return value end --[[ random Generate a random number Usage: {{#invoke: Math | random }} {{#invoke: Math | random | maximum value }} {{#invoke: Math | random | minimum value | maximum value }} ]] function wrap.random(args) local first = p._cleanNumber(args[1]) local second = p._cleanNumber(args[2]) return p._random(first, second) end function p._random(first, second) math.randomseed(mw.site.stats.edits + mw.site.stats.pages + os.time() + math.floor(os.clock() * 1000000000)) -- math.random will throw an error if given an explicit nil parameter, so we need to use if statements to check the params. if first and second then if first <= second then -- math.random doesn't allow the first number to be greater than the second. return math.random(first, second) end elseif first then return math.random(first) else return math.random() end end --[[ order Determine order of magnitude of a number Usage: {{#invoke: Math | order | value }} ]] function wrap.order(args) local input_string = (args[1] or args.x or '0'); local input_number = p._cleanNumber(input_string); if input_number == nil then return err('order of magnitude input appears non-numeric') else return p._order(input_number) end end function p._order(x) if x == 0 then return 0 end return math.floor(math.log10(math.abs(x))) end --[[ precision Detemines the precision of a number using the string representation Usage: {{ #invoke: Math | precision | value }} ]] function wrap.precision(args) local input_string = (args[1] or args.x or '0'); local trap_fraction = args.check_fraction; local input_number; if not yesno then yesno = require('Module:Yesno') end if yesno(trap_fraction, true) then -- Returns true for all input except nil, false, "no", "n", "0" and a few others. See [[Module:Yesno]]. local pos = string.find(input_string, '/', 1, true); if pos ~= nil then if string.find(input_string, '/', pos + 1, true) == nil then local denominator = string.sub(input_string, pos+1, -1); local denom_value = tonumber(denominator); if denom_value ~= nil then return math.log10(denom_value); end end end end input_number, input_string = p._cleanNumber(input_string); if input_string == nil then return err('precision input appears non-numeric') else return p._precision(input_string) end end function p._precision(x) if type(x) == 'number' then x = tostring(x) end x = string.upper(x) local decimal = x:find('%.') local exponent_pos = x:find('E') local result = 0; if exponent_pos ~= nil then local exponent = string.sub(x, exponent_pos + 1) x = string.sub(x, 1, exponent_pos - 1) result = result - tonumber(exponent) end if decimal ~= nil then result = result + string.len(x) - decimal return result end local pos = string.len(x); while x:byte(pos) == string.byte('0') do pos = pos - 1 result = result - 1 if pos <= 0 then return 0 end end return result end --[[ max Finds the maximum argument Usage: {{#invoke:Math| max | value1 | value2 | ... }} Note, any values that do not evaluate to numbers are ignored. ]] function wrap.max(args) return p._max(unpackNumberArgs(args)) end function p._max(...) local max_value = binary_fold((function(a, b) return a > b end), ...) if max_value then return max_value end end --[[ median Find the median of set of numbers Usage: {{#invoke:Math | median | number1 | number2 | ...}} OR {{#invoke:Math | median }} ]] function wrap.median(args) return p._median(unpackNumberArgs(args)) end function p._median(...) local vals = makeArgArray(...) local count = #vals table.sort(vals) if count == 0 then return 0 end if p._mod(count, 2) == 0 then return (vals[count/2] + vals[count/2+1])/2 else return vals[math.ceil(count/2)] end end --[[ min Finds the minimum argument Usage: {{#invoke:Math| min | value1 | value2 | ... }} OR {{#invoke:Math| min }} When used with no arguments, it takes its input from the parent frame. Note, any values that do not evaluate to numbers are ignored. ]] function wrap.min(args) return p._min(unpackNumberArgs(args)) end function p._min(...) local min_value = binary_fold((function(a, b) return a < b end), ...) if min_value then return min_value end end --[[ sum Finds the sum Usage: {{#invoke:Math| sum | value1 | value2 | ... }} OR {{#invoke:Math| sum }} Note, any values that do not evaluate to numbers are ignored. ]] function wrap.sum(args) return p._sum(unpackNumberArgs(args)) end function p._sum(...) local sums, count = fold((function(a, b) return a + b end), ...) if not sums then return 0 else return sums end end --[[ average Finds the average Usage: {{#invoke:Math| average | value1 | value2 | ... }} OR {{#invoke:Math| average }} Note, any values that do not evaluate to numbers are ignored. ]] function wrap.average(args) return p._average(unpackNumberArgs(args)) end function p._average(...) local sum, count = fold((function(a, b) return a + b end), ...) if not sum then return 0 else return sum / count end end --[[ round Rounds a number to specified precision Usage: {{#invoke:Math | round | value | precision }} --]] function wrap.round(args) local value = p._cleanNumber(args[1] or args.value or 0) local precision = p._cleanNumber(args[2] or args.precision or 0) if value == nil or precision == nil then return err('round input appears non-numeric') else return p._round(value, precision) end end function p._round(value, precision) local rescale = math.pow(10, precision or 0); return math.floor(value * rescale + 0.5) / rescale; end --[[ log10 returns the log (base 10) of a number Usage: {{#invoke:Math | log10 | x }} ]] function wrap.log10(args) return math.log10(args[1]) end --[[ mod Implements the modulo operator Usage: {{#invoke:Math | mod | x | y }} --]] function wrap.mod(args) local x = p._cleanNumber(args[1]) local y = p._cleanNumber(args[2]) if not x then return err('first argument to mod appears non-numeric') elseif not y then return err('second argument to mod appears non-numeric') else return p._mod(x, y) end end function p._mod(x, y) local ret = x % y if not (0 <= ret and ret < y) then ret = 0 end return ret end --[[ gcd Calculates the greatest common divisor of multiple numbers Usage: {{#invoke:Math | gcd | value 1 | value 2 | value 3 | ... }} --]] function wrap.gcd(args) return p._gcd(unpackNumberArgs(args)) end function p._gcd(...) local function findGcd(a, b) local r = b local oldr = a while r ~= 0 do local quotient = math.floor(oldr / r) oldr, r = r, oldr - quotient * r end if oldr < 0 then oldr = oldr * -1 end return oldr end local result, count = fold(findGcd, ...) return result end --[[ precision_format Rounds a number to the specified precision and formats according to rules originally used for {{template:Rnd}}. Output is a string. Usage: {{#invoke: Math | precision_format | number | precision }} ]] function wrap.precision_format(args) local value_string = args[1] or 0 local precision = args[2] or 0 return p._precision_format(value_string, precision) end function p._precision_format(value_string, precision) -- For access to Mediawiki built-in formatter. local lang = mw.getContentLanguage(); local value value, value_string = p._cleanNumber(value_string) precision = p._cleanNumber(precision) -- Check for non-numeric input if value == nil or precision == nil then return err('invalid input when rounding') end local current_precision = p._precision(value) local order = p._order(value) -- Due to round-off effects it is neccesary to limit the returned precision under -- some circumstances because the terminal digits will be inaccurately reported. if order + precision >= 14 then if order + p._precision(value_string) >= 14 then precision = 13 - order; end end -- If rounding off, truncate extra digits if precision < current_precision then value = p._round(value, precision) current_precision = p._precision(value) end local formatted_num = lang:formatNum(math.abs(value)) local sign -- Use proper unary minus sign rather than ASCII default if value < 0 then sign = '−' else sign = '' end -- Handle cases requiring scientific notation if string.find(formatted_num, 'E', 1, true) ~= nil or math.abs(order) >= 9 then value = value * math.pow(10, -order) current_precision = current_precision + order precision = precision + order formatted_num = lang:formatNum(math.abs(value)) else order = 0; end formatted_num = sign .. formatted_num -- Pad with zeros, if needed if current_precision < precision then local padding if current_precision <= 0 then if precision > 0 then local zero_sep = lang:formatNum(1.1) formatted_num = formatted_num .. zero_sep:sub(2,2) padding = precision if padding > 20 then padding = 20 end formatted_num = formatted_num .. string.rep('0', padding) end else padding = precision - current_precision if padding > 20 then padding = 20 end formatted_num = formatted_num .. string.rep('0', padding) end end -- Add exponential notation, if necessary. if order ~= 0 then -- Use proper unary minus sign rather than ASCII default if order < 0 then order = '−' .. lang:formatNum(math.abs(order)) else order = lang:formatNum(order) end formatted_num = formatted_num .. '<span style="margin:0 .15em 0 .25em">×</span>10<sup>' .. order .. '</sup>' end return formatted_num end --[[ divide Implements the division operator Usage: {{#invoke:Math | divide | x | y | round= | precision= }} --]] function wrap.divide(args) local x = args[1] local y = args[2] local round = args.round local precision = args.precision if not yesno then yesno = require('Module:Yesno') end return p._divide(x, y, yesno(round), precision) end function p._divide(x, y, round, precision) if y == nil or y == "" then return err("Empty divisor") elseif not tonumber(y) then if type(y) == 'string' and string.sub(y, 1, 1) == '<' then return y else return err("Not a number: " .. y) end elseif x == nil or x == "" then return err("Empty dividend") elseif not tonumber(x) then if type(x) == 'string' and string.sub(x, 1, 1) == '<' then return x else return err("Not a number: " .. x) end else local z = x / y if round then return p._round(z, 0) elseif precision then return p._round(z, precision) else return z end end end --[[ Helper function that interprets the input numerically. If the input does not appear to be a number, attempts evaluating it as a parser functions expression. ]] function p._cleanNumber(number_string) if type(number_string) == 'number' then -- We were passed a number, so we don't need to do any processing. return number_string, tostring(number_string) elseif type(number_string) ~= 'string' or not number_string:find('%S') then -- We were passed a non-string or a blank string, so exit. return nil, nil; end -- Attempt basic conversion local number = tonumber(number_string) -- If failed, attempt to evaluate input as an expression if number == nil then local success, result = pcall(mw.ext.ParserFunctions.expr, number_string) if success then number = tonumber(result) number_string = tostring(number) else number = nil number_string = nil end else number_string = number_string:match("^%s*(.-)%s*$") -- String is valid but may contain padding, clean it. number_string = number_string:match("^%+(.*)$") or number_string -- Trim any leading + signs. if number_string:find('^%-?0[xX]') then -- Number is using 0xnnn notation to indicate base 16; use the number that Lua detected instead. number_string = tostring(number) end end return number, number_string end --[[ Wrapper function that does basic argument processing. This ensures that all functions from #invoke can use either the current frame or the parent frame, and it also trims whitespace for all arguments and removes blank arguments. ]] local mt = { __index = function(t, k) return function(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return wrap[k](getArgs(frame)) -- Argument processing is left to Module:Arguments. Whitespace is trimmed and blank arguments are removed. end end } return setmetatable(p, mt) 2bbe734d898299f65412963a3c1782e9fcc4d9ca Template:Strong 10 208 472 2021-03-14T15:34:10Z MrJaroslavik 18 wikitext text/x-wiki <strong {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</strong><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> 2b665c5a888ca8f341022ccbca66617352915475 Template:Asbox/styles.css 10 756 1687 2021-03-15T18:13:21Z wikipedia>Paine Ellsworth 0 per edit request on talk page - hide page overflow sanitized-css text/css /* {{pp-template}} */ /* Article stub message box styles */ .asbox { position: relative; overflow:hidden; } .asbox table { background: transparent; } .asbox p { margin: 0; } .asbox p + p { margin-top: 0.25em; } .asbox-body { font-style: italic; } .asbox-note { font-size: smaller; } .asbox .navbar { position: absolute; top: -0.75em; right: 1em; display: none; } 9f0904fdac11fd6eebd84c73d5680f09d19c9b5a Template:Edit conflict 10 217 490 2021-03-17T18:22:05Z MrJaroslavik 18 wikitext text/x-wiki <small>([[w:Help:Edit conflict|edit conflict]])</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> eb558263ebad66e81bbdde9479c936ab789b4443 Template:Code 10 229 516 2021-03-17T19:57:21Z MrJaroslavik 18 wikitext text/x-wiki {{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> ec6759b67bec30b7f31c3a0feecdd2a4775ee0cf Template:Strong/doc 10 236 532 2021-03-17T20:00:35Z MrJaroslavik 18 + wikitext text/x-wiki {{Documentation subpage}} == Usage == {| class="wikitable" !Template !! Result |- |{{tlx|Strong}} || {{strong|Example text}} |} == See also == {{#lst:Template:Template list|inline-talk-templates}} 9f233bad1e32c07e57f879f52cefdf00fbbb245b Template:Not watching 10 223 504 2021-03-17T20:26:38Z MrJaroslavik 18 wikitext text/x-wiki <small>(I am not [[mediawikiwiki:Help:Watchlist|watching]] this page, so please [[Template:Ping/doc|ping me]] if you want my attention.)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 8cd9e9cb5cdc0597c26d6b827ad2a764272fc86e Template:Minor planet 10 984 2164 2021-03-19T14:02:32Z wikipedia>Anthony Appleyard 0 Anthony Appleyard moved page [[Template:Mp]] to [[Template:Minor planet]]: [[Special:Permalink/1013000047|Requested]] by Buidhe at [[WP:RM/TR]]: RM closed as move wikitext text/x-wiki {{#switch: {{{1}}} | s = | S = {{nowrap|S/{{{2}}} ({{{3}}}{{#if: {{{5|}}} |<sub>{{{4}}}</sub>) {{{5}}}|) {{{4}}}}}}} | {{#expr: {{{1}}}*1 }} = {{nowrap|({{{1}}}) {{{2}}}{{#if: {{{3|}}} |<sub>{{{3}}}</sub>|}}}} | #default = {{nowrap|{{{1}}}{{#if: {{{2|}}} |<sub>{{{2}}}</sub>|}}}} }}<noinclude> {{Documentation}} </noinclude> 853353b9192dc27e9ad940f8ffd53dfa024dd92e Template:Mp 10 985 2166 2021-03-19T14:02:32Z wikipedia>Anthony Appleyard 0 Anthony Appleyard moved page [[Template:Mp]] to [[Template:Minor planet]]: [[Special:Permalink/1013000047|Requested]] by Buidhe at [[WP:RM/TR]]: RM closed as move wikitext text/x-wiki #REDIRECT [[Template:Minor planet]] {{Redirect category shell| {{R from move}} }} 8ce86e91382eef3030101b778977c0f2311084fc Template:Template link 10 9 13 2021-03-25T19:03:22Z wikipedia>Izno 0 [[Wikipedia:Templates for discussion/Log/2021 March 18#Template:Tlu]] closed as keep ([[WP:XFDC#4.0.11|XFDcloser]]) wikitext text/x-wiki &#123;&#123;[[Template:{{{1}}}|{{{1}}}]]&#125;&#125;<noinclude>{{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> eabbec62efe3044a98ebb3ce9e7d4d43c222351d Template:Pinged 10 218 492 2021-03-26T12:06:36Z MrJaroslavik 18 wikitext text/x-wiki <small>([[Wikipedia:Notifications|pinged]])</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> a0c3480990f212de7bdf6319a34ee21eaa63171e Template:Responding to ping 10 221 500 2021-03-26T12:11:41Z MrJaroslavik 18 e wikitext text/x-wiki <small>(<span style="color:#555;">responding to [[Wikipedia:Notifications|ping]]</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 385a033181f51764191d1e0869a00c37e566e037 Template:Small 10 103 522 2021-03-26T13:30:59Z MrJaroslavik 18 e wikitext text/x-wiki <span style="font-size: 85%;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> f23637c47373ee160441b2c17d177a7473fd86d8 Template:Lua/doc 10 254 563 2021-03-26T13:53:43Z meta>MrJaroslavik 0 + wikitext text/x-wiki {{Documentation subpage}} This template is used to show that templates have been converted to [[w:Lua (programming language)|Lua]]. It is placed at the top of the template's /doc page. It automatically adds the template to [[:Category:Lua-based templates]], or to one of its subcategories. == Usage == ; Basic : {{tlx|Lua|''module name''}} ; All parameters : {{tlx|Lua|''module 1''|''module 2''|''module 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}} The first module name is required. == See also == {{#lst:Template:Template list|utility-templates}} 3c648cadb41f91efa2ab1359a6bfe56734580fcd Template:Yesno 10 12 496 19 2021-03-26T16:47:25Z MrJaroslavik 18 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }} |no |n |f |false |off |0 = {{{no|<!-- null -->}}} | = {{{blank|{{{no|<!-- null -->}}}}}} |¬ = {{{¬|}}} |yes |y |t |true |on |1 = {{{yes|yes}}} |#default = {{{def|{{{yes|yes}}}}}} }}<noinclude>{{Documentation}}[[Category:Utility templates]]</noinclude> 2f65f96436ffb94ac53eaa31f4b01118a2b75333 Template:Has short description 10 1352 2687 2021-03-29T18:21:45Z w>MusikBot II 0 Protected "[[Template:Has short description]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki {{#invoke:string2 |findpagetext |text={%{ *[Ss]hort description |plain=false |title={{{title|{{{1|}}} }}} }}<noinclude> {{documentation}} </noinclude> 87587209a436a4c02ef7564ffe868c4348cc6a3c Template:Frac 10 1550 2885 2021-04-01T06:00:35Z DannyS712 44 update redirect target wikitext text/x-wiki #REDIRECT [[Template:Fraction]] f1f0a8f5f566d2a42806b8bfed1033896a0e45e2 Template:Category see also/Category pair check 10 1581 2916 2021-04-05T07:12:15Z BrownHairedGirl 49 {{!}} wikitext text/x-wiki <noinclude>{{pp-template|small=yes}}</noinclude><includeonly>{{#ifeq: {{NAMESPACE}} | Category |<!-- -->{{#if: {{#invoke:String|match|{{BASEPAGENAME}}|%d+[snrt][tdh]%-century.+$|ignore_errors=true}}<!-- -->|<!-- it's on a century category -->{{#if: {{#invoke:String|match|{{{1|}}}|{{#invoke:String|match|{{BASEPAGENAME}}|-century.+$|ignore_errors=true}}|ignore_errors=true|plain=true}}<!-- -->|<!-- the link is to a similar century category -->[[Category:Template Category see also used when Template Category pair probably should be]]<!-- -->}}<!-- -->}}<!-- -->}}</includeonly><noinclude> {{doc|content= Check whether [[Template:Category see also]] has been used when [[Template:Category pair]] probably should be use. The test is: #Is this page in the Category namespace? #Does this page's title end in "nn(st{{!}}nd{{!}}rd{{!}}th)-century something" #does the first linked cat's title end in the same "-century something" as the title of the page it is used on? If the answer to all 3 is yes, then categorise the page in the hidden tracking category [[:Category:Template Category see also used when Template Category pair probably should be]] }}</noinclude> fb4997b39da2696034cc359b969ad8896937680b Template:!xt 10 1226 2556 2021-04-05T10:10:56Z Xaosflux 7 Changed protection level for "[[Template:!xt]]": reduced highly visible msg use, lower to TEP ([Edit=Require template editor access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki {{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example deprecated-content example-bad" style="font-family: Georgia, 'DejaVu Serif', serif; color: #8B0000;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<noinclude> {{Documentation}} </noinclude> 5c54359c619901a0b19422399dc9a3e324e02879 Template:Str ≥ len 10 1237 2571 2021-04-06T11:38:38Z Elli 39 Undid revision 1016291968 by [[Special:Contributions/Elli|Elli]] ([[User talk:Elli|talk]]) wrong template, damn it! wikitext text/x-wiki {{{{{|safesubst:}}}#ifexpr: {{{{{|safesubst:}}}#invoke:String|len|s={{{1|}}}}} >= {{{2|0}}} <noinclude><!-- str >= len --></noinclude> | {{{3|}}} | {{{4|}}} }}<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 30546d5d5d81a3efb26afb9d6cc182bdeb70eadc Template:Flagicon 10 1173 2502 2021-04-06T23:46:15Z w>Wbm1058 0 remove unnecessary specification wikitext text/x-wiki <includeonly>{{safesubst<noinclude />:#ifeq: {{Yesno-no|{{{noredlink|}}}}}|yes<noinclude><!-- --></noinclude>|<noinclude><!-- #Check for existence of Template: Country data foo before invoking it --></noinclude>{{safesubst<noinclude />:#ifexist: Template: Country data {{{1|}}}<noinclude><!-- --></noinclude>|<noinclude><!-- # It exists, so proceed --></noinclude>{{country data {{{1|}}}|flagicon/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<noinclude><!-- --></noinclude>|<noinclude><!-- # It doesn't exist, so do nothing --></noinclude>}}<noinclude><!-- --></noinclude>|<noinclude><!-- # DEFAULT call Template: Country data {{{1|}}} # with no prior checks --></noinclude>{{country data {{{1|}}}|flagicon/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<noinclude><!-- # Track use where "Template:Country data Foo" does not exist --></noinclude>{{safesubst<noinclude />:#ifexist: Template:Country data {{{1|}}}||{{safesubst<noinclude />:namespace detect showall | 1 = | 2 = [[Category:Flagicons with missing country data templates]] | user = 1 | talk = 1 | other = 2 }}}}<noinclude><!-- --></noinclude>}}</includeonly>{{safesubst<noinclude />:#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using flagicon template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Flagicon]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | noredlink | size | variant }}<noinclude> {{Documentation}} </noinclude> 4ba00e607bb28194908c631e424736dd64374684 Template:Country data Lithuania 10 1214 2543 2021-04-10T12:19:16Z w>Maiō T. 0 removing unnecessary link alias (basketball) wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Lithuania | flag alias = Flag of Lithuania.svg | flag alias-1918 = Flag of Lithuania 1918-1940.svg | flag alias-1988 = Flag of Lithuania (1988-2004).svg | flag alias-naval = Naval Ensign of Lithuania.svg | link alias-naval = Lithuanian Naval Force | flag alias-military=Flag of the Lithuanian Armed Forces.png | link alias-military=Lithuanian Armed Forces | flag alias-army = Flag of the Lithuanian Army.svg | link alias-army = Lithuanian Land Force | flag alias-navy=Flag of Lithuania (state).svg | link alias-navy = Lithuanian Naval Force | flag alias-air force=Air Force Ensign of Lithuania.svg | link alias-air force=Lithuanian Air Force | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | altvar = {{{altvar|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1918 | var2 = 1988 | redir1 = LTU | related1 = Lithuanian SSR </noinclude> }} ff73a63b7cb85165f1f72854a062d92b4a488078 Template:Infobox school/short description 10 1473 2808 2021-04-19T18:13:40Z w>Trialpears 0 Combine two patterns, should almost certainly be cut down more, but not right now wikitext text/x-wiki {{#if:{{Has short description}} ||{{#invoke:String|replace|source= <!-- =======Short description======= -->{{#if:{{#invoke:Is infobox in lead|main|[Ii]nfobox [Ss]chool}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Hochschule}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Secondary school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Education in Canada}}{{#invoke:Is infobox in lead|main|[Hh]igh school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Secondary School}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Malaysia school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Malaysia School}}{{#invoke:Is infobox in lead|main|[iI]nfobox UK school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox US school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox secondary school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Public School}}{{#invoke:Is infobox in lead|main|[sS]chool infobox}}{{#invoke:Is infobox in lead|main|[Ii]nfobox middle school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox high school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox School2}}{{#invoke:Is infobox in lead|main|[Ii]nfobox HighSchool}}{{#invoke:Is infobox in lead|main|[Ss]chool}}|{{#invoke:Type in location|main|<!-- ===Type logic=== No refs, brs or templates-->{{#ifexpr:{{#invoke:String|len|{{#invoke:String|match|s={{delink|1={{{type}}}}}|pattern=[^<{;]*|nomatch=}}}} < 40|{{#invoke:String2|sentence|{{trim|{{#invoke:String|match|s={{delink|1={{{type}}}}}|pattern=[^<{;]*|nomatch=}}<!-- Add school to end--> {{#switch:{{#invoke:String|match|s={{#invoke:String|match|s= {{delink|1={{{type}}}}}|pattern=[^<{;]*|nomatch=}}|pattern=[%a%d]*%s?$|nomatch=}} |college |school |academy |College |School |Academy= |#default = school }}}}}}|School}}<!-- ===Location logic=== -->|{{comma separated entries | 1 = {{#if:{{{city|}}}|{{{city|}}}}} | 2 = {{#if:{{{county|}}}|{{{county}}}}} | 3 = {{#if:{{{state|}}}|{{{state}}}}} | 4 = {{#if:{{{province|}}}|{{{province}}}}} | 5 = {{#if:{{{country|}}}|{{#ifexist:Template:Country data {{{country}}}|{{Getalias|{{{country}}}}}|{{{country}}}}}}} }}|check-patterns = [Ss]chool;[Cc]ollege;[Aa]cademy;|full-loc=yes}}}}|pattern='"`uniq%-%-ref%-%d*%-qinu`"'|replace=|plain= false }}}}<noinclude>{{documentation|content={{lua|Module:String|Module:Is infobox in lead}} This template is used for generating a short description for Infobox school.}}</noinclude> acd568d953a92004b465ae1f9c0e6c0bc5c7724b Template:Script/Arabic 10 1597 2932 2021-04-22T15:49:22Z w>Great Brightstar 0 Add new parameter wikitext text/x-wiki {{{{{|safesubst:}}}ifsubst|1=|2=<templatestyles src="Script/styles_arabic.css" />}}<span class="script-arabic script-Arab" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#ifeq: {{{no_rtl_mark|+}}} | {{{no_rtl_mark|-}}}||dir="rtl"}} style="font-size: {{{size|125%}}}; {{{style|}}}" {{{attributes|}}}>{{{1}}}</span>{{#ifeq: {{{no_rtl_mark|+}}} | {{{no_rtl_mark|-}}}||&lrm;}}<noinclude>{{documentation}}</noinclude> 3a58c5f3d4a69db622440a76ed4b489dfe3fdbfe Template:Lua sidebar/styles.css 10 1067 2332 2021-04-24T04:27:37Z wikipedia>Izno 0 max-width sanitized-css text/css .lua-sidebar { width: auto; max-width: 22em; } 9984d36eb49fae70dd00527c993784d775409a6b Template:Fraction 10 1551 2886 2021-04-27T19:20:10Z w>Izno 0 use TemplateStyles for all fraction, not just sr implementation wikitext text/x-wiki <templatestyles src="Fraction/styles.css" /><span class="frac" role="math">{{#if:{{{3|}}}<!-- if 3 -->|{{{1}}}<span class="sr-only">+</span><span class="num">{{{2}}}</span>&frasl;<span class="den">{{{3}}}</span><!-- then 1 2/3 -->|{{#if:{{{2|}}}<!-- elseif 2 -->|<span class="num">{{{1}}}</span>&frasl;<span class="den">{{{2}}}</span><!-- then 1/2 -->|{{#if:{{{1|}}}<!-- elseif 1 -->|<span class="num">1</span>&frasl;<span class="den">{{{1}}}</span><!-- then 1/1 -->|&frasl;<!-- else 0, a slash -->}}<!-- endif 1 -->}}<!-- endif 2 -->}}<!-- endif 3 --></span><noinclude> {{documentation}} </noinclude> 32779636568aafb8675c6d968dc449c4f12ecdb2 Module:Citation/CS1/Whitelist/doc 828 889 1968 2021-04-28T15:24:37Z wikipedia>Izno 0 match text wikitext text/x-wiki {{#lst:Module:Citation/CS1/doc|header}} This module contains a list of all parameters that [[Module:Citation/CS1]] knows about. Each parameter is assigned a state. * '''true''': These parameters are valid and supported parameters * '''false''': These parameters are deprecated but still supported * '''{{'}}tracked{{'}}''': These parameters are valid and supported parameters tracked in an eponymous properties category. * '''nil''': Parameters not present are not supported, or no longer supported. The <code>basic_arguments</code> table is supported by all templates. {{#lst:Module:Citation/CS1/doc|module_components_table}} f600e3ad575307e19afcbe7dc3e978954fa94a9f Template:Transwiki guide 10 587 1322 2021-05-02T22:04:59Z wikipedia>DB1729 0 Reverted 1 edit by [[Special:Contributions/154.154.69.110|154.154.69.110]] ([[User talk:154.154.69.110|talk]]) to last revision by Mr. Stradivarius wikitext text/x-wiki {{ombox |style=border:#38C400 1px solid; |image=[[File:Edit-copy purple-wikit.svg|48px|alt=|link=]] |text={{{text|This project or template has a [[Help:Transwiki guide|transwiki guide]] to help editors adapt it to a remote wiki when this cannot be done by simply copying the codes of one single template.<br/>See {{#if:{{{1|}}}|[[{{{1}}}]]|[[{{FULLPAGENAME}}/Transwiki guide]]}} for instructions.}}} |small={{{small|}}} }}<includeonly>[[Category:Transwiki guide|{{{2|{{PAGENAME}}}}}]]</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> c25c9124a8e52dcec5a026adb2cc071776579ab7 Module:If preview/configuration 828 455 2558 2021-05-05T18:56:00Z w>Izno 0 Protected "[[Module:If preview/configuration]]": match parent ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain --[[ We perform the actual check for whether this is a preview here since preprocessing is relatively expensive. ]] local frame = mw.getCurrentFrame() local function is_preview() local revision_id = frame:preprocess('{{REVISIONID}}') -- {{REVISIONID}} is usually the empty string when previewed. -- I don't know why we're checking for nil but hey, maybe someday things -- would have broken return revision_id == nil or revision_id == '' end local function templatestyles() return frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:If preview/styles.css' } } end return { preview = is_preview(), templatestyles = templatestyles(), warning_infrastructure = '%s<div class="preview-warning"><strong>Preview warning:</strong> %s</div>', missing_warning = 'The template has no warning text. Please add a warning.' } 3edc8897c51a61b9e710b2a4d9eb657b3c2f1034 Module:If preview/styles.css 828 456 2559 2021-05-05T18:56:47Z w>Izno 0 pp sanitized-css text/css /* {{pp|small=yes}} */ .preview-warning { font-style: italic; /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; color: red; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .preview-warning + link + .preview-warning { margin-top: -0.5em; } 8b79ffc4853d424a805b084de00030e04bbd573e Module:If preview 828 453 2557 2021-05-05T19:01:42Z w>Izno 0 merge in functionality from [[Module:Preview warning]] and add TemplateStyles, remove p.boolean as not necessary, move some stuff into a cfg page, and don't return temporaries in p.main, remove use Scribunto text/plain local p = {} local cfg = mw.loadData('Module:If preview/configuration') --[[ main This function returns either the first argument or second argument passed to this module, depending on whether the page is being previewed. ]] function p.main(frame) if cfg.preview then return frame.args[1] or '' else return frame.args[2] or '' end end --[[ pmain This function returns either the first argument or second argument passed to this module's parent (i.e. template using this module), depending on whether it is being previewed. ]] function p.pmain(frame) return p.main(frame:getParent()) end local function warning_text(warning) return mw.ustring.format( cfg.warning_infrastructure, cfg.templatestyles, warning ) end function p._warning(args) local warning = args[1] and args[1]:match('^%s*(.-)%s*$') or '' if warning == '' then return warning_text(cfg.missing_warning) end if not cfg.preview then return '' end return warning_text(warning) end --[[ warning This function returns a "preview warning", which is the first argument marked up with HTML and some supporting text, depending on whether the page is being previewed. disabled since we'll implement the template version in general ]] --function p.warning(frame) -- return p._warning(frame.args) --end --[[ warning, but for pass-through templates like {{preview warning}} ]] function p.pwarning(frame) return p._warning(frame:getParent().args) end return p 9a92196d0001b8016f2501aedfadcc3adcb974ef Module:Parameter validation/default config 828 1253 2587 2021-05-06T23:30:07Z w>Izno 0 add dependency to if preview Scribunto text/plain function create(cat, msg) return mw.ustring.format("{{main other|[[Category:Pages using tname_naked with %s parameters]]}}", cat) .. create_message(msg) end function create_message(msg) return require('Module:If preview')._warning({ mw.ustring.format("[[templatename]] used with %s.", msg) }) end local options = { ["undeclared"] = create("unknown", 'unknown parameter(s): paramname'), ["deprecated"] = create("deprecated", 'deprecated parameter(s): paramname'), ["duplicate"] = create("duplicate", 'duplicate parameter(s): paramandvalue'), ["doc-subpage"] = "doc", } local result = { [0] = options, [2] = options, [4] = options, [6] = options, [10] = options, [12] = options, [14] = options, } return result d0fc6166846893f2e0723a5fb53a574cd393a047 Template:Country data Finland 10 1208 2537 2021-05-07T07:41:42Z w>Skjoldbro 0 air force wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Finland | flag alias = Flag of Finland.svg | flag alias-grand duchy = Flag of Russia.svg | flag alias-1809 = Flag of Russia.svg | flag alias-1917 = Flag of Finland 1918 (state).svg | flag alias-1918 = Flag of Finland (1918-1920).svg | flag alias-1920 = Flag of Finland.svg | flag alias-state = Flag of Finland (state).svg | flag alias-state-1918 = Flag of Finland 1918-1920 (State).svg | flag alias-state-1920 = Flag of Finland 1920-1978 (State).svg | flag alias-naval = Military Flag of Finland.svg | border-naval = | flag alias-naval-1918 = Flag of Finland 1918-1920 (Military).svg | border-naval-1918 = | flag alias-naval-1920 = Flag of Finland 1920-1978 (Military).svg | border-naval-1920 = | link alias-naval = Finnish Navy | flag alias-navy = Naval Jack of Finland.svg | link alias-navy = Finnish Navy | link alias-air force = Finnish Air Force | link alias-army = Finnish Army | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = grand duchy | var2 = 1809 | var3 = 1917 | var4 = 1918 | var5 = 1920 | var6 = state | var7 = state-1918 | var8 = state-1920 | var9 = naval-1918 | var10 = naval-1920 | redir1 = FIN | related1 = Åland </noinclude> }} 2b032fd45283601b72bcda96d62ac73a3218f5ec Module:Check for clobbered parameters 828 1234 2568 2021-05-07T15:16:54Z w>Izno 0 use if preview Scribunto text/plain local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end function p.check(frame) local args = frame.args local pargs = frame:getParent().args local checknested = isnotempty(args['nested']) local delimiter = isnotempty(args['delimiter']) and args['delimiter'] or ';' local argpairs = {} for k, v in pairs(args) do if type(k) == 'number' then local plist = mw.text.split(v, delimiter) local pfound = {} local count = 0 for ii, vv in ipairs(plist) do vv = trim(vv) if checknested and pargs[vv] or isnotempty(pargs[vv]) then count = count + 1 table.insert(pfound, vv) end end if count > 1 then table.insert(argpairs, pfound) end end end local warnmsg = {} local res = '' local cat = '' if args['cat'] and mw.ustring.match(args['cat'],'^[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:') then cat = args['cat'] end local template = args['template'] and ' in ' .. args['template'] or '' if #argpairs > 0 then for i, v in ipairs( argpairs ) do table.insert( warnmsg, mw.ustring.format( 'Using more than one of the following parameters%s: <code>%s</code>.', template, table.concat(v, '</code>, <code>') ) ) if cat ~= '' then res = res .. '[[' .. cat .. '|' .. (v[1] == '' and ' ' or '') .. v[1] .. ']]' end end end if #warnmsg > 0 then res = require('Module:If preview')._warning({ table.concat(warnmsg, '<br>') }) .. res end return res end return p 2d18fb6802fa261d88a0e135ab147ab9f062acde Module:Parameter validation 828 1252 2586 2021-05-08T15:21:49Z w>ProcrastinatingReader 0 doc was moved into actual doc page Scribunto text/plain local util = { empty = function( s ) return s == nil or type( s ) == 'string' and mw.text.trim( s ) == '' end , extract_options = function ( frame, optionsPrefix ) optionsPrefix = optionsPrefix or 'options' local options, n, more = {} if frame.args['module_options'] then local module_options = mw.loadData( frame.args['module_options'] ) if type( module_options ) ~= 'table' then return {} end local title = mw.title.getCurrentTitle() local local_ptions = module_options[ title.namespace ] or module_options[ title.nsText ] or {} for k, v in pairs( local_ptions ) do options[k] = v end end repeat ok, more = pcall( mw.text.jsonDecode, frame.args[optionsPrefix .. ( n or '' )] ) if ok and type( more ) == 'table' then for k, v in pairs( more ) do options[k] = v end end n = ( n or 0 ) + 1 until not ok return options end , build_namelist = function ( template_name, sp ) local res = { template_name } if sp then if type( sp ) == 'string' then sp = { sp } end for _, p in ipairs( sp ) do table.insert( res, template_name .. '/' .. p ) end end return res end , table_empty = function( t ) -- normally, test if next(t) is nil, but for some perverse reason, non-empty tables returned by loadData return nil... if type( t ) ~= 'table' then return true end for a, b in pairs( t ) do return false end return true end , } local function _readTemplateData( templateName ) local title = mw.title.makeTitle( 0, templateName ) local templateContent = title and title.exists and title:getContent() -- template's raw content local capture = templateContent and mw.ustring.match( templateContent, '<templatedata%s*>(.*)</templatedata%s*>' ) -- templatedata as text -- capture = capture and mw.ustring.gsub( capture, '"(%d+)"', tonumber ) -- convert "1": {} to 1: {}. frame.args uses numerical indexes for order-based params. local trailingComma = capture and mw.ustring.find( capture, ',%s*[%]%}]' ) -- look for ,] or ,} : jsonDecode allows it, but it's verbotten in json if capture and not trailingComma then return pcall( mw.text.jsonDecode, capture ) end return false end local function readTemplateData( templateName ) if type( templateName ) == 'string' then templateName = { templateName, templateName .. '/' .. docSubPage } end if type( templateName ) == "table" then for _, name in ipairs( templateName ) do local td, result = _readTemplateData( name ) if td then return result end end end return nil end -- this is the function to be called by other modules. it expects the frame, and then an optional list of subpages, e.g. { "Documentation" }. -- if second parameter is nil, only tempalte page will be searched for templatedata. function calculateViolations( frame, subpages ) -- used for parameter type validy test. keyed by TD 'type' string. values are function(val) returning bool. local type_validators = { ['number'] = function( s ) return mw.language.getContentLanguage():parseFormattedNumber( s ) end } function compatible( typ, val ) local func = type_validators[typ] return type( func ) ~= 'function' or util.empty( val ) or func( val ) end local t_frame = frame:getParent() local t_args, template_name = t_frame.args, t_frame:getTitle() template_name = mw.ustring.gsub( template_name, '/sandbox', '', 1 ) local td_source = util.build_namelist( template_name, subpages ) if frame.args['td_source'] then table.insert(td_source, frame.args['td_source']) end local templatedata = readTemplateData( td_source ) local td_params = templatedata and templatedata.params local all_aliases, all_series = {}, {} if not td_params then return { ['no-templatedata'] = { [''] = '' } } end -- from this point on, we know templatedata is valid. local res = {} -- before returning to caller, we'll prune empty tables -- allow for aliases for x, p in pairs( td_params ) do for y, alias in ipairs( p.aliases or {} ) do p['primary'] = x td_params[x] = p all_aliases[alias] = p if tonumber(alias) then all_aliases[tonumber(alias)] = p end end end -- handle undeclared and deprecated local already_seen = {} local series = frame.args['series'] for p_name, value in pairs( t_args ) do local tp_param, noval, numeric, table_name = td_params[p_name] or all_aliases[p_name], util.empty( value ), tonumber( p_name ) local hasval = not noval if not tp_param and series then -- 2nd chance. check to see if series for s_name, p in pairs(td_params) do if mw.ustring.match( p_name, '^' .. s_name .. '%d+' .. '$') then -- mw.log('found p_name '.. p_name .. ' s_name:' .. s_name, ' p is:', p) debugging series support tp_param = p end -- don't bother breaking. td always correct. end end if not tp_param then -- not in TD: this is called undeclared -- calculate the relevant table for this undeclared parameter, based on parameter and value types table_name = noval and numeric and 'empty-undeclared-numeric' or noval and not numeric and 'empty-undeclared' or hasval and numeric and 'undeclared-numeric' or 'undeclared' -- tzvototi nishar. else -- in td: test for deprecation and mistype. if deprecated, no further tests table_name = tp_param.deprecated and hasval and 'deprecated' or tp_param.deprecated and noval and 'empty-deprecated' or not compatible( tp_param.type, value ) and 'incompatible' or not series and already_seen[tp_param] and hasval and 'duplicate' if hasval and table_name ~= 'duplicate' then already_seen[tp_param] = p_name end end -- report it. if table_name then res[table_name] = res[table_name] or {} if table_name == 'duplicate' then local primary_param = tp_param['primary'] local primaryData = res[table_name][primary_param] if not primaryData then primaryData = {} table.insert(primaryData, already_seen[tp_param]) end table.insert(primaryData, p_name) res[table_name][primary_param] = primaryData else res[table_name][p_name] = value end end end -- check for empty/missing parameters declared "required" for p_name, param in pairs( td_params ) do if param.required and util.empty( t_args[p_name] ) then local is_alias for _, alias in ipairs( param.aliases or {} ) do is_alias = is_alias or not util.empty( t_args[alias] ) end if not is_alias then res['empty-required'] = res['empty-required'] or {} res['empty-required'][p_name] = '' end end end mw.logObject(res) return res end -- wraps report in hidden frame function wrapReport(report, template_name, options) mw.logObject(report) if util.empty( report ) then return '' end local naked = mw.title.new( template_name )['text'] naked = mw.ustring.gsub(naked, 'Infobox', 'infobox', 1) report = ( options['wrapper-prefix'] or "<div class = 'paramvalidator-wrapper'><span class='paramvalidator-error'>" ) .. report .. ( options['wrapper-suffix'] or "</span></div>" ) report = mw.ustring.gsub( report, 'tname_naked', naked ) report = mw.ustring.gsub( report, 'templatename', template_name ) return report end -- this is the "user" version, called with {{#invoke:}} returns a string, as defined by the options parameter function validateParams( frame ) local options, report, template_name = util.extract_options( frame ), '', frame:getParent():getTitle() local ignore = function( p_name ) for _, pattern in ipairs( options['ignore'] or {} ) do if mw.ustring.match( p_name, '^' .. pattern .. '$' ) then return true end end return false end local replace_macros = function( error_type, s, param_names ) function concat_and_escape( t , sep ) sep = sep or ', ' local s = table.concat( t, sep ) return ( mw.ustring.gsub( s, '%%', '%%%%' ) ) end if s and ( type( param_names ) == 'table' ) then local k_ar, kv_ar = {}, {} for k, v in pairs( param_names ) do table.insert( k_ar, k ) if type(v) == 'table' then v = table.concat(v, ', ') end if error_type == 'duplicate' then table.insert( kv_ar, v) else table.insert( kv_ar, k .. ': ' .. v) end end s = mw.ustring.gsub( s, 'paramname', concat_and_escape( k_ar ) ) s = mw.ustring.gsub( s, 'paramandvalue', concat_and_escape( kv_ar, ' AND ' ) ) if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) ~= "" then s = mw.ustring.gsub( s, "<div.*<%/div>", "", 1 ) end end return s end local report_params = function( key, param_names ) local res = replace_macros( key, options[key], param_names ) res = frame:preprocess(res or '') report = report .. ( res or '' ) return res end -- no option no work. if util.table_empty( options ) then return '' end -- get the errors. local violations = calculateViolations( frame, options['doc-subpage'] ) -- special request of bora: use skip_empty_numeric if violations['empty-undeclared-numeric'] then for i = 1, tonumber( options['skip-empty-numeric'] ) or 0 do violations['empty-undeclared-numeric'][i] = nil end end -- handle ignore list, and prune empty violations - in that order! local offenders = 0 for name, tab in pairs( violations ) do -- remove ignored parameters from all violations for pname in pairs( tab ) do if ignore( pname ) then tab[pname] = nil end end -- prune empty violations if util.table_empty( tab ) then violations[name] = nil end -- WORK IS DONE. report the errors. -- if report then count it. if violations[name] and report_params( name, tab ) then offenders = offenders + 1 end end if offenders > 1 then report_params( 'multiple' ) end if offenders ~= 0 then report_params( 'any' ) end -- could have tested for empty( report ), but since we count them anyway... return wrapReport(report, template_name, options) end return { ['validateparams'] = validateParams, ['calculateViolations'] = calculateViolations, ['wrapReport'] = wrapReport } 289097a36b9577156e033783df8886344de39bba Module:Convert/helper 828 1411 2746 2021-05-11T13:58:57Z w>Izno 0 remove visualhide version Scribunto text/plain -- This module provides some functions to prepare template parameters -- for use with Template:Convert. -- This module is not used by Template:Convert or Module:Convert. local function stripToNil(text) -- If text is a non-empty string, return its trimmed content, -- otherwise return nothing (empty string or not a string). if type(text) == 'string' then return text:match('(%S.-)%s*$') end end -- Remove commas and references (any strip markers) from a number. -- First usage in Template:Infobox_UK_place/dist (June 2018) local function cleanNumber(frame) local args = frame.args local text = stripToNil(args[1]) or '' if text == '' or tonumber(text) then return text end return mw.text.killMarkers(text):gsub(',', '') end -- Format regular input with fraction (MOS-confirmant) into Convert-format "12+3/8" ("+" added). -- First usage in Template:NFL_predraft (August 2017) local function number(frame) --[[ Preprocess a template parameter to translate a number to be used as input for {{convert}}. {{#invoke:convert/helper|number|12 3/8}} → 12+3/8 Input Output 12 12 12 3/8 12+3/8 {{frac|12|3|8}} 12+3/8 12{{frac|3|8}} 12+3/8 12⅜ 12+3/8 Template:Fraction redirects to Template:Frac so either may be used in the input. ]] local args = frame.args local text = stripToNil(args[1]) or '' if text == '' or tonumber(text) then return text -- examples: '', '12', '12.3', '12.3e4', or negative end text = text:gsub('&nbsp;', ' '):gsub(' +', ' '):gsub(' *%+ *', '+'):gsub('&frasl;', '/'):gsub('⁄', '/') local integer, numerator, denominator, rest -- Look for a fraction of form '12 3/8' or '12+3/8' or '3/8'. integer, numerator, denominator = text:match('^(%d+)[ +](%d+)/(%d+)$') if integer then return integer .. '+' .. numerator .. '/' .. denominator end numerator, denominator = text:match('^(%d+)/(%d+)$') if numerator then return numerator .. '/' .. denominator end -- Look for an expanded fraction such as the result of {{frac|12|3|8}} or 12{{frac|3|8}} or {{frac|3|8}}. numerator, denominator = text:match('<sup>(%d+)</sup>/<sub>(%d+)</sub></span>') if numerator then integer = text:match('(%d+)<span class="sr-only">') or text:match('^(%d+)%s*&#x200B;<span') or -- Template:Frac outputs zwsp since December 2017 text:match('^(%d+)%s*<span') return (integer and (integer .. '+') or '') .. numerator .. '/' .. denominator end -- Look for a fraction of form '12¾' or '¾'. local fractions = { ['½'] = '1/2', ['⅓'] = '1/3', ['⅔'] = '2/3', ['¼'] = '1/4', ['¾'] = '3/4', ['⅛'] = '1/8', ['⅜'] = '3/8', ['⅝'] = '5/8', ['⅞'] = '7/8', } integer, rest = text:match('^(%d*)%s*(.*)') local expand = fractions[rest] if expand then return (integer == '' and integer or (integer .. '+')) .. expand end return text end return { number = number, cleanNumber = cleanNumber, } 4957c76eda25bacea18a2116722dca57131580d5 Template:Cnote2 End 10 1601 2936 2021-05-13T11:49:22Z w>WOSlinker 0 re-order noincluded tags wikitext text/x-wiki <noinclude><div><ol></noinclude></ol></div><noinclude> {{Documentation}} </noinclude> b0e1cb6018b2c6cdab0c447b54c801bf3ed6dc72 Template:Glossary end 10 622 1402 2021-05-14T06:45:23Z wikipedia>ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ 0 Balance tag using noinclude to remove page from Linter report wikitext text/x-wiki <noinclude><dl></noinclude></dl><!--end glossary--><noinclude> {{Documentation|Template:Glossary/doc}}<!--Categories go in the /doc subpage.--> </noinclude> ed16ee7194c9e6e05c38ab0d43496928c52bc915 Template:Endflatlist 10 1055 2308 2021-05-14T06:57:00Z wikipedia>WOSlinker 0 fix lint wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{documentation|Template:Flatlist/doc}} </noinclude> 05fe2bc6790622a0a6caf09151a0c0640fed63dd Template:Endplainlist 10 611 1380 2021-05-14T07:01:30Z wikipedia>WOSlinker 0 fix lint wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{documentation|Template:Plainlist/doc}} </noinclude> d545c41582328dd4f197e2b1848c8ad7392b92e0 Template:Term 10 623 1404 2021-05-15T23:58:30Z wikipedia>Sbb 0 Added "noid=" parameter to suppress creation of "id=" wikitext text/x-wiki <dt class="glossary {{{class|}}}" {{#if: {{{noid|}}}||id="{{#invoke:delink|delink|{{#invoke:String|replace|source={{lc:{{{id|{{{term|{{{1}}}}}}}}}}}|"|<!--blank to strip out double quote mark-->}}}}"}} style="{{#if:{{{multi|}}}|margin-top: -0.2em;|margin-top: 0.4em; {{{style|}}}}}">{{#if:{{{nondefining|}}}||<dfn class="glossary">}}{{{content|{{{2|{{{term|{{{1}}}}}}}}}}}}{{#if:{{{nondefining|}}}||</dfn>}}</dt><noinclude> {{Documentation}} </noinclude> c13cf2ed1b2adb71abf978313b6bfe8f1e58d7ef Template:Visible anchor/styles.css 10 1244 2578 2021-05-18T04:27:30Z Pppery 6 Adding protection template sanitized-css text/css /* {{pp-template}} */ .vanchor > :target ~ .vanchor-text { background-color: #b1d2ff; } 0bc96886f41e0799b8dbfa48836892c2bb7de792 Template:Infobox musical artist/color 10 1373 2708 2021-05-23T01:54:23Z w>Jonesey95 0 re-disable coloring per [[MOS:COLOR]] accessibility guideline and discussion at talk page wikitext text/x-wiki <includeonly>{{#switch: {{{1|}}} <!--| solo_singer = &#35;f0e68c <!-- khaki --> <!--| non_vocal_instrumentalist = &#35;f4bf92 <!-- unnamed pale orange --> <!--| non_performing_personnel = &#35;bfe0bf <!-- unnamed pale green --> <!--| group_or_band = &#35;b0c4de <!-- lightsteelblue --> <!--| classical_ensemble = &#35;b0e0e6 <!-- PowderBlue --> <!--| temporary = &#35;d3d3d3 <!-- LightGrey --> | &#35;b0c4de }}</includeonly><noinclude> {{documentation}} </noinclude> ae2ea5c9efb77ed141edfca8b0ed3cb2041d6acf Template:En dash range 10 168 389 2021-05-25T11:47:03Z wikipedia>GKFX 0 Use module:plain text directly wikitext text/x-wiki {{{1}}}{{#ifeq:{{#invoke:String|find|source={{#invoke:Plain text|main|{{{1}}}{{{2}}}}}|target=[%s–—-]|plain=false}}|0|–|&nbsp;–&#32;}}{{{2}}}<noinclude> {{Documentation}} </noinclude> 4f0bde90a2efc3a10317f528ce19b0e0fd212808 Template:GeoTemplate/styles.css 10 1689 3149 2021-05-25T16:38:27Z wikipedia>Dennis Bratland 0 Reverted 1 edit by [[Special:Contributions/5.251.174.129|5.251.174.129]] ([[User talk:5.251.174.129|talk]]) to last revision by Jc86035 sanitized-css text/css .geoservices tr:nth-child(odd) { background: #f0f0f0; } 1202731d4eca686823cf4e9af4933104fe73ccb6 Template:Wikipedia how-to 10 146 341 2021-05-26T12:15:05Z wikipedia>PK2 0 bypassing redirects wikitext text/x-wiki {{ombox | type = notice | style = {{#if:{{{style|}}} |margin:0 auto;width:80%;{{{style}}} }} | image = [[File:Twemoji 1f527.svg|30x30px]] | imageright = {{#if:{{{shortcut|{{{shortcut1|{{{sc1|{{{1<includeonly>|</includeonly>}}}}}}}}}}}} |{{Shortcut|{{{shortcut|{{{shortcut1|{{{sc1|{{{1}}}}}}}}}}}}|{{{shortcut2|{{{sc2|{{{2|}}}}}}}}}||{{{shortcut3|{{{sc3|{{{3|}}}}}}}}}|{{{shortcut4|{{{sc4|{{{4|}}}}}}}}}||{{{shortcut5|{{{sc5|{{{5|}}}}}}}}}<noinclude>|category=no</noinclude>}} }} | text = <div style="padding-top: 6px; padding-bottom: 5px;">'''This help page is a [[Wikipedia:Project namespace#Wikipedia how-to and information pages|how-to guide]].'''<br><div style="font-size: 90%;">It details processes or procedures of <!-- -->{{#if:{{{page|{{{pages|{{{interprets|}}}}}}}}} | <!--doesn't handle multiple items--> {{#ifexist:{{{page|{{{pages|{{{interprets}}}}}}}}} |[[{{{page|{{{pages|{{{interprets}}}}}}}}}]] |{{{page|{{{pages|{{{interprets}}}}}}}}}}} | some aspect(s) of Wikipedia's norms and practices }}. It is not one of [[Wikipedia:Policies and guidelines|Wikipedia's policies or guidelines]], and may reflect varying levels of [[Wikipedia:Consensus|consensus]] and [[Wikipedia:Consensus#Achieving consensus|vetting]].</div></div> }}{{#if: {{{nocat|{{{demo|}}}}}}||<includeonly>{{Namespace detect | wikipedia = {{{category|[[Category:Wikipedia how-to|{{#if:{{{sort-by|}}}|{{{sort-by}}}|{{PAGENAME}}}}]]}}} | help = {{{category|[[Category:Wikipedia how-to|{{#if:{{{sort-by|}}}|{{{sort-by}}}|{{PAGENAME}}}}]]}}} | user = [[Category:User essays]]{{{category|}}} }} </includeonly>}}<noinclude> {{Documentation|content= {{Information page/doc |howto=y}} }} </noinclude> f95ec6e4a0105cd44573344bb11ca768408c3862 Template:Markup/row 10 582 1312 2021-05-27T17:27:33Z wikipedia>Altercari 0 changing background colour to match <pre> wikitext text/x-wiki <noinclude>{| style="border-width:medium;"</noinclude><includeonly>{{#if:{{{c1|value}}}|&#32; {{!-}} {{!}}style{{=}}"background:#f8f9fa ; border:1px solid #eaecf0 ; padding:9px 5px 5px; vertical-align:top;"{{!}} <!-- -->{{#tag:pre |{{{c1|[markup]}}}|style="margin:0;border:none;padding:0; word-wrap:break-word; white-space:-moz-pre-wrap;white-space:-o-pre-wrap;white-space:-pre-wrap;white-space:pre-wrap; {{{c1style|}}}"}} {{!}}style{{=}}"background:#f8f9fa ; border:1px solid #eaecf0 ; padding:5px; vertical-align:top;"{{!}} <!-- --><div style="{{{c2style|}}}"> {{{c2|[''rendering'']}}} </div> }}</includeonly><!-- --><noinclude> |- |style="border-width:1px;border-style:solid none none none;border-color:#ddd; padding:5px; vertical-align:text-top;"| |style="border-width:1px;border-style:solid none none none;border-color:#ddd; padding:5px; vertical-align:text-top;"| |- |}</noinclude> 2636425c7478cebf61528d5eb4cab52b8e695ec9 Module:Category see also 828 1582 2917 2021-06-02T21:14:44Z w>Fayenatic london 0 better without the colon before "the categories" Scribunto text/plain -- This module implements {{Category see also}} local mHatnote = require('Module:Hatnote') local p = {} local function makeWikitextError(msg) return string.format( '<strong class="error">Error: %s ([[Template:Category see also]])</strong>', msg ) end -- Gets the length of the sequence seq. Usually this should be done with the # -- operator, but we need to work with tables that get their values through an -- __index metamethod. local function getSequenceLength(seq) local length = 0 for i in ipairs(seq) do length = i end return length end -- Given a table of options, returns a function that formats categories for -- those options. -- -- Options: -- project - a project code such as "fr" (for the French Wikipedia) -- showPrefix - a boolean value for whether to show the "Category:" prefix -- (and the project prefix if specified) -- -- This is implemented as a function generator rather than a simple function -- so that we can just process the options once, instead of every time we -- generate a category. local function newCategoryLinker(options) local formatString if options.project then if options.showPrefix then formatString = '[[:' .. options.project .. ':Category:%s]]' else formatString = '[[:' .. options.project .. ':Category:%s|%s]]' end else if options.showPrefix then formatString = '[[:Category:%s]]' else formatString = '[[:Category:%s|%s]]' end end return function (category) local title = mw.title.new(category) local pageName, display if not title then -- category is not a valid title, usually because of invalid -- characters like < or [. Raise an error and suppress the stack -- level information so that we can catch it and format the error -- message as wikitext. error(string.format( "'%s' is not a valid category name", category ), 0) elseif title.namespace == 14 then -- Category namespace pageName = title.text display = title.text else pageName = title.prefixedText display = category end -- We can get away with using two arguments even when -- options.showDisplay is false, as string.format ignores extra -- arguments as long as there is an argument for each flag in the -- format string. return formatString:format(pageName, display) end end function p._main(args) local nLinks = getSequenceLength(args) if nLinks < 1 then return makeWikitextError('at least one parameter required') end local makeCategoryLink = newCategoryLinker{ project = args.project, showPrefix = nLinks == 1, } local links = {} for i, cat in ipairs(args) do local success, categoryLink = pcall(makeCategoryLink, cat) if success then links[i] = categoryLink else -- If there was an error, then categoryLink is the error message. return makeWikitextError(categoryLink) end end local formatString if nLinks == 1 then formatString = '%s: %s' else formatString = '%s the categories %s' end -- Don't output a comma before the "and" if we have only two links. local conjunction if nLinks == 2 then conjunction = ' and ' else conjunction = ', and ' end local hatnoteText = formatString:format( args.LABEL or 'See also', mw.text.listToText(links, ', ', conjunction) ) return mHatnote._hatnote(hatnoteText, {selfref = true}) end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Category see also', }) return p._main(args) end return p c169a2ec75b2cf75797fd60734063ae10cb9e6df Template:Category link with count 10 67 129 2021-06-11T18:13:44Z wikipedia>GKFX 0 Support wider range of (valid) input format wikitext text/x-wiki [[:Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|<!-- -->{{#if:{{{name|}}}|{{{name}}}|Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}}}<!-- -->]]&nbsp;({{PAGESINCATEGORY:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|{{{2|all}}}}})<noinclude> {{Documentation}} </noinclude> f93f1540b8c157703bd6d24ae35c35bef745981d Template:Spaced en dash 10 1027 2252 2021-06-13T13:09:03Z wikipedia>Plastikspork 0 [[Wikipedia:Templates for discussion/Log/2021 June 5#Template:Spaced en dash]] closed as keep ([[WP:XFDC#4.0.12|XFDcloser]]) wikitext text/x-wiki &nbsp;&ndash;&#32;<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 235afe8e7aca71d984c1bba5d8c96db414594b53 Template:Min 10 1372 2707 2021-06-13T13:59:10Z w>Plastikspork 0 Add safesubst: wikitext text/x-wiki <includeonly>{{safesubst:#invoke:Math|min}}</includeonly><noinclude> {{Documentation}} </noinclude> bff49f508be41713bee8292bdec4f87351d8bf66 Template:Str find 10 1449 2784 2021-06-13T14:13:03Z w>Plastikspork 0 Add safesubst: wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:String|str_find|source={{{1|}}}|{{{2|}}}}}<noinclude> {{documentation}}</noinclude> 7d00c28a988f56cba96c826e8c50fff28d8e1a28 Template:Campaignbox 10 1496 2831 2021-06-14T01:38:04Z w>Plastikspork 0 Undid revision 1028444717 by [[Special:Contributions/Mathglot|Mathglot]] ([[User talk:Mathglot|talk]]) It's already there! wikitext text/x-wiki <includeonly>{{Military navigation |name = {{#if:{{{raw_name|}}} |{{{raw_name|}}} |{{#if:{{{title|}}} |{{{name|}}} |}} }} |state = {{{state|}}} |border = {{{border|}}} |title = <span style="line-height:1.6em">{{#if:{{{title|}}}|{{{title}}}|{{{name}}}}}</span> |bodyclass = {{{bodyclass|}}} |listclass = {{{listclass|}}} |list1 = {{{battles|}}} |below = {{{notes|}}} }}{{#ifeq:{{NAMESPACE}}|Template|[[Category:Campaignbox templates]]}}</includeonly><noinclude> {{documentation}} </noinclude> bd5acf07aa1526d63d10975ff20fe9d70de2f838 Template:Infobox settlement/columns 10 1439 2774 2021-06-14T22:57:30Z w>Izno 0 templatestyles wikitext text/x-wiki <templatestyles src="Infobox settlement/columns/styles.css"/> <div class="ib-settlement-cols"> <div class="ib-settlement-cols-row">{{#if:{{{0|}}} |<!-- if 0 -->{{#if:{{{1|}}}{{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}} |<!-- if 0 and (1 or 2 or 3 or 4 or 5) --><div class="ib-settlement-cols-cellt"> {{#if:{{{1|}}}|<div>{{{1}}}</div>}} {{#if:{{{2|}}}|<div>{{{2}}}</div>}} {{#if:{{{3|}}}|<div>{{{3}}}</div>}} {{#if:{{{4|}}}|<div>{{{4}}}</div>}} {{#if:{{{5|}}}|<div>{{{5}}}</div>}} </div> }}<div class="ib-settlement-cols-cellt">{{{0}}}</div> |<!-- if not 0 -->{{#ifexpr:({{#if:{{{1|}}}|1|0}}+{{#if:{{{2|}}}|1|0}}+{{#if:{{{3|}}}|1|0}}+{{#if:{{{4|}}}|1|0}}) > 2 |<!-- if more than two images -->{{#if:{{{1|}}} |<div class="ib-settlement-cols-cell">{{{1}}}</div>{{#if:{{{2|}}}||</div></div><div class="ib-settlement-cols"><!-- TODO: The "3" element case currently produces two div-tables, which is non-optimal, but someone else should figure out how to fix it; 4 and 2 cases output as one "table". --><div class="ib-settlement-cols-row">}} }}{{#if:{{{2|}}} |<div class="ib-settlement-cols-cell">{{{2}}}</div>{{#if:{{{1|}}}||</div></div><div class="ib-settlement-cols"><div class="ib-settlement-cols-row">}} }}</div><div class="ib-settlement-cols-row">{{#if:{{{3|}}} |{{#if:{{{4|}}}||</div></div><div class="ib-settlement-cols"><div class="ib-settlement-cols-row">}}<div class="ib-settlement-cols-cell">{{{3}}}</div> }}{{#if:{{{4|}}} |{{#if:{{{3|}}}||</div></div><div class="ib-settlement-cols"><div class="ib-settlement-cols-row">}}<div class="ib-settlement-cols-cell">{{{4}}}</div> }} |<!-- if two or fewer images -->{{#if:{{{1|}}}|<div class="ib-settlement-cols-cell">{{{1}}}</div>}}<!-- -->{{#if:{{{2|}}}|<div class="ib-settlement-cols-cell">{{{2}}}</div>}}<!-- -->{{#if:{{{3|}}}|<div class="ib-settlement-cols-cell">{{{3}}}</div>}}<!-- -->{{#if:{{{4|}}}|<div class="ib-settlement-cols-cell">{{{4}}}</div>}} }} }}</div></div><noinclude> {{documentation}} </noinclude> bdd926fcf77e5f0f9f899ac6b2e23cd7efc8584e Template:Infobox settlement/columns/styles.css 10 1440 2775 2021-06-14T22:58:40Z w>Izno 0 Protected "[[Template:Infobox settlement/columns/styles.css]]": [[WP:High-risk templates|Highly visible template]]: match parent ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) sanitized-css text/css /* {{pp|small=y}} */ .ib-settlement-cols { text-align: center; display: table; width: 100%; } .ib-settlement-cols-row { display: table-row; } .ib-settlement-cols-cell { display: table-cell; vertical-align: middle; } .ib-settlement-cols-cellt { display: table-cell; vertical-align: top; } 7dbb426d519700a7c47317b5c131244df8fc62f0 Template:Columns-list 10 608 1374 2021-06-15T05:12:03Z wikipedia>Hike395 0 add safesubst wikitext text/x-wiki <includeonly>{{#if:{{{1|}}}|{{{{{|safesubst:}}}#invoke:Template wrapper|wrap|_template=div col|_alias-map=1:content|colwidth=30em}}}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using columns-list with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Columns-list]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | class | content | colwidth | gap | rules | small | style }}<noinclude> {{documentation}} </noinclude> af8bdb75f288fe4d8e225dee6d1fe7cfad8e6a7e Template:Subinfobox bodystyle 10 884 1958 2021-06-23T03:07:17Z wikipedia>Goszei 0 inherit background color wikitext text/x-wiki background-color: transparent; border-collapse:collapse; border-spacing:0px; border:none; width:100%; margin:0px; font-size:100%; clear:none; float:none<noinclude> {{documentation}} </noinclude> 284ca3e8ef640a5762c6cd04c574077c4ec182bb Template:Navbox 10 205 1930 464 2021-06-26T18:05:09Z wikipedia>Trialpears 0 Remove TfD notice as it wouldn't involve any changes to this template. wikitext text/x-wiki <includeonly>{{#invoke:Navbox|navbox}}</includeonly><noinclude> {{Documentation}} </noinclude> fe9b964401f895918ee4fe078678f1722a3c41ec Template:Tracks and uses Wikidata 10 597 1342 2021-06-30T13:54:54Z wikipedia>ExE Boss 0 Use [[Module:Uses Wikidata]] wikitext text/x-wiki <onlyinclude><includeonly>{{sister project |position = {{{position|}}} |image = [[File:Wikidata-logo-without-paddings.svg|30px|class=noviewer|alt=|link=]] |text = This {{module other|module|template}} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] and uses<!-- --> {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see [[#{{{section}}}|§&nbsp;{{{section}}}]] for details.<!-- --> | [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}: {{#invoke:Uses Wikidata|tuProperty}} }} }}{{#switch:{{SUBPAGENAME}}|sandbox|testcases|doc=<!--nocat-->|#default={{#ifeq:{{PAGENAME}}|Uses Wikidata|<!-- -->|{{module other|[[Category:Modules using data from Wikidata]] [[Category:Modules tracking Wikidata]]<!-- -->|{{template other|[[Category:Templates using data from Wikidata]] [[Category:Templates tracking Wikidata]]}} }} }} }}</includeonly></onlyinclude> {{Documentation}} a14be63ad2ca80e80789fd88e86e1340f7e5ef00 Template:Crossreference 10 122 291 2021-07-12T05:56:35Z wikipedia>SMcCandlish 0 clearer code wikitext text/x-wiki <templatestyles src="Crossreference/styles.css" />{{Hatnote inline |1={{{1|{{{text|{{{content|<noinclude>sample content</noinclude>}}}}}}}}} |extraclasses=crossreference {{{class|{{{extraclasses|}}}}}} |selfref={{#if:{{{selfref|{{{printworthy|{{{unprintworthy|}}}}}}}}}||yes}} |inline={{{inline|true}}} }}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> b8ac8a6a83bb08330ba0b9f31a7fcd8567217d0e Template:Hatnote inline 10 125 299 2021-07-12T05:59:40Z wikipedia>SMcCandlish 0 more readable code wikitext text/x-wiki {{Hatnote inline/invoke |1={{{1|{{{text|{{{content}}}}}}}}} |extraclasses={{{class|{{{extraclasses|}}}}}} |selfref={{#if:{{{printworthy|{{{selfref|}}}}}}||yes}} |category={{{category|}}} |inline={{{inline|true}}} }}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 257f3004ea74817011cab7b3bdfd0c87531d7e35 Template:Crossreference/styles.css 10 124 296 2021-07-12T06:50:43Z wikipedia>SMcCandlish 0 Nope, that had no effect at all. sanitized-css text/css /* {{pp-template}} */ /* This snippet just undoes the default "padding-left: 1.6em;" imposed by div.hatnote, when Template:Crossreference is used in block (div) mode. Ignore the dumb CSS editor's "Element (div.crossreference) is overqualified" warning. It is wrong. We do not want to apply any CSS intended for block mode when it is not in block mode. While it's unlikely our "padding-left: 0;" does anything wrong in inline (span) mode, we can't guarantee it forever. */ div.crossreference { padding-left: 0; } ae665603577c5dbafbdf190ec9e29f2ed1f7cd77 Module:Hatnote inline 828 127 303 2021-07-12T17:42:32Z wikipedia>Nihiltres 0 Made substitution fix more specific by limiting to 1 match per substitution-pair Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote-inline -- -- -- -- This module produces hatnote-style links, and links to related articles, -- -- but inside a <span>, instead of the <div> used by Module:Hatnote. It -- -- implements the {{hatnote-inline}} meta-template. -- -------------------------------------------------------------------------------- local mHatnote = require('Module:Hatnote') local mArguments = require('Module:Arguments') local yesno = require('Module:Yesno') local p = {} function p.hatnoteInline (frame) local args = mArguments.getArgs(frame) local hatnote = mHatnote.hatnote(frame) if args.inline == nil or yesno(args.inline, true) then local subs = { ['<div'] = '<span', ['</div>$'] = '</span>' } for k, v in pairs(subs) do hatnote = string.gsub(hatnote, k, v, 1) end end return hatnote end p.hatnote = p.hatnoteInline --alias return p b5000cd7910b7eae23206235b64880a775e4209b Module:Hatnote/styles.css 828 35 65 2021-07-12T19:22:27Z wikipedia>Izno 0 per my talk page text text/plain /* {{pp|small=y}} */ .hatnote { font-style: italic; } /* Limit structure CSS to divs because of [[Module:Hatnote inline]] */ div.hatnote { /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; } .hatnote i { font-style: normal; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .hatnote + link + .hatnote { margin-top: -0.5em; } 44680ffd6e888866df2cdfa0341af9c7b97da94c Template:Cnote2 Begin 10 1600 2935 2021-07-15T11:20:05Z w>ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ 0 Rm redundant interlanguage link wikitext text/x-wiki <div style="<!-- -->{{#if:{{{colwidth|}}}| column-width: {{{colwidth}}}; }}<!-- -->{{#if:{{{1|}}}| column-count: {{{1}}}; }}<!-- -->"><ol class="references" style="list-style-type:{{{liststyle|upper-alpha}}};"><noinclude></ol></div> {{Documentation}} </noinclude> 5ed52f11009c71c09bde1c486e4899c1b0597963 Template:For 10 116 279 2021-07-17T12:58:12Z wikipedia>Plastikspork 0 [[Wikipedia:Templates for discussion/Log/2021 July 8#Template:For]] closed as do not merge ([[WP:XFDC#4.0.12|XFDcloser]]) wikitext text/x-wiki <includeonly>{{#invoke:For|For}}</includeonly><noinclude> {{Documentation}} </noinclude> 3f70c0fa7cd736071e7c6e7dcd90ff3704df26bb Template:About France nav boxes 10 1453 2788 2021-07-18T12:41:29Z w>Excellenc1 0 Added templates wikitext text/x-wiki {{Navbox | title = France template boxes | name = About France nav boxes | state = {{{state|auto}}} | listclass = hlist | group1 = Navboxes | list1 = * {{tl|Prefectures of regions of France}} * {{tl|Prefectures of departments of France}} * {{tl|Regions of France}} * {{tl|Regional Councils (France)}} | group2 = Infoboxes | list2 = * {{tl|Infobox French commune}} * {{tl|Infobox French constituency}} * {{tl|Infobox French place}} * {{tl|Infobox French royalty styles}} }}<noinclude> {{documentation|content = This template is used for template documentation pages, to navigate between similar templates }} [[Category:WikiProject France templates]] [[Category:WikiProject navigational templates|France]] [[Category:Documentation see also templates]] </noinclude> 6c66f9a9f462414954f411814776d5e446111fee Template:Talk page stalker 10 219 494 2021-07-21T07:22:08Z Startus 12 Fixing link wikitext text/x-wiki {{safesubst:<noinclude />#ifeq:{{safesubst:<noinclude />Yesno|{{{small|yes}}}}}|yes|<small>}}([[:wikipedia:Wikipedia:Talk page stalker|{{safesubst:<noinclude />#switch:{{lc:{{{1}}}}} |c = Talk page stalker |cw = Talk page watcher |ce = Talk page enjoyer |cg = Talk page gnome |cr = Talk page reader |a = TPS |aw = TPW |ag = TPG |ar = TPR |v = stalking |vw = watching |vg = gnoming |vr = reading |b = by talk page stalker |bw = by talk page watcher |bg = by talk gnome |br = by talk reader |alc = tps |alcw = tpw |alcg = tpg |alcr = tpr |w=talk page watcher |g=talk page gnome |r = talk page reader |#default=talk page stalker }}]]){{safesubst:<noinclude />#ifeq:{{safesubst:<noinclude />Yesno|{{{small|yes}}}}}|yes|</small>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> e674d1371b451e6981f3786ceb6e4c4d2778e633 Template:Talk page watcher 10 220 498 2021-07-21T07:23:46Z Startus 12 Fix link wikitext text/x-wiki {{safesubst:<noinclude />#ifeq:{{{small|}}}|no||<small>}}([[{{safesubst:<noinclude />#ifeq:{{{safe|}}}|yes|Help:Watchlist|wikipedia:Wikipedia:Talk page stalker}}|{{safesubst:<noinclude />#switch:{{safesubst:<noinclude />lc:{{{1}}}}}|c=Talk page watcher|a=TPW|v=watching|b=by talk page watcher|alc=tpw|#default=talk page watcher}}]]){{safesubst:<noinclude />#ifeq:{{{small|}}}|no||</small>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> e3ec255c54f7b6317bc81f5c9180959b494749de Template:Infobox military unit 10 1153 2479 2021-07-21T21:20:00Z w>Jonesey95 0 add auto short description (displays only when short description is not provided by the article) wikitext text/x-wiki <includeonly>{{Infobox | bodystyle = {{WPMILHIST Infobox style|main_box_raw}} | abovestyle = {{WPMILHIST Infobox style|header_raw}} | subheaderstyle = {{WPMILHIST Infobox style|sub_header_raw}} | above = {{{unit_name|{{PAGENAMEBASE}}}}} | subheader = {{{native_name|}}} | imagestyle = {{WPMILHIST Infobox style|image_box_raw}} | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright=1|alt={{{alt|}}}}} | caption = {{{caption|}}} | headerstyle = {{WPMILHIST Infobox style|header_raw}} | labelstyle = padding-right: 1em; | label1 = {{#if:{{{start_date|}}}|{{#if:{{{end_date|}}}|Active|Founded}}|Active}} | data1 = {{#if:{{{start_date|}}}|{{#if:{{{end_date|}}}|{{{start_date}}}–{{{end_date}}}|{{{start_date}}}}}|{{{dates|}}}}} | label2 = Disbanded | data2 = {{{disbanded|}}} | label3 = {{#if:{{{country|}}}|Country|Countries}} | data3 = {{#if:{{{country|}}}|{{{country}}}|{{{countries|}}}}} | label4 = Allegiance | data4 = {{{allegiance|}}} | label5 = Branch | data5 = {{{branch|}}} | label6 = Type | data6 = {{{type|}}} | label7 = Role | data7 = {{{role|}}}{{{specialization|}}} | label8 = Size | data8 = {{{size|}}} | label9 = Part&nbsp;of | data9 = {{{command_structure|}}} | label10 = {{#if:{{{garrison_label|}}}|{{{garrison_label|}}}|Garrison/HQ}} | data10 = {{{garrison|}}} | label11 = Nickname(s) | data11 = {{{nickname|}}} | label12 = Patron | data12 = {{{patron|}}} | label13 = Motto(s) | data13 = {{{motto|}}} | label14 = {{if empty|{{{colors_label|}}}|{{{colours_label|}}}|{{#if:{{{colours|}}}|Colours|Colors}}}} | data14 = {{#if:{{{colours|}}}|{{{colours|}}}|{{{colors|}}}}} | label15 = March | data15 = {{{march|}}} | label16 = Mascot(s) | data16 = {{{mascot|}}} | label17 = Anniversaries | data17 = {{{anniversaries|}}} | label18 = {{#if:{{{equipment_label|}}}|{{{equipment_label|}}}|Equipment}} | data18 = {{{equipment|}}} | label19 = {{#if:{{{battles_label|}}}|{{{battles_label|}}}|Engagements}} | data19 = {{{battles|}}} | label20 = Decorations | data20 = {{{decorations|}}} | label21 = {{#if:{{{battle_honours_label|}}}|{{{battle_honours_label|}}}|[[Battle honour|Battle&nbsp;honour]]s}} | data21 = {{{battle_honours|}}} | label22 = Flying hours | data22 = {{{flying_hours|}}} | label23 = Website | data23 = {{{website|}}} | header24 = {{#if:{{{commander1|}}}{{{commander2|}}}{{{commander3|}}}{{{current_commander|}}}{{{ceremonial_chief|}}}{{{colonel_of_the_regiment|}}}{{{notable_commanders|}}} | Commanders }} | label25 = {{#if:{{{commander1_label|}}}|{{{commander1_label|}}}|{{#if:{{{current_commander_label|}}}|{{{current_commander_label|}}}|Current<br>commander}}}} | data25 = {{#if:{{{commander1|}}}|{{{commander1|}}}|{{{current_commander|}}}}} | label26 = {{#if:{{{commander2_label|}}}|{{{commander2_label|}}}|{{#if:{{{ceremonial_chief_label|}}}|{{{ceremonial_chief_label|}}}|Ceremonial&nbsp;chief}}}} | data26 = {{#if:{{{commander2|}}}|{{{commander2|}}}|{{{ceremonial_chief|}}}}} | label27 = {{#if:{{{commander3_label|}}}|{{{commander3_label|}}}|{{#if:{{{colonel_of_the_regiment_label|}}}|{{{colonel_of_the_regiment_label|}}}|Colonel&nbsp;of<br>the&nbsp;Regiment}}}} | data27 = {{#if:{{{commander3|}}}|{{{commander3|}}}|{{{colonel_of_the_regiment|}}}}} | label28 = {{#if:{{{commander4_label|}}}|{{{commander4_label|}}}|{{#if:{{{command_sergeant_major_label|}}}|{{{command_sergeant_major_label|}}}|Command Sergeant Major}}}} | data28 = {{#if:{{{commander4|}}}|{{{commander4|}}}|{{{command_sergeant_major|}}}}} | label29 = {{{commander5_label|Commander}}} | data29 = {{{commander5|}}} | label30 = {{{commander6_label|Commander}}} | data30 = {{{commander6|}}} | label31 = {{{commander7_label|Commander}}} | data31 = {{{commander7|}}} | label32 = {{{commander8_label|Commander}}} | data32 = {{{commander8|}}} | label33 = {{{commander9_label|Commander}}} | data33 = {{{commander9|}}} | label34 = Notable<br>commanders | data34 = {{{notable_commanders|}}} | header35 = {{#if:{{{identification_symbol|}}}{{{identification_symbol_2|}}} | Insignia }} | header36 = {{#ifeq: {{{identification_symbol_label|}}} | none | {{{identification_symbol|}}} | }} | label36 = {{#if:{{{identification_symbol_label|}}}|{{{identification_symbol_label|}}}|Identification<br>symbol}} | data36 = {{#ifeq: {{{identification_symbol_label|}}} | none | | {{{identification_symbol|}}} }} | label37 = {{#if:{{{identification_symbol_2_label|}}}|{{{identification_symbol_2_label|}}}|Identification<br>symbol}} | data37 = {{{identification_symbol_2|}}} | label38 = {{#if:{{{identification_symbol_3_label|}}}|{{{identification_symbol_3_label|}}}|Identification<br>symbol}} | data38 = {{{identification_symbol_3|}}} | label39 = {{#if:{{{identification_symbol_4_label|}}}|{{{identification_symbol_4_label|}}}|Identification<br>symbol}} | data39 = {{{identification_symbol_4|}}} | label40 = {{#if:{{{identification_symbol_5_label|}}}|{{{identification_symbol_5_label|}}}|Identification<br>symbol}} | data40 = {{{identification_symbol_5|}}} | label41 = {{#if:{{{identification_symbol_6_label|}}}|{{{identification_symbol_6_label|}}}|Identification<br>symbol}} | data41 = {{{identification_symbol_6|}}} | header42 = {{#if:{{{aircraft_attack|}}}{{{aircraft_bomber|}}}{{{aircraft_electronic|}}}{{{aircraft_fighter|}}}{{{aircraft_interceptor|}}}{{{aircraft_patrol|}}}{{{aircraft_recon|}}}{{{aircraft_trainer|}}}{{{aircraft_transport|}}}{{{aircraft_tanker|}}}{{{aircraft_helicopter|}}}{{{aircraft_helicopter_attack|}}}{{{aircraft_helicopter_cargo|}}}{{{aircraft_helicopter_multirole|}}}{{{aircraft_helicopter_observation|}}}{{{aircraft_helicopter_trainer|}}}{{{aircraft_helicopter_utility|}}}{{{aircraft_general|}}} | Aircraft flown }} | label43 = [[Attack aircraft|Attack]] | data43 = {{{aircraft_attack|}}} | label44 = [[Bomber]] | data44 = {{{aircraft_bomber|}}} | label45 = [[Electronic warfare|Electronic<br>warfare]] | data45 = {{{aircraft_electronic|}}} | label46 = [[Fighter aircraft|Fighter]] | data46 = {{{aircraft_fighter|}}} | label47 = [[Helicopter]] | data47 = {{{aircraft_helicopter|}}} | label48 = [[Attack helicopter]] | data48 = {{{aircraft_helicopter_attack|}}} | label49 = [[Cargo helicopter]] | data49 = {{{aircraft_helicopter_cargo|}}} | label50 = [[Multirole helicopter]] | data50 = {{{aircraft_helicopter_multirole|}}} | label51 = [[Observation helicopter]] | data51 = {{{aircraft_helicopter_observation|}}} | label52 = [[Trainer helicopter]] | data52 = {{{aircraft_helicopter_trainer|}}} | label53 = [[Utility helicopter]] | data53 = {{{aircraft_helicopter_utility|}}} | label54 = [[Interceptor aircraft|Interceptor]] | data54 = {{{aircraft_interceptor|}}} | label55 = [[Patrol aircraft|Patrol]] | data55 = {{{aircraft_patrol|}}} | label56 = [[Surveillance aircraft|Reconnaissance]] | data56 = {{{aircraft_recon|}}} | label57 = [[Trainer (aircraft)|Trainer]] | data57 = {{{aircraft_trainer|}}} | label58 = [[Cargo aircraft|Transport]] | data58 = {{{aircraft_transport|}}} | label59 = [[Aerial refueling|Tanker]] | data59 = {{{aircraft_tanker|}}} | data60 = {{{aircraft_general|}}} | data61 = {{{misc|{{{module|}}}}}} }}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox military unit with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox military unit]] with unknown parameter "_VALUE_"|ignoreblank=y| aircraft_attack | aircraft_bomber | aircraft_electronic | aircraft_fighter | aircraft_general | aircraft_helicopter | aircraft_helicopter_attack | aircraft_helicopter_cargo | aircraft_helicopter_multirole | aircraft_helicopter_observation | aircraft_helicopter_trainer | aircraft_helicopter_utility | aircraft_interceptor | aircraft_patrol | aircraft_recon | aircraft_tanker | aircraft_trainer | aircraft_transport | allegiance | alt | anniversaries | battle_honours | battle_honours_label | battles | battles_label | branch | caption | ceremonial_chief | ceremonial_chief_label | colonel_of_the_regiment | colonel_of_the_regiment_label | colors | colors_label | colours | colours_label | command_sergeant_major | command_sergeant_major_label | command_structure | commander1 | commander1_label | commander2 | commander2_label | commander3 | commander3_label | commander4 | commander4_label | commander5 | commander5_label | commander6 | commander6_label | commander7 | commander7_label | commander8 | commander8_label | commander9 | commander9_label | countries | country | current_commander | current_commander_label | dates | decorations | disbanded | end_date | equipment | equipment_label | flying_hours | garrison | garrison_label | identification_symbol | identification_symbol_2 | identification_symbol_2_label | identification_symbol_3 | identification_symbol_3_label | identification_symbol_4 | identification_symbol_4_label | identification_symbol_5 | identification_symbol_5_label | identification_symbol_6 | identification_symbol_6_label | identification_symbol_label | image | image_size | march | mascot | misc | module | motto | native_name | nickname | notable_commanders | patron | role | size | specialization | start_date | type | unit_name | website }}<includeonly>{{short description|Military unit|2=noreplace}}</includeonly><noinclude> {{Documentation}} </noinclude> 01758240c8ad335ee4eb92e9c72c53739871bb39 Template:Thin space 10 1521 2856 2021-07-22T18:00:13Z w>MusikBot II 0 Protected "[[Template:Thin space]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <span style="white-space: nowrap;">{{#if:{{{1|}}}|{{#if:{{{2|}}}||&thinsp;}}}}{{{1|}}}&thinsp;<!-- -->{{#if:{{{2|}}}|{{{2}}}}}{{#if:{{{3|}}}|&thinsp;{{{3}}}}}<!-- -->{{#if:{{{4|}}}|&thinsp;{{{4}}}}}{{#if:{{{5|}}}|&thinsp;{{{5}}}}}<!-- -->{{#if:{{{6|}}}|&thinsp;{{{6}}}}}{{#if:{{{7|}}}|&thinsp;{{{7}}}}}<!-- -->{{#if:{{{8|}}}|&thinsp;{{{8}}}}}{{#if:{{{9|}}}|&thinsp;{{{9}}}}}<!-- -->{{#if:{{{10|}}}|&thinsp;{{{10}}}}}</span><noinclude> {{Documentation}} <!-- Please add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 5f135f79d223a744b75485254555580623480420 Template:Cite Americana 10 1700 3199 2021-07-24T13:46:29Z wikipedia>Trappist the monk 0 add class=noviewer wikitext text/x-wiki <!-- optional icon - included by default -->{{#if:{{{noicon|}}}||{{#if:{{{wstitle|}}}||[[File:PD-icon.svg|12px|class=noviewer|alt=public domain|link=]]&nbsp;}}}}<!-- optional verbatim message - not included by default -->{{#if:{{{vb|}}}|{{#if: {{{inline|}}}|One or more of the preceding sentences|This article}} incorporates text from a publication now in the [[public domain]]:&nbsp;|}}<!--no white space -->{{#invoke:template wrapper|{{#if:{{{_debug|}}}|list|wrap}}|_template=cite encyclopedia |_exclude=display, inline, no-icon, noicon, short, wstitle, vb, _debug |_reuse=title <!-- these are reused --> <!-- set defaults for some parameters--> |year={{{year|1920}}} |editor-first={{{editor-first|{{#if:{{{short|}}}| |George Edwin}}}}} |editor-last={{{editor-last|{{#if:{{{short|}}}| |Rines}}}}} |encyclopedia=[[Encyclopedia Americana]] |title={{#if:{{{title|}}}|{{{title}}}|{{#if:{{{wstitle|}}}|{{cite wikisource/make link |link=The Encyclopedia Americana ({{{year|1920}}})/{{{wstitle|}}} |anchor= |label={{{display|{{{wstitle|}}}}}} |noicon={{{no-icon|{{{noicon|}}}}}} }}}}}} }}<includeonly><!-- -->{{#ifeq: {{NAMESPACEE}} |<!--is not set--> |<!--Set: sort out the parameters--> {{#if: {{{wstitle|}}} |[[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with a Wikisource reference]] |<!--else--> {{#if: {{{title|}}} | [[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana without a Wikisource reference]] |<!--else--> {{#if: {{{1|}}} | [[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with an unnamed parameter]] |<!--else--> [[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with no wstitle or title parameter]] }} }} }} }}</includeonly><noinclude> {{documentation}} </noinclude> ed5c9ece372ad2d5f69121e72f392dbb30307c17 Template:If both 10 1222 2552 2021-07-27T21:26:23Z w>Trialpears 0 substitutable wikitext text/x-wiki {{{{{|safesubst:}}}#if:{{{1|}}}| {{{{{|safesubst:}}}#if:{{{2|}}}|{{{3|}}}|{{{4|}}}}} |{{{4|}}} }}<noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> d77fc191cada8977a8131dd6d85dde5e31d0e6f2 Template:UF-hcard-org 10 1487 2822 2021-08-02T18:52:40Z w>Sdkb 0 adding option to replace "start date and age" with just "start date" wikitext text/x-wiki {{Microformat message | format = hCard | data = an organization's details | subtemplates = * Use {{#ifeq:{{yesno-yes|{{{age|}}}}}|yes|{{tl|Start date and age}}|{{tl|Start date}}}} for the date on which an organisation was "established", "founded", "opened" or otherwise started, [[Wikipedia:WikiProject Microformats/dates|unless that date is before 1583&nbsp;CE]]. * Use {{tl|URL}} for an organisation's URL. |adr |agent |category |country-name |extended-address |fn |geo |label |latitude |locality |longitude |nickname |note |org |region |street-address |url |vcard | nocollapse = on }}<includeonly>{{sandbox other|| [[Category:Templates generating hCards]] }}</includeonly><noinclude> {{Documentation |content={{Microformat message templates}}}} [[Category:Microformat (uF) message templates]] [[Category:Templates generating hCards| ]] </noinclude> 631bc99cd046167681b6eb518559d92fc65a4920 Template:Pval 10 1256 2590 2021-08-08T07:44:26Z w>Mathglot 0 Creating as #REDIRECT [[Template:Param value]] wikitext text/x-wiki #REDIRECT [[Template:Param value]] 068e5f0a141e534b855634c386541985fd9f0609 Template:Infobox Dutch royalty styles 10 1126 2451 2021-08-08T19:34:00Z w>Rkt2312 0 wikitext text/x-wiki {{Infobox manner of address | name = {{{name|{{<includeonly>safesubst:</includeonly>PAGENAMEBASE}}}}} | image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}} | 1581 = Coat of arms of the republic of the united Netherlands (before 1665).svg | 1665 = Coat of arms of the republic of the united Netherlands (after 1665).svg | 1806 = Coat of Arms of the Kingdom of Holland (1806).svg | 1808 = Coat of Arms of the Kingdom of Holland (1808).svg | 1815 = Royal Coat of Arms of the Netherlands (1815-1907).svg | own = {{{image|}}} | #default = Royal coat of arms of the Netherlands.svg }} | size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|{{<includeonly>safesubst:</includeonly>#switch: {{{1}}} | 1581 | 1665 | 1806 | 1808 = 55px | 1815 = 65px | own = 50px | #default = 65px }}}} | reference = {{{dipstyle<includeonly>|</includeonly>}}} | spoken = {{{offstyle<includeonly>|</includeonly>}}} | alternative = {{{altstyle<includeonly>|</includeonly>}}} | type = Royal | background = #FF9900 }}{{<includeonly>safesubst:</includeonly>#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Dutch royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | altstyle | dipstyle | image | image_size | name | offstyle }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 36562db2a62c2566320372b7b5273a5387c121f0 Template:Infobox Belgian royalty styles 10 1121 2446 2021-08-08T19:40:23Z w>Rkt2312 0 wikitext text/x-wiki {{Infobox manner of address | name = {{{name|{{<includeonly>safesubst:</includeonly>PAGENAME}}}}} | image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}} | 1830 = Coat of Arms of King Leopold I of Belgium.svg | 1837 = Coat of Arms of the King of the Belgians (1837-1921).svg | 1921 = Coat of Arms of the King of the Belgians (1921-2019).svg | own = {{{image|}}} | #default = Great coat of arms of Belgium.svg }} | size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|60px}} | reference = {{{reference<includeonly>|</includeonly>}}} | spoken = {{{spoken<includeonly>|</includeonly>}}} | alternative = {{{alternative<includeonly>|</includeonly>}}} | type = Royal | background = #ED2939 | colour = #000000 }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Belgian royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | alternative | image | image_size | name | reference | spoken }}<noinclude> {{documentation}} </noinclude> 8f3c1bba00cb5ba8fe2c8364ce21af2fd2c4393e Template:Quote box 10 1087 2373 2021-08-14T16:46:21Z wikipedia>Firefly 0 reimplement changes per TP wikitext text/x-wiki <templatestyles src="Template:Quote_box/styles.css" /><div class="quotebox pullquote {{#switch: {{lc:{{{align|}}}}} | center = centered | left = floatleft | none = | floatright }} {{{class|}}}" style=" {{#if:{{{width|}}} |width:{{{width}}};}} {{#ifeq:{{{border}}}|none|border:none;|{{#if:{{{border|}}}|border-width: {{{border}}}}};}} {{#if:{{{fontsize|}}}|font-size: {{{fontsize}}};}} {{#if:{{{bgcolor|}}}|background-color: {{#ifeq:{{{bgcolor|}}}|none|transparent|{{{bgcolor}}}}};}} {{{style|}}}"> {{#if:{{{title|}}} |<div class="quotebox-title {{{tclass|}}}" style=" {{#if:{{{title_bg|{{{bgcolor|}}}}}}|background-color: {{#ifeq:{{{title_bg|{{{bgcolor}}}}}}|none|transparent|{{{title_bg|{{{bgcolor}}}}}}}};}} {{#if:{{{title_fnt|}}}|color: {{{title_fnt}}};}} {{{tstyle|}}}">{{{title}}}</div> }} <blockquote class="quotebox-quote {{main other||{{#if:{{{quoted|}}}|quoted}}}} {{#switch: {{lc:{{{qalign|{{{halign|left}}}}}}}} |right = right-aligned |center = center-aligned |left-aligned }} {{{qclass|}}}" style=" {{{qstyle|}}}"> {{{text|{{{content|{{{quotetext|{{{quote|{{{1|<includeonly>{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}</includeonly><noinclude>{{lorem ipsum}}</noinclude>}}}}}}}}}}}}}}} </blockquote> {{#if:{{{author|{{{source|}}}}}}{{{2|}}}{{{3|}}}|<cite class="{{#switch: {{lc:{{{salign|{{{qalign|{{{halign|left}}} }}} }}} }} |right = right-aligned |center = center-aligned |left-aligned }}" style="{{{sstyle|}}}"><!--Manually inserted dashes will need to be removed from uses of the template first, I guess, then enable this:--><!--—&thinsp;-->{{{author|{{{2|}}}}}}{{#if:{{{author|}}}{{{2|}}}|{{#if:{{{source|}}}{{{3|}}}|<!--Display comma-space only if both cite parameters are present.-->,&#32;}}}}{{{source|{{{3|}}}}}}</cite>}} </div>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using quote box with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Quote box]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | align | author | bgcolor | border | class | content | fontsize | halign | qalign | qclass | qstyle | quote | quoted | quotetext | salign | source | sstyle | style | tclass | text | title | title_bg | title_fnt | tstyle | width }}<noinclude> {{Documentation}} </noinclude> 2aa78cc6cbf64f216a9f86c2027aee9ba5b873e1 Template:Tooltip/styles.css 10 1051 2300 2021-08-15T03:04:59Z wikipedia>Pppery 0 Adding protection template sanitized-css text/css /* {{pp-template}} */ .tooltip-dotted { border-bottom: 1px dotted; cursor: help; } 567ab0781901eeeb93077ef25052613364378d1e Template:Cite wikisource/make link 10 1702 3203 2021-08-16T19:55:21Z wikipedia>MusikAnimal 0 Changed protection settings for "[[Template:Cite wikisource/make link]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite)) wikitext text/x-wiki {{#if:{{{noicon|}}} |[[:s:{{#if:{{{language|}}}|{{{language}}}:}}{{#if:{{{anchor|}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}#{{{anchor}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}}}|{{{label|{{{link|}}}}}}]] |[[s:{{#if:{{{language|}}}|{{{language}}}:}}{{#if:{{{anchor|}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}#{{{anchor}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}}}|{{{label|{{{link|}}}}}}]]}}<noinclude> {{documentation}} </noinclude> 8811d0350c08f66930c6b4d5ea7dc16afa99541c Template:Q 10 1059 2316 2021-08-16T20:38:04Z wikipedia>ToBeFree 0 Changed protection settings for "[[Template:Q]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Wikidata entity link]] [[Category:Wikidata templates]] {{Redirect category shell| {{R from template shortcut}} {{R from move}} }} 7f19fdcb2b05d966cd3f0f5f540cf8fa37935869 Template:Linkless exists 10 189 432 2021-08-16T23:47:06Z MusikAnimal 4 Changed protection settings for "[[Template:Linkless exists]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki {{#if:{{PROTECTIONEXPIRY:edit|{{{1|}}}}}|{{{2|true}}}|{{{3|}}}}}<noinclude>{{documentation}}</noinclude> 1aa1e6e4f3589f452babd54a7c0bbc590dc2f96d Template:YEAR 10 1242 2576 2021-08-17T01:21:54Z w>MusikBot II 0 Changed protection settings for "[[Template:YEAR]]": [[Wikipedia:High-risk templates|High-risk template or module]] 62847 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{#if: {{{1|}}} |{{#iferror:{{#time:Y|1 January {{{1|}}} }} |{{#iferror:{{#time:Y|{{{1|}}} }} |{{#ifeq:{{{2|}}}|{{{2}}}|error|{{error|Error}}}} |{{#time:Y|{{{1|}}} }} }} |{{#time:Y|1 January {{{1|}}} }} }} |{{CURRENTYEAR}}}}</includeonly><noinclude> {{Documentation}} </noinclude> 397274250b850cd58a73ae0feb580b3f511afb46 Template:FTE 10 1477 2812 2021-08-18T03:18:39Z w>TheGEICOgecko 0 Whether the "a" or "an" article is used depends on the beginning sound of the first syllable. The first syllable is "F", or "ehf". Since the first sound is the sound of a vowel, the article should be "an." wikitext text/x-wiki (on an [[Full-time equivalent|FTE]] basis)<noinclude> [[Category:Education templates]] </noinclude> 497f38612f32a203cdfdd7677223681bb60bd56e Module:Asbox 828 757 1689 2021-08-19T05:19:44Z DannyS712 44 prevent global variable disallowedUnicodeChars, triggers warnings at [[Template:Ankylosaurian-stub]] - assuming it was by accident - please revert if this breaks anything Scribunto text/plain --[[ This module was created by User:CodeHydro (Alexander Zhikun He). User:Jackmcbarn and User:Mr._Stradivarius provided a great deal of assistance in writting p.main() p.main() draw heavily from the following version of Template:Asbox of the English Wikipedia, authored primarily by User:Rich_Farmbrough https://en.wikipedia.org/w/index.php?title=Template:Asbox&oldid=619510287 p.templatepage() is derived from the following revision of Template:Asbox/templatepage, authored primarily by User:MSGJ https://en.wikipedia.org/w/index.php?title=Template:Asbox/templatepage&oldid=632914791 Both templates had significant contributions from numerous others listed in the revision history tab of their respective pages. --]] local WRAPPER_TEMPLATE, args = 'Template:Asbox' local templatestyles = 'Asbox/styles.css' local p, Buffer, stubCats = { --Prevents dupli-cats... get it? Maybe not? cats = setmetatable({}, {__newindex = function(t, i, v) if not rawget(t, i) then rawset(t, i, v) table.insert(t, i) end end}), --initializes variables required by both p.main and p.templatepage init = function(self, frame, page) args, page = args or require('Module:Arguments').getArgs(frame, { wrappers = WRAPPER_TEMPLATE }), page or mw.title.getCurrentTitle() --Ensures demo parameter will never affect category() output for articles self.demo = self.demo or page.namespace ~= 0 and args.demo return args, page end }, require('Module:Buffer') --[[ Formats category links. Stores them until called with cat.done=true Takes multiple or single categories in the form of 'cat' or a table of strings and/or tables containing parts. (See below) ]] local attention, catTag, catKey = Buffer'Stub message templates needing attention', '[[Category:%s]]', '%s|%s%s' local function category(cat) for _, v in ipairs((tostring(cat) == cat or cat.t) and {cat} or cat) do --[[ If v is a table: [1] = full category name; defaults to local attention if blank k = Category sort key. Prefix before v.t t = page.text or args.tempsort#; appended after k (or in its place if omitted). Required if v is not a string Basically the same as v = (v[1] or attention) .. ' | ' .. (v.k or '') .. v.t ]] if v and v ~= true then--reject v = nil, false, or true p.cats[catTag:format(tostring(v) == v and v or (v[1] and Buffer(v[1]) or attention):_in(v.k):_(v.t):_str(2, nil, nil, '|') )] = true end end return cat.done and table.concat(p.cats, p.demo and ' | ' or nil) or '' end --[[ Makes an ombox warning; Takes table {ifNot = Boolean, text, {cat. sort key, cat. sort name}} Will return an empty string instead when ifNot evaluates to true ]] local function ombox(v) if v.ifNot then return end p.ombox = p.ombox or require('Module:Message box').ombox category{v[2]} return p.ombox{ type = 'content', text = v[1] } end --[[ Unlike original template, module now takes unlimited cats! This function also performs most stub category error checks except for the ombox for when main |category= is omitted (See p.template()) ]] local function catStub(page, pageDoc) stubCats = {missing = {}, v = {}} -- zwj and zwnj have semantical use in other other wikis, don't remove them local zwj = '\226\128\141' -- U+200D, E2 80 8D local zwnj = '\226\128\140' -- U+200C, E2 80 8C local disallowedUnicodeChars = '[^%w%p%s' .. zwj .. zwnj .. ']' -- for i18n we make this a separate string local code for k, _ in pairs(args) do --Find category parameters and store the number (main cat = '') table.insert(stubCats, string.match(k, '^category(%d*)$')) end table.sort(stubCats) for k, v in ipairs(stubCats) do --Get category names and, if called by p.templatepage, the optional sort key local tsort, cat = args['tempsort' .. v], mw.ustring.gsub(args['category' .. v], disallowedUnicodeChars, '')--remove all hidden unicode chars --Do not place template in main category if |tempsort = 'no'. However, DO place articles of that template in the main category. table.insert(stubCats.v, page and (--p.templatepage passes page; p.main does not, i.e. articles are categorized without sort keys. v=='' and tsort == 'no'--if true, inserts 'true' in table, which category() will reject or tsort and {cat, k = ' ', t = tsort} or {cat, k = ' *', t = page.text}--note space in front of sort key ) or cat ) --Check category existance only if on the template page (i.e. stub documentation) if page then if not mw.title.new('Category:' .. cat).exists then code = code or mw.html.create'code':wikitext'|category' table.insert(stubCats.missing, tostring(mw.clone(code):wikitext(v))) end --[[ Checks non-demo stub template for documentation and flags if doc is present. All stub cats names are checked and flagged if it does not match 'Category: [] stub'. The main stub cat is exempt from the name check if the stub template has its own doc (presumably, this doc would have an explanation as to why the main stub cat is non-conforming). ]] table.insert(stubCats.v, v == '' and not p.demo and pageDoc.exists and 'Stub message templates with documentation subpages' or not cat:match' stubs$' and {k = 'S', t = page.text} ) end end --Add category names after loop is completed category(stubCats.v) return #stubCats.missing > 0 and ombox{ --Changed, original msg: --One or more of the stub categories defined in this template do not seem to exist! --Please double-check the parameters {{para|category}}, {{para|category1}} and {{para|category2}}. 'The following parameter' .. (#stubCats.missing == 1 and ' defines a stub category that does' or 's define stub categories that do') .. ' not exist: ' .. mw.text.listToText(stubCats.missing), {k = 'N', t = page.text} } end --Shows population of categories found by catStub(). Outputs demo values if none local function population() local wikitext, base = {}, '* [[:Category:%s]] (population: %s)\n' if not args.category and stubCats[1] ~= false then table.insert(stubCats, 1, false) end for _, v in ipairs(stubCats) do table.insert(wikitext, base:format( v and args['category' .. v] or '{{{category}}}', v and mw.site.stats.pagesInCategory(args['category' .. v], 'all') or 0 )) end return table.concat(wikitext) end --Includes standard stub documention and flags stub templates with bad parameter values. function p.templatepage(frame, page) args, page = p:init(frame, page) local tStubDoc = mw.title.new'Template:Stub documentation' local pageDoc = page:subPageTitle('doc') --Reorganization note: Original Asbox alternates between outputting categories and checking on params |category#=. --Rather than checking multiple times and switching tasks, all stub category param operations have been rolled into catStub() return Buffer( ombox{--Show ombox warnings for missing args. ifNot = args.category, 'The <code>|category</code> parameter is not set. Please add an appropriate stub category.', {k = 'C', t = page.text} }) :_(ombox{ ifNot = args.subject or args.article or args.qualifier, 'This stub template contains no description! At least one of the parameters <code>|subject</code>, <code>|article</code> or <code>|qualifier</code> must be defined.', {k = 'D', t = page.text} }) :_(catStub(page, pageDoc))--catStub() may also return an ombox if there are non-existing categories :_(category{ done = p.demo ~= 'doc',--Outputs categories if not doc demo 'Stub message templates', args.icon and 'Stub message templates using icon parameter' or args.image and ( mw.title.new('Media:' .. mw.text.split(args.image, '|')[1]).exists--do nothing if exists. category() will reject true or {k = 'B', t = page.text} ) or 'Stub message templates without images', args.imagealt and {k = 'I', t = page.text}, }) :_((not p.demo or p.demo == 'doc') and--Add standard stub template documentation require('Module:Documentation').main{ content = Buffer(page.text ~= 'Stub' and--This comparison performed in {{Asbox/stubtree}} before it invokes Module:Asbox stubtree require('Module:Asbox stubtree').subtree{args = {pagename = page.text}} ) :_in'\n== About this template ==\nThis template is used to identify a':_(args.subject):_'stub':_(args.qualifier):_out' '--space :_'. It uses {{[[Template:Asbox|asbox]]}}, which is a meta-template designed to ease the process of creating and maintaining stub templates.\n=== Usage ===\nTyping ' :_(mw.html.create'code' :wikitext('{{', page.text == 'Stub' and 'stub' or page.text, '}}') ) :_' produces the message shown at the beginning, and adds the article to the following categor' :_(#stubCats > 1 and 'ies' or 'y') :_':\n' :_(population()) :_(pageDoc.exists and--transclusion of /doc if it exists frame:expandTemplate{title = pageDoc.text} ) :_'\n== General information ==\n' :_(frame:expandTemplate{title = tStubDoc.text}) :_'\n\n'(), ['link box'] = Buffer'This documentation is automatically generated by [[Module:Asbox]].' :_in'The general information is transcluded from [[Template:Stub documentation]]. ' :_(mw.html.create'span' :cssText'font-size:smaller;font-style:normal;line-height:130%' :node(('([%s edit] | [%s history])'):format( tStubDoc:fullUrl('action=edit', 'relative'), tStubDoc:fullUrl('action=history', 'relative') )) ) :_out() :_(page.protectionLevels.edit and page.protectionLevels.edit[1] == 'sysop' and "This template is [[WP:PROTECT|fully protected]] and any [[WP:CAT|categories]] should be added to the template's [" .. pageDoc:fullUrl('action=edit&preload=Template:Category_interwiki/preload', 'relative') .. '| /doc] subpage, which is not protected.' )' <br/>' } )() end function p.main(frame, page) args, page = p:init(frame, page) local output = mw.html.create'div' :attr{role = 'note'} :addClass'metadata plainlinks asbox stub' :tag'table' :attr{role = 'presentation'} :tag'tr' :addClass'noresize' :node((args.icon or args.image) and mw.html.create'td' :wikitext(args.icon or ('[[File:%s|%spx|alt=%s]]'):format( args.image or '', args.pix or '40x30', args.imagealt or 'Stub icon' )) ) :tag'td' :tag'p' :addClass'asbox-body' :wikitext( Buffer'This':_(args.subject):_(args.article or 'article'):_(args.qualifier)' ',--space ' is a [[Wikipedia:stub|stub]]. You can help Wikipedia by [', page:fullUrl('action=edit', 'relative'), ' expanding it].' ) :done() :node(args.note and mw.html.create() :tag'p' :addClass'asbox-note' :wikitext(args.note) :done() ) :allDone() :node(args.name and require'Module:Navbar'._navbar{ args.name, mini = 'yes', } ) --[[ Stub categories for templates include a sort key; this ensures that all stub tags appear at the beginning of their respective categories. Articles using the template do not need a sort key since they have unique names. When p.demo equals 'doc', the demo stub categories will appear as those for a stub template. Otherwise, any non-nil p.demo will emulate article space categories (plus any error cats unless set to 'art') ]] if page.namespace == 0 then -- Main namespace category'All stub articles' catStub() elseif p.demo then if p.demo ~= 'doc' then catStub() end --Unless p.demo is set to 'art', it will also include error categories normally only shown on --the template but not in the article. The elseif after namespace == 0 means demo cats will never show in article space. p.demodoc = p.demo ~= 'art' and p.templatepage(frame, page) output = mw.html.create() :node(output) :tag'small':wikitext( 'Demo categories: ', (category{done = true}:gsub('(%[%[)(Category:)([^|%]]-)(%|)', '%1%2%3|%2%3%4'):gsub('(%[%[)(Category:)', '%1:%2')) ):done() :wikitext(p.demo == 'doc' and p.demodoc or nil) else --Checks for valid name; emulates original template's check using {{FULLPAGENAME:{{{name|}}}}} local normalizedName = mw.title.new(args.name or '') if normalizedName and normalizedName.fullText == page.fullText then output = mw.html.create():node(output):wikitext(p.templatepage(frame, page)) elseif not page.isSubpage and page.namespace == 10 then-- Template namespace and not a subpage category{{k = args.name and 'E' or 'W', t = page.text}} end end return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(output:wikitext(not p.demo and category{done = true} or nil)) end return p 0a9850f35fe9b15eaadd5d693d751ca62ddb60cf Template:Infobox country/formernext 10 560 1255 2021-08-20T02:01:15Z wikipedia>Goszei 0 ensure proper display on mobile wikitext text/x-wiki {| style="width:95%; background: transparent; text-align:center; margin:0 auto; display:inline-table;" |- | style="text-align:center; border:0; padding-bottom:0"|<div id="before-after"></div> {{#if:{{{p1|}}}|'''Preceded by'''}} || style="text-align:center;border:0; padding-bottom:0;"| {{#if:{{{s1|}}}|'''Succeeded by'''}} |- | style="vertical-align:top; text-align:center; border:0;"| {{#if:{{{p1|}}} | <!--start subtable:-->{{{!}} style="width:100%; background: transparent; text-align:center; margin:0 auto; border:0;" {{!}}- {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p1|}}}|[[File:{{{flag_p1}}}|20px{{#ifeq:{{{border_p1}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p1|}}}|{{{image_p1}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p1}}}]] {{!}}- {{#if:{{{p2|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p2|}}}|[[File:{{{flag_p2}}}|20px{{#ifeq:{{{border_p2}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p2|}}}|{{{image_p2}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p2}}}]]}} {{!}}- {{#if:{{{p3|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p3|}}}|[[File:{{{flag_p3}}}|20px{{#ifeq:{{{border_p3}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p3|}}}|{{{image_p3}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p3}}}]]}} {{!}}- {{#if:{{{p4|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p4|}}}|[[File:{{{flag_p4}}}|20px{{#ifeq:{{{border_p4}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p4|}}}|{{{image_p4}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p4}}}]]}} {{!}}- {{#if:{{{p5|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p5|}}}|[[File:{{{flag_p5}}}|20px{{#ifeq:{{{border_p5}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p5|}}}|{{{image_p5}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p5}}}]]}} {{!}}- {{#if:{{{p6|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p6|}}}|[[File:{{{flag_p6}}}|20px{{#ifeq:{{{border_p6}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p6|}}}|{{{image_p6}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p6}}}]]}} {{!}}- {{#if:{{{p7|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p7|}}}|[[File:{{{flag_p7}}}|20px{{#ifeq:{{{border_p7}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p7|}}}|{{{image_p7}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p7}}}]]}} {{!}}- {{#if:{{{p8|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p8|}}}|[[File:{{{flag_p8}}}|20px{{#ifeq:{{{border_p8}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p8|}}}|{{{image_p8}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p8}}}]]}} {{!}}- {{#if:{{{p9|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p9|}}}|[[File:{{{flag_p9}}}|20px{{#ifeq:{{{border_p9}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p9|}}}|{{{image_p9}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p9}}}]]}} {{!}}- {{#if:{{{p10|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p10|}}}|[[File:{{{flag_p10}}}|20px{{#ifeq:{{{border_p10}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p10|}}}|{{{image_p10}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p10}}}]]}} {{!}}- {{#if:{{{p11|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p11|}}}|[[File:{{{flag_p11}}}|20px{{#ifeq:{{{border_p11}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p11|}}}|{{{image_p11}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p11}}}]]}} {{!}}- {{#if:{{{p12|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p12|}}}|[[File:{{{flag_p12}}}|20px{{#ifeq:{{{border_p12}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p12|}}}|{{{image_p12}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p12}}}]]}} {{!}}- {{#if:{{{p13|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p13|}}}|[[File:{{{flag_p13}}}|20px{{#ifeq:{{{border_p13}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p13|}}}|{{{image_p13}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p13}}}]]}} {{!}}- {{#if:{{{p14|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p14|}}}|[[File:{{{flag_p14}}}|20px{{#ifeq:{{{border_p14}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p14|}}}|{{{image_p14}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p14}}}]]}} {{!}}- {{#if:{{{p15|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p15|}}}|[[File:{{{flag_p15}}}|20px{{#ifeq:{{{border_p15}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p15|}}}|{{{image_p15}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p15}}}]]}} {{!}}- {{#if:{{{p16|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p16|}}}|[[File:{{{flag_p16}}}|20px{{#ifeq:{{{border_p16}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p16|}}}|{{{image_p16}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p16}}}]]}} {{!}}- {{#if:{{{p17|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p17|}}}|[[File:{{{flag_p17}}}|20px{{#ifeq:{{{border_p17}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p17|}}}|{{{image_p17}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p17}}}]]}} {{!}}- {{#if:{{{p18|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p18|}}}|[[File:{{{flag_p18}}}|20px{{#ifeq:{{{border_p18}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p18|}}}|{{{image_p18}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p18}}}]]}} {{!}}- {{#if:{{{p19|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p19|}}}|[[File:{{{flag_p19}}}|20px{{#ifeq:{{{border_p19}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p19|}}}|{{{image_p19}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p19}}}]]}} {{!}}- {{#if:{{{p20|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p20|}}}|[[File:{{{flag_p20}}}|20px{{#ifeq:{{{border_p20}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p20|}}}|{{{image_p20}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p20}}}]]}} {{!}}- {{#if:{{{p21|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p21|}}}|[[File:{{{flag_p21}}}|20px{{#ifeq:{{{border_p21}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p21|}}}|{{{image_p21}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p21}}}]]}} <!--end subtable:--> {{!}}} }} | style="vertical-align:top; text-align:center;border:0;"| {{#if:{{{s1|}}} | <!--start subtable:-->{{{!}} style="width:92%; background:transparent; text-align:center; margin:0 auto; border:0;" {{!}}- {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s1}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s1|}}}|[[File:{{{flag_s1}}}|20px{{#ifeq:{{{border_s1}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s1|}}}|{{{image_s1}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}- {{#if:{{{s2|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s2}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s2|}}}|[[File:{{{flag_s2}}}|20px{{#ifeq:{{{border_s2}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s2|}}}|{{{image_s2}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s3|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s3}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s3|}}}|[[File:{{{flag_s3}}}|20px{{#ifeq:{{{border_s3}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s3|}}}|{{{image_s3}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s4|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s4}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s4|}}}|[[File:{{{flag_s4}}}|20px{{#ifeq:{{{border_s4}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s4|}}}|{{{image_s4}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s5|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s5}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s5|}}}|[[File:{{{flag_s5}}}|20px{{#ifeq:{{{border_s5}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s5|}}}|{{{image_s5}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s6|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s6}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s6|}}}|[[File:{{{flag_s6}}}|20px{{#ifeq:{{{border_s6}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s6|}}}|{{{image_s6}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s7|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s7}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s7|}}}|[[File:{{{flag_s7}}}|20px{{#ifeq:{{{border_s7}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s7|}}}|{{{image_s7}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s8|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s8}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s8|}}}|[[File:{{{flag_s8}}}|20px{{#ifeq:{{{border_s8}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s8|}}}|{{{image_s8}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s9|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s9}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s9|}}}|[[File:{{{flag_s9}}}|20px{{#ifeq:{{{border_s9}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s9|}}}|{{{image_s9}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s10|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s10}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s10|}}}|[[File:{{{flag_s10}}}|20px{{#ifeq:{{{border_s10}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s10|}}}|{{{image_s10}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s11|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s11}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s11|}}}|[[File:{{{flag_s11}}}|20px{{#ifeq:{{{border_s11}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s11|}}}|{{{image_s11}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s12|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s12}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s12|}}}|[[File:{{{flag_s12}}}|20px{{#ifeq:{{{border_s12}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s12|}}}|{{{image_s12}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s13|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s13}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s13|}}}|[[File:{{{flag_s13}}}|20px{{#ifeq:{{{border_s13}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s13|}}}|{{{image_s13}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s14|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s14}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s14|}}}|[[File:{{{flag_s14}}}|20px{{#ifeq:{{{border_s14}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s14|}}}|{{{image_s14}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s15|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s15}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s15|}}}|[[File:{{{flag_s15}}}|20px{{#ifeq:{{{border_s15}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s15|}}}|{{{image_s15}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s16|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s16}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s16|}}}|[[File:{{{flag_s16}}}|20px{{#ifeq:{{{border_s16}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s16|}}}|{{{image_s16}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s17|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s17}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s17|}}}|[[File:{{{flag_s17}}}|20px{{#ifeq:{{{border_s17}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s17|}}}|{{{image_s17}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s18|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s18}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s18|}}}|[[File:{{{flag_s18}}}|20px{{#ifeq:{{{border_s18}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s18|}}}|{{{image_s18}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s19|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s19}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s19|}}}|[[File:{{{flag_s19}}}|20px{{#ifeq:{{{border_s19}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s19|}}}|{{{image_s19}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s20|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s20}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s20|}}}|[[File:{{{flag_s20}}}|20px{{#ifeq:{{{border_s20}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s20|}}}|{{{image_s20}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s21|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s21}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s21|}}}|[[File:{{{flag_s21}}}|20px{{#ifeq:{{{border_s21}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s21|}}}|{{{image_s21}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} <!--end subtable:--> <!--end subtable:--> {{!}}} }} <!--end subtable:--> {{!}}}<noinclude> {{documentation|content= This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. It can currently handle up to 21 flags. }}</noinclude> 05a74d48da51cce78e3518579c2af4cd1e699e4a Template:TemplateData header 10 59 113 2021-08-29T21:32:29Z wikipedia>SUM1 0 Added "based" parameter to other transclusion wikitext text/x-wiki <div class="templatedata-header">{{#if:{{{noheader|}}}|<!-- noheader: -->{{Template parameter usage|based=y}}|<!-- +header: -->This is the {{#if:{{{nolink|}}}|<!-- +header, nolink TD -->TemplateData|<!-- +header, +link [[TD]]; DEFAULT: -->[[Wikipedia:TemplateData|TemplateData]]}}<!-- e.o. #if:nolink; DEFAULT: --> for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools. {{Template parameter usage|based=y}}<!-- e.o. #if:noheader -->}} '''TemplateData for {{{1|{{BASEPAGENAME}}}}}''' </div><includeonly><!-- check parameters -->{{#invoke:Check for unknown parameters|check |unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}} |template=Template:TemplateData header |1 |nolink |noheader |preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div> }}<!-- -->{{template other|{{sandbox other|| [[Category:Templates using TemplateData]] }}}}</includeonly><!-- --><noinclude>{{Documentation}}</noinclude> ddfbb4ae793846b96d4c06330417fa6ed4da2adc Template:Wikipedia help pages 10 145 339 2021-09-01T20:22:34Z wikipedia>Shushugah 0 Re-added navigation bar to make finding this template easier. I didn't see any special reasons stated in the talk page and if this is prone to vandalism, it should be protected, not obscured from editing wikitext text/x-wiki <noinclude>{{Notice |style=margin-bottom:1.5em; |1=<span style="font-size:large;color:purple;">Please do not post your requests or questions on this page. If you have questions about using Wikipedia, please ask at the '''[[Wikipedia:Help desk|Help&nbsp;desk]]''' or the '''[[Wikipedia:Teahouse|Teahouse]]'''. For questions about subjects and topics, please use the '''[[Wikipedia:Reference desk|Reference Desk]]'''. Volunteers at these locations will respond to your questions as soon as possible.</span>}}</noinclude><!-- -->{{#invoke:navbox|navbox | name = Wikipedia help pages | state ={{{state<includeonly>|{{{1|collapsed}}}</includeonly>}}} | bodyclass = hlist | basestyle = text-align:center; | title = [[Help:Directory|Wikipedia help pages]] | above = *'''Visit the ''[[Wikipedia:Teahouse|Teahouse]]'' or the ''[[Wikipedia:Help desk|Help desk]]'' for an interactive {{abbr|Q & A|questions and answers}} forum.''' ---- * '''[[Wikipedia:FAQ|FAQs]]'''&nbsp;'''{{Define|(?)|This is a list of frequently asked questions about using and contributing to Wikipedia.}}''' * '''[[Wikipedia:Reference desk|Reference desks]]'''&nbsp;'''{{Define|(?)|Works like a library reference desk. Ask a question here and Wikipedia volunteers will try to answer it.}}''' * '''[[Wikipedia:Noticeboards|Noticeboards]]'''&nbsp;'''{{Define|(?)|Pages where editors can ask questions and request assistance from people who are familiar with the policies and guidelines covered by each individual board.}}''' * '''[[Help:Cheatsheet|Cheatsheet]]'''&nbsp;'''{{Define|(?)| For a list of the most commonly used Wiki markup and templates.}}''' *''' [[Wikipedia:Directories and indexes|Directories]]'''&nbsp;'''{{Define|(?)|For a list of Wikipedia's directories and indexes.}}''' | group1 = [[Wikipedia:About|About Wikipedia]]&nbsp;{{Define|(?)|Wikipedia's governess and customs}} | list1 = * [[Wikipedia:Administration|Administration]] **[[Wikipedia:Purpose|Purpose]] ** [[Wikipedia:Five pillars|Principles]] * [[Wikipedia:Policies and guidelines|Policies and guidelines]] * [[Wikipedia:What Wikipedia is not|What Wikipedia is not]] * [[Wikipedia:General disclaimer|Disclaimer]]&nbsp;([[Wikipedia:Advice for parents|parental advice]]) * [[Wikipedia:Request directory|Making requests]] * [[Wikipedia:Who writes Wikipedia?|Who writes Wikipedia?]] | group2 = [[Wikipedia:Reader's index to Wikipedia|Help for readers]]&nbsp;{{Define|(?)|Concerns and questions readers may have about Wikipedia}} | list2 = *[[Wikipedia:FAQ/Readers|FAQ]] *[[Wikipedia:Wikipedia book creator status|Books]] * [[Help:Copyright|Copyright]] * [[Help:Glossary|Glossary]] * [[Help:Mobile access|Mobile access]] * [[Help:Navigation|Navigation]] * [[Help:Other languages|Other languages]] * [[Help:Searching|Searching]] * [[Help:Student help|Students]] * [[Help:Viewing media|Viewing media]] | group3 = [[Wikipedia:Contributing to Wikipedia|Contributing<br/>to Wikipedia]]&nbsp;{{Define|(?)|Overviews and resources needed to comprehend, comment on, and edit}} | list3 = * [[Wikipedia:Guidance for younger editors|Advice for young editors]] * [[Wikipedia:Avoiding common mistakes|Avoiding common mistakes]] * [[Wikipedia:Etiquette|Etiquette]] * [[Wikipedia:Simplified Manual of Style|Simplified Manual of Style]] * [[Wikipedia:Simplified ruleset|Simplified rule-set]] ** [[Wikipedia:Ignore all rules|"Ignore all rules"]] ** [[Wikipedia:The rules are principles|"The rules are principles"]] *[[Wikipedia:Styletips|Style-tips]] * [[Wikipedia:Tip of the day|Tip of the day]] * [[Help:Your first article|Your first article]]&nbsp;([[Wikipedia:Article wizard|article wizard]]) | group4 = [[Help:Getting started|Getting started]]&nbsp;{{Define|(?)|Introductions and tutorials}} | list4 = * [[Wikipedia:Why create an account?|Why create an account?]] *[[Help:Introduction|Introductions by topic]] * [[Wikipedia:Graphics tutorials|Graphics tutorials]] ** [[Help:Pictures|Picture tutorial]] ** [[Wikipedia:IRC/Tutorial|IRC {{smaller|(live chat)}} tutorial]] * [[Wikipedia:VisualEditor/User guide|VisualEditor user guide]] | group5 = [[Wikipedia:Dos and don'ts|Dos and don'ts]]&nbsp;{{Define|(?)|Wikipedia policies, guidelines, and formatting standards in bullet points}} | list5 = * [[Wikipedia:Accessibility dos and don'ts|Accessibility]] * [[Wikipedia:Biography dos and don'ts|Biographies]] * [[Wikipedia:Biographies of living persons dos and don'ts|Biographies (living)]] * [[Wikipedia:Categorization dos and don'ts|Categorization]] * [[Wikipedia:Consensus dos and don'ts|Consensus]] * [[Wikipedia:Talk dos and don'ts|Discussions]] * [[Wikipedia:Disambiguation dos and don'ts|Disambiguation]] * [[Wikipedia:Image dos and don'ts|Images]] * [[Wikipedia:Lead dos and don'ts|Leads]] * [[Wikipedia:Linking dos and don'ts|Links]] * [[Wikipedia:List dos and don'ts|Lists]] * [[Wikipedia:References dos and don'ts|References]] * [[Wikipedia:Table dos and don'ts|Tables]] * [[Wikipedia:Article title dos and don'ts|Titles (of articles)]] | group7 = [[:Category:Wikipedia how-to|How-to pages]] and<br/>[[:Category:Wikipedia information pages|information pages]]&nbsp;{{Define|(?)|Topic specific informative and instructional pages}} | list7 = * [[Wikipedia:Guide to appealing blocks|Appealing blocks]] * [[Wikipedia:Guide to deletion|Article deletion]] * [[Help:Category|Categories]] * [[Help:Citations quick reference|Citations/references]] ** [[Help:Referencing for beginners|Referencing for beginners]] ** [[Help:Citation Style 1|Citation Style 1]] ** [[Help:Cite errors|Cite errors]] ** [[Help:References and page numbers|References and page numbers]] * [[Help:Convert|Convert]] * [[Help:Diff|Diff]] * [[Help:Editing|Editing]] ** [[Help:Minor edit|Minor edit]] ** [[Help:Edit toolbar|toolbar]] ** [[Help:Edit conflict|edit conflict]] * [[Help:Find sources|Find sources]] * [[Help:Files|Files]] * [[Help:Footnotes|Footnotes]] * [[Wikipedia:Guide to image deletion|Image deletion]] * [[Help:Infobox|Infoboxes]] * [[Help:Link|Linking]]&nbsp;([[Help:Link color|link color]]) * [[Help:Logging in|Logging in]] * [[Wikipedia:Merging|Merging]] * [[Help:Page name|Page name]] ** [[Help:How to move a page|Renaming pages]] * [[Help:Redirect|Redirect]] * [[Help:Reset password|Passwords]] ** [[Help:Email confirmation|Email confirmation]] * [[Help:Reverting|Reverting]] ** [[Help:Simple guide to vandalism cleanup|Simple vandalism cleanup]] * [[Help:Talk pages|Talk pages]]&nbsp;([[Help:Archiving a talk page|archiving]] *[[Help:Archiving (plain and simple)|simple archiving]]) * [[Help:User contributions|User contributions]] * [[Help:WP search protocol|WP search protocol]] | group8 = [[Wiki markup|Coding]]&nbsp;{{Define|(?)|Wikitext information consists of the syntax used to format a page}} | list8 = * [[Help:Wikitext|Wiki markup]] * [[Help:Barchart|Barchart]]s * [[Help:Calculation|Calculation]]s * [[Help:Special characters|Characters]] * [[Help:Columns|Column]]s * [[Wikipedia:Manual of Style/Hidden text|Hidden text]] * [[Help:HTML in wikitext|HTML]] * [[Help:List|Lists]] * [[Help:Magic words|Magic words]] * [[Help:Musical symbols|Music symbols]] * [[Help:Section|Sections]] * [[Help:Sound file markup|Sounds]] * [[Help:Table|Tables]] * [[Help:Template|Template]]s * [[Wikipedia:Transclusion|Transclusion]] * [[Help:URL|URL]] * [[Help:Visual file markup|Visual files]] | group9 = [[Wikipedia:Directories and indexes|Directories]]&nbsp;{{Define|(?)|Wikipedia's directories and indexes}} | list9 = * [[Wikipedia:Wikipedia abbreviations|Abbreviations]] *[[Wikipedia:Contents|Contents]] <small>(Encyclopedia proper)</small> * [[Wikipedia:Department directory|Departments]] * [[Wikipedia:Editor's index to Wikipedia|Editor's index]] * [[Wikipedia:Essay directory|Essays]] * [[Wikipedia:FAQ/Index|FAQs]] * [[Wikipedia:Glossary|Glossary]] * [[Wikipedia:List of guidelines|Guidelines]] * [[Wikipedia:Manual of Style/Contents|Manual of Style ]] * [[Wikipedia:List of policies|Policies]] *[[Wikipedia:Maintenance|Tasks]] * [[Wikipedia:Tips|Tips]] * [[Wikipedia:Tools|Tools]] | below =''' [[Help: Wikipedia: The Missing Manual|Missing Manual]]''' ---- {{edit|Special:MyTalk|'''Ask for help on your talk page'''|section=new|preload=Help:Contents/helpmepreload|preloadtitle=Help me!}}&nbsp;'''{{Define|(?)| If you need help, you can use this link to ask a question on your talk page; a volunteer will visit you there shortly!}}''' }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --> </noinclude> b936e44c69277aadf07ff0d3d227e49775c7d720 Template:Infobox settlement/styles.css 10 1429 2764 2021-09-08T20:43:54Z w>Izno 0 fix .maptable line sanitized-css text/css /* {{pp|small=y}} */ .ib-settlement { width: 23em; border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-settlement td, .ib-settlement th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-settlement .mergedtoprow .infobox-full-data, .ib-settlement .mergedtoprow .infobox-header, .ib-settlement .mergedtoprow .infobox-data, .ib-settlement .mergedtoprow .infobox-label, .ib-settlement .mergedtoprow .infobox-below { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.2em 0.6em; } .ib-settlement .mergedrow .infobox-full-data, .ib-settlement .mergedrow .infobox-data, .ib-settlement .mergedrow .infobox-label { border: 0; padding: 0 0.6em 0.2em 0.6em; } .ib-settlement .mergedbottomrow .infobox-full-data, .ib-settlement .mergedbottomrow .infobox-data, .ib-settlement .mergedbottomrow .infobox-label { border-top: 0; border-bottom: 1px solid #a2a9b1; padding: 0 0.6em 0.4em 0.6em; } .ib-settlement .maptable { border: 0; padding: 0; } .ib-settlement .infobox-header, .ib-settlement .infobox-below { text-align: left; } .ib-settlement .infobox-above { font-size: 125%; line-height: 1.3em; } .ib-settlement .infobox-subheader { background-color: #cddeff; font-weight: bold; } .ib-settlement-native { font-weight: normal; padding-top: 0.2em; } .ib-settlement-other-name { font-size: 78%; } .ib-settlement-official { font-weight: bold; } .ib-settlement-caption { padding: 0.3em 0 0 0; } .ib-settlement-caption-link { padding: 0.2em 0; } .ib-settlement-nickname { display: inline; } .ib-settlement-fn { font-weight: normal; display: inline; } bcad428737f5a62eb7bced25a38fccbd46dde186 Template:Years or months ago 10 1461 2796 2021-09-09T05:28:30Z w>GPHemsley 0 Fix 1-2 years in the future at year magnitude wikitext text/x-wiki <includeonly>{{#ifexpr:{{#if:{{{2|}}}|1|0}}=0 or abs( ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12)) >= 12 |<!-- in years -->{{#expr:floor(abs( ( ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) ) / 12 ))}}&nbsp;{{#ifexpr:({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) < 0 |<!-- future -->{{#ifexpr:ceil( ( ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) ) / 12 ) = -1|year's|years'}} |<!-- past/current -->{{#ifexpr:floor( ( ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) ) / 12 ) = 1|year|years}} }} |<!-- in months -->{{#expr:abs( ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) )}}&nbsp;{{#ifexpr:({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) < 0 |<!-- future -->{{#ifexpr: ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) = -1|month's|months'}} |<!-- past/current -->{{#ifexpr: ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) = 1|month|months}} }} }} {{#ifexpr:({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) < 0|time|ago}}</includeonly><noinclude> {{Documentation}} </noinclude> 1c004998622fa0e92c3422d828e3b87bb5f5a948 Template:Infobox country/styles.css 10 244 1265 2021-09-09T08:52:58Z wikipedia>Goszei 0 use default sanitized-css text/css /* {{pp|small=y}} */ .ib-country { border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-country td, .ib-country th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-country .mergedtoprow .infobox-header, .ib-country .mergedtoprow .infobox-label, .ib-country .mergedtoprow .infobox-data, .ib-country .mergedtoprow .infobox-full-data, .ib-country .mergedtoprow .infobox-below { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.2em 0.6em; } .ib-country .mergedrow .infobox-label, .ib-country .mergedrow .infobox-data, .ib-country .mergedrow .infobox-full-data { border: 0; padding: 0 0.6em 0.2em 0.6em; } .ib-country .mergedbottomrow .infobox-label, .ib-country .mergedbottomrow .infobox-data, .ib-country .mergedbottomrow .infobox-full-data { border-top: 0; border-bottom: 1px solid #a2a9b1; padding: 0 0.6em 0.4em 0.6em; } .ib-country .infobox-header { text-align: left; } .ib-country .infobox-above { font-size: 125%; line-height: 1.2; } .ib-country-names { padding-top: 0.25em; font-weight: normal; } .ib-country-name-style { display: inline; } .ib-country .infobox-image { padding: 0.5em 0; } .ib-country-anthem { border-top: 1px solid #a2a9b1; padding-top: 0.5em; margin-top: 0.5em; } .ib-country-map-caption { position: relative; top: 0.3em; } .ib-country-largest, .ib-country-lang { font-weight: normal; } .ib-country-ethnic, .ib-country-religion, .ib-country-sovereignty { font-weight: normal; display: inline; } .ib-country-fake-li { text-indent: -0.9em; margin-left: 1.2em; font-weight: normal; } .ib-country-fake-li2 { text-indent: 0.5em; margin-left: 1em; font-weight: normal; } .ib-country-website { line-height: 11pt; } .ib-country-map-caption3 { position: relative; top: 0.3em; } .ib-country-fn { text-align: left; margin: 0 auto; } .ib-country-fn-alpha { list-style-type: lower-alpha; margin-left: 1em; } .ib-country-fn-num { margin-left: 1em; } 3112a323cf9739e86afd52812cd38e196abfae7d Module:Redirect 828 91 229 2021-09-10T07:46:37Z wikipedia>Johnuniq 0 restore p.getTargetFromText which is used by [[Module:RfD]] which is causing "Lua error in Module:RfD at line 87: attempt to call upvalue 'getTargetFromText' (a nil value)" Scribunto text/plain -- This module provides functions for getting the target of a redirect page. local p = {} -- Gets a mw.title object, using pcall to avoid generating script errors if we -- are over the expensive function count limit (among other possible causes). local function getTitle(...) local success, titleObj = pcall(mw.title.new, ...) if success then return titleObj else return nil end end -- Gets the name of a page that a redirect leads to, or nil if it isn't a -- redirect. function p.getTargetFromText(text) local target = string.match( text, "^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)%]%]" ) or string.match( text, "^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]" ) return target and mw.uri.decode(target, 'PATH') end -- Gets the target of a redirect. If the page specified is not a redirect, -- returns nil. function p.getTarget(page, fulltext) -- Get the title object. Both page names and title objects are allowed -- as input. local titleObj if type(page) == 'string' or type(page) == 'number' then titleObj = getTitle(page) elseif type(page) == 'table' and type(page.getContent) == 'function' then titleObj = page else error(string.format( "bad argument #1 to 'getTarget'" .. " (string, number, or title object expected, got %s)", type(page) ), 2) end if not titleObj then return nil end local targetTitle = titleObj.redirectTarget if targetTitle then if fulltext then return targetTitle.fullText else return targetTitle.prefixedText end else return nil end end --[[ -- Given a single page name determines what page it redirects to and returns the -- target page name, or the passed page name when not a redirect. The passed -- page name can be given as plain text or as a page link. -- -- Returns page name as plain text, or when the bracket parameter is given, as a -- page link. Returns an error message when page does not exist or the redirect -- target cannot be determined for some reason. --]] function p.luaMain(rname, bracket, fulltext) if type(rname) ~= "string" or not rname:find("%S") then return nil end bracket = bracket and "[[%s]]" or "%s" rname = rname:match("%[%[(.+)%]%]") or rname local target = p.getTarget(rname, fulltext) local ret = target or rname ret = getTitle(ret) if ret then if fulltext then ret = ret.fullText else ret = ret.prefixedText end return bracket:format(ret) else return nil end end -- Provides access to the luaMain function from wikitext. function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {frameOnly = true}) return p.luaMain(args[1], args.bracket, args.fulltext) or '' end -- Returns true if the specified page is a redirect, and false otherwise. function p.luaIsRedirect(page) local titleObj = getTitle(page) if not titleObj then return false end if titleObj.isRedirect then return true else return false end end -- Provides access to the luaIsRedirect function from wikitext, returning 'yes' -- if the specified page is a redirect, and the blank string otherwise. function p.isRedirect(frame) local args = require('Module:Arguments').getArgs(frame, {frameOnly = true}) if p.luaIsRedirect(args[1]) then return 'yes' else return '' end end return p a224c45940343d66f49a78b0a39b2045e2c45d20 Template:Braces 10 853 1888 2021-09-12T08:18:17Z wikipedia>Ans 0 not use <nowiki>, so that it can be expanded by Lua frame:preprocess() wikitext text/x-wiki {{#if:{{{code|{{{tt|}}}}}}|<code>}}<!-- -->{{((}}{{{1|{{thin space}}}}}<!-- -->{{#if:{{{2|}}} |{{thin space}}{{!}}{{thin space}}{{{2}}}}}<!-- -->{{#if:{{{3|}}} |{{thin space}}{{!}}{{thin space}}{{{3}}}}}<!-- -->{{#if:{{{4|}}} |{{thin space}}{{!}}{{thin space}}{{{4}}}}}<!-- -->{{#if:{{{5|}}} |{{thin space}}{{!}}{{thin space}}{{{5}}}}}<!-- -->{{#if:{{{6|}}} |{{thin space}}{{!}}{{thin space}}{{{6}}}}}<!-- -->{{#if:{{{7|}}} |{{thin space}}{{!}}{{thin space}}{{{7}}}}}<!-- -->{{#if:{{{8|}}} |{{thin space}}{{!}}{{thin space}}{{{8}}}}}<!-- -->{{#if:{{{9|}}} |{{thin space}}{{!}}{{thin space}}{{{9}}}}}<!-- -->{{))}}<!-- -->{{#if:{{{code|{{{tt|}}}}}}|</code>}}<noinclude>{{Documentation}}</noinclude> 74380d03f02b9bc8e318779cf6ef320eec5c3e56 Template:Infobox country/formernext/styles.css 10 561 1257 2021-09-15T14:37:42Z wikipedia>Great Brightstar 0 Fix for mobile phone screen sanitized-css text/css .ib-country-formernext { width: 95%; margin: 0 auto; display: flex; justify-content: center; } .ib-country-formernext > div { min-width: 50%; flex-grow: 1; } .ib-country-formernext table { width: 100%; } /* .ib-country-formernext caption { font-weight: bold; text-align: center; } */ @media all and (max-width: 720px) { body.skin-minerva .ib-country-formernext table { display: table; } } a0cc4f82f1cfcb3da5919ad63b7e9fc65b113823 Template:About 10 110 267 2021-09-16T00:56:50Z wikipedia>Wbm1058 0 should implement in [[Module:About]]. Piped {{!}} links causing false positives. wikitext text/x-wiki {{#invoke:about|about}}<noinclude> {{Documentation}} </noinclude> 34b07e47d9b8220bf56dd9882945ad464b21a731 Template:TOC right 10 1056 2310 2021-09-17T13:06:17Z wikipedia>Izno 0 don't emit style unless width exists wikitext text/x-wiki <templatestyles src="Template:TOC_right/styles.css" />{{#if:{{{limit|}}}|<templatestyles src="Template:TOC limit/styles.css" />}}<!-- --><div class="tocright {{#if:{{{clear|}}}|tocright-clear-{{{clear|}}}}} {{#if:{{{limit|}}}|toclimit-{{{limit}}}}}" {{#if:{{{width|{{{1|}}}}}}|style="width: {{{width|{{{1}}}}}};"}}>__TOC__</div><noinclude> {{documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 67c60b46e441afa40d8c4c1227aa6580a0cda2e9 Template:TOC right/styles.css 10 1057 2312 2021-09-17T13:56:38Z wikipedia>Izno 0 do the same thing I apparently did to tocleft much earlier sanitized-css text/css /* {{pp-template}} */ /* The TOC is hidden on Minerva (mobile skin) for width < 720px so must also hide this wrapper */ @media all and (max-width: 720px) { body.skin-minerva .tocright { display: none; } .tocright { width: 100% !important; /* fix the inline width while at small resolution */ } } @media all and (min-width: 720px) { .tocright { float: right; clear: right; width: auto; margin: 0 0 0.5em 1em; } .tocright-clear-left { clear: left; } .tocright-clear-both { clear: both; } .tocright-clear-none { clear: none; } } 60435a52ddabf7eb321fa80dbf78c0d63d13f95b Template:R/where 10 1368 2703 2021-09-17T17:59:43Z w>MusikBot II 0 Protected "[[Template:R/where]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 30280 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <!-- Only for internal use: |plural=pages |singular=page |location=in-source-location |spacing=character -->{{#if:{{{plural|}}}|{{{plural|}}}{{#if:{{{singular|}}}|,{{{spacing|}}}[{{{singular|}}}]}}|{{{singular|}}}}}{{#if:{{{location|}}}|{{#if:{{{plural|}}}{{{singular|}}}|,{{{spacing|}}}}}{{{location|}}}}}<noinclude> {{documentation}} </noinclude> 989c22572564c1eff6ca2e1f6e95d6b4faba5c3a Template:Navbar-header/styles.css 10 1665 3079 2021-09-19T17:16:02Z wikipedia>Izno 0 Protected "[[Template:Navbar-header/styles.css]]" ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) sanitized-css text/css /* {{pp|small=y}} */ .navbar-header { text-align: center; position: relative; white-space: nowrap; } .navbar-header .navbar { position: absolute; right: 0; top: 0; margin: 0 5px; } cb7fd125aebdbd99d22411362a9b5007e97c32be Template:PAGENAMETDOC 10 1295 2630 2021-09-19T22:49:59Z w>JJMC89 bot III 0 Moving [[:Category:Wikipedia variable-like templates]] to [[:Category:Wikipedia magic word templates]] per [[Wikipedia:Categories for discussion/Log/2021 September 11#Category:Wikipedia variable-like templates]] wikitext text/x-wiki {{#ifeq:{{#invoke:String|find|{{FULLPAGENAME}}|/sandbox%d*$|plain=false}}|0|{{{{#if:{{{1|}}}||FULL}}BASEPAGENAME}}|{{{{#if:{{{1|}}}||FULL}}PAGENAME}}}}<noinclude> {{Documentation|content= This template returns the current {{Tlx|FULLBASEPAGENAME}}, unless the title ends in <code>/sandbox</code> plus any number of digits, in which case it returns the {{tlx|FULLPAGENAME}}. It is primarily meant for demonstrating the sandbox version of templates in their documentation. This template takes one numbered parameter (<code>1</code>); if anything is in this parameter then it will return <code>&#123;&#123;BASEPAGENAME&#125;&#125;</code> and <code>&#123;&#123;PAGENAME&#125;&#125;</code>, which have no namespace prefix. }} [[Category:Wikipedia magic word templates]] </noinclude> ae0c3ac1a7415671c46f970d5faad2fd708640b0 Module:Sidebar/styles.css 828 44 83 2021-09-20T01:15:45Z wikipedia>Goszei 0 self-rv, it's a little tight text text/plain /* {{pp-template}} */ /* TODO: Invert width design to be "mobile first" */ .sidebar { /* TODO: Ask if we should have max-width 22em instead */ width: 22em; /* @noflip */ float: right; /* @noflip */ clear: right; /* @noflip */ margin: 0.5em 0 1em 1em; background: #f8f9fa; border: 1px solid #aaa; padding: 0.2em; text-align: center; line-height: 1.4em; font-size: 88%; border-collapse: collapse; /* Timeless has display: none on .nomobile at mobile resolutions, so we * unhide it with display: table and let precedence and proximity win. */ display: table; } /* Unfortunately, so does Minerva desktop, except Minerva drops an * !important on the declaration. So we have to be mean for Minerva users. * Mobile removes the element entirely with `wgMFRemovableClasses` in * https://github.com/wikimedia/operations-mediawiki-config/blob/master/ wmf-config/InitialiseSettings.php#L16992 * which is why displaying it categorically with display: table works. * We don't really want to expose the generic user in the wild on mobile to have * to deal with sidebars. (Maybe the ones with collapsible lists, so that * might be an improvement. That is blocked on [[:phab:T111565]].) */ body.skin-minerva .sidebar { display: table !important; /* also, minerva is way too aggressive about other stylings on tables. * TODO remove when this template gets moved to a div. plans on talk page. * We always float right on Minerva because that's a lot of extra CSS * otherwise. */ float: right !important; margin: 0.5em 0 1em 1em !important; } .sidebar-subgroup { width: 100%; margin: 0; border-spacing: 0; } .sidebar-left { /* @noflip */ float: left; /* @noflip */ clear: left; /* @noflip */ margin: 0.5em 1em 1em 0; } .sidebar-none { float: none; clear: both; /* @noflip */ margin: 0.5em 1em 1em 0; } .sidebar-outer-title { padding: 0 0.4em 0.2em; font-size: 125%; line-height: 1.2em; font-weight: bold; } .sidebar-top-image { padding: 0.4em; } .sidebar-top-caption, .sidebar-pretitle-with-top-image, .sidebar-caption { padding: 0.2em 0.4em 0; line-height: 1.2em; } .sidebar-pretitle { padding: 0.4em 0.4em 0; line-height: 1.2em; } .sidebar-title, .sidebar-title-with-pretitle { padding: 0.2em 0.8em; font-size: 145%; line-height: 1.2em; } .sidebar-title-with-pretitle { padding: 0.1em 0.4em; } .sidebar-image { padding: 0.2em 0.4em 0.4em; } .sidebar-heading { padding: 0.1em 0.4em; } .sidebar-content { padding: 0 0.5em 0.4em; } .sidebar-content-with-subgroup { padding: 0.1em 0.4em 0.2em; } .sidebar-above, .sidebar-below { padding: 0.3em 0.8em; font-weight: bold; } .sidebar-collapse .sidebar-above, .sidebar-collapse .sidebar-below { border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; } .sidebar-navbar { text-align: right; font-size: 115%; padding: 0 0.4em 0.4em; } .sidebar-list-title { padding: 0 0.4em; text-align: left; font-weight: bold; line-height: 1.6em; font-size: 105%; } /* centered text with mw-collapsible headers is finicky */ .sidebar-list-title-c { padding: 0 0.4em; text-align: center; margin: 0 3.3em; } @media (max-width: 720px) { /* users have wide latitude to set arbitrary width and margin :( "Super-specific" selector to prevent overriding this appearance by lower level sidebars too */ body.mediawiki .sidebar { width: 100% !important; clear: both; float: none !important; /* Remove when we div based; Minerva is dumb */ margin-left: 0 !important; margin-right: 0 !important; } /* TODO: We might consider making all links wrap at small resolutions and then * only introduce nowrap at higher resolutions. Do when we invert the media * query. */ } 7d621b35a37807a103b59075851fe36201204ceb Template:Country data Malta 10 1216 2545 2021-09-25T06:38:18Z w>Paine Ellsworth 0 per edit request on talk page - include unofficial flag variant - 1943 wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Malta | flag alias = Flag of Malta.svg | flag alias-1875 = Flag of Malta (1875–1898).svg | flag alias-1898 = Flag of Malta (1898–1923).svg | flag alias-1923 = Flag of Malta (1923–1943).svg | flag alias-1943 = Flag of Malta (1943–1964).svg | flag alias-unofficial-1943 = Flag of Malta (1943).svg | flag alias-colonial = Flag of Malta (1943-1964).svg <!-- deprecated, but in use --> | flag alias-civil = Civil Ensign of Malta.svg | link alias-naval = Maritime Squadron of the Armed Forces of Malta | link alias-navy = Maritime Squadron of the Armed Forces of Malta | flag alias-navy =Naval Jack of Malta.svg | flag alias-1814 = 19th Century Flag of Malta.svg | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1875 | var2 = 1898 | var3 = 1923 | var4 = 1943 | var5 = unofficial-1943 | var6 = civil | var7 = 1814 | redir1 = MLT | related1 = Sovereign Military Order of Malta </noinclude> }} abdbfec3b581828dc7c870e10ed7e938c73d9857 Template:R 10 1369 2704 2021-09-25T21:49:10Z w>Matthiaspaul 0 updated wikitext text/x-wiki <includeonly><!-- ### 1 ### -->{{r/ref|{{{name1|{{{name|{{{n1|{{{n|{{{1|}}}}}}}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction1|{{{direction|{{{dir1|{{{dir|}}}}}}}}}}}} |page{{#if:{{{page1|{{{page|{{{p1|{{{1p|{{{p|}}}}}}}}}}}}}}}||NULL}}={{{page1|{{{page|{{{p1|{{{1p|{{{p|}}}}}}}}}}}}}}} |pages{{#if:{{{pages1|{{{pages|{{{pp1|{{{1pp|{{{pp|}}}}}}}}}}}}}}}||NULL}}={{{pages1|{{{pages|{{{pp1|{{{1pp|{{{pp|}}}}}}}}}}}}}}} |location{{#if:{{{location1|{{{location|{{{loc1|{{{1loc|{{{loc|{{{at1|{{{at|}}}}}}}}}}}}}}}}}}}}}||NULL}}={{{location1|{{{location|{{{loc1|{{{1loc|{{{loc|{{{at1|{{{at|}}}}}}}}}}}}}}}}}}}}} |quote-page{{#if:{{{quotation-page1|{{{quotation-page|{{{quote-page1|{{{quote-page|{{{qp1|{{{qp|}}}}}}}}}}}}}}}}}}||NULL}}={{{quotation-page1|{{{quotation-page|{{{quote-page1|{{{quote-page|{{{qp1|{{{qp|}}}}}}}}}}}}}}}}}} |quote-pages{{#if:{{{quotation-pages1|{{{quotation-pages|{{{quote-pages1|{{{quote-pages|{{{qpp1|{{{qpp|}}}}}}}}}}}}}}}}}}||NULL}}={{{quotation-pages1|{{{quotation-pages|{{{quote-pages1|{{{quote-pages|{{{qpp1|{{{qpp|}}}}}}}}}}}}}}}}}} |quote-location{{#if:{{{quotation-location1|{{{quotation-location|{{{quote-location1|{{{quote-location|{{{quote-loc1|{{{quote-loc|{{{quote-at1|{{{quote-at|}}}}}}}}}}}}}}}}}}}}}}}}||NULL}}={{{quotation-location1|{{{quotation-location|{{{quote-location1|{{{quote-location|{{{quote-loc1|{{{quote-loc|{{{quote-at1|{{{quote-at|}}}}}}}}}}}}}}}}}}}}}}}} |quote={{{quotation1|{{{quotation|{{{quote1|{{{quote|{{{q1|{{{q|}}}}}}}}}}}}}}}}}} |language={{{quotation-language1|{{{quotation-language|{{{quote-language1|{{{quote-language|{{{quotation-lang1|{{{quotation-lang|{{{quote-lang1|{{{quote-lang|{{{ql1|{{{ql|{{{language1|{{{language|{{{lang1|{{{language|{{{l1|{{{l|}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} |translation={{{translation-quotation1|{{{translation-quotation|{{{trans-quotation1|{{{trans-quotation|{{{translation-quote1|{{{translation-quote|{{{trans-quote1|{{{trans-quote|{{{tq1|{{{tq|{{{translation1|{{{translation|{{{trans1|{{{trans|{{{t1|{{{t|{{{xlat1|{{{xlat|}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} |quote-cite={{{quotation-cite1|{{{quotation-cite|{{{quote-cite1|{{{quote-cite|{{{qc1|{{{qc|}}}}}}}}}}}}}}}}}} |reference={{{reference1|{{{references|{{{reference|{{{notes|{{{note|{{{content|{{{text|{{{refn1|{{{refn|{{{refs|{{{r1|{{{r|}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} |annotation={{{annotation1|{{{annotation|{{{annot1|{{{annot|{{{a1|{{{a|}}}}}}}}}}}}}}}}}} |leadin={{{leadin|}}} |postscript={{{postscript|{{{postscript1|{{{ps|{{{ps1|{{{1ps|}}}}}}}}}}}}}}} |section={{{section1|{{{section|{{{sec1|{{{sec|{{{s1|{{{s|}}}}}}}}}}}}}}}}}} |needed-reason={{{needed-reason1|{{{needed-reason|{{{needed1|{{{needed|{{{reason|}}}}}}}}}}}}}}} |needed-date={{{needed-date|{{{date|}}}}}} |wrap={{{wrap|}}} |no-pp={{{no-pp|{{{nopp|}}}}}} |style={{{style|}}} |content-id={{{ref1|{{{1ref|{{{ref|{{{id1|{{{id|}}}}}}}}}}}}}}} |link-id={{{link-id1|{{{link-id|}}}}}} |debug={{{debug|}}}}}<!-- ### 2 ### -->{{#if:{{{name2|{{{n2|{{{2|}}}}}}}}}|{{r/ref|{{{name2|{{{n2|{{{2|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction2|{{{dir2|}}}}}} |page{{#if:{{{page2|{{{p2|{{{2p|}}}}}}}}}||NULL}}={{{page2|{{{p2|{{{2p|}}}}}}}}} |pages{{#if:{{{pages2|{{{pp2|{{{2pp|}}}}}}}}}||NULL}}={{{pages2|{{{pp2|{{{2pp|}}}}}}}}} |location{{#if:{{{location2|{{{loc2|{{{2loc|{{{at2|}}}}}}}}}}}}||NULL}}={{{location2|{{{loc2|{{{2loc|{{{at2|}}}}}}}}}}}} |quote-page{{#if:{{{quotation-page2|{{{quote-page2|{{{qp2|}}}}}}}}}||NULL}}={{{quotation-page2|{{{quote-page2|{{{qp2|}}}}}}}}} |quote-pages{{#if:{{{quotation-pages2|{{{quote-pages2|{{{qpp2|}}}}}}}}}||NULL}}={{{quotation-pages2|{{{quote-pages2|{{{qpp2|}}}}}}}}} |quote-location{{#if:{{{quotation-location2|{{{quote-location2|{{{quote-loc2|{{{quote-at2|}}}}}}}}}}}}||NULL}}={{{quotation-location2|{{{quote-location2|{{{quote-loc2|{{{quote-at2|}}}}}}}}}}}} |quote={{{quotation2|{{{quote2|{{{q2|}}}}}}}}} |language={{{quotation-language2|{{{quote-language2|{{{quotation-lang2|{{{quote-lang2|{{{ql2|{{{language2|{{{lang2|{{{l2|}}}}}}}}}}}}}}}}}}}}}}}} |translation={{{translation-quotation2|{{{trans-quotation2|{{{translation-quote2|{{{trans-quote2|{{{tq2|{{{translation2|{{{trans2|{{{t2|{{{xlat2|}}}}}}}}}}}}}}}}}}}}}}}}}}} |quote-cite={{{quotation-cite2|{{{quote-cite2|{{{qc2|}}}}}}}}} |reference={{{reference2|{{{refn2|{{{r2|}}}}}}}}} |annotation={{{annotation2|{{{annot2|{{{a2|}}}}}}}}} |leadin={{{leadin|}}} |postscript={{{postscript2|{{{ps2|{{{2ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}} |section={{{section2||{{{sec2|{{{s2|}}}}}}}}} |needed-reason={{{needed-reason2|{{{needed2|}}}}}} |needed-date={{{needed-date|{{{date|}}}}}} |wrap={{{wrap|}}} |no-pp={{{no-pp|{{{nopp|}}}}}} |style={{{style|}}} |content-id={{{ref2|{{{2ref|{{{id2|}}}}}}}}} |link-id={{{link-id2|}}} |debug={{{debug|}}}}}<!-- ### 3 ### -->{{#if:{{{name3|{{{n3|{{{3|}}}}}}}}}|{{r/ref|{{{name3|{{{n3|{{{3|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction3|{{{dir3|}}}}}} |page{{#if:{{{page3|{{{p3|{{{3p|}}}}}}}}}||NULL}}={{{page3|{{{p3|{{{3p|}}}}}}}}} |pages{{#if:{{{pages3|{{{pp3|{{{3pp|}}}}}}}}}||NULL}}={{{pages3|{{{pp3|{{{3pp|}}}}}}}}} |location{{#if:{{{location3|{{{loc3|{{{3loc|{{{at3|}}}}}}}}}}}}||NULL}}={{{location3|{{{loc3|{{{3loc|{{{at3|}}}}}}}}}}}} |quote-page{{#if:{{{quotation-page3|{{{quote-page3|{{{qp3|}}}}}}}}}||NULL}}={{{quotation-page3|{{{quote-page3|{{{qp3|}}}}}}}}} |quote-pages{{#if:{{{quotation-pages3|{{{quote-pages3|{{{qpp3|}}}}}}}}}||NULL}}={{{quotation-pages3|{{{quote-pages3|{{{qpp3|}}}}}}}}} |quote-location{{#if:{{{quotation-location3|{{{quote-location3|{{{quote-loc3|{{{quote-at3|}}}}}}}}}}}}||NULL}}={{{quotation-location3|{{{quote-location3|{{{quote-loc3|{{{quote-at3|}}}}}}}}}}}} |quote={{{quotation3|{{{quote3|{{{q3|}}}}}}}}} |language={{{quotation-language3|{{{quote-language3|{{{quotation-lang3|{{{quote-lang3|{{{ql3|{{{language3|{{{lang3|{{{l3|}}}}}}}}}}}}}}}}}}}}}}}} |translation={{{translation-quotation3|{{{trans-quotation3|{{{translation-quote3|{{{trans-quote3|{{{tq3|{{{translation3|{{{trans3|{{{t3|{{{xlat3|}}}}}}}}}}}}}}}}}}}}}}}}}}} |quote-cite={{{quotation-cite3|{{{quote-cite3|{{{qc3|}}}}}}}}} |reference={{{reference3|{{{refn3|{{{r3|}}}}}}}}} |annotation={{{annotation3|{{{annot3|{{{a3|}}}}}}}}} |leadin={{{leadin|}}} |postscript={{{postscript3|{{{ps3|{{{3ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}} |section={{{section3||{{{sec3|{{{s3|}}}}}}}}} |needed-reason={{{needed-reason3|{{{needed3|}}}}}} |needed-date={{{needed-date|{{{date|}}}}}} |wrap={{{wrap|}}} |no-pp={{{no-pp|{{{nopp|}}}}}} |style={{{style|}}} |content-id={{{ref3|{{{3ref|{{{id3|}}}}}}}}} |link-id={{{link-id3|}}} |debug={{{debug|}}}}}<!-- ### 4 ### -->{{#if:{{{name4|{{{n4|{{{4|}}}}}}}}}|{{r/ref|{{{name4|{{{n4|{{{4|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction4|{{{dir4|}}}}}} |page{{#if:{{{page4|{{{p4|{{{4p|}}}}}}}}}||NULL}}={{{page4|{{{p4|{{{4p|}}}}}}}}} |pages{{#if:{{{pages4|{{{pp4|{{{4pp|}}}}}}}}}||NULL}}={{{pages4|{{{pp4|{{{4pp|}}}}}}}}} |location{{#if:{{{location4|{{{loc4|{{{4loc|{{{at4|}}}}}}}}}}}}||NULL}}={{{location4|{{{loc4|{{{4loc|{{{at4|}}}}}}}}}}}} |quote-page{{#if:{{{quotation-page4|{{{quote-page4|{{{qp4|}}}}}}}}}||NULL}}={{{quotation-page4|{{{quote-page4|{{{qp4|}}}}}}}}} |quote-pages{{#if:{{{quotation-pages4|{{{quote-pages4|{{{qpp4|}}}}}}}}}||NULL}}={{{quotation-pages4|{{{quote-pages4|{{{qpp4|}}}}}}}}} |quote-location{{#if:{{{quotation-location4|{{{quote-location4|{{{quote-loc4|{{{quote-at4|}}}}}}}}}}}}||NULL}}={{{quotation-location4|{{{quote-location4|{{{quote-loc4|{{{quote-at4|}}}}}}}}}}}} |quote={{{quotation4|{{{quote4|{{{q4|}}}}}}}}} |language={{{quotation-language4|{{{quote-language4|{{{quotation-lang4|{{{quote-lang4|{{{ql4|{{{language4|{{{lang4|{{{l4|}}}}}}}}}}}}}}}}}}}}}}}} |translation={{{translation-quotation4|{{{trans-quotation4|{{{translation-quote4|{{{trans-quote4|{{{tq4|{{{translation4|{{{trans4|{{{t4|{{{xlat4|}}}}}}}}}}}}}}}}}}}}}}}}}}} |quote-cite={{{quotation-cite4|{{{quote-cite4|{{{qc4|}}}}}}}}} |reference={{{reference4|{{{refn4|{{{r4|}}}}}}}}} |annotation={{{annotation4|{{{annot4|{{{a4|}}}}}}}}} |leadin={{{leadin|}}} |postscript={{{postscript4|{{{ps4|{{{4ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}} |section={{{section4||{{{sec4|{{{s4|}}}}}}}}} |needed-reason={{{needed-reason4|{{{needed4|}}}}}} |needed-date={{{needed-date|{{{date|}}}}}} |wrap={{{wrap|}}} |no-pp={{{no-pp|{{{nopp|}}}}}} |style={{{style|}}} |content-id={{{ref4|{{{4ref|{{{id4|}}}}}}}}} |link-id={{{link-id4|}}} |debug={{{debug|}}}}}<!-- ### 5 ### -->{{#if:{{{name5|{{{n5|{{{5|}}}}}}}}}|{{r/ref|{{{name5|{{{n5|{{{5|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction5|{{{dir5|}}}}}} |page{{#if:{{{page5|{{{p5|{{{5p|}}}}}}}}}||NULL}}={{{page5|{{{p5|{{{5p|}}}}}}}}} |pages{{#if:{{{pages5|{{{pp5|{{{5pp|}}}}}}}}}||NULL}}={{{pages5|{{{pp5|{{{5pp|}}}}}}}}} |location{{#if:{{{location5|{{{loc5|{{{5loc|{{{at5|}}}}}}}}}}}}||NULL}}={{{location5|{{{loc5|{{{5loc|{{{at5|}}}}}}}}}}}} |quote-page{{#if:{{{quotation-page5|{{{quote-page5|{{{qp5|}}}}}}}}}||NULL}}={{{quotation-page5|{{{quote-page5|{{{qp5|}}}}}}}}} |quote-pages{{#if:{{{quotation-pages5|{{{quote-pages5|{{{qpp5|}}}}}}}}}||NULL}}={{{quotation-pages5|{{{quote-pages5|{{{qpp5|}}}}}}}}} |quote-location{{#if:{{{quotation-location5|{{{quote-location5|{{{quote-loc5|{{{quote-at5|}}}}}}}}}}}}||NULL}}={{{quotation-location5|{{{quote-location5|{{{quote-loc5|{{{quote-at5|}}}}}}}}}}}} |quote={{{quotation5|{{{quote5|{{{q5|}}}}}}}}} |language={{{quotation-language5|{{{quote-language5|{{{quotation-lang5|{{{quote-lang5|{{{ql5|{{{language5|{{{lang5|{{{l5|}}}}}}}}}}}}}}}}}}}}}}}} |translation={{{translation-quotation5|{{{trans-quotation5|{{{translation-quote5|{{{trans-quote5|{{{tq5|{{{translation5|{{{trans5|{{{t5|{{{xlat5|}}}}}}}}}}}}}}}}}}}}}}}}}}} |quote-cite={{{quotation-cite5|{{{quote-cite5|{{{qc5|}}}}}}}}} |reference={{{reference5|{{{refn5|{{{r5|}}}}}}}}} |annotation={{{annotation5|{{{annot5|{{{a5|}}}}}}}}} |leadin={{{leadin|}}} |postscript={{{postscript5|{{{ps5|{{{5ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}} |section={{{section5||{{{sec5|{{{s5|}}}}}}}}} |needed-reason={{{needed-reason5|{{{needed5|}}}}}} |needed-date={{{needed-date|{{{date|}}}}}} |wrap={{{wrap|}}} |no-pp={{{no-pp|{{{nopp|}}}}}} |style={{{style|}}} |content-id={{{ref5|{{{5ref|{{{id5|}}}}}}}}} |link-id={{{link-id5|}}} |debug={{{debug|}}}}}<!-- ### 6 ### -->{{#if:{{{name6|{{{n6|{{{6|}}}}}}}}}|{{r/ref|{{{name6|{{{n6|{{{6|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction6|{{{dir6|}}}}}} |page{{#if:{{{page6|{{{p6|{{{6p|}}}}}}}}}||NULL}}={{{page6|{{{p6|{{{6p|}}}}}}}}} |pages{{#if:{{{pages6|{{{pp6|{{{6pp|}}}}}}}}}||NULL}}={{{pages6|{{{pp6|{{{6pp|}}}}}}}}} |location{{#if:{{{location6|{{{loc6|{{{6loc|{{{at6|}}}}}}}}}}}}||NULL}}={{{location6|{{{loc6|{{{6loc|{{{at6|}}}}}}}}}}}} |quote-page{{#if:{{{quotation-page6|{{{quote-page6|{{{qp6|}}}}}}}}}||NULL}}={{{quotation-page6|{{{quote-page6|{{{qp6|}}}}}}}}} |quote-pages{{#if:{{{quotation-pages6|{{{quote-pages6|{{{qpp6|}}}}}}}}}||NULL}}={{{quotation-pages6|{{{quote-pages6|{{{qpp6|}}}}}}}}} |quote-location{{#if:{{{quotation-location6|{{{quote-location6|{{{quote-loc6|{{{quote-at6|}}}}}}}}}}}}||NULL}}={{{quotation-location6|{{{quote-location6|{{{quote-loc6|{{{quote-at6|}}}}}}}}}}}} |quote={{{quotation6|{{{quote6|{{{q6|}}}}}}}}} |language={{{quotation-language6|{{{quote-language6|{{{quotation-lang6|{{{quote-lang6|{{{ql6|{{{language6|{{{lang6|{{{l6|}}}}}}}}}}}}}}}}}}}}}}}} |translation={{{translation-quotation6|{{{trans-quotation6|{{{translation-quote6|{{{trans-quote6|{{{tq6|{{{translation6|{{{trans6|{{{t6|{{{xlat6|}}}}}}}}}}}}}}}}}}}}}}}}}}} |quote-cite={{{quotation-cite6|{{{quote-cite6|{{{qc6|}}}}}}}}} |reference={{{reference6|{{{refn6|{{{r6|}}}}}}}}} |annotation={{{annotation6|{{{annot6|{{{a6|}}}}}}}}} |leadin={{{leadin|}}} |postscript={{{postscript6|{{{ps6|{{{6ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}} |section={{{section6||{{{sec6|{{{s6|}}}}}}}}} |needed-reason={{{needed-reason6|{{{needed6|}}}}}} |needed-date={{{needed-date|{{{date|}}}}}} |wrap={{{wrap|}}} |no-pp={{{no-pp|{{{nopp|}}}}}} |style={{{style|}}} |content-id={{{ref6|{{{6ref|{{{id6|}}}}}}}}} |link-id={{{link-id6|}}} |debug={{{debug|}}}}}<!-- ### 7 ### -->{{#if:{{{name7|{{{n7|{{{7|}}}}}}}}}|{{r/ref|{{{name7|{{{n7|{{{7|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction7|{{{dir7|}}}}}} |page{{#if:{{{page7|{{{p7|{{{7p|}}}}}}}}}||NULL}}={{{page7|{{{p7|{{{7p|}}}}}}}}} |pages{{#if:{{{pages7|{{{pp7|{{{7pp|}}}}}}}}}||NULL}}={{{pages7|{{{pp7|{{{7pp|}}}}}}}}} |location{{#if:{{{location7|{{{loc7|{{{7loc|{{{at7|}}}}}}}}}}}}||NULL}}={{{location7|{{{loc7|{{{loc7|{{{at7|}}}}}}}}}}}} |quote-page{{#if:{{{quotation-page7|{{{quote-page7|{{{qp7|}}}}}}}}}||NULL}}={{{quotation-page7|{{{quote-page7|{{{qp7|}}}}}}}}} |quote-pages{{#if:{{{quotation-pages7|{{{quote-pages7|{{{qpp7|}}}}}}}}}||NULL}}={{{quotation-pages7|{{{quote-pages7|{{{qpp7|}}}}}}}}} |quote-location{{#if:{{{quotation-location7|{{{quote-location7|{{{quote-loc7|{{{quote-at7|}}}}}}}}}}}}||NULL}}={{{quotation-location7|{{{quote-location7|{{{quote-loc7|{{{quote-at7|}}}}}}}}}}}} |quote={{{quotation7|{{{quote7|{{{q7|}}}}}}}}} |language={{{quotation-language7|{{{quote-language7|{{{quotation-lang7|{{{quote-lang7|{{{ql7|{{{language7|{{{lang7|{{{l7|}}}}}}}}}}}}}}}}}}}}}}}} |translation={{{translation-quotation7|{{{trans-quotation7|{{{translation-quote7|{{{trans-quote7|{{{tq7|{{{translation7|{{{trans7|{{{t7|{{{xlat7|}}}}}}}}}}}}}}}}}}}}}}}}}}} |quote-cite={{{quotation-cite7|{{{quote-cite7|{{{qc7|}}}}}}}}} |reference={{{reference7|{{{refn7|{{{r7|}}}}}}}}} |annotation={{{annotation7|{{{annot7|{{{a7|}}}}}}}}} |leadin={{{leadin|}}} |postscript={{{postscript7|{{{ps7|{{{7ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}} |section={{{section7||{{{sec7|{{{s7|}}}}}}}}} |needed-reason={{{needed-reason7|{{{needed7|}}}}}} |needed-date={{{needed-date|{{{date|}}}}}} |wrap={{{wrap|}}} |no-pp={{{no-pp|{{{nopp|}}}}}} |style={{{style|}}} |content-id={{{ref7|{{{7ref|{{{id7|}}}}}}}}} |link-id={{{link-id7|}}} |debug={{{debug|}}}}}<!-- ### 8 ### -->{{#if:{{{name8|{{{n8|{{{8|}}}}}}}}}|{{r/ref|{{{name8|{{{n8|{{{8|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction8|{{{dir8|}}}}}} |page{{#if:{{{page8|{{{p8|{{{8p|}}}}}}}}}||NULL}}={{{page8|{{{p8|{{{8p|}}}}}}}}} |pages{{#if:{{{pages8|{{{pp8|{{{8pp|}}}}}}}}}||NULL}}={{{pages8|{{{pp8|{{{8pp|}}}}}}}}} |location{{#if:{{{location8|{{{loc8|{{{8loc|{{{at8|}}}}}}}}}}}}||NULL}}={{{location8|{{{loc8|{{{8loc|{{{at8|}}}}}}}}}}}} |quote-page{{#if:{{{quotation-page8|{{{quote-page8|{{{qp8|}}}}}}}}}||NULL}}={{{quotation-page8|{{{quote-page8|{{{qp8|}}}}}}}}} |quote-pages{{#if:{{{quotation-pages8|{{{quote-pages8|{{{qpp8|}}}}}}}}}||NULL}}={{{quotation-pages8|{{{quote-pages8|{{{qpp8|}}}}}}}}} |quote-location{{#if:{{{quotation-location8|{{{quote-location8|{{{quote-loc8|{{{quote-at8|}}}}}}}}}}}}||NULL}}={{{quotation-location8|{{{quote-location8|{{{quote-loc8|{{{quote-at8|}}}}}}}}}}}} |quote={{{quotation8|{{{quote8|{{{q8|}}}}}}}}} |language={{{quotation-language8|{{{quote-language8|{{{quotation-lang8|{{{quote-lang8|{{{ql8|{{{language8|{{{lang8|{{{l8|}}}}}}}}}}}}}}}}}}}}}}}} |translation={{{translation-quotation8|{{{trans-quotation8|{{{translation-quote8|{{{trans-quote8|{{{tq8|{{{translation8|{{{trans8|{{{t8|{{{xlat8|}}}}}}}}}}}}}}}}}}}}}}}}}}} |quote-cite={{{quotation-cite8|{{{quote-cite8|{{{qc8|}}}}}}}}} |reference={{{reference8|{{{refn8|{{{r8|}}}}}}}}} |annotation={{{annotation8|{{{annot8|{{{a8|}}}}}}}}} |leadin={{{leadin|}}} |postscript={{{postscript8|{{{ps8|{{{8ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}} |section={{{section8||{{{sec8|{{{s8|}}}}}}}}} |needed-reason={{{needed-reason8|{{{needed8|}}}}}} |needed-date={{{needed-date|{{{date|}}}}}} |wrap={{{wrap|}}} |no-pp={{{no-pp|{{{nopp|}}}}}} |style={{{style|}}} |content-id={{{ref8|{{{8ref|{{{id8|}}}}}}}}} |link-id={{{link-id8|}}} |debug={{{debug|}}}}}<!-- ### 9 ### -->{{#if:{{{name9|{{{n9|{{{9|}}}}}}}}}|{{r/ref|{{{name9|{{{n9|{{{9|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction9|{{{dir9|}}}}}} |page{{#if:{{{page9|{{{p9|{{{9p|}}}}}}}}}||NULL}}={{{page9|{{{p9|{{{9p|}}}}}}}}} |pages{{#if:{{{pages9|{{{pp9|{{{9pp|}}}}}}}}}||NULL}}={{{pages9|{{{pp9|{{{9pp|}}}}}}}}} |location{{#if:{{{location9|{{{loc9|{{{9loc|{{{at9|}}}}}}}}}}}}||NULL}}={{{location9|{{{loc9|{{{9loc|{{{at9|}}}}}}}}}}}} |quote-page{{#if:{{{quotation-page9|{{{quote-page9|{{{qp9|}}}}}}}}}||NULL}}={{{quotation-page9|{{{quote-page9|{{{qp9|}}}}}}}}} |quote-pages{{#if:{{{quotation-pages9|{{{quote-pages9|{{{qpp9|}}}}}}}}}||NULL}}={{{quotation-pages9|{{{quote-pages9|{{{qpp9|}}}}}}}}} |quote-location{{#if:{{{quotation-location9|{{{quote-location9|{{{quote-loc9|{{{quote-at9|}}}}}}}}}}}}||NULL}}={{{quotation-location9|{{{quote-location9|{{{quote-loc9|{{{quote-at9|}}}}}}}}}}}} |quote={{{quotation9|{{{quote9|{{{q9|}}}}}}}}} |language={{{quotation-language9|{{{quote-language9|{{{quotation-lang9|{{{quote-lang9|{{{ql9|{{{language9|{{{lang9|{{{l9|}}}}}}}}}}}}}}}}}}}}}}}} |translation={{{translation-quotation9|{{{trans-quotation9|{{{translation-quote9|{{{trans-quote9|{{{tq9|{{{translation9|{{{trans9|{{{t9|{{{xlat9|}}}}}}}}}}}}}}}}}}}}}}}}}}} |quote-cite={{{quotation-cite9|{{{quote-cite9|{{{qc9|}}}}}}}}} |reference={{{reference9|{{{refn9|{{{r9|}}}}}}}}} |annotation={{{annotation9|{{{annot9|{{{a9|}}}}}}}}} |leadin={{{leadin|}}} |postscript={{{postscript9|{{{ps9|{{{9ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}} |section={{{section9||{{{sec9|{{{s9|}}}}}}}}} |needed-reason={{{needed-reason9|{{{needed9|}}}}}} |needed-date={{{needed-date|{{{date|}}}}}} |wrap={{{wrap|}}} |no-pp={{{no-pp|{{{nopp|}}}}}} |style={{{style|}}} |content-id={{{ref9|{{{9ref|{{{id9|}}}}}}}}} |link-id={{{link-id9|}}} |debug={{{debug|}}}}}<!-- ### Error handling ### -->{{#if:{{{name10|{{{n10|{{{10|}}}}}}}}}|<sup class="error" style="font-size:0.9em; line-height:0;">The template only supports up to 9 references.</sup> <!-- -->}}}}}}}}}}}}}}}}}}</includeonly><noinclude>{{documentation}}</noinclude> a5e416bfb1c7ffcf9e0136d4662d8d9be25aa1b3 Template:Template link with bold 10 1327 2662 2021-09-28T03:40:57Z w>MusikBot II 0 Protected "[[Template:Template link with bold]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 464 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki {{#Invoke:Template link general|main|bold=on}}<noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlb}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> c6b5b2f301c776c8edbfd7097363890498f4b452 Template:Tlb 10 1328 2663 2021-09-28T03:41:05Z w>MusikBot II 0 Protected "[[Template:Tlb]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 463 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Template link with bold]] {{Redirect category shell| {{R from move}} }} 4d50427c62f6e0b7c679872a92bd9fce01e974f0 Template:Bulletedlist 10 1690 3152 2021-09-30T22:49:05Z wikipedia>MusikBot II 0 Protected "[[Template:Bulletedlist]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 381 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Bulleted list]] fc3e32ae77e74a144ca12970d1e03f8429824b63 Template:Cuneiform 10 1607 2942 2021-09-30T22:50:08Z w>MusikBot II 0 Protected "[[Template:Cuneiform]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 376 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Script/Cuneiform]] {{R from short name}} {{R from move}} [[Category:Script–font templates]] 7ea7e4e895f7bd6848f5e1a38497bd79cc9ee658 Template:Xtag 10 1335 2670 2021-09-30T22:56:31Z w>MusikBot II 0 Protected "[[Template:Xtag]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 358 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <code class="nowrap">{{#switch:{{{2|pair}}} |c|close = <!--nothing--> |s|single |o|open |p|pair = &lt;{{#switch:{{{1|}}} |categorytree=[[mw:Extension:CategoryTree|categorytree]] |charinsert=[[mw:Extension:CharInsert|charinsert]] |ce=[[Help:Displaying a formula#Chemistry|ce]] |chem=[[Help:Displaying a formula#Chemistry|chem]] |gallery=[[Help:Gallery tag|gallery]] |graph=[[Help:Graph|graph]] |hiero=[[mw:Extension:WikiHiero|hiero]] |includeonly=[[Help:Template#Noinclude, includeonly, and onlyinclude|includeonly]] |indicator=[[mw:Help:Page status indicators|indicator]] |imagemap=[[mw:Extension:ImageMap|imagemap]] |inputbox=[[mw:Extension:InputBox|inputbox]] |mapframe=[[mw:Extension:Kartographer|mapframe]] |maplink=[[mw:Extension:Kartographer#<maplink>|maplink]] |math=[[mw:Extension:Math|math]] |math chem=[[Help:Displaying a formula#Chemistry|math chem]] |noinclude=[[Help:Template#Noinclude, includeonly, and onlyinclude|noinclude]] |nowiki=[[Help:Nowiki|nowiki]] |onlyinclude=[[Help:Template#Noinclude, includeonly, and onlyinclude|onlyinclude]] |poem=[[mw:Extension:Poem|poem]] |pre=[[WP:PRE|pre]] |ref=[[mw:Extension:Cite/Cite.php|ref]] |references=[[mw:Extension:Cite/Cite.php|references]] |score=[[Help:Score|score]] |section=[[mw:Extension:Labeled Section Transclusion|section]] |source=[[mw:Extension:SyntaxHighlight|source]] |syntaxhighlight=[[mw:Extension:SyntaxHighlight|syntaxhighlight]] |templatedata=[[Wikipedia:TemplateData/Tutorial|templatedata]] |templatestyles=[[mw:Extension:TemplateStyles|templatestyles]] |timeline=[[mw:Extension:EasyTimeline|timeline]] |#default={{{1|}}}[[Category:Pages using xtag template with unsupported tag name]] }}{{#if:{{{params|}}}|&#32;{{{params}}}}} }}{{#switch:{{{2|open}}} |c|close = {{{content|}}} |s|single = &#32;/&gt; |o|open = &gt;{{{content|}}} |p|pair = &gt;{{{content|...}}} }}{{#switch:{{{2|open}}} |s|single |o|open = <!--nothing--> |c|close |p|pair = &lt;/{{{1|tag}}}&gt; }}</code><noinclude> {{documentation}} </noinclude> 274ddc76ab9ba88d76a509a5e261938c59d6a050 Template:Format TemplateData 10 624 1408 2021-10-05T19:23:32Z wikipedia>MusikBot II 0 Protected "[[Template:Format TemplateData]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 305 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#ifeq:{{yesno-yes|{{{header}}}}}|yes|{{TemplateData header}} }}{{#invoke:Format TemplateData| f |classNoNumTOC=nonumtoc |cssParams=border:#B3B7FF 1px solid;|docpageCreate=%s/doc |docpageDetect=/doc$ |msgDescMiss=Missing description |cat=Templates with TemplateData errors}}</includeonly><noinclude> {{Documentation}} </noinclude> 9f91faf4253ddd2a7da1f06be8940e26509a0cd6 Template:High use 10 864 1916 2021-10-05T19:24:15Z wikipedia>MusikBot II 0 Protected "[[Template:High use]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 345 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki #Redirect [[Template:High-use]] {{Redirect category shell|{{R from modification}}{{R from template shortcut}}}} 65ce33c8f2d9659b46256ceb1f7fe57859f66fb2 Module:GetParameters 828 1354 2689 2021-10-07T13:22:34Z w>Andrybak 0 drop misleading comment copy-pasted from [[Module:String]] Scribunto text/plain local p = {} --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function p.getParameters( frame_args, arg_list ) local new_args = {}; local index = 1; local value; for i,arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index]; index = index + 1; end new_args[arg] = value; end return new_args; end --[[ Helper Function to interpret boolean strings ]] function p.getBoolean( boolean_str ) local boolean_value; if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower(); if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false; else boolean_value = true; end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str; else error( 'No boolean value found' ); end return boolean_value end function p.defined(frame) local arg = mw.text.trim(frame.args[1]) --if arg == tostring(tonumber(arg)) then -- undesired result for '-0' -- arg = tonumber(arg) --end --if mw.ustring.find(arg, '^%s*-?[1-9][0-9]*%s*$') ~= nil or arg == '0' then -- arg = tonumber(arg) --end if mw.ustring.find(arg, '^-?[1-9][0-9]*$') ~= nil then arg = tonumber(arg) elseif arg == '0' then arg = 0 end return frame:getParent().args[arg] ~= nil end return p 00e952f0ee8f6ea68e990d589dfb15e7d4036623 Module:Unsubst 828 235 1906 530 2021-10-08T18:22:16Z wikipedia>Trappist the monk 0 sync from sandbox; see [[Module_talk:Unsubst#template_invocation_name_override|talk]]; Scribunto text/plain local checkType = require('libraryUtil').checkType local p = {} local BODY_PARAM = '$B' local specialParams = { ['$params'] = 'parameter list', ['$aliases'] = 'parameter aliases', ['$flags'] = 'flags', ['$B'] = 'template content', ['$template-name'] = 'template invocation name override', } function p.main(frame, body) -- If we are substing, this function returns a template invocation, and if -- not, it returns the template body. The template body can be specified in -- the body parameter, or in the template parameter defined in the -- BODY_PARAM variable. This function can be called from Lua or from -- #invoke. -- Return the template body if we aren't substing. if not mw.isSubsting() then if body ~= nil then return body elseif frame.args[BODY_PARAM] ~= nil then return frame.args[BODY_PARAM] else error(string.format( "no template content specified (use parameter '%s' from #invoke)", BODY_PARAM ), 2) end end -- Sanity check for the frame object. if type(frame) ~= 'table' or type(frame.getParent) ~= 'function' or not frame:getParent() then error( "argument #1 to 'main' must be a frame object with a parent " .. "frame available", 2 ) end -- Find the invocation name. local mTemplateInvocation = require('Module:Template invocation') local name if frame.args['$template-name'] and '' ~= frame.args['$template-name'] then name = frame.args['$template-name'] -- override whatever the template name is with this name else name = mTemplateInvocation.name(frame:getParent():getTitle()) end -- Combine passed args with passed defaults local args = {} if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*override%s*,' ) then for k, v in pairs( frame:getParent().args ) do args[k] = v end for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end else for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end for k, v in pairs( frame:getParent().args ) do args[k] = v end end -- Trim parameters, if not specified otherwise if not string.find( ','..(frame.args['$flags'] or '')..',', ',%s*keep%-whitespace%s*,' ) then for k, v in pairs( args ) do args[k] = mw.ustring.match(v, '^%s*(.*)%s*$') or '' end end -- Pull information from parameter aliases local aliases = {} if frame.args['$aliases'] then local list = mw.text.split( frame.args['$aliases'], '%s*,%s*' ) for k, v in ipairs( list ) do local tmp = mw.text.split( v, '%s*>%s*' ) aliases[tonumber(mw.ustring.match(tmp[1], '^[1-9][0-9]*$')) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], '^[1-9][0-9]*$'))) or tmp[2]) end end for k, v in pairs( aliases ) do if args[k] and ( not args[v] or args[v] == '' ) then args[v] = args[k] end args[k] = nil end -- Remove empty parameters, if specified if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*remove%-empty%s*,' ) then local tmp = 0 for k, v in ipairs( args ) do if v ~= '' or ( args[k+1] and args[k+1] ~= '' ) or ( args[k+2] and args[k+2] ~= '' ) then tmp = k else break end end for k, v in pairs( args ) do if v == '' then if not (type(k) == 'number' and k < tmp) then args[k] = nil end end end end -- Order parameters if frame.args['$params'] then local params, tmp = mw.text.split( frame.args['$params'], '%s*,%s*' ), {} for k, v in ipairs(params) do v = tonumber(mw.ustring.match(v, '^[1-9][0-9]*$')) or v if args[v] then tmp[v], args[v] = args[v], nil end end for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end args = tmp end return mTemplateInvocation.invocation(name, args) end p[''] = p.main -- For backwards compatibility return p 7f01ffc8aa2ac4a4772f14c12e0b77e384ecabb6 Template:Resize 10 118 283 2021-10-10T18:04:18Z wikipedia>WOSlinker 0 add div=yes option wikitext text/x-wiki {{safesubst<noinclude />:#if:{{{2|}}} |<{{#ifeq:{{{div|}}}|yes|div|span}} style="font-size:{{{1|}}};">{{{2|}}}</{{#ifeq:{{{div|}}}|yes|div|span}}> |<{{#ifeq:{{{div|}}}|yes|div|span}} style="font-size:90%;">{{{1}}}</{{#ifeq:{{{div|}}}|yes|div|span}}> }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --> </noinclude> 3df5b1480eb04f48aa1e701ca895121b4cbb4ed3 Template:Define 10 139 327 2021-10-20T01:50:33Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Define]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 4633 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Abbr]] {{Rcat shell| {{R related}} {{R tsh}} }} 4ab7bdcf7ba10c7ef8ee30a9bf6600863997473d Template:Location map many 10 1635 2981 2021-10-20T19:50:19Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Location map many]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3711 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Location map/multi|many}}</includeonly><noinclude> {{Documentation}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 72cc22fd09760697977eba240c5a13c892f971f0 Template:Module other 10 481 1057 2021-10-20T19:50:22Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Module other]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3570 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Module}} | module | other }} }} | module = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 503694836c1b07142e63fd35d8be69ec8bb9ffe7 Template:Sfrac 10 1546 2881 2021-10-20T19:50:38Z w>MusikBot II 0 Changed protection settings for "[[Template:Sfrac]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3630 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||$B=<templatestyles src="Sfrac/styles.css" /><span role="math" class="sfrac {{#if:{{{3|}}}|">{{{1}}}<span class="sr-only">+</span><span class="}}<!-- -->tion"><!-- --><span class="num">{{#if:{{{3|}}}|{{{2}}}|{{#if:{{{2|}}}|{{{1}}}|1}}}}</span><!-- --><span class="sr-only">/</span><!-- --><span class="den">{{{3|{{{2|{{{1|1}}}}}}}}}</span><!-- -->{{#if:{{{3|}}}|</span>}}<!-- --></span>}}<noinclude> {{documentation}} <!-- PLEASE ADD CATEGORIES TO /doc SUBPAGE - NOT HERE.--> </noinclude> 7fb36dbb14902432f62d75772d46c65d238c0c1b Template:Sfrac/styles.css 10 1547 2882 2021-10-20T19:50:39Z w>MusikBot II 0 Changed protection settings for "[[Template:Sfrac/styles.css]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3660 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) sanitized-css text/css /* {{pp|small=y}} */ .sfrac { white-space: nowrap; } .sfrac.tion, .sfrac .tion { display: inline-block; vertical-align: -0.5em; font-size: 85%; text-align: center; } .sfrac .num, .sfrac .den { display: block; line-height: 1em; margin: 0 0.1em; } .sfrac .den { border-top: 1px solid; } /* [[Template:Screen reader-only]] is canonical implementation onwiki */ .sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; /* white-space: nowrap; /* already have nowrap above */ } 81b03751b1a10d20a2f88c0f3309a4f8873b247b Template:Hatnote inline/invoke 10 126 301 2021-10-22T01:54:39Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Hatnote inline/invoke]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3213 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Hatnote inline|hatnote}}</includeonly><noinclude> {{Documentation|content=This is an includeonly part of [[Template:Hatnote inline]].}}</noinclude> bcceba0d964fb499427b81aef69b70f463221df3 Template:Vad 10 987 2170 2021-10-22T01:56:03Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Vad]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3283 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki #redirect [[Template:Vertically aligned date]] {{rcat shell|{{r from template shortcut}}}} [[Category:Typing-aid templates|{{PAGENAME}}]] b90a5de41f13a9857edeae26aa461f4c09a00c01 Template:Vertically aligned date 10 988 2172 2021-10-22T01:56:05Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Vertically aligned date]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3282 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <includeonly><span style="display:inline-block; width:{{if empty|{{{2|}}}|{{{width|}}}|3.6em}}; text-align:{{if empty|{{{3|}}}|{{{align|}}}|right}}; font-weight:{{if empty|{{{4|}}}|{{{font|}}}|normal}};">{{{1}}}</span></includeonly><noinclude>{{documentation}}</noinclude> 5d09cbb92ba4b8bdbd1feae1e19a300def099a81 Template:View 10 1306 2641 2021-10-22T01:56:06Z w>MusikBot II 0 Changed protection settings for "[[Template:View]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3357 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki {{#invoke:navbar|navbar|plain = 1|template = {{{template|{{{1|}}}}}}}}<noinclude> {{Documentation|Template:Navbar/doc}} </noinclude> 1ca014f2b7724c60659a51b385a22ce31f318f86 Template:Military navigation 10 1098 2395 2021-10-23T13:20:32Z wikipedia>Andrybak 0 use [[Template:Sandbox other]] wikitext text/x-wiki <includeonly>{{#invoke:Military navigation|main}}</includeonly><noinclude> {{Documentation|Wikipedia:WikiProject Military history/Military navigation}} {{Sandbox other|| [[Category:Navigational box wrapper templates]] [[Category:Military navigational boxes| ]] }}</noinclude> 10eb2cd55540aab60dd8603c113e21995e9bb545 Template:Confused 10 1325 2660 2021-10-26T17:20:49Z w>MusikBot II 0 Changed protection settings for "[[Template:Confused]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2629 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Distinguish]] {{pp-template|small=yes}} 3103c28fbfba681c21033c5de184b3ce78f33a6e Template:Deprecated code 10 1002 2200 2021-10-26T17:21:01Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Deprecated code]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2827 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <del class="deprecated-content {{{class|}}}" style="color:{{#if:{{{red|}}}|#8B0000|#808080}}; text-decoration:none; {{#if:{{{style|}}}|{{{style}}}|}}" {{#if:{{{id|}}}|id="{{{id}}}"|}} {{#if:{{{title|{{{2|}}}}}}|title="{{{title|{{{2}}}}}}"|}}>{{{1}}}</del><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> c8fa271da275bc211fa5f70ab12b5ed41d822332 Template:ISO 15924/wp-article/format 10 1595 2930 2021-10-26T17:21:57Z w>MusikBot II 0 Changed protection settings for "[[Template:ISO 15924/wp-article/format]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2559 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <!-- {{mono|1={{{alpha4|}}}}}-{{{value|}}} <small>(f:{{{format|}}})</small>--><!-- -1st-{{#invoke:String|match|s={{{value|}}}# |pattern=^([^%#]+)%# |plain=false |nomatch=NoMa}} _2nd_{{#invoke:String|match|s={{{value|}}}# |pattern=%#([^%#]*) |plain=false |nomatch=NoMa}}--><!-- -->{{#switch:{{{format|}}} ||#default={{{value|}}} |wl=[[{{{value|}}}]] |wl-label=[[{{{value|}}}{{#if:{{{label|}}}|{{!}}{{{label|}}}|{{ISO 15924/wp-article/label|alpha4={{{alpha4|}}}|add pipe=yes}}}}]] |slink={{#if:{{#invoke:String|match|s={{{value|}}} |pattern=%#([^%#]*) |plain=false |nomatch=}}|<!-- if:has § section -->{{slink |1={{#invoke:String|match|s={{{value|}}}# |pattern=^([^%#]+)%# |plain=false |nomatch=}} |2={{#invoke:String|match|s={{{value|}}}# |pattern=%#([^%#]*) |plain=false |nomatch=}} }}|<!-- else:has § section -->[[{{{value|}}}]]}} }}<noinclude> *{{tl|ISO 15924/wp-article/doc}} *{{tl|ISO 15924/wp-article/sandbox}} *{{tl|ISO 15924/wp-article/testcases}}</noinclude> fa0f6bc12f6f1f7da273ff3f0cecd9c221dadf6b Template:Notelist-lr 10 575 1298 2021-10-26T17:22:56Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Notelist-lr]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2950 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{notelist|colwidth={{{1|{{{colwidth|}}}}}}|refs={{{refs|{{{notes|}}}}}}|group=lower-roman}}</includeonly><noinclude> {{documentation}} </noinclude> 4f00350b2a4eb03726e2440b940be93d06bec3be Template:Redirect-distinguish 10 1035 2268 2021-10-26T17:23:32Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Redirect-distinguish]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2673 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Redirect-distinguish|redirectDistinguish}}</includeonly><noinclude>{{Documentation}}</noinclude> c08b04d280b5edf1a7dbf07eefb2d946e18de6d2 Module:Suppress categories 828 69 133 2021-10-26T17:25:37Z wikipedia>MusikBot II 0 Changed protection settings for "[[Module:Suppress categories]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2510 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) Scribunto text/plain -- This is a simple module to strip categories from wikitext. It does -- not support nested links or magic words like __TOC__, etc. Even so, -- it should still handle most categories. local p = {} -- Detects if a category link is valid or not. If it is valid, -- the function returns the blank string. If not, the input -- is returned with no changes. local function processCategory( all, submatch ) local beforePipe = mw.ustring.match( submatch, '^(.-)[%s_]*|[%s_]*.-$' ) beforePipe = beforePipe or submatch if mw.ustring.match( beforePipe, '[%[%]<>{}%c\n]' ) then return all else return '' end end -- Preprocess the content if we aren't being called from #invoke, -- and pass it to gsub to remove valid category links. local function suppress( content, isPreprocessed ) if not isPreprocessed then content = mw.getCurrentFrame():preprocess( content ) end content = mw.ustring.gsub( content, '(%[%[[%s_]*[cC][aA][tT][eE][gG][oO][rR][yY][%s_]*:[%s_]*(.-)[%s_]*%]%])', processCategory ) return content end -- Get the content to suppress categories from, and find -- whether the content has already been preprocessed. (If the -- module is called from #invoke, it has been preprocessed already.) function p.main( frame ) local content, isPreprocessed if frame == mw.getCurrentFrame() then content = frame:getParent().args[1] if frame.args[1] then content = frame.args[1] end isPreprocessed = true else content = frame isPreprocessed = false end return suppress( content, isPreprocessed ) end return p 0ec3903841c489357a879434c5dc23c11d182c78 Module:Infobox/doc 828 84 207 2021-10-28T06:23:55Z Startus 12 Add wikitext text/x-wiki {{Lua|Module:Navbar}} {{Uses TemplateStyles|Module:Infobox/styles.css}} Implements {{tlx|Infobox}} eb64e52082cc779b0e3e1c353702e778203cea42 Template:Infobox/doc 10 207 470 2021-10-28T12:43:53Z Startus 12 Add wikitext text/x-wiki {{Documentation subpage}} {{Lua|Module:Infobox}} {{Uses TemplateStyles|[[Module:Infobox/styles.css]]}} ==Usage== c98286012fccf1f2eab447f27d4e51c9fb5aac2c Template:Ambox 10 1021 2238 2021-10-28T18:27:47Z wikipedia>GKFX 0 Copy fix from sandbox; only articles should go in this category. wikitext text/x-wiki {{#invoke:Message box|ambox}}{{#ifeq:{{{small}}};{{NAMESPACENUMBER}}|left;0|[[Category:Articles using small message boxes]]}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 0c13ec156138ae0499c998cc3d7fbbeac4aeeed6 Template:Dark cyan 10 233 526 2021-10-29T03:58:53Z Pixial 28 Created page with "<span style="color: #008b8b;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>" wikitext text/x-wiki <span style="color: #008b8b;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> e9c0ab2752c4b605c80909eb5c6dc128971991c4 Template:Main/doc 10 451 1001 2021-11-02T10:06:19Z Raidarr 34 wikitext text/x-wiki ==Description== This template is used at the start of a section to link to the main article on that subject. ==Syntax== Type {{tlx|main|page name}} anywhere on the page. For example, {{tlx|main|Help:Contents}} gives... :{{main|Help:Contents}} You can add multiple pages, up to a maximum of five. For example, {{tlx|Main|One|Two|Three|Four|Five}} gives... :{{Main|One|Two|Three|Four|Five}} ==Credits== This template's code came from [[wikia:w:c:sims:Template:Main|Template:Main]] on The Sims Wiki. <includeonly>[[Category:Other templates|{{PAGENAME}}]]</includeonly> <noinclude>[[Category:Template documentation pages|{{PAGENAME}}]]</noinclude> ==TemplateData== {{TemplateData header}} <templatedata> { "params": { "1": { "label": "Page 1", "description": "The name of the first page that you want to link to. If this is not specified, the current page name (without the namespace prefix) is used instead.", "type": "string" }, "2": { "label": "Page 2", "description": "The name of the second page you want to link to.", "type": "string" }, "3": { "label": "Page 3", "description": "The name of the third page you want to link to.", "type": "string" }, "4": { "label": "Page 4", "description": "The name of the fourth page you want to link to.", "type": "string" }, "5": { "label": "Page 5", "description": "The name of the fifth page you want to link to.", "type": "string" }, "6": { "label": "Page 6", "description": "The name of the sixth page you want to link to.", "type": "string" } }, "description": "This template is used after the heading of a section, to link to a sub-article (or sub-articles) that is entirely about the topic of the section. The template will display in italics: \"Main article: Article 1, Article 2 and Article 3\".", "paramOrder": [ "1", "2", "3", "4", "5", "6" ] } </templatedata> 06d3a43cfa1555d654afcc6d7860e3f8a1006194 Template:Navbox bottom 10 603 1364 2021-11-04T17:59:51Z wikipedia>MusikBot II 0 Protected "[[Template:Navbox bottom]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3929 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:navbox top and bottom|bottom}}</includeonly><noinclude> {{documentation|Template:Navbox top/doc}}</noinclude> 65e502a67d1bc2bba488cdada997a395b417883c Template:Navbox top 10 604 1366 2021-11-04T17:59:52Z wikipedia>MusikBot II 0 Protected "[[Template:Navbox top]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3930 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:navbox top and bottom|top}}</includeonly><noinclude> {{documentation}} </noinclude> d92793ae2725f6cbd0007a404bcce9a530d30349 Module:Navbox top and bottom 828 605 1368 2021-11-04T18:00:00Z wikipedia>MusikBot II 0 Protected "[[Module:Navbox top and bottom]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3931 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) Scribunto text/plain -- This implements {{navbox top}} and {{navbox bottom}} local p = {} local function build_navbox(parentArgs, list) local args = {} for argName, value in pairs(parentArgs) do if value ~= '' then if type(argName) == 'string' then args[argName] = value end end end args['bodystyle'] = 'display:table;' .. (args['bodystyle'] or '') args['list1padding'] = '0' args['list1style'] = 'border-width:0;' args['list1'] = list -- Note Navbox.navbox() has a kludge to order the parent frame's args -- into a specific order. For now, this is omitted from this module. local Navbox = require('Module:Navbox') return Navbox._navbox(args) end function p.top(frame) local args = frame:getParent().args local parts = mw.text.split(build_navbox(args, '<ADD LIST HERE>'), '<ADD LIST HERE>') return parts[1] end function p.bottom(frame) local args = frame:getParent().args local parts = mw.text.split(build_navbox(args, '<ADD LIST HERE>'), '<ADD LIST HERE>') return parts[2] end return p ac5dfc18e5611b01115dbf9818d1cf54ee5156d2 Template:Main 10 102 251 2021-11-07T22:34:09Z wikipedia>Nihiltres 0 Includeonly the template to avoid errors on the template pages wikitext text/x-wiki <includeonly>{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 99ebf54e265aa9354bc4861d3b0da913f1441ede Template:Refbegin/styles.css 10 172 397 2021-11-09T00:27:00Z wikipedia>Izno 0 -.refbegin-100, used in just 100 of 200k articles. suitable alternative at [[template:Div col]] sanitized-css text/css /* {{pp-template}} */ .refbegin { font-size: 90%; margin-bottom: 0.5em; } .refbegin-hanging-indents > ul { margin-left: 0; } .refbegin-hanging-indents > ul > li { margin-left: 0; padding-left: 3.2em; text-indent: -3.2em; } .refbegin-hanging-indents ul, .refbegin-hanging-indents ul li { list-style: none; } @media (max-width: 720px) { .refbegin-hanging-indents > ul > li { padding-left: 1.6em; text-indent: -1.6em; } } .refbegin-columns { margin-top: 0.3em; } /* Reset top margin for lists embedded in columns */ .refbegin-columns ul { margin-top: 0; } /* Avoid elements breaking between columns */ .refbegin-columns li { page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */ break-inside: avoid-column; } 287ba19370a7bfc842825711a05d34dae68d5f64 Template:Refbegin 10 171 395 2021-11-09T00:30:45Z wikipedia>Izno 0 -refbegin-100, see styles page history for rationale wikitext text/x-wiki <includeonly><templatestyles src="Refbegin/styles.css" /><!-- --><div class="refbegin <!-- -->{{#if: {{{indent|}}} | refbegin-hanging-indents }} <!-- -->{{#if: {{{1|}}} | refbegin-columns {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} | references-column-width | references-column-count references-column-count-{{#if:1|{{{1}}}}} }} | {{#if: {{{colwidth|}}} | references-column-width }} }}" style="<!-- -->{{#if: {{{1|}}} | {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} | column-width: {{#if:1|{{{1|30em}}}}} | column-count: {{#if:1|{{{1}}}}}; }} | {{#if: {{{colwidth|}}} | column-width: {{{colwidth|30em}}} }} }}"></includeonly><noinclude> {{Documentation}} </noinclude> da42157a5c16164d1de140113dabd9e71ad03401 Template:Disambiguation 10 1163 2489 2021-11-15T00:12:46Z w>GKFX 0 Undid revision 1055277199 by [[Special:Contributions/GKFX|GKFX]] ([[User talk:GKFX|talk]]) - changed categorization of "Socialist Party (Sweden) (disambiguation)" wikitext text/x-wiki <includeonly>{{#if:{{{nocat|}}}||{{Disambiguation page short description}}}}</includeonly> {{Dmbox | type = disambig | text = {{#switch: {{{nsoverride|<includeonly>{{NAMESPACE}}</includeonly>}}}|<!--detects namespace between Wikipedia, Portal, and everything else--> | #default = This [[Help:Disambiguation|disambiguation]] page lists {{{type|{{#if:{{{ignore_parentheses|}}}||{{Title disambig text|1={{Str rep|{{{page-title|{{FULLPAGENAME}}}}}|(disambiguation)|}}}}}}}}} {{namespace detect|main=articles|category=categories|wikipedia=project pages<includeonly>|template=templates</includeonly>|other=pages}} associated with the title '''{{#if:{{{ignore_parentheses|}}}|{{{page-title|{{FULLPAGENAME}}}}}|{{PAGENAMEBASE|{{{page-title|{{FULLPAGENAME}}}}}}}}}'''.<!--for normal disambiguation pages--> | Wikipedia = This page is a list of [[Wikipedia:Project namespace|project pages]] associated with the same title or shortcut.[[Category:Wikipedia disambiguation pages]]<!--for Wikipedia disambiguation pages--> | Portal = This page is a list of [[Wikipedia:Contents/Portals|portals]] associated with the same title.[[Category:Portal disambiguation pages]]<!--for Portal disambiguation pages--> }}<br /><small>{{main other<!--detects if in mainspace or not--> | demospace = {{{demospace|}}}<!--for testing, see docs at [[Template:Main other]]--> | If an [{{fullurl:Special:WhatLinksHere/{{{page-title|{{FULLPAGENAME}}}}}|namespace=0}} internal link] led you here, you may wish to change the link to point directly to the intended article.<!--If in mainspace, the "internal link" only links to incoming links in mainspace, and we use the term "intended article"--> | If an [{{fullurl:Special:WhatLinksHere/{{{page-title|{{FULLPAGENAME}}}}}}} internal link] led you here, you may wish to change the link to point directly to the intended page.<!--If not in mainspace, the "internal link" links to incoming links in all namespaces, and we use the term "intended page"--> }}</small> | nocat = {{{nocat|}}} <!--So "nocat=true" works--> }}{{main other | demospace = {{{demospace|}}} | [[Category:Disambiguation pages]]{{disambiguation/cat|{{{1|}}}}}{{disambiguation/cat|{{{2|}}}}}{{disambiguation/cat|{{{3|}}}}}{{disambiguation/cat|{{{4|}}}}}{{disambiguation/cat|{{{5|}}}}}{{disambiguation/cat|{{{6|}}}}}{{disambiguation/cat|{{{7|}}}}}{{disambiguation/cat|{{{8|}}}}}{{disambiguation/cat|{{{9|}}}}}{{disambiguation/cat|{{{10|}}}}}{{#if: {{{hn|}}} | [[Category:Human name disambiguation pages|{{{hn}}}]] }}{{#if:{{Title disambig text|1={{Str rep|{{FULLPAGENAME}}|(disambiguation)|}}}}|[[Category:Disambiguation pages with (qualified) titles]]|}}<!-- The preceding test should include articles like "Socialist Party (Sweden) (disambiguation)". --> | <!-- Don't categorise when not in main (article) space. However, note that {{Dmbox}} categorises pages into Category:All disambiguation pages and Category:All article disambiguation pages--> }}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{#invoke:redirect|isRedirect|{{TALKPAGENAME}}}}|yes|[[Category:Unsynchronized disambiguation talk pages]]}}}}</includeonly><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! --> </noinclude> 8c6d81108d5cbf10e14b3d6ddf893eb283f72569 Template:Lua sidebar 10 1293 2628 2021-11-15T22:24:39Z w>Izno 0 reduce expansion size slightly wikitext text/x-wiki {{Sidebar | class = lua-sidebar | templatestyles = Template:Lua sidebar/styles.css | title = Related pages | content1 = {{plainlist}} * [[Template:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}|Template]] {{#if:{{#invoke:redirect|isRedirect|Template talk:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}}}||([[Template talk:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}|talk]])}} * [[Template:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}/sandbox|Template sandbox]] * [[Template:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}/testcases|Template testcases]] * [[Template:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}/doc|Template doc]] * [[Special:PrefixIndex/Template:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}/|Template subpages]] * [[Module:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}|Module]] {{#if:{{#invoke:redirect|isRedirect|Module talk:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}}}||([[Module talk:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}|talk]])}} * [[Module:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}/sandbox|Module sandbox]] * [[Module talk:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}/testcases|Module testcases]] * [[Module:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}/doc|Module doc]] * [[Special:PrefixIndex/Module:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}/|Module subpages]] {{endplainlist}} | content2 = {{{1|}}} }}<noinclude> {{Documentation}} </noinclude> f11e49d67a400d29f6d73720fea7eb5a273ab663 Template:ISO 15924/unicode-chapter/format 10 1627 2962 2021-11-27T14:00:18Z w>GKFX 0 Use padleft function rather than trying to emulate it wikitext text/x-wiki {{#if:{{{value|}}}| {{#switch:{{{format|}}} |#default={{{value|0.0}}} |version=Unicode {{{version|}}} |pdf-plain=https://www.unicode.org/versions/Unicode{{{version|13.0.0}}}/ch{{padleft:{{#expr: floor({{{value|1}}}) }}|2}}.pdf |pdf=[https://www.unicode.org/versions/Unicode{{{version|13.0.0}}}/ch{{padleft:{{#expr: floor({{{value|1}}}) }}|2}}.pdf Ch&nbsp;{{{value|}}}]<!-- for url pdf: create like "09" when <=9. Assumes no Ch number >99 --> |pdf-sort={{sort | 1={{{value|}}} | 2=[https://www.unicode.org/versions/Unicode{{{version|13.0.0}}}/ch{{padleft:{{#expr: floor({{{value|1}}}) }}|2}}.pdf Ch&nbsp;{{{value|}}}] }} }}|<!-- no value: return blank -->}}<noinclude>{{documentation}}</noinclude> b91ee050d20fa162de8edc148d34a8d2fc591339 Template:Unichar/gc 10 1615 2950 2021-11-27T14:35:52Z w>GKFX 0 Use modern string functions wikitext text/x-wiki {{#if:{{{1|}}}<!-- -->|{{#ifexpr: {{{1}}}<=65535<!-- in plane 0 BMP -->|{{#ifexpr: (00<={{{1}}}) and ({{{1}}}<=31) or (127<={{{1}}}) and ({{{1}}}<=159)<!-- -->| Cc <!--00..1F 7F..9F -->| {{#ifexpr: (55296<={{{1}}}) and ({{{1}}}<=57343)<!-- -->| Cs <!--D800..DFFF high&low Surrogates -->| {{#ifexpr: ((57344<={{{1}}}) and ({{{1}}}<=63743))<!-- -->| Cp <!--E000..F8FF Private Use -->| {{#ifexpr: (64976<={{{1}}} and {{{1}}}<=65007) or {{{1}}}=65534 or {{{1}}}=65535<!-- -->| Cn <!--FDD0..FDEF FFFE FFFF; Not-a-character -->| {{#ifexpr: ({{{1}}}=173) or ({{{1}}}=1807) or ({{{1}}}=6068) or ({{{1}}}=6069) or (8203<={{{1}}} and {{{1}}}<=8207) or (8234<={{{1}}} and {{{1}}}<=8238) or (8288<={{{1}}} and {{{1}}}<=8292) or (8298<={{{1}}} and {{{1}}}<=8303) or ({{{1}}}=65279) or (65529<={{{1}}} and {{{1}}}<=65531)<!-- -->| Cf <!--00AD 070F 17B4 17B5 200B..200F 202A..202E 2060..2064 206A..206F FEFF FFF9..FFFB -->| {{#ifexpr: (1536<={{{1}}} and {{{1}}}<=1539) or ({{{1}}}=1757)<!-- -->| Cf (visible)<!--0600..0603 06DD See documentation: five visible Cf characters -->| {{#ifexpr: {{{1}}}=32 or {{{1}}}=160 or {{{1}}}=5760 or {{{1}}}=6158 or {{{1}}}=8239 or {{{1}}}=8287 or {{{1}}}=8288 or {{{1}}}=12288 or (8192<={{{1}}} and {{{1}}}<=8205)<!-- -->| Zs <!--20 A0 1680 180E 202? 205F 2060 2000..200D 3000 Space -->| {{#ifexpr: {{{1}}}=8232<!-- -->| Zl <!--2028 LSEP -->| {{#ifexpr: {{{1}}}=8233<!-- -->| Zp <!--2029 PSEP -->| <!--(final param position in BMP: no gc determined) -->}} }} }} }} }} }} }} }} }}<!-- -->|<!--in planes 1-16, not 0 -->{{#switch: {{#invoke:ustring|sub|{{{hval|}}}|-4}}<!-- -->| FFFE | FFFF = Cn <!--hhFFFE hhFFFF Not-a-character -->| {{#ifexpr: ((983040<={{{1}}}) and ({{{1}}}<=1114111))<!-- -->| Cp <!--Private use, planes 15-16 (minus Cn, checked earlier) -->| {{#ifexpr: {{{1}}}>=1114112 | <#not a Unicode code point#><!--greater th 0x110000 -->| {{#ifexpr: ({{{1}}}=69821) or (119155<={{{1}}} and {{{1}}}<=119162) or ({{{1}}}=917505) or (917536<={{{1}}} and {{{1}}}<=917631)<!-- -->| Cf <!--110BD 1D173..1D17A E0001 E0020..E0096 (planes 1 and E = 1 and 14): -->| <!--all other cp in planes 1-16, other gc not determined -->}} }} }} }} }}<!-- -->|<#not a Unicode code point#> <!--Input is blank or undefined -->}}<noinclude> {{documentation}} </noinclude> 56bfe36121a397d56a47202b6477f66e007b5203 Template:Terminate sentence 10 248 3075 2021-11-29T17:59:48Z wikipedia>MusikBot II 0 Protected "[[Template:Terminate sentence]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 9267 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki {{{1}}}{{#if:{{#invoke:text|sentenceTerminated|{{{1|}}}}}||{{{2|.}}}}}<noinclude>{{documentation}}</noinclude> e4142b47b3d7959b82f582bab87ca10768d4d93b Template:Find country 10 197 448 2021-12-02T20:25:42Z wikipedia>GKFX 0 No need to use {{Trim}} inside an if function, as they are already trimmed. wikitext text/x-wiki <includeonly>{{#if: {{{1|}}} | {{#invoke:Find country|main|string={{{1|}}}|match={{{match|}}}|nomatch={{{nomatch|}}}}} }}</includeonly><noinclude>{{Documentation}}</noinclude> 87d8d8e45c6295e043512958d665ffbdf7819cc1 Template:Maroon 10 234 528 2021-12-03T14:53:28Z Ugochimobi 29 Created page with "<span style="color: Maroon;">{{{1}}}</span><noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}}</noinclude>" wikitext text/x-wiki <span style="color: Maroon;">{{{1}}}</span><noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}}</noinclude> ec7268d828ab5a3e2b2aea1613d331ff6ad7375f Template:ISO 15924/qid 10 1625 2960 2021-12-08T07:37:34Z w>DePiep 0 add new | Sunu = Q109984965 wikitext text/x-wiki <!-- Exact list from ISO datafile, as of 2021-01-25: 206 output values (alpha4 codes). --><includeonly>{{#switch:{{{alpha4|{{{1|}}}}}} | Adlm = Q19606346 | Afak = Q382019 | Aghb = Q2495716 | Ahom = Q2839633 | Arab = Q1828555 | Aran = Q1133121 | Armi = Q26978 | Armn = Q11932 | Avst = Q790681 | Bali = Q804984 | Bamu = Q806024 | Bass = Q810458 | Batk = Q51592 | Beng = Q756802 | Bhks = Q17017839 | Blis = Q609817 | Bopo = Q198269 | Brah = Q185083 | Brai = Q79894 | Bugi = Q1074947 | Buhd = Q1002969 | Cakm = Q1059328 | Cans = Q2479183 | Cari = Q1094567 | Cham = Q1060381 | Cher = Q26549 | Chrs = Q72386710 | Cirt = Q2003257 | Copt = Q321083 | Cpmn = Q1751985 | Cprt = Q1757689 | Cyrl = Q8209 | Cyrs = Q442244 | Deva = Q38592 | Diak = Q3307073 | Dogr = Q72402987 | Dsrt = Q1200582 | Dupl = Q5316025 | Egyd = Q188519 | Egyh = Q208111 | Egyp = Q132659 | Elba = Q1036714 | Elym = Q60744423 | Ethi = Q257634 | Geok = Q1090055 | Geor = Q3317411 | Glag = Q145625 | Gong = Q18125340 | Gonm = Q16977603 | Goth = Q467784 | Gran = Q1119274 | Grek = Q8216 | Gujr = Q733944 | Guru = Q689894 | Hanb = Q28454520 | Hang = Q8222 | Hani = Q8201 | Hano = Q1584045 | Hans = Q185614 | Hant = Q178528 | Hatr = Q20813038 | Hebr = Q33513 | Hira = Q48332 | Hluw = Q521323 | Hmng = Q365954 | Hmnp = Q33712499 | Hrkt = Q187659 | Hung = Q446224 | Inds = Q601388 | Ital = Q4891256 | Jamo = Q41799425 | Java = Q879704 | Jpan = Q190502 | Jurc = Q912240 | Kali = Q4919239 | Kana = Q82946 | Kawi = Q975802 | Khar = Q1161266 | Khmr = Q1054190 | Khoj = Q1740656 | Kitl = Q6401797 | Kits = Q6401800 | Knda = Q839666 | Kore = Q711797 | Kpel = Q1586299 | Kthi = Q1253814 | Lana = Q1314503 | Laoo = Q1815229 | Latf = Q148443 | Latg = Q1432616 | Latn = Q8229 | Leke = Q19572613 | Lepc = Q1481626 | Limb = Q933796 | Lina = Q30972 | Linb = Q190102 | Lisu = Q1194621 | Loma = Q72948512 | Lyci = Q913587 | Lydi = Q4261300 | Mahj = Q6732850 | Maka = Q72947229 | Mand = Q1812130 | Mani = Q3544702 | Marc = Q72403709 | Maya = Q211248 | Medf = Q72950215 | Mend = Q951069 | Merc = Q73028124 | Mero = Q73028623 | Mlym = Q1164129 | Modi = Q1703713 | Mong = Q1055705 | Moon = Q918391 | Mroo = Q75919253 | Mtei = Q2981413 | Mult = Q17047906 | Mymr = Q43887939 | Nagm = Q106917274 | Nand = Q6963324 | Narb = Q22948270 | Nbat = Q855624 | Newa = Q7237292 | Nkdb = Q1190953 | Nkgb = Q731189 | Nkoo = Q1062587 | Nshu = Q56436 | Ogam = Q184661 | Olck = Q201688 | Orkh = Q5058305 | Orya = Q1760127 | Osge = Q7105529 | Osma = Q1377866 | Ougr = Q1998938 | Palm = Q17538100 | Pauc = Q25339852 | Pcun = Q104845336 | Pelm = Q56305763 | Perm = Q147899 | Phag = Q822836 | Phli = Q24089793 | Phlp = Q7253954 | Phlv = Q72403118 | Phnx = Q26752 | Piqd = Q56627865 | Plrd = Q601734 | Prti = Q24089828 | Psin = Q1065250 | Qaaa | Qaab | Qaac | Qaad | Qaae | Qaaf | Qaag | Qaah | Qaai | Qaaj | Qaak | Qaal | Qaam | Qaan | Qaao | Qaap | Qaaq | Qaar | Qaas | Qaat | Qaau | Qaav | Qaaw | Qaax | Qaay | Qaaz| Qaba | Qabb | Qabc | Qabd | Qabe | Qabf | Qabg | Qabh | Qabi | Qabj | Qabk | Qabl | Qabm | Qabn | Qabo | Qabp | Qabq | Qabr | Qabs | Qabt | Qabu | Qabv | Qabw | Qabx | Qaaa-Qabx | Qaaa–Qabx = Q105037964 | Ranj = Q2385276 | Rjng = Q2007960 | Rohg = Q21028705 | Roro = Q209764 | Runr = Q82996 | Samr = Q1550930 | Sara = Q1089000 | Sarb = Q446074 | Saur = Q3535165 | Sgnw = Q1497335 | Shaw = Q1970098 | Shrd = Q2047117 | Shui = Q752854 | Sidd = Q250379 | Sind = Q6402810 | Sinh = Q1574992 | Sogd = Q578359 | Sogo = Q72403254 | Sora = Q7563292 | Soyo = Q8009382 | Sund = Q51589 | Sunu = Q109984965 | Sylo = Q144128 | Syrc = Q26567 | Syre = Q72400430 | Syrj = Q72400431 | Syrn = Q72400435 | Tagb = Q977444 | Takr = Q759202 | Tale = Q2566326 | Talu = Q3498863 | Taml = Q26803 | Tang = Q1373610 | Tavt = Q11818518 | Telu = Q570450 | Teng = Q473725 | Tfng = Q208503 | Tglg = Q812124 | Thaa = Q877906 | Thai = Q236376 | Tibt = Q46861 | Tirh = Q1765752 | Tnsa = Q105576311 | Toto = Q104837516 | Ugar = Q332652 | Vaii = Q523078 | Visp = Q1303365 | Vith = Q3301993 | Wara = Q79199 | Wcho = Q33713728 | Wole = Q6643710 | Xpeo = Q1471822 | Xsux = Q401 | Yezi = Q72401962 | Yiii = Q1197646 | Zanb = Q50809208 | Zinh = Q104839726 | Zmth = Q1140046 | Zsye = Q1049294 | Zsym = Q80071 | Zxxx = Q104839715 | Zyyy = Q104839687 | Zzzz = Q104839675 | #default={{{default|<!-- {{error|Error using {{tlx|ISO 15924/qid}}: input "{{{qid|{{{1|}}}}}}" not recognized|tag=span}} -->}}} }}</includeonly><!-- --><noinclude>{{documentation}}</noinclude> 1b0bbc65224c7a923aeb95c2fdda2d60e4ac1622 Template:Main other 10 13 21 2021-12-10T16:08:06Z Xaosflux 7 <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:0}} | main | other }} }} | main = {{{1|}}} | other | #default = {{{2|}}} }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 86ad907ffeea3cc545159e00cd1f2d6433946450 Module:Navbox/styles.css 828 108 263 2021-12-21T22:10:10Z wikipedia>Izno 0 remove qualifications on th - this will remove styling from "hand-crafted" navboxes, but there's no other elegant way to deal with it. see talk page sanitized-css text/css /* {{pp|small=y}} */ .navbox { box-sizing: border-box; border: 1px solid #a2a9b1; width: 100%; clear: both; font-size: 88%; text-align: center; padding: 1px; margin: 1em auto 0; /* Prevent preceding content from clinging to navboxes */ } .navbox .navbox { margin-top: 0; /* No top margin for nested navboxes */ } .navbox + .navbox, /* TODO: remove first line after transclusions have updated */ .navbox + .navbox-styles + .navbox { margin-top: -1px; /* Single pixel border between adjacent navboxes */ } .navbox-inner, .navbox-subgroup { width: 100%; } .navbox-group, .navbox-title, .navbox-abovebelow { padding: 0.25em 1em; line-height: 1.5em; text-align: center; } .navbox-group { white-space: nowrap; /* @noflip */ text-align: right; } .navbox, .navbox-subgroup { background-color: #fdfdfd; } .navbox-list { line-height: 1.5em; border-color: #fdfdfd; /* Must match background color */ } .navbox-list-with-group { text-align: left; border-left-width: 2px; border-left-style: solid; } /* cell spacing for navbox cells */ /* Borders above 2nd, 3rd, etc. rows */ /* TODO: figure out how to replace tr as structure; * with div structure it should be just a matter of first-child */ tr + tr > .navbox-abovebelow, tr + tr > .navbox-group, tr + tr > .navbox-image, tr + tr > .navbox-list { border-top: 2px solid #fdfdfd; /* Must match background color */ } .navbox-title { background-color: #ccf; /* Level 1 color */ } .navbox-abovebelow, .navbox-group, .navbox-subgroup .navbox-title { background-color: #ddf; /* Level 2 color */ } .navbox-subgroup .navbox-group, .navbox-subgroup .navbox-abovebelow { background-color: #e6e6ff; /* Level 3 color */ } .navbox-even { background-color: #f7f7f7; } .navbox-odd { background-color: transparent; } /* TODO: figure out how to remove reliance on td as structure */ .navbox .hlist td dl, .navbox .hlist td ol, .navbox .hlist td ul, .navbox td.hlist dl, .navbox td.hlist ol, .navbox td.hlist ul { padding: 0.125em 0; } .navbox .navbar { display: block; font-size: 100%; } .navbox-title .navbar { /* @noflip */ float: left; /* @noflip */ text-align: left; /* @noflip */ margin-right: 0.5em; } e80b0d7a5770e6e105dab832deb6c37a5245ebc6 Template:Infobox cardinal styles 10 1124 2449 2021-12-23T16:12:29Z w>Turtle-bienhoa 0 wikitext text/x-wiki <includeonly>{{Infobox manner of address | child = {{{child|}}} | background = #ffa4a4 | name = {{{name|{{{cardinal name|{{safesubst:PAGENAME}}}}}}}} | image = {{safesubst:#if:{{{image|}}}|{{{image}}}|Template-Cardinal_(Bishop).svg}} | size = {{safesubst:#if:{{{image_size|}}}|{{{image_size}}}|60px}} | reference = {{{dipstyle|}}} | spoken = {{{offstyle|}}} | informal = [[Cardinal (Catholic Church)|Cardinal]] | see = {{{see|{{{See|}}}}}} | posthumous = {{{posthumous|}}} }}</includeonly><noinclude>{{documentation}}</noinclude> b049fc346b72a3e7b920dbb610b80e3e0a0b65a4 Template:Notelist 10 570 1288 2021-12-25T05:48:43Z wikipedia>Jonesey95 0 Adding unknown parameter tracking through [[:Category:Pages using notelist with unknown parameters]] using [[Module:check for unknown parameters]]. How was this not here before? wikitext text/x-wiki {{reflist|{{{1|{{{colwidth|}}}}}}|refs={{{refs|{{{notes|}}}}}}|group={{#switch: {{{group|}}} | note | upper-alpha | upper-roman | lower-alpha | lower-greek | lower-roman = {{{group|}}} | #default = lower-alpha }}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using notelist with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Notelist]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | colwidth | group | notes | refs }}<noinclude> {{documentation}}</noinclude> 093e937792d01a5dfc9dd3b5e5deda6b48d0f2be Module:Hatnote list 828 36 67 2021-12-26T20:05:24Z wikipedia>Nihiltres 0 Undid revision 1062166786 by [[Special:Contributions/Matthiaspaul|Matthiaspaul]] ([[User talk:Matthiaspaul|talk]]); should be fixed now, and if not, please ping me with examples as I couldn't reproduce the original error Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote list -- -- -- -- This module produces and formats lists for use in hatnotes. In particular, -- -- it implements the for-see list, i.e. lists of "For X, see Y" statements, -- -- as used in {{about}}, {{redirect}}, and their variants. Also introduced -- -- are andList & orList helpers for formatting lists with those conjunctions. -- -------------------------------------------------------------------------------- local mArguments --initialize lazily local mFormatLink = require('Module:Format link') local mHatnote = require('Module:Hatnote') local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} -------------------------------------------------------------------------------- -- List stringification helper functions -- -- These functions are used for stringifying lists, usually page lists inside -- the "Y" portion of "For X, see Y" for-see items. -------------------------------------------------------------------------------- --default options table used across the list stringification functions local stringifyListDefaultOptions = { conjunction = "and", separator = ",", altSeparator = ";", space = " ", formatted = false } --Searches display text only local function searchDisp(haystack, needle) return string.find( string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle ) end -- Stringifies a list generically; probably shouldn't be used directly local function stringifyList(list, options) -- Type-checks, defaults, and a shortcut checkType("stringifyList", 1, list, "table") if #list == 0 then return nil end checkType("stringifyList", 2, options, "table", true) options = options or {} for k, v in pairs(stringifyListDefaultOptions) do if options[k] == nil then options[k] = v end end local s = options.space -- Format the list if requested if options.formatted then list = mFormatLink.formatPages( {categorizeMissing = mHatnote.missingTargetCat}, list ) end -- Set the separator; if any item contains it, use the alternate separator local separator = options.separator for k, v in pairs(list) do if searchDisp(v, separator) then separator = options.altSeparator break end end -- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§" local conjunction = s .. options.conjunction .. s if #list == 2 and searchDisp(list[1], "§") or #list > 2 then conjunction = separator .. conjunction end -- Return the formatted string return mw.text.listToText(list, separator .. s, conjunction) end --DRY function function p.conjList (conj, list, fmt) return stringifyList(list, {conjunction = conj, formatted = fmt}) end -- Stringifies lists with "and" or "or" function p.andList (...) return p.conjList("and", ...) end function p.orList (...) return p.conjList("or", ...) end -------------------------------------------------------------------------------- -- For see -- -- Makes a "For X, see [[Y]]." list from raw parameters. Intended for the -- {{about}} and {{redirect}} templates and their variants. -------------------------------------------------------------------------------- --default options table used across the forSee family of functions local forSeeDefaultOptions = { andKeyword = 'and', title = mw.title.getCurrentTitle().text, otherText = 'other uses', forSeeForm = 'For %s, see %s.', } --Collapses duplicate punctuation local function punctuationCollapse (text) local replacements = { ["%.%.$"] = ".", ["%?%.$"] = "?", ["%!%.$"] = "!", ["%.%]%]%.$"] = ".]]", ["%?%]%]%.$"] = "?]]", ["%!%]%]%.$"] = "!]]" } for k, v in pairs(replacements) do text = string.gsub(text, k, v) end return text end -- Structures arguments into a table for stringification, & options function p.forSeeArgsToTable (args, from, options) -- Type-checks and defaults checkType("forSeeArgsToTable", 1, args, 'table') checkType("forSeeArgsToTable", 2, from, 'number', true) from = from or 1 checkType("forSeeArgsToTable", 3, options, 'table', true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do if options[k] == nil then options[k] = v end end -- maxArg's gotten manually because getArgs() and table.maxn aren't friends local maxArg = 0 for k, v in pairs(args) do if type(k) == 'number' and k > maxArg then maxArg = k end end -- Structure the data out from the parameter list: -- * forTable is the wrapper table, with forRow rows -- * Rows are tables of a "use" string & a "pages" table of pagename strings -- * Blanks are left empty for defaulting elsewhere, but can terminate list local forTable = {} local i = from local terminated = false -- If there is extra text, and no arguments are given, give nil value -- to not produce default of "For other uses, see foo (disambiguation)" if options.extratext and i > maxArg then return nil end -- Loop to generate rows repeat -- New empty row local forRow = {} -- On blank use, assume list's ended & break at end of this loop forRow.use = args[i] if not args[i] then terminated = true end -- New empty list of pages forRow.pages = {} -- Insert first pages item if present table.insert(forRow.pages, args[i + 1]) -- If the param after next is "and", do inner loop to collect params -- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3} while args[i + 2] == options.andKeyword do if args[i + 3] then table.insert(forRow.pages, args[i + 3]) end -- Increment to next "and" i = i + 2 end -- Increment to next use i = i + 2 -- Append the row table.insert(forTable, forRow) until terminated or i > maxArg return forTable end -- Stringifies a table as formatted by forSeeArgsToTable function p.forSeeTableToString (forSeeTable, options) -- Type-checks and defaults checkType("forSeeTableToString", 1, forSeeTable, "table", true) checkType("forSeeTableToString", 2, options, "table", true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do if options[k] == nil then options[k] = v end end -- Stringify each for-see item into a list local strList = {} if forSeeTable then for k, v in pairs(forSeeTable) do local useStr = v.use or options.otherText local pagesStr = p.andList(v.pages, true) or mFormatLink._formatLink{ categorizeMissing = mHatnote.missingTargetCat, link = mHatnote.disambiguate(options.title) } local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr) forSeeStr = punctuationCollapse(forSeeStr) table.insert(strList, forSeeStr) end end if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end -- Return the concatenated list return table.concat(strList, ' ') end -- Produces a "For X, see [[Y]]" string from arguments. Expects index gaps -- but not blank/whitespace values. Ignores named args and args < "from". function p._forSee (args, from, options) local forSeeTable = p.forSeeArgsToTable(args, from, options) return p.forSeeTableToString(forSeeTable, options) end -- As _forSee, but uses the frame. function p.forSee (frame, from, options) mArguments = require('Module:Arguments') return p._forSee(mArguments.getArgs(frame), from, options) end return p d0828422b1aa0d0d0092d699d059c9e882260398 Template:Quote box/styles.css 10 1088 2375 2021-12-27T10:11:04Z wikipedia>Goszei 0 self-revert sanitized-css text/css /* {{pp-template}} */ .quotebox { background-color: #F9F9F9; border: 1px solid #aaa; box-sizing: border-box; padding: 10px; font-size: 88%; max-width: 100%; } .quotebox.floatleft { margin: .5em 1.4em .8em 0; } .quotebox.floatright { margin: .5em 0 .8em 1.4em; } .quotebox.centered { overflow: hidden; position: relative; margin: .5em auto .8em auto; } .quotebox.floatleft span, .quotebox.floatright span { font-style: inherit; } .quotebox > blockquote { margin: 0; padding: 0; /* Styling from Minerva */ border-left: 0; font-family: inherit; font-size: inherit; } .quotebox-title { background-color: #F9F9F9; text-align: center; font-size: 110%; font-weight: bold; } .quotebox-quote > :first-child { margin-top: 0; } .quotebox-quote:last-child > :last-child { margin-bottom: 0; } .quotebox-quote.quoted:before { font-family:'Times New Roman',serif; font-weight:bold; font-size: large; color: gray; content: ' “ '; vertical-align: -45%; line-height: 0; } .quotebox-quote.quoted:after { font-family:'Times New Roman',serif; font-weight:bold; font-size: large; color: gray; content: ' ” '; line-height: 0; } .quotebox .left-aligned { text-align: left; } .quotebox .right-aligned { text-align: right; } .quotebox .center-aligned { text-align: center; } .quotebox .quote-title, .quotebox .quotebox-quote { display: block; } .quotebox cite { display:block; font-style:normal; } @media screen and (max-width:640px) { .quotebox { /*override inline styles */ width: 100% !important; margin: 0 0 .8em !important; float: none !important; } } c6ed92a92ff9774be727e66a8b57231cb39829ff Template:Infobox manner of address 10 1118 2443 2021-12-30T11:42:51Z w>Neveselbert 0 Reverted 2 edits by an unknown user wikitext text/x-wiki {{Infobox | child = {{#if:{{{child|}}}{{{embed|}}}|yes}} | bodyclass = vcard | abovestyle = font-weight: normal; background-color: {{#if:{{{background|}}}|{{{background}}}|#DEDEDE}}; {{#if:{{{color|{{{colour|}}}}}}|color: {{{color|{{{colour}}}}}};}} | above = <includeonly><span style="font-size:80%">{{#if:{{{type|}}}|{{{type}}} styles|Styles}} of</span><br>'''<span class="fn">{{{royal name|{{{name|{{PAGENAMEBASE}}}}}}}}</span>'''{{#if:{{{consort|}}}|<span style="font-size:80%"> as&nbsp;consort</span>}}</includeonly> | title = {{#if:{{{child|}}}{{{embed|}}}|<div style="background-color: {{#if:{{{background|}}}|{{{background}}}|#DEDEDE}}; {{#if:{{{color|{{{colour|}}}}}}|color: {{{color|{{{colour}}}}}};}}">'''{{#if:{{{type|}}}|{{{type}}} styles|Styles}}'''</div>}} | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|alt={{{image_alt|}}}|size={{{image_size|{{{size|}}}}}} }} {{#invoke:InfoboxImage|InfoboxImage|image={{{image2|}}}|alt={{{image2_alt|}}}|size={{{image2_size|{{{size2|{{{image_size|{{{size|}}}}}}}}}}}} }} | caption = {{{caption|}}} | label1 = [[Style (manner of address)|Reference style]] | data1 = {{{dipstyle|{{{reference|}}}}}} | label2 = Spoken style | data2 = {{{offstyle|{{{spoken|}}}}}} | label3 = Religious style | data3 = {{{relstyle|{{{religious|}}}}}} | label4 = Posthumous style | data4 = {{{deathstyle|{{{posthumous|}}}}}} | label5 = Alternative style | data5 = {{{altstyle|{{{alternative|}}}}}} | label6 = Informal style | data6 = {{{informal|}}} | label7 = [[Episcopal see|See]] | data7 = {{{see|}}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox manner of address]] with unknown parameter "_VALUE_"|ignoreblank=y| alternative | altstyle | background | caption | child | color | colour | consort | deathstyle | dipstyle | embed | image | image_alt | image_size | image2 | image2_alt | image2_size | informal | name | offstyle | posthumous | reference | religious | relstyle | royal name | see | size | size2 | spoken | type }}<noinclude> {{documentation}}<!-- add categories and interwikis to Template:Infobox manner of address/doc --> </noinclude> 235abec48f09dde53aabf712e465e6f3fde9c8cc Template:Infobox bishop styles 10 1122 2447 2021-12-31T09:23:28Z w>Neveselbert (mobile) 0 background wikitext text/x-wiki {{Infobox manner of address | embed = {{{child|{{{embed|}}}}}} | background = {{#if:{{yesno|{{{child|{{{embed|}}}}}}}}|transparent|plum}} | name = {{{name|{{{bishop name|{{{{{|safesubst:}}}PAGENAMEBASE}}}}}}}} | image = {{{{{|safesubst:}}}#if:{{{image|}}}|{{{image}}}|Mitre plain 2.png}} | size = {{#if:{{{image_size|}}}|{{{image_size}}}|60px}} | reference = {{{dipstyle<includeonly>|</includeonly>}}} | spoken = {{{offstyle<includeonly>|</includeonly>}}} | religious = {{{relstyle<includeonly>|</includeonly>}}} | posthumous = {{{deathstyle<includeonly>|</includeonly>}}} }}<noinclude>{{documentation}}</noinclude> d2806619da310db378f3d471a9cc722575acdc85 Template:Infobox archbishop styles 10 1119 2444 2021-12-31T09:26:52Z w>Neveselbert (mobile) 0 PAGENAMEBASE wikitext text/x-wiki {{Infobox manner of address | embed = {{{child|{{{embed|}}}}}} | background = {{#if:{{yesno|{{{child|{{{embed|}}}}}}}}|transparent|plum}} | name = {{{archbishop name|{{{{{|safesubst:}}}PAGENAMEBASE}}}}} | image = {{{{{|safesubst:}}}#if:{{{image|}}}|{{{image}}}|Mitre (plain).svg}} | size = {{{{{|safesubst:}}}#if:{{{image_size|}}}|{{{image_size}}}|60px}} | reference = {{{dipstyle<includeonly>|</includeonly>}}} | spoken = {{{offstyle<includeonly>|</includeonly>}}} | religious = {{{relstyle<includeonly>|</includeonly>}}} | posthumous = {{{deathstyle<includeonly>|</includeonly>}}} }}<noinclude>{{documentation}}</noinclude> f83a24dd169f899e99799dec4333b118361fddc7 Template:Tp 10 140 329 2022-01-01T05:37:19Z Xaosflux 7 {{Rcat shell|{{R from template shortcut}}}} wikitext text/x-wiki #REDIRECT [[Template:Template link]] {{Rcat shell|{{R from template shortcut}}}} 59847a20c2c64a767694d7612bfc5d1130c96b9a Module:ISO 3166/data/FR 828 1450 2785 2022-01-02T05:08:53Z w>Drmccreedy 0 2021-11-25 update of ISO 3166-2 Scribunto text/plain return { lang = "fr", -- Metropolitan regions ["ARA"] = {name="Auvergne-Rhône-Alpes"}, ["BFC"] = {name="Bourgogne-Franche-Comté"}, ["BRE"] = {name="Brittany",isoname="Bretagne"}, ["CVL"] = {name="Centre-Val de Loire"}, ["GES"] = {name="Grand Est",isoname="Grand-Est"}, ["HDF"] = {name="Hauts-de-France"}, ["IDF"] = {name="Île-de-France"}, ["NAQ"] = {name="Nouvelle-Aquitaine"}, ["NOR"] = {name="Normandy",isoname="Normandie"}, ["OCC"] = {name="Occitanie"}, ["PAC"] = {name="Provence-Alpes-Côte d'Azur",isoname="Provence-Alpes-Côte-d’Azur"}, ["PDL"] = {name="Pays de la Loire",isoname="Pays-de-la-Loire"}, -- Metropolitan collectivity with special status ["20R"] = {name="Corsica",isoname="Corse"}, ["69M"] = {name="Métropole de Lyon"}, ["75C"] = {name="Paris"}, -- European collectivity ["6AE"] = {name="Alsace"}, -- Metropolitan departments ["01"] = {name="Ain"}, ["02"] = {name="Aisne"}, ["03"] = {name="Allier"}, ["04"] = {name="Alpes-de-Haute-Provence"}, ["05"] = {name="Hautes-Alpes"}, ["06"] = {name="Alpes-Maritimes"}, ["07"] = {name="Ardèche"}, ["08"] = {name="Ardennes"}, ["09"] = {name="Ariège"}, ["10"] = {name="Aube"}, ["11"] = {name="Aude"}, ["12"] = {name="Aveyron"}, ["13"] = {name="Bouches-du-Rhône"}, ["14"] = {name="Calvados"}, ["15"] = {name="Cantal"}, ["16"] = {name="Charente"}, ["17"] = {name="Charente-Maritime"}, ["18"] = {name="Cher"}, ["19"] = {name="Corrèze"}, ["21"] = {name="Côte-d'Or"}, ["22"] = {name="Côtes-d'Armor"}, ["23"] = {name="Creuse"}, ["24"] = {name="Dordogne"}, ["25"] = {name="Doubs"}, ["26"] = {name="Drôme"}, ["27"] = {name="Eure"}, ["28"] = {name="Eure-et-Loir"}, ["29"] = {name="Finistère"}, ["2A"] = {name="Corse-du-Sud"}, ["2B"] = {name="Haute-Corse"}, ["30"] = {name="Gard"}, ["31"] = {name="Haute-Garonne"}, ["32"] = {name="Gers"}, ["33"] = {name="Gironde"}, ["34"] = {name="Hérault"}, ["35"] = {name="Ille-et-Vilaine"}, ["36"] = {name="Indre"}, ["37"] = {name="Indre-et-Loire"}, ["38"] = {name="Isère"}, ["39"] = {name="Jura"}, ["40"] = {name="Landes"}, ["41"] = {name="Loir-et-Cher"}, ["42"] = {name="Loire"}, ["43"] = {name="Haute-Loire"}, ["44"] = {name="Loire-Atlantique"}, ["45"] = {name="Loiret"}, ["46"] = {name="Lot"}, ["47"] = {name="Lot-et-Garonne"}, ["48"] = {name="Lozère"}, ["49"] = {name="Maine-et-Loire"}, ["50"] = {name="Manche"}, ["51"] = {name="Marne"}, ["52"] = {name="Haute-Marne"}, ["53"] = {name="Mayenne"}, ["54"] = {name="Meurthe-et-Moselle"}, ["55"] = {name="Meuse"}, ["56"] = {name="Morbihan"}, ["57"] = {name="Moselle"}, ["58"] = {name="Nièvre"}, ["59"] = {name="Nord"}, ["60"] = {name="Oise"}, ["61"] = {name="Orne"}, ["62"] = {name="Pas-de-Calais"}, ["63"] = {name="Puy-de-Dôme"}, ["64"] = {name="Pyrénées-Atlantiques"}, ["65"] = {name="Hautes-Pyrénées"}, ["66"] = {name="Pyrénées-Orientales"}, ["67"] = {name="Bas-Rhin"}, ["68"] = {name="Haut-Rhin"}, ["69"] = {name="Rhône"}, ["70"] = {name="Haute-Saône"}, ["71"] = {name="Saône-et-Loire"}, ["72"] = {name="Sarthe"}, ["73"] = {name="Savoie"}, ["74"] = {name="Haute-Savoie"}, ["76"] = {name="Seine-Maritime"}, ["77"] = {name="Seine-et-Marne"}, ["78"] = {name="Yvelines"}, ["79"] = {name="Deux-Sèvres"}, ["80"] = {name="Somme"}, ["81"] = {name="Tarn"}, ["82"] = {name="Tarn-et-Garonne"}, ["83"] = {name="Var"}, ["84"] = {name="Vaucluse"}, ["85"] = {name="Vendée"}, ["86"] = {name="Vienne"}, ["87"] = {name="Haute-Vienne"}, ["88"] = {name="Vosges"}, ["89"] = {name="Yonne"}, ["90"] = {name="Territoire de Belfort"}, ["91"] = {name="Essonne"}, ["92"] = {name="Hauts-de-Seine"}, ["93"] = {name="Seine-Saint-Denis"}, ["94"] = {name="Val-de-Marne"}, ["95"] = {name="Val-d'Oise"}, -- Overseas departments ["971"] = {name="Guadeloupe"}, ["972"] = {name="Martinique"}, ["973"] = {name="French Guiana",isoname="Guyane (française)"}, ["974"] = {name="Réunion",isoname="La Réunion"}, ["976"] = {name="Mayotte"}, -- Overseas collectivity ["BL"] = {name="Saint Barthélemy",isoname="Saint-Barthélemy"}, ["MF"] = {name="Saint Martin",isoname="Saint-Martin"}, ["PF"] = {name="French Polynesia",isoname="Polynésie française"}, ["PM"] = {name="Saint Pierre and Miquelon",isoname="Saint-Pierre-et-Miquelon"}, ["WF"] = {name="Wallis and Futuna",isoname="Wallis-et-Futuna"}, -- Overseas collectivity with special status ["NC"] = {name="New Caledonia",isoname="Nouvelle-Calédonie"}, -- Overseas territory ["TF"] = {name="French Southern Territories",isoname="Terres australes françaises",altnames={"French Southern and Antarctic Lands"}}, -- Dependencies ["CP"] = {name="Clipperton Island",isoname="Clipperton"} } f875305f239ca6fa0ef4fe2f7f107bf957db90be Template:Ifsubst 10 600 1350 2022-01-02T08:48:20Z Dinoguy1000 20 fix "|=foo" bug wikitext text/x-wiki {{ safesubst:<noinclude/>#if:{{{demo|}}} |{{ safesubst:<noinclude/>#ifeq:{{{demo}}} |no |{{{no|{{{2|}}}}}} |{{{yes|{{{1|}}}}}} }} |{{ safesubst:<noinclude/>#ifeq:{{ safesubst:<noinclude/>NAMESPACE}}|{{NAMESPACE}} |{{{no|{{{2|}}}}}} |{{{yes|{{{1|}}}}}} }}}}<noinclude> {{Documentation}} </noinclude> 38e667b5df326086489bf557a5f7c4e43393af78 Template:FULLROOTPAGENAME 10 859 1902 2022-01-02T08:54:02Z wikipedia>Dinoguy1000 0 fix "|=foo" bug wikitext text/x-wiki {{ safesubst:<noinclude/>#if: {{ safesubst:<noinclude/>Ns has subpages | {{ safesubst:<noinclude/>#if:{{{1|}}}|{{ safesubst:<noinclude/>NAMESPACE:{{{1}}}}}|{{ safesubst:<noinclude/>NAMESPACE}}}} }} | {{ safesubst:<noinclude/>#titleparts:{{ safesubst:<noinclude/>#if:{{{1|}}}|{{{1}}}|{{ safesubst:<noinclude/>FULLPAGENAME}}}}|1}} | {{ safesubst:<noinclude/>#if:{{{1|}}}|{{{1}}}|{{ safesubst:<noinclude/>FULLPAGENAME}}}} }}<noinclude> {{documentation}} </noinclude> fd0c4e7050dded2d50e5df405e6e5e31dd0d46ac Template:No redirect 10 130 309 2022-01-02T09:07:18Z Dinoguy1000 20 fix "|=foo" bug wikitext text/x-wiki {{safesubst:<noinclude/>#if: {{safesubst:<noinclude/>#invoke:Redirect|isRedirect|{{{1}}}}} | <span class="plainlinks">[{{safesubst:<noinclude/>fullurl:{{{1}}}|redirect=no}} {{{2|{{{1}}}}}}]</span> | {{safesubst:<noinclude/>#if:{{{2|}}}|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}|{{{2}}}]]|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}]]}} }}<noinclude> {{documentation}} </noinclude> 1760035b1bed54ee08b810208ed3551b812dfe13 Template:Order of magnitude 10 1448 2783 2022-01-02T09:08:29Z Dinoguy1000 20 fix "|=foo" bug wikitext text/x-wiki <includeonly>{{safesubst:<noinclude/>#ifexpr:{{{1|0}}}=0 |{{safesubst:<noinclude/>#ifexpr:abs{{{1|0}}}1=1 |0 |{{safesubst:<noinclude/>#expr:floor((ln(abs{{{1}}}1)/ln10)+1)}} }} |{{safesubst:<noinclude/>#expr:floor((ln(abs({{{1|0}}}) )/ln 10)+1E((abs{{{1|0}}}>1E100 or abs{{{1|0}}}<1E-100)-14))}} }}</includeonly><noinclude> {{documentation}} </noinclude> cede5694e8ebb404ecdd17ae1f8e1c5d19562728 Template:Description missing 10 1316 2651 2022-01-02T09:09:12Z Dinoguy1000 20 fix "|=foo" bug wikitext text/x-wiki {{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B= {{imbox | type = style | text = This file has no '''{{ #if: {{{1|}}} | {{{1}}} | description }}''', and may be lacking other information. <br> Files should have a summary to inform others of the content, author, source, and date if possible. If you know or have access to such information, please add it to the file page. ---- <small>Notify the uploader with: {{#ifeq:{{{1}}}|author information |<nowiki>{{subst:add-author-I|1=</nowiki>{{PAGENAME}}<nowiki>}}</nowiki> |<nowiki>{{subst:add-desc-I|1=</nowiki>{{PAGENAME}}<nowiki>}}</nowiki> }}</small> }}{{image other <!--Only categorise when on image pages--> | {{#ifeq:{{{category|μ}}}|μ| [[Category:Wikipedia files lacking a description|{{PAGENAME}}]] }} }} }}<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> c15249dbb035d582396ee15b9876f6157f3b21f9 Template:Clarify 10 1661 3061 2022-01-02T09:15:39Z Dinoguy1000 20 fix "|=foo" bug wikitext text/x-wiki {{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B= {{Fix-span |link=Wikipedia:Please clarify |text=clarification needed |title={{delink|{{{reason|The text near this tag may need clarification or removal of jargon.}}}}} |date={{{date|}}} |pre-text={{{pre-text|}}} |post-text={{{post-text|}}} |cat-date=Category:Wikipedia articles needing clarification |content={{{text|}}} }} }}<noinclude> {{documentation}} </noinclude> afe686147e4423132c07ddd2f1d9c73c4bdcca30 Template:Citation style 10 1302 2637 2022-01-02T09:37:16Z Dinoguy1000 20 fix "|=foo" bug wikitext text/x-wiki {{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B= <!--{{Citation style}} begin-->{{Ambox | name = Citation style | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | small = {{{small|}}} | class = ambox-citation_style | sect = {{{1|}}} | issue = '''has an unclear citation style'''. {{#if:{{{reason|{{{details|}}}}}}|The reason given is: '''{{Terminate sentence|{{{reason|{{{details}}}}}}}}'''}} | fix = The references used may be made clearer with a different or consistent style of [[Wikipedia:Citing sources|citation]] and [[Help:Footnotes|footnoting]]. | cat = Wikipedia references cleanup | all = All articles needing references cleanup | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify | date = {{{date|}}} | removalnotice = yes }}<!--{{Citation style}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> ffdf9d833ab08e004e41c1c6da5fde056385ee2f Template:Underlinked 10 1307 2642 2022-01-02T09:38:44Z Dinoguy1000 20 fix "|=foo" bug; rm unnecessary substitution check wikitext text/x-wiki {{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B= <!--{{Underlinked}} begin-->{{Ambox | name = Underlinked | type = style | image = [[File:Ambox wikify.svg|50x40px|link=|alt=]] | issue = This {{{1|article}}} '''needs more [[Wikipedia:Manual of Style/Linking|links to other articles]] to help [[Wikipedia:Manual of Style/Linking#Principles|integrate it into the encyclopedia]]'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding links [[Wikipedia:Manual of Style/Linking#Overlinking and underlinking|that are relevant to the context]] within the existing text. | removalnotice = yes | date = {{{date|}}} | cat = Articles with too few wikilinks | all = All articles with too few wikilinks | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify }}<!--{{Underlinked}} end--> }}<noinclude> {{Documentation}} </noinclude> 91b612fd89e6e3fdf0b30df492c6a9e2b83f3449 Template:Native name 10 1182 2511 2022-01-02T15:28:59Z w>Trappist the monk 0 use [[Module:Native name]]; wikitext text/x-wiki <includeonly>{{#invoke:native name|native_name}}</includeonly><noinclude>{{Documentation}}</noinclude> 8ef2e413bdb984b6a4b78857616db695b6658203 Module:Navbar/styles.css 828 39 73 2022-01-03T23:12:15Z wikipedia>Izno 0 navbar styles that were moved to parent templates text text/plain /* {{pp|small=yes}} */ .navbar { display: inline; font-size: 88%; font-weight: normal; } .navbar-collapse { float: left; text-align: left; } .navbar-boxtext { word-spacing: 0; } .navbar ul { display: inline-block; white-space: nowrap; line-height: inherit; } .navbar-brackets::before { margin-right: -0.125em; content: '[ '; } .navbar-brackets::after { margin-left: -0.125em; content: ' ]'; } .navbar li { word-spacing: -0.125em; } .navbar a > span, .navbar a > abbr { text-decoration: inherit; } .navbar-mini abbr { font-variant: small-caps; border-bottom: none; text-decoration: none; cursor: inherit; } .navbar-ct-full { font-size: 114%; margin: 0 7em; } .navbar-ct-mini { font-size: 114%; margin: 0 4em; } 9d4056f949b4f0b159e3d40dfb1a5f01e72f9571 Template:Pluralize from text 10 174 401 2022-01-09T17:59:39Z wikipedia>MusikBot II 0 Protected "[[Template:Pluralize from text]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 18336 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki {{#invoke:Detect singular|pluralize}}<noinclude>{{documentation}}</noinclude> 305f4b531ea5639895c83cecd0fd809f7f5cf845 Template:Small 10 103 253 2022-01-17T03:43:07Z wikipedia>Explicit 0 [[Wikipedia:Templates for discussion/Log/2022 January 10#Template:Smaller]] closed as merge ([[WP:XFDC#4.0.12|XFDcloser]]) wikitext text/x-wiki <span style="font-size:85%;">{{{1}}}</span><includeonly>{{SAFESUBST:#if:{{{1|}}}||[[Category:Pages using small with an empty input parameter]]}}</includeonly><noinclude> {{Documentation}}<!--Categories and interwikis go in the /doc sub-page.--> </noinclude> 76d3535c2917cc3bfb1b032506073faa15e1a480 Module:Redirect-distinguish 828 1036 2270 2022-01-18T05:49:10Z wikipedia>Elli 0 Undid revision 1066390800 by [[Special:Contributions/Faster than Thunder|Faster than Thunder]] ([[User talk:Faster than Thunder|talk]]) yeah, no, this is inappropriate Scribunto text/plain local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local mTableTools = require('Module:TableTools') local p = {} function p.redirectDistinguish (frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame) return p._redirectDistinguish(args) end function p._redirectDistinguish(args) if not args[1] then return mHatnote.makeWikitextError( 'no redirect supplied', 'Template:Redirect-distinguish', args.category ) end local redirectTitle = mw.title.new(args[1]) local currentTitle = currentTitle or mw.title.getCurrentTitle() if string.match(args[1], 'REDIRECT%d+') or args[1] == 'TERM' or currentTitle.namespace ~= 0 then --do nothing elseif not redirectTitle or not redirectTitle.exists then args[1] = args[1] .. '[[Category:Missing redirects]]' elseif not redirectTitle.isRedirect then if string.find(redirectTitle:getContent(), '#invoke:RfD') then args[1] = args[1] .. '[[Category:Articles with redirect hatnotes impacted by RfD]]' else args[1] = args[1] .. '[[Category:Articles with redirect hatnotes needing review]]' end end if not args[2] then return mHatnote.makeWikitextError( 'no page to be distinguished supplied', 'Template:Redirect-distinguish', args.category ) end args = mTableTools.compressSparseArray(args) --Assignment by removal here makes for convenient concatenation later local redirect = table.remove(args, 1) local text = string.format( '"%s" redirects here. Not to be confused with %s.', redirect, mHatlist.orList(args, true) ) return mHatnote._hatnote(text) end return p 4bdb55228ac3e76fde51e08f10054d210d702b91 Template:Smaller 10 104 255 2022-01-18T10:48:21Z wikipedia>Primefac 0 merge complete wikitext text/x-wiki #REDIRECT [[Template:Small]] {{r from merge}} 2209ecdc4a987eb3d73f648941a3daaed04cd5d5 Module:Infobox/styles.css 828 19 33 2022-01-18T15:18:00Z wikipedia>Jdlrobson 0 Fix [[phab:T281642]], a pet peeve of mine. This copies across styles from [[MediaWiki:Minerva.css]] text text/plain /* {{pp|small=y}} */ /* * This TemplateStyles sheet deliberately does NOT include the full set of * infobox styles. We are still working to migrate all of the manual * infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]] * DO NOT ADD THEM HERE */ /* * not strictly certain these styles are necessary since the modules now * exclusively output infobox-subbox or infobox, not both * just replicating the module faithfully */ .infobox-subbox { padding: 0; border: none; margin: -3px; width: auto; min-width: 100%; font-size: 100%; clear: none; float: none; background-color: transparent; } .infobox-3cols-child { margin: auto; } .infobox .navbar { font-size: 100%; } /* T281642 */ body.skin-minerva .infobox-header, body.skin-minerva .infobox-subheader, body.skin-minerva .infobox-above, body.skin-minerva .infobox-title, body.skin-minerva .infobox-image, body.skin-minerva .infobox-full-data, body.skin-minerva .infobox-below { text-align: center; } e8de6d96f4fde53afc4a6b0fed534405ab59b0a7 Template:Detect singular 10 199 452 2022-01-19T08:38:01Z wikipedia>MSGJ 0 Changed protection settings for "[[Template:Detect singular]]": template protection should be adaquate ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki {{#invoke:Detect singular|main}}<noinclude> {{documentation}} </noinclude> 0dd1507d935296f20a354173ba876d010a9ed72b Template:POV 10 1301 2636 2022-01-20T20:37:15Z w>JJMC89 0 [[Wikipedia:Categories for discussion/Log/2021 December 23#Category:NPOV disputes]] wikitext text/x-wiki {{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B= <!--{{POV}} begin-->{{Ambox | name = POV | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-POV | style = {{{style|}}} | image = [[File:Unbalanced scales.svg|50x40px|link=]] | issue = The '''[[Wikipedia:Neutral point of view|neutrality]] of this {{{what|article}}} is [[Wikipedia:NPOV dispute|disputed]]'''. | talk = {{{talk|#}}} | fix = Please do not remove this message until [[Template:POV#When to remove|conditions to do so are met]]. | removalnotice = yes | date = {{{date|}}} | cat = Wikipedia neutral point of view disputes | all = All Wikipedia neutral point of view disputes }}<!--{{POV}} end--> }}<noinclude> {{Documentation}} </noinclude> e8c041c852b18976809007fd683af9617ab6dacb Module:Citation/CS1/Utilities 828 892 1974 2022-01-22T14:11:16Z wikipedia>Trappist the monk 0 update per [[Wikipedia:Village_pump_(proposals)#rfc:_shall_we_update_cs1/2?|RfC]]; Scribunto text/plain local z = { error_cats_t = {}; -- for categorizing citations that contain errors error_ids_t = {}; -- list of error identifiers; used to prevent duplication of certain errors; local to this module error_msgs_t = {}; -- sequence table of error messages maint_cats_t = {}; -- for categorizing citations that aren't erroneous per se, but could use a little work prop_cats_t = {}; -- for categorizing citations based on certain properties, language of source for instance prop_keys_t = {}; -- for adding classes to the citation's <cite> tag }; --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration --[[--------------------------< I S _ S E T >------------------------------------------------------------------ Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string. ]] local function is_set (var) return not (var == nil or var == ''); end --[[--------------------------< I N _ A R R A Y >-------------------------------------------------------------- Whether needle is in haystack ]] local function in_array (needle, haystack) if needle == nil then return false; end for n, v in ipairs (haystack) do if v == needle then return n; end end return false; end --[[--------------------------< H A S _ A C C E P T _ A S _ W R I T T E N >------------------------------------ When <str> is wholly wrapped in accept-as-written markup, return <str> without markup and true; return <str> and false else with allow_empty = false, <str> must have at least one character inside the markup with allow_empty = true, <str> the markup frame can be empty like (()) to distinguish an empty template parameter from the specific condition "has no applicable value" in citation-context. After further evaluation the two cases might be merged at a later stage, but should be kept separated for now. ]] local function has_accept_as_written (str, allow_empty) if not is_set (str) then return str, false; end local count; if true == allow_empty then str, count = str:gsub ('^%(%((.*)%)%)$', '%1'); -- allows (()) to be an empty set else str, count = str:gsub ('^%(%((.+)%)%)$', '%1'); end return str, 0 ~= count; end --[[--------------------------< S U B S T I T U T E >---------------------------------------------------------- Populates numbered arguments in a message string using an argument table. <args> may be a single string or a sequence table of multiple strings. ]] local function substitute (msg, args) return args and mw.message.newRawMessage (msg, args):plain() or msg; end --[[--------------------------< E R R O R _ C O M M E N T >---------------------------------------------------- Wraps error messages with CSS markup according to the state of hidden. <content> may be a single string or a sequence table of multiple strings. ]] local function error_comment (content, hidden) return substitute (hidden and cfg.presentation['hidden-error'] or cfg.presentation['visible-error'], content); end --[[--------------------------< H Y P H E N _ T O _ D A S H >-------------------------------------------------- Converts a hyphen to a dash under certain conditions. The hyphen must separate like items; unlike items are returned unmodified. These forms are modified: letter - letter (A - B) digit - digit (4-5) digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5) letterdigit - letterdigit (A1-A5) (an optional separator between letter and digit is supported – a.1-a.5 or a-1-a-5) digitletter - digitletter (5a - 5d) (an optional separator between letter and digit is supported – 5.a-5.d or 5-a-5-d) any other forms are returned unmodified. str may be a comma- or semicolon-separated list ]] local function hyphen_to_dash (str) if not is_set (str) then return str; end local accept; -- boolean str = str:gsub ("(%(%(.-%)%))", function(m) return m:gsub(",", ","):gsub(";", ";") end) -- replace commas and semicolons in accept-as-written markup with similar unicode characters so they'll be ignored during the split str = str:gsub ('&[nm]dash;', {['&ndash;'] = '–', ['&mdash;'] = '—'}); -- replace &mdash; and &ndash; entities with their characters; semicolon mucks up the text.split str = str:gsub ('&#45;', '-'); -- replace HTML numeric entity with hyphen character str = str:gsub ('&nbsp;', ' '); -- replace &nbsp; entity with generic keyboard space character local out = {}; local list = mw.text.split (str, '%s*[,;]%s*'); -- split str at comma or semicolon separators if there are any for _, item in ipairs (list) do -- for each item in the list item, accept = has_accept_as_written (item); -- remove accept-this-as-written markup when it wraps all of item if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit) item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter) item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2'); -- replace hyphen, remove extraneous space characters else item = mw.ustring.gsub (item, '%s*[–—]%s*', '–'); -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace end end table.insert (out, item); -- add the (possibly modified) item to the output table end local temp_str = ''; -- concatenate the output table into a comma separated string temp_str, accept = has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out if accept then temp_str = has_accept_as_written (str); -- when global markup removed, return original str; do it this way to suppress boolean second return value return temp_str:gsub(",", ","):gsub(";", ";"); else return temp_str:gsub(",", ","):gsub(";", ";"); -- else, return assembled temp_str end end --[=[-------------------------< M A K E _ W I K I L I N K >---------------------------------------------------- Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only link is provided (or link and display are the same), returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an empty string. ]=] local function make_wikilink (link, display) if not is_set (link) then return '' end if is_set (display) and link ~= display then return table.concat ({'[[', link, '|', display, ']]'}); else return table.concat ({'[[', link, ']]'}); end end --[[--------------------------< S E T _ M E S S A G E >---------------------------------------------------------- Sets an error message using the ~/Configuration error_conditions{} table along with arguments supplied in the function call, inserts the resulting message in z.error_msgs_t{} sequence table, and returns the error message. <error_id> – key value for appropriate error handler in ~/Configuration error_conditions{} table <arguments> – may be a single string or a sequence table of multiple strings to be subsititued into error_conditions[error_id].message <raw> – boolean true – causes this function to return the error message not wrapped in visible-error, hidden-error span tag; returns error_conditions[error_id].hidden as a second return value does not add message to z.error_msgs_t sequence table false, nil – adds message wrapped in visible-error, hidden-error span tag to z.error_msgs_t returns the error message wrapped in visible-error, hidden-error span tag; there is no second return value <prefix> – string to be prepended to <message> -- TODO: remove support for these unused(?) arguments? <suffix> – string to be appended to <message> TODO: change z.error_cats_t and z.maint_cats_t to have the form cat_name = true? this to avoid dups without having to have an extra table ]] local added_maint_cats = {} -- list of maintenance categories that have been added to z.maint_cats_t; TODO: figure out how to delete this table local function set_message (error_id, arguments, raw, prefix, suffix) local error_state = cfg.error_conditions[error_id]; prefix = prefix or ''; suffix = suffix or ''; if error_state == nil then error (cfg.messages['undefined_error'] .. ': ' .. error_id); -- because missing error handler in Module:Citation/CS1/Configuration elseif is_set (error_state.category) then if error_state.message then -- when error_state.message defined, this is an error message table.insert (z.error_cats_t, error_state.category); else if not added_maint_cats[error_id] then added_maint_cats[error_id] = true; -- note that we've added this category table.insert (z.maint_cats_t, substitute (error_state.category, arguments)); -- make cat name then add to table end return; -- because no message, nothing more to do end end local message = substitute (error_state.message, arguments); message = table.concat ( { message, ' (', make_wikilink ( table.concat ( { cfg.messages['help page link'], '#', error_state.anchor }), cfg.messages['help page label']), ')' }); z.error_ids_t[error_id] = true; if z.error_ids_t['err_citation_missing_title'] and -- if missing-title error already noted in_array (error_id, {'err_bare_url_missing_title', 'err_trans_missing_title'}) then -- and this error is one of these return '', false; -- don't bother because one flavor of missing title is sufficient end message = table.concat ({prefix, message, suffix}); if true == raw then return message, error_state.hidden; -- return message not wrapped in visible-error, hidden-error span tag end message = error_comment (message, error_state.hidden); -- wrap message in visible-error, hidden-error span tag table.insert (z.error_msgs_t, message); -- add it to the messages sequence table return message; -- and done; return value generally not used but is used as a flag in various functions of ~/Identifiers end --[[-------------------------< I S _ A L I A S _ U S E D >----------------------------------------------------- This function is used by select_one() to determine if one of a list of alias parameters is in the argument list provided by the template. Input: args – pointer to the arguments table from calling template alias – one of the list of possible aliases in the aliases lists from Module:Citation/CS1/Configuration index – for enumerated parameters, identifies which one enumerated – true/false flag used to choose how enumerated aliases are examined value – value associated with an alias that has previously been selected; nil if not yet selected selected – the alias that has previously been selected; nil if not yet selected error_list – list of aliases that are duplicates of the alias already selected Returns: value – value associated with alias we selected or that was previously selected or nil if an alias not yet selected selected – the alias we selected or the alias that was previously selected or nil if an alias not yet selected ]] local function is_alias_used (args, alias, index, enumerated, value, selected, error_list) if enumerated then -- is this a test for an enumerated parameters? alias = alias:gsub ('#', index); -- replace '#' with the value in index else alias = alias:gsub ('#', ''); -- remove '#' if it exists end if is_set (args[alias]) then -- alias is in the template's argument list if value ~= nil and selected ~= alias then -- if we have already selected one of the aliases local skip; for _, v in ipairs (error_list) do -- spin through the error list to see if we've added this alias if v == alias then skip = true; break; -- has been added so stop looking end end if not skip then -- has not been added so table.insert (error_list, alias); -- add error alias to the error list end else value = args[alias]; -- not yet selected an alias, so select this one selected = alias; end end return value, selected; -- return newly selected alias, or previously selected alias end --[[--------------------------< A D D _ M A I N T _ C A T >------------------------------------------------------ Adds a category to z.maint_cats_t using names from the configuration file with additional text if any. To prevent duplication, the added_maint_cats table lists the categories by key that have been added to z.maint_cats_t. ]] local function add_maint_cat (key, arguments) if not added_maint_cats [key] then added_maint_cats [key] = true; -- note that we've added this category table.insert (z.maint_cats_t, substitute (cfg.maint_cats [key], arguments)); -- make name then add to table end end --[[--------------------------< A D D _ P R O P _ C A T >-------------------------------------------------------- Adds a category to z.prop_cats_t using names from the configuration file with additional text if any. foreign_lang_source and foreign_lang_source_2 keys have a language code appended to them so that multiple languages may be categorized but multiples of the same language are not categorized. added_prop_cats is a table declared in page scope variables above ]] local added_prop_cats = {}; -- list of property categories that have been added to z.prop_cats_t local function add_prop_cat (key, arguments, key_modifier) local key_modified = key .. ((key_modifier and key_modifier) or ''); -- modify <key> with <key_modifier> if present and not nil if not added_prop_cats [key_modified] then added_prop_cats [key_modified] = true; -- note that we've added this category table.insert (z.prop_cats_t, substitute (cfg.prop_cats [key], arguments)); -- make name then add to table table.insert (z.prop_keys_t, 'cs1-prop-' .. key); -- convert key to class for use in the citation's <cite> tag end end --[[--------------------------< S A F E _ F O R _ I T A L I C S >---------------------------------------------- Protects a string that will be wrapped in wiki italic markup '' ... '' Note: We cannot use <i> for italics, as the expected behavior for italics specified by ''...'' in the title is that they will be inverted (i.e. unitalicized) in the resulting references. In addition, <i> and '' tend to interact poorly under Mediawiki's HTML tidy. ]] local function safe_for_italics (str) if not is_set (str) then return str end if str:sub (1, 1) == "'" then str = "<span></span>" .. str; end if str:sub (-1, -1) == "'" then str = str .. "<span></span>"; end return str:gsub ('\n', ' '); -- Remove newlines as they break italics. end --[[--------------------------< W R A P _ S T Y L E >---------------------------------------------------------- Applies styling to various parameters. Supplied string is wrapped using a message_list configuration taking one argument; protects italic styled parameters. Additional text taken from citation_config.presentation - the reason this function is similar to but separate from wrap_msg(). ]] local function wrap_style (key, str) if not is_set (str) then return ""; elseif in_array (key, {'italic-title', 'trans-italic-title'}) then str = safe_for_italics (str); end return substitute (cfg.presentation[key], {str}); end --[[--------------------------< M A K E _ S E P _ L I S T >------------------------------------------------------------ make a separated list of items using provided separators. <sep_list> - typically '<comma><space>' <sep_list_pair> - typically '<space>and<space>' <sep_list_end> - typically '<comma><space>and<space>' or '<comma><space>&<space>' defaults to cfg.presentation['sep_list'], cfg.presentation['sep_list_pair'], and cfg.presentation['sep_list_end'] if <sep_list_end> is specified, <sep_list> and <sep_list_pair> must also be supplied ]] local function make_sep_list (count, list_seq, sep_list, sep_list_pair, sep_list_end) local list = ''; if not sep_list then -- set the defaults sep_list = cfg.presentation['sep_list']; sep_list_pair = cfg.presentation['sep_list_pair']; sep_list_end = cfg.presentation['sep_list_end']; end if 2 >= count then list = table.concat (list_seq, sep_list_pair); -- insert separator between two items; returns list_seq[1] then only one item elseif 2 < count then list = table.concat (list_seq, sep_list, 1, count - 1); -- concatenate all but last item with plain list separator list = table.concat ({list, list_seq[count]}, sep_list_end); -- concatenate last item onto end of <list> with final separator end return list; end --[[--------------------------< S E L E C T _ O N E >---------------------------------------------------------- Chooses one matching parameter from a list of parameters to consider. The list of parameters to consider is just names. For parameters that may be enumerated, the position of the numerator in the parameter name is identified by the '#' so |author-last1= and |author1-last= are represented as 'author-last#' and 'author#-last'. Because enumerated parameter |<param>1= is an alias of |<param>= we must test for both possibilities. Generates an error if more than one match is present. ]] local function select_one (args, aliases_list, error_condition, index) local value = nil; -- the value assigned to the selected parameter local selected = ''; -- the name of the parameter we have chosen local error_list = {}; if index ~= nil then index = tostring(index); end for _, alias in ipairs (aliases_list) do -- for each alias in the aliases list if alias:match ('#') then -- if this alias can be enumerated if '1' == index then -- when index is 1 test for enumerated and non-enumerated aliases value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); -- first test for non-enumerated alias end value, selected = is_alias_used (args, alias, index, true, value, selected, error_list); -- test for enumerated alias else value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); -- test for non-enumerated alias end end if #error_list > 0 and 'none' ~= error_condition then -- for cases where this code is used outside of extract_names() for i, v in ipairs (error_list) do error_list[i] = wrap_style ('parameter', v); end table.insert (error_list, wrap_style ('parameter', selected)); set_message (error_condition, {make_sep_list (#error_list, error_list)}); end return value, selected; end --[=[-------------------------< R E M O V E _ W I K I _ L I N K >---------------------------------------------- Gets the display text from a wikilink like [[A|B]] or [[B]] gives B The str:gsub() returns either A|B froma [[A|B]] or B from [[B]] or B from B (no wikilink markup). In l(), l:gsub() removes the link and pipe (if they exist); the second :gsub() trims whitespace from the label if str was wrapped in wikilink markup. Presumably, this is because without wikimarkup in str, there is no match in the initial gsub, the replacement function l() doesn't get called. ]=] local function remove_wiki_link (str) return (str:gsub ("%[%[([^%[%]]*)%]%]", function(l) return l:gsub ("^[^|]*|(.*)$", "%1" ):gsub ("^%s*(.-)%s*$", "%1"); end)); end --[=[-------------------------< I S _ W I K I L I N K >-------------------------------------------------------- Determines if str is a wikilink, extracts, and returns the wikilink type, link text, and display text parts. If str is a complex wikilink ([[L|D]]): returns wl_type 2 and D and L from [[L|D]]; if str is a simple wikilink ([[D]]) returns wl_type 1 and D from [[D]] and L as empty string; if not a wikilink: returns wl_type 0, str as D, and L as empty string. trims leading and trailing whitespace and pipes from L and D ([[L|]] and [[|D]] are accepted by MediaWiki and treated like [[D]]; while [[|D|]] is not accepted by MediaWiki, here, we accept it and return D without the pipes). ]=] local function is_wikilink (str) local D, L local wl_type = 2; -- assume that str is a complex wikilink [[L|D]] if not str:match ('^%[%[[^%]]+%]%]$') then -- is str some sort of a wikilink (must have some sort of content) return 0, str, ''; -- not a wikilink; return wl_type as 0, str as D, and empty string as L end L, D = str:match ('^%[%[([^|]+)|([^%]]+)%]%]$'); -- get L and D from [[L|D]] if not is_set (D) then -- if no separate display D = str:match ('^%[%[([^%]]*)|*%]%]$'); -- get D from [[D]] or [[D|]] wl_type = 1; end D = mw.text.trim (D, '%s|'); -- trim white space and pipe characters return wl_type, D, L or ''; end --[[--------------------------< S T R I P _ A P O S T R O P H E _ M A R K U P >-------------------------------- Strip wiki italic and bold markup from argument so that it doesn't contaminate COinS metadata. This function strips common patterns of apostrophe markup. We presume that editors who have taken the time to markup a title have, as a result, provided valid markup. When they don't, some single apostrophes are left behind. Returns the argument without wiki markup and a number; the number is more-or-less meaningless except as a flag to indicate that markup was replaced; do not rely on it as an indicator of how many of any kind of markup was removed; returns the argument and nil when no markup removed ]] local function strip_apostrophe_markup (argument) if not is_set (argument) then return argument, nil; -- no argument, nothing to do end if nil == argument:find ( "''", 1, true ) then -- Is there at least one double apostrophe? If not, exit. return argument, nil; end local flag; while true do if argument:find ("'''''", 1, true) then -- bold italic (5) argument, flag = argument:gsub ("%'%'%'%'%'", ""); -- remove all instances of it elseif argument:find ("''''", 1, true) then -- italic start and end without content (4) argument, flag=argument:gsub ("%'%'%'%'", ""); elseif argument:find ("'''", 1, true) then -- bold (3) argument, flag=argument:gsub ("%'%'%'", ""); elseif argument:find ("''", 1, true) then -- italic (2) argument, flag = argument:gsub ("%'%'", ""); else break; end end return argument, flag; -- done end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local cfg table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr) cfg = cfg_table_ptr; end --[[--------------------------< E X P O R T S >---------------------------------------------------------------- ]] return { add_maint_cat = add_maint_cat, -- exported functions add_prop_cat = add_prop_cat, error_comment = error_comment, has_accept_as_written = has_accept_as_written, hyphen_to_dash = hyphen_to_dash, in_array = in_array, is_set = is_set, is_wikilink = is_wikilink, make_sep_list = make_sep_list, make_wikilink = make_wikilink, remove_wiki_link = remove_wiki_link, safe_for_italics = safe_for_italics, select_one = select_one, set_message = set_message, set_selected_modules = set_selected_modules, strip_apostrophe_markup = strip_apostrophe_markup, substitute = substitute, wrap_style = wrap_style, z = z, -- exported table } b006801b48981b2987f20fc09cbe0dfda525e044 Template:SDcat/doc 10 764 1703 2022-01-23T09:54:20Z wikipedia>Christian75 0 {{High risk}} wikitext text/x-wiki {{Documentation subpage}} {{High risk}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{lua|Module:SDcat}} This template is merely a wrapper for [[Module:SDcat]], which adds tracking categories to articles depending on whether their [[WP:short description|short description]] matches the associated description field on Wikidata. Complete documentation is available at [[Module:SDcat]]. == Usage == <code><nowiki>{{SDcat |sd={{{shortdescription|}}} }}</nowiki></code> === For testing === <code><nowiki>{{SDcat |sd=short description |qid=Wikidata entity ID |lp=link prefix (usually ":") }}</nowiki></code> <includeonly>{{sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:WikiProject Short descriptions]] }}</includeonly> 2a2e572b915cc316e39d344979cbca621b80c828 Template:Country data Hungary 10 1200 2529 2022-01-24T06:40:01Z w>Paine Ellsworth 0 use AWB to add navy variant wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Hungary | flag alias = Flag of Hungary.svg | flag alias-1848 = Flag of Hungary (1848-1849, 1867-1869).svg | flag alias-1849 = Flag of the Habsburg Monarchy.svg | flag alias-1867 = Flag of Hungary (1848-1849, 1867-1869).svg | flag alias-1869 = Flag of Hungary (1869-1874).svg | flag alias-1874 = Flag of Hungary (1874-1896).svg | flag alias-1896 = Flag of Hungary (1896-1915; angels).svg | flag alias-1915 = Flag of Hungary (1915-1918; angels).svg | flag alias-1918 = Flag of Hungary (1918-1919).svg | flag alias-1919 = Flag of Hungary (1919).svg | flag alias-1920 = Flag of Hungary (1915-1918, 1919-1946).svg | flag alias-1946 = Flag of Hungary (1946-1949, 1956-1957; 1-2 aspect ratio).svg | flag alias-1949 = Flag of Hungary (1949-1956; 1-2 aspect ratio).svg | flag alias-1956 = Flag of Hungary (1946-1949, 1956-1957; 1-2 aspect ratio).svg | flag alias-1957 = Flag of Hungary.svg | flag alias-state = Flag of Hungary with arms (state).svg | flag alias-civil = Civil Ensign of Hungary.svg | flag alias-naval = Naval Ensign of Hungary.svg | link alias-naval = Hungarian Defence Forces | flag alias-military = Flag of the Hungarian Defence Forces.svg | link alias-military = Hungarian Defence Forces | flag alias-army = War Flag of Hungary.svg | link alias-army = Hungarian Ground Forces | link alias-air force = Hungarian Air Force | flag alias-navy = Naval Ensign of Hungary.svg | link alias-navy = Hungarian Defence Forces | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1848 | var2 = 1849 | var3 = 1867 | var4 = 1869 | var5 = 1874 | var6 = 1896 | var7 = 1915 | var8 = 1918 | var9 = 1919 | var10 = 1920 | var11 = 1946 | var12 = 1949 | var13 = 1956 | var14 = 1957 | var15 = state | var16 = civil | redir1 = HUN | related1 = Austria-Hungary </noinclude> }} 88752fd60055fe5e7639e859ebfe4a6950f9719f Template:Country data England 10 1471 2806 2022-01-24T23:39:10Z w>Paine Ellsworth 0 use AWB to add navy variant wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = England | flag alias = Flag of England.svg | flag alias-naval = English White Ensign 1620.svg | link alias-naval = Royal Navy | flag alias-navy = English White Ensign 1620.svg | link alias-navy = Royal Navy | link alias-cricket = England {{{mw|}}} {{{age|}}} cricket team | {{#ifeq:{{{altlink}}}|A national rugby union team|link alias-rugby union|empty}} = England Saxons | size = {{{size|}}} | name = {{{name|}}} | variant = {{{variant|}}} | altlink = {{{altlink|}}} | altvar = {{{altvar|}}} <noinclude> | redir1 = ENG </noinclude> }} b756ff0386791b9afed0b09eea6989b7881a0b2c Module:Documentation/config 828 52 99 2022-01-25T23:46:11Z wikipedia>Ianblair23 0 link Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Protection template configuration ---------------------------------------------------------------------------------------------------- -- cfg['protection-reason-edit'] -- The protection reason for edit-protected templates to pass to -- [[Module:Protection banner]]. cfg['protection-reason-edit'] = 'template' --[[ ---------------------------------------------------------------------------------------------------- -- Sandbox notice configuration -- -- On sandbox pages the module can display a template notifying users that the current page is a -- sandbox, and the location of test cases pages, etc. The module decides whether the page is a -- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the -- messages that the notices contains. ---------------------------------------------------------------------------------------------------- --]] -- cfg['sandbox-notice-image'] -- The image displayed in the sandbox notice. cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]' --[[ -- cfg['sandbox-notice-pagetype-template'] -- cfg['sandbox-notice-pagetype-module'] -- cfg['sandbox-notice-pagetype-other'] -- The page type of the sandbox page. The message that is displayed depends on the current subject -- namespace. This message is used in either cfg['sandbox-notice-blurb'] or -- cfg['sandbox-notice-diff-blurb']. --]] cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page' cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page' cfg['sandbox-notice-pagetype-other'] = 'sandbox page' --[[ -- cfg['sandbox-notice-blurb'] -- cfg['sandbox-notice-diff-blurb'] -- cfg['sandbox-notice-diff-display'] -- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence -- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page -- type, which is either cfg['sandbox-notice-pagetype-template'], -- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what -- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between -- the sandbox and the main template. The display value of the diff link is set by -- cfg['sandbox-notice-compare-link-display']. --]] cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.' cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).' cfg['sandbox-notice-compare-link-display'] = 'diff' --[[ -- cfg['sandbox-notice-testcases-blurb'] -- cfg['sandbox-notice-testcases-link-display'] -- cfg['sandbox-notice-testcases-run-blurb'] -- cfg['sandbox-notice-testcases-run-link-display'] -- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit. $1 is a link to the test cases page. -- cfg['sandbox-notice-testcases-link-display'] is the display value for that link. -- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test -- cases page, and $2 is a link to the page to run it. -- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test -- cases. --]] cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.' cfg['sandbox-notice-testcases-link-display'] = 'test cases' cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).' cfg['sandbox-notice-testcases-run-link-display'] = 'run' -- cfg['sandbox-category'] -- A category to add to all template sandboxes. cfg['sandbox-category'] = 'Template sandboxes' ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg 71b68ed73088f1a59d61acf06bbee9fde6677f03 Module:TableTools 828 21 37 2022-01-31T13:08:18Z wikipedia>MSGJ 0 updates/fixes requested by [[User:Uzume]] Scribunto text/plain ------------------------------------------------------------------------------------ -- TableTools -- -- -- -- This module includes a number of functions for dealing with Lua tables. -- -- It is a meta-module, meant to be called from other Lua modules, and should not -- -- be called directly from #invoke. -- ------------------------------------------------------------------------------------ local libraryUtil = require('libraryUtil') local p = {} -- Define often-used variables and functions. local floor = math.floor local infinity = math.huge local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti ------------------------------------------------------------------------------------ -- isPositiveInteger -- -- This function returns true if the given value is a positive integer, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a given table key is in the array part or the -- hash part of a table. ------------------------------------------------------------------------------------ function p.isPositiveInteger(v) return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity end ------------------------------------------------------------------------------------ -- isNan -- -- This function returns true if the given number is a NaN value, and false if -- not. Although it doesn't operate on tables, it is included here as it is useful -- for determining whether a value can be a valid table key. Lua will generate an -- error if a NaN is used as a table key. ------------------------------------------------------------------------------------ function p.isNan(v) return type(v) == 'number' and v ~= v end ------------------------------------------------------------------------------------ -- shallowClone -- -- This returns a clone of a table. The value returned is a new table, but all -- subtables and functions are shared. Metamethods are respected, but the returned -- table will have no metatable of its own. ------------------------------------------------------------------------------------ function p.shallowClone(t) checkType('shallowClone', 1, t, 'table') local ret = {} for k, v in pairs(t) do ret[k] = v end return ret end ------------------------------------------------------------------------------------ -- removeDuplicates -- -- This removes duplicate values from an array. Non-positive-integer keys are -- ignored. The earliest value is kept, and all subsequent duplicate values are -- removed, but otherwise the array order is unchanged. ------------------------------------------------------------------------------------ function p.removeDuplicates(arr) checkType('removeDuplicates', 1, arr, 'table') local isNan = p.isNan local ret, exists = {}, {} for _, v in ipairs(arr) do if isNan(v) then -- NaNs can't be table keys, and they are also unique, so we don't need to check existence. ret[#ret + 1] = v else if not exists[v] then ret[#ret + 1] = v exists[v] = true end end end return ret end ------------------------------------------------------------------------------------ -- numKeys -- -- This takes a table and returns an array containing the numbers of any numerical -- keys that have non-nil values, sorted in numerical order. ------------------------------------------------------------------------------------ function p.numKeys(t) checkType('numKeys', 1, t, 'table') local isPositiveInteger = p.isPositiveInteger local nums = {} for k in pairs(t) do if isPositiveInteger(k) then nums[#nums + 1] = k end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- affixNums -- -- This takes a table and returns an array containing the numbers of keys with the -- specified prefix and suffix. For example, for the table -- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return -- {1, 3, 6}. ------------------------------------------------------------------------------------ function p.affixNums(t, prefix, suffix) checkType('affixNums', 1, t, 'table') checkType('affixNums', 2, prefix, 'string', true) checkType('affixNums', 3, suffix, 'string', true) local function cleanPattern(s) -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally. return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1') end prefix = prefix or '' suffix = suffix or '' prefix = cleanPattern(prefix) suffix = cleanPattern(suffix) local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' local nums = {} for k in pairs(t) do if type(k) == 'string' then local num = mw.ustring.match(k, pattern) if num then nums[#nums + 1] = tonumber(num) end end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- numData -- -- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table -- of subtables in the format -- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}. -- Keys that don't end with an integer are stored in a subtable named "other". The -- compress option compresses the table so that it can be iterated over with -- ipairs. ------------------------------------------------------------------------------------ function p.numData(t, compress) checkType('numData', 1, t, 'table') checkType('numData', 2, compress, 'boolean', true) local ret = {} for k, v in pairs(t) do local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$') if num then num = tonumber(num) local subtable = ret[num] or {} if prefix == '' then -- Positional parameters match the blank string; put them at the start of the subtable instead. prefix = 1 end subtable[prefix] = v ret[num] = subtable else local subtable = ret.other or {} subtable[k] = v ret.other = subtable end end if compress then local other = ret.other ret = p.compressSparseArray(ret) ret.other = other end return ret end ------------------------------------------------------------------------------------ -- compressSparseArray -- -- This takes an array with one or more nil values, and removes the nil values -- while preserving the order, so that the array can be safely traversed with -- ipairs. ------------------------------------------------------------------------------------ function p.compressSparseArray(t) checkType('compressSparseArray', 1, t, 'table') local ret = {} local nums = p.numKeys(t) for _, num in ipairs(nums) do ret[#ret + 1] = t[num] end return ret end ------------------------------------------------------------------------------------ -- sparseIpairs -- -- This is an iterator for sparse arrays. It can be used like ipairs, but can -- handle nil values. ------------------------------------------------------------------------------------ function p.sparseIpairs(t) checkType('sparseIpairs', 1, t, 'table') local nums = p.numKeys(t) local i = 0 local lim = #nums return function () i = i + 1 if i <= lim then local key = nums[i] return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- size -- -- This returns the size of a key/value pair table. It will also work on arrays, -- but for arrays it is more efficient to use the # operator. ------------------------------------------------------------------------------------ function p.size(t) checkType('size', 1, t, 'table') local i = 0 for _ in pairs(t) do i = i + 1 end return i end local function defaultKeySort(item1, item2) -- "number" < "string", so numbers will be sorted before strings. local type1, type2 = type(item1), type(item2) if type1 ~= type2 then return type1 < type2 elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then return tostring(item1) < tostring(item2) else return item1 < item2 end end ------------------------------------------------------------------------------------ -- keysToList -- -- Returns an array of the keys in a table, sorted using either a default -- comparison function or a custom keySort function. ------------------------------------------------------------------------------------ function p.keysToList(t, keySort, checked) if not checked then checkType('keysToList', 1, t, 'table') checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'}) end local arr = {} local index = 1 for k in pairs(t) do arr[index] = k index = index + 1 end if keySort ~= false then keySort = type(keySort) == 'function' and keySort or defaultKeySort table.sort(arr, keySort) end return arr end ------------------------------------------------------------------------------------ -- sortedPairs -- -- Iterates through a table, with the keys sorted using the keysToList function. -- If there are only numerical keys, sparseIpairs is probably more efficient. ------------------------------------------------------------------------------------ function p.sortedPairs(t, keySort) checkType('sortedPairs', 1, t, 'table') checkType('sortedPairs', 2, keySort, 'function', true) local arr = p.keysToList(t, keySort, true) local i = 0 return function () i = i + 1 local key = arr[i] if key ~= nil then return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- isArray -- -- Returns true if the given value is a table and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArray(v) if type(v) ~= 'table' then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- isArrayLike -- -- Returns true if the given value is iterable and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArrayLike(v) if not pcall(pairs, v) then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- invert -- -- Transposes the keys and values in an array. For example, {"a", "b", "c"} -> -- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to -- the index of the last duplicate) and NaN values are ignored. ------------------------------------------------------------------------------------ function p.invert(arr) checkType("invert", 1, arr, "table") local isNan = p.isNan local map = {} for i, v in ipairs(arr) do if not isNan(v) then map[v] = i end end return map end ------------------------------------------------------------------------------------ -- listToSet -- -- Creates a set from the array part of the table. Indexing the set by any of the -- values of the array returns true. For example, {"a", "b", "c"} -> -- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them -- never equal to any value (including other NaNs or even themselves). ------------------------------------------------------------------------------------ function p.listToSet(arr) checkType("listToSet", 1, arr, "table") local isNan = p.isNan local set = {} for _, v in ipairs(arr) do if not isNan(v) then set[v] = true end end return set end ------------------------------------------------------------------------------------ -- deepCopy -- -- Recursive deep copy function. Preserves identities of subtables. ------------------------------------------------------------------------------------ local function _deepCopy(orig, includeMetatable, already_seen) -- Stores copies of tables indexed by the original table. already_seen = already_seen or {} local copy = already_seen[orig] if copy ~= nil then return copy end if type(orig) == 'table' then copy = {} for orig_key, orig_value in pairs(orig) do copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen) end already_seen[orig] = copy if includeMetatable then local mt = getmetatable(orig) if mt ~= nil then local mt_copy = _deepCopy(mt, includeMetatable, already_seen) setmetatable(copy, mt_copy) already_seen[mt] = mt_copy end end else -- number, string, boolean, etc copy = orig end return copy end function p.deepCopy(orig, noMetatable, already_seen) checkType("deepCopy", 3, already_seen, "table", true) return _deepCopy(orig, not noMetatable, already_seen) end ------------------------------------------------------------------------------------ -- sparseConcat -- -- Concatenates all values in the table that are indexed by a number, in order. -- sparseConcat{a, nil, c, d} => "acd" -- sparseConcat{nil, b, c, d} => "bcd" ------------------------------------------------------------------------------------ function p.sparseConcat(t, sep, i, j) local arr = {} local arr_i = 0 for _, v in p.sparseIpairs(t) do arr_i = arr_i + 1 arr[arr_i] = v end return table.concat(arr, sep, i, j) end ------------------------------------------------------------------------------------ -- length -- -- Finds the length of an array, or of a quasi-array with keys such as "data1", -- "data2", etc., using an exponential search algorithm. It is similar to the -- operator #, but may return a different value when there are gaps in the array -- portion of the table. Intended to be used on data loaded with mw.loadData. For -- other tables, use #. -- Note: #frame.args in frame object always be set to 0, regardless of the number -- of unnamed template parameters, so use this function for frame.args. ------------------------------------------------------------------------------------ function p.length(t, prefix) -- requiring module inline so that [[Module:Exponential search]] which is -- only needed by this one function doesn't get millions of transclusions local expSearch = require("Module:Exponential search") checkType('length', 1, t, 'table') checkType('length', 2, prefix, 'string', true) return expSearch(function (i) local key if prefix then key = prefix .. tostring(i) else key = i end return t[key] ~= nil end) or 0 end ------------------------------------------------------------------------------------ -- inArray -- -- Returns true if valueToFind is a member of the array, and false otherwise. ------------------------------------------------------------------------------------ function p.inArray(arr, valueToFind) checkType("inArray", 1, arr, "table") -- if valueToFind is nil, error? for _, v in ipairs(arr) do if v == valueToFind then return true end end return false end return p 085e7094ac84eb0132ee65822cf3f69cd8ba3d81 Template:Talk other 10 1012 2220 2022-02-04T21:51:58Z wikipedia>MSGJ 0 remove comment wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{TALKSPACE}} | talk | other }} }} | talk = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} </noinclude> a8a973e372c5984a59953eb0cb4767a03dc6cd3c Template:Mbox/styles.css 10 117 280 2022-02-08T04:13:27Z Agent Isai 9 Imported from [[mw:|MediaWiki.org]] sanitized-css text/css /** @source http://en.wikipedia.org/wiki/MediaWiki:Common.css | 2020-02-03 */ /** [[Module:Message box]] */ /* * WARNING * Some wikis use the styles located here in their local CSS with an import * directive. Do not remove classes from this page until those wikis have * transitioned to TemplateStyles. MediaWiki wiki uses TemplateStyles and does * not load this gadget; see Module:Message box for more details. */ /** NOTE: These do not include .messagebox styles, which are long-deprecated. */ /* For old WikiProject banners inside banner shells. */ .mbox-inside .standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; width: 100%; margin: 2px 0; padding: 2px; } /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ th.mbox-text, td.mbox-text { /* The message body cell(s) */ border: none; /* @noflip */ padding: 0.25em 0.9em; /* 0.9em left/right */ width: 100%; /* Make all mboxes the same width regardless of text length */ } td.mbox-image { /* The left image cell */ border: none; /* @noflip */ padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ text-align: center; } td.mbox-imageright { /* The right image cell */ border: none; /* @noflip */ padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ text-align: center; } td.mbox-empty-cell { /* An empty narrow cell */ border: none; padding: 0; width: 1px; } /* Article message box styles */ table.ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } table.ambox + table.ambox { /* Single border between stacked boxes. */ margin-top: -1px; } .ambox th.mbox-text, .ambox td.mbox-text { /* The message body cell(s) */ padding: 0.25em 0.5em; /* 0.5em left/right */ } .ambox td.mbox-image { /* The left image cell */ /* @noflip */ padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ } .ambox td.mbox-imageright { /* The right image cell */ /* @noflip */ padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ } table.ambox-notice { /* @noflip */ border-left: 10px solid #36c; /* Blue */ } table.ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } table.ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } table.ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } table.ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } table.ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } /* Image message box styles */ table.imbox { margin: 4px 10%; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } .imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */ margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ display: block; /* Fix for webkit to force 100% width. */ } .mbox-inside .imbox { /* For imboxes inside other templates. */ margin: 4px; } table.imbox-notice { border: 3px solid #36c; /* Blue */ } table.imbox-speedy { border: 3px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.imbox-delete { border: 3px solid #b32424; /* Red */ } table.imbox-content { border: 3px solid #f28500; /* Orange */ } table.imbox-style { border: 3px solid #fc3; /* Yellow */ } table.imbox-move { border: 3px solid #9932cc; /* Purple */ } table.imbox-protection { border: 3px solid #a2a9b1; /* Gray-gold */ } table.imbox-license { border: 3px solid #88a; /* Dark gray */ background-color: #f7f8ff; /* Light gray */ } table.imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } /* Category message box styles */ table.cmbox { margin: 3px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; background-color: #dfe8ff; /* Default "notice" blue */ box-sizing: border-box; } table.cmbox-notice { background-color: #d8e8ff; /* Blue */ } table.cmbox-speedy { margin-top: 4px; margin-bottom: 4px; border: 4px solid #b32424; /* Red */ background-color: #ffdbdb; /* Pink */ } table.cmbox-delete { background-color: #ffdbdb; /* Pink */ } table.cmbox-content { background-color: #ffe7ce; /* Orange */ } table.cmbox-style { background-color: #fff9db; /* Yellow */ } table.cmbox-move { background-color: #e4d8ff; /* Purple */ } table.cmbox-protection { background-color: #efefe1; /* Gray-gold */ } /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } /* Talk page message box styles */ table.tmbox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background-color: #f8eaba; min-width: 80%; box-sizing: border-box; } .tmbox.mbox-small { min-width: 0; /* reset the min-width of tmbox above */ } .mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */ margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */ width: 100%; /* For Safari and Opera */ } .mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */ line-height: 1.5em; /* also "nested", so reset styles that are */ font-size: 100%; /* set in "mbox-small" above. */ } table.tmbox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.tmbox-delete { border: 2px solid #b32424; /* Red */ } table.tmbox-content { border: 2px solid #f28500; /* Orange */ } table.tmbox-style { border: 2px solid #fc3; /* Yellow */ } table.tmbox-move { border: 2px solid #9932cc; /* Purple */ } table.tmbox-protection, table.tmbox-notice { border: 1px solid #c0c090; /* Gray-brown */ } /* Disambig and set index box styles */ table.dmbox { clear: both; margin: 0.9em 1em; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; background: transparent; } /* Footer and header message box styles */ table.fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: #f8f9fa; /* Default "system" gray */ box-sizing: border-box; } table.fmbox-system { background-color: #f8f9fa; } table.fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } table.fmbox-editnotice { background-color: transparent; } /* Div based "warning" style fmbox messages. */ div.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon, div.titleblacklist-warning, div.locked-warning { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "html body.mediawiki" is so they override "table.ambox + table.ambox" above. */ html body.mediawiki .mbox-small { /* For the "small=yes" option. */ /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } html body.mediawiki .mbox-small-left { /* For the "small=left" option. */ /* @noflip */ margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } /* Style for compact ambox */ /* Hide the images */ .compact-ambox table .mbox-image, .compact-ambox table .mbox-imageright, .compact-ambox table .mbox-empty-cell { display: none; } /* Remove borders, backgrounds, padding, etc. */ .compact-ambox table.ambox { border: none; border-collapse: collapse; background-color: transparent; margin: 0 0 0 1.6em !important; padding: 0 !important; width: auto; display: block; } body.mediawiki .compact-ambox table.mbox-small-left { font-size: 100%; width: auto; margin: 0; } /* Style the text cell as a list item and remove its padding */ .compact-ambox table .mbox-text { padding: 0 !important; margin: 0 !important; } /* Allow for hiding text in compact form */ .compact-ambox .hide-when-compact { display: none; } 70a64e18a5edf35b8f5debf06fbf0ed6bfa91d31 Template:Mbox 10 115 276 2022-02-08T04:14:19Z Agent Isai 9 Fix wikitext text/x-wiki <templatestyles src="Template:Mbox/styles.css" /> {{#invoke:Message box|mbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 728fa77a17d75dc95885aca4d53afc6ba121c503 Template:Mbox/doc 10 123 294 2022-02-08T04:25:41Z Agent Isai 9 Imported from [[metawikimedia:Template:Mbox/doc|Wikimedia Meta-Wiki]] wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> This is the {{tl|mbox}} or '''multi namespace message box''' meta-template. This meta-template is used to build message box templates that are used on several types of pages and thus need to change style depending on what page they are used on. Based on page type detected it uses one of {{tl|ambox}}, {{tl|tmbox}}, {{tl|imbox}}, {{tl|cmbox}} and {{tl|ombox}}. Note that this template should only be used for message boxes that really need to adapt their style. Most message boxes do not need this and should use one of {{tl|ambox}}, {{tl|tmbox}}, {{tl|imbox}}, {{tl|cmbox}} or {{tl|ombox}} directly. Using those templates directly means that your template will look the same on its template page and at any other place you show it, which makes it clear on what kind of pages it is supposed to be used. It also gives you access to any extra features those templates offer, and it saves some server load. === Usage === This template takes the same parameters as {{tl|ambox}} and {{tl|imbox}} etc. See full documentation there. Some of the boxes this template calls only handles images of max 52px width, thus that limitation also applies to this template or you will get ugly padding problems. === Demospace === This template optionally takes the "demospace" parameter as described at {{tl|namespace detect}}. That parameter is only for testing and demonstration purposes. If you want to lock your message box to one style then instead use one of the other mboxes directly. Namespace "Image:" was renamed to "File:" on 11 December 2008. This template was updated to understand both names well before that, thus it still works fine. For backwards compatibility it still understands "demospace = image" which means the same thing as "demospace = file". But using "demospace = image" is now deprecated. Namespace "Book:" was added to the English Wikipedia on 28 December 2009. This template uses the {{tl|ombox}} style on "Book:" pages or when "demospace=book". And it uses the {{tl|tmbox}} style on "Book talk:" pages or when "demospace=talk". Note that "demospace=talk" means any talk space, there is no "demospace=book talk". === Parameters === List of all parameters: <pre> {{mbox | demospace = {{{demospace|}}} / main / talk / file / category / other | type = speedy / delete / content / style / notice / move / protection | image = none / [[Image:Some image.svg|40px]] | imageright = [[Image:Some image.svg|40px]] | style = CSS values | textstyle = CSS values | text = The message body text. | small = {{{small|}}} / left / yes | smallimage = none / [[Image:Some image.svg|30px]] | smallimageright = none / [[Image:Some image.svg|30px]] | smalltext = A shorter message body text. }} </pre> Note: The small parameters only have effect when the template is on an article, talk page or an "other" page. For documentation on the small parameters see {{tl|ambox}}, {{tl|tmbox}} and {{tl|ombox}}. Using the small parameters when they are not valid has no effect, but also does no harm. ==== Types ==== ; speedy {{mbox|type=speedy}} ; delete {{mbox|type=delete}} ; content {{mbox|type=content}} ; style {{mbox|type=style}} ; notice {{mbox|type=notice}} ; move {{mbox|type=move}} ; protection {{mbox|type=protection}} 278a7c9c87f273913737e59c5dd76ef6fb086ba8 Template:R/superscript 10 1367 2702 2022-02-11T23:53:14Z w>Matthiaspaul 0 Expand language code into language string if recognized code, else display as such wikitext text/x-wiki <!-- Only for internal use: |wrap=n[o]/y[es]/f[orced] |leadin=value |prefix=value |pp=value |where=value |sup-where=value |quote-where=value |quote=value |language=value |translation=value |suffix=value -->{{#if:{{{where|}}}|<sup class="reference {{#switch:{{{wrap|}}}|f|forced=|no}}wrap">{{#if:{{{quote|}}}|{{{prefix|}}}}}<span title="<!--{{#invoke:String|replace|source={{#invoke:String|replace|source={{#invoke:String|replace|source=-->{{#invoke:DecodeEncode|encode|s={{#invoke:Plain text|main|1={{{leadin|}}}: {{#if:{{{quote-where|}}}|{{{quote-where|}}}|{{{where|}}}}}|encode=false}}|charset=<>"}}<!--|"|&quot;}}|<|&lt;}}|>|&gt;}}-->{{#if:{{{quote|}}}|&#10;Quotation<!--{{#invoke:String|replace|source={{#invoke:String|replace|source={{#invoke:String|replace|source=-->{{#invoke:DecodeEncode|encode|s={{#invoke:Plain text|main|1={{#if:{{{language|}}}|&#32;({{#ifeq:{{lang|fn=is_ietf_tag|{{{language|}}}}}|true|{{lang|fn=name_from_tag|{{{language|}}}}}|{{{language|}}}}})}}: &quot;{{trim quotes|s={{{quote|}}}}}&quot;{{#if:{{{translation|}}}|&#10;Translation: &quot;{{trim quotes|s={{{translation}}}}}&quot;}}|encode=false}}|charset=<>"}}<!--|"|&quot;}}|<|&lt;}}|>|&gt;}}-->" class="tooltip tooltip-dashed" style="border-bottom: 1px dashed;}}">{{#if:{{{quote|}}}||{{{prefix|}}}}}<!--DEBUG: Take care of :;*# as first character here. This also breaks plainlinks/stripmarkers/catlinks testcases {{#invoke:String|replace|source=-->{{{pp|}}}{{{sup-where|}}}<!--| |&thinsp;}}-->{{#if:{{{quote|}}}||{{{suffix|}}}}}</span>{{#if:{{{quote|}}}|{{{suffix|}}}}}</sup>}}<noinclude> {{documentation}} </noinclude> 186ae68ce7116a76b6cff6fefc5d1f860e9e4690 Template:R/ref 10 1370 2705 2022-02-12T00:28:55Z w>Matthiaspaul 0 Translate recognized language names into languages codes, unrecognized codes or names will be left as is for now wikitext text/x-wiki <includeonly><!-- ### Debug facility: ### -->{{#if:{{{debug|}}}|DEBUG: 1="{{{1|}}}", 2="{{{2|}}}", (name="{{{name|}}}"), (group="{{{group|}}})", direction="{{{direction|}}}", pages="{{{pages|}}}", page="{{{page|}}}", location="{{{location|}}}", quote-pages="{{{quote-pages|}}}", quote-page="{{{quote-page|}}}", quote-location="{{{quote-location|}}}", quote="{{{quote|}}}", language="{{{language|}}}", translation="{{{translation|}}}", quote-cite="{{{quote-cite|}}}", reference="{{{reference|}}}", annotation="{{{annotation|}}}", leadin="{{{leadin|}}}", postscript="{{{postscript|}}}", section="{{{section|}}}", needed-reason="{{{needed-reason|}}}", needed-date="{{{needed-date|}}}", wrap="{{{wrap|}}}", no-pp="{{{no-pp|}}}", style="{{{style|}}}", content-id="{{{content-id|}}}", link-id="{{{link-id|}}}", debug="{{{debug|}}}". Potential context-section-name:"{{anchorencode:cite_sect-{{trim quotes|s={{{1|}}}}}-{{trim quotes|s={{{2|}}}}}-{{trim quotes|s={{{page|{{#invoke:String2|hyphen2dash|{{{pages|}}}}}}}}}}{{trim quotes|s={{{location|}}}}}}}".}}<!-- ### Opening "support context" span: ### -->{{#if:{{{section|}}}|{{#if:{{#lst:{{FULLPAGENAME}}|{{anchorencode:{{#switch:{{{section|}}}||yes|y=cite_sect-{{trim quotes|s={{{1|}}}}}-{{trim quotes|s={{{2|}}}}}-{{trim quotes|s={{{page|{{#invoke:String2|hyphen2dash|{{{pages|}}}}}}}}}}{{trim quotes|s={{{location|}}}}}|{{{section|}}}}}}}}}|<templatestyles src="Template:Tooltip/styles.css"/><span class="rt-commentedText tooltip tooltip-dotted" title="Context: &quot;<!--{{#invoke:String|replace|source={{#invoke:String|replace|source={{#invoke:String|replace|source=-->{{#invoke:DecodeEncode|encode|s={{#invoke:Plain text|main|1={{#lst:{{FULLPAGENAME}}|{{anchorencode:{{#switch:{{{section|}}}||yes|y=cite_sect-{{trim quotes|s={{{1|}}}}}-{{trim quotes|s={{{2|}}}}}-{{trim quotes|s={{{page|{{#invoke:String2|hyphen2dash|{{{pages|}}}}}}}}}}{{trim quotes|s={{{location|}}}}}|{{{section|}}}}}}}}}|encode=false}}|charset=<>"}}<!--|"|&quot;}}|<|&lt;}}|>|&gt;}}-->&quot;">}}}}<!-- ### First call to create reference link (variants identical except for dir): ### -->{{#if:{{{link-id|}}}|<span id="{{anchorencode:{{{link-id|}}}}}" class="citation<!-- wikicite cite-r -->">}}{{#if:{{{direction|}}}|{{#tag:ref|{{#if:{{{annotation|}}}||{{#if:{{{content-id|}}}|<span<!-- or <cite...> --> id="{{anchorencode:{{{content-id|}}}}}" class="citation<!-- wikicite cite-r -->">}}{{{reference|}}}{{#if:{{{content-id|}}}|</span><!-- or </cite> -->}}{{{postscript|}}}}}|name={{{1|}}}|group={{{2|}}}|dir={{{direction|}}}}}|{{#tag:ref|{{#if:{{{annotation|}}}||{{#if:{{{content-id|}}}|<span<!-- or <cite...> --> id="{{anchorencode:{{{content-id|}}}}}" class="citation<!-- wikicite cite-r -->">}}{{{reference|}}}{{#if:{{{content-id|}}}|</span><!-- or </cite> -->}}{{{postscript|}}}}}|name={{{1|}}}|group={{{2|}}}}}}}{{#if:{{{link-id|}}}|</span>}}<!-- ### Optional second call to append data to reference (variants identical except for dir): ### -->{{#if:{{{annotation|}}}|{{#if:{{{direction|}}}|<!---->{{#tag:ref|{{#switch:{{{annotation|}}}|pages|pp|page|p={{#if:{{{pages|}}}{{{page|}}}{{{location|}}}|&#8204;{{#if:{{{content-id|}}}|<span id="{{anchorencode:{{{content-id|}}}}}">}}{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing=&#32;}}{{#if:{{{content-id|}}}|</span>}}}}|quote|q=&#8204;{{#switch:{{{quote-pages|{{{quote-page|{{{quote-location|}}}}}}}}}|=|pages|pp|page|p={{#if:{{{pages|}}}{{{page|}}}{{{location|}}}|{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing=&#32;}}:&#32;}}|{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{quote-pages|}}}}}|singular={{{quote-page|}}}|location={{{quote-location|}}}|spacing=&#32;}}:&#32;}}<!----><q {{#if:{{{content-id|}}}|id="{{anchorencode:{{{content-id|}}}}}"}} {{#if:{{{quote-cite|{{{link-id|}}}}}}|cite="#{{anchorencode:{{{quote-cite|{{{link-id|}}}}}}}}"}} {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}><bdi {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}>{{trim quotes|s={{{quote|}}}}}</bdi></q>{{#if:{{{translation|}}}|&#32;&#91;<bdi {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}>{{trim quotes|s={{{translation|}}}}}</bdi>&#93;}}|{{#if:{{{content-id|}}}|<span<!-- or <cite...> --> id="{{anchorencode:{{{content-id|}}}}}" class="citation<!-- wikicite cite-r -->">}}{{{leadin|}}}{{{annotation|}}}{{#if:{{{content-id|}}}|</span><!-- or </cite> -->}}}}{{{postscript|}}}|follow={{{1|}}}|group={{{2|}}}|dir={{{direction|}}}}}|<!---->{{#tag:ref|{{#switch:{{{annotation|}}}|pages|pp|page|p={{#if:{{{pages|}}}{{{page|}}}{{{location|}}}|&#8204;{{#if:{{{content-id|}}}|<span id="{{anchorencode:{{{content-id|}}}}}">}}{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing=&#32;}}{{#if:{{{content-id|}}}|</span>}}}}|quote|q=&#8204;{{#switch:{{{quote-pages|{{{quote-page|{{{quote-location|}}}}}}}}}|=|pages|pp|page|p={{#if:{{{pages|}}}{{{page|}}}{{{location|}}}|{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing=&#32;}}:&#32;}}|{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{quote-pages|}}}}}|singular={{{quote-page|}}}|location={{{quote-location|}}}|spacing=&#32;}}:&#32;}}<!----><q {{#if:{{{content-id|}}}|id="{{anchorencode:{{{content-id|}}}}}"}} {{#if:{{{quote-cite|{{{link-id|}}}}}}|cite="#{{anchorencode:{{{quote-cite|{{{link-id|}}}}}}}}"}} {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}><bdi {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}>{{trim quotes|s={{{quote|}}}}}</bdi></q>{{#if:{{{translation|}}}|&#32;&#91;<bdi {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}>{{trim quotes|s={{{translation|}}}}}</bdi>&#93;}}|{{#if:{{{content-id|}}}|<span<!-- or <cite...> --> id="{{anchorencode:{{{content-id|}}}}}" class="citation<!-- wikicite cite-r -->">}}{{{leadin|}}}{{{annotation|}}}{{#if:{{{content-id|}}}|</span><!-- or </cite> -->}}}}{{{postscript|}}}|follow={{{1|}}}|group={{{2|}}}}}}}}}<!-- ### Superscript pages and tooltip for help, pages, quotes: ### -->{{r/superscript |prefix={{#switch:{{{style|}}}|AMA|Ama|ama=(|&#58;&hairsp;}} |suffix={{#switch:{{{style|}}}|AMA|Ama|ama=)|&hairsp;}} |pp={{#switch:{{{style|}}}|AMA|Ama|ama={{#if:{{{no-pp|}}}||{{#if:{{{pages|}}}|pp|{{#if:{{{page|}}}|p}}}}}}}}<!-- p/pp is only used in superscript label, therefore it does not contain any qp params --> |leadin={{#switch:{{{quote-pages|{{{quote-page|{{{quote-location|}}}}}}}}}|pages|pp|page|p={{#if:{{{pages|}}}|Pages|{{#if:{{{page|}}}|Page|{{#if:{{{location|}}}|Location|Page&nbsp;/ location}}}}}}|{{#if:{{{quote-pages|}}}|Pages|{{#if:{{{quote-page|}}}|Page|{{#if:{{{quote-location|}}}|Location|{{#if:{{{pages|}}}|Pages|{{#if:{{{page|}}}|Page|{{#if:{{{location|}}}|Location|Page&nbsp;/ location}}}}}}}}}}}}}}<!-- leadin is only used in tooltip --> |where={{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing=&#32;}}<!-- where must not include qp params --> |sup-where={{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}|&hairsp;}}|singular={{{page|}}}|location={{{location|}}}|spacing=&hairsp;}}<!-- sup-where same as where, but with improved list spacing for superscript --> |quote-where={{#switch:{{{quote-pages|{{{quote-page|{{{quote-location|}}}}}}}}}|pages|pp|page|p={{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing=&#32;}}|{{R/where|plural={{#invoke:String2|hyphen2dash|{{{quote-pages|}}}}}|singular={{{quote-page|}}}|location={{{quote-location|}}}|spacing=&#32;}}}}<!-- quote-where must not contain normal in-source-location params --> |quote={{{quote|}}} |language={{{language|}}} |translation={{{translation|}}} |wrap={{{wrap|}}} }}<!-- ### Closing "support context" span: ### -->{{#if:{{{section|}}}|{{#if:{{#lst:{{FULLPAGENAME}}|{{anchorencode:{{#switch:{{{section|}}}||yes|y=cite_sect-{{trim quotes|s={{{1|}}}}}-{{trim quotes|s={{{2|}}}}}-{{trim quotes|s={{{page|{{#invoke:String2|hyphen2dash|{{{pages|}}}}}}}}}}{{trim quotes|s={{{location|}}}}}|{{{section|}}}}}}}}}|</span>}}}}<!-- ### Page needed functionality: ### -->{{#if:{{{needed-reason|}}}|{{page needed|date={{{needed-date|}}}|reason={{#switch:{{{needed-reason|}}}|yes|y=No reason given|{{{needed-reason|}}}}}}}}}<!-- ### Line wrapping functionality: ### -->{{#switch:{{{wrap|}}}|yes|y|forced|f=&#8203;}}<!-- ### End of code ### --></includeonly><noinclude> {{documentation}} </noinclude> 8c000845bfa3c2aecd10d5cf62184fff077698d8 Template:Short description/lowercasecheck 10 99 245 2022-02-12T16:35:05Z wikipedia>ToBeFree 0 Changed protection settings for "[[Template:Short description/lowercasecheck]]": 4 million transclusions, through [[Template:Short description]] ([[WP:HRT]]) ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki {{#ifeq:<!--test first character for lower-case letter-->{{#invoke:string|find|1={{{1|}}}|2=^%l|plain=false}}|1 |<!-- first character is a lower case letter; test against whitelist -->{{#switch: {{First word|{{{1|}}}}}<!--begin whitelist--> |c. <!--for circa--> |gTLD |iMac |iOS |iOS, |iPad |iPhone |iTunes |macOS |none |pH |pH-dependent=<!-- end whitelist; short description starts with an allowed lower-case string; whitelist matched; do nothing --> |#default=<!-- apply category to track lower-case short descriptions -->{{main other|[[Category:Pages with lower-case short description|{{trim|{{{1|}}}}}]]}}{{Testcases other|{{red|CATEGORY APPLIED}}}}<!-- end whitelist test -->}} |<!-- short description does not start with lower-case letter; do nothing; end lower-case test --> }}<noinclude> {{documentation}} </noinclude> 9a6d4db14b74614625fd234b4f8ee3c8e1a235c0 Template:Ombox/shortcut 10 1324 2659 2022-02-14T04:33:33Z w>Metropolitan90 0 Reverted edits by [[Special:Contribs/WindowsSunshine|WindowsSunshine]] ([[User talk:WindowsSunshine|talk]]) to last version by Metropolitan90 wikitext text/x-wiki #REDIRECT [[Template:Shortcut]] {{Redirect category shell| {{R with history}} }} 9e9eea04b95b36c896dc8822b728f55db2ffbf9b Template:R from move/except 10 1015 2226 2022-02-18T17:38:54Z wikipedia>Wbm1058 0 populate new subcategory [[:Category:Redirects for discussion with talk page redirects]] – without making template loops! wikitext text/x-wiki <noinclude>This is the exception page for {{tl|R from move}}. This page makes exceptions that include certain pages that should not inhabit either {{cat|Unsynchronized talk page redirects}} or {{cat|Redirects from moves}}. If necessary, new exceptions may be added with no need to edit the main template, {{tl|R from move}}. </noinclude>{{#switch: {{FULLPAGENAME}} |MediaWiki:Move-redirect-text= |Template:R from move/except= |#default=[[Category:Redirects from moves]] }}{{#ifeq: {{NAMESPACENUMBER}}|1| {{#ifeq: {{#invoke:redirect|isRedirect|{{FULLPAGENAME}}}}|yes| {{#ifeq: {{#invoke:redirect|isRedirect|{{SUBJECTPAGENAME}}}}|yes| {{#ifeq: {{PAGENAME:{{#invoke:redirect|main|{{TALKPAGENAME}}}}}}|{{PAGENAME:{{#invoke:redirect|main|{{SUBJECTPAGENAME}}}}}}|| {{#ifeq: {{FULLPAGENAME}}|{{SUBJECTPAGENAME}}|| {{#ifeq: {{Str left|{{PAGENAME}}|16}}|List of ships of||[[Category:Unsynchronized talk page redirects]] }} }} }} |{{#ifexist:{{SUBJECTPAGENAME}}| {{#ifeq: {{SUBJECTPAGENAME}}|{{Target of|{{SUBJECTPAGENAME:{{Target of|{{FULLPAGENAME}}}}}}}}|[[Category:Articles with unsynchronized talk page redirects]]| {{#ifexpr: {{#invoke:string|find|{{#invoke:page|getContent|{{SUBJECTPAGENAME}}|as=raw}}|#invoke:RfD}}|[[Category:Redirects for discussion with talk page redirects]]|[[Category:Articles with talk page redirects]]}}}} }} }} |{{error|Page is not a redirect, misplaced [[Template:R from move]]}} }} }}<noinclude> {{Documentation|Template:R from move/doc}} </noinclude> 58acac66a7de5fe499db8890decc66a5ef426bd4 Template:Portal 10 868 1924 2022-02-20T15:46:07Z wikipedia>Plastikspork 0 [[Wikipedia:Templates for discussion/Log/2022 February 12#Template:Portal-mobile]] closed as merge ([[WP:XFDC#4.0.13|XFDcloser]]) wikitext text/x-wiki <includeonly>{{#invoke:Portal|portal}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata --> </noinclude> 7efcc8b88b0b619f32db09d73f4574b044b6bf29 Template:Portal-inline 10 844 1870 2022-02-20T17:10:52Z wikipedia>Plastikspork 0 Reduce [[WP:PEIS]] wikitext text/x-wiki <includeonly>{{#invoke:portal-inline|main}}</includeonly><noinclude> {{documentation}} </noinclude> 2d1d12ec317da6ccc5d28b1be3105d68b53ff0be Module:Check for unknown parameters 828 16 27 2022-02-21T05:24:13Z wikipedia>BusterD 0 Changed protection settings for "[[Module:Check for unknown parameters]]": [[WP:High-risk templates|Highly visible template]]; requested at [[WP:RfPP]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) Scribunto text/plain -- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext. local pos, truncated local function truncate(text) if truncated then return '' end if mw.ustring.len(text) > 25 then truncated = true text = mw.ustring.sub(text, 1, 25) .. '...' end return mw.text.nowiki(text) end local parts = {} for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do pos = remainder table.insert(parts, truncate(before) .. '&lt;' .. tag .. '&gt;...&lt;/' .. tag .. '&gt;') end table.insert(parts, truncate(text:sub(pos or 1))) return table.concat(parts) end function p._check(args, pargs) if type(args) ~= "table" or type(pargs) ~= "table" then -- TODO: error handling return end -- create the list of known args, regular expressions, and the return string local knownargs = {} local regexps = {} for k, v in pairs(args) do if type(k) == 'number' then v = trim(v) knownargs[v] = 1 elseif k:find('^regexp[1-9][0-9]*$') then table.insert(regexps, '^' .. v .. '$') end end -- loop over the parent args, and make sure they are on the list local ignoreblank = isnotempty(args['ignoreblank']) local showblankpos = isnotempty(args['showblankpositional']) local values = {} for k, v in pairs(pargs) do if type(k) == 'string' and knownargs[k] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(k, regexp) then knownflag = true break end end if not knownflag and ( not ignoreblank or isnotempty(v) ) then table.insert(values, clean(k)) end elseif type(k) == 'number' and knownargs[tostring(k)] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(tostring(k), regexp) then knownflag = true break end end if not knownflag and ( showblankpos or isnotempty(v) ) then table.insert(values, k .. ' = ' .. clean(v)) end end end -- add results to the output tables local res = {} if #values > 0 then local unknown_text = args['unknown'] or 'Found _VALUE_, ' if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then local preview_text = args['preview'] if isnotempty(preview_text) then preview_text = require('Module:If preview')._warning({preview_text}) elseif preview == nil then preview_text = unknown_text end unknown_text = preview_text end for _, v in pairs(values) do -- Fix odd bug for | = which gets stripped to the empty string and -- breaks category links if v == '' then v = ' ' end -- avoid error with v = 'example%2' ("invalid capture index") local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v}) table.insert(res, r) end end return table.concat(res) end function p.check(frame) local args = frame.args local pargs = frame:getParent().args return p._check(args, pargs) end return p 93db6d115d4328d2a5148bb42959105e367b663e Template:Use dmy dates 10 856 1894 2022-02-22T16:24:28Z wikipedia>Frietjes 0 fix |=February 2022 bug (see https://en.wikipedia.org/w/index.php?title=Night_of_the_Pencils_(film)&type=revision&diff=1073091061&oldid=1067523640 which transcluded [[Template:February 2022]]) wikitext text/x-wiki {{ <includeonly>safesubst:</includeonly>#invoke:Unsubst||date=__DATE__ |$B= {{DMCA|Use dmy dates|from|{{{date|}}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Use dmy dates template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Use dmy dates]] with unknown parameter "_VALUE_"|ignoreblank=y| cs1-dates | date }}}}<noinclude>{{documentation}}</noinclude> 3a087cd27e88fd70a0765c62d5ab506c3b73c9e7 Template:Wikidata entity link 10 1060 2318 2022-02-22T17:47:17Z wikipedia>Uzume 0 simplify and always uppercase wikitext text/x-wiki <includeonly>{{#if:{{{1|}}} | {{#switch:{{padleft:|1|{{uc:{{{1}}}}}}} | Q | P = [[d:Special:EntityPage/{{uc:{{{1}}}}}|{{#invoke:wd|label|{{uc:{{{1}}}}}}} <small>({{uc:{{{1}}}}})</small>]] | #default = [[d:Special:EntityPage/Q{{uc:{{{1}}}}}|{{#invoke:wd|label|Q{{uc:{{{1}}}}}}} <small>(Q{{uc:{{{1|}}}}})</small>]] }} | {{#if:{{#invoke:wd|label|raw}} | [[d:Special:EntityPage/{{#invoke:wd|label|raw}}|{{#invoke:wd|label}} <small>({{#invoke:wd|label|raw}})</small>]] | <small>(no entity)</small> }} }}</includeonly><noinclude>{{Documentation}}</noinclude> 3eaf99f5fdf869bc08932bb8eda9eba23858c9c8 Template:Wikidata property link 10 1071 2340 2022-02-22T18:23:19Z wikipedia>Uzume 0 simplify and always uppercase wikitext text/x-wiki <includeonly>{{#switch:{{str left|{{uc:{{{id|}}}}}|1}} | N <!--none--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}} | P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}}]] | [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}}]] }} | O <!--only--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}} | P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]] | [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]] }} | F <!--first--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}} | P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|{{uc:{{{1|}}}}}}}|&#58; <small>{{wikidata|label|{{uc:{{{1|}}}}}}}</small>}} | [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|P{{uc:{{{1|}}}}}}}|&#58; <small>{{wikidata|label|P{{uc:{{{1|}}}}}}}</small>}} }} | #default = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}} | P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}} <small>({{uc:{{{1|}}}}})</small>]] | [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}} <small>(P{{uc:{{{1|}}}}})</small>]] }} }}</includeonly><noinclude>{{Documentation}}</noinclude> ad40089191f2bfc6ae162a4c12411f2860ccb493 Template:Replace 10 1053 2304 2022-02-23T02:25:08Z wikipedia>Xaosflux 0 Changed protection settings for "[[Template:Replace]]": 1MM+ uses ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:String|replace|source={{{1}}}|{{{2}}}|{{{3}}}|plain={{{plain|true}}}|count={{{count|}}}}}<noinclude> {{documentation}} </noinclude> 4192ba916713e0f44fdfd0f8e0d9d105c0c85472 Template:)) 10 480 1055 2022-02-23T02:26:26Z Xaosflux 7 Changed protection settings for "[[Template:))]]": 100K+uses ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki }}<noinclude> {{documentation}} </noinclude> 85ca77d4d6ff71d8e6396ebd798f87fa7f45dc02 Module:Effective protection expiry 828 30 55 2022-02-23T10:59:29Z Xaosflux 7 Changed protection settings for "[[Module:Effective protection expiry]]": used in the mediawiki interface / match [[Module:Effective protection level]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) Scribunto text/plain local p = {} -- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title) return stabilitySettings and stabilitySettings.expiry or 'unknown' elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 ) end local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename) if rawExpiry == 'infinity' then return 'infinity' elseif rawExpiry == '' then return 'unknown' else local year, month, day, hour, minute, second = rawExpiry:match( '^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$' ) if year then return string.format( '%s-%s-%sT%s:%s:%s', year, month, day, hour, minute, second ) else error('internal error in Module:Effective protection expiry; malformed expiry timestamp') end end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p 9a8c58dc2667232ed08a9b206a5d89ca8150312b Template:Country data Bulgaria 10 1198 2527 2022-02-25T18:11:30Z w>Paine Ellsworth 0 no longer required - High use template is now in the documentation wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Bulgaria | flag alias = Flag of Bulgaria.svg | flag alias-1878 = Flag of Bulgaria.svg | flag alias-1947 = Flag of Bulgaria (1946–1948).svg | flag alias-1948 = Flag of Bulgaria (1948–1967).svg | flag alias-1967 = Flag of Bulgaria (1967-1971).svg | flag alias-1971 = Flag of Bulgaria (1971–1990).svg | flag alias-naval-1879 = Naval Ensign of Bulgaria (1878-1944).svg | flag alias-naval-1949 = Naval Ensign of Bulgaria (1949-1955).svg | flag alias-naval-1955 = Naval Ensign of Bulgaria (1955-1990).svg | flag alias-naval-1991 = Naval Ensign of Bulgaria 1991-2005.svg | flag alias-naval = Naval Ensign of Bulgaria.svg | link alias-naval = Bulgarian Navy | flag alias-army = War flag of Bulgaria.svg | link alias-army = Bulgarian Land Forces | link alias-air force = Bulgarian Air Force | flag alias-navy = Naval Ensign of Bulgaria.svg | link alias-navy = Bulgarian Navy | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1878 | var2 = 1947 | var3 = 1948 | var4 = 1967 | var5 = 1971 | var6 = naval-1879 | var7 = naval-1949 | var8 = naval-1955 | var9 = naval-1991 | redir1 = BGR | redir2 = BUL | related1 = Kingdom of Bulgaria </noinclude> }} 3c6d30533fdfb1975878aa79f5e7f467985c402e Template:Country data Greece 10 1202 2531 2022-02-25T18:12:31Z w>Paine Ellsworth 0 no longer required - High use template is now in the documentation wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Greece | flag alias = Flag of Greece.svg | flag alias-old = Flag of Greece (1822-1978).svg | flag alias-1970 = Flag of Greece (1970-1975).svg | flag alias-royal = State flag of Greece (1863–1924;1935–73).svg | flag alias-otto = Flag of Greece (1822-1978).svg | flag alias-army = Hellenic Army War Flag.svg | link alias-army = Hellenic Army | border-army= | flag alias-air force=Fin Flash of Greece.svg | link alias-air force=Hellenic Air Force | flag alias-royalnavy = Naval Ensign of Kingdom of Greece.svg | link alias-naval = Hellenic Navy | flag alias-navy = Flag of Greece.svg | link alias-navy = Hellenic Navy | link alias-military = Hellenic Armed Forces | link alias-royalnavy = Royal Hellenic Navy | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = old | var2 = 1970 | var3 = royal | var4 = otto | var5 = royalnavy | redir1 = GRC | redir2 = GRE </noinclude> }} 9362470d876ccba9fb1cf88c0a43720002dfeccf Template:Country data Peru 10 1723 3248 2022-02-25T18:32:42Z wikipedia>Paine Ellsworth 0 no longer required - High use template is now in the documentation wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Peru | flag alias = Flag of Peru.svg | flag alias-spain = Flag of Cross of Burgundy.svg | flag alias-1820 = Flag of Tacna Regiment (1820 proposal).svg | flag alias-1821 = Flag of Peru (1821-1822).svg | flag alias-1822 = Flag of Peru (1822).svg | flag alias-1822a = Flag of Peru (1822-1825).svg | flag alias-1825 = Flag of Peru (1825–1884).svg | flag alias-confederation = Flag of the Peru-Bolivian Confederation.svg | flag alias-north = Flag of Peru (1825–1884).svg | link alias-north = North Peru | flag alias-south = Flag of South Peru.svg | link alias-south = South Peru | flag alias-1884 = Flag of Peru (1884–1950).svg | flag alias-state = Flag of Peru (state).svg | flag alias-football = Flag of Peru (state).svg | flag alias-army = Flag of the Peruvian Army.svg | link alias-army = Peruvian Army | flag alias-naval= Flag of the Peruvian Navy.svg | link alias-naval = Peruvian Navy | flag alias-air force= Flag of the Peruvian Air Force.svg | link alias-air force = Peruvian Air Force | flag alias-military=Flag of Peru (war).svg | link alias-military=Peruvian Armed Forces | flag alias-marines = Flag of the Peruvian Navy.svg | link alias-marines = Peruvian Naval Infantry | flag alias-navy = Flag of Peru (state).svg | link alias-navy = Peruvian Navy | size = {{{size|}}} | name = {{{name|}}} | altvar = {{{altvar|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = spain | var2 = 1820 | var3 = 1821 | var4 = 1822 | var5 = 1822a | var6 = 1825 | var7 = confederation | var8 = north | var9 = south | var10 = 1884 | var11 = state | var12 = football | redir1 = PER </noinclude> }} 49f1c34c9465c56dbcb96877d044cb5aa1b9f728 Template:Country data Italy 10 1192 2521 2022-02-25T19:19:17Z w>Paine Ellsworth 0 no longer required - High use template is now in the documentation wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Italy | flag alias = Flag of Italy.svg | flag alias-1861 = Flag of Italy (1861–1946).svg | flag alias-1943 = War flag of the Italian Social Republic.svg | flag alias-2003 = Flag of Italy (2003–2006).svg | flag alias-civil = Civil Ensign of Italy.svg | flag alias-naval = Naval Ensign of Italy.svg | flag alias-navy-1947 = Naval Ensign of Italy (1947-2013).svg | link alias-naval = Italian Navy | link alias-air force = Italian Air Force | link alias-army = Italian Army | flag alias-navy = Naval Ensign of Italy.svg | link alias-navy = Italian Navy | link alias-roller hockey = Italy {{{mw}}} national roller hockey team | size = {{{size|}}} | name = {{{name|}}} | variant = {{{variant|}}} | altlink = {{{altlink|}}} | altvar = {{{altvar|}}} <noinclude> | var1 = 1861 | var2 = 1943 | var4 = 2003 | var5 = civil | var6 = navy-1947 | redir1 = ITA | related1 = Kingdom of Italy | related2 = Italian Social Republic | related3 = Napoleonic Italy </noinclude> }} 305bf5a66b74b7211326d9326b28d66a836e8721 Template:Country data Australia 10 1465 2800 2022-02-26T07:16:37Z w>Paine Ellsworth 0 no longer required - High use template is now in the documentation wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Australia | flag alias = Flag of Australia (converted).svg | flag alias-1901 = Flag of Australia (1901-1903).svg | flag alias-1903 = Flag of Australia (1903-1908).svg | flag alias-union = Flag of the United Kingdom.svg | flag alias-colonial = Australian Colonial Flag.svg | flag alias-civil = Civil Ensign of Australia.svg | flag alias-naval = Naval Ensign of Australia.svg | flag alias-naval-1913 = Naval Ensign of the United Kingdom.svg | link alias-naval = Royal Australian Navy | link alias-army = Australian Army | flag alias-air force = Air Force Ensign of Australia.svg | link alias-air force = Royal Australian Air Force | flag alias-air force-1948 = Air Force Ensign of Australia (1948–1982).svg | flag alias-air force-1922 = Air Force Ensign of the United Kingdom.svg | link alias-football = Australia {{{mw|men's}}} national {{{age|}}} soccer {{{class|}}} team | flag alias-marines=INF1002 - UCP - 2RAR.png | link alias-marines=2nd Battalion, Royal Australian Regiment | flag alias-navy = Naval Ensign of Australia.svg | link alias-navy = Royal Australian Navy | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | altvar = {{{altvar|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1901 | var2 = 1903 | var3 = colonial | var4 = civil | var5 = naval-1913 | redir1 = AUS | related1 = Australasia </noinclude> }} 11ef56986a6e70fb8ca4e0b3c9da8416651191d5 Template:Country data Netherlands 10 1188 2517 2022-02-26T20:00:49Z w>Paine Ellsworth 0 no longer required - High use template is now in the documentation wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Netherlands | flag alias = Flag of the Netherlands.svg | flag alias-prinsengeus = Naval Jack of the Netherlands.svg | flag alias-army =Flag of the Royal Netherlands Army.svg | flag alias-air force=Flag of the Royal Netherlands Air Force.svg | link alias-air force= Royal Netherlands Air Force | link alias-army= Royal Netherlands Army | link alias-naval = Royal Netherlands Navy | flag alias-navy = Naval Jack of the Netherlands.svg | link alias-navy=Royal Netherlands Navy | flag alias-marines = Naval Jack of the Netherlands.svg | link alias-marines = Netherlands Marine Corps | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = prinsengeus | redir1 = NLD | redir2 = NED | redir3 = The Netherlands | related1 = Kingdom of the Netherlands | related2 = Dutch Republic | related3 = Batavian Republic </noinclude> }} 1c723f169b6e9824c190beea044f0bdf8852db76 Template:Country data Latvia 10 1212 2541 2022-02-26T20:51:20Z w>Paine Ellsworth 0 no longer required - High use template is now in the documentation wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Latvia | flag alias = Flag of Latvia.svg | flag alias-naval = Naval Ensign of Latvia.svg | link alias-naval = Latvian Naval Forces | link alias-army = Latvian Land Forces | flag alias-navy = Naval Ensign of Latvia.svg | link alias-navy = Latvian Naval Forces | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | redir1 = LVA | redir2 = LAT | related1 = Latvian SSR </noinclude> }} b73038430b70fdf779abd8896f6b69e2cb3a2eb7 Template:Country data Estonia 10 1215 2544 2022-02-26T22:50:13Z w>Paine Ellsworth 0 no longer required - High use template is now in the documentation wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Estonia | flag alias = Flag of Estonia.svg | flag alias-naval = Naval Jack of Estonia.svg | link alias-naval = Estonian Navy | flag alias-army=Flag of Estonian Land Forces.svg | link alias-army=Estonian Land Forces | flag alias-air force =Flag of the Estonia Air Force.png | link alias-air force = Estonian Air Force | flag alias-navy = Naval Ensign of Estonia.svg | link alias-navy = Estonian Navy | border-naval = | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | redir1 = EST | related1 = Estonian SSR </noinclude> }} 9d47f0787ce2f607d4f6b61cd4956aa9ac9fd47f Module:Find sources 828 1029 2256 2022-02-27T13:33:28Z wikipedia>Primefac 0 Changed protection settings for "[[Module:Find sources]]": re-raise, 1.5million transclusions and no edits from the EXCON editor ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain -- This module implements {{find sources}} and other similar templates, and -- also provides a mechanism to easily create new source-finding templates. -- Define constants local ROOT_PAGE = 'Module:Find sources' local TEMPLATE_ROOT = ROOT_PAGE .. '/templates/' -- for template config modules local LINK_CONFIG = ROOT_PAGE .. '/links' -- for link config modules local CONFIG_PAGE = ROOT_PAGE .. '/config' -- for global config -- Load required modules local checkType = require('libraryUtil').checkType local cfg = mw.loadData(CONFIG_PAGE) local p = {} local function maybeLoadData(page) local success, data = pcall(mw.loadData, page) return success and data end local function substituteParams(msg, ...) return mw.message.newRawMessage(msg, ...):plain() end local function renderSearchString(searchTerms, separator, transformFunc) -- This takes a table of search terms and turns it into a search string -- that can be used in a URL or in a display value. The transformFunc -- parameter can be used to transform each search term in some way (for -- example, URL-encoding them). local searchStrings = {} for i, s in ipairs(searchTerms) do searchStrings[i] = s end if transformFunc then for i, s in ipairs(searchStrings) do searchStrings[i] = transformFunc(s) end end return table.concat(searchStrings, separator) end function p._renderLink(code, searchTerms, display, tooltip) -- Renders the external link wikicode for one link, given the link code, -- a table of search terms, and an optional display value and tooltip. -- Get link config. local links = maybeLoadData(LINK_CONFIG) local linkCfg = links[code] if not linkCfg then error(string.format( "invalid link code '%s'; no link config found at [[%s]]", code, LINK_CONFIG )) end -- Make URL. local url do local separator = linkCfg.separator or "+" local searchString = renderSearchString( searchTerms, separator, mw.uri.encode ) url = substituteParams(linkCfg.url, searchString) end if tooltip then return string.format('<span title="%s" style="border-bottom: 1px dotted;">[%s %s]</span>', mw.text.encode(tooltip), url, display or linkCfg.display) else return string.format('[%s %s]', url, display or linkCfg.display) end end function p._main(template, args) -- The main access point from Lua. checkType('_main', 1, template, 'string') checkType('_main', 2, args, 'table', true) args = args or {} local title = mw.title.getCurrentTitle() -- Get the template config. local templateCfgPage = TEMPLATE_ROOT .. template local templateCfg = maybeLoadData(templateCfgPage) if not templateCfg then error(string.format( "invalid template name '%s'; no template config found at [[%s]]", template, templateCfgPage )) end -- Namespace check. if not templateCfg.isUsedInMainspace and title.namespace == 0 then local formatString = '<strong class="error">%s</strong>' if cfg['namespace-error-category'] then formatString = formatString .. '[[%s:%s]]' end return string.format( formatString, cfg['namespace-error'], mw.site.namespaces[14].name, cfg['namespace-error-category'] ) end -- Get the search terms from the arguments. local searchTerms = {} for i, s in ipairs(args) do searchTerms[i] = s end if not searchTerms[1] then -- Use the current subpage name as the default search term, unless -- another title is provided. If the page uses a disambiguator like -- "Foo (bar)", make "Foo" the first term and "bar" the second. local searchTitle = args.title or title.subpageText local term, dab = searchTitle:match('^(.*) (%b())$') if dab then dab = dab:sub(2, -2) -- Remove parens end if term and dab then searchTerms[1] = term searchTerms[2] = dab else searchTerms[1] = searchTitle end end searchTerms[1] = '"' .. searchTerms[1] .. '"' -- Make the intro link local introLink if templateCfg.introLink then local code = templateCfg.introLink.code local display = templateCfg.introLink.display or renderSearchString( searchTerms, '&nbsp;' ) local tooltip = templateCfg.introLink.tooltip introLink = p._renderLink(code, searchTerms, display, tooltip) else introLink = '' end -- Make the other links local links = {} local separator = templateCfg.separator or cfg['default-separator'] local sep = '' for i, t in ipairs(templateCfg.links) do links[i] = sep .. p._renderLink(t.code, searchTerms, t.display, t.tooltip) .. (t.afterDisplay or '') sep = t.separator or separator end links = table.concat(links) -- Make the blurb. local blurb = substituteParams(templateCfg.blurb, introLink, links) local span = mw.html.create('span') span :addClass('plainlinks') :addClass(templateCfg.class) :cssText(templateCfg.style) :wikitext(blurb) return tostring(span) end setmetatable(p, { __index = function(t, template) -- The main access point from #invoke. -- Invocations will look like {{#invoke:Find sources|template name}}, -- where "template name" is a subpage of [[Module:Find sources/templates]]. local tname = template if tname:sub(-8) == '/sandbox' then -- This makes {{Find sources/sandbox|Albert Einstein}} work. tname = tname:sub(1, -9) end return function(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = mw.site.namespaces[10].name .. ':' .. tname }) return t._main(template, args) end end}) return p 10c2d5c5a05295b49581eecba936dae039a4a290 Module:Find sources/templates/Find sources mainspace 828 1031 2260 2022-03-01T07:33:51Z wikipedia>Primefac 0 Changed protection settings for "[[Module:Find sources/templates/Find sources mainspace]]": match main module ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain return { blurb = "''Find sources:''&nbsp;$1&nbsp;–&nbsp;$2", introLink = { code = 'google' }, links = { { code = 'google news', display = 'news' }, { code = 'google newspapers', display = 'newspapers' }, { code = 'google books', display = 'books' }, { code = 'google scholar', display = 'scholar' }, { code = 'jstor', display = 'JSTOR' } }, isUsedInMainspace = true } abfeb1a778b232887c9400ca7667092141e60257 Template:Ns has subpages 10 860 1904 2022-03-02T10:43:18Z wikipedia>Trialpears 0 Changed protection settings for "[[Template:Ns has subpages]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:Ns has subpages|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 060d2d01af26cb67fd90a7c346a0d2d5e450a040 Führerredux Wiki:WikiProject Geographical coordinates/type: 4 1671 3097 2022-03-03T11:32:00Z wikipedia>ZandDev 0 add <code> wikitext text/x-wiki The <code>type:</code> parameter specifies the type of location for reverse mapping (for instance, to select a marker icon in the [[Wikipedia:WikiMiniAtlas|WikiMiniAtlas]]). It also sets the [[Scale (map)|map scale]], which can however be overridden by ''[[#dim:D|dim:]]'' or ''[[#scale:N|scale:]]''. Valid types are: {| align="center" class="wikitable" ! T ! Description ! Map scale |- | '''adm1st''' | Administrative unit of country, 1st level (province, state), see [[List of administrative divisions by country|table]], e.g. [[U.S. state]]s |align="right" | 1:1,000,000 |- | '''adm2nd''' | Administrative unit of country, 2nd level, see [[List of administrative divisions by country|table]], e.g. [[county (United States)]] |align="right" | 1:300,000 |- | '''adm3rd''' | Administrative unit of country, 3rd level, see [[List of administrative divisions by country|table]] |align="right" | 1:100,000 |- | '''airport''' | airports and airbases |align="right" | 1:30,000 |- | '''city('''''pop''''')''' | cities, towns, villages, hamlets, suburbs, subdivisions, neighborhoods, and other human settlements (including unincorporated and/or abandoned ones) with known population<br/>Please replace ''pop'' with a number. Commas in ''pop'' will be ignored. There should be no blanks. |align="right" | 1:30,000 ... 1:300,000 |- | '''city''' | cities, towns, villages, hamlets, suburbs, subdivisions, neighborhoods, and other human settlements (including unincorporated and/or abandoned ones) with unspecified population</br>These are treated as minor cities. |align="right" | 1:100,000 |- | '''country''' | (e.g. "type:country") |align="right" | 1:10,000,000 |- | '''edu''' | schools, colleges, and universities |align="right" | 1:10,000 |- | '''event''' | one-time or regular events and incidents that occurred at a specific location, including battles, earthquakes, festivals, and shipwrecks |align="right" | 1:50,000 |- | '''forest''' | forests and woodlands |align="right" | 1:50,000 |- | '''glacier''' | glaciers and icecaps |align="right" | 1:50,000 |- | '''isle''' | islands and isles |align="right" | 1:100,000 |- | '''landmark''' | buildings (including churches, factories, museums, theatres, and power plants but excluding schools and railway stations), caves, cemeteries, cultural landmarks, geologic faults, headlands, intersections, mines, ranches, roads, structures (including antennas, bridges, castles, dams, lighthouses, monuments, and stadiums), tourist attractions, valleys, and other points of interest |align="right" | 1:10,000 |- | '''mountain''' | peaks, mountain ranges, hills, submerged reefs, and seamounts |align="right" | 1:100,000 |- | '''pass''' | mountain passes |align="right" | 1:10,000 |- | '''railwaystation''' | stations, stops, and maintenance areas of railways and trains, including railroad, metro, rapid transit, underground, subway, elevated railway, etc. |align="right" | 1:10,000 |- | '''river''' | rivers, canals, creeks, brooks, and streams, including intermittent ones |align="right" | 1:100,000 |- | '''satellite''' | geo-stationary satellites |align="right" | 1:10,000,000 |- | '''waterbody''' | bays, fjords, lakes, reservoirs, ponds, lochs, loughs, meres, lagoons, estuaries, inland seas, and waterfalls |align="right" | 1:100,000 |- | '''camera''' | To indicate the location of where a specific image was taken. This type is used by coordinate templates on File pages. |align="right" | 1:10,000 |- | | ''Default scale: if no type is used or the type is not defined in the GeoHack extension'' |align="right" | 1:300,000 |} {| class="wikitable" |+ Samples ! T ! Markup ! Result |- | '''waterbody''' | <code><nowiki>{{coord|46|43|N|7|58|E|type:waterbody}}</nowiki></code> | {{coord|46|43|N|7|58|E|type:waterbody}} |} [[Category:WikiProject Geographical coordinates]] 7016fdfb370cc695e3f6ab439d3a71a4351a5cb8 Führerredux Wiki:WikiProject Geographical coordinates/scale: 4 1669 3093 2022-03-03T11:36:59Z wikipedia>ZandDev 0 add <code> wikitext text/x-wiki The <code>scale:</code> parameter specifies the desired [[scale (map)|map scale]] as 1:''N'', overriding the scale implied by any <code>[[#type:T|type:]]</code> parameter. [[tswiki:GeoHack|GeoHack]] uses <code>scale:</code> to select a map scale for a 72 [[Dots per inch|dpi]] computer monitor. If no <code>dim:</code>, <code>type:</code>, or <code>scale:</code> parameters are provided, GeoHack uses its default scale of 1:300,000. {| class="wikitable" |+ Samples ! Subject ! Scale ! Markup ! Result |- |[[Big Ben]] |align=right|1:500 |<code><nowiki>{{coord|51.500611|N|0.124611|W|scale:500}}</nowiki></code> |{{coord|51.500611|N|0.124611|W|scale:500}} |- |[[Palace of Westminster]] |align=right|1:5,000 |<code><nowiki>{{coord|51.5006|N|0.1246|W|scale:5000}}</nowiki></code> |{{coord|51.5006|N|0.1246|W|scale:5000}} |- |[[City of Westminster]] |align=right|1:50,000 |<code><nowiki>{{coord|51.501|N|0.125|W|scale:50000}}</nowiki></code> |{{coord|51.501|N|0.125|W|scale:50000}} |- |[[Greater London]] |align=right|1:500,000 |<code><nowiki>{{coord|51.50|N|0.12|W|scale:500000}}</nowiki></code> |{{coord|51.50|N|0.12|W|scale:500000}} |} [[Category:WikiProject Geographical coordinates]] a577d814da250e0ddf28a80dccfa978d6bda0027 Führerredux Wiki:WikiProject Geographical coordinates/region: 4 1668 3091 2022-03-03T11:39:59Z wikipedia>ZandDev 0 add <code> wikitext text/x-wiki The <code>region:</code> parameter specifies the political region for terrestrial coordinates. It is used to select appropriate map resources. If no <code>region:</code> parameter is provided, [[tswiki:GeoHack|GeoHack]] attempts to determine the region from the coordinates. The region should be supplied as either a two character [[ISO 3166-1 alpha-2]] country code or an [[ISO 3166-2]] region code. Examples of [[ISO 3166-1 alpha-2]] codes: {{columns-list| * '''AQ''' Antarctica * '''AU''' Australia * '''BR''' Brazil * '''DE''' Germany * '''GB''' United Kingdom * '''HK''' Hong Kong * '''IN''' India * '''LK''' Sri Lanka * '''RU''' Russia * '''US''' United States}} Examples of [[ISO 3166-2]] region codes: {{columns-list| * '''DE-TH''' Thuringia, Germany * '''GB-BIR''' Birmingham, England * '''NO-03''' Oslo, Norway * '''US-NY''' New York state, US}} The oceans have the following Wiki assigned code elements per [[:de:Vorlage:Coordinate#Ozeane]]. * '''XN''' Arctic Ocean * '''XA''' Atlantic Ocean * '''XI''' Indian Ocean * '''XP''' Pacific Ocean * '''XS''' Southern Ocean In addition, two Wiki assigned code elements can be used with {{tl|coord}}: * '''XZ''' for objects in or above international waters (similar to [[UN/LOCODE]]). * '''ZZ''' for use in examples. {| class="wikitable" cellpadding="20" |+ Samples ! Focus region ! Region ! Markup ! Result |- | Switzerland | <code>CH</code> | <code><nowiki>{{coord|46.9524|N|7.4396|E|region:CH}}</nowiki></code> | {{coord|46.9524|N|7.4396|E|region:CH}} |- | Berlin, Germany | <code>DE-BE</code> | <code><nowiki>{{coord|52.5164|N|13.3775|E|region:DE-BE}}</nowiki></code> | {{coord|52.5164|N|13.3775|E|region:DE-BE}} |} [[Category:WikiProject Geographical coordinates]] af478499a611b769b017fad30805b13e8221cc30 Template:Convinfobox/secter3 10 1561 2896 2022-03-04T18:00:00Z w>MusikBot II 0 Protected "[[Template:Convinfobox/secter3]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 250 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#switch:{{{4}}}{{{6}}} |ftin={{convert|{{{3}}}|ft|{{{5}}}|in|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |stlb={{convert|{{{3}}}|st|{{{5}}}|lb|{{#ifeq:{{{2}}}|kg|kg lb|{{{2}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |lboz={{convert|{{{3}}}|lb|{{{5}}}|oz|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |{{#switch:{{{2}}}{{{4}}}<!-- the rest ignores {{{5}}} -- for now ---> |ftin={{convert|{{{3}}}|in|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |stlb={{convert|{{{3}}}|lb|{{#ifeq:{{{6}}}{{#ifexpr:{{{3}}}<14|n}}|kg|kg stlb|{{{6}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |lboz={{convert|{{{3}}}|oz|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} |{{convert|{{{3}}}|{{{4}}}|{{{2}}} {{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}} }} }}</includeonly><noinclude> [[Category:Subtemplates of Template Convinfobox]] </noinclude> 8cbda9bd8ed84b81ba20ec1a24deca7b98dabf65 Template:Red 10 216 488 2022-03-06T17:29:13Z DarkMatterMan4500 26 wikitext text/x-wiki <span style="color:red;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> 776e0c4686c43abb83f7da74dfa1def9f58bea72 Module:SDcat/doc 828 766 1707 2022-03-06T21:26:28Z wikipedia>Tomastvivlaren 0 wikitext text/x-wiki <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{High risk}} Module to check whether local short description matches that on Wikidata setCat has the qid of a Wikidata entity passed as |qid= (it defaults to the associated qid of the current article if omitted) and the local short description passed as |sd= It returns a category if there is an associated Wikidata entity. It returns one of the following tracking categories, as appropriate: * Category:Short description matches Wikidata (case-insensitive) * Category:Short description is different from Wikidata * Category:Short description with empty Wikidata description For testing purposes, a link prefix |lp= may be set to ":" to make the categories visible. == Usage == ; From within a template : <code><nowiki>{{SDcat |sd={{{shortdescription|}}} }}</nowiki></code> : or : <code><nowiki>{{#invoke:SDcat |setCat |sd={{{shortdescription|}}} }}</nowiki></code> [[Template:SDcat]] is a wrapper for this module. ; From another module : <code>sdcat = require("Module:SDcat")._setCat</code> : <code>local tracking_cat = sdcat(shortdesc, itemID)</code> === For testing === <code><nowiki>{{#invoke:SDcat |setCat |qid={{get QID|Douglas Adams}}|sd=English author and humorist (1952–2001) |lp=":"}}</nowiki></code> A few examples of tests are at [[Module talk:SDcat]] <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> }}</includeonly> 21f47b1966831d0fef3720fba993cebeffaddb00 Template:Infobox Greece place 10 1148 2474 2022-03-07T07:54:55Z w>Markussep 0 wikitext text/x-wiki <includeonly>{{Infobox settlement | name = {{{name|}}} | native_name = {{{name_local|}}} | native_name_lang = el | image_skyline = {{{image_skyline|}}} | imagesize = {{#if:{{{imagesize|}}}|{{{imagesize}}}|270x220px}} | image_caption = {{{caption_skyline|}}} | image_flag = {{{city_flag|}}} | flag_size = 100x100px | image_seal = {{{city_seal|}}} | seal_size = 100x100px | pushpin_map = {{#if: {{{coordinates|}}} | Greece }} | pushpin_mapsize = 270px | pushpin_map_caption = {{#if: {{{image_map|}}} | {{hidden begin| style = margin-top:2px |titlestyle=font-size:115%; height:auto; padding-right:2em; |border=line |title={{{map_caption|Location within the region}}} }} {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size=250x250px|title=center}} {{hidden end}} }} | coordinates = {{{coordinates|}}} | subdivision_type = Country | subdivision_name = Greece | subdivision_type1 = [[Geographic regions of Greece|Geographic region]] | subdivision_name1 = {{{georegion|}}} | subdivision_type2 = [[Administrative regions of Greece|Administrative region]] | subdivision_name2 = {{{periph|}}} | subdivision_type3 = [[Regional units of Greece|Regional unit]] | subdivision_name3 = {{{periphunit|}}} | subdivision_type4 = [[Administrative divisions of Greece|Municipality]] | subdivision_name4 = {{{municipality|}}} | subdivision_type5 = [[Administrative divisions of Greece|Municipal unit]] | subdivision_name5 = {{{municunit|}}} | subdivision_type6 = [[Administrative divisions of Greece|Community]] | subdivision_name6 = {{{community|}}} | established_title = City established | established_date = {{{established_c|}}} | established_title1 = Municipality established | established_date1 = {{{established_m|}}} | established_title2 = Village established | established_date2 = {{{established_v|}}} | parts_type = {{#if: {{{districts|}}} | Districts }} | parts = {{{districts|}}} | leader_party = {{#if: {{{mayor|}}} | {{{party|}}}{{#if:{{{since|}}} | {{#if:{{{party|}}} |&#59;}} since {{{since}}} }} }} | leader_title = Mayor | leader_name = {{{mayor|}}} | seat = {{{seat|}}} | area_total_km2 = {{{area|}}} | area_urban_km2 = {{{area_urban|}}} | area_rural_km2 = {{{area_village|}}} | area_metro_km2 = {{{area_metro|}}} | area_blank1_title = {{#if: {{{area_municipality|}}} | Municipality }} | area_blank1_km2 = {{{area_municipality|}}} | area_blank2_title = {{#if: {{{area_municunit|}}} | Municipal unit }} | area_blank2_km2 = {{{area_municunit|}}} | elevation_m = {{{elevation|}}} | elevation_max_m = {{{elevation_max|}}} | elevation_min_m = {{{elevation_min|}}} | population_footnotes = {{#ifeq: {{{population_as_of}}} | 2001 |<ref name=census01>{{cite book |title=De Facto Population of Greece Population and Housing Census of March 18th, 2001 |publisher=National Statistical Service of Greece |date=2003 |url=http://dlib.statistics.gr/Book/GRESYE_02_0101_00095.pdf |format=PDF 39&nbsp;MB}}</ref> | {{#ifeq: {{{population_as_of}}} | 2011 |<ref name=census11>{{cite web | url = http://www.statistics.gr/documents/20181/1210503/resident_population_census2011rev.xls | title = Απογραφή Πληθυσμού - Κατοικιών 2011. ΜΟΝΙΜΟΣ Πληθυσμός | publisher = Hellenic Statistical Authority | language = el }}</ref>}} }} | population_total = {{{population|}}} | population_as_of = {{{population_as_of|}}} | population_density_km2 = auto | population_urban = {{{population_urban|}}} | population_density_urban_km2 = auto | population_rural = {{{population_village|}}} | population_density_rural_km2 = auto | population_metro = {{{population_metro|}}} | population_density_metro_km2 = auto | population_blank1_title = Municipality | population_blank1 = {{{pop_municipality|}}} | population_density_blank1_km2 = auto | population_blank2_title = Municipal unit | population_blank2 = {{{pop_municunit|}}} | population_density_blank2_km2 = auto | population_demonym = {{{demonym|}}} | demographics_type1 = {{#if: {{{pop_community|{{{area_community|}}}}}} | Community}} | demographics1_title1 = Population | demographics1_info1 = {{formatnum:{{{pop_community|}}}}} {{#if: {{{pop_community|}}} | ({{{population_as_of}}})}} | demographics1_title2 = Area (km<sup>2</sup>) | demographics1_info2 = {{{area_community|}}} | demographics1_footnotes = {{#ifeq: {{{population_as_of}}} | 2001 |<ref name=census01>{{cite book |title=De Facto Population of Greece Population and Housing Census of March 18th, 2001 |publisher=National Statistical Service of Greece |date=2003 |url=http://dlib.statistics.gr/Book/GRESYE_02_0101_00095.pdf |format=PDF 39&nbsp;MB}}</ref> | {{#ifeq: {{{population_as_of}}} | 2011 |<ref name=census11>{{cite web | url = http://www.statistics.gr/documents/20181/1210503/resident_population_census2011rev.xls | title = Απογραφή Πληθυσμού - Κατοικιών 2011. ΜΟΝΙΜΟΣ Πληθυσμός | publisher = Hellenic Statistical Authority | language = el }}</ref>}} }} | timezone1 = [[Eastern European Time|EET]] | utc_offset1 = +2 | timezone1_DST = [[Eastern European Summer Time|EEST]] | utc_offset1_DST = +3 | postal_code_type = [[Postal codes in Greece|Postal code]] | postal_code = {{{postal_code|}}} | area_code_type = [[Telephone numbers in Greece|Area code(s)]] | area_code = {{{area_code|}}} | registration_plate_type = [[Vehicle registration plates of Greece|Vehicle registration]] | registration_plate = {{{licence|}}} | website = {{{website|}}} | footnotes = {{{footnotes|}}} }}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox Greece place with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Greece place]] with unknown parameter "_VALUE_"|ignoreblank=y| area | area_code | area_community | area_metro | area_municipality | area_municunit | area_urban | area_village | caption_skyline | city_flag | city_seal | community | coordinates | demonym | districts | elevation | elevation_max | elevation_min | established_c | established_m | established_v | footnotes | georegion | image_map | image_skyline | imagesize | licence | map_caption | mayor | municipality | municunit | name | name_local | party | periph | periphunit | pop_community | pop_municipality | pop_municunit | population | population_as_of | population_metro | population_urban | population_village | postal_code | seat | since | website }}<noinclude> {{documentation}} </noinclude> d22a94f72bf64ff5c8706a7f19da5bfc6ba8731a Template:Title disambig text 10 161 375 2022-03-08T02:00:55Z wikipedia>Neveselbert 0 safesubst wikitext text/x-wiki {{safesubst<noinclude/>:#invoke:String|match|{{{1|{{PAGENAME}}}}}|%s%((.-%)?)%)||-1|ignore_errors=true}}<noinclude> {{Documentation}} </noinclude> 09be4d07c948b00ed15066030e4a7029dd966c0a Module:Template link general 828 24 43 2022-03-08T08:30:51Z wikipedia>Primefac 0 update from sandbox - fixes to _show_result and adding _expand Scribunto text/plain -- This implements Template:Tlg local getArgs = require('Module:Arguments').getArgs local p = {} -- Is a string non-empty? local function _ne(s) return s ~= nil and s ~= "" end local nw = mw.text.nowiki local function addTemplate(s) local i, _ = s:find(':', 1, true) if i == nil then return 'Template:' .. s end local ns = s:sub(1, i - 1) if ns == '' or mw.site.namespaces[ns] then return s else return 'Template:' .. s end end local function trimTemplate(s) local needle = 'template:' if s:sub(1, needle:len()):lower() == needle then return s:sub(needle:len() + 1) else return s end end local function linkTitle(args) if _ne(args.nolink) then return args['1'] end local titleObj local titlePart = '[[' if args['1'] then -- This handles :Page and other NS titleObj = mw.title.new(args['1'], 'Template') else titleObj = mw.title.getCurrentTitle() end titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or addTemplate(args['1'])) local textPart = args.alttext if not _ne(textPart) then if titleObj ~= nil then textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText else -- redlink textPart = args['1'] end end if _ne(args.subst) then -- HACK: the ns thing above is probably broken textPart = 'subst:' .. textPart end if _ne(args.brace) then textPart = nw('{{') .. textPart .. nw('}}') elseif _ne(args.braceinside) then textPart = nw('{') .. textPart .. nw('}') end titlePart = titlePart .. '|' .. textPart .. ']]' if _ne(args.braceinside) then titlePart = nw('{') .. titlePart .. nw('}') end return titlePart end function p.main(frame) local args = getArgs(frame, { trim = true, removeBlanks = false }) return p._main(args) end function p._main(args) local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname) local italic = _ne(args.italic) or _ne(args.italics) local dontBrace = _ne(args.brace) or _ne(args.braceinside) local code = _ne(args.code) or _ne(args.tt) local show_result = _ne(args._show_result) local expand = _ne(args._expand) -- Build the link part local titlePart = linkTitle(args) if bold then titlePart = "'''" .. titlePart .. "'''" end if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end -- Build the arguments local textPart = "" local textPartBuffer = "&#124;" local codeArguments = {} local codeArgumentsString = "" local i = 2 local j = 1 while args[i] do local val = args[i] if val ~= "" then if _ne(args.nowiki) then -- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will -- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up val = nw(mw.text.unstripNoWiki(val)) end local k, v = string.match(val, "(.*)=(.*)") if not k then codeArguments[j] = val j = j + 1 else codeArguments[k] = v end codeArgumentsString = codeArgumentsString .. textPartBuffer .. val if italic then val = '<span style="font-style:italic;">' .. val .. '</span>' end textPart = textPart .. textPartBuffer .. val end i = i + 1 end -- final wrap local ret = titlePart .. textPart if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end if _ne(args.a) then ret = nw('*') .. '&nbsp;' .. ret end if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end if code then ret = '<code>' .. ret .. '</code>' elseif _ne(args.plaincode) then ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>' end if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end --[[ Wrap as html?? local span = mw.html.create('span') span:wikitext(ret) --]] if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end if show_result then local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments} ret = ret .. " → " .. result end if expand then local query = mw.text.encode('{{' .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, "|") .. '}}') local url = mw.uri.fullUrl('special:ExpandTemplates', 'wpInput=' .. query) mw.log() ret = ret .. " [" .. tostring(url) .. "]" end return ret end return p c7307fa3959d308a2dd7fd2f5009c1ce6db3d122 Template:In string 10 1235 2569 2022-03-11T21:09:13Z w>Neveselbert 0 Reverted [[WP:AGF|good faith]] edits by [[Special:Contributions/Neveselbert|Neveselbert]] ([[User talk:Neveselbert|talk]]) wikitext text/x-wiki {{#invoke:String|replace |source={{#invoke:String|find|source={{{source|{{{1|}}}}}}|target={{{target|{{{2|}}}}}}|start={{{start|{{{3|}}}}}}|plain={{{plain|{{{4|}}}}}}}} |pattern=^0$ |replace={{#if:{{{nomatch|}}}|{{{nomatch|}}}|{{#if:{{{nomatch}}}|0<!-- no replacement -->|<!--return blank-->}}}} |plain=false}}<!-- --><noinclude>{{documentation}}</noinclude> b980c10def03090ad85d76557485fb1be3a19aef Module:InfoboxImage 828 164 381 2022-03-13T19:18:18Z wikipedia>WOSlinker 0 add class param from sandbox as per edit request Scribunto text/plain -- Inputs: -- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link -- page - page to display for multipage images (DjVu) -- size - size to display the image -- maxsize - maximum size for image -- sizedefault - default size to display the image if size param is blank -- alt - alt text for image -- title - title text for image -- border - set to yes if border -- center - set to yes, if the image has to be centered -- upright - upright image param -- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it -- link - page to visit when clicking on image -- class - HTML classes to add to the image -- Outputs: -- Formatted image. -- More details available at the "Module:InfoboxImage/doc" page local i = {}; local placeholder_image = { "Blue - Replace this image female.svg", "Blue - Replace this image male.svg", "Female no free image yet.png", "Flag of None (square).svg", "Flag of None.svg", "Flag of.svg", "Green - Replace this image female.svg", "Green - Replace this image male.svg", "Image is needed female.svg", "Image is needed male.svg", "Location map of None.svg", "Male no free image yet.png", "Missing flag.png", "No flag.svg", "No free portrait.svg", "No portrait (female).svg", "No portrait (male).svg", "Red - Replace this image female.svg", "Red - Replace this image male.svg", "Replace this image female (blue).svg", "Replace this image female.svg", "Replace this image male (blue).svg", "Replace this image male.svg", "Silver - Replace this image female.svg", "Silver - Replace this image male.svg", "Replace this image.svg", "Cricket no pic.png", "CarersLogo.gif", "Diagram Needed.svg", "Example.jpg", "Image placeholder.png", "No male portrait.svg", "Nocover-upload.png", "NoDVDcover copy.png", "Noribbon.svg", "No portrait-BFD-test.svg", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Sin bandera.svg", "Sin escudo.svg", "Replace this image - temple.png", "Replace this image butterfly.png", "Replace this image.svg", "Replace this image1.svg", "Resolution angle.png", "Image-No portrait-text-BFD-test.svg", "Insert image here.svg", "No image available.png", "NO IMAGE YET square.png", "NO IMAGE YET.png", "No Photo Available.svg", "No Screenshot.svg", "No-image-available.jpg", "Null.png", "PictureNeeded.gif", "Place holder.jpg", "Unbenannt.JPG", "UploadACopyrightFreeImage.svg", "UploadAnImage.gif", "UploadAnImage.svg", "UploadAnImageShort.svg", "CarersLogo.gif", "Diagram Needed.svg", "No male portrait.svg", "NoDVDcover copy.png", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Noimage.gif", } function i.IsPlaceholder(image) -- change underscores to spaces image = mw.ustring.gsub(image, "_", " "); assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil') -- if image starts with [[ then remove that and anything after | if mw.ustring.sub(image,1,2) == "[[" then image = mw.ustring.sub(image,3); image = mw.ustring.gsub(image, "([^|]*)|.*", "%1"); assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil') end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil") -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); -- capitalise first letter image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2); for i,j in pairs(placeholder_image) do if image == j then return true end end return false end function i.InfoboxImage(frame) local image = frame.args["image"]; if image == "" or image == nil then return ""; end if image == "&nbsp;" then return image; end if frame.args["suppressplaceholder"] ~= "no" then if i.IsPlaceholder(image) == true then return ""; end end if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then return ""; end if mw.ustring.sub(image,1,2) == "[[" then -- search for thumbnail images and add to tracking cat if found local cat = ""; if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then cat = "[[Category:Pages using infoboxes with thumbnail images]]"; end return image .. cat; elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then return image; elseif mw.ustring.sub(image,1,1) == "<" then return image; elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then -- Found strip marker at begining, so pass don't process at all return image; elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then -- Found strip marker at begining, so pass don't process at all return image; else local result = ""; local page = frame.args["page"]; local size = frame.args["size"]; local maxsize = frame.args["maxsize"]; local sizedefault = frame.args["sizedefault"]; local alt = frame.args["alt"]; local link = frame.args["link"]; local title = frame.args["title"]; local border = frame.args["border"]; local upright = frame.args["upright"] or ""; local thumbtime = frame.args["thumbtime"] or ""; local center = frame.args["center"]; local class = frame.args["class"]; -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end if maxsize ~= "" and maxsize ~= nil then -- if no sizedefault then set to maxsize if sizedefault == "" or sizedefault == nil then sizedefault = maxsize end -- check to see if size bigger than maxsize if size ~= "" and size ~= nil then local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0; local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0; if sizenumber>maxsizenumber and maxsizenumber>0 then size = maxsize; end end end -- add px to size if just a number if (tonumber(size) or 0) > 0 then size = size .. "px"; end -- add px to sizedefault if just a number if (tonumber(sizedefault) or 0) > 0 then sizedefault = sizedefault .. "px"; end result = "[[File:" .. image; if page ~= "" and page ~= nil then result = result .. "|page=" .. page; end if size ~= "" and size ~= nil then result = result .. "|" .. size; elseif sizedefault ~= "" and sizedefault ~= nil then result = result .. "|" .. sizedefault; else result = result .. "|frameless"; end if center == "yes" then result = result .. "|center" end if alt ~= "" and alt ~= nil then result = result .. "|alt=" .. alt; end if link ~= "" and link ~= nil then result = result .. "|link=" .. link; end if border == "yes" then result = result .. "|border"; end if upright == "yes" then result = result .. "|upright"; elseif upright ~= "" then result = result .. "|upright=" .. upright; end if thumbtime ~= "" then result = result .. "|thumbtime=" .. thumbtime; end if class ~= nil and class ~= "" then result = result .. "|class=" .. class; end -- if alt value is a keyword then do not use as a description if alt == "thumbnail" or alt == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then alt = nil; end if title ~= "" and title ~= nil then -- does title param contain any templatestyles? If yes then set to blank. if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then title = nil; end end if title ~= "" and title ~= nil then result = result .. "|" .. title; end result = result .. "]]"; return result; end end return i; 0ee5fe75ba239fc5c9cedc81ca11bdc0be068542 Module:EditAtWikidata 828 1045 2288 2022-03-13T22:49:52Z wikipedia>Johnuniq 0 update from [[Module:EditAtWikidata/sandbox]] per talk: tweaks + greatly reduce memory usage + class=noprint Scribunto text/plain -- Module to display an icon with a tooltip such as "Edit this at Wikidata". -- Icon is linked to the Wikidata entry for the article where this is placed. -- This message is only displayed if a local_parameter is not supplied -- i.e. when called from a template, it can be coded not to display the message. -- The qid of a Wikidata entry can optionally be supplied for testing outside the article. -- Usage: -- {{#invoke:EditAtWikidata|showMessage|local_parameter}} -- {{#invoke:EditAtWikidata|showMessage|qid=<ArticleID>|local_parameter}} local p = {} local i18n = { ["message"] = "Edit this at Wikidata" } local function trimToNil(text) -- Return trimmed non-empty text, or nil. if type(text) == 'string' then return text:match('(%S.-)%s*$') end end function p._showMessage(args) local local_parm = trimToNil(args[1]) if local_parm then return "" end -- Parameter qid=x specifies the Wikidata ID for the article. -- This is not normally used except for testing outside the article. local qid = trimToNil(args.qid) or mw.wikibase.getEntityIdForCurrentPage() if qid and mw.wikibase.entityExists(qid) then -- Parameter pid=x uses x as an anchor in the link to the Wikidata entry. local anchor = trimToNil(args.pid) -- Parameter nbsp replaces the leading space with &nbsp; local space = trimToNil(args.nbsp) and "&nbsp;" or " " return space .. "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px" .. "|alt=" .. i18n.message .. "|link=https://www.wikidata.org/wiki/" .. qid .. (anchor and ("#" .. anchor) or "") .. "|class=noprint" .. "|" .. i18n.message .. "]]" end return "" end function p.showMessage(frame) return p._showMessage(frame.args) end return p 9753d108ec0b308834a1e692bedfe5473e10de2a Template:Transliteration 10 435 2491 2022-03-14T21:07:34Z w>RMCD bot 0 Removing notice of move discussion wikitext text/x-wiki <includeonly>{{#invoke:Lang|transl}}</includeonly><noinclude> {{documentation}} </noinclude> cf981ec0dfa428550086604e3a81e36da231f3df Template:Tt 10 1735 3281 2022-03-19T17:59:52Z wikipedia>MusikBot II 0 Protected "[[Template:Tt]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 250 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Mono]] a7a3647ba0499a71e399c9dd87e77998307f51bf Template:Documentation 10 50 95 2022-03-29T02:14:34Z wikipedia>Bsherr 0 consistent with new substitution template format wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude> <!-- Add categories to the /doc subpage --> </noinclude> 9e62b964e96c4e3d478edecbfcb3c0338ae8a276 Template:Template redirect 10 1040 2278 2022-03-31T17:59:41Z wikipedia>MusikBot II 0 Protected "[[Template:Template redirect]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 255 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Shortcut|main|template=yes|redirect=yes}}</includeonly><noinclude>{{Documentation}}</noinclude> ec5365d4636ace45dd2b6b23308dc97a0b73a7ad Template:If empty 10 425 2144 924 2022-04-03T20:56:41Z wikipedia>Wugapodes 0 Changed protection settings for "[[Template:If empty]]": [[WP:High-risk templates|Highly visible template]]: used on 2 million pages and permanently cascade protected; matches module protection ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:If empty|main}}<noinclude>{{Documentation}}</noinclude> 745940b7bdde8a1585c887ee4ee5ce81d98461a4 Template:Helpbox 10 131 311 2022-04-04T14:36:16Z Xaosflux 7 Changed protection settings for "[[Template:Helpbox]]": HR, used in FP interfacetype pages such as [[Wikipedia:Text of Creative Commons Attribution-ShareAlike 3.0 Unported License]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{Sidebar | name = {{#if:{{{templatename|}}} |{{{templatename}}} |{{{name|{{PAGENAME}}}}} }} | templatestyles = Template:Helpbox/styles.css | child templatestyles = {{{child templatestyles|}}} | float = {{{float|}}} | class = help-box noprint {{{class|{{{bodyclass|}}}}}} | style = {{{1|}}} | titlestyle = {{{titlestyle|}}} | title = {{{title|{{{name|}}}}}} | headingstyle = {{{headingstyle|}}} | heading1 = {{{group1|}}} | content1 = {{{list1|}}} | heading2 = {{{group2|}}} | content2 = {{{list2|}}} | heading3 = {{{group3|}}} | content3 = {{{list3|}}} | heading4 = {{{group4|}}} | content4 = {{{list4|}}} | heading5 = {{{group5|}}} | content5 = {{{list5|}}} | heading6 = {{{group6|}}} | content6 = {{{list6|}}} | heading7 = {{{group7|}}} | content7 = {{{list7|}}} | heading8 = {{{group8|}}} | content8 = {{{list8|}}} | heading9 = {{{group9|}}} | content9 = {{{list9|}}} | heading10 = {{{group10|}}} | content10 = {{{list10|}}} | heading11 = {{{group11|}}} | content11 = {{{list11|}}} | heading12 = {{{group12|}}} | content12 = {{{list12|}}} | heading13 = {{{group13|}}} | content13 = {{{list13|}}} | heading14 = {{{group14|}}} | content14 = {{{list14|}}} | heading15 = {{{group15|}}} | content15 = {{{list15|}}} | heading16 = {{{group16|}}} | content16 = {{{list16|}}} | heading17 = {{{group17|}}} | content17 = {{{list17|}}} | heading18 = {{{group18|}}} | content18 = {{{list18|}}} | heading19 = {{{group19|}}} | content19 = {{{list19|}}} | heading20 = {{{group20|}}} | content20 = {{{list20|}}} | navbar = {{#if:{{{templatename|}}} | | {{#if:{{{title|}}} |{{#if:{{{name|}}} | |none}} | none }} }} }}</includeonly><noinclude> {{Documentation}} </noinclude> 5509d0ec3a4e28588e980d97b41e6d36f114d139 Template:Helpbox/styles.css 10 132 313 2022-04-04T14:36:19Z Xaosflux 7 Changed protection settings for "[[Template:Helpbox/styles.css]]": HR, used in FP interfacetype pages such as [[Wikipedia:Text of Creative Commons Attribution-ShareAlike 3.0 Unported License]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) sanitized-css text/css /* {{pp|small=y}} */ .help-box { background: #f5faff; line-height: 1.6em; } .help-box .sidebar-title { background: #cee0f2; font-size: 130%; padding-left: 0.4em; padding-right: 0.4em; /* gap before first heading/content */ margin-bottom: 6px; } .help-box .sidebar-heading { background: #cee0f2; padding: 0.1em 0.7em 0.15em; } .help-box .sidebar-content, /* conservatively target subgroups since we're working with a metatemplate */ .help-box .sidebar-content-with-subgroup { padding-top: 0.15em; } @media all and (min-width: 720px) { .help-box { width: auto; max-width: 22em; } } e9436864978a21f55d6aa0b3e1fc6670c322c65d Template:Lang-ru 10 997 2190 2022-04-11T05:48:13Z wikipedia>Paine Ellsworth 0 Undid revision 1073439901 by [[Special:Contributions/Paine Ellsworth|Paine Ellsworth]] ([[User talk:Paine Ellsworth|talk]]) srv - High-use template now in documentation wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_inherit |code=ru }}</includeonly><noinclude> {{Documentation|Template:Lang-x/doc}} [[Category:Balto-Slavic multilingual support templates]] </noinclude> 695925373c486c81a8f6581d4c8d3f95e56c469c Module:BaseConvert 828 1618 2953 2022-04-13T04:58:12Z w>Johnuniq 0 update from [[Module:BaseConvert/sandbox]] per talk; this removes globals Scribunto text/plain local p = {} local digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' local function normalizeFullWidthChars(s) return mw.ustring.gsub(s, '[!-~]', function(s) return mw.ustring.char(mw.ustring.codepoint(s, 1) - 0xFEE0) end) end local function _convert(n, base, from, precision, width, default, prefix, suffix) n = tostring(n) -- strip off any leading '0x' (unless x is a valid digit in the input base) from = tonumber(from) if not from or from < 34 then local c n, c = n:gsub('^(-?)0[Xx]', '%1') if c > 0 and not from then from = 16 end end -- check for a negative sign. Do this while the input is still in string form, -- because tonumber doesn't support negative numbers in non-10 bases. local sign = '' local c n, c = n:gsub('^-', '') if c > 0 then sign = '-' end -- replace any full-width Unicode characters in the string with their ASCII equivalents n = normalizeFullWidthChars(n) -- handle scientific notation with whitespace around the 'e' e.g. '5 e7' n = n:gsub('%s*[eE]%s*', 'e') from = from or 10 local num = tonumber(n, from) base = tonumber(base) precision = tonumber(precision) width = tonumber(width) if not num or not base then return default or n end local i, f = math.modf(num) local t = {} repeat local d = (i % base) + 1 i = math.floor(i / base) table.insert(t, 1, digits:sub(d, d)) until i == 0 while #t < (width or 0) do table.insert(t, 1, '0') end local intPart = table.concat(t, '') -- compute the fractional part local tf = {} while f > 0 and #tf < (precision or 10) do f = f * base i, f = math.modf(f) table.insert(tf, digits:sub(i + 1, i + 1)) end -- add trailing zeros if needed if precision and #tf < precision then for i = 1, precision - #tf do table.insert(tf, '0') end end local fracPart = table.concat(tf, '') -- remove trailing zeros if not needed if not precision then fracPart = fracPart:gsub('0*$', '') end -- add the radix point if needed if #fracPart > 0 then fracPart = '.' .. fracPart end return (prefix or '') .. sign .. intPart .. fracPart .. (suffix or '') end function p.convert(frame) -- Allow for invocation via #invoke or directly from another module local args if frame == mw.getCurrentFrame() then args = frame.args else args = frame end local n = args.n local base = args.base local from = args.from local precision = args.precision local width = args.width local default = args.default local prefix = args.prefix local suffix = args.suffix return _convert(n, base, from, precision, width, default, prefix, suffix) end setmetatable(p, { __index = function(t, k) local from, base = k:match('^([0-9]+)to([0-9]+)$') if not from then return nil end return function(frame) local args = frame.args return _convert(mw.text.trim(args[1]), base, from, args.precision, args.width, args.default, args.prefix, args.suffix) end end }) return p da7f7d5ef21f3c02054dddf627df0574719a2d53 Template:Script/doc/id-unk 10 1590 2925 2022-04-13T17:59:49Z w>MusikBot II 0 Changed protection settings for "[[Template:Script/doc/id-unk]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2518 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki {{Script/doc/id-unk/core |input1={{{input1|<noinclude>Test</noinclude>}}} |alpha4={{Script/doc/id-unk/name-to-alpha4|input1={{{input1|<noinclude>Test</noinclude>}}}}} |is-alpha4={{#invoke:String|match|s=_{{Script/doc/id-unk/name-to-alpha4|input1={{{input1|<noinclude>Test</noinclude>}}}}}|pattern=^_[A-Z][a-z][a-z][a-z]$|plain=false |nomatch=}}<!-- is-alpha4=empty/blank when false --> |is-in-unicode={{ISO 15924 alias|alpha4={{Script/doc/id-unk/name-to-alpha4|input1={{{input1|<noinclude>Test</noinclude>}}}}}|default=}}<!--is-in-unicode=Unicode Alias ID when true; blank when false --> }}<!-- --><noinclude>{{documentation}}</noinclude> f06bc79ad50f07bd27f6fdc6f47e5c4c6c4a05d9 Template:Script/doc/id-unk/core 10 1591 2926 2022-04-13T17:59:50Z w>MusikBot II 0 Changed protection settings for "[[Template:Script/doc/id-unk/core]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2519 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki {{#if:{{{is-alpha4|<noinclude>LAtn</noinclude>}}}<!-- if:is-alpha4 - check is defined?: -->|{{#if:{{Script/doc/id-unk/is-iso-alpha4|alpha4={{{alpha4|<noinclude>Latn</noinclude>}}}|default=}}|<!-- ok -->|{{Script/doc/id-unk/report|catsort={{{input1|}}}|msg=}}}}<!-- else:is-alpha4 - report -->|{{Script/doc/id-unk/report|catsort={{{input1|}}}|msg=}}<!-- -->}}<!-- --><noinclude>{{documentation|1=Template:Script/doc/id-unk/doc}}</noinclude> e7a8f16eebe71f45718e094589a59d447dbcbfe5 Template:DOW 10 1499 2834 2022-04-16T02:39:11Z w>Thrakkx 0 Like [[Template:WIA]] and [[Template:POW]], the parentheses should not be part of the link wikitext text/x-wiki &nbsp;([[Killed in action|{{abbr|DOW|Died of wounds}}]])<noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}} </noinclude> a14551ef11993cd99ef9b8d4f781f0feaf2e7640 Template:Notice and warning templates 10 1331 2666 2022-04-16T04:10:52Z w>Izno 0 nix false positive wikitext text/x-wiki {{Navbox | name = Notice and warning templates | state = {{{state|}}} | title = {{c|Notice and warning templates}} | liststyle = text-align:left; | tracking = no <!-- keep all the documanted templates out of the hlist tracking category --> | list1 = * {{tlb|Caution}} – For messages indicating e.g. that errors or misuse may have wide repercussions. * {{tlb|Consensus}} – For notices relating to [[Wikipedia:Consensus|consensus]] about methods, procedures, editing, etc. * {{tlb|Notice}} – For significant information. * {{tlb|Warning}} – For particularly significant warnings. * {{tl|Warnsign}} – Inline version of {{tlf|Warning}}. | below = See also {{tl|Ambox}}, the generic [[Template:Mbox|message box]] for article messages. }}<noinclude> {{Documentation |content={{Collapsible option |statename=optional <!--|default=collapsed-->}} [[Category:Notice and warning templates| ]] [[Category:Documentation see also templates]] }}<!--(end Documentation)--> </noinclude> fa67f43a108fbcd1277016c428ca6332aac76f7a Template:Unichar/notes 10 1617 2952 2022-04-17T10:57:13Z w>DePiep 0 wikitext text/x-wiki {{#if:{{{char_entity|}}}{{{note|}}} |({{trim|1=<!-- -->{{#ifeq:{{{char_entity|}}}|||{{mono|1={{{char_entity|}}}}}<!-- -->{{#if:{{{note|}}}|{{int:dot-separator}}}}}} <!-- -->{{{note|}}}<!-- -->}})}}<!-- --><noinclude>{{Documentation}}</noinclude> 6ab33077bcd6f1892e6f23c9286f59de43c1fb25 Template:Unichar/main 10 1610 2945 2022-04-17T11:02:31Z w>DePiep 0 wikitext text/x-wiki {{#ifexpr:({{{dval|-1}}}=0) and ({{#ifeq:X{{{hval}}}|X0000 |0 |1}}) |<!--(error triggered if X{{{hval}}} ≠ X0000:)-->{{Error |tag=span |Error using {{tl|unichar}}: Input "{{{hvalinput|}}}" is not a [[hexadecimal]] value.}} | {{nowrap|{{{{#ifeq:{{{sans|}}}|y|sans-serif|mono}}|{{Unichar/ulink |ulink={{{ulink|<#salted#>}}} |ulinkdefault=Unicode}}{{{hval|}}}}}&#x20;}}<!-- -->{{Unichar/glyph |hval={{{hval|}}} |gc={{{gc|<#not a Unicode code point#>}}} |size={{{size}}} |use={{{use|}}} |use2={{{use2|}}} |cwith={{{cwith|}}} |image={{{image|}}} |br={{{br|}}} }} <!-- -->{{Unichar/name |na={{{na|}}} |nlink={{{nlink|<#salted#>}}} |gc={{{gc|}}} }} <!-- -->{{Unichar/notes |html={{{html|}}} |char_entity={{#ifeq:{{{html|no}}}|yes|{{#invoke:LoadData|Numcr2namecr|{{{dval|}}}}}|}} |note={{{note|}}} }} }}<!-- --><noinclude>{{Documentation|1=Template:Unichar/doc}}</noinclude> d5b632dcc9a4089d49f7d7d81b6aaf9e8adf3a85 Template:Country data European Union 10 1191 2520 2022-04-18T01:09:30Z w>Paine Ellsworth 0 per edit request on talk page - remove shortname alias wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = European Union | flag alias = Flag of Europe.svg | size = {{{size|}}} | name = {{{name|}}} <noinclude> | redir1 = EU | related1 = Europe </noinclude> }} a0a90732df569849342cb7fb84f87ad11d803cb7 Template:Location map data documentation 10 1638 2991 2022-04-22T11:06:31Z wikipedia>Paine Ellsworth 0 convert to /doc page for protected template wikitext text/x-wiki <includeonly>__NOEDITSECTION__{{#invoke:Location map/info|main}} {{{image|}}} '''{{#titleparts:{{FULLPAGENAME}}|3}}''' is a location map definition used to overlay markers and labels on {{{projection|an [[equirectangular projection]]}}} map of {{{name|[[{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|name}}]]}}}. The markers are placed by [[latitude]] and [[longitude]] coordinates on the default map or a similar map image. == Usage == These definitions are used by the following templates when invoked with parameter "{{#titleparts:{{FULLPAGENAME}}|1|3}}": * {{tlx|Location map | {{#titleparts:{{FULLPAGENAME}}|1|3}}&nbsp;| ...}} * {{tlx|Location map many | {{#titleparts:{{FULLPAGENAME}}|1|3}}&nbsp;| ...}} * {{tlx|Location map+ | {{#titleparts:{{FULLPAGENAME}}|1|3}}&nbsp;| ...}} * {{tlx|Location map~ | {{#titleparts:{{FULLPAGENAME}}|1|3}}&nbsp;| ...}} == Map definition == * <code>'''name''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|name}}</code> *: Name used in the default map caption * <code>'''image''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image}}]]</code> *: The default map image, without "Image:" or "File:" {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}| * <code>'''image1''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}]]</code> *: An alternative map image, usually a relief map, which can be displayed via the ''relief'' or ''AlternativeMap'' parameters }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}| * <code>'''image2''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}]]</code>{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}| * <code>'''image3''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}]]</code> }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}| * <code>'''image4''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}]]</code> }} *: Alternative map image{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|s}} which can be displayed via the ''AlternativeMap'' parameter }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}| * <code>'''top''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}</code> *: [[Latitude]] at top edge of map, in [[decimal degrees]] * <code>'''bottom''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}</code> *: Latitude at bottom edge of map, in decimal degrees * <code>'''left''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}</code> *: [[Longitude]] at left edge of map, in decimal degrees * <code>'''right''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}</code> *: Longitude at right edge of map, in decimal degrees }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|x}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|y}}| * <code>'''x''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|x}}</code> *: An expression to calculate a location on the map via its [[longitude]]; evaluates as 0 along the left edge and 100 along the right edge * <code>'''y''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|y}}</code> *: An expression to calculate a location on the map via its [[latitude]]; evaluates as 0 along the top edge and 100 along the bottom edge }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}| * <code>'''mark''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}]] ([[File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|8px]])</code> *: The default mark image to display with this map. This can be overridden by the <code>mark</code> parameter in [[Template:Location map]], which would otherwise default to [[:File:Red pog.svg|Red pog.svg]] ([[File:Red pog.svg|8px]]). }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}| * <code>'''marksize''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}</code> *: The default mark size (in [[pixel]]s) for the mark image displayed with this map (should not include <code>px</code>, for example <code>marksize={{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}</code>, not <code>marksize={{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}px</code>). This can be overridden by the <code>marksize</code> parameter in [[Template:Location map]], which would otherwise default to 8. }} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}| == Alternative map == The {{tl|Location map}}, {{tl|Location map many}}, and {{tl|Location map+}} templates have parameters to specify an alternative map image. {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}} | The map displayed as '''image1''' can be used with the ''relief'' or ''AlternativeMap'' parameters. }} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}} | The map{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|s}} displayed as '''image2''' {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|/ '''image3'''}} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}|/ '''image4'''}} can be used with the ''AlternativeMap'' parameter. }} Examples may be found below or in the following: {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}| * [[Template:Location map#Relief parameter]] * [[Template:Location map+/relief]] }} * [[Template:Location map#AlternativeMap parameter]] * [[Template:Location map+/AlternativeMap]] }} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}| == Precision == {{#if:{{{precision|}}}|{{{precision}}}| [[Longitude]]: from West to East this map definition covers {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 round 4}} degrees. * At an image width of 200 [[pixel]]s, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 / 200 round 4}} degrees per pixel. * At an image width of 1000 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 / 1000 round 4}} degrees per pixel. [[Latitude]]: from North to South this map definition covers {{#expr: {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} round 4}} degrees. * At an image height of 200 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} ) / 200 round 4}} degrees per pixel. * At an image height of 1000 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} ) / 1000 round 4}} degrees per pixel. }}}} {{#if:{{{examples|}}}| == Examples using location map templates == {{{examples}}} {{clear}} }} == See also == {{{see also|}}} === Location map templates === * [[Template:Location map]], to display one mark and label using latitude and longitude * [[Template:Location map many]], to display up to nine marks and labels * [[Template:Location map+]], to display an unlimited number of marks and labels === Creating new map definitions === * [[Template:Location map/Creating a new map definition]]</includeonly><noinclude> {{Documentation}} </noinclude> 1fb38b8a638db2fc998cb284051bcbe9a98f1e5e Template:Ml 10 1565 2900 2022-04-22T11:31:32Z w>MSGJ 0 MSGJ moved page [[Template:Ml]] to [[Template:Module link]]: clearer name wikitext text/x-wiki #REDIRECT [[Template:Module link]] {{Redirect category shell| {{R from move}} }} 55769c1a9d3b6c6828298b7a402d8e8506532cdd Template:Script/doc/id-unk/name-to-alpha4 10 1592 2927 2022-04-24T13:48:45Z w>Aidan9382 0 Add {{pp-30-500|small=yes}} wikitext text/x-wiki <!-- ONLY add names that are recognised by the #switch in {{Script}}. List as of 20 Feb 2021: -->{{#switch:{{{input1|}}} |Arabic = Arab |Fraser = Lisu |Greek = Grek |Hebrew = Hebr |Hanunoo = Hano |Limbu = Limb |Meithei = Mtei |Nastaliq = Aran |Nko = Nkoo |Phoenician = Phnx |Pollard = Plrd |Vai = Vaii |Yezidi = Yezi |Yi = Yiii |#default = {{{input1|}}} }} <noinclude>{{pp-30-500|small=yes}}</noinclude> dc9a6a9cf44711aa27eb5695a79ffe51668ac1c1 Module:Bold list 828 630 1420 2022-04-26T07:59:10Z wikipedia>Peter coxhead 0 correction Scribunto text/plain -- Written by User:Ahecht in response to a thread at [[WP:VPI]] return { main = function(frame) args = {} for i, v in ipairs(frame:getParent().args) do table.insert(args, v) end conj = "'''" .. (#args > 2 and ", " or " ") .. (frame.args.conj or "or") .. " '''" return "'''"..mw.text.listToText(args, "''', '''", conj).."'''" end } 48d1ae74e90832a1b3366b51745334f53a668249 Template:Infobox royalty/short description 10 1358 2693 2022-04-27T13:17:55Z w>Jonesey95 0 add auto short description wikitext text/x-wiki <!--Check if infobox is in lead to avoid false positives-->{{#if:{{#invoke:Is infobox in lead|main|[Ii]nfobox [mM]onarch}}{{#invoke:Is infobox in lead|main|[Ii]nfobox King}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Emperor}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Roman emperor}}{{#invoke:Is infobox in lead|main|[Ii]nfobox [Rr]oyalty}}|<!-- Short description processing -->{{#if:{{{1|}}}|{{short description|{{ucfirst:{{trim|{{#invoke:String|match|s={{delink|1={{{1|}}}}}|pattern=[^<{;]*|nomatch=}}}}}}|noreplace}}}}}}<noinclude> {{Documentation|content={{High-use}} This template implements automatic short descriptions for infobox royalty. {{auto short description}}}}</noinclude> 6ef93a983aca3589861fdcde286ff3c1b546359a Template:Multiple issues/styles.css 10 1300 2635 2022-05-07T20:39:15Z w>Izno 0 add these other inline styles sanitized-css text/css /* {{pp|small=y}} */ .multiple-issues-text { width: 95%; margin: 0.2em 0; } .multiple-issues-text > .mw-collapsible-content { margin-top: 0.3em; } /* Remove borders, backgrounds, padding, etc. */ .compact-ambox .ambox { border: none; border-collapse: collapse; background-color: transparent; margin: 0 0 0 1.6em !important; padding: 0 !important; width: auto; display: block; } body.mediawiki .compact-ambox .ambox.mbox-small-left { font-size: 100%; width: auto; margin: 0; } /* Style the text cell as a list item and remove its padding */ .compact-ambox .ambox .mbox-text { padding: 0 !important; margin: 0 !important; } .compact-ambox .ambox .mbox-text-span { display: list-item; line-height: 1.5em; list-style-type: disc; } /* Hide the images */ .compact-ambox .ambox .mbox-image, .compact-ambox .ambox .mbox-imageright, .compact-ambox .ambox .mbox-empty-cell, /* Allow for hiding text in compact form */ .compact-ambox .hide-when-compact { display: none; } e90883916010fd38cd4f9c7e10c4a01908c965cb Template:Bold list 10 627 1414 2022-05-10T14:00:24Z Ahecht 42 {{{|safesubst:}}} wikitext text/x-wiki <includeonly>{{{{{|safesubst:}}}#invoke:Bold list|main|conj={{{conj|or}}}}}</includeonly><noinclude>{{{{BASEPAGENAME}}|A|B|C}} {{Documentation}}</noinclude> 2a2ac83abf84eb3db2c1d0b15b6c66cf88f18e99 Template:Infobox service record 10 1514 2849 2022-05-10T22:28:10Z w>Galobtter 0 Added {{being deleted}} per [[Wikipedia:Templates for discussion/Log/2022 April 30#Template:Infobox ship begin]] ([[WP:XFDC#4.0.13|XFDcloser]]) wikitext text/x-wiki <noinclude>{{Being deleted|2022 April 30|Template:Infobox ship begin|merge= Template:Infobox ship}}</noinclude><includeonly>{{#switch:{{#ifeq:{{{is_ship|}}}|yes|1|0}}{{#ifeq:{{{is_multi|}}}|yes|1|0}}| |00 = <table {{WPMILHIST Infobox style|main_box}}><!-- standalone --> |#default = }}<!-- not standalone (in a primary infobox) -->{{#ifeq:{{{is_ship|}}}|yes|<tr><!-- here for ship --> <th colspan="2" {{WPMILHIST Infobox style|header_bar}}>{{#if:{{{label|}}}|{{{label|}}}|Service record}}</th> </tr> {{#if:{{{partof|}}}|<tr><td>Part of:</td><td> {{#invoke:WPSHIPS utilities|unbulleted_list|{{{partof}}}}}</td></tr> }}{{#if:{{{codes|}}}|<tr><td>Identification codes:</td><td> {{#invoke:WPSHIPS utilities|unbulleted_list|{{{codes}}}}}</td></tr> }}{{#if:{{{commanders|}}}|<tr><td>Commanders:</td><td> {{#invoke:WPSHIPS utilities|unbulleted_list|{{{commanders}}}}}</td></tr> }}{{#if:{{{operations|}}}|<tr><td>Operations:</td><td> {{#invoke:WPSHIPS utilities|unbulleted_list|{{{operations}}}}}</td></tr> }}{{#if:{{{victories|}}}|<tr><td>Victories:</td><td> {{#invoke:WPSHIPS utilities|unbulleted_list|{{{victories}}}}}</td></tr> }}{{#if:{{{awards|}}}|<tr><td>Awards:</td><td> {{#invoke:WPSHIPS utilities|unbulleted_list|{{{awards}}}}}</td></tr> }}|<tr><!-- here for non-ship --> <th colspan="2" {{WPMILHIST Infobox style|header_bar}}>{{#if:{{{label|}}}|{{{label|}}}|Service record}}</th> </tr> {{#if:{{{partof|}}}|<tr><th style="padding-right: 1em;">Part of</th><td> {{{partof}}}</td></tr> }}{{#if:{{{codes|}}}|<tr><th style="padding-right: 1em;">Identification codes</th><td> {{{codes}}}</td></tr> }}{{#if:{{{commanders|}}}|<tr><th style="padding-right: 1em;">Commanders</th><td> {{{commanders}}}</td></tr> }}{{#if:{{{operations|}}}|<tr><th style="padding-right: 1em;">Operations</th><td> {{{operations}}}</td></tr> }}{{#if:{{{victories|}}}|<tr><th style="padding-right: 1em;">Victories</th><td> {{{victories}}}</td></tr> }}{{#if:{{{awards|}}}|<tr><th style="padding-right: 1em;">Awards</th><td> {{{awards}}}</td></tr> }}}}{{#switch:{{#ifeq:{{{is_ship|}}}|yes|1|0}}{{#ifeq:{{{is_multi|}}}|yes|1|0}}| |00 = </table> |#default = }}</includeonly><noinclude> {{convert to use Infobox}} {{documentation}} </noinclude> f7f64fe650c609522ae5737c494edc577cf855e4 Template:Citation needed 10 1084 2367 2022-05-13T03:22:19Z wikipedia>Hyacinth 0 Reverted edits by [[Special:Contribs/Hyacinth|Hyacinth]] ([[User talk:Hyacinth|talk]]) to last version by Izno wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Fix |name={{{name|Citation needed}}} |link=Wikipedia:Citation needed |text=citation needed |class=Template-Fact |title={{{reason|This claim needs references to reliable sources.}}} |date={{{date|}}} |cat=[[Category:All articles with unsourced statements]] |cat-date=Category:Articles with unsourced statements }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages containing citation needed template with unsupported parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Citation needed]] with unknown parameter "_VALUE_"|ignoreblank=y| date | name | reason }}}}<noinclude> {{Documentation}} </noinclude> 0da00647cf516584566df3fd518b1d55696e4b25 Greater Greece 0 1113 2425 2022-05-13T21:09:22Z wikipedia>Christian75 0 {{R hatnote}} wikitext text/x-wiki #REDIRECT [[Megali Idea]] {{R hatnote}} 1e2421e237e64daf0b351ac051651fb9c1da961b Module:String2 828 1353 2688 2022-05-14T12:03:50Z w>GKFX 0 Copy changes by [[User:Tholme]] from [[Module:String2/sandbox]] per edit request. Scribunto text/plain local p = {} p.trim = function(frame) return mw.text.trim(frame.args[1] or "") end p.sentence = function (frame) -- {{lc:}} is strip-marker safe, string.lower is not. frame.args[1] = frame:callParserFunction('lc', frame.args[1]) return p.ucfirst(frame) end p.ucfirst = function (frame ) local s = mw.text.trim( frame.args[1] or "" ) local s1 = "" -- if it's a list chop off and (store as s1) everything up to the first <li> local lipos = mw.ustring.find(s, "<li>" ) if lipos then s1 = mw.ustring.sub(s, 1, lipos + 3) s = mw.ustring.sub(s, lipos + 4) end -- s1 is either "" or the first part of the list markup, so we can continue -- and prepend s1 to the returned string local letterpos if mw.ustring.find(s, "^%[%[[^|]+|[^%]]+%]%]") then -- this is a piped wikilink, so we capitalise the text, not the pipe local _ _, letterpos = mw.ustring.find(s, "|%W*%w") -- find the first letter after the pipe else letterpos = mw.ustring.find(s, '%w') end if letterpos then local first = mw.ustring.sub(s, 1, letterpos - 1) local letter = mw.ustring.sub(s, letterpos, letterpos) local rest = mw.ustring.sub(s, letterpos + 1) return s1 .. first .. mw.ustring.upper(letter) .. rest else return s1 .. s end end p.title = function (frame ) -- http://grammar.yourdictionary.com/capitalization/rules-for-capitalization-in-titles.html -- recommended by The U.S. Government Printing Office Style Manual: -- "Capitalize all words in titles of publications and documents, -- except a, an, the, at, by, for, in, of, on, to, up, and, as, but, or, and nor." local alwayslower = {['a'] = 1, ['an'] = 1, ['the'] = 1, ['and'] = 1, ['but'] = 1, ['or'] = 1, ['for'] = 1, ['nor'] = 1, ['on'] = 1, ['in'] = 1, ['at'] = 1, ['to'] = 1, ['from'] = 1, ['by'] = 1, ['of'] = 1, ['up'] = 1 } local res = '' local s = mw.text.trim( frame.args[1] or "" ) local words = mw.text.split( s, " ") for i, s in ipairs(words) do -- {{lc:}} is strip-marker safe, string.lower is not. s = frame:callParserFunction('lc', s) if i == 1 or alwayslower[s] ~= 1 then s = mw.getContentLanguage():ucfirst(s) end words[i] = s end return table.concat(words, " ") end -- findlast finds the last item in a list -- the first unnamed parameter is the list -- the second, optional unnamed parameter is the list separator (default = comma space) -- returns the whole list if separator not found p.findlast = function(frame) local s = mw.text.trim( frame.args[1] or "" ) local sep = frame.args[2] or "" if sep == "" then sep = ", " end local pattern = ".*" .. sep .. "(.*)" local a, b, last = s:find(pattern) if a then return last else return s end end -- stripZeros finds the first number and strips leading zeros (apart from units) -- e.g "0940" -> "940"; "Year: 0023" -> "Year: 23"; "00.12" -> "0.12" p.stripZeros = function(frame) local s = mw.text.trim(frame.args[1] or "") local n = tonumber( string.match( s, "%d+" ) ) or "" s = string.gsub( s, "%d+", n, 1 ) return s end -- nowiki ensures that a string of text is treated by the MediaWiki software as just a string -- it takes an unnamed parameter and trims whitespace, then removes any wikicode p.nowiki = function(frame) local str = mw.text.trim(frame.args[1] or "") return mw.text.nowiki(str) end -- split splits text at boundaries specified by separator -- and returns the chunk for the index idx (starting at 1) -- #invoke:String2 |split |text |separator |index |true/false -- #invoke:String2 |split |txt=text |sep=separator |idx=index |plain=true/false -- if plain is false/no/0 then separator is treated as a Lua pattern - defaults to plain=true p.split = function(frame) local args = frame.args if not(args[1] or args.txt) then args = frame:getParent().args end local txt = args[1] or args.txt or "" if txt == "" then return nil end local sep = (args[2] or args.sep or ""):gsub('"', '') local idx = tonumber(args[3] or args.idx) or 1 local plain = (args[4] or args.plain or "true"):sub(1,1) plain = (plain ~= "f" and plain ~= "n" and plain ~= "0") local splittbl = mw.text.split( txt, sep, plain ) if idx < 0 then idx = #splittbl + idx + 1 end return splittbl[idx] end -- val2percent scans through a string, passed as either the first unnamed parameter or |txt= -- it converts each number it finds into a percentage and returns the resultant string. p.val2percent = function(frame) local args = frame.args if not(args[1] or args.txt) then args = frame:getParent().args end local txt = mw.text.trim(args[1] or args.txt or "") if txt == "" then return nil end local function v2p (x) x = (tonumber(x) or 0) * 100 if x == math.floor(x) then x = math.floor(x) end return x .. "%" end txt = txt:gsub("%d[%d%.]*", v2p) -- store just the string return txt end -- one2a scans through a string, passed as either the first unnamed parameter or |txt= -- it converts each occurrence of 'one ' into either 'a ' or 'an ' and returns the resultant string. p.one2a = function(frame) local args = frame.args if not(args[1] or args.txt) then args = frame:getParent().args end local txt = mw.text.trim(args[1] or args.txt or "") if txt == "" then return nil end txt = txt:gsub(" one ", " a "):gsub("^one", "a"):gsub("One ", "A "):gsub("a ([aeiou])", "an %1"):gsub("A ([aeiou])", "An %1") return txt end -- findpagetext returns the position of a piece of text in a page -- First positional parameter or |text is the search text -- Optional parameter |title is the page title, defaults to current page -- Optional parameter |plain is either true for plain search (default) or false for Lua pattern search -- Optional parameter |nomatch is the return value when no match is found; default is nil p._findpagetext = function(args) -- process parameters local nomatch = args.nomatch or "" if nomatch == "" then nomatch = nil end -- local text = mw.text.trim(args[1] or args.text or "") if text == "" then return nil end -- local title = args.title or "" local titleobj if title == "" then titleobj = mw.title.getCurrentTitle() else titleobj = mw.title.new(title) end -- local plain = args.plain or "" if plain:sub(1, 1) == "f" then plain = false else plain = true end -- get the page content and look for 'text' - return position or nomatch local content = titleobj and titleobj:getContent() return content and mw.ustring.find(content, text, 1, plain) or nomatch end p.findpagetext = function(frame) local args = frame.args local pargs = frame:getParent().args for k, v in pairs(pargs) do args[k] = v end if not (args[1] or args.text) then return nil end -- just the first value return (p._findpagetext(args)) end -- returns the decoded url. Inverse of parser function {{urlencode:val|TYPE}} -- Type is: -- QUERY decodes + to space (default) -- PATH does no extra decoding -- WIKI decodes _ to space p._urldecode = function(url, type) url = url or "" type = (type == "PATH" or type == "WIKI") and type return mw.uri.decode( url, type ) end -- {{#invoke:String2|urldecode|url=url|type=type}} p.urldecode = function(frame) return mw.uri.decode( frame.args.url, frame.args.type ) end -- what follows was merged from Module:StringFunc -- helper functions p._GetParameters = require('Module:GetParameters') -- Argument list helper function, as per Module:String p._getParameters = p._GetParameters.getParameters -- Escape Pattern helper function so that all characters are treated as plain text, as per Module:String function p._escapePattern( pattern_str) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ) end -- Helper Function to interpret boolean strings, as per Module:String p._getBoolean = p._GetParameters.getBoolean --[[ Strip This function Strips characters from string Usage: {{#invoke:String2|strip|source_string|characters_to_strip|plain_flag}} Parameters source: The string to strip chars: The pattern or list of characters to strip from string, replaced with '' plain: A flag indicating that the chars should be understood as plain text. defaults to true. Leading and trailing whitespace is also automatically stripped from the string. ]] function p.strip( frame ) local new_args = p._getParameters( frame.args, {'source', 'chars', 'plain'} ) local source_str = new_args['source'] or '' local chars = new_args['chars'] or '' or 'characters' source_str = mw.text.trim(source_str) if source_str == '' or chars == '' then return source_str end local l_plain = p._getBoolean( new_args['plain'] or true ) if l_plain then chars = p._escapePattern( chars ) end local result result = mw.ustring.gsub(source_str, "["..chars.."]", '') return result end --[[ Match any Returns the index of the first given pattern to match the input. Patterns must be consecutively numbered. Returns the empty string if nothing matches for use in {{#if:}} Usage: {{#invoke:String2|matchAll|source=123 abc|456|abc}} returns '2'. Parameters: source: the string to search plain: A flag indicating that the patterns should be understood as plain text. defaults to true. 1, 2, 3, ...: the patterns to search for ]] function p.matchAny(frame) local source_str = frame.args['source'] or error('The source parameter is mandatory.') local l_plain = p._getBoolean( frame.args['plain'] or true ) for i = 1, math.huge do local pattern = frame.args[i] if not pattern then return '' end if mw.ustring.find(source_str, pattern, 1, l_plain) then return tostring(i) end end end --[[--------------------------< H Y P H E N _ T O _ D A S H >-------------------------------------------------- Converts a hyphen to a dash under certain conditions. The hyphen must separate like items; unlike items are returned unmodified. These forms are modified: letter - letter (A - B) digit - digit (4-5) digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5) letterdigit - letterdigit (A1-A5) (an optional separator between letter and digit is supported – a.1-a.5 or a-1-a-5) digitletter - digitletter (5a - 5d) (an optional separator between letter and digit is supported – 5.a-5.d or 5-a-5-d) any other forms are returned unmodified. str may be a comma- or semicolon-separated list ]] function p.hyphen_to_dash( str, spacing ) if (str == nil or str == '') then return str end local accept str = mw.text.decode(str, true ) -- replace html entities with their characters; semicolon mucks up the text.split local out = {} local list = mw.text.split (str, '%s*[,;]%s*') -- split str at comma or semicolon separators if there are any for _, item in ipairs (list) do -- for each item in the list item = mw.text.trim(item) -- trim whitespace item, accept = item:gsub ('^%(%((.+)%)%)$', '%1') if accept == 0 and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit) item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter) item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2') -- replace hyphen, remove extraneous space characters else item = mw.ustring.gsub (item, '%s*[–—]%s*', '–') -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace end end table.insert (out, item) -- add the (possibly modified) item to the output table end local temp_str = table.concat (out, ',' .. spacing) -- concatenate the output table into a comma separated string temp_str, accept = temp_str:gsub ('^%(%((.+)%)%)$', '%1') -- remove accept-this-as-written markup when it wraps all of concatenated out if accept ~= 0 then temp_str = str:gsub ('^%(%((.+)%)%)$', '%1') -- when global markup removed, return original str; do it this way to suppress boolean second return value end return temp_str end function p.hyphen2dash( frame ) local str = frame.args[1] or '' local spacing = frame.args[2] or ' ' -- space is part of the standard separator for normal spacing (but in conjunction with templates r/rp/ran we may need a narrower spacing return p.hyphen_to_dash(str, spacing) end -- Similar to [[Module:String#endswith]] function p.startswith(frame) return (frame.args[1]:sub(1, frame.args[2]:len()) == frame.args[2]) and 'yes' or '' end return p 418f407ee2454811910e333a13523afc975fa40c Template:Script/doc/id-unk/is-iso-alpha4 10 1593 2928 2022-05-15T17:59:43Z w>MusikBot II 0 Changed protection settings for "[[Template:Script/doc/id-unk/is-iso-alpha4]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2501 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <!-- ISO 15924 alpha4-IDs: Returns input alpha4 when existing, <blank> when not existing (per #default). "Special ISO codes" (number 900-999) are NOT recognised here (Qaaa..Qabx, Zinh Zmth Zsye Zsym Zxxx Zyyy Zzzz). List of ISO codes as of 2021-02-17 (201 regular codes) -->{{#switch:{{{alpha4|}}} |Adlm|Afak|Aghb|Ahom|Arab|Aran|Armi|Armn|Avst|Bali|Bamu|Bass|Batk|Beng|Bhks|Blis|Bopo|Brah|Brai|Bugi|Buhd |Cakm|Cans|Cari|Cham|Cher|Chrs|Cirt|Copt|Cpmn|Cprt|Cyrl|Cyrs|Deva|Diak|Dogr|Dsrt|Dupl |Egyd|Egyh|Egyp|Elba|Elym|Ethi|Geok|Geor|Glag|Gong|Gonm|Goth|Gran|Grek|Gujr|Guru |Hanb|Hang|Hani|Hano|Hans|Hant|Hatr|Hebr|Hira|Hluw|Hmng|Hmnp|Hrkt|Hung|Inds|Ital|Jamo|Java|Jpan|Jurc |Kali|Kana|Khar|Khmr|Khoj|Kitl|Kits|Knda|Kore|Kpel|Kthi|Lana|Laoo|Latf|Latg|Latn|Leke|Lepc|Limb|Lina|Linb|Lisu|Loma|Lyci|Lydi |Mahj|Maka|Mand|Mani|Marc|Maya|Medf|Mend|Merc|Mero|Mlym|Modi|Mong|Moon|Mroo|Mtei|Mult|Mymr |Nand|Narb|Nbat|Newa|Nkdb|Nkgb|Nkoo|Nshu|Ogam|Olck|Orkh|Orya|Osge|Osma|Ougr |Palm|Pauc|Pcun|Pelm|Perm|Phag|Phli|Phlp|Phlv|Phnx|Piqd|Plrd|Prti|Psin|Ranj|Rjng|Rohg|Roro|Runr|Samr |Sara|Sarb|Saur|Sgnw|Shaw|Shrd|Shui|Sidd|Sind|Sinh|Sogd|Sogo|Sora|Soyo|Sund|Sylo|Syrc|Syre|Syrj|Syrn |Tagb|Takr|Tale|Talu|Taml|Tang|Tavt|Telu|Teng|Tfng|Tglg|Thaa|Thai|Tibt|Tirh|Tnsa|Toto|Ugar|Vaii|Visp|Vith |Wara|Wcho|Wole|Xpeo|Xsux|Yezi|Yiii|Zanb={{{alpha4|}}} |#default={{{default|}}}}}<!-- --><noinclude>{{documentation|content= :Returns input alpha4 when existing, &lt;blank> when not existing (per #default). :"Special ISO codes" (number 900-999) are NOT recognised here (Qaaa..Qabx, Zinh Zmth Zsye Zsym Zxxx Zyyy Zzzz). : List of ISO codes as of 2021-02-17 (201 regular codes) *>Adlm &rarr; {{Script/doc/id-unk/is-iso-alpha4|alpha4=Adlm}} *>Aaaa &rarr; {{Script/doc/id-unk/is-iso-alpha4|alpha4=Aaaa}} }}</noinclude> 140e866d057277d3d3e4378580bd9108e92356da Template:Information/styles.css 10 1315 2650 2022-05-18T18:45:49Z w>Izno 0 pp sanitized-css text/css /* {{pp|small=y}} */ .file-information { width: 100%; padding: 5px; border: 1px solid #a2a9b1; background-color: #f8f9fa; font-size: 95%; box-sizing: border-box; } .file-information caption { font-weight: bold; } .file-information td { padding: 2px; vertical-align: top; } .file-information th { padding: 2px; vertical-align: top; background: #ccf; text-align: right; padding-right: 0.4em; } /* higher specificity than the likely-later .imbox styles */ .file-information td .imbox { margin: 4px; } @media (min-width: 720px) { /* let's not enforce col widths except above 720px */ .file-information th { width: 15%; } } 60e6939d0e32461ec31fdfe218d8bb88dd5c7889 Template:Information 10 1134 2460 2022-05-18T18:49:43Z w>Izno 0 use templatestyles wikitext text/x-wiki <!-- Automatically detect protected files: --><includeonly>{{#switch: {{PROTECTIONLEVEL:upload}} |sysop|templateeditor|extendedconfirmed={{pp-upload|small=yes}} }}{{#switch: {{PROTECTIONLEVEL:move}} |sysop|templateeditor|extendedconfirmed={{pp-move|small=yes}} }}{{#switch: {{PROTECTIONLEVEL:edit}} |sysop={{pp-protected|small=yes}} |templateeditor={{pp-template|small=yes}} |extendedconfirmed={{Pp-30-500|small=yes}} |autoconfirmed={{pp-protected|small=yes}} | <!--Not protected--> }} </includeonly><templatestyles src="Information/styles.css"/> {| class="file-information" |+ File information |- ! scope="row" {{#if:{{{Description|{{{description|}}}}}}|id="fileinfotpl_desc"}} |Description | {{{Location|}}} {{#if: {{{Description|{{{description|}}}}}} | {{{Description|{{{description}}}}}} | {{Description missing<noinclude>|category=</noinclude>}} }} |- ! scope="row" {{#if:{{{Source|{{{source|}}}}}}|id="fileinfotpl_src"}} | Source | {{#if:{{{Source|{{{source|}}}}}} | {{{Source|{{{source}}}}}} | {{#ifeq:{{NAMESPACE}}|File|<includeonly>[[Category:Files with no machine-readable source]]</includeonly>}} No source specified. Please edit this file description and [[Wikipedia:Citing sources#Multimedia|provide a source]]. }} |- ! scope="row" {{#if:{{{Date|{{{date|}}}}}}|id="fileinfotpl_date"}} | Date | {{{Date|{{{date|}}}}}} |- ! scope="row" {{#if:{{{Author|{{{author|}}}}}}|id="fileinfotpl_aut"}} | Author | {{#if: {{{Author|{{{author|}}}}}} | {{{Author|{{{author}}}}}} | {{Description missing|author information|category=}}{{#ifeq:{{NAMESPACE}}|File|<includeonly>[[Category:Files lacking an author]]</includeonly>}} }} |- ! scope="row" {{#if:{{{Permission|{{{permission|}}}}}}|id="fileinfotpl_perm"}} | Permission<br /><small>([[Commons:Commons:Reusing content outside Wikimedia|Reusing this file]])</small> | {{#if:{{{Permission|{{{permission|}}}}}} | {{{Permission|{{{permission}}}}}} | See below. }} {{#switch: {{{Other_versions| {{{other_versions| {{{other versions|}}} }}} }}} | = | - = | none = | #default = {{!}}- ! scope="row" id="fileinfotpl_ver" {{!}} Other versions {{!}} {{{Other_versions| {{{other_versions| {{{other versions|}}} }}} }}} }} {{#switch: {{{Additional_information|{{{additional_information|{{{Additional information|{{{additional information|}}}}}}}}}}}} | = | - = | none = | #default = {{!}}- ! scope="row" id="fileinfotpl_add" {{!}} Additional information {{!}} {{{Additional_information|{{{additional_information|{{{Additional information|{{{additional information|}}}}}}}}}}}} }} |}<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 09b7ac1ac351b9b118fd2e28290491600b1bfccd Template:Infobox country 10 241 1253 2022-05-21T18:18:18Z wikipedia>Primefac 0 fix pipe parameter issue wikitext text/x-wiki {{infobox |templatestyles = Template:Infobox country/styles.css | bodyclass = ib-country vcard | aboveclass = adr | above = {{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}} | {{#if:{{{conventional_long_name|}}} |<div class="fn org country-name">{{{conventional_long_name|}}}</div> }}{{#if:{{{native_name|}}}{{{name|}}} |<div class="ib-country-names"><!-- -->{{br separated entries |{{{native_name|}}} |{{#if:{{{name|}}} |<div class="ib-country-name-style fn org country-name">{{{name|}}}</div> }}}}</div> }}<!-- -->{{#ifeq:{{{micronation|}}}|yes |<span class="fn org">[[Micronation]]</span> }} }} | subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }} | image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}} |{{infobox country/imagetable |image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}} |caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }} |image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }} }} }} | data1 = {{#if:{{{national_motto|}}}{{{motto|}}} |'''Motto:&nbsp;'''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!-- -->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }} }} | class2 = anthem | data2 = {{#if:{{{national_anthem|}}}{{{anthem|}}} |'''Anthem:'''&nbsp;{{if empty|{{{national_anthem|}}}|{{{anthem|}}}}} }}{{#if:{{{anthems|}}} |'''Anthems:'''&nbsp;{{{anthems}}} }}{{#if:{{{royal_anthem|}}} | <div class="ib-country-anthem">'''[[Royal anthem]]:'''&nbsp;{{{royal_anthem}}}</div> }}{{#if:{{{flag_anthem|}}} | <div class="ib-country-anthem">'''[[Flag anthem]]:'''&nbsp;{{{flag_anthem}}}</div> }}{{#if:{{{national_march|}}} | <div class="ib-country-anthem">'''National march:'''&nbsp;{{{national_march}}}</div> }}{{#if:{{{territorial_anthem|}}} | <div class="ib-country-anthem">'''Territorial anthem:'''&nbsp;{{{territorial_anthem}}}</div> }}{{#if:{{{regional_anthem|}}} | <div class="ib-country-anthem">'''Regional anthem:'''&nbsp;{{{regional_anthem}}}</div> }}{{#if:{{{state_anthem|}}} | <div class="ib-country-anthem">'''State anthem:'''&nbsp;{{{state_anthem}}}</div> }}{{#if:{{{march|}}} | <div class="ib-country-anthem">'''March:'''&nbsp;{{{march}}}</div> }} | data3 = {{#if:{{{other_symbol|}}}{{{text_symbol|}}} |{{#if:{{{other_symbol_type|}}}{{{text_symbol_type|}}} | '''{{if empty|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}'''<br/>}}<!-- -->{{if empty|{{{other_symbol|}}}|{{{text_symbol|}}}}} }} | data4 = {{#if:{{{image_map|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_width|{{{image_map_size|}}}}}}|upright=1.15|alt={{{alt_map|{{{image_map_alt|}}}}}}|title={{{map_caption|{{{image_map_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption|{{{image_map_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption|{{{image_map_caption|}}}}}}</div>}} }} | data5 = {{#if:{{{image_map2|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map2|}}}|size={{{map2_width|{{{image_map2_size|}}}}}}|upright=1.15|alt={{{alt_map2|{{{image_map2_alt|}}}}}}|title={{{map_caption2|{{{image_map2_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption2|{{{image_map2_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption2|{{{image_map2_caption|}}}}}}</div>}} }} | label6 = Status | data6 = {{#if:{{{status|}}}|{{Infobox country/status text|status={{{status|}}}|status_text={{{status_text|}}}|empire={{{empire|}}}|year_end={{{year_end|}}}|year_exile_start={{{year_exile_start|}}}|year_exile_end={{{year_exile_end|}}} }} }} | label7 = Location | data7 = {{{loctext|}}} | label8 = {{#if:{{{capital_type|}}} | {{{capital_type}}} | Capital }}{{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital |capital<!-- -->|{{#switch:{{{capital}}} | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital | {{{largest_city|}}}{{{largest_settlement|}}} = capital | not capital }}<!-- -->}}|capital <!-- (#ifeq:)-->|<!------------------------------------------ capital is largest_city/_settlement: ------------------------------------------- --><div class="ib-country-largest">and {{{largest_settlement_type|largest city}}}</div> }} | data8 = {{#if:{{{capital|}}}|{{{capital}}}{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} | rowclass9 = {{#if:{{{capital|}}}|mergedrow}} | label9 = Capital-in-exile | data9 = {{#ifexist:{{{capital_exile|}}}|[[{{{capital_exile|}}}]]|{{{capital_exile|}}}}} | rowclass10 = {{#if:{{{capital|}}}|mergedrow}} | label10 = {{#if:{{{admin_center_type|}}}| {{{admin_center_type}}} | Administrative&nbsp;center }} | data10 = {{#switch:{{{admin_center|}}} |capital | = |[[{{{capital|}}}]] = |{{{capital|}}} = |#default = {{{admin_center}}}{{#if:{{{capital|}}}||{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} }} | rowclass11 = {{#if:{{{capital|}}}{{{admin_center|}}}|mergedbottomrow}} | label11 = Largest {{{largest_settlement_type|city}}} | data11 = {{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital |capital<!-- -->|{{#switch:{{{capital}}} | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital | {{{largest_city|}}}{{{largest_settlement|}}} = capital | not capital }}<!-- -->}}|capital <!-- (#ifeq:)-->|<!-- nothing already appears above --> | {{if empty| {{{largest_city|}}} | {{{largest_settlement|}}} }} }} | rowclass12 = mergedtoprow | label12 = Official&nbsp;languages | data12 = {{{official_languages|}}} | rowclass13 = mergedrow | label13 = <span class="ib-country-lang">{{#if:{{{recognized_languages|}}}|Recognized|Recognised}}&nbsp;languages</span> | data13 = {{if empty| {{{recognized_languages|}}} | {{{recognised_languages|}}} }} | rowclass14 = mergedrow | label14 = <span class="ib-country-lang">{{#if:{{{recognized_national_languages|}}}|Recognized|Recognised}} national&nbsp;languages</span> | data14 = {{if empty| {{{recognized_national_languages|}}} | {{{recognised_national_languages|}}} | {{{national_languages|}}} }} | rowclass15 = mergedrow | label15 = <span class="ib-country-lang">{{#if:{{{recognized_regional_languages|}}}|Recognized|Recognised}} regional&nbsp;languages</span> | data15 = {{if empty| {{{recognized_regional_languages|}}} | {{{recognised_regional_languages|}}} | {{{regional_languages|}}} }} | label16 = Common&nbsp;languages | data16 = {{{common_languages|}}} | rowclass17 = {{#ifeq:{{{languages2_sub|}}}|yes |{{#ifeq:{{{languages_sub|}}}|yes |mergedrow}} |{{#ifeq:{{{languages_sub|}}}|yes |mergedbottomrow}} }} | label17 ={{#ifeq:{{{languages_sub|}}}|yes |<div class="ib-country-lang">{{if empty| {{{languages_type|}}} | Other&nbsp;languages }}</div> |{{if empty| {{{languages_type|}}} | Other&nbsp;languages }} }} | data17 = {{{languages|}}} | rowclass18 = {{#ifeq:{{{languages2_sub|}}}|yes |mergedbottomrow}} | label18 = {{#ifeq:{{{languages2_sub|}}}|yes |<div class="ib-country-lang">{{if empty|{{{languages2_type|}}} | Other&nbsp;languages }}</div> |{{if empty|{{{languages2_type|}}} | Other&nbsp;languages }} }} | data18 = {{{languages2|}}} | label19 = [[Ethnic group|Ethnic&nbsp;groups]] <!-- -->{{#if:{{{ethnic_groups_year|}}} |<div class="ib-country-ethnic"> ({{{ethnic_groups_year}}}){{{ethnic_groups_ref|}}}</div>|<div class="ib-country-ethnic">{{{ethnic_groups_ref|}}}</div>}} | data19 = {{{ethnic_groups|}}} | label20 = Religion <!-- -->{{#if:{{{religion_year|}}} |<div class="ib-country-religion"> ({{{religion_year}}}){{{religion_ref|}}}</div>|<div class="ib-country-religion">{{{religion_ref|}}}</div>}} | data20 = {{{religion|}}} | label21 = [[Demonym|Demonym(s)]] | data21 = {{#if:{{{demonym|}}} |{{#ifexist:{{{demonym}}} people | [[{{{demonym}}} people|{{{demonym}}}]] | {{{demonym}}} }} }} | label22 = Type | data22 = {{{org_type|}}} | label23 = {{if empty|{{{membership_type|}}} | Membership }} | data23 = {{{membership|}}} | label24 = {{#if:{{{government_type|}}} | {{#if:{{{politics_link|}}} | [[{{{politics_link}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!-- -->| {{#ifexist:Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!-- -->| {{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}<!-- -->}}<!-- -->}}<!-- -->}} | data24 = {{{government_type|}}} | header25 = {{#if:{{{government_type|}}} || {{#if:{{{leader_title1|}}}{{{leader_name1|}}} | {{#if:{{{name|}}}{{{membership|}}} | <!--template being used for geopolitical org:-->Leaders | <!--template being used for country/territory: -->Government }} }} }} | rowclass26 = mergedrow | data26 = {{#if:{{{leader_name1|}}}|{{Infobox country/multirow|{{{leader_title1|}}} |{{{leader_name1|}}} |{{{leader_title2|}}} |{{{leader_name2|}}} |{{{leader_title3|}}} |{{{leader_name3|}}} |{{{leader_title4|}}} |{{{leader_name4|}}} |{{{leader_title5|}}} |{{{leader_name5|}}} |{{{leader_title6|}}} |{{{leader_name6|}}} |{{{leader_title7|}}} |{{{leader_name7|}}} |{{{leader_title8|}}} |{{{leader_name8|}}} |{{{leader_title9|}}} |{{{leader_name9|}}} |{{{leader_title10|}}} |{{{leader_name10|}}} |{{{leader_title11|}}} |{{{leader_name11|}}} |{{{leader_title12|}}} |{{{leader_name12|}}} |{{{leader_title13|}}} |{{{leader_name13|}}} |{{{leader_title14|}}} |{{{leader_name14|}}} |{{{leader_title15|}}} |{{{leader_name15|}}} }} }} | rowclass27 = mergedrow | label27 = {{#if:{{{title_leader|}}}| {{{title_leader}}} }} | data27 = {{#if:{{{title_leader|}}}|&nbsp;}} | rowclass28 = mergedrow | data28 = {{#if:{{{year_leader1|}}} | {{Infobox country/multirow|{{{year_leader1|}}} |{{{leader1|}}} |{{{year_leader2|}}} |{{{leader2|}}} |{{{year_leader3|}}} |{{{leader3|}}} |{{{year_leader4|}}} |{{{leader4|}}} |{{{year_leader5|}}} |{{{leader5|}}} |{{{year_leader6|}}} |{{{leader6|}}} |{{{year_leader7|}}} |{{{leader7|}}} |{{{year_leader8|}}} |{{{leader8|}}} |{{{year_leader9|}}} |{{{leader9|}}} |{{{year_leader10|}}} |{{{leader10|}}} |{{{year_leader11|}}} |{{{leader11|}}}|{{{year_leader12|}}} |{{{leader12|}}}|{{{year_leader13|}}} |{{{leader13|}}}|{{{year_leader14|}}} |{{{leader14|}}}|{{{year_leader15|}}} |{{{leader15|}}} }} }} | rowclass29 = mergedrow | label29 = {{#if:{{{title_representative|}}}| {{{title_representative}}} }} | data29 = {{#if:{{{title_representative|}}}|&nbsp;}} | rowclass30 = mergedrow | data30 = {{#if:{{{year_representative1|}}}|{{Infobox country/multirow|{{{year_representative1|}}} |{{{representative1|}}} |{{{year_representative2|}}} |{{{representative2|}}} |{{{year_representative3|}}} |{{{representative3|}}} |{{{year_representative4|}}} |{{{representative4|}}} |{{{year_representative5|}}} |{{{representative5|}}}|{{{year_representative6|}}} |{{{representative6|}}}|{{{year_representative7|}}} |{{{representative7|}}}|{{{year_representative8|}}} |{{{representative8|}}} }} }} | rowclass31 = mergedrow | label31 = {{#if:{{{title_deputy|}}}|{{{title_deputy}}} }} | data31 = {{#if:{{{title_deputy|}}}|&nbsp;}} | rowclass32 = mergedrow | data32 = {{#if:{{{year_deputy1|}}}|{{Infobox country/multirow|{{{year_deputy1|}}} |{{{deputy1|}}} |{{{year_deputy2|}}} |{{{deputy2|}}} |{{{year_deputy3|}}} |{{{deputy3|}}} |{{{year_deputy4|}}} |{{{deputy4|}}} |{{{year_deputy5|}}} |{{{deputy5|}}} |{{{year_deputy6|}}} |{{{deputy6|}}}|{{{year_deputy7|}}} |{{{deputy7|}}}|{{{year_deputy8|}}} |{{{deputy8|}}}|{{{year_deputy9|}}} |{{{deputy9|}}}|{{{year_deputy10|}}} |{{{deputy10|}}}|{{{year_deputy11|}}} |{{{deputy11|}}}|{{{year_deputy12|}}} |{{{deputy12|}}}|{{{year_deputy13|}}} |{{{deputy13|}}}|{{{year_deputy14|}}} |{{{deputy14|}}}|{{{year_deputy15|}}} |{{{deputy15|}}} }} }} | label40 = Legislature | data40 = {{{legislature|}}} | rowclass41 = mergedrow | label41 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{type_house1|}}}|{{{type_house1}}}|[[Upper house]]}}</div> | data41 = {{{upper_house|{{{house1|}}}}}} | rowclass42 = mergedbottomrow | label42 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{type_house2|}}}|{{{type_house2}}}|[[Lower house]]}}</div> | data42 = {{{lower_house|{{{house2|}}}}}} | rowclass43 = {{#if:{{{established_event1|}}} |mergedtoprow}} | header43 = {{#if:{{{established_event1|}}}{{{sovereignty_type|}}} |{{#if:{{{sovereignty_type|}}} | {{{sovereignty_type}}}<!-- -->{{#if:{{{sovereignty_note|}}} |&nbsp;<div class="ib-country-sovereignty">{{{sovereignty_note}}}</div>}} | {{#if:{{{established|}}}| | Establishment }} }} }} | label44 = Establishment | data44 = {{#if:{{{sovereignty_type|}}} | |{{{established|}}} }} | label45 = {{#if:{{{era|}}}|Historical era|History}} | data45 = {{#if:{{{era|}}} |{{#ifexist:{{{era|}}}|[[{{{era}}}]]|{{{era}}}}} | {{#if:{{{date_start|}}}{{{year_start|}}}|&nbsp;}}}} | rowclass46 = {{#if:{{{established_event1|}}} |mergedrow |mergedbottomrow}} | data46 = {{#if:{{{established_date1|}}}|{{Infobox country/multirow |{{{established_event1|}}} |{{{established_date1||}}} |{{{established_event2|}}} |{{{established_date2||}}} |{{{established_event3|}}} |{{{established_date3|}}} |{{{established_event4|}}} |{{{established_date4|}}} |{{{established_event5|}}} |{{{established_date5|}}} |{{{established_event6|}}} |{{{established_date6|}}} |{{{established_event7|}}} |{{{established_date7|}}} |{{{established_event8|}}} |{{{established_date8|}}} |{{{established_event9|}}} |{{{established_date9|}}} |{{{established_event10|}}} |{{{established_date10|}}} |{{{established_event11|}}} |{{{established_date11|}}} |{{{established_event12|}}} |{{{established_date12|}}} |{{{established_event13|}}} |{{{established_date13|}}} |{{{established_event14|}}} |{{{established_date14|}}} |{{{established_event15|}}} |{{{established_date15|}}} |{{{established_event16|}}} |{{{established_date16|}}} |{{{established_event17|}}} |{{{established_date17|}}} |{{{established_event18|}}} |{{{established_date18|}}} |{{{established_event19|}}} |{{{established_date19|}}} |{{{established_event20|}}} |{{{established_date20|}}} }} }} | rowclass47 = {{#if:{{{date_start|}}}{{{year_start|}}} |mergedrow |mergedbottomrow}} | data47 = {{#if:{{{date_start|}}}{{{year_start|}}}|{{Infobox country/multirow |{{{event_pre|}}} |{{{date_pre|}}} |{{if empty|{{{event_start|}}}|Established}} |{{{date_start|}}} {{{year_start|}}} |{{{event1|}}} |{{{date_event1|}}} |{{{event2|}}} |{{{date_event2|}}} |{{{event3|}}} |{{{date_event3|}}} |{{{event4|}}} |{{{date_event4|}}} |{{{event5|}}} |{{{date_event5|}}} |{{{event6|}}} |{{{date_event6|}}}|{{{event7|}}} |{{{date_event7|}}}|{{{event8|}}} |{{{date_event8|}}}|{{{event9|}}} |{{{date_event9|}}}|{{{event10|}}} |{{{date_event10|}}} |{{if empty|{{{event_end|}}}|Disestablished}} |{{{date_end|}}} {{{year_end|}}} |{{{event_post|}}} |{{{date_post|}}} }} }} | rowclass60 = mergedtoprow | header60 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}} | {{#if:{{{area_link|}}} | [[{{{area_link}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]] | {{#ifexist:Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]] | Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}<!-- -->}}<!-- -->}} }} | rowclass61 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label61 = <div class="ib-country-fake-li">•&nbsp;{{{area_label|Total}}}{{{FR_foot4|}}}</div> | data61 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}} |{{#if:{{{area_km2|}}}{{{area_sq_mi|}}} |{{convinfobox|{{{area_km2|}}}|km2|{{{area_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_ha|}}}{{{area_acre|}}} |{{convinfobox|{{{area_ha|}}}|ha|{{{area_acre|}}}|acre|abbr=on}} }} }}{{{area_footnote|}}}{{#if:{{{area_rank|}}} |&#32;([[List of countries and dependencies by area|{{{area_rank}}}]]) }} }} | rowclass62 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label62 = <div class="ib-country-fake-li">•&nbsp;Land</div> | data62 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}} |{{#if:{{{area_land_km2|}}}{{{area_land_sq_mi|}}} |{{convinfobox|{{{area_land_km2|}}}|km2|{{{area_land_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_land_ha|}}}{{{area_land_acre|}}} |{{convinfobox|{{{area_land_ha|}}}|ha|{{{area_land_acre|}}}|acre|abbr=on}} }} }}{{{area_land_footnote|}}} }} | rowclass63 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label63 = <div class="ib-country-fake-li">•&nbsp;Water</div> | data63 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}} |{{#if:{{{area_water_km2|}}}{{{area_water_sq_mi|}}} |{{convinfobox|{{{area_water_km2|}}}|km2|{{{area_water_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_water_ha|}}}{{{area_water_acre|}}} |{{convinfobox|{{{area_water_ha|}}}|ha|{{{area_water_acre|}}}|acre|abbr=on}} }} }}{{{area_water_footnote|}}} }} | rowclass64 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label64 = <div class="ib-country-fake-li">•&nbsp;Water&nbsp;(%)</div> | data64 = {{{percent_water|}}} | rowclass65 = {{#if:{{{FR_metropole|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label65 = <div class="ib-country-fake-li">•&nbsp;{{{area_label2|}}}</div> | data65 = {{#if:{{{area_label2|}}}| {{{area_data2|}}} }} | rowclass66 = {{#if:{{{FR_metropole|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label66 = <div class="ib-country-fake-li">•&nbsp;{{{area_label3|}}}</div> | data66 = {{#if:{{{area_label3|}}}| {{{area_data3|}}} }} | rowclass67 = {{#if:{{{FR_metropole|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label67 = {{{stat_year1|}}}{{{ref_area1|}}} | data67 = {{#if: {{{stat_area1|}}} | {{convinfobox|{{{stat_area1|}}}|km2||sqmi}} }} | rowclass68 = {{#if:{{{FR_metropole|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label68 = {{{stat_year2|}}}{{{ref_area2|}}} | data68 = {{#if: {{{stat_area2|}}} | {{convinfobox|{{{stat_area2|}}}|km2||sqmi}} }} | rowclass69 = {{#if:{{{FR_metropole|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label69 = {{{stat_year3|}}}{{{ref_area3|}}} | data69 = {{#if: {{{stat_area3|}}} | {{convinfobox|{{{stat_area3|}}}|km2||sqmi}} }} | rowclass70 = {{#if:{{{FR_metropole|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label70 = {{{stat_year4|}}}{{{ref_area4|}}} | data70 = {{#if: {{{stat_area4|}}} | {{convinfobox|{{{stat_area4|}}}|km2||sqmi}} }} | rowclass71 = {{#if:{{{FR_metropole|}}}|mergedrow|mergedbottomrow}} | label71 = {{{stat_year5|}}}{{{ref_area5|}}} | data71 = {{#if: {{{stat_area5|}}} | {{convinfobox|{{{stat_area5|}}}|km2||sqmi}} }} | rowclass72 = mergedrow | label72 = <div class="ib-country-fake-li">•&nbsp;{{{FR_metropole}}}</div> | data72 = {{#if:{{{FR_metropole|}}}| <nowiki /> }} | rowclass73 = mergedrow | label73 = <div class="ib-country-fake-li2">•&nbsp;[[Institut Géographique National|IGN]]{{{FR_foot2|}}}</div> | data73 = {{#if:{{{FR_metropole|}}} |{{#if:{{{FR_IGN_area_km2|}}}{{{FR_IGN_area_sq_mi|}}} |{{convinfobox|{{{FR_IGN_area_km2|}}}|km2|{{{FR_IGN_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_IGN_area_rank|}}}|&#32;([[List of countries and dependencies by area|{{{FR_IGN_area_rank|}}}]])}} }} }} | rowclass89 = mergedbottomrow | label89 = <div class="ib-country-fake-li2">•&nbsp;[[Cadastre]]{{{FR_foot3|}}}</div> | data89 = {{#if:{{{FR_metropole|}}} |{{#if:{{{FR_cadastre_area_km2|}}}{{{FR_cadastre_area_sq_mi|}}} | {{convinfobox|{{{FR_cadastre_area_km2|}}}|km2|{{{FR_cadastre_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_cadastre_area_rank|}}}|&#32;([[List of countries and dependencies by area|{{{FR_cadastre_area_rank|}}}]])}} }} }} | rowclass90 = mergedtoprow | header90 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}} |{{#if:{{{population_link|}}} | {{#ifeq:{{{population_link}}}|no|Population|[[{{{population_link}}}|Population]]}}<!-- -->| {{#ifexist:Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Population]]<!-- -->| Population<!-- -->}}<!-- -->}} }} | rowclass91 = mergedrow | label91 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{population_estimate_year|}}} |{{{population_estimate_year}}} estimate|Estimate}}</div> | data91 = {{#if:{{{population_estimate|}}} |{{{population_estimate}}}<!-- -->{{#if:{{{population_estimate_rank|}}} |&#32;([[List of countries and dependencies by population|{{{population_estimate_rank}}}]])}} }} | rowclass92 = mergedrow | label92= <div class="ib-country-fake-li">•&nbsp;{{{population_label2|}}}</div> | data92= {{#if:{{{population_label2|}}}|{{{population_data2|}}}}} | rowclass93= mergedrow | label93= <div class="ib-country-fake-li">•&nbsp;{{{population_label3|}}}</div> | data93= {{#if:{{{population_label3|}}}|{{{population_data3|}}}}} | rowclass94= mergedrow | data94= {{#if:{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}|{{infobox country/multirow|{{{stat_year1|}}}{{{ref_pop1|}}} |{{{stat_pop1|}}}|{{{stat_year2|}}}{{{ref_pop2|}}} |{{{stat_pop2|}}}|{{{stat_year3|}}}{{{ref_pop3|}}} |{{{stat_pop3|}}}|{{{stat_year4|}}}{{{ref_pop4|}}} |{{{stat_pop4|}}}|{{{stat_year5|}}}{{{ref_pop5|}}} |{{{stat_pop5|}}} }} }} | rowclass95= mergedrow | label95= <div class="ib-country-fake-li">•&nbsp;{{#if:{{{population_census_year|}}} |{{{population_census_year}}}&nbsp;census|Census}}</div> | data95= {{#if:{{{population_census|}}} |{{{population_census}}}<!-- -->{{#if:{{{population_census_rank|}}} |&#32;([[List of countries and dependencies by population|{{{population_census_rank}}}]])}} }} | rowclass96= mergedrow | label96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|{{nobold|1=&nbsp;({{{FR_total_population_estimate_year}}})}}}}}} | data96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|<nowiki />}}}} | rowclass97 = mergedrow | label97= <div class="ib-country-fake-li">•&nbsp;Total{{{FR_foot|}}}</div> | data97= {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate|}}} |{{{FR_total_population_estimate}}}{{#if:{{{FR_total_population_estimate_rank|}}}|&#32;([[List of countries by population in 2005|{{{FR_total_population_estimate_rank}}}]])}} }} }} | rowclass98 = mergedrow | label98= <div class="ib-country-fake-li">•&nbsp;{{{FR_metropole}}}</div> | data98= {{#if:{{{FR_metropole_population|}}}|{{{FR_metropole_population}}}{{#if:{{{FR_metropole_population_estimate_rank|}}} |&#32;([[List of countries by population in 2005|{{{FR_metropole_population_estimate_rank}}}]])}} }} | rowclass99 = mergedbottomrow | label99= <div class="ib-country-fake-li">•&nbsp;Density{{{FR_foot5|}}}</div> | data99= {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}} | {{convinfobox|{{{population_density_km2|}}}|/km2|{{{population_density_sq_mi|}}}|/sqmi|1|abbr=on}}{{{pop_den_footnote|}}}<!-- -->{{#if:{{{population_density_rank|}}} |&#32;([[List of countries and dependencies by population density|{{{population_density_rank}}}]])}} }} | rowclass100 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}|mergedbottomrow|mergedtoprow}} | label100 = Membership | data100= {{{nummembers|}}} | rowclass101= mergedtoprow | label101= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&nbsp;{{nobold|([[Purchasing power parity|PPP]])}} | data101= {{#if:{{{GDP_PPP|}}}{{{GDP_PPP_per_capita|}}} |{{#if:{{{GDP_PPP_year|}}} |{{{GDP_PPP_year}}}&nbsp;}}estimate }} | rowclass102= mergedrow | label102= <div class="ib-country-fake-li">•&nbsp;Total</div> | data102= {{#if:{{{GDP_PPP|}}} |{{{GDP_PPP}}}<!-- -->{{#if:{{{GDP_PPP_rank|}}} |&#32;([[List of countries by GDP (PPP)|{{{GDP_PPP_rank}}}]])}} }} | rowclass103= mergedbottomrow | label103= <div class="ib-country-fake-li">•&nbsp;Per capita</div> | data103= {{#if:{{{GDP_PPP_per_capita|}}} |{{{GDP_PPP_per_capita}}}<!-- -->{{#if:{{{GDP_PPP_per_capita_rank|}}} |&#32;([[List of countries by GDP (PPP) per capita|{{{GDP_PPP_per_capita_rank}}}]])}} }} | rowclass104= mergedtoprow | label104= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&nbsp;{{nobold|(nominal)}} | data104= {{#if:{{{GDP_nominal|}}}{{{GDP_nominal_per_capita|}}} |{{#if:{{{GDP_nominal_year|}}} |{{{GDP_nominal_year}}}&nbsp;}}estimate }} | rowclass105= mergedrow | label105= <div class="ib-country-fake-li">•&nbsp;Total</div> | data105= {{#if:{{{GDP_nominal|}}} |{{{GDP_nominal}}}<!-- -->{{#if:{{{GDP_nominal_rank|}}} |&#32;([[List of countries by GDP (nominal)|{{{GDP_nominal_rank}}}]])}} }} | rowclass106= mergedbottomrow | label106= <div class="ib-country-fake-li">•&nbsp;Per capita</div> | data106= {{#if:{{{GDP_nominal_per_capita|}}} | {{{GDP_nominal_per_capita}}}<!-- -->{{#if:{{{GDP_nominal_per_capita_rank|}}} |&#32;([[List of countries by GDP (nominal) per capita|{{{GDP_nominal_per_capita_rank}}}]])}} }} | label107= [[Gini_coefficient|Gini]]{{#if:{{{Gini_year|}}} |&nbsp;{{nobold|1=({{{Gini_year}}})}}}} | data107= {{#if:{{{Gini|}}} | {{#switch:{{{Gini_change|}}} |increase = {{increaseNegative}}&nbsp;<!-- -->|decrease = {{decreasePositive}}&nbsp;<!-- -->|steady = {{steady}}&nbsp;<!-- -->}}{{{Gini}}}{{{Gini_ref|}}}<br/><!-- ---------Evaluate and add Gini category:---------- -->{{nowrap|1=<!-- -->{{#iferror:<!-- -->{{#ifexpr:{{{Gini}}}>100 <!-- -->| {{error|Error: Gini value above 100}}<!--Handled by outer #iferror, not visible to users--><!-- -->| {{#ifexpr:{{{Gini}}}>=60 |{{color|red|very high}}<!-- -->| {{#ifexpr:{{{Gini}}}>=46 <!-- -->| {{color|darkred|high}}<!-- -->| {{#ifexpr:{{{Gini}}}>=30 <!-- -->| {{color|orange|medium}}<!-- -->| {{#ifexpr:{{{Gini}}}>=0 <!-- -->| {{color|forestgreen|low}}<!-- -->| {{error|Error:Gini value below 0}}<!--Handled by outer #iferror, not visible to users--><!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->| {{error|Error: Invalid Gini value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!-- -->}}<!-- -->}}<!-- -----------Add Gini_rank (if supplied):---------- -->{{#if:{{{Gini_rank|}}} |&nbsp;·&nbsp;[[List of countries by income equality|{{{Gini_rank}}}]]<!-- -->}}<!-- -->}} | label108= [[Human Development Index|HDI]]{{#if:{{{HDI_year|}}} |&nbsp;{{nobold|1=({{{HDI_year}}})}}}} | data108= {{#if:{{{HDI|}}} | {{#switch:{{{HDI_change|}}} |increase = {{increase}}&nbsp;<!-- -->|decrease = {{decrease}}&nbsp;<!-- -->|steady = {{steady}}&nbsp;<!-- -->}}{{{HDI}}}{{{HDI_ref|}}}<br/><!-- ---------Evaluate and add HDI category:--------- -->{{nowrap|1=<!-- -->{{#iferror:<!-- -->{{#ifexpr:{{{HDI}}}>1 <!-- -->| {{error|Error: HDI value greater than 1}}<!--Handled by outer #iferror, not visible to users--><!-- -->| {{#ifexpr:{{{HDI}}}>0.799 <!-- -->| {{color|darkgreen|very high}}<!-- -->| {{#ifexpr:{{{HDI}}}>0.699 <!-- -->| {{color|forestgreen|high}}<!-- -->| {{#ifexpr:{{{HDI}}}>0.549 <!-- -->| {{color|orange|medium}}<!-- -->| {{#ifexpr:{{{HDI}}}>=0.000<!-- -->| {{color|red|low}}<!-- -->| {{error|Error: HDI value less than 0}}<!--Handled by outer #iferror, not visible to users--><!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->| {{error|Error: Invalid HDI value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!-- -->}}<!-- -->}}<!-- ----------Add HDI_rank (if supplied):----------- -->{{#if:{{{HDI_rank|}}} |&nbsp;·&nbsp;[[List of countries by Human Development Index|{{{HDI_rank}}}]]<!-- -->}}<!-- -->}} | label109= {{#ifeq:{{{micronation|}}}|yes|Purported currency|Currency}} | data109= {{#if:{{{currency|}}} | {{{currency}}} {{#if:{{{currency_code|}}} |([[ISO 4217|{{{currency_code}}}]])}} }} | rowclass119= {{#if:{{{utc_offset_DST|}}}{{{DST_note|}}} |mergedtoprow}} | label119= Time zone | data119= {{#if:{{{utc_offset|}}} |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset}}}}} {{#if:{{{time_zone|}}}|({{{time_zone}}})}} |{{{time_zone|}}} }} | rowclass120= {{#if:{{{DST_note|}}} |mergedrow |mergedbottomrow}} | label120= <div class="ib-country-fake-li">•&nbsp;Summer&nbsp;([[Daylight saving time|DST]])</div> | data120= {{#if:{{{utc_offset_DST|}}} |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset_DST}}}}} {{#if:{{{time_zone_DST|}}}|({{{time_zone_DST}}})|{{#if:{{{DST|}}}|({{{DST}}})}}}} |{{#if:{{{time_zone_DST|}}}|{{{time_zone_DST}}}|{{{DST|}}}}} }} | rowclass121= mergedbottomrow | label121= <nowiki /> | data121= {{{DST_note|}}} | label122 = [[Antipodes]] | data122= {{{antipodes|}}} | label123 = Date format | data123= {{{date_format|}}} | label125= [[Left- and right-hand traffic|Driving side]] | data125= {{#if:{{{drives_on|}}} | {{lcfirst:{{{drives_on}}}}} }} | label126= {{#if:{{{calling_code|}}} |{{#ifexist:Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Calling code]] | Calling code }} }} | data126= {{{calling_code|}}} | label127= [[ISO 3166|ISO 3166 code]] | data127= {{#switch:{{{iso3166code|}}} |omit = <!--(do nothing)--> | = <!--if iso3166code is not supplied: -->{{#if:{{{common_name|}}} | {{#if:{{ISO 3166 code|{{{common_name}}}|nocat=true}} | [[ISO 3166-2:{{ISO 3166 code|{{{common_name}}}}}|{{ISO 3166 code|{{{common_name}}}}}]] }} }} |#default = [[ISO 3166-2:{{uc:{{{iso3166code}}}}}|{{uc:{{{iso3166code}}}}}]] }} | label128= [[Country code top-level domain|Internet TLD]] | data128= {{{cctld|}}} | data129 = {{#if:{{{official_website|}}} |<div class="ib-country-website">'''Website'''<br/>{{{official_website}}}</div> }} | data130= {{#if:{{{image_map3|{{{location_map|}}}}}} | {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map3|{{{location_map|}}}}}}|size={{{map3_width|}}}|upright=1.15|alt={{{alt_map3|}}}|title=Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption3|}}}|<div class="ib-country-map-caption3">{{{map_caption3|}}}</div>}} }} | data134 = {{#if:{{{p1|}}}{{{s1|}}} |{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}}} }} | label135 = Today part of | data135 = {{{today|}}} | data136 = {{#if:{{{footnote_a|}}}{{{footnote_b|}}}{{{footnote_c|}}}{{{footnote_d|}}}{{{footnote_e|}}}{{{footnote_f|}}}{{{footnote_g|}}}{{{footnote_h|}}} |<div class="ib-country-fn"><ol class="ib-country-fn-alpha"> {{#if:{{{footnote_a|}}}|<li value=1>{{{footnote_a|}}}</li> }}{{#if:{{{footnote_b|}}}|<li value=2>{{{footnote_b|}}}</li> }}{{#if:{{{footnote_c|}}}|<li value=3>{{{footnote_c|}}}</li> }}{{#if:{{{footnote_d|}}}|<li value=4>{{{footnote_d|}}}</li> }}{{#if:{{{footnote_e|}}}|<li value=5>{{{footnote_e|}}}</li> }}{{#if:{{{footnote_f|}}}|<li value=6>{{{footnote_f|}}}</li> }}{{#if:{{{footnote_g|}}}|<li value=7>{{{footnote_g|}}}</li> }}{{#if:{{{footnote_h|}}}|<li value=8>{{{footnote_h|}}}</li>}} </ol></div>}} | data137 = {{#if:{{{footnote1|}}}{{{footnote2|}}}{{{footnote3|}}}{{{footnote4|}}}{{{footnote5|}}}{{{footnote6|}}}{{{footnote7|}}}{{{footnote8|}}} |<div class="ib-country-fn"><ol class="ib-country-fn-num"> {{#if:{{{footnote1|}}}|<li value=1>{{{footnote1|}}}</li> }}{{#if:{{{footnote2|}}}|<li value=2>{{{footnote2|}}}</li> }}{{#if:{{{footnote3|}}}|<li value=3>{{{footnote3|}}}</li> }}{{#if:{{{footnote4|}}}|<li value=4>{{{footnote4|}}}</li> }}{{#if:{{{footnote5|}}}|<li value=5>{{{footnote5|}}}</li> }}{{#if:{{{footnote6|}}}|<li value=6>{{{footnote6|}}}</li> }}{{#if:{{{footnote7|}}}|<li value=7>{{{footnote7|}}}</li> }}{{#if:{{{footnote8|}}}|<li value=8>{{{footnote8|}}}</li>}} </ol></div>}} | data138 = {{#if:{{{footnotes|}}}|<div class="ib-country-fn">{{{footnotes}}}{{#if:{{{footnotes2|}}}|<br>{{{footnotes2}}}}}</div>}} | belowclass = mergedtoprow noprint | below = {{#if:{{{navbar|}}}| {{navbar|{{{navbar|}}}}} }} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox country with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox country]] with unknown parameter "_VALUE_"|ignoreblank=y| admin_center_type | admin_center | alt_coat | alt_flag | alt_flag2 | alt_map | alt_map2 | alt_map3 | alt_symbol | anthem | anthems | antipodes | area_acre | area_data2 | area_data3 | area_footnote | area_ha | area_km2 | area_label | area_label2 | area_label3 | area_land_acre | area_land_footnote | area_land_ha | area_land_km2 | area_land_sq_mi | area_link | area_rank | area_sq_mi | area_water_acre | area_water_footnote | area_water_ha | area_water_km2 | area_water_sq_mi | border_p1 | border_p2 | border_p3 | border_p4 | border_p5 | border_p6 | border_p7 | border_p8 | border_p9 | border_p10 | border_p11 | border_p12 | border_p13 | border_p14 | border_p15 | border_p16 | border_p17 | border_p18 | border_p19 | border_p20| border_p21 | border_s1 | border_s2 | border_s3 | border_s4 | border_s5 | border_s6 | border_s7 | border_s8 | border_s9 | border_s10 | border_s11 | border_s12 | border_s13 | border_s14 | border_s15 | border_s16 | border_s17 | border_s18 | border_s19 | border_s20 | border_s21 | calling_code | capital_exile | capital_type | capital | cctld | coa_size | coat_alt | common_languages | common_name | conventional_long_name | coordinates | currency_code | currency | date_end | date_event1 | date_event2 | date_event3 | date_event4 | date_event5 | date_event6 | date_event7 | date_event8 | date_event9 | date_event10 | date_format | date_post | date_pre | date_start | demonym | deputy1 | deputy2 | deputy3 | deputy4 | deputy5 | deputy6 | deputy7 | deputy8 | deputy9 | deputy10 | deputy11 | deputy12 | deputy13 | deputy14 | deputy15 | drives_on | DST_note | DST | empire | englishmotto | era | established_date1 | established_date2 | established_date3 | established_date4 | established_date5 | established_date6 | established_date7 | established_date8 | established_date9 | established_date10 | established_date11 | established_date12 | established_date13 | established_date14 | established_date15 | established_date16 | established_date17 | established_date18 | established_date19 | established_date20 | established_event1 | established_event2 | established_event3 | established_event4 | established_event5 | established_event6 | established_event7 | established_event8 | established_event9 | established_event10 | established_event11 | established_event12 | established_event13 | established_event14 | established_event15 | established_event16 | established_event17 | established_event18 | established_event19 | established_event20 | established | ethnic_groups_ref | ethnic_groups_year | ethnic_groups | event_end | event_post | event_pre | event_start | event1 | event2 | event3 | event4 | event5 | event6 | event7 | event8 | event9 | event10 | flag| flag_alt | flag_alt2 | flag_border | flag_caption | flag_caption | flag_p1 | flag_p2 | flag_p3 | flag_p4 | flag_p5 | flag_p6 | flag_p7 | flag_p8 | flag_p9 | flag_p10 | flag_p11 | flag_p12 | flag_p13 | flag_p14 | flag_p15 | flag_p16 | flag_p17 | flag_p18 | flag_p19 | flag_p20 | flag_p21 | flag_s1 | flag_s2 | flag_s3 | flag_s4 | flag_s5 | flag_s6 | flag_s7 | flag_s8 | flag_s9 | flag_s10 | flag_s11 | flag_s12 | flag_s13 | flag_s14 | flag_s15 | flag_s16 | flag_s17 | flag_s18 | flag_s19 | flag_s20 | flag_s21 | flag_size | flag_type | flag_type_article | flag_width | flag2_border | footnote_a | footnote_a | footnote_b | footnote_b | footnote_c | footnote_c | footnote_d | footnote_d | footnote_e | footnote_e | footnote_f | footnote_f | footnote_g | footnote_g | footnote_h | footnote_h | footnote1 | footnote1 | footnote2 | footnote2 | footnote3 | footnote3 | footnote4 | footnote4 | footnote5 | footnote5 | footnote6 | footnote6 | footnote7 | footnote7 | footnote8 | footnote8 | footnotes | footnotes2 | FR_cadastre_area_km2 | FR_cadastre_area_rank | FR_cadastre_area_sq_mi | FR_foot | FR_foot2 | FR_foot3 | FR_foot4 | FR_foot5 | FR_IGN_area_km2 | FR_IGN_area_rank | FR_IGN_area_sq_mi | FR_metropole_population_estimate_rank | FR_metropole_population | FR_metropole | FR_total_population_estimate_rank | FR_total_population_estimate_year | FR_total_population_estimate | GDP_nominal_per_capita_rank | GDP_nominal_per_capita | GDP_nominal_rank | GDP_nominal_year | GDP_nominal | GDP_PPP_per_capita_rank | GDP_PPP_per_capita | GDP_PPP_rank | GDP_PPP_year | GDP_PPP | Gini_change | Gini_rank | Gini_ref | Gini_year | Gini | government_type | HDI_change | HDI_rank | HDI_ref | HDI_year | HDI | house1 | house2 | image_coat | image_flag | image_flag2 | image_map_alt | image_map_caption | image_map_size | image_map | image_map2_alt | image_map2_caption | image_map2_size | image_map2 | image_map3 | image_p1 | image_p2 | image_p3 | image_p4 | image_p5 | image_p6 | image_p7 | image_p8 | image_p9 | image_p10 | image_p11 | image_p12 | image_p13 | image_p14 | image_p15 | image_p16 | image_p17 | image_p18 | image_p19 | image_p20 | image_p21 | image_s1 | image_s2 | image_s3 | image_s4 | image_s5 | image_s6 | image_s7 | image_s8 | image_s9 | image_s10 | image_s11 | image_s12 | image_s13 | image_s14 | image_s15 | image_s16 | image_s17 | image_s18 | image_s19 | image_s20 | image_s21 | image_symbol | iso3166code | languages_sub | languages_type | languages | languages2_sub | languages2_type | languages2 | largest_city | largest_settlement_type | largest_settlement | leader_name1 | leader_name2 | leader_name3 | leader_name4 | leader_name5 | leader_name6 | leader_name7 | leader_name8 | leader_name9 | leader_name10 | leader_name11 | leader_name12 | leader_name13 | leader_name14 | leader_name15 | leader_title1 | leader_title2 | leader_title3 | leader_title4 | leader_title5 | leader_title6 | leader_title7 | leader_title8 | leader_title9 | leader_title10 | leader_title11 | leader_title12 | leader_title13 | leader_title14 | leader_title15 | leader1 | leader2 | leader3 | leader4 | leader5 | leader6 | leader7 | leader8 | leader9 | leader10 | leader11 | leader12 | leader13 | leader14 | leader15 | legislature | life_span | linking_name | location_map | loctext | lower_house | map_caption | map_caption2 | map_caption3 | map_width | map2_width | map3_width | membership_type | membership | micronation | motto | name | national_anthem | national_languages | national_motto | native_name | navbar | nummembers | official_languages | official_website | org_type | other_symbol_type | other_symbol | p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 | p9 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p20 | p21 | patron_saint | patron_saints | percent_water | politics_link | pop_den_footnote | population_census_rank | population_census_year | population_census | population_data2 | population_data3 | population_density_km2 | population_density_rank | population_density_sq_mi | population_estimate_rank | population_estimate_year | population_estimate | population_label2 | population_label3 | population_link | recognised_languages | recognised_national_languages | recognised_regional_languages | recognized_languages | recognized_national_languages | ref_area1 | ref_area2 | ref_area3 | ref_area4 | ref_area5 | ref_pop1 | ref_pop2 | ref_pop3 | ref_pop4 | ref_pop5 | regional_languages | recognized_regional_languages | religion_ref | religion_year | religion | representative1 | representative2 | representative3 | representative4 | representative5 | representative6 | representative7 | representative8 | royal_anthem | flag_anthem | march | national_march | regional_anthem | territorial_anthem | state_anthem | s1 | s2 | s3 | s4 | s5 | s6 | s7 | s8 | s9 | s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 | s18 | s19 | s20 | s21 | sovereignty_note | sovereignty_type | stat_area1 | stat_area2 | stat_area3 | stat_area4 | stat_area5 | stat_pop1 | stat_pop2 | stat_pop3 | stat_pop4 | stat_pop5 | stat_year1 | stat_year2 | stat_year3 | stat_year4 | stat_year5 | status_text | status | symbol| symbol_type_article | symbol_type | symbol_width | text_symbol_type | text_symbol | time_zone_DST | time_zone | title_deputy | title_leader | title_representative | today | type_house1 | type_house2 | upper_house | utc_offset_DST | utc_offset | year_deputy1 | year_deputy2 | year_deputy3 | year_deputy4 | year_deputy5 | year_deputy6 | year_deputy7 | year_deputy8 | year_deputy9 | year_deputy10 | year_deputy11 | year_deputy12 | year_deputy13 | year_deputy14 | year_deputy15 | year_end | year_exile_end | year_exile_start | year_leader1 | year_leader2 | year_leader3 | year_leader4 | year_leader5 | year_leader6 | year_leader7 | year_leader8 | year_leader9 | year_leader10 | year_leader11 | year_leader12 | year_leader13 | year_leader14 | year_leader15 | year_representative1 | year_representative2 | year_representative3 | year_representative4 | year_representative5 | year_representative6 | year_representative7 | year_representative8 | year_start}}{{main other| {{#if:{{both|{{{image_coat|}}}|{{{image_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|A]] }}{{#if:{{both|{{{alt_coat|}}}|{{{alt_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|B]] }}{{#if:{{both|{{{motto|}}}|{{{national_motto|}}}}}|[[Category:Pages using infobox country with syntax problems|C]] }}{{#if:{{both|{{{national_anthem|}}}|{{{anthem|}}}}}|[[Category:Pages using infobox country with syntax problems|D]] }}{{#if:{{both|{{{other_symbol|}}}|{{{text_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|E]] }}{{#if:{{both|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}|[[Category:Pages using infobox country with syntax problems|F]] }}{{#if:{{both|{{{largest_city|}}}|{{{largest_settlement|}}}}}|[[Category:Pages using infobox country with syntax problems|G]] }}{{#if:{{both|{{{recognized_languages|}}}|{{{recognised_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|H]] }}{{#if:{{both|{{{recognized_national_languages|}}}|{{{recognised_national_languages|}}}}}{{both|{{{recognized_regional_languages|}}}|{{{recognised_regional_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|I]] }}{{#if:{{{official_languages|}}}||{{#if:{{{recognized_languages|}}}{{{recognised_languages|}}}{{{recognized_national_languages|}}}{{{recognised_national_languages|}}}{{{recognized_regional_languages|}}}{{{recognised_regional_languages|}}}|[[Category:Pages using infobox country with syntax problems|J]]}} }}{{#if:{{both|{{{area_km2|}}}|{{{area_ha|}}}}}{{both|{{{area_land_km2|}}}|{{{area_land_ha|}}}}}{{both|{{{area_water_km2|}}}|{{{area_water_ha|}}}}}|[[Category:Pages using infobox country with syntax problems|K]] }}{{#if:{{both|{{{DST|}}}|{{{time_zone_DST|}}}}}|[[Category:Pages using infobox country with syntax problems|L]] }}{{#if:{{{time_zone|}}}{{{utc_offset|}}}||{{#if:{{{time_zone_DST|}}}{{{utc_offset_DST|}}}|[[Category:Pages using infobox country with syntax problems|M]]}} }}{{#if:{{both|{{{sovereignty_type|}}}|{{{established|}}} }}|[[Category:Pages using infobox country with syntax problems|O]] }}{{#if:{{{languages|}}}|{{#if:{{{languages_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}} }}{{#if:{{{languages2|}}}|{{#if:{{{languages2_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}} }}{{#if:{{{flag_type|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|T{{PAGENAME}}]] }}{{#if:{{{flag_caption|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|C{{PAGENAME}}]] }}{{#if:{{{symbol_type|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|T{{PAGENAME}}]] }}{{#if:{{{symbol_caption|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|C{{PAGENAME}}]] }}}}<!-- Tracking categories from merge with {{infobox former country}}. After all cats are empty/have been checked, these can be removed. -->{{#if:{{{status_text|}}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Colony|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Exile|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}}}}} }}<!--End of former country tracking cats--><noinclude> {{documentation}} </noinclude> be47d674190a41bd16abfd73bfb38394b5c704f2 Template:Infobox year in country 10 1138 2464 2022-05-26T16:36:36Z w>Peter Ormond 0 wikitext text/x-wiki {{infobox |bodystyle= width:240px; |above= {{#if:{{{country|}}}|<span class="dtstart">{{{year}}}</span> in <span class="location">{{{country}}}</span>|{{PAGENAMEBASE}} }} |aboveclass = summary |label1 = [[Monarch]] |data1 = {{{monarch|}}} |label2 = [[President (government title)|President]] |data2 = {{{president|}}} |label3 = [[Governor-General|Governor-General]] |data3 = {{{governor-general|}}} |label4 = [[Prime minister]] |data4 = {{{pm|}}} |label5 = Population |data5 = {{{population|}}} |label6 = [[Australian of the Year]] |data6 = {{{australian|}}} |label7 =[[Election]]s |data7 = {{{elections|}}} }}<noinclude> {{documentation}} </noinclude> bda07ae65dbe07b8a2ae0e226a4c0674d73604f8 Template:Social democracy sidebar/doc 10 855 1892 2022-06-01T01:34:17Z wikipedia>Paine Ellsworth 0 create /doc page for protected template wikitext text/x-wiki {{Documentation subpage}} {{Social democracy sidebar}} {{caution|{{tl|Social democracy}} exists as an alternate version of this template. Any content changes made here should be made there as well.}} {{collapsible lists option|listnames={{hlist|history|concepts|variants|people|orgs|by region|related}}}} * For Commonwealth spelling ("organisations" as opposed to "organizations") use <code>sp=uk</code>. <includeonly>{{Sandbox other|| <!-- Categories below this line --> [[Category:Socialism sidebar templates]] }}</includeonly> b2065e61a30b381a4ecc5c86c22ec9654a3d0250 Template:Module rating 10 482 1059 2022-06-03T15:10:23Z wikipedia>The Anome 0 Reverted edits by [[Special:Contribs/Dawn PScLim|Dawn PScLim]] ([[User talk:Dawn PScLim|talk]]) to last version by Alexis Jazz wikitext text/x-wiki <includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox | type = notice | image = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]] | alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]] | beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]] | release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]] | protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]] | semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]] }} | style = | textstyle = | text = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }} }} | alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }} }} | beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }} }} | release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }} }} | protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | #default = {{error|Module rating is invalid or not specified.}} }} }}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}}}</includeonly><noinclude> {{module rating|release|nocat=true|demospace=module}} {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go in Wikidata. --> </noinclude> bbd244b3ea2e13ec4c1c810ae44f2f3789a93efc Module:Portal-inline 828 846 1874 2022-06-05T03:25:23Z wikipedia>Hike395 0 automatically call [[Module:Portal/sandbox]] under test + new interface to getImageName Scribunto text/plain -- determine whether we're being called from a sandbox local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) local sandbox = isSandbox and '/sandbox' or '' local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local portalModule = require('Module:Portal'..sandbox) local getImageName = portalModule._image local checkPortals = portalModule._checkPortals local processPortalArgs = portalModule._processPortalArgs local p = {} -- Function to format error message and tracking category -- Arguments: -- errMsg: string, or nil/false if no error -- trackingCat: string for tracking category (or empty string) local function formatError(errMsg, trackingCat) local result = trackingCat or '' if errMsg then local errTag = mw.html.create('span') errTag:addClass("error") errTag:css("font-size",'100%') errTag:wikitext("Error: "..errMsg) result = tostring(errTag)..result end return result end local function image(portal, args) local size = args.size == "tiny" and "16x16px" or "32x28px" return string.format('[[File:%s|class=noviewer|%s]]',getImageName(portal,true), size) end local function link(portal, args) local displayName = "" if not (args.text == "" or args.text == nil) then displayName = args.text elseif args.short then displayName = portal else displayName = portal .. "&#32;portal" end return string.format('[[Portal:%s|%s]]',portal,displayName) end function p._main(portals, args) mw.logObject(args) -- Normalize all arguments if args.redlinks == 'include' then args.redlinks = true end for key, default in pairs({tracking=true,redlinks=false,short=false}) do if args[key] == nil then args[key] = default end args[key] = yesno(args[key], default) end local trackingCat = '' local errMsg = nil -- Check for existing categories, drop if not. -- Possible generate tracking category & error message if needed args.minPortals = args.minPortals or 1 args.maxPortals = args.maxPortals or 1 portals, trackingCat, errMsg = checkPortals(portals,args) -- use more specific tracking cat for inline portal trackingCat = mw.ustring.gsub(trackingCat,"Portal templates","Portal-inline template") -- either too many/few portals, or no portals left after filtering, then return if errMsg or #portals == 0 then return formatError(errMsg, trackingCat) end return image(portals[1],args)..'&nbsp;'..link(portals[1],args)..(trackingCat or '') end function p.main(frame) local origArgs = getArgs(frame) local portals, args = processPortalArgs(origArgs) return p._main(portals, args) end return p 7e394801df5882169db7a3b64af605c5acded536 Template:T 10 478 1051 2022-06-05T04:09:28Z Dinoguy1000 20 not that it matters much, but fix comment closing wikitext text/x-wiki #REDIRECT [[Template:Template link]] {{Rcat shell| {{R from template shortcut}} }} <!-- Used as Template:tl throughout English Wikipedia; demo template referenced only on meta --> bb10dbc83695404528dbc095ea267429142c7f05 Template:Infobox musical artist/hCard class 10 1374 2709 2022-06-06T00:41:07Z w>Paine Ellsworth 0 per edit request on talk page - include variant "person" wikitext text/x-wiki {{#switch: {{{1|}}} | person | solo_singer | non_vocal_instrumentalist | non_performing_personnel = fn | group_or_band | cover_band | classical_ensemble | temporary = fn org | {{{1|fn}}} }}<!-- "fn" for individual people, "fn org" for bands and other groupings) --><noinclude> {{documentation}} </noinclude> ec5e7a594595111e2e301936305a1c1a0d2e1bc4 Template:Country data Cyprus 10 1194 2523 2022-06-08T13:58:32Z w>Terasail 0 Update file location to stop using redirect. Per [[Special:Diff/1092144696|edit request]] wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Cyprus | flag alias = Flag of Cyprus.svg | flag alias-1878 = Flag of the United Kingdom.svg | flag alias-1881 = Flag of Cyprus (1881–1922).svg | flag alias-colonial = Blue Ensign of Cyprus (1922).svg | flag alias-April 1960 = Flag of Cyprus (1960).svg | flag alias-1960 = Flag of Cyprus (1960–2006).svg | link alias-army = Cypriot Ground Forces | size = {{{size|}}} | name = {{{name|}}} | variant = {{{variant|}}} | altlink = {{{altlink|}}} <noinclude> | redir1 = CYP | var1 = 1878 | var2 = 1881 | var3 = colonial | var4 = April 1960 | var5 = 1960 </noinclude> }} 7480d14089e4230b22a47579a3da386902cc7bdd Module:Uses Wikidata 828 594 1336 2022-06-08T17:12:17Z Legoktm 41 fix capitalization of Wikidata and Wikipedia in query output Scribunto text/plain local p = {} function p.usesProperty(frame) local args = frame.getParent(frame).args or nil if mw.text.trim(args[1] or '') == '' then args = frame.args end local result = '<ul>' local ii = 1 while true do local p_num = mw.text.trim(args[ii] or '') if p_num ~= '' then local label = mw.wikibase.getLabel(p_num) or "NO LABEL" result = result .. "<li>[[File:Disc Plain blue dark.svg|middle|4px|link=|alt=]] <b><i>[[d:Property talk:" .. p_num .. "|" .. label .. " (" .. string.upper(p_num) .. ")]]</i></b> (see <span class='plainlinks'>[https://query.wikidata.org/embed.html#SELECT%20%3FWikidata_item_%20%3FWikidata_item_Label%20%3Fvalue%20%3FvalueLabel%20%3FEnglish_Wikipedia_article%20%23Show%20data%20in%20this%20order%0A%7B%0A%09%3FWikidata_item_%20wdt%3A" .. p_num .. "%20%3Fvalue%20.%20%23Collecting%20all%20items%20which%20have%20" .. p_num .. "%20data%2C%20from%20whole%20Wikidata%20item%20pages%0A%09OPTIONAL%20%7B%3FEnglish_Wikipedia_article%20schema%3Aabout%20%3FWikidata_item_%3B%20schema%3AisPartOf%20%3Chttps%3A%2F%2Fen.wikipedia.org%2F%3E%20.%7D%20%23If%20collected%20item%20has%20link%20to%20English%20Wikipedia%2C%20show%20that%0A%09SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20%20%7D%20%23Show%20label%20in%20this%20language.%20%22en%22%20is%20English.%20%20%20%0A%7D%0ALIMIT%201000 uses]</span>)</li>" ii = ii + 1 else break end end result = result.."</ul>" return result end function p.tuProperty(frame) local parent = frame.getParent(frame) local result = '<ul>' local ii = 1 while true do local p_num = mw.text.trim(parent.args[ii] or '') if p_num ~= '' then local label = mw.wikibase.getLabel(p_num) or "NO LABEL" result = result .. "<li><span style='font-size:90%;line-height:1;'>●</span>&nbsp;&nbsp;<b>[[d:Property:" .. p_num .. "|" .. label .. "]]</b> <span style='font-size:90%;'>([[d:Property talk:" .. string.upper(p_num) .. "|" .. p_num .. "]])</span></li>" ii = ii + 1 else break end end result = result.."</ul>" return result end return p 8b704fdbc00fb94538c56f18c5c01f1e72963ea9 Module:Labelled list hatnote 828 105 257 2022-06-08T23:33:35Z wikipedia>Nihiltres 0 Fixed iteration-and-removal bug Scribunto text/plain -------------------------------------------------------------------------------- -- Labelled list -- -- -- -- This module does the core work of creating a hatnote composed of a list -- -- prefixed by a colon-terminated label, i.e. "LABEL: [andList of pages]", -- -- for {{see also}} and similar templates. -- -------------------------------------------------------------------------------- local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local yesno --initialize lazily local p = {} -- Defaults global to this module local defaults = { label = 'See also', --Final fallback for label argument labelForm = '%s: %s', prefixes = {'label', 'label ', 'l'}, template = 'Module:Labelled list hatnote' } -- Localizable message strings local msg = { errorSuffix = '#Errors', noInputWarning = 'no page names specified', noOutputWarning = "'''[[%s]] — no output: none of the target pages exist.'''" } -- Helper function that pre-combines display parameters into page arguments. -- Also compresses sparse arrays, as a desirable side-effect. function p.preprocessDisplays (args, prefixes) -- Prefixes specify which parameters, in order, to check for display options -- They each have numbers auto-appended, e.g. 'label1', 'label 1', & 'l1' prefixes = prefixes or defaults.prefixes local indices = {} local sparsePages = {} for k, v in pairs(args) do if type(k) == 'number' then indices[#indices + 1] = k local display for i = 1, #prefixes do display = args[prefixes[i] .. k] if display then break end end sparsePages[k] = display and string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v end end table.sort(indices) local pages = {} for k, v in ipairs(indices) do pages[#pages + 1] = sparsePages[v] end return pages end --Helper function to get a page target from a processed page string --e.g. "Page|Label" → "Page" or "Target" → "Target" local function getTarget(pagename) local pipe = string.find(pagename, '|') return string.sub(pagename, 0, pipe and pipe - 1 or nil) end -- Produces a labelled pages-list hatnote. -- The main frame (template definition) takes 1 or 2 arguments, for a singular -- and (optionally) plural label respectively: -- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}} -- The resulting template takes pagename & label parameters normally. function p.labelledList (frame) mArguments = require('Module:Arguments') yesno = require('Module:Yesno') local labels = {frame.args[1] or defaults.label} labels[2] = frame.args[2] or labels[1] labels[3] = frame.args[3] --no defaulting labels[4] = frame.args[4] --no defaulting local template = frame:getParent():getTitle() local args = mArguments.getArgs(frame, {parentOnly = true}) local pages = p.preprocessDisplays(args) local options = { category = yesno(args.category), extraclasses = frame.args.extraclasses, ifexists = yesno(frame.args.ifexists), namespace = frame.args.namespace or args.namespace, selfref = yesno(frame.args.selfref or args.selfref), template = template } return p._labelledList(pages, labels, options) end function p._labelledList (pages, labels, options) if options.ifexists then for k = #pages, 1, -1 do --iterate backwards to allow smooth removals local v = pages[k] local title = mw.title.new(getTarget(v), namespace) if (v == '') or title == nil or not title.exists then table.remove(pages, k) end end end labels = labels or {} label = (#pages == 1 and labels[1] or labels[2]) or defaults.label for k, v in pairs(pages) do if mHatnote.findNamespaceId(v) ~= 0 then label = ( #pages == 1 and (labels[3] or labels[1] or defaults.label) or (labels[4] or labels[2] or defaults.label) ) or defaults.label end end if #pages == 0 then if options.ifexists then mw.addWarning( string.format( msg.noOutputWarning, options.template or defaults.template ) ) return '' else return mHatnote.makeWikitextError( msg.noInputWarning, (options.template or defaults.template) .. msg.errorSuffix, options.category ) end end local text = string.format( options.labelForm or defaults.labelForm, label, mHatlist.andList(pages, true) ) local hnOptions = { extraclasses = options.extraclasses, selfref = options.selfref } return mHatnote._hatnote(text, hnOptions) end return p b7a8ba27cf6195e6427701b94e8d2acad3c40a21 Template:Reflist 10 564 1274 2022-06-11T17:42:16Z wikipedia>Izno 0 correct my error per [[Template talk:Reflist#liststyle and group]] wikitext text/x-wiki <templatestyles src="Reflist/styles.css" /><div class="reflist <!-- -->{{#if:{{{1|}}}{{{colwidth|}}}|reflist-columns references-column-width}} <!-- -->{{#switch:{{{liststyle|{{{group|}}}}}}|upper-alpha|upper-roman|lower-alpha|lower-greek|lower-roman=reflist-{{{liststyle|{{{group}}}}}}}} <!-- -->{{#if:{{{1|}}}|{{#iferror:{{#ifexpr: {{{1|1}}} > 1 }}||{{#switch:{{{1|}}}|1=|2=reflist-columns-2|#default=reflist-columns-3}} }}}}" <!-- end class -->{{#if: {{{1|}}}<!-- start style --> | {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} |style="column-width: {{{1}}};"}} | {{#if: {{{colwidth|}}}|style="column-width: {{{colwidth}}};"}} }}> {{#tag:references|{{{refs|}}}|group={{{group|}}}|responsive={{#if:{{{1|}}}{{{colwidth|}}}|0|1}}}}</div>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using reflist with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Reflist]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | colwidth | group | liststyle | refs }}<noinclude> {{Documentation}} </noinclude> 8c65cc88272db6c0f5cf2b49f84d3e460e60ee5f Template:Party color 10 1162 2488 2022-06-11T21:27:11Z w>El C 0 Changed protection settings for "[[Template:Party color]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Political party|fetch|{{{1|}}}|color|error{{#if:{{{error|}}}||_NULL}}={{{error|}}}}}</includeonly><noinclude> {{documentation}} </noinclude> feaa4368067274a1d84c963300852bddc39ad130 Template:Clear 10 26 47 2022-06-13T15:31:11Z Xaosflux 7 Changed protection settings for "[[Template:Clear]]": [[WP:High-risk templates|Highly visible template]]: 3MM+ uses ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki <div style="clear:{{{1|both}}};"></div><noinclude> {{documentation}} </noinclude> 38bab3e3d7fbd3d6800d46556e60bc6bac494d72 Module:Uses TemplateStyles/config 828 489 1083 2022-06-16T15:10:06Z Pppery 6 Matching reality rather than 2018 me's wishful thinking Scribunto text/plain local cfg = {} -- Don’t touch this line. -- Subpage blacklist: these subpages will not be categorized (except for the -- error category, which is always added if there is an error). -- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have -- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules, -- so they *will* have categories. All rules should be in the -- ['<subpage name>'] = true, -- format. cfg['subpage_blacklist'] = { ['doc'] = true, ['sandbox'] = true, ['sandbox2'] = true, ['testcases'] = true, } -- Sandbox title: if the stylesheet’s title is <template>/<stylesheet>.css, the -- stylesheet’s sandbox is expected to be at <template>/<sandbox_title>/<stylesheet>.css -- Set to nil to disable sandbox links. cfg['sandbox_title'] = 'sandbox' -- Error category: this category is added if the module call contains errors -- (e.g. no stylesheet listed). A category name without namespace, or nil -- to disable categorization (not recommended). cfg['error_category'] = 'Uses TemplateStyles templates with errors' -- Default category: this category is added if no custom category is specified -- in module/template call. A category name without namespace, or nil -- to disable categorization. cfg['default_category'] = 'Templates using TemplateStyles' -- Protection conflict category: this category is added if the protection level -- of any stylesheet is lower than the protection level of the template. A category name -- without namespace, or nil to disable categorization (not recommended). cfg['protection_conflict_category'] = 'Templates using TemplateStyles with a different protection level' -- Hierarchy of protection levels, used to determine whether one protection level is lower -- than another and thus should populate protection_conflict_category. No protection is treated as zero cfg['protection_hierarchy'] = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } -- Padlock pattern: Lua pattern to search on protected stylesheets for, or nil -- to disable padlock check. cfg['padlock_pattern'] = '{{pp-' -- Missing padlock category: this category is added if a protected stylesheet -- doesn’t contain any padlock template (specified by the above Lua pattern). -- A category name without namespace (no nil allowed) if the pattern is not nil, -- unused (and thus may be nil) otherwise. cfg['missing_padlock_category'] = 'Templates using TemplateStyles without padlocks' return cfg -- Don’t touch this line. 58e7a37c44f6ea3f6b8af54a559d696cc7256493 Module:Uses TemplateStyles 828 488 1081 2022-06-16T15:13:38Z Pppery 6 Matching reality rather than 2018 me's wishful thinking Scribunto text/plain local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local TNT = require('Module:TNT') local p = {} local function format(msg, ...) return TNT.format('I18n/Uses TemplateStyles', msg, ...) end local function getConfig() return mw.loadData('Module:Uses TemplateStyles/config') end local function renderBox(tStyles) local boxArgs = { type = 'notice', small = true, image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt')) } if #tStyles < 1 then boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist')) else local cfg = getConfig() local tStylesLinks = {} for i, ts in ipairs(tStyles) do local link = string.format('[[:%s]]', ts) local sandboxLink = nil local tsTitle = mw.title.new(ts) if tsTitle and cfg['sandbox_title'] then local tsSandboxTitle = mw.title.new(string.format( '%s:%s/%s/%s', tsTitle.nsText, tsTitle.baseText, cfg['sandbox_title'], tsTitle.subpageText)) if tsSandboxTitle and tsSandboxTitle.exists then sandboxLink = format('sandboxlink', link, ':' .. tsSandboxTitle.prefixedText) end end tStylesLinks[i] = sandboxLink or link end local tStylesList = mList.makeList('bulleted', tStylesLinks) boxArgs.text = format( mw.title.getCurrentTitle():inNamespaces(828,829) and 'header-module' or 'header-template') .. '\n' .. tStylesList end return mMessageBox.main('mbox', boxArgs) end local function renderTrackingCategories(args, tStyles, titleObj) if yesno(args.nocat) then return '' end local cfg = getConfig() local cats = {} -- Error category if #tStyles < 1 and cfg['error_category'] then cats[#cats + 1] = cfg['error_category'] end -- TemplateStyles category titleObj = titleObj or mw.title.getCurrentTitle() if (titleObj.namespace == 10 or titleObj.namespace == 828) and not cfg['subpage_blacklist'][titleObj.subpageText] then local category = args.category or cfg['default_category'] if category then cats[#cats + 1] = category end if not yesno(args.noprotcat) and (cfg['protection_conflict_category'] or cfg['padlock_pattern']) then local currentProt = titleObj.protectionLevels["edit"] and titleObj.protectionLevels["edit"][1] or nil local addedLevelCat = false local addedPadlockCat = false for i, ts in ipairs(tStyles) do local tsTitleObj = mw.title.new(ts) local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then local content = tsTitleObj:getContent() if not content:find(cfg['padlock_pattern']) then cats[#cats + 1] = cfg['missing_padlock_category'] addedPadlockCat = true end end if cfg['protection_conflict_category'] and currentProt and tsProt ~= currentProt and not addedLevelCat then currentProt = cfg['protection_hierarchy'][currentProt] or 0 tsProt = cfg['protection_hierarchy'][tsProt] or 0 if tsProt < currentProt then addedLevelCat = true cats[#cats + 1] = cfg['protection_conflict_category'] end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end function p._main(args, cfg) local tStyles = mTableTools.compressSparseArray(args) local box = renderBox(tStyles) local trackingCategories = renderTrackingCategories(args, tStyles) return box .. trackingCategories end function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end return p 71ca57c37849f38e3c5ee30061bdae730963e48e Template:Portal templates navbox 10 877 1944 2022-06-17T05:03:25Z wikipedia>Hike395 0 rm deprecated template wikitext text/x-wiki {{Navbox | name = Portal templates navbox | title = [[Wikipedia:Portal|Portal]] templates | listclass = hlist | state = {{{state|}}} | image = [[File:Portal.svg|50px]] | above = '''[[Wikipedia:WikiProject Portals/Components|Visual overview of template usage]]''' | group1 = Layout and formatting | list1 = * {{tl|Box portal skeleton}} * {{tl|Box-header}} ** [[Template:Box-header#Box-header_color_palettes|color palettes]] ** [[Template:Box-header-plain|plain]] ** [[Template:Box-header-round|round]] ** [[Template:Box-header-square|square]] ** [[Template:Box-header-watch|watch]] *{{tl|Box-header colour}}<sup>1</sup> *{{tl|Box-footer}} *{{tl|Flex columns}} *{{tl|Plain navboxes}} | group2 = Content transclusion | list2 = * {{tl|Transclude lead excerpt}}<sup>2</sup> * {{tl|Transclude linked excerpt}}<sup>2</sup> * {{tl|Transclude list item excerpt}}<sup>2</sup> * {{tl|Transclude random excerpt}}<sup>2</sup> * {{tl|Transclude selected excerpt}}<sup>2</sup> * {{tl|Excerpt}} * {{tl|Transclude DYK}}<sup>9</sup> * {{tl|Transclude selected current events}}<sup>3</sup> * {{tl|Transclude selected recent additions}}<sup>4</sup> | group3 = Content slideshows | list3 = * {{tl|Random slideshow}}<sup>5</sup> * {{tl|Transclude files as random slideshow}}<sup>5</sup> * {{tl|Transclude excerpts as random slideshow}}<sup>6</sup> * {{tl|Transclude linked excerpts as random slideshow}}<sup>6</sup> * {{tl|Transclude list item excerpts as random slideshow}}<sup>6</sup> | group4 = Content randomisation | list4 = * {{tl|Random portal component}}<sup>7</sup> * {{tl|Random quotation}} * {{tl|Random subpage}} | group5 = General | list5 = * {{tl|Portals}} * {{tl|Portals browsebar}} * {{tl|Portal description}} * {{tl|Portal information sidebar}} * {{tl|Portal navbar no header2}} * {{tl|Purge link portals}} * {{tl|Wikimedia for portals}} | group6 = Linking templates | list6 = * {{tl|Portal}} * {{tl|Portal bar}} * {{tl|Portal-inline}}<sup>11</sup> * {{tl|Pbox}} * {{tl|Related portals2}} | group7 = Talk pages / Maintenance | list7 = * {{tl|Portal talk}} * {{tl|Portal maintenance status}}<sup>8</sup> * {{tl|Portal suggestions}} * {{tl|Portal toolbox}} * {{tl|WikiProject Portals}}<sup>8</sup> | group8 = Images | list8= * {{tl|Portal dynamic image}} * {{tl|Portal image banner}}<sup>10</sup> * {{tl|Portal pictures}}<sup>12</sup> * {{tl|Portal POTD}} | group9 = Modules | list9 = * <sup>1</sup>&thinsp;[[Module:Box-header]] * <sup>2</sup>&thinsp;[[Module:Excerpt/portals]] * <sup>3</sup>&thinsp;[[Module:Selected current events]] * <sup>4</sup>&thinsp;[[Module:Selected recent additions]] * <sup>5</sup>&thinsp;[[Module:Random slideshow]] * <sup>6</sup>&thinsp;[[Module:Excerpt slideshow]] * <sup>7</sup>&thinsp;[[Module:Random portal component]] * <sup>8</sup>&thinsp;[[Module:Portal maintenance status]] * <sup>9</sup>&thinsp;[[Module:Transclude DYK]] * <sup>10</sup>&thinsp;[[Module:Portal image banner]] * <sup>11</sup>&thinsp;[[Module:Portal-inline]] * <sup>12</sup>&thinsp;[[Module:Portal pictures]] | group10 = Usage | list10 = * [[Wikipedia:Portal]] * [[Wikipedia:WikiProject Portals]] | below = ''For more information, see: {{cl|Template-Class Portal pages}} and {{cl|Wikipedia Portal templates}}'' }}<noinclude> {{documentation|content={{Collapsible option}} [[Category:Wikipedia Portal templates| ]] [[Category:Documentation see also templates]] }}</noinclude> ce81e0e88e4b3ebef2ae1365a5dd97095f35e9f9 Template:Script/styles.css 10 1589 2924 2022-06-25T03:46:19Z w>Dpleibovitz 0 protection icon sanitized-css text/css /* {{pp|small=yes}} */ .script-Cprt { font-size: 1.25em; font-family: 'Segoe UI Historic', 'Noto Sans Cypriot', Code2001; /* SMP, rarely supported, state font explicitly */ } .script-Hano { font-size: 125%; font-family: 'Noto Sans Hanunoo', FreeSerif, Quivira; } .script-Latf, .script-de-Latf { font-size: 1.25em; font-family: 'Breitkopf Fraktur', UnifrakturCook, UniFrakturMaguntia, MarsFraktur, 'MarsFraktur OT', KochFraktur, 'KochFraktur OT', OffenbacherSchwabOT, 'LOB.AlteSchwabacher', 'LOV.AlteSchwabacher', 'LOB.AtlantisFraktur', 'LOV.AtlantisFraktur', 'LOB.BreitkopfFraktur', 'LOV.BreitkopfFraktur', 'LOB.FetteFraktur', 'LOV.FetteFraktur', 'LOB.Fraktur3', 'LOV.Fraktur3', 'LOB.RochFraktur', 'LOV.RochFraktur', 'LOB.PostFraktur', 'LOV.PostFraktur', 'LOB.RuelhscheFraktur', 'LOV.RuelhscheFraktur', 'LOB.RungholtFraktur', 'LOV.RungholtFraktur', 'LOB.TheuerbankFraktur', 'LOV.TheuerbankFraktur', 'LOB.VinetaFraktur', 'LOV.VinetaFraktur', 'LOB.WalbaumFraktur', 'LOV.WalbaumFraktur', 'LOB.WeberMainzerFraktur', 'LOV.WeberMainzerFraktur', 'LOB.WieynckFraktur', 'LOV.WieynckFraktur', 'LOB.ZentenarFraktur', 'LOV.ZentenarFraktur'; } .script-en-Latf{ font-size: 1.25em; font-family: Cankama, 'Old English Text MT', 'Textura Libera', 'Textura Libera Tenuis', London; } .script-it-Latf { font-size: 1.25em; font-family: 'Rotunda Pommerania', Rotunda, 'Typographer Rotunda'; } .script-Lina { font-size: 1.25em; font-family: 'Noto Sans Linear A'; } .script-Linb { font-size: 1.25em; font-family: 'Noto Sans Linear B'; } .script-Ugar { font-size: 1.25em; font-family: 'Segoe UI Historic', 'Noto Sans Ugaritic', Aegean; } .script-Xpeo { font-size: 1.25em; font-family: 'Segoe UI Historic', 'Noto Sans Old Persian', Artaxerxes, Xerxes, Aegean; /* Use Xerxes for Old Persian */ } fe0852f472ffbe2b3c3f5faa21f2f3ae633999cc Template:Country data Czech Republic 10 1211 2540 2022-07-03T18:55:09Z w>Paine Ellsworth 0 per edit request on talk page - include flag variant wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Czech Republic | flag alias = Flag of the Czech Republic.svg | flag alias-1990 = Flag of Bohemia.svg | flag alias-air force = Flag of the Czech Air Force.svg | link alias-air force = Czech Air Force | flag alias-army = Flag of the Czech Land Force.svg | link alias-army = Czech Land Forces | size = {{{size|}}} | name = {{{name|}}} | variant = {{{variant|}}} | altlink = {{{altlink|}}} | altvar = {{{altvar|}}} <noinclude> | var1 = 1990 | redir1 = CZE | redir2 = Czechia | related1 = Czechoslovakia | related2 = Bohemia | related3 = Slovakia </noinclude> }} 6c23f290bd62faa6f881f7891d1142783e26ee21 Template:Country data Slovakia 10 1213 2542 2022-07-03T19:06:55Z w>Paine Ellsworth 0 per edit request on talk page - include flag variant wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Slovakia | flag alias = Flag of Slovakia.svg | flag alias-1939 = Flag of Slovakia (1939–1945).svg | flag alias-1990 = Flag of Slovakia (1939–1945).svg | link alias-army = Ground Forces of the Slovak Republic{{!}}Slovak Ground Forces | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1939 | var2 = 1990 | redir1 = SVK | related1 = Czechoslovakia </noinclude> }} e7b28706d1a4e6fc783c1d519d45426534ecb325 Template:Auto short description 10 1266 2600 2022-07-04T08:57:44Z w>Sammi Brie 0 grammar fix wikitext text/x-wiki {{Ombox | type = notice | text = This template {{#if:{{{sometimes|}}}|sometimes{{sp}}}}adds an automatically generated '''[[Wikipedia:Short description|short description]]'''{{#if:{{{category|}}}|{{sp}}({{{category}}})|}}{{#if:{{{conditions|}}}|{{space}}{{{conditions}}}}}. If the automatic short description is not optimal, replace it by adding {{tl|Short description}} at the top of the article. }}<includeonly>{{Subpage other|<!-- do not categorise -->|[[Category:Templates that generate short descriptions{{#if:{{{category|}}}|{{sp}}for {{{category}}}|}}]]}}</includeonly><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 4ef114404749d204ef6574916944eb2d8478640e Template:Country data Spain 10 1189 2518 2022-07-04T17:08:31Z w>Skjoldbro 0 updated air force wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Spain | flag alias = Flag of Spain.svg | flag alias-1506 = Flag of Cross of Burgundy.svg | flag alias-1701 = Bandera de España 1701-1748.svg | flag alias-1748 = Bandera de España 1748-1785.svg | flag alias-1760 = Bandera de España 1760-1785.svg | flag alias-1785 = Flag of Spain (1785–1873, 1875–1931).svg | flag alias-1873 = Flag of the First Spanish Republic.svg | flag alias-1874 = Flag of Spain (1785–1873, 1875–1931).svg | flag alias-1931 = Flag of Spain (1931–1939).svg | flag alias-civil-1931 = Flag of the Second Spanish Republic (plain).svg | flag alias-1936 = Bandera del bando nacional 1936-1938.svg | flag alias-1938 = Flag of Spain (1938–1945).svg | flag alias-1945 = Flag of Spain (1945–1977).svg | flag alias-1977 = Flag of Spain (1977–1981).svg | flag alias-civil = Flag of Spain (Civil).svg | flag alias-civil-1785 = BandMercante1785.svg | flag alias-navy = Flag of Spain.svg | link alias-navy = Spanish Navy | flag alias-marines = Flag of Spain.svg | link alias-marines = Spanish Marine Infantry | flag alias-army = Flag of Spain.svg | link alias-army = Spanish Army | flag alias-naval = Naval Jack of Spain.svg | link alias-naval = Spanish Navy | flag alias-air force = Flag of Spain.svg | link alias-air force = Spanish Air and Space Force | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1506 | var2 = 1701 | var3 = 1748 | var4 = 1760 | var5 = 1785 | var6 = 1873 | var7 = 1874 | var8 = 1931 | var9 = civil-1931 | var10 = 1936 | var11 = 1938 | var12 = 1945 | var13 = 1977 | var14 = civil | var15 = civil-1785 | redir1 = ESP | redir2 = SPA | related1 = Spanish Empire | related2 = Kingdom of Spain | related3 = Spanish Republic | related4 = Spanish State | related5 = Francoist Spain </noinclude> }} a27e5d2bc6539467e8a94c500b05f5caf7b87dff Category:Infobox templates 14 87 221 2022-07-04T17:35:52Z MrJaroslavik 18 [[Category:Templates]] wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Template:Flowlist 10 618 1394 2022-07-06T18:59:15Z 5.43.73.144 0 Undid revision 1096805456 by [[Special:Contributions/5.43.73.144|5.43.73.144]] ([[User talk:5.43.73.144|talk]]) wikitext text/x-wiki <templatestyles src="Flowlist/styles.css" /><div class="flowlist {{{class|}}}" {{#if: {{{style|}}}|style="{{{style}}}"}}>{{#if:{{{1|}}}| {{{1}}} </div>}}<noinclude></div> {{documentation}} </noinclude> 8fab8f03d7353b9e7ebe1b375ebbfc6801f60bdb Template:Round 10 1444 2779 2022-07-09T01:53:46Z w>Neveselbert 0 safesubst wikitext text/x-wiki <includeonly>{{safesubst<noinclude/>:#iferror:{{#expr:{{{2|0}}}}} | {{main other|[[Category:Pages with bad rounding precision]]}}{{hid|Bad rounding here}}<!-- -->{{safesubst<noinclude/>:#invoke:Math|precision_format| {{{1}}} | 1-{{order of magnitude|{{{1}}}}} }}| {{safesubst<noinclude/>:#invoke:Math|precision_format| {{{1}}} | {{{2|0}}}}}}}</includeonly><noinclude> {{documentation}} </noinclude> 9c2874586b74824fe1beb6830b56eabe7ad936ce Template:Dmbox/styles.css 10 1579 2914 2022-07-09T23:19:50Z w>Izno 0 move type here sanitized-css text/css /* {{pp-template}} */ .dmbox { display: flex; align-items: center; clear: both; margin: 0.9em 1em; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; padding: 0.25em 0.35em; font-style: italic; } .dmbox > * { flex-shrink: 0; margin: 0 0.25em; } .dmbox-body { flex-grow: 1; flex-shrink: 1; padding: 0.1em 0; } .dmbox-invalid-type { text-align: center; } fc3d6254fb13a6335a9b149f480301e676893c5f Template:Dmbox 10 1578 2913 2022-07-09T23:19:54Z w>Izno 0 remove invitations for custom styles that are coincidentally totally unused in template space, move invalid type to class wikitext text/x-wiki <templatestyles src="Dmbox/styles.css" /> <div role="note" id=" {{#switch:{{{type|}}} | setindex = setindexbox | disambig | #default = disambigbox }}" class="metadata plainlinks dmbox {{#switch:{{{type|}}} | setindex = dmbox-setindex | disambig | #default = dmbox-disambig }} {{{class|}}}">{{#ifeq:{{{image|}}}|none| | {{#if:{{{image|}}} | <div>{{{image}}}</div> | [[File:{{#switch:{{{type|}}} | setindex = DAB list gray.svg | disambig <!-- disambig = default --> | #default = Disambig gray.svg }}|30px|alt=Disambiguation icon]] }} }}<div class="dmbox-body">{{{text}}}</div>{{#if:{{{imageright|}}}|<div>{{{imageright}}}</div>}} </div><!-- Detect and report usage with faulty "type" parameter: -->{{#switch:{{{type|}}} | <!-- No type fed, is also valid input --> | disambig | setindex = <!-- Do nothing, valid "type" --> | #default = <div class="dmbox-invalid-type">This message box is using an invalid "type={{{type|}}}" parameter and needs fixing.</div>[[Category:Wikipedia message box parameter needs fixing|{{main other|Main:}}{{FULLPAGENAME}}]]<!-- Sort on namespace --> }}<!-- Magic word for disambiguation pages: -->{{#if:{{{nocat|}}}||{{#ifeq:{{{type|}}}|disambig|__DISAMBIG__|}}}}<!-- Categorization: -->{{#switch:{{{type|}}} | setindex = {{category handler | main = [[Category:All set index articles]] | nocat = {{{nocat|}}} <!--So "nocat=true" works--> | page = {{{page|}}} <!--For testing--> }} | disambig <!-- disambig = default --> | #default = {{category handler | main = [[Category:All article disambiguation pages]][[Category:All disambiguation pages]] | template = <!-- Don't categorize on template pages. --> | other = [[Category:All disambiguation pages]] | nocat = {{{nocat|}}} <!--So "nocat=true" works--> | page = {{{page|}}} <!--For testing--> }} }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! --> </noinclude> 4c9c79a614028b3fff2ae17bc227ba6144d926d6 Module:Message box/imbox.css 828 1319 2654 2022-07-09T23:27:41Z w>Izno 0 move margin 10% to media query sanitized-css text/css /* {{pp|small=y}} */ .imbox { margin: 4px 0; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } /* For imboxes inside imbox-text cells. */ .imbox .mbox-text .imbox { margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ /* TODO: Still needed? */ display: block; /* Fix for webkit to force 100% width. */ } .imbox-speedy { border: 3px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .imbox-delete { border: 3px solid #b32424; /* Red */ } .imbox-content { border: 3px solid #f28500; /* Orange */ } .imbox-style { border: 3px solid #fc3; /* Yellow */ } .imbox-move { border: 3px solid #9932cc; /* Purple */ } .imbox-protection { border: 3px solid #a2a9b1; /* Gray-gold */ } .imbox-license { border: 3px solid #88a; /* Dark gray */ background-color: #f7f8ff; /* Light gray */ } .imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } .imbox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .imbox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .imbox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .imbox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .imbox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .imbox { margin: 4px 10%; } } 1e82a3c342695a9b4fbdcc4e5e0930d4845a23d4 Template:Generic template demo 10 201 456 2022-07-10T21:03:19Z wikipedia>Aidan9382 0 +{{R semiprotected}} wikitext text/x-wiki #REDIRECT [[Template:Parameter names example]] {{R semiprotected}} [[Category:Wikipedia utility templates]] [[Category:Template namespace templates]] [[Category:Documentation assistance templates]] 22f645541f749cfd0eeffdee734b51b284103400 Module:Message box/tmbox.css 828 1329 2664 2022-07-11T18:36:42Z w>Izno 0 remove min-widths on tmbox that seem exclusive to tmbox, move tmbox-small to min-width 720px sanitized-css text/css /* {{pp|small=y}} */ .tmbox { margin: 4px 0; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background-color: #f8eaba; box-sizing: border-box; } /* For the "small=yes" option. */ .tmbox.mbox-small { font-size: 88%; line-height: 1.25em; } .tmbox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .tmbox-delete { border: 2px solid #b32424; /* Red */ } .tmbox-content { border: 2px solid #f28500; /* Orange */ } .tmbox-style { border: 2px solid #fc3; /* Yellow */ } .tmbox-move { border: 2px solid #9932cc; /* Purple */ } .tmbox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .tmbox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .tmbox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .tmbox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .tmbox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .tmbox { margin: 4px 10%; } .tmbox.mbox-small { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; width: 238px; } } eaa4546995ebb3a8d20394cad8af74ea477bdb44 Module:Message box/ombox.css 828 73 141 2022-07-11T18:40:17Z wikipedia>Izno 0 and move mbox-small to 720px here as well text text/plain /* {{pp|small=y}} */ .ombox { margin: 4px 0; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } /* For the "small=yes" option. */ .ombox.mbox-small { font-size: 88%; line-height: 1.25em; } .ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ombox-delete { border: 2px solid #b32424; /* Red */ } .ombox-content { border: 1px solid #f28500; /* Orange */ } .ombox-style { border: 1px solid #fc3; /* Yellow */ } .ombox-move { border: 1px solid #9932cc; /* Purple */ } .ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } .ombox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .ombox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .ombox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .ombox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ombox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .ombox { margin: 4px 10%; } .ombox.mbox-small { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; width: 238px; } } 8fe3df4bb607e699eab2dbd23bd4a1a446391002 Module:Location map/data/doc 828 1636 2987 2022-07-12T02:55:19Z wikipedia>Paine Ellsworth 0 add [[WP:RCAT|rcat template]] wikitext text/x-wiki #REDIRECT [[Template:Location map data documentation]] {{Redirect category shell| {{R from move}} {{R from documentation page}} }} e51e2661650b2ce62f1b5840282f71fc1c8e86d5 Module:Message box/ambox.css 828 1017 2230 2022-07-12T15:25:07Z wikipedia>Izno 0 hack around mf being opinionated sanitized-css text/css /* {{pp|small=y}} */ .ambox { border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } /* Single border between stacked boxes. Take into account base templatestyles, * user styles, and Template:Dated maintenance category. * remove link selector when T200206 is fixed */ .ambox + link + .ambox, .ambox + link + style + .ambox, .ambox + link + link + .ambox, /* TODO: raise these as "is this really that necessary???". the change was Dec 2021 */ .ambox + .mw-empty-elt + link + .ambox, .ambox + .mw-empty-elt + link + style + .ambox, .ambox + .mw-empty-elt + link + link + .ambox { margin-top: -1px; } /* For the "small=left" option. */ /* must override .ambox + .ambox styles above */ html body.mediawiki .ambox.mbox-small-left { /* @noflip */ margin: 4px 1em 4px 0; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } .ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } .ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } .ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } .ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } .ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } .ambox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.5em; width: 100%; } .ambox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.5em; text-align: center; } .ambox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.5em 2px 0; text-align: center; } /* An empty narrow cell */ .ambox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ambox .mbox-image-div { width: 52px; } /* Hack around MobileFrontend being opinionated */ html.client-js body.skin-minerva .mbox-text-span { margin-left: 23px !important; } @media (min-width: 720px) { .ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ } } 29898fdc5160b39a8f580c76efe77afa1f6f58a4 Module:Message box/cmbox.css 828 1332 2667 2022-07-15T21:26:29Z w>Izno 0 remove the special speedy margins sanitized-css text/css /* {{pp|small=y}} */ .cmbox { margin: 3px 0; border-collapse: collapse; border: 1px solid #a2a9b1; background-color: #dfe8ff; /* Default "notice" blue */ box-sizing: border-box; } .cmbox-speedy { border: 4px solid #b32424; /* Red */ background-color: #ffdbdb; /* Pink */ } .cmbox-delete { background-color: #ffdbdb; /* Pink */ } .cmbox-content { background-color: #ffe7ce; /* Orange */ } .cmbox-style { background-color: #fff9db; /* Yellow */ } .cmbox-move { background-color: #e4d8ff; /* Purple */ } .cmbox-protection { background-color: #efefe1; /* Gray-gold */ } .cmbox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .cmbox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .cmbox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .cmbox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .cmbox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .cmbox { margin: 3px 10%; } } 95109477b86803acfea977ae0bce2319e72f170d Template:Infobox military person 10 1140 2466 2022-07-20T12:03:40Z w>S.A. Julio 0 allow for optional larger embedded header to match output of similar embedded infoboxes wikitext text/x-wiki {{Infobox | child = {{lc:{{{embed}}}}} | bodyclass = vcard | bodystyle = {{WPMILHIST Infobox style|{{#switch:{{{width_style|}}}|narrow|person|auto=main_box_raw_auto_width|wide|military|#default=main_box_raw}}}} | subheaderstyle = font-weight:bold; | subheader = {{#ifeq:{{lc:{{{embed}}}}}|yes|{{if empty|{{{embed_title|}}}|{{#ifeq:{{{embed_title_large|}}}|yes|<div style="text-align: center; font-size: 125%; line-height: 1.2em; font-weight: bold;">Military career</div>|Military career}}}}}} | decat = yes <!-- remove from template:infobox tracking categories --> | above = {{br separated entries |1={{#if:{{{honorific prefix|{{{honorific_prefix|}}}}}}|<div class="honorific-prefix" style="font-size: 77%; font-weight: normal;display:inline;">{{{honorific prefix|{{{honorific_prefix|}}}}}}</div>}} |2={{#if:{{{name|<includeonly>{{PAGENAME}}</includeonly>}}}|<div style="display:inline" class="fn">{{{name|{{PAGENAMEBASE}}}}}</div>}} |3={{#if:{{{honorific suffix|{{{honorific_suffix|}}}}}}|<div class="honorific-suffix" style="font-size: 77%; font-weight: normal;display:inline;">{{{honorific suffix|{{{honorific_suffix|}}}}}}</div>}} }} | abovestyle = font-size:125%; {{WPMILHIST Infobox style|header_color}} | image = {{#if:{{{image|}}} |{{#ifeq:{{Str left | {{{image|}}} | 1 }}|[|{{main other|[[Category:Infobox military person image param needs updating]]}}}}{{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{alt|}}}|suppressplaceholder=yes}} |{{#if:{{{medal|}}} |{{#ifeq:{{Str left | {{{medal|}}} | 1 }}|[|{{main other|[[Category:Infobox military person image param needs updating]]}}}}{{#invoke:InfoboxImage|InfoboxImage|image={{{medal|}}}|size={{{medal_size|}}}|sizedefault=frameless|upright={{{medal_upright|0.4}}}|alt={{{medal_alt|}}}|suppressplaceholder=yes}} }} }} | imagestyle = border-bottom: {{WPMILHIST Infobox style|section_border}}; line-height: 1.5em | caption = {{{caption|}}} | captionstyle = font-size: 100% | labelstyle = padding-right: 1em | label1 = Native name | data1 = {{#if:{{{native_name|}}}|<div class="nickname" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div> }} | label2 = Birth name | data2 = {{{birth_name|}}} | class2 = nickname | label3 = Other name(s) | data3 = {{{other_name|}}} | class3 = nickname | label4 = Nickname(s) | data4 = {{{nickname|}}} | class4 = nickname | label5 = Born | data5 = {{br separated entries | {{{birth_date|}}} | {{{birth_place|}}} }} | label6 = Died | data6 = {{br separated entries | {{{death_date|}}} | {{{death_place|}}} }} | label7 = {{#if:{{{placeofburial_label|}}}|{{{placeofburial_label}}}|Buried}} | data7 = {{#if:{{{placeofburial|}}}{{{placeofburial_coordinates|}}}|<div style="display:inline" class="label">{{{placeofburial|}}}</div> {{#if:{{{placeofburial_coordinates|}}}|{{{placeofburial_coordinates}}}}}}} | label8 = Allegiance | data8 = {{{allegiance|}}} | label9 = {{#if:{{{branch_label|}}}|{{{branch_label}}}|Service/<wbr/>branch}} | data9 = {{{branch|}}} | label10 = {{#if:{{{serviceyears_label|}}}|{{{serviceyears_label|}}}|Years&nbsp;of service}} | data10 = {{{serviceyears|}}} | label11 = {{#if:{{{rank_label|}}}|{{{rank_label|}}}|Rank}} | data11 = {{{rank|}}} | label12 = [[Service number]] | data12 = {{{servicenumber|}}} | label13 = {{#if:{{{unit_label|}}}|{{{unit_label|}}}|Unit}} | data13 = {{{unit|}}} | label14 = Commands held | data14 = {{{commands|}}} | label15 = Known&nbsp;for | data15 = {{{known for|{{{known_for|{{{known|}}}}}}}}} | label16 = {{#if:{{{battles_label|}}}|{{{battles_label|}}}|Battles/wars}} | data16 = {{{battles|}}} | label17 = Awards | data17 = {{{awards|}}} | label18 = Memorials | data18 = {{{memorials|}}} | label19 = [[Alma mater]] | data19 = {{{alma_mater|}}} | label20 = Spouse(s) | data20 = {{{spouse|}}} | label21 = Children | data21 = {{{children|}}} | label22 = Relations | data22 = {{{relations|}}} | label23 = Other&nbsp;work | data23 = {{{otherwork|{{{laterwork|}}}}}} | label24 = Signature | data24 = {{#invoke:InfoboxImage|InfoboxImage|image={{{signature|}}}|size={{{signature_size|}}}|sizedefault=100px|alt={{{signature alt|{{{signature_alt|}}}}}}}} | label25 = {{#if:{{{website|{{{homepage|{{{URL|}}}}}}}}}|Website}} | data25 = {{{website|{{{homepage|{{{URL|}}}}}}}}} | data26 = {{{module|}}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox military person with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox military person]] with unknown parameter "_VALUE_"|ignoreblank=y| allegiance | alma_mater | alt | awards | battles | battles_label | birth_date | birth_name | birth_place | branch | branch_label | caption | children | commands | death_date | death_place | embed | embed_title | embed_title_large | homepage | honorific prefix | honorific suffix | honorific_prefix | honorific_suffix | image | image_size | image_upright | known | known_for | laterwork | medal | medal_size | medal_upright | medal_alt | memorials | module | name | native_name | native_name_lang | nickname | other_name | otherwork | placeofburial | placeofburial_coordinates | placeofburial_label | rank | rank_label | relations | servicenumber | serviceyears | serviceyears_label | signature | signature alt | signature_alt | signature_size | spouse | unit | unit_label | URL | website | width_style }}{{#if:{{both|{{{image|}}}|{{{medal|}}}}}|[[Category:Pages using infobox military person with both image and medal]] }}{{main other|{{#if:{{{embed|}}}|[[Category:Pages using infobox military person with embed|{{#if:{{{embed_title|}}}|Τ}}{{FULLPAGENAME}}]] }}}}<noinclude>{{documentation}}</noinclude> 40ed85ca511488b15f19cbf9112a5bf680bef61b Template:Start date and age 10 1460 2795 2022-07-21T11:34:00Z w>Wbm1058 0 editors are pulling Wikidata to use for this template's parameters and often there is no date in Wikidata. This is considered "normal" so just return a blank when parameters 1, 2 and 3 are missing rather than an error. See [[Template:Start date and age/testcases#Empty/Missing parameters]] wikitext text/x-wiki <includeonly><!-- IMPLEMENTATION OF DATE -->{{#if: {{{1|}}}<!-- -->|{{#if: {{{2|}}}<!-- -->|{{#if: {{{3|}}}<!-- -->|{{#ifeq:{{yesno|{{{df|no}}}}}|yes<!-- -->|{{#expr:{{{3}}}}}&nbsp;{{MONTHNAME|{{{2}}}}}<!-- -->|{{MONTHNAME|{{{2}}}}}&nbsp;{{#expr:{{{3}}}}},<!-- -->}} {{{1}}}<!-- -->|{{MONTHNAME|{{{2}}}}}&nbsp;{{{1}}}<!-- -->}}<!-- -->|{{{1}}}<!-- -->}}<!-- --><span class="noprint">{{#ifeq:{{yesno|{{{paren|{{{p|no}}}}}}}}|yes||&#059;}}<!-- -->{{#ifeq:{{yesno|{{{br|no}}}}}|yes|<br/>|&#032;}}<!-- -->{{#ifeq:{{yesno|{{{paren|{{{p|no}}}}}}}}|yes|(}}<!-- -->{{#if: {{{2|}}}<!-- -->|{{#if: {{{3|}}}<!-- -->|{{time ago|{{{1}}}-{{{2}}}-{{{3}}}|min_magnitude=days}}<!-- -->|{{years or months ago|{{{1}}}|{{#time:n|1-{{trim|{{{2}}}}}-1}}}}<!-- -->}}<!-- -->|{{#iferror:{{#expr:{{{1}}}}}<!-- -->|{{time ago|{{{1}}}|min_magnitude=days}}<!-- -->|{{years or months ago|{{{1}}}}}<!-- -->}}<!-- -->}}<!-- -->{{#ifeq:{{yesno|{{{paren|{{{p|no}}}}}}}}|yes|)}}</span><!-- -->|<!--first parameter is missing.-->{{#if: {{{2|}}}|{{Error|Error: first parameter is missing.|tag=span}}<!-- -->|{{#if: {{{3|}}}|{{Error|Error: first parameter is missing.|tag=span}} }} }}<!-- -->}}<!-- IMPLEMENTATION OF microformat date classes --><span style="display:none">&#160;(<span class="{{#ifeq:{{yesno|{{{end|no}}}}}|yes|dtend|bday dtstart published updated}}"><!-- -->{{#if: {{{1|}}}<!-- -->|{{{1}}}<!-- -->{{#if: {{{2|}}}<!-- -->| -{{#time:m|1-{{trim|{{{2}}}}}-1}}<!-- -->{{#if: {{{3|}}}<!-- -->| -{{padleft:{{{3}}}|2|0}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- --></span>)</span></includeonly><noinclude> {{documentation}} </noinclude> 08be06a2e067095a02918bec2fb734a7fb72e739 Template:Legend 10 1103 2405 2022-07-21T13:18:40Z wikipedia>TheDJ 0 don't invert wikitext text/x-wiki <includeonly><!-- --><templatestyles src="Legend/styles.css" /><!-- --><div class="legend"><!-- --><span class="legend-color mw-no-invert" style="<!-- -->{{#if:{{{border|}}}|border: {{{border}}};|{{#if:{{{outline|}}}|border: 1px solid {{{outline}}};}}}}<!-- -->{{#if:{{{1|}}}|{{greater color contrast ratio|{{{1}}}|white|black|css=y}}}}<!-- -->{{#if:{{{textcolor|}}}|color:{{{textcolor}}};}}<!-- -->{{#if:{{{size|}}}|font-size:{{{size}}};}}"><!-- -->{{#if:{{{text|}}}{{{alt|}}} | <span class="legend-text" style="{{#if:{{{alt|}}}|color:{{{1|}}};}}font-family: monospace, monospace;">{{If empty|{{{alt|}}}|{{{text|}}}|&nbsp;}}</span>|&nbsp;}}<!-- --></span><!-- -->&nbsp;{{{2|}}}<!-- --></div><!-- --></includeonly><noinclude> {{Documentation}} </noinclude> bbd1ff4b07414421f82b44f2eabe760b816e56e2 Module:Text 828 176 405 2022-07-21T16:43:48Z wikipedia>Hike395 0 update date Scribunto text/plain local yesNo = require("Module:Yesno") local Text = { serial = "2022-07-21", suite = "Text" } --[=[ Text utilities ]=] -- local globals local PatternCJK = false local PatternCombined = false local PatternLatin = false local PatternTerminated = false local QuoteLang = false local QuoteType = false local RangesLatin = false local SeekQuote = false local function initLatinData() if not RangesLatin then RangesLatin = { { 7, 687 }, { 7531, 7578 }, { 7680, 7935 }, { 8194, 8250 } } end if not PatternLatin then local range PatternLatin = "^[" for i = 1, #RangesLatin do range = RangesLatin[ i ] PatternLatin = PatternLatin .. mw.ustring.char( range[ 1 ], 45, range[ 2 ] ) end -- for i PatternLatin = PatternLatin .. "]*$" end end local function initQuoteData() -- Create quote definitions if not QuoteLang then QuoteLang = { af = "bd", ar = "la", be = "labd", bg = "bd", ca = "la", cs = "bd", da = "bd", de = "bd", dsb = "bd", et = "bd", el = "lald", en = "ld", es = "la", eu = "la", -- fa = "la", fi = "rd", fr = "laSPC", ga = "ld", he = "ldla", hr = "bd", hsb = "bd", hu = "bd", hy = "labd", id = "rd", is = "bd", it = "ld", ja = "x300C", ka = "bd", ko = "ld", lt = "bd", lv = "bd", nl = "ld", nn = "la", no = "la", pl = "bdla", pt = "lald", ro = "bdla", ru = "labd", sk = "bd", sl = "bd", sq = "la", sr = "bx", sv = "rd", th = "ld", tr = "ld", uk = "la", zh = "ld", ["de-ch"] = "la", ["en-gb"] = "lsld", ["en-us"] = "ld", ["fr-ch"] = "la", ["it-ch"] = "la", ["pt-br"] = "ldla", ["zh-tw"] = "x300C", ["zh-cn"] = "ld" } end if not QuoteType then QuoteType = { bd = { { 8222, 8220 }, { 8218, 8217 } }, bdla = { { 8222, 8220 }, { 171, 187 } }, bx = { { 8222, 8221 }, { 8218, 8217 } }, la = { { 171, 187 }, { 8249, 8250 } }, laSPC = { { 171, 187 }, { 8249, 8250 }, true }, labd = { { 171, 187 }, { 8222, 8220 } }, lald = { { 171, 187 }, { 8220, 8221 } }, ld = { { 8220, 8221 }, { 8216, 8217 } }, ldla = { { 8220, 8221 }, { 171, 187 } }, lsld = { { 8216, 8217 }, { 8220, 8221 } }, rd = { { 8221, 8221 }, { 8217, 8217 } }, x300C = { { 0x300C, 0x300D }, { 0x300E, 0x300F } } } end end -- initQuoteData() local function fiatQuote( apply, alien, advance ) -- Quote text -- Parameter: -- apply -- string, with text -- alien -- string, with language code -- advance -- number, with level 1 or 2 local r = apply and tostring(apply) or "" alien = alien or "en" advance = tonumber(advance) or 0 local suite initQuoteData() local slang = alien:match( "^(%l+)-" ) suite = QuoteLang[alien] or slang and QuoteLang[slang] or QuoteLang["en"] if suite then local quotes = QuoteType[ suite ] if quotes then local space if quotes[ 3 ] then space = "&#160;" else space = "" end quotes = quotes[ advance ] if quotes then r = mw.ustring.format( "%s%s%s%s%s", mw.ustring.char( quotes[ 1 ] ), space, apply, space, mw.ustring.char( quotes[ 2 ] ) ) end else mw.log( "fiatQuote() " .. suite ) end end return r end -- fiatQuote() Text.char = function ( apply, again, accept ) -- Create string from codepoints -- Parameter: -- apply -- table (sequence) with numerical codepoints, or nil -- again -- number of repetitions, or nil -- accept -- true, if no error messages to be appended -- Returns: string local r = "" apply = type(apply) == "table" and apply or {} again = math.floor(tonumber(again) or 1) if again < 1 then return "" end local bad = { } local codes = { } for _, v in ipairs( apply ) do local n = tonumber(v) if not n or (n < 32 and n ~= 9 and n ~= 10) then table.insert(bad, tostring(v)) else table.insert(codes, math.floor(n)) end end if #bad > 0 then if not accept then r = tostring( mw.html.create( "span" ) :addClass( "error" ) :wikitext( "bad codepoints: " .. table.concat( bad, " " )) ) end return r end if #codes > 0 then r = mw.ustring.char( unpack( codes ) ) if again > 1 then r = r:rep(again) end end return r end -- Text.char() local function trimAndFormat(args, fmt) local result = {} if type(args) ~= 'table' then args = {args} end for _, v in ipairs(args) do v = mw.text.trim(tostring(v)) if v ~= "" then table.insert(result,fmt and mw.ustring.format(fmt, v) or v) end end return result end Text.concatParams = function ( args, apply, adapt ) -- Concat list items into one string -- Parameter: -- args -- table (sequence) with numKey=string -- apply -- string (optional); separator (default: "|") -- adapt -- string (optional); format including "%s" -- Returns: string local collect = { } return table.concat(trimAndFormat(args,adapt), apply or "|") end -- Text.concatParams() Text.containsCJK = function ( s ) -- Is any CJK code within? -- Parameter: -- s -- string -- Returns: true, if CJK detected s = s and tostring(s) or "" if not patternCJK then patternCJK = mw.ustring.char( 91, 4352, 45, 4607, 11904, 45, 42191, 43072, 45, 43135, 44032, 45, 55215, 63744, 45, 64255, 65072, 45, 65103, 65381, 45, 65500, 131072, 45, 196607, 93 ) end return mw.ustring.find( s, patternCJK ) ~= nil end -- Text.containsCJK() Text.removeDelimited = function (s, prefix, suffix) -- Remove all text in s delimited by prefix and suffix (inclusive) -- Arguments: -- s = string to process -- prefix = initial delimiter -- suffix = ending delimiter -- Returns: stripped string s = s and tostring(s) or "" prefix = prefix and tostring(prefix) or "" suffix = suffix and tostring(suffix) or "" local prefixLen = mw.ustring.len(prefix) local suffixLen = mw.ustring.len(suffix) if prefixLen == 0 or suffixLen == 0 then return s end local i = s:find(prefix, 1, true) local r = s local j while i do j = r:find(suffix, i + prefixLen) if j then r = r:sub(1, i - 1)..r:sub(j+suffixLen) else r = r:sub(1, i - 1) end i = r:find(prefix, 1, true) end return r end Text.getPlain = function ( adjust ) -- Remove wikisyntax from string, except templates -- Parameter: -- adjust -- string -- Returns: string local r = Text.removeDelimited(adjust,"<!--","-->") r = r:gsub( "(</?%l[^>]*>)", "" ) :gsub( "'''", "" ) :gsub( "''", "" ) :gsub( "&nbsp;", " " ) return r end -- Text.getPlain() Text.isLatinRange = function (s) -- Are characters expected to be latin or symbols within latin texts? -- Arguments: -- s = string to analyze -- Returns: true, if valid for latin only s = s and tostring(s) or "" --- ensure input is always string initLatinData() return mw.ustring.match(s, PatternLatin) ~= nil end -- Text.isLatinRange() Text.isQuote = function ( s ) -- Is this character any quotation mark? -- Parameter: -- s = single character to analyze -- Returns: true, if s is quotation mark s = s and tostring(s) or "" if s == "" then return false end if not SeekQuote then SeekQuote = mw.ustring.char( 34, -- " 39, -- ' 171, -- laquo 187, -- raquo 8216, -- lsquo 8217, -- rsquo 8218, -- sbquo 8220, -- ldquo 8221, -- rdquo 8222, -- bdquo 8249, -- lsaquo 8250, -- rsaquo 0x300C, -- CJK 0x300D, -- CJK 0x300E, -- CJK 0x300F ) -- CJK end return mw.ustring.find( SeekQuote, s, 1, true ) ~= nil end -- Text.isQuote() Text.listToText = function ( args, adapt ) -- Format list items similar to mw.text.listToText() -- Parameter: -- args -- table (sequence) with numKey=string -- adapt -- string (optional); format including "%s" -- Returns: string return mw.text.listToText(trimAndFormat(args, adapt)) end -- Text.listToText() Text.quote = function ( apply, alien, advance ) -- Quote text -- Parameter: -- apply -- string, with text -- alien -- string, with language code, or nil -- advance -- number, with level 1 or 2, or nil -- Returns: quoted string apply = apply and tostring(apply) or "" local mode, slang if type( alien ) == "string" then slang = mw.text.trim( alien ):lower() else slang = mw.title.getCurrentTitle().pageLanguage if not slang then -- TODO FIXME: Introduction expected 2017-04 slang = mw.language.getContentLanguage():getCode() end end if advance == 2 then mode = 2 else mode = 1 end return fiatQuote( mw.text.trim( apply ), slang, mode ) end -- Text.quote() Text.quoteUnquoted = function ( apply, alien, advance ) -- Quote text, if not yet quoted and not empty -- Parameter: -- apply -- string, with text -- alien -- string, with language code, or nil -- advance -- number, with level 1 or 2, or nil -- Returns: string; possibly quoted local r = mw.text.trim( apply and tostring(apply) or "" ) local s = mw.ustring.sub( r, 1, 1 ) if s ~= "" and not Text.isQuote( s, advance ) then s = mw.ustring.sub( r, -1, 1 ) if not Text.isQuote( s ) then r = Text.quote( r, alien, advance ) end end return r end -- Text.quoteUnquoted() Text.removeDiacritics = function ( adjust ) -- Remove all diacritics -- Parameter: -- adjust -- string -- Returns: string; all latin letters should be ASCII -- or basic greek or cyrillic or symbols etc. local cleanup, decomposed if not PatternCombined then PatternCombined = mw.ustring.char( 91, 0x0300, 45, 0x036F, 0x1AB0, 45, 0x1AFF, 0x1DC0, 45, 0x1DFF, 0xFE20, 45, 0xFE2F, 93 ) end decomposed = mw.ustring.toNFD( adjust and tostring(adjust) or "" ) cleanup = mw.ustring.gsub( decomposed, PatternCombined, "" ) return mw.ustring.toNFC( cleanup ) end -- Text.removeDiacritics() Text.sentenceTerminated = function ( analyse ) -- Is string terminated by dot, question or exclamation mark? -- Quotation, link termination and so on granted -- Parameter: -- analyse -- string -- Returns: true, if sentence terminated local r if not PatternTerminated then PatternTerminated = mw.ustring.char( 91, 12290, 65281, 65294, 65311 ) .. "!%.%?…][\"'%]‹›«»‘’“”]*$" end if mw.ustring.find( analyse, PatternTerminated ) then r = true else r = false end return r end -- Text.sentenceTerminated() Text.ucfirstAll = function ( adjust) -- Capitalize all words -- Arguments: -- adjust = string to adjust -- Returns: string with all first letters in upper case adjust = adjust and tostring(adjust) or "" local r = mw.text.decode(adjust,true) local i = 1 local c, j, m m = (r ~= adjust) r = " "..r while i do i = mw.ustring.find( r, "%W%l", i ) if i then j = i + 1 c = mw.ustring.upper( mw.ustring.sub( r, j, j ) ) r = string.format( "%s%s%s", mw.ustring.sub( r, 1, i ), c, mw.ustring.sub( r, i + 2 ) ) i = j end end -- while i r = r:sub( 2 ) if m then r = mw.text.encode(r) end return r end -- Text.ucfirstAll() Text.uprightNonlatin = function ( adjust ) -- Ensure non-italics for non-latin text parts -- One single greek letter might be granted -- Precondition: -- adjust -- string -- Returns: string with non-latin parts enclosed in <span> local r initLatinData() if mw.ustring.match( adjust, PatternLatin ) then -- latin only, horizontal dashes, quotes r = adjust else local c local j = false local k = 1 local m = false local n = mw.ustring.len( adjust ) local span = "%s%s<span dir='auto' style='font-style:normal'>%s</span>" local flat = function ( a ) -- isLatin local range for i = 1, #RangesLatin do range = RangesLatin[ i ] if a >= range[ 1 ] and a <= range[ 2 ] then return true end end -- for i end -- flat() local focus = function ( a ) -- char is not ambivalent local r = ( a > 64 ) if r then r = ( a < 8192 or a > 8212 ) else r = ( a == 38 or a == 60 ) -- '&' '<' end return r end -- focus() local form = function ( a ) return string.format( span, r, mw.ustring.sub( adjust, k, j - 1 ), mw.ustring.sub( adjust, j, a ) ) end -- form() r = "" for i = 1, n do c = mw.ustring.codepoint( adjust, i, i ) if focus( c ) then if flat( c ) then if j then if m then if i == m then -- single greek letter. j = false end m = false end if j then local nx = i - 1 local s = "" for ix = nx, 1, -1 do c = mw.ustring.sub( adjust, ix, ix ) if c == " " or c == "(" then nx = nx - 1 s = c .. s else break -- for ix end end -- for ix r = form( nx ) .. s j = false k = i end end elseif not j then j = i if c >= 880 and c <= 1023 then -- single greek letter? m = i + 1 else m = false end end elseif m then m = m + 1 end end -- for i if j and ( not m or m < n ) then r = form( n ) else r = r .. mw.ustring.sub( adjust, k ) end end return r end -- Text.uprightNonlatin() Text.test = function ( about ) local r if about == "quote" then initQuoteData() r = { } r.QuoteLang = QuoteLang r.QuoteType = QuoteType end return r end -- Text.test() -- Export local p = { } for _, func in ipairs({'containsCJK','isLatinRange','isQuote','sentenceTerminated'}) do p[func] = function (frame) return Text[func]( frame.args[ 1 ] or "" ) and "1" or "" end end for _, func in ipairs({'getPlain','removeDiacritics','ucfirstAll','uprightNonlatin'}) do p[func] = function (frame) return Text[func]( frame.args[ 1 ] or "" ) end end function p.char( frame ) local params = frame:getParent().args local story = params[ 1 ] local codes, lenient, multiple if not story then params = frame.args story = params[ 1 ] end if story then local items = mw.text.split( mw.text.trim(story), "%s+" ) if #items > 0 then local j lenient = (yesNo(params.errors) == false) codes = { } multiple = tonumber( params[ "*" ] ) for _, v in ipairs( items ) do j = tonumber((v:sub( 1, 1 ) == "x" and "0" or "") .. v) table.insert( codes, j or v ) end end end return Text.char( codes, multiple, lenient ) end function p.concatParams( frame ) local args local template = frame.args.template if type( template ) == "string" then template = mw.text.trim( template ) template = ( template == "1" ) end if template then args = frame:getParent().args else args = frame.args end return Text.concatParams( args, frame.args.separator, frame.args.format ) end function p.listToFormat(frame) local lists = {} local pformat = frame.args["format"] local sep = frame.args["sep"] or ";" -- Parameter parsen: Listen for k, v in pairs(frame.args) do local knum = tonumber(k) if knum then lists[knum] = v end end -- Listen splitten local maxListLen = 0 for i = 1, #lists do lists[i] = mw.text.split(lists[i], sep) if #lists[i] > maxListLen then maxListLen = #lists[i] end end -- Ergebnisstring generieren local result = "" local result_line = "" for i = 1, maxListLen do result_line = pformat for j = 1, #lists do result_line = mw.ustring.gsub(result_line, "%%s", lists[j][i], 1) end result = result .. result_line end return result end function p.listToText( frame ) local args local template = frame.args.template if type( template ) == "string" then template = mw.text.trim( template ) template = ( template == "1" ) end if template then args = frame:getParent().args else args = frame.args end return Text.listToText( args, frame.args.format ) end function p.quote( frame ) local slang = frame.args[2] if type( slang ) == "string" then slang = mw.text.trim( slang ) if slang == "" then slang = false end end return Text.quote( frame.args[ 1 ] or "", slang, tonumber( frame.args[3] ) ) end function p.quoteUnquoted( frame ) local slang = frame.args[2] if type( slang ) == "string" then slang = mw.text.trim( slang ) if slang == "" then slang = false end end return Text.quoteUnquoted( frame.args[ 1 ] or "", slang, tonumber( frame.args[3] ) ) end function p.zip(frame) local lists = {} local seps = {} local defaultsep = frame.args["sep"] or "" local innersep = frame.args["isep"] or "" local outersep = frame.args["osep"] or "" -- Parameter parsen for k, v in pairs(frame.args) do local knum = tonumber(k) if knum then lists[knum] = v else if string.sub(k, 1, 3) == "sep" then local sepnum = tonumber(string.sub(k, 4)) if sepnum then seps[sepnum] = v end end end end -- sofern keine expliziten Separatoren angegeben sind, den Standardseparator verwenden for i = 1, math.max(#seps, #lists) do if not seps[i] then seps[i] = defaultsep end end -- Listen splitten local maxListLen = 0 for i = 1, #lists do lists[i] = mw.text.split(lists[i], seps[i]) if #lists[i] > maxListLen then maxListLen = #lists[i] end end local result = "" for i = 1, maxListLen do if i ~= 1 then result = result .. outersep end for j = 1, #lists do if j ~= 1 then result = result .. innersep end result = result .. (lists[j][i] or "") end end return result end function p.failsafe() return Text.serial end p.Text = function () return Text end -- p.Text return p 07f1fc4d39342fd92bdae1c5463bbfede7eeda1a Template:R from move 10 1014 2224 2022-07-21T18:41:22Z wikipedia>Steel1943 0 Undid revision 996791156 by [[Special:Contributions/Paine Ellsworth|Paine Ellsworth]] ([[User talk:Paine Ellsworth|talk]]) this wording addition needs discussion since it wasn't discussed and I don't agree with it (and how I didn't notice it for over a year ... not sure) wikitext text/x-wiki <noinclude>{{hatnote|This rcat template is automatically added to all new redirects that result from page moves; it must be added manually to older redirects when appropriate.}}{{This is a redirect/rcat}} </noinclude>{{Redirect template |id=R from move |name=From a page move |from=a page that has been moved (renamed) |info=This page was kept as a redirect to avoid breaking links, both internal and external, that may have been made to the old page name. |all category=Redirects from moves }}<includeonly>{{R from move/except}}</includeonly><noinclude> <!-- Place categories on /doc subpage; interwikis go to Wikidata. --> {{Documentation}} </noinclude> a54816f5e100ad6245cbc939f9c0c04671b65c05 Template:Para 10 49 93 2022-07-22T08:06:17Z wikipedia>TheDJ 0 breakup super long words, so we do not overflow the viewport. wikitext text/x-wiki <code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">&#124;{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}&#61;}}{{{2|}}}</code><noinclude> {{Documentation}} <!--Categories and interwikis go near the bottom of the /doc subpage.--> </noinclude> 06006deea2ed5d552aab61b4332321ab749ae7e8 Template:Infobox film 10 1345 2680 2022-07-25T18:43:55Z w>Paine Ellsworth 0 per edit request on talk page - remove hard categorization wikitext text/x-wiki <includeonly>{{main other|{{Infobox film/short description|released={{{released|}}}|country={{{country|}}}|director={{{director|}}}}}}}{{Infobox | italic title = {{{italic_title|<noinclude>no</noinclude>}}} | bodyclass = vevent | aboveclass = summary | abovestyle = font-size: 125%; font-style: italic; | above = {{If empty |{{{name|}}} |{{PAGENAMEBASE}} }} | image = {{#invoke:InfoboxImage|InfoboxImage |image={{{image|}}} |size={{{image_size|}}} |sizedefault=frameless |upright=1 |alt={{{alt|}}} |title={{{alt|}}} |border={{{border|yes}}} }} | caption = {{{caption|}}} | labelstyle = white-space: nowrap; padding-right: 0.65em;<!--(to ensure gap between any long/nonwrapped label and subsequent data on same line--> | class1 = description | data1 = {{{native_name|}}} | label2 = Directed by | data2 = {{If empty |{{{director|}}} |{{{directors|}}} }} | label3 = Written by | data3 = {{If empty |{{{writer|}}} |{{{writers|}}} }} | label4 = Screenplay by | data4 = {{{screenplay|}}} | label5 = Story by | data5 = {{{story|}}} | label6 = Based on | data6 = {{{based_on|}}} | label7 = Produced by | data7 = {{If empty |{{{producer|}}} |{{{producers|}}} }} | label8 = Starring | data8 = {{{starring|}}} | label9 = Narrated by | data9 = {{If empty |{{{narrator|}}} |{{{narrators|}}} }} | label10 = Cinematography | data10 = {{{cinematography|}}} | label11 = Edited by | data11 = {{{editing|}}} | label12 = Music by | data12 = {{{music|}}} | label13 = Animation by | data13 = {{{animator|}}} | label14 = Layouts by | data14 = {{{layout_artist|}}} | label15 = Backgrounds by | data15 = {{{background_artist|}}} | label16 = Color process | data16 = {{{color_process|}}} | label17 = {{Longitem |Production<br/>{{Pluralize from text|{{If empty |{{{production_companies|}}} |{{{studio|}}} }} || company | companies }}}} | data17 = {{#if: {{{production_companies|{{{studio|}}} }}} | <div style="vertical-align: middle;">{{{production_companies|{{{studio|}}}}}}</div> }} | label18 = Distributed by | data18 = {{If empty |{{{distributor|}}} |{{{distributors|}}} }} | label19 = {{Longitem|style=white-space: normal;|Release date{{Pluralize from text|{{{released|}}}|||s}}}} | data19 = {{{released|}}} | label20 = {{Longitem|style=white-space: normal;|Running time}} | data20 = {{{runtime|}}} | label21 = {{Pluralize from text|{{{country|}}}|| Country | Countries }} | data21 = {{{country|}}} | label22 = {{Pluralize from text|{{{language|}}}|| Language | Languages }} | data22 = {{{language|}}} | label23 = Budget | data23 = {{{budget|}}} | label24 = Box office | data24 = {{{gross|}}} }}<!-- Tracking categories -->{{Main other|{{#if: {{{image_size|}}} | [[Category:Pages using infobox film with image size parameter]] }}}}<!-- -->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using infobox film with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[:Template:Infobox film]] with unknown parameter "_VALUE_"|showblankpositional=1| alt | animator | background_artist | based_on | border | budget | caption | cinematography | color_process | country | director | directors | distributor | distributors | editing | gross | italic_title | image | image_size | language | layout_artist | music | name | narrator | narrators | native_name | producer | producers | production_companies | released | runtime | screenplay | starring | story | studio | writer | writers }}<!-- --></includeonly><noinclude> {{Documentation}} </noinclude> 07a0172daa3d6b251a4759f7e0ddb4bfa918f12e Module:ISO 3166/data/National 828 186 426 2022-07-28T05:06:29Z wikipedia>Paine Ellsworth 0 per edit request on talk page - include "U.S." initialism Scribunto text/plain return { ["AD"] = {alpha3="AND",numeric="020",name="Andorra"}, ["AE"] = {alpha3="ARE",numeric="784",name="United Arab Emirates",altnames={"UAE"}}, ["AF"] = {alpha3="AFG",numeric="004",name="Afghanistan"}, ["AG"] = {alpha3="ATG",numeric="028",name="Antigua and Barbuda"}, ["AI"] = {alpha3="AIA",numeric="660",name="Anguilla"}, ["AL"] = {alpha3="ALB",numeric="008",name="Albania"}, ["AM"] = {alpha3="ARM",numeric="051",name="Armenia"}, ["AO"] = {alpha3="AGO",numeric="024",name="Angola"}, ["AQ"] = {alpha3="ATA",numeric="010",name="Antarctica"}, ["AR"] = {alpha3="ARG",numeric="032",name="Argentina"}, ["AS"] = {alpha3="ASM",numeric="016",name="American Samoa"}, ["AT"] = {alpha3="AUT",numeric="040",name="Austria"}, ["AU"] = {alpha3="AUS",numeric="036",name="Australia"}, ["AW"] = {alpha3="ABW",numeric="533",name="Aruba"}, ["AX"] = {alpha3="ALA",numeric="248",name="Åland Islands",altnames={"Aland Islands","Åland","Aland"}}, ["AZ"] = {alpha3="AZE",numeric="031",name="Azerbaijan"}, ["BA"] = {alpha3="BIH",numeric="070",name="Bosnia and Herzegovina",altnames={"Bosnia"}}, ["BB"] = {alpha3="BRB",numeric="052",name="Barbados"}, ["BD"] = {alpha3="BGD",numeric="050",name="Bangladesh"}, ["BE"] = {alpha3="BEL",numeric="056",name="Belgium"}, ["BF"] = {alpha3="BFA",numeric="854",name="Burkina Faso"}, ["BG"] = {alpha3="BGR",numeric="100",name="Bulgaria"}, ["BH"] = {alpha3="BHR",numeric="048",name="Bahrain"}, ["BI"] = {alpha3="BDI",numeric="108",name="Burundi"}, ["BJ"] = {alpha3="BEN",numeric="204",name="Benin"}, ["BL"] = {alpha3="BLM",numeric="652",name="Saint Barthélemy",altnames={"St Barthelemy"}}, ["BM"] = {alpha3="BMU",numeric="060",name="Bermuda"}, ["BN"] = {alpha3="BRN",numeric="096",name="Brunei",isoname="Brunei Darussalam"}, ["BO"] = {alpha3="BOL",numeric="068",name="Bolivia",isoname="Bolivia (Plurinational State of)"}, ["BQ"] = {alpha3="BES",numeric="535",name="Caribbean Netherlands",isoname="Bonaire, Sint Eustatius and Saba"}, ["BR"] = {alpha3="BRA",numeric="076",name="Brazil"}, ["BS"] = {alpha3="BHS",numeric="044",name="Bahamas"}, ["BT"] = {alpha3="BTN",numeric="064",name="Bhutan"}, ["BV"] = {alpha3="BVT",numeric="074",name="Bouvet Island"}, ["BW"] = {alpha3="BWA",numeric="072",name="Botswana"}, ["BY"] = {alpha3="BLR",numeric="112",name="Belarus"}, ["BZ"] = {alpha3="BLZ",numeric="084",name="Belize"}, ["CA"] = {alpha3="CAN",numeric="124",name="Canada"}, ["CC"] = {alpha3="CCK",numeric="166",name="Cocos (Keeling) Islands",altnames={"Cocos Islands","Keeling Islands"}}, ["CD"] = {alpha3="COD",numeric="180",name="Democratic Republic of the Congo",isoname="Congo, Democratic Republic of the",altnames={"Congo-Kinshasa","DRC","DR Congo"}}, ["CF"] = {alpha3="CAF",numeric="140",name="Central African Republic",altnames={"CAR"}}, ["CG"] = {alpha3="COG",numeric="178",name="Republic of the Congo",isoname="Congo",altnames={"Congo-Brazzaville"}}, ["CH"] = {alpha3="CHE",numeric="756",name="Switzerland"}, ["CI"] = {alpha3="CIV",numeric="384",name="Côte d'Ivoire",altnames={"Ivory Coast"}}, ["CK"] = {alpha3="COK",numeric="184",name="Cook Islands"}, ["CL"] = {alpha3="CHL",numeric="152",name="Chile"}, ["CM"] = {alpha3="CMR",numeric="120",name="Cameroon"}, ["CN"] = {alpha3="CHN",numeric="156",name="China",altnames={"People's Republic of China","PRC"}}, ["CO"] = {alpha3="COL",numeric="170",name="Colombia"}, ["CR"] = {alpha3="CRI",numeric="188",name="Costa Rica"}, ["CU"] = {alpha3="CUB",numeric="192",name="Cuba"}, ["CV"] = {alpha3="CPV",numeric="132",name="Cabo Verde",altnames={"Cape Verde"}}, ["CW"] = {alpha3="CUW",numeric="531",name="Curaçao",altnames={"Curacao"}}, ["CX"] = {alpha3="CXR",numeric="162",name="Christmas Island"}, ["CY"] = {alpha3="CYP",numeric="196",name="Cyprus"}, ["CZ"] = {alpha3="CZE",numeric="203",name="Czech Republic",isoname="Czechia"}, ["DE"] = {alpha3="DEU",numeric="276",name="Germany"}, ["DJ"] = {alpha3="DJI",numeric="262",name="Djibouti"}, ["DK"] = {alpha3="DNK",numeric="208",name="Denmark"}, ["DM"] = {alpha3="DMA",numeric="212",name="Dominica"}, ["DO"] = {alpha3="DOM",numeric="214",name="Dominican Republic"}, ["DZ"] = {alpha3="DZA",numeric="012",name="Algeria"}, ["EC"] = {alpha3="ECU",numeric="218",name="Ecuador"}, ["EE"] = {alpha3="EST",numeric="233",name="Estonia"}, ["EG"] = {alpha3="EGY",numeric="818",name="Egypt"}, ["EH"] = {alpha3="ESH",numeric="732",name="Western Sahara"}, ["ER"] = {alpha3="ERI",numeric="232",name="Eritrea"}, ["ES"] = {alpha3="ESP",numeric="724",name="Spain"}, ["ET"] = {alpha3="ETH",numeric="231",name="Ethiopia"}, ["FI"] = {alpha3="FIN",numeric="246",name="Finland"}, ["FJ"] = {alpha3="FJI",numeric="242",name="Fiji"}, ["FK"] = {alpha3="FLK",numeric="238",name="Falkland Islands",isoname="Falkland Islands (Malvinas)",altnames={"Falklands","Islas Malvinas","Malvinas","Malvinas Islands"}}, ["FM"] = {alpha3="FSM",numeric="583",name="Federated States of Micronesia",isoname="Micronesia (Federated States of)",altnames={"Micronesia"}}, ["FO"] = {alpha3="FRO",numeric="234",name="Faroe Islands",altnames={"Faroer","Faeroer"}}, ["FR"] = {alpha3="FRA",numeric="250",name="France"}, ["GA"] = {alpha3="GAB",numeric="266",name="Gabon"}, ["GB"] = {alpha3="GBR",numeric="826",name="United Kingdom",isoname="United Kingdom of Great Britain and Northern Ireland",altnames={"UK","Great Britain"}}, ["GB-ENG"] = {alpha3="ENG",numeric="000",name="England"}, --Considered to be a country ["GB-NIR"] = {alpha3="NIR",numeric="000",name="Northern Ireland"}, --Considered to be a country ["GB-SCT"] = {alpha3="SCT",numeric="000",name="Scotland"}, --Considered to be a country ["GB-WLS"] = {alpha3="WLS",numeric="000",name="Wales"}, --Considered to be a country ["GB-EAW"] = {alpha3="EAW",numeric="000",name="England and Wales"}, --Considered to be a country ["GD"] = {alpha3="GRD",numeric="308",name="Grenada"}, ["GE"] = {alpha3="GEO",numeric="268",name="Georgia"}, ["GF"] = {alpha3="GUF",numeric="254",name="French Guiana"}, ["GG"] = {alpha3="GGY",numeric="831",name="Guernsey"}, ["GH"] = {alpha3="GHA",numeric="288",name="Ghana"}, ["GI"] = {alpha3="GIB",numeric="292",name="Gibraltar"}, ["GL"] = {alpha3="GRL",numeric="304",name="Greenland"}, ["GM"] = {alpha3="GMB",numeric="270",name="Gambia"}, ["GN"] = {alpha3="GIN",numeric="324",name="Guinea"}, ["GP"] = {alpha3="GLP",numeric="312",name="Guadeloupe"}, ["GQ"] = {alpha3="GNQ",numeric="226",name="Equatorial Guinea"}, ["GR"] = {alpha3="GRC",numeric="300",name="Greece"}, ["GS"] = {alpha3="SGS",numeric="239",name="South Georgia and the South Sandwich Islands"}, ["GT"] = {alpha3="GTM",numeric="320",name="Guatemala"}, ["GU"] = {alpha3="GUM",numeric="316",name="Guam"}, ["GW"] = {alpha3="GNB",numeric="624",name="Guinea-Bissau"}, ["GY"] = {alpha3="GUY",numeric="328",name="Guyana"}, ["HK"] = {alpha3="HKG",numeric="344",name="Hong Kong",altnames={"Hong Kong SAR","HKSAR"}}, ["HM"] = {alpha3="HMD",numeric="334",name="Heard Island and McDonald Islands",altnames={"Heard and McDonald Islands"}}, ["HN"] = {alpha3="HND",numeric="340",name="Honduras"}, ["HR"] = {alpha3="HRV",numeric="191",name="Croatia"}, ["HT"] = {alpha3="HTI",numeric="332",name="Haiti"}, ["HU"] = {alpha3="HUN",numeric="348",name="Hungary"}, ["ID"] = {alpha3="IDN",numeric="360",name="Indonesia"}, ["IE"] = {alpha3="IRL",numeric="372",name="Ireland",altnames={"Republic of Ireland"}}, ["IL"] = {alpha3="ISR",numeric="376",name="Israel"}, ["IM"] = {alpha3="IMN",numeric="833",name="Isle of Man"}, ["IN"] = {alpha3="IND",numeric="356",name="India"}, ["IO"] = {alpha3="IOT",numeric="086",name="British Indian Ocean Territory"}, ["IQ"] = {alpha3="IRQ",numeric="368",name="Iraq"}, ["IR"] = {alpha3="IRN",numeric="364",name="Iran",isoname="Iran (Islamic Republic of)"}, ["IS"] = {alpha3="ISL",numeric="352",name="Iceland"}, ["IT"] = {alpha3="ITA",numeric="380",name="Italy"}, ["JE"] = {alpha3="JEY",numeric="832",name="Jersey"}, ["JM"] = {alpha3="JAM",numeric="388",name="Jamaica"}, ["JO"] = {alpha3="JOR",numeric="400",name="Jordan"}, ["JP"] = {alpha3="JPN",numeric="392",name="Japan"}, ["KE"] = {alpha3="KEN",numeric="404",name="Kenya"}, ["KG"] = {alpha3="KGZ",numeric="417",name="Kyrgyzstan"}, ["KH"] = {alpha3="KHM",numeric="116",name="Cambodia"}, ["KI"] = {alpha3="KIR",numeric="296",name="Kiribati"}, ["KM"] = {alpha3="COM",numeric="174",name="Comoros"}, ["KN"] = {alpha3="KNA",numeric="659",name="Saint Kitts and Nevis",altnames={"St Kitts and Nevis"}}, ["KP"] = {alpha3="PRK",numeric="408",name="North Korea",isoname="Korea (Democratic People's Republic of)",altnames={"Democratic People's Republic of Korea"}}, ["KR"] = {alpha3="KOR",numeric="410",name="South Korea",isoname="Korea, Republic of",altnames={"Republic of Korea"}}, ["KW"] = {alpha3="KWT",numeric="414",name="Kuwait"}, ["KY"] = {alpha3="CYM",numeric="136",name="Cayman Islands"}, ["KZ"] = {alpha3="KAZ",numeric="398",name="Kazakhstan"}, ["LA"] = {alpha3="LAO",numeric="418",name="Laos",isoname="Lao People's Democratic Republic"}, ["LB"] = {alpha3="LBN",numeric="422",name="Lebanon"}, ["LC"] = {alpha3="LCA",numeric="662",name="Saint Lucia",altnames={"St Lucia"}}, ["LI"] = {alpha3="LIE",numeric="438",name="Liechtenstein"}, ["LK"] = {alpha3="LKA",numeric="144",name="Sri Lanka"}, ["LR"] = {alpha3="LBR",numeric="430",name="Liberia"}, ["LS"] = {alpha3="LSO",numeric="426",name="Lesotho"}, ["LT"] = {alpha3="LTU",numeric="440",name="Lithuania"}, ["LU"] = {alpha3="LUX",numeric="442",name="Luxembourg"}, ["LV"] = {alpha3="LVA",numeric="428",name="Latvia"}, ["LY"] = {alpha3="LBY",numeric="434",name="Libya"}, ["MA"] = {alpha3="MAR",numeric="504",name="Morocco"}, ["MC"] = {alpha3="MCO",numeric="492",name="Monaco"}, ["MD"] = {alpha3="MDA",numeric="498",name="Moldova",isoname="Moldova, Republic of"}, ["ME"] = {alpha3="MNE",numeric="499",name="Montenegro"}, ["MF"] = {alpha3="MAF",numeric="663",name="Saint-Martin",isoname="Saint Martin (French part)",altnames={"St Martin","St Martin (French part)","Collectivity of Saint Martin","Collectivity of St Martin"}}, ["MG"] = {alpha3="MDG",numeric="450",name="Madagascar"}, ["MH"] = {alpha3="MHL",numeric="584",name="Marshall Islands"}, ["MK"] = {alpha3="MKD",numeric="807",name="North Macedonia",altnames={"Republic of North Macedonia","Macedonia","Republic of Macedonia","Macedonia, the former Yugoslav Republic of"}}, ["ML"] = {alpha3="MLI",numeric="466",name="Mali"}, ["MM"] = {alpha3="MMR",numeric="104",name="Myanmar",altnames={"Burma"}}, ["MN"] = {alpha3="MNG",numeric="496",name="Mongolia"}, ["MO"] = {alpha3="MAC",numeric="446",name="Macau",isoname="Macao",altnames={"Macau SAR","Macao SAR"}}, ["MP"] = {alpha3="MNP",numeric="580",name="Northern Mariana Islands"}, ["MQ"] = {alpha3="MTQ",numeric="474",name="Martinique"}, ["MR"] = {alpha3="MRT",numeric="478",name="Mauritania"}, ["MS"] = {alpha3="MSR",numeric="500",name="Montserrat"}, ["MT"] = {alpha3="MLT",numeric="470",name="Malta"}, ["MU"] = {alpha3="MUS",numeric="480",name="Mauritius"}, ["MV"] = {alpha3="MDV",numeric="462",name="Maldives"}, ["MW"] = {alpha3="MWI",numeric="454",name="Malawi"}, ["MX"] = {alpha3="MEX",numeric="484",name="Mexico"}, ["MY"] = {alpha3="MYS",numeric="458",name="Malaysia"}, ["MZ"] = {alpha3="MOZ",numeric="508",name="Mozambique"}, ["NA"] = {alpha3="NAM",numeric="516",name="Namibia"}, ["NC"] = {alpha3="NCL",numeric="540",name="New Caledonia"}, ["NE"] = {alpha3="NER",numeric="562",name="Niger"}, ["NF"] = {alpha3="NFK",numeric="574",name="Norfolk Island"}, ["NG"] = {alpha3="NGA",numeric="566",name="Nigeria"}, ["NI"] = {alpha3="NIC",numeric="558",name="Nicaragua"}, ["NL"] = {alpha3="NLD",numeric="528",name="Netherlands"}, ["NO"] = {alpha3="NOR",numeric="578",name="Norway"}, ["NP"] = {alpha3="NPL",numeric="524",name="Nepal"}, ["NR"] = {alpha3="NRU",numeric="520",name="Nauru"}, ["NU"] = {alpha3="NIU",numeric="570",name="Niue"}, ["NZ"] = {alpha3="NZL",numeric="554",name="New Zealand",altnames={"Aotearoa"}}, ["OM"] = {alpha3="OMN",numeric="512",name="Oman"}, ["PA"] = {alpha3="PAN",numeric="591",name="Panama"}, ["PE"] = {alpha3="PER",numeric="604",name="Peru"}, ["PF"] = {alpha3="PYF",numeric="258",name="French Polynesia"}, ["PG"] = {alpha3="PNG",numeric="598",name="Papua New Guinea"}, ["PH"] = {alpha3="PHL",numeric="608",name="Philippines"}, ["PK"] = {alpha3="PAK",numeric="586",name="Pakistan"}, ["PL"] = {alpha3="POL",numeric="616",name="Poland"}, ["PM"] = {alpha3="SPM",numeric="666",name="Saint Pierre and Miquelon",altnames={"St Pierre and Miquelon"}}, ["PN"] = {alpha3="PCN",numeric="612",name="Pitcairn"}, ["PR"] = {alpha3="PRI",numeric="630",name="Puerto Rico"}, ["PS"] = {alpha3="PSE",numeric="275",name="Palestine",isoname="Palestine, State of",altnames={"State of Palestine"}}, ["PT"] = {alpha3="PRT",numeric="620",name="Portugal"}, ["PW"] = {alpha3="PLW",numeric="585",name="Palau"}, ["PY"] = {alpha3="PRY",numeric="600",name="Paraguay"}, ["QA"] = {alpha3="QAT",numeric="634",name="Qatar"}, ["RE"] = {alpha3="REU",numeric="638",name="Réunion"}, ["RO"] = {alpha3="ROU",numeric="642",name="Romania"}, ["RS"] = {alpha3="SRB",numeric="688",name="Serbia"}, ["RU"] = {alpha3="RUS",numeric="643",name="Russia",isoname="Russian Federation"}, ["RW"] = {alpha3="RWA",numeric="646",name="Rwanda"}, ["SA"] = {alpha3="SAU",numeric="682",name="Saudi Arabia"}, ["SB"] = {alpha3="SLB",numeric="090",name="Solomon Islands"}, ["SC"] = {alpha3="SYC",numeric="690",name="Seychelles"}, ["SD"] = {alpha3="SDN",numeric="729",name="Sudan"}, ["SE"] = {alpha3="SWE",numeric="752",name="Sweden"}, ["SG"] = {alpha3="SGP",numeric="702",name="Singapore"}, ["SH"] = {alpha3="SHN",numeric="654",name="Saint Helena, Ascension and Tristan da Cunha"}, ["SI"] = {alpha3="SVN",numeric="705",name="Slovenia"}, ["SJ"] = {alpha3="SJM",numeric="744",name="Svalbard and Jan Mayen"}, ["SK"] = {alpha3="SVK",numeric="703",name="Slovakia"}, ["SL"] = {alpha3="SLE",numeric="694",name="Sierra Leone"}, ["SM"] = {alpha3="SMR",numeric="674",name="San Marino"}, ["SN"] = {alpha3="SEN",numeric="686",name="Senegal"}, ["SO"] = {alpha3="SOM",numeric="706",name="Somalia"}, ["SR"] = {alpha3="SUR",numeric="740",name="Suriname"}, ["SS"] = {alpha3="SSD",numeric="728",name="South Sudan"}, ["ST"] = {alpha3="STP",numeric="678",name="São Tomé and Príncipe",isoname="Sao Tome and Principe",altnames={"Democratic Republic of Sao Tome and Principe"}}, ["SV"] = {alpha3="SLV",numeric="222",name="El Salvador"}, ["SX"] = {alpha3="SXM",numeric="534",name="Sint Maarten",isoname="Sint Maarten (Dutch part)",altnames={"St Maarten","Saint Martin (Dutch part)","St Martin (Dutch part)"}}, ["SY"] = {alpha3="SYR",numeric="760",name="Syria",isoname="Syrian Arab Republic"}, ["SZ"] = {alpha3="SWZ",numeric="748",name="Eswatini",altnames={"Swaziland"}}, ["TC"] = {alpha3="TCA",numeric="796",name="Turks and Caicos Islands"}, ["TD"] = {alpha3="TCD",numeric="148",name="Chad"}, ["TF"] = {alpha3="ATF",numeric="260",name="French Southern and Antarctic Lands",isoname="French Southern Territories"}, ["TG"] = {alpha3="TGO",numeric="768",name="Togo"}, ["TH"] = {alpha3="THA",numeric="764",name="Thailand"}, ["TJ"] = {alpha3="TJK",numeric="762",name="Tajikistan"}, ["TK"] = {alpha3="TKL",numeric="772",name="Tokelau"}, ["TL"] = {alpha3="TLS",numeric="626",name="Timor-Leste",altnames={"East Timor"}}, ["TM"] = {alpha3="TKM",numeric="795",name="Turkmenistan"}, ["TN"] = {alpha3="TUN",numeric="788",name="Tunisia"}, ["TO"] = {alpha3="TON",numeric="776",name="Tonga"}, ["TR"] = {alpha3="TUR",numeric="792",name="Turkey",isoname="Türkiye"}, ["TT"] = {alpha3="TTO",numeric="780",name="Trinidad and Tobago"}, ["TV"] = {alpha3="TUV",numeric="798",name="Tuvalu"}, ["TW"] = {alpha3="TWN",numeric="158",name="Taiwan",isoname="Taiwan, Province of China",altnames={"Republic of China"}}, ["TZ"] = {alpha3="TZA",numeric="834",name="Tanzania",isoname="Tanzania, United Republic of"}, ["UA"] = {alpha3="UKR",numeric="804",name="Ukraine"}, ["UG"] = {alpha3="UGA",numeric="800",name="Uganda"}, ["UM"] = {alpha3="UMI",numeric="581",name="United States Minor Outlying Islands"}, ["US"] = {alpha3="USA",numeric="840",name="United States",isoname="United States of America",altnames={"US","USA","U.S."}}, ["UY"] = {alpha3="URY",numeric="858",name="Uruguay"}, ["UZ"] = {alpha3="UZB",numeric="860",name="Uzbekistan"}, ["VA"] = {alpha3="VAT",numeric="336",name="Vatican City",isoname="Holy See",altnames={"Holy See (Vatican City State)","Vatican City State"}}, ["VC"] = {alpha3="VCT",numeric="670",name="Saint Vincent and the Grenadines",altnames={"St Vincent and the Grenadines"}}, ["VE"] = {alpha3="VEN",numeric="862",name="Venezuela",isoname="Venezuela (Bolivarian Republic of)"}, ["VG"] = {alpha3="VGB",numeric="092",name="British Virgin Islands",isoname="Virgin Islands (British)",altnames={"UK Virgin Islands","BVI"}}, ["VI"] = {alpha3="VIR",numeric="850",name="United States Virgin Islands",isoname="Virgin Islands (U.S.)",altnames={"US Virgin Islands","USVI"}}, ["VN"] = {alpha3="VNM",numeric="704",name="Vietnam",isoname="Viet Nam"}, ["VU"] = {alpha3="VUT",numeric="548",name="Vanuatu"}, ["WF"] = {alpha3="WLF",numeric="876",name="Wallis and Futuna"}, ["WS"] = {alpha3="WSM",numeric="882",name="Samoa"}, ["YE"] = {alpha3="YEM",numeric="887",name="Yemen"}, ["YT"] = {alpha3="MYT",numeric="175",name="Mayotte"}, ["ZA"] = {alpha3="ZAF",numeric="710",name="South Africa"}, ["ZM"] = {alpha3="ZMB",numeric="894",name="Zambia"}, ["ZW"] = {alpha3="ZWE",numeric="716",name="Zimbabwe"} } 1ae753fe1fa53ce062b0a008dbc9778d589666f0 Template:Cite book/new 10 693 1554 2022-07-30T22:12:50Z wikipedia>Trappist the monk 0 wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1/sandbox|citation |CitationClass=book |SandboxPath=/sandbox }}</includeonly><noinclude> {{documentation|content= The '''Template:Cite_book/new''' uses the [[Lua script]] interface with [[Module:Citation/CS1/sandbox]] to format book cites using the [[wp:CS1|Citation Style 1]] for cite parameters. }} [[Category:Lua-based templates]] </noinclude> 67558f4bbe6d0235534f2800b4363bf48fafef92 Template:Country data Croatia 10 1185 2514 2022-07-31T23:45:06Z Pppery 6 Per edit request wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Croatia | flag alias = Flag of Croatia.svg | flag alias-civil = Civil Ensign of Croatia.svg | flag alias-1990 = Flag of Croatia (1990).svg | flag alias-naval = Naval ensign of Croatia.svg | link alias-naval = Croatian Navy | flag alias-air force = Flag of the Croatian Air Force.svg | link alias-air force = Croatian Air Force | link alias-military = Armed Forces of Croatia | flag alias-army = Flag of Croatian Army.svg | link alias-army = Croatian Army | flag alias-navy = Naval ensign of Croatia.svg | link alias-navy = Croatian Navy | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = civil | var2 = 1990 | redir1 = HRV | redir2 = CRO | related1 = Independent State of Croatia | related2 = SR Croatia | related3 = PR Croatia | related4 = Kingdom of Croatia (Habsburg) </noinclude> }} b48856d8f7becf31f9935ba8fce138f3283dc4ea Module:Format TemplateData/config 828 633 1426 2022-08-01T17:59:53Z wikipedia>MusikBot II 0 Protected "[[Module:Format TemplateData/config]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 515 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) Scribunto text/plain local Serial = "2022-03-20" --[=[ enwiki configuration {{TemplateData}} mw.loadData() ]=] return { catProblem = false, classMultiColumns = "column-multiple", classNoNumTOC = "nonumtoc", classTable = { "wikitable", "templatedata-params" }, cssParams = { ["border"] = "#B3B7FF 1px solid" }, docpageCreate = "%s/doc", docpageDetect = "/doc", helpBoolean = false, helpContent = false, helpDate = false, helpFile = false, helpFormat = false, helpLine = false, helpNumber = false, helpPage = false, helpString = false, helpTemplate = false, helpURL = false, helpUser = false, msgDescMiss = "missing <code>description</code>", permit = { boole = { [true] = { css = { ["color"] = "#050", ["font-weight"] = "bold" }, lead = false, show = "True" }, [false] = { css = { ["color"] = "#610", ["font-weight"] = "bold" }, lead = false, show = "False" } }, css = { tableheadbg = { ["background-color"] = "#B3B7FF" }, bg = { ["bg"] = "none" }, required = { ["border-left"] = "3px solid black" }, suggested = { ["border-left"] = "3px solid #888" }, optional = { ["border-left"] = "3px solid #CCC" }, deprecated = { ["background-color"] = "#FDD", ["border-left"] = "3px dotted red" } } }, tStylesTOCnum = "TOC nonum", tStylesMultiColumns = "column-multiple", serial = Serial } ce8c2e3e08b7c06d862b014b7affdebda341027a Module:Multilingual 828 634 1428 2022-08-09T00:07:40Z wikipedia>Sdrqaz 0 Protected "[[Module:Multilingual]]": [[WP:High-risk templates|High-risk Lua module]]: [[Special:Diff/1103230387/1103232518|Requested by Pppery at RfPP]]. Used in [[Module:Format TemplateData]], which is semi-protected and has 516 transclusions ([Edit=Require autoconfirmed or confirmed access] (indefinite)) Scribunto text/plain local Multilingual = { suite = "Multilingual", serial = "2020-12-10", item = 47541920, globals = { ISO15924 = 71584769, WLink = 19363224 } } --[=[ Utilities for multilingual texts and ISO 639 (BCP47) issues etc. * fair() * fallback() * findCode() * fix() * format() * getBase() * getLang() * getName() * i18n() * int() * isLang() * isLangWiki() * isMinusculable() * isRTL() * message() * sitelink() * tabData() * userLang() * userLangCode() * wikibase() * failsafe() loadData: Multilingual/config Multilingual/names ]=] local Failsafe = Multilingual local GlobalMod = Multilingual local GlobalData = Multilingual local User = { sniffer = "showpreview" } Multilingual.globals.Multilingual = Multilingual.item Multilingual.exotic = { simple = true, no = true } Multilingual.prefer = { cs = true, de = true, en = true, es = true, fr = true, it = true, nl = true, pt = true, ru = true, sv = true } local foreignModule = function ( access, advanced, append, alt, alert ) -- Fetch global module -- Precondition: -- access -- string, with name of base module -- advanced -- true, for require(); else mw.loadData() -- append -- string, with subpage part, if any; or false -- alt -- number, of wikidata item of root; or false -- alert -- true, for throwing error on data problem -- Postcondition: -- Returns whatever, probably table -- 2020-01-01 local storage = access local finer = function () if append then storage = string.format( "%s/%s", storage, append ) end end local fun, lucky, r, suited if advanced then fun = require else fun = mw.loadData end GlobalMod.globalModules = GlobalMod.globalModules or { } suited = GlobalMod.globalModules[ access ] if not suited then finer() lucky, r = pcall( fun, "Module:" .. storage ) end if not lucky then if not suited and type( alt ) == "number" and alt > 0 then suited = string.format( "Q%d", alt ) suited = mw.wikibase.getSitelink( suited ) GlobalMod.globalModules[ access ] = suited or true end if type( suited ) == "string" then storage = suited finer() lucky, r = pcall( fun, storage ) end if not lucky and alert then error( "Missing or invalid page: " .. storage ) end end return r end -- foreignModule() local fetchData = function ( access ) -- Retrieve translated keyword from commons:Data:****.tab -- Precondition: -- access -- string, with page identification on Commons -- Returns table, with data, or string, with error message -- 2019-12-05 local storage = access local r if type( storage ) == "string" then local s storage = mw.text.trim( storage ) s = storage:lower() if s:sub( 1, 2 ) == "c:" then storage = mw.text.trim( storage:sub( 3 ) ) s = storage:lower() elseif s:sub( 1, 8 ) == "commons:" then storage = mw.text.trim( storage:sub( 9 ) ) s = storage:lower() end if s:sub( 1, 5 ) == "data:" then storage = mw.text.trim( storage:sub( 6 ) ) s = storage:lower() end if s == "" or s == ".tab" then storage = false elseif s:sub( -4 ) == ".tab" then storage = storage:sub( 1, -5 ) .. ".tab" else storage = storage .. ".tab" end end if type( storage ) == "string" then local data if type( GlobalData.TabDATA ) ~= "table" then GlobalData.TabDATA = { } end data = GlobalData.TabDATA[ storage ] if data then r = data else local lucky lucky, data = pcall( mw.ext.data.get, storage, "_" ) if type( data ) == "table" then data = data.data if type( data ) == "table" then GlobalData.TabDATA[ storage ] = data else r = string.format( "%s [[%s%s]]", "INVALID Data:*.tab", "commons:Data:", storage ) end else r = "BAD PAGE Data:*.tab &#8211; commons:" .. storage end if r then GlobalData.TabDATA[ storage ] = r data = false else r = data end end else r = "BAD PAGE commons:Data:*.tab" end return r end -- fetchData() local favorites = function () -- Provide fallback codes -- Postcondition: -- Returns table with sequence of preferred languages -- * ahead elements -- * user (not yet accessible) -- * page content language (not yet accessible) -- * page name subpage -- * project -- * en local r = Multilingual.polyglott if not r then local self = mw.language.getContentLanguage():getCode():lower() local sub = mw.title.getCurrentTitle().subpageText local f = function ( add ) local s = add for i = 1, #r do if r[ i ] == s then s = false break -- for i end end -- for i if s then table.insert( r, s ) end end r = { } if sub:find( "/", 2, true ) then sub = sub:match( "/(%l%l%l?)$" ) if sub then table.insert( r, sub ) end elseif sub:find( "^%l%l%l?%-?%a?%a?%a?%a?$" ) and mw.language.isSupportedLanguage( sub ) then table.insert( r, sub ) end f( self ) f( "en" ) Multilingual.polyglott = r end return r end -- favorites() local feasible = function ( ask, accept ) -- Is ask to be supported by application? -- Precondition: -- ask -- lowercase code -- accept -- sequence table, with offered lowercase codes -- Postcondition: -- nil, or true local r for i = 1, #accept do if accept[ i ] == ask then r = true break -- for i end end -- for i return r end -- feasible() local fetch = function ( access, append ) -- Attach config or library module -- Precondition: -- access -- module title -- append -- string, with subpage part of this; or false -- Postcondition: -- Returns: table, with library, or false local got, sign if append then sign = string.format( "%s/%s", access, append ) else sign = access end if type( Multilingual.ext ) ~= "table" then Multilingual.ext = { } end got = Multilingual.ext[ sign ] if not got and got ~= false then local global = Multilingual.globals[ access ] local lib = ( not append or append == "config" ) got = foreignModule( access, lib, append, global ) if type( got ) == "table" then if lib then local startup = got[ access ] if type( startup ) == "function" then got = startup() end end else got = false end Multilingual.ext[ sign ] = got end return got end -- fetch() local fetchISO639 = function ( access ) -- Retrieve table from commons:Data:ISO639/***.tab -- Precondition: -- access -- string, with subpage identification -- Postcondition: -- Returns table, with data, even empty local r if type( Multilingual.iso639 ) ~= "table" then Multilingual.iso639 = { } end r = Multilingual.iso639[ access ] if type( r ) == "nil" then local raw = fetchData( "ISO639/" .. access ) if type( raw ) == "table" then local t r = { } for i = 1, #raw do t = raw[ i ] if type( t ) == "table" and type( t[ 1 ] ) == "string" and type( t[ 2 ] ) == "string" then r[ t[ 1 ] ] = t[ 2 ] else break -- for i end end -- for i else r = false end Multilingual.iso639[ access ] = r end return r or { } end -- fetchISO639() local fill = function ( access, alien, frame ) -- Expand language name template -- Precondition: -- access -- string, with language code -- alien -- language code for which to be generated -- frame -- frame, if available -- Postcondition: -- Returns string local template = Multilingual.tmplLang local r if type( template ) ~= "table" then local cnf = fetch( "Multilingual", "config" ) if cnf then template = cnf.tmplLang end end if type( template ) == "table" then local source = template.title local f, lucky, s Multilingual.tmplLang = template if type( source ) ~= "string" and type( template.namePat ) == "string" and template.namePat:find( "%s", 1, true ) then source = string.format( template.namePat, access ) end if type( source ) == "string" then if not Multilingual.frame then if frame then Multilingual.frame = frame else Multilingual.frame = mw.getCurrentFrame() end end f = function ( a ) return Multilingual.frame:expandTemplate{ title = a } end lucky, s = pcall( f, source ) if lucky then r = s end end end return r end -- fill() local find = function ( ask, alien ) -- Derive language code from name -- Precondition: -- ask -- language name, downcased -- alien -- language code of ask -- Postcondition: -- nil, or string local codes = mw.language.fetchLanguageNames( alien, "all" ) local r for k, v in pairs( codes ) do if mw.ustring.lower( v ) == ask then r = k break -- for k, v end end -- for k, v if not r then r = Multilingual.fair( ask ) end return r end -- find() local fold = function ( frame ) -- Merge template and #invoke arglist -- Precondition: -- frame -- template frame -- Postcondition: -- table, with combined arglist local r = { } local f = function ( apply ) if type( apply ) == "table" and type( apply.args ) == "table" then for k, v in pairs( apply.args ) do v = mw.text.trim( v ) if v ~= "" then r[ tostring( k ) ] = v end end -- for k, v end end -- f() f( frame:getParent() ) f( frame ) return r end -- fold() User.favorize = function ( accept, frame ) -- Guess user language -- Precondition: -- accept -- sequence table, with offered ISO 639 etc. codes -- frame -- frame, if available -- Postcondition: -- Returns string with best code, or nil if not ( User.self or User.langs ) then if not User.trials then User.tell = mw.message.new( User.sniffer ) if User.tell:exists() then User.trials = { } if not Multilingual.frame then if frame then Multilingual.frame = frame else Multilingual.frame = mw.getCurrentFrame() end end User.sin = Multilingual.frame:callParserFunction( "int", User.sniffer ) else User.langs = true end end if User.sin then local order = { } local post = { } local three = { } local unfold = { } local s, sin for i = 1, #accept do s = accept[ i ] if not User.trials[ s ] then if #s > 2 then if s:find( "-", 3, true ) then table.insert( unfold, s ) else table.insert( three, s ) end else if Multilingual.prefer[ s ] then table.insert( order, s ) else table.insert( post, s ) end end end end -- for i for i = 1, #post do table.insert( order, post[ i ] ) end -- for i for i = 1, #three do table.insert( order, three[ i ] ) end -- for i for i = 1, #unfold do table.insert( order, unfold[ i ] ) end -- for i for i = 1, #order do s = order[ i ] sin = User.tell:inLanguage( s ):plain() if sin == User.sin then User.self = s break -- for i else User.trials[ s ] = true end end -- for i end end return User.self end -- User.favorize() Multilingual.fair = function ( ask ) -- Format language specification according to RFC 5646 etc. -- Precondition: -- ask -- string or table, as created by .getLang() -- Postcondition: -- Returns string, or false local s = type( ask ) local q, r if s == "table" then q = ask elseif s == "string" then q = Multilingual.getLang( ask ) end if q and q.legal and mw.language.isKnownLanguageTag( q.base ) then r = q.base if q.n > 1 then local order = { "extlang", "script", "region", "other", "extension" } for i = 1, #order do s = q[ order[ i ] ] if s then r = string.format( "%s-%s", r, s ) end end -- for i end end return r or false end -- Multilingual.fair() Multilingual.fallback = function ( able, another ) -- Is another language suitable as replacement? -- Precondition: -- able -- language version specifier to be supported -- another -- language specifier of a possible replacement, -- or not to retrieve a fallback table -- Postcondition: -- Returns boolean, or table with fallback codes local r if type( able ) == "string" and #able > 0 then if type( another ) == "string" and #another > 0 then if able == another then r = true else local s = Multilingual.getBase( able ) if s == another then r = true else local others = mw.language.getFallbacksFor( s ) r = feasible( another, others ) end end else local s = Multilingual.getBase( able ) if s then r = mw.language.getFallbacksFor( s ) if r[ 1 ] == "en" then local d = fetchISO639( "fallback" ) if type( d ) == "table" and type( d[ s ] ) == "string" then r = mw.text.split( d[ s ], "|" ) table.insert( r, "en" ) end end end end end return r or false end -- Multilingual.fallback() Multilingual.findCode = function ( ask ) -- Retrieve code of local (current project or English) language name -- Precondition: -- ask -- string, with presumable language name -- A code itself will be identified, too. -- Postcondition: -- Returns string, or false local seek = mw.text.trim( ask ) local r = false if #seek > 1 then if seek:find( "[", 1, true ) then local wlink = fetch( "WLink" ) if wlink and type( wlink.getPlain ) == "function" then seek = wlink.getPlain( seek ) end end seek = mw.ustring.lower( seek ) if Multilingual.isLang( seek ) then r = Multilingual.fair( seek ) else local collection = favorites() for i = 1, #collection do r = find( seek, collection[ i ] ) if r then break -- for i end end -- for i end end return r end -- Multilingual.findCode() Multilingual.fix = function ( attempt ) -- Fix frequently mistaken language code -- Precondition: -- attempt -- string, with presumable language code -- Postcondition: -- Returns string with correction, or false if no problem known local r = fetchISO639( "correction" )[ attempt:lower() ] return r or false end -- Multilingual.fix() Multilingual.format = function ( apply, alien, alter, active, alert, frame, assembly, adjacent, ahead ) -- Format one or more languages -- Precondition: -- apply -- string with language list or item -- alien -- language of the answer -- -- nil, false, "*": native -- -- "!": current project -- -- "#": code, downcased, space separated -- -- "-": code, mixcase, space separated -- -- any valid code -- alter -- capitalize, if "c"; downcase all, if "d" -- capitalize first item only, if "f" -- downcase every first word only, if "m" -- active -- link items, if true -- alert -- string with category title in case of error -- frame -- if available -- assembly -- string with split pattern, if list expected -- adjacent -- string with list separator, else assembly -- ahead -- string to prepend first element, if any -- Postcondition: -- Returns string, or false if apply empty local r = false if apply then local slang if assembly then local bucket = mw.text.split( apply, assembly ) local shift = alter local separator if adjacent then separator = adjacent elseif alien == "#" or alien == "-" then separator = " " else separator = assembly end for k, v in pairs( bucket ) do slang = Multilingual.format( v, alien, shift, active, alert ) if slang then if r then r = string.format( "%s%s%s", r, separator, slang ) else r = slang if shift == "f" then shift = "d" end end end end -- for k, v if r and ahead then r = ahead .. r end else local single = mw.text.trim( apply ) if single == "" then r = false else local lapsus, slot slang = Multilingual.findCode( single ) if slang then if alien == "-" then r = slang elseif alien == "#" then r = slang:lower() else r = Multilingual.getName( slang, alien ) if active then slot = fill( slang, false, frame ) if slot then local wlink = fetch( "WLink" ) if wlink and type( wlink.getTarget ) == "function" then slot = wlink.getTarget( slot ) end else lapsus = alert end end end else r = single if active then local title = mw.title.makeTitle( 0, single ) if title.exists then slot = single end end lapsus = alert end if not r then r = single elseif alter == "c" or alter == "f" then r = mw.ustring.upper( mw.ustring.sub( r, 1, 1 ) ) .. mw.ustring.sub( r, 2 ) elseif alter == "d" then if Multilingual.isMinusculable( slang, r ) then r = mw.ustring.lower( r ) end elseif alter == "m" then if Multilingual.isMinusculable( slang, r ) then r = mw.ustring.lower( mw.ustring.sub( r, 1, 1 ) ) .. mw.ustring.sub( r, 2 ) end end if slot then if r == slot then r = string.format( "[[%s]]", r ) else r = string.format( "[[%s|%s]]", slot, r ) end end if lapsus and alert then r = string.format( "%s[[Category:%s]]", r, alert ) end end end end return r end -- Multilingual.format() Multilingual.getBase = function ( ask ) -- Retrieve base language from possibly combined ISO language code -- Precondition: -- ask -- language code -- Postcondition: -- Returns string, or false local r if ask then local slang = ask:match( "^%s*(%a%a%a?)-?%a*%s*$" ) if slang then r = slang:lower() else r = false end else r = false end return r end -- Multilingual.getBase() Multilingual.getLang = function ( ask ) -- Retrieve components of a RFC 5646 language code -- Precondition: -- ask -- language code with subtags -- Postcondition: -- Returns table with formatted subtags -- .base -- .region -- .script -- .suggest -- .year -- .extension -- .other -- .n local tags = mw.text.split( ask, "-" ) local s = tags[ 1 ] local r if s:match( "^%a%a%a?$" ) then r = { base = s:lower(), legal = true, n = #tags } for i = 2, r.n do s = tags[ i ] if #s == 2 then if r.region or not s:match( "%a%a" ) then r.legal = false else r.region = s:upper() end elseif #s == 4 then if s:match( "%a%a%a%a" ) then r.legal = ( not r.script ) r.script = s:sub( 1, 1 ):upper() .. s:sub( 2 ):lower() elseif s:match( "20%d%d" ) or s:match( "1%d%d%d" ) then r.legal = ( not r.year ) r.year = s else r.legal = false end elseif #s == 3 then if r.extlang or not s:match( "%a%a%a" ) then r.legal = false else r.extlang = s:lower() end elseif #s == 1 then s = s:lower() if s:match( "[tux]" ) then r.extension = s for k = i + 1, r.n do s = tags[ k ] if s:match( "^%w+$" ) then r.extension = string.format( "%s-%s", r.extension, s ) else r.legal = false end end -- for k else r.legal = false end break -- for i else r.legal = ( not r.other ) and s:match( "%a%a%a" ) r.other = s:lower() end if not r.legal then break -- for i end end -- for i if r.legal then r.suggest = Multilingual.fix( r.base ) if r.suggest then r.legal = false end end else r = { legal = false } end if not r.legal then local cnf = fetch( "Multilingual", "config" ) if cnf and type( cnf.scream ) == "string" then r.scream = cnf.scream end end return r end -- Multilingual.getLang() Multilingual.getName = function ( ask, alien ) -- Which name is assigned to this language code? -- Precondition: -- ask -- language code -- alien -- language of the answer -- -- nil, false, "*": native -- -- "!": current project -- -- any valid code -- Postcondition: -- Returns string, or false local r if ask then local slang = alien local tLang if slang then if slang == "*" then slang = Multilingual.fair( ask ) elseif slang == "!" then slang = favorites()[ 1 ] else slang = Multilingual.fair( slang ) end else slang = Multilingual.fair( ask ) end if not slang then slang = ask or "?????" end slang = slang:lower() tLang = fetch( "Multilingual", "names" ) if tLang then tLang = tLang[ slang ] if tLang then r = tLang[ ask ] end end if not r then if not Multilingual.ext.tMW then Multilingual.ext.tMW = { } end tLang = Multilingual.ext.tMW[ slang ] if tLang == nil then tLang = mw.language.fetchLanguageNames( slang ) if tLang then Multilingual.ext.tMW[ slang ] = tLang else Multilingual.ext.tMW[ slang ] = false end end if tLang then r = tLang[ ask ] end end if not r then r = mw.language.fetchLanguageName( ask:lower(), slang ) if r == "" then r = false end end else r = false end return r end -- Multilingual.getName() Multilingual.i18n = function ( available, alt, frame ) -- Select translatable message -- Precondition: -- available -- table, with mapping language code ./. text -- alt -- string|nil|false, with fallback text -- frame -- frame, if available -- Returns -- 1. string|nil|false, with selected message -- 2. string|nil|false, with language code local r1, r2 if type( available ) == "table" then local codes = { } local trsl = { } local slang for k, v in pairs( available ) do if type( k ) == "string" and type( v ) == "string" then slang = mw.text.trim( k:lower() ) table.insert( codes, slang ) trsl[ slang ] = v end end -- for k, v slang = Multilingual.userLang( codes, frame ) if slang and trsl[ slang ] then r1 = mw.text.trim( trsl[ slang ] ) if r1 == "" then r1 = false else r2 = slang end end end if not r1 and type( alt ) == "string" then r1 = mw.text.trim( alt ) if r1 == "" then r1 = false end end return r1, r2 end -- Multilingual.i18n() Multilingual.int = function ( access, alien, apply ) -- Translated system message -- Precondition: -- access -- message ID -- alien -- language code -- apply -- nil, or sequence table with parameters $1, $2, ... -- Postcondition: -- Returns string, or false local o = mw.message.new( access ) local r if o:exists() then if type( alien ) == "string" then o:inLanguage( alien:lower() ) end if type( apply ) == "table" then o:params( apply ) end r = o:plain() end return r or false end -- Multilingual.int() Multilingual.isLang = function ( ask, additional ) -- Could this be an ISO language code? -- Precondition: -- ask -- language code -- additional -- true, if Wiki codes like "simple" permitted -- Postcondition: -- Returns boolean local r, s if additional then s = ask else s = Multilingual.getBase( ask ) end if s then r = mw.language.isKnownLanguageTag( s ) if r then r = not Multilingual.fix( s ) elseif additional then r = Multilingual.exotic[ s ] or false end else r = false end return r end -- Multilingual.isLang() Multilingual.isLangWiki = function ( ask ) -- Could this be a Wiki language version? -- Precondition: -- ask -- language version specifier -- Postcondition: -- Returns boolean local r local s = Multilingual.getBase( ask ) if s then r = mw.language.isSupportedLanguage( s ) or Multilingual.exotic[ ask ] else r = false end return r end -- Multilingual.isLangWiki() Multilingual.isMinusculable = function ( ask, assigned ) -- Could this language name become downcased? -- Precondition: -- ask -- language code, or nil -- assigned -- language name, or nil -- Postcondition: -- Returns boolean local r = true if ask then local cnf = fetch( "Multilingual", "config" ) if cnf then local s = string.format( " %s ", ask:lower() ) if type( cnf.stopMinusculization ) == "string" and cnf.stopMinusculization:find( s, 1, true ) then r = false end if r and assigned and type( cnf.seekMinusculization ) == "string" and cnf.seekMinusculization:find( s, 1, true ) and type( cnf.scanMinusculization ) == "string" then local scan = assigned:gsub( "[%(%)]", " " ) .. " " if not scan:find( cnf.scanMinusculization ) then r = false end end end end return r end -- Multilingual.isMinusculable() Multilingual.isRTL = function ( ask ) -- Check whether language is written right-to-left -- Precondition: -- ask -- string, with language (or script) code -- Returns true, if right-to-left local r Multilingual.rtl = Multilingual.rtl or { } r = Multilingual.rtl[ ask ] if type( r ) ~= "boolean" then local bib = fetch( "ISO15924" ) if type( bib ) == "table" and type( bib.isRTL ) == "function" then r = bib.isRTL( ask ) else r = mw.language.new( ask ):isRTL() end Multilingual.rtl[ ask ] = r end return r end -- Multilingual.isRTL() Multilingual.message = function ( arglist, frame ) -- Show text in best match of user language like system message -- Precondition: -- arglist -- template arguments -- frame -- frame, if available -- Postcondition: -- Returns string with appropriate text local r if type( arglist ) == "table" then local t = { } local m, p, save for k, v in pairs( arglist ) do if type( k ) == "string" and type( v ) == "string" then v = mw.text.trim( v ) if v ~= "" then if k:match( "^%l%l" ) then t[ k ] = v elseif k:match( "^%$%d$" ) and k ~= "$0" then p = p or { } k = tonumber( k:match( "^%$(%d)$" ) ) p[ k ] = v if not m or k > m then m = k end end end end end -- for k, v if type( arglist[ "-" ] ) == "string" then save = arglist[ arglist[ "-" ] ] end r = Multilingual.i18n( t, save, frame ) if p and r and r:find( "$", 1, true ) then t = { } for i = 1, m do t[ i ] = p[ i ] or "" end -- for i r = mw.message.newRawMessage( r, t ):plain() end end return r or "" end -- Multilingual.message() Multilingual.sitelink = function ( all, frame ) -- Make link at local or other site with optimal linktext translation -- Precondition: -- all -- string or table or number, item ID or entity -- frame -- frame, if available -- Postcondition: -- Returns string with any helpful internal link, or plain text local s = type( all ) local object, r if s == "table" then object = all elseif s == "string" then object = mw.wikibase.getEntity( all ) elseif s == "number" then object = mw.wikibase.getEntity( string.format( "Q%d", all ) ) end if type( object ) == "table" then local collection = object.sitelinks local entry s = false if type( collection ) == "table" then Multilingual.site = Multilingual.site or mw.wikibase.getGlobalSiteId() entry = collection[ Multilingual.site ] if entry then s = ":" .. entry.title elseif collection.enwiki then s = "w:en:" .. collection.enwiki.title end end r = Multilingual.wikibase( object, "labels", frame ) if s then if s == ":" .. r then r = string.format( "[[%s]]", s ) else r = string.format( "[[%s|%s]]", s, r ) end end end return r or "" end -- Multilingual.sitelink() Multilingual.tabData = function ( access, at, alt, frame ) -- Retrieve translated keyword from commons:Data:****.tab -- Precondition: -- access -- string, with page identification on Commons -- at -- string, with keyword -- alt -- string|nil|false, with fallback text -- frame -- frame, if available -- Returns -- 1. string|nil|false, with selected message -- 2. language code, or "error" local data = fetchData( access ) local r1, r2 if type( data ) == "table" then if type( at ) == "string" then local seek = mw.text.trim( at ) if seek == "" then r1 = "EMPTY Multilingual.tabData key" else local e, poly for i = 1, #data do e = data[ i ] if type( e ) == "table" then if e[ 1 ] == seek then if type( e[ 2 ] ) == "table" then poly = e[ 2 ] else r1 = "INVALID Multilingual.tabData bad #" .. tostring( i ) end break -- for i end else break -- for i end end -- for i if poly then data = poly else r1 = "UNKNOWN Multilingual.tabData key: " .. seek end end else r1 = "INVALID Multilingual.tabData key" end else r1 = data end if r1 then r2 = "error" elseif data then r1, r2 = Multilingual.i18n( data, alt, frame ) r2 = r2 or "error" end return r1, r2 end -- Multilingual.tabData() Multilingual.userLang = function ( accept, frame ) -- Try to support user language by application -- Precondition: -- accept -- string or table -- space separated list of available ISO 639 codes -- Default: project language, or English -- frame -- frame, if available -- Postcondition: -- Returns string with appropriate code local s = type( accept ) local codes, r, slang if s == "string" then codes = mw.text.split( accept:lower(), "%s+" ) elseif s == "table" then codes = { } for i = 1, #accept do s = accept[ i ] if type( s ) == "string" and s ~= "" then table.insert( codes, s:lower() ) end end -- for i end slang = User.favorize( codes, frame ) if slang then if feasible( slang, codes ) then r = slang elseif slang:find( "-", 1, true ) then slang = Multilingual.getBase( slang ) if feasible( slang, codes ) then r = slang end end if not r then local others = mw.language.getFallbacksFor( slang ) for i = 1, #others do slang = others[ i ] if feasible( slang, codes ) then r = slang break -- for i end end -- for i end end if not r then local back = favorites() for i = 1, #back do slang = back[ i ] if feasible( slang, codes ) then r = slang break -- for i end end -- for i if not r and codes[ 1 ] then r = codes[ 1 ] end end return r or favorites()[ 1 ] end -- Multilingual.userLang() Multilingual.userLangCode = function () -- Guess a user language code -- Postcondition: -- Returns code of current best guess return User.self or favorites()[ 1 ] end -- Multilingual.userLangCode() Multilingual.wikibase = function ( all, about, attempt, frame ) -- Optimal translation of wikibase component -- Precondition: -- all -- string or table, object ID or entity -- about -- boolean, true "descriptions" or false "labels" -- attempt -- string or not, code of preferred language -- frame -- frame, if available -- Postcondition: -- Returns -- 1. string, with selected message -- 2. string, with language code, or not local s = type( all ) local object, r, r2 if s == "table" then object = all elseif s == "string" then object = mw.wikibase.getEntity( all ) end if type( object ) == "table" then if about and about ~= "labels" then s = "descriptions" else s = "labels" end object = object[ s ] if type( object ) == "table" then if object[ attempt ] then r = object[ attempt ].value r2 = attempt else local poly for k, v in pairs( object ) do poly = poly or { } poly[ k ] = v.value end -- for k, v if poly then r, r2 = Multilingual.i18n( poly, nil, frame ) end end end end return r or "", r2 end -- Multilingual.wikibase() Failsafe.failsafe = function ( atleast ) -- Retrieve versioning and check for compliance -- Precondition: -- atleast -- string, with required version -- or wikidata|item|~|@ or false -- Postcondition: -- Returns string -- with queried version/item, also if problem -- false -- if appropriate -- 2020-08-17 local since = atleast local last = ( since == "~" ) local linked = ( since == "@" ) local link = ( since == "item" ) local r if last or link or linked or since == "wikidata" then local item = Failsafe.item since = false if type( item ) == "number" and item > 0 then local suited = string.format( "Q%d", item ) if link then r = suited else local entity = mw.wikibase.getEntity( suited ) if type( entity ) == "table" then local seek = Failsafe.serialProperty or "P348" local vsn = entity:formatPropertyValues( seek ) if type( vsn ) == "table" and type( vsn.value ) == "string" and vsn.value ~= "" then if last and vsn.value == Failsafe.serial then r = false elseif linked then if mw.title.getCurrentTitle().prefixedText == mw.wikibase.getSitelink( suited ) then r = false else r = suited end else r = vsn.value end end end end end end if type( r ) == "nil" then if not since or since <= Failsafe.serial then r = Failsafe.serial else r = false end end return r end -- Failsafe.failsafe() -- Export local p = { } p.fair = function ( frame ) -- Format language code -- 1 -- language code local s = mw.text.trim( frame.args[ 1 ] or "" ) return Multilingual.fair( s ) or "" end -- p.fair p.fallback = function ( frame ) -- Is another language suitable as replacement? -- 1 -- language version specifier to be supported -- 2 -- language specifier of a possible replacement local s1 = mw.text.trim( frame.args[ 1 ] or "" ) local s2 = mw.text.trim( frame.args[ 2 ] or "" ) local r = Multilingual.fallback( s1, s2 ) if type( r ) == "table" then r = r[ 1 ] else r = r and "1" or "" end return r end -- p.fallback p.findCode = function ( frame ) -- Retrieve language code from language name -- 1 -- name in current project language local s = mw.text.trim( frame.args[ 1 ] or "" ) return Multilingual.findCode( s ) or "" end -- p.findCode p.fix = function ( frame ) local r = frame.args[ 1 ] if r then r = Multilingual.fix( mw.text.trim( r ) ) end return r or "" end -- p.fix p.format = function ( frame ) -- Format one or more languages -- 1 -- language list or item -- slang -- language of the answer, if not native -- * -- native -- ! -- current project -- any valid code -- shift -- capitalize, if "c"; downcase, if "d" -- capitalize first item only, if "f" -- link -- 1 -- link items -- scream -- category title in case of error -- split -- split pattern, if list expected -- separator -- list separator, else split -- start -- prepend first element, if any local r local link if frame.args.link == "1" then link = true end r = Multilingual.format( frame.args[ 1 ], frame.args.slang, frame.args.shift, link, frame.args.scream, frame, frame.args.split, frame.args.separator, frame.args.start ) return r or "" end -- p.format p.getBase = function ( frame ) -- Retrieve base language from possibly combined ISO language code -- 1 -- code local s = mw.text.trim( frame.args[ 1 ] or "" ) return Multilingual.getBase( s ) or "" end -- p.getBase p.getName = function ( frame ) -- Retrieve language name from ISO language code -- 1 -- code -- 2 -- language to be used for the answer, if not native -- ! -- current project -- * -- native -- any valid code local s = mw.text.trim( frame.args[ 1 ] or "" ) local slang = frame.args[ 2 ] local r Multilingual.frame = frame if slang then slang = mw.text.trim( slang ) end r = Multilingual.getName( s, slang ) return r or "" end -- p.getName p.int = function ( frame ) -- Translated system message -- 1 -- message ID -- lang -- language code -- $1, $2, ... -- parameters local sysMsg = frame.args[ 1 ] local r if sysMsg then sysMsg = mw.text.trim( sysMsg ) if sysMsg ~= "" then local n = 0 local slang = frame.args.lang local i, params, s if slang == "" then slang = false end for k, v in pairs( frame.args ) do if type( k ) == "string" then s = k:match( "^%$(%d+)$" ) if s then i = tonumber( s ) if i > n then n = i end end end end -- for k, v if n > 0 then local s params = { } for i = 1, n do s = frame.args[ "$" .. tostring( i ) ] or "" table.insert( params, s ) end -- for i end r = Multilingual.int( sysMsg, slang, params ) end end return r or "" end -- p.int p.isLang = function ( frame ) -- Could this be an ISO language code? -- 1 -- code local s = mw.text.trim( frame.args[ 1 ] or "" ) local lucky, r = pcall( Multilingual.isLang, s ) return r and "1" or "" end -- p.isLang p.isLangWiki = function ( frame ) -- Could this be a Wiki language version? -- 1 -- code -- Returns non-empty, if possibly language version local s = mw.text.trim( frame.args[ 1 ] or "" ) local lucky, r = pcall( Multilingual.isLangWiki, s ) return r and "1" or "" end -- p.isLangWiki p.isRTL = function ( frame ) -- Check whether language is written right-to-left -- 1 -- string, with language code -- Returns non-empty, if right-to-left local s = mw.text.trim( frame.args[ 1 ] or "" ) return Multilingual.isRTL( s ) and "1" or "" end -- p.isRTL() p.message = function ( frame ) -- Translation of text element return Multilingual.message( fold( frame ), frame ) end -- p.message p.sitelink = function ( frame ) -- Make link at local or other site with optimal linktext translation -- 1 -- item ID local s = mw.text.trim( frame.args[ 1 ] or "" ) local r if s:match( "^%d+$") then r = tonumber( s ) elseif s:match( "^Q%d+$") then r = s end if r then r = Multilingual.sitelink( r, frame ) end return r or s end -- p.sitelink p.tabData = function ( frame ) -- Retrieve best message text from Commons Data -- 1 -- page identification on Commons -- 2 -- keyword -- alt -- fallback text local suite = frame.args[ 1 ] local seek = frame.args[ 2 ] local salt = frame.args.alt local r = Multilingual.tabData( suite, seek, salt, frame ) return r end -- p.tabData p.userLang = function ( frame ) -- Which language does the current user prefer? -- 1 -- space separated list of available ISO 639 codes local s = mw.text.trim( frame.args[ 1 ] or "" ) return Multilingual.userLang( s, frame ) end -- p.userLang p.wikibase = function ( frame ) -- Optimal translation of wikibase component -- 1 -- object ID -- 2 -- 1 for "descriptions", 0 for "labels". -- or either "descriptions" or "labels" local r local s = mw.text.trim( frame.args[ 1 ] or "" ) if s ~= "" then local s2 = mw.text.trim( frame.args[ 2 ] or "0" ) local slang = mw.text.trim( frame.args.lang or "" ) local large = ( s2 ~= "" and s2 ~= "0" ) if slang == "" then slang = false end r = Multilingual.wikibase( s, large, slang, frame ) end return r or "" end -- p.wikibase p.failsafe = function ( frame ) -- Versioning interface local s = type( frame ) local since if s == "table" then since = frame.args[ 1 ] elseif s == "string" then since = frame end if since then since = mw.text.trim( since ) if since == "" then since = false end end return Failsafe.failsafe( since ) or "" end -- p.failsafe() p.Multilingual = function () return Multilingual end -- p.Multilingual return p 6fc38809302c05872fef2c1602e2d4a3be5143ec Template:ISO 3166 code 10 184 421 2022-08-09T02:50:13Z wikipedia>Neveselbert 0 safesubst wikitext text/x-wiki {{safesubst<noinclude/>:#invoke:ISO 3166|code|{{{1}}}|{{{2|}}}}}<noinclude> {{Documentation|content={{ISO 3166 conversion template doc}}}} </noinclude> 06f8325798ef5cb3ed4eb035d562ab9f8656cc6c Template:Country2nationality 10 183 419 2022-08-09T02:51:23Z wikipedia>Neveselbert 0 safesubst wikitext text/x-wiki <includeonly>{{safesubst<noinclude/>:#ifeq:{{safesubst<noinclude/>:#invoke:String|len|s={{safesubst<noinclude/>:ISO 3166 code|{{{1}}}}}}}|2|{{safesubst<noinclude/>:Iso2nationality| {{safesubst<noinclude/>:ISO 3166 code|{{{1}}}}} }}| {{safesubst<noinclude/>:#if:{{{1|}}}| {{safesubst<noinclude/>:#switch: {{{1}}} | England = English | Scotland = Scottish | Wales = Welsh | Catalonia = Catalan | Kosovo = Kosovan }}}}}}</includeonly><noinclude> {{documentation}} </noinclude> 9c6b20fc59b2033477fb4dea0ffd1984bd673368 Module:Find country 828 198 450 2022-08-09T10:48:32Z wikipedia>Neveselbert 0 'US', 'U.S.', Scribunto text/plain --[[ v1.00 Test the string against the list of countries/continents. Return the first word which matches a country/continent name ... unless the "match=" parameter specifies a different match. If there is no match, then return an empty string ... unless the "nomatch" parameter specifies something different ]] local getArgs = require('Module:Arguments').getArgs local p = {} -- config local nomatch = "" local matchnum = 1 local countryList = { 'South Africa', 'the Central African Republic', 'Central African Republic', 'Africa', 'Antarctica', 'Central Asia', 'South Asia', 'South East Asia', 'Southeast Asia', 'Asia', 'the Caribbean', 'Caribbean', 'Eurasia', 'Europe', 'the Middle East', 'Middle East', 'Central America', 'North America', 'South America', 'Oceania', 'the Americas', 'Afghanistan', 'Albania', 'Algeria', 'American Samoa', 'Andorra', 'Angola', 'Anguilla', 'Antigua and Barbuda', 'Argentina', 'Armenia', 'Aruba', 'Australia', 'the Austrian Empire', 'Austrian Empire', 'Austria-Hungary', 'Austria', 'Azerbaijan', 'the Bahamas', 'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bermuda', 'Bhutan', 'Bolivia', 'Bosnia and Herzegovina', 'Botswana', 'Brazil', 'Brunei Darussalam', 'Brunei', 'Bulgaria', 'Burkina Faso', 'Burundi', 'Cambodia', 'Cameroon', 'Canada', 'Cape Verde', 'the Cayman Islands', 'Cayman Islands', 'Chad', 'Chile', "the People's Republic of China", "People's Republic of China", 'China PR', 'PR China', 'China', 'Colombia', 'Comoros', 'the Republic of the Congo', 'the Democratic Republic of the Congo', 'Democratic Republic of the Congo', 'Congo DR', 'DR Congo', 'DRC', 'the Congo', 'Congo', 'Cook Islands', 'Costa Rica', 'Croatia', 'Cuba', 'Curaçao', 'Curacao', 'Cyprus', 'the Czech Republic', 'Czech Republic', 'Czechia', 'Denmark', 'Djibouti', 'the Dominican Republic', 'Dominican Republic', 'Dominica', 'East Timor', 'Timor-Leste', 'Ecuador', 'Egypt', 'El Salvador', 'England', 'Eritrea', 'Estonia', 'Eswatini', 'Ethiopia', 'the Falkland Islands', 'Falkland Islands', 'the Faroe Islands', 'Faroe Islands', 'Fiji', 'Finland', 'France', 'Gabon', 'the Gambia', 'Gambia', 'Georgia', 'Germany', 'Ghana', 'Gibraltar', 'Great Britain', 'Britain', 'Greece', 'Grenada', 'Guam', 'Guatemala', 'Papua New Guinea', 'Equatorial Guinea', 'Guinea-Bissau', 'Guinea', 'Guyana', 'Haiti', 'Honduras', 'Hong Kong', 'Hungary', 'Iceland', 'India', 'Indonesia', 'Iran', 'Iraq', 'Northern Ireland', 'the Republic of Ireland', 'Republic of Ireland', 'Ireland', 'Israel', 'Italy', 'Ivory Coast', "Côte d'Ivoire", 'Jamaica', 'Japan', 'Jordan', 'Kazakhstan', 'Kenya', 'Kiribati', 'Kosovo', 'the Republic of Kosovo', 'Republic of Kosovo', 'Kuwait', 'Kyrgyzstan', 'the Kyrgyz Republic', 'Kyrgyz Republic', "the Lao People's Democratic Republic", "Lao People's Democratic Republic", 'Laos', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 'Libya', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Macau', 'the Republic of Macedonia', 'Republic of Macedonia', 'North Macedonia', 'Macedonia', 'Madagascar', 'Malawi', 'Malaysia', 'the Maldives', 'Maldives', 'Mali', 'Malta', 'the Marshall Islands', 'Marshall Islands', 'Mauritania', 'Mauritius', 'Mexico', 'the Federated States of Micronesia', 'Federated States of Micronesia', 'Micronesia', 'FSM', 'Moldova', 'Monaco', 'Mongolia', 'Montenegro', 'Montserrat', 'Morocco', 'Mozambique', 'Myanmar', 'Namibia', 'Nauru', 'Nepal', 'the Netherlands', 'Netherlands', 'New Caledonia', 'New Zealand', 'Nicaragua', 'Nigeria', 'Niger', 'North Korea', "the People's Democratic Republic of Korea", "the Democratic People's Republic of Korea", "Democratic People's Republic of Korea", "People's Democratic Republic of Korea", 'DPR Korea', 'Korea DPR', 'Norway', 'Oman', 'the Ottoman Empire', 'Ottoman Empire', 'Ottoman Egypt', 'Pakistan', 'Palau', 'Mandatory Palestine', 'Palestine', 'the Palestinian territories', 'Palestinian territories', 'Panama', 'Paraguay', 'Peru', 'the Philippines', 'Philippines', 'Poland', 'Portugal', 'Puerto Rico', 'the Spanish Virgin Islands', 'Spanish Virgin Islands', 'Qatar', 'Romania', 'the Russian Empire', 'Russian Empire', 'the Russian Federation', 'Russian Federation', 'Russia', 'Rwanda', 'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Vincent and the Grenadines', 'Western Samoa', 'Samoa', 'San Marino', 'São Tomé and Príncipe', 'São Tomé and Príncipe', 'Sao Tome and Principe', 'Saudi Arabia', 'Scotland', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapore', 'Slovakia', 'Slovenia', 'the Solomon Islands', 'Solomon Islands', 'Somalia', 'South Korea', 'the Republic of Korea', 'Korea Republic', 'South Sudan', 'Sudan', 'Spain', 'Sri Lanka', 'Suriname', 'Swaziland', 'Sweden', 'Switzerland', 'Syria', 'Tahiti', 'the Republic of China', 'Republic of China', 'Taiwan', 'Tajikistan', 'Tanzania', 'Thailand', 'Togo', 'Tonga', 'Trinidad and Tobago', 'Trinidad', 'Tobago', 'Tunisia', 'Turkey', 'Turkmenistan', 'Turks and Caicos Islands', 'Tuvalu', 'Uganda', 'Ukraine', 'the United Arab Emirates', 'the UAE', 'the U.A.E.', 'United Arab Emirates', 'UAE', 'U.A.E.', 'the United Kingdom', 'United Kingdom', 'the UK', 'the U.K.', 'UK', 'U.K.', 'the United States of America', 'the United States', 'the USA', 'the U.S.A.', 'United States of America', 'United States', 'US', 'U.S.', 'USA', 'U.S.A.', 'America', 'Uruguay', 'Uzbekistan', 'Vanuatu', 'Venezuela', 'Vietnam', 'the British Virgin Islands', 'British Virgin Islands', 'UK Virgin Islands', 'U.K. Virgin Islands', 'the United States Virgin Islands', 'the US Virgin Islands', 'the U.S. Virgin Islands', 'United States Virgin Islands', 'US Virgin Islands', 'U.S. Virgin Islands', 'the Virgin Islands', 'Virgin Islands', 'Wales', 'Yemen', 'Zambia', 'Zimbabwe', 'Find country/testcases' } -- returns the name of a country that is found in the string -- ... or an empty string if there is no match function findcountryinstring(str) nMatches = 0 myMatches ={} str=" " .. str:gsub("^%s*(.-)%s*$", "%1") .. " " -- check agaist each country -- if there is a match, then return that country for i, thiscountry in ipairs(countryList) do if mw.ustring.find(str, thiscountry) then nMatches = nMatches + 1 myMatches[nMatches] = thiscountry end end if (nMatches == 0) then -- none of the title words matches a whole country return nomatch end if ((matchnum >= 1) and (matchnum <= nMatches)) then return myMatches[matchnum] end if (matchnum < 0) then matchnum = matchnum + 1 -- so that -1 is the last match etc if ((matchnum + nMatches) >= 1) then return myMatches[matchnum + nMatches] end end -- if we get here, we have not found a match at the position specified by "matchnum" return nomatch end function p.main(frame) local args = getArgs(frame) return p._main(args) end function p._main(args) if (args['nomatch'] ~= nil) then nomatch = args['nomatch'] end -- by default, we return the first match -- but the optional "C" paarmeter sets the "matchnum" variable, which -- * for a positive matchnum "n", returns the nth match if it exists -- * for a positive matchnum "n", returns (if it exists) the nth match -- counting backwards from the end. -- So "match=-1" returns the last match -- and "match=-3" returns the 3rd-last match if (args['match'] ~= nil) then matchnum = tonumber(args['match']) if ((matchnum == nil) or (matchnum == 0)) then matchnum = 1 end end -- by default, we use the current page -- but if the "string=" parameters is supplied, we use that -- so we try the parameter first thispagename = nil if ((args['string'] ~= nil) and (args['string'] ~= "")) then -- we have a non-empty "string" parameter, so we use it thisstring = args['string'] else -- get the page title thispage = mw.title.getCurrentTitle() thisstring = thispage.text; end -- now check the pagename to try to find a country result = findcountryinstring(thisstring) if (result == "") then return nomatch end return result end return p c15468102dad4b0bd85392d3ecf49bcb6e12c324 Module:File link/doc 828 1733 3275 2022-08-10T15:49:41Z wikipedia>JrandWP 0 high-use wikitext text/x-wiki {{high-use}} {{Module rating|protected}} {{Lua|Module:Yesno|Module:Arguments}} This module is used to construct wikitext links to files. It is primarily useful for templates and modules that use complicated logic to make file links. Simple file links should be made with wikitext markup directly, as it uses less resources than calling this module. For help with wikitext file markup please refer to the [[mw:Help:Images|documentation at mediawiki.org]]. == Usage from wikitext == From wikitext, this module should be called from a template, usually {{tl|file link}}. Please see the template page for documentation. However, it can also be called using the syntax <code><nowiki>{{#invoke:File link|main|</nowiki>''arguments''<nowiki>}}</nowiki></code>. == Usage from Lua == First, you need to import the module. <syntaxhighlight lang="lua"> local mFileLink = require('Module:File link') </syntaxhighlight> Then you can make file links using the <code>_main</code> function. <syntaxhighlight lang="lua"> mFileLink._main(args) </syntaxhighlight> <var>args</var> is a table of arguments that can have the following keys: * <code>file</code> - the filename. (required) * <code>format</code> - the file format, e.g. 'thumb', 'thumbnail', 'frame', 'framed', or 'frameless'. * <code>formatfile</code> - a filename to specify with the 'thumbnail' format option. The filename specified will be used instead of the automatically generated thumbnail. * <code>border</code> - set this to true or "yes" (or any other value recognized as true by [[Module:Yesno]]) to set a border for the image. * <code>location</code> - the horizontal alignment of the file, e.g. 'right', 'left', 'center', or 'none'. * <code>alignment</code> - the vertical alignment of the file, e.g. 'baseline', 'middle', 'sub', 'super', 'text-top', 'text-bottom', 'top', or 'bottom'. * <code>size</code> - the size of the image, e.g. '100px', 'x100px' or '100x100px'. * <code>upright</code> - the 'upright' parameter, used for setting the size of tall and thin images. * <code>link</code> - the page that the file should link to. Use the blank string <nowiki>''</nowiki> to suppress the default link to the file description page. * <code>alt</code> - the alt text. Use the blank string <nowiki>''</nowiki> to suppress the default alt text. * <code>caption</code> - a caption for the file. * <code>page</code> - sets a page number for multi-paged files such as PDFs. * <code>class</code> - adds a <code>class</code> parameter to image links. The MediaWiki software adds this parameter to the <code>class="..."</code> attribute of the image's <code><nowiki><img /></nowiki></code> element when the page is rendered into HTML. * <code>lang</code> - adds a language attribute to specify what language to render the file in. * <code>start</code> - specifies a start time for audio and video files. * <code>end</code> - specifies an end time for audio and video files. * <code>thumbtime</code> - specifies the time to use to generate the thumbnail image for video files. To see the effect of each of these parameters, see the [[mw:Help:Images#Format|images help page on mediawiki.org]]. === Examples === With the file only: <syntaxhighlight lang="lua"> mFileLink.main{file = 'Example.png'} -- Renders as [[File:Example.png]] </syntaxhighlight> With format, size, link and caption options: <syntaxhighlight lang="lua"> mFileLink.main{ file = 'Example.png', format = 'thumb', size = '220px', link = 'Wikipedia:Sandbox', caption = 'An example.' } -- Renders as [[File:Example.png|thumb|220px|link=Wikipedia:Sandbox|An example.]] </syntaxhighlight> With format, size, and border: <syntaxhighlight lang="lua"> mFileLink.main{ file = 'Example.png', format = 'frameless', size = '220px', border = true } -- Renders as [[File:Example.png|frameless|border|220px]] </syntaxhighlight> <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories go here and interwikis go in Wikidata. --> }}</includeonly> 3ed97b9b6e53a4e041285a77da0c01f25e581d13 Template:Country data Denmark 10 1199 2528 2022-08-11T13:37:10Z w>Skjoldbro 0 border-navy wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Denmark | flag alias = Flag of Denmark.svg | flag alias-state = Flag of Denmark (state).svg | border-state = | flag alias-naval = Naval Ensign of Denmark.svg | link alias-naval = Royal Danish Navy | link alias-army = Royal Danish Army | flag alias-army = Flag of Denmark (state).svg | link alias-air force = Royal Danish Air Force | flag alias-air force = Flag of Denmark (state).svg | flag alias-navy = Naval Ensign of Denmark.svg | link alias-navy = Royal Danish Navy | border-army = | border-air force = | border-naval = | border-navy = | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = state | redir1 = DNK | redir2 = DEN | redir3 = Kingdom of Denmark </noinclude> }} 5598dd9004bbdd8ead3c89bfede63f7ca49a6169 Template:Count 10 192 438 2022-08-11T14:32:42Z wikipedia>Neveselbert 0 cr. wikitext text/x-wiki {{safesubst<noinclude/>:#ifexpr:{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}>0|{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}|{{{base|0}}}}}<noinclude>{{documentation}}</noinclude> ccdb0aa784669ceae716044a9267ac7c4dea7283 Template:ISO 15924 script codes and related Unicode data/row 10 1630 2965 2022-08-12T20:49:21Z w>DePiep 0 wikitext text/x-wiki |- {{#invoke:anchor|main|{{{alpha4|}}}}} | <!-- ISO alpha4 -->{{mono|1={{{alpha4|}}}}} | style="text-align: center" |<!-- ISO numerical code -->{{mono|1={{ISO 15924 number|alpha4={{{alpha4|}}}}}}} | <!-- enwiki article -->[[{{ISO 15924/wp-article|1={{{alpha4|}}}}}|{{ISO 15924 name|1={{{alpha4|}}}}}]] | <!-- dir -->{{#invoke:WikidataIB|getValue|P1406|{{{direction|}}} |qid={{ISO 15924/qid|1={{{alpha4|}}}|default=}} |onlysourced=no |fwd =ALL}} <!-- Unicode data OR not-in-Unicode -->{{#if:{{ISO 15924 alias |1={{{alpha4|}}}|default=}} | {{!}} <!-- Unicode alias -->{{ISO 15924 alias|1={{{alpha4|}}}}} {{!}} style="text-align: right;" {{!}} <!-- version -->{{{version|}}} {{!}} style="text-align: right;" {{!}} <!-- # chars -->{{{chars|}}} {{!}} <!-- note -->{{{note|}}} |<!-- else: so this one is not in unicode. 4 cols; now show unicode-status (the negative one then; not the note): --> {{!}} colspan="4" style="margin: 0; text-indent: -1em; padding-left: 1em;" {{!}} <span style="visibility: hidden; ">ZZ</span>&mdash; {{{unicode-status|}}}<!-- cell format: indent text and add "ZZ" prefix to sort after regular A-Z Aliases. -->{{#if:{{{note|}}}|<nowiki>;</nowiki> {{{note|}}}}} }}<!-- if-else: end --> | <!-- Chapter pdf e link -->{{ISO 15924/unicode-chapter|1={{{alpha4|}}}|format=pdf}}<!-- --><noinclude> |} {{documentation|1=Template:ISO 15924 script codes and related Unicode data/doc}}</noinclude> 90539cc1867b59e284ce2bc848302e34926afd09 Template:Infobox tea 10 1151 2477 2022-08-15T00:51:07Z w>Goszei 0 no default width wikitext text/x-wiki <includeonly>{{Infobox | above = {{{Tea_name}}} | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{Tea_image|}}}|size={{{image_width|}}}}} | label1 = Type | data1 = {{{Tea_type|}}} | data2 = <hr style="background-color:#{{Infobox tea/types|{{{Tea_color}}}}}; height:2px;" /> | label3 = Other names | data3= {{{Tea_names|}}} | label4 = Origin | data4 = {{{Tea_origin|}}} | data5 = <hr style="background-color:#{{Infobox tea/types|{{{Tea_color}}}}}; height:2px;" /> | label6 = Quick description | data6= {{{Tea_quick|}}} | data7 = <hr style="background-color:#{{Infobox tea/types|{{{Tea_color}}}}}; height:2px;" /> | label8 = Temperature | data8 = {{{Tea_temperature|}}} | label9 = Time | data9 = {{{Tea_time|}}} | data11 = {{{module|}}} }}</includeonly><noinclude> {{documentation}} </noinclude> f24efc05f5d1c955f4cd10fa41449c160b3fe8d2 Template:Fix 10 1086 2371 2022-08-19T21:02:28Z wikipedia>Izno 0 per request wikitext text/x-wiki {{#switch:{{{subst|¬}}} |¬={{category handler |template=[[Category:Templates needing substitution checking]] |nocat={{{nocat|<noinclude>true</noinclude>}}} }} |SUBST=[[Category:Pages with incorrectly substituted templates]] }}{{Category handler |main={{Fix/category |cat-date={{{cat-date|}}} |cat={{{cat|}}} |cat-date2={{{cat-date2|}}} |cat2={{{cat2|}}} |cat-date3={{{cat-date3|}}} |cat3={{{cat3|}}} |date={{{date|}}} }} |template={{#if:{{{name|}}}|{{#ifeq:{{{name}}}|{{ROOTPAGENAME}}||{{#if:{{{date|}}}||[[Category:Templates including undated clean-up tags]]}}}}}} |subpage=no }}{{#if:{{{text|}}} |<sup class="noprint Inline-Template {{{class|}}}" style="white-space:nowrap;">&#91;<i>{{#if:{{{pre-text|}}} |{{{pre-text}}}&#32; }}[[{{{link|Wikipedia:Cleanup}}}|<span title="{{#invoke:string|replace|source={{delink|1={{{title|{{{link|Wikipedia:Cleanup}}}}}}{{#if:{{{date|}}}|&#32;({{{date}}})}}}}|pattern=" |replace=&quot; |plain=true}}">{{{text|}}}</span>]]{{#if:{{{post-text|}}} |&#32;{{{post-text}}} }}</i>&#93;</sup>|{{{special|}}} }}<noinclude> {{Documentation}} <!-- Add cats and interwikis to the /doc subpage, not here! --> </noinclude> 64d5219edf0f07567b3006bfc9681f9408b164b0 Template:Used in system 10 1326 2661 2022-08-20T15:58:28Z Pppery 6 Not an improvement - there's already a well-established edit request process starting with clicking "view source" and we don't need a duplicative process for the specific set of templates that are used in system messages wikitext text/x-wiki {{#invoke:High-use|main|1=|2={{{2|}}}|system={{#if:{{{1|}}}|{{{1}}}|in system messages}}<noinclude>|nocat=true</noinclude>}}<noinclude> {{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 0abe278369db6cbbe319e7452d7644e27e11c532 Template:Collapse bottom 10 188 430 2022-08-21T18:03:39Z wikipedia>MSGJ 0 Undid revision 1105766128 by [[Special:Contributions/MSGJ|MSGJ]] ([[User talk:MSGJ|talk]]) - did not work wikitext text/x-wiki <includeonly>|}</div></includeonly><noinclude> {{Documentation|Template:Collapse top/doc}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 64b210e8ab0882b262da50e9fbccf2132bc34fab Module:Citation/CS1/doc 828 837 1856 2022-08-23T22:20:38Z wikipedia>Trappist the monk 0 get rid of meaningless % of all pages tripe; wikitext text/x-wiki <section begin=header /> {{sandbox other|| {{#switch:{{FULLPAGENAME}} |Module:Citation/CS1={{high-risk |article-space=yes |no-percent=yes}} {{Uses TemplateStyles|Module:Citation/CS1/styles.css}} |Module:Citation/CS1/Configuration={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/Whitelist={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/Date validation={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/Identifiers={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/Utilities={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/COinS={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/Suggestions={{high-use |article-space=yes |no-percent=yes}} }} {{Module rating|p}}}}<!-- if pagename does not contain sandbox --> <section end=header /> This module and associated sub-modules support the {{cs1}} and {{cs2}} citation templates. In general, it is not intended to be called directly, but is called by one of the core CS1 and CS2 templates. <section begin=module_components_table /> These files comprise the module support for CS1|2 citation templates: {| class="wikitable" style="margin: 1em auto 1em auto;" |+CS1 {{pipe}} CS2 modules |- !colspan="2"|live!!colspan="2"|sandbox!!diff!!description |- | rowspan="8"| [[File:Full-protection-shackle.svg|20px|alt=Gold padlock|link=|sysop]] || [[Module:Citation/CS1]] || [[Module:Citation/CS1/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1&rev1=&page2=Module%3ACitation%2FCS1%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Rendering and support functions |- | [[Module:Citation/CS1/Configuration]] || [[Module:Citation/CS1/Configuration/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Configuration/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FConfiguration&rev1=&page2=Module%3ACitation%2FCS1%2FConfiguration%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Translation tables; error and identifier handlers |- | [[Module:Citation/CS1/Whitelist]] || [[Module:Citation/CS1/Whitelist/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Whitelist/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FWhitelist&rev1=&page2=Module%3ACitation%2FCS1%2FWhitelist%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| List of active and deprecated CS1{{pipe}}2 parameters |- | [[Module:Citation/CS1/Date validation]] || [[Module:Citation/CS1/Date validation/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Date_validation/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FDate+validation&rev1=&page2=Module%3ACitation%2FCS1%2FDate+validation%2Fsandbox&rev2=&action=&diffonly=&unhide= diff] || Date format validation functions |- | [[Module:Citation/CS1/Identifiers]] || [[Module:Citation/CS1/Identifiers/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Identifiers/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FIdentifiers&rev1=&page2=Module%3ACitation%2FCS1%2FIdentifiers%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Functions that support the named identifiers (ISBN, DOI, PMID, etc.) |- | [[Module:Citation/CS1/Utilities]] || [[Module:Citation/CS1/Utilities/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Utilities/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FUtilities&rev1=&page2=Module%3ACitation%2FCS1%2FUtilities%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Common functions and tables |- | [[Module:Citation/CS1/COinS]] || [[Module:Citation/CS1/COinS/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/COinS/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FCOinS&rev1=&page2=Module%3ACitation%2FCS1%2FCOinS%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Functions that render a CS1{{pipe}}2 template's metadata |- | [[Module:Citation/CS1/styles.css]] || [[Module:Citation/CS1/sandbox/styles.css]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/sandbox/styles.css&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2Fstyles.css&rev1=&page2=Module%3ACitation%2FCS1%2Fsandbox%2Fstyles.css&rev2=&action=&diffonly=&unhide= diff]|| [[CSS]] styles applied to the CS1{{pipe}}2 templates |- | [[File:Template-protection-shackle.svg|20px|alt=Silver padlock|link=|auto confirmed]] || [[Module:Citation/CS1/Suggestions]] || [[Module:Citation/CS1/Suggestions/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Suggestions/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FSuggestions&rev1=&page2=Module%3ACitation%2FCS1%2FSuggestions%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| List that maps common erroneous parameter names to valid parameter names |} <section end=module_components_table /> Other documentation: * [[Module talk:Citation/CS1/Feature requests]] * [[Module talk:Citation/CS1/COinS]] * [[Module:Cs1 documentation support]] – a set of functions (some experimental) that extract information from the module suite for the purpose of documenting CS1|2 ** [[Module:Citation/CS1/doc/Category list]] – lists of category names taken directly from [[Module:Citation/CS1/Configuration]] and [[Module:Citation/CS1/Configuration/sandbox]] testcases *[[Module:Citation/CS1/testcases]] ([[Module talk:Citation/CS1/testcases|run]]) *[[Module:Citation/CS1/testcases/errors]] ([[Module talk:Citation/CS1/testcases/errors|run]]) – error and maintenance messaging *[[Module:Citation/CS1/testcases/dates]] ([[Module talk:Citation/CS1/testcases/dates|run]]) – date validation *[[Module:Citation/CS1/testcases/identifiers]] ([[Module talk:Citation/CS1/testcases/identifiers|run]]) – identifiers *[[Module:Citation/CS1/testcases/anchor]] ([[Module talk:Citation/CS1/testcases/anchor|run]]) – CITEREF anchors <includeonly>{{sandbox other|| [[Category:Modules that add a tracking category]] {{#ifeq:{{SUBPAGENAME}}|Identifiers|[[Category:Modules using data from Wikidata]]}} }}</includeonly> 56cf87a73a7f0f558be8d5697e91dcbcb2fdb3b6 Template:Post-nominals 10 1377 2712 2022-09-04T00:10:43Z Pppery 6 Add tracking cat per edit request wikitext text/x-wiki <span class="noexcerpt nowraplinks" style="font-size:{{{size|85%}}}; font-weight:normal;"><!-- -->{{if empty|{{{unlinked|}}}|{{{list|}}}|{{{post-noms|}}}|{{for loop|{{#if:{{{sep|}}}{{{commas|}}}|<span style="font-size:14px;>&#44;</span>}}&#32;|call=post-nominals/{{{country|CAN}}}|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|{{{10|}}}|{{{11|}}}|{{{12|}}}|{{{13|}}}|{{{14|}}}|{{{15|}}}|{{{16|}}}|{{{17|}}}|{{{18|}}}|{{{19|}}}|{{{20|}}}|skipBlanks=yes}}}}<!-- --></span><!-- -->{{#if:{{{country|{{{unlinked|{{{list|{{{post-noms|<noinclude>1</noinclude>}}}}}}}}}}}}||[[Category:Pages using Template:Post-nominals with missing parameters]]}}<!-- -->{{#if:{{{unlinked|{{{list|{{{post-noms|}}}}}}}}}|[[Category:Pages using Template:Post-nominals with customized linking]] }}<noinclude>{{Documentation}}</noinclude> 2b89288bd9d53136ad548b8a601c1bf4f69e8daf Module:Hatnote 828 34 63 2022-09-05T18:18:32Z wikipedia>Nihiltres 0 Reordered helper functions (first by export status, then alphabetically) and migrated p.quote upstream from [[Module:Redirect hatnote]] (includes contributions by Tamzin and Nihiltres) Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the {{hatnote}} and {{format link}} meta-templates and includes -- -- helper functions for other Lua hatnote modules. -- -------------------------------------------------------------------------------- local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local mArguments -- lazily initialise [[Module:Arguments]] local yesno -- lazily initialise [[Module:Yesno]] local formatLink -- lazily initialise [[Module:Format link]] ._formatLink local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end function p.defaultClasses(inline) -- Provides the default hatnote classes as a space-separated string; useful -- for hatnote-manipulation modules like [[Module:Hatnote group]]. return (inline == 1 and 'hatnote-inline' or 'hatnote') .. ' ' .. 'navigation-not-searchable' end function p.disambiguate(page, disambiguator) -- Formats a page title with a disambiguation parenthetical, -- i.e. "Example" → "Example (disambiguation)". checkType('disambiguate', 1, page, 'string') checkType('disambiguate', 2, disambiguator, 'string', true) disambiguator = disambiguator or 'disambiguation' return mw.ustring.format('%s (%s)', page, disambiguator) end function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to false. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end function p.makeWikitextError(msg, helpLink, addTrackingCategory, title) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- [[Module:Yesno]], and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') title = title or mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' ([[' .. helpLink .. '|help]])' else helpText = '' end -- Make the category text. local category if not title.isTalkPage -- Don't categorise talk pages and title.namespace ~= 2 -- Don't categorise userspace and yesno(addTrackingCategory) ~= false -- Allow opting out then category = 'Hatnote templates with errors' category = mw.ustring.format( '[[%s:%s]]', mw.site.namespaces[14].name, category ) else category = '' end return mw.ustring.format( '<strong class="error">Error: %s%s.</strong>%s', msg, helpText, category ) end local curNs = mw.title.getCurrentTitle().namespace p.missingTargetCat = --Default missing target category, exported for use in related modules ((curNs == 0) or (curNs == 14)) and 'Articles with hatnote templates targeting a nonexistent page' or nil function p.quote(title) --Wraps titles in quotation marks. If the title starts/ends with a quotation --mark, kerns that side as with {{-'}} local quotationMarks = { ["'"]=true, ['"']=true, ['“']=true, ["‘"]=true, ['”']=true, ["’"]=true } local quoteLeft, quoteRight = -- Test if start/end are quotation marks quotationMarks[string.sub(title, 1, 1)], quotationMarks[string.sub(title, -1, -1)] if quoteLeft or quoteRight then title = mw.html.create("span"):wikitext(title) end if quoteLeft then title:css("padding-left", "0.15em") end if quoteRight then title:css("padding-right", "0.15em") end return '"' .. tostring(title) .. '"' end -------------------------------------------------------------------------------- -- Hatnote -- -- Produces standard hatnote text. Implements the {{hatnote}} template. -------------------------------------------------------------------------------- function p.hatnote(frame) local args = getArgs(frame) local s = args[1] if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end return p._hatnote(s, { extraclasses = args.extraclasses, selfref = args.selfref }) end function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) options = options or {} local inline = options.inline local hatnote = mw.html.create(inline == 1 and 'span' or 'div') local extraclasses if type(options.extraclasses) == 'string' then extraclasses = options.extraclasses end hatnote :attr('role', 'note') :addClass(p.defaultClasses(inline)) :addClass(extraclasses) :addClass(options.selfref and 'selfref' or nil) :wikitext(s) return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Module:Hatnote/styles.css' } } .. tostring(hatnote) end return p 3ae1ed7094c5005ca0896395ec9a587287a0bef1 Module:Redirect hatnote 828 1033 2264 2022-09-05T18:21:32Z wikipedia>Nihiltres 0 Updated from sandbox: Migrated p._quote to Module:Hatnote Scribunto text/plain --[[ -- This module produces a "redirect" hatnote. It looks like this: -- '"X" redirects here. For other uses, see Y.' -- It implements the {{redirect}} template. --]] local mHatnote = require('Module:Hatnote') local mHatList = require('Module:Hatnote list') local mArguments --lazily initialize local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitle(...) --Calls mw.title.new and returns either a title object, or nil on error local success, titleObj = pcall(mw.title.new, ...) return success and titleObj or nil end -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.redirect(frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame, {parentOnly=true}) --Get number of redirects local numRedirects = tonumber(frame.args[1]) or 1 -- Create the options table. local options = {} options.selfref = args.selfref return p._redirect(args, numRedirects, options) end function p._redirect(args, numRedirects, options, currentTitle, redirectTitle, targetTitle) -- Validate the input. Don't bother checking currentTitle, redirectTitle or -- targetTitle, as they are only used in testing. checkType('_redirect', 1, args, 'table') checkType('_redirect', 2, numRedirects, 'number', true) numRedirects = numRedirects or 1 checkType('_redirect', 3, options, 'table', true) options = options or {} currentTitle = currentTitle or mw.title.getCurrentTitle() -- Get the table of redirects local redirect = {} for i = 1, numRedirects do -- Return an error if a redirect parameter is missing. if not args[i] then return mHatnote.makeWikitextError( 'missing redirect parameter', 'Template:Redirect#Errors', args.category ) end redirect[i] = args[i] end -- Generate the text. local formattedRedirect = {} for k,v in pairs(redirect) do formattedRedirect[k] = mHatnote.quote(v) end local text = { mHatList.andList(formattedRedirect) .. ' ' .. (#redirect == 1 and 'redirects' or 'redirect') .. ' here.', mHatList._forSee(args, #redirect + 1, {title = redirect[1], extratext = args.text}) } text = table.concat(text, ' ') -- Functionality for adding categories local categoryTable = {} local function addCategory(cat) if cat and cat ~= '' then -- Add by index to avoid duplicates categoryTable[string.format('[[Category:%s]]', cat)] = true end end --Generate tracking categories local mhOptions = {} local redirTitle for k,v in pairs(redirect) do -- We don't need a tracking category if the template invocation has been -- copied directly from the docs, or if we aren't in main- or category-space. if not v:find('^REDIRECT%d*$') and v ~= 'TERM' -- and currentTitle.namespace == 0 or currentTitle.namespace == 14 then redirTitle = redirectTitle or getTitle(v) if not redirTitle or not redirTitle.exists then addCategory('Missing redirects') elseif not redirTitle.isRedirect then if string.find(redirTitle:getContent(), '#invoke:RfD') then addCategory('Articles with redirect hatnotes impacted by RfD') else addCategory('Articles with redirect hatnotes needing review') end else local target = targetTitle or redirTitle.redirectTarget if target and target ~= currentTitle then addCategory('Articles with redirect hatnotes needing review') end end end -- Generate the options to pass to [[Module:Hatnote]]. if currentTitle.namespace == 0 and not mhOptions.selfref and redirTitle and redirTitle.namespace ~= 0 then -- We are on a mainspace page, and the hatnote starts with something -- like "Wikipedia:Foo redirects here", so automatically label it as -- a self-reference. mhOptions.selfref = true else mhOptions.selfref = options.selfref end end --concatenate all the categories local category = '' for k,v in pairs(categoryTable) do category = category .. k end return mHatnote._hatnote(text, mhOptions) .. category end return p 6609c6166f6a1124c96c97915bc7b4182f1874f9 Template:Infobox mapframe/doc/parameters 10 1481 2816 2022-09-08T16:19:59Z Dinoguy1000 20 use the "style=" parameter on {{Navbar}} instead of the weird {{Float}} template wikitext text/x-wiki <noinclude>{{Documentation}}</noinclude><includeonly>{{navbar|Template:Infobox mapframe/doc/parameters|plain=y|style=float: right;}}</includeonly><nowiki></nowiki> *Basic parameters:{{#if:{{{noprefix|}}}||<nowiki></nowiki> **'''mapframe''' – Specify yes or no to show or hide the map, overriding the default. ''Default:'' {{{mapframe|no}}} **'''mapframe-caption''' – Caption for the map. ''Default'': {{{mapframe-caption|''blank'' (or if {{para|mapframe-geomask}} is set, "Location in {{kbd|geomask's label}}")}}} **'''mapframe-custom''' – Use a custom map instead of the automatic mapframe. Specify either a {{tlx|maplink}} template, or another template that generates a mapframe map, or an image name. If used, the subsequent mapframe parameters will be ignored. ''Default'': ''not specified''}} **{{#if:{{{noprefix|}}}|'''id'''|'''mapframe-id''' or '''id''' or '''qid'''}} – Id (Q-number) of Wikidata item to use. ''Default:'' ''item for current page'' **{{#if:{{{noprefix|}}}||'''mapframe-coordinates''' or '''mapframe-coord''' or}} '''coordinates''' or '''coord''' – Coordinates to use, instead of any on Wikidata. Use the {{tl|Coord}} template, e.g. {{para|coord|2={{tlx|Coord|12.34|N|56.78|E}}}}. ''Default:'' ''coordinates from Wikidata'' **'''{{#if:{{{noprefix|}}}||mapframe-}}wikidata''' – Set to {{code|yes}} to show shape/line features from the wikidata item, if any, when {{para|coord}} is set. ''Default:'' {{{mapframe-wikidata|''not specified''}}} *Customise which features are displayed: **'''{{#if:{{{noprefix|}}}||mapframe-}}shape''' – Turn off display of shape feature by setting to {{code|none}}. Use an inverse shape (geomask) instead of a regular shape by setting to {{code|inverse}}. ''Default:'' {{{mapframe-shape|''not specified''}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}point''' – Turn off display of point feature by setting to {{code|none}}. Force point marker to be displayed by setting to {{code|on}}. ''Default:'' {{{mapframe-point|''not specified''}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}line''' – Turn off display of line feature by setting to {{code|none}}. ''Default:'' {{{mapframe-line|''not specified''}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}geomask''' – Wikidata item to use as a geomask (everything outside the boundary is shaded darker). Can either be a specific Wikidata item (Q-number), or a property that specifies the item to use (e.g. <code>P17</code> for {{Q|P17}}, <code>P131</code> for {{Q|P131}}). ''Default:'' {{{mapframe-marker|''not specified''}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}switcher''' – set to {{code|auto}} or {{code|geomasks}} or {{code|zooms}} to enable [[Template:Switcher]]-style switching between multiple mapframes. ''Default:'' {{{mapframe-switcher|''not specified''}}} ***{{code|auto}} – switch geomasks found in {{Q|P276}} and {{Q|P131}} statements on the page's Wikidata item, searching recursively. E.g. an item's city, that city's state, and that state's country. ***{{code|geomasks}} – switch between the geomasks specified as a comma-separated list of Wikidata items (Q-numbers) in the '''{{#if:{{{noprefix|}}}||mapframe-}}geomask''' parameter ***{{code|zooms}} – switch between "zoomed in"/"zoomed midway"/"zoomed out", where "zoomed in" is the default zoom (with a minimum of {{code|3}}), "zoomed out" is {{code|1}}, and "zoomed midway" is the average *Other optional parameters: **'''{{#if:{{{noprefix|}}}||mapframe-}}frame-width''' or '''{{#if:{{{noprefix|}}}||mapframe-}}width''' – Frame width. ''Default:'' {{{mapframe-frame-width|270}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}frame-height''' or '''{{#if:{{{noprefix|}}}||mapframe-}}height''' – Frame height. ''Default:'' {{{mapframe-frame-height|200}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}shape-fill''' – Color used to fill shape features. ''Default:'' {{{mapframe-shape-fill|#606060}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}shape-fill-opacity''' – Opacity level of shape fill, a number between 0 and 1. ''Default:'' {{{mapframe-shape-fill-opacity|0.5}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}stroke-color''' or '''{{#if:{{{noprefix|}}}||mapframe-}}stroke-colour''' – Color of line features, and outlines of shape features. ''Default:'' {{{mapframe-stroke-color|{{{mapframe-stroke-colour|#ff0000}}}}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}stroke-width''' – Width of line features, and outlines of shape features; default is "5". ''Default:'' {{{mapframe-stroke-width|5}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}marker''' – Marker symbol to use for coordinates; see [[mw:Help:Extension:Kartographer/Icons]] for options. ''Default:'' {{{mapframe-marker|''not specified (i.e. blank)''}}} ***Can also be set to {{code|blank}} to override any default marker symbol **'''{{#if:{{{noprefix|}}}||mapframe-}}marker-color''' or '''{{#if:{{{noprefix|}}}||mapframe-}}marker-colour''' – Background color for the marker. ''Default:'' {{{mapframe-marker-color|{{{mapframe-marker-colour|#5E74F3}}}}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}geomask-stroke-color''' or '''{{#if:{{{noprefix|}}}||mapframe-}}geomask-stroke-colour''' – Color of outline of geomask shape. ''Default:'' {{{mapframe-geomask-stroke-color|{{{mapframe-geomask-stroke-colour|#555555}}}}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}geomask-stroke-width''' – Width of outline of geomask shape. ''Default:'' {{{mapframe-geomask-stroke-width|2}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}geomask-fill''' – Color used to fill outside geomask features. ''Default:'' {{{mapframe-geomask-fill|#606060}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}geomask-fill-opacity''' – Opacity level of fill outside geomask features, a number between 0 and 1. ''Default:'' {{{mapframe-geomask-fill-opacity|0.5}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}zoom''' – Set the zoom level, from "1" (map of earth) to "18" (maximum zoom in), to be used if the zoom level cannot be determined automatically from object length or area. ''Default:'' {{{mapframe-zoom|10}}} **'''{{#if:{{{noprefix|}}}||mapframe-}}length_km {{nobold|or}} {{#if:{{{noprefix|}}}||mapframe-}}length_mi {{nobold|or}} {{#if:{{{noprefix|}}}||mapframe-}}area_km2 {{nobold|or}} {{#if:{{{noprefix|}}}||mapframe-}}area_mi2''' – Determine zoom level by passing in object's length (in kilometres or miles) or area (in square kilometres or square miles). ''Default:'' ''not specified'' **'''{{#if:{{{noprefix|}}}||mapframe-}}frame-coordinates''' or '''{{#if:{{{noprefix|}}}||mapframe-}}frame-coord''' – Alternate latitude and longitude coordinates for initial placement of map, using {{tl|coord}}. ''Default:'' ''derived from item coordinates''{{#if:{{{deprecated|}}}|<nowiki></nowiki> *Deprecated parameters **{{gray|1='''{{#if:{{{noprefix|}}}||mapframe-}}frame-lat''' or '''{{#if:{{{noprefix|}}}||mapframe-}}frame-latitude'''}} – Alternate latitude coordinate for initial placement of map; default is derived from item coordinates **{{gray|1='''{{#if:{{{noprefix|}}}||mapframe-}}frame-long''' or '''{{#if:{{{noprefix|}}}||mapframe-}}frame-longitude'''}} – Alternate longitude coordinate for initial placement of map; default is derived from item coordinates }} cff45f38e77371fef06f83bec6bdbffebc880c3f Module:URL 828 1177 2506 2022-09-11T18:55:11Z w>Paine Ellsworth 0 per edit request on talk page - update Scribunto text/plain -- -- This module implements {{URL}} -- -- See unit tests at [[Module:URL/testcases]] local p = {} local function safeUri(s) local success, uri = pcall(function() return mw.uri.new(s) end) if success then return uri end end local function extractUrl(args) for name, val in pairs(args) do if name ~= 2 and name ~= "msg" then local url = name .. "=" .. val; url = mw.ustring.gsub(url, '^[Hh][Tt][Tt][Pp]([Ss]?):(/?)([^/])', 'http%1://%3') local uri = safeUri(url); if uri and uri.host then return url end end end end function p._url(url, text, msg) url = mw.text.trim(url or '') text = mw.text.trim(text or '') local nomsg = (msg or ''):sub(1,1):lower() == "n" or msg == 'false' -- boolean: true if msg is "false" or starts with n or N if url == '' then if text == '' then if nomsg then return nil else return mw.getCurrentFrame():expandTemplate{ title = 'tlx', args = { 'URL', "''example.com''", "''optional display text''" } } end else return text end end -- If the URL contains any unencoded spaces, encode them, because MediaWiki will otherwise interpret a space as the end of the URL. url = mw.ustring.gsub(url, '%s', function(s) return mw.uri.encode(s, 'PATH') end) -- If there is an empty query string or fragment id, remove it as it will cause mw.uri.new to throw an error url = mw.ustring.gsub(url, '#$', '') url = mw.ustring.gsub(url, '%?$', '') -- If it's an HTTP[S] URL without the double slash, fix it. url = mw.ustring.gsub(url, '^[Hh][Tt][Tt][Pp]([Ss]?):(/?)([^/])', 'http%1://%3') local uri = safeUri(url) -- Handle URL's without a protocol and URL's that are protocol-relative, -- e.g. www.example.com/foo or www.example.com:8080/foo, and //www.example.com/foo if uri and (not uri.protocol or (uri.protocol and not uri.host)) and url:sub(1, 2) ~= '//' then url = 'http://' .. url uri = safeUri(url) end if text == '' then if uri then if uri.path == '/' then uri.path = '' end local port = '' if uri.port then port = ':' .. uri.port end text = mw.ustring.lower(uri.host or '') .. port .. (uri.relativePath or '') -- Add <wbr> before _/.-# sequences text = mw.ustring.gsub(text,"(/+)","<wbr/>%1") -- This entry MUST be the first. "<wbr/>" has a "/" in it, you know. text = mw.ustring.gsub(text,"(%.+)","<wbr/>%1") -- text = mw.ustring.gsub(text,"(%-+)","<wbr/>%1") -- DISABLED for now text = mw.ustring.gsub(text,"(%#+)","<wbr/>%1") text = mw.ustring.gsub(text,"(_+)","<wbr/>%1") else -- URL is badly-formed, so just display whatever was passed in text = url end end return mw.ustring.format('<span class="url">[%s %s]</span>', url, text) end --[[ The main entry point for calling from Template:URL. --]] function p.url(frame) local templateArgs = frame.args local parentArgs = frame:getParent().args local url = templateArgs[1] or parentArgs[1] local text = templateArgs[2] or parentArgs[2] or '' local msg = templateArgs.msg or parentArgs.msg or '' url = url or extractUrl(templateArgs) or extractUrl(parentArgs) or '' return p._url(url, text, msg) end --[[ The entry point for calling from the forked Template:URL2. This function returns no message by default. It strips out wiki-link markup, html tags, and everything after a space. --]] function p.url2(frame) local templateArgs = frame.args local parentArgs = frame:getParent().args local url = templateArgs[1] or parentArgs[1] local text = templateArgs[2] or parentArgs[2] or '' -- default to no message local msg = templateArgs.msg or parentArgs.msg or 'no' url = url or extractUrl(templateArgs) or extractUrl(parentArgs) or '' -- if the url came from a Wikidata call, it might have a pen icon appended -- we want to keep that and add it back at the end. local u1, penicon = mw.ustring.match( url, "(.*)(&nbsp;<span class='penicon.*)" ) if penicon then url = u1 end -- strip out html tags and [ ] from url url = (url or ''):gsub("<[^>]*>", ""):gsub("[%[%]]", "") -- truncate anything after a space url = url:gsub("%%20", " "):gsub(" .*", "") return (p._url(url, text, msg) or "") .. (penicon or "") end return p 8d7a4c6fe04a01815e940475cf64b28e1ef48cfb Template:Highlight 10 1381 2716 2022-09-14T20:44:05Z w>Redrose64 0 Undid revision 1109662205 by [[Special:Contributions/Enterprisey|Enterprisey]] ([[User talk:Enterprisey|talk]]) this belongs on the doc page wikitext text/x-wiki {{#if:{{{3|}}}|{{#ifexpr:({{#time:U|{{{3}}}}} - {{#time:U|now}}) > 0|{{highlight/core|{{{1|}}}|{{#ifeq:{{{2|}}}||yellow|{{{2}}}}}}}|{{{1|}}}}}|{{highlight/core|{{{1|}}}|{{{2|yellow}}}}}}}<noinclude>{{documentation}}</noinclude> 45c668ad6ef10b2963df4e5be697c70980dbf350 Template:Parameter names example 10 66 127 2022-09-15T17:36:18Z wikipedia>Aidan9382 0 Hatnote should ideally be moved into documentation as to allow users to edit it regardless of the protection on the main template wikitext text/x-wiki <includeonly>{{#invoke:Parameter names example|main}}</includeonly><noinclude> {{Documentation}} </noinclude> de1e29d6ebc113e9d1649ea6a976625885db8a2f Template:Country data Germany 10 1187 2516 2022-09-17T07:38:32Z w>Skjoldbro 0 wikitext text/x-wiki {{safesubst<noinclude />: {{{1<noinclude>|country showdata</noinclude>}}} | alias = Germany | flag alias = Flag of Germany.svg | flag alias-1866 = Flag of the German Empire.svg | link alias-1866 = German Empire | flag alias-empire = Flag of the German Empire.svg | link alias-empire = German Empire | flag alias-1919 = Flag of Germany (3-2 aspect ratio).svg | link alias-1919 = Weimar Republic | flag alias-Weimar = Flag of Germany (3-2 aspect ratio).svg | link alias-Weimar = Weimar Republic | flag alias-1933 = Flag of Germany (1933-1935).svg | flag alias-1935 = Flag of Germany (1935–1945).svg | link alias-1935 = Nazi Germany | flag alias-Nazi = Flag of Germany (1935–1945).svg | link alias-Nazi = Nazi Germany | flag alias-1946 = Merchant flag of Germany (1946–1949).svg | border-1946 = | flag alias-1949 = Flag of Germany.svg | flag alias-EUA = German Olympic flag (1959-1968).svg | flag alias-gold = Flag of West Germany; Flag of Germany (1990–1996).svg | flag alias-state = Flag of Germany (state).svg | flag alias-naval = Naval Ensign of Germany.svg | border-naval = | link alias-naval = German Navy | flag alias-coast guard=German Federal Coast Guard racing stripe.svg | border-coast guard= | link alias-coast guard=German Federal Coast Guard | flag alias-army = Colour of Germany.svg | flag alias-air force =Flag of Germany (state).svg | link alias-air force = German Air Force | link alias-army = German Army | flag alias-navy = Naval Ensign of Germany.svg | link alias-navy = German Navy | border-navy = | border-army= | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1866 | var2 = empire | var3 = 1919 | var4 = Weimar | var5 = 1933 | var6 = 1935 | var7 = Nazi | var8 = 1946 | var9 = 1949 | var10 = EUA | var11 = gold | var12 = state | redir1 = DEU | redir2 = GER | related1 = German Empire | related2 = Weimar Republic | related3 = Nazi Germany | related4 = Allied-occupied Germany | related5 = East Germany | related6 = West Germany </noinclude> }} f8c90307d21fdadc176f684f3fc1be65db23f569 Template:GeoTemplate/doc 10 1688 3147 2022-09-21T19:58:03Z wikipedia>DB1729 0 Reverted edits by [[Special:Contributions/Jacksonj200401|Jacksonj200401]] ([[User talk:Jacksonj200401|talk]]): unexplained content removal ([[WP:HG|HG]]) (3.4.10) wikitext text/x-wiki {{Documentation subpage}} {{transclusionless|reason=this template is used by [[:mw:GeoHack]] to display maps on pages linked from, but outside of, the English Wikipedia. The GeoTemplate family of templates is used by {{tl|coord}} links on articles about places on Earth and on extraterrestrial bodies. See {{tl|Surface features of space objects}} for links to many such articles.}} See [[:mw:GeoHack]] for more information about the GeoTemplate family of templates and how they are used. == Microformat == {{UF-geo-other}} [[Category:WikiProject Geographical coordinates]] [[Category:GeoTemplates]] [[Category:External link templates]] af4c59f784148170319b0a83bfbec60a1b6dcc58 Template:Redirect category shell 10 1011 2218 2022-09-22T23:42:24Z wikipedia>FlightTime 0 Update lnk trgt(s) wikitext text/x-wiki __NONEWSECTIONLINK__{{Mbox | name = Redirect category shell | type = move | image = none | style = margin-top: 1.1em; border: solid 1px darkblue; border-left-width: 0.5em; | textstyle = padding-top: 0.9em; padding-bottom: 0.9em; | text = '''This {{Talk other|talk page|page}} is a [[Wikipedia:Redirect|redirect]]. <small>The following [[Wikipedia:Categorizing redirects|categories]] are used to track and monitor this redirect:</small>'''{{#if:{{{h|}}} |:: ''{{{h}}}'' }}<!-- Automatically detect protected redirects: --><includeonly>{{#switch: {{PROTECTIONLEVEL:move}} |sysop|templateeditor|extendedconfirmed={{pp-move|small=yes}} }}{{#switch: {{PROTECTIONLEVEL:edit}} |sysop={{R protected|embed=yes}} |templateeditor={{pp-protected|small=yes}}{{R template protected|embed=yes}} |extendedconfirmed={{pp-protected|small=yes}}{{R extended-protected|embed=yes}} |autoconfirmed={{pp-protected|small=yes}}{{R semi-protected|embed=yes}} | <!--Not protected, or only semi-move-protected--> }}</includeonly>{{#if: {{{1|}}}||<includeonly> * {{red|'''Important – Please Read! {{maroon|This template should {{em|not}} be applied without parameters by bot nor by any automated or semi-automated process. It should {{em|not}} be used without parameters {{em|unless you want to learn how to categorize redirects}}. For editors who want to learn how to categorize redirects, this template is a {{em|learning tool}}. {{em|Only}} those editors who intend to return to the redirect to learn which rcats to use should apply this template without parameters, or with an empty first parameter!}}'''}}</includeonly> * '''Manifold sort''': If help is needed to determine appropriate categories, then this redirect populates '''{{Cat|Miscellaneous redirects}}'''. Monitors of that category will check this redirect and add or remove [[Wikipedia:Categorizing redirects|rcats]] as needed.{{#ifeq: {{lc:{{{nocat|false}}}}} | false |{{{category|<includeonly>[[Category:Miscellaneous redirects]]</includeonly>}}}}} }} {{#if: {{{2|}}}|{{{2}}}|{{{1|}}}}}{{#if: {{{1|}}}{{{2|}}}||{{#ifeq: {{ROOTPAGENAME}}|Redirect category shell||[[Category:Redirect category shell without parameters]]}}}} ''<small>When appropriate, [[Wikipedia:Protection policy|protection levels]] are automatically sensed, described and categorized.</small>'' }}<noinclude> {{Documentation}} </noinclude> 554b3ada8f7ca8c0e840ea18a0344d3e94d13c38 Template:Stub documentation 10 761 1697 2022-09-24T21:20:03Z wikipedia>Paine Ellsworth 0 rm whitespace + install High-use template where appropriate wikitext text/x-wiki {{#ifeq:{{#invoke:High-use|num|x}}|many||{{High-use}}}} This is a '''stub template'''. A brief explanation of these templates follows; for full details please consult [[Wikipedia:Stub]]. === What is a stub? === A stub is an article containing only a few sentences of text which is too short to provide encyclopedic coverage of a subject. === How is a stub identified? === * If possible, try to find the most appropriate stub template for the article. A full list can be found at [[Wikipedia:WikiProject Stub sorting/List of stubs]]. * More than one stub template may be used, if necessary, though no more than four should be used on any article. * Place a stub template ''[[Wikipedia:Manual of Style/Layout#Order of article elements|at the very end]]'' of the article, after the "External links" section, any navigation templates, and the category tags. As usual, templates are added by including their name inside double braces, e.g. <code><nowiki>{{stub}}</nowiki></code>. === Further information === Further information can be found at: * [[Wikipedia:Stub]] * [[Wikipedia:WikiProject Stub sorting]] New stub templates and categories (collectively "stub types") should not be created without prior proposal at [[Wikipedia:WikiProject Stub sorting/Proposals]]. This allows for the proper coordination of all stub types across Wikipedia, and for the checking of any new stub type for possible problems prior to its creation. === See also === * [[Template:Empty section]] – To flag an empty section as a '''stub section''' * [[Template:Expand section]] – To flag sections selectively as incomplete * [[Template:Data missing]] – To flag missing information or other data * [[Wikipedia:Content assessment]]<!-- --><noinclude> {{documentation}} [[Category:Template documentation]] </noinclude> 5e5f29f413afaf1f92838315049bbcf2056e4cdd Template:' 10 887 1964 2022-09-27T12:43:06Z wikipedia>Primefac 0 Primefac moved page [[Template:']] to [[Template:Apostrophe]]: expand name for clarity wikitext text/x-wiki #REDIRECT [[Template:Apostrophe]] {{Redirect category shell| {{R from move}} }} eec747ee088b154d601ca1ea8201cf3e92fc33c4 Template:Apostrophe 10 888 1966 2022-09-27T12:43:06Z wikipedia>Primefac 0 Primefac moved page [[Template:']] to [[Template:Apostrophe]]: expand name for clarity wikitext text/x-wiki <span class="nowrap" style="padding-left:0.1em;">&#39;</span><noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 7ffcfc167bac0db92bf907ef65b839f48971bdb4 Template:Pipe 10 834 1850 2022-09-27T13:42:50Z wikipedia>Ymblanter 0 Protected "[[Template:Pipe]]": [[WP:High-risk templates|Highly visible template]]: request at [[WP:RFPP]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki &#124;<noinclude> {{documentation}} <!-- Add categories to the /doc subpage --> </noinclude> 2e39a107f660e0f346b655cc3cb1a4a6be07247d Template:Mbox templates see also 10 1308 2643 2022-09-27T19:16:15Z w>Izno 0 remove per discussion on [[Template talk:Talk header]] wikitext text/x-wiki <div>{{view|Template:Mbox templates see also|edit|brackets=yes}} There are seven metatemplates in the [[Module:Message box]] family:</div> * {{tl|Ambox}}, for messageboxes on article pages. * {{tl|Cmbox}}, for messageboxes on category pages. * {{tl|Imbox}}, for messageboxes on file (image) pages. * {{tl|Tmbox}}, for messageboxes on talk pages. * {{tl|Fmbox}}, for header and footer messageboxes. * {{tl|Ombox}}, for messageboxes on other types of page. * {{tl|Mbox}}, for messageboxes that are used in different [[Wikipedia:Namespace|namespaces]] and change their presentation accordingly. Closely related metatemplates: * {{tl|Asbox}}, for messageboxes in article stubs. * {{tl|Dmbox}}, for messageboxes on disambiguation or set-index pages. * {{tla|Ivory messagebox|Ivmbox}}, a simple full-width box with default ivory background intended to frame important messages or notices.<noinclude> {{Documentation}} </noinclude> bb802665b65c4908f4fea71ac8ca65ef82ff71c8 Template:Infobox country/imagetable 10 427 1259 2022-09-29T14:58:37Z Elli 39 copy changes [[Template:Infobox country/imagetable/sandbox|from sandbox]] wikitext text/x-wiki {{#if:{{both|{{{image1a|}}}{{{image1b|}}}|{{{image2|}}}}}| <div class="noresize" style="display:table; width:100%;"> <div style="display:table-cell; vertical-align:middle; padding-left:5px;"> {{#if:{{{image1a|}}}|<div style="padding-bottom:3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="padding: 2px 0px 3px;">{{{image1b|}}}</div>}} <div>{{{caption1|}}}</div> </div> <div style="display:table-cell; vertical-align:middle; padding: 0px 5px;"> <div style="padding-bottom:3px;">{{{image2|}}}</div> <div>{{{caption2|}}}</div> </div> </div> <!--else:-->| {{#if:{{{image1a|}}}{{{image1b|}}}| <div class="noresize" style="display:table; width:100%;"> {{#if:{{{image1a|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px 0px;">{{{image1b|}}}</div>}} </div> <div>{{{caption1}}}</div> }} {{#if:{{{image2|}}}| <div style="padding: 0px 5px;"> <div style="padding-bottom:3px;">{{{image2|}}}</div> <div>{{{caption2}}}</div> </div> }} }}<noinclude> {{documentation|content= This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. }}</noinclude> 4094e7b538bb7456c09fbbfcdf9cf4e30e1b6b5b Template:KIA/doc 10 1692 3157 2022-09-30T09:55:25Z wikipedia>Paine Ellsworth 0 not present wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE --> {{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}} {{Notice |{{about|the "[[killed in action]]" symbol|the template for the automobile company|Template:Kia}}}} This template is used after a person's name in the <code>{{tl|Infobox military conflict}}</code> template to indicate that the person was [[killed in action]]. == Usage == <code>{{tl|KIA}}</code> displays dagger symbol: {{KIA}}<br/> <code>{{tlx|KIA|<nowiki>bold=no</nowiki>}}</code> does not bold the symbol: {{KIA|bold=no}}<br/> <code>{{tlx|KIA|<nowiki>alt=yes</nowiki>}}</code> (or <code>{{tlx|KIA2}}</code> for short) displays the abbreviation: {{KIA|alt=yes}} The text displayed is linked to [[Killed in action]]. == See also == *{{tl|DOW}} *{{tl|Executed}} *{{tl|Assassinated}} *{{tl|POW}} *{{tl|Surrendered}} *{{tl|WIA}} *{{tl|MIA}} *{{tl|Natural Causes}} <includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc|| <!--Categories below here, please; interwikis to Wikidata.--> [[Category:Military abbreviation templates|{{PAGENAME}}]] }}}}</includeonly> 18858e746e8994ff29072294d2b27dc74c7983b4 Template:POW 10 1693 3161 2022-09-30T10:02:59Z wikipedia>Paine Ellsworth 0 update wikitext text/x-wiki &nbsp;([[Prisoner of war|{{abbr|POW|Prisoner of war}}]])<noinclude> <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> {{Documentation}} </noinclude> a3d34013543a96d966a6abd9a34f756a40c80826 Template:POW/doc 10 1694 3163 2022-09-30T10:04:21Z wikipedia>Paine Ellsworth 0 update /doc wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> == Information == This template is used to indicate commanders who were captured or surrendered in {{tl|Infobox military conflict}}. == Usage == <code>{{tl|POW}}</code> produces: {{POW}} == See also == *{{tl|WIA}} *{{tl|Executed}} *{{tl|Surrendered}} *{{tl|KIA}} *{{tl|DOW}} *{{tl|MIA}} <includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Military abbreviation templates|{{PAGENAME}}]] }}}}</includeonly> d1623cfcea1bfa435326fcdeec6262db4ab599c8 Template:ISO 15924/unicode-chapter 10 1626 2961 2022-10-03T17:33:38Z w>DePiep 0 I think scripts not in Unicode should not link to The U Standard (this way). See [[:template:ISO 15924 script codes and related Unicode data]] wikitext text/x-wiki {{ISO 15924/unicode-chapter/format |format={{{format|}}} |version={{{version|15.0.0}}} |value={{#switch:{{{alpha4|{{{1|}}}}}} | Adlm = 19.9 | Aghb = 8.11 | Ahom = 15.16 | Arab = 9.2 | Armi = 10.4 | Armn = 7.6 | Avst = 10.7 | Bali = 17.3 | Bamu = 19.6 | Bass = 19.7 | Batk = 17.6 | Beng = 12.2 | Bhks = 14.3 | Bopo = 18.3 | Brah = 14.1 | Brai = 21.1 | Bugi = 17.2 | Buhd = 17.1 | Cakm = 13.11 | Cans = 20.2 | Cari = 8.5 | Cham = 16.10 | Cher = 20.1 | Chrs = 10.8 | Copt = 7.3 | Cpmn = 8.4<!-- 14.0 --> | Cprt = 8.3 | Cyrl = 7.4 | Deva = 12.1 | Diak = 15.15 | Dogr = 15.18 | Dsrt = 20.4 | Dupl = 21.6 | Egyp = 11.4 | Elba = 8.10 | Elym = 10.9 | Ethi = 19.1 | Geok = 7.7 | Geor = 7.7 | Glag = 7.5 | Gong = 13.15 | Gonm = 13.14 | Goth = 8.9 | Gran = 15.14 | Grek = 7.2 | Gujr = 12.4 | Guru = 12.3 | Hang = 18.6 | Hani = 18.1 | Hano = 17.1 | Hatr = 10.12 | Hebr = 9.1 | Hira = 18.4 | Hluw = 11.6 | Hmng = 16.11 | Hmnp = 16.12 | Hrkt = 18.4 | Hung = 8.8 | Ital = 8.6 | Java = 17.4 | Kali = 16.9 | Kana = 18.4 | Kawi = 17.9<!-- 15.0 --> | Khar = 14.2 | Khmr = 16.4 | Khoj = 15.7 | Kits = 18.12 | Knda = 12.8 | Kthi = 15.2 | Lana = 16.7 | Laoo = 16.2 | Latn = 7.1 | Lepc = 13.12 | Limb = 13.6 | Lina = 8.1 | Linb = 8.2 | Lisu = 18.9 | Lyci = 8.5 | Lydi = 8.5 | Mahj = 15.6 | Maka = 17.8 | Mand = 9.5 | Mani = 10.5 | Marc = 14.5 | Medf = 19.10 | Mend = 19.8 | Merc = 11.5 | Mero = 11.5 | Mlym = 12.9 | Modi = 15.12 | Mong = 13.5 | Mroo = 13.8 | Mtei = 13.7 | Mult = 15.10 | Mymr = 16.3 | Nagn = 15.8<!-- 15.0 --> | Nand = 15.13 | Narb = 10.1 | Nbat = 10.10 | Newa = 13.3 | Nkoo = 19.4 | Nshu = 18.8 | Ogam = 8.14 | Olck = 13.10 | Orkh = 14.8 | Orya = 12.5 | Osge = 20.3 | Osma = 19.2 | Ougr = 14.11<!-- 14.0 --> | Palm = 10.11 | Pauc = 16.13 | Perm = 8.13 | Phag = 14.4 | Phli = 10.6 | Phlp = 10.6 | Phnx = 10.3 | Plrd = 18.10 | Prti = 10.6 | Rjng = 17.5 | Rohg = 16.14 | Runr = 8.7 | Samr = 9.4 | Sarb = 10.2 | Saur = 13.13 | Sgnw = 21.7 | Shaw = 8.15 | Shrd = 15.3 | Sidd = 15.5 | Sind = 15.9 | Sinh = 13.2 | Sogd = 14.10 | Sogo = 14.9 | Sora = 15.17 | Soyo = 14.7 | Sund = 17.7 | Sylo = 15.1 | Syrc = 9.3 | Tagb = 17.1 | Takr = 15.4 | Tale = 16.5 | Talu = 16.6 | Taml = 12.6 | Tang = 18.11 | Tavt = 16.8 | Telu = 12.7 | Tfng = 19.3 | Tglg = 17.1 | Thaa = 13.1 | Thai = 16.1 | Tibt = 13.4 | Tirh = 15.11 | Tnsa = 13.18<!-- 14.0 --> | Toto = 13.17<!-- 14.0 --> | Ugar = 11.2 | Vaii = 19.5 | Vith = 8.12<!-- 14.0 --> | Wara = 13.9 | Wcho = 13.16 | Xpeo = 11.3 | Xsux = 11.1 | Yezi = 9.6 | Yiii = 18.7 | Zanb = 14.6 | #default=<!-- script not in Unicode, or Qaaa ... Qabx / Z... code --> }}}}<!-- --><noinclude>{{documentation}}</noinclude> 145b69165c4db6cc875235be7b7cd2f12cd63cb4 Module:Format link 828 33 61 2022-10-04T13:37:11Z Pppery 6 Avoid Lua erroring when we run out of expensive parser function calls Scribunto text/plain -------------------------------------------------------------------------------- -- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the {{format link}} template. -------------------------------------------------------------------------------- local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local mArguments -- lazily initialise [[Module:Arguments]] local mError -- lazily initialise [[Module:Error]] local yesno -- lazily initialise [[Module:Yesno]] local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end local function maybeItalicize(s, shouldItalicize) -- Italicize s if s is a string and the shouldItalicize parameter is true. if s and shouldItalicize then return '<i>' .. s .. '</i>' else return s end end local function parseLink(link) -- Parse a link and return a table with the link's components. -- These components are: -- - link: the link, stripped of any initial colon (always present) -- - page: the page name (always present) -- - section: the page name (may be nil) -- - display: the display text, if manually entered after a pipe (may be nil) link = removeInitialColon(link) -- Find whether a faux display value has been added with the {{!}} magic -- word. local prePipe, display = link:match('^(.-)|(.*)$') link = prePipe or link -- Find the page, if it exists. -- For links like [[#Bar]], the page will be nil. local preHash, postHash = link:match('^(.-)#(.*)$') local page if not preHash then -- We have a link like [[Foo]]. page = link elseif preHash ~= '' then -- We have a link like [[Foo#Bar]]. page = preHash end -- Find the section, if it exists. local section if postHash and postHash ~= '' then section = postHash end return { link = link, page = page, section = section, display = display, } end local function formatDisplay(parsed, options) -- Formats a display string based on a parsed link table (matching the -- output of parseLink) and an options table (matching the input options for -- _formatLink). local page = maybeItalicize(parsed.page, options.italicizePage) local section = maybeItalicize(parsed.section, options.italicizeSection) if (not section) then return page elseif (not page) then return mw.ustring.format('§&nbsp;%s', section) else return mw.ustring.format('%s §&nbsp;%s', page, section) end end local function missingArgError(target) mError = require('Module:Error') return mError.error{message = 'Error: no link or target specified! ([[' .. target .. '#Errors|help]])' } end -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.formatLink(frame) -- The formatLink export function, for use in templates. yesno = require('Module:Yesno') local args = getArgs(frame) local link = args[1] or args.link local target = args[3] or args.target if not (link or target) then return missingArgError('Template:Format link') end return p._formatLink{ link = link, display = args[2] or args.display, target = target, italicizePage = yesno(args.italicizepage), italicizeSection = yesno(args.italicizesection), categorizeMissing = args.categorizemissing } end function p._formatLink(options) -- The formatLink export function, for use in modules. checkType('_formatLink', 1, options, 'table') local function check(key, expectedType) --for brevity checkTypeForNamedArg( '_formatLink', key, options[key], expectedType or 'string', true ) end check('link') check('display') check('target') check('italicizePage', 'boolean') check('italicizeSection', 'boolean') check('categorizeMissing') -- Normalize link and target and check that at least one is present if options.link == '' then options.link = nil end if options.target == '' then options.target = nil end if not (options.link or options.target) then return missingArgError('Module:Format link') end local parsed = parseLink(options.link) local display = options.display or parsed.display local catMissing = options.categorizeMissing local category = '' -- Find the display text if not display then display = formatDisplay(parsed, options) end -- Handle the target option if present if options.target then local parsedTarget = parseLink(options.target) parsed.link = parsedTarget.link parsed.page = parsedTarget.page end -- Test if page exists if a diagnostic category is specified if catMissing and (mw.ustring.len(catMissing) > 0) then local title = nil if parsed.page then title = mw.title.new(parsed.page) end if title and (not title.isExternal) then local success, exists = pcall(function() return title.exists end) if success and not exists then category = mw.ustring.format('[[Category:%s]]', catMissing) end end end -- Format the result as a link if parsed.link == display then return mw.ustring.format('[[:%s]]%s', parsed.link, category) else return mw.ustring.format('[[:%s|%s]]%s', parsed.link, display, category) end end -------------------------------------------------------------------------------- -- Derived convenience functions -------------------------------------------------------------------------------- function p.formatPages(options, pages) -- Formats an array of pages using formatLink and the given options table, -- and returns it as an array. Nil values are not allowed. local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink{ link = page, categorizeMissing = options.categorizeMissing, italicizePage = options.italicizePage, italicizeSection = options.italicizeSection } end return ret end return p 1253bdd2683ee4badc33856bfd5499b09a7dca1f Template:No documentation 10 1678 3111 2022-10-05T18:56:25Z wikipedia>MusikBot II 0 Protected "[[Template:No documentation]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 485 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki #REDIRECT [[Template:Improve documentation]] e143e50c85e46c0394365f74e3688aa439b542fe Template:Color box 10 1470 2805 2022-10-06T18:11:46Z w>Terasail 0 Remove TfD tag (Nomination removed) wikitext text/x-wiki <templatestyles src="Legend/styles.css" /><span class="legend-color" style="{{#if:{{{1|}}}|{{greater color contrast ratio|{{{1}}}|black|white|css=y}} }}{{#if:{{{3|}}}|color:{{{3}}}; }}{{#if:{{{border|}}}|border:1px solid {{{border}}}; }}{{#if:{{{padding|}}}|padding:{{{padding}}};}}">{{#if:{{{2|}}} |{{#if:{{{padding|}}}|{{{2}}}|&nbsp;{{{2}}}&nbsp;}} |&nbsp;}}</span><noinclude> {{documentation}}</noinclude> 3ae512cce09eab9e599e79e21b13c0190a5f3e27 Template:Cob 10 1219 2548 2022-10-07T15:01:20Z DatGuy 47 +r from template shortcut wikitext text/x-wiki #REDIRECT [[Template:Collapse bottom]] {{Redirect category shell| {{R from template shortcut}} }} 1cd16c56552caeb938d794d973d1a13c885f7830 Template:Tree list/end 10 486 1075 2022-10-11T18:02:26Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Tree list/end]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2502 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{Documentation|Template:Tree list/doc}} </noinclude> cdcda060fe4563745fb7a50f1c335c9abe5e2b08 Template:Tree list/styles.css 10 484 1067 2022-10-16T20:54:08Z wikipedia>Izno 0 no reason to be protocol relative these days, some ws sanitized-css text/css /* {{pp-template}} */ .treeview ul { padding: 0; margin: 0; } .treeview li { padding: 0; margin: 0; list-style-type: none; list-style-image: none; } .treeview li li { background: url("https://upload.wikimedia.org/wikipedia/commons/f/f2/Treeview-grey-line.png") no-repeat 0 -2981px; /* @noflip */ padding-left: 21px; text-indent: 0.3em; } .treeview li li:last-child { background-position: 0 -5971px } /* first line here deals with new situation after RemexHTML switch, * where emptyline cause the first child to become the 2nd child. Such a mess */ .treeview li.emptyline > ul > .mw-empty-elt:first-child + .emptyline, .treeview li.emptyline > ul > li:first-child { background-position: 0 9px } a033cdb57b07f78781a6c065fa37884bfe489045 Template:Script/styles arabic.css 10 1598 2933 2022-10-17T20:44:25Z w>FDRMRZUSA 0 Activated 'Amiri'. sanitized-css text/css /* {{pp-template}} */ .script-arabic { font-family: 'SF Arabic', Scheherazade, Lateef, LateefGR, 'Scheherazade New', 'Amiri', 'Noto Naskh Arabic', 'Droid Arabic Naskh', 'Microsoft Uighur', 'Sakkal Majalla', 'Harmattan', 'Arabic Typesetting', 'Arabic Transparent', 'Times New Roman', 'Arial', Calibri, 'Microsoft Sans Serif', 'Segoe UI', serif, sans-serif; font-weight: normal; } 7cdd2634c489de0b3907523a449bb10c6a3104cf Module:Icon 828 980 2154 2022-10-21T08:04:06Z wikipedia>WOSlinker 0 use require("strict") instead of require("Module:No globals") Scribunto text/plain -- This module implements [[Template:Icon]]. require("strict") local yesNo = require("Module:Yesno") local getArgs = require("Module:Arguments").getArgs local getPlain = nil local p = {} -- Determine whether we're being called from a sandbox local sandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) and '/sandbox' or '' -- Implements [[Template:Icon]] -- Returns the icon image corresponding to a string (like 'B') function p._main(args, data) local data_module = 'Module:Icon/data'..sandbox data = data or mw.loadData(data_module) local code = args.class or args[1] local iconData if code then code = code:match('^%s*(.-)%s*$'):lower() -- trim whitespace and put in lower case iconData = data[code] end if not iconData then iconData = data._DEFAULT end return string.format( '[[File:%s%s%s|%s|class=noviewer|alt=%s]]', iconData.image, iconData.tooltip and '|' .. iconData.tooltip or '', iconData.link == false and '|link=' or '', args.size or '16x16px', iconData.alt or '' ) end -- Implements [[Template:Icon link]], a superset of [[Template:Icon]] -- Returns an icon, plus a suitably formatted wikilink function p._link(args, data) args.size = args.size or args.iconsize local icon = p._main(args, data) -- If no link given in args[2], default back to [[Template:Icon]] if not args[2] then return icon end -- Strip wiki markup out of link getPlain = getPlain or require("Module:Text").Text().getPlain local link = getPlain(args[2]) local display = args[3] or args[2] -- italicize display string, if requested if yesNo(args.i) or yesNo(args.italic) or yesNo(args.italics) then display = '<i>'..display..'</i>' end -- if display is link, just use standard wlink if link == display then return icon..'&nbsp;[['..link..']]' end return icon..'&nbsp;[['..link..'|'..display..']]' end function p.main(frame) local args = getArgs(frame,{parentFirst=true}) return p._main(args) end function p.link(frame) local args = getArgs(frame,{parentFirst=true}) return p._link(args) end return p 7688d9a465bd7c4caa51f7e5c02676c162d583f5 Module:Protection banner 828 40 75 2022-10-21T08:07:11Z wikipedia>WOSlinker 0 use require('strict') instead of require('Module:No globals') Scribunto text/plain -- This module implements {{pp-meta}} and its daughter templates such as -- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}. -- Initialise necessary modules. require('strict') local makeFileLink = require('Module:File link')._main local effectiveProtectionLevel = require('Module:Effective protection level')._main local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main local yesno = require('Module:Yesno') -- Lazily initialise modules and objects we don't always need. local getArgs, makeMessageBox, lang -- Set constants. local CONFIG_MODULE = 'Module:Protection banner/config' -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function makeCategoryLink(cat, sort) if cat then return string.format( '[[%s:%s|%s]]', mw.site.namespaces[14].name, cat, sort ) end end -- Validation function for the expiry and the protection date local function validateDate(dateString, dateType) if not lang then lang = mw.language.getContentLanguage() end local success, result = pcall(lang.formatDate, lang, 'U', dateString) if success then result = tonumber(result) if result then return result end end error(string.format( 'invalid %s: %s', dateType, tostring(dateString) ), 4) end local function makeFullUrl(page, query, display) return string.format( '[%s %s]', tostring(mw.uri.fullUrl(page, query)), display ) end -- Given a directed graph formatted as node -> table of direct successors, -- get a table of all nodes reachable from a given node (though always -- including the given node). local function getReachableNodes(graph, start) local toWalk, retval = {[start] = true}, {} while true do -- Can't use pairs() since we're adding and removing things as we're iterating local k = next(toWalk) -- This always gets the "first" key if k == nil then return retval end toWalk[k] = nil retval[k] = true for _,v in ipairs(graph[k]) do if not retval[v] then toWalk[v] = true end end end end -------------------------------------------------------------------------------- -- Protection class -------------------------------------------------------------------------------- local Protection = {} Protection.__index = Protection Protection.supportedActions = { edit = true, move = true, autoreview = true, upload = true } Protection.bannerConfigFields = { 'text', 'explanation', 'tooltip', 'alt', 'link', 'image' } function Protection.new(args, cfg, title) local obj = {} obj._cfg = cfg obj.title = title or mw.title.getCurrentTitle() -- Set action if not args.action then obj.action = 'edit' elseif Protection.supportedActions[args.action] then obj.action = args.action else error(string.format( 'invalid action: %s', tostring(args.action) ), 3) end -- Set level obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title) if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then -- Users need to be autoconfirmed to move pages anyway, so treat -- semi-move-protected pages as unprotected. obj.level = '*' end -- Set expiry local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title) if effectiveExpiry == 'infinity' then obj.expiry = 'indef' elseif effectiveExpiry ~= 'unknown' then obj.expiry = validateDate(effectiveExpiry, 'expiry date') end -- Set reason if args[1] then obj.reason = mw.ustring.lower(args[1]) if obj.reason:find('|') then error('reasons cannot contain the pipe character ("|")', 3) end end -- Set protection date if args.date then obj.protectionDate = validateDate(args.date, 'protection date') end -- Set banner config do obj.bannerConfig = {} local configTables = {} if cfg.banners[obj.action] then configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason] end if cfg.defaultBanners[obj.action] then configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level] configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default end configTables[#configTables + 1] = cfg.masterBanner for i, field in ipairs(Protection.bannerConfigFields) do for j, t in ipairs(configTables) do if t[field] then obj.bannerConfig[field] = t[field] break end end end end return setmetatable(obj, Protection) end function Protection:isUserScript() -- Whether the page is a user JavaScript or CSS page. local title = self.title return title.namespace == 2 and ( title.contentModel == 'javascript' or title.contentModel == 'css' ) end function Protection:isProtected() return self.level ~= '*' end function Protection:shouldShowLock() -- Whether we should output a banner/padlock return self:isProtected() and not self:isUserScript() end -- Whether this page needs a protection category. Protection.shouldHaveProtectionCategory = Protection.shouldShowLock function Protection:isTemporary() return type(self.expiry) == 'number' end function Protection:makeProtectionCategory() if not self:shouldHaveProtectionCategory() then return '' end local cfg = self._cfg local title = self.title -- Get the expiry key fragment. local expiryFragment if self.expiry == 'indef' then expiryFragment = self.expiry elseif type(self.expiry) == 'number' then expiryFragment = 'temp' end -- Get the namespace key fragment. local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace] if not namespaceFragment and title.namespace % 2 == 1 then namespaceFragment = 'talk' end -- Define the order that key fragments are tested in. This is done with an -- array of tables containing the value to be tested, along with its -- position in the cfg.protectionCategories table. local order = { {val = expiryFragment, keypos = 1}, {val = namespaceFragment, keypos = 2}, {val = self.reason, keypos = 3}, {val = self.level, keypos = 4}, {val = self.action, keypos = 5} } --[[ -- The old protection templates used an ad-hoc protection category system, -- with some templates prioritising namespaces in their categories, and -- others prioritising the protection reason. To emulate this in this module -- we use the config table cfg.reasonsWithNamespacePriority to set the -- reasons for which namespaces have priority over protection reason. -- If we are dealing with one of those reasons, move the namespace table to -- the end of the order table, i.e. give it highest priority. If not, the -- reason should have highest priority, so move that to the end of the table -- instead. --]] table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3)) --[[ -- Define the attempt order. Inactive subtables (subtables with nil "value" -- fields) are moved to the end, where they will later be given the key -- "all". This is to cut down on the number of table lookups in -- cfg.protectionCategories, which grows exponentially with the number of -- non-nil keys. We keep track of the number of active subtables with the -- noActive parameter. --]] local noActive, attemptOrder do local active, inactive = {}, {} for i, t in ipairs(order) do if t.val then active[#active + 1] = t else inactive[#inactive + 1] = t end end noActive = #active attemptOrder = active for i, t in ipairs(inactive) do attemptOrder[#attemptOrder + 1] = t end end --[[ -- Check increasingly generic key combinations until we find a match. If a -- specific category exists for the combination of key fragments we are -- given, that match will be found first. If not, we keep trying different -- key fragment combinations until we match using the key -- "all-all-all-all-all". -- -- To generate the keys, we index the key subtables using a binary matrix -- with indexes i and j. j is only calculated up to the number of active -- subtables. For example, if there were three active subtables, the matrix -- would look like this, with 0 corresponding to the key fragment "all", and -- 1 corresponding to other key fragments. -- -- j 1 2 3 -- i -- 1 1 1 1 -- 2 0 1 1 -- 3 1 0 1 -- 4 0 0 1 -- 5 1 1 0 -- 6 0 1 0 -- 7 1 0 0 -- 8 0 0 0 -- -- Values of j higher than the number of active subtables are set -- to the string "all". -- -- A key for cfg.protectionCategories is constructed for each value of i. -- The position of the value in the key is determined by the keypos field in -- each subtable. --]] local cats = cfg.protectionCategories for i = 1, 2^noActive do local key = {} for j, t in ipairs(attemptOrder) do if j > noActive then key[t.keypos] = 'all' else local quotient = i / 2 ^ (j - 1) quotient = math.ceil(quotient) if quotient % 2 == 1 then key[t.keypos] = t.val else key[t.keypos] = 'all' end end end key = table.concat(key, '|') local attempt = cats[key] if attempt then return makeCategoryLink(attempt, title.text) end end return '' end function Protection:isIncorrect() local expiry = self.expiry return not self:shouldHaveProtectionCategory() or type(expiry) == 'number' and expiry < os.time() end function Protection:isTemplateProtectedNonTemplate() local action, namespace = self.action, self.title.namespace return self.level == 'templateeditor' and ( (action ~= 'edit' and action ~= 'move') or (namespace ~= 10 and namespace ~= 828) ) end function Protection:makeCategoryLinks() local msg = self._cfg.msg local ret = {self:makeProtectionCategory()} if self:isIncorrect() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-incorrect'], self.title.text ) end if self:isTemplateProtectedNonTemplate() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-template'], self.title.text ) end return table.concat(ret) end -------------------------------------------------------------------------------- -- Blurb class -------------------------------------------------------------------------------- local Blurb = {} Blurb.__index = Blurb Blurb.bannerTextFields = { text = true, explanation = true, tooltip = true, alt = true, link = true } function Blurb.new(protectionObj, args, cfg) return setmetatable({ _cfg = cfg, _protectionObj = protectionObj, _args = args }, Blurb) end -- Private methods -- function Blurb:_formatDate(num) -- Formats a Unix timestamp into dd Month, YYYY format. lang = lang or mw.language.getContentLanguage() local success, date = pcall( lang.formatDate, lang, self._cfg.msg['expiry-date-format'] or 'j F Y', '@' .. tostring(num) ) if success then return date end end function Blurb:_getExpandedMessage(msgKey) return self:_substituteParameters(self._cfg.msg[msgKey]) end function Blurb:_substituteParameters(msg) if not self._params then local parameterFuncs = {} parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter parameterFuncs.EDITREQUEST = self._makeEditRequestParameter parameterFuncs.EXPIRY = self._makeExpiryParameter parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter parameterFuncs.IMAGELINK = self._makeImageLinkParameter parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter parameterFuncs.PAGETYPE = self._makePagetypeParameter parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter parameterFuncs.TALKPAGE = self._makeTalkPageParameter parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter parameterFuncs.VANDAL = self._makeVandalTemplateParameter self._params = setmetatable({}, { __index = function (t, k) local param if parameterFuncs[k] then param = parameterFuncs[k](self) end param = param or '' t[k] = param return param end }) end msg = msg:gsub('${(%u+)}', self._params) return msg end function Blurb:_makeCurrentVersionParameter() -- A link to the page history or the move log, depending on the kind of -- protection. local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'move' then -- We need the move log link. return makeFullUrl( 'Special:Log', {type = 'move', page = pagename}, self:_getExpandedMessage('current-version-move-display') ) else -- We need the history link. return makeFullUrl( pagename, {action = 'history'}, self:_getExpandedMessage('current-version-edit-display') ) end end function Blurb:_makeEditRequestParameter() local mEditRequest = require('Module:Submit an edit request') local action = self._protectionObj.action local level = self._protectionObj.level -- Get the edit request type. local requestType if action == 'edit' then if level == 'autoconfirmed' then requestType = 'semi' elseif level == 'extendedconfirmed' then requestType = 'extended' elseif level == 'templateeditor' then requestType = 'template' end end requestType = requestType or 'full' -- Get the display value. local display = self:_getExpandedMessage('edit-request-display') return mEditRequest._link{type = requestType, display = display} end function Blurb:_makeExpiryParameter() local expiry = self._protectionObj.expiry if type(expiry) == 'number' then return self:_formatDate(expiry) else return expiry end end function Blurb:_makeExplanationBlurbParameter() -- Cover special cases first. if self._protectionObj.title.namespace == 8 then -- MediaWiki namespace return self:_getExpandedMessage('explanation-blurb-nounprotect') end -- Get explanation blurb table keys local action = self._protectionObj.action local level = self._protectionObj.level local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject' -- Find the message in the explanation blurb table and substitute any -- parameters. local explanations = self._cfg.explanationBlurbs local msg if explanations[action][level] and explanations[action][level][talkKey] then msg = explanations[action][level][talkKey] elseif explanations[action][level] and explanations[action][level].default then msg = explanations[action][level].default elseif explanations[action].default and explanations[action].default[talkKey] then msg = explanations[action].default[talkKey] elseif explanations[action].default and explanations[action].default.default then msg = explanations[action].default.default else error(string.format( 'could not find explanation blurb for action "%s", level "%s" and talk key "%s"', action, level, talkKey ), 8) end return self:_substituteParameters(msg) end function Blurb:_makeImageLinkParameter() local imageLinks = self._cfg.imageLinks local action = self._protectionObj.action local level = self._protectionObj.level local msg if imageLinks[action][level] then msg = imageLinks[action][level] elseif imageLinks[action].default then msg = imageLinks[action].default else msg = imageLinks.edit.default end return self:_substituteParameters(msg) end function Blurb:_makeIntroBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-blurb-expiry') else return self:_getExpandedMessage('intro-blurb-noexpiry') end end function Blurb:_makeIntroFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-fragment-expiry') else return self:_getExpandedMessage('intro-fragment-noexpiry') end end function Blurb:_makePagetypeParameter() local pagetypes = self._cfg.pagetypes return pagetypes[self._protectionObj.title.namespace] or pagetypes.default or error('no default pagetype defined', 8) end function Blurb:_makeProtectionBlurbParameter() local protectionBlurbs = self._cfg.protectionBlurbs local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionBlurbs[action][level] then msg = protectionBlurbs[action][level] elseif protectionBlurbs[action].default then msg = protectionBlurbs[action].default elseif protectionBlurbs.edit.default then msg = protectionBlurbs.edit.default else error('no protection blurb defined for protectionBlurbs.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionDateParameter() local protectionDate = self._protectionObj.protectionDate if type(protectionDate) == 'number' then return self:_formatDate(protectionDate) else return protectionDate end end function Blurb:_makeProtectionLevelParameter() local protectionLevels = self._cfg.protectionLevels local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionLevels[action][level] then msg = protectionLevels[action][level] elseif protectionLevels[action].default then msg = protectionLevels[action].default elseif protectionLevels.edit.default then msg = protectionLevels.edit.default else error('no protection level defined for protectionLevels.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionLogParameter() local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'autoreview' then -- We need the pending changes log. return makeFullUrl( 'Special:Log', {type = 'stable', page = pagename}, self:_getExpandedMessage('pc-log-display') ) else -- We need the protection log. return makeFullUrl( 'Special:Log', {type = 'protect', page = pagename}, self:_getExpandedMessage('protection-log-display') ) end end function Blurb:_makeTalkPageParameter() return string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[self._protectionObj.title.namespace].talk.name, self._protectionObj.title.text, self._args.section or 'top', self:_getExpandedMessage('talk-page-link-display') ) end function Blurb:_makeTooltipBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-blurb-expiry') else return self:_getExpandedMessage('tooltip-blurb-noexpiry') end end function Blurb:_makeTooltipFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-fragment-expiry') else return self:_getExpandedMessage('tooltip-fragment-noexpiry') end end function Blurb:_makeVandalTemplateParameter() return mw.getCurrentFrame():expandTemplate{ title="vandal-m", args={self._args.user or self._protectionObj.title.baseText} } end -- Public methods -- function Blurb:makeBannerText(key) -- Validate input. if not key or not Blurb.bannerTextFields[key] then error(string.format( '"%s" is not a valid banner config field', tostring(key) ), 2) end -- Generate the text. local msg = self._protectionObj.bannerConfig[key] if type(msg) == 'string' then return self:_substituteParameters(msg) elseif type(msg) == 'function' then msg = msg(self._protectionObj, self._args) if type(msg) ~= 'string' then error(string.format( 'bad output from banner config function with key "%s"' .. ' (expected string, got %s)', tostring(key), type(msg) ), 4) end return self:_substituteParameters(msg) end end -------------------------------------------------------------------------------- -- BannerTemplate class -------------------------------------------------------------------------------- local BannerTemplate = {} BannerTemplate.__index = BannerTemplate function BannerTemplate.new(protectionObj, cfg) local obj = {} obj._cfg = cfg -- Set the image filename. local imageFilename = protectionObj.bannerConfig.image if imageFilename then obj._imageFilename = imageFilename else -- If an image filename isn't specified explicitly in the banner config, -- generate it from the protection status and the namespace. local action = protectionObj.action local level = protectionObj.level local namespace = protectionObj.title.namespace local reason = protectionObj.reason -- Deal with special cases first. if ( namespace == 10 or namespace == 828 or reason and obj._cfg.indefImageReasons[reason] ) and action == 'edit' and level == 'sysop' and not protectionObj:isTemporary() then -- Fully protected modules and templates get the special red "indef" -- padlock. obj._imageFilename = obj._cfg.msg['image-filename-indef'] else -- Deal with regular protection types. local images = obj._cfg.images if images[action] then if images[action][level] then obj._imageFilename = images[action][level] elseif images[action].default then obj._imageFilename = images[action].default end end end end return setmetatable(obj, BannerTemplate) end function BannerTemplate:renderImage() local filename = self._imageFilename or self._cfg.msg['image-filename-default'] or 'Transparent.gif' return makeFileLink{ file = filename, size = (self.imageWidth or 20) .. 'px', alt = self._imageAlt, link = self._imageLink, caption = self.imageCaption } end -------------------------------------------------------------------------------- -- Banner class -------------------------------------------------------------------------------- local Banner = setmetatable({}, BannerTemplate) Banner.__index = Banner function Banner.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 40 obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip. obj._reasonText = blurbObj:makeBannerText('text') obj._explanationText = blurbObj:makeBannerText('explanation') obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing. return setmetatable(obj, Banner) end function Banner:__tostring() -- Renders the banner. makeMessageBox = makeMessageBox or require('Module:Message box').main local reasonText = self._reasonText or error('no reason text set', 2) local explanationText = self._explanationText local mbargs = { page = self._page, type = 'protection', image = self:renderImage(), text = string.format( "'''%s'''%s", reasonText, explanationText and '<br />' .. explanationText or '' ) } return makeMessageBox('mbox', mbargs) end -------------------------------------------------------------------------------- -- Padlock class -------------------------------------------------------------------------------- local Padlock = setmetatable({}, BannerTemplate) Padlock.__index = Padlock function Padlock.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 20 obj.imageCaption = blurbObj:makeBannerText('tooltip') obj._imageAlt = blurbObj:makeBannerText('alt') obj._imageLink = blurbObj:makeBannerText('link') obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action] or cfg.padlockIndicatorNames.default or 'pp-default' return setmetatable(obj, Padlock) end function Padlock:__tostring() local frame = mw.getCurrentFrame() -- The nowiki tag helps prevent whitespace at the top of articles. return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{ name = 'indicator', args = {name = self._indicatorName}, content = self:renderImage() } end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- This is used for testing purposes. return { Protection = Protection, Blurb = Blurb, BannerTemplate = BannerTemplate, Banner = Banner, Padlock = Padlock, } end function p._main(args, cfg, title) args = args or {} cfg = cfg or require(CONFIG_MODULE) local protectionObj = Protection.new(args, cfg, title) local ret = {} -- If a page's edit protection is equally or more restrictive than its -- protection from some other action, then don't bother displaying anything -- for the other action (except categories). if not yesno(args.catonly) and (protectionObj.action == 'edit' or args.demolevel or not getReachableNodes( cfg.hierarchy, protectionObj.level )[effectiveProtectionLevel('edit', protectionObj.title)]) then -- Initialise the blurb object local blurbObj = Blurb.new(protectionObj, args, cfg) -- Render the banner if protectionObj:shouldShowLock() then ret[#ret + 1] = tostring( (yesno(args.small) and Padlock or Banner) .new(protectionObj, blurbObj, cfg) ) end end -- Render the categories if yesno(args.category) ~= false then ret[#ret + 1] = protectionObj:makeCategoryLinks() end return table.concat(ret) end function p.main(frame, cfg) cfg = cfg or require(CONFIG_MODULE) -- Find default args, if any. local parent = frame.getParent and frame:getParent() local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')] -- Find user args, and use the parent frame if we are being called from a -- wrapper template. getArgs = getArgs or require('Module:Arguments').getArgs local userArgs = getArgs(frame, { parentOnly = defaultArgs, frameOnly = not defaultArgs }) -- Build the args table. User-specified args overwrite default args. local args = {} for k, v in pairs(defaultArgs or {}) do args[k] = v end for k, v in pairs(userArgs) do args[k] = v end return p._main(args, cfg) end return p 894f0884d4c2da1ce19d385b96f59af654b0946a Module:Redirect template 828 1016 2228 2022-10-21T08:08:03Z wikipedia>WOSlinker 0 use require('strict') instead of require('Module:No globals') Scribunto text/plain require('strict') local p = {} -- key is beginning of arg name. value is table with namespace number and link -- alternatively, a function taking the namespace number and returning a validity -- can be used local namespaceCategories = { all = { function() return true end }, main = { 0, '[[wp:mainspace|main]]' }, help = { 12, '[[wp:help namespace|help]]' }, portal = { 100, '[[wp:portal|portal]]' }, talk = { function(n) return n > 0 and n%2 == 1 end, '[[Help:Talk pages|talk]]' }, template = { 10, '[[wp:template namespace|template]]' }, wikipedia = { 4, '[[wp:project namespace|Wikipedia project]]' }, category = { 14, '[[wp:categorization|category]]' }, user = { 2, '[[wp:user pages|user]]' }, } -- remove whitespaces from beginning and end of args local function valueFunc(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil end end return val end local function getPrettyName(args) for k in pairs(namespaceCategories) do if args[k .. ' category'] then return string.format("'''[[:Category:%s|%s]]''': ", args[k .. ' category'], args.name) end end return string.format("'''%s''': ", args.name) end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Redirect template', valueFunc = valueFunc}) local namespace = mw.title.getCurrentTitle().namespace --- XXX: this is a HORRIBLE HACK. kill it with fire as soon as https://bugzilla.wikimedia.org/show_bug.cgi?id=12974 is fixed local beCompatibleWithBug12974 = args.info and (args.info:find('^[:;#*]', 1) == 1 or args.info:find('{|', 1, true) == 1) and '\n' or ' ' local content = string.format('\n<div class="rcat %s">\n*%sThis is a redirect%s%s.%s%s\n</div>', args.id and ('rcat-' .. string.gsub(args.id, ' ', '_')) or '', args.name and getPrettyName(args) or '', args.from and (' from ' .. args.from) or '', args.to and (' to ' .. args.to) or '', args.info and beCompatibleWithBug12974 or '', args.info or '' ) for k,v in pairs(namespaceCategories) do if args[k .. ' category'] then if type(v[1]) == 'function' and v[1](namespace) or v[1] == namespace then if args.sortkey then content = content .. string.format('[[Category:%s|%s]]', args[k .. ' category'], args.sortkey) else content = content .. string.format('[[Category:%s]]', args[k .. ' category']) end elseif args['other category'] then if args.sortkey then content = content .. string.format('[[Category:%s|%s]]', args['other category'], args.sortkey) else content = content .. string.format('[[Category:%s]]', args['other category']) end else content = content .. frame:expandTemplate{title = 'Incorrect redirect template', args = {v[2]}} end end end if namespace == 0 then local yesno = require('Module:Yesno') if yesno(args.printworthy) == true then return content .. '[[Category:Printworthy redirects]]' elseif yesno(args.printworthy) == false then return content .. '[[Category:Unprintworthy redirects]]' end end return content end return p bcc2d5353cffbfcb00be2d9a7c2f9f276613e488 Module:Delink 828 167 387 2022-10-21T09:52:18Z wikipedia>WOSlinker 0 use require("strict") instead of require("Module:No globals") Scribunto text/plain -- This module de-links most wikitext. require("strict") local p = {} local getArgs local function delinkReversePipeTrick(s) if s:match("^%[%[|.*[|\n]") then -- Check for newlines or multiple pipes. return s end return s:match("%[%[|(.*)%]%]") end local function delinkPipeTrick(s) -- We need to deal with colons, brackets, and commas, per [[Help:Pipe trick]]. -- First, remove the text before the first colon, if any. if s:match(":") then s = s:match("%[%[.-:(.*)|%]%]") -- If there are no colons, grab all of the text apart from the square brackets and the pipe. else s = s:match("%[%[(.*)|%]%]") end -- Next up, brackets and commas. if s:match("%(.-%)$") then -- Brackets trump commas. s = s:match("(.-) ?%(.-%)$") elseif s:match(",") then -- If there are no brackets, display only the text before the first comma. s = s:match("(.-),.*$") end return s end -- Return wikilink target |wikilinks=target local function getDelinkedTarget(s) local result = s -- Deal with the reverse pipe trick. if result:match("%[%[|") then return delinkReversePipeTrick(result) end result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs. result = mw.text.decode(result, true) -- decode HTML entities. -- Check for bad titles. To do this we need to find the -- title area of the link, i.e. the part before any pipes. local target_area if result:match("|") then -- Find if we're dealing with a piped link. target_area = result:match("^%[%[(.-)|.*%]%]") else target_area = result:match("^%[%[(.-)%]%]") end -- Check for bad characters. if mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") and mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") ~= "?" then return s end return target_area end local function getDelinkedLabel(s) local result = s -- Deal with the reverse pipe trick. if result:match("%[%[|") then return delinkReversePipeTrick(result) end result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs. result = mw.text.decode(result, true) -- decode HTML entities. -- Check for bad titles. To do this we need to find the -- title area of the link, i.e. the part before any pipes. local target_area if result:match("|") then -- Find if we're dealing with a piped link. target_area = result:match("^%[%[(.-)|.*%]%]") else target_area = result:match("^%[%[(.-)%]%]") end -- Check for bad characters. if mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") and mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") ~= "?" then return s end -- Check for categories, interwikis, and files. local colon_prefix = result:match("%[%[(.-):.*%]%]") or "" -- Get the text before the first colon. local ns = mw.site.namespaces[colon_prefix] -- see if this is a known namespace if mw.language.isKnownLanguageTag(colon_prefix) or (ns and (ns.canonicalName == "File" or ns.canonicalName == "Category")) then return "" end -- Remove the colon if the link is using the [[Help:Colon trick]]. if result:match("%[%[:") then result = "[[" .. result:match("%[%[:(.*%]%])") end -- Deal with links using the [[Help:Pipe trick]]. if mw.ustring.match(result, "^%[%[[^|]*|%]%]") then return delinkPipeTrick(result) end -- Find the display area of the wikilink if result:match("|") then -- Find if we're dealing with a piped link. result = result:match("^%[%[.-|(.+)%]%]") -- Remove new lines from the display of multiline piped links, -- where the pipe is before the first new line. result = result:gsub("\n", "") else result = result:match("^%[%[(.-)%]%]") end return result end local function delinkURL(s) -- Assume we have already delinked internal wikilinks, and that -- we have been passed some text between two square brackets [foo]. -- If the text contains a line break it is not formatted as a URL, regardless of other content. if s:match("\n") then return s end -- Check if the text has a valid URL prefix and at least one valid URL character. local valid_url_prefixes = {"//", "http://", "https://", "ftp://", "gopher://", "mailto:", "news:", "irc://"} local url_prefix for _ ,v in ipairs(valid_url_prefixes) do if mw.ustring.match(s, '^%[' .. v ..'[^"%s].*%]' ) then url_prefix = v break end end -- Get display text if not url_prefix then return s end s = s:match("^%[" .. url_prefix .. "(.*)%]") -- Grab all of the text after the URL prefix and before the final square bracket. s = s:match('^.-(["<> ].*)') or "" -- Grab all of the text after the first URL separator character ("<> ). s = mw.ustring.match(s, "^%s*(%S.*)$") or "" -- If the separating character was a space, trim it off. local s_decoded = mw.text.decode(s, true) if mw.ustring.match(s_decoded, "%c") then return s end return s_decoded end local function delinkLinkClass(text, pattern, delinkFunction) if type(text) ~= "string" then error("Attempt to de-link non-string input.", 2) end if type(pattern) ~= "string" or mw.ustring.sub(pattern, 1, 1) ~= "^" then error('Invalid pattern detected. Patterns must begin with "^".', 2) end -- Iterate over the text string, and replace any matched text. using the -- delink function. We need to iterate character by character rather -- than just use gsub, otherwise nested links aren't detected properly. local result = "" while text ~= "" do -- Replace text using one iteration of gsub. text = mw.ustring.gsub(text, pattern, delinkFunction, 1) -- Append the left-most character to the result string. result = result .. mw.ustring.sub(text, 1, 1) text = mw.ustring.sub(text, 2, -1) end return result end function p._delink(args) local text = args[1] or "" if args.refs == "yes" then -- Remove any [[Help:Strip markers]] representing ref tags. In most situations -- this is not a good idea - only use it if you know what you are doing! text = mw.ustring.gsub(text, "UNIQ%w*%-ref%-%d*%-QINU", "") end if args.comments ~= "no" then text = text:gsub("<!%-%-.-%-%->", "") -- Remove html comments. end if args.wikilinks ~= "no" and args.wikilinks ~= "target" then -- De-link wikilinks and return the label portion of the wikilink. text = delinkLinkClass(text, "^%[%[.-%]%]", getDelinkedLabel) elseif args.wikilinks == "target" then -- De-link wikilinks and return the target portions of the wikilink. text = delinkLinkClass(text, "^%[%[.-%]%]", getDelinkedTarget) end if args.urls ~= "no" then text = delinkLinkClass(text, "^%[.-%]", delinkURL) -- De-link URLs. end if args.whitespace ~= "no" then -- Replace single new lines with a single space, but leave double new lines -- and new lines only containing spaces or tabs before a second new line. text = mw.ustring.gsub(text, "([^\n \t][ \t]*)\n([ \t]*[^\n \t])", "%1 %2") text = text:gsub("[ \t]+", " ") -- Remove extra tabs and spaces. end return text end function p.delink(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return p._delink(getArgs(frame, {wrappers = 'Template:Delink'})) end return p 5b8e75ac750b5d3ed76cc4158aefcd1568a6a6fd Module:Ustring 828 1596 2931 2022-10-21T16:00:20Z Legoktm 41 Replace [[Module:No globals]] with require( "strict" ) Scribunto text/plain require('strict') return setmetatable({}, { __index = function(t, k) local what = mw.ustring[k] if type(what) ~= "function" then return what end return function(frame) local fargs = frame.args local fargsused = { tag = true } local args = {} local str_i = 1 while fargs['s' .. str_i] do fargsused['s' .. str_i] = true args[str_i] = fargs['s' .. str_i] str_i = str_i + 1 end for i, v in ipairs(fargs) do fargsused[i] = true args[i + str_i - 1] = tonumber(v) or v:gsub("^\\", "", 1) end if not fargs.tag then return (what(unpack(args))) -- Outside parens truncate to first result avoiding tail call end local tagargs = {} for x, y in pairs(fargs) do if not fargsused[x] then tagargs[x] = y end end return frame:extensionTag{name = fargs.tag, content = what(unpack(args)), args = tagargs} end end }) e0455dab4b66831f7596e77432ad865faeef506c Module:Australian place map 828 1389 2724 2022-10-21T21:04:12Z Legoktm 41 Replace [[Module:No globals]] with require( "strict" ) Scribunto text/plain -- This module implements the selection of the location map -- in [[Template:Infobox Australian place]] and [[Template:Infobox Australian road]] require('strict') local p = {} local function isnotblank( s ) return s and s ~= '' end local statenames = { sa = 'South Australia', vic = 'Victoria', nsw = 'New South Wales', qld = 'Queensland', nt = 'Northern Territory', wa = 'Western Australia', tas = 'Tasmania', act = 'Australian Capital Territory', jbt = 'Jervis Bay Territory', ni = 'Norfolk Island' } local mapwidths = { sa = 230, qld = 190, nt = 190, wa = 180, tas = 210, act = 180 } function p.main(frame) local largs = frame:getParent().args local place_type = (largs.type or ''):lower() local map_name = largs.map_type or '' local map_type = (largs.map_type or 'auto'):lower() local state_abbr = (largs.state or ''):lower() local map_width = 270 local coords = largs.coordinates or '' local coordsa = largs.coordinates_a or '' local coordsb = largs.coordinates_b or '' -- Default for LGAs is nomap -- Default for everywhere else is auto if map_type == '' or map_type == 'auto' then if place_type == 'lga' then map_type = 'nomap' else map_type = 'auto' end end -- Apply legacy parameters if isnotblank( largs.alternative_location_map ) then map_type = largs.alternative_location_map map_name = map_type elseif isnotblank( largs.force_national_map ) then map_type = 'national' map_name = 'Australia' elseif isnotblank( largs.use_lga_map ) then map_type = 'lga' end -- Process the value in map_type if map_type == 'state' or map_type == 'auto' or map_type == 'lga' then map_name = 'Australia ' .. (statenames[state_abbr] or '') map_width = mapwidths[state_abbr] or 270 if map_type == 'lga' then map_name = map_name .. ' ' .. (largs.lga or '') map_width = mapwidths[state_abbr] or 270 end elseif map_type == 'national' or map_type == 'australia' then map_name = 'Australia' end if isnotblank(coords) or isnotblank(coordsa) then else map_type = 'nomap' end -- Finally build the map if map_type ~= 'nomap' then local caption = largs.pushpin_map_caption or '' if caption ~= '' then caption = '<div style="font-size: smaller;">' .. caption .. '</div>' end if isnotblank(coordsa) then return frame:expandTemplate{ title = 'Location map many', args = { map_name, relief = largs.relief or '', label1 = isnotblank(coordsb) and isnotblank(largs.direction_a) and (largs.direction_a .. ' end') or (largs.road_name or ''), coordinates1 = coordsa, position1 = isnotblank(largs.pushpin_label_position_a) and largs.pushpin_label_position_a or 'left', coordinates2 = coordsb, label2 = isnotblank(largs.direction_b) and (largs.direction_b .. ' end') or '', position2 = isnotblank(largs.pushpin_label_position_b) and largs.pushpin_label_position_b or 'left', marksize = 8, float = 'center', caption = caption, border = 'infobox', width = map_width, alt = largs.map_alt or '' } } end return frame:expandTemplate{ title = 'Location map', args = { map_name, label = largs.name or '', relief = largs.relief or '', coordinates = coords, marksize = 6, position = largs.pushpin_label_position or '', float = 'center', caption = caption, border = 'infobox', width = map_width, alt = largs.map_alt or '' } } end return '' end return p 24556cd36514a51adcec62de79be9cbaa5005ec6 Module:Location map/multi 828 1634 2979 2022-10-21T21:08:54Z Legoktm 41 Replace [[Module:No globals]] with require( "strict" ) Scribunto text/plain require('strict') local p = {} local getArgs = require('Module:Arguments').getArgs local locmap = require('Module:Location map') local function switcherSeparate(s) if s == nil then return {} end local retval = {} for i in string.gmatch(s .. '#', '([^#]*)#') do i = mw.text.trim(i) retval[#retval + 1] = (i ~= '' and i) end return retval end function p.container(frame, args, map) local caption_list = {} if not args then args = getArgs(frame, {wrappers = 'Template:Location map+', valueFunc = locmap.valueFunc}) end if not map then if args[1] then map = {} for mapname in string.gmatch(args[1], '[^#]+') do map[#map + 1] = locmap.getMapParams(mapname, frame) end if args['caption'] then if args['caption'] == "" then while #caption_list < #map do caption_list[#caption_list + 1] = args['caption'] end else for caption in mw.text.gsplit(args['caption'], '##', true) do caption_list[#caption_list + 1] = caption end end end if #map == 1 then map = map[1] end else map = locmap.getMapParams('World', frame) end end if type(map) == 'table' then local placeslist = mw.text.gsplit(args.places, '#PlaceList#') local permaplaces = {} local numbermaps = #map local count = 0 for i = 1,numbermaps do permaplaces[i] = {} end for place in placeslist do table.insert(permaplaces[count%numbermaps + 1],place) count = count + 1 end local altmaps = switcherSeparate(args.AlternativeMap) if #altmaps > #map then error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map)) end local overlays = switcherSeparate(args.overlay_image) if #overlays > #map then error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map)) end if #caption_list > #map then error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map)) end local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do args.AlternativeMap = altmaps[k] args.overlay_image = overlays[k] args.caption = caption_list[k] args.places = table.concat(permaplaces[k]) outputs[k] = p.container(frame, args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' else return locmap.top(frame, args, map) .. (args.places and args.places:gsub('%s*\n%s*', '') or '') .. locmap.bottom(frame, args, map) end end local function manyMakeArgs(fullArgs, n) if n == 1 then return { lat = fullArgs.lat1 or fullArgs.lat, long = fullArgs.long1 or fullArgs.long, coordinates = fullArgs.coordinates1 or fullArgs.coordinates, lat_deg = fullArgs.lat1_deg or fullArgs.lat_deg, lat_min = fullArgs.lat1_min or fullArgs.lat_min, lat_sec = fullArgs.lat1_sec or fullArgs.lat_sec, lat_dir = fullArgs.lat1_dir or fullArgs.lat_dir, lon_deg = fullArgs.lon1_deg or fullArgs.lon_deg, lon_min = fullArgs.lon1_min or fullArgs.lon_min, lon_sec = fullArgs.lon1_sec or fullArgs.lon_sec, lon_dir = fullArgs.lon1_dir or fullArgs.lon_dir, outside = fullArgs.outside1 or fullArgs.outside, mark = fullArgs.mark1 or fullArgs.mark, marksize = fullArgs.mark1size or fullArgs.marksize, link = fullArgs.link1 or fullArgs.link, label = fullArgs.label1 or fullArgs.label, label_size = fullArgs.label1_size or fullArgs.label_size, label_width = fullArgs.label1_width or fullArgs.label_width, position = fullArgs.position1 or fullArgs.pos1 or fullArgs.position or fullArgs.pos, background = fullArgs.background1 or fullArgs.bg1 or fullArgs.background or fullArgs.bg } else return { lat = fullArgs['lat' .. n], long = fullArgs['long' .. n], coordinates = fullArgs['coordinates' .. n], lat_deg = fullArgs['lat' .. n .. '_deg'], lat_min = fullArgs['lat' .. n .. '_min'], lat_sec = fullArgs['lat' .. n .. '_sec'], lat_dir = fullArgs['lat' .. n .. '_dir'], lon_deg = fullArgs['lon' .. n .. '_deg'], lon_min = fullArgs['lon' .. n .. '_min'], lon_sec = fullArgs['lon' .. n .. '_sec'], lon_dir = fullArgs['lon' .. n .. '_dir'], outside = fullArgs['outside' .. n], mark = fullArgs['mark' .. n], marksize = fullArgs['mark' .. n .. 'size'], link = fullArgs['link' .. n], label = fullArgs['label' .. n], label_size = fullArgs['label' .. n .. '_size'], label_width = fullArgs['label' .. n .. '_width'], position = fullArgs['position' .. n] or fullArgs['pos' .. n], background = fullArgs['background' .. n] or fullArgs['bg' .. n] } end end function p.many(frame, args, map) if not args then args = getArgs(frame, {wrappers = 'Template:Location map many', valueFunc = locmap.valueFunc}) end if not args[1] then args[1] = 'World' end if not map then map = {} for mapname in string.gmatch(args[1], '[^#]+') do map[#map + 1] = locmap.getMapParams(mapname, frame) end if #map ~= 1 then local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do outputs[k] = p.many(frame, args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' end map = map[1] end local marks = {} local markhigh if args.markhigh then mw.log('Removed parameter markhigh used.') local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') markhigh = true end for k, v in pairs(args) do -- @todo change to uargs once we have that if v then if string.sub(k, -4) == '_deg' then k = string.sub(k, 1, -5) end if string.sub(k, 1, 3) == 'lat' then k = tonumber(string.sub(k, 4)) if k then table.insert(marks, k) end elseif string.sub(k, 1, 11) == 'coordinates' then k = tonumber(string.sub(k, 12)) if k then table.insert(marks,k) end end end end table.sort(marks) if marks[1] ~= 1 and (args.lat or args.lat_deg or args.coordinates) then table.insert(marks, 1, 1) end local body = '' for _, v in ipairs(marks) do -- don't try to consolidate this into the above loop. ordering of elements from pairs() is unspecified body = body .. tostring( locmap.mark(frame, manyMakeArgs(args, v), map) ) if args['mark' .. v .. 'high'] then mw.log('Removed parameter mark' .. v .. 'high used.') local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') markhigh = true end end args.label = nil -- there is no global label return locmap.top(frame, args, map) .. body .. locmap.bottom(frame, args, map) .. (markhigh and '[[Category:Location maps with possible errors|Page using removed parameter]]' or '') end function p.load(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true}) end local dataModule = mw.loadData(frame.args[1]) if not map then map = {} for mapname in string.gmatch(dataModule.containerArgs[1], '[^#]+') do map[#map + 1] = locmap.getMapParams(mapname, frame) end if #map ~= 1 then local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do outputs[k] = p.load(frame, args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' end map = map[1] end local marks = {} if dataModule.marks then for k,markArgs in ipairs(dataModule.marks) do marks[k] = tostring(locmap.mark(frame, markArgs, map)) end end if dataModule.secondaryModules then for _,modname in ipairs(dataModule.secondaryModules) do for _,markArgs in ipairs(mw.loadData(modname).marks) do marks[#marks + 1] = tostring(locmap.mark(frame, markArgs, map)) end end end return locmap.top(frame, dataModule.containerArgs, map) .. table.concat(marks) .. locmap.bottom(frame, dataModule.containerArgs, map) end return p 1acc0ca37712cbe36ee567f805a46c941859c489 Module:Template wrapper 828 602 1358 2022-10-21T21:11:46Z Legoktm 41 Replace [[Module:No globals]] with require( "strict" ) Scribunto text/plain require('strict'); local error_msg = '<span style=\"font-size:100%\" class=\"error\"><code style=\"color:inherit; border:inherit; padding:inherit;\">&#124;_template=</code> missing or empty</span>'; --[[--------------------------< I S _ I N _ T A B L E >-------------------------------------------------------- scan through tbl looking for value; return true if found, false else ]] local function is_in_table (tbl, value) for k, v in pairs (tbl) do if v == value then return true end end return false; end --[[--------------------------< A D D _ P A R A M E T E R >---------------------------------------------------- adds parameter name and its value to args table according to the state of boolean list argument; kv pair for template execution; k=v string for template listing. ]] local function add_parameter (k, v, args, list) if list then table.insert( args, table.concat ({k, '=', v})); -- write parameter names and values to args table as string else args[k] = v; -- copy parameters to args table end end --[[--------------------------< A L I A S _ M A P _ G E T >---------------------------------------------------- returns a table of local template (parent frame) parameter names and the target template names that match where in [key]=<value> pairs where: [key] is local template parameter name (an alias) <value> is target template parameter name (the canonical parameter name used in the working template) The parameter |_alias-map= has the form: |_alias-map=<list> where <list> is a comma-separated list of alias / canonical parameter name pairs in the form <from> : <to> where: <from> is the local template's parameter name (alias) <to> is the target template's parameter name (canonical) for enumerated parameters place an octothorp (#) where the enumerator digits are placed in the parameter names: <from#> : <to#> ]] local function alias_map_get (_alias_map) local T = mw.text.split (_alias_map, '%s*,%s*'); -- convert the comma-separated list into a table of alias pairs local mapped_aliases = {}; -- mapped aliases will go here local l_name, t_name; -- parameter names for _, alias_pair in ipairs (T) do -- loop through the table of alias pairs l_name, t_name = alias_pair:match ('(.-)%s*:%s*(.+)'); -- from each pair, get local and target parameter names if l_name and t_name then -- if both are set if tonumber (l_name) then l_name = tonumber (l_name); -- convert number-as-text to a number end mapped_aliases[l_name] = t_name; -- add them to the map table end end return mapped_aliases; end --[[--------------------------< F R A M E _ A R G S _ G E T >-------------------------------------------------- Fetch the wrapper template's 'default' and control parameters; adds default parameters to args returns content of |_template= parameter (name of the working template); nil else ]] local function frame_args_get (frame_args, args, list) local template; for k, v in pairs (frame_args) do -- here we get the wrapper template's 'default' parameters if 'string' == type (k) and (v and ('' ~= v)) then -- do not pass along positional or empty parameters if '_template' == k then template = v; -- save the name of template that we are wrapping elseif '_exclude' ~= k and '_reuse' ~= k and '_include-positional' ~= k and '_alias-map' ~= k then -- these already handled so ignore here; add_parameter (k, v, args, list); -- add all other parameters to args in the style dictated by list end end end return template; -- return contents of |_template= parameter end --[=[--------------------------< P F R A M E _ A R G S _ G E T >------------------------------------------------ Fetches the wrapper template's 'live' parameters; adds live parameters that aren't members of the exclude table to args table; positional parameters may not be excluded no return value ]=] local function pframe_args_get (pframe_args, args, exclude, _include_positional, list) for k, v in pairs (pframe_args) do if 'string' == type (k) and not is_in_table (exclude, k) then -- do not pass along excluded parameters if v and ('' ~= v) then -- pass along only those parameters that have assigned values if 'unset' == v:lower() then -- special keyword to unset 'default' parameters set in the wrapper template v = ''; -- unset the value in the args table end add_parameter (k, v, args, list) -- add all other parameters to args in the style dictated by list; alias map only supported for local-template parameters end end end if _include_positional then for i, v in ipairs (pframe_args) do -- pass along positional parameters if 'unset' == v:lower() then -- special keyword to unset 'default' parameters set in the wrapper template v = ''; -- unset the value in the args table end add_parameter (i, v, args, list); end end end --[[--------------------------< _ M A I N >-------------------------------------------------------------------- Collect the various default and live parameters into args styled according to boolean list. returns name of the working or listed template or nil for an error message ]] local function _main (frame, args, list) local template; local exclude = {}; -- table of parameter names for parameters that are not passed to the working template local reuse_list = {}; -- table of pframe parameter names whose values are modified before they are passed to the working template as the same name local alias_map = {}; -- table that maps parameter aliases to working template canonical parameter names local _include_positional; if frame.args._exclude and ('' ~= frame.args._exclude) then -- if there is |_exclude= and it's not empty exclude = mw.text.split (frame.args._exclude, "%s*,%s*"); -- make a table from its contents end -- TODO: |_reuse= needs a better name (|_reuse=) if frame.args._reuse and ('' ~= frame.args._reuse) then -- if there is |_reuse= and it's not empty reuse_list = mw.text.split (frame.args._reuse, "%s*,%s*"); -- make a table from its contents end if frame.args['_alias-map'] and ('' ~= frame.args['_alias-map']) then -- if there is |_alias-map= and it's not empty alias_map = alias_map_get (frame.args['_alias-map']); -- make a table from its contents end template = frame_args_get (frame.args, args, list); -- get parameters provided in the {{#invoke:template wrapper|...|...}} if nil == template or '' == template then -- this is the one parameter that is required by this module return nil; -- not present, tell calling function to emit an error message end _include_positional = 'yes' == frame.args['_include-positional']; -- when true pass all positional parameters along with non-excluded named parameters to ... -- ... the working template; positional parameters are not excludable local _pframe_args = frame:getParent().args; -- here we get the wrapper template's 'live' parameters from pframe.args local pframe_args = {}; -- a local table that we can modify for k, v in pairs (_pframe_args) do -- make a copy that we can modify pframe_args[k] = v; end -- here we look for pframe parameters that are aliases of canonical parameter names; when found -- we replace the alias with the canonical. We do this here because the reuse_list works on -- canonical parameter names so first we convert alias parameter names to canonical names and then -- we remove those canonical names from the pframe table that are reused (provided to the working -- template through the frame args table) for k, v in pairs (alias_map) do -- k is alias name, v is canonical name if pframe_args[k] then -- if pframe_args has parameter with alias name pframe_args[v] = _pframe_args[k]; -- create new canonical name with alias' value pframe_args[k] = nil; -- unset the alias end end for k, v in pairs (pframe_args) do -- do enumerated parameter alias -> canonical translation if 'string' == type (k) then -- only named parameters can be enumerated if alias_map[k..'#'] then -- non-enumerated alias matches enumerated parameter pattern? enumerator at end only pframe_args[alias_map[k..'#']:gsub('#', '')] = v; -- remove '#' and copy parameter to pframe_args table pframe_args[k] = nil; -- unset the alias elseif k:match ('%d+') then -- if this parameter name contains digits local temp = k:gsub ('%d+', '#'); -- make a copy; digits replaced with single '#' local enum = k:match ('%d+'); -- get the enumerator if alias_map[temp] then -- if this parameter is a recognized enumerated alias pframe_args[alias_map[temp]:gsub('#', enum)] = v; -- use canonical name and replace '#' with enumerator and add to pframe_args pframe_args[k] = nil; -- unset the alias end end end end -- pframe parameters that are _reused are 'reused' have the form something like this: -- |chapter=[[wikisource:{{{chapter}}}|{{{chapter}}}]] -- where a parameter in the wrapping template is modified and then passed to the working template -- using the same parameter name (in this example |chapter=) -- remove parameters that will be reused for k, v in ipairs (reuse_list) do -- k is numerical index, v is canonical parameter name to ignore if pframe_args[v] then -- if pframe_args has parameter that should be ignored pframe_args[v] = nil; -- unset the ignored parameter end end pframe_args_get (pframe_args, args, exclude, _include_positional, list); -- add parameters and values to args that are not listed in the exclude table return template; -- args now has all default and live parameters, return working template name end --[[--------------------------< W R A P >---------------------------------------------------------------------- Template entry point. Call this function to 'execute' the working template ]] local function wrap (frame) local args = {}; -- table of default and live parameters and their values to be passed to the wrapped template local template; -- the name of the working template template = _main (frame, args, false); -- get default and live parameters and the name of the working template if not template then -- template name is required return error_msg; -- emit error message and abandon if template name not present end return frame:expandTemplate {title=template, args=args}; -- render the working template end --[[--------------------------< L I S T >---------------------------------------------------------------------- Template entry point. Call this function to 'display' the source for the working template. This function added as a result of a TfD here: Wikipedia:Templates_for_discussion/Log/2018_April_28#Module:PassArguments This function replaces a similarly named function which was used in {{cite compare}} and {{cite compare2}} Values in the args table are numerically indexed strings in the form 'name=value' ]] local function list(frame, do_link) local args = {}; -- table of default and live parameters and their values to be passed to the listed template local template; -- the name of the listed template template = _main (frame, args, true); -- get default and live parameters and the name of the listed template if not template then -- template name is required return error_msg; -- emit error message and abandon if template name not present end if do_link then template = ('[[%s|%s]]'):format(frame:expandTemplate{ title='Transclude', args = {template} }, template) end table.sort(args) for i = 1, #args do local stripped = args[i]:match('^' .. i .. '=([^=]*)$') if stripped then args[i] = stripped else break end end return frame:preprocess(table.concat({ '<code style="color:inherit; background:inherit; border:none;">&#123;&#123;', template, ('<wbr><nowiki>|%s</nowiki>'):rep(#args):format(unpack(args)), '&#125;&#125;</code>'})); -- render the template end local function link (frame) return list(frame, true) end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { link = link, list = list, wrap = wrap, }; 5e3d3ed3f3988725fb0fef6b44479bacc4210f37 Module:Footnotes 828 896 1982 2022-10-21T21:15:31Z wikipedia>Legoktm 0 Replace [[Module:No globals]] with require( "strict" ) Scribunto text/plain require('strict'); local getArgs = require ('Module:Arguments').getArgs; --[[--------------------------< A R G S _ D E F A U L T >------------------------------------------------------ a table to specify initial values. ]] local args_default = { bracket_left = '', bracket_right = '', bracket_year_left = '', bracket_year_right = '', postscript = '', page = '', pages = '', location = '', page_sep = ", p.&nbsp;", pages_sep = ", pp.&nbsp;", ref = '', template = 'harv', -- if template name not provided in {{#invoke:}} use this }; --[[--------------------------< T A R G E T _ C H E C K >------------------------------------------------------ look for anchor_id (CITEREF name-list and year or text from |ref=) in anchor_id_list the 'no target' error may be suppressed with |ignore-err=yes when target cannot be found because target is inside a template that wraps another template; 'multiple targets' error may not be suppressed ]] local function target_check (anchor_id, args) local namespace = mw.title.getCurrentTitle().namespace; local anchor_id_list_module = mw.loadData ('Module:Footnotes/anchor_id_list'); local anchor_id_list = anchor_id_list_module.anchor_id_list; local article_whitelist = anchor_id_list_module.article_whitelist; local template_list = anchor_id_list_module.template_list; local whitelist_module = mw.loadData ('Module:Footnotes/whitelist'); local whitelist = whitelist_module.whitelist; local special_patterns = whitelist_module.special_patterns; local DNB_special_patterns = whitelist_module.DNB_special_patterns; local DNB_template_names = whitelist_module.DNB_template_names; if 10 == namespace then return ''; -- automatic form of |no-tracking=yes; TODO: is this too broad? end local tally = anchor_id_list[anchor_id]; -- nil when anchor_id not in list; else a tally local msg; local category; if not tally then if args.ignore then return ''; -- if ignore is true then no message, no category end if article_whitelist and article_whitelist[anchor_id] then -- if an article-local whitelist and anchor ID is in it return ''; -- done end local wl_anchor_id = anchor_id; -- copy to be modified to index into the whitelist if args.year then -- for anchor IDs created by this template (not in |ref=) that have a date if args.year:match ('%d%l$') or -- use the date value to determine if we should remove the disambiguator args.year:match ('n%.d%.%l$') or args.year:match ('nd%l$') then wl_anchor_id = wl_anchor_id:gsub ('%l$', ''); -- remove the disambiguator end end local t_tbl = whitelist[wl_anchor_id]; -- get list of templates associated with this anchor ID if t_tbl then -- when anchor ID not whitelisted t_tbl is nil for _, t in ipairs (t_tbl) do -- spin through the list of templates associated with this anchor ID if template_list[t] then -- if associated template is found in the list of templates in the article return ''; -- anchor ID is whitlisted and article has matching template so no error end end end for _, pattern in ipairs (special_patterns) do -- spin through the spcial patterns and try to match if anchor_id:match (pattern) then return ''; end end for _, dnb_t in ipairs (DNB_template_names or {}) do -- getting desparate now, are there any DNB templates? DNB_template_names may be nil; empty table prevents script error if template_list[dnb_t] then -- if the article has this DNB template for _, pattern in ipairs (DNB_special_patterns) do -- spin through the DNB-specifiec wildcard patterns if anchor_id:match (pattern) then -- and attempt a match return ''; -- found a match end end end end msg = 'no target: ' .. anchor_id; -- anchor_id not found category = '[[Category:Harv and Sfn no-target errors]]'; elseif 1 < tally then msg = 'multiple targets (' .. tally .. '×): ' .. anchor_id; -- more than one anchor_id in this article category = 0 == namespace and '[[Category:Harv and Sfn multiple-target errors]]' or ''; -- only categorize in article space return '<span class="error harv-error" style="display: inline; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category; end -- category = 0 == namespace and '[[Category:Harv and Sfn template errors]]' or ''; -- only categorize in article space category = 0 == namespace and category or ''; -- only categorize in article space --use this version to show error messages -- return msg and '<span class="error harv-error" style="display: inline; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category or ''; --use this version to hide error messages return msg and '<span class="error harv-error" style="display: none; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category or ''; end --[[--------------------------< I S _ Y E A R >---------------------------------------------------------------- evaluates param to see if it is one of these forms with or without lowercase letter disambiguator: YYYY n.d. nd c. YYYY YYYY–YYYY (separator is endash) YYYY–YY (separator is endash) return true when param has a recognized form; false else ]] local patterns_date= { '^%d%d%d%d?%l?$', '^n%.d%.%l?$', '^nd%l?$', '^c%. %d%d%d%d?%l?$', '^%d%d%d%d–%d%d%d%d%l?$', '^%d%d%d%d–%d%d%l?$', } local function is_year (param, args) args.year = ''; -- used for harv error; for _, pattern in ipairs (patterns_date) do if mw.ustring.match (param, pattern) then args.year = param; -- used for harv error; return true; end end end --[[--------------------------< C O R E >---------------------------------------------------------------------- returns an anchor link (CITEREF) formed from one to four author names, year, and insource location (|p=, |pp=, loc=) ]] local function core( args ) local result; local err_msg = '' if args.P5 ~= '' then if is_year (args.P5, args) then result = table.concat ({args.P1, ' et al. ', args.bracket_year_left, args.P5, args.bracket_year_right}); else args.P5 = ''; -- when P5 not a year don't include in anchor result = table.concat ({args.P1, ' et al.'}); -- and don't render it end elseif args.P4 ~= '' then if is_year (args.P4, args) then result = table.concat ({args.P1, ', ', args.P2, ' &amp; ', args.P3, ' ', args.bracket_year_left, args.P4, args.bracket_year_right}); -- three names and a year else result = table.concat ({args.P1, ' et al.'}); -- four names end elseif args.P3 ~= '' then if is_year (args.P3, args) then result = table.concat ({args.P1, ' &amp; ', args.P2, ' ', args.bracket_year_left, args.P3, args.bracket_year_right}); -- two names and a year else result = table.concat ({args.P1, ', ', args.P2, ' ', ' &amp; ', args.P3}); -- three names end elseif args.P2 ~= '' then if is_year (args.P2, args) then result = table.concat ({args.P1, ' ', args.bracket_year_left, args.P2, args.bracket_year_right}); -- one name and year else result = table.concat ({args.P1, ' &amp; ', args.P2}); -- two names end else result = args.P1; -- one name end -- when author-date result ends with a dot (typically when the last positional parameter holds 'n.d.') -- and when no in-source location (no |p=, |pp=, or |loc=) -- and when the first or only character in args.postscript is a dot -- remove the author-date result trailing dot -- the author-date result trailing dot will be replaced later with the content of args.postscript (usually a dot) if ('.' == result:sub(-1)) and ('.' == args.postscript:sub(1)) and ('' == args.page) and ('' == args.pages) and ('' == args.location) then result = result:gsub ('%.$', ''); end if args.ref ~= 'none' then local anchor_id; if args.ref ~= '' then anchor_id = mw.uri.anchorEncode (args.ref); err_msg = target_check (anchor_id, args); result = table.concat ({'[[#', anchor_id, '|', result, ']]'}); else anchor_id = mw.uri.anchorEncode (table.concat ({'CITEREF', args.P1, args.P2, args.P3, args.P4, args.P5})); err_msg = target_check (anchor_id, args); result = table.concat ({'[[#', anchor_id, '|', result, ']]'}); end end if args.page ~= '' then result = table.concat ({result, args.page_sep, args.page}); elseif args.pages ~= ''then result = table.concat ({result, args.pages_sep, args.pages}); end if args.location ~= '' then result = table.concat ({result, ', ', args.location}); end result = table.concat ({args.bracket_left, result, args.bracket_right, args.postscript}):gsub ('%s+', ' '); -- strip redundant spaces return result .. err_msg; end --[[--------------------------< H Y P H E N _ T O _ D A S H >-------------------------------------------------- Converts a hyphen to a dash under certain conditions. The hyphen must separate like items; unlike items are returned unmodified. These forms are modified: letter - letter (A - B) digit - digit (4-5) digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5) letterdigit - letterdigit (A1-A5) (an optional separator between letter and digit is supported – a.1-a.5 or a-1-a-5) digitletter - digitletter (5a - 5d) (an optional separator between letter and digit is supported – 5.a-5.d or 5-a-5-d) any other forms are returned unmodified. str may be a comma- or semicolon-separated list This code copied from Module:Citation/CS1. The only modification is to require Module:Citation/CS1/Utilities so that it has access to the functions is_set() and has_accept_as_written() ]] local function hyphen_to_dash( str ) local utilities = require ('Module:Citation/CS1/Utilities'); -- only modification so that this function has access to is_set() and has_accept_as_written() if not utilities.is_set (str) then return str; end local accept; -- Boolean str = str:gsub ('&[nm]dash;', {['&ndash;'] = '–', ['&mdash;'] = '—'}); -- replace &mdash; and &ndash; entities with their characters; semicolon mucks up the text.split str = str:gsub ('&#45;', '-'); -- replace HTML numeric entity with hyphen character str = str:gsub ('&nbsp;', ' '); -- replace &nbsp; entity with generic keyboard space character local out = {}; local list = mw.text.split (str, '%s*[,;]%s*'); -- split str at comma or semicolon separators if there are any for _, item in ipairs (list) do -- for each item in the list item, accept = utilities.has_accept_as_written (item); -- remove accept-this-as-written markup when it wraps all of item if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit) item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter) item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2'); -- replace hyphen, remove extraneous space characters else item = mw.ustring.gsub (item, '%s*[–—]%s*', '–'); -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace end end table.insert (out, item); -- add the (possibly modified) item to the output table end local temp_str = ''; -- concatenate the output table into a comma separated string temp_str, accept = utilities.has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out if accept then temp_str = utilities.has_accept_as_written (str); -- when global markup removed, return original str; do it this way to suppress boolean second return value return temp_str; else return temp_str; -- else, return assembled temp_str end end --[[--------------------------< A R G S _ F E T C H >--------------------------------------------------------- Because all of the templates share a common set of parameters, a single common function to fetch those parameters from frame and parent frame. ]] local function args_fetch (frame, ps) local args = args_default; -- create a copy of the default table local pframe = frame:getParent(); -- point to the template's parameter table for k, v in pairs (frame.args) do -- override defaults with values provided in the #invoke: if any args[k] = v; end args.postscript = pframe.args.postscript or pframe.args.ps or ps; if 'none' == args.postscript then args.postscript = ''; end args.page = pframe.args.p or pframe.args.page or ''; args.pages = pframe.args.pp or pframe.args.pages or ''; args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or ''; args.location = pframe.args.loc or ''; args.ref = pframe.args.ref or pframe.args.Ref or ''; args.ignore = ('yes' == pframe.args['ignore-false-positive']) or ('yes' == pframe.args['ignore-err']); for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- loop through the five positional parameters and trim if set else empty string args[v] = (pframe.args[i] and mw.text.trim (pframe.args[i])) or ''; end if args.P5 and not is_year (args.P5, args) then local i = 6; -- initialize the indexer to the sixth positional parameter while pframe.args[i] do -- in case there are too many authors loop through the authors looking for a year local v = mw.text.trim (pframe.args[i]); -- trim if is_year (v, args) then -- if a year args.P5 = v; -- overwrite whatever was in args.P5 with year break; -- and abandon the search end i = i + 1; -- bump the indexer end end return args; end --[[--------------------------< H A R V A R D _ C I T A T I O N >---------------------------------------------- common entry point for: {{harvard citation}} aka {{harv}} {{Harvard citation no brackets}} aka {{harvnb}} {{harvcol}} {{harvcolnb}} {{harvcoltxt}} {{Harvard citation text}} aka {{harvtxt}} {{Harvp}} Distinguishing features (brackets and page separators) are specified in this module's {{#invoke}} in the respective templates. ]] local function harvard_citation (frame) local args = args_fetch (frame, ''); -- get the template and invoke parameters; default postscript is empty string return core (args); end --[[--------------------------< S T R I P _ U R L >------------------------------------------------------------ used by sfn() and sfnm(). This function fixes an issue with reference tooltip gadget where the tooltip is not displayed when an insource locator (|p=, |pp=, |loc=) has an external wikilink that contains a # character strip uri-reserved characters from urls in |p=, |pp-, and |loc= parameters The researved characters are: !#$&'()*+,/:;=?@[] ]] local function strip_url (pages) local escaped_uri; if not pages or ('' == pages) then return pages; end for uri in pages:gmatch ('%[(%a[%w%+%.%-]*://%S+)') do -- for each external link get the uri escaped_uri = uri:gsub ("([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ); -- save a copy with lua pattern characters escaped uri = uri:gsub ("[!#%$&'%(%)%*%+,/:;=%?@%[%]%.%%]", ''); -- remove reserved characters and '%' because '%20' (space character) is a lua 'invalid capture index' pages = pages:gsub (escaped_uri, uri, 1); -- replace original uri with the stripped version end return pages; end --[[--------------------------< S F N >------------------------------------------------------------------------ entry point for {{sfn}} and {{sfnp}} ]] local function sfn (frame) local args = args_fetch (frame, '.'); -- get the template and invoke parameters; default postscript is a dot local result = core (args); -- go make a CITEREF anchor -- put it all together and then strip redundant spaces local name = table.concat ({'FOOTNOTE', args.P1, args.P2, args.P3, args.P4, args.P5, strip_url (args.page), strip_url (args.pages), strip_url (args.location)}):gsub ('%s+', ' '); return frame:extensionTag ({name='ref', args={name=name}, content=result}); end --[[--------------------------< S F N M >---------------------------------------------------------------------- common entry point for {{sfnm}} and {{sfnmp}} Distinguishing features (brackets) are specified in this module's {{#invoke}} in the respective templates. ]] local function sfnm (frame) local args = args_default; -- create a copy of the default table local pframe = frame:getParent(); -- point to the template's parameter table local n = 1; -- index of source; this is the 'n' in na1, ny, etc local first_pnum = 1; -- first of a pair of positional parameters local second_pnum = 2; -- second of a pair of positional parameters local last_ps = 0; -- index of the last source with |nps= set local last_index = 0; -- index of the last source; these used to determine which of |ps= or |nps= will terminate the whole rendering local out = {}; -- table to hold rendered sources local footnote = {'FOOTNOTE'}; -- all author, date, insource location stuff becomes part of the reference's footnote id; added as we go for k, v in pairs (frame.args) do -- override defaults with values provided in the #invoke: if any args[k] = v; end while true do if not pframe.args[table.concat ({n, 'a1'})] and not pframe.args[first_pnum] then break; -- no na1 or matching positional parameter so done end if pframe.args[table.concat ({n, 'a1'})] then -- does this source use named parameters? for _, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- initialize for this source args[v] = ''; end for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- extract author and year parameters for this source args[v] = pframe.args[table.concat ({n, 'a', i})] or ''; -- attempt to assign author name if '' == args[v] then -- when there wasn't an author name args[v] = pframe.args[table.concat ({n, 'y'})] or ''; -- attempt to assign year break; -- done with author/date for this source end end else -- this source uses positional parameters args.P1 = mw.text.trim (pframe.args[first_pnum]); -- yes, only one author supported args.P2 = (pframe.args[second_pnum] and mw.text.trim (pframe.args[second_pnum])) or ''; -- when positional author, year must also be positional for _, v in ipairs ({'P3', 'P4', 'P5'}) do -- blank the rest of these for this source args[v] = ''; end first_pnum = first_pnum + 2; -- source must use positional author and positional year second_pnum = first_pnum + 1; -- bump these for possible next positional source end args.postscript = pframe.args[table.concat ({n, 'ps'})] or ''; if 'none' == args.postscript then -- this for compatibility with other footnote templates; does nothing args.postscript = ''; end args.ref = pframe.args[table.concat ({n, 'ref'})] or ''; -- alternate reference for this source args.page = pframe.args[table.concat ({n, 'p'})] or ''; -- insource locations for this source args.pages = pframe.args[table.concat ({n, 'pp'})] or ''; args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or ''; args.location = pframe.args[table.concat ({n, 'loc'})] or ''; args.ignore = ('yes' == pframe.args[table.concat ({n, 'ignore-false-positive'})]) or ('yes' == pframe.args[table.concat ({n, 'ignore-err'})]); table.insert (out, core (args)); -- save the rendering of this source for k, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- create the FOOTNOTE id if '' ~= args[v] then table.insert (footnote, args[v]); end end for k, v in ipairs ({'page', 'pages', 'location'}) do -- these done separately so that we can strip uri-reserved characters from extlinked page numbers if '' ~= args[v] then table.insert (footnote, strip_url (args[v])) end end last_index = n; -- flags used to select terminal postscript from nps or from end_ps if '' ~= args.postscript then last_ps = n; end n = n+1; -- bump for the next one end local name = table.concat (footnote):gsub ('%s+', ' '); -- put the footnote together and strip redundant space args.end_ps = pframe.args.postscript or pframe.args.ps or '.'; -- this is the postscript for the whole not for the individual sources if 'none' == args.end_ps then -- not an original sfnm parameter value; added for compatibility with other footnote templates args.end_ps = ''; end local result = table.concat ({table.concat (out, '; '), (last_index == last_ps) and '' or args.end_ps}); return frame:extensionTag ({name='ref', args={name=name}, content=result}); end --[[--------------------------< S F N R E F >------------------------------------------------------------------ implements {{sfnref}} ]] local function sfnref (frame) local args = getArgs (frame); local out = {}; for i=1, 5 do -- get the first five args if there are five args if args[i] then out[i] = args[i]; else break; -- less than 5 args break out end end if 5 == #out then -- when we have seen five args there may bemore local i = 6; -- initialize the indexer to the sixth positional parameter while args[i] do -- in case there are too many authors loop through the authors looking for a year if is_year (args[i], args) then -- if a year out[5] = args[i]; -- overwrite whatever was in args[5] with year break; -- and abandon the search end i = i + 1; -- bump the indexer end end return mw.uri.anchorEncode ('CITEREF' .. table.concat (out)); end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { harvard_citation = harvard_citation, sfn = sfn, sfnm = sfnm, sfnref = sfnref, }; 6e6f14a1fb0053e5aed88c564fc13d570e2d5a03 Module:Italic title 828 1343 2678 2022-10-21T21:17:12Z Legoktm 41 Replace [[Module:No globals]] with require( "strict" ) Scribunto text/plain -- This module implements {{italic title}}. require('strict') local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local yesno = require('Module:Yesno') -------------------------------------------------------------------------------- -- ItalicTitle class -------------------------------------------------------------------------------- local ItalicTitle = {} do ---------------------------------------------------------------------------- -- Class attributes and functions -- Things that belong to the class are here. Things that belong to each -- object are in the constructor. ---------------------------------------------------------------------------- -- Keys of title parts that can be italicized. local italicizableKeys = { namespace = true, title = true, dab = true, } ---------------------------------------------------------------------------- -- ItalicTitle constructor -- This contains all the dynamic attributes and methods. ---------------------------------------------------------------------------- function ItalicTitle.new() local obj = {} -- Function for checking self variable in methods. local checkSelf = libraryUtil.makeCheckSelfFunction( 'ItalicTitle', 'obj', obj, 'ItalicTitle object' ) -- Checks a key is present in a lookup table. -- Param: name - the function name. -- Param: argId - integer position of the key in the argument list. -- Param: key - the key. -- Param: lookupTable - the table to look the key up in. local function checkKey(name, argId, key, lookupTable) if not lookupTable[key] then error(string.format( "bad argument #%d to '%s' ('%s' is not a valid key)", argId, name, key ), 3) end end -- Set up object structure. local parsed = false local categories = {} local italicizedKeys = {} local italicizedSubstrings = {} -- Parses a title object into its namespace text, title, and -- disambiguation text. -- Param: options - a table of options with the following keys: -- title - the title object to parse -- ignoreDab - ignore any disambiguation parentheses -- Returns the current object. function obj:parseTitle(options) checkSelf(self, 'parseTitle') checkType('parseTitle', 1, options, 'table') checkTypeForNamedArg('parseTitle', 'title', options.title, 'table') local title = options.title -- Title and dab text local prefix, parentheses if not options.ignoreDab then prefix, parentheses = mw.ustring.match( title.text, '^(.+) %(([^%(%)]+)%)$' ) end if prefix and parentheses then self.title = prefix self.dab = parentheses else self.title = title.text end -- Namespace local namespace = mw.site.namespaces[title.namespace].name if namespace and #namespace >= 1 then self.namespace = namespace end -- Register the object as having parsed a title. parsed = true return self end -- Italicizes part of the title. -- Param: key - the key of the title part to be italicized. Possible -- keys are contained in the italicizableKeys table. -- Returns the current object. function obj:italicize(key) checkSelf(self, 'italicize') checkType('italicize', 1, key, 'string') checkKey('italicize', 1, key, italicizableKeys) italicizedKeys[key] = true return self end -- Un-italicizes part of the title. -- Param: key - the key of the title part to be un-italicized. Possible -- keys are contained in the italicizableKeys table. -- Returns the current object. function obj:unitalicize(key) checkSelf(self, 'unitalicize') checkType('unitalicize', 1, key, 'string') checkKey('unitalicize', 1, key, italicizableKeys) italicizedKeys[key] = nil return self end -- Italicizes a substring in the title. This only affects the main part -- of the title, not the namespace or the disambiguation text. -- Param: s - the substring to be italicized. -- Returns the current object. function obj:italicizeSubstring(s) checkSelf(self, 'italicizeSubstring') checkType('italicizeSubstring', 1, s, 'string') italicizedSubstrings[s] = true return self end -- Un-italicizes a substring in the title. This only affects the main -- part of the title, not the namespace or the disambiguation text. -- Param: s - the substring to be un-italicized. -- Returns the current object. function obj:unitalicizeSubstring(s) checkSelf(self, 'unitalicizeSubstring') checkType('unitalicizeSubstring', 1, s, 'string') italicizedSubstrings[s] = nil return self end -- Renders the object into a page name. If no title has yet been parsed, -- the current title is used. -- Returns string function obj:renderTitle() checkSelf(self, 'renderTitle') -- Italicizes a string -- Param: s - the string to italicize -- Returns string. local function italicize(s) assert(type(s) == 'string', 's was not a string') assert(s ~= '', 's was the empty string') return string.format('<i>%s</i>', s) end -- Escape characters in a string that are magic in Lua patterns. -- Param: pattern - the pattern to escape -- Returns string. local function escapeMagicCharacters(s) assert(type(s) == 'string', 's was not a string') return s:gsub('%p', '%%%0') end -- If a title hasn't been parsed yet, parse the current title. if not parsed then self:parseTitle{title = mw.title.getCurrentTitle()} end -- Italicize the different parts of the title and store them in a -- titleParts table to be joined together later. local titleParts = {} -- Italicize the italicizable keys. for key in pairs(italicizableKeys) do if self[key] then if italicizedKeys[key] then titleParts[key] = italicize(self[key]) else titleParts[key] = self[key] end end end -- Italicize substrings. If there are any substrings to be -- italicized then start from the raw title, as this overrides any -- italicization of the main part of the title. if next(italicizedSubstrings) then titleParts.title = self.title for s in pairs(italicizedSubstrings) do local pattern = escapeMagicCharacters(s) local italicizedTitle, nReplacements = titleParts.title:gsub( pattern, italicize ) titleParts.title = italicizedTitle -- If we didn't make any replacements then it means that we -- have been passed a bad substring or that the page has -- been moved to a bad title, so add a tracking category. if nReplacements < 1 then categories['Pages using italic title with no matching string'] = true end end end -- Assemble the title together from the parts. local ret = '' if titleParts.namespace then ret = ret .. titleParts.namespace .. ':' end ret = ret .. titleParts.title if titleParts.dab then ret = ret .. ' (' .. titleParts.dab .. ')' end return ret end -- Returns an expanded DISPLAYTITLE parser function called with the -- result of obj:renderTitle, plus any other optional arguments. -- Returns string function obj:renderDisplayTitle(...) checkSelf(self, 'renderDisplayTitle') return mw.getCurrentFrame():callParserFunction( 'DISPLAYTITLE', self:renderTitle(), ... ) end -- Returns an expanded DISPLAYTITLE parser function called with the -- result of obj:renderTitle, plus any other optional arguments, plus -- any tracking categories. -- Returns string function obj:render(...) checkSelf(self, 'render') local ret = self:renderDisplayTitle(...) for cat in pairs(categories) do ret = ret .. string.format( '[[Category:%s]]', cat ) end return ret end return obj end end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} local function getArgs(frame, wrapper) assert(type(wrapper) == 'string', 'wrapper was not a string') return require('Module:Arguments').getArgs(frame, { wrappers = wrapper }) end -- Main function for {{italic title}} function p._main(args) checkType('_main', 1, args, 'table') local italicTitle = ItalicTitle.new() italicTitle:parseTitle{ title = mw.title.getCurrentTitle(), ignoreDab = yesno(args.all, false) } if args.string then italicTitle:italicizeSubstring(args.string) else italicTitle:italicize('title') end return italicTitle:render(args[1]) end function p.main(frame) return p._main(getArgs(frame, 'Template:Italic title')) end function p._dabonly(args) return ItalicTitle.new() :italicize('dab') :render(args[1]) end function p.dabonly(frame) return p._dabonly(getArgs(frame, 'Template:Italic dab')) end return p 9b49016c8f526f680e9ecdaf36ec4ceafda2a2f8 Module:Language/doc 828 446 1063 2022-10-21T21:29:07Z wikipedia>WOSlinker 0 remove no globals link wikitext text/x-wiki {{Module rating|beta}} {{Language templates}} {{Lua|Module:Language/data|Module:Unicode data}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> This module is used by {{tlx|wikt-lang}} and {{tlx|wt}}. It is inspired by the templates [[wikt:Template:m|{{((}}m{{))}}]] and [[wikt:Template:l|{{((}}l{{))}}]] and their associated modules on Wiktionary. It has a Wiktionary link function that links to the correct section of the Wiktionary entry, and applies correct language formatting and italics. The language-tagging function does most of what {{t|lang}} does, except that italics can't be customized and categories aren't added. The module uses [[Module:Language/data]] to retrieve the language name for a language code, and to perform the necessary entry-name replacements (for instance, removing macrons from Latin entry names). These are unfortunately not automatically retrieved from Wiktionary's [[wikt:Category:Language data modules|language data modules]]. For language codes that do not have a <code>name</code> value in this module, the language name is fetched with <code>mw.language.fetchLanguage</code>. When <code>mw.language.fetchLanguage</code> does not fetch the correct language name (or any language name at all), please add it to [[Module:language/data]], and similarly when the correct entry name is not generated, please add the entry name replacements to the module. ===Examples=== <pre style="max-width: 30em;"> * {{#invoke:Language|wikt|en|language}} * {{#invoke:Language|wikt|en|language|languages}} * {{#invoke:Language|wikt|fr|bourguignon}} * {{#invoke:Language|wikt|la|homō}} * {{#invoke:Language|wikt|grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|ru|язы́к}} * {{#invoke:Language|wikt|ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|fa|فارسی}} * {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}}</pre> * {{#invoke:Language|wikt|en|language}} * {{#invoke:Language|wikt|en|language|languages}} * {{#invoke:Language|wikt|fr|bourguignon}} * {{#invoke:Language|wikt|la|homō}} * {{#invoke:Language|wikt|grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|ru|язы́к}} * {{#invoke:Language|wikt|ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|fa|فارسی}} * {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}} ====Invalid codes==== <pre style="max-width: 30em;"> * {{#invoke:Language|wikt|EN|language}} * {{#invoke:Language|wikt|En|language|languages}} * {{#invoke:Language|wikt|La|homō}} * {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|Ru|язы́к}} * {{#invoke:Language|wikt|Ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|Fa|فارسی}}</pre> * {{#invoke:Language|wikt|EN|language}} * {{#invoke:Language|wikt|En|language|languages}} * {{#invoke:Language|wikt|La|homō}} * {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|Ru|язы́к}} * {{#invoke:Language|wikt|Ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|Fa|فارسی}} ====Errors==== <pre>* {{#invoke:Language|wikt|en-Latin|language}}</pre> * {{#invoke:Language|wikt|en-Latin|language}} == Tracking categories == * {{Category link with count|Language module errors}} * {{Category link with count|Language module reconstructed with no asterisk}} * {{Category link with count|Language module using redirect code}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Language-related modules]] }}</includeonly> 8f0dd86fbb6403d5bf14443353bfec0c4ccba0b4 Module:Infobox military conflict 828 1497 2832 2022-10-21T21:37:13Z Legoktm 41 Replace [[Module:No globals]] with require( "strict" ) Scribunto text/plain require('strict') local infoboxStyle = mw.loadData('Module:WPMILHIST Infobox style') local templatestyles = 'Module:Infobox military conflict/styles.css' local IMC = {} IMC.__index = IMC function IMC:renderPerCombatant(builder, headerText, prefix, suffix) prefix = prefix or '' suffix = suffix or '' local colspans = {} -- This may result in colspans[1] getting set twice, but -- this is no big deal. The second set will be correct. local lastCombatant = 1 for i = 1,self.combatants do if self.args[prefix .. i .. suffix] then colspans[lastCombatant] = i - lastCombatant lastCombatant = i end end local jointText = self.args[prefix .. (self.combatants + 1) .. suffix] if headerText and (colspans[1] or jointText) then builder:tag('tr') :tag('th') :attr('colspan', self.combatants) :cssText(infoboxStyle.header_raw) :wikitext(headerText) end -- The only time colspans[1] wouldn't be set is if no -- combatant has a field with the given prefix and suffix. if colspans[1] then -- Since each found argument set the colspan for the previous -- one, the final one wasn't set above, so set it now. colspans[lastCombatant] = self.combatants - lastCombatant + 1 builder = builder:tag('tr') for i = 1,self.combatants do -- At this point, colspans[i] will be set for i=1 unconditionally, and for -- any other value of i where self.args[prefix .. i .. suffix] is set. if colspans[i] then builder:tag('td') -- don't bother emitting colspan="1" :attr('colspan', colspans[i] ~= 1 and colspans[i] or nil) :css('width', math.floor(100 / self.combatants * colspans[i] + 0.5) .. '%') -- no border on the right of the rightmost column :css('border-right', i ~= lastCombatant and infoboxStyle.internal_border or nil) -- no padding on the left of the leftmost column :css('padding-left', i ~= 1 and '0.25em' or nil) -- don't show the border if we're directly under a header :css('border-top', not headerText and infoboxStyle.internal_border or nil) :newline() :wikitext(self.args[prefix .. i .. suffix]) end end end if jointText then builder:tag('tr') :tag('td') :attr('colspan', self.combatants) :css('text-align', 'center') -- don't show the border if we're directly under a header :css('border-top', (not headerText or colspans[1]) and infoboxStyle.internal_border or nil) :newline() :wikitext(jointText) end end function IMC:renderHeaderTable(builder) builder = builder:tag('table') :css('width', '100%') :css('margin', 0) :css('padding', 0) :css('border', 0) :css('display', 'inline-table') if self.args.date then builder:tag('tr') :tag('th') :css('padding-right', '1em') :wikitext('Date') :done() :tag('td') :wikitext(self.args.date) end builder = builder:tag('tr') :tag('th') :css('padding-right', '1em') :wikitext('Location') :done() :tag('td') :tag('div') :addClass('location') :wikitext(self.args.place or '{&#123;{place}&#125;}') -- hack so that people who don't know Lua know that this parameter is required :done() if self.args.coordinates then builder:wikitext(self.args.coordinates) end builder = builder:done():done() -- only for "Putsch" if self.args.action then builder:tag('tr') :tag('th') :css('padding-right', '1em') :wikitext(self.args.action and 'Action') :done() :tag('td') :wikitext(self.args.action) end if self.args.status or self.args.result then builder:tag('tr') :tag('th') :css('padding-right', '1em') :wikitext(self.args.status and 'Status' or 'Result') :done() :tag('td') :addClass('status') :newline() :wikitext(self.args.status or self.args.result) end if self.args.territory then builder:tag('tr') :tag('th') :css('padding-right', '1em') :wikitext('Territorial<br />changes') :done() :tag('td') :newline() :wikitext(self.args.territory) end end function IMC:render() local builder = mw.html.create() if self.args.campaignbox then -- this should be the same as using {{stack|clear=right|...}} builder:wikitext(self.frame:expandTemplate{ title = 'stack begin', args = { clear='true'} }) end builder = builder:tag('table') :addClass('infobox vevent') :cssText(infoboxStyle.main_box_raw) :css('width', self.args.width or nil) builder:tag('tr') :tag('th') :addClass('summary') :attr('colspan', self.combatants) :cssText(infoboxStyle.header_raw) :wikitext(self.args.conflict or mw.title.getCurrentTitle().text) if self.args.partof then builder:tag('tr') :tag('td') :attr('colspan', self.combatants) :cssText(infoboxStyle.sub_header_raw) :wikitext('Part of ' .. self.args.partof) end if self.args.image then builder:tag('tr') :tag('td') :attr('colspan', self.combatants) :cssText(infoboxStyle.image_box_raw) :wikitext(string.format('%s%s%s', require('Module:InfoboxImage').InfoboxImage{args = { image = self.args.image, size = self.args.image_size, sizedefault = 'frameless', upright = 1, alt = self.args.alt }}, self.args.caption and '<br />' or '', self.args.caption or '' )) end self:renderHeaderTable(builder:tag('tr'):tag('td'):attr('colspan', self.combatants)) self:renderPerCombatant(builder, self.args.combatants_header or 'Belligerents', 'combatant') -- can be un-hardcoded once gerrit:165108 is merged for _,v in ipairs{'a','b','c','d'} do self:renderPerCombatant(builder, nil, 'combatant', v) end self:renderPerCombatant(builder, self.args.commanders_header or 'Commanders and leaders', 'commander') for _,v in ipairs{'a','b','c','d'} do self:renderPerCombatant(builder, nil, 'commander', v) end self:renderPerCombatant(builder, self.args.units_header or 'Units involved', 'units') self:renderPerCombatant(builder, self.args.strengths_header or 'Strength', 'strength') self:renderPerCombatant(builder, self.args.polstrengths_header or 'Political support', 'polstrength') self:renderPerCombatant(builder, self.args.milstrengths_header or 'Military support', 'milstrength') self:renderPerCombatant(builder, self.args.casualties_header or 'Casualties and losses', 'casualties') if self.args.notes then builder:tag('tr') :tag('td') :attr('colspan', self.combatants) :css('border-top', infoboxStyle.section_border) :newline() :wikitext(self.args.notes) end if self.args.map_type then builder:tag('tr') :tag('td') :attr('colspan', self.combatants) :css('border-top', infoboxStyle.internal_border) :node(require('Module:Location map').main(self.frame, { self.args.map_type, relief = self.args.map_relief, coordinates = self.args.coordinates, width = self.args.map_size or 220, float = 'center', border = 'none', mark = self.args.map_mark, marksize = self.args.map_marksize or 8, label = self.args.map_label, alt = self.args.map_alt, caption = self.args.map_caption or ('Location within ' .. (require('Module:Location map').data(self.frame, {self.args.map_type, 'name'}))) })) end builder = builder:done() if self.args.campaignbox then builder = builder:done() builder:wikitext(self.args.campaignbox .. self.frame:expandTemplate{ title = 'stack end'}) end return builder end function IMC.new(frame, args) if not args then args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Infobox military conflict'}) end local obj = { frame = frame, args = args } -- until gerrit:165108 is merged, there's still a cap on combatants, but as soon as it merges, we can update this little bit of code to uncap it -- also, don't try to make this more efficient, or references could be in the wrong order obj.combatants = 2 for _,v in ipairs{'', 'a', 'b', 'c', 'd'} do for i = 1,5 do if args['combatant' .. i .. v] then obj.combatants = math.max(obj.combatants, i) end end end return setmetatable(obj, IMC) end local p = {} function p.main(frame) return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(IMC.new(frame):render()) end return p 737c5c2ab35460ae4165baecc4a140ed140cd602 Module:Infobox cabinet members 828 1525 2860 2022-10-21T22:00:04Z w>WOSlinker 0 use require('strict') instead of require('Module:No globals') Scribunto text/plain require('strict') local getArgs = require('Module:Arguments').getArgs local p = {} function p.infobox(frame, args) if not args then args = getArgs(frame) end local root = mw.html.create() local columns = args.party_column and 4 or 3 mw.log(columns) if args.caption then args.caption = '<br />' .. tostring( mw.html.create('span') :cssText(args.captionstyle) :wikitext(args.caption) ) end if args.topcaption then args.topcaption = '<br />' .. tostring( mw.html.create('span') :cssText(args.topcaptionstyle) :wikitext(args.topcaption) ) end local floatcss = { left = 'margin-left:0; margin-right:1em; float:left; clear:left;', center = 'margin-left:auto; margin-right:auto; float:none; clear:none;', none = 'margin-left:0; margin-right:0; float:none; clear:none;', right = 'margin-left:1em; margin-right:0; float:right; clear:right;' } root = root :tag('table') :addClass('infobox') :css('width', 'auto') :css('text-align', 'left') :css('line-height', '1.2em') :cssText(args.float and floatcss[(args.float):lower()] or floatcss['right']) if args.topimage then root :tag('tr'):tag('td') :attr('colspan', columns) :css('text-align', 'center') :wikitext(require('Module:InfoboxImage').InfoboxImage{args = { image = args.topimage, size = args.topimagesize, sizedefault = 'frameless', upright = 1, alt = args.topimagealt }} .. (args.topcaption or '') ) end if args.above then root :tag('tr'):tag('th') :attr('colspan', columns) :css('line-height','1.5em') :css('font-size','110%') :css('background','#DCDCDC') :css('text-align', 'center') :wikitext(args.above) end if args.image then root :tag('tr'):tag('td') :attr('colspan', columns) :css('text-align', 'center') :wikitext(require('Module:InfoboxImage').InfoboxImage{args = { image = args.image, size = args.imagesize, sizedefault = 'frameless', upright = 1, alt = args.imagealt }} .. (args.caption or '') ) end local header = root:tag('tr') header:tag('th') :wikitext(args.office_label or 'Office') header:tag('th') :wikitext(args.name_label or 'Name') if args.party_column then header:tag('th') :wikitext(args.party_label or 'Party') end header:tag('th') :wikitext(args.term_label or 'Term') root:tag('tr') :tag('td') :attr('colspan', columns) :css('background', '#000') local subRows = {} local keys = {} for k,v in pairs(args) do k = tostring(k) local num = k:match('^office(%d+)$') if num and args['name' .. num .. 'a'] then num = tonumber(num) if subRows[num] == nil then subRows[num] = {} table.insert(keys, num) end end local num,l = k:match('^name(%d+)([a-z])$') if num then num = tonumber(num) if subRows[num] == nil then subRows[num] = {} table.insert(keys,num) end subRows[num][l] = l end end table.sort(keys) for i, num in ipairs(keys) do if i > 1 then root:tag('tr') :tag('td') :attr('colspan',columns) :css('background','#D1D1D1') end local r = {} for j,l in pairs(subRows[num]) do table.insert(r,l) end table.sort(r) local row = root:tag('tr') local ocell = row:tag('td'):wikitext(args['office' .. num]) local subrow = 0 for j, l in pairs(r) do subrow = subrow + 1 if subrow > 1 then row:tag('tr') end row:tag('th') :css('font-weight', 'bold') :wikitext(args['name'..num..l]) if args.party_column then row:tag('td') :wikitext(args['party'..num..l]) end row:tag('td') :wikitext(args['term'..num..l]) end ocell:attr('rowspan', (subrow > 1) and subrow or nil) end if args.below then root:tag('tr') :tag('td') :attr('colspan', columns) :css('border-top', '#D1D1D1 2px solid') :wikitext(args.below) end return tostring(root) end return p cfc6a95b4679ebd09dd67a9b7abfbcd29eab957f Module:Section link 828 129 307 2022-10-22T09:09:53Z wikipedia>WOSlinker 0 use require('strict') instead of require('Module:No globals') Scribunto text/plain -- This module implements {{section link}}. require('strict'); local checkType = require('libraryUtil').checkType local p = {} local function makeSectionLink(page, section, display) display = display or section page = page or '' -- MediaWiki doesn't allow these in `page`, so only need to do for `section` if type(section) == 'string' then section = string.gsub(section, "{", "&#x7B;") section = string.gsub(section, "}", "&#x7D;") end return string.format('[[%s#%s|%s]]', page, section, display) end local function normalizeTitle(title) title = mw.ustring.gsub(mw.ustring.gsub(title, "'", ""), '"', '') title = mw.ustring.gsub(title, "%b<>", "") return mw.title.new(title).prefixedText end function p._main(page, sections, options, title) -- Validate input. checkType('_main', 1, page, 'string', true) checkType('_main', 3, options, 'table', true) if sections == nil then sections = {} elseif type(sections) == 'string' then sections = {sections} elseif type(sections) ~= 'table' then error(string.format( "type error in argument #2 to '_main' " .. "(string, table or nil expected, got %s)", type(sections) ), 2) end options = options or {} title = title or mw.title.getCurrentTitle() -- Deal with blank page names elegantly if page and not page:find('%S') then page = nil options.nopage = true end -- Make the link(s). local isShowingPage = not options.nopage if #sections <= 1 then local linkPage = page or '' local section = sections[1] or 'Notes' local display = '§&nbsp;' .. section if isShowingPage then page = page or title.prefixedText if options.display and options.display ~= '' then if normalizeTitle(options.display) == normalizeTitle(page) then display = options.display .. ' ' .. display else error(string.format( 'Display title "%s" was ignored since it is ' .. "not equivalent to the page's actual title", options.display ), 0) end else display = page .. ' ' .. display end end return makeSectionLink(linkPage, section, display) else -- Multiple sections. First, make a list of the links to display. local ret = {} for i, section in ipairs(sections) do ret[i] = makeSectionLink(page, section) end -- Assemble the list of links into a string with mw.text.listToText. -- We use the default separator for mw.text.listToText, but a custom -- conjunction. There is also a special case conjunction if we only -- have two links. local conjunction if #sections == 2 then conjunction = '&#8203; and ' else conjunction = ', and ' end ret = mw.text.listToText(ret, nil, conjunction) -- Add the intro text. local intro = '§§&nbsp;' if isShowingPage then intro = (page or title.prefixedText) .. ' ' .. intro end ret = intro .. ret return ret end end function p.main(frame) local yesno = require('Module:Yesno') local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Section link', valueFunc = function (key, value) value = value:match('^%s*(.-)%s*$') -- Trim whitespace -- Allow blank first parameters, as the wikitext template does this. if value ~= '' or key == 1 then return value end end }) for k, v in pairs(args) do -- replace underscores in the positional parameter values if 'number' == type(k) then if not yesno (args['keep-underscores']) then -- unless |keep-underscores=yes args[k] = mw.uri.decode (v, 'WIKI'); -- percent-decode; replace underscores with space characters else args[k] = mw.uri.decode (v, 'PATH'); -- percent-decode; retain underscores end end end -- Sort the arguments. local page local sections, options = {}, {} for k, v in pairs(args) do if k == 1 then -- Doing this in the loop because of a bug in [[Module:Arguments]] -- when using pairs with deleted arguments. page = mw.text.decode(v, true) elseif type(k) == 'number' then sections[k] = v else options[k] = v end end options.nopage = yesno (options.nopage); -- make boolean -- Extract section from page, if present if page then local p, s = page:match('^(.-)#(.*)$') if p then page, sections[1] = p, s end end -- Compress the sections array. local function compressArray(t) local nums, ret = {}, {} for num in pairs(t) do nums[#nums + 1] = num end table.sort(nums) for i, num in ipairs(nums) do ret[i] = t[num] end return ret end sections = compressArray(sections) return p._main(page, sections, options) end return p 5cc61d43dc601ca43e9472500fc5cd09ca7cea44 Module:Footnotes/anchor id list/data 828 898 1986 2022-10-22T09:20:53Z wikipedia>WOSlinker 0 use require('strict') instead of require('Module:No globals') Scribunto text/plain -- copied from Module:Ref info/data - maybe overkill here? -- for this application make lists from the redirect lists and force all template names first character uppercase require('strict'); --[[--------------------------< C S 1 _ T E M P L A T E _ P A T T E R N S >------------------------------------ These are patterns for cs1 templates and their redirects. These patterns exclude redirects that are vcite-like which redirects should be deleted because vcite is not cs1. ]] local cs1_template_patterns = { -- lua patterns of the cannonical names and redirects '[Cc]ite ar[Xx]iv', -- arXiv is the canonical name '[Cc]ite ArXiv', '[Cc]ite AV media', -- canonical '[Cc]ite audio', '[Cc]ite AV', '[Cc]ite AV ?Media', '[Cc]ite av media', '[Cc]ite cd', '[Cc]ite DVD', '[Cc]ite dvd', '[Cc]ite film', '[Cc]ite image', '[Cc]ite media', '[Cc]ite movie', '[Cc]ite music video', '[Cc]ite radio', '[Cc]ite song', '[Cc]ite ?video', '[Cc]ite visual', '[Cc]ite You[Tt]ube', '[Cc]ita vídeo', -- non-English redirect; TODO: tally separately? '[Cc]ite AV media notes', -- canonical '[Cc]ite album[ %-]notes', '[Cc]ite av media notes', '[Cc]ite DVD[ %-]notes', '[Cc]ite dvd%-notes', '[Cc]ite liner notes', '[Cc]ite music release notes', '[Ll]iner notes', '[Cc]ite bio[Rr]xiv', -- bioRxiv is the canonical form '[Cc]ite [Bb]ook', -- book is the canonical form '[Bb]ook cite', '[Bb]ook reference', '[Bb]ook reference url', '[Cc] book', '[Cc]it book', '[Cc]ite books', '[Cc]ite chapter', '[Cc]ite ebook', '[Cc]ite manual', '[Cc]ite page', '[Cc]ite publication', '[Cc]ite score', '[Cc]ite work', '[Cc]ite%-?book', '[Bb]okref', '[Cc]itace monografie', '[Cc]itar livro', -- non-English redirects; TODO: tally separately? '[Cc]iteer boek', '[Oo]uvrage', '[Rr]ef%-llibre', '서적 인용', '[Cc]ite citeseerx', -- canonical '[Cc]ite conference', -- canonical '[Cc]ita conferenza', '[Cc]ite proceedings', '[Cc]onference reference', -- cita conferenza is non-English; TODO: tally separately? '[Cc]ite ?encyclopedia', -- cite encyclopedia is the canonical name '[Cc]ite contribution', '[Cc]ite dic', '[Cc]ite dictionary', '[Cc]ite encyclopaedia', '[Cc]ite encyclopædia', '[Ee]ncyclopedia', '[Cc]ite [Ee]pisode', -- episode is the canonical form '[Cc]ite show', '[Cc]ite interview', -- canonical '[Cc]ite ?journal', -- cite journal is the canonical form '[Cc] journal', '[Cc]itation journal', '[Cc]ite abstract', '[Cc]ite document', '[Cc]ite Journal', '[Cc]ite journal zh', '[Cc]ite ?paper', '[Vv]cite2 journal', '[Cc]ita pubblicazione', '[Cc]itace periodika', '[Cc]itar jornal', -- non-English redirects; TODO: tally separately? '[Cc]itar publicació', '[Cc]ytuj pismo', '[Tt]idskriftsref', 'Навод из стручног часописа', '저널 인용', '[Cc]ite [Mm]agazine', -- magazine is the canonical form '[Cc]ite mag', '[Cc]ite magazine article', '[Cc]ite newsletter', '[Cc]ite periodical', '[Cc]ite mailing ?list', -- mailing list is the canonical form '[Cc]ite list', '[Cc]ite maps?', -- map is the canonical form '[Cc]ite[ %-]?news', -- cite news is the canonical form '[Cc] news', '[Cc]it news', '[Cc]itation news', '[Cc]ite article', '[Cc]ite n', '[Cc]ite new', '[Cc]ite newspaper', '[Cc]ite News', '[Cc]ite news%-q', '[Cc]ite news2', '[Cc]itenewsauthor', '[Cc]ute news', '[Cc]itar notícia', '[Hh]aber kaynağı', '[Tt]idningsref', 'استشهاد بخبر', -- non-English redirects; TODO: tally separately? '뉴스 인용', '[Cc]ite newsgroup', -- canonical '[Cc]ite usenet', '[Cc]ite podcast', -- canonical '[Cc]ite [Pp]ress release', -- press release is the canonical form '[Cc]ite media release', '[Cc]ite news release', '[Cc]ite pr', '[Cc]ite press', '[Cc]ite press release\.', '[Cc]ite press[%-]?release', '[Cc]ite report', -- canonical '[Cc]ite serial', -- canonical '[Cc]ite sign', -- canonical '[Cc]ite plaque', '[Cc]ite speech', -- canonical '[Cc]ite ssrn', -- canonical '[Cc]ite SSRN', '[Cc]ite tech ?report', -- techreport is the canonical form '[Cc]ite standard', '[Cc]ite technical report', '[Tt]echrep reference', '[Cc]ite thesis', -- canonical '[Cc]ite dissertation', '[Cc]itar tese', -- non-English redirect; TODO: tally separately? '[Cc]ite [Ww]eb', -- web is the canonical form '[Cc] web', '[Cc]it web', '[Cc]ite blog', '[Cc]ite URL', '[Cc]ite url', '[Cc]ite w', '[Cc]ite wb', '[Cc]ite we', '[Cc]ite web\.', '[Cc]ite webpage', '[Cc]ite website', '[Cc]ite website article', '[Cc]ite%-?web', '[Cc]itweb', '[Cc]w', '[Rr]ef web', '[Ww]eb citation', '[Ww]eb cite', '[Ww]eb link', '[Ww]eb[ %-]reference', '[Ww]eblink', '[Cc]hú thích web', '[Cc]ita web', '[Cc]itace elektronické monografie', -- non-English redirects; TODO: tally separately? '[Cc]itat web', 'مرجع ويب', 'یادکرد وب', '웹 인용', } --[[--------------------------< C S 2 _ T E M P L A T E _ P A T T E R N S >------------------------------------ These are patterns for cs2 templates redirects. ]] local cs2_template_patterns = { -- lua patterns of the cannonical names and redirects '[Cc]itation', '[Cc]ite', '[Cc]ite citation', '[Cc]ite study', '[Cc]ite [Tt]echnical standard', } --[[--------------------------< V C I T E _ T E M P L A T E _ P A T T E R N S >-------------------------------- These are patterns for Vcite-family templates and their redirects. ]] local vcite_template_patterns = { '[Vv]cite book', -- canonical '[Vv]ancite book', '[Vv]ancite report', '[Vv]cite encyclopedia', '[Vv]cite report', '[Vv]cite journal', -- canonical '[Cc]it journal', '[Cc]it paper', '[Vv]ancite journal', '[Vv]cite paper', '[Vv]cite news', -- canonical '[Vv]ancite news', '[Vv]cite web', -- canonical '[Vv]ancite web', } --[[--------------------------< H A R V C _ T E M P L A T E _ P A T T E R N S >-------------------------------- These are patterns for the harvc template and its redirects. ]] local harvc_template_patterns = { '[Hh]arvc', -- canonical '[Cc]itec', } --[[--------------------------< C S 1 _ L I K E _ T E M P L A T E _ P A T T E R N S >-------------------------- These are patterns for miscellaneous templates and their redirects that 'look like' cs1 templates (begin with cite ...) Because they 'look like' cs1 templates they are handled as if they were cs1 templates. These templates are NOT wrapper templates; names and dates are always to be extracted from the article instantiation of the template. ]] local cs1_like_template_patterns = { '[Cc]ite LSA', -- canonical } --[[--------------------------< W I K I C I T E _ T E M P L A T E _ P A T T E R N S >-------------------------- These are patterns for the wikicite template and its redirects. ]] local wikicite_template_patterns = { '[Ww]ikicite', -- canonical } --[[--------------------------< A N C H O R _ T E M P L A T E _ P A T T E R N S >------------------------------ These are patterns for the anchor template and its redirects. ]] local anchor_template_patterns = { '[Aa]nchors?', -- anchor is canonical form '[Aa]nchor for redirect', '[Aa]nchro', '[Aa]ncor', } --[[--------------------------< S F N _ W H I T E L I S T _ P A T T E R N S >---------------------------------- These are patterns for the anchor template and its redirects. ]] local sfn_whitelist_patterns = { '[Ss]fn whitelist', -- canonical '[Hh]arv whitelist', } --[[--------------------------< K N O W N _ T E M P L A T E S >------------------------------------------------ These tables are created from the *_template_patterns tables. To make these tables, entries in the source tables are evaluated to replace lua patterns with the appropriate characters to create names for the output tables. First charqacter is always uppercase For example: [Cc]ite ar[Xx]iv becomes Cite arXiv Cite arxiv ]] local known_templates_cs12 = {}; -- the exported tables local known_templates_vcite = {}; local known_templates_harvc = {}; local known_templates_wikicite = {}; local known_templates_anchor = {}; local known_templates_sfn_whitelist = {}; local function add_stripped (list, name) if not list[name] then list[name] = true; end end local function pattern_convert (pattern, list) local lead, tail, c, l, name; local first_char_patterns = { '^%[(%a)%a%]', -- leading character (usually uppercase) '^%[%a(%a)%]', -- leading character (usually lowercase) } c = tostring (pattern:match ('%u')); -- tostring() required because I don't know why; lua chokes complaining that c is not a string name = pattern:gsub ('^%[%a%a%]', c); -- replace bracketed first character [Xx] with selected character from the match if name:match ('(.-)%[(%a)(%a)%](.*)') then -- mixed case optional letters lead, c, l, tail = name:match ('(.-)%[(%a)(%a)%](.*)'); add_stripped (list, lead .. c .. tail); -- uppercase add_stripped (list, lead .. l .. tail); -- lowercase elseif name:match ('^([^%[]+)(%[ %%%-%]%?)(.+)$') then -- [ %-]? lead, c, tail = name:match ('^([^%[]+)(%[ %%%-%]%?)(.+)$'); add_stripped (list, lead .. tail); -- neither char add_stripped (list, lead .. ' ' .. tail); -- space add_stripped (list, lead .. '-' .. tail); -- hyphen elseif name:match ('^([^%[]+)(%[%%%-%]%?)(.+)$') then -- [%-]? lead, c, tail = name:match ('^([^%[]+)(%[%%%-%]%?)(.+)$'); add_stripped (list, lead .. tail); -- no hyphen add_stripped (list, lead .. '-' .. tail); -- hyphen elseif name:match ('^([^%[]+)(%[ %%%-%])(.+)$') then -- [ %-] lead, c, tail = name:match ('^([^%[]+)(%[ %%%-%])(.+)$'); add_stripped (list, lead .. ' ' .. tail); -- space add_stripped (list, lead .. '-' .. tail); -- hyphen elseif name:match ('^([^%?]+)(%%%-%?)(.+)$') then -- %-? lead, c, tail = name:match ('^([^%?]+)(%%%-%?)(.+)$'); add_stripped (list, lead .. tail); -- no hyphen add_stripped (list, lead .. '-' .. tail); -- hyphen elseif name:match ('^(.-)(%%%-)(.+)$') then -- %- lead, c, tail = name:match ('^(.-)(%%%-)(.+)$'); add_stripped (list, lead .. '-' .. tail); -- hyphen elseif name:match ('^(.-)(.)%?(.*)$') then -- .? lead, c, tail = name:match ('^(.-)(.)%?(.*)$'); add_stripped (list, lead .. tail); -- no character add_stripped (list, lead .. c .. tail); -- character else add_stripped (list, name); -- no patterns so save as is end end for _, t in ipairs ({ {cs1_template_patterns, known_templates_cs12}, {cs2_template_patterns, known_templates_cs12}, {cs1_like_template_patterns, known_templates_cs12}, {vcite_template_patterns, known_templates_vcite}, {harvc_template_patterns, known_templates_harvc}, {wikicite_template_patterns, known_templates_wikicite}, {anchor_template_patterns, known_templates_anchor}, {sfn_whitelist_patterns, known_templates_sfn_whitelist}, }) do for _, pattern in ipairs (t[1]) do -- for each patern in *_template_patterns pattern_convert (pattern, t[2]) -- convert and store in known_templates_* end end --[[--------------------------< E X P O R T S >---------------------------------------------------------------- ]] return { known_templates_anchor = known_templates_anchor, known_templates_cs12 = known_templates_cs12, known_templates_harvc = known_templates_harvc, known_templates_vcite = known_templates_vcite, known_templates_wikicite = known_templates_wikicite, known_templates_sfn_whitelist = known_templates_sfn_whitelist, } 29b949b2a7e0e2aedfb7399749d699512125a378 Module:Coordinates/doc 828 598 1344 2022-10-22T12:02:06Z wikipedia>WOSlinker 0 remove no globals link wikitext text/x-wiki {{High-risk}} {{Module rating|protected}} {{Tracks and uses Wikidata|P625}} {{Lua|Module:Math|Module:Arguments}} {{Uses TemplateStyles|Module:Coordinates/styles.css}} '''Note:''' The code which this module's main function (<code>coord</code>) outputs is directly parsed and/or manipulated by [[Module:Location map]] and other functions of this module itself (<code>coord2text</code> and <code>coordinsert</code>). If the structure of the output changes (for example, to use [[:mw:Help:Extension:Kartographer|the <code><nowiki><mapframe></nowiki></code> and <code><nowiki><maplink></nowiki></code> tags]]), please update the aforementioned scripts as well. ==Using the module with coordinsert== When using the {{tl|Coord}} template inside another template, like an infobox, there may be parameters (like <code><var>type</var>:<var>airport</var></code>) which should be added automatically. To do so, do something like this: <code>&#123;&#123;#if:&#123;&#123;&#123;coordinates&#124;&#125;&#125;&#125;&#124;&#123;&#123;#invoke:Coordinates&#124;coordinsert&#124;&#123;&#123;&#123;coordinates&#124;&#125;&#125;&#125;&#124;<var>parameter1:value1&#124;parameter2:value2&#124;parameter3:value3…</var>&#125;&#125;&#124;</code> Do not add more vertical bars <code>&#124;</code> than necessary. ==Using the module with coord2text to extract latitude or longitude== Developers maintaining legacy code may need to extract latitude or longitude to use a parameters in other code, or a mathematical expression. The module's "coord2text" function can be used to extract data from the {{tl|Coord}} template. To extract the latitude from a Coord template, use: <code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}</nowiki></code> &rarr; {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}} To extract the longitude, use: <code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}</nowiki></code> &rarr; {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}} == Modules using this module directly == * [[Module:HS listed building row]] == Tracking categories == * {{clc|Pages with malformed coordinate tags}} * {{clc|Coordinates not on Wikidata‎}} * {{clc|Coordinates on Wikidata‎}} * {{clc|Coordinates on Wikidata set to no value‎}} * {{clc|Coordinates on Wikidata set to unknown value‎}} <includeonly>{{#switch:{{SUBPAGENAME}}|sandbox2|sandbox=| [[Category:Modules that add a tracking category]] }}</includeonly> 174a46bca3b8e3d6b54c213ded0b947107295f97 Template:Trim 10 1229 2562 2022-10-26T14:01:15Z w>MSGJ 0 x parameter not needed wikitext text/x-wiki <includeonly>{{safesubst:#if:1|{{{1|}}}}}</includeonly><noinclude> {{Documentation}} </noinclude> 3d29fbfff9683523147db6e1f55c0e17ed30863b Module:Yesno 828 6 147 7 2022-10-28T05:41:15Z meta>Agent Isai 0 1 revision imported from [[:metawikimedia:Module:Yesno]]: Required for local usage Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Module:Arguments 828 7 149 9 2022-10-28T05:41:15Z meta>Agent Isai 0 1 revision imported from [[:metawikimedia:Module:Arguments]]: Required for local usage Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Template:Lua 10 65 193 125 2022-10-28T05:41:39Z meta>Agent Isai 0 1 revision imported from [[:metawikimedia:Template:Lua]]: Required for local usage wikitext text/x-wiki <includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude>{{Lua|Module:Lua banner}}{{documentation}}[[Category:Utility templates]]</noinclude> fd85a870209733ca65a7290fa45f6b4f321bac0b Module:Lua banner/config 828 80 191 2022-10-28T05:41:41Z meta>Agent Isai 0 1 revision imported from [[:metawikimedia:Module:Lua_banner/config]]: Required for local usage Scribunto text/plain local cfg = {} -- Don’t touch this line. -- Subpage blacklist: these subpages will not be categorized (except for the -- error category, which is always added if there is an error). -- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have -- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules, -- so they *will* have categories. All rules should be in the -- ['<subpage name>'] = true, -- format. cfg['subpage_blacklist'] = { ['doc'] = true, ['sandbox'] = true, ['sandbox2'] = true, ['testcases'] = true, } -- Allow wishes: whether wishes for conversion to Lua are allowed. -- If true, calls with zero parameters are valid, and considered to be wishes: -- The box’s text is “This template should use Lua”, and cfg['wish_category'] is -- added. If false, such calls are invalid, an error message appears, and -- cfg['error_category'] is added. cfg['allow_wishes'] = false -- Default category: this category is added if the module call contains errors -- (e.g. no module listed). A category name without namespace, or nil -- to disable categorization (not recommended). cfg['error_category'] = 'Lua templates with errors' -- Wish category: this category is added if no module is listed, and wishes are -- allowed. (Not used if wishes are not allowed.) A category name without -- namespace, or nil to disable categorization. cfg['wish_category'] = nil -- Default category: this category is added if none of the below module_categories -- matches the first module listed. A category name without namespace, or nil -- to disable categorization. cfg['default_category'] = 'Lua-based templates' -- Module categories: one of these categories is added if the first listed module -- is the listed module (e.g. {{Lua|Module:String}} adds -- [[Category:Lua String-based templates]].) Format: -- ['<module name>'] = '<category name>' -- where neither <module name> nor <category name> contains namespace. An empty -- table (i.e. no module-based categorization) will suffice on smaller wikis. cfg['module_categories'] = { ['Citation'] = 'Lua-based citation templates', ['Citation/CS1'] = 'Lua-based citation templates', } return cfg -- Don’t touch this line. 96ff2360e00fa7bf1df8fa9bea988789b8a82cab Module:No globals 828 76 155 2022-10-28T05:42:58Z meta>Agent Isai 0 1 revision imported from [[:metawikimedia:Module:No_globals]]: Required for local usage Scribunto text/plain local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then -- perf optimization here and below: do not load Module:TNT unless there is an error error(require('Module:TNT').format('I18n/No globals', 'err-read', tostring(k)), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error(require('Module:TNT').format('I18n/No globals', 'err-write', tostring(k)), 2) end rawset(t, k, v) end setmetatable(_G, mt) efcb47c74e7e2bb9a4ad8764d99a0afce8fed410 Module:Template translation 828 75 151 2022-10-28T05:42:59Z meta>Agent Isai 0 6 revisions imported from [[:metawikimedia:Module:Template_translation]]: Required for local usage Scribunto text/plain local this = {} function this.checkLanguage(subpage, default) --[[Check first if there's an any invalid character that would cause the mw.language.isKnownLanguageTag function() to throw an exception: - all ASCII controls in [\000-\031\127], - double quote ("), sharp sign (#), ampersand (&), apostrophe ('), - slash (/), colon (:), semicolon (;), lower than (<), greater than (>), - brackets and braces ([, ], {, }), pipe (|), backslash (\\) All other characters are accepted, including space and all non-ASCII characters (including \192, which is invalid in UTF-8). --]] if mw.language.isValidCode(subpage) and mw.language.isKnownLanguageTag(subpage) --[[However "SupportedLanguages" are too restrictive, as they discard many valid BCP47 script variants (only because MediaWiki still does not define automatic transliterators for them, e.g. "en-dsrt" or "fr-brai" for French transliteration in Braille), and country variants, (useful in localized data, even if they are no longer used for translations, such as zh-cn, also useful for legacy codes). We want to avoid matching subpagenames containing any uppercase letter, (even if they are considered valid in BCP 47, in which they are case-insensitive; they are not "SupportedLanguages" for MediaWiki, so they are not "KnownLanguageTags" for MediaWiki). To be more restrictive, we exclude tags * for specific uses in template subpages and unusable as language tags; * that is not ASCII and not a lowercase letter, minus-hyphen, or digit, or does not start by a letter or does not finish by a letter or digit; * or that has subtags with more than 8 characters between hyphens; * or that has two hyphens. --]] or subpage ~= "doc" and subpage ~= "layout" and subpage ~= "button" and subpage ~= "buttons" and subpage ~= "sandbox" and subpage ~= "testcase" and subpage ~= "testcases" and string.find(subpage, "^[%l][%-%d%l]*[%d%l]$") ~= nil and string.find(subpage, "[%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l]") == nil and string.find(subpage, "%-%-") == nil then return subpage end -- Otherwise there's currently no known language subpage return default end --[[Get the last subpage of an arbitrary page if it is a translation. To be used from templates. ]] function this.getLanguageSubpage(frame) local title = frame and frame.args[1] if not title or title == '' then title = mw.title.getCurrentTitle() end return this._getLanguageSubpage(title) end --[[Get the last subpage of an arbitrary page if it is a translation. To be used from Lua. ]] function this._getLanguageSubpage(title) if type(title) == 'string' then title = mw.title.new(title) end if not title then -- invalid title return nil end --[[This code does not work in all namespaces where the Translate tool works. -- It works in the main namespace on Meta because it allows subpages there -- It would not work in the main namespace of English Wikipedia (but the -- articles are monolignual on that wiki). -- On Meta-Wiki the main space uses subpages and its pages are translated. -- The Translate tool allows translatng pages in all namespaces, even if -- the namespace officially does not have subpages. -- On Meta-Wiki the Category namespace still does not have subpages enabled, -- even if they would be very useful for categorizing templates, that DO have -- subpages (for documentatio and tstboxes pages). This is a misconfiguration -- bug of Meta-Wiki. The work-around is to split the full title and then -- get the last titlepart. local subpage = title.subpageText --]] local titleparts = mw.text.split(title.fullText, '/') local subpage = titleparts[#titleparts] return this.checkLanguage(subpage, '') end --[[Get the last subpage of the current page if it is a translation. ]] function this.getCurrentLanguageSubpage() return this._getLanguageSubpage(mw.title.getCurrentTitle()) end --[[Get the first part of the language code of the subpage, before the '-'. --]] function this.getMainLanguageSubpage() parts = mw.text.split(this.getCurrentLanguageSubpage(), '-') return parts[1] end --[[Get the last subpage of the current frame if it is a translation. Not used locally. --]] function this.getFrameLanguageSubpage(frame) return this._getLanguageSubpage(frame:getParent():getTitle()) end --[[Get the language of the current page. Not used locally. --]] function this.getLanguage() local subpage = mw.title.getCurrentTitle().subpageText return this.checkLanguage(subpage, mw.language.getContentLanguage():getCode()) end --[[Get the language of the current frame. Not used locally. --]] function this.getFrameLanguage(frame) local titleparts = mw.text.split(frame:getParent():getTitle(), '/') local subpage = titleparts[#titleparts] return this.checkLanguage(subpage, mw.language.getContentLanguage():getCode()) end function this.title(namespace, basepagename, subpage) local message, title local pagename = basepagename if (subpage or '') ~= '' then pagename = pagename .. '/' .. subpage end local valid, title = xpcall(function() return mw.title.new(pagename, namespace) -- costly end, function(msg) -- catch undocumented exception (!?) -- thrown when namespace does not exist. The doc still -- says it should return a title, even in that case... message = msg end) if valid and title ~= nil and (title.id or 0) ~= 0 then return title end return { -- "pseudo" mw.title object with id = nil in case of error prefixedText = pagename, -- the only property we need below message = message -- only for debugging } end --[[If on a translation subpage (like Foobar/de), this function returns a given template in the same language, if the translation is available. Otherwise, the template is returned in its default language, without modification. This is aimed at replacing the current implementation of Template:TNTN. This version does not expand the returned template name: this solves the problem of self-recursion in TNT when translatable templates need themselves to transclude other translable templates (such as Tnavbar). --]] function this.getTranslatedTemplate(frame, withStatus) local args = frame.args local pagename = args['template'] --[[Check whether the pagename is actually in the Template namespace, or if we're transcluding a main-namespace page. (added for backward compatibility of Template:TNT) ]] local namespace, title = args['tntns'] or '' if namespace ~= '' then -- Checks for tntns parameter for custom ns. title = this.title(namespace, pagename) -- Costly else -- Supposes that set page is in ns10. namespace = 'Template' title = this.title(namespace, pagename) -- Costly if title.id == nil then -- not found in the Template namespace, assume the main namespace (for backward compatibility) namespace = '' title = this.title(namespace, pagename) -- Costly end end -- Get the last subpage and check if it matches a known language code. local subpage = args['uselang'] or '' if subpage == '' then subpage = this.getCurrentLanguageSubpage() end if subpage == '' then -- Check if a translation of the pagename exists in English local newtitle = this.title(namespace, pagename, 'en') -- Costly -- Use the translation when it exists if newtitle.id ~= nil then title = newtitle end else -- Check if a translation of the pagename exists in that language local newtitle = this.title(namespace, pagename, subpage) -- Costly if newtitle.id == nil then -- Check if a translation of the pagename exists in English newtitle = this.title(namespace, pagename, 'en') -- Costly end -- Use the translation when it exists if newtitle.id ~= nil then title = newtitle end end -- At this point the title should exist if withStatus then -- status returned to Lua function below return title.prefixedText, title.id ~= nil else -- returned directly to MediaWiki return title.prefixedText end end --[[If on a translation subpage (like Foobar/de), this function renders a given template in the same language, if the translation is available. Otherwise, the template is rendered in its default language, without modification. This is aimed at replacing the current implementation of Template:TNT. Note that translatable templates cannot transclude themselves other translatable templates, as it will recurse on TNT. Use TNTN instead to return only the effective template name to expand externally, with template parameters also provided externally. --]] function this.renderTranslatedTemplate(frame) local title, found = this.getTranslatedTemplate(frame, true) -- At this point the title should exist prior to performing the expansion -- of the template, otherwise render a red link to the missing page -- (resolved in its assumed namespace). If we don't tet this here, a -- script error would be thrown. Returning a red link is consistant with -- MediaWiki behavior when attempting to transclude inexistant templates. if not found then return '[[' .. title .. ']]' end -- Copy args pseudo-table to a proper table so we can feed it to expandTemplate. -- Then render the pagename. local args = frame.args local pargs = (frame:getParent() or {}).args local arguments = {} if (args['noshift'] or '') == '' then for k, v in pairs(pargs) do local n = tonumber(k) or 0 if n <= 0 then -- unnumbered args arguments[k] = v elseif n >= 2 then -- numbered args >= 2 need to be shifted arguments[n - 1] = v end end else -- special case where TNT is used as autotranslate -- (don't shift again what is shifted in the invokation) for k, v in pairs(pargs) do arguments[k] = v end end arguments['template'] = title -- override the existing parameter of the base template name supplied with the full name of the actual template expanded arguments['tntns'] = nil -- discard the specified namespace override arguments['uselang'] = args['uselang'] -- argument forwarded into parent frame arguments['noshift'] = args['noshift'] -- argument forwarded into parent frame return frame:expandTemplate{title = ':' .. title, args = arguments} end --[[A helper for mocking TNT in Special:TemplateSandbox. TNT breaks TemplateSandbox; mocking it with this method means templates won't be localized but at least TemplateSandbox substitutions will work properly. Won't work with complex uses. --]] function this.mockTNT(frame) local pargs = (frame:getParent() or {}).args local arguments = {} for k, v in pairs(pargs) do local n = tonumber(k) or 0 if n <= 0 then -- unnumbered args arguments[k] = v elseif n >= 2 then -- numbered args >= 2 need to be shifted arguments[n - 1] = v end end if not pargs[1] then return '' end return frame:expandTemplate{title = 'Template:' .. pargs[1], args = arguments} end return this 5d6ccce18a15ce0078fd1918b6afeb5b443f37ee Module:Documentation/i18n 828 78 177 2022-10-28T05:43:07Z meta>Agent Isai 0 2 revisions imported from [[:metawikimedia:Module:Documentation/i18n]]: Required for local usage Scribunto text/plain local format = require('Module:TNT').format local i18n = {} i18n['cfg-error-msg-type'] = format('I18n/Documentation', 'cfg-error-msg-type') i18n['cfg-error-msg-empty'] = format('I18n/Documentation', 'cfg-error-msg-empty') -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. i18n['template-namespace-heading'] = format('I18n/Documentation', 'template-namespace-heading') -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. i18n['module-namespace-heading'] = format('I18n/Documentation', 'module-namespace-heading') -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. i18n['file-namespace-heading'] = format('I18n/Documentation', 'file-namespace-heading') -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. i18n['other-namespaces-heading'] = format('I18n/Documentation', 'other-namespaces-heading') -- cfg['view-link-display'] -- The text to display for "view" links. i18n['view-link-display'] = format('I18n/Documentation', 'view-link-display') -- cfg['edit-link-display'] -- The text to display for "edit" links. i18n['edit-link-display'] = format('I18n/Documentation', 'edit-link-display') -- cfg['history-link-display'] -- The text to display for "history" links. i18n['history-link-display'] = format('I18n/Documentation', 'history-link-display') -- cfg['purge-link-display'] -- The text to display for "purge" links. i18n['purge-link-display'] = format('I18n/Documentation', 'purge-link-display') -- cfg['create-link-display'] -- The text to display for "create" links. i18n['create-link-display'] = format('I18n/Documentation', 'create-link-display') return i18n 9a9f234b177a424f1fc465eb25c484eff54905c0 Module:Documentation/styles.css 828 53 179 101 2022-10-28T05:43:10Z meta>Agent Isai 0 31 revisions imported from [[:metawikimedia:Module:Documentation/styles.css]]: Required for local usage text text/plain /* {{PP-template}} */ .ts-doc-sandbox .mbox-image { padding:.75em 0 .75em .75em; } .ts-doc-doc { clear: both; background-color: #ecfcf4; border: 1px solid #a2a9b1; margin-top: 1em; padding: 5px; } .ts-doc-header { padding-bottom: 3px; border-bottom: 1px solid #a2a9b1; margin-bottom: 1ex; } .ts-doc-header .ts-tlinks-tlinks { display: inline-block; line-height: 24px; margin-left: 1em; } .ts-doc-header .ts-tlinks-tlinks a.external { color: #0645ad; } .ts-doc-header .ts-tlinks-tlinks a.external:visited { color: #0b0080; } .ts-doc-header .ts-tlinks-tlinks a.external:active { color: #faa700; } .ts-doc-content:after { content: ''; clear: both; display: block; } .ts-doc-heading { display: inline-block; padding-left: 55px; background: center left/50px no-repeat; background-image: url(https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png); background-image: url(https://upload.wikimedia.org/wikipedia/commons/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg); font-size: 1.5em; } .ts-doc-content > *:first-child, .ts-doc-footer > *:first-child { margin-top: .5em; } .ts-doc-content > *:last-child, .ts-doc-footer > *:last-child { margin-bottom: .5em; } .ts-doc-footer { background-color: #ecfcf4; border: 1px solid #a2a9b1; padding: .25em 1em; margin-top: .2em; font-style: italic; } .ts-doc-footer small { font-style: normal; } .ts-doc-sandbox { clear: both; } c37b0ddfd0b1c128c187ca56721d1c4e481b05ff Template:IsDocSubpage 10 79 183 2022-10-28T05:43:20Z meta>Agent Isai 0 1 revision imported from [[:metawikimedia:Template:IsDocSubpage]]: Required for local usage wikitext text/x-wiki <onlyinclude><includeonly>{{#ifexpr: ( {{#ifeq:{{lc:{{SUBPAGENAME}}}}|{{lc:{{{override|doc}}}}}|1|0}} or ( {{#ifeq:{{lc:{{#titleparts:{{FULLPAGENAME}}|-1|-2}}}}|{{lc:{{{override|doc}}}}}|1|0}} and {{#if:{{#invoke:Template translation|getLanguageSubpage}}|1|0}} ) )<!-- -->|{{{true|1}}}<!-- -->|{{{false|}}}<!-- -->}}</includeonly></onlyinclude> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --> e60f69b26953d441bf5b76229c9222f16c042ae6 Module:Check isxn 828 1094 2387 2022-11-03T23:27:58Z wikipedia>Trappist the monk 0 sync from sandbox; Scribunto text/plain --[[ This code is derived from the ISXN validation code at Module:Citation/CS1. It allows validating ISBN, ISMN, and ISSN without invoking a citation template. ]] local p = {} --[[--------------------------< E R R _ M S G _ S U P L _ T >-------------------------------------------------- error message supplements for check_isbn(); adapted from a similarly named table at Module:Citation/CS1/Configuration ]] local err_msg_supl_t = { ['char'] = 'invalid character', ['check'] = 'checksum', ['form'] = 'invalid form', ['group'] = 'invalid group id', ['length'] = 'length', ['prefix'] = 'invalid prefix', } --[[--------------------------< IS _ V A L I D _ I S X N >----------------------------------------------------- ISBN-10 and ISSN validator code calculates checksum across all isbn/issn digits including the check digit. ISBN-13 is checked in check_isbn(). If the number is valid the result will be 0. Before calling this function, issbn/issn must be checked for length and stripped of dashes, spaces and other non-isxn characters. ]] local function is_valid_isxn (isxn_str, len) local temp = 0; isxn_str = { isxn_str:byte(1, len) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39, 'X' → 0x58 len = len+1; -- adjust to be a loop counter for i, v in ipairs( isxn_str ) do -- loop through all of the bytes and calculate the checksum if v == string.byte( "X" ) then -- if checkdigit is X (compares the byte value of 'X' which is 0x58) temp = temp + 10*( len - i ); -- it represents 10 decimal else temp = temp + tonumber( string.char(v) )*(len-i); end end return temp % 11 == 0; -- returns true if calculation result is zero end --[[--------------------------< IS _ V A L I D _ I S X N _ 1 3 >---------------------------------------------- ISBN-13 and ISMN validator code calculates checksum across all 13 isbn/ismn digits including the check digit. If the number is valid, the result will be 0. Before calling this function, isbn-13/ismn must be checked for length and stripped of dashes, spaces and other non-isxn-13 characters. ]] local function is_valid_isxn_13 (isxn_str) local temp=0; isxn_str = { isxn_str:byte(1, 13) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39 for i, v in ipairs( isxn_str ) do temp = temp + (3 - 2*(i % 2)) * tonumber( string.char(v) ); -- multiply odd index digits by 1, even index digits by 3 and sum; includes check digit end return temp % 10 == 0; -- sum modulo 10 is zero when isbn-13/ismn is correct end --[[--------------------------< C H E C K _ I S B N >------------------------------------------------------------ Determines whether an ISBN string is valid. Implements an ISBN validity check for {{ISBN}}, {{ISBNT}}, {{SBN}}, and {{Format ISBN}}. ]] local function check_isbn (isbn_str, frame) local function return_result (check, err_type) -- local function to render the various error returns if not check then -- <check> false when there is an error local template = ((frame.args.template_name and '' ~= frame.args.template_name) and frame.args.template_name) or nil; -- get template name if not template then return '<span class="error" style="font-size:100%">&nbsp;calling template requires template_name parameter</span>'; end local out_t = {'<span class="error" style="font-size:100%">'}; -- open the error message span table.insert (out_t, '&nbsp;Parameter error in {{[[Template:'); -- open 'template' markup; open wikilink with Template namespace table.insert (out_t, template); -- template name wikilink table.insert (out_t, '|'); -- its pipe table.insert (out_t, template); -- wikilink label table.insert (out_t, ']]}}:&nbsp;'); -- close wikilink; close 'template' markup table.insert (out_t, err_type); -- type of isbn error table.insert (out_t, '</span>') -- close the error message span if 0 == mw.title.getCurrentTitle().namespace then -- categorize only when this template is used in mainspace local category = table.concat ({'[[Category:Pages with ISBN errors]]'}); table.insert (out_t, category); end return table.concat (out_t); -- make a big string and done end return ''; -- no error, return an empty string end if nil ~= isbn_str:match ('[^%s-0-9X]') then return return_result (false, err_msg_supl_t.char); -- fail if isbn_str contains anything but digits, hyphens, or the uppercase X end local id = isbn_str:gsub ('[%s-]', ''); -- remove hyphens and whitespace local len = id:len(); if len ~= 10 and len ~= 13 then return return_result (false, err_msg_supl_t.length); -- fail if incorrect length end if len == 10 then if id:match ('^%d*X?$') == nil then -- fail if isbn_str has 'X' anywhere but last position return return_result (false, err_msg_supl_t.form); end if id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not valid isbn group ids but are used by amazon as numeric identifiers (asin) return return_result (false, err_msg_supl_t.group); -- fail if isbn-10 begins with 630/1 end return return_result (is_valid_isxn (id, 10), err_msg_supl_t.check); -- pass if isbn-10 is numerically valid (checksum) else if id:match ('^%d+$') == nil then return return_result (false, err_msg_supl_t.char); -- fail if ISBN-13 is not all digits end if id:match ('^97[89]%d*$') == nil then return return_result (false, err_msg_supl_t.prefix); -- fail when ISBN-13 does not begin with 978 or 979 end if id:match ('^9790') then return return_result (false, err_msg_supl_t.group); -- group identifier '0' is reserved to ISMN end return return_result (is_valid_isxn_13 (id), err_msg_supl_t.check); -- pass if isbn-10 is numerically valid (checksum) end end --[[--------------------------< C H E C K _ I S M N >------------------------------------------------------------ Determines whether an ISMN string is valid. Similar to isbn-13, ismn is 13 digits begining 979-0-... and uses the same check digit calculations. See http://www.ismn-international.org/download/Web_ISMN_Users_Manual_2008-6.pdf section 2, pages 9–12. ]] local function check_ismn (id, error_string) local text; local valid_ismn = true; id=id:gsub( "[%s-–]", "" ); -- strip spaces, hyphens, and endashes from the ismn if 13 ~= id:len() or id:match( "^9790%d*$" ) == nil then -- ismn must be 13 digits and begin 9790 valid_ismn = false; else valid_ismn=is_valid_isxn_13 (id); -- validate ismn end return valid_ismn and '' or error_string end --[[--------------------------< I S S N >---------------------------------------------------------------------- Validate and format an issn. This code fixes the case where an editor has included an ISSN in the citation but has separated the two groups of four digits with a space. When that condition occurred, the resulting link looked like this: |issn=0819 4327 gives: [http://www.worldcat.org/issn/0819 4327 0819 4327] -- can't have spaces in an external link This code now prevents that by inserting a hyphen at the issn midpoint. It also validates the issn for length and makes sure that the checkdigit agrees with the calculated value. Incorrect length (8 digits), characters other than 0-9 and X, or checkdigit / calculated value mismatch will all cause a check issn error message. ]] local function check_issn(id, error_string) local issn_copy = id; -- save a copy of unadulterated issn; use this version for display if issn does not validate local text; local valid_issn = true; if not id:match ('^%d%d%d%d%-%d%d%d[%dX]$') then return error_string; end id=id:gsub( "[%s-–]", "" ); -- strip spaces, hyphens, and endashes from the issn if 8 ~= id:len() or nil == id:match( "^%d*X?$" ) then -- validate the issn: 8 digits long, containing only 0-9 or X in the last position valid_issn=false; -- wrong length or improper character else valid_issn=is_valid_isxn(id, 8); -- validate issn end return valid_issn and '' or error_string end ------------------------------< E N T R Y P O I N T S >--------------------------------------------------==== function p.check_isbn(frame) return check_isbn(frame.args[1] or frame:getParent().args[1], frame) end function p.check_ismn(frame) return check_ismn(frame.args[1] or frame:getParent().args[1], frame.args['error'] or frame:getParent().args['error'] or 'error') end function p.check_issn(frame) return check_issn(frame.args[1] or frame:getParent().args[1], frame.args['error'] or frame:getParent().args['error'] or 'error') end return p 177daafde5a0a7d4292a7ae725b9db16f2079e4e Template:Tl 10 8 292 11 2022-11-09T19:50:43Z Agent Isai 9 1 revision imported from [[:wikipedia:Template:Tl]]: Importing from [[w:|English Wikipedia]] to sync templates wikitext text/x-wiki &#123;&#123;[[{{#if:{{{2|}}}|{{{2|}}}:}}Special:MyLanguage/Template:{{{1}}}|{{{1}}}]]&#125;&#125;<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 08b547a58917e4cfd27e175b3114e45f0e34e2c4 Module:Message box/configuration 828 11 157 2022-11-09T19:50:51Z meta>Agent Isai 0 1 revision imported from [[:wikipedia:Module:Message_box/configuration]]: Importing from [[w:|English Wikipedia]] to sync templates Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix', 'subst'}, removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } b6f0151037e6867b577c8cca32ff297e48697a10 Module:Infobox 828 18 161 2022-11-09T19:51:01Z meta>Agent Isai 0 1 revision imported from [[:wikipedia:Module:Infobox]]: Importing from [[w:|English Wikipedia]] to sync templates Scribunto text/plain -- -- This module implements {{Infobox}} -- local p = {} local navbar = require('Module:Navbar')._navbar local args = {} local origArgs local root local function notempty( s ) return s and s:match( '%S' ) end local function fixChildBoxes(sval, tt) if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) if s:match(marker) then s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') end if s:match(marker) then local subcells = mw.text.split(s, marker) s = '' for k = 1, #subcells do if k == 1 then s = s .. subcells[k] .. '</' .. tt .. '></tr>' elseif k == #subcells then local rowstyle = ' style="display:none"' if notempty(subcells[k]) then rowstyle = '' end s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] elseif notempty(subcells[k]) then if (k % 2) == 0 then s = s .. subcells[k] else s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' end end end end return s else return sval end end local function union(t1, t2) -- Returns the union of the values of two tables, as a sequence. local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end local function getArgNums(prefix) -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix was 'data', and -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end local function addRow(rowArgs) -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. if rowArgs.header then root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :attr('id', rowArgs.rowid) :tag('th') :attr('colspan', 2) :attr('id', rowArgs.headerid) :addClass(rowArgs.class) :addClass(args.headerclass) :css('text-align', 'center') :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.header, 'th')) elseif rowArgs.data then local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) row:attr('id', rowArgs.rowid) if rowArgs.label then row :tag('th') :attr('scope', 'row') :attr('id', rowArgs.labelid) :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :wikitext(rowArgs.label) :done() end local dataCell = row:tag('td') if not rowArgs.label then dataCell :attr('colspan', 2) :css('text-align', 'center') end dataCell :attr('id', rowArgs.dataid) :addClass(rowArgs.class) :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :newline() :wikitext(fixChildBoxes(rowArgs.data, 'td')) end end local function renderTitle() if not args.title then return end root :tag('caption') :addClass(args.titleclass) :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end root :tag('tr') :tag('th') :attr('colspan', 2) :addClass(args.aboveclass) :css('text-align', 'center') :css('font-size', '125%') :css('font-weight', 'bold') :cssText(args.abovestyle) :wikitext(fixChildBoxes(args.above,'th')) end local function renderBelowRow() if not args.below then return end root :tag('tr') :tag('td') :attr('colspan', '2') :addClass(args.belowclass) :css('text-align', 'center') :cssText(args.belowstyle) :newline() :wikitext(fixChildBoxes(args.below,'td')) end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader') for k, num in ipairs(subheadernums) do addRow({ data = args['subheader' .. tostring(num)], datastyle = args.subheaderstyle or args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :cssText(args.captionstyle) :wikitext(caption) end addRow({ data = tostring(data), datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end local function renderRows() -- Gets the union of the header and data argument numbers, -- and renders them all in order using addRow. local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], rowclass = args['rowclass' .. tostring(num)], rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)], dataid = args['dataid' .. tostring(num)], labelid = args['labelid' .. tostring(num)], headerid = args['headerid' .. tostring(num)], rowid = args['rowid' .. tostring(num)] }) end end local function renderNavBar() if not args.name then return end root :tag('tr') :tag('td') :attr('colspan', '2') :css('text-align', 'right') :wikitext(navbar{ args.name, mini = 1, }) end local function renderItalicTitle() local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then root:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'})) end end local function renderTrackingCategories() if args.decat ~= 'yes' then if #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then root:wikitext('[[Category:Articles which use infobox templates with no data rows]]') end if args.child == 'yes' and args.title then root:wikitext('[[Category:Pages which use embedded infobox templates with the title parameter]]') end end end local function _infobox() -- Specify the overall layout of the infobox, with special settings -- if the infobox is used as a 'child' inside another infobox. if args.child ~= 'yes' then root = mw.html.create('table') root :addClass('infobox') :addClass(args.bodyclass) if args.subbox == 'yes' then root :css('padding', '0') :css('border', 'none') :css('margin', '-3px') :css('width', 'auto') :css('min-width', '100%') :css('font-size', '100%') :css('clear', 'none') :css('float', 'none') :css('background-color', 'transparent') else root :css('width', '22em') end root :cssText(args.bodystyle) renderTitle() renderAboveRow() else root = mw.html.create() root :wikitext(args.title) end renderSubheaders() renderImages() renderRows() renderBelowRow() renderNavBar() renderItalicTitle() renderTrackingCategories() return tostring(root) end local function preprocessSingleArg(argName) -- If the argument exists and isn't blank, add it to the argument table. -- Blank arguments are treated as nil to match the behaviour of ParserFunctions. if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end local function preprocessArgs(prefixTable, step) -- Assign the parameters with the given prefixes to the args table, in order, in batches -- of the step size specified. This is to prevent references etc. from appearing in the -- wrong order. The prefixTable should be an array containing tables, each of which has -- two possible fields, a "prefix" string and a "depend" table. The function always parses -- parameters containing the "prefix" string, but only parses parameters in the "depend" -- table if the prefix parameter is present and non-blank. if type(prefixTable) ~= 'table' then error("Non-table value detected for the prefix table", 2) end if type(step) ~= 'number' then error("Invalid step value detected", 2) end -- Get arguments without a number suffix, and check for bad input. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Invalid input detected to preprocessArgs prefix table', 2) end preprocessSingleArg(v.prefix) -- Only parse the depend parameter if the prefix parameter is present and not blank. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Invalid "depend" parameter value detected in preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Get arguments with number suffixes. local a = 1 -- Counter variable. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) if origArgs[prefixArgName] then moreArgumentsExist = true -- Do another loop if any arguments are found, even blank ones. preprocessSingleArg(prefixArgName) end -- Process the depend table if the prefix argument is present and not blank, or -- we are processing "prefix1" and "prefix" is present and not blank, and -- if the depend table is present. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) preprocessSingleArg(dependArgName) end end end end a = a + step end end function p.infobox(frame) -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end -- Parse the data parameters in the same order that the old {{infobox}} did, so that -- references etc. will display in the expected places. Parameters that depend on -- another parameter are only processed if that parameter is present, to avoid -- phantom references appearing in article reference lists. preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'}, {prefix = 'dataid'}, {prefix = 'labelid'}, {prefix = 'headerid'}, {prefix = 'rowid'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') args['italic title'] = origArgs['italic title'] -- different behaviour if blank or absent preprocessSingleArg('decat') return frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' } } .. _infobox() end return p eccecf7ea52ce105242adb57836ea74e04395312 Module:List 828 20 185 2022-11-09T19:51:04Z meta>Agent Isai 0 1 revision imported from [[:wikipedia:Module:List]]: Importing from [[w:|English Wikipedia]] to sync templates Scribunto text/plain -- This module outputs different kinds of lists. At the moment, bulleted, -- unbulleted, horizontal, ordered, and horizontal ordered lists are supported. local libUtil = require('libraryUtil') local checkType = libUtil.checkType local mTableTools = require('Module:TableTools') local p = {} local listTypes = { ['bulleted'] = true, ['unbulleted'] = true, ['horizontal'] = true, ['ordered'] = true, ['horizontal_ordered'] = true } function p.makeListData(listType, args) -- Constructs a data table to be passed to p.renderList. local data = {} -- Classes data.classes = {} data.templatestyles = '' if listType == 'horizontal' or listType == 'horizontal_ordered' then table.insert(data.classes, 'hlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Template:Flatlist/styles.css' } } elseif listType == 'unbulleted' then table.insert(data.classes, 'plainlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Template:Plainlist/styles.css' } } end table.insert(data.classes, args.class) -- Main div style data.style = args.style -- Indent for horizontal lists if listType == 'horizontal' or listType == 'horizontal_ordered' then local indent = tonumber(args.indent) indent = indent and indent * 1.6 or 0 if indent > 0 then data.marginLeft = indent .. 'em' end end -- List style types for ordered lists -- This could be "1, 2, 3", "a, b, c", or a number of others. The list style -- type is either set by the "type" attribute or the "list-style-type" CSS -- property. if listType == 'ordered' or listType == 'horizontal_ordered' then data.listStyleType = args.list_style_type or args['list-style-type'] data.type = args['type'] -- Detect invalid type attributes and attempt to convert them to -- list-style-type CSS properties. if data.type and not data.listStyleType and not tostring(data.type):find('^%s*[1AaIi]%s*$') then data.listStyleType = data.type data.type = nil end end -- List tag type if listType == 'ordered' or listType == 'horizontal_ordered' then data.listTag = 'ol' else data.listTag = 'ul' end -- Start number for ordered lists data.start = args.start if listType == 'horizontal_ordered' then -- Apply fix to get start numbers working with horizontal ordered lists. local startNum = tonumber(data.start) if startNum then data.counterReset = 'listitem ' .. tostring(startNum - 1) end end -- List style -- ul_style and ol_style are included for backwards compatibility. No -- distinction is made for ordered or unordered lists. data.listStyle = args.list_style -- List items -- li_style is included for backwards compatibility. item_style was included -- to be easier to understand for non-coders. data.itemStyle = args.item_style or args.li_style data.items = {} for i, num in ipairs(mTableTools.numKeys(args)) do local item = {} item.content = args[num] item.style = args['item' .. tostring(num) .. '_style'] or args['item_style' .. tostring(num)] item.value = args['item' .. tostring(num) .. '_value'] or args['item_value' .. tostring(num)] table.insert(data.items, item) end return data end function p.renderList(data) -- Renders the list HTML. -- Return the blank string if there are no list items. if type(data.items) ~= 'table' or #data.items < 1 then return '' end -- Render the main div tag. local root = mw.html.create('div') for i, class in ipairs(data.classes or {}) do root:addClass(class) end root:css{['margin-left'] = data.marginLeft} if data.style then root:cssText(data.style) end -- Render the list tag. local list = root:tag(data.listTag or 'ul') list :attr{start = data.start, type = data.type} :css{ ['counter-reset'] = data.counterReset, ['list-style-type'] = data.listStyleType } if data.listStyle then list:cssText(data.listStyle) end -- Render the list items for i, t in ipairs(data.items or {}) do local item = list:tag('li') if data.itemStyle then item:cssText(data.itemStyle) end if t.style then item:cssText(t.style) end item :attr{value = t.value} :wikitext(t.content) end return data.templatestyles .. tostring(root) end function p.renderTrackingCategories(args) local isDeprecated = false -- Tracks deprecated parameters. for k, v in pairs(args) do k = tostring(k) if k:find('^item_style%d+$') or k:find('^item_value%d+$') then isDeprecated = true break end end local ret = '' if isDeprecated then ret = ret .. '[[Category:List templates with deprecated parameters]]' end return ret end function p.makeList(listType, args) if not listType or not listTypes[listType] then error(string.format( "bad argument #1 to 'makeList' ('%s' is not a valid list type)", tostring(listType) ), 2) end checkType('makeList', 2, args, 'table') local data = p.makeListData(listType, args) local list = p.renderList(data) local trackingCategories = p.renderTrackingCategories(args) return list .. trackingCategories end for listType in pairs(listTypes) do p[listType] = function (frame) local mArguments = require('Module:Arguments') local origArgs = mArguments.getArgs(frame, { valueFunc = function (key, value) if not value or not mw.ustring.find(value, '%S') then return nil end if mw.ustring.find(value, '^%s*[%*#;:]') then return value else return value:match('^%s*(.-)%s*$') end return nil end }) -- Copy all the arguments to a new table, for faster indexing. local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.makeList(listType, args) end end return p b60cb90a28f54a237f389f8009157816b631d806 Module:TableTools 828 21 159 37 2022-11-09T19:51:05Z meta>Agent Isai 0 1 revision imported from [[:wikipedia:Module:TableTools]]: Importing from [[w:|English Wikipedia]] to sync templates Scribunto text/plain --[[ ------------------------------------------------------------------------------------ -- TableTools -- -- -- -- This module includes a number of functions for dealing with Lua tables. -- -- It is a meta-module, meant to be called from other Lua modules, and should -- -- not be called directly from #invoke. -- ------------------------------------------------------------------------------------ --]] local libraryUtil = require('libraryUtil') local p = {} -- Define often-used variables and functions. local floor = math.floor local infinity = math.huge local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti --[[ ------------------------------------------------------------------------------------ -- isPositiveInteger -- -- This function returns true if the given value is a positive integer, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a given table key is in the array part or the -- hash part of a table. ------------------------------------------------------------------------------------ --]] function p.isPositiveInteger(v) if type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity then return true else return false end end --[[ ------------------------------------------------------------------------------------ -- isNan -- -- This function returns true if the given number is a NaN value, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a value can be a valid table key. Lua will -- generate an error if a NaN is used as a table key. ------------------------------------------------------------------------------------ --]] function p.isNan(v) if type(v) == 'number' and tostring(v) == '-nan' then return true else return false end end --[[ ------------------------------------------------------------------------------------ -- shallowClone -- -- This returns a clone of a table. The value returned is a new table, but all -- subtables and functions are shared. Metamethods are respected, but the returned -- table will have no metatable of its own. ------------------------------------------------------------------------------------ --]] function p.shallowClone(t) local ret = {} for k, v in pairs(t) do ret[k] = v end return ret end --[[ ------------------------------------------------------------------------------------ -- removeDuplicates -- -- This removes duplicate values from an array. Non-positive-integer keys are -- ignored. The earliest value is kept, and all subsequent duplicate values are -- removed, but otherwise the array order is unchanged. ------------------------------------------------------------------------------------ --]] function p.removeDuplicates(t) checkType('removeDuplicates', 1, t, 'table') local isNan = p.isNan local ret, exists = {}, {} for i, v in ipairs(t) do if isNan(v) then -- NaNs can't be table keys, and they are also unique, so we don't need to check existence. ret[#ret + 1] = v else if not exists[v] then ret[#ret + 1] = v exists[v] = true end end end return ret end --[[ ------------------------------------------------------------------------------------ -- numKeys -- -- This takes a table and returns an array containing the numbers of any numerical -- keys that have non-nil values, sorted in numerical order. ------------------------------------------------------------------------------------ --]] function p.numKeys(t) checkType('numKeys', 1, t, 'table') local isPositiveInteger = p.isPositiveInteger local nums = {} for k, v in pairs(t) do if isPositiveInteger(k) then nums[#nums + 1] = k end end table.sort(nums) return nums end --[[ ------------------------------------------------------------------------------------ -- affixNums -- -- This takes a table and returns an array containing the numbers of keys with the -- specified prefix and suffix. For example, for the table -- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will -- return {1, 3, 6}. ------------------------------------------------------------------------------------ --]] function p.affixNums(t, prefix, suffix) checkType('affixNums', 1, t, 'table') checkType('affixNums', 2, prefix, 'string', true) checkType('affixNums', 3, suffix, 'string', true) local function cleanPattern(s) -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally. s = s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1') return s end prefix = prefix or '' suffix = suffix or '' prefix = cleanPattern(prefix) suffix = cleanPattern(suffix) local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' local nums = {} for k, v in pairs(t) do if type(k) == 'string' then local num = mw.ustring.match(k, pattern) if num then nums[#nums + 1] = tonumber(num) end end end table.sort(nums) return nums end --[[ ------------------------------------------------------------------------------------ -- numData -- -- Given a table with keys like ("foo1", "bar1", "foo2", "baz2"), returns a table -- of subtables in the format -- { [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} } -- Keys that don't end with an integer are stored in a subtable named "other". -- The compress option compresses the table so that it can be iterated over with -- ipairs. ------------------------------------------------------------------------------------ --]] function p.numData(t, compress) checkType('numData', 1, t, 'table') checkType('numData', 2, compress, 'boolean', true) local ret = {} for k, v in pairs(t) do local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$') if num then num = tonumber(num) local subtable = ret[num] or {} if prefix == '' then -- Positional parameters match the blank string; put them at the start of the subtable instead. prefix = 1 end subtable[prefix] = v ret[num] = subtable else local subtable = ret.other or {} subtable[k] = v ret.other = subtable end end if compress then local other = ret.other ret = p.compressSparseArray(ret) ret.other = other end return ret end --[[ ------------------------------------------------------------------------------------ -- compressSparseArray -- -- This takes an array with one or more nil values, and removes the nil values -- while preserving the order, so that the array can be safely traversed with -- ipairs. ------------------------------------------------------------------------------------ --]] function p.compressSparseArray(t) checkType('compressSparseArray', 1, t, 'table') local ret = {} local nums = p.numKeys(t) for _, num in ipairs(nums) do ret[#ret + 1] = t[num] end return ret end --[[ ------------------------------------------------------------------------------------ -- sparseIpairs -- -- This is an iterator for sparse arrays. It can be used like ipairs, but can -- handle nil values. ------------------------------------------------------------------------------------ --]] function p.sparseIpairs(t) checkType('sparseIpairs', 1, t, 'table') local nums = p.numKeys(t) local i = 0 local lim = #nums return function () i = i + 1 if i <= lim then local key = nums[i] return key, t[key] else return nil, nil end end end --[[ ------------------------------------------------------------------------------------ -- size -- -- This returns the size of a key/value pair table. It will also work on arrays, -- but for arrays it is more efficient to use the # operator. ------------------------------------------------------------------------------------ --]] function p.size(t) checkType('size', 1, t, 'table') local i = 0 for k in pairs(t) do i = i + 1 end return i end local function defaultKeySort(item1, item2) -- "number" < "string", so numbers will be sorted before strings. local type1, type2 = type(item1), type(item2) if type1 ~= type2 then return type1 < type2 else -- This will fail with table, boolean, function. return item1 < item2 end end --[[ Returns a list of the keys in a table, sorted using either a default comparison function or a custom keySort function. ]] function p.keysToList(t, keySort, checked) if not checked then checkType('keysToList', 1, t, 'table') checkTypeMulti('keysToList', 2, keySort, { 'function', 'boolean', 'nil' }) end local list = {} local index = 1 for key, value in pairs(t) do list[index] = key index = index + 1 end if keySort ~= false then keySort = type(keySort) == 'function' and keySort or defaultKeySort table.sort(list, keySort) end return list end --[[ Iterates through a table, with the keys sorted using the keysToList function. If there are only numerical keys, sparseIpairs is probably more efficient. ]] function p.sortedPairs(t, keySort) checkType('sortedPairs', 1, t, 'table') checkType('sortedPairs', 2, keySort, 'function', true) local list = p.keysToList(t, keySort, true) local i = 0 return function() i = i + 1 local key = list[i] if key ~= nil then return key, t[key] else return nil, nil end end end --[[ Returns true if all keys in the table are consecutive integers starting at 1. --]] function p.isArray(t) checkType("isArray", 1, t, "table") local i = 0 for k, v in pairs(t) do i = i + 1 if t[i] == nil then return false end end return true end -- { "a", "b", "c" } -> { a = 1, b = 2, c = 3 } function p.invert(array) checkType("invert", 1, array, "table") local map = {} for i, v in ipairs(array) do map[v] = i end return map end --[[ { "a", "b", "c" } -> { ["a"] = true, ["b"] = true, ["c"] = true } --]] function p.listToSet(t) checkType("listToSet", 1, t, "table") local set = {} for _, item in ipairs(t) do set[item] = true end return set end --[[ Recursive deep copy function. Preserves identities of subtables. ]] local function _deepCopy(orig, includeMetatable, already_seen) -- Stores copies of tables indexed by the original table. already_seen = already_seen or {} local copy = already_seen[orig] if copy ~= nil then return copy end if type(orig) == 'table' then copy = {} for orig_key, orig_value in pairs(orig) do copy[deepcopy(orig_key, includeMetatable, already_seen)] = deepcopy(orig_value, includeMetatable, already_seen) end already_seen[orig] = copy if includeMetatable then local mt = getmetatable(orig) if mt ~= nil then local mt_copy = deepcopy(mt, includeMetatable, already_seen) setmetatable(copy, mt_copy) already_seen[mt] = mt_copy end end else -- number, string, boolean, etc copy = orig end return copy end function p.deepCopy(orig, noMetatable, already_seen) checkType("deepCopy", 3, already_seen, "table", true) return _deepCopy(orig, not noMetatable, already_seen) end --[[ Concatenates all values in the table that are indexed by a number, in order. sparseConcat{ a, nil, c, d } => "acd" sparseConcat{ nil, b, c, d } => "bcd" ]] function p.sparseConcat(t, sep, i, j) local list = {} local list_i = 0 for _, v in p.sparseIpairs(t) do list_i = list_i + 1 list[list_i] = v end return table.concat(list, sep, i, j) end --[[ -- This returns the length of a table, or the first integer key n counting from -- 1 such that t[n + 1] is nil. It is similar to the operator #, but may return -- a different value when there are gaps in the array portion of the table. -- Intended to be used on data loaded with mw.loadData. For other tables, use #. -- Note: #frame.args in frame object always be set to 0, regardless of -- the number of unnamed template parameters, so use this function for -- frame.args. --]] function p.length(t) local i = 1 while t[i] ~= nil do i = i + 1 end return i - 1 end function p.inArray(arr, valueToFind) checkType("inArray", 1, arr, "table") -- if valueToFind is nil, error? for _, v in ipairs(arr) do if v == valueToFind then return true end end return false end return p fe918509f168332267834b3a6f5c219a9de5b2e7 Module:Navbar 828 37 163 2022-11-09T19:51:14Z meta>Agent Isai 0 1 revision imported from [[:wikipedia:Module:Navbar]]: Importing from [[w:|English Wikipedia]] to sync templates Scribunto text/plain local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false, false} if template then show[2] = false show[3] = false local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} -- TODO: Consider removing TableTools dependency. for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end local remove_edit_link = args.noedit if remove_edit_link then show[3] = false end return show end local function add_link(link_description, ul, is_mini, font_style) local l if link_description.url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass('nv-' .. link_description.full) :wikitext(l[1] .. link_description.link .. l[2]) :tag(is_mini and 'abbr' or 'span') :attr('title', link_description.html_title) :cssText(font_style) :wikitext(is_mini and link_description.mini or link_description.full) :done() :wikitext(l[3]) :done() end local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style) local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace) if not title then error(cfg.invalid_title .. title_text) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' -- TODO: Get link_descriptions and show into the configuration module. -- link_descriptions should be easier... local link_descriptions = { { ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', ['link'] = title.fullText, ['url'] = false }, { ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', ['link'] = talkpage, ['url'] = false }, { ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', ['link'] = title:fullUrl('action=edit'), ['url'] = true }, { ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template', ['link'] = title:fullUrl('action=history'), ['url'] = true }, { ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template', ['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true }, { ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template', ['link'] = title:fullUrl('action=watch'), ['url'] = true } } local ul = mw.html.create('ul') if has_brackets then ul:addClass(cfg.classes.brackets) :cssText(font_style) end for i, _ in ipairs(displayed_links) do if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end end return ul:done() end function p._navbar(args) -- TODO: We probably don't need both fontstyle and fontcolor... local font_style = args.fontstyle local font_color = args.fontcolor local is_collapsible = args.collapsible local is_mini = args.mini local is_plain = args.plain local collapsible_class = nil if is_collapsible then collapsible_class = cfg.classes.collapsible if not is_plain then is_mini = 1 end if font_color then font_style = (font_style or '') .. '; color: ' .. font_color .. ';' end end local navbar_style = args.style local div = mw.html.create():tag('div') div :addClass(cfg.classes.navbar) :addClass(cfg.classes.plainlinks) :addClass(cfg.classes.horizontal_list) :addClass(collapsible_class) -- we made the determination earlier :cssText(navbar_style) if is_mini then div:addClass(cfg.classes.mini) end local box_text = (args.text or cfg.box_text) .. ' ' -- the concatenated space guarantees the box text is separated if not (is_mini or is_plain) then div :tag('span') :addClass(cfg.classes.box_text) :cssText(font_style) :wikitext(box_text) end local template = args.template local displayed_links = choose_links(template, args) local has_brackets = args.brackets local title_arg = get_title_arg(is_collapsible, template) local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style) div:node(list) if is_collapsible then local title_text_class if is_mini then title_text_class = cfg.classes.collapsible_title_mini else title_text_class = cfg.classes.collapsible_title_full end div:done() :tag('div') :addClass(title_text_class) :cssText(font_style) :wikitext(args[1]) end return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = cfg.templatestyles } } .. tostring(div:done()) end function p.navbar(frame) return p._navbar(require('Module:Arguments').getArgs(frame)) end return p a5c8d3a8f8beb18984ea7f145ddbdf88a065d23e Module:Navbar/configuration 828 38 165 2022-11-09T19:51:15Z meta>Agent Isai 0 1 revision imported from [[:wikipedia:Module:Navbar/configuration]]: Importing from [[w:|English Wikipedia]] to sync templates Scribunto text/plain return { ['templatestyles'] = 'Module:Navbar/styles.css', ['box_text'] = 'This box: ', -- default text box when not plain or mini ['title_namespace'] = 'Template', -- namespace to default to for title ['invalid_title'] = 'Invalid title ', ['classes'] = { -- set a line to nil if you don't want it ['navbar'] = 'navbar', ['plainlinks'] = 'plainlinks', -- plainlinks ['horizontal_list'] = 'hlist', -- horizontal list class ['mini'] = 'navbar-mini', -- class indicating small links in the navbar ['this_box'] = 'navbar-boxtext', ['brackets'] = 'navbar-brackets', -- 'collapsible' is the key for a class to indicate the navbar is -- setting up the collapsible element in addition to the normal -- navbar. ['collapsible'] = 'navbar-collapse', ['collapsible_title_mini'] = 'navbar-ct-mini', ['collapsible_title_full'] = 'navbar-ct-full' } } bbf3d86b48a5b40835e8e232ae9821e6bca390ec Module:Documentation 828 51 171 2022-11-09T19:51:21Z meta>Agent Isai 0 1 revision imported from [[:wikipedia:Module:Documentation]]: Importing from [[w:|English Wikipedia]] to sync templates Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs local messageBox = require('Module:Message box') -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local i18n = mw.loadData('Module:Documentation/i18n') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-type', cfgKey, expectType, type(msg)), 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-empty', '$' .. match, cfgKey), 4) end local ret = ugsub(msg, '$([1-9][0-9]*)', getMessageVal) return ret end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end return '<small>(' .. table.concat(ret, ' &#124; ') .. ')</small>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Load TemplateStyles ---------------------------------------------------------------------------- p.main = function(frame) local parent = frame.getParent(frame) local output = p._main(parent.args) return frame:extensionTag{ name='templatestyles', args = { src= message('templatestyles-scr') } } .. output end ---------------------------------------------------------------------------- -- Main function ---------------------------------------------------------------------------- function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user -- -- Messages: -- 'main-div-id' --> 'template-documentation' -- 'main-div-classes' --> 'template-documentation iezoomfix' --]] local env = p.getEnvironment(args) local root = mw.html.create() root :wikitext(p.protectionTemplate(env)) :wikitext(p.sandboxNotice(args, env)) -- This div tag is from {{documentation/start box}}, but moving it here -- so that we don't have to worry about unclosed tags. :tag('div') :attr('id', message('main-div-id')) :addClass(message('main-div-class')) :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :done() :wikitext(p._endBox(args, env)) :wikitext(p.addTrackingCategories(env)) return tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title objects and other namespace- or -- path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- env.printTitle - the print version of the template, located at the /Print subpage. -- -- Data includes: -- env.protectionLevels - the protection levels table of the title object. -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.printTitle() --[[ -- Title object for the /Print subpage. -- Messages: -- 'print-subpage' --> 'Print' --]] return env.templateTitle:subPageTitle(message('print-subpage')) end function envFuncs.protectionLevels() -- The protection levels table of the title object. return env.title.protectionLevels end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the same as the -- subject namespace. However, pages in the Article, File, MediaWiki or Category -- namespaces must have their /doc, /sandbox and /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', {page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Auxiliary templates ---------------------------------------------------------------------------- function p.sandboxNotice(args, env) --[=[ -- Generates a sandbox notice for display above sandbox pages. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-notice-image' --> '[[Image:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' -- 'sandbox-notice-pagetype-template' --> '[[w:Wikipedia:Template test cases|template sandbox]] page' -- 'sandbox-notice-pagetype-module' --> '[[w:Wikipedia:Template test cases|module sandbox]] page' -- 'sandbox-notice-pagetype-other' --> 'sandbox page' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.' -- 'sandbox-notice-testcases-link-display' --> 'test cases' -- 'sandbox-category' --> 'Template sandboxes' --]=] local title = env.title local sandboxTitle = env.sandboxTitle local templateTitle = env.templateTitle local subjectSpace = env.subjectSpace if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then return nil end -- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text". local omargs = {} omargs.image = message('sandbox-notice-image') -- Get the text. We start with the opening blurb, which is something like -- "This is the template sandbox for [[Template:Foo]] (diff)." local text = '' local frame = mw.getCurrentFrame() local isPreviewing = frame:preprocess('{{REVISIONID}}') == '' -- True if the page is being previewed. local pagetype if subjectSpace == 10 then pagetype = message('sandbox-notice-pagetype-template') elseif subjectSpace == 828 then pagetype = message('sandbox-notice-pagetype-module') else pagetype = message('sandbox-notice-pagetype-other') end local templateLink = makeWikilink(templateTitle.prefixedText) local compareUrl = env.compareUrl if isPreviewing or not compareUrl then text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) else local compareDisplay = message('sandbox-notice-compare-link-display') local compareLink = makeUrlLink(compareUrl, compareDisplay) text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) end -- Get the test cases page blurb if the page exists. This is something like -- "See also the companion subpage for [[Template:Foo/testcases|test cases]]." local testcasesTitle = env.testcasesTitle if testcasesTitle and testcasesTitle.exists then if testcasesTitle.contentModel == "Scribunto" then local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink}) else local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) end end -- Add the sandbox to the sandbox category. text = text .. makeCategoryLink(message('sandbox-category')) omargs.text = text omargs.class = message('sandbox-class') return messageBox.main('ombox', omargs) end function p.protectionTemplate(env) -- Generates the padlock icon in the top right. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local title = env.title local protectionLevels local protectionTemplate = message('protection-template') local namespace = title.namespace if not (protectionTemplate and (namespace == 10 or namespace == 828)) then -- Don't display the protection template if we are not in the template or module namespaces. return nil end protectionLevels = env.protectionLevels if not protectionLevels then return nil end local editLevels = protectionLevels.edit local moveLevels = protectionLevels.move if moveLevels and moveLevels[1] == 'sysop' or editLevels and editLevels[1] then -- The page is full-move protected, or full, template, or semi-protected. local frame = mw.getCurrentFrame() return frame:expandTemplate{title = protectionTemplate, args = message('protection-template-args', nil, 'table')} else return nil end end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'file-docpage-preload' --> 'Template:Documentation/preload-filespace' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = i18n['view-link-display'] data.editLinkDisplay = i18n['edit-link-display'] data.historyLinkDisplay = i18n['history-link-display'] data.purgeLinkDisplay = i18n['purge-link-display'] -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 6 then -- File namespace preload = message('file-docpage-preload') elseif subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = i18n['create-link-display'] return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. return s :gsub('%[', '&#91;') -- Replace square brackets with HTML entities. :gsub('%]', '&#93;') end local ret local docTitle = data.docTitle local title = data.title if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=Documentation icon]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'start-box-linkclasses' --> 'mw-editsection-like plainlinks' -- 'start-box-link-id' --> 'doc_editlinks' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = i18n['template-namespace-heading'] elseif subjectSpace == 828 then -- Module namespace data.heading = i18n['module-namespace-heading'] elseif subjectSpace == 6 then -- File namespace data.heading = i18n['file-namespace-heading'] else data.heading = i18n['other-namespaces-heading'] end -- Data for the [view][edit][history][purge] or [create] links. if links then data.linksClass = message('start-box-linkclasses') data.linksId = message('start-box-link-id') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox :addClass(message('header-div-class')) :tag('div') :addClass(message('heading-div-class')) :wikitext(data.heading) local links = data.links if links then sbox :tag('div') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. local cbox = mw.html.create('div') cbox :addClass(message('content-div-class')) :wikitext('\n' .. (content or '') .. '\n') return tostring(cbox) end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the footer text field. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') text = text .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates. if printBlurb then text = text .. '<br />' .. printBlurb end end end local ebox = mw.html.create('div') ebox :addClass(message('footer-div-class')) :wikitext(text) return tostring(ebox) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[w:Wikipedia:Template documentation|documentation]] -- is [[w:Wikipedia:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[w:Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle or args.content then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = i18n['edit-link-display'] local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = i18n['history-link-display'] local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = i18n['create-link-display'] local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end function p.makePrintBlurb(args, env) --[=[ -- Generates the blurb displayed when there is a print version of the template available. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'print-link-display' --> '/Print' -- 'print-blurb' --> 'A [[Help:Books/for experts#Improving the book layout|print version]]' -- .. ' of this template exists at $1.' -- .. ' If you make a change to this template, please update the print version as well.' -- 'display-print-category' --> true -- 'print-category' --> 'Templates with print versions' --]=] local printTitle = env.printTitle if not printTitle then return nil end local ret if printTitle.exists then local printLink = makeWikilink(printTitle.prefixedText, message('print-link-display')) ret = message('print-blurb', {printLink}) local displayPrintCategory = message('display-print-category', nil, 'boolean') if displayPrintCategory then ret = ret .. makeCategoryLink(message('print-category')) end end return ret end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p a029650bff998bd1a25784b49e99f984f068d85d Module:Documentation/config 828 52 173 99 2022-11-09T19:51:21Z meta>Agent Isai 0 1 revision imported from [[:wikipedia:Module:Documentation/config]]: Importing from [[w:|English Wikipedia]] to sync templates Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local _format = require('Module:TNT').format local function format(id) return _format('I18n/Documentation', id) end local cfg = {} -- Do not edit this line. cfg['templatestyles-scr'] = 'Module:Documentation/styles.css' ---------------------------------------------------------------------------------------------------- -- Protection template configuration ---------------------------------------------------------------------------------------------------- -- cfg['protection-template'] -- The name of the template that displays the protection icon (a padlock on enwiki). cfg['protection-template'] = 'PP-template' -- cfg['protection-reason-edit'] -- The protection reason for edit-protected templates to pass to -- [[Module:Protection banner]]. cfg['protection-reason-edit'] = 'template' --[[ -- cfg['protection-template-args'] -- Any arguments to send to the protection template. This should be a Lua table. -- For example, if the protection template is "pp-template", and the wikitext template invocation -- looks like "{{pp-template|docusage=yes}}", then this table should look like "{docusage = 'yes'}". --]] cfg['protection-template-args'] = {docusage = 'yes'} --[[ ---------------------------------------------------------------------------------------------------- -- Sandbox notice configuration -- -- On sandbox pages the module can display a template notifying users that the current page is a -- sandbox, and the location of test cases pages, etc. The module decides whether the page is a -- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the -- messages that the notices contains. ---------------------------------------------------------------------------------------------------- --]] -- cfg['sandbox-notice-image'] -- The image displayed in the sandbox notice. cfg['sandbox-notice-image'] = '[[Image:Edit In Sandbox Icon - Color.svg|40px|alt=|link=]]' --[[ -- cfg['sandbox-notice-pagetype-template'] -- cfg['sandbox-notice-pagetype-module'] -- cfg['sandbox-notice-pagetype-other'] -- The page type of the sandbox page. The message that is displayed depends on the current subject -- namespace. This message is used in either cfg['sandbox-notice-blurb'] or -- cfg['sandbox-notice-diff-blurb']. --]] cfg['sandbox-notice-pagetype-template'] = format('sandbox-notice-pagetype-template') cfg['sandbox-notice-pagetype-module'] = format('sandbox-notice-pagetype-module') cfg['sandbox-notice-pagetype-other'] = format('sandbox-notice-pagetype-other') --[[ -- cfg['sandbox-notice-blurb'] -- cfg['sandbox-notice-diff-blurb'] -- cfg['sandbox-notice-diff-display'] -- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence -- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page -- type, which is either cfg['sandbox-notice-pagetype-template'], -- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what -- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between -- the sandbox and the main template. The display value of the diff link is set by -- cfg['sandbox-notice-compare-link-display']. --]] cfg['sandbox-notice-blurb'] = format('sandbox-notice-blurb') cfg['sandbox-notice-diff-blurb'] = format('sandbox-notice-diff-blurb') cfg['sandbox-notice-compare-link-display'] = format('sandbox-notice-compare-link-display') --[[ -- cfg['sandbox-notice-testcases-blurb'] -- cfg['sandbox-notice-testcases-link-display'] -- cfg['sandbox-notice-testcases-run-blurb'] -- cfg['sandbox-notice-testcases-run-link-display'] -- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit. $1 is a link to the test cases page. -- cfg['sandbox-notice-testcases-link-display'] is the display value for that link. -- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test -- cases page, and $2 is a link to the page to run it. -- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test -- cases. --]] cfg['sandbox-notice-testcases-blurb'] = format('sandbox-notice-testcases-blurb') cfg['sandbox-notice-testcases-link-display'] = format('sandbox-notice-testcases-link-display') cfg['sandbox-notice-testcases-run-blurb'] = format('sandbox-notice-testcases-run-blurb') cfg['sandbox-notice-testcases-run-link-display'] = format('sandbox-notice-testcases-run-link-display') -- cfg['sandbox-category'] -- A category to add to all template sandboxes. cfg['sandbox-category'] = 'Template sandboxes' ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=Documentation icon]]' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = format('transcluded-from-blurb') --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = format('create-module-doc-blurb') ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = format('experiment-blurb-template') cfg['experiment-blurb-module'] = format('experiment-blurb-module') ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = format('sandbox-link-display') -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = format('sandbox-edit-link-display') -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = format('sandbox-create-link-display') -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = format('compare-link-display') -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = format('mirror-link-display') -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = format('testcases-link-display') -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = format('testcases-edit-link-display') -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = format('testcases-create-link-display') ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = format('add-categories-blurb') -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = format('subpages-blurb') --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = format('subpages-link-display') -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = format('template-pagetype') -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = format('module-pagetype') -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = format('default-pagetype') ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['file-docpage-preload'] -- Preload file for documentation page in the file namespace. cfg['file-docpage-preload'] = 'Template:Documentation/preload-filespace' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- Print version configuration ---------------------------------------------------------------------------------------------------- -- cfg['print-subpage'] -- The name of the template subpage used for print versions. cfg['print-subpage'] = 'Print' -- cfg['print-link-display'] -- The text to display when linking to the /Print subpage. cfg['print-link-display'] = '/Print' -- cfg['print-blurb'] -- Text to display if a /Print subpage exists. $1 is a link to the subpage with a display value of cfg['print-link-display']. cfg['print-blurb'] = format('print-blurb') -- cfg['display-print-category'] -- Set to true to enable output of cfg['print-category'] if a /Print subpage exists. -- This should be a boolean value (either true or false). cfg['display-print-category'] = true -- cfg['print-category'] -- Category to output if cfg['display-print-category'] is set to true, and a /Print subpage exists. cfg['print-category'] = 'Templates with print versions' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['main-div-id'] -- The "id" attribute of the main HTML "div" tag. cfg['main-div-id'] = 'template-documentation' -- cfg['main-div-classes'] -- The CSS classes added to the main HTML "div" tag. cfg['main-div-class'] = 'ts-doc-doc' cfg['header-div-class'] = 'ts-doc-header' cfg['heading-div-class'] = 'ts-doc-heading' cfg['content-div-class'] = 'ts-doc-content' cfg['footer-div-class'] = 'ts-doc-footer plainlinks' cfg['sandbox-class'] = 'ts-doc-sandbox' -- cfg['start-box-linkclasses'] -- The CSS classes used for the [view][edit][history] or [create] links in the start box. cfg['start-box-linkclasses'] = 'ts-tlinks-tlinks mw-editsection-like plainlinks' -- cfg['start-box-link-id'] -- The HTML "id" attribute for the links in the start box. cfg['start-box-link-id'] = 'doc_editlinks' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg 79bc957b39b5b752fa4c2e2e80a35faa01901425 Module:Lua banner 828 63 189 2022-11-09T19:51:28Z meta>Agent Isai 0 1 revision imported from [[:wikipedia:Module:Lua_banner]]: Importing from [[w:|English Wikipedia]] to sync templates Scribunto text/plain -- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local TNT = require('Module:TNT') local p = {} local function format(msg) return TNT.format('I18n/Lua banner', msg) end local function getConfig() return mw.loadData('Module:Lua banner/config') end function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args, cfg) local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules, cfg) local trackingCategories = p.renderTrackingCategories(args, modules, nil, cfg) return box .. trackingCategories end function p.renderBox(modules, cfg) local boxArgs = {} if #modules < 1 then cfg = cfg or getConfig() if cfg['allow_wishes'] then boxArgs.text = format('wishtext') else boxArgs.text = string.format('<strong class="error">%s</strong>', format('error_emptylist')) end else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) end local moduleList = mList.makeList('bulleted', moduleLinks) boxArgs.text = format('header') .. '\n' .. moduleList end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = string.format( '[[File:Lua-logo-nolabel.svg|30px|alt=%s|link=%s]]', format('logo_alt'), format('logo_link') ) return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj, cfg) if yesno(args.nocat) then return '' end cfg = cfg or getConfig() local cats = {} -- Error category if #modules < 1 and not cfg['allow_wishes'] and cfg['error_category'] then cats[#cats + 1] = cfg['error_category'] end -- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle() if titleObj.namespace == 10 and not cfg['subpage_blacklist'][titleObj.subpageText] then local category = args.category if not category then local pagename = modules[1] and mw.title.new(modules[1]) category = pagename and cfg['module_categories'][pagename.text] if not category then if cfg['allow_wishes'] and #modules < 1 then category = cfg['wish_category'] else category = cfg['default_category'] end end end if category then cats[#cats + 1] = category end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p 0fa5bd41f4b7ea898a70bc3d83af64846d0b0338 Module:Message box/ombox.css 828 73 187 141 2022-11-09T19:51:31Z meta>Agent Isai 0 1 revision imported from [[:wikipedia:Module:Message_box/ombox.css]]: Importing from [[w:|English Wikipedia]] to sync templates text text/plain /* {{pp|small=y}} */ .ombox { margin: 4px 0; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } /* For the "small=yes" option. */ .ombox.mbox-small { font-size: 88%; line-height: 1.25em; } .ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ombox-delete { border: 2px solid #b32424; /* Red */ } .ombox-content { border: 1px solid #f28500; /* Orange */ } .ombox-style { border: 1px solid #fc3; /* Yellow */ } .ombox-move { border: 1px solid #9932cc; /* Purple */ } .ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } .ombox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .ombox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .ombox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .ombox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ombox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .ombox { margin: 4px 10%; } .ombox.mbox-small { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; width: 238px; } } 8fe3df4bb607e699eab2dbd23bd4a1a446391002 Module:Message box 828 10 153 2022-11-09T19:55:49Z meta>Agent Isai 0 Fix Scribunto text/plain require('Module:No globals') local getArgs local yesno = require('Module:Yesno') local lang = mw.language.getContentLanguage() local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end -- set templatestyles self.base_templatestyles = cfg.templatestyles self.templatestyles = args.templatestyles end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end local frame = mw.getCurrentFrame() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.base_templatestyles }, }) -- Add support for a single custom templatestyles sheet. Undocumented as -- need should be limited and many templates using mbox are substed; we -- don't want to spread templatestyles sheets around to arbitrary places if self.templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.templatestyles }, }) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('span') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :addClass('mbox-invalid-type') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) fd6a8b1a0ac5916465cdf2eb099825f1d006cfba Template:Infobox German place 10 1146 2472 2022-11-12T20:01:19Z w>Markussep 0 unknown parameters wikitext text/x-wiki {{Infobox settlement <!-- See Template:Infobox settlement for additional fields and descriptions --> | name = {{#if:{{{Name|{{{name|{{PAGENAME}} }}} }}}|<span class="wrap">{{{Name|{{{name|{{PAGENAMEBASE}} }}} }}}</span>}} | native_name = {{{German_name|}}} | settlement_type = {{#if: {{{City|}}} {{{Town|}}} {{{Municipality|}}} | {{#switch: {{{Art|{{{type}}}}}} | Ortsteil = [[Ortsteil]] | Stadtteil = [[Stadtteil]] | Ortschaft = [[Ortschaft]] | Quarter = [[Quarter (urban subdivision)|Quarter]] | Village = [[Village]] | Borough = [[Stadtbezirk|Borough]] | = Part | #default = {{{Art|{{{type|Part}}}}}} }} of {{#if:{{{City|}}} | {{Link if exists|{{{City}}} }} | {{#if:{{{Town|}}} | {{Link if exists|{{{Town}}} }} | {{#if:{{{Municipality|}}} | {{Link if exists|{{{Municipality}}} }} }} }} }}| {{#if: {{{Art|{{{type|}}}}}}| {{#switch: {{{Art|{{{type}}}}}} | City | city = [[List of cities in Germany by population|City]] | Stadt | Kreisfreie Stadt | [[Kreisfreie Stadt|Stadt]] | Town | town = [[Town#Germany|Town]] | Ortsgemeinde | Gemeinde | Markt | Municipality | municipality | Flecken = [[Municipalities of Germany|Municipality]] | Unincorporated area = [[Unincorporated area#Germany|Unincorporated area]] | Amt = [[Amt]] | Samtgemeinde = [[Samtgemeinde]] | Verbandsgemeinde = [[Verbandsgemeinde]] | Verwaltungsgemeinschaft = [[Municipal association (Germany)|Verwaltungsgemeinschaft]] | #default = {{{Art|{{{type}}}}}} }} | {{#if: {{{Gemeindeschlüssel|}}} | [[Municipalities of Germany|Municipality]] }} }} }} | image_skyline = {{{image_photo|{{{image_skyline|}}}}}} | imagesize = {{{imagesize|}}} | image_caption = {{{image_caption|}}} | image_flag = {{{image_flag|}}} | flag_link = {{#ifexist: Flag of {{{Name|{{{name}}} }}} | Flag of {{{Name|{{{name}}} }}} | {{#ifexist: Flag of {{PAGENAME}} | Flag of {{PAGENAME}} }} }} | flag_size = 100x100px | image_shield = {{#switch: {{lc:{{{Wappen|{{{image_coa}}}}}}}} | none | kein | führt kein wappen.png | führt kein wappen.svg | führt_kein_wappen.png | führt_kein_wappen.svg = | #default = {{{Wappen|{{{image_coa|}}} }}} }} | shield_size = 80x80px | image_map = {{#if: {{{Lageplan|{{{image_plan|}}} }}} | {{hidden begin |style=margin-top:0.2px |titlestyle= height:auto; padding:0.1em; padding-left:0.3em; padding-right:1.5em; |border=line |title = {{#if: {{{Lageplanbeschreibung|{{{plantext|}}} }}} | {{{Lageplanbeschreibung|{{{plantext}}} }}} | Location of {{{Name|{{{name|{{PAGENAME}} }}} }}} {{#if: {{{City|{{{Town|}}} }}} | within {{{City|{{{Town|}}} }}} | {{#if: {{{Kreis|{{{Landkreis|{{{district|}}} }}} }}} | within {{#switch: {{ucfirst:{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}} }} | Kreisfreie Stadt | [[Kreisfreie Stadt|Stadt]] | Urban | Urban district = {{{Bundesland|{{{state|}}} }}} | #default = {{{Kreis|{{{Landkreis|{{{district|}}} }}} }}} district }} }} }} }} }} {{#ifexist: Template:Imagemap Germany district {{str letter/trim |{{{Kfz|{{{licence|}}} }}} }} | {{#ifexist: Media:{{{Lageplan|{{{image_plan|}}} }}} | {{Imagemap Germany district {{str letter/trim |{{{Kfz|{{{licence|}}} }}} }} | {{{Lageplan|{{{image_plan|}}} }}} }} }} | [[File:{{{Lageplan|{{{image_plan|}}} }}}|250px]] }} {{hidden end}} | {{#if: {{Infobox mapframe}} | {{hidden | header = Location of {{{Name|{{{name|{{PAGENAME}} }}} }}} | headercss=height:5px; | content = <div class="center" style="margin-top:1em">{{Infobox mapframe|area_km2={{{Fläche|{{{area|}}} }}} }}</div>}} }} }} | pushpin_map = {{#if: {{{coordinates|}}} | Germany#Germany {{#switch: {{unlink|{{{Bundesland|{{{state|}}} }}} }} | Bayern | Bavaria = Bavaria | Baden-Wuerttemberg | Baden-Württemberg = Baden-Württemberg | Berlin = Berlin | Brandenburg = Brandenburg | Bremen = Bremen | Hamburg = Hamburg | Hessen | Hesse = Hesse | Mecklenburg-Western Pomerania | MVP | Mecklenburg-Vorpommern = Mecklenburg-Vorpommern | Niedersachsen | Lower Saxony = Lower Saxony | Nordrhein-Westfalen | NRW | North Rhine-Westphalia | North Rhine-Westfalia = North Rhine-Westphalia | Rheinland-Pfalz | Rhineland-Palatinate = Rhineland-Palatinate | Saarland = Saarland | Sachsen | Saxony = Saxony | Sachsen-Anhalt | Saxony-Anhalt = Saxony-Anhalt | Schleswig-Holstein = Schleswig-Holstein | Thüringen | Thueringen | Thuringia = Thuringia | #default = {{{Bundesland|{{{state|}}} }}} }} }} | pushpin_mapsize = | pushpin_map_caption = | coordinates = {{{coordinates|}}} | subdivision_type = Country | subdivision_name = [[Germany]] | subdivision_type1 = [[States of Germany|State]] | subdivision_name1 = {{#switch:{{{Bundesland|{{{state|}}} }}} | Bayern | Bavaria = [[Bavaria]] | Baden-Wuerttemberg | Baden-Württemberg = [[Baden-Württemberg]] | Berlin = [[Berlin]] | Brandenburg = [[Brandenburg]] | Bremen = [[Bremen (state)|Bremen]] | Hamburg = [[Hamburg]] | Hessen | Hesse = [[Hesse]] | Mecklenburg-Western Pomerania | MVP | Mecklenburg-Vorpommern = [[Mecklenburg-Vorpommern]] | Niedersachsen | Lower Saxony = [[Lower Saxony]] | Nordrhein-Westfalen | NRW | North Rhine-Westphalia | North Rhine-Westfalia = [[North Rhine-Westphalia]] | Rheinland-Pfalz | Rhineland-Palatinate = [[Rhineland-Palatinate]] | Saarland = [[Saarland]] | Sachsen | Saxony = [[Saxony]] | Sachsen-Anhalt | Saxony-Anhalt = [[Saxony-Anhalt]] | Schleswig-Holstein = [[Schleswig-Holstein]] | Thüringen | Thueringen | Thuringia = [[Thuringia]] | #default = {{{Bundesland|{{{state|}}} }}} }} | subdivision_type2 = [[Regierungsbezirk|Admin. region]] | subdivision_name2 = {{#if:{{{Regierungsbezirk|{{{regbzk|{{{region|}}} }}} }}} | {{#ifexist: {{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}} (region) | [[{{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}} (region)|{{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}}]] | {{#ifexist: {{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}} | [[{{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}}]] | {{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}} }} }} }} | subdivision_type3 = [[Districts of Germany|District]] | subdivision_name3 = {{Link if exists|{{#switch: {{{state|{{{Bundesland|}}} }}} | Hamburg | [[Hamburg]] | Bremen | [[Bremen]] | Berlin | [[Berlin]] = <!-- no districts --> | {{#switch:{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}} | [[Kreisfreie Stadt|Stadt]] | Kreisfreie Stadt | urban = [[Urban districts of Germany|Urban district]] | #default = {{#ifexist: {{{Landkreis|{{{Kreis|{{{district|}}} }}} }}} (district) |<!--wlink ending in "(district)"--> [[{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}} (district)|{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}}]] |<!--else--> {{#ifexist: {{{Landkreis|{{{Kreis|{{{district|}}} }}} }}} |<!--wlink not ending in "(district)"--> [[{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}}|{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}}]] |<!--else--> {{{Landkreis|{{{Kreis|{{{district|}}} }}} }}} }} }} }} }} }} | subdivision_type4 = {{#if: {{{Gemeindeverwaltungsverband|}}} | [[Gemeindeverwaltungsverband|Municipal assoc.]] | {{#if: {{{Samtgemeinde|}}} | [[Samtgemeinde|Municipal assoc.]] | {{#if: {{{Verbandsgemeinde|}}} | [[Verbandsgemeinde|Municipal assoc.]] | {{#if: {{{Verwaltungsgemeinschaft|}}} | [[Verwaltungsgemeinschaft|Municipal assoc.]] | {{#if: {{{Amt|}}} | [[Amt|Municipal assoc.]] | {{#if: {{{Verwaltungsverband|}}} | [[Verwaltungsverband|Municipal assoc.]] }} }} }} }} }} }} | subdivision_name4 = {{Link if exists|{{#if: {{{Gemeindeverwaltungsverband|}}} | {{#ifexist: {{{Gemeindeverwaltungsverband}}} (Gemeindeverwaltungsverband) | [[{{{Gemeindeverwaltungsverband}}} (Gemeindeverwaltungsverband){{!}}{{{Gemeindeverwaltungsverband}}}]] | {{{Gemeindeverwaltungsverband}}} }} | {{#if: {{{Samtgemeinde|}}} | {{#ifexist: {{{Samtgemeinde}}} (Samtgemeinde) | [[{{{Samtgemeinde}}} (Samtgemeinde){{!}}{{{Samtgemeinde}}}]] | {{{Samtgemeinde}}} }} | {{#if: {{{Verbandsgemeinde|}}} | {{#ifexist: {{{Verbandsgemeinde}}} (Verbandsgemeinde) | [[{{{Verbandsgemeinde}}} (Verbandsgemeinde){{!}}{{{Verbandsgemeinde}}}]] | {{{Verbandsgemeinde}}} }} | {{#if: {{{Verwaltungsgemeinschaft|}}} | {{#ifexist: {{{Verwaltungsgemeinschaft}}} (Verwaltungsgemeinschaft) | [[{{{Verwaltungsgemeinschaft}}} (Verwaltungsgemeinschaft){{!}}{{{Verwaltungsgemeinschaft}}}]] | {{{Verwaltungsgemeinschaft}}} }} | {{#if: {{{Amt|}}} | {{#ifexist: {{{Amt}}} (Amt) | [[{{{Amt}}} (Amt){{!}}{{{Amt}}}]] | {{{Amt}}} }} | {{#if: {{{Verwaltungsverband|}}} | {{#ifexist: {{{Verwaltungsverband}}} (Verwaltungsverband) | [[{{{Verwaltungsverband}}} (Verwaltungsverband){{!}}{{{Verwaltungsverband}}}]] | {{{Verwaltungsverband}}} }} }} }} }} }} }} }} }} | subdivision_type5 = {{#if: {{{City|}}} {{{Town|}}} {{{Municipality|}}} | {{#if: {{{City|}}} | City | {{#if: {{{Town|}}} | Town | {{#if: {{{Municipality|}}} | Municipality }} }} }} }} | subdivision_name5 = {{Link if exists|{{#if: {{{City|}}} {{{Town|}}} {{{Municipality|}}} | {{#if: {{{City|}}} | {{{City}}} | {{#if: {{{Town|}}} | {{{Town}}} | {{#if: {{{Municipality|}}} | {{{Municipality}}} }} }} }} }} }} | subdivision_type6 = {{#if: {{{borough|}}} | Borough }} | subdivision_name6 = {{Link if exists|{{#if: {{{borough|}}} | {{{borough}}} }} }} | established_title = Founded | established_date = {{{year|}}}{{#ifeq: {{#expr: {{{year}}} < 100 }} | 1 | &nbsp;AD }} | established_title1 = First mentioned | established_date1 = {{{year_of_first_mention|}}} | extinct_title = {{<includeonly>safesubst:</includeonly>#if:{{{dissolved|}}}|Disbanded}} | extinct_date = {{{dissolved|}}} | parts_type = {{#if: {{{Gliederung|{{{divisions|}}}}}} | Subdivisions }} | parts = {{{Gliederung|{{{divisions|}}}}}} | leader_party = {{{Partei|{{{party|}}} }}} | leader_title = {{#switch: {{{Bürgermeistertitel}}} | Mayor | Bürgermeister | Bürgermeisterin | Ortsbürgermeister | Ortsbürgermeisterin = [[Mayor]] | Lord mayor | Lord Mayor | Oberbürgermeister | Oberbürgermeisterin = [[Lord mayor]] | Ortsvorsteher | Ortsvorsteherin = Local representative | Samtgemeindebürgermeister = [[Mayor|Samtgemeinde-<br />bürgermeister]] | Samtgemeindebürgermeisterin = [[Mayor|Samtgemeinde-<br />bürgermeisterin]] | #default = {{#ifexist: {{{Bürgermeistertitel}}} | [[{{{Bürgermeistertitel}}}]] | {{#if: {{{Bürgermeistertitel|}}} | {{{Bürgermeistertitel}}} | [[Mayor]] }} }} }} {{<includeonly>safesubst:</includeonly>#if: {{{leader_term|}}} | {{nobold|({{{leader_term}}}) }} }} | leader_name = {{{Bürgermeister|{{{mayor|}}} }}} | leader_title1 = {{#if: {{{ruling_party1|}}} | Governing parties }} | leader_name1 = {{Polparty|DE|{{{ruling_party1|}}} }} {{#if: {{{ruling_party2|}}} | / {{Polparty|DE|{{{ruling_party2|}}} }} }} {{#if: {{{ruling_party3|}}} | / {{Polparty|DE|{{{ruling_party3|}}} }} }} {{#if: {{{ruling_party4|}}} | / {{Polparty|DE|{{{ruling_party4|}}} }} }} {{#if: {{{ruling_party5|}}} | / {{Polparty|DE|{{{ruling_party5|}}} }} }} | area_footnotes = {{{area_footnotes|}}} | area_total_km2 = {{{Fläche|{{{area|}}} }}} | area_urban_km2 = | area_metro_km2 = {{{area_metro|}}} | elevation_footnotes = <!-- for references: use <ref> tags --> | elevation_min_m = {{#if:{{{Höhe|{{{elevation|}}}}}}|{{#ifeq:{{{Höhe|{{{elevation|}}}}}}|{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-(%s*%d.*)|%1%2|plain=false}}||{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-(%s*%d.*)|%1|plain=false}} }} }} | elevation_max_m = {{#if:{{{Höhe|{{{elevation|}}}}}}|{{#ifeq:{{{Höhe|{{{elevation|}}}}}}|{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-(%s*%d.*)|%1%2|plain=false}}||{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-(%s*%d.*)|%2|plain=false}} }} }} | elevation_m = {{#if:{{{Höhe|{{{elevation|}}}}}}|{{#ifeq:{{{Höhe|{{{elevation|}}}}}}|{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-|%1|plain=false}}|{{{Höhe|{{{elevation|}}}}}}|}} }} | population_footnotes = {{#iferror: {{#expr: {{Population Germany|key={{replace|{{{Gemeindeschlüssel|}}}| |}} }} +1 }} | {{{pop_ref|}}} | {{#tag:ref | {{Population Germany|key={{{Gemeindeschlüssel|}}}|datref=QUELLE}} }} }} | population_total = {{#iferror: {{#expr: {{Population Germany|key={{replace|{{{Gemeindeschlüssel|}}}| |}} }} +1 }} | {{{Einwohner|{{{population|}}} }}} | {{Population Germany|key={{replace|{{{Gemeindeschlüssel|}}}| |}} }} }} | population_as_of = {{#iferror: {{#expr: {{Population Germany|key={{replace|{{{Gemeindeschlüssel|}}}| |}} }} +1 }} | {{{population_as_of|{{{Stand|}}} }}} | {{Population Germany|key={{{Gemeindeschlüssel|}}}|datref=STAND}} }} | population_density_km2 = auto | population_urban = {{{pop_urban|}}} | population_metro = {{{pop_metro|}}} | population_demonym = {{{pop_demonym|{{{demonym|}}}}}} | timezone_link = Time in Germany | timezone1 = [[Central European Time|CET]] | utc_offset1 = +01:00 | timezone1_DST = [[Central European Summer Time|CEST]] | utc_offset1_DST = +02:00 | postal_code_type = [[Postal codes in Germany|Postal codes]] | postal_code = {{{PLZ|{{{postal_code|}}} }}} | area_code_type = [[List of dialling codes in Germany|Dialling codes]] | area_code = {{{Vorwahl|{{{area_code|}}} }}} | registration_plate = {{{Kfz|{{{licence|}}} }}} | website = {{{Website|{{{website|}}} }}} | footnotes = {{{footnotes|}}} }}<!-- error tracking categories -->{{#if: {{{coordinates|}}} | | {{ns0|[[Category:Germany articles requiring maintenance|C]]}} }}<!-- coordinates missing -->{{#ifeq: {{#expr: {{#expr: {{{Einwohner|{{{population|0}}} }}} round 0 }} = {{{Einwohner|{{{population|0}}} }}} }} | 0 | {{ns0|[[Category:Germany articles requiring maintenance|D]]}} | }}<!-- Assign to maintenance category if decimal point is used in population as a thousands divider -->{{#if: {{{City|}}} {{{Town|}}} {{{Municipality|}}} | {{#if: {{{Gemeindeschlüssel|}}} | {{ns0|[[Category:Germany articles requiring maintenance|T]]}} | }} }}<!-- Subdivisions of municipalities shouldn't have a Gemeindeschlüssel -->{{#iferror: {{#expr: {{Population Germany|key={{replace|{{{key|{{{Gemeindeschlüssel|}}} }}}| |}} }} + 1 }} | {{#if:{{{City|}}} {{{Town|}}} {{{Municipality|}}}{{{dissolved|}}} |<!-- OK, subdivisions of municipalities and dissolved units have no Gemeindeschlüssel --> | {{ns0|[[Category:Germany articles requiring maintenance|U]]}} }} | }}<!-- Town with missing or incorrect Gemeindeschlüssel -->{{#if: {{{Bundesland|{{{state|}}} }}} | | {{ns0|[[Category:Germany articles requiring maintenance|X]]}} }}<!-- Missing state name -->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox German place with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox German place]] with unknown parameter "_VALUE_"|ignoreblank=y| _noautocat | Amt | area | area_code | area_metro | Art | borough | Bundesland | Bürgermeister | Bürgermeistertitel | City | coordinates | demonym | dissolved | district | divisions | Einwohner | elevation | Fläche | footnotes | Gemeindeschlüssel | Gemeindeverwaltungsverband | German_name | Gliederung | Höhe | image_caption | image_coa | image_flag | image_photo | image_plan | image_skyline | imagesize | Kfz | Kreis | Lageplan | Lageplanbeschreibung | Landkreis | leader_term | licence | mayor | Municipality | name | Name | Partei | party | plantext | PLZ | pop_demonym | pop_metro | pop_ref | pop_urban | population | population_as_of | postal_code | regbzk | Regierungsbezirk | region | ruling_party1 | ruling_party2 | ruling_party3 | ruling_party4 | ruling_party5 | Samtgemeinde | Stand | state | Town | type | Verbandsgemeinde | Verwaltungsgemeinschaft | Verwaltungsverband | Vorwahl | Wappen | website | Website | year | year_of_first_mention }}<!-- Assignment to categories -->{{#if:{{{_noautocat|<noinclude>x</noinclude>}}}||<!-- (TYPE) in (STATE) -->{{#if:{{{City|}}}{{{Town|}}}{{{Municipality|}}} | | {{#switch: {{ucfirst:{{{Art|{{{type|}}}}}}}} | <!-- Filter for subdivisions for which no town etc. is given --> Ortsteil | Stadtteil | Suburb | Borough | Quarter | Bezirk | Stadtbezirk = {{ns0|[[Category:Germany articles requiring maintenance|Art]]}} | #default = {{#if:{{{Bundesland|{{{state|}}}}}}|{{ns0|[[Category:{{ #switch: {{ucfirst:{{{Art|{{{type|}}}}}}}} | Ortsgemeinde | Gemeinde | Markt | Municipality| municipality = Municipalities | Amt = Ämter | Gemeindeverwaltungsverband = Gemeindeverwaltungsverbände | Samtgemeinde = Samtgemeinden | Verbandsgemeinde = Verbandsgemeinde | Verwaltungsgemeinschaft = Verwaltungsgemeinschaften | Verwaltungsverband = Verwaltungsverbände | Former Verbandsgemeinde = Former Verbandsgemeinden | Stadt | Kreisfreie Stadt | [[Kreisfreie Stadt|Stadt]] | Town | town = Towns | City | city = Cities | Village | Dorf = Villages | #default = Municipalities }} in {{#switch: {{{Bundesland|{{{state|}}}}}} | Bayern | Bavaria | [[Bavaria]] = Bavaria | Baden-Wuerttemberg | Baden-Württemberg | [[Baden-Württemberg]] = Baden-Württemberg | Berlin | [[Berlin]] = Berlin | Brandenburg | [[Brandenburg]] = Brandenburg | Bremen | [[Bremen]] = Bremen (state) | Hamburg | [[Hamburg]] = Hamburg | Hessen | Hesse | [[Hesse]] = Hesse | Mecklenburg-Vorpommern | Mecklenburg-Western Pomerania | [[Mecklenburg-Vorpommern]] | [[Mecklenburg-Western Pomerania]] = Mecklenburg-Western Pomerania | Niedersachsen | Lower Saxony | [[Lower Saxony]] = Lower Saxony | Nordrhein-Westfalen | NRW | North Rhine-Westphalia | [[North Rhine-Westphalia]] = North Rhine-Westphalia | Rheinland-Pfalz | Rhineland-Palatinate | [[Rhineland-Palatinate]] = Rhineland-Palatinate | Saarland | [[Saarland]] = Saarland | Sachsen | Saxony | [[Saxony]] = Saxony | Sachsen-Anhalt | Saxony-Anhalt | [[Saxony-Anhalt]] = Saxony-Anhalt | Schleswig-Holstein | [[Schleswig-Holstein]] = Schleswig-Holstein | Thüringen | Thuringia | [[Thuringia]] = Thuringia }}]]}}}}}}}} }}{{#if:{{{Höhe|{{{elevation|}}}}}}|{{#ifeq:{{{Höhe|{{{elevation|}}}}}}|{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-|%1|plain=false}}||[[Category:Pages using infobox German place with an elevation range]] }} }}<noinclude> {{documentation}} </noinclude> 4e538171f3e5d4179053901bcdc7c08cdb636ae6 Module:Lua banner/doc 828 467 1269 2022-11-13T06:29:34Z wikipedia>Geraldo Perez 0 Reverted edits by [[Special:Contribs/200.68.143.95|200.68.143.95]] ([[User talk:200.68.143.95|talk]]) to last version by Izno wikitext text/x-wiki {{high use}} {{Lua|Module:Yesno|Module:List|Module:TableTools|Module:Message box}} This module implements the {{tl|lua}} template. == Usage from wikitext == This module cannot be used directly from wikitext. It can only be used through the {{tl|lua}} template. Please see the template page for documentation. == Usage from Lua modules == To use this module from other Lua modules, first load the module. <syntaxhighlight lang="lua"> local mLuaBanner = require('Module:Lua banner') </syntaxhighlight> You can then generate a side box using the _main function. <syntaxhighlight lang="lua"> mLuaBanner._main(args) </syntaxhighlight> The <var>args</var> variable should be a table containing the arguments to pass to the module. To see the different arguments that can be specified and how they affect the module output, please refer to the {{tl|lua}} template documentation. == Tracking category == * {{clc|Lua templates with errors}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories go here and interwikis go in Wikidata. --> [[Category:Modules that add a tracking category]] }}</includeonly> 864df985eac89c7dc7d6168d9235ff11b9f13b47 Template:Infobox U.S. Cabinet 10 1157 2483 2022-11-15T03:51:44Z 2600:1700:2390:D50:EC8A:721E:C824:39B4 0 wikitext text/x-wiki {{Infobox cabinet members | float = {{{align|right}}} | topimage = {{#invoke:InfoboxImage|InfoboxImage|image={{if empty|{{{image|}}}|{{{image name|}}}|{{{smallimage|}}}}}|size={{if empty|{{{image_size|}}}|{{{imagesize|}}}|{{{width|}}}}}|sizedefault=frameless|alt={{{alt|}}}|suppressplaceholder=yes}} | topcaptionstyle = font-size:smaller | topcaption = {{{caption|}}} | above = The {{{Name}}} cabinet{{{source|{{{Source|}}}}}} | border_color1 = #000 | office1 = [[President of the United States|President]] | politicalparty1a = {{{President party|}}} | name1a = {{{President|{{PAGENAMEBASE}}}}} | term1a = {{{President date|{{{President start}}}&ndash;{{{President end|}}} }}} | office2 = [[Vice President of the United States|Vice President]] | name2a = {{{Vice President}}} | term2a = {{{Vice President date|{{{Vice President start}}}&ndash;{{{Vice President end|}}} }}} | name2b = {{{Vice President 2|}}} | term2b = {{{Vice President date 2|{{{Vice President start 2}}}&ndash;{{{Vice President end 2|}}} }}} | name2c = {{{Vice President 3|}}} | term2c = {{{Vice President date 3|{{{Vice President start 3}}}&ndash;{{{Vice President end 3|}}} }}} | name2d = {{{Vice President 4|}}} | term2d = {{{Vice President date 4|{{{Vice President start 4}}}&ndash;{{{Vice President end 4|}}} }}} | border_color3 = #000 | office3 = [[United States Secretary of State|Secretary of State]] | name3a = {{{State|}}} | term3a = {{{State date|{{{State start}}}&ndash;{{{State end|}}} }}} | name3b = {{{State 2|}}} | term3b = {{{State date 2|{{{State start 2}}}&ndash;{{{State end 2|}}} }}} | name3c = {{{State 3|}}} | term3c = {{{State date 3|{{{State start 3}}}&ndash;{{{State end 3|}}} }}} | name3d = {{{State 4|}}} | term3d = {{{State date 4|{{{State start 4}}}&ndash;{{{State end 4|}}} }}} | name3e = {{{State 5|}}} | term3e = {{{State date 5|{{{State start 5}}}&ndash;{{{State end 5|}}} }}} | name3f = {{{State 6|}}} | term3f = {{{State date 6|{{{State start 6}}}&ndash;{{{State end 6|}}} }}} | name3g = {{{State 7|}}} | term3g = {{{State date 7|{{{State start 7}}}&ndash;{{{State end 7|}}} }}} | name3h = {{{State 8|}}} | term3h = {{{State date 8|{{{State start 8}}}&ndash;{{{State end 8|}}} }}} | office4 = [[United States Secretary of the Treasury|Secretary of the Treasury]] | name4a = {{{Treasury|}}} | term4a = {{{Treasury date|{{{Treasury start}}}&ndash;{{{Treasury end|}}} }}} | name4b = {{{Treasury 2|}}} | term4b = {{{Treasury date 2|{{{Treasury start 2}}}&ndash;{{{Treasury end 2|}}} }}} | name4c = {{{Treasury 3|}}} | term4c = {{{Treasury date 3|{{{Treasury start 3}}}&ndash;{{{Treasury end 3|}}} }}} | name4d = {{{Treasury 4|}}} | term4d = {{{Treasury date 4|{{{Treasury start 4}}}&ndash;{{{Treasury end 4|}}} }}} | name4e = {{{Treasury 5|}}} | term4e = {{{Treasury date 5|{{{Treasury start 5}}}&ndash;{{{Treasury end 5|}}} }}} | name4f = {{{Treasury 6|}}} | term4f = {{{Treasury date 6|{{{Treasury start 6}}}&ndash;{{{Treasury end 6|}}} }}} | name4g = {{{Treasury 7|}}} | term4g = {{{Treasury date 7|{{{Treasury start 7}}}&ndash;{{{Treasury end 7|}}} }}} | name4h = {{{Treasury 8|}}} | term4h = {{{Treasury date 8|{{{Treasury start 8}}}&ndash;{{{Treasury end 8|}}} }}} | office5 = [[United States Secretary of War|Secretary of War]] | name5a = {{{War|}}} | term5a = {{{War date|{{{War start}}}&ndash;{{{War end|}}} }}} | name5b = {{{War 2|}}} | term5b = {{{War date 2|{{{War start 2}}}&ndash;{{{War end 2|}}} }}} | name5c = {{{War 3|}}} | term5c = {{{War date 3|{{{War start 3}}}&ndash;{{{War end 3|}}} }}} | name5d = {{{War 4|}}} | term5d = {{{War date 4|{{{War start 4}}}&ndash;{{{War end 4|}}} }}} | name5e = {{{War 5|}}} | term5e = {{{War date 5|{{{War start 5}}}&ndash;{{{War end 5|}}} }}} | office6 = [[United States Secretary of Defense|Secretary of Defense]] | name6a = {{{Defense|}}} | term6a = {{{Defense date|{{{Defense start}}}&ndash;{{{Defense end|}}} }}} | name6b = {{{Defense 2|}}} | term6b = {{{Defense date 2|{{{Defense start 2}}}&ndash;{{{Defense end 2|}}} }}} | name6c = {{{Defense 3|}}} | term6c = {{{Defense date 3|{{{Defense start 3}}}&ndash;{{{Defense end 3|}}} }}} | name6d = {{{Defense 4|}}} | term6d = {{{Defense date 4|{{{Defense start 4}}}&ndash;{{{Defense end 4|}}} }}} | name6e = {{{Defense 5|}}} | term6e = {{{Defense date 5|{{{Defense start 5}}}&ndash;{{{Defense end 5|}}} }}} | name6f = {{{Defense 6|}}} | term6f = {{{Defense date 6|{{{Defense start 6}}}&ndash;{{{Defense end 6|}}} }}} | name6g = {{{Defense 7|}}} | term6g = {{{Defense date 7|{{{Defense start 7}}}&ndash;{{{Defense end 7|}}} }}} | name6h = {{{Defense 8|}}} | term6h = {{{Defense date 8|{{{Defense start 8}}}&ndash;{{{Defense end 8|}}} }}} | office7 = [[United States Secretary of the Army|Secretary of the Army]] | name7a = {{{Army|}}} | term7a = {{{Army date|{{{Army start}}}&ndash;{{{Army end|}}} }}} | name7b = {{{Army 2|}}} | term7b = {{{Army date 2|{{{Army start 2}}}&ndash;{{{Army end 2|}}} }}} | office8 = [[United States Secretary of the Air Force|Secretary of the Air Force]] | name8a = {{{Air Force|}}} | term8a = {{{Air Force date|{{{Air Force start}}}&ndash;{{{Air Force end|}}} }}} | office9 = [[United States Attorney General|Attorney General]] | name9a = {{{Justice|}}} | term9a = {{{Justice date|{{{Justice start}}}&ndash;{{{Justice end|}}} }}} | name9b = {{{Justice 2|}}} | term9b = {{{Justice date 2|{{{Justice start 2}}}&ndash;{{{Justice end 2|}}} }}} | name9c = {{{Justice 3|}}} | term9c = {{{Justice date 3|{{{Justice start 3}}}&ndash;{{{Justice end 3|}}} }}} | name9d = {{{Justice 4|}}} | term9d = {{{Justice date 4|{{{Justice start 4}}}&ndash;{{{Justice end 4|}}} }}} | name9e = {{{Justice 5|}}} | term9e = {{{Justice date 5|{{{Justice start 5}}}&ndash;{{{Justice end 5|}}} }}} | name9f = {{{Justice 6|}}} | term9f = {{{Justice date 6|{{{Justice start 6}}}&ndash;{{{Justice end 6|}}} }}} | name9g = {{{Justice 7|}}} | term9g = {{{Justice date 7|{{{Justice start 7}}}&ndash;{{{Justice end 7|}}} }}} | name9h = {{{Justice 8|}}} | term9h = {{{Justice date 8|{{{Justice start 8}}}&ndash;{{{Justice end 8|}}} }}} | office10 = [[United States Postmaster General|Postmaster General]] | name10a = {{{Post|}}} | term10a = {{{Post date|{{{Post start}}}&ndash;{{{Post end|}}} }}} | name10b = {{{Post 2|}}} | term10b = {{{Post date 2|{{{Post start 2}}}&ndash;{{{Post end 2|}}} }}} | name10c = {{{Post 3|}}} | term10c = {{{Post date 3|{{{Post start 3}}}&ndash;{{{Post end 3|}}} }}} | name10d = {{{Post 4|}}} | term10d = {{{Post date 4|{{{Post start 4}}}&ndash;{{{Post end 4|}}} }}} | name10e = {{{Post 5|}}} | term10e = {{{Post date 5|{{{Post start 5}}}&ndash;{{{Post end 5|}}} }}} | office11 = [[United States Secretary of the Navy|Secretary of the Navy]] | name11a = {{{Navy|}}} | term11a = {{{Navy date|{{{Navy start}}}&ndash;{{{Navy end|}}} }}} | name11b = {{{Navy 2|}}} | term11b = {{{Navy date 2|{{{Navy start 2}}}&ndash;{{{Navy end 2|}}} }}} | name11c = {{{Navy 3|}}} | term11c = {{{Navy date 3|{{{Navy start 3}}}&ndash;{{{Navy end 3|}}} }}} | name11d = {{{Navy 4|}}} | term11d = {{{Navy date 4|{{{Navy start 4}}}&ndash;{{{Navy end 4|}}} }}} | name11e = {{{Navy 5|}}} | term11e = {{{Navy date 5|{{{Navy start 5}}}&ndash;{{{Navy end 5|}}} }}} | name11f = {{{Navy 6|}}} | term11f = {{{Navy date 6|{{{Navy start 6}}}&ndash;{{{Navy end 6|}}} }}} | office12 = [[United States Secretary of the Interior|Secretary of the Interior]] | name12a = {{{Interior|}}} | term12a = {{{Interior date|{{{Interior start}}}&ndash;{{{Interior end|}}} }}} | name12b = {{{Interior 2|}}} | term12b = {{{Interior date 2|{{{Interior start 2}}}&ndash;{{{Interior end 2|}}} }}} | name12c = {{{Interior 3|}}} | term12c = {{{Interior date 3|{{{Interior start 3}}}&ndash;{{{Interior end 3|}}} }}} | name12d = {{{Interior 4|}}} | term12d = {{{Interior date 4|{{{Interior start 4}}}&ndash;{{{Interior end 4|}}} }}} | name12e = {{{Interior 5|}}} | term12e = {{{Interior date 5|{{{Interior start 5}}}&ndash;{{{Interior end 5|}}} }}} | name12f = {{{Interior 6|}}} | term12f = {{{Interior date 6|{{{Interior start 6}}}&ndash;{{{Interior end 6|}}} }}} | name12g = {{{Interior 7|}}} | term12g = {{{Interior date 7|{{{Interior start 7}}}&ndash;{{{Interior end 7|}}} }}} | name12h = {{{Interior 8|}}} | term12h = {{{Interior date 8|{{{Interior start 8}}}&ndash;{{{Interior end 8|}}} }}} | office13 = [[United States Secretary of Agriculture|Secretary of Agriculture]] | name13a = {{{Agriculture|}}} | term13a = {{{Agriculture date|{{{Agriculture start}}}&ndash;{{{Agriculture end|}}} }}} | name13b = {{{Agriculture 2|}}} | term13b = {{{Agriculture date 2|{{{Agriculture start 2}}}&ndash;{{{Agriculture end 2|}}} }}} | name13c = {{{Agriculture 3|}}} | term13c = {{{Agriculture date 3|{{{Agriculture start 3}}}&ndash;{{{Agriculture end 3|}}} }}} | name13d = {{{Agriculture 4|}}} | term13d = {{{Agriculture date 4|{{{Agriculture start 4}}}&ndash;{{{Agriculture end 4|}}} }}} | name13e = {{{Agriculture 5|}}} | term13e = {{{Agriculture date 5|{{{Agriculture start 5}}}&ndash;{{{Agriculture end 5|}}} }}} | name13f = {{{Agriculture 6|}}} | term13f = {{{Agriculture date 6|{{{Agriculture start 6}}}&ndash;{{{Agriculture end 6|}}} }}} | name13g = {{{Agriculture 7|}}} | term13g = {{{Agriculture date 7|{{{Agriculture start 7}}}&ndash;{{{Agriculture end 7|}}} }}} | name13h = {{{Agriculture 8|}}} | term13h = {{{Agriculture date 8|{{{Agriculture start 8}}}&ndash;{{{Agriculture end 8|}}} }}} | office14 = [[United States Department of Commerce and Labor|Secretary of Commerce and Labor]] | name14a = {{{CommerceLabor|}}} | term14a = {{{CommerceLabor date|{{{CommerceLabor start}}}&ndash;{{{CommerceLabor end|}}} }}} | name14b = {{{CommerceLabor 2|}}} | term14b = {{{CommerceLabor date 2|{{{CommerceLabor start 2}}}&ndash;{{{CommerceLabor end 2|}}} }}} | name14c = {{{CommerceLabor 3|}}} | term14c = {{{CommerceLabor date 3|{{{CommerceLabor start 3}}}&ndash;{{{CommerceLabor end 3|}}} }}} | name14d = {{{CommerceLabor 4|}}} | term14d = {{{CommerceLabor date 4|{{{CommerceLabor start 4}}}&ndash;{{{CommerceLabor end 4|}}} }}} | office15 = [[United States Secretary of Commerce|Secretary of Commerce]] | name15a = {{{Commerce|}}} | term15a = {{{Commerce date|{{{Commerce start}}}&ndash;{{{Commerce end|}}} }}} | name15b = {{{Commerce 2|}}} | term15b = {{{Commerce date 2|{{{Commerce start 2}}}&ndash;{{{Commerce end 2|}}} }}} | name15c = {{{Commerce 3|}}} | term15c = {{{Commerce date 3|{{{Commerce start 3}}}&ndash;{{{Commerce end 3|}}} }}} | name15d = {{{Commerce 4|}}} | term15d = {{{Commerce date 4|{{{Commerce start 4}}}&ndash;{{{Commerce end 4|}}} }}} | name15e = {{{Commerce 5|}}} | term15e = {{{Commerce date 5|{{{Commerce start 5}}}&ndash;{{{Commerce end 5|}}} }}} | name15f = {{{Commerce 6|}}} | term15f = {{{Commerce date 6|{{{Commerce start 6}}}&ndash;{{{Commerce end 6|}}} }}} | name15g = {{{Commerce 7|}}} | term15g = {{{Commerce date 7|{{{Commerce start 7}}}&ndash;{{{Commerce end 7|}}} }}} | name15h = {{{Commerce 8|}}} | term15h = {{{Commerce date 8|{{{Commerce start 8}}}&ndash;{{{Commerce end 8|}}} }}} | office16 = [[United States Secretary of Labor|Secretary of Labor]] | name16a = {{{Labor|}}} | term16a = {{{Labor date|{{{Labor start}}}&ndash;{{{Labor end|}}} }}} | name16b = {{{Labor 2|}}} | term16b = {{{Labor date 2|{{{Labor start 2}}}&ndash;{{{Labor end 2|}}} }}} | name16c = {{{Labor 3|}}} | term16c = {{{Labor date 3|{{{Labor start 3}}}&ndash;{{{Labor end 3|}}} }}} | name16d = {{{Labor 4|}}} | term16d = {{{Labor date 4|{{{Labor start 4}}}&ndash;{{{Labor end 4|}}} }}} | name16e = {{{Labor 5|}}} | term16e = {{{Labor date 5|{{{Labor start 5}}}&ndash;{{{Labor end 5|}}} }}} | name16f = {{{Labor 6|}}} | term16f = {{{Labor date 6|{{{Labor start 6}}}&ndash;{{{Labor end 6|}}} }}} | name16g = {{{Labor 7|}}} | term16g = {{{Labor date 7|{{{Labor start 7}}}&ndash;{{{Labor end 7|}}} }}} | name16h = {{{Labor 8|}}} | term16h = {{{Labor date 8|{{{Labor start 8}}}&ndash;{{{Labor end 8|}}} }}} | office17 = [[United States Secretary of Health and Human Services|Secretary of Health,<br />Education, and Welfare]] | name17a = {{{Health, Education, and Welfare|}}} | term17a = {{{Health, Education, and Welfare date|{{{Health, Education, and Welfare start}}}&ndash;{{{Health, Education, and Welfare end|}}} }}} | name17b = {{{Health, Education, and Welfare 2|}}} | term17b = {{{Health, Education, and Welfare date 2|{{{Health, Education, and Welfare start 2}}}&ndash;{{{Health, Education, and Welfare end 2|}}} }}} | name17c = {{{Health, Education, and Welfare 3|}}} | term17c = {{{Health, Education, and Welfare date 3|{{{Health, Education, and Welfare start 3}}}&ndash;{{{Health, Education, and Welfare end 3|}}} }}} | name17d = {{{Health, Education, and Welfare 4|}}} | term17d = {{{Health, Education, and Welfare date 4|{{{Health, Education, and Welfare start 4}}}&ndash;{{{Health, Education, and Welfare end 4|}}} }}} | office18 = [[United States Secretary of Health and Human Services|Secretary of Health and<br />Human Services]] | name18a = {{{Health and Human Services|}}} | term18a = {{{Health and Human Services date|{{{Health and Human Services start}}}&ndash;{{{Health and Human Services end|}}} }}} | name18b = {{{Health and Human Services 2|}}} | term18b = {{{Health and Human Services date 2|{{{Health and Human Services start 2}}}&ndash;{{{Health and Human Services end 2|}}} }}} | name18c = {{{Health and Human Services 3|}}} | term18c = {{{Health and Human Services date 3|{{{Health and Human Services start 3}}}&ndash;{{{Health and Human Services end 3|}}} }}} | name18d = {{{Health and Human Services 4|}}} | term18d = {{{Health and Human Services date 4|{{{Health and Human Services start 4}}}&ndash;{{{Health and Human Services end 4|}}} }}} | name18e = {{{Health and Human Services 5|}}} | term18e = {{{Health and Human Services date 5|{{{Health and Human Services start 5}}}&ndash;{{{Health and Human Services end 5|}}} }}} | name18f = {{{Health and Human Services 6|}}} | term18f = {{{Health and Human Services date 6|{{{Health and Human Services start 6}}}&ndash;{{{Health and Human Services end 6|}}} }}} | name18g = {{{Health and Human Services 7|}}} | term18g = {{{Health and Human Services date 7|{{{Health and Human Services start 7}}}&ndash;{{{Health and Human Services end 7|}}} }}} | name18h = {{{Health and Human Services 8|}}} | term18h = {{{Health and Human Services date 8|{{{Health and Human Services start 8}}}&ndash;{{{Health and Human Services end 8|}}} }}} | office19 = [[United States Secretary of Housing and Urban Development|Secretary of Housing and<br />Urban Development]] | name19a = {{{Housing and Urban Development|}}} | term19a = {{{Housing and Urban Development date|{{{Housing and Urban Development start}}}&ndash;{{{Housing and Urban Development end|}}} }}} | name19b = {{{Housing and Urban Development 2|}}} | term19b = {{{Housing and Urban Development date 2|{{{Housing and Urban Development start 2}}}&ndash;{{{Housing and Urban Development end 2|}}} }}} | name19c = {{{Housing and Urban Development 3|}}} | term19c = {{{Housing and Urban Development date 3|{{{Housing and Urban Development start 3}}}&ndash;{{{Housing and Urban Development end 3|}}} }}} | name19d = {{{Housing and Urban Development 4|}}} | term19d = {{{Housing and Urban Development date 4|{{{Housing and Urban Development start 4}}}&ndash;{{{Housing and Urban Development end 4|}}} }}} | name19e = {{{Housing and Urban Development 5|}}} | term19e = {{{Housing and Urban Development date 5|{{{Housing and Urban Development start 5}}}&ndash;{{{Housing and Urban Development end 5|}}} }}} | name19f = {{{Housing and Urban Development 6|}}} | term19f = {{{Housing and Urban Development date 6|{{{Housing and Urban Development start 6}}}&ndash;{{{Housing and Urban Development end 6|}}} }}} | name19g = {{{Housing and Urban Development 7|}}} | term19g = {{{Housing and Urban Development date 7|{{{Housing and Urban Development start 7}}}&ndash;{{{Housing and Urban Development end 7|}}} }}} | name19h = {{{Housing and Urban Development 8|}}} | term19h = {{{Housing and Urban Development date 8|{{{Housing and Urban Development start 8}}}&ndash;{{{Housing and Urban Development end 8|}}} }}} | office20 = [[United States Secretary of Transportation|Secretary of Transportation]] | name20a = {{{Transportation|}}} | term20a = {{{Transportation date|{{{Transportation start}}}&ndash;{{{Transportation end|}}} }}} | name20b = {{{Transportation 2|}}} | term20b = {{{Transportation date 2|{{{Transportation start 2}}}&ndash;{{{Transportation end 2|}}} }}} | name20c = {{{Transportation 3|}}} | term20c = {{{Transportation date 3|{{{Transportation start 3}}}&ndash;{{{Transportation end 3|}}} }}} | name20d = {{{Transportation 4|}}} | term20d = {{{Transportation date 4|{{{Transportation start 4}}}&ndash;{{{Transportation end 4|}}} }}} | name20e = {{{Transportation 5|}}} | term20e = {{{Transportation date 5|{{{Transportation start 5}}}&ndash;{{{Transportation end 5|}}} }}} | name20f = {{{Transportation 6|}}} | term20f = {{{Transportation date 6|{{{Transportation start 6}}}&ndash;{{{Transportation end 6|}}} }}} | name20g = {{{Transportation 7|}}} | term20g = {{{Transportation date 7|{{{Transportation start 7}}}&ndash;{{{Transportation end 7|}}} }}} | name20h = {{{Transportation 8|}}} | term20h = {{{Transportation date 8|{{{Transportation start 8}}}&ndash;{{{Transportation end 8|}}} }}} | office21 = [[United States Secretary of Energy|Secretary of Energy]] | name21a = {{{Energy|}}} | term21a = {{{Energy date|{{{Energy start}}}&ndash;{{{Energy end|}}} }}} | name21b = {{{Energy 2|}}} | term21b = {{{Energy date 2|{{{Energy start 2}}}&ndash;{{{Energy end 2|}}} }}} | name21c = {{{Energy 3|}}} | term21c = {{{Energy date 3|{{{Energy start 3}}}&ndash;{{{Energy end 3|}}} }}} | name21d = {{{Energy 4|}}} | term21d = {{{Energy date 4|{{{Energy start 4}}}&ndash;{{{Energy end 4|}}} }}} | name21e = {{{Energy 5|}}} | term21e = {{{Energy date 5|{{{Energy start 5}}}&ndash;{{{Energy end 5|}}} }}} | name21f = {{{Energy 6|}}} | term21f = {{{Energy date 6|{{{Energy start 6}}}&ndash;{{{Energy end 6|}}} }}} | name21g = {{{Energy 7|}}} | term21g = {{{Energy date 7|{{{Energy start 7}}}&ndash;{{{Energy end 7|}}} }}} | name21h = {{{Energy 8|}}} | term21h = {{{Energy date 8|{{{Energy start 8}}}&ndash;{{{Energy end 8|}}} }}} | office22 = [[United States Secretary of Education|Secretary of Education]] | name22a = {{{Education|}}} | term22a = {{{Education date|{{{Education start}}}&ndash;{{{Education end|}}} }}} | name22b = {{{Education 2|}}} | term22b = {{{Education date 2|{{{Education start 2}}}&ndash;{{{Education end 2|}}} }}} | name22c = {{{Education 3|}}} | term22c = {{{Education date 3|{{{Education start 3}}}&ndash;{{{Education end 3|}}} }}} | name22d = {{{Education 4|}}} | term22d = {{{Education date 4|{{{Education start 4}}}&ndash;{{{Education end 4|}}} }}} | name22e = {{{Education 5|}}} | term22e = {{{Education date 5|{{{Education start 5}}}&ndash;{{{Education end 5|}}} }}} | name22f = {{{Education 6|}}} | term22f = {{{Education date 6|{{{Education start 6}}}&ndash;{{{Education end 6|}}} }}} | name22g = {{{Education 7|}}} | term22g = {{{Education date 7|{{{Education start 7}}}&ndash;{{{Education end 7|}}} }}} | name22h = {{{Education 8|}}} | term22h = {{{Education date 8|{{{Education start 8}}}&ndash;{{{Education end 8|}}} }}} | office23 = [[United States Secretary of Veterans Affairs|Secretary of Veterans Affairs]] | name23a = {{{Veterans Affairs|}}} | term23a = {{{Veterans Affairs date|{{{Veterans Affairs start}}}&ndash;{{{Veterans Affairs end|}}} }}} | name23b = {{{Veterans Affairs 2|}}} | term23b = {{{Veterans Affairs date 2|{{{Veterans Affairs start 2}}}&ndash;{{{Veterans Affairs end 2|}}} }}} | name23c = {{{Veterans Affairs 3|}}} | term23c = {{{Veterans Affairs date 3|{{{Veterans Affairs start 3}}}&ndash;{{{Veterans Affairs end 3|}}} }}} | name23d = {{{Veterans Affairs 4|}}} | term23d = {{{Veterans Affairs date 4|{{{Veterans Affairs start 4}}}&ndash;{{{Veterans Affairs end 4|}}} }}} | name23e = {{{Veterans Affairs 5|}}} | term23e = {{{Veterans Affairs date 5|{{{Veterans Affairs start 5}}}&ndash;{{{Veterans Affairs end 5|}}} }}} | name23f = {{{Veterans Affairs 6|}}} | term23f = {{{Veterans Affairs date 6|{{{Veterans Affairs start 6}}}&ndash;{{{Veterans Affairs end 6|}}} }}} | name23g = {{{Veterans Affairs 7|}}} | term23g = {{{Veterans Affairs date 7|{{{Veterans Affairs start 7}}}&ndash;{{{Veterans Affairs end 7|}}} }}} | name23h = {{{Veterans Affairs 8|}}} | term23h = {{{Veterans Affairs date 8|{{{Veterans Affairs start 8}}}&ndash;{{{Veterans Affairs end 8|}}} }}} | office24 = [[United States Secretary of Homeland Security|Secretary of Homeland Security]] | name24a = {{{Homeland Security|}}} | term24a = {{{Homeland Security date|{{{Homeland Security start}}}&ndash;{{{Homeland Security end|}}} }}} | name24b = {{{Homeland Security 2|}}} | term24b = {{{Homeland Security date 2|{{{Homeland Security start 2}}}&ndash;{{{Homeland Security end 2|}}} }}} | name24c = {{{Homeland Security 3|}}} | term24c = {{{Homeland Security date 3|{{{Homeland Security start 3}}}&ndash;{{{Homeland Security end 3|}}} }}} | name24d = {{{Homeland Security 4|}}} | term24d = {{{Homeland Security date 4|{{{Homeland Security start 4}}}&ndash;{{{Homeland Security end 4|}}} }}} | name24e = {{{Homeland Security 5|}}} | term24e = {{{Homeland Security date 5|{{{Homeland Security start 5}}}&ndash;{{{Homeland Security end 5|}}} }}} | name24f = {{{Homeland Security 6|}}} | term24f = {{{Homeland Security date 6|{{{Homeland Security start 6}}}&ndash;{{{Homeland Security end 6|}}} }}} | name24g = {{{Homeland Security 7|}}} | term24g = {{{Homeland Security date 7|{{{Homeland Security start 7}}}&ndash;{{{Homeland Security end 7|}}} }}} | name24h = {{{Homeland Security 8|}}} | term24h = {{{Homeland Security date 8|{{{Homeland Security start 8}}}&ndash;{{{Homeland Security end 8|}}} }}} | office25 = [[Administrator of the Environmental Protection Agency|Administrator of the<br />Environmental Protection Agency]] | name25a = {{{Environmental Protection|}}} | term25a = {{{Environmental Protection date|{{{Environmental Protection start}}}&ndash;{{{Environmental Protection end|}}} }}} | name25b = {{{Environmental Protection 2|}}} | term25b = {{{Environmental Protection date 2|{{{Environmental Protection start 2}}}&ndash;{{{Environmental Protection end 2|}}} }}} | name25c = {{{Environmental Protection 3|}}} | term25c = {{{Environmental Protection date 3|{{{Environmental Protection start 3}}}&ndash;{{{Environmental Protection end 3|}}} }}} | name25d = {{{Environmental Protection 4|}}} | term25d = {{{Environmental Protection date 4|{{{Environmental Protection start 4}}}&ndash;{{{Environmental Protection end 4|}}} }}} | name25e = {{{Environmental Protection 5|}}} | term25e = {{{Environmental Protection date 5|{{{Environmental Protection start 5}}}&ndash;{{{Environmental Protection end 5|}}} }}} | name25f = {{{Environmental Protection 6|}}} | term25f = {{{Environmental Protection date 6|{{{Environmental Protection start 6}}}&ndash;{{{Environmental Protection end 6|}}} }}} | name25g = {{{Environmental Protection 7|}}} | term25g = {{{Environmental Protection date 7|{{{Environmental Protection start 7}}}&ndash;{{{Environmental Protection end 7|}}} }}} | name25h = {{{Environmental Protection 8|}}} | term25h = {{{Environmental Protection date 8|{{{Environmental Protection start 8}}}&ndash;{{{Environmental Protection end 8|}}} }}} | office26 = [[Office of Management and Budget|Director of the<br />Bureau of the Budget]] | name26a = {{{Bureau of the Budget|}}} | term26a = {{{Bureau of the Budget date|{{{Bureau of the Budget start}}}&ndash;{{{Bureau of the Budget end|}}} }}} | name26b = {{{Bureau of the Budget 2|}}} | term26b = {{{Bureau of the Budget date 2|{{{Bureau of the Budget start 2}}}&ndash;{{{Bureau of the Budget end 2|}}} }}} | name26c = {{{Bureau of the Budget 3|}}} | term26c = {{{Bureau of the Budget date 3|{{{Bureau of the Budget start 3}}}&ndash;{{{Bureau of the Budget end 3|}}} }}} | name26d = {{{Bureau of the Budget 4|}}} | term26d = {{{Bureau of the Budget date 4|{{{Bureau of the Budget start 4}}}&ndash;{{{Bureau of the Budget end 4|}}} }}} | office27 = [[Office of Management and Budget|Director of the Office of<br />Management and Budget]] | name27a = {{{Management and Budget|}}} | term27a = {{{Management and Budget date|{{{Management and Budget start}}}&ndash;{{{Management and Budget end|}}} }}} | name27b = {{{Management and Budget 2|}}} | term27b = {{{Management and Budget date 2|{{{Management and Budget start 2}}}&ndash;{{{Management and Budget end 2|}}} }}} | name27c = {{{Management and Budget 3|}}} | term27c = {{{Management and Budget date 3|{{{Management and Budget start 3}}}&ndash;{{{Management and Budget end 3|}}} }}} | name27d = {{{Management and Budget 4|}}} | term27d = {{{Management and Budget date 4|{{{Management and Budget start 4}}}&ndash;{{{Management and Budget end 4|}}} }}} | name27e = {{{Management and Budget 5|}}} | term27e = {{{Management and Budget date 5|{{{Management and Budget start 5}}}&ndash;{{{Management and Budget end 5|}}} }}} | name27f = {{{Management and Budget 6|}}} | term27f = {{{Management and Budget date 6|{{{Management and Budget start 6}}}&ndash;{{{Management and Budget end 6|}}} }}} | name27g = {{{Management and Budget 7|}}} | term27g = {{{Management and Budget date 7|{{{Management and Budget start 7}}}&ndash;{{{Management and Budget end 7|}}} }}} | name27h = {{{Management and Budget 8|}}} | term27h = {{{Management and Budget date 8|{{{Management and Budget start 8}}}&ndash;{{{Management and Budget end 8|}}} }}} | office28 = [[Director of Central Intelligence|Director of Central Intelligence]] | name28a = {{{DCI|}}} | term28a = {{{DCI date|{{{DCI start}}}&ndash;{{{DCI end|}}} }}} | name28b = {{{DCI 2|}}} | term28b = {{{DCI date 2|{{{DCI start 2}}}&ndash;{{{DCI end 2|}}} }}} | name28c = {{{DCI 3|}}} | term28c = {{{DCI date 3|{{{DCI start 3}}}&ndash;{{{DCI end 3|}}} }}} | office29 = [[Director of National Intelligence|Director of National Intelligence]] | name29a = {{{DNI|}}} | term29a = {{{DNI date|{{{DNI start}}}&ndash;{{{DNI end|}}} }}} | name29b = {{{DNI 2|}}} | term29b = {{{DNI date 2|{{{DNI start 2}}}&ndash;{{{DNI end 2|}}} }}} | name29c = {{{DNI 3|}}} | term29c = {{{DNI date 3|{{{DNI start 3}}}&ndash;{{{DNI end 3|}}} }}} | name29d = {{{DNI 4|}}} | term29d = {{{DNI date 4|{{{DNI start 4}}}&ndash;{{{DNI end 4|}}} }}} | office30 = [[Director of the Central Intelligence Agency|Director of the<br />Central Intelligence Agency]] | name30a = {{{CIA|}}} | term30a = {{{CIA date|{{{CIA start}}}&ndash;{{{CIA end|}}} }}} | name30b = {{{CIA 2|}}} | term30b = {{{CIA date 2|{{{CIA start 2}}}&ndash;{{{CIA end 2|}}} }}} | name30c = {{{CIA 3|}}} | term30c = {{{CIA date 3|{{{CIA start 3}}}&ndash;{{{CIA end 3|}}} }}} | name30d = {{{CIA 4|}}} | term30d = {{{CIA date 4|{{{CIA start 4}}}&ndash;{{{CIA end 4|}}} }}} | office31 = [[Office of the United States Trade Representative|United States Trade Representative]] | name31a = {{{Trade|}}} | term31a = {{{Trade date|{{{Trade start}}}&ndash;{{{Trade end|}}} }}} | name31b = {{{Trade 2|}}} | term31b = {{{Trade date 2|{{{Trade start 2}}}&ndash;{{{Trade end 2|}}} }}} | name31c = {{{Trade 3|}}} | term31c = {{{Trade date 3|{{{Trade start 3}}}&ndash;{{{Trade end 3|}}} }}} | name31d = {{{Trade 4|}}} | term31d = {{{Trade date 4|{{{Trade start 4}}}&ndash;{{{Trade end 4|}}} }}} | office32 = [[List of ambassadors of the United States to the United Nations|Ambassador to the United Nations]] | name32a = {{{Ambassador to the United Nations|}}} | term32a = {{{Ambassador to the United Nations date|{{{Ambassador to the United Nations start}}}&ndash;{{{Ambassador to the United Nations end|}}} }}} | name32b = {{{Ambassador to the United Nations 2|}}} | term32b = {{{Ambassador to the United Nations date 2|{{{Ambassador to the United Nations start 2}}}&ndash;{{{Ambassador to the United Nations end 2|}}} }}} | name32c = {{{Ambassador to the United Nations 3|}}} | term32c = {{{Ambassador to the United Nations date 3|{{{Ambassador to the United Nations start 3}}}&ndash;{{{Ambassador to the United Nations end 3|}}} }}} | name32d = {{{Ambassador to the United Nations 4|}}} | term32d = {{{Ambassador to the United Nations date 4|{{{Ambassador to the United Nations start 4}}}&ndash;{{{Ambassador to the United Nations end 4|}}} }}} | office33 = [[Mutual Security Agency|Director of the<br />Mutual Security Agency]] | name33a = {{{Mutual Security Agency|}}} | term33a = {{{Mutual Security Agency date|{{{Mutual Security Agency start}}}&ndash;{{{Mutual Security Agency end|}}} }}} | office34 = [[National Security Advisor (United States)|National Security Advisor]] | name34a = {{{National Security|}}} | term34a = {{{National Security date|{{{National Security start}}}&ndash;{{{National Security end|}}} }}} | name34b = {{{National Security 2|}}} | term34b = {{{National Security date 2|{{{National Security start 2}}}&ndash;{{{National Security end 2|}}} }}} | name34c = {{{National Security 3|}}} | term34c = {{{National Security date 3|{{{National Security start 3}}}&ndash;{{{National Security end 3|}}} }}} | name34d = {{{National Security 4|}}} | term34d = {{{National Security date 4|{{{National Security start 4}}}&ndash;{{{National Security end 4|}}} }}} | office35 = [[Council of Economic Advisers|Chair of the<br />Council of Economic Advisers]] | name35a = {{{Economic Advisers|}}} | term35a = {{{Economic Advisers date|{{{Economic Advisers start}}}&ndash;{{{Economic Advisers end|}}} }}} | name35b = {{{Economic Advisers 2|}}} | term35b = {{{Economic Advisers date 2|{{{Economic Advisers start 2}}}&ndash;{{{Economic Advisers end 2|}}} }}} | name35c = {{{Economic Advisers 3|}}} | term35c = {{{Economic Advisers date 3|{{{Economic Advisers start 3}}}&ndash;{{{Economic Advisers end 3|}}} }}} | name35d = {{{Economic Advisers 4|}}} | term35d = {{{Economic Advisers date 4|{{{Economic Advisers start 4}}}&ndash;{{{Economic Advisers end 4|}}} }}} | office36 = [[Administrator of the Small Business Administration|Administrator of the<br />Small Business Administration]] | name36a = {{{Administrator of the Small Business Administration|}}} | term36a = {{{Administrator of the Small Business Administration date|{{{Administrator of the Small Business Administration start}}}&ndash;{{{Administrator of the Small Business Administration end|}}} }}} | name36b = {{{Administrator of the Small Business Administration 2|}}} | term36b = {{{Administrator of the Small Business Administration date 2|{{{Administrator of the Small Business Administration start 2}}}&ndash;{{{Administrator of the Small Business Administration end 2|}}} }}} | name36c = {{{Administrator of the Small Business Administration 3|}}} | term36c = {{{Administrator of the Small Business Administration date 3|{{{Administrator of the Small Business Administration start 3}}}&ndash;{{{Administrator of the Small Business Administration end 3|}}} }}} | name36d = {{{Administrator of the Small Business Administration 4|}}} | term36d = {{{Administrator of the Small Business Administration date 4|{{{Administrator of the Small Business Administration start 4}}}&ndash;{{{Administrator of the Small Business Administration end 4|}}} }}} | office37 = [[Office of Defense Mobilization|Director of the Office of<br />Defense Mobilization]] | name37a = {{{Office of Defense Mobilization|}}} | term37a = {{{Office of Defense Mobilization date|{{{Office of Defense Mobilization start}}}&ndash;{{{Office of Defense Mobilization end|}}} }}} | name37b = {{{Office of Defense Mobilization 2|}}} | term37b = {{{Office of Defense Mobilization date 2|{{{Office of Defense Mobilization start 2}}}&ndash;{{{Office of Defense Mobilization end 2|}}} }}} | office38 = [[Federal Civil Defense Administration|Administrator of the Federal<br />Civil Defense Administration]] | name38a = {{{Federal Civil Defense Administration|}}} | term38a = {{{Federal Civil Defense Administration date|{{{Federal Civil Defense Administration start}}}&ndash;{{{Federal Civil Defense Administration end|}}} }}} | name38b = {{{Federal Civil Defense Administration 2|}}} | term38b = {{{Federal Civil Defense Administration date 2|{{{Federal Civil Defense Administration start 2}}}&ndash;{{{Federal Civil Defense Administration end 2|}}} }}} | office39 = [[Office of Civil and Defense Mobilization|Director of the Office of<br />Civil and Defense Mobilization]] | name39a = {{{Office of Civil and Defense Mobilization|}}} | term39a = {{{Office of Civil and Defense Mobilization date|{{{Office of Civil and Defense Mobilization start}}}&ndash;{{{Office of Civil and Defense Mobilization end|}}} }}} | office40 = [[Federal Emergency Management Agency|Director of the Federal<br />Emergency Management Agency]] | name40a = {{{FEMA|}}} | term40a = {{{FEMA date|{{{FEMA start}}}&ndash;{{{FEMA end|}}} }}} | office41 = [[United States Atomic Energy Commission|Chair of the<br />Atomic Energy Commission]] | name41a = {{{Atomic Energy Commission|}}} | term41a = {{{Atomic Energy Commission date|{{{Atomic Energy Commission start}}}&ndash;{{{Atomic Energy Commission end|}}} }}} | name41b = {{{Atomic Energy Commission 2|}}} | term41b = {{{Atomic Energy Commission date 2|{{{Atomic Energy Commission start 2}}}&ndash;{{{Atomic Energy Commission end 2|}}} }}} | name41c = {{{Atomic Energy Commission 3|}}} | term41c = {{{Atomic Energy Commission date 3|{{{Atomic Energy Commission start 3}}}&ndash;{{{Atomic Energy Commission end 3|}}} }}} | office42 = [[Office of National Drug Control Policy|Director of the Office of<br />National Drug Control Policy]] | name42a = {{{National Drug Control|}}} | term42a = {{{National Drug Control date|{{{National Drug Control start}}}&ndash;{{{National Drug Control end|}}} }}} | name42b = {{{National Drug Control 2|}}} | term42b = {{{National Drug Control date 2|{{{National Drug Control start 2}}}&ndash;{{{National Drug Control end 2|}}} }}} | name42c = {{{National Drug Control 3|}}} | term42c = {{{National Drug Control date 3|{{{National Drug Control start 3}}}&ndash;{{{National Drug Control end 3|}}} }}} | name42d = {{{National Drug Control 4|}}} | term42d = {{{National Drug Control date 4|{{{National Drug Control start 4}}}&ndash;{{{National Drug Control end 4|}}} }}} | office43 = [[Office of Science and Technology Policy|Director of the Office of<br />Science and Technology Policy]] | name43a = {{{Science and Technology Policy|}}} | term43a = {{{Science and Technology Policy date|{{{Science and Technology Policy start}}}&ndash;{{{Science and Technology Policy end|}}} }}} | name43b = {{{Science and Technology Policy 2|}}} | term43b = {{{Science and Technology Policy date 2|{{{Science and Technology Policy start 2}}}&ndash;{{{Science and Technology Policy end 2|}}} }}} | name43c = {{{Science and Technology Policy 3|}}} | term43c = {{{Science and Technology Policy date 3|{{{Science and Technology Policy start 3}}}&ndash;{{{Science and Technology Policy end 3|}}} }}} | name43d = {{{Science and Technology Policy 4|}}} | term43d = {{{Science and Technology Policy date 4|{{{Science and Technology Policy start 4}}}&ndash;{{{Science and Technology Policy end 4|}}} }}} | office44 = [[White House Chief of Staff|Chief of Staff]] | name44a = {{{Chief of Staff|}}} | term44a = {{{Chief of Staff date|{{{Chief of Staff start}}}&ndash;{{{Chief of Staff end|}}} }}} | name44b = {{{Chief of Staff 2|}}} | term44b = {{{Chief of Staff date 2|{{{Chief of Staff start 2}}}&ndash;{{{Chief of Staff end 2|}}} }}} | name44c = {{{Chief of Staff 3|}}} | term44c = {{{Chief of Staff date 3|{{{Chief of Staff start 3}}}&ndash;{{{Chief of Staff end 3|}}} }}} | name44d = {{{Chief of Staff 4|}}} | term44d = {{{Chief of Staff date 4|{{{Chief of Staff start 4}}}&ndash;{{{Chief of Staff end 4|}}} }}} | name44e = {{{Chief of Staff 5|}}} | term44e = {{{Chief of Staff date 5|{{{Chief of Staff start 5}}}&ndash;{{{Chief of Staff end 5|}}} }}} | name44f = {{{Chief of Staff 6|}}} | term44f = {{{Chief of Staff date 6|{{{Chief of Staff start 6}}}&ndash;{{{Chief of Staff end 6|}}} }}} | name44g = {{{Chief of Staff 7|}}} | term44g = {{{Chief of Staff date 7|{{{Chief of Staff start 7}}}&ndash;{{{Chief of Staff end 7|}}} }}} | name44h = {{{Chief of Staff 8|}}} | term44h = {{{Chief of Staff date 8|{{{Chief of Staff start 8}}}&ndash;{{{Chief of Staff end 8|}}} }}} | office45 = [[White House Deputy Chief of Staff|Deputy Chief of Staff]] | name45a = {{{Deputy Chief of Staff|}}} | term45a = {{{Deputy Chief of Staff date|{{{Deputy Chief of Staff start}}}&ndash;{{{Deputy Chief of Staff end|}}} }}} | name45b = {{{Deputy Chief of Staff 2|}}} | term45b = {{{Deputy Chief of Staff date 2|{{{Deputy Chief of Staff start 2}}}&ndash;{{{Deputy Chief of Staff end 2|}}} }}} | office46 = [[White House Cabinet Secretary|Cabinet Secretary]] | name46a = {{{Cabinet Secretary|}}} | term46a = {{{Cabinet Secretary date|{{{Cabinet Secretary start}}}&ndash;{{{Cabinet Secretary end|}}} }}} | name46b = {{{Cabinet Secretary 2|}}} | term46b = {{{Cabinet Secretary date 2|{{{Cabinet Secretary start 2}}}&ndash;{{{Cabinet Secretary end 2|}}} }}} | office47 = [[Counselor to the President|Counselor to the President]] | name47a = {{{Counselor to the President|}}} | term47a = {{{Counselor to the President date|{{{Counselor to the President start}}}&ndash;{{{Counselor to the President end|}}} }}} | name47b = {{{Counselor to the President 2|}}} | term47b = {{{Counselor to the President date 2|{{{Counselor to the President start 2}}}&ndash;{{{Counselor to the President end 2|}}} }}} | name47c = {{{Counselor to the President 3|}}} | term47c = {{{Counselor to the President date 3|{{{Counselor to the President start 3}}}&ndash;{{{Counselor to the President end 3|}}} }}} | name47d = {{{Counselor to the President 4|}}} | term47d = {{{Counselor to the President date 4|{{{Counselor to the President start 4}}}&ndash;{{{Counselor to the President end 4|}}} }}} | name47e = {{{Counselor to the President 5|}}} | term47e = {{{Counselor to the President date 5|{{{Counselor to the President start 5}}}&ndash;{{{Counselor to the President end 5|}}} }}} | name47f = {{{Counselor to the President 6|}}} | term47f = {{{Counselor to the President date 6|{{{Counselor to the President start 6}}}&ndash;{{{Counselor to the President end 6|}}} }}} | name47g = {{{Counselor to the President 7|}}} | term47g = {{{Counselor to the President date 7|{{{Counselor to the President start 7}}}&ndash;{{{Counselor to the President end 7|}}} }}} | name47h = {{{Counselor to the President 8|}}} | term47h = {{{Counselor to the President date 8|{{{Counselor to the President start 8}}}&ndash;{{{Counselor to the President end 8|}}} }}} | office48 = [[White House Counsel|White House Counsel]] | name48a = {{{White House Counsel|}}} | term48a = {{{White House Counsel date|{{{White House Counsel start}}}&ndash;{{{White House Counsel end|}}} }}} | name48b = {{{White House Counsel 2|}}} | term48b = {{{White House Counsel date 2|{{{White House Counsel start 2}}}&ndash;{{{White House Counsel end 2|}}} }}} | name48c = {{{White House Counsel 3|}}} | term48c = {{{White House Counsel date 3|{{{White House Counsel start 3}}}&ndash;{{{White House Counsel end 3|}}} }}} | name48d = {{{White House Counsel 4|}}} | term48d = {{{White House Counsel date 4|{{{White House Counsel start 4}}}&ndash;{{{White House Counsel end 4|}}} }}} | belowstyle = font-size: smaller; text-align:center; max-width:40em | below = {{{Footnotes|}}} }}<noinclude> {{Documentation}} <!--Please add this template's categories to the /doc subpage, not here - thanks!--> </noinclude> bd62f33d70f4a13b5e44e1abffdea32650f455c8 Template:Country data France 10 1186 2515 2022-11-21T21:23:02Z w>Paine Ellsworth 0 Undid revision 1069486652 by [[Special:Contributions/Paine Ellsworth|Paine Ellsworth]] ([[User talk:Paine Ellsworth|talk]]) srv per talk page wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = France | flag alias = Flag of France.svg | flag alias-1790 = Flag of France (1790–1794).svg | flag alias-1794 = Flag of France (1794–1815, 1830–1958).svg | flag alias-1814 = Flag of the Kingdom of France (1814-1830).svg | flag alias-1830 = Flag of France (1794–1815, 1830–1958).svg | flag alias-1848 = Drapeau france 1848.svg | flag alias-1848a = Drapeau france 1848.svg | flag alias-1848b = Flag of France (1794–1815, 1830–1958).svg | flag alias-1974 = Flag of France (lighter variant).svg | flag alias-naval = Civil and Naval Ensign of France.svg | flag alias-naval-1790 = Flag of French-Navy-Revolution.svg | flag alias-air force = Flag of France.svg | link alias-air force = French Air and Space Force | flag alias-coast guard = French Maritime Gendarmerie racing stripe.svg | border-coast guard = | link alias-coast guard = French Maritime Gendarmerie | flag alias-army = Flag of France.svg | link alias-army = French Army | link alias-naval = French Navy | flag alias-navy = Civil and Naval Ensign of France.svg | link alias-navy = French Navy | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1790 | var2 = 1794 | var3 = 1814 | var4 = 1830 | var5 = 1848a | var6 = 1848b | var7 = 1974 | var8 = naval-1790 | redir1 = FRA | related1 = Kingdom of France | related2 = Free France </noinclude> }} 6489f5636282c8d82ad1b5a74115901b2a150efe Template:Country data Ireland 10 1217 2546 2022-11-24T09:52:50Z w>Spike 'em 0 Undid revision 1123540616 by [[Special:Contributions/Paine Ellsworth|Paine Ellsworth]] ([[User talk:Paine Ellsworth|talk]]) I think this breaks the desired aliasing to Republic of Ireland using this template as a shortcut wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | hatnote = {{Hatnote|This template contains data that applies to the [[Ireland|entire island]]. For the [[Republic of Ireland|sovereign state]], see [[Template:Country data Republic of Ireland]].}} | alias = {{#if:{{{altvar|}}}|Ireland|{{#if:{{{variant|}}}|Ireland|Republic of Ireland}}}} | shortname alias = Ireland | flag alias = Flag of Ireland.svg | flag alias-1783 = Saint Patrick's Saltire.svg | flag alias-4prov = Four Provinces Flag.svg | flag alias-green = Green harp flag of Ireland.svg | flag alias-football = Saint Patrick's Saltire.svg | link alias-football = Ireland national football team (1882–1950) | flag alias-hockey = Flag of Ireland hockey team.svg | flag alias-field hockey = Flag of Ireland hockey team.svg | {{#ifeq:{{{altlink}}}|A national rugby union team|link alias-rugby union|empty}} = Ireland Wolfhounds | flag alias-rugby union = IRFU flag.svg | flag alias-rugby sevens = IRFU flag.svg | flag alias-rugby league = Four Provinces Flag.svg | flag alias-cricket = Cricket Ireland flag.svg | link alias-cricket = Ireland {{{mw|}}} {{{age|}}} cricket team | flag alias-quidditch = Flag of Quidditch Ireland.svg | flag alias-air force=Flag of the Irish Air Corps.svg | link alias-air force=Irish Air Corps | link alias-naval=Irish Naval Service | flag alias-military=Flag_of_the_Irish_Defence_Forces.svg | link alias-military=Irish Defence Forces | flag alias-army=Flag of the Irish Defence Forces.svg | link alias-army=Irish Army | flag alias-navy=Irish Naval Service Colour.svg | link alias-navy=Irish Naval Service | flag alias-coast guard=Coast Guard Flag (Ireland).svg | link alias-coast guard=Irish Coast Guard | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | altvar = {{{altvar|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1783 | var2 = green | var3 = 4prov | var4 = football | var5 = rugby union | var6 = hockey | var7 = cricket | var8 = quidditch | redir1 = IRE | redir2 = EIR | related1 = Republic of Ireland | related2 = Southern Ireland | related3 = Kingdom of Ireland | related4 = Lordship of Ireland | related5 = Irish Free State </noinclude> }} e5e1f2f51926d8f51389937da62183021c07cb35 Template:Slink 10 1388 2723 2022-11-26T02:46:04Z w>ClydeFranklin 0 Modifying [[WP:RCAT|redirect categories]] using [[User:Wugapodes/Capricorn|Capricorn ♑]] wikitext text/x-wiki #REDIRECT [[Template:Section link]] {{Redirect category shell| {{R from template shortcut}} }} 0f719181783528f8d6d59af515ea2d7e8fb43c92 Template:Population Germany 10 1434 2769 2022-11-26T12:11:32Z w>Markussep 0 added Hamburg wikitext text/x-wiki <includeonly>{{#switch: {{str left|{{{key|}}}|2}} | 01 = {{Metadata Population DE-SH|{{{key}}}|{{{datref|}}}}} | 02 = {{Metadata Population DE-HH|{{{key}}}|{{{datref|}}}}} | 03 = {{Metadata Population DE-NI|{{{key}}}|{{{datref|}}}}} | 04 = {{Metadata Population DE-HB|{{{key}}}|{{{datref|}}}}} | 05 = {{Metadata Population DE-NW|{{{key}}}|{{{datref|}}}}} | 06 = {{Metadata Population DE-HE|{{{key}}}|{{{datref|}}}}} | 07 = {{Metadata Population DE-RP|{{{key}}}|{{{datref|}}}}} | 08 = {{Metadata Population DE-BW|{{{key}}}|{{{datref|}}}}} | 09 = {{Metadata Population DE-BY|{{{key}}}|{{{datref|}}}}} | 10 = {{Metadata Population DE-SL|{{{key}}}|{{{datref|}}}}} | 11 = 3431675 | 12 = {{Metadata Population DE-BB|{{{key}}}|{{{datref|}}}}} | 13 = {{Metadata Population DE-MV|{{{key}}}|{{{datref|}}}}} | 14 = {{Metadata Population DE-SN|{{{key}}}|{{{datref|}}}}} | 15 = {{Metadata Population DE-ST|{{{key}}}|{{{datref|}}}}} | 16 = {{Metadata Population DE-TH|{{{key}}}|{{{datref|}}}}} | #default = "key error" }}</includeonly><noinclude>{{documentation}}</noinclude> 8a0f8dd2ee6ca16dae5edd33d04f8975fe4af589 Template:Suppress categories 10 68 131 2022-11-26T18:00:01Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Suppress categories]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2612 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{{{{|safesubst:}}}#invoke:Suppress categories|main}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 1f9c6065201d31d4c70f982129b5babbb809ae8c Template:ISBN 10 1095 2389 2022-11-27T20:08:59Z wikipedia>GKFX 0 Update from sandbox: remove unnecessary {{trim}} and {{#if:}}, and make more readable. wikitext text/x-wiki <includeonly>{{#if:{{{1|}}}|{{Catalog lookup link |{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}| article-link={{#ifeq:{{yesno-no|{{{plainlink|}}}}}|yes||{{#ifeq:{{yesno-yes|{{{link|}}}}}|no||ISBN (identifier)}}}} |article-name={{#ifeq:{{yesno-no|{{{plainlink|}}}}}|yes||ISBN}} |link-prefix=[Special:BookSources/ |item-prefix={{!}} |item-postfix=] |list-leadout={{{leadout|}}} }}{{#ifeq:{{yesno-no|{{{invalid1|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{1|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{2|}}} |{{#ifeq:{{yesno-no|{{{invalid2|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{2|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{3|}}} |{{#ifeq:{{yesno-no|{{{invalid3|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{3|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{4|}}} |{{#ifeq:{{yesno-no|{{{invalid4|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{4|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{5|}}} |{{#ifeq:{{yesno-no|{{{invalid5|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{5|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{6|}}} |{{#ifeq:{{yesno-no|{{{invalid6|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{6|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{7|}}} |{{#ifeq:{{yesno-no|{{{invalid7|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{7|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{8|}}} |{{#ifeq:{{yesno-no|{{{invalid8|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{8|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{9|}}} |{{#ifeq:{{yesno-no|{{{invalid9|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{9|}}}|template_name={{{template_name|ISBN}}}}}}}}}}}}}}}}}}}}}}}| {{error-small|Parameter error in {{tl|ISBN}}: Missing [[ISBN]].}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using ISBN template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:ISBN]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | invalid1 | invalid2 | invalid3 | invalid4 | invalid5 | invalid6 | invalid7 | invalid8 | invalid9 | leadout | link | plainlink |template_name }}</includeonly><noinclude>{{documentation}}<!-- Add categories and interwiki lines to the /doc subpage, not here! --></noinclude> 113f1e5cb33437d5e9ada6d1e37a951670fae7d9 Template:Buildings and structures infobox templates 10 1480 2815 2022-11-28T01:59:50Z w>Bluealbion 0 wikitext text/x-wiki {{Navbox | name = Buildings and structures infobox templates | state = {{{state<includeonly>|expanded</includeonly>}}} | bodyclass = hlist | title = {{c|Buildings and structures infobox templates}} | above = '''[[Template:Infobox building|Infobox building]]''' | group1 = Buildings | list1 = * [[Template:Infobox airport|airport]] * [[Template:Infobox archives|archives]] * [[Template:Infobox brewery|brewery]] * [[Template:Infobox casino|casino]] * [[Template:Infobox convention center|convention center]] * [[Template:Infobox desalination plant|desalination plant]] * [[Template:Infobox factory|factory]] * [[Template:Infobox hospital|hospital]] * [[Template:Infobox housing project|housing project]] * [[Template:Infobox hut|hut]] * [[Template:Infobox library|library]] * [[Template:Infobox lighthouse|lighthouse]] * [[Template:Infobox mill building|mill building]] * [[Template:Infobox museum|museum]] * [[Template:Infobox observatory|observatory]] * [[Template:Infobox oil refinery|oil refinery]] * [[Template:Infobox power station|power station]] * [[Template:Infobox prison|prison]] * [[Template:Infobox religious building|religious building]] ** [[Template:Infobox church|church]] ** [[Template:Infobox Hindu temple|Hindu temple]] ** [[Template:Infobox LDS Temple|LDS Temple]] ** [[Template:Infobox monastery|monastery]] * [[Template:Infobox restaurant|restaurant]] * [[Template:Infobox school|school]] * [[Template:Infobox shopping mall|shopping mall]]<!--(can be within (single) building/complex)--> * [[Template:Infobox station|station]] * [[Template:Infobox venue|venue]] <!---- Too specific, too general, or not intrinsically/originally a building?: * [[Template:Infobox Disney resort|Disney resort]] -----> | group2 = Structures | list2 = * [[Template:Infobox artwork|artwork]] **including statues * [[Template:Infobox bell|bell]] * [[Template:Infobox bridge|bridge]] ** [[Template:Infobox bridge type|type]] * [[Template:Infobox dam|dam]] * [[Template:Infobox fishery|fishery]] * [[Template:Infobox future infrastructure project|future infrastructure project]] * [[Template:Infobox historic site|historic site]] * [[Template:Infobox laboratory|laboratory]] * [[Template:Infobox military installation|military installation]] * [[Template:Infobox monument|monument]] ** [[Template:Infobox military memorial|military memorial]] * [[Template:Infobox pier|pier]] * [[Template:Infobox pipeline|pipeline]] * [[Template:Infobox power transmission line|power transmission line]] * [[Template:Infobox pyramid|pyramid]] * [[Template:Infobox roller coaster|roller coaster]] ** [[Template:Infobox dual roller coaster|dual]] * [[Template:Infobox room|room]] * [[Template:Infobox swimming pool|swimming pool]] * [[Template:Infobox telescope|telescope]] * [[Template:Infobox transmitter|transmitter]] * [[Template:Infobox tunnel|tunnel]] * [[Template:Infobox urban development project|urban development project]] * [[Template:Infobox water ride|water ride]] * [[Template:Infobox windmill|windmill]] <!---- Too specific, too general, or not intrinsically/originally a building?: * [[Template:Infobox Maginot Line|Maginot Line]] * [[Template:Infobox urban feature|urban feature]] -----> }}<noinclude> {{Documentation | content = {{Collapsible option |default=expanded}} [[Category:Buildings and structures infobox templates| ]] [[Category:Documentation see also templates]] [[Category:Related-topic templates‎]] }}<!--(end Documentation) --></noinclude> c6425acdc2a31aa15c8da59b6e78f59998ba577e Template:Edit templates 10 1336 2671 2022-11-30T00:00:24Z w>Hairy Dude 0 rm excess dashes. Only need one per line wikitext text/x-wiki <div>[{{view|Template:Edit templates|edit}}] Compare different edit templates:</div> * {{tl|Ed}} — plain-style edit link surrounded by <nowiki><small></nowiki> tags, specifically for templates only * {{tl|Ed right}} — plain-style edit link surrounded by <nowiki><small></nowiki> tags and <u>aligned to right of page</u>, specifically for templates only * {{tl|Edit}} — plain-style edit link, applicable to all Wikipedia namespaces * {{tl|Edit section}} — edit link surrounded by <nowiki><div></nowiki> tags by default which can specify which section to edit on a page, applicable to all Wikipedia namespaces * {{tl|Vedit}} — plain-style edit link which edit with the [[Wikipedia:VisualEditor]], applicable to all Wikipedia namespaces Templates with view, talk and edit links: * {{tl|Navbar}} — navigation bar with configurable caption and view·talk·edit links, specifically for templates only * {{tl|View}} — navbar-style view·talk·edit links, specifically for templates only * {{tl|VTE}} & {{tl|V}} — navbar-style V·T·E links (i.e. view·talk·edit links in short forms), specifically for templates only<noinclude> {{Documentation}} <!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) --> </noinclude> 8029caf34e44ffc8200744c8ebf56ec86f65aab9 Module:Icon/data 828 981 2156 2022-12-02T06:35:43Z wikipedia>Paine Ellsworth 0 per edit request on talk page - include icons for Mediawiki, Phabricator and Wikitech Scribunto text/plain -- This module stores icon data for [[Module:Icon]]. -------------------------------------------------------------------------------- -- Icon data -------------------------------------------------------------------------------- local data = { fa = { image = "Featured article star.svg", tooltip = "Featured article", link = true, }, far = { image = "Cscr-star piece.png", tooltip = "Featured article review", link = true, }, farc = { image = "Cscr-star piece.png", tooltip = "Featured article removal candidate", link = true, }, ffa = { aliases = {"dfa"}, image = "Featured article star - cross.svg", tooltip = "Former featured article", link = true, }, fac = { aliases = {"fan"}, image = "Cscr-candidate.svg", tooltip = "Featured article candidate", link = true, }, ffac = { aliases = {"nofa"}, image = "Featured article star - cross.svg", tooltip = "Failed featured article candidate", link = true, }, fl = { image = "Featured article star.svg", tooltip = "Featured list", link = true, }, flrc = { aliases = {"flr"}, image = "Cscr-star piece.png", tooltip = "Featured list removal candidate", link = true, }, ffl = { aliases = {"dfl"}, image = "Cscr-featured-strike.svg", tooltip = "Former featured list", link = true, }, flc = { aliases = {"fln"}, image = "Cscr-candidate.svg", tooltip = "Featured list candidate", link = true, }, fflc = { aliases = {"nofl"}, image = "Cscr-former.svg", tooltip = "Failed featured list candidate", link = true, }, a = { image = "Symbol a class.svg", tooltip = "A-Class article", link = true, }, dac = { aliases = {"daa"}, image = "Symbol unsupport A vote.svg", tooltip = "Demoted A-Class article", link = true, }, acc = { aliases = {"acn", "aac"}, image = "A candidate.svg", tooltip = "A-Class article candidate", link = true, }, noac = { aliases = {"faac"}, image = "Symbol unsupport A vote.svg", tooltip = "Failed A-Class article candidate", link = true, }, ga = { image = "Symbol support vote.svg", tooltip = "Good article", link = false, }, gar = { image = "GA Candidate Neutral vote(ChaosNil).svg", tooltip = "Good article reassessment", link = false, }, dga = { image = "Symbol unsupport vote.svg", tooltip = "Delisted good article", link = false, }, gan = { aliases = {"gac"}, image = "GA candidate.svg", tooltip = "Good article nominee", link = false, }, ga2 = { image = "Symbol neutral vote.svg", tooltip = "Good article, 2nd opinion", link = false, }, gah = { image = "Symbol wait.svg", tooltip = "Good article on hold", link = false, }, fgan = { aliases = {"noga", "gaf", "gf"}, image = "Symbol oppose vote.svg", tooltip = "Failed good article nominee", link = false, }, fp = { image = "Cscr-featured.svg", tooltip = "Featured picture", link = true, }, fpc = { aliases = {"fpn"}, image = "Cscr-candidate.svg", tooltip = "Featured picture candidate", link = true, }, ffp = { image = "Cscr-former.svg", tooltip = "Former featured picture", link = true, }, vp = { image = "ENWP VP Logo.svg", tooltip = "Valued picture", link = true, }, vpc = { image = "Valued pics 1.svg", tooltip = "Valued picture candidate", link = true, }, fs = { image = "Cscr-featured.svg", tooltip = "Featured sound", link = true, }, ffs = { image = "Cscr-former.svg", tooltip = "Former featured sound", link = true, }, fsc = { image = "Cscr-candidate.svg", tooltip = "Featured sound candidate", link = true, }, fpo = { image = "Linecons big-star.svg", tooltip = "Before the featured portal process ceased in 2017, this had been designated as a featured portal.", link = true, }, fpor = { image = "Cscr-star piece.png", tooltip = "Featured portal review", link = true, }, ffpo = { image = "Featured article star - cross.svg", tooltip = "Former featured portal", link = true, }, fpoc = { image = "Cscr-candidate.svg", tooltip = "Featured portal candidate", link = true, }, ft = { image = "Cscr-featuredtopic.svg", tooltip = "Featured topic", link = true, }, ftrc = { image = "Cscr-star piece.png", tooltip = "Featured topic removal candidate", link = true, }, fft = { aliases = {"dft"}, image = "DFT candidate_cluster.svg", tooltip = "Former featured topic", link = true, }, ftc = { aliases = {"ftn"}, image = "FT candidate cluster.svg", tooltip = "Featured topic candidate", link = false, }, gt = { image = "Support cluster.svg", tooltip = "Good topic", link = false, }, gtrc = { image = "Symbol unsupport vote.svg", tooltip = "Good topic removal candidate", link = false, }, gtc = { aliases = {"gtn"}, image = "GA candidate cluster.svg", tooltip = "Good topic candidate", link = false, }, bplus = { aliases = {"b+"}, image = "Symbol bplus class.svg", tooltip = "Bplus-Class article", link = true, }, b = { image = "Symbol b class.svg", tooltip = "B-Class article", link = true, }, br = { aliases = {"bcr"}, image = "Bclass-checklist.svg", tooltip = "B-Class review", link = true, }, c = { image = "Symbol c class.svg", tooltip = "C-Class article", link = true, }, start = { image = "Symbol start class.svg", tooltip = "Start-Class article", link = true, }, stub = { image = "Symbol stub class.svg", tooltip = "Stub-Class article", link = true, }, list = { aliases = {"comparison"}, image = "Symbol list class.svg", tooltip = "List-Class article", link = false, }, no = { image = "Crystal button cancel.svg", tooltip = "Unknown-Class article", link = true, }, book = { image = "Symbol book class2.svg", tooltip = "Wikipedia book", link = true, }, category = { aliases = {"cat", "categ"}, image = "Symbol category class.svg", tooltip = "Category", link = false, }, disambiguation = { aliases = {"dab", "disamb", "disambig"}, image = "Symbol dab class.svg", tooltip = "Disambiguation page", link = true, }, image = { aliases = {"file"}, image = "Symbol file class.svg", tooltip = "File", link = true, }, needed = { image = "Symbol needed class.svg", tooltip = "Needed article", link = false, }, outline = { image = "Global thinking.svg", tooltip = "Outline", link = false, }, portal = { image = "Symbol portal class.svg", tooltip = "Portal", link = true, }, project = { image = "Symbol project class.svg", tooltip = "Project page", link = false, }, redirect = { aliases = {"red", "redir"}, image = "Symbol redirect vote2.svg", tooltip = "Redirect", link = true, }, template = { aliases = {"temp", "templ"}, image = "Symbol template class.svg", tooltip = "Template", link = false, }, essay = { image = "Essay.svg", tooltip = "Essay", link = false, }, na = { image = "Symbol na class.svg", tooltip = "Non-article page", link = true, }, aa = { image = "Yes check.svg", tooltip = "Audited article of limited subject matter", link = false, }, da = { image = "Symbol oppose vote.svg", tooltip = "Demoted article", link = false, }, dyk = { image = "Symbol question.svg", tooltip = "Did You Know?", link = false, }, dyk2 = { image = "DYK questionmark icon.svg", tooltip = "Did You Know?", link = false, }, pr = { image = "Nuvola apps kedit.png", tooltip = "Peer review", link = true, }, ppr = { image = "Nuvola apps kedit.png", tooltip = "Portal peer review", link = true, }, q = { aliases = {"question"}, image = "Symbol question.svg", tooltip = "Question", link = false, }, cleanup = { image = "Edit-clear.svg", tooltip = "Cleanup work", link = false, }, qi = { image = "Quality images logo.svg", tooltip = "Quality image on Wikimedia Commons", link = false, }, vi = { image = "Valued image seal.svg", tooltip = "Valued image on Wikimedia Commons", link = false, }, tfa = { image = "Wikipedia-logo.svg", tooltip = "Today's Featured Article", link = true, }, tfl = { image = "Wikipedia-logo.svg", tooltip = "Today's Featured List", link = true, }, itn = { image = "Globe current.svg", tooltip = "In The News", link = true, }, otd = { image = "Nuvola apps date.svg", tooltip = "On This Day", link = true, }, wikiproject = { image = "People icon.svg", tooltip = "WikiProject", link = false, }, goce = { image = "Writing Magnifying.PNG", tooltip = "Guild of Copy Editors", link = true, }, wikipedia = { image = "Wikipedia-logo.svg", tooltip = "Wikipedia page", link = true, }, commons = { image = "Commons-logo.svg", tooltip = "Commons page", link = false, }, wikiquote = { image = "Wikiquote-logo.svg", tooltip = "Wikiquote page", link = false, }, wikiversity = { image = "Wikiversity logo 2017.svg", tooltip = "Wikiversity page", link = true, }, wikibooks = { image = "Wikibooks-logo.svg", tooltip = "Wikibooks page", link = true, }, wikisource = { image = "Wikisource-logo.svg", tooltip = "Wikisource page", link = true, }, wiktionary = { image = "Wiktionary-logo.svg", tooltip = "Wiktionary page", link = true, }, wikinews = { image = "Wikinews-logo.svg", tooltip = "Wikinews page", link = true, }, wikispecies = { image = "Wikispecies-logo.svg", tooltip = "Wikispecies page", link = true, }, wikidata = { image = "Wikidata-logo.svg", tooltip = "Wikidata page", link = false, }, wikivoyage = { image = "Wikivoyage-logo.svg", tooltip = "Wikivoyage page", link = true, }, mediawiki = { image = "MediaWiki-2020-icon.svg", tooltip = "MediaWiki", link = false, }, phabricator = { aliases = {"phab"}, image = "Favicon-Phabricator-WM.svg", tooltip = "Phabricator", link = false, }, wikitech = { image = "Wikitech-2021-blue-icon.svg", tooltip = "Wikitech", link = false, }, meta = { image = "Wikimedia Community Logo.svg", tooltip = "Meta-wiki page", link = false, }, four = { aliases = {"4a"}, image = "Four Award.svg", tooltip = "Four Award", link = false, }, million = { image = "Million award logo.svg", tooltip = "Million Award", link = true, }, module = { image = "Lua-logo-nolabel.svg", tooltip = "Module", link = false, }, vital = { image = "Círculos_Concéntricos.svg", tooltip = "Vital article", link = false, }, potd = { image = "Wikipedia-logo.svg", tooltip = "Picture of the Day", link = true, }, _DEFAULT = { image = "Symbol question.svg", link = false, } } -------------------------------------------------------------------------------- -- End icon data -------------------------------------------------------------------------------- -- Make aliases work the same as normal keys, and remove the "aliases" subtables. local ret= {} for code, iconData in pairs(data) do iconData.canonicalCode = code if iconData.aliases then for _, alias in ipairs(iconData.aliases) do ret[alias] = iconData end iconData.aliases = nil end ret[code] = iconData end return ret d8e668d4755103abdbc8325fa35964e99198c29d Template:Infobox country languages 10 1137 2463 2022-12-03T17:23:35Z w>Pablo the Helper 0 wikitext text/x-wiki {{Infobox |above = <includeonly>Languages of </includeonly>{{{country|<includeonly>{{PAGENAMEBASE}}</includeonly>}}} |abovestyle = background-color:#efefef; |image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image size|300px}}}}} |caption = {{{caption|}}} |label1 = [[Official language|Official]] |data1 = {{{official|}}} |label2 = Semi-official |data2 = {{{semi-official|}}} |label3 = [[National language|National]] |data3 = {{{national|}}} |label4 = Recognised |data4 = {{{unofficial|}}} |label5 = [[Main language|Main]] |data5 = {{{main|}}} |label6 = [[Indigenous language|Indigenous]] |data6 = {{{indigenous|}}} |label7 = [[Regional language|Regional]] |data7 = {{{regional|}}} |label8 = [[Vernacular]] |data8 = {{{vernacular|}}} |label9 = [[Minority language|Minority]] |data9 = {{{minority|}}} |label10 = Immigrant |data10 = {{{immigrant|}}} |label11 = [[Foreign language|Foreign]] |data11 = {{{foreign|}}} |label12 = [[Sign language|Signed]] |data12 = {{{sign|}}} |label13 = [[Keyboard&nbsp;layout]] |data13 = {{#if:{{{keyboard|}}}|<div style="margin: 0 auto; text-align: center;">{{{keyboard}}}<br/>{{#if:{{{keyboard image|}}}|{{{keyboard image}}}}}</div>}} |label14 = Source |data14 = {{{source|}}} |label15 = {{{extralabel|}}} |data15 = {{{extra|}}} }}<!-- -->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Infobox country languages with unknown parameters|_VALUE_]]}}|preview=unknown parameter "_VALUE_"| country | image | image size | caption | official | semi-official | national | unofficial | main | indigenous | regional | vernacular | minority | immigrant | foreign | sign | keyboard | keyboard image | source | extralabel | extra }}<noinclude> {{Documentation}}</noinclude> da24c63c35b6d764763a5e4b2be5df9070524164 Template:Infobox school 10 1149 2475 2022-12-06T20:34:20Z w>Ɱ 0 size wikitext text/x-wiki {{Infobox school/short description|type={{{type|{{{schooltype|School}}}}}}|country={{if empty|{{{country|}}}|{{{country1|}}}}}|city={{{city|{{{town|{{{city/town|}}}}}}}}}|county={{{county|}}}|state={{{state|}}}|province={{{province|}}}}}{{Infobox | bodyclass = vcard | bodystyle = {{#if: {{{box_width|}}} | width:{{{box_width}}}; }} {{{box_style|}}} | headerstyle = background:lavender | autoheaders = y | aboveclass = fn org | abovestyle = background-color: lavender | above = {{br separated entries |1 = {{If empty|{{{name|}}}|<includeonly>{{PAGENAMEBASE}}</includeonly>}} |2 = {{#if: {{{native_name|}}} | <div class="nickname">{{{native_name}}}</div> }} |3 = {{#if: {{{latin_name|}}} | <div class="nickname">{{{latin_name}}}</div> }} }} | image1 = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|size={{{logo_size|}}}|upright=1|alt={{{logo_alt|}}}}} | image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{seal_image|}}}|size={{{seal_size|}}}|upright=1|alt={{{seal_alt|}}}}} | image3 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}{{{image_name|}}}{{{imagewikilink|}}}|size={{{image_size|}}}|upright={{{image_upright|1.14}}}|sizedefault=250px|maxsize=325px|alt={{{alt|}}}}} | caption{{#if:{{{image|}}}{{{image_name|}}}{{{imagewikilink|}}}|3|{{#if:{{{seal_image|}}}|2|{{#if:{{{logo|}}}|1|5}}}}}} = {{#if:{{{image|}}}{{{image_name|}}}{{{seal_image|}}}{{{logo|}}}{{{imagewikilink|}}}|{{{caption|}}} }} | header1 = {{#if:{{{address|}}}{{{streetaddress|}}}{{{street|}}}|Address|Location}} | data3 = {{#invoke:Infobox mapframe|auto |onByDefault={{#ifeq:{{{coordinates|}}}||yes|{{#ifeq:{{#invoke:coordinates|coord2text|{{{coordinates|}}}|lat}}||no|yes}}}} |mapframe-marker=school|mapframe-zoom=13|mapframe-wikidata=yes}} | data4 = {{#invoke:Infobox mapframe|autocaption|onByDefault=yes}} | rowclass5 = adr | data5 = {{br separated entries |1 = {{#if:{{{address|}}}{{{streetaddress|}}}{{{street|}}}|<div style="display:inline;" class="street-address">{{if empty|{{{address|}}}|{{{streetaddress|}}}|{{{street|}}}}}</div>}} |2 = {{#if:{{{location|}}}|<div style="display:inline;" class="street-address">{{{location|}}}</div>}} |3 = {{#if:{{{region|}}}|<div style="display:inline;" class="locality">{{{region|}}}</div>}} |4 = {{comma separated entries | 1 = {{#if:{{{city|}}}{{{town|}}}{{{city/town|}}}|<div style="display:inline;" class="locality">{{if empty|{{{city|}}}|{{{town|}}}|{{{city/town|}}}}}</div>}} | 2 = {{#if:{{{county|}}}|<div style="display:inline;" class="region">{{{county}}}</div>}} | 3 = {{#if:{{{state|}}}|<div style="display:inline;" class="region">{{{state}}}</div>}} | 4 = {{#if:{{{province|}}}|<div style="display:inline;" class="region">{{{province}}}</div>}} | 5 = {{#if:{{{postcode|}}}{{{postalcode|}}}|<div style="display:inline;" class="postal-code" class="nowrap">{{if empty|{{{postcode|}}}|{{{postalcode|}}}}}</div>}} }} {{#if:{{{zipcode|}}}|<div style="display:inline;" class="postal-code">{{{zipcode}}}</div>}} |5 = {{#if:{{{country|}}}|<div style="display:inline;" class="country-name">{{#ifexist:Template:Country data {{{country}}}|{{Getalias|{{{country}}}|shortname}}|{{{country}}}{{main other|{{#ifeq:_MATCH_|{{#invoke:string|replace|{{{country}}}|^%[%[[^%[%]]*%]%]$|_MATCH_|plain=false}}|[[Category:Pages using infobox school with a linked country]]|[[Category:Pages using infobox school with an unknown country]]}}}}}}</div>{{#if:{{{country1|}}}|,}}}} {{#if:{{{country1|}}}|<div style="display:inline;" class="country-name1">{{#ifexist:Template:Country data {{{country1}}}|{{Getalias|{{{country1}}}|shortname}}|{{{country1}}}{{main other|{{#ifeq:_MATCH_|{{#invoke:string|replace|{{{country1}}}|^%[%[[^%[%]]*%]%]$|_MATCH_|plain=false}}|[[Category:Pages using infobox school with a linked country1]]|[[Category:Pages using infobox school with an unknown country1]]}}}}}}</div>}} }} | label6 = [[Geographic coordinate system|Coordinates]] | data6 = {{#if: {{{coordinates|}}} | {{#invoke:Coordinates|coordinsert|{{{coordinates|}}}|type:edu}}{{{coordinates_footnotes|}}}}} | header7 = Information | label8 = Other name{{#if:{{{other_names|}}}|s}} | data8 = {{if empty|{{{other_names|}}}|{{{other_name|}}}}} | label9 = Former name{{#if:{{{former_names|}}}|s}} | data9 = {{if empty|{{{former_names|}}}|{{{former_name|}}}}} | label10 = {{#if:{{{schooltype|}}}|School type|{{#if:{{{fundingtype|}}}|Funding type|Type}} }} | data10 = {{#if:{{{schooltype|}}} |{{#if:{{{fundingtype|}}} |{{#ifexist:{{{fundingtype}}} school |[[{{{fundingtype}}} school|{{{fundingtype}}}]] |{{{fundingtype}}}, }} |{{{type|}}} }} {{{schooltype}}} |{{if empty|{{{fundingtype|}}}|{{{type|}}}}} }} | label11 = {{#if: {{{motto|}}} | Motto | Mottoes }} | data11 = {{#if: {{{motto|}}}{{{mottoes|}}} |{{if empty|{{{motto|}}}|{{{mottoes|}}}}}{{#if:{{{motto_translation|}}}|<br />({{{motto_translation}}})}} |{{{motto_translation|}}} }} | label12 = Religious affiliation(s) | data12 = {{if empty|{{{religious_affiliation|}}}|{{{religion|}}}}} | label13 = Denomination | data13 = {{{denomination|}}} | label14 = Patron saint(s) | data14 = {{{patron|}}} | label15 = {{#if: {{{established|}}} | Established |<!-- -->{{#if: {{{founded|}}} | Founded |<!-- -->Opened }}}} | data15 = {{if empty | {{{established|}}} | {{{founded|}}} | {{{opened|}}} }} | label16 = {{#if: {{{founder|}}} | Founder | Founders }} | data16 = {{if empty|{{{founder|}}}|{{{founders|}}}}} | label17 = Status | data17 = {{{status|}}} | label18 = Closed | data18 = {{{closed|}}} | label19 = Locale | data19 = {{{locale|}}} | label20 = [[Sister school]] | data20 = {{{sister_school|}}} | label21 = School board | data21 = {{if empty|{{{school_board|}}}|{{{schoolboard|}}}}} | label22 = School district | data22 = {{{district|}}} | label23 = [[National Center for Education Statistics|NCES]] District ID | data23 = {{{us_nces_district_id|}}} | label24 = Local authority | data24 = {{if empty|{{{local_authority|}}}|{{{LEA|}}}}} | label25 = Authority | data25 = {{{authority|}}} | label26 = Educational authority | data26 = {{if empty|{{{educational_authority|}}}|{{{educational authority|}}}}} | label27 = {{if empty| {{{category_label|}}} | Category }} | data27 = {{{category|}}} | label28 = {{if empty| {{{oversight_label|}}} | Oversight }} | data28 = {{{oversight|}}} | label29 = Trust | data29 = {{{trust|}}} | label30 = Authorizer | data30 = {{{authorizer|}}} | label31 = Superintendent | data31 = {{{superintendent|}}} | label32 = Area trustee | data32 = {{{trustee|}}} | label33 = {{#if: {{{specialist|}}} | Specialist | Specialists }} | data33 = {{if empty|{{{specialist|}}}|{{{specialists|}}}}} | label34 = Session | data34 = {{{session|}}} | label35 = School number | data35 = {{if empty|{{{school_number|}}}|{{{schoolnumber|}}}|{{{number|}}}}} | label36 = School code | data36 = {{if empty|{{{school_code|}}}|{{{school code|}}}}} | label37 = [[Department for Education]] URN | data37 = {{#if:{{{urn|}}} | {{EduBase|{{{urn}}}|{{{urn}}}}} {{DfE performance tables|{{{urn}}}|Tables}} }} | label38 = [[Ministry of Education (New Zealand)|Ministry of Education]] Institution&nbsp;no. | data38 = {{#if: {{{MOE|}}} | [https://www.educationcounts.govt.nz/find-school/school/profile?school={{{MOE}}} {{{MOE}}}] }} | label39 = [[Ofsted]] | data39 = {{#if: {{{ofsted|}}} |{{ofsted|{{{urn}}}|Reports}} }} | label40 = [[College Board#CEEB code|CEEB code]] | data40 = {{{ceeb|}}} | label41 = [[National Center for Education Statistics|NCES]] School ID | data41 = {{{us_nces_school_id|}}} | label42 = President | data42 = {{{president|}}} | label43 = {{if empty| {{{chair_label|}}} | Chair }} | data43 = {{{chair|}}} | label44 = {{if empty| {{{chairman_label|}}} | Chairman }} | data44 = {{{chairman|}}} | label45 = {{if empty| {{{chairperson_label|}}} | Chairperson }} | data45 = {{{chairperson|}}} | label46 = Dean | data46 = {{{dean|}}} | label47 = Administrator | data47 = {{{administrator|}}} | label48 = Rector | data48 = {{{rector|}}} | label49 = Director | data49 = {{{director|}}} | label50 = {{if empty| {{{principal_label|}}} | Principal }} | data50 = {{{principal|}}} | label51 = {{if empty| {{{principal_label1|}}} | Principal }} | data51 = {{{principal1|}}} | label52 = {{if empty| {{{principal_label2|}}} | Principal }} | data52 = {{{principal2|}}} | label53 = {{if empty| {{{principal_label3|}}} | Principal }} | data53 = {{{principal3|}}} | label54 = {{if empty| {{{principal_label4|}}} | Principal }} | data54 = {{{principal4|}}} | label55 = Campus Director | data55 = {{if empty|{{{campus_director|}}}|{{{campus director|}}}}} | label56 = Headmistress | data56 = {{{headmistress|}}} | label57 = Headmaster | data57 = {{{headmaster|}}} | label58 = Head of school | data58 = {{if empty|{{{head_of_school|}}}|{{{head of school|}}}}} | label59 = {{#if: {{{head_teacher|}}} | Head teacher | Headteacher }} | data59 = {{if empty|{{{head_teacher|}}}|{{{headteacher|}}}}} | label60 = Executive headteacher | data60 = {{{executive_headteacher|}}} | label61 = Acting headteacher | data61 = {{{acting_headteacher|}}} | label62 = {{if empty| {{{head_name|}}} | {{{head_label|}}} | Head teacher }} | data62 = {{{head|}}} | label63 = {{{head_name2}}} | data63 = {{#if: {{{head_name2|}}} | {{{head2|}}} }} | label64 = {{if empty| {{{rel_head_name|}}} | Religious head }} | data64 = {{{rel_head|}}} | label65 = {{if empty| {{{r_head_label|}}} | Religious head }} | data65 = {{{r_head|}}} | label66 = Officer in charge | data66 = {{{officer_in_charge|}}} | label67 = Chaplain | data67 = {{{chaplain|}}} | label68 = Staff | data68 = {{if empty|{{{staff|}}}|{{{number_of_staff|}}}|{{{number of staff|}}}}} | label69 = Faculty | data69 = {{{faculty|}}} | label70 = Teaching staff | data70 = {{{teaching_staff|}}} | label71 = Employees | data71 = {{if empty|{{{employees|}}}|{{{num_employ|}}}}} | label72 = Key people | data72 = {{{key_people|}}} | label73 = {{if empty| {{{grades_label|}}} | Grades }} | data73 = {{{grades|}}} | label74 = Years offered | data74 = {{{years|}}} | label75 = Years taught | data75 = {{if empty|{{{years_taught|}}}|{{{years taught|}}}}} | label76 = {{#if: {{{years_taught|}}}{{{years taught|}}} |&nbsp;•&nbsp;Nursery | Nursery years taught }} | data76 = {{if empty|{{{nursery_years_taught|}}}|{{{nursery years taught|}}}}} | label77 = {{#if: {{{years_taught|}}}{{{years taught|}}} |&nbsp;•&nbsp;Primary | Primary years taught }} | data77 = {{if empty|{{{primary_years_taught|}}}|{{{primary years taught|}}}}} | label78 = {{#if: {{{years_taught|}}}{{{years taught|}}} |&nbsp;•&nbsp;Secondary | Secondary years taught }} | data78 = {{if empty|{{{secondary_years_taught|}}}|{{{secondary years taught|}}}}} | label79 = {{if empty| {{{gender_label|}}} | Gender }} | data79 = {{{gender|}}} | label80 = {{#if: {{{age_range|}}}{{{age range|}}} | Age range | Age }} | data80 = {{#if: {{{age_range|}}}{{{age range|}}} | {{if empty|{{{age_range|}}}|{{{age range|}}}}} | {{#if: {{{lower_age|}}} | {{{lower_age}}}{{#if:{{{upper_age|}}}|&#32;to {{{upper_age}}}|+}} }} }} | label81 = {{#if: {{{enrollment|}}} | Enrollment |<!-- -->{{#if: {{{enrolment|}}} | Enrolment |<!-- -->{{#if: {{{students|}}} | Number of students |<!-- -->{{#if:{{{school_roll|}}}{{{roll|}}}| School roll |<!-- -->Number of pupils}}}}}}}} | data81 = {{if empty|{{{enrollment|}}} |{{{enrolment|}}} |{{{students|}}} |{{{pupils|}}} |{{{school_roll|}}} |{{{roll|}}}}}<!-- -->{{#if: {{{enrollment|}}}{{{enrolment|}}}{{{students|}}}{{{pupils|}}} | {{#if: {{{enrollment_as_of|}}}{{{enrolment_as_of|}}}{{{students_as_of|}}}{{{pupils_as_of|}}} |&nbsp;({{if empty|{{{enrollment_as_of|}}} |{{{enrolment_as_of|}}} |{{{students_as_of|}}} |{{{pupils_as_of|}}}}})}}}} | label82 = Capacity | data82 = {{{capacity|}}} | label83 = Sixth form students | data83 = {{{sixth_form_students|}}} | label84 = &nbsp;•&nbsp;[[Pre-kindergarten]] | data84 = {{{grade_preK|}}} | label85 = &nbsp;•&nbsp;[[Kindergarten]] | data85 = {{{gradeK|}}} | label86 = &nbsp;•&nbsp;[[First grade|Grade 1]] | data86 = {{{grade1|}}} | label87 = &nbsp;•&nbsp;[[Second grade|Grade 2]] | data87 = {{{grade2|}}} | label88 = &nbsp;•&nbsp;[[Third grade|Grade 3]] | data88 = {{{grade3|}}} | label89 = &nbsp;•&nbsp;[[Fourth grade|Grade 4]] | data89 = {{{grade4|}}} | label90 = &nbsp;•&nbsp;[[Fifth grade|Grade 5]] | data90 = {{{grade5|}}} | label91 = &nbsp;•&nbsp;[[Sixth grade|Grade 6]] | data91 = {{{grade6|}}} | label92 = &nbsp;•&nbsp;[[Seventh grade|Grade 7]] | data92 = {{{grade7|}}} | label93 = &nbsp;•&nbsp;[[Eighth grade|Grade 8]] | data93 = {{{grade8|}}} | label94 = &nbsp;•&nbsp;[[Ninth grade|Grade 9]] | data94 = {{{grade9|}}} | label95 = &nbsp;•&nbsp;[[Tenth grade|Grade 10]] | data95 = {{{grade10|}}} | label96 = &nbsp;•&nbsp;[[Eleventh grade|Grade 11]] | data96 = {{{grade11|}}} | label97 = &nbsp;•&nbsp;[[Twelfth grade|Grade 12]] | data97 = {{{grade12|}}} | label98 = &nbsp;•&nbsp;Grade 13 | data98 = {{{grade13|}}} | label99 = &nbsp;•&nbsp;Other | data99 = {{{other|}}} | label100 = &nbsp;•&nbsp;{{if empty| {{{other_grade_label}}} | Other }} | data100 = {{if empty|{{{other_grade_enrollment|}}}|{{{other_grade_enrolment|}}}}} | label101 = &nbsp;•&nbsp;{{if empty| {{{other_grade_label_1|}}} | Other }} | data101 = {{if empty|{{{other_grade_enrollment_1|}}}|{{{other_grade_enrolment_1|}}}}} | label102 = &nbsp;•&nbsp;{{if empty| {{{other_grade_label_2|}}} | Other }} | data102 = {{if empty|{{{other_grade_enrollment_2|}}}|{{{other_grade_enrolment_2|}}}}} | label103 = International students | data103 = {{{international_students|}}} | label104 = Classes | data104 = {{{classes|}}} | label105 = Average class size | data105 = {{if empty|{{{average_class_size|}}}|{{{avg_class_size|}}}|{{{class|}}}}} | label106 = Student to teacher ratio | data106 = {{{ratio|}}} | label107 = Education system | data107 = {{{system|}}} | label108 = Classes offered | data108 = {{if empty|{{{classes_offered|}}}|{{{classes offered|}}}}} | label109 = Language | data109 = {{if empty|{{{language|}}}|{{{medium_of_language|}}}|{{{medium of language|}}}|{{{medium|}}}|{{{mediums|}}}}} | label111 = Schedule type | data111 = {{if empty|{{{schedule_type|}}}|{{{schedtyp|}}}}} | label112 = Schedule | data112 = {{{schedule|}}} | label113 = Hours in school day | data113 = {{{hours_in_day|}}} | label114 = Classrooms | data114 = {{{classrooms|}}} | label115 = Campuses | data115 = {{{campuses|}}} | label116 = Campus | data116 = {{{campus|}}} | label117 = Campus size | data117 = {{if empty|{{{campus_size|}}}|{{{campus size|}}}}} | label118 = Area | data118 = {{{area|}}} | label119 = Campus type | data119 = {{if empty|{{{campus_type|}}}|{{{campus type|}}}}} | label120 = Houses | data120 = {{{houses|}}} | label121 = {{if empty| {{{student_union_label|}}} | Student Union/Association }} | data121 = {{{student_union|}}} | label122 = {{#if: {{{colors|}}}{{{school_colors|}}}{{{schoolcolors|}}} | Color(s) | Colour(s) }} | data122 = {{if empty|{{{colors|}}}|{{{school_colors|}}}|{{{schoolcolors|}}}|{{{colours|}}}|{{{school_colours|}}}|{{{schoolcolours|}}}}} | label124 = Slogan | data124 = {{{slogan|}}} | label125 = Song | data125 = {{{song|}}} | label126 = [[Fight song]] | data126 = {{if empty|{{{fight_song|}}}|{{{fightsong|}}}}} | label127 = Athletics | data127 = {{{athletics|}}} | label128 = Athletics conference | data128 = {{if empty|{{{athletics_conference|}}}|{{{athletics conference|}}}|{{{athletic_conference|}}}|{{{athletic conference|}}}|{{{conference|}}}}} | label129 = Sports | data129 = {{{sports|}}} | label130 = Mascot | data130 = {{#if: {{{mascot|}}} | {{{mascot}}} {{main other|<!-- -->{{#if:{{#invoke:string|match|nomatch=|pattern=[Ff][Ii][Ll][Ee]%s*:|s={{{mascot}}}}}|[[Category:Pages using infobox school with a mascot image]]|{{#if:{{#invoke:string|match|nomatch=|pattern=[Ii][Mm][Aa][Gg][Ee]%s*:|s={{{mascot}}}}}|[[Category:Pages using infobox school with a mascot image]]|}}}}<!-- -->}}<!-- -->}} | label131 = [[Athletic nickname|Nickname]] | data131 = {{{nickname|}}} | label132 = {{if empty| {{{teams_label|}}} | Teams }} | data132 = {{{teams|}}} | label133 = Team name | data133 = {{if empty|{{{team_name|}}} | {{{team name|}}} | {{{teamname|}}} }} | label134 = {{#if: {{{rival|}}} | Rival | Rivals }} | data134 = {{if empty|{{{rival|}}} | {{{rivals|}}} }} | label135 = {{#if: {{{accreditation|}}} | Accreditation | Accreditations }} | data135 = {{if empty|{{{accreditation|}}} | {{{accreditations|}}} }} | label136 = [[U.S. News & World Report|USNWR]] ranking | data136 = {{if empty|{{{USNWR_ranking|}}} | {{{ranking|}}} }} | label137 = National ranking | data137 = {{{national_ranking|}}} | label138 = {{if empty|{{{test_name|}}}|{{{testname|}}}|Test}}&nbsp;average | data138 = {{if empty|{{{test_average|}}} | {{{testaverage|}}} }} | label141 = Bar pass rate | data141 = {{if empty|{{{bar_pass_rate|}}} | {{{bar pass rate|}}} }} | label143 = Socio-economic decile | data143 = {{{decile|}}} | label144 = Publication | data144 = {{{publication|}}} | label145 = Newspaper | data145 = {{#if:{{{newspaper|}}} |{{#ifeq:{{str left|{{{newspaper}}}|2}}|'' |{{{newspaper}}} |''{{{newspaper}}}'' }} }} | label146 = Yearbook | data146 = {{#if:{{{yearbook|}}} |{{#ifeq:{{str left|{{{yearbook}}}|2}}|'' |{{{yearbook}}} |''{{{yearbook}}}'' }} }} | label147 = Key products | data147 = {{{products|}}} | label148 = Endowment | data148 = {{{endowment|}}} | label149 = Budget | data149 = {{{budget|}}} | label150 = School fees | data150 = {{{fees|}}} | label151 = Annual tuition | data151 = {{if empty|{{{annual_tuition|}}} | {{{annual tuition|}}} }} | label152 = Tuition | data152 = {{{tuition|}}} | label153 = Revenue | data153 = {{{revenue|}}} | label154 = Communities served | data154 = {{{communities|}}} | label155 = Feeder schools | data155 = {{if empty|{{{feeder_schools|}}} | {{{feeders|}}} }} | label156 = Feeder to | data156 = {{if empty|{{{feeder_to|}}} | {{{main feeder school for|}}} }} | label157 = Graduates{{#if: {{{graduates_year|}}} |&nbsp;{{nobold|({{{graduates_year|}}})}} }} | data157 = {{{graduates|}}} | label158 = {{#if: {{{affiliation|}}} | Affiliation | Affiliations }} | data158 = {{if empty|{{{affiliation|}}} | {{{affiliations|}}} }} | label159 = Alumni | data159 = {{{alumni|}}} | label160 = Alumni name | data160 = {{{alumni_name|}}} | label161 = [[List of Nobel laureates|Nobel laureate]]s | data161 = {{{nobel_laureates|}}} | label162 = Information | data162 = {{{information|}}} | label163 = {{if empty| {{{free_label|}}} | Other }} | data163 = {{#if: {{{free_label|}}} | {{if empty|{{{free|}}}|{{{free_text|}}}}} }} | label164 = {{if empty|{{{free_label1|}}}|{{{free_label_1|}}}}} | data164 = {{#if: {{{free_label1|}}}{{{free_label_1|}}} | {{if empty|{{{free_1|}}}|{{{free_text1|}}}}} }} | label165 = {{if empty|{{{free_label2|}}}|{{{free_label_2|}}}}} | data165 = {{#if: {{{free_label2|}}}{{{free_label_2|}}} | {{if empty|{{{free_2|}}}|{{{free_text2|}}}}} }} | label166 = {{if empty|{{{free_label3|}}}|{{{free_label_3|}}}}} | data166 = {{#if: {{{free_label3|}}}{{{free_label_3|}}} | {{if empty|{{{free_3|}}}|{{{free_text3|}}}}} }} | label167 = {{if empty|{{{free_label4|}}}|{{{free_label_4|}}}}} | data167 = {{#if: {{{free_label4|}}}{{{free_label_4|}}} | {{if empty|{{{free_4|}}}|{{{free_text4|}}}}} }} | label168 = {{if empty|{{{free_label5|}}}|{{{free_label_5|}}}}} | data168 = {{#if: {{{free_label5|}}}{{{free_label_5|}}} | {{if empty|{{{free_5|}}}|{{{free_text5|}}}}} }} | label169 = Website | data169 = {{if empty|{{{website|}}}|{{{homepage|}}}|{{{url|}}}}} | header170 = _BLANK_ | rowstyle171 = | data171 = {{{footnotes|}}} | data172 = {{#if:{{{picture|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{picture}}}}}{{#if: {{{picture_caption|}}} | <br />{{{picture_caption|}}} }} }} | data173 = {{#if:{{{picture2|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{picture2}}}}}{{#if: {{{picture_caption2|}}} | <br /> {{{picture_caption2|}}} }} }} | data174 = {{{module|}}} | belowstyle = | below = {{#if: {{{lastupdate|}}} | Last updated: {{{lastupdate}}} }} }}<!-- -->{{#invoke:Check for clobbered parameters|check|template=Infobox school|cat={{main other|Category:Pages using infobox school with unsupported parameters}} |established; founded; opened | image_size; image size; imagesize|address; street; streetaddress|city; town; city/town|postcode; postalcode; zipcode|other_names; other_name|former_names; former_name|fundingtype; type|mottoes; motto|religious_affiliation; religion|founders; founder|school_board; schoolboard|educational_authority; educational authority; authority|specialists; specialist|school_number; schoolnumber; number|school_code; school code|campus_director; campus director|head_of_school; head of school|head_teacher; headteacher|head_name; head_label|staff; number_of_staff; number of staff|employees; num_employ|years_taught; years taught|nursery_years_taught; nursery years taught|primary_years_taught; primary years taught|secondary_years_taught; secondary years taught|lower_age; age_range; age range|enrolment; enrollment; students; pupils; school_roll; roll|enrolment_as_of; enrollment_as_of; students_as_of; pupils_as_of|other_grade_enrollment; other_grade_enrolment|other_grade_enrollment_1; other_grade_enrolment_1|other_grade_enrollment_2; other_grade_enrolment_2|average_class_size; avg_class_size; class|classes_offered; classes offered|language; medium_of_language; medium of language; medium; mediums|schedule_type; schedtyp|campus_size; campus size|campus_type; campus type|colours; colors; schoolcolours; schoolcolors; school_colours; school_colors|fight_song; fightsong|athletics_conference; athletics conference; athletic_conference; athletic conference; conference|team_name; team name; teamname|rival; rivals|accreditation; accreditations|USNWR_ranking; ranking|test_average; testaverage|bar_pass_rate; bar pass rate|annual_tuition; annual tuition|feeders; feeder_schools|feeder_to; main feeder school for|affiliation; affiliations|free_label1; free_label_1|free_1; free_text1|free_label2; free_label_2|free_2; free_text2|free_label3; free_label_3|free_3; free_text3|free_label4; free_label_4|free_4; free_text4|free_label5; free_label_5|free_5; free_text5|website; homepage; url }}{{main other|<!-- -->{{#if:{{{module|}}}|[[Category:Pages using infobox school with the module parameter]]}}<!-- -->{{#if:{{{coordinates|}}}|{{#ifeq:{{#invoke:coordinates|coord2text|{{{coordinates|}}}|lat}}||[[Category:Pages using infobox school with coordinates not using the Coord template]]}}}}<!-- -->}}<!-- -->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox school with unsupported parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox school]] with unknown parameter "_VALUE_"|ignoreblank=y| accreditation | accreditations | ACT | ACT_year | acting_headteacher | address | administrator | affiliation | affiliations | age range | age_range | alt | alumni | alumni_name | annual tuition | annual_tuition | area | athletic conference | athletic_conference | athletics | athletics conference | athletics_conference | authority | authorizer | average_class_size | avg_class_size | bar pass rate | bar_pass_rate | box_style | box_width | budget | campus | campus director | campus size | campus type | campus_director | campus_size | campus_type | campuses | capacity | caption | category | category_label | ceeb | chair | chair_label | chairman | chairman_label | chairperson | chairperson_label | chaplain | city | city/town | class | classes | classes offered | classes_offered | classrooms | closed | colors | colours | communities | conference | coordinates | coordinates_footnotes | country | country1 | county | dean | decile | denomination |dfeno <!-- dfeno is not supported, but it is also not flagged as an unsupported parameter yet, pending talk page discussion. See talk, November 2018 --> | director | district | educational authority | educational_authority | employees | endowment | enrollment | enrollment_as_of | enrolment | enrolment_as_of | established | executive_headteacher | faculty | feeder_schools | feeder_to | feeders | fees | fight_song | fightsong | footnotes | former_name | former_names | founded | founder | founders | free | free_1 | free_2 | free_3 | free_4 | free_5 | free_label | free_label_1 | free_label_2 | free_label_3 | free_label_4 | free_label_5 | free_label1 | free_label2 | free_label3 | free_label4 | free_label5 | free_text | free_text1 | free_text2 | free_text3 | free_text4 | free_text5 | fundingtype | gender | gender_label | grade_preK | grade1 | grade10 | grade11 | grade12 | grade13 | grade2 | grade3 | grade4 | grade5 | grade6 | grade7 | grade8 | grade9 | gradeK | grades | grades_label | graduates | graduates_year | head | head of school | head teacher | head_label | head_name | head_name2 | head_of_school | head_teacher | head2 | headmaster | headmistress | headteacher | homepage | hours_in_day | houses | image | image size | image_name | image_size | imagesize | imagewikilink | information | international_students | key_people | language | lastupdate | latin_name | LEA | local_authority | locale | location | logo | logo_alt | logo_size | lower_age | main feeder school for | mascot | medium | medium of language | medium_of_language | mediums | module | MOE | motto | motto_translation | mottoes | name | national_ranking | native_name | newspaper | nickname | nobel_laureates | num_employ | number | number of staff | number_of_staff | nursery years taught | nursery_years_taught | officer_in_charge | ofsted | opened | other | other_grade_enrollment | other_grade_enrollment_1 | other_grade_enrollment_2 | other_grade_enrolment | other_grade_enrolment_1 | other_grade_enrolment_2 | other_grade_label | other_grade_label_1 | other_grade_label_2 | other_name | other_names | oversight | oversight_label | patron | picture | picture_caption | picture_caption2 | picture2 | postalcode | postcode | president | primary years taught | primary_years_taught | principal | principal_label | principal_label1 | principal_label2 | principal_label3 | principal_label4 | principal1 | principal2 | principal3 | principal4 | products | province | publication | pupils | pupils_as_of | pushpin_image | pushpin_label | pushpin_label_position | pushpin_map | pushpin_map_alt | pushpin_map_caption | pushpin_mapsize | r_head | r_head_label | ranking | ratio | rector | region | rel_head | rel_head_name | religion | religious_affiliation | revenue | rival | rivals | roll | SAT | SAT_year | schedtyp | schedule | schedule_type | school code | school_board | school_code | school_colors | school_colours | school_number | school_roll | schoolboard | schoolcolors | schoolcolours | schoolnumber | schooltype | seal_alt | seal_image | seal_size | secondary years taught | secondary_years_taught | session | sister_school | sixth_form_students | size | slogan | song | specialist | specialists | sports | staff | state | status | street | streetaddress | student_union | student_union_label | students | students_as_of | superintendent | system | teaching_staff | team name | team_name | teamname | teams | teams_label | test_average | test_name | testaverage | testname | town | trust | trustee | tuition | type | upper_age | url | urn | us_nces_district_id | us_nces_school_id | USNWR_ranking | website | yearbook | years | years taught | years_taught | zipcode | mapframe | mapframe-caption | mapframe-custom | mapframe-id | mapframe-coord | mapframe-wikidata | mapframe-point | mapframe-shape | mapframe-frame-width | mapframe-frame-height | mapframe-shape-fill | mapframe-shape-fill-opacity | mapframe-stroke-color | mapframe-stroke-colour | mapframe-stroke-width | mapframe-marker | mapframe-marker-color | mapframe-marker-colour | mapframe-geomask | mapframe-geomask-stroke-color | mapframe-geomask-stroke-colour | mapframe-geomask-stroke-width | mapframe-geomask-fill | mapframe-geomask-fill-opacity | mapframe-zoom | mapframe-length_km | mapframe-length_mi | mapframe-area_km2 | mapframe-area_mi2 | mapframe-frame-coordinates | mapframe-frame-coord | mapframe-switcher }}<!-- --><noinclude>{{documentation}}</noinclude> 134ae3f3fe66f0c16f4e7c3da68ef224b63e6b59 Module:Native name 828 1183 2512 2022-12-08T18:00:44Z w>Izno 0 use module:list, simplify _native_name_list return Scribunto text/plain require('strict'); local getArgs = require ('Module:Arguments').getArgs; local lang_module = require ('Module:Lang'); local yes_no = require('Module:Yesno') local defined_values = { italic = {['no']='no', ['off']='no'}, -- values accepted by |italic= and |italics=; {{lang}} expects 'no' so 'off' must be translated paren = {['no']=true, ['off']=true, ['omit']=true}, -- values accepted by |paren= } local messages_t = { tag_required = 'an IETF language tag as parameter {{{1}}} is required', -- for {{native name}} name_required = 'a name as parameter {{{2}}} is required', tag_required_idx = 'an IETF language tag in |tag%s= is required', -- for {{native name}} when called from {{native name list}} name_required_idx = 'a name in |name%s= is required', empty_list = 'list is empty', -- for {{native name list}} positional = 'positional parameters not supported', br_list = '&lt;br /> lists not allowed', -- for {{native name checker}} list_markup = 'list markup expected for multiple names', malformed_param = 'parameter value is malformed', } local help_links_t = { ['native name'] = '[[Template:Native name|help]]', ['native name checker'] = '[[Template:Native name checker|help]]', ['native name list'] = '[[Template:Native name list|help]]', } local error_cats_t = { ['native name'] = '[[Category:Native name template errors]]', ['native name checker'] = '[[Category:Native name checker template errors]]', ['native name list'] = '[[Category:Native name list template errors]]', } --[[--------------------------< E R R O R _ M S G >------------------------------------------------------------ returns a formatted error message ]] local function error_msg (msg, template, index) local cat = ((0 == mw.title.getCurrentTitle().namespace) and error_cats_t[template]) or ''; if index then local message = string.format (msg, index); return string.format ('<span style="color:#d33">Error {{%s}}: %s (%s)</span>%s', template, message, help_links_t[template], cat) end return string.format ('<span style="color:#d33">Error {{%s}}: %s (%s)</span>%s', template, msg, help_links_t[template], cat) end --[=[-------------------------< _ N A T I V E _ N A M E >------------------------------------------------------ implements {{native name}}; entry point from a module <args_t> is a table of parameter name/value pairs. Parameters that are supported are: args_t[1] - IETF language tag (required) args_t[2] - the native name (required) args_t.italic - accepts string values 'no' or 'off'; {{lang}} expects 'no' so 'off' must be translated args_t.italics - alias of |italic= args_t.paren - accepts 'omit', 'off', or 'no' args_t.icon - alias of paren args_t.parensize - args_t.fontsize - deprecated alias of |parensize= args_t.nolink - any value inhibits wikilinking of language name args_t.suppress_empty_list_error - when set to 'yes', suppresses an 'empty' error message; mostly for use within another template this function calls these functions in Module:lang: _is_ietf_tag _lang _name_from_tag TODO: add support for romanization and transliteration? add support for postfix so that 'mis' can render something like this: {{native|name|mis|Chotilapacquen|parent=omit|postfix=&#32;([[Coahuiltecan languages|Coahuiltecan]])}} Chotilapacquen (Coahuiltecan) ]=] local function _native_name (args_t) local template = (args_t.template and args_t.template) or 'native name'; -- for error messaging; use 'native name list' when called from native_name_list(), etc if not (args_t[1] or args_t[2]) and yes_no (args_t.suppress_empty_list_error) then return ''; -- if empty list error is suppressed, return empty string elseif not args_t[1] then return error_msg ((args_t.index and messages_t.tag_required_idx) or messages_t.tag_required, template, args_t.index) elseif not args_t[2] then return error_msg ((args_t.index and messages_t.name_required_idx) or messages_t.name_required, template, args_t.index) end args_t.italic = args_t.italics or args_t.italic; -- plural form first in {{native name}} but singular form for {{lang}} args_t.italic = defined_values.italic[args_t.italic] or nil; -- translate assigned value args_t.italics = nil; -- so unset as unneeded args_t.paren = args_t.paren or args_t.icon; args_t.icon = nil; -- unset as unneeded args_t.parensize = args_t.parensize or args_t.fontsize or '100%'; args_t.fontsize = nil; -- unset as unneeded local out_t = {}; table.insert (out_t, lang_module._lang ({args_t[1], args_t[2], ['italic']=args_t.italic, ['template']=template})); if not defined_values.paren[args_t.paren] then table.insert (out_t, '&nbsp;'); table.insert (out_t, table.concat ({ '<span class="languageicon" style="font-size:', args_t.parensize, '; font-weight:normal">'})); if args_t.nolink then table.insert (out_t, table.concat ({'(', lang_module._name_from_tag ({args_t[1], ['template']=template}), ')'})); else if lang_module._is_ietf_tag (args_t[1]) then table.insert (out_t, table.concat ({'(', lang_module._name_from_tag ({args_t[1], ['link'] ='yes', ['template']=template}), ')'})); else table.insert (out_t, '(language?)'); -- TODO: any reason to keep this? end end table.insert (out_t, '</span>'); end return table.concat (out_t); end --[[--------------------------< N A T I V E _ N A M E >-------------------------------------------------------- implements {{native name}}; entry point from the template {{#invoke:native name|native_name|<tag>|<name>|italic=|paren=|parensize=|nolink=}} ]] local function native_name (frame) return _native_name (getArgs (frame)); end --[[--------------------------> _ N A T I V E _ N A M E _ L I S T >-------------------------------------------- implements {{native name}}; entry point from a module <args_t> is a table of parameter name/value pairs. Supports enumerated forms of the {{native name}} parameters: args_t.tagn - IETF language tag (|tag1= required) args_t.namen - the native name (|name1= required) args_t.italicn - accepts string values 'no' or 'off' args_t.italicsn - alias of |italicn= args_t.parenn - accepts 'omit', 'off', or 'no' args_t.iconn - alias of paren args_t.parensizen - args_t.fontsizen - deprecated alias of |parensizen= args_t.nolinkn - any value inhibits wikilinking of language name also supports: args_t.postfixn - wikitext to be appended to list item n (references other appropriate text) args_t.suppress_empty_list_error - when set to 'yes', suppresses an 'empty list' error message; mostly for use within another template ]] local function _native_name_list (args_t) if args_t[1] then return error_msg (messages_t.positional, 'native name list') end local unsorted_enumerators_t = {} -- unsorted k/v table of tagn and namen enumerators where k is the enumerator and v is always true for param, _ in pairs (args_t) do -- loop through all parameters local enumerator = mw.ustring.match (param, "^tag(%d+)$") -- is this a |tagn= parameter? extract enumerator if present if enumerator then -- if there is an enumerator unsorted_enumerators_t[tonumber(enumerator)] = true -- add enumerator to the table else local name_match = mw.ustring.match (param, "^name(%d+)$") -- is this a |tagn= parameter? extract enumerator if present if name_match then -- if there is an enumerator unsorted_enumerators_t[tonumber (name_match)] = true -- add enumerator to the table end end end local enumerators_t = {} -- will hold a sorted sequence of enumerators for n, _ in pairs (unsorted_enumerators_t) do -- loop through the k/v table of enumerators table.insert (enumerators_t, n) -- add the enumerator to the sequence end table.sort (enumerators_t) -- and ascending sort local list_t = {}; -- list of formatted native names goes here for _, n in ipairs (enumerators_t) do -- loop through the sorted enumerators table.insert (list_t, table.concat ({ _native_name ({ -- go render the native name args_t['tag'..n], args_t['name'..n], ['italic'] = args_t['italic'..n], ['italics'] = args_t['italics'..n], ['paren'] = args_t['paren'..n], ['icon'] = args_t['icon'..n], ['parensize'] = args_t['parensize'..n], ['fontsize'] = args_t['fontsize'..n], ['nolink'] = args_t['nolink'..n], ['template'] = 'native name list', -- for error messaging ['index'] = n, -- for error messaging }), args_t['postfix'..n] or '', })); end if 0 == #list_t then return (yes_no (args_t.suppress_empty_list_error) and '') or -- return empty string when error suppressed error_msg (messages_t.empty_list, 'native name list'); -- otherwise error elseif 1 == #list_t then return list_t[1]; -- return the very short list; TODO: add error? else return require ('Module:List').unbulleted (list_t); -- use unbulleted list from module end end --[[--------------------------< N A T I V E _ N A M E _ L I S T >---------------------------------------------- implements {{native name list}}; entry point from the template {{#invoke:native name list|native_name_list|tag1=<tag>|name1=<name>|italic1=|paren1=|parensize1=|nolink1=}} ]] local function native_name_list (frame) return _native_name_list (getArgs (frame)); end --[[--------------------------< _ N A T I V E _ N A M E _ C H E C K E R >-------------------------------------- entry point from a module implements {{native name checker}} for use inside infoboxen: |dataxx = {{native name checker|{{{native_name|}}}}} inspects rendered content of {{{native_name}}}: expects: at least one lang="<valid IETF tag>" html attribute; tag must begin with 2 or three letters followed by a hyphen or double quote character: lang="zh-Hant" or lang="nav" or lang="oj" emits error message when 2 or more lang="<valid IETF tag>" html attribute but list markup <li> tag not found emits error message if any form of '<br />' tag is found per MOS:NOBREAK returns: nothing when |native_name= is omitted or empty assigned value when no error error message on error ]] local function _native_name_checker (args_t) local value = args_t[1]; if not value then -- if |native_name= is omitted or empty return; -- return nothing end local _, count = value:gsub ('lang="%a%a%a?[%-"]%a*', '%1'); if 0 == count then return table.concat ({value, error_msg (messages_t.malformed_param, 'native name checker')}, ' '); -- no {{lang}} or {{native_name}} template end if 1 < count then if not value:find ('<div class="plainlist *" *>') or not value:find ('</div>$') then -- must be wrapped in 'plainlist' div return table.concat ({value, error_msg (messages_t.list_markup, 'native name checker')}, ' '); end end if value:find ('< */? *[Bb][Rr] */? *>') then -- look for something that vaguely resembles a <br /> tag return table.concat ({value, error_msg (messages_t.br_list, 'native name checker')}, ' '); end return value; -- no failed tests, return the value as is end --[[--------------------------< N A T I V E _ N A M E _ C H E C K E R >-------------------------------------- entry point from a module implements {{native name checker}} ]] local function native_name_checker (frame) return _native_name_checker (getArgs (frame)); end --[[--------------------------< E X P O R T S >---------------------------------------------------------------- ]] return { native_name = native_name, -- template interface native_name_list = native_name_list, native_name_checker = native_name_checker, _native_name = _native_name, -- other module interface _native_name_list = _native_name_list, _native_name_checker = _native_name_checker, } b58f845623d3e920e8098e96bd84a56d2d3079bb Template:Fix comma category 10 1437 2772 2022-12-08T20:50:50Z Pppery 6 Doc to subpage wikitext text/x-wiki {{#invoke:String|replace|{{{1}}}|%[%[Category:(.-)from (.-) 2,(.-)%]%]|[[Category:%1 from %2 2%3]]|plain=false}}<noinclude>{{documentation}}</noinclude> beac35ea2acb0b21dc3e27cb7807f3a10bbb7948 Template:Infobox French commune 10 1147 2473 2022-12-09T19:57:18Z w>Terasail 0 Remove depreciated parameters from [[Template:Hidden begin]] wikitext text/x-wiki <includeonly>{{Infobox settlement <!-- See Template:Infobox settlement for additional fields and descriptions --> | name = {{{name|}}} | native_name = {{{native name|}}} | native_name_lang = {{{native_name_lang}}} | settlement_type = {{ safesubst:#if: {{{commune|}}} | {{{type|Part}}} of {{Link if exists|{{{commune}}} }} | {{{commune status|}}} }} | total_type = {{ safesubst:#if: {{{total type|}}} | {{{total type|}}} |&nbsp;}} | image_skyline = {{{image|}}} | imagesize = {{{image size|270x250px}}} | image_caption = {{{caption|}}} | image_flag = {{{image flag|}}} | flag_size = {{{image flag size|}}} | flag_link = {{{flag_link|{{{flag link|}}}}}} | image_shield = {{{image coat of arms|}}} | shield_size = {{ safesubst:#if: {{{image coat of arms size|}}} | {{{image coat of arms size}}} | 80x80px }} | shield_link = {{{shield_link|}}} | motto = {{{city motto|}}} | image_map = {{ safesubst:#if: {{{map|}}} | {{{map}}} | {{ safesubst:#if: {{{adjustable map|}}} | {{{adjustable map}}} }} }} | mapsize = {{{map size|}}} | map_caption = {{{map caption|}}} | image_map1 = {{ safesubst:#if: {{infobox mapframe}} | {{hidden |title=Location of {{{name|}}} | contentstyle=height:5px; | content = <div class="center" style="margin-top:1em">{{Infobox mapframe|area_km2={{{area km2|}}} }}</div> }} }} | pushpin_map = {{#switch: {{str left|{{{INSEE|}}}|2}} | = <!-- blank INSEE code -->{{ safesubst:#if: {{{map|}}} | | {{ safesubst:#if: {{{adjustable map|}}} | | {{ safesubst:#if: {{{coordinates|}}} | France }} }} }} |03|15|43|63|01|07|26|38|42|69|73|74 = France#France Auvergne-Rhône-Alpes |21|58|71|89|25|39|70|90 = France#France Bourgogne-Franche-Comté |22|29|35|56 = France#France Bretagne |18|28|36|37|41|45 = France#France Centre |2A|2B = France#France Corsica |67|68|08|10|51|52|54|55|57|88 = France#France Grand Est |59|62|02|60|80 = France#France Hauts-de-France |75|77|78|91|92|93|94|95 = France#France Île-de-France |14|50|61|27|76 = France#France Normandy |24|33|40|47|64|19|23|87|16|17|79|86 = France#France Nouvelle-Aquitaine |11|30|34|48|66|09|12|31|32|46|65|81|82 = France#France Occitanie |44|49|53|72|85 = France#France Pays de la Loire |04|05|06|13|83|84 = France#France Provence-Alpes-Côte d'Azur |97|98 = <!-- DOMTOM no map available -->{{ safesubst:#if: {{{map|}}} | | {{ safesubst:#if: {{{adjustable map|}}} | | {{ safesubst:#if: {{{coordinates|}}} | France }} }} }} |#default = {{ safesubst:#if: {{{map|}}} | | {{ safesubst:#if: {{{adjustable map|}}} | | {{ safesubst:#if: {{{coordinates|}}} | France }} }} }} }} | pushpin_mapsize = 270px | pushpin_label_position = {{ safesubst:#ifexpr: {{safesubst:if empty|{{safesubst:#invoke:coordinates|coord2text|{{{coordinates|}}}|long}}|-2}} > 3 | left | right}} | pushpin_map_caption = | coordinates = {{{coordinates|}}} | subdivision_type = Country | subdivision_name = [[France]] | subdivision_type1 = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}} |988 = [[Subdivisions of France#Overseas|''Sui generis'' collectivity]] |975|977|978|986|987 = [[Overseas collectivity]] |971|972|973|974|976 = [[Overseas departments and regions of France|Overseas region and department]] |#default = [[Regions of France|Region]] }} | subdivision_name1 = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}} |975 = [[Saint Pierre and Miquelon]] |976 = [[Mayotte]] |977 = [[Saint Barthélemy]] |978 = [[Collectivity of Saint Martin|Saint Martin]] |986 = [[Wallis and Futuna]] |987 = [[French Polynesia]] |988 = [[New Caledonia]] |971 = [[Guadeloupe]] |972 = [[Martinique]] |973 = [[French Guiana]] |974 = [[Réunion]] }}<!-- -->{{ safesubst:#switch: {{str left|{{{INSEE}}}|2}} |03|15|43|63|01|07|26|38|42|69|73|74 = [[Auvergne-Rhône-Alpes]] |22|29|35|56 = [[Brittany (administrative region)|Brittany]] |21|58|71|89|25|39|70|90 = [[Bourgogne-Franche-Comté]] |18|28|36|37|41|45 = [[Centre-Val de Loire]] |2A|2B = [[Corsica]] |67|68|08|10|51|52|54|55|57|88 = [[Grand Est]] |59|62|02|60|80 = [[Hauts-de-France]] |75|77|78|91|92|93|94|95 = [[Île-de-France]] |14|50|61|27|76 = [[Normandy (administrative region)|Normandy]] |24|33|40|47|64|19|23|87|16|17|79|86 = [[Nouvelle-Aquitaine]] |11|30|34|48|66|09|12|31|32|46|65|81|82 = [[Occitania (administrative region)|Occitania]] |44|49|53|72|85 = [[Pays de la Loire]] |04|05|06|13|83|84 = [[Provence-Alpes-Côte d'Azur]] }} | subdivision_type2 = {{ safesubst:#if: {{{province|}}} | [[Administrative divisions of New Caledonia|Province]] | {{ safesubst:#if: {{{administrative subdivision|}}} | [[Administrative divisions of French Polynesia|Subdivision]] | {{ safesubst:#switch: {{{INSEE}}} |69003 |69029 |69033 |69034 |69040 |69044 |69046 |69063 |69068 |69069 |69071 |69072 |69081 |69085 |69087 |69088 |69089 |69091 |69096 |69100 |69116 |69117 |69123 |69127 |69142 |69143 |69149 |69152 |69153 |69163 |69168 |69191 |69194 |69199 |69202 |69204 |69205 |69207 |69233 |69244 |69250 |69256 |69259 |69260 |69266 |69271 |69273 |69275 |69276 |69278 |69279 |69282 |69283 |69284 |69286 |69290 |69292 |69293 |69296 = [[Territorial collectivity|Metropolis]] |#default = {{ safesubst:#switch: {{str left|{{{INSEE}}}|2}} |97|98 = |#default = [[Departments of France|Department]] }} }} }} }} | subdivision_name2 = {{ safesubst:#if: {{{province|}}} | {{{province}}} | {{ safesubst:#if: {{{administrative subdivision|}}} | {{{administrative subdivision}}} | {{ safesubst:#switch: {{{INSEE}}} |69003 |69029 |69033 |69034 |69040 |69044 |69046 |69063 |69068 |69069 |69071 |69072 |69081 |69085 |69087 |69088 |69089 |69091 |69096 |69100 |69116 |69117 |69123 |69127 |69142 |69143 |69149 |69152 |69153 |69163 |69168 |69191 |69194 |69199 |69202 |69204 |69205 |69207 |69233 |69244 |69250 |69256 |69259 |69260 |69266 |69271 |69273 |69275 |69276 |69278 |69279 |69282 |69283 |69284 |69286 |69290 |69292 |69293 |69296 = [[Lyon Metropolis]] |#default = {{ safesubst:#switch: {{str left|{{{INSEE}}}|2}} |01 = [[Ain]] |02 = [[Aisne]] |03 = [[Allier]] |04 = [[Alpes-de-Haute-Provence]] |05 = [[Hautes-Alpes]] |06 = [[Alpes-Maritimes]] |07 = [[Ardèche]] |08 = [[Ardennes (department)|Ardennes]] |09 = [[Ariège (department)|Ariège]] |10 = [[Aube]] |11 = [[Aude]] |12 = [[Aveyron]] |13 = [[Bouches-du-Rhône]] |14 = [[Calvados (department)|Calvados]] |15 = [[Cantal]] |16 = [[Charente]] |17 = [[Charente-Maritime]] |18 = [[Cher (department)|Cher]] |19 = [[Corrèze]] |2A = [[Corse-du-Sud]] |2B = [[Haute-Corse]] |21 = [[Côte-d'Or]] |22 = [[Côtes-d'Armor]] |23 = [[Creuse]] |24 = [[Dordogne]] |25 = [[Doubs]] |26 = [[Drôme]] |27 = [[Eure]] |28 = [[Eure-et-Loir]] |29 = [[Finistère]] |30 = [[Gard]] |31 = [[Haute-Garonne]] |32 = [[Gers]] |33 = [[Gironde]] |34 = [[Hérault]] |35 = [[Ille-et-Vilaine]] |36 = [[Indre]] |37 = [[Indre-et-Loire]] |38 = [[Isère]] |39 = [[Jura (department)|Jura]] |40 = [[Landes (department)|Landes]] |41 = [[Loir-et-Cher]] |42 = [[Loire (department)|Loire]] |43 = [[Haute-Loire]] |44 = [[Loire-Atlantique]] |45 = [[Loiret]] |46 = [[Lot (department)|Lot]] |47 = [[Lot-et-Garonne]] |48 = [[Lozère]] |49 = [[Maine-et-Loire]] |50 = [[Manche]] |51 = [[Marne (department)|Marne]] |52 = [[Haute-Marne]] |53 = [[Mayenne]] |54 = [[Meurthe-et-Moselle]] |55 = [[Meuse (department)|Meuse]] |56 = [[Morbihan]] |57 = [[Moselle (department)|Moselle]] |58 = [[Nièvre]] |59 = [[Nord (French department)|Nord]] |60 = [[Oise]] |61 = [[Orne]] |62 = [[Pas-de-Calais]] |63 = [[Puy-de-Dôme]] |64 = [[Pyrénées-Atlantiques]] |65 = [[Hautes-Pyrénées]] |66 = [[Pyrénées-Orientales]] |67 = [[Bas-Rhin]] |68 = [[Haut-Rhin]] |69 = [[Rhône (department)|Rhône]] |70 = [[Haute-Saône]] |71 = [[Saône-et-Loire]] |72 = [[Sarthe]] |73 = [[Savoie]] |74 = [[Haute-Savoie]] |75 = {{safesubst:#ifeq:{{safesubst:FULLPAGENAME}}|Paris|Paris|[[Paris]]}} |76 = [[Seine-Maritime]] |77 = [[Seine-et-Marne]] |78 = [[Yvelines]] |79 = [[Deux-Sèvres]] |80 = [[Somme (department)|Somme]] |81 = [[Tarn (department)|Tarn]] |82 = [[Tarn-et-Garonne]] |83 = [[Var (department)|Var]] |84 = [[Vaucluse]] |85 = [[Vendée]] |86 = [[Vienne]] |87 = [[Haute-Vienne]] |88 = [[Vosges (department)|Vosges]] |89 = [[Yonne]] |90 = [[Territoire de Belfort]] |91 = [[Essonne]] |92 = [[Hauts-de-Seine]] |93 = [[Seine-Saint-Denis]] |94 = [[Val-de-Marne]] |95 = [[Val-d'Oise]] |#default = }} }} }} }} | subdivision_type3 = {{ safesubst:#if: {{{arrondissement|}}} | [[Arrondissements of France|Arrondissement]] }} | subdivision_name3 = {{ safesubst:#ifexist: Arrondissement of {{{arrondissement|}}} | [[Arrondissement of {{{arrondissement|(arrondissement)}}}|{{{arrondissement}}}]] | {{{arrondissement|}}} }} | subdivision_type4 = {{ safesubst:#if: {{{canton|}}} | [[Cantons of France|Canton]] }} | subdivision_name4 = {{ safesubst:#ifexist: Canton of {{{canton|}}} | [[Canton of {{{canton|(canton)}}}|{{{canton}}}]] | {{{canton|}}} }} | subdivision_type5 = {{ safesubst:#if: {{{intercommunality|}}} | [[Communes of France#Intercommunality|Intercommunality]] }} | subdivision_name5 = {{{intercommunality|}}} | subdivision_type6 = {{ safesubst:#if: {{{commune|}}} | [[Communes of France|Commune]] }} | subdivision_name6 = {{Link if exists|{{{commune}}} }} | parts_type = {{{subdivisions entry|}}} | parts = {{{subdivisions|}}} | leader_party = {{{party|}}} | leader_title = Mayor {{ safesubst:#if: {{{term|}}} | {{nobold|({{{term}}}) }} }} | leader_name = {{{mayor|}}} | area_footnotes = {{ safesubst:#if: {{{area km2|}}} |<sup>'''1'''</sup> }}{{{area footnotes|}}} | area_urban_footnotes = {{ safesubst:#if: {{{urban area date|}}} | &nbsp;({{{urban area date|}}}) }} | area_urban_km2 = {{{urban area km2|}}} | area_metro_footnotes = {{ safesubst:#if: {{{metro area date|}}} | &nbsp;({{{metro area date|}}}) }} | area_metro_km2 = {{{metro area km2|}}} | area_total_km2 = {{{area km2|}}} | population_footnotes = {{{population footnotes|}}} | population_as_of = {{ safesubst:#ifeq: {{Str find|{{{population date}}}|UNIQ}} | 6 | {{Str number/trim|{{{population date}}}}} | {{{population date|}}} }} | population_rank = {{{population ranking|}}} | population_urban_footnotes = {{ safesubst:#if: {{{urban pop date|}}} | &nbsp;({{{urban pop date|}}}) }} | population_urban = {{{urban pop|}}} | population_density_urban_km2 = auto | population_metro_footnotes = {{ safesubst:#if: {{{metro area pop date|}}} | &nbsp;({{{metro area pop date|}}}) }} | population_metro = {{{metro area pop|}}} | population_density_metro_km2 = auto | population_total = {{{population|}}} | population_density_km2 = auto | population_demonym = {{{population demonym|{{{population_demonym|{{{demonym|}}}}}}}}} | demographics_type1 = {{ safesubst:#if: {{{ethnic|}}} | Ethnic distribution }} | demographics1_footnotes = <!-- for references: use <ref> tags --> | demographics1_title1 = {{{ethnic date|}}} | demographics1_info1 = {{{ethnic|}}} | timezone1 = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}} |971 |972 |977 |978 = [[Atlantic Time Zone|AST]] |973 |974 |975 |976 |986 |987 |988 = <!-- no named time zone --> |#default = [[Central European Time|CET]] }} | utc_offset1 = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}} |971 |972 |977 |978 = −04:00 |973 |975 = −03:00 |976 = +03:00 |974 = +04:00 |988 = +11:00 |986 = +12:00 |987 = {{{utc_offset|{{{utc offset|}}}}}} <!-- French Polynesia has 3 time zones --> |#default = +01:00 }} | timezone1_DST = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}} |971 |972 |973 |974 |976 |977 |978 |986 |987 |988 = <!-- no daylight saving time --> |975 = <!-- no named time zone --> |#default = [[Central European Summer Time|CEST]] }} | utc_offset1_DST = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}} |975 = −02:00 |971 |972 |973 |974 |976 |977 |978 |986 |987 |988 = <!-- no daylight saving time --> |#default = +02:00 }} | postal_code_type = {{ safesubst:#if: {{{commune|}}} | Postal code | [[INSEE code|INSEE]]/Postal code }} | postal_code = {{ safesubst:#if: {{{commune|}}} | {{{postal code|}}} | {{ safesubst:#if:{{{insee|{{{INSEE|}}}}}} | {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}} |975 |977 |978 |986 = {{{insee|{{{INSEE}}}}}} <!-- no INSEE page for the commune available --> |976 = [https://www.insee.fr/fr/statistiques/2011101?geo=COM-{{{insee|{{{INSEE}}}}}} {{{insee|{{{INSEE}}}}}}] <!-- "Dossier complet" page for the commune available --> |987 = [https://www.ispf.pf/Publications/fiches-communales {{{insee|{{{INSEE}}}}}}] <!-- "Fiche communale" page for the commune available --> |988 = [https://www.isee.nc/publications/la-nouvelle-caledonie-en-cartes-et-en-chiffres/chiffres-cles-des-communes {{{insee|{{{INSEE}}}}}}] <!-- "Fiche communale" page for the commune available --> |#default = [https://www.insee.fr/fr/statistiques/1405599?geo=COM-{{{insee|{{{INSEE}}}}}} {{{insee|{{{INSEE}}}}}}] <!-- "Comparateur de territoire" page for the commune available --> }} / }}{{{postal code|}}} }} | area_code_type = {{ safesubst:#if: {{{dialling code|}}} | [[Telephone numbers in France|Dialling codes]] }} | area_code = {{{dialling code|}}} | blank_name_sec1 = {{ safesubst:#if: {{{elevation min m|}}} | Elevation{{ safesubst:#if: {{{elevation footnotes|}}} | {{{elevation footnotes}}} }} }} | blank_info_sec1 = {{ safesubst:#if: {{{elevation min m|}}} | {{convert|{{formatnum:{{{elevation min m}}}|R}}|–|{{formatnum:{{{elevation max m}}}|R}}|m|ft|abbr=on}} }} {{ safesubst:#if: {{{elevation m|}}} | <br/>(avg. {{convert|{{formatnum:{{{elevation m}}}|R}}|m|ft|abbr=on|disp=or}}) }} | website = {{{website|}}} | module = {{{module|}}} | footnotes = {{{footnotes|}}}{{ safesubst:#if:{{{area km2|}}} | {{ safesubst:#if:{{{province|}}} | <sup>'''1'''</sup> New Caledonia Land Register (DITTT) data, which exclude lakes and ponds larger than 1&nbsp;km&sup2; (0.386&nbsp;sq&nbsp;mi or 247 acres) as well as the estuaries of rivers. | <sup>'''1'''</sup> French Land Register data, which excludes lakes, ponds, glaciers &gt; 1&nbsp;km<sup>2</sup> (0.386&nbsp;sq&nbsp;mi or 247 acres) and river estuaries. }} }} }}{{safesubst:#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox French commune with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox French commune]] with unknown parameter "_VALUE_"|ignoreblank=y| | adjustable map | administrative subdivision | area footnotes | area km2 | arrondissement | canton | caption | city motto | commune | commune status | coordinates | dialling code | elevation footnotes | elevation m | elevation max m | elevation min m | ethnic | ethnic date | flag link | flag_link | footnotes | image | image coat of arms | image coat of arms size | image flag | image flag size | image size | INSEE | insee | intercommunality | map | map caption | map dot label | map size | mayor | metro area date | metro area km2 | metro area pop | metro area pop date | module | name | native name | native_name_lang | party | population | population date | population demonym | population footnotes | population ranking | population_demonym | postal code | province | shield_link | subdivisions | subdivisions entry | term | time zone | time zone DST | timezone | timezone_DST | total type | type | urban area date | urban area km2 | urban pop | urban pop date | utc offset | utc offset DST | utc_offset | utc_offset_DST | website | demonym }}<!-- km²: removed, unused. Better not use incidental characters that are not available elsewhere (eg, no area_km² parameter) demonym: used 1400x, so added next to population demonym. error tracking categories: -->{{ safesubst:#iferror: {{ safesubst:#expr: {{formatnum:{{{population| }}}|R}} / {{{area_km2|{{{area km2| }}} }}} }} | {{Main other|[[Category:France articles requiring maintenance|Density error]]}} | }}<!-- testing density -->{{ safesubst:#iferror: {{ safesubst:#expr: {{formatnum:{{{elevation min m|}}}|R}} + {{formatnum:{{{elevation max m|}}}|R}} + {{formatnum:{{{elevation m|}}}|R}} + 2 }} | {{Main other|[[Category:France articles requiring maintenance|Elevation error]]}} | }}<!-- testing elevation -->{{ safesubst:#ifexpr: {{str find|{{{map dot label|{{{name|{{PAGENAME}}}}}}}}|<}} > 0 | {{Main other|[[Category:France articles requiring maintenance|L]]}} | {{ safesubst:#ifexpr: {{str find|{{{map dot label|{{{name|{{PAGENAME}}}}}}}}|[}} > 0 | {{Main other|[[Category:France articles requiring maintenance|L]]}}|}} }}<!-- Check for brackets in labels -->{{ safesubst:#if: {{{name|}}} | | {{Main other|[[Category:France articles requiring maintenance|Name]]}} }}<!-- testing name -->{{ safesubst:#if: {{{coordinates|}}} | | {{Main other|[[Category:France articles requiring maintenance|Nomap]]}} }}<!-- testing map -->{{ safesubst:#iferror: {{ safesubst:#expr: {{formatnum:{{{population}}}|R}} + 2 }} | {{Main other|[[Category:France articles requiring maintenance|Population error]]}} | }}<!-- testing population -->{{Main other|{{ safesubst:#if: {{{INSEE|}}} | | [[Category:France articles requiring maintenance|I]]}} }}<!-- Check for INSEE code -->{{Main other|{{ safesubst:#if: {{{mayor|}}} | {{ safesubst:#if: {{{term|}}} | | [[Category:France articles requiring maintenance|Term]]}} | }} }}<!-- Check if "mayor" is given without "term" parameter -->{{Main other|{{ safesubst:#if: {{{term|}}} | {{ safesubst:#if: {{{mayor|}}} | | [[Category:France articles requiring maintenance|Term]]}} | }} }}<!-- Check if "term" is given without "mayor" parameter --></includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> a87b164620c92ac0ecbbbd7d218b7c4355974412 Template:Plainlist/styles.css 10 154 357 2022-12-11T06:59:53Z wikipedia>Izno 0 add this reset from mobile.css sanitized-css text/css /* {{pp-template|small=yes}} */ .plainlist ol, .plainlist ul { line-height: inherit; list-style: none; margin: 0; padding: 0; /* Reset Minerva default */ } .plainlist ol li, .plainlist ul li { margin-bottom: 0; } 51706efa229ff8794c0d94f260a208e7c5e6ec30 Template:Indented plainlist 10 1246 2580 2022-12-12T00:21:22Z w>Izno 0 -raw plainlist wikitext text/x-wiki {{plainlist|class={{{class|}}}|style=margin-left:{{{in|{{{indent|1em}}}}}};text-indent:-{{{in|{{{indent|1em}}}}}};{{{style|}}}}}{{#if:{{{1|}}}| {{{1}}} {{endplainlist}}}}<noinclude></div> {{documentation}} </noinclude> 53356b0408eca171599999a642cb8ababe0874c7 Template:Hidden end 10 485 1071 2022-12-12T14:54:45Z wikipedia>Terasail 0 Only noinclude once wikitext text/x-wiki <includeonly></div></div></includeonly><noinclude> {{hatnote|Templates {{noredirect|Template:End hidden|End hidden}} and {{noredirect|Template:End hidden section|End hidden section}} redirect here.}} {{Documentation|Template:Hidden begin/doc}} </noinclude> 6cc7eb4776ef10092d5f7d48da123117e7b430b2 Template:Plainlist 10 599 1346 2022-12-12T22:45:26Z wikipedia>Izno 0 add tstyles here wikitext text/x-wiki <templatestyles src="Plainlist/styles.css"/><div class="plainlist {{{class|}}}" {{#if:{{{style|}}}{{{indent|}}}|style="{{#if:{{{indent|}}}|margin-left: {{#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}"}}>{{#if:{{{1|}}}| {{{1}}} </div>}}<noinclude></div> {{documentation}} </noinclude> 582fe7098c25c1ecfc0ad32f62ecd674ebe2bdf0 Module:Side box 828 109 265 2022-12-13T04:33:19Z wikipedia>Izno 0 we cookin with plainlist templatestyles now Scribunto text/plain local yesno = require('Module:Yesno') local p = {} local function makeData(args) local data = {} -- Main table classes data.classes = {} if yesno(args.metadata) ~= false then table.insert(data.classes, 'metadata') end if args.position and args.position:lower() == 'left' then table.insert(data.classes, 'side-box-left') else table.insert(data.classes, 'side-box-right') end if args.collapsible then table.insert(data.classes, 'mw-collapsible') if args.collapsible == "collapsed" then table.insert(data.classes, 'mw-collapsed') end data.collapsible = true end table.insert(data.classes, args.class) -- Image if args.image and args.image ~= 'none' then data.image = args.image end -- we have to check to see if a downstream use has plainlist like -- Template:Sister_project. also it's the default. wikitext is :( if args.textclass == 'plainlist' or not args.textclass then data.textclass = 'plainlist' data.plainlist_templatestyles = 'Plainlist/styles.css' else data.textclass = args.textclass end -- Copy over data that does not need adjusting local argsToCopy = { -- aria qualities 'role', 'labelledby', -- Styles 'style', 'textstyle', 'templatestyles', -- Above row 'above', 'abovestyle', -- Body row 'text', 'imageright', -- Below row 'below', } for i, key in ipairs(argsToCopy) do data[key] = args[key] end return data end local function renderSidebox(data) -- Renders the sidebox HTML. -- Table root local root = mw.html.create('div') root:attr('role', data.role) :attr('aria-labelledby', data.labelledby) :addClass('side-box') for i, class in ipairs(data.classes or {}) do root:addClass(class) end if data.style then root:cssText(data.style) end local frame = mw.getCurrentFrame() if data.plainlist_templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = data.plainlist_templatestyles } }) end -- The "above" row if data.above then local above = root:newline():tag('div') above:addClass('side-box-abovebelow') :newline() :wikitext(data.above) if data.textstyle then above:cssText(data.textstyle) end if data.abovestyle then above:cssText(data.abovestyle) end end -- The body row local body = root:newline():tag('div') body:addClass('side-box-flex') :addClass(data.collapsible and 'mw-collapsible-content') :newline() if data.image then body:tag('div') :addClass('side-box-image') :wikitext(data.image) end local text = body:newline():tag('div') text:addClass('side-box-text') :addClass(data.textclass) if data.textstyle then text:cssText(data.textstyle) end text:wikitext(data.text) if data.imageright then body:newline():tag('div') :addClass('side-box-imageright') :wikitext(data.imageright) end -- The below row if data.below then local below = root:newline():tag('div') below :addClass('side-box-abovebelow') :wikitext(data.below) if data.textstyle then below:cssText(data.textstyle) end end root:newline() local templatestyles = '' if data.templatestyles then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = data.templatestyles } } end return frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Side box/styles.css' } } .. templatestyles .. tostring(root) end function p._main(args) local data = makeData(args) return renderSidebox(data) end function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end return p 096bef4a3721857fc16eb509a4f8d75973484485 Template:Hidden begin 10 250 1069 2022-12-13T16:00:54Z wikipedia>Terasail 0 Remove tracking now that parameters have been removed from transclusions wikitext text/x-wiki <includeonly><templatestyles src="Template:Hidden begin/styles.css"/><div class="hidden-begin mw-collapsible {{#ifeq:{{{showhide|{{{toggle}}}}}}|left|mw-collapsible-leftside-toggle}} {{#if:{{{expanded|}}}||mw-collapsed}} {{{class|}}}" style="{{#if:{{{width|}}}|width:{{{width}}};}} {{#if:{{{border|}}}|border:{{{border}}};}} {{#if:{{{bgcolor|}}}|background-color:{{{bgcolor}}};}} {{{style|}}}"><!-- --><div class="hidden-title" style="{{#if:{{{ta1|}}}|text-align:{{{ta1}}};}} {{#if:{{{titlebgcolor|}}}|background-color:{{{titlebgcolor}}};}} {{{titlestyle|}}}">{{{title|{{{header|}}}}}}</div><!-- --><div class="hidden-content mw-collapsible-content" style="{{#if:{{{ta2|}}}|text-align:{{{ta2}}};}} {{#if:{{{contentbgcolor|}}}|background-color:{{{contentbgcolor}}};}} {{{contentstyle|{{{bodystyle|}}}}}}"><!-- Content added after the template --></includeonly><noinclude> {{Documentation}} </noinclude> be0f4e092203b931810fbff9ed6a1b7af51c025f Module:Shortcut 828 136 321 2022-12-13T23:41:34Z wikipedia>Izno 0 use module:list for plainlist, move templatestyles to module space Scribunto text/plain -- This module implements {{shortcut}}. -- Set constants local CONFIG_MODULE = 'Module:Shortcut/config' -- Load required modules local checkType = require('libraryUtil').checkType local yesno = require('Module:Yesno') local p = {} local function message(msg, ...) return mw.message.newRawMessage(msg, ...):plain() end local function makeCategoryLink(cat) return string.format('[[%s:%s]]', mw.site.namespaces[14].name, cat) end function p._main(shortcuts, options, frame, cfg) checkType('_main', 1, shortcuts, 'table') checkType('_main', 2, options, 'table', true) options = options or {} frame = frame or mw.getCurrentFrame() cfg = cfg or mw.loadData(CONFIG_MODULE) local templateMode = options.template and yesno(options.template) local redirectMode = options.redirect and yesno(options.redirect) local isCategorized = not options.category or yesno(options.category) ~= false -- Validate shortcuts for i, shortcut in ipairs(shortcuts) do if type(shortcut) ~= 'string' or #shortcut < 1 then error(message(cfg['invalid-shortcut-error'], i), 2) end end -- Make the list items. These are the shortcuts plus any extra lines such -- as options.msg. local listItems = {} for i, shortcut in ipairs(shortcuts) do local templatePath, prefix if templateMode then -- Namespace detection local titleObj = mw.title.new(shortcut, 10) if titleObj.namespace == 10 then templatePath = titleObj.fullText else templatePath = shortcut end prefix = options['pre' .. i] or options.pre or '' end if options.target and yesno(options.target) then listItems[i] = templateMode and string.format("&#123;&#123;%s[[%s|%s]]&#125;&#125;", prefix, templatePath, shortcut) or string.format("[[%s]]", shortcut) else listItems[i] = frame:expandTemplate{ title = 'No redirect', args = templateMode and {templatePath, shortcut} or {shortcut, shortcut} } if templateMode then listItems[i] = string.format("&#123;&#123;%s%s&#125;&#125;", prefix, listItems[i]) end end end table.insert(listItems, options.msg) -- Return an error if we have nothing to display if #listItems < 1 then local msg = cfg['no-content-error'] msg = string.format('<strong class="error">%s</strong>', msg) if isCategorized and cfg['no-content-error-category'] then msg = msg .. makeCategoryLink(cfg['no-content-error-category']) end return msg end local root = mw.html.create() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Shortcut/styles.css'} }) -- Anchors local anchorDiv = root :tag('div') :addClass('module-shortcutanchordiv') for i, shortcut in ipairs(shortcuts) do local anchor = mw.uri.anchorEncode(shortcut) anchorDiv:tag('span'):attr('id', anchor) end -- Shortcut heading local shortcutHeading do local nShortcuts = #shortcuts if nShortcuts > 0 then local headingMsg = options['shortcut-heading'] or redirectMode and cfg['redirect-heading'] or cfg['shortcut-heading'] shortcutHeading = message(headingMsg, nShortcuts) shortcutHeading = frame:preprocess(shortcutHeading) end end -- Shortcut box local shortcutList = root :tag('div') :addClass('module-shortcutboxplain noprint') :attr('role', 'note') if options.float and options.float:lower() == 'left' then shortcutList:addClass('module-shortcutboxleft') end if options.clear and options.clear ~= '' then shortcutList:css('clear', options.clear) end if shortcutHeading then shortcutList :tag('div') :addClass('module-shortcutlist') :wikitext(shortcutHeading) end local ubl = require('Module:List').unbulleted(listItems) shortcutList:wikitext(ubl) return tostring(root) end function p.main(frame) local args = require('Module:Arguments').getArgs(frame) -- Separate shortcuts from options local shortcuts, options = {}, {} for k, v in pairs(args) do if type(k) == 'number' then shortcuts[k] = v else options[k] = v end end -- Compress the shortcut array, which may contain nils. local function compressArray(t) local nums, ret = {}, {} for k in pairs(t) do nums[#nums + 1] = k end table.sort(nums) for i, num in ipairs(nums) do ret[i] = t[num] end return ret end shortcuts = compressArray(shortcuts) return p._main(shortcuts, options, frame) end return p 03fd46a265e549852a9ed3d3a9249b247d84cb4f Template:Hidden begin/styles.css 10 253 1091 2022-12-15T21:41:20Z Pppery 6 Protection template sanitized-css text/css /* {{pp-template}} */ .hidden-begin { box-sizing: border-box; width: 100%; padding: 5px; border: none; font-size: 95%; } .hidden-title { font-weight: bold; line-height: 1.6; text-align: left; } .hidden-content { text-align: left; } d4ab5680ca52bee10cfd2992f2adc45452c5ab37 Template:Mbox 10 115 365 276 2022-12-18T05:46:16Z TadejM 22 wikitext text/x-wiki {{#invoke:Message box|mbox}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 5bfb2becf8bed35974b47e3ff8660dc14bee40c7 Template:Infobox UK country 10 1145 2471 2022-12-18T22:56:31Z w>Mario Hidalgo 2020 0 Undid revision 1128192241 by [[Special:Contributions/Mario Hidalgo 2020|Mario Hidalgo 2020]] ([[User talk:Mario Hidalgo 2020|talk]]) wikitext text/x-wiki <includeonly>{{Infobox country | conventional_long_name = {{{conventional_long_name|{{{common_name|{{PAGENAME}}}}}}}} | common_name = {{{common_name|{{PAGENAME}}}}} | image_map = {{{image_map|{{{common_name|{{PAGENAME}}}}} in the UK and Europe.svg}}} | map_caption = {{{map_caption|{{map caption |location_color=dark green |subregion=the [[United Kingdom]] |subregion_color=green |region=Europe|region_color=dark grey}}}}} | membership_type = {{unbulleted list|style=line-height:normal;white-space:nowrap;|item2_style=margin-top:3px;|{{{membership_type|[[Sovereign state]]}}}|{{#if:{{{legal_jurisdiction|}}}|[[Law of the United Kingdom#Three legal systems|Legal jurisdiction]]}}}} | membership = {{unbulleted list|style=line-height:normal;|item2_style=margin-top:3px;|{{{membership|[[United&nbsp;Kingdom]]}}}|{{{legal_jurisdiction|}}}}} | government_type = {{{government_type|}}} | leader_title1 = [[Monarchy of the United Kingdom|Monarch]] | leader_title2 = [[First Minister of {{{common_name|{{PAGENAME}}}}}|First Minister]] | leader_title3 = [[Deputy First Minister of {{{common_name|{{PAGENAME}}}}}|Deputy First Minister]] <!-- NOTE: The IF statements below ensure the child infobox (intended to create a separate section for leaders under "Parliament of the United Kingdom") goes in the last transcluded "leader_name" field. For example on [[England]], only the monarch is shown, so the first two lines below are nullified (null1 and null2 being invalid field names). In the case of [[Northern Ireland]], all of the fields are used, so none of the lines are nullified. --> | {{#if:{{{first_minister|}}}{{{deputy_first_minister|}}}|leader_name1|null1}} = {{#if:{{{first_minister|}}}{{{deputy_first_minister|}}}|{{{monarch|}}}}} | {{#if:{{{deputy_first_minister|}}}|leader_name2|null2}} = {{#if:{{{deputy_first_minister|}}}|{{{first_minister|}}}}} | leader_name{{#if:{{{deputy_first_minister|}}}|3|{{#if:{{{first_minister|}}}|2|1}}}} = {{{deputy_first_minister|{{{first_minister|{{{monarch|}}}}}}}}}<!-- -->{{infobox|child=yes|headerstyle=text-align:left;|labelstyle=font-weight:normal;padding-left:10px; | header1 = {{#if:{{{secretary_of_state|}}}{{{number_of_mps|}}}|[[Parliament of the United Kingdom]]}} | rowclass2 = mergedrow | label2 = {{#if:{{{secretary_of_state|}}}|•&nbsp;[[Secretary of State for {{{common_name|{{PAGENAME}}}}}|Secretary&nbsp;of&nbsp;State]]}} | data2 = {{{secretary_of_state|}}} | rowclass3 = mergedrow | label3 = {{#if:{{{number_of_mps|}}}|•&nbsp;[[List of MPs elected in the 2019 United Kingdom general election|House&nbsp;of&nbsp;Commons]]}} | data3 = {{#if:{{{number_of_mps|}}}|[[List of MPs for constituencies in {{{common_name|{{PAGENAME}}}}} (2019–present)|{{{number_of_mps|}}} MPs]] (of 650)}} | subheader = {{#if:{{both|{{if empty|{{{name|}}}|{{{official_name|}}}|{{PAGENAMEBASE}}}}{{#ifeq:{{yesno|{{{embed|}}}}}|yes|1}}|{{{settlement_type|{{{type|}}}}}}}}|<div class="category">{{{settlement_type|{{{type}}}}}}</div>}} }} | currency = {{{currency|[[Pound&nbsp;sterling]]}}} | currency_code = {{{currency_code|GBP{{))!}};&nbsp;{{!((}}Pound sign{{!}}£}}} | time_zone = {{{time_zone|[[Greenwich Mean Time]]}}} | utc_offset = {{{utc_offset|{{sp}}}}} | time_zone_DST = {{{time_zone_DST|[[British Summer Time]]}}} | utc_offset_DST = {{{utc_offset_DST|+1}}} | date_format = {{{date_format|dd/mm/yyyy&nbsp;([[Anno Domini|AD]])}}} | drives_on = {{{drives_on|left}}} | calling_code = {{{calling_code|[[Telephone numbers in the United Kingdom|+44]]}}} | native_name = {{{native_name|}}} | image_flag = {{{image_flag|}}} | flag_caption = {{{flag_caption|Flag}}} | image_coat = {{{image_coat|{{{image_symbol|}}}}}} | symbol_width = {{{symbol_width|}}} | symbol_type = {{{symbol_type|}}} | national_motto = {{{national_motto|}}} | englishmotto = {{{englishmotto|}}} | national_anthem = {{{national_anthem|}}} | status = {{{status|}}} | capital = {{{capital|}}} | coordinates = {{{coordinates|}}} | largest_city = {{{largest_city|}}} | languages_type = {{{languages_type|}}} | languages = {{{languages|}}} | languages2_type = {{{languages2_type|}}} | languages2 = {{{languages2|}}} | languages2_sub = {{{languages2_sub|}}} | ethnic_groups = {{{ethnic_groups|}}} | ethnic_groups_year = {{{ethnic_groups_year|}}} | religion = {{{religion|}}} | religion_year = {{{religion_year|}}} | demonym = {{{demonym|}}} | org_type = {{{type|}}} | legislature = {{{legislature|}}} | sovereignty_type = {{{sovereignty_type|}}} | sovereignty_note = {{{sovereignty_note|}}} | established_event1 = {{{established_event1|}}} | established_date1 = {{{established_date1|}}} | established_event2 = {{{established_event2|}}} | established_date2 = {{{established_date2|}}} | established_event3 = {{{established_event3|}}} | established_date3 = {{{established_date3|}}} | established_event4 = {{{established_event4|}}} | established_date4 = {{{established_date4|}}} | established_event5 = {{{established_event5|}}} | established_date5 = {{{established_date5|}}} | area_rank = {{{area_rank|}}} | area_magnitude = {{{area_magnitude|}}} | area_km2 = {{{area_km2|}}} | area_sq_mi = {{{area_sq_mi|}}} | percent_water = {{{percent_water|}}} | area_footnote = {{{area_footnote|}}} | area_label = {{{area_label|Total}}} | area_label2 = {{{area_label2|}}} | area_data2 = {{{area_data2|}}} | population_estimate = {{{population_estimate|}}} | population_estimate_rank = {{{population_estimate_rank|}}} | population_estimate_year = {{{population_estimate_year|}}} | population_census = {{{population_census|}}} | population_census_year = {{{population_census_year|}}} | population_density_km2 = {{{population_density_km2|}}} | population_density_sq_mi = {{{population_density_sq_mi|}}} <!-- NOTE: population_density_rank is shown after pop_den_footnote, so normal transclusion of the former causes issues with the child infobox below. The child infobox can't be placed under population_density_rank because the value of this field is surrounded by brackets and linked. --> | pop_den_footnote = {{{pop_den_footnote|}}}{{#if:{{{population_density_rank|}}}|{{sp}}([[List of countries and territories by population density|{{{population_density_rank}}}]])}}<!-- -->{{#if:{{{GVA|}}}{{{GVA_per_capita|}}} |{{infobox|child=yes|headerstyle=text-align:left; | label1 = [[Gross value added|GVA]] | data1 = {{{GVA_year|}}} estimate | label2 = {{nobold|&nbsp;• Total}} | data2 = {{{GVA|}}} | rowclass2 = mergedrow | label3 = {{nobold|&nbsp;• Per capita}} | data3 = {{{GVA_per_capita|}}} | rowclass3 = mergedrow }} }} | GDP_PPP = {{{GDP_PPP|}}} | GDP_PPP_year = {{{GDP_PPP_year|}}} | GDP_PPP_per_capita = {{{GDP_PPP_per_capita|}}} | GDP_nominal = {{{GDP_nominal|}}} | GDP_nominal_year = {{{GDP_nominal_year|}}} | GDP_nominal_per_capita = {{{GDP_nominal_per_capita|}}} | Gini_year = {{{Gini_year|}}} | Gini_change = {{{Gini_change|}}} | Gini = {{{Gini|}}} | Gini_ref = {{{Gini_ref|}}} | Gini_rank = {{{Gini_rank|}}} | HDI_year = {{{HDI_year|}}} | HDI_change = {{{HDI_change|}}} | HDI = {{{HDI|}}} | HDI_ref = {{{HDI_ref|}}} | HDI_rank = {{{HDI_rank|}}} | patron_saint{{#if:{{{patron_saints|}}}|s|}} = {{{patron_saints|{{{patron_saint|}}}}}} | cctld = {{{cctld|}}} | official_website = {{{official_website|}}} | footnote_a = {{{footnote_a|}}} | footnote_b = {{{footnote_b|}}} | footnote_c = {{{footnote_c|}}} | footnote_d = {{{footnote_d|}}} | footnote_e = {{{footnote_e|}}} | footnote_f = {{{footnote_f|}}} }}</includeonly><noinclude>{{documentation}}</noinclude> 82126737ba50b8b93dd1a831a64c642af7f1e8e1 Module:Infobox/styles.css 828 19 167 33 2022-12-20T18:53:25Z meta>MacFan4000 0 Fix - admins: please do not reimport this page as there are more styles here then on wikipedia text text/plain .infobox-subbox { padding: 0; border: none; margin: -3px; width: auto; min-width: 100%; font-size: 100%; clear: none; float: none; background-color: transparent; } .infobox-3cols-child { margin: auto; } .infobox .navbar { font-size: 100%; } /* T281642 */ body.skin-minerva .infobox-header, body.skin-minerva .infobox-subheader, body.skin-minerva .infobox-above, body.skin-minerva .infobox-title, body.skin-minerva .infobox-image, body.skin-minerva .infobox-full-data, body.skin-minerva .infobox-below { text-align: center; } /* Infobox template style */ .infobox { border: 1px solid #a2a9b1; border-spacing: 3px; background-color: #f8f9fa; color: black; /* @noflip */ margin: 0.5em 0 0.5em 1em; padding: 0.2em; /* @noflip */ float: right; /* @noflip */ clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .infobox-header, .infobox-label, .infobox-above, .infobox-full-data, .infobox-data, .infobox-below, .infobox-subheader, .infobox-image, .infobox-navbar, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox th, .infobox td { vertical-align: top; } .infobox-label, .infobox-data, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox th, .infobox td { /* @noflip */ text-align: left; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-above, .infobox .infobox-title, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox caption { font-size: 125%; font-weight: bold; text-align: center; } .infobox-title, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox caption { padding: 0.2em; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-header, .infobox .infobox-subheader, .infobox .infobox-image, .infobox .infobox-full-data, .infobox .infobox-below { text-align: center; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-navbar { /* @noflip */ text-align: right; } eb850346855e4c081e692209d188b8432a2378d4 Template:Infobox UK place/doc 10 1418 2753 2022-12-21T18:50:40Z w>DankJae 0 Undid revision 1069114592 by [[Special:Contributions/Unreal7|Unreal7]] ([[User talk:Unreal7|talk]]) Please request the actual template to change. The template parameters remain Assembly, these new parameters were not in the template. wikitext text/x-wiki {{Documentation subpage}} {{High-use}} {{Auto short description}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} {{Uses TemplateStyles|Template:Infobox UK place/styles.css}} <!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE --> {{Template:{{BASEPAGENAME}}/generic demo}} {{tl|Infobox UK place}} is intended for use with articles about places (i.e. human settlements) in the United Kingdom. It has provision for a location map, images, captions, and detailed information about the place e.g. population, governance, and public services. == Basic syntax == [[Template:Infobox_UK_place/doc/examples|Examples]] are available showing typical infoboxes together with the code for those examples. This code can be cut and pasted into new articles. The samples provided are: * [[Template:Infobox_UK_place/doc/examples#Isle of Man|Isle of Man]] * [[Template:Infobox_UK_place/doc/examples#Northern Ireland|Northern Ireland]] * [[Template:Infobox_UK_place/doc/examples#Scotland|Scotland]] * [[Template:Infobox_UK_place/doc/examples#Wales|Wales]] * England – these can have differing structures: ** [[Template:Infobox_UK_place/doc/London#Greater London|Greater London]] ** [[Template:Infobox_UK_place/doc/London#City of London|City of London]] ** [[Template:Infobox_UK_place/doc/England#Metropolitan county|Metropolitan county ''(Greater Manchester, Merseyside, Tyne and Wear, South Yorkshire, West Yorkshire, West Midlands)'']] ** [[Template:Infobox_UK_place/doc/England#Shire district in a shire county|Shire district in a shire county]] ** [[Template:Infobox_UK_place/doc/England#...within a parish of the same name|...within a parish of the same name]] ** [[Template:Infobox_UK_place/doc/Unitary#Unitary district within a shire/unitary mix|Unitary district within a shire]] ** [[Template:Infobox_UK_place/doc/Unitary#Standalone unitary|Standalone unitary ''(Herefordshire, Rutland, Bristol, Isle of Wight)'']] {{clear}} == Full syntax == {{Infobox UK place/full syntax}} == Parameters == ===For automated features=== {| class="wikitable" ! Feature ! style="text-align:left" | Required fields |- | Basic function | official_name – ''defaults to <nowiki>{{{PAGENAME}}}</nowiki>''<br />country ([[Country of the United Kingdom|?]])<br />''England only'': region ([[Regions of England|?]]) |- | Maps | coordinates<br />country<br />''England only'': region (= ''London'') ''OR'' metropolitan_county ''OR'' shire_county ''OR'' unitary_england (= ''Bristol'', ''Isle of Wight'', ''Southampton'')<br />''Scotland only'': unitary_scotland Note that by default, the coordinates are displayed to the right of the title, at the top of the page. This can cause an error if there is more than one set of coordinates in the article. To override the display in the title, use {{para|display|inline}} inside of {{tl|Coord}}. If you wish to include an additional custom {{tl|location map}} (typically for the local area), use {{para|pushpin_map|location map name}} where <code>location map name</code> is the name of the location map. |- | Services | country<br />unitary_scotland ([[Subdivisions of Scotland|?]]) ''OR'' unitary_england ([[Districts of England|?]]) ''OR'' unitary_northern_ireland ([[Districts of Northern Ireland|?]]) ''OR'' unitary_wales ([[Administrative divisions of Wales|?]]) ''OR'' london_borough ([[London borough|?]]) ''OR'' metropolitan_borough ([[Districts of England|?]]) ''OR'' shire_district ([[Districts of England|?]])<br /> ''England only'': shire_county ([[Metropolitan and non-metropolitan counties of England|?]]) ''OR'' metropolitan_county ([[Metropolitan and non-metropolitan counties of England|?]]) ''OR'' lieutenancy_england ([[Ceremonial counties of England|?]])<br />''England only'': region<br />''Vale of White Horse and Hart districts only'': ambulance_service (''needs to be populated'') |- | Postal | post_town ([[post town|?]])<br />postcode_area ([[List of postcode areas in the United Kingdom|?]])<br />postcode_district |- | London Assembly | london_borough |- | Footer lists | country<br />london_borough ''OR'' shire_county ''OR'' metropolitan_county ''OR'' lieutenancy_england ''OR'' unitary_scotland ''OR'' unitary_wales ''OR'' lieutenancy_northern_ireland |} ===Commonly used=== {| class="wikitable" | Although not required for any of the automation, the following fields should normally be filled in |- | * constituency_westminster ([[List of United Kingdom Parliament constituencies|?]]) * map_alt * os_grid_reference ''OR'' irish_grid_reference * dial_code ''([http://www.ofcom.org.uk/telecoms/ioi/numbers/ this] may be of help finding the dialling code)'' * ''Northern Ireland only'': lieutenancy_northern_ireland ([[Counties of Northern Ireland|?]]) * ''Wales only'': lieutenancy_wales ([[Preserved counties of Wales|?]]) * ''Scotland only'': lieutenancy_scotland ([[Lieutenancy areas of Scotland|?]]) |} ===For optional features=== {| class="wikitable" ! Optional feature ! style="text-align:left" | Required fields |- | Other language names | gaelic_name ''OR'' scots_name ''OR'' welsh_name ''OR'' irish_name ''OR'' cornish_name ''OR'' manx_name |- | Any other language name | other_language ''AND'' other_language_name<br />local_name |- | Languages spoken | language |- | Static image(s) | static_image ''(deprecated)''<br />static_image_name<br />static_image_width - ''defaults to 240px wide to match the maps.''<br />static_image_caption<br />static_image_alt ''(see [[WP:ALT]])''<br />static_image_2 ''(deprecated)''<br />static_image_2_name<br />static_image_2_width - ''defaults to 240px wide to match the maps.''<br />static_image_2_caption<br />static_image_2_alt |- | Map label position | label_position<br />''Used to adjust position of label by dot on map– options are top, bottom, left, right, or none – defaults to right '' |- | Smaller parts (e.g. boroughs of a city) | parts_type<br />''The label for the smaller subdivisions (defaults to Places)''. parts_style<br />Set to ''list'' to display as a collapsible list, ''coll'' as a collapsed list, or ''para'' to use paragraph style. Default is ''list'' for up to 5 items, otherwise ''coll''.<br /> parts<br />''Text or header of the list of smaller subdivisions''.<br /> p1<br />p2<br />to<br />p50<br />''The smaller subdivisions to be listed. Example: [[Anlaby]]'' |- | Area | area_total_sq_mi<br />area_total_km2<br />area_footnotes<br />''Only one value needs to be entered as a number and it will be automatically formatted and converted to opposite system'' |- | Population figures | population – ''must be a number''<br />population_density – ''will be calculated automatically if area and population are present''<br />population_ref<br />''(A good place to find the population figures is at [http://neighbourhood.statistics.gov.uk/ neighbourhood.statistics.gov.uk])''<br />''For Census 2001 use <nowiki>| population_ref = <ref>[[United Kingdom Census 2001|Census 2001]]</ref></nowiki>'' |- |Distance from capitals | ''Replace &lt;capital> with belfast, cardiff, douglas, dublin, edinburgh, or london''<br />&lt;capital>_distance_mi<br />&lt;capital>_distance_km<br />''Only one value needs to be entered as a number and it will be automatically formatted and converted to opposite system''<br />&lt;capital>_distance<br />''Used for footnotes or direction – see [[Boxing the compass]]''<br />&lt;capital_direction><br />''Enter direction to capital e.g. W, E, NE, SW – it will be linked to [[Boxing the compass]]''<br />''(Distances "[[as the crow flies]]" can be found from [http://www.genuki.org.uk/big/eng/Gazetteers.html Genuki], or [http://www.postcode.org.uk/country/uk/_postcode-distance-calculator.asp postcode.org.uk])'' |- |Distance ''within'' London | Same as ''Distance from capitals'' above – replace &lt;capital> with ''charingX'' |- | Civil parish or Community | civil_parish OR community_wales ([[Community council#Wales|?]]) OR community_scotland ([[Community council#Scotland|?]]) |- |iso_code |[[ISO 3166-2:GB|ISO 3166]] code; e.g. GB-BIR for Birmingham. If no specific code exists, the next highest-level code may be used, so again use GB-BIR for [[Bournville]], which is part of Birmingham. |- | Website link | website<br />''WARNING: overlong urls may result in the sides of the infobox being pushed sideways.''<br /> ''If so, use a short link to the url e.g.'' <nowiki>[longurl.co.uk/home.html Short name]</nowiki> |- | embedded | Embed another infobox in this one |- | pushpin_map | Allows selection of another location map (e.g. Oxford (central)). This will combine with the default by radio button - (show within ''custom.name'' <default>, show ''default.name'', show all) |} ===Places split by boundaries=== {| class="wikitable" ! Places split by boundaries |- | Many locations straddle the boundaries of post towns, constituencies, districts or regions. Where a place straddles these, they can be accommodated with its own field: * post_town ''AND'' post_town1 ''AND'' post_town2 * civil_parish ''AND'' civil_parish1'' AND'' civil_parish2 * shire_district ''AND'' shire_district1 ''AND'' shire_district2 * region ''AND'' region1 * westminster_constituency ''AND'' westminster_constituency1 ''AND'' westminster_constituency2 There are slightly more "esoteric" extras to handle some tricky situations of division splits, which, if needed, can be explained by contacting one of the users involved in this template's construction. |} {{clear}} == TemplateData == {{TemplateData header}} <templatedata> { "description": "Intended for use with articles about places i.e. human settlements in the United Kingdom. It has provision for a location map, images, captions, and detailed information about the place e.g. population, governance, and public services.", "params": { "official_name": { "label": "official name", "description": " defaults to {{{PAGENAME}}}", "type": "string", "required": false }, "local_name": { "label": "local name", "description": " ", "type": "string", "required": false }, "country": { "label": "country", "description": " England, Northern Ireland, Wales, Scotland - NOT [[linked]] ", "type": "string", "required": false, "suggestedvalues": [ "England", "Northern Ireland", "Scotland", "Wales" ] }, "type": { "label": "Type", "description": "Type of human settlement (do not wikilink)", "example": "Town", "type": "string", "suggested": true }, "crown_dependency": { "label": "crown dependency", "description": " Isle of Man - NOT [[linked]] (this removes formal mentions of the UK)", "type": "string", "required": false }, "region": { "label": "region", "description": " (England only) this should NOT be linked ", "type": "string", "required": false }, "region1": { "label": "region1", "description": " for places split between regions", "type": "string", "required": false }, "static_image": { "label": "static image", "description": " now deprecated in favour of static_image_name (below); this is used for a static image (most commonly a skyline or landmark)", "type": "string", "required": false }, "static_image_name": { "label": "static image name", "description": " for a static image of the place, such as a skyline or defining local landmark", "type": "string", "required": false }, "static_image_width": { "label": "static image width", "description": " allows control of the image width. Should be omitted in most cases (will default to 240)", "type": "number", "required": false }, "static_image_caption": { "label": "static image caption", "description": " optional caption for static image", "type": "string", "required": false }, "static_image_alt": { "label": "static image alt", "description": " for a description of the image per [[WP:ALT]]", "type": "string", "required": false }, "static_image_2": { "label": "static image 2", "description": " now deprecated in favour of static_image_2_name (below); this is used for a second static image (for example a town crest)", "type": "string", "required": false }, "static_image_2_name": { "label": "static image 2 name", "description": " for a second static image, such as a town crest; specified as filename.jpg", "type": "string", "required": false }, "static_image_2_width": { "label": "static image 2 width", "description": " allows control of the image width. Should not exceed 240", "type": "number", "required": false }, "static_image_2_caption": { "label": "static image 2 caption", "description": " optional caption for static image", "type": "string", "required": false }, "static_image_2_alt": { "label": "static image 2 alt", "description": " for a description of the image per [[WP:ALT]]", "type": "string", "required": false }, "area_total_sq_mi": { "label": "area total sq mi", "description": " square mile data as a number - will automatically provide conversion to km<sup>2</sup>", "type": "number", "required": false }, "area_total_km2": { "label": "area total km2", "description": " sq km data as a number - will automatically provide conversion to square mile", "type": "number", "required": false }, "area_footnotes": { "label": "area footnotes", "description": " to cite the values used in the area fields. Use the <ref> </ref> tags", "type": "string", "required": false }, "population": { "label": "population", "description": " Enter just the number", "type": "number", "required": false }, "population_ref": { "label": "population ref", "description": " include a reference: e.g. <ref>Census, 2001</ref>", "type": "string", "required": false }, "population_density": { "label": "population density", "description": " for /sq mi ...use convert template {{Pop density mi2 to km2", "type": "string", "required": false }, "statistic": { "label": "statistic", "type": "string", "required": false }, "statistic_title": { "label": "statistic title", "type": "string", "required": false }, "statistic1": { "label": "statistic1", "type": "string", "required": false }, "statistic_title1": { "label": "statistic title1", "type": "string", "required": false }, "statistic2": { "label": "statistic2", "type": "string", "required": false }, "statistic_title2": { "label": "statistic title2", "type": "string", "required": false }, "population_demonym": { "label": "population demonym", "description": " ", "type": "string", "required": false }, "os_grid_reference": { "label": "os grid reference", "description": " ", "type": "string", "required": false }, "map_type": { "label": "map type", "description": " type of map (leave blank for default map, or set to nomap, UK or Greater Belfast to force a particular map)", "type": "string", "required": false }, "map_alt": { "label": "map alt", "description": " alt text for map, for visually impaired and other readers who cannot see the image; see [[WP:ALT]]", "type": "string", "required": false }, "label_position": { "label": "label position", "description": " adjust position of label by dot – defaults to right ", "type": "string", "required": false }, "coordinates": { "label": "Coordinates", "description": "Latitude and longitude. Use {{Coord}}. See the documentation for {{Coord}} for more details on usage.", "type": "wiki-template-name", "required": false, "example": "{{coord|41|50|15|N|87|40|55|W}}" }, "pushpin_map": { "label": "pushpin_map", "description": "The name of a regional location map (e.g. 'Oxford'). The coordinates information (from the coordinates parameter) position a pushpin coordinate marker and label on the map 'automatically'. Example see: Jericho, Oxford", "type": "string", "required": false }, "post_town": { "label": "post town", "description": " e.g. UXBRIDGE - converted automatically to upper case", "type": "string", "required": false }, "post_town1": { "label": "post town1", "description": " for places in more than one post town", "type": "string", "required": false }, "post_town2": { "label": "post town2", "description": " for places in more than one post town", "type": "string", "required": false }, "postcode_area": { "label": "postcode area", "description": " e.g. UB", "type": "string", "required": false }, "postcode_area1": { "label": "postcode area1", "description": " for places in more than one postcode area", "type": "string", "required": false }, "postcode_area2": { "label": "postcode area2", "description": " for places in more than one postcode area", "type": "string", "required": false }, "postcode_district": { "label": "postcode district", "description": " e.g. UB1, UB2 (this is displayed)", "type": "string", "required": false }, "postcode_district1": { "label": "postcode district1", "description": " for places in more than one postcode area", "type": "string", "required": false }, "postcode_district2": { "label": "postcode district2", "description": " for places in more than one postcode area", "type": "string", "required": false }, "dial_code": { "label": "dial code", "description": " e.g. 020, 0161 or 01332 - NOT +44...", "type": "string", "required": false }, "dial_code1": { "label": "dial code1", "description": " for places with more than one dial code", "type": "string", "required": false }, "dial_code2": { "label": "dial code2", "description": " for places with more than one dial code", "type": "string", "required": false }, "constituency_westminster": { "label": "constituency westminster", "description": " Use a link. e.g. [[Chiltern Hundreds]]", "type": "string", "required": false }, "constituency_westminster1": { "label": "constituency westminster1", "description": " for places in more than one constituency. Use a link.", "type": "string", "required": false }, "constituency_westminster2": { "label": "constituency westminster2", "description": " for places in more than one constituency. Use a link.", "type": "string", "required": false }, "constituency_westminster3": { "label": "constituency westminster3", "description": " for places in more than one constituency. Use a link.", "type": "string", "required": false }, "civil_parish": { "label": "civil parish", "description": " for places within a parish. Use a link, e.g. [[Odd Rode]]", "type": "string", "required": false }, "civil_parish1": { "label": "civil parish1", "description": " for places in more than one parish. Use a link.", "type": "string", "required": false }, "civil_parish2": { "label": "civil parish2", "description": " for places in more than one parish. Use a link.", "type": "string", "required": false }, "london_distance_mi": { "label": "london distance mi", "description": " for UK articles (outside of Greater London), distance to London as the crow flies", "type": "number", "required": false }, "london_distance_km": { "label": "london distance km", "description": " ", "type": "number", "required": false }, "london_distance": { "label": "london distance", "description": " ", "type": "number", "required": false }, "london_direction": { "label": "london direction", "description": " ", "type": "string", "required": false }, "belfast_distance_mi": { "label": "belfast distance mi", "description": " NORTHERN IRISH articles only, distance to Belfast as the crow flies", "type": "number", "required": false }, "belfast_distance_km": { "label": "belfast distance km", "description": " ", "type": "number", "required": false }, "belfast_distance": { "label": "belfast distance", "description": " ", "type": "number", "required": false }, "belfast_direction": { "label": "belfast direction", "description": " ", "type": "string", "required": false }, "cardiff_distance_mi": { "label": "cardiff distance mi", "description": " WELSH articles only, distance to Cardiff as the crow flies", "type": "number", "required": false }, "cardiff_distance_km": { "label": "cardiff distance km", "description": " ", "type": "number", "required": false }, "cardiff_distance": { "label": "cardiff distance", "description": " ", "type": "number", "required": false }, "cardiff_direction": { "label": "cardiff direction", "description": " ", "type": "string", "required": false }, "dublin_distance_mi": { "label": "dublin distance mi", "description": " distance to Dublin – may be relevant to NORTHERN IRISH articles as the crow flies", "type": "number", "required": false }, "dublin_distance_km": { "label": "dublin distance km", "description": " ", "type": "number", "required": false }, "dublin_distance": { "label": "dublin distance", "description": " ", "type": "number", "required": false }, "dublin_direction": { "label": "dublin direction", "description": " ", "type": "string", "required": false }, "edinburgh_distance_mi": { "label": "edinburgh distance mi", "description": " SCOTTISH articles only, distance to Edinburgh as the crow flies", "type": "number", "required": false }, "edinburgh_distance_km": { "label": "edinburgh distance km", "description": " ", "type": "number", "required": false }, "edinburgh_distance": { "label": "edinburgh distance", "description": " ", "type": "number", "required": false }, "edinburgh_direction": { "label": "edinburgh direction", "description": " ", "type": "string", "required": false }, "douglas_distance_mi": { "label": "douglas distance mi", "description": " MANX articles only, distance to Douglas as the crow flies", "type": "number", "required": false }, "douglas_distance_km": { "label": "douglas distance km", "description": " ", "type": "number", "required": false }, "douglas_distance": { "label": "douglas distance", "description": " ", "type": "number", "required": false }, "douglas_direction": { "label": "douglas direction", "description": " ", "type": "string", "required": false }, "charingX_distance_mi": { "label": "charingX distance mi", "description": " for places WITHIN Greater London ONLY as the crow flies", "type": "number", "required": false }, "charingX_distance_km": { "label": "charingX distance km", "description": " ", "type": "number", "required": false }, "charingX_distance": { "label": "charingX distance", "description": " ", "type": "number", "required": false }, "charingX_direction": { "label": "charingX direction", "description": " ", "type": "string", "required": false }, "gaelic_name": { "label": "gaelic name", "description": " ", "type": "string", "required": false }, "scots_name": { "label": "scots name", "description": " ", "type": "string", "required": false }, "community_scotland": { "label": "community scotland", "description": " Use a link, e.g. [[Old Aberdeen]]", "type": "string", "required": false }, "community_scotland1": { "label": "community scotland1", "description": " for places in more than one", "type": "string", "required": false }, "unitary_scotland": { "label": "unitary scotland", "description": " ", "type": "string", "required": false }, "unitary_scotland1": { "label": "unitary scotland1", "description": " for places in more than one", "type": "string", "required": false }, "lieutenancy_scotland": { "label": "lieutenancy scotland", "description": " ", "type": "string", "required": false }, "lieutenancy_scotland1": { "label": "lieutenancy scotland1", "description": " for places in more than one", "type": "string", "required": false }, "constituency_scottish_parliament": { "label": "constituency scottish parliament", "description": " ", "type": "string", "required": false }, "constituency_scottish_parliament1": { "label": "constituency scottish parliament1", "description": " for places in more than one constituency", "type": "string", "required": false }, "constituency_scottish_parliament2": { "label": "constituency scottish parliament2", "description": " for places in more than one constituency", "type": "string", "required": false }, "welsh_name": { "label": "welsh name", "description": " ", "type": "string", "required": false }, "community_wales": { "label": "community wales", "description": " Use a link, e.g. [[Eglwyscummin]]", "type": "string", "required": false }, "community_wales1": { "label": "community wales1", "description": " for places in more than one", "type": "string", "required": false }, "unitary_wales": { "label": "unitary wales", "description": " ", "type": "string", "required": false }, "unitary_wales1": { "label": "unitary wales1", "description": " for places in more than one", "type": "string", "required": false }, "lieutenancy_wales": { "label": "lieutenancy wales", "description": " ", "type": "string", "required": false }, "lieutenancy_wales1": { "label": "lieutenancy wales1", "description": " for places in more than one", "type": "string", "required": false }, "constituency_welsh_assembly": { "label": "constituency welsh assembly", "description": " ", "type": "string", "required": false }, "constituency_welsh_assembly1": { "label": "constituency welsh assembly1", "description": " for places in more than one constituency", "type": "string", "required": false }, "constituency_welsh_assembly2": { "label": "constituency welsh assembly2", "description": " for places in more than one constituency", "type": "string", "required": false }, "irish_name": { "label": "irish name", "description": " ", "type": "string", "required": false }, "irish_grid_reference": { "label": "irish grid reference", "description": " ", "type": "string", "required": false }, "unitary_northern_ireland": { "label": "unitary northern ireland", "description": " ", "type": "string", "required": false }, "unitary_northern_ireland1": { "label": "unitary northern ireland1", "description": " for places in more than one", "type": "string", "required": false }, "unitary_northern_ireland2": { "label": "unitary northern ireland2", "description": " for places in more than one", "type": "string", "required": false }, "lieutenancy_northern_ireland": { "label": "lieutenancy northern ireland", "description": " ", "type": "string", "required": false }, "lieutenancy_northern_ireland1": { "label": "lieutenancy northern ireland1", "description": " for places in more than one", "type": "string", "required": false }, "lieutenancy_northern_ireland2": { "label": "lieutenancy northern ireland2", "description": " for places in more than one", "type": "string", "required": false }, "constituency_ni_assembly": { "label": "constituency ni assembly", "description": " ", "type": "string", "required": false }, "constituency_ni_assembly1": { "label": "constituency ni assembly1", "description": " for places in more than one", "type": "string", "required": false }, "manx_name": { "label": "manx name", "description": " ", "type": "string", "required": false }, "manx_parish": { "label": "manx parish", "description": " for places in the Isle of Man", "type": "string", "required": false }, "manx_sheading": { "label": "manx sheading", "description": " for places in the Isle of Man, also generates emergency services", "type": "string", "required": false }, "constituency_manx_parliament": { "label": "constituency manx parliament", "description": " for House of Keys constituency", "type": "string", "required": false }, "metropolitan_borough": { "label": "metropolitan borough", "description": " ", "type": "string", "required": false }, "metropolitan_borough1": { "label": "metropolitan borough1", "description": " for places in more than one", "type": "string", "required": false }, "metropolitan_county": { "label": "metropolitan county", "description": " Use a link. e.g. [[Tyne and Wear]]", "type": "string", "required": false }, "metropolitan_county1": { "label": "metropolitan county1", "description": " for places in more than one", "type": "string", "required": false }, "shire_district": { "label": "shire district", "description": " ", "type": "string", "required": false }, "shire_district1": { "label": "shire district1", "description": " for places in more than one", "type": "string", "required": false }, "shire_county": { "label": "shire county", "description": " Use a link. e.g. [[Devon]]", "type": "string", "required": false }, "shire_county1": { "label": "shire county1", "description": " for places in more than one", "type": "string", "required": false }, "unitary_england": { "label": "unitary england", "description": " ", "type": "string", "required": false }, "unitary_england1": { "label": "unitary england1", "description": " for places in more than one", "type": "string", "required": false }, "lieutenancy_england": { "label": "lieutenancy england", "description": " not required where shire or metropolitan is the same", "type": "string", "required": false }, "lieutenancy_england1": { "label": "lieutenancy england1", "description": " for places in more than one", "type": "string", "required": false }, "london_borough": { "label": "london borough", "description": " this should not be linked and simplified: e.g. Bromley NOT [[London Borough of Bromley]]", "type": "string", "required": false }, "london_borough1": { "label": "london borough1", "description": " for places in more than one borough (also produces London Assembly constituency)", "type": "string", "required": false }, "london_borough2": { "label": "london borough2", "description": " for places in more than one borough (also produces London Assembly constituency)", "type": "string", "required": false }, "london_borough3": { "label": "london borough3", "description": " special cases, does not produce London Assembly constituency)", "type": "string", "required": false }, "london_borough4": { "label": "london borough4", "description": " special cases, does not produce London Assembly constituency)", "type": "string", "required": false }, "cornish_name": { "label": "cornish name", "description": " ", "type": "string", "required": false }, "other_language_name": { "label": "other language name", "description": " any other alternative language name", "type": "string", "required": false }, "other_language": { "label": "other language", "description": " any other alternative language name", "type": "string", "required": false }, "language": { "label": "language", "description": " any locally spoken languages", "type": "string", "required": false }, "language1": { "label": "language1", "description": " any locally spoken languages", "type": "string", "required": false }, "language2": { "label": "language2", "description": " any locally spoken languages", "type": "string", "required": false }, "website": { "label": "website", "description": " Council website for place (specifically)", "type": "string", "required": false }, "hide_services": { "label": "hide services", "description": " Set to Yes to turn off Police/Fire/Ambulance", "type": "string", "required": false } }, "format": "block" } </templatedata> == Microformat == {{UF-hcard-geo}} == Tracking category == * {{Category link with count|Pages using infobox UK place with unknown parameters}} * {{Category link with count|Pages using infobox UK place with non-numeric population}} <includeonly>{{Sandbox other|| [[Category:United Kingdom place infobox templates|Uk Place]] [[Category:Templates that add a tracking category]] }}</includeonly> 6faac511cdd255aac862a8b83fe369116d956897 Template:Short description 10 98 243 2022-12-23T23:04:16Z wikipedia>Fayenatic london 0 remove categories for several more namespaces, see [[Wikipedia:Categories for discussion/Log/2022 December 15#Pages with short description]] wikitext text/x-wiki {{#ifeq:{{lc:{{{1|}}}}}|none|<nowiki /><!--Prevents whitespace issues when used with adjacent newlines-->|<div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">{{{1|}}}{{SHORTDESC:{{{1|}}}|{{{2|}}}}}</div>}}<includeonly>{{#ifeq:{{{pagetype}}}|Disambiguation pages||{{#ifeq:{{pagetype |defaultns = all |user=exclude}}|exclude||{{#ifeq:{{#switch: {{NAMESPACENUMBER}} | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 100 | 101 | 118 | 119 | 828 | 829 | = exclude|#default=}}|exclude||[[Category:{{{pagetype|{{pagetype |defaultns = extended |plural=y}}}}} with short description]]}}}}}}</includeonly><!-- Start tracking -->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using short description with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Short description]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | pagetype | bot |plural }}<!-- -->{{#ifexpr: {{#invoke:String|len|{{{1|}}}}}>100 | [[Category:{{{pagetype|{{pagetype |defaultns = extended |plural=y}}}}} with long short description]]}}<!-- --><includeonly>{{#if:{{{1|}}}||[[Category:Pages with empty short description]]}}</includeonly><!-- -->{{Short description/lowercasecheck|{{{1|}}}}}<!-- -->{{Main other |{{SDcat |sd={{{1|}}} }} }}<noinclude> {{Documentation}} </noinclude> f175a6d61b40a87adb43e2dd4f73c7979759b34c Template:Politics series sidebar 10 883 1956 2022-12-24T06:01:56Z wikipedia>Izno 0 my salt is unimaginable wikitext text/x-wiki {{Sidebar with collapsible lists | name = {{{name|{{PAGENAME}}}}} | class = {{{class|}}} {{{bodyclass|}}} | pretitle = Part of the [[:Category:Politics|Politics series]] | title = {{{title<includeonly>|</includeonly>}}} | titleclass = {{{titleclass|}}} | titlestyle = border-top:1px #fafafa solid; border-bottom:1px #fafafa solid; background:#efefef;padding:0.2em; | headingclass = {{{headingclass|}}} | headingstyle = background:#efefef;{{{headingstyle|}}} | listtitlestyle = background:#efefef; border-top:1px solid; {{{listtitlestyle|}}} | centered list titles = {{{centered list titles|}}} | contentclass = {{{contentclass|}}} | contentstyle = text-align:left;{{{contentstyle|}}} | image = {{{image|}}} | caption = {{{caption|}}} | expanded = {{{expanded|}}} | abovestyle = display:block; margin-bottom:0.5em; background:transparent; | above = {{{above|}}} | list1name = {{{list1name|}}} | list1title = {{{list1title|}}} | list1 = {{{list1<includeonly>|</includeonly>}}} | list1class = {{{list1class|}}} | list2name = {{{list2name|}}} | list2title = {{{list2title|}}} | list2 = {{{list2<includeonly>|</includeonly>}}} | list2class = {{{list2class|}}} | list3name = {{{list3name|}}} | list3title = {{{list3title|}}} | list3 = {{{list3<includeonly>|</includeonly>}}} | list3class = {{{list3class|}}} | list4name = {{{list4name|}}} | list4title = {{{list4title|}}} | list4 = {{{list4<includeonly>|</includeonly>}}} | list4class = {{{list4class|}}} | list5name = {{{list5name|}}} | list5title = {{{list5title|}}} | list5 = {{{list5<includeonly>|</includeonly>}}} | list5class = {{{list5class|}}} | list6name = {{{list6name|}}} | list6title = {{{list6title|}}} | list6 = {{{list6<includeonly>|</includeonly>}}} | list6class = {{{list6class|}}} | list7name = {{{list7name|}}} | list7title = {{{list7title|}}} | list7 = {{{list7<includeonly>|</includeonly>}}} | list7class = {{{list7class|}}} | list8name = {{{list8name|}}} | list8title = {{{list8title|}}} | list8 = {{{list8<includeonly>|</includeonly>}}} | list8class = {{{list8class|}}} | list9name = {{{list9name|}}} | list9title = {{{list9title|}}} | list9 = {{{list9<includeonly>|</includeonly>}}} | list9class = {{{list9class|}}} | list10name = {{{list10name|}}} | list10title = {{{list10title|}}} | list10 = {{{list10<includeonly>|</includeonly>}}} | list10class = {{{list10class|}}} | belowstyle = background:#efefef; | below = {{portal-inline|Politics|size=tiny}} }}<noinclude> {{documentation}} [[Category:Politics series sidebar templates| ]] </noinclude> 616b256f4c1c4adf99b4cd0aebb986edc4817116 Template:Floor 10 1558 2893 2022-12-25T15:11:57Z w>GKFX 0 Move documentation to subpage wikitext text/x-wiki <span style="font-size:{{{2|1em}}}">⌊</span>{{{1}}}<span style="font-size:{{{2|1em}}}">⌋</span><noinclude>{{Documentation}}</noinclude> 94e2a96ad5aeae00bb901ff2f15c4631330766df Template:Ceil 10 1563 2898 2022-12-25T15:15:13Z w>GKFX 0 Move documentation to subpage wikitext text/x-wiki ⌈{{{1}}}⌉<noinclude>{{Documentation}}</noinclude> 7f563210cf3ca1f130f25e13cad599557d619882 Template:Hlist/styles.css 10 74 143 2022-12-26T18:00:17Z wikipedia>Izno 0 actually remove that block, someone can dig for authorship text text/plain /* {{pp-protected|reason=match parent|small=yes}} */ /* * hlist styles are defined in core and Minerva and differ in Minerva. The * current definitions here (2023-01-01) are sufficient to override Minerva * without use of the hlist-separated class. The most problematic styles were * related to margin, padding, and the bullet. Check files listed at * [[MediaWiki talk:Common.css/to do#hlist-separated]] */ /* * TODO: When the majority of readership supports it (or some beautiful world * in which grade C support is above the minimum threshold), use :is() */ .hlist dl, .hlist ol, .hlist ul { margin: 0; padding: 0; } /* Display list items inline */ .hlist dd, .hlist dt, .hlist li { /* * don't trust the note that says margin doesn't work with inline * removing margin: 0 makes dds have margins again * We also want to reset margin-right in Minerva */ margin: 0; display: inline; } /* Display requested top-level lists inline */ .hlist.inline, .hlist.inline dl, .hlist.inline ol, .hlist.inline ul, /* Display nested lists inline */ .hlist dl dl, .hlist dl ol, .hlist dl ul, .hlist ol dl, .hlist ol ol, .hlist ol ul, .hlist ul dl, .hlist ul ol, .hlist ul ul { display: inline; } /* Hide empty list items */ .hlist .mw-empty-li { display: none; } /* TODO: :not() can maybe be used here to remove the later rule. naive test * seems to work. more testing needed. like so: *.hlist dt:not(:last-child)::after { * content: ": "; *} *.hlist dd:not(:last-child)::after, *.hlist li:not(:last-child)::after { * content: " · "; * font-weight: bold; *} */ /* Generate interpuncts */ .hlist dt::after { content: ": "; } .hlist dd::after, .hlist li::after { content: " · "; font-weight: bold; } .hlist dd:last-child::after, .hlist dt:last-child::after, .hlist li:last-child::after { content: none; } /* Add parentheses around nested lists */ .hlist dd dd:first-child::before, .hlist dd dt:first-child::before, .hlist dd li:first-child::before, .hlist dt dd:first-child::before, .hlist dt dt:first-child::before, .hlist dt li:first-child::before, .hlist li dd:first-child::before, .hlist li dt:first-child::before, .hlist li li:first-child::before { content: " ("; font-weight: normal; } .hlist dd dd:last-child::after, .hlist dd dt:last-child::after, .hlist dd li:last-child::after, .hlist dt dd:last-child::after, .hlist dt dt:last-child::after, .hlist dt li:last-child::after, .hlist li dd:last-child::after, .hlist li dt:last-child::after, .hlist li li:last-child::after { content: ")"; font-weight: normal; } /* Put ordinals in front of ordered list items */ .hlist ol { counter-reset: listitem; } .hlist ol > li { counter-increment: listitem; } .hlist ol > li::before { content: " " counter(listitem) "\a0"; } .hlist dd ol > li:first-child::before, .hlist dt ol > li:first-child::before, .hlist li ol > li:first-child::before { content: " (" counter(listitem) "\a0"; } 8c9dd9c9c00f30eead17fe10f51d183333e81f33 Template:Infobox3cols 10 1160 2486 2022-12-27T20:24:32Z w>GKFX 0 Tracking categories moved to module wikitext text/x-wiki {{#invoke:Infobox3cols|infobox}}<noinclude> {{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 64b9ddf32a5d7204cf7044710a2c81df75858a6f Module:Infobox 828 18 31 2022-12-27T21:29:12Z wikipedia>Izno 0 merge hlist here Scribunto text/plain local p = {} local args = {} local origArgs = {} local root local empty_row_categories = {} local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' local has_rows = false local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = 'Hlist/styles.css' } } local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end local function fixChildBoxes(sval, tt) local function notempty( s ) return s and s:match( '%S' ) end if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval -- start moving templatestyles and categories inside of table rows local slast = '' while slast ~= s do slast = s s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1') end -- end moving templatestyles and categories inside of table rows s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) if s:match(marker) then s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') end if s:match(marker) then local subcells = mw.text.split(s, marker) s = '' for k = 1, #subcells do if k == 1 then s = s .. subcells[k] .. '</' .. tt .. '></tr>' elseif k == #subcells then local rowstyle = ' style="display:none"' if notempty(subcells[k]) then rowstyle = '' end s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] elseif notempty(subcells[k]) then if (k % 2) == 0 then s = s .. subcells[k] else s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' end end end end -- the next two lines add a newline at the end of lists for the PHP parser -- [[Special:Diff/849054481]] -- remove when [[:phab:T191516]] is fixed or OBE s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1') s = mw.ustring.gsub(s, '^(%{%|)', '\n%1') return s else return sval end end -- Cleans empty tables local function cleanInfobox() root = tostring(root) if has_rows == false then root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '') end end -- Returns the union of the values of two tables, as a sequence. local function union(t1, t2) local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix was 'data', and -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local function getArgNums(prefix) local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. local function addRow(rowArgs) if rowArgs.header and rowArgs.header ~= '_BLANK_' then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass }) root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :tag('th') :attr('colspan', '2') :addClass('infobox-header') :addClass(rowArgs.class) :addClass(args.headerclass) -- @deprecated next; target .infobox-<name> .infobox-header :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.header, 'th')) if rowArgs.data then root:wikitext( '[[Category:Pages using infobox templates with ignored data cells]]' ) end elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class }) local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) if rowArgs.label then row :tag('th') :attr('scope', 'row') :addClass('infobox-label') -- @deprecated next; target .infobox-<name> .infobox-label :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :wikitext(rowArgs.label) :done() end local dataCell = row:tag('td') dataCell :attr('colspan', not rowArgs.label and '2' or nil) :addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data') :addClass(rowArgs.class) -- @deprecated next; target .infobox-<name> .infobox(-full)-data :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.data, 'td')) else table.insert(empty_row_categories, rowArgs.data or '') end end local function renderTitle() if not args.title then return end has_rows = true has_list_class({args.titleclass}) root :tag('caption') :addClass('infobox-title') :addClass(args.titleclass) -- @deprecated next; target .infobox-<name> .infobox-title :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end has_rows = true has_list_class({ args.aboveclass }) root :tag('tr') :tag('th') :attr('colspan', '2') :addClass('infobox-above') :addClass(args.aboveclass) -- @deprecated next; target .infobox-<name> .infobox-above :cssText(args.abovestyle) :wikitext(fixChildBoxes(args.above,'th')) end local function renderBelowRow() if not args.below then return end has_rows = true has_list_class({ args.belowclass }) root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-below') :addClass(args.belowclass) -- @deprecated next; target .infobox-<name> .infobox-below :cssText(args.belowstyle) :wikitext(fixChildBoxes(args.below,'td')) end local function addSubheaderRow(subheaderArgs) if subheaderArgs.data and subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ subheaderArgs.rowclass, subheaderArgs.class }) local row = root:tag('tr') row:addClass(subheaderArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-subheader') :addClass(subheaderArgs.class) :cssText(subheaderArgs.datastyle) :cssText(subheaderArgs.rowcellstyle) :wikitext(fixChildBoxes(subheaderArgs.data, 'td')) else table.insert(empty_row_categories, subheaderArgs.data or '') end end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader') for k, num in ipairs(subheadernums) do addSubheaderRow({ data = args['subheader' .. tostring(num)], -- @deprecated next; target .infobox-<name> .infobox-subheader datastyle = args.subheaderstyle, rowcellstyle = args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function addImageRow(imageArgs) if imageArgs.data and imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ imageArgs.rowclass, imageArgs.class }) local row = root:tag('tr') row:addClass(imageArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-image') :addClass(imageArgs.class) :cssText(imageArgs.datastyle) :wikitext(fixChildBoxes(imageArgs.data, 'td')) else table.insert(empty_row_categories, imageArgs.data or '') end end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :addClass('infobox-caption') -- @deprecated next; target .infobox-<name> .infobox-caption :cssText(args.captionstyle) :wikitext(caption) end addImageRow({ data = tostring(data), -- @deprecated next; target .infobox-<name> .infobox-image datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end -- When autoheaders are turned on, preprocesses the rows local function preprocessRows() if not args.autoheaders then return end local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) local lastheader for k, num in ipairs(rownums) do if args['header' .. tostring(num)] then if lastheader then args['header' .. tostring(lastheader)] = nil end lastheader = num elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub( category_in_empty_row_pattern, '' ):match('^%S') then local data = args['data' .. tostring(num)] if data:gsub(category_in_empty_row_pattern, ''):match('%S') then lastheader = nil end end end if lastheader then args['header' .. tostring(lastheader)] = nil end end -- Gets the union of the header and data argument numbers, -- and renders them all in order local function renderRows() local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], rowclass = args['rowclass' .. tostring(num)], -- @deprecated next; target .infobox-<name> rowclass rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)] }) end end local function renderNavBar() if not args.name then return end has_rows = true root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-navbar') :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, }) end local function renderItalicTitle() local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then root:wikitext(require('Module:Italic title')._main({})) end end -- Categories in otherwise empty rows are collected in empty_row_categories. -- This function adds them to the module output. It is not affected by -- args.decat because this module should not prevent module-external categories -- from rendering. local function renderEmptyRowCategories() for _, s in ipairs(empty_row_categories) do root:wikitext(s) end end -- Render tracking categories. args.decat == turns off tracking categories. local function renderTrackingCategories() if args.decat == 'yes' then return end if args.child == 'yes' then if args.title then root:wikitext( '[[Category:Pages using embedded infobox templates with the title parameter]]' ) end elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then root:wikitext('[[Category:Articles using infobox templates with no data rows]]') end end --[=[ Loads the templatestyles for the infobox. TODO: FINISH loading base templatestyles here rather than in MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables. See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :). When we do this we should clean up the inline CSS below too. Will have to do some bizarre conversion category like with sidebar. ]=] local function loadTemplateStyles() local frame = mw.getCurrentFrame() local hlist_templatestyles = '' if lists.hlist_t.found then hlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.hlist_t.styles } } end local plainlist_templatestyles = '' if lists.plainlist_t.found then plainlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.plainlist_t.styles } } end -- See function description local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' } } local templatestyles = '' if args['templatestyles'] then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ -- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering. -- this ordering is not a guarantee because the rows of interest invoking -- each class may not be on a specific page hlist_templatestyles, plainlist_templatestyles, base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles }) end -- common functions between the child and non child cases local function structure_infobox_common() renderSubheaders() renderImages() preprocessRows() renderRows() renderBelowRow() renderNavBar() renderItalicTitle() renderEmptyRowCategories() renderTrackingCategories() cleanInfobox() end -- Specify the overall layout of the infobox, with special settings if the -- infobox is used as a 'child' inside another infobox. local function _infobox() if args.child ~= 'yes' then root = mw.html.create('table') root :addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox') :addClass(args.bodyclass) -- @deprecated next; target .infobox-<name> :cssText(args.bodystyle) has_list_class({ args.bodyclass }) renderTitle() renderAboveRow() else root = mw.html.create() root :wikitext(args.title) end structure_infobox_common() return loadTemplateStyles() .. root end -- If the argument exists and isn't blank, add it to the argument table. -- Blank arguments are treated as nil to match the behaviour of ParserFunctions. local function preprocessSingleArg(argName) if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end -- Assign the parameters with the given prefixes to the args table, in order, in -- batches of the step size specified. This is to prevent references etc. from -- appearing in the wrong order. The prefixTable should be an array containing -- tables, each of which has two possible fields, a "prefix" string and a -- "depend" table. The function always parses parameters containing the "prefix" -- string, but only parses parameters in the "depend" table if the prefix -- parameter is present and non-blank. local function preprocessArgs(prefixTable, step) if type(prefixTable) ~= 'table' then error("Non-table value detected for the prefix table", 2) end if type(step) ~= 'number' then error("Invalid step value detected", 2) end -- Get arguments without a number suffix, and check for bad input. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Invalid input detected to preprocessArgs prefix table', 2) end preprocessSingleArg(v.prefix) -- Only parse the depend parameter if the prefix parameter is present -- and not blank. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Invalid "depend" parameter value detected in preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Get arguments with number suffixes. local a = 1 -- Counter variable. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) if origArgs[prefixArgName] then -- Do another loop if any arguments are found, even blank ones. moreArgumentsExist = true preprocessSingleArg(prefixArgName) end -- Process the depend table if the prefix argument is present -- and not blank, or we are processing "prefix1" and "prefix" is -- present and not blank, and if the depend table is present. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) preprocessSingleArg(dependArgName) end end end end a = a + step end end -- Parse the data parameters in the same order that the old {{infobox}} did, so -- that references etc. will display in the expected places. Parameters that -- depend on another parameter are only processed if that parameter is present, -- to avoid phantom references appearing in article reference lists. local function parseDataParameters() preprocessSingleArg('autoheaders') preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') -- different behaviour for italics if blank or absent args['italic title'] = origArgs['italic title'] preprocessSingleArg('decat') preprocessSingleArg('templatestyles') preprocessSingleArg('child templatestyles') preprocessSingleArg('grandchild templatestyles') end -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. function p.infobox(frame) if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end parseDataParameters() return _infobox() end -- For calling via #invoke within a template function p.infoboxTemplate(frame) origArgs = {} for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end parseDataParameters() return _infobox() end return p 0ddb7e5c8426d67cd589b710efb9912ddfb67fea Template:Country data Romania 10 1203 2532 2022-12-28T14:46:12Z w>Paine Ellsworth 0 per edit request on talk page - update naval ensign wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Romania | flag alias = Flag of Romania.svg | flag alias-1859 = Flag of the United Principalities of Wallachia and Moldavia (1859 - 1862).svg | flag alias-1862 = Flag of the United Principalities of Romania (1862–1866).svg | flag alias-1866 = Flag of Romania.svg | flag alias-1948 = Flag of Romania (1948-1952).svg | flag alias-1952 = Flag of Romania (1952-1965).svg | flag alias-1965 = Flag of Romania (1965-1989).svg | link alias-naval = Romanian Naval Forces | flag alias-naval = Flag of Romania.svg | flag alias-air force = Flag of the Romanian Air Force (obverse).svg | link alias-air force = Romanian Air Force | flag alias-army = Flag of the Romanian Land Forces (Obverse).svg | link alias-army = Romanian Land Forces | flag alias-navy = Flag of the Romanian Naval Forces (Obverse).svg | link alias-navy = Romanian Naval Forces | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1859 | var2 = 1862 | var3 = 1866 | var4 = 1948 | var5 = 1952 | var6 = 1965 | redir1 = ROU | redir2 = ROM | related1 = Kingdom of Romania </noinclude> }} b8f3670e159bf57644dc35ad076a061de391bac7 Template:Flatlist 10 157 367 2022-12-29T17:46:45Z wikipedia>Izno 0 templatestyles obviates the need for hlist-separated wikitext text/x-wiki <templatestyles src="Hlist/styles.css"/><div class="hlist {{{class|}}}" {{#if:{{{style|}}}{{{indent|}}}|style="{{#if:{{{indent|}}}|margin-left: {{#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}"}}>{{#if:{{{1|}}}| {{{1}}} </div>}}<noinclude></div> {{documentation}} </noinclude> cf60aa4aef920d48fa394e786f72fe5f6dcd3169 Module:List 828 20 35 2022-12-29T17:57:56Z wikipedia>Izno 0 add templatestyles for hlist Scribunto text/plain local libUtil = require('libraryUtil') local checkType = libUtil.checkType local mTableTools = require('Module:TableTools') local p = {} local listTypes = { ['bulleted'] = true, ['unbulleted'] = true, ['horizontal'] = true, ['ordered'] = true, ['horizontal_ordered'] = true } function p.makeListData(listType, args) -- Constructs a data table to be passed to p.renderList. local data = {} -- Classes and TemplateStyles data.classes = {} data.templatestyles = '' if listType == 'horizontal' or listType == 'horizontal_ordered' then table.insert(data.classes, 'hlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Hlist/styles.css' } } elseif listType == 'unbulleted' then table.insert(data.classes, 'plainlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Plainlist/styles.css' } } end table.insert(data.classes, args.class) -- Main div style data.style = args.style -- Indent for horizontal lists if listType == 'horizontal' or listType == 'horizontal_ordered' then local indent = tonumber(args.indent) indent = indent and indent * 1.6 or 0 if indent > 0 then data.marginLeft = indent .. 'em' end end -- List style types for ordered lists -- This could be "1, 2, 3", "a, b, c", or a number of others. The list style -- type is either set by the "type" attribute or the "list-style-type" CSS -- property. if listType == 'ordered' or listType == 'horizontal_ordered' then data.listStyleType = args.list_style_type or args['list-style-type'] data.type = args['type'] -- Detect invalid type attributes and attempt to convert them to -- list-style-type CSS properties. if data.type and not data.listStyleType and not tostring(data.type):find('^%s*[1AaIi]%s*$') then data.listStyleType = data.type data.type = nil end end -- List tag type if listType == 'ordered' or listType == 'horizontal_ordered' then data.listTag = 'ol' else data.listTag = 'ul' end -- Start number for ordered lists data.start = args.start if listType == 'horizontal_ordered' then -- Apply fix to get start numbers working with horizontal ordered lists. local startNum = tonumber(data.start) if startNum then data.counterReset = 'listitem ' .. tostring(startNum - 1) end end -- List style -- ul_style and ol_style are included for backwards compatibility. No -- distinction is made for ordered or unordered lists. data.listStyle = args.list_style -- List items -- li_style is included for backwards compatibility. item_style was included -- to be easier to understand for non-coders. data.itemStyle = args.item_style or args.li_style data.items = {} for _, num in ipairs(mTableTools.numKeys(args)) do local item = {} item.content = args[num] item.style = args['item' .. tostring(num) .. '_style'] or args['item_style' .. tostring(num)] item.value = args['item' .. tostring(num) .. '_value'] or args['item_value' .. tostring(num)] table.insert(data.items, item) end return data end function p.renderList(data) -- Renders the list HTML. -- Return the blank string if there are no list items. if type(data.items) ~= 'table' or #data.items < 1 then return '' end -- Render the main div tag. local root = mw.html.create('div') for _, class in ipairs(data.classes or {}) do root:addClass(class) end root:css{['margin-left'] = data.marginLeft} if data.style then root:cssText(data.style) end -- Render the list tag. local list = root:tag(data.listTag or 'ul') list :attr{start = data.start, type = data.type} :css{ ['counter-reset'] = data.counterReset, ['list-style-type'] = data.listStyleType } if data.listStyle then list:cssText(data.listStyle) end -- Render the list items for _, t in ipairs(data.items or {}) do local item = list:tag('li') if data.itemStyle then item:cssText(data.itemStyle) end if t.style then item:cssText(t.style) end item :attr{value = t.value} :wikitext(t.content) end return data.templatestyles .. tostring(root) end function p.renderTrackingCategories(args) local isDeprecated = false -- Tracks deprecated parameters. for k, v in pairs(args) do k = tostring(k) if k:find('^item_style%d+$') or k:find('^item_value%d+$') then isDeprecated = true break end end local ret = '' if isDeprecated then ret = ret .. '[[Category:List templates with deprecated parameters]]' end return ret end function p.makeList(listType, args) if not listType or not listTypes[listType] then error(string.format( "bad argument #1 to 'makeList' ('%s' is not a valid list type)", tostring(listType) ), 2) end checkType('makeList', 2, args, 'table') local data = p.makeListData(listType, args) local list = p.renderList(data) local trackingCategories = p.renderTrackingCategories(args) return list .. trackingCategories end for listType in pairs(listTypes) do p[listType] = function (frame) local mArguments = require('Module:Arguments') local origArgs = mArguments.getArgs(frame, { valueFunc = function (key, value) if not value or not mw.ustring.find(value, '%S') then return nil end if mw.ustring.find(value, '^%s*[%*#;:]') then return value else return value:match('^%s*(.-)%s*$') end return nil end }) -- Copy all the arguments to a new table, for faster indexing. local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.makeList(listType, args) end end return p 7a4f36a6e9cd56370bdd8207d23694124821dc1a Module:Navbox/configuration 828 107 261 2022-12-29T18:14:27Z wikipedia>Izno 0 get these in Scribunto text/plain return { aria_label = 'Navbox', nowrap_item = '%s<span class="nowrap">%s</span>', templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Module:Navbox/styles.css' } }, hlist_templatestyles = 'Hlist/styles.css', plainlist_templatestyles = 'Plainlist/styles.css', -- do not localize marker table marker = { oddeven = '\127_ODDEVEN_\127', restart = '\127_ODDEVEN0_\127', regex = '\127_ODDEVEN(%d?)_\127' }, category = { orphan = '[[Category:Navbox orphans]]', horizontal_lists = 'Navigational boxes without horizontal lists', background_colors = 'Navboxes using background colours', illegible = 'Potentially illegible navboxes', borders = 'Navboxes using borders', }, keyword = { border_subgroup = 'subgroup', border_child = 'child', border_none = 'none', evenodd_swap = 'swap', navbar_off = 'off', navbar_plain = 'plain', nocat_false = 'false', nowrapitems_yes = 'yes', orphan_yes = 'yes', state_collapsed = 'collapsed', state_off = 'off', state_plain = 'plain', subpage_doc = 'doc', subpage_sandbox = 'sandbox', subpage_testcases = 'testcases', tracking_no = 'no' }, class = { autocollapse = 'autocollapse', collapsible = 'mw-collapsible', collapsed = 'mw-collapsed', -- Warning navbox = 'navbox', -- WMF currently hides 'navbox' from mobile, -- so you probably shouldn't change the navbox class. navbox_abovebelow = 'navbox-abovebelow', navbox_group = 'navbox-group', navbox_image = 'navbox-image', navbox_inner = 'navbox-inner', navbox_list = 'navbox-list', navbox_list_with_group = 'navbox-list-with-group', navbox_part = 'navbox-', -- do not l10n navbox_styles = 'navbox-styles', navbox_subgroup = 'navbox-subgroup', navbox_title = 'navbox-title', -- l10n only if you change pattern.navbox_title below navbox_odd_part = 'odd', -- do not l10n navbox_even_part = 'even', -- do not l10n nomobile = 'nomobile', nowraplinks = 'nowraplinks', noviewer = 'noviewer' -- used to remove images from MediaViewer }, pattern = { listnum = '^list(%d+)$', class = 'class', sandbox = '/sandbox$', navbox = 'Template:Navbox', nowrap = '^<span class="nowrap">', style = 'style$', navbox_title = '<th[^>]*"navbox%-title"', hlist = 'hlist', plainlist = 'plainlist', }, arg = { above = 'above', aboveclass = 'aboveclass', abovestyle = 'abovestyle', basestyle = 'basestyle', bodyclass = 'bodyclass', bodystyle = 'bodystyle', border = 'border', below = 'below', belowclass = 'belowclass', belowstyle = 'belowstyle', evenodd = 'evenodd', evenstyle = 'evenstyle', group1 = 'group1', group2 = 'group2', group_and_num = 'group%d', groupstyle_and_num = 'group%dstyle', groupclass = 'groupclass', groupstyle = 'groupstyle', groupwidth = 'groupwidth', innerstyle = 'innerstyle', image = 'image', imageclass = 'imageclass', imageleft = 'imageleft', imageleftstyle = 'imageleftstyle', imagesetyle = 'imagestyle', list_and_num = 'list%d', listclass_and_num = 'list%dclass', liststyle_and_num = 'list%dstyle', list1padding = 'list1padding', listclass = 'listclass', listpadding = 'listpadding', liststyle = 'liststyle', name = 'name', navbar = 'navbar', navboxclass = 'navboxclass', nocat = 'nocat', nowrapitems = 'nowrapitems', oddstyle = 'oddstyle', orphan = 'orphan', state = 'state', style = 'style', templatestyles = 'templatestyles', child_templatestyles = 'child templatestyles', title = 'title', titleclass = 'titleclass', titlestyle = 'titlestyle', tracking = 'tracking' }, -- names of navbar arguments navbar = { name = 1, fontstyle = 'fontstyle', mini = 'mini' } } 4148736fd32a93636c0413e73ed38afaef065ec9 Module:Navbar/configuration 828 38 71 2022-12-29T18:18:21Z wikipedia>Izno 0 add hlist/styles.css Scribunto text/plain return { ['templatestyles'] = 'Module:Navbar/styles.css', ['hlist_templatestyles'] = 'Hlist/styles.css', ['box_text'] = 'This box: ', -- default text box when not plain or mini ['title_namespace'] = 'Template', -- namespace to default to for title ['invalid_title'] = 'Invalid title ', ['classes'] = { -- set a line to nil if you don't want it ['navbar'] = 'navbar', ['plainlinks'] = 'plainlinks', -- plainlinks ['horizontal_list'] = 'hlist', -- horizontal list class ['mini'] = 'navbar-mini', -- class indicating small links in the navbar ['this_box'] = 'navbar-boxtext', ['brackets'] = 'navbar-brackets', -- 'collapsible' is the key for a class to indicate the navbar is -- setting up the collapsible element in addition to the normal -- navbar. ['collapsible'] = 'navbar-collapse', ['collapsible_title_mini'] = 'navbar-ct-mini', ['collapsible_title_full'] = 'navbar-ct-full' } } b007c336b17ec4bcd4d5a9dca9f8cba301662b55 Module:Navbar 828 37 69 2022-12-29T18:20:02Z wikipedia>Izno 0 add templatestyles for hlist Scribunto text/plain local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false, false} if template then show[2] = false show[3] = false local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} -- TODO: Consider removing TableTools dependency. for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end local remove_edit_link = args.noedit if remove_edit_link then show[3] = false end return show end local function add_link(link_description, ul, is_mini, font_style) local l if link_description.url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass('nv-' .. link_description.full) :wikitext(l[1] .. link_description.link .. l[2]) :tag(is_mini and 'abbr' or 'span') :attr('title', link_description.html_title) :cssText(font_style) :wikitext(is_mini and link_description.mini or link_description.full) :done() :wikitext(l[3]) :done() end local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style) local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace) if not title then error(cfg.invalid_title .. title_text) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' -- TODO: Get link_descriptions and show into the configuration module. -- link_descriptions should be easier... local link_descriptions = { { ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', ['link'] = title.fullText, ['url'] = false }, { ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', ['link'] = talkpage, ['url'] = false }, { ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', ['link'] = title:fullUrl('action=edit'), ['url'] = true }, { ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template', ['link'] = title:fullUrl('action=history'), ['url'] = true }, { ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template', ['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true }, { ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template', ['link'] = title:fullUrl('action=watch'), ['url'] = true } } local ul = mw.html.create('ul') if has_brackets then ul:addClass(cfg.classes.brackets) :cssText(font_style) end for i, _ in ipairs(displayed_links) do if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end end return ul:done() end function p._navbar(args) -- TODO: We probably don't need both fontstyle and fontcolor... local font_style = args.fontstyle local font_color = args.fontcolor local is_collapsible = args.collapsible local is_mini = args.mini local is_plain = args.plain local collapsible_class = nil if is_collapsible then collapsible_class = cfg.classes.collapsible if not is_plain then is_mini = 1 end if font_color then font_style = (font_style or '') .. '; color: ' .. font_color .. ';' end end local navbar_style = args.style local div = mw.html.create():tag('div') div :addClass(cfg.classes.navbar) :addClass(cfg.classes.plainlinks) :addClass(cfg.classes.horizontal_list) :addClass(collapsible_class) -- we made the determination earlier :cssText(navbar_style) if is_mini then div:addClass(cfg.classes.mini) end local box_text = (args.text or cfg.box_text) .. ' ' -- the concatenated space guarantees the box text is separated if not (is_mini or is_plain) then div :tag('span') :addClass(cfg.classes.box_text) :cssText(font_style) :wikitext(box_text) end local template = args.template local displayed_links = choose_links(template, args) local has_brackets = args.brackets local title_arg = get_title_arg(is_collapsible, template) local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style) div:node(list) if is_collapsible then local title_text_class if is_mini then title_text_class = cfg.classes.collapsible_title_mini else title_text_class = cfg.classes.collapsible_title_full end div:done() :tag('div') :addClass(title_text_class) :cssText(font_style) :wikitext(args[1]) end local frame = mw.getCurrentFrame() -- hlist -> navbar is best-effort to preserve old Common.css ordering. return frame:extensionTag{ name = 'templatestyles', args = { src = cfg.hlist_templatestyles } } .. frame:extensionTag{ name = 'templatestyles', args = { src = cfg.templatestyles } } .. tostring(div:done()) end function p.navbar(frame) return p._navbar(require('Module:Arguments').getArgs(frame)) end return p 79f907e59eaa8bbf8dd50bb751933ebeaaa7eb17 Template:Advert 10 1303 2638 2022-12-29T21:29:07Z w>Mathglot 0 Add hatnote; [[Template:AD]] redirects here; it is not a [[calendar era]] template. wikitext text/x-wiki <noinclude>{{redirect|Template:AD|the [[calendar era]] template|Template:CE}}</noinclude>{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Advert | type = content | class= ambox-Advert | issue= This {{{1|article}}} '''contains content that is written like [[Wikipedia:What Wikipedia is not#Wikipedia is not a soapbox or means of promotion|{{#if:{{{2|{{{type|}}}}}}|{{{2|{{{type}}}}}}|an advertisement}}]]'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by removing [[WP:Spam|promotional content]] and inappropriate [[Wikipedia:External_links#Advertising_and_conflicts_of_interest|external links]], and by adding encyclopedic content written from a [[Wikipedia:Neutral point of view|neutral point of view]]. | removalnotice = yes | cat = Articles with a promotional tone | date = {{{date|}}} | all = All articles with a promotional tone }} }}<noinclude> {{documentation}} </noinclude> 503795cf9361b12bcaed584d6fafb2cc04c11b57 Template:Navbar-header 10 1664 3077 2022-12-30T22:49:41Z wikipedia>GKFX 0 Use [[Module:Navbar]] directly for [[WP:PEIS]] reasons. wikitext text/x-wiki <templatestyles src="Navbar-header/styles.css"/><div class="navbar-header" {{#if:{{{fontcolor|}}}|style="color:{{{fontcolor}}};"}}>{{{1}}}<!-- -->{{#invoke:navbar|navbar | 1 = {{{2<noinclude>|Navbar-header</noinclude>}}} | {{#ifeq: {{{plain|}}} |<!--equals:-->1 |<!--then:-->plain |<!--else:-->mini }} = 1 | {{#if: {{{fontcolor|}}} | fontstyle | NULL }} = color:{{{fontcolor}}}; }}<!-- --></div><noinclude> {{documentation}} <!-- Add cats and interwikis to the /doc subpage, not here! --> </noinclude> f24c880cdd077ccfcd14829309531bb17c5bb430 Module:Detect singular 828 175 403 2023-01-02T22:05:13Z wikipedia>Hike395 0 decode HTML entities Scribunto text/plain local p = {} local getArgs = require('Module:Arguments').getArgs local yesNo = require('Module:Yesno') local getPlain = require('Module:Text').Text().getPlain -- function to determine whether "sub" occurs in "s" local function plainFind(s, sub) return mw.ustring.find(s, sub, 1, true) end -- function to count the number of times "pattern" (a regex) occurs in "s" local function countMatches(s, pattern) local _, count = mw.ustring.gsub(s, pattern, '') return count end local singular = 1 local likelyPlural = 2 local plural = 3 -- Determine whether a string is singular or plural (i.e., it represents one -- item or many) -- Arguments: -- origArgs[1]: string to process -- origArgs.no_comma: if false, use commas to detect plural (default false) -- origArgs.parse_links: if false, treat wikilinks as opaque singular objects (default false) -- Returns: -- singular, likelyPlural, or plural (see constants above), or nil for completely unknown function p._main(origArgs) origArgs = type(origArgs) == 'table' and origArgs or {} local args = {} -- canonicalize boolean arguments for key, default in pairs({no_comma=false,parse_links=false,any_comma=false,no_and=false}) do if origArgs[key] == nil then args[key] = default else args[key] = yesNo(origArgs[key],default) end end local checkComma = not args.no_comma local checkAnd = not args.no_and local rewriteLinks = not args.parse_links local anyComma = args.any_comma local s = origArgs[1] -- the input string if not s then return nil -- empty input returns nil end s = tostring(s) s = mw.text.decode(s,true) --- replace HTML entities (to avoid spurious semicolons) if plainFind(s,'data-plural="0"') then -- magic data string to return true return singular end if plainFind(s,'data-plural="1"') then -- magic data string to return false return plural end -- count number of list items local numListItems = countMatches(s,'<%s*li') -- if exactly one, then singular, if more than one, then plural if numListItems == 1 then return singular end if numListItems > 1 then return plural end -- if "list of" occurs inside of wlink, then it's plural if mw.ustring.find(s:lower(), '%[%[[^%]]*list of[^%]]+%]%]') then return plural end -- fix for trailing br tags passed through [[template:marriage]] s = mw.ustring.gsub(s, '<%s*br[^>]*>%s*(</div>)', '%1') -- replace all wikilinks with fixed string if rewriteLinks then s = mw.ustring.gsub(s,'%b[]','WIKILINK') end -- Five conditions: any one of them can make the string a likely plural or plural local hasBreak = mw.ustring.find(s,'<%s*br') -- For the last 4, evaluate on string stripped of wikimarkup s = getPlain(s) local hasBullets = countMatches(s,'%*+') > 1 local multipleQids = mw.ustring.find(s,'Q%d+[%p%s]+Q%d+') -- has multiple QIDs in a row if hasBullets or multipleQids then return plural end local commaPattern = anyComma and '[,;]' or '%D[,;]%D' -- semi-colon similar to comma local hasComma = checkComma and mw.ustring.find(s, commaPattern) local hasAnd = checkAnd and mw.ustring.find(s,'[,%s]and%s') if hasBreak or hasComma or hasAnd then return likelyPlural end return singular end function p._pluralize(args) args = type(args) == 'table' and args or {} local singularForm = args[3] or args.singular or "" local pluralForm = args[4] or args.plural or "" local likelyForm = args.likely or pluralForm local link = args[5] or args.link if link then link = tostring(link) singularForm = '[['..link..'|'..singularForm..']]' pluralForm = '[['..link..'|'..pluralForm..']]' likelyForm = '[['..link..'|'..likelyForm..']]' end if args[2] then return pluralForm end local detect = p._main(args) if detect == nil then return "" -- return blank on complete failure end if detect == singular then return singularForm elseif detect == likelyPlural then return likelyForm else return pluralForm end end function p.main(frame) local args = getArgs(frame) -- For template, return 1 if singular, blank if plural or empty local result = p._main(args) if result == nil then return 1 end return result == singular and 1 or "" end function p.pluralize(frame) local args = getArgs(frame) return p._pluralize(args) end return p 6afb2e8c0bd8ddff094e2861b836521ee4a5a779 Template:Megali Idea 10 1112 2423 2023-01-07T22:16:47Z wikipedia>DuncanHill 0 Use direct links in templates [[WP:NAVNOREDIRECT]] - Have not checked all wikitext text/x-wiki {{Navbox |name = Megali Idea |title = [[Megali Idea]] |state = {{{state|autocollapse}}} |listclass = hlist |titlestyle = background:; |groupstyle = text-align:center; background:; |image= [[File:ParisPeace-Venizelos-Map.png|120px]] |group1 = Background |list1 = * [[Fall of Constantinople]] * [[Ottoman Greece]] * [[Greek Plan]] * [[Greek War of Independence]] * [[First Hellenic Republic]] * [[Kingdom of Greece]] |group2 = Annexations |list2 = * [[Ionian Islands]] (1864) * [[Thessaly]] (1881) * [[Crete]] (1912) * [[Epirus (region)|Epirus]] (1912) * [[Macedonia (Greece)|Macedonia]] (1912) * [[North Aegean islands]] (1912) * [[Western Thrace]] (1919) * [[Dodecanese]] (1947) |group3 = Temporary<br/>acquisitions |list3 = * [[Eastern Thrace]] (1920–23) * [[Imbros]] and [[Tenedos]] (1912–13, 1920–23) * [[Northern Epirus]] (1914–17, 1919–21, 1940–41) * [[Smyrna Zone]] (1919–22 as dependency) * [[Occupation of Istanbul|Constantinople, Zone of the Straits]] (1918–23 with France, Italy and United Kingdom) |group4 = Other areas |list4 = * [[Asia Minor]] which included: [[Ionia]] *[[Aeolis]] *[[Doris (Asia Minor)|Doris]] *[[Cappadocia]] ([[Cappadocian Greeks]]) *[[Lydia]] *[[Caria]] *[[Mysia]] *[[Troad|Troas]] *[[Phrygia]] *[[Galatia]] *[[Bithynia]] *[[Lycia]] *[[Cilicia]] *[[Cataonia]] *[[Lycaonia]] *[[Pamphylia]] *[[Isauria]] *[[Pisidia]] *[[Paphlagonia]] *[[Chamanene]] *[[Armenia Minor]] *Part of [[Commagene]] * [[Cyprus]] * [[Eastern Rumelia]] * [[Pelagonia]] ([[Bitola|Monastiri]] region) * [[Gevgelija|Gevgeli]] * [[Sazan|Sazan island]] * [[Pontus (region)|Pontus]] |group5 = Ideas |list5 = * [[Greek nationalism]] * [[Hellenization]] * [[Enosis]] |group6 = People/Organizations |list6 = * [[Ioannis Kolettis]] * [[Aristotelis Valaoritis]] * [[Ethniki Etaireia]] * [[Macedonian Committee]] * [[Alexandros Koumoundouros]] * [[Dimitrios Kalapothakis]] * [[Stephanos Dragoumis]] * [[Pavlos Melas]] * [[Kostis Palamas]] * [[Goudi coup|Military League]] * [[Eleftherios Venizelos]] * [[Penelope Delta]] * [[Themistoklis Sofoulis]] * [[Nikolaos Plastiras]] * [[Georgios Christakis-Zografos]] * [[Theodoros Pangalos (general)|Theodoros Pangalos]] * [[Northern Epirus Liberation Front]] * [[EOKA]] * [[Georgios Grivas]] * [[Dimitrios Ioannidis]] |group7 = Events |list7 = * [[Party of Radicals (Ionian Islands)]] * [[Epirus Revolt of 1854]] * [[1854 Macedonian rebellion]] * [[1867 Macedonian rebellion]] * [[Cretan revolt (1866–1869)]] * [[Cretan revolt (1878)]] * [[Epirus Revolt of 1878]] * [[1878 Macedonian rebellion]] * [[Macedonian Struggle]] * [[Greco-Turkish War (1897)]] * [[Theriso revolt]] * [[Balkan League]] * [[Greece in the Balkan Wars|Balkan Wars]] * [[Himara revolt of 1912]] * [[Autonomous Republic of Northern Epirus]] * [[Provisional Government of National Defence]] * [[National Defence Army Corps]] * [[Greece during World War I|Greece in WWI]] * [[Occupation of Constantinople]] * [[Greek landing at Smyrna]] * [[Republic of Pontus]] * [[Greco-Turkish War (1919–1922)]] * [[Great Fire of Smyrna]] * [[1931 Cyprus Revolt]] * [[Military history of Greece during World War II|Greece in WWII]] * [[Greco-Italian War]] * [[Cyprus Emergency]] * [[1974 Cypriot coup d'état]] |group8 = Treaties |list8 = * [[Treaty of London (1864)]] * [[Greek-Serbian Alliance of 1867]] * [[Treaty of Berlin (1878)]] * [[Convention of Constantinople (1881)]] * [[Treaty of Constantinople (1897)]] * [[Greek-Serbian Alliance of 1913]] * [[Treaty of London (1913)]] * [[Treaty of Bucharest (1913)]] * [[Treaty of Athens]] (1913) * [[Protocol of Corfu]] (1914) * [[Venizelos–Tittoni agreement]] (1919) * [[Treaty of Neuilly-sur-Seine]] (1919) * [[Treaty of Sèvres]] (1920) * [[Treaty of Lausanne|Treaty of Lausanne (1923)]] * [[Treaty of Peace with Italy, 1947|Treaty of Paris (1947)]] * [[Treaty of Guarantee (1960)]] |below = |belowstyle = background:; }}<noinclude> {{collapsible option}} [[Category:Megali Idea|τ]] [[Category:Greek nationalism|τ]] [[Category:Pan-nationalism|*]] </noinclude> 16782fa2ee56cebd2c36eca2c8f7b99db0bdd539 Template:Infobox UK place/local 10 1408 2743 2023-01-08T00:08:53Z w>Jonesey95 0 fix broken ambulance service at e.g. [[Eversley Cross]] wikitext text/x-wiki {{#switch: {{{level1}}} | England = {{#switch: {{{level2}}} | East Midlands = {{#ifeq: {{{retrieve}}}|region|[[East Midlands]]|{{#switch: {{{level3}}} | Derbyshire | [[Derbyshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Derbyshire | maptitle = [[Derbyshire]] | fire = [[Derbyshire Fire and Rescue Service|Derbyshire]] | police = [[Derbyshire Constabulary|Derbyshire]] | footer = [[List of places in Derbyshire|Derbyshire]] | ambulance = {{#switch: {{{postcode}}} | SK13 = [[North West Ambulance Service|North West]] | #default = [[East Midlands Ambulance Service|East Midlands]] }}}} | Leicestershire | [[Leicestershire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Leicestershire | maptitle = [[Leicestershire]] | ambulance = [[East Midlands Ambulance Service|East Midlands]] | fire = [[Leicestershire and Rutland Fire and Rescue Service|Leicestershire]] | police = [[Leicestershire Police|Leicestershire]] | footer = [[List of places in Leicestershire|Leicestershire]] }} | Lincolnshire | [[Lincolnshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Lincolnshire | maptitle = [[Lincolnshire]] | ambulance = [[East Midlands Ambulance Service|East Midlands]] | fire = [[Lincolnshire Fire and Rescue Service|Lincolnshire]] | police = [[Lincolnshire Police|Lincolnshire]] | footer = [[List of places in Lincolnshire|Lincolnshire]] }} | Northamptonshire | [[Northamptonshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Northamptonshire | maptitle = [[Northamptonshire]] | ambulance = [[East Midlands Ambulance Service|East Midlands]] | fire = [[Northamptonshire Fire and Rescue Service|Northamptonshire]] | police = [[Northamptonshire Police|Northamptonshire]] | footer = [[List of places in Northamptonshire|Northamptonshire]] }} | Nottinghamshire | [[Nottinghamshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Nottinghamshire | maptitle = [[Nottinghamshire]] | ambulance = [[East Midlands Ambulance Service|East Midlands]] | fire = [[Nottinghamshire Fire and Rescue Service|Nottinghamshire]] | police = [[Nottinghamshire Police|Nottinghamshire]] | footer = [[List of places in Nottinghamshire|Nottinghamshire]] }} | Rutland | [[Rutland]] = {{#switch: {{{retrieve}}} | map = United Kingdom Rutland | maptitle = [[Rutland]] | ambulance = [[East Midlands Ambulance Service|East Midlands]] | fire = [[Leicestershire and Rutland Fire and Rescue Service|Leicestershire]] | police = [[Leicestershire Police|Leicestershire]] | footer = [[List of places in Rutland|Rutland]] }}}}}} | East of England = {{#switch: {{{retrieve}}} | ambulance = [[East of England Ambulance Service|East of England]] | region = [[East of England|East]] | #default = {{#switch: {{{level3}}} | Bedfordshire | [[Bedfordshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Bedfordshire | maptitle = [[Bedfordshire]] | fire = [[Bedfordshire and Luton Fire and Rescue Service|Bedfordshire and Luton]] | police = [[Bedfordshire Police|Bedfordshire]] | footer = [[List of places in Bedfordshire|Bedfordshire]] }} | Cambridgeshire | [[Cambridgeshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Cambridgeshire | maptitle = [[Cambridgeshire]] | fire = [[Cambridgeshire Fire and Rescue Service|Cambridgeshire]] | police = [[Cambridgeshire Constabulary|Cambridgeshire]] | footer = [[List of places in Cambridgeshire|Cambridgeshire]] }} | Essex | [[Essex]] = {{#switch: {{{retrieve}}} | map = United Kingdom Essex | maptitle = [[Essex]] | fire = [[Essex County Fire and Rescue Service|Essex]] | police = [[Essex Police|Essex]] | footer = [[List of places in Essex|Essex]] }} | Hertfordshire | [[Hertfordshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Hertfordshire | maptitle = [[Hertfordshire]] | fire = [[Hertfordshire Fire and Rescue Service|Hertfordshire]] | police = [[Hertfordshire Constabulary|Hertfordshire]] | footer = [[List of places in Hertfordshire|Hertfordshire]] }} | Norfolk | [[Norfolk]] = {{#switch: {{{retrieve}}} | map = United Kingdom Norfolk | maptitle = [[Norfolk]] | fire = [[Norfolk Fire and Rescue Service|Norfolk]] | police = [[Norfolk Constabulary|Norfolk]] | footer = [[List of places in Norfolk|Norfolk]] }} | Suffolk | [[Suffolk]] = {{#switch: {{{retrieve}}} | map = United Kingdom Suffolk | maptitle = [[Suffolk]] | fire = [[Suffolk Fire and Rescue Service|Suffolk]] | police = [[Suffolk Constabulary|Suffolk]] | footer = [[List of places in Suffolk|Suffolk]] }}}}}} | London | Greater London = {{#switch: {{{retrieve}}} | map = United Kingdom Greater London | maptitle = [[Greater London]] | ambulance = [[London Ambulance Service|London]] | fire = [[London Fire Brigade|London]] | region = [[Greater London|London]] | footer = [[List of places in London|London]] | #default = {{#switch: {{{level3}}} | City of London = {{#switch: {{{retrieve}}} | assembly = [[City and East (London Assembly constituency)|City and East]] | borough = [[City of London]] | boroughhead = Sui&nbsp;generis | countyhead = Administrative area | police = [[City of London Police|City of London]] }} | #default = {{#switch: {{{retrieve}}} | boroughhead = [[Districts of England|London&nbsp;borough]] | countyhead = [[Ceremonial counties of England|Ceremonial&nbsp;county]] | police = [[Metropolitan Police|Metropolitan]] | #default = {{#switch: {{{level4}}} | Barking and Dagenham | Barking & Dagenham = {{#switch: {{{retrieve}}} | assembly = [[City and East (London Assembly constituency)|City and East]] | borough = [[London Borough of Barking and Dagenham|Barking & Dagenham]] }} | Barnet = {{#switch: {{{retrieve}}} | assembly = [[Barnet and Camden (London Assembly constituency)|Barnet and Camden]] | borough = [[London Borough of Barnet|Barnet]] }} | Bexley = {{#switch: {{{retrieve}}} | assembly = [[Bexley and Bromley (London Assembly constituency)|Bexley and Bromley]] | borough = [[London Borough of Bexley|Bexley]] }} | Brent = {{#switch: {{{retrieve}}} | assembly = [[Brent and Harrow (London Assembly constituency)|Brent and Harrow]] | borough = [[London Borough of Brent|Brent]] }} | Bromley = {{#switch: {{{retrieve}}} | assembly = [[Bexley and Bromley (London Assembly constituency)|Bexley and Bromley]] | borough = [[London Borough of Bromley|Bromley]] }} | Camden = {{#switch: {{{retrieve}}} | assembly = [[Barnet and Camden (London Assembly constituency)|Barnet and Camden]] | borough = [[London Borough of Camden|Camden]] }} | Croydon = {{#switch: {{{retrieve}}} | assembly = [[Croydon and Sutton (London Assembly constituency)|Croydon and Sutton]] | borough = [[London Borough of Croydon|Croydon]] }} | Ealing = {{#switch: {{{retrieve}}} | assembly = [[Ealing and Hillingdon (London Assembly constituency)|Ealing and Hillingdon]] | borough = [[London Borough of Ealing|Ealing]] }} | Enfield = {{#switch: {{{retrieve}}} | assembly = [[Enfield and Haringey (London Assembly constituency)|Enfield and Haringey]] | borough = [[London Borough of Enfield|Enfield]] }} | Greenwich = {{#switch: {{{retrieve}}} | assembly = [[Greenwich and Lewisham (London Assembly constituency)|Greenwich and Lewisham]] | borough = [[Royal Borough of Greenwich|Greenwich]] }} | Hackney = {{#switch: {{{retrieve}}} | assembly = [[North East (London Assembly constituency)|North East]] | borough = [[London Borough of Hackney|Hackney]] }} | Hammersmith and Fulham | Hammersmith & Fulham = {{#switch: {{{retrieve}}} | assembly = [[West Central (London Assembly constituency)|West Central]] | borough = [[London Borough of Hammersmith and Fulham|Hammersmith & Fulham]] }} | Haringey = {{#switch: {{{retrieve}}} | assembly = [[Enfield and Haringey (London Assembly constituency)|Enfield and Haringey]] | borough = [[London Borough of Haringey|Haringey]] }} | Harrow = {{#switch: {{{retrieve}}} | assembly = [[Brent and Harrow (London Assembly constituency)|Brent and Harrow]] | borough = [[London Borough of Harrow|Harrow]] }} | Havering = {{#switch: {{{retrieve}}} | assembly = [[Havering and Redbridge (London Assembly constituency)|Havering and Redbridge]] | borough = [[London Borough of Havering|Havering]] }} | Hillingdon = {{#switch: {{{retrieve}}} | assembly = [[Ealing and Hillingdon (London Assembly constituency)|Ealing and Hillingdon]] | borough = [[London Borough of Hillingdon|Hillingdon]] }} | Hounslow = {{#switch: {{{retrieve}}} | assembly = [[South West (London Assembly constituency)|South West]] | borough = [[London Borough of Hounslow|Hounslow]] }} | Islington = {{#switch: {{{retrieve}}} | assembly = [[North East (London Assembly constituency)|North East]] | borough = [[London Borough of Islington|Islington]] }} | Kensington and Chelsea | Kensington & Chelsea = {{#switch: {{{retrieve}}} | assembly = [[West Central (London Assembly constituency)|West Central]] | borough = [[Royal Borough of Kensington and Chelsea|Kensington & Chelsea]] }} | Kingston upon Thames | Kingston = {{#switch: {{{retrieve}}} | assembly = [[South West (London Assembly constituency)|South West]] | borough = [[Royal Borough of Kingston upon Thames|Kingston]] }} | Lambeth = {{#switch: {{{retrieve}}} | assembly = [[Lambeth and Southwark (London Assembly constituency)|Lambeth and Southwark]] | borough = [[London Borough of Lambeth|Lambeth]] }} | Lewisham = {{#switch: {{{retrieve}}} | assembly = [[Greenwich and Lewisham (London Assembly constituency)|Greenwich and Lewisham]] | borough = [[London Borough of Lewisham|Lewisham]] }} | Merton = {{#switch: {{{retrieve}}} | assembly = [[Merton and Wandsworth (London Assembly constituency)|Merton and Wandsworth]] | borough = [[London Borough of Merton|Merton]] }} | Newham = {{#switch: {{{retrieve}}} | assembly = [[City and East (London Assembly constituency)|City and East]] | borough = [[London Borough of Newham|Newham]] }} | Redbridge = {{#switch: {{{retrieve}}} | assembly = [[Havering and Redbridge (London Assembly constituency)|Havering and Redbridge]] | borough = [[London Borough of Redbridge|Redbridge]] }} | Richmond upon Thames | Richmond = {{#switch: {{{retrieve}}} | assembly = [[South West (London Assembly constituency)|South West]] | borough = [[London Borough of Richmond upon Thames|Richmond]] }} | Southwark = {{#switch: {{{retrieve}}} | assembly = [[Lambeth and Southwark (London Assembly constituency)|Lambeth and Southwark]] | borough = [[London Borough of Southwark|Southwark]] }} | Sutton = {{#switch: {{{retrieve}}} | assembly = [[Croydon and Sutton (London Assembly constituency)|Croydon and Sutton]] | borough = [[London Borough of Sutton|Sutton]] }} | Tower Hamlets = {{#switch: {{{retrieve}}} | assembly = [[City and East (London Assembly constituency)|City and East]] | borough = [[London Borough of Tower Hamlets|Tower Hamlets]] }} | Waltham Forest = {{#switch: {{{retrieve}}} | assembly = [[North East (London Assembly constituency)|North East]] | borough = [[London Borough of Waltham Forest|Waltham Forest]] }} | Wandsworth = {{#switch: {{{retrieve}}} | assembly = [[Merton and Wandsworth (London Assembly constituency)|Merton and Wandsworth]] | borough = [[London Borough of Wandsworth|Wandsworth]] }} | Westminster = {{#switch: {{{retrieve}}} | assembly = [[West Central (London Assembly constituency)|West Central]] | borough = [[City of Westminster|Westminster]] }}}}}}}}}} | North East England = {{#switch: {{{retrieve}}} | ambulance = [[North East Ambulance Service|North East]] | region = [[North East England|North East]] | #default = {{#switch: {{{level3}}} | [[County Durham]] | [[County Durham|Durham]] = {{#switch: {{{level4}}} | [[Borough of Stockton-on-Tees]] | [[Borough of Stockton-on-Tees|Stockton-on-Tees]] | [[Stockton-on-Tees (borough)|Stockton-on-Tees]] | [[Stockton-on-Tees (borough)]] | [[Redcar and Cleveland]] | [[Borough of Hartlepool]] | [[Borough of Hartlepool|Hartlepool]] | [[Hartlepool (borough)]] | [[Hartlepool (borough)|Hartlepool]] | [[Middlesbrough]] | [[Middlesbrough (borough)]] | [[Middlesbrough (borough)|Middlesbrough]] = {{#switch: {{{retrieve}}} | map = United Kingdom County Durham | maptitle = [[County Durham]] | fire = [[Cleveland Fire Brigade|Cleveland]] | police = [[Cleveland Police|Cleveland]] | footer = [[List of places in County Durham|County Durham]] }} | #default = {{#switch: {{{retrieve}}} | map = United Kingdom County Durham | maptitle = [[County Durham]] | fire = [[County Durham and Darlington Fire and Rescue Service|County Durham and Darlington]] | police = [[Durham Constabulary|Durham]] | footer = [[List of places in County Durham|County Durham]] }}}} | Northumberland | [[Northumberland]] = {{#switch: {{{retrieve}}} | map = United Kingdom Northumberland | maptitle = [[Northumberland]] | fire = [[Northumberland Fire and Rescue Service|Northumberland]] | police = [[Northumbria Police|Northumbria]] | footer = [[List of places in Northumberland|Northumberland]] }} | North Yorkshire | [[North Yorkshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom North Yorkshire | maptitle = [[North Yorkshire]] | fire = [[Cleveland Fire Brigade|Cleveland]] | police = [[Cleveland Police|Cleveland]] | footer = [[List of places in Yorkshire|Yorkshire]] }} | [[Tyne and Wear]] | [[Tyne & Wear]] | [[Tyne and Wear|Tyne & Wear]] = {{#switch: {{{retrieve}}} | map = United Kingdom Tyne and Wear | maptitle = [[Tyne and Wear]] | fire = [[Tyne and Wear Fire and Rescue Service|Tyne and Wear]] | police = [[Northumbria Police|Northumbria]] | footer = [[List of places in Tyne and Wear|Tyne and Wear]] }}}}}} | North West England = {{#switch: {{{retrieve}}} | ambulance = [[North West Ambulance Service|North West]] | region = [[North West England|North West]] | #default = {{#switch: {{{level3}}} | Cheshire | [[Cheshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Cheshire | maptitle = [[Cheshire]] | fire = [[Cheshire Fire and Rescue Service|Cheshire]] | police = [[Cheshire Constabulary|Cheshire]] | footer = [[List of places in Cheshire|Cheshire]] }} | Cumbria | [[Cumbria]] = {{#switch: {{{retrieve}}} | map = United Kingdom Cumbria | maptitle = [[Cumbria]] | fire = [[Cumbria Fire and Rescue Service|Cumbria]] | police = [[Cumbria Constabulary|Cumbria]] | footer = [[List of places in Cumbria|Cumbria]] }} | Greater Manchester | [[Greater Manchester]] = {{#switch: {{{retrieve}}} | map = United Kingdom Greater Manchester | maptitle = [[Greater Manchester]] | fire = [[Greater Manchester Fire and Rescue Service|Greater Manchester]] | police = [[Greater Manchester Police|Greater Manchester]] | footer = [[List of places in Greater Manchester|Greater Manchester]] }} | Lancashire | [[Lancashire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Lancashire | maptitle = [[Lancashire]] | fire = [[Lancashire Fire and Rescue Service|Lancashire]] | police = [[Lancashire Constabulary|Lancashire]] | footer = [[List of places in Lancashire|Lancashire]] }} | Merseyside | [[Merseyside]] = {{#switch: {{{retrieve}}} | map = United Kingdom Merseyside | maptitle = [[Merseyside]] | fire = [[Merseyside Fire and Rescue Service|Merseyside]] | police = [[Merseyside Police|Merseyside]] | footer = [[List of places in Merseyside|Merseyside]] }}}}}} | South East England = {{#ifeq: {{{retrieve}}}|region|[[South East England|South East]]|{{#switch: {{{level3}}} | Berkshire | [[Berkshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Berkshire | maptitle = [[Berkshire]] | ambulance = [[South Central Ambulance Service|South Central]] | fire = [[Royal Berkshire Fire and Rescue Service|Royal Berkshire]] | police = [[Thames Valley Police|Thames Valley]] | footer = [[List of places in Berkshire|Berkshire]] }} | Buckinghamshire | [[Buckinghamshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Buckinghamshire | maptitle = [[Buckinghamshire]] | ambulance = [[South Central Ambulance Service|South Central]] | fire = [[Buckinghamshire Fire and Rescue Service|Buckinghamshire]] | police = [[Thames Valley Police|Thames Valley]] | footer = [[List of places in Buckinghamshire|Buckinghamshire]] }} | East Sussex | [[East Sussex]] = {{#switch: {{{retrieve}}} | map = United Kingdom East Sussex | maptitle = [[East Sussex]] | ambulance = [[South East Coast Ambulance Service|South East Coast]] | fire = [[East Sussex Fire & Rescue Service|East Sussex]] | police = [[Sussex Police|Sussex]] | footer = [[List of places in East Sussex|East Sussex]] }} | Hampshire | [[Hampshire]] = {{#switch: {{{retrieve}}} | fire = [[Hampshire and Isle of Wight Fire and Rescue Service|Hampshire and Isle of Wight]] | police = [[Hampshire and Isle of Wight Constabulary|Hampshire and Isle of Wight]] | footer = [[List of places in Hampshire|Hampshire]] | #default = {{#switch: {{{level4}}} | Southampton | [[Southampton]] = {{#switch: {{{retrieve}}} | map = United Kingdom Southampton | maptitle = [[Southampton]] | ambulance = [[South Central Ambulance Service|South Central]] }} | Rushmoor | [[Rushmoor]] = {{#switch: {{{retrieve}}} | map = United Kingdom Hampshire | maptitle = [[Hampshire]] | ambulance = [[South East Coast Ambulance Service|South East Coast]] }} | [[Hart (district)|Hart]] = {{#switch: {{{retrieve}}} | map = United Kingdom Hampshire | maptitle = [[Hampshire]] | ambulance = [[South Central Ambulance Service|South Central]] }} | #default = {{#switch: {{{retrieve}}} | map = United Kingdom Hampshire | maptitle = [[Hampshire]] | ambulance = [[South Central Ambulance Service|South Central]] }}}}}} | Isle of Wight | [[Isle of Wight]] = {{#switch: {{{retrieve}}} | map = United Kingdom Isle of Wight | maptitle = the [[Isle of Wight]] | ambulance = [[Isle of Wight NHS Trust|Isle of Wight]] | fire = [[Hampshire and Isle of Wight Fire and Rescue Service|Hampshire and Isle of Wight]] | police = [[Hampshire and Isle of Wight Constabulary|Hampshire and Isle of Wight]] | footer = [[List of places on the Isle of Wight|Isle of Wight]] }} | Kent | [[Kent]] = {{#switch: {{{retrieve}}} | map = United Kingdom Kent | maptitle = [[Kent]] | ambulance = [[South East Coast Ambulance Service|South East Coast]] | fire = [[Kent Fire and Rescue Service|Kent]] | police = [[Kent Police|Kent]] | footer = [[List of places in Kent|Kent]] }} | Oxfordshire | [[Oxfordshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Oxfordshire | maptitle = [[Oxfordshire]] | ambulance = {{#ifeq: {{{official_name}}}|Shrivenham|[[South Western Ambulance Service|South Western]]|[[South Central Ambulance Service|South Central]]}} | fire = [[Oxfordshire Fire and Rescue Service|Oxfordshire]] | police = [[Thames Valley Police|Thames Valley]] | footer = [[List of places in Oxfordshire|Oxfordshire]] }} | Surrey | [[Surrey]] = {{#switch: {{{retrieve}}} | map = United Kingdom Surrey | maptitle = [[Surrey]] | ambulance = [[South East Coast Ambulance Service|South East Coast]] | fire = [[Surrey Fire and Rescue Service|Surrey]] | police = [[Surrey Police|Surrey]] | footer = [[List of places in Surrey|Surrey]] }} | West Sussex | [[West Sussex]] = {{#switch: {{{retrieve}}} | map = United Kingdom West Sussex | maptitle = [[West Sussex]] | ambulance = [[South East Coast Ambulance Service|South East Coast]] | fire = [[West Sussex Fire and Rescue Service|West Sussex]] | police = [[Sussex Police|Sussex]] | footer = [[List of places in West Sussex|West Sussex]] }}}}}} | South West England = {{#ifeq: {{{retrieve}}}|region|[[South West England|South West]]|{{#switch: {{{level3}}} | Bristol | [[Bristol]] = {{#switch: {{{retrieve}}} | map = United Kingdom Bristol | maptitle = [[Bristol]] | ambulance = [[South Western Ambulance Service|South Western]] | fire = [[Avon Fire and Rescue Service|Avon]] | police = [[Avon and Somerset Constabulary|Avon and Somerset]] | footer = [[List of places in Bristol|Bristol]] }} | Cornwall | [[Cornwall]] = {{#switch: {{{retrieve}}} | map = {{#ifeq:{{{level4}}}|[[Isles of Scilly]]|United Kingdom Isles of Scilly|United Kingdom Cornwall (mainland)}} | maptitle = {{#ifeq:{{{level4}}}|[[Isles of Scilly]]|[[Isles of Scilly]]|[[Cornwall]]}} | ambulance = [[South Western Ambulance Service|South Western]] | police = [[Devon and Cornwall Police|Devon and Cornwall]] | footer = [[List of places in Cornwall|Cornwall]] | fire = {{#switch: {{{level4}}} | Isles of Scilly | [[Isles of Scilly]] = [[Isles of Scilly Fire and Rescue Service|Isles of Scilly]] | #default = [[Cornwall Fire and Rescue Service|Cornwall]] }}}} | Devon | [[Devon]] = {{#switch: {{{retrieve}}} | map = United Kingdom Devon | maptitle = [[Devon]] | ambulance = [[South Western Ambulance Service|South Western]] | fire = [[Devon and Somerset Fire and Rescue Service|Devon and Somerset]] | police = [[Devon and Cornwall Police|Devon and Cornwall]] | footer = [[List of places in Devon|Devon]] }} | Dorset | [[Dorset]] = {{#switch: {{{retrieve}}} | map = United Kingdom Dorset | maptitle = [[Dorset]] | ambulance = [[South Western Ambulance Service|South Western]] | fire = [[Dorset & Wiltshire Fire and Rescue Service|Dorset and Wiltshire]] | police = [[Dorset Police|Dorset]] | footer = [[List of places in Dorset|Dorset]] }} | Gloucestershire | [[Gloucestershire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Gloucestershire | maptitle = [[Gloucestershire]] | ambulance = [[South Western Ambulance Service|South Western]] | footer = [[List of places in Gloucestershire|Gloucestershire]] | #default = {{#switch: {{{level4}}} | South Gloucestershire | [[South Gloucestershire]] = {{#ifeq: {{{retrieve}}}|fire|[[Avon Fire and Rescue Service|Avon]]}}{{#ifeq: {{{retrieve}}}|police|[[Avon and Somerset Constabulary|Avon and Somerset]]}} | #default = {{#ifeq: {{{retrieve}}}|fire|[[Gloucestershire Fire and Rescue Service|Gloucestershire]]}}{{#ifeq: {{{retrieve}}}|police|[[Gloucestershire Constabulary|Gloucestershire]]}} }}}} | Somerset | [[Somerset]] = {{#switch: {{{retrieve}}} | map = United Kingdom Somerset | maptitle = [[Somerset]] | police = [[Avon and Somerset Constabulary|Avon and Somerset]] | footer = [[List of places in Somerset|Somerset]] | #default = {{#switch: {{{level4}}} | [[Bath and North East Somerset]] | North Somerset | [[North Somerset]] = {{#ifeq: {{{retrieve}}}|ambulance|[[South Western Ambulance Service|South Western]]}}{{#ifeq: {{{retrieve}}}|fire|[[Avon Fire and Rescue Service|Avon]]}} | #default = {{#ifeq: {{{retrieve}}}|ambulance|[[South Western Ambulance Service|South Western]]}}{{#ifeq: {{{retrieve}}}|fire|[[Devon and Somerset Fire and Rescue Service|Devon and Somerset]]}} }}}} | Wiltshire | [[Wiltshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Wiltshire | maptitle = [[Wiltshire]] | ambulance = [[South Western Ambulance Service|South Western]] | fire = [[Dorset & Wiltshire Fire and Rescue Service|Dorset and Wiltshire]] | police = [[Wiltshire Police|Wiltshire]] | footer = [[List of places in Wiltshire|Wiltshire]] }}}}}} | West Midlands = {{#switch: {{{retrieve}}} | ambulance = [[West Midlands Ambulance Service|West Midlands]] | region = [[West Midlands (region)|West Midlands]] | #default = {{#switch: {{{level3}}} | Herefordshire | [[Herefordshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Herefordshire | maptitle = [[Herefordshire]] | fire = [[Hereford and Worcester Fire and Rescue Service|Hereford and Worcester]] | police = [[West Mercia Police|West Mercia]] | footer = [[List of places in Herefordshire|Herefordshire]] }} | Shropshire | [[Shropshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Shropshire | maptitle = [[Shropshire]] | fire = [[Shropshire Fire and Rescue Service|Shropshire]] | police = [[West Mercia Police|West Mercia]] | footer = [[List of places in Shropshire|Shropshire]] }} | Staffordshire | [[Staffordshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Staffordshire | maptitle = [[Staffordshire]] | fire = [[Staffordshire Fire and Rescue Service|Staffordshire]] | police = [[Staffordshire Police|Staffordshire]] | footer = [[List of places in Staffordshire|Staffordshire]] }} | Warwickshire | [[Warwickshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Warwickshire | maptitle = [[Warwickshire]] | fire = [[Warwickshire Fire and Rescue Service|Warwickshire]] | police = [[Warwickshire Police|Warwickshire]] | footer = [[List of places in Warwickshire|Warwickshire]] }} | [[West Midlands (county)|West Midlands]] | West Midlands | [[West Midlands]] = {{#switch: {{{retrieve}}} | map = United Kingdom West Midlands | maptitle = the [[West Midlands (county)|West Midlands]] | fire = [[West Midlands Fire Service|West Midlands]] | police = [[West Midlands Police|West Midlands]] | footer = [[List of places in West Midlands (county)|West Midlands]] }} | Worcestershire | [[Worcestershire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Worcestershire | maptitle = [[Worcestershire]] | fire = [[Hereford and Worcester Fire and Rescue Service|Hereford and Worcester]] | police = [[West Mercia Police|West Mercia]] | footer = [[List of places in Worcestershire|Worcestershire]] }}}}}} | Yorkshire and the Humber = {{#ifeq: {{{retrieve}}}|region|[[Yorkshire and the Humber]]|{{#switch: {{{level3}}} | East Riding of Yorkshire | [[East Riding of Yorkshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom East Riding of Yorkshire | maptitle = the [[East Riding of Yorkshire]] | ambulance = [[Yorkshire Ambulance Service|Yorkshire]] | fire = [[Humberside Fire and Rescue Service|Humberside]] | police = [[Humberside Police|Humberside]] | footer = [[List of places in Yorkshire|Yorkshire]] }} | Lincolnshire | [[Lincolnshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom Lincolnshire | maptitle = [[Lincolnshire]] | ambulance = [[East Midlands Ambulance Service|East Midlands]] | fire = [[Humberside Fire and Rescue Service|Humberside]] | police = [[Humberside Police|Humberside]] | footer = [[List of places in Lincolnshire|Lincolnshire]] }} | North Yorkshire | [[North Yorkshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom North Yorkshire | maptitle = [[North Yorkshire]] | ambulance = [[Yorkshire Ambulance Service|Yorkshire]] | fire = [[North Yorkshire Fire and Rescue Service|North Yorkshire]] | police = [[North Yorkshire Police|North Yorkshire]] | footer = [[List of places in Yorkshire|Yorkshire]] }} | South Yorkshire | [[South Yorkshire]] = {{#switch: {{{retrieve}}} | ambulance = [[Yorkshire Ambulance Service|Yorkshire]] | fire = [[South Yorkshire Fire and Rescue Service|South Yorkshire]] | police = [[South Yorkshire Police|South Yorkshire]] | footer = [[List of places in Yorkshire|Yorkshire]] | #default = {{#switch: {{{level4}}} | [[City of Sheffield]] | Sheffield | [[Sheffield]] = {{#switch: {{{retrieve}}} | map = United Kingdom Sheffield | maptitle = [[Sheffield]] }} | #default = {{#switch: {{{retrieve}}} | map = United Kingdom South Yorkshire | maptitle = [[South Yorkshire]] }}}}}} | West Yorkshire | [[West Yorkshire]] = {{#switch: {{{retrieve}}} | map = United Kingdom West Yorkshire | maptitle = [[West Yorkshire]] | ambulance = [[Yorkshire Ambulance Service|Yorkshire]] | fire = [[West Yorkshire Fire and Rescue Service|West Yorkshire]] | police = [[West Yorkshire Police|West Yorkshire]] | footer = [[List of places in Yorkshire|Yorkshire]] }}}}}} | #default = {{#ifeq: {{{retrieve}}}|map|United Kingdom}}{{#ifeq: {{{retrieve}}}|maptitle|the [[United Kingdom]]{{Infobox UK place/NoLocalMap}}}} }} | Isle of Man = {{#switch: {{{retrieve}}} | map = Isle of Man | maptitle = the [[Isle of Man]] | ambulance = [[Isle of Man Ambulance Service|Isle of Man]] | fire = [[Isle of Man Fire and Rescue Service|Isle of Man]] | police = [[Isle of Man Constabulary|Isle of Man]] | footer = [[List of places in the Isle of Man|Isle of Man]] }} | Northern Ireland = {{#switch: {{{retrieve}}} | map = {{#switch: {{{level2}}} | County Antrim | [[County Antrim]] = Northern Ireland | County Armagh | [[County Armagh]] = Northern Ireland | County Londonderry | [[County Londonderry]] = Northern Ireland | County Down | [[County Down]] = County Down | County Fermanagh | [[County Fermanagh]] = Northern Ireland | County Tyrone | [[County Tyrone]] = Northern Ireland | #default = Northern Ireland }} | maptitle = {{#switch: {{{level2}}} | County Antrim | [[County Antrim]] = [[Northern Ireland]] | County Armagh | [[County Armagh]] = [[Northern Ireland]] | County Londonderry | [[County Londonderry]] = [[Northern Ireland]] | County Down | [[County Down]] = [[County Down]] | County Fermanagh | [[County Fermanagh]] = [[Northern Ireland]] | County Tyrone | [[County Tyrone]] = [[Northern Ireland]] | #default = [[Northern Ireland]] }} | ambulance = [[Northern Ireland Ambulance Service|Northern Ireland]] | fire = [[Northern Ireland Fire and Rescue Service|Northern Ireland]] | police = [[Police Service of Northern Ireland|Northern Ireland]] | footer = {{#switch: {{{level2}}} | County Antrim | [[County Antrim]] = [[List of places in County Antrim|Antrim]] | County Armagh | [[County Armagh]] = [[List of places in County Armagh|Armagh]] | County Londonderry | [[County Londonderry]] = [[List of places in County Londonderry|County Londonderry]] | County Down | [[County Down]] = [[List of places in County Down|Down]] | County Fermanagh | [[County Fermanagh]] = [[List of places in County Fermanagh|Fermanagh]] | County Tyrone | [[County Tyrone]] = [[List of places in County Tyrone|Tyrone]] }}}} | Scotland = {{#switch: {{{retrieve}}} | ambulance = [[Scottish Ambulance Service|Scottish]] | fire = [[Scottish Fire and Rescue Service|Scottish]] | police = [[Police Scotland|Scotland]] | #default = {{#switch: {{{level2}}} | Clackmannanshire | [[Clackmannanshire]] = {{#switch: {{{retrieve}}} | map = Scotland Clackmannanshire | maptitle = [[Clackmannanshire]] }} | [[Falkirk (council area)|Falkirk]] = {{#switch: {{{retrieve}}} | map = Scotland Falkirk | maptitle = the [[Falkirk (council area)|Falkirk]] council area }} | [[Stirling Council|Stirling]] | [[Stirling Council]] | [[Stirling (district)|Stirling]] | [[Stirling (council area)|Stirling]] = {{#switch: {{{retrieve}}} | map = Scotland Stirling | maptitle = the [[Stirling (council area)|Stirling]] council area }} | Dumfries and Galloway | [[Dumfries and Galloway]] = {{#switch: {{{retrieve}}} | map = Scotland Dumfries and Galloway | maptitle = [[Dumfries and Galloway]] }} | Fife | [[Fife]] = {{#switch: {{{retrieve}}} | map = Scotland Fife | maptitle = [[Fife]] }} | [[Aberdeen]] | [[City of Aberdeen]] | [[Politics of Aberdeen|City of Aberdeen]] | [[Politics of Aberdeen|Aberdeen]] | [[City of Aberdeen|Aberdeen]] = {{#switch: {{{retrieve}}} | map = {{#ifeq:{{PAGENAME}}|Aberdeen|Scotland|Scotland Aberdeen}} | maptitle = {{#ifeq:{{PAGENAME}}|Aberdeen|[[Scotland]]|the [[Aberdeen|City of Aberdeen]]}} | footer = [[Areas of Aberdeen|Aberdeen]] }} | Aberdeenshire | [[Aberdeenshire]] = {{#switch: {{{retrieve}}} | map = Scotland Aberdeenshire | maptitle = [[Aberdeenshire]] }} | Moray | [[Moray]] = {{#switch: {{{retrieve}}} | map = Scotland Moray | maptitle = [[Moray]] }} | [[Highland]] | [[Highland (council area)|Highland]] = {{#switch: {{{retrieve}}} | map = {{#switch: {{{level3}}} |Skye |Isle of Skye |[[Skye|Isle of Skye]] = Scotland Isle of Skye |Caithness | Caithness |[[Caithness]] = Scotland Caithness |Lochaber | Lochaber |[[Lochaber]] = Scotland Lochaber |Nairn |[[Nairn (lieutenancy)|Nairn]] |[[Lord Lieutenant of Nairn|Nairn]] | Nairn |[[Nairn]] = Scotland Nairn |Inverness | Inverness |[[Inverness]] = Scotland Inverness |Badenoch and Strathspey | Badenoch and Strathspey |[[Badenoch and Strathspey]] = Scotland Badenoch and Strathspey |Sutherland | Sutherland |[[Sutherland]] = Scotland Sutherland |Ross and Cromarty | Ross and Cromarty |[[Ross and Cromarty]] = Scotland Ross and Cromarty |#default = Scotland Highland }} | maptitle = {{#switch: {{{level3}}} |Skye |Isle of Skye |[[Skye|Isle of Skye]] = the [[Skye|Isle of Skye]] |Caithness | Caithness |[[Caithness]] = the [[Caithness]] area |Lochaber | Lochaber |[[Lochaber]] = the [[Lochaber]] area |Nairn |[[Nairn (lieutenancy)|Nairn]] |[[Lord Lieutenant of Nairn|Nairn]] | Nairn |[[Nairn]] = the [[Lord Lieutenant of Nairn|Nairn]] area |Inverness | Inverness |[[Inverness]] = the [[Inverness-shire|Inverness]] area |Badenoch and Strathspey | Badenoch and Strathspey |[[Badenoch and Strathspey]] = the [[Badenoch and Strathspey]] area |Sutherland | Sutherland |[[Sutherland]] = the [[Sutherland]] area |Ross and Cromarty | Ross and Cromarty |[[Ross and Cromarty]] = the [[Ross and Cromarty]] area |#default = the [[Highland (council area)|Highland]] council area }} }} | [[Orkney Islands]] | [[Orkney Isles]] | Orkney | [[Orkney]] = {{#switch: {{{retrieve}}} | map = Scotland Orkney | maptitle = [[Orkney]] }} | [[Shetland Islands]] | [[Shetland Isles]] | Shetland | [[Shetland]] = {{#switch: {{{retrieve}}} | map = Scotland Shetland | maptitle = [[Shetland]] }} | [[Na h-Eileanan Siar]] | [[Outer Hebrides]] | [[Outer Hebrides|Na h-Eileanan Siar]] | Western Isles | [[Western Isles]] = {{#switch: {{{retrieve}}} | map = Scotland Outer Hebrides | maptitle = the [[Outer Hebrides]] }} | East Lothian | [[East Lothian]] = {{#switch: {{{retrieve}}} | map = Scotland East Lothian | maptitle = [[East Lothian]] }} | Midlothian | [[Midlothian]] = {{#switch: {{{retrieve}}} | map = Scotland Midlothian | maptitle = [[Midlothian]] }} | Scottish Borders | [[Scottish Borders]] = {{#switch: {{{retrieve}}} | map = Scotland Scottish Borders | maptitle = the [[Scottish Borders]] }} | West Lothian | [[West Lothian]] = {{#switch: {{{retrieve}}} | map = Scotland West Lothian | maptitle = [[West Lothian]] }} | [[Edinburgh]] | [[City of Edinburgh]] | [[Politics of Edinburgh|Edinburgh]] | [[Politics of Edinburgh|City of Edinburgh]] | [[City of Edinburgh|Edinburgh]] = {{#switch: {{{retrieve}}} | map = United Kingdom Edinburgh | maptitle = [[Edinburgh]] | footer = [[Areas of Edinburgh|Edinburgh]] }} | Argyll and Bute | [[Argyll and Bute]] = {{#switch: {{{retrieve}}} | map = Scotland Argyll and Bute | maptitle = [[Argyll and Bute]] }} | East Ayrshire | [[East Ayrshire]] = {{#switch: {{{retrieve}}} | map = Scotland East Ayrshire | maptitle = [[East Ayrshire]] }} | East Dunbartonshire | [[East Dunbartonshire]] = {{#switch: {{{retrieve}}} | map = Scotland East Dunbartonshire | maptitle = [[East Dunbartonshire]] }} | East Renfrewshire | [[East Renfrewshire]] = {{#switch: {{{retrieve}}} | map = Scotland East Renfrewshire | maptitle = [[East Renfrewshire]] }} | Inverclyde | [[Inverclyde]] = {{#switch: {{{retrieve}}} | map = Scotland Inverclyde | maptitle = [[Inverclyde]] }} | North Ayrshire | [[North Ayrshire]] = {{#switch: {{{retrieve}}} | map = Scotland North Ayrshire | maptitle = [[North Ayrshire]] }} | North Lanarkshire | [[North Lanarkshire]] = {{#switch: {{{retrieve}}} | map = Scotland North Lanarkshire | maptitle = [[North Lanarkshire]] }} | Renfrewshire | [[Renfrewshire]] = {{#switch: {{{retrieve}}} | map = Scotland Renfrewshire | maptitle = [[Renfrewshire]] }} | South Ayrshire | [[South Ayrshire]] = {{#switch: {{{retrieve}}} | map = Scotland South Ayrshire | maptitle = [[South Ayrshire]] }} | South Lanarkshire | [[South Lanarkshire]] = {{#switch: {{{retrieve}}} | map = Scotland South Lanarkshire | maptitle = [[South Lanarkshire]] }} | West Dunbartonshire | [[West Dunbartonshire]] = {{#switch: {{{retrieve}}} | map = Scotland West Dunbartonshire | maptitle = [[West Dunbartonshire]] }} | [[Glasgow]] | [[Politics of Glasgow|Glasgow City Council]] | [[Politics of Glasgow|Glasgow City]] | [[Politics of Glasgow|Glasgow]] | [[Glasgow City Council|City of Glasgow]] | [[City of Glasgow]] | [[City of Glasgow|Glasgow]] = {{#switch: {{{retrieve}}} | map = Scotland Glasgow | maptitle = [[Glasgow]] | footer = [[List of places in Glasgow|Glasgow]] }} | Angus | [[Angus]] | [[Angus, Scotland|Angus]] = {{#switch: {{{retrieve}}} | map = Scotland Angus | maptitle = [[Angus, Scotland|Angus]] }} | [[Dundee]] | [[City of Dundee]] | [[City of Dundee|Dundee]] | [[Politics of Dundee|Dundee City]] | [[Politics of Dundee|Dundee]] | Dundee City Council | [[Dundee City Council]] = {{#switch: {{{retrieve}}} | map = {{#ifeq:{{PAGENAME}}|Dundee|Scotland|Scotland Dundee}} | maptitle = {{#ifeq:{{PAGENAME}}|Dundee|[[Scotland]]|the [[City of Dundee]]}} }} | Perth and Kinross | [[Perth and Kinross]] = {{#switch: {{{retrieve}}} | map = Scotland Perth and Kinross | maptitle = [[Perth and Kinross]] }} | #default = {{#ifeq: {{{retrieve}}}|map|UK Scotland}}{{#ifeq: {{{retrieve}}}|maptitle|[[Scotland]]{{Infobox UK place/NoLocalMap}}}} }}}} | Wales = {{#switch: {{{retrieve}}} | ambulance = [[Welsh Ambulance Service|Welsh]] | #default = {{#switch: {{{level2}}} | Carmarthenshire | [[Carmarthenshire]] = {{#switch: {{{retrieve}}} | map = Wales Carmarthenshire | maptitle = [[Carmarthenshire]] | fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]] | police = [[Dyfed–Powys Police|Dyfed-Powys]] | footer = [[List of places in Carmarthenshire|Carmarthenshire]] }} | Ceredigion | [[Ceredigion]] = {{#switch: {{{retrieve}}} | map = Wales Ceredigion | maptitle = [[Ceredigion]] | fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]] | police = [[Dyfed–Powys Police|Dyfed-Powys]] | footer = [[List of places in Ceredigion|Ceredigion]] }} | Pembrokeshire | [[Pembrokeshire]] = {{#switch: {{{retrieve}}} | map = Wales Pembrokeshire | maptitle = [[Pembrokeshire]] | fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]] | police = [[Dyfed–Powys Police|Dyfed-Powys]] | footer = [[List of places in Pembrokeshire|Pembrokeshire]] }} | Powys | [[Powys]] = {{#switch: {{{retrieve}}} | map = Wales Powys | maptitle = [[Powys]] | fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]] | police = [[Dyfed–Powys Police|Dyfed-Powys]] | footer = [[List of places in Powys|Powys]] }} | Neath Port Talbot | [[Neath Port Talbot]] = {{#switch: {{{retrieve}}} | map = Wales Neath Port Talbot | maptitle = [[Neath Port Talbot]] | fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]] | police = [[South Wales Police|South Wales]] | footer = [[List of places in Neath Port Talbot|Neath Port Talbot]] }} | Swansea | [[Swansea]] = {{#switch: {{{retrieve}}} | map = Wales Swansea | maptitle = [[Swansea]] | fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]] | police = [[South Wales Police|South Wales]] | footer = [[List of places in Swansea|Swansea]] }} | [[Anglesey]] | Isle of Anglesey | [[Isle of Anglesey]] = {{#switch: {{{retrieve}}} | map = Wales Anglesey | maptitle = [[Isle of Anglesey|Anglesey]] | fire = [[North Wales Fire and Rescue Service|North Wales]] | police = [[North Wales Police|North Wales]] | footer = [[List of places in Anglesey|Anglesey]] }} | [[Conwy]] | [[Conwy (county borough)|Conwy]] | [[Conwy County Borough|Conwy]] = {{#switch: {{{retrieve}}} | map = Wales Conwy | maptitle = [[Conwy County Borough|Conwy]] | fire = [[North Wales Fire and Rescue Service|North Wales]] | police = [[North Wales Police|North Wales]] | footer = [[List of places in Conwy County Borough|Conwy]] }} | Denbighshire | [[Denbighshire]] = {{#switch: {{{retrieve}}} | map = Wales Denbighshire | maptitle = [[Denbighshire]] | fire = [[North Wales Fire and Rescue Service|North Wales]] | police = [[North Wales Police|North Wales]] | footer = [[List of places in Denbighshire|Denbighshire]] }} | Flintshire | [[Flintshire]] = {{#switch: {{{retrieve}}} | map = Wales Flintshire | maptitle = [[Flintshire]] | fire = [[North Wales Fire and Rescue Service|North Wales]] | police = [[North Wales Police|North Wales]] | footer = [[List of places in Flintshire|Flintshire]] }} | Gwynedd | [[Gwynedd]] = {{#switch: {{{retrieve}}} | map = Wales Gwynedd | maptitle = [[Gwynedd]] | fire = [[North Wales Fire and Rescue Service|North Wales]] | police = [[North Wales Police|North Wales]] | footer = [[List of places in Gwynedd|Gwynedd]] }} | [[Wrexham]] | [[Wrexham (county borough)|Wrexham]] | [[Wrexham County Borough|Wrexham]] = {{#switch: {{{retrieve}}} | map = Wales Wrexham | maptitle = [[Wrexham County Borough|Wrexham]] | fire = [[North Wales Fire and Rescue Service|North Wales]] | police = [[North Wales Police|North Wales]] | footer = [[List of places in Wrexham County Borough|Wrexham]] }} | Blaenau Gwent | [[Blaenau Gwent]] = {{#switch: {{{retrieve}}} | map = Wales Blaenau Gwent | maptitle = [[Blaenau Gwent]] | fire = [[South Wales Fire and Rescue Service|South Wales]] | police = [[Gwent Police|Gwent]] | footer = [[List of places in Blaenau Gwent|Blaenau Gwent]] }} | [[Caerphilly]] | [[Caerphilly (county borough)|Caerphilly]] | [[Caerphilly County Borough|Caerphilly]] = {{#switch: {{{retrieve}}} | map = Wales Caerphilly | maptitle = [[Caerphilly County Borough|Caerphilly]] | fire = [[South Wales Fire and Rescue Service|South Wales]] | police = [[Gwent Police|Gwent]] | footer = [[List of places in Caerphilly County Borough|Caerphilly]] }} | Monmouthshire | [[Monmouthshire]] = {{#switch: {{{retrieve}}} | map = Wales Monmouthshire | maptitle = [[Monmouthshire]] | fire = [[South Wales Fire and Rescue Service|South Wales]] | police = [[Gwent Police|Gwent]] | footer = [[List of places in Monmouthshire|Monmouthshire]] }} | [[Newport, Wales|Newport]] = {{#switch: {{{retrieve}}} | map = Wales Newport | maptitle = [[Newport, Wales|Newport]] | fire = [[South Wales Fire and Rescue Service|South Wales]] | police = [[Gwent Police|Gwent]] | footer = [[List of places in Newport|Newport]] }} | Torfaen | [[Torfaen]] = {{#switch: {{{retrieve}}} | map = Wales Torfaen | maptitle = [[Torfaen]] | fire = [[South Wales Fire and Rescue Service|South Wales]] | police = [[Gwent Police|Gwent]] | footer = [[List of places in Torfaen|Torfaen]] }} | [[Bridgend]] | [[Bridgend (county borough)|Bridgend]] | [[Bridgend County Borough|Bridgend]] = {{#switch: {{{retrieve}}} | map = Wales Bridgend | maptitle = [[Bridgend County Borough|Bridgend]] | fire = [[South Wales Fire and Rescue Service|South Wales]] | police = [[South Wales Police|South Wales]] | footer = [[List of places in Bridgend county borough|Bridgend]] }} | Cardiff | [[Cardiff]] = {{#switch: {{{retrieve}}} | map = Wales Cardiff | maptitle = [[Cardiff]] | fire = [[South Wales Fire and Rescue Service|South Wales]] | police = [[South Wales Police|South Wales]] | footer = [[List of places in Cardiff|Cardiff]] }} | Merthyr Tydfil | [[Merthyr Tydfil]] | [[Merthyr Tydfil County Borough|Merthyr Tydfil]] = {{#switch: {{{retrieve}}} | map = Wales Merthyr Tydfil | maptitle = [[Merthyr Tydfil]] | fire = [[South Wales Fire and Rescue Service|South Wales]] | police = [[South Wales Police|South Wales]] | footer = [[List of places in Merthyr Tydfil|Merthyr Tydfil]] }} | [[Rhondda Cynon Taf]] | Rhondda Cynon Taff | [[Rhondda Cynon Taff]] = {{#switch: {{{retrieve}}} | map = Wales Rhondda Cynon Taf | maptitle = {{{level2}}} | fire = [[South Wales Fire and Rescue Service|South Wales]] | police = [[South Wales Police|South Wales]] | footer = {{#switch: {{{level2}}} | Rhondda Cynon Taf | [[Rhondda Cynon Taf]] = [[List of places in Rhondda Cynon Taf|Rhondda Cynon Taf]] | Rhondda Cynon Taff | [[Rhondda Cynon Taff]] = [[List of places in Rhondda Cynon Taff|Rhondda Cynon Taff]] }}}} | Vale of Glamorgan | [[Vale of Glamorgan]] = {{#switch: {{{retrieve}}} | map = Wales Vale of Glamorgan | maptitle = the [[Vale of Glamorgan]] | fire = [[South Wales Fire and Rescue Service|South Wales]] | police = [[South Wales Police|South Wales]] | footer = [[List of places in Vale of Glamorgan|Vale of Glamorgan]] }} | #default = {{#ifeq: {{{retrieve}}}|map|Wales}}{{#ifeq: {{{retrieve}}}|maptitle|[[Wales]]{{Infobox UK place/NoLocalMap}}}} }}}} | #default = {{#ifeq: {{{retrieve}}}|map|United Kingdom}}{{#ifeq: {{{retrieve}}}|maptitle|the [[United Kingdom]]{{Infobox UK place/NoLocalMap}}}} }}<noinclude>{{doc|content= This is a subtemplate of {{tl|Infobox UK place}} and should not be used directly in articles. [[Category:United Kingdom place infobox templates|Local]] }}</noinclude> 3c657c0031758beaf390f97cbd87f7faa5cb891e Template:Fix-span 10 1659 3057 2023-01-09T21:40:54Z wikipedia>GKFX 0 Use [[Module:DecodeEncode]] rather than manual escaping. wikitext text/x-wiki {{#if:{{{content|}}}|<span class="{{{span-class|cleanup-needed-content}}}" style="padding-left:0.1em; padding-right:0.1em; color:#595959; border:1px solid #DDD;">{{{content|}}}</span>}}{{#switch:{{{subst|¬}}} |¬={{category handler |template=[[Category:Templates needing substitution checking]] |nocat={{{nocat|<noinclude>true</noinclude>}}} }} |SUBST=[[Category:Pages with incorrectly substituted templates]] }}{{Category handler |main={{Fix/category |cat-date={{{cat-date|}}} |cat={{{cat|}}} |cat-date2={{{cat-date2|}}} |cat2={{{cat2|}}} |cat-date3={{{cat-date3|}}} |cat3={{{cat3|}}} |date={{{date|}}} }} |template={{#if:{{{name|}}}|{{#ifeq:{{{name}}}|{{ROOTPAGENAME}}||{{#if:{{{date|}}}||[[Category:Templates including undated clean-up tags]]}}}}}} |subpage=no }}{{#if:{{{special|}}} |{{{special|}}} |<sup class="noprint Inline-Template {{{class|}}}" style="margin-left:0.1em; white-space:nowrap;">&#91;<i>{{#if:{{{pre-text|}}} |{{{pre-text}}}&#32; }}[[{{{link|Wikipedia:Cleanup}}}|<span title="{{#invoke:decodeEncode|encode|s={{{title|{{{link|Wikipedia:Cleanup}}}}}} {{#if:{{{date|}}}|({{{date}}})}}}}">{{{text|}}}</span>]]{{#if:{{{post-text|}}} |&#32;{{{post-text}}} }}</i>&#93;</sup> }}<noinclude> {{Documentation}} </noinclude> 317c176dc9f5cfc1624f68935fdea73d852d3991 Module:Portal/styles.css 828 869 1926 2023-01-11T11:46:43Z wikipedia>Hike395 0 set min height of row to avoid bunching sanitized-css text/css /* {{pp-template}} */ .portalbox { padding: 0; /* Timeless adds padding */ margin: 0.5em 0; display: table; box-sizing: border-box; max-width: 175px; list-style: none; } .portalborder { border: solid #aaa 1px; padding: 0.1em; background: #f9f9f9; } .portalbox-entry { display: table-row; font-size: 85%; line-height: 110%; height: 1.9em; /* sets min height */ font-style: italic; font-weight: bold; } .portalbox-image { display: table-cell; padding: 0.2em; vertical-align: middle; text-align: center; } .portalbox-link { display: table-cell; padding: 0.2em 0.2em 0.2em 0.3em; vertical-align: middle; } @media (min-width: 720px) { .portalleft { clear: left; float: left; margin: 0.5em 1em 0.5em 0 } .portalright { clear: right; float: right; margin: 0.5em 0 0.5em 1em } } 067e70fa96d875eaf837d6db94c6d16281c088b6 Template:Authority control 10 1044 2286 2023-01-12T10:48:45Z wikipedia>MSGJ 0 unknown parameter checking now done by module wikitext text/x-wiki {{#invoke:Authority control|authorityControl}}<noinclude> {{documentation}} </noinclude> e826e6e9609d825b483c2678d80f78742d321d92 Module:Citation/CS1/styles.css 828 832 1846 2023-01-14T14:43:34Z wikipedia>Trappist the monk 0 sync from sandbox; sanitized-css text/css /* Protection icon the following line controls the page-protection icon in the upper right corner it must remain within this comment {{sandbox other||{{pp-template}}}} */ /* Overrides Some wikis do not override user agent default styles for HTML <cite> and <q>, unlike en.wp. On en.wp, keep these the same as [[MediaWiki:Common.css]]. The word-wrap and :target styles were moved here from Common.css. On en.wp, keep these the same as [[Template:Citation/styles.css]]. */ cite.citation { font-style: inherit; /* Remove italics for <cite> */ /* Break long urls, etc., rather than overflowing box */ word-wrap: break-word; } .citation q { quotes: '"' '"' "'" "'"; /* Straight quote marks for <q> */ } /* Highlight linked elements (such as clicked references) in blue */ .citation:target { /* ignore the linter - all browsers of interest implement this */ background-color: rgba(0, 127, 255, 0.133); } /* ID and URL access Both core and Common.css have selector .mw-parser-output a[href$=".pdf"].external for PDF pages. All TemplateStyles pages are hoisted to .mw-parser-output. We need to have specificity equal to a[href$=".pdf"].external for locks to override PDF icon. That's essentially 2 classes and 1 element. the .id-lock-... selectors are for use by non-citation templates like {{Catalog lookup link}} which do not have to handle PDF links */ .id-lock-free a, .citation .cs1-lock-free a { background: url(//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg) right 0.1em center/9px no-repeat; } .id-lock-limited a, .id-lock-registration a, .citation .cs1-lock-limited a, .citation .cs1-lock-registration a { background: url(//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg) right 0.1em center/9px no-repeat; } .id-lock-subscription a, .citation .cs1-lock-subscription a { background: url(//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg) right 0.1em center/9px no-repeat; } /* Wikisource Wikisource icon when |chapter= or |title= is wikilinked to Wikisource as in cite wikisource */ .cs1-ws-icon a { background: url(//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg) right 0.1em center/12px no-repeat; } /* Errors and maintenance */ .cs1-code { /* <code>...</code> style override: mediawiki's css definition is specified here: https://git.wikimedia.org/blob/mediawiki%2Fcore.git/ 69cd73811f7aadd093050dbf20ed70ef0b42a713/skins%2Fcommon%2FcommonElements.css#L199 */ color: inherit; background: inherit; border: none; padding: inherit; } .cs1-hidden-error { display: none; color: #d33; } .cs1-visible-error { color: #d33; } .cs1-maint { display: none; color: #3a3; margin-left: 0.3em; } /* Small text size Set small text size in one place. 0.95 (here) * 0.9 (from references list) is ~0.85, which is the lower bound for size for accessibility. Old styling for this was just 0.85. We could write the rule so that when this template is inside references/reflist, only then does it multiply by 0.95; else multiply by 0.85 */ .cs1-format { font-size: 95%; } /* kerning */ .cs1-kern-left { padding-left: 0.2em; } .cs1-kern-right { padding-right: 0.2em; } /* selflinks – avoid bold font style when cs1|2 template links to the current page */ .citation .mw-selflink { font-weight: inherit; } 7c96feb084b1883e7b6522660da6a14bdcc94752 Template:Large 10 1247 2581 2023-01-16T01:12:34Z w>Jonesey95 0 use this template's own documentation wikitext text/x-wiki <span style="font-size:120%">{{{1}}}</span><noinclude> {{Documentation}} </noinclude> 8ba6ec8c3178e22dc1f05aa239df8a2b052be668 Template:Documentation subpage 10 55 181 2023-01-17T03:06:00Z meta>BrandonWM 0 and this wikitext text/x-wiki <includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}} | <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show | {{Ombox|type=notice|image=[[File:Edit-copy green.svg|40px|link=]] |text='''This is a documentation [[mw:Help:Subpages|subpage]] for {{#if:{{{1|}}} | {{{1}}} | [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]] }}.'''<br/> It contains usage information, categories, and other content that is not part of the original<!-- --> {{#if: {{{text2|}}} | {{{text2|}}} | {{#if: {{{text1|}}} | {{{text1|}}} | {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}} | {{lc:{{SUBJECTSPACE}}}} template page | {{#if: {{SUBJECTSPACE}} | {{lc:{{SUBJECTSPACE}}}} page | article }} }} }} }}. }} <!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}} | <!--Skip--> | <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch: {{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Template }} documentation pages{{#translation:}}]] | [[Category:Documentation subpages without corresponding pages{{#translation:}}]] }}</includeonly> }}<includeonly> }}</includeonly><noinclude>{{Documentation}}<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude> 2fcb7e4e2d233f798b114d37652fc333213f5ea7 Module:Side box/styles.css 828 152 353 2023-01-19T20:36:50Z wikipedia>TheDJ 0 use display flow-root to force a new Block formatting context sanitized-css text/css /* {{pp|small=y}} */ .side-box { margin: 4px 0; box-sizing: border-box; border: 1px solid #aaa; font-size: 88%; line-height: 1.25em; background-color: #f9f9f9; display: flow-root; } .side-box-abovebelow, .side-box-text { padding: 0.25em 0.9em; } .side-box-image { /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .side-box-imageright { /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* roughly the skin's sidebar + size of side box */ @media (min-width: 500px) { .side-box-flex { display: flex; align-items: center; } .side-box-text { flex: 1; } } @media (min-width: 720px) { .side-box { width: 238px; } .side-box-right { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin-left: 1em; } /* derives from mbox classes, which do not float left in mbox-small-left * so far as I can tell, that was a deliberate decision, since only .ambox * supports mbox-left */ .side-box-left { /* @noflip */ margin-right: 1em; } } 5be55dbc33007e62deac23036c134ed064dbe603 Template:Caution 10 851 1884 2023-01-20T10:02:42Z wikipedia>Matma Rex 0 Remove unnecessary inline styles when |style= parameter is used – mbox already has styles setting it to 80% width wikitext text/x-wiki {{Mbox | name = Caution | demospace = {{{demospace|}}} | style = {{{style|}}} | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | image = {{#if:{{{image|}}} |[[File:{{{image}}}|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]]}} | small = {{{small|}}} | smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|30px|Caution|link={{{imagelink|}}}]]}} | imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }} | textstyle = {{{textstyle|{{{align|text-align: {{#if:{{{center|}}}|center|left}};}}}}}} | text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="text-align:{{#if:{{{center|}}}|center|left}};">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!-- -->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}} }}<noinclude>{{Documentation}}</noinclude> 0bd33bad5503b4d0395069f422d3a4af8f5253b9 Template:Infobox command structure 10 1515 2850 2023-01-22T22:30:11Z w>Zackmann08 0 Adding unknown parameter tracking through [[:Category:Pages using infobox command structure with unknown parameters]] using [[Module:check for unknown parameters]] wikitext text/x-wiki <includeonly>{{military navigation |raw_name = {{{raw_name|}}} |title = {{{name|{{PAGENAMEBASE}}}}} {{#if:{{{date|}}}|({{{date}}})}} |bodyclass= {{{bodyclass|}}} |group1 = {{#if:{{{parent|}}}|Parent unit}} |list1 = {{#if:{{{parent|}}}|{{{parent}}}}} |group2 = {{#if:{{{subordinate|}}}|Components}} |list2 = {{#if:{{{subordinate|}}}|{{{subordinate}}}}} }}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox command structure with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox command structure]] with unknown parameter "_VALUE_"|ignoreblank=y| bodyclass | date | name | parent | raw_name | subordinate }}<noinclude> {{documentation}} </noinclude> 0222856a8bdc4a20c67c6fd07070c8fda0e927a2 Module:Userbox 828 142 2459 333 2023-01-23T19:38:09Z w>GKFX 0 Remove check for alt text in colour contrast checker. Categorizes too many userboxes which have no actual issue. Scribunto text/plain -- This module implements {{userbox}}. local categoryHandler = require('Module:Category handler').main local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function checkNum(val, default) -- Checks whether a value is a number greater than or equal to zero. If so, -- returns it as a number. If not, returns a default value. val = tonumber(val) if val and val >= 0 then return val else return default end end local function addSuffix(num, suffix) -- Turns a number into a string and adds a suffix. if num then return tostring(num) .. suffix else return nil end end local function checkNumAndAddSuffix(num, default, suffix) -- Checks a value with checkNum and adds a suffix. num = checkNum(num, default) return addSuffix(num, suffix) end local function makeCat(cat, sort) -- Makes a category link. if sort then return mw.ustring.format('[[Category:%s|%s]]', cat, sort) else return mw.ustring.format('[[Category:%s]]', cat) end end -------------------------------------------------------------------------------- -- Argument processing -------------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local origArgs = require('Module:Arguments').getArgs(frame) local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.main(funcName, args) end end p.userbox = makeInvokeFunc('_userbox') p['userbox-2'] = makeInvokeFunc('_userbox-2') p['userbox-r'] = makeInvokeFunc('_userbox-r') -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.main(funcName, args) local userboxData = p[funcName](args) local userbox = p.render(userboxData) local cats = p.categories(args) return userbox .. (cats or '') end function p._userbox(args) -- Does argument processing for {{userbox}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] data.infoClass = args['info-class'] -- Get id values. local id = args.logo or args[3] or args.id data.id = id data.showId = id and true or false data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.idTextAlign = args['id-a'] or 'center' data.idFontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.idOtherParams = args['logo-other-param'] or args['id-op'] data.idClass = args['id-class'] return data end p['_userbox-2'] = function (args) -- Does argument processing for {{userbox-2}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-s'] or args[9], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-c'] or args[6] or args['id1-c'] or args[1] or '#999999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-c'] or args[2] or '#eeeeee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') data.infoColor = args['info-fc'] or args[8] or 'black' data.infoPadding = args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-lh'] or '1.25em' data.infoOtherParams = args['info-op'] -- Get id values. data.showId = true data.id = args.logo or args[3] or args.id1 or 'id1' data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') data.idBackgroundColor = args['id1-c'] or args[1] or '#dddddd' data.idTextAlign = 'center' data.idFontSize = checkNum(args['id1-s'], 14) data.idLineHeight = args['id1-lh'] or '1.25em' data.idColor = args['id1-fc'] or data.infoColor data.idPadding = args['id1-p'] or '0 1px 0 0' data.idOtherParams = args['id1-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[5] or args.id2 or 'id2' data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') data.id2Height = data.idHeight data.id2BackgroundColor = args['id2-c'] or args[7] or args[1] or '#dddddd' data.id2TextAlign = 'center' data.id2FontSize = checkNum(args['id2-s'], 14) data.id2LineHeight = args['id2-lh'] or '1.25em' data.id2Color = args['id2-fc'] or data.infoColor data.id2Padding = args['id2-p'] or '0 0 0 1px' data.id2OtherParams = args['id2-op'] return data end p['_userbox-r'] = function (args) -- Does argument processing for {{userbox-r}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get id values. data.showId = false -- We only show id2 in userbox-r. -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-align'] or args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[3] or args.id or 'id' data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.id2TextAlign = args['id-a'] or 'center' data.id2FontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.id2OtherParams = args['logo-other-param'] or args['id-op'] return data end function p.render(data) -- Renders the userbox html using the content of the data table. -- Render the div tag html. local root = mw.html.create('div') root :css('float', data.float) :css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or '')) :css('margin', '1px') :css('width', data.width) :addClass('wikipediauserbox') :addClass(data.bodyClass) -- Render the table tag html. local tableroot = root:tag('table') tableroot :attr('role', 'presentation') :css('border-collapse', 'collapse') :css('width', data.width) :css('margin-bottom', '0') :css('margin-top', '0') :css('background', data.backgroundColor) -- Render the id html. local tablerow = tableroot:tag('tr') if data.showId then tablerow:tag('td') :css('border', '0') :css('width', data.idWidth) :css('height', data.idHeight) :css('background', data.idBackgroundColor) :css('text-align', data.idTextAlign) :css('font-size', data.idFontSize .. 'pt') :css('font-weight', 'bold') :css('color', data.idColor) :css('padding', data.idPadding) :css('line-height', data.idLineHeight) :css('vertical-align', 'middle') :cssText(data.idOtherParams) :addClass(data.idClass) :wikitext(data.id) end -- Render the info html. tablerow:tag('td') :css('border', '0') :css('text-align', data.infoTextAlign) :css('font-size', data.infoFontSize) :css('padding', data.infoPadding) :css('height', data.infoHeight) :css('line-height', data.infoLineHeight) :css('color', data.infoColor) :css('vertical-align', 'middle') :cssText(data.infoOtherParams) :addClass(data.infoClass) :wikitext(data.info) -- Render the second id html. if data.showId2 then tablerow:tag('td') :css('border', '0') :css('width', data.id2Width) :css('height', data.id2Height) :css('background', data.id2BackgroundColor) :css('text-align', data.id2TextAlign) :css('font-size', data.id2FontSize .. 'pt') :css('font-weight', 'bold') :css('color', data.id2Color) :css('padding', data.id2Padding) :css('line-height', data.id2LineHeight) :css('vertical-align', 'middle') :cssText(data.id2OtherParams) :wikitext(data.id2) end local title = mw.title.getCurrentTitle() if (title.namespace == 2) and not title.text:match("/") then return tostring(root) -- regular user page elseif title.namespace == 14 then return tostring(root) -- category elseif title.isTalkPage then return tostring(root) -- talk page end local legible = true local contrast = require('Module:Color contrast')._ratio local function has_text(wikitext) wikitext = wikitext:gsub("]]", "|]]") wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", "") wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", "") wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", "") return mw.text.trim(wikitext) ~= "" end if contrast { data.infoColor, data.backgroundColor, error = 0 } < 4.5 then legible = false end -- For bold text >= 14pt, requirement is only 3. local idContrastThreshold = 4.5 local id2ContrastThreshold = 4.5 if (data.idFontSize or 0) >= 14 then idContrastThreshold = 3 end if (data.id2FontSize or 0) >= 14 then id2ContrastThreshold = 3 end if data.showId and contrast { data.idColor, data.idBackgroundColor, error = 0 } < idContrastThreshold then if has_text(data.id or "") then legible = false end end if data.showId2 and contrast { data.id2Color, data.id2BackgroundColor, error = 0 } < id2ContrastThreshold then if has_text(data.id2 or "") then legible = false end end if not legible then root:wikitext('[[Category:Userboxes with insufficient color contrast]]') end return tostring(root) end function p.categories(args, page) -- Gets categories from [[Module:Category handler]]. -- The page parameter makes the function act as though the module was being called from that page. -- It is included for testing purposes. local cats = {} cats[#cats + 1] = args.usercategory cats[#cats + 1] = args.usercategory2 cats[#cats + 1] = args.usercategory3 cats[#cats + 1] = args.usercategory4 cats[#cats + 1] = args.usercategory5 -- Get the title object local title if page then title = mw.title.new(page) else title = mw.title.getCurrentTitle() end -- Build category handler arguments. local chargs = {} chargs.page = page chargs.nocat = args.nocat chargs.main = '[[Category:Pages with templates in the wrong namespace]]' if args.notcatsubpages then chargs.subpage = 'no' end -- User namespace. local user = '' for i, cat in ipairs(cats) do user = user .. makeCat(cat) end chargs.user = user -- Template namespace. local basepage = title.baseText local template = '' for i, cat in ipairs(cats) do template = template .. makeCat(cat, ' ' .. basepage) end chargs.template = template return categoryHandler(chargs) end return p 3afddd38f65cb302185911fa9957526a85855673 Template:Infobox government agency 10 1159 2485 2023-01-25T06:49:58Z w>Imzadi1979 0 shouldn't be embedding another infobox in a header wikitext text/x-wiki {{ infobox | child = {{{child|}}} | subbox = {{{subbox|}}} | italic title = {{{italic title|no}}} | titlestyle = font-size: 125%; | title = {{{name|{{{agency_name|{{PAGENAMEBASE}}}}}}}} | subheader = {{Br separated entries | 1 = {{{native_name|{{{nativename|}}}}}} | 2 = {{{native_name_a|{{{nativename_a|}}}}}} | 3 = {{{native_name_r|{{{nativename_r|}}}}}} }} | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{seal|}}}|size={{{seal_size|{{{seal_width|}}}}}}| alt={{{seal_alt|}}}|sizedefault=frameless}} | caption = {{{seal_caption|}}} | image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|size={{{logo_size|{{{logo_width|}}}}}}| alt={{{logo_alt|}}}|sizedefault=frameless}} | caption2 = {{{logo_caption|}}} | headerstyle = background-color: #efefef | data1 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|{{{picture|}}}}}}|size={{{image_size|{{{picture_width|}}}}}}|alt={{{image_alt|}}}|sizedefault=frameless}}{{#if: {{{image_caption|{{{picture_caption|}}}}}} | {{break}}{{{image_caption|{{{picture_caption}}}}}} }} | header2 = {{#if: {{{formed|}}}{{{preceding1|}}}{{{dissolved|}}}{{{superseding|}}}{{{jurisdiction|}}}{{{headquarters|}}}{{{motto|}}}{{{employees|}}}{{{budget|}}}{{{minister1_name|}}}{{{chief1_name|}}}{{{parent_agency|}}}{{{child1_agency|}}}{{{keydocument1|}}}{{{website|}}}{{{footnotes|}}}{{{map|}}}{{{map_caption|}}} | {{ucfirst: {{#if:{{{type|}}}|{{{type}}}|Agency }} }} overview }} | label3 = Formed | data3 = {{{formed|}}} | label4 = {{#if:{{{preceding1|}}} | {{#if:{{{preceding2|}}}|Preceding agencies|Preceding {{{type|agency}}} }} }} | data4 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em; | 1 = {{{preceding1|}}} | 2 = {{{preceding2|}}} | 3 = {{{preceding3|}}} | 4 = {{{preceding4|}}} | 5 = {{{preceding5|}}} | 6 = {{{preceding6|}}} }} | label5 = Dissolved | data5 = {{{dissolved|}}} | label6 = {{#if:{{{superseding|{{{superseding1|}}}}}} | {{#if:{{{superseding2|}}}|Superseding agencies|Superseding {{{service|agency}}} }} }} | data6 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em; | 1 = {{{superseding|{{{superseding1|}}}}}} | 2 = {{{superseding2|}}} | 3 = {{{superseding3|}}} | 4 = {{{superseding4|}}} | 5 = {{{superseding5|}}} | 6 = {{{superseding6|}}} }} | label7 = Type | data7 = {{{agency_type|}}} | class7 = category | label8 = Jurisdiction | data8 = {{{jurisdiction|}}} | label9 = Status | data9 = {{{status|}}} | label10 = Headquarters | data10 = {{{headquarters|}}}{{#if: {{{coordinates|}}}|{{break}}{{{coordinates|}}} }} | label11 = Motto | data11 = {{{motto|}}} | label12 = Employees | data12 = {{{employees|}}} | label13 = Annual budget | data13 = {{{budget|}}} | label14 = {{#if:{{{minister2_name|}}}|{{#if:{{{minister_type|}}}|{{{minister_type}}}|Ministers}} responsible|{{#if:{{{minister_type|}}}|{{{minister_type}}}|Minister}} responsible}} | data14 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em; | 1 = {{#if:{{{minister1_name|}}}|{{{minister1_name|}}}{{#if:{{{minister1_pfo|}}}|, {{{minister1_pfo}}}}}|{{#if:{{{minister1_pfo|}}}|{{{minister1_pfo}}}}}}} | 2 = {{#if:{{{minister2_name|}}}|{{{minister2_name|}}}{{#if:{{{minister2_pfo|}}}|, {{{minister2_pfo}}}}}|{{#if:{{{minister2_pfo|}}}|{{{minister2_pfo}}}}}}} | 3 = {{#if:{{{minister3_name|}}}|{{{minister3_name|}}}{{#if:{{{minister3_pfo|}}}|, {{{minister3_pfo}}}}}|{{#if:{{{minister3_pfo|}}}|{{{minister3_pfo}}}}}}} | 4 = {{#if:{{{minister4_name|}}}|{{{minister4_name|}}}{{#if:{{{minister4_pfo|}}}|, {{{minister4_pfo}}}}}|{{#if:{{{minister4_pfo|}}}|{{{minister4_pfo}}}}}}} | 5 = {{#if:{{{minister5_name|}}}|{{{minister5_name|}}}{{#if:{{{minister5_pfo|}}}|, {{{minister5_pfo}}}}}|{{#if:{{{minister5_pfo|}}}|{{{minister5_pfo}}}}}}} | 6 = {{#if:{{{minister6_name|}}}|{{{minister6_name|}}}{{#if:{{{minister6_pfo|}}}|, {{{minister6_pfo}}}}}|{{#if:{{{minister6_pfo|}}}|{{{minister6_pfo}}}}}}} | 7 = {{#if:{{{minister7_name|}}}|{{{minister7_name|}}}{{#if:{{{minister7_pfo|}}}|, {{{minister7_pfo}}}}}|{{#if:{{{minister7_pfo|}}}|{{{minister7_pfo}}}}}}} | 8 = {{#if:{{{minister8_name|}}}|{{{minister8_name|}}}{{#if:{{{minister8_pfo|}}}|, {{{minister8_pfo}}}}}|{{#if:{{{minister8_pfo|}}}|{{{minister8_pfo}}}}}}} }} | label15 = {{#if:{{{deputyminister2_name|}}}|{{#if:{{{deputyminister_type|}}}|{{{deputyminister_type}}}|Deputy Ministers}} responsible|{{#if:{{{deputyminister_type|}}}|{{{deputyminister_type}}}|Deputy Minister}} responsible}} | data15 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em; | 1 = {{#if:{{{deputyminister1_name|}}}|{{{deputyminister1_name|}}}{{#if:{{{deputyminister1_pfo|}}}|, {{{deputyminister1_pfo}}}}}|{{#if:{{{deputyminister1_pfo|}}}|{{{deputyminister1_pfo}}}}}}} | 2 = {{#if:{{{deputyminister2_name|}}}|{{{deputyminister2_name|}}}{{#if:{{{deputyminister2_pfo|}}}|, {{{deputyminister2_pfo}}}}}|{{#if:{{{deputyminister2_pfo|}}}|{{{deputyminister2_pfo}}}}}}} | 3 = {{#if:{{{deputyminister3_name|}}}|{{{deputyminister3_name|}}}{{#if:{{{deputyminister3_pfo|}}}|, {{{deputyminister3_pfo}}}}}|{{#if:{{{deputyminister3_pfo|}}}|{{{deputyminister3_pfo}}}}}}} | 4 = {{#if:{{{deputyminister4_name|}}}|{{{deputyminister4_name|}}}{{#if:{{{deputyminister4_pfo|}}}|, {{{deputyminister4_pfo}}}}}|{{#if:{{{deputyminister4_pfo|}}}|{{{deputyminister4_pfo}}}}}}} | 5 = {{#if:{{{deputyminister5_name|}}}|{{{deputyminister5_name|}}}{{#if:{{{deputyminister5_pfo|}}}|, {{{deputyminister5_pfo}}}}}|{{#if:{{{deputyminister5_pfo|}}}|{{{deputyminister5_pfo}}}}}}} | 6 = {{#if:{{{deputyminister6_name|}}}|{{{deputyminister6_name|}}}{{#if:{{{deputyminister6_pfo|}}}|, {{{deputyminister6_pfo}}}}}|{{#if:{{{deputyminister6_pfo|}}}|{{{deputyminister6_pfo}}}}}}} | 7 = {{#if:{{{deputyminister7_name|}}}|{{{deputyminister7_name|}}}{{#if:{{{deputyminister7_pfo|}}}|, {{{deputyminister7_pfo}}}}}|{{#if:{{{deputyminister7_pfo|}}}|{{{deputyminister7_pfo}}}}}}} | 8 = {{#if:{{{deputyminister8_name|}}}|{{{deputyminister8_name|}}}{{#if:{{{deputyminister8_pfo|}}}|, {{{deputyminister8_pfo}}}}}|{{#if:{{{deputyminister8_pfo|}}}|{{{deputyminister8_pfo}}}}}}} }} | label16 = {{ucfirst: {{#if:{{{type|}}}|{{{type}}}|Agency}}}} executive{{#if:{{{chief2_name|}}}|s}} | data16 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em; | 1 = {{#if:{{{chief1_name|}}}|{{{chief1_name|}}}{{#if:{{{chief1_position|}}}|, {{{chief1_position}}}}}|{{#if:{{{chief1_position|}}}|{{{chief1_position}}}}}}} | 2 = {{#if:{{{chief2_name|}}}|{{{chief2_name|}}}{{#if:{{{chief2_position|}}}|, {{{chief2_position}}}}}|{{#if:{{{chief2_position|}}}|{{{chief2_position}}}}}}} | 3 = {{#if:{{{chief3_name|}}}|{{{chief3_name|}}}{{#if:{{{chief3_position|}}}|, {{{chief3_position}}}}}|{{#if:{{{chief3_position|}}}|{{{chief3_position}}}}}}} | 4 = {{#if:{{{chief4_name|}}}|{{{chief4_name|}}}{{#if:{{{chief4_position|}}}|, {{{chief4_position}}}}}|{{#if:{{{chief4_position|}}}|{{{chief4_position}}}}}}} | 5 = {{#if:{{{chief5_name|}}}|{{{chief5_name|}}}{{#if:{{{chief5_position|}}}|, {{{chief5_position}}}}}|{{#if:{{{chief5_position|}}}|{{{chief5_position}}}}}}} | 6 = {{#if:{{{chief6_name|}}}|{{{chief6_name|}}}{{#if:{{{chief6_position|}}}|, {{{chief6_position}}}}}|{{#if:{{{chief6_position|}}}|{{{chief6_position}}}}}}} | 7 = {{#if:{{{chief7_name|}}}|{{{chief7_name|}}}{{#if:{{{chief7_position|}}}|, {{{chief7_position}}}}}|{{#if:{{{chief7_position|}}}|{{{chief7_position}}}}}}} | 8 = {{#if:{{{chief8_name|}}}|{{{chief8_name|}}}{{#if:{{{chief8_position|}}}|, {{{chief8_position}}}}}|{{#if:{{{chief8_position|}}}|{{{chief8_position}}}}}}} | 9 = {{#if:{{{chief9_name|}}}|{{{chief9_name|}}}{{#if:{{{chief9_position|}}}|, {{{chief9_position}}}}}|{{#if:{{{chief9_position|}}}|{{{chief9_position}}}}}}} }} | label17 = Parent department | data17 = {{{parent_department|}}} | label18 = Parent {{#if:{{{parent_agency_type|}}}|{{{parent_agency_type}}}|{{#if:{{{type|}}}|{{{type}}}|agency}}}} | data18 = {{{parent_agency|}}} | label19 = {{#if:{{{child2_agency|}}}|Child agencies|Child {{#if:{{{type|}}}|{{{type}}}|agency}}}} | data19 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em; | 1 = {{{child1_agency|}}} | 2 = {{{child2_agency|}}} | 3 = {{{child3_agency|}}} | 4 = {{{child4_agency|}}} | 5 = {{{child5_agency|}}} | 6 = {{{child6_agency|}}} | 7 = {{{child7_agency|}}} | 8 = {{{child8_agency|}}} | 9 = {{{child9_agency|}}} | 10 = {{{child10_agency|}}} | 11 = {{{child11_agency|}}} | 12 = {{{child12_agency|}}} | 13 = {{{child13_agency|}}} | 14 = {{{child14_agency|}}} | 15 = {{{child15_agency|}}} | 16 = {{{child16_agency|}}} | 17 = {{{child17_agency|}}} | 18 = {{{child18_agency|}}} | 19 = {{{child19_agency|}}} | 20 = {{{child20_agency|}}} | 21 = {{{child21_agency|}}} | 22 = {{{child22_agency|}}} | 23 = {{{child23_agency|}}} | 24 = {{{child24_agency|}}} | 25 = {{{child25_agency|}}} }} | label20 = {{#if:{{{keydocument2|}}}|Key documents|Key document}} | data20 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em; | 1 = {{{keydocument1|}}} | 2 = {{{keydocument2|}}} | 3 = {{{keydocument3|}}} | 4 = {{{keydocument4|}}} | 5 = {{{keydocument5|}}} | 6 = {{{keydocument6|}}} }} | label21 = Website | data21 = {{{website|}}} | label22 = Agency ID | data22 = {{{agency_id|}}} | header23 = {{#if:{{{map|}}}|{{Infobox|child=yes|decat=yes | title = Map | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{map|}}}|alt={{{map_alt}}}|size={{{map_size|{{{map_width|}}}}}}|sizedefault=frameless}} | caption = {{{map_caption|}}} }}}} | image3 = {{#if:{{{pushpin_map|{{{map_type|}}}}}}|{{Location map|{{{pushpin_map|{{{map_type|}}}}}} |alt = {{{pushpin_map_alt|{{{map_alt|}}}}}} |coordinates = {{{coordinates|}}} |float = center |mark = {{{map_dot_mark|Red pog.svg}}} |marksize= 7 |label = {{{pushpin_label|{{{map dot label|{{{map_dot_label|}}}}}}}}} |relief = {{{pushpin_relief|{{{relief|}}}}}} |border = none |caption = <!--leave blank--> |width = {{{pushpin_mapsize|{{{map_size|}}}}}} }} |<!-- else if map_type is blank -->{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_size|}}}|sizedefault=frameless|alt={{{map_alt|}}}}}<!-- end if map_type -->}} | caption3 = {{#if:{{{pushpin_map|{{{map_type|}}}}}} |{{{pushpin_map_caption|{{{map_caption|Location within {{#invoke:Location map|data|{{{pushpin_map|{{{map_type}}}}}}|name}}}}}}}} |{{#if:{{{image_map|}}} |{{{map_caption|}}} }}}} | header24 = {{#if:{{{footnotes|}}}|Footnotes}} | data25 = {{{footnotes|}}} | data26 = {{{embed|}}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox government agency with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox government agency]] with unknown parameter "_VALUE_"|ignoreblank=y| agency_id | agency_name | agency_type | budget | chief1_name | chief1_position | chief2_name | chief2_position | chief3_name | chief3_position | chief4_name | chief4_position | chief5_name | chief5_position | chief6_name | chief6_position | chief7_name | chief7_position | chief8_name | chief8_position | chief9_name | chief9_position | child | child1_agency | child10_agency | child11_agency | child12_agency | child13_agency | child14_agency | child15_agency | child16_agency | child17_agency | child18_agency | child19_agency | child2_agency | child20_agency | child21_agency | child22_agency | child23_agency | child24_agency | child25_agency | child3_agency | child4_agency | child5_agency | child6_agency | child7_agency | child8_agency | child9_agency | coordinates | deputyminister_type | deputyminister1_name | deputyminister1_pfo | deputyminister2_name | deputyminister2_pfo | deputyminister3_name | deputyminister3_pfo | deputyminister4_name | deputyminister4_pfo | deputyminister5_name | deputyminister5_pfo | deputyminister6_name | deputyminister6_pfo | deputyminister7_name | deputyminister7_pfo | deputyminister8_name | deputyminister8_pfo | dissolved | embed | employees | footnotes | formed | headquarters | image | image_caption |image_alt | image_map | image_size | italic title | jurisdiction | keydocument1 | keydocument2 | keydocument3 | keydocument4 | keydocument5 | keydocument6 | logo | logo_caption |logo_alt| logo_size | logo_width | map | map_alt | map_caption | map_dot_label | map_dot_mark | map_size | map_type | map_width | minister_type | minister1_name | minister1_pfo | minister2_name | minister2_pfo | minister3_name | minister3_pfo | minister4_name | minister4_pfo | minister5_name | minister5_pfo | minister6_name | minister6_pfo | minister7_name | minister7_pfo | minister8_name | minister8_pfo | motto | name | native_name | native_name_a | native_name_r | nativename | nativename_a | nativename_r | parent_agency | parent_agency_type | parent_department | picture | picture_caption | picture_width | preceding1 | preceding2 | preceding3 | preceding4 | preceding5 | preceding6 | region_code | seal |seal_alt | seal_caption | seal_size | seal_width | service | status | subbox | superseding | superseding1 | superseding2 | superseding3 | superseding4 | superseding5 | superseding6 | type | website }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> b398f4dc0f62154e2a0c836efe48b46083aca718 Template:Notice 10 190 434 2023-01-25T22:32:14Z wikipedia>Izno 0 per tper wikitext text/x-wiki {{Mbox | name = Notice | demospace = {{{demospace|}}} | style = {{#if:{{{style|}}} |{{{style}}} }} | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = notice | image = {{#if:{{{image|}}} |[[File:{{{image}}}|40px|Notice|alt={{{imagealt|}}}]]}} | small = {{{small|}}} | smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|30px|Notice|alt={{{imagealt|}}}]]}} | imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }} | textstyle = {{{textstyle|text-align: {{#if:{{{center|}}}|center|{{{align|left}}}}};}}} | text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="{{{headstyle|text-align: {{#if:{{{center|}}}|center|left}};}}}">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!-- -->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}} }}<noinclude> {{Documentation}} </noinclude> 2cbdbb721ca517005f6827650eef5b0f17537a43 Template:Authority control (arts) 10 1061 2320 2023-01-26T12:56:02Z wikipedia>MSGJ 0 module will now recognise country parameter as an alias for show wikitext text/x-wiki {{#invoke:Authority control | authorityControl | show=arts }}<noinclude> {{documentation}} </noinclude> 9b8aaaf1725393b12ec20ed303eb6ff24f720e7f Template:Flagicon image/doc 10 1712 3229 2023-01-26T17:37:36Z wikipedia>CommonsDelinker 0 Replacing ICS_Alpha.svg with [[File:ICS_Alfa.svg]] (by [[commons:User:CommonsDelinker|CommonsDelinker]] because: [[:c:COM:FR|File renamed]]: misspelled). wikitext text/x-wiki {{Documentation subpage}} Produces an icon for the supplied image parameter, of the same size, CSS class, etc. as images produced by [[Template:Flagicon]]. This template can be used for arbitrary images that are not included in any [[:Category:Country data templates|country data template]]. Caution is advised if this is used in infoboxes, as flags are [[MOS:INFOBOXFLAG|generally discouraged there]], and additional concerns (such as not using flags purely for decoration, and not using them in an anachronistic manner) may apply. Further guidance is given at [[MOS:FLAGS]]. ''Please do not use this template to render [[Wikipedia:Non-free content|non-free images]], which would also not be acceptable within a country data template.'' ;Usage : <code><nowiki>{{flagicon image|image name|size=optional|border=optional|link=optional}}</nowiki></code> ;Examples : <code><nowiki>{{flagicon image|Red flag.svg}}</nowiki></code> → {{flagicon image|Red flag.svg}} : <code><nowiki>{{flagicon image|Red flag.svg|size=30x20px|link=Japan}}</nowiki></code> → {{flagicon image|Red flag.svg|size=30x20px|link=Japan}} : <code><nowiki>{{flagicon image|ICS Alfa.svg|border=}}</nowiki></code> → {{flagicon image|ICS Alfa.svg|border=}} == See also == {{tl|ListFlag}} <includeonly>{{Sandbox other|| [[Category:Flag template system| ]] }}</includeonly> 3dd2992a52b7ced3a23804de680b1806d5957e78 Module:If empty 828 426 2146 926 2023-01-26T18:33:28Z wikipedia>MSGJ 0 lastk is not needed Scribunto text/plain local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) for k,v in ipairs(args) do if v ~= '' then return v end end end return p 4790391408957dea3ff9f453834c05f6b379a45c Clyde Barrow 0 1081 2360 2023-02-01T14:42:53Z wikipedia>Qwerfjkl 0 Converting {{[[Template:Wikidata redirect|Wikidata redirect]]}} to {{[[Template:R with Wikidata item|R with Wikidata item]]}}. {{[[Template:Wikidata redirect|Wikidata redirect]]}} should only be used on [[WP:soft redirects|soft redirects]]. wikitext text/x-wiki #REDIRECT [[Bonnie and Clyde#Clyde Barrow]] {{Redirect category shell|1= {{R with Wikidata item|Q3320282}} {{R to section}} {{R to joint biography}} }} {{DEFAULTSORT:Barrow, Clyde}} {{Authority control}} [[Category:1909 births]] [[Category:Barrow Gang]] [[Category:People from Ellis County, Texas]] [[Category:Male murderers]] [[Category:American male criminals]] [[Category:People from Dallas]] 261d36161d41327ced8a82681d5d9a5e12814e83 Template:Dated maintenance category (articles) 10 867 1922 2023-02-03T03:07:34Z wikipedia>UtherSRG 0 UtherSRG moved page [[Template:DMCA]] to [[Template:Dated maintenance category (articles)]]: [[Special:Permalink/1137158761|Requested]] by Robertsky at [[WP:RM/TR]]: Per RM discussion. See [[Template_talk:DMCA#Requested_move_26_January_2023]]. Template protected at template editor/admin level wikitext text/x-wiki {{Dated maintenance category |onlyarticles=yes |1={{{1|}}} |2={{{2|}}} |3={{{3|}}} |4={{{4|}}} |5={{{5|}}} }}<noinclude> {{documentation|Template:Dated maintenance category/doc}} </noinclude> 6bbc57c75cc28708a0e71dd658224d5945d80d68 Template:DMCA 10 857 1898 2023-02-03T21:12:07Z wikipedia>Paine Ellsworth 0 add [[WP:RCAT|rcat template]] wikitext text/x-wiki #REDIRECT [[Template:Dated maintenance category (articles)]] {{Redirect category shell| {{R from move}} {{R from modification}} {{R from template shortcut}} }} 711d3f1c53fa704297f675a8dcf1a56719c5b654 Template:Distinguish 10 27 49 2023-02-04T21:16:13Z wikipedia>Hog Farm 0 [[Wikipedia:Templates for discussion/Log/2023 February 4#Template:Distinguish]] closed as keep ([[WP:XFDC#4.0.13|XFDcloser]]) wikitext text/x-wiki {{#invoke:Distinguish|distinguish}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. --> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! --> </noinclude> f949a4cbfd6eb0ab77b832e69059a40a964b1fd8 Bonnie Parker 0 1080 2358 2023-02-07T16:22:57Z wikipedia>Lightiggy 0 wikitext text/x-wiki #REDIRECT [[Bonnie and Clyde#Bonnie Parker]] {{Redirect category shell|1= {{R with Wikidata item|Q2319886}} {{R to section}} {{R to joint biography}} }} {{Authority control}} {{DEFAULTSORT:Parker, Bonnie}} [[Category:1910 births]] [[Category:1934 deaths]] [[Category:American female murderers]] [[Category:People from Runnels County, Texas]] [[Category:Barrow Gang]] [[Category:People from Dallas]] e7a0b6232a498c351b7fb36411246efb85cbee9e Template:Greece Old Style dating 10 1010 2216 2023-02-10T19:20:07Z wikipedia>Cplakidas 0 Cplakidas moved page [[Template:Greece Old Style dating]] to [[Template:Greece Old Style dates]] wikitext text/x-wiki #REDIRECT [[Template:Greece Old Style dates]] {{Redirect category shell| {{R from move}} }} 072c262c3e4b7221bec65f6293cf294008cd349f Template:Greece Old Style dates 10 1019 2234 2023-02-10T19:20:07Z wikipedia>Cplakidas 0 Cplakidas moved page [[Template:Greece Old Style dating]] to [[Template:Greece Old Style dates]] wikitext text/x-wiki <ref>Note: Greece officially [[Adoption of the Gregorian calendar#Adoption in Eastern Europe|adopted]] the [[Gregorian calendar]] on 16 February 1923 (which became 1 March). All dates prior to that, unless specifically denoted, are [[Old Style]].</ref><noinclude> [[Category:Greece templates|Old Style dating]] [[Category:Time, date and calendar templates]] </noinclude> e9074de84202392ef3087519a6a003437ebcbfe8 Module:Exponential search 828 476 1045 2023-02-10T20:10:53Z Uzume 8 strict Scribunto text/plain -- This module provides a generic exponential search algorithm. require[[strict]] local checkType = require('libraryUtil').checkType local floor = math.floor local function midPoint(lower, upper) return floor(lower + (upper - lower) / 2) end local function search(testFunc, i, lower, upper) if testFunc(i) then if i + 1 == upper then return i end lower = i if upper then i = midPoint(lower, upper) else i = i * 2 end return search(testFunc, i, lower, upper) else upper = i i = midPoint(lower, upper) return search(testFunc, i, lower, upper) end end return function (testFunc, init) checkType('Exponential search', 1, testFunc, 'function') checkType('Exponential search', 2, init, 'number', true) if init and (init < 1 or init ~= floor(init) or init == math.huge) then error(string.format( "invalid init value '%s' detected in argument #2 to " .. "'Exponential search' (init value must be a positive integer)", tostring(init) ), 2) end init = init or 2 if not testFunc(1) then return nil end return search(testFunc, init, 1, nil) end a9037be0c44536be79b2d7a26155bfb907368ae7 Template:Infobox name module 10 1136 2462 2023-02-12T17:30:29Z w>ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ 0 Completed [[Wikipedia:Templates_for_discussion/Log/2017_April_7#Template:Infobox_name_module|merger]]. Removed support for East Asian languages with multiple scripts as discussed at [[WP:TFDH]] [[Special:PermanentLink/1138169755#Meta]]. Doc page updated with replacement templates wikitext text/x-wiki {{Infobox | child = yes | decat = yes <!-- remove from template:infobox tracking categories --> | title = | label1 = {{#if: {{{language|{{{2|}}}}}} <!-- If there is more than one parameter --> | {{#if: {{{nolink|}}} <!-- If the language is not to be wikilinked --> | {{#if:{{#invoke:lang|is_ietf_tag|{{{language|{{{1|}}}}}}}} | <!-- Check if language has been entered as an iso code --> {{#invoke:lang|name_from_tag|{{{language|{{{1|}}}}}}}} | <!-- Set language field accordingly --> {{{language|{{{1|}}}}}} }} | {{#if:{{#invoke:lang|is_ietf_tag|{{{language|{{{1|}}}}}}}} | <!-- If the language is to be wikilinked --> {{#invoke:lang|name_from_tag|{{{language|{{{1|}}}}}}|link=yes}} | [[{{{language|{{{1|}}}}}} language|{{{language|{{{1|}}}}}}]] }} }} | Original title <!-- Default field name if no language is entered --> }} | data1 = {{#if: {{{title|{{{2|{{{original|{{{1|}}}}}}}}}}}} | ''{{{title|{{{2|{{{original|{{{1|}}}}}}}}}}}}'' }} <!-- Order of parameter preference depending on data entry --> | label2 = Literally | data2 = {{#if: {{{translation|}}}|''{{{translation|}}}''}} }}<noinclude> {{documentation}} <!-- Add cats and interwikis to the /doc subpage --> </noinclude> 863ab641d870ebdf01562bde3f2c1dd2db748810 Template:Infobox university 10 1150 2476 2023-02-13T19:02:18Z w>MSGJ 0 add visitor field, see discussion wikitext text/x-wiki {{Infobox | bodyclass = vcard | titleclass = fn org | titlestyle = font-size:125%; | title = {{{name|<includeonly>{{PAGENAMEBASE}}</includeonly>}}} | subheader = {{#if:{{{native_name|}}} |<div class="nickname" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}} | image = {{#invoke:InfoboxImage|InfoboxImage |image={{if empty|{{{image|}}}|{{{image_name|}}}}}|size={{{image_size|}}} |upright={{if empty|{{{image_upright|}}}|1}} |alt={{{image_alt|}}}}} | caption = {{{caption|}}} | labelstyle = padding-right:0.65em;<!--(to ensure sufficient gap between (long/unwrapped) labels and subsequent data on same line)--> <!--------------------- Names, motto ----------------------> | class1 = nickname | data1 = {{#if:{{{latin_name|}}} |{{lang-la|{{{latin_name}}}}} }} | label2 = {{longitem|Other name{{#if:{{{other_names|}}}|s}}}} | class2 = nickname | data2 = {{if empty|{{{other_names|}}}|{{{other_name|}}}}} | label3 = {{longitem|Former name{{#if:{{{former_names|}}}|s}}}} | class3 = nickname | data3 = {{if empty|{{{former_names|}}}|{{{former_name|}}}}} | label4 = Motto | data4 = {{#if:{{both|{{{motto|}}}|{{{motto_lang|}}}}}|<div lang="{{{motto_lang}}}">{{{motto}}}</div>|{{{motto|}}}}} | label5 = {{longitem|Motto in&nbsp;English}} | data5 = {{{mottoeng|}}} | label6 = {{{top_free_label|}}} | data6 = {{#if:{{{top_free_label|}}} |{{{top_free|}}} }} | label7 = {{{top_free_label1|}}} | data7 = {{#if:{{{top_free_label1|}}} |{{{top_free1}}} }} | label8 = {{{top_free_label2|}}} | data8 = {{#if:{{{top_free_label2|}}} |{{{top_free2}}} }} <!---------- Date/s, type, affiliation, finance -----------> | label9 = Type | data9 = {{{type|}}} | label10 = {{#if:{{{closed|}}} |Active |Established}} | data10 = {{#if:{{{established|}}} |{{{established}}}{{#if:{{{closed|}}}|–{{{closed}}}}} }} | label11 = {{#if:{{{founders|}}}|Founders|Founder}} | data11 = {{if empty|{{{founders|}}}|{{{founder|}}}}} | label12 = {{longitem|Parent institution}} | data12 = {{{parent|}}} | label13 = [[Higher education accreditation|Accreditation]] | data13 = {{{accreditation|}}} | label14 = Affiliation | data14 = {{{affiliation|}}} | label15 = {{longitem|Religious affiliation}} | data15 = {{{religious_affiliation|}}} | label16 = {{longitem|Academic {{#if:{{{academic_affiliations|}}}|affiliations|affiliation}}}} | data16 = {{if empty|{{{academic_affiliations|}}}|{{{academic_affiliation|}}}}} | label17 = [[Financial endowment|Endowment]] | data17 = {{{endowment|}}} | label18 = Budget | data18 = {{{budget|}}} <!--------------------- Personnel -------------------------> | label19 = {{longitem|Officer in charge}} | data19 = {{{officer_in_charge|}}} | label20 = [[Chair (officer)|Chair]] | data20 = {{{chair|}}} | label21 = [[Chairperson|Chairman]] | data21 = {{{chairman|}}} | label22 = [[Chairperson]] | data22 = {{{chairperson|}}} | label23 = [[Visitor]] | data23 = {{{visitor|}}} | label24 = [[Chancellor (education)|Chancellor]] | data24 = {{{chancellor|}}} | label25 = [[University president|President]] | data25 = {{{president|}}} | label26 = {{nowrap|Vice-president}} | data26 = {{{vice-president|{{{vice_president|}}}}}} | label27 = [[Superintendent (education)|Superintendent]] | data27 = {{#if:{{{superintendent|}}} |{{{superintendent}}} [[Category:Pages using infobox university with the superintendent parameter]] |}} | label28 = {{nowrap|[[Vice-Chancellor]]}} | data28 = {{{vice_chancellor|}}} | label29 = [[Provost (education)|Provost]] | data29 = {{{provost|}}} | label30 = [[Rector (academia)|Rector]] | data30 = {{{rector|}}} | label31 = [[Principal (academia)|Principal]] | data31 = {{{principal|}}} | label32 = [[Dean (education)|Dean]] | data32 = {{{dean|}}} | label33 = Director | data33 = {{{director|}}} | label34 = {{{head_label}}} | data34 = {{#if:{{{head_label|}}} |{{{head|}}} }} | label35 = {{longitem|Academic staff}} | data35 = {{{academic_staff|}}}<!--for backwards compatibility:-->{{{faculty|}}} | label36 = {{longitem|Administrative staff}} | data36 = {{{administrative_staff|}}} | label37 = {{longitem|Total staff}} | data37 = {{{total_staff|}}} | label38 = Students | data38 = {{br separated entries|{{{students|}}}|{{{enrollment|}}}}} | label39 = [[Undergraduate education|Undergraduates]] | data39 = {{{undergrad|}}} | label40 = [[Postgraduate education|Postgraduates]] | data40 = {{{postgrad|}}} | label41 = {{longitem|[[Doctorate|Doctoral students]]}} | data41 = {{{doctoral|}}} | label42 = {{longitem|Other students}} | data42 = {{if empty|{{{other_students|}}}|{{{other|}}}}} <!------------ Location, language, {{{free}}} -------------> | label43 = {{#if:{{{address|}}}|Address|Location}} | class43 = adr | data43 = {{Br separated entries | 1 = {{#if:{{{location|}}} | <div style="display:inline" class="extended-address">{{{location}}}</div> | {{Comma separated entries | 1 = {{#if:{{{address|}}}|<div style="display:inline" class="street-address">{{{address}}}</div>}} | 2 = {{#if:{{{city|}}}|<div style="display:inline" class="locality">{{{city}}}</div>}} | 3 = {{#if:{{{canton|}}}{{{prefecture|}}}{{{province|}}}{{{region|}}}{{{state|}}}|<div style="display:inline" class="state">{{Comma separated entries|{{{canton|}}}|{{{prefecture|}}}|{{{province|}}}|{{{region|}}}|{{{state|}}}}}</div>}} | 4 = {{#if:{{{postalcode|}}}{{{postcode|}}}{{{zipcode|}}}|<div style="display:inline" class="postal-code">{{If empty|{{{postalcode|}}}|{{{postcode|}}}|{{{zipcode|}}}}}</div>}} | 5 = {{#if:{{{country|}}}|<div style="display:inline" class="country-name">{{{country}}}</div>}} }} }} | 2 = {{if empty|{{{coordinates|}}}|{{{coor|}}}}} }} | label44 = Campus | data44 = {{#if:{{{campus_size|}}}|{{#if:{{{campus_type|{{{campus|}}}}}}|{{{campus_type|{{{campus|}}}}}}, {{{campus_size}}}|{{{campus_size}}}}}|{{{campus_type|{{{campus|}}}}}}}} | label45 = Language | data45 = {{{language|}}} | label46 = {{if empty|{{{free_label|}}}|{{{free_label1|}}}}} | data46 = {{#if:{{{free_label|}}}{{{free_label1|}}} |{{{free|}}} {{{free1|}}} }} | label47 = {{{free_label2|}}} | data47 = {{#if:{{{free_label2|}}} |{{{free2}}} }} <!------------ Colo/urs, sports, website, etc -------------> | label48 = [[School colors|Colo{{#if:{{{colours|}}}|u}}rs]] | data48 = {{{colors|}}}{{{colours|}}} | label49 = [[Athletic nickname|Nickname]]{{#if:{{{athletics_nicknames|}}}{{{sports_nicknames|}}}|s}} | data49 = {{if empty|{{{athletics_nicknames|}}}|{{{sports_nicknames|}}}|{{{athletics_nickname|}}}|{{{sports_nickname|}}}|{{{nickname|}}}}} | label50 = {{#if:{{{athletics_affiliations|{{{sporting_affiliations|}}}}}}|{{longitem|Sporting affiliations}}|Affiliations}} | data50 = {{if empty|{{{athletics_affiliations|{{{sporting_affiliations|}}}}}}|{{{affiliations|}}}}} | label52 = Mascot{{#if:{{{mascots|}}}|s}} | data52 = {{if empty|{{{mascots|}}}|{{{mascot|}}}}} | label53 = {{{sports_free_label|}}} | data53 = {{{sports_free|}}} | label54 = {{{sports_free_label1|}}} | data54 = {{{sports_free1|}}} | label55 = {{{sports_free_label2|}}} | data55 = {{{sports_free2|}}} | label56 = {{{sports_free_label3|}}} | data56 = {{{sports_free3|}}} | label57 = Website | data57 = {{{website|}}} | data58 = {{#invoke:InfoboxImage|InfoboxImage |image={{{logo|}}}|size={{{logo_size|}}}|upright={{{logo_upright|}}}|alt={{{logo_alt|}}}}} | header59 = {{if empty|{{{nrhp|}}}|{{{embedded|}}}|{{{module|}}}}} <!-------------------- Location map -----------------------> | data60 = {{#if:{{{pushpin_map|}}} | {{Location map|{{{pushpin_map}}} | float = center | caption = {{#if:{{{pushpin_map_caption|}}}|{{{pushpin_map_caption}}}|Location in {{#invoke:Location map|data|{{{pushpin_map}}}|name}}}} | border = infobox | width = {{if empty|{{{map_size|}}}|250}} | coordinates = {{if empty|{{{coordinates|}}}|{{{coor|}}}}} | position = {{{pushpin_label_position|}}} }} }} | below = {{{footnotes|}}} }}{{Main other|[[Category:Articles using infobox university]] }}{{#if:{{{image_name|}}}|{{Main other|[[Category:Pages using infobox university with the image name parameter]]}} }}{{#if:{{{affiliations|}}}|{{Main other|[[Category:Pages using infobox university with the affiliations parameter]]}} }}{{#if:{{{nickname|}}}|{{Main other|[[Category:Pages using infobox university with the nickname alias]]}} }}{{#invoke:check for unknown parameters|check |unknown={{main other|[[Category:Pages using infobox university with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox university]] with unknown parameter "_VALUE_"|ignoreblank=y | academic_affiliation | academic_affiliations | academic_staff | accreditation | address | administrative_staff | affiliation | affiliations | athletics_affiliations | athletics_nickname | athletics_nicknames | budget | campus | campus_type | campus_size | canton | caption | chair | chairman | chairperson | chancellor | city | closed | colors | colours | coor | coordinates | country | dean | director | doctoral | embedded | endowment | enrollment | established | faculty | footnotes | former_name | former_names | founder | founders | free | free1 | free2 | free_label | free_label1 | free_label2 | head | head_label | image | image_alt | image_name | image_size | image_upright | language | latin_name | location | logo | logo_alt | logo_size | logo_upright | map_size | mascot | mascots | module | motto | mottoeng | motto_lang | mottoeng | name | native_name | native_name_lang | nickname | nrhp | officer_in_charge | other | other_name | other_names | other_students | parent | postalcode | postcode | postgrad | prefecture | president | principal | province | provost | pushpin_label_position | pushpin_map | pushpin_map_caption | rector | region | religious_affiliation | sporting_affiliations | sports_free | sports_free1 | sports_free2 | sports_free3 | sports_free_label | sports_free_label1 | sports_free_label2 | sports_free_label3 | sports_nickname | sports_nicknames | state | students | superintendent | top_free | top_free1 | top_free2 | top_free_label | top_free_label1 | top_free_label2 | total_staff | type | undergrad | vice_chancellor | vice-president | vice_president | visitor | website | zipcode }}<!-- tracking conflicting parameters -->{{#invoke:Check for clobbered parameters|check | template = Infobox university | cat = {{main other|Category:Pages using infobox university with conflicting parameters}} | image; image_name | other_names; other_name | former_names; former_name | founders; founder | academic_affiliations; academic_affiliation | academic_staff; faculty | campus_type; campus | other_students; other | location; address | location; city | location; address | location; canton | location; prefecture | location; province | location; region | location; state | location; country | location; postalcode | location; postcode | location; zipcode | postalcode; postcode; zipcode | coordinates; coor | colors; colours | free_label; free_label1 | free; free1 | athletics_nicknames; sports_nicknames; athletics_nickname; sports_nickname; nickname | athletics_affiliations; sporting_affiliations | affiliation; affiliations | mascots; mascot | nrhp; embedded; module }}<noinclude> {{documentation}} </noinclude> b4d7b7d57f5ee81d673686ba6d8feeed88f51757 Template:Space 10 1371 2706 2023-02-14T01:26:39Z Xaosflux 7 shell params wikitext text/x-wiki #REDIRECT [[Template:Spaces]] {{Rcat shell| {{R from modification}} {{R with history}} {{R from template shortcut}} }} 707e41107ad2ff68b4a6a9cb50692a660a667b89 Template:Sister project 10 590 1328 2023-02-14T12:14:20Z wikipedia>Paine Ellsworth 0 "iw" for interwiki link (other-language WPs) wikitext text/x-wiki {{Side box | metadata=no | position = {{{position|}}} | image = {{#switch: {{{image|}}} | none = <!-- "image=none", do nothing --> | = <!-- No image fed, select an image --> [[File:{{#switch: {{lc: {{{project|}}} }} | commons|c = Commons-logo.svg | meta|metawiki|m = Wikimedia Community Logo.svg | wikibooks|wbk|wb|b = Wikibooks-logo-en-noslogan.svg | wikidata|data = Wikidata-logo.svg | wikiquote|quote|wqt|q = Wikiquote-logo.svg | wikipedia|wp|w|iw = Wikipedia-logo-v2.svg | wikisource|source|ws|s = Wikisource-logo.svg | wiktionary|wikt|wkt|wdy|d = Wiktionary-logo-en-v2.svg | wikinews|news|wnw|n = Wikinews-logo.svg | wikispecies|species = Wikispecies-logo.svg | wikiversity|wvy|v = Wikiversity logo 2017.svg | wikivoyage|voyage|voy = Wikivoyage-Logo-v3-icon.svg | mediawiki|mw = MediaWiki-2020-icon.svg | outreachwiki|outreach = Wikimedia Outreach.png | incubator = Incubator-notext.svg | #default = Wikimedia-logo.svg }}|40x40px|class=noviewer|alt=|link= ]] | #default = {{{image|}}} }} | textclass = {{{textclass|plainlist}}} | textstyle = {{{textstyle|}}} | text = {{{text}}} | below = {{{below|}}} | imageright = {{{imageright|}}} | class = plainlinks sistersitebox }}<noinclude>{{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> 0929197ea6267d9d63d80f9f8432fe1cfbe7ace8 Template:Infobox military operation 10 1503 2838 2023-02-15T15:43:09Z w>Phuzion 0 Added subtitle to check for unknown parameters wikitext text/x-wiki {{infobox |bodyclass = vevent |bodystyle = {{WPMILHIST Infobox style|main_box_raw}} |abovestyle = {{WPMILHIST Infobox style|header_raw}} |aboveclass = summary | headerstyle = {{WPMILHIST Infobox style|header_raw}} |above = {{if empty|{{{title|}}}|{{{name|}}}|{{PAGENAMEBASE}}}} |subheaderstyle = {{WPMILHIST Infobox style|sub_header_raw}} |subheader = {{br separated entries|{{{subtitle|}}}|{{#if:{{{partof|}}}{{{conflict|}}}|Part of {{if empty|{{{conflict|}}}|{{{partof|}}}}} }}}} |labelstyle = padding-right: 1em; |imagestyle = {{WPMILHIST Infobox style|image_box_raw}} |image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|upright={{{image_upright|1}}}|alt={{{alt|}}}}} |caption = {{{caption|}}} | label1 = {{#if:{{{scope|}}}|Operational scope|Type}} | data1 = {{if empty|{{{scope|}}}|{{{type|}}}}} | label2 = Location{{#if:{{{location2|}}}|s}} | data2 = {{br separated entries |1 = {{#if:{{{location|{{{place|}}}}}}|<div style="display:inline;" class="location">{{{location|{{{place|}}}}}}</div>}} |2 = {{{coordinates|}}} |3 = {{#if:{{{location2|}}}|<div style="display:inline;" class="location">{{{location2|}}}</div>}} |4 = {{#if:{{{location2|}}}|{{{coordinates2|}}}}} |5 = {{#if:{{{location3|}}}|<div style="display:inline;" class="location">{{{location3|}}}</div>}} |6 = {{#if:{{{location3|}}}|{{{coordinates3|}}}}} |7 = {{#if:{{{location4|}}}|<div style="display:inline;" class="location">{{{location4|}}}</div>}} |8 = {{#if:{{{location4|}}}|{{{coordinates4|}}}}} |9 = {{#if:{{{location5|}}}|<div style="display:inline;" class="location">{{{location5|}}}</div>}} |10= {{#if:{{{location5|}}}|{{{coordinates5|}}}}} |11= {{#if:{{{location6|}}}|<div style="display:inline;" class="location">{{{location6|}}}</div>}} |12= {{#if:{{{location6|}}}|{{{coordinates6|}}}}} |13= {{#if:{{{location7|}}}|<div style="display:inline;" class="location">{{{location7|}}}</div>}} |14= {{#if:{{{location7|}}}|{{{coordinates7|}}}}} |15= {{#if:{{{location8|}}}|<div style="display:inline;" class="location">{{{location8|}}}</div>}} |16= {{#if:{{{location8|}}}|{{{coordinates8|}}}}} |17= {{#if:{{{location9|}}}|<div style="display:inline;" class="location">{{{location9|}}}</div>}} |18= {{#if:{{{location9|}}}|{{{coordinates9|}}}}} |19= {{#if:{{{location10|}}}|<div style="display:inline;" class="location">{{{location10|}}}</div>}} |20= {{#if:{{{location10|}}}|{{{coordinates10|}}}}} }} | label3 = Planned | data3 = {{{planned|}}} | label4 = Planned&nbsp;by | data4 = {{{planned_by|}}} | label5 = Commanded&nbsp;by | data5 = {{{commanded_by|}}} | label6 = {{#if:{{{target|}}}|Target|Objective}} | data6 = {{if empty|{{{target|}}}|{{{objective|}}}}} | label7 = Date | data7 = {{br separated entries |1 = {{if empty|{{{executed|}}}|{{{date|}}}}} |2 = {{{time|}}} |3 = {{#if:{{{time-begin|}}}|{{{time-begin}}} &ndash; {{{time-end|}}}}} }} {{#if:{{{timezone|}}}|({{{timezone}}})}} | label8 = Executed&nbsp;by | data8 = {{if empty|{{{instigator|}}}|{{{executed_by|}}}}} | label9 = Outcome | data9 = {{{outcome|}}} | label10 = Casualties | data10 = {{if empty|{{{casualties|}}}|{{br separated entries |1 = {{#if:{{{fatalities|}}}|{{{fatalities|}}} killed}} |2 = {{#if:{{{injuries|}}}|{{{injuries|}}} injured}} }} }} | header27 = {{#if:{{{map_type|}}}|<nowiki />}} | data28 = {{#if:{{{map_type|}}}| {{#if:{{{coordinates2|}}}| {{Location map many|{{{map_type}}}|coordinates1={{if empty|{{{map_coord|}}} | {{{coordinates|}}} }}|width={{{map_size|220}}}|float=center|border=infobox|label1={{{map_label|}}}|caption={{{map_caption|Location within {{#invoke:Location map|data|{{{map_type}}}|name}} }}} |coordinates2={{{coordinates2|}}}|label2={{{map_label2|}}} {{#if:{{{coordinates3|}}}|{{!}}coordinates3={{{coordinates3|}}}{{!}}label3={{{map_label3|}}} }} {{#if:{{{coordinates4|}}}|{{!}}coordinates4={{{coordinates4|}}}{{!}}label4={{{map_label4|}}} }} {{#if:{{{coordinates5|}}}|{{!}}coordinates5={{{coordinates5|}}}{{!}}label5={{{map_label5|}}} }} {{#if:{{{coordinates6|}}}|{{!}}coordinates6={{{coordinates6|}}}{{!}}label6={{{map_label6|}}} }} {{#if:{{{coordinates7|}}}|{{!}}coordinates7={{{coordinates7|}}}{{!}}label7={{{map_label7|}}} }} {{#if:{{{coordinates8|}}}|{{!}}coordinates8={{{coordinates8|}}}{{!}}label8={{{map_label8|}}} }} {{#if:{{{coordinates9|}}}|{{!}}coordinates9={{{coordinates9|}}}{{!}}label9={{{map_label9|}}} }} {{#if:{{{coordinates10|}}}|{{!}}coordinates10={{{coordinates10|}}}{{!}}label10={{{map_label10|}}} }} }} |{{Location map|{{{map_type}}}|coordinates={{if empty|{{{map_coord|}}} | {{{coordinates|}}} }}|width={{{map_size|220}}}|float=center|border=infobox|label={{{map_label|}}}|caption={{{map_caption|Location within {{#invoke:Location map|data|{{{map_type}}}|name}} }}} }} }} }} }}{{{campaignbox|}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox military operation with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox military operation]] with unknown parameter "_VALUE_"|ignoreblank=y| alt | campaignbox | caption | casualties | commanded_by | conflict | coordinates | date | executed | executed_by | fatalities | image | image_size | image_upright | injuries | instigator | location | map_caption | map_coord | map_label | map_size | map_type | name | objective | outcome | partof | planned | planned_by | scope | subtitle | target | time | time-begin | time-end | timezone | title | type | coordinates2 | coordinates3 | coordinates4 | coordinates5 | coordinates6 | coordinates7 | coordinates8 | coordinates9 | coordinates10 | map_label2 | map_label3 | map_label4 | map_label5 | map_label6 | map_label7 | map_label8 | map_label9 | map_label10 | location2 | location3 | location4 | location5 | location6 | location7 | location8 | location9 | location10 }}<noinclude> {{template doc}} </noinclude> 829164a43ec689efc952b0722e2406cf1185cf66 Module:Lua banner 828 63 121 2023-02-16T14:39:53Z Uzume 8 [[Module:Citation]] has been blanked since [[Wikipedia:Templates for discussion/Log/2018 May 13#Module:Citation]]; remove special handling Scribunto text/plain -- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = '<strong class="error">Error: no modules specified</strong>' else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) local maybeSandbox = mw.title.new(module .. '/sandbox') if maybeSandbox.exists then moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText) end end local moduleList = mList.makeList('bulleted', moduleLinks) local title = mw.title.getCurrentTitle() if title.subpageText == "doc" then title = title.basePageTitle end if title.contentModel == "Scribunto" then boxArgs.text = 'This module depends on the following other modules:' .. moduleList else boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList end end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]' return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end local cats = {} -- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end -- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle() local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true } if not subpageBlacklist[titleObj.subpageText] then local protCatName if titleObj.namespace == 10 then local category = args.category if not category then local categories = { ['Module:String'] = 'Templates based on the String Lua module', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module' } category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category protCatName = "Templates using under-protected Lua modules" elseif titleObj.namespace == 828 then protCatName = "Modules depending on under-protected modules" end if not args.noprotcat and protCatName then local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } local currentProt if titleObj.id ~= 0 then -- id is 0 (page does not exist) if am previewing before creating a template. currentProt = titleObj.protectionLevels["edit"][1] end if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do if module ~= "WP:libraryUtil" then local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = protCatName break end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p 03ec1b34a40121efc562c0c64a67ebbf57d56dff Template:Efn 10 563 1272 2023-02-17T03:04:27Z wikipedia>RMCD bot 0 Removing notice of move discussion wikitext text/x-wiki <includeonly>{{#if:{{{name|}}} |{{#tag:ref|{{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}|name={{{name|}}}|group={{#switch: {{{group|}}} | note | upper-alpha | upper-roman | lower-alpha | lower-greek | lower-roman = {{{group|}}} | #default = lower-alpha }} }} |{{#tag:ref|{{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}|group={{#switch: {{{group|}}} | note | upper-alpha | upper-roman | lower-alpha | lower-greek | lower-roman = {{{group|}}} | #default = lower-alpha }} }} }}</includeonly><noinclude> {{documentation}} </noinclude> 6ed4e5c148014b92a23bd51d16f3180881bb876c Module:Catalog lookup link 828 1093 2385 2023-02-21T10:27:42Z wikipedia>Uzume 0 +templatestyles Scribunto text/plain --[[ |1=, |2=, |3=, |4=, |5=, |6=, |7=, |8=, |9=: Optional unnamed parameters for 0 to 9 items to be listed. Whitespace is trimmed off both ends and the strings are urlencoded as if they were query strings. |article-link=: Optional Wikipedia article name to link to. |article-name=: Optional alternative text to be displayed for |article-link= link in front of catalog link. If not specified, |article-link= is used for display as well. If both parameters are not specified, the prefix is omitted completely. |article-suffix=: Optional symbol to be displayed after article name or link (f.e. ":"; omitted, if not defined). |link-prefix=: Optional prefix portion of url to external catalog item(s). |link-suffix=: Optional suffix portion of url to external catalog item(s). |item-prefix=: Optional text displayed in front of each external link (omitted, if not defined) |item-suffix=: Optional text displayed immediately after each external link (omitted, if not defined) |list-separator=: Optional alternative separator displayed between list items (default: ", ", if not specified). Whitespace must be encoded. |list-leadout=: Optional alternative leadout text displayed between the last two list items (f.e. "and", "or", "as well as", etc., default is the |list-separator= or ", ".) |leadout-suffix=: Optional alternative suffix text of the leadout (see |list-leadout=) displayed between the last two list items. This gets added in front of the last list item instead of the default whitespace which is added without this parameter. This may be necessary if |list-separator= is used not only to define the list separator but also parts of the item prefix (except for the first one). (At present, this is used only to cope with format oddities of the {{MR}} template.) new parameters that support access icons: |allowed_icons= – comma-separated list of keywords: free, limited, registration, subscription, none, all (default; 'all' implied when this parameter empty or omitted) the icons specified in the following parameters are checked agains the list in |allowed-icons=; not in the list? not displayed |url-access-all= – applies specified icon to all items in the list; accepted keywords: free, limited, registration, subscription; |url-accessn= – applies specified icon to item n of the list (the nth positional parameter); accepted keywords: free, limited, registration, subscription; ]] require('strict'); local getArgs = require ('Module:Arguments').getArgs; local lock_icons = { --icon classes are defined in Module:Citation/CS1/styles.css ['free'] = {'id-lock-free', 'Freely accessible'}, ['registration'] = {'id-lock-registration', 'Free registration required'}, ['limited'] = {'id-lock-limited', 'Free access subject to limited trial, subscription normally required'}, ['subscription'] = {'id-lock-subscription', 'Paid subscription required'}, } --[[--------------------------< I S _ S E T >------------------------------------------------------------------ Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string. ]] local function is_set( var ) return not (var == nil or var == ''); end --[=[-------------------------< M A K E _ L A B E L >---------------------------------------------------------- Makes a wikilinked or plain text label from arguments; when both link and display text is provided, makes a wikilink in the form [[L|D]]; if only link is provided, makes a wikilinked label in the form [[L]]; if only display is provided, makes a plain-text label; if neither are provided makes a label from suffix, returns an empty string else. ]=] local function make_label (link, display, suffix) local label = ''; if is_set (link) then if is_set (display) then label = table.concat ({'[[', link, '|', display, ']]'}); -- make [[L|D]] wikilinked label else label = table.concat ({'[[', link, ']]'}); -- make [[L]] wikilinked label end elseif is_set (display) then label = display; -- plain-text label end if is_set (label) then return table.concat ({label, suffix, '&nbsp;'}); -- assemble the complete label else return suffix; -- no space after suffix if no label end end --[[--------------------------< I C O N _ I N D E X _ G E T >-------------------------------------------------- returns index into lock_icons[] if value assigned to |url-access= or |url-access-all= is a valid icon selector (free, limited, registration, subscription) icon selection may be limited to a subset of the icons with: |allow_icons=<comma-separated list of allowed icons> <comma-separated list of allowed icons> may be any of the keywords: free, limited, registration, subscription, none, all keyword 'all' is default condition; 'all' is implied when |allowed=icons= is empty or omitted keyword 'none' for use with identifiers where icons are inappropriate (isbn, issn, oclc) Templates using this module should set: |allow_icons=free for most identifiers; |allow_icons=none for isbn, issn, oclc, etc |url-access= is alias of |url-access1= ]] local function icon_index_get (args, k) local icon; local param_name = (1 == k and is_set (args['url-access']) and 'url-access') or table.concat ({'url-access', k}); -- make an enumerated parameter name if is_set (args['url-access-all']) and lock_icons[args['url-access-all']] then -- if set and valid icon = args['url-access-all']; -- tentatively elseif is_set (args[param_name]) and lock_icons[args[param_name]] then -- if set and valid icon = args[param_name]; -- tentatively else return nil; -- neither |url-access-all= nor |url-accessn= set so return nil end if args['allow_icons'] and args['allow_icons']:find ('none') then -- if 'none' keyword is present return nil; -- icons display not allowed end if not is_set (args['allow_icons']) or args['allow_icons']:find ('all') or args['allow_icons']:find (icon) then --if all allowed or specified icon is allowed return icon; -- return selected icon as index into icon table end end --[[--------------------------< M A I N >---------------------------------------------------------------------- Template entrypoint to this module; arguments come primarily from the parent frame though in templates that use this module, |allowed-icons= is typically set, if needed, in the {{#invoke:}}. ]] local function main (frame) local args = getArgs (frame); local out_text = ''; if is_set(args[1]) then local result = {}; local label; local article_suffix = args['article-suffix'] or args['article-postfix'] or ''; local link_prefix = args['link-prefix'] or ''; local link_suffix = args['link-suffix'] or args['link-postfix'] or ''; local item_prefix = args['item-prefix'] or ''; local item_suffix = args['item-suffix'] or args['item-postfix'] or ''; local list_separator = args['list-separator'] or ', '; local leadout_suffix = args['leadout-suffix'] or args['leadout-postfix'] or ' '; local list_leadout; local icon_index; if is_set (args['list-leadout']) then list_leadout = table.concat ({ mw.ustring.gsub (args['list-leadout'], '^(%a)', ' %1'), -- insert leading space if first character is a letter leadout_suffix, }); else list_leadout = ''; end label = make_label (args['article-link'], args['article-name'], article_suffix); for k, item in ipairs (args) do -- for each of the positional parameters item = mw.text.trim (item); -- remove extraneous whitespace if is_set (link_prefix) then -- if there is link prefix... item = table.concat ({ -- create an external link item '[', -- open ext link markup link_prefix, -- url prefix mw.uri.encode (item), -- item is part of url link_suffix, -- url suffix ' ', -- required space between url and label item_prefix, -- label prefix item, -- item as label item_suffix, -- item suffix ']' -- close ext link markup }); icon_index = icon_index_get (args, k); -- set if icon specified and allowed for this item; nil else if icon_index then item = table.concat ({ -- add access icon markup to this item '<span class="', -- open the opening span tag; icon classes are defined in Module:Citation/CS1/styles.css lock_icons[icon_index][1], -- add the appropriate lock icon class '" title="', -- and the title attribute lock_icons[icon_index][2], -- for an appropriate tool tip '">', -- close the opening span tag item, '</span>', -- and close the span }); end else item = table.concat ({ -- create an unlinked item item_prefix, -- label prefix item, -- item as label item_suffix, -- item suffix }); end table.insert (result, item); -- add the item to the result list end out_text = frame:callParserFunction('#tag', {'templatestyles', '', src=table.concat({ 'Module:Citation/CS1', mw.ustring.match(frame:getTitle(), '/sandbox$') or '', '/styles.css', })}); if is_set (args['list-leadout']) then out_text = table.concat ({out_text, label, mw.text.listToText (result, list_separator, list_leadout)}); else out_text = table.concat ({out_text, label, table.concat (result, list_separator)}); end end --is_set (args[1]) return out_text end return {main = main}; 21695b34c26d41971bb011f905ec0f995ecc28b7 Template:Catalog lookup link 10 1092 2383 2023-02-21T10:29:15Z wikipedia>Uzume 0 -templatestyles as they are now brought in by the Scribunto module wikitext text/x-wiki {{#invoke:Catalog lookup link|main}}<noinclude> {{documentation}} </noinclude> 90f05b4ea15a4a853b2f27af3c21c60276189820 Template:Infobox political party 10 1158 2484 2023-02-23T04:32:29Z w>ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ 0 add support for chairwoman per tper wikitext text/x-wiki <includeonly>{{#if:{{Has short description}} |<!--Do nothing--> |{{main other|{{Short description|Political party{{#if:{{{country|}}}|&#32;in {{Plain text|{{{country}}}}}}}|noreplace}}}} }}</includeonly> {{Infobox | bodyclass = vcard | abovestyle = font-size: 125%; | above = <div style="padding-top:0.3em; padding-bottom:0.3em; {{#if:{{{colorcode|}}}|border-top:2px solid {{{colorcode}}}; border-bottom:2px solid {{{colorcode}}};}} line-height: 1;"><div class="fn org">{{if empty|{{{name|}}}|{{PAGENAMEBASE}}}}</div> {{#if:{{{native_name|}}} |<div style="font-size: 0.8em; padding-top:0.3em;" class="nickname" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}}</div> | subheader = {{{_subheader|}}} | imageclass = logo | imagestyle = padding-top:.4em;padding-bottom:.3em; | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|upright={{{logo_upright|0.8}}}|alt={{{logo_alt|}}}|size={{{logo_size|}}}}} | caption = {{{caption|}}} | headerstyle = line-height: 0.8em; | labelstyle = line-height:1.3em; | datastyle = line-height:1.3em; | label1 = {{{lang1}}} name | class1 = nickname | data1 = {{{name_lang1|}}} | label2 = {{{lang2}}} name | class2 = nickname | data2 = {{{name_lang2|}}} | label3 = {{{lang3}}} name | class3 = nickname | data3 = {{{name_lang3|}}} | label4 = {{{lang4}}} name | class4 = nickname | data4 = {{{name_lang4|}}} | label5 = Abbreviation | class5 = nickname | data5 = {{if empty|{{{abbreviation|}}}|{{{abbr|}}}}} | label6 = [[Party leader|Leader]] | class6 = agent | data6 = {{{leader|}}} | label7 = President | class7 = agent | data7 = {{{president|}}} | label8 = [[Party chair|Chair{{#if:{{{chairperson|}}}|person|{{#if:{{{chairman|}}}|man|woman}}}}]] | class8 = agent | data8 = {{if empty|{{{chairperson|}}}|{{{chairman|}}}|{{{chairwoman|}}}}} | label9 = [[Party secretary|Secretary]] | class9 = agent | data9 = {{{secretary|}}} | label10 = General Secretary | class10 = agent | data10 = {{{general_secretary|}}} | label11 = First Secretary | class11 = agent | data11 = {{{first_secretary|}}} | label12 = {{nowrap|Secretary-General}} | class12 = agent | data12 = {{{secretary_general|}}} | label13 = [[Presidium]] | class13 = agent | data13 = {{{presidium|}}} | label14 = Governing body | class14 = agent | data14 = {{{governing_body|}}} | label15 = Standing Committee | class15 = agent | data15 = {{{standing_committee|}}} | label16 = [[Party spokesperson|Spokes{{#if:{{{spokesperson|}}}|person|man}}]] | class16 = agent | data16 = {{if empty|{{{spokesperson|}}}|{{{spokesman|}}}}} | label17 = {{{leader1_title|}}} | class17 = agent | data17 = {{{leader1_name|}}} | label18 = {{{leader2_title|}}} | class18 = agent | data18 = {{{leader2_name|}}} | label19 = {{{leader3_title|}}} | class19 = agent | data19 = {{{leader3_name|}}} | label20 = {{{leader4_title|}}} | class20 = agent | data20 = {{{leader4_name|}}} | label21 = {{{leader5_title|}}} | class21 = agent | data21 = {{{leader5_name|}}} | label22 = {{#if:{{{founders|}}} |Founders |Founder}} | class22 = agent | data22 = {{if empty|{{{founders|}}}|{{{founder|}}}}} | label23 = Founded | data23 = {{if empty|{{{founded|}}}|{{{foundation|}}}}} | label24 = Registered | data24 = {{{registered|}}} | label25 = Legali{{#if:{{{legalised|}}}|s|z}}ed | data25 = {{if empty|{{{legalised|}}}|{{{legalized|}}}}} | label26 = {{#if:{{{banned|}}} |Banned |Dissolved}} | data26 = {{if empty|{{{banned|}}}|{{{dissolved|}}}|{{{dissolution|}}}}} | label27 = Merger&nbsp;of | data27 = {{{merger|}}} | label28 = Split&nbsp;from | data28 = {{{split|}}} | label29 = Preceded&nbsp;by | data29 = {{{predecessor|}}} | label30 = Merged&nbsp;into | data30 = {{{merged|}}} | label31 = Succeeded&nbsp;by | data31 = {{{successor|}}} | label32 = Headquarters | class32 = label | data32 = {{{headquarters|}}} | label33 = Newspaper | data33 = {{{newspaper|}}} | label34 = [[Think tank]] | data34 = {{if empty|{{{think tank|}}}|{{{think_tank|}}}}} | label35 = [[Student wing]] | data35 = {{{student_wing|}}} | label36 = [[Youth wing]] | data36 = {{{youth_wing|}}} | label37 = [[Women's wing]] | data37 = {{{womens_wing|}}} | label38 = {{{wing1_title}}} | data38 = {{{wing1|}}} | label39 = {{{wing2_title}}} | data39 = {{{wing2|}}} | label40 = {{{wing3_title}}} | data40 = {{{wing3|}}} | label41 = {{{wing4_title}}} | data41 = {{{wing4|}}} | label42 = Membership {{#if:{{{membership_year|}}} |{{nobold|({{{membership_year}}})}}}} | data42 = {{{membership|}}} | label43 = [[List of political ideologies|Ideology]] | class43 = category | data43 = {{{ideology|}}} | label44 = [[Political spectrum|Political&nbsp;position]] | class44 = category | data44 = {{{position|}}} | label45 = Religion | class45 = category | data45 = {{{religion|}}} | label46 = National affiliation | class46 = category | data46 = {{{national|}}} | label47 = Regional affiliation | class47 = category | data47 = {{if empty|{{{regional|}}}|{{{regional affiliation|}}}}} | label48 = [[European political party|European affiliation]] | class48 = category | data48 = {{{european|}}} | label49 = Continental affiliation | class49 = category | data49 = {{if empty|{{{continental|}}}|{{{continental affiliation|}}}}} | label50 = International affiliation | class50 = category | data50 = {{{international|}}} | label51 = [[Political groups of the European Parliament|European Parliament group]] | class51 = category | data51 = {{{europarl|}}} | label52 = {{{affiliation1_title}}} | class52 = category | data52 = {{#if:{{{affiliation1_title|}}}|{{{affiliation1|}}}}} | label53 = {{{affiliation2_title}}} | class53 = category | data53 = {{#if:{{{affiliation2_title|}}}|{{{affiliation2|}}}}} | label54 = Colo{{#if:{{{colours|}}}|u|}}rs | data54 = {{{colo{{#if:{{{colours|}}}|u|}}rs|}}} | label55 = Slogan | data55 = {{{slogan|}}} | label56 = Anthem | data56 = {{{anthem|}}} | label57 = {{{blank1_title|}}} | data57 = {{{blank1|}}} | label58 = {{{blank2_title|}}} | data58 = {{{blank2|}}} | label59 = {{{blank3_title|}}} | data59 = {{{blank3|}}} | label60 = {{{blank4_title|}}} | data60 = {{{blank4|}}} | label61 = {{{seats1_title|}}} | data61 = {{{seats1|}}} | label62 = {{{seats2_title|}}} | data62 = {{{seats2|}}} | label63 = {{{seats3_title|}}} | data63 = {{{seats3|}}} | label64 = {{{seats4_title|}}} | data64 = {{{seats4|}}} | label65 = {{{seats5_title|}}} | data65 = {{{seats5|}}} | label66 = {{{seats6_title|}}} | data66 = {{{seats6|}}} | label67 = {{{seats7_title|}}} | data67 = {{{seats7|}}} | label68 = {{{seats8_title|}}} | data68 = {{{seats8|}}} | label69 = {{{seats9_title|}}} | data69 = {{{seats9|}}} | label70 = {{{seats10_title|}}} | data70 = {{{seats10|}}} | label71 = {{{seats11_title|}}} | data71 = {{{seats11|}}} | header72 = {{#if:{{{symbol|}}} |Election symbol}} | data73 = {{{symbol|}}} | header74 = {{#if:{{{flag|}}} |{{{flag_title|Party flag}}}}} | data75 = {{#invoke:InfoboxImage|InfoboxImage|image={{{flag|}}}|upright=0.8|alt={{if empty|{{{flag_alt|}}}|{{{flag_title|}}}}}}} | header76 = {{#if:{{{website|}}} |Website}} | data77 = {{{website|}}} | belowstyle = padding-top:0; | below = {{#if:{{{state|}}}{{{country|}}} | {{Hlist |style=line-height:1.3em; padding-top:0.3em; border-top:{{#if:{{{colorcode|}}}|2|1}}px solid {{{colorcode|#aaa}}}; | {{#if:{{{country_dab1|}}} | {{#ifexist: {{{country_dab1|}}} | [[{{{country_dab1}}}|Politics of {{if empty|{{{state|}}}|{{{country}}}}}]] }} | {{#ifexist: Politics of {{if empty|{{{state|}}}|{{{country}}}}} | [[Politics of {{if empty|{{{state|}}}|{{{country}}}}}]] }} }} | {{#if:{{{parties_dab1|}}} | {{#ifexist: {{{parties_dab1|}}} | [[{{{parties_dab1}}}|Political parties]] }} | {{#ifexist: List of political parties in {{if empty|{{{state|}}}|{{{country}}}}} | [[List of political parties in {{if empty|{{{state|}}}|{{{country}}}}}|Political parties]] }} }} | {{#if:{{{elections_dab1|}}} | {{#ifexist: {{{elections_dab1}}} | [[{{{elections_dab1}}}|Elections]] }} | {{#ifexist: Elections in {{if empty|{{{state|}}}|{{{country}}}}} | [[Elections in {{if empty|{{{state|}}}|{{{country}}}}}|Elections]]}} }} }}<!-- -->{{#if:{{{country2|}}} | {{Hlist |style=line-height:1.3em; margin-top:0.2em; padding-top:0.2em; border-top: 1px solid #aaa; | {{#if:{{{country_dab2|}}} | {{#ifexist: {{{country_dab2|}}} | [[{{{country_dab2}}}|Politics of {{{country2}}}]] }} | {{#ifexist: Politics of {{{country2}}} | [[Politics of {{{country2}}}]] }} }} | {{#if:{{{parties_dab1|}}} | {{#ifexist: {{{parties_dab2|}}} | [[{{{parties_dab2}}}|Political parties]] }} | {{#ifexist: List of political parties in {{{country2}}} | [[List of political parties in {{{country2}}}|Political parties]] }} }} | {{#if:{{{elections_dab1|}}} | {{#ifexist: {{{elections_dab2}}} | [[{{{elections_dab2}}}|Elections]] }} | {{#ifexist: Elections in {{{country2}}} | [[Elections in {{{country2}}}|Elections]]}} }} }} }} }}<!-- -->{{#if:{{{footnotes|}}} |<hr/>{{{footnotes}}} }} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox political party with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox political party]] with unknown parameter "_VALUE_"|ignoreblank=y| _subheader | abbr | abbreviation | affiliation1 | affiliation1_title | affiliation2 | affiliation2_title | anthem | banned | blank1 | blank1_title | blank2 | blank2_title | blank3 | blank3_title | blank4 | blank4_title | caption | categories | chairman | chairperson | chairwoman | colorcode | colors | colours | continental | continental affiliation | country | country_dab1 | country_dab2 | country2 | demo | dissolution | dissolved | elections_dab1 | elections_dab2 | europarl | european | first_secretary | flag | flag_alt | flag_title | footnotes | foundation | founded | founder | founders | general_secretary | governing_body | headquarters | ideology | international | lang1 | lang2 | lang3 | lang4 | leader | leader1_name | leader1_title | leader2_name | leader2_title | leader3_name | leader3_title | leader4_name | leader4_title | leader5_name | leader5_title | legalised | legalized | logo | logo_alt | logo_size | logo_upright | membership | membership_year | merged | merger | name | name_lang1 | name_lang2 | name_lang3 | name_lang4 | national | native_name | native_name_lang | newspaper | nocat | parties_dab1 | parties_dab2 | position | predecessor | president | presidium | regional | regional affiliation | registered | religion | seats1 | seats1_title | seats10 | seats10_title | seats11 | seats11_title | seats2 | seats2_title | seats3 | seats3_title | seats4 | seats4_title | seats5 | seats5_title | seats6 | seats6_title | seats7 | seats7_title | seats8 | seats8_title | seats9 | seats9_title | secretary | secretary_general | slogan | split | spokesman | spokesperson | standing_committee | state | student_wing | successor | symbol | think tank | think_tank | website | wing1 | wing1_title | wing2 | wing2_title | wing3 | wing3_title | wing4 | wing4_title | womens_wing | youth_wing }}<noinclude> {{Documentation}} </noinclude> 8b587d5ac78b0131b82ed669ff04f80ed06765f8 Template:Coord/latitude 10 1679 3115 2023-02-23T17:30:43Z wikipedia>Jonesey95 0 doc wikitext text/x-wiki {{#invoke:coordinates|coord2text|{{{1|{{Coord}}}}}|lat}}<noinclude> {{documentation |content= {{no documentation}} [[Category:Coordinates templates]] [[Category:Wikidata templates]] }} </noinclude> bf7d2fa824206215be0980b599e5f89862c58995 Template:Coord/longitude 10 1676 3107 2023-02-23T17:31:15Z wikipedia>Jonesey95 0 doc wikitext text/x-wiki {{#invoke:coordinates|coord2text|{{{1|{{Coord}}}}}|long}}<noinclude> {{documentation |content= {{no documentation}} [[Category:Coordinates templates]] [[Category:Wikidata templates]] }} </noinclude> 620a82b0a398fde71313e56c3ace7b5f84699cbd Template:AWB standard installation 10 1042 2282 2023-02-25T10:37:51Z wikipedia>Materialscientist 0 Reverted edits by [[Special:Contribs/2401:7000:DB7F:8400:0:0:0:1000|2401:7000:DB7F:8400:0:0:0:1000]] ([[User talk:2401:7000:DB7F:8400:0:0:0:1000|talk]]) to last version by Interstatefive wikitext text/x-wiki {{ mbox | image = [[File:AWB logo draft.svg|44x50px|alt=|link=]] | text = This template is used by the standard installation of [[Wikipedia:AutoWikiBrowser|AutoWikiBrowser]] (AWB). If you are planning to make any major changes to this template, how it should be used, or nominate it for deletion, please notify AWB's user base and maintainers beforehand at [[Wikipedia talk:AutoWikiBrowser|Wikipedia talk:AWB]] as a courtesy.{{#if:{{{1|}}}|<p> {{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by AutoWikiBrowser|{{PAGENAME}}]]}}}}</includeonly><noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> 5d0e869b7d352225e1fc0aa75cb27988220928aa Template:Redacted 10 228 514 2023-02-25T12:33:19Z Bbbtest 25 inline CSS fallback wikitext text/x-wiki {{safesubst:<noinclude/>#invoke:Unsubst||$B=<span style="text-decoration: line-through; color: #565656; font-style: italic;" title="Content was removed{{#if:{{{1|}}}|&nbsp;for the following reason: {{{1}}} }}">(redacted)</span>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 2ef480268fdd5e2abc658ec6d80527fc6a624c8f Template:Redacted2 10 237 534 2023-02-25T12:38:05Z Bbbtest 25 +unsubst wikitext text/x-wiki {{safesubst:<noinclude/>#invoke:Unsubst||$B=<span style="text-decoration: line-through; text-decoration-style: double; color: #000000; font-style: italic;" title="redacted">(redacted)</span>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 736f9e35456b9ccf7b7c7b423cb0d9c6b0342f55 Template:Template list 10 215 486 2023-02-26T18:27:36Z Bbbtest 25 +1 wikitext text/x-wiki __NOTOC__ == Utility templates == : ''Category: [[:Category:Utility templates|Utility templates]]'' <section begin=user-utility-templates/> * {{tl|URL}} <section end=user-utility-templates/> == Archive templates == : ''Category: [[:Category:Archive templates|Archive templates]]'' <section begin=user-archive-templates/> * {{tl|Autoarchive/config}} * {{tl|Archives}} * {{tl|Archive list}} * {{tl|Archive header}} * {{tl|Archive box collapsible}} * {{tl|Archive}} * {{tl|Archive2}} * {{tl|Yearly archive list}} <section end=user-archive-templates/> == Maintenance templates == : ''Category: [[:Category:Maintenance templates|Maintenance templates]]'' <section begin=user-maintenance-templates/> * {{tl|Delete}} * {{tl|Db-spam}} * {{tl|Db-vandalism}} * {{tl|Db-test}} * {{tl|Db-copyvio}} * {{tl|Db-attack}} <section end=user-maintenance-templates/> == User notice templates == : ''Category: [[:Category:User notice templates|User notice templates]]'' <section begin=user-notice-templates/> * {{tl|You've got mail}} * {{tl|Welcome}} * {{tl|Blocked}} * {{tl|Blocked talk-revoked-notice}} * {{tl|Unblocked}} * {{tl|Translationadmin granted}} * {{tl|Patroller granted}} <section end=user-notice-templates/> == User warning templates == : ''Category: [[:Category:User warning templates|User warning templates]]'' <section begin=user-warning-templates/> ;Testing * {{tl|Uw-test1}} * {{tl|Uw-test2}} * {{tl|Uw-test3}} * {{tl|Uw-test4}} ;Promotion * {{tl|Uw-advert1}} * {{tl|Uw-advert2}} * {{tl|Uw-advert3}} * {{tl|Uw-advert4}} ;Creation of off-topic pages * {{tl|Uw-create1}} * {{tl|Uw-create2}} * {{tl|Uw-create3}} * {{tl|Uw-create4}} * {{tl|Uw-create4im}} ;Vandalism * {{tl|Uw-vandalism1}} * {{tl|Uw-vandalism2}} * {{tl|Uw-vandalism3}} * {{tl|Uw-vandalism4}} * {{tl|Uw-vandalism4im}} * {{tl|Vandalism1}} * {{tl|Vandalism2}} * {{tl|Vandalism3}} * {{tl|Uw-npa}} * {{tl|Uw-harass}} * {{tl|Uw-sock}} * <section end=user-warning-templates/> == Character-substitution templates == : ''Category: [[:Category:Character-substitution templates|Character-substitution templates]]'' <section begin=character-substitution-templates/> * {{tl|!((}} - {{!((}} * {{tl|))!}} - {{))!}} * {{tl|!-}} - <nowiki>|-</nowiki> * {{tl|1==}} - <nowiki>=</nowiki> * {{tl|@}} - {{@}} * {{tl|void}} * {{tl|\}} - {{\}} * {{tl|Col-3}} * {{tl|Col-begin}} * {{tl|Col-break}} * {{tl|Col-end}} * {{tl|Center}} * {{tl|Sp}} <section end=character-substitution-templates/> == Utility templates == : ''Category: [[:Category:Utility templates|Utility templates]]'' <section begin=utility-templates/> * {{tl|Lorem ipsum}} * {{tl|Error}} * {{tl|Please leave this line alone (sandbox heading)}} * {{tl|Lua}} * {{tl|Yesno}} * {{tl|Whatisit}} * {{tl|Lua}} * {{tl|Flatlist}} * {{tl|Edit filter warning}} * {{tl|Edit}} * {{tl|Editlink}} * {{tl|Editlinktalk}} <section end=utility-templates/> == Other templates == : ''Category: [[:Category:Other templates|Other templates]]'' <section begin=other-templates/> * {{tl|Server}} <section end=other-templates/> == Userpage header templates == : ''Category: [[:Category:Userpage header templates|Userpage header templates]]'' <section begin=userpage-header-templates/> * {{tl|Globally banned}} * {{tl|Locked}} * {{tl|Bot}} <section end=userpage-header-templates/> == Header templates == : ''Category: [[:Category:Header templates|Header templates]]'' <section begin=header-templates/> * {{tl|Global policy}} * {{tl|Header}} * {{tl|Guideline}} * {{tl|Meta policy}} * {{tl|English notice}} * {{tl|Historical}} * {{tl|Policy draft}} * {{tl|WMFGadgets}} <section end=header-templates/> == Link templates == : ''Category: [[:Category:Link templates|Link templates]]'' <section begin=link-templates/> * {{tl|Libera}} - {{Libera|miraheze}} * {{tl|@}} - {{@|no-reply|google.com}} * {{tl|At}} - {{At}} <section end=link-templates/> == Inline talk templates == : ''Category: [[:Category:Inline talk templates|Inline talk templates]]'' <section begin=inline-talk-templates/> * {{tl|ping}} - {{ping|Example}} * {{tl|No ping}} - {{no ping|Example}} * {{tl|Hidden ping}} * {{tl|Edit conflict}} - {{edit conflict}} * {{tl|Pinged}} - {{pinged}} * {{tl|Talk page stalker}} - {{Talk page stalker}} * {{tl|Talk page watcher}} - {{Talk page watcher}} * {{tl|Responding to ping}} - {{Responding to ping}} * {{tl|To}} - {{To|Example}} * {{tl|Not watching}} - {{Not watching}} * {{tl|Non-admin comment}} - {{NACC}} * {{tl|Non-admin closure}} - {{NAC}} * {{tl|redacted}} - {{redacted}} * {{tl|redacted2}} - {{redacted2}} * {{tl|Code}} - {{code|Example text}} * {{tl|Strong}} - {{Strong|Example text}} * {{tl|Serif}} - {{serif|Example text}} * {{tl|Outdent}} - <span style="color:gray">┌───────┘</span> * {{tl|Clear}} * {{tl|Big}} - {{big|Example text}} * {{tl|Small}} - {{small|Example text}} * {{tl|Red}} - {{red|Example text}} * {{tl|Green}} - {{green|Example text}} * {{tl|Cyan}} - {{cyan|Example text}} * {{tl|Dark cyan}} - {{Dark cyan|Example text}} * {{tl|Maroon}} - {{Maroon|Example text}} * {{tl|Color}} - {{color|red|C}}{{color|orange|o}}{{color|yellow|l}}{{color|lime|o}}{{color|green|r}} {{color|cyan|t}}{{color|blue|e}}{{color|purple|x}}{{color|pink|t}} <section end=inline-talk-templates/> == Resolution templates == : ''Category: [[:Category:Resolution templates|Resolution templates]]'' <section begin=resolution-templates/> * {{tl|done}} - {{done}} * {{tl|partly done}} - {{partly done}} * {{tl|resolved}} - {{resolved}} * {{tl|not done}} - {{not done}} * {{tl|doing}} - {{doing}} * {{tl|comment}} - {{comment}} * {{tl|on hold}} - {{on hold}} * {{tl|agree}} - {{agree}} * {{tl|withdrawn}} - {{withdrawn}} * {{tl|working}} - {{working}} * {{tl|idea}} - {{idea}} * {{tl|reviewing}} - {{reviewing}} * {{tl|note}} - {{note}} * {{tl|question}} - {{question}} * {{tl|high priority}} - {{high priority}} * {{tl|thank you}} - {{thank you}} * {{tl|custom resolution}} - {{custom resolution|Earth Western Hemisphere transparent background.png|What on earth?}} <section end=resolution-templates/> == Voting templates == : ''Category: [[:Category:Voting templates|Voting templates]]'' <section begin=voting-templates/> * {{tl|support}} - {{support}} * {{tl|oppose}} - {{oppose}} * {{tl|abstain}} - {{abstain}} * {{tl|neutral}} - {{neutral}} * {{tl|support if}} - {{Support if}} <section end=voting-templates/> == Userboxes == * {{tl|Userbox}} * {{tl|Userbox-2}} * {{tl|Userbox-level}} * {{tl|Userboxtop}} * {{tl|Userboxbreak}} * {{tl|Userboxbottom}} === Global permissions === : ''Category: [[:Category:Global permissions userboxes|Global permissions userboxes]]'' <section begin=global-permissions-userboxes/> {| class="wikitable" |- <noinclude>! Template !! Result |-</noinclude> | {{tl|User CVT}} || {{User CVT|nocat=yes}} |- | {{tl|User global IP block exemption}} || {{User global IP block exemption|nocat=yes}} |- | {{tl|User global sysop}} || {{User global sysop|nocat=yes}} |- | {{tl|User global rollbacker}} || {{User global rollbacker|nocat=yes}} |- | {{tl|User interwiki administrator}} || {{User interwiki administrator|nocat=yes}} |- | {{tl|User steward}} || {{User steward|nocat=yes}} |- | {{tl|User system administrator}} || {{User system administrator|nocat=yes}} |} <section end=global-permissions-userboxes/> === Meta permissions === : ''Category: [[:Category:Meta permissions userboxes|Meta permissions userboxes]]'' <section begin=meta-permissions-userboxes/> {| class="wikitable" |- <noinclude>! Template !! Result |-</noinclude> | {{tl|User administrator}} || {{User administrator|nocat=yes}} |- | {{tl|User autopatrolled}} || {{User autopatrolled|nocat=yes}} |- | {{tl|User autoconfirmed}} || {{User autoconfirmed|nocat=yes}} |- | {{tl|User confirmed}} || {{User confirmed|nocat=yes}} |- | {{tl|User interface administrator}} || {{User interface administrator|nocat=yes}} |- | {{tl|User translation administrator}} || {{User translation administrator|nocat=yes}} |- | {{tl|User wiki creator}} || {{User wiki creator|nocat=yes}} |- | {{tl|User bureaucrat}} || {{User bureaucrat|nocat=yes}} |- | {{tl|User patroller}} || {{User patroller|nocat=yes}} |- | {{tl|User rollbacker}} || {{User rollbacker|nocat=yes}} |- | {{tl|User central notice}} || {{User central notice|nocat=yes}} |} <section end=meta-permissions-userboxes/> === Social media userboxes === : ''Category: [[:Category:Social media userboxes|Social media userboxes]]'' <section begin=social-media-userboxes/> {| class="wikitable" |- <noinclude>! Template !! Result |-</noinclude> | {{tl|User discord}} || {{User discord|nocat=yes}} |- | {{tl|User github}} || {{User github|nocat=yes}} |- | {{tl|User instagram}} || {{User instagram|nocat=yes}} |- | {{tl|User IRC}} || {{User IRC|nocat=yes}} |- | {{tl|User phabricator}} || {{User phabricator|nocat=yes}} |- | {{tl|User twitter}} || {{User twitter|nocat=yes}} |- | {{tl|User wikimedia}} || {{User wikimedia|nocat=yes}} |} <section end=social-media-userboxes/> === Human life userboxes === : ''Category: [[:Category:Human life userboxes|Human life userboxes]]'' <section begin=human-life-userboxes/> {| class="wikitable" |- <noinclude>! Template !! Result |-</noinclude> | {{tl|User adult}} || {{User adult|nocat=yes}} |- | {{tl|User age}} || {{User age|nocat=yes}} |- | {{tl|User male}} || {{User male|nocat=yes}} |- | {{tl|User female}} || {{User female|nocat=yes}} |- | {{tl|User from}} || {{User from|nocat=yes}} |- | {{tl|User in}} || {{User in|nocat=yes}} |} <section end=human-life-userboxes/> === Other userboxes === : ''Category: [[:Category:Other userboxes|Other userboxes]]'' <section begin=other-userboxes/> {| class="wikitable" |- <noinclude>! Template !! Result |-</noinclude> | {{tl|User likes thank button}} || {{User likes thank button|nocat=yes}} |- |} <section end=other-userboxes/> == Infoboxes == <section start=infoboxes/> * {{tl|infobox}} * {{tl|infobox Miraheze user}} * {{tl|simpleboxtop}} * {{tl|simpleboxdata}} * {{tl|simpleboxsection}} <section end=infoboxes/> fbd7fdcdeb179582d6030802ed6d68b02dfb4cde Template:Map caption/doc 10 1732 3270 2023-03-06T14:04:43Z wikipedia>ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ 0 Update table markup to [[WP:HTML5|HTML5]] wikitext text/x-wiki {{Documentation subpage}} <!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE --> <p style="width:100%;">Template intended to simplify adding a standardized and formatted caption below a map indicating the location of something (e.g. a country), possibly referring to the map's main region and optionally also to a shown subregion. Original use within infoboxes (e.g. see articles on [[Template:Countries of Europe|European countries]]). For a complete set of elements of reasonable length, a width of (minimally) 250px (without extra padding or margins) should be available.</p> ===Parameters=== Required parameters shown in '''''bold italics''''' {{Aligned table |cols=3 |class=wikitable |style=font-size:95%; |colstyle=padding-left:0.5em;padding-right:0.5em; |col1style=font-style:italic; |col3align=center |row1header=on| Parameter | Description | Default | countryprefix | {{plainlist|1= * Neither linked nor styled prefix e.g. "the" (for articles named e.g. "United Kingdom", "Czech Republic", "Netherlands"). }} | &ndash; | country |{{plainlist|1= * Only if the country name at the map should not be identical to the article name (e.g. "Metropolitan France"). * <nowiki>Template sets [[...]]</nowiki> (if article or redirect exists). }} | &lt;{{tsp|''article&nbsp;name''}}&gt; | location |{{plainlist|1= * Only if ''colour'' is not used and its default is not appropriate: Description identifying ''country''{{'}}s location (e.g. "circled in inset") * This parameter must never be empty; "none" suppresses it. If passed, ''location_color'' cannot be shown. }} | &ndash; | location_color |{{plainlist|1= * Only if ''description'' is not used: Colour identifying ''country''{{'}}s location; "none" suppresses the default. }} | orange | region |{{plainlist|1= * Name (or equally extremely short description) for approximately the entire area depicted by the map. * <span style{{=}}"visibility:hidden;">special:&nbsp;</span>"<nowiki>[[</nowiki>Antarctica<nowiki>]]</nowiki>" shown as "on [[Antarctica]]", * <span style{{=}}"visibility:hidden;">special:&nbsp;</span>"<nowiki>[[</nowiki>Middle East<nowiki>]]</nowiki>", "<nowiki>[[</nowiki>Arctic Circle<nowiki>]]</nowiki>" or "<nowiki>[[</nowiki>Pacific Ocean<nowiki>]]</nowiki>" shown as "in the ...", * <span style{{=}}"visibility:hidden;">special:&nbsp;</span>versus any other: shown as "in ...", e.g. "<nowiki>[[</nowiki>Africa<nowiki>]]</nowiki>" shown as "in Africa" }} | &ndash; | region_color |{{plainlist|1= * Colour identifying ''region''; "none" suppresses the default. }} | white | subregion |{{plainlist|1= * Subregion indicated within region <span style{{=}}"font-size:87%;">(only if used: aligning both region and subregion lines to the left, else single region line centered as top line)</span> * Must not occur without parameter ''region''. * <span style{{=}}"visibility:hidden;">special:&nbsp;</span>"<nowiki>[[</nowiki>EU<nowiki>]]</nowiki>" or "<nowiki>[[</nowiki>European Union<nowiki>]]</nowiki>" shown as "in the [[European Union]]", * <span style{{=}}"visibility:hidden;">special:&nbsp;</span>versus any other: shown as "in ...", e.g. "the <nowiki>[[</nowiki>Caucasus<nowiki>]]</nowiki>" shown as "in the [[Caucasus]]" }} | &ndash; | subregion_color |{{plainlist|1= * Colour identifying ''subregion''; "none" suppresses showing the default. }} | tan | legend |{{plainlist|1= * Filename of image providing a map legend. }} | &ndash; }}<!--(end Aligned table)--> ; Note : <div style="font-size:95%;line-height:1.35em;font-weight:400;"> If ''country'', ''region'' or ''subregion'' is exactly the name of a page in article space, the template automatically creates a link to it. You can still put a link here manually, using the usual syntax.</div> ===Examples=== {| style="width:100%; border:1px solid #a0a0a0; background-color:#f8f8ff;"<!-- no class formatting other than article space: mustnot show result in any different style here --> |- style="vertical-align:top;text-align:left;" |style="width:50%; font-size:110%;font-weight:bold;"| Code || <span style="font-size:110%;font-weight:bold;">Raw result</span> (in unformatted box, compare to handling in Infobox) |- style="vertical-align:top;" |colspan="2" style="padding-top:.5em; font-size:87%;"|<code style="color:#705000;"><nowiki>{{map caption}}</nowiki></code> |- | || {|style="border:1px solid #000000;" |- |style="padding:0;"|{{map caption}} |} |- style="vertical-align:top;" |colspan="2" style="padding-top:1.5em; font-size:87%; color:#705000;"|<code><nowiki>{{map caption |region=Europe |legend=European location legend en.png}}</nowiki></code> |- | || {|style="border:1px solid #000000;" |- |style="padding:0;"|{{map caption |region=Europe |legend=European location legend en.png}} |} |- style="vertical-align:top;" |colspan="2" style="padding-top:1.5em; font-size:87%; color:#705000;"| <code><nowiki>{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}</nowiki></code> |- | || {|style="border:1px solid #000000;" |- |style="padding:0;"|{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}} |} |- style="vertical-align:top;" |colspan="2" style="padding-top:1.5em; font-size:87%;"| ''&nbsp;Typical sample for an article on a European Union member that needs no "the" before its name, for otherwise identical output:''<br /><code style="color:#705000;"><nowiki>{{map caption |region=Europe |subregion=EU |legend=European location legend en.png}}</nowiki></code> |- | || {|style="border:1px solid #000000;" |- |style="padding:0;|{{map caption |region=Europe |subregion=EU |legend=European location legend en.png}} |} |} {| xclass="toccolours" style="width:100%; margin-top:.5em;border:1px solid #a0a0a0;background-color:#f8f8ff;" <!-- no class formatting other than article space --> |- style="text-align:left;" |'''<span style="font-size:110%;">Infobox usage of code</span> (as intended)''' — in which the alignment, the padding/margins, and font are rendered differently (''this'' template adjusts for ''that'' infobox): |- style="text-align:left;line-height:1.4em;font-size:87%;" |style="white-space:normal;"|'''Sample for article named 'Armenia', about a non-European country'''<br /> <code><nowiki> {{Infobox Country or territory|</nowiki><br /> <nowiki> |common_name = Armenia</nowiki><br /> <nowiki> |image_map = Europe location ARM.png</nowiki><br /> <nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption}}</nowiki></span><br /> ''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br /> <nowiki>}}</nowiki></code><span style="line-height:.9em;"><br /><br /></span>'''Sample for article named 'Belarus', about a non-member of the EU'''<br /> <code><nowiki> {{Infobox Country or territory|</nowiki><br /> <nowiki> |common_name = Belarus</nowiki><br /> <nowiki> |image_map = Europe location BLR.png</nowiki><br /> <nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption |region=Europe |legend=European location legend en.png}}</nowiki></span><br /> ''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br /> <nowiki>}}</nowiki></code><span style="line-height:.9em;"><br /><br /></span> '''Sample for article named 'Netherlands', about a member of the EU'''<br /> <code><nowiki> {{Infobox Country or territory|</nowiki><br /> <nowiki> |common_name = the Netherlands</nowiki><br /> <nowiki> |image_map = EU location NED.png</nowiki><br /> <nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}</nowiki></span><br /> ''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br /> <nowiki>}}</nowiki></code> |- | {| style="background-color:#f8f8ff;" |- |colspan="3" |<span style="font-size:110%;">'''Net result'''</span> — The three simplified samples above, shown here side by side<br /><span style="font-size:110%;visibility:hidden;">'''Net result''' —&nbsp;</span><span style="font-size:87%;">(called here without country parameter, and with placeholder values for population to prevent error messages)</span>: |- style="vertical-align:top;" |{{Infobox country| |common_name = Armenia |image_map = Europe location ARM.png |map_caption = {{map caption}} |capital = <span style="display:none">x</span> |government_type = <span style="display:none">x</span> |official_languages = <span style="display:none">x</span> |area_km2 = 10 |area_sq_mi = <span style="display:none">0</span> |population_density_km2 = 10 |population_density_rank = <span style="display:none">0</span> |population_density_sq_mi = <span style="display:none">0</span> |time_zone = <span style="display:none">x</span> |utc_offset = <span style="display:none">0</span> |cctld = <span style="display:none">x</span> |currency = <span style="display:none">x</span> |currency_code = <span style="display:none">x</span> |calling_code = <span style="display:none">0</span> |footnotes = }} |{{Infobox country| |common_name = Belarus |image_map = Europe location BLR.png |map_caption = {{map caption |region=Europe |legend=European location legend en.png}} |capital = <span style="display:none">x</span> |government_type = <span style="display:none">x</span> |official_languages = <span style="display:none">x</span> |area_km2 = 10 |area_sq_mi = <span style="display:none">0</span> |population_density_km2 = 10 |population_density_rank = <span style="display:none">0</span> |population_density_sq_mi = <span style="display:none">0</span> |time_zone = <span style="display:none">x</span> |utc_offset = <span style="display:none">0</span> |cctld = <span style="display:none">x</span> |currency = <span style="display:none">x</span> |currency_code = <span style="display:none">x</span> |calling_code = <span style="display:none">0</span> |footnotes = }} |{{Infobox country| |common_name = the Netherlands |image_map = EU location NED.png |map_caption = {{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}} |capital = <span style="display:none">x</span> |government_type = <span style="display:none">x</span> |official_languages = <span style="display:none">x</span> |area_km2 = 10 |area_sq_mi = <span style="display:none">0</span> |population_density_km2 = 10 |population_density_rank = <span style="display:none">0</span> |population_density_sq_mi = <span style="display:none">0</span> |time_zone = <span style="display:none">x</span> |utc_offset = <span style="display:none">0</span> |cctld = <span style="display:none">x</span> |currency = <span style="display:none">x</span> |currency_code = <span style="display:none">x</span> |calling_code = <span style="display:none">0</span> |footnotes = }} |} |} <includeonly>{{Sandbox other| | <!-- CATEGORIES BELOW THIS LINE, PLEASE: --> [[Category:Map formatting and function templates]] }}</includeonly> a4d3dff2acaf90414f21b798752523e1efbb574e Template:Infobox organization 10 1154 2480 2023-03-08T06:31:07Z w>Paine Ellsworth 0 per edit request on talk page - include new parameter for [[Research Organization Registry]], ror_id= wikitext text/x-wiki {{Infobox | bodyclass = vcard | bodystyle = {{{bodystyle|}}} | titleclass = fn org | title = {{{name|{{{organization_name|{{{Non-profit_name|{{PAGENAMEBASE}}}}}}}}}}} | subheader = {{#if:{{{full_name|{{{full name|}}}}}}|<div {{#if:{{{full_name_lang|{{{full name lang|}}}}}}|lang="{{{full_name_lang|{{{full name lang|}}}}}}"}}>{{{full_name|{{{full name|}}}}}}</div>}} | subheader2 = {{#if:{{{native_name|{{{native name|}}}}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name|{{{native name}}}}}}{{#if:{{{native_name_lang|}}}|</div>}}}} | imageclass = logo | imagestyle = | image = {{#invoke:InfoboxImage|InfoboxImage |image={{{logo|{{{organization_logo|{{{Non-profit_logo|}}}}}}}}} |size={{{logo_size|}}} |sizedefault=frameless |alt={{{logo_alt|}}} |upright={{{upright|1}}} }} | caption = {{{logo_caption|}}} | image2 = {{#invoke:InfoboxImage|InfoboxImage |image={{{image|}}} |size={{{image_size|{{{imagesize|{{{size|}}}}}}}}} |sizedefault=frameless |upright={{{image_upright|1}}} |alt={{{image_alt|{{{alt|}}}}}} }} | caption2 = {{{caption|}}} | image3 = {{#invoke:InfoboxImage|InfoboxImage |image={{{map|}}} |size={{{map_size|{{{msize|}}}}}} |sizedefault=250px |upright={{{map_upright|}}} |alt={{{map_alt|{{{malt|}}}}}} }} | caption3 = {{{map_caption|{{{mcaption|}}}}}} | image4 = {{#invoke:InfoboxImage|InfoboxImage |image={{{map2|}}} |size={{{map2_size|}}} |sizedefault=250px |upright={{{map2_upright|}}} |alt={{{map2_alt|}}} }} | caption4 = {{{map2_caption|}}} | image5 = {{#if:{{{pushpin_map|{{{map_type|}}}}}}|{{Location map|{{{pushpin_map|{{{map_type}}}}}} | border = infobox | caption = {{#switch:{{{map_caption|}}}|#default={{{map_caption}}}|none=|=Location within {{#invoke:Location map|data|{{{pushpin_map|{{{map_type}}}}}}|name}}}} | float = center | alt = {{{map_alt|}}} | width = {{#if:{{{map_size|}}}|{{{map_size}}}|220}} | relief = {{{pushpin_relief|{{{map_relief|}}}}}} | label = {{{map_dot_label|}}} | coordinates = {{{coordinates|}}} }}}} | labelstyle = padding-right:0.6em;<!--(to ensure some gap between any (long/unwrapped) labels and subsequent data on same line)--> | label1 = Abbreviation | class1 = nickname | data1 = {{{abbreviation|}}} | label2 = Nickname | class2 = nickname | data2 = {{{nickname|}}} | label3 = Pronunciation | data3 = {{#if:{{{pronounce|}}}{{{Pronounce|}}}{{{Pronunciation|}}}{{{pronunciation|}}}{{{pronounce comment|}}} |<!-- -->{{Unbulleted list|1={{{pronounce|}}}{{{Pronounce|}}}{{{Pronunciation|}}}{{{pronunciation|}}}{{{pronounce ref|}}}&#x20;{{{pronounce comment|}}}<!-- -->|2={{{pronounce 2|}}} }}}} | label4 = Named after | data4 = {{{named_after|}}} <!-- | label5 = Motto | class5 = note | data5 = {{{motto|{{{organization_motto|{{{pledge|}}}}}}}}} --> | label6 = Predecessor | data6 = {{{predecessor|}}} | label7 = {{#if:{{{merged_label|}}}|{{{merged_label}}}|Merged&nbsp;into}} | data7 = {{{merged|{{{merged_into|}}}}}} | label8 = Successor | data8 = {{{successor|}}} | label9 = {{#if:{{{formation|}}} |Formation |{{#if:{{{founded_date|{{{founded|}}}}}}|Founded|Established}} }} | class9 = note | data9 = {{if empty |{{{formation|}}} |{{{established|}}} |{{{founded_date|{{{founded|}}}}}} }} | label10 = Founder{{#if:{{{founders|}}}|s}} | data10 = {{#if:{{{founders|}}} |{{{founders}}} |{{{founder|}}} }} | label11 = Founded at | data11 = {{{founding_location|}}} | label12 = {{#if:{{{defunct|}}}|Defunct|Dissolved}} | data12 = {{{defunct|{{{dissolved|{{{dissolved_date|}}}}}}}}} | label13 = Merger&nbsp;of | data13 = {{{merger|}}} | label14 = Type | data14 = {{{type|{{{organization_type|{{{Non-profit_type|}}}}}}}}} | label15 = {{longitem |{{#if:{{{vat_id|}}} |[[VAT identification number|VAT ID no.]] |[[Taxpayer Identification Number|Tax ID no.]]}} }} | data15 = {{#if:{{{vat_id|}}} |{{{vat_id}}} |{{{tax_id|}}} }} | label16 = Registration&nbsp;no. | data16 = {{{registration_id|}}} | label17 = Legal status | data17 = {{{status|}}} | label18 = {{#if:{{{focus|{{{foci|}}}}}} |Focus |Purpose}} | data18 = {{#if:{{{focus|{{{foci|}}}}}} |{{{focus|{{{foci|}}}}}} |{{{purpose|}}} }} | label19 = {{longitem|Professional title}} | data19 = {{{professional_title|}}} | label20 = Headquarters | data20 = {{{headquarters|}}} | label21 = Location | class21 = label | data21 = {{Unbulleted list | 1 = {{comma separated entries | 1 = {{#if:{{{location_city|}}} |<span class="locality">{{{location_city}}}</span>}} | 2 = {{#if:{{{location_country|}}} |<span class="country-name">{{{location_country}}}</span>}} }} | 2 = {{{location|}}} | 3 = {{comma separated entries | 1 = {{#if:{{{location_city2|}}} |<span class="locality">{{{location_city2}}}</span>}} | 2 = {{#if:{{{location_country2|}}} |<span class="country-name">{{{location_country2}}}</span>}} }} | 4 = {{{location2|}}} }} | label22 = Locations | class22 = label | data22 = {{Unbulleted list | 1 = {{comma separated entries | 1 = {{#if:{{{addnl_location_city|}}} |<span class="locality">{{{addnl_location_city}}}</span>}} | 2 = {{#if:{{{addnl_location_country|}}} |<span class="country-name">{{{addnl_location_country}}}</span>}} }} | 2 = {{{addnl_location|{{{additional_location|}}}}}} | 3 = {{comma separated entries | 1 = {{#if:{{{addnl_location_city2|}}} |<span class="locality">{{{addnl_location_city2}}}</span>}} | 2 = {{#if:{{{addnl_location_country2|}}} |<span class="country-name">{{{addnl_location_country2}}}</span>}} }} | 4 = {{{addnl_location2|{{{additional_location2|}}}}}} }} | label23 = Coordinates | data23 = {{{coordinates|{{{coords|}}}}}} | label24 = Origins | data24 = {{{origins|}}} | label25 = {{longitem |{{#if:{{{area_served|}}} |Area served |Region {{#if:{{{region_served|}}}|served}} }} }} | data25 = {{if empty |{{{area_served|}}} |{{{region_served|}}} |{{{region|}}} }} | label26 = Product{{#if:{{{products|}}}|s}} | data26 = {{#if:{{{products|}}} |{{{products}}} |{{{product|}}} }} | label27 = Services | class27 = note | data27 = {{{services|}}} | label28 = Method{{#if:{{{methods|}}}|s}} | data28 = {{#if:{{{methods|}}} |{{{methods}}} |{{{method|}}} }} | label29 = Field{{#if:{{{fields|}}}|s}} | data29 = {{#if:{{{fields|}}} |{{{fields}}} |{{{field|}}} }} | label30 = {{longitem |Members{{#if:{{{num_members|{{{members|}}}}}}||hip}} {{#if:{{{num_members_year|{{{membership_year|}}}}}} |{{nobold|({{{num_members_year|{{{membership_year|}}}}}})}} }} }} | data30 = {{#if:{{{num_members|{{{members|}}}}}} |{{{num_members|{{{members}}}}}} |{{{membership|}}} }} | label31 = {{longitem |Official language{{#if:{{{languages|}}}|s}} }} | data31 = {{#if:{{{languages|}}} |{{{languages}}} |{{{language|}}} }} | label32 = Owner{{#if:{{{owners|}}}|s}} | data32 = {{#if:{{{owners|}}} |{{{owners}}} |{{{owner|}}} }} | label33 = {{longitem|{{#if:{{{gen_sec|}}}|General Secretary|Secretary General}}}} | data33 = {{#if:{{{general|}}} |{{{general}}} |{{#if:{{{gen_sec|}}} |{{{gen_sec}}} |{{{sec_gen|}}} }}}} | label34 = {{#if:{{{leader_title|}}} |{{longitem|{{{leader_title}}}}} |Leader}} | data34 = {{{leader_name|}}} | label35 = {{longitem|{{{leader_title2}}}}} | data35 = {{#if:{{{leader_title2|}}} |{{{leader_name2|}}} }} | label36 = {{longitem|{{{leader_title3}}}}} | data36 = {{#if:{{{leader_title3|}}} |{{{leader_name3|}}} }} | label37 = {{longitem|{{{leader_title4}}}}} | data37 = {{#if:{{{leader_title4|}}} |{{{leader_name4|}}} }} | label38 = {{longitem|[[Board of directors|{{allow wrap|Board&nbsp;of directors}}]]}} | data38 = {{{board_of_directors|}}} | label39 = {{longitem|Key people}} | data39 = {{{key_people|}}} | label40 = {{#if:{{{main_organ|}}} |{{longitem|Main organ}} |Publication}} | data40 = {{#if:{{{main_organ|}}} |{{{main_organ}}} |{{{publication|{{{journal|}}}}}} }} | label41 = {{longitem|Parent organi{{#if:{{{parent_organisation|}}}|s|z}}ation}} | data41 = {{#if:{{{parent_organisation|}}} |{{{parent_organisation}}} |{{{parent_organization|}}} }} | label42 = [[Subsidiary|Subsidiaries]] | data42 = {{#if:{{{subsidiaries|}}} |{{{subsidiaries}}} |{{{subsid|}}} }} | label43 = Secessions | data43 = {{{secessions|}}} | label44 = Affiliations | data44 = {{{affiliations|{{{affiliation|}}}}}} | label45 = [[Research Organization Registry|R.O.R.]] Id | data45 = {{{ror_id|}}} | label46 = {{longitem |Budget {{#if:{{{budget_year|}}} |{{nobold|({{{budget_year}}})}} }} }} | data46 = {{{budget|}}} | label47 = {{longitem |Revenue {{#if:{{{revenue_year|{{{income_year|}}}}}} |{{nobold|({{{revenue_year|{{{income_year|}}}}}})}} }} }} | data47 = {{{revenue|{{{income|}}}}}} | label48 = Disbursements | data48 = {{{disbursed|{{{disbursements|{{{disbursement|}}}}}}}}} | label49 = Expenses {{#if:{{{expenses_year|}}} | {{nobold|({{{expenses_year}}})}} }} | data49 = {{{expenses|{{{spent|{{{expense|}}}}}}}}} | label50 = {{#if:{{{funders|}}}|Funders|Funding}} | data50 = {{{funders|{{{funding|}}}}}} | label51 = [[Financial endowment|Endowment]] {{#if:{{{endowment_year|}}} | {{nobold|({{{endowment_year}}})}} }} | data51 = {{{endowment|}}} | label52 = {{longitem |{{#if:{{{num_staff|}}}{{{staff|}}} |Staff |Employees}} {{#if:{{{num_staff_year|{{{staff_year|{{{num_employees_year|{{{employees_year|}}}}}}}}}}}} |{{nobold|({{{num_staff_year|{{{staff_year|{{{num_employees_year|{{{employees_year|}}}}}}}}}}}})}} }} }} | data52 = {{if empty |{{{num_staff|}}} |{{{staff|}}} |{{{num_employees|}}} |{{{employees|}}} }} | label53 = {{longitem |Volunteers {{#if:{{{num_volunteers_year|{{{volunteers_year|}}}}}} |{{nobold|({{{num_volunteers_year|{{{volunteers_year|}}}}}})}} }} }} | data53 = {{#if:{{{num_volunteers|}}} |{{{num_volunteers}}} |{{{volunteers|}}} }} | label54 = {{longitem |Students {{#if:{{{students_year|}}} |{{nobold|({{{students_year|}}})}} }} }} | data54 = {{{students|}}} | label55 = Award(s) | data55 = {{{awards|}}} | label56 = Website | data56 = {{{website|{{{homepage|}}}}}} | label57 = Remarks | data57 = {{{remarks|}}} | label58 = {{longitem|Formerly called}} | class58 = nickname | data58 = {{if empty |{{{former name|}}} |{{{former_name|}}} |{{{former|}}} |{{{formerly|}}} }} | data99 = {{{module|}}} | belowstyle = border-top:#aaa 1px solid; | below = {{{footnotes|}}} }}<!-- Tracking categories: -->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox organization with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox organization]] with unknown parameter "_VALUE_"|ignoreblank=y| abbreviation | additional_location | additional_location2 | addnl_location | addnl_location_city | addnl_location_city2 | addnl_location_country | addnl_location_country2 | addnl_location2 | affiliation | affiliations | alt | area_served | awards | board_of_directors | bodystyle | budget | budget_year | caption | coordinates | coords | defunct | disbursed | disbursement | disbursements | dissolved | dissolved_date | employees | employees_year | endowment | endowment_year | established | expense | expenses | expenses_year | field | fields | foci | focus | footnotes | formation | former | former name | former_name | formerly | founded | founded_date | founder | founders | founding_location | full name | full name lang | full_name | full_name_lang | funding | funders | gen_sec | general | headquarters | homepage | image | image_alt | image_size | imagesize | image_upright | income | income_year | journal | key_people | language | languages | leader_name | leader_name2 | leader_name3 | leader_name4 | leader_title | leader_title2 | leader_title3 | leader_title4 | location | location_city | location_city2 | location_country | location_country2 | location2 | logo | logo_alt | logo_caption | logo_size | main_organ | malt | map | map dot label | map_alt | map_caption | map_dot_label | map_relief | map_size | map_type | map2 | map2_alt | map2_caption | map2_size | mcaption | members | membership | membership_year | merged | merged_label | merged_into | merger | method | methods | module | motto | msize | name | named_after | native name | native_name | native_name_lang | nickname | Non-profit_logo | Non-profit_name | Non-profit_type | num_employees | num_employees_year | num_members | num_members_year | num_staff | num_staff_year | num_volunteers | num_volunteers_year | organization_logo | organization_motto | organization_name | organization_type | origins | owner | owners | parent_organisation | parent_organization | pledge | predecessor | product | products | professional_title | pronounce | Pronounce | pronounce 2 | pronounce comment | pronounce ref | Pronunciation | pronunciation | publication | purpose | pushpin_map | pushpin_relief | region | region_served | registration_id | remarks | revenue | revenue_year | ror_id | sec_gen | secessions | services | size | spent | staff | staff_year | status | students | students_year | subsid | subsidiaries | successor | tax_id | type | upright | vat_id | volunteers | volunteers_year | website }}<!--Tracking cat for native name lang parameter-->{{main other|{{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}||[[Category:Infoboxes without native name language parameter]]}}}}| }}{{#if:{{{motto|}}}{{{organization_motto|}}}{{{pledge|}}}|{{main other|[[Category:Pages using infobox organization with motto or pledge]]}}| }}<noinclude> {{documentation}} </noinclude> f7a1393fe75f13973ce3a773b65236ba2eb089b5 Template:A note 10 1534 2869 2023-03-09T00:52:55Z w>Terasail 0 Use: [[Template:Respond]] wikitext text/x-wiki {{Respond|info|{{ucfirst:{{{1|Note:}}}}}|alt=information}}<!--template:A note--><noinclude> {{documentation}}</noinclude> adff2fb4923ef39258d4e95e5cf3ccb2e80cd95b Module:Lang/data 828 465 1033 2023-03-09T14:48:18Z wikipedia>Trappist the monk 0 fix; Scribunto text/plain local lang_obj = mw.language.getContentLanguage(); local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag --[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------ primary table of tables that decode: lang -> language tags and names script -> ISO 15924 script tags region -> ISO 3166 region tags variant -> iana registered variant tags suppressed -> map of scripts tags and their associated language tags all of these data come from separate modules that are derived from the IANA language-subtag-registry file key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches the first name. ]] local function key_to_lower (module, src_type) local out = {}; local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data if 'var_sup' == src_type then for k, v in pairs (source) do out[k:lower()] = v; -- for variant and suppressed everything is needed end elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active) for k, v in pairs (source.active) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated) for k, v in pairs (source.deprecated) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end else -- here for all other sources for k, v in pairs (source) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end end return out; end local lang_name_table_t = { lang = key_to_lower ('Module:Language/data/iana languages', 'lang'), lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'), script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'), suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower } --[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >-------------------------------- For internationalization; not used at en.wiki The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal. Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki language list for the local language. Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all. When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens add an appropriate entry to the override table below. Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply spelling differences: bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym dv: IANA: Dhivehi MW: Divehi el: IANA: Modern Greek MW: Greek ht: IANA: Haitian MW: Haitian Creole ky: IANA: Kirghiz MW: Kyrgyz li: IANA: Limburgan MW: Limburgish or: IANA: Oriya MW: Odia os: IANA: Ossetian MW: Ossetic "pa: IANA: Panjabi MW: Punjabi "ps: IANA: Pushto MW: Pashto "to: IANA: Tonga MW: Tongan "ug: IANA: Uighur MW: Uyghur use the override table to override language names that are incorrect for your project To see the list of names that MediaWiki has for your language, enter this in the Debug colsole: =mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all')) (replacing <tag> with the language tag for your language) Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true. ]] local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki -- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all if true == media_wiki_override_enable then local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list if lang_name_table_t.lang[tag] then -- if the tag is in the main list lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki end end end --[[--------------------------< O V E R R I D E >-------------------------------------------------------------- Language codes and names in this table override the BCP47 names in lang_name_table. indexes in this table shall always be lower case ]] local override = { ------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------ ["ab"] = "Abkhaz", -- to match en.wiki article name ["ca-valencia"] = "Valencian", ["cu"] = "Church Slavonic", -- 2nd IANA name; ["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names ["de-ch"] = "Swiss Standard German", ["en-au"] = "Australian English", ["en-ca"] = "Canadian English", ["en-emodeng"] = "Early Modern English", ["en-gb"] = "British English", ["en-ie"] = "Irish English", ["en-in"] = "Indian English", ["en-nz"] = "New Zealand English", ["en-us"] = "American English", ["en-za"] = "South African English", ["fy"] = "West Frisian", -- Western Frisian ["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title ["nl-be"] = "Flemish", -- match MediaWiki ["oc-provenc"] = "Provençal", ["ps"] = "Pashto", -- Pushto ["pt-br"] = "Brazilian Portuguese", -- match MediaWiki ["tw-asante"] = "Asante Twi", ["ug"] = "Uyghur", -- 2nd IANA name; to match en.wiki article name -- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["av"] = "Avar", -- Avaric ["bo"] = "Standard Tibetan", -- Tibetan ["el"] = "Greek", -- Modern Greek -- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa ["ff"] = "Fula", -- Fulah ["ht"] = "Haitian Creole", -- Haitian ["hz"] = "Otjiherero", -- Herero ["ii"] = "Yi", -- Sichuan Yi ["ki"] = "Gikuyu", -- Kikuyu ["kl"] = "Greenlandic", -- Kalaallisut ["ky"] = "Kyrgyz", -- Kirghiz ["lg"] = "Luganda", -- Ganda ["li"] = "Limburgish", -- Limburgan ["mi"] = "Māori", -- Maori ["na"] = "Nauruan", -- Nauru ["nb"] = "Bokmål", -- Norwegian Bokmål ["nd"] = "Northern Ndebele", -- North Ndebele ["nn"] = "Nynorsk", -- Norwegian Nynorsk ["nr"] = "Southern Ndebele", -- South Ndebele ["ny"] = "Chichewa", -- Nyanja ["oj"] = "Ojibwe", -- Ojibwa ["or"] = "Odia", -- Oriya ["pa"] = "Punjabi", -- Panjabi ["rn"] = "Kirundi", -- Rundi ["sl"] = "Slovene", -- Slovenian ["ss"] = "Swazi", -- Swati ["st"] = "Sotho", -- Southern Sotho ["to"] = "Tongan", -- Tonga --<end do-not-edit except to comment out>-- ------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >---------------------------------------------- ["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash) ["arc"] = "Imperial Aramaic (700-300 BCE)", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 'preferred' name ["art"] = "constructed", -- to match en.wiki article; lowercase for category name ["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title ["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title ["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration; ["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat ["bxr"] = "Russian Buryat", -- Russia Buriat; ["bxu"] = "Chinese Buryat", -- China Buriat; ["byr"] = "Yipma", -- Baruya, Yipma ["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic ["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title ["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash) ["frr"] = "North Frisian", -- Northern Frisian ["frs"] = "East Frisian Low Saxon", -- Eastern Frisian ["gsw-fr"] = "Alsatian", -- match MediaWiki ["haa"] = "Hän", -- Han; to match en.wiki article title ["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash) ["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title ["jam"] = "Jamaican Patois", -- Jamaican Creole English ["lij-mc"] = "Monégasque", -- Ligurian as spoken in Monaco ["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo ["mhr"] = "Meadow Mari", -- Eastern Mari ["mid"] = "Modern Mandaic", -- Mandaic ['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope; ["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash) ["mla"] = "Tamambo", -- Malo ['mte'] = "Mono-Alu", -- Mono (Solomon Islands) ['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope; ["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title ["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title ["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash) ["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title ["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text ["nrf-gg"] = "Guernésiais", -- match MediaWiki ["nrf-je"] = "Jèrriais", -- match MediaWiki ["nzi"] = "Nzema", -- Nzima; to match en.wiki article title ["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash) ["orv"] = "Old East Slavic", -- Old Russian ["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article ["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article ["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title ["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name() ["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article ["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title ["stq"] = "Saterland Frisian", -- Saterfriesisch ["und"] = "undetermined", -- capitalization to match existing category ["wrg"] = "Warrongo", -- Warungu ["xal-ru"] = "Kalmyk", -- to match en.wiki article title ["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño ["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title ["zxx"] = "no linguistic content", -- capitalization -- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["ace"] = "Acehnese", -- Achinese ["aec"] = "Sa'idi Arabic", -- Saidi Arabic ["akl"] = "Aklan", -- Aklanon ["alt"] = "Altay", -- Southern Altai ["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache ["bal"] = "Balochi", -- Baluchi -- ["bcl"] = "Central Bicolano", -- Central Bikol ["bin"] = "Edo", -- Bini ["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya ["chg"] = "Chagatay", -- Chagatai ["ckb"] = "Sorani Kurdish", -- Central Kurdish ["cnu"] = "Shenwa", -- Chenoua ["coc"] = "Cocopah", -- Cocopa ["diq"] = "Zazaki", -- Dimli ["fit"] = "Meänkieli", -- Tornedalen Finnish ["fkv"] = "Kven", -- Kven Finnish ["frk"] = "Old Frankish", -- Frankish ["gez"] = "Ge'ez", -- Geez ["gju"] = "Gujari", -- Gujari ["gsw"] = "Alemannic German", -- Swiss German ["gul"] = "Gullah", -- Sea Island Creole English ["hak"] = "Hakka", -- Hakka Chinese ["hbo"] = "Biblical Hebrew", -- Ancient Hebrew ["hnd"] = "Hindko", -- Southern Hindko -- ["ikt"] = "Inuvialuk", -- Inuinnaqtun ["kaa"] = "Karakalpak", -- Kara-Kalpak ["khb"] = "Tai Lü", -- Lü ["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish ["kpo"] = "Kposo", -- Ikposo ["krj"] = "Kinaray-a", -- Kinaray-A ["ktz"] = "Juǀ'hoan", -- Juǀʼhoan ["lez"] = "Lezgian", -- Lezghian ["liv"] = "Livonian", -- Liv ["lng"] = "Lombardic", -- Langobardic ["mia"] = "Miami-Illinois", -- Miami ["miq"] = "Miskito", -- Mískito ["mix"] = "Mixtec", -- Mixtepec Mixtec ["mni"] = "Meitei", -- Manipuri ["mrj"] = "Hill Mari", -- Western Mari ["mww"] = "White Hmong", -- Hmong Daw ["nds-nl"] = "Dutch Low Saxon", -- Low German -- ["new"] = "Nepal Bhasa", -- Newari ["nso"] = "Northern Sotho", -- Pedi -- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari ["ood"] = "O'odham", -- Tohono O'odham ["otk"] = "Old Turkic", -- Old Turkish ["pal"] = "Middle Persian", -- Pahlavi ["pam"] = "Kapampangan", -- Pampanga ["phr"] = "Potwari", -- Pahari-Potwari ["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit -- ["pnb"] = "Punjabi", -- Western Panjabi ["psu"] = "Shauraseni", -- Sauraseni Prākrit ["rap"] = "Rapa Nui", -- Rapanui ["rar"] = "Cook Islands Māori", -- Rarotongan ["rmu"] = "Scandoromani", -- Tavringer Romani ["rom"] = "Romani", -- Romany ["rup"] = "Aromanian", -- Macedo-Romanian ["ryu"] = "Okinawan", -- Central Okinawan ["sdc"] = "Sassarese", -- Sassarese Sardinian ["sdn"] = "Gallurese", -- Gallurese Sardinian ["shp"] = "Shipibo", -- Shipibo-Conibo ["src"] = "Logudorese", -- Logudorese Sardinian ["sro"] = "Campidanese", -- Campidanese Sardinian ["tkl"] = "Tokelauan", -- Tokelau ["tvl"] = "Tuvaluan", -- Tuvalu ["tyv"] = "Tuvan", -- Tuvinian ["vls"] = "West Flemish", -- Vlaams ["wep"] = "Westphalian", -- Westphalien ["xal"] = "Oirat", -- Kalmyk ["xcl"] = "Old Armenian", -- Classical Armenian ["yua"] = "Yucatec Maya", -- Yucateco --<end do-not-edit except to comment out>-- ------------------------------< P R I V A T E _ U S E _ T A G S >---------------------------------------------- ["akk-x-latbabyl"] = "Late Babylonian", ["akk-x-midassyr"] = "Middle Assyrian Akkadian", ["akk-x-midbabyl"] = "Middle Babylonian Akkadian", ["akk-x-neoassyr"] = "Neo-Assyrian Akkadian", ["akk-x-neobabyl"] = "Neo-Babylonian Akkadian", ["akk-x-old"] = "Old Akkadian", ["akk-x-oldassyr"] = "Old Assyrian Akkadian", ["akk-x-oldbabyl"] = "Old Babylonian Akkadian", ["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages ["ca-x-old"] = "Old Catalan", ["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages ["egy-x-demotic"] = "Demotic Egyptian", ["egy-x-late"] = "Late Egyptian", ["egy-x-middle"] = "Middle Egyptian", ["egy-x-old"] = "Old Egyptian", ["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages ["gmw-x-ecg"] = "East Central German", ["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre ["grc-x-attic"] = "Attic Greek", ["grc-x-biblical"] = "Biblical Greek", ["grc-x-byzant"] = "Byzantine Greek", ["grc-x-classic"] = "Classical Greek", ["grc-x-doric"] = "Doric Greek", ["grc-x-hellen"] = "Hellenistic Greek", ["grc-x-ionic"] = "Ionic Greek", ["grc-x-koine"] = "Koinē Greek", ["grc-x-medieval"] = "Medieval Greek", ["grc-x-patris"] = "Patristic Greek", ["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages ["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages ["ine-x-proto"] = "Proto-Indo-European", ["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages ["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages ["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there ["la-x-medieval"] = "Medieval Latin", ["la-x-new"] = "New Latin", ["lmo-x-milanese"] = "Milanese", -- lmo in IANA is Lombard; Milanese is a dialect ["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages ["prg-x-old"] = "Old Prussian", ["sem-x-ammonite"] = "Ammonite", ["sem-x-aramaic"] = "Aramaic", ["sem-x-canaan"] = "Canaanite languages", ["sem-x-dumaitic"] = "Dumaitic", ["sem-x-egurage"] = "Eastern Gurage", ["sem-x-hatran"] = "Hatran Aramaic", ["sem-x-oldsoara"] = "Old South Arabian", ["sem-x-palmyren"] = "Palmyrene Aramaic", ["sem-x-proto"] = "Proto-Semitic", ["sem-x-taymanit"] = "Taymanitic", ["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages ["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai ["yuf-x-wal"] = "Walapai", ["yuf-x-yav"] = "Yavapai", } --[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------ for those rare occasions when article titles don't fit with the normal '<language name>-language', this table maps language code to article title. Use of this table should be avoided and the use of redirects preferred as that is the long-standing method of handling article names that don't fit with the normal pattern ]] local article_name = { ['kue'] = "Kuman language (New Guinea)", -- Kuman (Papua New Guinea); to avoid Kuman dab page ["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab ['mbo'] = "Mbo language (Cameroon)", -- Mbo (Cameroon) ['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages ['mnr'] = "Mono language (California)", -- Mono (USA) ['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon) ['qwm'] = "Kuman (Russia)", -- Kuman (Russia); to avoid Kuman dab page ["snq"] = "Sangu language (Gabon)", -- Sangu (Gabon) ["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab ["zmw"] = "Mbo language (Congo)", -- Mbo (Democratic Republic of Congo) } --[=[-------------------------< R T L _ S C R I P T S >-------------------------------------------------------- ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]] last update to this list: 2017-12-24 ]=] local rtl_scripts = { 'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr', 'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb', 'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg', 'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole', }; --[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------ This is a table of tables of transliteration standards and the language codes or language scripts that apply to those standards. This table is used to create the tool-tip text associated with the transliterated text displayed by some of the {{lang-??}} templates. These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for the cases when no |std= parameter value is provided. ]] local translit_title_table = { ['ahl'] = { ['default'] = 'Academy of the Hebrew Language transliteration', }, ['ala'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['ala-lc'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['batr'] = { ['default'] = 'Bikdash Arabic Transliteration Rules', }, ['bgn/pcgn'] = { ['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration', }, ['din'] = { ['ar'] = 'DIN 31635 Arabic', ['fa'] = 'DIN 31635 Arabic', ['ku'] = 'DIN 31635 Arabic', ['ps'] = 'DIN 31635 Arabic', ['tg'] = 'DIN 31635 Arabic', ['ug'] = 'DIN 31635 Arabic', ['ur'] = 'DIN 31635 Arabic', ['arab'] = 'DIN 31635 Arabic', ['default'] = 'DIN transliteration', }, ['eae'] = { ['default'] = 'Encyclopaedia Aethiopica transliteration', }, ['hepburn'] = { ['default'] = 'Hepburn transliteration', }, ['hunterian'] = { ['default'] = 'Hunterian transliteration', }, ['iast'] = { ['default'] = 'International Alphabet of Sanskrit transliteration', }, ['iso'] = { -- when a transliteration standard is supplied ['ab'] = 'ISO 9 Cyrillic', ['ba'] = 'ISO 9 Cyrillic', ['be'] = 'ISO 9 Cyrillic', ['bg'] = 'ISO 9 Cyrillic', ['kk'] = 'ISO 9 Cyrillic', ['ky'] = 'ISO 9 Cyrillic', ['mn'] = 'ISO 9 Cyrillic', ['ru'] = 'ISO 9 Cyrillic', ['tg'] = 'ISO 9 Cyrillic', ['uk'] = 'ISO 9 Cyrillic', ['bua'] = 'ISO 9 Cyrillic', ['sah'] = 'ISO 9 Cyrillic', ['tut'] = 'ISO 9 Cyrillic', ['xal'] = 'ISO 9 Cyrillic', ['cyrl'] = 'ISO 9 Cyrillic', ['ar'] = 'ISO 233 Arabic', ['ku'] = 'ISO 233 Arabic', ['ps'] = 'ISO 233 Arabic', ['ug'] = 'ISO 233 Arabic', ['ur'] = 'ISO 233 Arabic', ['arab'] = 'ISO 233 Arabic', ['he'] = 'ISO 259 Hebrew', ['yi'] = 'ISO 259 Hebrew', ['hebr'] = 'ISO 259 Hebrew', ['el'] = 'ISO 843 Greek', ['grc'] = 'ISO 843 Greek', ['ja'] = 'ISO 3602 Japanese', ['hira'] = 'ISO 3602 Japanese', ['hrkt'] = 'ISO 3602 Japanese', ['jpan'] = 'ISO 3602 Japanese', ['kana'] = 'ISO 3602 Japanese', ['zh'] = 'ISO 7098 Chinese', ['chi'] = 'ISO 7098 Chinese', ['pny'] = 'ISO 7098 Chinese', ['zho'] = 'ISO 7098 Chinese', -- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani? ['hans'] = 'ISO 7098 Chinese', ['hant'] = 'ISO 7098 Chinese', ['ka'] = 'ISO 9984 Georgian', ['kat'] = 'ISO 9984 Georgian', ['arm'] = 'ISO 9985 Armenian', ['hy'] = 'ISO 9985 Armenian', ['th'] = 'ISO 11940 Thai', ['tha'] = 'ISO 11940 Thai', ['ko'] = 'ISO 11941 Korean', ['kor'] = 'ISO 11941 Korean', ['awa'] = 'ISO 15919 Indic', ['bho'] = 'ISO 15919 Indic', ['bn'] = 'ISO 15919 Indic', ['bra'] = 'ISO 15919 Indic', ['doi'] = 'ISO 15919 Indic', ['dra'] = 'ISO 15919 Indic', ['gon'] = 'ISO 15919 Indic', ['gu'] = 'ISO 15919 Indic', ['hi'] = 'ISO 15919 Indic', ['hno'] = 'ISO 15919 Indic', ['inc'] = 'ISO 15919 Indic', ['kn'] = 'ISO 15919 Indic', ['kok'] = 'ISO 15919 Indic', ['ks'] = 'ISO 15919 Indic', ['mag'] = 'ISO 15919 Indic', ['mai'] = 'ISO 15919 Indic', ['ml'] = 'ISO 15919 Indic', ['mr'] = 'ISO 15919 Indic', ['ne'] = 'ISO 15919 Indic', ['new'] = 'ISO 15919 Indic', ['or'] = 'ISO 15919 Indic', ['pa'] = 'ISO 15919 Indic', ['pnb'] = 'ISO 15919 Indic', ['raj'] = 'ISO 15919 Indic', ['sa'] = 'ISO 15919 Indic', ['sat'] = 'ISO 15919 Indic', ['sd'] = 'ISO 15919 Indic', ['si'] = 'ISO 15919 Indic', ['skr'] = 'ISO 15919 Indic', ['ta'] = 'ISO 15919 Indic', ['tcy'] = 'ISO 15919 Indic', ['te'] = 'ISO 15919 Indic', ['beng'] = 'ISO 15919 Indic', ['brah'] = 'ISO 15919 Indic', ['deva'] = 'ISO 15919 Indic', ['gujr'] = 'ISO 15919 Indic', ['guru'] = 'ISO 15919 Indic', ['knda'] = 'ISO 15919 Indic', ['mlym'] = 'ISO 15919 Indic', ['orya'] = 'ISO 15919 Indic', ['sinh'] = 'ISO 15919 Indic', ['taml'] = 'ISO 15919 Indic', ['telu'] = 'ISO 15919 Indic', ['default'] = 'ISO transliteration', }, ['jyutping'] = { ['default'] = 'Jyutping transliteration', }, ['mlcts'] = { ['default'] = 'Myanmar Language Commission Transcription System', }, ['mr'] = { ['default'] = 'McCune–Reischauer transliteration', }, ['nihon-shiki'] = { ['default'] = 'Nihon-shiki transliteration', }, ['no_std'] = { -- when no transliteration standard is supplied ['akk'] = 'Semitic transliteration', ['sem'] = 'Semitic transliteration', ['phnx'] = 'Semitic transliteration', ['xsux'] = 'Cuneiform transliteration', }, ['pinyin'] = { ['default'] = 'Pinyin transliteration', }, ['rr'] = { ['default'] = 'Revised Romanization of Korean transliteration', }, ['rtgs'] = { ['default'] = 'Royal Thai General System of Transcription', }, ['satts'] = { ['default'] = 'Standard Arabic Technical Transliteration System transliteration', }, ['scientific'] = { ['default'] = 'scientific transliteration', }, ['ukrainian'] = { ['default'] = 'Ukrainian National system of romanization', }, ['ungegn'] = { ['default'] = 'United Nations Group of Experts on Geographical Names transliteration', }, ['wadegile'] = { ['default'] = 'Wade–Giles transliteration', }, ['wehr'] = { ['default'] = 'Hans Wehr transliteration', }, }; return { this_wiki_lang_tag = this_wiki_lang_tag, this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction article_name = article_name, lang_name_table = lang_name_table_t, override = override, rtl_scripts = rtl_scripts, special_tags_table = special_tags_table, translit_title_table = translit_title_table, }; 44981b3b66900e816590946e3e049c421ebecc80 Template:Respond 10 1537 2872 2023-03-10T02:10:00Z w>Terasail 0 Add safesubst wikitext text/x-wiki <includeonly>[[File:{{{{{|safesubst:}}}#switch:{{{1|{{{icon|}}}}}} |blackcheck = Black check.svg |bluebrokenplus = Symbol unsupport2 vote.svg |bluecheck2 = Cornflower blue check.svg |bluecheck = Artículo bueno-blue.svg |blueclock = Pictogram voting wait blue.svg |blueplus = Symbol support2 vote.svg |deferred = Symbol deferred.svg |greencheck2 = Yes check.svg |greencheck = Symbol confirmed.svg |greenclock = Pictogram voting wait green.svg |greenplus = Symbol support vote.svg |greybrokenplus = Symbol unsupport vote.svg |greyexclamation = Pictogram voting comment.svg |info=Symbol information vote.svg |minus = Symbol declined.svg |neutral = Symbol neutral vote.svg |orangeclock = Pictogram voting wait orange.svg |orangeexclamation = Ambox important.svg |redexclamation = Ambox important red.svg |pinkclock = Pictogram voting wait pink.svg |question2 = Symbol question.svg |question = Pictogram voting question.svg |wait = Symbol_wait.svg |xmark2 = X mark.svg |xmark = Symbol unrelated.svg |yellowcheck = Yellow check.svg |yellowclock = Pictogram voting wait.svg |{{{1|{{{icon|Pictogram voting question.svg}}}}}}}}|{{{size|18px}}}|alt={{{alt|}}}]]&nbsp;'''{{{2|{{{text|Response}}}}}}'''</includeonly><noinclude> {{Documentation}} </noinclude> b11f14454f435e825639a46c4fe356254a552b63 Module:Authority control/doc 828 1082 2362 2023-03-13T18:21:48Z wikipedia>MSGJ 0 update wikitext text/x-wiki {{High-risk}} {{Module rating|protected}} {{Authority control/related}} {{Lua|Module:Navbox|Module:ResolveEntityId}} This module contains the code for the {{T|Authority control}} template. Please see [[Template:Authority control/doc]]. <includeonly>{{sandbox other|| [[Category:Modules using data from Wikidata]] [[Category:Wikipedia authority control]] }}</includeonly> 7b92fcf75d5208e71e4bbc4dd06b8171884722e4 Module:Shortcut/styles.css 828 155 359 2023-03-14T15:53:59Z wikipedia>Izno 0 Undid revision 1144571295 by [[Special:Contributions/TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) I'm sorry, that's not what we discussed or agreed to sanitized-css text/css /* {{pp-template}} */ .module-shortcutboxplain { float: right; margin: 0 0 0 1em; border: 1px solid #aaa; background: #fff; padding: 0.3em 0.6em 0.2em 0.6em; text-align: center; font-size: 85%; } .module-shortcutboxleft { float: left; margin: 0 1em 0 0; } .module-shortcutlist { display: inline-block; border-bottom: 1px solid #aaa; margin-bottom: 0.2em; } .module-shortcutboxplain ul { font-weight: bold; } .module-shortcutanchordiv { position: relative; top: -3em; } li .module-shortcutanchordiv { float: right; /* IE/Edge in list items */ } .mbox-imageright .module-shortcutboxplain { padding: 0.4em 1em 0.4em 1em; line-height: 1.3; margin: 0; } ccf3877e4b14726147d3b1d8a297fbecacdb2cf8 Module:Sidebar/configuration 828 43 81 2023-03-14T22:32:24Z wikipedia>Izno 0 add hlist and plainlist_templatestyles keys Scribunto text/plain return { i18n = { child_yes = 'yes', float_none = 'none', float_left = 'left', wrap_true = 'true', navbar_none = 'none', navbar_off = 'off', default_list_title = 'List', title_not_to_add_navbar = 'Template:Sidebar', collapse_title_not_to_add_navbar = 'Template:Sidebar with collapsible lists', templatestyles = 'Module:Sidebar/styles.css', hlist_templatestyles = 'Hlist/styles.css', plainlist_templatestyles = 'Plainlist/styles.css', category = { child = '[[Category:Pages using sidebar with the child parameter]]', conversion = '[[Category:Sidebars with styles needing conversion]]' }, pattern = { collapse_sandbox = '/sandbox$', sandbox = '/sandbox$', subgroup = 'sidebar%-subgroup', style_conversion = 'style$', uncategorized_conversion_titles = { '/[Ss]andbox', '/[Tt]estcases', '/[Dd]oc$' } }, class = { sidebar = 'sidebar', subgroup = 'sidebar-subgroup', collapse = 'sidebar-collapse', float_none = 'sidebar-none', float_left = 'sidebar-left', wraplinks = 'nowraplinks', outer_title = 'sidebar-outer-title', top_image = 'sidebar-top-image', top_caption = 'sidebar-top-caption', pretitle = 'sidebar-pretitle', pretitle_with_top_image = 'sidebar-pretitle-with-top-image', title = 'sidebar-title', title_with_pretitle = 'sidebar-title-with-pretitle', image = 'sidebar-image', caption = 'sidebar-caption', above = 'sidebar-above', heading = 'sidebar-heading', content = 'sidebar-content', content_with_subgroup = 'sidebar-content-with-subgroup', below = 'sidebar-below', navbar = 'sidebar-navbar', list = 'sidebar-list', list_title = 'sidebar-list-title', list_title_centered = 'sidebar-list-title-c', list_content = 'sidebar-list-content' } } } dc2a980ac2162a898f7c21e6d6ba7e994dfeb315 Module:Sidebar 828 42 79 2023-03-14T22:35:53Z wikipedia>Izno 0 move these items to config, discovered during work at meta Scribunto text/plain require('strict') local cfg = mw.loadData('Module:Sidebar/configuration') local p = {} local getArgs = require('Module:Arguments').getArgs --[[ Categorizes calling templates and modules with a 'style' parameter of any sort for tracking to convert to TemplateStyles. TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module. TODO would probably want to remove /log and /archive as CS1 does ]] local function categorizeTemplatesWithInlineStyles(args) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 and title.namespace ~= 828 then return '' end for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do if title.text:match(pattern) then return '' end end for key, _ in pairs(args) do if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then return cfg.i18n.category.conversion end end end --[[ For compatibility with the original {{sidebar with collapsible lists}} implementation, which passed some parameters through {{#if}} to trim their whitespace. This also triggered the automatic newline behavior. ]] -- See ([[meta:Help:Newlines and spaces#Automatic newline]]) local function trimAndAddAutomaticNewline(s) s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1") if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then return '\n' .. s else return s end end --[[ Finds whether a sidebar has a subgroup sidebar. ]] local function hasSubgroup(s) if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then return true else return false end end local function has_navbar(navbar_mode, sidebar_name) return navbar_mode ~= cfg.i18n.navbar_none and navbar_mode ~= cfg.i18n.navbar_off and ( sidebar_name or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~= cfg.i18n.title_not_to_add_navbar ) end local function has_list_class(args, htmlclass) local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } for arg, value in pairs(args) do if type(arg) == 'string' and mw.ustring.find(arg, 'class') then for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then return true end end end end return false end -- there are a lot of list classes in the wild, so we add their TemplateStyles local function add_list_styles(args) local frame = mw.getCurrentFrame() local function add_list_templatestyles(htmlclass, templatestyles) if has_list_class(args, htmlclass) then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local plainlist_styles = add_list_templatestyles('plainlist', cfg.i18n.plainlist_templatestyles) local hlist_styles = add_list_templatestyles('hlist', cfg.i18n.hlist_templatestyles) -- a second workaround for [[phab:T303378]] -- when that issue is fixed, we can actually use has_navbar not to emit the -- tag here if we want if has_navbar(args.navbar, args.name) and hlist_styles == '' then hlist_styles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.i18n.hlist_templatestyles} } end -- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note] return hlist_styles .. plainlist_styles end -- work around [[phab:T303378]] -- for each arg: find all the templatestyles strip markers, insert them into a -- table. then remove all templatestyles markers from the arg local function move_hiding_templatestyles(args) local gfind = string.gfind local gsub = string.gsub local templatestyles_markers = {} local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)' for k, arg in pairs(args) do for marker in gfind(arg, strip_marker_pattern) do table.insert(templatestyles_markers, marker) end args[k] = gsub(arg, strip_marker_pattern, '') end return templatestyles_markers end --[[ Main sidebar function. Takes the frame, args, and an optional collapsibleClass. The collapsibleClass is and should be used only for sidebars with collapsible lists, as in p.collapsible. ]] function p.sidebar(frame, args, collapsibleClass) if not args then args = getArgs(frame) end local hiding_templatestyles = table.concat(move_hiding_templatestyles(args)) local root = mw.html.create() local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes root = root:tag('table') if not child then root :addClass(cfg.i18n.class.sidebar) -- force collapsibleclass to be sidebar-collapse otherwise output nothing :addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil) :addClass('nomobile') :addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil) :addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil) :addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil) :addClass(args.bodyclass or args.class) :css('width', args.width or nil) :cssText(args.bodystyle or args.style) if args.outertitle then root :tag('caption') :addClass(cfg.i18n.class.outer_title) :addClass(args.outertitleclass) :cssText(args.outertitlestyle) :wikitext(args.outertitle) end if args.topimage then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.top_image) :addClass(args.topimageclass) :cssText(args.topimagestyle) :wikitext(args.topimage) if args.topcaption then imageCell :tag('div') :addClass(cfg.i18n.class.top_caption) :cssText(args.topcaptionstyle) :wikitext(args.topcaption) end end if args.pretitle then root :tag('tr') :tag('td') :addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image or cfg.i18n.class.pretitle) :addClass(args.pretitleclass) :cssText(args.basestyle) :cssText(args.pretitlestyle) :wikitext(args.pretitle) end else root :addClass(cfg.i18n.class.subgroup) :addClass(args.bodyclass or args.class) :cssText(args.bodystyle or args.style) end if args.title then if child then root :wikitext(args.title) else root :tag('tr') :tag('th') :addClass(args.pretitle and cfg.i18n.class.title_with_pretitle or cfg.i18n.class.title) :addClass(args.titleclass) :cssText(args.basestyle) :cssText(args.titlestyle) :wikitext(args.title) end end if args.image then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.image) :addClass(args.imageclass) :cssText(args.imagestyle) :wikitext(args.image) if args.caption then imageCell :tag('div') :addClass(cfg.i18n.class.caption) :cssText(args.captionstyle) :wikitext(args.caption) end end if args.above then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.above) :addClass(args.aboveclass) :cssText(args.abovestyle) :newline() -- newline required for bullet-points to work :wikitext(args.above) end local rowNums = {} for k, v in pairs(args) do k = '' .. k local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$') if num then table.insert(rowNums, tonumber(num)) end end table.sort(rowNums) -- remove duplicates from the list (e.g. 3 will be duplicated if both heading3 -- and content3 are specified) for i = #rowNums, 1, -1 do if rowNums[i] == rowNums[i - 1] then table.remove(rowNums, i) end end for i, num in ipairs(rowNums) do local heading = args['heading' .. num] if heading then root :tag('tr') :tag('th') :addClass(cfg.i18n.class.heading) :addClass(args.headingclass) :addClass(args['heading' .. num .. 'class']) :cssText(args.basestyle) :cssText(args.headingstyle) :cssText(args['heading' .. num .. 'style']) :newline() :wikitext(heading) end local content = args['content' .. num] if content then root :tag('tr') :tag('td') :addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup or cfg.i18n.class.content) :addClass(args.contentclass) :addClass(args['content' .. num .. 'class']) :cssText(args.contentstyle) :cssText(args['content' .. num .. 'style']) :newline() :wikitext(content) :done() -- Without a linebreak after the </td>, a nested list like -- "* {{hlist| ...}}" doesn't parse correctly. :newline() end end if args.below then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.below) :addClass(args.belowclass) :cssText(args.belowstyle) :newline() :wikitext(args.below) end if not child and has_navbar(args.navbar, args.name) then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.navbar) :cssText(args.navbarstyle) :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, fontstyle = args.navbarfontstyle }) end local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.i18n.templatestyles } } local templatestyles = '' if args['templatestyles'] and args['templatestyles'] ~= '' then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] and args['child templatestyles'] ~= '' then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ add_list_styles(args), -- see [hlist_note] above about ordering base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles, hiding_templatestyles, tostring(root), (child and cfg.i18n.category.child or ''), categorizeTemplatesWithInlineStyles(args) }) end local function list_title(args, is_centered_list_titles, num) local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title'] or cfg.i18n.default_list_title) local title if is_centered_list_titles then -- collapsible can be finicky, so provide some CSS/HTML to support title = mw.html.create('div') :addClass(cfg.i18n.class.list_title_centered) :wikitext(title_text) else title = mw.html.create() :wikitext(title_text) end local title_container = mw.html.create('div') :addClass(cfg.i18n.class.list_title) -- don't /need/ a listnumtitleclass because you can do -- .templateclass .listnumclass .sidebar-list-title :addClass(args.listtitleclass) :cssText(args.basestyle) :cssText(args.listtitlestyle) :cssText(args['list' .. num .. 'titlestyle']) :node(title) :done() return title_container end --[[ Main entry point for sidebar with collapsible lists. Does the work of creating the collapsible lists themselves and including them into the args. ]] function p.collapsible(frame) local args = getArgs(frame) if not args.name and frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') == cfg.i18n.collapse_title_not_to_add_navbar then args.navbar = cfg.i18n.navbar_none end local contentArgs = {} local is_centered_list_titles = false if args['centered list titles'] and args['centered list titles'] ~= '' then is_centered_list_titles = true end for k, v in pairs(args) do local num = string.match(k, '^list(%d+)$') if num then local expand = args.expanded and (args.expanded == 'all' or args.expanded == args['list' .. num .. 'name']) local row = mw.html.create('div') row :addClass(cfg.i18n.class.list) :addClass('mw-collapsible') :addClass((not expand) and 'mw-collapsed' or nil) :addClass(args['list' .. num .. 'class']) :cssText(args.listframestyle) :cssText(args['list' .. num .. 'framestyle']) :node(list_title(args, is_centered_list_titles, num)) :tag('div') :addClass(cfg.i18n.class.list_content) :addClass('mw-collapsible-content') -- don't /need/ a listnumstyleclass because you can do -- .templatename .listnumclass .sidebar-list :addClass(args.listclass) :cssText(args.liststyle) :cssText(args['list' .. num .. 'style']) :wikitext(trimAndAddAutomaticNewline(args['list' .. num])) contentArgs['content' .. num] = tostring(row) end end for k, v in pairs(contentArgs) do args[k] = v end return p.sidebar(frame, args, cfg.i18n.class.collapse) end return p 71fe765846593e025ca2f94371315e9dbb5bb4d2 Module:Find sources/config 828 1030 2258 2023-03-16T03:37:43Z wikipedia>Trialpears 0 Changed protection settings for "[[Module:Find sources/config]]": [[WP:High-risk templates|Highly visible template]] Lots more transclusions due to inclusion in Talk header a year ago. ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain -- Configuration data for [[Module:Find sources]]. return { -- Define the error message and category to be used if the module is used in -- the main namespace and the template config doesn't set the -- isUsedInMainspace key to true. The category is optional; if it is not -- wanted, it can be removed. ['namespace-error'] = 'Error: Please do not use this template in articles.', ['namespace-error-category'] = 'Pages with templates in the wrong namespace', -- The separator to be used if no separator is specified in the template -- config. ['default-separator'] = mw.message.new('Dot-separator'):plain() } 412ea800b842be74cd74e8289e346e8b30b1df91 Module:Mapframe 828 1426 2761 2023-03-21T11:20:30Z Uzume 8 strict Scribunto text/plain -- Note: Originally written on English Wikipedia at https://en.wikipedia.org/wiki/Module:Mapframe --[[---------------------------------------------------------------------------- ##### Localisation (L10n) settings ##### Replace values in quotes ("") with localised values ----------------------------------------------------------------------------]]-- local L10n = {} -- Modue dependencies local transcluder -- local copy of https://www.mediawiki.org/wiki/Module:Transcluder loaded lazily -- "strict" should not be used, at least until all other modules which require this module are not using globals. -- Template parameter names (unnumbered versions only) -- Specify each as either a single string, or a table of strings (aliases) -- Aliases are checked left-to-right, i.e. `{ "one", "two" }` is equivalent to using `{{{one| {{{two|}}} }}}` in a template L10n.para = { display = "display", type = "type", id = { "id", "ids" }, from = "from", raw = "raw", title = "title", description = "description", strokeColor = { "stroke-color", "stroke-colour" }, strokeWidth = "stroke-width", strokeOpacity = "stroke-opacity", fill = "fill", fillOpacity = "fill-opacity", coord = "coord", marker = "marker", markerColor = { "marker-color", "marker-colour" }, markerSize = "marker-size", radius = { "radius", "radius_m" }, radiusKm = "radius_km", radiusFt = "radius_ft", radiusMi = "radius_mi", edges = "edges", text = "text", icon = "icon", zoom = "zoom", frame = "frame", plain = "plain", frameWidth = "frame-width", frameHeight = "frame-height", frameCoordinates = { "frame-coordinates", "frame-coord" }, frameLatitude = { "frame-lat", "frame-latitude" }, frameLongitude = { "frame-long", "frame-longitude" }, frameAlign = "frame-align", switch = "switch", overlay = "overlay", overlayBorder = "overlay-border", overlayHorizontalAlignment = "overlay-horizontal-alignment", overlayVerticalAlignment = "overlay-vertical-alignment", overlayHorizontalOffset = "overlay-horizontal-offset", overlayVerticalOffset = "overlay-vertical-offset" } -- Names of other templates this module can extract coordinates from L10n.template = { coord = { -- The coord template, as well as templates with output that contains {{coord}} "Coord", "Coord/sandbox", "NRHP row", "NRHP row/sandbox", "WikidataCoord", "WikidataCoord/sandbox", "Wikidatacoord", "Wikidata coord" } } -- Error messages L10n.error = { badDisplayPara = "Invalid display parameter", noCoords = "Coordinates must be specified on Wikidata or in |" .. ( type(L10n.para.coord)== 'table' and L10n.para.coord[1] or L10n.para.coord ) .. "=", wikidataCoords = "Coordinates not found on Wikidata", noCircleCoords = "Circle centre coordinates must be specified, or available via Wikidata", negativeRadius = "Circle radius must be a positive number", noRadius = "Circle radius must be specified", negativeEdges = "Circle edges must be a positive number", noSwitchPara = "Found only one switch value in |" .. ( type(L10n.para.switch)== 'table' and L10n.para.switch[1] or L10n.para.switch ) .. "=", oneSwitchLabel = "Found only one label in |" .. ( type(L10n.para.switch)== 'table' and L10n.para.switch[1] or L10n.para.switch ) .. "=", noSwitchLists = "At least one parameter must have a SWITCH: list", switchMismatches = "All SWITCH: lists must have the same number of values", -- "%s" and "%d" tokens will be replaced with strings and numbers when used oneSwitchValue = "Found only one switch value in |%s=", fewerSwitchLabels = "Found %d switch values but only %d labels in |" .. ( type(L10n.para.switch)== 'table' and L10n.para.switch[1] or L10n.para.switch ) .. "=", noNamedCoords = "No named coordinates found in %s" } -- Other strings L10n.str = { -- valid values for display parameter, e.g. (|display=inline) or (|display=title) or (|display=inline,title) or (|display=title,inline) inline = "inline", title = "title", dsep = ",", -- separator between inline and title (comma in the example above) -- valid values for type paramter line = "line", -- geoline feature (e.g. a road) shape = "shape", -- geoshape feature (e.g. a state or province) shapeInverse = "shape-inverse", -- geomask feature (the inverse of a geoshape) data = "data", -- geoJSON data page on Commons point = "point", -- single point feature (coordinates) circle = "circle", -- circular area around a point named = "named", -- all named coordinates in an article or section -- Keyword to indicate a switch list. Must NOT use the special characters ^$()%.[]*+-? switch = "SWITCH", -- valid values for icon, frame, and plain parameters affirmedWords = ' '..table.concat({ "add", "added", "affirm", "affirmed", "include", "included", "on", "true", "yes", "y" }, ' ')..' ', declinedWords = ' '..table.concat({ "decline", "declined", "exclude", "excluded", "false", "none", "not", "no", "n", "off", "omit", "omitted", "remove", "removed" }, ' ')..' ' } -- Default values for parameters L10n.defaults = { display = L10n.str.inline, text = "Map", frameWidth = "300", frameHeight = "200", frameAlign = "right", markerColor = "5E74F3", markerSize = nil, strokeColor = "#ff0000", strokeWidth = 6, edges = 32, -- number of edges used to approximate a circle overlayBorder = "1px solid white", overlayHorizontalAlignment = "right", overlayHorizontalOffset = "0", overlayVerticalAlignment = "bottom", overlayVerticalOffset = "0" } -- #### End of L10n settings #### --[[---------------------------------------------------------------------------- Utility methods ----------------------------------------------------------------------------]]-- local util = {} --[[ Looks up a parameter value based on the id (a key from the L10n.para table) and optionally a suffix, for parameters that can be suffixed (e.g. type2 is type with suffix 2). @param {table} args key-value pairs of parameter names and their values @param {string} param_id id for parameter name (key from the L10n.para table) @param {string} [suffix] suffix for parameter name @returns {string|nil} parameter value if found, or nil if not found ]]-- function util.getParameterValue(args, param_id, suffix) suffix = suffix or '' if type( L10n.para[param_id] ) ~= 'table' then return args[L10n.para[param_id]..suffix] end for _i, paramAlias in ipairs(L10n.para[param_id]) do if args[paramAlias..suffix] then return args[paramAlias..suffix] end end return nil end --[[ Trim whitespace from args, and remove empty args. Also fix control characters. @param {table} argsTable @returns {table} trimmed args table ]]-- function util.trimArgs(argsTable) local cleanArgs = {} for key, val in pairs(argsTable) do if type(key) == 'string' and type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val ~= '' then -- control characters inside json need to be escaped, but stripping them is simpler -- See also T214984 -- However, *don't* strip control characters from wikitext (text or description parameters) or you'll break strip markers -- Alternatively it might be better to only strip control char from raw parameter content if util.matchesParam('text', key) or util.matchesParam('description', key, key:gsub('^%D+(%d+)$', '%1') ) then cleanArgs[key] = val else cleanArgs[key] = val:gsub('%c',' ') end end else cleanArgs[key] = val end end return cleanArgs end --[[ Check if a parameter name matches an unlocalized parameter key @param {string} key - the unlocalized parameter name to search through @param {string} name - the localized parameter name to check @param {string|nil} - an optional suffix to apply to the value(s) from the localization key @returns {boolean} true if the name matches the parameter, false otherwise ]]-- function util.matchesParam(key, name, suffix) local param = L10n.para[key] suffix = suffix or '' if type(param) == 'table' then for _, v in pairs(param) do if (v .. suffix) == name then return true end end return false end return ((param .. suffix) == name) end --[[ Check if a value is affirmed (one of the values in L10n.str.affirmedWords) @param {string} val Value to be checked @returns {boolean} true if affirmed, false otherwise ]]-- function util.isAffirmed(val) if not(val) then return false end return string.find(L10n.str.affirmedWords, ' '..val..' ', 1, true ) and true or false end --[[ Check if a value is declined (one of the values in L10n.str.declinedWords) @param {string} val Value to be checked @returns {boolean} true if declined, false otherwise ]]-- function util.isDeclined(val) if not(val) then return false end return string.find(L10n.str.declinedWords , ' '..val..' ', 1, true ) and true or false end --[[ Check if the name of a template matches the known coord templates or wrappers (in L10n.template.coord). The name is normalised when checked, so e.g. the names "Coord", "coord", and " Coord" all return true. @param {string} name @returns {boolean} true if it is a coord template or wrapper, false otherwise ]]-- function util.isCoordTemplateOrWrapper(name) name = mw.text.trim(name) local inputTitle = mw.title.new(name, 'Template') if not inputTitle then return false end -- Create (or reuse) mw.title objects for each known coord template/wrapper. -- Stored in L10n.template.title so that they don't need to be recreated -- each time this function is called if not L10n.template.titles then L10n.template.titles = {} for _, v in pairs(L10n.template.coord) do table.insert(L10n.template.titles, mw.title.new(v, 'Template')) end end for _, templateTitle in pairs(L10n.template.titles) do if mw.title.equals(inputTitle, templateTitle) then return true end end return false end --[[ Recursively extract coord templates which have a name parameter. @param {string} wikitext @returns {table} table sequence of coord templates ]]-- function util.extractCoordTemplates(wikitext) local output = {} local templates = mw.ustring.gmatch(wikitext, '{%b{}}') local subtemplates = {} for template in templates do local templateName = mw.ustring.match(template, '{{([^}|]+)') local nameParam = mw.ustring.match(template, "|%s*name%s*=%s*[^}|]+") if util.isCoordTemplateOrWrapper(templateName) then if nameParam then table.insert(output, template) end elseif mw.ustring.find(mw.ustring.sub(template, 2), "{{") then local subOutput = util.extractCoordTemplates(mw.ustring.sub(template, 2)) for _, t in pairs(subOutput) do table.insert(output, t) end end end -- ensure coords are not using title display for k, v in pairs(output) do output[k] = mw.ustring.gsub(v, "|%s*display%s*=[^|}]+", "|display=inline") end return output end --[[ Gets all named coordiates from a page or a section of a page. @param {string|nil} page Page name, or name#section, to get named coordinates from. If the name is omitted, i.e. #section or nil or empty string, then the current page will be used. @returns {table} sequence of {coord, name, description} tables where coord is the coordinates in a format suitable for #util.parseCoords, name is a string, and description is a string (coordinates in a format suitable for displaying to the reader). If for some reason the name can't be found, the description is nil and the name contains display-format coordinates. @throws {L10n.error.noNamedCoords} if no named coordinates are found. ]]-- function util.getNamedCoords(page) if transcluder == nil then -- load [[Module:Transcluder]] lazily so it is only transcluded on pages that -- actually use named coordinates transcluder = require("Module:Transcluder") end local parts = mw.text.split(page or "", "#", true) local name = parts[1] == "" and mw.title.getCurrentTitle().prefixedText or parts[1] local section = parts[2] local pageWikitext = transcluder.get(section and name.."#"..section or name) local coordTemplates = util.extractCoordTemplates(pageWikitext) if #coordTemplates == 0 then error(string.format(L10n.error.noNamedCoords, page or name), 0) end local frame = mw.getCurrentFrame() local sep = "________" local expandedContent = frame:preprocess(table.concat(coordTemplates, sep)) local expandedTemplates = mw.text.split(expandedContent, sep) local namedCoords = {} for _, expandedTemplate in pairs(expandedTemplates) do local coord = mw.ustring.match(expandedTemplate, "<span class=\"geo%-dec\".->(.-)</span>") if coord then local name = ( -- name specified by a wrapper template, e.g [[Article|Name]] mw.ustring.match(expandedTemplate, "<span class=\"mapframe%-coord%-name\">(.-)</span>") or -- name passed into coord template mw.ustring.match(expandedTemplate, "<span class=\"fn org\">(.-)</span>") or -- default to the coordinates if the name can't be retrieved coord ) local description = name ~= coord and coord local coord = mw.ustring.gsub(coord, "[° ]", "_") table.insert(namedCoords, {coord=coord, name=name, description=description}) end end if #namedCoords == 0 then error(string.format(L10n.error.noNamedCoords, page or name), 0) end return namedCoords end --[[ Parse coordinate values from the params passed in a GeoHack url (such as //tools.wmflabs.org/geohack/geohack.php?pagename=Example&params=1_2_N_3_4_W_ or //tools.wmflabs.org/geohack/geohack.php?pagename=Example&params=1.23_S_4.56_E_ ) or non-url string in the same format (such as `1_2_N_3_4_W_` or `1.23_S_4.56_E_`) @param {string} coords string containing coordinates @returns {number, number} latitude, longitude ]]-- function util.parseCoords(coords) local coordsPatt if mw.ustring.find(coords, "params=", 1, true) then -- prevent false matches from page name, e.g. ?pagename=Lorem_S._Ipsum coordsPatt = 'params=([_%.%d]+[NS][_%.%d]+[EW])' else -- not actually a geohack url, just the same format coordsPatt = '[_%.%d]+[NS][_%.%d]+[EW]' end local parts = mw.text.split((mw.ustring.match(coords, coordsPatt) or ''), '_') local lat_d = tonumber(parts[1]) local lat_m = tonumber(parts[2]) -- nil if coords are in decimal format local lat_s = lat_m and tonumber(parts[3]) -- nil if coords are either in decimal format or degrees and minutes only local lat = lat_d + (lat_m or 0)/60 + (lat_s or 0)/3600 if parts[#parts/2] == 'S' then lat = lat * -1 end local long_d = tonumber(parts[1+#parts/2]) local long_m = tonumber(parts[2+#parts/2]) -- nil if coords are in decimal format local long_s = long_m and tonumber(parts[3+#parts/2]) -- nil if coords are either in decimal format or degrees and minutes only local long = long_d + (long_m or 0)/60 + (long_s or 0)/3600 if parts[#parts] == 'W' then long = long * -1 end return lat, long end --[[ Get coordinates from a Wikidata item @param {string} item_id Wikidata item id (Q number) @returns {number, number} latitude, longitude @throws {L10n.error.noCoords} if item_id is invalid or the item does not exist @throws {L10n.error.wikidataCoords} if the the item does not have a P625 statement (coordinates), or it is set to "no value" ]]-- function util.wikidataCoords(item_id) if not (item_id and mw.wikibase.isValidEntityId(item_id) and mw.wikibase.entityExists(item_id)) then error(L10n.error.noCoords, 0) end local coordStatements = mw.wikibase.getBestStatements(item_id, 'P625') if not coordStatements or #coordStatements == 0 then error(L10n.error.wikidataCoords, 0) end local hasNoValue = ( coordStatements[1].mainsnak and (coordStatements[1].mainsnak.snaktype == 'novalue' or coordStatements[1].mainsnak.snaktype == 'somevalue') ) if hasNoValue then error(L10n.error.wikidataCoords, 0) end local wdCoords = coordStatements[1]['mainsnak']['datavalue']['value'] return tonumber(wdCoords['latitude']), tonumber(wdCoords['longitude']) end --[[ Creates a polygon that approximates a circle @param {number} lat Latitude @param {number} long Longitude @param {number} radius Radius in metres @param {number} n Number of edges for the polygon @returns {table} sequence of {latitude, longitude} table sequences, where latitude and longitude are both numbers ]]-- function util.circleToPolygon(lat, long, radius, n) -- n is number of edges -- Based on https://github.com/gabzim/circle-to-polygon, ISC licence local function offset(cLat, cLon, distance, bearing) local lat1 = math.rad(cLat) local lon1 = math.rad(cLon) local dByR = distance / 6378137 -- distance divided by 6378137 (radius of the earth) wgs84 local lat = math.asin( math.sin(lat1) * math.cos(dByR) + math.cos(lat1) * math.sin(dByR) * math.cos(bearing) ) local lon = lon1 + math.atan2( math.sin(bearing) * math.sin(dByR) * math.cos(lat1), math.cos(dByR) - math.sin(lat1) * math.sin(lat) ) return {math.deg(lon), math.deg(lat)} end local coordinates = {}; local i = 0; while i < n do table.insert(coordinates, offset(lat, long, radius, (2*math.pi*i*-1)/n) ) i = i + 1 end table.insert(coordinates, offset(lat, long, radius, 0)) return coordinates end --[[ Get the number of key-value pairs in a table, which might not be a sequence. @param {table} t @returns {number} count of key-value pairs ]]-- function util.tableCount(t) local count = 0 for k, v in pairs(t) do count = count + 1 end return count end --[[ For a table where the values are all tables, returns either the util.tableCount of the subtables if they are all the same, or nil if they are not all the same. @param {table} t @returns {number|nil} count of key-value pairs of subtable, or nil if subtables have different counts ]]-- function util.subTablesCount(t) local count = nil for k, v in pairs(t) do if count == nil then count = util.tableCount(v) elseif count ~= util.tableCount(v) then return nil end end return count end --[[ Splits a list into a table sequence. The items in the list may be separated by commas, or by semicolons (if items may contain commas), or by "###" (if items may contain semicolons). @param {string} listString @returns {table} sequence of list items ]]-- function util.tableFromList(listString) if type(listString) ~= "string" or listString == "" then return nil end local separator = (mw.ustring.find(listString, "###", 0, true ) and "###") or (mw.ustring.find(listString, ";", 0, true ) and ";") or "," local pattern = "%s*"..separator.."%s*" return mw.text.split(listString, pattern) end -- Boolean in outer scope indicating if Kartographer should be able to -- automatically calculate coordinates (see phab:T227402) local coordsDerivedFromFeatures = false; --[[---------------------------------------------------------------------------- Make methods: These take in a table of arguments, and return either a string or a table to be used in the eventual output. ----------------------------------------------------------------------------]]-- local make = {} --[[ Makes content to go inside the maplink or mapframe tag. @param {table} args @returns {string} tag content ]]-- function make.content(args) if util.getParameterValue(args, 'raw') then coordsDerivedFromFeatures = true -- Kartographer should be able to automatically calculate coords from raw geoJSON return util.getParameterValue(args, 'raw') end local content = {} local argsExpanded = {} for k, v in pairs(args) do local index = string.match( k, '^[^0-9]+([0-9]*)$' ) if index ~= nil then local indexNumber = '' if index ~= '' then indexNumber = tonumber(index) else indexNumber = 1 end if argsExpanded[indexNumber] == nil then argsExpanded[indexNumber] = {} end argsExpanded[indexNumber][ string.gsub(k, index, '') ] = v end end for contentIndex, contentArgs in pairs(argsExpanded) do local argType = util.getParameterValue(contentArgs, "type") -- Kartographer automatically calculates coords if geolines/shapes are used (T227402) if not coordsDerivedFromFeatures then coordsDerivedFromFeatures = ( argType == L10n.str.line or argType == L10n.str.shape ) and true or false end if argType == L10n.str.named then local namedCoords = util.getNamedCoords(util.getParameterValue(contentArgs, "from")) local typeKey = type(L10n.para.type) == "table" and L10n.para.type[1] or L10n.para.type local coordKey = type(L10n.para.coord) == "table" and L10n.para.coord[1] or L10n.para.coord local titleKey = type(L10n.para.title) == "table" and L10n.para.title[1] or L10n.para.title local descKey = type(L10n.para.description) == "table" and L10n.para.description[1] or L10n.para.description for _, namedCoord in pairs(namedCoords) do contentArgs[typeKey] = "point" contentArgs[coordKey] = namedCoord.coord contentArgs[titleKey] = namedCoord.name contentArgs[descKey] = namedCoord.description content[#content+1] = make.contentJson(contentArgs) end else content[#content + 1] = make.contentJson(contentArgs) end end --Single item, no array needed if #content==1 then return content[1] end --Multiple items get placed in a FeatureCollection local contentArray = '[\n' .. table.concat( content, ',\n') .. '\n]' return contentArray end --[[ Make coordinates from the coord arg, or the id arg, or the current page's Wikidata item. @param {table} args @param {boolean} [plainOutput] @returns {Mixed} Either: {number, number} latitude, longitude if plainOutput is true; or {table} table sequence of longitude, then latitude (gives the required format for GeoJSON when encoded) ]]-- function make.coords(args, plainOutput) local coords, lat, long local frame = mw.getCurrentFrame() if util.getParameterValue(args, 'coord') then coords = frame:preprocess( util.getParameterValue(args, 'coord') ) lat, long = util.parseCoords(coords) else lat, long = util.wikidataCoords(util.getParameterValue(args, 'id') or mw.wikibase.getEntityIdForCurrentPage()) end if plainOutput then return lat, long end return {[0] = long, [1] = lat} end --[[ Makes a table of coordinates that approximate a circle. @param {table} args @returns {table} sequence of {latitude, longitude} table sequences, where latitude and longitude are both numbers @throws {L10n.error.noCircleCoords} if centre coordinates are not specified @throws {L10n.error.noRadius} if radius is not specified @throws {L10n.error.negativeRadius} if radius is negative or zero @throws {L10n.error.negativeEdges} if edges is negative or zero ]]-- function make.circleCoords(args) local lat, long = make.coords(args, true) local radius = util.getParameterValue(args, 'radius') if not radius then radius = util.getParameterValue(args, 'radiusKm') and tonumber(util.getParameterValue(args, 'radiusKm'))*1000 if not radius then radius = util.getParameterValue(args, 'radiusMi') and tonumber(util.getParameterValue(args, 'radiusMi'))*1609.344 if not radius then radius = util.getParameterValue(args, 'radiusFt') and tonumber(util.getParameterValue(args, 'radiusFt'))*0.3048 end end end local edges = util.getParameterValue(args, 'edges') or L10n.defaults.edges if not lat or not long then error(L10n.error.noCircleCoords, 0) elseif not radius then error(L10n.error.noRadius, 0) elseif tonumber(radius) <= 0 then error(L10n.error.negativeRadius, 0) elseif tonumber(edges) <= 0 then error(L10n.error.negativeEdges, 0) end return util.circleToPolygon(lat, long, radius, tonumber(edges)) end --[[ Makes JSON data for a feature @param contentArgs args for this feature. Keys must be the non-suffixed version of the parameter names, i.e. use type, stroke, fill,... rather than type3, stroke3, fill3,... @returns {string} JSON encoded data ]]-- function make.contentJson(contentArgs) local data = {} if util.getParameterValue(contentArgs, 'type') == L10n.str.point or util.getParameterValue(contentArgs, 'type') == L10n.str.circle then local isCircle = util.getParameterValue(contentArgs, 'type') == L10n.str.circle data.type = "Feature" data.geometry = { type = isCircle and "LineString" or "Point", coordinates = isCircle and make.circleCoords(contentArgs) or make.coords(contentArgs) } data.properties = { title = util.getParameterValue(contentArgs, 'title') or mw.getCurrentFrame():getParent():getTitle() } if isCircle then -- TODO: This is very similar to below, should be extracted into a function data.properties.stroke = util.getParameterValue(contentArgs, 'strokeColor') or L10n.defaults.strokeColor data.properties["stroke-width"] = tonumber(util.getParameterValue(contentArgs, 'strokeWidth')) or L10n.defaults.strokeWidth local strokeOpacity = util.getParameterValue(contentArgs, 'strokeOpacity') if strokeOpacity then data.properties['stroke-opacity'] = tonumber(strokeOpacity) end local fill = util.getParameterValue(contentArgs, 'fill') if fill then data.properties.fill = fill local fillOpacity = util.getParameterValue(contentArgs, 'fillOpacity') data.properties['fill-opacity'] = fillOpacity and tonumber(fillOpacity) or 0.6 end else -- is a point local markerSymbol = util.getParameterValue(contentArgs, 'marker') or L10n.defaults.marker -- allow blank to be explicitly specified, for overriding infoboxes or other templates with a default value if markerSymbol ~= "blank" then data.properties["marker-symbol"] = markerSymbol end data.properties["marker-color"] = util.getParameterValue(contentArgs, 'markerColor') or L10n.defaults.markerColor data.properties["marker-size"] = util.getParameterValue(contentArgs, 'markerSize') or L10n.defaults.markerSize end else data.type = "ExternalData" if util.getParameterValue(contentArgs, 'type') == L10n.str.data or util.getParameterValue(contentArgs, 'from') then data.service = "page" elseif util.getParameterValue(contentArgs, 'type') == L10n.str.line then data.service = "geoline" elseif util.getParameterValue(contentArgs, 'type') == L10n.str.shape then data.service = "geoshape" elseif util.getParameterValue(contentArgs, 'type') == L10n.str.shapeInverse then data.service = "geomask" end if util.getParameterValue(contentArgs, 'id') or (not (util.getParameterValue(contentArgs, 'from')) and mw.wikibase.getEntityIdForCurrentPage()) then data.ids = util.getParameterValue(contentArgs, 'id') or mw.wikibase.getEntityIdForCurrentPage() else data.title = util.getParameterValue(contentArgs, 'from') end data.properties = { stroke = util.getParameterValue(contentArgs, 'strokeColor') or L10n.defaults.strokeColor, ["stroke-width"] = tonumber(util.getParameterValue(contentArgs, 'strokeWidth')) or L10n.defaults.strokeWidth } local strokeOpacity = util.getParameterValue(contentArgs, 'strokeOpacity') if strokeOpacity then data.properties['stroke-opacity'] = tonumber(strokeOpacity) end local fill = util.getParameterValue(contentArgs, 'fill') if fill and (data.service == "geoshape" or data.service == "geomask") then data.properties.fill = fill local fillOpacity = util.getParameterValue(contentArgs, 'fillOpacity') if fillOpacity then data.properties['fill-opacity'] = tonumber(fillOpacity) end end end data.properties.title = util.getParameterValue(contentArgs, 'title') or mw.title.getCurrentTitle().text if util.getParameterValue(contentArgs, 'description') then data.properties.description = util.getParameterValue(contentArgs, 'description') end return mw.text.jsonEncode(data) end --[[ Makes attributes for the maplink or mapframe tag. @param {table} args @param {boolean} [isTitle] Tag is to be displayed in the title of page rather than inline @returns {table<string,string>} key-value pairs of attribute names and values ]]-- function make.tagAttribs(args, isTitle) local attribs = {} if util.getParameterValue(args, 'zoom') then attribs.zoom = util.getParameterValue(args, 'zoom') end if util.isDeclined(util.getParameterValue(args, 'icon')) then attribs.class = "no-icon" end if util.getParameterValue(args, 'type') == L10n.str.point and not coordsDerivedFromFeatures then local lat, long = make.coords(args, 'plainOutput') attribs.latitude = tostring(lat) attribs.longitude = tostring(long) end if util.isAffirmed(util.getParameterValue(args, 'frame')) and not(isTitle) then attribs.width = util.getParameterValue(args, 'frameWidth') or L10n.defaults.frameWidth attribs.height = util.getParameterValue(args, 'frameHeight') or L10n.defaults.frameHeight if util.getParameterValue(args, 'frameCoordinates') then local frameLat, frameLong = util.parseCoords(util.getParameterValue(args, 'frameCoordinates')) attribs.latitude = frameLat attribs.longitude = frameLong else if util.getParameterValue(args, 'frameLatitude') then attribs.latitude = util.getParameterValue(args, 'frameLatitude') end if util.getParameterValue(args, 'frameLongitude') then attribs.longitude = util.getParameterValue(args, 'frameLongitude') end end if not attribs.latitude and not attribs.longitude and not coordsDerivedFromFeatures then local success, lat, long = pcall(util.wikidataCoords, util.getParameterValue(args, 'id') or mw.wikibase.getEntityIdForCurrentPage()) if success then attribs.latitude = tostring(lat) attribs.longitude = tostring(long) end end if util.getParameterValue(args, 'frameAlign') then attribs.align = util.getParameterValue(args, 'frameAlign') end if util.isAffirmed(util.getParameterValue(args, 'plain')) then attribs.frameless = "1" else attribs.text = util.getParameterValue(args, 'text') or L10n.defaults.text end else attribs.text = util.getParameterValue(args, 'text') or L10n.defaults.text end return attribs end --[[ Makes maplink wikitext that will be located in the top-right of the title of the page (the same place where coords with |display=title are positioned). @param {table} args @param {string} tagContent Content for the maplink tag @returns {string} ]]-- function make.titleOutput(args, tagContent) local titleTag = mw.text.tag('maplink', make.tagAttribs(args, true), tagContent) local spanAttribs = { style = "font-size: small;", id = "coordinates" } return mw.text.tag('span', spanAttribs, titleTag) end --[[ Makes maplink or mapframe wikitext that will be located inline. @param {table} args @param {string} tagContent Content for the maplink tag @returns {string} ]]-- function make.inlineOutput(args, tagContent) local tagName = 'maplink' if util.getParameterValue(args, 'frame') then tagName = 'mapframe' end return mw.text.tag(tagName, make.tagAttribs(args), tagContent) end --[[ Makes the HTML required for the swicther to work, including the templatestyles tag. @param {table} params table sequence of {map, label} tables @param {string} params{}.map Wikitext for mapframe map @param {string} params{}.label Label text for swicther option @param {table} options @param {string} options.alignment "left" or "center" or "right" @param {boolean} options.isThumbnail Display in a thumbnail @param {string} options.width Width of frame, e.g. "200" @param {string} [options.caption] Caption wikitext for thumnail @retruns {string} swicther HTML ]]-- function make.switcherHtml(params, options) options = options or {} local frame = mw.getCurrentFrame() local styles = frame:extensionTag{ name = "templatestyles", args = {src = "Template:Maplink/styles-multi.css"} } local container = mw.html.create("div") :addClass("switcher-container") :addClass("mapframe-multi-container") if options.alignment == "left" or options.alignment == "right" then container:addClass("float"..options.alignment) else -- alignment is "center" container:addClass("center") end for i = 1, #params do container :tag("div") :wikitext(params[i].map) :tag("span") :addClass("switcher-label") :css("display", "none") :wikitext(mw.text.trim(params[i].label)) end if not options.isThumbnail then return styles .. tostring(container) end local classlist = container:getAttr("class") classlist = mw.ustring.gsub(classlist, "%a*"..options.alignment, "") container:attr("class", classlist) local outerCountainer = mw.html.create("div") :addClass("mapframe-multi-outer-container") :addClass("mw-kartographer-container") :addClass("thumb") if options.alignment == "left" or options.alignment == "right" then outerCountainer:addClass("t"..options.alignment) else -- alignment is "center" outerCountainer :addClass("tnone") :addClass("center") end outerCountainer :tag("div") :addClass("thumbinner") :css("width", options.width.."px") :node(container) :node(options.caption and mw.html.create("div") :addClass("thumbcaption") :wikitext(options.caption) ) return styles .. tostring(outerCountainer) end --[[ Makes the HTML required for an overlay map to work tag. @param {string} overlayMap wikitext for the overlay map @param {string} baseMap wikitext for the base map @param {table} options various styling/display options @param {string} options.align "left" or "center" or "right" @param {string|number} options.width Width of the base map, e.g. "300" @param {string|number} options.width Height of the base map, e.g. "200" @param {string} options.border Border style for the overlayed map, e.g. "1px solid white" @param {string} options.horizontalAlignment Horizontal alignment for overlay map, "left" or "right" @param {string|number} options.horizontalOffset Horizontal offset in pixels from the alignment edge, e.g "10" @param {string} options.verticalAlignment Vertical alignment for overlay map, "top" or "bottom" @param {string|number} options.verticalOffset Vertical offset in pixels from the alignment edge, e.g. is "10" @param {boolean} options.isThumbnail Display in a thumbnail @param {string} [options.caption] Caption wikitext for thumnail @retruns {string} HTML for basemap with overlay ]]-- function make.overlayHtml(overlayMap, baseMap, options) options = options or {} local containerFloatClass = "float"..(options.align or "none") if options.align == "center" then containerFloatClass = "center" end local containerStyle = { position = "relative", width = options.width .. "px", height = options.height .. "px", overflow = "hidden" -- mobile/minerva tends to add scrollbars for a couple of pixels } if options.align == "center" then containerStyle["margin-left"] = "auto" containerStyle["margin-right"] = "auto" end local container = mw.html.create("div") :addClass("mapframe-withOverlay-container") :addClass(containerFloatClass) :addClass("noresize") :css(containerStyle) local overlayStyle = { position = "absolute", ["z-index"] = "1", border = options.border or "1px solid white" } if options.horizontalAlignment == "right" then overlayStyle.right = options.horizontalOffset .. "px" else overlayStyle.left = options.horizontalOffset .. "px" end if options.verticalAlignment == "bottom" then overlayStyle.bottom = options.verticalOffset .. "px" else overlayStyle.top = options.verticalOffset .. "px" end local overlayDiv = mw.html.create("div") :css(overlayStyle) :wikitext(overlayMap) container :node(overlayDiv) :wikitext(baseMap) if not options.isThumbnail then return tostring(container) end local classlist = container:getAttr("class") classlist = mw.ustring.gsub(classlist, "%a*"..options.align, "") container:attr("class", classlist) local outerCountainer = mw.html.create("div") :addClass("mapframe-withOverlay-outerContainer") :addClass("mw-kartographer-container") :addClass("thumb") if options.align == "left" or options.align == "right" then outerCountainer:addClass("t"..options.align) else -- alignment is "center" outerCountainer :addClass("tnone") :addClass("center") end outerCountainer :tag("div") :addClass("thumbinner") :css("width", options.width.."px") :node(container) :node(options.caption and mw.html.create("div") :addClass("thumbcaption") :wikitext(options.caption) ) return tostring(outerCountainer) end --[[---------------------------------------------------------------------------- Package to be exported, i.e. methods which will available to templates and other modules. ----------------------------------------------------------------------------]]-- local p = {} -- Entry point for templates function p.main(frame) local parent = frame.getParent(frame) -- Check for overlay option local overlay = util.getParameterValue(parent.args, 'overlay') local hasOverlay = overlay and mw.text.trim(overlay) ~= "" -- Check for switch option local switch = util.getParameterValue(parent.args, 'switch') local isMulti = switch and mw.text.trim(switch) ~= "" -- Create output by choosing method to suit options local output if hasOverlay then output = p.withOverlay(parent.args) elseif isMulti then output = p.multi(parent.args) else output = p._main(parent.args) end -- Preprocess output before returning it return frame:preprocess(output) end -- Entry points for modules function p._main(_args) local args = util.trimArgs(_args) local tagContent = make.content(args) local display = mw.text.split(util.getParameterValue(args, 'display') or L10n.defaults.display, '%s*' .. L10n.str.dsep .. '%s*') local displayInTitle = display[1] == L10n.str.title or display[2] == L10n.str.title local displayInline = display[1] == L10n.str.inline or display[2] == L10n.str.inline local output if displayInTitle and displayInline then output = make.titleOutput(args, tagContent) .. make.inlineOutput(args, tagContent) elseif displayInTitle then output = make.titleOutput(args, tagContent) elseif displayInline then output = make.inlineOutput(args, tagContent) else error(L10n.error.badDisplayPara) end return output end function p.multi(_args) local args = util.trimArgs(_args) if not args[L10n.para.switch] then error(L10n.error.noSwitchPara, 0) end local switchParamValue = util.getParameterValue(args, 'switch') local switchLabels = util.tableFromList(switchParamValue) if #switchLabels == 1 then error(L10n.error.oneSwitchLabel, 0) end local mapframeArgs = {} local switchParams = {} for name, val in pairs(args) do -- Copy to mapframeArgs, if not the switch labels or a switch parameter if val ~= switchParamValue and not string.match(val, "^"..L10n.str.switch..":") then mapframeArgs[name] = val end -- Check if this is a param to switch. If so, store the name and switch -- values in switchParams table. local switchList = string.match(val, "^"..L10n.str.switch..":(.+)") if switchList ~= nil then local values = util.tableFromList(switchList) if #values == 1 then error(string.format(L10n.error.oneSwitchValue, name), 0) end switchParams[name] = values end end if util.tableCount(switchParams) == 0 then error(L10n.error.noSwitchLists, 0) end local switchCount = util.subTablesCount(switchParams) if not switchCount then error(L10n.error.switchMismatches, 0) elseif switchCount > #switchLabels then error(string.format(L10n.error.fewerSwitchLabels, switchCount, #switchLabels), 0) end -- Ensure a plain frame will be used (thumbnail will be built by the -- make.switcherHtml function if required, so that switcher options are -- inside the thumnail) mapframeArgs.plain = "yes" local switcher = {} for i = 1, switchCount do local label = switchLabels[i] for name, values in pairs(switchParams) do mapframeArgs[name] = values[i] end table.insert(switcher, { map = p._main(mapframeArgs), label = "Show "..label }) end return make.switcherHtml(switcher, { alignment = args["frame-align"] or "right", isThumbnail = (args.frame and not args.plain) and true or false, width = args["frame-width"] or L10n.defaults.frameWidth, caption = args.text }) end function p.withOverlay(_args) -- Get and trim wikitext for overlay map local overlayMap = _args.overlay if type(overlayMap) == 'string' then overlayMap = overlayMap:match('^%s*(.-)%s*$') end local isThumbnail = (util.getParameterValue(_args, "frame") and not util.getParameterValue(_args, "plain")) and true or false -- Get base map using the _main function, as a plain map local args = util.trimArgs(_args) args.plain = "yes" local basemap = p._main(args) -- Extract overlay options from args local overlayOptions = { width = util.getParameterValue(args, "frameWidth") or L10n.defaults.frameWidth, height = util.getParameterValue(args, "frameHeight") or L10n.defaults.frameHeight, align = util.getParameterValue(args, "frameAlign") or L10n.defaults.frameAlign, border = util.getParameterValue(args, "overlayBorder") or L10n.defaults.overlayBorder, horizontalAlignment = util.getParameterValue(args, "overlayHorizontalAlignment") or L10n.defaults.overlayHorizontalAlignment, horizontalOffset = util.getParameterValue(args, "overlayHorizontalOffset") or L10n.defaults.overlayHorizontalOffset, verticalAlignment = util.getParameterValue(args, "overlayVerticalAlignment") or L10n.defaults.overlayVerticalAlignment, verticalOffset = util.getParameterValue(args, "overlayVerticalOffset") or L10n.defaults.overlayVerticalOffset, isThumbnail = isThumbnail, caption = util.getParameterValue(args, "text") or L10n.defaults.text } -- Make the HTML for the overlaying maps return make.overlayHtml(overlayMap, basemap, overlayOptions) end return p f05a265dfd758f11fbf3c621b1711e277c8df1f0 Template:Portal template list 10 878 1946 2023-03-24T21:45:51Z wikipedia>Buaidh 0 '''Templates that configure links''' {{Div col|colwidth=20em}} * {{tl|Portal}} * {{tl|Portal bar}} * {{tl|Portal-inline}} * {{tl|Pbox}} * {{tl|Portals}} * {{tl|Portals browsebar}} * {{tl|Related portals}} * {{tl|Wikimedia for portals}} {{Div col end}} wikitext text/x-wiki {{navbar|Portal template list|style=float:right}} '''Portal content templates''' * To display "selected content" on the portal main page ** {{tl|Transclude list item excerpts as random slideshow}}—transcludes excerpts from [[WP:RECOG|recognized content lists]], which are populated by a bot. ** {{tl|Transclude random subpage}}—transcludes random portal subpage. ** {{tl|Random portal component}}—transcludes random portal subpage. ** {{tl|Random subpage}}—transcludes random portal subpages. ** {{tl|Portal pictures}}—transcludes a slideshow of pictures, utilizing a single-page gallery. * To organize "selected content" on subpages ** {{tl|Numbered subpages}}—outputs an automatic index, transcluding numbered subpages. ** {{tl|Portal subpage}}—outputs a box linking to and transcluding a single subpage. ** {{tl|Portal subpage inline}}—outputs an unordered list item linking to and transcluding a single subpage. '''Main portal page formatting templates''' {{Div col|colwidth=20em}} * {{tl|Box-header}} * {{tl|Box-header-plain}} * {{tl|Box-header-round}} * {{tl|Box-header-square}} * {{tl|Box-header-watch}} * {{tl|Box-footer}} {{Div col end}} '''Templates that configure links''' {{Div col|colwidth=20em}} * {{tl|Portal}} * {{tl|Portal bar}} * {{tl|Portal-inline}} * {{tl|Pbox}} * {{tl|Portals}} * {{tl|Portals browsebar}} * {{tl|Related portals}} * {{tl|Wikimedia for portals}} {{Div col end}} '''Selected page templates, used on subpages of older portals''' {{Div col|colwidth=20em}} * {{tl|Selected article}} * {{tl|Selected biography}} * {{tl|Selected business}} * {{tl|Selected DYK}} * {{tl|Selected ingredient}} * {{tl|Selected location}} * {{tl|Selected picture}} * {{tl|Selected product}} * {{tl|Selected publication}} * {{tl|Selected quote}} * {{tl|Selected recipe}} * {{tl|Selected X}} {{Div col end}} '''Related templates''' * {{tl|Project template list}} {{Portal templates navbox}}<noinclude> [[Category:Wikipedia Portal templates| ]] [[Category:Documentation see also templates]] </noinclude> fc2451e4103312ad0baf2194d4436a1ad71a7dbe Template:Iem4ibx 10 1415 2750 2023-03-26T19:09:46Z w>Hike395 0 invoke module directly wikitext text/x-wiki {{#if:{{{1|}}}|{{#invoke:Ordnance Survey coordinates|oscoord|{{{1}}}_region:IE_scale:25000|{{{1}}}|name={{{name|}}}}}}}<noinclude> <!--add categories and interwiki links to the /doc page--> {{documentation}} </noinclude> 3f5b1123b2bd476eca128339e3b30fb965eb8999 Template:Tlbare 10 1567 2902 2023-03-26T20:27:49Z w>HouseBlaster 0 HouseBlaster moved page [[Template:Tlbare]] to [[Template:Template link bare]]: expand name per [[WP:TG]] wikitext text/x-wiki #REDIRECT [[Template:Template link bare]] {{Redirect category shell| {{R from move}} }} b5bed213fb2ee7eaca44e09e0bb992a830ef6eb9 Template:Template link bare 10 1572 2907 2023-03-26T20:27:49Z w>HouseBlaster 0 HouseBlaster moved page [[Template:Tlbare]] to [[Template:Template link bare]]: expand name per [[WP:TG]] wikitext text/x-wiki {{#if:{{str endswith|{{{1}}}|%}} <!--(i.e. if {{{1}}} is a percentage)--> | [[Template:{{{2}}}|<span style="font-size:{{{1}}};">{{{3|{{{2}}}}}}</span>]] | [[Template:{{{1}}}|{{{2|{{{1}}}}}}]] }}<noinclude> {{Documentation}} </noinclude> 5ca13cb038217d14c7c9fc35d39896f75bd26a71 Template:Efn-lr 10 574 1296 2023-03-27T17:59:55Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Efn-lr]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2501 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{efn|name={{{name|}}}|group=lower-roman|reference={{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}}}</includeonly><noinclude> {{documentation}} </noinclude> a84a2c4c65dd07813f0d83c1e99364ae256e13d3 Template:Div col/styles.css 10 46 87 2023-03-29T18:11:31Z wikipedia>Jonesey95 0 Attempt to copy plainlist class from [[MediaWiki:Common.css]]. I don't know if this actually works. text text/plain /* {{pp|small=yes}} */ .div-col { margin-top: 0.3em; column-width: 30em; } .div-col-small { font-size: 90%; } .div-col-rules { column-rule: 1px solid #aaa; } /* Reset top margin for lists in div col */ .div-col dl, .div-col ol, .div-col ul { margin-top: 0; } /* Avoid elements breaking between columns See also Template:No col break */ .div-col li, .div-col dd { page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */ break-inside: avoid-column; } /* Unbulleted lists */ .plainlist ol, .plainlist ul { line-height: inherit; list-style: none; margin: 0; } .plainlist ol li, .plainlist ul li { margin-bottom: 0; } 76c2c0a042b9164cff638cd44af5ab129702c141 Template:Self-reference 10 1291 2626 2023-03-30T11:42:06Z w>Mclay1 0 Mclay1 moved page [[Template:Self reference]] to [[Template:Self-reference]]: grammatically correct hyphen wikitext text/x-wiki {{#switch:{{{2|NONE}}} |NONE|hatnote|hat={{Hatnote|extraclasses=plainlinks selfreference noprint|1={{{1}}}}} |inline=<div class="plainlinks selfreference" style="display:inline; font-style: italic;"><!--Same style as class hatnote.-->{{{1}}}</div> |<!--Matching the empty string here for unprintworthy content is for backwards compatibility with the 2006-2008 version. Do not depend on it!-->=<div style="display:inline;" class="plainlinks selfreference noprint">{{{1}}}</div> |#default={{error|Second parameter must be <code>hatnote</code>, <code>hat</code>, or <code>inline</code>}} }}<noinclude> {{Documentation}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES THE /doc SUBPAGE, AND INTERWIKIS TO WIKIDATA, THANKS --> </noinclude> 0c4a08f880070e918c3edcaa50cc493f99841e98 Template:Selfref 10 1290 2625 2023-03-30T20:46:51Z w>Xqbot 0 Bot: Fixing double redirect to [[Template:Self-reference]] wikitext text/x-wiki #REDIRECT [[Template:Self-reference]] {{Redirect category shell| {{R from template shortcut}} {{R from alternative spelling}} {{R from move}} }} 030c372ed4f83fa2e03a4c0ccdd4ad3cef8ec9e6 Template:Pad 10 849 1880 2023-04-01T12:47:58Z wikipedia>Andrybak 0 add parameter "css" wikitext text/x-wiki <includeonly><span style="padding-left:{{{1|1.0em}}};{{{css|}}}">&nbsp;</span></includeonly><noinclude>{{Documentation}}</noinclude> bdda233a3029c939fb85aee8b2e129f795d1a4e3 Module:Location map/doc 828 1643 3004 2023-04-01T15:49:10Z wikipedia>Paine Ellsworth 0 High-use template + fmt wikitext text/x-wiki {{Module rating|protected}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> {{High-use}} {{Lua|Module:Arguments}} {{Uses TemplateStyles|Module:Location map/styles.css}} == Usage == This module implements the {{tl|Location map}} and {{tl|Location map~}} templates. Please see the template pages for usage instructions. == Known issues == Since the introduction of support for different captions when multiple maps are utilized, an issue has been highlighted.<br /> Some infobox templates use their caption parameter directly instead of passing it to this module. This results in the display of a "##" between the two captions.<br /> If you are unable to edit the infobox template, contact {{u|Bellezzasolo}}. == Tracking/maintenance categories == * [[:Category:Location maps with possible errors|Category:Location maps with possible errors]] ** {{clc|Location maps with different longitude and latitude precisions}} ** {{clc|Location maps with marks outside map and outside parameter not set}} ** {{clc|Location maps with a name containing a pipe‎}} ** {{clc|Location maps with removed parameters‎}} ** {{clc|Location maps with negative degrees and minutes or seconds}} * Tracking for a change (see talk): {{clc|Pages using location map with a double number sign in the caption}} == See also == * [https://en.wikipedia.org/wiki/Special:PrefixIndex?prefix=Location+map&namespace=828 All Module: pages beginning with "Location map"] * [[Module:Location map/info]] * [[Module:Location map/multi]] <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories go here and interwikis go in Wikidata. --> [[Category:Location map modules]] [[Category:Modules that add a tracking category]] }}</includeonly> 6f1bdaf5bdd99aa938bc7aade80cdddc02494599 Template:Right 10 1349 2684 2023-04-02T11:15:20Z w>Jonesey95 0 No need to track this legitimate, documented usage. This category was re-added without discussion, and it appears to not be useful or needed. wikitext text/x-wiki <includeonly>{{{{{|safesubst:}}}#ifeq:{{{1|a}}}|{{{1|b}}} |<div style="float:right;">{{{1|}}}</div> |style="text-align:right"{{{{{|safesubst:}}}!}} }}</includeonly><noinclude> {{documentation}} </noinclude> 83b90586698a3aaca70d6c2d5f4a9fcdbdb2d946 Help:Infobox/user style 12 72 139 2023-04-03T14:00:08Z wikipedia>Maddy from Celeste 0 blatant self-promotion wikitext text/x-wiki {{{heading| ==Infoboxes and user style == }}} Users can have [[WP:User style|user CSS]] that hides<!--, moves, or makes collapsible--> any infoboxes in their own browsers. To hide all infoboxes, add the following to [[Special:MyPage/common.css]] (for all [[WP:Skin|skins]], or [[Special:MyPage/skin.css]] for just the current skin), on a line by itself: <syntaxhighlight lang="css">div.mw-parser-output .infobox { display: none; }</syntaxhighlight> Alternatively, you can add the following code to [[Special:MyPage/common.js|your common.js]] or into a browser user script that is executed by an extension like [[Greasemonkey]]: <syntaxhighlight lang="js">$('.infobox').hide();</syntaxhighlight> Be aware that although{{#if:{{{guideline|}}}||, per [[WP:Manual of Style/Infoboxes]],}} all information in an infobox ideally should also be found in the main body of an article, there isn't perfect compliance with this guideline. For example, the full taxonomic hierarchy in {{tlx|Taxobox}}, and the OMIM and other medical database codes of {{tlx|Infobox disease}} are often not found in the main article content. The infobox is also often the location of the most significant, even only, image in an article. There is a userscript which removes infoboxes but moves the images contained to separate thumbnails: [[User:Maddy from Celeste/disinfobox.js]].<!-- Needs Special:Mypage/common.js options for: * Making infoboxes collapsible ** Making them auto-collapsed * Moving infoboxes to bottom of page --><noinclude> {{Documentation|content= This documentation snippet is transcluded at [[Help:Infobox]], [[Template:Infobox/doc]], [[WP:Customisation#Hiding specific messages]], [[Help:User style]], [[WP:Manual of Style/Infoboxes]], and other places where this information is relevant. As a template, this snippet takes a {{para|heading}} parameter to replace the level-2 <code>==Infoboxes and user style==</code> section heading code, as needed. E.g., for a <code>=== ... ===</code> level-3 heading: <code><nowiki>heading={{=}}{{=}}{{=}}Infoboxes and user style{{=}}{{=}}{{=}}</nowiki></code> }} </noinclude> ba4dac68eb2bdc49a32f2a11b9afd52381bf06b5 Template:Stub/doc 10 760 1695 2023-04-03T21:12:54Z wikipedia>Pols12 0 TemplateData: Undid issuing empty string param wikitext text/x-wiki {{documentation subpage}} <!-- Intentionally blank: interlanguage links for [[Template:Stub]] are now held at [[d:Special:ItemByTitle/enwiki/Template:Stub]]. --> ===TemplateData=== {{TemplateData header}} <templatedata> { "description": "Standard template used for sorting articles into stubs.", "params": {}, "format": "inline" } </templatedata> 4e08e86ecdef137b8a8a26bf6766217f8fc8e0ce Module:LuaCall 828 631 1422 2023-04-04T19:01:48Z Lemondoge 43 Modified code formatting Scribunto text/plain local p={} function p.main(frame) local parent = frame.getParent(frame) or {} local reserved_value = {} local reserved_function, reserved_contents for k, v in pairs(parent.args or {}) do _G[k] = tonumber(v) or v -- transfer every parameter directly to the global variable table end for k, v in pairs(frame.args or {}) do _G[k] = tonumber(v) or v -- transfer every parameter directly to the global variable table end --- Alas Scribunto does NOT implement coroutines, according to --- http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#string.format --- this will not stop us from trying to implement one single lousy function call if _G[1] then reserved_function, reserved_contents = mw.ustring.match(_G[1], "^%s*(%a[^%s%(]*)%(([^%)]*)%)%s*$") end if reserved_contents then local reserved_counter = 0 repeat reserved_counter = reserved_counter + 1 reserved_value[reserved_counter] = _G[mw.ustring.match(reserved_contents, "([^%,]+)")] reserved_contents = mw.ustring.match(reserved_contents, "[^%,]+,(.*)$") until not reserved_contents end local reserved_arraypart = _G while mw.ustring.match(reserved_function, "%.") do reserved_functionpart, reserved_function = mw.ustring.match(reserved_function, "^(%a[^%.]*)%.(.*)$") reserved_arraypart = reserved_arraypart[reserved_functionpart] end local reserved_call = reserved_arraypart[reserved_function] if type(reserved_call) ~= "function" then return tostring(reserved_call) else reserved_output = {reserved_call(unpack(reserved_value))} return reserved_output[reserved_return or 1] end end local function tonumberOrString(v) return tonumber(v) or v:gsub("^\\", "", 1) end local function callWithTonumberOrStringOnPairs(f, ...) local args = {} for _, v in ... do table.insert(args, tonumberOrString(v)) end return (f(unpack(args))) end --[[ ------------------------------------------------------------------------------------ -- ipairsAtOffset -- This is an iterator for arrays. It can be used like ipairs, but with -- specified i as first index to iterate. i is an offset from 1 -- ------------------------------------------------------------------------------------ --]] local function ipairsAtOffset(t, i) local f, s, i0 = ipairs(t) return f, s, i0+i end local function get(s) local G = _G; for _ in mw.text.gsplit( mw.text.trim(s, '%s'), '%s*%.%s*' ) do G = G[_] end return G end --[[ ------------------------------------------------------------------------------------ -- call -- -- This function is usually useful for debugging template parameters. -- Prefix parameter with backslash (\) to force interpreting parameter as string. -- The leading backslash will be removed before passed to Lua function. -- -- Example: -- {{#invoke:LuaCall|call|mw.log|a|1|2|3}} will return results of mw.log('a', 1, 2, 3) -- {{#invoke:LuaCall|call|mw.logObject|\a|321|\321| \321 }} will return results of mw.logObject('a', 321, '321', ' \\321 ') -- -- This example show the debugging to see which Unicode characters are allowed in template parameters, -- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0061}}}} return 97 -- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0000}}}} return 65533 -- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0001}}}} return 65533 -- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0002}}}}}} return 0xfffd -- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007e}}}}}} return 0x007e -- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007f}}}}}} return 0x007f -- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0080}}}}}} return 0x0080 -- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x00a0}}}}}} return 0x00a0 -- ------------------------------------------------------------------------------------ --]] function p.call(frame) return callWithTonumberOrStringOnPairs(get(frame.args[1]), ipairsAtOffset(frame.args, 1) ) end --local TableTools = require('Module:TableTools') --[[ ------------------------------------------------------------------------------------ -- get -- -- Example: -- {{#invoke:LuaCall|get| math.pi }} will return value of math.pi -- {{#invoke:LuaCall|get|math|pi}} will return value of math.pi -- {{#invoke:LuaCall|get| math |pi}} will return value of _G[' math '].pi -- {{#invoke:LuaCall|get|_G| math.pi }} will return value of _G[' math.pi '] -- {{#invoke:LuaCall|get|obj.a.5.c}} will return value of obj.a['5'].c -- {{#invoke:LuaCall|get|obj|a|5|c}} will return value of obj.a[5].c -- ------------------------------------------------------------------------------------ --]] function p.get(frame) -- #frame.args always return 0, regardless of number of unnamed -- template parameters, so check manually instead if frame.args[2] == nil then -- not do tonumber() for this args style, -- always treat it as string, -- so 'obj.1' will mean obj['1'] rather obj[1] return get(frame.args[1]) else local G = _G for _, v in ipairs(frame.args) do G = G[tonumberOrString(v)] end return G end end --[[ ------------------------------------------------------------------------------------ -- invoke -- -- This function is used by Template:Invoke -- ------------------------------------------------------------------------------------ --]] function p.invoke(frame) local pframe, usedpargs = frame:getParent(), {} -- get module and function names from parent args if not provided local pfargs = setmetatable({frame.args[1], frame.args[2]}, {__index = table}) if not pfargs[1] then pfargs[1], usedpargs[1] = pframe.args[1], true if not pfargs[2] then pfargs[2], usedpargs[2] = pframe.args[2], true end elseif not pfargs[2] then pfargs[2], usedpargs[1] = pframe.args[1], true end -- repack sequential args for i, v in ipairs(pframe.args) do if not usedpargs[i] then pfargs:insert(v) usedpargs[i] = true end end -- copy other args for k, v in pairs(pframe.args) do if not pfargs[k] and not usedpargs[k] then pfargs[k], usedpargs[k] = v, true end end -- #invoke off parent frame so the new frame has the same parent return pframe:callParserFunction{name = '#invoke', args = pfargs} end return p d6ec342627682bf90e61bbad921fcc6190f2e090 Module:Infobox mapframe/doc 828 1737 3287 2023-04-05T14:38:29Z wikipedia>Paine Ellsworth 0 High-use template and update /doc wikitext text/x-wiki {{Module rating|beta}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{High-use}} {{Lua sidebar}} == Usage == Module that automatically makes a mapframe suitable for an infobox automatically, with minimal user input. ===Generic usage=== Just use the template {{tl|Infobox mapframe}}, following the documentation there. This module may also be imported to another Lua module. ===Automatic maps in infoboxes=== :''Example edits: [https://en.wikipedia.org/w/index.php?title=Template%3AInfobox_prison&type=revision&diff=962824818&oldid=782742135 Template:Infobox prison], [https://en.wikipedia.org/w/index.php?title=Template%3AInfobox_prison%2Fdoc&type=revision&diff=962825435&oldid=768262729 Template:Infobox prison/doc]'' Edit the infobox template (or its sandbox). Add lines like the following examples to the infobox. Replace numbers ({{kbd|4}}, or {{kbd|97}} to {{kbd|99}}), with the appropriate number based on how many other image or data parameters are already present. {|style=width:100% |- ! If placing near the top of infobox !! If placing at/near the bottom of the infobox |- |<pre> | image4 = {{#invoke:Infobox mapframe|auto}} | caption4 = {{#invoke:Infobox mapframe|autocaption}} </pre> |<pre> | header97 = {{#if:{{{mapframe|}}}|Location}} | data98 = {{#invoke:Infobox mapframe|auto}} | data99 = {{#invoke:Infobox mapframe|autocaption}} </pre> |} If the template has a <code><nowiki>{{#invoke:</nowiki>[[Module:Check for unknown parameters|Check for unknown parameters]]<nowiki>}}</nowiki></code>, add the following parameters: <pre> | mapframe | mapframe-area_km2 | mapframe-area_mi2 | mapframe-caption | mapframe-coord | mapframe-coordinates | mapframe-custom | mapframe-frame-coord | mapframe-frame-coordinates | mapframe-frame-height | mapframe-frame-width | mapframe-geomask | mapframe-geomask-fill | mapframe-geomask-fill-opacity | mapframe-geomask-stroke-color | mapframe-geomask-stroke-colour | mapframe-geomask-stroke-width | mapframe-height | mapframe-id | mapframe-length_km | mapframe-length_mi | mapframe-marker | mapframe-marker-color | mapframe-marker-colour | mapframe-point | mapframe-shape | mapframe-shape-fill | mapframe-shape-fill-opacity | mapframe-stroke-color | mapframe-stroke-colour | mapframe-stroke-width | mapframe-switcher | mapframe-width | mapframe-wikidata | mapframe-zoom </pre> Once this is done, the above parameters will be available to users of the template. * Defaults values for these parameters can also be specified in the {{kbd|#invoke}} calls above, e.g. <code><nowiki>{{#invoke:Infobox mapframe|auto|mapframe-marker=library}}</nowiki></code> means that the library marker will be used, unless a different value is passed in to the template. * The maps are off by default, which means maps will not be displayed unless {{para|mapframe|yes}} is present in the template call. To turn maps on by default, in the {{kbd|#invoke}} calls above add {{para|onByDefault|yes}} – which means maps will be displayed unless {{para|mapframe|no}} is present in the template call. {{kbd|onByDefault}} can also be set to a conditional, such as if another parameters is present, e.g. {{para|onByDefault|2=<nowiki>{{#if:{{{pushpin_map|}}}|no|yes}}</nowiki>}} * Add the new parameters to the document. You can use {{tlx|Infobox mapframe/doc/parameters}}. Specify default values (if any are used in the {{kbd|#invoke}} calls) using by adding parameters in the form {{tt|{{!}}}}''parameter-name''{{tt|{{=}}}}''value''. The default output is shown here collapsed: {{cot}} {{Infobox mapframe/doc/parameters}} {{cob}} *Parameters can also be added to the TemplateData can also be added by copy-pasting from {{edit|Template:Infobox mapframe/doc/templatedata|Template:Infobox mapframe/doc/templatedata}} == See also == * [[Wikipedia:Mapframe maps in infoboxes]] * [[Module:Mapframe]] & [[Template:Maplink]] <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> }}</includeonly> 51cd0f5b193959f102c4be64250d13289a60a5fa Template:Collapse 10 1064 2326 2023-04-07T02:01:58Z wikipedia>Izno 0 per tech news wikitext text/x-wiki {| <!-- Template:Collapse --> class="mw-collapsible mw-archivedtalk {{#switch:{{lc:{{{expand|no}}}}}|uncollapse|uncollapsed|expand|expanded|yes|y=mw-uncollapsed|#default=mw-collapsed}} {{{class|}}}" style="{{{{{|safesubst:}}}#ifeq:{{NAMESPACEE}}|{{ns:0}}|display: none;}}background-color: {{{bg1|transparent}}}; text-align: left; border: {{{border|1px}}} solid {{{b-color|silver}}}; {{{{{|safesubst:}}}#switch:{{{float|}}} | left = margin:0.2em 0.5em 0.2em 0; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; float: left; clear: {{{clear|left}}} | right = margin:0.2em 0 0.2em 0.5em; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; float: right; clear: {{{clear|right}}} | none = margin:0.2em 0; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; clear: {{{clear|none}}} | center | centre = margin:0.2em auto; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; clear: {{{clear|both}}} | #default = margin: 0.2em auto auto; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|100%}}; clear: {{{clear|both}}} }}; padding: 1px;" |- ! style="background-color: {{{background|{{{bg|#F0F2F5}}}}}}; font-size:87%; padding:0.2em 0.3em; text-align: {{{{{|safesubst:}}}#if:{{{left|}}}|left|{{{{{|safesubst:}}}#if:{{{center|}}}|center|left}}}}; {{{{{|safesubst:}}}#if:{{{fc|}}}|color: {{{fc}}};|}}" | <div style="display: inline; font-size: 115%;">{{{2|{{{title|{{{reason|{{{header|{{{heading|{{{result|Extended content}}}}}}}}}}}}}}}}}}</div> |- | style="border: solid {{{border2|1px silver}}}; padding: {{{padding|8px}}}; background-color: {{{bg2|white}}};" | <div>{{{content|{{{text|{{{1<noinclude>|{{lorem ipsum|3}}</noinclude>}}}}}}}}}</div> |}{{{{{|safesubst:}}}#ifeq:{{NAMESPACEE}}|{{ns:0}}|<span class="error noprint">[[Template:collapse]] is not available for use in articles (see [[MOS:COLLAPSE]]).</span>}}<noinclude> {{Documentation}} </noinclude> 0ab1d915780bc1110ec074c518c6f94b0bfbc597 Template:Collapse top 10 187 428 2023-04-07T02:02:13Z wikipedia>Izno 0 per tech news wikitext text/x-wiki <div style="margin-left:{{{indent|0}}}"><!-- NOTE: width renders incorrectly if added to main STYLE section --> {| <!-- Template:Collapse top --> class="mw-collapsible mw-archivedtalk {{<includeonly>safesubst:</includeonly>#if:{{{expand|{{{collapse|}}}}}}||mw-collapsed}} {{{class|}}}" style="background: {{{bg1|transparent}}}; text-align: left; border: {{{border|1px}}} solid {{{b-color|Silver}}}; margin: 0.2em auto auto; width:{{<includeonly>safesubst:</includeonly>#if:{{{width|}}}|{{{width}}}|100%}}; clear: {{{clear|both}}}; padding: 1px;" |- ! style="background: {{{bg|#{{main other|F0F2F5|CCFFCC}}}}}; font-size:87%; padding:0.2em 0.3em; text-align:{{<includeonly>safesubst:</includeonly>#if:{{{left|}}}|left|{{<includeonly>safesubst:</includeonly>#if:{{{align|}}}|left|center}}}}; {{<includeonly>safesubst:</includeonly>#if:{{{fc|}}}|color: {{{fc}}};|}}" | <div style="font-size:115%;{{<includeonly>safesubst:</includeonly>#if:{{{left|}}}||margin:0 4em}}">{{{1|{{{title|{{{reason|{{{header|{{{heading|{{{result|Extended content}}}}}}}}}}}}}}}}}}</div> {{<includeonly>safesubst:</includeonly>#if:{{{warning|{{{2|}}}}}} |{{<includeonly>safesubst:</includeonly>!}}- {{<includeonly>safesubst:</includeonly>!}} style="text-align:center; font-style:italic;" {{<includeonly>safesubst:</includeonly>!}} {{{2|The following is a closed discussion. {{strongbad|Please do not modify it.}} }}} }} |- | style="border: solid {{{border2|1px Silver}}}; padding: {{{padding|0.6em}}}; background: {{{bg2|White}}};" {{<includeonly>safesubst:</includeonly>!}}<noinclude> {{lorem ipsum|3}} {{Collapse bottom}} {{Documentation}} </noinclude> 247cc43d5198baf8804d0926529cbbdd7be91113 Template:High-risk 10 596 1340 2023-04-09T16:46:44Z wikipedia>Nagsb 0 wikitext text/x-wiki #REDIRECT [[Template:High-use]] {{Rcat shell| {{R with Wikidata item}} {{R from merge}} {{R from template shortcut}} }} 52c9a8c75748fd2b20183ed6c60e1f3c3a435cc9 Template:Navbar/doc 10 1339 2674 2023-04-11T16:39:57Z w>Thiemo Kreuz (WMDE) 0 Fix mistake in TemplateData documentation wikitext text/x-wiki {{documentation subpage}} {{#ifeq:{{BASEPAGENAME}}|Navbar|{{used in system}}}} {{lua|Module:Navbar}}{{#ifeq:{{BASEPAGENAME}}|VTE|{{tsh|V}}}} {{tlx|Navbar}} provides a small "view&nbsp;'''&middot;'''&nbsp;talk&nbsp;'''&middot;'''&nbsp;edit" navigation bar. It is primarily used for content-heavy templates and other transcluded content blocks, so that the content inside the template or block is more easily editable {{lang|la|in situ}} where it was found, without having track it down through examining transclusion code. {{tnull|Navbar}}'s extremely high use rate and consequent protection level are because it is integrated as a feature into numerous [[WP:NAVBOX|navigation box]] and [[WP:INFOBOX|infobox]] templates used in millions of articles. It is also a regular feature of many internal-use templates and tables of the Wikipedia, Help, and Template [[WP:NAMESPACE|namespaces]]. ==Usage== ===General=== When one of the following examples is placed inside a given [[Wikipedia:Navigation templates|template]] (or block of content used for [[Wikipedia:Transclusion#Selective transclusion|selective transclusion]]), it adds basic navbar navigational functionality: :<code><nowiki>{{navbar|{{subst:PAGENAME}}|mini=y}}</nowiki></code> :<code><nowiki>{{navbar|{{subst:PAGENAME}}|plain=y}}</nowiki></code> :<code><nowiki>{{navbar|{{subst:PAGENAME}}|fontstyle=color: green; font-style: italic;}}</nowiki></code> The <code><nowiki>{{subst:PAGENAME}}</nowiki></code> will be [[WP:SUBST|substituted]] with the page name of the real location of the content when parsed by the servers. For example, <code><nowiki>{{navbar|Navbar/doc}}</nowiki></code> gives:<br />{{navbar|Navbar/doc}} When used in content that is selectively transcluded but which is also used as-is in its original location, this template should be wrapped in {{xtag|includeonly|p}} markup, so that it only appears when transcluded. ===Font size and weight === Font-size is 88% when used in a topical navbar template or in plain text, and 100% when nested in a navbox or infobox (because those templates' text size is already reduced; the "100%" is relative to the surrounding template's own content, not that of the entire page). The {{para|fontstyle}} parameter can be used to adjust font size as needed (e.g. to reduce font size even more when the template is used inside a block element with a large font size). Do not abuse this to make excessively small text (i.e. less than 85% of the normal page text), since that causes [[MOS:SMALLTEXT|accessibility problems]] for many readers. In a topical navbar, the weight is "normal"; when nested in a navbox or infobox, it inherits the style of the surrounding content. The middot bullets are bold for better visibility. === Block level element === The template generates block-level markup with {{tag|div}} tags, and therefore, any surrounding markup cannot include {{tag|span}} tags, which would cause a [[Special:LintErrors/misc-tidy-replacement-issues|div-span-flip]] lint error. ==Examples== ===Required parameters=== *<code><nowiki>{{navbar|Template Name}}</nowiki></code> – the template name is required. ===Optional parameters=== {| class="wikitable" ! Options !! Parameters !! Produces... !! "Shortcut" template |- | Basic || <code><nowiki>{{navbar|Template Name}}</nowiki></code> || {{navbar|Navbar/doc}} || |- | Different text || <code><nowiki>{{navbar|Template Name|</nowiki>'''text'''<nowiki>=This template:}}</nowiki></code> || {{navbar|Navbar/doc|text=This template:}} || |- | Without "This box:" text || <code><nowiki>{{navbar|Template Name|</nowiki>'''plain'''<nowiki>=y}}</nowiki></code> || {{navbar|Navbar/doc|plain=y}} || {{tl|view}} |- | Short version || <code><nowiki>{{navbar|Template Name|</nowiki>'''mini'''<nowiki>=y}}</nowiki></code> || {{navbar|Navbar/doc|mini=y}} || {{tl|v}} |- | With brackets || <code><nowiki>{{navbar|Template Name|</nowiki>'''brackets'''<nowiki>=y}}</nowiki></code> || {{navbar|Navbar/doc|brackets=y}} || |- | With font styling examples ([[Span and div|span]]) || <code><nowiki>{{navbar|Template Name|</nowiki>'''fontstyle'''<nowiki>=color: green; font-style: italic;}}</nowiki></code> || {{navbar|Navbar/doc|fontstyle=color: green; font-style: italic;}} || |- | With whole-template styling examples ([[Span and div|div]]) || <code><nowiki>{{navbar|Template Name|</nowiki>'''style'''<nowiki>=float:right; background: Beige; padding: 5px; border: 1px solid;}}</nowiki></code> || {{navbar|Navbar/doc|style=float:right; background: Beige; padding: 5px; border: 1px solid;}} || |- | History, move, and watchlist links || <code><nowiki>{{navbar|template=Template Name|e|t|h|m|w}}</nowiki></code> || {{navbar|template=Navbar/doc|e|t|h|m|w}} |} Note that to show the history, move, and watchlist links, {{para|template}} needs to be set to the template value specifically. Individual values can be left out of this list, e.g. <code><nowiki>{{navbar|template=Template Name|h|m|w}}</nowiki></code> will only show the view, history, move, and watchlist links. ===Shortcut templates === The <code>mini=y</code> and <code>plain=y</code> parameters can be avoided by using the {{tlx|v}} or {{tlx|view}} templates, respectively, instead. {{tl|view}} and {{tl|v}} also support changing the shown links, for example only view and edit, or only view and talk: {| class="wikitable" |- ! Code ! Result |- |{{demo|br=<td>|<nowiki>{{view|template=view/doc}}</nowiki>}} |- |{{demo|br=<td>|<nowiki>{{view|template=view/doc|talk}}</nowiki>}} |- |{{demo|br=<td>|<nowiki>{{view|template=view/doc|talk|edit}}</nowiki>}} |- |{{demo|br=<td>|<nowiki>{{v|template=v/doc}}</nowiki>}} |- |{{demo|br=<td>|<nowiki>{{v|template=v/doc|t}}</nowiki>}} |- |{{demo|br=<td>|<nowiki>{{v|template=v/doc|t|e}}</nowiki>}} |} ==Notes== Navbar is contained within a {{tag|div}} in order to accommodate a horizontal unnumbered list. This means it cannot be placed inside a {{tag|span}} or other inline element, because the [[HTML Tidy]] extension will 'fix' situations where it finds block elements inside inline elements. ==Prepackaged== ;{{tl|Navbar-header}}: Positions {{navbar|Navbar/doc|mini=1}} on the right edge of the line, often used in non-collapsible navbox heading. ;{{tl|Navbar-collapsible}}: For use in conjunction with [[Help:Collapsing|collapsible tables]], floats {{navbar|Navbar/doc|mini=1}} opposite of the [hide]/[show] feature. ==See also== {{Edit templates}} Other [[:Category:Internal link templates|internal link templates]], including: *{{tl|Talk}} – plain talk link *{{tl|Watch}} – plain link that adds the page to your [[Help:Watchlist|watchlist]] *[[:Category:Internal template-link templates]] {{Navigation templates}} == TemplateData == {{TemplateData header}} <templatedata> { "description": "When placed inside a given template, it adds navbar navigational functionality", "params": { "1": { "label": "Template Name", "description": "The name of the template, so links work correctly", "type": "string", "default": "", "required": true }, "text": { "label": "Different text", "description": "Allows custom text to replace the default 'this box'", "type": "string", "default": "This box", "required": false }, "plain": { "label": "Without 'This box:' text", "description": "Removes 'This box'", "type": "number", "default": "0", "required": false }, "mini": { "label": "Short Version", "description": "Shortens text to V T E", "type": "number", "default": "0", "required": false }, "brackets": { "label": "with brackets", "description": "adds brackets before and after the links", "type": "number", "default": "0", "required": false }, "fontstyle": { "label": "Font color", "description": "Allows you to change the color of the font (in the format color:green)", "type": "string", "default": "", "required": false }, "style": { "label": "To float to the side", "description": "Allows the template to float to the side (format=float:right)", "type": "string", "default": "float:left", "required": false } } } </templatedata><!--- PLEASE ADD METADATA TO THE <includeonly> SECTION HERE ---><includeonly>{{Sandbox other|| [[Category:Internal link templates]] }}</includeonly> 46b87a7b308f8ad62d7b601910824a12ed424081 Template:Wikidata fallback link 10 1072 2342 2023-04-15T18:00:04Z wikipedia>MusikBot II 0 Protected "[[Template:Wikidata fallback link]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 369 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki {{#if:{{#invoke:wd|label|raw|eid={{{1|}}}}} |{{#ifexist:{{#invoke:wd|title|{{{1|}}}}} |{{#invoke:wd|label|linked|{{{1|}}}}} |{{#if:{{#invoke:wd|label|{{{1|}}}}} |{{#ifexist:{{#invoke:wd|label|{{{1|}}}}} |{{#invoke:wd|label|{{{1|}}}}}<!--Do not link to label if it targets the wrong article--> |[[{{#invoke:wd|label|{{{1|}}}}}]] }}&nbsp; }}{{#switch:{{{wd|on}}} |off= |icon=<span class="noprint metadata ill">[[File:OOjs UI icon edit-ltr-progressive.svg|10px|link=:d:Special:EntityPage/{{{1}}}|Edit on Wikidata]]</span> |on |#default=<span class="noprint metadata ill"><small>&#91;[[:d:Special:EntityPage/{{{1}}}|{{#switch:{{{short|{{{s|}}}}}}|yes|y|true|t|on|set|1=d|Wikidata}}]]&#93;</small></span> }} }} }}<noinclude> {{documentation}} </noinclude> 4ecc9c0b6a3ff7a4df16e1793dfc11b7c649aa45 Module:Portal 828 839 1860 2023-04-17T15:55:14Z wikipedia>Hike395 0 alphabetize "default image" tracking category Scribunto text/plain --[==[ This module is a Lua implementation of the old {{Portal}} template. As of February 2019 it is used on nearly 7,900,000 articles. -- Please take care when updating it! It outputs two functions: p.portal, which generates a list of portals, and p.image, which -- produces the image name for an individual portal. -- The portal image data is kept in submodules of [[Module:Portal/images]], listed below: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- -- The images data pages are separated by the first letter to reduce server load when images are added, changed, or removed. -- Previously all the images were on one data page at [[Module:Portal/images]], but this had the disadvantage that all -- 5,000,000 pages using this module needed to be refreshed every time an image was added or removed. ]==] local p = {} -- determine whether we're being called from a sandbox local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) local sandbox = isSandbox and '/sandbox' or '' local function sandboxVersion(s) return isSandbox and s..'-sand' or s end local templatestyles = 'Module:Portal'..sandbox..'/styles.css' local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') -- List of non-talk namespaces which should not be tracked (Talk pages are never tracked) local badNamespaces = {'user','template','draft','wikipedia'} -- Check whether to do tracking in this namespace -- Returns true unless the page is one of the banned namespaces local function checkTracking(title) local thisPage = title or mw.title.getCurrentTitle() if thisPage.isTalkPage then return false end local ns = thisPage.nsText:lower() for _, v in ipairs(badNamespaces) do if ns == v then return false end end return true end local function matchImagePage(s) -- Finds the appropriate image subpage given a lower-case -- portal name plus the first letter of that portal name. if type(s) ~= 'string' or #s < 1 then return end local firstLetter = mw.ustring.sub(s, 1, 1) local imagePage if mw.ustring.find(firstLetter, '^[a-z]') then imagePage = 'Module:Portal/images/' .. firstLetter .. sandbox else imagePage = 'Module:Portal/images/other' .. sandbox end return mw.loadData(imagePage)[s] end local function getAlias(s) -- Gets an alias from the image alias data page. local aliasData = mw.loadData('Module:Portal/images/aliases'..sandbox) for portal, aliases in pairs(aliasData) do for _, alias in ipairs(aliases) do if alias == s then return portal end end end end local defaultImage = 'Portal-puzzle.svg|link=|alt=' local function getImageName(s) -- Gets the image name for a given string. if type(s) ~= 'string' or #s < 1 then return defaultImage end s = mw.ustring.lower(s) return matchImagePage(s) or matchImagePage(getAlias(s)) or defaultImage end -- Function to check argument portals for errors, generate tracking categories if needed -- Function first checks for too few/many portals provided -- Then checks the portal list to purge any portals that don't exist -- Arguments: -- portals: raw list of portals -- args.tracking: is tracking requested? (will not track on bad titles or namespaces) -- args.redlinks: should redlinks be displayed? -- args.minPortals: minimum number of portal arguments -- args.maxPortals: maximum number of portal arguments -- Returns: -- portals = list of portals, with redlinks purged (if args.redlinks=false) -- trackingCat = possible tracking category -- errorMsg = error message function p._checkPortals(portals, args) local trackingCat = '' local errMsg = nil -- Tracking is on by default. -- It is disabled if any of the following is true -- 1/ the parameter "tracking" is set to 'no, 'n', or 'false' -- 2/ the current page fails the namespace or pagename tests local trackingEnabled = args.tracking and checkTracking() args.minPortals = args.minPortals or 1 args.maxPortals = args.maxPortals or -1 -- check for too few portals if #portals < args.minPortals then errMsg = 'please specify at least '..args.minPortals..' portal'..(args.minPortals > 1 and 's' or '') trackingCat = (trackingEnabled and '[[Category:Portal templates with too few portals]]' or '') return portals, trackingCat, errMsg end -- check for too many portals if args.maxPortals >= 0 and #portals > args.maxPortals then errMsg = 'too many portals (maximum = '..args.maxPortals..')' trackingCat = (trackingEnabled and '[[Category:Portal templates with too many portals]]' or '') return portals, trackingCat, errMsg end if not args.redlinks or trackingEnabled then -- make new list of portals that exist local existingPortals = {} for _, portal in ipairs(portals) do local portalTitle = mw.title.new(portal,"Portal") -- if portal exists, put it into list if portalTitle and portalTitle.exists then table.insert(existingPortals,portal) -- otherwise set tracking cat elseif trackingEnabled then trackingCat = "[[Category:Portal templates with redlinked portals]]" end end -- If redlinks is off, use portal list purged of redlinks portals = args.redlinks and portals or existingPortals -- if nothing left after purge, set tracking cat if #portals == 0 and trackingEnabled then trackingCat = trackingCat.."[[Category:Pages with empty portal template]]" end end return portals, trackingCat, errMsg end local function portalBox(args) return mw.html.create('ul') :attr('role', 'navigation') :attr('aria-label', 'Portals') :addClass('noprint') :addClass(args.error and '' or sandboxVersion('portalbox')) :addClass(args.border and sandboxVersion('portalborder') or '') :addClass(sandboxVersion(args.left and 'portalleft' or 'portalright')) :css('margin', args.margin or nil) :newline() end local function fillBox(root, contents) for _, item in ipairs(contents) do local entry = root:tag('li') entry:addClass(sandboxVersion('portalbox-entry')) local image = entry:tag('span') image:addClass(sandboxVersion('portalbox-image')) image:wikitext(item[1]) local link = entry:tag('span') link:addClass(sandboxVersion('portalbox-link')) link:wikitext(item[2]) end return root end function p._portal(portals, args) -- This function builds the portal box used by the {{portal}} template. -- Normalize all arguments if args.redlinks == 'include' then args.redlinks = true end args.addBreak = args['break'] for key, default in pairs({left=false,tracking=true,nominimum=false, redlinks=false,addBreak=false,border=true}) do if args[key] == nil then args[key] = default end args[key] = yesno(args[key], default) end local root = portalBox(args) local trackingCat = '' local errMsg = nil args.minPortals = args.nominimum and 0 or 1 args.maxPortals = -1 portals, trackingCat, errMsg = p._checkPortals(portals, args) root:wikitext(trackingCat) -- if error message, put it in the box and return if errMsg then if args.border then -- suppress error message when border=no args.error = true -- recreate box without fancy formatting root = portalBox(args) root:wikitext(trackingCat) local errTag = root:tag('strong') errTag:addClass('error') errTag:css('padding','0.2em') errTag:wikitext('Error: '..errMsg) end return tostring(root) end -- if no portals (and no error), just return tracking category if #portals == 0 then return trackingCat end local contents = {} -- Display the portals specified in the positional arguments. local defaultUsed = nil for _, portal in ipairs(portals) do local portalImage = getImageName(portal) if portalImage == defaultImage then defaultUsed = portal end local image = string.format('[[File:%s|32x28px|class=noviewer]]', portalImage) local link = string.format('[[Portal:%s|%s%sportal]]', portal, portal, args.addBreak and '<br />' or ' ') table.insert(contents, {image, link}) end if defaultUsed and checkTracking() then local cat = string.format('[[Category:Portal templates with default image|%s]]', defaultUsed) root:wikitext(cat) end return tostring(fillBox(root, contents)) end function p._demo(imageList, args) for key, default in pairs({left=false,border=true}) do if args[key] == nil then args[key] = default end args[key] = yesno(args[key], default) end local root = portalBox(args) local contents = {} -- Display the portals specified in the positional arguments. for _, fn in ipairs(imageList) do local image = string.format('[[File:%s|32x28px|class=noviewer]]',fn) local link = string.format('[[:File:%s|%s]]',fn,fn) table.insert(contents,{image,link}) end return tostring(fillBox(root,contents)) end function p._image(portal,keep) -- Wrapper function to allow getImageName() to be accessed through #invoke. -- backward compatibility: if table passed, take first element if type(portal) == 'table' then portal = portal[1] end local name = getImageName(portal) -- If keep is yes (or equivalent), then allow all metadata (like image borders) to be returned local keepargs = yesno(keep) local args = mw.text.split(name, "|", true) local result = {args[1]} -- the filename always comes first local category = '' -- parse name, looking for category arguments for i = 2,#args do local m = mw.ustring.match(args[i], "^%s*category%s*=") if keepargs or m then table.insert(result, args[i]) end end -- reassemble arguments return table.concat(result,"|") end local function getAllImageTable() -- Returns an array containing all image subpages (minus aliases) as loaded by mw.loadData. local images = {} for i, subpage in ipairs{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'other'} do local imageTable = mw.loadData('Module:Portal/images/' .. subpage .. sandbox) for portal, image in pairs(imageTable) do local args = mw.text.split(image,"|") images[portal] = args[1] -- just use image filename end end return images end function p._displayAll(portals, args) -- This function displays all portals that have portal images. This function is for maintenance purposes and should not be used in -- articles, for two reasons: 1) there are over 1500 portals with portal images, and 2) the module doesn't record how the portal -- names are capitalized, so the portal links may be broken. local lang = mw.language.getContentLanguage() portals = portals or {} for portal in pairs(getAllImageTable()) do table.insert(portals,lang:ucfirst(portal)) end table.sort(portals) args.redlinks = args.redlinks or "yes" return p._portal(portals, args) end function p._imageDupes() -- This function searches the image subpages to find duplicate images. If duplicate images exist, it is not necessarily a bad thing, -- as different portals might just happen to choose the same image. However, this function is helpful in identifying images that -- should be moved to a portal alias for ease of maintenance. local exists, dupes = {}, {} for portal, image in pairs(getAllImageTable()) do if not exists[image] then exists[image] = portal else table.insert(dupes, string.format('The image "[[:File:%s|%s]]" is used for both portals "%s" and "%s".', image, image, exists[image], portal)) end end if #dupes < 1 then return 'No duplicate images found.' else return 'The following duplicate images were found:\n* ' .. table.concat(dupes, '\n* ') end end local function processPortalArgs(args) -- This function processes a table of arguments and returns two tables: an array of portal names for processing by ipairs, and a table of -- the named arguments that specify style options, etc. We need to use ipairs because we want to list all the portals in the order -- they were passed to the template, but we also want to be able to deal with positional arguments passed explicitly, for example -- {{portal|2=Politics}}. The behaviour of ipairs is undefined if nil values are present, so we need to make sure they are all removed. args = type(args) == 'table' and args or {} local portals = {} local namedArgs = {} for k, v in pairs(args) do if type(k) == 'number' and type(v) == 'string' then -- Make sure we have no non-string portal names. table.insert(portals, k) elseif type(k) ~= 'number' then namedArgs[k] = v end end table.sort(portals) for i, v in ipairs(portals) do portals[i] = args[v] end return portals, namedArgs end -- Entry point for sorting portals from other named arguments function p._processPortalArgs(args) return processPortalArgs(args) end function p.image(frame) local origArgs = getArgs(frame) local portals, args = processPortalArgs(origArgs) return p._image(portals[1],args.border) end function p.demo(frame) local args = getArgs(frame) local styles = frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } return styles..p._demo(args,args) end local function makeWrapper(funcName) -- Processes external arguments and sends them to the other functions. return function (frame) -- If called via #invoke, use the args passed into the invoking -- template, or the args passed to #invoke if any exist. Otherwise -- assume args are being passed directly in from the debug console -- or from another Lua module. -- Also: trim whitespace and remove blank arguments local origArgs = getArgs(frame) -- create two tables to pass to func: an array of portal names, and a table of named arguments. local portals, args = processPortalArgs(origArgs) local results = '' if funcName == '_portal' or funcName == '_displayAll' then results = frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } end return results .. p[funcName](portals, args) end end for _, funcName in ipairs{'portal', 'imageDupes', 'displayAll'} do p[funcName] = makeWrapper('_' .. funcName) end return p 2c16356f0d15e035f16db3c400c43813fbecaced Module:DecodeEncode 828 1660 3059 2023-04-17T20:18:54Z Lemondoge 43 Fixed error (`a ~= (nil or '')` doesn't work; change to `a and a ~= ''`). Scribunto text/plain require('strict') local p = {} local function _getBoolean( boolean_str ) -- from: module:String; adapted -- requires an explicit true local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'true' or boolean_str == 'yes' or boolean_str == '1' then boolean_value = true else boolean_value = false end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else boolean_value = false end return boolean_value end function p.decode( frame ) local s = frame.args['s'] or '' local subset_only = _getBoolean(frame.args['subset_only'] or false) return p._decode( s, subset_only ) end function p._decode( s, subset_only ) -- U+2009 THIN SPACE: workaround for bug: HTML entity &thinsp; is decoded incorrect. Entity &ThinSpace; gets decoded properly s = mw.ustring.gsub( s, '&thinsp;', '&ThinSpace;' ) -- U+03B5 ε GREEK SMALL LETTER EPSILON: workaround for bug (phab:T328840): HTML entity &epsilon; is decoded incorrect for gsub(). Entity &epsi; gets decoded properly s = mw.ustring.gsub( s, '&epsilon;', '&epsi;' ) local ret = mw.text.decode( s, not subset_only ) return ret end function p.encode( frame ) local s = frame.args['s'] or '' local charset = frame.args['charset'] return p._encode( s, charset ) end function p._encode( s, charset ) -- example: charset = '_&©−°\\\"\'\=' -- do escape with backslash not %; local ret if charset and charset ~= '' then ret = mw.text.encode( s, charset ) else -- use default: chartset = '<>&"\' ' (outer quotes = lua required; space = NBSP) ret = mw.text.encode( s ) end return ret end return p 9bb0f28593a5597a72c90c6075ceef68f9298cf8 Module:Infobox3cols 828 1538 2873 2023-04-18T02:00:13Z Lemondoge 43 Slight simplification to regex patterns ("%d%d*" to "%d+") Scribunto text/plain local check_for_unknown_parameters = require("Module:Check for unknown parameters")._check local p = {} local args = {} local origArgs = {} local root local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = 'Hlist/styles.css' } } local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -- Returns the union of the values of two tables, as a sequence. local function union(t1, t2) local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix was 'data', and -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local function getArgNums(prefix, suffix) local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([0-9]%d*)' .. suffix .. '$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. local function addRow(rowArgs) if rowArgs.header then has_list_class({rowArgs.rowclass, rowArgs.class, args.headerclass}) root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :tag('th') :attr('colspan', '4') :addClass('infobox-header') :addClass(rowArgs.class) :addClass(args.headerclass) -- @deprecated next; target .infobox-<name> .infobox-header :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :cssText(args.extracellstyles[rowArgs.num .. 'h']) :wikitext(rowArgs.header) elseif rowArgs.label then if rowArgs.data then has_list_class({rowArgs.rowclass, rowArgs.class}) local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) row :tag('th') :attr('scope', 'row') :addClass('infobox-label') :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :cssText(args.extracellstyles[rowArgs.num .. 'l']) :wikitext(rowArgs.label) :done() local dataCell = row:tag('td') dataCell :attr('colspan', '3') :addClass('infobox-data') :addClass(rowArgs.class) -- @deprecated next; target .infobox-<name> .infobox-data :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :cssText(args.extracellstyles[rowArgs.num]) :newline() :wikitext(rowArgs.data) elseif rowArgs.dataa or rowArgs.datab or rowArgs.datac then has_list_class({rowArgs.rowclass, rowArgs.classa}) local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) row :tag('th') :attr('scope', 'row') :addClass('infobox-label') :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :cssText(args.extracellstyles[rowArgs.num .. 'l']) :wikitext(rowArgs.label) :done() local dataCella = row:tag('td') dataCella :addClass('infobox-data infobox-data-a') :addClass(rowArgs.classa) -- @deprecated next; target .infobox-<name> .infobox-data-a :cssText(rowArgs.dataastyle) :cssText(rowArgs.rowcellstyle) :cssText(args.extracellstyles[rowArgs.num .. 'a']) :newline() :wikitext(rowArgs.dataa) if rowArgs.renderb then has_list_class({rowArgs.classb}) local dataCellb = row:tag('td') dataCellb :addClass('infobox-data infobox-data-b') :addClass(rowArgs.classb) -- @deprecated next; target .infobox-<name> .infobox-data-b :cssText(rowArgs.databstyle) :cssText(rowArgs.rowcellstyle) :cssText(args.extracellstyles[rowArgs.num .. 'b']) :newline() :wikitext(rowArgs.datab) end if rowArgs.renderc then has_list_class({rowArgs.classc}) local dataCellc = row:tag('td') dataCellc :addClass('infobox-data infobox-data-c') :addClass(rowArgs.classc) -- @deprecated next; target .infobox-<name> .infobox-data-c :cssText(rowArgs.datacstyle) :cssText(rowArgs.rowcellstyle) :cssText(args.extracellstyles[rowArgs.num .. 'c']) :newline() :wikitext(rowArgs.datac) end end elseif rowArgs.data then has_list_class({rowArgs.rowclass, rowArgs.class}) local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) local dataCell = row:tag('td') dataCell :attr('colspan', '4') :addClass('infobox-full-data') :addClass(rowArgs.class) -- @deprecated next; target .infobox-<name> .infobox-full-data :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :cssText(args.extracellstyles[rowArgs.num]) :newline() :wikitext(rowArgs.data) end end local function renderTitle() if not args.title then return end has_list_class({args.titleclass}) root :tag('caption') :addClass('infobox-title') :addClass(args.titleclass) -- @deprecated next; target .infobox-<name> .infobox-title :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end has_list_class({args.aboveclass}) root :tag('tr') :tag('th') :attr('colspan', '4') :addClass('infobox-above') :addClass(args.aboveclass) -- @deprecated next; target .infobox-<name> .infobox-above :cssText(args.abovestyle) :wikitext(args.above) end local function renderBelowRow() if not args.below then return end has_list_class({args.belowclass}) root :tag('tr') :tag('td') :attr('colspan', '4') :addClass('infobox-below') :addClass(args.belowclass) -- @deprecated next; target .infobox-<name> .infobox-below :cssText(args.belowstyle) :newline() :wikitext(args.below) end local function addSubheaderRow(subheaderArgs) if not subheaderArgs.data then return end has_list_class({subheaderArgs.rowclass, subheaderArgs.class}) local row = root:tag('tr') row:addClass(subheaderArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '4') :addClass('infobox-subheader') :addClass(subheaderArgs.class) :cssText(subheaderArgs.datastyle) :cssText(subheaderArgs.rowcellstyle) :newline() :wikitext(subheaderArgs.data) end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader','') for k, num in ipairs(subheadernums) do addSubheaderRow({ data = args['subheader' .. tostring(num)], -- @deprecated next; target .infobox-<name> .infobox-subheader datastyle = args.subheaderstyle, rowcellstyle = args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function addImageRow(imageArgs) if not imageArgs.data then return end has_list_class({imageArgs.rowclass, imageArgs.class}) local row = root:tag('tr') row:addClass(imageArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '4') :addClass('infobox-image') :addClass(imageArgs.class) :cssText(imageArgs.datastyle) :newline() :wikitext(imageArgs.data) end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image','') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :addClass('infobox-caption') -- @deprecated next; target .infobox-<name> .infobox-caption :cssText(args.captionstyle) :wikitext(caption) end addImageRow({ data = tostring(data), -- @deprecated next; target .infobox-<name> .infobox-image datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end -- Gets the union of the header and data argument numbers, -- and renders them all in order local function renderRows() local rownums = union(getArgNums('header',''), getArgNums('data','[abc]?')) local datab_count = #(getArgNums('data','b')) local datac_count = #(getArgNums('data','c')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ num = tostring(num), renderb = datab_count > 0, renderc = datac_count > 0, header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], dataa = args['data' .. tostring(num) .. 'a'], dataastyle = args.datastylea, classa = args['class' .. tostring(num) .. 'a'], datab = args['data' .. tostring(num) .. 'b'], databstyle = args.datastyleb, classb = args['class' .. tostring(num) .. 'b'], datac = args['data' .. tostring(num) .. 'c'], datacstyle = args.datastylec, classc = args['class' .. tostring(num) .. 'c'], rowclass = args['rowclass' .. tostring(num)], -- @deprecated next; target .infobox-<name> rowclass rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)], }) end end local function renderNavBar() if not args.name then return end root :tag('tr') :tag('td') :attr('colspan', '4') :addClass('infobox-navbar') :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, }) end local function renderItalicTitle() local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then root:wikitext(require('Module:Italic title')._main({})) end end -- Render tracking categories. args.decat == turns off tracking categories. local function renderTrackingCategories() local title = mw.title.getCurrentTitle() if args.decat == 'yes' then return end if #(getArgNums('data','[abc]?')) == 0 and title.namespace == 0 then root:wikitext('[[Category:Articles using infobox templates with no data rows]]') end root:wikitext(check_for_unknown_parameters({ checkpositional = "y", ignoreblank = "y", regexp1 = "header[%d]+", regexp2 = "label[%d]+", regexp3 = "data[%d]+[abc]?", regexp4 = "class[%d]+[abc]?", regexp5 = "rowclass[%d]+", regexp6 = "rowstyle[%d]+", regexp7 = "rowcellstyle[%d]+", unknown = "[[Category:Pages using infobox3cols with undocumented parameters|_VALUE_" .. title.text .. "]]", "above", "aboveclass", "aboverowclass", "abovestyle", "below", "belowclass", "belowrowclass", "belowstyle", "bodyclass", "bodystyle", "caption", "caption1", "caption2", "captionstyle", "child", "datastyle", "datastylea", "datastyleb", "datastylec", "extracellstyles", "headerstyle", "image", "image1", "image2", "imageclass", "imagerowclass1", "imagerowclass2", "imagestyle", "labelstyle", "name", "subbox", "subheader", "subheader2", "subheaderclass", "subheaderrowclass1", "subheaderrowclass2", "subheaderstyle", "templatestyles", "title", "titleclass", "titlestyle", }, origArgs)) if origArgs.header0 or origArgs.label0 or origArgs.data0 or origArgs.data0a or origArgs.data0b or origArgs.data0c or origArgs.class0 or origArgs.rowclass0 then root:wikitext("[[Category:Pages using infobox3cols with header0 or label0 or data0]]") end if title.namespace == 10 and mw.ustring.sub(title.text, 1, 7) == "Infobox" then root:wikitext("[[Category:Infobox templates|" .. mw.ustring.sub(title.text, 9) .. "]]") end end --[=[ Loads the templatestyles for the infobox. TODO: FINISH loading base templatestyles here rather than in MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables. See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :). When we do this we should clean up the inline CSS below too. Will have to do some bizarre conversion category like with sidebar. ]=] local function loadTemplateStyles() local frame = mw.getCurrentFrame() local hlist_templatestyles = '' if lists.hlist_t.found then hlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.hlist_t.styles } } end local plainlist_templatestyles = '' if lists.plainlist_t.found then plainlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.plainlist_t.styles } } end -- See function description local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' } } local templatestyles = '' if args['templatestyles'] then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ -- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering. -- this ordering is not a guarantee because the rows of interest invoking -- each class may not be on a specific page hlist_templatestyles, plainlist_templatestyles, base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles }) end -- common functions between the child and non child cases local function structure_infobox_common() renderSubheaders() renderImages() -- preprocessRows() renderRows() renderBelowRow() renderNavBar() renderItalicTitle() -- renderEmptyRowCategories() renderTrackingCategories() -- cleanInfobox() end -- Specify the overall layout of the infobox, with special settings if the -- infobox is used as a 'child' inside another infobox. local function _infobox() root = mw.html.create('table') has_list_class({args.bodyclass}) root :addClass((args.child == 'yes' or args.subbox == 'yes') and 'infobox-subbox' or 'infobox') :addClass(args.child == 'yes' and 'infobox-3cols-child' or nil) :addClass(args.bodyclass) -- @deprecated next; target .infobox-<name> :cssText(args.bodystyle) renderTitle() renderAboveRow() structure_infobox_common() return loadTemplateStyles() .. tostring(root) end -- If the argument exists and isn't blank, add it to the argument table. -- Blank arguments are treated as nil to match the behaviour of ParserFunctions. local function preprocessSingleArg(argName) if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end -- Assign the parameters with the given prefixes to the args table, in order, in -- batches of the step size specified. This is to prevent references etc. from -- appearing in the wrong order. The prefixTable should be an array containing -- tables, each of which has two possible fields, a "prefix" string and a -- "depend" table. The function always parses parameters containing the "prefix" -- string, but only parses parameters in the "depend" table if the prefix -- parameter is present and non-blank. local function preprocessArgs(prefixTable, step) if type(prefixTable) ~= 'table' then error("Non-table value detected for the prefix table", 2) end if type(step) ~= 'number' then error("Invalid step value detected", 2) end -- Get arguments without a number suffix, and check for bad input. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Invalid input detected to preprocessArgs prefix table', 2) end preprocessSingleArg(v.prefix) -- Only parse the depend parameter if the prefix parameter is present -- and not blank. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Invalid "depend" parameter value detected in preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Get arguments with number suffixes. local a = 0 -- Counter variable. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) .. (v.suffix or '') if origArgs[prefixArgName] then -- Do another loop if any arguments are found, even blank ones. moreArgumentsExist = true preprocessSingleArg(prefixArgName) end -- Process the depend table if the prefix argument is present -- and not blank, or we are processing "prefix1" and "prefix" is -- present and not blank, and if the depend table is present. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) .. (v.dependsuffix or '') preprocessSingleArg(dependArgName) end end end end a = a + step end end -- Parse the data parameters in the same order that the old {{infobox}} did, so -- that references etc. will display in the expected places. Parameters that -- depend on another parameter are only processed if that parameter is present, -- to avoid phantom references appearing in article reference lists. local function parseDataParameters() preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessSingleArg('image') preprocessSingleArg('caption') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'data', suffix = 'a', depend = {'label'}}, {prefix = 'data', suffix = 'a'}, {prefix = 'data', suffix = 'b', depend = {'label'}}, {prefix = 'data', suffix = 'b'}, {prefix = 'data', suffix = 'c', depend = {'label'}}, {prefix = 'data', suffix = 'c'}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('datastylea') preprocessSingleArg('datastyleb') preprocessSingleArg('datastylec') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') -- different behaviour for italics if blank or absent args['italic title'] = origArgs['italic title'] preprocessSingleArg('decat') preprocessSingleArg('templatestyles') preprocessSingleArg('child templatestyles') preprocessSingleArg('grandchild templatestyles') args['extracellstyles'] = {} for line in mw.text.gsplit(origArgs['extracellstyles'] or '', '\n') do local equals = line:find('=') if equals then for i in mw.text.gsplit(line:sub(1, equals - 1), '%s*,%s*') do args.extracellstyles[i] = line:sub(equals + 1) end end end end -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. function p.infobox(frame) if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end parseDataParameters() return _infobox() end -- For calling via #invoke within a template function p.infoboxTemplate(frame, extra_args) origArgs = extra_args or {} for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end parseDataParameters() return _infobox() end -- Shortcut for making child infoboxes via #invoke. function p.child(frame) return p.infoboxTemplate(frame, {child = "yes"}) end return p f2c09c84b4c1f1280a46abe2b1c1f74ffb797905 Template:Notice/doc 10 1330 2665 2023-04-18T18:34:02Z w>Andrybak 0 hatnote for [[Template:Note]] wikitext text/x-wiki <!-- ******************************************************************** **** This documentation is shared between multiple templates, **** **** using {{BASEPAGENAME}} and {{#switch:...}} to customize. **** ******************************************************************** --> {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE AND INTERWIKIS TO WIKIDATA --> {{Used in system}} {{Never substitute}} {{Confused|Template:Note}} This is the {{tl|{{BASEPAGENAME}}}} message box. It should be used '''sparingly''' and only for {{#switch:{{BASEPAGENAME}} |Warning='''important''' warnings about an article or a user that cannot be shown using a more specific template. Please only use it when something is seriously wrong and other people might not otherwise know about it. |<!--DEFAULT:-->'''significant''' information for which a more specific template doesn't exist. }} Less important comments should be put as regular text on the page's talk page instead. ==Usage== '''<code><nowiki>{{</nowiki>{{BASEPAGENAME}}|1=Place notice text here. |heading=Optional heading above the text<nowiki>}}</nowiki></code>''' This box automatically changes its style depending on what kind of page it appears; see {{tl|Mbox}} for details, and view the examples below for demonstrations. ===Use in talk and userspace=== Outside "important" locations like mainspace, policy pages, and noticeboards, this message box can also be used on other pages in a more relaxed way, such as on the top of talk page alerts, wikiproject pages, userspace pages, etc. Talk and noticeboard cases should probably include your [[WP:Signature|signature]] at the end of the template's main content. ===Optional parameters === The box can be titled with an optional {{para|heading}} (or {{para|header}} or {{para|title}}). This is left-aligned by default. This:<br /> {{in5}}<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |heading=Heading |[[Lorem ipsum|Lorem ipsum]] dolor sit amet...<nowiki>}}</nowiki></code> produces an all-left notice: {{{{BASEPAGENAME}}|demospace=main |heading=Heading |style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} It can be hard to notice or read short heading and/or message on a wide monitor when they centered. For long content, it can be centered with {{para|align|center}}.<br />{{small|1=[While {{para|align|right}} is a valid value, it will only be useful when this template is ported to right-to-left language Wikipedias, and shouldn't be used on English Wikipedia or it will be difficult to read.]}}<br /> This:<br /> {{in5}}<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |heading=Heading |align=center |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> produces: {{{{BASEPAGENAME}}|demospace=main |heading=Heading |style=margin-bottom:2.0em; |align=center |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} A shorthand parameter to center the heading and main text at the same time is {{para|center|y}}. This:<br /> {{in5}}<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |heading=Heading |center=y |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> produces: {{{{BASEPAGENAME}}|demospace=main |heading=Heading |style=margin-bottom:2.0em; |center=y |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} The parameter {{para|textstyle}} can be used to pass arbitrary inline CSS to the main note content. For example, one could center small-caps text below a left-aligned heading; this:<br /> {{in5}}<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |heading=Heading |textstyle=text-align:center; font-variant:small-caps; |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> produces: {{{{BASEPAGENAME}}|demospace=main |heading=Heading |style=margin-bottom:2.0em; |textstyle=text-align:center; font-variant:small-caps;|Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} Similarly, the parameter {{para|headstyle}} can be used to pass arbitrary inline CSS to the heading content. For example, one could center a red heading above a left-aligned message; this:<br /> {{in5}}<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |heading=Heading |headstyle=text-align:center; color:red; |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> produces: {{{{BASEPAGENAME}}|demospace=main |heading=Heading |style=margin-bottom:2.0em; |headstyle=text-align:center; color:red;|Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} The message box can also take an {{para|image}} parameter (with a value of just the bare filename of the image, without <code>File:...</code>, <code>Image:...</code>, or markup), but this is discouraged in articles. For an example of its use, see below. See [[#Talk pages]], below for the talkpage-only {{para|small|y}} parameter. See also [[#Adding an image, shortcuts, etc., on the righthand side]] for additional parameters that work in talk and project pages but not articles. ===Articles=== : <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<nowiki>}}</nowiki></code> produces: {{{{BASEPAGENAME}}|demospace=main|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} ===Talk pages=== On talk pages, <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> produces: {{{{BASEPAGENAME}}|demospace=talk|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} You may also set the talkpage-only parameter {{para|small|yes}}, which alters the template's appearance thus: {{{{BASEPAGENAME}}|demospace=talk |small=yes |header=Header |style=text-align:center;<!--margin-bottom:2.0em;--> |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} : <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |small=yes |header=Header |style=text-align:center; |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code>&nbsp;produces&nbsp;...... {{clear}} Setting the {{para|image}} parameter changes the image shown on the lefthand side of the template. : <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |image=Stop hand nuvola.svg |heading=Heading |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> produces: {{{{BASEPAGENAME}}|demospace=talk<!--|style=margin-bottom:2.0em;--> |image=Stop hand nuvola.svg |heading=Heading |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} (Note the effect of omitting {{para|style|text-align:center;}} here) ===File and category pages=== <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> on a File: page would produce... {{{{BASEPAGENAME}}|demospace=file|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} ... and, on a Category: page, would produce: {{{{BASEPAGENAME}}|demospace=category|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} ===Other pages=== On other pages, such as those in the [[Wikipedia:User pages|User:]], [[Wikipedia:Wikipedia namespace|Wikipedia:]] and [[Wikipedia:Help namespace|Help:]] [[Wikipedia:Namespaces|namespaces]], <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> would produce: {{{{BASEPAGENAME}}|demospace=wikipedia|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} ===External links and equals signs=== In most cases, external links can be used in the template without any complications. If a link &ndash;&nbsp;or any text&nbsp;&ndash; contains one or more equals signs (" &#61; "), however, everything before the first sign will be interpreted as the name of a parameter. To prevent this, name the text carrying the link as the first numbered parameter: : <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |1=Any text/links including "=" should now be interpreted correctly.<nowiki>}}</nowiki></code> produces: {{{{BASEPAGENAME}}|style=margin-bottom:2.0em; |1=Any text/links including "=" should now be interpreted correctly.}} ===Adding an image, shortcuts, etc., on the righthand side=== To add shortcuts, images, other templates, etc. to the righthand side of the template, use {{para|imageright}}. This does not work in articles. For example,<br /><code><nowiki>{{</nowiki>{{BASEPAGENAME}} |imageright=<nowiki>[[File:Wiki letter w.svg|40px]] |Lorem ipsum dolor sit amet...}}</nowiki></code> produces: {{{{BASEPAGENAME}}|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |imageright=[[File:Wiki letter w.svg|40px]]}} <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |imageright=<nowiki>{{Shortcuts|You|Me}} |Lorem ipsum dolor sit amet...}}</nowiki></code> includes the {{tl|Shortcut}}s template providing links to [[You]] and [[Me]]: {{{{BASEPAGENAME}}|style=margin-bottom:2.0em; |imageright={{Shortcut|You|Me}} |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} ====Alternate shortcut option==== As an alternative to imageright, the {{para|shortcut}} (or {{para|shortcut1}}) and {{para|shortcut''N''}} parameters (where {{nowrap|''N'' {{=}} 2}} to 5) may be used to display shortcuts. For instance, <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |shortcut1=Me |shortcut2=You |shortcut3=Them |shortcut4=Us |shortcut5=Everyone |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> produces: {{{{BASEPAGENAME}}|style=margin-bottom:2.0em; |shortcut1=Me |shortcut2=You |shortcut3=Them |shortcut4=Us |shortcut5=Everyone |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} ''Note: If both imageright and any of the shorcut parameters are used, the contents of imageright will override the shortcut/s.'' For example,<br /><code><nowiki>{{</nowiki>{{BASEPAGENAME}} |imageright=<nowiki>[[File:Wiki letter w.svg|40px]] |shortcut1=Me |shortcut2=You |shortcut3=Them |shortcut4=Us |shortcut5=Everyone |Lorem ipsum dolor sit amet...}}</nowiki></code> produces: {{{{BASEPAGENAME}}|style=margin-bottom:2.0em; |imageright=[[File:Wiki letter w.svg|40px]] |shortcut1=Me |shortcut2=You |shortcut3=Them |shortcut4=Us |shortcut5=Everyone |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} {{{{BASEPAGENAME}} and warning templates}} <includeonly>{{Sandbox other| | <!-- CATEGORIES BELOW THIS LINE PLEASE; INTERWIKIS AT WIKIDATA --> [[Category:Notice and warning templates]] [[Category:Talk header templates]] <!--[[labconsole:Template:Warning]]--> }}</includeonly> 248296295ee59fe7d171a3281b2a8eab73be31e9 Template:Uses TemplateStyles 10 81 1079 197 2023-04-18T22:22:16Z wikipedia>Grufo 0 Move the preview inside the documentation wikitext text/x-wiki <includeonly>{{#invoke:Uses TemplateStyles|main}}</includeonly><noinclude>{{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 60f2fc73c4d69b292455879f9fcb3c68f6c63c2a Module:Convert/text 828 1167 2496 2023-04-19T04:48:47Z w>Johnuniq 0 update from sandbox per [[Template talk:Convert#Module version 28]] Scribunto text/plain -- Text used by Module:Convert for enwiki. -- This is a separate module to simplify translation for use on another wiki. -- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki. -- Some units accept an SI prefix before the unit code, such as "kg" for kilogram. local SIprefixes = { -- The prefix field is what the prefix should be, if different from the prefix used. ['Q'] = { exponent = 30, name = 'quetta', }, ['R'] = { exponent = 27, name = 'ronna', }, ['Y'] = { exponent = 24, name = 'yotta', }, ['Z'] = { exponent = 21, name = 'zetta', }, ['E'] = { exponent = 18, name = 'exa' , }, ['P'] = { exponent = 15, name = 'peta' , }, ['T'] = { exponent = 12, name = 'tera' , }, ['G'] = { exponent = 9, name = 'giga' , }, ['M'] = { exponent = 6, name = 'mega' , }, ['k'] = { exponent = 3, name = 'kilo' , }, ['h'] = { exponent = 2, name = 'hecto', }, ['da']= { exponent = 1, name = 'deca' , name_us = 'deka' }, ['d'] = { exponent = -1, name = 'deci' , }, ['c'] = { exponent = -2, name = 'centi', }, ['m'] = { exponent = -3, name = 'milli', }, ['μ'] = { exponent = -6, name = 'micro', }, -- key = 'GREEK SMALL LETTER MU' (U+03BC) utf-8 CE BC ['µ'] = { exponent = -6, name = 'micro', prefix = 'μ' }, -- key = 'MICRO SIGN' (U+00B5) utf-8 C2 B5 ['u'] = { exponent = -6, name = 'micro', prefix = 'μ' }, -- not an SI prefix, but allow for people typing this ['n'] = { exponent = -9, name = 'nano' , }, ['p'] = { exponent =-12, name = 'pico' , }, ['f'] = { exponent =-15, name = 'femto', }, ['a'] = { exponent =-18, name = 'atto' , }, ['z'] = { exponent =-21, name = 'zepto', }, ['y'] = { exponent =-24, name = 'yocto', }, ['r'] = { exponent =-27, name = 'ronto', }, ['q'] = { exponent =-30, name = 'quecto', }, } -- Some units can be qualified with one of the following prefixes, when linked. local customary_units = { { "US", link = "United States customary units" }, { "U.S.", link = "United States customary units" }, { "imperial", link = "Imperial units" }, { "imp", link = "Imperial units" }, } -- Names when using engineering notation (a prefix of "eN" where N is a number; example "e6km"). -- key = { "name", link = "article title", exponent = numeric_key_value } -- If lk=on and link is defined, the name of the number will appear as a link. local eng_scales = { ["3"] = { "thousand", exponent = 3 }, ["6"] = { "million", exponent = 6 }, ["9"] = { "billion", link = "1000000000 (number)", exponent = 9 }, ["12"] = { "trillion", link = "1000000000000 (number)", exponent = 12 }, ["15"] = { "quadrillion", link = "1000000000000000 (number)", exponent = 15 }, } local all_categories = { unit = "[[Category:Convert errors]]", option = "[[Category:Convert errors]]", warning = '[[Category:Convert invalid options]]', tracking = '[[Category:Convert tracking]]', } -- For some error messages, the following puts the wanted style around -- each unit code marked like '...%{ft%}...'. local unitcode_regex = '%%([{}])' local unitcode_replace = { ['{'] = '"', ['}'] = '"' } -- no longer need the more elaborate substitute used before 2013-09-28 -- All messages that may be displayed if a problem occurs. local all_messages = { -- Message format string: $1=title, $2=text, $3=category, $4=anchor. -- Each displayed message starts with "Convert:" so can easily locate by searching article. cvt_format = '<sup class="noprint Inline-Template" style="white-space:nowrap;">[<i>[[Help:Convert messages#$4|<span title="Convert: $1">convert: $2</span>]]</i>]</sup>$3<span class="error"></span>', cvt_format2 = '<sup class="noprint Inline-Template" style="white-space:nowrap;">[[Help:Convert messages#$4|<span title="Convert: $1">$2</span>]]</sup>$3<span class="error"></span>', cvt_format_preview = '<strong class="error">Error in convert: $1 [[Help:Convert messages#$4|(help)]]</strong>$3', -- Each of following messages is a table: -- { [1] = 'title', -- mouseover title text -- [2] = 'text', -- link text displayed in article -- [3] = 'category key', -- key to lookup category in all_categories -- [4] = 'anchor', -- anchor for link to relevant section on help page -- regex = gsub_regex, -- replace = gsub_table, -- } Mouseover title text Link text CatKey Anchor cvt_bad_input = { 'input "$1" must be a number and unit' , 'invalid input' , 'option', 'invalid_input' }, cvt_bad_num = { 'Value "$1" must be a number' , 'invalid number' , 'option', 'invalid_number' }, cvt_big_prec = { 'Precision "$1" is too large' , 'precision too large' , 'option', 'precision_too_large' }, cvt_invalid_num = { 'Number has overflowed' , 'number overflow' , 'option', 'number_overflow' }, cvt_no_num = { 'Needs the number to be converted' , 'needs a number' , 'option', 'needs_number' }, cvt_no_num2 = { 'Needs another number for a range' , 'needs another number', 'option', 'needs_another_number' }, cvt_bad_altitude = { '"$1" needs an integer' , 'invalid altitude' , 'option', 'invalid_altitude' }, cvt_bad_frac = { '"$1" needs an integer above 1' , 'invalid fraction' , 'option', 'invalid_fraction' }, cvt_bad_prec = { 'Precision "$1" must be an integer' , 'invalid precision' , 'option', 'invalid_precision' }, cvt_bad_sigfig = { '"$1" needs a positive integer' , 'invalid sigfig' , 'option', 'invalid_sigfig' }, cvt_empty_option = { 'Ignored empty option "$1"' , 'empty option' , 'option', 'empty_option' }, cvt_deprecated = { 'Option "$1" is deprecated' , '*' , 'option', 'deprecated_option', format = 'cvt_format2', nowarn = true }, cvt_no_spell = { 'Spelling is not available' , 'bug, ask for help' , 'option', 'ask_for_help' }, cvt_unknown_option = { 'Ignored invalid option "$1"' , 'invalid option' , 'option', 'invalid_option' }, cvt_wd_fail = { 'Unable to access Wikidata' , 'wikidata problem' , 'option', 'wikidata_problem' }, cvt_bad_default = { 'Unit "$1" has an invalid default' , 'bug, ask for help' , 'unit' , 'ask_for_help' }, cvt_bad_unit = { 'Unit "$1" is invalid here' , 'unit invalid here' , 'unit' , 'unit_invalid_here' }, cvt_no_default = { 'Unit "$1" has no default output unit' , 'bug, ask for help' , 'unit' , 'ask_for_help' }, cvt_no_unit = { 'Needs name of unit' , 'needs unit name' , 'unit' , 'needs_unit_name' }, cvt_unknown = { 'Unit name "$1" is not known' , 'unknown unit' , 'unit' , 'unknown_unit' }, cvt_should_be = { '$1' , 'ambiguous unit' , 'unit' , 'ambiguous_unit', regex = unitcode_regex, replace = unitcode_replace }, cvt_mismatch = { 'Cannot convert "$1" to "$2"' , 'unit mismatch' , 'unit' , 'unit_mismatch' }, cvt_bug_convert = { 'Bug: Cannot convert between specified units', 'bug, ask for help' , 'unit' , 'ask_for_help' }, cvt_lookup = { 'Unit "$1" is incorrectly defined' , 'bug, ask for help' , 'unit' , 'ask_for_help' }, } -- Text to join input value/unit with output value/unit. local disp_joins = { -- [1]=before output, [2]=after output, [3]=between outputs in a combination; default "; " -- [wantname] gives default abbr=off ["or"] = { " or " , "" , " or ", wantname = true }, ["sqbr-sp"] = { " [" , "]" }, ["sqbr-nbsp"] = { "&nbsp;[" , "]" }, ["comma"] = { ", " , "" , ", " }, ["semicolon"] = { "; " , "" }, ["slash-sp"] = { " / " , "" , wantname = true }, ["slash-nbsp"] = { "&nbsp;/ ", "" , wantname = true }, ["slash-nosp"] = { "/" , "" , wantname = true }, ["b"] = { " (" , ")" }, ["(or)"] = { " (" , ")", " or " }, ["br"] = { "<br />" , "" , wantname = true }, ["br()"] = { "<br />(" , ")", wantname = true }, } -- Text to separate values in a range. local range_types = { -- Specifying a table requires either: -- * "off" and "on" values (for "abbr=off" and "abbr=on"), or -- * "input" and "output" values (for LHS and RHS); -- other fields are optional. -- When "adj=on|abbr=off" applies, spaces in range text are replaced with hyphens. -- With "exception = true", that also occurs with "adj=on|abbr=on". -- If "adj" is defined here, that text (unchanged) is used with "adj=on". ["+"] = " + ", [","] = ",&nbsp;", [", and"] = ", and ", [", or"] = ", or ", ["by"] = " by ", ["-"] = "–", ["to about"] = " to about ", ["and"] = { off = " and ", on = " and ", exception = true }, ["and(-)"] = { input = " and ", output = "–" }, ["or"] = { off = " or " , on = " or " , exception = true }, ["to"] = { off = " to " , on = " to " , exception = true }, ["to(-)"] = { input = "&nbsp;to ", output = "–" }, ["+/-"] = { off = "&nbsp;±&nbsp;", on = "&nbsp;±&nbsp;", adj = "&nbsp;±&nbsp;", is_range_change = true }, ["by(x)"] = { input = " by ", output = " ×&nbsp;", out_range_x = true }, ["x"] = { off = " by ", on = " ×&nbsp;", abbr_range_x = true }, ["xx"] = "&nbsp;×&nbsp;", ["*"] = "×", ["/"] = "&thinsp;/&thinsp;", -- for a table of high/low temperatures with {{convert|83|/|63|F|disp=br()|abbr=values}} } local range_aliases = { -- ["alternative name for a range"] = "standard range name" ["–"] = "-", ["&ndash;"] = "-", ["×"] = "x", ["&times;"] = "x", ["±"] = "+/-", ["&plusmn;"] = "+/-", } -- Convert accepts range text delimited with whitespace, for example, {{convert|1 to 2|ft}}. -- In addition, the following "words" are accepted without spaces, for example, {{convert|1-2|ft}}. -- Words must be in correct order for searching, for example, 'x' after 'xx'. local range_words = { '-', '–', 'xx', 'x', '*' } local ranges = { types = range_types, aliases = range_aliases, words = range_words, } -- Valid option names. local en_option_name = { -- ["local text for option name"] = "en name used in this module" ["$"] = "$", ["abbr"] = "abbr", ["adj"] = "adj", ["altitude_ft"] = "altitude_ft", ["altitude_m"] = "altitude_m", ["comma"] = "comma", ["debug"] = "debug", ["disp"] = "disp", ["frac"] = "frac", ["input"] = "input", ["lang"] = "lang", ["lk"] = "lk", ["order"] = "order", ["qid"] = "qid", ["qual"] = "qual", ["qualifier"] = "qual", ["round"] = "round", ["sigfig"] = "sigfig", ["sing"] = "adj", -- "sing" is an old alias for "adj" ["sortable"] = "sortable", ["sp"] = "sp", ["spell"] = "spell", ["stylein"] = "stylein", ["styleout"] = "styleout", ["tracking"] = "tracking", } -- Valid option values. -- Convention: parms.opt_xxx refers to an option that is set here -- (not intended to be set by the template which invokes this module). -- Example: At enwiki, "abbr" includes: -- ["values"] = "opt_values" -- As a result, if the template uses abbr=values, Module:Convert sets: -- parms["opt_values"] = true -- parms["abbr"] = nil -- Therefore parms.abbr will be nil, or will have one of the listed values -- that do not start with "opt_". -- An option value of form "xxx?" is the same as "xxx" but shows the input as deprecated. local en_option_value = { ["$"] = 'TEXT', -- TEXT should be a currency symbol that will be used instead of "$" ["abbr"] = { -- ["local text for option value"] = "en value used in this module" ["def"] = "", -- ignored (some wrapper templates call convert with "abbr=def" to mean "default abbreviation") ["h"] = "on", -- abbr=on + use "h" for hand unit (default) ["hh"] = "opt_hand_hh", -- abbr=on + use "hh" for hand unit ["in"] = "in", -- use symbol for LHS unit ["none"] = "off", -- old name for "off" ["off"] = "off", -- use name for all units ["on"] = "on", -- use symbol for all units ["out"] = "out", -- use symbol for RHS unit (default) ["unit"] = "unit", -- abbr=on but abbreviate units only: e6km → million km (not ×10⁶ km) ["values"] = "opt_values", -- show only input and output numbers, not units ["~"] = "opt_also_symbol", -- show input unit symbol as well as name }, ["adj"] = { ["mid"] = "opt_adjectival, opt_adj_mid", -- adj=on with user-specified text after input unit (between input and output) ["off"] = "", -- ignored (off is the default) ["on"] = "opt_adjectival", -- unit name is singular and hyphenated ["pre"] = "opt_one_preunit", -- user-specified text before input unit ["ri0"] = "opt_ri=0", -- round input with precision = 0 ["ri1"] = "opt_ri=1", -- round input with precision = 1 ["ri2"] = "opt_ri=2", -- round input with precision = 2 ["ri3"] = "opt_ri=3", -- round input with precision = 3 }, ["altitude_ft"] = 'INTEGER', ["altitude_m"] = 'INTEGER', ["comma"] = { ["5"] = "opt_comma5", -- only use numsep grouping if 5 or more digits ["gaps"] = "opt_gaps", -- use gaps, not numsep, to separate groups of digits ["gaps3"] = "opt_gaps, opt_gaps3", -- group only in threes rather than default of no gap before a single digit after decimal mark ["off"] = "opt_nocomma", -- no numsep in input or output numbers }, ["debug"] = { ["yes"] = "opt_sortable_debug", -- make the normally hidden sort key visible }, ["disp"] = { ["5"] = "opt_round=5?", -- round output value to nearest 5 ["b"] = "b", -- join: '(...)' ["(or)"] = "(or)", -- join: '(...)' with 'or' between outputs in a combination ["br"] = "br", -- join: '<br />' ["br()"] = "br()", -- join: '<br />(...)' ["comma"] = "comma", -- join: ',' ["flip"] = "opt_flip", -- reverse order of input/output ["number"] = "opt_output_number_only", -- display output value (not input, and not output symbol/name) ["or"] = "or", -- join: 'or' ["out"] = "opt_output_only", ["output number only"] = "opt_output_number_only", ["output only"] = "opt_output_only", ["preunit"] = "opt_two_preunits", -- user-specified text before input and output units ["semicolon"] = "semicolon", -- join: ';' ["sqbr"] = "sqbr", -- join: '[...]' ["table"] = "opt_table", -- output is suitable for a table cell with align="right" ["tablecen"] = "opt_tablecen", -- output is suitable for a table cell with align="center" ["unit"] = "opt_input_unit_only", -- display input symbol/name (not output, and not input value) ["unit or text"] = "opt_input_unit_only, opt_ignore_error", -- display input symbol/name, or given unit code if not known ["unit2"] = "opt_output_unit_only", ["x"] = "x", -- join: <first>...<second> (user-specified text) }, ["frac"] = 'INTEGER', ["input"] = 'TEXT', -- TEXT should be value><space><unitcode> or <wikidata-property-id> ["lang"] = { -- language for output digits (both en and local digits are always accepted for input) ["en"] = "opt_lang_en", -- use en digits for numbers, regardless of local language ["local"] = "opt_lang_local", -- use local digits for numbers (default, although config can change default to en) }, ["lk"] = { ["in"] = "in", -- link LHS unit name or symbol ["off"] = "off", -- do not link: same as default except for hand unit ["on"] = "on", -- link all unit names or symbols (but not twice for the same unit) ["out"] = "out", -- link RHS unit name or symbol }, ["order"] = { ["flip"] = "opt_flip", -- reverse order of input/output ["out"] = "opt_order_out", -- do not show input; instead, use order in output combination, with the first output shown as the input }, ["qid"] = 'TEXT', -- TEXT should be a Wikidata Q item identifier ["qual"] = 'TEXT', -- TEXT should be a Wikidata Q item identifier ["round"] = { ["0.5"] = "opt_round=0.5", -- round output value to nearest 0.5 ["5"] = "opt_round=5", -- round output value to nearest 5 ["10"] = "opt_round=10", -- round output value to nearest 10 (same as but clearer than "|-1") ["25"] = "opt_round=25", -- round output value to nearest 25 ["50"] = "opt_round=50", -- round output value to nearest 50 ["each"] = "opt_round_each", -- using default precision in a range, round each output separately (default uses highest precision of each item in range) }, ["sigfig"] = 'INTEGER', ["sortable"] = { ["off"] = "", -- ignored (off is the default) ["on"] = "opt_sortable_on", -- output sort key for use in a sortable table, based on value from converting to a standard base unit ["debug"] = "opt_sortable_on, opt_sortable_debug", -- |sortable=debug is the same as |sortable=on|debug=yes }, ["sp"] = { ["us"] = "opt_sp_us", -- use U.S. spelling (like "meter" instead of default "metre") }, ["spell"] = { -- only English spelling is supported; not scientific notation; only some fractions ["in"] = "opt_spell_in", -- spell input value in words ["In"] = "opt_spell_in, opt_spell_upper", -- spell input value in words with first letter uppercase ["on"] = "opt_spell_in, opt_spell_out", -- spell input and output values in words ["On"] = "opt_spell_in, opt_spell_out, opt_spell_upper", -- same, with first letter of first word in result uppercase ["us"] = "opt_sp_us", -- use U.S. spelling; same as sp=us so spell=us also works }, ["stylein"] = 'TEXT', ["styleout"] = 'TEXT', ["tracking"] = 'TEXT', } local titles = { ["frac"] = "Fraction/styles.css", ["sfrac"] = "Sfrac/styles.css", } return { SIprefixes = SIprefixes, all_categories = all_categories, all_messages = all_messages, currency = { ['$'] = true, ['£'] = true, ['€'] = true, ['₱'] = true, ['₽'] = true, ['¥'] = true }, customary_units = customary_units, disp_joins = disp_joins, en_option_name = en_option_name, en_option_value = en_option_value, eng_scales = eng_scales, ranges = ranges, titles = titles, } ff98cf24da87736f3469f82401084ca608335d55 Module:Portal/images/s 828 842 1866 2023-04-19T13:53:32Z wikipedia>Hike395 0 rm deprecated images Scribunto text/plain --[==[ This is the "S" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "S". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be omitted. ]==] return { ["saba"] = "Flag of Saba.svg|border|link=|alt=flag", ["saint barthelemy"] = "Flag of Saint Barthelemy (local).svg|border|link=|alt=flag", ["saint helena, ascension and tristan da cunha"] = "Flag of Saint Helena.svg|border|link=|alt=flag", ["saint kitts and nevis"] = "Flag of Saint Kitts and Nevis.svg|border|link=|alt=flag", ["saint lucia"] = "Flag of Saint Lucia.svg|border|link=|alt=flag", ["saint martin"] = "Flag of Saint Martin.png|border|link=|alt=flag", ["saint pierre and miquelon"] = "Flag of Saint-Pierre and Miquelon.svg|border|link=|alt=flag", ["saint vincent and the grenadines"] = "Flag of Saint Vincent and the Grenadines.svg|border|link=|alt=flag", ["saints"] = "Gloriole blur.svg|link=|alt=", ["samoa"] = "Flag of Samoa.svg|border|link=|alt=flag", ["san antonio"] = "Coat of arms of San Antonio.svg|link=|alt=arms", ["san diego"] = "San Diego,California,USA. - panoramio (139).jpg|link=|alt=photo", ["san francisco bay area"] = "SF From Marin Highlands3.jpg|border|link=|alt=", ["san marino"] = "Flag of San Marino.svg|border|link=|alt=flag", ["são tomé and príncipe"] = "Flag of São Tomé and Príncipe.svg|border|link=|alt=flag", ["saskatchewan"] = "Flag of Saskatchewan.svg|border|link=|alt=flag", ["saudi arabia"] = "Flag of Saudi Arabia.svg|border|link=|alt=flag", ["saxony"] = "Flag of Saxony.svg|border|link=|alt=flag", ["schleswig-holstein"] = "Flag of Schleswig-Holstein (state).svg|border|link=|alt=flag", ["schools"] = "School.svg|link=|alt=icon", ["science"] = "Nuvola apps kalzium.svg|alt=icon", ["science and academia"] = "Rachel Carson w (cropped).jpg|link=|alt=photo", ["science fiction"] = "Sf-userbox.png|alt=icon", ["scotland"] = "Flag of Scotland.svg|border|link=|alt=flag", ["scottish islands"] = "ScottishIsles.jpg|link=|alt=map", ["scouting"] = "WikiProject Scouting fleur-de-lis dark.svg|alt=icon", ["seamounts"] = "Seamount.svg|link=|alt=", ["seattle"] = "SpaceNeedleTopClose.jpg|alt=icon", ["senegal"] = "Flag of Senegal.svg|border|link=|alt=flag", ["september 11 attacks"] = "Y24-Wtc-september-5.jpg|alt=icon", ["serbia"] = "Flag of Serbia.svg|border|link=|alt=flag", ["seton hall university"] = "Shu logo.png|link=|alt=logo", ["severe weather"] = "Marquette, Kansas EF4 tornado on April 14, 2012.png|link=|alt=icon", ["sexuality"] = "Bisexuality symbol (bold, color).svg|alt=icon", ["sex work"] = "Umbrella-159361.svg|link=|alt=", ["seychelles"] = "Flag of Seychelles.svg|border|link=|alt=flag", ["sf"] = "Dragon-149393.svg|alt=icon", ["sharjah"] = "Flag of Sharjah.svg|border|link=|alt=flag", ["sharks"] = "Greyreefsharksmall2.jpg|alt=icon", ["shia islam"] = "Ghadir logo.png|alt=icon", ["siberia"] = "Kuznetsk Alatau 3.jpg|border|link=|alt=", ["sierra leone"] = "Flag of Sierra Leone.svg|border|link=|alt=flag", ["sikhism"] = "Khanda emblem.svg|link=|alt=", ["sikkim"] = "Seal of Sikkim color.png|link=|alt=seal", ["sindh"] = "Flag of Sindh.svg|border|link=|alt=flag", ["singapore"] = "Flag of Singapore.svg|border|link=|alt=flag", ["sint eustatius"] = "Flag of Sint Eustatius.svg|border|link=|alt=flag", ["sint maarten"] = "Flag of Sint Maarten.svg|border|link=|alt=flag", ["slovakia"] = "Flag of Slovakia.svg|border|link=|alt=flag", ["slovenia"] = "Flag of Slovenia.svg|border|link=|alt=flag", ["snakes"] = "Snake icon.svg|link=|alt=", ["snooker"] = "Snooker balls triangled.png|alt=icon", ["social movements"] = "Peace sign.svg|link=|alt=", ["social science"] = "P social sciences-lightblue.png|link=|alt=icon", ["social sciences"] = "DrustveneNauke.png|alt=icon", ["socialism"] = "Red flag II.svg|alt=icon", ["society"] = "Social sciences.svg|alt=icon", ["software"] = "Crystal Clear device cdrom unmount.png|alt=icon", ["solar system"] = "Solar system.jpg|link=|alt=", ["solomon islands"] = "Flag of Solomon Islands.svg|border|link=|alt=flag", ["somalia"] = "Flag of Somalia.svg|border|link=|alt=flag", ["somaliland"] = "Flag of Somaliland.svg|border|link=|alt=flag", ["somerset"] = "Somerset shield.png|alt=icon", ["south africa"] = "Flag of South Africa.svg|border|link=|alt=flag", ["south america"] = "South America (orthographic projection).svg|link=|alt=map", ["south asia"] = "India 78.40398E 20.74980N.jpg|link=|alt=", ["south australia"] = "Flag of South Australia.svg|border|link=|alt=flag", ["south carolina"] = "Flag of South Carolina.svg|border|link=|alt=flag", ["south dakota"] = "Flag of South Dakota.svg|border|link=|alt=flag", ["south east england"] = "EnglandSouthEast.png|alt=icon", ["south georgia and the south sandwich islands"] = "Flag of South Georgia and the South Sandwich Islands.svg|border|link=|alt=flag", ["south korea"] = "Flag of South Korea.svg|border|link=|alt=flag", ["south sudan"] = "Flag of South Sudan.svg|border|link=|alt=flag", ["southeast asia"] = "Location Southeast Asia.svg|link=|alt=", ["southern california"] = "USA California Southern location map.svg|link=|alt=map", ["soviet union"] = "Flag of the Soviet Union.svg|border|link=|alt=flag", ["space"] = "Earth-moon.jpg|link=|alt=", ["spaceflight"] = "RocketSunIcon.svg|link=|alt=", ["spain"] = "Flag of Spain.svg|border|link=|alt=flag", ["speculative fiction"] = "Dragon-149393.svg|alt=icon", ["speculative fiction/fantasy"] = "Masked man.svg|link=|alt=icon", ["speculative fiction/horror"] = "Vampire Smiley.png|alt=icon", ["sports"] = "Sports icon.png|link=|alt=", ["sports and games"] = "Sports and games.png|alt=icon", ["sport of athletics"] = "Roman bronze copy of Myron’s Discobolos, 2nd century CE (Glyptothek Munich).jpg|link=|alt=", ["sri lanka"] = "Flag of Sri Lanka.svg|border|link=|alt=flag", ["staffordshire"] = "Staffordshire Flag.svg|border|link=|alt=flag", ["stamford"] = "Stamford town crest.png|link=|alt=crest", ["stanford university"] = "Stanford logo.png|link=|alt=logo", ["star"] = "He1523a.jpg|alt=icon", ["stars"] = "He1523a.jpg|alt=icon", ["state of georgia"] = "Flag of Georgia (U.S. state).svg|border|link=|alt=flag", ["statistics"] = "Fisher iris versicolor sepalwidth.svg|alt=icon", ["sudan"] = "Flag of Sudan.svg|border|link=|alt=flag", ["superfunds"] = "Superfund sites.svg|link=|alt=map", ["supermarket"] = "ShoppingCart.svg|link=|alt=", ["supermarkets"] = "ShoppingCart.svg|link=|alt=", ["suriname"] = "Flag of Suriname.svg|border|link=|alt=flag", ["surrey"] = "EnglandSurrey.png|alt=icon", ["sweden"] = "Flag of Sweden.svg|border|link=|alt=flag", ["switzerland"] = "Flag of Switzerland.svg|border|link=|alt=flag", ["sydney"] = "Sydney COA.gif|alt=icon", ["syria"] = "Flag of Syria.svg|border|link=|alt=flag", ["systems engineering initiative"] = "Systems Engineering Process II.gif|link=|alt=diagram", ["systems science"] = "Complex-adaptive-system.jpg|link=|alt=diagram" } 6352d6d2cc43aecf731427b7234d275ddf514e29 Template:Country data Sweden 10 1190 2519 2023-04-19T15:46:04Z w>Paine Ellsworth 0 per edit request on talk page - include flag variant wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Sweden | flag alias = Flag of Sweden.svg | flag alias-army = Naval Ensign of Sweden.svg | flag alias-air force =Naval Ensign of Sweden.svg | flag alias-1818 = Swedish and Norwegian merchant flag 1818-1844.svg | flag alias-1844 = Swedish civil ensign (1844–1905).svg | flag alias-1905 = Flag of Sweden (pre-1906).svg | flag alias-naval = Naval Ensign of Sweden.svg | flag alias-naval-1844 = Naval Ensign of Sweden (1844-1905).svg | flag alias-naval-1815 = Swedish and Norwegian naval ensign (1815-1844).svg | link alias-army = Swedish Army | link alias-air force = Swedish Air Force | link alias-naval = Swedish Navy | flag alias-navy = Naval Ensign of Sweden.svg | link alias-navy = Swedish Navy | border-army = | border-air force = | border-naval = | border-navy = | border-naval-1815 = | border-naval-1844 = | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | altvar = {{{altvar|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1818 | var2 = 1844 | var3 = 1905 | var4 = naval-1844 | var5 = naval-1815 | redir1 = SWE </noinclude> }} 046def916df87772775106a1b2c5cc5e1590e529 Template:Country data Austria 10 1184 2513 2023-04-19T17:00:17Z w>Paine Ellsworth 0 per edit request on talk page - include flag variants wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Austria | flag alias = Flag of Austria.svg | flag alias-empire = Flag of the Habsburg Monarchy.svg | flag alias-state = Flag of Austria (state).svg | flag alias-1230 = Flag of Austria (1230–1934).svg | flag alias-war = Austria-Hungary-flag-1869-1914-naval-1786-1869-merchant.svg | flag alias-1934 = State flag of Austria (1934–1938).svg | flag alias-1938 = Flag of Germany (1935–1945).svg | flag alias-army = Flag of Austria (state).svg | flag alias-air force = Flag of Austria (state).svg | link alias-army = Austrian Land Forces | flag alias-naval = Flag of Austria (state).svg | link alias-naval = Austrian Navy | link alias-air force = Austrian Air Force | flag alias-navy = Flag of Austria (state).svg | link alias-navy = Austrian Navy | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = empire | var2 = state | var3 = 1230 | var4 = war | var5 = 1934 | var6 = 1938 | redir1 = AUT | redir2 = Archduchy of Austria | related1 = Austria-Hungary </noinclude> }} 09169aeb2e7aab99900a74b755f38a6af79d73a8 Template:Country data United States 10 1462 2797 2023-04-21T11:12:39Z w>Paine Ellsworth 0 per edit request on talk page - include official 1795 flag wikitext text/x-wiki {{safesubst<noinclude />: {{{1<noinclude>|country showdata</noinclude>}}} | alias = United States | flag alias = Flag of the United States.svg | flag alias-1776 = Flag of the United States (1776–1777).svg | flag alias-1777 = Flag of the United States (1777–1795).svg | flag alias-1777-Ross = Betsy Ross flag.svg | flag alias-1795 = Flag of the United States (1795-1818).svg | flag alias-1795FM = Flag of the United States (1795–1818).svg | flag alias-1818 = Flag of the United States (1818-1819).svg | flag alias-1819 = Flag of the United States (1819-1820).svg | flag alias-1820 = Flag of the United States (1820-1822).svg | flag alias-1822 = Flag of the United States (1822-1836).svg | flag alias-1836 = Flag of the United States (1836-1837).svg | flag alias-1837 = Flag of the United States (1837-1845).svg | flag alias-1845 = Flag of the United States (1845-1846).svg | flag alias-1846 = Flag of the United States (1846-1847).svg | flag alias-1847 = Flag of the United States (1847-1848).svg | flag alias-1848 = Flag of the United States (1848-1851).svg | flag alias-1851 = Flag of the United States (1851-1858).svg | flag alias-1858 = Flag of the United States (1858-1859).svg | flag alias-1859 = Flag of the United States (1859-1861).svg | flag alias-1861 = Flag of the United States (1861-1863).svg | flag alias-1863 = Flag of the United States (1863-1865).svg | flag alias-1865 = Flag of the United States (1865-1867).svg | flag alias-1867 = Flag of the United States (1867-1877).svg | flag alias-1877 = Flag of the United States (1877-1890).svg | flag alias-1890 = Flag of the United States (1890-1891).svg | flag alias-1891 = Flag of the United States (1891-1896).svg | flag alias-1896 = Flag of the United States (1896-1908).svg | flag alias-1908 = Flag of the United States (1908-1912).svg | flag alias-1912 = Flag of the United States (1912-1959).svg | flag alias-1959 = Flag of the United States (1959-1960).svg | flag alias-1960 = Flag of the United States (Pantone).svg | flag alias-yacht = United States yacht flag.svg | flag alias-air force = Flag of the United States Air Force.svg | flag alias-coast guard-1799 = Ensign of the United States Revenue-Marine (1799).png | flag alias-coast guard-1815 = Ensign of the United States Revenue-Marine (1815).png | flag alias-coast guard-1836 = Ensign of the United States Revenue-Marine (1836).png | flag alias-coast guard-1841 = Ensign of the United States Revenue-Marine (1841).png | flag alias-coast guard-1867 = Ensign of the United States Revenue-Marine (1867).png | flag alias-coast guard-1868 = Ensign of the United States Revenue-Marine (1868).png | flag alias-coast guard-1915 = Ensign of the United States Coast Guard (1915-1953).png | flag alias-coast guard-1953 = Ensign of the United States Coast Guard.svg | flag alias-coast guard = Flag of the United States Coast Guard.svg | link alias-coast guard = {{#switch:{{{variant|}}}|coast guard|coast guard-1915=United States Coast Guard|coast guard-1894=United States Revenue Cutter Service|coast guard-1799|coast guard-1815|coast guard-1836|coast guard-1841|coast guard-1867|coast guard-1868=United States Revenue-Marine|United States Coast Guard}} | flag alias-army = Flag of the United States Army.svg | link alias-naval = {{#switch:{{{variant|}}}|navy|coast guard-1915=United States Coast Guard|United States Coast Guard|United States Navy}} | flag alias-navy-1864 = Flag of the United States Navy (1864-1959).svg | flag alias-navy = Flag of the United States Navy (official).svg | link alias-navy = United States Navy | link alias-marines = {{#switch:{{{variant|}}}|marines|marines-1914=United States Marine Corps|United States Marine Corps}} | flag alias-marines-1914 = Flag of the United States Marine Corps (1914-1939).png | flag alias-marines = Flag of the United States Marine Corps.svg | link alias-merchant marine = United States Merchant Marine | flag alias-merchant marine = Flag of the United States Merchant Marine Higher Resolution.jpg | flag alias-space force = Flag of the United States Space Force.svg | link alias-football = United States {{{mw|men's}}} national {{{age|}}} soccer team | link alias-Australian rules football = United States {{{mw|men's}}} national Australian rules football team | {{#ifeq:{{{altlink}}}|A national rugby union team|link alias-rugby union|empty}} = USA Selects | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | altvar = {{{altvar|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1776 | var2 = 1777 | var3 = 1777-Ross | var4 = 1795 | var5 = 1795FM | var6 = 1818 | var7 = 1819 | var8 = 1820 | var9 = 1822 | var10 = 1836 | var11 = 1837 | var12 = 1845 | var13 = 1846 | var14 = 1847 | var15 = 1848 | var16 = 1851 | var17 = 1858 | var18 = 1859 | var19 = 1861 | var20 = 1863 | var21 = 1865 | var22 = 1867 | var23 = 1877 | var24 = 1890 | var25 = 1891 | var26 = 1896 | var27 = 1908 | var28 = 1912 | var29 = 1959 | var30 = 1960 | var31 = yacht | var32 = coast guard-1915 | var33 = coast guard-1953 | var34 = marines-1914 | redir1 = USA | redir2 = US | redir3 = United States of America | redir4 = U.S. </noinclude> }} 0226bdffba98445e8ca1d0f53f0dc3dc669130cf Module:Citation/CS1/Configuration/doc 828 881 1952 2023-04-23T09:57:31Z wikipedia>Materialscientist 0 Reverted edits by [[Special:Contributions/72.190.246.114|72.190.246.114]] ([[User talk:72.190.246.114|talk]]) ([[WP:HG|HG]]) (3.4.12) wikitext text/x-wiki {{#lst:Module:Citation/CS1/doc|header}} This configuration file contains various data that controls the functioning of [[Module:Citation/CS1]] and hence the way that Lua-based citations are generated. It has several sections among which are: # translation tables that contain most of the literal strings that may be included in Lua-based citation. If editors are copying this Module to another wiki using a language other than English, then they should translate each of these values into that language. # a list of error conditions specifying what text to display, what category to include (if any), and what help page section to refer to when errors are detected # a list of ID handlers specifying the recognized document IDs, such as ISBN, DOI, etc., and how to format them. {{#lst:Module:Citation/CS1/doc|module_components_table}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Modules that check for strip markers]] }}</includeonly> 629c7396ecd08be19b2d8d920f688c1644f989b6 Template:Country data Poland 10 1201 2530 2023-04-23T23:42:12Z w>Paine Ellsworth 0 per edit request on talk page - update flag of state wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Poland | flag alias = Flag of Poland.svg | flag alias-state = Flag of Poland (with coat of arms).svg | flag alias-1815 = Flag of the Congress of Poland.svg | flag alias-1919 = Flag of Poland (1919-1928).svg | flag alias-1928 = Flag of Poland (1928–1980).svg | flag alias-1955 = Flag of Poland (with coat of arms, 1955-1980).svg | flag alias-1980 = Flag of Poland (with coat of arms, 1980-1990).svg | flag alias-1990 = Flag of Poland (with coat of arms).svg | flag alias-naval = PL navy flag IIIRP.svg | border-naval = | flag alias-naval-1919 = Naval Ensign of IIRP v1.svg | border-naval-1919 = | flag alias-naval-1946 = Naval Ensign of PRL v1.svg | border-naval-1946 = | flag alias-naval-auxiliary = Flaga pomocniczych jednostek pływających Polskiej Marynarki Wojennej.svg | flag alias-naval-auxiliary-1955 = POL Bandera pjp PRL v1.svg | link alias-naval = Polish Navy | flag alias-navy = Naval Ensign of Poland.svg | border-navy = | link alias-navy = Polish Navy | flag alias-marines = Flag of the Polish Land Forces.svg | border-marines = | link alias-marines = Polish 7th Coastal Defense Brigade | flag alias-air force = PL air force flag IIIRP.svg | border-air force = | link alias-air force = Polish Air Force | flag alias-army = Flag of the Polish Land Forces.svg | border-army = | link alias-army = Polish Land Forces | size = {{{size|}}} | size flag alias-naval = 25px | size flag alias-naval-1919 = 25px | size flag alias-naval-1946 = 25px | size flag alias-air force = 25px | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = state | var2 = 1815 | var3 = 1919 | var4 = 1928 | var5 = 1955 | var6 = 1980 | var7 = 1990 | var10 = naval-1919 | var11 = naval-1946 | var12 = naval-auxiliary | var13 = naval-auxiliary-1955 | redir1 = POL </noinclude> }} a5df6d9ca5a0da2e55a10a8eb85e931668b222a9 Template:Marriage/styles.css 10 1261 2595 2023-04-24T16:04:33Z Pppery 6 sanitized-css text/css /* {{pp-template}} */ .marriage-line-margin2px { line-height: 0; margin-bottom: -2px; } .marriage-line-margin3px { line-height: 0; margin-bottom: -3px; } .marriage-display-ws { display: inline; white-space: nowrap; } c7f451088a54f39897051a4421a9d8c5a9a1b23d Template:Microformat message 10 1486 2821 2023-04-24T21:58:07Z w>GoldRingChip 0 large wikitext text/x-wiki The [[Help:HTML in wikitext|HTML mark-up]] produced by this template includes {{#if:{{{type|}}} |{{{type}}} |an [[{{{format}}} microformat]]}} that makes {{{data}}} readily [[Parsing|parsable]] by computer programs. This aids tasks such as the cataloguing of articles and maintenance of databases. For more information about the use of microformats on Wikipedia, please visit [[Wikipedia:WikiProject Microformats|the Microformat WikiProject]].<!-- -->{{#if:{{{subtemplates<includeonly>|</includeonly>}}} | <div style="margin-top:0.5em;margin-bottom:0.65em;"> ; {{large|Subtemplates}} {{{subtemplates}}} '''''Please do not remove instances of these subtemplates.''''' </div>}}<!-- -->{{#if:{{{subsection1|}}} | <div style="margin-top:0.5em;margin-bottom:0.65em;"><!--(newline in case subsection begins with heading:)--> {{{subsection1}}} </div>}}<!-- -->{{#if:{{{1<includeonly>|</includeonly>}}} <!--(i.e. if at least one unnamed parameter supplied:)--> | <div style="margin-top:0.5em;margin-bottom:0.65em;"> ; {{large|Classes used}} The [[HTML attribute|HTML class]]es of this microformat include: : {{hlist |item_style=font-size:110%;{{{itemstyle|}}} |{{{1}}} |{{{2<includeonly>|</includeonly>}}} |{{{3|<noinclude>{{nobold|……}}</noinclude>}}} |{{{4|}}} |{{{5|}}} |{{{6|}}} |{{{7|}}} |{{{8|}}} |{{{9|}}} |{{{10|}}} |{{{11|}}} |{{{12|}}} |{{{13|}}} |{{{14|}}} |{{{15|}}} |{{{16|}}} |{{{17|}}} |{{{18|}}} |{{{19|}}} |{{{20|}}} }} </div> {{longitem|style=line-height:1.3em|'''''Please do not rename or remove these classes{{#if:{{{nocollapse<includeonly>|</includeonly>}}} |<br/>nor collapse nested elements which use them}}.'''''}}<!-- -->}}<!--(end #if:[1])--><noinclude> {{Documentation}} </noinclude> 25d8c54d56c1c64f1b98e6c8b2a50054e6a9deb5 Template:Citation and verifiability article maintenance templates 10 1041 2280 2023-04-26T02:34:42Z wikipedia>JoeNMLC 0 ce, add No significant coverage wikitext text/x-wiki {{Navbox | name = Citation and verifiability article maintenance templates | title = [[Wikipedia:Template index/Cleanup/Verifiability and sources|Citation and verifiability article maintenance templates]] | listclass = hlist | state = {{{state|autocollapse}}} | group1 = Sourcing | list1 = * {{Tlg|Circular}} * {{Tlg|Dubious}} * {{Tlg|Excessive citations}} * {{Tlg|Further reading cleanup}} * {{Tlg|More citations needed}} ** {{Tlg|More citations needed section}} * {{Tlg|More footnotes needed}} * {{Tlg|No footnotes}} * {{Tlg|No significant coverage}} * {{Tlg|One source}} ** {{Tlg|One source section}} * {{Tlg|Only primary sources}} ** {{Tlg|NRIS only}} * {{Tlg|Primary sources}} ** {{Tlg|Primary sources section}} * {{Tlg|Religious text primary}} * {{Tlg|Self-published}} * {{Tlg|Self-reference cleanup}} * {{Tlg|Self-sourcing examples}} ** {{Tlg|Refexample section}} * {{Tlg|Sources exist}} * {{Tlg|Text-source}} * {{Tlg|Third-party}} * {{Tlg|Unreferenced}} ** {{Tlg|Unreferenced section}} * {{Tlg|Unreferenced category}} * {{Tlg|Unreliable sources}} ** {{Tlg|Unreliable sources section}} * {{tlg|User-generated}} | group2 = [[Wikipedia:Biographies of living persons|BLP]]-specific | list2 = * {{Tlg|BLP unreferenced}} ** {{Tlg|BLP unreferenced section}} * {{Tlg|BLP primary sources}} * {{Tlg|BLP self-published}} * {{Tlg|BLP sources}} ** {{Tlg|BLP sources section}} * {{Tlg|BLP IMDb-only refimprove}} * {{Tlg|BLP IMDb refimprove}} * {{Tlg|BLP no footnotes}} * {{Tlg|BLP more footnotes needed}} * {{Tlg|BLP one source}} | group3 = Topic specific | list3 = * {{Tlg|Localist}} * {{Tlg|Media IMDb refimprove}} * {{Tlg|More medical citations needed}} * {{Tlg|More science citations needed}} * {{Tlg|Neologism}} * {{Tlg|Science review}} * {{Tlg|Unreferenced law}} ** {{Tlg|Unreferenced-law section}} * {{Tlg|Unreferenced medical section}} | group4 = Dispute-related | list4 = * {{Tlg|Cite check}} ** {{Tlg|Cite check section}} * {{Tlg|Content}} * {{Tlg|Disputed}} ** {{Tlg|Dispute about}} ** {{Tlg|Disputed section}} ** {{Tlg|Disputed chem}} ** {{Tlg|Disputed list}} ** {{Tlg|Disputed map}} * {{Tlg|Expert needed}} * {{Tlg|Hoax}} * {{Tlg|Original research}} ** {{Tlg|Original research section}} * {{Tlg|Speculation}} ** {{Tlg|Speculation section}} * {{Tlg|Synthesis}} * {{Tlg|Verifiability}} * {{Tlg|Verify sources}} | group5 = Citation improvements | list5 = * {{Tlg|Citation style}} * {{Tlg|Citations broken}} * {{Tlg|Cleanup bare URLs}} * {{Tlg|Format footnotes}} * {{Tlg|Full citations needed}} * {{Tlg|Ibid}} * {{Tlg|Page numbers improve}} * {{Tlg|Page numbers needed}} * {{Tlg|Shallow references}} | group6 = General advice | list6 = * [[Wikipedia:Citing sources|Citing sources]] * [[Wikipedia:Reliable sources|Reliable sources]] * [[Help:Maintenance template removal |Maintenance template removal]] * [[Wikipedia:Citation needed|Citation needed]] * [[Help:Find sources|Find sources]] * [[Wikipedia:Combining sources|Combining sources]] * [[Help:Overview of referencing styles|Referencing styles]] }}<noinclude>{{Documentation}}</noinclude> 55a6785749a09717fef857138042ad0d8abef5ef Module:Language 828 445 1029 2023-04-26T18:00:06Z wikipedia>MusikBot II 0 Changed protection settings for "[[Module:Language]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2500 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) Scribunto text/plain require('strict') local m_data = mw.loadData("Module:Language/data") local langData = m_data.languages or m_data local p = {} local function ifNotEmpty(value) if value == "" then return nil else return value end end local function makeLinkedName(languageCode) local data = langData[languageCode] local article = data["article"] local name = data["Wikipedia_name"] or data["name"] return "[[" .. article .. "|" .. name .. "]]:&nbsp;" end local function makeEntryName(word, languageCode) local data = langData[languageCode] local ugsub = mw.ustring.gsub word = tostring(word) if word == nil then error("The function makeEntryName requires a string argument") elseif word == "" then return "" else -- Remove bold and italics, so that words that contain bolding or emphasis can be linked without piping. word = word:gsub("\'\'\'", "") word = word:gsub("\'\'", "") if data == nil then return word else local replacements = data and data["replacements"] if replacements == nil then return word else -- Decompose so that the diacritics of characters such -- as á can be removed in one go. -- No need to compose at the end, because the MediaWiki software -- will handle that. if replacements.decompose then word = mw.ustring.toNFD(word) for i, from in ipairs(replacements.from) do word = ugsub( word, from, replacements.to and replacements.to[i] or "") end else for regex, replacement in pairs(replacements) do word = ugsub(word, regex, replacement) end end return word end end end end p.makeEntryName = makeEntryName local function fixScriptCode(firstLetter, threeLetters) return string.upper(firstLetter) .. string.lower(threeLetters) end local function getCodes(codes, text) local languageCode, scriptCode, invalidCode local errorText if codes == nil or codes == "" then errorText = 'no language or script code provided' elseif codes:find("^%a%a%a?$") or codes:find("^%a%a%a?%-%a%a%a%a$") then -- A three- or two-letter lowercase sequence at beginning of first parameter languageCode = codes:find("^%a%a%a?") and ( codes:match("^(%l%l%l?)") or codes:match("^(%a%a%a?)") :gsub("(%a%a%a?)", string.lower, 1) ) -- One uppercase and three lowercase letters at the end of the first parameter scriptCode = codes:find("%a%a%a%a$") and ( codes:match("(%u%l%l%l)$") or gsub( codes:match("(%a%a%a%a)$"), "(%a)(%a%a%a)", fixScriptCode, 1 ) ) elseif codes:find("^%a%a%a?%-%a%a%a?$") or codes:find("^%a%a%a%-%a%a%a%-%a%a%a$") then languageCode = codes -- Private-use subtag: x followed by one or more sequences of 1-8 lowercase -- letters separated by hyphens. This only allows for one sequence, as it is -- needed for proto-languages such as ine-x-proto (Proto-Indo-European). elseif codes:find("^%a%a%a?%-x%-%a%a?%a?%a?%a?%a?%a?%a?$") then languageCode, scriptCode = codes:match("^(%a%a%a%-x%-%a%a?%a?%a?%a?%a?%a?%a?)%-?(.*)$") if not languageCode then errorText = '<code>'..codes..'</code> is not a valid language or script code.' elseif scriptCode ~= "" and not scriptCode:find("%a%a%a%a") then errorText = '<code>'..scriptCode..'</code> is not a valid script code.' else scriptCode = scriptCode:gsub( "(%a)(%a%a%a)", fixScriptCode, 1 ) end elseif codes:find("^%a%a%a?") then languageCode, invalidCode = codes:match("^(%a%a%a?)%-?(.*)") languageCode = string.lower(languageCode) errorText = '<code>'..invalidCode..'</code> is not a valid script code.' elseif codes:find("%-?%a%a%a%a$") then invalidCode, scriptCode = codes:match("(.*)%-?(%a%a%a%a)$") scriptCode = gsub( scriptCode, "(%a)(%a%a%a)", fixScriptCode ) errorText = '<code>'..invalidCode..'</code> is not a valid language code.' else errorText = '<code>'..codes..'</code> is not a valid language or script code.' end if not scriptCode or scriptCode == "" then scriptCode = require("Module:Unicode data").is_Latin(text) and "Latn" or "unknown" end if errorText then errorText = ' <span style="font-size: smaller">[' .. errorText .. ']</span>' else errorText = "" end languageCode = m_data.redirects[languageCode] or languageCode return languageCode, scriptCode, errorText end local function tag(text, languageCode, script, italics) local data = langData[languageCode] -- Use Wikipedia code if it has been given: for instance, -- Proto-Indo-European has the Wiktionary code "ine-pro" but the Wikipedia -- code "ine-x-proto". languageCode = data and data.Wikipedia_code or languageCode local italicize = script == "Latn" and italics if not text then text = "[text?]" end local textDirectionMarkers = { "", "", "" } if data and data["direction"] == "rtl" then textDirectionMarkers = { ' dir="rtl"', '&rlm;', '&lrm;' } end local out = { textDirectionMarkers[2] } if italicize then table.insert(out, "<i lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</i>") else table.insert(out, "<span lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</span>") end table.insert(out, textDirectionMarkers[3]) return table.concat(out) end function p.lang(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] and mw.text.trim(args[1]) local text = args[2] or error("Provide text in the second parameter") local languageCode, scriptCode, errorText = getCodes(codes, text) local italics = args.italics or args.i or args.italic italics = not (italics == "n" or italics == "-" or italics == "no") return tag(text, languageCode, scriptCode, italics) .. errorText end local function linkToWiktionary(entry, linkText, languageCode) local data = langData[languageCode] local name if languageCode then if data and data.name then name = data.name else -- On other languages' wikis, use mw.getContentLanguage():getCode(), -- or replace 'en' with that wiki's language code. name = mw.language.fetchLanguageName(languageCode, 'en') if name == "" then error("Name for the language code " .. ("%q"):format(languageCode or nil) .. " could not be retrieved with mw.language.fetchLanguageName, " .. "so it should be added to [[Module:Language/data]]") end end if entry:sub(1, 1) == "*" then if name ~= "" then entry = "Reconstruction:" .. name .. "/" .. entry:sub(2) else error("Language name is empty") end elseif data and data.type == "reconstructed" then mw.log("Reconstructed language without asterisk:", languageCode, name, entry) local frame = mw.getCurrentFrame() -- Track reconstructed entries with no asterisk by transcluding -- a nonexistent template. This technique is used in Wiktionary: -- see [[wikt:Module:debug]]. -- [[Special:WhatLinksHere/tracking/wikt-lang/reconstructed with no asterisk]] pcall(frame.expandTemplate, frame, { title = 'tracking/wikt-lang/reconstructed with no asterisk' }) if name ~= "" then entry = "Reconstruction:" .. name .. "/" .. entry else error("Language name is empty") end elseif data and data.type == "appendix" then if name ~= "" then entry = "Appendix:" .. name .. "/" .. entry else error("Language name is empty") end end if entry and linkText then return "[[wikt:" .. entry .. "#" .. name .. "|" .. linkText .. "]]" else error("linkToWiktionary needs a Wiktionary entry or link text, or both") end else return "[[wikt:" .. entry .. "|" .. linkText .. "]]" end end function p.wiktlang(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] and mw.text.trim(args[1]) local word1 = ifNotEmpty(args[2]) local word2 = ifNotEmpty(args[3]) if not args[2] then error("Parameter 2 is required") end local languageCode, scriptCode, errorText = getCodes(codes, word2 or word1) local italics = args.italics or args.i or args.italic italics = not (italics == "n" or italics == "-" or italics == "no") local entry, linkText if word2 and word1 then entry = makeEntryName(word1, languageCode) linkText = word2 elseif word1 then entry = makeEntryName(word1, languageCode) linkText = word1 end local out if languageCode and entry and linkText then out = tag(linkToWiktionary(entry, linkText, languageCode), languageCode, scriptCode, italics) elseif entry and linkText then out = linkToWiktionary(entry, linkText) else out = '<span style="font-size: smaller;">[text?]</span>' end if out and errorText then return out .. errorText else return errorText or error("The function wiktlang generated nothing") end end function p.wikt(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] and mw.text.trim(args[1]) local word1 = ifNotEmpty(args[2]) local word2 = ifNotEmpty(args[3]) if not word1 then error("Provide a word in parameter 2.") end local languageCode, scriptCode, errorText = getCodes(codes, word1) local entry, linkText if word2 and word1 then entry = makeEntryName(word1, languageCode) linkText = word2 elseif word1 then entry = makeEntryName(word1, languageCode) linkText = word1 end local out if languageCode and entry and linkText then out = linkToWiktionary(entry, linkText, languageCode) elseif entry and linkText then out = linkToWiktionary(entry, linkText) else out = '<span style="font-size: smaller;">[text?]</span>' end if out and errorText then return out and out .. errorText else return errorText or error("The function wikt generated nothing") end end return p 51c30e9deeb315db9939fc27a0cb4cb41cfc1ed6 Template:Campaignbox Punic Wars 10 1504 2839 2023-04-27T18:46:41Z w>Schminnte 0 Reverted edits by [[Special:Contributions/12.46.200.58|12.46.200.58]] ([[User talk:12.46.200.58|talk]]) ([[WP:HG|HG]]) (3.4.12) wikitext text/x-wiki {{Campaignbox | name = Campaignbox Punic Wars | title = [[Punic Wars]] | listclass = hlist | battles = * [[First Punic War|First]] * [[Mercenary War|Mercenary]] * [[Second Punic War|Second]] * [[Third Punic War|Third]] }}<noinclude> [[Category:Punic Wars navigational boxes|Punic wars]] </noinclude> 68f988c5de0f66decd657e0721bfd60f1b4c7798 Module:Authority control/auxiliary 828 1077 2352 2023-04-27T20:09:01Z wikipedia>MSGJ 0 fix CCG code, and remove some unneeded functions Scribunto text/plain require('strict') local p = {} --[[======================================================]] --[[ Format validation functions ]] --[[======================================================]] p.botanistV = function(id) return mw.ustring.match(id,"^[%u%l%d%. '-]+$") end p.validateIsni = function(id) --Validate ISNI (and ORCID) and retuns it as a 16 characters string or returns false if it's invalid. See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier id = id:gsub( '[ %-]', '' ):upper() if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d[%dX]$' ) then return false end local total = 0 for i = 1, 15 do local digit = id:byte( i ) - 48 --Get integer value total = (total + digit) * 2 end local remainder = total % 11 local result = (12 - remainder) % 11 local checkdigit if result == 10 then checkdigit = 'X' else checkdigit=tostring( result ) end if checkdigit ~= string.char( id:byte( 16 ) ) then return false end return id end p.orcidV = function(id) id = p.validateIsni(id) if not id then return false end return id:sub( 1, 4 )..'-'..id:sub( 5, 8 )..'-'..id:sub( 9, 12 )..'-'..id:sub( 13, 16 ) end p.tlsV = function(id) id = id:gsub(' +', '_') local idlen = mw.ustring.len(id) if idlen < 4 or idlen > 90 then return false end local regex = '^%u'..string.rep("[%w_',%.%-%(%)%*%/–&]", idlen - 1)..'$' if not mw.ustring.match(id,regex ) then return false end return id end --[[======================================================]] --[[ Custom link functions ]] --[[======================================================]] p.ISILlink = function(id,label) if not id:match('^%D%D?%D?%D?%-.+$') then return false end for _,prefix in ipairs({'AT','AU','BE','CA','CH','DE','FI','FR','IT','KR','NZ','US','ZDB'}) do if id:match('^'..prefix..'%-') then return '<span class="uid">[https://w3id.org/isil/'..id..' ' .. (label or 'ISIL') .. ']</span>' end end return '[[International Standard Identifier for Libraries and Related Organizations|ISIL]]\n**<span class="uid">' .. id .. '</span>' end p.uscgLink = function(id) local id2 = id:match( '^[1-7]%-%d%d?%d?%d?%d?$' ) or id:match( '^[1-7]%-%d%d?%d?%d?%d?%.%d*[1-9]$' ) if id2 then return '<span class="uid">[https://www.navcen.uscg.gov/pdf/lightlists/LightList%20V'..mw.ustring.sub(id2,1,1)..'.pdf '..id2..']</span>' else return false end end p.ccg = function(id) id = id:match('^[NAIP]?[1-9]%d*$') or id:match('^[NAIP]?[1-9]%d*%.%d+$') if not id then return false end local link = 'https://www.notmar.gc.ca/' local prefix = string.sub(id, 1, 1) -- get first character of id local suffix = string.sub(id, 2) -- remove first character of id local interval = require('Module:Interval')._main local v if prefix=='N' then local int = interval({1,7.5,14.4,100,121,173,211,235,269.99,326,396,450.1,471.7,499,n=suffix}) if int=='1-2' then v = 1 elseif int=='2-3' then v = 75 elseif int=='3-4' then v = 144 elseif int=='4-5' then v = 100 elseif int=='5-6' then v = 121 elseif int=='6-7' then v = 173 elseif int=='7-8' then v = 211 elseif int=='8-9' then v = 235 elseif int=='9-10' then v = 26999 elseif int=='10-11' then v = 326 elseif int=='11-12' then v = 396 elseif int=='12-13' then v = 4501 elseif int=='13-14' then v = 4717 elseif int=='14-15' then v = 499 end link = link .. 'publications/list-lights/newfoundland/n' .. v .. '-en' elseif prefix=='A' then local int = interval({5,114.5,145,163,268,271,301.5,327,686.5,704.85,883.2,942,1085,1169.1,1584.5,1773,1823.55,2190,2369,2389,n=suffix}) if int=='1-2' then v = 5 elseif int=='2-3' then v = 1145 elseif int=='3-4' then v = 145 elseif int=='4-5' then v = 162 elseif int=='5-6' then v = 268 elseif int=='6-7' then v = 271 elseif int=='7-8' then v = 3015 elseif int=='8-9' then v = 327 elseif int=='9-10' then v = 6865 elseif int=='10-11' then v = 7048 elseif int=='11-12' then v = 883 elseif int=='12-13' then v = 942 elseif int=='13-14' then v = 1085 elseif int=='14-15' then v = 11691 elseif int=='15-16' then v = 15845 elseif int=='16-17' then v = 1773 elseif int=='17-18' then v = 182355 elseif int=='18-19' then v = 2190 elseif int=='19-20' then v = 2369 elseif int=='20-21' then v = 2389 end link = link .. 'publications/list-lights/atl/a' .. v .. '-en' elseif prefix=='I' then local int = interval({0.05,401.1,403.4,551.06,552,624,708,731.2,768,814,983,1046,1059.6,1082,1162,1204.7,1233.3,1328,1330,1346.2,1377.8,1408,1410,1420,1445,1470,1520,1534,1540.6,1554,1557.7,1558.8,1563.1,1625.5,1671.7,1716.96,2545,n=suffix}) if int=='1-2' then v = '01' elseif int=='2-3' then v = 4011 elseif int=='3-4' then v = 4034 elseif int=='4-5' then v = 55106 elseif int=='5-6' then v = 552 elseif int=='6-7' then v = 624 elseif int=='7-8' then v = 708 elseif int=='8-9' then v = 7312 elseif int=='9-10' then v = 768 elseif int=='10-11' then v = 814 elseif int=='11-12' then v = 983 elseif int=='12-13' then v = 1046 elseif int=='13-14' then v = 10596 elseif int=='14-15' then v = 1082 elseif int=='15-16' then v = 1162 elseif int=='16-17' then v = 12047 elseif int=='17-18' then v = 12333 elseif int=='18-19' then v = 1328 elseif int=='19-20' then v = 1330 elseif int=='20-21' then v = 13462 elseif int=='21-22' then v = 13778 elseif int=='22-23' then v = 1408 elseif int=='23-24' then v = 1410 elseif int=='24-25' then v = 1420 elseif int=='25-26' then v = 1445 elseif int=='26-27' then v = 1470 elseif int=='27-28' then v = 1520 elseif int=='28-29' then v = 1534 elseif int=='29-30' then v = 15406 elseif int=='30-31' then v = 1554 elseif int=='31-32' then v = 15577 elseif int=='32-33' then v = 15588 elseif int=='33-34' then v = 1562 elseif int=='34-35' then v = 16255 elseif int=='35-36' then v = 16717 elseif int=='36-37' then v = 171696 elseif int=='37-38' then v = 2545 end link = link .. 'publications/list-lights/inland-waters/i' .. v .. '-en' elseif prefix=='P' then link = link .. 'publications/list-lights/pac/p' else link = link .. 'list-lights' end return '[[CCG (identifier)|CCG]] <span class="uid">[' .. link .. ' ' .. id .. ']</span>' end return p 4fe1ede4f4598dd1edc3073b3d484dee8411e094 Module:Portal/images/l 828 1379 2714 2023-04-29T07:58:13Z w>Hike395 0 remove deprecated images Scribunto text/plain --[==[ This is the "L" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "L". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be omitted. ]==] return { ["lagomorpha"] = "Lapin01 flipped and colorized.svg|alt=icon", ["lagos"] = "Flag of Lagos.svg|alt=flag", ["lakes"] = "Walden Pond, Massachusetts on June 27, 2012.png|link=|alt=image", ["lakshadweep"] = "India Lakshadweep locator map.svg|border|link=|alt=map", ["lancashire"] = "Lancashire rose.svg|alt=icon", ["language"] = "Globe of letters.svg|alt=icon", ["languages"] = "Globe of letters.svg|alt=icon", ["laos"] = "Flag of Laos.svg|border|link=|alt=flag", ["latin america"] = "Latin America (orthographic projection).svg|link=|alt=map", ["latin america music"] = "Musical note nicu bucule 01.svg|link=|alt=", ["latin american music"] = "Musical note nicu bucule 01.svg|link=|alt=", ["latin music"] = "Conga.svg|link=|alt=", ["latter day saints"] = "Christus statue temple square salt lake city.jpg|link=|alt="; ["latter day saint movement"] = "Christus statue temple square salt lake city.jpg|link=|alt="; ["latvia"] = "Flag of Latvia.svg|border|link=|alt=flag", ["law"] = "Balance, by David.svg|alt=icon", ["law of england and wales"] = "Scale of justice 2 new.jpeg|alt=icon", ["lds church"] = "Christus statue temple square salt lake city.jpg|link=|alt="; ["lebanon"] = "Flag of Lebanon.svg|border|link=|alt=flag", ["led zeppelin"] = "Zoso Robert Plant feather symbol.svg|link=|alt=", ["leeds"] = "Arms of Leeds.svg|alt=icon", ["leibniz"] = "Gottfried Wilhelm Leibniz, Bernhard Christoph Francke.jpg|link=|alt=painting", ["lesotho"] = "Flag of Lesotho.svg|border|link=|alt=flag", ["lemony snicket"] = "Eyes lumen design.svg|alt=icon", ["lgbt"] = "Nuvola LGBT flag.svg|link=|alt=", ["liberalism"] = "Yellow flag waving.svg|alt=icon", ["liberia"] = "Flag of Liberia.svg|border|link=|alt=flag", ["libertarianism"] = "2006 AEGold Proof Obv.png|link=|alt=coin", ["libya"] = "Flag of Libya.svg|border|link=|alt=flag", ["liechtenstein"] = "Flag of Liechtenstein.svg|border|link=|alt=flag", ["linguistics"] = "Globe of letters.svg|alt=icon", ["linux"] = "NewTux.svg|alt=icon", ["liquor"] = "Flessen drank.jpg|alt=icon", ["lists"] = "Text-x-generic.svg|link=|alt=", ["literature"] = "Books-aj.svg aj ashton 01.svg|link=|alt=", ["lithuania"] = "Flag of Lithuania.svg|border|link=|alt=flag", ["livestock"] = "Sheep and cow in South Africa.jpg|link=|alt=photo", ["logic"] = "Logic portal.svg|alt=icon", ["london"] = "Clock Tower - Palace of Westminster, London - May 2007 icon.png|alt=icon", ["london transport"] = "Underground sign at Westminster.jpg|link=|alt=", ["los angeles"] = "LA Skyline Mountains2.jpg|link=|alt=photo", ["louisiana"] = "Flag of Louisiana.svg|border|link=|alt=flag", ["lower saxony"] = "Flag of Lower Saxony.svg|border|link=|alt=flag", ["luxembourg"] = "Flag of Luxembourg.svg|border|link=|alt=flag", } d812e722451c78f92926d59b0b8aa8242db171ec Template:Documentation subpage 10 55 105 2023-04-29T17:27:17Z wikipedia>Paine Ellsworth 0 m wikitext text/x-wiki <includeonly><!-- -->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}} | <!--(this template has been transcluded on a /doc or /{{{override}}} page)--> </includeonly><!-- -->{{#ifeq:{{{doc-notice|show}}} |show | {{Mbox | type = notice | style = margin-bottom:1.0em; | image = [[File:Edit-copy green.svg|40px|alt=|link=]] | text = {{strong|This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]]}} for {{terminate sentence|{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}}}<br />It may contain usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}. }} }}<!-- -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!-- -->{{#if:{{{inhibit|}}} |<!--(don't categorize)--> | <includeonly><!-- -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]] | [[Category:Documentation subpages without corresponding pages]] }}<!-- --></includeonly> }}<!-- (completing initial #ifeq: at start of template:) --><includeonly> | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)--> }}<!-- --></includeonly><noinclude>{{Documentation}}</noinclude> 41ca90af0945442788a2dbd08c8c54a61a23c057 Module:Tlm 828 1674 3103 2023-04-29T23:10:46Z 50.53.167.128 0 more WD Client MWs Scribunto text/plain local export = {} local variables_nullary = { ["CURRENTYEAR"] = "mw:Help:Magic words#Date and time"; ["CURRENTMONTH"] = "mw:Help:Magic words#Date and time"; ["CURRENTMONTH1"] = "mw:Help:Magic words#Date and time"; -- undocumented ["CURRENTMONTH2"] = "mw:Help:Magic words#Date and time"; -- undocumented ["CURRENTMONTHNAME"] = "mw:Help:Magic words#Date and time"; ["CURRENTMONTHNAMEGEN"] = "mw:Help:Magic words#Date and time"; ["CURRENTMONTHABBREV"] = "mw:Help:Magic words#Date and time"; ["CURRENTDAY"] = "mw:Help:Magic words#Date and time"; ["CURRENTDAY2"] = "mw:Help:Magic words#Date and time"; ["CURRENTDOW"] = "mw:Help:Magic words#Date and time"; ["CURRENTDAYNAME"] = "mw:Help:Magic words#Date and time"; ["CURRENTTIME"] = "mw:Help:Magic words#Date and time"; ["CURRENTHOUR"] = "mw:Help:Magic words#Date and time"; ["CURRENTWEEK"] = "mw:Help:Magic words#Date and time"; ["CURRENTTIMESTAMP"] = "mw:Help:Magic words#Date and time"; ["LOCALYEAR"] = "mw:Help:Magic words#Date and time"; ["LOCALMONTH"] = "mw:Help:Magic words#Date and time"; ["LOCALMONTH1"] = "mw:Help:Magic words#Date and time"; -- undocumented ["LOCALMONTH2"] = "mw:Help:Magic words#Date and time"; -- undocumented ["LOCALMONTHNAME"] = "mw:Help:Magic words#Date and time"; ["LOCALMONTHNAMEGEN"] = "mw:Help:Magic words#Date and time"; ["LOCALMONTHABBREV"] = "mw:Help:Magic words#Date and time"; ["LOCALDAY"] = "mw:Help:Magic words#Date and time"; ["LOCALDAY2"] = "mw:Help:Magic words#Date and time"; ["LOCALDOW"] = "mw:Help:Magic words#Date and time"; ["LOCALDAYNAME"] = "mw:Help:Magic words#Date and time"; ["LOCALTIME"] = "mw:Help:Magic words#Date and time"; ["LOCALHOUR"] = "mw:Help:Magic words#Date and time"; ["LOCALWEEK"] = "mw:Help:Magic words#Date and time"; ["LOCALTIMESTAMP"] = "mw:Help:Magic words#Date and time"; ["SITENAME"] = "mw:Help:Magic words#Technical metadata"; ["SERVER"] = "mw:Help:Magic words#Technical metadata"; ["SERVERNAME"] = "mw:Help:Magic words#Technical metadata"; ["DIRMARK"] = "mw:Help:Magic words#Technical metadata"; ["DIRECTIONMARK"] = "mw:Help:Magic words#Technical metadata"; ["ARTICLEPATH"] = "mw:Help:Magic words#Technical metadata"; -- undocumented ["SCRIPTPATH"] = "mw:Help:Magic words#Technical metadata"; ["STYLEPATH"] = "mw:Help:Magic words#Technical metadata"; ["CURRENTVERSION"] = "mw:Help:Magic words#Technical metadata"; ["CONTENTLANGUAGE"] = "mw:Help:Magic words#Technical metadata"; ["CONTENTLANG"] = "mw:Help:Magic words#Technical metadata"; ["PAGEID"] = "mw:Help:Magic words#Technical metadata"; ["CASCADINGSOURCES"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONID"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONDAY"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONDAY2"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONMONTH"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONMONTH1"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONYEAR"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONTIMESTAMP"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONUSER"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONSIZE"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFPAGES"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFARTICLES"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFFILES"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFEDITS"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFVIEWS"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFUSERS"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFADMINS"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFACTIVEUSERS"] = "mw:Help:Magic words#Technical metadata"; ["FULLPAGENAME"] = "mw:Help:Magic words#Page names"; ["PAGENAME"] = "mw:Help:Magic words#Page names"; ["BASEPAGENAME"] = "mw:Help:Magic words#Page names"; ["SUBPAGENAME"] = "mw:Help:Magic words#Page names"; ["SUBJECTPAGENAME"] = "mw:Help:Magic words#Page names"; ["ARTICLEPAGENAME"] = "mw:Help:Magic words#Page names"; ["TALKPAGENAME"] = "mw:Help:Magic words#Page names"; ["ROOTPAGENAME"] = "mw:Help:Magic words#Page names"; -- undocumented ["FULLPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["PAGENAMEE"] = "mw:Help:Magic words#Page names"; ["BASEPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["SUBPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["SUBJECTPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["ARTICLEPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["TALKPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["ROOTPAGENAMEE"] = "mw:Help:Magic words#Page names"; -- undocumented ["NAMESPACE"] = "mw:Help:Magic words#Namespaces"; ["NAMESPACENUMBER"] = "mw:Help:Magic words#Namespaces"; ["SUBJECTSPACE"] = "mw:Help:Magic words#Namespaces"; ["ARTICLESPACE"] = "mw:Help:Magic words#Namespaces"; ["TALKSPACE"] = "mw:Help:Magic words#Namespaces"; ["NAMESPACEE"] = "mw:Help:Magic words#Namespaces"; ["SUBJECTSPACEE"] = "mw:Help:Magic words#Namespaces"; ["TALKSPACEE"] = "mw:Help:Magic words#Namespaces"; ["!"] = "mw:Help:Magic words#Other"; ["="] = "mw:Help:Magic words#Other"; -- case-insensitive! ["noexternallanglinks"] = "mw:Extension:Wikibase Client"; ["wbreponame"] = "mw:Extension:Wikibase Client"; ["pendingchangelevel"] = "mw:Extension:FlaggedRevs"; -- not documented yet ["numberofwikis"] = "mw:Extension:SiteMatrix"; } local variables_nonnullary = { ["PROTECTIONLEVEL"] = "mw:Help:Magic words#Technical metadata"; ["DISPLAYTITLE"] = "mw:Help:Magic words#Technical metadata"; ["DEFAULTSORT"] = "mw:Help:Magic words#Technical metadata"; ["PAGESINCATEGORY"] = "mw:Help:Magic words#Technical metadata"; ["PAGESINCAT"] = "mw:Help:Magic words#Technical metadata"; ["NUMBERINGROUP"] = "mw:Help:Magic words#Technical metadata"; ["PAGESINNS"] = "mw:Help:Magic words#Technical metadata"; ["PAGESINNAMESPACE"] = "mw:Help:Magic words#Technical metadata"; ["FULLPAGENAME"] = "mw:Help:Magic words#Page names"; ["PAGENAME"] = "mw:Help:Magic words#Page names"; ["BASEPAGENAME"] = "mw:Help:Magic words#Page names"; ["SUBPAGENAME"] = "mw:Help:Magic words#Page names"; ["SUBJECTPAGENAME"] = "mw:Help:Magic words#Page names"; ["ARTICLEPAGENAME"] = "mw:Help:Magic words#Page names"; ["TALKPAGENAME"] = "mw:Help:Magic words#Page names"; ["ROOTPAGENAME"] = "mw:Help:Magic words#Page names"; -- undocumented ["FULLPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["PAGENAMEE"] = "mw:Help:Magic words#Page names"; ["BASEPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["SUBPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["SUBJECTPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["ARTICLEPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["TALKPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["ROOTPAGENAMEE"] = "mw:Help:Magic words#Page names"; -- undocumented ["NAMESPACE"] = "mw:Help:Magic words#Namespaces"; ["NAMESPACENUMBER"] = "mw:Help:Magic words#Namespaces"; ["SUBJECTSPACE"] = "mw:Help:Magic words#Namespaces"; ["ARTICLESPACE"] = "mw:Help:Magic words#Namespaces"; ["TALKSPACE"] = "mw:Help:Magic words#Namespaces"; ["NAMESPACEE"] = "mw:Help:Magic words#Namespaces"; ["SUBJECTSPACEE"] = "mw:Help:Magic words#Namespaces"; ["TALKSPACEE"] = "mw:Help:Magic words#Namespaces"; ["PAGEID"] = "mw:Help:Magic words#Technical metadata of another page"; ["PAGESIZE"] = "mw:Help:Magic words#Technical metadata of another page"; ["PROTECTIONLEVEL"] = "mw:Help:Magic words#Technical metadata of another page"; ["CASCADINGSOURCES"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONID"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONDAY"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONDAY2"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONMONTH"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONMONTH1"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONYEAR"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONTIMESTAMP"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONUSER"] = "mw:Help:Magic words#Technical metadata of another page"; ["SHORTDESC"] = "mw:Extension:Wikibase Client"; } local parser_functions = { -- built-ins ["localurl"] = "mw:Help:Magic words#URL data"; ["localurle"] = "mw:Help:Magic words#URL data"; ["fullurl"] = "mw:Help:Magic words#URL data"; ["fullurle"] = "mw:Help:Magic words#URL data"; ["canonicalurl"] = "mw:Help:Magic words#URL data"; ["canonicalurle"] = "mw:Help:Magic words#URL data"; ["filepath"] = "mw:Help:Magic words#URL data"; ["urlencode"] = "mw:Help:Magic words#URL data"; ["urldecode"] = "mw:Help:Magic words#URL data"; ["anchorencode"] = "mw:Help:Magic words#URL data"; ["ns"] = "mw:Help:Magic words#Namespaces"; ["nse"] = "mw:Help:Magic words#Namespaces"; ["formatnum"] = "mw:Help:Magic words#Formatting"; ["#dateformat"] = "mw:Help:Magic words#Formatting"; ["#formatdate"] = "mw:Help:Magic words#Formatting"; ["lc"] = "mw:Help:Magic words#Formatting"; ["lcfirst"] = "mw:Help:Magic words#Formatting"; ["uc"] = "mw:Help:Magic words#Formatting"; ["ucfirst"] = "mw:Help:Magic words#Formatting"; ["padleft"] = "mw:Help:Magic words#Formatting"; ["padright"] = "mw:Help:Magic words#Formatting"; ["plural"] = "mw:Help:Magic words#Localization"; ["grammar"] = "mw:Help:Magic words#Localization"; ["gender"] = "mw:Help:Magic words#Localization"; ["int"] = "mw:Help:Magic words#Localization"; ["#language"] = "mw:Help:Magic words#Miscellaneous"; ["#special"] = "mw:Help:Magic words#Miscellaneous"; ["#speciale"] = "mw:Help:Magic words#Miscellaneous"; ["#tag"] = "mw:Help:Magic words#Miscellaneous"; -- [[mw:Extension:ParserFunctions]] ["#expr"] = "mw:Help:Extension:ParserFunctions##expr"; ["#if"] = "mw:Help:Extension:ParserFunctions##if"; ["#ifeq"] = "mw:Help:Extension:ParserFunctions##ifeq"; ["#iferror"] = "mw:Help:Extension:ParserFunctions##iferror"; ["#ifexpr"] = "mw:Help:Extension:ParserFunctions##ifexpr"; ["#ifexist"] = "mw:Help:Extension:ParserFunctions##ifexist"; ["#rel2abs"] = "mw:Help:Extension:ParserFunctions##rel2abs"; ["#switch"] = "mw:Help:Extension:ParserFunctions##switch"; ["#time"] = "mw:Help:Extension:ParserFunctions##time"; ["#timel"] = "mw:Help:Extension:ParserFunctions##timel"; ["#titleparts"] = "mw:Help:Extension:ParserFunctions##titleparts"; -- other extensions ["#babel"] = "mw:Extension:Babel#Usage"; ["#categorytree"] = "mw:Extension:CategoryTree#The {{#categorytree}} parser function"; ["#commaseparatedlist"] = "mw:Extension:Wikibase Client"; ["#coordinates"] = "mw:Extension:GeoData#Parser function"; ["#invoke"] = "mw:Extension:Scribunto#Usage"; ["#lst"] = "mw:Extension:Labeled Section Transclusion#How it works"; ["#lsth"] = "mw:Extension:Labeled Section Transclusion#How it works"; -- not available, it seems ["#lstx"] = "mw:Extension:Labeled Section Transclusion#How it works"; ["noexternallanglinks"] = "mw:Extension:Wikibase Client"; ["noreplace"] = "mw:Extension:Wikibase Client"; ["pendingchangelevel"] = "mw:Extension:FlaggedRevs"; -- not documented yet ["#property"] = "mw:Extension:Wikibase Client"; ["#statements"] = "mw:Extension:Wikibase Client"; ["#target"] = "mw:Extension:MassMessage"; -- not documented yet } -- rudimentary local function is_valid_pagename(pagename) if (pagename == "") or pagename:match("[%[%]%|%{%}#\127<>]") then return false end return true end local function hook_special(page) if is_valid_pagename(page) then return "[[Special:" .. page .. "|" .. page .. "]]" else return page end end local function hook_wdprop(name) if mw.wikibase.resolvePropertyId(name) then return ("[[:d:Special:EntityPage/%s|%s]]"):format(mw.wikibase.resolvePropertyId(name), name) else return name end end local parser_function_hooks = { ["#special"] = hook_special; ["#speciale"] = hook_special; ["int"] = function (mesg) if is_valid_pagename(mesg) then return ("[[:MediaWiki:" .. mesg .. "|" .. mesg .. "]]") else return mesg end end; ["#categorytree"] = function (cat) if is_valid_pagename(cat) and not (mw.title.getCurrentTitle().fullText == ("Category:" .. cat)) then return ("[[:Category:" .. cat .. "|" .. cat .. "]]") else return cat end end; ["#invoke"] = function (mod) if is_valid_pagename(mod) and not (mw.title.getCurrentTitle().fullText == ("Module:" .. mod)) then return ("[[Module:%s|%s]]"):format(mod, mod) else return mod end end; -- ["#tag"] = function (tag) -- local doc_table = require('Module:wikitag link').doc_table -- if doc_table[tag] then -- return ("[[%s|%s]]"):format(doc_table[tag], tag) -- else -- return tag -- end -- end; ["#property"] = hook_wdprop; ["#statements"] = hook_wdprop; } function export.format_link(frame) local args = frame:getParent().args local output = { frame.args.nested and "&#123;&#123;" or "<code>&#123;&#123;" } local templ = args[1] local noargs = true if not templ then if mw.title.getCurrentTitle().fullText == frame:getParent():getTitle() then -- demo mode return "<code>{{<var>{{{1}}}</var>|<var>{{{2}}}</var>|...}}</code>" else error("The template name must be given.") end end for key, value in pairs(args) do if key ~= 1 then noargs = false break end end local function render_title(templ) local marker, rest marker, rest = templ:match("^([Ss][Uu][Bb][Ss][Tt]):(.*)") if not marker then marker, rest = templ:match("^([Ss][Aa][Ff][Ee][Ss][Uu][Bb][Ss][Tt]):(.*)") end if marker then templ = rest table.insert(output, ("[[mw:Manual:Substitution|%s]]:"):format(marker)) end if noargs and variables_nullary[templ] then table.insert(output, ("[[%s|%s]]"):format(variables_nullary[templ], templ)) return end marker, rest = templ:match("^([Mm][Ss][Gg][Nn][Ww]):(.*)") if marker then templ = rest -- not the most accurate documentation ever table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker)) else marker, rest = templ:match("^([Mm][Ss][Gg]):(.*)") if marker then templ = rest table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker)) -- ditto end end marker, rest = templ:match("^([Rr][Aa][Ww]):(.*)") if marker then table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker)) -- missingno. templ = rest end if templ:match("^%s*/") then table.insert(output, ("[[%s]]"):format(templ)) return end marker, rest = templ:match("^(.-):(.*)") if marker then local lcmarker = marker:lower() if parser_functions[lcmarker] then if parser_function_hooks[lcmarker] then rest = parser_function_hooks[lcmarker](rest) end table.insert(output, ("[[%s|%s]]:%s"):format(mw.uri.encode(parser_functions[lcmarker], "WIKI"), marker, rest)) return elseif variables_nonnullary[marker] then table.insert(output, ("[[%s|%s]]:%s"):format(variables_nonnullary[marker], marker, rest)) return end end if templ:match("[%[%]%|%{%}#\127<>]") then table.insert(output, templ) return end if marker then if mw.site.namespaces[marker] then if (title == "") or (mw.title.getCurrentTitle().fullText == templ) then table.insert(output, templ) else table.insert(output, ("[[:%s|%s]]"):format(templ, templ)) end return elseif mw.site.interwikiMap()[marker:lower()] then -- XXX: not sure what to do now… table.insert(output, ("[[:%s:|%s]]:%s"):format(marker, marker, rest)) return end end if (templ == "") or (mw.title.getCurrentTitle().fullText == ("Template:" .. templ)) then table.insert(output, templ) else table.insert(output, ("[[Template:%s|%s]]"):format(templ, templ)) end end render_title(templ) local i = 2 while args[i] do table.insert(output, "&#124;" .. args[i]) i = i + 1 end for key, value in pairs(args) do if type(key) == "string" then table.insert(output, "&#124;" .. key .. "=" .. value) end end table.insert(output, frame.args.nested and "&#125;&#125;" or "&#125;&#125;</code>") return table.concat(output) end return export 526fb2fa1758bae142ff0b2b0cea935a7bf1d07f Template:Coord 10 591 1330 2023-04-30T08:14:15Z wikipedia>Galobtter 0 Changed protection settings for "[[Template:Coord]]": Only purpose is to call fully-protected module ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Coordinates|coord}}</includeonly><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 05c1e2a95ff86fa91442c704f36a9f125b603492 Module:Portal/images/h 828 870 1928 2023-04-30T16:48:06Z wikipedia>Hike395 0 rm deprecated images Scribunto text/plain --[==[ This is the "H" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "H". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be omitted. ]==] return { ["haiti"] = "Flag of Haiti.svg|border|link=|alt=flag", ["hamburg"] = "Flag of Hamburg.svg|border|link=|alt=flag", ["hampshire"] = "EnglandHampshire.svg|link=|alt=", ["haryana"] = "YamunaRiver.jpg|alt=icon", ["harz"] = "DennertFirTree.svg|alt=icon", ["hawaii"] = "Flag of Hawaii.svg|border|link=|alt=flag", ["help"] = "Wikipedia help.png|alt=icon", ["heraldry"] = "Azure, a bend Or.svg|link=|alt=", ["heraldry and vexillology"] = "En-wikipedia arms 9.svg|alt=icon", ["hertfordshire"] = "Hertsflag.jpg|link=|alt=", ["himachal pradesh"] = "Kinnaur Kailash.jpg|link=|alt=", ["hillary clinton"] = "Hillary Rodham Clinton.jpg|link=|alt=", ["hindi cinema"] = "Indiafilm.svg|alt=icon", ["hinduism"] = "Aum Om red.svg|link=|alt=", ["hindustani"] = "Hindustani.svg|link=|alt=script", ["hip hop"] = "Loudspeaker-crystal-theme.svg|alt=icon", ["hisar"] = "Fort of Firoz Shah Tughlaq at Hisar.jpg|link=|alt=photo", ["hispanic and latino americans"] = "Flag of the Hispanicity.svg|link=|alt=icon", ["history"] = "P history.svg|link=|alt=", ["history of science"] = "Newton's reflecting telescope.jpg|link=|alt=image", ["history of the latter day saint movement"] = "Joseph Smith receiving golden plates.jpg|border|link=|alt=", ["hitchhiker's"] = "Answer to Life.png|link=|alt=icon", ["hitchhiker's guide to the galaxy"] = "Answer to Life.png|link=|alt=icon", ["holidays"] = "Calendar icon.svg|alt=icon", ["holy roman empire"] = "Reichskrone.jpg|link=|alt=image", ["honduras"] = "Flag of Honduras.svg|border|link=|alt=flag", ["hong kong"] = "Flag of Hong Kong.svg|border|link=|alt=flag", ["horror fiction"] = "Vampire Smiley.png|alt=icon", ["horses"] = "Finnhorse stallion.jpg|alt=icon", ["hotels"] = "Map Icon - Hotel.png|link=|alt=", ["housing"] = "Big single-family home 2.jpg|link=|alt=", ["hudson valley"] = "Hudson river from bear mountain bridge.jpg|alt=icon", ["human–computer interaction"] = "Mouse icon vector.png|link=|alt=icon", ["human rights"] = "HumanRightsLogo.svg|link=|alt=", ["human sexuality"] = "Bisexuality symbol (bold, color).svg|alt=icon", ["hungary"] = "Flag of Hungary.svg|border|link=|alt=flag", ["hyderabad"] = "Charminar Hyderabad 1.jpg|alt=icon", } 78dcf7d45caaedc14a5dc36ef2370fa0e910f229 Template:Twinkle standard installation 10 1039 2276 2023-05-01T21:47:32Z wikipedia>Mori Calliope fan 0 Moved apostrophe outside of the link wikitext text/x-wiki {{Mbox | image = [[File:Police man Twinkle Head.svg|50x40px|alt=Logo of Twinkle; Police Man|link=]] | text = If you plan to make [[Template:Twinkle standard installation#"breaking changes"|breaking changes]] to this template, move it, or nominate it for deletion, please notify [[Wikipedia:Twinkle|Twinkle]]'s users and maintainers at [[Wikipedia talk:Twinkle]] as a courtesy, as the standard installation of Twinkle adds and removes this template. Thank you!{{#if:{{{1|}}}|<br> {{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by Twinkle|{{PAGENAME}}]]}}}}</includeonly><noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> e0d214332002dd4766de972883ae89580baeaa69 Template:Music infobox header 10 1375 2710 2023-05-02T05:19:54Z w>DB1729 0 Category:Music infobox templates wikitext text/x-wiki {{Ombox|type=content|text=The design and content of all music-related infoboxes should follow Wikipedia's [[Wikipedia:Verifiability|verifiability policy]], [[Wikipedia:Manual of Style/Infoboxes|infobox style guideline]] and [[Wikipedia:Manual of Style/Music|music style guideline]]. While this document may clarify details of their specific application to the infobox, it is primarily concerned with explaining usage and not with matters of Wikipedia policy and style.}}<noinclude> [[Category:Music infobox templates]] </noinclude> 1fcb03dc3664ad5b57b0f62c2c30a8cdfc71f57a Module:Portal/images/b 828 841 1864 2023-05-03T15:07:28Z wikipedia>Hike395 0 rm deprecated images Scribunto text/plain --[==[ This is the "B" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "B". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be -- omitted. ]==] return { ["babism"] = "Haykal2.gif|link=|alt=", ["baden-württemberg"] = "Flag of Baden-Württemberg.svg|border|link=|alt=flag", ["badminton"] = "Badminton racquet.svg|link=|alt=", ["bahrain"] = "Flag of Bahrain.svg|border|link=|alt=flag", ["bailiwick of guernsey"] = "Flag of Guernsey.svg|border|link=|alt=flag", ["bailiwick of jersey"] = "Flag of Jersey.svg|border|link=|alt=flag", ["balochistan, pakistan"] = "Flag of Balochistan.svg|border|link=|alt=", ["baltic states"] = "Subdivisions of baltic states.svg|link=|alt=map", ["baltimore"] = "Seal of Baltimore, Maryland.png|link=|alt=seal", ["bangalore"] = "Bangalore Palace.jpg|alt=icon", ["bangladesh"] = "Flag of Bangladesh.svg|border|link=|alt=flag", ["banks"] = "All-currency-symbol.svg|link=|alt=icon", ["barbados"] = "Flag of Barbados.svg|border|link=|alt=flag", ["baseball"] = "Baseball.svg|link=|alt=icon", ["basketball"] = "Basketball Clipart.svg|link=|alt=icon", ["battleships"] = "BS Bismarck.png|alt=icon", ["bavaria"] = "Flag of Bavaria (lozengy).svg|border|link=|alt=flag", ["bbc"] = "BBC Logo 2021.svg|link=|alt=", ["beer"] = "Projet bière logo v2.png|alt=icon", ["belarus"] = "Flag of Belarus.svg|border|link=|alt=flag", ["belgium"] = "Flag of Belgium.svg|border|link=|alt=flag", ["belize"] = "Flag of Belize.svg|border|link=|alt=flag", ["benin"] = "Flag of Benin.svg|border|link=|alt=flag", ["berkshire"] = "Flag of Berkshire.svg|link=|alt=flag", ["berlin"] = "Flag of Berlin (state).svg|border|link=|alt=flag", ["bermuda"] = "Flag of Bermuda.svg|border|link=|alt=flag", ["bhutan"] = "Flag of Bhutan.svg|border|link=|alt=flag", ["bible"] = "Bible.malmesbury.arp.jpg|link=|alt=", ["bihar"] = "Seal of Bihar.jpg|link=|alt=", ["biography"] = "P vip.svg|link=|alt=", ["biology"] = "Issoria lathonia.jpg|alt=icon", ["birds"] = "Eagle 01.svg|link=|alt=", ["blues"] = "Guit Blues.JPG|link=|alt=", ["bohemia"] = "Flag of Bohemia.svg|border|link=|alt=flag", ["bolivia"] = "Flag of Bolivia.svg|border|link=|alt=flag", ["bollywood"] = "Indiafilm.svg|alt=icon", ["bonaire"] = "Flag of Bonaire.svg|border|link=|alt=flag", ["books"] = "Nuvola apps bookcase.svg|alt=icon", ["bosnia and herzegovina"] = "Flag of Bosnia and Herzegovina.svg|border|link=|alt=flag", ["botany"] = "Rosa villosa.jpg|alt=icon", ["botswana"] = "Flag of Botswana.svg|border|link=|alt=flag", ["brandenburg"] = "Flag of Brandenburg.svg|border|link=|alt=flag", ["brazil"] = "Flag of Brazil.svg|border|link=|alt=flag", ["brigham young university"] = "Brigham Young University medallion.svg|link=|alt=seal", ["bristol"] = "Bristol arms cropped.jpg|alt=icon", ["british columbia"] = "Flag of British Columbia.svg|border|link=|alt=flag", ["british empire"] = "British Empire 1897.jpg|link=|alt=", ["british indian ocean territory"] = "Flag of the British Indian Ocean Territory.svg|border|link=|alt=flag", ["british virgin islands"] = "Flag of the British Virgin Islands.svg|border|link=|alt=flag", ["brunei"] = "Flag of Brunei.svg|border|link=|alt=flag", ["buddhism"] = "Dharma Wheel.svg|alt=icon", ["bulgaria"] = "Flag of Bulgaria.svg|border|link=|alt=flag", ["burkina faso"] = "Flag of Burkina Faso.svg|border|link=|alt=flag", ["burundi"] = "Flag of Burundi.svg|border|link=|alt=flag", ["buses"] = "BSicon BUS.svg|link=|alt=", ["business and economics"] = "Emblem-money.svg|alt=icon", ["byzantine empire"] = "Flag of Palaeologus Dynasty.svg|border|link=|alt=flag" } 478b01f3f226cf941e2988888a0337f360ba173f Template:ISO 15924 script codes and related Unicode data/header 10 1629 2964 2023-05-06T07:12:24Z 217.117.125.83 0 wikitext text/x-wiki {| class="wikitable sortable mw-collapsible {{#switch:{{{state|mw-uncollapsed}}} | mw-uncollapsed| uncollapsed = mw-uncollapsed||#default=mw-collapsed}}" style="font-size:85%; width:100%;" |- ! colspan=9 | {{navbar-collapsible|Scripts in [[ISO 15924]]{{cref2|group=ISO_Unicode|a}}{{cref2|group=ISO_list|b}} and in [[Unicode]]{{cref2|group=ISO_changes|c}}{{cref2|group=Asof_Unicode_version|d}}|ISO 15924 script codes and related Unicode data}} |- ! colspan=4 | ISO 15924 ! colspan=5 | [[Script (Unicode)|Script in Unicode]]{{cref2|group=Unicode_charts|e}} |- style="vertical-align:top" ! Code ! ISO number ! ISO formal name ! Directionality ! Unicode Alias{{cref2|group=Aliases_for_Unicode|f}} ! Version ! Characters ! Notes ! Description <noinclude>|} {{documentation|1=Template:ISO 15924 script codes and related Unicode data/doc}}</noinclude> 3fc998d5b9e54883e1bafd96c9e0c6a1da001e09 Module:Political party 828 1573 2908 2023-05-07T14:19:00Z w>Primefac 0 Undid revision 1153505214 by [[Special:Contributions/R'n'B|R'n'B]] ([[User talk:R'n'B|talk]]) this is already in the /I module as an alternate name? Scribunto text/plain local p = {} local default_color = '&#35;F8F9FA' local categories = { party_not_in_list = '[[Category:Pages using Political party with unknown party]]', shortname_not_in_list = '[[Category:Pages using Political party with missing shortname]]', color_not_in_list = '[[Category:Pages using Political party with missing color]]', } local function create_error(error_message) return string.format('<strong class="error">%s</strong>', error_message) end local function getFirstLetter(party) local index = mw.ustring.sub(party, 1, 1) -- Set index for non-A-Z starts if string.match(index, '%A') then return '1' end return string.upper(index) end local function stripToNil(text) -- If text is a string, return its trimmed content, or nil if empty. -- Otherwise return text (which may, for example, be nil). if type(text) == 'string' then text = text:match('(%S.-)%s*$') local delink = require('Module:Delink')._delink text = delink({text, wikilinks = "target"}) end return text end -- Example of having all the data - color and names - in one table. Requires one page to be edited instead of two when adding a new party. function p._fetch(args) if not args[1] then return create_error("parameter 1 should be a party name.") end if not args[2] then return create_error("parameter 2 should be the output type.") end local party = stripToNil(args[1]) local out_type = stripToNil(args[2]) if out_type == 'colour' then out_type = 'color' end local index = getFirstLetter(party) -- Load data from submodule local data = mw.loadData('Module:Political party/' .. index) local data_all = data.full local party_alt = data.alternate[party] local party_info if party_alt then if data_all[party_alt] then party_info = data_all[party_alt] else index = getFirstLetter(party_alt) data = mw.loadData('Module:Political party/' .. index) party_info = data.full[party_alt] end else party_info = data_all[party] end -- Check if database value exists -- * Not even in database - return given error or input -- * No color - return error -- * No shortname/abbrev - return first non-blank of abbrev->shortname->input if not party_info then if out_type == 'color' then return args.error or default_color else return args.error or party end end local return_value = party_info[out_type] if return_value == "" then if out_type == 'color' then return args.error or create_error("Value not in template. Please request that it be added.") elseif out_type == 'abbrev' then if party_info.shortname ~= "" then return party_info.shortname else return party end elseif out_type == 'shortname' then if party_info.abbrev ~= "" then return party_info.abbrev else return party end else return party end end if out_type == 'color' and string.find(return_value, '#') then return_value = string.gsub(return_value, '#', '&#35;') end return return_value end function p.fetch(frame) -- Initialise and populate variables local getArgs = require("Module:Arguments").getArgs local args = getArgs(frame) return p._fetch(args) end return p 5619f7c33e00168878164325d0fcb8600faa2446 Template:Infobox UK place/dist 10 1410 2745 2023-05-07T17:59:58Z w>MusikBot II 0 Changed protection settings for "[[Template:Infobox UK place/dist]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2500 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <!-- this template is for formatting a distance (using {{Convert}}) if type=mile then output is mm mi (kk km) otherwise kk km (mm mi) rounding of output is based on input, unless less than 10 when one decimal place is used --><includeonly>{{#ifeq: {{{type|}}}|mile|<!-- then -->{{convert|{{{distance|}}}|mi|km|abbr=on|{{#ifexpr: {{#invoke:convert/helper|cleanNumber|{{{distance|1}}}}}<10|1|}} }}|<!-- else -->{{convert|{{{distance|}}}|km|mi|abbr=on|{{#ifexpr: {{#invoke:convert/helper|cleanNumber|{{{distance|1}}}}}<10|1|}} }} }}</includeonly> f1c736f32f2f8ef728071ab8b1c7cf16b9b5d51d Module:Protection banner/config 828 41 77 2023-05-08T11:41:01Z wikipedia>Fayenatic london 0 Update categories from "fully-protected" to "fully protected", removing hyphen, per valid request at [[WP:CFDS]] Scribunto text/plain -- This module provides configuration data for [[Module:Protection banner]]. return { -------------------------------------------------------------------------------- -- -- BANNER DATA -- -------------------------------------------------------------------------------- --[[ -- Banner data consists of six fields: -- * text - the main protection text that appears at the top of protection -- banners. -- * explanation - the text that appears below the main protection text, used -- to explain the details of the protection. -- * tooltip - the tooltip text you see when you move the mouse over a small -- padlock icon. -- * link - the page that the small padlock icon links to. -- * alt - the alt text for the small padlock icon. This is also used as tooltip -- text for the large protection banners. -- * image - the padlock image used in both protection banners and small padlock -- icons. -- -- The module checks in three separate tables to find a value for each field. -- First it checks the banners table, which has values specific to the reason -- for the page being protected. Then the module checks the defaultBanners -- table, which has values specific to each protection level. Finally, the -- module checks the masterBanner table, which holds data for protection -- templates to use if no data has been found in the previous two tables. -- -- The values in the banner data can take parameters. These are specified -- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name -- enclosed in curly braces). -- -- Available parameters: -- -- ${CURRENTVERSION} - a link to the page history or the move log, with the -- display message "current-version-edit-display" or -- "current-version-move-display". -- -- ${EDITREQUEST} - a link to create an edit request for the current page. -- -- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes -- on the talk page; you may submit a request to ask an administrator to make -- an edit if it is minor or supported by consensus." -- -- ${IMAGELINK} - a link to set the image to, depending on the protection -- action and protection level. -- -- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry -- is set. E.g. "Editing of this page by new or unregistered users is currently -- disabled until dd Month YYYY." -- -- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation -- so that it can be used in run-on sentences. -- -- ${PAGETYPE} - the type of the page, e.g. "article" or "template". -- Defined in the cfg.pagetypes table. -- -- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g. -- "Editing of this page by new or unregistered users is currently disabled" -- -- ${PROTECTIONDATE} - the protection date, if it has been supplied to the -- template. -- -- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or -- "semi-protected". -- -- ${PROTECTIONLOG} - a link to the protection log or the pending changes log, -- depending on the protection action. -- -- ${TALKPAGE} - a link to the talk page. If a section is specified, links -- straight to that talk page section. -- -- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to -- create a blurb like "This template is semi-protected", or "This article is -- move-protected until DD Month YYYY". -- -- ${VANDAL} - links for the specified username (or the root page name) -- using Module:Vandal-m. -- -- Functions -- -- For advanced users, it is possible to use Lua functions instead of strings -- in the banner config tables. Using functions gives flexibility that is not -- possible just by using parameters. Functions take two arguments, the -- protection object and the template arguments, and they must output a string. -- -- For example: -- -- text = function (protectionObj, args) -- if protectionObj.level == 'autoconfirmed' then -- return 'foo' -- else -- return 'bar' -- end -- end -- -- Some protection object properties and methods that may be useful: -- protectionObj.action - the protection action -- protectionObj.level - the protection level -- protectionObj.reason - the protection reason -- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set -- to indefinite, and the protection time in unix time if temporary. -- protectionObj.protectionDate - the protection date in unix time, or nil if -- unspecified. -- protectionObj.bannerConfig - the banner config found by the module. Beware -- of editing the config field used by the function, as it could create an -- infinite loop. -- protectionObj:isProtected - returns a boolean showing whether the page is -- protected. -- protectionObj:isTemporary - returns a boolean showing whether the expiry is -- temporary. -- protectionObj:isIncorrect - returns a boolean showing whether the protection -- template is incorrect. --]] -- The master banner data, used if no values have been found in banners or -- defaultBanners. masterBanner = { text = '${INTROBLURB}', explanation = '${EXPLANATIONBLURB}', tooltip = '${TOOLTIPBLURB}', link = '${IMAGELINK}', alt = 'Page ${PROTECTIONLEVEL}' }, -- The default banner data. This holds banner data for different protection -- levels. -- *required* - this table needs edit, move, autoreview and upload subtables. defaultBanners = { edit = {}, move = {}, autoreview = { default = { alt = 'Page protected with pending changes', tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users', image = 'Pending-protection-shackle.svg' } }, upload = {} }, -- The banner data. This holds banner data for different protection reasons. -- In fact, the reasons specified in this table control which reasons are -- valid inputs to the first positional parameter. -- -- There is also a non-standard "description" field that can be used for items -- in this table. This is a description of the protection reason for use in the -- module documentation. -- -- *required* - this table needs edit, move, autoreview and upload subtables. banners = { edit = { blp = { description = 'For pages protected to promote compliance with the' .. ' [[Wikipedia:Biographies of living persons' .. '|biographies of living persons]] policy', text = '${INTROFRAGMENT} to promote compliance with' .. ' [[Wikipedia:Biographies of living persons' .. "|Wikipedia's&nbsp;policy on&nbsp;the&nbsp;biographies" .. ' of&nbsp;living&nbsp;people]].', tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on' .. ' biographies of living persons', }, dmca = { description = 'For pages protected by the Wikimedia Foundation' .. ' due to [[Digital Millennium Copyright Act]] takedown requests', explanation = function (protectionObj, args) local ret = 'Pursuant to a rights owner notice under the Digital' .. ' Millennium Copyright Act (DMCA) regarding some content' .. ' in this article, the Wikimedia Foundation acted under' .. ' applicable law and took down and restricted the content' .. ' in question.' if args.notice then ret = ret .. ' A copy of the received notice can be found here: ' .. args.notice .. '.' end ret = ret .. ' For more information, including websites discussing' .. ' how to file a counter-notice, please see' .. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}." .. "'''Do not remove this template from the article until the" .. " restrictions are withdrawn'''." return ret end, image = 'Office-protection-shackle.svg', }, dispute = { description = 'For pages protected due to editing disputes', text = function (protectionObj, args) -- Find the value of "disputes". local display = 'disputes' local disputes if args.section then disputes = string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[protectionObj.title.namespace].talk.name, protectionObj.title.text, args.section, display ) else disputes = display end -- Make the blurb, depending on the expiry. local msg if type(protectionObj.expiry) == 'number' then msg = '${INTROFRAGMENT} or until editing %s have been resolved.' else msg = '${INTROFRAGMENT} until editing %s have been resolved.' end return string.format(msg, disputes) end, explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', tooltip = '${TOOLTIPFRAGMENT} due to editing disputes', }, ecp = { description = 'For articles in topic areas authorized by' .. ' [[Wikipedia:Arbitration Committee|ArbCom]] or' .. ' meets the criteria for community use', tooltip = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', alt = 'Extended-protected ${PAGETYPE}', }, mainpage = { description = 'For pages protected for being displayed on the [[Main Page]]', text = 'This file is currently' .. ' [[Wikipedia:This page is protected|protected]] from' .. ' editing because it is currently or will soon be displayed' .. ' on the [[Main Page]].', explanation = 'Images on the Main Page are protected due to their high' .. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.' .. '<br /><span style="font-size:90%;">' .. "'''Administrators:''' Once this image is definitely off the Main Page," .. ' please unprotect this file, or reduce to semi-protection,' .. ' as appropriate.</span>', }, office = { description = 'For pages protected by the Wikimedia Foundation', text = function (protectionObj, args) local ret = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.' if protectionObj.protectionDate then ret = ret .. ' It has been protected since ${PROTECTIONDATE}.' end return ret end, explanation = "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not remove protection from this" .. " page unless you are authorized by the Wikimedia Foundation to do" .. " so.'''", image = 'Office-protection-shackle.svg', }, reset = { description = 'For pages protected by the Wikimedia Foundation and' .. ' "reset" to a bare-bones version', text = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.', explanation = function (protectionObj, args) local ret = '' if protectionObj.protectionDate then ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was' else ret = ret .. 'This ${PAGETYPE} has been' end ret = ret .. ' reduced to a' .. ' simplified, "bare bones" version so that it may be completely' .. ' rewritten to ensure it meets the policies of' .. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].' .. ' Standard Wikipedia policies will apply to its rewriting—which' .. ' will eventually be open to all editors—and will be strictly' .. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while' .. ' it is being rebuilt.\n\n' .. 'Any insertion of material directly from' .. ' pre-protection revisions of the ${PAGETYPE} will be removed, as' .. ' will any material added to the ${PAGETYPE} that is not properly' .. ' sourced. The associated talk page(s) were also cleared on the' .. " same date.\n\n" .. "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not override" .. " this action, and do not remove protection from this page," .. " unless you are authorized by the Wikimedia Foundation" .. " to do so. No editor may remove this notice.'''" return ret end, image = 'Office-protection-shackle.svg', }, sock = { description = 'For pages protected due to' .. ' [[Wikipedia:Sock puppetry|sock puppetry]]', text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of' .. ' [[Wikipedia:Blocking policy|blocked]] or' .. ' [[Wikipedia:Banning policy|banned users]]' .. ' from editing it.', tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from' .. ' editing it', }, template = { description = 'For [[Wikipedia:High-risk templates|high-risk]]' .. ' templates and Lua modules', text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},' .. ' as it is [[Wikipedia:High-risk templates|high-risk]].', explanation = 'Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] or' .. ' [[Wikipedia:Template editor|template editor]] to make an edit if' .. ' it is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by' .. ' [[Wikipedia:Consensus|consensus]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}' .. ' to prevent vandalism', alt = 'Permanently protected ${PAGETYPE}', }, usertalk = { description = 'For pages protected against disruptive edits by a' .. ' particular user', text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,' .. ' such as abusing the' .. ' &#123;&#123;[[Template:unblock|unblock]]&#125;&#125; template.', explanation = 'If you cannot edit this user talk page and you need to' .. ' make a change or leave a message, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for edits to a protected page' .. '|request an edit]],' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]],' .. ' [[Special:Userlogin|log in]],' .. ' or [[Special:UserLogin/signup|create an account]].', }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism|vandalism]]', text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].', explanation = function (protectionObj, args) local ret = '' if protectionObj.level == 'sysop' then ret = ret .. "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ' end return ret .. '${EXPLANATIONBLURB}' end, tooltip = '${TOOLTIPFRAGMENT} due to vandalism', } }, move = { dispute = { description = 'For pages protected against page moves due to' .. ' disputes over the page title', explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', image = 'Move-protection-shackle.svg' }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism#Page-move vandalism' .. ' |page-move vandalism]]' } }, autoreview = {}, upload = {} }, -------------------------------------------------------------------------------- -- -- GENERAL DATA TABLES -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Protection blurbs -------------------------------------------------------------------------------- -- This table produces the protection blurbs available with the -- ${PROTECTIONBLURB} parameter. It is sorted by protection action and -- protection level, and is checked by the module in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionBlurbs = { edit = { default = 'This ${PAGETYPE} is currently [[Help:Protection|' .. 'protected]] from editing', autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access' .. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered' .. ' users|unregistered]] users is currently [[Help:Protection|disabled]]', extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection', }, move = { default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]' .. ' from [[Help:Moving a page|page moves]]' }, autoreview = { default = 'All edits made to this ${PAGETYPE} by' .. ' [[Wikipedia:User access levels#New users|new]] or' .. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]' .. ' users are currently' .. ' [[Wikipedia:Pending changes|subject to review]]' }, upload = { default = 'Uploading new versions of this ${PAGETYPE} is currently disabled' } }, -------------------------------------------------------------------------------- -- Explanation blurbs -------------------------------------------------------------------------------- -- This table produces the explanation blurbs available with the -- ${EXPLANATIONBLURB} parameter. It is sorted by protection action, -- protection level, and whether the page is a talk page or not. If the page is -- a talk page it will have a talk key of "talk"; otherwise it will have a talk -- key of "subject". The table is checked in the following order: -- 1. page's protection action, page's protection level, page's talk key -- 2. page's protection action, page's protection level, default talk key -- 3. page's protection action, default protection level, page's talk key -- 4. page's protection action, default protection level, default talk key -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. explanationBlurbs = { edit = { autoconfirmed = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', }, extendedconfirmed = { default = 'Extended confirmed protection prevents edits from all unregistered editors' .. ' and registered users with fewer than 30 days tenure and 500 edits.' .. ' The [[Wikipedia:Protection policy#extended|policy on community use]]' .. ' specifies that extended confirmed protection can be applied to combat' .. ' disruption, if semi-protection has proven to be ineffective.' .. ' Extended confirmed protection may also be applied to enforce' .. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].' .. ' Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask for uncontroversial changes supported by' .. ' [[Wikipedia:Consensus|consensus]].' }, default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]]. You may also [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|request]] that this page be unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' You may [[Wikipedia:Requests for page' .. ' protection#Current requests for edits to a protected page|request an' .. ' edit]] to this page, or [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|ask]] for it to be unprotected.' } }, move = { default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves on the' .. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves at' .. ' [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.' } }, autoreview = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Edits to this ${PAGETYPE} by new and unregistered users' .. ' will not be visible to readers until they are accepted by' .. ' a reviewer. To avoid the need for your edits to be' .. ' reviewed, you may' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].' }, }, upload = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but new versions of the file' .. ' cannot be uploaded until it is unprotected. You can' .. ' request that a new version be uploaded by using a' .. ' [[Wikipedia:Edit requests|protected edit request]], or you' .. ' can [[Wikipedia:Requests for page protection|request]]' .. ' that the file be unprotected.' } } }, -------------------------------------------------------------------------------- -- Protection levels -------------------------------------------------------------------------------- -- This table provides the data for the ${PROTECTIONLEVEL} parameter, which -- produces a short label for different protection levels. It is sorted by -- protection action and protection level, and is checked in the following -- order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionLevels = { edit = { default = 'protected', templateeditor = 'template-protected', extendedconfirmed = 'extended-protected', autoconfirmed = 'semi-protected', }, move = { default = 'move-protected' }, autoreview = { }, upload = { default = 'upload-protected' } }, -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- This table lists different padlock images for each protection action and -- protection level. It is used if an image is not specified in any of the -- banner data tables, and if the page does not satisfy the conditions for using -- the ['image-filename-indef'] image. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level images = { edit = { default = 'Full-protection-shackle.svg', templateeditor = 'Template-protection-shackle.svg', extendedconfirmed = 'Extended-protection-shackle.svg', autoconfirmed = 'Semi-protection-shackle.svg' }, move = { default = 'Move-protection-shackle.svg', }, autoreview = { default = 'Pending-protection-shackle.svg' }, upload = { default = 'Upload-protection-shackle.svg' } }, -- Pages with a reason specified in this table will show the special "indef" -- padlock, defined in the 'image-filename-indef' message, if no expiry is set. indefImageReasons = { template = true }, -------------------------------------------------------------------------------- -- Image links -------------------------------------------------------------------------------- -- This table provides the data for the ${IMAGELINK} parameter, which gets -- the image link for small padlock icons based on the page's protection action -- and protection level. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. imageLinks = { edit = { default = 'Wikipedia:Protection policy#full', templateeditor = 'Wikipedia:Protection policy#template', extendedconfirmed = 'Wikipedia:Protection policy#extended', autoconfirmed = 'Wikipedia:Protection policy#semi' }, move = { default = 'Wikipedia:Protection policy#move' }, autoreview = { default = 'Wikipedia:Protection policy#pending' }, upload = { default = 'Wikipedia:Protection policy#upload' } }, -------------------------------------------------------------------------------- -- Padlock indicator names -------------------------------------------------------------------------------- -- This table provides the "name" attribute for the <indicator> extension tag -- with which small padlock icons are generated. All indicator tags on a page -- are displayed in alphabetical order based on this attribute, and with -- indicator tags with duplicate names, the last tag on the page wins. -- The attribute is chosen based on the protection action; table keys must be a -- protection action name or the string "default". padlockIndicatorNames = { autoreview = 'pp-autoreview', default = 'pp-default' }, -------------------------------------------------------------------------------- -- Protection categories -------------------------------------------------------------------------------- --[[ -- The protection categories are stored in the protectionCategories table. -- Keys to this table are made up of the following strings: -- -- 1. the expiry date -- 2. the namespace -- 3. the protection reason (e.g. "dispute" or "vandalism") -- 4. the protection level (e.g. "sysop" or "autoconfirmed") -- 5. the action (e.g. "edit" or "move") -- -- When the module looks up a category in the table, first it will will check to -- see a key exists that corresponds to all five parameters. For example, a -- user page semi-protected from vandalism for two weeks would have the key -- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module -- changes the first part of the key to "all" and checks the table again. It -- keeps checking increasingly generic key combinations until it finds the -- field, or until it reaches the key "all-all-all-all-all". -- -- The module uses a binary matrix to determine the order in which to search. -- This is best demonstrated by a table. In this table, the "0" values -- represent "all", and the "1" values represent the original data (e.g. -- "indef" or "file" or "vandalism"). -- -- expiry namespace reason level action -- order -- 1 1 1 1 1 1 -- 2 0 1 1 1 1 -- 3 1 0 1 1 1 -- 4 0 0 1 1 1 -- 5 1 1 0 1 1 -- 6 0 1 0 1 1 -- 7 1 0 0 1 1 -- 8 0 0 0 1 1 -- 9 1 1 1 0 1 -- 10 0 1 1 0 1 -- 11 1 0 1 0 1 -- 12 0 0 1 0 1 -- 13 1 1 0 0 1 -- 14 0 1 0 0 1 -- 15 1 0 0 0 1 -- 16 0 0 0 0 1 -- 17 1 1 1 1 0 -- 18 0 1 1 1 0 -- 19 1 0 1 1 0 -- 20 0 0 1 1 0 -- 21 1 1 0 1 0 -- 22 0 1 0 1 0 -- 23 1 0 0 1 0 -- 24 0 0 0 1 0 -- 25 1 1 1 0 0 -- 26 0 1 1 0 0 -- 27 1 0 1 0 0 -- 28 0 0 1 0 0 -- 29 1 1 0 0 0 -- 30 0 1 0 0 0 -- 31 1 0 0 0 0 -- 32 0 0 0 0 0 -- -- In this scheme the action has the highest priority, as it is the last -- to change, and the expiry has the least priority, as it changes the most. -- The priorities of the expiry, the protection level and the action are -- fixed, but the priorities of the reason and the namespace can be swapped -- through the use of the cfg.bannerDataNamespaceHasPriority table. --]] -- If the reason specified to the template is listed in this table, -- namespace data will take priority over reason data in the protectionCategories -- table. reasonsWithNamespacePriority = { vandalism = true, }, -- The string to use as a namespace key for the protectionCategories table for each -- namespace number. categoryNamespaceKeys = { [ 2] = 'user', [ 3] = 'user', [ 4] = 'project', [ 6] = 'file', [ 8] = 'mediawiki', [ 10] = 'template', [ 12] = 'project', [ 14] = 'category', [100] = 'portal', [828] = 'module', }, protectionCategories = { ['all|all|all|all|all'] = 'Wikipedia fully protected pages', ['all|all|office|all|all'] = 'Wikipedia Office-protected pages', ['all|all|reset|all|all'] = 'Wikipedia Office-protected pages', ['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages', ['all|all|mainpage|all|all'] = 'Wikipedia fully protected main page files', ['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|template|all|all|edit'] = 'Wikipedia fully protected templates', ['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages', ['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages', ['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people', ['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people', ['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute', ['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users', ['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism', ['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories', ['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files', ['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals', ['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages', ['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages', ['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates', ['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages', ['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules', ['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates', ['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates ['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people', ['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people', ['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute', ['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users', ['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism', ['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories', ['all|file|all|sysop|edit'] = 'Wikipedia fully protected files', ['all|project|all|sysop|edit'] = 'Wikipedia fully protected project pages', ['all|talk|all|sysop|edit'] = 'Wikipedia fully protected talk pages', ['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates', ['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates', ['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages', ['all|module|all|all|edit'] = 'Wikipedia fully protected modules', ['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules', ['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules', ['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules', ['all|all|all|sysop|move'] = 'Wikipedia move-protected pages', ['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages', ['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute', ['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism', ['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals', ['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages', ['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages', ['all|template|all|sysop|move'] = 'Wikipedia move-protected templates', ['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages', ['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages', ['all|file|all|all|upload'] = 'Wikipedia upload-protected files', }, -------------------------------------------------------------------------------- -- Expiry category config -------------------------------------------------------------------------------- -- This table configures the expiry category behaviour for each protection -- action. -- * If set to true, setting that action will always categorise the page if -- an expiry parameter is not set. -- * If set to false, setting that action will never categorise the page. -- * If set to nil, the module will categorise the page if: -- 1) an expiry parameter is not set, and -- 2) a reason is provided, and -- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck -- table. expiryCheckActions = { edit = nil, move = false, autoreview = true, upload = false }, reasonsWithoutExpiryCheck = { blp = true, template = true, }, -------------------------------------------------------------------------------- -- Pagetypes -------------------------------------------------------------------------------- -- This table produces the page types available with the ${PAGETYPE} parameter. -- Keys are namespace numbers, or the string "default" for the default value. pagetypes = { [0] = 'article', [6] = 'file', [10] = 'template', [14] = 'category', [828] = 'module', default = 'page' }, -------------------------------------------------------------------------------- -- Strings marking indefinite protection -------------------------------------------------------------------------------- -- This table contains values passed to the expiry parameter that mean the page -- is protected indefinitely. indefStrings = { ['indef'] = true, ['indefinite'] = true, ['indefinitely'] = true, ['infinite'] = true, }, -------------------------------------------------------------------------------- -- Group hierarchy -------------------------------------------------------------------------------- -- This table maps each group to all groups that have a superset of the original -- group's page editing permissions. hierarchy = { sysop = {}, reviewer = {'sysop'}, filemover = {'sysop'}, templateeditor = {'sysop'}, extendedconfirmed = {'sysop'}, autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'}, user = {'autoconfirmed'}, ['*'] = {'user'} }, -------------------------------------------------------------------------------- -- Wrapper templates and their default arguments -------------------------------------------------------------------------------- -- This table contains wrapper templates used with the module, and their -- default arguments. Templates specified in this table should contain the -- following invocation, and no other template content: -- -- {{#invoke:Protection banner|main}} -- -- If other content is desired, it can be added between -- <noinclude>...</noinclude> tags. -- -- When a user calls one of these wrapper templates, they will use the -- default arguments automatically. However, users can override any of the -- arguments. wrappers = { ['Template:Pp'] = {}, ['Template:Pp-extended'] = {'ecp'}, ['Template:Pp-blp'] = {'blp'}, -- we don't need Template:Pp-create ['Template:Pp-dispute'] = {'dispute'}, ['Template:Pp-main-page'] = {'mainpage'}, ['Template:Pp-move'] = {action = 'move', catonly = 'yes'}, ['Template:Pp-move-dispute'] = {'dispute', action = 'move', catonly = 'yes'}, -- we don't need Template:Pp-move-indef ['Template:Pp-move-vandalism'] = {'vandalism', action = 'move', catonly = 'yes'}, ['Template:Pp-office'] = {'office'}, ['Template:Pp-office-dmca'] = {'dmca'}, ['Template:Pp-pc'] = {action = 'autoreview', small = true}, ['Template:Pp-pc1'] = {action = 'autoreview', small = true}, ['Template:Pp-reset'] = {'reset'}, ['Template:Pp-semi-indef'] = {small = true}, ['Template:Pp-sock'] = {'sock'}, ['Template:Pp-template'] = {'template', small = true}, ['Template:Pp-upload'] = {action = 'upload'}, ['Template:Pp-usertalk'] = {'usertalk'}, ['Template:Pp-vandalism'] = {'vandalism'}, }, -------------------------------------------------------------------------------- -- -- MESSAGES -- -------------------------------------------------------------------------------- msg = { -------------------------------------------------------------------------------- -- Intro blurb and intro fragment -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${INTROBLURB} and -- ${INTROFRAGMENT} parameters. If the protection is temporary they use the -- intro-blurb-expiry or intro-fragment-expiry, and if not they use -- intro-blurb-noexpiry or intro-fragment-noexpiry. -- It is possible to use banner parameters in these messages. ['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.', ['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.', ['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},', ['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}', -------------------------------------------------------------------------------- -- Tooltip blurb -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${TOOLTIPBLURB} parameter. -- If the protection is temporary the tooltip-blurb-expiry message is used, and -- if not the tooltip-blurb-noexpiry message is used. -- It is possible to use banner parameters in these messages. ['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.', ['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.', ['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},', ['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', -------------------------------------------------------------------------------- -- Special explanation blurb -------------------------------------------------------------------------------- -- An explanation blurb for pages that cannot be unprotected, e.g. for pages -- in the MediaWiki namespace. -- It is possible to use banner parameters in this message. ['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]].', -------------------------------------------------------------------------------- -- Protection log display values -------------------------------------------------------------------------------- -- These messages determine the display values for the protection log link -- or the pending changes log link produced by the ${PROTECTIONLOG} parameter. -- It is possible to use banner parameters in these messages. ['protection-log-display'] = 'protection log', ['pc-log-display'] = 'pending changes log', -------------------------------------------------------------------------------- -- Current version display values -------------------------------------------------------------------------------- -- These messages determine the display values for the page history link -- or the move log link produced by the ${CURRENTVERSION} parameter. -- It is possible to use banner parameters in these messages. ['current-version-move-display'] = 'current title', ['current-version-edit-display'] = 'current version', -------------------------------------------------------------------------------- -- Talk page -------------------------------------------------------------------------------- -- This message determines the display value of the talk page link produced -- with the ${TALKPAGE} parameter. -- It is possible to use banner parameters in this message. ['talk-page-link-display'] = 'talk page', -------------------------------------------------------------------------------- -- Edit requests -------------------------------------------------------------------------------- -- This message determines the display value of the edit request link produced -- with the ${EDITREQUEST} parameter. -- It is possible to use banner parameters in this message. ['edit-request-display'] = 'submit an edit request', -------------------------------------------------------------------------------- -- Expiry date format -------------------------------------------------------------------------------- -- This is the format for the blurb expiry date. It should be valid input for -- the first parameter of the #time parser function. ['expiry-date-format'] = 'F j, Y "at" H:i e', -------------------------------------------------------------------------------- -- Tracking categories -------------------------------------------------------------------------------- -- These messages determine which tracking categories the module outputs. ['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates', ['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules', -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- These are images that are not defined by their protection action and protection level. ['image-filename-indef'] = 'Full-protection-shackle.svg', ['image-filename-default'] = 'Transparent.gif', -------------------------------------------------------------------------------- -- End messages -------------------------------------------------------------------------------- } -------------------------------------------------------------------------------- -- End configuration -------------------------------------------------------------------------------- } a20552ae38cb5253a4fa29aa126abc74215a589f Template:Aka 10 578 1304 2023-05-08T20:30:03Z Aaron Liu 40 MOS prohibits "aka" wikitext text/x-wiki <abbr title="also known as">{{#if:{{{AKA|}}}{{{uc|}}}|AKA|a.k.a.}}</abbr><noinclude> {{documentation}} </noinclude> 78a22d82a9beabc017751e258efef369bd2bf13f Template:Longitem 10 1340 2675 2023-05-09T01:38:28Z w>Neveselbert 0 Undid revision 1153902556 by [[Special:Contributions/Neveselbert|Neveselbert]] ([[User talk:Neveselbert|talk]]) - backlinked wikitext text/x-wiki <noinclude>{{#tag: code| </noinclude>{{#ifeq: {{{1|+}}} | {{{1|-}}} | <div style="}}display: inline-block; line-height: 1.2em; padding: .1em 0; {{#ifeq: {{{1|+}}} | {{{1|-}}} | {{{style|}}}">{{{1|}}}</div> | <includeonly>width: 100%;</includeonly> }}<includeonly>{{#if:{{{2|}}}|[[Category:Pages using Template:Longitem with unnamed style parameter]]}}</includeonly><noinclude> |lang=wikitext}} {{documentation}} </noinclude> 2919b818deb36b243e9f9517917cbcfaa2c8d4ec Module:Convert/data 828 1166 2495 2023-05-10T03:20:18Z w>Johnuniq 0 update from sandbox per [[Template talk:Convert#Module version 29]] Scribunto text/plain -- Conversion data used by [[Module:Convert]] which uses mw.loadData() for -- read-only access to this module so that it is loaded only once per page. -- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki. -- -- These data tables follow: -- all_units all properties for a unit, including default output -- default_exceptions exceptions for default output ('kg' and 'g' have different defaults) -- link_exceptions exceptions for links ('kg' and 'g' have different links) -- -- These tables are generated by a script which reads the wikitext of a page that -- documents the required properties of each unit; see [[:en:Module:Convert/doc]]. --------------------------------------------------------------------------- -- Do not change the data in this table because it is created by running -- -- a script that reads the wikitext from a wiki page (see note above). -- --------------------------------------------------------------------------- local all_units = { ["Gy"] = { _name1 = "gray", _symbol = "Gy", utype = "absorbed radiation dose", scale = 1, prefixes = 1, default = "rad", link = "Gray (unit)", }, ["rad"] = { _name1 = "rad", _symbol = "rad", utype = "absorbed radiation dose", scale = 0.01, prefixes = 1, default = "Gy", link = "Rad (unit)", }, ["cm/s2"] = { name1 = "centimetre per second squared", name1_us = "centimeter per second squared", name2 = "centimetres per second squared", name2_us = "centimeters per second squared", symbol = "cm/s<sup>2</sup>", utype = "acceleration", scale = 0.01, default = "ft/s2", link = "Gal (unit)", }, ["ft/s2"] = { name1 = "foot per second squared", name2 = "feet per second squared", symbol = "ft/s<sup>2</sup>", utype = "acceleration", scale = 0.3048, default = "m/s2", }, ["g0"] = { name1 = "standard gravity", name2 = "standard gravities", symbol = "''g''<sub>0</sub>", utype = "acceleration", scale = 9.80665, default = "m/s2", }, ["g-force"] = { name2 = "''g''", symbol = "''g''", utype = "acceleration", scale = 9.80665, default = "m/s2", link = "g-force", }, ["km/hs"] = { name1 = "kilometre per hour per second", name1_us = "kilometer per hour per second", name2 = "kilometres per hour per second", name2_us = "kilometers per hour per second", symbol = "km/(h⋅s)", utype = "acceleration", scale = 0.27777777777777779, default = "mph/s", link = "Acceleration", }, ["km/s2"] = { name1 = "kilometre per second squared", name1_us = "kilometer per second squared", name2 = "kilometres per second squared", name2_us = "kilometers per second squared", symbol = "km/s<sup>2</sup>", utype = "acceleration", scale = 1000, default = "mph/s", link = "Acceleration", }, ["m/s2"] = { name1 = "metre per second squared", name1_us = "meter per second squared", name2 = "metres per second squared", name2_us = "meters per second squared", symbol = "m/s<sup>2</sup>", utype = "acceleration", scale = 1, default = "ft/s2", }, ["mph/s"] = { name1 = "mile per hour per second", name2 = "miles per hour per second", symbol = "mph/s", utype = "acceleration", scale = 0.44704, default = "km/hs", link = "Acceleration", }, ["km/h/s"] = { target = "km/hs", }, ["standard gravity"] = { target = "g0", }, ["1000sqft"] = { name1 = "thousand square feet", name2 = "thousand square feet", symbol = "1000&nbsp;sq&nbsp;ft", utype = "area", scale = 92.90304, default = "m2", link = "Square foot", }, ["a"] = { _name1 = "are", _symbol = "a", utype = "area", scale = 100, prefixes = 1, default = "sqft", link = "Hectare#Are", }, ["acre"] = { symbol = "acre", usename = 1, utype = "area", scale = 4046.8564224, default = "ha", subdivs = { ["rood"] = { 4, default = "ha" }, ["sqperch"] = { 160, default = "ha" } }, }, ["acre-sing"] = { target = "acre", }, ["arpent"] = { symbol = "arpent", usename = 1, utype = "area", scale = 3418.89, default = "ha", }, ["cda"] = { name1 = "cuerda", symbol = "cda", utype = "area", scale = 3930.395625, default = "ha acre", }, ["daa"] = { name1 = "decare", symbol = "daa", utype = "area", scale = 1000, default = "km2 sqmi", }, ["dunam"] = { symbol = "dunam", usename = 1, utype = "area", scale = 1000, default = "km2 sqmi", }, ["dunum"] = { symbol = "dunum", usename = 1, utype = "area", scale = 1000, default = "km2 sqmi", link = "Dunam", }, ["ha"] = { name1 = "hectare", symbol = "ha", utype = "area", scale = 10000, default = "acre", }, ["hectare"] = { name1 = "hectare", symbol = "ha", usename = 1, utype = "area", scale = 10000, default = "acre", }, ["Irish acre"] = { name1 = "Irish acre", symbol = "Irish&nbsp;acres", utype = "area", scale = 6555.2385024, default = "ha", link = "Acre (Irish)", }, ["m2"] = { _name1 = "square metre", _name1_us= "square meter", _symbol = "m<sup>2</sup>", prefix_position= 8, utype = "area", scale = 1, prefixes = 2, default = "sqft", link = "Square metre", }, ["pondemaat"] = { name1 = "pondemaat", name2 = "pondemaat", symbol = "pond", utype = "area", scale = 3674.363358816, default = "m2", link = ":nl:pondemaat", }, ["pyeong"] = { name2 = "pyeong", symbol = "pyeong", usename = 1, utype = "area", scale = 3.3057851239669422, default = "m2", }, ["rai"] = { name2 = "rai", symbol = "rai", utype = "area", scale = 1600, default = "m2", link = "Rai (unit)", }, ["rood"] = { symbol = "rood", usename = 1, utype = "area", scale = 1011.7141056, default = "sqft m2", subdivs = { ["sqperch"] = { 40, default = "m2" } }, link = "Rood (unit)", }, ["sqfoot"] = { name1 = "square foot", name2 = "square foot", symbol = "sq&nbsp;ft", utype = "area", scale = 0.09290304, default = "m2", }, ["sqft"] = { name1 = "square foot", name2 = "square feet", symbol = "sq&nbsp;ft", utype = "area", scale = 0.09290304, default = "m2", }, ["sqin"] = { name1 = "square inch", name2 = "square inches", symbol = "sq&nbsp;in", utype = "area", scale = 0.00064516, default = "cm2", }, ["sqmi"] = { name1 = "square mile", symbol = "sq&nbsp;mi", utype = "area", scale = 2589988.110336, default = "km2", }, ["sqnmi"] = { name1 = "square nautical mile", symbol = "sq&nbsp;nmi", utype = "area", scale = 3429904, default = "km2 sqmi", link = "Nautical mile", }, ["sqperch"] = { name2 = "perches", symbol = "perch", usename = 1, utype = "area", scale = 25.29285264, default = "m2", link = "Rod (unit)#Area and volume", }, ["sqverst"] = { symbol = "square verst", usename = 1, utype = "area", scale = 1138062.24, default = "km2 sqmi", link = "Verst", }, ["sqyd"] = { name1 = "square yard", symbol = "sq&nbsp;yd", utype = "area", scale = 0.83612736, default = "m2", }, ["tsubo"] = { name2 = "tsubo", symbol = "tsubo", usename = 1, utype = "area", scale = 3.3057851239669422, default = "m2", link = "Japanese units of measurement#Area", }, ["acres"] = { target = "acre", }, ["are"] = { target = "a", }, ["decare"] = { target = "daa", }, ["foot2"] = { target = "sqfoot", }, ["ft2"] = { target = "sqft", }, ["in2"] = { target = "sqin", symbol = "in<sup>2</sup>", }, ["km²"] = { target = "km2", }, ["mi2"] = { target = "sqmi", }, ["million acre"] = { target = "e6acre", }, ["million acres"] = { target = "e6acre", }, ["million hectares"] = { target = "e6ha", }, ["m²"] = { target = "m2", }, ["nmi2"] = { target = "sqnmi", }, ["pond"] = { target = "pondemaat", }, ["sq arp"] = { target = "arpent", }, ["sqkm"] = { target = "km2", }, ["sqm"] = { target = "m2", }, ["square verst"] = { target = "sqverst", }, ["verst2"] = { target = "sqverst", }, ["yd2"] = { target = "sqyd", }, ["m2/ha"] = { name1 = "square metre per hectare", name1_us = "square meter per hectare", name2 = "square metres per hectare", name2_us = "square meters per hectare", symbol = "m<sup>2</sup>/ha", utype = "area per unit area", scale = 0.0001, default = "sqft/acre", link = "Basal area", }, ["sqft/acre"] = { name1 = "square foot per acre", name2 = "square feet per acre", symbol = "sq&nbsp;ft/acre", utype = "area per unit area", scale = 2.295684113865932e-5, default = "m2/ha", link = "Basal area", }, ["cent"] = { name1 = "cent", symbol = "¢", utype = "cent", scale = 1, default = "cent", link = "Cent (currency)", }, ["¢"] = { target = "cent", }, ["A.h"] = { name1 = "ampere hour", symbol = "A⋅h", utype = "charge", scale = 3600, default = "coulomb", }, ["coulomb"] = { _name1 = "coulomb", _symbol = "C", utype = "charge", scale = 1, prefixes = 1, default = "e", link = "Coulomb", }, ["e"] = { name1 = "elementary charge", symbol = "''e''", utype = "charge", scale = 1.602176487e-19, default = "coulomb", }, ["g-mol"] = { name1 = "gram-mole", symbol = "g&#8209;mol", utype = "chemical amount", scale = 1, default = "lbmol", link = "Mole (unit)", }, ["gmol"] = { name1 = "gram-mole", symbol = "gmol", utype = "chemical amount", scale = 1, default = "lbmol", link = "Mole (unit)", }, ["kmol"] = { name1 = "kilomole", symbol = "kmol", utype = "chemical amount", scale = 1000, default = "lbmol", link = "Mole (unit)", }, ["lb-mol"] = { name1 = "pound-mole", symbol = "lb&#8209;mol", utype = "chemical amount", scale = 453.59237, default = "mol", }, ["lbmol"] = { name1 = "pound-mole", symbol = "lbmol", utype = "chemical amount", scale = 453.59237, default = "mol", }, ["mol"] = { name1 = "mole", symbol = "mol", utype = "chemical amount", scale = 1, default = "lbmol", link = "Mole (unit)", }, ["kgCO2/L"] = { name1 = "kilogram per litre", name1_us = "kilogram per liter", name2 = "kilograms per litre", name2_us = "kilograms per liter", symbol = "kg(CO<sub>2</sub>)/L", utype = "co2 per unit volume", scale = 1000, default = "lbCO2/USgal", link = "Exhaust gas", }, ["lbCO2/USgal"] = { name1 = "pound per US gallon", name2 = "pounds per US gallon", symbol = "lbCO2/US&nbsp;gal", utype = "co2 per unit volume", scale = 119.82642731689663, default = "kgCO2/L", link = "Exhaust gas", }, ["oz/lb"] = { per = { "oz", "lb" }, utype = "concentration", default = "mg/kg", }, ["mg/kg"] = { per = { "mg", "kg" }, utype = "concentration", default = "oz/lb", }, ["g/dm3"] = { name1 = "gram per cubic decimetre", name1_us = "gram per cubic decimeter", name2 = "grams per cubic decimetre", name2_us = "grams per cubic decimeter", symbol = "g/dm<sup>3</sup>", utype = "density", scale = 1, default = "kg/m3", link = "Density", }, ["g/L"] = { name1 = "gram per litre", name1_us = "gram per liter", name2 = "grams per litre", name2_us = "grams per liter", symbol = "g/L", utype = "density", scale = 1, default = "lb/cuin", link = "Density", }, ["g/mL"] = { name1 = "gram per millilitre", name1_us = "gram per milliliter", name2 = "grams per millilitre", name2_us = "grams per milliliter", symbol = "g/mL", utype = "density", scale = 1000, default = "lb/cuin", link = "Density", }, ["g/ml"] = { name1 = "gram per millilitre", name1_us = "gram per milliliter", name2 = "grams per millilitre", name2_us = "grams per milliliter", symbol = "g/ml", utype = "density", scale = 1000, default = "lb/cuin", link = "Density", }, ["kg/dm3"] = { name1 = "kilogram per cubic decimetre", name1_us = "kilogram per cubic decimeter", name2 = "kilograms per cubic decimetre", name2_us = "kilograms per cubic decimeter", symbol = "kg/dm<sup>3</sup>", utype = "density", scale = 1000, default = "lb/cuft", link = "Density", }, ["kg/L"] = { name1 = "kilogram per litre", name1_us = "kilogram per liter", name2 = "kilograms per litre", name2_us = "kilograms per liter", symbol = "kg/L", utype = "density", scale = 1000, default = "lb/USgal", link = "Density", }, ["kg/l"] = { name1 = "kilogram per litre", name1_us = "kilogram per liter", name2 = "kilograms per litre", name2_us = "kilograms per liter", symbol = "kg/l", utype = "density", scale = 1000, default = "lb/USgal", link = "Density", }, ["kg/m3"] = { name1 = "kilogram per cubic metre", name1_us = "kilogram per cubic meter", name2 = "kilograms per cubic metre", name2_us = "kilograms per cubic meter", symbol = "kg/m<sup>3</sup>", utype = "density", scale = 1, default = "lb/cuyd", link = "Density", }, ["lb/cuft"] = { name1 = "pound per cubic foot", name2 = "pounds per cubic foot", symbol = "lb/cu&nbsp;ft", utype = "density", scale = 16.018463373960142, default = "g/cm3", link = "Density", }, ["lb/cuin"] = { name1 = "pound per cubic inch", name2 = "pounds per cubic inch", symbol = "lb/cu&nbsp;in", utype = "density", scale = 27679.904710203122, default = "g/cm3", link = "Density", }, ["lb/cuyd"] = { name1 = "pound per cubic yard", name2 = "pounds per cubic yard", symbol = "lb/cu&nbsp;yd", utype = "density", scale = 0.5932764212577829, default = "kg/m3", link = "Density", }, ["lb/impgal"] = { name1 = "pound per imperial gallon", name2 = "pounds per imperial gallon", symbol = "lb/imp&nbsp;gal", utype = "density", scale = 99.776372663101697, default = "kg/L", link = "Density", }, ["lb/in3"] = { name1 = "pound per cubic inch", name2 = "pounds per cubic inch", symbol = "lb/cu&thinsp;in", utype = "density", scale = 27679.904710203122, default = "g/cm3", link = "Density", }, ["lb/U.S.gal"] = { name1 = "pound per U.S. gallon", name2 = "pounds per U.S. gallon", symbol = "lb/U.S.&nbsp;gal", utype = "density", scale = 119.82642731689663, default = "kg/L", link = "Density", }, ["lb/USbu"] = { name1 = "pound per US bushel", name2 = "pounds per US bushel", symbol = "lb/US&nbsp;bu", utype = "density", scale = 12.871859780974471, default = "kg/m3", link = "Bushel", }, ["lb/USgal"] = { name1 = "pound per US gallon", name2 = "pounds per US gallon", symbol = "lb/US&nbsp;gal", utype = "density", scale = 119.82642731689663, default = "kg/L", link = "Density", }, ["lbm/cuin"] = { name1 = "pound mass per cubic inch", name2 = "pounds mass per cubic inch", symbol = "lbm/cu&thinsp;in", utype = "density", scale = 27679.904710203122, default = "g/cm3", link = "Density", }, ["mg/L"] = { name1 = "milligram per litre", name1_us = "milligram per liter", name2 = "milligrams per litre", name2_us = "milligrams per liter", symbol = "mg/L", utype = "density", scale = 0.001, default = "lb/cuin", link = "Density", }, ["oz/cuin"] = { name1 = "ounce per cubic inch", name2 = "ounces per cubic inch", symbol = "oz/cu&nbsp;in", utype = "density", scale = 1729.9940443876951, default = "g/cm3", link = "Density", }, ["g/cm3"] = { per = { "g", "cm3" }, utype = "density", default = "lb/cuin", }, ["g/m3"] = { per = { "g", "m3" }, utype = "density", default = "lb/cuyd", link = "Density", }, ["Mg/m3"] = { per = { "Mg", "m3" }, utype = "density", default = "lb/cuft", }, ["mg/l"] = { per = { "mg", "ll" }, utype = "density", default = "oz/cuin", }, ["μg/dL"] = { per = { "μg", "dL" }, utype = "density", default = "lb/cuin", }, ["μg/l"] = { per = { "μg", "ll" }, utype = "density", default = "oz/cuin", }, ["lb/ft3"] = { target = "lb/cuft", }, ["lb/yd3"] = { target = "lb/cuyd", }, ["lbm/in3"] = { target = "lbm/cuin", }, ["mcg/dL"] = { target = "μg/dL", }, ["oz/in3"] = { target = "oz/cuin", }, ["ug/dL"] = { target = "μg/dL", }, ["ug/l"] = { target = "μg/l", }, ["B.O.T.U."] = { name1 = "Board of Trade Unit", symbol = "B.O.T.U.", utype = "energy", scale = 3600000, default = "MJ", link = "Kilowatt-hour", }, ["bboe"] = { name1 = "barrel of oil equivalent", name2 = "barrels of oil equivalent", symbol = "bboe", utype = "energy", scale = 6117863200, default = "GJ", }, ["BOE"] = { name1 = "barrel of oil equivalent", name2 = "barrels of oil equivalent", symbol = "BOE", utype = "energy", scale = 6117863200, default = "GJ", }, ["BTU"] = { name1 = "British thermal unit", symbol = "BTU", utype = "energy", scale = 1055.05585262, default = "kJ", }, ["Btu"] = { name1 = "British thermal unit", symbol = "Btu", utype = "energy", scale = 1055.05585262, default = "kJ", }, ["BTU-39F"] = { name1 = "British thermal unit (39°F)", name2 = "British thermal units (39°F)", symbol = "BTU<sub>39°F</sub>", utype = "energy", scale = 1059.67, default = "kJ", link = "British thermal unit", }, ["Btu-39F"] = { name1 = "British thermal unit (39°F)", name2 = "British thermal units (39°F)", symbol = "Btu<sub>39°F</sub>", utype = "energy", scale = 1059.67, default = "kJ", link = "British thermal unit", }, ["BTU-59F"] = { name1 = "British thermal unit (59°F)", name2 = "British thermal units (59°F)", symbol = "BTU<sub>59°F</sub>", utype = "energy", scale = 1054.804, default = "kJ", link = "British thermal unit", }, ["Btu-59F"] = { name1 = "British thermal unit (59°F)", name2 = "British thermal units (59°F)", symbol = "Btu<sub>59°F</sub>", utype = "energy", scale = 1054.804, default = "kJ", link = "British thermal unit", }, ["BTU-60F"] = { name1 = "British thermal unit (60°F)", name2 = "British thermal units (60°F)", symbol = "BTU<sub>60°F</sub>", utype = "energy", scale = 1054.68, default = "kJ", link = "British thermal unit", }, ["Btu-60F"] = { name1 = "British thermal unit (60°F)", name2 = "British thermal units (60°F)", symbol = "Btu<sub>60°F</sub>", utype = "energy", scale = 1054.68, default = "kJ", link = "British thermal unit", }, ["BTU-63F"] = { name1 = "British thermal unit (63°F)", name2 = "British thermal units (63°F)", symbol = "BTU<sub>63°F</sub>", utype = "energy", scale = 1054.6, default = "kJ", link = "British thermal unit", }, ["Btu-63F"] = { name1 = "British thermal unit (63°F)", name2 = "British thermal units (63°F)", symbol = "Btu<sub>63°F</sub>", utype = "energy", scale = 1054.6, default = "kJ", link = "British thermal unit", }, ["BTU-ISO"] = { name1 = "British thermal unit (ISO)", name2 = "British thermal units (ISO)", symbol = "BTU<sub>ISO</sub>", utype = "energy", scale = 1055.056, default = "kJ", link = "British thermal unit", }, ["Btu-ISO"] = { target = "BTU-ISO", }, ["BTU-IT"] = { name1 = "British thermal unit (IT)", name2 = "British thermal units (IT)", symbol = "BTU<sub>IT</sub>", utype = "energy", scale = 1055.05585262, default = "kJ", link = "British thermal unit", }, ["Btu-IT"] = { name1 = "British thermal unit (IT)", name2 = "British thermal units (IT)", symbol = "Btu<sub>IT</sub>", utype = "energy", scale = 1055.05585262, default = "kJ", link = "British thermal unit", }, ["BTU-mean"] = { name1 = "British thermal unit (mean)", name2 = "British thermal units (mean)", symbol = "BTU<sub>mean</sub>", utype = "energy", scale = 1055.87, default = "kJ", link = "British thermal unit", }, ["Btu-mean"] = { name1 = "British thermal unit (mean)", name2 = "British thermal units (mean)", symbol = "Btu<sub>mean</sub>", utype = "energy", scale = 1055.87, default = "kJ", link = "British thermal unit", }, ["BTU-th"] = { name1 = "British thermal unit (thermochemical)", name2 = "British thermal units (thermochemical)", symbol = "BTU<sub>th</sub>", utype = "energy", scale = 1054.35026444, default = "kJ", link = "British thermal unit", }, ["Btu-th"] = { name1 = "British thermal unit (thermochemical)", name2 = "British thermal units (thermochemical)", symbol = "Btu<sub>th</sub>", utype = "energy", scale = 1054.35026444, default = "kJ", link = "British thermal unit", }, ["Cal"] = { name1 = "calorie", symbol = "Cal", utype = "energy", scale = 4184, default = "kJ", }, ["cal"] = { name1 = "calorie", symbol = "cal", utype = "energy", scale = 4.184, default = "J", }, ["Cal-15"] = { name1 = "Calorie (15°C)", name2 = "Calories (15°C)", symbol = "Cal<sub>15</sub>", utype = "energy", scale = 4185.8, default = "kJ", link = "Calorie", }, ["cal-15"] = { name1 = "calorie (15°C)", name2 = "calories (15°C)", symbol = "cal<sub>15</sub>", utype = "energy", scale = 4.1858, default = "J", link = "Calorie", }, ["Cal-IT"] = { name1 = "Calorie (International Steam Table)", name2 = "Calories (International Steam Table)", symbol = "Cal<sub>IT</sub>", utype = "energy", scale = 4186.8, default = "kJ", link = "Calorie", }, ["cal-IT"] = { name1 = "calorie (International Steam Table)", name2 = "calories (International Steam Table)", symbol = "cal<sub>IT</sub>", utype = "energy", scale = 4.1868, default = "J", link = "Calorie", }, ["Cal-th"] = { name1 = "Calorie (thermochemical)", name2 = "Calories (thermochemical)", symbol = "Cal<sub>th</sub>", utype = "energy", scale = 4184, default = "kJ", link = "Calorie", }, ["cal-th"] = { name1 = "calorie (thermochemical)", name2 = "calories (thermochemical)", symbol = "cal<sub>th</sub>", utype = "energy", scale = 4.184, default = "J", link = "Calorie", }, ["CHU-IT"] = { name1 = "Celsius heat unit (International Table)", name2 = "Celsius heat units (International Table)", symbol = "CHU<sub>IT</sub>", utype = "energy", scale = 1899.100534716, default = "kJ", link = "Conversion of units#Energy", }, ["cufootnaturalgas"] = { name1 = "cubic foot of natural gas", name2 = "cubic foot of natural gas", symbol = "cuftnaturalgas", usename = 1, utype = "energy", scale = 1055055.85262, default = "MJ", link = "Conversion of units#Energy", }, ["cuftnaturalgas"] = { name1 = "cubic foot of natural gas", name2 = "cubic feet of natural gas", symbol = "cuftnaturalgas", usename = 1, utype = "energy", scale = 1055055.85262, default = "MJ", link = "Conversion of units#Energy", }, ["Eh"] = { name1 = "Hartree", symbol = "''E''<sub>h</sub>", utype = "energy", scale = 4.35974417e-18, default = "eV", }, ["erg"] = { symbol = "erg", utype = "energy", scale = 0.0000001, default = "μJ", }, ["eV"] = { name1 = "electronvolt", symbol = "eV", utype = "energy", scale = 1.602176487e-19, default = "aJ", }, ["feV"] = { name1 = "femtoelectronvolt", symbol = "feV", utype = "energy", scale = 1.602176487e-34, default = "yJ", link = "Electronvolt", }, ["foe"] = { symbol = "foe", utype = "energy", scale = 1e44, default = "YJ", link = "Foe (unit)", }, ["ftlb"] = { name1 = "foot-pound", symbol = "ft⋅lb", utype = "energy", alttype = "torque", scale = 1.3558179483314004, default = "J", link = "Foot-pound (energy)", }, ["ftlb-f"] = { name1 = "foot-pound force", name2 = "foot-pounds force", symbol = "ft⋅lb<sub>f</sub>", utype = "energy", alttype = "torque", scale = 1.3558179483314004, default = "J", link = "Foot-pound (energy)", }, ["ftlbf"] = { name1 = "foot-pound force", name2 = "foot-pounds force", symbol = "ft⋅lbf", utype = "energy", alttype = "torque", scale = 1.3558179483314004, default = "J", link = "Foot-pound (energy)", }, ["ftpdl"] = { name1 = "foot-poundal", symbol = "ft⋅pdl", utype = "energy", scale = 0.0421401100938048, default = "J", }, ["GeV"] = { name1 = "gigaelectronvolt", symbol = "GeV", utype = "energy", scale = 1.602176487e-10, default = "nJ", link = "Electronvolt", }, ["gTNT"] = { name2 = "grams of TNT", symbol = "gram of TNT", usename = 1, utype = "energy", scale = 4184, default = "kJ", link = "TNT equivalent", }, ["Gtoe"] = { name1 = "gigatonne of oil equivalent", name2 = "gigatonnes of oil equivalent", symbol = "Gtoe", utype = "energy", scale = 4.1868e19, default = "EJ", link = "Tonne of oil equivalent", }, ["GtonTNT"] = { name2 = "gigatons of TNT", symbol = "gigaton of TNT", usename = 1, utype = "energy", scale = 4.184e18, default = "EJ", link = "TNT equivalent", }, ["GtTNT"] = { name2 = "gigatonnes of TNT", symbol = "gigatonne of TNT", usename = 1, utype = "energy", scale = 4.184e18, default = "EJ", link = "TNT equivalent", }, ["GW.h"] = { name1 = "gigawatt-hour", symbol = "GW⋅h", utype = "energy", scale = 3.6e12, default = "TJ", link = "Kilowatt-hour", }, ["GWh"] = { name1 = "gigawatt-hour", symbol = "GWh", utype = "energy", scale = 3.6e12, default = "TJ", link = "Kilowatt-hour", }, ["hph"] = { name1 = "horsepower-hour", symbol = "hp⋅h", utype = "energy", scale = 2684519.537696172792, default = "kWh", link = "Horsepower", }, ["inlb"] = { name1 = "inch-pound", symbol = "in⋅lb", utype = "energy", alttype = "torque", scale = 0.1129848290276167, default = "mJ", link = "Foot-pound (energy)", }, ["inlb-f"] = { name1 = "inch-pound force", name2 = "inch-pounds force", symbol = "in⋅lb<sub>f</sub>", utype = "energy", alttype = "torque", scale = 0.1129848290276167, default = "mJ", link = "Foot-pound (energy)", }, ["inlbf"] = { name1 = "inch-pound force", name2 = "inch-pounds force", symbol = "in⋅lbf", utype = "energy", alttype = "torque", scale = 0.1129848290276167, default = "mJ", link = "Foot-pound (energy)", }, ["inoz-f"] = { name1 = "inch-ounce force", name2 = "inch-ounces force", symbol = "in⋅oz<sub>f</sub>", utype = "energy", alttype = "torque", scale = 0.00706155181422604375, default = "mJ", link = "Foot-pound (energy)", }, ["inozf"] = { name1 = "inch-ounce force", name2 = "inch-ounces force", symbol = "in⋅ozf", utype = "energy", alttype = "torque", scale = 0.00706155181422604375, default = "mJ", link = "Foot-pound (energy)", }, ["J"] = { _name1 = "joule", _symbol = "J", utype = "energy", scale = 1, prefixes = 1, default = "cal", link = "Joule", }, ["kBOE"] = { name1 = "kilo barrel of oil equivalent", name2 = "kilo barrels of oil equivalent", symbol = "kBOE", utype = "energy", scale = 6.1178632e12, default = "TJ", link = "Barrel of oil equivalent", }, ["kcal"] = { name1 = "kilocalorie", symbol = "kcal", utype = "energy", scale = 4184, default = "kJ", link = "Calorie", }, ["kcal-15"] = { name1 = "kilocalorie (15°C)", name2 = "kilocalories (15°C)", symbol = "kcal<sub>15</sub>", utype = "energy", scale = 4185.8, default = "kJ", link = "Calorie", }, ["kcal-IT"] = { name1 = "kilocalorie (International Steam Table)", name2 = "kilocalories (International Steam Table)", symbol = "kcal<sub>IT</sub>", utype = "energy", scale = 4186.8, default = "kJ", link = "Calorie", }, ["kcal-th"] = { name1 = "kilocalorie (thermochemical)", name2 = "kilocalories (thermochemical)", symbol = "kcal<sub>th</sub>", utype = "energy", scale = 4184, default = "kJ", link = "Calorie", }, ["kerg"] = { name1 = "kiloerg", symbol = "kerg", utype = "energy", scale = 0.0001, default = "mJ", link = "Erg", }, ["keV"] = { name1 = "kiloelectronvolt", symbol = "keV", utype = "energy", scale = 1.602176487e-16, default = "fJ", link = "Electronvolt", }, ["kgTNT"] = { name2 = "kilograms of TNT", symbol = "kilogram of TNT", usename = 1, utype = "energy", scale = 4184000, default = "MJ", link = "TNT equivalent", }, ["kt(TNT)"] = { name1 = "kilotonne", name1_us = "kiloton", symbol = "kt", utype = "energy", scale = 4.184e12, default = "TJ", link = "TNT equivalent", }, ["ktoe"] = { name1 = "kilotonne of oil equivalent", name2 = "kilotonnes of oil equivalent", symbol = "ktoe", utype = "energy", scale = 4.1868e13, default = "TJ", link = "Tonne of oil equivalent", }, ["ktonTNT"] = { name1 = "kiloton of TNT", name2 = "kilotons of TNT", symbol = "kt", utype = "energy", scale = 4.184e12, default = "TJ", link = "TNT equivalent", }, ["ktTNT"] = { name2 = "kilotonnes of TNT", symbol = "kilotonne of TNT", usename = 1, utype = "energy", scale = 4.184e12, default = "TJ", link = "TNT equivalent", }, ["kW.h"] = { name1 = "kilowatt-hour", symbol = "kW⋅h", utype = "energy", scale = 3600000, default = "MJ", }, ["kWh"] = { name1 = "kilowatt-hour", symbol = "kWh", utype = "energy", scale = 3600000, default = "MJ", }, ["Mcal"] = { name1 = "megacalorie", symbol = "Mcal", utype = "energy", scale = 4184000, default = "MJ", link = "Calorie", }, ["mcal"] = { name1 = "millicalorie", symbol = "mcal", utype = "energy", scale = 0.004184, default = "mJ", link = "Calorie", }, ["Mcal-15"] = { name1 = "megacalorie (15°C)", name2 = "megacalories (15°C)", symbol = "Mcal<sub>15</sub>", utype = "energy", scale = 4185800, default = "MJ", link = "Calorie", }, ["mcal-15"] = { name1 = "millicalorie (15°C)", name2 = "millicalories (15°C)", symbol = "mcal<sub>15</sub>", utype = "energy", scale = 0.0041858, default = "mJ", link = "Calorie", }, ["Mcal-IT"] = { name1 = "megacalorie (International Steam Table)", name2 = "megacalories (International Steam Table)", symbol = "Mcal<sub>IT</sub>", utype = "energy", scale = 4186800, default = "MJ", link = "Calorie", }, ["mcal-IT"] = { name1 = "millicalorie (International Steam Table)", name2 = "millicalories (International Steam Table)", symbol = "mcal<sub>IT</sub>", utype = "energy", scale = 0.0041868, default = "mJ", link = "Calorie", }, ["Mcal-th"] = { name1 = "megacalorie (thermochemical)", name2 = "megacalories (thermochemical)", symbol = "Mcal<sub>th</sub>", utype = "energy", scale = 4184000, default = "MJ", link = "Calorie", }, ["mcal-th"] = { name1 = "millicalorie (thermochemical)", name2 = "millicalories (thermochemical)", symbol = "mcal<sub>th</sub>", utype = "energy", scale = 0.004184, default = "mJ", link = "Calorie", }, ["Merg"] = { name1 = "megaerg", symbol = "Merg", utype = "energy", scale = 0.1, default = "J", link = "Erg", }, ["merg"] = { name1 = "millierg", symbol = "merg", utype = "energy", scale = 0.0000000001, default = "μJ", link = "Erg", }, ["MeV"] = { name1 = "megaelectronvolt", symbol = "MeV", utype = "energy", scale = 1.602176487e-13, default = "pJ", link = "Electronvolt", }, ["meV"] = { name1 = "millielectronvolt", symbol = "meV", utype = "energy", scale = 1.602176487e-22, default = "zJ", link = "Electronvolt", }, ["MMBtu"] = { name1 = "million British thermal units", name2 = "million British thermal units", symbol = "MMBtu", utype = "energy", scale = 1055055852.62, default = "GJ", link = "British thermal unit", }, ["Mt(TNT)"] = { name1 = "megatonne", name1_us = "megaton", symbol = "Mt", utype = "energy", scale = 4.184e15, default = "PJ", link = "TNT equivalent", }, ["Mtoe"] = { name1 = "megatonne of oil equivalent", name2 = "megatonnes of oil equivalent", symbol = "Mtoe", utype = "energy", scale = 4.1868e16, default = "PJ", link = "Tonne of oil equivalent", }, ["MtonTNT"] = { name1 = "megaton of TNT", name2 = "megatons of TNT", symbol = "Mt", utype = "energy", scale = 4.184e15, default = "PJ", link = "TNT equivalent", }, ["mtonTNT"] = { name2 = "millitons of TNT", symbol = "milliton of TNT", usename = 1, utype = "energy", scale = 4184000, default = "MJ", link = "TNT equivalent", }, ["MtTNT"] = { name2 = "megatonnes of TNT", symbol = "megatonne of TNT", usename = 1, utype = "energy", scale = 4.184e15, default = "PJ", link = "TNT equivalent", }, ["mtTNT"] = { name2 = "millitonnes of TNT", symbol = "millitonne of TNT", usename = 1, utype = "energy", scale = 4184000, default = "MJ", link = "TNT equivalent", }, ["MW.h"] = { name1 = "megawatt-hour", symbol = "MW⋅h", utype = "energy", scale = 3600000000, default = "GJ", link = "Kilowatt-hour", }, ["mW.h"] = { name1 = "milliwatt-hour", symbol = "mW⋅h", utype = "energy", scale = 3.6, default = "J", link = "Kilowatt-hour", }, ["MWh"] = { name1 = "megawatt-hour", symbol = "MWh", utype = "energy", scale = 3600000000, default = "GJ", link = "Kilowatt-hour", }, ["mWh"] = { name1 = "milliwatt-hour", symbol = "mWh", utype = "energy", scale = 3.6, default = "J", link = "Kilowatt-hour", }, ["neV"] = { name1 = "nanoelectronvolt", symbol = "neV", utype = "energy", scale = 1.602176487e-28, default = "yJ", link = "Electronvolt", }, ["PeV"] = { name1 = "petaelectronvolt", symbol = "PeV", utype = "energy", scale = 0.0001602176487, default = "mJ", link = "Electronvolt", }, ["peV"] = { name1 = "picoelectronvolt", symbol = "peV", utype = "energy", scale = 1.602176487e-31, default = "yJ", link = "Electronvolt", }, ["PSh"] = { name1 = "Pferdestärkenstunde", symbol = "PSh", utype = "energy", scale = 2647795.5, default = "kWh", }, ["quad"] = { name1 = "quadrillion British thermal units", name2 = "quadrillion British thermal units", symbol = "quad", utype = "energy", scale = 1.054804e18, default = "EJ", link = "Quad (unit)", }, ["Ry"] = { name1 = "rydberg", symbol = "Ry", utype = "energy", scale = 2.1798741e-18, default = "eV", link = "Rydberg constant", }, ["scf"] = { name1 = "standard cubic foot", name2 = "standard cubic feet", symbol = "scf", utype = "energy", scale = 2869.2044809344, default = "kJ", }, ["scfoot"] = { name1 = "standard cubic foot", name2 = "standard cubic foot", symbol = "scf", utype = "energy", scale = 2869.2044809344, default = "kJ", }, ["t(TNT)"] = { name1 = "tonne", name1_us = "ton", symbol = "t", utype = "energy", scale = 4184000000, default = "GJ", link = "TNT equivalent", }, ["TeV"] = { name1 = "teraelectronvolt", symbol = "TeV", utype = "energy", scale = 1.602176487e-7, default = "μJ", link = "Electronvolt", }, ["th"] = { name1 = "thermie", symbol = "th", utype = "energy", scale = 4186800, default = "MJ", link = "Conversion of units#Energy", }, ["thm-EC"] = { name1 = "therm (EC)", name2 = "therms (EC)", symbol = "thm (EC)", utype = "energy", scale = 105506000, default = "MJ", link = "Therm", }, ["thm-UK"] = { name1 = "therm (UK)", name2 = "therms (UK)", symbol = "thm (UK)", utype = "energy", scale = 105505585.257348, default = "MJ", link = "Therm", }, ["thm-US"] = { name1 = "therm (US)", name1_us = "therm (U.S.)", name2 = "therms (US)", name2_us = "therms (U.S.)", symbol = "thm (US)", sym_us = "thm (U.S.)", utype = "energy", scale = 105480400, default = "MJ", link = "Therm", }, ["toe"] = { name1 = "tonne of oil equivalent", name2 = "tonnes of oil equivalent", symbol = "toe", utype = "energy", scale = 41868000000, default = "GJ", }, ["tonTNT"] = { name2 = "tons of TNT", symbol = "ton of TNT", usename = 1, utype = "energy", scale = 4184000000, default = "GJ", link = "TNT equivalent", }, ["tTNT"] = { name2 = "tonnes of TNT", symbol = "tonne of TNT", usename = 1, utype = "energy", scale = 4184000000, default = "GJ", link = "TNT equivalent", }, ["TtonTNT"] = { name2 = "teratons of TNT", symbol = "teraton of TNT", usename = 1, utype = "energy", scale = 4.184e21, default = "ZJ", link = "TNT equivalent", }, ["TtTNT"] = { name2 = "teratonnes of TNT", symbol = "teratonne of TNT", usename = 1, utype = "energy", scale = 4.184e21, default = "ZJ", link = "TNT equivalent", }, ["TW.h"] = { name1 = "terawatt-hour", symbol = "TW⋅h", utype = "energy", scale = 3.6e15, default = "PJ", link = "Kilowatt-hour", }, ["TWh"] = { name1 = "terawatt-hour", symbol = "TWh", utype = "energy", scale = 3.6e15, default = "PJ", link = "Kilowatt-hour", }, ["W.h"] = { name1 = "watt-hour", symbol = "W⋅h", utype = "energy", scale = 3600, default = "kJ", link = "Kilowatt-hour", }, ["Wh"] = { name1 = "watt-hour", symbol = "Wh", utype = "energy", scale = 3600, default = "kJ", link = "Kilowatt-hour", }, ["μerg"] = { name1 = "microerg", symbol = "μerg", utype = "energy", scale = 1e-13, default = "nJ", link = "Erg", }, ["μeV"] = { name1 = "microelectronvolt", symbol = "μeV", utype = "energy", scale = 1.602176487e-25, default = "yJ", link = "Electronvolt", }, ["μW.h"] = { name1 = "microwatt-hour", symbol = "μW⋅h", utype = "energy", scale = 0.0036, default = "mJ", link = "Kilowatt-hour", }, ["μWh"] = { name1 = "microwatt-hour", symbol = "μWh", utype = "energy", scale = 0.0036, default = "mJ", link = "Kilowatt-hour", }, ["-kW.h"] = { target = "kW.h", link = "Kilowatt hour", }, ["btu"] = { target = "BTU", }, ["Calorie"] = { target = "Cal", }, ["ft.lbf"] = { target = "ftlbf", }, ["ft·lbf"] = { target = "ftlbf", }, ["g-cal-15"] = { target = "cal-15", }, ["g-cal-IT"] = { target = "cal-IT", }, ["g-cal-th"] = { target = "cal-th", }, ["g-kcal-15"] = { target = "kcal-15", }, ["g-kcal-IT"] = { target = "kcal-IT", }, ["g-kcal-th"] = { target = "kcal-th", }, ["g-Mcal-15"] = { target = "Mcal-15", }, ["g-mcal-15"] = { target = "mcal-15", }, ["g-Mcal-IT"] = { target = "Mcal-IT", }, ["g-mcal-IT"] = { target = "mcal-IT", }, ["g-Mcal-th"] = { target = "Mcal-th", }, ["g-mcal-th"] = { target = "mcal-th", }, ["GW-h"] = { target = "GW.h", }, ["GW·h"] = { target = "GW.h", }, ["Hartree"] = { target = "Eh", }, ["hp.h"] = { target = "hph", }, ["in.lb-f"] = { target = "inlb-f", }, ["in.lbf"] = { target = "inlbf", }, ["in.oz-f"] = { target = "inoz-f", }, ["in.ozf"] = { target = "inozf", }, ["kbboe"] = { target = "kBOE", symbol = "kbboe", }, ["kg-cal-15"] = { target = "Cal-15", }, ["kg-cal-IT"] = { target = "Cal-IT", }, ["kg-cal-th"] = { target = "Cal-th", }, ["kW-h"] = { target = "kW.h", }, ["kW·h"] = { target = "kW.h", }, ["MW-h"] = { target = "MW.h", }, ["mW-h"] = { target = "mW.h", }, ["MW·h"] = { target = "MW.h", }, ["TW-h"] = { target = "TW.h", }, ["uerg"] = { target = "μerg", }, ["ueV"] = { target = "μeV", }, ["uW-h"] = { target = "μW.h", }, ["uW.h"] = { target = "μW.h", }, ["uWh"] = { target = "μWh", }, ["W-h"] = { target = "W.h", }, ["eVpar"] = { _name1 = "electronvolt", _symbol = "eV", utype = "energy per chemical amount", scale = 96485.329522144166, prefixes = 1, default = "kcal/mol", link = "Electronvolt", }, ["kcal/mol"] = { per = { "kcal", "mol" }, utype = "energy per chemical amount", default = "kJ/mol", link = "Kilocalorie per mole", }, ["kJ/mol"] = { per = { "kJ", "mol" }, utype = "energy per chemical amount", default = "kcal/mol", link = "Joule per mole", }, ["kWh/100 km"] = { name1 = "kilowatt-hour per 100 kilometres", name1_us = "kilowatt-hour per 100 kilometers", name2 = "kilowatt-hours per 100 kilometres", name2_us = "kilowatt-hours per 100 kilometers", symbol = "kW⋅h/100&nbsp;km", utype = "energy per unit length", scale = 36, default = "MJ/km kWh/mi", link = "Kilowatt-hour", }, ["kWh/100 mi"] = { name1 = "kilowatt-hour per 100 miles", name2 = "kilowatt-hours per 100 miles", symbol = "kW⋅h/100&nbsp;mi", utype = "energy per unit length", scale = 22.3694, default = "mpge", link = "Miles per gallon gasoline equivalent", }, ["MJ/100 km"] = { name1 = "megajoule per 100 kilometres", name1_us = "megajoule per 100 kilometers", name2 = "megajoules per 100 kilometres", name2_us = "megajoules per 100 kilometers", symbol = "MJ/100&nbsp;km", utype = "energy per unit length", scale = 10, default = "BTU/mi", link = "British thermal unit", }, ["mpge"] = { name1 = "mile per gallon gasoline equivalent", name2 = "miles per gallon gasoline equivalent", symbol = "mpg&#8209;e", utype = "energy per unit length", scale = 1.3263314048360777e-5, invert = -1, iscomplex= true, default = "kWh/100 mi", link = "Miles per gallon gasoline equivalent", }, ["BTU/mi"] = { per = { "BTU", "mi" }, utype = "energy per unit length", default = "v > 1525 ! M ! k ! J/km", }, ["kJ/km"] = { per = { "kJ", "km" }, utype = "energy per unit length", default = "BTU/mi", }, ["kWh/km"] = { per = { "-kW.h", "km" }, utype = "energy per unit length", default = "MJ/km kWh/mi", }, ["kWh/mi"] = { per = { "-kW.h", "mi" }, utype = "energy per unit length", default = "kWh/km MJ/km", }, ["MJ/km"] = { per = { "MJ", "km" }, utype = "energy per unit length", default = "BTU/mi", }, ["mpg-e"] = { target = "mpge", }, ["BTU/lb"] = { name1 = "British thermal unit per pound", name2 = "British thermal units per pound", symbol = "BTU/lb", utype = "energy per unit mass", scale = 2326, default = "kJ/kg", link = "British thermal unit", }, ["cal/g"] = { name1 = "calorie per gram", name2 = "calories per gram", symbol = "cal/g", utype = "energy per unit mass", scale = 4184, default = "J/g", }, ["GJ/kg"] = { name1 = "gigajoule per kilogram", name2 = "gigajoules per kilogram", symbol = "GJ/kg", utype = "energy per unit mass", scale = 1e9, default = "ktTNT/t", link = "Specific energy", }, ["J/g"] = { name1 = "joule per gram", name2 = "joules per gram", symbol = "J/g", utype = "energy per unit mass", scale = 1000, default = "kcal/g", link = "Specific energy", }, ["kcal/g"] = { name1 = "kilocalorie per gram", name2 = "kilocalories per gram", symbol = "kcal/g", utype = "energy per unit mass", scale = 4184000, default = "kJ/g", }, ["kJ/g"] = { name1 = "kilojoule per gram", name2 = "kilojoules per gram", symbol = "kJ/g", utype = "energy per unit mass", scale = 1000000, default = "kcal/g", link = "Specific energy", }, ["kJ/kg"] = { name1 = "kilojoule per kilogram", name2 = "kilojoules per kilogram", symbol = "kJ/kg", utype = "energy per unit mass", scale = 1000, default = "BTU/lb", link = "Specific energy", }, ["ktonTNT/MT"] = { name2 = "kilotons of TNT per metric ton", symbol = "kiloton of TNT per metric ton", usename = 1, utype = "energy per unit mass", scale = 4184000000, default = "GJ/kg", link = "TNT equivalent", }, ["ktTNT/t"] = { name2 = "kilotonnes of TNT per tonne", symbol = "kilotonne of TNT per tonne", usename = 1, utype = "energy per unit mass", scale = 4184000000, default = "GJ/kg", link = "TNT equivalent", }, ["MtonTNT/MT"] = { name2 = "megatons of TNT per metric ton", symbol = "megaton of TNT per metric ton", usename = 1, utype = "energy per unit mass", scale = 4.184e12, default = "TJ/kg", link = "TNT equivalent", }, ["MtTNT/MT"] = { name2 = "megatonnes of TNT per tonne", symbol = "megatonne of TNT per tonne", usename = 1, utype = "energy per unit mass", scale = 4.184e12, default = "TJ/kg", link = "TNT equivalent", }, ["TJ/kg"] = { name1 = "terajoule per kilogram", name2 = "terajoules per kilogram", symbol = "TJ/kg", utype = "energy per unit mass", scale = 1e12, default = "MtTNT/MT", link = "Specific energy", }, ["Cal/g"] = { per = { "Cal", "g" }, utype = "energy per unit mass", default = "kJ/g", }, ["BTU/cuft"] = { per = { "BTU", "cuft" }, utype = "energy per unit volume", default = "kJ/L", }, ["Cal/12USoz(mL)serve"] = { per = { "Cal", "-12USoz(mL)serve" }, utype = "energy per unit volume", default = "kJ/L", }, ["Cal/12USoz(ml)serve"] = { per = { "Cal", "-12USoz(ml)serve" }, utype = "energy per unit volume", default = "kJ/l", }, ["Cal/12USozserve"] = { per = { "Cal", "-12USozserve" }, utype = "energy per unit volume", default = "kJ/L", }, ["Cal/USoz"] = { per = { "Cal", "USoz" }, utype = "energy per unit volume", default = "kJ/ml", }, ["kJ/L"] = { per = { "kJ", "L" }, utype = "energy per unit volume", default = "BTU/cuft", }, ["kJ/l"] = { per = { "kJ", "ll" }, utype = "energy per unit volume", default = "BTU/cuft", }, ["kJ/ml"] = { per = { "kJ", "ml" }, utype = "energy per unit volume", default = "Cal/USoz", }, ["MJ/m3"] = { per = { "MJ", "m3" }, utype = "energy per unit volume", default = "BTU/cuft", }, ["Sv"] = { _name1 = "sievert", _symbol = "Sv", utype = "equivalent radiation dose", scale = 1, prefixes = 1, default = "rem", link = "Sievert", }, ["rem"] = { _name1 = "rem", _symbol = "rem", utype = "equivalent radiation dose", scale = 0.01, prefixes = 1, default = "Sv", link = "Roentgen equivalent man", }, ["g/km"] = { name1 = "gram per kilometre", name1_us = "gram per kilometer", name2 = "grams per kilometre", name2_us = "grams per kilometer", symbol = "g/km", utype = "exhaust emission", scale = 1e-6, default = "oz/mi", link = "Exhaust gas", }, ["g/mi"] = { name1 = "gram per mile", name2 = "grams per mile", symbol = "g/mi", utype = "exhaust emission", scale = 6.2137119223733397e-7, default = "g/km", link = "Exhaust gas", }, ["gCO2/km"] = { name1 = "gram of CO<sub>2</sub> per kilometre", name1_us = "gram of CO<sub>2</sub> per kilometer", name2 = "grams of CO<sub>2</sub> per kilometre", name2_us = "grams of CO<sub>2</sub> per kilometer", symbol = "g(CO<sub>2</sub>)/km", utype = "exhaust emission", scale = 1e-6, default = "ozCO2/mi", link = "Exhaust gas", }, ["gCO2/mi"] = { name1 = "gram of CO<sub>2</sub> per mile", name2 = "grams of CO<sub>2</sub> per mile", symbol = "g(CO<sub>2</sub>)/mi", utype = "exhaust emission", scale = 6.2137119223733397e-7, default = "gCO2/km", link = "Exhaust gas", }, ["kg/km"] = { name1 = "kilogram per kilometre", name1_us = "kilogram per kilometer", name2 = "kilograms per kilometre", name2_us = "kilograms per kilometer", symbol = "kg/km", utype = "exhaust emission", scale = 0.001, default = "lb/mi", link = "Exhaust gas", }, ["kgCO2/km"] = { name1 = "kilogram of CO<sub>2</sub> per kilometre", name1_us = "kilogram of CO<sub>2</sub> per kilometer", name2 = "kilograms of CO<sub>2</sub> per kilometre", name2_us = "kilograms of CO<sub>2</sub> per kilometer", symbol = "kg(CO<sub>2</sub>)/km", utype = "exhaust emission", scale = 0.001, default = "lbCO2/mi", link = "Exhaust gas", }, ["lb/mi"] = { name1 = "pound per mile", name2 = "pounds per mile", symbol = "lb/mi", utype = "exhaust emission", scale = 0.00028184923173665794, default = "kg/km", link = "Exhaust gas", }, ["lbCO2/mi"] = { name1 = "pound of CO<sub>2</sub> per mile", name2 = "pounds of CO<sub>2</sub> per mile", symbol = "lb(CO<sub>2</sub>)/mi", utype = "exhaust emission", scale = 0.00028184923173665794, default = "kgCO2/km", link = "Exhaust gas", }, ["oz/mi"] = { name1 = "ounce per mile", name2 = "ounces per mile", symbol = "oz/mi", utype = "exhaust emission", scale = 1.7615576983541121e-5, default = "g/km", link = "Exhaust gas", }, ["ozCO2/mi"] = { name1 = "ounce of CO<sub>2</sub> per mile", name2 = "ounces of CO<sub>2</sub> per mile", symbol = "oz(CO<sub>2</sub>)/mi", utype = "exhaust emission", scale = 1.7615576983541121e-5, default = "gCO2/km", link = "Exhaust gas", }, ["cuft/a"] = { name1 = "cubic foot per annum", name2 = "cubic feet per annum", symbol = "cu&nbsp;ft/a", utype = "flow", scale = 8.9730672142368242e-10, default = "m3/a", link = "Cubic foot per second", }, ["cuft/d"] = { name1 = "cubic foot per day", name2 = "cubic feet per day", symbol = "cu&nbsp;ft/d", utype = "flow", scale = 3.2774128000000003e-7, default = "m3/d", link = "Cubic foot per second", }, ["cuft/h"] = { name1 = "cubic foot per hour", name2 = "cubic feet per hour", symbol = "cu&nbsp;ft/h", utype = "flow", scale = 7.8657907200000004e-6, default = "m3/h", link = "Cubic foot per second", }, ["cuft/min"] = { name1 = "cubic foot per minute", name2 = "cubic feet per minute", symbol = "cu&nbsp;ft/min", utype = "flow", scale = 0.00047194744319999999, default = "m3/min", }, ["cuft/s"] = { name1 = "cubic foot per second", name2 = "cubic feet per second", symbol = "cu&nbsp;ft/s", utype = "flow", scale = 28316846592e-12, default = "m3/s", }, ["cumi/a"] = { name1 = "cubic mile per annum", name2 = "cubic miles per annum", symbol = "cu&nbsp;mi/a", utype = "flow", scale = 132.08171170940057, default = "km3/a", link = "Cubic foot per second", }, ["cuyd/h"] = { name1 = "cubic yard per hour", name2 = "cubic yards per hour", symbol = "cuyd/h", utype = "flow", scale = 0.00021237634944000001, default = "m3/h", link = "Cubic foot per second", }, ["cuyd/s"] = { name1 = "cubic yard per second", name2 = "cubic yards per second", symbol = "cu&nbsp;yd/s", utype = "flow", scale = 0.76455485798400002, default = "m3/s", }, ["Goilbbl/a"] = { name1 = "billion barrels per year", name2 = "billion barrels per year", symbol = "Gbbl/a", utype = "flow", scale = 5.0380033629933836, default = "v * 1.58987294928 < 10 ! e6 ! e9 ! m3/a", link = "Barrel per day", }, ["impgal/h"] = { name1 = "imperial gallon per hour", name2 = "imperial gallons per hour", symbol = "imp&nbsp;gal/h", utype = "flow", scale = 1.2628027777777779e-6, default = "m3/h", link = "Gallon", }, ["impgal/min"] = { name1 = "imperial gallon per minute", name2 = "imperial gallons per minute", symbol = "imp gal/min", utype = "flow", scale = 7.5768166666666671e-5, default = "m3/s", link = "Gallon", }, ["impgal/s"] = { name1 = "imperial gallon per second", name2 = "imperial gallons per second", symbol = "impgal/s", utype = "flow", scale = 0.00454609, default = "m3/s", link = "Imperial gallons per second", }, ["km3/a"] = { name1 = "cubic kilometre per annum", name1_us = "cubic kilometer per annum", name2 = "cubic kilometres per annum", name2_us = "cubic kilometers per annum", symbol = "km<sup>3</sup>/a", utype = "flow", scale = 31.68808781402895, default = "cumi/a", link = "Cubic metre per second", }, ["km3/d"] = { name1 = "cubic kilometre per day", name1_us = "cubic kilometer per day", name2 = "cubic kilometres per day", name2_us = "cubic kilometers per day", symbol = "km<sup>3</sup>/d", utype = "flow", scale = 11574.074074074075, default = "cuft/d", link = "Cubic metre per second", }, ["koilbbl/a"] = { name1 = "thousand barrels per year", name2 = "thousand barrels per year", symbol = "kbbl/a", utype = "flow", scale = 5.0380033629933841e-6, default = "v * 1.58987294928 < 10 ! ! e3 ! m3/a", link = "Barrel per day", }, ["koilbbl/d"] = { name1 = "thousand barrels per day", name2 = "thousand barrels per day", symbol = "kbbl/d", utype = "flow", scale = 0.0018401307283333335, default = "v * 1.58987294928 < 10 ! ! e3 ! m3/d", link = "Barrel per day", }, ["L/h"] = { name1 = "litre per hour", name1_us = "liter per hour", name2 = "litres per hour", name2_us = "liters per hour", symbol = "L/h", utype = "flow", scale = 2.7777777777777776e-7, default = "impgal/h USgal/h", link = "Cubic metre per second", }, ["L/min"] = { name1 = "litre per minute", name1_us = "liter per minute", name2 = "litres per minute", name2_us = "liters per minute", symbol = "L/min", utype = "flow", scale = 1.6666666666666667e-5, default = "impgal/min USgal/min", link = "Cubic metre per second", }, ["L/s"] = { name1 = "litre per second", name1_us = "liter per second", name2 = "litres per second", name2_us = "liters per second", symbol = "L/s", utype = "flow", scale = 0.001, default = "cuft/s", link = "Cubic metre per second", }, ["m3/a"] = { name1 = "cubic metre per annum", name1_us = "cubic meter per annum", name2 = "cubic metres per annum", name2_us = "cubic meters per annum", symbol = "m<sup>3</sup>/a", utype = "flow", scale = 3.1688087814028947e-8, default = "cuft/a", link = "Cubic metre per second", }, ["m3/d"] = { name1 = "cubic metre per day", name1_us = "cubic meter per day", name2 = "cubic metres per day", name2_us = "cubic meters per day", symbol = "m<sup>3</sup>/d", utype = "flow", scale = 1.1574074074074073e-5, default = "cuft/d", link = "Cubic metre per second", }, ["m3/h"] = { name1 = "cubic metre per hour", name1_us = "cubic meter per hour", name2 = "cubic metres per hour", name2_us = "cubic meters per hour", symbol = "m<sup>3</sup>/h", utype = "flow", scale = 0.00027777777777777778, default = "cuft/h", link = "Cubic metre per second", }, ["m3/min"] = { name1 = "cubic metre per minute", name1_us = "cubic meter per minute", name2 = "cubic metres per minute", name2_us = "cubic meters per minute", symbol = "m<sup>3</sup>/min", utype = "flow", scale = 0.016666666666666666, default = "cuft/min", link = "Cubic metre per second", }, ["m3/s"] = { name1 = "cubic metre per second", name1_us = "cubic meter per second", name2 = "cubic metres per second", name2_us = "cubic meters per second", symbol = "m<sup>3</sup>/s", utype = "flow", scale = 1, default = "cuft/s", }, ["Moilbbl/a"] = { name1 = "million barrels per year", name2 = "million barrels per year", symbol = "Mbbl/a", utype = "flow", scale = 0.0050380033629933837, default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3/a", link = "Barrel per day", }, ["Moilbbl/d"] = { name1 = "million barrels per day", name2 = "million barrels per day", symbol = "Mbbl/d", utype = "flow", scale = 1.8401307283333335, default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3/d", link = "Barrel per day", }, ["oilbbl/a"] = { name1 = "barrel per year", name2 = "barrels per year", symbol = "bbl/a", utype = "flow", scale = 5.0380033629933841e-9, default = "m3/a", link = "Barrel per day", }, ["oilbbl/d"] = { name1 = "barrel per day", name2 = "barrels per day", symbol = "bbl/d", utype = "flow", scale = 1.8401307283333336e-6, default = "m3/d", }, ["Toilbbl/a"] = { name1 = "trillion barrels per year", name2 = "trillion barrels per year", symbol = "Tbbl/a", utype = "flow", scale = 5038.0033629933832, default = "v * 1.58987294928 < 10 ! e9 ! e12 ! m3/a", link = "Barrel per day", }, ["U.S.gal/d"] = { name1 = "U.S. gallon per day", name2 = "U.S. gallons per day", symbol = "U.S.&nbsp;gal/d", utype = "flow", scale = 4.3812636388888893e-8, default = "m3/s", customary= 1, }, ["U.S.gal/h"] = { name1 = "gallon per hour", name2 = "gallons per hour", symbol = "gal/h", utype = "flow", scale = 1.0515032733333334e-6, default = "m3/h", link = "Gallon", customary= 2, }, ["U.S.gal/min"] = { name1 = "U.S. gallon per minute", name2 = "U.S. gallons per minute", symbol = "U.S.&nbsp;gal/min", utype = "flow", scale = 6.3090196400000003e-5, default = "m3/s", link = "Gallon", }, ["USgal/a"] = { name1 = "US gallon per year", name2 = "US gallons per year", symbol = "US&nbsp;gal/a", utype = "flow", scale = 1.1995246102365199e-10, default = "m3/s", }, ["USgal/d"] = { name1 = "US gallon per day", name2 = "US gallons per day", symbol = "US&nbsp;gal/d", utype = "flow", scale = 4.3812636388888893e-8, default = "m3/s", }, ["USgal/h"] = { name1 = "gallon per hour", name2 = "gallons per hour", symbol = "gal/h", utype = "flow", scale = 1.0515032733333334e-6, default = "m3/h", link = "Gallon", customary= 1, }, ["USgal/min"] = { name1 = "US gallon per minute", name2 = "US gallons per minute", symbol = "US&nbsp;gal/min", utype = "flow", scale = 6.3090196400000003e-5, default = "m3/s", link = "Gallon", }, ["USgal/s"] = { name1 = "US gallon per second", name1_us = "U.S. gallon per second", name2 = "US gallons per second", name2_us = "U.S. gallons per second", symbol = "USgal/s", utype = "flow", scale = 0.003785411784, default = "m3/s", link = "US gallons per second", }, ["ft3/a"] = { target = "cuft/a", }, ["ft3/d"] = { target = "cuft/d", }, ["ft3/h"] = { target = "cuft/h", }, ["ft3/s"] = { target = "cuft/s", }, ["Gcuft/a"] = { target = "e9cuft/a", }, ["Gcuft/d"] = { target = "e9cuft/d", }, ["kcuft/a"] = { target = "e3cuft/a", }, ["kcuft/d"] = { target = "e3cuft/d", }, ["kcuft/s"] = { target = "e3cuft/s", }, ["Mcuft/a"] = { target = "e6cuft/a", }, ["Mcuft/d"] = { target = "e6cuft/d", }, ["Mcuft/s"] = { target = "e6cuft/s", }, ["m³/s"] = { target = "m3/s", }, ["Tcuft/a"] = { target = "e12cuft/a", }, ["Tcuft/d"] = { target = "e12cuft/d", }, ["u.s.gal/min"] = { target = "U.S.gal/min", }, ["usgal/min"] = { target = "USgal/min", }, ["-LTf"] = { name1 = "long ton-force", name2 = "long tons-force", symbol = "LTf", utype = "force", scale = 9964.01641818352, default = "kN", }, ["-STf"] = { name1 = "short ton-force", name2 = "short tons-force", symbol = "STf", utype = "force", scale = 8896.443230521, default = "kN", }, ["dyn"] = { name1 = "dyne", symbol = "dyn", utype = "force", scale = 0.00001, default = "gr-f", }, ["g-f"] = { name1 = "gram-force", name2 = "grams-force", symbol = "g<sub>f</sub>", utype = "force", scale = 0.00980665, default = "mN oz-f", link = "Kilogram-force", }, ["gf"] = { name1 = "gram-force", name2 = "grams-force", symbol = "gf", utype = "force", scale = 0.00980665, default = "mN ozf", link = "Kilogram-force", }, ["gr-f"] = { name1 = "grain-force", name2 = "grains-force", symbol = "gr<sub>f</sub>", utype = "force", scale = 0.0006354602307515, default = "μN", link = "Pound (force)", }, ["grf"] = { name1 = "grain-force", name2 = "grains-force", symbol = "grf", utype = "force", scale = 0.0006354602307515, default = "μN", link = "Pound (force)", }, ["kdyn"] = { name1 = "kilodyne", symbol = "kdyn", utype = "force", scale = 0.01, default = "oz-f", link = "Dyne", }, ["kg-f"] = { name1 = "kilogram-force", name2 = "kilograms-force", symbol = "kg<sub>f</sub>", utype = "force", scale = 9.80665, default = "N lb-f", }, ["kgf"] = { name1 = "kilogram-force", name2 = "kilograms-force", symbol = "kgf", utype = "force", scale = 9.80665, default = "N lbf", }, ["kp"] = { name1 = "kilopond", symbol = "kp", utype = "force", scale = 9.80665, default = "N lb-f", link = "Kilogram-force", }, ["L/T-f"] = { name1 = "long ton-force", name2 = "long tons-force", symbol = "L/T<sub>f</sub>", utype = "force", scale = 9964.01641818352, default = "kN", }, ["L/Tf"] = { name1 = "long ton-force", name2 = "long tons-force", symbol = "L/Tf", utype = "force", scale = 9964.01641818352, default = "kN", }, ["lb-f"] = { name1 = "pound-force", name2 = "pounds-force", symbol = "lb<sub>f</sub>", utype = "force", scale = 4.4482216152605, default = "N", link = "Pound (force)", }, ["lbf"] = { name1 = "pound-force", name2 = "pounds-force", symbol = "lbf", utype = "force", scale = 4.4482216152605, default = "N", link = "Pound (force)", }, ["lb(f)"] = { name1 = "pound", symbol = "lb", utype = "force", scale = 4.4482216152605, default = "N", link = "Pound (force)", }, ["LT-f"] = { name1 = "long ton-force", name2 = "long tons-force", symbol = "LT<sub>f</sub>", utype = "force", scale = 9964.01641818352, default = "kN", }, ["LTf"] = { name1 = "long ton-force", name2 = "long tons-force", symbol = "LTf", usename = 1, utype = "force", scale = 9964.01641818352, default = "kN", }, ["Mdyn"] = { name1 = "megadyne", symbol = "Mdyn", utype = "force", scale = 10, default = "lb-f", link = "Dyne", }, ["mdyn"] = { name1 = "millidyne", symbol = "mdyn", utype = "force", scale = 0.00000001, default = "gr-f", link = "Dyne", }, ["mg-f"] = { name1 = "milligram-force", name2 = "milligrams-force", symbol = "mg<sub>f</sub>", utype = "force", scale = 0.00000980665, default = "μN gr-f", link = "Kilogram-force", }, ["mgf"] = { name1 = "milligram-force", name2 = "milligrams-force", symbol = "mgf", utype = "force", scale = 0.00000980665, default = "μN grf", link = "Kilogram-force", }, ["Mp"] = { name1 = "megapond", symbol = "Mp", utype = "force", scale = 9806.65, default = "kN LT-f ST-f", link = "Kilogram-force", }, ["mp"] = { name1 = "millipond", symbol = "mp", utype = "force", scale = 0.00000980665, default = "μN gr-f", link = "Kilogram-force", }, ["N"] = { _name1 = "newton", _symbol = "N", utype = "force", scale = 1, prefixes = 1, default = "lb-f", link = "Newton (unit)", }, ["oz-f"] = { name1 = "ounce-force", name2 = "ounces-force", symbol = "oz<sub>f</sub>", utype = "force", scale = 0.2780138203095378125, default = "mN", link = "Pound (force)", }, ["ozf"] = { name1 = "ounce-force", name2 = "ounces-force", symbol = "ozf", utype = "force", scale = 0.2780138203095378125, default = "mN", link = "Pound (force)", }, ["p"] = { name1 = "pond", symbol = "p", utype = "force", scale = 0.00980665, default = "mN oz-f", link = "Kilogram-force", }, ["pdl"] = { name1 = "poundal", symbol = "pdl", utype = "force", scale = 0.138254954376, default = "N", }, ["S/T-f"] = { name1 = "short ton-force", name2 = "short tons-force", symbol = "S/T<sub>f</sub>", utype = "force", scale = 8896.443230521, default = "kN", }, ["S/Tf"] = { name1 = "short ton-force", name2 = "short tons-force", symbol = "S/Tf", utype = "force", scale = 8896.443230521, default = "kN", }, ["ST-f"] = { name1 = "short ton-force", name2 = "short tons-force", symbol = "ST<sub>f</sub>", utype = "force", scale = 8896.443230521, default = "kN", }, ["STf"] = { name1 = "short ton-force", name2 = "short tons-force", symbol = "STf", usename = 1, utype = "force", scale = 8896.443230521, default = "kN", }, ["t-f"] = { name1 = "tonne-force", name2 = "tonnes-force", symbol = "t<sub>f</sub>", utype = "force", scale = 9806.65, default = "kN LT-f ST-f", link = "Ton-force#Tonne-force", }, ["tf"] = { name1 = "tonne-force", name2 = "tonnes-force", symbol = "tf", utype = "force", scale = 9806.65, default = "kN LTf STf", link = "Ton-force#Tonne-force", }, ["dyne"] = { target = "dyn", }, ["newtons"] = { target = "N", }, ["poundal"] = { target = "pdl", }, ["tonne-force"] = { target = "tf", }, ["impgal/mi"] = { per = { "@impgal", "mi" }, utype = "fuel efficiency", invert = 1, iscomplex= true, default = "L/km USgal/mi", }, ["km/L"] = { per = { "km", "L" }, utype = "fuel efficiency", invert = -1, iscomplex= true, default = "mpgimp mpgus", }, ["km/l"] = { per = { "km", "ll" }, utype = "fuel efficiency", invert = -1, iscomplex= true, default = "mpgimp mpgus", }, ["L/100 km"] = { per = { "L", "100km" }, utype = "fuel efficiency", invert = 1, iscomplex= true, default = "mpgimp mpgus", symlink = "[[Fuel economy in automobiles#Units of measure|L/100&nbsp;km]]", }, ["l/100 km"] = { per = { "ll", "100km" }, utype = "fuel efficiency", invert = 1, iscomplex= true, default = "mpgimp mpgus", symlink = "[[Fuel economy in automobiles#Units of measure|l/100&nbsp;km]]", }, ["L/km"] = { per = { "L", "km" }, utype = "fuel efficiency", invert = 1, iscomplex= true, default = "mpgimp mpgus", }, ["l/km"] = { per = { "ll", "km" }, utype = "fuel efficiency", invert = 1, iscomplex= true, default = "mpgimp mpgus", }, ["mi/impqt"] = { per = { "mi", "impqt" }, utype = "fuel efficiency", invert = -1, iscomplex= true, default = "km/L", }, ["mi/U.S.qt"] = { per = { "mi", "U.S.qt" }, utype = "fuel efficiency", invert = -1, iscomplex= true, default = "km/L", }, ["mi/USqt"] = { per = { "mi", "USqt" }, utype = "fuel efficiency", invert = -1, iscomplex= true, default = "km/L", }, ["mi/usqt"] = { per = { "mi", "usqt" }, utype = "fuel efficiency", invert = -1, iscomplex= true, default = "km/L", }, ["mpgimp"] = { per = { "mi", "@impgal" }, symbol = "mpg<sub>&#8209;imp</sub>", utype = "fuel efficiency", invert = -1, iscomplex= true, default = "L/100 km+mpgus", symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>&#8209;[[Imperial units|imp]]</sub>", }, ["mpgus"] = { per = { "mi", "+USgal" }, symbol = "mpg<sub>&#8209;US</sub>", utype = "fuel efficiency", invert = -1, iscomplex= true, default = "L/100 km+mpgimp", symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>&#8209;[[United States customary units|US]]</sub>", }, ["U.S.gal/mi"] = { per = { "*U.S.gal", "mi" }, sp_us = true, utype = "fuel efficiency", invert = 1, iscomplex= true, default = "L/km impgal/mi", }, ["usgal/mi"] = { per = { "+USgal", "mi" }, utype = "fuel efficiency", invert = 1, iscomplex= true, default = "L/km impgal/mi", }, ["L/100km"] = { target = "L/100 km", }, ["l/100km"] = { target = "l/100 km", }, ["mpg"] = { shouldbe = "Use %{mpgus%} for miles per US gallon or %{mpgimp%} for miles per imperial gallon (not %{mpg%})", }, ["mpgU.S."] = { target = "mpgus", symbol = "mpg<sub>&#8209;U.S.</sub>", sp_us = true, symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>&#8209;[[United States customary units|U.S.]]</sub>", }, ["mpgu.s."] = { target = "mpgus", symbol = "mpg<sub>&#8209;U.S.</sub>", sp_us = true, symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>&#8209;[[United States customary units|U.S.]]</sub>", }, ["mpgUS"] = { target = "mpgus", }, ["USgal/mi"] = { target = "usgal/mi", }, ["kPa/m"] = { per = { "kPa", "-m-frac" }, utype = "fracture gradient", default = "psi/ft", }, ["psi/ft"] = { per = { "psi", "-ft-frac" }, utype = "fracture gradient", default = "kPa/m", }, ["cm/km"] = { name1 = "centimetre per kilometre", name1_us = "centimeter per kilometer", name2 = "centimetres per kilometre", name2_us = "centimeters per kilometer", symbol = "cm/km", utype = "gradient", scale = 0.00001, default = "ft/mi", link = "Grade (slope)", }, ["ft/mi"] = { name1 = "foot per mile", name2 = "feet per mile", symbol = "ft/mi", utype = "gradient", scale = 0.00018939393939393939, default = "v < 5.28 ! c ! ! m/km", link = "Grade (slope)", }, ["ft/nmi"] = { name1 = "foot per nautical mile", name2 = "feet per nautical mile", symbol = "ft/nmi", utype = "gradient", scale = 0.00016457883369330455, default = "v < 6.076 ! c ! ! m/km", link = "Grade (slope)", }, ["in/ft"] = { name1 = "inch per foot", name2 = "inches per foot", symbol = "in/ft", utype = "gradient", scale = 0.083333333333333329, default = "mm/m", link = "Grade (slope)", }, ["in/mi"] = { name1 = "inch per mile", name2 = "inches per mile", symbol = "in/mi", utype = "gradient", scale = 1.5782828282828283e-5, default = "v < 0.6336 ! m ! c ! m/km", link = "Grade (slope)", }, ["m/km"] = { name1 = "metre per kilometre", name1_us = "meter per kilometer", name2 = "metres per kilometre", name2_us = "meters per kilometer", symbol = "m/km", utype = "gradient", scale = 0.001, default = "ft/mi", link = "Grade (slope)", }, ["mm/km"] = { name1 = "millimetre per kilometre", name1_us = "millimeter per kilometer", name2 = "millimetres per kilometre", name2_us = "millimeters per kilometer", symbol = "mm/km", utype = "gradient", scale = 0.000001, default = "in/mi", link = "Grade (slope)", }, ["mm/m"] = { name1 = "millimetre per metre", name1_us = "millimeter per meter", name2 = "millimetres per metre", name2_us = "millimeters per meter", symbol = "mm/m", utype = "gradient", scale = 0.001, default = "in/ft", link = "Grade (slope)", }, ["admi"] = { name1 = "admiralty mile", symbol = "nmi&nbsp;(admiralty)", utype = "length", scale = 1853.184, default = "km mi", link = "Nautical mile", }, ["AU"] = { name1 = "astronomical unit", symbol = "AU", utype = "length", scale = 149597870700, default = "km mi", }, ["Brnmi"] = { name1 = "British nautical mile", symbol = "(Brit)&nbsp;nmi", utype = "length", scale = 1853.184, default = "km mi", link = "Nautical mile", }, ["bu"] = { name2 = "bu", symbol = "bu", usename = 1, utype = "length", scale = 0.0030303030303030303, default = "mm", link = "Japanese units of measurement#Length", }, ["ch"] = { name1 = "chain", symbol = "ch", utype = "length", scale = 20.1168, default = "ft m", subdivs = { ["ft"] = { 66, default = "m" }, ["yd"] = { 22, default = "m" } }, link = "Chain (unit)", }, ["chlk"] = { name1 = "[[Chain (unit)|chain]]", symbol = "[[Chain (unit)|ch]]", utype = "length", scale = 20.1168, default = "ft m", link = "", }, ["chain"] = { symbol = "chain", usename = 1, utype = "length", scale = 20.1168, default = "ft m", subdivs = { ["ft"] = { 66, default = "m" }, ["yd"] = { 22, default = "m" } }, link = "Chain (unit)", }, ["chainlk"] = { symbol = "[[Chain (unit)|chain]]", usename = 1, utype = "length", scale = 20.1168, default = "ft m", link = "", }, ["dpcm"] = { name2 = "dot/cm", symbol = "dot/cm", utype = "length", scale = 100, invert = -1, iscomplex= true, default = "dpi", link = "Dots per inch", }, ["dpi"] = { name2 = "DPI", symbol = "DPI", utype = "length", scale = 39.370078740157481, invert = -1, iscomplex= true, default = "pitch", link = "Dots per inch", }, ["fathom"] = { symbol = "fathom", usename = 1, utype = "length", scale = 1.8288, default = "ft m", }, ["foot"] = { name1 = "foot", name2 = "foot", symbol = "ft", utype = "length", scale = 0.3048, default = "m", subdivs = { ["in"] = { 12, default = "m" } }, link = "Foot (unit)", }, ["ft"] = { name1 = "foot", name2 = "feet", symbol = "ft", utype = "length", scale = 0.3048, exception= "integer_more_precision", default = "m", subdivs = { ["in"] = { 12, default = "m" } }, link = "Foot (unit)", }, ["furlong"] = { symbol = "furlong", usename = 1, utype = "length", scale = 201.168, default = "ft m", }, ["Gly"] = { name1 = "gigalight-year", symbol = "Gly", utype = "length", scale = 9.4607304725808e24, default = "Mpc", link = "Light-year#Definitions", }, ["Gpc"] = { name1 = "gigaparsec", symbol = "Gpc", utype = "length", scale = 3.0856775814671916e25, default = "Gly", link = "Parsec#Megaparsecs and gigaparsecs", }, ["hand"] = { name1 = "hand", symbol = "h", utype = "length", builtin = "hand", scale = 0.1016, iscomplex= true, default = "in cm", link = "Hand (unit)", }, ["in"] = { name1 = "inch", name2 = "inches", symbol = "in", utype = "length", scale = 0.0254, exception= "subunit_more_precision", default = "mm", }, ["inabbreviated"] = { name2 = "in", symbol = "in", utype = "length", scale = 0.0254, default = "mm", link = "Inch", }, ["kly"] = { name1 = "kilolight-year", symbol = "kly", utype = "length", scale = 9.4607304725808e18, default = "pc", link = "Light-year#Definitions", }, ["kpc"] = { name1 = "kiloparsec", symbol = "kpc", utype = "length", scale = 3.0856775814671916e19, default = "kly", link = "Parsec#Parsecs and kiloparsecs", }, ["LD"] = { name1 = "lunar distance", symbol = "LD", utype = "length", scale = 384403000, default = "km mi", link = "Lunar distance (astronomy)", }, ["league"] = { symbol = "league", usename = 1, utype = "length", scale = 4828.032, default = "km", link = "League (unit)", }, ["ly"] = { name1 = "light-year", symbol = "ly", utype = "length", scale = 9.4607304725808e15, default = "AU", }, ["m"] = { _name1 = "metre", _name1_us= "meter", _symbol = "m", utype = "length", scale = 1, prefixes = 1, default = "v > 0 and v < 3 ! ftin ! ft", link = "Metre", }, ["mi"] = { name1 = "mile", symbol = "mi", utype = "length", scale = 1609.344, default = "km", subdivs = { ["ch"] = { 80, default = "km" }, ["chlk"] = { 80, default = "km" }, ["chain"] = { 80, default = "km" }, ["chainlk"] = { 80, default = "km" }, ["ft"] = { 5280, default = "km" }, ["furlong"] = { 8, default = "km" }, ["yd"] = { 1760, default = "km" } }, }, ["mil"] = { symbol = "mil", usename = 1, utype = "length", scale = 0.0000254, default = "mm", link = "Thousandth of an inch", }, ["Mly"] = { name1 = "megalight-year", symbol = "Mly", utype = "length", scale = 9.4607304725808e21, default = "kpc", link = "Light-year#Definitions", }, ["Mpc"] = { name1 = "megaparsec", symbol = "Mpc", utype = "length", scale = 3.0856775814671916e22, default = "Mly", link = "Parsec#Megaparsecs and gigaparsecs", }, ["NM"] = { name1 = "nautical mile", symbol = "NM", utype = "length", scale = 1852, default = "km mi", }, ["nmi"] = { name1 = "nautical mile", symbol = "nmi", utype = "length", scale = 1852, default = "km mi", }, ["oldUKnmi"] = { name1 = "nautical mile", symbol = "nmi", utype = "length", scale = 1853.184, default = "km mi", }, ["oldUSnmi"] = { name1 = "nautical mile", symbol = "nmi", utype = "length", scale = 1853.24496, default = "km mi", }, ["pc"] = { name1 = "parsec", symbol = "pc", utype = "length", scale = 3.0856775814671916e16, default = "ly", }, ["perch"] = { name2 = "perches", symbol = "perch", usename = 1, utype = "length", scale = 5.0292, default = "ft m", link = "Rod (unit)", }, ["pitch"] = { name2 = "μm", symbol = "μm", utype = "length", scale = 1e-6, default = "dpi", defkey = "pitch", linkey = "pitch", link = "Dots per inch", }, ["pole"] = { symbol = "pole", usename = 1, utype = "length", scale = 5.0292, default = "ft m", link = "Rod (unit)", }, ["pre1954U.S.nmi"] = { name1 = "(pre-1954&nbsp;U.S.) nautical mile", symbol = "(pre&#8209;1954&nbsp;U.S.) nmi", utype = "length", scale = 1853.24496, default = "km mi", link = "Nautical mile", }, ["pre1954USnmi"] = { name1 = "(pre-1954&nbsp;US) nautical mile", name1_us = "(pre-1954&nbsp;U.S.) nautical mile", symbol = "(pre&#8209;1954&nbsp;US) nmi", sym_us = "(pre&#8209;1954&nbsp;U.S.) nmi", utype = "length", scale = 1853.24496, default = "km mi", link = "Nautical mile", }, ["rd"] = { name1 = "rod", symbol = "rd", utype = "length", scale = 5.0292, default = "ft m", link = "Rod (unit)", }, ["royal cubit"] = { name1 = "royal cubit", symbol = "cu", utype = "length", scale = 0.524, default = "mm", }, ["rtkm"] = { name1 = "route kilometre", name1_us = "route kilometer", symbol = "km", utype = "length", scale = 1000, default = "mi", link = "Kilometre", }, ["rtmi"] = { name1 = "route mile", symbol = "mi", utype = "length", scale = 1609.344, default = "km", link = "Mile", }, ["shaku"] = { name2 = "shaku", symbol = "shaku", usename = 1, utype = "length", scale = 0.30303030303030304, default = "m", link = "Shaku (unit)", }, ["sm"] = { name1 = "smoot", symbol = "sm", utype = "length", scale = 1.70180, default = "m", link = "Smoot (unit)", }, ["smi"] = { name1 = "statute mile", symbol = "mi", utype = "length", scale = 1609.344, default = "km", subdivs = { ["chain"] = { 80, default = "km" } }, }, ["solar radius"] = { name1 = "solar radius", name2 = "solar radii", symbol = "''R''<sub>☉</sub>", utype = "length", scale = 695700e3, default = "km", }, ["sun"] = { name2 = "sun", symbol = "sun", usename = 1, utype = "length", scale = 0.030303030303030304, default = "mm", link = "Japanese units of measurement#Length", }, ["thou"] = { name2 = "thou", symbol = "thou", usename = 1, utype = "length", scale = 0.0000254, default = "mm", link = "Thousandth of an inch", }, ["verst"] = { symbol = "verst", usename = 1, utype = "length", scale = 1066.8, default = "km mi", }, ["yd"] = { name1 = "yard", symbol = "yd", utype = "length", scale = 0.9144, default = "m", subdivs = { ["ft"] = { 3, default = "m" } }, }, ["μin"] = { name1 = "microinch", name2 = "microinches", symbol = "μin", utype = "length", scale = 0.0000000254, default = "nm", link = "SI prefix#Non-metric units", }, ["Å"] = { name1 = "ångström", symbol = "Å", utype = "length", scale = 0.0000000001, default = "in", }, ["Hz"] = { _name1 = "hertz", _name2 = "hertz", _symbol = "Hz", utype = "length", scale = 3.3356409519815204e-9, invert = -1, iscomplex= true, prefixes = 1, default = "m", link = "Hertz", }, ["rpm"] = { name1 = "revolution per minute", name2 = "revolutions per minute", symbol = "rpm", utype = "length", scale = 5.5594015866358675e-11, invert = -1, iscomplex= true, default = "Hz", link = "Revolutions per minute", }, ["-ft-frac"] = { target = "ft", link = "Fracture gradient", }, ["-in-stiff"] = { target = "in", link = "Stiffness", }, ["-m-frac"] = { target = "m", link = "Fracture gradient", }, ["-m-stiff"] = { target = "m", link = "Stiffness", }, ["100km"] = { target = "km", multiplier= 100, }, ["100mi"] = { target = "mi", multiplier= 100, }, ["100miles"] = { target = "mi", symbol = "miles", multiplier= 100, }, ["admiralty nmi"] = { target = "oldUKnmi", }, ["angstrom"] = { target = "Å", }, ["au"] = { target = "AU", symbol = "au", }, ["feet"] = { target = "ft", }, ["hands"] = { target = "hand", }, ["inch"] = { target = "in", }, ["inches"] = { target = "in", }, ["light-year"] = { target = "ly", }, ["meter"] = { target = "m", sp_us = true, }, ["meters"] = { target = "m", sp_us = true, }, ["metre"] = { target = "m", }, ["metres"] = { target = "m", }, ["micrometre"] = { target = "μm", }, ["micron"] = { target = "μm", default = "μin", }, ["mile"] = { target = "mi", }, ["miles"] = { target = "mi", }, ["parsec"] = { target = "pc", }, ["rod"] = { target = "rd", }, ["smoot"] = { target = "sm", }, ["uin"] = { target = "μin", }, ["yard"] = { target = "yd", }, ["yards"] = { target = "yd", }, ["yds"] = { target = "yd", }, ["dtex"] = { name1 = "decitex", name2 = "decitex", symbol = "dtex", utype = "linear density", scale = 1e-7, default = "lb/yd", link = "Units of textile measurement#Units", }, ["kg/cm"] = { name1 = "kilogram per centimetre", name1_us = "kilogram per centimeter", name2 = "kilograms per centimetre", name2_us = "kilograms per centimeter", symbol = "kg/cm", utype = "linear density", scale = 100, default = "lb/yd", link = "Linear density", }, ["kg/m"] = { name1 = "kilogram per metre", name1_us = "kilogram per meter", name2 = "kilograms per metre", name2_us = "kilograms per meter", symbol = "kg/m", utype = "linear density", scale = 1, default = "lb/yd", link = "Linear density", }, ["lb/ft"] = { name1 = "pound per foot", name2 = "pounds per foot", symbol = "lb/ft", utype = "linear density", scale = 1.4881639435695539, default = "kg/m", link = "Linear density", }, ["lb/yd"] = { name1 = "pound per yard", name2 = "pounds per yard", symbol = "lb/yd", utype = "linear density", scale = 0.49605464785651798, default = "kg/m", link = "Linear density", }, ["G"] = { _name1 = "gauss", _name2 = "gauss", _symbol = "G", utype = "magnetic field strength", scale = 0.0001, prefixes = 1, default = "T", link = "Gauss (unit)", }, ["T"] = { _name1 = "tesla", _symbol = "T", utype = "magnetic field strength", scale = 1, prefixes = 1, default = "G", link = "Tesla (unit)", }, ["A/m"] = { name1 = "ampere per metre", name1_us = "ampere per meter", name2 = "amperes per metre", name2_us = "amperes per meter", symbol = "A/m", utype = "magnetizing field", scale = 1, default = "Oe", }, ["kA/m"] = { name1 = "kiloampere per metre", name1_us = "kiloampere per meter", name2 = "kiloamperes per metre", name2_us = "kiloamperes per meter", symbol = "kA/m", utype = "magnetizing field", scale = 1000, default = "kOe", link = "Ampere per metre", }, ["MA/m"] = { name1 = "megaampere per metre", name1_us = "megaampere per meter", name2 = "megaamperes per metre", name2_us = "megaamperes per meter", symbol = "MA/m", utype = "magnetizing field", scale = 1e6, default = "kOe", link = "Ampere per metre", }, ["Oe"] = { _name1 = "oersted", _symbol = "Oe", utype = "magnetizing field", scale = 79.5774715, prefixes = 1, default = "kA/m", link = "Oersted", }, ["-Lcwt"] = { name1 = "hundredweight", name2 = "hundredweight", symbol = "cwt", utype = "mass", scale = 50.80234544, default = "lb", }, ["-Scwt"] = { name1 = "hundredweight", name2 = "hundredweight", symbol = "cwt", utype = "mass", scale = 45.359237, default = "lb", }, ["-ST"] = { name1 = "short ton", symbol = "ST", utype = "mass", scale = 907.18474, default = "t", }, ["carat"] = { symbol = "carat", usename = 1, utype = "mass", scale = 0.0002, default = "g", link = "Carat (mass)", }, ["drachm"] = { name1_us = "dram", symbol = "drachm", usename = 1, utype = "mass", scale = 0.001771845195, default = "g", link = "Dram (unit)", }, ["dram"] = { target = "drachm", }, ["dwt"] = { name1 = "pennyweight", symbol = "dwt", utype = "mass", scale = 0.00155517384, default = "oz g", }, ["DWton"] = { symbol = "deadweight ton", usename = 1, utype = "mass", scale = 1016.0469088, default = "DWtonne", link = "Deadweight tonnage", }, ["DWtonne"] = { name1_us = "deadweight metric ton", symbol = "deadweight tonne", sym_us = "~deadweight metric ton", usename = 1, utype = "mass", scale = 1000, default = "DWton", link = "Deadweight tonnage", }, ["g"] = { _name1 = "gram", _symbol = "g", utype = "mass", scale = 0.001, prefixes = 1, default = "oz", link = "Gram", }, ["gr"] = { name1 = "grain", symbol = "gr", utype = "mass", scale = 0.00006479891, default = "g", link = "Grain (unit)", }, ["Gt"] = { name1 = "gigatonne", symbol = "Gt", utype = "mass", scale = 1000000000000, default = "LT ST", link = "Tonne", }, ["impgalh2o"] = { name1 = "imperial gallon of water", name2 = "imperial gallons of water", symbol = "imp&nbsp;gal H<sub>2</sub>O", utype = "mass", scale = 4.5359236999999499, default = "lb kg", link = "Imperial gallon", }, ["kt"] = { name1 = "kilotonne", symbol = "kt", utype = "mass", scale = 1000000, default = "LT ST", link = "Tonne", }, ["lb"] = { name1 = "pound", symbol = "lb", utype = "mass", scale = 0.45359237, exception= "integer_more_precision", default = "kg", subdivs = { ["oz"] = { 16, default = "kg" } }, link = "Pound (mass)", }, ["Lcwt"] = { name1 = "long hundredweight", name2 = "long hundredweight", symbol = "Lcwt", usename = 1, utype = "mass", scale = 50.80234544, default = "lb", subdivs = { ["qtr"] = { 4, default = "kg" }, ["st"] = { 8, default = "kg" } }, link = "Hundredweight", }, ["long cwt"] = { name1 = "long hundredweight", name2 = "long hundredweight", symbol = "long&nbsp;cwt", utype = "mass", scale = 50.80234544, default = "lb kg", subdivs = { ["qtr"] = { 4, default = "kg" } }, link = "Hundredweight", }, ["long qtr"] = { name1 = "long quarter", symbol = "long&nbsp;qtr", utype = "mass", scale = 12.70058636, default = "lb kg", }, ["LT"] = { symbol = "long ton", usename = 1, utype = "mass", scale = 1016.0469088, default = "t", subdivs = { ["Lcwt"] = { 20, default = "t", unit = "-Lcwt" } }, }, ["lt"] = { name1 = "long ton", symbol = "LT", utype = "mass", scale = 1016.0469088, default = "t", subdivs = { ["Lcwt"] = { 20, default = "t", unit = "-Lcwt" } }, }, ["metric ton"] = { symbol = "metric ton", usename = 1, utype = "mass", scale = 1000, default = "long ton", link = "Tonne", }, ["MT"] = { name1 = "metric ton", symbol = "t", utype = "mass", scale = 1000, default = "LT ST", link = "Tonne", }, ["Mt"] = { name1 = "megatonne", symbol = "Mt", utype = "mass", scale = 1000000000, default = "LT ST", link = "Tonne", }, ["oz"] = { name1 = "ounce", symbol = "oz", utype = "mass", scale = 0.028349523125, default = "g", }, ["ozt"] = { name1 = "troy ounce", symbol = "ozt", utype = "mass", scale = 0.0311034768, default = "oz g", }, ["pdr"] = { name1 = "pounder", symbol = "pdr", utype = "mass", scale = 0.45359237, default = "kg", link = "Pound (mass)", }, ["qtr"] = { name1 = "quarter", symbol = "qtr", utype = "mass", scale = 12.70058636, default = "lb kg", subdivs = { ["lb"] = { 28, default = "kg" } }, link = "Long quarter", }, ["Scwt"] = { name1 = "short hundredweight", name2 = "short hundredweight", symbol = "Scwt", usename = 1, utype = "mass", scale = 45.359237, default = "lb", link = "Hundredweight", }, ["short cwt"] = { name1 = "short hundredweight", name2 = "short hundredweight", symbol = "short&nbsp;cwt", utype = "mass", scale = 45.359237, default = "lb kg", link = "Hundredweight", }, ["short qtr"] = { name1 = "short quarter", symbol = "short&nbsp;qtr", utype = "mass", scale = 11.33980925, default = "lb kg", }, ["ST"] = { symbol = "short ton", usename = 1, utype = "mass", scale = 907.18474, default = "t", subdivs = { ["Scwt"] = { 20, default = "t", unit = "-Scwt" } }, }, ["shtn"] = { name1 = "short ton", symbol = "sh&nbsp;tn", utype = "mass", scale = 907.18474, default = "t", }, ["shton"] = { symbol = "ton", usename = 1, utype = "mass", scale = 907.18474, default = "t", }, ["solar mass"] = { name1 = "solar mass", name2 = "solar masses", symbol = "''M''<sub>☉</sub>", utype = "mass", scale = 1.98855e30, default = "kg", }, ["st"] = { name1 = "stone", name2 = "stone", symbol = "st", utype = "mass", scale = 6.35029318, default = "lb kg", subdivs = { ["lb"] = { 14, default = "kg lb" } }, link = "Stone (unit)", }, ["t"] = { name1 = "tonne", name1_us = "metric ton", symbol = "t", utype = "mass", scale = 1000, default = "LT ST", }, ["tonne"] = { name1 = "tonne", name1_us = "metric ton", symbol = "t", utype = "mass", scale = 1000, default = "shton", }, ["troy pound"] = { symbol = "troy pound", usename = 1, utype = "mass", scale = 0.3732417216, default = "lb kg", link = "Troy weight", }, ["usgalh2o"] = { name1 = "US gallon of water", name1_us = "U.S. gallon of water", name2 = "US gallons of water", name2_us = "U.S. gallons of water", symbol = "US&nbsp;gal H<sub>2</sub>O", utype = "mass", scale = 3.7776215836051126, default = "lb kg", link = "United States customary units#Fluid volume", }, ["viss"] = { name2 = "viss", symbol = "viss", utype = "mass", scale = 1.632932532, default = "kg", link = "Myanmar units of measurement#Mass", }, ["billion tonne"] = { target = "e9t", }, ["kilogram"] = { target = "kg", }, ["kilotonne"] = { target = "kt", }, ["lbs"] = { target = "lb", }, ["lbt"] = { target = "troy pound", }, ["lcwt"] = { target = "Lcwt", }, ["long ton"] = { target = "LT", }, ["mcg"] = { target = "μg", }, ["million tonne"] = { target = "e6t", }, ["scwt"] = { target = "Scwt", }, ["short ton"] = { target = "ST", }, ["stone"] = { target = "st", }, ["thousand tonne"] = { target = "e3t", }, ["tonnes"] = { target = "t", }, ["kg/kW"] = { name1 = "kilogram per kilowatt", name2 = "kilograms per kilowatt", symbol = "kg/kW", utype = "mass per unit power", scale = 0.001, default = "lb/hp", link = "Kilowatt", }, ["lb/hp"] = { name1 = "pound per horsepower", name2 = "pounds per horsepower", symbol = "lb/hp", utype = "mass per unit power", scale = 0.00060827738784176115, default = "kg/kW", link = "Horsepower", }, ["kg/h"] = { per = { "kg", "h" }, utype = "mass per unit time", default = "lb/h", }, ["lb/h"] = { per = { "lb", "h" }, utype = "mass per unit time", default = "kg/h", }, ["g-mol/d"] = { name1 = "gram-mole per day", name2 = "gram-moles per day", symbol = "g&#8209;mol/d", utype = "molar rate", scale = 1.1574074074074073e-5, default = "μmol/s", link = "Mole (unit)", }, ["g-mol/h"] = { name1 = "gram-mole per hour", name2 = "gram-moles per hour", symbol = "g&#8209;mol/h", utype = "molar rate", scale = 0.00027777777777777778, default = "mmol/s", link = "Mole (unit)", }, ["g-mol/min"] = { name1 = "gram-mole per minute", name2 = "gram-moles per minute", symbol = "g&#8209;mol/min", utype = "molar rate", scale = 0.016666666666666666, default = "g-mol/s", link = "Mole (unit)", }, ["g-mol/s"] = { name1 = "gram-mole per second", name2 = "gram-moles per second", symbol = "g&#8209;mol/s", utype = "molar rate", scale = 1, default = "lb-mol/min", link = "Mole (unit)", }, ["gmol/d"] = { name1 = "gram-mole per day", name2 = "gram-moles per day", symbol = "gmol/d", utype = "molar rate", scale = 1.1574074074074073e-5, default = "μmol/s", link = "Mole (unit)", }, ["gmol/h"] = { name1 = "gram-mole per hour", name2 = "gram-moles per hour", symbol = "gmol/h", utype = "molar rate", scale = 0.00027777777777777778, default = "mmol/s", link = "Mole (unit)", }, ["gmol/min"] = { name1 = "gram-mole per minute", name2 = "gram-moles per minute", symbol = "gmol/min", utype = "molar rate", scale = 0.016666666666666666, default = "gmol/s", link = "Mole (unit)", }, ["gmol/s"] = { name1 = "gram-mole per second", name2 = "gram-moles per second", symbol = "gmol/s", utype = "molar rate", scale = 1, default = "lbmol/min", link = "Mole (unit)", }, ["kmol/d"] = { name1 = "kilomole per day", name2 = "kilomoles per day", symbol = "kmol/d", utype = "molar rate", scale = 0.011574074074074073, default = "mmol/s", link = "Mole (unit)", }, ["kmol/h"] = { name1 = "kilomole per hour", name2 = "kilomoles per hour", symbol = "kmol/h", utype = "molar rate", scale = 0.27777777777777779, default = "mol/s", link = "Mole (unit)", }, ["kmol/min"] = { name1 = "kilomole per minute", name2 = "kilomoles per minute", symbol = "kmol/min", utype = "molar rate", scale = 16.666666666666668, default = "mol/s", link = "Kilomole (unit)", }, ["kmol/s"] = { name1 = "kilomole per second", name2 = "kilomoles per second", symbol = "kmol/s", utype = "molar rate", scale = 1000, default = "lb-mol/s", link = "Mole (unit)", }, ["lb-mol/d"] = { name1 = "pound-mole per day", name2 = "pound-moles per day", symbol = "lb&#8209;mol/d", utype = "molar rate", scale = 0.0052499116898148141, default = "mmol/s", link = "Pound-mole", }, ["lb-mol/h"] = { name1 = "pound-mole per hour", name2 = "pound-moles per hour", symbol = "lb&#8209;mol/h", utype = "molar rate", scale = 0.12599788055555555, default = "mol/s", link = "Pound-mole", }, ["lb-mol/min"] = { name1 = "pound-mole per minute", name2 = "pound-moles per minute", symbol = "lb&#8209;mol/min", utype = "molar rate", scale = 7.5598728333333334, default = "mol/s", link = "Pound-mole", }, ["lb-mol/s"] = { name1 = "pound-mole per second", name2 = "pound-moles per second", symbol = "lb&#8209;mol/s", utype = "molar rate", scale = 453.59237, default = "kmol/s", link = "Pound-mole", }, ["lbmol/d"] = { name1 = "pound-mole per day", name2 = "pound-moles per day", symbol = "lbmol/d", utype = "molar rate", scale = 0.0052499116898148141, default = "mmol/s", link = "Pound-mole", }, ["lbmol/h"] = { name1 = "pound-mole per hour", name2 = "pound-moles per hour", symbol = "lbmol/h", utype = "molar rate", scale = 0.12599788055555555, default = "mol/s", link = "Pound-mole", }, ["lbmol/min"] = { name1 = "pound-mole per minute", name2 = "pound-moles per minute", symbol = "lbmol/min", utype = "molar rate", scale = 7.5598728333333334, default = "mol/s", link = "Pound-mole", }, ["lbmol/s"] = { name1 = "pound-mole per second", name2 = "pound-moles per second", symbol = "lbmol/s", utype = "molar rate", scale = 453.59237, default = "kmol/s", link = "Pound-mole", }, ["mmol/s"] = { name1 = "millimole per second", name2 = "millimoles per second", symbol = "mmol/s", utype = "molar rate", scale = 0.001, default = "lb-mol/d", link = "Mole (unit)", }, ["mol/d"] = { name1 = "mole per day", name2 = "moles per day", symbol = "mol/d", utype = "molar rate", scale = 1.1574074074074073e-5, default = "μmol/s", link = "Mole (unit)", }, ["mol/h"] = { name1 = "mole per hour", name2 = "moles per hour", symbol = "mol/h", utype = "molar rate", scale = 0.00027777777777777778, default = "mmol/s", link = "Mole (unit)", }, ["mol/min"] = { name1 = "mole per minute", name2 = "moles per minute", symbol = "mol/min", utype = "molar rate", scale = 0.016666666666666666, default = "mol/s", link = "Mole (unit)", }, ["mol/s"] = { name1 = "mole per second", name2 = "moles per second", symbol = "mol/s", utype = "molar rate", scale = 1, default = "lb-mol/min", link = "Mole (unit)", }, ["μmol/s"] = { name1 = "micromole per second", name2 = "micromoles per second", symbol = "μmol/s", utype = "molar rate", scale = 0.000001, default = "lb-mol/d", link = "Mole (unit)", }, ["umol/s"] = { target = "μmol/s", }, ["/acre"] = { name1 = "per acre", name2 = "per acre", symbol = "/acre", utype = "per unit area", scale = 0.00024710538146716532, default = "/ha", link = "Acre", }, ["/ha"] = { name1 = "per hectare", name2 = "per hectare", symbol = "/ha", utype = "per unit area", scale = 100e-6, default = "/acre", link = "Hectare", }, ["/sqcm"] = { name1 = "per square centimetre", name1_us = "per square centimeter", name2 = "per square centimetre", name2_us = "per square centimeter", symbol = "/cm<sup>2</sup>", utype = "per unit area", scale = 1e4, default = "/sqin", link = "Square centimetre", }, ["/sqin"] = { name1 = "per square inch", name2 = "per square inch", symbol = "/in<sup>2</sup>", utype = "per unit area", scale = 1550.0031000062002, default = "/sqcm", link = "Square inch", }, ["/sqkm"] = { name1 = "per square kilometre", name1_us = "per square kilometer", name2 = "per square kilometre", name2_us = "per square kilometer", symbol = "/km<sup>2</sup>", utype = "per unit area", scale = 1e-6, default = "/sqmi", link = "Square kilometre", }, ["/sqmi"] = { name1 = "per square mile", name2 = "per square mile", symbol = "/sq&nbsp;mi", utype = "per unit area", scale = 3.8610215854244582e-7, default = "/sqkm", link = "Square mile", }, ["PD/acre"] = { name1 = "inhabitant per acre", name2 = "inhabitants per acre", symbol = "/acre", utype = "per unit area", scale = 0.00024710538146716532, default = "PD/ha", link = "Acre", }, ["PD/ha"] = { name1 = "inhabitant per hectare", name2 = "inhabitants per hectare", symbol = "/ha", utype = "per unit area", scale = 100e-6, default = "PD/acre", link = "Hectare", }, ["PD/sqkm"] = { name1 = "inhabitant per square kilometre", name1_us = "inhabitant per square kilometer", name2 = "inhabitants per square kilometre", name2_us = "inhabitants per square kilometer", symbol = "/km<sup>2</sup>", utype = "per unit area", scale = 1e-6, default = "PD/sqmi", link = "Square kilometre", }, ["PD/sqmi"] = { name1 = "inhabitant per square mile", name2 = "inhabitants per square mile", symbol = "/sq&nbsp;mi", utype = "per unit area", scale = 3.8610215854244582e-7, default = "PD/sqkm", link = "Square mile", }, ["/cm2"] = { target = "/sqcm", }, ["/in2"] = { target = "/sqin", }, ["/km2"] = { target = "/sqkm", }, ["pd/acre"] = { target = "PD/acre", }, ["pd/ha"] = { target = "PD/ha", }, ["PD/km2"] = { target = "PD/sqkm", }, ["pd/km2"] = { target = "PD/sqkm", }, ["PD/km²"] = { target = "PD/sqkm", }, ["pd/sqkm"] = { target = "PD/sqkm", }, ["pd/sqmi"] = { target = "PD/sqmi", }, ["/l"] = { name1 = "per litre", name1_us = "per liter", name2 = "per litre", name2_us = "per liter", symbol = "/l", utype = "per unit volume", scale = 1000, default = "/usgal", link = "Litre", }, ["/L"] = { name1 = "per litre", name1_us = "per liter", name2 = "per litre", name2_us = "per liter", symbol = "/L", utype = "per unit volume", scale = 1000, default = "/usgal", link = "Litre", }, ["/USgal"] = { name1 = "per gallon", name2 = "per gallon", symbol = "/gal", utype = "per unit volume", scale = 264.172052, default = "/L", link = "US gallon", customary= 2, }, ["/usgal"] = { target = "/USgal", }, ["bhp"] = { name1 = "brake horsepower", name2 = "brake horsepower", symbol = "bhp", utype = "power", scale = 745.69987158227022, default = "kW", link = "Horsepower#Brake horsepower", }, ["Cal/d"] = { name1 = "large calorie per day", name2 = "large calories per day", symbol = "Cal/d", utype = "power", scale = 0.048425925925925928, default = "kJ/d", link = "Calorie", }, ["Cal/h"] = { name1 = "large calorie per hour", name2 = "large calories per hour", symbol = "Cal/h", utype = "power", scale = 1.1622222222222223, default = "kJ/h", link = "Calorie", }, ["cal/h"] = { name1 = "calorie per hour", name2 = "calories per hour", symbol = "cal/h", utype = "power", scale = 0.0011622222222222223, default = "W", link = "Calorie", }, ["CV"] = { name1 = "metric horsepower", name2 = "metric horsepower", symbol = "CV", utype = "power", scale = 735.49875, default = "kW", }, ["hk"] = { name1 = "metric horsepower", name2 = "metric horsepower", symbol = "hk", utype = "power", scale = 735.49875, default = "kW", }, ["hp"] = { name1 = "horsepower", name2 = "horsepower", symbol = "hp", utype = "power", scale = 745.69987158227022, default = "kW", }, ["hp-electric"] = { name1 = "electric horsepower", name2 = "electric horsepower", symbol = "hp", utype = "power", scale = 746, default = "kW", link = "Horsepower#Electrical horsepower", }, ["hp-electrical"] = { name1 = "electrical horsepower", name2 = "electrical horsepower", symbol = "hp", utype = "power", scale = 746, default = "kW", link = "Horsepower#Electrical horsepower", }, ["hp-metric"] = { name1 = "metric horsepower", name2 = "metric horsepower", symbol = "hp", utype = "power", scale = 735.49875, default = "kW", }, ["ihp"] = { name1 = "indicated horsepower", name2 = "indicated horsepower", symbol = "ihp", utype = "power", scale = 745.69987158227022, default = "kW", link = "Horsepower#Indicated horsepower", }, ["kcal/h"] = { name1 = "kilocalorie per hour", name2 = "kilocalories per hour", symbol = "kcal/h", utype = "power", scale = 1.1622222222222223, default = "kW", link = "Calorie", }, ["kJ/d"] = { name1 = "kilojoule per day", name2 = "kilojoules per day", symbol = "kJ/d", utype = "power", scale = 0.011574074074074073, default = "Cal/d", link = "Kilojoule", }, ["kJ/h"] = { name1 = "kilojoule per hour", name2 = "kilojoules per hour", symbol = "kJ/h", utype = "power", scale = 0.27777777777777779, default = "W", link = "Kilojoule", }, ["PS"] = { name1 = "metric horsepower", name2 = "metric horsepower", symbol = "PS", utype = "power", scale = 735.49875, default = "kW", }, ["shp"] = { name1 = "shaft horsepower", name2 = "shaft horsepower", symbol = "shp", utype = "power", scale = 745.69987158227022, default = "kW", link = "Horsepower#Shaft horsepower", }, ["W"] = { _name1 = "watt", _symbol = "W", utype = "power", scale = 1, prefixes = 1, default = "hp", link = "Watt", }, ["BTU/h"] = { per = { "BTU", "h" }, utype = "power", default = "W", }, ["Btu/h"] = { per = { "Btu", "h" }, utype = "power", default = "W", }, ["BHP"] = { target = "bhp", }, ["btu/h"] = { target = "BTU/h", }, ["HP"] = { target = "hp", }, ["Hp"] = { target = "hp", }, ["hp-mechanical"] = { target = "hp", }, ["IHP"] = { target = "ihp", }, ["SHP"] = { target = "shp", }, ["whp"] = { target = "hp", }, ["hp/lb"] = { name1 = "horsepower per pound", name2 = "horsepower per pound", symbol = "hp/lb", utype = "power per unit mass", scale = 1643.986806, default = "kW/kg", link = "Power-to-weight ratio", }, ["hp/LT"] = { name1 = "horsepower per long ton", name2 = "horsepower per long ton", symbol = "hp/LT", utype = "power per unit mass", scale = 0.73392268125000004, default = "kW/t", link = "Power-to-weight ratio", }, ["hp/ST"] = { name1 = "horsepower per short ton", name2 = "horsepower per short ton", symbol = "hp/ST", utype = "power per unit mass", scale = 0.821993403, default = "kW/t", link = "Power-to-weight ratio", }, ["hp/t"] = { name1 = "horsepower per tonne", name2 = "horsepower per tonne", symbol = "hp/t", utype = "power per unit mass", scale = 0.74569987158227022, default = "kW/t", link = "Power-to-weight ratio", }, ["kW/kg"] = { name1 = "kilowatt per kilogram", name2 = "kilowatts per kilogram", symbol = "kW/kg", utype = "power per unit mass", scale = 1000, default = "hp/lb", link = "Power-to-weight ratio", }, ["kW/t"] = { name1 = "kilowatt per tonne", name2 = "kilowatts per tonne", symbol = "kW/t", utype = "power per unit mass", scale = 1, default = "PS/t", link = "Power-to-weight ratio", }, ["PS/t"] = { name1 = "metric horsepower per tonne", name2 = "metric horsepower per tonne", symbol = "PS/t", utype = "power per unit mass", scale = 0.73549875, default = "kW/t", link = "Power-to-weight ratio", }, ["shp/lb"] = { name1 = "shaft horsepower per pound", name2 = "shaft horsepower per pound", symbol = "shp/lb", utype = "power per unit mass", scale = 1643.986806, default = "kW/kg", link = "Power-to-weight ratio", }, ["hp/tonne"] = { target = "hp/t", symbol = "hp/tonne", default = "kW/tonne", }, ["kW/tonne"] = { target = "kW/t", symbol = "kW/tonne", }, ["-lb/in2"] = { name1 = "pound per square inch", name2 = "pounds per square inch", symbol = "lb/in<sup>2</sup>", utype = "pressure", scale = 6894.7572931683608, default = "kPa kgf/cm2", }, ["atm"] = { name1 = "standard atmosphere", symbol = "atm", utype = "pressure", scale = 101325, default = "kPa", link = "Atmosphere (unit)", }, ["Ba"] = { name1 = "barye", symbol = "Ba", utype = "pressure", scale = 0.1, default = "Pa", }, ["bar"] = { symbol = "bar", utype = "pressure", scale = 100000, default = "kPa", link = "Bar (unit)", }, ["dbar"] = { name1 = "decibar", symbol = "dbar", utype = "pressure", scale = 10000, default = "kPa", link = "Bar (unit)", }, ["inHg"] = { name1 = "inch of mercury", name2 = "inches of mercury", symbol = "inHg", utype = "pressure", scale = 3386.388640341, default = "kPa", }, ["kBa"] = { name1 = "kilobarye", symbol = "kBa", utype = "pressure", scale = 100, default = "hPa", link = "Barye", }, ["kg-f/cm2"] = { name1 = "kilogram-force per square centimetre", name1_us = "kilogram-force per square centimeter", name2 = "kilograms-force per square centimetre", name2_us = "kilograms-force per square centimeter", symbol = "kg<sub>f</sub>/cm<sup>2</sup>", utype = "pressure", scale = 98066.5, default = "psi", link = "Kilogram-force", }, ["kg/cm2"] = { name1 = "kilogram per square centimetre", name1_us = "kilogram per square centimeter", name2 = "kilograms per square centimetre", name2_us = "kilograms per square centimeter", symbol = "kg/cm<sup>2</sup>", utype = "pressure", scale = 98066.5, default = "psi", link = "Kilogram-force", }, ["kgf/cm2"] = { name1 = "kilogram-force per square centimetre", name1_us = "kilogram-force per square centimeter", name2 = "kilograms-force per square centimetre", name2_us = "kilograms-force per square centimeter", symbol = "kgf/cm<sup>2</sup>", utype = "pressure", scale = 98066.5, default = "psi", link = "Kilogram-force", }, ["ksi"] = { name1 = "kilopound per square inch", name2 = "kilopounds per square inch", symbol = "ksi", utype = "pressure", scale = 6894757.2931683613, default = "MPa", link = "Pound per square inch", }, ["lbf/in2"] = { name1 = "pound-force per square inch", name2 = "pounds-force per square inch", symbol = "lbf/in<sup>2</sup>", utype = "pressure", scale = 6894.7572931683608, default = "kPa kgf/cm2", }, ["mb"] = { name1 = "millibar", symbol = "mb", utype = "pressure", scale = 100, default = "hPa", link = "Bar (unit)", }, ["mbar"] = { name1 = "millibar", symbol = "mbar", utype = "pressure", scale = 100, default = "hPa", link = "Bar (unit)", }, ["mmHg"] = { name1 = "millimetre of mercury", name1_us = "millimeter of mercury", name2 = "millimetres of mercury", name2_us = "millimeters of mercury", symbol = "mmHg", utype = "pressure", scale = 133.322387415, default = "kPa", }, ["Pa"] = { _name1 = "pascal", _symbol = "Pa", utype = "pressure", scale = 1, prefixes = 1, default = "psi", link = "Pascal (unit)", }, ["psf"] = { name1 = "pound per square foot", name2 = "pounds per square foot", symbol = "psf", utype = "pressure", scale = 47.880258980335839, default = "kPa", link = "Pound per square inch", }, ["psi"] = { name1 = "pound per square inch", name2 = "pounds per square inch", symbol = "psi", utype = "pressure", scale = 6894.7572931683608, default = "kPa", }, ["Torr"] = { name1 = "torr", symbol = "Torr", utype = "pressure", scale = 133.32236842105263, default = "kPa", }, ["N/cm2"] = { per = { "N", "cm2" }, utype = "pressure", default = "psi", }, ["N/m2"] = { per = { "N", "m2" }, utype = "pressure", default = "psi", }, ["g/cm2"] = { per = { "g", "cm2" }, utype = "pressure", default = "lb/sqft", multiplier= 9.80665, }, ["g/m2"] = { per = { "g", "m2" }, utype = "pressure", default = "lb/sqft", multiplier= 9.80665, }, ["kg/ha"] = { per = { "kg", "ha" }, utype = "pressure", default = "lb/acre", multiplier= 9.80665, }, ["kg/m2"] = { per = { "kg", "m2" }, utype = "pressure", default = "lb/sqft", multiplier= 9.80665, }, ["lb/1000sqft"] = { per = { "lb", "1000sqft" }, utype = "pressure", default = "g/m2", multiplier= 9.80665, }, ["lb/acre"] = { per = { "lb", "acre" }, utype = "pressure", default = "kg/ha", multiplier= 9.80665, }, ["lb/sqft"] = { per = { "lb", "sqft" }, utype = "pressure", default = "kg/m2", multiplier= 9.80665, }, ["lb/sqyd"] = { per = { "lb", "sqyd" }, utype = "pressure", default = "kg/m2", multiplier= 9.80665, }, ["LT/acre"] = { per = { "LT", "acre" }, utype = "pressure", default = "t/ha", multiplier= 9.80665, }, ["MT/ha"] = { per = { "MT", "ha" }, utype = "pressure", default = "LT/acre ST/acre", multiplier= 9.80665, }, ["oz/sqft"] = { per = { "oz", "sqft" }, utype = "pressure", default = "g/m2", multiplier= 9.80665, }, ["oz/sqyd"] = { per = { "oz", "sqyd" }, utype = "pressure", default = "g/m2", multiplier= 9.80665, }, ["ST/acre"] = { per = { "ST", "acre" }, utype = "pressure", default = "t/ha", multiplier= 9.80665, }, ["t/ha"] = { per = { "t", "ha" }, utype = "pressure", default = "LT/acre ST/acre", multiplier= 9.80665, }, ["tonne/acre"] = { per = { "tonne", "acre" }, utype = "pressure", default = "tonne/ha", multiplier= 9.80665, }, ["tonne/ha"] = { per = { "tonne", "ha" }, utype = "pressure", default = "tonne/acre", multiplier= 9.80665, }, ["kgfpsqcm"] = { target = "kgf/cm2", }, ["kgpsqcm"] = { target = "kg/cm2", }, ["kN/m2"] = { target = "kPa", }, ["lb/in2"] = { target = "lbf/in2", }, ["torr"] = { target = "Torr", }, ["Bq"] = { _name1 = "becquerel", _symbol = "Bq", utype = "radioactivity", scale = 1, prefixes = 1, default = "pCi", link = "Becquerel", }, ["Ci"] = { _name1 = "curie", _symbol = "Ci", utype = "radioactivity", scale = 3.7e10, prefixes = 1, default = "GBq", link = "Curie (unit)", }, ["Rd"] = { _name1 = "rutherford", _symbol = "Rd", utype = "radioactivity", scale = 1e6, prefixes = 1, default = "MBq", link = "Rutherford (unit)", }, ["cm/h"] = { name1 = "centimetre per hour", name1_us = "centimeter per hour", name2 = "centimetres per hour", name2_us = "centimeters per hour", symbol = "cm/h", utype = "speed", scale = 2.7777777777777775e-6, default = "in/h", link = "Metre per second", }, ["cm/s"] = { name1 = "centimetre per second", name1_us = "centimeter per second", name2 = "centimetres per second", name2_us = "centimeters per second", symbol = "cm/s", utype = "speed", scale = 0.01, default = "in/s", link = "Metre per second", }, ["cm/year"] = { name1 = "centimetre per year", name1_us = "centimeter per year", name2 = "centimetres per year", name2_us = "centimeters per year", symbol = "cm/year", utype = "speed", scale = 3.168873850681143e-10, default = "in/year", link = "Orders of magnitude (speed)", }, ["foot/s"] = { name1 = "foot per second", name2 = "foot per second", symbol = "ft/s", utype = "speed", scale = 0.3048, default = "m/s", }, ["ft/min"] = { name1 = "foot per minute", name2 = "feet per minute", symbol = "ft/min", utype = "speed", scale = 0.00508, default = "m/min", link = "Feet per second", }, ["ft/s"] = { name1 = "foot per second", name2 = "feet per second", symbol = "ft/s", utype = "speed", scale = 0.3048, default = "m/s", link = "Feet per second", }, ["furlong per fortnight"] = { name2 = "furlongs per fortnight", symbol = "furlong per fortnight", usename = 1, utype = "speed", scale = 0.00016630952380952381, default = "km/h mph", link = "FFF system", }, ["in/h"] = { name1 = "inch per hour", name2 = "inches per hour", symbol = "in/h", utype = "speed", scale = 7.0555555555555559e-6, default = "cm/h", link = "Inch", }, ["in/s"] = { name1 = "inch per second", name2 = "inches per second", symbol = "in/s", utype = "speed", scale = 0.0254, default = "cm/s", link = "Inch", }, ["in/year"] = { name1 = "inch per year", name2 = "inches per year", symbol = "in/year", utype = "speed", scale = 8.0489395807301024e-10, default = "cm/year", link = "Orders of magnitude (speed)", }, ["isp"] = { name1 = "second", symbol = "s", utype = "speed", scale = 9.80665, default = "km/s", link = "Specific impulse", }, ["km/d"] = { name1 = "kilometre per day", name1_us = "kilometer per day", name2 = "kilometres per day", name2_us = "kilometers per day", symbol = "km/d", utype = "speed", scale = 1.1574074074074074e-2, default = "mi/d", link = "Orders of magnitude (speed)", }, ["km/h"] = { name1 = "kilometre per hour", name1_us = "kilometer per hour", name2 = "kilometres per hour", name2_us = "kilometers per hour", symbol = "km/h", utype = "speed", scale = 0.27777777777777779, default = "mph", link = "Kilometres per hour", }, ["km/s"] = { name1 = "kilometre per second", name1_us = "kilometer per second", name2 = "kilometres per second", name2_us = "kilometers per second", symbol = "km/s", utype = "speed", scale = 1000, default = "mi/s", link = "Metre per second", }, ["kn"] = { name1 = "knot", symbol = "kn", utype = "speed", scale = 0.51444444444444448, default = "km/h mph", link = "Knot (unit)", }, ["kNs/kg"] = { name2 = "kN&#8209;s/kg", symbol = "kN&#8209;s/kg", utype = "speed", scale = 1000, default = "isp", link = "Specific impulse", }, ["m/min"] = { name1 = "metre per minute", name1_us = "meter per minute", name2 = "metres per minute", name2_us = "meters per minute", symbol = "m/min", utype = "speed", scale = 0.016666666666666666, default = "ft/min", link = "Metre per second", }, ["m/s"] = { name1 = "metre per second", name1_us = "meter per second", name2 = "metres per second", name2_us = "meters per second", symbol = "m/s", utype = "speed", scale = 1, default = "ft/s", }, ["Mach"] = { name2 = "Mach", symbol = "Mach", utype = "speed", builtin = "mach", scale = 0, iscomplex= true, default = "km/h mph", link = "Mach number", }, ["mi/d"] = { name1 = "mile per day", name2 = "miles per day", symbol = "mi/d", utype = "speed", scale = 1.8626666666666667e-2, default = "km/d", link = "Orders of magnitude (speed)", }, ["mi/s"] = { name1 = "mile per second", name2 = "miles per second", symbol = "mi/s", utype = "speed", scale = 1609.344, default = "km/s", link = "Mile", }, ["mm/h"] = { name1 = "millimetre per hour", name1_us = "millimeter per hour", name2 = "millimetres per hour", name2_us = "millimeters per hour", symbol = "mm/h", utype = "speed", scale = 2.7777777777777781e-7, default = "in/h", link = "Metre per second", }, ["mph"] = { name1 = "mile per hour", name2 = "miles per hour", symbol = "mph", utype = "speed", scale = 0.44704, default = "km/h", link = "Miles per hour", }, ["Ns/kg"] = { name2 = "N&#8209;s/kg", symbol = "N&#8209;s/kg", utype = "speed", scale = 1, default = "isp", link = "Specific impulse", }, ["si tsfc"] = { name2 = "g/(kN⋅s)", symbol = "g/(kN⋅s)", utype = "speed", scale = 9.9999628621379242e-7, invert = -1, iscomplex= true, default = "tsfc", link = "Thrust specific fuel consumption", }, ["tsfc"] = { name2 = "lb/(lbf⋅h)", symbol = "lb/(lbf⋅h)", utype = "speed", scale = 2.832545036049801e-5, invert = -1, iscomplex= true, default = "si tsfc", link = "Thrust specific fuel consumption", }, ["cm/y"] = { target = "cm/year", }, ["cm/yr"] = { target = "cm/year", }, ["in/y"] = { target = "in/year", }, ["in/yr"] = { target = "in/year", }, ["knot"] = { target = "kn", }, ["knots"] = { target = "kn", }, ["kph"] = { target = "km/h", }, ["mi/h"] = { target = "mph", }, ["mm/s"] = { per = { "mm", "s" }, utype = "speed", default = "in/s", link = "Metre per second", }, ["C"] = { name1 = "degree Celsius", name2 = "degrees Celsius", symbol = "°C", usesymbol= 1, utype = "temperature", scale = 1, offset = -273.15, iscomplex= true, istemperature= true, default = "F", link = "Celsius", }, ["F"] = { name1 = "degree Fahrenheit", name2 = "degrees Fahrenheit", symbol = "°F", usesymbol= 1, utype = "temperature", scale = 0.55555555555555558, offset = 32-273.15*(9/5), iscomplex= true, istemperature= true, default = "C", link = "Fahrenheit", }, ["K"] = { _name1 = "kelvin", _symbol = "K", usesymbol= 1, utype = "temperature", scale = 1, offset = 0, iscomplex= true, istemperature= true, prefixes = 1, default = "C F", link = "Kelvin", }, ["keVT"] = { name1 = "kiloelectronvolt", symbol = "keV", utype = "temperature", scale = 11.604505e6, offset = 0, iscomplex= true, default = "MK", link = "Electronvolt", }, ["R"] = { name1 = "degree Rankine", name2 = "degrees Rankine", symbol = "°R", usesymbol= 1, utype = "temperature", scale = 0.55555555555555558, offset = 0, iscomplex= true, istemperature= true, default = "K F C", link = "Rankine scale", }, ["Celsius"] = { target = "C", }, ["°C"] = { target = "C", }, ["°F"] = { target = "F", }, ["°R"] = { target = "R", }, ["C-change"] = { name1 = "degree Celsius change", name2 = "degrees Celsius change", symbol = "°C", usesymbol= 1, utype = "temperature change", scale = 1, default = "F-change", link = "Celsius", }, ["F-change"] = { name1 = "degree Fahrenheit change", name2 = "degrees Fahrenheit change", symbol = "°F", usesymbol= 1, utype = "temperature change", scale = 0.55555555555555558, default = "C-change", link = "Fahrenheit", }, ["K-change"] = { name1 = "kelvin change", name2 = "kelvins change", symbol = "K", usesymbol= 1, utype = "temperature change", scale = 1, default = "F-change", link = "Kelvin", }, ["°C-change"] = { target = "C-change", }, ["°F-change"] = { target = "F-change", }, ["century"] = { name1 = "century", name2 = "centuries", symbol = "ha", utype = "time", scale = 3155760000, default = "Gs", }, ["d"] = { name1 = "day", symbol = "d", utype = "time", scale = 86400, default = "ks", }, ["decade"] = { name1 = "decade", symbol = "daa", utype = "time", scale = 315576000, default = "Ms", }, ["dog year"] = { name1 = "dog year", symbol = "dog yr", utype = "time", scale = 220903200, default = "years", link = "List of unusual units of measurement#Dog year", }, ["fortnight"] = { symbol = "fortnight", usename = 1, utype = "time", scale = 1209600, default = "week", }, ["h"] = { name1 = "hour", symbol = "h", utype = "time", scale = 3600, default = "ks", }, ["long billion year"] = { name1 = "billion years", name2 = "billion years", symbol = "Ta", utype = "time", scale = 31557600000000000000, default = "Es", link = "Annum", }, ["millennium"] = { name1 = "millennium", name2 = "millennia", symbol = "ka", utype = "time", scale = 31557600000, default = "Gs", }, ["milliard year"] = { name1 = "milliard years", name2 = "milliard years", symbol = "Ga", utype = "time", scale = 31557600000000000, default = "Ps", link = "Annum", }, ["million year"] = { name1 = "million years", name2 = "million years", symbol = "Ma", utype = "time", scale = 31557600000000, default = "Ts", link = "Annum", }, ["min"] = { name1 = "minute", symbol = "min", utype = "time", scale = 60, default = "s", }, ["month"] = { symbol = "month", usename = 1, utype = "time", scale = 2629800, default = "Ms", }, ["months"] = { name1 = "month", symbol = "mo", utype = "time", scale = 2629800, default = "year", }, ["s"] = { _name1 = "second", _symbol = "s", utype = "time", scale = 1, prefixes = 1, default = "v < 7200 ! min ! h", link = "Second", }, ["short billion year"] = { name1 = "billion years", name2 = "billion years", symbol = "Ga", utype = "time", scale = 31557600000000000, default = "Ps", link = "Annum", }, ["short trillion year"] = { name1 = "trillion years", name2 = "trillion years", symbol = "Ta", utype = "time", scale = 31557600000000000000, default = "Es", link = "Annum", }, ["thousand million year"] = { name1 = "thousand million years", name2 = "thousand million years", symbol = "Ga", utype = "time", scale = 31557600000000000, default = "Ps", link = "Annum", }, ["wk"] = { symbol = "week", usename = 1, utype = "time", scale = 604800, default = "Ms", }, ["year"] = { name1 = "year", symbol = "a", utype = "time", scale = 31557600, default = "Ms", link = "Annum", }, ["years"] = { name1 = "year", symbol = "yr", utype = "time", scale = 31557600, default = "Ms", link = "Annum", }, ["byr"] = { target = "short billion year", }, ["day"] = { target = "d", }, ["days"] = { target = "d", }, ["dog yr"] = { target = "dog year", }, ["Gyr"] = { target = "thousand million year", }, ["hour"] = { target = "h", }, ["hours"] = { target = "h", }, ["kMyr"] = { target = "thousand million year", }, ["kmyr"] = { target = "thousand million year", }, ["kyr"] = { target = "millennium", }, ["long byr"] = { target = "long billion year", }, ["minute"] = { target = "min", }, ["minutes"] = { target = "min", }, ["mth"] = { target = "month", }, ["Myr"] = { target = "million year", }, ["myr"] = { target = "million year", }, ["sec"] = { target = "s", }, ["second"] = { target = "s", }, ["seconds"] = { target = "s", }, ["tmyr"] = { target = "thousand million year", }, ["tryr"] = { target = "short trillion year", }, ["tyr"] = { target = "millennium", }, ["week"] = { target = "wk", }, ["weeks"] = { target = "wk", }, ["yr"] = { target = "year", }, ["kg.m"] = { name1 = "kilogram metre", name1_us = "kilogram meter", symbol = "kg⋅m", utype = "torque", scale = 9.80665, default = "Nm lbft", link = "Kilogram metre (torque)", }, ["kgf.m"] = { name1 = "kilogram force-metre", name1_us = "kilogram force-meter", symbol = "kgf⋅m", utype = "torque", scale = 9.80665, default = "Nm lbfft", link = "Kilogram metre (torque)", }, ["kgm"] = { name1 = "kilogram metre", name1_us = "kilogram meter", symbol = "kg⋅m", utype = "torque", scale = 9.80665, default = "Nm lbfft", link = "Kilogram metre (torque)", }, ["kpm"] = { name1 = "kilopond metre", name1_us = "kilopond meter", symbol = "kp⋅m", utype = "torque", scale = 9.80665, default = "Nm lbft", link = "Kilogram metre (torque)", }, ["lb-fft"] = { name1 = "pound force-foot", name2 = "pound force-feet", symbol = "ft⋅lb<sub>f</sub>", utype = "torque", scale = 1.3558179483314004, default = "Nm", link = "Pound-foot (torque)", }, ["lb.ft"] = { name1 = "pound force-foot", name2 = "pound force-feet", symbol = "lb⋅ft", utype = "torque", scale = 1.3558179483314004, default = "Nm", link = "Pound-foot (torque)", }, ["lb.in"] = { name1 = "pound force-inch", symbol = "lb⋅in", utype = "torque", scale = 0.1129848290276167, default = "mN.m", link = "Pound-foot (torque)", }, ["lbfft"] = { name1 = "pound force-foot", name2 = "pound force-feet", symbol = "lbf⋅ft", utype = "torque", scale = 1.3558179483314004, default = "Nm", link = "Pound-foot (torque)", }, ["lbft"] = { name1 = "pound-foot", name2 = "pound-feet", symbol = "lb⋅ft", utype = "torque", scale = 1.3558179483314004, default = "Nm", link = "Pound-foot (torque)", }, ["m.kg-f"] = { name1 = "metre kilogram-force", name1_us = "meter kilogram-force", name2 = "metre kilograms-force", name2_us = "meter kilograms-force", symbol = "m⋅kg<sub>f</sub>", utype = "torque", scale = 9.80665, default = "Nm lbfft", link = "Kilogram metre (torque)", }, ["m.kgf"] = { name1 = "metre kilogram-force", name1_us = "meter kilogram-force", name2 = "metre kilograms-force", name2_us = "meter kilograms-force", symbol = "m⋅kgf", utype = "torque", scale = 9.80665, default = "Nm lbfft", link = "Kilogram metre (torque)", }, ["mN.m"] = { name1 = "millinewton-metre", name1_us = "millinewton-meter", symbol = "mN⋅m", utype = "torque", scale = 0.001, default = "lb.in", link = "Newton-metre", }, ["Nm"] = { _name1 = "newton-metre", _name1_us= "newton-meter", _symbol = "N⋅m", utype = "torque", alttype = "energy", scale = 1, prefixes = 1, default = "lbfft", link = "Newton-metre", }, ["kN/m"] = { per = { "kN", "-m-stiff" }, utype = "torque", default = "lbf/in", }, ["lbf/in"] = { per = { "lbf", "-in-stiff" }, utype = "torque", default = "kN/m", }, ["lb-f.ft"] = { target = "lb-fft", }, ["lbf.ft"] = { target = "lbfft", }, ["lbf·ft"] = { target = "lbfft", }, ["lb·ft"] = { target = "lb.ft", }, ["mkg-f"] = { target = "m.kg-f", }, ["mkgf"] = { target = "m.kgf", }, ["N.m"] = { target = "Nm", }, ["N·m"] = { target = "Nm", }, ["ton-mile"] = { symbol = "ton-mile", usename = 1, utype = "transportation", scale = 1.4599723182105602, default = "tkm", }, ["tkm"] = { name1 = "tonne-kilometre", name1_us = "tonne-kilometer", symbol = "tkm", utype = "transportation", scale = 1, default = "ton-mile", }, ["-12USoz(mL)serve"] = { name1_us = "12&nbsp;U.S.&nbsp;fl&nbsp;oz (355&nbsp;mL) serving", symbol = "12&nbsp;US&nbsp;fl&nbsp;oz (355&nbsp;mL) serving", sym_us = "12&nbsp;U.S.&nbsp;fl&nbsp;oz (355&nbsp;mL) serving", utype = "volume", scale = 0.00035488235475000004, default = "mL", link = "Beverage can#Standard sizes", }, ["-12USoz(ml)serve"] = { name1_us = "12&nbsp;U.S.&nbsp;fl&nbsp;oz (355&nbsp;ml) serving", symbol = "12&nbsp;US&nbsp;fl&nbsp;oz (355&nbsp;ml) serving", sym_us = "12&nbsp;U.S.&nbsp;fl&nbsp;oz (355&nbsp;ml) serving", utype = "volume", scale = 0.00035488235475000004, default = "ml", link = "Beverage can#Standard sizes", }, ["-12USozserve"] = { name1_us = "12&nbsp;U.S.&nbsp;fl&nbsp;oz serving", symbol = "12&nbsp;US&nbsp;fl&nbsp;oz serving", sym_us = "12&nbsp;U.S.&nbsp;fl&nbsp;oz serving", utype = "volume", scale = 0.00035488235475000004, default = "mL", link = "Beverage can#Standard sizes", }, ["acre-foot"] = { name1 = "acre-foot", name2 = "acre-foot", symbol = "acre⋅ft", utype = "volume", scale = 1233.48183754752, default = "m3", }, ["acre-ft"] = { name1 = "acre-foot", name2 = "acre-feet", symbol = "acre⋅ft", utype = "volume", scale = 1233.48183754752, default = "m3", }, ["AUtbsp"] = { name1 = "Australian tablespoon", symbol = "AU&nbsp;tbsp", utype = "volume", scale = 0.000020, default = "ml", }, ["Bcuft"] = { name1 = "billion cubic foot", name2 = "billion cubic feet", symbol = "billion cu&nbsp;ft", utype = "volume", scale = 28316846.592, default = "Gl", link = "Cubic foot", }, ["bdft"] = { name1 = "board foot", name2 = "board feet", symbol = "bd&nbsp;ft", utype = "volume", scale = 0.0023597372167, default = "m3", }, ["board feet"] = { name2 = "board feet", symbol = "board foot", usename = 1, utype = "volume", scale = 0.0023597372167, default = "m3", }, ["board foot"] = { name2 = "board foot", symbol = "board foot", usename = 1, utype = "volume", scale = 0.0023597372167, default = "m3", }, ["cc"] = { name1 = "cubic centimetre", name1_us = "cubic centimeter", symbol = "cc", utype = "volume", scale = 0.000001, default = "cuin", }, ["CID"] = { name1 = "cubic inch", name2 = "cubic inches", symbol = "cu&nbsp;in", utype = "volume", scale = 0.000016387064, default = "cc", link = "Cubic inch#Engine displacement", }, ["cord"] = { symbol = "cord", utype = "volume", scale = 3.624556363776, default = "m3", link = "Cord (unit)", }, ["cufoot"] = { name1 = "cubic foot", name2 = "cubic foot", symbol = "cu&nbsp;ft", utype = "volume", scale = 0.028316846592, default = "m3", }, ["cuft"] = { name1 = "cubic foot", name2 = "cubic feet", symbol = "cu&nbsp;ft", utype = "volume", scale = 0.028316846592, default = "m3", }, ["cuin"] = { name1 = "cubic inch", name2 = "cubic inches", symbol = "cu&nbsp;in", utype = "volume", scale = 0.000016387064, default = "cm3", }, ["cumi"] = { name1 = "cubic mile", symbol = "cu&nbsp;mi", utype = "volume", scale = 4168181825.440579584, default = "km3", }, ["cuyd"] = { name1 = "cubic yard", symbol = "cu&nbsp;yd", utype = "volume", scale = 0.764554857984, default = "m3", }, ["firkin"] = { symbol = "firkin", usename = 1, utype = "volume", scale = 0.04091481, default = "L impgal USgal", link = "Firkin (unit)", }, ["foot3"] = { target = "cufoot", }, ["Goilbbl"] = { name1 = "billion barrels", name2 = "billion barrels", symbol = "Gbbl", utype = "volume", scale = 158987294.928, default = "v * 1.58987294928 < 10 ! e6 ! e9 ! m3", link = "Barrel (unit)#Oil barrel", }, ["gr water"] = { name1 = "grains water", name2 = "grains water", symbol = "gr H<sub>2</sub>O", utype = "volume", scale = 0.00000006479891, default = "cm3", link = "Grain (unit)", }, ["grt"] = { name1 = "gross register ton", symbol = "grt", utype = "volume", scale = 2.8316846592, default = "m3", link = "Gross register tonnage", }, ["impbbl"] = { name1 = "imperial barrel", symbol = "imp&nbsp;bbl", utype = "volume", scale = 0.16365924, default = "L impgal USgal", link = "Barrel (unit)", }, ["impbsh"] = { name1 = "imperial bushel", symbol = "imp&nbsp;bsh", utype = "volume", scale = 0.03636872, default = "L impgal USdrygal", }, ["impbu"] = { name1 = "imperial bushel", symbol = "imp&nbsp;bu", utype = "volume", scale = 0.03636872, default = "m3", }, ["impgal"] = { name1 = "imperial gallon", symbol = "imp&nbsp;gal", utype = "volume", scale = 0.00454609, default = "L USgal", }, ["impgi"] = { name1 = "gill", symbol = "gi", utype = "volume", scale = 0.0001420653125, default = "ml USoz", link = "Gill (unit)", }, ["impkenning"] = { name1 = "imperial kenning", symbol = "kenning", utype = "volume", scale = 0.01818436, default = "L USdrygal", link = "Kenning (unit)", }, ["impoz"] = { name1 = "imperial fluid ounce", symbol = "imp&nbsp;fl&nbsp;oz", utype = "volume", scale = 0.0000284130625, default = "ml USoz", }, ["imppk"] = { name1 = "imperial peck", symbol = "pk", utype = "volume", scale = 0.00909218, default = "L USdrygal", link = "Peck", }, ["imppt"] = { name1 = "imperial pint", symbol = "imp&nbsp;pt", utype = "volume", scale = 0.00056826125, default = "L", }, ["impqt"] = { name1 = "imperial quart", symbol = "imp&nbsp;qt", utype = "volume", scale = 0.0011365225, default = "ml USoz", customary= 3, }, ["kilderkin"] = { symbol = "kilderkin", usename = 1, utype = "volume", scale = 0.08182962, default = "L impgal USgal", }, ["koilbbl"] = { name1 = "thousand barrels", name2 = "thousand barrels", symbol = "kbbl", utype = "volume", scale = 158.987294928, default = "v * 1.58987294928 < 10 ! ! e3 ! m3", link = "Barrel (unit)#Oil barrel", }, ["L"] = { _name1 = "litre", _name1_us= "liter", _symbol = "L", utype = "volume", scale = 0.001, prefixes = 1, default = "impgal USgal", link = "Litre", }, ["l"] = { _name1 = "litre", _name1_us= "liter", _symbol = "l", utype = "volume", scale = 0.001, prefixes = 1, default = "impgal USgal", link = "Litre", }, ["ll"] = { name1 = "litre", name1_us = "liter", symbol = "l", utype = "volume", scale = 0.001, default = "impgal USgal", }, ["m3"] = { _name1 = "cubic metre", _name1_us= "cubic meter", _symbol = "m<sup>3</sup>", prefix_position= 7, utype = "volume", scale = 1, prefixes = 3, default = "cuft", link = "Cubic metre", }, ["Mbbl"] = { name1 = "thousand barrels", name2 = "thousand barrels", symbol = "Mbbl", utype = "volume", scale = 158.987294928, default = "v * 1.58987294928 < 10 ! e3 ! ! m3", link = "Barrel (unit)#Oil barrel", }, ["MMoilbbl"] = { name1 = "million barrels", name2 = "million barrels", symbol = "MMbbl", utype = "volume", scale = 158987.294928, default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3", link = "Barrel (unit)#Oil barrel", }, ["Moilbbl"] = { name1 = "million barrels", name2 = "million barrels", symbol = "Mbbl", utype = "volume", scale = 158987.294928, default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3", link = "Barrel (unit)#Oil barrel", }, ["MTON"] = { name1 = "measurement ton", symbol = "MTON", utype = "volume", scale = 1.13267386368, default = "m3", }, ["MUSgal"] = { name1 = "million US gallons", name1_us = "million U.S. gallons", name2 = "million US gallons", name2_us = "million U.S. gallons", symbol = "million US&nbsp;gal", sym_us = "million U.S.&nbsp;gal", utype = "volume", scale = 3785.411784, default = "Ml", link = "US gallon", }, ["oilbbl"] = { name1 = "barrel", symbol = "bbl", utype = "volume", scale = 0.158987294928, default = "m3", link = "Barrel (unit)#Oil barrel", }, ["stere"] = { symbol = "stere", usename = 1, utype = "volume", scale = 1, default = "cuft", }, ["Toilbbl"] = { name1 = "trillion barrels", name2 = "trillion barrels", symbol = "Tbbl", utype = "volume", scale = 158987294928, default = "v * 1.58987294928 < 10 ! e9 ! e12 ! m3", link = "Barrel (unit)#Oil barrel", }, ["USbbl"] = { name1 = "US barrel", name1_us = "U.S. barrel", symbol = "US&nbsp;bbl", sym_us = "U.S.&nbsp;bbl", utype = "volume", scale = 0.119240471196, default = "L USgal impgal", link = "Barrel (unit)", }, ["USbeerbbl"] = { name1 = "US beer barrel", name1_us = "U.S. beer barrel", symbol = "US&nbsp;bbl", sym_us = "U.S.&nbsp;bbl", utype = "volume", scale = 0.117347765304, default = "L USgal impgal", link = "Barrel (unit)", }, ["USbsh"] = { name1 = "US bushel", name1_us = "U.S. bushel", symbol = "US&nbsp;bsh", sym_us = "U.S.&nbsp;bsh", utype = "volume", scale = 0.03523907016688, default = "L USdrygal impgal", link = "Bushel", }, ["USbu"] = { name1 = "US bushel", name1_us = "U.S. bushel", symbol = "US&nbsp;bu", sym_us = "U.S.&nbsp;bu", utype = "volume", scale = 0.03523907016688, default = "L USdrygal impgal", link = "Bushel", }, ["USdrybbl"] = { name1 = "US dry barrel", name1_us = "U.S. dry barrel", symbol = "US&nbsp;dry&nbsp;bbl", sym_us = "U.S.&nbsp;dry&nbsp;bbl", utype = "volume", scale = 0.11562819898508, default = "m3", link = "Barrel (unit)", }, ["USdrygal"] = { name1 = "US dry gallon", name1_us = "U.S. dry gallon", symbol = "US&nbsp;dry&nbsp;gal", sym_us = "U.S.&nbsp;dry&nbsp;gal", utype = "volume", scale = 0.00440488377086, default = "L", link = "Gallon", }, ["USdrypt"] = { name1 = "US dry pint", name1_us = "U.S. dry pint", symbol = "US&nbsp;dry&nbsp;pt", sym_us = "U.S.&nbsp;dry&nbsp;pt", utype = "volume", scale = 0.0005506104713575, default = "ml", link = "Pint", }, ["USdryqt"] = { name1 = "US dry quart", name1_us = "U.S. dry quart", symbol = "US&nbsp;dry&nbsp;qt", sym_us = "U.S.&nbsp;dry&nbsp;qt", utype = "volume", scale = 0.001101220942715, default = "ml", link = "Quart", }, ["USflgal"] = { name1 = "US gallon", name1_us = "U.S. gallon", symbol = "US fl gal", sym_us = "U.S.&nbsp;fl&nbsp;gal", utype = "volume", scale = 0.003785411784, default = "L impgal", link = "Gallon", }, ["USgal"] = { name1 = "US gallon", name1_us = "U.S. gallon", symbol = "US&nbsp;gal", sym_us = "U.S.&nbsp;gal", utype = "volume", scale = 0.003785411784, default = "L impgal", }, ["USgi"] = { name1 = "gill", symbol = "gi", utype = "volume", scale = 0.0001182941183, default = "ml impoz", link = "Gill (unit)", }, ["USkenning"] = { name1 = "US kenning", name1_us = "U.S. kenning", symbol = "US&nbsp;kenning", sym_us = "U.S.&nbsp;kenning", utype = "volume", scale = 0.01761953508344, default = "L impgal", link = "Kenning (unit)", }, ["USmin"] = { name1 = "US minim", name1_us = "U.S. minim", symbol = "US&nbsp;min", sym_us = "U.S.&nbsp;min", utype = "volume", scale = 0.000000061611519921875, default = "ml", link = "Minim (unit)", }, ["USoz"] = { name1 = "US fluid ounce", name1_us = "U.S. fluid ounce", symbol = "US&nbsp;fl&nbsp;oz", sym_us = "U.S.&nbsp;fl&nbsp;oz", utype = "volume", scale = 0.0000295735295625, default = "ml", }, ["USpk"] = { name1 = "US peck", name1_us = "U.S. peck", symbol = "US&nbsp;pk", sym_us = "U.S.&nbsp;pk", utype = "volume", scale = 0.00880976754172, default = "L impgal", link = "Peck", }, ["USpt"] = { name1 = "US pint", name1_us = "U.S. pint", symbol = "US&nbsp;pt", sym_us = "U.S.&nbsp;pt", utype = "volume", scale = 0.000473176473, default = "L imppt", link = "Pint", }, ["USqt"] = { name1 = "US quart", name1_us = "U.S. quart", symbol = "US&nbsp;qt", sym_us = "U.S.&nbsp;qt", utype = "volume", scale = 0.000946352946, default = "ml", link = "Quart", customary= 1, }, ["USquart"] = { name1 = "US quart", name1_us = "U.S. quart", symbol = "US&nbsp;qt", sym_us = "U.S.&nbsp;qt", utype = "volume", scale = 0.000946352946, default = "ml impoz", link = "Quart", }, ["UStbsp"] = { name1 = "US tablespoon", name1_us = "U.S. tablespoon", symbol = "US&nbsp;tbsp", sym_us = "U.S.&nbsp;tbsp", utype = "volume", scale = 1.4786764781250001e-5, default = "ml", }, ["winecase"] = { symbol = "case", usename = 1, utype = "volume", scale = 0.009, default = "L", link = "Case (goods)", }, ["*U.S.drygal"] = { target = "USdrygal", sp_us = true, customary= 2, }, ["*U.S.gal"] = { target = "USgal", sp_us = true, customary= 2, }, ["+USdrygal"] = { target = "USdrygal", customary= 1, }, ["+usfloz"] = { target = "USoz", link = "Fluid ounce", customary= 1, }, ["+USgal"] = { target = "USgal", customary= 1, }, ["+USoz"] = { target = "USoz", customary= 1, }, ["@impgal"] = { target = "impgal", link = "Gallon", customary= 3, }, ["acre feet"] = { target = "acre-ft", }, ["acre foot"] = { target = "acre-foot", }, ["acre ft"] = { target = "acre-ft", }, ["acre-feet"] = { target = "acre-ft", }, ["acre.foot"] = { target = "acre-foot", }, ["acre.ft"] = { target = "acre-ft", }, ["acre·ft"] = { target = "acre-ft", }, ["bushels"] = { target = "USbsh", }, ["cid"] = { target = "CID", }, ["ft3"] = { target = "cuft", }, ["gal"] = { target = "USgal", }, ["gallon"] = { shouldbe = "Use %{USgal%} for US gallons or %{impgal%} for imperial gallons (not %{gallon%})", }, ["gallons"] = { shouldbe = "Use %{USgal%} for US gallons or %{impgal%} for imperial gallons (not %{gallons%})", }, ["Gcuft"] = { target = "e9cuft", }, ["impfloz"] = { target = "impoz", }, ["Impgal"] = { target = "impgal", }, ["in3"] = { target = "cuin", symbol = "in<sup>3</sup>", }, ["hm³"] = { target = "hm3", }, ["kcuft"] = { target = "e3cuft", }, ["kcum"] = { target = "e3m3", }, ["km³"] = { target = "km3", }, ["liter"] = { target = "L", sp_us = true, }, ["liters"] = { target = "L", sp_us = true, }, ["litre"] = { target = "L", }, ["litres"] = { target = "L", }, ["Mcuft"] = { target = "e6cuft", }, ["Mcum"] = { target = "e6m3", }, ["Mft3"] = { target = "e6cuft", }, ["mi3"] = { target = "cumi", }, ["m³"] = { target = "m3", }, ["Pcuft"] = { target = "e15cuft", }, ["pt"] = { shouldbe = "Use %{USpt%} for US pints or %{imppt%} for imperial pints (not %{pt%})", }, ["qt"] = { shouldbe = "Use %{USqt%} for US quarts or %{impqt%} for imperial quarts (not %{qt%})", }, ["Tcuft"] = { target = "e12cuft", }, ["Tft3"] = { target = "e12cuft", }, ["U.S.bbl"] = { target = "USbbl", sp_us = true, default = "L U.S.gal impgal", }, ["U.S.beerbbl"] = { target = "USbeerbbl", sp_us = true, default = "L U.S.gal impgal", }, ["U.S.bsh"] = { target = "USbsh", sp_us = true, default = "L U.S.drygal impgal", }, ["U.S.bu"] = { target = "USbu", sp_us = true, default = "L U.S.drygal impgal", }, ["U.S.drybbl"] = { target = "USdrybbl", sp_us = true, }, ["U.S.drygal"] = { target = "USdrygal", sp_us = true, }, ["U.S.drypt"] = { target = "USdrypt", sp_us = true, }, ["U.S.dryqt"] = { target = "USdryqt", sp_us = true, }, ["U.S.flgal"] = { target = "USflgal", sp_us = true, }, ["U.S.floz"] = { target = "USoz", sp_us = true, }, ["U.S.gal"] = { target = "USgal", sp_us = true, link = "U.S. gallon", }, ["u.s.gal"] = { target = "USgal", sp_us = true, link = "U.S. gallon", }, ["U.S.gi"] = { target = "USgi", sp_us = true, }, ["U.S.kenning"] = { target = "USkenning", sp_us = true, }, ["U.S.oz"] = { target = "USoz", sp_us = true, }, ["U.S.pk"] = { target = "USpk", sp_us = true, }, ["U.S.pt"] = { target = "USpt", sp_us = true, }, ["U.S.qt"] = { target = "USqt", sp_us = true, default = "L impqt", customary= 2, }, ["usbbl"] = { target = "USbbl", }, ["usbeerbbl"] = { target = "USbeerbbl", }, ["usbsh"] = { target = "USbsh", }, ["usbu"] = { target = "USbu", }, ["usdrybbl"] = { target = "USdrybbl", }, ["usdrygal"] = { target = "USdrygal", }, ["usdrypt"] = { target = "USdrypt", }, ["usdryqt"] = { target = "USdryqt", }, ["USfloz"] = { target = "USoz", }, ["usfloz"] = { target = "USoz", }, ["USGAL"] = { target = "USgal", }, ["usgal"] = { target = "USgal", }, ["usgi"] = { target = "USgi", }, ["uskenning"] = { target = "USkenning", }, ["usoz"] = { target = "USoz", }, ["uspk"] = { target = "USpk", }, ["uspt"] = { target = "USpt", }, ["usqt"] = { target = "USqt", }, ["yd3"] = { target = "cuyd", }, ["cuft/sqmi"] = { per = { "cuft", "sqmi" }, utype = "volume per unit area", default = "m3/km2", }, ["m3/ha"] = { name1 = "cubic metre per hectare", name1_us = "cubic meter per hectare", name2 = "cubic metres per hectare", name2_us = "cubic meters per hectare", symbol = "m<sup>3</sup>/ha", utype = "volume per unit area", scale = 0.0001, default = "USbu/acre", link = "Hectare", }, ["m3/km2"] = { per = { "m3", "km2" }, utype = "volume per unit area", default = "cuft/sqmi", }, ["U.S.gal/acre"] = { per = { "U.S.gal", "acre" }, utype = "volume per unit area", default = "m3/km2", }, ["USbu/acre"] = { name2 = "US bushels per acre", symbol = "US bushel per acre", usename = 1, utype = "volume per unit area", scale = 8.7077638761350888e-6, default = "m3/ha", link = "Bushel", }, ["USgal/acre"] = { per = { "USgal", "acre" }, utype = "volume per unit area", default = "m3/km2", }, ["cuyd/mi"] = { per = { "cuyd", "mi" }, utype = "volume per unit length", default = "m3/km", }, ["m3/km"] = { per = { "m3", "km" }, utype = "volume per unit length", default = "cuyd/mi", }, ["mich"] = { combination= { "ch", "mi" }, multiple = { 80 }, utype = "length", }, ["michlk"] = { combination= { "chlk", "mi" }, multiple = { 80 }, utype = "length", }, ["michainlk"] = { combination= { "chainlk", "mi" }, multiple = { 80 }, utype = "length", }, ["miyd"] = { combination= { "yd", "mi" }, multiple = { 1760 }, utype = "length", }, ["miydftin"] = { combination= { "in", "ft", "yd", "mi" }, multiple = { 12, 3, 1760 }, utype = "length", }, ["mift"] = { combination= { "ft", "mi" }, multiple = { 5280 }, utype = "length", }, ["ydftin"] = { combination= { "in", "ft", "yd" }, multiple = { 12, 3 }, utype = "length", }, ["ydft"] = { combination= { "ft", "yd" }, multiple = { 3 }, utype = "length", }, ["ftin"] = { combination= { "in", "ft" }, multiple = { 12 }, utype = "length", }, ["footin"] = { combination= { "in", "foot" }, multiple = { 12 }, utype = "length", }, ["handin"] = { combination= { "in", "hand" }, multiple = { 4 }, utype = "length", }, ["lboz"] = { combination= { "oz", "lb" }, multiple = { 16 }, utype = "mass", }, ["stlb"] = { combination= { "lb", "st" }, multiple = { 14 }, utype = "mass", }, ["stlboz"] = { combination= { "oz", "lb", "st" }, multiple = { 16, 14 }, utype = "mass", }, ["st and lb"] = { combination= { "lb", "st" }, multiple = { 14 }, utype = "mass", }, ["GN LTf"] = { combination= { "GN", "-LTf" }, utype = "force", }, ["GN LTf STf"] = { combination= { "GN", "-LTf", "-STf" }, utype = "force", }, ["GN STf"] = { combination= { "GN", "-STf" }, utype = "force", }, ["GN STf LTf"] = { combination= { "GN", "-STf", "-LTf" }, utype = "force", }, ["kN LTf"] = { combination= { "kN", "-LTf" }, utype = "force", }, ["kN LTf STf"] = { combination= { "kN", "-LTf", "-STf" }, utype = "force", }, ["kN STf"] = { combination= { "kN", "-STf" }, utype = "force", }, ["kN STf LTf"] = { combination= { "kN", "-STf", "-LTf" }, utype = "force", }, ["LTf STf"] = { combination= { "-LTf", "-STf" }, utype = "force", }, ["MN LTf"] = { combination= { "MN", "-LTf" }, utype = "force", }, ["MN LTf STf"] = { combination= { "MN", "-LTf", "-STf" }, utype = "force", }, ["MN STf"] = { combination= { "MN", "-STf" }, utype = "force", }, ["MN STf LTf"] = { combination= { "MN", "-STf", "-LTf" }, utype = "force", }, ["STf LTf"] = { combination= { "-STf", "-LTf" }, utype = "force", }, ["L/100 km mpgimp"] = { combination= { "L/100 km", "mpgimp" }, utype = "fuel efficiency", }, ["l/100 km mpgimp"] = { combination= { "l/100 km", "mpgimp" }, utype = "fuel efficiency", }, ["L/100 km mpgUS"] = { combination= { "L/100 km", "mpgus" }, utype = "fuel efficiency", }, ["L/100 km mpgus"] = { combination= { "L/100 km", "mpgus" }, utype = "fuel efficiency", }, ["l/100 km mpgus"] = { combination= { "l/100 km", "mpgus" }, utype = "fuel efficiency", }, ["mpgimp L/100 km"] = { combination= { "mpgimp", "L/100 km" }, utype = "fuel efficiency", }, ["LT ST t"] = { combination= { "lt", "-ST", "t" }, utype = "mass", }, ["LT t ST"] = { combination= { "lt", "t", "-ST" }, utype = "mass", }, ["ST LT t"] = { combination= { "-ST", "lt", "t" }, utype = "mass", }, ["ST t LT"] = { combination= { "-ST", "t", "lt" }, utype = "mass", }, ["t LT ST"] = { combination= { "t", "lt", "-ST" }, utype = "mass", }, ["ton"] = { combination= { "LT", "ST" }, utype = "mass", }, ["kPa kg/cm2"] = { combination= { "kPa", "kgf/cm2" }, utype = "pressure", }, ["kPa lb/in2"] = { combination= { "kPa", "-lb/in2" }, utype = "pressure", }, ["floz"] = { combination= { "impoz", "USoz" }, utype = "volume", }, } --------------------------------------------------------------------------- -- Do not change the data in this table because it is created by running -- -- a script that reads the wikitext from a wiki page (see note above). -- --------------------------------------------------------------------------- local default_exceptions = { -- Prefixed units with a default different from that of the base unit. -- Each key item is a prefixed symbol (unitcode for engineering notation). ["cm<sup>2</sup>"] = "sqin", ["dm<sup>2</sup>"] = "sqin", ["e3acre"] = "km2", ["e3m2"] = "e6sqft", ["e6acre"] = "km2", ["e6ha"] = "e6acre", ["e6km2"] = "e6sqmi", ["e6m2"] = "e6sqft", ["e6sqft"] = "v * 9.290304 < 100 ! e3 ! e6 ! m2", ["e6sqmi"] = "e6km2", ["hm<sup>2</sup>"] = "acre", ["km<sup>2</sup>"] = "sqmi", ["mm<sup>2</sup>"] = "sqin", ["aJ"] = "eV", ["e3BTU"] = "MJ", ["e6BTU"] = "GJ", ["EJ"] = "kWh", ["fJ"] = "keV", ["GJ"] = "kWh", ["MJ"] = "kWh", ["PJ"] = "kWh", ["pJ"] = "MeV", ["TJ"] = "kWh", ["YJ"] = "kWh", ["yJ"] = "μeV", ["ZJ"] = "kWh", ["zJ"] = "meV", ["e12cuft/a"] = "v * 2.8316846592 < 100 ! e9 ! e12 ! m3/a", ["e12cuft/d"] = "v * 2.8316846592 < 100 ! e9 ! e12 ! m3/d", ["e12m3/a"] = "Tcuft/a", ["e12m3/d"] = "Tcuft/d", ["e3cuft/a"] = "v * 2.8316846592 < 100 ! ! e3 ! m3/a", ["e3cuft/d"] = "v * 2.8316846592 < 100 ! ! e3 ! m3/d", ["e3cuft/s"] = "v * 2.8316846592 < 100 ! ! e3 ! m3/s", ["e3m3/a"] = "v < 28.316846592 ! k ! M ! cuft/a", ["e3m3/d"] = "v < 28.316846592 ! k ! M ! cuft/d", ["e3m3/s"] = "v < 28.316846592 ! k ! M ! cuft/s", ["e3USgal/a"] = "v * 3.785411784 < 1000 ! ! e3 ! m3/a", ["e6cuft/a"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3/a", ["e6cuft/d"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3/d", ["e6cuft/s"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3/s", ["e6m3/a"] = "v < 28.316846592 ! M ! G ! cuft/a", ["e6m3/d"] = "v < 28.316846592 ! M ! G ! cuft/d", ["e6m3/s"] = "v < 28.316846592 ! e6 ! e9 ! cuft/s", ["e6USgal/a"] = "v * 3.785411784 < 1000 ! e3 ! e6 ! m3/a", ["e9cuft/a"] = "m3/a", ["e9cuft/d"] = "v * 2.8316846592 < 100 ! e6 ! e9 ! m3/d", ["e9m3/a"] = "v < 28.316846592 ! G ! T ! cuft/a", ["e9m3/d"] = "v < 28.316846592 ! G ! T ! cuft/d", ["e9m3/s"] = "v < 28.316846592 ! e9 ! e12 ! cuft/s", ["e9USgal/a"] = "v * 3.785411784 < 1000 ! e6 ! e9 ! m3/a", ["e9USgal/s"] = "v * 3.785411784 < 1000 ! e6 ! e9 ! m3/s", ["nN"] = "gr-f", ["μN"] = "gr-f", ["mN"] = "oz-f", ["am"] = "in", ["cm"] = "in", ["dam"] = "ft", ["dm"] = "in", ["e12km"] = "e12mi", ["e12mi"] = "e12km", ["e3AU"] = "ly", ["e3km"] = "e3mi", ["e3mi"] = "e3km", ["e6km"] = "e6mi", ["e6mi"] = "e6km", ["e9km"] = "AU", ["e9mi"] = "e9km", ["Em"] = "mi", ["fm"] = "in", ["Gm"] = "mi", ["hm"] = "ft", ["km"] = "mi", ["mm"] = "in", ["Mm"] = "mi", ["nm"] = "in", ["Pm"] = "mi", ["pm"] = "in", ["Tm"] = "mi", ["Ym"] = "mi", ["ym"] = "in", ["Zm"] = "mi", ["zm"] = "in", ["μm"] = "in", ["e12lb"] = "v * 4.5359237 < 10 ! Mt ! Gt", ["e3lb"] = "v * 4.5359237 < 10 ! kg ! t", ["e3ozt"] = "v * 0.311034768 < 10 ! kg ! t", ["e3t"] = "LT ST", ["e6carat"] = "t", ["e6lb"] = "v * 4.5359237 < 10 ! t ! kilotonne", ["e6ozt"] = "lb kg", ["e6ST"] = "Mt", ["e6t"] = "LT ST", ["e9lb"] = "v * 4.5359237 < 10 ! kilotonne ! Mt", ["e9t"] = "LT ST", ["Gg"] = "lb", ["kg"] = "lb", ["mg"] = "gr", ["Mg"] = "LT ST", ["ng"] = "gr", ["μg"] = "gr", ["mBq"] = "fCi", ["kBq"] = "nCi", ["MBq"] = "μCi", ["GBq"] = "mCi", ["TBq"] = "Ci", ["PBq"] = "kCi", ["EBq"] = "kCi", ["fCi"] = "mBq", ["pCi"] = "Bq", ["nCi"] = "Bq", ["μCi"] = "kBq", ["mCi"] = "MBq", ["kCi"] = "TBq", ["MCi"] = "PBq", ["ns"] = "μs", ["μs"] = "ms", ["ms"] = "s", ["ks"] = "h", ["Ms"] = "week", ["Gs"] = "decade", ["Ts"] = "millennium", ["Ps"] = "million year", ["Es"] = "thousand million year", ["MK"] = "keVT", ["cL"] = "impoz usoz", ["cl"] = "impoz usoz", ["cm<sup>3</sup>"] = "cuin", ["dL"] = "impoz usoz", ["dl"] = "impoz usoz", ["mm<sup>3</sup>"] = "cuin", ["dm<sup>3</sup>"] = "cuin", ["e12cuft"] = "v * 2.8316846592 < 100 ! e9 ! e12 ! m3", ["e12impgal"] = "v * 4.54609 < 1000 ! T ! P ! l", ["e12m3"] = "v < 28.316846592 ! T ! P ! cuft", ["e12U.S.gal"] = "v * 3.785411784 < 1000 ! T ! P ! l", ["e12USgal"] = "v * 3.785411784 < 1000 ! T ! P ! l", ["e15cuft"] = "v * 2.8316846592 < 100 ! e12 ! e15 ! m3", ["e15m3"] = "Pcuft", ["e3bdft"] = "v * 0.23597372167 < 100 ! e3 ! e6 ! m3", ["e3cuft"] = "v * 2.8316846592 < 100 ! ! e3 ! m3", ["e3impgal"] = "v * 4.54609 < 1000 ! k ! M ! l", ["e3m3"] = "v < 28.316846592 ! k ! M ! cuft", ["e3U.S.gal"] = "v * 3.785411784 < 1000 ! k ! M ! l", ["e3USgal"] = "v * 3.785411784 < 1000 ! k ! M ! l", ["e6bdft"] = "v * 0.23597372167 < 100 ! e3 ! e6 ! m3", ["e6cuft"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3", ["e6cuyd"] = "v * 7.64554857984 < 10 ! e3 ! e6 ! m3", ["e6impgal"] = "v * 4.54609 < 1000 ! M ! G ! l", ["e6L"] = "USgal", ["e6m3"] = "v < 28.316846592 ! M ! G ! cuft", ["e6U.S.gal"] = "v * 3.785411784 < 1000 ! M ! G ! l", ["e6USgal"] = "v * 3.785411784 < 1000 ! M ! G ! l", ["e9bdft"] = "v * 0.23597372167 < 100 ! e6 ! e9 ! m3", ["e9cuft"] = "v * 2.8316846592 < 100 ! e6 ! e9 ! m3", ["e9impgal"] = "v * 4.54609 < 1000 ! G ! T ! l", ["e9m3"] = "v < 28.316846592 ! G ! T ! cuft", ["e9U.S.gal"] = "v * 3.785411784 < 1000 ! G ! T ! l", ["e9USgal"] = "v * 3.785411784 < 1000 ! G ! T ! l", ["GL"] = "cuft", ["Gl"] = "cuft", ["kL"] = "cuft", ["kl"] = "cuft", ["km<sup>3</sup>"] = "cumi", ["mL"] = "impoz usoz", ["ml"] = "impoz usoz", ["Ml"] = "v < 28.316846592 ! e3 ! e6 ! cuft", ["ML"] = "v < 28.316846592 ! e3 ! e6 ! cuft", ["TL"] = "cumi", ["Tl"] = "cumi", ["μL"] = "cuin", ["μl"] = "cuin", } --------------------------------------------------------------------------- -- Do not change the data in this table because it is created by running -- -- a script that reads the wikitext from a wiki page (see note above). -- --------------------------------------------------------------------------- local link_exceptions = { -- Prefixed units with a linked article different from that of the base unit. -- Each key item is a prefixed symbol (not unitcode). ["mm<sup>2</sup>"] = "Square millimetre", ["cm<sup>2</sup>"] = "Square centimetre", ["dm<sup>2</sup>"] = "Square decimetre", ["km<sup>2</sup>"] = "Square kilometre", ["kJ"] = "Kilojoule", ["MJ"] = "Megajoule", ["GJ"] = "Gigajoule", ["TJ"] = "Terajoule", ["fm"] = "Femtometre", ["pm"] = "Picometre", ["nm"] = "Nanometre", ["μm"] = "Micrometre", ["mm"] = "Millimetre", ["cm"] = "Centimetre", ["dm"] = "Decimetre", ["dam"] = "Decametre", ["hm"] = "Hectometre", ["km"] = "Kilometre", ["Mm"] = "Megametre", ["Gm"] = "Gigametre", ["Tm"] = "Terametre", ["Pm"] = "Petametre", ["Em"] = "Exametre", ["Zm"] = "Zettametre", ["Ym"] = "Yottametre", ["μg"] = "Microgram", ["mg"] = "Milligram", ["kg"] = "Kilogram", ["Mg"] = "Tonne", ["yW"] = "Yoctowatt", ["zW"] = "Zeptowatt", ["aW"] = "Attowatt", ["fW"] = "Femtowatt", ["pW"] = "Picowatt", ["nW"] = "Nanowatt", ["μW"] = "Microwatt", ["mW"] = "Milliwatt", ["kW"] = "Kilowatt", ["MW"] = "Megawatt", ["GW"] = "Gigawatt", ["TW"] = "Terawatt", ["PW"] = "Petawatt", ["EW"] = "Exawatt", ["ZW"] = "Zettawatt", ["YW"] = "Yottawatt", ["as"] = "Attosecond", ["fs"] = "Femtosecond", ["ps"] = "Picosecond", ["ns"] = "Nanosecond", ["μs"] = "Microsecond", ["ms"] = "Millisecond", ["ks"] = "Kilosecond", ["Ms"] = "Megasecond", ["Gs"] = "Gigasecond", ["Ts"] = "Terasecond", ["Ps"] = "Petasecond", ["Es"] = "Exasecond", ["Zs"] = "Zettasecond", ["Ys"] = "Yottasecond", ["mm<sup>3</sup>"] = "Cubic millimetre", ["cm<sup>3</sup>"] = "Cubic centimetre", ["dm<sup>3</sup>"] = "Cubic decimetre", ["dam<sup>3</sup>"] = "Cubic decametre", ["km<sup>3</sup>"] = "Cubic kilometre", ["μL"] = "Microlitre", ["μl"] = "Microlitre", ["mL"] = "Millilitre", ["ml"] = "Millilitre", ["cL"] = "Centilitre", ["cl"] = "Centilitre", ["dL"] = "Decilitre", ["dl"] = "Decilitre", ["daL"] = "Decalitre", ["dal"] = "Decalitre", ["hL"] = "Hectolitre", ["hl"] = "Hectolitre", ["kL"] = "Kilolitre", ["kl"] = "Kilolitre", ["ML"] = "Megalitre", ["Ml"] = "Megalitre", ["GL"] = "Gigalitre", ["Gl"] = "Gigalitre", ["TL"] = "Teralitre", ["Tl"] = "Teralitre", ["PL"] = "Petalitre", ["Pl"] = "Petalitre", } --------------------------------------------------------------------------- -- Do not change the data in this table because it is created by running -- -- a script that reads the wikitext from a wiki page (see note above). -- --------------------------------------------------------------------------- local per_unit_fixups = { -- Automatically created per units of form "x/y" may have their unit type -- changed, for example, "length/time" is changed to "speed". -- Other adjustments can also be specified. ["/area"] = "per unit area", ["/volume"] = "per unit volume", ["area/area"] = "area per unit area", ["energy/length"] = "energy per unit length", ["energy/mass"] = "energy per unit mass", ["energy/time"] = { utype = "power", link = "Power (physics)" }, ["energy/volume"] = "energy per unit volume", ["force/area"] = { utype = "pressure", link = "Pressure" }, ["length/length"] = { utype = "gradient", link = "Grade (slope)" }, ["length/time"] = { utype = "speed", link = "Speed" }, ["length/time/time"] = { utype = "acceleration", link = "Acceleration" }, ["mass/area"] = { utype = "pressure", multiplier = 9.80665 }, ["mass/length"] = "linear density", ["mass/mass"] = "concentration", ["mass/power"] = "mass per unit power", ["mass/time"] = "mass per unit time", ["mass/volume"] = { utype = "density", link = "Density" }, ["power/mass"] = "power per unit mass", ["power/volume"] = { link = "Power density" }, ["pressure/length"] = "fracture gradient", ["speed/time"] = { utype = "acceleration", link = "Acceleration" }, ["volume/area"] = "volume per unit area", ["volume/length"] = "volume per unit length", ["volume/time"] = "flow", } return { all_units = all_units, default_exceptions = default_exceptions, link_exceptions = link_exceptions, per_unit_fixups = per_unit_fixups, } 8d4f7e3d03f55a7683bae4e0b800b77ac91d44a2 Module:Convert 828 1165 2494 2023-05-10T03:20:21Z w>Johnuniq 0 update from sandbox per [[Template talk:Convert#Module version 29]] Scribunto text/plain -- Convert a value from one unit of measurement to another. -- Example: {{convert|123|lb|kg}} --> 123 pounds (56 kg) -- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki. local MINUS = '−' -- Unicode U+2212 MINUS SIGN (UTF-8: e2 88 92) local abs = math.abs local floor = math.floor local format = string.format local log10 = math.log10 local ustring = mw.ustring local ulen = ustring.len local usub = ustring.sub -- Configuration options to keep magic values in one location. -- Conversion data and message text are defined in separate modules. local config, maxsigfig local numdot -- must be '.' or ',' or a character which works in a regex local numsep, numsep_remove, numsep_remove2 local data_code, all_units local text_code local varname -- can be a code to use variable names that depend on value local from_en_table -- to translate an output string of en digits to local language local to_en_table -- to translate an input string of digits in local language to en -- Use translation_table in convert/text to change the following. local en_default -- true uses lang=en unless convert has lang=local or local digits local group_method = 3 -- code for how many digits are in a group local per_word = 'per' -- for units like "liters per kilometer" local plural_suffix = 's' -- only other useful value is probably '' to disable plural unit names local omitsep -- true to omit separator before local symbol/name -- All units should be defined in the data module. However, to cater for quick changes -- and experiments, any unknown unit is looked up in an extra data module, if it exists. -- That module would be transcluded in only a small number of pages, so there should be -- little server overhead from making changes, and changes should propagate quickly. local extra_module -- name of module with extra units local extra_units -- nil or table of extra units from extra_module -- Some options in the invoking template can set variables used later in the module. local currency_text -- for a user-defined currency symbol: {{convert|12|$/ha|$=€}} (euro replaces dollar) local function from_en(text) -- Input is a string representing a number in en digits with '.' decimal mark, -- without digit grouping (which is done just after calling this). -- Return the translation of the string with numdot and digits in local language. if numdot ~= '.' then text = text:gsub('%.', numdot) end if from_en_table then text = text:gsub('%d', from_en_table) end return text end local function to_en(text) -- Input is a string representing a number in the local language with -- an optional numdot decimal mark and numsep digit grouping. -- Return the translation of the string with '.' mark and en digits, -- and no separators (they have to be removed here to handle cases like -- numsep = '.' and numdot = ',' with input "1.234.567,8"). if to_en_table then text = ustring.gsub(text, '%d', to_en_table) end if numsep_remove then text = text:gsub(numsep_remove, '') end if numsep_remove2 then text = text:gsub(numsep_remove2, '') end if numdot ~= '.' then text = text:gsub(numdot, '.') end return text end local function decimal_mark(text) -- Return ',' if text probably is using comma for decimal mark, or has no decimal mark. -- Return '.' if text probably is using dot for decimal mark. -- Otherwise return nothing (decimal mark not known). if not text:find('[.,]') then return ',' end text = text:gsub('^%-', ''):gsub('%+%d+/%d+$', ''):gsub('[Ee]%-?%d+$', '') local decimal = text:match('^0?([.,])%d+$') or text:match('%d([.,])%d?%d?$') or text:match('%d([.,])%d%d%d%d+$') if decimal then return decimal end if text:match('%.%d+%.') then return ',' end if text:match('%,%d+,') then return '.' end end local add_warning, with_separator -- forward declarations local function to_en_with_check(text, parms) -- Version of to_en() for a wiki using numdot = ',' and numsep = '.' to check -- text (an input number as a string) which might have been copied from enwiki. -- For example, in '1.234' the '.' could be a decimal mark or a group separator. -- From viwiki. if to_en_table then text = ustring.gsub(text, '%d', to_en_table) end if decimal_mark(text) == '.' then local original = text text = text:gsub(',', '') -- for example, interpret "1,234.5" as an enwiki value if parms then add_warning(parms, 0, 'cvt_enwiki_num', original, with_separator({}, text)) end else if numsep_remove then text = text:gsub(numsep_remove, '') end if numsep_remove2 then text = text:gsub(numsep_remove2, '') end if numdot ~= '.' then text = text:gsub(numdot, '.') end end return text end local function omit_separator(id) -- Return true if there should be no separator before id (a unit symbol or name). -- For zhwiki, there should be no separator if id uses local characters. -- The following kludge should be a sufficient test. if omitsep then if id:sub(1, 2) == '-{' then -- for "-{...}-" content language variant return true end if id:byte() > 127 then local first = usub(id, 1, 1) if first ~= 'Å' and first ~= '°' and first ~= 'µ' then return true end end end return id:sub(1, 1) == '/' -- no separator before units like "/ha" end local spell_module -- name of module that can spell numbers local speller -- function from that module to handle spelling (set if needed) local wikidata_module, wikidata_data_module -- names of Wikidata modules local wikidata_code, wikidata_data -- exported tables from those modules (set if needed) local function set_config(args) -- Set configuration options from template #invoke or defaults. config = args maxsigfig = config.maxsigfig or 14 -- maximum number of significant figures local data_module, text_module local sandbox = config.sandbox and ('/' .. config.sandbox) or '' data_module = "Module:Convert/data" .. sandbox text_module = "Module:Convert/text" .. sandbox extra_module = "Module:Convert/extra" .. sandbox wikidata_module = "Module:Convert/wikidata" .. sandbox wikidata_data_module = "Module:Convert/wikidata/data" .. sandbox spell_module = "Module:ConvertNumeric" data_code = mw.loadData(data_module) text_code = mw.loadData(text_module) all_units = data_code.all_units local translation = text_code.translation_table if translation then numdot = translation.numdot numsep = translation.numsep if numdot == ',' and numsep == '.' then if text_code.all_messages.cvt_enwiki_num then to_en = to_en_with_check end end if translation.group then group_method = translation.group end if translation.per_word then per_word = translation.per_word end if translation.plural_suffix then plural_suffix = translation.plural_suffix end varname = translation.varname from_en_table = translation.from_en local use_workaround = true if use_workaround then -- 2013-07-05 workaround bug by making a copy of the required table. -- mw.ustring.gsub fails with a table (to_en_table) as the replacement, -- if the table is accessed via mw.loadData. local source = translation.to_en if source then to_en_table = {} for k, v in pairs(source) do to_en_table[k] = v end end else to_en_table = translation.to_en end if translation.lang == 'en default' then en_default = true -- for hiwiki end omitsep = translation.omitsep -- for zhwiki end numdot = config.numdot or numdot or '.' -- decimal mark before fractional digits numsep = config.numsep or numsep or ',' -- group separator for numbers -- numsep should be ',' or '.' or '' or '&nbsp;' or a Unicode character. -- numsep_remove must work in a regex to identify separators to be removed. if numsep ~= '' then numsep_remove = (numsep == '.') and '%.' or numsep end if numsep ~= ',' and numdot ~= ',' then numsep_remove2 = ',' -- so numbers copied from enwiki will work end end local function collection() -- Return a table to hold items. return { n = 0, add = function (self, item) self.n = self.n + 1 self[self.n] = item end, } end local function divide(numerator, denominator) -- Return integers quotient, remainder resulting from dividing the two -- given numbers, which should be unsigned integers. local quotient, remainder = floor(numerator / denominator), numerator % denominator if not (0 <= remainder and remainder < denominator) then -- Floating point limits may need this, as in {{convert|160.02|Ym|ydftin}}. remainder = 0 end return quotient, remainder end local function split(text, delimiter) -- Return a numbered table with fields from splitting text. -- The delimiter is used in a regex without escaping (for example, '.' would fail). -- Each field has any leading/trailing whitespace removed. local t = {} text = text .. delimiter -- to get last item for item in text:gmatch('%s*(.-)%s*' .. delimiter) do table.insert(t, item) end return t end local function strip(text) -- If text is a string, return its content with no leading/trailing -- whitespace. Otherwise return nil (a nil argument gives a nil result). if type(text) == 'string' then return text:match("^%s*(.-)%s*$") end end local function table_len(t) -- Return length (<100) of a numbered table to replace #t which is -- documented to not work if t is accessed via mw.loadData(). for i = 1, 100 do if t[i] == nil then return i - 1 end end end local function wanted_category(catkey, catsort, want_warning) -- Return message category if it is wanted in current namespace, -- otherwise return ''. local cat local title = mw.title.getCurrentTitle() if title then local nsdefault = '0' -- default namespace: '0' = article; '0,10' = article and template local namespace = title.namespace for _, v in ipairs(split(config.nscat or nsdefault, ',')) do if namespace == tonumber(v) then cat = text_code.all_categories[want_warning and 'warning' or catkey] if catsort and catsort ~= '' and cat:sub(-2) == ']]' then cat = cat:sub(1, -3) .. '|' .. mw.text.nowiki(usub(catsort, 1, 20)) .. ']]' end break end end end return cat or '' end local function message(parms, mcode, is_warning) -- Return wikitext for an error message, including category if specified -- for the message type. -- mcode = numbered table specifying the message: -- mcode[1] = 'cvt_xxx' (string used as a key to get message info) -- mcode[2] = 'parm1' (string to replace '$1' if any in message) -- mcode[3] = 'parm2' (string to replace '$2' if any in message) -- mcode[4] = 'parm3' (string to replace '$3' if any in message) local msg if type(mcode) == 'table' then if mcode[1] == 'cvt_no_output' then -- Some errors should cause convert to output an empty string, -- for example, for an optional field in an infobox. return '' end msg = text_code.all_messages[mcode[1]] end parms.have_problem = true local function subparm(fmt, ...) local rep = {} for i, v in ipairs({...}) do rep['$' .. i] = v end return (fmt:gsub('$%d+', rep)) end if msg then local parts = {} local regex, replace = msg.regex, msg.replace for i = 1, 3 do local limit = 40 local s = mcode[i + 1] if s then if regex and replace then s = s:gsub(regex, replace) limit = nil -- allow long "should be" messages end -- Escape user input so it does not break the message. -- To avoid tags (like {{convert|1<math>23</math>|m}}) breaking -- the mouseover title, any strip marker starting with char(127) is -- replaced with '...' (text not needing i18n). local append local pos = s:find(string.char(127), 1, true) if pos then append = '...' s = s:sub(1, pos - 1) end if limit and ulen(s) > limit then s = usub(s, 1, limit) append = '...' end s = mw.text.nowiki(s) .. (append or '') else s = '?' end parts['$' .. i] = s end local function ispreview() -- Return true if a prominent message should be shown. if parms.test == 'preview' or parms.test == 'nopreview' then -- For testing, can preview a real message or simulate a preview -- when running automated tests. return parms.test == 'preview' end local success, revid = pcall(function () return (parms.frame):preprocess('{{REVISIONID}}') end) return success and (revid == '') end local want_warning = is_warning and not config.warnings and -- show unobtrusive warnings if config.warnings not configured not msg.nowarn -- but use msg settings, not standard warning, if specified local title = string.gsub(msg[1] or 'Missing message', '$%d+', parts) local text = want_warning and '*' or msg[2] or 'Missing message' local cat = wanted_category(msg[3], mcode[2], want_warning) local anchor = msg[4] or '' local fmtkey = ispreview() and 'cvt_format_preview' or (want_warning and 'cvt_format2' or msg.format or 'cvt_format') local fmt = text_code.all_messages[fmtkey] or 'convert: bug' return subparm(fmt, title:gsub('"', '&quot;'), text, cat, anchor) end return 'Convert internal error: unknown message' end function add_warning(parms, level, key, text1, text2) -- for forward declaration above -- If enabled, add a warning that will be displayed after the convert result. -- A higher level is more verbose: more kinds of warnings are displayed. -- To reduce output noise, only the first warning is displayed. if level <= (tonumber(config.warnings) or 1) then if parms.warnings == nil then parms.warnings = message(parms, { key, text1, text2 }, true) end end end local function spell_number(parms, inout, number, numerator, denominator) -- Return result of spelling (number, numerator, denominator), or -- return nil if spelling is not available or not supported for given text. -- Examples (each value must be a string or nil): -- number numerator denominator output -- ------ --------- ----------- ------------------- -- "1.23" nil nil one point two three -- "1" "2" "3" one and two thirds -- nil "2" "3" two thirds if not speller then local function get_speller(module) return require(module).spell_number end local success success, speller = pcall(get_speller, spell_module) if not success or type(speller) ~= 'function' then add_warning(parms, 1, 'cvt_no_spell', 'spell') return nil end end local case if parms.spell_upper == inout then case = true parms.spell_upper = nil -- only uppercase first word in a multiple unit end local sp = not parms.opt_sp_us local adj = parms.opt_adjectival return speller(number, numerator, denominator, case, sp, adj) end ------------------------------------------------------------------------ -- BEGIN: Code required only for built-in units. -- LATER: If need much more code, move to another module to simplify this module. local function speed_of_sound(altitude) -- This is for the Mach built-in unit of speed. -- Return speed of sound in metres per second at given altitude in feet. -- If no altitude given, use default (zero altitude = sea level). -- Table gives speed of sound in miles per hour at various altitudes: -- altitude = -17,499 to 402,499 feet -- mach_table[a + 4] = s where -- a = (altitude / 5000) rounded to nearest integer (-3 to 80) -- s = speed of sound (mph) at that altitude -- LATER: Should calculate result from an interpolation between the next -- lower and higher altitudes in table, rather than rounding to nearest. -- From: http://www.aerospaceweb.org/question/atmosphere/q0112.shtml local mach_table = { -- a = 799.5, 787.0, 774.2, 761.207051, -- -3 to 0 748.0, 734.6, 721.0, 707.0, 692.8, 678.3, 663.5, 660.1, 660.1, 660.1, -- 1 to 10 660.1, 660.1, 660.1, 662.0, 664.3, 666.5, 668.9, 671.1, 673.4, 675.6, -- 11 to 20 677.9, 683.7, 689.9, 696.0, 702.1, 708.1, 714.0, 719.9, 725.8, 731.6, -- 21 to 30 737.3, 737.7, 737.7, 736.2, 730.5, 724.6, 718.8, 712.9, 707.0, 701.0, -- 31 to 40 695.0, 688.9, 682.8, 676.6, 670.4, 664.1, 657.8, 652.9, 648.3, 643.7, -- 41 to 50 639.1, 634.4, 629.6, 624.8, 620.0, 615.2, 613.2, 613.2, 613.2, 613.5, -- 51 to 60 614.4, 615.3, 616.7, 619.8, 623.4, 629.7, 635.0, 641.1, 650.6, 660.0, -- 61 to 70 672.5, 674.3, 676.1, 677.9, 679.7, 681.5, 683.3, 685.1, 686.8, 688.6, -- 71 to 80 } altitude = altitude or 0 local a = (altitude < 0) and -altitude or altitude a = floor(a / 5000 + 0.5) if altitude < 0 then a = -a end if a < -3 then a = -3 elseif a > 80 then a = 80 end return mach_table[a + 4] * 0.44704 -- mph converted to m/s end -- END: Code required only for built-in units. ------------------------------------------------------------------------ local function add_style(parms, class) -- Add selected template style to parms if not already present. parms.templatestyles = parms.templatestyles or {} if not parms.templatestyles[class] then parms.templatestyles[class] = parms.frame:extensionTag({ name = 'templatestyles', args = { src = text_code.titles[class] } }) end end local function get_styles(parms) -- Return string of required template styles, empty if none. if parms.templatestyles then local t = {} for _, v in pairs(parms.templatestyles) do table.insert(t, v) end return table.concat(t) end return '' end local function get_range(word) -- Return a range (string or table) corresponding to word (like "to"), -- or return nil if not a range word. local ranges = text_code.ranges return ranges.types[word] or ranges.types[ranges.aliases[word]] end local function check_mismatch(unit1, unit2) -- If unit1 cannot be converted to unit2, return an error message table. -- This allows conversion between units of the same type, and between -- Nm (normally torque) and ftlb (energy), as in gun-related articles. -- This works because Nm is the base unit (scale = 1) for both the -- primary type (torque), and the alternate type (energy, where Nm = J). -- A match occurs if the primary types are the same, or if unit1 matches -- the alternate type of unit2, and vice versa. That provides a whitelist -- of which conversions are permitted between normally incompatible types. if unit1.utype == unit2.utype or (unit1.utype == unit2.alttype and unit1.alttype == unit2.utype) then return nil end return { 'cvt_mismatch', unit1.utype, unit2.utype } end local function override_from(out_table, in_table, fields) -- Copy the specified fields from in_table to out_table, but do not -- copy nil fields (keep any corresponding field in out_table). for _, field in ipairs(fields) do if in_table[field] then out_table[field] = in_table[field] end end end local function shallow_copy(t) -- Return a shallow copy of table t. -- Do not need the features and overhead of the Scribunto mw.clone(). local result = {} for k, v in pairs(t) do result[k] = v end return result end local unit_mt = { -- Metatable to get missing values for a unit that does not accept SI prefixes. -- Warning: The boolean value 'false' is returned for any missing field -- so __index is not called twice for the same field in a given unit. __index = function (self, key) local value if key == 'name1' or key == 'sym_us' then value = self.symbol elseif key == 'name2' then value = self.name1 .. plural_suffix elseif key == 'name1_us' then value = self.name1 if not rawget(self, 'name2_us') then -- If name1_us is 'foot', do not make name2_us by appending plural_suffix. self.name2_us = self.name2 end elseif key == 'name2_us' then local raw1_us = rawget(self, 'name1_us') if raw1_us then value = raw1_us .. plural_suffix else value = self.name2 end elseif key == 'link' then value = self.name1 else value = false end rawset(self, key, value) return value end } local function prefixed_name(unit, name, index) -- Return unit name with SI prefix inserted at correct position. -- index = 1 (name1), 2 (name2), 3 (name1_us), 4 (name2_us). -- The position is a byte (not character) index, so use Lua's sub(). local pos = rawget(unit, 'prefix_position') if type(pos) == 'string' then pos = tonumber(split(pos, ',')[index]) end if pos then return name:sub(1, pos - 1) .. unit.si_name .. name:sub(pos) end return unit.si_name .. name end local unit_prefixed_mt = { -- Metatable to get missing values for a unit that accepts SI prefixes. -- Before use, fields si_name, si_prefix must be defined. -- The unit must define _symbol, _name1 and -- may define _sym_us, _name1_us, _name2_us -- (_sym_us, _name2_us may be defined for a language using sp=us -- to refer to a variant unrelated to U.S. units). __index = function (self, key) local value if key == 'symbol' then value = self.si_prefix .. self._symbol if value == 'l' then value = 'L' end elseif key == 'sym_us' then value = rawget(self, '_sym_us') if value then value = self.si_prefix .. value else value = self.symbol end elseif key == 'name1' then value = prefixed_name(self, self._name1, 1) elseif key == 'name2' then value = rawget(self, '_name2') if value then value = prefixed_name(self, value, 2) else value = self.name1 .. plural_suffix end elseif key == 'name1_us' then value = rawget(self, '_name1_us') if value then value = prefixed_name(self, value, 3) else value = self.name1 end elseif key == 'name2_us' then value = rawget(self, '_name2_us') if value then value = prefixed_name(self, value, 4) elseif rawget(self, '_name1_us') then value = self.name1_us .. plural_suffix else value = self.name2 end elseif key == 'link' then value = self.name1 else value = false end rawset(self, key, value) return value end } local unit_per_mt = { -- Metatable to get values for a per unit of form "x/y". -- This is never called to determine a unit name or link because per units -- are handled as a special case. -- Similarly, the default output is handled elsewhere, and for a symbol -- this is only called from get_default() for default_exceptions. __index = function (self, key) local value if key == 'symbol' then local per = self.per local unit1, unit2 = per[1], per[2] if unit1 then value = unit1[key] .. '/' .. unit2[key] else value = '/' .. unit2[key] end elseif key == 'sym_us' then value = self.symbol elseif key == 'scale' then local per = self.per local unit1, unit2 = per[1], per[2] value = (unit1 and unit1.scale or 1) * self.scalemultiplier / unit2.scale else value = false end rawset(self, key, value) return value end } local function make_per(unitcode, unit_table, ulookup) -- Return true, t where t is a per unit with unit codes expanded to unit tables, -- or return false, t where t is an error message table. local result = { unitcode = unitcode, utype = unit_table.utype, per = {} } override_from(result, unit_table, { 'invert', 'iscomplex', 'default', 'link', 'symbol', 'symlink' }) result.symbol_raw = (result.symbol or false) -- to distinguish between a defined exception and a metatable calculation local prefix for i, v in ipairs(unit_table.per) do if i == 1 and v == '' then -- First unit symbol can be empty; that gives a nil first unit table. elseif i == 1 and text_code.currency[v] then prefix = currency_text or v else local success, t = ulookup(v) if not success then return false, t end result.per[i] = t end end local multiplier = unit_table.multiplier if not result.utype then -- Creating an automatic per unit. local unit1 = result.per[1] local utype = (unit1 and unit1.utype or prefix or '') .. '/' .. result.per[2].utype local t = data_code.per_unit_fixups[utype] if t then if type(t) == 'table' then utype = t.utype or utype result.link = result.link or t.link multiplier = multiplier or t.multiplier else utype = t end end result.utype = utype end result.scalemultiplier = multiplier or 1 result.vprefix = prefix or false -- set to non-nil to avoid calling __index return true, setmetatable(result, unit_per_mt) end local function lookup(parms, unitcode, what, utable, fails, depth) -- Return true, t where t is a copy of the unit's converter table, -- or return false, t where t is an error message table. -- Parameter 'what' determines whether combination units are accepted: -- 'no_combination' : single unit only -- 'any_combination' : single unit or combination or output multiple -- 'only_multiple' : single unit or output multiple only -- Parameter unitcode is a symbol (like 'g'), with an optional SI prefix (like 'kg'). -- If, for example, 'kg' is in this table, that entry is used; -- otherwise the prefix ('k') is applied to the base unit ('g'). -- If unitcode is a known combination code (and if allowed by what), -- a table of output multiple unit tables is included in the result. -- For compatibility with the old template, an underscore in a unitcode is -- replaced with a space so usage like {{convert|350|board_feet}} works. -- Wikignomes may also put two spaces or "&nbsp;" in combinations, so -- replace underscore, "&nbsp;", and multiple spaces with a single space. utable = utable or parms.unittable or all_units fails = fails or {} depth = depth and depth + 1 or 1 if depth > 9 then -- There are ways to mistakenly define units which result in infinite -- recursion when lookup() is called. That gives a long delay and very -- confusing error messages, so the depth parameter is used as a guard. return false, { 'cvt_lookup', unitcode } end if unitcode == nil or unitcode == '' then return false, { 'cvt_no_unit' } end unitcode = unitcode:gsub('_', ' '):gsub('&nbsp;', ' '):gsub(' +', ' ') local function call_make_per(t) return make_per(unitcode, t, function (ucode) return lookup(parms, ucode, 'no_combination', utable, fails, depth) end ) end local t = utable[unitcode] if t then if t.shouldbe then return false, { 'cvt_should_be', t.shouldbe } end if t.sp_us then parms.opt_sp_us = true end local target = t.target -- nil, or unitcode is an alias for this target if target then local success, result = lookup(parms, target, what, utable, fails, depth) if not success then return false, result end override_from(result, t, { 'customary', 'default', 'link', 'symbol', 'symlink' }) local multiplier = t.multiplier if multiplier then result.multiplier = tostring(multiplier) result.scale = result.scale * multiplier end return true, result end if t.per then return call_make_per(t) end local combo = t.combination -- nil or a table of unitcodes if combo then local multiple = t.multiple if what == 'no_combination' or (what == 'only_multiple' and not multiple) then return false, { 'cvt_bad_unit', unitcode } end -- Recursively create a combination table containing the -- converter table of each unitcode. local result = { utype = t.utype, multiple = multiple, combination = {} } local cvt = result.combination for i, v in ipairs(combo) do local success, t = lookup(parms, v, multiple and 'no_combination' or 'only_multiple', utable, fails, depth) if not success then return false, t end cvt[i] = t end return true, result end local result = shallow_copy(t) result.unitcode = unitcode if result.prefixes then result.si_name = '' result.si_prefix = '' return true, setmetatable(result, unit_prefixed_mt) end return true, setmetatable(result, unit_mt) end local SIprefixes = text_code.SIprefixes for plen = SIprefixes[1] or 2, 1, -1 do -- Look for an SI prefix; should never occur with an alias. -- Check for longer prefix first ('dam' is decametre). -- SIprefixes[1] = prefix maximum #characters (as seen by mw.ustring.sub). local prefix = usub(unitcode, 1, plen) local si = SIprefixes[prefix] if si then local t = utable[usub(unitcode, plen+1)] if t and t.prefixes then local result = shallow_copy(t) result.unitcode = unitcode result.si_name = parms.opt_sp_us and si.name_us or si.name result.si_prefix = si.prefix or prefix result.scale = t.scale * 10 ^ (si.exponent * t.prefixes) return true, setmetatable(result, unit_prefixed_mt) end end end -- Accept user-defined combinations like "acre+m2+ha" or "acre m2 ha" for output. -- If '+' is used, each unit code can include a space, and any error is fatal. -- If ' ' is used and if each space-separated word is a unit code, it is a combo, -- but errors are not fatal so the unit code can be looked up as an extra unit. local err_is_fatal local combo = collection() if unitcode:find('+', 1, true) then err_is_fatal = true for item in (unitcode .. '+'):gmatch('%s*(.-)%s*%+') do if item ~= '' then combo:add(item) end end elseif unitcode:find('%s') then for item in unitcode:gmatch('%S+') do combo:add(item) end end if combo.n > 1 then local function lookup_combo() if what == 'no_combination' or what == 'only_multiple' then return false, { 'cvt_bad_unit', unitcode } end local result = { combination = {} } local cvt = result.combination for i, v in ipairs(combo) do local success, t = lookup(parms, v, 'only_multiple', utable, fails, depth) if not success then return false, t end if i == 1 then result.utype = t.utype else local mismatch = check_mismatch(result, t) if mismatch then return false, mismatch end end cvt[i] = t end return true, result end local success, result = lookup_combo() if success or err_is_fatal then return success, result end end -- Accept any unit with an engineering notation prefix like "e6cuft" -- (million cubic feet), but not chained prefixes like "e3e6cuft", -- and not if the unit is a combination or multiple, -- and not if the unit has an offset or is a built-in. -- Only en digits are accepted. local exponent, baseunit = unitcode:match('^e(%d+)(.*)') if exponent then local engscale = text_code.eng_scales[exponent] if engscale then local success, result = lookup(parms, baseunit, 'no_combination', utable, fails, depth) if success and not (result.offset or result.builtin or result.engscale) then result.unitcode = unitcode -- 'e6cuft' not 'cuft' result.defkey = unitcode -- key to lookup default exception result.engscale = engscale result.scale = result.scale * 10 ^ tonumber(exponent) return true, result end end end -- Look for x/y; split on right-most slash to get scale correct (x/y/z is x/y per z). local top, bottom = unitcode:match('^(.-)/([^/]+)$') if top and not unitcode:find('e%d') then -- If valid, create an automatic per unit for an "x/y" unit code. -- The unitcode must not include extraneous spaces. -- Engineering notation (apart from at start and which has been stripped before here), -- is not supported so do not make a per unit if find text like 'e3' in unitcode. local success, result = call_make_per({ per = {top, bottom} }) if success then return true, result end end if not parms.opt_ignore_error and not get_range(unitcode) then -- Want the "what links here" list for the extra_module to show only cases -- where an extra unit is used, so do not require it if invoked from {{val}} -- or if looking up a range word which cannot be a unit. if not extra_units then local success, extra = pcall(function () return require(extra_module).extra_units end) if success and type(extra) == 'table' then extra_units = extra end end if extra_units then -- A unit in one data table might refer to a unit in the other table, so -- switch between them, relying on fails or depth to terminate loops. if not fails[unitcode] then fails[unitcode] = true local other = (utable == all_units) and extra_units or all_units local success, result = lookup(parms, unitcode, what, other, fails, depth) if success then return true, result end end end end if to_en_table then -- At fawiki it is common to translate all digits so a unit like "km2" becomes "km۲". local en_code = ustring.gsub(unitcode, '%d', to_en_table) if en_code ~= unitcode then return lookup(parms, en_code, what, utable, fails, depth) end end return false, { 'cvt_unknown', unitcode } end local function valid_number(num) -- Return true if num is a valid number. -- In Scribunto (different from some standard Lua), when expressed as a string, -- overflow or other problems are indicated with text like "inf" or "nan" -- which are regarded as invalid here (each contains "n"). if type(num) == 'number' and tostring(num):find('n', 1, true) == nil then return true end end local function hyphenated(name, parts) -- Return a hyphenated form of given name (for adjectival usage). -- The name may be linked and the target of the link must not be changed. -- Hypothetical examples: -- [[long ton|ton]] → [[long ton|ton]] (no change) -- [[tonne|long ton]] → [[tonne|long-ton]] -- [[metric ton|long ton]] → [[metric ton|long-ton]] -- [[long ton]] → [[long ton|long-ton]] -- Input can also have multiple links in a single name like: -- [[United States customary units|U.S.]] [[US gallon|gallon]] -- [[mile]]s per [[United States customary units|U.S.]] [[quart]] -- [[long ton]]s per [[short ton]] -- Assume that links cannot be nested (never like "[[abc[[def]]ghi]]"). -- This uses a simple and efficient procedure that works for most cases. -- Some units (if used) would require more, and can later think about -- adding a method to handle exceptions. -- The procedure is to replace each space with a hyphen, but -- not a space after ')' [for "(pre-1954&nbsp;US) nautical mile"], and -- not spaces immediately before '(' or in '(...)' [for cases like -- "British thermal unit (ISO)" and "Calorie (International Steam Table)"]. if name:find(' ', 1, true) then if parts then local pos if name:sub(1, 1) == '(' then pos = name:find(')', 1, true) if pos then return name:sub(1, pos+1) .. name:sub(pos+2):gsub(' ', '-') end elseif name:sub(-1) == ')' then pos = name:find('(', 1, true) if pos then return name:sub(1, pos-2):gsub(' ', '-') .. name:sub(pos-1) end end return name:gsub(' ', '-') end parts = collection() for before, item, after in name:gmatch('([^[]*)(%[%[[^[]*%]%])([^[]*)') do if item:find(' ', 1, true) then local prefix local plen = item:find('|', 1, true) if plen then prefix = item:sub(1, plen) item = item:sub(plen + 1, -3) else prefix = item:sub(1, -3) .. '|' item = item:sub(3, -3) end item = prefix .. hyphenated(item, parts) .. ']]' end parts:add(before:gsub(' ', '-') .. item .. after:gsub(' ', '-')) end if parts.n == 0 then -- No link like "[[...]]" was found in the original name. parts:add(hyphenated(name, parts)) end return table.concat(parts) end return name end local function hyphenated_maybe(parms, want_name, sep, id, inout) -- Return s, f where -- s = id, possibly modified -- f = true if hyphenated -- Possible modifications: hyphenate; prepend '-'; append mid text. if id == nil or id == '' then return '' end local mid = (inout == (parms.opt_flip and 'out' or 'in')) and parms.mid or '' if want_name then if parms.opt_adjectival then return '-' .. hyphenated(id) .. mid, true end if parms.opt_add_s and id:sub(-1) ~= 's' then id = id .. 's' -- for nowiki end end return sep .. id .. mid end local function use_minus(text) -- Return text with Unicode minus instead of '-', if present. if text:sub(1, 1) == '-' then return MINUS .. text:sub(2) end return text end local function digit_groups(parms, text, method) -- Return a numbered table of groups of digits (left-to-right, in local language). -- Parameter method is a number or nil: -- 3 for 3-digit grouping (default), or -- 2 for 3-then-2 grouping (only for digits before decimal mark). local len_right local len_left = text:find('.', 1, true) if len_left then len_right = #text - len_left len_left = len_left - 1 else len_left = #text end local twos = method == 2 and len_left > 5 local groups = collection() local run = len_left local n if run < 4 or (run == 4 and parms.opt_comma5) then if parms.opt_gaps then n = run else n = #text end elseif twos then n = run % 2 == 0 and 1 or 2 else n = run % 3 == 0 and 3 or run % 3 end while run > 0 do groups:add(n) run = run - n n = (twos and run > 3) and 2 or 3 end if len_right then if groups.n == 0 then groups:add(0) end if parms.opt_gaps and len_right > 3 then local want4 = not parms.opt_gaps3 -- true gives no gap before trailing single digit local isfirst = true run = len_right while run > 0 do n = (want4 and run == 4) and 4 or (run > 3 and 3 or run) if isfirst then isfirst = false groups[groups.n] = groups[groups.n] + 1 + n else groups:add(n) end run = run - n end else groups[groups.n] = groups[groups.n] + 1 + len_right end end local pos = 1 for i, length in ipairs(groups) do groups[i] = from_en(text:sub(pos, pos + length - 1)) pos = pos + length end return groups end function with_separator(parms, text) -- for forward declaration above -- Input text is a number in en digits with optional '.' decimal mark. -- Return an equivalent, formatted for display: -- with a custom decimal mark instead of '.', if wanted -- with thousand separators inserted, if wanted -- digits in local language -- The given text is like '123' or '123.' or '12345.6789'. -- The text has no sign (caller inserts that later, if necessary). -- When using gaps, they are inserted before and after the decimal mark. -- Separators are inserted only before the decimal mark. -- A trailing dot (as in '123.') is removed because their use appears to -- be accidental, and such a number should be shown as '123' or '123.0'. -- It is useful for convert to suppress the dot so, for example, '4000.' -- is a simple way of indicating that all the digits are significant. if text:sub(-1) == '.' then text = text:sub(1, -2) end if #text < 4 or parms.opt_nocomma or numsep == '' then return from_en(text) end local groups = digit_groups(parms, text, group_method) if parms.opt_gaps then if groups.n <= 1 then return groups[1] or '' end local nowrap = '<span style="white-space: nowrap">' local gap = '<span style="margin-left: 0.25em">' local close = '</span>' return nowrap .. groups[1] .. gap .. table.concat(groups, close .. gap, 2, groups.n) .. close .. close end return table.concat(groups, numsep) end -- An input value like 1.23e12 is displayed using scientific notation (1.23×10¹²). -- That also makes the output use scientific notation, except for small values. -- In addition, very small or very large output values use scientific notation. -- Use format(fmtpower, significand, '10', exponent) where each argument is a string. local fmtpower = '%s<span style="margin:0 .15em 0 .25em">×</span>%s<sup>%s</sup>' local function with_exponent(parms, show, exponent) -- Return wikitext to display the implied value in scientific notation. -- Input uses en digits; output uses digits in local language. return format(fmtpower, with_separator(parms, show), from_en('10'), use_minus(from_en(tostring(exponent)))) end local function make_sigfig(value, sigfig) -- Return show, exponent that are equivalent to the result of -- converting the number 'value' (where value >= 0) to a string, -- rounded to 'sigfig' significant figures. -- The returned items are: -- show: a string of digits; no sign and no dot; -- there is an implied dot before show. -- exponent: a number (an integer) to shift the implied dot. -- Resulting value = tonumber('.' .. show) * 10^exponent. -- Examples: -- make_sigfig(23.456, 3) returns '235', 2 (.235 * 10^2). -- make_sigfig(0.0023456, 3) returns '235', -2 (.235 * 10^-2). -- make_sigfig(0, 3) returns '000', 1 (.000 * 10^1). if sigfig <= 0 then sigfig = 1 elseif sigfig > maxsigfig then sigfig = maxsigfig end if value == 0 then return string.rep('0', sigfig), 1 end local exp, fracpart = math.modf(log10(value)) if fracpart >= 0 then fracpart = fracpart - 1 exp = exp + 1 end local digits = format('%.0f', 10^(fracpart + sigfig)) if #digits > sigfig then -- Overflow (for sigfig=3: like 0.9999 rounding to "1000"; need "100"). digits = digits:sub(1, sigfig) exp = exp + 1 end assert(#digits == sigfig, 'Bug: rounded number has wrong length') return digits, exp end -- Fraction output format. local fracfmt = { { -- Like {{frac}} (fraction slash). '<span class="frac" role="math">{SIGN}<span class="num">{NUM}</span>&frasl;<span class="den">{DEN}</span></span>', -- 1/2 '<span class="frac" role="math">{SIGN}{WHOLE}<span class="sr-only">+</span><span class="num">{NUM}</span>&frasl;<span class="den">{DEN}</span></span>', -- 1+2/3 style = 'frac', }, { -- Like {{sfrac}} (stacked fraction, that is, horizontal bar). '<span class="sfrac tion" role="math">{SIGN}<span class="num">{NUM}</span><span class="sr-only">/</span><span class="den">{DEN}</span></span>', -- 1//2 '<span class="sfrac" role="math">{SIGN}{WHOLE}<span class="sr-only">+</span><span class="tion"><span class="num">{NUM}</span><span class="sr-only">/</span><span class="den">{DEN}</span></span></span>', -- 1+2//3 style = 'sfrac', }, } local function format_fraction(parms, inout, negative, wholestr, numstr, denstr, do_spell, style) -- Return wikitext for a fraction, possibly spelled. -- Inputs use en digits and have no sign; output uses digits in local language. local wikitext if not style then style = parms.opt_fraction_horizontal and 2 or 1 end if wholestr == '' then wholestr = nil end local substitute = { SIGN = negative and MINUS or '', WHOLE = wholestr and with_separator(parms, wholestr), NUM = from_en(numstr), DEN = from_en(denstr), } wikitext = fracfmt[style][wholestr and 2 or 1]:gsub('{(%u+)}', substitute) if do_spell then if negative then if wholestr then wholestr = '-' .. wholestr else numstr = '-' .. numstr end end local s = spell_number(parms, inout, wholestr, numstr, denstr) if s then return s end end add_style(parms, fracfmt[style].style) return wikitext end local function format_number(parms, show, exponent, isnegative) -- Parameter show is a string or a table containing strings. -- Each string is a formatted number in en digits and optional '.' decimal mark. -- A table represents a fraction: integer, numerator, denominator; -- if a table is given, exponent must be nil. -- Return t where t is a table with fields: -- show = wikitext formatted to display implied value -- (digits in local language) -- is_scientific = true if show uses scientific notation -- clean = unformatted show (possibly adjusted and with inserted '.') -- (en digits) -- sign = '' or MINUS -- exponent = exponent (possibly adjusted) -- The clean and exponent fields can be used to calculate the -- rounded absolute value, if needed. -- -- The value implied by the arguments is found from: -- exponent is nil; and -- show is a string of digits (no sign), with an optional dot; -- show = '123.4' is value 123.4, '1234' is value 1234.0; -- or: -- exponent is an integer indicating where dot should be; -- show is a string of digits (no sign and no dot); -- there is an implied dot before show; -- show does not start with '0'; -- show = '1234', exponent = 3 is value 0.1234*10^3 = 123.4. -- -- The formatted result: -- * Is for an output value and is spelled if wanted and possible. -- * Includes a Unicode minus if isnegative and not spelled. -- * Uses a custom decimal mark, if wanted. -- * Has digits grouped where necessary, if wanted. -- * Uses scientific notation if requested, or for very small or large values -- (which forces result to not be spelled). -- * Has no more than maxsigfig significant digits -- (same as old template and {{#expr}}). local xhi, xlo -- these control when scientific notation (exponent) is used if parms.opt_scientific then xhi, xlo = 4, 2 -- default for output if input uses e-notation elseif parms.opt_scientific_always then xhi, xlo = 0, 0 -- always use scientific notation (experimental) else xhi, xlo = 10, 4 -- default end local sign = isnegative and MINUS or '' local maxlen = maxsigfig local tfrac if type(show) == 'table' then tfrac = show show = tfrac.wholestr assert(exponent == nil, 'Bug: exponent given with fraction') end if not tfrac and not exponent then local integer, dot, decimals = show:match('^(%d*)(%.?)(.*)') if integer == '0' or integer == '' then local zeros, figs = decimals:match('^(0*)([^0]?.*)') if #figs == 0 then if #zeros > maxlen then show = '0.' .. zeros:sub(1, maxlen) end elseif #zeros >= xlo then show = figs exponent = -#zeros elseif #figs > maxlen then show = '0.' .. zeros .. figs:sub(1, maxlen) end elseif #integer >= xhi then show = integer .. decimals exponent = #integer else maxlen = maxlen + #dot if #show > maxlen then show = show:sub(1, maxlen) end end end if exponent then local function zeros(n) return string.rep('0', n) end if #show > maxlen then show = show:sub(1, maxlen) end if exponent > xhi or exponent <= -xlo or (exponent == xhi and show ~= '1' .. zeros(xhi - 1)) then -- When xhi, xlo = 10, 4 (the default), scientific notation is used if the -- rounded value satisfies: value >= 1e9 or value < 1e-4 (1e9 = 0.1e10), -- except if show is '1000000000' (1e9), for example: -- {{convert|1000000000|m|m|sigfig=10}} → 1,000,000,000 metres (1,000,000,000 m) local significand if #show > 1 then significand = show:sub(1, 1) .. '.' .. show:sub(2) else significand = show end return { clean = '.' .. show, exponent = exponent, sign = sign, show = sign .. with_exponent(parms, significand, exponent-1), is_scientific = true, } end if exponent >= #show then show = show .. zeros(exponent - #show) -- result has no dot elseif exponent <= 0 then show = '0.' .. zeros(-exponent) .. show else show = show:sub(1, exponent) .. '.' .. show:sub(exponent+1) end end local formatted_show if tfrac then show = tostring(tfrac.value) -- to set clean in returned table formatted_show = format_fraction(parms, 'out', isnegative, tfrac.wholestr, tfrac.numstr, tfrac.denstr, parms.opt_spell_out) else if isnegative and show:match('^0.?0*$') then sign = '' -- don't show minus if result is negative but rounds to zero end formatted_show = sign .. with_separator(parms, show) if parms.opt_spell_out then formatted_show = spell_number(parms, 'out', sign .. show) or formatted_show end end return { clean = show, sign = sign, show = formatted_show, is_scientific = false, -- to avoid calling __index } end local function extract_fraction(parms, text, negative) -- If text represents a fraction, return -- value, altvalue, show, denominator -- where -- value is a number (value of the fraction in argument text) -- altvalue is an alternate interpretation of any fraction for the hands -- unit where "12.1+3/4" means 12 hands 1.75 inches -- show is a string (formatted text for display of an input value, -- and is spelled if wanted and possible) -- denominator is value of the denominator in the fraction -- Otherwise, return nil. -- Input uses en digits and '.' decimal mark (input has been translated). -- Output uses digits in local language and local decimal mark, if any. ------------------------------------------------------------------------ -- Originally this function accepted x+y/z where x, y, z were any valid -- numbers, possibly with a sign. For example '1.23e+2+1.2/2.4' = 123.5, -- and '2-3/8' = 1.625. However, such usages were found to be errors or -- misunderstandings, so since August 2014 the following restrictions apply: -- x (if present) is an integer or has a single digit after decimal mark -- y and z are unsigned integers -- e-notation is not accepted -- The overall number can start with '+' or '-' (so '12+3/4' and '+12+3/4' -- and '-12-3/4' are valid). -- Any leading negative sign is removed by the caller, so only inputs -- like the following are accepted here (may have whitespace): -- negative = false false true (there was a leading '-') -- text = '2/3' '+2/3' '2/3' -- text = '1+2/3' '+1+2/3' '1-2/3' -- text = '12.3+1/2' '+12.3+1/2' '12.3-1/2' -- Values like '12.3+1/2' are accepted, but are intended only for use -- with the hands unit (not worth adding code to enforce that). ------------------------------------------------------------------------ local leading_plus, prefix, numstr, slashes, denstr = text:match('^%s*(%+?)%s*(.-)%s*(%d+)%s*(/+)%s*(%d+)%s*$') if not leading_plus then -- Accept a single U+2044 fraction slash because that may be pasted. leading_plus, prefix, numstr, denstr = text:match('^%s*(%+?)%s*(.-)%s*(%d+)%s*⁄%s*(%d+)%s*$') slashes = '/' end local numerator = tonumber(numstr) local denominator = tonumber(denstr) if numerator == nil or denominator == nil or (negative and leading_plus ~= '') then return nil end local whole, wholestr if prefix == '' then wholestr = '' whole = 0 else -- Any prefix must be like '12+' or '12-' (whole number and fraction sign); -- '12.3+' and '12.3-' are also accepted (single digit after decimal point) -- because '12.3+1/2 hands' is valid (12 hands 3½ inches). local num1, num2, frac_sign = prefix:match('^(%d+)(%.?%d?)%s*([+%-])$') if num1 == nil then return nil end if num2 == '' then -- num2 must be '' or like '.1' but not '.' or '.12' wholestr = num1 else if #num2 ~= 2 then return nil end wholestr = num1 .. num2 end if frac_sign ~= (negative and '-' or '+') then return nil end whole = tonumber(wholestr) if whole == nil then return nil end end local value = whole + numerator / denominator if not valid_number(value) then return nil end local altvalue = whole + numerator / (denominator * 10) local style = #slashes -- kludge: 1 or 2 slashes can be used to select style if style > 2 then style = 2 end local wikitext = format_fraction(parms, 'in', negative, leading_plus .. wholestr, numstr, denstr, parms.opt_spell_in, style) return value, altvalue, wikitext, denominator end local function extract_number(parms, text, another, no_fraction) -- Return true, info if can extract a number from text, -- where info is a table with the result, -- or return false, t where t is an error message table. -- Input can use en digits or digits in local language and can -- have references at the end. Accepting references is intended -- for use in infoboxes with a field for a value passed to convert. -- Parameter another = true if the expected value is not the first. -- Before processing, the input text is cleaned: -- * Any thousand separators (valid or not) are removed. -- * Any sign is replaced with '-' (if negative) or '' (otherwise). -- That replaces Unicode minus with '-'. -- If successful, the returned info table contains named fields: -- value = a valid number -- altvalue = a valid number, usually same as value but different -- if fraction used (for hands unit) -- singular = true if value is 1 or -1 (to use singular form of units) -- clean = cleaned text with any separators and sign removed -- (en digits and '.' decimal mark) -- show = text formatted for output, possibly with ref strip markers -- (digits in local language and custom decimal mark) -- The resulting show: -- * Is for an input value and is spelled if wanted and possible. -- * Has a rounded value, if wanted. -- * Has digits grouped where necessary, if wanted. -- * If negative, a Unicode minus is used; otherwise the sign is -- '+' (if the input text used '+'), or is '' (if no sign in input). text = strip(text or '') local reference local pos = text:find('\127', 1, true) if pos then local before = text:sub(1, pos - 1) local remainder = text:sub(pos) local refs = {} while #remainder > 0 do local ref, spaces ref, spaces, remainder = remainder:match('^(\127[^\127]*UNIQ[^\127]*%-ref[^\127]*\127)(%s*)(.*)') if ref then table.insert(refs, ref) else refs = {} break end end if #refs > 0 then text = strip(before) reference = table.concat(refs) end end local clean = to_en(text, parms) if clean == '' then return false, { another and 'cvt_no_num2' or 'cvt_no_num' } end local isnegative, propersign = false, '' -- most common case local singular, show, denominator local value = tonumber(clean) local altvalue if value then local sign = clean:sub(1, 1) if sign == '+' or sign == '-' then propersign = (sign == '+') and '+' or MINUS clean = clean:sub(2) end if value < 0 then isnegative = true value = -value end else local valstr for _, prefix in ipairs({ '-', MINUS, '&minus;' }) do -- Including '-' sets isnegative in case input is a fraction like '-2-3/4'. local plen = #prefix if clean:sub(1, plen) == prefix then valstr = clean:sub(plen + 1) if valstr:match('^%s') then -- "- 1" is invalid but "-1 - 1/2" is ok return false, { 'cvt_bad_num', text } end break end end if valstr then isnegative = true propersign = MINUS clean = valstr value = tonumber(clean) end if value == nil then if not no_fraction then value, altvalue, show, denominator = extract_fraction(parms, clean, isnegative) end if value == nil then return false, { 'cvt_bad_num', text } end if value <= 1 then singular = true -- for example, "½ mile" or "one half mile" (singular unit) end end end if not valid_number(value) then -- for example, "1e310" may overflow return false, { 'cvt_invalid_num' } end if show == nil then -- clean is a non-empty string with no spaces, and does not represent a fraction, -- and value = tonumber(clean) is a number >= 0. -- If the input uses e-notation, show will be displayed using a power of ten, but -- we use the number as given so it might not be normalized scientific notation. -- The input value is spelled if specified so any e-notation is ignored; -- that allows input like 2e6 to be spelled as "two million" which works -- because the spell module converts '2e6' to '2000000' before spelling. local function rounded(value, default, exponent) local precision = parms.opt_ri if precision then local fmt = '%.' .. format('%d', precision) .. 'f' local result = fmt:format(tonumber(value) + 2e-14) -- fudge for some common cases of bad rounding if not exponent then singular = (tonumber(result) == 1) end return result end return default end singular = (value == 1) local scientific local significand, exponent = clean:match('^([%d.]+)[Ee]([+%-]?%d+)') if significand then show = with_exponent(parms, rounded(significand, significand, exponent), exponent) scientific = true else show = with_separator(parms, rounded(value, clean)) end show = propersign .. show if parms.opt_spell_in then show = spell_number(parms, 'in', propersign .. rounded(value, clean)) or show scientific = false end if scientific then parms.opt_scientific = true end end if isnegative and (value ~= 0) then value = -value altvalue = -(altvalue or value) end return true, { value = value, altvalue = altvalue or value, singular = singular, clean = clean, show = show .. (reference or ''), denominator = denominator, } end local function get_number(text) -- Return v, f where: -- v = nil (text is not a number) -- or -- v = value of text (text is a number) -- f = true if value is an integer -- Input can use en digits or digits in local language or separators, -- but no Unicode minus, and no fraction. if text then local number = tonumber(to_en(text)) if number then local _, fracpart = math.modf(number) return number, (fracpart == 0) end end end local function gcd(a, b) -- Return the greatest common denominator for the given values, -- which are known to be positive integers. if a > b then a, b = b, a end if a <= 0 then return b end local r = b % a if r <= 0 then return a end if r == 1 then return 1 end return gcd(r, a) end local function fraction_table(value, denominator) -- Return value as a string or a table: -- * If result is a string, there is no fraction, and the result -- is value formatted as a string of en digits. -- * If result is a table, it represents a fraction with named fields: -- wholestr, numstr, denstr (strings of en digits for integer, numerator, denominator). -- The result is rounded to the nearest multiple of (1/denominator). -- If the multiple is zero, no fraction is included. -- No fraction is included if value is very large as the fraction would -- be unhelpful, particularly if scientific notation is required. -- Input value is a non-negative number. -- Input denominator is a positive integer for the desired fraction. if value <= 0 then return '0' end if denominator <= 0 or value > 1e8 then return format('%.2f', value) end local integer, decimals = math.modf(value) local numerator = floor((decimals * denominator) + 0.5 + 2e-14) -- add fudge for some common cases of bad rounding if numerator >= denominator then integer = integer + 1 numerator = 0 end local wholestr = tostring(integer) if numerator > 0 then local div = gcd(numerator, denominator) if div > 1 then numerator = numerator / div denominator = denominator / div end return { wholestr = (integer > 0) and wholestr or '', numstr = tostring(numerator), denstr = tostring(denominator), value = value, } end return wholestr end local function preunits(count, preunit1, preunit2) -- If count is 1: -- ignore preunit2 -- return p1 -- else: -- preunit1 is used for preunit2 if the latter is empty -- return p1, p2 -- where: -- p1 is text to insert before the input unit -- p2 is text to insert before the output unit -- p1 or p2 may be nil to mean "no preunit" -- Using '+' gives output like "5+ feet" (no space before, but space after). local function withspace(text, wantboth) -- Return text with space before and, if wantboth, after. -- However, no space is added if there is a space or '&nbsp;' or '-' -- at that position ('-' is for adjectival text). -- There is also no space if text starts with '&' -- (e.g. '&deg;' would display a degree symbol with no preceding space). local char = text:sub(1, 1) if char == '&' then return text -- an html entity can be used to specify the exact display end if not (char == ' ' or char == '-' or char == '+') then text = ' ' .. text end if wantboth then char = text:sub(-1, -1) if not (char == ' ' or char == '-' or text:sub(-6, -1) == '&nbsp;') then text = text .. ' ' end end return text end local PLUS = '+ ' preunit1 = preunit1 or '' local trim1 = strip(preunit1) if count == 1 then if trim1 == '' then return nil end if trim1 == '+' then return PLUS end return withspace(preunit1, true) end preunit1 = withspace(preunit1) preunit2 = preunit2 or '' local trim2 = strip(preunit2) if trim1 == '+' then if trim2 == '' or trim2 == '+' then return PLUS, PLUS end preunit1 = PLUS end if trim2 == '' then if trim1 == '' then return nil, nil end preunit2 = preunit1 elseif trim2 == '+' then preunit2 = PLUS elseif trim2 == '&#32;' then -- trick to make preunit2 empty preunit2 = nil else preunit2 = withspace(preunit2) end return preunit1, preunit2 end local function range_text(range, want_name, parms, before, after, inout, options) -- Return before .. rtext .. after -- where rtext is the text that separates two values in a range. local rtext, adj_text, exception options = options or {} if type(range) == 'table' then -- Table must specify range text for ('off' and 'on') or ('input' and 'output'), -- and may specify range text for 'adj=on', -- and may specify exception = true. rtext = range[want_name and 'off' or 'on'] or range[((inout == 'in') == (parms.opt_flip == true)) and 'output' or 'input'] adj_text = range['adj'] exception = range['exception'] else rtext = range end if parms.opt_adjectival then if want_name or (exception and parms.abbr_org == 'on') then rtext = adj_text or rtext:gsub(' ', '-'):gsub('&nbsp;', '-') end end if rtext == '–' and (options.spaced or after:sub(1, #MINUS) == MINUS) then rtext = '&nbsp;– ' end return before .. rtext .. after end local function get_composite(parms, iparm, in_unit_table) -- Look for a composite input unit. For example, {{convert|1|yd|2|ft|3|in}} -- would result in a call to this function with -- iparm = 3 (parms[iparm] = "2", just after the first unit) -- in_unit_table = (unit table for "yd"; contains value 1 for number of yards) -- Return true, iparm, unit where -- iparm = index just after the composite units (7 in above example) -- unit = composite unit table holding all input units, -- or return true if no composite unit is present in parms, -- or return false, t where t is an error message table. local default, subinfo local composite_units, count = { in_unit_table }, 1 local fixups = {} local total = in_unit_table.valinfo[1].value local subunit = in_unit_table while subunit.subdivs do -- subdivs is nil or a table of allowed subdivisions local subcode = strip(parms[iparm+1]) local subdiv = subunit.subdivs[subcode] or subunit.subdivs[(all_units[subcode] or {}).target] if not subdiv then break end local success success, subunit = lookup(parms, subcode, 'no_combination') if not success then return false, subunit end -- should never occur success, subinfo = extract_number(parms, parms[iparm]) if not success then return false, subinfo end iparm = iparm + 2 subunit.inout = 'in' subunit.valinfo = { subinfo } -- Recalculate total as a number of subdivisions. -- subdiv[1] = number of subdivisions per previous unit (integer > 1). total = total * subdiv[1] + subinfo.value if not default then -- set by the first subdiv with a default defined default = subdiv.default end count = count + 1 composite_units[count] = subunit if subdiv.unit or subdiv.name then fixups[count] = { unit = subdiv.unit, name = subdiv.name, valinfo = subunit.valinfo } end end if count == 1 then return true -- no error and no composite unit end for i, fixup in pairs(fixups) do local unit = fixup.unit local name = fixup.name if not unit or (count > 2 and name) then composite_units[i].fixed_name = name else local success, alternate = lookup(parms, unit, 'no_combination') if not success then return false, alternate end -- should never occur alternate.inout = 'in' alternate.valinfo = fixup.valinfo composite_units[i] = alternate end end return true, iparm, { utype = in_unit_table.utype, scale = subunit.scale, -- scale of last (least significant) unit valinfo = { { value = total, clean = subinfo.clean, denominator = subinfo.denominator } }, composite = composite_units, default = default or in_unit_table.default } end local function translate_parms(parms, kv_pairs) -- Update fields in parms by translating each key:value in kv_pairs to terms -- used by this module (may involve translating from local language to English). -- Also, checks are performed which may display warnings, if enabled. -- Return true if successful or return false, t where t is an error message table. currency_text = nil -- local testing can hold module in memory; must clear globals if kv_pairs.adj and kv_pairs.sing then -- For enwiki (before translation), warn if attempt to use adj and sing -- as the latter is a deprecated alias for the former. if kv_pairs.adj ~= kv_pairs.sing and kv_pairs.sing ~= '' then add_warning(parms, 1, 'cvt_unknown_option', 'sing=' .. kv_pairs.sing) end kv_pairs.sing = nil end kv_pairs.comma = kv_pairs.comma or config.comma -- for plwiki who want default comma=5 for loc_name, loc_value in pairs(kv_pairs) do local en_name = text_code.en_option_name[loc_name] if en_name then local en_value = text_code.en_option_value[en_name] if en_value == 'INTEGER' then -- altitude_ft, altitude_m, frac, sigfig en_value = nil if loc_value == '' then add_warning(parms, 2, 'cvt_empty_option', loc_name) else local minimum local number, is_integer = get_number(loc_value) if en_name == 'sigfig' then minimum = 1 elseif en_name == 'frac' then minimum = 2 if number and number < 0 then parms.opt_fraction_horizontal = true number = -number end else minimum = -1e6 end if number and is_integer and number >= minimum then en_value = number else local m if en_name == 'frac' then m = 'cvt_bad_frac' elseif en_name == 'sigfig' then m = 'cvt_bad_sigfig' else m = 'cvt_bad_altitude' end add_warning(parms, 1, m, loc_name .. '=' .. loc_value) end end elseif en_value == 'TEXT' then -- $, input, qid, qual, stylein, styleout, tracking en_value = loc_value ~= '' and loc_value or nil -- accept non-empty user text with no validation if not en_value and (en_name == '$' or en_name == 'qid' or en_name == 'qual') then add_warning(parms, 2, 'cvt_empty_option', loc_name) elseif en_name == '$' then -- Value should be a single character like "€" for the euro currency symbol, but anything is accepted. currency_text = (loc_value == 'euro') and '€' or loc_value elseif en_name == 'input' then -- May have something like {{convert|input=}} (empty input) if source is an infobox -- with optional fields. In that case, want to output nothing rather than an error. parms.input_text = loc_value -- keep input because parms.input is nil if loc_value == '' end else en_value = en_value[loc_value] if en_value and en_value:sub(-1) == '?' then en_value = en_value:sub(1, -2) add_warning(parms, -1, 'cvt_deprecated', loc_name .. '=' .. loc_value) end if en_value == nil then if loc_value == '' then add_warning(parms, 2, 'cvt_empty_option', loc_name) else add_warning(parms, 1, 'cvt_unknown_option', loc_name .. '=' .. loc_value) end elseif en_value == '' then en_value = nil -- an ignored option like adj=off elseif type(en_value) == 'string' and en_value:sub(1, 4) == 'opt_' then for _, v in ipairs(split(en_value, ',')) do local lhs, rhs = v:match('^(.-)=(.+)$') if rhs then parms[lhs] = tonumber(rhs) or rhs else parms[v] = true end end en_value = nil end end parms[en_name] = en_value else add_warning(parms, 1, 'cvt_unknown_option', loc_name .. '=' .. loc_value) end end local abbr_entered = parms.abbr local cfg_abbr = config.abbr if cfg_abbr then -- Don't warn if invalid because every convert would show that warning. if cfg_abbr == 'on always' then parms.abbr = 'on' elseif cfg_abbr == 'off always' then parms.abbr = 'off' elseif parms.abbr == nil then if cfg_abbr == 'on default' then parms.abbr = 'on' elseif cfg_abbr == 'off default' then parms.abbr = 'off' end end end if parms.abbr then if parms.abbr == 'unit' then parms.abbr = 'on' parms.number_word = true end parms.abbr_org = parms.abbr -- original abbr, before any flip elseif parms.opt_hand_hh then parms.abbr_org = 'on' parms.abbr = 'on' else parms.abbr = 'out' -- default is to abbreviate output only (use symbol, not name) end if parms.opt_order_out then -- Disable options that do not work in a useful way with order=out. parms.opt_flip = nil -- override adj=flip parms.opt_spell_in = nil parms.opt_spell_out = nil parms.opt_spell_upper = nil end if parms.opt_spell_out and not abbr_entered then parms.abbr = 'off' -- should show unit name when spelling the output value end if parms.opt_flip then local function swap_in_out(option) local value = parms[option] if value == 'in' then parms[option] = 'out' elseif value == 'out' then parms[option] = 'in' end end swap_in_out('abbr') swap_in_out('lk') if parms.opt_spell_in and not parms.opt_spell_out then -- For simplicity, and because it does not appear to be needed, -- user cannot set an option to spell the output only. parms.opt_spell_in = nil parms.opt_spell_out = true end end if parms.opt_spell_upper then parms.spell_upper = parms.opt_flip and 'out' or 'in' end if parms.opt_table or parms.opt_tablecen then if abbr_entered == nil and parms.lk == nil then parms.opt_values = true end parms.table_align = parms.opt_table and 'right' or 'center' end if parms.table_align or parms.opt_sortable_on then parms.need_table_or_sort = true end local disp_joins = text_code.disp_joins local default_joins = disp_joins['b'] parms.join_between = default_joins[3] or '; ' local disp = parms.disp if disp == nil then -- special case for the most common setting parms.joins = default_joins elseif disp == 'x' then -- Later, parms.joins is set from the input parameters. else -- Old template does this. local abbr = parms.abbr if disp == 'slash' then if abbr_entered == nil then disp = 'slash-nbsp' elseif abbr == 'in' or abbr == 'out' then disp = 'slash-sp' else disp = 'slash-nosp' end elseif disp == 'sqbr' then if abbr == 'on' then disp = 'sqbr-nbsp' else disp = 'sqbr-sp' end end parms.joins = disp_joins[disp] or default_joins parms.join_between = parms.joins[3] or parms.join_between parms.wantname = parms.joins.wantname end if (en_default and not parms.opt_lang_local and (parms[1] or ''):find('%d')) or parms.opt_lang_en then from_en_table = nil end if en_default and from_en_table then -- For hiwiki: localized symbol/name is defined with the US symbol/name field, -- and is used if output uses localized numbers. parms.opt_sp_us = true end return true end local function get_values(parms) -- If successful, update parms and return true, v, i where -- v = table of input values -- i = index to next entry in parms after those processed here -- or return false, t where t is an error message table. local valinfo = collection() -- numbered table of input values local range = collection() -- numbered table of range items (having, for example, 2 range items requires 3 input values) local had_nocomma -- true if removed "nocomma" kludge from second parameter (like "tonocomma") local parm2 = strip(parms[2]) if parm2 and parm2:sub(-7, -1) == 'nocomma' then parms[2] = strip(parm2:sub(1, -8)) parms.opt_nocomma = true had_nocomma = true end local function extractor(i) -- If the parameter is not a value, try unpacking it as a range ("1-23" for "1 to 23"). -- However, "-1-2/3" is a negative fraction (-1⅔), so it must be extracted first. -- Do not unpack a parameter if it is like "3-1/2" which is sometimes incorrectly -- used instead of "3+1/2" (and which should not be interpreted as "3 to ½"). -- Unpacked items are inserted into the parms table. -- The tail recursion allows combinations like "1x2 to 3x4". local valstr = strip(parms[i]) -- trim so any '-' as a negative sign will be at start local success, result = extract_number(parms, valstr, i > 1) if not success and valstr and i < 20 then -- check i to limit abuse local lhs, sep, rhs = valstr:match('^(%S+)%s+(%S+)%s+(%S.*)') if lhs and not (sep == '-' and rhs:match('/')) then if sep:find('%d') then return success, result -- to reject {{convert|1 234 567|m}} with a decent message (en only) end parms[i] = rhs table.insert(parms, i, sep) table.insert(parms, i, lhs) return extractor(i) end if not valstr:match('%-.*/') then for _, sep in ipairs(text_code.ranges.words) do local start, stop = valstr:find(sep, 2, true) -- start at 2 to skip any negative sign for range '-' if start then parms[i] = valstr:sub(stop + 1) table.insert(parms, i, sep) table.insert(parms, i, valstr:sub(1, start - 1)) return extractor(i) end end end end return success, result end local i = 1 local is_change while true do local success, info = extractor(i) -- need to set parms.opt_nocomma before calling this if not success then return false, info end i = i + 1 if is_change then info.is_change = true -- value is after "±" and so is a change (significant for range like {{convert|5|±|5|°C}}) is_change = nil end valinfo:add(info) local range_item = get_range(strip(parms[i])) if not range_item then break end i = i + 1 range:add(range_item) if type(range_item) == 'table' then -- For range "x", if append unit to some values, append it to all. parms.in_range_x = parms.in_range_x or range_item.in_range_x parms.out_range_x = parms.out_range_x or range_item.out_range_x parms.abbr_range_x = parms.abbr_range_x or range_item.abbr_range_x is_change = range_item.is_range_change end end if range.n > 0 then if range.n > 30 then -- limit abuse, although 4 is a more likely upper limit return false, { 'cvt_invalid_num' } -- misleading message but it will do end parms.range = range elseif had_nocomma then return false, { 'cvt_unknown', parm2 } end return true, valinfo, i end local function simple_get_values(parms) -- If input is like "{{convert|valid_value|valid_unit|...}}", -- return true, i, in_unit, in_unit_table -- i = index in parms of what follows valid_unit, if anything. -- The valid_value is not negative and does not use a fraction, and -- no options requiring further processing of the input are used. -- Otherwise, return nothing or return false, parm1 for caller to interpret. -- Testing shows this function is successful for 96% of converts in articles, -- and that on average it speeds up converts by 8%. local clean = to_en(strip(parms[1] or ''), parms) if parms.opt_ri or parms.opt_spell_in or #clean > 10 or not clean:match('^[0-9.]+$') then return false, clean end local value = tonumber(clean) if not value then return end local info = { value = value, altvalue = value, singular = (value == 1), clean = clean, show = with_separator(parms, clean), } local in_unit = strip(parms[2]) local success, in_unit_table = lookup(parms, in_unit, 'no_combination') if not success then return end in_unit_table.valinfo = { info } return true, 3, in_unit, in_unit_table end local function wikidata_call(parms, operation, ...) -- Return true, s where s is the result of a Wikidata operation, -- or return false, t where t is an error message table. local function worker(...) wikidata_code = wikidata_code or require(wikidata_module) wikidata_data = wikidata_data or mw.loadData(wikidata_data_module) return wikidata_code[operation](wikidata_data, ...) end local success, status, result = pcall(worker, ...) if success then return status, result end if parms.opt_sortable_debug then -- Use debug=yes to crash if an error while accessing Wikidata. error('Error accessing Wikidata: ' .. status, 0) end return false, { 'cvt_wd_fail' } end local function get_parms(parms, args) -- If successful, update parms and return true, unit where -- parms is a table of all arguments passed to the template -- converted to named arguments, and -- unit is the input unit table; -- or return false, t where t is an error message table. -- For special processing (not a convert), can also return -- true, wikitext where wikitext is the final result. -- The returned input unit table may be for a fake unit using the specified -- unit code as the symbol and name, and with bad_mcode = message code table. -- MediaWiki removes leading and trailing whitespace from the values of -- named arguments. However, the values of numbered arguments include any -- whitespace entered in the template, and whitespace is used by some -- parameters (example: the numbered parameters associated with "disp=x"). local kv_pairs = {} -- table of input key:value pairs where key is a name; needed because cannot iterate parms and add new fields to it for k, v in pairs(args) do if type(k) == 'number' or k == 'test' then -- parameter "test" is reserved for testing and is not translated parms[k] = v else kv_pairs[k] = v end end if parms.test == 'wikidata' then local ulookup = function (ucode) -- Use empty table for parms so it does not accumulate results when used repeatedly. return lookup({}, ucode, 'no_combination') end return wikidata_call(parms, '_listunits', ulookup) end local success, msg = translate_parms(parms, kv_pairs) if not success then return false, msg end if parms.input then success, msg = wikidata_call(parms, '_adjustparameters', parms, 1) if not success then return false, msg end end local success, i, in_unit, in_unit_table = simple_get_values(parms) if not success then if type(i) == 'string' and i:match('^NNN+$') then -- Some infoboxes have examples like {{convert|NNN|m}} (3 or more "N"). -- Output an empty string for these. return false, { 'cvt_no_output' } end local valinfo success, valinfo, i = get_values(parms) if not success then return false, valinfo end in_unit = strip(parms[i]) i = i + 1 success, in_unit_table = lookup(parms, in_unit, 'no_combination') if not success then in_unit = in_unit or '' if parms.opt_ignore_error then -- display given unit code with no error (for use with {{val}}) in_unit_table = '' -- suppress error message and prevent processing of output unit end in_unit_table = setmetatable({ symbol = in_unit, name2 = in_unit, utype = in_unit, scale = 1, default = '', defkey = '', linkey = '', bad_mcode = in_unit_table }, unit_mt) end in_unit_table.valinfo = valinfo end if parms.test == 'msg' then -- Am testing the messages produced when no output unit is specified, and -- the input unit has a missing or invalid default. -- Set two units for testing that. -- LATER: Remove this code. if in_unit == 'chain' then in_unit_table.default = nil -- no default elseif in_unit == 'rd' then in_unit_table.default = "ft!X!m" -- an invalid expression end end in_unit_table.inout = 'in' -- this is an input unit if not parms.range then local success, inext, composite_unit = get_composite(parms, i, in_unit_table) if not success then return false, inext end if composite_unit then in_unit_table = composite_unit i = inext end end if in_unit_table.builtin == 'mach' then -- As with old template, a number following Mach as the input unit is the altitude. -- That is deprecated: should use altitude_ft=NUMBER or altitude_m=NUMBER. local success, info success = tonumber(parms[i]) -- this will often work and will give correct result for values like 2e4 without forcing output scientific notation if success then info = { value = success } else success, info = extract_number(parms, parms[i], false, true) end if success then i = i + 1 in_unit_table.altitude = info.value end end local word = strip(parms[i]) i = i + 1 local precision, is_bad_precision local function set_precision(text) local number, is_integer = get_number(text) if number then if is_integer then precision = number else precision = text is_bad_precision = true end return true -- text was used for precision, good or bad end end if word and not set_precision(word) then parms.out_unit = parms.out_unit or word if set_precision(strip(parms[i])) then i = i + 1 end end if parms.opt_adj_mid then word = parms[i] i = i + 1 if word then -- mid-text words if word:sub(1, 1) == '-' then parms.mid = word else parms.mid = ' ' .. word end end end if parms.opt_one_preunit then parms[parms.opt_flip and 'preunit2' or 'preunit1'] = preunits(1, parms[i]) i = i + 1 end if parms.disp == 'x' then -- Following is reasonably compatible with the old template. local first = parms[i] or '' local second = parms[i+1] or '' i = i + 2 if strip(first) == '' then -- user can enter '&#32;' rather than ' ' to avoid the default first = ' [&nbsp;' .. first second = '&nbsp;]' .. second end parms.joins = { first, second } elseif parms.opt_two_preunits then local p1, p2 = preunits(2, parms[i], parms[i+1]) i = i + 2 if parms.preunit1 then -- To simplify documentation, allow unlikely use of adj=pre with disp=preunit -- (however, an output unit must be specified with adj=pre and with disp=preunit). parms.preunit1 = parms.preunit1 .. p1 parms.preunit2 = p2 else parms.preunit1, parms.preunit2 = p1, p2 end end if precision == nil then if set_precision(strip(parms[i])) then i = i + 1 end end if is_bad_precision then add_warning(parms, 1, 'cvt_bad_prec', precision) else parms.precision = precision end for j = i, i + 3 do local parm = parms[j] -- warn if find a non-empty extraneous parameter if parm and parm:match('%S') then add_warning(parms, 1, 'cvt_unknown_option', parm) break end end return true, in_unit_table end local function record_default_precision(parms, out_current, precision) -- If necessary, adjust parameters and return a possibly adjusted precision. -- When converting a range of values where a default precision is required, -- that default is calculated for each value because the result sometimes -- depends on the precise input and output values. This function may cause -- the entire convert process to be repeated in order to ensure that the -- same default precision is used for each individual convert. -- If that were not done, a range like 1000 to 1000.4 may give poor results -- because the first output could be heavily rounded, while the second is not. -- For range 1000.4 to 1000, this function can give the second convert the -- same default precision that was used for the first. if not parms.opt_round_each then local maxdef = out_current.max_default_precision if maxdef then if maxdef < precision then parms.do_convert_again = true out_current.max_default_precision = precision else precision = out_current.max_default_precision end else out_current.max_default_precision = precision end end return precision end local function default_precision(parms, invalue, inclean, denominator, outvalue, in_current, out_current, extra) -- Return a default value for precision (an integer like 2, 0, -2). -- If denominator is not nil, it is the value of the denominator in inclean. -- Code follows procedures used in old template. local fudge = 1e-14 -- {{Order of magnitude}} adds this, so we do too local prec, minprec, adjust local subunit_ignore_trailing_zero local subunit_more_precision -- kludge for "in" used in input like "|2|ft|6|in" local composite = in_current.composite if composite then subunit_ignore_trailing_zero = true -- input "|2|st|10|lb" has precision 0, not -1 if composite[#composite].exception == 'subunit_more_precision' then subunit_more_precision = true -- do not use standard precision with input like "|2|ft|6|in" end end if denominator and denominator > 0 then prec = math.max(log10(denominator), 1) else -- Count digits after decimal mark, handling cases like '12.345e6'. local exponent local integer, dot, decimals, expstr = inclean:match('^(%d*)(%.?)(%d*)(.*)') local e = expstr:sub(1, 1) if e == 'e' or e == 'E' then exponent = tonumber(expstr:sub(2)) end if dot == '' then prec = subunit_ignore_trailing_zero and 0 or -integer:match('0*$'):len() else prec = #decimals end if exponent then -- So '1230' and '1.23e3' both give prec = -1, and '0.00123' and '1.23e-3' give 5. prec = prec - exponent end end if in_current.istemperature and out_current.istemperature then -- Converting between common temperatures (°C, °F, °R, K); not keVT. -- Kelvin value can be almost zero, or small but negative due to precision problems. -- Also, an input value like -300 C (below absolute zero) gives negative kelvins. -- Calculate minimum precision from absolute value. adjust = 0 local kelvin = abs((invalue - in_current.offset) * in_current.scale) if kelvin < 1e-8 then -- assume nonzero due to input or calculation precision problem minprec = 2 else minprec = 2 - floor(log10(kelvin) + fudge) -- 3 sigfigs in kelvin end else if invalue == 0 or outvalue <= 0 then -- We are never called with a negative outvalue, but it might be zero. -- This is special-cased to avoid calculation exceptions. return record_default_precision(parms, out_current, 0) end if out_current.exception == 'integer_more_precision' and floor(invalue) == invalue then -- With certain output units that sometimes give poor results -- with default rounding, use more precision when the input -- value is equal to an integer. An example of a poor result -- is when input 50 gives a smaller output than input 49.5. -- Experiment shows this helps, but it does not eliminate all -- surprises because it is not clear whether "50" should be -- interpreted as "from 45 to 55" or "from 49.5 to 50.5". adjust = -log10(in_current.scale) elseif subunit_more_precision then -- Conversion like "{{convert|6|ft|1|in|cm}}" (where subunit is "in") -- has a non-standard adjust value, to give more output precision. adjust = log10(out_current.scale) + 2 else adjust = log10(abs(invalue / outvalue)) end adjust = adjust + log10(2) -- Ensure that the output has at least two significant figures. minprec = 1 - floor(log10(outvalue) + fudge) end if extra then adjust = extra.adjust or adjust minprec = extra.minprec or minprec end return record_default_precision(parms, out_current, math.max(floor(prec + adjust), minprec)) end local function convert(parms, invalue, info, in_current, out_current) -- Convert given input value from one unit to another. -- Return output_value (a number) if a simple convert, or -- return f, t where -- f = true, t = table of information with results, or -- f = false, t = error message table. local inscale = in_current.scale local outscale = out_current.scale if not in_current.iscomplex and not out_current.iscomplex then return invalue * (inscale / outscale) -- minimize overhead for most common case end if in_current.invert or out_current.invert then -- Inverted units, such as inverse length, inverse time, or -- fuel efficiency. Built-in units do not have invert set. if (in_current.invert or 1) * (out_current.invert or 1) < 0 then return 1 / (invalue * inscale * outscale) end return invalue * (inscale / outscale) elseif in_current.offset then -- Temperature (there are no built-ins for this type of unit). if info.is_change then return invalue * (inscale / outscale) end return (invalue - in_current.offset) * (inscale / outscale) + out_current.offset else -- Built-in unit. local in_builtin = in_current.builtin local out_builtin = out_current.builtin if in_builtin and out_builtin then if in_builtin == out_builtin then return invalue end -- There are no cases (yet) where need to convert from one -- built-in unit to another, so this should never occur. return false, { 'cvt_bug_convert' } end if in_builtin == 'mach' or out_builtin == 'mach' then -- Should check that only one altitude is given but am planning to remove -- in_current.altitude (which can only occur when Mach is the input unit), -- and out_current.altitude cannot occur. local alt = parms.altitude_ft or in_current.altitude if not alt and parms.altitude_m then alt = parms.altitude_m / 0.3048 -- 1 ft = 0.3048 m end local spd = speed_of_sound(alt) if in_builtin == 'mach' then inscale = spd return invalue * (inscale / outscale) end outscale = spd local adjust = 0.1 / inscale return true, { outvalue = invalue * (inscale / outscale), adjust = log10(adjust) + log10(2), } elseif in_builtin == 'hand' then -- 1 hand = 4 inches; 1.2 hands = 6 inches. -- Decimals of a hand are only defined for the first digit, and -- the first fractional digit should be a number of inches (1, 2 or 3). -- However, this code interprets the entire fractional part as the number -- of inches / 10 (so 1.75 inches would be 0.175 hands). -- A value like 12.3 hands is exactly 12*4 + 3 inches; base default precision on that. local integer, fracpart = math.modf(invalue) local inch_value = 4 * integer + 10 * fracpart -- equivalent number of inches local factor = inscale / outscale if factor == 4 then -- Am converting to inches: show exact result, and use "inches" not "in" by default. if parms.abbr_org == nil then out_current.usename = true end local show = format('%g', abs(inch_value)) -- show and clean are unsigned if not show:find('e', 1, true) then return true, { invalue = inch_value, outvalue = inch_value, clean = show, show = show, } end end local outvalue = (integer + 2.5 * fracpart) * factor local fracstr = info.clean:match('%.(.*)') or '' local fmt if fracstr == '' then fmt = '%.0f' else fmt = '%.' .. format('%d', #fracstr - 1) .. 'f' end return true, { invalue = inch_value, clean = format(fmt, inch_value), outvalue = outvalue, minprec = 0, } end end return false, { 'cvt_bug_convert' } -- should never occur end local function user_style(parms, i) -- Return text for a user-specified style for a table cell, or '' if none, -- given i = 1 (input style) or 2 (output style). local style = parms[(i == 1) and 'stylein' or 'styleout'] if style then style = style:gsub('"', '') if style ~= '' then if style:sub(-1) ~= ';' then style = style .. ';' end return style end end return '' end local function make_table_or_sort(parms, invalue, info, in_current, scaled_top) -- Set options to handle output for a table or a sort key, or both. -- The text sort key is based on the value resulting from converting -- the input to a fake base unit with scale = 1, and other properties -- required for a conversion derived from the input unit. -- For other modules, return the sort key in a hidden span element, and -- the scaled value used to generate the sort key. -- If scaled_top is set, it is the scaled value of the numerator of a per unit -- to be combined with this unit (the denominator) to make the sort key. -- Scaling only works with units that convert with a factor (not temperature). local sortkey, scaled_value if parms.opt_sortable_on then local base = { -- a fake unit with enough fields for a valid convert scale = 1, invert = in_current.invert and 1, iscomplex = in_current.iscomplex, offset = in_current.offset and 0, } local outvalue, extra = convert(parms, invalue, info, in_current, base) if extra then outvalue = extra.outvalue end if in_current.istemperature then -- Have converted to kelvin; assume numbers close to zero have a -- rounding error and should be zero. if abs(outvalue) < 1e-12 then outvalue = 0 end end if scaled_top and outvalue ~= 0 then outvalue = scaled_top / outvalue end scaled_value = outvalue if not valid_number(outvalue) then if outvalue < 0 then sortkey = '1000000000000000000' else sortkey = '9000000000000000000' end elseif outvalue == 0 then sortkey = '5000000000000000000' else local mag = floor(log10(abs(outvalue)) + 1e-14) local prefix if outvalue > 0 then prefix = 7000 + mag else prefix = 2999 - mag outvalue = outvalue + 10^(mag+1) end sortkey = format('%d', prefix) .. format('%015.0f', floor(outvalue * 10^(14-mag))) end end local sortspan if sortkey and not parms.table_align then sortspan = parms.opt_sortable_debug and '<span data-sort-value="' .. sortkey .. '♠"><span style="border:1px solid">' .. sortkey .. '♠</span></span>' or '<span data-sort-value="' .. sortkey .. '♠"></span>' parms.join_before = sortspan end if parms.table_align then local sort if sortkey then sort = ' data-sort-value="' .. sortkey .. '"' if parms.opt_sortable_debug then parms.join_before = '<span style="border:1px solid">' .. sortkey .. '</span>' end else sort = '' end local style = 'style="text-align:' .. parms.table_align .. ';' local joins = {} for i = 1, 2 do joins[i] = (i == 1 and '' or '\n|') .. style .. user_style(parms, i) .. '"' .. sort .. '|' end parms.table_joins = joins end return sortspan, scaled_value end local cvt_to_hand local function cvtround(parms, info, in_current, out_current) -- Return true, t where t is a table with the conversion results; fields: -- show = rounded, formatted string with the result of converting value in info, -- using the rounding specified in parms. -- singular = true if result (after rounding and ignoring any negative sign) -- is "1", or like "1.00", or is a fraction with value < 1; -- (and more fields shown below, and a calculated 'absvalue' field). -- or return false, t where t is an error message table. -- Input info.clean uses en digits (it has been translated, if necessary). -- Output show uses en or non-en digits as appropriate, or can be spelled. if out_current.builtin == 'hand' then return cvt_to_hand(parms, info, in_current, out_current) end local invalue = in_current.builtin == 'hand' and info.altvalue or info.value local outvalue, extra = convert(parms, invalue, info, in_current, out_current) if parms.need_table_or_sort then parms.need_table_or_sort = nil -- process using first input value only make_table_or_sort(parms, invalue, info, in_current) end if extra then if not outvalue then return false, extra end invalue = extra.invalue or invalue outvalue = extra.outvalue end if not valid_number(outvalue) then return false, { 'cvt_invalid_num' } end local isnegative if outvalue < 0 then isnegative = true outvalue = -outvalue end local precision, show, exponent local denominator = out_current.frac if denominator then show = fraction_table(outvalue, denominator) else precision = parms.precision if not precision then if parms.sigfig then show, exponent = make_sigfig(outvalue, parms.sigfig) elseif parms.opt_round then local n = parms.opt_round if n == 0.5 then local integer, fracpart = math.modf(floor(2 * outvalue + 0.5) / 2) if fracpart == 0 then show = format('%.0f', integer) else show = format('%.1f', integer + fracpart) end else show = format('%.0f', floor((outvalue / n) + 0.5) * n) end elseif in_current.builtin == 'mach' then local sigfig = info.clean:gsub('^[0.]+', ''):gsub('%.', ''):len() + 1 show, exponent = make_sigfig(outvalue, sigfig) else local inclean = info.clean if extra then inclean = extra.clean or inclean show = extra.show end if not show then precision = default_precision(parms, invalue, inclean, info.denominator, outvalue, in_current, out_current, extra) end end end end if precision then if precision >= 0 then local fudge if precision <= 8 then -- Add a fudge to handle common cases of bad rounding due to inability -- to precisely represent some values. This makes the following work: -- {{convert|-100.1|C|K}} and {{convert|5555000|um|m|2}}. -- Old template uses #expr round, which invokes PHP round(). -- LATER: Investigate how PHP round() works. fudge = 2e-14 else fudge = 0 end local fmt = '%.' .. format('%d', precision) .. 'f' local success success, show = pcall(format, fmt, outvalue + fudge) if not success then return false, { 'cvt_big_prec', tostring(precision) } end else precision = -precision -- #digits to zero (in addition to any digits after dot) local shift = 10 ^ precision show = format('%.0f', outvalue/shift) if show ~= '0' then exponent = #show + precision end end end local t = format_number(parms, show, exponent, isnegative) if type(show) == 'string' then -- Set singular using match because on some systems 0.99999999999999999 is 1.0. if exponent then t.singular = (exponent == 1 and show:match('^10*$')) else t.singular = (show == '1' or show:match('^1%.0*$')) end else t.fraction_table = show t.singular = (outvalue <= 1) -- cannot have 'fraction == 1', but if it were possible it would be singular end t.raw_absvalue = outvalue -- absolute value before rounding return true, setmetatable(t, { __index = function (self, key) if key == 'absvalue' then -- Calculate absolute value after rounding, if needed. local clean, exponent = rawget(self, 'clean'), rawget(self, 'exponent') local value = tonumber(clean) -- absolute value (any negative sign has been ignored) if exponent then value = value * 10^exponent end rawset(self, key, value) return value end end }) end function cvt_to_hand(parms, info, in_current, out_current) -- Convert input to hands, inches. -- Return true, t where t is a table with the conversion results; -- or return false, t where t is an error message table. if parms.abbr_org == nil then out_current.usename = true -- default is to show name not symbol end local precision = parms.precision local frac = out_current.frac if not frac and precision and precision > 1 then frac = (precision == 2) and 2 or 4 end local out_next = out_current.out_next if out_next then -- Use magic knowledge to determine whether the next unit is inches without requiring i18n. -- The following ensures that when the output combination "hand in" is used, the inches -- value is rounded to match the hands value. Also, displaying say "61½" instead of 61.5 -- is better as 61.5 implies the value is not 61.4. if out_next.exception == 'subunit_more_precision' then out_next.frac = frac end end -- Convert to inches; calculate hands from that. local dummy_unit_table = { scale = out_current.scale / 4, frac = frac } local success, outinfo = cvtround(parms, info, in_current, dummy_unit_table) if not success then return false, outinfo end local tfrac = outinfo.fraction_table local inches = outinfo.raw_absvalue if tfrac then inches = floor(inches) -- integer part only; fraction added later else inches = floor(inches + 0.5) -- a hands measurement never shows decimals of an inch end local hands, inches = divide(inches, 4) outinfo.absvalue = hands + inches/4 -- supposed to be the absolute rounded value, but this is close enough local inchstr = tostring(inches) -- '0', '1', '2' or '3' if precision and precision <= 0 then -- using negative or 0 for precision rounds to nearest hand hands = floor(outinfo.raw_absvalue/4 + 0.5) inchstr = '' elseif tfrac then -- Always show an integer before fraction (like "15.0½") because "15½" means 15-and-a-half hands. inchstr = numdot .. format_fraction(parms, 'out', false, inchstr, tfrac.numstr, tfrac.denstr) else inchstr = numdot .. from_en(inchstr) end outinfo.show = outinfo.sign .. with_separator(parms, format('%.0f', hands)) .. inchstr return true, outinfo end local function evaluate_condition(value, condition) -- Return true or false from applying a conditional expression to value, -- or throw an error if invalid. -- A very limited set of expressions is supported: -- v < 9 -- v * 9 < 9 -- where -- 'v' is replaced with value -- 9 is any number (as defined by Lua tonumber) -- only en digits are accepted -- '<' can also be '<=' or '>' or '>=' -- In addition, the following form is supported: -- LHS and RHS -- where -- LHS, RHS = any of above expressions. local function compare(value, text) local arithop, factor, compop, limit = text:match('^%s*v%s*([*]?)(.-)([<>]=?)(.*)$') if arithop == nil then error('Invalid default expression', 0) elseif arithop == '*' then factor = tonumber(factor) if factor == nil then error('Invalid default expression', 0) end value = value * factor end limit = tonumber(limit) if limit == nil then error('Invalid default expression', 0) end if compop == '<' then return value < limit elseif compop == '<=' then return value <= limit elseif compop == '>' then return value > limit elseif compop == '>=' then return value >= limit end error('Invalid default expression', 0) -- should not occur end local lhs, rhs = condition:match('^(.-%W)and(%W.*)') if lhs == nil then return compare(value, condition) end return compare(value, lhs) and compare(value, rhs) end local function get_default(value, unit_table) -- Return true, s where s = name of unit's default output unit, -- or return false, t where t is an error message table. -- Some units have a default that depends on the input value -- (the first value if a range of values is used). -- If '!' is in the default, the first bang-delimited field is an -- expression that uses 'v' to represent the input value. -- Example: 'v < 120 ! small ! big ! suffix' (suffix is optional) -- evaluates 'v < 120' as a boolean with result -- 'smallsuffix' if (value < 120), or 'bigsuffix' otherwise. -- Input must use en digits and '.' decimal mark. local default = data_code.default_exceptions[unit_table.defkey or unit_table.symbol] or unit_table.default if not default then local per = unit_table.per if per then local function a_default(v, u) local success, ucode = get_default(v, u) if not success then return '?' -- an unlikely error has occurred; will cause lookup of default to fail end -- Attempt to use only the first unit if a combination or output multiple. -- This is not bulletproof but should work for most cases. -- Where it does not work, the convert will need to specify the wanted output unit. local t = all_units[ucode] if t then local combo = t.combination if combo then -- For a multiple like ftin, the "first" unit (ft) is last in the combination. local i = t.multiple and table_len(combo) or 1 ucode = combo[i] end else -- Try for an automatically generated combination. local item = ucode:match('^(.-)%+') or ucode:match('^(%S+)%s') if all_units[item] then return item end end return ucode end local unit1, unit2 = per[1], per[2] local def1 = (unit1 and a_default(value, unit1) or unit_table.vprefix or '') local def2 = a_default(1, unit2) -- 1 because per unit of denominator return true, def1 .. '/' .. def2 end return false, { 'cvt_no_default', unit_table.symbol } end if default:find('!', 1, true) == nil then return true, default end local t = split(default, '!') if #t == 3 or #t == 4 then local success, result = pcall(evaluate_condition, value, t[1]) if success then default = result and t[2] or t[3] if #t == 4 then default = default .. t[4] end return true, default end end return false, { 'cvt_bad_default', unit_table.symbol } end local linked_pages -- to record linked pages so will not link to the same page more than once local function unlink(unit_table) -- Forget that the given unit has previously been linked (if it has). -- That is needed when processing a range of inputs or outputs when an id -- for the first range value may have been evaluated, but only an id for -- the last value is displayed, and that id may need to be linked. linked_pages[unit_table.unitcode or unit_table] = nil end local function make_link(link, id, unit_table) -- Return wikilink "[[link|id]]", possibly abbreviated as in examples: -- [[Mile|mile]] --> [[mile]] -- [[Mile|miles]] --> [[mile]]s -- However, just id is returned if: -- * no link given (so caller does not need to check if a link was defined); or -- * link has previously been used during the current convert (to avoid overlinking). local link_key if unit_table then link_key = unit_table.unitcode or unit_table else link_key = link end if not link or link == '' or linked_pages[link_key] then return id end linked_pages[link_key] = true -- Following only works for language en, but it should be safe on other wikis, -- and overhead of doing it generally does not seem worthwhile. local l = link:sub(1, 1):lower() .. link:sub(2) if link == id or l == id then return '[[' .. id .. ']]' elseif link .. 's' == id or l .. 's' == id then return '[[' .. id:sub(1, -2) .. ']]s' else return '[[' .. link .. '|' .. id .. ']]' end end local function variable_name(clean, unit_table) -- For slwiki, a unit name depends on the value. -- Parameter clean is the unsigned rounded value in en digits, as a string. -- Value Source Example for "m" -- integer 1: name1 meter (also is the name of the unit) -- integer 2: var{1} metra -- integer 3 and 4: var{2} metri -- integer else: var{3} metrov (0 and 5 or more) -- real/fraction: var{4} metra -- var{i} means the i'th field in unit_table.varname if it exists and has -- an i'th field, otherwise name2. -- Fields are separated with "!" and are not empty. -- A field for a unit using an SI prefix has the prefix name inserted, -- replacing '#' if found, or before the field otherwise. local vname if clean == '1' then vname = unit_table.name1 elseif unit_table.varname then local i if clean == '2' then i = 1 elseif clean == '3' or clean == '4' then i = 2 elseif clean:find('.', 1, true) then i = 4 else i = 3 end if i > 1 and varname == 'pl' then i = i - 1 end vname = split(unit_table.varname, '!')[i] end if vname then local si_name = rawget(unit_table, 'si_name') or '' local pos = vname:find('#', 1, true) if pos then vname = vname:sub(1, pos - 1) .. si_name .. vname:sub(pos + 1) else vname = si_name .. vname end return vname end return unit_table.name2 end local function linked_id(parms, unit_table, key_id, want_link, clean) -- Return final unit id (symbol or name), optionally with a wikilink, -- and update unit_table.sep if required. -- key_id is one of: 'symbol', 'sym_us', 'name1', 'name1_us', 'name2', 'name2_us'. local abbr_on = (key_id == 'symbol' or key_id == 'sym_us') if abbr_on and want_link then local symlink = rawget(unit_table, 'symlink') if symlink then return symlink -- for exceptions that have the linked symbol built-in end end local multiplier = rawget(unit_table, 'multiplier') local per = unit_table.per if per then local paren1, paren2 = '', '' -- possible parentheses around bottom unit local unit1 = per[1] -- top unit_table, or nil local unit2 = per[2] -- bottom unit_table if abbr_on then if not unit1 then unit_table.sep = '' -- no separator in "$2/acre" end if not want_link then local symbol = unit_table.symbol_raw if symbol then return symbol -- for exceptions that have the symbol built-in end end if (unit2.symbol):find('⋅', 1, true) then paren1, paren2 = '(', ')' end end local key_id2 -- unit2 is always singular if key_id == 'name2' then key_id2 = 'name1' elseif key_id == 'name2_us' then key_id2 = 'name1_us' else key_id2 = key_id end local result if abbr_on then result = '/' elseif omitsep then result = per_word elseif unit1 then result = ' ' .. per_word .. ' ' else result = per_word .. ' ' end if want_link and unit_table.link then if abbr_on or not varname then result = (unit1 and linked_id(parms, unit1, key_id, false, clean) or '') .. result .. linked_id(parms, unit2, key_id2, false, '1') else result = (unit1 and variable_name(clean, unit1) or '') .. result .. variable_name('1', unit2) end if omit_separator(result) then unit_table.sep = '' end return make_link(unit_table.link, result, unit_table) end if unit1 then result = linked_id(parms, unit1, key_id, want_link, clean) .. result if unit1.sep then unit_table.sep = unit1.sep end elseif omitsep then unit_table.sep = '' end return result .. paren1 .. linked_id(parms, unit2, key_id2, want_link, '1') .. paren2 end if multiplier then -- A multiplier (like "100" in "100km") forces the unit to be plural. multiplier = from_en(multiplier) if not omitsep then multiplier = multiplier .. (abbr_on and '&nbsp;' or ' ') end if not abbr_on then if key_id == 'name1' then key_id = 'name2' elseif key_id == 'name1_us' then key_id = 'name2_us' end end else multiplier = '' end local id = unit_table.fixed_name or ((varname and not abbr_on) and variable_name(clean, unit_table) or unit_table[key_id]) if omit_separator(id) then unit_table.sep = '' end if want_link then local link = data_code.link_exceptions[unit_table.linkey or unit_table.symbol] or unit_table.link if link then local before = '' local i = unit_table.customary if i == 1 and parms.opt_sp_us then i = 2 -- show "U.S." not "US" end if i == 3 and abbr_on then i = 4 -- abbreviate "imperial" to "imp" end local customary = text_code.customary_units[i] if customary then -- LATER: This works for language en only, but it's esoteric so ignore for now. local pertext if id:sub(1, 1) == '/' then -- Want unit "/USgal" to display as "/U.S. gal", not "U.S. /gal". pertext = '/' id = id:sub(2) elseif id:sub(1, 4) == 'per ' then -- Similarly want "per U.S. gallon", not "U.S. per gallon" (but in practice this is unlikely to be used). pertext = 'per ' id = id:sub(5) else pertext = '' end -- Omit any "US"/"U.S."/"imp"/"imperial" from start of id since that will be inserted. local removes = (i < 3) and { 'US&nbsp;', 'US ', 'U.S.&nbsp;', 'U.S. ' } or { 'imp&nbsp;', 'imp ', 'imperial ' } for _, prefix in ipairs(removes) do local plen = #prefix if id:sub(1, plen) == prefix then id = id:sub(plen + 1) break end end before = pertext .. make_link(customary.link, customary[1]) .. ' ' end id = before .. make_link(link, id, unit_table) end end return multiplier .. id end local function make_id(parms, which, unit_table) -- Return id, f where -- id = unit name or symbol, possibly modified -- f = true if id is a name, or false if id is a symbol -- using the value for index 'which', and for 'in' or 'out' (unit_table.inout). -- Result is '' if no symbol/name is to be used. -- In addition, set unit_table.sep = ' ' or '&nbsp;' or '' -- (the separator that caller will normally insert before the id). if parms.opt_values then unit_table.sep = '' return '' end local inout = unit_table.inout local info = unit_table.valinfo[which] local abbr_org = parms.abbr_org local adjectival = parms.opt_adjectival local lk = parms.lk local want_link = (lk == 'on' or lk == inout) local usename = unit_table.usename local singular = info.singular local want_name if usename then want_name = true else if abbr_org == nil then if parms.wantname then want_name = true end if unit_table.usesymbol then want_name = false end end if want_name == nil then local abbr = parms.abbr if abbr == 'on' or abbr == inout or (abbr == 'mos' and inout == 'out') then want_name = false else want_name = true end end end local key if want_name then if lk == nil and unit_table.builtin == 'hand' then want_link = true end if parms.opt_use_nbsp then unit_table.sep = '&nbsp;' else unit_table.sep = ' ' end if parms.opt_singular then local value if inout == 'in' then value = info.value else value = info.absvalue end if value then -- some unusual units do not always set value field value = abs(value) singular = (0 < value and value < 1.0001) end end if unit_table.engscale then -- engscale: so "|1|e3kg" gives "1 thousand kilograms" (plural) singular = false end key = (adjectival or singular) and 'name1' or 'name2' if parms.opt_sp_us then key = key .. '_us' end else if unit_table.builtin == 'hand' then if parms.opt_hand_hh then unit_table.symbol = 'hh' -- LATER: might want i18n applied to this end end unit_table.sep = '&nbsp;' key = parms.opt_sp_us and 'sym_us' or 'symbol' end return linked_id(parms, unit_table, key, want_link, info.clean), want_name end local function decorate_value(parms, unit_table, which, number_word) -- If needed, update unit_table so values will be shown with extra information. -- For consistency with the old template (but different from fmtpower), -- the style to display powers of 10 includes "display:none" to allow some -- browsers to copy, for example, "10³" as "10^3", rather than as "103". local info local engscale = unit_table.engscale local prefix = unit_table.vprefix if engscale or prefix then info = unit_table.valinfo[which] if info.decorated then return -- do not redecorate if repeating convert end info.decorated = true if engscale then local inout = unit_table.inout local abbr = parms.abbr if (abbr == 'on' or abbr == inout) and not parms.number_word then info.show = info.show .. '<span style="margin-left:0.2em">×<span style="margin-left:0.1em">' .. from_en('10') .. '</span></span><s style="display:none">^</s><sup>' .. from_en(tostring(engscale.exponent)) .. '</sup>' elseif number_word then local number_id local lk = parms.lk if lk == 'on' or lk == inout then number_id = make_link(engscale.link, engscale[1]) else number_id = engscale[1] end -- WP:NUMERAL recommends "&nbsp;" in values like "12 million". info.show = info.show .. (parms.opt_adjectival and '-' or '&nbsp;') .. number_id end end if prefix then info.show = prefix .. info.show end end end local function process_input(parms, in_current) -- Processing required once per conversion. -- Return block of text to represent input (value/unit). if parms.opt_output_only or parms.opt_output_number_only or parms.opt_output_unit_only then parms.joins = { '', '' } return '' end local first_unit local composite = in_current.composite -- nil or table of units if composite then first_unit = composite[1] else first_unit = in_current end local id1, want_name = make_id(parms, 1, first_unit) local sep = first_unit.sep -- separator between value and unit, set by make_id local preunit = parms.preunit1 if preunit then sep = '' -- any separator is included in preunit else preunit = '' end if parms.opt_input_unit_only then parms.joins = { '', '' } if composite then local parts = { id1 } for i, unit in ipairs(composite) do if i > 1 then table.insert(parts, (make_id(parms, 1, unit))) end end id1 = table.concat(parts, ' ') end if want_name and parms.opt_adjectival then return preunit .. hyphenated(id1) end return preunit .. id1 end if parms.opt_also_symbol and not composite and not parms.opt_flip then local join1 = parms.joins[1] if join1 == ' (' or join1 == ' [' then parms.joins = { ' [' .. first_unit[parms.opt_sp_us and 'sym_us' or 'symbol'] .. ']' .. join1 , parms.joins[2] } end end if in_current.builtin == 'mach' and first_unit.sep ~= '' then -- '' means omitsep with non-enwiki name local prefix = id1 .. '&nbsp;' local range = parms.range local valinfo = first_unit.valinfo local result = prefix .. valinfo[1].show if range then -- For simplicity and because more not needed, handle one range item only. local prefix2 = make_id(parms, 2, first_unit) .. '&nbsp;' result = range_text(range[1], want_name, parms, result, prefix2 .. valinfo[2].show, 'in', {spaced=true}) end return preunit .. result end if composite then -- Simplify: assume there is no range, and no decoration. local mid = (not parms.opt_flip) and parms.mid or '' local sep1 = '&nbsp;' local sep2 = ' ' if parms.opt_adjectival and want_name then sep1 = '-' sep2 = '-' end if omitsep and sep == '' then -- Testing the id of the most significant unit should be sufficient. sep1 = '' sep2 = '' end local parts = { first_unit.valinfo[1].show .. sep1 .. id1 } for i, unit in ipairs(composite) do if i > 1 then table.insert(parts, unit.valinfo[1].show .. sep1 .. (make_id(parms, 1, unit))) end end return table.concat(parts, sep2) .. mid end local add_unit = (parms.abbr == 'mos') or parms[parms.opt_flip and 'out_range_x' or 'in_range_x'] or (not want_name and parms.abbr_range_x) local range = parms.range if range and not add_unit then unlink(first_unit) end local id = range and make_id(parms, range.n + 1, first_unit) or id1 local extra, was_hyphenated = hyphenated_maybe(parms, want_name, sep, id, 'in') if was_hyphenated then add_unit = false end local result local valinfo = first_unit.valinfo if range then for i = 0, range.n do local number_word if i == range.n then add_unit = false number_word = true end decorate_value(parms, first_unit, i+1, number_word) local show = valinfo[i+1].show if add_unit then show = show .. first_unit.sep .. (i == 0 and id1 or make_id(parms, i+1, first_unit)) end if i == 0 then result = show else result = range_text(range[i], want_name, parms, result, show, 'in') end end else decorate_value(parms, first_unit, 1, true) result = valinfo[1].show end return result .. preunit .. extra end local function process_one_output(parms, out_current) -- Processing required for each output unit. -- Return block of text to represent output (value/unit). local inout = out_current.inout -- normally 'out' but can be 'in' for order=out local id1, want_name = make_id(parms, 1, out_current) local sep = out_current.sep -- set by make_id local preunit = parms.preunit2 if preunit then sep = '' -- any separator is included in preunit else preunit = '' end if parms.opt_output_unit_only then if want_name and parms.opt_adjectival then return preunit .. hyphenated(id1) end return preunit .. id1 end if out_current.builtin == 'mach' and out_current.sep ~= '' then -- '' means omitsep with non-enwiki name local prefix = id1 .. '&nbsp;' local range = parms.range local valinfo = out_current.valinfo local result = prefix .. valinfo[1].show if range then -- For simplicity and because more not needed, handle one range item only. result = range_text(range[1], want_name, parms, result, prefix .. valinfo[2].show, inout, {spaced=true}) end return preunit .. result end local add_unit = (parms[parms.opt_flip and 'in_range_x' or 'out_range_x'] or (not want_name and parms.abbr_range_x)) and not parms.opt_output_number_only local range = parms.range if range and not add_unit then unlink(out_current) end local id = range and make_id(parms, range.n + 1, out_current) or id1 local extra, was_hyphenated = hyphenated_maybe(parms, want_name, sep, id, inout) if was_hyphenated then add_unit = false end local result local valinfo = out_current.valinfo if range then for i = 0, range.n do local number_word if i == range.n then add_unit = false number_word = true end decorate_value(parms, out_current, i+1, number_word) local show = valinfo[i+1].show if add_unit then show = show .. out_current.sep .. (i == 0 and id1 or make_id(parms, i+1, out_current)) end if i == 0 then result = show else result = range_text(range[i], want_name, parms, result, show, inout) end end else decorate_value(parms, out_current, 1, true) result = valinfo[1].show end if parms.opt_output_number_only then return result end return result .. preunit .. extra end local function make_output_single(parms, in_unit_table, out_unit_table) -- Return true, item where item = wikitext of the conversion result -- for a single output (which is not a combination or a multiple); -- or return false, t where t is an error message table. if parms.opt_order_out and in_unit_table.unitcode == out_unit_table.unitcode then out_unit_table.valinfo = in_unit_table.valinfo else out_unit_table.valinfo = collection() for _, v in ipairs(in_unit_table.valinfo) do local success, info = cvtround(parms, v, in_unit_table, out_unit_table) if not success then return false, info end out_unit_table.valinfo:add(info) end end return true, process_one_output(parms, out_unit_table) end local function make_output_multiple(parms, in_unit_table, out_unit_table) -- Return true, item where item = wikitext of the conversion result -- for an output which is a multiple (like 'ftin'); -- or return false, t where t is an error message table. local inout = out_unit_table.inout -- normally 'out' but can be 'in' for order=out local multiple = out_unit_table.multiple -- table of scaling factors (will not be nil) local combos = out_unit_table.combination -- table of unit tables (will not be nil) local abbr = parms.abbr local abbr_org = parms.abbr_org local disp = parms.disp local want_name = (abbr_org == nil and (disp == 'or' or disp == 'slash')) or not (abbr == 'on' or abbr == inout or abbr == 'mos') local want_link = (parms.lk == 'on' or parms.lk == inout) local mid = parms.opt_flip and parms.mid or '' local sep1 = '&nbsp;' local sep2 = ' ' if parms.opt_adjectival and want_name then sep1 = '-' sep2 = '-' end local do_spell = parms.opt_spell_out parms.opt_spell_out = nil -- so the call to cvtround does not spell the value local function make_result(info, isfirst) local fmt, outvalue, sign local results = {} for i = 1, #combos do local tfrac, thisvalue, strforce local out_current = combos[i] out_current.inout = inout local scale = multiple[i] if i == 1 then -- least significant unit ('in' from 'ftin') local decimals out_current.frac = out_unit_table.frac local success, outinfo = cvtround(parms, info, in_unit_table, out_current) if not success then return false, outinfo end if isfirst then out_unit_table.valinfo = { outinfo } -- in case output value of first least significant unit is needed end sign = outinfo.sign tfrac = outinfo.fraction_table if outinfo.is_scientific then strforce = outinfo.show decimals = '' elseif tfrac then decimals = '' else local show = outinfo.show -- number as a string in local language local p1, p2 = show:find(numdot, 1, true) decimals = p1 and show:sub(p2 + 1) or '' -- text after numdot, if any end fmt = '%.' .. ulen(decimals) .. 'f' -- to reproduce precision if decimals == '' then if tfrac then outvalue = floor(outinfo.raw_absvalue) -- integer part only; fraction added later else outvalue = floor(outinfo.raw_absvalue + 0.5) -- keep all integer digits of least significant unit end else outvalue = outinfo.absvalue end end if scale then outvalue, thisvalue = divide(outvalue, scale) else thisvalue = outvalue end local id if want_name then if varname then local clean if strforce or tfrac then clean = '.1' -- dummy value to force name for floating point else clean = format(fmt, thisvalue) end id = variable_name(clean, out_current) else local key = 'name2' if parms.opt_adjectival then key = 'name1' elseif tfrac then if thisvalue == 0 then key = 'name1' end elseif parms.opt_singular then if 0 < thisvalue and thisvalue < 1.0001 then key = 'name1' end else if thisvalue == 1 then key = 'name1' end end id = out_current[key] end else id = out_current['symbol'] end if i == 1 and omit_separator(id) then -- Testing the id of the least significant unit should be sufficient. sep1 = '' sep2 = '' end if want_link then local link = out_current.link if link then id = make_link(link, id, out_current) end end local strval local spell_inout = (i == #combos or outvalue == 0) and inout or '' -- trick so the last value processed (first displayed) has uppercase, if requested if strforce and outvalue == 0 then sign = '' -- any sign is in strforce strval = strforce -- show small values in scientific notation; will only use least significant unit elseif tfrac then local wholestr = (thisvalue > 0) and tostring(thisvalue) or nil strval = format_fraction(parms, spell_inout, false, wholestr, tfrac.numstr, tfrac.denstr, do_spell) else strval = (thisvalue == 0) and from_en('0') or with_separator(parms, format(fmt, thisvalue)) if do_spell then strval = spell_number(parms, spell_inout, strval) or strval end end table.insert(results, strval .. sep1 .. id) if outvalue == 0 then break end fmt = '%.0f' -- only least significant unit can have a non-integral value end local reversed, count = {}, #results for i = 1, count do reversed[i] = results[count + 1 - i] end return true, sign .. table.concat(reversed, sep2) end local valinfo = in_unit_table.valinfo local success, result = make_result(valinfo[1], true) if not success then return false, result end local range = parms.range if range then for i = 1, range.n do local success, result2 = make_result(valinfo[i+1]) if not success then return false, result2 end result = range_text(range[i], want_name, parms, result, result2, inout, {spaced=true}) end end return true, result .. mid end local function process(parms, in_unit_table, out_unit_table) -- Return true, s, outunit where s = final wikitext result, -- or return false, t where t is an error message table. linked_pages = {} local success, bad_output local bad_input_mcode = in_unit_table.bad_mcode -- nil if input unit is a valid convert unit local out_unit = parms.out_unit if out_unit == nil or out_unit == '' or type(out_unit) == 'function' then if bad_input_mcode or parms.opt_input_unit_only then bad_output = '' else local getdef = type(out_unit) == 'function' and out_unit or get_default success, out_unit = getdef(in_unit_table.valinfo[1].value, in_unit_table) parms.out_unit = out_unit if not success then bad_output = out_unit end end end if not bad_output and not out_unit_table then success, out_unit_table = lookup(parms, out_unit, 'any_combination') if success then local mismatch = check_mismatch(in_unit_table, out_unit_table) if mismatch then bad_output = mismatch end else bad_output = out_unit_table end end local lhs, rhs local flipped = parms.opt_flip and not bad_input_mcode if bad_output then rhs = (bad_output == '') and '' or message(parms, bad_output) elseif parms.opt_input_unit_only then rhs = '' else local combos -- nil (for 'ft' or 'ftin'), or table of unit tables (for 'm ft') if not out_unit_table.multiple then -- nil/false ('ft' or 'm ft'), or table of factors ('ftin') combos = out_unit_table.combination end local frac = parms.frac -- nil or denominator of fraction for output values if frac then -- Apply fraction to the unit (if only one), or to non-SI units (if a combination), -- except that if a precision is also specified, the fraction only applies to -- the hand unit; that allows the following result: -- {{convert|156|cm|in hand|1|frac=2}} → 156 centimetres (61.4 in; 15.1½ hands) -- However, the following is handled elsewhere as a special case: -- {{convert|156|cm|hand in|1|frac=2}} → 156 centimetres (15.1½ hands; 61½ in) if combos then local precision = parms.precision for _, unit in ipairs(combos) do if unit.builtin == 'hand' or (not precision and not unit.prefixes) then unit.frac = frac end end else out_unit_table.frac = frac end end local outputs = {} local imax = combos and #combos or 1 -- 1 (single unit) or number of unit tables if imax == 1 then parms.opt_order_out = nil -- only useful with an output combination end if not flipped and not parms.opt_order_out then -- Process left side first so any duplicate links (from lk=on) are suppressed -- on right. Example: {{convert|28|e9pc|e9ly|abbr=off|lk=on}} lhs = process_input(parms, in_unit_table) end for i = 1, imax do local success, item local out_current = combos and combos[i] or out_unit_table out_current.inout = 'out' if i == 1 then if imax > 1 and out_current.builtin == 'hand' then out_current.out_next = combos[2] -- built-in hand can influence next unit in a combination end if parms.opt_order_out then out_current.inout = 'in' end end if out_current.multiple then success, item = make_output_multiple(parms, in_unit_table, out_current) else success, item = make_output_single(parms, in_unit_table, out_current) end if not success then return false, item end outputs[i] = item end if parms.opt_order_out then lhs = outputs[1] table.remove(outputs, 1) end local sep = parms.table_joins and parms.table_joins[2] or parms.join_between rhs = table.concat(outputs, sep) end if flipped or not lhs then local input = process_input(parms, in_unit_table) if flipped then lhs = rhs rhs = input else lhs = input end end if parms.join_before then lhs = parms.join_before .. lhs end local wikitext if bad_input_mcode then if bad_input_mcode == '' then wikitext = lhs else wikitext = lhs .. message(parms, bad_input_mcode) end elseif parms.table_joins then wikitext = parms.table_joins[1] .. lhs .. parms.table_joins[2] .. rhs else wikitext = lhs .. parms.joins[1] .. rhs .. parms.joins[2] end if parms.warnings and not bad_input_mcode then wikitext = wikitext .. parms.warnings end return true, get_styles(parms) .. wikitext, out_unit_table end local function main_convert(frame) -- Do convert, and if needed, do it again with higher default precision. local parms = { frame = frame } -- will hold template arguments, after translation set_config(frame.args) local success, result = get_parms(parms, frame:getParent().args) if success then if type(result) ~= 'table' then return tostring(result) end local in_unit_table = result local out_unit_table for _ = 1, 2 do -- use counter so cannot get stuck repeating convert success, result, out_unit_table = process(parms, in_unit_table, out_unit_table) if success and parms.do_convert_again then parms.do_convert_again = false else break end end end -- If input=x gives a problem, the result should be just the user input -- (if x is a property like P123 it has been replaced with ''). -- An unknown input unit would display the input and an error message -- with success == true at this point. -- Also, can have success == false with a message that outputs an empty string. if parms.input_text then if success and not parms.have_problem then return result end local cat if parms.tracking then -- Add a tracking category using the given text as the category sort key. -- There is currently only one type of tracking, but in principle multiple -- items could be tracked, using different sort keys for convenience. cat = wanted_category('tracking', parms.tracking) end return parms.input_text .. (cat or '') end return success and result or message(parms, result) end local function _unit(unitcode, options) -- Helper function for Module:Val to look up a unit. -- Parameter unitcode must be a string to identify the wanted unit. -- Parameter options must be nil or a table with optional fields: -- value = number (for sort key; default value is 1) -- scaled_top = nil for a normal unit, or a number for a unit which is -- the denominator of a per unit (for sort key) -- si = { 'symbol', 'link' } -- (a table with two strings) to make an SI unit -- that will be used for the look up -- link = true if result should be [[linked]] -- sort = 'on' or 'debug' if result should include a sort key in a -- span element ('debug' makes the key visible) -- name = true for the name of the unit instead of the symbol -- us = true for the US spelling of the unit, if any -- Return nil if unitcode is not a non-empty string. -- Otherwise return a table with fields: -- text = requested symbol or name of unit, optionally linked -- scaled_value = input value adjusted by unit scale; used for sort key -- sortspan = span element with sort key like that provided by {{ntsh}}, -- calculated from the result of converting value -- to a base unit with scale 1. -- unknown = true if the unitcode was not known unitcode = strip(unitcode) if unitcode == nil or unitcode == '' then return nil end set_config({}) linked_pages = {} options = options or {} local parms = { abbr = options.name and 'off' or 'on', lk = options.link and 'on' or nil, opt_sp_us = options.us and true or nil, opt_ignore_error = true, -- do not add pages using this function to 'what links here' for Module:Convert/extra opt_sortable_on = options.sort == 'on' or options.sort == 'debug', opt_sortable_debug = options.sort == 'debug', } if options.si then -- Make a dummy table of units (just one unit) for lookup to use. -- This makes lookup recognize any SI prefix in the unitcode. local symbol = options.si[1] or '?' parms.unittable = { [symbol] = { _name1 = symbol, _name2 = symbol, _symbol = symbol, utype = symbol, scale = symbol == 'g' and 0.001 or 1, prefixes = 1, default = symbol, link = options.si[2], }} end local success, unit_table = lookup(parms, unitcode, 'no_combination') if not success then unit_table = setmetatable({ symbol = unitcode, name2 = unitcode, utype = unitcode, scale = 1, default = '', defkey = '', linkey = '' }, unit_mt) end local value = tonumber(options.value) or 1 local clean = tostring(abs(value)) local info = { value = value, altvalue = value, singular = (clean == '1'), clean = clean, show = clean, } unit_table.inout = 'in' unit_table.valinfo = { info } local sortspan, scaled_value if options.sort then sortspan, scaled_value = make_table_or_sort(parms, value, info, unit_table, options.scaled_top) end return { text = make_id(parms, 1, unit_table), sortspan = sortspan, scaled_value = scaled_value, unknown = not success and true or nil, } end return { convert = main_convert, _unit = _unit } cac541bea61c5fbbcb0a2768343935e97587b60a Template:Infobox political party/doc 10 1531 2866 2023-05-10T17:03:29Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!--Categories where indicated at the bottom of this page, please; interwikis at Wikidata (see [[Wikipedia:Wikidata]])--> {{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}} {{Auto short description}} {{lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} ==Usage== ===Basic=== {{Parameter names example |name |logo |logo_alt |colorcode=red |leader |president |chairperson |secretary |general_secretary |first_secretary |secretary_general |presidium |governing_body |standing_committee |spokesperson |founder |founded |headquarters |ideology |international |website |country }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox political party | name = | logo = | logo_alt = | colorcode = <!-- HTML color code (e.g. "red", "#FF0000" or Party metadata color template) otherwise "transparent" --> | leader = | president = | chairperson = | secretary = | general_secretary = | first_secretary = | secretary_general = | presidium = | governing_body = | standing_committee = | spokesperson = | founder = | founded = <!-- {{start date|YYYY|MM|DD}} --> | headquarters = | ideology = | international = | website = | country = }} </syntaxhighlight> {{clear right}} ===Full=== {{Parameter names example |name |native_name |native_name_lang |lang1 |name_lang1 |lang2 |name_lang2 |lang3 |name_lang3 |lang4 |name_lang4 |logo |logo_size |logo_upright |logo_alt |caption |colorcode=red |abbreviation={{{abbreviation}}} or {{{abbr}}} |leader |president |chairperson={{{chairperson}}} or {{{chairman}}} |general_secretary |first_secretary |secretary_general |presidium |governing_body |standing_committee |secretary |spokesperson={{{spokesperson}}} or {{{spokesman}}} |leader1_title |leader1_name |leader2_title |leader2_name |leader3_title |leader3_name |leader4_title |leader4_name |leader5_title |leader5_name |founder={{{founder}}} or {{{founders}}} |founded={{{founded}}} or {{{foundation}}} |registered |legalised={{{legalised}}} or {{{legalized}}} |dissolved={{{dissolved}}} or {{{banned}}} or {{{dissolution}}} |merger |split |predecessor |merged |successor |headquarters |newspaper |think_tank |student_wing |youth_wing |womens_wing |lgbt_wing |wing1_title |wing1 |wing2_title |wing2 |wing3_title |wing3 |wing4_title |wing4 |membership_year=[''year''] |membership |ideology |position |religion |national |regional |european |continental |international |europarl |affiliation1_title |affiliation1 |affiliation2_title |affiliation2 |colors={{{colors}}} or {{{colours}}} |slogan |anthem |blank1_title |blank1 |blank2_title |blank2 |blank3_title |blank3 |blank4_title |blank4 |seats1_title |seats1 |seats2_title |seats2 |seats3_title |seats3 |seats4_title |seats4 |symbol |flag |flag_title |flag_alt |website |country |country2 |footnotes }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox political party | name = | native_name = | native_name_lang = | lang1 = | name_lang1 = | lang2 = | name_lang2 = | lang3 = | name_lang3 = | lang4 = | name_lang4 = | logo = | logo_size = | logo_upright = | logo_alt = | caption = | colorcode = <!-- HTML color code (e.g. "red", "#FF0000" or Party metadata color template) otherwise "transparent" --> | abbreviation = <!-- official abbreviation or | abbr = --> | leader = | president = | chairperson = <!-- or | chairman = --> | secretary = | general_secretary = | first_secretary = | secretary_general = | presidium = | governing_body = | standing_committee = | spokesperson = <!-- or | spokesman = --> | leader1_title = | leader1_name = | leader2_title = | leader2_name = | leader3_title = | leader3_name = | leader4_title = | leader4_name = | leader5_title = | leader5_name = | founder = <!-- or | founders = --> | founded = <!-- or | foundation = use {{start date|YYYY|MM|DD}} --> | registered = | legalised = <!-- or | legalized = --> | dissolved = <!-- or | banned = or | dissolution = use {{end date|YYYY|MM|DD}} --> | merger = | split = | predecessor = | merged = | successor = | headquarters = | newspaper = | think_tank = | student_wing = | youth_wing = | womens_wing = | wing1_title = | wing1 = | wing2_title = | wing2 = | wing3_title = | wing3 = | wing4_title = | wing4 = | membership_year = | membership = | ideology = | position = | religion = | national = | regional = <!-- or | regional affiliation = --> | european = | continental = <!-- or | continental affiliation = --> | international = | europarl = | affiliation1_title = | affiliation1 = | affiliation2_title = | affiliation2 = | colors = <!-- or | colours = ; use based on [[WP:ENGVAR]]--> | slogan = | anthem = | blank1_title = | blank1 = | blank2_title = | blank2 = | blank3_title = | blank3 = | blank4_title = | blank4 = | seats1_title = | seats1 = <!-- {{Infobox political party/seats|50|100|hex=#ff0000}} --> | seats2_title = | seats2 = | seats3_title = | seats3 = | seats4_title = <!-- up to | seats11_title = --> | seats4 = <!-- up to | seats11 = --> | symbol = | flag = | flag_title = | flag_alt = | website = | state = <!-- or | country = --> | country = <!-- or | state = --> | country_dab1 = | parties_dab1 = | elections_dab1 = | country2 = | country_dab2 = | parties_dab2 = | elections_dab2 = | footnotes = }} </syntaxhighlight> {{clear right}} ==Microformat== {{UF-hcard-org}} == TemplateData == {{TemplateData header}} <templatedata> { "description": "An infobox for a political party. Used to briefly summarize information about a party at the top of the article. ", "format": "{{_\n| ________________ = _\n}}\n", "params": { "name": { "label": "Name", "description": "The name of the party", "type": "string" }, "logo": { "label": "Logo", "description": "The logo of the party", "type": "string" }, "logo_size": { "label": "Logo size", "description": "Size of logo image", "type": "string" }, "colorcode": { "label": "Color code", "description": "The color to be used for infobox accents. HTML color code (e.g. red, #FF0000 or Party metadata color template) or transparent for no coloring.", "type": "string" }, "leader": { "label": "Leader", "description": "The leader of the party", "type": "string" }, "president": { "label": "President", "description": "The president of the party", "type": "string" }, "chairperson": { "label": "Chairperson", "description": "The chairperson of the party", "type": "string", "aliases": [ "chairman" ] }, "secretary": { "label": "Secretary", "description": "The secretary of the party", "type": "string" }, "general_secretary": { "label": "General secretary", "description": "The general secretary of the party", "type": "string" }, "first_secretary": { "label": "First secretary", "description": "The first secretary of the party", "type": "string" }, "secretary_general": { "label": "Secretary-general", "description": "The secretary-general of the party", "type": "string" }, "presidium": { "label": "Presidium", "description": "The presidium of the party", "type": "string" }, "spokesperson": { "label": "Spokesperson", "description": "The spokesperson of the party", "type": "string", "aliases": [ "spokesman" ] }, "foundation": { "label": "Foundation", "description": "The foundation date of the party. Insert as {{Start date|YYYY|MM|DD}}.", "type": "string", "aliases": [ "founded" ] }, "ideology": { "label": "Ideology", "description": "The ideology of the party", "type": "string" }, "headquarters": { "label": "Headquarters", "description": "The headquarters of the party", "type": "string" }, "international": { "label": "International", "description": "The party’s international affiliation(s)", "type": "string" }, "website": { "label": "Website", "description": "The website of the party", "type": "string" }, "registered": { "label": "Registered", "description": "The registration number of party; if unregistered, then write NO.", "type": "string" }, "country": { "label": "Country", "description": "The country of the party", "type": "string", "aliases": [ "state" ] }, "abbreviation": { "aliases": [ "abbr" ] }, "founder": { "aliases": [ "founders" ] }, "legalised": { "aliases": [ "legalized" ] }, "dissolved": { "aliases": [ "banned", "dissolution" ] }, "colors": { "description": "The official colors of the party, independent of infobox usage", "aliases": [ "colours" ] }, "native_name": { "label": "Native name", "description": "The native name of the party", "type": "string" }, "native_name_lang": { "label": "Native name language code", "description": "The ISO-639 language code of the native name of the party", "example": "fr", "type": "string" }, "governing_body": {}, "standing_committee": {}, "merger": {}, "split": { "label": "Split from", "description": "Party or organisation the party was split from", "type": "string" }, "predecessor": {}, "merged": {}, "successor": {}, "newspaper": {}, "think_tank": { "aliases": [ "think tank" ] }, "student_wing": {}, "youth_wing": {}, "womens_wing": {}, "membership": {}, "membership_year": {}, "position": {}, "religion": {}, "national": {}, "regional": { "aliases": [ "regional affiliation" ] }, "european": {}, "continental": { "aliases": [ "continental affiliation" ] }, "europarl": {}, "slogan": {}, "anthem": {}, "symbol": {}, "flag": { "aliases": [ "flag_title" ] }, "flag_alt": {}, "country2": {}, "footnotes": {}, "logo_upright": {}, "logo_alt": {} }, "paramOrder": [ "name", "native_name", "logo", "logo_size", "colorcode", "leader", "president", "chairperson", "secretary", "general_secretary", "first_secretary", "secretary_general", "presidium", "spokesperson", "foundation", "ideology", "headquarters", "international", "website", "registered", "country", "abbreviation", "founder", "legalised", "dissolved", "colors", "native_name_lang", "governing_body", "standing_committee", "merger", "split", "predecessor", "merged", "successor", "newspaper", "think_tank", "student_wing", "youth_wing", "womens_wing", "membership", "membership_year", "position", "religion", "national", "regional", "european", "continental", "europarl", "slogan", "anthem", "symbol", "flag", "flag_alt", "country2", "footnotes", "logo_upright", "logo_alt" ] } </templatedata> == Tracking categories == * {{clc|Pages using infobox political party with unknown parameters}} == See also == * {{tl|Composition bar}}, used to display a statistic, such as the number of seats held by a political party. {{Organization infoboxes}} <includeonly>{{sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Organization infobox templates|Political Party]] [[Category:Political party infobox templates| ]] [[Category:Templates that add a tracking category]] }}</includeonly> b246a618822a8e4debea143592790494f2f156b3 Template:Infobox Australian place 10 1143 2469 2023-05-11T07:59:46Z w>Fayenatic london 0 Update another link after [[wikipedia:Categories_for_discussion/Log/2023_April_26%23Category:Victoria_(Australia)]] wikitext text/x-wiki {{main other|{{#if:{{Has short description}} |<!--Do nothing--> |{{short description|{{{short description|{{ #switch: {{lc:{{{type|}}}}} |city = City in |town = Town in |suburb = {{#invoke:Plain text|main|Suburb {{#if:{{{city|}}}|of {{{city|}}},|{{#if:{{{lga|}}}|of {{{lga|}}},|in}}}}}} |lga = Local government area in |region = Region in |cadastral = Cadastral in |protected = Protected area in |Place in }} {{ #switch: {{lc:{{{state|}}} }} |sa = South Australia |vic = Victoria, Australia |nsw = New South Wales, Australia |qld = Queensland, Australia |nt = the Northern Territory, Australia |wa = Western Australia |tas = Tasmania, Australia |act = Australian Capital Territory |jbt = the Jervis Bay Territory, Australia |ni = Norfolk Island, Australia |au = Australia |Australia }}}}}|noreplace}}}}}}{{#invoke:infobox|infoboxTemplate | bodyclass = vcard | abovestyle = font-size: 125%; line-height: 1.3em; {{ #switch: {{lc:{{{type|}}} }} |city = background-color:#f9f6d2; |town = background-color:#e9f9d2; |suburb = background-color:#f9e2d2; |lga = background-color:#d2d5f9; |region = background-color:#e6c4fb; |cadastral = background-color:#ffffe0; |protected = background-color:transparent; |other = background-color:transparent; | background-color: #ccc; }} | above = {{#if:{{{name|}}}|<span class="fn org locality">{{{name}}}</span><br />{{#if:{{{native_name|}}}| <div style="font-weight:normal;font-size:88%" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}}<span style="font-weight:normal; font-size:88%" class="region">{{#if: {{{city|}}}|{{auto link|{{{city|}}}}},&nbsp;}}{{ #switch: {{lc:{{{state|error}}} }} |sa = [[South Australia]] |vic = [[Victoria (state)|Victoria]] |nsw = [[New South Wales]] |qld = [[Queensland]] |nt = [[Northern Territory]] |wa = [[Western Australia]] |tas = [[Tasmania]] |act = [[Australian Capital Territory]] |jbt = [[Jervis Bay Territory]] |ni = [[Norfolk Island]] |au = Australia |error = {{error|Error: <code>{{!}}state{{=}}</code> not defined ([[Template:Infobox Australian place#state|help]])}} |{{error|Error: unknown <code>{{!}}state{{=}}</code> value ([[Template:Infobox Australian place#state|help]])}} <!--Tracking category: --> {{main other|[[Category:Australian place articles using missing parameters|S]]}} }}</span>}} | aboveclass = adr | subheaderstyle = font-size: 100%; | subheader1 = {{#ifeq:{{{type|}}}|protected|{{IUCN banner|{{{iucn_category|}}}|{{{iucn_ref|}}} }} }} | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|{{{imagesize|}}}}}}|sizedefault=frameless|upright={{{image_upright|1.23}}}|alt={{{image_alt|{{{alt|}}}}}}}} | imagestyle = | caption = {{{caption|}}} | captionstyle = | image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image2|}}}|size={{{image2_size|{{{image2size|}}}}}}|sizedefault=frameless|upright={{{image2_upright|1.23}}}|alt={{{image2_alt|{{{alt2|}}}}}}}} | caption2 = {{{caption2|}}} | headerstyle = background-color:#ddf; | labelstyle = width:40%; {{ #switch: {{lc:{{{type|}}} }} |city = background-color:#f9f6d2; |town = background-color:#e9f9d2; |suburb = background-color:#f9e2d2; |lga = background-color:#d2d5f9; |region = background-color:#e6c4fb; |cadastral = background-color:#ffffe0; |protected = background-color:transparent; |other = background-color:transparent; |background-color:#ccc; }} | datastyle = | data1 = {{#invoke:Australian place map|main}} | data2 = {{#if:{{{local_map|}}}|{{Infobox mapframe|zoom={{{zoom|}}}|id={{{local_map_id|}}}}}}} | label3 = <span style="white-space: nowrap">Nearest town or city</span> | data3 = {{#ifeq:{{{type|}}}|protected|{{auto link|{{{nearest_town_or_city|}}}}} }} | label4 = [[Geographic coordinate system|Coordinates]] | data4 = {{#if:{{{coordinates|}}}|{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:{{#ifeq:{{{type|}}}|protected|landmark|city}}|region:{{ #switch: {{lc:{{{state|}}} }} |sa = AU-SA |vic = AU-VIC |nsw = AU-NSW |qld = AU-QLD |nt = AU-NT |wa = AU-WA |tas = AU-TAS |act = AU-ACT |jbt = AU-JBT |ni = NF |#default = AU }}}}{{{coord_ref|}}} }} | label6 = Population | data6 = {{#if:{{{pop|}}} |{{#if: {{{pop2|}}} |<ul style="margin-top: 0px; margin-bottom: 0px;"><li> }} {{#iferror:{{#expr:{{{pop}}}}} |{{{pop}}} |{{formatnum:{{replace|{{{pop}}}|,|}}}} }}{{#if: {{{pop_year|}}} |&nbsp;({{{pop_year}}}) }}{{{pop_footnotes|}}}{{#if: {{{poprank|}}} |&nbsp;([[List of cities in Australia by population|{{{poprank}}}]]) }}{{#if: {{{pop2|}}} |<li> {{formatnum:{{replace|{{{pop2}}}|,|}}}}{{#if: {{{pop2_year|}}} |&nbsp;({{{pop2_year}}}) }}{{{pop2_footnotes|}}}</ul> }} |{{#invoke:PopulationFromWikidata | ListForInfobox | type={{{type|}}} | wikidata={{{wikidata|}}} }} }} | label7 = &nbsp;• Density | data7 = {{#if:{{{density|}}} |{{formatnum:{{{density}}}}}/km<sup>2</sup>&nbsp;({{convert|{{{density}}}|/km2|/sqmi|disp=number}}/sq&nbsp;mi) {{{density_footnotes|}}} |{{#if:{{{pop|}}}|{{#if:{{{area|}}}|{{Pop density|{{formatnum:{{{pop|}}}|R}}|{{formatnum:{{{area|}}}|R}}|km2|sqmi}}}}}} {{{density_footnotes|}}} }} | label8 = Established | data8 = {{{established|{{{est|}}}}}}{{#if:{{{established|{{{est|}}}}}}|{{{established_footnotes|}}}|}} | label9 = Abolished | data9 = {{{abolished|}}} | label10 = [[Gazetteer of Australia|Gazetted]] | data10 = {{{gazetted|}}} | label11 = [[Postcodes in Australia|Postcode(s)]] | data11 = {{{postcode|}}} | label12 = Elevation | data12 = {{#if:{{{elevation|}}}|{{convert|{{{elevation}}}|m|ft|0|abbr=on}}{{{elevation_footnotes|}}} }} | label13 = Area | data13 = {{#if:{{{area|}}}|{{#iferror:{{#expr:{{{area}}}}}|{{{area|}}}|{{formatnum:{{{area}}}}}&nbsp;km<sup>2</sup> ({{rnd|{{{area}}}/2.589988110336|1}}&nbsp;sq&nbsp;mi)}}{{{area_footnotes|}}} }} | label14 = [[Time in Australia|Time zone]] | data14 = {{#if:{{{timezone|}}}|{{{timezone}}} ([[UTC{{{utc|}}}]]) }} | label15 = &nbsp;• Summer ([[Daylight saving time|DST]]) | data15 = {{#if:{{{timezone-dst|}}}|{{{timezone-dst}}} ([[UTC{{{utc-dst|}}}]]) }} | label16 = {{#if:{{{mayortitle|}}}|{{{mayortitle|}}}|Mayor}} | data16 = {{#ifeq:{{{type|}}}|lga|{{{mayor|}}} }} | label17 = Location | data17 = {{#if:{{{dist1|}}}|{{#if:{{{dist2|}}}|<ul style="margin-top: 0px; margin-bottom: 0px;"><li>}} {{formatnum:{{{dist1}}}}}&nbsp;km ({{rnd|{{{dist1}}}/1.609344|0}}&nbsp;mi) {{#if: {{{dir1|}}}|{{{dir1}}} of|from}} {{auto link|{{{location1}}}}} {{#if: {{{dist2|}}}|<li> {{formatnum:{{{dist2}}}}}&nbsp;km ({{rnd|{{{dist2}}}/1.609344|0}}&nbsp;mi) {{#if: {{{dir2|}}}|{{{dir2}}} of|from}} {{auto link|{{{location2}}}}}}} {{#if: {{{dist3|}}}|<li> {{formatnum:{{{dist3}}}}}&nbsp;km ({{rnd|{{{dist3}}}/1.609344|0}}&nbsp;mi) {{#if: {{{dir3|}}}|{{{dir3}}} of|from}} {{auto link|{{{location3}}}}}}} {{#if: {{{dist4|}}}|<li> {{formatnum:{{{dist4}}}}}&nbsp;km ({{rnd|{{{dist4}}}/1.609344|0}}&nbsp;mi) {{#if: {{{dir4|}}}|{{{dir4}}} of|from}} {{auto link|{{{location4}}}}}}} {{#if: {{{dist5|}}}|<li> {{formatnum:{{{dist5}}}}}&nbsp;km ({{rnd|{{{dist5}}}/1.609344|0}}&nbsp;mi) {{#if: {{{dir5|}}}|{{{dir5}}} of|from}} {{auto link|{{{location5}}}}}}} {{#if: {{{dist2|}}}|</ul> }}}} | label18 = {{ #switch: {{lc:{{{state|}}}}} |sa = [[Local government areas of South Australia|LGA(s)]] |vic = [[Local government in Victoria|LGA(s)]] |nsw = [[Local government areas of New South Wales|LGA(s)]] |qld = [[local government areas of Queensland|LGA(s)]] |nt = [[Local government areas of the Northern Territory|LGA(s)]] |wa = [[Local government areas of Western Australia|LGA(s)]] |tas = [[Local government areas of Tasmania|LGA(s)]] |act = District |[[Local government in Australia|LGA(s)]] }} | data18 = {{#if:{{{lga|}}}|{{#if: {{{lga2|}}}|<ul style="margin-top: 0px; margin-bottom: 0px;"><li>}} {{auto link|{{{lga}}}}}{{#if: {{{lga2|}}}|<li> {{auto link|{{{lga2}}}}}}}{{#if: {{{lga3|}}}|<li> {{auto link|{{{lga3}}}}}}}{{#if: {{{lga4|}}}|<li> {{auto link|{{{lga4}}}}}}}{{#if: {{{lga5|}}}|<li> {{auto link|{{{lga5}}}}}}}{{#if: {{{lga2|}}}|</ul> }}}} | label19 = Council seat | data19 = {{{seat|}}} | label20 = [[List of regions of Australia|Region]] | data20 = {{#if:{{{region|}}}|{{auto link|{{{region}}}}} }} | label21 = [[Lands administrative divisions of Australia|County]] | data21 = {{#if:{{{county|}}}|{{auto link|{{{county}}}}} }} | label22 = [[Parish (administrative division)|Parish]] | data22 = {{{parish|}}} | label23 = {{#ifeq:{{{type|}}}|cadastral|[[Hundred (county division)|Hundred]]}} | data23 = {{#ifeq:{{{type|}}}|cadastral|{{{hundred|}}} }} | label24 = {{#ifeq:{{{type|}}}|cadastral|[[Hundred (county division)|Hundred (former)]]}} | data24 = {{#ifeq:{{{type|}}}|cadastral|{{{former_hundred|}}} }} | label25 = {{#ifeq:{{{type|}}}|cadastral|[[Lands administrative divisions of New South Wales|Division]]}} | data25 = {{#ifeq:{{{type|}}}|cadastral|{{{division|}}} }} | label26 = [[Electorates of the Australian states and territories|{{#switch:{{lc:{{{state}}}}}|act|nt|jbt= Territory|State}} electorate(s)]] | data26 = {{#if:{{{stategov|}}}|{{#if: {{{stategov2|}}}|<ul style="margin-top: 0px; margin-bottom: 0px;"><li>}} {{{stategov}}}{{#if: {{{stategov2|}}}|<li> {{{stategov2}}}}}{{#if: {{{stategov3|}}}|<li> {{{stategov3}}}}}{{#if: {{{stategov4|}}}|<li> {{{stategov4}}}}}{{#if: {{{stategov5|}}}|<li> {{{stategov5}}}}}{{#if: {{{stategov2|}}}|</ul> }}}} | label27 = [[Divisions of the Australian House of Representatives|Federal division(s)]] | data27 = {{#if:{{{fedgov|}}}|{{#if: {{{fedgov2|}}}|<ul style="margin-top: 0px; margin-bottom: 0px;"><li>}} {{{fedgov}}}{{#if: {{{fedgov2|}}}|<li> {{{fedgov2}}}}}{{#if: {{{fedgov3|}}}|<li> {{{fedgov3}}}}}{{#if: {{{fedgov4|}}}|<li> {{{fedgov4}}}}}{{#if: {{{fedgov2|}}}|</ul> }}}} | data28 = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|size={{{logosize|}}}|sizedefault=frameless|upright={{{logo_upright|0.8}}}|alt={{{logo_alt|{{{alt|}}}}}}}} | label29 = Visitation | data29 = {{#ifeq:{{{type|}}}|protected|{{formatnum:{{{visitation_num|}}}}}{{#if: {{{visitation_year|}}}|&nbsp;(in {{{visitation_year|}}}){{#if: {{{visitation_footnotes|}}}|{{{visitation_footnotes|}}}}}}} }} | label30 = <span style="white-space: nowrap">Managing authorities</span> | data30 = {{#ifeq:{{{type|}}}|protected|{{auto link|{{{managing_authorities|}}}}} }} | label31 = Website | data31 = {{#if:{{{url|}}}|{{#invoke:URL|url|1={{{url|}}}|2={{{name|}}}}} }} | data32 = {{#if:{{{maxtemp|}}}{{{mintemp|}}}{{{rainfall|}}}|<table cellpadding=4 cellspacing=0 style="width:100%; border: 1px #ddd solid;"> <tr class=mergedrow> <td style="background-color:#f0f0ff;border: 1px #FFF solid; text-align:center; width:33%;">'''Mean max temp'''{{{maxtemp_footnotes|}}}</td> <td style="background-color:#f0f0ff;border: 1px #FFF solid; text-align:center; width:34%;">'''Mean min temp'''{{{mintemp_footnotes|}}}</td> <td style="background-color:#f0f0ff;border: 1px #FFF solid; text-align:center; width:33%;">'''Annual rainfall'''{{{rainfall_footnotes|}}}</td> </tr> <tr style="border: 1px #FFF solid" class=mergedrow> <td style="padding: 2px 0px; text-align:center; width:33%;"> {{#if: {{{maxtemp|}}}| {{{maxtemp}}} °C <br />{{ #expr: {{{maxtemp}}} * 1.8 + 32 round 0}} °F | ? }}</td> <td style="padding: 2px 0px; text-align:center; width:34%;">{{#if: {{{mintemp|}}}| {{{mintemp}}} °C <br />{{ #expr: {{{mintemp}}} * 1.8 + 32 round 0}} °F | ?}}</td> <td style="padding: 2px 0px; text-align:center; width:33%;">{{#if: {{{rainfall|}}}| {{formatnum:{{{rainfall}}}}} mm <br />{{ #expr: {{{rainfall}}} * 0.03937 round 1}} in | ? }}</td> </tr></td></table> }} | data33 = {{#if:{{{near|}}}{{{near-nw|}}}{{{near-n|}}}{{{near-ne|}}}{{{near-w|}}}{{{near-e|}}}{{{near-sw|}}}{{{near-se|}}}{{{near-s|}}}|<table cellpadding=4 cellspacing=3 style="width:100%; border: 1px #ddd solid;"> <tr class=mergedrow><td colspan=3 style="background-color:#f0f0ff;padding: 2px 0px; text-align:center;">'''{{ #switch: {{lc:{{{type|}}}}} | cadastral = [[Lands administrative divisions of Australia|Lands administrative divisions]] | lga = [[Local government in Australia|LGAs]] | suburb = {{#if:{{{city|}}}|{{#ifexist:List of {{{city}}} suburbs| [[List of {{{city}}} suburbs|Suburbs]] | {{ #ifexist:Category:Suburbs of the City of {{{city}}}| [[:Category:Suburbs of the City of {{{city}}}|Suburbs]] |{{ #ifexist:Category:Suburbs of {{{city}}}| [[:Category:Suburbs of {{{city}}}|Suburbs]]| Suburbs }}}}}}|Suburbs}} | Localities}} around {{#if:{{{name|}}}|{{{name}}}|{{PAGENAMEBASE}}}}:'''</td></tr> <tr class=mergedrow> <td style="text-align:center; padding: 3px 0px; width:33%;">{{{near-nw|}}}</td> <td style="text-align:center; padding: 3px 0px; width:34%;">{{{near-n|}}}</td> <td style="text-align:center; padding: 3px 0px; width:33%;">{{{near-ne|}}}</td> </tr><tr class=mergedrow> <td style="text-align:center; vertical-align: middle; padding: 3px 0px; width:33%;">{{{near-w|}}}</td> <td style="text-align:center; vertical-align: middle; padding: 3px 0px; width:34%;font-weight:bold;">{{#if:{{{near|}}}|{{{near}}}|{{{name|}}}}}</td> <td style="text-align:center; vertical-align: middle; padding: 3px 0px; width:33%;">{{{near-e|}}}</td> </tr><tr class=mergedrow> <td style="text-align:center; padding: 3px 0px; width:33%;">{{{near-sw|}}}</td> <td style="text-align:center; padding: 3px 0px; width:34%;">{{{near-s|}}}</td> <td style="text-align:center; padding: 3px 0px; width:33%;">{{{near-se|}}}</td> </tr></td></table> }} | label34 = Footnotes | data34 = {{{footnotes|}}} | label35 = See also | data35 = {{#ifeq:{{{type|}}}|protected|{{#if:{{both|{{{iucn_category|}}}|{{{state|}}}}}|{{ #switch: {{lc:{{{state|}}} }} |sa = [[Protected areas of South Australia]] |vic = [[Protected areas of Victoria]] |nsw = [[Protected areas of New South Wales|Protected areas of<br />New South Wales]] |qld = [[Protected areas of Queensland]] |nt = [[Protected areas of the Northern Territory]] |wa = [[List of protected areas of Western Australia|List of protected areas of<br />Western Australia]] |tas = [[Protected areas of Tasmania]] |act = [[List of Australian Capital Territory protected areas|Australian Capital Territory<br />protected areas]] }} }} }} | data36 = {{ #switch: {{lc:{{{type|error}}} }} |city = |town = |suburb = |lga = |region = |cadastral = |protected = |other = |error = {{error|<includeonly>Error: <code>{{!}}type{{=}}</code> not defined ([[Template:Infobox Australian place#type|help]])</includeonly>}}|{{error|Error: unknown <code>{{!}}type{{=}}</code> value ([[Template:Infobox Australian place#type|help]])}} }} }}<!-- -->{{#if:{{{_noautocat|}}}|<!-- [[Category:Australian place articles using missing parameters|N]] -->|{{main other|{{#ifeq:{{{type|}}} | town | {{ #switch: {{lc:{{{state|}}}}} |sa = [[Category:Towns in South Australia|{{{name}}}]] |vic = [[Category:Towns in Victoria (state)|{{{name}}}]] |nsw = [[Category:Towns in New South Wales|{{{name}}}]] |qld = [[Category:Towns in Queensland|{{{name}}}]] |nt = [[Category:Towns in the Northern Territory|{{{name}}}]] |wa = [[Category:Towns in Western Australia|{{{name}}}]] |tas = [[Category:Towns in Tasmania|{{{name}}}]] |act = [[Category:Towns in the Australian Capital Territory|{{{name}}}]] |ni = [[Category:Populated places in Norfolk Island|{{{name}}}]] }} }}{{#ifeq:{{{type|}}} | suburb | {{#ifexist:Category:Suburbs of the City of {{{city}}}|[[Category:Suburbs of the City of {{{city}}}|{{{name}}}]]|{{#ifexist:Category:Suburbs of {{{city}}}|[[Category:Suburbs of {{{city}}}|{{{name}}}]]|{{ #switch: {{lc:{{{state|}}}}} |sa = {{#ifexist:Category:Suburbs of {{{city}}}, South Australia|[[Category:Suburbs of {{{city}}}, South Australia|{{{name}}}]]}} |vic = {{#ifexist:Category:Suburbs of {{{city}}}, Victoria|[[Category:Suburbs of {{{city}}}, Victoria|{{{name}}}]]}} |nsw = {{#ifexist:Category:Suburbs of {{{city}}}, New South Wales|[[Category:Suburbs of {{{city}}}, New South Wales|{{{name}}}]]}} |qld = {{#ifexist:Category:Suburbs of {{{city}}}, Queensland|[[Category:Suburbs of {{{city}}}, Queensland|{{{name}}}]]}} |nt = {{#ifexist:Category:Suburbs of {{{city}}}, Northern Territory|[[Category:Suburbs of {{{city}}}, Northern Territory|{{{name}}}]]}} |wa = {{#ifexist:Category:Suburbs of {{{city}}}, Western Australia|[[Category:Suburbs of {{{city}}}, Western Australia|{{{name}}}]]}} |tas = {{#ifexist:Category:Suburbs of {{{city}}}, Tasmania|[[Category:Suburbs of {{{city}}}, Tasmania|{{{name}}}]]}} |act = {{#ifexist:Category:Suburbs of {{{city}}}, ACT|[[Category:Suburbs of {{{city}}}, ACT|{{{name}}}]]}} }} }} }} }} {{#if:{{{est|}}}| {{#ifeq:{{{type|}}}|lga|{{#ifexist:Category:Populated places established in {{{est}}}|[[Category:Populated places established in {{{est}}} |{{{name}}}]]}}{{#ifexist:Category:Populated places established in the {{{est}}}|[[Category:Populated places established in the {{{est}}} |{{{name}}}]]}} {{#ifexist:Category:{{{est}}} establishments in Australia|[[Category:{{{est}}} establishments in Australia|{{{name}}}]]}}}} }} }} }}<!-- Start tracking -->{{main other|{{#ifeq:{{{1|♠}}}|♠||[[Category:Australian place articles using missing parameters|{{#ifeq:{{{1|♠}}}|♠||1}}]]}}<!-- -->{{main other|{{#if:{{{type|}}}||[[Category:Australian place articles using missing parameters|U]]}}}}<!-- -->{{main other|{{#if:{{{state|}}}||[[Category:Australian place articles using missing parameters|S]]}}}}<!-- -->{{#if:{{{pop|}}}|{{#if:{{{pop_year|}}}||[[Category:Australian place articles with no population year]]}}}}<!-- -->{{#if:{{{pop2|}}}|{{#if:{{{pop2_year|}}}||[[Category:Australian place articles with no population year]]}}}}<!-- -->{{#if:{{{pop|}}}|{{#if:{{{pop_footnotes|}}}||[[Category:Australian place articles with no population footnotes]]}}}}<!-- -->{{#if:{{{pop2|}}}|{{#if:{{{pop2_footnotes|}}}||[[Category:Australian place articles with no population footnotes]]}}}}<!-- -->{{#if:{{{density|}}}||{{#if:{{{pop|}}}|{{#if:{{{area|}}}|{{#iferror:{{#expr:{{formatnum:{{{pop|}}}|R}}/{{formatnum:{{{area|}}}|R}}}}|[[Category:Australian place articles with density errors]]|}} }} }} }} }}<!-- -->{{main other|{{#ifeq:{{{imagesize|♠}}}{{{image2size|♠}}}{{{imagesize2|♠}}}{{{image_alt2|♠}}}{{{logosize|♠}}}{{{official_site|♠}}}|♠♠♠♠♠♠||[[Category:Australian place articles using missing parameters|{{#ifeq:{{{imagesize|♠}}}{{{image2size|♠}}}{{{imagesize2|♠}}}{{{image_alt2|♠}}}|♠♠♠♠||I}}{{#ifeq:{{{logosize|♠}}}|♠||L}}{{#ifeq:{{{official_site|♠}}}|♠||O}}]]}}}}<!-- -->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox Australian place with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Australian place]] with unknown parameter "_VALUE_"|ignoreblank=y| _noautocat | abolished | alternative_location_map | area | area_footnotes | caption | caption2 | city | coord_ref | coordinates | county | density | density_footnotes | dir1 | dir2 | dir3 | dir4 | dir5 | dist1 | dist2 | dist3 | dist4 | dist5 | division | elevation | elevation_footnotes | est | established | established_footnotes | fedgov | fedgov2 | fedgov3 | fedgov4 | footnotes | force_national_map | former_hundred| gazetted | hundred | image | image_alt | image_upright | image2 | image2_alt | image2_upright | iucn_category | iucn_ref | lga | lga2 | lga3 | lga4 | lga5 | local_map | local_map_id | location1 | location2 | location3 | location4 | location5 | logo | logo_upright | managing_authorities | map_alt | map_type | maxtemp | maxtemp_footnotes | mayor | mayortitle | mintemp | mintemp_footnotes | name | native_name_lang | native_name | near | near-e | nearest_town_or_city | near-n | near-ne | near-nw | near-s | near-se | near-sw | near-w | parish | pop | pop_footnotes | pop_year | pop2 | pop2_footnotes | pop2_year | poprank | postcode | pushpin_label_position | pushpin_map_caption | rainfall | rainfall_footnotes | region | relief | seat | state | stategov | stategov2 | stategov3 | stategov4 | stategov5 | timezone | timezone-dst | type | url | use_lga_map | utc | utc-dst | visitation_footnotes | visitation_num | visitation_year | wikidata | zoom }}{{main other| {{#if:{{{coordinates|}}} |{{#ifeq:{{lc:{{{type|}}} }}|lga |{{#switch:{{lc:{{{map_type|}}} }} |auto|={{#if:{{{alternative_location_map|}}}{{{force_national_map|}}}{{{use_lga_map|}}}|[[Category:Pages using infobox Australian place with lga type and location map]]|[[Category:Pages using infobox Australian place with an implicitly suppressed location map]]}} |#default=[[Category:Pages using infobox Australian place with lga type and location map]] }} |{{#switch:{{lc:{{{map_type|}}} }} |nomap = [[Category:Pages using infobox Australian place with an explicitly suppressed location map]] }} }} }} }}<!-- End tracking --><noinclude> {{Documentation}} </noinclude> 8d8b284165488ee5193918a0c3e000cf55f1da14 Template:HTML lists 10 628 1416 2023-05-14T11:58:14Z wikipedia>GhostInTheMachine 0 Change "other" wikitext text/x-wiki {{navbox top |name= HTML lists |title=HTML lists |state=<includeonly>collapsed</includeonly> |above = More information: {{hlist | [[Help:List]] | [[WP:List dos and don'ts]] | [[WP:Manual of Style/Embedded lists]] | {{section link|WP:Manual of Style/Accessibility#Lists}} | [[WP:WikiProject Lists]] }} }} {|style="width:100%" | style="vertical-align:top; width:32%" | {| class="wikitable" style="width:100%" |- ! Horizontal list |- | {{mono|{{tl|hlist}}}} |- | {{tlx|hlist |item1&nbsp;|item2&nbsp;|...}} |- | {{hlist |item1 |item2 |...}} |} | rowspan=4 style="width:2%"| | style="vertical-align:top; width:32%"| {| class="wikitable" style="width:100%" |- ! Horizontal list |- | {{mono|{{tl|flatlist}}}} |- | {{tlx|flatlist|<br />* item1<br />* item2<br />* ...}} |- | {{flatlist| * item1 * item2 * ... }} |} | rowspan=4 style="width:2%" | | style="vertical-align:top; width:32%"| {| class="wikitable" style="width:100%" |- ! Horizontal list |- | {{mono|{{tl|cslist}}}} |- | {{tlx|cslist |item1&nbsp;|item2&nbsp;|...}} |- | {{cslist |item1 |item2 |...}} |- !style="font-weight: normal; text-align:center;" | {{mono|{{tl|bold list}}}} |- | {{tlx|bold list |item1&nbsp;|item2&nbsp;|...}} |- | {{bold list |item1 |item2 |...}} |} |- | style="vertical-align:top;"| {| class="wikitable" style="width:100%" |- ! Bulleted list |- | {{mono|{{tl|bulleted list}}}} |- | {{tlx|bulleted list |item1&nbsp;|item2&nbsp;|...}} |- | {{bulleted list |item1 |item2 |...}} |} | style="vertical-align:top;"| {| class="wikitable" style="width:100%" |- ! Numeric ordered list |- | {{mono|{{tl|ordered list}}}} |- | {{tlx|Ordered list |first&nbsp;|second&nbsp;|...}} |- | {{Ordered list |first |second |...}} |} | style="vertical-align:top;"| {| class="wikitable" style="width:100%" |- ! Alphabetic ordered list |- | {{mono|{{tl|ordered list}}}} |- | {{tlx|Ordered list |list_style_type{{=}}lower-alpha&nbsp;|first&nbsp;|second&nbsp;|...}} |- | {{Ordered list |list_style_type=lower-alpha |first |second |...}} |} |- | style="vertical-align:top"| {| class="wikitable" style="width:100%" |- ! Unbulleted list |- | {{mono|{{tl|unbulleted list}}}} |- | {{tlx|unbulleted list |item1&nbsp;|item2&nbsp;|...}} |- | {{unbulleted list|item1|item2|...}} |} | style="vertical-align:top"| {| class="wikitable" style="width:100%" |- ! Unbulleted list |- | {{mono|{{tl|plainlist}}}} |- | {{tlx|plainlist|<br />* item1<br />* item2<br />* ...}} |- | {{plainlist| * item1 * item2 * ... }} |} | style="vertical-align:top" rowspan=2| {| class="wikitable" style="width:100%" |- ! Glossary or definition list |- | {{mono|{{tl|glossary}}}}<br />([[Wikipedia:Manual of Style/Glossaries|glossary]], description, definition, association) |- | {{tlx|glossary}}<br /> {{tlx|term|first term}}{{tlx|defn|first description}}<br /> {{tnull|term|second term}}{{tnull|defn|second description}}<br /> {{tnull|term|...}}{{tnull|defn|....}}<br /> {{mono|{{tl|glossary end}}}} |- | {{glossary}} {{term|first term}}{{defn|first description}} {{term|second term}}{{defn|second description}} {{term|...}}{{defn|....}} {{glossary end}} |} |- | style="vertical-align:top"| {| class="wikitable" style="width:100%" |- ! Bulleted list to flow around an image |- | {{mono|{{tl|flowlist}}}} |- | <code><nowiki>[[File:Bad Title Example.png|left|thumb|100px]]</nowiki></code><br /> {{tlx|flowlist|<br />*item1<br />*item2<br />*...}} |- | [[File:Bad Title Example.png|left|thumb|100px]] {{flowlist| *item1 *item2 *... }} |} | style="vertical-align:top"| {| class="wikitable" style="width:100%" |- ! Ordered list in columns |- | {{mono|{{tl|columns-list}}}} |- | {{tlx|columns-list|colwidth{{=}}5em|<br /># first<br /># second<br /># third<br /># ...}} |- | {{columns-list|colwidth=5em| # first # second # third # ... }} |} | style="vertical-align:top"| |} {{navbox bottom |below = {{cl|List formatting and function templates‎}} }}<noinclude> {{documentation}} <!-- Please add categories to the /doc subpage; interwikis go to Wikidata --> </noinclude> bc8771283bcdc7d736cca9716beebac6300dd812 Template:Fraction/styles.css 10 1545 2880 2023-05-15T17:30:42Z w>Izno 0 clip-path now supported sanitized-css text/css /* {{pp|small=y}} */ .frac { white-space: nowrap; } .frac .num, .frac .den { font-size: 80%; line-height: 0; /* we want this inline */ vertical-align: super; } .frac .den { vertical-align: sub; } /* [[Template:Screen reader-only]] is canonical implementation onwiki */ .sr-only { border: 0; clip: rect(0, 0, 0, 0); clip-path: polygon(0px 0px, 0px 0px, 0px 0px); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; /* white-space: nowrap; /* already have nowrap above */ } b28507c69a3866957f0cad2cbdb76d24154ba271 Template:Infobox military unit/doc 10 1518 2853 2023-05-16T22:40:07Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} {{auto short description}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see Wikipedia:Wikidata) --> {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} == Usage == === Military unit infobox === A military unit infobox may be used to summarize information about an individual military unit or formation, such as a regiment or division. The infobox should be added using the {{tlx|Infobox military unit}} template, as shown below: {{Parameter names example | unit_name | native_name | image | image_size | alt | caption | dates = {{unbulleted list|{{{dates}}}|''or:'' {{{start_date}}}–{{{end_date}}}}} | <!-- start_date --> | <!-- end_date --> | disbanded | country = {{unbulleted list|{{{country}}}|''or:'' {{{countries}}}}} | <!-- countries --> | allegiance | branch | type | role | specialization | size | command_structure | garrison | <!-- garrison_label --> | nickname | patron | motto | colors | <!-- colors_label --> | march | mascot | anniversaries | equipment | <!-- equipment_label --> | battles | <!-- battles_label --> | decorations | battle_honours | <!-- battle_honours_label --> | flying_hours | website | | current_commander | commander1 = {{unbulleted list|{{{current_commander}}}|''or:'' {{{commander1}}}}} | <!-- commander1_label --> | <!-- current_commander_label --> | | ceremonial_chief | commander2 = {{unbulleted list|{{{ceremonial_chief}}}|''or:'' {{{commander2}}}}} | <!-- commander2_label --> | <!-- ceremonial_chief_label --> | | commander3 = {{unbulleted list|{{{colonel_of_the_regiment}}}|''or:'' {{{commander3}}}}} | <!-- commander3_label --> | <!-- colonel_of_the_regiment_label --> | | commander4 = {{unbulleted list|{{{command_sergeant_major}}}|''or:'' {{{commander4}}}}} | command_sergeant_major | <!-- commander4_label --> | <!-- command_sergeant_major_label --> | | commander5 | <!-- commander5_label --> | commander6 | <!-- commander6_label --> | commander7 | <!-- commander7_label --> | commander8 | <!-- commander8_label --> | commander9 | <!-- commander9_label --> | notable_commanders | | identification_symbol | <!-- identification_symbol_label --> | identification_symbol_2 | <!-- identification_symbol_2_label --> | identification_symbol_3 | <!-- identification_symbol_3_label --> | identification_symbol_4 | <!-- identification_symbol_4_label --> | identification_symbol_5 | <!-- identification_symbol_5_label --> | identification_symbol_6 | <!-- identification_symbol_6_label --> | | aircraft_attack | aircraft_bomber | aircraft_electronic | aircraft_fighter | aircraft_helicopter | aircraft_helicopter_attack | aircraft_helicopter_cargo | aircraft_helicopter_multirole | aircraft_helicopter_observation | aircraft_helicopter_trainer | aircraft_helicopter_utility | aircraft_interceptor | aircraft_patrol | aircraft_recon | aircraft_trainer | aircraft_transport | aircraft_tanker | aircraft_general }} <div style="width:400px;background:#dddddd;border: 1px solid black;"><syntaxhighlight lang="wikitext" style="overflow:auto; margin:0.5em"> {{Infobox military unit | unit_name = | native_name = | image = | image_size = | alt = | caption = | dates = <!-- or | start_date = | end_date = --> | disbanded = | country = <!-- or | countries = --> | allegiance = | branch = | type = | role = <!-- or | specialization = --> | size = | command_structure = | garrison = | garrison_label = | nickname = | patron = | motto = | colors = <!-- or | colours = --> | colors_label = <!-- or | colours_label = --> | march = | mascot = | anniversaries = | equipment = | equipment_label = | battles = | battles_label = | decorations = | battle_honours = | battle_honours_label = | flying_hours = | website = <!-- Commanders --> | current_commander = | commander1 = | commander1_label = | commander2 = | commander2_label = | commander3 = | commander3_label = | commander4 = | commander4_label = | commander5 = | commander5_label = | commander6 = | commander6_label = | commander7 = | commander7_label = | commander8 = | commander8_label = | commander9 = | commander9_label = | notable_commanders = <!-- Insignia --> | identification_symbol = | identification_symbol_label = | identification_symbol_2 = | identification_symbol_2_label = | identification_symbol_3 = | identification_symbol_3_label = | identification_symbol_4 = | identification_symbol_4_label = | identification_symbol_5 = | identification_symbol_5_label = | identification_symbol_6 = | identification_symbol_6_label = <!-- Aircraft --> | aircraft_attack = | aircraft_bomber = | aircraft_electronic = | aircraft_fighter = | aircraft_helicopter = | aircraft_helicopter_attack = | aircraft_helicopter_cargo = | aircraft_helicopter_multirole = | aircraft_helicopter_observation = | aircraft_helicopter_trainer = | aircraft_helicopter_utility = | aircraft_interceptor = | aircraft_patrol = | aircraft_recon = | aircraft_trainer = | aircraft_transport = | aircraft_tanker = | aircraft_general = }} </syntaxhighlight></div> {{clear}} '''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]). * '''unit_name''' &ndash; The formal name of the unit in English. * '''native_name''' &ndash; ''optional'' &ndash; The formal name of the unit in the local language, if different from '''unit_name''', and if not English. This will display under the unit_name. * '''image''' &ndash; ''optional'' &ndash; An image of the unit insignia ([[cap badge]]s, [[tartan]] or [[Colours, standards and guidons|colours]]), if available; other images may be used if this cannot be obtained. The image should be given in the form <code>Example.jpg</code>. * '''image_size''' &ndash; ''optional'' &ndash; Used to override the default image width of 200 pixels. It should be written as <code>200px</code>. * '''alt''' &ndash; ''optional'' &ndash; Alternative text for visually impaired users, see [[WP:ALT]]. * '''caption''' &ndash; ''optional'' &ndash; The text to be placed below the image. * '''dates''' &ndash; The period (usually in years) when the unit was active; alternately, the dates may be indicated by using one—or both—of the separate '''start_date''' and '''end_date''' parameters. * '''country''' &ndash; ''optional'' &ndash; If the unit is part of the armed forces of a sovereign state, the name of that state. * '''allegiance''' &ndash; ''optional'' &ndash; Used to indicate the allegiance of units which are not part of the regular armed forces of a sovereign state; can usually be omitted otherwise. In the case of National Guard or Naval Militia units, the State of origin should be indicated. * '''branch''' &ndash; ''optional'' &ndash; The service branch, in militaries that have them; typically army, navy, air force, etc. * '''type''' &ndash; ''optional'' &ndash; The general type of unit, e.g., cavalry, infantry, artillery, etc. More specific types (airborne infantry, light cavalry, etc.) may be given as appropriate. * '''role''' &ndash; ''optional'' &ndash; Typical strategic or tactical use of unit, e.g., shock troop, special operations, mechanized infantry, ceremonial guard, etc. * '''size''' &ndash; ''optional'' &ndash; The size of the unit; this may include both average and lifetime figures, and should indicate equipment (planes, tanks, cannon, etc.) where applicable. For U.S. units, this should only include Organic elements, not Assigned or Attached elements. * '''command_structure''' &ndash; ''optional'' &ndash; The larger unit(s) of which the unit is a part. This should not be used to provide an exhaustive history of the unit, which is more appropriate in the article itself, for units existing over a long period. For complicated cases, using the [[#Command structure box|auxiliary command structure box]] may be appropriate. * '''garrison''' &ndash; ''optional'' &ndash; Location of the unit's home base; this is generally applicable only to units in existence. * '''garrison_label''' &ndash; ''optional'' &ndash; The label to use for the garrison field (above). * '''nickname''' &ndash; ''optional'' &ndash; Any commonly-used nicknames for the unit. * '''patron''' &ndash; ''optional'' &ndash; The patron the unit was named after; this is only applicable in armed forces where units are named after individuals. * '''motto''' &ndash; ''optional'' &ndash; The official unit motto (with translation, if necessary). * '''colors''' &ndash; ''optional'' &ndash; The unit colors; this may refer to either the actual colors used on the uniform, or to the [[Colours, standards and guidons|colours]] of the unit. * '''colors_label''' &ndash; ''optional'' &ndash; the label to use for the colors field (above). * '''march''' &ndash; ''optional'' &ndash; The tune(s) commonly or officially played when the unit ceremonially marches; there may be several. * '''mascot''' &ndash; ''optional'' &ndash; Any official or unofficial animal or character maintained by the unit. * '''equipment''' &ndash; ''optional'' &ndash; For units strongly associated with specific equipment or vehicles, such as tanks, artillery, or aircraft, a ''brief'' list of the notable types used by the unit; if the number of entries is large, it is recommended that this field not be used, and that the full list be given in the article text instead. * '''equipment_label''' &ndash; ''optional'' &ndash; The label to use for the equipment field (above). * '''battles''' &ndash; ''optional'' &ndash; Any notable engagements in which the unit participated. The decision of what constitutes a notable engagement is left to the editors of the specific article. * '''battles_label''' &ndash; ''optional'' &ndash; The label to use for the battles field (above); this defaults to "Engagements" if left blank. * '''anniversaries''' &ndash; ''optional'' &ndash; Any anniversaries that a unit celebrates. * '''decorations''' &ndash; ''optional'' &ndash; Any decorations (such as the [[Presidential Unit Citation (United States)|Presidential Unit Citation]]) that the unit as a whole has received. * '''battle_honours''' &ndash; ''optional'' &ndash; For units in countries that award some type of formal [[battle honour]]s, the battle honours that the unit has received; while this may have some overlap with the ''battles'' field above, the two are not necessarily equivalent. * '''battle_honours_label''' &ndash; ''optional'' &ndash; The label to use for the battle_honours field (above); this defaults to "[[Battle honour]]s" if left blank. * '''disbanded''' &ndash; ''optional'' &ndash; For units that have been disbanded, the dates and any other relevant notes regarding the disbanding. * '''flying_hours''' &ndash; ''optional'' &ndash; If the formation is an aerial one, the total hours flown. * '''website''' &ndash; ''optional'' &ndash; The official website of the formation, if any. Commander parameters: The infobox allows for up to three current commanders to be specified; the exact roles or titles of these individuals should be specified via the corresponding label parameters. * '''commander1''' &ndash; ''optional'' &ndash; A current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader. * '''commander1_label''' &ndash; ''optional'' &ndash; The label to use for the field above; for historical reasons, this defaults to "Current commander" if left blank. * '''commander2''' &ndash; ''optional'' &ndash; A second current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader. * '''commander2_label''' &ndash; ''optional'' &ndash; The label to use for the field above; for historical reasons, this defaults to "Ceremonial chief" if left blank. * '''commander3''' &ndash; ''optional'' &ndash; A third current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader. * '''commander3_label''' &ndash; ''optional'' &ndash; The label to use for the field above; for historical reasons, this defaults to "Colonel of the Regiment" if left blank. * '''commander4''' &ndash; ''optional'' &ndash; A fourth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader. * '''commander4_label''' &ndash; ''optional'' &ndash; The label to use for the field above; for historical reasons, this defaults to "Command Sergeant Major" if left blank. * '''commander5''' &ndash; ''optional'' &ndash; A fifth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader. * '''commander5_label''' &ndash; ''optional'' &ndash; The label to use for the field above; defaults to "Commander". * '''commander6''' &ndash; ''optional'' &ndash; A sixth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader. * '''commander6_label''' &ndash; ''optional'' &ndash; The label to use for the field above; defaults to "Commander". * '''commander7''' &ndash; ''optional'' &ndash; A seventh current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader. * '''commander7_label''' &ndash; ''optional'' &ndash; The label to use for the field above; defaults to "Commander". * '''commander8''' &ndash; ''optional'' &ndash; An eighth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader. * '''commander8_label''' &ndash; ''optional'' &ndash; The label to use for the field above; defaults to "Commander". * '''commander9''' &ndash; ''optional'' &ndash; A ninth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader. * '''commander9_label''' &ndash; ''optional'' &ndash; The label to use for the field above; defaults to "Commander". * '''notable_commanders''' &ndash; ''optional'' &ndash; Any notable former commanders of the unit; judgement of notability is left to individual article editors. Insignia parameters: * '''identification_symbol''' &ndash; ''optional'' &ndash; The unit's identification symbol (such as a [[tartan]], tactical identification patch or [[morale patch]]). * '''identification_symbol_label''' &ndash; ''optional'' &ndash; The label to use for the identification symbol field (above). * '''identification_symbol_2''' &ndash; ''optional'' &ndash; Another identification symbol. * '''identification_symbol_2_label''' &ndash; ''optional'' &ndash; The label to use for the second identification symbol field (above). * '''identification_symbol_3''' &ndash; ''optional'' &ndash; Another identification symbol. * '''identification_symbol_3_label''' &ndash; ''optional'' &ndash; The label to use for the third identification symbol field (above). * '''identification_symbol_4''' &ndash; ''optional'' &ndash; Another identification symbol. * '''identification_symbol_4_label''' &ndash; ''optional'' &ndash; The label to use for the fourth identification symbol field (above). * '''identification_symbol_5''' &ndash; ''optional'' &ndash; Another identification symbol. * '''identification_symbol_5_label''' &ndash; ''optional'' &ndash; The label to use for the fifth identification symbol field (above). * '''identification_symbol_6''' &ndash; ''optional'' &ndash; Another identification symbol. * '''identification_symbol_6_label''' &ndash; ''optional'' &ndash; The label to use for the sixth identification symbol field (above). Aircraft parameters: * '''aircraft_attack''' &ndash; ''optional'' &ndash; For aviation units, the attack aircraft flown by the unit. * '''aircraft_bomber''' &ndash; ''optional'' &ndash; For aviation units, the bomber aircraft flown by the unit. * '''aircraft_electronic''' &ndash; ''optional'' &ndash; For aviation units, the electronic warfare aircraft flown by the unit. * '''aircraft_fighter''' &ndash; ''optional'' &ndash; For aviation units, the fighter aircraft flown by the unit. * '''aircraft_helicopter''' &ndash; ''optional'' &ndash; For aviation units, the helicopter aircraft flown by the unit. * '''aircraft_helicopter_attack''' &ndash; ''optional'' &ndash; For aviation units, the attack helicopter aircraft flown by the unit. * '''aircraft_helicopter_cargo''' &ndash; ''optional'' &ndash; For aviation units, the cargo helicopter aircraft flown by the unit. * '''aircraft_helicopter_multirole''' &ndash; ''optional'' &ndash; For aviation units, the multirole helicopter aircraft flown by the unit. * '''aircraft_helicopter_observation''' &ndash; ''optional'' &ndash; For aviation units, the observation helicopter aircraft flown by the unit. * '''aircraft_helicopter_trainer''' &ndash; ''optional'' &ndash; For aviation units, the trainer helicopter aircraft flown by the unit. * '''aircraft_helicopter_utility''' &ndash; ''optional'' &ndash; For aviation units, the utility helicopter aircraft flown by the unit. * '''aircraft_interceptor''' &ndash; ''optional'' &ndash; For aviation units, the interceptor aircraft flown by the unit. * '''aircraft_patrol''' &ndash; ''optional'' &ndash; For aviation units, the patrol aircraft flown by the unit. * '''aircraft_recon''' &ndash; ''optional'' &ndash; For aviation units, the reconnaissance aircraft flown by the unit. * '''aircraft_trainer''' &ndash; ''optional'' &ndash; For aviation units, the trainer aircraft flown by the unit. * '''aircraft_transport''' &ndash; ''optional'' &ndash; For aviation units, the transport aircraft flown by the unit. * '''aircraft_tanker''' &ndash; ''optional'' &ndash; For aviation units, the aerial refueling aircraft flown by the unit. * '''aircraft_general''' &ndash; ''optional'' &ndash; For aviation units, where aircraft used do not fit well into the above categories. Note that the various <code>xyz_label</code> fields above are intended for overriding the default labels on these fields as needed for particular countries or services; in most cases, however, the default value is sufficient, and the fields need not be included. {{Command structure/doc|noheader=yes}} {{Service record/doc|noheader=yes}} == Example == {{Infobox military unit | unit_name = 502nd Parachute Infantry Regiment | image = 502 Parachute Infantry Regiment COA.PNG | caption = 502d PIR Coat of Arms | nickname = "Five-Oh-Deuce" or "The Deuce" | motto = ''Strike'' | colors = | march = | ceremonial_chief = | type = [[Parachute infantry]] | branch = [[United States Army|Army]] | dates = 1942–present | country = United States | allegiance = | command_structure = [[101st Airborne Division]] | size = | specialization = | current_commander = | garrison = [[Fort Campbell]] | garrison_label = | battles = World War II *[[Western Front (World War II)|European War]] *[[Invasion of Normandy|Battle of Normandy]] *[[Operation Market Garden]] *[[Battle of the Bulge]] [[War on Terrorism]] *[[Iraq War]] **[[Operation Iraqi Freedom]] | notable_commanders = {{unbulleted list|[[George V. H. Moseley, Jr.]]|[[John H. Michaelis]]}} | anniversaries = | decorations = {{unbulleted list|[[Presidential Unit Citation (United States)|Presidential Unit Citation]] (5)|[[Valorous Unit Award]] (5)|[[Croix de Guerre]]}} }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox military unit | unit_name = 502nd Parachute Infantry Regiment | image = 502 Parachute Infantry Regiment COA.PNG | caption = 502d PIR Coat of Arms | nickname = "Five-Oh-Deuce" or "The Deuce" | motto = ''Strike'' | colors = | march = | ceremonial_chief = | type = [[Parachute infantry]] | branch = [[United States Army|Army]] | dates = 1942–present | country = United States | allegiance = | command_structure = [[101st Airborne Division]] | size = | specialization = | current_commander = | garrison = [[Fort Campbell]] | garrison_label = | battles = World War II *[[Western Front (World War II)|European War]] *[[Invasion of Normandy|Battle of Normandy]] *[[Operation Market Garden]] *[[Battle of the Bulge]] [[War on Terrorism]] *[[Iraq War]] **[[Operation Iraqi Freedom]] | notable_commanders = {{unbulleted list|[[George V. H. Moseley, Jr.]]|[[John H. Michaelis]]}} | anniversaries = | decorations = {{unbulleted list|[[Presidential Unit Citation (United States)|Presidential Unit Citation]] (5)|[[Valorous Unit Award]] (5)|[[Croix de Guerre]]}} }} </syntaxhighlight> {{clear}} == Microformat == {{UF-hcard-org}} == TemplateData == {{collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <templatedata> { "description": "A military unit infobox may be used to summarize information about an individual military unit or formation, such as a regiment or division.", "format": "{{_\n| _____________________________ = _\n}}\n", "params": { "unit_name": { "type": "line", "required": true, "label": "Unit Name", "description": "The formal name of the unit." }, "image": { "type": "wiki-file-name", "label": "Unit Insignia Image", "description": "An image of the unit insignia (cap badges, tartan or colours), if available; other images may be used if this cannot be obtained. The image must be given in the form Example.jpg." }, "image_size": { "type": "string", "label": "Image size", "description": "Used to override the default image width of 200 pixels. It should be written as 200px." }, "alt": { "type": "string", "label": "Alternative text for image", "description": "Alternative text for visually impaired users, see WP:ALT." }, "caption": { "type": "string", "label": "Caption", "description": "The text to be placed below the image." }, "dates": { "type": "string", "required": true, "label": "Time Period Active", "description": "The period (usually in years) when the unit was active; alternately, the dates may be indicated by using one—or both—of the separate Start Date and End Date parameters.", "aliases": [ "start_date", "end_date" ] }, "country": { "type": "string/line", "label": "Country", "description": "If the unit is part of the armed forces of a sovereign state, the name of that state." }, "allegiance": { "type": "string/line", "label": "Allegiance", "description": "Used to indicate the allegiance of units which are not part of the regular armed forces of a sovereign state; can usually be omitted otherwise. In the case of National Guard or Naval Militia units, the State of origin should be indicated." }, "branch": { "type": "string/line", "label": "Branch", "description": "The service branch, in militaries that have them; typically army, navy, air force, etc." }, "type": { "type": "string", "label": "Type", "description": "The general type of unit, e.g., cavalry, infantry, artillery, etc. More specific types (airborne infantry, light cavalry, etc.) may be given as appropriate." }, "role": { "type": "string", "label": "Role", "description": "Typical strategic or tactical use of unit, e.g., shock troop, special operations, mechanized infantry, ceremonial guard, etc.", "aliases": [ "specialization" ] }, "size": { "type": "string", "label": "Size", "description": "The size of the unit; this may include both average and lifetime figures, and should indicate equipment (planes, tanks, cannon, etc.) where applicable. For U.S. units, this should only include Organic elements, not Assigned or Attached elements." }, "command_structure": { "type": "string", "label": "Command Structure", "description": "The larger unit(s) of which the unit is a part. This should not be used to provide an exhaustive history of the unit, which is more appropriate in the article itself, for units existing over a long period. For complicated cases, using the auxiliary command structure box may be appropriate." }, "garrison": { "type": "string/line", "label": "Garrison", "description": "Location of the unit's home base; this is generally applicable only to units in existence." }, "garrison_label": { "type": "line", "label": "Garrison Label", "description": "The label to use for the Garrison field." }, "nickname": { "type": "string", "label": "Nickname(s)", "description": "Any commonly-used nicknames for the unit." }, "patron": { "type": "line", "label": "Patron", "description": "The patron the unit was named after; this is only applicable in armed forces where units are named after individuals." }, "motto": { "type": "content", "label": "Motto", "description": "The official unit motto (with translation, if necessary)." }, "colors": { "type": "string", "label": "Colors", "description": "The unit colors; this may refer to either the actual colors used on the uniform, or to the colours of the unit.", "aliases": [ "colours" ] }, "colors_label": { "type": "line", "label": "Colors Label", "description": "The label to use for the Colors field.", "aliases": [ "colours_label" ] }, "march": { "type": "string", "label": "March(es)", "description": "The tune(s) commonly or officially played when the unit ceremonially marches; there may be several." }, "mascot": { "type": "string", "label": "Mascot", "description": "Any official or unofficial animal or character maintained by the unit." }, "equipment": { "type": "string", "label": "Equipment", "description": "For units strongly associated with specific equipment or vehicles, such as tanks, artillery, or aircraft, a brief list of the notable types used by the unit; if the number of entries is large, it is recommended that this field not be used, and that the full list be given in the article text instead." }, "equipment_label": { "type": "line", "label": "Equipment Label", "description": "The label to use for the Equipment field." }, "battles": { "type": "string", "label": "Battles", "description": "Any notable engagements in which the unit participated. The decision of what constitutes a notable engagement is left to the editors of the specific article." }, "battles_label": { "type": "line", "label": "Battles Label", "description": "The label to use for the Battles field; this defaults to \"Engagements\" if left blank." }, "anniversaries": { "type": "string", "label": "Anniversaries", "description": "Any anniversaries that a unit celebrates." }, "decorations": { "type": "string", "label": "Decorations", "description": "Any decorations (such as the Presidential Unit Citation) that the unit as a whole has received." }, "battle_honours": { "type": "string", "label": "Battle Honours", "description": "For units in countries that award some type of formal battle honours, the battle honours that the unit has received; while this may have some overlap with the battles field above, the two are not necessarily equivalent." }, "battle_honours_label": { "type": "line", "label": "Battle Honours Label", "description": "The label to use for the Battle Honours field; this defaults to \"Battle honours\" if left blank.", "example": "Accolades" }, "disbanded": { "type": "date", "label": "Disbanded Date", "description": "For units that have been disbanded, the dates and any other relevant notes regarding the disbanding." }, "flying_hours": { "type": "line", "label": "Flying Hours", "description": "If the formation is an aerial one, the total hours flown." }, "website": { "type": "url", "label": "Website", "description": "The official website of the formation, if any." }, "commander1": { "type": "string", "label": "Commander 1", "description": "A current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.", "aliases": [ "current_commander" ] }, "commander1_label": { "type": "line", "label": "Commander 1 Label", "description": "The label to use for the Commander 1 field; for historical reasons, this defaults to \"Current commander\" if left blank.", "default": "Current commander", "aliases": [ "current_commander_label" ] }, "commander2": { "type": "string", "label": "Commander 2", "description": "A current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.", "aliases": [ "ceremonial_chief" ] }, "commander2_label": { "type": "line", "label": "Commander 2 Label", "description": "The label to use for the Commander 2 field; for historical reasons, this defaults to \"Ceremonial chief\" if left blank.", "default": "Ceremonial chief", "aliases": [ "ceremonial_chief_label" ] }, "commander3": { "type": "string", "label": "Commander 3", "description": "A third current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.", "aliases": [ "colonel_of_the_regiment" ] }, "commander3_label": { "type": "line", "label": "Commander 3 Label", "description": "The label to use for the Commander 3 field; for historical reasons, this defaults to \"Colonel of the Regiment\" if left blank.", "default": "Colonel of the Regiment", "aliases": [ "colonel_of_the_regiment_label" ] }, "commander4": { "type": "string", "label": "Commander 4", "description": "A fourth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.", "aliases": [ "command_sergeant_major" ] }, "commander4_label": { "type": "line", "label": "Commander 4 Label", "description": "The label to use for the Commander 4 field; for historical reasons, this defaults to \"Command Sergeant Major\" if left blank.", "default": "Command Sergeant Major", "aliases": [ "command_sergeant_major_label" ] }, "commander5": { "type": "string", "label": "Commander 5", "description": "A fifth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader." }, "commander5_label": { "type": "line", "label": "Commander 5 Label", "description": "The label to use for the Commander 5 field", "default": "Commander" }, "commander6": { "type": "string", "label": "Commander 6", "description": "A sixth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader." }, "commander6_label": { "type": "line", "label": "Commander 6 Label", "description": "The label to use for the Commander 6 field", "default": "Commander" }, "commander7": { "type": "string", "label": "Commander 7", "description": "A seventh current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader." }, "commander7_label": { "type": "line", "label": "Commander 7 Label", "description": "The label to use for the Commander 7 field", "default": "Commander" }, "commander8": { "type": "string", "label": "Commander 8", "description": "A eighth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader." }, "commander8_label": { "type": "line", "label": "Commander 8 Label", "description": "The label to use for the Commander 8 field", "default": "Commander" }, "commander9": { "type": "string", "label": "Commander 9", "description": "A ninth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader." }, "commander9_label": { "type": "line", "label": "Commander 9 Label", "description": "The label to use for the Commander 9 field", "default": "Commander" }, "notable_commanders": { "type": "string", "label": "Notable Commanders", "description": "Any notable former commanders of the unit; judgement of notability is left to individual article editors." }, "identification_symbol": { "type": "string", "label": "Identification Symbol", "description": "The unit's identification symbol (such as a patch, tartan, or tactical identification flash). Use [[File:Example.jpg|200px]] format." }, "identification_symbol_label": { "type": "line", "label": "Identification Symbol Label", "description": "The label to use for the Identification Symbol field." }, "identification_symbol_2": { "type": "string", "label": "Identification Symbol 2", "description": "Another identification symbol. Use [[File:Example.jpg|200px]] format." }, "identification_symbol_3": { "type": "string", "label": "Identification Symbol 3", "description": "Another identification symbol. Use [[File:Example.jpg|200px]] format." }, "identification_symbol_4": { "type": "string", "label": "Identification Symbol 4", "description": "Another identification symbol. Use [[File:Example.jpg|200px]] format." }, "identification_symbol_2_label": { "type": "line", "label": "Identification Symbol 2 Label", "description": "The label to use for the Identification Symbol 2 field." }, "identification_symbol_3_label": { "type": "line", "label": "Identification Symbol 3 Label", "description": "The label to use for the Identification Symbol 3 field." }, "identification_symbol_4_label": { "type": "line", "label": "Identification Symbol 4 Label", "description": "The label to use for the Identification Symbol 4 field." }, "aircraft_attack": { "type": "string", "label": "Attack Aircraft", "description": "For aviation units, the attack aircraft flown by the unit." }, "aircraft_bomber": { "type": "string", "label": "Bomber Aircraft", "description": "For aviation units, the bomber aircraft flown by the unit." }, "aircraft_electronic": { "type": "string", "label": "Electronic Warfare Aircraft", "description": "For aviation units, the electronic warfare aircraft flown by the unit." }, "aircraft_fighter": { "type": "string", "label": "Fighter Aircraft", "description": "For aviation units, the fighter aircraft flown by the unit." }, "aircraft_helicopter": { "type": "string", "label": "Helicopter Aircraft", "description": "For aviation units, the helicopter aircraft flown by the unit." }, "aircraft_helicopter_attack": { "type": "string", "label": "Attack Helicopter Aircraft", "description": "For aviation units, the attack helicopter aircraft flown by the unit." }, "aircraft_helicopter_cargo": { "type": "string", "label": "Cargo Helicopter Aircraft", "description": "For aviation units, the cargo helicopter aircraft flown by the unit." }, "aircraft_helicopter_multirole": { "type": "string", "label": "Multirole Helicopter Aircraft", "description": "For aviation units, the multirole helicopter aircraft flown by the unit." }, "aircraft_helicopter_observation": { "type": "string", "label": "Observation Helicopter Aircraft", "description": "For aviation units, the observation helicopter aircraft flown by the unit." }, "aircraft_helicopter_trainer": { "type": "string", "label": "Trainer Helicopter Aircraft", "description": "For aviation units, the trainer helicopter aircraft flown by the unit." }, "aircraft_helicopter_utility": { "type": "string", "label": "Utility Helicopter Aircraft", "description": "For aviation units, the utility helicopter aircraft flown by the unit." }, "aircraft_interceptor": { "type": "string", "label": "Interceptor Aircraft", "description": "For aviation units, the interceptor aircraft flown by the unit." }, "aircraft_patrol": { "type": "string", "label": "Patrol Aircraft", "description": "For aviation units, the patrol aircraft flown by the unit." }, "aircraft_recon": { "type": "string", "label": "Recon Aircraft", "description": "For aviation units, the reconnaissance aircraft flown by the unit." }, "aircraft_trainer": { "type": "string", "label": "Trainer Aircraft", "description": "For aviation units, the trainer aircraft flown by the unit." }, "aircraft_transport": { "type": "string", "label": "Transport Aircraft", "description": "For aviation units, the transport aircraft flown by the unit." }, "aircraft_tanker": { "type": "string", "label": "Tanker Aircraft", "description": "For aviation units, the aerial refueling aircraft flown by the unit." }, "aircraft_general": { "type": "string", "description": "For aviation units, where aircraft used do not fit well into the above categories.", "label": "Other aircraft" }, "countries": { "label": "Countries drawn from", "description": "For multinational forces, the countries the unit is drawn from. {{Flag|<country>}} format is preferred.", "type": "string" }, "native_name": {}, "identification_symbol_5": {}, "identification_symbol_5_label": {}, "identification_symbol_6": {}, "identification_symbol_6_label": {} }, "paramOrder": [ "unit_name", "native_name", "image", "image_size", "alt", "caption", "dates", "disbanded", "country", "countries", "allegiance", "branch", "type", "role", "size", "command_structure", "garrison", "garrison_label", "nickname", "patron", "motto", "colors", "colors_label", "march", "mascot", "anniversaries", "equipment", "equipment_label", "battles", "battles_label", "decorations", "battle_honours", "battle_honours_label", "flying_hours", "website", "commander1", "commander1_label", "commander2", "commander2_label", "commander3", "commander3_label", "commander4", "commander4_label", "commander5", "commander5_label", "commander6", "commander6_label", "commander7", "commander7_label", "commander8", "commander8_label", "commander9", "commander9_label", "notable_commanders", "identification_symbol", "identification_symbol_label", "identification_symbol_2", "identification_symbol_3", "identification_symbol_4", "identification_symbol_2_label", "identification_symbol_3_label", "identification_symbol_4_label", "identification_symbol_5", "identification_symbol_5_label", "identification_symbol_6", "identification_symbol_6_label", "aircraft_attack", "aircraft_bomber", "aircraft_electronic", "aircraft_fighter", "aircraft_helicopter", "aircraft_helicopter_attack", "aircraft_helicopter_cargo", "aircraft_helicopter_multirole", "aircraft_helicopter_observation", "aircraft_helicopter_trainer", "aircraft_helicopter_utility", "aircraft_interceptor", "aircraft_patrol", "aircraft_recon", "aircraft_trainer", "aircraft_transport", "aircraft_tanker", "aircraft_general" ] } </templatedata> {{collapse bottom}} ==Tracking cats== *{{Category link with count|Pages using infobox military unit with unknown parameters}} <noinclude> [[Category:WikiProject Military history template instructions|Military unit infobox]] </noinclude><includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Military infobox templates|Unit]] }}</includeonly> a72f9a1b9c9842d227186818b1b61cf295a8f490 Template:Infobox command structure/doc 10 1517 2852 2023-05-16T22:43:07Z w>WOSlinker 0 /* Command structure box */ syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} {{#ifeq:{{{noheader|}}}|yes||{{Documentation subpage}} ==Usage== }} ==== Command structure box ==== {{Infobox command structure | bodyclass = plainlist | name = 12th Infantry Division | date = 1941–1943 | parent = [[XVII Corps (United Kingdom)|XVII Corps]] | subordinate = * 17th Mechanized Regiment * 51st Light Infantry Regiment * 53rd Infantry Regiment * 107th Artillery Brigade }} A command structure box may be used to summarize information about an individual military unit's parent and subordinate units; it should generally be used in conjunction with {{tlx|Infobox military unit}}. If needed, multiple boxes may be used to show the unit's command structure during different periods. The box should be added using the {{tlx|Infobox command structure}} template, as shown below: <div style="width:350px;background:#dddddd;border: 1px solid black;"><syntaxhighlight lang="wikitext" style="overflow:auto; margin:0.5em"> {{Infobox command structure | name = | date = | parent = | subordinate = }} </syntaxhighlight></div> '''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]). * '''name''' &ndash; the name of the unit or formation. * '''date''' &ndash; ''optional'' &ndash; the dates during which the given structure was in place. * '''parent''' &ndash; ''optional'' &ndash; the unit's parent unit. * '''subordinate''' &ndash; ''optional'' &ndash; the unit's subordinate units. <noinclude>[[Category:WikiProject Military history template instructions|Command structure box]]</noinclude> <includeonly>{{Sandbox other|| {{#ifeq:{{{noheader|}}}|yes|| [[Category:Military auxiliary infobox templates|Command structure]] }}}}</includeonly> 2651b99c1bdf7a14acb98cc60f6372038868fa29 Template:Infobox service record/doc 10 1519 2854 2023-05-17T08:51:50Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{#ifeq:{{{noheader|}}}|yes||{{Documentation subpage}} ==Usage== }} ==== Infobox service record ==== {{Infobox service record | label = Combat service | partof = [[7. Unterseebootsflottille]] (1938–41) | codes = M 18 837 (''feldpost'') | commanders = [[Günther Prien]] (1938–41) | operations = 10 patrols | victories = 30 ships (162,769 [[Tonnage|GRT]]) sunk,<br>1 warship (29,150 tons) sunk,<br>8 ships (62,751 GRT) damaged | awards = }} A service record box may be used to summarize information about an individual military unit's or ship's service history; it should generally be used in conjunction with the appropriate [[WP:MILMOS#Primary infoboxes|primary infobox]]. If needed, multiple boxes may be used to separate the service record for different periods; for example, a unit that fought in several wars may have separate boxes for each. The box should be added using the {{tlx|Infobox service record}} template, as shown below: <div style="width:350px;background:#dddddd;border: 1px solid black;"><syntaxhighlight lang="wikitext" style="overflow:auto; margin:0.5em"> {{Infobox service record | is_ship = | is_multi = | label = | partof = | codes = | commanders = | operations = | victories = | awards = }} </syntaxhighlight></div> '''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]). * '''is_ship''' &ndash; ''optional'' &ndash; "''yes''" if the box is being used inside a compound ship infobox. * '''is_multi''' &ndash; ''optional'' &ndash; "''yes''" if multiple instances of the box are being used inside a single compound ship infobox. * '''label''' &ndash; ''optional'' &ndash; the label to use for the box; this defaults to "Service record" if left blank. * '''partof''' &ndash; ''optional'' &ndash; the unit or formation of which the subject unit or ship was a part; multiple units may be listed with the corresponding dates. * '''codes''' &ndash; ''optional'' &ndash; the identification codes carried by the unit or ship; these should generally be labeled according to what the code indicates. * '''commanders''' &ndash; ''optional'' &ndash; the notable commanding officers for the period covered. * '''operations''' &ndash; ''optional'' &ndash; the operations (such as battles, wars, campaigns, patrols, cruises, etc.) in which the subject unit or ship participated; these may be given as a list, or described in a more condensed form. * '''victories''' &ndash; ''optional'' &ndash; the victories or successes in the subject's service history. For units, this may be battles won; for submarines or merchant raiders, the ships and tonnage sunk; and so forth. * '''awards''' &ndash; ''optional'' &ndash; the awards, decorations, or other honors received by the subject unit or ship. <noinclude>[[Category:WikiProject Military history template instructions|Service record box]]</noinclude> <includeonly>{{Sandbox other|| {{#ifeq:{{{noheader|}}}|yes|| [[Category:Military auxiliary infobox templates|Service Record]] }}}}</includeonly> fdc36320486e459c82f51dca7ed4b2e8d13fe441 Template:Infobox consort styles/doc 10 1277 2611 2023-05-18T12:43:24Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> {{Wraps infobox|Infobox manner of address}} == Usage == {{Parameter names example|_template=Infobox consort styles|royal name|image|dipstyle|offstyle|altstyle}} <syntaxhighlight lang="wikitext" style="overflow: auto;">{{Infobox consort styles | royal name = | image = | dipstyle = | offstyle = | altstyle = }}</syntaxhighlight> <includeonly>{{Sandbox other|| <!-- Categories go here, and interwikis go in Wikidata --> {{DEFAULTSORT:Consort styles}} [[Category:Royalty and nobility infobox templates]] [[Category:Styles infobox templates]] [[Category:Templates calling Infobox manner of address]] }}</includeonly> 2de76592ae93469bbc778aae5828d281bfc669f2 Template:Infobox tea/doc 10 1489 2824 2023-05-18T14:55:15Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} {{Lua|Module:Infobox|Module:InfoboxImage}} {{Parameter names example|Tea_name|Tea_image|Tea_type|Tea_color|Tea_names|Tea_origin|Tea_quick|Tea_infusion|Tea_temperature|Tea_time|Tea_infusion_number|Tea_quantity|Tea_hour}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> == Usage == <syntaxhighlight lang="wikitext" style="overflow: auto;">{{Infobox tea | Tea_name = | Tea_type = | Tea_color = | Tea_image = | Tea_origin = | Tea_names = | Tea_quick = | Tea_temperature = | Tea_time = | module = }}</syntaxhighlight> == Parameters == ''Parameters '''cannot''' be left blank with the exception of '''Tea_image''' and '''module'''''. ;Tea_name: Name of the Tea ;Tea_type: Type of tea (black, white, green) ;Tea_color: Physical colour of the tea ;Tea_image: File name of the image. Use only the file name such as: <code><nowiki>Placeholder.png</nowiki></code> ;Tea_origin: Origin of the tea, preferably linked ;Tea_names: Other name(s) ;Tea_quick: A quick description of the tea (smell, taste, colour) ;module: Used for embedding other infoboxes into this one <includeonly>{{Sandbox other|| <!-- CATEGORIES AND INTERWIKIS HERE, THANKS --> [[Category:Coffee and tea templates]] [[Category:Drink infobox templates|Tea]] [[Category:Coffee and Tea Taskforce templates]] [[Category:Infobox templates with module parameter|Tea]] }}</includeonly> a95e74ed2d3ae6e0be4066262a6824d00a4f8587 Template:Infobox Belgian royalty styles/doc 10 1273 2607 2023-05-18T15:02:49Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata --> {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} {{Wraps infobox|Infobox manner of address}} {{clear}} == Usage == {{Parameter names example | name | reference | spoken | alternative }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox Belgian royalty styles|type | name = | image = | image_size = | reference = | spoken = | alternative = }} </syntaxhighlight> where <code>''type''</code> = <code>1830</code>, <code>1837</code>, <code>1921</code>, <code>own</code> or <code>none</code> {{clear}} {{Infobox Belgian royalty styles|1830|name={{{name}}}}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox Belgian royalty styles|1830}} </syntaxhighlight> {{clear}} {{Infobox Belgian royalty styles|1837|name={{{name}}}}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox Belgian royalty styles|1837}} </syntaxhighlight> {{clear}} {{Infobox Belgian royalty styles|1921|name={{{name}}}}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox Belgian royalty styles|1921}} </syntaxhighlight> {{clear}} {{Infobox Belgian royalty styles|own|name={{{name}}}|image={{{image}}}||image_size={{{image_size}}}}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox Belgian royalty styles|own}} </syntaxhighlight> {{clear}} {{Infobox Belgian royalty styles|none|name={{{name}}}}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox Belgian royalty styles|none}} </syntaxhighlight> {{clear}} == Images == {{See also|Coat of arms of Belgium}} <gallery widths=200 heights=200> File:Coat of Arms of the King of the Belgians.svg | default: [[:File:Coat of Arms of the King of the Belgians.svg]] File:Coat of Arms of King Leopold I of Belgium.svg | 1830: [[:File:Coat of Arms of King Leopold I of Belgium.svg]] File:Coat of Arms of the King of the Belgians (1837-1921).svg | 1837: [[:File:Coat of Arms of the King of the Belgians (1837-1921).svg]] File:Coat of Arms of the King of the Belgians (1921-2019).svg | 1921: [[:File:Coat of Arms of the King of the Belgians (1921-2019).svg]] </gallery> == Tracking category == * {{clc|Pages using infobox manner of address with unknown parameters}} <includeonly>{{basepage subpage| <!-- Categories below this line, please; interwikis at Wikidata --> {{DEFAULTSORT:Belgian Royalty Styles}} [[Category:Royalty and nobility infobox templates]] [[Category:Styles infobox templates]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> 6316bbc67f313c40a2f034b0a273b6e01979524a Template:As of 10 1288 2623 2023-05-18T21:22:11Z w>Sdkb 0 Adding {{yesno}} to make {{{since}}} and {{{lc}}} variables case-insensitive, per [[WP:SILENTCONSENSUS|silent]] consensus [[Template_talk:As_of/Archive_1#Yesno?|at talk]] wikitext text/x-wiki <!--{{As of}} begin--><includeonly><!-- ## param 1 is the year ## optional param 2 is the month ## optional param 3 is the day of the month ## optional named parameter alt=[text] is alternative display text (may include wiki markup) ## optional named parameter df=US produces American date format in displayed text ## optional named parameter lc=on gives lower-case-first output ## optional named parameter url=[URL] gives statement reference ## displayed text ([A/a]s of [Start date] by default) -->{{#if: {{{alt|}}} | {{{alt}}} | {{#if:{{{bare|}}}||{{#if:{{yesno|{{{since|}}}}}|{{#if: {{yesno|{{{lc|}}}}} | s | S }}ince | {{#if: {{yesno|{{{lc|}}}}} | a | A }}s of}}}} {{#if:{{{pre|}}}|{{{pre}}}&#32;}}{{#if: {{{3|}}} | {{#ifeq:{{lc:{{{df|}}}}}|us|{{MONTHNAME|{{{2}}}}}&nbsp;{{#expr:{{{3}}}}},&#32;|{{#expr:{{{3}}}}}&nbsp;{{MONTHNAME|{{{2}}}}}&nbsp;}}{{{1}}}|{{#if: {{{2|}}} |{{MONTHNAME|{{{2}}}}}&nbsp;}}{{{1}}}}}}}{{#if:{{{post|}}}|<nowiki />{{{post}}}}}<!-- #### That nowiki is required or, various characters (:, ;, #, and *} will be parsed as wikisyntax for list items. ## ref/update inline banner (hidden by default) --><sup class="plainlinks noexcerpt noprint asof-tag {{#if:{{{url|}}}|ref|update}}" style="display:none;">[{{#if:{{{url|}}}|{{{url}}} &#91;ref&#93;|{{fullurl:{{PAGENAME}}|action=edit}} &#91;update&#93;}}]</sup><!-- ## categorisation disabled outside main namespace -->{{DMCA|Articles containing potentially dated statements|from|<!-- ## temporal category for template (word method) -->{{#if: {{#ifexpr: {{{1}}} = 1 }} | {{#ifexpr: {{#time:Y|{{{1}}}}} > 2004 | {{{1}}} | {{#ifexpr: {{#time:Y|{{{1}}}}} > 1989 | {{#time:Y|{{{1}}}}} | before 1990 }}}} | <!-- ## temporal category for template (parameter method) -->{{#ifexpr: {{{1}}} > 2004 | {{#if:{{{2|}}} | {{MONTHNAME|{{{2}}}}} }} {{{1}}} | {{#ifexpr:{{{1}}} > 1989 | {{{1}}} | before 1990 }}}}}}|<!-- ## global category for template -->All articles containing potentially dated statements}}</includeonly><!--{{As of}} end--><noinclude><!-- ## dynamic example (as of today, self ref) -->{{As of|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{CURRENTDAY}}}}<sup class="plainlinks">[https://en.wikipedia.org/wiki/Template:As_of &#91;ref&#93;]</sup> {{documentation}} <!-- Add categories and inter-wikis to the /doc subpage, not here! --> </noinclude>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using as of template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:As of]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | alt | bare | df | lc | post | pre | since | url }} dd0794e75a86855d0ccc649adeaa8be5d3c3c704 Module:Infobox/doc 828 84 1095 207 2023-05-19T18:05:05Z wikipedia>Andrybak 0 add [[Module:Italic title]] to Lua wikitext text/x-wiki {{High-use|3308957|all-pages = yes}} {{module rating|protected}} {{Lua|Module:Navbar|Module:Italic title}} {{Uses TemplateStyles|Module:Infobox/styles.css|Template:Hlist/styles.css|Template:Plainlist/styles.css}} '''Module:Infobox''' is a [[WP:Module|module]] that implements the {{tl|Infobox}} template. Please see the template page for usage instructions. == Tracking categories == * {{clc|Pages using infobox templates with ignored data cells}} * {{clc|Articles using infobox templates with no data rows}} * {{clc|Pages using embedded infobox templates with the title parameter}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| [[Category:Modules that add a tracking category]] [[Category:Wikipedia infoboxes]] [[Category:Infobox modules]] [[Category:Modules that check for strip markers]] }}</includeonly> 936ad219eb263a6f3293d62f667bd7b5db1059c1 Module:TNT 828 77 175 2023-05-20T18:33:54Z meta>Dmehus 0 Undid revision 335077 by [[Special:Contributions/Dmehus|Dmehus]] ([[User talk:Dmehus|talk]]) Revert. Did not fix it Scribunto text/plain -- -- INTRO: (!!! DO NOT RENAME THIS PAGE !!!) -- This module allows any template or module to be copy/pasted between -- wikis without any translation changes. All translation text is stored -- in the global Data:*.tab pages on Commons, and used everywhere. -- -- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules -- -- ATTENTION: -- Please do NOT rename this module - it has to be identical on all wikis. -- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT -- Please do not modify it anywhere else, as it may get copied and override your changes. -- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT -- -- DESCRIPTION: -- The "msg" function uses a Commons dataset to translate a message -- with a given key (e.g. source-table), plus optional arguments -- to the wiki markup in the current content language. -- Use lang=xx to set language. Example: -- -- {{#invoke:TNT | msg -- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab --> -- | source-table <!-- uses a translation message with id = "source-table" --> -- | param1 }} <!-- optional parameter --> -- -- -- The "doc" function will generate the <templatedata> parameter documentation for templates. -- This way all template parameters can be stored and localized in a single Commons dataset. -- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons. -- -- {{#invoke:TNT | doc | Graph:Lines }} -- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab -- if the current page is Template:Graph:Lines/doc -- local p = {} local i18nDataset = 'I18n/Module:TNT.tab' -- Forward declaration of the local functions local sanitizeDataset, loadData, link, formatMessage function p.msg(frame) local dataset, id local params = {} local lang = nil for k, v in pairs(frame.args) do if k == 1 then dataset = mw.text.trim(v) elseif k == 2 then id = mw.text.trim(v) elseif type(k) == 'number' then params[k - 2] = mw.text.trim(v) elseif k == 'lang' and v ~= '_' then lang = mw.text.trim(v) end end return formatMessage(dataset, id, params, lang) end -- Identical to p.msg() above, but used from other lua modules -- Parameters: name of dataset, message key, optional arguments -- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.format(dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('format', 1, dataset, 'string') checkType('format', 2, key, 'string') return formatMessage(dataset, key, {...}) end -- Identical to p.msg() above, but used from other lua modules with the language param -- Parameters: language code, name of dataset, message key, optional arguments -- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.formatInLanguage(lang, dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('formatInLanguage', 1, lang, 'string') checkType('formatInLanguage', 2, dataset, 'string') checkType('formatInLanguage', 3, key, 'string') return formatMessage(dataset, key, {...}, lang) end -- Obsolete function that adds a 'c:' prefix to the first param. -- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab' function p.link(frame) return link(frame.args[1]) end function p.doc(frame) local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1]) return frame:extensionTag('templatedata', p.getTemplateData(dataset)) .. formatMessage(i18nDataset, 'edit_doc', {link(dataset)}) end function p.getTemplateData(dataset) -- TODO: add '_' parameter once lua starts reindexing properly for "all" languages local data = loadData(dataset) local names = {} for _, field in ipairs(data.schema.fields) do table.insert(names, field.name) end local params = {} local paramOrder = {} for _, row in ipairs(data.data) do local newVal = {} local name = nil for pos, columnName in ipairs(names) do if columnName == 'name' then name = row[pos] else newVal[columnName] = row[pos] end end if name then params[name] = newVal table.insert(paramOrder, name) end end -- Work around json encoding treating {"1":{...}} as an [{...}] params['zzz123']='' local json = mw.text.jsonEncode({ params=params, paramOrder=paramOrder, description=data.description }) json = string.gsub(json,'"zzz123":"",?', "") return json end -- Local functions sanitizeDataset = function(dataset) if not dataset then return nil end dataset = mw.text.trim(dataset) if dataset == '' then return nil elseif string.sub(dataset,-4) ~= '.tab' then return dataset .. '.tab' else return dataset end end loadData = function(dataset, lang) dataset = sanitizeDataset(dataset) if not dataset then error(formatMessage(i18nDataset, 'error_no_dataset', {})) end -- Give helpful error to thirdparties who try and copy this module. if not mw.ext or not mw.ext.data or not mw.ext.data.get then error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset) end local data = mw.ext.data.get(dataset, lang) if data == false then if dataset == i18nDataset then -- Prevent cyclical calls error('Missing Commons dataset ' .. i18nDataset) else error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)})) end end return data end -- Given a dataset name, convert it to a title with the 'commons:data:' prefix link = function(dataset) return 'c:Data:' .. mw.text.trim(dataset or '') end formatMessage = function(dataset, key, params, lang) for _, row in pairs(loadData(dataset, lang).data) do local id, msg = unpack(row) if id == key then local result = mw.message.newRawMessage(msg, unpack(params or {})) return result:plain() end end if dataset == i18nDataset then -- Prevent cyclical calls error('Invalid message key "' .. key .. '"') else error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)})) end end return p 2c570369c78089aef29c72768918373f61b7075d Template:Infobox Greece place/doc 10 1459 2794 2023-05-20T22:41:25Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}} {{Uses Infobox settlement}} This infobox is to be used for [[List of municipalities and communities in Greece (1997–2010)|Greek towns, cities, municipalities, and villages]]. See [[Template talk:Infobox Greek place|Talk page]] for instructions and discussions. ==Parameters== {{Parameter names example | name | name_local | image_skyline | imagesize | caption_skyline | city_flag | city_seal | coordinates = {{coord|40|21}} | image_map | map_caption | georegion | periph | periphunit | municipality | municunit | community | seat | established_c | established_m | established_v | districts | mayor | party | since | area = 10 | area_urban = 10 | area_village = 10 | area_metro = 10 | area_municipality = 10 | area_municunit = 10 | elevation = 10 | elevation_max = 10 | elevation_min = 10 | population_as_of | population = 10 | population_urban = 10 | population_village = 10 | population_metro = 10 | pop_municipality = 10 | pop_municunit = 10 | demonym | pop_community = 10 | area_community = 10 | postal_code | area_code | licence | website | footnotes }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox Greek place | name = | name_local = | image_skyline = | caption_skyline = | city_flag = | city_seal = | image_map = | map_caption = | coordinates = <!-- {{Coord}} --> | georegion = | demonym = | periph = | periphunit = | municipality = | municunit = | community = | seat = | established_c = | established_m = | established_v = | districts = | party = | since = | mayor = | area = | area_urban = | area_village = | area_metro = | area_municipality = | area_municunit = | elevation = | elevation_max = | elevation_min = | population_as_of = | population = | population_urban = | population_village = | population_metro = | pop_municipality = | pop_municunit = | pop_community = | area_community = | postal_code = | area_code = | licence = | website = }} </syntaxhighlight> ==Parameters deliberately left out== * All the size fields, such as ''flag_size'', ''seal_size'', ''imagesize'' and ''pushpin_mapsize''. They are all formatted by the infobox itself, so there is no need to adjust them. ==Microformat== {{UF-hcard-geo}} ==Tracking category== * {{clc|Pages using infobox Greece place with unknown parameters}} <includeonly>{{Sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Greece place infobox templates|Greece place]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] [[Category:Templates that generate named references]] }}</includeonly> d79215489ddf26df03ff8eba90cfcc9cf497406b Template:Infobox French commune/doc 10 1455 2790 2023-05-20T22:47:35Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --> {{High-use| 37304 }} {{Uses Infobox settlement}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}} This infobox is meant for communes (the lowest level of administrative division) in France. This is an empty infobox with all available fields. The contents of the parameter fields, and which are optional, are explained below. This infobox now also supports settlements that are part of a commune, for instance former communes that were merged into a ''commune nouvelle''. See the parameter {{para|commune}} for a manual. {{TOC limit|2}} ==Usage== Delete any unneeded fields when using the full template syntax. {{Parameter names example | name | native name | commune status | total type | image | image size | caption | image flag | image flag size | flag_link | image coat of arms | image coat of arms size | shield_link | city motto | map | adjustable map | map size | map caption | INSEE | arrondissement | canton | intercommunality | type | commune | subdivisions entry | subdivisions | party | mayor | term | area km2 = 1 | area footnotes | urban area date | metro area date | population date | population ranking | urban pop date | urban pop | metro area pop date | metro area pop | population | population footnotes | population demonym | ethnic | ethnic date | utc offset | postal code | dialling code | elevation m = 1 | elevation min m = 0 | elevation max m = 2 | elevation footnotes | website }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox French commune | name = | native name = | commune status = | total type = | image = | image size = | caption = | image flag = | image flag size = | flag_link = | image coat of arms = | image coat of arms size = | shield_link = | city motto = | map = | adjustable map = | map size = | map caption = | coordinates = <!-- use {{Coord}} --> | INSEE = | province = <!-- New Caledonia only --> | administrative subdivision = <!-- French Polynesia only --> | arrondissement = | canton = | intercommunality = | commune = <!-- for settlements that are part of a commune --> | type = <!-- for settlements that are part of a commune --> | subdivisions entry = | subdivisions = | party = | mayor = | term = | area km2 = | area footnotes = | urban area date = | urban area km2 = | metro area date = | metro area km2 = | population date = | population ranking = | urban pop date = | urban pop = | metro area pop date = | metro area pop = | population = | population demonym = | ethnic = | ethnic date = | utc offset = <!-- French Polynesia only --> | postal code = | dialling code = | elevation m = | elevation min m = | elevation max m = | elevation footnotes = | website = }} </syntaxhighlight> ==Parameters== Note that the field name is case-sensitive; it should be lower case (apart from INSEE). Some lesser used fields are not discussed (yet) in this overview. Delete any unneeded fields when using the full template syntax. === Required parameters === * coordinates * arrondissement * canton * population * INSEE ===name=== English name of location. If this field is not specified, the article name is used. ===native name=== French name of location. Use only if French name is different from English name (e.g. Dunkirk–Dunkerque). Sometimes used for regional languages, such as Breton and Catalan. ===commune status=== If you want a sub-banner to appear. Defaults to empty. Can be anything—for example, [[Paris]] can use it to describe its status as both a commune and department. ===total type=== If this is left empty, area and population totals will appear on the same line as the respective title. If you indicate something different (for example, 'commune'), that title will appear as a sub-title for both area and population sections. ===image=== A representative picture of the location: skyline, notable landmark, etc. The image used should preferably be wider than it is tall, to keep the infobox as compact as possible. The plain image file name should be given, e.g. <nowiki>Vieux port de Marseille 2.jpg</nowiki>. ===caption=== The caption for this picture (optional). ===image flag, image coat of arms, etc.=== The official flag and coat of arms of the commune. See the infoboxes of [[Paris]] and [[Marseille]] for examples. ===city motto=== The official city motto (probably only applicable for the largest cities). ===map, adjustable map=== '''Avoid, except for overseas departments and territories.''' For locations in metropolitan (=European) France, an automatic map is generated if the coordinates are given in {{para|coordinates}} (see below). For locations in the overseas departments and territories (e.g. French Guiana, New Caledonia, Réunion), this automatic map will give strange results. In these cases, manual location maps ("map", "adjustable map"). * "map": Specify only the file name of the map image, e.g. "Cayenne.PNG". * "adjustable map": Specify the file name of the map image, e.g. "adjustable map=Cayenne.PNG", and the width in the field "map size", e.g. "map size=200px". ===coordinates=== '''Required.''' Geographical coordinates of location. Give location in decimals. Northern hemisphere and eastern hemisphere have positive numbers. The coordinates are used for map calculation. If the coordinates are not available in French or Dutch ("Nederlands") Wikipedia, you can look them up at for instance https://www.annuaire-mairie.fr (you can search by the name of the commune, results under "Géographie". Elevations and area are also given). ===INSEE=== The INSEE (French national statistics institute) code of the commune. The region and the department to which the location belongs are retrieved using this code and a subtemplate. The INSEE code is also used to provide a link to the census results for the commune. For settlements that are part of a commune, use any number that starts with the department number, for instance the INSEE code of the commune, the former commune, or just the department number (e.g. 77 for a place in Seine-et-Marne). It does not show, but it is used to display the correct region, department and detailed map. ===region and department=== DEPRECATED: The region and the department to which the location belongs are retrieved using the (required!) INSEE code. The fields "region" and "department" are no longer used. ===province=== For New Caledonia. ===administrative subdivision=== For French Polynesia. ===arrondissement=== '''Required.''' The arrondissement to which the location belongs. No wikilinks required. Some overseas locations are not part of an arrondissement. The largest cities (e.g. Paris, Lyon, Marseille) are subdivided into arrondissements themselves. In those cases, use the "subdivisions" field instead. ===canton=== '''Required.''' The canton to which the location belongs. No wikilinks required. Some overseas locations are not part of a canton. Some locations, usually the larger cities, are subdivided into cantons themselves. In those cases, use the "subdivisions" field instead. ===intercommunality=== Many communes cooperate in an intercommunality. ===commune, type=== For settlements that are part of a commune. "commune" is the commune the settlement is part of, "type" is the type of settlement, for instance ''commune déléguée'' or ''commune associée''. Default type is ''part''. ===subdivisions=== Some locations, usually the larger cities, are subdivided into arrondissements or cantons. In those cases, fill in something like "subdivisions=9 arrondissements". A link to an article about these subdivisions can also go here. ===mayor=== The mayor of the commune. The governing period of the mayor (currently 2020&ndash;2026) should be given in the field "term". Optionally, the political affiliation of the mayor can be given in the field "party". ===area km2=== The area of the commune in square kilometres. Don't use a comma for decimal separator, but use a point (12.34 instead of 12,34): commas give bad results in the population density calculation. The template will also calculate the area in square miles. ===population=== The population of the commune. Don't use thousands separators like points or spaces (e.g. 5.678 or 34 567): they give bad results in the population density calculation. The census year should be given in the field "population date". You can add references and footnotes in the field "population footnotes" (not in "population"). '''Note:''' Adding references to commune, urban and metro population numbers 'breaks' the settlement template population density calculations for each respective area. For existing communes (i.e. not former communes) the template {{tl|France metadata Wikidata}} should be used, which retrieves the most recent population data from Wikidata. For example: <syntaxhighlight lang="wikitext">|population = {{France metadata Wikidata|population_total}} |population date = {{France metadata Wikidata|population_as_of}} |population footnotes = {{France metadata Wikidata|population_footnotes}}</syntaxhighlight> ===population_demonym=== The adjective describing the people and places of the region. Use the ''English'' demonym by default (e.g., <code>Parisian</code>, not "Parisien"). If the French demonym is included, specify the respective languages in full or via [[:wikt:Wiktionary:List of languages|language code]]. Use the correct capitalization common to each respective language. For example: {{nowrap|<code><nowiki>Parisian (English)<br>parisien (French)</nowiki></code>}} or {{nowrap|<code><nowiki>Parisian (en)<br>parisien (fr)</nowiki></code>}}. Use [[non-breaking space]]s (&amp;nbsp;) or {{tl|nowrap}} to prevent unhelpful text-wrapping in these lines. Do not include the [[feminine gender|feminine form]] as a separate demonym, but do include it as an alternative style of the French demonym if possible: <code>parisien(ne)</code>. Do not include other languages' demonyms unless they are [[WP:NOTABILITY|notable]] (e.g., Breton names only for Breton places). ===time zone=== Only use this parameter for places in French Polynesia. For other places the time zone is derived from the INSEE code. ===postal code=== The postal code(s) of the commune. ===elevation min m, elevation max m, elevation m=== The minimum, maximum, and average elevation of the commune above sea level in metres. The metres will be converted to feet, and both are displayed. ===website=== The official website of the commune. Please follow the guidelines at [[WP:LINKS]]. == Example: [[Paris]] == <!-- Displayed as an infobox --> {{Infobox French commune | name = Paris | population_demonym = Parisian&nbsp;([[English language|en]])<br />parisien(ne)&nbsp;([[French language|fr]]) | commune status = [[Communes of France|Commune]] / [[Departments of France|Department]] | total type = | image = Panorama Paris December 2007.jpg | caption = The [[Eiffel Tower]] (foreground) and the skyscrapers of the<br />[[La Défense]] business district (background). | image flag = Flag of Paris with coat of arms.svg | image flag size = 85px | image coat of arms = Grandes Armes de Paris.svg | image coat of arms size = 120px | flag_link = Flag of Paris | shield_link = Coat of arms of Paris | city motto = ''[[Fluctuat nec mergitur]]''<br />{{nowrap|([[Latin]]: She is tossed by the waves but is not sunk)}} | coordinates = {{coord|48.856667|2.350833|format=dms}} | mayor = [[Bertrand Delanoë]] | party = [[Socialist Party (France)|PS]] | term = 2008–2014 | subdivisions entry = [[Administrative division|Subdivisions]] | subdivisions = [[Arrondissements of Paris|20 arrondissements]] | area km2 = 105.4 | area footnotes = <ref name="area">[https://www.insee.fr/fr/statistiques/1405599?geo=COM-75056 INSEE local statistics], including [[Bois de Boulogne]] and [[Bois de Vincennes]].</ref> | population date = January 1, 2009 estimate<ref name="pop">{{cite web | url=http://www.paris.fr/portail/accueil/Portal.lut?page_id=5427&document_type_id=5&document_id=8717&portlet_id=11661 | title=La population par arrondissement de 1990 à 2009 | date=2009-01-01 | publisher=Mairie de Paris | language=French | accessdate=2009-07-09}}</ref> | INSEE = 75056 | postal code = 75001-75020, 75116 | population = 2203817 | population ranking = [[List of communes in France with over 20,000 inhabitants (1999 census)|1st in France]] | urban area km2 = 2,723 | urban area date = 1999 | urban pop = 10,142,983 | urban pop date = 2006 | metro area km2 = 14518.3 | metro area date = 1999 | metro area pop = 11,769,433 | metro area pop date = 2006 | website = {{URL|http://www.paris.fr/}} }} <!-- Displayed as infobox code --> <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox French commune | name = Paris | population_demonym = Parisian&nbsp;([[English language|en]])<br />parisien(ne)&nbsp;([[French language|fr]]) | commune status = [[Communes of France|Commune]] / [[Departments of France|Department]] | total type = | image = Panorama Paris December 2007.jpg | caption = The [[Eiffel Tower]] (foreground) and the skyscrapers of the<br />[[La Défense]] business district (background). | image flag = Flag of Paris with coat of arms.svg | image flag size = 85px | image coat of arms = Grandes Armes de Paris.svg | image coat of arms size = 120px | flag_link = Flag of Paris | shield_link = Coat of arms of Paris | city motto = ''[[Fluctuat nec mergitur]]''<br />{{nowrap|([[Latin]]: She is tossed by the waves but is not sunk)}} | coordinates = {{coord|48.856667|2.350833|format=dms}} | mayor = [[Bertrand Delanoë]] | party = [[Socialist Party (France)|PS]] | term = 2008–2014 | subdivisions entry = [[Administrative division|Subdivisions]] | subdivisions = [[Arrondissements of Paris|20 arrondissements]] | area km2 = 105.4 | area footnotes = <ref name="area">[http://www.statistiques-locales.insee.fr/Fiches%5CRS%5CDEP%5C75%5CCOM%5CRS_COM75056.pdf INSEE local statistics], including [[Bois de Boulogne]] and [[Bois de Vincennes]].</ref> | population date = January 1, 2009 estimate<ref name="pop">{{cite web | url=http://www.paris.fr/portail/accueil/Portal.lut?page_id=5427&document_type_id=5&document_id=8717&portlet_id=11661 | title=La population par arrondissement de 1990 à 2009 | date=2009-01-01 | publisher=Mairie de Paris | language=French | accessdate=2009-07-09}}</ref> | INSEE = 75056 | postal code = 75001-75020, 75116 | population = 2203817 | population ranking = [[List of communes in France with over 20,000 inhabitants (1999 census)|1st in France]] | urban area km2 = 2,723 | urban area date = 1999 | urban pop = 10,142,983 | urban pop date = 2006 | metro area km2 = 14518.3 | metro area date = 1999 | metro area pop = 11,769,433 | metro area pop date = 2006 | website = {{URL|http://www.paris.fr/}} }} </syntaxhighlight> ;Footnotes {{reflist}} {{Clear}} ==TemplateData== {{collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <templatedata> { "params": { "name": { "required": false, "label": "Name", "type": "string", "description": "English name of location", "default": "Article Name" }, "native name": { "required": false, "label": "Native Name", "type": "string", "description": "Native name of the location" }, "commune status": { "required": false, "label": "Commune Status", "type": "string", "description": "Fill to show sub-banner: eg. Type of settlement (City, Commune, Municipality) " }, "total type": { "required": false, "label": "Total Type", "type": "string", "description": "Fill to show Area/Population totals next to 'total type' value ''below'' Area/Population in each section line (normally on same line)" }, "image flag": { "required": false, "label": "Image Flag", "type": "wiki-page-name", "description": "Image of the flag of commune" }, "image flag size": { "required": false, "label": "Image flag size", "type": "line", "description": "Size of image of the flag of commune" }, "city motto": { "required": false, "label": "City Motto", "type": "string", "description": "Motto of the city" }, "image": { "required": false, "label": "Image", "type": "wiki-file-name", "description": "Image of the place or any notable landmark" }, "caption": { "required": false, "label": "Caption", "type": "string", "description": "Caption for the image" }, "map": { "required": false, "label": "Map", "type": "wiki-page-name", "description": "For overseas locations, provide an image for the map" }, "timezone": { "required": false, "label": "Timezone", "type": "string", "description": "Timezone of the commune" }, "coordinates": { "required": true, "label": "Coordinates", "type": "string", "description": "Coordinates of the location using {{coord}}" }, "arrondissement": { "required": true, "label": "Arrondissement", "type": "string", "description": "The Arrondissement to which the location belongs" }, "intercommunality": { "required": true, "label": "Intercommunality", "type": "string", "description": "Intercommunality of the commune" }, "mayor": { "required": false, "label": "Mayor", "type": "string", "description": "Mayor of the commune" }, "term": { "required": false, "label": "Term", "type": "line", "description": "The governing period of the mayor. Do not add references here, you can add these in the \"mayor\" parameter." }, "elevation m": { "required": false, "label": "Elevation(meters)", "type": "number", "description": "Average elevation of commune above sea level in meters" }, "elevation min m": { "required": false, "label": "Minimum Elevation(meters)", "type": "number", "description": "Minimum elevation of the commune in meters" }, "elevation max m": { "required": false, "label": "Maximum Elevation(meters)", "type": "number", "description": "Maximum elevation of the commune in meters" }, "area km2": { "required": false, "label": "Area (square km)", "type": "number", "description": "Area of the commune in square kilometers" }, "population": { "required": true, "label": "Population", "type": "number", "description": "Population of the commune. For existing communes (i.e. not former communes) the template France metadata Wikidata should be used, which retrieves the most recent population data from Wikidata" }, "population date": { "required": false, "label": "Population Date", "type": "line", "description": "Date (year) on which population was counted" }, "INSEE": { "required": true, "label": "INSEE", "type": "number", "description": "INSEE code for the commune", "aliases": [ "insee" ] }, "postal code": { "required": false, "label": "Postal code", "type": "number", "description": "Postal Code of the commune" }, "website": { "required": false, "label": "Website", "type": "string", "description": "Official website of the commune" }, "canton": { "label": "Canton", "type": "string" }, "image size": {}, "flag link": { "aliases": [ "flag_link" ] }, "image coat of arms": { "description": "Image of coat of arms of commune." }, "image coat of arms size": { "description": "Size of image of coat of arms of commune " }, "shield_link": {}, "adjustable map": {}, "map size": {}, "map caption": {}, "province": { "description": "Used for places in New Caledonia", "type": "string" }, "subdivisions entry": {}, "subdivisions": {}, "party": {}, "area footnotes": {}, "urban pop": { "description": "Population of the (inner) urban area (''unité urbaine''). To be added to the central commune only" }, "urban pop date": {}, "urban area date": {}, "urban area km2": {}, "metro area pop": { "description": "Population of the wider functional urban area (''aire d'attraction d'une ville''). To be added to the central commune only" }, "metro area pop date": {}, "metro area date": {}, "metro area km2": {}, "population footnotes": {}, "population ranking": {}, "population demonym": { "aliases": [ "demonym", "population_demonym" ], "type": "string" }, "demonym": {}, "ethnic": {}, "ethnic date": {}, "time zone": { "aliases": [ "timezone" ], "description": "Name of the time zone", "deprecated": "Time zones are derived from the INSEE code" }, "utc offset": { "aliases": [ "utc_offset" ], "description": "Only for French Polynesia, for other places the time zone is derived from the INSEE code" }, "time zone DST": { "aliases": [ "time_zone_DST", "timezone_DST" ], "type": "string", "deprecated": "Time zones are derived from the INSEE code" }, "utc offset DST": { "aliases": [ "utc_offset_DST" ], "deprecated": "Time zones are derived from the INSEE code" }, "dialling code": {}, "elevation footnotes": {}, "footnotes": {}, "map dot label": {}, "department": { "label": "Department", "type": "string", "deprecated": "Unused, remove. Department is derived from INSEE" }, "commune": { "description": "Used for places that are part of a commune", "type": "string" }, "type": { "description": "Used for places that are part of a commune.", "type": "string", "default": "Part" }, "region": { "deprecated": "The region and the department to which the location belongs are retrieved using the (required!) INSEE code." }, "administrative subdivision": { "description": "Used for places in French Polynesia" } } } </templatedata> {{collapse bottom}} == Microformat == {{UF-hcard-place}} == Tracking category == * {{clc|Pages using infobox French commune with unknown parameters}} == See also == {{About French nav boxes}} <includeonly>{{sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:French subdivision infobox templates|Communes]] [[Category:Templates with coordinates fields]] [[Category:Templates that add a tracking category]] }}</includeonly> b8ebbe16e2918bd7a1711d18b59dec038466165a Template:Infobox cabinet members/doc 10 1526 2861 2023-05-21T06:45:56Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Categories where indicated at the bottom of this page, please --> {{Lua|Module:Infobox cabinet members}} {{notice|This template is a [[Help:Metatemplating|meta-template]], like {{tl|infobox}}, used for generating other templates. It is not intended to be directly transcluded in articles.}} {{Generic template demo |above |topimage |topcaption |image |caption |party_column=true |name_style=font-weight:bold; |office1 |name1a |party1a |term1a |name1b |party1b |term1b |name1c |party1c |term1c |name1d |party1d |term1d |name1e |party1e |term1e |office2 |name2a |party2a |term2a |name2b |party2b |term2b |name2c |party2c |term2c |name2d |party2d |term2d |name2e |party2e |term2e |office3 |name3a |party3a |term3a |name3b |party3b |term3b |name3c |party3c |term3c |name3d |party3d |term3d |name3e |party3e |term3e |office4 |name4a |party4a |term4a |name4b |party4b |term4b |name4c |party4c |term4c |name4d |party4d |term4d |name4e |party4e |term4e |office5 |name5a |party5a |term5a |name5b |party5b |term5b |name5c |party5c |term5c |name5d |party5d |term5d |name5e |party5e |term5e |office6 |name6a |party6a |term6a |name6b |party6b |term6b |name6c |party6c |term6c |name6d |party6d |term6d |name6e |party6e |term6e |office7 |name7a |party7a |term7a |name7b |party7b |term7b |name7c |party7c |term7c |name7d |party7d |term7d |name7e |party7e |term7e |office8 |name8a |party8a |term8a |name8b |party8b |term8b |name8c |party8c |term8c |name8d |party8d |term8d |name8e |party8e |term8e |office9 |name9a |party9a |term9a |name9b |party9b |term9b |name9c |party9c |term9c |name9d |party9d |term9d |name9e |party9e |term9e |office10 |name10a |party10a |term10a |name10b |party10b |term10b |name10c |party10c |term10c |name10d |party10d |term10d |name10e |party10e |term10e |office11 |name11a |party11a |term11a |name11b |party11b |term11b |name11c |party11c |term11c |name11d |party11d |term11d |name11e |party11e |term11e |office12 |name12a |party12a |term12a |name12b |party12b |term12b |name12c |party12c |term12c |name12d |party12d |term12d |name12e |party12e |term12e |office13 |name13a |party13a |term13a |name13b |party13b |term13b |name13c |party13c |term13c |name13d |party13d |term13d |name13e |party13e |term13e |office14 |name14a |party14a |term14a |name14b |party14b |term14b |name14c |party14c |term14c |name14d |party14d |term14d |name14e |party14e |term14e |office15 |name15a |party15a |term15a |name15b |party15b |term15b |name15c |party15c |term15c |name15d |party15d |term15d |name15e |party15e |term15e |office16 |name16a |party16a |term16a |name16b |party16b |term16b |name16c |party16c |term16c |name16d |party16d |term16d |name16e |party16e |term16e |office17 |name17a |party17a |term17a |name17b |party17b |term17b |name17c |party17c |term17c |name17d |party17d |term17d |name17e |party17e |term17e |office18 |name18a |party18a |term18a |name18b |party18b |term18b |name18c |party18c |term18c |name18d |party18d |term18d |name18e |party18e |term18e |office19 |name19a |party19a |term19a |name19b |party19b |term19b |name19c |party19c |term19c |name19d |party19d |term19d |name19e |party19e |term19e |office20 |name20a |party20a |term20a |name20b |party20b |term20b |name20c |party20c |term20c |name20d |party20d |term20d |name20e |party20e |term20e |office21 |name21a |party21a |term21a |name21b |party21b |term21b |name21c |party21c |term21c |name21d |party21d |term21d |name21e |party21e |term21e |office22 |name22a |party22a |term22a |name22b |party22b |term22b |name22c |party22c |term22c |name22d |party22d |term22d |name22e |party22e |term22e |office23 |name23a |party23a |term23a |name23b |party23b |term23b |name23c |party23c |term23c |name23d |party23d |term23d |name23e |party23e |term23e |office24 |name24a |party24a |term24a |name24b |party24b |term24b |name24c |party24c |term24c |name24d |party24d |term24d |name24e |party24e |term24e |office25=...... |name25a=...... |name25b=...... |name25c=...... |name25d=...... |name25e=...... |office33 |name33a |party33a |term33a |name33b |party33b |term33b |name33c |party33c |term33c |name33d |party33d |term33d |name33e |party33e |term33e |below }} === Basic === <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox cabinet members | above = | office1 = | name1a = | term1a = | office2 = | name2a = | term2a = | office3 = | name3a = | term3a = ... | office33 = | name33a = | term33a = | below = }}</syntaxhighlight> === Basic with party === <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox cabinet members | above = | party_column = true | office1 = | name1a = | party1a = | term1a = | office2 = | name2a = | party2a = | term2a = | office3 = | name3a = | party3a = | term3a = ... | office33 = | name33a = | party33a = | term33a = | below = }}</syntaxhighlight> === Multiple names per office === <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox cabinet members | above = | office1 = | name1a = | term1a = | name1b = | term1b = | name1c = | term1c = | name1d = | term1d = | name1e = | term1e = | office2 = | name2a = | term2a = | name2b = | term2b = | name2c = | term2c = | name2d = | term2d = | name2e = | term2e = ... | office33 = | name33a = | term33a = | name33b = | term33b = | name33c = | term33c = | name33d = | term33d = | name33e = | term33e = | below = }}</syntaxhighlight> === Multiple names per office with party === <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox cabinet members | above = | party_column = true | office1 = | name1a = | party1a = | term1a = | name1b = | party1b = | term1b = | name1c = | party1c = | term1c = | name1d = | party1d = | term1d = | name1e = | party1e = | term1e = | office2 = | name2a = | party2a = | term2a = | name2b = | party2b = | term2b = | name2c = | party2c = | term2c = | name2d = | party2d = | term2d = | name2e = | party2e = | term2e = ... | office33 = | name33a = | party33a = | term33a = | name33b = | party33b = | term33b = | name33c = | party33c = | term33c = | name33d = | party33d = | term33d = | name33e = | party33e = | term33e = | below = }}</syntaxhighlight> === Float behavior === The default is for the infobox to float to the right of the page. To float the infobox to the left, use <syntaxhighlight lang="wikitext" style="overflow:auto"> | float = left </syntaxhighlight> To float to the center, use <syntaxhighlight lang="wikitext" style="overflow:auto"> | float = center </syntaxhighlight> To disable floating, use <syntaxhighlight lang="wikitext" style="overflow:auto"> | float = none </syntaxhighlight> === Images === The template supports the placement of images in two different locations. For an image above the above line, use <syntaxhighlight lang="wikitext" style="overflow:auto"> | topimage = | topcaption = </syntaxhighlight> For an image below the above line, use <syntaxhighlight lang="wikitext" style="overflow:auto"> | image = | caption = </syntaxhighlight> === Color and styling === To use a normal font for the officeholder names, add <syntaxhighlight lang="wikitext" style="overflow:auto"> | name_style = font-weight:normal </syntaxhighlight> To change the border color for the first line, use <syntaxhighlight lang="wikitext" style="overflow:auto"> | border_color1 = #000000 </syntaxhighlight> To remove the border for the second line, use <syntaxhighlight lang="wikitext" style="overflow:auto"> | border_color2 = none </syntaxhighlight> To remove the border color for the 33rd line, use <syntaxhighlight lang="wikitext" style="overflow:auto"> | border_color33 = transparent </syntaxhighlight> To change the styling of the above line, use <syntaxhighlight lang="wikitext" style="overflow:auto"> | abovestyle = </syntaxhighlight> === Heading labels === To override the default heading labels, use <syntaxhighlight lang="wikitext" style="overflow:auto"> | office_label = | name_label = | party_label = | term_label = </syntaxhighlight> == See also == * {{tl|Infobox government cabinet}} * {{tl|Cabinet table start}} * {{tl|Cabinet table minister}} * {{tl|Cabinet table ministry}} <includeonly>{{Sandbox other| | <!-- Categories below this line, please: --> [[Category:Politics and government infobox templates|Cabinet]] [[Category:Wikipedia metatemplates]] }}</includeonly> 1730f7fe4ed2b7413f798a24e681c127a39fb10b Template:Infobox government cabinet/doc 10 1529 2864 2023-05-21T06:45:58Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} == Usage == {{Parameter names example | kabineto_pavadinimas | cabinet_number | cabinet_type | jurisdiction | flag | flag_border | flag_width | incumbent | image | image_size | alt | caption | date_formed | date_dissolved | government_head_title | government_head | government_head_history | deputy_government_head_title | deputy_government_head | other_government_minister_title | other_government_minister | state_head | governor | governor_general | represented_by | members_number= {{{members_number}}} or {{{current_number}}} | former_members_number | total_number | political_party= {{{political_party}}} or {{{political_parties}}} | legislature_status | opposition_cabinet | opposition_party= {{{opposition_party}}} or {{{opposition_parties}}} | opposition_leader= {{{opposition_leader}}} or {{{opposition_leaders}}} | election | last_election | legislature_term | budget | advice_and_consent1 | advice_and_consent2 | advice_and_consent3 | advice_and_consent4 | advice_and_consent5 | incoming_formation | outgoing_formation | predecessor= {{{predecessor}}} or {{{previous}}} | successor }} <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox government cabinet | cabinet_name = | cabinet_number = | cabinet_type = <!-- an alternative name for "cabinet"; defaults to "cabinet" --> | jurisdiction = | flag = | flag_border = true | flag_width = | incumbent = | image = | image_size = | alt = | caption = | date_formed = <!-- {{Start date|YYYY|MM|DD|df=y}} --> | date_dissolved = <!-- {{End date|YYYY|MM|DD|df=y}} --> | state_head_title = <!-- e.g., Monarch, President; defaults to "Head of state" --> | state_head = | government_head_title = <!-- e.g., Prime Minister --> | government_head = | government_head_history = | deputy_government_head_title = | deputy_government_head = | other_government_minister_title = | other_government_minister = | governor_title = | governor = | governor_general_title = | governor_general = | represented_by_title = | represented_by = | members_number = <!-- or | current_number = --> | former_members_number = | total_number = | political_party = <!-- or | political_parties = --> | legislature_status = <!-- e.g., coalition government --> | opposition_cabinet = | opposition_party = <!-- or | opposition_parties = --> | opposition_leader = <!-- or | opposition_leaders = --> | election = | last_election = | legislature_term = | budget = | advice_and_consent1 = | advice_and_consent2 = <!-- up to | advice_and_consent5 = --> | incoming_formation = <!-- events leading to formation of govt.: e.g., [[Norway debate]] --> | outgoing_formation = <!-- events or debate leading to dissolution --> | predecessor = <!-- or | previous = --> | successor = }} </syntaxhighlight> Separate multiple values using {{Tl|plainlist}}. === Multiple images === For an array of up to four images, use: <syntaxhighlight lang="wikitext" style="overflow: auto;"> | image = | image_size = x85px | alt = | image2 = | image_size2 = x85px | alt2 = | image3 = | image_size3 = x85px | alt3 = | image4 = | image_size4 = x85px | alt4 = | caption = </syntaxhighlight> == Tracking categories == * {{clc|Pages using infobox government cabinet with number and without jurisdiction}} * {{clc|Pages using infobox government cabinet with government_head_history}} <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Politics and government infobox templates|Government Cabinet]] [[Category:National cabinets|τ]] [[Category:Templates that add a tracking category]] }}</includeonly> 47e0296cd647916d07437e565c8bece63f7e7699 Template:Infobox cardinal styles/doc 10 1276 2610 2023-05-21T06:46:00Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Place categories where indicated at bottom of page and interwikis at Wikidata --> {{Wraps infobox|Infobox manner of address}} == Usage == {{generic template demo| name | cardinal name | image | image_size | dipstyle | offstyle | See | posthumous }} The infobox may be added by pasting the template as shown below into an article and then filling in the desired fields. <syntaxhighlight lang="wikitext" style="overflow:auto">{{Infobox cardinal styles | name = | dipstyle = | offstyle = | relstyle = | See = | image = }}</syntaxhighlight> To override the default image, add <syntaxhighlight lang="wikitext"> | image = CardinalCoA_PioM.svg </syntaxhighlight> where "CardinalCoA_PioM.svg" is the name of the image. ==Microformat== {{UF-hcard-person}} <includeonly>{{sandbox other|| <!-- Categories below this line and interwikis at Wikidata --> {{DEFAULTSORT:Cardinal styles}} [[Category:Catholic infobox templates]] [[Category:Styles infobox templates]] [[Category:Embeddable templates|{{PAGENAME}}]] }}</includeonly> c8651da3f986626060cf71fd5cd9f41761284c6e Template:Infobox pope styles/doc 10 1280 2614 2023-05-21T06:55:22Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Wraps infobox|Infobox manner of address}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} == Usage == <syntaxhighlight lang="wikitext"> {{Infobox Pope styles | name = | image = | image_size = | dipstyle = | offstyle = | relstyle = | deathstyle = }} </syntaxhighlight> == Tracking category == * {{clc|Pages using infobox manner of address with unknown parameters}} <includeonly>{{basepage subpage| <!-- Categories below this line, please; interwikis at Wikidata --> {{DEFAULTSORT:Pope styles}} [[Category:Styles infobox templates]] [[Category:Catholic infobox templates]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> 2322bc87f258783d0c4ddd716987eee41a124732 Template:Infobox manner of address/doc 10 1268 2602 2023-05-21T06:56:14Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{High-use}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} __TOC__ {{clear}} == Usage == {{Parameter names example <!--| child | embed | background | color | colour -->| type | name = {{{name}}} or {{{royal name}}}<!-- | consort -->| image | image_alt | image_size | size | image2 | image2_alt | image2_size | size2 | caption | reference = {{{reference}}} or {{{dipstyle}}} | spoken = {{{spoken}}} or {{{offstyle}}} | religious = {{{religious}}} or {{{relstyle}}} | posthumous = {{{posthumous}}} or {{{deathstyle}}} | alternative = {{{alternative}}} or {{{altstyle}}} | informal | see }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox manner of address | type = <!-- default is "Styles of" --> | name = | consort = | image = | image_size = | image_alt = | image2 = | image2_size = | image2_alt = | caption = | reference = | spoken = | religious = | posthumous = | alternative = | informal = | see = }} </syntaxhighlight> {{clear}} ===Parameters=== ; child {{nobold|or}} embed : Allows this template to be embedded in another template; see [[Wikipedia:WikiProject Infoboxes/embed]] ; background : An alternative color for overriding the default grey background color ; color {{nobold|or}} colour : An alternative text color for overriding the default black text color ; type : Can be set to "Monarchial" for "Monarchial styles" or "Papal" for "Papal styles", default is "Styles of". ; name {{nobold|or}} royal name : Name which appears at top of infobox ; consort : if defined, adds "as&nbsp;consort" after name ; image : (optional) [[Coat of arms]] image ; image_size : (optional) size of the image ; image_alt : (optional, but recommended) alt text for accessibility ; image2 : (optional) second image ; image2_size : (optional) size of second image ; image2_alt : (optional, but recommended) alt text for accessibility ; caption : (optional) caption text displayed below image(s) ; reference {{nobold|or}} dipstyle : [[Style (manner of address)|Reference style]] (originally labeled: Diplomatic style) ; spoken {{nobold|or}} offstyle : Spoken style (originally labeled: Official spoken style) ; religious {{nobold|or}} relstyle : Religious style ; posthumous {{nobold|or}} deathstyle : Posthumous style ; alternative {{nobold|or}} altstyle : Alternative style (originally labeled: Alternative spoken style) ; informal : Informal style ; see : [[Episcopal see|See]] == Examples == ===Belgium=== {{Infobox manner of address | name = Queen Fabiola of Belgium | image = State Coat of Arms of Belgium.svg | image_size = 50px | image_alt = State Coat of Arms of Belgium | reference = [[Majesty|Her Majesty]] | spoken = Your Majesty }} [[Queen Fabiola of Belgium]] <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox manner of address | name = Queen Fabiola of Belgium | image = State Coat of Arms of Belgium.svg | image_size = 50px | image_alt = State Coat of Arms of Belgium | reference = [[Majesty|Her Majesty]] | spoken = Your Majesty }} </syntaxhighlight> {{clear}} ===Brazil=== {{Infobox manner of address | name = Pedro II, Emperor of Brazil | image = CoA Empire of Brazil (1870-1889).svg | image_size = 60px | image_alt = CoA Empire of Brazil (1870-1889) | reference = [[Imperial Majesty (style)|His Imperial Majesty]] | spoken = Your Imperial Majesty | alternative = Sire }} [[Pedro II of Brazil]] <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox manner of address | name = Pedro II, Emperor of Brazil | image = CoA Empire of Brazil (1870-1889).svg | image_size = 60px | image_alt = CoA Empire of Brazil (1870-1889) | reference = [[Imperial Majesty (style)|His Imperial Majesty]] | spoken = Your Imperial Majesty | alternative = Sire }} </syntaxhighlight> {{clear}} ===Greece=== {{Infobox manner of address | name = King Alexander of the Hellenes | image = Royal Arms of Greece (1863-1936).svg | image_size = 40px | image_alt = Royal Arms of Greece (1863-1936) | reference = [[Majesty|His Majesty]] | spoken = Your Majesty }} [[Alexander of Greece (king)]] <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox manner of address | name = King Alexander of the Hellenes | image = Royal Arms of Greece (1863-1936).svg | image_size = 40px | image_alt = Royal Arms of Greece (1863-1936) | reference = [[Majesty|His Majesty]] | spoken = Your Majesty }} </syntaxhighlight> {{clear}} == Tracking category == * {{clc|Pages using infobox manner of address with unknown parameters}} == See also == * [{{fullurl:index.php|title=Special%3AWhatLinksHere&target=Template%3A{{urlencode:{{BASEPAGENAME}}}}&namespace=0}} List of articles] this template '''Additional information on styles''' * [[Royal Highness|HRH]] * [[Royal and noble styles]] * [[Style (form of address)]] '''Templates which use this one''' * [[Template:Infobox royal styles]] ** [[Template:Infobox Austrian royalty styles]] ** [[Template:Infobox Belgian royalty styles]] ** [[Template:Infobox British royalty styles]] ** [[Template:Infobox Dutch royalty styles]] ** [[Template:Infobox French royalty styles]] ** [[Template:Infobox Portuguese royalty styles]] ** [[Template:Infobox Spanish royalty styles]] * Religious ** [[Template:Infobox archbishop styles]] ** [[Template:Infobox bishop styles]] ** [[Template:Infobox cardinal styles]] ** [[Template:Infobox pope styles]] * [[Template:Infobox consort styles]] * [[Template:Infobox president styles]] * [[Template:Infobox viceroy styles]] <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> {{DEFAULTSORT:Manner Of Address}} [[Category:Styles infobox templates| ]] [[Category:Embeddable templates|{{PAGENAME}}]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> 4f5f116de85d9b8a76b78dc7da7522cfa11aa5d6 Template:Infobox British royalty styles/doc 10 1275 2609 2023-05-21T06:56:15Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Wraps infobox|Infobox manner of address}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} == Usage == <syntaxhighlight lang="wikitext"> {{Infobox British royalty styles|type | name = | image = | image_size = | dipstyle = | offstyle = | altstyle = }} </syntaxhighlight> where <code>''type''</code> = <code>england</code>, <code>greatbritain</code>, <code>republic</code>, <code>scotland</code>, <code>own</code> or <code>none</code> == Tracking category == * {{clc|Pages using infobox manner of address with unknown parameters}} <includeonly>{{basepage subpage| <!-- Categories below this line, please; interwikis at Wikidata --> {{DEFAULTSORT:British Royalty Styles}} [[Category:Royalty and nobility infobox templates]] [[Category:Styles infobox templates]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> 2799b8bdbb7f0d5676ae4c2ca1012ec97a44f806 Template:Infobox UK country/doc 10 1424 2759 2023-05-21T06:57:16Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{#ifeq:{{{nested|no}}}|no|<!-- then-show-doc-header-at-top-- -->{{documentation subpage}} }} {{Ombox| type = style| image = [[File:Ambox warning yellow.svg|40x40px|alt=|link=]]| text = '''This template is a customized wrapper for {{tl|Infobox country}}'''. Any field from {{tld|Infobox country}} can work so long as it is added to this template first. }} This infobox template is used to generate an infobox for the righthand side of a [[Countries of the United Kingdom|UK country]] article. {{Infobox UK country | conventional_long_name = ''PAGENAME'' | common_name = <nowiki/>''PAGENAME''<wbr/> | image_map = | map_caption = | legal_jurisdiction = ''legal_jurisdiction'' | government_type = ''government_type'' | monarch = ''monarch'' | first_minister = ''first_minister'' | deputy_first_minister = ''deputy_first_minister'' | secretary_of_state = ''secretary_of_state'' | number_of_mps = <wbr/>''number_of_mps'' }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox UK country | conventional_long_name = <!-- defaults to page name --> | common_name = <!-- defaults to page name --> | native_name = | image_flag = | flag_caption = | image_coat = | symbol_width = | symbol_type = | national_motto = | englishmotto = | national_anthem = | image_map = <!-- defaults to "common_name in the UK and Europe.svg" --> | map_caption = <!-- defaults to "Location of common_name (dark green) – in Europe (green & dark grey) – in the United Kingdom (green)" --> | image_map2 = <!-- Another map --> | status = | capital = | coordinates = | largest_city = | languages_type = | languages = | languages2_type = | languages2 = | languages2_sub = | ethnic_groups = | ethnic_groups_year = | religion = | religion_year = | demonym = | type = | membership_type = <!-- defaults to "Sovereign state" --> | membership = <!-- defaults to "United Kingdom" --> | legal_jurisdiction = | government_type = | monarch = | first_minister = | deputy_first_minister = | secretary_of_state = | number_of_mps = | legislature = | sovereignty_type = | sovereignty_note = | established_event1 = | established_date1 = | established_event2 = | established_date2 = | established_event3 = | established_date3 = | established_event4 = | established_date4 = | established_event5 = | established_date5 = | area_rank = | area_magnitude = | area_km2 = | area_sq_mi = | percent_water = | population_estimate = | population_estimate_rank = | population_estimate_year = | population_census = | population_census_year = | population_density_km2 = | population_density_sq_mi = | population_density_rank = | pop_den_footnote = | GVA = | GVA_rank = | GVA_year = | GVA_per_capita = | GVA_per_capita_rank = | GDP_PPP = | GDP_PPP_rank = | GDP_PPP_year = | GDP_PPP_per_capita = | GDP_PPP_per_capita_rank = | GDP_nominal = | GDP_nominal_rank = | GDP_nominal_year = | GDP_nominal_per_capita = | GDP_nominal_per_capita_rank = | Gini_year = | Gini_change = | Gini = | Gini_ref = | Gini_rank = | HDI_year = | HDI_change = | HDI = | HDI_ref = | HDI_rank = | currency = <!-- defaults to "Pound sterling" --> | currency_code = <!-- defaults to "GBP" --> | time_zone = <!-- defaults to "GMT" --> | utc_offset = | time_zone_DST = <!-- defaults to "BST" --> | utc_offset_DST = <!-- defaults to "+1" --> | date_format = <!-- defaults to "dd/mm/yyyy (AD)" --> | drives_on = <!-- defaults to "left" --> | calling_code = <!-- defaults to "+44" --> | patron_saint = | cctld = | official_website = | footnote_a = | footnote_b = | footnote_c = | footnote_d = | footnote_e = | footnote_f = }} </syntaxhighlight> <includeonly>{{Sandbox other|| <!--Categories below this line, please; interwikis at Wikidata--> [[Category:United Kingdom subdivision infobox templates]] }}</includeonly> fb4e65bf5e2ac4122b444ede138230d1c8a6d0f4 Template:Infobox Dutch royalty styles/doc 10 1278 2612 2023-05-21T06:57:17Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} {{Wraps infobox|Infobox manner of address}} == Usage == <syntaxhighlight lang="wikitext">{{Infobox Dutch royalty styles|type | name = | image = | image_size = | dipstyle = | offstyle = | altstyle = }}</syntaxhighlight> where <code>''type''</code> = <code>1581</code>, <code>1665</code>, <code>1806</code>, <code>1808</code>, <code>1815</code>, <code>own</code> or <code>none</code> == Tracking category == * {{clc|Pages using infobox manner of address with unknown parameters}} <includeonly>{{basepage subpage| <!-- Categories below this line, please; interwikis at Wikidata --> {{DEFAULTSORT:Dutch Royalty Styles}} [[Category:Royalty and nobility infobox templates]] [[Category:Styles infobox templates]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> c3dcb299d9bb6c2cd5da881ea571b85c911778eb Template:Infobox Spanish royalty styles/doc 10 1284 2618 2023-05-21T06:57:17Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Wraps infobox|Infobox manner of address}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} == Usage == <syntaxhighlight lang="wikitext"> {{Infobox Spanish royalty styles|type | name = | image = | image_size = | dipstyle = | offstyle = | altstyle = }} </syntaxhighlight> where <code>''type''</code> = <code>aragon</code>, <code>asturias</code>, <code>castile</code>, <code>granada</code>, <code>leon</code>, <code>navarre</code>, <code>1475-1516</code>, <code>1516-1556</code>, <code>1556-1700</code>, <code>1700-1868</code>, <code>1808-1812</code>, <code>1870-1873</code>, <code>1873-1931</code>, <code>own</code> or <code>none</code> == Tracking category == * {{clc|Pages using infobox manner of address with unknown parameters}} <includeonly>{{basepage subpage| <!-- Categories below this line, please; interwikis at Wikidata --> {{DEFAULTSORT:Spanish Royalty Styles}} [[Category:Royalty and nobility infobox templates]] [[Category:Styles infobox templates]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> 24c86fe6b4fe448111a3552dc697144a0f5b0551 Template:Infobox French royalty styles/doc 10 1279 2613 2023-05-21T06:57:18Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} {{Wraps infobox|Infobox manner of address}} == Usage == <syntaxhighlight lang="wikitext">{{Infobox French royalty styles|type | name = | image = | image_size = | dipstyle = | offstyle = | altstyle = }}</syntaxhighlight> where <code>type</code> = <code>kingdom</code>, <code>old</code>, <code>own</code>, or <code>none</code> == Tracking category == * {{clc|Pages using infobox manner of address with unknown parameters}} <includeonly>{{basepage subpage| <!-- Categories below this line, please; interwikis at Wikidata --> {{DEFAULTSORT:French Royalty Styles}} [[Category:Royalty and nobility infobox templates]] [[Category:Styles infobox templates]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> ff8e82f49b02deda6d37150cf5211766432efe97 Template:Infobox Portuguese royalty styles/doc 10 1281 2615 2023-05-21T06:58:15Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Wraps infobox|Infobox manner of address}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} == Usage == <syntaxhighlight lang="wikitext"> {{Infobox Portuguese royalty styles|type | name = | image = | image_size = | dipstyle = | offstyle = | altstyle = }} </syntaxhighlight> where <code>''type''</code> = <code>Aviz</code>, <code>UK</code>, <code>Constitution</code>, <code>own</code> or <code>none</code> == Tracking category == * {{clc|Pages using infobox manner of address with unknown parameters}} <includeonly>{{basepage subpage| <!-- Categories below this line, please; interwikis at Wikidata --> {{DEFAULTSORT:Portuguese Royalty Styles}} [[Category:Portugal royalty and nobility navigational boxes]] [[Category:Royalty and nobility infobox templates]] [[Category:Styles infobox templates]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> b2bfb64c1824818758f933053b9556925cfb05a1 Template:Infobox Archbishop styles/doc 10 1271 2605 2023-05-21T07:56:39Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --> {{Wraps infobox|Infobox manner of address}} == Usage == The infobox may be added by pasting the template as shown below into an article and then filling in the desired fields. <div style="width:300px; background:#dddddd; border:1px solid black; padding:0.5em 1em 0.5em 1em;"> <syntaxhighlight lang="wikitext">{{Infobox archbishop styles | embed = <!-- embed in another infobox --> | archbishop name = | dipstyle = | offstyle = | relstyle = | deathstyle = <!--if applicable--> | image = }}</syntaxhighlight> </div> ==Microformat== {{UF-hcard-person}} <includeonly>{{Sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> {{DEFAULTSORT:Archbishop styles}} [[Category:Christian infobox templates]] [[Category:Styles infobox templates]] }}</includeonly> 54ddff337899e26d5bf4e7afe4c5cdbbd6ea8bcc Template:Infobox country languages/doc 10 1350 2685 2023-05-21T07:56:40Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} This template is an infobox intended to be used on articles named "Languages of X country" ==Usage== All parameters are optional, except <kbd>country</kbd>. {{Parameter names example| country | image | image size | caption | official | semi-official | national | unofficial | main | indigenous | regional | vernacular | minority | immigrant | foreign | sign | keyboard | keyboard image | source }} <syntaxhighlight lang="wikitext" style=overflow:auto; white-space:pre;> {{Infobox country languages |country = |image = |image size = |caption = |official = |semi-official = |national = |unofficial = |main = |indigenous = |regional = |vernacular = |minority = |immigrant = |foreign = |sign = |keyboard = |keyboard image = |source = }} </syntaxhighlight>{{-}} ==Example== {{Infobox country languages |country = France |official = French |regional = Alsatian, Basque, Breton, Catalan, Corsican, Flemish, Franco-Provençal, Occitan, Oïl languages |minority = Maghrebi Arabic, Portuguese, Italian, Spanish |foreign = {{ubl|English{{right|36%}}|Spanish{{right|13%}}|German{{right|8%}}}} |sign = French Sign Language }} <syntaxhighlight lang="wikitext" style=overflow:auto; white-space:pre;> {{Infobox country languages |country = France |official = French |regional = Alsatian, Basque, Breton, Catalan, Corsican, Flemish, Franco-Provençal, Occitan, Oïl languages |minority = Maghrebi Arabic, Portuguese, Italian, Spanish |foreign = {{ubl|English{{right|36%}}|Spanish{{right|13%}}|German{{right|8%}}}} |sign = French Sign Language }} </syntaxhighlight>{{-}} == Tracking category == * {{clc|Pages using Infobox country languages with unknown parameters}} <includeonly>{{Sandbox other|| <!--Categories below this line, please; interwikis at Wikidata--> [[Category:Country infobox templates|Languages]] [[Category:Language infobox templates|Country languages]] [[Category:Templates that add a tracking category]] }}</includeonly> be5adc473e8cd2e683d9309e81d727b878c1ad95 Template:Infobox bishop styles/doc 10 1274 2608 2023-05-21T08:02:12Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Wraps infobox|Infobox manner of address}} == Usage == The infobox may be added by pasting the template as shown below into an article and then filling in the desired fields. <div style="width:300px; background:#dddddd; border:1px solid black; padding:0.5em 1em 0.5em 1em;"> <syntaxhighlight lang="wikitext">{{Infobox bishop styles | embed = <!-- embed in another infobox --> | bishop name = | dipstyle = | offstyle = | relstyle = | deathstyle = <!--if applicable--> | image = }}</syntaxhighlight> </div> ==Microformat== {{UF-hcard-person}} <includeonly>{{sandbox other|| <!-- Categories below this line and interwikis at Wikidata --> {{DEFAULTSORT:Bishop styles}} [[Category:Christian infobox templates]] [[Category:Styles infobox templates]] }}</includeonly> 56c8038b9efb231043401d3c15e89a65372539ca Template:Infobox name module/doc 10 1347 2682 2023-05-21T19:07:48Z w>Gonnym 0 wikitext text/x-wiki {{Documentation subpage}} <!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE --> {{high-use}} {{Tl|Infobox name module}} is used to add a film's original native title (along with the romanized equivalent if necessary) to the infobox on film articles in cases where the [[WP:COMMONNAME]] title of the film is different. It is NOT for adding general purpose translations to the infobox, even in cases where the film was a co-production between several different countries. Any title besides the original native copyrighted title should be removed. In cases where there is a dispute over which title is the native title, discuss the matter at the article talk page and arrive at a consensus before adding the title to the infobox. == Usage == The template takes the various film titles and is assigned to the {{para|native_name}} parameter at {{tl|Infobox film}}. The native language and original title of a film can be assigned to the <code>language</code> and <code>title</code> parameters. This template is not compatible with use in the {{para|native_name}} parameter in infoboxes that wrap that parameter in {{tag|span}} or {{tag|div}} tags; its use in such situations causes misnested span or div tags. In those infoboxes, put this template in {{para|module}} or {{para|embedded}}, if present. This template used to support parameters for languages with multiple writing systems. They have been removed following a [[Wikipedia:Templates for discussion/Log/2017 April 7#Template:Infobox name module|successful merger proposal]] and are replaced with other templates which have more options, which are listed in the [[#Former parameters]] section. The parameters supported by this template are {{para|1}}, {{para|2}}, {{para|language}}, {{para|nolink}}, {{para|title}}, {{para|original}} and {{para|translation}}. <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox name module | language = | title = | nolink = | translation = }} </syntaxhighlight> == Parameters == All parameters are optional. The first two parameters do not need to be named. For example, <code><nowiki>{{Infobox name module|Japanese|千と千尋の神隠し}}</nowiki></code> and <code><nowiki>{{Infobox name module|ja|千と千尋の神隠し}}</nowiki></code> will render the same as <code><nowiki>{{Infobox name module|language=Japanese|title=千と千尋の神隠し}}</nowiki></code>. An example of this type of usage can be viewed at [https://en.wikipedia.org/w/index.php?title=Godless_(film)&diff=745870294&oldid=745865104 Godless (film)] where the Bulgarian title is rendered in the infobox. {| class="wikitable" style="width:100%;" ! style="width:5em;" | Parameter ! Explanation |- | language || The name of the language either in full (e.g. English) or using an {{tl|ISO 639 name}} (e.g. "en"). If the language parameter is not set then the template will automatically set the name of the field to "Original title". |- | title || The film's title as represented in the language |- | original || The same parameter as "title". They can be used interchangeably. "Title" was introduced as a more intuitive parameter name when the template was updated, but "original" is retained to ensure older versions of the template continue to work correctly. |- | nolink || Set to "1" to deactivate the automatic linking of the language |- | translation || Translation of native name |- |} == Examples == {{Infobox film | name = The Year of the Discovery | native_name = {{Infobox name module | language = Spanish | title = El año del descubrimiento }} | director = Luis López Carrasco | producer = Pedro Palacios<br />Daniel M. Caneiro<br />Ricard Sales<br />Marta Lacima<br />Luis Ferrón<br />Luis López Carrasco<br />Javier Fernández | writer = Raúl Liarte<br />Luis López Carrasco | starring = | music = | cinematography = Sara Gallego Grau | editing = Sergio Jiménez Barranquero | studio = | distributor = | released = {{Film date|df=y|2020|01|25|[[International Film Festival Rotterdam|IFFR]]|2020|11|13|Spain}} | runtime = 200 minutes | country = Spain<br />Switzerland | language = Spanish | budget = | gross = }} Add this code: <syntaxhighlight lang="wikitext" style="overflow: auto;"> | native_name = {{Infobox name module | language = Spanish | title = El año del descubrimiento }} </syntaxhighlight> or <syntaxhighlight lang="wikitext" style="overflow: auto;"> | native_name = {{Infobox name module|es|El año del descubrimiento}} </syntaxhighlight> To the infobox: <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox film | name = The Year of the Discovery | native_name = {{Infobox name module | language = Spanish | title = El año del descubrimiento }} | director = Luis López Carrasco | producer = Pedro Palacios<br />Daniel M. Caneiro<br />Ricard Sales<br />Marta Lacima<br />Luis Ferrón<br />Luis López Carrasco<br />Javier Fernández | writer = Raúl Liarte<br />Luis López Carrasco | starring = | music = | cinematography = Sara Gallego Grau | editing = Sergio Jiménez Barranquero | studio = | distributor = | released = {{Film date|df=y|2020|01|25|[[International Film Festival Rotterdam|IFFR]]|2020|11|13|Spain}} | runtime = 200 minutes | country = Spain<br />Switzerland | language = Spanish | budget = | gross = }} </syntaxhighlight> == Former parameters == This template formely used to support parameters for languages with multiple writing systems. The usage of these parameters is deprecated and is slated for removal soon. They are replaced from other templates which give more options for customization in addition to what this template used to support. ===Chinese=== * Replaced by {{tl|Infobox Chinese}} or {{tl|Infobox Chinese/Chinese}} {| class="wikitable" style="width:100%;" ! style="width:5em;" | Parameter ! Explanation |- | traditional || The film's name in [[Traditional Chinese characters]] as used in [[Taiwan]], [[Hong Kong]], and [[Macau]] |- | simplified || The film's name in [[Simplified Chinese characters]] as used in [[China]], [[Malaysia]], and [[Singapore]] |- | chinese || The film's name in [[Chinese characters]], use only when Simplified Chinese and Traditional Chinese are identical |- | pinyin || The film's [[Standard Chinese|Mandarin Chinese]] name in the [[Pinyin]] romanization system |- | jyutping || The film's [[Cantonese]] name in the [[Jyutping]] romanization system |- | poj || The film's [[Taiwanese Hokkien]] name in the [[Pe̍h-ōe-jī]] romanization system |- | lbl8 || Chinese dialect spoken in film if it's not Mandarin, Cantonese or Hokkien, e.g. [[Shanghainese]], [[Suzhou dialect]], [[Hakka]], [[Hokkien]], [[Taishanese]] |- | data8 || The film's romanized name in the dialect of lbl8 |- | translation || The film's unofficially translated title (if very different from the official English title) |} ===Japanese=== * Replaced by {{tl|Infobox Japanese}} {| class="wikitable" style="width:100%;" ! style="width:5em;" | Parameter ! Explanation |- | kanji || Film's name as it appears in Japanese language sources, whether or not it includes Japanese [[kanji]], [[hiragana]], [[katakana]], or a mix of the three with Latin text. |- | romaji || The [[Hepburn romanization]] of the Japanese language title. |- | translation || The film's unofficially translated title (if very different from the official English title) |} ===Korean=== * Replaced by {{tl|Infobox Korean}} or {{tl|Infobox Chinese/Korean}} {| class="wikitable" style="width:100%;" ! style="width:5em;" | Parameter ! Explanation |- | <code>hangul</code> | The Korean title of the film in [[hangul]]. Leaving this field empty will add the page to [[:Category:Articles needing Korean script or text]]. |- | <code>hanja</code> | The Korean title of the film in [[hanja]]. If hanja is required for the article but unknown, use <code>!</code> to add the page to [[:Category:Wikipedia articles needing hanja]]. |- | <code>rr</code> | The [[Revised Romanization of Korean|Revised Romanization]] of the Korean title. Do '''not''' use italics, as the infobox will automatically italicize any text in this parameter. Leaving this field empty will add the page to [[:Category:Wikipedia articles needing romanized Korean]]. |- | <code>mr</code> | The [[McCune–Reischauer]] of the Korean title. Do '''not''' use italics, as the infobox will automatically italicize any text in this parameter. Leaving this field empty will add the page to [[:Category:Wikipedia articles needing romanized Korean]]. |- | <code>context</code> | Context specification. Use <code>context = north</code> for North Korean films '''only'''. |- | <code>translation</code> | The film's unofficially translated title (if very different from the official English title) |} ===Vietnamese=== * Replaced by {{tl|Infobox Chinese/Vietnamese}} {| class="wikitable" style="width:100%;" ! style="width:5em;" | Parameter ! Explanation |- | <code>chuquocngu</code> | The [[Vietnamese alphabet]] of the Vietnamese language title. |- | <code>han-nom</code> | The [[Hán-Nôm]] of the Vietnamese language title. |- | <code>translation</code> | The film's unofficially translated title (if very different from the official English title) |} ==Templatedata== {{TemplateData header}} <templatedata> { "params": { "1": {}, "2": {}, "language": {}, "nolink": {}, "title": { "aliases": [ "original" ] }, "translation": {} }, "paramOrder": [ "1", "2", "language", "nolink", "title", "translation" ], "format": "block" } </templatedata> {{Film- and television-related infobox templates}} <includeonly>{{Sandbox other|| <!-- EDIT CATEGORIES BELOW THIS LINE--> [[Category:Film infobox templates|Infobox]] }}</includeonly> fcbf19a6f3724d17fef3930a1e320cec8ece7ac1 Template:Infobox royalty 10 1139 2465 2023-05-23T14:10:09Z w>Neveselbert 0 see talk wikitext text/x-wiki {{#if:{{Has short description}} |<!--Do nothing--> |{{Infobox royalty/short description|{{{title|{{{succession|}}}}}}}}}} {{infobox | child = {{#ifeq:{{lc:{{{embed|}}}}}|yes|yes}} | bodyclass = vcard | aboveclass = fn | abovestyle = background-color: #cbe; font-size: 125% | above = {{#ifeq:{{lc:{{{embed|}}}}}|yes|| {{{name|<includeonly>{{PAGENAMEBASE}}</includeonly>}}} }} | subheader1 = {{#if: {{{title|}}} |<!-- TITLETEXT SWITCH: EMBEDDED BY REALM (ALPHABETICALLY) --> ''{{{title|}}}'' {{{titletext|{{#switch:{{lc:{{{more}}}}} | no = | austria = ''[[Emperor of Austria#Full titles|(more...)]]'' | belgium = ''[[Monarchy of Belgium#Title|(more...)]]'' | britain = ''[[Style of the British sovereign#Styles of British sovereigns|(more...)]]'' | china = ''[[Chinese sovereign|(more...)]]'' | cyprus = ''[[Style of the Greek Sovereign#List of changes to the royal style|(more...)]]'' | denmark = ''[[Style of the Danish sovereign|(more...)]]'' | en-sco = ''[[Style of the British sovereign#Styles of English and Scottish sovereigns|(more...)]]'' | england = ''[[Style of the British sovereign#Styles of English sovereigns|(more...)]]'' | ethiopia = ''[[Emperor of Ethiopia#Style|(more...)]]'' | france = ''[[Style of the French sovereign#List of changes to the royal style|(more...)]]'' | hre = ''[[Holy Roman Emperor#Coronation|(more...)]]'' | hungary = ''[[Styles of Hungarian sovereigns|(more...)]]'' | italy = ''[[Style of the Italian sovereign|(more...)]]'' | jerusalem = ''[[Kings of Jerusalem#Kings of Jerusalem (1099–1291)|(more...)]]'' | luxembourg = ''[[Grand Duke of Luxembourg#Full titles|(more...)]]'' | malaysia = ''[[Malay titles#Malay_royalty|(more...)]]'' | monaco = ''[[Style of the Monegasque sovereign|(more...)]]'' | netherlands = ''[[Monarchy of the Netherlands#Full title|(more...)]]'' | norway = ''[[Style of the Norwegian sovereign|(more...)]]'' | parma = ''[[List of Dukes of Parma|(more...)]]'' | portugal = ''[[Style of the Portuguese sovereign|(more...)]]'' | russia = ''[[Tsar#Full style of Russian Sovereigns|(more...)]]'' | scotland = ''[[Style of the monarchs of Scotland#From the late Middle Ages to the Acts of Union|(more...)]]'' | sicilies = ''[[Kingdom of the Two Sicilies#Titles of King of the Two Sicilies|(more...)]]'' | spain-crown = ''[[List of titles and honours of the Spanish Crown|(more...)]]'' | spain-heir = ''[[Titles held by the heir apparent to the Spanish Throne|(more...)]]'' | sweden = ''[[Style of the Swedish sovereign|(more...)]]'' }}}}} }} | imageclass = photo | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright=1.0|alt={{{alt|}}}|suppressplaceholder=yes}} | captionstyle = line-height:normal;padding-bottom:0.2em;padding-top:0.2em; | caption = {{{caption|}}} | headerstyle = background-color: #e4dcf6;line-height:normal;padding:0.2em 0.2em | header1 = {{#if:{{{succession|}}}|{{{succession}}} {{#if:{{{moretext|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext}}} </div>}}}} | label2 = {{if empty| {{{reign-type|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }} | data2 = {{{reign|}}} | label3 = {{#switch:{{lc:{{{cor-type}}}}} | britain = [[Coronation of the British monarch|Coronation]] | france = [[Coronation of the French monarch|Coronation]] | hre = [[Coronation of the Holy Roman Emperor|Coronation]] | hungary = [[Coronation of the Hungarian monarch|Coronation]] | japan = [[Enthronement of the Japanese emperor|Enthronement]] | malaysia = [[Installation of the Yang di-Pertuan Agong|Installation]] | norway = [[Coronations in Norway|Coronation]] | ottoman = [[Sword of Osman|Sword girding]] | poland = [[Coronations in Poland|Coronation]] | russia = [[Coronation of the Russian monarch|Coronation]] | #default = {{if empty|{{{cor-type|}}}|[[Coronation]]}} }} | data3 = {{{coronation|}}} | label4 = Investiture | data4 = {{{investiture|}}} | label5 = {{#if:{{{pre-type|}}}|{{{pre-type}}}|Predecessor}} | data5 = {{{predecessor|}}} | label6 = {{#if:{{{suc-type|}}}|{{{suc-type}}}|Successor}} | data6 = {{{successor|}}} | label7 = {{#if:{{{reg-type|}}}|{{{reg-type}}}|Regent}} | data7 = {{{regent|}}} | header8 = {{#if:{{{succession1|}}}|{{{succession1}}} {{#if:{{{moretext1|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext1}}} </div>}}}} | label9 = {{if empty| {{{reign-type1|}}} | {{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }} | data9 = {{{reign1|}}} | label10 = {{#if:{{{cor-type1|}}}|{{{cor-type1}}}|Coronation}} | data10 = {{{coronation1|}}} | label11 = {{#if:{{{pre-type1|}}}|{{{pre-type1}}}|Predecessor}} | data11 = {{{predecessor1|}}} | label12 = {{#if:{{{suc-type1|}}}|{{{suc-type1}}}|Successor}} | data12 = {{{successor1|}}} | label13 = {{#if:{{{reg-type1|}}}|{{{reg-type1}}}|Regent}} | data13 = {{{regent1|}}} | header14 = {{#if:{{{succession2|}}}|{{{succession2}}} {{#if:{{{moretext2|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext2}}} </div>}}}} | label15 = {{if empty| {{{reign-type2|}}} | {{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }} | data15 = {{{reign2|}}} | label16 = {{#if:{{{cor-type2|}}}|{{{cor-type2}}}|Coronation}} | data16 = {{{coronation2|}}} | label17 = {{#if:{{{pre-type2|}}}|{{{pre-type2}}}|Predecessor}} | data17 = {{{predecessor2|}}} | label18 = {{#if:{{{suc-type2|}}}|{{{suc-type2}}}|Successor}} | data18 = {{{successor2|}}} | label19 = {{#if:{{{reg-type2|}}}|{{{reg-type2}}}|Regent}} | data19 = {{{regent2|}}} | header20 = {{#if:{{{succession3|}}}|{{{succession3}}} {{#if:{{{moretext3|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext3}}} </div>}}}} | label21 = {{if empty| {{{reign-type3|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }} | data21 = {{{reign3|}}} | label22 = {{#if:{{{cor-type3|}}}|{{{cor-type3}}}|Coronation}} | data22 = {{{coronation3|}}} | label23 = {{#if:{{{pre-type3|}}}|{{{pre-type3}}}|Predecessor}} | data23 = {{{predecessor3|}}} | label24 = {{#if:{{{suc-type3|}}}|{{{suc-type3}}}|Successor}} | data24 = {{{successor3|}}} | label25 = {{#if:{{{reg-type3|}}}|{{{reg-type3}}}|Regent}} | data25 = {{{regent3|}}} | header26 = {{#if:{{{succession4|}}}|{{{succession4}}} {{#if:{{{moretext4|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext4}}} </div>}}}} | label27 = {{if empty| {{{reign-type4|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }} | data27 = {{{reign4|}}} | label28 = {{#if:{{{cor-type4|}}}|{{{cor-type4}}}|Coronation}} | data28 = {{{coronation4|}}} | label29 = {{#if:{{{pre-type4|}}}|{{{pre-type4}}}|Predecessor}} | data29 = {{{predecessor4|}}} | label30 = {{#if:{{{suc-type4|}}}|{{{suc-type4}}}|Successor}} | data30 = {{{successor4|}}} | label31 = {{#if:{{{reg-type4|}}}|{{{reg-type4}}}|Regent}} | data31 = {{{regent4|}}} | header32 = {{#if:{{{succession5|}}}|{{{succession5}}} {{#if:{{{moretext5|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext5}}} </div>}}}} | label33 = {{if empty| {{{reign-type5|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }} | data33 = {{{reign5|}}} | label34 = {{#if:{{{cor-type5|}}}|{{{cor-type5}}}|Coronation}} | data34 = {{{coronation5|}}} | label35 = {{#if:{{{pre-type5|}}}|{{{pre-type5}}}|Predecessor}} | data35 = {{{predecessor5|}}} | label36 = {{#if:{{{suc-type5|}}}|{{{suc-type5}}}|Successor}} | data36 = {{{successor5|}}} | label37 = {{#if:{{{reg-type5|}}}|{{{reg-type5}}}|Regent}} | data37 = {{{regent5|}}} | header38 = {{#if:{{{succession6|}}}|{{{succession6}}} {{#if:{{{moretext6|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext6}}} </div>}}}} | label39 = {{if empty| {{{reign-type6|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }} | data39 = {{{reign6|}}} | label40 = {{#if:{{{cor-type6|}}}|{{{cor-type6}}}|Coronation}} | data40 = {{{coronation6|}}} | label41 = {{#if:{{{pre-type6|}}}|{{{pre-type6}}}|Predecessor}} | data41 = {{{predecessor6|}}} | label42 = {{#if:{{{suc-type6|}}}|{{{suc-type6}}}|Successor}} | data42 = {{{successor6|}}} | label43 = {{#if:{{{reg-type6|}}}|{{{reg-type6}}}|Regent}} | data43 = {{{regent6|}}} | header44 = {{#if:{{{succession7|}}}|{{{succession7}}} {{#if:{{{moretext7|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext7}}} </div>}}}} | label45 = {{if empty| {{{reign-type7|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }} | data45 = {{{reign7|}}} | label46 = {{#if:{{{cor-type7|}}}|{{{cor-type7}}}|Coronation}} | data46 = {{{coronation7|}}} | label47 = {{#if:{{{pre-type7|}}}|{{{pre-type7}}}|Predecessor}} | data47 = {{{predecessor7|}}} | label48 = {{#if:{{{suc-type7|}}}|{{{suc-type7}}}|Successor}} | data48 = {{{successor7|}}} | label49 = {{#if:{{{reg-type7|}}}|{{{reg-type7}}}|Regent}} | data49 = {{{regent7|}}} | header50 = {{#if:{{{succession8|}}}|{{{succession8}}} {{#if:{{{moretext8|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext8}}} </div>}}}} | label51 = {{if empty| {{{reign-type8|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }} | data51 = {{{reign8|}}} | label52 = {{#if:{{{cor-type8|}}}|{{{cor-type8}}}|Coronation}} | data52 = {{{coronation8|}}} | label53 = {{#if:{{{pre-type8|}}}|{{{pre-type8}}}|Predecessor}} | data53 = {{{predecessor8|}}} | label54 = {{#if:{{{suc-type8|}}}|{{{suc-type8}}}|Successor}} | data54 = {{{successor8|}}} | label55 = {{#if:{{{reg-type8|}}}|{{{reg-type8}}}|Regent}} | data55 = {{{regent8|}}} | header56 = {{#if:{{{succession9|}}}|{{{succession9}}} {{#if:{{{moretext9|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext9}}} </div>}}}} | label57 = {{if empty| {{{reign-type9|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }} | data57 = {{{reign9|}}} | label58 = {{#if:{{{cor-type9|}}}|{{{cor-type9}}}|Coronation}} | data58 = {{{coronation9|}}} | label59 = {{#if:{{{pre-type9|}}}|{{{pre-type9}}}|Predecessor}} | data59 = {{{predecessor9|}}} | label60 = {{#if:{{{suc-type9|}}}|{{{suc-type9}}}|Successor}} | data60 = {{{successor9|}}} | label61 = {{#if:{{{reg-type9|}}}|{{{reg-type9}}}|Regent}} | data61 = {{{regent9|}}} | header62 = {{#if:{{{succession10|}}}|{{{succession10}}} {{#if:{{{moretext10|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext10}}} </div>}}}} | label63 = {{if empty| {{{reign-type10|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }} | data63 = {{{reign10|}}} | label64 = {{#if:{{{cor-type10|}}}|{{{cor-type10}}}|Coronation}} | data64 = {{{coronation10|}}} | label65 = {{#if:{{{pre-type10|}}}|{{{pre-type10}}}|Predecessor}} | data65 = {{{predecessor10|}}} | label66 = {{#if:{{{suc-type10|}}}|{{{suc-type10}}}|Successor}} | data66 = {{{successor10|}}} | label67 = {{#if:{{{reg-type10|}}}|{{{reg-type10}}}|Regent}} | data67 = {{{regent10|}}} | header68 = {{#if: {{{succession|}}} | <div style="height: 4px; width:100%;"></div>}} | label69 = Born | data69 = {{br separated entries| {{{birth_name|}}} | {{{birth_date|}}} | {{{birth_place|}}} }} | label70 = Died | data70 = {{br separated entries| {{{death_date|}}} | {{{death_place|}}} }} | label71 = Burial | data71 = {{br separated entries |1= {{{burial_date|{{{date of burial|}}}}}} |2= {{#if:{{{burial_place|{{{place of burial|}}}}}}|<div style="display:inline" class="label">{{{burial_place|{{{place of burial|}}}}}}</div>}} }} | label72 = Consort | data72 = {{{queen|}}} | label73 = {{{spouse-type|{{#switch:{{{type}}}|monarch={{#switch:{{{consort}}}|yes=Spouse|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Spouse|Consort}}<!--BACKWARD COMPAT FROM IBR-->}}|majesty={{#switch:{{{consort}}}|yes=Spouse|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Spouse|Consort}}<!--BACKWARD COMPAT FROM IBR-->}}|Spouse}}}}} | data73 = {{{spouse|}}} | label74 = {{#if:{{{spouses-type|}}}|{{{spouses-type}}}|Spouses}} | data74 = {{{spouses|}}} | label75 = {{#if:{{{spouse 2|}}} | Wives | Wife }}<!-- alternative to using 'spouses' and 'spouses-type' --> | data75 = {{#if: {{{spouse 1|}}}| {{unbulleted list | {{{spouse 1}}} | {{{spouse 2|}}} | {{{spouse 3|}}} | {{{spouse 4|}}} | {{{spouse 5|}}} | {{{spouse 6|}}} | {{{spouse 7|}}} | {{{spouse 8|}}} | {{{spouse 9|}}} }}}} | label76 = {{#if:{{{issue-type|}}}|{{{issue-type}}}|[[Issue (genealogy)|Issue]]}}{{#if:{{{issue-link|}}}|<br><span style="font-weight:normal">''[[{{{issue-link}}}|{{#if:{{{issue-pipe|}}}|{{{issue-pipe}}}|Detail}}]]''</span>}} | data76 = {{{issue|}}} | data77 = {{#if:{{{full name|}}}{{{family_name|}}}{{{clan_name|}}}{{{given_name|}}}{{{era dates|}}}{{{regnal name|}}}{{{posthumous name|}}}{{{temple name|}}}| {{Infobox|bodystyle=border-collapse:collapse; border-spacing:0px; border:none; width:100%; margin:0px; font-size:100%; clear:none; float:none | headerstyle = text-align:left | datastyle = text-align:left; padding-left:0.7em; | header1 = {{#if:{{{full name|}}}|Names}} | class2 = nickname <!-- "nickname" is the correct parameter value for hCard --> | data2 = {{{full name|}}} | header3 = {{#if:{{{family_name|}}}{{{clan_name|}}}{{{given_name|}}}|Full name}} | data4 = {{#if:{{{family_name|}}}{{{clan_name|}}}{{{given_name|}}}| {{unbulleted list | 1 = {{#if: {{{family_name|}}} | [[Chinese surname|Family name]]: <div style="display:inline" class="nickname">{{{family_name}}}</div> }} | 2 = {{#if: {{{clan_name|}}} | [[Chinese surname|Clan name]]: <div style="display:inline" class="nickname">{{{clan_name}}}</div> }} | 3 = {{#if: {{{given_name|}}} | [[Chinese given name|Given name]]: <div style="display:inline" class="nickname">{{{given_name}}}</div> }} }}}} | header5 = {{#if: {{{era dates|}}} |Era {{#if:{{{era name|}}}|name and&nbsp;}}dates}} | data6 = {{#if: {{{era dates|}}} | {{#if:{{{era name|}}}|{{{era name}}}:&nbsp;}}{{{era dates}}} }} | header7 = {{#if: {{{regnal name|}}} |[[Regnal name]]}} | data8 = {{{regnal name|}}} | header9 = {{#if: {{{posthumous name|}}} | [[Posthumous name]]}} | data10 = {{{posthumous name|}}} | header11 = {{#if: {{{temple name|}}} | [[Temple name]] }} | data12 = {{{temple name|}}} }} }} | label78 = {{{native_lang1}}} | data78 = {{#if: {{{native_lang1|}}}|{{{native_lang1_name1|}}}}} | label79 = {{{native_lang2}}} | data79 = {{#if: {{{native_lang2|}}}|{{{native_lang2_name1|}}}}} | label80 = {{{native_lang3}}} | data80 = {{#if: {{{native_lang3|}}}|{{{native_lang3_name1|}}}}} | label81 = {{{native_lang4}}} | data81 = {{#if: {{{native_lang4|}}}|{{{native_lang4_name1|}}}}} | label82 = {{{native_lang5}}} | data82 = {{#if: {{{native_lang5|}}}|{{{native_lang5_name1|}}}}} | label83 = [[Dynasty|{{#if:{{{house-type|}}}|{{{house-type}}}|House}}]] | data83 = {{{house|}}} | label84 = [[Dynasty|{{#if:{{{house-type|}}}|{{{house-type}}}|House}}]] | data84 = {{{royal house|}}} | label85 = [[Dynasty]] | data85 = {{{dynasty|}}} | label86 = Father | data86 = {{{father|}}} | label87 = Mother | data87 = {{{mother|}}} | label88 = Religion | data88 = {{{religion|}}} | label89 = Occupation | data89 = {{{occupation|}}} | label90 = {{#if:{{{signature_type|}}}| {{{signature_type}}} | Signature }} | data90 = {{#if:{{{signature|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{signature|}}}|size=125px|class=notpageimage|alt={{{signature_alt|}}}|title={{{name<includeonly>|{{PAGENAMEBASE}}</includeonly>}}}'s signature}}}} | data91 = {{{module|}}} }}{{#if:{{{pronunciation|}}}|[[Category:Biography template using pronunciation]]}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox royalty with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox royalty]] with unknown parameter "_VALUE_"|ignoreblank=y| 2 | alt | birth_date | birth_name | birth_place | burial_date | burial_place | caption | clan_name | consort | cor-type | cor-type1 | cor-type2 | cor-type3 | cor-type4 | cor-type5 | cor-type6 | cor-type7 | cor-type8 | cor-type9 | coronation | coronation1 | coronation2 | coronation3 | coronation4 | coronation5 | coronation6 | coronation7 | coronation8 | coronation9 | date of burial | death_date | death_place | dynasty | embed | era dates | era name | family_name | father | full name | given_name | house | house-type | image | image_size | investiture | issue | issue-link | issue-pipe | issue-type | module | more | moretext | moretext1 | moretext2 | moretext3 | moretext4 | moretext5 | moretext6 | moretext7 | moretext8 | moretext9 | mother | name | native_lang1 | native_lang1_name1 | native_lang2 | native_lang2_name1 | native_lang3 | native_lang3_name1 | native_lang4 | native_lang4_name1 | native_lang5 | native_lang5_name1 | occupation | place of burial | posthumous name | pre-type | pre-type1 | pre-type2 | pre-type3 | pre-type4 | pre-type5 | pre-type6 | pre-type7 | pre-type8 | pre-type9 | predecessor | predecessor1 | predecessor2 | predecessor3 | predecessor4 | predecessor5 | predecessor6 | predecessor7 | predecessor8 | predecessor9 | queen | reg-type | reg-type1 | reg-type2 | reg-type3 | reg-type4 | reg-type5 | reg-type6 | reg-type7 | reg-type8 | reg-type9 | regent | regent1 | regent2 | regent3 | regent4 | regent5 | regent6 | regent7 | regent8 | regent9 | regnal name | reign | reign-type | reign-type1 | reign-type2 | reign-type3 | reign-type4 | reign-type5 | reign-type6 | reign-type7 | reign-type8 | reign-type9 | reign1 | reign2 | reign3 | reign4 | reign5 | reign6 | reign7 | reign8 | reign9 | religion | royal house | signature | signature_alt | signature_type | spouse | spouse 1 | spouse 2 | spouse 3 | spouse 4 | spouse 5 | spouse 6 | spouse 7 | spouse 8 | spouse 9 | spouse-type | spouses | spouses-type | suc-type | suc-type1 | suc-type2 | suc-type3 | suc-type4 | suc-type5 | suc-type6 | suc-type7 | suc-type8 | suc-type9 | succession | succession1 | succession2 | succession3 | succession4 | succession5 | succession6 | succession7 | succession8 | succession9 | successor | successor1 | successor2 | successor3 | successor4 | successor5 | successor6 | successor7 | successor8 | successor9 | temple name | title | titletext | type | succession10 | moretext10 | reign-type10 | reign10 | coronation10 | cor-type10 | predecessor10 | pre-type10 | successor10 | suc-type10 | regent10 | reg-type10}}<noinclude> {{documentation}} </noinclude> 8fdd5f83a49f2ff2d7072a498aa5ab695cb385df Template:Infobox UK place/generic demo 10 1420 2755 2023-05-23T14:54:11Z w>Jonesey95 0 rm unsupported parameters wikitext text/x-wiki {{Parameter names example |_template={{BASEPAGENAME}}{{\sandbox}} |official_name |gaelic_name |scots_name |welsh_name |irish_name |manx_name |cornish_name |other_language|other_language_name |local_name |type |static_image_name |static_image_width={{{static_image_width}}}<br/> |static_image_alt |static_image_caption |static_image_2 |static_image_2_name |static_image_2_width={{{static_image_2_width}}}<br/> |static_image_2_alt |static_image_2_caption |map_type |coordinates = {{coord|53.75|-5|display=inline}} |map_relief |map_alt |label_position |country <!--|country1--> <!--|crown_dependency--> |area_total_sq_mi=1 |area_footnotes={{smaller|{{{area footnotes}}}}} |population=0 |population_ref |statistic_title|statistic |statistic_title1|statistic1 |statistic_title2|statistic2 |population_demonym |language |language1 |language2 |os_grid_reference |irish_grid_reference |london_distance_mi=0 |london_direction={{smaller|{{{london_direction}}}}} |belfast_distance_mi=0 |belfast_direction={{smaller|{{{belfast_direction}}}}} |cardiff_distance_mi=0 |cardiff_direction={{smaller|{{{cardiff_direction}}}}} |dublin_distance_mi=0 |dublin_direction={{smaller|{{{dublin_direction}}}}} |edinburgh_distance_mi=0 |edinburgh_direction={{smaller|{{{edinburgh_direction}}}}} |douglas_distance_mi=0 |douglas_direction={{smaller|{{{douglas_direction}}}}} |charingX_distance_mi=0 |charingX_direction={{smaller|{{{charingX_direction}}}}} <!--(England by level)--> <!--5--> |civil_parish |civil_parish1 |civil_parish2 <!--4--> |london_borough |london_borough1 |london_borough2 |london_borough3 |london_borough4 |metropolitan_borough |metropolitan_borough1 |metropolitan_borough2 |metropolitan_borough3 |shire_district |shire_district1 |shire_district2 |shire_district3 |unitary_england |unitary_england1 |unitary_england2={{{unitary_england2}}}<br/>{{{unitary_england3}}}<!--(combined for sake of Police/Fire/Ambulance)--> <!--3--> |shire_county |shire_county1 |shire_county2={{{shire_county2}}}<br/>{{{shire_county3}}}<!--(ditto)--> |metropolitan_county |metropolitan_county1 |metropolitan_county2={{{metropolitan_county2}}}<br/>{{{metropolitan_county3}}}<!--(ditto)--> |lieutenancy_england |lieutenancy_england1 |lieutenancy_england2 |lieutenancy_england3 <!--2--> |region <!--|region1--> <!--(IoM by level)--> <!--4--> |manx_parish <!--3--> |manx_sheading <!--(NI by level)--> <!--4--> |unitary_northern_ireland |unitary_northern_ireland1 |unitary_northern_ireland2 <!--3--> |lieutenancy_northern_ireland |lieutenancy_northern_ireland1 |lieutenancy_northern_ireland2 <!--(Scotland by level)--> <!--4--> |unitary_scotland |unitary_scotland1 |unitary_scotland2={{{unitary_scotland2}}}<br/>{{{unitary_scotland3}}}<!--(as above)--> <!--3--> |lieutenancy_scotland |lieutenancy_scotland1 |lieutenancy_scotland2 |lieutenancy_scotland3 <!--(Wales by level)--> <!--5--> |community_wales |community_wales1 |community_wales2={{{community_wales2}}}<br />{{{community_wales3}}}<!--(ditto)--> <!--4--> |unitary_wales |unitary_wales1 |unitary_wales2={{{unitary_wales2}}}<br/>{{{unitary_wales3}}}<!--(ditto)--> <!--3--> |lieutenancy_wales |lieutenancy_wales1 |lieutenancy_wales2 |lieutenancy_wales3 <!--Parts--> |parts_type |parts |p1 |postcode_area |postcode_district |post_town |postcode_area1 |postcode_district1 |post_town1 |postcode_area2 |postcode_district2 |post_town2 |dial_code |dial_code1 |dial_code2 |constituency_westminster={{smaller|{{{constituency_westminster}}}}} |constituency_westminster1={{smaller|{{{constituency_westminster1}}}}} |constituency_westminster2={{smaller|{{{constituency_westminster2}}}}} |constituency_westminster3=…… |constituency_westminster8={{smaller|{{{constituency_westminster8}}}}} |constituency_manx_parliament={{smaller|{{{constituency_manx_parliament}}}}} |constituency_ni_assembly={{smaller|{{{constituency_ni_assembly}}}}} |constituency_ni_assembly1={{smaller|{{{constituency_ni_assembly1}}}}} |constituency_ni_assembly2={{smaller|{{{constituency_ni_assembly2}}}}} |constituency_ni_assembly3={{smaller|{{{constituency_ni_assembly3}}}}} |constituency_scottish_parliament={{smaller|{{{constituency_scottish_parliament}}}}} |constituency_scottish_parliament1={{smaller|{{{constituency_scottish_parliament1}}}}} |constituency_scottish_parliament2={{smaller|{{{constituency_scottish_parliament2}}}}} |constituency_scottish_parliament3=…… |constituency_scottish_parliament10={{smaller|{{{constituency_scottish_parliament10}}}}} |constituency_welsh_assembly={{smaller|{{{constituency_welsh_assembly}}}}} |constituency_welsh_assembly1={{smaller|{{{constituency_welsh_assembly1}}}}} |constituency_welsh_assembly2={{smaller|{{{constituency_welsh_assembly2}}}}} |councillors |councillor1 |party1 |councillor2 |party2 |councillor3 |party3 |councillor4 |party4 |councillor5 |party5 |website }} 6befc5ffbd629106e24b6b5e3398e636e409bc63 Template:Infobox person module documentation 10 1359 2694 2023-05-23T17:04:39Z w>Gonnym 0 wikitext text/x-wiki This infobox may be used to create a genre-specific section within {{tl|Infobox person}} (or similar [[:Category:People and person infobox templates|biographical infobox templates]]) for cases where a person may be notable in more than one field; a generic example is shown below. For guidance on usage, see [[Wikipedia:Infobox modules]]. Also see the [[Template:Infobox]] documentation which explains [[Template:Infobox/doc#Embedding|embedding]] and [[Template:Infobox/doc#Subboxes|subboxes]]. <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox person | name = | image = | caption = | birth_date = | birth_place = | <nowiki><!--</nowiki> ''[[et cetera|etc.]]'' <nowiki>--></nowiki> | module = <nowiki>{{</nowiki>{{{1|{{{template|<includeonly>{{BASEPAGENAME}}</includeonly><noinclude>EMBEDDED TEMPLATE NAME</noinclude>}}}}}} | {{#if:{{{parameter|}}} | {{{parameter}}}=yes | child=yes <nowiki><!--</nowiki> ''or'' embed=yes ''or'' subbox=yes <nowiki>--></nowiki>}} | {{{2|{{{example_parameter1|parameter-1}}}}}} = | {{{3|{{{example_parameter2|parameter-2}}}}}} = | {{{4|{{{example_parameter3|parameter-3}}}}}} = | {{{5|{{{example_parameter4|parameter-4}}}}}} = | <nowiki><!--</nowiki> ''etc.'' <nowiki>--></nowiki> }} }} </syntaxhighlight><noinclude> [[Category:Template namespace templates]] [[Category:Documentation shared content templates]] </noinclude> ba21d82aaf3f82d9307e5b28f6ea7d7f0a3bfac1 Module:Coordinates/styles.css 828 592 1332 2023-05-24T21:17:17Z wikipedia>Izno 0 per tper sanitized-css text/css /* {{pp-template}} */ /* Geographical coordinates defaults. The classes "geo", "longitude", and "latitude" are used by the [[Geo microformat]]. */ .geo-default, .geo-dms, .geo-dec { display: inline; } .geo-nondefault, .geo-multi-punct, .geo-inline-hidden { display: none; } .longitude, .latitude { white-space: nowrap; } 1b5d036501a9f6bc9dcf3c9117e8d6bc97507290 Template:Infobox UK place 10 1144 2470 2023-05-25T07:04:33Z w>WOSlinker 0 remove London caps from posttown wikitext text/x-wiki <includeonly>{{main other|{{Short description|2=noreplace|{{#if:{{{type|}}}|{{ucfirst:{{delink|{{{type}}}}}}}|Human settlement}} in {{#if:{{{country|}}}|{{delink|{{{country}}}}}|the United Kingdom}}}}}}{{Infobox | bodyclass = ib-uk-place vcard | templatestyles = Infobox UK place/styles.css | aboveclass = fn org nowrap | above = {{{official_name|{{PAGENAMEBASE}}}}}{{Unbulleted list|class=ib-uk-place-other-names |{{#if:{{{gaelic_name|}}} |{{lang-gd|{{{gaelic_name}}}}}}} |{{#if:{{{irish_name|}}} |{{lang-ga|{{{irish_name}}}}}}} |{{#if:{{{scots_name|}}} |{{lang-sco|{{{scots_name}}}}}}} |{{#if:{{{cornish_name|}}} |{{lang-kw|{{{cornish_name}}}}}}} |{{#if:{{{welsh_name|}}} |{{lang-cy|{{{welsh_name}}}}}}} |{{#if:{{{manx_name|}}} |{{lang-gv|{{{manx_name}}}}}}} |{{#if:{{{other_language_name|}}} |''[[{{{other_language}}}|{{{other_language_name}}}]]''}} |{{#if:{{{local_name|}}} |{{{local_name}}}}} }}<!-- ***** Type *****--> | subheader ={{#if:{{{type|}}}|<span class="category">{{#switch:{{lc:{{{type|}}}}} |civil parish=Civil parish |#default={{{type|}}}}}</span>}}<!-- ***** Static image/s *****--> | rowclass1 = mergedtoprow | data1 = {{#invoke:InfoboxImage|InfoboxImage|image={{#if:{{{static_image|}}}|{{{static_image}}}|{{{static_image_name|}}}}} |size={{{static_image_width|}}}|sizedefault=240px|alt={{{static_image_alt|}}}}}{{#if:{{{static_image|}}}{{{static_image_name|}}}|{{#if:{{{static_image_caption|}}} |<div>{{{static_image_caption|}}}</div> }} }} | rowclass2 = mergedbottomrow | data2 = {{#invoke:InfoboxImage|InfoboxImage|image={{#if:{{{static_image_2|}}}|{{{static_image_2}}}|{{{static_image_2_name|}}}}} |size={{{static_image_2_width|}}}|sizedefault=240px|alt={{{static_image_2_alt|}}}}}{{#if:{{{static_image_2|}}}{{{static_image_2_name|}}}|{{#if:{{{static_image_2_caption|}}} |<div>{{{static_image_2_caption|}}}</div> }} }}<!-- ***** Map *****--> | data3 = {{#switch:{{{map_type}}} | nomap = | UK = {{Location map |{{#if:{{{pushpin_map|}}}|{{{pushpin_map}}}#}}United Kingdom |width=240 |float=center|marksize=6 | coordinates = {{{coordinates|}}} |relief={{{map_relief|}}} |alt={{{map_alt|}}} |label={{#if:{{{official_name|}}}|{{{official_name}}}|{{PAGENAMEBASE}}}} |position={{{label_position|}}} |border=infobox |caption={{#if:{{{pushpin_map|}}}||{{#if:{{{coordinates|}}}|Location within {{#switch:{{{country}}} | England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|Greater London |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=maptitle}} | Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |level2={{{lieutenancy_northern_ireland}}} |retrieve=maptitle}} | Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |level3={{#if:{{{map_type|}}}|{{{map_type|}}} |{{#if:{{{shire_district|}}}|{{{shire_district|}}} |{{{lieutenancy_scotland|}}} }} }} |retrieve=maptitle}} | Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=maptitle}} | #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=maptitle}} |the [[United Kingdom]] {{Infobox UK place/NoLocalMap}} }} }}}}}} }} | #default = {{#if:{{{coordinates|}}} |{{Location map |{{#if:{{{pushpin_map|}}}|{{{pushpin_map}}}#}}{{#switch:{{{country}}} | England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|Greater London |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=map}} | Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |level2={{{lieutenancy_northern_ireland}}} |retrieve=map}} | Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |level3={{#if:{{{map_type|}}}|{{{map_type|}}} |{{#if:{{{shire_district|}}}|{{{shire_district|}}} |{{{lieutenancy_scotland|}}} }} }} |retrieve=map}} | Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=map}} | #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=map}} |United Kingdom}} }}<!-- switch --> |width=240 |float=center|marksize=6 | coordinates = {{{coordinates|}}} |relief={{{map_relief|}}} |alt={{{map_alt|}}} |label={{#if:{{{official_name|}}}|{{{official_name}}}|{{PAGENAMEBASE}}}} |position={{{label_position|}}} |border=infobox |caption={{#if:{{{pushpin_map|}}}|{{{pushpin_map_caption|}}}##}}{{#if:{{{coordinates|}}}|Location within {{#switch:{{{country}}} | England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|Greater London |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=maptitle}} | Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |level2={{{lieutenancy_northern_ireland}}} |retrieve=maptitle}} | Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |level3={{#if:{{{map_type|}}}|{{{map_type|}}} |{{#if:{{{shire_district|}}}|{{{shire_district|}}} |{{{lieutenancy_scotland|}}} }} }} |retrieve=maptitle}} | Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=maptitle}} | #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=maptitle}} |the [[United Kingdom]] {{Infobox UK place/NoLocalMap}} }} }}}} }} }} }} <!-- ***** Area *****--> | rowclass5 = mergedtoprow | label5 = {{#if:{{{area_total_sq_mi|}}}{{{area_total_km2|}}}{{{area_footnotes|}}}|Area }} | data5 = {{#if:{{{area_total_sq_mi|}}} |{{Infobox UK place/area|type=mile|top={{{area_total_sq_mi|}}}}} | {{#if:{{{area_total_km2|}}} |{{Infobox UK place/area|type=km|top={{{area_total_km2|}}}}} }} }}{{#if:{{{area_footnotes|}}} |&nbsp;{{{area_footnotes}}} }} <!-- ***** Population/Density *****--> | label6 = Population | data6 = {{#if:{{{population|}}} | {{#iferror: {{#expr:{{formatnum:{{{population}}}|R}}}} | <strong class="error">Expression error: "{{{population}}}" must be numeric</strong>[[Category:Pages using infobox UK place with non-numeric population]] | {{formatnum: {{formatnum:{{{population}}}|R}} }}&nbsp;<!--([space to avoid leading-space if only population_ref supplied?])--> }} }}{{#if:{{{population_ref|}}} |{{{population_ref|}}} }} | rowclass7 = mergedrow | label7 = {{#if:{{{population|}}} | {{#iferror: {{#expr:{{formatnum:{{{population}}}|R}} }} | | {{#if:{{{area_total_sq_mi|}}}{{{area_total_km2|}}}{{{population_density|}}}| •&nbsp;[[Population density|Density]] }}}}}} | data7 = {{#if:{{{population|}}} | {{#iferror: {{#expr:{{formatnum:{{{population}}}|R}} }} | | {{#if:{{{area_total_sq_mi|}}}{{{area_total_km2|}}}{{{population_density|}}}| {{#if:{{{population_density|}}} |{{{population_density|}}} | {{#if:{{{area_total_sq_mi|}}} |{{Infobox UK place/dens|type=mile|top={{{population}}}|bottom={{{area_total_sq_mi}}}}} | {{Infobox UK place/dens|type=km|top={{{population}}}|bottom={{{area_total_km2}}}}} }} }} }}}}}} | rowclass8 = mergedrow | label8 = {{{statistic_title|}}} | data8 = {{{statistic|}}} | rowclass9 = mergedrow | label9 = {{{statistic_title1|}}} | data9 = {{{statistic1|}}} | rowclass10 = mergedrow | label10 = {{{statistic_title2|}}} | data10 = {{{statistic2|}}}<!-- ***** Population demonym *****--> | rowclass11 = mergedtoprow | label11 = [[Demonym]] | data11 = {{{population_demonym|}}}<!-- ***** Language/s *****--> | label12 = [[Language]] | data12 = {{{language|}}}{{#if:{{{language1|}}}|<br/>{{{language1|}}}}}{{#if:{{{language2|}}}|<br/>{{{language2|}}}}}<!-- ***** OS / Irish grid ref *****--> | rowclass13 = mergedtoprow | label13 = [[Ordnance Survey National Grid|OS&nbsp;grid&nbsp;reference]] | data13 = {{#if:{{{os_grid_reference|}}}|<span class="plainlinks nourlexpansion">{{Gbm4ibx|{{{os_grid_reference}}}|name={{{official_name|{{PAGENAMEBASE}}}}}}}{{{os_grid_reference_note|}}}</span>}} | rowclass14 = mergedtoprow | label14 = [[Irish grid reference system|Irish&nbsp;grid&nbsp;reference]] | data14 = {{#if:{{{irish_grid_reference|}}}|<span class="plainlinks nourlexpansion">{{iem4ibx|{{{irish_grid_reference}}}|name={{{official_name|{{PAGENAMEBASE}}}}}}}{{{irish_grid_reference_note|}}}</span>}}<!-- ***** City distances *****--> | rowclass15 = mergedrow | label15 = {{#if:{{{belfast_distance|}}}{{{belfast_distance_mi|}}}{{{belfast_distance_km|}}}|•&nbsp;[[Belfast]]}} | data15 ={{#if:{{{belfast_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{belfast_distance_mi}}}}} | {{#if:{{{belfast_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{belfast_distance_km}}}}} }} }}{{{belfast_distance|}}}{{#if:{{{belfast_direction|}}}|&nbsp;[[Points of the compass{{!}}{{{belfast_direction}}}]]}} | rowclass16 = mergedrow | label16 ={{#if:{{{cardiff_distance|}}}{{{cardiff_distance_mi|}}}{{{cardiff_distance_km|}}}|•&nbsp;[[Cardiff]]}} | data16 ={{#if:{{{cardiff_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{cardiff_distance_mi}}}}} | {{#if:{{{cardiff_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{cardiff_distance_km}}}}} }} }}{{{cardiff_distance|}}}{{#if:{{{cardiff_direction|}}}|&nbsp;[[Points of the compass{{!}}{{{cardiff_direction}}}]]}} | rowclass17 = mergedrow | label17 ={{#if:{{{douglas_distance|}}}{{{douglas_distance_mi|}}}{{{douglas_distance_km|}}}|•&nbsp;[[Douglas, Isle of Man|Douglas]]}} | data17 ={{#if:{{{douglas_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{douglas_distance_mi}}}}} | {{#if:{{{douglas_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{douglas_distance_km}}}}} }} }}{{{douglas_distance|}}}{{#if:{{{douglas_direction|}}}|&nbsp;[[Points of the compass{{!}}{{{douglas_direction}}}]]}} | rowclass18 = mergedrow | label18 = {{#if:{{{dublin_distance|}}}{{{dublin_distance_mi|}}}{{{dublin_distance_km|}}}|•&nbsp;[[Dublin]]}} | data18 ={{#if:{{{dublin_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{dublin_distance_mi}}}}} | {{#if:{{{dublin_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{dublin_distance_km}}}}} }} }}{{{dublin_distance|}}}{{#if:{{{dublin_direction|}}}|&nbsp;[[Points of the compass{{!}}{{{dublin_direction}}}]]}} | rowclass19 = mergedrow | label19 ={{#if:{{{edinburgh_distance|}}}{{{edinburgh_distance_mi|}}}{{{edinburgh_distance_km|}}}| •&nbsp;[[Edinburgh]] }} | data19 ={{#if:{{{edinburgh_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{edinburgh_distance_mi}}}}} | {{#if:{{{edinburgh_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{edinburgh_distance_km}}}}} }} }}{{{edinburgh_distance|}}}{{#if:{{{edinburgh_direction|}}}|&nbsp;[[Points of the compass{{!}}{{{edinburgh_direction}}}]]}} | rowclass20 = mergedbottomrow | label20 = {{#if:{{{london_distance|}}}{{{london_distance_mi|}}}{{{london_distance_km|}}}|•&nbsp;[[London]]}} | data20 ={{#if:{{{london_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{london_distance_mi}}}}} | {{#if:{{{london_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{london_distance_km}}}}} }} }}{{{london_distance|}}}{{#if:{{{london_direction|}}}|&nbsp;[[Points of the compass{{!}}{{{london_direction}}}]]}} | rowclass21 = mergedbottomrow | label21 = {{#if:{{{charingX_distance|}}}{{{charingX_distance_mi|}}}{{{charingX_distance_km|}}}|•&nbsp;[[Charing Cross]]}} | data21 ={{#if:{{{charingX_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{charingX_distance_mi}}}}} | {{#if:{{{charingX_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{charingX_distance_km}}}}} }} }}{{{charingX_distance|}}}{{#if:{{{charingX_direction|}}}|&nbsp;[[Points of the compass{{!}}{{{charingX_direction}}}]]}}<!-- ***** Administrative divisions (except constituencies) ***** ***** Parish (level 5) *****--> | label22 = [[Civil parish]] | data22 ={{Unbulleted list|{{{civil_parish|}}}|{{{civil_parish1|}}}|{{{civil_parish2|}}}}} | rowclass23 = mergedtoprow | label23 = [[Local government in Wales#Communities|Community]] | data23 = {{Unbulleted list|{{{community_wales|}}}|{{{community_wales1|}}}|{{{community_wales2|}}}|{{{community_wales3|}}}}} | rowclass24 = mergedtoprow | label24 = [[Community council]] | data24 = {{Unbulleted list|{{{community_scotland|}}}|{{{community_scotland1|}}}|{{{community_scotland2|}}}|{{{community_scotland3|}}}}}<!-- ***** District (level 4) *****--> | rowclass25 = mergedrow | label25 = [[Local government in Wales|Principal&nbsp;area]] | data25 = {{Unbulleted list|{{{unitary_wales|}}}|{{{unitary_wales1|}}}|{{{unitary_wales2|}}}|{{{unitary_wales3|}}}}} | rowclass26 = mergedrow | label26 ={{#if:{{{london_borough|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough}}} |retrieve=boroughhead}} }} | data26 ={{Unbulleted list| {{#if:{{{london_borough|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough}}} |retrieve=borough}}}}|{{#if:{{{london_borough1|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough1}}} |retrieve=borough}}}}|{{#if:{{{london_borough2|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough2}}} |retrieve=borough}}}}|{{#if:{{{london_borough3|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough3}}} |retrieve=borough}}}}|{{#if:{{{london_borough4|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough4}}} |retrieve=borough}}}}}} | rowclass27 = mergedrow | label27 = [[Districts of England|Metropolitan&nbsp;borough]] | data27 = {{Unbulleted list|{{{metropolitan_borough|}}}|{{{metropolitan_borough1|}}}|{{{metropolitan_borough2|}}}|{{{metropolitan_borough3|}}}}} | rowclass28 = mergedrow | label28 = [[Districts of England|District]] | data28 = {{Unbulleted list|{{{shire_district|}}}|{{{shire_district1|}}}|{{{shire_district2|}}}|{{{shire_district3|}}}}} | rowclass29 = mergedrow | label29 = [[Districts of England|Unitary&nbsp;authority]] | data29 = {{Unbulleted list|{{{unitary_england|}}}|{{{unitary_england1|}}}|{{{unitary_england2|}}}|{{{unitary_england3|}}}}} | rowclass30 = mergedrow | label30 = [[Subdivisions of Scotland|Council&nbsp;area]] | data30 = {{Unbulleted list|{{{unitary_scotland|}}}|{{{unitary_scotland1|}}}|{{{unitary_scotland2|}}}|{{{unitary_scotland3|}}}}} | rowclass31 = mergedrow | label31 = [[Local government in Northern Ireland|District]] | data31 = {{Unbulleted list|{{{unitary_northern_ireland|}}}|{{{unitary_northern_ireland1|}}}|{{{unitary_northern_ireland2|}}}|{{{unitary_northern_ireland3|}}}}} | rowclass32 = mergedrow | label32 = [[Captain of the Parish|Parish]] | data32 = {{{manx_parish|}}}<!-- ***** County (level 3) *****--> | rowclass33 = mergedrow | label33 = [[Preserved counties of Wales|Preserved&nbsp;county]] | data33 = {{Unbulleted list|{{{lieutenancy_wales|}}}|{{{lieutenancy_wales1|}}}|{{{lieutenancy_wales2|}}}|{{{lieutenancy_wales3|}}}}} | rowclass34 = mergedrow | label34 = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough1}}} |retrieve=countyhead}} | data34 ={{#if:{{{london_borough|}}}| [[Greater London]] }} | rowclass35 = mergedrow | label35 = [[Metropolitan and non-metropolitan counties of England|Shire&nbsp;county]] | data35 = {{Unbulleted list|{{{shire_county|}}}|{{{shire_county1|}}}|{{{shire_county2|}}}|{{{shire_county3|}}}}} | rowclass36 = mergedrow | label36 =[[Metropolitan and non-metropolitan counties of England|Metropolitan&nbsp;county]] | data36 = {{Unbulleted list|{{{metropolitan_county|}}}|{{{metropolitan_county1|}}}|{{{metropolitan_county2|}}}|{{{metropolitan_county3|}}}}} | rowclass37 = mergedrow | label37 = [[Ceremonial counties of England|Ceremonial&nbsp;county]] | data37 = {{Unbulleted list|{{{lieutenancy_england|}}}|{{{lieutenancy_england1|}}}|{{{lieutenancy_england2|}}}|{{{lieutenancy_england3|}}}}} | rowclass38 = mergedrow | label38 =[[Lieutenancy areas of Scotland|Lieutenancy&nbsp;area]] | data38 = {{Unbulleted list|{{{lieutenancy_scotland|}}}|{{{lieutenancy_scotland1|}}}|{{{lieutenancy_scotland2|}}}|{{{lieutenancy_scotland3|}}}}} | rowclass39 = mergedrow | label39 = [[Counties of Northern Ireland|County]] | data39 = {{Unbulleted list|{{{lieutenancy_northern_ireland|}}}|{{{lieutenancy_northern_ireland1|}}}|{{{lieutenancy_northern_ireland2|}}}}} | rowclass40 = mergedrow | label40 = [[Local government in the Isle of Man|Sheading]] | data40 = {{{manx_sheading|{{{manx_shedding|}}}}}}<!-- ***** Regional (level 2) *****--> | rowclass41 = mergedrow | label41 = [[Regions of England|Region]] | data41 = {{Unbulleted list|{{Infobox UK place/local |level1=England |level2={{{region}}} |retrieve=region}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |retrieve=region}}}}<!-- ***** Country (level 1) *****--> | rowclass42 = mergedrow adr | label42 = [[Countries of the United Kingdom|Country]] | data42 = {{#if:{{{country|}}}|<span class="country-name">{{Auto link|{{{country}}}}}</span>}}{{#if:{{{country1|}}}|<br/>{{Auto link|{{{country1|}}}}}}} | rowclass43 = mergedrow adr | label43 = [[Crown dependency|Crown&nbsp;dependency]] | data43 = {{Auto link|{{{crown_dependency|}}}}} | rowclass44 = mergedrow | label44 = [[List of sovereign states|Sovereign&nbsp;state]] | data44 = {{#if:{{{country|}}}|United Kingdom}}<!-- ***** Places in location *****--> | rowclass46 = mergedtoprow | label46 = {{#if:{{{parts_type|}}}|{{{parts_type}}}|Places}} | data46 = {{#if:{{{parts|}}}{{{p1|}}} |{{#ifeq:{{{parts_style|}}}|para |<b>{{{parts|}}}{{#if:{{both|{{{parts|}}}|{{{p1|}}}}}|&#58;&nbsp;|}}</b>{{comma separated entries|{{{p1|}}}|{{{p2|}}}|{{{p3|}}}|{{{p4|}}}|{{{p5|}}}|{{{p6|}}}|{{{p7|}}}|{{{p8|}}}|{{{p9|}}}|{{{p10|}}}|{{{p11|}}}|{{{p12|}}}|{{{p13|}}}|{{{p14|}}}|{{{p15|}}}|{{{p16|}}}|{{{p17|}}}|{{{p18|}}}|{{{p19|}}}|{{{p20|}}}|{{{p21|}}}|{{{p22|}}}|{{{p23|}}}|{{{p24|}}}|{{{p25|}}}|{{{p26|}}}|{{{p27|}}}|{{{p28|}}}|{{{p29|}}}|{{{p30|}}}|{{{p31|}}}|{{{p32|}}}|{{{p33|}}}|{{{p34|}}}|{{{p35|}}}|{{{p36|}}}|{{{p37|}}}|{{{p38|}}}|{{{p39|}}}|{{{p40|}}}|{{{p41|}}}|{{{p42|}}}|{{{p43|}}}|{{{p44|}}}|{{{p45|}}}|{{{p46|}}}|{{{p47|}}}|{{{p48|}}}|{{{p49|}}}|{{{p50|}}}}} |{{#if:{{{p1|}}}|{{Collapsible list|title={{{parts|}}}|expand={{#switch:{{{parts_style|}}}|coll=|list=y|{{#if:{{{p6|}}}||y}}}}|1={{{p1|}}}|2={{{p2|}}}|3={{{p3|}}}|4={{{p4|}}}|5={{{p5|}}}|6={{{p6|}}}|7={{{p7|}}}|8={{{p8|}}}|9={{{p9|}}}|10={{{p10|}}}|11={{{p11|}}}|12={{{p12|}}}|13={{{p13|}}}|14={{{p14|}}}|15={{{p15|}}}|16={{{p16|}}}|17={{{p17|}}}|18={{{p18|}}}|19={{{p19|}}}|20={{{p20|}}}|21={{{p21|}}}|22={{{p22|}}}|23={{{p23|}}}|24={{{p24|}}}|25={{{p25|}}}|26={{{p26|}}}|27={{{p27|}}}|28={{{p28|}}}|29={{{p29|}}}|30={{{p30|}}}|31={{{p31|}}}|32={{{p32|}}}|33={{{p33|}}}|34={{{p34|}}}|35={{{p35|}}}|36={{{p36|}}}|37={{{p37|}}}|38={{{p38|}}}|39={{{p39|}}}|40={{{p40|}}}|41={{{p41|}}}|42={{{p42|}}}|43={{{p43|}}}|44={{{p44|}}}|45={{{p45|}}}|46={{{p46|}}}|47={{{p47|}}}|48={{{p48|}}}|49={{{p49|}}}|50={{{p50|}}}}} |{{{parts}}} }} }} }}<!-- ***** Post town/s *****--> | rowclass47 = mergedtoprow | label47 = [[Post town]] | data47 = {{#if:{{{post_town|}}}|{{#ifeq:{{lc:{{{post_town}}}}}|london|[[London postal district|London]]|{{{post_town}}}}}|{{Infobox UK place/NoPostCode}}}} | rowclass48 = mergedrow | label48 = [[Postcodes in the United Kingdom|Postcode&nbsp;district]] | data48 = {{#if:{{{postcode_area|}}}|[[{{{postcode_area}}} postcode area|{{#if:{{{postcode_district|}}}|{{{postcode_district}}}|{{{postcode_area}}}}}]]|{{Infobox UK place/NoPostCode}}}}<!-- ***** Post town 1 ***** --> | rowclass49 = mergedrow | label49 = Post&nbsp;town | data49 = {{#ifeq:{{lc:{{{post_town1}}}}}|london|[[London postal district|London]]|{{{post_town1|}}}}} | rowclass50 = mergedrow | label50 = Postcode&nbsp;district | data50 = {{#if:{{{postcode_area1|}}}|[[{{{postcode_area1}}} postcode area|{{{postcode_district1}}}]]}}<!-- ***** Post town 2 ***** --> | rowclass51 = mergedrow | label51 = Post&nbsp;town | data51 = {{#ifeq:{{lc:{{{post_town2}}}}}|london|[[London postal district|London]]|{{{post_town2|}}}}} | rowclass52 = mergedrow | label52 = Postcode&nbsp;district | data52 = {{#if:{{{postcode_area2|}}}|[[{{{postcode_area2}}} postcode area|{{{postcode_district2}}}]]}}<!-- ***** Dialling code/s ***** --> | rowclass53 = mergedrow | label53 = [[Telephone numbers in the United Kingdom|Dialling&nbsp;code]] | data53 = {{#if:{{{dial_code|}}}|{{#switch:{{{dial_code}}}|0203|0207|0208|020 3|020 7|020 8|020=[[020]] |02380|02392|023 80|023 92|023=023 |02476|024 76=024 |{{{dial_code}}}={{{dial_code}}}}} | {{Infobox UK place/NoDialCode}}}}{{#if:{{{dial_code1|}}}|<br/>{{{dial_code1}}}}}{{#if:{{{dial_code2|}}}|<br/>{{{dial_code2}}}}}<!-- ***** ISO code *****--> | rowclass54 = mergedrow | label54 = [[ISO 3166|ISO&nbsp;3166]]&nbsp;code | data54 = {{#if:{{{iso_code|}}}|{{{iso_code}}}|<!--{{Infobox UK place/NoISOCode}}-->}}<!-- ***** Emergency services ***** --> | rowclass55 = mergedtoprow | data55 = {{#if:{{{hide_services|}}}|<!--(then omit the following) -->|{{Infobox| child=yes | <!-- ***** Police *****--> | rowclass1 = mergedrow | label1 = [[List of law enforcement agencies in the United Kingdom, Crown Dependencies and British Overseas Territories|Police]] | data1 = {{#switch:{{{country}}} | England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=police}} | Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |retrieve=police}} | Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |retrieve=police}} | Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=police}} | #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=police}} |&nbsp;}} }} | rowclass2 = mergedrow | label2 = &nbsp; | data2 ={{Unbulleted list|{{#if:{{{shire_county3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{shire_county3}}} |retrieve=police}}}}|{{#if:{{{metropolitan_county3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{metropolitan_county3}}} |retrieve=police}}}}|{{#if:{{{unitary_england3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{unitary_england3}}} |retrieve=police}}}}|{{#if:{{{unitary_scotland3|}}}|{{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland3}}} |retrieve=police}}}}|{{#if:{{{unitary_wales3|}}}|{{Infobox UK place/local |level1=Wales |level2={{{unitary_wales3}}} |retrieve=police}}}}}} <!-- ***** Fire *****--> | rowclass3 = mergedrow | label3 = [[Fire services in the United Kingdom|Fire]] | data3 = {{#switch:{{{country}}} | England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=fire}} | Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |retrieve=fire}} | Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |retrieve=fire}} | Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=fire}} | #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=fire}} |&nbsp;}} }} | rowclass4 = mergedrow | label4 = &nbsp; | data4 = {{Unbulleted list|{{#if:{{{shire_county3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{shire_county3}}} |retrieve=fire}}}}|{{#if:{{{metropolitan_county3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{metropolitan_county3}}} |retrieve=fire}}}}|{{#if:{{{unitary_england3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{unitary_england3}}} |retrieve=fire}}}}|{{#if:{{{unitary_scotland3|}}}|{{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland3}}} |retrieve=fire}}}}|{{#if:{{{unitary_wales3|}}}|{{Infobox UK place/local |level1=Wales |level2={{{unitary_wales3}}} |retrieve=fire}}}}}} | rowclass5 = mergedrow | label5 = {{#if:{{{country|}}} |[[Emergency medical services in the United Kingdom|Ambulance]] |Ambulance}} | data5 = {{#switch:{{{country}}} | England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |ambulance={{{ambulance_service}}} |official_name={{#if:{{{official_name|}}}|{{{official_name}}}|{{PAGENAMEBASE}}}} |postcode={{{postcode_district}}} |retrieve=ambulance}} | Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |retrieve=ambulance}} | Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |retrieve=ambulance}} | Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=ambulance}} | #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=ambulance}} |&nbsp;}} }} | rowclass6 = mergedrow | label6 = &nbsp; | data6 = {{#if:{{{region1|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{#if:{{{london_borough3|}}}|Greater London |{{#if:{{{metropolitan_county3|}}}|{{{metropolitan_county3}}} |{{#if:{{{shire_county3|}}}|{{{shire_county3}}} |{{#if:{{{lieutenancy_england3|}}}|{{{lieutenancy_england3}}} |{{{unitary_england3}}} }} }} }} }} |level4={{#if:{{{london_borough3|}}}|{{{london_borough3}}} |{{#if:{{{metropolitan_county3|}}}|{{{metropolitan_borough3}}} |{{#if:{{{shire_county3|}}}|{{{shire_district3}}} |{{{unitary_england3}}} }} }} }} |ambulance={{{ambulance_service1}}} |postcode={{{postcode_district}}} |retrieve=ambulance}}}} }} }}<!-- ***** Constituencies ***** ***** UK Parliament *****--> | rowclass56 = mergedtoprow | label56 = [[Constituencies of the Parliament of the United Kingdom|UK&nbsp;Parliament]] | data56 = {{Unbulleted list|{{{constituency_westminster|}}}|{{{constituency_westminster1|}}}|{{{constituency_westminster2|}}}|{{{constituency_westminster3|}}}|{{{constituency_westminster4|}}}|{{{constituency_westminster5|}}}|{{{constituency_westminster6|}}}|{{{constituency_westminster7|}}}|{{{constituency_westminster8|}}}}}<!-- ***** Scottish Parliament *****--> | rowclass57 = mergedrow | label57 = [[Scottish Parliament constituencies and electoral regions|Scottish&nbsp;Parliament]] | data57 = {{Unbulleted list|{{{constituency_scottish_parliament|}}}|{{{constituency_scottish_parliament1|}}}|{{{constituency_scottish_parliament2|}}}|{{{constituency_scottish_parliament3|}}}|{{{constituency_scottish_parliament4|}}}|{{{constituency_scottish_parliament5|}}}|{{{constituency_scottish_parliament6|}}}|{{{constituency_scottish_parliament7|}}}|{{{constituency_scottish_parliament8|}}}|{{{constituency_scottish_parliament9|}}}|{{{constituency_scottish_parliament10|}}}}}<!-- ***** London Assembly ***** --> | rowclass58 = mergedrow | label58 = [[List of London Assembly constituencies|London&nbsp;Assembly]] | data58 = {{Unbulleted list|{{#if:{{{london_borough|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough}}} |retrieve=assembly}}}}|{{#if:{{{london_borough1|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough1}}} |level4={{{london_borough1}}} |retrieve=assembly}}}}|{{#if:{{{london_borough2|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough2}}} |level4={{{london_borough2}}} |retrieve=assembly}}}}}}<!-- ***** Welsh Assembly *****--> | rowclass59 = mergedrow | label59 = [[Senedd constituencies and electoral regions|Senedd Cymru – Welsh Parliament]] | data59 = {{Unbulleted list|{{{constituency_welsh_assembly|}}}|{{{constituency_welsh_assembly1|}}}|{{{constituency_welsh_assembly2|}}}}}<!-- ***** Isle of Man (House of Keys) *****--> | rowclass60 = mergedrow | label60 = [[House of Keys constituencies|House&nbsp;of&nbsp;Keys]] | data60 = {{{constituency_manx_parliament|}}}<!-- ***** Northern Ireland Assembly ***** --> | rowclass61 = mergedrow | label61 = [[List of parliamentary constituencies in Northern Ireland|NI&nbsp;Assembly]] | data61 = {{Unbulleted list|{{{constituency_ni_assembly|}}}|{{{constituency_ni_assembly1|}}}|{{{constituency_ni_assembly2|}}}|{{{constituency_ni_assembly3|}}}}}<!-- ******Councillors (merged from {{infobox UK ward}}****** --> | rowclass62 = mergedrow | label62 = Councillors | data62 = {{{councillors|}}} | rowclass63 = mergedrow | label63 = Councillors | data63 = {{Unbulleted list|{{{councillor1|}}}{{#if:{{{party1|}}}|&#x20;({{{party1|}}})}}|{{{councillor2|}}}{{#if:{{{party2|}}}|&#x20;({{{party2|}}})}}|{{{councillor3|}}}{{#if:{{{party3|}}}|&#x20;({{{party3|}}})}}|{{{councillor4|}}}{{#if:{{{party4|}}}|&#x20;({{{party4|}}})}}|{{{councillor5|}}}{{#if:{{{party5|}}}|&#x20;({{{party5|}}})}}}}<!-- ***** Website *****--> | rowclass64 = mergedtoprow | label64 = Website | data64 = {{{website|}}} | data70 = {{{embedded|}}}<!-- ***** Footer *****--> | belowclass = noprint nowrap | below = {{startflatlist}} ; {{nobold|List of places}} {{#switch:{{{country}}} | England = : [[List of United Kingdom locations|UK]] : [[List of places in England|England]] : {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|Greater London |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=footer}} | Scotland = : [[List of United Kingdom locations|UK]] : [[List of places in Scotland|Scotland]] : {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |retrieve=footer}} | Wales = : [[List of United Kingdom locations|UK]] : [[List of places in Wales|Wales]] : {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=footer}} | Northern Ireland = : [[List of United Kingdom locations|UK]] : [[List of places in Northern Ireland|Northern Ireland]] : {{Infobox UK place/local |level1=Northern Ireland |level2={{{lieutenancy_northern_ireland}}} |retrieve=footer}} | #default = : {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=footer}} |[[List of United Kingdom locations|United Kingdom]]}} }}{{endflatlist}}<!-- ***** Co-ordinates for top of page ***** --> {{#if:{{{coordinates|}}}|{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|region:{{#ifeq:{{{crown_dependency|}}}|Isle of Man|IM|GB}}|type:city{{#iferror:{{#expr:{{formatnum:{{{population}}}|R}}*1}}||({{formatnum:{{{population}}}|R}})}}}} |}} }}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox UK place with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox UK place]] with unknown parameter "_VALUE_"|ignoreblank=y| ambulance_service | ambulance_service1 | area_footnotes | area_total_km2 | area_total_sq_mi | belfast_direction | belfast_distance | belfast_distance_km | belfast_distance_mi | cardiff_direction | cardiff_distance | cardiff_distance_km | cardiff_distance_mi | charingX_direction | charingX_distance | charingX_distance_km | charingX_distance_mi | civil_parish | civil_parish1 | civil_parish2 | community_scotland | community_scotland1 | community_scotland2 | community_scotland3 | community_wales | community_wales1 | community_wales2 | community_wales3 | constituency_manx_parliament | constituency_ni_assembly | constituency_ni_assembly1 | constituency_ni_assembly2 | constituency_ni_assembly3 | constituency_scottish_parliament | constituency_scottish_parliament1 | constituency_scottish_parliament10 | constituency_scottish_parliament2 | constituency_scottish_parliament3 | constituency_scottish_parliament4 | constituency_scottish_parliament5 | constituency_scottish_parliament6 | constituency_scottish_parliament7 | constituency_scottish_parliament8 | constituency_scottish_parliament9 | constituency_welsh_assembly | constituency_welsh_assembly1 | constituency_welsh_assembly2 | constituency_westminster | constituency_westminster1 | constituency_westminster2 | constituency_westminster3 | constituency_westminster4 | constituency_westminster5 | constituency_westminster6 | constituency_westminster7 | constituency_westminster8 | coordinates | cornish_name | councillor1 | councillor2 | councillor3 | councillor4 | councillor5 | councillors | country | country1 | crown_dependency | dial_code | dial_code1 | dial_code2 | douglas_direction | douglas_distance | douglas_distance_km | douglas_distance_mi | dublin_direction | dublin_distance | dublin_distance_km | dublin_distance_mi | edinburgh_direction | edinburgh_distance | edinburgh_distance_km | edinburgh_distance_mi | embedded | gaelic_name | hide_services | irish_grid_reference | irish_grid_reference_note | irish_name | iso_code | label_position | language | language1 | language2 | lieutenancy_england | lieutenancy_england1 | lieutenancy_england2 | lieutenancy_england3 | lieutenancy_northern_ireland | lieutenancy_northern_ireland1 | lieutenancy_northern_ireland2 | lieutenancy_scotland | lieutenancy_scotland1 | lieutenancy_scotland2 | lieutenancy_scotland3 | lieutenancy_wales | lieutenancy_wales1 | lieutenancy_wales2 | lieutenancy_wales3 | local_name | london_borough | london_borough1 | london_borough2 | london_borough3 | london_borough4 | london_direction | london_distance | london_distance_km | london_distance_mi | manx_name | manx_parish | manx_sheading | manx_shedding | map_alt | map_relief | map_type | metropolitan_borough | metropolitan_borough1 | metropolitan_borough2 | metropolitan_borough3 | metropolitan_county | metropolitan_county1 | metropolitan_county2 | metropolitan_county3 | official_name | os_grid_reference | os_grid_reference_note | other_language | other_language_name | p1 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p2 | p20 | p21 | p22 | p23 | p24 | p25 | p26 | p27 | p28 | p29 | p3 | p30 | p31 | p32 | p33 | p34 | p35 | p36 | p37 | p38 | p39 | p4 | p40 | p41 | p42 | p43 | p44 | p45 | p46 | p47 | p48 | p49 | p5 | p50 | p6 | p7 | p8 | p9 | parts | parts_style | parts_type | party1 | party2 | party3 | party4 | party5 | population | population_demonym | population_density | population_ref | post_town | post_town1 | post_town2 | postcode_area | postcode_area1 | postcode_area2 | postcode_district | postcode_district1 | postcode_district2 | pushpin_map | region | region1 | scale | scots_name | shire_county | shire_county1 | shire_county2 | shire_county3 | shire_district | shire_district1 | shire_district2 | shire_district3 | static_image | static_image_2 | static_image_2_alt | static_image_2_caption | static_image_2_name | static_image_2_width | static_image_alt | static_image_caption | static_image_name | static_image_width | statistic | statistic_title | statistic_title1 | statistic_title2 | statistic1 | statistic2 | type | unitary_england | unitary_england1 | unitary_england2 | unitary_england3 | unitary_northern_ireland | unitary_northern_ireland1 | unitary_northern_ireland2 | unitary_northern_ireland3 | unitary_scotland | unitary_scotland1 | unitary_scotland2 | unitary_scotland3 | unitary_wales | unitary_wales1 | unitary_wales2 | unitary_wales3 | website | welsh_name |pushpin_map_caption }}<noinclude> {{Documentation}} </noinclude> 035645493d54c93d57151831d79c27725c9b6d21 Module:Navbox 828 106 259 2023-05-28T13:26:56Z Uzume 8 strict Scribunto text/plain require('strict') local p = {} local navbar = require('Module:Navbar')._navbar local cfg = mw.loadData('Module:Navbox/configuration') local getArgs -- lazily initialized local args local format = string.format local function striped(wikitext, border) -- Return wikitext with markers replaced for odd/even striping. -- Child (subgroup) navboxes are flagged with a category that is removed -- by parent navboxes. The result is that the category shows all pages -- where a child navbox is not contained in a parent navbox. local orphanCat = cfg.category.orphan if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then -- No change; striping occurs in outermost navbox. return wikitext .. orphanCat end local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part if args[cfg.arg.evenodd] then if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then first, second = second, first else first = args[cfg.arg.evenodd] second = first end end local changer if first == second then changer = first else local index = 0 changer = function (code) if code == '0' then -- Current occurrence is for a group before a nested table. -- Set it to first as a valid although pointless class. -- The next occurrence will be the first row after a title -- in a subgroup and will also be first. index = 0 return first end index = index + 1 return index % 2 == 1 and first or second end end local regex = orphanCat:gsub('([%[%]])', '%%%1') return (wikitext:gsub(regex, ''):gsub(cfg.marker.regex, changer)) -- () omits gsub count end local function processItem(item, nowrapitems) if item:sub(1, 2) == '{|' then -- Applying nowrap to lines in a table does not make sense. -- Add newlines to compensate for trim of x in |parm=x in a template. return '\n' .. item ..'\n' end if nowrapitems == cfg.keyword.nowrapitems_yes then local lines = {} for line in (item .. '\n'):gmatch('([^\n]*)\n') do local prefix, content = line:match('^([*:;#]+)%s*(.*)') if prefix and not content:match(cfg.pattern.nowrap) then line = format(cfg.nowrap_item, prefix, content) end table.insert(lines, line) end item = table.concat(lines, '\n') end if item:match('^[*:;#]') then return '\n' .. item ..'\n' end return item end local function has_navbar() return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain and ( args[cfg.arg.name] or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, '') ~= cfg.pattern.navbox ) end local function renderNavBar(titleCell) if has_navbar() then titleCell:wikitext(navbar{ [cfg.navbar.name] = args[cfg.arg.name], [cfg.navbar.mini] = 1, [cfg.navbar.fontstyle] = (args[cfg.arg.basestyle] or '') .. ';' .. (args[cfg.arg.titlestyle] or '') .. ';background:none transparent;border:none;box-shadow:none;padding:0;' }) end end local function renderTitleRow(tbl) if not args[cfg.arg.title] then return end local titleRow = tbl:tag('tr') local titleCell = titleRow:tag('th'):attr('scope', 'col') local titleColspan = 2 if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end if args[cfg.arg.image] then titleColspan = titleColspan + 1 end titleCell :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.titlestyle]) :addClass(cfg.class.navbox_title) :attr('colspan', titleColspan) renderNavBar(titleCell) titleCell :tag('div') -- id for aria-labelledby attribute :attr('id', mw.uri.anchorEncode(args[cfg.arg.title])) :addClass(args[cfg.arg.titleclass]) :css('font-size', '114%') :css('margin', '0 4em') :wikitext(processItem(args[cfg.arg.title])) end local function getAboveBelowColspan() local ret = 2 if args[cfg.arg.imageleft] then ret = ret + 1 end if args[cfg.arg.image] then ret = ret + 1 end return ret end local function renderAboveRow(tbl) if not args[cfg.arg.above] then return end tbl:tag('tr') :tag('td') :addClass(cfg.class.navbox_abovebelow) :addClass(args[cfg.arg.aboveclass]) :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.abovestyle]) :attr('colspan', getAboveBelowColspan()) :tag('div') -- id for aria-labelledby attribute, if no title :attr('id', (not args[cfg.arg.title]) and mw.uri.anchorEncode(args[cfg.arg.above]) or nil) :wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems])) end local function renderBelowRow(tbl) if not args[cfg.arg.below] then return end tbl:tag('tr') :tag('td') :addClass(cfg.class.navbox_abovebelow) :addClass(args[cfg.arg.belowclass]) :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.belowstyle]) :attr('colspan', getAboveBelowColspan()) :tag('div') :wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems])) end local function renderListRow(tbl, index, listnum, listnums_size) local row = tbl:tag('tr') if index == 1 and args[cfg.arg.imageleft] then row :tag('td') :addClass(cfg.class.noviewer) :addClass(cfg.class.navbox_image) :addClass(args[cfg.arg.imageclass]) :css('width', '1px') -- Minimize width :css('padding', '0 2px 0 0') :cssText(args[cfg.arg.imageleftstyle]) :attr('rowspan', listnums_size) :tag('div') :wikitext(processItem(args[cfg.arg.imageleft])) end local group_and_num = format(cfg.arg.group_and_num, listnum) local groupstyle_and_num = format(cfg.arg.groupstyle_and_num, listnum) if args[group_and_num] then local groupCell = row:tag('th') -- id for aria-labelledby attribute, if lone group with no title or above if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then groupCell :attr('id', mw.uri.anchorEncode(args[cfg.arg.group1])) end groupCell :attr('scope', 'row') :addClass(cfg.class.navbox_group) :addClass(args[cfg.arg.groupclass]) :cssText(args[cfg.arg.basestyle]) -- If groupwidth not specified, minimize width :css('width', args[cfg.arg.groupwidth] or '1%') groupCell :cssText(args[cfg.arg.groupstyle]) :cssText(args[groupstyle_and_num]) :wikitext(args[group_and_num]) end local listCell = row:tag('td') if args[group_and_num] then listCell :addClass(cfg.class.navbox_list_with_group) else listCell:attr('colspan', 2) end if not args[cfg.arg.groupwidth] then listCell:css('width', '100%') end local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing if index % 2 == 1 then rowstyle = args[cfg.arg.oddstyle] else rowstyle = args[cfg.arg.evenstyle] end local list_and_num = format(cfg.arg.list_and_num, listnum) local listText = args[list_and_num] local oddEven = cfg.marker.oddeven if listText:sub(1, 12) == '</div><table' then -- Assume list text is for a subgroup navbox so no automatic striping for this row. oddEven = listText:find(cfg.pattern.navbox_title) and cfg.marker.restart or cfg.class.navbox_odd_part end local liststyle_and_num = format(cfg.arg.liststyle_and_num, listnum) local listclass_and_num = format(cfg.arg.listclass_and_num, listnum) listCell :css('padding', '0') :cssText(args[cfg.arg.liststyle]) :cssText(rowstyle) :cssText(args[liststyle_and_num]) :addClass(cfg.class.navbox_list) :addClass(cfg.class.navbox_part .. oddEven) :addClass(args[cfg.arg.listclass]) :addClass(args[listclass_and_num]) :tag('div') :css('padding', (index == 1 and args[cfg.arg.list1padding]) or args[cfg.arg.listpadding] or '0 0.25em' ) :wikitext(processItem(listText, args[cfg.arg.nowrapitems])) if index == 1 and args[cfg.arg.image] then row :tag('td') :addClass(cfg.class.noviewer) :addClass(cfg.class.navbox_image) :addClass(args[cfg.arg.imageclass]) :css('width', '1px') -- Minimize width :css('padding', '0 0 0 2px') :cssText(args[cfg.arg.imagestyle]) :attr('rowspan', listnums_size) :tag('div') :wikitext(processItem(args[cfg.arg.image])) end end local function has_list_class(htmlclass) local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } for arg, _ in pairs(args) do if type(arg) == 'string' and mw.ustring.find(arg, cfg.pattern.class) then for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then return true end end end end return false end -- there are a lot of list classes in the wild, so we add their TemplateStyles local function add_list_styles() local frame = mw.getCurrentFrame() local function add_list_templatestyles(htmlclass, templatestyles) if has_list_class(htmlclass) then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local hlist_styles = add_list_templatestyles('hlist', cfg.hlist_templatestyles) local plainlist_styles = add_list_templatestyles('plainlist', cfg.plainlist_templatestyles) -- a second workaround for [[phab:T303378]] -- when that issue is fixed, we can actually use has_navbar not to emit the -- tag here if we want if has_navbar() and hlist_styles == '' then hlist_styles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.hlist_templatestyles } } end -- hlist -> plainlist is best-effort to preserve old Common.css ordering. -- this ordering is not a guarantee because most navboxes will emit only -- one of these classes [hlist_note] return hlist_styles .. plainlist_styles end local function needsHorizontalLists(border) if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then return false end return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist) end local function hasBackgroundColors() for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle, cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do if tostring(args[key]):find('background', 1, true) then return true end end return false end local function hasBorders() for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do if tostring(args[key]):find('border', 1, true) then return true end end return false end local function isIllegible() local styleratio = require('Module:Color contrast')._styleratio for key, style in pairs(args) do if tostring(key):match(cfg.pattern.style) then if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then return true end end end return false end local function getTrackingCategories(border) local cats = {} if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end if isIllegible() then table.insert(cats, cfg.category.illegible) end if hasBorders() then table.insert(cats, cfg.category.borders) end return cats end local function renderTrackingCategories(builder, border) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 then return end -- not in template space local subpage = title.subpageText if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox or subpage == cfg.keyword.subpage_testcases then return end for _, cat in ipairs(getTrackingCategories(border)) do builder:wikitext('[[Category:' .. cat .. ']]') end end local function renderMainTable(border, listnums) local tbl = mw.html.create('table') :addClass(cfg.class.nowraplinks) :addClass(args[cfg.arg.bodyclass]) local state = args[cfg.arg.state] if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then if state == cfg.keyword.state_collapsed then state = cfg.class.collapsed end tbl :addClass(cfg.class.collapsible) :addClass(state or cfg.class.autocollapse) end tbl:css('border-spacing', 0) if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then tbl :addClass(cfg.class.navbox_subgroup) :cssText(args[cfg.arg.bodystyle]) :cssText(args[cfg.arg.style]) else -- regular navbox - bodystyle and style will be applied to the wrapper table tbl :addClass(cfg.class.navbox_inner) :css('background', 'transparent') :css('color', 'inherit') end tbl:cssText(args[cfg.arg.innerstyle]) renderTitleRow(tbl) renderAboveRow(tbl) local listnums_size = #listnums for i, listnum in ipairs(listnums) do renderListRow(tbl, i, listnum, listnums_size) end renderBelowRow(tbl) return tbl end local function add_navbox_styles(hiding_templatestyles) local frame = mw.getCurrentFrame() -- This is a lambda so that it doesn't need the frame as a parameter local function add_user_styles(templatestyles) if templatestyles and templatestyles ~= '' then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } end return '' end -- get templatestyles. load base from config so that Lua only needs to do -- the work once of parser tag expansion local base_templatestyles = cfg.templatestyles local templatestyles = add_user_styles(args[cfg.arg.templatestyles]) local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles]) -- The 'navbox-styles' div exists to wrap the styles to work around T200206 -- more elegantly. Instead of combinatorial rules, this ends up being linear -- number of CSS rules. return mw.html.create('div') :addClass(cfg.class.navbox_styles) :wikitext( add_list_styles() .. -- see [hlist_note] applied to 'before base_templatestyles' base_templatestyles .. templatestyles .. child_templatestyles .. table.concat(hiding_templatestyles) ) :done() end -- work around [[phab:T303378]] -- for each arg: find all the templatestyles strip markers, insert them into a -- table. then remove all templatestyles markers from the arg local function move_hiding_templatestyles(args) local gfind = string.gfind local gsub = string.gsub local templatestyles_markers = {} local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)' for k, arg in pairs(args) do for marker in gfind(arg, strip_marker_pattern) do table.insert(templatestyles_markers, marker) end args[k] = gsub(arg, strip_marker_pattern, '') end return templatestyles_markers end function p._navbox(navboxArgs) args = navboxArgs local hiding_templatestyles = move_hiding_templatestyles(args) local listnums = {} for k, _ in pairs(args) do if type(k) == 'string' then local listnum = k:match(cfg.pattern.listnum) if listnum then table.insert(listnums, tonumber(listnum)) end end end table.sort(listnums) local border = mw.text.trim(args[cfg.arg.border] or args[1] or '') if border == cfg.keyword.border_child then border = cfg.keyword.border_subgroup end -- render the main body of the navbox local tbl = renderMainTable(border, listnums) local res = mw.html.create() -- render the appropriate wrapper for the navbox, based on the border param if border == cfg.keyword.border_none then res:node(add_navbox_styles(hiding_templatestyles)) local nav = res:tag('div') :attr('role', 'navigation') :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then nav:attr( 'aria-labelledby', mw.uri.anchorEncode( args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1] ) ) else nav:attr('aria-label', cfg.aria_label) end elseif border == cfg.keyword.border_subgroup then -- We assume that this navbox is being rendered in a list cell of a -- parent navbox, and is therefore inside a div with padding:0em 0.25em. -- We start with a </div> to avoid the padding being applied, and at the -- end add a <div> to balance out the parent's </div> res :wikitext('</div>') :node(tbl) :wikitext('<div>') else res:node(add_navbox_styles(hiding_templatestyles)) local nav = res:tag('div') :attr('role', 'navigation') :addClass(cfg.class.navbox) :addClass(args[cfg.arg.navboxclass]) :cssText(args[cfg.arg.bodystyle]) :cssText(args[cfg.arg.style]) :css('padding', '3px') :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then nav:attr( 'aria-labelledby', mw.uri.anchorEncode(args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]) ) else nav:attr('aria-label', cfg.aria_label) end end if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then renderTrackingCategories(res, border) end return striped(tostring(res), border) end function p.navbox(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end args = getArgs(frame, {wrappers = {cfg.pattern.navbox}}) -- Read the arguments in the order they'll be output in, to make references -- number in the right order. local _ _ = args[cfg.arg.title] _ = args[cfg.arg.above] -- Limit this to 20 as covering 'most' cases (that's a SWAG) and because -- iterator approach won't work here for i = 1, 20 do _ = args[format(cfg.arg.group_and_num, i)] _ = args[format(cfg.arg.list_and_num, i)] end _ = args[cfg.arg.below] return p._navbox(args) end return p 05be9a97c035ab3f0fac69423779e261949d473c Template:Infobox U.S. Cabinet/doc 10 1530 2865 2023-05-28T18:13:47Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} {{Lua|Module:Infobox cabinet members}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[</nowiki>[[Wikipedia:Wikidata]]<nowiki>]]) --> == Usage == Blank template with full parameters: <syntaxhighlight lang="wikitext" style="overflow:auto; max-width:40em">{{Infobox U.S. Cabinet |align = <!-- left, right, center, or none --> |Name = |image = |alt = |caption = |President = |President start = |President end = |Vice President = |Vice President start = |Vice President end = |Vice President 2 = |Vice President start 2 = |Vice President end 2 = |Vice President 3 = |Vice President start 3 = |Vice President end 3 = |Vice President 4 = |Vice President start 4 = |Vice President end 4 = |State = |State start = |State end = |State 2 = |State start 2 = |State end 2 = |State 3 = |State start 3 = |State end 3 = |State 4 = |State start 4 = |State end 4 = |Treasury = |Treasury start = |Treasury end = |Treasury 2 = |Treasury start 2 = |Treasury end 2 = |Treasury 3 = |Treasury start 3 = |Treasury end 3 = |Treasury 4 = |Treasury start 4 = |Treasury end 4 = |Treasury 5 = |Treasury start 5 = |Treasury end 5 = |War = |War start = |War end = |War 2 = |War start 2 = |War end 2 = |War 3 = |War start 3 = |War end 3 = |War 4 = |War start 4 = |War end 4 = |War 5 = |War start 5 = |War end 5 = |Defense = |Defense start = |Defense end = |Defense 2 = |Defense start 2 = |Defense end 2 = |Defense 3 = |Defense start 3 = |Defense end 3 = |Defense 4 = |Defense start 4 = |Defense end 4 = |Army = |Army start = |Army end = |Army 2 = |Army start 2 = |Army end 2 = |Air Force = |Air Force start = |Air Force end = |Justice = |Justice start = |Justice end = |Justice 2 = |Justice start 2 = |Justice end 2 = |Justice 3 = |Justice start 3 = |Justice end 3 = |Justice 4 = |Justice start 4 = |Justice end 4 = |Justice 5 = |Justice start 5 = |Justice end 5 = |Post = |Post start = |Post end = |Post 2 = |Post start 2 = |Post end 2 = |Post 3 = |Post start 3 = |Post end 3 = |Post 4 = |Post start 4 = |Post end 4 = |Post 5 = |Post 5 start = |Post 5 end = |Navy = |Navy start = |Navy end = |Navy 2 = |Navy start 2 = |Navy end 2 = |Navy 3 = |Navy start 3 = |Navy end 3 = |Navy 4 = |Navy start 4 = |Navy end 4 = |Navy 5 = |Navy start 5 = |Navy end 5 = |Navy 6 = |Navy start 6 = |Navy end 6 = |Interior = |Interior start = |Interior end = |Interior 2 = |Interior start 2 = |Interior end 2 = |Interior 3 = |Interior start 3 = |Interior end 3 = |Interior 4 = |Interior start 4 = |Interior end 4 = |Agriculture = |Agriculture start = |Agriculture end = |Agriculture 2 = |Agriculture start 2 = |Agriculture end 2 = |Agriculture 3 = |Agriculture start 3 = |Agriculture end 3 = |Agriculture 4 = |Agriculture start 4 = |Agriculture end 4 = |CommerceLabor = |CommerceLabor start = |CommerceLabor end = |CommerceLabor 2 = |CommerceLabor start 2 = |CommerceLabor end 2 = |CommerceLabor 3 = |CommerceLabor 3 start = |CommerceLabor 3 end = |CommerceLabor 4 = |CommerceLabor 4 start = |CommerceLabor 4 end = |Commerce = |Commerce start = |Commerce end = |Commerce 2 = |Commerce start 2 = |Commerce end 2 = |Commerce 3 = |Commerce start 3 = |Commerce end 3 = |Commerce 4 = |Commerce start 4 = |Commerce end 4 = |Labor = |Labor start = |Labor end = |Labor 2 = |Labor start 2 = |Labor end 2 = |Labor 3 = |Labor start 3 = |Labor end 3 = |Labor 4 = |Labor start 4 = |Labor end 4 = |Health, Education, and Welfare = |Health, Education, and Welfare start = |Health, Education, and Welfare end = |Health, Education, and Welfare 2 = |Health, Education, and Welfare start 2 = |Health, Education, and Welfare end 2 = |Health, Education, and Welfare 3 = |Health, Education, and Welfare start 3 = |Health, Education, and Welfare end 3 = |Health, Education, and Welfare 4 = |Health, Education, and Welfare start 4 = |Health, Education, and Welfare end 4 = |Health and Human Services = |Health and Human Services start = |Health and Human Services end = |Health and Human Services 2 = |Health and Human Services start 2 = |Health and Human Services end 2 = |Health and Human Services 3 = |Health and Human Services start 3 = |Health and Human Services end 3 = |Health and Human Services 4 = |Health and Human Services start 4 = |Health and Human Services end 4 = |Housing and Urban Development = |Housing and Urban Development start = |Housing and Urban Development end = |Housing and Urban Development 2 = |Housing and Urban Development start 2 = |Housing and Urban Development end 2 = |Housing and Urban Development 3 = |Housing and Urban Development start 3 = |Housing and Urban Development end 3 = |Housing and Urban Development 4 = |Housing and Urban Development start 4 = |Housing and Urban Development end 4 = |Transportation = |Transportation start = |Transportation end = |Transportation 2 = |Transportation start 2 = |Transportation end 2 = |Transportation 3 = |Transportation start 3 = |Transportation end 3 = |Transportation 4 = |Transportation start 4 = |Energy = |Energy start = |Energy end = |Energy 2 = |Energy start 2 = |Energy end 2 = |Energy 3 = |Energy start 3 = |Energy end 3 = |Energy 4 = |Energy start 4 = |Energy end 4 = |Education = |Education start = |Education end = |Education 2 = |Education start 2 = |Education end 2 = |Education 3 = |Education start 3 = |Education end 3 = |Education 4 = |Education start 4 = |Education end 4 = |Veterans Affairs = |Veterans Affairs start = |Veterans Affairs end = |Veterans Affairs 2 = |Veterans Affairs start 2 = |Veterans Affairs end 2 = |Veterans Affairs 3 = |Veterans Affairs start 3 = |Veterans Affairs end 3 = |Veterans Affairs 4 = |Veterans Affairs start 4 = |Veterans Affairs end 4 = |Homeland Security = |Homeland Security start = |Homeland Security end = |Homeland Security 2 = |Homeland Security start 2 = |Homeland Security end 2 = |Homeland Security 3 = |Homeland Security start 3 = |Homeland Security end 3 = |Homeland Security 4 = |Homeland Security start 4 = |Homeland Security end 4 = |Environmental Protection = |Environmental Protection start = |Environmental Protection end = |Environmental Protection 2 = |Environmental Protection start 2 = |Environmental Protection end 2 = |Environmental Protection 3 = |Environmental Protection start 3 = |Environmental Protection end 3 = |Environmental Protection 4 = |Environmental Protection start 4 = |Environmental Protection end 4 = |Bureau of the Budget = |Bureau of the Budget start = |Bureau of the Budget end = |Bureau of the Budget 2 = |Bureau of the Budget start 2 = |Bureau of the Budget end 2 = |Bureau of the Budget 3 = |Bureau of the Budget start 3 = |Bureau of the Budget end 3 = |Bureau of the Budget 4 = |Bureau of the Budget start 4 = |Bureau of the Budget end 4 = |Management and Budget = |Management and Budget start = |Management and Budget end = |Management and Budget 2 = |Management and Budget start 2 = |Management and Budget end 2 = |Management and Budget 3 = |Management and Budget start 3 = |Management and Budget end 3 = |Management and Budget 4 = |Management and Budget start 4 = |Management and Budget end 4 = |DCI = |DCI start = |DCI end = |DCI 2 = |DCI start 2 = |DCI end 2 = |DCI 3 = |DCI start 3 = |DCI end 3 = |DNI = |DNI start = |DNI end = |DNI 2 = |DNI start 2 = |DNI end 2 = |DNI 3 = |DNI start 3 = |DNI end 3 = |DNI 4 = |DNI start 4 = |DNI end 4 = |CIA = |CIA start = |CIA end = |CIA 2 = |CIA start 2 = |CIA end 2 = |CIA 3 = |CIA start 3 = |CIA end 3 = |CIA 4 = |CIA start 4 = |CIA end 4 = |Trade = |Trade start = |Trade end = |Trade 2 = |Trade start 2 = |Trade end 2 = |Trade 3 = |Trade start 3 = |Trade end 3 = |Trade 4 = |Trade start 4 = |Trade end 4 = |Ambassador to the United Nations = |Ambassador to the United Nations start = |Ambassador to the United Nations end = |Ambassador to the United Nations 2 = |Ambassador to the United Nations start 2 = |Ambassador to the United Nations end 2 = |Ambassador to the United Nations 3 = |Ambassador to the United Nations start 3 = |Ambassador to the United Nations end 3 = |Ambassador to the United Nations 4 = |Ambassador to the United Nations start 4 = |Ambassador to the United Nations end 4 = |Mutual Security Agency = |Mutual Security Agency start = |Mutual Security Agency end = |National Security = |National Security start = |National Security end = |National Security 2 = |National Security start 2 = |National Security end 2 = |National Security 3 = |National Security start 3 = |National Security end 3 = |National Security 4 = |National Security start 4 = |National Security end 4 = |Economic Advisers = |Economic Advisers start = |Economic Advisers end = |Economic Advisers 2 = |Economic Advisers start 2 = |Economic Advisers end 2 = |Economic Advisers 3 = |Economic Advisers start 3 = |Economic Advisers end 3 = |Economic Advisers 4 = |Economic Advisers start 4 = |Economic Advisers end 4 = |Administrator of the Small Business Administration = |Administrator of the Small Business Administration start = |Administrator of the Small Business Administration end = |Administrator of the Small Business Administration 2 = |Administrator of the Small Business Administration start 2 = |Administrator of the Small Business Administration end 2 = |Administrator of the Small Business Administration 3 = |Administrator of the Small Business Administration start 3 = |Administrator of the Small Business Administration end 3 = |Administrator of the Small Business Administration 4 = |Administrator of the Small Business Administration start 4 = |Administrator of the Small Business Administration end 4 = |Office of Defense Mobilization = |Office of Defense Mobilization start = |Office of Defense Mobilization end = |Office of Defense Mobilization 2 = |Office of Defense Mobilization start 2 = |Office of Defense Mobilization end 2 = |Federal Civil Defense Administration = |Federal Civil Defense Administration start = |Federal Civil Defense Administration end = |Federal Civil Defense Administration 2 = |Federal Civil Defense Administration start 2 = |Federal Civil Defense Administration end 2 = |Office of Civil and Defense Mobilization = |Office of Civil and Defense Mobilization start = |Office of Civil and Defense Mobilization end = |FEMA = |FEMA start = |FEMA end = |Atomic Energy Commission = |Atomic Energy Commission start = |Atomic Energy Commission end = |Atomic Energy Commission 2 = |Atomic Energy Commission start 2 = |Atomic Energy Commission end 2 = |Atomic Energy Commission 3 = |Atomic Energy Commission start 3 = |Atomic Energy Commission end 3 = |National Drug Control = |National Drug Control start = |National Drug Control end = |National Drug Control 2 = |National Drug Control start 2 = |National Drug Control end 2 = |National Drug Control 3 = |National Drug Control start 3 = |National Drug Control end 3 = |National Drug Control 4 = |National Drug Control start 4 = |National Drug Control end 4 = |Science and Technology Policy = |Science and Technology Policy start = |Science and Technology Policy end = |Science and Technology Policy 2 = |Science and Technology Policy start 2 = |Science and Technology Policy end 2 = |Science and Technology Policy 3 = |Science and Technology Policy start 3 = |Science and Technology Policy end 3 = |Science and Technology Policy 4 = |Science and Technology Policy start 4 = |Science and Technology Policy end 4 = |Chief of Staff = |Chief of Staff start = |Chief of Staff end = |Chief of Staff 2 = |Chief of Staff start 2 = |Chief of Staff end 2 = |Chief of Staff 3 = |Chief of Staff start 3 = |Chief of Staff end 3 = |Chief of Staff 4 = |Chief of Staff start 4 = |Chief of Staff end 4 = |Deputy Chief of Staff = |Deputy Chief of Staff start = |Deputy Chief of Staff end = |Deputy Chief of Staff 2 = |Deputy Chief of Staff start 2 = |Deputy Chief of Staff end 2 = |Cabinet Secretary = |Cabinet Secretary start = |Cabinet Secretary end = |Cabinet Secretary 2 = |Cabinet Secretary start 2 = |Cabinet Secretary end 2 = |Counselor to the President = |Counselor to the President start = |Counselor to the President end = |Counselor to the President 2 = |Counselor to the President start 2 = |Counselor to the President end 2 = |Counselor to the President 3 = |Counselor to the President start 3 = |Counselor to the President end 3 = |Counselor to the President 4 = |Counselor to the President start 4 = |Counselor to the President end 4 = |Counselor to the President 5 = |Counselor to the President start 5 = |Counselor to the President end 5 = |Counselor to the President 6 = |Counselor to the President start 6 = |Counselor to the President end 6 = |Counselor to the President 7 = |Counselor to the President start 7 = |Counselor to the President end 7 = |Counselor to the President 8 = |Counselor to the President start 8 = |Counselor to the President end 8 = |White House Counsel = |White House Counsel start = |White House Counsel end = |White House Counsel 2 = |White House Counsel start 2 = |White House Counsel end 2 = |White House Counsel 3 = |White House Counsel start 3 = |White House Counsel end 3 = |White House Counsel 4 = |White House Counsel start 4 = |White House Counsel end 4 = |Source = |Footnotes = }}</syntaxhighlight> ==See also== <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:United States government infobox templates|Cabinet]] }}</includeonly> 6eb21b838ea7bed6ddb18ea55b0d639a10c766e5 Template:Infobox royal styles/doc 10 1283 2617 2023-05-28T18:18:46Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Wraps infobox|Infobox manner of address}} == Usage == ===Blank template=== <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox royal styles | name = | image = | image_size = | reference = | spoken = | alternative = }} </syntaxhighlight> ===Parameters=== * '''name''' or '''royal name''' : Name which appears at top of infobox * '''image''' : (optional) [[Coat of arms]] image, should be in format <code><nowiki>Imagefilename.png</nowiki></code> * '''image_size''' : (optional) Image size, generally between 50-100px * '''reference''' or '''dipstyle''' : [[Style (manner of address)|Reference style]] (originally labeled: Diplomatic style) * '''spoken''' or '''offstyle''' : Spoken style (originally labeled: Official spoken style) * '''alternative''' or '''altstyle''' : Alternative style (originally labeled: Alternative spoken style) == Examples == ===Commonwealth Realms=== {{Infobox royal styles | name = Queen Elizabeth II | image = Personal flag of Queen Elizabeth II.svg | image_size = 75px | reference = [[Majesty|Her Majesty]] | spoken = Your Majesty }} [[Elizabeth II]] <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox royal styles | name = Queen Elizabeth II | image = Personal flag of Queen Elizabeth II.svg | image_size = 75px | reference = [[Majesty|Her Majesty]] | spoken = Your Majesty }} </syntaxhighlight> {{clear}} ===Brazil=== {{Infobox royal styles | name = Pedro II, Emperor of Brazil | image = CoA Empire of Brazil (1870-1889).svg | image_size = 60px | reference = [[Imperial Majesty (style)|His Imperial Majesty]] | spoken = Your Imperial Majesty }} [[Pedro II of Brazil]] <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox royal styles | name = Pedro II, Emperor of Brazil | image = CoA Empire of Brazil (1870-1889).svg | image_size = 60px | reference = [[Imperial Majesty (style)|His Imperial Majesty]] | spoken = Your Imperial Majesty }} </syntaxhighlight> {{clear}} ===Greece=== {{Infobox royal styles | name = King Alexander I of the Hellenes | image = Royal Arms of Greece (1863-1936).svg | image_size = 60px | reference = [[Majesty|His Majesty]] | spoken = Your Majesty }} [[Alexander of Greece (king)]] <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox royal styles | name = King Alexander I of the Hellenes | image = Royal Arms of Greece (1863-1936).svg | image_size = 60px | reference = [[Majesty|His Majesty]] | spoken = Your Majesty }} </syntaxhighlight> {{clear}} == See also == * [{{fullurl:index.php|title=Special%3AWhatLinksHere&target=Template%3A{{urlencode:{{BASEPAGENAME}}}}&namespace=0}} List of articles] this template ;Additional information on styles * [[Royal Highness|HRH]] * [[Royal and noble styles]] * [[Style (manner of address)]] ;Core template * [[Template:Infobox manner of address]] ;Similar templates * [[Template:Infobox British Royalty styles]] * [[Template:Infobox Dutch Royalty styles]] * [[Template:Infobox French Royalty styles]] * [[Template:Infobox Portuguese Royalty styles]] <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> {{DEFAULTSORT:Royal Styles}} [[Category:Royalty and nobility infobox templates]] [[Category:Styles infobox templates]] [[Category:Templates calling Infobox manner of address]] }}</includeonly> 3807666d73ff2ebfe201e50d7b05273ba6131df3 Template:Infobox UK place/full syntax 10 1419 2754 2023-05-28T18:25:11Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox UK place <!---------------BASICS----------------> | official_name = <!-- defaults to {{PAGENAME}} --> | local_name = | type = <!-- e.g. City, Town, Village. --> | country = <!-- England, Northern Ireland, Wales, Scotland; do not link. Also produces EU constituency. --> | crown_dependency = <!-- Isle of Man; do not link. Removes formal mentions of the UK. --> | region = <!-- England only; do not link. Also produces EU constituency. --> | region1 = <!-- (if place extends to more than one region of England) --> <!---------------PARTS-----------------> | parts_type = <!-- defaults to: Places --> | parts_style = <!-- list, coll (collapsed list), para (paragraph format) --> | parts = <!-- parts text, or header for parts list --> | p1 = | p2 = <!-- etc., up to p50: for separate parts to be listed--> <!---------------IMAGE/S---------------> | static_image_name = <!-- For a static image of the place, e.g. a skyline or defining local landmark. Use filename only (e.g. name.jpg). --> | static_image_width = <!-- allows control of the image width. Should be omitted in most cases (will default to 240) --> | static_image_alt = <!-- for a description of the image per [[WP:ALT]] --> | static_image_caption = <!-- optional caption for static image --> | static_image_2_name = <!-- for a second static image, such as a town crest. Use filename only (e.g. name.jpg). --> | static_image_2_width = <!-- allows control of the image width. Should not exceed 240 --> | static_image_2_alt = <!-- for a description of the image per [[WP:ALT]] --> | static_image_2_caption = <!-- optional caption for static image --> <!-------------STATISTICS--------------> | area_total_sq_mi = <!-- Total area in square miles (number only). If area_total_km2 (below) left blank, a conversion --> <!-- to sq-km will also be calculated and included. --> | area_total_km2 = <!-- Total area in square km (number only). If area_total_sq_mi (above) left blank, a conversion --> <!-- to sq-mi will also be calculated and included. --> | area_footnotes = <!-- Reference/s for the value/s used in the area fields. Use <ref>...</ref> tags. --> | population = <!-- Number only. If area_total_sq_mi or area_total_km2 have also been supplied, --> <!-- population_density (below) is calculated automatically. --> | population_ref = <!-- To include a reference or references (e.g."<ref>Census, 2001</ref>") and/or use for any --> <!-- non-numeric population values (e.g. "c. 500", "< 500"). (A good place to check these --> <!-- figures is http://neighbourhood.statistics.gov.uk/ )--> | population_density = <!-- To convert /sq-mi to /sq-km, use {{pop density mi2 to km2|(/sq-mi value here)|precision=1|abbr=yes}}; --> <!-- to convert /sq-km to /sq-mi, use {{pop density km2 to mi2|(/sq-km value here)|precision=1|abbr=yes}}. --> | population_demonym = <!---(for further optional population stats:)---> | statistic_title = | statistic = | statistic_title1 = | statistic1 = | statistic_title2 = | statistic2 = <!-----------MAP / LOCATION------------> | os_grid_reference = | map_type = <!-- type of map (leave blank for default map, or set to nomap, UK or Greater Belfast to force a particular map) --> | map_alt = <!-- alt text for map, for visually impaired and other readers who cannot see the image; see [[WP:ALT]] --> | coordinates = <!-- location of the place (use {{Coord}}); puts a dot on the map --> | label_position = <!-- adjust position of label by dot – defaults to right --> <!-------------POSTAL INFO-------------> | post_town = <!-- e.g. "UXBRIDGE" (without quotemarks). Will be displayed as upper-case. --> | post_town1 = <!-- (if place extends to more than one post town)--> | post_town2 = | postcode_area = <!-- e.g. "UB" --> | postcode_area1 = <!-- (if place extends to more than one postcode area) --> | postcode_area2 = | postcode_district = <!-- e.g. "UB1", "UB2", etc --> | postcode_district1 = <!-- (if place extends to more than one postcode district) --> | postcode_district2 = <!------------TELEPHONE INFO-----------> | dial_code = <!-- e.g. 020, 0161 or 01332. Do not include international prefixes/codes (such as +44) --> | dial_code1 = <!-- (if place has more than one dialling code) --> | dial_code2 = <!-------------GOVERNANCE--------------> | constituency_westminster = <!-- (use link, e.g. [[Chiltern Hundreds]]) --> | constituency_westminster1 = <!-- (if place extends to more than one constituency; use link) --> | constituency_westminster2 = | constituency_westminster3 = | civil_parish = <!-- If place within a parish. Use link (e.g. [[Odd Rode]]). --> | civil_parish1 = <!-- (if place extends to another parish; use link) --> | civil_parish2 = <!-- (if place extends to another parish; use link) --> <!--------------DISTANCES--------------> <!-- As crow flies, i.e. straight-line. Miles may be converted to km via {{convert|(distance)|mi|0}}. --> | london_distance_mi = <!-- (for places outside but nearer to Greater London than any of the other settlements below) --> | london_distance_km = | london_distance = | london_direction = | belfast_distance_mi = <!-- (for places in Northern Ireland) --> | belfast_distance_km = | belfast_distance = | belfast_direction = | cardiff_distance_mi = <!-- (for places in Wales) --> | cardiff_distance_km = | cardiff_distance = | cardiff_direction = | dublin_distance_mi = <!-- (in addition to Belfast data for places in Northern Ireland if they are also relatively near Dublin) --> | dublin_distance_km = | dublin_distance = | dublin_direction = | edinburgh_distance_mi = <!-- (for places in Scotland) --> | edinburgh_distance_km = | edinburgh_distance = | edinburgh_direction = | douglas_distance_mi = <!-- (for places on the Isle of Man) --> | douglas_distance_km = | douglas_distance = | douglas_direction = | charingX_distance_mi = <!-- (for places within Greater London) --> | charingX_distance_km = | charingX_distance = | charingX_direction = <!-------SCOTLAND-SPECIFIC INFO--------> | gaelic_name = | scots_name = | community_scotland = <!-- (use link, e.g. [[Old Aberdeen]]) --> | community_scotland1 = <!-- (if place assigned more than one community) --> | unitary_scotland = | unitary_scotland1 = <!-- (if place assigned more than one unitary area) --> | lieutenancy_scotland = | lieutenancy_scotland1 = <!-- (if place part of more than one lieutenancy)--> | constituency_scottish_parliament = | constituency_scottish_parliament1 = <!-- (if place extends to more than one constituency) --> | constituency_scottish_parliament2 = <!---------WALES-SPECIFIC INFO---------> | welsh_name = | community_wales = <!-- (use link, e.g. [[Eglwyscummin]]) --> | community_wales1 = <!-- (if place assigned more than one community) --> | unitary_wales = | unitary_wales1 = <!-- (as Scotland above) --> | lieutenancy_wales = | lieutenancy_wales1 = <!-- (ditto) --> | constituency_welsh_assembly = | constituency_welsh_assembly1 = <!-- (ditto) --> | constituency_welsh_assembly2 = <!-------N.IRELAND-SPECIFIC INFO-------> | irish_name = | irish_grid_reference = | unitary_northern_ireland = | unitary_northern_ireland1 = <!-- (ditto) --> | unitary_northern_ireland2 = | lieutenancy_northern_ireland = | lieutenancy_northern_ireland1 = <!-- (ditto) --> | lieutenancy_northern_ireland2 = | constituency_ni_assembly = | constituency_ni_assembly1 = <!-- (ditto) --> <!------ISLE OF MAN-SPECIFIC INFO------> | manx_name = | manx_parish = | manx_sheading = | constituency_manx_parliament = <!--------ENGLAND-SPECIFIC INFO--------> | metropolitan_borough = | metropolitan_borough1 = <!-- (ditto) --> | metropolitan_county = <!-- (use link, e.g. [[Tyne and Wear]]) --> | metropolitan_county1 = <!-- (if place part of more than one metropolitan country) --> | shire_district = | shire_district1 = <!-- (if place extends to more than one shire district) --> | shire_county = <!-- (use link, e.g. [[Devon]]) --> | shire_county1 = <!-- (if place extends to more than one shire county) --> | unitary_england = | unitary_england1 = <!-- (if place assigned more than one unitary area) --> | lieutenancy_england = <!-- (not required where shire or metropolitan is the same) --> | lieutenancy_england1 = <!-- (if place extends to more than one lieutenancy) --> | london_borough = <!-- Simplify but do not link (e.g. "Bromley" rather than "[[London Borough of Bromley]]") otherwise --> <!-- place's London Assembly constituency cannot be identified. --> | london_borough1 = <!-- (For places extending to more than one borough. As above, simplify but do not link.) --> | london_borough2 = | london_borough3 = <!-- (as above, but not used to identify London Assembly constituency) --> | london_borough4 = <!-- (ditto) --> <!--------OTHER LANGUAGES, ETC---------> | cornish_name = | other_language_name = <!-- Place's name in another relevant language --> | other_language = <!-- Other relevant language's name --> | language = <!-- Locally-spoken language --> | language1 = <!-- (ditto) --> | language2 = | website = <!-- Place's council or equivalent local-government website --> | hide_services = <!-- Set as "yes" (without quotemarks) to suppress inclusion of Police/Fire/Ambulance details, otherwise omit. --> }} </syntaxhighlight> a4c8a80110a0b60944f16206f6a249a4b514a4f7 Template:Greek nationalism 10 1114 2427 2023-05-29T09:10:17Z 159.146.57.42 0 gg wikitext text/x-wiki {{Navbox |name = Greek nationalism |state = {{{state<includeonly>|collapsed</includeonly>}}} |title = [[Greek nationalism]] |listclass = hlist |group1 = Ideology |list1 = * [[Modern Greek Enlightenment]] * [[Megali Idea]] * [[Hellenization]] ** [[Grecoman]] * [[Venizelism]] * [[Metaxism]] * [[Enosis]] |group2 = Organizations |list2 = * [[Filiki Eteria]] * [[Ethniki Etaireia]] * [[Macedonian Committee]] * [[Goudi coup|Military League]] * [[National Youth Organisation (Greece)|National Youth Organisation]] * [[EDES]] * [[Northern Epirus Liberation Front]] * [[EOKA]] * [[EOKA B]] |group3 = Political parties |list3 = *[[Russian Party|Napist Party]] *[[Nationalist Party (Greece)|Nationalist Party]] *[[New Party (Greece, 1873)|New Party (1873)]] *[[New Party (Greece, 1947)|New Party (1947)]] *[[Liberal Party (Greece)|Liberal Party]] *[[Freethinkers' Party]] *[[Politically Independent Alignment]] *[[Greek Rally]] *[[National Party of Greece]] *[[4th of August Party]] *[[National Democratic Union (Greece)|National Democratic Union]] *[[National Alignment]] * [[United Nationalist Movement]] *[[Party of Hellenism]] *[[National Political Union (1984)|National Political Union]] *[[Hellenic Front]] *[[Front Line (political party)|Front Line]] *[[Patriotic Alliance (Greece)|Patriotic Alliance]] *[[Political Spring]] *[[National Front (Greece)]] *[[Popular Orthodox Rally]] *[[Golden Dawn (Greece)|Golden Dawn]] *[[ELAM (Cyprus)]] *[[National Unity Association]] *[[Greek Solution]] *[[LEPEN (political party)|LEPEN]] *[[Greeks for the Fatherland]] |group4 = People |list4 = * [[Adamantios Korais]] * [[Rigas Feraios]] * [[Alexander Ypsilantis]] * [[Ioannis Kapodistrias]] * [[Athanasios Diakos]] * [[Theodoros Kolokotronis]] * [[Dionysios Solomos]] * [[Constantine Paparrigopoulos]] * [[Aristotelis Valaoritis]] * [[Alexandros Koumoundouros]] * [[Theodoros Diligiannis]] * [[Kostis Palamas]] * [[Pavlos Melas]] * [[Ion Dragoumis]] * [[Eleftherios Venizelos]] * [[Nikolaos Plastiras]] * [[Ioannis Metaxas]] * [[Angelos Sikelianos]] * [[Alexandros Papagos]] * [[Napoleon Zervas]] * [[Georgios Grivas]] * [[Georgios Papadopoulos]] * [[Dimitrios Ioannidis]] * [[Antonis Samaras]] |group5 = Historical events |list5 = * [[Greco-Persian Wars]] * [[Byzantine Empire under the Palaiologos dynasty]] * [[Greek War of Independence]] * [[Epirus Revolt of 1854]] * [[1854 Macedonian rebellion]] * [[1867 Macedonian rebellion]] * [[Cretan revolt (1866–1869)]] * [[Cretan revolt (1878)]] * [[Epirus Revolt of 1878]] * [[1878 Macedonian rebellion]] * [[1896–1897 Macedonian rebellion]] * [[Greco-Turkish War (1897)]] * [[Macedonian Struggle]] * [[Maratha, Santalaris and Aloda massacre]] * [[Theriso revolt]] * [[Greece in the Balkan Wars]] * [[Autonomous Republic of Northern Epirus]] * [[Greece during World War I]] * [[Greco-Turkish War (1919–1922)]] * [[1931 Cyprus revolt]] * [[4th of August Regime]] * [[Greek resistance]] * [[Cyprus Emergency]] (1955–59) * [[Cypriot intercommunal violence#Crisis of 1963–1964|Cyprus crisis of 1963–64]] * [[Bloody Christmas (1963)]] * [[Greek junta]] (1967–74) * [[1974 Cypriot coup d'état]] * [[1990 Komotini events]] |group6 = Policies |list6 = * [[Aromanian question]] * [[Geographical name changes in Greece|Geographical name changes]] * [[Greek language question]] }}<noinclude> {{collapsible option}} [[Category:Greek nationalism|τ]] [[Category:Greece politics and government templates|Nationalism]] </noinclude> 3ac46bed7a0ab70e714050fa2c139f6db2f06842 Template:Information/doc 10 1318 2653 2023-05-29T23:02:18Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE --> {{Distinguish|Template:Information page}} {{High-risk| 140946 }} {{Uses TemplateStyles|Template:Information/styles.css}} == Purpose == This template records and displays metadata for media files, such as photographs and diagrams. It includes a description of the file, its source, and its copyright status. == Usage == {| style="background-color: transparent;" ! Full ! Without optional fields |- style="vertical-align: top;" | <syntaxhighlight lang="wikitext"> {{Information | description = | source = | date = | author = | permission = | other_versions = | additional_information = }} </syntaxhighlight> | <syntaxhighlight lang="wikitext"> {{Information | description = | source = | date = | author = }} </syntaxhighlight> |} == Syntax description == === Mandatory parameters === ;description: Describe of the content, (historical) background, and in the case of scientific data, a brief scientific analysis of the media file. ;author: Author(s) of the image. If no individual person is known, use the name of the institution that owns, published or released the file. === Other parameters === ;source: Explain where the image is acquired from. Please specify accurately. For instance: #''Work of the uploader themself:'' Specify {{tl|Own}}. #''Acquired from a website:'' Specify the URL of the web page from which it is acquired. Optionally, include a direct link to the image. (Never include a direct link alone.) #''Scanned from a book or magazine:'' Specify the title, author, publisher, publication year, ISBN and page of the book or title, issue, volume, publication month and year, ISSN (if available) and page of the journal. You can use {{tl|cite book}} and {{tl|cite journal}}. ;date: Date of creation, or date of publication. Although not compulsory, it is advised to stick to the recommendations of {{Section link|Wikipedia:Manual of Style/Dates and numbers|Dates}}. Specifically, please avoid ambiguous dates like 02/03/04 which can refer to 2 March 2004, 3 February 2004, 4 March 2002 or 3 April 2002, depending on the geographical origin of the person who sees it. ;permission: '''Optional'''. Not to be mistaken with license. Description of the permissions granted by the copyright holder. Use only when the accompanying license tag is not enough. Note that the media file must still be tagged with the appropriate license template. Select a copyright tag from [[Wikipedia:Image copyright tags/All]]. ;other versions: '''Optional'''. Links to other versions of this image. The links may be in form of a list of links or thumbnails of the other versions of the image. Please only link to images that can be used instead of the image at hand; do not use this field as a mean of grouping related files. Instead, use [[Help:Categories|categories]]. ;additional information: '''Optional'''. Contains other information about this image that doesn't fit somewhere else. For example, information that might be relevant to determining a file's proper copyright status (e.g. weblinks) might be provided this way. == Example == Example for [[:File:Anders-Celsius-Head.jpg]]: {{Information{{\sandbox}} | description = Part of an oil painting of Anders Celsius. Painting by Olof Arenius (1701 - 1766). The original painting is placed in the astronomical observatory of Uppsala University. | source = Astronomical observatory of Uppsala University * Source site: http://www.astro.uu.se/history/Celsius_eng.html * Source URL: http://www.astro.uu.se/history/images/celsius3.jpg | date = between 1701 - 1766 | author = Olof Arenius | permission = Copyright expired as artist died more than 70 years ago | other_versions = [[:File:Anders-Celsius.jpeg]] (full image) }} ==TemplateData== {{TemplateData header}} <templatedata> { "params": { "description": { "required": true, "label": "Description", "aliases": [ "Description" ], "type": "string", "description": "Describe of the content, (historical) background, and in the case of scientific data, a brief scientific analysis of the media file." }, "source": { "required": true, "label": "Source", "aliases": [ "Source" ], "type": "string", "description": "Explain where the image is acquired from. Please specify accurately. (If it is the work of the uploader themself, use {{Own}}. If it was acquired from a website, specify the URL of the web page from which it is acquired. Optionally, include a direct link to the image. (Never include a direct link alone.) If it was scanned from a book or magazine, specify the title, author, publisher, publication year, ISBN and page of the book or title, issue, volume, publication month and year, ISSN (if available) and page of the journal. You can use {{cite book}} and {{cite journal}}.)\n" }, "date": { "required": false, "label": "Date", "aliases": [ "Date" ], "type": "string", "description": "Date of creation or date of publication. Although not compulsory, it is advised to stick to the Manual of Style recommendations. Specifically, please avoid ambiguous dates like 02/03/04 which can refer to 2 March 2004, 3 February 2004, 4 March 2002 or 3 April 2002, depending on the geographical origin of the person who sees it." }, "author": { "required": true, "label": "Author", "aliases": [ "Author" ], "type": "string", "description": "Author(s) of the image. If no individual person is known, use the name of the institution that owns, published or released the file." }, "permission": { "required": false, "label": "Permission (extra information)", "aliases": [ "Permission" ], "type": "string", "description": "Not to be mistaken with license. Description of the permissions granted by the copyright holder. Use only when the accompanying license tag is not enough. Note that the media file must still be tagged with the appropriate license template." }, "other_versions": { "required": false, "label": "Other versions", "aliases": [ "Other_versions", "other versions" ], "type": "string", "description": "Links to other versions of this image. The links may be in form of a list of links or thumbnails of the other versions of the image. Please only link to images that can be used instead of the image at hand; do not use this field as a mean of grouping related files. Instead, use categories." }, "additional_information": { "required": false, "label": "Additional information", "type": "string", "aliases": [ "Additional_information", "Additional information", "additional information" ], "description": "Contains other information about this image that doesn't fit somewhere else. For example, information that might be relevant to determining a file's proper copyright status (e.g. weblinks) might be provided this way." } }, "description": "This template is used to make a standardized table providing information about files, including a description, its copyright status, and its source.", "format": "block" } </templatedata> == See also == * {{tl|Information TV series screenshot}}, a similar template for a TV screenshot. * {{tl|Non-free use rationale}}, for use with on non-free images that must comply with [[WP:NFC|Wikipedia's non-free content policy]] and that each appear in no more than one article. * {{tl|Non-free media data}} and {{tl|Non-free media rationale}}, for use with non-free images that must comply with Wikipedia's non-free content policy and that may appear in more than one article. * {{tl|Notice}} <!--(same as Template:Info)--> <includeonly>{{Sandbox other| | <!-- ADD CATEGORIES BELOW THIS LINE, PLEASE: --> [[Category:File namespace templates]] }}</includeonly> 3e95fd78daef0ba07017a938b3e6400f3005b8e7 Template:High-use 10 58 111 2023-05-30T09:39:48Z wikipedia>Lectonar 0 Changed protection settings for "[[Template:High-use]]": [[WP:High-risk templates|High-risk template or module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki {{#invoke:High-use|main|1={{{1|}}}|2={{{2|}}}|info={{{info|}}}|demo={{{demo|}}}|form={{{form|}}}|expiry={{{expiry|}}}|system={{{system|}}}}}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage; interwiki links go to Wikidata, thank you! --> </noinclude> a3322d1bd47ac03df14fa2090855cff4fede9bc7 Module:High-use 828 61 117 2023-05-30T11:20:32Z wikipedia>Lectonar 0 Changed protection settings for "[[Module:High-use]]": [[WP:High-risk templates|High-risk template or module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain local p = {} -- _fetch looks at the "demo" argument. local _fetch = require('Module:Transclusion_count').fetch local yesno = require('Module:Yesno') function p.num(frame, count) if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end -- Build output string local return_value = "" if count == nil then if frame.args[1] == "risk" then return_value = "a very large number of" else return_value = "many" end else -- Use 2 significant figures for smaller numbers and 3 for larger ones local sigfig = 2 if count >= 100000 then sigfig = 3 end -- Prepare to round to appropriate number of sigfigs local f = math.floor(math.log10(count)) - sigfig + 1 -- Round and insert "approximately" or "+" when appropriate if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then -- Round down return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) ) else -- Round to nearest return_value = string.format("approximately&#x20;%s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) ) end -- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes if count and count > 250000 and not yesno (frame:getParent().args['no-percent']) then local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5) if percent >= 1 then return_value = string.format("%s&#x20;pages, or roughly %s%% of all", return_value, percent) end end end return return_value end -- Actions if there is a large (greater than or equal to 100,000) transclusion count function p.risk(frame) local return_value = "" if frame.args[1] == "risk" then return_value = "risk" else local count = _fetch(frame) if count and count >= 100000 then return_value = "risk" end end return return_value end function p.text(frame, count) -- Only show the information about how this template gets updated if someone -- is actually editing the page and maybe trying to update the count. local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''Preview message''': Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." or '' if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end local title = mw.title.getCurrentTitle() if title.subpageText == "doc" or title.subpageText == "sandbox" then title = title.basePageTitle end local systemMessages = frame.args['system'] if frame.args['system'] == '' then systemMessages = nil end -- This retrieves the project URL automatically to simplify localiation. local templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format( mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'), mw.uri.encode(title.fullText), p.num(frame, count)) local used_on_text = "'''This " .. (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template") .. ' is used '; if systemMessages then used_on_text = used_on_text .. systemMessages .. ((count and count > 2000) and ("''', and " .. templateCount) or ("'''")) else used_on_text = used_on_text .. templateCount .. "'''" end local sandbox_text = ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format( (mw.title.getCurrentTitle().namespace == 828 and "module" or "template"), title.fullText, title.fullText, mw.title.getCurrentTitle().namespace == 828 and "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage" ) local infoArg = frame.args["info"] ~= "" and frame.args["info"] if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then local info = systemMessages and '.<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or '.' if infoArg then info = info .. "<br />" .. infoArg end sandbox_text = info .. '<br /> To avoid major disruption' .. (count and count >= 100000 and ' and server load' or '') .. ', any changes should be tested in the ' .. sandbox_text .. 'The tested changes can be added to this page in a single edit. ' else sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') .. 'hanges may be widely noticed. Test changes in the ' .. sandbox_text end local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes ' if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"]) else discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText ) end return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_text end function p.main(frame) local count = nil if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]" local type_param = "style" local epilogue = '' if frame.args['system'] and frame.args['system'] ~= '' then image = "[[File:Ambox important.svg|40px|alt=Warning|link=]]" type_param = "content" local nocat = frame:getParent().args['nocat'] or frame.args['nocat'] local categorise = (nocat == '' or not yesno(nocat)) if categorise then epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[Category:Pages used in system messages needing protection]]}}}}') end elseif (frame.args[1] == "risk" or (count and count >= 100000)) then image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]" type_param = "content" end if frame.args["form"] == "editnotice" then return frame:expandTemplate{ title = 'editnotice', args = { ["image"] = image, ["text"] = p.text(frame, count), ["expiry"] = (frame.args["expiry"] or "") } } .. epilogue else return require('Module:Message box').main('ombox', { type = type_param, image = image, text = p.text(frame, count), expiry = (frame.args["expiry"] or "") }) .. epilogue end end return p 134551888e066954a89c109d2faa8af71a4454a4 Module:Transclusion count 828 62 119 2023-05-30T20:51:38Z wikipedia>Isabelle Belato 0 Changed protection settings for "[[Module:Transclusion count]]": [[WP:High-risk templates|Highly visible template]]; requested at [[WP:RfPP]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain local p = {} function p.fetch(frame) local template = nil local return_value = nil -- Use demo parameter if it exists, otherswise use current template name local namespace = mw.title.getCurrentTitle().namespace if frame.args["demo"] and frame.args["demo"] ~= "" then template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","") elseif namespace == 10 then -- Template namespace template = mw.title.getCurrentTitle().text elseif namespace == 828 then -- Module namespace template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text) end -- If in template or module namespace, look up count in /data if template ~= nil then namespace = mw.title.new(template, "Template").namespace if namespace == 10 or namespace == 828 then template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end local index = mw.ustring.sub(mw.title.new(template).text,1,1) local status, data = pcall(function () return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other"))) end) if status then return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")]) end end end -- If database value doesn't exist, use value passed to template if return_value == nil and frame.args[1] ~= nil then local arg1=mw.ustring.match(frame.args[1], '[%d,]+') if arg1 and arg1 ~= '' then return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R')) end end return return_value end -- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]] function p.tabulate(frame) local list = {} for i = 65, 91 do local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i))) for name, count in pairs(data) do table.insert(list, {mw.title.new(name, "Template").fullText, count}) end end table.sort(list, function(a, b) return (a[2] == b[2]) and (a[1] < b[1]) or (a[2] > b[2]) end) local lang = mw.getContentLanguage(); for i = 1, #list do list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2])) end return table.concat(list) end return p 000ef6bcbf7b66e727870b0c300c4009da300513 Template:Shortcut compact/doc 10 1320 2655 2023-05-30T20:54:20Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> {{tl|Shortcut compact}} is a compact version of the {{Tl|shortcut}} template, for use in vertically-constrained locations, such as alongside [[Help:List|list]] items. It flows to the right of the page, displaying all the shortcuts in a single line of text. == Usage == Usage is similar to the {{tl|shortcut}} template, see full documentation there. This template accepts up to five shortcuts as parameters. However, in most cases you will only want to display one or two shortcuts with this template, otherwise it may get too wide. Use {{Tl|shortcut}} if you need to display more than two shortcuts in the same box. Originally this template is for use on the [[WP:EIW|Editor's index]], which needs to display shortcuts alongside list items and subitems which are vertically close together. The goal is to make the Editor's index more useful as a tool for answering questions, for example on the [[WP:HD|Help desk]]. A user can look up entries on the Editor's index, copy the relevant shortcuts, and paste them into [[Help:Link|links]] in replies to Help desk questions. The template may be useful on other pages where multiple shortcut boxes would crowd together vertically. === Examples === {| class="wikitable" ! Code ! Result |- | style="vertical-align:top;" | {{tlc|{{BASEPAGENAME}}|WP:V}} | {{{{BASEPAGENAME}}|WP:V}} |- | style="vertical-align:top;" | {{tlc|{{BASEPAGENAME}}|WP:V|WP:VERIFY|WP:SOURCE}} | {{{{BASEPAGENAME}}|WP:V|WP:VERIFY|WP:SOURCE}} |} An example showing how to use the template in a list: {| class="wikitable" ! Code ! Result |- | <syntaxhighlight lang="wikitext">* A list item * Another list item ** A subitem ** Learning: {{Shortcut compact|WP:EIW#Learn}} *** A subsubitem about learning *** Another subsubitem </syntaxhighlight> | * A list item * Another list item ** A subitem ** Learning: {{Shortcut compact|WP:EIW#Learn}} *** A subsubitem about learning *** Another subsubitem |} == Anchors == Unlike {{Tl|Shortcut}}, this template does not place anchors automatically at its location. To enable displayed shortcuts to link to positions other than section heading names, use the {{Tl|Anchor}} template alongside this template. Adding an anchor automatically tends not to work correctly when the displayed shortcut itself contains a [[fragment identifier]] (an anchor name after a [[number sign]] character), since the anchor should only consist of the fragment identifier, but the template cannot parse out the fragment from the rest of the displayed shortcut string. Automatic anchor insertion works best for top-of-page shortcuts which do not normally display fragment identifiers, the kind that {{Tl|Shortcut}} is intended to display. Displaying shortcuts with fragment identifiers saves a lot of work for a long page with many section-specific or list-item-specific shortcuts, since one shortcut page provides a [[Help:Redirect|redirect]] that can then link to any anchor on the target page via a fragment identifier. == Portability notes == This template uses HTML table code, which may create problems on non-Wikimedia Foundation wikis that are not running [[HTML Tidy]]. The template itself generally works when a page transcludes it, but may cause problems if you use it inside another template that uses parser functions. See: * [[Wikipedia:WikiProject Transwiki#Special templates]] - an explanation of the problem. * [[Wikipedia:WikiProject Transwiki/Template:Shortcut compact]] - a portable version of this template that uses wikitext table code. (Unfortunately, the portable version is not compatible with nested list sub-items.) == See also == * [[Wikipedia:Editor's index to Wikipedia]] - a page that uses this template extensively. * [[Wikipedia:Shortcuts]] - notes about how they work. * {{tl|shortcut}} – The normal shortcut. * {{tl|policy shortcut}} – For shortcuts to sections of policy pages. * {{tl|template shortcut}} – Use this one to show the names of shortcuts/redirects to a template. <includeonly>{{Sandbox other|| <!-- CATEGORIES AND INTERWIKIS HERE, THANKS --> [[Category:Shortcut templates]] }}</includeonly> 4bf0ef6e222b575d2509c77c4ad089d0802d47e1 Template:Party color/doc 10 1577 2912 2023-05-30T21:08:40Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --> {{High use}} {{Lua|Module:Political party}} '''Template:Party color''' produces the [[Web_colors#Hex_triplet|hexadecimal color]] of the provided political party. == Usage == * {{Tlx|Party color|<party name>}} == Parameters == <section begin="Parameters"/> {| class="wikitable" ! scope="col" | Parameter ! scope="col" | Description |- ! scope="row" | 1 | The political party's name. If a party is not found, place a request at the [[Module talk:Political party|talk page]]. |- ! scope="row" | error | Optional, this parameter will return the provided {{para|error}} value if the module does not contain the requested party or color. |}<section end="Parameters"/> ==Examples== Here are some examples using the [[Labour Party (UK)|Labour Party]] (note that there are multiple potential input names): <syntaxhighlight lang="wikitext"> ["Labour and Co-operative"] = "Labour Party (UK)", ["Labour Co-operative"] = "Labour Party (UK)", ... ["Labour Party (Thailand)"] = {abbrev = "", color = "#000000", shortname = "",}, ["Labour Party (UK)"] = {abbrev = "Lab", color = "#E4003B", shortname = "Labour",}, </syntaxhighlight> * {{tlx|Party color|Labour Party (UK)}} → {{Party color|Labour Party (UK)}} * {{tlx|Party color|Labour and Co-operative}} → {{Party color|Labour and Co-operative}} * {{tlx|Party color|Labour Co-operative}} → {{Party color|Labour Co-operative}} ===Error messages=== If the party is not supplied, or the color is not stored for the party, an error will be returned. Note that if the party is not in the module at all (third example below) the default color #F8F9FA will be returned. * {{tlx|Party color}} → {{Party color}} * {{tlx|Party color|A test no values}} → {{Party color|A test no values}} * {{tlx|Party color|Not-a-party}} → {{Party color|Not-a-party}} To avoid generating a script error, use {{para|error|value}}. Note that this error value will also be passed if the party is not stored in the module. * {{tlx|Party color|A test no values|error{{=}}ERROR}} → {{Party color|A test no values|error=ERROR}} * {{tlx|Party color|Not-a-party|error{{=}}ERROR}} → {{Party color|Not-a-party|error=ERROR}} ==See also== * [[Template:Party abbr]] * [[Template:Party shortname]] * [[Module:Political party]] (Data pages) <includeonly>{{Sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Political party color templates]] }}</includeonly> e39c0c2e1d80283cb97935d43f34a9e322e3065f Template:Campaignbox/doc 10 1508 2843 2023-05-30T21:33:28Z w>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{#ifeq:{{{noheader|}}}|yes | | {{Documentation subpage}} {{Template display|nomobile}} {{Template redirect|Campaign}} {{Navbox visibility}} == Usage == }} {{#switch:{{ARTICLESPACE}} | Wikipedia = ====Campaignboxes==== | #default = ===Campaignboxes=== }} One common type of navigational template in articles concerning conflicts, wars and related topics is the '''campaignbox''' template, intended to provide context and convenient navigation among articles on the [[battles]] in a [[Military campaign|campaign]], [[Front (military)|front]], [[Theater (warfare)|theater]] or [[war]] (or, more rarely, among several campaigns or wars). <div style="float:right;width:26.7em;margin-bottom:1.0em;"> {{Campaignbox Second Punic War}} {{Campaignbox Punic Wars}} </div> If the article includes an [[Help:Infobox|infobox]], the campaignbox/es are usually placed immediately after it (i.e. just below it). If available, as with infoboxes such as {{tl|Infobox military conflict}}, use the infobox's {{para|campaignbox}} parameter: <div style="width:25.0em;border:1px solid black;background:#ddd;padding:0.5em 1.0em;"> <syntaxhighlight lang="wikitext"> {{Infobox military conflict ... }} {{Campaignbox XXXX}} </syntaxhighlight>or<syntaxhighlight lang="wikitext"> {{Infobox military conflict ... | campaignbox = {{campaignbox XXXX}} }} </syntaxhighlight></div> Articles may include multiple campaignboxes; typically, these are stacked under the infobox. The most common scenario occurs when two levels of campaignboxes are present&nbsp;– for example, an article about a battle can include both a campaignbox listing the battle itself and an "enclosing" campaignbox listing the campaign, theater or war during which the battle took place. Similarly, an article about a war can include both a campaignbox listing the war (among a series of wars) and a campaignbox for the war itself, listing the battles that took place during it. === Creating campaignboxes === Existing campaignboxes may be viewed through the [[:Category:Campaignbox templates|Campaignbox template category]] to which campaignboxes are added automatically. If a new campaignbox becomes necessary, it should be named ''Template:Campaignbox XXXX'' (where XXXX is the (shortened) name of the campaign) and should use {{tlf|Campaignbox}} thus: <div style="width:16.7em;border:1px solid black;background:#ddd;padding:0.5em 1.0em;"> <syntaxhighlight lang="wikitext"> {{Campaignbox | name = | title = | battles = | notes = }} </syntaxhighlight> </div> ==== Parameters ==== ; ''name'' : The name by which Wikipedia refers to the template, i.e. "Template:Campaignbox XXXX". This can be produced by using <code><nowiki>{{subst:PAGENAME}}</nowiki></code>. ; ''title'' : The name of the campaign or war, which, if an article about the campaign or war exists, should link to it. Dates should not be indicated unless needed for clarity. Note that long links may cause alignment problems; see [[WP:MILMOS#NAVPROBLEMS|the troubleshooting guide]] for more information. ; ''battles'' : A chronological list of battles and operations in the campaign, linked as <code><nowiki>[[Battle of YYYY|YYYY]]</nowiki></code>. A convenient and accessible way to separate the items in the list is to add <code>| listclass = hlist</code> and then use the standard <kbd>*</kbd> (asterisk)-based [[Help:List|listing format]]. ; ''notes'' : (optional) Any explanatory notes needed to clarify the list. This option should be used sparingly. ; (''raw_name'') : (optional; deprecated) This parameter overrides the use of the title in determining the template name and exists for the sake of backward compatibility. When creating a new campaignbox, both title and name should be specified as above and this parameter omitted. The following optional parameters are passed on to the templates {{tl|Military navigation}} or {{tl|Navbox}} used to create campaignboxes and so can affect their styling. See these two templates' documentation pages for further details. ; ''state'' : To set whether the campaignbox appears fully visible or collapsed (to titlebar only) when it is first presented by a page. ; ''bodyclass'' : CSS styling to affect the whole template. ; ''listclass'' : CSS styling to affect the list of battles, operations, etc. (e.g. to affect {{para|battles}}). The use of special formatting (such as bolding or changes in font size) in the list of battles{{spaced ndash}}particularly to mark battles as "important"{{spaced ndash}}is generally discouraged; while there are a ''few'' cases where such approaches may be both helpful to the reader and sufficiently well-sourced that they do not constitute original research, they are usually both unnecessary and potentially confusing. Similarly, dividing the list of battles into multiple blocks by inserting heading-like separations should be exceptional; if such a division is felt to be needed, a better solution may be to split the one campaignbox into two or more.<noinclude> [[Category:WikiProject Military history template instructions|Campaignbox]] </noinclude><includeonly>{{Sandbox other|| [[Category:Campaignbox templates| ]] {{#ifeq:{{{noheader|}}}|yes | | [[Category:Navigational box wrapper templates]] [[Category:Military navigational boxes|Campaignbox]] [[Category:Templates that add a category]] }}}}</includeonly> 05cb24dd8b2b1a78bab960db82b26ce0d68c3063 Template:Infobox person 10 1115 2440 2023-06-01T17:01:07Z w>Hike395 0 link to template in warning wikitext text/x-wiki {{#invoke:infobox|infoboxTemplate|child={{{child|{{{embed|}}}}}} | bodyclass = biography vcard | above = {{Br separated entries | 1 = {{#if:{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|{{{pre-nominals|}}}}}}}}}}}}|<div class="honorific-prefix" style="font-size: 77%; font-weight: normal; display:inline;">{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|{{{pre-nominals|}}}}}}}}}}}}</div>}} | 2 = <div class="fn" style="display:inline">{{#if:{{{name|}}}|{{{name}}}|{{PAGENAMEBASE}}}}</div> | 3 = {{#if:{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix|{{{post-nominals|}}}}}}}}}}}}|<div class="honorific-suffix" style="font-size: 77%; font-weight: normal; display:inline;">{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix|{{{post-nominals|}}}}}}}}}}}}</div>}} }} | abovestyle = font-size:125%; {{{abovestyle|}}} | subheaderstyle = font-size:125%; font-weight:bold; | subheader = {{#switch:{{{child|{{{embed|}}}}}}|yes=<!--empty when this infobox is embedded-->|#default={{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name}}}{{#if:{{{native_name_lang|}}}|</div>}} }} }} | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{#ifeq:{{lc:{{{landscape|}}}}}|yes|{{min|300|{{#if:{{#ifexpr:{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}|300|{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}}}x200px|{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{alt|}}}|suppressplaceholder=yes}} | caption = {{{image caption|{{{caption|{{{image_caption|}}}}}}}}} | label2 = Pronunciation | data2 = {{{pronunciation|}}} | label10 = Born | data10 = {{Br separated entries|1={{#if:{{{birth_name|{{{birthname|}}}}}}|<div style="display:inline" class="nickname">{{{birth_name|{{{birthname|}}}}}}</div>}}|2={{{birth_date|}}}|3={{#if:{{{birth_place|}}}|<div style="display:inline" class="birthplace">{{{birth_place|}}}</div>}}}} | label11 = Bapti{{#if:{{{baptized|}}}|z|s}}ed | data11 = {{#if:{{{birth_date|}}}||{{{baptized|{{{baptised|}}}}}}}} | label12 = Disappeared | data12 = {{Br separated entries|1={{{disappeared_date|}}}|2={{{disappeared_place|}}}}} | label13 = Status | data13 = {{{status|{{{disappeared_status|}}}}}} | label14 = Died | data14 = {{Br separated entries|1={{{death_date|}}}|2={{#if:{{{death_place|}}}|<div style="display:inline" class="deathplace">{{{death_place|}}}</div>}}}} | label15 = Cause&nbsp;of death | data15 = {{{death cause|{{{death_cause|}}}}}} | label16 = Body discovered | data16 = {{{body discovered|{{{body_discovered|}}}}}} | label17 = {{#if:{{{burial_place|}}}|Burial place|Resting place}} | data17 = {{#if:{{{burial_place|}}}|{{Br separated entries|1={{{burial_place|}}}|2={{{burial_coordinates|}}}}}|{{Br separated entries|1={{{resting place|{{{resting_place|{{{restingplace|}}}}}}}}}|2={{{resting place coordinates|{{{resting_place_coordinates|{{{restingplacecoordinates|}}}}}}}}}}}}} | class17 = label | label18 = Monuments | data18 = {{{monuments|}}} <!-- removed per discussion at https://en.wikipedia.org/w/index.php?title=Template_talk:Infobox_person&oldid=932429196#Residence_parameter | label19 = Residence | data19 = {{{residence|}}} | class19 = {{#if:{{{death_date|}}}{{{death_place|}}}||label}} --> | label20 = Nationality | data20 = {{{nationality|}}} | class20 = category | label21 = Other&nbsp;names | data21 = {{{other names|{{{other_names|{{{othername|{{{nickname|{{{alias|}}}}}}}}}}}}}}} | class21 = nickname | label22 = Siglum | data22 = {{{siglum|}}} | label23 = Citizenship | data23 = {{{citizenship|}}} | class23 = category | label24 = Education | data24 = {{{education|}}} | label25 = Alma&nbsp;mater | data25 = {{{alma mater|{{{alma_mater|}}}}}} | label26 = Occupation{{Pluralize from text|{{{occupation|}}}|likely=(s)|plural=s}} | data26 = {{{occupation|}}} | class26 = role | label27 = Years&nbsp;active | data27 = {{{years active|{{{years_active|{{{yearsactive|}}}}}}}}} | label28 = Era | data28 = {{{era|}}} | class28 = category | label29 = Employer{{Pluralize from text|{{{employer|}}}|likely=(s)|plural=s}} | data29 = {{{employer|}}}{{main other|{{Pluralize from text| {{{employer|}}}|likely=[[Category:Pages using infobox person with multiple employers]]}}}} | class29 = org | label30 = {{#if:{{{organisation|}}}|Organisation|Organization}}{{#if:{{{organizations|}}}|s|{{pluralize from text|{{{organization|{{{organisation|}}}}}}|likely=(s)|plural=s}}}} | data30 = {{{organisation|{{{organization|{{{organizations|}}}}}}}}}{{main other|{{Pluralize from text|{{{organization|{{{organisation|}}}}}}|likely=[[Category:Pages using infobox person with multiple organizations]]}}}} | class30 = org | label31 = Agent{{Pluralize from text|{{{agent|}}}|likely=(s)|plural=s}} | data31 = {{{agent|}}}{{main other|{{Pluralize from text|{{{agent|}}}|likely=[[Category:Pages using infobox person with multiple agents]]}}}} | class31 = agent | label32 = Known&nbsp;for | data32 = {{{known for|{{{known_for|{{{known|}}}}}}}}} | label33 = Works | data33 = {{{works|}}} | label34 = <span style="white-space:nowrap;">Notable credit{{Pluralize from text|{{{credits|}}}|likely=(s)|plural=s}}</span> | data34 = {{#if:{{{works|}}}||<!-- -->{{{credits|}}}{{main other|{{Pluralize from text|{{{credits|}}}|likely=[[Category:Pages using infobox person with multiple credits]]}}}}}} | label35 = Label{{Pluralize from text|{{{label_name|}}}|likely=(s)|plural=s}} | data35 = {{#if:{{{works|}}}{{{credits|}}}||<!-- -->{{{label_name|}}}{{main other|{{Pluralize from text|{{{label_name|}}}|likely=[[Category:Pages using infobox person with multiple labels]]}}}}}} | label36 = <span style="white-space:nowrap;">Notable work</span> | data36 = {{#if:{{{works|}}}{{{credits|}}}{{{label_name|}}}||{{{notable works|{{{notable_works|}}}}}}}} | label37 = Style | data37 = {{{style|}}} | class37 = category | label40 = Television | data40 = {{{television|}}} | label41 = Height | data41 = {{#if:{{{height_m|{{{height_cm|}}}}}}{{{height_ft|}}}{{{height_in|}}} | {{convinfobox|{{{height_m|{{{height_cm|}}}}}}|{{#if:{{{height_m|}}}|m|cm}}|{{{height_ft|}}}|ft|{{{height_in|}}}|in}}}}{{#if:{{{height|}}} | {{infobox person/height|{{{height|}}}}}}} | label42 = {{#if:{{{office|}}}|Office|Title}} | data42 = {{{office|{{{title|}}}}}} | class42 = title | label43 = Term | data43 = {{{term|}}} | label44 = Predecessor | data44 = {{{predecessor|}}} | label45 = Successor | data45 = {{{successor|}}} | label46 = Political party | data46 = {{{party|}}} | class46 = org | label47 = Other political<br />affiliations | data47 = {{{otherparty|}}} | class47 = org | label48 = Movement | data48 = {{{movement|}}} | class48 = category | label49 = Opponent{{Pluralize from text|{{{opponents|}}}|likely=(s)|plural=s}} | data49 = {{{opponents|}}}{{main other|{{Pluralize from text|{{{opponents|}}}|likely=[[Category:Pages using infobox person with multiple opponents]]}}}} | label50 = Board member&nbsp;of | data50 = {{{boards|}}} | label51 = {{#if:{{{criminal_charges|}}}|Criminal charges|Criminal charge{{pluralize from text|{{{criminal charge|{{{criminal_charge|}}}}}}|likely=(s)|plural=s}}}} | data51 = {{{criminal_charges|{{{criminal charge|{{{criminal_charge|}}}}}}}}}{{main other|{{Pluralize from text|{{{criminal charge|{{{criminal_charge|}}}}}}|likely=[[Category:Pages using infobox person with multiple criminal charges]]}}}} | label52 = Criminal penalty | data52 = {{{criminal penalty|{{{criminal_penalty|}}}}}} | label53 = {{#if:{{{judicial status|{{{judicial_status|}}}}}}|Judicial status|Criminal status}} | data53 = {{#if:{{{judicial status|{{{judicial_status|}}}}}} | {{{judicial status|{{{judicial_status}}}}}} | {{{criminal status|{{{criminal_status|}}}}}}}} | class53 = category | label54 = Spouse{{#if:{{{spouses|}}}|s|{{Pluralize from text|{{{spouse|{{{spouse(s)|}}}}}}|likely=(s)|plural=s}}}} | data54 = {{{spouse|{{{spouses|{{{spouse(s)|}}}}}}}}}{{main other|{{Pluralize from text| {{{spouse|{{{spouse(s)|}}}}}} |likely=[[Category:Pages using infobox person with multiple spouses]]}}}} | label55 = Partner{{#if:{{{partners|}}}|s|{{Pluralize from text|{{{partner|{{{domesticpartner|{{{domestic_partner|{{{partner(s)|}}}}}}}}}}}} |likely=(s)|plural=s}}}} | data55 = {{{partner|{{{domesticpartner|{{{domestic_partner|{{{partners|{{{partner(s)|}}}}}}}}}}}}}}}{{main other|{{Pluralize from text| {{{partner|{{{domesticpartner|{{{domestic_partner|{{{partner(s)|}}}}}}}}}}}} |likely=[[Category:Pages using infobox person with multiple partners]]}}}} | label56 = Children | data56 = {{{children|}}} | label57 = Parent{{#if:{{{parents|}}}|{{Pluralize from text|{{{parents|}}}|likely=(s)|plural=s}}|<!-- -->{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|s}}}} | data57 = {{#if:{{{parents|}}}|{{{parents}}}|{{Unbulleted list|{{#if:{{{father|}}}|{{{father}}} (father)}}|{{#if:{{{mother|}}}|{{{mother}}} (mother)}}}}}}<!-- -->{{main other|{{Pluralize from text|{{{parents|}}}|likely=[[Category:Pages using infobox person with multiple parents]]}}}} | label58 = Relatives | data58 = {{{relations|{{{relatives|}}}}}} | label59 = Family | data59 = {{{family|}}} | label60 = Call sign | data60 = {{{callsign|}}} | label61 = Awards | data61 = {{{awards|}}} | label62 = {{#if:{{{honours|}}}|Honours|Honors}} | data62 = {{{honours|{{{honors|}}}}}} | data64 = {{{misc|{{{module|}}}}}} | data65 = {{{misc2|{{{module2|}}}}}} | data66 = {{{misc3|{{{module3|}}}}}} | data67 = {{{misc4|{{{module4|}}}}}} | data68 = {{{misc5|{{{module5|}}}}}} | data69 = {{{misc6|{{{module6|}}}}}} | label70 = Website | data70 = {{{website|{{{homepage|{{{URL|{{{url|}}}}}}}}}}}} | header71 = {{#if:{{{signature|}}}|{{if empty|{{{signature_type|}}}|Signature}}}} | data72 = {{#invoke:InfoboxImage|InfoboxImage|image={{{signature|}}}|size={{{signature_size|}}}|sizedefault=150px|alt={{{signature alt|{{{signature_alt|}}}}}}}} | header73 = {{#if:{{{footnotes|}}}|Notes}} | data74 = {{#if:{{{footnotes|}}}|<div style="text-align: left;">{{{footnotes}}}</div>}} }}<!-- -->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using {{if empty|{{{template_name|}}}|infobox person}} with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview = Page using [[Template:{{#if:{{{template_name|}}}|{{ucfirst:{{{template_name|}}}}}|Infobox person}}]] with unknown parameter "_VALUE_"|ignoreblank=n<!--this check deliberately flags empty unknown parameters; see talk, December 2022--> | abovestyle | agent | alias | alma mater | alma_mater | alt | awards | baptised | baptized | birth_date | birth_name | birth_place | birthname | boards | body discovered | body_discovered | burial_coordinates | burial_place | callsign | caption | child | children | citizenship | credits | criminal charge | criminal penalty | criminal status | criminal_charge | criminal_charges | criminal_penalty | criminal_status | death cause | death_cause | death_date | death_place | disappeared_date | disappeared_place | disappeared_status | domestic_partner | domesticpartner | education | embed | employer | era | family | father | footnotes | height | height_cm | height_ft | height_in | height_m | homepage | honorific prefix | honorific suffix | honorific_prefix | honorific_suffix | honorific-prefix | honorific-suffix | honors | honours | image | image caption | image size | image_caption | image_size | image_upright | imagesize | judicial status | judicial_status | known | known for | known_for | label_name | landscape | misc | misc2 | misc3 | misc4 | misc5 | misc6 | module | module2 | module3 | module4 | module5 | module6 | monuments | mother | movement | name | nationality | native_name | native_name_lang | nickname | nocat_wdimage | notable works | notable_works | occupation | office | opponents | organisation | organization | organizations | other names | other_names | othername | otherparty | parents | partner | partners | partner(s) | party | predecessor | pre-nominals | post-nominals | pronunciation | relations | relatives | resting place | resting place coordinates | resting_place | resting_place_coordinates | restingplace | restingplacecoordinates | siglum | signature | signature alt | signature_alt | signature_size | signature_type | spouse | spouses | spouse(s) | status | style | successor | template_name | television | term | title | URL | url | website | works | years active | years_active | yearsactive }}<!-- -->{{Main other|{{#if:{{{pronunciation|}}}|[[Category:Biography template using pronunciation]]}}<!-- -->{{#if:{{{signature|}}}|[[Category:Biography with signature]]}}<!-- -->[[Category:Articles with hCards]] }}<!-- -->{{#invoke:Check for clobbered parameters|check | nested = 1 | template = [[Template:{{#if:{{{template_name|}}}|{{ucfirst:{{{template_name|}}}}}|Infobox person}}]] | cat = {{main other|Category:Pages using {{if empty|{{{template_name|}}}|infobox person}} with conflicting parameters}} | child; embed | honorific prefix; honorific_prefix; honorific-prefix; pre-nominals | honorific suffix; honorific_suffix; honorific-suffix; post-nominals | image size; image_size; imagesize | image caption; caption; image_caption | birth_name; birthname | baptized; baptised | status; disappeared_status | death cause; death_cause | body discovered; body_discovered | resting place; resting_place; restingplace | resting place coordinates; resting_place_coordinates; restingplacecoordinates | other names; other_names; othername; nickname; alias | alma mater; alma_mater | years active; years_active; yearsactive | organisation; organization; organizations | known for= known_for; known | {{#if:{{{works|}}}|works;}} {{#if:{{{credits|}}}|credits;}} {{#if:{{{label_name|}}}|label_name;}} notable works; notable_works | height_m; height_cm | office; title | criminal_charges; criminal charge; criminal_charge | criminal penalty; criminal_penalty | judicial status; judicial_status | criminal status; criminal_status | spouse; spouses; spouse(s) | partner; domesticpartner; domestic_partner; partners; partner(s) | {{#if:{{{parents|}}}||NULL_}}parents; {{#if:{{{father|}}}||NULL_}}father | {{#if:{{{parents|}}}||NULL_}}parents; {{#if:{{{mother|}}}||NULL_}}mother | relations; relatives | honours; honors | misc; module | misc2; module2 | misc3; module3 | misc4; module4 | misc5; module5 | misc6; module6 | website; homepage; URL; url }}<includeonly>{{#ifeq:{{{child|{{{embed|}}}}}}|yes||{{Wikidata image|1={{{image|}}}|2={{{nocat_wdimage|}}}}}}}</includeonly><noinclude> {{documentation}}</noinclude> 1df2af7008865508f130b52479b6e8e951d9ca44 Template:Switcher/doc 10 1729 3262 2023-06-02T12:15:11Z wikipedia>WOSlinker 0 syntaxhighlight lang="wikitext" wikitext text/x-wiki {{Documentation subpage}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> This template is used to create a switchable image with caption, for use in infoboxes. Note that this template does not work in the editing preview. == Parameters == Odd numbered parameters provide the image in wikitext; even numbered parameters provide the captions. Up to 20 images are supported. == Example == <syntaxhighlight lang="wikitext"> {{Switcher | [[File:Example.png|300px]] | An example | [[File:Example image not to be used in article namespace.jpg|300px]] | A different example }} </syntaxhighlight> Output: {{Switcher | [[File:Example.png|300px]] | An example | [[File:Example image not to be used in article namespace.jpg|300px]] | A different example }} ==TemplateData== <templatedata> { "params": { "1": { "description": "Image 1 wikitext", "example": "[[File:Example.png|300px]]", "type": "unbalanced-wikitext" }, "2": { "description": "Image 1 caption", "example": "This is just an example.", "type": "string" }, "3": { "description": "See {{{1}}} (recursive)", "type": "unbalanced-wikitext" }, "4": { "description": "See {{{2}}} (recursive)", "type": "string" } }, "description": "Creates a switchable image with caption for use in infoboxes" } </templatedata> 330b78009be757eea7e8649ba816537c6af1f65d Template:Navbox visibility 10 1294 2629 2023-06-03T15:34:42Z w>WhatamIdoing 0 Update wikitext text/x-wiki Templates using the classes <code>class=navbox</code> ({{tl|navbox}}) or <code>class=nomobile</code> ({{tl|sidebar}}) are not displayed on the [https://en.m.wikipedia.org/ mobile web site] of English Wikipedia. Mobile page views account for approximately 65% of all page views (90-day average {{as of|May 2023|lc=y}}).<noinclude> {{documentation}} </noinclude> 3b1f65df829fd9f96b9c4f002fba38a0fd987a6b Module:Mapframe/doc 828 1739 3293 2023-06-09T09:40:33Z wikipedia>Paine Ellsworth 0 High-use template wikitext text/x-wiki {{Module rating |beta}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{High-use}} {{Lua|Module:Transcluder}} On English Wikipedia, this module is called by {{tlx|Maplink}}, see that template's documentation for usage instructions. == Usage == ;Standard usage: :Just use {{tl|Maplink}}, which passes its parameters to this module's {{mono|main}} function. ;From another module: :# Import this module, e.g. <code><nowiki>local mf = require('Module:Mapframe')</nowiki></code> :# Pass a table of parameter names/values to the {{mono|_main}} function. See {{tl|Maplink}} documentation for parameter names and descriptions. E.g. <code><nowiki>local mapframe = mf._main(parameters)</nowiki></code> :# Preprocess {{mono|_main}}'s output before returning it, e.g. <code><nowiki>return frame:preprocess(mapframe)</nowiki></code> == Set up on another wiki == # '''Create template and module:''' #* Import this module and its template to that wiki (or copy the code over, giving attribution in the edit summary). Optionally, give them a name that makes sense in that wiki's language #* On Wikidata, add them to the items {{wde|Q52554979}} and {{wde|Q27882107}} # '''Localise the module''' #* Edit the top bits of the module, between the comments <code>-- ##### Localisation (L10n) settings #####</code> and <code>-- #### End of L10n settings ####</code>, replacing values between <code>"</code> <code>"</code> symbols with local values (when necessary) # '''Add documentation''' #* to the template (e.g. by translating [[Template:Maplink/doc]], adjusting as necessary per any localisations made in the previous step) #* to the module (please transfer/translate these instructions so that wikimedians who read your wiki but not the English Wikipedia can also set up the module and template on another wiki). <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> }}</includeonly> 47c4c6915b49b24acb2d97871354c5d87de5b5a7 Template:CountryPrefixThe 10 195 444 2023-06-10T22:25:23Z wikipedia>Aidan721 0 add Dutch Caribbean wikitext text/x-wiki <includeonly>{{{{{|safesubst:}}}#switch: {{{1|}}} | Austrian Empire | Bahamas | Batavian Republic | Belgian Congo | British Antarctic Territory | British Empire | British Virgin Islands | Bukharan People's Soviet Republic | Cape Colony | Captaincy General of Chile | Caribbean | Cayman Islands | Central African Republic | Channel Islands | Collectivity of Saint Martin | Colony of Natal | Colony of Santiago | Comoros | Congo Free State | Cook Islands | Cossack Hetmanate | Crown Dependencies | Czech Republic | Danish colonial empire | Democratic Republic of the Congo | Dominican Republic | Dominion of Newfoundland | Donetsk People's Republic | Duchy of Nassau | Dutch Caribbean | Dutch East Indies | Dutch Empire | Dutch Republic | Empire of Brazil | Falkland Islands | Falkland Islands Dependencies | Faroe Islands | Federal Republic of Central America | Federated States of Micronesia | Federation of Rhodesia and Nyasaland | French Union | French colonial empire | Gambia | German Empire | German colonial empire | Greater Republic of Central America | Gilbert and Ellice Islands | Grand Duchy of Hesse | Grand Duchy of Tuscany | Habsburg monarchy | Habsburg Netherlands | Hawaiian Kingdom | Holy Roman Empire | Holy See | Inca civilization | Irish Free State | Isle of Man | Italian Empire | Japanese colonial empire | Kazakh Autonomous Socialist Soviet Republic | Kazakh Soviet Socialist Republic | Kingdom of Hanover | Kingdom of Hawaii | Kingdom of Jerusalem | Kingdom of Naples | Kingdom of Sardinia | Kingdom of Sicily | Kingdom of the Two Sicilies | Kirghiz Soviet Socialist Republic | Luhansk People's Republic | Maldives | Mamluk Sultanate | Maratha Empire | Marshall Islands | Moldavian Autonomous Soviet Socialist Republic | Moldavian Soviet Socialist Republic | Mongol Empire | Mughal Empire | Nagorno-Karabakh Republic | Netherlands | Netherlands Antilles | New Hebrides | Northern Mariana Islands | Orange Free State | Ottoman Empire | Palestinian territories | Papal States | Philippines | Pitcairn Islands | Polish–Lithuanian Commonwealth | Portuguese Empire | Province of Quebec (1763–1791) | Republic of Artsakh | Republic of Florence | Republic of Genoa | Republic of Ireland | Republic of Macedonia | Republic of New Granada | Republic of Texas | Republic of the Congo | Republic of Venice | Russian Empire | Sahrawi Arab Democratic Republic | Socialist Republic of Macedonia | Solomon Islands | South African Republic | Southern Nigeria Protectorate | Soviet Union | Spanish East Indies | Spanish Empire | Spanish West Indies | State of Palestine | Straits Settlements | Swedish colonial empire | Territory of Papua | Thirteen Colonies | Trucial States | Trust Territory of the Pacific Islands | Turkmen Soviet Socialist Republic | Turks and Caicos Islands | United Arab Emirates | United Kingdom | United States | United States Virgin Islands | Viceroyalty of New Granada | Viceroyalty of Peru | Viceroyalty of the Río de la Plata | Zulu Kingdom =<!-- -->{{#ifeq: {{Yesno-no|{{{capitalised|{{{capitalized|}}}}}}}}|yes|The|the}} {{#ifeq: {{Yesno-no|{{{onlythe|}}}}}|yes||{{{1|}}}}}<!-- -->|#default={{#ifeq: {{Yesno-no|{{{onlythe|}}}}}|yes||{{{1|}}}}}<!-- -->}}</includeonly><noinclude> {{Documentation}} </noinclude> fed009e885630af9150708cf0df3d0f2e3938c43 Template:Party politics 10 882 1954 2023-06-11T07:04:29Z wikipedia>HudecEmil 0 parliamentary group, faction distinguish wikitext text/x-wiki {{Politics series sidebar | name = Party politics | bodystyle = | pretitle = Part of the [[:Category:Politics|Politics series]] | title = [[Political party|Party politics]] | titlestyle = padding-bottom:3; background:; | expanded = {{{expanded|{{{selected|{{{1|}}}}}}}}} | list1name = political spectrum | contentstyle = text-align:center; | list1title = [[Political spectrum]] | list1 = {{Sidebar |bodystyle={{subsidebar bodystyle}} |navbar=off |contentstyle=padding-top:0;padding-bottom:0.1em; | heading1 = [[Left-wing politics|Left-wing]] | content1 = {{hlist | [[Far-left politics|Far-left]] | [[Centre-left politics|Centre-left]]}} | heading2 = [[Centrism|Centre]] | content2 = {{hlist | [[Centre-left politics|Centre-left]] | [[Radical centrism|Radical centre]] | [[Centre-right politics|Centre-right]]}} | heading3 = [[Right-wing politics|Right-wing]] | content3 = {{hlist | [[Centre-right politics|Centre-right]]| [[Far-right politics|Far-right]]}} }} | list2name = platform | list2title = [[Party platform|Platform]]s/[[Ideological politics|Ideologies]] | list2 = {{flatlist| * [[Anarchism|Anarchist]] * [[Christian democracy|Christian democratic]] * [[Communism|Communist]] * [[Conservatism|Conservative]] * [[Democracy|Democratic]] * [[Environmentalism|Environmentalist]] * [[Fascism|Fascist]] * [[Fundamentalism|Fundamentalist]] * [[Globalism|Globalist]] * [[Green politics|Green]] * [[Internationalism (politics)|Internationalist]] * [[Liberalism|Liberal]] * [[Libertarianism|Libertarian]] * [[Nationalism|Nationalist]] * [[Pirate Party|Pirate Party]] * [[Populism|Populist]] * [[Progressivism|Progressive]] * [[Classical radicalism|Radical]] * [[Regionalism (politics)|Regionalist]] * [[Republicanism|Republican]] * [[Social democracy|Social democratic]] * [[Socialism|Socialist]] * [[Syncretic politics|Syncretic]]}} | list3name = types | list3title = Types | list3 = {{flatlist| * [[Elite party]] * [[Cartel party theory|Cartel party]] * [[Big tent|Catch-all party]] * [[Business-firm party|Entrepreneurial party]] * [[Mass politics|Mass party]] * [[Ruling party]] * [[Opposition (politics)|Opposition party]] * [[Parliamentary opposition]] * [[Official party status]] * [[Single-issue politics#Single-issue parties|Single-issue party]]}} | list4name = organization | list4title = Leaders and organization | list4 = {{flatlist| * [[Backbencher]] * [[Caucus]] * [[Caucus chair]] * [[Floor leader]] * [[Frontbencher]] * [[Lead candidate]] * [[Leader of the Opposition]] * [[Majority leader]] * [[Minority leader]] * [[Political faction]] * [[Parliamentary leader]] * [[Party chair]] * [[Party leader]] * [[Party spokesperson]] * [[Secretary (title)|Secretary]] * [[Shadow cabinet]] * [[Whip (politics)|Whip]]}} | list5name = Internal elections | list5title = Internal elections | list5 = {{flatlist| * [[Primary election]] * [[Leadership election]] * [[Open list]] * [[Party conference|Party convention/conference]] * [[Leadership convention]] }} | list6name = party discipline | list6title = [[Party discipline]] | list6 = {{flatlist| * [[Conscience vote]] * [[Crossing the floor]] * [[Party discipline]] * [[Party line (politics)|Party line]] * [[Party-line vote]] * [[Party switching]] }} | list7name = party systems | list7title = [[Party system]]s | list7 = {{Sidebar |bodystyle={{subsidebar bodystyle}} |navbar=off |contentstyle=padding-top:0;padding-bottom:0em; | heading1 = | content1 = {{hlist |[[One-party state|One-party]]}} {{hlist |[[Dominant-party system|Dominant-party]] |[[Two-party system|Two-party]] |[[Multi-party system|Multi-party]]}} {{hlist |[[Non-partisan democracy|Non-partisan]]}} }} | list8name = coalition | list8title= [[Coalition]]s between parties | list8 = {{flatlist| * [[Parliamentary group]] * [[Divided government]] * [[Coalition government]] * [[Confidence and supply]] * [[Consensus government]] * [[Grand coalition]] * [[Hung parliament]] * [[Majority government]] * [[Minority government]] * [[National unity government]] * [[Rotation government]]}} | list9name = lists | list9title = [[Lists of political parties]] | list9 = {{flatlist| * [[List of ruling political parties by country|Ruling parties by country]] * [[List of political parties by region|Political parties by region]] * [[List of political ideologies|Political ideologies]] * [[List of banned political parties|Banned political parties]]}} | belowclass = plainlist | belowstyle = text-align:center; font-weight:normal; border-top:1px solid; border-bottom:1px solid; | below = * {{portal-inline|Politics|size=tiny}} }}<noinclude> {{collapsible lists option|listnames="Political spectrum", "Platform", "Types", "Organization", "Internal democracy", "Party system", "Coalition", "Lists"|example=platform}} [[Category:Political party sidebar templates| ]] [[Category:Politics series sidebar templates]] </noinclude> c2ac6c0fa425d9c83eb53a72a2822ff1a654352a Module:Age 828 1227 2560 2023-06-11T07:27:55Z w>Johnuniq 0 change default for {{age}} from range=no to range=dash per [[Template talk:Age#Inaccurate age shown]] Scribunto text/plain -- Implement various "age of" and other date-related templates. local mtext = { -- Message and other text that should be localized. -- Also need to localize text in table names in function dateDifference. ['mt-bad-param1'] = 'Invalid parameter $1', ['mt-bad-param2'] = 'Parameter $1=$2 is invalid', ['mt-bad-show'] = 'Parameter show=$1 is not supported here', ['mt-cannot-add'] = 'Cannot add "$1"', ['mt-conflicting-show'] = 'Parameter show=$1 conflicts with round=$2', ['mt-date-wrong-order'] = 'The second date must be later in time than the first date', ['mt-dd-future'] = 'Death date (first date) must not be in the future', ['mt-dd-wrong-order'] = 'Death date (first date) must be later in time than the birth date (second date)', ['mt-invalid-bd-age'] = 'Invalid birth date for calculating age', ['mt-invalid-dates-age'] = 'Invalid dates for calculating age', ['mt-invalid-end'] = 'Invalid end date in second parameter', ['mt-invalid-start'] = 'Invalid start date in first parameter', ['mt-need-jdn'] = 'Need valid Julian date number', ['mt-need-valid-bd'] = 'Need valid birth date: year, month, day', ['mt-need-valid-bd2'] = 'Need valid birth date (second date): year, month, day', ['mt-need-valid-date'] = 'Need valid date', ['mt-need-valid-dd'] = 'Need valid death date (first date): year, month, day', ['mt-need-valid-ymd'] = 'Need valid year, month, day', ['mt-need-valid-ymd-current'] = 'Need valid year|month|day or "currentdate"', ['mt-need-valid-ymd2'] = 'Second date should be year, month, day', ['mt-template-bad-name'] = 'The specified template name is not valid', ['mt-template-x'] = 'The template invoking this must have "|template=x" where x is the wanted operation', ['txt-and'] = ' and ', ['txt-or'] = '&nbsp;or ', ['txt-category'] = 'Category:Age error', ['txt-comma-and'] = ', and ', ['txt-error'] = 'Error: ', ['txt-format-default'] = 'mf', -- 'df' (day first = dmy) or 'mf' (month first = mdy) ['txt-module-convertnumeric'] = 'Module:ConvertNumeric', ['txt-module-date'] = 'Module:Date', ['txt-sandbox'] = 'sandbox', ['txt-bda'] = '<span style="display:none"> (<span class="bday">$1</span>) </span>$2<span class="noprint ForceAgeToShow"> (age&nbsp;$3)</span>', ['txt-dda'] = '$2<span style="display:none">($1)</span> (aged&nbsp;$3)', ['txt-bda-disp'] = 'disp_raw', -- disp_raw → age is a number only; disp_age → age is a number and unit (normally years but months or days if very young) ['txt-dda-disp'] = 'disp_raw', ['txt-dmy'] = '%-d %B %-Y', ['txt-mdy'] = '%B %-d, %-Y', } local isWarning = { ['mt-bad-param1'] = true, } local translate, from_en, to_en, isZero if translate then -- Functions to translate from en to local language and reverse go here. -- See example at [[:bn:Module:বয়স]]. else from_en = function (text) return text end isZero = function (text) return tonumber(text) == 0 end end local _Date, _currentDate local function getExports(frame) -- Return objects exported from the date module or its sandbox. if not _Date then local sandbox = frame:getTitle():find(mtext['txt-sandbox'], 1, true) and ('/' .. mtext['txt-sandbox']) or '' local datemod = require(mtext['txt-module-date'] .. sandbox) local realDate = datemod._Date _currentDate = datemod._current if to_en then _Date = function (...) local args = {} for i, v in ipairs({...}) do args[i] = to_en(v) end return realDate(unpack(args)) end else _Date = realDate end end return _Date, _currentDate end local Collection -- a table to hold items Collection = { add = function (self, item) if item ~= nil then self.n = self.n + 1 self[self.n] = item end end, join = function (self, sep) return table.concat(self, sep) end, remove = function (self, pos) if self.n > 0 and (pos == nil or (0 < pos and pos <= self.n)) then self.n = self.n - 1 return table.remove(self, pos) end end, sort = function (self, comp) table.sort(self, comp) end, new = function () return setmetatable({n = 0}, Collection) end } Collection.__index = Collection local function stripToNil(text) -- If text is a string, return its trimmed content, or nil if empty. -- Otherwise return text (which may, for example, be nil). if type(text) == 'string' then text = text:match('(%S.-)%s*$') end return text end local function dateFormat(args) -- Return string for wanted date format. local default = mtext['txt-format-default'] local other = default == 'df' and 'mf' or 'df' local wanted = stripToNil(args[other]) and other or default return wanted == 'df' and mtext['txt-dmy'] or mtext['txt-mdy'] end local function substituteParameters(text, ...) -- Return text after substituting any given parameters for $1, $2, etc. return mw.message.newRawMessage(text, ...):plain() end local function yes(parameter) -- Return true if parameter should be interpreted as "yes". -- Do not want to accept mixed upper/lowercase unless done by current templates. -- Need to accept "on" because "round=on" is wanted. return ({ y = true, yes = true, on = true })[parameter] end local function message(msg, ...) -- Return formatted message text for an error or warning. local function getText(msg) return mtext[msg] or error('Bug: message "' .. tostring(msg) .. '" not defined') end local categories = { error = mtext['txt-category'], warning = mtext['txt-category'], } local a, b, k, category local text = substituteParameters(getText(msg), ...) if isWarning[msg] then a = '<sup>[<i>' b = '</i>]</sup>' k = 'warning' else a = '<strong class="error">' .. getText('txt-error') b = '</strong>' k = 'error' end if mw.title.getCurrentTitle():inNamespaces(0) then -- Category only in namespaces: 0=article. category = '[[' .. categories[k] .. ']]' end return a .. mw.text.nowiki(text) .. b .. (category or '') end local function formatNumber(number) -- Return the given number formatted with commas as group separators, -- given that the number is an integer. local numstr = tostring(number) local length = #numstr local places = Collection.new() local pos = 0 repeat places:add(pos) pos = pos + 3 until pos >= length places:add(length) local groups = Collection.new() for i = places.n, 2, -1 do local p1 = length - places[i] + 1 local p2 = length - places[i - 1] groups:add(numstr:sub(p1, p2)) end return groups:join(',') end local function spellNumber(number, options, i) -- Return result of spelling number, or -- return number (as a string) if cannot spell it. -- i == 1 for the first number which can optionally start with an uppercase letter. number = tostring(number) return require(mtext['txt-module-convertnumeric']).spell_number( number, nil, -- fraction numerator nil, -- fraction denominator i == 1 and options.upper, -- true: 'One' instead of 'one' not options.us, -- true: use 'and' between tens/ones etc options.adj, -- true: hyphenated options.ordinal -- true: 'first' instead of 'one' ) or number end local function makeExtra(args, flagCurrent) -- Return extra text that will be inserted before the visible result -- but after any sort key. local extra = args.prefix or '' if mw.ustring.len(extra) > 1 then -- Parameter "~" gives "~3" whereas "over" gives "over 3". if extra:sub(-6, -1) ~= '&nbsp;' then extra = extra .. ' ' end end if flagCurrent then extra = '<span class="currentage"></span>' .. extra end return extra end local function makeSort(value, sortable) -- Return a sort key if requested. -- Assume value is a valid number which has not overflowed. if sortable == 'sortable_table' or sortable == 'sortable_on' or sortable == 'sortable_debug' then local sortKey if value == 0 then sortKey = '5000000000000000000' else local mag = math.floor(math.log10(math.abs(value)) + 1e-14) if value > 0 then sortKey = 7000 + mag else sortKey = 2999 - mag value = value + 10^(mag+1) end sortKey = string.format('%d', sortKey) .. string.format('%015.0f', math.floor(value * 10^(14-mag))) end local result if sortable == 'sortable_table' then result = 'data-sort-value="_SORTKEY_"|' elseif sortable == 'sortable_debug' then result = '<span data-sort-value="_SORTKEY_♠"><span style="border:1px solid">_SORTKEY_♠</span></span>' else result = '<span data-sort-value="_SORTKEY_♠"></span>' end return (result:gsub('_SORTKEY_', sortKey)) end end local translateParameters = { abbr = { off = 'abbr_off', on = 'abbr_on', }, disp = { age = 'disp_age', raw = 'disp_raw', }, format = { raw = 'format_raw', commas = 'format_commas', }, round = { on = 'on', yes = 'on', months = 'ym', weeks = 'ymw', days = 'ymd', hours = 'ymdh', }, sep = { comma = 'sep_comma', [','] = 'sep_comma', serialcomma = 'sep_serialcomma', space = 'sep_space', }, show = { hide = { id = 'hide' }, y = { 'y', id = 'y' }, ym = { 'y', 'm', id = 'ym' }, ymd = { 'y', 'm', 'd', id = 'ymd' }, ymw = { 'y', 'm', 'w', id = 'ymw' }, ymwd = { 'y', 'm', 'w', 'd', id = 'ymwd' }, yd = { 'y', 'd', id = 'yd', keepZero = true }, m = { 'm', id = 'm' }, md = { 'm', 'd', id = 'md' }, w = { 'w', id = 'w' }, wd = { 'w', 'd', id = 'wd' }, h = { 'H', id = 'h' }, hm = { 'H', 'M', id = 'hm' }, hms = { 'H', 'M', 'S', id = 'hms' }, M = { 'M', id = 'M' }, s = { 'S', id = 's' }, d = { 'd', id = 'd' }, dh = { 'd', 'H', id = 'dh' }, dhm = { 'd', 'H', 'M', id = 'dhm' }, dhms = { 'd', 'H', 'M', 'S', id = 'dhms' }, ymdh = { 'y', 'm', 'd', 'H', id = 'ymdh' }, ymdhm = { 'y', 'm', 'd', 'H', 'M', id = 'ymdhm' }, ymwdh = { 'y', 'm', 'w', 'd', 'H', id = 'ymwdh' }, ymwdhm = { 'y', 'm', 'w', 'd', 'H', 'M', id = 'ymwdhm' }, }, sortable = { off = false, on = 'sortable_on', table = 'sortable_table', debug = 'sortable_debug', }, } local spellOptions = { cardinal = {}, Cardinal = { upper = true }, cardinal_us = { us = true }, Cardinal_us = { us = true, upper = true }, ordinal = { ordinal = true }, Ordinal = { ordinal = true, upper = true }, ordinal_us = { ordinal = true, us = true }, Ordinal_us = { ordinal = true, us = true, upper = true }, } local function dateExtract(frame) -- Return part of a date after performing an optional operation. local Date = getExports(frame) local args = frame:getParent().args local parms = {} for i, v in ipairs(args) do parms[i] = v end if yes(args.fix) then table.insert(parms, 'fix') end if yes(args.partial) then table.insert(parms, 'partial') end local show = stripToNil(args.show) or 'dmy' local date = Date(unpack(parms)) if not date then if show == 'format' then return 'error' end return message('mt-need-valid-date') end local add = stripToNil(args.add) if add then for item in add:gmatch('%S+') do date = date + item if not date then return message('mt-cannot-add', item) end end end local sortKey, result local sortable = translateParameters.sortable[args.sortable] if sortable then local value = (date.partial and date.partial.first or date).jdz sortKey = makeSort(value, sortable) end if show ~= 'hide' then result = date[show] if result == nil then result = from_en(date:text(show)) elseif type(result) == 'boolean' then result = result and '1' or '0' else result = from_en(tostring(result)) end end return (sortKey or '') .. makeExtra(args) .. (result or '') end local function rangeJoin(range) -- Return text to be used between a range of ages. return range == 'dash' and '–' or mtext['txt-or'] end local function makeText(values, components, names, options, noUpper) -- Return wikitext representing an age or duration. local text = Collection.new() local count = #values local sep = names.sep or '' for i, v in ipairs(values) do -- v is a number (say 4 for 4 years), or a table ({4,5} for 4 or 5 years). local islist = type(v) == 'table' if (islist or v > 0) or (text.n == 0 and i == count) or (text.n > 0 and components.keepZero) then local fmt, vstr if options.spell then fmt = function(number) return spellNumber(number, options.spell, noUpper or i) end elseif i == 1 and options.format == 'format_commas' then -- Numbers after the first should be small and not need formatting. fmt = formatNumber else fmt = tostring end if islist then vstr = fmt(v[1]) .. rangeJoin(options.range) noUpper = true vstr = vstr .. fmt(v[2]) else vstr = fmt(v) end local name = names[components[i]] if name then if type(name) == 'table' then name = mw.getContentLanguage():plural(islist and v[2] or v, name) end text:add(vstr .. sep .. name) else text:add(vstr) end end end local first, last if options.join == 'sep_space' then first = ' ' last = ' ' elseif options.join == 'sep_comma' then first = ', ' last = ', ' elseif options.join == 'sep_serialcomma' and text.n > 2 then first = ', ' last = mtext['txt-comma-and'] else first = ', ' last = mtext['txt-and'] end for i, v in ipairs(text) do if i < text.n then text[i] = v .. (i + 1 < text.n and first or last) end end local sign = '' if options.isnegative then -- Do not display negative zero. if text.n > 1 or (text.n == 1 and text[1]:sub(1, 1) ~= '0' ) then if options.format == 'format_raw' then sign = '-' -- plain hyphen so result can be used in a calculation else sign = '−' -- Unicode U+2212 MINUS SIGN end end end return (options.sortKey or '') .. (options.extra or '') .. sign .. text:join() .. (options.suffix or '') end local function dateDifference(parms) -- Return a formatted date difference using the given parameters -- which have been validated. local names = { -- Each name is: -- * a string if no plural form of the name is used; or -- * a table of strings, one of which is selected using the rules at -- https://translatewiki.net/wiki/Plural/Mediawiki_plural_rules abbr_off = { sep = '&nbsp;', y = {'year', 'years'}, m = {'month', 'months'}, w = {'week', 'weeks'}, d = {'day', 'days'}, H = {'hour', 'hours'}, M = {'minute', 'minutes'}, S = {'second', 'seconds'}, }, abbr_on = { y = 'y', m = 'm', w = 'w', d = 'd', H = 'h', M = 'm', S = 's', }, abbr_infant = { -- for {{age for infant}} sep = '&nbsp;', y = {'yr', 'yrs'}, m = {'mo', 'mos'}, w = {'wk', 'wks'}, d = {'day', 'days'}, H = {'hr', 'hrs'}, M = {'min', 'mins'}, S = {'sec', 'secs'}, }, abbr_raw = {}, } local diff = parms.diff -- must be a valid date difference local show = parms.show -- may be nil; default is set below local abbr = parms.abbr or 'abbr_off' local defaultJoin if abbr ~= 'abbr_off' then defaultJoin = 'sep_space' end if not show then show = 'ymd' if parms.disp == 'disp_age' then if diff.years < 3 then defaultJoin = 'sep_space' if diff.years >= 1 then show = 'ym' else show = 'md' end else show = 'y' end end end if type(show) ~= 'table' then show = translateParameters.show[show] end if parms.disp == 'disp_raw' then defaultJoin = 'sep_space' abbr = 'abbr_raw' elseif parms.wantSc then defaultJoin = 'sep_serialcomma' end local diffOptions = { round = parms.round, duration = parms.wantDuration, range = parms.range and true or nil, } local sortKey if parms.sortable then local value = diff.age_days + (parms.wantDuration and 1 or 0) -- days and fraction of a day if diff.isnegative then value = -value end sortKey = makeSort(value, parms.sortable) end local textOptions = { extra = parms.extra, format = parms.format, join = parms.sep or defaultJoin, isnegative = diff.isnegative, range = parms.range, sortKey = sortKey, spell = parms.spell, suffix = parms.suffix, -- not currently used } if show.id == 'hide' then return sortKey or '' end local values = { diff:age(show.id, diffOptions) } if values[1] then return makeText(values, show, names[abbr], textOptions) end if diff.partial then -- Handle a more complex range such as -- {{age_yd|20 Dec 2001|2003|range=yes}} → 1 year, 12 days or 2 years, 11 days local opt = { format = textOptions.format, join = textOptions.join, isnegative = textOptions.isnegative, spell = textOptions.spell, } return (textOptions.sortKey or '') .. makeText({ diff.partial.mindiff:age(show.id, diffOptions) }, show, names[abbr], opt) .. rangeJoin(textOptions.range) .. makeText({ diff.partial.maxdiff:age(show.id, diffOptions) }, show, names[abbr], opt, true) .. (textOptions.suffix or '') end return message('mt-bad-show', show.id) end local function getDates(frame, getopt) -- Parse template parameters and return one of: -- * date (a date table, if single) -- * date1, date2 (two date tables, if not single) -- * text (a string error message) -- A missing date is optionally replaced with the current date. -- If wantMixture is true, a missing date component is replaced -- from the current date, so can get a bizarre mixture of -- specified/current y/m/d as has been done by some "age" templates. -- Some results may be placed in table getopt. local Date, currentDate = getExports(frame) getopt = getopt or {} local function flagCurrent(text) -- This allows the calling template to detect if the current date has been used, -- that is, whether both dates have been entered in a template expecting two. -- For example, an infobox may want the age when an event occurred, not the current age. -- Don't bother detecting if wantMixture is used because not needed and it is a poor option. if not text then if getopt.noMissing then return nil -- this gives a nil date which gives an error end text = 'currentdate' if getopt.flag == 'usesCurrent' then getopt.usesCurrent = true end end return text end local args = frame:getParent().args local fields = {} local isNamed = args.year or args.year1 or args.year2 or args.month or args.month1 or args.month2 or args.day or args.day1 or args.day2 if isNamed then fields[1] = args.year1 or args.year fields[2] = args.month1 or args.month fields[3] = args.day1 or args.day fields[4] = args.year2 fields[5] = args.month2 fields[6] = args.day2 else for i = 1, 6 do fields[i] = args[i] end end local imax = 0 for i = 1, 6 do fields[i] = stripToNil(fields[i]) if fields[i] then imax = i end if getopt.omitZero and i % 3 ~= 1 then -- omit zero months and days as unknown values but keep year 0 which is 1 BCE if isZero(fields[i]) then fields[i] = nil getopt.partial = true end end end local fix = getopt.fix and 'fix' or '' local partialText = getopt.partial and 'partial' or '' local dates = {} if isNamed or imax >= 3 then local nrDates = getopt.single and 1 or 2 if getopt.wantMixture then -- Cannot be partial since empty fields are set from current. local components = { 'year', 'month', 'day' } for i = 1, nrDates * 3 do fields[i] = fields[i] or currentDate[components[i > 3 and i - 3 or i]] end for i = 1, nrDates do local index = i == 1 and 1 or 4 local y, m, d = fields[index], fields[index+1], fields[index+2] if (m == 2 or m == '2') and (d == 29 or d == '29') then -- Workaround error with following which attempt to use invalid date 2001-02-29. -- {{age_ymwd|year1=2001|year2=2004|month2=2|day2=29}} -- {{age_ymwd|year1=2001|month1=2|year2=2004|month2=1|day2=29}} -- TODO Get rid of wantMixture because even this ugly code does not handle -- 'Feb' or 'February' or 'feb' or 'february'. if not ((y % 4 == 0 and y % 100 ~= 0) or y % 400 == 0) then d = 28 end end dates[i] = Date(y, m, d) end else -- If partial dates are allowed, accept -- year only, or -- year and month only -- Do not accept year and day without a month because that makes no sense -- (and because, for example, Date('partial', 2001, nil, 12) sets day = nil, not 12). for i = 1, nrDates do local index = i == 1 and 1 or 4 local y, m, d = fields[index], fields[index+1], fields[index+2] if (getopt.partial and y and (m or not d)) or (y and m and d) then dates[i] = Date(fix, partialText, y, m, d) elseif not y and not m and not d then dates[i] = Date(flagCurrent()) end end end else getopt.textdates = true -- have parsed each date from a single text field dates[1] = Date(fix, partialText, flagCurrent(fields[1])) if not getopt.single then dates[2] = Date(fix, partialText, flagCurrent(fields[2])) end end if not dates[1] then return message(getopt.missing1 or 'mt-need-valid-ymd') end if getopt.single then return dates[1] end if not dates[2] then return message(getopt.missing2 or 'mt-need-valid-ymd2') end return dates[1], dates[2] end local function ageGeneric(frame) -- Return the result required by the specified template. -- Can use sortable=x where x = on/table/off/debug in any supported template. -- Some templates default to sortable=on but can be overridden. local name = frame.args.template if not name then return message('mt-template-x') end local args = frame:getParent().args local specs = { age_days = { -- {{age in days}} show = 'd', disp = 'disp_raw', }, age_days_nts = { -- {{age in days nts}} show = 'd', disp = 'disp_raw', format = 'format_commas', sortable = 'on', }, duration_days = { -- {{duration in days}} show = 'd', disp = 'disp_raw', duration = true, }, duration_days_nts = { -- {{duration in days nts}} show = 'd', disp = 'disp_raw', format = 'format_commas', sortable = 'on', duration = true, }, age_full_years = { -- {{age}} show = 'y', abbr = 'abbr_raw', flag = 'usesCurrent', omitZero = true, range = 'dash', }, age_full_years_nts = { -- {{age nts}} show = 'y', abbr = 'abbr_raw', format = 'format_commas', sortable = 'on', }, age_in_years = { -- {{age in years}} show = 'y', abbr = 'abbr_raw', negative = 'error', range = 'dash', }, age_in_years_nts = { -- {{age in years nts}} show = 'y', abbr = 'abbr_raw', negative = 'error', range = 'dash', format = 'format_commas', sortable = 'on', }, age_infant = { -- {{age for infant}} -- Do not set show because special processing is done later. abbr = yes(args.abbr) and 'abbr_infant' or 'abbr_off', disp = 'disp_age', sep = 'sep_space', sortable = 'on', }, age_m = { -- {{age in months}} show = 'm', disp = 'disp_raw', }, age_w = { -- {{age in weeks}} show = 'w', disp = 'disp_raw', }, age_wd = { -- {{age in weeks and days}} show = 'wd', }, age_yd = { -- {{age in years and days}} show = 'yd', format = 'format_commas', sep = args.sep ~= 'and' and 'sep_comma' or nil, }, age_yd_nts = { -- {{age in years and days nts}} show = 'yd', format = 'format_commas', sep = args.sep ~= 'and' and 'sep_comma' or nil, sortable = 'on', }, age_ym = { -- {{age in years and months}} show = 'ym', sep = 'sep_comma', }, age_ymd = { -- {{age in years, months and days}} show = 'ymd', range = true, }, age_ymwd = { -- {{age in years, months, weeks and days}} show = 'ymwd', wantMixture = true, }, } local spec = specs[name] if not spec then return message('mt-template-bad-name') end if name == 'age_days' then local su = stripToNil(args['show unit']) if su then if su == 'abbr' or su == 'full' then spec.disp = nil spec.abbr = su == 'abbr' and 'abbr_on' or nil end end end local partial, autofill local range = stripToNil(args.range) or spec.range if range then -- Suppose partial dates are used and age could be 11 or 12 years. -- "|range=" (empty value) has no effect (spec is used). -- "|range=yes" or spec.range == true sets range = true (gives "11 or 12") -- "|range=dash" or spec.range == 'dash' sets range = 'dash' (gives "11–12"). -- "|range=no" or spec.range == 'no' sets range = nil and fills each date in the diff (gives "12"). -- ("on" is equivalent to "yes", and "off" is equivalent to "no"). -- "|range=OTHER" sets range = nil and rejects partial dates. range = ({ dash = 'dash', off = 'no', no = 'no', [true] = true })[range] or yes(range) if range then partial = true -- accept partial dates with a possible age range for the result if range == 'no' then autofill = true -- missing month/day in first or second date are filled from other date or 1 range = nil end end end local getopt = { fix = yes(args.fix), flag = stripToNil(args.flag) or spec.flag, omitZero = spec.omitZero, partial = partial, wantMixture = spec.wantMixture, } local date1, date2 = getDates(frame, getopt) if type(date1) == 'string' then return date1 end local format = stripToNil(args.format) local spell = spellOptions[format] if format then format = 'format_' .. format elseif name == 'age_days' and getopt.textdates then format = 'format_commas' end local parms = { diff = date2:subtract(date1, { fill = autofill }), wantDuration = spec.duration or yes(args.duration), range = range, wantSc = yes(args.sc), show = args.show == 'hide' and 'hide' or spec.show, abbr = spec.abbr, disp = spec.disp, extra = makeExtra(args, getopt.usesCurrent and format ~= 'format_raw'), format = format or spec.format, round = yes(args.round), sep = spec.sep, sortable = translateParameters.sortable[args.sortable or spec.sortable], spell = spell, } if (spec.negative or frame.args.negative) == 'error' and parms.diff.isnegative then return message('mt-date-wrong-order') end return from_en(dateDifference(parms)) end local function bda(frame) -- Implement [[Template:Birth date and age]]. local args = frame:getParent().args local options = { missing1 = 'mt-need-valid-bd', noMissing = true, single = true, } local date = getDates(frame, options) if type(date) == 'string' then return date -- error text end local Date = getExports(frame) local diff = Date('currentdate') - date if diff.isnegative or diff.years > 150 then return message('mt-invalid-bd-age') end local disp = mtext['txt-bda-disp'] local show = 'y' if diff.years < 2 then disp = 'disp_age' if diff.years == 0 and diff.months == 0 then show = 'd' else show = 'm' end end local result = substituteParameters( mtext['txt-bda'], date:text('%-Y-%m-%d'), from_en(date:text(dateFormat(args))), from_en(dateDifference({ diff = diff, show = show, abbr = 'abbr_off', disp = disp, sep = 'sep_space', })) ) local warnings = tonumber(frame.args.warnings) if warnings and warnings > 0 then local good = { df = true, mf = true, day = true, day1 = true, month = true, month1 = true, year = true, year1 = true, } local invalid local imax = options.textdates and 1 or 3 for k, _ in pairs(args) do if type(k) == 'number' then if k > imax then invalid = tostring(k) break end else if not good[k] then invalid = k break end end end if invalid then result = result .. message('mt-bad-param1', invalid) end end return result end local function dda(frame) -- Implement [[Template:Death date and age]]. local args = frame:getParent().args local options = { missing1 = 'mt-need-valid-dd', missing2 = 'mt-need-valid-bd2', noMissing = true, partial = true, } local date1, date2 = getDates(frame, options) if type(date1) == 'string' then return date1 end local diff = date1 - date2 if diff.isnegative then return message('mt-dd-wrong-order') end local Date = getExports(frame) local today = Date('currentdate') + 1 -- one day in future allows for timezones if date1 > today then return message('mt-dd-future') end local years if diff.partial then years = diff.partial.years years = type(years) == 'table' and years[2] or years else years = diff.years end if years > 150 then return message('mt-invalid-dates-age') end local fmt_date, fmt_ymd if date1.day then -- y, m, d known fmt_date = dateFormat(args) fmt_ymd = '%-Y-%m-%d' elseif date1.month then -- y, m known; d unknown fmt_date = '%B %-Y' fmt_ymd = '%-Y-%m-00' else -- y known; m, d unknown fmt_date = '%-Y' fmt_ymd = '%-Y-00-00' end local sortKey local sortable = translateParameters.sortable[args.sortable] if sortable then local value = (date1.partial and date1.partial.first or date1).jdz sortKey = makeSort(value, sortable) end local result = (sortKey or '') .. substituteParameters( mtext['txt-dda'], date1:text(fmt_ymd), from_en(date1:text(fmt_date)), from_en(dateDifference({ diff = diff, show = 'y', abbr = 'abbr_off', disp = mtext['txt-dda-disp'], range = 'dash', sep = 'sep_space', })) ) local warnings = tonumber(frame.args.warnings) if warnings and warnings > 0 then local good = { df = true, mf = true, } local invalid local imax = options.textdates and 2 or 6 for k, _ in pairs(args) do if type(k) == 'number' then if k > imax then invalid = tostring(k) break end else if not good[k] then invalid = k break end end end if invalid then result = result .. message('mt-bad-param1', invalid) end end return result end local function dateToGsd(frame) -- Implement [[Template:Gregorian serial date]]. -- Return Gregorian serial date of the given date, or the current date. -- The returned value is negative for dates before 1 January 1 AD -- despite the fact that GSD is not defined for such dates. local date = getDates(frame, { wantMixture=true, single=true }) if type(date) == 'string' then return date end return tostring(date.gsd) end local function jdToDate(frame) -- Return formatted date from a Julian date. -- The result includes a time if the input includes a fraction. -- The word 'Julian' is accepted for the Julian calendar. local Date = getExports(frame) local args = frame:getParent().args local date = Date('juliandate', args[1], args[2]) if date then return from_en(date:text()) end return message('mt-need-jdn') end local function dateToJd(frame) -- Return Julian date (a number) from a date which may include a time, -- or the current date ('currentdate') or current date and time ('currentdatetime'). -- The word 'Julian' is accepted for the Julian calendar. local Date = getExports(frame) local args = frame:getParent().args local date = Date(args[1], args[2], args[3], args[4], args[5], args[6], args[7]) if date then return tostring(date.jd) end return message('mt-need-valid-ymd-current') end local function timeInterval(frame) -- Implement [[Template:Time interval]]. -- There are two positional arguments: date1, date2. -- The default for each is the current date and time. -- Result is date2 - date1 formatted. local Date = getExports(frame) local args = frame:getParent().args local parms = { extra = makeExtra(args), wantDuration = yes(args.duration), range = yes(args.range) or (args.range == 'dash' and 'dash' or nil), wantSc = yes(args.sc), } local fix = yes(args.fix) and 'fix' or '' local date1 = Date(fix, 'partial', stripToNil(args[1]) or 'currentdatetime') if not date1 then return message('mt-invalid-start') end local date2 = Date(fix, 'partial', stripToNil(args[2]) or 'currentdatetime') if not date2 then return message('mt-invalid-end') end parms.diff = date2 - date1 for argname, translate in pairs(translateParameters) do local parm = stripToNil(args[argname]) if parm then parm = translate[parm] if parm == nil then -- test for nil because false is a valid setting return message('mt-bad-param2', argname, args[argname]) end parms[argname] = parm end end if parms.round then local round = parms.round local show = parms.show if round ~= 'on' then if show then if show.id ~= round then return message('mt-conflicting-show', args.show, args.round) end else parms.show = translateParameters.show[round] end end parms.round = true end return from_en(dateDifference(parms)) end return { age_generic = ageGeneric, -- can emulate several age templates birth_date_and_age = bda, -- Template:Birth_date_and_age death_date_and_age = dda, -- Template:Death_date_and_age gsd = dateToGsd, -- Template:Gregorian_serial_date extract = dateExtract, -- Template:Extract jd_to_date = jdToDate, -- Template:? JULIANDAY = dateToJd, -- Template:JULIANDAY time_interval = timeInterval, -- Template:Time_interval } 094ef43a81ac2366c838b6ad889ed0ffe5a1eec4 Help:Infobox 12 88 223 2023-06-11T10:42:34Z wikipedia>IceWelder 0 /* Editing the target article */ Emulate VE style as defined by the infobox TemplateData wikitext text/x-wiki {{short description|Wikipedia help article}} {{about||a list of infoboxes|Wikipedia:List of infoboxes|and|Category:Infobox templates|the style guide|Wikipedia:Manual of Style/Infoboxes|the project|Wikipedia:WikiProject Infoboxes}} {{Wikipedia how to|H:IB}} [[File:Lundehund.png|thumb|Example of an infobox]] {{WikiProject Infoboxes sidebar}} An [[infobox]] is a fixed-format table usually added to the top right-hand corner of articles to consistently present a summary of some unifying aspect that the articles share and sometimes to improve navigation to other interrelated articles. Many infoboxes also emit structured [[metadata]] which is sourced by [[DBpedia]] and other third party re-users. The generalized infobox feature grew out of the original [[Wikipedia:How to read a taxobox|taxoboxes]] (taxonomy infoboxes) that editors developed to visually express the scientific classification of organisms. The use of infoboxes is neither required nor prohibited for any article. Whether to include an infobox, which infobox to include, and which parts of the infobox to use, is determined through [[Wikipedia:Consensus|discussion and consensus among the editors]] at each individual article. ==What infoboxes do== Infobox templates contain important facts and statistics of a type which are common to related articles. For instance, all animals have a scientific classification (species, family and so on), as well as a conservation status. Adding a {{tlx|taxobox}} to articles on animals therefore makes it easier to quickly find such information and to compare it with that of other articles. Infobox templates are like fact sheets, or sidebars, in magazine articles. They quickly summarize important points in an easy-to-read format. However, they are {{em|not}} "statistics" tables in that they (generally) only summarize material from an article<!--taxoboxes are an obvious exception, and so are element infoboxes -->—the information should still be present in the main text, partly because it may not be possible for some readers to access the contents of the infobox. In particular, if infobox templates hide long columns of data inside collapsing tables, then readers using [[screen reader|assistive technology]] may miss their presence entirely. Many infoboxes also emit metadata such as [[microformat]]s {{crossref|printworthy=y|(see [[WP:WikiProject Microformats]])}}. ==What should an infobox contain?== In general, data in infobox templates should be: * '''Comparable.''' If a lot of different subjects all share a common attribute (for instance, all people have a name and a date of birth), then it is useful to be able to compare these across different pages. This also implies that where possible, material should be presented in a standard format. * '''Concise.''' Infobox templates are "at-a-glance", and used for quickly checking facts. * '''Materially relevant to the subject.''' * '''Already cited elsewhere in the article.''' Infoboxes, like the [[Wikipedia:Manual of Style (lead section)|introduction to the article]], should primarily contain material that is expanded on and supported by citations to reliable sources elsewhere in the article. However, if necessary (e.g., because the article is currently incomplete), it is possible to include [[Wikipedia:Footnotes|footnotes]] in infoboxes. ==What should an infobox not contain?== In general, data in infobox templates should not have: * '''Excessive length.''' Long bodies of text, or very detailed statistics, belong in the article body. * '''Trivial details.''' A common problem is including material in the infobox which is trivial and would not otherwise be included in the article body: for example, a fictional character's [[blood type]] may be referenced in passing in a work, but it is not especially useful to understanding the subject. Infobox templates should not be used for details that are too trivial to include in the article body (there are some exceptions, such as chemical properties). * '''Flags.''' Flag icons should generally [[Wikipedia:Manual of Style/Icons#Avoid flag icons in infoboxes|not be used]] in infoboxes, even when there is a "country", "nationality" or equivalent field: they are unnecessarily distracting and give undue prominence to one field among many. ==Adding an infobox to an article== There are two steps required to add an infobox to an article: #Finding the infobox #Editing the article ===Finding the infobox=== In order to use an infobox in an article, an editor must know its name, parameters, and how those parameters are intended to be used. Because infoboxes are kept in a [[Wikipedia:Namespace|namespace]] separate from articles, it takes some effort to identify an infobox by name. Once the editor has the name, however, it is straightforward to look up the infobox's documentation. There are two ways in which an editor typically locates which infobox they want to use: *By browsing the set of all infoboxes via [[Wikipedia:List of infoboxes]]. *By determining the name of a particular infobox used in a similar article. For example, the article [[D-Terminal]] contains an infobox. To determine which one, simply edit the article: <syntaxhighlight lang="wikitext"> {{Infobox connector ... }} </syntaxhighlight> The "<CODE>{{Infobox connector</CODE>" identifies the markup between the enclosing braces as a use of the "<code>connector</code>" infobox. The editor can look up the documentation for the template, including a list of parameters, in the Template namespace under [[Template:Infobox connector]]. ===Editing the target article=== In accordance with [[WP:LAYOUT|Wikipedia's Manual of Style]], infoboxes should be placed at the top of an article after any [[MOS:DABINT|disambiguation links]] and [[WP:TM/MAIN|maintenance tags]]. The infobox documentation page usually contains a convenient "blank" template that can be copied directly into the target article. The template consists of opening (<CODE>{{</CODE>) and closing (<CODE>}}</CODE>) double braces that contain the name of the infobox and a list of parameters without values. An editor then fills in the value for each of the parameters to the right of the corresponding equals sign. For example: <syntaxhighlight lang="wikitext"> {{Infobox person | name = | image = | caption = ... | website = }} </syntaxhighlight> might be filled out like this: <syntaxhighlight lang="wikitext"> {{Infobox person | name = Casanova | image = Casanova self portrait.jpg | caption = A self-portrait of Casanova ... | website = }} </syntaxhighlight> In this example, the names of the parameters ("<CODE>name</CODE>", "<CODE>image</CODE>", "<CODE>caption</CODE>", "<CODE>website</CODE>") are fixed in the design of the infobox and described in its documentation. A parameter that is misspelled, falsely capitalized, or is not supported by the infobox implementation does not display at all. To find out exactly which parameters are functional, look at the infobox's template page. Anything not listed there will be ignored, even if it works in some other infobox. If you believe that another parameter needs to be added to a given infobox template, then suggest that on the infobox's talk page. The infobox documentation describes which parameters are required and which are optional. Required parameters display between triple braces (for example, <CODE>{{{requiredparametername}}}</CODE>) when previewed or published. Optional parameters may be left empty or omitted entirely. ===Troubleshooting=== If you added an infobox and it didn't display correctly, here are the common errors: * You used a made-up or invalid parameter. You can only use parameters that have been pre-programmed into ''this'' infobox template. * You misspelled the parameter name or omitted necessary punctuation (e.g., leaving out the [[underscore]] in <code>birth_place</code>). * You capitalized the parameter name. Parameters are [[case sensitive]]. Nearly all infoboxes use lowercase parameter labels. * You included the prefix <code>File:</code> before the image name (or you didn't, and it's one of the templates that requires it). * You used the parameter name more than once: only the final instance displays. ==Adding an image to an infobox== {{Main|Help:Infobox picture}} Images are generally specified using the <CODE>image</CODE> and <CODE>caption</CODE> parameters. However, the template may use a different name for this parameter. For example, {{tp|Infobox album}} uses "Cover" instead of "image" and "Caption" instead of "caption". The <CODE>image</CODE> parameter sometimes requires the [[Wikipedia:Extended image syntax]]; other times it requires only the image file name depending on the tastes of the editor who created the infobox. An editor can determine this either by experimenting (using the "preview" function) or by consulting the infobox template documentation. Many images in infoboxes should have a [[WP:ALT|special text alternative]] for people who cannot see the image. ==Combining multiple infoboxes== {{For|detailed guidance on how combine multiple infoboxes|Wikipedia:WikiProject Infoboxes/embed}} If an article requires two or more infoboxes it is often possible to combine them into one, by including the others as a module (or child-, or sub-template) of the first. Alternately, it can be useful to use {{tl|stack}} as a container for them to prevent layout problems with other images and floating elements in the article. ==Designing an infobox== {{for|detailed guidance on how to design infoboxes|Help:Designing infoboxes}} It is a good idea to seek the opinions of other editors before embarking on a design of a new infobox or redesign of an existing one. Most requirements are already met by an existing infobox and most of the remainder can be met with a tweak. Unnecessary duplication leads to clutter and article divergence. Prototype your new design in your own [[WP:USERPAGE|user space]]. Once prototyped, propose the infobox changes to the appropriate [[Wikipedia:WikiProject|WikiProject]] and gain [[Wikipedia:Consensus|consensus]] before deploying your new design in the [[WP:TMP|template namespace]]. ==Deleting an infobox== Requests to delete an infobox should be brought to the attention of [[Wikipedia:Templates for discussion]] and any [[Wikipedia:WikiProject|WikiProject]]s associated with the infobox. The WikiProject associated with the subject can usually be found at the top of the talk page of the article. A template may be merged with another rather than deleted outright. {{Help:Infobox/user style}} ==See also== {{Wikipedia glossary}} *[[Wikipedia:How to read a color infobox]] *[[Wikipedia:How to read a taxobox]] *[[Wikipedia:Help desk]] – to ask questions about using infoboxes in articles if you weren't able to find the information you need on this help page. *[[Wikipedia:Disinfoboxes]] – an essay expressing a particular viewpoint *{{sectionlink|Infobox|Wikipedia}} ---- {{Offer help}} {{Help navigation}} [[Category:Wikipedia editor help]] [[Category:Wikipedia infoboxes| ]] [[Category:Wikipedia template help]] 746ed7695c517ae9f68decf92a18e8f37695ed5e Template:Main/doc 10 451 2182 1001 2023-06-13T04:02:20Z wikipedia>Vitaium 0 /* Template data */ wikitext text/x-wiki <noinclude>{{pp-vandalism|small=yes}}</noinclude>{{Documentation subpage}} {{High-use}} {{Never substitute}} {{Lua|icononly=on|Module:Labelled list hatnote}} {{hatnote|This template is for linking to main content. For the mainspace detection template, see [[:template:main other]].}} When a [[Wikipedia:What is an article?|Wikipedia article]] is large, it is often written in [[Wikipedia:Summary style|summary style]]. This [[Wikipedia:Template messages|template]] is used after the heading of the summary, to link to the subtopic article that has been summarized. For [[Help:Category|Category namespace]], please use '''{{tl|Cat main}}''' instead. Use of this template should be restricted to the purposes described above. It is '''not''' to be used as a substitute for inline links or {{tl|Further}} template. The latter is used when the section expounds a specific aspect of the topic instead of summarizing its article. For example, in [[phthalate]], the template under the "Endocrine disruptor" section should '''not''' be {{tlf|Main|Endocrine disruptor}}, because the section specifically deals with phthalate as an endocrine disruptor and not endocrine disruptors in general. This template should also not be used in lead sections. A lead section is always a summary of its own article, not any other; as such, the only appropriate target for a {{tl|Main}} link in the lead section would be the article itself, which is not useful. {{tl|Broader}} may be appropriate in this case. {{TOC limit}} ==Usage== {{see|WP:SUMMARYHATNOTE}} {{startplainlist}} * {{vad|Basic usage:|7.5em|left}} <code>{{((}}{{BASEPAGENAME}}{{!}}{{var|page}}{{))}}</code> * {{vad|All parameters:|7.5em|left}} <code>{{((}}{{BASEPAGENAME}}{{!}}{{var|page1}}{{!}}{{var|page2}}{{!}}{{var|page3}}{{!}}&nbsp;...&nbsp;{{!}}l1&nbsp;{{=}}&nbsp;{{var|label1}}{{!}}l2&nbsp;{{=}}&nbsp;{{var|label2}}{{!}}l3&nbsp;{{=}}&nbsp;{{var|label3}}{{!}}&nbsp;...&nbsp;{{!}}selfref&nbsp;{{=}}&nbsp;{{var|yes}}{{))}}</code> {{endplainlist}} ==Parameters== *<code>1</code>, <code>2</code>, <code>3</code>, ... – the pages to link to. If no page names are specified, the current page name is used instead (without the [[Wikipedia:Namespace|namespace]] prefix). Categories and files are automatically escaped with the [[Help:Colon trick|colon trick]], and links to sections are automatically formatted as ''page § section'', rather than the MediaWiki default of ''page#section''. *<code>l1</code>, <code>l2</code>, <code>l3</code>, ... ''or''<code>label 1</code>, <code>label 2</code>, <code>label 3</code>, ... – optional labels for each of the pages to link to (this is for articles where a piped link would be used). Note that the extra parameters use a lower case 'L', for example, <code>l1</code>, <u>not</u> <code>L1</code>. *<code>selfref</code> – if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references to Wikipedia. See [[Template:Selfref]] for more information. This is only necessary in articles and other content (e.g. templates) that will appear in articles, and need not be added for uses of this template on <code>Wikipedia:</code> namespace pages. ==Template data== {{TemplateData header}} <templatedata> { "description": "This template is used after the heading of a section, to link to a sub-article (or sub-articles) that is entirely about the topic of the section. The template will display, in italics, \"Main article: Article 1, Article 2 and Article 3\"", "params": { "1": { "label": "Page 1", "description": "The name of the first page that you want to link to. If this is not specified, the current page name (with no namespace prefix) is used instead. ", "type": "wiki-page-name", "required": true, "suggested": true }, "2": { "label": "Page 2", "description": "The name of the second page that you want to link to.", "type": "wiki-page-name", "required": false }, "3": { "label": "Page 3", "description": "The name of the third page that you want to link to. More pages can be added using the parameters \"4\", \"5\", etc.", "type": "wiki-page-name", "required": false }, "l1": { "type": "string", "label": "Label 1", "description": "What the first linked page is to be displayed as.", "aliases": [ "label 1" ] }, "l2": { "label": "Label 2", "description": "What the second linked page is to be displayed as.", "type": "string", "aliases": [ "label 2" ] }, "l3": { "label": "Label 3", "description": "What the third linked page is to be displayed as. Other labels can be added by using increasing numbers (starting with \"l4\" for page 4) as parameter names.", "type": "string", "aliases": [ "label 3" ] }, "selfref": { "type": "boolean", "label": "Self reference", "description": "Set to \"yes\" if the template is a self-reference to Wikipedia that would not make sense on mirrors or forks of the Wikipedia site." } }, "paramOrder": [ "1", "2", "3", "l1", "l2", "l3", "selfref" ], "format": "{{_|_ = _}}\n" } </templatedata> ==Examples== {{hatnote|Underscores (_) between words are not necessary}} *<code><nowiki>{{Main}}</nowiki></code> &rarr; {{main|category=no}} *<code><nowiki>{{Main|Article}}</nowiki></code> &rarr; {{main|Article}} *<code><nowiki>{{Main|Article#Section title}}</nowiki></code> &rarr; {{main|Article#Section title}} *<code><nowiki>{{Main|Article#Section|l1=Custom section label}}</nowiki></code> &rarr; {{main|Article#Section|l1=Custom section label}} *<code><nowiki>{{Main|Article1|Article2|Article3}}</nowiki></code> &rarr; {{main|Article1|Article2|Article3}} *<code><nowiki>{{Main|Article1|l1=Custom label 1|Article2|l2=Custom label 2}}</nowiki></code> &rarr; {{main|Article1|l1=Custom label 1|Article2|l2=Custom label 2}} *<code><nowiki>{{Main|(15760) 1992 QB1|l1={{mp|(15760) 1992 QB|1}}}}</nowiki></code> &rarr; {{main|(15760) 1992 QB1|l1={{mp|(15760) 1992 QB|1}}}} ==Errors== If the name of the first page that you want to link to is not specified, the current page name (with no namespace prefix) is used instead: *{{Main|category=no}} No errors can be displayed due to the illegal usage of parameters or other usages (i.e. the first parameter can be omitted, other parameters can be used even if the first one is empty (and automatically filled with the current page name (with no namespace prefix)), equals sign can be used as one of the parameters, and template can be used by direct call to the module (using "#invoke")). This is not the case for {{tl|see also}}, for example. ==See also== *{{tl|Main list}}: For a more comprehensive list, see {{color|blue|Article}}. *{{tl|Broader}}: For broader coverage of this topic, see {{color|blue|Article}}. *{{tl|Excerpt}}, which allows transclusion of text (such as an intro section) from one article into another *{{tl|Further}}: Further information: {{color|blue|Article}}. *{{tl|Official website}} {{Hatnote templates}} <includeonly>{{sandbox other|| <!-- Categories go here and interwikis go in Wikidata. --> [[Category:Hatnote templates]] [[Category:Wikipedia page-section templates]] }}</includeonly> e915b79b0e71109dc84f21a3455a1b8b4bfcb784 Template:Samp 10 1251 2585 2023-06-14T15:35:10Z w>Taravyvan Adijene 0 абнаўленьне зьвестак wikitext text/x-wiki <samp {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} style="padding-left:0.4em; padding-right:0.4em; color:{{{color|#666666}}}; {{{style|}}}" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</samp><noinclude> <!--Categories go near the bottom of the /doc page.--> {{Documentation}} </noinclude> f6ab5d4006d47b4412736ea88bf42847cfb57a40 Template:Kbd 10 1063 2324 2023-06-14T16:12:25Z wikipedia>Taravyvan Adijene 0 абнаўленьне зьвестак wikitext text/x-wiki <kbd {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} style="background:#EEEEEE; {{#if:{{{spacing|}}}| padding-left:{{{padding|0.2em}}}; padding-right:{{{padding|0.2em}}};| letter-spacing:0.05em; padding-left:0.25em; padding-right:0.2em;}}{{#if:{{{style|}}}|{{{style}}}}}" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|user input}}}</kbd><noinclude> <!--Categories go near the bottom of the /doc page.--> {{Documentation}} </noinclude> 4717d3a6d1c5c1b826066ac2a794cc6c92b43ac3 Template:Post-nominals/GBR 10 1378 2713 2023-06-15T15:51:36Z w>DrKay 0 per edit request wikitext text/x-wiki {{#switch: {{{1}}} | AC = [[Honorary Companion of the Order of Australia|AC]] | ACs = [[Companion of the Order of Australia|AC]] | AcSS = [[Academician of the Social Sciences|AcSS]] | ADC = [[Aide de Camp#United Kingdom|ADC]] | ADC Gen= [[Aide-de-camp general|ADC Gen]] | ADCh = [[Honorary Aide de Camp|Hon ADC]] | ADC(P) = [[Personal aide-de-camp|ADC]] | AE = [[Air Efficiency Award|AE]] | AFC = [[Air Force Cross (United Kingdom)|AFC]] | AFC* = [[Air Force Cross and Bar (United Kingdom)|AFC*]] | AFC** = [[Air Force Cross and two Bars (United Kingdom)|AFC**]] | AFC1 = [[Air Force Cross (United Kingdom)|AFC]] & [[Medal bar|Bar]] | AFC2 = [[Air Force Cross (United Kingdom)|AFC]] & [[Medal bar|Two Bars]] | AFM = [[Air Force Medal|AFM]] | AK = [[Knight of the Order of Australia|AK]] | AKC = [[Associate of King's College|AKC]] | AM = [[Albert Medal for Lifesaving|AM]] | AMh = [[Honorary Member of the Order of Australia|AM]] | AMICE = [[Associate Member of the Institution of Civil Engineers|AMICE]] | AMInstCE = [[Associate Member of the Institution of Civil Engineers|AMInstCE]] | AMIMechE = [[Associate Member of the Institution of Mechanical Engineers|AMIMechE]] | AMIStructE = [[Associate Member of the Institution of Structural Engineers|AMIStructE]] | AMl = [[London Assembly|AM]] | AMRSB = [[Associate Member of the Royal Society of Biology|AMRSB]] | AMw = [[National Assembly for Wales|AM]] | AO = [[Honorary Officer of the Order of Australia|AO]] | ARA = [[Associate Member of the Royal Academy|ARA]] | ARBSA = [[Associate of the Royal Birmingham Society of Artists|ARBSA]] | ARCS = [[Associate of the Royal College of Science|ARCS]] | ARE = [[Royal Society of Painter-Etchers and Engravers|ARE]] | ARIBA = [[Royal Institute of British Architects|ARIBA]] | ARRC = [[Royal Red Cross|ARRC]] | ARSA = [[Associate Royal Scottish Academician|ARSA]] | ARWA = [[Royal West of England Academy|ARWA]] | AS = [[Member of the Senedd|AS]] | AsstChStJ = [[Assistant Chaplain of the Order of St John|AsstChStJ]] | AsstChStJf = [[Assistant Chaplain of the Order of St John|AsstChStJ]] | Bart = [[Baronet|Bart]] | Barte = [[Baronet|Bart]] | Bartgb = [[Baronet|Bart]] | Barti = [[Baronet|Bart]] | Bartns = [[Baronet|Bart]] | BEM = [[British Empire Medal|BEM]] | Bt = [[Baronet|Bt]] | Bte = [[Baronet|Bt]] | Btgb = [[Baronet|Bt]] | Bti = [[Baronet|Bt]] | Btns = [[Baronet|Bt]] | Btss = [[Baronetess|Btss]] | Btsse = [[Baronetess|Btss]] | Btssgb = [[Baronetess|Btss]] | Btssi = [[Baronetess|Btss]] | Btssns = [[Baronetess|Btss]] | CB = [[Companion of the Order of the Bath|CB]] | CBh = [[Honorary Companion of the Order of the Bath|CB]] | CBE = [[Commander of the Order of the British Empire|CBE]] | CBEh = [[Honorary Commander of the Order of the British Empire|CBE]] | CC = [[Companion of the Order of Canada|CC]] | CChem = [[Chartered Chemist|CChem]] | CCMI = [[Companion of the Chartered Management Institute|CCMI]] | CD = [[Canadian Forces' Decoration|CD]] | C.D. = [[Canadian Forces' Decoration|C.D.]] | CEng = [[Chartered Engineer (UK)|CEng]] | CF = [[Churchill Fellow|CF]] | CFA = [[Chartered Financial Analyst|CFA]] | C.F.A. = [[Chartered Financial Analyst|C.F.A.]] | CGA = [[Community of the Glorious Ascension|CGA]] | CGC = [[Conspicuous Gallantry Cross|CGC]] | CGM = [[Conspicuous Gallantry Medal|CGM]] | CH = [[Companion of Honour|CH]] | ChStJ = [[Chaplain of the Order of St John|ChStJ]] | CI = [[Companion of the Order of the Crown of India|CI]] | CIE = [[Companion of the Order of the Indian Empire|CIE]] | CIEh = [[Honorary Companion of the Order of the Indian Empire|CIE]] | CITP = [[Chartered IT Professional|CITP]] | CM = [[Member of the Order of Canada|CM]] | CMath = [[Chartered Mathematician|CMath]] | CMG = [[Companion of the Order of St Michael and St George|CMG]] | CMGh = [[Honorary Companion of the Order of St Michael and St George|CMG]] | CMM = [[Commander of the Order of Military Merit|CMM]] | CMP = [[Company of Mission Priests|CMP]] | CPFA = [[Chartered Institute of Public Finance and Accountancy|CPFA]] | CPM = [[Colonial Police Medal|CPM]] | CPhys = [[Chartered Physicist|CPhys]] | CPsychol = [[CPsychol]] | CR = [[Community of the Resurrection|CR]] | CSI = [[Companion of the Order of the Star of India|CSI]] | CSIh = [[Honorary Companion of the Order of the Star of India|CSI]] | CSM = [[Companion of the Order of the Star of Melanesia|CSM]] | CStJ = [[Commander of the Order of St John|CStJ]] | CVO = [[Commander of the Royal Victorian Order|CVO]] | CVOh = [[Honorary Commander of the Royal Victorian Order|CVO]] | DBE = [[Dame Commander of the Order of the British Empire|DBE]] | DBEh = [[Honorary Dame Commander of the Order of the British Empire|DBE]] | DCB = [[Dame Commander of the Order of the Bath|DCB]] | DCBh = [[Honorary Dame Command of the Most Honorable Order of the Bath|DCB]] | DCCT = [[Dame Commander of the Order of the Crown of Tonga|DCCT]] | DCH = [[Diploma in Child Health|DCH]] | DCL = [[Doctor of Civil Law|DCL]] | DCM = [[Distinguished Conduct Medal|DCM]] | DCM* = [[Distinguished Conduct Medal and Bar|DCM*]] | DCM1 = [[Distinguished Conduct Medal|DCM]] & [[Medal bar|Bar]] | DCMG = [[Dame Commander of the Order of St Michael and St George|DCMG]] | DCMGh = [[Honorary Dame Commander of the Order of St Michael and St George|DCMG]] | DCVO = [[Dame Commander of the Royal Victorian Order|DCVO]] | DCVOh = [[Honorary Dame Commander of the Royal Victorian Order|DCVO]] | DFC = [[Distinguished Flying Cross (United Kingdom)|DFC]] | DFC* = [[Distinguished Flying Cross and Bar (United Kingdom)|DFC*]] | DFC** = [[Distinguished Flying Cross and two Bars (United Kingdom)|DFC**]] | DFC1 = [[Distinguished Flying Cross (United Kingdom)|DFC]] & [[Medal bar|Bar]] | DFC2 = [[Distinguished Flying Cross (United Kingdom)|DFC]] & [[Medal bar|Two Bars]] | DFM = [[Distinguished Flying Medal|DFM]] | DFM* = [[Distinguished Flying Medal|DFM]] & [[Medal bar|Bar]] | DFM1 = [[Distinguished Flying Medal|DFM]] & [[Medal bar|Bar]] | DFM** = [[Distinguished Flying Medal|DFM]] & [[Medal bar|Two Bars]] | DFM2 = [[Distinguished Flying Medal|DFM]] & [[Medal bar|Two Bars]] | DGCCT = [[Dame Grand Cross of the Order of the Crown of Tonga|DGCCT]] | DL = [[Deputy Lieutenant|DL]] | DLi = [[Deputy Lieutenant|DL]] | DLni = [[Deputy Lieutenant|DL]] | DLs = [[Deputy Lieutenant|DL]] | DLw = [[Deputy Lieutenant|DL]] | DSC = [[Distinguished Service Cross (United Kingdom)|DSC]] | DSC* = [[Distinguished Service Cross and Bar (United Kingdom)|DSC*]] | DSC** = [[Distinguished Service Cross and two Bars (United Kingdom)|DSC**]] | DSC1 = [[Distinguished Service Cross (United Kingdom)|DSC]] & [[Medal bar|Bar]] | DSC2 = [[Distinguished Service Cross (United Kingdom)|DSC]] & [[Medal bar|Two Bars]] | DSC3 = [[Distinguished Service Cross (United Kingdom)|DSC]] & [[Medal bar|Three Bars]] | DSG = [[Order of St. Gregory the Great|DSG]] | DSM = [[Distinguished Service Medal (United Kingdom)|DSM]] | DSM* = [[Distinguished Service Medal and Bar (United Kingdom)|DSM*]] | DSO = [[Distinguished Service Order|DSO]] | DSO* = [[Distinguished Service Order and Bar|DSO*]] | DSO** = [[Distinguished Service Order and two Bars|DSO**]] | DSO*** = [[Distinguished Service Order and three Bars|DSO***]] | DSO1 = [[Distinguished Service Order|DSO]] & [[Medal bar|Bar]] | DSO2 = [[Distinguished Service Order|DSO]] & [[Medal bar|Two Bars]] | DSO3 = [[Distinguished Service Order|DSO]] & [[Medal bar|Three Bars]] | DStJ = [[Dame of Justice of the Order of St John|DStJ]] | DStJg = [[Dame of Grace of the Order of St John|DStJ]] | DUniv = [[Honorary degree|DUniv]] | ED = [[Efficiency Decoration|ED]] | ERD = [[Emergency Reserve Decoration|ERD]] | EsqStJ = [[Esquire of the Order of St John|EsqStJ]] | FAA = [[Fellow of the Australian Academy of Science|FAA]] | FACC = [[Fellow of the American College of Cardiology|FACC]] | FACS = [[Fellow of the American College of Surgeons|FACS]] | FAcSS = [[Fellow of the Academy of Social Sciences|FAcSS]] | FAfN = [[Fellow of the Association for Nutrition|FAfN]] | FAHA = [[Fellow of the Australian Academy of the Humanities|FAHA]] | FASM = [[Fellow of the American Society for Microbiology|FASM]] | FBA = [[Fellow of the British Academy|FBA]] | HonFBA = [[Honorary Fellow of the British Academy|HonFBA]] | FBAM = [[Fellow of the British Academy of Management|FBAM]] | FBCS = [[Fellow of the British Computer Society|FBCS]] | DFBCS = [[Distinguished Fellow of the British Computer Society|DFBCS]] | FBIM = [[Fellow of the British Institute of Management|FBIM]] | FBPhS = [[Fellow of the British Pharmacological Society|FBPhS]] | HonFBPhS = [[Honorary Fellow of the British Pharmacological Society|HonFBPhS]] | FFFP = [[Fellow of the Faculty of Family Planning|FFFP]] | FRCOG = [[Fellow of the Royal College of Obstetricians and Gynaecologists|FRCOG]] | FRPS = [[Fellow of the Royal Photographic Society|FRPS]] | FRPSL = [[Fellow of the Royal Philatelic Society London|FRPSL]] | FBPsS = [[Fellow of the British Psychological Society|FBPsS]] | FCA = [[Fellow of the Institute of Chartered Accountants in England and Wales|FCA]] | FCGI = [[Fellow of The City and Guilds of London Institute|FCGI]] | FCIBSE = [[Fellow of the Chartered Institution of Building Services Engineers|FCIBSE]] | FCIBS = [[Fellow of the Chartered Institute of Bankers in Scotland|FCIBS]] | FCIL = [[Fellow of the Chartered Institute of Linguists|FCIL]] | FCILT = [[Fellow of the Chartered Institute of Logistics and Transport|FCILT]] | FCIS = [[Institute of Chartered Secretaries and Administrators|FCIS]] | FCIOB = [[Fellow of the Chartered Institute of Building|FCIOB]] | FCMA = [[Fellow of the Chartered Institute of Management Accountants|FCMA]] | FCMI = [[Fellow of the Chartered Management Institute|FCMI]] | FCCA = [[Chartered Certified Accountant|FCCA]] | FCSD = [[Fellow of the Chartered Society of Designers|FCSD]] | FCS = [[Fellow of the Chemical Society|FCS]] | FEIS = [[Fellow of the Educational Institute of Scotland|FEIS]] | FGS = [[Fellow of the Geological Society|FGS]] | FFA = [[Fellow of the Faculty of Actuaries|FFA]] | FFARCS = [[Fellow of the Faculty of Anaesthetists of the Royal College of Surgeons|FFARCS]] | FFNRCSI= [[Fellow of the Faculty of Nursing and Midwifery of the Royal College of Surgeons in Ireland|FFNRCSI]] | FFPH = [[Fellow of the Faculty of Public Health|FFPH]] | FFPM = [[Fellow of the Faculty of Pharmaceutical Medicine|FFPM]] | FFPHMI = [[Fellow of the Faculty of Public Health Medicine of Ireland|FFPHMI]] | FFPS = [[Fellow of the Faculty of Physicians and Surgeons Glasgow|FFPS]] | HonFFPM= [[Honorary Fellow of the Faculty of Pharmaceutical Medicine|HonFFPM]] | FFSEM = [[Fellow of the Faculty of Sport and Exercise Medicine|FFSEM]] | FHAS = [[Fellow of the Royal Highland and Agricultural Society of Scotland|FHAS]] | FHEA = [[Fellow of the Higher Education Academy|FHEA]] | FHS = [[Fellow of the Heraldry Society|FHS]] | FIA = [[Fellow of the Institute of Actuaries|FIA]] | FIBiol = [[Fellow of the Institute of Biology|FIBiol]] | FIC = [[Fellow of the Institute of Chemistry|FIC]] | FICE = [[Fellow of the Institution of Civil Engineers|FICE]] | FIChemE= [[Fellow of the Institution of Chemical Engineers|FIChemE]] | FIEE = [[Fellow of the Institution of Electrical Engineers|FIEE]] | FIET = [[Fellow of the Institution of Engineering and Technology|FIET]] | FIMA = [[Fellow of the Institute of Mathematics and its Applications|FIMA]] | FIMechE= [[Fellow of the Institution of Mechanical Engineers|FIMechE]] | FIMMM = [[Fellow of the Institute of Materials, Minerals and Mining|FIMMM]] | FIStructE = [[Fellow of the Institution of Structural Engineers|FIStructE]] | FInstP = [[Fellow of the Institute of Physics|FInstP]] | FIPEM = [[Fellow of the Institute of Physics and Engineering in Medicine|FIPEM]] | FKC = [[Fellow of King's College|FKC]] | FLA = [[Fellow of the Library Association|FLA]] | FLS = [[Fellow of the Linnean Society of London|FLS]] | FLSW = [[Fellow of the Learned Society of Wales|FLSW]] | FMA = [[Fellow of the Museums Association|FMA]] | ForMemRS = [[Foreign Member of the Royal Society|ForMemRS]] | FMedSci= [[Fellow of the Academy of Medical Sciences|FMedSci]] | HonFMedSci = [[Honorary Fellow of the Academy of Medical Sciences|HonFMedSci]] | FMRS = [[Fellow of the Materials Research Society|FMRS]] | FNI = [[Fellow of the Nautical Institute|FNI]] | FRACS = [[Fellow of the Royal Australasian College of Surgeons|FRACS]] | FRAI = [[Fellow of the Royal Anthropological Institute|FRAI]] | FRAS = [[Fellow of the Royal Astronomical Society|FRAS]] | FRAeS = [[Fellow of the Royal Aeronautical Society|FRAeS]] | FRAeSh = [[Honorary Fellow of the Royal Aeronautical Society|Hon FRAeS]] | FRAM = [[Fellow of the Royal Academy of Music|FRAM]] | FRCA = [[Fellow of the Royal College of Anaesthetists|FRCA]] | FRCGP = [[Fellow of the Royal College of General Practitioners|FRCGP]] | FRCGS = [[Fellow of the Royal Canadian Geographical Society|FRCGS]] | FRCM = [[Fellow of the Royal College of Music|FRCM]] | FRCN = [[Fellow of the Royal College of Nursing|FRCN]] | FRCO = [[Fellow of the Royal College of Organists|FRCO]] | FRCOG = [[Fellow of the Royal College of Obstetricians and Gynaecologists|FRCOG]] | FRCP = [[Fellow of the Royal College of Physicians|FRCP]] | FRCPCH = [[Fellow of the Royal College of Paediatrics and Child Health|FRCPCH]] | HonFRCP= [[Honorary Fellow of the Royal College of Physicians|HonFRCP]] | FRCPath= [[Fellow of the Royal College of Pathologists|FRCPath]] | FRCPE = [[Fellow of the Royal College of Physicians of Edinburgh|FRCPE]] | FRCPGlas = [[Fellow of the Royal College of Physicians and Surgeons of Glasgow|FRCPGlas]] | FRCPI = [[Fellow of the Royal College of Physicians of Ireland|FRCPI]] | FRCPsych = [[Fellow of the Royal College of Psychiatrists|FRCPsych]] | FRCR = [[Fellow of the Royal College of Radiologists|FRCR]] | FRCS = [[Fellow of the Royal College of Surgeons|FRCS]] | FRCSE = [[Fellow of the Royal College of Surgeons of Edinburgh|FRCSE]] | FRCSI = [[Fellow of the Royal College of Surgeons of Ireland|FRCSI]] | FRCVS = [[Fellow of the Royal College of Veterinary Surgeons|FRCVS]] | FREng = [[Fellow of the Royal Academy of Engineering|FREng]] | HonFREng = [[Honorary Fellow of the Royal Academy of Engineering|HonFREng]] | FRES = [[Fellow of the Royal Entomological Society|FRES]] | FRFPSGlas = [[Fellow of the Royal Faculty of Physicians and Surgeons of Glasgow|FRFPSGlas]] | FRGS = [[Fellow of the Royal Geographical Society|FRGS]] | FRHistS= [[Fellow of the Royal Historical Society|FRHistS]] | FRHortS= [[Fellow of the Royal Horticultural Society|FRHortS]] | FRHS = [[Fellow of the Royal Horticultural Society|FRHS]] | FRIAI = [[Fellow of the Royal Institute of the Architects of Ireland|FRIAI]] | FRIAS = [[Fellow of the Royal Incorporation of Architects in Scotland|FRIAS]] | FRIBA = [[Fellow of the Royal Institute of British Architects|FRIBA]] | FRIBAh = [[Honorary Fellow of the Royal Institute of British Architects|Hon&thinsp;FRIBA]] | HonFRIBA = [[Honorary Fellow of the Royal Institute of British Architects|Hon&thinsp;FRIBA]] | FRIC = [[Fellow of the Royal Institute of Chemistry|FRIC]] | HonFRIC= [[Honorary Fellow of the Royal Institute of Chemistry|HonFRIC]] | FRICS = [[Fellow of the Royal Institution of Chartered Surveyors|FRICS]] | FRIN = [[Fellow of the Royal Institute of Navigation|FRIN]] | FRMetS = [[Fellow of the Royal Meteorological Society|FRMetS]] | FRMS = [[Fellow of the Royal Microscopical Society|FRMS]] | FRPharmS = [[Fellow of the Royal Pharmaceutical Society|FRPharmS]] | FRS = [[Fellow of the Royal Society|FRS]] | FRSA = [[Fellow of the Royal Society of Arts|FRSA]] | FRSB = [[Fellow of the Royal Society of Biology|FRSB]] | FRSC = [[Fellow of the Royal Society of Chemistry|FRSC]] | HonFRSC= [[Honorary Fellows of the Royal Society of Chemistry|HonFRSC]] | FRSCa = [[Fellow of the Royal Society of Canada|FRSC]] | FRSCM = [[Fellow of the Royal School of Church Music|FRSCM]] | FRSE = [[Fellow of the Royal Society of Edinburgh|FRSE]] | HFRSE = [[Honorary Fellow of the Royal Society of Edinburgh|HonFRSE]] | HonFRSE= [[Honorary Fellow of the Royal Society of Edinburgh|HonFRSE]] | FRSf = [[Fellow of the Royal Society|FRS]] | FRSfh = [[Honorary Fellow of the Royal Society|FRS]] | FRSGS = [[Fellow of the Royal Scottish Geographical Society|FRSGS]] | FRSh = [[Honorary Fellow of the Royal Society|FRS]] | FRSL = [[Fellow of the Royal Society of Literature|FRSL]] | FRSM = [[Fellow of the Royal Society of Medicine|FRSM]] | FRSr = [[Royal Fellow of the Royal Society|FRS]] | FRSPH = [[Fellow of the Royal Society of Public Health|FRSPH]] | FRSS = [[Fellow of the Royal Statistical Society|FRSS]] | FRSSA = [[Fellow of the Royal Scottish Society of Arts|FRSSA]] | FRSTMH = [[Fellow of the Royal Society of Tropical Medicine and Hygiene|FRSTMH]] | FRTPI = [[Fellow of the Royal Town Planning Institute|FRTPI]] | FSA = [[Fellow of the Society of Antiquaries of London|FSA]] | FSAs = [[Fellow of the Society of Antiquaries of Scotland|FSA Scot]] | FSAS = [[Fellow of the Society of Antiquaries of Scotland|FSAS]] | FSDC = [[Fellow of the Society of Dyers and Colourists|FSDC]] | FSB = [[Fellow of The Society of Biology|FSB]] | FSIA = [[Fellow of the Society of Industrial Artists|FSIA]] | FSNR = [[Fellow of the Society for Nautical Research|FSNR]] | FSSc = [[Fellow of the Society of Science, Letters and Art|FSSc]] | FSS = [[Fellow of the Royal Statistical Society|FSS]] | FSTS = [[Fellow of the Scottish Tartans Society|FSTS]] | FWES = [[Women's Engineering Society|FWES]] | FZS = [[Fellow of the London Zoological Society|FZS]] | GBE = [[Knight Grand Cross of the Order of the British Empire|GBE]] | GBEf = [[Dame Grand Cross of the Order of the British Empire|GBE]] | GBEfh = [[Honorary Dame Grand Cross of the Order of the British Empire|GBE]] | GBEh = [[Honorary Knight Grand Cross of the Order of the British Empire|GBE]] | GBEm = [[Knight Grand Cross of the Order of the British Empire|GBE]] | GBEmh = [[Honorary Knight Grand Cross of the Order of the British Empire|GBE]] | GC = [[George Cross|GC]] | GCB = [[Knight Grand Cross of the Order of the Bath|GCB]] | GCBf = [[Dame Grand Cross of the Order of the Bath|GCB]] | GCBfh = [[Honorary Dame Grand Cross of the Order of the Bath|GCB]] | GCBh = [[Honorary Knight Grand Cross of the Order of the Bath|GCB]] | GCBm = [[Knight Grand Cross of the Order of the Bath|GCB]] | GCBmh = [[Honorary Knight Grand Cross of the Order of the Bath|GCB]] | GCH = [[Knight Grand Cross of the Royal Guelphic Order|GCH]] | GCIE = [[Knight Grand Commander of the Order of the Indian Empire|GCIE]] | GCIEh = [[Honorary Knight Grand Commander of the Order of the Indian Empire|GCIE]] | GCL = [[Grand Companion of the Order of Logohu|GCL]] | GCMG = [[Knight Grand Cross of the Order of St Michael and St George|GCMG]] | GCMGf = [[Dame Grand Cross of the Order of St Michael and St George|GCMG]] | GCMGfh = [[Honorary Dames Grand Cross of the Order of St Michael and St George|GCMG]] | GCMGh = [[Honorary Knight Grand Cross of the Order of St Michael and St George|GCMG]] | GCMGm = [[Knight Grand Cross of the Order of St Michael and St George|GCMG]] | GCMGmh = [[Honorary Knight Grand Cross of the Order of St Michael and St George|GCMG]] | GCSI = [[Knight Grand Commander of the Order of the Star of India|GCSI]] | GCSIh = [[Honorary Knight Grand Commander of the Order of the Star of India|GCSI]] | GCStJ = [[Bailiff Grand Cross of the Order of St John|GCStJ]] | GCStJf = [[Dame Grand Cross of the Order of St John|GCStJ]] | GCVO = [[Knight Grand Cross of the Royal Victorian Order|GCVO]] | GCVOf = [[Dame Grand Cross of the Royal Victorian Order|GCVO]] | GCVOfh = [[Honorary Dame Grand Cross of the Royal Victorian Order|GCVO]] | GCVOh = [[Honorary Knight Grand Cross of the Royal Victorian Order|GCVO]] | GCVOm = [[Knight Grand Cross of the Royal Victorian Order|GCVO]] | GCVOmh = [[Honorary Knight Grand Cross of the Royal Victorian Order|GCVO]] | GM = [[George Medal|GM]] | GM1 = [[George Medal|GM]] & [[Medal bar|Bar]] | GMB = [[Great Master of the Order of the Bath|GMB]] | GMMG = [[Grand Master of the Order of St Michael and St George|GMMG]] | GMVO = [[Grand Master of the Royal Victorian Order|GMVO]] | HonFRMS= [[Honorary Fellow of the Royal Microscopical Society|HonFRMS]] | HonFRS = [[Honorary Fellow of the Royal Society|HonFRS]] | HonFInstP = [[Honorary Fellows of the Institute of Physics|HonFInstP]] | HonRWA = [[Royal West of England Academy|HonRWA]] | HRHA = [[Royal Hibernian Academy|HRHA]] | H.R.H.A. = [[Royal Hibernian Academy|H.R.H.A.]] | HRSA = [[Honorary Royal Scottish Academician|HRSA]] | IDSM = [[Indian Distinguished Service Medal|IDSM]] | IOM = [[Indian Order of Merit|IOM]] | ISO = [[Imperial Service Order|ISO]] | JP = [[Justice of the Peace#United Kingdom|JP]] | KB = [[Knight of the Bath (1399–1725)|KB]] | KB2 = [[Knight Companion of the Order of the Bath (1725–1815)|KB]] | KBE = [[Knight Commander of the Order of the British Empire|KBE]] | KBEh = [[Honorary Knight Commander of the Order of the British Empire|KBE]] | KC = [[King's Counsel|KC]] | KC(Hon)= [[King's Counsel Honoris Causa|KC (Hon)]] | KC (Hon.) = [[King's Counsel Honoris Causa|KC (Hon.)]] | KCB = [[Knight Commander of the Order of the Bath|KCB]] | KCBh = [[Honorary Knight Commander of the Order of the Bath|KCB]] | KCCT = [[Knight Commander of the Order of the Crown of Tonga|KCCT]] | KCH = [[Knight Commander of the Royal Guelphic Order|KCH]] | KCIE = [[Knight Commander of the Order of the Indian Empire|KCIE]] | KCIEh = [[Honorary Knight Commander of the Order of the Indian Empire|KCIE]] | KCMG = [[Knight Commander of the Order of St Michael and St George|KCMG]] | KCMGh = [[Honorary Knight Commander of the Order of St Michael and St George|KCMG]] | KCSG = [[Knight Commander of the Order of St Gregory the Great|KCSG]] | KC*SG = [[Knight Commander with Star of the Order of St Gregory the Great|KC*SG]] | KCSI = [[Knight Commander of the Order of the Star of India|KCSI]] | KCSIh = [[Honorary Knight Commander of the Order of the Star of India|KCSI]] | KCVO = [[Knight Commander of the Royal Victorian Order|KCVO]] | KCVOh = [[Honorary Knight Commander of the Royal Victorian Order|KCVO]] | KG = [[Knight of the Order of the Garter|KG]] | KGc = [[Knight Companion of the Order of the Garter|KG]] | KGe = [[Extra Knight of the Order of the Garter|KG]] | KGr = [[Royal Knight Companion of the Order of the Garter|KG]] | KGCCT = [[Knight Grand Cross of the Order of the Crown of Tonga|KGCCT]] | KH = [[Knight of the Royal Guelphic Order|KH]] | KHC = [[Honorary Chaplain to the King|KHC]] | KHS = [[Knight of the Holy Sepulchre|KHS]] | KMCO = [[Sacred Military Constantinian Order of Saint George|KMCO]] | KMT = [[Knight of the Military Order of Maria Theresa|KMT]] | KPFSM = [[King's Police and Fire Service Medal|KPFSM]] | KPM = [[King's Police Medal|KPM]] | KP = [[Knight of the Order of St Patrick|KP]] | KS = [[Serjeant-at-law#King's or Queen's Serjeants|KS]] | KSG = [[Order of St. Gregory the Great|KSG]] | KSI = [[Knight Commander of the Order of the Star of India|KSI]] | KSIh = [[Honorary Knight Commander of the Order of the Star of India|KSI]] | KSIp = [[Knight Companion of the Order of the Star of India|KSI]] | KSIph = [[Honorary Knight Companion of the Order of the Star of India|KSI]] | KStJ = [[Knight of Justice of the Order of St John|KStJ]] | KStJg = [[Knight of Grace of the Order of St John|KStJ]] | KT = [[Knight Companion of the Order of the Thistle|KT]] | KTh = [[Honorary Knight Companion of the Order of the Thistle|KT]] | Kt = [[Knight Bachelor|Kt]] | LG = [[Lady of the Order of the Garter|LG]] | LGc = [[Lady Companion of the Order of the Garter|LG]] | LGe = [[Extra Lady of the Order of the Garter|LG]] | LRCP = [[Licentiate of the Royal College of Physicians|LRCP]] | LT = [[Lady Companion of the Order of the Thistle|LT]] | LVO = [[Lieutenant of the Royal Victorian Order|LVO]] | MAE = [[Member of the Academia Europaea|MAE]] | MBE = [[Order of the British Empire|MBE]] | MBEh = [[Honorary Member of the Order of the British Empire|MBE]] | MC = [[Military Cross|MC]] | MC* = [[Military Cross and Bar|MC*]] | MC** = [[Military Cross and two Bars|MC**]] | MC1 = [[Military Cross|MC]] & [[Medal bar|Bar]] | MC2 = [[Military Cross|MC]] & [[Medal bar|Two Bars]] | MCIfA = [[Member of the Chartered Institute for Archaeologists|MCIfA]] | MCIOB = [[Member of the Chartered Institute of Building|MCIOB]] | MCSD = [[Member of the Chartered Society of Designers|MCSD]] | MCT = [[Member of the Order of the Crown of Tonga|MCT]] | MEP = [[Member of the European Parliament|MEP]] | MIEE = [[Member of the Institution of Electrical Engineers|MIEE]] | MIET = [[Member of the Institution of Engineering and Technology|MIET]] | MICE = [[Member of the Institution of Civil Engineers|MICE]] | MIMechE= [[Member of the Institution of Mechanical Engineers|MIMechE]] | MIMM = [[Member of the Institution of Mining and Metallurgy|MIMM]] | MINA = [[Member of the Institution of Naval Architects|MINA]] | MInstCE= [[Member of the Institution of Civil Engineers|MInstCE]] | MInstME= [[Member of the Institution of Mechanical Engineers|MInstME]] | MIStructE = [[Member of the Institution of Structural Engineers|MIStructE]] | MLA = [[Member of the Northern Ireland Assembly|MLA]] | MLC = [[Member of Legislative Council|MLC]] | MM = [[Military Medal|MM]] | MM* = [[Military Medal and Bar|MM*]] | MM** = [[Military Medal and two Bars|MM**]] | MM1 = [[Military Medal|MM]] & [[Medal bar|Bar]] | MM2 = [[Military Medal|MM]] & [[Medal bar|Two Bars]] | MMM = [[Member of the Order of Military Merit|MMM]] | MMSA = [[Master of Midwifery of the Society of Apothecaries|MMSA]] | MP = [[Member of Parliament (United Kingdom)|MP]] | MPp = [[Member of the National Parliament of Papua New Guinea|MP]] | MRCP = [[Membership of the Royal Colleges of Physicians of the United Kingdom|MRCP]] | MRCS = [[Member of the Royal College of Surgeons|MRCS]] | MRCVS = [[Member of the Royal College of Veterinary Surgeons|MRCVS]] | MRIA = [[Member of the Royal Irish Academy|MRIA]] | MRIAh = [[Honorary Member of the Royal Irish Academy|HonMRIA]] | MRIC = [[Member of the Royal Institute of Chemistry|MRIC]] | MRPSL = [[Member of the Royal Philatelic Society London|MRPSL]] | MRSB = [[Member of the Royal Society of Biology|MRSB]] | MRSL = [[Member of the Royal Society of Literature|MRSL]] | MRTPI = [[Member of the Royal Town Planning Institute|MRTPI]] | MS = [[Member of the Senedd|MS]] | MSIA = [[Member of the Society of Industrial Artists|MSIA]] | MSM = [[Meritorious Service Medal (United Kingdom)|MSM]] | MSP = [[Member of the Scottish Parliament|MSP]] | MStJ = [[Member of the Order of St John|MStJ]] <noinclude>In use since 2008</noinclude> | MVO = [[Member of the Royal Victorian Order|MVO]] | MVOh = [[Honorary Member of the Royal Victorian Order|MVO]] | OBE = [[Officer of the Order of the British Empire|OBE]] | OBEh = [[Honorary Officer of the Order of the British Empire|OBE]] | OBI = [[Member of the Order of British India|OBI]] | OBIb = [[Bahadur of the Order of British India|OBI]] | OBIs = [[Sardar Bahadur of the Order of British India|OBI]] | OC = [[Officer of the Order of Canada|OC]] | OCC = [[Member of The Order of the Caribbean Community|OCC]] | OE = [[Member of the Order of Excellence of Guyana|OE]] | OF = [[Officer of the Order of Fiji|OF]] | OGS = [[Oratory of the Good Shepherd|OGS]] | OJ = [[Member of the Order of Jamaica|OJ]] | OM = [[Member of the Order of Merit|OM]] | OMM = [[Officer of the Order of Military Merit|OMM]] | ONZ = [[Honorary Member of the Order of New Zealand|ONZ]] | ONZs = [[Member of the Order of New Zealand|ONZ]] | OStJ = [[Officer of the Order of St John|OStJ]] | PC = [[Privy Council of the United Kingdom|PC]] | PCc = [[Queen's Privy Council for Canada|PC (Can)]] | PCe = [[Privy Counsellor (England)|PC]] | PCgb = [[Privy Counsellor (GB)|PC]] | PCi = [[Privy Council of Ireland|PC (Ire)]] | PCni = [[Privy Counsellor (Northern Ireland)|PC (NI)]] | PCs = [[Privy Counsellor (Scotland)|PC]] | PPRSA = [[Past President of the Royal Scottish Academy|PPRSA]] | PPRWA = [[Royal West of England Academy|PPRWA]] | PRA = [[President of the Royal Academy|PRA]] | PRHA = [[Royal Hibernian Academy|PRHA]] | P.R.H.A. = [[Royal Hibernian Academy|P.R.H.A.]] | PRS = [[President of the Royal Society|PRS]] | PRSA = [[President of the Royal Scottish Academy|PRSA]] | PRWA = [[Royal West of England Academy|PRWA]] | QC = [[Queen's Counsel|QC]] | QC(Hon)= [[Queen's Counsel Honoris Causa|QC (Hon)]] | QC (Hon.) = [[Queen's Counsel Honoris Causa|QC (Hon.)]] | QFSM = [[Queen's Fire Service Medal|QFSM]] | QGM = [[Queen's Gallantry Medal|QGM]] | QHC = [[Honorary Chaplain to The Queen|QHC]] | QHDS = [[Honorary Dental Surgeon to The Queen|QHDS]] | QHNS = [[Honorary Nursing Sister to The Queen|QHNS]] | QHP = [[Honorary Physician to The Queen|QHP]] | QHS = [[Honorary Surgeon to The Queen|QHS]] | QPM = [[Queen's Police Medal|QPM]] | QS = [[Serjeant-at-law#King's or Queen's Serjeants|QS]] | QSO = [[Companion of the Queen's Service Order|QSO]] | QSOe = [[Extra Companion of the Queen's Service Order|QSO]] | QSOh = [[Honorary Companion of the Queen's Service Order|QSO]] | QVRM = [[Queen's Volunteer Reserves Medal|QVRM]] | RA = [[Royal Academician|RA]] | RAF = [[Serving Officer of the Royal Air Force|RAF]] | RAFr = [[Retired Officer of the Royal Air Force|RAF (rtd.)]] | RBA = [[Royal Society of British Artists|RBA]] | RBSA = [[Royal Birmingham Society of Artists|RBSA]] | RD = [[Decoration for Officers of the Royal Naval Reserve|RD]] | RDI = [[Royal Designer for Industry|RDI]] | RDIh = [[Honorary Royal Designer for Industry|HonRDI]] | RE = [[Royal Society of Painter-Etchers and Engravers|RE]] | RFA = [[Royal Field Artillery|RFA]] | RFAx = [[Royal Fleet Auxiliary|RFA]] | RHA = [[Royal Hibernian Academy|RHA]] | RI = [[Royal Institute of Painters in Water Colours|RI]] | RIAS = [[Royal Incorporation of Architects in Scotland|RIAS]] | RIBA = [[Royal Institute of British Architects|RIBA]] | RIN = [[Royal Indian Navy|RIN]] | RM = [[Serving Officer of the Royal Marines|RM]] | RMS = [[Royal Miniature Society|RMS]] | RN = [[Serving Officer of the Royal Navy|RN]] | RNr = [[Retired Officer of the Royal Navy|RN]] | RNR = [[Royal Naval Reserve|RNR]] | RNVR = [[Royal Naval Volunteer Reserve|RNVR]] | ROI = [[Royal Institute of Oil Painters|ROI]] | RRC = [[Royal Red Cross|RRC]] | RRC* = [[Royal Red Cross and Bar|RRC*]] | RRC1 = [[Royal Red Cross|RRC]] & [[Medal bar|Bar]] | RSA = [[Royal Scottish Academician|RSA]] | RVM = [[Royal Victorian Medal|RVM]] | RWA = [[Royal West of England Academy|RWA]] | RWS = [[Royal Watercolour Society|RWS]] | SBStJ = [[Serving Brother of the Order of St John|SBStJ]] | SJ = [[Society of Jesus|SJ]] | SSC = [[Society of the Holy Cross|SSC]] | SSI = [[Star of the Solomon Islands|SSI]] | SSStJ = [[Serving Sister of the Order of St John|SSStJ]] | Sub-ChStJ = [[Sub-Chaplain of the Order of St John|Sub-ChStJ]] | SGM = [[Sea Gallantry Medal|SGM]] | SL = [[Serjeant-at-law|SL]] | TD = [[Territorial Decoration|TD]] | UD = [[Ulster Defence Regiment Decoration|UD]] | VA = [[Lady of the Royal Order of Victoria and Albert|VA]] | VC = [[Victoria Cross|VC]] | VC1 = [[Victoria Cross|VC]] & [[Medal bar|Bar]] | VD = [[Volunteer Officers' Decoration|VD]] | VDc = [[Colonial Auxiliary Forces Officers' Decoration|VD]] | VMH = [[Victoria Medal of Honour|VMH]] | VPRWA = [[Royal West of England Academy|VPRWA]] | VR = [[Volunteer Reserves Service Medal#.22VR.22 post-nominal letters|VR]] | VRD = [[Decoration for Officers of the Royal Naval Volunteer Reserve|VRD]] | WS = [[Writer to the Signet|WS]] <!-- Portuguese letters after the name --> | ComIH = [[Order of Prince Henry|ComIH]] | Com.I.H. = [[Order of Prince Henry|Com.I.H.]] | CvIH = [[Order of Prince Henry|CvIH]] | Cv.I.H. = [[Order of Prince Henry|Cv.I.H.]] | DmIH = [[Order of Prince Henry|DmIH]] | Dm.I.H. = [[Order of Prince Henry|Dm.I.H.]] | GCIH = [[Order of Prince Henry|GCIH]] | G.C.I.H. = [[Order of Prince Henry|G.C.I.H.]] | GColIH = [[Order of Prince Henry|GColIH]] | G.Col.I.H. = [[Order of Prince Henry|G.Col.I.H.]] | GOIH = [[Order of Prince Henry|GOIH]] | G.O.I.H. = [[Order of Prince Henry|G.O.I.H.]] | MedOIH = [[Order of Prince Henry|MedOIH]] | Med.O.I.H. = [[Order of Prince Henry|Med.O.I.H.]] | MedPIH = [[Order of Prince Henry|MedPIH]] | Med.P.I.H. = [[Order of Prince Henry|Med.P.I.H.]] | OIH = [[Order of Prince Henry|OIH]] | O.I.H. = [[Order of Prince Henry|O.I.H.]] }}<noinclude>See [[Template:Post-nominals/doc]] for more information about this template. Order of Precedence for post-nominals is in [[List of post-nominal letters (United Kingdom)]] {{documentation}} </noinclude> 9faff8f962327fbf6be9ceb3490a847ab03ad5f7 Template:Social democracy sidebar 10 838 1858 2023-06-20T13:23:09Z wikipedia>Courcelles 0 Changed protection settings for "[[Template:Social democracy sidebar]]": Not nearly enough transclusions for TE. RFPP request. ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <noinclude>{{pp-template|small=yes}}</noinclude><includeonly>{{Sidebar with collapsible lists | name = Social democracy sidebar | pretitle = Part of [[:Category:Social democracy|a series]] on | title = [[Social democracy]] | imagestyle = padding:0.65em; | image = [[File:Red rose 02.svg|75px|link=Rose (symbolism)#Socialism and social democracy]] | listtitlestyle = border-top:1px solid #B60202;background:transparent;padding-left:0.3em;text-align:center;color:black; | listclass = hlist | liststyle = margin-top:0;padding:0 0.6em 0.6em; | expanded = {{{expanded|{{{selected|{{{1|}}}}}}}}} | list1name = history | list1title = [[History of social democracy|History]] | list1 = * [[Age of Enlightenment]] * [[Frankfurt Declaration]] * [[French Revolution]] * [[Godesberg Program]] * [[Humanism]] * [[Internationalist–defencist schism]] * [[Keynesian economics|Keynesianism]] * [[Labour movement|Labor movement]] * [[Marxism]] ** [[Orthodox Marxism|Orthodox]] ** [[Revisionism (Marxism)|Revisionist]] * [[Nordic model]] * [[Social democracy#Second International era and reform or revolution dispute (1889–1914)|Reformist–revolutionary dispute]] * [[History of socialism|Socialism]] * [[Revolutions of 1848]] * [[Utopian socialism]] * [[Welfare capitalism]] | list2name = concepts | list2title = Concepts | list2 = * [[Civil liberties]] * [[Democracy]] ** [[Economic democracy|Economic]] ** [[Industrial democracy|Industrial]] ** [[Representative democracy|Representative]] * [[Dirigisme]] * [[Environmentalism]] * [[Environmental protection]] * [[Fair trade]] * [[Gradualism]] * [[Internationalism (politics)#Socialism|Internationalism]] * [[Land reform]] * [[Labor rights]] * [[Left-wing nationalism]] * [[Mixed economy]] * [[Nationalization|Nationali{{#ifeq:{{{sp}}}|uk|s|z}}ation]] * [[Negative and positive rights]] * [[Progressivism]] * [[Reformism]] ** [[Reformist Left|Left]] ** [[Reformism|Socialism]] * [[Revolutionary socialism]] * [[Secularism]] * [[Social corporatism]] * [[Social justice]] * [[Social market economy]] * [[Socialist state]] ** [[State capitalism|Capitalism]] ** [[State socialism|Socialism]] * [[Trade union]] * [[Tripartism]] * [[Welfare]] * [[Welfare state]] | list3name = variants | list3title = Variants | list3 = * [[Democratic socialism]] * [[Ethical socialism]] * [[Eduard Bernstein#Opinions|Evolutionary socialism]] * [[Liberal socialism]] * [[Socialism of the 21st century]] * [[Third Way]] | list4name = people | list4title = [[List of social democrats|People]] | list4 = <!-- Alphabetical by surname. --> * [[B. R. Ambedkar|Ambedkar]] * [[Salvador Allende|Allende]] * [[Jacinda Ardern|Ardern]] * [[Clement Attlee|Attlee]] * [[Obafemi Awolowo|Awolowo]] * [[José Batlle y Ordóñez|Batlle y Ordóñez]] * [[August Bebel|Bebel]] * [[David Ben-Gurion|Ben-Gurion]] * [[Eduard Bernstein|Bernstein]] * [[Rómulo Betancourt|Betancourt]] * [[Zulfikar Ali Bhutto|Bhutto]] * [[Tony Blair|Blair]] * [[Louis Blanc|Blanc]] * [[Willy Brandt|Brandt]] * [[Hjalmar Branting|Branting]] * [[Gordon Brown|Brown]] * [[James Callaghan|Callaghan]] * [[Lázaro Cárdenas|Cárdenas]] * [[Helen Clark|Clark]] * [[Bettino Craxi|Craxi]] * [[Anthony Crosland|Crosland]] * [[Jeremy Corbyn|Corbyn]] * [[John Curtin|Curtin]] * [[Ignacy Daszyński|Daszyński]] * [[Eugene V. Debs|Debs]] * [[Tommy Douglas|Douglas]] * [[Willem Drees|Drees]] * [[Friedrich Ebert|Ebert]] * [[Bülent Ecevit|Ecevit]] * [[Friedrich Engels|Engels]] * [[Peter Fraser|Fraser]] * [[Hugh Gaitskell|Gaitskell]] * [[Indira Gandhi|Gandhi]] * [[Felipe González|González]] * [[João Goulart|Goulart]] * [[Keir Hardie|Hardie]] * [[Rudolf Hilferding|Hilferding]] * [[Erdal İnönü|İnönü]] * [[Jean Jaurès|Jaurès]] * [[Roy Jenkins|Jenkins]] * [[Kamal Jumblatt|Jumblatt]] * [[Carsun Chang|Junmai]] * [[Tetsu Katayama|Katayama]] * [[Karl Kautsky|Kautsky]] * [[Alexander Kerensky|Kerensky]] * [[Anna Kéthly|Kéthly]] * [[Norman Kirk|Kirk]] * [[Ricardo Lagos|Lagos]] * [[Ferdinand Lassalle|Lassalle]] * [[Jack Layton|Layton]] * [[Vladimir Lenin|Lenin]] * [[René Lévesque|Lévesque]] * [[Wilhelm Liebknecht|Liebknecht (father)]] * [[Karl Liebknecht|Liebknecht (son)]] * [[Rosa Luxemburg|Luxemburg]] * [[Ramsay MacDonald|MacDonald]] * [[Nelson Mandela|Mandela]] * [[Karl Marx|Marx]] * [[Alva Myrdal|Myrdal]] * [[Jawaharlal Nehru|Nehru]] * [[Olof Palme|Palme]] * [[Georgi Plekhanov|Plekhanov]] * [[Romano Prodi|Prodi]] * [[Bertrand Russell|Russell]] * [[Bernie Sanders|Sanders]] * [[Michael Joseph Savage|Savage]] * [[Thorvald Stauning|Stauning]] * [[Norman Thomas|Thomas]] * [[Joop den Uyl|Den Uyl]] * [[Sidney Webb, 1st Baron Passfield|Webb]] * [[Gough Whitlam|Whitlam]] * [[Harold Wilson|Wilson]] * [[Noe Zhordania|Zhordania]] | list5name = orgs | list5title = [[List of social democratic parties|Organi{{#ifeq:{{{sp}}}|uk|s|z}}ations]] | list5 = * [[International Trade Union Confederation]] * [[International Union of Socialist Youth]] * [[Party of European Socialists]] * [[Progressive Alliance]] * [[Socialist International]] * [[Young European Socialists]] | list6name = by region | list6title = By region | list6 = * [[History of the Social Democratic Party of Austria|Austria]] * [[History of the Social Democratic Party of Germany|Germany]] * [[Social democracy in the United States|United States]] | list7name = related | list7title = Related | list7 = * [[Communism]] * "[[The Internationale]]" * [[Socialism]] * [[Types of socialism]] | navbarstyle = border-top:1px solid #B60202; | belowstyle = font-weight:normal; border-top:1px solid #B60202; border-bottom:none; | belowclass = plainlist | below = * '''{{portal-inline|Economics|size=tiny}}''' * '''{{portal-inline|Politics|size=tiny}}''' * '''{{portal-inline|Socialism|size=tiny}}''' }}</includeonly><noinclude> {{Documentation}} </noinclude> 3b9093241143a86276aa4d5cef6bf1192d07fb7c Module:Coordinates 828 589 1326 2023-06-21T17:33:40Z wikipedia>Ladsgroup 0 Switch from proto-relative urls (//foo.bar.com) to HTTPS (https://foo.bar.com). Since we are only serving https in Wikimedia now, it always outputs https links. At the same time, proto-relative add two duplicate rows to externallinks table meaning this is adding tens of millions of extra and useless rows bloating the table Scribunto text/plain --[[ This module is intended to replace the functionality of {{Coord}} and related templates. It provides several methods, including {{#invoke:Coordinates | coord }} : General function formatting and displaying coordinate values. {{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal degree values to DMS format. {{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format to decimal degree format. {{#invoke:Coordinates | link }} : Export the link used to reach the tools ]] require('strict') local math_mod = require("Module:Math") local coordinates = {}; local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true); local current_page = mw.title.getCurrentTitle() local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' ); local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '&params=' --[[ Helper function, replacement for {{coord/display/title}} ]] local function displaytitle(coords) return mw.getCurrentFrame():extensionTag{ name = 'indicator', args = { name = 'coordinates' }, content = '<span id="coordinates">[[Geographic coordinate system|Coordinates]]: ' .. coords .. '</span>' } end --[[ Helper function, used in detecting DMS formatting ]] local function dmsTest(first, second) if type(first) ~= 'string' or type(second) ~= 'string' then return nil end local s = (first .. second):upper() return s:find('^[NS][EW]$') or s:find('^[EW][NS]$') end --[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]] local function makeInvokeFunc(funcName) return function (frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Coord' }) return coordinates[funcName](args, frame) end end --[[ Helper function, handle optional args. ]] local function optionalArg(arg, supplement) return arg and arg .. supplement or '' end --[[ Formats any error messages generated for display ]] local function errorPrinter(errors) local result = "" for i,v in ipairs(errors) do result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />' end return result end --[[ Determine the required CSS class to display coordinates Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself default is the mode as specificied by the user when calling the {{coord}} template mode is the display mode (dec or dms) that we will need to determine the css class for ]] local function displayDefault(default, mode) if default == "" then default = "dec" end if default == mode then return "geo-default" else return "geo-nondefault" end end --[[ specPrinter Output formatter. Takes the structure generated by either parseDec or parseDMS and formats it for inclusion on Wikipedia. ]] local function specPrinter(args, coordinateSpec) local uriComponents = coordinateSpec["param"] if uriComponents == "" then -- RETURN error, should never be empty or nil return "ERROR param was empty" end if args["name"] then uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"]) end local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">' .. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> ' .. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>' .. '</span>' local lat = tonumber( coordinateSpec["dec-lat"] ) or 0 local geodeclat if lat < 0 then -- FIXME this breaks the pre-existing precision geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S" else geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N" end local long = tonumber( coordinateSpec["dec-long"] ) or 0 local geodeclong if long < 0 then -- FIXME does not handle unicode minus geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W" else geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E" end local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">' .. geodeclat .. ' ' .. geodeclong .. '</span>' local geonumhtml = '<span class="geo">' .. coordinateSpec["dec-lat"] .. '; ' .. coordinateSpec["dec-long"] .. '</span>' local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>' .. '<span class="geo-multi-punct">&#xfeff; / &#xfeff;</span>' .. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">'; if not args["name"] then inner = inner .. geodechtml .. '<span style="display:none">&#xfeff; / ' .. geonumhtml .. '</span></span>' else inner = inner .. '<span class="vcard">' .. geodechtml .. '<span style="display:none">&#xfeff; / ' .. geonumhtml .. '</span>' .. '<span style="display:none">&#xfeff; (<span class="fn org">' .. args["name"] .. '</span>)</span></span></span>' end local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css' return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = stylesheetLink } } .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents .. ' ' .. inner .. ']</span>' end --[[ Helper function, convert decimal to degrees ]] local function convert_dec2dms_d(coordinate) local d = math_mod._round( coordinate, 0 ) .. "°" return d .. "" end --[[ Helper function, convert decimal to degrees and minutes ]] local function convert_dec2dms_dm(coordinate) coordinate = math_mod._round( coordinate * 60, 0 ); local m = coordinate % 60; coordinate = math.floor( (coordinate - m) / 60 ); local d = coordinate % 360 .."°" return d .. string.format( "%02d′", m ) end --[[ Helper function, convert decimal to degrees, minutes, and seconds ]] local function convert_dec2dms_dms(coordinate) coordinate = math_mod._round( coordinate * 60 * 60, 0 ); local s = coordinate % 60 coordinate = math.floor( (coordinate - s) / 60 ); local m = coordinate % 60 coordinate = math.floor( (coordinate - m) / 60 ); local d = coordinate % 360 .."°" return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s ) end --[[ Helper function, convert decimal latitude or longitude to degrees, minutes, and seconds format based on the specified precision. ]] local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) local coord = tonumber(coordinate) local postfix if coord >= 0 then postfix = firstPostfix else postfix = secondPostfix end precision = precision:lower(); if precision == "dms" then return convert_dec2dms_dms( math.abs( coord ) ) .. postfix; elseif precision == "dm" then return convert_dec2dms_dm( math.abs( coord ) ) .. postfix; elseif precision == "d" then return convert_dec2dms_d( math.abs( coord ) ) .. postfix; end end --[[ Convert DMS format into a N or E decimal coordinate ]] local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str) local degrees = tonumber(degrees_str) local minutes = tonumber(minutes_str) or 0 local seconds = tonumber(seconds_str) or 0 local factor = 1 if direction == "S" or direction == "W" then factor = -1 end local precision = 0 if seconds_str then precision = 5 + math.max( math_mod._precision(seconds_str), 0 ); elseif minutes_str and minutes_str ~= '' then precision = 3 + math.max( math_mod._precision(minutes_str), 0 ); else precision = math.max( math_mod._precision(degrees_str), 0 ); end local decimal = factor * (degrees+(minutes+seconds/60)/60) return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based. end --[[ Checks input values to for out of range errors. ]] local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong ) local errors = {}; lat_d = tonumber( lat_d ) or 0; lat_m = tonumber( lat_m ) or 0; lat_s = tonumber( lat_s ) or 0; long_d = tonumber( long_d ) or 0; long_m = tonumber( long_m ) or 0; long_s = tonumber( long_s ) or 0; if strong then if lat_d < 0 then table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"}) end if long_d < 0 then table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"}) end --[[ #coordinates is inconsistent about whether this is an error. If globe: is specified, it won't error on this condition, but otherwise it will. For not simply disable this check. if long_d > 180 then table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"}) end ]] end if lat_d > 90 then table.insert(errors, {source, "latitude degrees > 90"}) end if lat_d < -90 then table.insert(errors, {source, "latitude degrees < -90"}) end if lat_m >= 60 then table.insert(errors, {source, "latitude minutes >= 60"}) end if lat_m < 0 then table.insert(errors, {source, "latitude minutes < 0"}) end if lat_s >= 60 then table.insert(errors, {source, "latitude seconds >= 60"}) end if lat_s < 0 then table.insert(errors, {source, "latitude seconds < 0"}) end if long_d >= 360 then table.insert(errors, {source, "longitude degrees >= 360"}) end if long_d <= -360 then table.insert(errors, {source, "longitude degrees <= -360"}) end if long_m >= 60 then table.insert(errors, {source, "longitude minutes >= 60"}) end if long_m < 0 then table.insert(errors, {source, "longitude minutes < 0"}) end if long_s >= 60 then table.insert(errors, {source, "longitude seconds >= 60"}) end if long_s < 0 then table.insert(errors, {source, "longitude seconds < 0"}) end return errors; end --[[ parseDec Transforms decimal format latitude and longitude into the structure to be used in displaying coordinates ]] local function parseDec( lat, long, format ) local coordinateSpec = {} local errors = {} if not long then return nil, {{"parseDec", "Missing longitude"}} elseif not tonumber(long) then return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}} end errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false ); coordinateSpec["dec-lat"] = lat; coordinateSpec["dec-long"] = long; local mode = coordinates.determineMode( lat, long ); coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} if format then coordinateSpec.default = format else coordinateSpec.default = "dec" end return coordinateSpec, errors end --[[ parseDMS Transforms degrees, minutes, seconds format latitude and longitude into the a structure to be used in displaying coordinates ]] local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format ) local coordinateSpec, errors, backward = {}, {} lat_f = lat_f:upper(); long_f = long_f:upper(); -- Check if specified backward if lat_f == 'E' or lat_f == 'W' then lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true; end errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true ); if not long_d then return nil, {{"parseDMS", "Missing longitude" }} elseif not tonumber(long_d) then return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }} end if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then if lat_f:upper() == 'S' then lat_d = '-' .. lat_d; end if long_f:upper() == 'W' then long_d = '-' .. long_d; end return parseDec( lat_d, long_d, format ); end end coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}} coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}} if format then coordinateSpec.default = format else coordinateSpec.default = "dms" end return coordinateSpec, errors, backward end --[[ Check the input arguments for coord to determine the kind of data being provided and then make the necessary processing. ]] local function formatTest(args) local result, errors local backward, primary = false, false local function getParam(args, lim) local ret = {} for i = 1, lim do ret[i] = args[i] or '' end return table.concat(ret, '_') end if not args[1] then -- no lat logic return errorPrinter( {{"formatTest", "Missing latitude"}} ) elseif not tonumber(args[1]) then -- bad lat logic return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} ) elseif not args[4] and not args[5] and not args[6] then -- dec logic result, errors = parseDec(args[1], args[2], args.format) if not result then return errorPrinter(errors); end -- formatting for geohack: geohack expects D_N_D_E notation or D;D notation -- wikiminiatlas doesn't support D;D notation -- #coordinates parserfunction doesn't support negative decimals with NSWE result.param = table.concat({ math.abs(tonumber(args[1])), ((tonumber(args[1]) or 0) < 0) and 'S' or 'N', math.abs(tonumber(args[2])), ((tonumber(args[2]) or 0) < 0) and 'W' or 'E', args[3] or ''}, '_') elseif dmsTest(args[4], args[8]) then -- dms logic result, errors, backward = parseDMS(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args.format) if args[10] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 9) elseif dmsTest(args[3], args[6]) then -- dm logic result, errors, backward = parseDMS(args[1], args[2], nil, args[3], args[4], args[5], nil, args[6], args['format']) if args[8] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 7) elseif dmsTest(args[2], args[4]) then -- d logic result, errors, backward = parseDMS(args[1], nil, nil, args[2], args[3], nil, nil, args[4], args.format) if args[6] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 5) else -- Error return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]' end result.name = args.name local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'} for _, v in ipairs(extra_param) do if args[v] then table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' }) end end local ret = specPrinter(args, result) if #errors > 0 then ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]' end return ret, backward end --[[ Generate Wikidata tracking categories. ]] local function makeWikidataCategories(qid) local ret local qid = qid or mw.wikibase.getEntityIdForCurrentPage() if mw.wikibase and current_page.namespace == 0 then if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype if snaktype == 'value' then -- coordinates exist both here and on Wikidata, and can be compared. ret = 'Coordinates on Wikidata' elseif snaktype == 'somevalue' then ret = 'Coordinates on Wikidata set to unknown value' elseif snaktype == 'novalue' then ret = 'Coordinates on Wikidata set to no value' end else -- We have to either import the coordinates to Wikidata or remove them here. ret = 'Coordinates not on Wikidata' end end if ret then return string.format('[[Category:%s]]', ret) else return '' end end --[[ link Simple function to export the coordinates link for other uses. Usage: {{#invoke:Coordinates | link }} ]] function coordinates.link(frame) return coord_link; end --[[ dec2dms Wrapper to allow templates to call dec2dms directly. Usage: {{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix | negative_suffix | precision }} decimal_coordinate is converted to DMS format. If positive, the positive_suffix is appended (typical N or E), if negative, the negative suffix is appended. The specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail to use. ]] coordinates.dec2dms = makeInvokeFunc('_dec2dms') function coordinates._dec2dms(args) local coordinate = args[1] local firstPostfix = args[2] or '' local secondPostfix = args[3] or '' local precision = args[4] or '' return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) end --[[ Helper function to determine whether to use D, DM, or DMS format depending on the precision of the decimal input. ]] function coordinates.determineMode( value1, value2 ) local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) ); if precision <= 0 then return 'd' elseif precision <= 2 then return 'dm'; else return 'dms'; end end --[[ dms2dec Wrapper to allow templates to call dms2dec directly. Usage: {{#invoke:Coordinates | dms2dec | direction_flag | degrees | minutes | seconds }} Converts DMS values specified as degrees, minutes, seconds too decimal format. direction_flag is one of N, S, E, W, and determines whether the output is positive (i.e. N and E) or negative (i.e. S and W). ]] coordinates.dms2dec = makeInvokeFunc('_dms2dec') function coordinates._dms2dec(args) local direction = args[1] local degrees = args[2] local minutes = args[3] local seconds = args[4] return convert_dms2dec(direction, degrees, minutes, seconds) end --[[ coord Main entry point for Lua function to replace {{coord}} Usage: {{#invoke:Coordinates | coord }} {{#invoke:Coordinates | coord | lat | long }} {{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }} ... Refer to {{coord}} documentation page for many additional parameters and configuration options. Note: This function provides the visual display elements of {{coord}}. In order to load coordinates into the database, the {{#coordinates:}} parser function must also be called, this is done automatically in the Lua version of {{coord}}. ]] coordinates.coord = makeInvokeFunc('_coord') function coordinates._coord(args) if not tonumber(args[1]) and not args[2] then args[3] = args[1]; args[1] = nil local entity = mw.wikibase.getEntityObject(args.qid) if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude if precision then precision = -math_mod._round(math.log(precision)/math.log(10),0) args[1] = math_mod._round(args[1],precision) args[2] = math_mod._round(args[2],precision) end end end local contents, backward = formatTest(args) local Notes = args.notes or '' local Display = args.display and args.display:lower() or 'inline' -- it and ti are short for inline,title and title,inline local function isInline(s) -- Finds whether coordinates are displayed inline. return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti' end local function isInTitle(s) -- Finds whether coordinates are displayed in the title. return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti' end local function coord_wrapper(in_args) -- Calls the parser function {{#coordinates:}}. return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or '' end local text = '' if isInline(Display) then text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>' end if isInTitle(Display) then -- Add to output since indicator content is invisible to Lua later on if not isInline(Display) then text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>' end text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid) end if not args.nosave then local page_title, count = mw.title.getCurrentTitle(), 1 if backward then local tmp = {} while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end tmp.count = count; count = 2*(count-1) while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end for i, v in ipairs(tmp) do args[i] = v end else while count <= 9 do args[count] = (args[count] or ''); count = count+1 end end if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end args.notes, args.format, args.display = nil text = text .. coord_wrapper(args) end return text end --[[ coord2text Extracts a single value from a transclusion of {{Coord}}. IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED. Usage: {{#invoke:Coordinates | coord2text | {{Coord}} | parameter }} Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source ]] function coordinates._coord2text(coord,type) if coord == '' or type == '' or not type then return nil end type = mw.text.trim(type) if type == 'lat' or type == 'long' then local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ') if type == 'lat' then result, negative = result[1], 'S' else result, negative = result[2], 'W' end result = mw.text.split(result, '°') if result[2] == negative then result[1] = '-'..result[1] end return result[1] else return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]') end end function coordinates.coord2text(frame) return coordinates._coord2text(frame.args[1],frame.args[2]) end --[[ coordinsert Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}. IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED. Usage: {{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }} Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation. ]] function coordinates.coordinsert(frame) -- for the 2nd or later integer parameter (the first is the coord template, as above) for i, v in ipairs(frame.args) do if i ~= 1 then -- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then -- find from the params= up to the first possibly-present underscore -- and append the i_th coordinsert parameter and a space -- IDK why we're adding a space but it does seem somewhat convenient frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ') end end end if frame.args.name then -- if we can't find the vcard class if not mw.ustring.find(frame.args[1], '<span class="vcard">') then -- take something that looks like a coord template and add the vcard span with class and fn org class local namestr = frame.args.name frame.args[1] = mw.ustring.gsub( frame.args[1], '(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)', '%1<span class="vcard">%2<span style="display:none">&#xfeff; (<span class="fn org">' .. namestr .. '</span>)</span></span>%3' ) -- then find anything from coordinates parameters to the 'end' and attach the title parameter frame.args[1] = mw.ustring.gsub( frame.args[1], '(&params=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ' ) end end -- replace the existing indicator with a new indicator using the modified content frame.args[1] = mw.ustring.gsub( frame.args[1], '(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127', function (inline, coord) return inline .. displaytitle(coord) end ) return frame.args[1] end return coordinates 6162d7e98fcf6faab5809049e0a48bb3e67d88e3 Module:Find sources/links 828 1032 2262 2023-06-21T18:45:56Z wikipedia>Izno 0 [[phab:T337149#8953569]] Scribunto text/plain -- This is a list of links used by [[Module:Find sources]]. return { ["archive.org"] = { url = 'https://archive.org/search.php?query=$1%20AND%20mediatype:texts', display = 'Archive.org', description = "The [[Internet Archive]], a digital library of public websites.", }, ["bing"] = { url = 'https://www.bing.com/search?q=$1', display = 'Bing', description = "[[Bing (search engine)|Bing]], Microsoft's flagship search engine.", }, ["britannica"] = { url = 'https://www.britannica.com/search?nop=1a15&cse=on&query=$1&cx=ccef96e8363da4b5f&tbm=3&fxx=3', display = 'Encyclopedia Britannica', description = "[[Encyclopedia Britannica]]", }, ["british library"] = { url = 'https://explore.bl.uk/primo_library/libweb/action/search.do?fn=search&ct=search&initialSearch=true&mode=Basic&tab=local_tab&indx=1&dum=true&srt=rank&vid=BLVU1&frbg=&tb=t&vl%28freeText0%29=$1', display = 'British Library', description = "National library of the United Kingdom", }, ["ccsearch"] = { url = "https://search.creativecommons.org/search?q=$1&license_type=commercial,modification", display = "CC Search", description = "CC Search: The official search engine of [[Creative Commons]]", }, ["cochrane"] = { url = "https://www.cochranelibrary.com/en/advanced-search?searchBy=-1&isWordVariations=&resultPerPage=25&searchType=advanced&selectedType=review&displayText=&orderBy=relevancy&p_p_id=scolarissearchresultsportlet_WAR_scolarissearchresults&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=2&searchText=$1", display = "Cochrane", description = "[[Cochrane Library]]: Leading publisher of systematic reviews.", }, ["doaj"] = { url = "https://www.doaj.org/search/articles?source=%7B%22query%22%3A%7B%22query_string%22%3A%7B%22query%22%3A$1%2C%22default_operator%22%3A%22AND%22%7D%7D%7D", display = "DOAJ", description = "[[Directory of Open Access Journals|DOAJ]]: Directory of Open Access Journals", }, ["duckduckgo"] = { url = 'https://duckduckgo.com/?q=$1', display = 'DuckDuckGo', description = "[[DuckDuckGo]], a search engine that emphasizes protecting searchers' privacy and avoiding the \"filter bubble\" of personalized search results.", }, ["eowb"] = { url = 'https://search.lib.umich.edu/everything?query=$1', display = 'Encyclopedia of World Biography', tooltip = 'Encyclopedia of World Biography, by Gale Research; online results provided by University of Michigan.', }, ["free news sources"] = { url = 'https://en.wikipedia.org/wiki/Wikipedia:Free_English_newspaper_sources', display = 'free news sources', }, ["gale"] = { url = "https://go.gale.com/ps/basicSearch.do?inputFieldNames%5B0%5D=OQE&nwf=y&searchType=BasicSearchForm&userGroupName=anon%7Ee3e4f4eb&prodId=AONE&spellCheck=true&method=doSearch&dblist=&stw.option=&ebook=&singleLimiterFieldValues%5BAC%5D=y&_singleLimiterFieldValues%5BAC%5D=on&_singleLimiterFieldValues%5BRE%5D=on&standAloneLimiters=LI&_singleLimiterFieldValues%5BLI%5D=on&inputFieldValues%5B0%5D=$1", display = "Gale Academic OneFile", description = " Gale Academic OneFile: Academic publisher portal from [[Gale (publisher)|Gale]]. Access via [[Wikipedia:The Wikipedia Library|Wikipedia Library]]", }, ["gin"] = { url = "https://guidelines.ebmportal.com/guidelines-international-network?type=search&search=$1", display = "GIN guidelines", tooltip = "Content from the library and the registry of guidelines in development provided by the Guidelines International Network", }, ["globe and mail"] = { url = 'https://www.theglobeandmail.com/search/?q=$1', display = "''The Globe and Mail''", description = "The website of ''[[The Globe and Mail]]'', a [[newspaper of record]] for Canada.", }, ["google"] = { url = 'https://www.google.com/search?as_eq=wikipedia&q=$1', display = 'Google', description = "[[Google]], the flagship search engine from Google Inc.", }, ["google books"] = { url = 'https://www.google.com/search?tbs=bks:1&q=$1+-wikipedia', display = 'Google Books', description = "[[Google Books]], Google's search engine for books." }, ["google free images"] = { url = 'https://www.google.com/search?safe=off&tbs=sur:fmc&tbm=isch&q=$1+-site:wikipedia.org+-site:wikimedia.org', display = 'Free Google Images', description = "[[Google Images]], Google's search engine for images. Only images compatible with Wikipedia's licensing are included.", }, ["google news"] = { url = 'https://www.google.com/search?tbm=nws&q=$1+-wikipedia&tbs=ar:1', display = 'Google News', description = "[[Google News]], Google's search engine for news sites.", notes = "In the past this link searched news archives, but this functionality has been removed by Google. Currently, only recent news articles are searched.", }, ["google newspapers"] = { url = 'https://www.google.com/search?&q=$1&tbs=bkt:s&tbm=bks', display = 'Google Newspapers', description = "Google Newspapers, a search of Google's digital archive of print newspapers.", }, ["google scholar"] = { url = 'https://scholar.google.com/scholar?q=$1', display = 'Google Scholar', description = "[[Google Scholar]], Google's search engine for academic papers and other scholarly research.", }, ["haaretz"] = { url = 'https://www.haaretz.com/search-results?q=$1', display = "''Haaretz''", description = "The website of ''[[Haaretz]]'', a [[newspaper of record]] for Israel.", }, ["internet archive scholar"] = { url = 'https://scholar.archive.org/search?&sort_order=time_desc&q=$1', display = 'IA scholar', description = "The [[Internet Archive Scholar]], a digital library of open access academic journals.", tooltip = "The [[Internet Archive Scholar]], a digital library of open access academic journals.", }, ["infoplease"] = { url = 'https://www.infoplease.com/search/$1', display = 'Infoplease', tooltip = 'Infoplease encyclopedia, dictionary, and almanac', }, ["jstor"] = { url = 'https://www.jstor.org/action/doBasicSearch?Query=$1&acc=on&wc=on', display = 'JSTOR', description = "[[JSTOR]], an online library containing digitised versions of academic journals. Requires a subscription." }, ["library of congress"] = { url = 'https://www.loc.gov/search/?in=&q=$1', display = "Library of Congress", description = "U.S. [[Library of Congress]]", }, ["mail and guardian"] = { url = 'https://mg.co.za/?s=$1', display = "''Mail & Guardian''", description = "The website of the ''[[Mail & Guardian]]'', a [[newspaper of record]] for South Africa.", }, ["medrs"] = { url = "https://en.wikipedia.org/wiki/Wikipedia:Identifying_reliable_sources_(medicine)", display = "find medical sources", tooltip = "Ideal sources for biomedical material include recent literature reviews and medical guidelines; learn how to identify reliable sources for medical content at Wikipedia at WP:MEDRS.", description = "[[WP:MEDRS|MEDRS]]: Ideal sources for biomedical material include recent literature reviews and medical guidelines; learn how to identify reliable sources for medical content.", }, ["muse"] = { url = 'https://muse.jhu.edu/search?action=search&min=1&max=10&t=header&query=content:$1:and', display = 'MUSE', tooltip = 'Project MUSE: humanities and social science content from academic journals and societies.', }, ["new york times"] = { url = 'https://www.nytimes.com/search/$1', display = "''New York Times''", description = "The website of ''[[The New York Times]]'', a [[newspaper of record]] for the United States.", }, ["new zealand herald"] = { url = 'https://www.nzherald.co.nz/search/$1/', display = "''The New Zealand Herald''", description = "The website of ''[[The New Zealand Herald]]'', a [[newspaper of record]] for New Zealand.", }, ["openlibrary"] = { url = 'https://openlibrary.org/search?q=$1&mode=everything', display = 'OpenLibrary', separator = '+', }, ["openmd"] = { url = "https://openmd.com/search?q=$1", display = "OpenMD", description = "OpenMD: Search engine for medical literature.", }, ["pubmed"] = { url = "https://pubmed.ncbi.nlm.nih.gov/?term=$1&filter=pubt.meta-analysis&filter=pubt.review&filter=pubt.systematicreview&filter=datesearch.y_10", display = "PubMed", description = "[[PubMed]]: Search engine for biomedical literature from [[United States National Library of Medicine|NLM]].", }, ["sciencedirect"] = { url = "https://www.sciencedirect.com/search?qs=$1&articleTypes=REV%2CEN%2CCH%2CSSU%2CPGL&lastSelectedFacet=articleTypes", display = "ScienceDirect", description = "ScienceDirect: [[Elsevier]]'s scientific, technical, and medical research portal.", }, ["south china morning post"] = { url = 'https://www.scmp.com/search/$1', display = "''South China Morning Post''", description = "The website of the ''[[South China Morning Post]]'', a [[newspaper of record]] for Hong Kong.", }, ["springer"] = { url = "https://link.springer.com/search?query=$1", display = "Springer", description = "Springer Nature's portal for journals, books, and reference works.", }, ["statpearls"] = { url = "https://www.ncbi.nlm.nih.gov/books/NBK430685/?term=$1", display = "StatPearls", description = "StatPearls: the largest provider of healthcare continuing education worldwide, providing peer-reviewed practice-guiding knowledge authored by clinical experts.", }, ["straits times"] = { url = 'https://www.straitstimes.com/search?searchkey=$1', display = "''The Straits Times''", description = "The website of ''[[The Straits Times]]'', a [[newspaper of record]] for Singapore.", }, ["sydney morning herald"] = { url = 'https://www.smh.com.au/search?text=$1', display = "''The Sydney Morning Herald''", description = "The website of ''[[The Sydney Morning Herald]]'', a [[newspaper of record]] for Australia.", }, ["the age"] = { url = 'https://www.theage.com.au/search?text=$1', display = "''The Age''", description = "The website of ''[[The Age]]'', a [[newspaper of record]] for Australia.", }, ["the guardian"] = { url = 'https://www.google.co.uk/search?as_sitesearch=www.theguardian.com&q=$1', display = 'The Guardian', description = "''[[The Guardian]]'' newspaper, U.K.", }, ["the hindu"] = { url = 'https://www.thehindu.com/search/?q=$1', display = "''The Hindu''", description = "The website of ''[[The Hindu]]'', a [[newspaper of record]] for India.", }, ["the times"] = { url = 'https://www.thetimes.co.uk/search?source=search-page&q=$1', display = "''The Times''", description = "The website of ''[[The Times]]'', a [[newspaper of record]] for the United Kingdom.", }, ["times of india"] = { url = 'https://timesofindia.indiatimes.com/topic/$1', display = "''The Times of India''", description = "The website of ''[[The Times of India]]'', a [[newspaper of record]] for India.", }, ["trip"] = { url = "https://www.tripdatabase.com/Searchresult?search_type=standard&criteria=$1&from_date=2012", display = "Trip Database", description = "Trip Database: Search engine for clinical research evidence.", }, ["uptodate"] = { url = "https://www.uptodate.com/contents/search?sp=0&searchType=PLAIN_TEXT&source=USER_INPUT&searchControl=TOP_PULLDOWN&searchOffset=1&autoComplete=false&language=en&max=10&search=$1", display = "UpToDate", tooltip = "Evidence-based resource for clinical decision support written for and by physicians", }, ["vgrl"] = { url = 'https://en.wikipedia.org/wiki/Special:Search?search=$1&prefix=Wikipedia%3AWikiProject+Video+games%2FReference+library&fulltext=Search+reference+library&fulltext=Search', display = 'VGRL', description = "[[Wikipedia:WikiProject Video games/Reference library]] internal archive search.", }, ["vgrs"] = { url = 'https://www.google.com/cse?cx=009782238053898643791%3A8naerdbd-oy&q=$1', display = 'VGRS', description = "[http://www.google.com/cse/home?cx=003516479746865699832:leawcwkqifq Google RS], a [[custom Google search engine]] that limits the search to sites listed in [[Wikipedia:WikiProject Video games/Sources]].", }, ["vgtalk"] = { url = 'https://en.wikipedia.org/w/index.php?search=$1+prefix%3AWikipedia+talk%3AWikiProject+Video+games&title=Special:Search&profile=default&fulltext=1', display = 'WPVG Talk', description = "A search in the WikiProject Video games talk page and its archives under [[Wikipedia talk:WikiProject Video games]].", }, ["wikipedia library"] = { url = "https://wikipedialibrary.wmflabs.org/search/?q=$1", display = "TWL", tooltip = "The Wikipedia Library", description = "Search results from dozens of services provided via EBSCOhost to Wikipedians via [[Wikipedia:The Wikipedia Library]].", }, ["wikipedia reference search"] = { url = 'https://www.google.com/custom?hl=en&cx=007734830908295939403%3Agalkqgoksq0&cof=FORID%3A13%3BAH%3Aleft%3BCX%3AWikipedia%2520Reference%2520Search&q=$1', display = 'Wikipedia Reference Search', description = "[[WP:WRS|Wikipedia Reference Search]], a Google search that only searches sites vetted by Wikipedians.", }, ["wiley"] = { url = "https://onlinelibrary.wiley.com/action/doSearch?AllField=$1", display = "Wiley", description = "Wiley Online Library: [[Wiley (publisher)|Wiley's]] portal for academic articles, books, and collections.", }, } 4817c288e68e87936971b4b7bb22926dc62c114c Template:Authority control/related 10 1079 2356 2023-06-23T12:34:22Z wikipedia>MSGJ 0 tidy wikitext text/x-wiki {{Sidebar | templatestyles = Template:Lua sidebar/styles.css | title = [[Wikipedia:Authority control]] | content2 = '''[[Template:Authority control|Template]]''' {{flatlist}} * [[Template talk:Authority control|talk]] * [[Template:Authority control/sandbox|sandbox]] * [[Template:Authority control/staging|staging]] * [[Template:Authority control/testcases|testcases]] * [[Template:Authority control/doc|doc]] * [[Special:PrefixIndex/Template:Authority control/|subpages]] {{endflatlist}} | content3 = '''[[Module:Authority control|Module]]''' {{flatlist}} * [[Module:Authority control/sandbox|sandbox]] * [[Module talk:Authority control/testcases|testcases]] * [[Module:Authority control/doc|doc]] * [[Special:PrefixIndex/Module:Authority control/|subpages]] {{endflatlist}} | content4 = '''[[Module:Authority control/config|Config]]''' {{flatlist}} * [[Module:Authority control/config/sandbox|sandbox]] * [[Module:Authority control/config/staging|staging]] {{endflatlist}} | content5 = '''[[Module:Authority control/auxiliary|Auxiliary]]''' {{flatlist}} * [[Module:Authority control/auxiliary/sandbox|sandbox]] {{endflatlist}} | content6 = '''[[Module:Authority control/documentation|Doc module]]''' {{flatlist}} * [[Module:Authority control/documentation/sandbox|sandbox]] {{endflatlist}} | content7 = '''[[:Category:Wikipedia authority control|Category]]''' {{flatlist}} * [[:Category:Pages with authority control identifiers needing attention|attention]] * [[Wikipedia:Authority control/dashboard|dashboard]] {{endflatlist}} }} 9c16571badbcf205b4c1f96317d8abab39779051 Template:Navbox suite 10 1292 2627 2023-06-23T20:58:18Z w>Andrybak 0 categorization wikitext text/x-wiki {{#invoke:sidebar|sidebar | width = auto | bodystyle = border-spacing:0;background:#f7f7f7;padding:2px; | title = Navbox suite | titlestyle = padding: 0.2em 0.8em; font-size: 145%; line-height: 1.2em; background-color: #ccf; | contentclass = plainlist | contentstyle = padding:0.25em;background:#fdfdfd; | content1 = *{{tl|Navbox}} *{{tl|Navbox with collapsible groups}} *{{tl|Navbox with columns}} *{{tl|Navboxes}} | navbarstyle = background:#fdfdfd;padding:0 5px }}<!-- NOTE: A template MUST support all of the parameters marked with a cross in Template:Navbox/doc in order to be Navbox suite compliant. In particular, the name, state, border, and navbar parameters are especially important. --><noinclude> {{Documentation|content= Helper template for linking between main navbox templates in their documentation. [[Category:Wikipedia-internal sidebar templates]] [[Category:Navbox meta-templates|Δ]]<!-- Δ for documentation ([[WP:SORTKEY]]) --> [[Category:Documentation see also templates]] }} </noinclude> 1c4315eaad3857aa3fcc7a7bb9d24c989e20e19f Module:Format TemplateData 828 625 1410 2023-06-26T23:07:36Z Pppery 6 Remove [[Module:JSONutil]] Scribunto text/plain local TemplateData = { suite = "TemplateData", serial = "2022-03-10", item = 46997995 } --[==[ improve template:TemplateData ]==] local Failsafe = TemplateData local Config = { -- multiple option names mapped into unique internal fields basicCnf = { catProblem = "strange", classMultiColumns = "selMultClm", classNoNumTOC = "suppressTOCnum", classTable = "classTable", cssParWrap = "cssTabWrap", cssParams = "cssTable", docpageCreate = "suffix", docpageDetect = "subpage", helpBoolean = "support4boolean", helpContent = "support4content", helpDate = "support4date", helpFile = "support4wiki-file-name", helpFormat = "supportFormat", helpLine = "support4line", helpNumber = "support4number", helpPage = "support4wiki-page-name", helpString = "support4string", helpTemplate = "support4wiki-template-name", helpURL = "support4url", helpUser = "support4wiki-user-name", msgDescMiss = "solo", tStylesTOCnum = "stylesTOCnum", tStylesMultiColumns = "stylesMultClm" }, classTable = { "wikitable" }, -- classes for params table debugmultilang = "C0C0C0", loudly = false, -- show exported element, etc. solo = false, -- complaint on missing description strange = false, -- title of maintenance category cssTable = false, -- styles for params table cssTabWrap = false, -- styles for params table wrapper debug = false, subpage = false, -- pattern to identify subpage suffix = false, -- subpage creation scheme suppressTOCnum = false, -- class for TOC number suppression jsonDebug = "json-code-lint" -- class for jsonDebug tool } local Data = { div = false, -- <div class="mw-templatedata-doc-wrap"> got = false, -- table, initial templatedata object heirs = false, -- table, params that are inherited jump = false, -- source position at end of "params" less = false, -- main description missing lasting = false, -- old syntax encountered lazy = false, -- doc mode; do not generate effective <templatedata> leading = false, -- show TOC -- low = false, -- 1= mode order = false, -- parameter sequence params = false, -- table, exported parameters scream = false, -- error messages sibling = false, -- TOC juxtaposed slang = nil, -- project/user language code slim = false, -- JSON reduced to plain source = false, -- JSON input strip = false, -- <templatedata> evaluation tag = false, -- table, exported root element title = false, -- page tree = false -- table, rewritten templatedata object } local Permit = { builder = { after = "block", align = "block", block = "block", compressed = "block", dense = "block", grouped = "inline", half = "inline", indent = "block", inline = "inline", last = "block", lead = "block", newlines = "*", spaced = "inline" }, colors = { bg = "FFFFFF", fg = "000000", tableheadbg = "B3B7FF", required = "EAF3FF", suggested = "FFFFFF", optional = "EAECF0", deprecated = "FFCBCB" }, params = { aliases = "table", autovalue = "string", default = "string table I18N nowiki", deprecated = "boolean string I18N", description = "string table I18N", example = "string table I18N nowiki", label = "string table I18N", inherits = "string", required = "boolean", style = "string table", suggested = "boolean", suggestedvalues = "string table number boolean", type = "string" }, root = { description = "string table I18N", format = "string", maps = "table", params = "table", paramOrder = "table", sets = "table" }, search = "[{,]%%s*(['\"])%s%%1%%s*:%%s*%%{", types = { boolean = true, content = true, date = true, line = true, number = true, string = true, unknown = true, url = true, ["wiki-file-name"] = true, ["wiki-page-name"] = true, ["wiki-template-name"] = true, ["wiki-user-name"] = true, ["unbalanced-wikitext"] = true, ["string/line"] = "line", ["string/wiki-page-name"] = "wiki-page-name", ["string/wiki-user-name"] = "wiki-user-name" } } local function Fault( alert ) -- Memorize error message -- Parameter: -- alert -- string, error message if Data.scream then Data.scream = string.format( "%s *** %s", Data.scream, alert ) else Data.scream = alert end end -- Fault() local function Fetch( ask, allow ) -- Fetch module -- Parameter: -- ask -- string, with name -- "/global" -- "Multilingual" -- "Text" -- "WLink" -- allow -- true: no error if unavailable -- Returns table of module -- error: Module not available local sign = ask local r, stem if sign:sub( 1, 1 ) == "/" then sign = TemplateData.frame:getTitle() .. sign else stem = sign sign = "Module:" .. stem end if TemplateData.extern then r = TemplateData.extern[ sign ] else TemplateData.extern = { } end if not r then local lucky, g = pcall( require, sign ) if type( g ) == "table" then if stem and type( g[ stem ] ) == "function" then r = g[ stem ]() else r = g end TemplateData.extern[ sign ] = r elseif not allow then error( string.format( "Fetch(%s) %s", sign, g ), 0 ) end end return r end -- Fetch() local function Foreign() -- Guess human language -- Returns slang, or not if type( Data.slang ) == "nil" then local Multilingual = Fetch( "Multilingual", true ) if Multilingual and type( Multilingual.userLangCode ) == "function" then Data.slang = Multilingual.userLangCode() else Data.slang = mw.language.getContentLanguage():getCode() :lower() end end if Data.slang and mw.ustring.codepoint( Data.slang, 1, 1 ) > 122 then Data.slang = false end return Data.slang end -- Foreign() local function facet( ask, at ) -- Find physical position of parameter definition in JSON -- Parameter: -- ask -- string, parameter name -- at -- number, physical position within definition -- Returns number, or nil local seek = string.format( Permit.search, ask:gsub( "%%", "%%%%" ) :gsub( "([%-.()+*?^$%[%]])", "%%%1" ) ) local i, k, r, slice, source if not Data.jump then Data.jump = Data.source:find( "params", 2 ) if Data.jump then Data.jump = Data.jump + 7 else Data.jump = 1 end end i, k = Data.source:find( seek, at + Data.jump ) while i and not r do source = Data.source:sub( k + 1 ) slice = source:match( "^%s*\"([^\"]+)\"s*:" ) if not slice then slice = source:match( "^%s*'([^']+)'%s*:" ) end if ( slice and Permit.params[ slice ] ) or source:match( "^%s*%}" ) then r = k else i, k = Data.source:find( seek, k ) end end -- while i return r end -- facet() local function facilities( apply ) -- Retrieve details of suggestedvalues -- Parameter: -- apply -- table, with plain or enhanced values -- .suggestedvalues -- table|string|number, or more -- Returns -- 1 -- table, with suggestedvalues -- 2 -- table, with CSS map, or not -- 3 -- string, with class, or not -- 4 -- string, with templatestyles, or not local elements = apply.suggestedvalues local s = type( elements ) local r1, r2, r3, r4 if s == "table" then local values = elements.values if type( values ) == "table" then r1 = values if type( elements.scroll ) == "string" then r2 = r2 or { } r2.height = apply.scroll r2.overflow = "auto" end if type( elements.minwidth ) == "string" then local s = type( elements.maxcolumns ) r2 = r2 or { } r2["column-width"] = elements.minwidth if s == "string" or s == "number" then s = tostring( elements.maxcolumns ) r2["column-count"] = s end if type( Config.selMultClm ) == "string" then r3 = Config.selMultClm end if type( Config.stylesMultClm ) == "string" then local src = Config.stylesMultClm .. "/styles.css" r4 = TemplateData.frame :extensionTag( "templatestyles", nil, { src = src } ) end end elseif elements and elements ~= "" then r1 = elements end elseif s == "string" then s = mw.text.trim( about ) if s ~= "" then r1 = { } table.insert( r1, { code = s } ) end elseif s == "number" then r1 = { } table.insert( r1, { code = tostring( elements ) } ) end return r1, r2, r3, r4 end -- facilities() local function factory( adapt ) -- Retrieve localized text from system message -- Parameter: -- adapt -- string, message ID after "templatedata-" -- Returns string, with localized text local o = mw.message.new( "templatedata-" .. adapt ) if Foreign() then o:inLanguage( Data.slang ) end return o:plain() end -- factory() local function faculty( adjust ) -- Test template arg for boolean -- adjust -- string or nil -- Returns boolean local s = type( adjust ) local r if s == "string" then r = mw.text.trim( adjust ) r = ( r ~= "" and r ~= "0" ) elseif s == "boolean" then r = adjust else r = false end return r end -- faculty() local function failures() -- Retrieve error collection and category -- Returns string local r if Data.scream then local e = mw.html.create( "span" ) :addClass( "error" ) :wikitext( Data.scream ) r = tostring( e ) mw.addWarning( "'''TemplateData'''<br />" .. Data.scream ) if Config.strange then r = string.format( "%s[[category:%s]]", r, Config.strange ) end else r = "" end return r end -- failures() local function fair( adjust ) -- Reduce text to one line of plain text, or noexport wikitext blocks -- adjust -- string -- Returns string, with adjusted text local f = function ( a ) return a:gsub( "%s*\n%s*", " " ) :gsub( "%s%s+", " " ) end local tags = { { start = "<noexport>", stop = "</noexport>" }, { start = "<exportonly>", stop = "</exportonly>", l = false } } local r = adjust local i, j, k, s, tag for m = 1, 2 do tag = tags[ m ] if r:find( tag.start, 1, true ) then s = r r = "" i = 1 tag.l = true j, k = s:find( tag.start, i, true ) while j do if j > 1 then r = r .. f( s:sub( i, j - 1 ) ) end i = k + 1 j, k = s:find( tag.stop, i, true ) if j then if m == 1 then r = r .. s:sub( i, j - 1 ) end i = k + 1 j, k = s:find( tag.start, i, true ) else Fault( "missing " .. tag.stop ) end end -- while j r = r .. s:sub( i ) elseif m == 1 then r = f( r ) end end -- for m if tags[ 2 ].l then r = r:gsub( "<exportonly>.*</exportonly>", "" ) end return r end -- fair() local function fancy( advance, alert ) -- Present JSON source -- Parameter: -- advance -- true, for nice -- alert -- true, for visible -- Returns string local r if Data.source then local support = Config.jsonDebug local css if advance then css = { height = "6em", resize = "vertical" } r = { [ 1 ] = "syntaxhighlight", [ 2 ] = Data.source, lang = "json", style = table.concat( css, ";" ) } if alert then r.class( support ) end r = TemplateData.frame:callParserFunction( "#tag", r ) else css = { [ "font-size" ] = "77%", [ "line-height" ] = "1.35" } if alert then css.resize = "vertical" else css.display = "none" end r = mw.html.create( "pre" ) :addClass( support ) :css( css ) :wikitext( mw.text.encode( Data.source ) ) r = tostring( r ) end r = "\n".. r else r = "" end return r end -- fancy() local function faraway( alternatives ) -- Retrieve best language version from multilingual text -- Parameter: -- alternatives -- table, to be evaluated -- Returns -- 1 -- string, with best match -- 2 -- table of other versions, if any local n = 0 local variants = { } local r1, r2 for k, v in pairs( alternatives ) do if type( v ) == "string" then v = mw.text.trim( v ) if v ~= "" and type( k ) == "string" then k = k:lower() variants[ k ] = v n = n + 1 end end end -- for k, v if n > 0 then local Multilingual = Fetch( "Multilingual", true ) if Multilingual and type( Multilingual.i18n ) == "function" then local show, slang = Multilingual.i18n( variants ) if show then r1 = show variants[ slang ] = nil r2 = variants end end if not r1 then Foreign() for k, v in pairs( variants ) do if n == 1 then r1 = v elseif Data.slang == k then variants[ k ] = nil r1 = v r2 = variants end end -- for k, v end if r2 and Multilingual then for k, v in pairs( r2 ) do if v and not Multilingual.isLang( k, true ) then Fault( string.format( "%s <code>lang=%s</code>", "Invalid", k ) ) end end -- for k, v end end return r1, r2 end -- faraway() local function fashioned( about, asked, assign ) -- Create description head -- Parameter: -- about -- table, supposed to contain description -- asked -- true, if mandatory description -- assign -- <block>, if to be equipped -- Returns <block>, with head, or nil local para = assign or mw.html.create( "div" ) local plus, r if about and about.description then if type( about.description ) == "string" then para:wikitext( about.description ) else para:wikitext( about.description[ 1 ] ) plus = mw.html.create( "ul" ) plus:css( "text-align", "left" ) for k, v in pairs( about.description[ 2 ] ) do plus:node( mw.html.create( "li" ) :node( mw.html.create( "code" ) :wikitext( k ) ) :node( mw.html.create( "br" ) ) :wikitext( fair( v ) ) ) end -- for k, v if Config.loudly then plus = mw.html.create( "div" ) :css( "background-color", "#" .. Config.debugmultilang ) :node( plus ) else plus:addClass( "templatedata-maintain" ) :css( "display", "none" ) end end elseif Config.solo and asked then para:addClass( "error" ) :wikitext( Config.solo ) Data.less = true else para = false end if para then if plus then r = mw.html.create( "div" ) :node( para ) :node( plus ) else r = para end end return r end -- fashioned() local function fatten( access ) -- Create table row for sub-headline -- Parameter: -- access -- string, with name -- Returns <tr> local param = Data.tree.params[ access ] local sub, sort = access:match( "(=+)%s*(%S.*)$" ) local headline = mw.html.create( string.format( "h%d", #sub ) ) local r = mw.html.create( "tr" ) local td = mw.html.create( "td" ) :attr( "colspan", "5" ) :attr( "data-sort-value", "!" .. sort ) local s if param.style then s = type( param.style ) if s == "table" then td:css( param.style ) elseif s == "string" then td:cssText( param.style ) end end s = fashioned( param, false, headline ) if s then headline = s else headline:wikitext( sort ) end td:node( headline ) r:node( td ) return r end -- fatten() local function fathers() -- Merge params with inherited values local n = 0 local p = Data.params local t = Data.tree.params local p2, t2 for k, v in pairs( Data.heirs ) do n = n + 1 end -- for k, v for i = 1, n do if Data.heirs then for k, v in pairs( Data.heirs ) do if v and not Data.heirs[ v ] then n = n - 1 t[ k ].inherits = nil Data.heirs[ k ] = nil p2 = { } t2 = { } if p[ v ] then for k2, v2 in pairs( p[ v ] ) do p2[ k2 ] = v2 end -- for k2, v2 if p[ k ] then for k2, v2 in pairs( p[ k ] ) do if type( v2 ) ~= "nil" then p2[ k2 ] = v2 end end -- for k2, v2 end p[ k ] = p2 for k2, v2 in pairs( t[ v ] ) do t2[ k2 ] = v2 end -- for k2, v2 for k2, v2 in pairs( t[ k ] ) do if type( v2 ) ~= "nil" then t2[ k2 ] = v2 end end -- for k2, v2 t[ k ] = t2 else Fault( "No params[] inherits " .. v ) end end end -- for k, v end end -- i = 1, n if n > 0 then local s for k, v in pairs( Data.heirs ) do if v then if s then s = string.format( "%s &#124; %s", s, k ) else s = "Circular inherits: " .. k end end end -- for k, v Fault( s ) end end -- fathers() local function favorize() -- Local customization issues local boole = { ["font-size"] = "125%" } local l, cx = pcall( mw.loadData, TemplateData.frame:getTitle() .. "/config" ) local scripting, style TemplateData.ltr = not mw.language.getContentLanguage():isRTL() if TemplateData.ltr then scripting = "left" else scripting = "right" end boole[ "margin-" .. scripting ] = "3em" Permit.boole = { [false] = { css = boole, lead = true, show = "&#x2610;" }, [true] = { css = boole, lead = true, show = "&#x2611;" } } Permit.css = { } for k, v in pairs( Permit.colors ) do if k == "tableheadbg" then k = "tablehead" end if k == "fg" then style = "color" else style = "background-color" end Permit.css[ k ] = { } Permit.css[ k ][ style ] = "#" .. v end -- for k, v if type( cx ) == "table" then local c, s if type( cx.permit ) == "table" then if type( cx.permit.boole ) == "table" then if type( cx.permit.boole[ true ] ) == "table" then Permit.boole[ false ] = cx.permit.boole[ false ] end if type( cx.permit.boole[ true ] ) == "table" then Permit.boole[ true ] = cx.permit.boole[ true ] end end if type( cx.permit.css ) == "table" then for k, v in pairs( cx.permit.css ) do if type( v ) == "table" then Permit.css[ k ] = v end end -- for k, v end end for k, v in pairs( Config.basicCnf ) do s = type( cx[ k ] ) if s == "string" or s == "table" then Config[ v ] = cx[ k ] end end -- for k, v end if type( Config.subpage ) ~= "string" or type( Config.suffix ) ~= "string" then local got = mw.message.new( "templatedata-doc-subpage" ) local suffix if got:isDisabled() then suffix = "doc" else suffix = got:plain() end if type( Config.subpage ) ~= "string" then Config.subpage = string.format( "/%s$", suffix ) end if type( Config.suffix ) ~= "string" then Config.suffix = string.format( "%%s/%s", suffix ) end end end -- favorize() local function feasible( all, at, about ) -- Deal with suggestedvalues within parameter -- Parameter: -- all -- parameter details -- .default -- .type -- at -- string, with parameter name -- about -- suggestedvalues -- table, -- value and possibly description -- table may have elements: -- .code -- mandatory -- .label -- table|string -- .support -- table|string -- .icon -- string -- .class -- table|string -- .css -- table -- .style -- string -- .less -- true: suppress code -- Returns -- 1: mw.html object <ul> -- 2: sequence table with values, or nil local h = { } local e, r1, r2, s, v if #about > 0 then for i = 1, #about do e = about[ i ] s = type( e ) if s == "table" then if type( e.code ) == "string" then s = mw.text.trim( e.code ) if s == "" then e = nil else e.code = s end else e = nil s = string.format( "params.%s.%s[%d] %s", at, "suggestedvalues", i, "MISSING 'code:'" ) end elseif s == "string" then s = mw.text.trim( e ) if s == "" then e = nil s = string.format( "params.%s.%s[%d] EMPTY", at, "suggestedvalues", i ) Fault( s ) else e = { code = s } end elseif s == "number" then e = { code = tostring( e ) } else s = string.format( "params.%s.%s[%d] INVALID", at, "suggestedvalues", i ) Fault( s ) e = false end if e then v = v or { } table.insert( v, e ) if h[ e.code ] then s = string.format( "params.%s.%s REPEATED %s", at, "suggestedvalues", e.code ) Fault( s ) else h[ e.code ] = true end end end -- for i else Fault( string.format( "params.%s.suggestedvalues %s", at, "NOT AN ARRAY" ) ) end if v then local code, d, k, less, story, swift, t, u r1 = mw.html.create( "ul" ) r2 = { } for i = 1, #v do u = mw.html.create( "li" ) e = v[ i ] table.insert( r2, e.code ) story = false less = ( e.less == true ) if not less then swift = e.code if e.support then local scream, support s = type( e.support ) if s == "string" then support = e.support elseif s == "table" then support = faraway( e.support ) else scream = "INVALID" end if support then s = mw.text.trim( support ) if s == "" then scream = "EMPTY" elseif s:find( "[%[%]|%<%>]" ) then scream = "BAD PAGE" else support = s end end if scream then s = string.format( "params.%s.%s[%d].support %s", at, "suggestedvalues", i, scream ) Fault( s ) else swift = string.format( "[[:%s|%s]]", support, swift ) end end if all.type:sub( 1, 5 ) == "wiki-" and swift == e.code then local rooms = { file = 6, temp = 10, user = 2 } local ns = rooms[ all.type:sub( 6, 9 ) ] or 0 t = mw.title.makeTitle( ns, swift ) if t and t.exists then swift = string.format( "[[:%s|%s]]", t.prefixedText, swift ) end end if e.code == all.default then k = 800 else k = 300 end code = mw.html.create( "code" ) :css( "font-weight", tostring( k ) ) :css( "white-space", "nowrap" ) :wikitext( swift ) u:node( code ) end if e.class then s = type( e.class ) if s == "string" then u:addClass( e.class ) elseif s == "table" then for k, s in pairs( e.class ) do u:addClass( s ) end -- for k, s else s = string.format( "params.%s.%s[%d].class INVALID", at, "suggestedvalues", i ) Fault( s ) end end if e.css then if type( e.css ) == "table" then u:css( e.css ) else s = string.format( "params.%s.%s[%d].css INVALID", at, "suggestedvalues", i ) Fault( s ) end end if e.style then if type( e.style ) == "string" then u:cssText( e.style ) else s = string.format( "params.%s.%s[%d].style INVALID", at, "suggestedvalues", i ) Fault( s ) end end if all.type == "wiki-file-name" and not e.icon then e.icon = e.code end if e.label then s = type( e.label ) if s == "string" then s = mw.text.trim( e.label ) if s == "" then s = string.format( "params.%s.%s[%d].label %s", at, "suggestedvalues", i, "EMPTY" ) Fault( s ) else story = s end elseif s == "table" then story = faraway( e.label ) else s = string.format( "params.%s.%s[%d].label INVALID", at, "suggestedvalues", i ) Fault( s ) end end s = false if type( e.icon ) == "string" then t = mw.title.makeTitle( 6, e.icon ) if t and t.file.exists then local g = mw.html.create( "span" ) s = string.format( "[[%s|16px]]", t.prefixedText ) g:attr( "role", "presentation" ) :wikitext( s ) s = tostring( g ) end end if not s and not less and e.label then s = mw.ustring.char( 0x2013 ) end if s then d = mw.html.create( "span" ) :wikitext( s ) if TemplateData.ltr then if not less then d:css( "margin-left", "0.5em" ) end if story then d:css( "margin-right", "0.5em" ) end else if not less then d:css( "margin-right", "0.5em" ) end if story then d:css( "margin-left", "0.5em" ) end end u:node( d ) end if story then u:wikitext( story ) end r1:newline() :node( u ) end -- for i end if not r1 and v ~= false then Fault( string.format( "params.%s.suggestedvalues INVALID", at ) ) r1 = mw.html.create( "code" ) :addClass( "error" ) :wikitext( "INVALID" ) end return r1, r2 end -- feasible() local function feat() -- Check and store parameter sequence if Data.source then local i = 0 local s for k, v in pairs( Data.tree.params ) do if i == 0 then Data.order = { } i = 1 s = k else i = 2 break -- for k, v end end -- for k, v if i > 1 then local pointers = { } local points = { } local given = { } for k, v in pairs( Data.tree.params ) do i = facet( k, 1 ) if type( v ) == "table" then if type( v.label ) == "string" then s = mw.text.trim( v.label ) if s == "" then s = k end else s = k end if given[ s ] then if given[ s ] == 1 then local scream = "Parameter label '%s' detected multiple times" Fault( string.format( scream, s ) ) given[ s ] = 2 end else given[ s ] = 1 end end if i then table.insert( points, i ) pointers[ i ] = k i = facet( k, i ) if i then s = "Parameter '%s' detected twice" Fault( string.format( s, k ) ) end else s = "Parameter '%s' not detected" Fault( string.format( s, k ) ) end end -- for k, v table.sort( points ) for i = 1, #points do table.insert( Data.order, pointers[ points[ i ] ] ) end -- i = 1, #points elseif s then table.insert( Data.order, s ) end end end -- feat() local function feature( access ) -- Create table row for parameter, check and display violations -- Parameter: -- access -- string, with name -- Returns <tr> local mode, s, status local fine = function ( a ) s = mw.text.trim( a ) return a == s and a ~= "" and not a:find( "%|=\n" ) and not a:find( "%s%s" ) end local begin = mw.html.create( "td" ) local code = mw.html.create( "code" ) local desc = mw.html.create( "td" ) local eager = mw.html.create( "td" ) local legal = true local param = Data.tree.params[ access ] local ranking = { "required", "suggested", "optional", "deprecated" } local r = mw.html.create( "tr" ) local styles = "mw-templatedata-doc-param-" local sort, typed for k, v in pairs( param ) do if v == "" then param[ k ] = false end end -- for k, v -- label sort = param.label or access if sort:match( "^%d+$" ) then begin:attr( "data-sort-value", string.format( "%05d", tonumber( sort ) ) ) end begin:css( "font-weight", "bold" ) :wikitext( sort ) -- name and aliases code:css( "font-size", "92%" ) :css( "white-space", "nowrap" ) :wikitext( access ) if not fine( access ) then code:addClass( "error" ) Fault( string.format( "Bad ID params.<code>%s</code>", access ) ) legal = false begin:attr( "data-sort-value", " " .. sort ) end code = mw.html.create( "td" ) :addClass( styles .. "name" ) :node( code ) if access:match( "^%d+$" ) then code:attr( "data-sort-value", string.format( "%05d", tonumber( access ) ) ) end if type( param.aliases ) == "table" then local lapsus, syn for k, v in pairs( param.aliases ) do code:tag( "br" ) if type( v ) == "string" then if not fine( v ) then lapsus = true code:node( mw.html.create( "span" ) :addClass( "error" ) :css( "font-style", "italic" ) :wikitext( "string" ) ) :wikitext( s ) else syn = mw.html.create( "span" ) :addClass( styles .. "alias" ) :css( "white-space", "nowrap" ) :wikitext( s ) code:node( syn ) end else lapsus = true code:node( mw.html.create( "code" ) :addClass( "error" ) :wikitext( type( v ) ) ) end end -- for k, v if lapsus then s = string.format( "params.<code>%s</code>.aliases", access ) Fault( factory( "invalid-value" ):gsub( "$1", s ) ) legal = false end end -- description etc. s = fashioned( param ) if s then desc:node( s ) end if param.style then s = type( param.style ) if s == "table" then desc:css( param.style ) elseif s == "string" then desc:cssText( param.style ) end end if param.suggestedvalues or param.default or param.example or param.autovalue then local details = { "suggestedvalues", "default", "example", "autovalue" } local dl = mw.html.create( "dl" ) local dd, section, show for i = 1, #details do s = details[ i ] show = param[ s ] if show then dd = mw.html.create( "dd" ) section = factory( "doc-param-" .. s ) if param.type == "boolean" and ( show == "0" or show == "1" ) then local boole = Permit.boole[ ( show == "1" ) ] if boole.lead == true then dd:node( mw.html.create( "code" ) :wikitext( show ) ) :wikitext( " " ) end if type( boole.show ) == "string" then local v = mw.html.create( "span" ) :attr( "aria-hidden", "true" ) :wikitext( boole.show ) if boole.css then v:css( boole.css ) end dd:node( v ) end if type( boole.suffix ) == "string" then dd:wikitext( boole.suffix ) end if boole.lead == false then dd:wikitext( " " ) :node( mw.html.create( "code" ) :wikitext( show ) ) end elseif s == "suggestedvalues" then local v, css, class, ts = facilities( param ) if v then local ul ul, v = feasible( param, access, v ) if v then dd:newline() :node( ul ) if css then dd:css( css ) if class then dd:addClass( class ) end if ts then dd:newline() dd:node( ts ) end end Data.params[ access ].suggestedvalues = v end end else dd:wikitext( show ) end dl:node( mw.html.create( "dt" ) :wikitext( section ) ) :node( dd ) end end -- i = 1, #details desc:node( dl ) end -- type if type( param.type ) == "string" then param.type = mw.text.trim( param.type ) if param.type == "" then param.type = false end end if param.type then s = Permit.types[ param.type ] typed = mw.html.create( "td" ) :addClass( styles .. "type" ) if s then if s == "string" then Data.params[ access ].type = s typed:wikitext( factory( "doc-param-type-" .. s ) ) :tag( "br" ) typed:node( mw.html.create( "span" ) :addClass( "error" ) :wikitext( param.type ) ) Data.lasting = true else local support = Config[ "support4" .. param.type ] s = factory( "doc-param-type-" .. param.type ) if support then s = string.format( "[[%s|%s]]", support, s ) end typed:wikitext( s ) end else Data.params[ access ].type = "unknown" typed:addClass( "error" ) :wikitext( "INVALID" ) s = string.format( "params.<code>%s</code>.type", access ) Fault( factory( "invalid-value" ):gsub( "$1", s ) ) legal = false end else typed = mw.html.create( "td" ) :wikitext( factory( "doc-param-type-unknown" ) ) Data.params[ access ].type = "unknown" if param.default then Data.params[ access ].default = nil Fault( "Default value requires <code>type</code>" ) legal = false end end typed:addClass( "navigation-not-searchable" ) -- status if param.required then mode = 1 if param.autovalue then Fault( string.format( "autovalued <code>%s</code> required", access ) ) legal = false end if param.default then Fault( string.format( "Defaulted <code>%s</code> required", access ) ) legal = false end if param.deprecated then Fault( string.format( "Required deprecated <code>%s</code>", access ) ) legal = false end elseif param.deprecated then mode = 4 elseif param.suggested then mode = 2 else mode = 3 end status = ranking[ mode ] ranking = factory( "doc-param-status-" .. status ) if mode == 1 or mode == 4 then ranking = mw.html.create( "span" ) :css( "font-weight", "bold" ) :wikitext( ranking ) if type( param.deprecated ) == "string" then ranking:tag( "br" ) ranking:wikitext( param.deprecated ) end if param.suggested and mode == 4 then s = string.format( "Suggesting deprecated <code>%s</code>", access ) Fault( s ) legal = false end end eager:attr( "data-sort-value", tostring( mode ) ) :node( ranking ) :addClass( string.format( "%sstatus-%s %s", styles, status, "navigation-not-searchable" ) ) -- <tr> r:attr( "id", "templatedata:" .. mw.uri.anchorEncode( access ) ) :css( Permit.css[ status ] ) :addClass( styles .. status ) :node( begin ) :node( code ) :node( desc ) :node( typed ) :node( eager ) :newline() if not legal then r:css( "border", "#FF0000 3px solid" ) end return r end -- feature() local function features() -- Create <table> for parameters -- Returns <table>, or nil local r if Data.tree and Data.tree.params then local tbl = mw.html.create( "table" ) local tr = mw.html.create( "tr" ) feat() if Data.order and #Data.order > 1 then tbl:addClass( "sortable" ) end if type( Config.classTable ) == "table" then for k, v in pairs( Config.classTable ) do tbl:addClass( v ) end -- for k, v end if type( Config.cssTable ) == "table" then tbl:css( Config.cssTable ) end tr:addClass( "navigation-not-searchable" ) :node( mw.html.create( "th" ) :attr( "colspan", "2" ) :css( Permit.css.tablehead ) :wikitext( factory( "doc-param-name" ) ) ) :node( mw.html.create( "th" ) :css( Permit.css.tablehead ) :wikitext( factory( "doc-param-desc" ) ) ) :node( mw.html.create( "th" ) :css( Permit.css.tablehead ) :wikitext( factory( "doc-param-type" ) ) ) :node( mw.html.create( "th" ) :css( Permit.css.tablehead ) :wikitext( factory( "doc-param-status" ) ) ) tbl:newline() -- :node( mw.html.create( "thead" ) :node( tr ) -- ) :newline() if Data.order then local leave, s for i = 1, #Data.order do s = Data.order[ i ] if s:sub( 1, 1 ) == "=" then leave = true tbl:node( fatten( s ) ) Data.order[ i ] = false elseif s:match( "[=|]" ) then Fault( string.format( "Bad param <code>%s</code>", s ) ) else tbl:node( feature( s ) ) end end -- for i = 1, #Data.order if leave then for i = #Data.order, 1, -1 do if not Data.order[ i ] then table.remove( Data.order, i ) end end -- for i = #Data.order, 1, -1 end Data.tag.paramOrder = Data.order end if Config.cssTabWrap or Data.scroll then r = mw.html.create( "div" ) if type( Config.cssTabWrap ) == "table" then r:css( Config.cssTabWrap ) elseif type( Config.cssTabWrap ) == "string" then -- deprecated r:cssText( Config.cssTabWrap ) end if Data.scroll then r:css( "height", Data.scroll ) :css( "overflow", "auto" ) end r:node( tbl ) else r = tbl end end return r end -- features() local function fellow( any, assigned, at ) -- Check sets[] parameter and issue error message, if necessary -- Parameter: -- any -- should be number -- assigned -- parameter name -- at -- number, of set local s if type( any ) ~= "number" then s = "<code>sets[%d].params[%s]</code>??" Fault( string.format( s, at, mw.text.nowiki( tostring( any ) ) ) ) elseif type( assigned ) == "string" then if not Data.got.params[ assigned ] then s = "<code>sets[%d].params %s</code> is undefined" Fault( string.format( s, at, assigned ) ) end else s = "<code>sets[%d].params[%d] = %s</code>??" Fault( string.format( s, k, type( assigned ) ) ) end end -- fellow() local function fellows() -- Check sets[] and issue error message, if necessary local s if type( Data.got.sets ) == "table" then if type( Data.got.params ) == "table" then for k, v in pairs( Data.got.sets ) do if type( k ) == "number" then if type( v ) == "table" then for ek, ev in pairs( v ) do if ek == "label" then s = type( ev ) if s ~= "string" and s ~= "table" then s = "<code>sets[%d].label</code>??" Fault( string.format( s, k ) ) end elseif ek == "params" and type( ev ) == "table" then for pk, pv in pairs( ev ) do fellow( pk, pv, k ) end -- for pk, pv else ek = mw.text.nowiki( tostring( ek ) ) s = "<code>sets[%d][%s]</code>??" Fault( string.format( s, k, ek ) ) end end -- for ek, ev else k = mw.text.nowiki( tostring( k ) ) v = mw.text.nowiki( tostring( v ) ) s = string.format( "<code>sets[%s][%s]</code>??", k, v ) Fault( s ) end else k = mw.text.nowiki( tostring( k ) ) s = string.format( "<code>sets[%s]</code> ?????", k ) Fault( s ) end end -- for k, v else s = "<code>params</code> required for <code>sets</code>" Fault( s ) end else s = "<code>sets</code> needs to be of <code>object</code> type" Fault( s ) end end -- fellows() local function finalize( advance ) -- Wrap presentation into frame -- Parameter: -- advance -- true, for nice -- Returns string local r, lapsus if Data.div then r = tostring( Data.div ) elseif Data.strip then r = Data.strip else lapsus = true r = "" end r = r .. failures() if Data.source then local live = ( advance or lapsus ) if not live then live = TemplateData.frame:preprocess( "{{REVISIONID}}" ) live = ( live == "" ) end if live then r = r .. fancy( advance, lapsus ) end end return r end -- finalize() local function find() -- Find JSON data within page source (title) -- Returns string, or nil local s = Data.title:getContent() local i, j = s:find( "<templatedata>", 1, true ) local r if i then local k = s:find( "</templatedata>", j, true ) if k then r = mw.text.trim( s:sub( j + 1, k - 1 ) ) end end return r end -- find() local function flat( adjust ) -- Remove formatting from text string for VE -- Parameter: -- arglist -- string, to be stripped, or nil -- Returns string, or nil local r if adjust then r = adjust:gsub( "\n", " " ) if r:find( "<noexport>", 1, true ) then r = r:gsub( "<noexport>.*</noexport>", "" ) end if r:find( "<exportonly>", 1, true ) then r = r:gsub( "</?exportonly>", "" ) end if r:find( "''", 1, true ) then r = r:gsub( "'''", "" ):gsub( "''", "" ) end if r:find( "<", 1, true ) then local Text = Fetch( "Text" ) r = Text.getPlain( r:gsub( "<br */?>", "\r\n" ) ) end if r:find( "[", 1, true ) then local WLink = Fetch( "WLink" ) if WLink.isBracketedURL( r ) then r = r:gsub( "%[([hf]tt?ps?://%S+) [^%]]+%]", "%1" ) end r = WLink.getPlain( r ) end if r:find( "&", 1, true ) then r = mw.text.decode( r ) if r:find( "&shy;", 1, true ) then r = r:gsub( "&shy;", "" ) end end end return r end -- flat() local function flush() -- JSON encode narrowed input; obey unnamed (numerical) parameters -- Returns <templatedata> JSON string local r if Data.tag then r = mw.text.jsonEncode( Data.tag ):gsub( "%}$", "," ) else r = "{" end r = r .. "\n\"params\":{" if Data.order then local sep = "" local s for i = 1, #Data.order do s = Data.order[ i ] r = string.format( "%s%s\n%s:%s", r, sep, mw.text.jsonEncode( s ), mw.text.jsonEncode( Data.params[ s ] ) ) sep = ",\n" end -- for i = 1, #Data.order end r = r .. "\n}\n}" return r end -- flush() local function focus( access ) -- Check components; focus multilingual description, build trees -- Parameter: -- access -- string, name of parameter, nil for root local f = function ( a, at ) local r if at then r = string.format( "<code>params.%s</code>", at ) else r = "''root''" end if a then r = string.format( "%s<code>.%s</code>", r, a ) end return r end local parent if access then parent = Data.got.params[ access ] else parent = Data.got end if type( parent ) == "table" then local elem, got, permit, s, scope, slot, tag, target if access then permit = Permit.params if type( access ) == "number" then slot = tostring( access ) else slot = access end else permit = Permit.root end for k, v in pairs( parent ) do scope = permit[ k ] if scope then s = type( v ) if s == "string" and k ~= "format" then v = mw.text.trim( v ) end if scope:find( s, 1, true ) then if scope:find( "I18N", 1, true ) then if s == "string" then elem = fair( v ) elseif s == "table" then local translated v, translated = faraway( v ) if v then if translated and k == "description" then elem = { [ 1 ] = fair( v ), [ 2 ] = translated } else elem = fair( v ) end else elem = false end end if type( v ) == "string" then if k == "deprecated" then if v == "1" then v = true elseif v == "0" then v = false end elem = v elseif scope:find( "nowiki", 1, true ) then elem = mw.text.nowiki( v ) elem = elem:gsub( "&#13;\n", "<br>" ) v = v:gsub( string.char( 13 ), "" ) else v = flat( v ) end elseif s == "boolean" then if scope:find( "boolean", 1, true ) then elem = v else s = "Type <code>boolean</code> bad for " .. f( k, slot ) Fault( s ) end end else if k == "params" and not access then v = nil elem = nil elseif k == "format" and not access then elem = mw.text.decode( v ) v = nil elseif k == "inherits" then elem = v if not Data.heirs then Data.heirs = { } end Data.heirs[ slot ] = v v = nil elseif k == "style" then elem = v v = nil elseif s == "string" then v = mw.text.nowiki( v ) elem = v else elem = v end end if type( elem ) ~= "nil" then if not target then if access then if not Data.tree.params then Data.tree.params = { } end Data.tree.params[ slot ] = { } target = Data.tree.params[ slot ] else Data.tree = { } target = Data.tree end end target[ k ] = elem elem = false end if type( v ) ~= "nil" then if not tag then if access then if type( v ) == "string" and v.sub( 1, 1 ) == "=" then v = nil else if not Data.params then Data.params = { } end Data.params[ slot ] = { } tag = Data.params[ slot ] end else Data.tag = { } tag = Data.tag end end if type( v ) ~= "nil" and k ~= "suggestedvalues" then tag[ k ] = v end end else s = string.format( "Type <code>%s</code> bad for %s", scope, f( k, slot ) ) Fault( s ) end else Fault( "Unknown component " .. f( k, slot ) ) end end -- for k, v if not access and Data.got.sets then fellows() end else Fault( f() .. " needs to be of <code>object</code> type" ) end end -- focus() local function format() -- Build formatted element -- Returns <inline> local source = Data.tree.format:lower() local r, s if source == "inline" or source == "block" then r = mw.html.create( "i" ) :wikitext( source ) else local code if source:find( "|", 1, true ) then local scan = "^[\n ]*%{%{[\n _]*|[\n _]*=[\n _]*%}%}[\n ]*$" if source:match( scan ) then code = source:gsub( "\n", "N" ) else s = mw.text.nowiki( source ):gsub( "\n", "&#92;n" ) s = tostring( mw.html.create( "code" ) :wikitext( s ) ) Fault( "Invalid format " .. s ) source = false end else local words = mw.text.split( source, "%s+" ) local show, start, support, unknown for i = 1, #words do s = words[ i ] if i == 1 then start = s end support = Permit.builder[ s ] if support == start or support == "*" then Permit.builder[ s ] = true elseif s:match( "^[1-9]%d?" ) and Permit.builder.align then Permit.builder.align = tonumber( s ) else if unknown then unknown = string.format( "%s %s", unknown, s ) else unknown = s end end end -- i = 1, #words if unknown then s = tostring( mw.html.create( "code" ) :css( "white-space", "nowrap" ) :wikitext( s ) ) Fault( "Unknown/misplaced format keyword " .. s ) source = false start = false end if start == "inline" then if Permit.builder.half == true then show = "inline half" code = "{{_ |_=_}}" elseif Permit.builder.grouped == true then show = "inline grouped" code = "{{_ | _=_}}" elseif Permit.builder.spaced == true then show = "inline spaced" code = "{{_ | _ = _ }}" end if Permit.builder.newlines == true then show = show or "inline" code = code or "{{_|_=_}}" show = show .. " newlines" code = string.format( "N%sN", code ) end elseif start == "block" then local space = "" -- amid "|" and name local spaced = " " -- preceding "=" local spacer = " " -- following "=" local suffix = "N" -- closing "}}" on new line show = "block" if Permit.builder.indent == true then start = " " show = "block indent" else start = "" end if Permit.builder.compressed == true then spaced = "" spacer = "" show = show .. " compressed" if Permit.builder.last == true then show = show .. " last" else suffix = "" end else if Permit.builder.lead == true then show = show .. " lead" space = " " end if type( Permit.builder.align ) ~= "string" then local n s = " align" if Permit.builder.align == true then n = 0 if type( Data.got ) == "table" and type( Data.got.params ) == "table" then for k, v in pairs( Data.got.params ) do if type( v ) == "table" and not v.deprecated and type( k ) == "string" then k = mw.ustring.len( k ) if k > n then n = k end end end -- for k, v end else n = Permit.builder.align if type( n ) == "number" and n > 1 then s = string.format( "%s %d", s, n ) else n = 0 -- How comes? end end if n > 1 then spaced = string.rep( "_", n - 1 ) .. " " end show = show .. s elseif Permit.builder.after == true then spaced = "" show = show .. " after" elseif Permit.builder.dense == true then spaced = "" spacer = "" show = show .. " dense" end if Permit.builder.last == true then suffix = spacer show = show .. " last" end end code = string.format( "N{{_N%s|%s_%s=%s_%s}}N", start, space, spaced, spacer, suffix ) if show == "block" then show = "block newlines" end end if show then r = mw.html.create( "span" ) :wikitext( show ) end end if code then source = code:gsub( "N", "\n" ) code = mw.text.nowiki( code ):gsub( "N", "&#92;n" ) code = mw.html.create( "code" ) :css( "margin-left", "1em" ) :css( "margin-right", "1em" ) :wikitext( code ) if r then r = mw.html.create( "span" ) :node( r ) :node( code ) else r = code end end end if source and Data.tag then Data.tag.format = source end return r end -- format() local function formatter() -- Build presented documentation -- Returns <div> local r = mw.html.create( "div" ) local x = fashioned( Data.tree, true, r ) local s if x then r = x end if Data.leading then local toc = mw.html.create( "div" ) local shift if Config.suppressTOCnum then toc:addClass( Config.suppressTOCnum ) if type( Config.stylesTOCnum ) == "string" then local src = Config.stylesTOCnum .. "/styles.css" s = TemplateData.frame:extensionTag( "templatestyles", nil, { src = src } ) r:newline() :node( s ) end end toc:addClass( "navigation-not-searchable" ) :css( "margin-top", "0.5em" ) :wikitext( "__TOC__" ) if Data.sibling then local block = mw.html.create( "div" ) if TemplateData.ltr then shift = "right" else shift = "left" end block:css( "float", shift ) :wikitext( Data.sibling ) r:newline() :node( block ) :newline() end r:newline() :node( toc ) :newline() if shift then r:node( mw.html.create( "div" ) :css( "clear", shift ) ) :newline() end end s = features() if s then if Data.leading then r:node( mw.html.create( "h" .. Config.nested ) :wikitext( factory( "doc-params" ) ) ) :newline() end r:node( s ) end if Data.shared then local global = mw.html.create( "div" ) :attr( "id", "templatedata-global" ) local shift if TemplateData.ltr then shift = "right" else shift = "left" end global:css( "float", shift ) :wikitext( string.format( "[[%s|%s]]", Data.shared, "Global" ) ) r:newline() :node( global ) end if Data.tree and Data.tree.format then local e = format() if e then local show = "Format" if Config.supportFormat then show = string.format( "[[%s|%s]]", Config.supportFormat, show ) end r:node( mw.html.create( "p" ) :addClass( "navigation-not-searchable" ) :wikitext( show .. ": " ) :node( e ) ) end end return r end -- formatter() local function free() -- Remove JSON comment lines if Data.source:find( "//", 1, true ) then Data.source:gsub( "([{,\"'])(%s*\n%s*//.*\n%s*)([{},\"'])", "%1%3" ) end end -- free() local function full() -- Build survey table from JSON data, append invisible <templatedata> Data.div = mw.html.create( "div" ) :addClass( "mw-templatedata-doc-wrap" ) if Permit.css.bg then Data.div:css( Permit.css.bg ) end if Permit.css.fg then Data.div:css( Permit.css.fg ) end focus() if Data.tag then if type( Data.got.params ) == "table" then for k, v in pairs( Data.got.params ) do focus( k ) end -- for k, v if Data.heirs then fathers() end end end Data.div:node( formatter() ) if not Data.lazy then Data.slim = flush() if TemplateData.frame then local div = mw.html.create( "div" ) local tdata = { [ 1 ] = "templatedata", [ 2 ] = Data.slim } Data.strip = TemplateData.frame:callParserFunction( "#tag", tdata ) div:wikitext( Data.strip ) if Config.loudly then Data.div:node( mw.html.create( "hr" ) :css( { height = "7ex" } ) ) else div:css( "display", "none" ) end Data.div:node( div ) end end if Data.lasting then Fault( "deprecated type syntax" ) end if Data.less then Fault( Config.solo ) end end -- full() local function furnish( adapt, arglist ) -- Analyze transclusion -- Parameter: -- adapt -- table, #invoke parameters -- arglist -- table, template parameters -- Returns string local source favorize() -- deprecated: for k, v in pairs( Config.basicCnf ) do if adapt[ k ] and adapt[ k ] ~= "" then Config[ v ] = adapt[ k ] end end -- for k, v if arglist.heading and arglist.heading:match( "^[3-6]$" ) then Config.nested = arglist.heading else Config.nested = "2" end Config.loudly = faculty( arglist.debug or adapt.debug ) Data.lazy = faculty( arglist.lazy ) and not Config.loudly Data.leading = faculty( arglist.TOC ) if Data.leading and arglist.TOCsibling then Data.sibling = mw.text.trim( arglist.TOCsibling ) end if arglist.lang then Data.slang = arglist.lang:lower() elseif adapt.lang then Data.slang = adapt.lang:lower() end if arglist.JSON then source = arglist.JSON elseif arglist.Global then source = TemplateData.getGlobalJSON( arglist.Global, arglist.Local ) elseif arglist[ 1 ] then local s = mw.text.trim( arglist[ 1 ] ) local start = s:sub( 1, 1 ) if start == "<" then Data.strip = s elseif start == "{" then source = s elseif mw.ustring.sub( s, 1, 8 ) == mw.ustring.char( 127, 39, 34, 96, 85, 78, 73, 81 ) then Data.strip = s end end if type( arglist.vertical ) == "string" and arglist.vertical:match( "^%d*%.?%d+[emprx]+$" ) then Data.scroll = arglist.vertical end if not source then Data.title = mw.title.getCurrentTitle() source = find() if not source and not Data.title.text:match( Config.subpage ) then local s = string.format( Config.suffix, Data.title.prefixedText ) Data.title = mw.title.new( s ) if Data.title.exists then source = find() end end end if not Data.lazy then if not Data.title then Data.title = mw.title.getCurrentTitle() end Data.lazy = Data.title.text:match( Config.subpage ) end if type( source ) == "string" then TemplateData.getPlainJSON( source ) end return finalize( faculty( arglist.source ) ) end -- furnish() Failsafe.failsafe = function ( atleast ) -- Retrieve versioning and check for compliance -- Precondition: -- atleast -- string, with required version -- or wikidata|item|~|@ or false -- Postcondition: -- Returns string -- with queried version/item, also if problem -- false -- if appropriate -- 2020-08-17 local since = atleast local last = ( since == "~" ) local linked = ( since == "@" ) local link = ( since == "item" ) local r if last or link or linked or since == "wikidata" then local item = Failsafe.item since = false if type( item ) == "number" and item > 0 then local suited = string.format( "Q%d", item ) if link then r = suited else local entity = mw.wikibase.getEntity( suited ) if type( entity ) == "table" then local seek = Failsafe.serialProperty or "P348" local vsn = entity:formatPropertyValues( seek ) if type( vsn ) == "table" and type( vsn.value ) == "string" and vsn.value ~= "" then if last and vsn.value == Failsafe.serial then r = false elseif linked then if mw.title.getCurrentTitle().prefixedText == mw.wikibase.getSitelink( suited ) then r = false else r = suited end else r = vsn.value end end end end end end if type( r ) == "nil" then if not since or since <= Failsafe.serial then r = Failsafe.serial else r = false end end return r end -- Failsafe.failsafe() TemplateData.getGlobalJSON = function ( access, adapt ) -- Retrieve TemplateData from a global repository (JSON) -- Parameter: -- access -- string, with page specifier (on WikiMedia Commons) -- adapt -- JSON string or table with local overrides -- Returns true, if succeeded local plugin = Fetch( "/global" ) local r if type( plugin ) == "table" and type( plugin.fetch ) == "function" then local s, got = plugin.fetch( access, adapt ) if got then Data.got = got Data.order = got.paramOrder Data.shared = s r = true full() else Fault( s ) end end return r end -- TemplateData.getGlobalJSON() TemplateData.getPlainJSON = function ( adapt ) -- Reduce enhanced JSON data to plain text localized JSON -- Parameter: -- adapt -- string, with enhanced JSON -- Returns string, or not if type( adapt ) == "string" then Data.source = adapt free() local lucky lucky, Data.got = pcall( mw.text.jsonDecode, Data.source ) if type( Data.got ) == "table" then full() elseif not Data.strip then local scream = type( Data.got ) if scream == "string" then scream = Data.got else scream = "Data.got: " .. scream end Fault( "fatal JSON error: " .. scream ) end end return Data.slim end -- TemplateData.getPlainJSON() TemplateData.test = function ( adapt, arglist ) TemplateData.frame = mw.getCurrentFrame() return furnish( adapt, arglist ) end -- TemplateData.test() -- Export local p = { } p.f = function ( frame ) -- Template call local lucky, r TemplateData.frame = frame lucky, r = pcall( furnish, frame.args, frame:getParent().args ) if not lucky then Fault( "INTERNAL: " .. r ) r = failures() end return r end -- p.f p.failsafe = function ( frame ) -- Versioning interface local s = type( frame ) local since if s == "table" then since = frame.args[ 1 ] elseif s == "string" then since = frame end if since then since = mw.text.trim( since ) if since == "" then since = false end end return Failsafe.failsafe( since ) or "" end -- p.failsafe p.TemplateData = function () -- Module interface return TemplateData end return p a0976bcf0e87d0e519ff239bd6aec0b63b6f40c6 Template:Campaignbox Second Punic War 10 1506 2841 2023-06-26T23:10:16Z w>Nostalgia of Iran 0 Fixed redirect wikitext text/x-wiki {{Campaignbox | name = Campaignbox Second Punic War | title = [[Second Punic War|{{Wrap|Second Punic War}}]] | listclass = hlist | battles = ; Prelude * [[Siege of Saguntum|Saguntum]] * [[Battle of Rhone Crossing|Rhone]] * [[Hannibal's crossing of the Alps|Crossing of the Alps]] ; Italy * [[Battle of Ticinus|Ticinus]] * [[Battle of the Trebia|Trebia]] * [[Siege of Mutina (218 BC)|Mutina]] * [[Battle of Placentia (217 BC)|Placentia]] * [[Battle of Victumulae|Victumulae]] * [[Battle of Lake Trasimene|Lake Trasimene]] * [[Battle of Umbrian Lake|Umbrian Lake]] * [[Hannibal's crossing of the Apennines|Crossing of the Apennines]] * [[Battle of Ager Falernus|Ager Falernus]] * [[Battle of Geronium|Geronium]] * [[Battle of Cannae|Cannae]] * [[Battle of Silva Litana|Silva Litana]] * [[Battle of Nola (216 BC)|1st Nola]] * [[Siege of Nuceria Alfaterna|Nuceria Alfaterna]] * [[Siege of Casilinum (216–215 BC)|1st Casilinum]] * [[Battle of Hamae|Hamae]] * [[Siege of Petelia|1st Petelia]] * [[Battle of Cumae (215 BC)|Cumae]] * [[Battle of Nola (215 BC)|2nd Nola]] * [[Battle of Beneventum (214 BC)|1st Beneventum]] * [[Battle of Nola (214 BC)|3rd Nola]] * [[Siege of Casilinum (214 BC)|2nd Casilinum]] * [[Battle of Lucania|Lucania]] * [[Siege of Arpi|Arpi]] * [[Battle of Tarentum (212 BC)|1st Tarentum]] * [[Battle of Beneventum (212 BC)|2nd Beneventum]] * [[Battle of Campi Veteres|Campi Veteres]] * [[Battle of Capua|1st Capua]] * [[Battle of the Silarus|Silarus]] * [[Battle of Herdonia (212 BC)|1st Herdonia]] * [[Siege of Capua (211 BC)|2nd Capua]] * [[Hannibal's raid to Rome|Rome]] * [[Battle of Sapriportis|Sapriportis]] * [[Battle of Herdonia (210 BC)|2nd Herdonia]] * [[Battle of Numistro|Numistro]] * [[Battle of Canusium|Canusium]] * [[Siege of Manduria|Manduria]] * [[Siege of Caulonia|Caulonia]] * [[Battle of Tarentum (209 BC)|2nd Tarentum]] * [[Battle of Locri (208 BC)|Locri]] * [[Battle of Petelia|2nd Petelia]] * [[Battle of Venusia|Venusia]] * [[Battle of Grumentum|Grumentum]] * [[Battle of the Metaurus|Metaurus]] * [[Battle of Crotona|Crotona]] * [[Battle of Insubria|Insubria]] ; Iberia * [[Battle of Cissa|Cissa]] * [[Battle of Ebro River|Ebro River]] * [[Battle of Ibera|Ibera]] * [[Siege of Illiturgis|Illiturgis]] * [[Battle of Munda (214 BC)|Munda]] * [[Battle of Orongi|Orongi]] * [[Battle of the Upper Baetis|Upper Baetis]] * [[Battle of New Carthage|1st New Carthage]] * [[Battle of Baria|Baria]] * [[Battle of Baecula|Baecula]] * [[Battle of Ilipa|Ilipa]] * [[Mutiny at Sucro|Sucro]] * [[Battle of Carteia|1st Carteia]] * [[Battle of Carteia (naval)|2nd Carteia]] * [[Battle of Cartagena (206 BC)|2nd New Carthage]] ; Sicily and Sardinia * [[Battle of Lilybaeum|Lilybaeum]] * [[Capture of Malta (218 BC)|Malta]] * [[Battle of Decimomannu|Decimomannu]] * [[Battle of Leontini|Leontini]] * [[Siege of Syracuse (213–212 BC)|Syracuse]] * [[Battle of Himera (211 BC)|Himera]] * [[Siege of Agrigentum (210 BC)|Agrigentum]] ; North Africa * [[Siege of Utica (204 BC)|1st Utica]] * [[Battle of Utica (203 BC)|2nd Utica]] * [[Battle of the Great Plains|Great Plains]] * [[Battle of Cirta|Cirta]] * [[Battle of Zama|Zama]] }}<noinclude> [[Category:Punic Wars navigational boxes|Second Punic War]] [[Category:Ancient Rome campaignbox templates|Campaign]] </noinclude> f3015ca66e7919fa2b20c4ea9e8e7f8fb1283732 Template:Dagger 10 1000 2196 2023-06-29T07:57:39Z wikipedia>Izno 0 per tper wikitext text/x-wiki †<noinclude>{{Documentation}} </noinclude> c1cff92219225378143384ca5156377ca50dd713 Template:Polparty 10 1430 2765 2023-06-30T16:59:55Z w>Paine Ellsworth 0 per edit request on talk page - remove duplicate "NL" wikitext text/x-wiki {{#switch: {{ucfirst:{{{1}}}}} | AT | Austria | [[Austria]] = {{#switch: {{uc:{{{2}}}}} | SPÖ = [[Social Democratic Party of Austria|SPÖ]] | ÖVP = [[Austrian People's Party|ÖVP]] | FPÖ = [[Freedom Party of Austria|FPÖ]] | BZÖ = [[Alliance for the Future of Austria|BZÖ]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Green | Greens | Grün | Grüne = [[The Greens – The Green Alternative|Green]] | Independent | Ind | Neutral | Parteilos | [[Parteilos]] | [[parteilos]] = [[Independent politician|Ind.]] | #default = {{{2}}} }} }} | AU | Australia | [[Australia]] = {{#switch: {{uc:{{{2}}}}} | ALP = [[Australian Labor Party|ALP]] | CLP = [[Country Liberal Party|CLP]] | LP = [[Liberal Party of Australia|Lib.]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Democrats | Dem = [[Australian Democrats|Dem.]] | Greens | Green = [[Australian Greens|Greens]] | Labor | Lab = [[Australian Labor Party|ALP]] | Liberal | Lib = [[Liberal Party of Australia|Lib.]] | National | Nat = [[National Party of Australia|Nat.]] | Independent | Ind | Neutral = [[Independent politician|Ind.]] | #default = {{{2}}} }} }} | CA | Canada | [[Canada]] = {{#switch: {{uc:{{{2}}}}} | BQ = [[Bloc Québécois|BQ]] | CPC = [[Conservative Party of Canada|CPC]] | LPC = [[Liberal Party of Canada|LPC]] | NDP = [[New Democratic Party|NDP]] | GPC = [[Green Party of Canada|Green]] | FPNP = [[First Peoples National Party of Canada|FPNP]] | CHP = [[Christian Heritage Party of Canada|CHP]] | WBP = [[Western Block Party|WBP]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Independent | Ind | Neutral = [[Independent politician|Ind.]] | #default = {{{2}}} }} }} | CZ | Czechia | [[Czechia]] | [[Czech Republic]] | Czech Republic = {{#switch: {{uc:{{{2}}}}} | ODS = [[Civic Democratic Party (Czech Republic)|ODS]] | CSSD = [[Czech Social Democratic Party|ČSSD]] | KSCM = [[Communist Party of Bohemia and Moravia|KSČM]] | KDU-CSL = [[Christian and Democratic Union – Czechoslovak People's Party|KDU-ČSL]] | ANO = [[ANO 2011|ANO]] | TOP09 = [[TOP 09]] | STAN = [[Mayors and Independents|STAN]] | Pirati = [[Czech Pirate Party|Piráti]] | SPD = [[Freedom and Direct Democracy|SPD]] | SZ = [[Green Party (Czech Republic)|Greens]] | US-DEU = [[Freedom Union–Democratic Union|US-DEU]] | LIRA = [[Liberal Reform Party|LIRA]] | SNK = [[SNK European Democrats|SNK ED]] | NEZDEM = [[Independent Democrats (Czech Republic)|Ind. Dem.]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Independent | Ind | Neutral = [[Independent politician|Ind.]] | #default = {{{2}}} }} }} | DE | Germany | [[Germany]] = {{#switch: {{uc:{{{2}}}}} | CDU = [[Christian Democratic Union of Germany|CDU]] | CSU = [[Christian Social Union in Bavaria|CSU]] | SPD = [[Social Democratic Party of Germany|SPD]] | FDP = [[Free Democratic Party (Germany)|FDP]] | PDS = [[The Left (Germany)|Left]] | FW |FWG = [[Free Voters|FW]] | DDP = [[German Democratic Party|DDP]] | NS | NSDAP = [[Nazi Party|NSDAP]] | ODP | ÖDP = [[Ecological Democratic Party|ÖDP]] | AfD | AFD = [[Alternative for Germany|AfD]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Left | Linke | The Left = [[The Left (Germany)|Left]] | Green | Greens | Grün | Grüne | Bündnis 90/Die Grünen = [[Alliance 90/The Greens|Greens]] | Freie Wähler | Freie wähler = [[Free Voters|FW]] | Centre | Zentrum = [[Centre Party (Germany)|Centre]] | Volt = [[Volt Germany|Volt]] | PARTEI = [[die PARTEI|PARTEI]] | Pirates | Piraten = [[Pirate Party Germany|Pirates]] | Nazi = [[Nazi Party|NSDAP]] | Independent | Ind | Neutral | Parteilos | [[Parteilos]] | [[parteilos]] = [[Independent politician|Ind.]] | #default = {{{2}}} }} }} | NL | Netherlands | [[Netherlands]] | The Netherlands | [[The Netherlands]] | Holland = {{#switch: {{uc:{{{2}}}}} | CDA = [[Christian Democratic Appeal|CDA]] | CU = [[ChristianUnion|CU]] | D66 = [[Democrats 66|D66]] | GL = [[GreenLeft|GL]] | PVV = [[Party for Freedom|PVV]] | SGP = [[Reformed Political Party|SGP]] | SP = [[Socialist Party (Netherlands)|SP]] | VVD = [[People's Party for Freedom and Democracy|VVD]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Green | Groen = [[GreenLeft|GL]] | PvdA | Pvda = [[Labour Party (Netherlands)|PvdA]] | Independent | Ind | Neutral | Parteilos | [[Parteilos]] | [[parteilos]] = [[Independent politician|Ind.]] | #default = {{{2}}} }} }} | CH | Switzerland | [[Switzerland]] = {{#switch: {{uc:{{{2}}}}} | FDP | PRD | RAD | FDP/PRD = [[Free Democratic Party of Switzerland|FDP/PRD]] | PLR = [[Free Democratic Party of Switzerland|FDP/PRD/PLR]] | PLC = [[Free Democratic Party of Switzerland|FDP/PRD/PLC]] | SPS | PSS | SP | PS | SP/PS | SPS/PSS | SOC = [[Social Democratic Party of Switzerland|SPS/PSS]] | SVP | UDC | SVP/UDC = [[Swiss People's Party|SVP/UDC]] | PPS = [[Swiss People's Party|SVP/UDC/PPS]] | CVP | PDC | CVP/PDC = [[Christian Democratic People's Party of Switzerland|CVP/PDC]] | PPD = [[Christian Democratic People's Party of Switzerland|CVP/PDC/PPD]] | PCD = [[Christian Democratic People's Party of Switzerland|CVP/PDC/PCD]] | GPS | PES = [[Green Party of Switzerland|GPS/PES]] | GLP = [[Green Liberal Party of Switzerland|GLP]] | PLS | LPS | LIB = [[Liberal Party of Switzerland|LPS/PLS]] | EVP | PEV = [[Evangelical People's Party of Switzerland|EVP/PEV]] | Ticino League | Lega = [[Ticino League]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Green = [[Green Party of Switzerland|GPS]] | Independent | Ind | Neutral = [[Independent politician|Ind.]] | #default = [[List of political parties in Switzerland|{{{2}}}]] }} }} | RO | Romania | [[Romania]] = {{#switch: {{uc:{{{2}}}}} | PSD = [[Social Democratic Party (Romania)|PSD]] | PNL = [[National Liberal Party (Romania)|PNL]] | UDMR | RMDSZ = [[Democratic Alliance of Hungarians in Romania|UDMR]] | PNȚ-CD | PNT-CD = [[Christian Democratic National Peasants' Party|PNȚ-CD]] | ALDE = [[Alliance of Liberals and Democrats (Romania)|ALDE]] | PDL = [[Democratic Liberal Party (Romania)|PDL]] | FDGR = [[Democratic Forum of Germans in Romania|FDGR]] | PD = [[Democratic Party (Romania)|PD]] | PCM | MPP | HCP = [[Hungarian Civic Party (Romania)|PCM]] | PND = [[National Democratic Party (Romania)|PND]] | PRM = [[Greater Romania Party|PRM]] | USL = [[Social Liberal Union|USL]] | PMP = [[People's Movement Party|PMP]] | UNPR = [[National Union for the Progress of Romania|UNPR]] | PPMT | EMNP = [[Hungarian People's Party of Transylvania|PPMT]] | PC = [[Conservative Party (Romania)|PC]] | PER = [[Ecologist Party of Romania|PER]] | PSRO = [[Romanian Social Party|PSRO]] | PRO = [[PRO Romania|PRO]] | PLUS = [[Freedom, Unity and Solidarity Party|PLUS]] | USR = [[Save Romania Union|USR]] | USR PLUS = [[USR PLUS]] | AD = [[The Right Alternative|AD]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Independent | Ind | Neutral = [[Independent politician|Ind.]] | #default = {{{2}}} }} }} | TR | Turkey | [[Turkey]] = {{#switch: {{uc:{{{2}}}}} | AKP = [[Justice and Development Party (Turkey)|AKP]] | CHP = [[Republican People's Party|CHP]] | HDP = [[Peoples' Democratic Party (Turkey)|HDP]] | MHP = [[Nationalist Movement Party|MHP]] | İYİ | IYI = [[Good Party|İYİ]] | SP = [[Felicity Party|SP]] | TKP = [[Communist Party of Turkey (modern)|TKP]] | BBP = [[Great Unity Party|BBP]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Independent | Ind | Neutral = [[Independent politician|Ind.]] | #default = {{{2}}} }} }} | US | United States | [[United States]] | USA | [[USA]] = {{#switch: {{uc:{{{2}}}}} | D = [[Democratic Party (United States)|D]] | R = [[Republican Party (United States)|R]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Democrat = [[Democratic Party (United States)|D]] | Republican = [[Republican Party (United States)|R]] | Independent | Ind | Neutral = [[Independent politician|Ind.]] | #default = {{{2}}} }} }} | ZA | South Africa | [[South Africa]] = {{#switch: {{uc:{{{2}}}}} | ANC | African National Congress = [[African National Congress|ANC]] | DA | Democratic Alliance = [[Democratic Alliance (South Africa)|DA]] | IFP | Inkatha Freedom Party = [[Inkatha Freedom Party|IFP]] | NFP | National Freedom Party = [[National Freedom Party|NFP]] | COPE | Congress of the People = [[Congress of the People (South African political party)|COPE]] | FF+ | Freedom Front Plus = [[Freedom Front Plus]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Green | Greens | Grün | Grüne = [[The Greens – The Green Alternative|Green]] | Independent | Ind | Neutral | Parteilos | [[Parteilos]] | [[parteilos]] = [[Independent politician|Ind.]] | #default = {{{2}}} }} }} | Independent | [[Independent]] | Ind | Ind. | Neutral = [[Independent politician|Ind.]] | #default = {{#switch: {{ucfirst: {{{2}}} }} | Independent | Ind | Neutral = [[Independent (politician)|Ind.]] | #default = {{{2|{{{1|}}}}}} }} }}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 24a6705d4a914d795e49dc847104481597d47019 Template:Never substitute 10 990 2176 2023-07-02T14:23:57Z wikipedia>Primefac 0 convert to wrapper wikitext text/x-wiki {{Always substitute|yesnomaybe=never}}<noinclude> {{Documentation}} </noinclude> fda3e0330f5da78bbcd49a4f97ec81a6a3c78cd5 Template:Always substitute 10 989 2174 2023-07-02T18:35:53Z wikipedia>Primefac 0 missing word wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Unsubst|main|$B= {{Ombox | name = Subst only | type = notice | text = '''This template {{#switch:{{{yesnomaybe|}}}|may=may be [[Help:Substitution|substituted]]'''|never=should ''not'' be [[Help:Substitution|substituted]]'''||#default=should always be [[Help:Substitution|substituted]]''' (i.e., use <!-- -->{{{actualtemplate|{{template other|{{Tlsp|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{BASEPAGENAME}}|{{PAGENAME}}}}}}|{{Tlsu|{{FULLPAGENAME}}}}}}}}})}}. <!-- -->{{#if:{{yesno|{{{auto|no}}}}} |Any accidental transclusions will be automatically substituted by a bot.{{{1|}}}{{#switch:{{SUBPAGENAME}}|doc|sandbox=|[[Category:Wikipedia templates to be automatically substituted]]}}}} <!-- -->{{#if:{{{alt|}}} |For transcluding, use {{Tl|{{{alt|}}}}} instead.}} }}{{#switch:{{SUBPAGENAME}}|doc|sandbox=|[[Category:Wikipedia substituted templates]]}}}}<noinclude>{{Documentation}}</noinclude> 8e567c153f4f9a6a329e76bf6a71e8a216e87919 Template:Infobox Australian place/doc 10 1392 2727 2023-07-03T18:54:40Z w>Poketama 0 There was an RFC and months of discussion on this in the Australian wikipedian space. - Reverted changes to native_name parameter. wikitext text/x-wiki <includeonly>{{redirect|WP:IAP|text=For the essay, see [[Wikipedia:Ignore all precedent]] ([[WP:IAPD]])}}</includeonly>{{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE --> {{High-use|1=14430 }} {{Lua|Module:Infobox|Module:InfoboxImage|Module:URL|Module:Check for unknown parameters|Module:Australian place map|Module:PopulationFromWikidata}} {{Auto short description}} __NOTOC__ <includeonly>{{Shortcut|WP:IAP}}</includeonly> {{Infobox Australian place/pagelinks}} == Purpose == {{tl|Infobox Australian place}} is used to add infoboxes to articles on places in Australian states and territories. It is not limited to populated places such as cities, towns and suburbs, but may be used on any place including regions, [[Local government in Australia|local government areas]], [[Lands administrative divisions of Australia|cadastral units]], [[protected area]]s and even some areas that do not fall into any of the preceding descriptions and for which no other infobox is appropriate. It is the standard infobox used in Australian articles. Australian articles using {{tl|Infobox settlement}} should be converted to use this infobox. The infobox has been extensively customised for Australia and includes automation that results in some parameters being redundant to other parameters. For example, if population density (in the {{para|density}} parameter) is not specified, this will be automatically generated based on the {{para|pop}} and {{para|area}} parameters. It is therefore important to read parameter descriptions thoroughly, to avoid unnecessarily providing redundant or incorrect information. For infoboxes that require reformatting, general cleanup or addition of missing parameters, [[Template:Infobox Australian place/cleanup]] can be [[Help:Substitution|substituted]]. This will reformat the infobox and remove invalid parameters. == Usage == === To use this template === #Copy the relevant blank template from the <u>'''[[Template:Infobox Australian place/Blank|Blank infobox page]]'''</u> into the beginning of your document, remembering to put the code on the line directly before the start of the article's lead. #Enter values for the parameters as outlined under {{slink||Parameters}}, particularly {{para|type}} and {{para|state}}. Parameters left blank will automatically be hidden. #Preview the page with your edits. #Save the page with an appropriate edit summary (e.g., "<nowiki>Added {{[[Template:Infobox Australian place|Infobox Australian place]]}}</nowiki>", which will display as, "Added {{tl|Infobox Australian place}}" ). === Examples === * Examples of this template can be found on the [[Template:Infobox Australian place/Examples|examples page]]. == Parameters == Both <code>type</code> and <code>state</code> are required parameters. All other parameters used by this template are optional. === Required === These parameters must be set for every infobox as they affect the behaviour of many other parameters. The {{para|type}} parameter sets up the template for a specific type of location. It regulates which parameters can be used and sets the colour of the top bar of the infobox. The entered values for this parameter should be plain, unlinked text. {| class="wikitable plainrowheaders" style="background-color:white;" |+ Use of the <code><nowiki>|</nowiki>{{visible anchor|type}}=</code> parameter ! scope="col" style="background-color: whitesmoke;" | Accepted value ! scope="col" style="background-color: whitesmoke;" | Description ! scope="col" style="background-color: whitesmoke;" width=20% | Colour of top bar<ref group=lower-alpha>Colour names per [http://www.color-blindness.com/color-name-hue the colour names given by colourblindness.com]</ref> |- ! scope="row" | <code>city</code> | A city. <!-- Description of the effects of "city" on the infobox needed --> | style="background:#f9f6d2; color:#100;" | Light Goldenrod Yellow |- ! scope="row" | <code>suburb</code> | A suburb, a form of administrative region generally used in cities and towns.<!-- Description of "suburb" and its effects on the infobox needed --> | style="background:#f9e2d2; color:#100;" | Antique White |- ! scope="row" | <code>town</code> | A town or other settlement. <!-- Description of the effects of "town" on the infobox needed --> | style="background:#e9f9d2; color:#100;" | Snow Flurry |- ! scope="row" | <code>lga</code> | An [[Local government areas of Australia|Australian local government area]] (LGA) - a particular form of administrative region, used to create local governments. Many LGAs will use terms such as "Town of", "District Council of", "Shire of", "City of", etc., in their names. Note that the ACT does not have any system of local government, and therefore does not have LGAs.<!-- Description of the effects of "lga" on the infobox needed --> | style="background:#d2d5f9; color:#100;" | Lavender |- ! scope="row" | <code>region</code> | <!-- Description of "region" and its effects on the infobox needed --> | style="background:#e6c4fb; color:#100;" | Mauve |- ! scope="row" | <code>cadastral</code> | <!-- Description of "cadastral" and its effects on the infobox needed --> | style="background:#ffffe0; color:#100;" | Light Yellow |- ! scope="row" | <code>protected</code> | <!-- Description of "protected" and its effects on the infobox needed --> | style="background:transparent; color:#100;" | No colour <small>(An [[IUCN protected area categories|IUCN category]] can be used to display a coloured banner - see {{slink||IUCN categories for protected areas}}.)</small> |- ! scope="row" | <code>other</code> | <!-- Description of "other" and its effects on the infobox needed --> | style="background:transparent; color:#100;" | No colour |- ! scope="row" | ''undefined'' | Occurs when the parameter has been left blank.<!-- Description of the effects of an undefined type on the infobox needed --> | style="background:#ccc; color:#100;" | Very Light Grey |} {{reflist|group=lower-alpha}} The {{para|state}} parameter defines the state or territory of the infobox's location. It sets up the template to refer to and link to the correct state or territory throughout. The entered values for this parameter should be plain, unlinked text; for consistency, lower case is preferred. If the parameter is left blank, the infobox will default to <code>au</code> (i.e., Australia). {| class="wikitable plainrowheaders" style="background-color:white;" |+ Use of the <code><nowiki>|</nowiki>{{visible anchor|state}}=</code> parameter ! scope="col" style="background-color: whitesmoke;" | Accepted value ! scope="col" style="background-color: whitesmoke;" | State or territory |- ! scope="row" | <code>act</code> | [[Australian Capital Territory]] (ACT) |- ! scope="row" | <code>nsw</code> | [[New South Wales]] (NSW) |- ! scope="row" | <code>nt</code> | [[Northern Territory]] (NT) |- ! scope="row" | <code>qld</code> | [[Queensland]] (Qld or QLD) |- ! scope="row" | <code>sa</code> | [[South Australia]] (SA) |- ! scope="row" | <code>tas</code> | [[Tasmania]] (Tas or TAS) |- ! scope="row" | <code>vic</code> | [[Victoria (Australia)|Victoria]] (Vic or VIC) |- ! scope="row" | <code>wa</code> | [[Western Australia]] (WA) |- ! scope="row" | <code>jbt</code> | [[Jervis Bay Territory]] (JBT) |- ! scope="row" | <code>ni</code> | [[Norfolk Island]] (NI) |- ! scope="row" | <code>au</code> | [[Australia]] - use when no other value is applicable. |} === Optional === {| class="wikitable plainrowheaders" style="background-color: white; width:100%;" |+ Optional parameters ! scope="col" style="background-color: whitesmoke;" | Parameter ! scope="col" style="background-color: whitesmoke;" | Available for {{para|type}} ! scope="col" style="background-color: whitesmoke;" | Description ! scope="col" style="background-color: whitesmoke;" | Notes ! scope="col" style="background-color: whitesmoke;" | Potential sources ! scope="col" style="background-color: whitesmoke;" | Values |- ! scope="row" | name | all | Name of infobox's place | <!-- Notes --> | <!-- Potential sources --> | Plain text. If this parameter is not present in the article, the template will use the name of the article. If the parameter exists, but the place name is not defined, the infobox title will be blank. |- ! scope="row" | native_name | all | Placename in local Indigenous Australian language(s) | Name of a place in the local Aboriginal or Torres Strait Islander language, if different from name. ''Native'' is a deprecated archaic term in the Australian context, but is used in this template for consistency with other templates. Please don't use the term in articles. | <!-- Potential sources --> | plain text |- ! scope="row" | native_name_lang | all | [[ISO 639-1]] code, e.g. nys for [[Noongar language|Noongar]], for the Indigenous Australian language, if available | If there are names in multiple Indigenous Australian languages, enter those names into the {{para|native_name}} parameter using <nowiki>{{lang}}</nowiki> instead.{{pb}}''Native'' is a deprecated archaic term in the Australian context, but is used in this template for consistency with other templates. Please don't use the term in articles.{{pb}}'''Prerequisite parameters:''' *native_name | <!-- Potential sources --> | plain text |- ! scope="row" | city | ??{{pb}}(recommended for suburb) | City name | Name will be auto-linked if no wikilink is defined.{{pb}}In some cases it may be desirable to include the name of a non-city here. | [[List of cities in Australia]] | plain text, may be linked. |- ! scope="row" | iucn_category | protected | The [[World Commission on Protected Areas#IUCN Categories of Protected Area|International Union for Conservation of Nature (IUCN) category]] applicable to the [[protected area]]. | For more information on how this parameter is displayed, see [[#IUCN categories for protected areas|IUCN categories]] below. | <!-- Potential sources --> | Plain text, do not wikilink. Accepted values are: * Ia * Ib * II * III * IV * V * VI |- ! scope="row" | iucn_ref | protected | A reference demonstrating the IUCN category | '''Prerequisite parameters:''' * <code>iucn_category</code> | <!-- Potential sources --> | Wikitext (can contain links).{{pb}}Best when used with <nowiki><ref></ref></nowiki> tags and a citation template |- ! scope="row" | image | all | Image of the locality | For cadastral units, this is typically a map showing its location within the state or territory. | <!-- Potential sources --> | filename |- ! scope="row" | image_upright | all | Width of image of the locality (in relation to default thumbnail size) | The size should not be set to a value that would result in an image width greater than 300px. See [[#Calculating "image_upright"|help below]] for guidance on determining the value to be used, and [[WP:IMGSIZE]] for rationale. | <!-- Potential sources --> | Unformatted number. If not specified, the image width defaults to <code>1.23</code>, which is approximately 270px for readers that haven't changed their default thumbnail size at [[Special:Preferences]]. |- ! scope="row" | caption | all | Caption for the locality image | <!-- Notes --> | <!-- Potential sources --> | wikitext (can contain links) |- ! scope="row" | image_alt | all | [[MOS:ALT|Alt text]] for the image | <!-- Notes --> | <!-- Potential sources --> | wikitext (can contain links) |- ! scope="row" | image2 | all | A second image of the locality | In LGA articles this is typically used where a map of the LGA is required but the appropriate locator map template is not available in {{cl|Australia location map modules}}. | <!-- Potential sources --> | filename |- ! scope="row" | image2_upright | all | Width of the second image of the locality (in relation to default thumbnail size) | The size should not be set to a value that would result in an image width greater than 300px. See [[#Calculating "image_upright"|help below]] for guidance on determining the value to be used, and [[WP:IMGSIZE]] for rationale. | <!-- Potential sources --> | Unformatted number. If not specified, the image width defaults to <code>1.23</code>, which is approximately 270px for readers that haven't changed their default thumbnail size at [[Special:Preferences]]. |- ! scope="row" | caption2 | all | caption for the second locality image | <!-- Notes --> | <!-- Potential sources --> | wikitext (can contain links) |- ! scope="row" | image2_alt | all | [[MOS:ALT|Alt text]] for the image | <!-- Notes --> | <!-- Potential sources --> | wikitext (can contain links) |- ! scope="row" | nearest_town_or_city | protected | nearest town or city to the area | If the area is not within a town or city, the nearest town or city to the area can be listed here. If only one, wikilinking may be omitted as the article will be automatically linked. If there are more than one, use {{tl|Plainlist}}. | <!-- Potential sources --> | Wikitext (can contain links) |- ! scope="row" | {{visible anchor|coordinates}} | ??{{pb}}(recommended for all) | Displays coordinates of the locality. Triggers a map to automatically generate (can be adjusted in various ways). | {{UF-coord}} The automatic map will be of the state, with a pushpin identifying the position specified in {{Tl|coord}}. Parameters to adjust or toggle the map are under {{slink||Locator map generated by coordinates}}. A second map can be generated using wikidata as well (see {{slink||Locator map generated by wikidata}}). | <!-- Potential sources --> | Example:<br /><nowiki>{{Coord|32|45|41.3|S|151|44|38.6|E|type:city_region:AU-NSW|display=inline,title}}</nowiki> |- ! scope="row" | pop | ??{{pb}}(recommended for all except protected) | Population statistic (use approximate if {{para|type|region}}) | If left empty, population data will be displayed from Wikidata (for appropriate geography). See [[#PopulationFromWikidata|''Notes'' below]] for more information. | [http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats] | Number. should be plain, either with or without a comma. i.e. 12345 or 12,345 Do not add anything else, including years or references. |- ! scope="row" | pop_year | ??{{pb}}(recommended for all except protected) | Year applicable to the population figure | '''Prerequisite parameters:''' * pop |[http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats] | Number. When the population is for a census year, use {{tl|CensusAU}} |- ! scope="row" | pop_footnotes | ??{{pb}}(recommended for all except protected) | Footnote demonstrating the population statistic | '''Prerequisite parameters:''' * pop |[http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats] | wikitext (can contain links){{pb}}Best when used with <nowiki><ref></ref></nowiki> tags and {{tl|Census 2016 AUS}} |- ! scope="row" | pop2 | ??{{pb}}(recommended for all except protected) | Second population statistic (use approximate if {{para|type|region}}) | See [[Clarence Town, New South Wales]] for an example of when a second population figure is useful.{{pb}}'''Prerequisite parameters:''' * pop |[http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats] | Number. Should be unformatted, and can be with or without a comma. i.e. 12345 or 12,345 Do not add anything else, including years or references. |- ! scope="row" | pop2_year | ??{{pb}}(recommended for all except protected) | Year applicable to the second population figure | '''Prerequisite parameters:''' * pop2 | [http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats] | Number. When the population is for a census year, use {{tl|CensusAU}} |- ! scope="row" | pop2_footnotes | ??{{pb}}(recommended for all except protected) | Footnote demonstrating the second population statistic | '''Prerequisite parameters:''' * pop2 | [http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats] | wikitext (can contain links){{pb}}Best when used with <nowiki><ref></ref></nowiki> tags and {{tl|Census 2016 AUS}} |- ! scope="row" | poprank | ??{{pb}}(recommended for city) | population rank | '''Prerequisite parameters:''' * pop | [[List of cities in Australia by population]] | number |- ! scope="row" | density | all{{pb}}(recommended for city, region) | population density | Will auto-calculate if both pop and area are defined |[http://www.abs.gov.au/ ABS] | unformatted number, in people/km² |- ! scope="row" | density_footnotes | all{{pb}}(recommended for city, region) | population density footnote for references | |[http://www.abs.gov.au/ ABS] | wikitext (can contain links){{pb}}Best when used with <nowiki><ref></ref></nowiki> tags and a citation template |- ! scope="row" | established | all | Date the location was established | If the exact date is unknown, a year will suffice | <!-- Potential sources --> | date |- ! scope="row" | established_footnotes | all | Reference demonstrating the establishment date | <!-- Notes --> | <!-- Potential sources --> | wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template |- ! scope="row" | abolished | all | Date the location was abolished | If the exact date is unknown, a year will suffice | <!-- Potential sources --> | date |- ! scope="row" | gazetted | all | Date the place name was [[Gazetteer of Australia|gazetted]] | <!-- Notes --> | <!-- Potential sources --> | date |- ! scope="row" | postcode | all{{pb}}(recommended for suburb, town) | Postcode(s) for the place | <!-- Potential sources --> |[http://auspost.com.au/apps/postcode.html Australia Post postcode search tool] | number |- ! scope="row" | elevation | all{{pb}}(recommended for suburb, town) | The elevation, measured from sea level in metres | <!-- Notes --> | <!-- Potential sources --> | unformatted number in metres |- ! scope="row" | elevation_footnotes | all{{pb}}(recommended for suburb, town) | Footnote demonstrating the elevation | <!-- Notes --> | <!-- Potential sources --> | wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template |- ! scope="row" | area | all | The area of the location | <!-- Notes --> | [http://www.abs.gov.au/ ABS] | unformatted number in km<sup>2</sup> |- ! scope="row" | area_footnotes | all | Footnote demonstrating the area | <!-- Notes --> | [http://www.abs.gov.au/ ABS] | wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template |- ! scope="row" | timezone | all{{pb}}(recommended for city, suburb, town, lga, region) | Timezone of the location | See [[Time in Australia#Time zones and legislation|Time in Australia]] | <!-- Potential sources --> | Plain text, linked. Either the full name or the abbreviation can be used (e.g., either <code><nowiki>[[Australian Western Standard Time]]</nowiki></code> or <code><nowiki>[[Australian Western Standard Time|AWST]]</nowiki></code> can be used). |- ! scope="row" | utc | all{{pb}}(recommended for city, suburb, town, lga, region) | UTC offset of the timezone | <!-- Notes --> | <!-- Potential sources --> | "+" followed by number, e.g., <code>+8:00</code> (for AWST) |- ! scope="row" | timezone-dst | all{{pb}}(recommended for city, suburb, town, lga, region) | Daylight saving timezone | NT, Qld and WA are the only [[States and territories of Australia#States and territories|internal states and territories]] which do not have any daylight saving timezone. | [[Daylight saving time in Australia]] | Plain text, linked. Either the full name or the abbreviation can be used (e.g., either <code><nowiki>[[Australian Eastern Daylight Time]]</nowiki></code> or <code><nowiki>[[Australian Eastern Daylight Time|AEDT]]</nowiki></code> can be used). |- ! scope="row" | utc-dst | all{{pb}}(recommended for city, suburb, town, lga, region) | UTC offset of the daylight saving timezone | NT, Qld and WA are the only [[States and territories of Australia#States and territories|internal states and territories]] which do not have any daylight saving timezone. | <!-- Potential sources --> | "+" followed by number, e.g., <code>+11:00</code> (for AEDT) |- ! scope="row" | mayor | lga | Mayor of the LGA | Name of the mayor only. Do not include titles, postnominals or political party information. | <!-- Potential sources --> | Plain text |- ! scope="row" | mayortitle | lga | Title of the mayor | | <!-- Potential sources --> | Wikitext (can be wikilinked), or blank. If left blank, will default to "[[Mayor]]". |- ! scope="row" | location# (up to location5) | all{{pb}}(recommended for city, suburb, town) | Specified location(s) to display the distance and direction to | Normally other cities or population centres.{{pb}}''See {{slink||Notes}} below'' | Maps such as Google Earth | Plain text, may be wikilinked. If no wikilink is given, the text will be automatically wikilinked. |- ! scope="row" | dist# (up to dist5) | all{{pb}}(recommended for city, suburb, town) | The distance by road (not direct) to the specified location(s) | Distance by road, not direct.{{pb}}''See {{slink||Notes}} below'' |Maps such as Google earth, [http://www.whereis.com.au whereis], [http://www3.visitvictoria.com/displayObject.cfm/ObjectID.0000B41D-D36D-1A88-8B4680C476A9047C/lk.Left2_3/pg.VVHomepage/vvt.vhtml Visit Victoria route planner] | unformatted number in km |- ! scope="row" | dir# (up to dir5) | all{{pb}}(recommended for city, suburb, town) | The direction (preferably cardinal) of the specified location(s), normally other cities or population centres | ''See {{slink||Notes}} below'' | <!-- Potential sources --> | Plain text. Normally a cardinal direction, either as an initialism (e.g. <code>N</code>, <code>SE</code>, <code>NWW</code>) or the word in lower case (per [[MOS:COMPASS]]; e.g., <code>north</code>, <code>south-east</code>, <code>north-west-west</code>). |- ! scope="row" | lga | all{{pb}}(recommended for city, suburb, town) | Name of the local government area | This parameter will display in a way that makes little sense when {{para|type|lga}}, but it can be used if necessary. |[http://www.gnb.nsw.gov.au/place_naming/placename_search NSW Geographical Names Board] | Plain text, may be wikilinked. If no wikilink is given, the text will be automatically wikilinked. |- ! scope="row" | lga2{{pb}}lga3{{pb}}lga4{{pb}}lga5 | all{{pb}}(recommended for city, suburb, town) | Names of additional LGAs | This parameter displays in a way that makes no sense when {{para|type|lga}}, but it can be used if necessary. If more than 5 LGAs are required, use {{tl|plainlist}} as necessary. See [https://en.wikipedia.org/w/index.php?title=Hunter_Region&oldid=615428967 Hunter Region] for an example. | <!-- Potential sources --> | Plain text, can be wikilinked. If no wikilink is given, the text will be automatically wikilinked. |- ! scope="row" | seat | all{{pb}}(recommended for lga) | Council seat of the LGA | <!-- Notes --> | <!-- Potential sources --> | Plain text, can be wikilinked. If no wikilink is given, the text will be automatically wikilinked. |- ! scope="row" | region | all{{pb}}(recommended for city, suburb, town, lga, cadastral, protected) | Name of region location is in | <!-- Notes --> | <!-- Potential sources --> | Plain text, can be wikilinked. If no wikilink is given, the text will be automatically wikilinked. |- ! scope="row" | county | all{{pb}}(recommended for city, suburb, town, lga) | Name of the county (a type of [[Lands administrative divisions of Australia|lands administrative division]]) | Not used in all areas. |[http://www.gnb.nsw.gov.au/place_naming/placename_search NSW Geographical Names Board] | Plain text, can be wikilinked. If no wikilink is given, the text will be automatically wikilinked. |- ! scope="row" | parish | all{{pb}}(recommended for city, suburb, town) | Name of the parish (a type of [[Lands administrative divisions of Australia|lands administrative division]]) | Only used in NSW, Qld and Vic. |[http://www.gnb.nsw.gov.au/place_naming/placename_search NSW Geographical Names Board] | Plain text, can be wikilinked. |- ! scope="row" | hundred | cadastral | Name of the hundred (a type of [[Lands administrative divisions of Australia|lands administrative division]]) | Not used in all areas. | <!-- Potential sources --> | Plain text, can be wikilinked. |- ! scope="row" | former_hundred | cadastral | Former name of the hundred (a type of [[Lands administrative divisions of Australia|lands administrative division]]) | Not used in all areas. | <!-- Potential sources --> | Plain text, can be wikilinked. |- ! scope="row" | division | cadastral | Name of the division (a type of [[Lands administrative divisions of Australia|lands administrative division]]) | Only used in NSW - [[lands administrative divisions of New South Wales]] | <!-- Potential sources --> | Plain text, can be wikilinked. |- ! scope="row" | stategov{{pb}}stategov2{{pb}}stategov3{{pb}}stategov4{{pb}}stategov5{{pb}} | all{{pb}}(recommended for city, suburb, town, lga, region) | The place's state government electorate(s) | <!-- Notes--> | <!-- Potential sources --> | Plain text, can be wikilinked. |- ! scope="row" | fedgov{{pb}}fedgov2{{pb}}fedgov3{{pb}}fedgov4{{pb}} | all{{pb}}(recommended for city, suburb, town, lga, region) | The place's federal government electorate(s) | <!-- Notes--> | <!-- Potential sources --> | Plain text, can be wikilinked. |- ! scope="row" | logo | all{{pb}}(recommended for lga) | Logo of place | <!-- Notes --> | For LGAs, these can be sourced from individual LGA websites. | Image link (do not include "File:" or "Image:") |- ! scope="row" | logo_upright | all{{pb}}(recommended for lga) | Width of logo (in relation to default thumbnail size) | The size should not be set to a value that would result in an logo width greater than 300px. See [[#Calculating "image_upright"|help below]] for guidance on determining the value to be used, and [[WP:IMGSIZE]] for rationale. | <!-- Potential sources --> | Unformatted number. If not specified, the logo width defaults to <code>1.23</code>, which is approximately 270px for readers that haven't changed their default thumbnail size at [[Special:Preferences]]. |- ! scope="row" | logo_alt | all{{pb}}(recommended for lga) | [[MOS:ALT|Alt text]] for the logo | <!-- Notes--> | <!-- Potential sources --> | Wikitext, can be wikilinked. |- ! scope="row" | visitation_num | protected | The number of visitors in a recent year | <!-- Notes--> | <!-- Potential sources --> | Unformatted number |- ! scope="row" | visitation_year | protected | The year when <code>visitation_num</code> was counted | '''Prerequisite parameters:''' * visitation_num | <!-- Potential sources --> | Unformatted year |- ! scope="row" | visitation_footnotes | protected | Footnote demonstrating the number of visitors | '''Prerequisite parameters:''' * visitation_num | <!-- Potential sources --> | Wikitext, can be wikilinked.{{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template |- ! scope="row" | managing_authorities | protected | authority that manages the area | Name of the authority or organisation that manages the area. | <!-- Potential sources --> | Wikitext, can be wikilinked. If no wikilink is given, the text will be automatically wikilinked. |- ! scope="row" | url | all{{pb}}(recommended for lga, protected) | URL for the location's individual website | Do not use for former LGAs | <!-- Potential sources --> | Bare url, e.g., http://www.example.com |- ! scope="row" | maxtemp | all{{pb}}(recommended for suburb, town) | Maximum average annual temperature | <!-- Notes --> | [http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data] | unformatted number, in °C |- ! scope="row" | maxtemp_footnotes | all{{pb}}(recommended for suburb, town) | Footnote demonstrating the maximum temperature | <!-- Potential sources --> | [http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data] | Wikitext, can contain templates, html, wikilinks, external links, etc.{{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template |- ! scope="row" | mintemp | all{{pb}}(recommended for suburb, town) | Minimum average annual temperature | <!-- Notes --> |[http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data] | unformatted number, in °C |- ! scope="row" | mintemp_footnotes | all{{pb}}(recommended for suburb, town) | Footnote demonstrating the minimum temperature | <!-- Notes --> |[http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data] | wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template |- ! scope="row" | rainfall | all{{pb}}(recommended for suburb, town) | Average annual rainfall | <!-- Notes --> | [http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data] | unformatted number, in mm |- ! scope="row" | rainfall_footnotes | all{{pb}}(recommended for suburb, town) | Footnote demonstrating the annual rainfall | <!-- Notes --> | [http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data] | wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template |- ! scope="row" | near-n{{pb}}near-ne{{pb}}near-e{{pb}}near-se{{pb}}near-s{{pb}}near-sw{{pb}}near-w{{pb}}near-nw | all{{pb}}(recommended for suburb, lga) | Neighbours which share borders with the infobox's location | It is best when all listed neighbours are of the same type (e.g., suburbs around a suburb). When the place of a neighbour is instead taken by something like an ocean or another state/territory, include it in italics. | <!-- Potential sources --> | Plain text, linked. Can be formatted. For example, the LGA of the [[City of Melville]] has a neighbour to its east, the [[City of Canning]]. Canning would be entered as <code><nowiki>|near-e=[[City of Canning]]</nowiki></code> (or <code><nowiki>[[City of Canning|Canning]]</nowiki></code>, to save space). The City of Melville is also neighboured at its north by the [[Swan River (Western Australia)]]. This would be entered as <code><nowiki>|near-n=''[[Swan River (Western Australia)|Swan River]]''</nowiki></code> (in italics as it is not another LGA) |- ! scope="row" | near | all{{pb}}(recommended for suburb, lga) | Central to neighbours | Replaces name (best used without any near-* e.g. to specify a section link to the main text for further info) | <!-- Potential sources --> | plain text, link (ideally to a section of the article with further information) |- ! scope="row" | footnotes | all | General footnotes, used to provide footnotes supporting information in parameters without a dedicated parameter for footnotes. | <!-- Notes --> | <!-- Potential sources --> | wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags. |- ! scope="row" | _noautocat | all | Prevents automatic categorisation | This should only be used when absolutely necessary, when the automatic categorisation built into this template causes errors. A hidden note should be included to explain why the parameter is being used in the article. | <!-- Potential sources --> | "yes" to not categorise leave blank to categorise |} ==== Locator map generated by coordinates ==== The recommended and most common locator map is auto-generated by {{para|coordinates}}, but can be toggled off using {{para|map_type|nomap}} (see in table). All of the following parameters require {{para|coordinates}} to be properly set using {{tl|coord}}. {| class="wikitable plainrowheaders" style="background-color: white; width:100%;" |+ {{tl|coord}}-generated map ! scope="col" style="background-color: whitesmoke;" | Parameter ! scope="col" style="background-color: whitesmoke;" | Available for {{para|type}} ! scope="col" style="background-color: whitesmoke;" | Description ! scope="col" style="background-color: whitesmoke;" | Notes ! scope="col" style="background-color: whitesmoke;" | Values |- ! scope="row" | coordinates ! colspan="5" | See {{slink||coordinates}} for details |- ! scope="row" | map_alt | all | [[MOS:ALT|Alt text]] for the location map | '''Prerequisite parameters:''' * <code>coordinates</code> | wikitext (can contain links) |- ! scope="row" | map_type | all | Toggles whether a location map is automatically generated | '''Prerequisite parameters:''' * <code>coordinates</code> | Available options are: * <code>nomap</code> to suppress automatically generated location map * <code>auto</code> or leave it blank, to allow the automatically generated location map |- ! scope="row" | map_scale | all | Changes scale of map from the default | '''Prerequisite parameters:''' * <code>coordinates</code> | Unformatted number. See {{tl|coord}} for examples. |- ! scope="row" | force_national_map | all{{pb}}(recommended for city, region, protected) | Forces locator map to use a map of Australia as a whole | '''Prerequisite parameters:''' * <code>coordinates</code> | <code>yes</code> to force map of Australia, or leave blank. Plain text, do not link<!-- Anything in this parameter will force the Australian map to be used. For consistency though, let's force people to use something simple and obvious. --> |- ! scope="row" | use_lga_map | all{{pb}}(recommended for suburb, lga, protected) | Forces locator map to use the LGA's map which is available to [[Module:Location map]] | First confirm whether there is a map for that LGA - see [[:Category:Australia location map modules]].{{pb}}'''Prerequisite parameters:''' * <code>coordinates</code> * <code>state</code> * <code>lga</code> | <code>yes</code> to force map of the LGA, or leave blank<!-- Anything in this parameter will force the LGA map to be used. For consistency though, let's force people to use something simple and obvious. --> |- ! scope="row" | alternative_location_map | all | Forces the locator map to use an alternative map available to [[Module:Location map]] | It can be used to display an LGA map in infoboxes where {{para|lga}} cannot be set.{{pb}}'''Prerequisite parameters:''' * <code>coordinates</code> | Name of the alternative map ([[:Category:Australia location map modules]] includes all available maps) |- ! scope="row" | relief | all | Forces relief-style map, if available | '''Prerequisite parameters:''' * <code>coordinates</code> | <code>yes</code> to force relief-style map, or leave blank<!-- Anything in this parameter will force the relief map to be used. For consistency though, let's force people to use something simple and obvious. --> |- ! scope="row" | pushpin_map_caption | all | The caption on the pushpin (the location of the coordinates) | '''Prerequisite parameters:''' * <code>coordinates</code> | Plain text or wikitext |- ! scope="row" | pushpin_label_position | all | Position of the pushpin's caption, in relation to the pushpin | '''Prerequisite parameters:''' * <code>coordinates</code> | <code>left</code>, <code>right</code>, <code>top</code>, <code>bottom</code>{{pb}}If this is not set, the default is <code>left</code> |} ==== Locator map generated by wikidata ==== A second map can be generated using pre-defined [[wikidata]]. This can either replace, or be in addition to, the map generated by the <code>|coordinates=</code> parameter. It will display below the {{slink||Locator map generated by coordinates}} map. {| class="wikitable plainrowheaders" style="background-color: white; width:100%;" |+ [[Wikidata]]-generated map ! scope="col" style="background-color: whitesmoke;" | Parameter ! scope="col" style="background-color: whitesmoke;" | Available for {{para|type}} ! scope="col" style="background-color: whitesmoke;" | Description ! scope="col" style="background-color: whitesmoke;" | Notes ! scope="col" style="background-color: whitesmoke;" | Values |- ! scope="row" | local_map | all | Enable map of local area, as defined by wikidata | This map will display below the map generated by <code><nowiki>|</nowiki>coordinates=</code> if that map is also present. For the map to display properly, the current location must be connected to a [[wikidata]] entry and a map border must have been created on [[OpenStreetMap]]. | <code>yes</code> will display the map |- ! scope="row" | zoom | all | Change zoom size of local_map | For more information, see {{tl|Infobox mapframe}} instructions.{{pb}}'''Prerequisite parameters:''' * <code>local_map</code> | Numeric value between <code>1</code> and <code>18</code>. If left blank, zoom size defaults to <code>10</code>. |- ! scope="row" | local_map_id | all{{pb}}(recommended for other) | Wikidata ID for the location, if the infobox is on an article that does not connect to the location's wikidata entry | Search [https://www.wikidata.org Wikidata] for an ID{{pb}}'''Prerequisite parameters:''' * <code>local_map</code> | An unlinked wikidata ID, e.g. <code>Q595259</code> for [[Raymond Terrace]]. The ID will begin with "Q". |} == Notes == ===IUCN categories for protected areas=== Depending on the value given for {{para|iucn_category}}, one of the following banners will be displayed below the name. Valid values are Ia, Ib, II, III, IV, V and VI. For more information read the [[IUCN protected area categories]] article. {| style="border:1px solid gray; width:300px; font-size: 90%; text-align: center; line-height: 1.5;" |- | {{IUCN banner|Ia}} |- | {{IUCN banner|Ib}} |- | {{IUCN banner|II}} |- | {{IUCN banner|III}} |- | {{IUCN banner|IV}} |- | {{IUCN banner|V}} |- | {{IUCN banner|VI}} |} <section begin=image_upright /> === Calculating "image_upright" === The <code>image_upright</code> parameter, and <code>image2_upright</code> and <code>logo_upright</code> where applicable, is/are provided so as to facilitate the use of scalable images in this infobox, in accordance with the instructions at [[WP:IMAGESIZE]], which advises against the use of "px" (for example: <code>thumb|300px</code>), as this forces a fixed image width. Scalable images respect the user's base preference, which may have been selected for that user's particular devices. [[Module:InfoboxImage]], which is used in this infobox, accommodates the use of scaling. However, setting the appropriate scale is slightly more complex than setting a raw "px" value. This guide provides a quick conversion table to make the process of setting a scale easier. It is based on a default thumbnail setting of 220px. <!-- This is not a real sentence in any way: (size is default multiplied by upright value then rounded to nearest 10) --> {{div col|colwidth=20em}} {{startplainlist}} * <code><nowiki>170px</nowiki></code> &rarr; <code><nowiki>upright=0.75</nowiki></code> * <code><nowiki>180px</nowiki></code> &rarr; <code><nowiki>upright=0.8</nowiki></code> * <code><nowiki>190px</nowiki></code> &rarr; <code><nowiki>upright=0.85</nowiki></code> * <code><nowiki>200px</nowiki></code> &rarr; <code><nowiki>upright=0.9</nowiki></code> * <code><nowiki>210px</nowiki></code> &rarr; <code><nowiki>upright=0.95</nowiki></code> * <code><nowiki>220px</nowiki></code> &rarr; <code><nowiki>upright=1</nowiki></code> * <code><nowiki>230px</nowiki></code> &rarr; <code><nowiki>upright=1.05</nowiki></code> * <code><nowiki>240px</nowiki></code> &rarr; <code><nowiki>upright=1.1</nowiki></code> * <code><nowiki>250px</nowiki></code> &rarr; <code><nowiki>upright=1.15</nowiki></code> * <code><nowiki>260px</nowiki></code> &rarr; <code><nowiki>upright=1.2</nowiki></code> * <code><nowiki>270px</nowiki></code> &rarr; <code><nowiki>upright=1.23</nowiki></code> * <code><nowiki>280px</nowiki></code> &rarr; <code><nowiki>upright=1.25</nowiki></code> * <code><nowiki>290px</nowiki></code> &rarr; <code><nowiki>upright=1.3</nowiki></code> * <code><nowiki>300px</nowiki></code> &rarr; <code><nowiki>upright=1.35</nowiki></code> {{endplainlist}} {{div col end}}<section end=image_upright /> === Footnote and reference parameters === Any references to support a parameter reserved solely for a numeric value should be placed within the respective {{para|..._footnotes}} or {{para|..._ref}} parameters. For example, place the reference used for the area of City X in the {{para|area_footnotes}} parameters and not in the {{para|area}} parameter. Otherwise, an error may result. === Unformatted numbers and expression errors === Certain parameters require numeric values to be entered in an unformatted/raw fashion—i.e. 1000.0 ''not'' 1,000.0. If an expression error is present, simply remove any commas or spaces from the number. <!-- === Maps === For some locations this infobox supports the display of links to the popular web mapping services Google and Bing. However, in order for this to function a valid map page containing a [[Keyhole Markup Language|KML]] format map must exist. As KML files cannot currently be uploaded, the text of those files must be copied into a Wikipedia page. By default, the infobox uses a file name with the same title as the article at the location <code>Template:Infobox Australian place/mapdata/<place name></code> e.g. [[Raymond Terrace, New South Wales]] uses [[Template:Infobox Australian place/mapdata/Raymond Terrace, New South Wales]]. A list of currently available maps may be found [[Template:Infobox Australian place/mapdata|here]]. --> === Dist#, Dir# and Location# === This is the distance and approximate direction to another location. The '#' is replaced with a number between 1 and 5. Therefore, five locations can be listed, using {{para|location1}} through {{para|location5}}. The distances can be listed using {{para|dist1}} through {{para|dist5}}. Direction from the locations is optional, and can be specified using {{para|dir1}} through {{para|dir5}}. === Population from Wikidata {{anchor|PopulationFromWikidata}} === If the {{para|pop}} parameter is left empty or not supplied, the template will attempt to retrieve population data from Wikidata. For more information, see the documentation of [[Module:PopulationFromWikidata]]. This is a new feature as of June 2022 (to coincide with the release of the 2021 Australian Census data). Please report any feedback to [[Template talk:Infobox Australian place]]. == Where to find information == * [[Wikipedia:WikiProject Australian places#Useful Resources]] * [http://www.abs.gov.au/ Australian Bureau of Statistics] * [http://alga.asn.au/?ID=7030&Menu=56,199,415 LGA links for each state] * [http://www.bom.gov.au/climate/data/ Climate Data Online at the Bureau of Meteorology] == Tracking categories == * {{Category link with count|Australian place articles using Wikidata population values}} – articles that display population values from Wikidata, rather than directly via the {{para|pop}} parameter. === Deprecated parameters === * {{Category link with count|Australian place articles using missing parameters}} – articles that include deprecated parameters are automatically added. As of 5 April 2016, the tracked parameters are {{para|imagesize}}, {{para|image2size}}, {{para|imagesize2}}, {{para|image_alt2}}, {{para|logosize}} and {{para|official_site}}. === Errors === * {{Category link with count|Australian place articles using missing parameters}} – articles that contain general errors are automatically added. * {{Category link with count|Australian place articles with no population year}} – articles missing {{para|pop_year}} or {{para|pop2_year}} parameters are automatically added. * {{Category link with count|Australian place articles with no population footnotes}} – articles missing {{para|pop_footnotes}} or {{para|pop2_footnotes}} parameters are automatically added. * {{Category link with count|Australian place articles with density errors}} * {{Category link with count|Pages using infobox Australian place with unknown parameters}} – articles using parameters that are not included in the infobox. This category may include articles with incorrectly spelled parameters. === Temporary === * {{Category link with count|Pages using infobox Australian place with non-lga type and suppressed location map}} * {{Category link with count|Pages using infobox Australian place with lga type and location map}} * {{Category link with count|Pages using infobox Australian place with an implicitly suppressed location map}} * {{Category link with count|Pages using infobox Australian place with an explicitly suppressed location map}} == Subpages == : [[Template:Infobox Australian place]] : [[Template:Infobox Australian place/Blank]] : [[Template:Infobox Australian place/Examples]] : [[Template:Infobox Australian place/doc]]<!-- : [[Template:Infobox Australian place/KML]] --> : [[Template:Infobox Australian place/sandbox]] : [[Template:Infobox Australian place/sandbox/doc]] : [[Template:Infobox Australian place/testcases]] <!-- All subpages {{Special:PrefixIndex/Template:Infobox Australian place}} --> == Microformat == {{UF-hcard-geo}} == TemplateData == {{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <templatedata> { "description": "Display information about a place in Australia in a standard infobox format.", "params": { "type": { "label": "Type", "description": "The type of place, which determines the look of the infobox. Can be empty or one of the following: 'city', 'suburb', 'town', 'lga', 'region', or 'cadastral'.", "type": "string", "required": false, "suggestedvalues": [ "city", "suburb", "town", "lga", "region", "cadastral", "protected", "other" ] }, "name": { "label": "Name", "description": "The name of the place. If this parameter is left empty, the infobox title will be blank, while if this parameter is not called at all, it defaults to the name of the article.", "type": "string", "required": false }, "city": { "label": "City", "description": "The name of the city the place is located in, which is automatically wikilinked.", "type": "string", "required": false }, "state": { "label": "State Abbreviation", "description": "The abbreviation for the state the place in located in, which can be uppercase or lowercase.", "type": "string", "required": false, "suggestedvalues": [ "sa", "vic", "nsw", "qld", "nt", "wa", "tas", "act", "jbt", "ni", "au" ] }, "image": { "label": "Image", "description": "A filename for a generic image of the locality.", "type": "string", "required": false }, "image_upright": { "label": "Image Width", "description": "Override the default width of the image, scalable.", "type": "number", "required": false }, "caption": { "label": "Caption", "description": "A caption for the image.", "type": "string", "required": false }, "image_alt": { "label": "Image Alt Text", "description": "Alt text for the image.", "type": "string", "required": false }, "image2": { "label": "Image 2", "description": "A filename for a second image of the locality. Usually used for maps, especially in LGA articles.", "type": "string", "required": false }, "image2_upright": { "label": "Image 2 Width", "description": "Override the default width of the second image, scalable.", "type": "number", "required": false }, "caption2": { "label": "Image 2 Caption", "description": "A caption for the second image.", "type": "string", "required": false }, "image2_alt": { "label": "Image 2 Alt Text", "description": "Alt text for the second image.", "type": "string", "required": false }, "coordinates": { "label": "Coordinates", "description": "Coordinates of the locality. Use {{coord}} with 'display=inlines,title'. Please don't be overly precise.", "type": "string", "required": false }, "alternative_location_map": { "label": "Locator Map Alternative Map File", "description": "Forces the locator map to use this alternative map instead of the default state map.", "type": "wiki-file-name", "required": false }, "force_national_map": { "label": "Locator Map Set to National Map", "description": "Set to 'yes' to force the locator map to use the Australian map instead of the default state map.", "type": "string", "required": false, "example": "yes", "default": "no", "suggestedvalues": [ "yes", "no" ] }, "use_lga_map": { "label": "Locator Map Set to LGA Map", "description": "Set to 'yes' to force the locator map to use the LGA map instead of the default state one.", "type": "string", "required": false, "example": "yes", "default": "no", "suggestedvalues": [ "yes", "no" ] }, "relief": { "label": "Locator Map Set to Relief Map", "description": "Set to 'yes' to make the locator map use a relief map.", "type": "string", "required": false, "example": "yes", "default": "no", "suggestedvalues": [ "yes", "no" ] }, "pushpin_map_caption": { "label": "Locator Map Pushpin Caption", "description": "The caption for the locator map's pushpin.", "type": "string", "required": false, "example": "Testville Testplace", "default": "value of the 'name' parameter" }, "pushpin_label_position": { "label": "Locator Map Pushpin Label Position", "description": "Where the caption should appear relative to the locator map's pushpin.", "type": "string", "default": "right", "required": false, "example": "top", "suggestedvalues": [ "left", "right", "top", "bottom" ] }, "map_alt": { "label": "Locator Map Alternative Text", "description": "Alternative text for the locator map.", "type": "string", "required": false }, "pop": { "label": "Population", "description": "The total population of the place. If left empty, population data will be displayed from Wikidata (for appropriate geography).", "type": "number", "required": false }, "pop_year": { "label": "Population Year", "description": "The year in which the population measurement was taken. {{CensusAU}} may be used.", "type": "number", "required": false }, "pop_footnotes": { "label": "Population Footnotes", "description": "Footnotes for the population figure. Please use references here.", "type": "string", "required": false }, "pop2": { "label": "Population 2", "description": "A second total population measurement.", "type": "number", "required": false }, "pop2_year": { "label": "Population 2 Year", "description": "The year in which the second population measurement was taken. {{CensusAU}} may be used.", "type": "number", "required": false }, "pop2_footnotes": { "label": "Population 2 Footnotes", "description": "Footnotes for the second population figure. Please use references here.", "type": "string", "required": false }, "poprank": { "label": "Population Rank", "description": "Only for cities. The total population rank of the city.", "type": "number", "required": false }, "density": { "label": "Population Density", "description": "The population density of the place.", "type": "number", "required": false }, "density_footnotes": { "label": "Population Density Footnotes", "description": "Footnotes for the population density figure. Please use references here.", "type": "string", "required": false }, "established": { "aliases": [ "est" ], "label": "Established", "description": "The date the place was established.", "type": "string", "required": false }, "abolished": { "label": "Abolished", "description": "The date the place was abolished.", "type": "string", "required": false }, "gazetted": { "label": "Gazetted", "description": "The date the place was gazetted.", "type": "string", "required": false }, "postcode": { "label": "Postcode", "description": "The postcode of the place.", "type": "number", "required": false }, "elevation": { "label": "Elevation", "description": "Elevation of the place above sea level in metres.", "type": "number", "required": false }, "elevation_footnotes": { "label": "Elevation Footnotes", "description": "Footnotes for the elevation figure.", "type": "string", "required": false }, "area": { "label": "Area", "description": "Area of the place in square kilometres.", "type": "number", "required": false }, "area_footnotes": { "label": "Area Footnotes", "description": "Footnotes for the area figure.", "type": "string", "required": false }, "timezone": { "label": "Time Zone", "description": "The time zone the place is located in.", "type": "string", "required": false }, "utc": { "label": "UTC Time", "description": "The difference between UTC time and the time zone the place resides in, in the format '+' followed by a number.", "type": "string", "required": false }, "timezone-dst": { "label": "Summer Time Zone (DST)", "description": "The summer time zone the place is located in.", "type": "string", "required": false }, "utc-dst": { "label": "Summer UTC Time (DST)", "description": "The difference between UTC time and the time zone the place resides in in the summer, in the format '+' followed by a number.", "type": "string", "required": false }, "mayor": { "label": "Mayor", "description": "LGA only. The name of the mayor of the LGA.", "type": "string", "required": false }, "mayortitle": { "label": "Mayor Title", "description": "LGA only. The title of the mayor of the LGA. Defaults to 'Mayor'.", "type": "string", "required": false }, "dist1": { "label": "Distance 1", "description": "The distance by road in kilometres from location 1 to the place.", "type": "number", "required": false }, "dir1": { "label": "Direction 1", "description": "The compass direction from location 1 to the place. Examples are 'NW', 'E', and 'SSE'.", "type": "string", "required": false }, "location1": { "label": "Location 1", "description": "Another location to compare with this one.", "type": "string", "required": false }, "dist2": { "label": "Distance 2", "description": "The distance by road in kilometres from location 2 to the place.", "type": "number", "required": false }, "dir2": { "label": "Direction 2", "description": "The compass direction from location 2 to the place. Examples are 'NW', 'E', and 'SSE'.", "type": "string", "required": false }, "location2": { "label": "Location 2", "description": "Another location to compare with this one.", "type": "string", "required": false }, "dist3": { "label": "Distance 3", "description": "The distance by road in kilometres from location 3 to the place.", "type": "number", "required": false }, "dir3": { "label": "Direction 3", "description": "The compass direction from location 3 to the place. Examples are 'NW', 'E', and 'SSE'.", "type": "string", "required": false }, "location3": { "label": "Location 3", "description": "Another location to compare with this one.", "type": "string", "required": false }, "dist4": { "label": "Distance 4", "description": "The distance by road in kilometres from location 4 to the place.", "type": "number", "required": false }, "dir4": { "label": "Direction 4", "description": "The compass direction from location 4 to the place. Examples are 'NW', 'E', and 'SSE'.", "type": "string", "required": false }, "location4": { "label": "Location 4", "description": "Another location to compare with this one.", "type": "string", "required": false }, "dist5": { "label": "Distance 5", "description": "The distance by road in kilometres from location 5 to the place.", "type": "number", "required": false }, "dir5": { "label": "Direction 5", "description": "The compass direction from location 5 to the place. Examples are 'NW', 'E', and 'SSE'.", "type": "string", "required": false }, "location5": { "label": "Location 5", "description": "Another location to compare with this one.", "type": "string", "required": false }, "lga": { "label": "Local Government Area (LGA)", "description": "The name of the local government area of the place.", "type": "string", "required": false }, "lga2": { "label": "Local Government Area (LGA) 2", "description": "Another local government area of the place.", "type": "string", "required": false }, "lga3": { "label": "Local Government Area (LGA) 3", "description": "Another local government area of the place.", "type": "string", "required": false }, "lga4": { "label": "Local Government Area (LGA) 4", "description": "Another local government area of the place.", "type": "string", "required": false }, "lga5": { "label": "Local Government Area (LGA) 5", "description": "Another local government area of the place.", "type": "string", "required": false }, "seat": { "label": "Local Government Area (LGA) Seat", "description": "The local government area's seat of government.", "type": "string", "required": false }, "region": { "label": "Region", "description": "The region the LGA is in.", "type": "string", "required": false }, "county": { "label": "County", "description": "The county the place is in.", "type": "string", "required": false }, "parish": { "label": "Parish", "description": "The parish the place is in.", "type": "string", "required": false }, "hundred": { "label": "Hundred", "description": "The hundred the place is in.", "type": "string", "required": false }, "former_hundred": { "label": "Former Hundred", "description": "The former hundred the place is in.", "type": "string", "required": false }, "division": { "label": "Division", "description": "The division the place is in.", "type": "string", "required": false }, "localgov": { "label": "Local Government", "description": "The local government electorate of the place.", "type": "string", "required": false }, "stategov": { "label": "State Government", "description": "The state government electorate of the place.", "type": "string", "required": false }, "stategov2": { "label": "State Government 2", "description": "Another state government electorate of the place.", "type": "string", "required": false }, "stategov3": { "label": "State Government 3", "description": "Another state government electorate of the place.", "type": "string", "required": false }, "stategov4": { "label": "State Government 4", "description": "Another state government electorate of the place.", "type": "string", "required": false }, "stategov5": { "label": "State Government 5", "description": "Another state government electorate of the place.", "type": "string", "required": false }, "fedgov": { "label": "Federal Government", "description": "The federal government electorate of the place.", "type": "string", "required": false }, "fedgov2": { "label": "Federal Government 2", "description": "Another federal government electorate of the place.", "type": "string", "required": false }, "fedgov3": { "label": "Federal Government 3", "description": "Another federal government electorate of the place.", "type": "string", "required": false }, "fedgov4": { "label": "Federal Government 4", "description": "Another federal government electorate of the place.", "type": "string", "required": false }, "logo": { "label": "LGA Logo", "description": "A filename for the logo, if any, of the place's LGA.", "type": "string", "required": false }, "logosize": { "label": "LGA Logo Size", "description": "Override the default width of the LGA logo, which is 175px.", "type": "number", "required": false }, "url": { "label": "LGA URL", "description": "The bare URL for the place's LGA's website.", "type": "string", "required": false }, "maxtemp": { "label": "Maximum Temperature", "description": "The maximum average annual temperature of the place in degrees Celsius.", "type": "number", "required": false }, "maxtemp_footnotes": { "label": "Maximum Temperature Footnotes", "description": "Footnotes for the maximum temperature figure. Please use references here.", "type": "string", "required": false }, "mintemp": { "label": "Minimum Temperature", "description": "The minimum average annual temperature of the place in degrees Celsius.", "type": "number", "required": false }, "mintemp_footnotes": { "label": "Minimum Temperature Footnotes", "description": "Footnotes for the minimum temperature figure. Please use references here.", "type": "string", "required": false }, "rainfall": { "label": "Rainfall", "description": "The average annual rainfall of the place in millimetres.", "type": "number", "required": false }, "rainfall_footnotes": { "label": "Rainfall Footnotes", "description": "Footnotes for the rainfall figure.", "type": "string", "required": false }, "near": { "label": "Central Near Grid", "description": "Replace the default text in the center of the 'Near' grid (the name of the place).", "type": "string", "required": false }, "near-n": { "label": "North Near Grid", "description": "The nearest neighbour of the place to the north.", "type": "string", "required": false }, "near-ne": { "label": "Northeast Near Grid", "description": "The nearest neighbour of the place to the northeast.", "type": "string", "required": false }, "near-e": { "label": "East Near Grid", "description": "The nearest neighbour of the place to the east.", "type": "string", "required": false }, "near-se": { "label": "Southeast Near Grid", "description": "The nearest neighbour of the place to the southeast.", "type": "string", "required": false }, "near-s": { "label": "South Near Grid", "description": "The nearest neighbour of the place to the south.", "type": "string", "required": false }, "near-sw": { "label": "Southwest Near Grid", "description": "The nearest neighbour of the place to the southwest.", "type": "string", "required": false }, "near-w": { "label": "West Near Grid", "description": "The nearest neighbour of the place to the west.", "type": "string", "required": false }, "near-nw": { "label": "Northwest Near Grid", "description": "The nearest neighbour of the place to the northwest.", "type": "string", "required": false }, "native_name": { "label": "Native name", "description": "Name in the local language if different to 'name'.", "type": "line" }, "native_name_lang": { "label": "Native name language", "description": "ISO 639-1 code for the native language, e.g. \"fr\" for French.", "type": "string" }, "local_map": { "label": "Local Map Enabled", "description": "Set to 'yes' to display an additional map showing the OpenStreetMap relation from the related Wikidata item. If no OpenStreetMap relation is specified, a point is shown from the coordinates of the related Wikidata item instead. This additional map is typically useful for showing the boundaries of area features such as administrative regions and national parks, or showing the extent of linear features such as roads and railways.", "example": "yes", "type": "string", "default": "no", "suggested": true, "suggestedvalues": [ "yes", "no" ] }, "zoom": { "label": "Local Map Zoom Level", "description": "Defines a zoom level for the local map between level 1 (whole world) to 18 (smallest area). Most common zoom levels are between 7 (a large national park) and 13 (a school campus). If this field is not specified, the local map guesses a zoom level however the guess is typically not suitable.", "example": "10", "type": "number", "suggestedvalues": [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18" ], "default": "10", "suggested": true }, "local_map_id": { "label": "Local Map Wikidata Item ID", "description": "A manually selected Wikidata Item (QID) from which an OpenStreetMap Relation will be extracted for display on the local map. If this value is blank (default), the Wikidata Item associated with the page using this template will be used.", "example": "Q402", "type": "string" } }, "paramOrder": [ "type", "name", "city", "state", "image", "image_upright", "caption", "image_alt", "image2", "image2_upright", "caption2", "image2_alt", "coordinates", "alternative_location_map", "force_national_map", "use_lga_map", "relief", "pushpin_map_caption", "pushpin_label_position", "map_alt", "local_map", "zoom", "local_map_id", "pop", "pop_year", "pop_footnotes", "pop2", "pop2_year", "pop2_footnotes", "poprank", "density", "density_footnotes", "established", "abolished", "gazetted", "postcode", "elevation", "elevation_footnotes", "area", "area_footnotes", "timezone", "utc", "timezone-dst", "utc-dst", "mayor", "mayortitle", "dist1", "dir1", "location1", "dist2", "dir2", "location2", "dist3", "dir3", "location3", "dist4", "dir4", "location4", "dist5", "dir5", "location5", "lga", "lga2", "lga3", "lga4", "lga5", "seat", "region", "county", "parish", "hundred", "former_hundred", "division", "localgov", "stategov", "stategov2", "stategov3", "stategov4", "stategov5", "fedgov", "fedgov2", "fedgov3", "fedgov4", "logo", "logosize", "url", "maxtemp", "maxtemp_footnotes", "mintemp", "mintemp_footnotes", "rainfall", "rainfall_footnotes", "near", "near-n", "near-ne", "near-e", "near-se", "near-s", "near-sw", "near-w", "near-nw", "native_name", "native_name_lang" ] } </templatedata> {{Collapse bottom}} <includeonly>{{Sandbox other| | <!-- Categories below this line, please; interwikis at Wikidata --> {{DEFAULTSORT:Australian Place}} [[Category:Australia place infobox templates|Place]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> d32b4fce289c979249afae747ae78d34bcffb3b5 Module:Person height 828 181 415 2023-07-03T19:22:01Z wikipedia>Frietjes 0 fix for leading zero Scribunto text/plain -- This module implements [[Template:Infobox person/height]] local p = {} local function splitsuffix(s) local suffix = '' if mw.ustring.match(s,'^(.-)(<sup.*)$') then local a = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%1') local b = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%2') s = a suffix = b .. suffix end if mw.ustring.match(s,'^(.-)(%[%[[Cc]ategory:.*)$') then local a = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%1') local b = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%2') s = a suffix = b .. suffix end return s, suffix end local function clean(s) s = mw.ustring.gsub(s, '[Mm]etre', 'm') s = mw.ustring.gsub(s, '([^a])meter', '%1m') -- prevents "parameter" from being changed to "param" s = mw.ustring.gsub(s, '[Cc]enti', 'c') -- changes "centim" to "cm" s = mw.ustring.gsub(s, 'ms', 'm') s = mw.ustring.gsub(s, 'm[%.,]', 'm') s = mw.ustring.gsub(s, '[Ff]eet', 'ft') s = mw.ustring.gsub(s, 'foot', 'ft') s = mw.ustring.gsub(s, 'ft[%.,]', 'ft') s = mw.ustring.gsub(s, '[Ii]nches', 'in') s = mw.ustring.gsub(s, '[Ii]nch', 'in') s = mw.ustring.gsub(s, 'ins', 'in') s = mw.ustring.gsub(s, 'in[%.,]', 'in') s = mw.ustring.gsub(s, '%[%[[Mm]%]%]s', '[[Metre|m]]') s = mw.ustring.gsub(s, '%[%[[Mm]|[Mm]%]%]', '[[Metre|m]]') s = mw.ustring.gsub(s, '%[%[[Cc]m%]%]s', '[[Centimetre|cm]]') s = mw.ustring.gsub(s, '%[%[[Cc]m|[Cc]m%]%]', '[[Centimetre|cm]]') s = mw.ustring.gsub(s, '%[%[[Cc]entim|cm%]%]', '[[Centimetre|cm]]') s = mw.ustring.gsub(s, '%[%[[Ii]n|in%]%]', '[[inch|in]]') s = mw.ustring.gsub(s, '(%d)%s+[Cc][Mm]', '%1&nbsp;cm') s = mw.ustring.gsub(s, '(%d)%s+[Mm]', '%1&nbsp;m') s = mw.ustring.gsub(s, '(%d)%s+[Ff][Tt]', '%1&nbsp;ft') s = mw.ustring.gsub(s, '(%d)%s+[Ii][Nn]', '%1&nbsp;in') s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Cc][Mm]', '%1cm') s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Mm]', '%1m') s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ff][Tt]', '%1ft') s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ii][Nn]', '%1in') s = mw.ustring.gsub(s, '(%d)%s*[′\']%s*([%d]%d*)%s*[\"″]', '%1 ft %2 in') return s end local function isnumber(s) if s then s = mw.ustring.gsub(s, '%+%s*%d+%s*/%s*%d+%s*$', '') s = mw.ustring.gsub(s, '%s*1%s*/%s*2%s*$', '0.5') return tonumber(s) end return nil end local function trimspace(s) if s then s = mw.ustring.gsub(s, '^%s*(.-)%s*$', '%1') end return s end local function force_unit(s, t) s = mw.ustring.gsub(s, '&[Nn][Bb][Ss][Pp];', '★') if (t == 'cm') then s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)m', '%1%2.%3cm') s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2.%3[[centimetre|cm]]') s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)m', '%1%2%3cm') s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2%3[[centimetre|cm]]') s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)m', '%1%20%3cm') s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%20%3[[centimetre|cm]]') s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)m', '%100.%2cm') s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100.%2[[centimetre|cm]]') s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)m', '%100%2cm') s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)m', '%100%2cm') s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]') s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]') s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+cm)', '%1') s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+%[%[[Cc]entimet[re][re]|cm%]%])', '%1') else s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)cm', '%1.%2%3m') s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]') s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)cm', '%1.%2%3m') s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]') s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)cm', '0.%1%2m') s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]') s = mw.ustring.gsub(s, '(%d%d)([★%s]+)cm', '0.%1%2m') s = mw.ustring.gsub(s, '(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]') end s = mw.ustring.gsub(s, '★', '&nbsp;') return s end local function get_convert_args(s, prefer, enforce, ri) local prefer_m = (prefer or '') == 'm' local force_m = (enforce or '') == 'm' local prefer_cm = (prefer or '') == 'cm' local force_cm = (enforce or '') == 'cm' ri = (ri or '') == 'cmin' and 'cmin' or '' unconverted = clean(s or '') -- basic unit cleaning s = mw.ustring.gsub(unconverted, '&[Nn][Bb][Ss][Pp];', ' ') local m = mw.ustring.find(s, 'm') local c = mw.ustring.find(s, 'cm') local f = mw.ustring.find(s, 'ft') local i = mw.ustring.find(s, 'in') if m == nil and f == nil and i == nil then return '', unconverted end local adj = nil if c ~= nil and f == nil and i == nil then local n = mw.ustring.sub(s, 1, c - 1) if isnumber(n) then if force_m then local prec = require("Module:Math")._precision(trimspace(n)) adj = (prec == 1) and 'ri3' or 'ri2' end if ri ~= '' then adj = force_m and 'ri2' or 'ri0' end return force_m and {n/100,'m','ftin',0,['abbr']='on', ['adj']=adj} or {n,'cm','ftin',0,['abbr']='on', ['adj']=adj}, mw.ustring.sub(s, c+2) end return '', unconverted end if m ~= nil and c == nil and f == nil and i == nil then local n = mw.ustring.sub(s, 1, m - 1) if ri ~= '' then adj = force_cm and 'ri0' or 'ri2' end if isnumber(n) then return force_cm and {n*100,'cm','ftin',0,['abbr']='on',['adj']=adj} or {n,'m','ftin',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, m+1) end return '', unconverted end if f ~= nil and i ~=nil and m == nil then local n1 = mw.ustring.sub(s, 1, f - 1) local n2 = mw.ustring.sub(s, f+2, i - 1) if isnumber(n1) and isnumber(n2) then if ri ~= '' then adj = 'ri0' end return (force_m or prefer_m) and {n1,'ft',n2,'in', 'm',2,['abbr']='on',['adj']=adj} or {n1,'ft',n2,'in', 'cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, i+2) end return '', unconverted end if f ~= nil and i == nil and m == nil then local n = mw.ustring.sub(s, 1, f - 1) if isnumber(n) then if ri ~= '' then local n2 = 12*(n - math.floor(n)) adj = 'ri0' return (force_m or prefer_m) and {math.floor(n),'ft',n2, 'in','m',2,['abbr']='on',['adj']=adj} or {math.floor(n),'ft',n2,'in','cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, f+2) end return (force_m or prefer_m) and {n,'ft','m',2,['abbr']='on'} or {n,'ft','cm',0,['abbr']='on'}, mw.ustring.sub(s, f+2) end return '', unconverted end if i ~= nil and f == nil and m == nil then local n = mw.ustring.sub(s, 1, i - 1) if isnumber(n) then if ri ~= '' then adj = 'ri0' end return (force_m or prefer_m) and {n,'in','m',2,['abbr']='on'} or {n,'in','cm',0,['abbr']='on'}, mw.ustring.sub(s, i+2) end return '', unconverted end if force_cm and c == nil then return '', force_unit(unconverted, 'cm') end if force_m and c ~= nil then return '', force_unit(unconverted, 'm') end return '', unconverted end function convert(frame, args) local str, suffix = splitsuffix(args[1] or '') local targs, str = get_convert_args(str, args['prefer'] or '', args['enforce'] or '', args['ri'] or '') str = str .. suffix if type(targs) == 'table' then return frame:expandTemplate{ title = 'convert', args = targs} .. str else return str end end function p.main(frame) return convert(frame, frame.args[1] and frame.args or frame:getParent().args) end return p eae45d697c1881086eab11f622b4400e5c177c63 Template:Blockquote 10 872 1934 2023-07-04T03:35:03Z wikipedia>SMcCandlish 0 Changing thin-space to hair space per talk page request and MoS wikitext text/x-wiki <templatestyles src="Template:Blockquote/styles.css" /><!-- --><blockquote class="templatequote {{{class|}}}" {{#if:{{{style|}}}|style="{{{style}}}"}}>{{{text|{{{content|{{{quotetext|{{{quote|{{{1|<includeonly>{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}{{main other|[[Category:Pages incorrectly using the quote template]]}}</includeonly><noinclude>{{lorem ipsum}}</noinclude>}}}}}}}}}}}}}}}{{#if:{{{sign|}}}{{{cite|}}}{{{author|}}}{{{by|}}}{{{personquoted|}}}{{{source|}}}{{{ts|}}}{{{title|}}}{{{publication|}}}{{{quotesource|}}}{{{char|}}}{{{character|}}}{{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}|{{#if:{{{multiline|}}}|<nowiki />}} <div class="templatequotecite">—&#8202;<cite>{{#if:{{{char|{{{character|{{{5|}}}}}}}}}|{{{char|{{{character|{{{5|}}}}}}}}}, in&#32;}}{{Comma separated entries | {{if empty|{{{sign|}}}|{{{cite|}}}|{{{author|}}}|{{{by|}}}|{{{personquoted|}}}|{{{2|}}}}} | {{if empty|{{{title|}}}|{{{publication|}}}|{{{ts|}}}|{{{quotesource|}}}|{{{3|}}}}} | {{if empty|{{{source|}}}|{{{4|}}}}} }}</cite></div> }}</blockquote>{{#if:{{{id|}}}{{{diff|}}}{{{4|}}}{{{5|}}}|{{main other|[[Category:Pages incorrectly using the Blockquote template]]}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Blockquote template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Blockquote]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | author | by | char | character | cite | class | content | diff | id | multiline | personquoted | publication | quote | quotesource | quotetext | sign | source | style | text | title | ts }}<noinclude> {{documentation}}<!-- Add categories to the /doc subpage, not here! --> </noinclude> c632821e7bef1789e3468f7b0c68e29a93f72a62 Module:Location map 828 1395 2730 2023-07-04T08:09:33Z w>TheDJ 0 Avoid resizing on mobile skin and make scrollable instead Scribunto text/plain require('strict') local p = {} local getArgs = require('Module:Arguments').getArgs local function round(n, decimals) local pow = 10^(decimals or 0) return math.floor(n * pow + 0.5) / pow end function p.getMapParams(map, frame) if not map then error('The name of the location map definition to use must be specified', 2) end local moduletitle = mw.title.new('Module:Location map/data/' .. map) if not moduletitle then error(string.format('%q is not a valid name for a location map definition', map), 2) elseif moduletitle.exists then local mapData = mw.loadData('Module:Location map/data/' .. map) return function(name, params) if name == nil then return 'Module:Location map/data/' .. map elseif mapData[name] == nil then return '' elseif params then return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain() else return mapData[name] end end else error('Unable to find the specified location map definition: "Module:Location map/data/' .. map .. '" does not exist', 2) end end function p.data(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true}) end if not map then map = p.getMapParams(args[1], frame) end local params = {} for k,v in ipairs(args) do if k > 2 then params[k-2] = v end end return map(args[2], #params ~= 0 and params) end local hemisphereMultipliers = { longitude = { W = -1, w = -1, E = 1, e = 1 }, latitude = { S = -1, s = -1, N = 1, n = 1 } } local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction) if decimal then if degrees then error('Decimal and DMS degrees cannot both be provided for ' .. direction, 2) elseif minutes then error('Minutes can only be provided with DMS degrees for ' .. direction, 2) elseif seconds then error('Seconds can only be provided with DMS degrees for ' .. direction, 2) elseif hemisphere then error('A hemisphere can only be provided with DMS degrees for ' .. direction, 2) end local retval = tonumber(decimal) if retval then return retval end error('The value "' .. decimal .. '" provided for ' .. direction .. ' is not valid', 2) elseif seconds and not minutes then error('Seconds were provided for ' .. direction .. ' without minutes also being provided', 2) elseif not degrees then if minutes then error('Minutes were provided for ' .. direction .. ' without degrees also being provided', 2) elseif hemisphere then error('A hemisphere was provided for ' .. direction .. ' without degrees also being provided', 2) end return nil end decimal = tonumber(degrees) if not decimal then error('The degree value "' .. degrees .. '" provided for ' .. direction .. ' is not valid', 2) elseif minutes and not tonumber(minutes) then error('The minute value "' .. minutes .. '" provided for ' .. direction .. ' is not valid', 2) elseif seconds and not tonumber(seconds) then error('The second value "' .. seconds .. '" provided for ' .. direction .. ' is not valid', 2) end decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600 if hemisphere then local multiplier = hemisphereMultipliers[direction][hemisphere] if not multiplier then error('The hemisphere "' .. hemisphere .. '" provided for ' .. direction .. ' is not valid', 2) end decimal = decimal * multiplier end return decimal end -- Finds a parameter in a transclusion of {{Coord}}. local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign local lat, long = mw.ustring.match(coord,'<span class="p%-latitude latitude">([^<]+)</span><span class="p%-longitude longitude">([^<]+)</span>') if lat then return tonumber(para == 'longitude' and long or lat) end local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]') if para == 'longitude' then result = {result[3], result[4]} end if not tonumber(result[1]) or not result[2] then mw.log('Malformed coordinates value') mw.logObject(para, 'para') mw.logObject(coord, 'coord') return error('Malformed coordinates value', 2) end return tonumber(result[1]) * hemisphereMultipliers[para][result[2]] end -- effectively make removeBlanks false for caption and maplink, and true for everything else -- if useWikidata is present but blank, convert it to false instead of nil -- p.top, p.bottom, and their callers need to use this function p.valueFunc(key, value) if value then value = mw.text.trim(value) end if value ~= '' or key == 'caption' or key == 'maplink' then return value elseif key == 'useWikidata' then return false end end local function getContainerImage(args, map) if args.AlternativeMap then return args.AlternativeMap elseif args.relief and map('image1') ~= '' then return map('image1') else return map('image') end end function p.top(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc}) end if not map then map = p.getMapParams(args[1], frame) end local width local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*")) if not args.width then width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1)) elseif mw.ustring.sub(args.width, -2) == 'px' then width = mw.ustring.sub(args.width, 1, -3) else width = args.width end local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0; if width_as_number == 0 then -- check to see if width is junk. If it is, then use default calculation width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1)) width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0; end if args.max_width ~= "" and args.max_width ~= nil then -- check to see if width bigger than max_width local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0; if width_as_number>max_as_number and max_as_number>0 then width = args.max_width; end end local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Module:Location map/styles.css'}} if args.float == 'center' then retval = retval .. '<div class="center">' end if args.caption and args.caption ~= '' and args.border ~= 'infobox' then retval = retval .. '<div class="locmap noviewer noresize thumb ' if args.float == '"left"' or args.float == 'left' then retval = retval .. 'tleft' elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then retval = retval .. 'tnone' else retval = retval .. 'tright' end retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px' if args.border == 'none' then retval = retval .. ';border:none' elseif args.border then retval = retval .. ';border-color:' .. args.border end retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">') else retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;' if args.float == '"left"' or args.float == 'left' then retval = retval .. 'float:left;clear:left' elseif args.float == '"center"' or args.float == 'center' then retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto' elseif args.float == '"none"' or args.float == 'none' then retval = retval .. 'float:none;clear:none' else retval = retval .. 'float:right;clear:right' end retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">' end local image = getContainerImage(args, map) local currentTitle = mw.title.getCurrentTitle() retval = string.format( '%s[[File:%s|%spx|%s%s|class=notpageimage]]', retval, image, width, args.alt or ((args.label or currentTitle.text) .. ' is located in ' .. map('name')), args.maplink and ('|link=' .. args.maplink) or '' ) if args.caption and args.caption ~= '' then if (currentTitle.namespace == 0) and mw.ustring.find(args.caption, '##') then retval = retval .. '[[Category:Pages using location map with a double number sign in the caption]]' end end if args.overlay_image then return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px|class=notpageimage]]</div>' else return retval end end function p.bottom(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc}) end if not map then map = p.getMapParams(args[1], frame) end local retval = '</div>' local currentTitle = mw.title.getCurrentTitle() if not args.caption or args.border == 'infobox' then if args.border then retval = retval .. '<div style="padding-top:0.2em">' else retval = retval .. '<div style="font-size:91%;padding-top:3px">' end retval = retval .. (args.caption or (args.label or currentTitle.text) .. ' (' .. map('name') .. ')') .. '</div>' elseif args.caption ~= '' then -- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '|class=notpageimage| ]]</div>' .. args.caption .. '</div>' end if args.switcherLabel then retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>' elseif args.autoSwitcherLabel then retval = retval .. '<span class="switcher-label" style="display:none">Show map of ' .. map('name') .. '</span>' end retval = retval .. '</div></div>' if args.caption_undefined then mw.log('Removed parameter caption_undefined used.') local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') if currentTitle.namespace == 0 then retval = retval .. '[[Category:Location maps with removed parameters|caption_undefined]]' end end if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then mw.log('Removed parameter used in map definition ' .. map()) if currentTitle.namespace == 0 then local key = (map('skew') ~= '' and 'skew' or '') .. (map('lat_skew') ~= '' and 'lat_skew' or '') .. (map('crosses180') ~= '' and 'crosses180' or '') .. (map('type') ~= '' and 'type' or '') retval = retval .. '[[Category:Location maps with removed parameters|' .. key .. ' ]]' end end if string.find(map('name'), '|', 1, true) then mw.log('Pipe used in name of map definition ' .. map()) if currentTitle.namespace == 0 then retval = retval .. '[[Category:Location maps with a name containing a pipe]]' end end if args.float == 'center' then retval = retval .. '</div>' end return retval end local function markOuterDiv(x, y, imageDiv, labelDiv) return mw.html.create('div') :addClass('od') :cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%') :node(imageDiv) :node(labelDiv) end local function markImageDiv(mark, marksize, label, link, alt, title) local builder = mw.html.create('div') :addClass('id') :cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px') :attr('title', title) if marksize ~= 0 then builder:wikitext(string.format( '[[File:%s|%dx%dpx|%s|link=%s%s|class=notpageimage]]', mark, marksize, marksize, label, link, alt and ('|alt=' .. alt) or '' )) end return builder end local function markLabelDiv(label, label_size, label_width, position, background, x, marksize) if tonumber(label_size) == 0 then return mw.html.create('div'):addClass('l0'):wikitext(label) end local builder = mw.html.create('div') :cssText('font-size:' .. label_size .. '%;width:' .. label_width .. 'em') local distance = round(marksize / 2 + 1) if position == 'top' then -- specified top builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em') elseif position == 'bottom' then -- specified bottom builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em') elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left builder:addClass('pl'):cssText('right:' .. distance .. 'px') else -- specified right or autodetected to right builder:addClass('pr'):cssText('left:' .. distance .. 'px') end builder = builder:tag('div') :wikitext(label) if background then builder:cssText('background-color:' .. background) end return builder:done() end local function getX(longitude, left, right) local width = (right - left) % 360 if width == 0 then width = 360 end local distanceFromLeft = (longitude - left) % 360 -- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter if distanceFromLeft - width / 2 >= 180 then distanceFromLeft = distanceFromLeft - 360 end return 100 * distanceFromLeft / width end local function getY(latitude, top, bottom) return 100 * (top - latitude) / (top - bottom) end function p.mark(frame, args, map) if not args then args = getArgs(frame, {wrappers = 'Template:Location map~'}) end local mapnames = {} if not map then if args[1] then map = {} for mapname in mw.text.gsplit(args[1], '#', true) do map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) mapnames[#mapnames + 1] = mapname end if #map == 1 then map = map[1] end else map = p.getMapParams('World', frame) args[1] = 'World' end end if type(map) == 'table' then local outputs = {} local oldargs = args[1] for k,v in ipairs(map) do args[1] = mapnames[k] outputs[k] = tostring(p.mark(frame, args, v)) end args[1] = oldargs return table.concat(outputs, '#PlaceList#') .. '#PlaceList#' end local x, y, longitude, latitude longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude') latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude') if args.excludefrom then -- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps) for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do -- Check if this map is excluded. If so, return an empty string. if args[1] == exclusionmap then return '' end end end local builder = mw.html.create() local currentTitle = mw.title.getCurrentTitle() if args.coordinates then -- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]] -- if longitude or latitude then -- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided') -- end longitude = coord2text('longitude', args.coordinates) latitude = coord2text('latitude', args.coordinates) elseif not longitude and not latitude and args.useWikidata then -- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't. local entity = mw.wikibase.getEntity() if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then local value = entity.claims.P625[1].mainsnak.datavalue.value longitude, latitude = value.longitude, value.latitude end if args.link and (currentTitle.namespace == 0) then builder:wikitext('[[Category:Location maps with linked markers with coordinates from Wikidata]]') end end if not longitude then error('No value was provided for longitude') elseif not latitude then error('No value was provided for latitude') end if currentTitle.namespace > 0 then if (not args.lon_deg) ~= (not args.lat_deg) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Degrees]]') elseif (not args.lon_min) ~= (not args.lat_min) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Minutes]]') elseif (not args.lon_sec) ~= (not args.lat_sec) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Seconds]]') elseif (not args.lon_dir) ~= (not args.lat_dir) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Hemisphere]]') elseif (not args.long) ~= (not args.lat) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Decimal]]') end end if ((tonumber(args.lat_deg) or 0) < 0) and ((tonumber(args.lat_min) or 0) ~= 0 or (tonumber(args.lat_sec) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='')) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if ((tonumber(args.lon_deg) or 0) < 0) and ((tonumber(args.lon_min) or 0) ~= 0 or (tonumber(args.lon_sec) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '')) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if (((tonumber(args.lat_min) or 0) < 0) or ((tonumber(args.lat_sec) or 0) < 0)) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if (((tonumber(args.lon_min) or 0) < 0) or ((tonumber(args.lon_sec) or 0) < 0)) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if args.skew or args.lon_shift or args.markhigh then mw.log('Removed parameter used in invocation.') local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') if currentTitle.namespace == 0 then local key = (args.skew and 'skew' or '') .. (args.lon_shift and 'lon_shift' or '') .. (args.markhigh and 'markhigh' or '') builder:wikitext('[[Category:Location maps with removed parameters|' .. key ..' ]]') end end if map('x') ~= '' then x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude }))) else x = tonumber(getX(longitude, map('left'), map('right'))) end if map('y') ~= '' then y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude }))) else y = tonumber(getY(latitude, map('top'), map('bottom'))) end if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then mw.log('Mark placed outside map boundaries without outside flag set. x = ' .. x .. ', y = ' .. y) local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') if currentTitle.namespace == 0 then local key = currentTitle.prefixedText builder:wikitext('[[Category:Location maps with marks outside map and outside parameter not set|' .. key .. ' ]]') end end local mark = args.mark or map('mark') if mark == '' then mark = 'Red pog.svg' end local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8 local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2]) local labelDiv if args.label and args.position ~= 'none' then labelDiv = markLabelDiv(args.label, args.label_size or 91, args.label_width or 6, args.position, args.background, x, marksize) end return builder:node(markOuterDiv(x, y, imageDiv, labelDiv)) end local function switcherSeparate(s) if s == nil then return {} end local retval = {} for i in string.gmatch(s .. '#', '([^#]*)#') do i = mw.text.trim(i) retval[#retval + 1] = (i ~= '' and i) end return retval end function p.main(frame, args, map) local caption_list = {} if not args then args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc}) end if args.useWikidata == nil then args.useWikidata = true end if not map then if args[1] then map = {} for mapname in string.gmatch(args[1], '[^#]+') do map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) end if args['caption'] then if args['caption'] == "" then while #caption_list < #map do caption_list[#caption_list + 1] = args['caption'] end else for caption in mw.text.gsplit(args['caption'], '##', true) do caption_list[#caption_list + 1] = caption end end end if #map == 1 then map = map[1] end else map = p.getMapParams('World', frame) end end if type(map) == 'table' then local altmaps = switcherSeparate(args.AlternativeMap) if #altmaps > #map then error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map)) end local overlays = switcherSeparate(args.overlay_image) if #overlays > #map then error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map)) end if #caption_list > #map then error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map)) end local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do args.AlternativeMap = altmaps[k] args.overlay_image = overlays[k] args.caption = caption_list[k] outputs[k] = p.main(frame, args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' else return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map) end end return p 7291f35931f7e18eb3de0e5668f94abf73d34135 Template:Infobox officeholder 10 238 2439 2023-07-05T19:38:25Z w>SWinxy 0 [[Template:DPP]] and [[Template:KMT]] are being transcluded onto ~100k pages, when that isn't necessary (transclusions in articles have been replaced) wikitext text/x-wiki {{#invoke:infobox|infoboxTemplate | bodyclass = vcard {{{bodyclass|}}} | bodystyle = {{#if:{{{mainwidth|}}}|width: {{{mainwidth}}}}} | child = {{lc:{{{embed}}}}} | abovestyle = font-size: 100%; | above = {{#if:{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|}}}}}}}}}|<div class="honorific-prefix" style="font-weight: normal;">{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix}}}}}}}}}</div>}}<!-- --><div class="fn" style="font-size:125%;">{{#if:{{{name|}}}|{{{name}}}|{{PAGENAMEBASE}}}}</div><!-- -->{{#if:{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix|}}}}}}}}}|<div class="honorific-suffix" style="font-weight: normal;">{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix}}}}}}}}}</div>}} | subheaderstyle = font-size:125%; font-weight:bold; | subheader = {{#ifeq:{{lc:{{{embed}}}}}|yes||{{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name}}}{{#if:{{{native_name_lang|}}}|</div>}}}}}} | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{width|{{{imagesize|{{{image_size|}}}}}}}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{alt|}}}|suppressplaceholder=yes}} | image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image name|}}}|size={{{width|{{{imagesize|{{{image_size|}}}}}}}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{image_name_alt|}}}|suppressplaceholder=yes}} | image3 = {{#invoke:InfoboxImage|InfoboxImage|image={{{smallimage|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{smallimage_alt|}}}|suppressplaceholder=yes}} | captionstyle = line-height:normal;padding-top:0.2em; | caption{{#if:{{{smallimage|}}}|3|{{#if:{{{image name|}}}|2}}}} = {{{caption|}}} | headerstyle = {{#ifeq:{{lc:{{{embed}}}}}|yes|background:#eee|background:lavender}} | data1 = {{#if:{{{speaker|}}}| {{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname2|}}} | 1namedata = {{{1namedata2|}}} | 2blankname = {{{2blankname2|}}} | 2namedata = {{{2namedata2|}}} | 3blankname = {{{3blankname2|}}} | 3namedata = {{{3namedata2|}}} | 4blankname = {{{4blankname2|}}} | 4namedata = {{{4namedata2|}}} | 5blankname = {{{5blankname2|}}} | 5namedata = {{{5namedata2|}}} | alongside = {{{alongside2|}}} | ambassador_from = {{{ambassador_from2|}}} | appointer = {{#if: {{{appointer2|}}} | {{{appointer2}}} | {{{appointed2|}}} }} | assembly = {{{assembly2|}}} | assuming = {{{assuming2|}}} | chancellor = {{{chancellor2|}}} | co-leader = {{{co-leader2|}}} | constituency_{{#if:{{{constituency_AM2|}}}|AM|MP}} = {{#if: {{{constituency_AM2|}}} | {{{constituency_AM2}}} | {{{constituency_MP2|}}} }} | constituency = {{{constituency2|}}} | convocation = {{{convocation2|}}} | country = {{{country2|}}} | deputy = {{{deputy2|}}} | district = {{{district2|}}} | firstminister = {{{firstminister2|}}} | governor-general = {{{governor-general2|}}} | governor_general = {{{governor_general2|}}} | governor = {{{governor2|}}} | jr/sr = {{{jr/sr2|}}} | jr/sr and state = {{{jr/sr and state2|}}} | leader = {{{leader2|}}} | legislature = {{{legislature2|}}} | lieutenant_governor = {{{lieutenant_governor2|}}} | lieutenant = {{{lieutenant2|}}} | majority_leader = {{#if: {{{majorityleader2|}}} | {{{majorityleader2}}} | {{{majority_leader2|}}} }} | minister_from = {{{minister_from2|}}} | minority_floor_leader = {{{minority_floor_leader2|}}} | majority_floor_leader = {{{majority_floor_leader2|}}} | majority = {{{majority2|}}} | minister = {{{minister2|}}} | minority_leader = {{#if: {{{minorityleader2|}}} | {{{minorityleader2}}} | {{{minority_leader2|}}} }} | monarch = {{{monarch2|}}} | nominator = {{{nominator2|}}} | office = {{{office2|}}} | order = {{{order2|}}} | parliament = {{{parliament2|}}} | parliamentarygroup = {{{parliamentarygroup2|}}} | predecessor = {{{predecessor2|}}} | preceding = {{{preceding2|}}} | preceded = {{{preceded2|}}} | premier = {{{premier2|}}} | president = {{{president2|}}} | primeminister = {{{primeminister2|}}} | riding = {{{riding2|}}} | speaker = {{{speaker|}}} | speaker_office = {{{speaker_office|}}} | state_assembly = {{{state_assembly|}}} | state_delegate = {{{state_delegate|}}} | state_house = {{{state_house|}}} | state_legislature = {{{state_legislature|}}} | state_senate = {{{state_senate|}}} | state = {{{state|}}} | subterm = {{nobold|{{{subterm|}}}}} | suboffice = {{{suboffice|}}} | succeeded = {{{succeeded2|}}} | succeeding = {{{succeeding2|}}} | successor = {{{successor2|}}} | taoiseach = {{{taoiseach2|}}} | termlabel = {{{term_label2|{{{termlabel2|In office}}}}}} | termend = {{#if:{{{termend2|}}}|{{{termend2}}}|{{{term_end2|}}}}} | termstart = {{#if:{{{termstart2|}}}|{{{termstart2}}}|{{{term_start2|}}}}} | term = {{{term2|}}} | title = {{{title2|}}} | vicegovernor = {{{vicegovernor2|}}} | vicepresident = {{{vicepresident2|}}} | vicepremier = {{{vicepremier2|}}} | viceprimeminister = {{{viceprimeminister2|}}} | party = {{{party|}}} | prior_term = {{{prior_term|}}} }}}}}}<!-- -->{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname|}}} | 1namedata = {{{1namedata|}}} | 2blankname = {{{2blankname|}}} | 2namedata = {{{2namedata|}}} | 3blankname = {{{3blankname|}}} | 3namedata = {{{3namedata|}}} | 4blankname = {{{4blankname|}}} | 4namedata = {{{4namedata|}}} | 5blankname = {{{5blankname|}}} | 5namedata = {{{5namedata|}}} | alongside = {{{alongside|}}} | ambassador_from = {{{ambassador_from|}}} | appointer = {{#if: {{{appointer|}}} | {{{appointer}}} | {{{appointed|}}} }} | assembly = {{{assembly|}}} | assuming = {{{assuming|}}} | candidate = {{{candidate|}}} | chancellor = {{{chancellor|}}} | co-leader = {{{co-leader|}}} | constituency_{{#if:{{{constituency_AM|}}}|AM|MP}} = {{#if: {{{constituency_AM|}}} | {{{constituency_AM}}} | {{{constituency_MP|}}} }} | constituency = {{{constituency|}}} | convocation = {{{convocation|}}} | country = {{{country|}}} | deputy = {{{deputy|}}} | district = {{{district|}}} | election_date = {{{election_date|}}} | firstminister = {{{firstminister|}}} | governor-general = {{{governor-general|}}} | governor_general = {{{governor_general|}}} | governor = {{{governor|}}} | incumbent = {{{incumbent|}}} | jr/sr = {{{jr/sr|}}} | jr/sr and state = {{{jr/sr and state|}}} | leader = {{{leader|}}} | legislature = {{{legislature|}}} | lieutenant_governor = {{{lieutenant_governor|}}} | lieutenant = {{{lieutenant|}}} | majority_leader = {{#if: {{{majorityleader|}}} | {{{majorityleader}}} | {{{majority_leader|}}} }} | majority = {{{majority|}}} | minister = {{{minister|}}} | minister_from = {{{minister_from|}}} | minority_floor_leader = {{{minority_floor_leader|}}} | majority_floor_leader = {{{majority_floor_leader|}}} | minority_leader = {{#if: {{{minorityleader|}}} | {{{minorityleader}}} | {{{minority_leader|}}} }} | monarch = {{{monarch|}}} | nominator = {{{nominator|}}} | nominee = {{{nominee|}}} | office = {{{office|}}} | opponent = {{{opponent|}}} | order = {{{order|}}} | parliament = {{{parliament|}}} | parliamentarygroup = {{{parliamentarygroup|}}} | party_election = {{{party_election|}}} | predecessor = {{{predecessor|}}} | preceding = {{{preceding|}}} | preceded = {{{preceded|}}} | premier = {{{premier|}}} | president = {{{president|}}} | primeminister = {{{primeminister|}}} | riding = {{{riding|}}} | runningmate = {{{runningmate|}}} | state_assembly = {{{state_assembly|}}} | state_delegate = {{{state_delegate|}}} | state_house = {{{state_house|}}} | state_legislature = {{{state_legislature|}}} | state_senate = {{{state_senate|}}} | state = {{{state|}}} | status = {{{status|}}} | suboffice = {{{suboffice|}}} | subterm = {{nobold|{{{subterm|}}}}} | succeeded = {{{succeeded|}}} | succeeding = {{{succeeding|}}} | successor = {{{successor|}}} | taoiseach = {{{taoiseach|}}} | termlabel = {{{term_label|{{{termlabel|In office}}}}}} | termend = {{#if: {{{termend|}}} | {{{termend}}} | {{{term_end|}}} }} | termstart = {{#if: {{{termstart|}}} | {{{termstart}}} | {{{term_start|}}} }} | term = {{{term|}}} | title = {{{title|}}} | vicegovernor = {{{vicegovernor|}}} | vicepresident = {{{vicepresident|}}} | vicepremier = {{{vicepremier|}}} | viceprimeminister = {{{viceprimeminister|}}} | party = {{{party|}}} | prior_term = {{{prior_term|}}} }}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname1|}}} | 1namedata = {{{1namedata1|}}} | 2blankname = {{{2blankname1|}}} | 2namedata = {{{2namedata1|}}} | 3blankname = {{{3blankname1|}}} | 3namedata = {{{3namedata1|}}} | 4blankname = {{{4blankname1|}}} | 4namedata = {{{4namedata1|}}} | 5blankname = {{{5blankname1|}}} | 5namedata = {{{5namedata1|}}} | alongside = {{{alongside1|}}} | ambassador_from = {{{ambassador_from1|}}} | appointer = {{#if: {{{appointer1|}}} | {{{appointer1}}} | {{{appointed1|}}} }} | assembly = {{{assembly1|}}} | assuming = {{{assuming1|}}} | chancellor = {{{chancellor1|}}} | co-leader = {{{co-leader1|}}} | constituency_{{#if:{{{constituency_AM1|}}}|AM|MP}} = {{#if: {{{constituency_AM1|}}} | {{{constituency_AM1}}} | {{{constituency_MP1|}}} }} | constituency = {{{constituency1|}}} | convocation = {{{convocation1|}}} | country = {{{country1|}}} | deputy = {{{deputy1|}}} | district = {{{district1|}}} | firstminister = {{{firstminister1|}}} | governor-general = {{{governor-general1|}}} | governor_general = {{{governor_general1|}}} | governor = {{{governor1|}}} | jr/sr = {{{jr/sr1|}}} | jr/sr and state = {{{jr/sr and state1|}}} | leader = {{{leader1|}}} | legislature = {{{legislature1|}}} | lieutenant_governor = {{{lieutenant_governor1|}}} | lieutenant = {{{lieutenant1|}}} | minority_floor_leader = {{{minority_floor_leader1|}}} | minister_from = {{{minister_from1|}}} | majority_floor_leader = {{{majority_floor_leader1|}}} | majority_leader = {{#if: {{{majorityleader1|}}} | {{{majorityleader1}}} | {{{majority_leader1|}}} }} | majority = {{{majority1|}}} | minister = {{{minister1|}}} | minority_leader = {{#if: {{{minorityleader1|}}} | {{{minorityleader1}}} | {{{minority_leader1|}}} }} | monarch = {{{monarch1|}}} | nominator = {{{nominator1|}}} | office = {{{office1|}}} | order = {{{order1|}}} | parliament = {{{parliament1|}}} | parliamentarygroup = {{{parliamentarygroup1|}}} | predecessor = {{{predecessor1|}}} | preceding = {{{preceding1|}}} | preceded = {{{preceded1|}}} | premier = {{{premier1|}}} | president = {{{president1|}}} | primeminister = {{{primeminister1|}}} | riding = {{{riding1|}}} | state_assembly = {{{state_assembly1|}}} | state_delegate = {{{state_delegate1|}}} | state_house = {{{state_house1|}}} | state_legislature = {{{state_legislature1|}}} | state_senate = {{{state_senate1|}}} | state = {{{state1|}}} | status = {{{status1|}}} | subterm = {{nobold|{{{subterm1|}}}}} | suboffice = {{{suboffice1|}}} | succeeded = {{{succeeded1|}}} | succeeding = {{{succeeding1|}}} | successor = {{{successor1|}}} | taoiseach = {{{taoiseach1|}}} | termlabel = {{{term_label1|{{{termlabel1|In office}}}}}} | termend = {{#if:{{{termend1|}}}|{{{termend1}}}|{{{term_end1|}}}}} | termstart = {{#if:{{{termstart1|}}}|{{{termstart1}}}|{{{term_start1|}}}}} | term = {{{term1|}}} | title = {{{title1|}}} | vicegovernor = {{{vicegovernor1|}}} | vicepresident = {{{vicepresident1|}}} | vicepremier = {{{vicepremier1|}}} | viceprimeminister = {{{viceprimeminister1|}}} | party = {{{party|}}} | prior_term = {{{prior_term1|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{#if:{{{speaker|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname2|}}} | 1namedata = {{{1namedata2|}}} | 2blankname = {{{2blankname2|}}} | 2namedata = {{{2namedata2|}}} | 3blankname = {{{3blankname2|}}} | 3namedata = {{{3namedata2|}}} | 4blankname = {{{4blankname2|}}} | 4namedata = {{{4namedata2|}}} | 5blankname = {{{5blankname2|}}} | 5namedata = {{{5namedata2|}}} | alongside = {{{alongside2|}}} | ambassador_from = {{{ambassador_from2|}}} | appointer = {{#if: {{{appointer2|}}} | {{{appointer2}}} | {{{appointed2|}}} }} | assembly = {{{assembly2|}}} | assuming = {{{assuming2|}}} | chancellor = {{{chancellor2|}}} | co-leader = {{{co-leader2|}}} | constituency_{{#if:{{{constituency_AM2|}}}|AM|MP}} = {{#if: {{{constituency_AM2|}}} | {{{constituency_AM2}}} | {{{constituency_MP2|}}} }} | constituency = {{{constituency2|}}} | convocation = {{{convocation2|}}} | country = {{{country2|}}} | deputy = {{{deputy2|}}} | district = {{{district2|}}} | firstminister = {{{firstminister2|}}} | governor-general = {{{governor-general2|}}} | governor_general = {{{governor_general2|}}} | governor = {{{governor2|}}} | jr/sr = {{{jr/sr2|}}} | jr/sr and state = {{{jr/sr and state2|}}} | leader = {{{leader2|}}} | legislature = {{{legislature2|}}} | lieutenant_governor = {{{lieutenant_governor2|}}} | lieutenant = {{{lieutenant2|}}} | majority_leader = {{#if: {{{majorityleader2|}}} | {{{majorityleader2}}} | {{{majority_leader2|}}} }} | minister_from = {{{minister_from2|}}} | minority_floor_leader = {{{minority_floor_leader2|}}} | majority_floor_leader = {{{majority_floor_leader2|}}} | majority = {{{majority2|}}} | minister = {{{minister2|}}} | minority_leader = {{#if: {{{minorityleader2|}}} | {{{minorityleader2}}} | {{{minority_leader2|}}} }} | monarch = {{{monarch2|}}} | nominator = {{{nominator2|}}} | office = {{{office2|}}} | order = {{{order2|}}} | parliament = {{{parliament2|}}} | parliamentarygroup = {{{parliamentarygroup2|}}} | predecessor = {{{predecessor2|}}} | preceding = {{{preceding2|}}} | preceded = {{{preceded2|}}} | premier = {{{premier2|}}} | president = {{{president2|}}} | primeminister = {{{primeminister2|}}} | riding = {{{riding2|}}} | state_assembly = {{{state_assembly2|}}} | state_delegate = {{{state_delegate2|}}} | state_house = {{{state_house2|}}} | state_legislature = {{{state_legislature2|}}} | state_senate = {{{state_senate2|}}} | state = {{{state2|}}} | status = {{{status2|}}} | subterm = {{nobold|{{{subterm2|}}}}} | suboffice = {{{suboffice2|}}} | succeeded = {{{succeeded2|}}} | succeeding = {{{succeeding2|}}} | successor = {{{successor2|}}} | taoiseach = {{{taoiseach2|}}} | termlabel = {{{term_label2|{{{termlabel2|In office}}}}}} | termend = {{#if:{{{termend2|}}}|{{{termend2}}}|{{{term_end2|}}}}} | termstart = {{#if:{{{termstart2|}}}|{{{termstart2}}}|{{{term_start2|}}}}} | term = {{{term2|}}} | title = {{{title2|}}} | vicegovernor = {{{vicegovernor2|}}} | vicepresident = {{{vicepresident2|}}} | vicepremier = {{{vicepremier2|}}} | viceprimeminister = {{{viceprimeminister2|}}} | party = {{{party|}}} | prior_term = {{{prior_term2|}}} }}}}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname3|}}} | 1namedata = {{{1namedata3|}}} | 2blankname = {{{2blankname3|}}} | 2namedata = {{{2namedata3|}}} | 3blankname = {{{3blankname3|}}} | 3namedata = {{{3namedata3|}}} | 4blankname = {{{4blankname3|}}} | 4namedata = {{{4namedata3|}}} | 5blankname = {{{5blankname3|}}} | 5namedata = {{{5namedata3|}}} | alongside = {{{alongside3|}}} | ambassador_from = {{{ambassador_from3|}}} | appointer = {{#if: {{{appointer3|}}} | {{{appointer3}}} | {{{appointed3|}}} }} | assembly = {{{assembly3|}}} | assuming = {{{assuming3|}}} | chancellor = {{{chancellor3|}}} | co-leader = {{{co-leader3|}}} | constituency_{{#if:{{{constituency_AM3|}}}|AM|MP}} = {{#if: {{{constituency_AM3|}}} | {{{constituency_AM3}}} | {{{constituency_MP3|}}} }} | constituency = {{{constituency3|}}} | convocation = {{{convocation3|}}} | country = {{{country3|}}} | deputy = {{{deputy3|}}} | district = {{{district3|}}} | firstminister = {{{firstminister3|}}} | governor-general = {{{governor-general3|}}} | governor_general = {{{governor_general3|}}} | governor = {{{governor3|}}} | jr/sr = {{{jr/sr3|}}} | jr/sr and state = {{{jr/sr and state3|}}} | leader = {{{leader3|}}} | legislature = {{{legislature3|}}} | lieutenant_governor = {{{lieutenant_governor3|}}} | lieutenant = {{{lieutenant3|}}} | minority_floor_leader = {{{minority_floor_leader3|}}} | minister_from = {{{minister_from3|}}} | majority_floor_leader = {{{majority_floor_leader3|}}} | majority_leader = {{#if: {{{majorityleader3|}}} | {{{majorityleader3}}} | {{{majority_leader3|}}} }} | majority = {{{majority3|}}} | minister = {{{minister3|}}} | minority_leader = {{#if: {{{minorityleader3|}}} | {{{minorityleader3}}} | {{{minority_leader3|}}} }} | monarch = {{{monarch3|}}} | nominator = {{{nominator3|}}} | office = {{{office3|}}} | order = {{{order3|}}} | parliament = {{{parliament3|}}} | parliamentarygroup = {{{parliamentarygroup3|}}} | predecessor = {{{predecessor3|}}} | preceding = {{{preceding3|}}} | preceded = {{{preceded3|}}} | premier = {{{premier3|}}} | president = {{{president3|}}} | primeminister = {{{primeminister3|}}} | riding = {{{riding3|}}} | state_assembly = {{{state_assembly3|}}} | state_delegate = {{{state_delegate3|}}} | state_house = {{{state_house3|}}} | state_legislature = {{{state_legislature3|}}} | state_senate = {{{state_senate3|}}} | state = {{{state3|}}} | status = {{{status3|}}} | subterm = {{nobold|{{{subterm3|}}}}} | suboffice = {{{suboffice3|}}} | succeeded = {{{succeeded3|}}} | succeeding = {{{succeeding3|}}} | successor = {{{successor3|}}} | taoiseach = {{{taoiseach3|}}} | termlabel = {{{term_label3|{{{termlabel3|In office}}}}}} | termend = {{#if:{{{termend3|}}}|{{{termend3}}}|{{{term_end3|}}}}} | termstart = {{#if:{{{termstart3|}}}|{{{termstart3}}}|{{{term_start3|}}}}} | term = {{{term3|}}} | title = {{{title3|}}} | vicegovernor = {{{vicegovernor3|}}} | vicepresident = {{{vicepresident3|}}} | vicepremier = {{{vicepremier3|}}} | viceprimeminister = {{{viceprimeminister3|}}} | party = {{{party|}}} | prior_term = {{{prior_term3|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname4|}}} | 1namedata = {{{1namedata4|}}} | 2blankname = {{{2blankname4|}}} | 2namedata = {{{2namedata4|}}} | 3blankname = {{{3blankname4|}}} | 3namedata = {{{3namedata4|}}} | 4blankname = {{{4blankname4|}}} | 4namedata = {{{4namedata4|}}} | 5blankname = {{{5blankname4|}}} | 5namedata = {{{5namedata4|}}} | alongside = {{{alongside4|}}} | ambassador_from = {{{ambassador_from4|}}} | appointer = {{#if: {{{appointer4|}}} | {{{appointer4}}} | {{{appointed4|}}} }} | assembly = {{{assembly4|}}} | assuming = {{{assuming4|}}} | chancellor = {{{chancellor4|}}} | co-leader = {{{co-leader4|}}} | constituency_{{#if:{{{constituency_AM4|}}}|AM|MP}} = {{#if: {{{constituency_AM4|}}} | {{{constituency_AM4}}} | {{{constituency_MP4|}}} }} | constituency = {{{constituency4|}}} | convocation = {{{convocation4|}}} | country = {{{country4|}}} | deputy = {{{deputy4|}}} | district = {{{district4|}}} | firstminister = {{{firstminister4|}}} | governor-general = {{{governor-general4|}}} | governor_general = {{{governor_general4|}}} | governor = {{{governor4|}}} | jr/sr = {{{jr/sr4|}}} | jr/sr and state = {{{jr/sr and state4|}}} | leader = {{{leader4|}}} | legislature = {{{legislature4|}}} | lieutenant_governor = {{{lieutenant_governor4|}}} | lieutenant = {{{lieutenant4|}}} | minister_from = {{{minister_from4|}}} | minority_floor_leader = {{{minority_floor_leader4|}}} | majority_floor_leader = {{{majority_floor_leader4|}}} | majority_leader = {{#if: {{{majorityleader4|}}} | {{{majorityleader4}}} | {{{majority_leader4|}}} }} | majority = {{{majority4|}}} | minister = {{{minister4|}}} | minority_leader = {{#if: {{{minorityleader4|}}} | {{{minorityleader4}}} | {{{minority_leader4|}}} }} | monarch = {{{monarch4|}}} | nominator = {{{nominator4|}}} | office = {{{office4|}}} | order = {{{order4|}}} | parliament = {{{parliament4|}}} | parliamentarygroup = {{{parliamentarygroup4|}}} | predecessor = {{{predecessor4|}}} | preceding = {{{preceding4|}}} | preceded = {{{preceded4|}}} | premier = {{{premier4|}}} | president = {{{president4|}}} | primeminister = {{{primeminister4|}}} | riding = {{{riding4|}}} | state_assembly = {{{state_assembly4|}}} | state_delegate = {{{state_delegate4|}}} | state_house = {{{state_house4|}}} | state_legislature = {{{state_legislature4|}}} | state_senate = {{{state_senate4|}}} | state = {{{state4|}}} | status = {{{status4|}}} | subterm = {{nobold|{{{subterm4|}}}}} | suboffice = {{{suboffice4|}}} | succeeded = {{{succeeded4|}}} | succeeding = {{{succeeding4|}}} | successor = {{{successor4|}}} | taoiseach = {{{taoiseach4|}}} | termlabel = {{{term_label4|{{{termlabel4|In office}}}}}} | termend = {{#if:{{{termend4|}}}|{{{termend4}}}|{{{term_end4|}}}}} | termstart = {{#if:{{{termstart4|}}}|{{{termstart4}}}|{{{term_start4|}}}}} | term = {{{term4|}}} | title = {{{title4|}}} | vicegovernor = {{{vicegovernor4|}}} | vicepresident = {{{vicepresident4|}}} | vicepremier = {{{vicepremier4|}}} | viceprimeminister = {{{viceprimeminister4|}}} | party = {{{party|}}} | prior_term = {{{prior_term4|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname5|}}} | 1namedata = {{{1namedata5|}}} | 2blankname = {{{2blankname5|}}} | 2namedata = {{{2namedata5|}}} | 3blankname = {{{3blankname5|}}} | 3namedata = {{{3namedata5|}}} | 4blankname = {{{4blankname5|}}} | 4namedata = {{{4namedata5|}}} | 5blankname = {{{5blankname5|}}} | 5namedata = {{{5namedata5|}}} | alongside = {{{alongside5|}}} | ambassador_from = {{{ambassador_from5|}}} | appointer = {{#if: {{{appointer5|}}} | {{{appointer5}}} | {{{appointed5|}}} }} | assembly = {{{assembly5|}}} | assuming = {{{assuming5|}}} | chancellor = {{{chancellor5|}}} | co-leader = {{{co-leader5|}}} | constituency_{{#if:{{{constituency_AM5|}}}|AM|MP}} = {{#if: {{{constituency_AM5|}}} | {{{constituency_AM5}}} | {{{constituency_MP5|}}} }} | constituency = {{{constituency5|}}} | convocation = {{{convocation5|}}} | country = {{{country5|}}} | deputy = {{{deputy5|}}} | district = {{{district5|}}} | firstminister = {{{firstminister5|}}} | governor-general = {{{governor-general5|}}} | governor_general = {{{governor_general5|}}} | governor = {{{governor5|}}} | jr/sr = {{{jr/sr5|}}} | jr/sr and state = {{{jr/sr and state5|}}} | leader = {{{leader5|}}} | legislature = {{{legislature5|}}} | lieutenant_governor = {{{lieutenant_governor5|}}} | lieutenant = {{{lieutenant5|}}} | minister_from = {{{minister_from5|}}} | minority_floor_leader = {{{minority_floor_leader5|}}} | majority_floor_leader = {{{majority_floor_leader5|}}} | majority_leader = {{#if: {{{majorityleader5|}}} | {{{majorityleader5}}} | {{{majority_leader5|}}} }} | majority = {{{majority5|}}} | minister = {{{minister5|}}} | minority_leader = {{#if: {{{minorityleader5|}}} | {{{minorityleader5}}} | {{{minority_leader5|}}} }} | monarch = {{{monarch5|}}} | nominator = {{{nominator5|}}} | office = {{{office5|}}} | order = {{{order5|}}} | parliament = {{{parliament5|}}} | parliamentarygroup = {{{parliamentarygroup5|}}} | predecessor = {{{predecessor5|}}} | preceding = {{{preceding5|}}} | preceded = {{{preceded5|}}} | premier = {{{premier5|}}} | president = {{{president5|}}} | primeminister = {{{primeminister5|}}} | riding = {{{riding5|}}} | state_assembly = {{{state_assembly5|}}} | state_delegate = {{{state_delegate5|}}} | state_house = {{{state_house5|}}} | state_legislature = {{{state_legislature5|}}} | state_senate = {{{state_senate5|}}} | state = {{{state5|}}} | status = {{{status5|}}} | subterm = {{nobold|{{{subterm5|}}}}} | suboffice = {{{suboffice5|}}} | succeeded = {{{succeeded5|}}} | succeeding = {{{succeeding5|}}} | successor = {{{successor5|}}} | taoiseach = {{{taoiseach5|}}} | termlabel = {{{term_label5|{{{termlabel5|In office}}}}}} | termend = {{#if:{{{termend5|}}}|{{{termend5}}}|{{{term_end5|}}}}} | termstart = {{#if:{{{termstart5|}}}|{{{termstart5}}}|{{{term_start5|}}}}} | term = {{{term5|}}} | title = {{{title5|}}} | vicegovernor = {{{vicegovernor5|}}} | vicepresident = {{{vicepresident5|}}} | vicepremier = {{{vicepremier5|}}} | viceprimeminister = {{{viceprimeminister5|}}} | party = {{{party|}}} | prior_term = {{{prior_term5|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname6|}}} | 1namedata = {{{1namedata6|}}} | 2blankname = {{{2blankname6|}}} | 2namedata = {{{2namedata6|}}} | 3blankname = {{{3blankname6|}}} | 3namedata = {{{3namedata6|}}} | 4blankname = {{{4blankname6|}}} | 4namedata = {{{4namedata6|}}} | 5blankname = {{{5blankname6|}}} | 5namedata = {{{5namedata6|}}} | alongside = {{{alongside6|}}} | ambassador_from = {{{ambassador_from6|}}} | appointer = {{#if: {{{appointer6|}}} | {{{appointer6}}} | {{{appointed6|}}} }} | assembly = {{{assembly6|}}} | assuming = {{{assuming6|}}} | chancellor = {{{chancellor6|}}} | co-leader = {{{co-leader6|}}} | constituency_{{#if:{{{constituency_AM6|}}}|AM|MP}} = {{#if: {{{constituency_AM6|}}} | {{{constituency_AM6}}} | {{{constituency_MP6|}}} }} | constituency = {{{constituency6|}}} | convocation = {{{convocation6|}}} | country = {{{country6|}}} | deputy = {{{deputy6|}}} | district = {{{district6|}}} | firstminister = {{{firstminister6|}}} | governor-general = {{{governor-general6|}}} | governor_general = {{{governor_general6|}}} | governor = {{{governor6|}}} | jr/sr = {{{jr/sr6|}}} | jr/sr and state = {{{jr/sr and state6|}}} | leader = {{{leader6|}}} | legislature = {{{legislature6|}}} | lieutenant_governor = {{{lieutenant_governor6|}}} | lieutenant = {{{lieutenant6|}}} | minority_floor_leader = {{{minority_floor_leader6|}}} | minister_from = {{{minister_from6|}}} | majority_floor_leader = {{{majority_floor_leader6|}}} | majority_leader = {{#if: {{{majorityleader6|}}} | {{{majorityleader6}}} | {{{majority_leader6|}}} }} | majority = {{{majority6|}}} | minister = {{{minister6|}}} | minority_leader = {{#if: {{{minorityleader6|}}} | {{{minorityleader6}}} | {{{minority_leader6|}}} }} | monarch = {{{monarch6|}}} | nominator = {{{nominator6|}}} | office = {{{office6|}}} | order = {{{order6|}}} | parliament = {{{parliament6|}}} | parliamentarygroup = {{{parliamentarygroup6|}}} | predecessor = {{{predecessor6|}}} | preceding = {{{preceding6|}}} | preceded = {{{preceded6|}}} | premier = {{{premier6|}}} | president = {{{president6|}}} | primeminister = {{{primeminister6|}}} | riding = {{{riding6|}}} | state_assembly = {{{state_assembly6|}}} | state_delegate = {{{state_delegate6|}}} | state_house = {{{state_house6|}}} | state_legislature = {{{state_legislature6|}}} | state_senate = {{{state_senate6|}}} | state = {{{state6|}}} | status = {{{status6|}}} | subterm = {{nobold|{{{subterm6|}}}}} | suboffice = {{{suboffice6|}}} | succeeded = {{{succeeded6|}}} | succeeding = {{{succeeding6|}}} | successor = {{{successor6|}}} | taoiseach = {{{taoiseach6|}}} | termlabel = {{{term_label6|{{{termlabel6|In office}}}}}} | termend = {{#if:{{{termend6|}}}|{{{termend6}}}|{{{term_end6|}}}}} | termstart = {{#if:{{{termstart6|}}}|{{{termstart6}}}|{{{term_start6|}}}}} | term = {{{term6|}}} | title = {{{title6|}}} | vicegovernor = {{{vicegovernor6|}}} | vicepresident = {{{vicepresident6|}}} | vicepremier = {{{vicepremier6|}}} | viceprimeminister = {{{viceprimeminister6|}}} | party = {{{party|}}} | prior_term = {{{prior_term6|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname7|}}} | 1namedata = {{{1namedata7|}}} | 2blankname = {{{2blankname7|}}} | 2namedata = {{{2namedata7|}}} | 3blankname = {{{3blankname7|}}} | 3namedata = {{{3namedata7|}}} | 4blankname = {{{4blankname7|}}} | 4namedata = {{{4namedata7|}}} | 5blankname = {{{5blankname7|}}} | 5namedata = {{{5namedata7|}}} | alongside = {{{alongside7|}}} | ambassador_from = {{{ambassador_from7|}}} | appointer = {{#if: {{{appointer7|}}} | {{{appointer7}}} | {{{appointed7|}}} }} | assembly = {{{assembly7|}}} | assuming = {{{assuming7|}}} | chancellor = {{{chancellor7|}}} | co-leader = {{{co-leader7|}}} | constituency_{{#if:{{{constituency_AM7|}}}|AM|MP}} = {{#if: {{{constituency_AM7|}}} | {{{constituency_AM7}}} | {{{constituency_MP7|}}} }} | constituency = {{{constituency7|}}} | convocation = {{{convocation7|}}} | country = {{{country7|}}} | deputy = {{{deputy7|}}} | district = {{{district7|}}} | firstminister = {{{firstminister7|}}} | governor-general = {{{governor-general7|}}} | governor_general = {{{governor_general7|}}} | governor = {{{governor7|}}} | jr/sr = {{{jr/sr7|}}} | jr/sr and state = {{{jr/sr and state7|}}} | leader = {{{leader7|}}} | legislature = {{{legislature7|}}} | lieutenant_governor = {{{lieutenant_governor7|}}} | lieutenant = {{{lieutenant7|}}} | minister_from = {{{minister_from7|}}} | minority_floor_leader = {{{minority_floor_leader7|}}} | majority_floor_leader = {{{majority_floor_leader7|}}} | majority_leader = {{#if: {{{majorityleader7|}}} | {{{majorityleader7}}} | {{{majority_leader7|}}} }} | majority = {{{majority7|}}} | minister = {{{minister7|}}} | minority_leader = {{#if: {{{minorityleader7|}}} | {{{minorityleader7}}} | {{{minority_leader7|}}} }} | monarch = {{{monarch7|}}} | nominator = {{{nominator7|}}} | office = {{{office7|}}} | order = {{{order7|}}} | parliament = {{{parliament7|}}} | parliamentarygroup = {{{parliamentarygroup7|}}} | predecessor = {{{predecessor7|}}} | preceding = {{{preceding7|}}} | preceded = {{{preceded7|}}} | premier = {{{premier7|}}} | president = {{{president7|}}} | primeminister = {{{primeminister7|}}} | riding = {{{riding7|}}} | state_assembly = {{{state_assembly7|}}} | state_delegate = {{{state_delegate7|}}} | state_house = {{{state_house7|}}} | state_legislature = {{{state_legislature7|}}} | state_senate = {{{state_senate7|}}} | state = {{{state7|}}} | status = {{{status7|}}} | subterm = {{nobold|{{{subterm7|}}}}} | suboffice = {{{suboffice7|}}} | succeeded = {{{succeeded7|}}} | succeeding = {{{succeeding7|}}} | successor = {{{successor7|}}} | taoiseach = {{{taoiseach7|}}} | termlabel = {{{term_label7|{{{termlabel7|In office}}}}}} | termend = {{#if:{{{termend7|}}}|{{{termend7}}}|{{{term_end7|}}}}} | termstart = {{#if:{{{termstart7|}}}|{{{termstart7}}}|{{{term_start7|}}}}} | term = {{{term7|}}} | title = {{{title7|}}} | vicegovernor = {{{vicegovernor7|}}} | vicepresident = {{{vicepresident7|}}} | vicepremier = {{{vicepremier7|}}} | viceprimeminister = {{{viceprimeminister7|}}} | party = {{{party|}}} | prior_term = {{{prior_term7|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname8|}}} | 1namedata = {{{1namedata8|}}} | 2blankname = {{{2blankname8|}}} | 2namedata = {{{2namedata8|}}} | 3blankname = {{{3blankname8|}}} | 3namedata = {{{3namedata8|}}} | 4blankname = {{{4blankname8|}}} | 4namedata = {{{4namedata8|}}} | 5blankname = {{{5blankname8|}}} | 5namedata = {{{5namedata8|}}} | alongside = {{{alongside8|}}} | ambassador_from = {{{ambassador_from8|}}} | appointer = {{#if: {{{appointer8|}}} | {{{appointer8}}} | {{{appointed8|}}} }} | assembly = {{{assembly8|}}} | assuming = {{{assuming8|}}} | chancellor = {{{chancellor8|}}} | co-leader = {{{co-leader8|}}} | constituency_{{#if:{{{constituency_AM8|}}}|AM|MP}} = {{#if: {{{constituency_AM8|}}} | {{{constituency_AM8}}} | {{{constituency_MP8|}}} }} | constituency = {{{constituency8|}}} | convocation = {{{convocation8|}}} | country = {{{country8|}}} | deputy = {{{deputy8|}}} | district = {{{district8|}}} | firstminister = {{{firstminister8|}}} | governor-general = {{{governor-general8|}}} | governor_general = {{{governor_general8|}}} | governor = {{{governor8|}}} | jr/sr = {{{jr/sr8|}}} | jr/sr and state = {{{jr/sr and state8|}}} | leader = {{{leader8|}}} | legislature = {{{legislature8|}}} | lieutenant_governor = {{{lieutenant_governor8|}}} | lieutenant = {{{lieutenant8|}}} | minister_from = {{{minister_from8|}}} | minority_floor_leader = {{{minority_floor_leader8|}}} | majority_floor_leader = {{{majority_floor_leader8|}}} | majority_leader = {{#if: {{{majorityleader8|}}} | {{{majorityleader8}}} | {{{majority_leader8|}}} }} | majority = {{{majority8|}}} | minister = {{{minister8|}}} | minority_leader = {{#if: {{{minorityleader8|}}} | {{{minorityleader8}}} | {{{minority_leader8|}}} }} | monarch = {{{monarch8|}}} | nominator = {{{nominator8|}}} | office = {{{office8|}}} | order = {{{order8|}}} | parliament = {{{parliament8|}}} | parliamentarygroup = {{{parliamentarygroup8|}}} | predecessor = {{{predecessor8|}}} | preceding = {{{preceding8|}}} | preceded = {{{preceded8|}}} | premier = {{{premier8|}}} | president = {{{president8|}}} | primeminister = {{{primeminister8|}}} | riding = {{{riding8|}}} | state_assembly = {{{state_assembly8|}}} | state_delegate = {{{state_delegate8|}}} | state_house = {{{state_house8|}}} | state_legislature = {{{state_legislature8|}}} | state_senate = {{{state_senate8|}}} | state = {{{state8|}}} | status = {{{status8|}}} | subterm = {{nobold|{{{subterm8|}}}}} | suboffice = {{{suboffice8|}}} | succeeded = {{{succeeded8|}}} | succeeding = {{{succeeding8|}}} | successor = {{{successor8|}}} | taoiseach = {{{taoiseach8|}}} | termlabel = {{{term_label8|{{{termlabel8|In office}}}}}} | termend = {{#if:{{{termend8|}}}|{{{termend8}}}|{{{term_end8|}}}}} | termstart = {{#if:{{{termstart8|}}}|{{{termstart8}}}|{{{term_start8|}}}}} | term = {{{term8|}}} | title = {{{title8|}}} | vicegovernor = {{{vicegovernor8|}}} | vicepresident = {{{vicepresident8|}}} | vicepremier = {{{vicepremier8|}}} | viceprimeminister = {{{viceprimeminister8|}}} | party = {{{party|}}} | prior_term = {{{prior_term8|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname9|}}} | 1namedata = {{{1namedata9|}}} | 2blankname = {{{2blankname9|}}} | 2namedata = {{{2namedata9|}}} | 3blankname = {{{3blankname9|}}} | 3namedata = {{{3namedata9|}}} | 4blankname = {{{4blankname9|}}} | 4namedata = {{{4namedata9|}}} | 5blankname = {{{5blankname9|}}} | 5namedata = {{{5namedata9|}}} | alongside = {{{alongside9|}}} | ambassador_from = {{{ambassador_from9|}}} | appointer = {{#if: {{{appointer9|}}} | {{{appointer9}}} | {{{appointed9|}}} }} | assembly = {{{assembly9|}}} | assuming = {{{assuming9|}}} | chancellor = {{{chancellor9|}}} | co-leader = {{{co-leader9|}}} | constituency_{{#if:{{{constituency_AM9|}}}|AM|MP}} = {{#if: {{{constituency_AM9|}}} | {{{constituency_AM9}}} | {{{constituency_MP9|}}} }} | constituency = {{{constituency9|}}} | convocation = {{{convocation9|}}} | country = {{{country9|}}} | deputy = {{{deputy9|}}} | district = {{{district9|}}} | firstminister = {{{firstminister9|}}} | governor-general = {{{governor-general9|}}} | governor_general = {{{governor_general9|}}} | governor = {{{governor9|}}} | jr/sr = {{{jr/sr9|}}} | jr/sr and state = {{{jr/sr and state9|}}} | leader = {{{leader9|}}} | legislature = {{{legislature9|}}} | lieutenant_governor = {{{lieutenant_governor9|}}} | lieutenant = {{{lieutenant9|}}} | minister_from = {{{minister_from9|}}} | minority_floor_leader = {{{minority_floor_leader9|}}} | majority_floor_leader = {{{majority_floor_leader9|}}} | majority_leader = {{#if: {{{majorityleader9|}}} | {{{majorityleader9}}} | {{{majority_leader9|}}} }} | majority = {{{majority9|}}} | minister = {{{minister9|}}} | minority_leader = {{#if: {{{minorityleader9|}}} | {{{minorityleader9}}} | {{{minority_leader9|}}} }} | monarch = {{{monarch9|}}} | nominator = {{{nominator9|}}} | office = {{{office9|}}} | order = {{{order9|}}} | parliament = {{{parliament9|}}} | parliamentarygroup = {{{parliamentarygroup9|}}} | predecessor = {{{predecessor9|}}} | preceding = {{{preceding9|}}} | preceded = {{{preceded9|}}} | premier = {{{premier9|}}} | president = {{{president9|}}} | primeminister = {{{primeminister9|}}} | riding = {{{riding9|}}} | state_assembly = {{{state_assembly9|}}} | state_delegate = {{{state_delegate9|}}} | state_house = {{{state_house9|}}} | state_legislature = {{{state_legislature9|}}} | state_senate = {{{state_senate9|}}} | state = {{{state9|}}} | status = {{{status9|}}} | subterm = {{nobold|{{{subterm9|}}}}} | suboffice = {{{suboffice9|}}} | succeeded = {{{succeeded9|}}} | succeeding = {{{succeeding9|}}} | successor = {{{successor9|}}} | taoiseach = {{{taoiseach9|}}} | termlabel = {{{term_label9|{{{termlabel9|In office}}}}}} | termend = {{#if:{{{termend9|}}}|{{{termend9}}}|{{{term_end9|}}}}} | termstart = {{#if:{{{termstart9|}}}|{{{termstart9}}}|{{{term_start9|}}}}} | term = {{{term9|}}} | title = {{{title9|}}} | vicegovernor = {{{vicegovernor9|}}} | vicepresident = {{{vicepresident9|}}} | vicepremier = {{{vicepremier9|}}} | viceprimeminister = {{{viceprimeminister9|}}} | party = {{{party|}}} | prior_term = {{{prior_term9|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname10|}}} | 1namedata = {{{1namedata10|}}} | 2blankname = {{{2blankname10|}}} | 2namedata = {{{2namedata10|}}} | 3blankname = {{{3blankname10|}}} | 3namedata = {{{3namedata10|}}} | 4blankname = {{{4blankname10|}}} | 4namedata = {{{4namedata10|}}} | 5blankname = {{{5blankname10|}}} | 5namedata = {{{5namedata10|}}} | alongside = {{{alongside10|}}} | ambassador_from = {{{ambassador_from10|}}} | appointer = {{#if: {{{appointer10|}}} | {{{appointer10}}} | {{{appointed10|}}} }} | assembly = {{{assembly10|}}} | assuming = {{{assuming10|}}} | chancellor = {{{chancellor10|}}} | co-leader = {{{co-leader10|}}} | constituency_{{#if:{{{constituency_AM10|}}}|AM|MP}} = {{#if: {{{constituency_AM10|}}} | {{{constituency_AM10}}} | {{{constituency_MP10|}}} }} | constituency = {{{constituency10|}}} | convocation = {{{convocation10|}}} | country = {{{country10|}}} | deputy = {{{deputy10|}}} | district = {{{district10|}}} | firstminister = {{{firstminister10|}}} | governor-general = {{{governor-general10|}}} | governor_general = {{{governor_general10|}}} | governor = {{{governor10|}}} | jr/sr = {{{jr/sr10|}}} | jr/sr and state = {{{jr/sr and state10|}}} | leader = {{{leader10|}}} | legislature = {{{legislature10|}}} | lieutenant_governor = {{{lieutenant_governor10|}}} | lieutenant = {{{lieutenant10|}}} | minister_from = {{{minister_from10|}}} | minority_floor_leader = {{{minority_floor_leader10|}}} | majority_floor_leader = {{{majority_floor_leader10|}}} | majority_leader = {{#if: {{{majorityleader10|}}} | {{{majorityleader10}}} | {{{majority_leader10|}}} }} | majority = {{{majority10|}}} | minister = {{{minister10|}}} | minority_leader = {{#if: {{{minorityleader10|}}} | {{{minorityleader10}}} | {{{minority_leader10|}}} }} | monarch = {{{monarch10|}}} | nominator = {{{nominator10|}}} | office = {{{office10|}}} | order = {{{order10|}}} | parliament = {{{parliament10|}}} | parliamentarygroup = {{{parliamentarygroup10|}}} | predecessor = {{{predecessor10|}}} | preceding = {{{preceding10|}}} | preceded = {{{preceded10|}}} | premier = {{{premier10|}}} | president = {{{president10|}}} | primeminister = {{{primeminister10|}}} | riding = {{{riding10|}}} | state_assembly = {{{state_assembly10|}}} | state_delegate = {{{state_delegate10|}}} | state_house = {{{state_house10|}}} | state_legislature = {{{state_legislature10|}}} | state_senate = {{{state_senate10|}}} | state = {{{state10|}}} | status = {{{status10|}}} | subterm = {{nobold|{{{subterm10|}}}}} | suboffice = {{{suboffice10|}}} | succeeded = {{{succeeded10|}}} | succeeding = {{{succeeding10|}}} | successor = {{{successor10|}}} | taoiseach = {{{taoiseach10|}}} | termlabel = {{{term_label10|{{{termlabel10|In office}}}}}} | termend = {{#if:{{{termend10|}}}|{{{termend10}}}|{{{term_end10|}}}}} | termstart = {{#if:{{{termstart10|}}}|{{{termstart10}}}|{{{term_start10|}}}}} | term = {{{term10|}}} | title = {{{title10|}}} | vicegovernor = {{{vicegovernor10|}}} | vicepresident = {{{vicepresident10|}}} | vicepremier = {{{vicepremier10|}}} | viceprimeminister = {{{viceprimeminister10|}}} | party = {{{party|}}} | prior_term = {{{prior_term10|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname11|}}} | 1namedata = {{{1namedata11|}}} | 2blankname = {{{2blankname11|}}} | 2namedata = {{{2namedata11|}}} | 3blankname = {{{3blankname11|}}} | 3namedata = {{{3namedata11|}}} | 4blankname = {{{4blankname11|}}} | 4namedata = {{{4namedata11|}}} | 5blankname = {{{5blankname11|}}} | 5namedata = {{{5namedata11|}}} | alongside = {{{alongside11|}}} | ambassador_from = {{{ambassador_from11|}}} | appointer = {{#if: {{{appointer11|}}} | {{{appointer11}}} | {{{appointed11|}}} }} | assembly = {{{assembly11|}}} | assuming = {{{assuming11|}}} | chancellor = {{{chancellor11|}}} | co-leader = {{{co-leader11|}}} | constituency_{{#if:{{{constituency_AM11|}}}|AM|MP}} = {{#if: {{{constituency_AM11|}}} | {{{constituency_AM11}}} | {{{constituency_MP11|}}} }} | constituency = {{{constituency11|}}} | convocation = {{{convocation11|}}} | country = {{{country11|}}} | deputy = {{{deputy11|}}} | district = {{{district11|}}} | firstminister = {{{firstminister11|}}} | governor-general = {{{governor-general11|}}} | governor_general = {{{governor_general11|}}} | governor = {{{governor11|}}} | jr/sr = {{{jr/sr11|}}} | jr/sr and state = {{{jr/sr and state11|}}} | leader = {{{leader11|}}} | legislature = {{{legislature11|}}} | lieutenant_governor = {{{lieutenant_governor11|}}} | lieutenant = {{{lieutenant11|}}} | minister_from = {{{minister_from11|}}} | minority_floor_leader = {{{minority_floor_leader11|}}} | majority_floor_leader = {{{majority_floor_leader11|}}} | majority_leader = {{#if: {{{majorityleader11|}}} | {{{majorityleader11}}} | {{{majority_leader11|}}} }} | majority = {{{majority11|}}} | minister = {{{minister11|}}} | minority_leader = {{#if: {{{minorityleader11|}}} | {{{minorityleader11}}} | {{{minority_leader11|}}} }} | monarch = {{{monarch11|}}} | nominator = {{{nominator11|}}} | office = {{{office11|}}} | order = {{{order11|}}} | parliament = {{{parliament11|}}} | parliamentarygroup = {{{parliamentarygroup11|}}} | predecessor = {{{predecessor11|}}} | preceding = {{{preceding11|}}} | preceded = {{{preceded11|}}} | premier = {{{premier11|}}} | president = {{{president11|}}} | primeminister = {{{primeminister11|}}} | riding = {{{riding11|}}} | state_assembly = {{{state_assembly11|}}} | state_delegate = {{{state_delegate11|}}} | state_house = {{{state_house11|}}} | state_legislature = {{{state_legislature11|}}} | state_senate = {{{state_senate11|}}} | state = {{{state11|}}} | status = {{{status11|}}} | subterm = {{nobold|{{{subterm11|}}}}} | suboffice = {{{suboffice11|}}} | succeeded = {{{succeeded11|}}} | succeeding = {{{succeeding11|}}} | successor = {{{successor11|}}} | taoiseach = {{{taoiseach11|}}} | termlabel = {{{term_label11|{{{termlabel11|In office}}}}}} | termend = {{#if:{{{termend11|}}}|{{{termend11}}}|{{{term_end11|}}}}} | termstart = {{#if:{{{termstart11|}}}|{{{termstart11}}}|{{{term_start11|}}}}} | term = {{{term11|}}} | title = {{{title11|}}} | vicegovernor = {{{vicegovernor11|}}} | vicepresident = {{{vicepresident11|}}} | vicepremier = {{{vicepremier11|}}} | viceprimeminister = {{{viceprimeminister11|}}} | party = {{{party|}}} | prior_term = {{{prior_term11|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname12|}}} | 1namedata = {{{1namedata12|}}} | 2blankname = {{{2blankname12|}}} | 2namedata = {{{2namedata12|}}} | 3blankname = {{{3blankname12|}}} | 3namedata = {{{3namedata12|}}} | 4blankname = {{{4blankname12|}}} | 4namedata = {{{4namedata12|}}} | 5blankname = {{{5blankname12|}}} | 5namedata = {{{5namedata12|}}} | alongside = {{{alongside12|}}} | ambassador_from = {{{ambassador_from12|}}} | appointer = {{#if: {{{appointer12|}}} | {{{appointer12}}} | {{{appointed12|}}} }} | assembly = {{{assembly12|}}} | assuming = {{{assuming12|}}} | chancellor = {{{chancellor12|}}} | co-leader = {{{co-leader12|}}} | constituency_{{#if:{{{constituency_AM12|}}}|AM|MP}} = {{#if: {{{constituency_AM12|}}} | {{{constituency_AM12}}} | {{{constituency_MP12|}}} }} | constituency = {{{constituency12|}}} | convocation = {{{convocation12|}}} | country = {{{country12|}}} | deputy = {{{deputy12|}}} | district = {{{district12|}}} | firstminister = {{{firstminister12|}}} | governor-general = {{{governor-general12|}}} | governor_general = {{{governor_general12|}}} | governor = {{{governor12|}}} | jr/sr = {{{jr/sr12|}}} | jr/sr and state = {{{jr/sr and state12|}}} | leader = {{{leader12|}}} | legislature = {{{legislature12|}}} | lieutenant_governor = {{{lieutenant_governor12|}}} | lieutenant = {{{lieutenant12|}}} | minister_from = {{{minister_from12|}}} | minority_floor_leader = {{{minority_floor_leader12|}}} | majority_floor_leader = {{{majority_floor_leader12|}}} | majority_leader = {{#if: {{{majorityleader12|}}} | {{{majorityleader12}}} | {{{majority_leader12|}}} }} | majority = {{{majority12|}}} | minister = {{{minister12|}}} | minority_leader = {{#if: {{{minorityleader12|}}} | {{{minorityleader12}}} | {{{minority_leader12|}}} }} | monarch = {{{monarch12|}}} | nominator = {{{nominator12|}}} | office = {{{office12|}}} | order = {{{order12|}}} | parliament = {{{parliament12|}}} | parliamentarygroup = {{{parliamentarygroup12|}}} | predecessor = {{{predecessor12|}}} | preceding = {{{preceding12|}}} | preceded = {{{preceded12|}}} | premier = {{{premier12|}}} | president = {{{president12|}}} | primeminister = {{{primeminister12|}}} | riding = {{{riding12|}}} | state_assembly = {{{state_assembly12|}}} | state_delegate = {{{state_delegate12|}}} | state_house = {{{state_house12|}}} | state_legislature = {{{state_legislature12|}}} | state_senate = {{{state_senate12|}}} | state = {{{state12|}}} | status = {{{status12|}}} | subterm = {{nobold|{{{subterm12|}}}}} | suboffice = {{{suboffice12|}}} | succeeded = {{{succeeded12|}}} | succeeding = {{{succeeding12|}}} | successor = {{{successor12|}}} | taoiseach = {{{taoiseach12|}}} | termlabel = {{{term_label12|{{{termlabel12|In office}}}}}} | termend = {{#if:{{{termend12|}}}|{{{termend12}}}|{{{term_end12|}}}}} | termstart = {{#if:{{{termstart12|}}}|{{{termstart12}}}|{{{term_start12|}}}}} | term = {{{term12|}}} | title = {{{title12|}}} | vicegovernor = {{{vicegovernor12|}}} | vicepresident = {{{vicepresident12|}}} | vicepremier = {{{vicepremier12|}}} | viceprimeminister = {{{viceprimeminister12|}}} | party = {{{party|}}} | prior_term = {{{prior_term12|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname13|}}} | 1namedata = {{{1namedata13|}}} | 2blankname = {{{2blankname13|}}} | 2namedata = {{{2namedata13|}}} | 3blankname = {{{3blankname13|}}} | 3namedata = {{{3namedata13|}}} | 4blankname = {{{4blankname13|}}} | 4namedata = {{{4namedata13|}}} | 5blankname = {{{5blankname13|}}} | 5namedata = {{{5namedata13|}}} | alongside = {{{alongside13|}}} | ambassador_from = {{{ambassador_from13|}}} | appointer = {{#if: {{{appointer13|}}} | {{{appointer13}}} | {{{appointed13|}}} }} | assembly = {{{assembly13|}}} | assuming = {{{assuming13|}}} | chancellor = {{{chancellor13|}}} | co-leader = {{{co-leader13|}}} | constituency_{{#if:{{{constituency_AM13|}}}|AM|MP}} = {{#if: {{{constituency_AM13|}}} | {{{constituency_AM13}}} | {{{constituency_MP13|}}} }} | constituency = {{{constituency13|}}} | convocation = {{{convocation13|}}} | country = {{{country13|}}} | deputy = {{{deputy13|}}} | district = {{{district13|}}} | firstminister = {{{firstminister13|}}} | governor-general = {{{governor-general13|}}} | governor_general = {{{governor_general13|}}} | governor = {{{governor13|}}} | jr/sr = {{{jr/sr13|}}} | jr/sr and state = {{{jr/sr and state13|}}} | leader = {{{leader13|}}} | legislature = {{{legislature13|}}} | lieutenant_governor = {{{lieutenant_governor13|}}} | lieutenant = {{{lieutenant13|}}} | minister_from = {{{minister_from13|}}} | minority_floor_leader = {{{minority_floor_leader13|}}} | majority_floor_leader = {{{majority_floor_leader13|}}} | majority_leader = {{#if: {{{majorityleader13|}}} | {{{majorityleader13}}} | {{{majority_leader13|}}} }} | majority = {{{majority13|}}} | minister = {{{minister13|}}} | minority_leader = {{#if: {{{minorityleader13|}}} | {{{minorityleader13}}} | {{{minority_leader13|}}} }} | monarch = {{{monarch13|}}} | nominator = {{{nominator13|}}} | office = {{{office13|}}} | order = {{{order13|}}} | parliament = {{{parliament13|}}} | parliamentarygroup = {{{parliamentarygroup13|}}} | predecessor = {{{predecessor13|}}} | preceding = {{{preceding13|}}} | preceded = {{{preceded13|}}} | premier = {{{premier13|}}} | president = {{{president13|}}} | primeminister = {{{primeminister13|}}} | riding = {{{riding13|}}} | state_assembly = {{{state_assembly13|}}} | state_delegate = {{{state_delegate13|}}} | state_house = {{{state_house13|}}} | state_legislature = {{{state_legislature13|}}} | state_senate = {{{state_senate13|}}} | state = {{{state13|}}} | status = {{{status13|}}} | subterm = {{nobold|{{{subterm13|}}}}} | suboffice = {{{suboffice13|}}} | succeeded = {{{succeeded13|}}} | succeeding = {{{succeeding13|}}} | successor = {{{successor13|}}} | taoiseach = {{{taoiseach13|}}} | termlabel = {{{term_label13|{{{termlabel13|In office}}}}}} | termend = {{#if:{{{termend13|}}}|{{{termend13}}}|{{{term_end13|}}}}} | termstart = {{#if:{{{termstart13|}}}|{{{termstart13}}}|{{{term_start13|}}}}} | term = {{{term13|}}} | title = {{{title13|}}} | vicegovernor = {{{vicegovernor13|}}} | vicepresident = {{{vicepresident13|}}} | vicepremier = {{{vicepremier13|}}} | viceprimeminister = {{{viceprimeminister13|}}} | party = {{{party|}}} | prior_term = {{{prior_term13|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname14|}}} | 1namedata = {{{1namedata14|}}} | 2blankname = {{{2blankname14|}}} | 2namedata = {{{2namedata14|}}} | 3blankname = {{{3blankname14|}}} | 3namedata = {{{3namedata14|}}} | 4blankname = {{{4blankname14|}}} | 4namedata = {{{4namedata14|}}} | 5blankname = {{{5blankname14|}}} | 5namedata = {{{5namedata14|}}} | alongside = {{{alongside14|}}} | ambassador_from = {{{ambassador_from14|}}} | appointer = {{#if: {{{appointer14|}}} | {{{appointer14}}} | {{{appointed14|}}} }} | assembly = {{{assembly14|}}} | assuming = {{{assuming14|}}} | chancellor = {{{chancellor14|}}} | co-leader = {{{co-leader14|}}} | constituency_{{#if:{{{constituency_AM14|}}}|AM|MP}} = {{#if: {{{constituency_AM14|}}} | {{{constituency_AM14}}} | {{{constituency_MP14|}}} }} | constituency = {{{constituency14|}}} | convocation = {{{convocation14|}}} | country = {{{country14|}}} | deputy = {{{deputy14|}}} | district = {{{district14|}}} | firstminister = {{{firstminister14|}}} | governor-general = {{{governor-general14|}}} | governor_general = {{{governor_general14|}}} | governor = {{{governor14|}}} | jr/sr = {{{jr/sr14|}}} | jr/sr and state = {{{jr/sr and state14|}}} | leader = {{{leader14|}}} | legislature = {{{legislature14|}}} | lieutenant_governor = {{{lieutenant_governor14|}}} | lieutenant = {{{lieutenant14|}}} | minister_from = {{{minister_from14|}}} | minority_floor_leader = {{{minority_floor_leader14|}}} | majority_floor_leader = {{{majority_floor_leader14|}}} | majority_leader = {{#if: {{{majorityleader14|}}} | {{{majorityleader14}}} | {{{majority_leader14|}}} }} | majority = {{{majority14|}}} | minister = {{{minister14|}}} | minority_leader = {{#if: {{{minorityleader14|}}} | {{{minorityleader14}}} | {{{minority_leader14|}}} }} | monarch = {{{monarch14|}}} | nominator = {{{nominator14|}}} | office = {{{office14|}}} | order = {{{order14|}}} | parliament = {{{parliament14|}}} | parliamentarygroup = {{{parliamentarygroup14|}}} | predecessor = {{{predecessor14|}}} | preceding = {{{preceding14|}}} | preceded = {{{preceded14|}}} | premier = {{{premier14|}}} | president = {{{president14|}}} | primeminister = {{{primeminister14|}}} | riding = {{{riding14|}}} | state_assembly = {{{state_assembly14|}}} | state_delegate = {{{state_delegate14|}}} | state_house = {{{state_house14|}}} | state_legislature = {{{state_legislature14|}}} | state_senate = {{{state_senate14|}}} | state = {{{state14|}}} | status = {{{status14|}}} | subterm = {{nobold|{{{subterm14|}}}}} | suboffice = {{{suboffice14|}}} | succeeded = {{{succeeded14|}}} | succeeding = {{{succeeding14|}}} | successor = {{{successor14|}}} | taoiseach = {{{taoiseach14|}}} | termlabel = {{{term_label14|{{{termlabel14|In office}}}}}} | termend = {{#if:{{{termend14|}}}|{{{termend14}}}|{{{term_end14|}}}}} | termstart = {{#if:{{{termstart14|}}}|{{{termstart14}}}|{{{term_start14|}}}}} | term = {{{term14|}}} | title = {{{title14|}}} | vicegovernor = {{{vicegovernor14|}}} | vicepresident = {{{vicepresident14|}}} | vicepremier = {{{vicepremier14|}}} | viceprimeminister = {{{viceprimeminister14|}}} | party = {{{party|}}} | prior_term = {{{prior_term14|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname15|}}} | 1namedata = {{{1namedata15|}}} | 2blankname = {{{2blankname15|}}} | 2namedata = {{{2namedata15|}}} | 3blankname = {{{3blankname15|}}} | 3namedata = {{{3namedata15|}}} | 4blankname = {{{4blankname15|}}} | 4namedata = {{{4namedata15|}}} | 5blankname = {{{5blankname15|}}} | 5namedata = {{{5namedata15|}}} | alongside = {{{alongside15|}}} | ambassador_from = {{{ambassador_from15|}}} | appointer = {{#if: {{{appointer15|}}} | {{{appointer15}}} | {{{appointed15|}}} }} | assembly = {{{assembly15|}}} | assuming = {{{assuming15|}}} | chancellor = {{{chancellor15|}}} | co-leader = {{{co-leader15|}}} | constituency_{{#if:{{{constituency_AM15|}}}|AM|MP}} = {{#if: {{{constituency_AM15|}}} | {{{constituency_AM15}}} | {{{constituency_MP15|}}} }} | constituency = {{{constituency15|}}} | convocation = {{{convocation15|}}} | country = {{{country15|}}} | deputy = {{{deputy15|}}} | district = {{{district15|}}} | firstminister = {{{firstminister15|}}} | governor-general = {{{governor-general15|}}} | governor_general = {{{governor_general15|}}} | governor = {{{governor15|}}} | jr/sr = {{{jr/sr15|}}} | jr/sr and state = {{{jr/sr and state15|}}} | leader = {{{leader15|}}} | legislature = {{{legislature15|}}} | lieutenant_governor = {{{lieutenant_governor15|}}} | lieutenant = {{{lieutenant15|}}} | minister_from = {{{minister_from15|}}} | minority_floor_leader = {{{minority_floor_leader15|}}} | majority_floor_leader = {{{majority_floor_leader15|}}} | majority_leader = {{#if: {{{majorityleader15|}}} | {{{majorityleader15}}} | {{{majority_leader15|}}} }} | majority = {{{majority15|}}} | minister = {{{minister15|}}} | minority_leader = {{#if: {{{minorityleader15|}}} | {{{minorityleader15}}} | {{{minority_leader15|}}} }} | monarch = {{{monarch15|}}} | nominator = {{{nominator15|}}} | office = {{{office15|}}} | order = {{{order15|}}} | parliament = {{{parliament15|}}} | parliamentarygroup = {{{parliamentarygroup15|}}} | predecessor = {{{predecessor15|}}} | preceding = {{{preceding15|}}} | preceded = {{{preceded15|}}} | premier = {{{premier15|}}} | president = {{{president15|}}} | primeminister = {{{primeminister15|}}} | riding = {{{riding15|}}} | state_assembly = {{{state_assembly15|}}} | state_delegate = {{{state_delegate15|}}} | state_house = {{{state_house15|}}} | state_legislature = {{{state_legislature15|}}} | state_senate = {{{state_senate15|}}} | state = {{{state15|}}} | status = {{{status15|}}} | subterm = {{nobold|{{{subterm15|}}}}} | suboffice = {{{suboffice15|}}} | succeeded = {{{succeeded15|}}} | succeeding = {{{succeeding15|}}} | successor = {{{successor15|}}} | taoiseach = {{{taoiseach15|}}} | termlabel = {{{term_label15|{{{termlabel15|In office}}}}}} | termend = {{#if:{{{termend15|}}}|{{{termend15}}}|{{{term_end15|}}}}} | termstart = {{#if:{{{termstart15|}}}|{{{termstart15}}}|{{{term_start15|}}}}} | term = {{{term15|}}} | title = {{{title15|}}} | vicegovernor = {{{vicegovernor15|}}} | vicepresident = {{{vicepresident15|}}} | vicepremier = {{{vicepremier15|}}} | viceprimeminister = {{{viceprimeminister15|}}} | party = {{{party|}}} | prior_term = {{{prior_term15|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname16|}}} | 1namedata = {{{1namedata16|}}} | 2blankname = {{{2blankname16|}}} | 2namedata = {{{2namedata16|}}} | 3blankname = {{{3blankname16|}}} | 3namedata = {{{3namedata16|}}} | 4blankname = {{{4blankname16|}}} | 4namedata = {{{4namedata16|}}} | 5blankname = {{{5blankname16|}}} | 5namedata = {{{5namedata16|}}} | alongside = {{{alongside16|}}} | ambassador_from = {{{ambassador_from16|}}} | appointer = {{#if: {{{appointer16|}}} | {{{appointer16}}} | {{{appointed16|}}} }} | assembly = {{{assembly16|}}} | assuming = {{{assuming16|}}} | chancellor = {{{chancellor16|}}} | co-leader = {{{co-leader16|}}} | constituency_{{#if:{{{constituency_AM16|}}}|AM|MP}} = {{#if: {{{constituency_AM16|}}} | {{{constituency_AM16}}} | {{{constituency_MP16|}}} }} | constituency = {{{constituency16|}}} | convocation = {{{convocation16|}}} | country = {{{country16|}}} | deputy = {{{deputy16|}}} | district = {{{district16|}}} | firstminister = {{{firstminister16|}}} | governor-general = {{{governor-general16|}}} | governor_general = {{{governor_general16|}}} | governor = {{{governor16|}}} | jr/sr = {{{jr/sr16|}}} | jr/sr and state = {{{jr/sr and state16|}}} | leader = {{{leader16|}}} | legislature = {{{legislature16|}}} | lieutenant_governor = {{{lieutenant_governor16|}}} | lieutenant = {{{lieutenant16|}}} | minister_from = {{{minister_from16|}}} | minority_floor_leader = {{{minority_floor_leader16|}}} | majority_floor_leader = {{{majority_floor_leader16|}}} | majority_leader = {{#if: {{{majorityleader16|}}} | {{{majorityleader16}}} | {{{majority_leader16|}}} }} | majority = {{{majority16|}}} | minister = {{{minister16|}}} | minority_leader = {{#if: {{{minorityleader16|}}} | {{{minorityleader16}}} | {{{minority_leader16|}}} }} | monarch = {{{monarch16|}}} | nominator = {{{nominator16|}}} | office = {{{office16|}}} | order = {{{order16|}}} | parliament = {{{parliament16|}}} | parliamentarygroup = {{{parliamentarygroup16|}}} | predecessor = {{{predecessor16|}}} | preceding = {{{preceding16|}}} | preceded = {{{preceded16|}}} | premier = {{{premier16|}}} | president = {{{president16|}}} | primeminister = {{{primeminister16|}}} | riding = {{{riding16|}}} | state_assembly = {{{state_assembly16|}}} | state_delegate = {{{state_delegate16|}}} | state_house = {{{state_house16|}}} | state_legislature = {{{state_legislature16|}}} | state_senate = {{{state_senate16|}}} | state = {{{state16|}}} | status = {{{status16|}}} | subterm = {{nobold|{{{subterm16|}}}}} | suboffice = {{{suboffice16|}}} | succeeded = {{{succeeded16|}}} | succeeding = {{{succeeding16|}}} | successor = {{{successor16|}}} | taoiseach = {{{taoiseach16|}}} | termlabel = {{{term_label16|{{{termlabel16|In office}}}}}} | termend = {{#if:{{{termend16|}}}|{{{termend16}}}|{{{term_end16|}}}}} | termstart = {{#if:{{{termstart16|}}}|{{{termstart16}}}|{{{term_start16|}}}}} | term = {{{term16|}}} | title = {{{title16|}}} | vicegovernor = {{{vicegovernor16|}}} | vicepresident = {{{vicepresident16|}}} | vicepremier = {{{vicepremier16|}}} | viceprimeminister = {{{viceprimeminister16|}}} | party = {{{party|}}} | prior_term = {{{prior_term16|}}} }}}} | data2 = {{{module0|}}} <!----------Personal data----------> | header3 = {{#if:{{{pronunciation|}}}{{{birth_name|{{{birthname|}}}}}}{{{birth_date|}}}{{{birth_place|}}}{{{death_date|}}}{{{death_place|}}}{{{resting_place|{{{restingplace|}}}}}}{{{resting_place_coordinates|{{{restingplacecoordinates|}}}}}}{{{citizenship|}}}{{{nationality|}}}{{{party|}}}{{{otherparty|}}}{{{spouse|}}}{{{spouses|}}}{{{partner|}}}{{{relations|}}}{{{children|}}}{{{parents|}}}{{{mother|}}}{{{father|}}}{{{relatives|}}}{{{residence|}}}{{{education|}}}{{{alma_mater|}}}{{{occupation|}}}{{{profession|}}}{{{known_for|}}}{{{salary|}}}{{{cabinet|}}}{{{committees|}}}{{{portfolio|}}}{{{awards|}}}{{{data1|}}}{{{data2|}}}{{{data3|}}}{{{data4|}}}{{{data5|}}}|Personal details}} | label4 = Pronunciation | data4 = {{{pronunciation|}}} | label5 = Born | data5 = {{br separated entries |1 = {{#if:{{{birth_name|{{{birthname|}}}}}}|<div style="display:inline" class="nickname">{{{birth_name|{{{birthname}}}}}}</div>}} |2 = {{{birth_date|}}} |3 = {{{birth_place|}}} }} | label6 = Died | data6 = {{br separated entries|{{{death_date|}}}|{{{death_place|}}}}} | label7 = {{#ifexpr: {{strfind short| {{{death_cause|}}}|Assassination}} | Manner |{{#if:{{{death_manner|}}}|Manner|Cause}} }}&nbsp;of&nbsp;death | data7 = {{#if:{{{death_manner|}}}|{{{death_manner|}}}|{{{death_cause|}}}}} | label8 = Resting place | class8 = label | data8 = {{br separated entries|{{{resting_place|{{{restingplace|}}}}}}|{{{resting_place_coordinates|{{{restingplacecoordinates|}}}}}}}} | label9 = Citizenship | data9 = {{{citizenship|}}} | label10 = Nationality | data10 = {{#switch:{{Delink|{{{nationality|}}}}} | {{#ifeq:{{Country2nationality|{{Find country|{{Delink|{{{birth_place|}}}}}}}}}|{{Delink|{{{nationality|}}}}}|{{Delink|{{{nationality|}}}}}}} = | {{#ifeq:{{Find country|{{{birth_place|}}}}}|England|British}} = | #default = {{{nationality|}}} }} | label11 = Political party | data11 = {{#switch:{{{party|}}} | = | [[United States Democratic Party|Democrat]] | [[Democratic Party (United States)|Democratic]] | [[Democratic Party (United States)|Democrat]] = [[Democratic Party (United States)|Democratic]] | [[Republican Party (United States)|Republican]] | [[United States Republican Party]] | [[United States Republican Party|Republican]] | [[Republican Party (United States)|Republican Party]] = [[Republican Party (United States)|Republican]] | [[Conservative Party (UK)|Conservative Party]] | [[Conservative Party (UK)|Conservative]] = [[Conservative Party (UK)|Conservative]] | [[Labour Party (UK)|Labour Party]] | [[Labour Party (UK)|Labour]] = [[Labour Party (UK)|Labour]] | [[Conservative Party of Canada|Conservative Party]] | [[Conservative Party of Canada|Conservative]] = [[Conservative Party of Canada|Conservative]] | [[Liberal Party of Canada|Liberal Party]] | [[Liberal Party of Canada|Liberal]] = [[Liberal Party of Canada|Liberal]] | KMT | Kuomintang | [[KMT]] | [[Kuomintang|KMT]] | [[Kuomintang]] | Kuomintang (KMT) | [[Kuomintang]] (KMT) = [[Kuomintang]] | DPP | [[Democratic Progressive Party|DPP]] | [[Democratic Progressive Party]] = [[Democratic Progressive Party]] | #default = {{{party|}}} }} | label12 = Other political<br />affiliations | data12 = {{{otherparty|}}} | label13 = Height | data13 = {{#if:{{{height|}}}|{{infobox person/height|{{{height|}}}}}}} | label14 = Spouse{{#if:{{{spouses|}}}|s|{{Pluralize from text|{{{spouse|{{{spouse(s)|}}}}}}|likely=(s)|plural=s}}}} | data14 = {{{spouse|{{{spouses|{{{spouse(s)|}}}}}}}}} | label15 = Domestic partner{{Pluralize from text|{{{partner|}}}|likely=(s)|plural=s}} | data15 = {{{partner|}}} | label16 = Relations | data16 = {{{relations|}}} | label17 = Children | data17 = {{{children|}}} | label18 = Parent{{#if:{{{parents|}}}|{{Pluralize from text|{{{parents|}}}|likely=(s)|plural=s}}|<!-- -->{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|s}}}} | data18 = {{#if:{{{parents|}}}|{{{parents}}}|{{Unbulleted list|{{#if:{{{father|}}}|{{{father}}} (father)}}|{{#if:{{{mother|}}}|{{{mother}}} (mother)}}}}}} | label19 = Relatives | data19 = {{{relatives|}}} | label20 = Residence{{Pluralize from text|{{{residence|}}}|likely=(s)|plural=s}} | class20 = {{#if:{{{death_date|}}}{{{death_place|}}}||label}} | data20 = {{{residence|}}} | label21 = Education | data21 = {{{education|}}} | label22 = [[Alma mater]] | data22 = {{{alma_mater|}}} | label23 = Occupation | data23 = {{{occupation|}}} | label24 = Profession | data24 = {{{profession|}}} | label25 = Known for | data25 = {{{known_for|}}} | label26 = Salary | data26 = {{{salary|}}} | label27 = Cabinet | data27 = {{{cabinet|}}} | label28 = Committees | data28 = {{{committees|}}} | label29 = Portfolio | data29 = {{{portfolio|}}} | label30 = {{#if:{{{mawards|}}}|Civilian awards|Awards}} | data30 = {{{awards|}}} | label31 = {{{blank1}}} | data31 = {{{data1|}}} | label32 = {{{blank2}}} | data32 = {{{data2|}}} | label33 = {{{blank3}}} | data33 = {{{data3|}}} | label34 = {{{blank4}}} | data34 = {{{data4|}}} | label35 = {{{blank5}}} | data35 = {{{data5|}}} | label36 = Signature | data36 = {{#if:{{{signature|}}}|[[File:{{{signature}}}|{{#if:{{{signature_size|}}}|{{{signature_size}}}|128x80px}}|alt={{{signature_alt|}}}|{{PAGENAME}}'s signature]]}} | label37 = Website | data37 = {{{website|}}} | label38 = Nickname{{Pluralize from text|{{{nickname|}}}|likely=(s)|plural=s}} | data38 = {{{nickname|}}} | header39 = {{#if:{{{allegiance|}}}{{{branch|}}}{{{serviceyears|}}}{{{rank|}}}{{{unit|}}}{{{commands|}}}{{{battles|}}}{{{military_blank1|}}}|Military service}} | label40 = Allegiance | data40 = {{{allegiance|}}} | label41 = {{#if:{{{branch_label|}}}|{{{branch_label|}}}|Branch/service}} | data41 = {{{branch|}}} | label42 = {{#if:{{{serviceyears_label|}}}|{{{serviceyears_label|}}}|Years&nbsp;of service}} | data42 = {{{serviceyears|}}} | label43 = {{#if:{{{rank_label|}}}|{{{rank_label|}}}|Rank}} | data43 = {{{rank|}}} | label44 = {{#if:{{{unit_label|}}}|{{{unit_label|}}}|Unit}} | data44 = {{{unit|}}} | label45 = Commands | data45 = {{{commands|}}} | label46 = {{#if:{{{battles_label|}}}|{{{battles_label|}}}|Battles/wars}} | data46 = {{{battles|}}} | label47 = {{#if:{{{awards|}}}|Military awards|Awards}} | data47 = {{{mawards|}}} | label48 = {{{military_blank1}}} | data48 = {{{military_data1|}}} | label49 = {{{military_blank2}}} | data49 = {{{military_data2|}}} | label50 = {{{military_blank3}}} | data50 = {{{military_data3|}}} | label51 = {{{military_blank4}}} | data51 = {{{military_data4|}}} | label52 = {{{military_blank5}}} | data52 = {{{military_data5|}}} | data53 = {{{module|}}} | data54 = {{{module2|}}} | data55 = {{{module3|}}} | data56 = {{{module4|}}} | data57 = {{{module5|}}} | data58 = {{{footnotes|}}} | belowstyle = border-top: 1px solid right; font-size: 95% | below = <div>{{#if:{{{date|}}}| As of {{{date}}}{{#if:{{{year|}}}|, {{{year}}}}}}}</div>{{#if:{{{source|}}}|Source: [{{{source}}}]}} }}{{#if:{{{pronunciation|}}}|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Biography template using pronunciation]]}} }}{{#if:{{{1blankname0|}}}{{{1namedata0|}}}{{{2blankname0|}}}{{{2namedata0|}}}{{{3blankname0|}}}{{{3namedata0|}}}{{{4blankname0|}}}{{{4namedata0|}}}{{{5blankname0|}}}{{{5namedata0|}}}{{{alongside0|}}}{{{ambassador_from0|}}}{{{appointer0|}}}{{{assembly0|}}}{{{assuming0|}}}{{{chancellor0|}}}{{{co-leader0|}}}{{{constituency_AM0|}}}{{{constituency0|}}}{{{country0|}}}{{{deputy0|}}}{{{district0|}}}{{{firstminister0|}}}{{{governor-general0|}}}{{{governor0|}}}{{{jr/sr0|}}}{{{jr/sr and state0|}}}{{{leader0|}}}{{{legislature0|}}}{{{lieutenant_governor0|}}}{{{lieutenant0|}}}{{{minister_from0|}}}{{{minority_floor_leader0|}}}{{{majority_floor_leader0|}}}{{{majorityleader0|}}}{{{majority0|}}}{{{minister0|}}}{{{minorityleader0|}}}{{{monarch0|}}}{{{nominator0|}}}{{{office0|}}}{{{order0|}}}{{{parliament0|}}}{{{predecessor0|}}}{{{preceding0|}}}{{{preceded0|}}}{{{premier0|}}}{{{president0|}}}{{{primeminister0|}}}{{{riding0|}}}{{{state_assembly0|}}}{{{state_delegate0|}}}{{{state_house0|}}}{{{state_legislature0|}}}{{{state_senate0|}}}{{{state0|}}}{{{suboffice0|}}}{{{subterm0|}}}{{{succeeded0|}}}{{{succeeding0|}}}{{{successor0|}}}{{{taoiseach0|}}}{{{termend0|}}}{{{termstart0|}}}{{{term0|}}}{{{title0|}}}{{{vicegovernor0|}}}{{{vicepresident0|}}}{{{vicepremier0|}}}{{{viceprimeminister0|}}}{{{prior_term0|}}}{{{appointe0|}}}{{{constituency_0|}}}|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with office0]]}} }}{{#if:{{{speaker|}}}|{{#if:{{{nominee|}}}{{{candidate|}}}||{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with speaker]]}}}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with unknown parameters|_VALUE_{{PAGENAME}}]]}}}}|preview=Page using [[Template:Infobox officeholder]] with unknown parameter "_VALUE_"|ignoreblank=y| regexp1 = 1blankname[%d]* | regexp2 = 1namedata[%d]* | regexp3 = 2blankname[%d]* | regexp4 = 2namedata[%d]* | regexp5 = 3blankname[%d]* | regexp6 = 3namedata[%d]* | regexp7 = 4blankname[%d]* | regexp8 = 4namedata[%d]* | regexp9 = 5blankname[%d]* | regexp10 = 5namedata[%d]* | allegiance | alma_mater | regexp11 = alongside[%d]* | alt | regexp12 = ambassador_from[%d]* | regexp13 = appointed[%d]* | regexp14 = appointer[%d]* | regexp15 = assembly[%d]* | awards | battles | battles_label | birth_date | birth_name | birth_place | birthname | regexp16 = blank[%d]* | bodyclass | branch | branch_label | cabinet | candidate | caption | categories | regexp17 = chancellor[%d]* | children | citizenship | regexp18 = co%-leader[%d]* | commands | committees | regexp19 = constituency[%d]* | regexp20 = constituency_AM[%d]* | regexp21 = constituency_MP[%d]* | regexp22 = convocation[%d]* | regexp23 = country[%d]* | regexp24 = data[%d]* | date | death_cause | death_date | death_manner | death_place | demo | regexp25 = deputy[%d]* | regexp26 = district[%d]* | education | election_date | embed | father | regexp28 = firstminister[%d]* | footnotes | regexp29 = governor[%d]* | regexp30 = governor_general[%d]* | regexp31 = governor%-general[%d]* | height | honorific_prefix | honorific-prefix | honorific_suffix | honorific-suffix | image | image name | image_name_alt | image_size | imagesize | image_upright | incumbent | regexp32 = jr/sr[%d]* | regexp33 = jr/sr and state[%d]* | known_for | regexp34 = leader[%d]* | regexp35 = legislature[%d]* | regexp36 = lieutenant[%d]* | regexp37 = lieutenant_governor[%d]* | mainwidth | regexp38 = majority[%d]* | regexp39 = majority_floor_leader[%d]* | regexp40 = majority_leader[%d]* | regexp41 = majorityleader[%d]* | mawards | regexp42 = military_blank[%d]* | regexp43 = military_data[%d]* | regexp44 = minister[%d]* | regexp45 = minister_from[%d]* | regexp46 = minority_floor_leader[%d]* | regexp47 = minority_leader[%d]* | regexp48 = minorityleader[%d]* | regexp49 = module[%d]* | regexp50 = monarch[%d]* | mother | name | nationality | native_name | native_name_lang | nickname | nocat | regexp51 = nominator[%d]* | nominee | occupation | regexp52 = office[%d]* | opponent | regexp53 = order[%d]* | otherparty | parents | regexp54 = parliament[%d]* | regexp55 = parliamentarygroup[%d]* | partner | party | party_election | portfolio | regexp56 = preceded[%d]* | regexp57 = preceding[%d]* | regexp58 = predecessor[%d]* | regexp59 = premier[%d]* | regexp60 = president[%d]* | regexp61 = primeminister[%d]* | regexp62 = prior_term[%d]* | profession | pronunciation | rank | rank_label | relations | relatives | residence | resting_place | resting_place_coordinates | restingplace | restingplacecoordinates | regexp63 = riding[%d]* | runningmate | salary | serviceyears | serviceyears_label | signature | signature_alt | signature_size | smallimage | smallimage_alt | source | speaker | speaker_office | spouse | spouses | regexp64 = state[%d]* | regexp65 = state_assembly[%d]* | regexp66 = state_delegate[%d]* | regexp67 = state_house[%d]* | regexp68 = state_legislature[%d]* | regexp69 = state_senate[%d]* | regexp70 = status[%d]* | regexp71 = suboffice[%d]* | regexp72 = subterm[%d]* | regexp73 = succeeded[%d]* | regexp74 = succeeding[%d]* | regexp75 = successor[%d]* | regexp76 = taoiseach[%d]* | regexp77 = term[%d]* | regexp78 = term_end[%d]* | regexp79 = term_label[%d]* | regexp80 = term_start[%d]* | regexp81 = termend[%d]* | regexp82 = termlabel[%d]* | regexp83 = termstart[%d]* | regexp84 = title[%d]* | unit | unit_label | regexp85 = vicegovernor[%d]* | regexp86 = vicepremier[%d]* | regexp87 = vicepresident[%d]* | regexp88 = viceprimeminister[%d]* | regexp89 = assuming[%d]* | website | width | year }}<noinclude> {{Documentation}} </noinclude> a019277287dbb30717151685a827a955fb3d1c80 Template:Plainlist/doc 10 635 1430 2023-07-06T04:37:49Z wikipedia>SWinxy 0 {{Template shortcut}} wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE --> {{High-use}} {{Template shortcut|PL}} {{Uses TemplateStyles|Template:Plainlist/styles.css}} This template provides a [[Web Content Accessibility Guidelines|WCAG]]/ISO-standards-compliant accessible alternative to <code><nowiki><br /></nowiki></code> separated lists, per [[WP:UBLIST]] and [[WP:PLIST]] == Usage == {{tl|plainlist}} starts a plain (i.e. unbulleted) list, such as: {{plainlist| * [[cat]] * [[dog]] * [[horse]] * [[cow]] * [[sheep]] * [[pig]] }} It uses proper HTML list markup, which is more standards-compliant and more accessible than separating list items with {{tag|br|s}}. Detailed reasons for using this template can be found at [[WP:UBLIST]]. This template can be used with or without {{tl|endplainlist}}. It is an alternative to {{tl|unbulleted list}}, which performs the same function in a more concise but less wiki-style manner. Note that {{tl|unbulleted list}} will work inside image captions, whereas {{tl|plainlist}} does not. == Examples == {{Markup |<nowiki> {{plainlist| * [[cat]] * [[dog]] * [[horse]] * [[cow]] * [[sheep]] * [[pig]] }} </nowiki> | {{plainlist| * [[cat]] * [[dog]] * [[horse]] * [[cow]] * [[sheep]] * [[pig]] }} }} === Alternative syntax === {{Markup |<nowiki> {{plainlist}} * [[cat]] * [[dog]] * [[horse]] * [[cow]] * [[sheep]] * [[pig]] {{endplainlist}} </nowiki> | {{plainlist}} * [[cat]] * [[dog]] * [[horse]] * [[cow]] * [[sheep]] * [[pig]] {{endplainlist}} }} == Parameters == {{Format TemplateData|JSON= { "params": { "1": { "label": "List content", "description": "If supplied, the list, as a normal bulleted list. (Every line should start with an asterisk. No blank lines between lines.) See template page for how this works otherwise.", "type": "content", "suggested": true }, "class": { "label": "CSS classes", "description": "Adds a CSS class to the containing div.", "type": "string", "default": "The class \"plainlist\" is always applied." }, "style": { "label": "Custom CSS", "description": "Adds CSS style options. Complex styles should not be used in articles (per [[WP:Deviations]]) but may be acceptable on user, project, and talk pages.", "type": "string", "example": "border:solid 1px silver; background:lightyellow" }, "indent": { "label": "Indent level", "description": "Indents the list by a number of standard indents (one indent being 1.6em), particularly handy for inclusion in an indented discussion thread.", "type": "number", "example": "2" } }, "description": "This template provides a WCAG/ISO-standards-compliant accessible alternative to &lt;br /&gt; separated lists, per [[WP:UBLIST]] and [[WP:PLIST]]. It uses proper HTML list markup, which is more standards-compliant and more accessible than separating list items with &lt;br /&gt;. Detailed reasons for using this template can be found at WP:UBLIST." } }} === Controlling line-breaking === Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists, to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details. == Technical details == {{tl|Plainlist}} works by constructing a [[span and div|div]] with the [[Cascading Style Sheets|CSS]] class "plainlist" which has the styles listed in [[Template:Plainlist/styles.css]]. {| class="wikitable" ! Wikitext ! Expanded template ! HTML |- style="vertical-align:top;" | class="nowrap" | <pre> {{Plainlist| * Example 1 * Example 2 * Example 3 }} </pre> | class="nowrap" | {{nowiki2|tag=pre| {{Plainlist| * Example 1 * Example 2 * Example 3 }} }} | <syntaxhighlight lang="html"> <div class="plainlist"> <ul> <li>Example 1</li> <li>Example 2</li> <li>Example 3</li> </ul> </div> </syntaxhighlight> |} == Redirects == * {{tl|Startplainlist}} == See also == * {{tl|unbulleted list}} – essentially the same but uses <code><nowiki>| ... | ... | ...</nowiki></code> instead of <code><nowiki>|* ... * ... * ...</nowiki></code> * {{tl|flatlist}} and {{tl|hlist}} (replacements for comma- or dash-separated lists) * {{tl|bulleted list}} * {{tl|indented plainlist}} * {{tl|ordered list}} * {{section link|Template:Infobox person#Inline lists}} for more information on creating lists within the Infobox family of templates, with examples in the following {{section link|Template:Infobox person#Examples|nopage=y}} {{navbox lists}} <includeonly>{{Sandbox other|| <!-- CATEGORIES HERE, THANKS --> [[Category:List formatting and function templates|Plainlist]] [[Category:Semantic markup templates]] [[Category:Typing-aid templates|Plainlist]] }}</includeonly> 3e643450c27b6fb02ce218d36c67d391a6e20482 Template:Switcher 10 1728 3260 2023-07-06T17:59:58Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Switcher]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2505 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki <includeonly><div class="switcher-container">{{ safesubst:#if:{{{2|}}}|<div>{{{1|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|1|data-switcher-default=""}}>{{safesubst:#if:trim|{{{2|}}}}}</span></div>}}{{ safesubst:#if:{{{4|}}}|<div>{{{3|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|2|data-switcher-default=""}}>{{safesubst:#if:trim|{{{4|}}}}}</span></div>}}{{ safesubst:#if:{{{6|}}}|<div>{{{5|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|3|data-switcher-default=""}}>{{safesubst:#if:trim|{{{6|}}}}}</span></div>}}{{ safesubst:#if:{{{8|}}}|<div>{{{7|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|4|data-switcher-default=""}}>{{safesubst:#if:trim|{{{8|}}}}}</span></div>}}{{ safesubst:#if:{{{10|}}}|<div>{{{9|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|5|data-switcher-default=""}}>{{safesubst:#if:trim|{{{10|}}}}}</span></div>}}{{ safesubst:#if:{{{12|}}}|<div>{{{11|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|6|data-switcher-default=""}}>{{safesubst:#if:trim|{{{12|}}}}}</span></div>}}{{ safesubst:#if:{{{14|}}}|<div>{{{13|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|7|data-switcher-default=""}}>{{safesubst:#if:trim|{{{14|}}}}}</span></div>}}{{ safesubst:#if:{{{16|}}}|<div>{{{15|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|8|data-switcher-default=""}}>{{safesubst:#if:trim|{{{16|}}}}}</span></div>}}{{ safesubst:#if:{{{18|}}}|<div>{{{17|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|9|data-switcher-default=""}}>{{safesubst:#if:trim|{{{18|}}}}}</span></div>}}{{ safesubst:#if:{{{20|}}}|<div>{{{19|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|10|data-switcher-default=""}}>{{safesubst:#if:trim|{{{20|}}}}}</span></div>}}{{ safesubst:#if:{{{22|}}}|<div>{{{21|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|11|data-switcher-default=""}}>{{safesubst:#if:trim|{{{22|}}}}}</span></div>}}{{ safesubst:#if:{{{24|}}}|<div>{{{23|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|12|data-switcher-default=""}}>{{safesubst:#if:trim|{{{24|}}}}}</span></div>}}{{ safesubst:#if:{{{26|}}}|<div>{{{25|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|13|data-switcher-default=""}}>{{safesubst:#if:trim|{{{26|}}}}}</span></div>}}{{ safesubst:#if:{{{28|}}}|<div>{{{27|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|14|data-switcher-default=""}}>{{safesubst:#if:trim|{{{28|}}}}}</span></div>}}{{ safesubst:#if:{{{30|}}}|<div>{{{29|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|15|data-switcher-default=""}}>{{safesubst:#if:trim|{{{30|}}}}}</span></div>}}{{ safesubst:#if:{{{32|}}}|<div>{{{31|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|16|data-switcher-default=""}}>{{safesubst:#if:trim|{{{32|}}}}}</span></div>}}{{ safesubst:#if:{{{34|}}}|<div>{{{33|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|17|data-switcher-default=""}}>{{safesubst:#if:trim|{{{34|}}}}}</span></div>}}{{ safesubst:#if:{{{36|}}}|<div>{{{35|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|18|data-switcher-default=""}}>{{safesubst:#if:trim|{{{36|}}}}}</span></div>}}{{ safesubst:#if:{{{38|}}}|<div>{{{37|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|19|data-switcher-default=""}}>{{safesubst:#if:trim|{{{38|}}}}}</span></div>}}{{ safesubst:#if:{{{40|}}}|<div>{{{39|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|20|data-switcher-default=""}}>{{safesubst:#if:trim|{{{40|}}}}}</span></div>}}</div></includeonly><noinclude><!-- NOTES The includeonly tags prevent the safesubst from substituting. #if:trim is the same as trim but lowers the post-expand include size. -->{{Documentation}}</noinclude> 27599f049d0a8b8213aed569de1293a6910d6e40 Module:Location map/data/USA/doc 828 1684 3126 2023-07-10T05:47:18Z wikipedia>JJMC89 bot III 0 Moving [[:Category:United States location map templates]] to [[:Category:United States location map modules]] per [[Wikipedia:Categories for discussion/Speedy]] wikitext text/x-wiki <!-- Categories go at the bottom of this page. --> {{Module:Location map/data/doc|name=the [[United States]]|projection=an [[equidistant conic projection]]|examples= === Location map, using default map (image) === {{Location map | USA | width = 250 | label = Washington, D.C. | lat_deg = 38.89 | lon_deg = -77.04 }} <pre style="width:30em"> {{Location map | USA | width = 250 | label = Washington, D.C. | lat_deg = 38.89 | lon_deg = -77.04 }} </pre> {{clear}} === Location map many, using relief map (image1) === {{Location map many | USA | relief = yes | width = 250 | caption = Two locations in the United States | label1 = Washington, D.C. | lat1_deg = 38.89 | lon1_deg = -77.04 | label2 = Seattle | lat2_deg = 47.61 | lon2_deg = -122.33 }} <pre style="width:30em"> {{Location map many | USA | relief = yes | width = 250 | caption = Two locations in the United States | label1 = Washington, D.C. | lat1_deg = 38.89 | lon1_deg = -77.04 | label2 = Seattle | lat2_deg = 47.61 | lon2_deg = -122.33 }} </pre> {{clear}} === Location map+, using AlternativeMap === {{Location map+ | USA | AlternativeMap = Usa edcp relief location map.png | caption = Two locations in the United States | width = 250 | places = {{Location map~ | USA | label = Washington, D.C. | lat_deg = 38.89 | lon_deg = -77.04 }} {{Location map~ | USA | label = Seattle | lat_deg = 47.61 | lon_deg = -122.33 }} }} <pre style="width:35em"> {{Location map+ | USA | AlternativeMap = Usa edcp relief location map.png | caption = Two locations in the United States | width = 250 | places = {{Location map~ | USA | label = Washington, D.C. | lat_deg = 38.89 | lon_deg = -77.04 }} {{Location map~ | USA | label = Seattle | lat_deg = 47.61 | lon_deg = -122.33 }} }} </pre> === Location map, one location on three maps === {{Location map | USA#USA Tennessee#North America | relief = yes | width = 250 | lat_deg = 36.167 | lon_deg = -86.783 | label = Nashville }} <pre style="width:30em"> {{Location map | USA#USA Tennessee#North America | relief = yes | width = 250 | lat_deg = 36.167 | lon_deg = -86.783 | label = Nashville }} </pre> {{clear}} === Location map, three maps and three captions === {{Location map | USA#USA Tennessee#North America | relief = yes | width = 250 | lat_deg = 36.167 | lon_deg = -86.783 | label = Nashville | caption = Location in the [[United States]]##Location in [[Tennessee]]##Location in [[North America]] }} <pre style="width:30em"> {{Location map | USA#USA Tennessee#North America | relief = yes | width = 250 | lat_deg = 36.167 | lon_deg = -86.783 | label = Nashville | caption = Location in the [[United States]]##Location in [[Tennessee]]##Location in [[North America]] }} </pre> {{clear}} }}<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:United States location map modules| ]] }}</includeonly> 9dd62ef3a72e4f7861f16e83e8a8696e68358a0c Module:Parameter names example 828 64 123 2023-07-10T09:41:44Z wikipedia>Gonnym 0 if these are wanted, they should be handled differently (by passing a parameter to this module) as these cause pages to appear as unknown parameters for templates that don't use them Scribunto text/plain -- This module implements {{parameter names example}}. local p = {} local function makeParam(s) local lb = '&#123;' local rb = '&#125;' return lb:rep(3) .. s .. rb:rep(3) end local function italicize(s) return "''" .. s .. "''" end local function plain(s) return s end function p._main(args, frame) -- Find how we want to format the arguments to the template. local formatFunc if args._display == 'italics' or args._display == 'italic' then formatFunc = italicize elseif args._display == 'plain' then formatFunc = plain else formatFunc = makeParam end -- Build the table of template arguments. local targs = {} for k, v in pairs(args) do if type(k) == 'number' then targs[v] = formatFunc(v) elseif not k:find('^_') then targs[k] = v end end --targs['nocat'] = 'yes'; --targs['categories'] = 'no'; --targs['demo'] = 'yes'; -- Find the template name. local template if args._template then template = args._template else local currentTitle = mw.title.getCurrentTitle() if currentTitle.prefixedText:find('/sandbox$') then template = currentTitle.prefixedText else template = currentTitle.basePageTitle.prefixedText end end -- Call the template with the arguments. frame = frame or mw.getCurrentFrame() local success, result = pcall( frame.expandTemplate, frame, {title = template, args = targs} ) if success then return result else return '' end end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Parameter names example' }) return p._main(args, frame) end return p fdf94fb7a5dc1fabf118d60488a02f1e65b0df24 Module:Wd 828 1048 2294 2023-07-10T18:06:15Z wikipedia>Pppery 0 Per edit request Scribunto text/plain -- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]]. require("strict") local p = {} local arg = ... local i18n local function loadI18n(aliasesP, frame) local title if frame then -- current module invoked by page/template, get its title from frame title = frame:getTitle() else -- current module included by other module, get its title from ... title = arg end if not i18n then i18n = require(title .. "/i18n").init(aliasesP) end end p.claimCommands = { property = "property", properties = "properties", qualifier = "qualifier", qualifiers = "qualifiers", reference = "reference", references = "references" } p.generalCommands = { label = "label", title = "title", description = "description", alias = "alias", aliases = "aliases", badge = "badge", badges = "badges" } p.flags = { linked = "linked", short = "short", raw = "raw", multilanguage = "multilanguage", unit = "unit", ------------- preferred = "preferred", normal = "normal", deprecated = "deprecated", best = "best", future = "future", current = "current", former = "former", edit = "edit", editAtEnd = "edit@end", mdy = "mdy", single = "single", sourced = "sourced" } p.args = { eid = "eid", page = "page", date = "date" } local aliasesP = { coord = "P625", ----------------------- image = "P18", author = "P50", authorNameString = "P2093", publisher = "P123", importedFrom = "P143", wikimediaImportURL = "P4656", statedIn = "P248", pages = "P304", language = "P407", hasPart = "P527", publicationDate = "P577", startTime = "P580", endTime = "P582", chapter = "P792", retrieved = "P813", referenceURL = "P854", sectionVerseOrParagraph = "P958", archiveURL = "P1065", title = "P1476", formatterURL = "P1630", quote = "P1683", shortName = "P1813", definingFormula = "P2534", archiveDate = "P2960", inferredFrom = "P3452", typeOfReference = "P3865", column = "P3903", subjectNamedAs = "P1810", wikidataProperty = "P1687", publishedIn = "P1433" } local aliasesQ = { percentage = "Q11229", prolepticJulianCalendar = "Q1985786", citeWeb = "Q5637226", citeQ = "Q22321052" } local parameters = { property = "%p", qualifier = "%q", reference = "%r", alias = "%a", badge = "%b", separator = "%s", general = "%x" } local formats = { property = "%p[%s][%r]", qualifier = "%q[%s][%r]", reference = "%r", propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]", alias = "%a[%s]", badge = "%b[%s]" } local hookNames = { -- {level_1, level_2} [parameters.property] = {"getProperty"}, [parameters.reference] = {"getReferences", "getReference"}, [parameters.qualifier] = {"getAllQualifiers"}, [parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"}, [parameters.alias] = {"getAlias"}, [parameters.badge] = {"getBadge"} } -- default value objects, should NOT be mutated but instead copied local defaultSeparators = { ["sep"] = {" "}, ["sep%s"] = {","}, ["sep%q"] = {"; "}, ["sep%q\\d"] = {", "}, ["sep%r"] = nil, -- none ["punc"] = nil -- none } local rankTable = { ["preferred"] = 1, ["normal"] = 2, ["deprecated"] = 3 } local function replaceAlias(id) if aliasesP[id] then id = aliasesP[id] end return id end local function errorText(code, param) local text = i18n["errors"][code] if param then text = mw.ustring.gsub(text, "$1", param) end return text end local function throwError(errorMessage, param) error(errorText(errorMessage, param)) end local function replaceDecimalMark(num) return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1) end local function padZeros(num, numDigits) local numZeros local negative = false if num < 0 then negative = true num = num * -1 end num = tostring(num) numZeros = numDigits - num:len() for _ = 1, numZeros do num = "0"..num end if negative then num = "-"..num end return num end local function replaceSpecialChar(chr) if chr == '_' then -- replace underscores with spaces return ' ' else return chr end end local function replaceSpecialChars(str) local chr local esc = false local strOut = "" for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then esc = true else strOut = strOut .. replaceSpecialChar(chr) end else strOut = strOut .. chr esc = false end end return strOut end local function buildWikilink(target, label) if not label or target == label then return "[[" .. target .. "]]" else return "[[" .. target .. "|" .. label .. "]]" end end -- used to make frame.args mutable, to replace #frame.args (which is always 0) -- with the actual amount and to simply copy tables local function copyTable(tIn) if not tIn then return nil end local tOut = {} for i, v in pairs(tIn) do tOut[i] = v end return tOut end -- used to merge output arrays together; -- note that it currently mutates the first input array local function mergeArrays(a1, a2) for i = 1, #a2 do a1[#a1 + 1] = a2[i] end return a1 end local function split(str, del) local out = {} local i, j = str:find(del) if i and j then out[1] = str:sub(1, i - 1) out[2] = str:sub(j + 1) else out[1] = str end return out end local function parseWikidataURL(url) local id if url:match('^http[s]?://') then id = split(url, "Q") if id[2] then return "Q" .. id[2] end end return nil end local function parseDate(dateStr, precision) precision = precision or "d" local i, j, index, ptr local parts = {nil, nil, nil} if dateStr == nil then return parts[1], parts[2], parts[3] -- year, month, day end -- 'T' for snak values, '/' for outputs with '/Julian' attached i, j = dateStr:find("[T/]") if i then dateStr = dateStr:sub(1, i-1) end local from = 1 if dateStr:sub(1,1) == "-" then -- this is a negative number, look further ahead from = 2 end index = 1 ptr = 1 i, j = dateStr:find("-", from) if i then -- year parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error if parts[index] == -0 then parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead end if precision == "y" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 i, j = dateStr:find("-", ptr) if i then -- month parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) if precision == "m" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 end end if dateStr:sub(ptr) ~= "" then -- day if we have month, month if we have year, or year parts[index] = tonumber(dateStr:sub(ptr), 10) end return parts[1], parts[2], parts[3] -- year, month, day end local function datePrecedesDate(aY, aM, aD, bY, bM, bD) if aY == nil or bY == nil then return nil end aM = aM or 1 aD = aD or 1 bM = bM or 1 bD = bD or 1 if aY < bY then return true end if aY > bY then return false end if aM < bM then return true end if aM > bM then return false end if aD < bD then return true end return false end local function getHookName(param, index) if hookNames[param] then return hookNames[param][index] elseif param:len() > 2 then return hookNames[param:sub(1, 2).."\\d"][index] else return nil end end local function alwaysTrue() return true end -- The following function parses a format string. -- -- The example below shows how a parsed string is structured in memory. -- Variables other than 'str' and 'child' are left out for clarity's sake. -- -- Example: -- "A %p B [%s[%q1]] C [%r] D" -- -- Structure: -- [ -- { -- str = "A " -- }, -- { -- str = "%p" -- }, -- { -- str = " B ", -- child = -- [ -- { -- str = "%s", -- child = -- [ -- { -- str = "%q1" -- } -- ] -- } -- ] -- }, -- { -- str = " C ", -- child = -- [ -- { -- str = "%r" -- } -- ] -- }, -- { -- str = " D" -- } -- ] -- local function parseFormat(str) local chr, esc, param, root, cur, prev, new local params = {} local function newObject(array) local obj = {} -- new object obj.str = "" array[#array + 1] = obj -- array{object} obj.parent = array return obj end local function endParam() if param > 0 then if cur.str ~= "" then cur.str = "%"..cur.str cur.param = true params[cur.str] = true cur.parent.req[cur.str] = true prev = cur cur = newObject(cur.parent) end param = 0 end end root = {} -- array root.req = {} cur = newObject(root) prev = nil esc = false param = 0 for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then endParam() esc = true elseif chr == '%' then endParam() if cur.str ~= "" then cur = newObject(cur.parent) end param = 2 elseif chr == '[' then endParam() if prev and cur.str == "" then table.remove(cur.parent) cur = prev end cur.child = {} -- new array cur.child.req = {} cur.child.parent = cur cur = newObject(cur.child) elseif chr == ']' then endParam() if cur.parent.parent then new = newObject(cur.parent.parent.parent) if cur.str == "" then table.remove(cur.parent) end cur = new end else if param > 1 then param = param - 1 elseif param == 1 then if not chr:match('%d') then endParam() end end cur.str = cur.str .. replaceSpecialChar(chr) end else cur.str = cur.str .. chr esc = false end prev = nil end endParam() -- make sure that at least one required parameter has been defined if not next(root.req) then throwError("missing-required-parameter") end -- make sure that the separator parameter "%s" is not amongst the required parameters if root.req[parameters.separator] then throwError("extra-required-parameter", parameters.separator) end return root, params end local function sortOnRank(claims) local rankPos local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default) local sorted = {} for _, v in ipairs(claims) do rankPos = rankTable[v.rank] or 4 ranks[rankPos][#ranks[rankPos] + 1] = v end sorted = ranks[1] sorted = mergeArrays(sorted, ranks[2]) sorted = mergeArrays(sorted, ranks[3]) return sorted end local Config = {} -- allows for recursive calls function Config:new() local cfg = {} setmetatable(cfg, self) self.__index = self cfg.separators = { -- single value objects wrapped in arrays so that we can pass by reference ["sep"] = {copyTable(defaultSeparators["sep"])}, ["sep%s"] = {copyTable(defaultSeparators["sep%s"])}, ["sep%q"] = {copyTable(defaultSeparators["sep%q"])}, ["sep%r"] = {copyTable(defaultSeparators["sep%r"])}, ["punc"] = {copyTable(defaultSeparators["punc"])} } cfg.entity = nil cfg.entityID = nil cfg.propertyID = nil cfg.propertyValue = nil cfg.qualifierIDs = {} cfg.qualifierIDsAndValues = {} cfg.bestRank = true cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false cfg.foundRank = #cfg.ranks cfg.flagBest = false cfg.flagRank = false cfg.periods = {true, true, true} -- future = true, current = true, former = true cfg.flagPeriod = false cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day} cfg.mdyDate = false cfg.singleClaim = false cfg.sourcedOnly = false cfg.editable = false cfg.editAtEnd = false cfg.inSitelinks = false cfg.langCode = mw.language.getContentLanguage().code cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode) cfg.langObj = mw.language.new(cfg.langCode) cfg.siteID = mw.wikibase.getGlobalSiteId() cfg.states = {} cfg.states.qualifiersCount = 0 cfg.curState = nil cfg.prefetchedRefs = nil return cfg end local State = {} function State:new(cfg, type) local stt = {} setmetatable(stt, self) self.__index = self stt.conf = cfg stt.type = type stt.results = {} stt.parsedFormat = {} stt.separator = {} stt.movSeparator = {} stt.puncMark = {} stt.linked = false stt.rawValue = false stt.shortName = false stt.anyLanguage = false stt.unitOnly = false stt.singleValue = false return stt end -- if id == nil then item connected to current page is used function Config:getLabel(id, raw, link, short) local label = nil local prefix, title= "", nil if not id then id = mw.wikibase.getEntityIdForCurrentPage() if not id then return "" end end id = id:upper() -- just to be sure if raw then -- check if given id actually exists if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then label = id end prefix, title = "d:Special:EntityPage/", label -- may be nil else -- try short name first if requested if short then label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name if label == "" then label = nil end end -- get label if not label then label = mw.wikibase.getLabelByLang(id, self.langCode) -- XXX: should use fallback labels? end end if not label then label = "" elseif link then -- build a link if requested if not title then if id:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(id) elseif id:sub(1,1) == "P" then -- properties have no sitelink, link to Wikidata instead prefix, title = "d:Special:EntityPage/", id end end label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup if title then label = buildWikilink(prefix .. title, label) end end return label end function Config:getEditIcon() local value = "" local prefix = "" local front = "&nbsp;" local back = "" if self.entityID:sub(1,1) == "P" then prefix = "Property:" end if self.editAtEnd then front = '<span style="float:' if self.langObj:isRTL() then front = front .. 'left' else front = front .. 'right' end front = front .. '">' back = '</span>' end value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode if self.propertyID then value = value .. "#" .. self.propertyID elseif self.inSitelinks then value = value .. "#sitelinks-wikipedia" end value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]" return front .. value .. back end -- used to create the final output string when it's all done, so that for references the -- function extensionTag("ref", ...) is only called when they really ended up in the final output function Config:concatValues(valuesArray) local outString = "" local j, skip for i = 1, #valuesArray do -- check if this is a reference if valuesArray[i].refHash then j = i - 1 skip = false -- skip this reference if it is part of a continuous row of references that already contains the exact same reference while valuesArray[j] and valuesArray[j].refHash do if valuesArray[i].refHash == valuesArray[j].refHash then skip = true break end j = j - 1 end if not skip then -- add <ref> tag with the reference's hash as its name (to deduplicate references) outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash}) end else outString = outString .. valuesArray[i][1] end end return outString end function Config:convertUnit(unit, raw, link, short, unitOnly) local space = " " local label = "" local itemID if unit == "" or unit == "1" then return nil end if unitOnly then space = "" end itemID = parseWikidataURL(unit) if itemID then if itemID == aliasesQ.percentage then return "%" else label = self:getLabel(itemID, raw, link, short) if label ~= "" then return space .. label end end end return "" end function State:getValue(snak) return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2)) end function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type) if snak.snaktype == 'value' then local datatype = snak.datavalue.type local subtype = snak.datatype local datavalue = snak.datavalue.value if datatype == 'string' then if subtype == 'url' and link then -- create link explicitly if raw then -- will render as a linked number like [1] return "[" .. datavalue .. "]" else return "[" .. datavalue .. " " .. datavalue .. "]" end elseif subtype == 'commonsMedia' then if link then return buildWikilink("c:File:" .. datavalue, datavalue) elseif not raw then return "[[File:" .. datavalue .. "]]" else return datavalue end elseif subtype == 'geo-shape' and link then return buildWikilink("c:" .. datavalue, datavalue) elseif subtype == 'math' and not raw then local attribute = nil if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then attribute = {qid = self.entityID} end return mw.getCurrentFrame():extensionTag("math", datavalue, attribute) elseif subtype == 'external-id' and link then local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL if url ~= "" then url = mw.ustring.gsub(url, "$1", datavalue) return "[" .. url .. " " .. datavalue .. "]" else return datavalue end else return datavalue end elseif datatype == 'monolingualtext' then if anyLang or datavalue['language'] == self.langCode then return datavalue['text'] else return nil end elseif datatype == 'quantity' then local value = "" local unit if not unitOnly then -- get value and strip + signs from front value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1") if raw then return value end -- replace decimal mark based on locale value = replaceDecimalMark(value) -- add delimiters for readability value = i18n.addDelimiters(value) end unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly) if unit then value = value .. unit end return value elseif datatype == 'time' then local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr local yFactor = 1 local sign = 1 local prefix = "" local suffix = "" local mayAddCalendar = false local calendar = "" local precision = datavalue['precision'] if precision == 11 then p = "d" elseif precision == 10 then p = "m" else p = "y" yFactor = 10^(9-precision) end y, m, d = parseDate(datavalue['time'], p) if y < 0 then sign = -1 y = y * sign end -- if precision is tens/hundreds/thousands/millions/billions of years if precision <= 8 then yDiv = y / yFactor -- if precision is tens/hundreds/thousands of years if precision >= 6 then mayAddCalendar = true if precision <= 7 then -- round centuries/millenniums up (e.g. 20th century or 3rd millennium) yRound = math.ceil(yDiv) if not raw then if precision == 6 then suffix = i18n['datetime']['suffixes']['millennium'] else suffix = i18n['datetime']['suffixes']['century'] end suffix = i18n.getOrdinalSuffix(yRound) .. suffix else -- if not verbose, take the first year of the century/millennium -- (e.g. 1901 for 20th century or 2001 for 3rd millennium) yRound = (yRound - 1) * yFactor + 1 end else -- precision == 8 -- round decades down (e.g. 2010s) yRound = math.floor(yDiv) * yFactor if not raw then prefix = i18n['datetime']['prefixes']['decade-period'] suffix = i18n['datetime']['suffixes']['decade-period'] end end if raw and sign < 0 then -- if BCE then compensate for "counting backwards" -- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE) yRound = yRound + yFactor - 1 end else local yReFactor, yReDiv, yReRound -- round to nearest for tens of thousands of years or more yRound = math.floor(yDiv + 0.5) if yRound == 0 then if precision <= 2 and y ~= 0 then yReFactor = 1e6 yReDiv = y / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years only if we have a whole number of them precision = 3 yFactor = yReFactor yRound = yReRound end end if yRound == 0 then -- otherwise, take the unrounded (original) number of years precision = 5 yFactor = 1 yRound = y mayAddCalendar = true end end if precision >= 1 and y ~= 0 then yFull = yRound * yFactor yReFactor = 1e9 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to billions of years if we're in that range precision = 0 yFactor = yReFactor yRound = yReRound else yReFactor = 1e6 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years if we're in that range precision = 3 yFactor = yReFactor yRound = yReRound end end end if not raw then if precision == 3 then suffix = i18n['datetime']['suffixes']['million-years'] elseif precision == 0 then suffix = i18n['datetime']['suffixes']['billion-years'] else yRound = yRound * yFactor if yRound == 1 then suffix = i18n['datetime']['suffixes']['year'] else suffix = i18n['datetime']['suffixes']['years'] end end else yRound = yRound * yFactor end end else yRound = y mayAddCalendar = true end if mayAddCalendar then calendarID = parseWikidataURL(datavalue['calendarmodel']) if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then if not raw then if link then calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")" else calendar = " ("..i18n['datetime']['julian']..")" end else calendar = "/"..i18n['datetime']['julian'] end end end if not raw then local ce = nil if sign < 0 then ce = i18n['datetime']['BCE'] elseif precision <= 5 then ce = i18n['datetime']['CE'] end if ce then if link then ce = buildWikilink(i18n['datetime']['common-era'], ce) end suffix = suffix .. " " .. ce end value = tostring(yRound) if m then dateStr = self.langObj:formatDate("F", "1-"..m.."-1") if d then if self.mdyDate then dateStr = dateStr .. " " .. d .. "," else dateStr = d .. " " .. dateStr end end value = dateStr .. " " .. value end value = prefix .. value .. suffix .. calendar else value = padZeros(yRound * sign, 4) if m then value = value .. "-" .. padZeros(m, 2) if d then value = value .. "-" .. padZeros(d, 2) end end value = value .. calendar end return value elseif datatype == 'globecoordinate' then -- logic from https://github.com/DataValues/Geo (v4.0.1) local precision, unitsPerDegree, numDigits, strFormat, value, globe local latitude, latConv, latValue, latLink local longitude, lonConv, lonValue, lonLink local latDirection, latDirectionN, latDirectionS, latDirectionEN local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN local degSymbol, minSymbol, secSymbol, separator local latDegrees = nil local latMinutes = nil local latSeconds = nil local lonDegrees = nil local lonMinutes = nil local lonSeconds = nil local latDegSym = "" local latMinSym = "" local latSecSym = "" local lonDegSym = "" local lonMinSym = "" local lonSecSym = "" local latDirectionEN_N = "N" local latDirectionEN_S = "S" local lonDirectionEN_E = "E" local lonDirectionEN_W = "W" if not raw then latDirectionN = i18n['coord']['latitude-north'] latDirectionS = i18n['coord']['latitude-south'] lonDirectionE = i18n['coord']['longitude-east'] lonDirectionW = i18n['coord']['longitude-west'] degSymbol = i18n['coord']['degrees'] minSymbol = i18n['coord']['minutes'] secSymbol = i18n['coord']['seconds'] separator = i18n['coord']['separator'] else latDirectionN = latDirectionEN_N latDirectionS = latDirectionEN_S lonDirectionE = lonDirectionEN_E lonDirectionW = lonDirectionEN_W degSymbol = "/" minSymbol = "/" secSymbol = "/" separator = "/" end latitude = datavalue['latitude'] longitude = datavalue['longitude'] if latitude < 0 then latDirection = latDirectionS latDirectionEN = latDirectionEN_S latitude = math.abs(latitude) else latDirection = latDirectionN latDirectionEN = latDirectionEN_N end if longitude < 0 then lonDirection = lonDirectionW lonDirectionEN = lonDirectionEN_W longitude = math.abs(longitude) else lonDirection = lonDirectionE lonDirectionEN = lonDirectionEN_E end precision = datavalue['precision'] if not precision or precision <= 0 then precision = 1 / 3600 -- precision not set (correctly), set to arcsecond end -- remove insignificant detail latitude = math.floor(latitude / precision + 0.5) * precision longitude = math.floor(longitude / precision + 0.5) * precision if precision >= 1 - (1 / 60) and precision < 1 then precision = 1 elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then precision = 1 / 60 end if precision >= 1 then unitsPerDegree = 1 elseif precision >= (1 / 60) then unitsPerDegree = 60 else unitsPerDegree = 3600 end numDigits = math.ceil(-math.log10(unitsPerDegree * precision)) if numDigits <= 0 then numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead end strFormat = "%." .. numDigits .. "f" if precision >= 1 then latDegrees = strFormat:format(latitude) lonDegrees = strFormat:format(longitude) if not raw then latDegSym = replaceDecimalMark(latDegrees) .. degSymbol lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol else latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol end else latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits if precision >= (1 / 60) then latMinutes = latConv lonMinutes = lonConv else latSeconds = latConv lonSeconds = lonConv latMinutes = math.floor(latSeconds / 60) lonMinutes = math.floor(lonSeconds / 60) latSeconds = strFormat:format(latSeconds - (latMinutes * 60)) lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60)) if not raw then latSecSym = replaceDecimalMark(latSeconds) .. secSymbol lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol else latSecSym = latSeconds .. secSymbol lonSecSym = lonSeconds .. secSymbol end end latDegrees = math.floor(latMinutes / 60) lonDegrees = math.floor(lonMinutes / 60) latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol latMinutes = latMinutes - (latDegrees * 60) lonMinutes = lonMinutes - (lonDegrees * 60) if precision >= (1 / 60) then latMinutes = strFormat:format(latMinutes) lonMinutes = strFormat:format(lonMinutes) if not raw then latMinSym = replaceDecimalMark(latMinutes) .. minSymbol lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end end latValue = latDegSym .. latMinSym .. latSecSym .. latDirection lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection value = latValue .. separator .. lonValue if link then globe = parseWikidataURL(datavalue['globe']) if globe then globe = mw.wikibase.getLabelByLang(globe, "en"):lower() else globe = "earth" end latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_") lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_") value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."&params="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]" end return value elseif datatype == 'wikibase-entityid' then local label local itemID = datavalue['numeric-id'] if subtype == 'wikibase-item' then itemID = "Q" .. itemID elseif subtype == 'wikibase-property' then itemID = "P" .. itemID else return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>' end label = self:getLabel(itemID, raw, link, short) if label == "" then label = nil end return label else return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>' end elseif snak.snaktype == 'somevalue' and not noSpecial then if raw then return " " -- single space represents 'somevalue' else return i18n['values']['unknown'] end elseif snak.snaktype == 'novalue' and not noSpecial then if raw then return "" -- empty string represents 'novalue' else return i18n['values']['none'] end else return nil end end function Config:getSingleRawQualifier(claim, qualifierID) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end if qualifiers and qualifiers[1] then return self:getValue(qualifiers[1], true) -- raw = true else return nil end end function Config:snakEqualsValue(snak, value) local snakValue = self:getValue(snak, true) -- raw = true if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end return snakValue == value end function Config:setRank(rank) local rankPos if rank == p.flags.best then self.bestRank = true self.flagBest = true -- mark that 'best' flag was given return end if rank:sub(1,9) == p.flags.preferred then rankPos = 1 elseif rank:sub(1,6) == p.flags.normal then rankPos = 2 elseif rank:sub(1,10) == p.flags.deprecated then rankPos = 3 else return end -- one of the rank flags was given, check if another one was given before if not self.flagRank then self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before self.flagRank = true -- mark that a rank flag was given end if rank:sub(-1) == "+" then for i = rankPos, 1, -1 do self.ranks[i] = true end elseif rank:sub(-1) == "-" then for i = rankPos, #self.ranks do self.ranks[i] = true end else self.ranks[rankPos] = true end end function Config:setPeriod(period) local periodPos if period == p.flags.future then periodPos = 1 elseif period == p.flags.current then periodPos = 2 elseif period == p.flags.former then periodPos = 3 else return end -- one of the period flags was given, check if another one was given before if not self.flagPeriod then self.periods = {false, false, false} -- no other period flag given before, so unset periods self.flagPeriod = true -- mark that a period flag was given end self.periods[periodPos] = true end function Config:qualifierMatches(claim, id, value) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[id] end if qualifiers then for _, v in pairs(qualifiers) do if self:snakEqualsValue(v, value) then return true end end elseif value == "" then -- if the qualifier is not present then treat it the same as the special value 'novalue' return true end return false end function Config:rankMatches(rankPos) if self.bestRank then return (self.ranks[rankPos] and self.foundRank >= rankPos) else return self.ranks[rankPos] end end function Config:timeMatches(claim) local startTime = nil local startTimeY = nil local startTimeM = nil local startTimeD = nil local endTime = nil local endTimeY = nil local endTimeM = nil local endTimeD = nil if self.periods[1] and self.periods[2] and self.periods[3] then -- any time return true end startTime = self:getSingleRawQualifier(claim, aliasesP.startTime) if startTime and startTime ~= "" and startTime ~= " " then startTimeY, startTimeM, startTimeD = parseDate(startTime) end endTime = self:getSingleRawQualifier(claim, aliasesP.endTime) if endTime and endTime ~= "" and endTime ~= " " then endTimeY, endTimeM, endTimeD = parseDate(endTime) end if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then -- invalidate end time if it precedes start time endTimeY = nil endTimeM = nil endTimeD = nil end if self.periods[1] then -- future if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then return true end end if self.periods[2] then -- current if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and (endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then return true end end if self.periods[3] then -- former if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then return true end end return false end function Config:processFlag(flag) if not flag then return false end if flag == p.flags.linked then self.curState.linked = true return true elseif flag == p.flags.raw then self.curState.rawValue = true if self.curState == self.states[parameters.reference] then -- raw reference values end with periods and require a separator (other than none) self.separators["sep%r"][1] = {" "} end return true elseif flag == p.flags.short then self.curState.shortName = true return true elseif flag == p.flags.multilanguage then self.curState.anyLanguage = true return true elseif flag == p.flags.unit then self.curState.unitOnly = true return true elseif flag == p.flags.mdy then self.mdyDate = true return true elseif flag == p.flags.single then self.singleClaim = true return true elseif flag == p.flags.sourced then self.sourcedOnly = true return true elseif flag == p.flags.edit then self.editable = true return true elseif flag == p.flags.editAtEnd then self.editable = true self.editAtEnd = true return true elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then self:setRank(flag) return true elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then self:setPeriod(flag) return true elseif flag == "" then -- ignore empty flags and carry on return true else return false end end function Config:processFlagOrCommand(flag) local param = "" if not flag then return false end if flag == p.claimCommands.property or flag == p.claimCommands.properties then param = parameters.property elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then self.states.qualifiersCount = self.states.qualifiersCount + 1 param = parameters.qualifier .. self.states.qualifiersCount self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])} elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then param = parameters.reference else return self:processFlag(flag) end if self.states[param] then return false end -- create a new state for each command self.states[param] = State:new(self, param) -- use "%x" as the general parameter name self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p" -- set the separator self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then self.states[param].singleValue = true end self.curState = self.states[param] return true end function Config:processSeparators(args) local sep for i, v in pairs(self.separators) do if args[i] then sep = replaceSpecialChars(args[i]) if sep ~= "" then self.separators[i][1] = {sep} else self.separators[i][1] = nil end end end end function Config:setFormatAndSeparators(state, parsedFormat) state.parsedFormat = parsedFormat state.separator = self.separators["sep"] state.movSeparator = self.separators["sep"..parameters.separator] state.puncMark = self.separators["punc"] end -- determines if a claim has references by prefetching them from the claim using getReferences, -- which applies some filtering that determines if a reference is actually returned, -- and caches the references for later use function State:isSourced(claim) self.conf.prefetchedRefs = self:getReferences(claim) return (#self.conf.prefetchedRefs > 0) end function State:resetCaches() -- any prefetched references of the previous claim must not be used self.conf.prefetchedRefs = nil end function State:claimMatches(claim) local matches, rankPos -- first of all, reset any cached values used for the previous claim self:resetCaches() -- if a property value was given, check if it matches the claim's property value if self.conf.propertyValue then matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue) else matches = true end -- if any qualifier values were given, check if each matches one of the claim's qualifier values for i, v in pairs(self.conf.qualifierIDsAndValues) do matches = (matches and self.conf:qualifierMatches(claim, i, v)) end -- check if the claim's rank and time period match rankPos = rankTable[claim.rank] or 4 matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim)) -- if only claims with references must be returned, check if this one has any if self.conf.sourcedOnly then matches = (matches and self:isSourced(claim)) -- prefetches and caches references end return matches, rankPos end function State:out() local result -- collection of arrays with value objects local valuesArray -- array with value objects local sep = nil -- value object local out = {} -- array with value objects local function walk(formatTable, result) local valuesArray = {} -- array with value objects for i, v in pairs(formatTable.req) do if not result[i] or not result[i][1] then -- we've got no result for a parameter that is required on this level, -- so skip this level (and its children) by returning an empty result return {} end end for _, v in ipairs(formatTable) do if v.param then valuesArray = mergeArrays(valuesArray, result[v.str]) elseif v.str ~= "" then valuesArray[#valuesArray + 1] = {v.str} end if v.child then valuesArray = mergeArrays(valuesArray, walk(v.child, result)) end end return valuesArray end -- iterate through the results from back to front, so that we know when to add separators for i = #self.results, 1, -1 do result = self.results[i] -- if there is already some output, then add the separators if #out > 0 then sep = self.separator[1] -- fixed separator result[parameters.separator] = {self.movSeparator[1]} -- movable separator else sep = nil result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark end valuesArray = walk(self.parsedFormat, result) if #valuesArray > 0 then if sep then valuesArray[#valuesArray + 1] = sep end out = mergeArrays(valuesArray, out) end end -- reset state before next iteration self.results = {} return out end -- level 1 hook function State:getProperty(claim) local value = {self:getValue(claim.mainsnak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getQualifiers(claim, param) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end if qualifiers then -- iterate through claim's qualifier statements to collect their values; -- return array with multiple value objects return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getQualifier(snak) local value = {self:getValue(snak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getAllQualifiers(claim, param, result, hooks) local out = {} -- array with value objects local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object -- iterate through the output of the separate "qualifier(s)" commands for i = 1, self.conf.states.qualifiersCount do -- if a hook has not been called yet, call it now if not result[parameters.qualifier..i] then self:callHook(parameters.qualifier..i, hooks, claim, result) end -- if there is output for this particular "qualifier(s)" command, then add it if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then -- if there is already some output, then add the separator if #out > 0 and sep then out[#out + 1] = sep end out = mergeArrays(out, result[parameters.qualifier..i]) end end return out end -- level 1 hook function State:getReferences(claim) if self.conf.prefetchedRefs then -- return references that have been prefetched by isSourced return self.conf.prefetchedRefs end if claim.references then -- iterate through claim's reference statements to collect their values; -- return array with multiple value objects return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getReference(statement) local key, citeWeb, citeQ, label local params = {} local citeParams = {['web'] = {}, ['q'] = {}} local citeMismatch = {} local useCite = nil local useParams = nil local value = "" local ref = {} local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved local numAuthorParameters = 0 local numAuthorNameStringParameters = 0 local tempLink local additionalRefProperties = {} -- will hold properties of the reference which are not in statement.snaks, namely backup title from "subject named as" and URL from an external ID local wikidataPropertiesOfSource -- will contain "Wikidata property" properties of the item in stated in, if any local version = 4 -- increment this each time the below logic is changed to avoid conflict errors if statement.snaks then -- don't include "imported from", which is added by a bot if statement.snaks[aliasesP.importedFrom] then statement.snaks[aliasesP.importedFrom] = nil end -- don't include "Wikimedia import URL" if statement.snaks[aliasesP.wikimediaImportURL] then statement.snaks[aliasesP.wikimediaImportURL] = nil -- don't include "retrieved" if no "referenceURL" is present, -- as "retrieved" probably belongs to "Wikimedia import URL" if statement.snaks[aliasesP.retrieved] and not statement.snaks[aliasesP.referenceURL] then statement.snaks[aliasesP.retrieved] = nil end end -- don't include "inferred from", which is added by a bot if statement.snaks[aliasesP.inferredFrom] then statement.snaks[aliasesP.inferredFrom] = nil end -- don't include "type of reference" if statement.snaks[aliasesP.typeOfReference] then statement.snaks[aliasesP.typeOfReference] = nil end -- don't include "image" to prevent littering if statement.snaks[aliasesP.image] then statement.snaks[aliasesP.image] = nil end -- don't include "language" if it is equal to the local one if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then statement.snaks[aliasesP.language] = nil end if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then -- "stated in" was given but "reference URL" was not. -- get "Wikidata property" properties from the item in "stated in" -- if any of the returned properties of the external-id datatype is in statement.snaks, generate a URL from it and use the URL in the reference -- find the "Wikidata property" properties in the item from "stated in" wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true) for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then tempLink = self.conf:getValue(statement.snaks[wikidataPropertyOfSource][1], false, true) -- not raw, linked if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL. additionalRefProperties[aliasesP.referenceURL] = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") -- the URL is in wiki markup, so strip the square brackets and the display text statement.snaks[wikidataPropertyOfSource] = nil break end end end end -- don't include "subject named as", but use it as the title when "title" is not present but a URL is if statement.snaks[aliasesP.subjectNamedAs] then if not statement.snaks[aliasesP.title] and (statement.snaks[aliasesP.referenceURL] or additionalRefProperties[aliasesP.referenceURL]) then additionalRefProperties[aliasesP.title] = statement.snaks[aliasesP.subjectNamedAs][1].datavalue.value end statement.snaks[aliasesP.subjectNamedAs] = nil end -- retrieve all the parameters for i in pairs(statement.snaks) do label = "" -- multiple authors may be given if i == aliasesP.author or i == aliasesP.authorNameString then params[i] = self:getReferenceDetails(statement.snaks, i, false, self.linked, true) -- link = true/false, anyLang = true else params[i] = {self:getReferenceDetail(statement.snaks, i, false, (self.linked or (i == aliasesP.statedIn)) and (statement.snaks[i][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true end if #params[i] == 0 then params[i] = nil else referenceEmpty = false if statement.snaks[i][1].datatype == 'external-id' then key = "external-id" label = self.conf:getLabel(i) if label ~= "" then label = label .. " " end else key = i end -- add the parameter to each matching type of citation for j in pairs(citeParams) do -- do so if there was no mismatch with a previous parameter if not citeMismatch[j] then -- check if this parameter is not mismatching itself if i18n['cite'][j][key] then -- continue if an option is available in the corresponding cite template if i18n['cite'][j][key] ~= "" then -- handle non-author properties (and author properties ("author" and "author name string"), if they don't use the same template parameter) if (i ~= aliasesP.author and i ~= aliasesP.authorNameString) or (i18n['cite'][j][aliasesP.author] ~= i18n['cite'][j][aliasesP.authorNameString]) then citeParams[j][i18n['cite'][j][key]] = label .. params[i][1] -- to avoid problems with non-author multiple parameters (if existent), the following old code is retained for k=2, #params[i] do citeParams[j][i18n['cite'][j][key]..k] = label .. params[i][k] end -- handle "author" and "author name string" specially if they use the same template parameter elseif i == aliasesP.author or i == aliasesP.authorNameString then if params[aliasesP.author] ~= nil then numAuthorParameters = #params[aliasesP.author] else numAuthorParameters = 0 end if params[aliasesP.authorNameString] ~= nil then numAuthorNameStringParameters = #params[aliasesP.authorNameString] else numAuthorNameStringParameters = 0 end -- execute only if both "author" and "author name string" satisfy this condition: the property is both in params and in statement.snaks or it is neither in params nor in statement.snaks -- reason: parameters are added to params each iteration of the loop, not before the loop if ((statement.snaks[aliasesP.author] == nil) == (numAuthorParameters == 0)) and ((statement.snaks[aliasesP.authorNameString] == nil) == (numAuthorNameStringParameters == 0)) then for k=1, numAuthorParameters + numAuthorNameStringParameters do if k <= numAuthorParameters then -- now handling the authors from the "author" property citeParams[j][i18n['cite'][j][aliasesP.author]..k] = label .. params[aliasesP.author][k] else -- now handling the authors from "author name string" citeParams[j][i18n['cite'][j][aliasesP.authorNameString]..k] = label .. params[aliasesP.authorNameString][k - numAuthorParameters] end end end end end else citeMismatch[j] = true end end end end end -- use additional properties for i in pairs(additionalRefProperties) do for j in pairs(citeParams) do if not citeMismatch[j] and i18n["cite"][j][i] then citeParams[j][i18n["cite"][j][i]] = additionalRefProperties[i] else citeMismatch[j] = true end end end -- get title of general template for citing web references citeWeb = split(mw.wikibase.getSitelink(aliasesQ.citeWeb) or "", ":")[2] -- split off namespace from front -- get title of template that expands stated-in references into citations citeQ = split(mw.wikibase.getSitelink(aliasesQ.citeQ) or "", ":")[2] -- split off namespace from front -- (1) use the general template for citing web references if there is a match and if at least both "reference URL" and "title" are present if citeWeb and not citeMismatch['web'] and citeParams['web'][i18n['cite']['web'][aliasesP.referenceURL]] and citeParams['web'][i18n['cite']['web'][aliasesP.title]] then useCite = citeWeb useParams = citeParams['web'] -- (2) use the template that expands stated-in references into citations if there is a match and if at least "stated in" is present elseif citeQ and not citeMismatch['q'] and citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] then -- we need the raw "stated in" Q-identifier for the this template citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] = self:getReferenceDetail(statement.snaks, aliasesP.statedIn, true) -- raw = true useCite = citeQ useParams = citeParams['q'] end if useCite and useParams then -- if this module is being substituted then build a regular template call, otherwise expand the template if mw.isSubsting() then for i, v in pairs(useParams) do value = value .. "|" .. i .. "=" .. v end value = "{{" .. useCite .. value .. "}}" else value = mw.getCurrentFrame():expandTemplate{title=useCite, args=useParams} end -- (3) if the citation couldn't be displayed using Cite web or Cite Q, but has properties other than the removed ones, throw an error elseif not referenceEmpty then value = "<span style=\"color: crimson\">" .. errorText("malformed-reference") .. "</span>" end if value ~= "" then value = {value} -- create one value object if not self.rawValue then -- this should become a <ref> tag, so save the reference's hash for later value.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['cite']['version']) + version) end ref = {value} -- wrap the value object in an array end end return ref end -- gets a detail of one particular type for a reference function State:getReferenceDetail(snaks, dType, raw, link, anyLang) local switchLang = anyLang local value = nil if not snaks[dType] then return nil end -- if anyLang, first try the local language and otherwise any language repeat for _, v in ipairs(snaks[dType]) do value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true if value then break end end if value or not anyLang then break end switchLang = not switchLang until anyLang and switchLang return value end -- gets the details of one particular type for a reference function State:getReferenceDetails(snaks, dType, raw, link, anyLang) local values = {} if not snaks[dType] then return {} end for _, v in ipairs(snaks[dType]) do -- if nil is returned then it will not be added to the table values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true end return values end -- level 1 hook function State:getAlias(object) local value = object.value local title = nil if value and self.linked then if self.conf.entityID:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(self.conf.entityID) elseif self.conf.entityID:sub(1,1) == "P" then title = "d:Property:" .. self.conf.entityID end if title then value = buildWikilink(title, value) end end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getBadge(value) value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName) if value == "" then value = nil end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end function State:callHook(param, hooks, statement, result) local valuesArray, refHash -- call a parameter's hook if it has been defined and if it has not been called before if not result[param] and hooks[param] then valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects -- add to the result if #valuesArray > 0 then result[param] = valuesArray result.count = result.count + 1 else result[param] = {} -- an empty array to indicate that we've tried this hook already return true -- miss == true end end return false end -- iterate through claims, claim's qualifiers or claim's references to collect values function State:iterate(statements, hooks, matchHook) matchHook = matchHook or alwaysTrue local matches = false local rankPos = nil local result, gotRequired for _, v in ipairs(statements) do -- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.) matches, rankPos = matchHook(self, v) if matches then result = {count = 0} -- collection of arrays with value objects local function walk(formatTable) local miss for i2, v2 in pairs(formatTable.req) do -- call a hook, adding its return value to the result miss = self:callHook(i2, hooks, v, result) if miss then -- we miss a required value for this level, so return false return false end if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point breaks the loop return true end end for _, v2 in ipairs(formatTable) do if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point prevents further childs from being processed return true end if v2.child then walk(v2.child) end end return true end gotRequired = walk(self.parsedFormat) -- only append the result if we got values for all required parameters on the root level if gotRequired then -- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank if rankPos and self.conf.foundRank > rankPos then self.conf.foundRank = rankPos end -- append the result self.results[#self.results + 1] = result -- break if we only need a single value if self.singleValue then break end end end end return self:out() end local function getEntityId(arg, eid, page, allowOmitPropPrefix) local id = nil local prop = nil if arg then if arg:sub(1,1) == ":" then page = arg eid = nil elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then eid = arg page = nil else prop = arg end end if eid then if eid:sub(1,9):lower() == "property:" then id = replaceAlias(mw.text.trim(eid:sub(10))) if id:sub(1,1):upper() ~= "P" then id = "" end else id = replaceAlias(eid) end elseif page then if page:sub(1,1) == ":" then page = mw.text.trim(page:sub(2)) end id = mw.wikibase.getEntityIdForTitle(page) or "" end if not id then id = mw.wikibase.getEntityIdForCurrentPage() or "" end id = id:upper() if not mw.wikibase.isValidEntityId(id) then id = "" end return id, prop end local function nextArg(args) local arg = args[args.pointer] if arg then args.pointer = args.pointer + 1 return mw.text.trim(arg) else return nil end end local function claimCommand(args, funcName) local cfg = Config:new() cfg:processFlagOrCommand(funcName) -- process first command (== function name) local lastArg, parsedFormat, formatParams, claims, value local hooks = {count = 0} -- set the date if given; -- must come BEFORE processing the flags if args[p.args.date] then cfg.atDate = {parseDate(args[p.args.date])} cfg.periods = {false, true, false} -- change default time constraint to 'current' end -- process flags and commands repeat lastArg = nextArg(args) until not cfg:processFlagOrCommand(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page]) if cfg.entityID == "" then return "" -- we cannot continue without a valid entity ID end cfg.entity = mw.wikibase.getEntity(cfg.entityID) if not cfg.propertyID then cfg.propertyID = nextArg(args) end cfg.propertyID = replaceAlias(cfg.propertyID) if not cfg.entity or not cfg.propertyID then return "" -- we cannot continue without an entity or a property ID end cfg.propertyID = cfg.propertyID:upper() if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then return "" -- there is no use to continue without any claims end claims = cfg.entity.claims[cfg.propertyID] if cfg.states.qualifiersCount > 0 then -- do further processing if "qualifier(s)" command was given if #args - args.pointer + 1 > cfg.states.qualifiersCount then -- claim ID or literal value has been given cfg.propertyValue = nextArg(args) end for i = 1, cfg.states.qualifiersCount do -- check if given qualifier ID is an alias and add it cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper() end elseif cfg.states[parameters.reference] then -- do further processing if "reference(s)" command was given cfg.propertyValue = nextArg(args) end -- check for special property value 'somevalue' or 'novalue' if cfg.propertyValue then cfg.propertyValue = replaceSpecialChars(cfg.propertyValue) if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue' else cfg.propertyValue = mw.text.trim(cfg.propertyValue) end end -- parse the desired format, or choose an appropriate format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given if cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier) else parsedFormat, formatParams = parseFormat(formats.qualifier) end elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.property) else -- "reference(s)" command given parsedFormat, formatParams = parseFormat(formats.reference) end -- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then cfg.separators["sep"..parameters.separator][1] = {";"} end -- if only "reference(s)" has been given, set the default separator to none (except when raw) if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0 and not cfg.states[parameters.reference].rawValue then cfg.separators["sep"][1] = nil end -- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent if cfg.states.qualifiersCount == 1 then cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"] end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hooks that should be called (getProperty, getQualifiers, getReferences); -- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given for i, v in pairs(cfg.states) do -- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q" if formatParams[i] or formatParams[i:sub(1, 2)] then hooks[i] = getHookName(i, 1) hooks.count = hooks.count + 1 end end -- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...); -- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1) hooks.count = hooks.count + 1 end -- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration; -- must come AFTER defining the hooks if not cfg.states[parameters.property] then cfg.states[parameters.property] = State:new(cfg, parameters.property) -- if the "single" flag has been given then this state should be equivalent to "property" (singular) if cfg.singleClaim then cfg.states[parameters.property].singleValue = true end end -- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values, -- which must exist in order to be able to determine if a claim has any references; -- must come AFTER defining the hooks if cfg.sourcedOnly and not cfg.states[parameters.reference] then cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead end -- set the parsed format and the separators (and optional punctuation mark); -- must come AFTER creating the additonal states cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat) -- process qualifier matching values, analogous to cfg.propertyValue for i, v in pairs(args) do i = tostring(i) if i:match('^[Pp]%d+$') or aliasesP[i] then v = replaceSpecialChars(v) -- check for special qualifier value 'somevalue' if v ~= "" and mw.text.trim(v) == "" then v = " " -- single space represents 'somevalue' end cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v end end -- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated) claims = sortOnRank(claims) -- then iterate through the claims to collect values value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook -- if desired, add a clickable icon that may be used to edit the returned values on Wikidata if cfg.editable and value ~= "" then value = value .. cfg:getEditIcon() end return value end local function generalCommand(args, funcName) local cfg = Config:new() cfg.curState = State:new(cfg) local lastArg local value = nil repeat lastArg = nextArg(args) until not cfg:processFlag(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true) if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then return "" -- we cannot continue without an entity end -- serve according to the given command if funcName == p.generalCommands.label then value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName) elseif funcName == p.generalCommands.title then cfg.inSitelinks = true if cfg.entityID:sub(1,1) == "Q" then value = mw.wikibase.getSitelink(cfg.entityID) end if cfg.curState.linked and value then value = buildWikilink(value) end elseif funcName == p.generalCommands.description then value = mw.wikibase.getDescription(cfg.entityID) else local parsedFormat, formatParams local hooks = {count = 0} cfg.entity = mw.wikibase.getEntity(cfg.entityID) if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then cfg.curState.singleValue = true end if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then return "" -- there is no use to continue without any aliasses end local aliases = cfg.entity.aliases[cfg.langCode] -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.alias) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getAlias); -- only define the hook if the parameter ("%a") has been given if formatParams[parameters.alias] then hooks[parameters.alias] = getHookName(parameters.alias, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(aliases, hooks)) elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then return "" -- there is no use to continue without any badges end local badges = cfg.entity.sitelinks[cfg.siteID].badges cfg.inSitelinks = true -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.badge) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getBadge); -- only define the hook if the parameter ("%b") has been given if formatParams[parameters.badge] then hooks[parameters.badge] = getHookName(parameters.badge, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(badges, hooks)) end end value = value or "" if cfg.editable and value ~= "" then -- if desired, add a clickable icon that may be used to edit the returned value on Wikidata value = value .. cfg:getEditIcon() end return value end -- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args) local function establishCommands(commandList, commandFunc) for _, commandName in pairs(commandList) do local function wikitextWrapper(frame) local args = copyTable(frame.args) args.pointer = 1 loadI18n(aliasesP, frame) return commandFunc(args, commandName) end p[commandName] = wikitextWrapper local function luaWrapper(args) args = copyTable(args) args.pointer = 1 loadI18n(aliasesP) return commandFunc(args, commandName) end p["_" .. commandName] = luaWrapper end end establishCommands(p.claimCommands, claimCommand) establishCommands(p.generalCommands, generalCommand) -- main function that is supposed to be used by wrapper templates function p.main(frame) if not mw.wikibase then return nil end local f, args loadI18n(aliasesP, frame) -- get the parent frame to take the arguments that were passed to the wrapper template frame = frame:getParent() or frame if not frame.args[1] then throwError("no-function-specified") end f = mw.text.trim(frame.args[1]) if f == "main" then throwError("main-called-twice") end assert(p["_"..f], errorText('no-such-function', f)) -- copy arguments from immutable to mutable table args = copyTable(frame.args) -- remove the function name from the list table.remove(args, 1) return p["_"..f](args) end return p a84f46cf7d14594003fea6e756cf41b723dd67cd Module:Wd/i18n 828 1049 2296 2023-07-10T18:07:36Z wikipedia>Pppery 0 per edit request Scribunto text/plain -- The values and functions in this submodule should be localized per wiki. local p = {} function p.init(aliasesP) p = { ["errors"] = { ["unknown-data-type"] = "Unknown or unsupported datatype '$1'.", ["missing-required-parameter"] = "No required parameters defined, needing at least one", ["extra-required-parameter"] = "Parameter '$1' must be defined as optional", ["no-function-specified"] = "You must specify a function to call", -- equal to the standard module error message ["main-called-twice"] = 'The function "main" cannot be called twice', ["no-such-function"] = 'The function "$1" does not exist', -- equal to the standard module error message ["malformed-reference"] = "Error: Unable to display the reference properly. See [[Module:wd/doc#References|the documentation]] for details.[[Category:Module:Wd reference errors]]" }, ["info"] = { ["edit-on-wikidata"] = "Edit this on Wikidata" }, ["numeric"] = { ["decimal-mark"] = ".", ["delimiter"] = "," }, ["datetime"] = { ["prefixes"] = { ["decade-period"] = "" }, ["suffixes"] = { ["decade-period"] = "s", ["millennium"] = " millennium", ["century"] = " century", ["million-years"] = " million years", ["billion-years"] = " billion years", ["year"] = " year", ["years"] = " years" }, ["julian-calendar"] = "Julian calendar", -- linked page title ["julian"] = "Julian", ["BCE"] = "BCE", ["CE"] = "CE", ["common-era"] = "Common Era" -- linked page title }, ["coord"] = { ["latitude-north"] = "N", ["latitude-south"] = "S", ["longitude-east"] = "E", ["longitude-west"] = "W", ["degrees"] = "°", ["minutes"] = "'", ["seconds"] = '"', ["separator"] = ", " }, ["values"] = { ["unknown"] = "unknown", ["none"] = "none" }, ["cite"] = { ["version"] = "4", -- increment this each time the below parameters are changed to avoid conflict errors ["web"] = { -- <= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. "") [aliasesP.statedIn] = "website", [aliasesP.referenceURL] = "url", [aliasesP.publicationDate] = "date", [aliasesP.retrieved] = "access-date", [aliasesP.title] = "title", [aliasesP.archiveURL] = "archive-url", [aliasesP.archiveDate] = "archive-date", [aliasesP.language] = "language", [aliasesP.author] = "author", -- existence of author1, author2, author3, etc. is assumed [aliasesP.authorNameString] = "author", [aliasesP.publisher] = "publisher", [aliasesP.quote] = "quote", [aliasesP.pages] = "pages", -- extra option [aliasesP.publishedIn] = "website" }, ["q"] = { -- <= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. "") [aliasesP.statedIn] = "1", [aliasesP.pages] = "pages", [aliasesP.column] = "at", [aliasesP.chapter] = "chapter", [aliasesP.sectionVerseOrParagraph] = "section", ["external-id"] = "id", -- used for any type of database property ID [aliasesP.title] = "title", [aliasesP.publicationDate] = "date", [aliasesP.retrieved] = "access-date" } } } p.getOrdinalSuffix = function(num) if tostring(num):sub(-2,-2) == '1' then return "th" -- 10th, 11th, 12th, 13th, ... 19th end num = tostring(num):sub(-1) if num == '1' then return "st" elseif num == '2' then return "nd" elseif num == '3' then return "rd" else return "th" end end p.addDelimiters = function(n) local left, num, right = string.match(n, "^([^%d]*%d)(%d*)(.-)$") if left and num and right then return left .. (num:reverse():gsub("(%d%d%d)", "%1" .. p['numeric']['delimiter']):reverse()) .. right else return n end end return p end return p a860785cf3b9ad3ba0c8096d5627eae877d4e9ab Module:WikidataIB 828 1231 2564 2023-07-10T18:09:04Z Pppery 6 Per edit request Scribunto text/plain -- Version: 2023-07-10 -- Module to implement use of a blacklist and whitelist for infobox fields -- Can take a named parameter |qid which is the Wikidata ID for the article -- if not supplied, it will use the Wikidata ID associated with the current page. -- Fields in blacklist are never to be displayed, i.e. module must return nil in all circumstances -- Fields in whitelist return local value if it exists or the Wikidata value otherwise -- The name of the field that this function is called from is passed in named parameter |name -- The name is compulsory when blacklist or whitelist is used, -- so the module returns nil if it is not supplied. -- blacklist is passed in named parameter |suppressfields (or |spf) -- whitelist is passed in named parameter |fetchwikidata (or |fwd) require("strict") local p = {} local cdate -- initialise as nil and only load _complex_date function if needed -- Module:Complex date is loaded lazily and has the following dependencies: -- Module:Calendar -- Module:ISOdate -- Module:DateI18n -- Module:I18n/complex date -- Module:Ordinal -- Module:I18n/ordinal -- Module:Yesno -- Module:Formatnum -- Module:Linguistic -- -- The following, taken from https://www.mediawiki.org/wiki/Wikibase/DataModel#Dates_and_times, -- is needed to use Module:Complex date which seemingly requires date precision as a string. -- It would work better if only the authors of the mediawiki page could spell 'millennium'. local dp = { [6] = "millennium", [7] = "century", [8] = "decade", [9] = "year", [10] = "month", [11] = "day", } local i18n = { ["errors"] = { ["property-not-found"] = "Property not found.", ["No property supplied"] = "No property supplied", ["entity-not-found"] = "Wikidata entity not found.", ["unknown-claim-type"] = "Unknown claim type.", ["unknown-entity-type"] = "Unknown entity type.", ["qualifier-not-found"] = "Qualifier not found.", ["site-not-found"] = "Wikimedia project not found.", ["labels-not-found"] = "No labels found.", ["descriptions-not-found"] = "No descriptions found.", ["aliases-not-found"] = "No aliases found.", ["unknown-datetime-format"] = "Unknown datetime format.", ["local-article-not-found"] = "Article is available on Wikidata, but not on Wikipedia", ["dab-page"] = " (dab)", }, ["months"] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }, ["century"] = "century", ["BC"] = "BC", ["BCE"] = "BCE", ["ordinal"] = { [1] = "st", [2] = "nd", [3] = "rd", ["default"] = "th" }, ["filespace"] = "File", ["Unknown"] = "Unknown", ["NaN"] = "Not a number", -- set the following to the name of a tracking category, -- e.g. "[[Category:Articles with missing Wikidata information]]", or "" to disable: ["missinginfocat"] = "[[Category:Articles with missing Wikidata information]]", ["editonwikidata"] = "Edit this on Wikidata", ["latestdatequalifier"] = function (date) return "before " .. date end, -- some languages, e.g. Bosnian use a period as a suffix after each number in a date ["datenumbersuffix"] = "", ["list separator"] = ", ", ["multipliers"] = { [0] = "", [3] = " thousand", [6] = " million", [9] = " billion", [12] = " trillion", } } -- This allows an internationisation module to override the above table if 'en' ~= mw.getContentLanguage():getCode() then require("Module:i18n").loadI18n("Module:WikidataIB/i18n", i18n) end -- This piece of html implements a collapsible container. Check the classes exist on your wiki. local collapsediv = '<div class="mw-collapsible mw-collapsed" style="width:100%; overflow:auto;" data-expandtext="{{int:show}}" data-collapsetext="{{int:hide}}">' -- Some items should not be linked. -- Each wiki can create a list of those in Module:WikidataIB/nolinks -- It should return a table called itemsindex, containing true for each item not to be linked local donotlink = {} local nolinks_exists, nolinks = pcall(mw.loadData, "Module:WikidataIB/nolinks") if nolinks_exists then donotlink = nolinks.itemsindex end -- To satisfy Wikipedia:Manual of Style/Titles, certain types of items are italicised, and others are quoted. -- The submodule [[Module:WikidataIB/titleformats]] lists the entity-ids used in 'instance of' (P31), -- which allows this module to identify the values that should be formatted. -- WikidataIB/titleformats exports a table p.formats, which is indexed by entity-id, and contains the value " or '' local formats = {} local titleformats_exists, titleformats = pcall(mw.loadData, "Module:WikidataIB/titleformats") if titleformats_exists then formats = titleformats.formats end ------------------------------------------------------------------------------- -- Private functions ------------------------------------------------------------------------------- -- ------------------------------------------------------------------------------- -- makeOrdinal needs to be internationalised along with the above: -- takes cardinal number as a numeric and returns the ordinal as a string -- we need three exceptions in English for 1st, 2nd, 3rd, 21st, .. 31st, etc. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local makeOrdinal = function(cardinal) local ordsuffix = i18n.ordinal.default if cardinal % 10 == 1 then ordsuffix = i18n.ordinal[1] elseif cardinal % 10 == 2 then ordsuffix = i18n.ordinal[2] elseif cardinal % 10 == 3 then ordsuffix = i18n.ordinal[3] end -- In English, 1, 21, 31, etc. use 'st', but 11, 111, etc. use 'th' -- similarly for 12 and 13, etc. if (cardinal % 100 == 11) or (cardinal % 100 == 12) or (cardinal % 100 == 13) then ordsuffix = i18n.ordinal.default end return tostring(cardinal) .. ordsuffix end ------------------------------------------------------------------------------- -- findLang takes a "langcode" parameter if supplied and valid -- otherwise it tries to create it from the user's set language ({{int:lang}}) -- failing that it uses the wiki's content language. -- It returns a language object ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local findLang = function(langcode) local langobj langcode = mw.text.trim(langcode or "") if mw.language.isKnownLanguageTag(langcode) then langobj = mw.language.new( langcode ) else langcode = mw.getCurrentFrame():callParserFunction('int', {'lang'}) if mw.language.isKnownLanguageTag(langcode) then langobj = mw.language.new( langcode ) else langobj = mw.language.getContentLanguage() end end return langobj end ------------------------------------------------------------------------------- -- _getItemLangCode takes a qid parameter (using the current page's qid if blank) -- If the item for that qid has property country (P17) it looks at the first preferred value -- If the country has an official language (P37), it looks at the first preferred value -- If that official language has a language code (P424), it returns the first preferred value -- Otherwise it returns nothing. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local _getItemLangCode = function(qid) qid = mw.text.trim(qid or ""):upper() if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid then return end local prop17 = mw.wikibase.getBestStatements(qid, "P17")[1] if not prop17 or prop17.mainsnak.snaktype ~= "value" then return end local qid17 = prop17.mainsnak.datavalue.value.id local prop37 = mw.wikibase.getBestStatements(qid17, "P37")[1] if not prop37 or prop37.mainsnak.snaktype ~= "value" then return end local qid37 = prop37.mainsnak.datavalue.value.id local prop424 = mw.wikibase.getBestStatements(qid37, "P424")[1] if not prop424 or prop424.mainsnak.snaktype ~= "value" then return end return prop424.mainsnak.datavalue.value end ------------------------------------------------------------------------------- -- roundto takes a number (x) -- and returns it rounded to (sf) significant figures ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local roundto = function(x, sf) if x == 0 then return 0 end local s = 1 if x < 0 then x = -x s = -1 end if sf < 1 then sf = 1 end local p = 10 ^ (math.floor(math.log10(x)) - sf + 1) x = math.floor(x / p + 0.5) * p * s -- if it's integral, cast to an integer: if x == math.floor(x) then x = math.floor(x) end return x end ------------------------------------------------------------------------------- -- decimalToDMS takes a decimal degrees (x) with precision (p) -- and returns degrees/minutes/seconds according to the precision ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local decimalToDMS = function(x, p) -- if p is not supplied, use a precision around 0.1 seconds if not tonumber(p) then p = 1e-4 end local d = math.floor(x) local ms = (x - d) * 60 if p > 0.5 then -- precision is > 1/2 a degree if ms > 30 then d = d + 1 end ms = 0 end local m = math.floor(ms) local s = (ms - m) * 60 if p > 0.008 then -- precision is > 1/2 a minute if s > 30 then m = m +1 end s = 0 elseif p > 0.00014 then -- precision is > 1/2 a second s = math.floor(s + 0.5) elseif p > 0.000014 then -- precision is > 1/20 second s = math.floor(10 * s + 0.5) / 10 elseif p > 0.0000014 then -- precision is > 1/200 second s = math.floor(100 * s + 0.5) / 100 else -- cap it at 3 dec places for now s = math.floor(1000 * s + 0.5) / 1000 end return d, m, s end ------------------------------------------------------------------------------- -- decimalPrecision takes a decimal (x) with precision (p) -- and returns x rounded approximately to the given precision -- precision should be between 1 and 1e-6, preferably a power of 10. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local decimalPrecision = function(x, p) local s = 1 if x < 0 then x = -x s = -1 end -- if p is not supplied, pick an arbitrary precision if not tonumber(p) then p = 1e-4 elseif p > 1 then p = 1 elseif p < 1e-6 then p = 1e-6 else p = 10 ^ math.floor(math.log10(p)) end x = math.floor(x / p + 0.5) * p * s -- if it's integral, cast to an integer: if x == math.floor(x) then x = math.floor(x) end -- if it's less than 1e-4, it will be in exponent form, so return a string with 6dp -- 9e-5 becomes 0.000090 if math.abs(x) < 1e-4 then x = string.format("%f", x) end return x end ------------------------------------------------------------------------------- -- formatDate takes a datetime of the usual format from mw.wikibase.entity:formatPropertyValues -- like "1 August 30 BCE" as parameter 1 -- and formats it according to the df (date format) and bc parameters -- df = ["dmy" / "mdy" / "y"] default will be "dmy" -- bc = ["BC" / "BCE"] default will be "BCE" ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local format_Date = function(datetime, dateformat, bc) local datetime = datetime or "1 August 30 BCE" -- in case of nil value -- chop off multiple vales and/or any hours, mins, etc. -- keep anything before punctuation - we just want a single date: local dateval = string.match( datetime, "[%w ]+") local dateformat = string.lower(dateformat or "dmy") -- default to dmy local bc = string.upper(bc or "") -- can't use nil for bc -- we only want to accept two possibilities: BC or default to BCE if bc == "BC" then bc = "&nbsp;" .. i18n["BC"] -- prepend a non-breaking space. else bc = "&nbsp;" .. i18n["BCE"] end local postchrist = true -- start by assuming no BCE local dateparts = {} for word in string.gmatch(dateval, "%w+") do if word == "BCE" or word == "BC" then -- *** internationalise later *** postchrist = false else -- we'll keep the parts that are not 'BCE' in a table dateparts[#dateparts + 1] = word end end if postchrist then bc = "" end -- set AD dates to no suffix *** internationalise later *** local sep = "&nbsp;" -- separator is nbsp local fdate = table.concat(dateparts, sep) -- set formatted date to same order as input -- if we have day month year, check dateformat if #dateparts == 3 then if dateformat == "y" then fdate = dateparts[3] elseif dateformat == "mdy" then fdate = dateparts[2] .. sep .. dateparts[1] .. "," .. sep .. dateparts[3] end elseif #dateparts == 2 and dateformat == "y" then fdate = dateparts[2] end return fdate .. bc end ------------------------------------------------------------------------------- -- dateFormat is the handler for properties that are of type "time" -- It takes timestamp, precision (6 to 11 per mediawiki), dateformat (y/dmy/mdy), BC format (BC/BCE), -- a plaindate switch (yes/no/adj) to en/disable "sourcing circumstances"/use adjectival form, -- any qualifiers for the property, the language, and any adjective to use like 'before'. -- It passes the date through the "complex date" function -- and returns a string with the internatonalised date formatted according to preferences. ------------------------------------------------------------------------------- -- Dependencies: findLang(); cdate(); dp[] ------------------------------------------------------------------------------- local dateFormat = function(timestamp, dprec, df, bcf, pd, qualifiers, lang, adj, model) -- output formatting according to preferences (y/dmy/mdy/ymd) df = (df or ""):lower() -- if ymd is required, return the part of the timestamp in YYYY-MM-DD form -- but apply Year zero#Astronomers fix: 1 BC = 0000; 2 BC = -0001; etc. if df == "ymd" then if timestamp:sub(1,1) == "+" then return timestamp:sub(2,11) else local yr = tonumber(timestamp:sub(2,5)) - 1 yr = ("000" .. yr):sub(-4) if yr ~= "0000" then yr = "-" .. yr end return yr .. timestamp:sub(6,11) end end -- A year can be stored like this: "+1872-00-00T00:00:00Z", -- which is processed here as if it were the day before "+1872-01-01T00:00:00Z", -- and that's the last day of 1871, so the year is wrong. -- So fix the month 0, day 0 timestamp to become 1 January instead: timestamp = timestamp:gsub("%-00%-00T", "-01-01T") -- just in case date precision is missing dprec = dprec or 11 -- override more precise dates if required dateformat is year alone: if df == "y" and dprec > 9 then dprec = 9 end -- complex date only deals with precisions from 6 to 11, so clip range dprec = dprec>11 and 11 or dprec dprec = dprec<6 and 6 or dprec -- BC format is "BC" or "BCE" bcf = (bcf or ""):upper() -- plaindate only needs the first letter (y/n/a) pd = (pd or ""):sub(1,1):lower() if pd == "" or pd == "n" or pd == "f" or pd == "0" then pd = false end -- in case language isn't passed lang = lang or findLang().code -- set adj as empty if nil adj = adj or "" -- extract the day, month, year from the timestamp local bc = timestamp:sub(1, 1)=="-" and "BC" or "" local year, month, day = timestamp:match("[+-](%d*)-(%d*)-(%d*)T") local iso = tonumber(year) -- if year is missing, let it throw an error -- this will adjust the date format to be compatible with cdate -- possible formats are Y, YY, YYY0, YYYY, YYYY-MM, YYYY-MM-DD if dprec == 6 then iso = math.floor( (iso - 1) / 1000 ) + 1 end if dprec == 7 then iso = math.floor( (iso - 1) / 100 ) + 1 end if dprec == 8 then iso = math.floor( iso / 10 ) .. "0" end if dprec == 10 then iso = year .. "-" .. month end if dprec == 11 then iso = year .. "-" .. month .. "-" .. day end -- add "circa" (Q5727902) from "sourcing circumstances" (P1480) local sc = not pd and qualifiers and qualifiers.P1480 if sc then for k1, v1 in pairs(sc) do if v1.datavalue and v1.datavalue.value.id == "Q5727902" then adj = "circa" break end end end -- deal with Julian dates: -- no point in saying that dates before 1582 are Julian - they are by default -- doesn't make sense for dates less precise than year -- we can suppress it by setting |plaindate, e.g. for use in constructing categories. local calendarmodel = "" if tonumber(year) > 1582 and dprec > 8 and not pd and model == "http://www.wikidata.org/entity/Q1985786" then calendarmodel = "julian" end if not cdate then cdate = require("Module:Complex date")._complex_date end local fdate = cdate(calendarmodel, adj, tostring(iso), dp[dprec], bc, "", "", "", "", lang, 1) -- this may have QuickStatements info appended to it in a div, so remove that fdate = fdate:gsub(' <div style="display: none;">[^<]*</div>', '') -- it may also be returned wrapped in a microformat, so remove that fdate = fdate:gsub("<[^>]*>", "") -- there may be leading zeros that we should remove fdate = fdate:gsub("^0*", "") -- if a plain date is required, then remove any links (like BC linked) if pd then fdate = fdate:gsub("%[%[.*|", ""):gsub("]]", "") end -- if 'circa', use the abbreviated form *** internationalise later *** fdate = fdate:gsub('circa ', '<abbr title="circa">c.</abbr>&nbsp;') -- deal with BC/BCE if bcf == "BCE" then fdate = fdate:gsub('BC', 'BCE') end -- deal with mdy format if df == "mdy" then fdate = fdate:gsub("(%d+) (%w+) (%d+)", "%2 %1, %3") end -- deal with adjectival form *** internationalise later *** if pd == "a" then fdate = fdate:gsub(' century', '-century') end return fdate end ------------------------------------------------------------------------------- -- parseParam takes a (string) parameter, e.g. from the list of frame arguments, -- and makes "false", "no", and "0" into the (boolean) false -- it makes the empty string and nil into the (boolean) value passed as default -- allowing the parameter to be true or false by default. -- It returns a boolean. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local parseParam = function(param, default) if type(param) == "boolean" then param = tostring(param) end if param and param ~= "" then param = param:lower() if (param == "false") or (param:sub(1,1) == "n") or (param == "0") then return false else return true end else return default end end ------------------------------------------------------------------------------- -- _getSitelink takes the qid of a Wikidata entity passed as |qid= -- It takes an optional parameter |wiki= to determine which wiki is to be checked for a sitelink -- If the parameter is blank, then it uses the local wiki. -- If there is a sitelink to an article available, it returns the plain text link to the article -- If there is no sitelink, it returns nil. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local _getSitelink = function(qid, wiki) qid = (qid or ""):upper() if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid then return nil end wiki = wiki or "" local sitelink if wiki == "" then sitelink = mw.wikibase.getSitelink(qid) else sitelink = mw.wikibase.getSitelink(qid, wiki) end return sitelink end ------------------------------------------------------------------------------- -- _getCommonslink takes an optional qid of a Wikidata entity passed as |qid= -- It returns one of the following in order of preference: -- the Commons sitelink of the Wikidata entity - but not if onlycat=true and it's not a category; -- the Commons sitelink of the topic's main category of the Wikidata entity; -- the Commons category of the Wikidata entity - unless fallback=false. ------------------------------------------------------------------------------- -- Dependencies: _getSitelink(); parseParam() ------------------------------------------------------------------------------- local _getCommonslink = function(qid, onlycat, fallback) qid = (qid or ""):upper() if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid then return nil end onlycat = parseParam(onlycat, false) if fallback == "" then fallback = nil end local sitelink = _getSitelink(qid, "commonswiki") if onlycat and sitelink and sitelink:sub(1,9) ~= "Category:" then sitelink = nil end if not sitelink then -- check for topic's main category local prop910 = mw.wikibase.getBestStatements(qid, "P910")[1] if prop910 then local tmcid = prop910.mainsnak.datavalue and prop910.mainsnak.datavalue.value.id sitelink = _getSitelink(tmcid, "commonswiki") end if not sitelink then -- check for list's main category local prop1754 = mw.wikibase.getBestStatements(qid, "P1754")[1] if prop1754 then local tmcid = prop1754.mainsnak.datavalue and prop1754.mainsnak.datavalue.value.id sitelink = _getSitelink(tmcid, "commonswiki") end end end if not sitelink and fallback then -- check for Commons category (string value) local prop373 = mw.wikibase.getBestStatements(qid, "P373")[1] if prop373 then sitelink = prop373.mainsnak.datavalue and prop373.mainsnak.datavalue.value if sitelink then sitelink = "Category:" .. sitelink end end end return sitelink end ------------------------------------------------------------------------------- -- The label in a Wikidata item is subject to vulnerabilities -- that an attacker might try to exploit. -- It needs to be 'sanitised' by removing any wikitext before use. -- If it doesn't exist, return the id for the item -- a second (boolean) value is also returned, value is true when the label exists ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local labelOrId = function(id, lang) if lang == "default" then lang = findLang().code end local label if lang then label = mw.wikibase.getLabelByLang(id, lang) else label = mw.wikibase.getLabel(id) end if label then return mw.text.nowiki(label), true else return id, false end end ------------------------------------------------------------------------------- -- linkedItem takes an entity-id and returns a string, linked if possible. -- This is the handler for "wikibase-item". Preferences: -- 1. Display linked disambiguated sitelink if it exists -- 2. Display linked label if it is a redirect -- 3. TBA: Display an inter-language link for the label if it exists other than in default language -- 4. Display unlinked label if it exists -- 5. Display entity-id for now to indicate a label could be provided -- dtxt is text to be used instead of label, or nil. -- shortname is boolean switch to use P1813 (short name) instead of label if true. -- lang is the current language code. -- uselbl is boolean switch to force display of the label instead of the sitelink (default: false) -- linkredir is boolean switch to allow linking to a redirect (default: false) -- formatvalue is boolean switch to allow formatting as italics or quoted (default: false) ------------------------------------------------------------------------------- -- Dependencies: labelOrId(); donotlink[] ------------------------------------------------------------------------------- local linkedItem = function(id, args) local lprefix = (args.lp or args.lprefix or args.linkprefix or ""):gsub('"', '') -- toughen against nil values passed local lpostfix = (args.lpostfix or ""):gsub('"', '') local prefix = (args.prefix or ""):gsub('"', '') local postfix = (args.postfix or ""):gsub('"', '') local dtxt = args.dtxt local shortname = args.shortname or args.sn local lang = args.lang or "en" -- fallback to default if missing local uselbl = args.uselabel or args.uselbl uselbl = parseParam(uselbl, false) local linkredir = args.linkredir linkredir = parseParam(linkredir, false) local formatvalue = args.formatvalue or args.fv formatvalue = parseParam(formatvalue, false) -- see if item might need italics or quotes local fmt = "" if next(formats) and formatvalue then for k, v in ipairs( mw.wikibase.getBestStatements(id, "P31") ) do if v.mainsnak.datavalue and formats[v.mainsnak.datavalue.value.id] then fmt = formats[v.mainsnak.datavalue.value.id] break -- pick the first match end end end local disp local sitelink = mw.wikibase.getSitelink(id) local label, islabel if dtxt then label, islabel = dtxt, true elseif shortname then -- see if there is a shortname in our language, and set label to it for k, v in ipairs( mw.wikibase.getBestStatements(id, "P1813") ) do if v.mainsnak.datavalue.value.language == lang then label, islabel = v.mainsnak.datavalue.value.text, true break end -- test for language match end -- loop through values of short name -- if we have no label set, then there was no shortname available if not islabel then label, islabel = labelOrId(id) shortname = false end else label, islabel = labelOrId(id) end if mw.site.siteName ~= "Wikimedia Commons" then if sitelink then if not (dtxt or shortname) then -- if sitelink and label are the same except for case, no need to process further if sitelink:lower() ~= label:lower() then -- strip any namespace or dab from the sitelink local pos = sitelink:find(":") or 0 local slink = sitelink if pos > 0 then local pfx = sitelink:sub(1,pos-1) if mw.site.namespaces[pfx] then -- that prefix is a valid namespace, so remove it slink = sitelink:sub(pos+1) end end -- remove stuff after commas or inside parentheses - ie. dabs slink = slink:gsub("%s%(.+%)$", ""):gsub(",.+$", "") -- if uselbl is false, use sitelink instead of label if not uselbl then -- use slink as display, preserving label case - find("^%u") is true for 1st char uppercase if label:find("^%u") then label = slink:gsub("^(%l)", string.upper) else label = slink:gsub("^(%u)", string.lower) end end end end if donotlink[label] then disp = prefix .. fmt .. label .. fmt .. postfix else disp = "[[" .. lprefix .. sitelink .. lpostfix .. "|" .. prefix .. fmt .. label .. fmt .. postfix .. "]]" end elseif islabel then -- no sitelink, label exists, so check if a redirect with that title exists, if linkredir is true -- display plain label by default disp = prefix .. fmt .. label .. fmt .. postfix if linkredir then local artitle = mw.title.new(label, 0) -- only nil if label has invalid chars if not donotlink[label] and artitle and artitle.redirectTarget then -- there's a redirect with the same title as the label, so let's link to that disp = "[[".. lprefix .. label .. lpostfix .. "|" .. prefix .. fmt .. label .. fmt .. postfix .. "]]" end end -- test if article title exists as redirect on current Wiki else -- no sitelink and no label, so return whatever was returned from labelOrId for now -- add tracking category [[Category:Articles with missing Wikidata information]] -- for enwiki, just return the tracking category if mw.wikibase.getGlobalSiteId() == "enwiki" then disp = i18n.missinginfocat else disp = prefix .. label .. postfix .. i18n.missinginfocat end end else local ccat = mw.wikibase.getBestStatements(id, "P373")[1] if ccat and ccat.mainsnak.datavalue then ccat = ccat.mainsnak.datavalue.value disp = "[[" .. lprefix .. "Category:" .. ccat .. lpostfix .. "|" .. prefix .. label .. postfix .. "]]" elseif sitelink then -- this asumes that if a sitelink exists, then a label also exists disp = "[[" .. lprefix .. sitelink .. lpostfix .. "|" .. prefix .. label .. postfix .. "]]" else -- no sitelink and no Commons cat, so return label from labelOrId for now disp = prefix .. label .. postfix end end return disp end ------------------------------------------------------------------------------- -- sourced takes a table representing a statement that may or may not have references -- it looks for a reference sourced to something not containing the word "wikipedia" -- it returns a boolean = true if it finds a sourced reference. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local sourced = function(claim) if claim.references then for kr, vr in pairs(claim.references) do local ref = mw.wikibase.renderSnaks(vr.snaks) if not ref:find("Wiki") then return true end end end end ------------------------------------------------------------------------------- -- setRanks takes a flag (parameter passed) that requests the values to return -- "b[est]" returns preferred if available, otherwise normal -- "p[referred]" returns preferred -- "n[ormal]" returns normal -- "d[eprecated]" returns deprecated -- multiple values are allowed, e.g. "preferred normal" (which is the default) -- "best" will override the other flags, and set p and n ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local setRanks = function(rank) rank = (rank or ""):lower() -- if nothing passed, return preferred and normal -- if rank == "" then rank = "p n" end local ranks = {} for w in string.gmatch(rank, "%a+") do w = w:sub(1,1) if w == "b" or w == "p" or w == "n" or w == "d" then ranks[w] = true end end -- check if "best" is requested or no ranks requested; and if so, set preferred and normal if ranks.b or not next(ranks) then ranks.p = true ranks.n = true end return ranks end ------------------------------------------------------------------------------- -- parseInput processes the Q-id , the blacklist and the whitelist -- if an input parameter is supplied, it returns that and ends the call. -- it returns (1) either the qid or nil indicating whether or not the call should continue -- and (2) a table containing all of the statements for the propertyID and relevant Qid -- if "best" ranks are requested, it returns those instead of all non-deprecated ranks ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- local parseInput = function(frame, input_parm, property_id) -- There may be a local parameter supplied, if it's blank, set it to nil input_parm = mw.text.trim(input_parm or "") if input_parm == "" then input_parm = nil end -- return nil if Wikidata is not available if not mw.wikibase then return false, input_parm end local args = frame.args -- can take a named parameter |qid which is the Wikidata ID for the article. -- if it's not supplied, use the id for the current page local qid = args.qid or "" if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end -- if there's no Wikidata item for the current page return nil if not qid then return false, input_parm end -- The blacklist is passed in named parameter |suppressfields local blacklist = args.suppressfields or args.spf or "" -- The whitelist is passed in named parameter |fetchwikidata local whitelist = args.fetchwikidata or args.fwd or "" if whitelist == "" then whitelist = "NONE" end -- The name of the field that this function is called from is passed in named parameter |name local fieldname = args.name or "" if blacklist ~= "" then -- The name is compulsory when blacklist is used, so return nil if it is not supplied if fieldname == "" then return false, nil end -- If this field is on the blacklist, then return nil if blacklist:find(fieldname) then return false, nil end end -- If we got this far then we're not on the blacklist -- The blacklist overrides any locally supplied parameter as well -- If a non-blank input parameter was supplied return it if input_parm then return false, input_parm end -- We can filter out non-valid properties if property_id:sub(1,1):upper() ~="P" or property_id == "P0" then return false, nil end -- Otherwise see if this field is on the whitelist: -- needs a bit more logic because find will return its second value = 0 if fieldname is "" -- but nil if fieldname not found on whitelist local _, found = whitelist:find(fieldname) found = ((found or 0) > 0) if whitelist ~= 'ALL' and (whitelist:upper() == "NONE" or not found) then return false, nil end -- See what's on Wikidata (the call always returns a table, but it may be empty): local props = {} if args.reqranks.b then props = mw.wikibase.getBestStatements(qid, property_id) else props = mw.wikibase.getAllStatements(qid, property_id) end if props[1] then return qid, props end -- no property on Wikidata return false, nil end ------------------------------------------------------------------------------- -- createicon assembles the "Edit at Wikidata" pen icon. -- It returns a wikitext string inside a span class="penicon" -- if entityID is nil or empty, the ID associated with current page is used -- langcode and propertyID may be nil or empty ------------------------------------------------------------------------------- -- Dependencies: i18n[]; ------------------------------------------------------------------------------- local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" if not entityID or entityID == "" then entityID= mw.wikibase.getEntityIdForCurrentPage() end propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. i18n["filespace"] .. ":OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n["editonwikidata"] .. "|link=https://www.wikidata.org/wiki/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n["editonwikidata"] .. "]]</span>" return icon end ------------------------------------------------------------------------------- -- assembleoutput takes the sequence table containing the property values -- and formats it according to switches given. It returns a string or nil. -- It uses the entityID (and optionally propertyID) to create a link in the pen icon. ------------------------------------------------------------------------------- -- Dependencies: parseParam(); ------------------------------------------------------------------------------- local assembleoutput = function(out, args, entityID, propertyID) -- sorted is a boolean passed to enable sorting of the values returned -- if nothing or an empty string is passed set it false -- if "false" or "no" or "0" is passed set it false local sorted = parseParam(args.sorted, false) -- noicon is a boolean passed to suppress the trailing "edit at Wikidata" icon -- for use when the value is processed further by the infobox -- if nothing or an empty string is passed set it false -- if "false" or "no" or "0" is passed set it false local noic = parseParam(args.noicon, false) -- list is the name of a template that a list of multiple values is passed through -- examples include "hlist" and "ubl" -- setting it to "prose" produces something like "1, 2, 3, and 4" local list = args.list or "" -- sep is a string that is used to separate multiple returned values -- if nothing or an empty string is passed set it to the default -- any double-quotes " are stripped out, so that spaces may be passed -- e.g. |sep=" - " local sepdefault = i18n["list separator"] local separator = args.sep or "" separator = string.gsub(separator, '"', '') if separator == "" then separator = sepdefault end -- collapse is a number that determines the maximum number of returned values -- before the output is collapsed. -- Zero or not a number result in no collapsing (default becomes 0). local collapse = tonumber(args.collapse) or 0 -- replacetext (rt) is a string that is returned instead of any non-empty Wikidata value -- this is useful for tracking and debugging local replacetext = mw.text.trim(args.rt or args.replacetext or "") -- if there's anything to return, then return a list -- comma-separated by default, but may be specified by the sep parameter -- optionally specify a hlist or ubl or a prose list, etc. local strout if #out > 0 then if sorted then table.sort(out) end -- if there's something to display and a pen icon is wanted, add it the end of the last value local hasdisplay = false for i, v in ipairs(out) do if v ~= i18n.missinginfocat then hasdisplay = true break end end if not noic and hasdisplay then out[#out] = out[#out] .. createicon(args.langobj.code, entityID, propertyID) end if list == "" then strout = table.concat(out, separator) elseif list:lower() == "prose" then strout = mw.text.listToText( out ) else strout = mw.getCurrentFrame():expandTemplate{title = list, args = out} end if collapse >0 and #out > collapse then strout = collapsediv .. strout .. "</div>" end else strout = nil -- no items had valid reference end if replacetext ~= "" and strout then strout = replacetext end return strout end ------------------------------------------------------------------------------- -- rendersnak takes a table (propval) containing the information stored on one property value -- and returns the value as a string and its language if monolingual text. -- It handles data of type: -- wikibase-item -- time -- string, url, commonsMedia, external-id -- quantity -- globe-coordinate -- monolingualtext -- It also requires linked, the link/pre/postfixes, uabbr, and the arguments passed from frame. -- The optional filter parameter allows quantities to be be filtered by unit Qid. ------------------------------------------------------------------------------- -- Dependencies: parseParam(); labelOrId(); i18n[]; dateFormat(); -- roundto(); decimalPrecision(); decimalToDMS(); linkedItem(); ------------------------------------------------------------------------------- local rendersnak = function(propval, args, linked, lpre, lpost, pre, post, uabbr, filter) lpre = lpre or "" lpost = lpost or "" pre = pre or "" post = post or "" args.lang = args.lang or findLang().code -- allow values to display a fixed text instead of label local dtxt = args.displaytext or args.dt if dtxt == "" then dtxt = nil end -- switch to use display of short name (P1813) instead of label local shortname = args.shortname or args.sn shortname = parseParam(shortname, false) local snak = propval.mainsnak or propval local dtype = snak.datatype local dv = snak.datavalue dv = dv and dv.value -- value and monolingual text language code returned local val, mlt if propval.rank and not args.reqranks[propval.rank:sub(1, 1)] then -- val is nil: value has a rank that isn't requested ------------------------------------ elseif snak.snaktype == "somevalue" then -- value is unknown val = i18n["Unknown"] ------------------------------------ elseif snak.snaktype == "novalue" then -- value is none -- val = "No value" -- don't return anything ------------------------------------ elseif dtype == "wikibase-item" then -- data type is a wikibase item: -- it's wiki-linked value, so output as link if enabled and possible local qnumber = dv.id if linked then val = linkedItem(qnumber, args) else -- no link wanted so check for display-text, otherwise test for lang code local label, islabel if dtxt then label = dtxt else label, islabel = labelOrId(qnumber) local langlabel = mw.wikibase.getLabelByLang(qnumber, args.lang) if langlabel then label = mw.text.nowiki( langlabel ) end end val = pre .. label .. post end -- test for link required ------------------------------------ elseif dtype == "time" then -- data type is time: -- time is in timestamp format -- date precision is integer per mediawiki -- output formatting according to preferences (y/dmy/mdy) -- BC format as BC or BCE -- plaindate is passed to disable looking for "sourcing cirumstances" -- or to set the adjectival form -- qualifiers (if any) is a nested table or nil -- lang is given, or user language, or site language -- -- Here we can check whether args.df has a value -- If not, use code from Module:Sandbox/RexxS/Getdateformat to set it from templates like {{Use mdy dates}} val = dateFormat(dv.time, dv.precision, args.df, args.bc, args.pd, propval.qualifiers, args.lang, "", dv.calendarmodel) ------------------------------------ -- data types which are strings: elseif dtype == "commonsMedia" or dtype == "external-id" or dtype == "string" or dtype == "url" then -- commonsMedia or external-id or string or url -- all have mainsnak.datavalue.value as string if (lpre == "" or lpre == ":") and lpost == "" then -- don't link if no linkpre/postfix or linkprefix is just ":" val = pre .. dv .. post elseif dtype == "external-id" then val = "[" .. lpre .. dv .. lpost .. " " .. pre .. dv .. post .. "]" else val = "[[" .. lpre .. dv .. lpost .. "|" .. pre .. dv .. post .. "]]" end -- check for link requested (i.e. either linkprefix or linkpostfix exists) ------------------------------------ -- data types which are quantities: elseif dtype == "quantity" then -- quantities have mainsnak.datavalue.value.amount and mainsnak.datavalue.value.unit -- the unit is of the form http://www.wikidata.org/entity/Q829073 -- -- implement a switch to turn on/off numerical formatting later local fnum = true -- -- a switch to turn on/off conversions - only for en-wiki local conv = parseParam(args.conv or args.convert, false) -- if we have conversions, we won't have formatted numbers or scales if conv then uabbr = true fnum = false args.scale = "0" end -- -- a switch to turn on/off showing units, default is true local showunits = parseParam(args.su or args.showunits, true) -- -- convert amount to a number local amount = tonumber(dv.amount) or i18n["NaN"] -- -- scale factor for millions, billions, etc. local sc = tostring(args.scale or ""):sub(1,1):lower() local scale if sc == "a" then -- automatic scaling if amount > 1e15 then scale = 12 elseif amount > 1e12 then scale = 9 elseif amount > 1e9 then scale = 6 elseif amount > 1e6 then scale = 3 else scale = 0 end else scale = tonumber(args.scale) or 0 if scale < 0 or scale > 12 then scale = 0 end scale = math.floor(scale/3) * 3 end local factor = 10^scale amount = amount / factor -- ranges: local range = "" -- check if upper and/or lower bounds are given and significant local upb = tonumber(dv.upperBound) local lowb = tonumber(dv.lowerBound) if upb and lowb then -- differences rounded to 2 sig fig: local posdif = roundto(upb - amount, 2) / factor local negdif = roundto(amount - lowb, 2) / factor upb, lowb = amount + posdif, amount - negdif -- round scaled numbers to integers or 4 sig fig if (scale > 0 or sc == "a") then if amount < 1e4 then amount = roundto(amount, 4) else amount = math.floor(amount + 0.5) end end if fnum then amount = args.langobj:formatNum( amount ) end if posdif ~= negdif then -- non-symmetrical range = " +" .. posdif .. " -" .. negdif elseif posdif ~= 0 then -- symmetrical and non-zero range = " ±" .. posdif else -- otherwise range is zero, so leave it as "" end else -- round scaled numbers to integers or 4 sig fig if (scale > 0 or sc == "a") then if amount < 1e4 then amount = roundto(amount, 4) else amount = math.floor(amount + 0.5) end end if fnum then amount = args.langobj:formatNum( amount ) end end -- unit names and symbols: -- extract the qid in the form 'Qnnn' from the value.unit url -- and then fetch the label from that - or symbol if unitabbr is true local unit = "" local usep = "" local usym = "" local unitqid = string.match( dv.unit, "(Q%d+)" ) if filter and unitqid ~= filter then return nil end if unitqid and showunits then local uname = mw.wikibase.getLabelByLang(unitqid, args.lang) or "" if uname ~= "" then usep, unit = " ", uname end if uabbr then -- see if there's a unit symbol (P5061) local unitsymbols = mw.wikibase.getBestStatements(unitqid, "P5061") -- construct fallback table, add local lang and multiple languages local fbtbl = mw.language.getFallbacksFor( args.lang ) table.insert( fbtbl, 1, args.lang ) table.insert( fbtbl, 1, "mul" ) local found = false for idx1, us in ipairs(unitsymbols) do for idx2, fblang in ipairs(fbtbl) do if us.mainsnak.datavalue.value.language == fblang then usym = us.mainsnak.datavalue.value.text found = true break end if found then break end end -- loop through fallback table end -- loop through values of P5061 if found then usep, unit = "&nbsp;", usym end end end -- format display: if conv then if range == "" then val = mw.getCurrentFrame():expandTemplate{title = "cvt", args = {amount, unit}} else val = mw.getCurrentFrame():expandTemplate{title = "cvt", args = {lowb, "to", upb, unit}} end elseif unit == "$" or unit == "£" then val = unit .. amount .. range .. i18n.multipliers[scale] else val = amount .. range .. i18n.multipliers[scale] .. usep .. unit end ------------------------------------ -- datatypes which are global coordinates: elseif dtype == "globe-coordinate" then -- 'display' parameter defaults to "inline, title" *** unused for now *** -- local disp = args.display or "" -- if disp == "" then disp = "inline, title" end -- -- format parameter switches from deg/min/sec to decimal degrees -- default is deg/min/sec -- decimal degrees needs |format = dec local form = (args.format or ""):lower():sub(1,3) if form ~= "dec" then form = "dms" end -- not needed for now -- -- show parameter allows just the latitude, or just the longitude, or both -- to be returned as a signed decimal, ignoring the format parameter. local show = (args.show or ""):lower() if show ~= "longlat" then show = show:sub(1,3) end -- local lat, long, prec = dv.latitude, dv.longitude, dv.precision if show == "lat" then val = decimalPrecision(lat, prec) elseif show == "lon" then val = decimalPrecision(long, prec) elseif show == "longlat" then val = decimalPrecision(long, prec) .. ", " .. decimalPrecision(lat, prec) else local ns = "N" local ew = "E" if lat < 0 then ns = "S" lat = - lat end if long < 0 then ew = "W" long = - long end if form == "dec" then lat = decimalPrecision(lat, prec) long = decimalPrecision(long, prec) val = lat .. "°" .. ns .. " " .. long .. "°" .. ew else local latdeg, latmin, latsec = decimalToDMS(lat, prec) local longdeg, longmin, longsec = decimalToDMS(long, prec) if latsec == 0 and longsec == 0 then if latmin == 0 and longmin == 0 then val = latdeg .. "°" .. ns .. " " .. longdeg .. "°" .. ew else val = latdeg .. "°" .. latmin .. "′" .. ns .. " " val = val .. longdeg .. "°".. longmin .. "′" .. ew end else val = latdeg .. "°" .. latmin .. "′" .. latsec .. "″" .. ns .. " " val = val .. longdeg .. "°" .. longmin .. "′" .. longsec .. "″" .. ew end end end ------------------------------------ elseif dtype == "monolingualtext" then -- data type is Monolingual text: -- has mainsnak.datavalue.value as a table containing language/text pairs -- collect all the values in 'out' and languages in 'mlt' and process them later val = pre .. dv.text .. post mlt = dv.language ------------------------------------ else -- some other data type so write a specific handler val = "unknown data type: " .. dtype end -- of datatype/unknown value/sourced check return val, mlt end ------------------------------------------------------------------------------- -- propertyvalueandquals takes a property object, the arguments passed from frame, -- and a qualifier propertyID. -- It returns a sequence (table) of values representing the values of that property -- and qualifiers that match the qualifierID if supplied. ------------------------------------------------------------------------------- -- Dependencies: parseParam(); sourced(); labelOrId(); i18n.latestdatequalifier(); format_Date(); -- makeOrdinal(); roundto(); decimalPrecision(); decimalToDMS(); assembleoutput(); ------------------------------------------------------------------------------- local function propertyvalueandquals(objproperty, args, qualID) -- needs this style of declaration because it's re-entrant -- onlysourced is a boolean passed to return only values sourced to other than Wikipedia -- if nothing or an empty string is passed set it true local onlysrc = parseParam(args.onlysourced or args.osd, true) -- linked is a a boolean that enables the link to a local page via sitelink -- if nothing or an empty string is passed set it true local linked = parseParam(args.linked, true) -- prefix is a string that may be nil, empty (""), or a string of characters -- this is prefixed to each value -- useful when when multiple values are returned -- any double-quotes " are stripped out, so that spaces may be passed local prefix = (args.prefix or ""):gsub('"', '') -- postfix is a string that may be nil, empty (""), or a string of characters -- this is postfixed to each value -- useful when when multiple values are returned -- any double-quotes " are stripped out, so that spaces may be passed local postfix = (args.postfix or ""):gsub('"', '') -- linkprefix is a string that may be nil, empty (""), or a string of characters -- this creates a link and is then prefixed to each value -- useful when when multiple values are returned and indirect links are needed -- any double-quotes " are stripped out, so that spaces may be passed local lprefix = (args.linkprefix or args.lp or ""):gsub('"', '') -- linkpostfix is a string that may be nil, empty (""), or a string of characters -- this is postfixed to each value when linking is enabled with lprefix -- useful when when multiple values are returned -- any double-quotes " are stripped out, so that spaces may be passed local lpostfix = (args.linkpostfix or ""):gsub('"', '') -- wdlinks is a boolean passed to enable links to Wikidata when no article exists -- if nothing or an empty string is passed set it false local wdl = parseParam(args.wdlinks or args.wdl, false) -- unitabbr is a boolean passed to enable unit abbreviations for common units -- if nothing or an empty string is passed set it false local uabbr = parseParam(args.unitabbr or args.uabbr, false) -- qualsonly is a boolean passed to return just the qualifiers -- if nothing or an empty string is passed set it false local qualsonly = parseParam(args.qualsonly or args.qo, false) -- maxvals is a string that may be nil, empty (""), or a number -- this determines how many items may be returned when multiple values are available -- setting it = 1 is useful where the returned string is used within another call, e.g. image local maxvals = tonumber(args.maxvals) or 0 -- pd (plain date) is a string: yes/true/1 | no/false/0 | adj -- to disable/enable "sourcing cirumstances" or use adjectival form for the plain date local pd = args.plaindate or args.pd or "no" args.pd = pd -- allow qualifiers to have a different date format; default to year unless qualsonly is set args.qdf = args.qdf or args.qualifierdateformat or args.df or (not qualsonly and "y") local lang = args.lang or findLang().code -- qualID is a string list of wanted qualifiers or "ALL" qualID = qualID or "" -- capitalise list of wanted qualifiers and substitute "DATES" qualID = qualID:upper():gsub("DATES", "P580, P582") local allflag = (qualID == "ALL") -- create table of wanted qualifiers as key local qwanted = {} -- create sequence of wanted qualifiers local qorder = {} for q in mw.text.gsplit(qualID, "%p") do -- split at punctuation and iterate local qtrim = mw.text.trim(q) if qtrim ~= "" then qwanted[mw.text.trim(q)] = true qorder[#qorder+1] = qtrim end end -- qsep is the output separator for rendering qualifier list local qsep = (args.qsep or ""):gsub('"', '') -- qargs are the arguments to supply to assembleoutput() local qargs = { ["osd"] = "false", ["linked"] = tostring(linked), ["prefix"] = args.qprefix, ["postfix"] = args.qpostfix, ["linkprefix"] = args.qlinkprefix or args.qlp, ["linkpostfix"] = args.qlinkpostfix, ["wdl"] = "false", ["unitabbr"] = tostring(uabbr), ["maxvals"] = 0, ["sorted"] = tostring(args.qsorted), ["noicon"] = "true", ["list"] = args.qlist, ["sep"] = qsep, ["langobj"] = args.langobj, ["lang"] = args.langobj.code, ["df"] = args.qdf, ["sn"] = parseParam(args.qsn or args.qshortname, false), } -- all proper values of a Wikidata property will be the same type as the first -- qualifiers don't have a mainsnak, properties do local datatype = objproperty[1].datatype or objproperty[1].mainsnak.datatype -- out[] holds the a list of returned values for this property -- mlt[] holds the language code if the datatype is monolingual text local out = {} local mlt = {} for k, v in ipairs(objproperty) do local hasvalue = true if (onlysrc and not sourced(v)) then -- no value: it isn't sourced when onlysourced=true hasvalue = false else local val, lcode = rendersnak(v, args, linked, lprefix, lpostfix, prefix, postfix, uabbr) if not val then hasvalue = false -- rank doesn't match elseif qualsonly and qualID then -- suppress value returned: only qualifiers are requested else out[#out+1], mlt[#out+1] = val, lcode end end -- See if qualifiers are to be returned: local snak = v.mainsnak or v if hasvalue and v.qualifiers and qualID ~= "" and snak.snaktype~="novalue" then -- collect all wanted qualifier values returned in qlist, indexed by propertyID local qlist = {} local timestart, timeend = "", "" -- loop through qualifiers for k1, v1 in pairs(v.qualifiers) do if allflag or qwanted[k1] then if k1 == "P1326" then local ts = v1[1].datavalue.value.time local dp = v1[1].datavalue.value.precision qlist[k1] = dateFormat(ts, dp, args.qdf, args.bc, pd, "", lang, "before") elseif k1 == "P1319" then local ts = v1[1].datavalue.value.time local dp = v1[1].datavalue.value.precision qlist[k1] = dateFormat(ts, dp, args.qdf, args.bc, pd, "", lang, "after") elseif k1 == "P580" then timestart = propertyvalueandquals(v1, qargs)[1] or "" -- treat only one start time as valid elseif k1 == "P582" then timeend = propertyvalueandquals(v1, qargs)[1] or "" -- treat only one end time as valid else local q = assembleoutput(propertyvalueandquals(v1, qargs), qargs) -- we already deal with circa via 'sourcing circumstances' if the datatype was time -- circa may be either linked or unlinked *** internationalise later *** if datatype ~= "time" or q ~= "circa" and not (type(q) == "string" and q:find("circa]]")) then qlist[k1] = q end end end -- of test for wanted end -- of loop through qualifiers -- set date separator local t = timestart .. timeend -- *** internationalise date separators later *** local dsep = "&ndash;" if t:find("%s") or t:find("&nbsp;") then dsep = " &ndash; " end -- set the order for the list of qualifiers returned; start time and end time go last if next(qlist) then local qlistout = {} if allflag then for k2, v2 in pairs(qlist) do qlistout[#qlistout+1] = v2 end else for i2, v2 in ipairs(qorder) do qlistout[#qlistout+1] = qlist[v2] end end if t ~= "" then qlistout[#qlistout+1] = timestart .. dsep .. timeend end local qstr = assembleoutput(qlistout, qargs) if qualsonly then out[#out+1] = qstr else out[#out] = out[#out] .. " (" .. qstr .. ")" end elseif t ~= "" then if qualsonly then if timestart == "" then out[#out+1] = timeend elseif timeend == "" then out[#out+1] = timestart else out[#out+1] = timestart .. dsep .. timeend end else out[#out] = out[#out] .. " (" .. timestart .. dsep .. timeend .. ")" end end end -- of test for qualifiers wanted if maxvals > 0 and #out >= maxvals then break end end -- of for each value loop -- we need to pick one value to return if the datatype was "monolingualtext" -- if there's only one value, use that -- otherwise look through the fallback languages for a match if datatype == "monolingualtext" and #out >1 then lang = mw.text.split( lang, '-', true )[1] local fbtbl = mw.language.getFallbacksFor( lang ) table.insert( fbtbl, 1, lang ) local bestval = "" local found = false for idx1, lang1 in ipairs(fbtbl) do for idx2, lang2 in ipairs(mlt) do if (lang1 == lang2) and not found then bestval = out[idx2] found = true break end end -- loop through values of property end -- loop through fallback languages if found then -- replace output table with a table containing the best value out = { bestval } else -- more than one value and none of them on the list of fallback languages -- sod it, just give them the first one out = { out[1] } end end return out end ------------------------------------------------------------------------------- -- Common code for p.getValueByQual and p.getValueByLang ------------------------------------------------------------------------------- -- Dependencies: parseParam; setRanks; parseInput; sourced; assembleoutput; ------------------------------------------------------------------------------- local _getvaluebyqual = function(frame, qualID, checkvalue) -- The property ID that will have a qualifier is the first unnamed parameter local propertyID = mw.text.trim(frame.args[1] or "") if propertyID == "" then return "no property supplied" end if qualID == "" then return "no qualifier supplied" end -- onlysourced is a boolean passed to return property values -- only when property values are sourced to something other than Wikipedia -- if nothing or an empty string is passed set it true -- if "false" or "no" or 0 is passed set it false local onlysrc = parseParam(frame.args.onlysourced or frame.args.osd, true) -- set the requested ranks flags frame.args.reqranks = setRanks(frame.args.rank) -- set a language object and code in the frame.args table frame.args.langobj = findLang(frame.args.lang) frame.args.lang = frame.args.langobj.code local args = frame.args -- check for locally supplied parameter in second unnamed parameter -- success means no local parameter and the property exists local qid, props = parseInput(frame, args[2], propertyID) local linked = parseParam(args.linked, true) local lpre = (args.linkprefix or args.lp or ""):gsub('"', '') local lpost = (args.linkpostfix or ""):gsub('"', '') local pre = (args.prefix or ""):gsub('"', '') local post = (args.postfix or ""):gsub('"', '') local uabbr = parseParam(args.unitabbr or args.uabbr, false) local filter = (args.unit or ""):upper() local maxvals = tonumber(args.maxvals) or 0 if filter == "" then filter = nil end if qid then local out = {} -- Scan through the values of the property -- we want something like property is "pronunciation audio (P443)" in propertyID -- with a qualifier like "language of work or name (P407)" in qualID -- whose value has the required ID, like "British English (Q7979)", in qval for k1, v1 in ipairs(props) do if v1.mainsnak.snaktype == "value" then -- check if it has the right qualifier local v1q = v1.qualifiers if v1q and v1q[qualID] then if onlysrc == false or sourced(v1) then -- if we've got this far, we have a (sourced) claim with qualifiers -- so see if matches the required value -- We'll only deal with wikibase-items and strings for now if v1q[qualID][1].datatype == "wikibase-item" then if checkvalue(v1q[qualID][1].datavalue.value.id) then out[#out + 1] = rendersnak(v1, args, linked, lpre, lpost, pre, post, uabbr, filter) end elseif v1q[qualID][1].datatype == "string" then if checkvalue(v1q[qualID][1].datavalue.value) then out[#out + 1] = rendersnak(v1, args, linked, lpre, lpost, pre, post, uabbr, filter) end end end -- of check for sourced end -- of check for matching required value and has qualifiers else return nil end -- of check for string if maxvals > 0 and #out >= maxvals then break end end -- of loop through values of propertyID return assembleoutput(out, frame.args, qid, propertyID) else return props -- either local parameter or nothing end -- of test for success return nil end ------------------------------------------------------------------------------- -- _location takes Q-id and follows P276 (location) -- or P131 (located in the administrative territorial entity) or P706 (located on terrain feature) -- from the initial item to higher level territories/locations until it reaches the highest. -- An optional boolean, 'first', determines whether the first item is returned (default: false). -- An optional boolean 'skip' toggles the display to skip to the last item (default: false). -- It returns a table containing the locations - linked where possible, except for the highest. ------------------------------------------------------------------------------- -- Dependencies: findLang(); labelOrId(); linkedItem ------------------------------------------------------------------------------- local _location = function(qid, first, skip) first = parseParam(first, false) skip = parseParam(skip, false) local locs = {"P276", "P131", "P706"} local out = {} local langcode = findLang():getCode() local finished = false local count = 0 local prevqid = "Q0" repeat local prop for i1, v1 in ipairs(locs) do local proptbl = mw.wikibase.getBestStatements(qid, v1) if #proptbl > 1 then -- there is more than one higher location local prevP131, prevP131id if prevqid ~= "Q0" then prevP131 = mw.wikibase.getBestStatements(prevqid, "P131")[1] prevP131id = prevP131 and prevP131.mainsnak.datavalue and prevP131.mainsnak.datavalue.value.id end for i2, v2 in ipairs(proptbl) do local parttbl = v2.qualifiers and v2.qualifiers.P518 if parttbl then -- this higher location has qualifier 'applies to part' (P518) for i3, v3 in ipairs(parttbl) do if v3.snaktype == "value" and v3.datavalue.value.id == prevqid then -- it has a value equal to the previous location prop = proptbl[i2] break end -- of test for matching last location end -- of loop through values of 'applies to part' else -- there's no qualifier 'applies to part' (P518) -- so check if the previous location had a P131 that matches this alternate if qid == prevP131id then prop = proptbl[i2] break end -- of test for matching previous P131 end end -- of loop through parent locations -- fallback to second value if match not found prop = prop or proptbl[2] elseif #proptbl > 0 then prop = proptbl[1] end if prop then break end end -- check if it's an instance of (P31) a country (Q6256) or sovereign state (Q3624078) -- and terminate the chain if it is local inst = mw.wikibase.getAllStatements(qid, "P31") if #inst > 0 then for k, v in ipairs(inst) do local instid = v.mainsnak.datavalue and v.mainsnak.datavalue.value.id -- stop if it's a country (or a country within the United Kingdom if skip is true) if instid == "Q6256" or instid == "Q3624078" or (skip and instid == "Q3336843") then prop = nil -- this will ensure this is treated as top-level location break end end end -- get the name of this location and update qid to point to the parent location if prop and prop.mainsnak.datavalue then if not skip or count == 0 then local args = { lprefix = ":" } out[#out+1] = linkedItem(qid, args) -- get a linked value if we can end qid, prevqid = prop.mainsnak.datavalue.value.id, qid else -- This is top-level location, so get short name except when this is the first item -- Use full label if there's no short name or this is the first item local prop1813 = mw.wikibase.getAllStatements(qid, "P1813") -- if there's a short name and this isn't the only item if prop1813[1] and (#out > 0)then local shortname -- short name is monolingual text, so look for match to the local language -- choose the shortest 'short name' in that language for k, v in pairs(prop1813) do if v.mainsnak.datavalue.value.language == langcode then local name = v.mainsnak.datavalue.value.text if (not shortname) or (#name < #shortname) then shortname = name end end end -- add the shortname if one is found, fallback to the label -- but skip it if it's "USA" if shortname ~= "USA" then out[#out+1] = shortname or labelOrId(qid) else if skip then out[#out+1] = "US" end end else -- no shortname, so just add the label local loc = labelOrId(qid) -- exceptions go here: if loc == "United States of America" then out[#out+1] = "United States" else out[#out+1] = loc end end finished = true end count = count + 1 until finished or count >= 10 -- limit to 10 levels to avoid infinite loops -- remove the first location if not required if not first then table.remove(out, 1) end -- we might have duplicate text for consecutive locations, so remove them if #out > 2 then local plain = {} for i, v in ipairs(out) do -- strip any links plain[i] = v:gsub("^%[%[[^|]*|", ""):gsub("]]$", "") end local idx = 2 repeat if plain[idx] == plain[idx-1] then -- duplicate found local removeidx = 0 if (plain[idx] ~= out[idx]) and (plain[idx-1] == out[idx-1]) then -- only second one is linked, so drop the first removeidx = idx - 1 elseif (plain[idx] == out[idx]) and (plain[idx-1] ~= out[idx-1]) then -- only first one is linked, so drop the second removeidx = idx else -- pick one removeidx = idx - (os.time()%2) end table.remove(out, removeidx) table.remove(plain, removeidx) else idx = idx +1 end until idx >= #out end return out end ------------------------------------------------------------------------------- -- _getsumofparts scans the property 'has part' (P527) for values matching a list. -- The list (args.vlist) consists of a string of Qids separated by spaces or any usual punctuation. -- If the matched values have a qualifer 'quantity' (P1114), those quantites are summed. -- The sum is returned as a number (i.e. 0 if none) -- a table of arguments is supplied implementing the usual parameters. ------------------------------------------------------------------------------- -- Dependencies: setRanks; parseParam; parseInput; sourced; assembleoutput; ------------------------------------------------------------------------------- local _getsumofparts = function(args) local vallist = (args.vlist or ""):upper() if vallist == "" then return end args.reqranks = setRanks(args.rank) local f = {} f.args = args local qid, props = parseInput(f, "", "P527") if not qid then return 0 end local onlysrc = parseParam(args.onlysourced or args.osd, true) local sum = 0 for k1, v1 in ipairs(props) do if (onlysrc == false or sourced(v1)) and v1.mainsnak.snaktype == "value" and v1.mainsnak.datavalue.type == "wikibase-entityid" and vallist:match( v1.mainsnak.datavalue.value.id ) and v1.qualifiers then local quals = v1.qualifiers["P1114"] if quals then for k2, v2 in ipairs(quals) do sum = sum + v2.datavalue.value.amount end end end end return sum end ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- Public functions ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- _getValue makes the functionality of getValue available to other modules ------------------------------------------------------------------------------- -- Dependencies: setRanks; parseInput; propertyvalueandquals; assembleoutput; parseParam; sourced; -- labelOrId; i18n.latestdatequalifier; format_Date; makeOrdinal; roundto; decimalPrecision; decimalToDMS; ------------------------------------------------------------------------------- p._getValue = function(args) -- parameter sets for commonly used groups of parameters local paraset = tonumber(args.ps or args.parameterset or 0) if paraset == 1 then -- a common setting args.rank = "best" args.fetchwikidata = "ALL" args.onlysourced = "no" args.noicon = "true" elseif paraset == 2 then -- equivalent to raw args.rank = "best" args.fetchwikidata = "ALL" args.onlysourced = "no" args.noicon = "true" args.linked = "no" args.pd = "true" elseif paraset == 3 then -- third set goes here end -- implement eid parameter local eid = args.eid if eid == "" then return nil elseif eid then args.qid = eid end local propertyID = mw.text.trim(args[1] or "") args.reqranks = setRanks(args.rank) -- replacetext (rt) is a string that is returned instead of any non-empty Wikidata value -- this is useful for tracking and debugging, so we set fetchwikidata=ALL to fill the whitelist local replacetext = mw.text.trim(args.rt or args.replacetext or "") if replacetext ~= "" then args.fetchwikidata = "ALL" end local f = {} f.args = args local entityid, props = parseInput(f, f.args[2], propertyID) if not entityid then return props -- either the input parameter or nothing end -- qual is a string containing the property ID of the qualifier(s) to be returned -- if qual == "ALL" then all qualifiers returned -- if qual == "DATES" then qualifiers P580 (start time) and P582 (end time) returned -- if nothing or an empty string is passed set it nil -> no qualifiers returned local qualID = mw.text.trim(args.qual or ""):upper() if qualID == "" then qualID = nil end -- set a language object and code in the args table args.langobj = findLang(args.lang) args.lang = args.langobj.code -- table 'out' stores the return value(s): local out = propertyvalueandquals(props, args, qualID) -- format the table of values and return it as a string: return assembleoutput(out, args, entityid, propertyID) end ------------------------------------------------------------------------------- -- getValue is used to get the value(s) of a property -- The property ID is passed as the first unnamed parameter and is required. -- A locally supplied parameter may optionaly be supplied as the second unnamed parameter. -- The function will now also return qualifiers if parameter qual is supplied ------------------------------------------------------------------------------- -- Dependencies: _getValue; setRanks; parseInput; propertyvalueandquals; assembleoutput; parseParam; sourced; -- labelOrId; i18n.latestdatequalifier; format_Date; makeOrdinal; roundto; decimalPrecision; decimalToDMS; ------------------------------------------------------------------------------- p.getValue = function(frame) local args= frame.args if not args[1] then args = frame:getParent().args if not args[1] then return i18n.errors["No property supplied"] end end return p._getValue(args) end ------------------------------------------------------------------------------- -- getPreferredValue is used to get a value, -- (or a comma separated list of them if multiple values exist). -- If preferred ranks are set, it will return those values, otherwise values with normal ranks -- now redundant to getValue with |rank=best ------------------------------------------------------------------------------- -- Dependencies: p.getValue; setRanks; parseInput; propertyvalueandquals; assembleoutput; -- parseParam; sourced; labelOrId; i18n.latestdatequalifier; format_Date; -- makeOrdinal; roundto; decimalPrecision; decimalToDMS; ------------------------------------------------------------------------------- p.getPreferredValue = function(frame) frame.args.rank = "best" return p.getValue(frame) end ------------------------------------------------------------------------------- -- getCoords is used to get coordinates for display in an infobox -- whitelist and blacklist are implemented -- optional 'display' parameter is allowed, defaults to nil - was "inline, title" ------------------------------------------------------------------------------- -- Dependencies: setRanks(); parseInput(); decimalPrecision(); ------------------------------------------------------------------------------- p.getCoords = function(frame) local propertyID = "P625" -- if there is a 'display' parameter supplied, use it -- otherwise default to nothing local disp = frame.args.display or "" if disp == "" then disp = nil -- default to not supplying display parameter, was "inline, title" end -- there may be a format parameter to switch from deg/min/sec to decimal degrees -- default is deg/min/sec -- decimal degrees needs |format = dec local form = (frame.args.format or ""):lower():sub(1,3) if form ~= "dec" then form = "dms" end -- just deal with best values frame.args.reqranks = setRanks("best") local qid, props = parseInput(frame, frame.args[1], propertyID) if not qid then return props -- either local parameter or nothing else local dv = props[1].mainsnak.datavalue.value local lat, long, prec = dv.latitude, dv.longitude, dv.precision lat = decimalPrecision(lat, prec) long = decimalPrecision(long, prec) local lat_long = { lat, long } lat_long["display"] = disp lat_long["format"] = form -- invoke template Coord with the values stored in the table return frame:expandTemplate{title = 'coord', args = lat_long} end end ------------------------------------------------------------------------------- -- getQualifierValue is used to get a formatted value of a qualifier -- -- The call needs: a property (the unnamed parameter or 1=) -- a target value for that property (pval=) -- a qualifier for that target value (qual=) -- The usual whitelisting and blacklisting of the property is implemented -- The boolean onlysourced= parameter can be set to return nothing -- when the property is unsourced (or only sourced to Wikipedia) ------------------------------------------------------------------------------- -- Dependencies: parseParam(); setRanks(); parseInput(); sourced(); -- propertyvalueandquals(); assembleoutput(); -- labelOrId(); i18n.latestdatequalifier(); format_Date(); -- findLang(); makeOrdinal(); roundto(); decimalPrecision(); decimalToDMS(); ------------------------------------------------------------------------------- p.getQualifierValue = function(frame) -- The property ID that will have a qualifier is the first unnamed parameter local propertyID = mw.text.trim(frame.args[1] or "") -- The value of the property we want to match whose qualifier value is to be returned -- is passed in named parameter |pval= local propvalue = frame.args.pval -- The property ID of the qualifier -- whose value is to be returned is passed in named parameter |qual= local qualifierID = frame.args.qual -- A filter can be set like this: filter=P642==Q22674854 local filter, fprop, fval local ftable = mw.text.split(frame.args.filter or "", "==") if ftable[2] then fprop = mw.text.trim(ftable[1]) fval = mw.text.trim(ftable[2]) filter = true end -- onlysourced is a boolean passed to return qualifiers -- only when property values are sourced to something other than Wikipedia -- if nothing or an empty string is passed set it true -- if "false" or "no" or 0 is passed set it false local onlysrc = parseParam(frame.args.onlysourced or frame.args.osd, true) -- set a language object and language code in the frame.args table frame.args.langobj = findLang(frame.args.lang) frame.args.lang = frame.args.langobj.code -- set the requested ranks flags frame.args.reqranks = setRanks(frame.args.rank) -- check for locally supplied parameter in second unnamed parameter -- success means no local parameter and the property exists local qid, props = parseInput(frame, frame.args[2], propertyID) if qid then local out = {} -- Scan through the values of the property -- we want something like property is P793, significant event (in propertyID) -- whose value is something like Q385378, construction (in propvalue) -- then we can return the value(s) of a qualifier such as P580, start time (in qualifierID) for k1, v1 in pairs(props) do if v1.mainsnak.snaktype == "value" and v1.mainsnak.datavalue.type == "wikibase-entityid" then -- It's a wiki-linked value, so check if it's the target (in propvalue) and if it has qualifiers if v1.mainsnak.datavalue.value.id == propvalue and v1.qualifiers then if onlysrc == false or sourced(v1) then -- if we've got this far, we have a (sourced) claim with qualifiers -- which matches the target, so apply the filter and find the value(s) of the qualifier we want if not filter or (v1.qualifiers[fprop] and v1.qualifiers[fprop][1].datavalue.value.id == fval) then local quals = v1.qualifiers[qualifierID] if quals then -- can't reference qualifer, so set onlysourced = "no" (args are strings, not boolean) local qargs = frame.args qargs.onlysourced = "no" local vals = propertyvalueandquals(quals, qargs, qid) for k, v in ipairs(vals) do out[#out + 1] = v end end end end -- of check for sourced end -- of check for matching required value and has qualifiers end -- of check for wikibase entity end -- of loop through values of propertyID return assembleoutput(out, frame.args, qid, propertyID) else return props -- either local parameter or nothing end -- of test for success return nil end ------------------------------------------------------------------------------- -- getSumOfParts scans the property 'has part' (P527) for values matching a list. -- The list is passed in parameter vlist. -- It consists of a string of Qids separated by spaces or any usual punctuation. -- If the matched values have a qualifier 'quantity' (P1114), those quantities are summed. -- The sum is returned as a number or nothing if zero. ------------------------------------------------------------------------------- -- Dependencies: _getsumofparts; ------------------------------------------------------------------------------- p.getSumOfParts = function(frame) local sum = _getsumofparts(frame.args) if sum == 0 then return end return sum end ------------------------------------------------------------------------------- -- getValueByQual gets the value of a property which has a qualifier with a given entity value -- The call needs: -- a property ID (the unnamed parameter or 1=Pxxx) -- the ID of a qualifier for that property (qualID=Pyyy) -- either the Wikibase-entity ID of a value for that qualifier (qvalue=Qzzz) -- or a string value for that qualifier (qvalue=abc123) -- The usual whitelisting, blacklisting, onlysourced, etc. are implemented ------------------------------------------------------------------------------- -- Dependencies: _getvaluebyqual; parseParam; setRanks; parseInput; sourced; -- assembleoutput; ------------------------------------------------------------------------------- p.getValueByQual = function(frame) local qualID = frame.args.qualID -- The Q-id of the value for the qualifier we want to match is in named parameter |qvalue= local qval = frame.args.qvalue or "" if qval == "" then return "no qualifier value supplied" end local function checkQID(id) return id == qval end return _getvaluebyqual(frame, qualID, checkQID) end ------------------------------------------------------------------------------- -- getValueByLang gets the value of a property which has a qualifier P407 -- ("language of work or name") whose value has the given language code -- The call needs: -- a property ID (the unnamed parameter or 1=Pxxx) -- the MediaWiki language code to match the language (lang=xx[-yy]) -- (if no code is supplied, it uses the default language) -- The usual whitelisting, blacklisting, onlysourced, etc. are implemented ------------------------------------------------------------------------------- -- Dependencies: _getvaluebyqual; parseParam; setRanks; parseInput; sourced; assembleoutput; ------------------------------------------------------------------------------- p.getValueByLang = function(frame) -- The language code for the qualifier we want to match is in named parameter |lang= local langcode = findLang(frame.args.lang).code local function checkLanguage(id) -- id should represent a language like "British English (Q7979)" -- it should have string property "Wikimedia language code (P424)" -- qlcode will be a table: local qlcode = mw.wikibase.getBestStatements(id, "P424") if (#qlcode > 0) and (qlcode[1].mainsnak.datavalue.value == langcode) then return true end end return _getvaluebyqual(frame, "P407", checkLanguage) end ------------------------------------------------------------------------------- -- getValueByRefSource gets the value of a property which has a reference "stated in" (P248) -- whose value has the given entity-ID. -- The call needs: -- a property ID (the unnamed parameter or 1=Pxxx) -- the entity ID of a value to match where the reference is stated in (match=Qzzz) -- The usual whitelisting, blacklisting, onlysourced, etc. are implemented ------------------------------------------------------------------------------- -- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput; ------------------------------------------------------------------------------- p.getValueByRefSource = function(frame) -- The property ID that we want to check is the first unnamed parameter local propertyID = mw.text.trim(frame.args[1] or ""):upper() if propertyID == "" then return "no property supplied" end -- The Q-id of the value we want to match is in named parameter |qvalue= local qval = (frame.args.match or ""):upper() if qval == "" then qval = "Q21540096" end local unit = (frame.args.unit or ""):upper() if unit == "" then unit = "Q4917" end local onlysrc = parseParam(frame.args.onlysourced or frame.args.osd, true) -- set the requested ranks flags frame.args.reqranks = setRanks(frame.args.rank) -- set a language object and code in the frame.args table frame.args.langobj = findLang(frame.args.lang) frame.args.lang = frame.args.langobj.code local linked = parseParam(frame.args.linked, true) local uabbr = parseParam(frame.args.uabbr or frame.args.unitabbr, false) -- qid not nil means no local parameter and the property exists local qid, props = parseInput(frame, frame.args[2], propertyID) if qid then local out = {} local mlt= {} for k1, v1 in ipairs(props) do if onlysrc == false or sourced(v1) then if v1.references then for k2, v2 in ipairs(v1.references) do if v2.snaks.P248 then for k3, v3 in ipairs(v2.snaks.P248) do if v3.datavalue.value.id == qval then out[#out+1], mlt[#out+1] = rendersnak(v1, frame.args, linked, "", "", "", "", uabbr, unit) if not mlt[#out] then -- we only need one match per property value -- unless datatype was monolingual text break end end -- of test for match end -- of loop through values "stated in" end -- of test that "stated in" exists end -- of loop through references end -- of test that references exist end -- of test for sourced end -- of loop through values of propertyID if #mlt > 0 then local langcode = frame.args.lang langcode = mw.text.split( langcode, '-', true )[1] local fbtbl = mw.language.getFallbacksFor( langcode ) table.insert( fbtbl, 1, langcode ) local bestval = "" local found = false for idx1, lang1 in ipairs(fbtbl) do for idx2, lang2 in ipairs(mlt) do if (lang1 == lang2) and not found then bestval = out[idx2] found = true break end end -- loop through values of property end -- loop through fallback languages if found then -- replace output table with a table containing the best value out = { bestval } else -- more than one value and none of them on the list of fallback languages -- sod it, just give them the first one out = { out[1] } end end return assembleoutput(out, frame.args, qid, propertyID) else return props -- no property or local parameter supplied end -- of test for success end ------------------------------------------------------------------------------- -- getPropertyIDs takes most of the usual parameters. -- The usual whitelisting, blacklisting, onlysourced, etc. are implemented. -- It returns the Entity-IDs (Qids) of the values of a property if it is a Wikibase-Entity. -- Otherwise it returns nothing. ------------------------------------------------------------------------------- -- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput; ------------------------------------------------------------------------------- p._getPropertyIDs = function(args) args.reqranks = setRanks(args.rank) args.langobj = findLang(args.lang) args.lang = args.langobj.code -- change default for noicon to true args.noicon = tostring(parseParam(args.noicon or "", true)) local f = {} f.args = args local pid = mw.text.trim(args[1] or ""):upper() -- get the qid and table of claims for the property, or nothing and the local value passed local qid, props = parseInput(f, args[2], pid) if not qid then return props end if not props[1] then return nil end local onlysrc = parseParam(args.onlysourced or args.osd, true) local maxvals = tonumber(args.maxvals) or 0 local out = {} for i, v in ipairs(props) do local snak = v.mainsnak if ( snak.datatype == "wikibase-item" ) and ( v.rank and args.reqranks[v.rank:sub(1, 1)] ) and ( snak.snaktype == "value" ) and ( sourced(v) or not onlysrc ) then out[#out+1] = snak.datavalue.value.id end if maxvals > 0 and #out >= maxvals then break end end return assembleoutput(out, args, qid, pid) end p.getPropertyIDs = function(frame) local args = frame.args return p._getPropertyIDs(args) end ------------------------------------------------------------------------------- -- getQualifierIDs takes most of the usual parameters. -- The usual whitelisting, blacklisting, onlysourced, etc. are implemented. -- It takes a property-id as the first unnamed parameter, and an optional parameter qlist -- which is a list of qualifier property-ids to search for (default is "ALL") -- It returns the Entity-IDs (Qids) of the values of a property if it is a Wikibase-Entity. -- Otherwise it returns nothing. ------------------------------------------------------------------------------- -- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput; ------------------------------------------------------------------------------- p.getQualifierIDs = function(frame) local args = frame.args args.reqranks = setRanks(args.rank) args.langobj = findLang(args.lang) args.lang = args.langobj.code -- change default for noicon to true args.noicon = tostring(parseParam(args.noicon or "", true)) local f = {} f.args = args local pid = mw.text.trim(args[1] or ""):upper() -- get the qid and table of claims for the property, or nothing and the local value passed local qid, props = parseInput(f, args[2], pid) if not qid then return props end if not props[1] then return nil end -- get the other parameters local onlysrc = parseParam(args.onlysourced or args.osd, true) local maxvals = tonumber(args.maxvals) or 0 local qlist = args.qlist or "" if qlist == "" then qlist = "ALL" end qlist = qlist:gsub("[%p%s]+", " ") .. " " local out = {} for i, v in ipairs(props) do local snak = v.mainsnak if ( v.rank and args.reqranks[v.rank:sub(1, 1)] ) and ( snak.snaktype == "value" ) and ( sourced(v) or not onlysrc ) then if v.qualifiers then for k1, v1 in pairs(v.qualifiers) do if qlist == "ALL " or qlist:match(k1 .. " ") then for i2, v2 in ipairs(v1) do if v2.datatype == "wikibase-item" and v2.snaktype == "value" then out[#out+1] = v2.datavalue.value.id end -- of test that id exists end -- of loop through qualifier values end -- of test for kq in qlist end -- of loop through qualifiers end -- of test for qualifiers end -- of test for rank value, sourced, and value exists if maxvals > 0 and #out >= maxvals then break end end -- of loop through property values return assembleoutput(out, args, qid, pid) end ------------------------------------------------------------------------------- -- getPropOfProp takes two propertyIDs: prop1 and prop2 (as well as the usual parameters) -- If the value(s) of prop1 are of type "wikibase-item" then it returns the value(s) of prop2 -- of each of those wikibase-items. -- The usual whitelisting, blacklisting, onlysourced, etc. are implemented ------------------------------------------------------------------------------- -- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput; ------------------------------------------------------------------------------- p._getPropOfProp = function(args) -- parameter sets for commonly used groups of parameters local paraset = tonumber(args.ps or args.parameterset or 0) if paraset == 1 then -- a common setting args.rank = "best" args.fetchwikidata = "ALL" args.onlysourced = "no" args.noicon = "true" elseif paraset == 2 then -- equivalent to raw args.rank = "best" args.fetchwikidata = "ALL" args.onlysourced = "no" args.noicon = "true" args.linked = "no" args.pd = "true" elseif paraset == 3 then -- third set goes here end args.reqranks = setRanks(args.rank) args.langobj = findLang(args.lang) args.lang = args.langobj.code local pid1 = args.prop1 or args.pid1 or "" local pid2 = args.prop2 or args.pid2 or "" if pid1 == "" or pid2 == "" then return nil end local f = {} f.args = args local qid1, statements1 = parseInput(f, args[1], pid1) -- parseInput nulls empty args[1] and returns args[1] if nothing on Wikidata if not qid1 then return statements1 end -- otherwise it returns the qid and a table for the statement local onlysrc = parseParam(args.onlysourced or args.osd, true) local maxvals = tonumber(args.maxvals) or 0 local qualID = mw.text.trim(args.qual or ""):upper() if qualID == "" then qualID = nil end local out = {} for k, v in ipairs(statements1) do if not onlysrc or sourced(v) then local snak = v.mainsnak if snak.datatype == "wikibase-item" and snak.snaktype == "value" then local qid2 = snak.datavalue.value.id local statements2 = {} if args.reqranks.b then statements2 = mw.wikibase.getBestStatements(qid2, pid2) else statements2 = mw.wikibase.getAllStatements(qid2, pid2) end if statements2[1] then local out2 = propertyvalueandquals(statements2, args, qualID) out[#out+1] = assembleoutput(out2, args, qid2, pid2) end end -- of test for valid property1 value end -- of test for sourced if maxvals > 0 and #out >= maxvals then break end end -- of loop through values of property1 return assembleoutput(out, args, qid1, pid1) end p.getPropOfProp = function(frame) local args= frame.args if not args.prop1 and not args.pid1 then args = frame:getParent().args if not args.prop1 and not args.pid1 then return i18n.errors["No property supplied"] end end return p._getPropOfProp(args) end ------------------------------------------------------------------------------- -- getAwardCat takes most of the usual parameters. If the item has values of P166 (award received), -- then it examines each of those awards for P2517 (category for recipients of this award). -- If it exists, it returns the corresponding category, -- with the item's P734 (family name) as sort key, or no sort key if there is no family name. -- The sort key may be overridden by the parameter |sortkey (alias |sk). -- The usual whitelisting, blacklisting, onlysourced, etc. are implemented ------------------------------------------------------------------------------- -- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput; ------------------------------------------------------------------------------- p.getAwardCat = function(frame) frame.args.reqranks = setRanks(frame.args.rank) frame.args.langobj = findLang(frame.args.lang) frame.args.lang = frame.args.langobj.code local args = frame.args args.sep = " " local pid1 = args.prop1 or "P166" local pid2 = args.prop2 or "P2517" if pid1 == "" or pid2 == "" then return nil end -- locally supplied value: local localval = mw.text.trim(args[1] or "") local qid1, statements1 = parseInput(frame, localval, pid1) if not qid1 then return localval end -- linkprefix (strip quotes) local lp = (args.linkprefix or args.lp or ""):gsub('"', '') -- sort key (strip quotes, hyphens and periods): local sk = (args.sortkey or args.sk or ""):gsub('["-.]', '') -- family name: local famname = "" if sk == "" then local p734 = mw.wikibase.getBestStatements(qid1, "P734")[1] local p734id = p734 and p734.mainsnak.snaktype == "value" and p734.mainsnak.datavalue.value.id or "" famname = mw.wikibase.getSitelink(p734id) or "" -- strip namespace and disambigation local pos = famname:find(":") or 0 famname = famname:sub(pos+1):gsub("%s%(.+%)$", "") if famname == "" then local lbl = mw.wikibase.getLabel(p734id) famname = lbl and mw.text.nowiki(lbl) or "" end end local onlysrc = parseParam(args.onlysourced or args.osd, true) local maxvals = tonumber(args.maxvals) or 0 local qualID = mw.text.trim(args.qual or ""):upper() if qualID == "" then qualID = nil end local out = {} for k, v in ipairs(statements1) do if not onlysrc or sourced(v) then local snak = v.mainsnak if snak.datatype == "wikibase-item" and snak.snaktype == "value" then local qid2 = snak.datavalue.value.id local statements2 = {} if args.reqranks.b then statements2 = mw.wikibase.getBestStatements(qid2, pid2) else statements2 = mw.wikibase.getAllStatements(qid2, pid2) end if statements2[1] and statements2[1].mainsnak.snaktype == "value" then local qid3 = statements2[1].mainsnak.datavalue.value.id local sitelink = mw.wikibase.getSitelink(qid3) -- if there's no local sitelink, create the sitelink from English label if not sitelink then local lbl = mw.wikibase.getLabelByLang(qid3, "en") if lbl then if lbl:sub(1,9) == "Category:" then sitelink = mw.text.nowiki(lbl) else sitelink = "Category:" .. mw.text.nowiki(lbl) end end end if sitelink then if sk ~= "" then out[#out+1] = "[[" .. lp .. sitelink .. "|" .. sk .. "]]" elseif famname ~= "" then out[#out+1] = "[[" .. lp .. sitelink .. "|" .. famname .. "]]" else out[#out+1] = "[[" .. lp .. sitelink .. "]]" end -- of check for sort keys end -- of test for sitelink end -- of test for category end -- of test for wikibase item has a value end -- of test for sourced if maxvals > 0 and #out >= maxvals then break end end -- of loop through values of property1 return assembleoutput(out, args, qid1, pid1) end ------------------------------------------------------------------------------- -- getIntersectCat takes most of the usual parameters. -- The usual whitelisting, blacklisting, onlysourced, etc. are implemented -- It takes two properties, |prop1 and |prop2 (e.g. occupation and country of citizenship) -- Each property's value is a wiki-base entity -- For each value of the first parameter (ranks implemented) it fetches the value's main category -- and then each value of the second parameter (possibly substituting a simpler description) -- then it returns all of the categories representing the intersection of those properties, -- (e.g. Category:Actors from Canada). A joining term may be supplied (e.g. |join=from). -- The item's P734 (family name) is the sort key, or no sort key if there is no family name. -- The sort key may be overridden by the parameter |sortkey (alias |sk). ------------------------------------------------------------------------------- -- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput; ------------------------------------------------------------------------------- p.getIntersectCat = function(frame) frame.args.reqranks = setRanks(frame.args.rank) frame.args.langobj = findLang(frame.args.lang) frame.args.lang = frame.args.langobj.code local args = frame.args args.sep = " " args.linked = "no" local pid1 = args.prop1 or "P106" local pid2 = args.prop2 or "P27" if pid1 == "" or pid2 == "" then return nil end local qid, statements1 = parseInput(frame, "", pid1) if not qid then return nil end local qid, statements2 = parseInput(frame, "", pid2) if not qid then return nil end -- topics like countries may have different names in categories from their label in Wikidata local subs_exists, subs = pcall(mw.loadData, "Module:WikidataIB/subs") local join = args.join or "" local onlysrc = parseParam(args.onlysourced or args.osd, true) local maxvals = tonumber(args.maxvals) or 0 -- linkprefix (strip quotes) local lp = (args.linkprefix or args.lp or ""):gsub('"', '') -- sort key (strip quotes, hyphens and periods): local sk = (args.sortkey or args.sk or ""):gsub('["-.]', '') -- family name: local famname = "" if sk == "" then local p734 = mw.wikibase.getBestStatements(qid, "P734")[1] local p734id = p734 and p734.mainsnak.snaktype == "value" and p734.mainsnak.datavalue.value.id or "" famname = mw.wikibase.getSitelink(p734id) or "" -- strip namespace and disambigation local pos = famname:find(":") or 0 famname = famname:sub(pos+1):gsub("%s%(.+%)$", "") if famname == "" then local lbl = mw.wikibase.getLabel(p734id) famname = lbl and mw.text.nowiki(lbl) or "" end end local cat1 = {} for k, v in ipairs(statements1) do if not onlysrc or sourced(v) then -- get the ID representing the value of the property local pvalID = (v.mainsnak.snaktype == "value") and v.mainsnak.datavalue.value.id if pvalID then -- get the topic's main category (P910) for that entity local p910 = mw.wikibase.getBestStatements(pvalID, "P910")[1] if p910 and p910.mainsnak.snaktype == "value" then local tmcID = p910.mainsnak.datavalue.value.id -- use sitelink or the English label for the cat local cat = mw.wikibase.getSitelink(tmcID) if not cat then local lbl = mw.wikibase.getLabelByLang(tmcID, "en") if lbl then if lbl:sub(1,9) == "Category:" then cat = mw.text.nowiki(lbl) else cat = "Category:" .. mw.text.nowiki(lbl) end end end cat1[#cat1+1] = cat end -- of test for topic's main category exists end -- of test for property has vaild value end -- of test for sourced if maxvals > 0 and #cat1 >= maxvals then break end end local cat2 = {} for k, v in ipairs(statements2) do if not onlysrc or sourced(v) then local cat = rendersnak(v, args) if subs[cat] then cat = subs[cat] end cat2[#cat2+1] = cat end if maxvals > 0 and #cat2 >= maxvals then break end end local out = {} for k1, v1 in ipairs(cat1) do for k2, v2 in ipairs(cat2) do if sk ~= "" then out[#out+1] = "[[" .. lp .. v1 .. " " .. join .. " " .. v2 .. "|" .. sk .. "]]" elseif famname ~= "" then out[#out+1] = "[[" .. lp .. v1 .. " " .. join .. " " .. v2 .. "|" .. famname .. "]]" else out[#out+1] = "[[" .. lp .. v1 .. " " .. join .. " " .. v2 .. "]]" end -- of check for sort keys end end args.noicon = "true" return assembleoutput(out, args, qid, pid1) end ------------------------------------------------------------------------------- -- qualsToTable takes most of the usual parameters. -- The usual whitelisting, blacklisting, onlysourced, etc. are implemented. -- A qid may be given, and the first unnamed parameter is the property ID, which is of type wikibase item. -- It takes a list of qualifier property IDs as |quals= -- For a given qid and property, it creates the rows of an html table, -- each row being a value of the property (optionally only if the property matches the value in |pval= ) -- each cell being the first value of the qualifier corresponding to the list in |quals ------------------------------------------------------------------------------- -- Dependencies: parseParam; setRanks; parseInput; sourced; ------------------------------------------------------------------------------- p.qualsToTable = function(frame) local args = frame.args local quals = args.quals or "" if quals == "" then return "" end args.reqranks = setRanks(args.rank) local propertyID = mw.text.trim(args[1] or "") local f = {} f.args = args local entityid, props = parseInput(f, "", propertyID) if not entityid then return "" end args.langobj = findLang(args.lang) args.lang = args.langobj.code local pval = args.pval or "" local qplist = mw.text.split(quals, "%p") -- split at punctuation and make a sequential table for i, v in ipairs(qplist) do qplist[i] = mw.text.trim(v):upper() -- remove whitespace and capitalise end local col1 = args.firstcol or "" if col1 ~= "" then col1 = col1 .. "</td><td>" end local emptycell = args.emptycell or "&nbsp;" -- construct a 2-D array of qualifier values in qvals local qvals = {} for i, v in ipairs(props) do local skip = false if pval ~= "" then local pid = v.mainsnak.datavalue and v.mainsnak.datavalue.value.id if pid ~= pval then skip = true end end if not skip then local qval = {} local vqualifiers = v.qualifiers or {} -- go through list of wanted qualifier properties for i1, v1 in ipairs(qplist) do -- check for that property ID in the statement's qualifiers local qv, qtype if vqualifiers[v1] then qtype = vqualifiers[v1][1].datatype if qtype == "time" then if vqualifiers[v1][1].snaktype == "value" then qv = mw.wikibase.renderSnak(vqualifiers[v1][1]) qv = frame:expandTemplate{title="dts", args={qv}} else qv = "?" end elseif qtype == "url" then if vqualifiers[v1][1].snaktype == "value" then qv = mw.wikibase.renderSnak(vqualifiers[v1][1]) local display = mw.ustring.match( mw.uri.decode(qv, "WIKI"), "([%w ]+)$" ) if display then qv = "[" .. qv .. " " .. display .. "]" end end else qv = mw.wikibase.formatValue(vqualifiers[v1][1]) end end -- record either the value or a placeholder qval[i1] = qv or emptycell end -- of loop through list of qualifiers -- add the list of qualifier values as a "row" in the main list qvals[#qvals+1] = qval end end -- of for each value loop local out = {} for i, v in ipairs(qvals) do out[i] = "<tr><td>" .. col1 .. table.concat(qvals[i], "</td><td>") .. "</td></tr>" end return table.concat(out, "\n") end ------------------------------------------------------------------------------- -- getGlobe takes an optional qid of a Wikidata entity passed as |qid= -- otherwise it uses the linked item for the current page. -- If returns the Qid of the globe used in P625 (coordinate location), -- or nil if there isn't one. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.getGlobe = function(frame) local qid = frame.args.qid or frame.args[1] or "" if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end local coords = mw.wikibase.getBestStatements(qid, "P625")[1] local globeid if coords and coords.mainsnak.snaktype == "value" then globeid = coords.mainsnak.datavalue.value.globe:match("(Q%d+)") end return globeid end ------------------------------------------------------------------------------- -- getCommonsLink takes an optional qid of a Wikidata entity passed as |qid= -- It returns one of the following in order of preference: -- the Commons sitelink of the linked Wikidata item; -- the Commons sitelink of the topic's main category of the linked Wikidata item; ------------------------------------------------------------------------------- -- Dependencies: _getCommonslink(); _getSitelink(); parseParam() ------------------------------------------------------------------------------- p.getCommonsLink = function(frame) local oc = frame.args.onlycat or frame.args.onlycategories local fb = parseParam(frame.args.fallback or frame.args.fb, true) return _getCommonslink(frame.args.qid, oc, fb) end ------------------------------------------------------------------------------- -- getSitelink takes the qid of a Wikidata entity passed as |qid= -- It takes an optional parameter |wiki= to determine which wiki is to be checked for a sitelink -- If the parameter is blank, then it uses the local wiki. -- If there is a sitelink to an article available, it returns the plain text link to the article -- If there is no sitelink, it returns nil. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.getSiteLink = function(frame) return _getSitelink(frame.args.qid, frame.args.wiki or mw.text.trim(frame.args[1] or "")) end ------------------------------------------------------------------------------- -- getLink has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid= -- If there is a sitelink to an article on the local Wiki, it returns a link to the article -- with the Wikidata label as the displayed text. -- If there is no sitelink, it returns the label as plain text. -- If there is no label in the local language, it displays the qid instead. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.getLink = function(frame) local itemID = mw.text.trim(frame.args[1] or frame.args.qid or "") if itemID == "" then return end local sitelink = mw.wikibase.getSitelink(itemID) local label = labelOrId(itemID) if sitelink then return "[[:" .. sitelink .. "|" .. label .. "]]" else return label end end ------------------------------------------------------------------------------- -- getLabel has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid= -- It returns the Wikidata label for the local language as plain text. -- If there is no label in the local language, it displays the qid instead. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.getLabel = function(frame) local itemID = mw.text.trim(frame.args[1] or frame.args.qid or "") if itemID == "" then return end local lang = frame.args.lang or "" if lang == "" then lang = nil end local label = labelOrId(itemID, lang) return label end ------------------------------------------------------------------------------- -- label has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid= -- if no qid is supplied, it uses the qid associated with the current page. -- It returns the Wikidata label for the local language as plain text. -- If there is no label in the local language, it returns nil. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.label = function(frame) local qid = mw.text.trim(frame.args[1] or frame.args.qid or "") if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid then return end local lang = frame.args.lang or "" if lang == "" then lang = nil end local label, success = labelOrId(qid, lang) if success then return label end end ------------------------------------------------------------------------------- -- getAT (Article Title) -- has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid= -- If there is a sitelink to an article on the local Wiki, it returns the sitelink as plain text. -- If there is no sitelink or qid supplied, it returns nothing. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.getAT = function(frame) local itemID = mw.text.trim(frame.args[1] or frame.args.qid or "") if itemID == "" then return end return mw.wikibase.getSitelink(itemID) end ------------------------------------------------------------------------------- -- getDescription has the qid of a Wikidata entity passed as |qid= -- (it defaults to the associated qid of the current article if omitted) -- and a local parameter passed as the first unnamed parameter. -- Any local parameter passed (other than "Wikidata" or "none") becomes the return value. -- It returns the article description for the Wikidata entity if the local parameter is "Wikidata". -- Nothing is returned if the description doesn't exist or "none" is passed as the local parameter. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.getDescription = function(frame) local desc = mw.text.trim(frame.args[1] or "") local itemID = mw.text.trim(frame.args.qid or "") if itemID == "" then itemID = nil end if desc:lower() == 'wikidata' then return mw.wikibase.getDescription(itemID) elseif desc:lower() == 'none' then return nil else return desc end end ------------------------------------------------------------------------------- -- getAliases has the qid of a Wikidata entity passed as |qid= -- (it defaults to the associated qid of the current article if omitted) -- and a local parameter passed as the first unnamed parameter. -- It implements blacklisting and whitelisting with a field name of "alias" by default. -- Any local parameter passed becomes the return value. -- Otherwise it returns the aliases for the Wikidata entity with the usual list options. -- Nothing is returned if the aliases do not exist. ------------------------------------------------------------------------------- -- Dependencies: findLang(); assembleoutput() ------------------------------------------------------------------------------- p.getAliases = function(frame) local args = frame.args local fieldname = args.name or "" if fieldname == "" then fieldname = "alias" end local blacklist = args.suppressfields or args.spf or "" if blacklist:find(fieldname) then return nil end local localval = mw.text.trim(args[1] or "") if localval ~= "" then return localval end local whitelist = args.fetchwikidata or args.fwd or "" if whitelist == "" then whitelist = "NONE" end if not (whitelist == 'ALL' or whitelist:find(fieldname)) then return nil end local qid = args.qid or "" if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid or not mw.wikibase.entityExists(qid) then return nil end local aliases = mw.wikibase.getEntity(qid).aliases if not aliases then return nil end args.langobj = findLang(args.lang) local langcode = args.langobj.code args.lang = langcode local out = {} for k1, v1 in pairs(aliases) do if v1[1].language == langcode then for k1, v2 in ipairs(v1) do out[#out+1] = v2.value end break end end return assembleoutput(out, args, qid) end ------------------------------------------------------------------------------- -- pageId returns the page id (entity ID, Qnnn) of the current page -- returns nothing if the page is not connected to Wikidata ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.pageId = function(frame) return mw.wikibase.getEntityIdForCurrentPage() end ------------------------------------------------------------------------------- -- formatDate is a wrapper to export the private function format_Date ------------------------------------------------------------------------------- -- Dependencies: format_Date(); ------------------------------------------------------------------------------- p.formatDate = function(frame) return format_Date(frame.args[1], frame.args.df, frame.args.bc) end ------------------------------------------------------------------------------- -- location is a wrapper to export the private function _location -- it takes the entity-id as qid or the first unnamed parameter -- optional boolean parameter first toggles the display of the first item -- optional boolean parameter skip toggles the display to skip to the last item -- parameter debug=<y/n> (default 'n') adds error msg if not a location ------------------------------------------------------------------------------- -- Dependencies: _location(); ------------------------------------------------------------------------------- p.location = function(frame) local debug = (frame.args.debug or ""):sub(1, 1):lower() if debug == "" then debug = "n" end local qid = mw.text.trim(frame.args.qid or frame.args[1] or ""):upper() if qid == "" then qid=mw.wikibase.getEntityIdForCurrentPage() end if not qid then if debug ~= "n" then return i18n.errors["entity-not-found"] else return nil end end local first = mw.text.trim(frame.args.first or "") local skip = mw.text.trim(frame.args.skip or "") return table.concat( _location(qid, first, skip), ", " ) end ------------------------------------------------------------------------------- -- checkBlacklist implements a test to check whether a named field is allowed -- returns true if the field is not blacklisted (i.e. allowed) -- returns false if the field is blacklisted (i.e. disallowed) -- {{#if:{{#invoke:WikidataIB |checkBlacklist |name=Joe |suppressfields=Dave; Joe; Fred}} | not blacklisted | blacklisted}} -- displays "blacklisted" -- {{#if:{{#invoke:WikidataIB |checkBlacklist |name=Jim |suppressfields=Dave; Joe; Fred}} | not blacklisted | blacklisted}} -- displays "not blacklisted" ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.checkBlacklist = function(frame) local blacklist = frame.args.suppressfields or frame.args.spf or "" local fieldname = frame.args.name or "" if blacklist ~= "" and fieldname ~= "" then if blacklist:find(fieldname) then return false else return true end else -- one of the fields is missing: let's call that "not on the list" return true end end ------------------------------------------------------------------------------- -- emptyor returns nil if its first unnamed argument is just punctuation, whitespace or html tags -- otherwise it returns the argument unchanged (including leading/trailing space). -- If the argument may contain "=", then it must be called explicitly: -- |1=arg -- (In that case, leading and trailing spaces are trimmed) -- It finds use in infoboxes where it can replace tests like: -- {{#if: {{#invoke:WikidatIB |getvalue |P99 |fwd=ALL}} | <span class="xxx">{{#invoke:WikidatIB |getvalue |P99 |fwd=ALL}}</span> | }} -- with a form that uses just a single call to Wikidata: -- {{#invoke |WikidataIB |emptyor |1= <span class="xxx">{{#invoke:WikidataIB |getvalue |P99 |fwd=ALL}}</span> }} ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.emptyor = function(frame) local s = frame.args[1] or "" if s == "" then return nil end local sx = s:gsub("%s", ""):gsub("<[^>]*>", ""):gsub("%p", "") if sx == "" then return nil else return s end end ------------------------------------------------------------------------------- -- labelorid is a public function to expose the output of labelOrId() -- Pass the Q-number as |qid= or as an unnamed parameter. -- It returns the Wikidata label for that entity or the qid if no label exists. ------------------------------------------------------------------------------- -- Dependencies: labelOrId ------------------------------------------------------------------------------- p.labelorid = function(frame) return (labelOrId(frame.args.qid or frame.args[1])) end ------------------------------------------------------------------------------- -- getLang returns the MediaWiki language code of the current content. -- If optional parameter |style=full, it returns the language name. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.getLang = function(frame) local style = (frame.args.style or ""):lower() local langcode = mw.language.getContentLanguage().code if style == "full" then return mw.language.fetchLanguageName( langcode ) end return langcode end ------------------------------------------------------------------------------- -- getItemLangCode takes a qid parameter (using the current page's qid if blank) -- If the item for that qid has property country (P17) it looks at the first preferred value -- If the country has an official language (P37), it looks at the first preferred value -- If that official language has a language code (P424), it returns the first preferred value -- Otherwise it returns nothing. ------------------------------------------------------------------------------- -- Dependencies: _getItemLangCode() ------------------------------------------------------------------------------- p.getItemLangCode = function(frame) return _getItemLangCode(frame.args.qid or frame.args[1]) end ------------------------------------------------------------------------------- -- findLanguage exports the local findLang() function -- It takes an optional language code and returns, in order of preference: -- the code if a known language; -- the user's language, if set; -- the server's content language. ------------------------------------------------------------------------------- -- Dependencies: findLang ------------------------------------------------------------------------------- p.findLanguage = function(frame) return findLang(frame.args.lang or frame.args[1]).code end ------------------------------------------------------------------------------- -- getQid returns the qid, if supplied -- failing that, the Wikidata entity ID of the "category's main topic (P301)", if it exists -- failing that, the Wikidata entity ID associated with the current page, if it exists -- otherwise, nothing ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.getQid = function(frame) local qid = (frame.args.qid or ""):upper() -- check if a qid was passed; if so, return it: if qid ~= "" then return qid end -- check if there's a "category's main topic (P301)": qid = mw.wikibase.getEntityIdForCurrentPage() if qid then local prop301 = mw.wikibase.getBestStatements(qid, "P301") if prop301[1] then local mctid = prop301[1].mainsnak.datavalue.value.id if mctid then return mctid end end end -- otherwise return the page qid (if any) return qid end ------------------------------------------------------------------------------- -- followQid takes four optional parameters: qid, props, list and all. -- If qid is not given, it uses the qid for the connected page -- or returns nil if there isn't one. -- props is a list of properties, separated by punctuation. -- If props is given, the Wikidata item for the qid is examined for each property in turn. -- If that property contains a value that is another Wikibase-item, that item's qid is returned, -- and the search terminates, unless |all=y when all of the qids are returned, separated by spaces. -- If |list= is set to a template, the qids are passed as arguments to the template. -- If props is not given, the qid is returned. ------------------------------------------------------------------------------- -- Dependencies: parseParam() ------------------------------------------------------------------------------- p._followQid = function(args) local qid = (args.qid or ""):upper() local all = parseParam(args.all, false) local list = args.list or "" if list == "" then list = nil end if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid then return nil end local out = {} local props = (args.props or ""):upper() if props ~= "" then for p in mw.text.gsplit(props, "%p") do -- split at punctuation and iterate p = mw.text.trim(p) for i, v in ipairs( mw.wikibase.getBestStatements(qid, p) ) do local linkedid = v.mainsnak.datavalue and v.mainsnak.datavalue.value.id if linkedid then if all then out[#out+1] = linkedid else return linkedid end -- test for all or just the first one found end -- test for value exists for that property end -- loop through values of property to follow end -- loop through list of properties to follow end if #out > 0 then local ret = "" if list then ret = mw.getCurrentFrame():expandTemplate{title = list, args = out} else ret = table.concat(out, " ") end return ret else return qid end end p.followQid = function(frame) return p._followQid(frame.args) end ------------------------------------------------------------------------------- -- globalSiteID returns the globalSiteID for the current wiki -- e.g. returns "enwiki" for the English Wikipedia, "enwikisource" for English Wikisource, etc. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.globalSiteID = function(frame) return mw.wikibase.getGlobalSiteId() end ------------------------------------------------------------------------------- -- siteID returns the root of the globalSiteID -- e.g. "en" for "enwiki", "enwikisource", etc. -- treats "en-gb" as "en", etc. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.siteID = function(frame) local txtlang = frame:callParserFunction('int', {'lang'}) or "" -- This deals with specific exceptions: be-tarask -> be-x-old if txtlang == "be-tarask" then return "be_x_old" end local pos = txtlang:find("-") local ret = "" if pos then ret = txtlang:sub(1, pos-1) else ret = txtlang end return ret end ------------------------------------------------------------------------------- -- projID returns the code used to link to the reader's language's project -- e.g "en" for [[:en:WikidataIB]] -- treats "en-gb" as "en", etc. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.projID = function(frame) local txtlang = frame:callParserFunction('int', {'lang'}) or "" -- This deals with specific exceptions: be-tarask -> be-x-old if txtlang == "be-tarask" then return "be-x-old" end local pos = txtlang:find("-") local ret = "" if pos then ret = txtlang:sub(1, pos-1) else ret = txtlang end return ret end ------------------------------------------------------------------------------- -- formatNumber formats a number according to the the supplied language code ("|lang=") -- or the default language if not supplied. -- The number is the first unnamed parameter or "|num=" ------------------------------------------------------------------------------- -- Dependencies: findLang() ------------------------------------------------------------------------------- p.formatNumber = function(frame) local lang local num = tonumber(frame.args[1] or frame.args.num) or 0 lang = findLang(frame.args.lang) return lang:formatNum( num ) end ------------------------------------------------------------------------------- -- examine dumps the property (the unnamed parameter or pid) -- from the item given by the parameter 'qid' (or the other unnamed parameter) -- or from the item corresponding to the current page if qid is not supplied. -- e.g. {{#invoke:WikidataIB |examine |pid=P26 |qid=Q42}} -- or {{#invoke:WikidataIB |examine |P26 |Q42}} or any combination of these -- or {{#invoke:WikidataIB |examine |P26}} for the current page. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.examine = function( frame ) local args if frame.args[1] or frame.args.pid or frame.args.qid then args = frame.args else args = frame:getParent().args end local par = {} local pid = (args.pid or ""):upper() local qid = (args.qid or ""):upper() par[1] = mw.text.trim( args[1] or "" ):upper() par[2] = mw.text.trim( args[2] or "" ):upper() table.sort(par) if par[2]:sub(1,1) == "P" then par[1], par[2] = par[2], par[1] end if pid == "" then pid = par[1] end if qid == "" then qid = par[2] end local q1 = qid:sub(1,1) if pid:sub(1,1) ~= "P" then return "No property supplied" end if q1 ~= "Q" and q1 ~= "M" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid then return "No item for this page" end return "<pre>" .. mw.dumpObject( mw.wikibase.getAllStatements( qid, pid ) ) .. "</pre>" end ------------------------------------------------------------------------------- -- checkvalue looks for 'val' as a wikibase-item value of a property (the unnamed parameter or pid) -- from the item given by the parameter 'qid' -- or from the Wikidata item associated with the current page if qid is not supplied. -- It only checks ranks that are requested (preferred and normal by default) -- If property is not supplied, then P31 (instance of) is assumed. -- It returns val if found or nothing if not found. -- e.g. {{#invoke:WikidataIB |checkvalue |val=Q5 |pid=P31 |qid=Q42}} -- or {{#invoke:WikidataIB |checkvalue |val=Q5 |P31 |qid=Q42}} -- or {{#invoke:WikidataIB |checkvalue |val=Q5 |qid=Q42}} -- or {{#invoke:WikidataIB |checkvalue |val=Q5 |P31}} for the current page. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.checkvalue = function( frame ) local args if frame.args.val then args = frame.args else args = frame:getParent().args end local val = args.val if not val then return nil end local pid = mw.text.trim(args.pid or args[1] or "P31"):upper() local qid = (args.qid or ""):upper() if pid:sub(1,1) ~= "P" then return nil end if qid:sub(1,1) ~= "Q" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid then return nil end local ranks = setRanks(args.rank) local stats = {} if ranks.b then stats = mw.wikibase.getBestStatements(qid, pid) else stats = mw.wikibase.getAllStatements( qid, pid ) end if not stats[1] then return nil end if stats[1].mainsnak.datatype == "wikibase-item" then for k, v in pairs( stats ) do local ms = v.mainsnak if ranks[v.rank:sub(1,1)] and ms.snaktype == "value" and ms.datavalue.value.id == val then return val end end end return nil end ------------------------------------------------------------------------------- -- url2 takes a parameter url= that is a proper url and formats it for use in an infobox. -- If no parameter is supplied, it returns nothing. -- This is the equivalent of Template:URL -- but it keeps the "edit at Wikidata" pen icon out of the microformat. -- Usually it will take its url parameter directly from a Wikidata call: -- e.g. {{#invoke:WikidataIB |url2 |url={{wdib |P856 |qid=Q23317 |fwd=ALL |osd=no}} }} ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.url2 = function(frame) local txt = frame.args.url or "" if txt == "" then return nil end -- extract any icon local url, icon = txt:match("(.+)&nbsp;(.+)") -- make sure there's at least a space at the end url = (url or txt) .. " " icon = icon or "" -- extract any protocol like https:// local prot = url:match("(https*://).+[ \"\']") -- extract address local addr = "" if prot then addr = url:match("https*://(.+)[ \"\']") or " " else prot = "//" addr = url:match("[^%p%s]+%.(.+)[ \"\']") or " " end -- strip trailing / from end of domain-only url and add <wbr/> before . and / local disp, n = addr:gsub( "^([^/]+)/$", "%1" ):gsub("%/", "<wbr/>/"):gsub("%.", "<wbr/>.") return '<span class="url">[' .. prot .. addr .. " " .. disp .. "]</span>&nbsp;" .. icon end ------------------------------------------------------------------------------- -- getWebsite fetches the Official website (P856) and formats it for use in an infobox. -- This is similar to Template:Official website but with a url displayed, -- and it adds the "edit at Wikidata" pen icon beyond the microformat if enabled. -- A local value will override the Wikidata value. "NONE" returns nothing. -- e.g. {{#invoke:WikidataIB |getWebsite |qid= |noicon= |lang= |url= }} ------------------------------------------------------------------------------- -- Dependencies: findLang(); parseParam(); ------------------------------------------------------------------------------- p.getWebsite = function(frame) local url = frame.args.url or "" if url:upper() == "NONE" then return nil end local urls = {} local quals = {} local qid = frame.args.qid or "" if url and url ~= "" then urls[1] = url else if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid then return nil end local prop856 = mw.wikibase.getBestStatements(qid, "P856") for k, v in pairs(prop856) do if v.mainsnak.snaktype == "value" then urls[#urls+1] = v.mainsnak.datavalue.value if v.qualifiers and v.qualifiers["P1065"] then -- just take the first archive url (P1065) local au = v.qualifiers["P1065"][1] if au.snaktype == "value" then quals[#urls] = au.datavalue.value end -- test for archive url having a value end -- test for qualifers end -- test for website having a value end -- loop through website(s) end if #urls == 0 then return nil end local out = {} for i, u in ipairs(urls) do local link = quals[i] or u local prot, addr = u:match("(http[s]*://)(.+)") addr = addr or u local disp, n = addr:gsub("%.", "<wbr/>%.") out[#out+1] = '<span class="url">[' .. link .. " " .. disp .. "]</span>" end local langcode = findLang(frame.args.lang).code local noicon = parseParam(frame.args.noicon, false) if url == "" and not noicon then out[#out] = out[#out] .. createicon(langcode, qid, "P856") end local ret = "" if #out > 1 then ret = mw.getCurrentFrame():expandTemplate{title = "ubl", args = out} else ret = out[1] end return ret end ------------------------------------------------------------------------------- -- getAllLabels fetches the set of labels and formats it for display as wikitext. -- It takes a parameter 'qid' for arbitrary access, otherwise it uses the current page. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.getAllLabels = function(frame) local args = frame.args or frame:getParent().args or {} local qid = args.qid or "" if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid or not mw.wikibase.entityExists(qid) then return i18n["entity-not-found"] end local labels = mw.wikibase.getEntity(qid).labels if not labels then return i18n["labels-not-found"] end local out = {} for k, v in pairs(labels) do out[#out+1] = v.value .. " (" .. v.language .. ")" end return table.concat(out, "; ") end ------------------------------------------------------------------------------- -- getAllDescriptions fetches the set of descriptions and formats it for display as wikitext. -- It takes a parameter 'qid' for arbitrary access, otherwise it uses the current page. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.getAllDescriptions = function(frame) local args = frame.args or frame:getParent().args or {} local qid = args.qid or "" if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid or not mw.wikibase.entityExists(qid) then return i18n["entity-not-found"] end local descriptions = mw.wikibase.getEntity(qid).descriptions if not descriptions then return i18n["descriptions-not-found"] end local out = {} for k, v in pairs(descriptions) do out[#out+1] = v.value .. " (" .. v.language .. ")" end return table.concat(out, "; ") end ------------------------------------------------------------------------------- -- getAllAliases fetches the set of aliases and formats it for display as wikitext. -- It takes a parameter 'qid' for arbitrary access, otherwise it uses the current page. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.getAllAliases = function(frame) local args = frame.args or frame:getParent().args or {} local qid = args.qid or "" if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid or not mw.wikibase.entityExists(qid) then return i18n["entity-not-found"] end local aliases = mw.wikibase.getEntity(qid).aliases if not aliases then return i18n["aliases-not-found"] end local out = {} for k1, v1 in pairs(aliases) do local lang = v1[1].language local val = {} for k1, v2 in ipairs(v1) do val[#val+1] = v2.value end out[#out+1] = table.concat(val, ", ") .. " (" .. lang .. ")" end return table.concat(out, "; ") end ------------------------------------------------------------------------------- -- showNoLinks displays the article titles that should not be linked. ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- p.showNoLinks = function(frame) local out = {} for k, v in pairs(donotlink) do out[#out+1] = k end table.sort( out ) return table.concat(out, "; ") end ------------------------------------------------------------------------------- -- checkValidity checks whether the first unnamed parameter represents a valid entity-id, -- that is, something like Q1235 or P123. -- It returns the strings "true" or "false". -- Change false to nil to return "true" or "" (easier to test with #if:). ------------------------------------------------------------------------------- -- Dependencies: none ------------------------------------------------------------------------------- function p.checkValidity(frame) local id = mw.text.trim(frame.args[1] or "") if mw.wikibase.isValidEntityId(id) then return true else return false end end ------------------------------------------------------------------------------- -- getEntityFromTitle returns the Entity-ID (Q-number) for a given title. -- Modification of Module:ResolveEntityId -- The title is the first unnamed parameter. -- The site parameter determines the site/language for the title. Defaults to current wiki. -- The showdab parameter determines whether dab pages should return the Q-number or nil. Defaults to true. -- Returns the Q-number or nil if it does not exist. ------------------------------------------------------------------------------- -- Dependencies: parseParam ------------------------------------------------------------------------------- function p.getEntityFromTitle(frame) local args=frame.args if not args[1] then args=frame:getParent().args end if not args[1] then return nil end local title = mw.text.trim(args[1]) local site = args.site or "" local showdab = parseParam(args.showdab, true) local qid = mw.wikibase.getEntityIdForTitle(title, site) if qid then local prop31 = mw.wikibase.getBestStatements(qid, "P31")[1] if not showdab and prop31 and prop31.mainsnak.datavalue.value.id == "Q4167410" then return nil else return qid end end end ------------------------------------------------------------------------------- -- getDatePrecision returns the number representing the precision of the first best date value -- for the given property. -- It takes the qid and property ID -- The meanings are given at https://www.mediawiki.org/wiki/Wikibase/DataModel#Dates_and_times -- 0 = 1 billion years .. 6 = millennium, 7 = century, 8 = decade, 9 = year, 10 = month, 11 = day -- Returns 0 (or the second unnamed parameter) if the Wikidata does not exist. ------------------------------------------------------------------------------- -- Dependencies: parseParam; sourced; ------------------------------------------------------------------------------- function p.getDatePrecision(frame) local args=frame.args if not args[1] then args=frame:getParent().args end local default = tonumber(args[2] or args.default) or 0 local prop = mw.text.trim(args[1] or "") if prop == "" then return default end local qid = args.qid or "" if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end if not qid then return default end local onlysrc = parseParam(args.onlysourced or args.osd, true) local stat = mw.wikibase.getBestStatements(qid, prop) for i, v in ipairs(stat) do local prec = (onlysrc == false or sourced(v)) and v.mainsnak.datavalue and v.mainsnak.datavalue.value and v.mainsnak.datavalue.value.precision if prec then return prec end end return default end return p ------------------------------------------------------------------------------- -- List of exported functions ------------------------------------------------------------------------------- --[[ _getValue getValue getPreferredValue getCoords getQualifierValue getSumOfParts getValueByQual getValueByLang getValueByRefSource getPropertyIDs getQualifierIDs getPropOfProp getAwardCat getIntersectCat getGlobe getCommonsLink getSiteLink getLink getLabel label getAT getDescription getAliases pageId formatDate location checkBlacklist emptyor labelorid getLang getItemLangCode findLanguage getQID followQid globalSiteID siteID projID formatNumber examine checkvalue url2 getWebsite getAllLabels getAllDescriptions getAllAliases showNoLinks checkValidity getEntityFromTitle getDatePrecision --]] ------------------------------------------------------------------------------- cdfad4f2433151e512d5023478c35bceaf5c980a Template:Tooltip 10 1050 2298 2023-07-11T17:54:26Z wikipedia>Paine Ellsworth 0 Undid revision 1164881729 by [[Special:Contributions/Paine Ellsworth|Paine Ellsworth]] ([[User talk:Paine Ellsworth|talk]]) srv per my talk page wikitext text/x-wiki <templatestyles src="Template:Tooltip/styles.css" />{{#ifeq:{{yesno-no|{{{link}}}}}|yes |[[{{{1}}}|<span class="rt-commentedText tooltip {{#ifeq:{{yesno-yes|{{{dotted}}}}}|no||tooltip-dotted}} {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|&quot;}}}}">{{{1|}}}</span>]] |<span class="rt-commentedText tooltip {{#ifeq:{{yesno-yes|{{{dotted}}}}}|no||tooltip-dotted}} {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|&quot;}}}}">{{{1|}}}</span> }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using tooltip with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Tooltip]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | class | dotted | id | link | style }}<noinclude> {{Documentation|Template:Abbr/doc}} </noinclude> 0bc4ac1b7ea7d4f2cdbb94b76559770a78cd10d9 Template:Use dmy dates/doc 10 866 1920 2023-07-11T21:11:48Z wikipedia>Tropicalkitty 0 Undid edits by [[Special:Contributions/Emmanuel-Ossian Henry|Emmanuel-Ossian Henry]] ([[User talk:Emmanuel-Ossian Henry|talk]]) to last revision by DB1729: Do not include on this page wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{high use |no-percent=yes}} {{Template shortcut|dmy|DMY}} === Usage === To promote consistent date formatting, place this template with other maintenance tags near the top of articles that use the <code>d&nbsp;mmmm&nbsp;yyyy</code> [[date format]] (below hatnotes, but above infoboxes, as per the [[Wikipedia:Manual of Style/Lead section#Elements|Manual of Style]]). Use the parameter <code>|date=</code> for the month and year that an editor or [[WP:bot|bot]] last checked the article for inconsistent date formatting and fixed any found. Wikipedia articles that use <code>d&nbsp;mmmm&nbsp;yyyy</code> dates, either because of the [[MOS:DATERET|first main contributor]] rule or [[WP:TIES|close national ties]] (see [[Wikipedia:MOSNUM|MOSNUM]]), are systematically tagged with {{Tl|Use dmy dates}} over time. The template is invisible except in edit mode. The template is useful to the editors to quickly know which date format is to be used when adding new dates into an article. It also facilitates article maintenance by enabling [[WP:bots|bots]] to recognise use of this format, and by adding the article to the [[WP:hidden category|hidden category]] [[:Category:Use dmy dates|Use dmy dates]]. '''Use of this template is part of a continuing effort to monitor the date formats used in articles, to assist in maintaining consistent formatting within an article. It is ''not'' a temporary "cleanup" template. Therefore, do not remove the template without valid reason, such as a determination the article uses or should use a different date format.''' After being tagged, and bearing in mind article evolution, periodic script or bot runs clean up formats, correcting any new introductions since its last visit, and '''updating the visit date''' on the {{Tl|Use dmy dates}} template. The dmy and mdy templates have almost always been used to indicate date styles in the body of the articles; although it ''may'' also indicate the flavour of dates in reference sections or parts thereof. Therefore, this template notice ought to be read in conjunction with the blurb at [[Wikipedia:Date formattings]]. [[User:Ohconfucius/script/MOSNUM dates|MOSNUM script documentation]] may also be relevant to those interested. When a citation style does not expect differing date formats, it is permissible to normalize publication dates to the article body text date format, and access/archive dates to either, with date consistency being preferred (see [[MOS:DATEUNIFY]]). This template is intended for use in articles. It can be used on a template page in order to format citation dates on the template page itself, but it must be enclosed in {{tag|noinclude}} tags so that it is not transcluded into articles or other pages. ===Auto-formatting citation template dates=== [[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|2]] (collectively cs1|2) templates automatically render dates ({{para|date}}, {{para|access-date}}, {{para|archive-date}}, etc) in the style specified by this template. Because it is allowed by [[WP:MOSDATES]], the cs1|2 templates can automatically format dates in a variety of styles. Editors may choose how cs1|2 templates render dates by the use of {{para|cs1-dates|&lt;{{var|keyword}}>}}. {{#lst:Help:Citation Style 1|auto_date_format_table}} An example is given at {{section link|Help:Citation Style 1#Auto-formatting citation template dates}}. <!-- An example cannot be given here because [[Module:Citation/CS1/Configuration]] gets the template's page name when this documentation page is transcluded. That means that the module reads the template code but does not read the template documentation. --> {{lang|la|Nota bene}}: cs1|2 auto-date formatting does not apply when previewing an article section that does not contain a {{tld|use xxx dates}} template. When editing with the visual editor, changes to this template do not take effect until the page is saved. === Syntax === {{Tlx|Use dmy dates|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=}} '''Notes''': * The template should be inserted in one of the first few lines of code of an article (to improve performance). * Do not use redirects of this template, because otherwise its presence in an article may not be recognized by date formatting templates and bots. (There are a number of "legacy redirects" which are still supported at least by CS1/CS2 citation templates, but they should be changed to direct invocations of this template, also for performance reasons.) === TemplateData === {{TemplateData header}} <templatedata> { "format": "inline", "description": "This template should be placed near the top of articles that use the d mmmm yyyy date format.", "params": { "date": { "label": "Month and year", "description": "The month and year that the template was placed or the article was last checked or cleaned (in full). \"{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}\" inserts the current month and year automatically.", "type": "string", "autovalue": "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}", "example": "April 2022", "suggested": true }, "cs1-dates": { "description": "How dates should be formatted in CS1 citations", "suggestedvalues": [ "l", "ll", "ls", "ly", "s", "ss", "sy", "y", "yy" ] } } } </templatedata> === Wrongly tagged? === If, for example, you determine that an article has a template that is inappropriate for [[WP:TIES|its nationality]], you should replace it with the appropriate template to avoid scripts or bots reapplying the "wrong" format in the course of maintenance. === Maintenance category === * {{category link with count|Pages using Use dmy dates template with unknown parameters}} === See also === * {{Tl|Use mdy dates}}, for the <code>mmmm&nbsp;d,&nbsp;yyyy</code> format * {{tl|Date}}, which can alter the format of an inputted date <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Templates with no visible output]] [[Category:Time and date maintenance templates]] [[Category:Templates that add a tracking category]] }}</includeonly> 485b538ed8b955718e17cb6b05ad2cec1af2a6a1 Template:Module link 10 1566 2901 2023-07-12T09:19:56Z w>Grufo 0 Add includeonly wikitext text/x-wiki <includeonly>&#123;&#123;{{{{{|safesubst:}}}#invoke:Separated entries|main|[[Module:{{{1}}}{{{section|}}}|#invoke:{{{1}}}]]|{{{2|''function''}}}|separator=&#124;}}&#125;&#125;</includeonly><noinclude>{{documentation}}<!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 5158390dc6818645cad4bc8083244e117d023fc4 Module:Collapsible list 828 1179 2508 2023-07-13T14:29:43Z w>Frietjes 0 we don't need to track this anymore after it was all cleaned up back in [[Template_talk:Collapsible_list/Archive_1#titlestyle_again|2018 to 2019]] Scribunto text/plain local p = {} local function getListItem( data ) if not type( data ) == 'string' then return '' end return mw.ustring.format( '<li style="line-height: inherit; margin: 0">%s</li>', data ) end -- Returns an array containing the keys of all positional arguments -- that contain data (i.e. non-whitespace values). local function getArgNums( args ) local nums = {} for k, v in pairs( args ) do if type( k ) == 'number' and k >= 1 and math.floor( k ) == k and type( v ) == 'string' and mw.ustring.match( v, '%S' ) then table.insert( nums, k ) end end table.sort( nums ) return nums end -- Formats a list of classes, styles or other attributes. local function formatAttributes( attrType, ... ) local attributes = { ... } local nums = getArgNums( attributes ) local t = {} for i, num in ipairs( nums ) do table.insert( t, attributes[ num ] ) end if #t == 0 then return '' -- Return the blank string so concatenation will work. end return mw.ustring.format( ' %s="%s"', attrType, table.concat( t, ' ' ) ) end -- TODO: use Module:List. Since the update for this comment is routine, -- this is blocked without a consensus discussion by -- [[MediaWiki_talk:Common.css/Archive_15#plainlist_+_hlist_indentation]] -- if we decide hlist in plainlist in this template isn't an issue, we can use -- module:list directly -- [https://en.wikipedia.org/w/index.php?title=Module:Collapsible_list/sandbox&oldid=1130172480] -- is an implementation (that will code rot slightly I expect) local function buildList( args ) -- Get the list items. local listItems = {} local argNums = getArgNums( args ) for i, num in ipairs( argNums ) do table.insert( listItems, getListItem( args[ num ] ) ) end if #listItems == 0 then return '' end listItems = table.concat( listItems ) -- hack around mw-collapsible show/hide jumpiness by looking for text-alignment -- by setting a margin if centered local textAlignmentCentered = 'text%-align%s*:%s*center' local centeredTitle = (args.title_style and args.title_style:lower():match(textAlignmentCentered) or args.titlestyle and args.titlestyle:lower():match(textAlignmentCentered)) local centeredTitleSpacing if centeredTitle then centeredTitleSpacing = 'margin: 0 4em' else centeredTitleSpacing = '' end -- Get class, style and title data. local collapsibleContainerClass = formatAttributes( 'class', 'collapsible-list', 'mw-collapsible', not args.expand and 'mw-collapsed' ) local collapsibleContainerStyle = formatAttributes( 'style', -- mostly work around .infobox-full-data defaulting to centered 'text-align: left;', args.frame_style, args.framestyle ) local collapsibleTitleStyle = formatAttributes( 'style', 'line-height: 1.6em; font-weight: bold;', args.title_style, args.titlestyle ) local jumpyTitleStyle = formatAttributes( 'style', centeredTitleSpacing ) local title = args.title or 'List' local ulclass = formatAttributes( 'class', 'mw-collapsible-content', args.hlist and 'hlist' ) local ulstyle = formatAttributes( 'style', 'margin-top: 0; margin-bottom: 0; line-height: inherit;', not args.bullets and 'list-style: none; margin-left: 0;', args.list_style, args.liststyle ) local hlist_templatestyles = '' if args.hlist then hlist_templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Hlist/styles.css' } } end -- Build the list. return mw.ustring.format( '%s<div%s%s>\n<div%s><div%s>%s</div></div>\n<ul%s%s>%s</ul>\n</div>', hlist_templatestyles, collapsibleContainerClass, collapsibleContainerStyle, collapsibleTitleStyle, jumpyTitleStyle, title, ulclass, ulstyle, listItems ) end function p.main( frame ) local origArgs if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args for k, v in pairs( frame.args ) do origArgs = frame.args break end else origArgs = frame end local args = {} for k, v in pairs( origArgs ) do if type( k ) == 'number' or v ~= '' then args[ k ] = v end end return buildList( args ) end return p 5b7e779e7529bcb12a219726ef6c948ea98874fd Module:Location map/data/USA Minnesota/doc 828 1639 2995 2023-07-13T19:05:32Z wikipedia>JJMC89 bot III 0 Moving [[:Category:Minnesota location map templates]] to [[:Category:Minnesota location map modules]] per [[Wikipedia:Categories for discussion/Speedy]] wikitext text/x-wiki <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE --> {{high-use| 3782 }}{{Module:Location map/data/doc |image=[[File:Map of Minnesota NA.png|thumb|400px|Map of Minnesota (click on map to see larger image)]] |examples= === Location map === {{Location map | USA Minnesota | width = 250 | lat_deg = 44 | lat_min = 56 | lat_sec = 39 | lat_dir = N | lon_deg = 93 | lon_min = 05 | lon_sec = 07 | lon_dir = W | label = Saint Paul }} <pre style="width:40em"> {{Location map | USA Minnesota | width = 250 | lat_deg = 44 | lat_min = 56 | lat_sec = 39 | lat_dir = N | lon_deg = 93 | lon_min = 05 | lon_sec = 07 | lon_dir = W | label = Saint Paul }} </pre> {{clear}} === Location map many === {{Location map many | USA Minnesota | width = 250 | caption = Locations in Minnesota | lat1 = 49.345 | long1 = -95.063 | label1 = Angle Inlet | lat2 = 43.502 | long2 = -93.488 | label2 = Emmons | lat3 = 47.930 | long3 = -97.024 | label3 = East Grand Forks | lat4 = 48.005 | long4 = -89.492 | label4 = Pigeon Point }} <pre style="width:40em"> {{Location map many | USA Minnesota | width = 250 | caption = Locations in Minnesota | lat1 = 49.345 | long1 = -95.063 | label1 = Angle Inlet | lat2 = 43.502 | long2 = -93.488 | label2 = Emmons | lat3 = 47.930 | long3 = -97.024 | label3 = East Grand Forks | lat4 = 48.005 | long4 = -89.492 | label4 = Pigeon Point }} </pre> {{clear}} === Location map+ === {{Location map+ | USA Minnesota | width = 250 | caption = Locations in Minnesota | places = {{Location map~ | USA Minnesota | lat = 49.345 | long = -95.063 | label = Angle Inlet }} {{Location map~ | USA Minnesota | lat = 43.502 | long = -93.488 | label = Emmons }} {{Location map~ | USA Minnesota | lat = 47.930 | long = -97.024 | label = East Grand Forks }} {{Location map~ | USA Minnesota | lat = 48.005 | long = -89.492 | label = Pigeon Point }} }} <pre style="width:40em"> {{Location map+ | USA Minnesota | width = 250 | caption = Locations in Minnesota | places = {{Location map~ | USA Minnesota | lat = 49.345 | long = -95.063 | label = Angle Inlet }} {{Location map~ | USA Minnesota | lat = 43.502 | long = -93.488 | label = Emmons }} {{Location map~ | USA Minnesota | lat = 47.930 | long = -97.024 | label = East Grand Forks }} {{Location map~ | USA Minnesota | lat = 48.005 | long = -89.492 | label = Pigeon Point }} }} </pre> {{clear}} |see also= * [[Module:Location map/data/USA]] }} <includeonly> <!-- Categories go here --> {{DEFAULTSORT:Minnesota, Location map USA}} [[Category:Minnesota location map modules| ]] </includeonly> 832b31c167acdd324bb1673432ae8fcb8192fedd Template:Infobox university/doc 10 1485 2820 2023-07-14T12:42:58Z w>ElKevbo 0 please don't edit the documentation for the template unless the template has been changed wikitext text/x-wiki {{Documentation subpage}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --><!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE --> {{High-use}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Location map|Module:Check for unknown parameters}} {{Parameter names example |name |native_name <!--|native_name_lang--> |image |image_size |image_alt |image_upright |caption |latin_name |other_name={{{other_name}}} ''or''&nbsp;{{{other_names}}} |former_name={{{former_name}}} ''or''&nbsp;{{{former_names}}} |motto |motto_lang |mottoeng |top_free |top_free_label |type |established |closed |founder={{{founder}}} or {{{founders}}} |parent |accreditation |affiliation |religious_affiliation |academic_affiliation |endowment |budget |officer_in_charge |chair| |chairman |chairperson |visitor |chancellor |president |vice_president |superintendent |vice_chancellor |provost |rector |principal |director |dean |head_label |head |academic_staff |total_staff |students |enrollment |undergrad |postgrad |doctoral |other_students |location={{{location}}}<br/>{{nowrap|''or'' {{{address}}} ''(optional)''<br/>{{{city}}}, {{{state}}},<br/>{{{province}}},<br/>{{{postalcode}}} ''or''<br/> {{{zipcode}}} ''(optional)''<br/>{{{country}}}}} |coordinates |campus_type |campus_size |language |free_label|free |colors={{{colors}}} ''or''&nbsp;{{{colours}}} |sports_nickname |sporting_affiliations |mascot={{{mascot}}} ''or''&nbsp;{{{mascots}}} |sports_free_label |sports_free |website |logo |logo_size |logo_upright |logo_alt |nrhp={{{nrhp}}} ''or''&nbsp;{{{embedded}}} <!--|pushpin_map |pushpin_label_position |map_size |pushpin_map_caption |latitude |latm |latd |latNS |longitude |longm |longd |longEW--> |footnotes = {{{pushpin_map}}}<br/>{{{footnotes}}} }} {{Template link general|Infobox university}} is an [[Help:Infobox|infobox]] for articles about universities and colleges; see [[Wikipedia:College and university article guideline]]. == Parameters == All fields are optional. Remove hidden notes (including both the <code><nowiki><!--</nowiki></code> and <code><nowiki>--></nowiki></code> characters) that surround certain entries, in order for the data you enter to appear in the published article. All parameter names '''''must''''' be [[lowercase]]. === Full syntax === <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox university | name = | native_name = | native_name_lang = | image = | image_upright = | image_alt = | caption = | latin_name = | other_name = <!-- or |other_names= --> | former_name = <!-- or |former_names= --> | motto = | motto_lang = | mottoeng = | top_free_label = <!-- up to |top_free_label2= --> | top_free = <!-- up to |top_free2= --> | type = | established = <!-- {{Start date|YYYY|MM|DD}} --> | closed = <!-- {{End date|YYYY|MM|DD}} --> | founder = <!-- or |founders= --> | parent = | accreditation = | affiliation = | religious_affiliation = | academic_affiliation = <!-- or |academic_affiliations= --> | endowment = | budget = | officer_in_charge = | chair = | chairman = | chairperson = | visitor = | chancellor = | president = | vice_president = | superintendent = | vice_chancellor = | provost = | rector = | principal = | director = | dean = | head_label = | head = | academic_staff = | total_staff = | students = <!-- or |enrollment= --> | undergrad = | postgrad = | doctoral = | other_students = <!-- or |other= --> | address = <!-- Please discuss before using --> | city = | state = | province = | country = | postalcode = <!-- or |zipcode= or |postcode= --> | coordinates = <!-- {{Coord|LAT|LON|type:edu|display=inline,title}} --> | campus_type = | campus_size = <!-- use {{Convert}} --> | language = <!-- Principal language(s) of instruction used in the institution --> | free_label = <!-- up to |free_label2= --> | free = <!-- up to |free2= --> | colors = <!--or |colours= --> | sports_nickname = <!--or |athletics_nickname= --> | sporting_affiliations = | mascot = <!--or |mascots= --> | sports_free_label = <!-- up to |sports_free_label3= --> | sports_free = <!-- up to |sports_free3= --> | website = <!-- {{URL|example.com}} --> | logo = | logo_size = | logo_upright = | logo_alt = | embedded = <!-- or |nrhp= or |module= --> | pushpin_map = | pushpin_label_position = | map_size = | pushpin_map_caption = | footnotes = }} </syntaxhighlight> === Custom blank/free parameters === Note how the 10 customized free-data parameters (or blank label/data pairs) are shown in 3 parts of the infobox as upper/middle/bottom: upper (as "top_free_label=" with "top_free=" to "top_free2"), or middle (as "free_label=" with "free=" to "free2") or bottom (as "sports_free_label=" with "sports_free=" to "sports_free3"). Those 10 custom parameters allow speciality field labels and data values for 10 extra parameter label/data pairs. Also any of those 10 custom fields could be mere note labels, with text, to briefly explain nearby parameters, or link footnotes, without cluttering the other label/data pairs. A custom label can be set blank to hide as with "free_label=&amp;nbsp;" to show only the data portion, with hidden label. === Microformat === {{UF-hcard-org|age=no}} == Example == {{Infobox university | name = University of Illyria | native_name = Universiti von Illyria | native_name_lang = de | other_name = UI | image = Dabney-minimalist-vector.svg | image_upright = 0.7 | image_alt = scroll atop shield outline | caption = Seal of University of Illyria | latin_name = Universitas Illyriensis | former_name = Utopian University | motto = ''Melior a lepidus fossor quam a stultus lepor lepos'' | motto_lang = la | mottoeng = "Better a witty fool than a foolish wit" | established = {{Start date|1666}} | closed = {{End date|1850}} | type = [[Public university|Public]] | accreditation = Southwest Illyrian Accreditation Commission | religious_affiliation = Church of Illyria | endowment = US$&nbsp;123,456,789 | visitor= [[John Doe]] | chancellor = [[Jane Doe]] | vice_chancellor = John Doe | rector = John Doe | head_label = [[Rector (academia)|Rectrix Magnifica]] | head = Jane Doe | academic_staff = 300 | total_staff = 900 | students = 10,000 | undergrad = 5,000 | postgrad = 1,000 | doctoral = 100 | other_students = 1,200{{Sup|a}} | city = [[Illyria]] | state = [[Illyria]] | country = [[Utopia]] | coordinates = {{Coord|12.34|-98.76|type:edu|display=inline}} | campus_type = Rural | campus_size = {{Convert|47|acre}} | colours = {{Color box|red}}{{Color box|blue}} Red and blue | sports_nickname = The Nematodes | mascot = Nobby the Nematode | sporting_affiliations = [[Utopian Athletic League]] | website = {{URL|www.illyria.edu}} | logo = EUSP logo lowres.jpg | logo_size = 50px | logo_alt = Spiral on stripes | footnotes = <hr /> <div style="text-align: left;"> {{Sup|a}} [[Further education]].<br /> </div> Note: This university is completely fictional. }} <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox university | name = University of Illyria | native_name = Universiti von Illyria | native_name_lang = de | other_name = UI | image = Dabney-minimalist-vector.svg | image_upright = 0.7 | image_alt = scroll atop shield outline | caption = Seal of University of Illyria | latin_name = Universitas Illyriensis | former_name = Utopian University | motto = ''Melior a lepidus fossor quam a stultus lepor lepos'' | motto_lang = la | mottoeng = "Better a witty fool than a foolish wit" | established = {{Start date|1666}} | closed = {{End date|1850}} | type = [[Public university|Public]] | religious_affiliation = Church of Illyria | endowment = US$&nbsp;123,456,789 | chancellor = [[Jane Doe]] | vice_chancellor = John Doe | rector = Fr. Doe | head_label = [[Visitor]] | head = [[John Doe|Archbishop Doe]] | academic_staff = 300 | total_staff = 900 | students = 10,000 | undergrad = 5,000 | postgrad = 1,000 | doctoral = 100 | other_students = 1,200{{Sup|a}} | city = [[Illyria]] | state = [[Illyria]] | country = [[Utopia]] | coordinates = {{Coord|12.34|-98.76|type:edu|display=inline}} | campus_type = Rural | campus_size = {{Convert|47|acre}} | colours = {{Color box|red}}{{Color box|blue}} Red and blue | sports_nickname = The Nematodes | mascot = Nobby the Nematode | sporting_affiliations = [[Utopian Athletic League]] | website = {{URL|www.illyria.edu}} | logo = EUSP logo lowres.jpg | logo_size = 50px | logo_alt = Spiral on stripes | footnotes = <hr /> <div style="text-align: left;"> {{Sup|a}} [[Further education]].<br /> </div> Note: This university is completely fictional. }} </syntaxhighlight> == TemplateData == {{TemplateData header}} {{Clear|right}} <templatedata>{ "description": "An infobox for articles about universities and colleges.", "format": "{{_\n | ______________________ = _\n}}", "paramOrder": [ "name", "native_name", "native_name_lang", "image", "image_size", "image_upright", "image_alt", "caption", "latin_name", "other_name", "former_name", "motto", "motto_lang", "mottoeng", "top_free_label", "top_free", "top_free_label1", "top_free1", "top_free_label2", "top_free2", "type", "established", "closed", "founder", "parent", "accreditation", "affiliation", "religious_affiliation", "academic_affiliation", "endowment", "budget", "officer_in_charge", "chair", "chairman", "chairperson", "visitor", "chancellor", "president", "vice_president", "superintendent", "vice_chancellor", "provost", "rector", "principal", "director", "dean", "head_label", "head", "academic_staff", "administrative_staff", "total_staff", "students", "undergrad", "postgrad", "doctoral", "alumni", "other", "address", "city", "state", "province", "postalcode", "country", "location", "coordinates", "campus_type", "campus_size", "language", "free_label", "free", "free_label1", "free1", "free_label2", "free2", "colors", "sports", "sporting_affiliations", "sports_nickname", "mascot", "sports_free_label", "sports_free", "sports_free_label1", "sports_free1", "sports_free_label2", "sports_free2", "sports_free_label3", "sports_free3", "logo", "logo_upright", "logo_alt", "logo_size", "website", "footnotes", "module", "pushpin_map", "pushpin_map_caption", "map_size", "pushpin_label_position" ], "params": { "name": { "suggested": true, "type": "string", "label": "Name (in English)", "description": "Official name in English." }, "native_name": { "type": "string", "label": "Native name", "description": "Name in institution's native language." }, "native_name_lang": { "type": "string", "label": "Native name language", "description": "[[List of ISO 639-2 codes|ISO 639-2 code]], e.g. 'fr' for French." }, "other_name": { "type": "line", "aliases": [ "other_names" ], "label": "Current alternative names", "description": "For any alternative ''current'' names by which the university is known, such as acronyms and abbreviations." }, "former_name": { "type": "line", "aliases": [ "former_names" ], "label": "Former names", "description": "Former name(s) of the institution." }, "image": { "type": "wiki-file-name", "label": "Image name", "description": "Institution-related graphic, preferably the official seal or logo. Use the image filename without File: namespace prefix. Sizes the image to the user's preference by default.", "aliases": [ "image_name" ], "suggested": true }, "image_upright": { "type": "line", "label": "Image scaling (\"upright\")", "description": "Scaling factor for the image, such as 0.7. The actual size is the scaling factor multiplied by the user's thumbnail size.", "example": "0.7" }, "image_size": { "type": "line", "label": "Image size", "description": "Use in conjunction with Image. Allows editors to specify an image width rather than use the default.", "example": "120px" }, "image_alt": { "type": "string", "label": "Alternative text for image", "description": "Alt text for image, for visually impaired readers. This should not contain wiki syntax, and should not duplicate the caption. See [[WP:ALT]]." }, "caption": { "type": "content", "label": "Caption", "description": "Caption text for the infobox image. May include wiki syntax." }, "latin_name": { "type": "line", "label": "Latin name", "description": "University name in Latin, if commonly referenced." }, "motto": { "type": "string", "label": "Motto", "description": "University's motto; usually in Latin." }, "motto_lang": { "type": "line", "label": "Motto language", "description": "If the motto is not in English, the [[List of ISO 639-2 codes|ISO 639-2 code]] for its language (e.g. \"la\" for Latin). If more than one, use Template:Lang instead." }, "mottoeng": { "type": "string", "label": "Motto (in English)", "description": "University's motto in English if another language is used above." }, "top_free_label": { "type": "line", "label": "Top free label", "description": "First custom special label of upper infobox. The data for this field goes in parameter top_free." }, "top_free": { "type": "string", "label": "Top free", "description": "First custom data field of upper infobox. The name of this field goes in parameter top_free_label." }, "top_free_label1": { "type": "line", "label": "Top free label1", "description": "Next custom special label1 of upper infobox. The data for this field goes in parameter top_free1." }, "top_free1": { "type": "string", "label": "Top free1 data", "description": "Next custom data1 field of upper infobox. The name of this field goes in parameter top_free_label1." }, "top_free_label2": { "type": "line", "label": "Top free label2", "description": "Next custom label2 of upper infobox. The data for this field goes in parameter top_free2." }, "top_free2": { "type": "string", "label": "Top free2 data", "description": "Next custom data2 field of upper infobox. The name of this field goes in parameter top_free_label2." }, "established": { "suggested": true, "type": "content", "label": "Date established", "description": "Date of establishment/founding formatted as parameters to Template:Start date; give year if no exact date is available.", "example": "{{Start date|1859|02|14}}" }, "closed": { "type": "line", "description": "For former institutions, provide the date of closure. Give year if no exact date is available. Use the template {{tl|End date}}.", "label": "Date closed" }, "founder": { "type": "line", "label": "Founder", "description": "Name of the person(s) who founded the institution, if commonly mentioned.", "aliases": [ "founders" ] }, "type": { "type": "content", "description": "General type of the institution. Include public vs. private, single-gender, for-profit status (assumed non-profit if omitted), undergraduate vs. graduate, vocational focus (e.g. business school), etc.", "label": "Type", "example": "[[Private university|Private]] [[women's college|women's]] [[liberal arts college]]; [[Public university|Public]] [[research university]]; [[Private university|Private]] [[Proprietary education|for-profit]] [[law school]]", "suggested": true }, "parent": { "type": "line", "label": "Parent institution", "description": "Name of any parent institution (e.g. for some colleges, a university)." }, "accreditation": { "type": "line", "label": "Accreditation", "description": "Institution-wide [[Higher education accreditation|accreditor(s)]]. Can alternatively be placed in the external links section, but mandatory for infobox if unaccredited." }, "affiliation": { "type": "line", "label": "Affiliation", "description": "Organizations of which the institution is a member and provide [[Wikipedia:Defining|essential definition]] of the institution's core mission and values. Academic and religious affiliations should be placed in those parameters.", "aliases": [ "affiliations" ] }, "religious_affiliation": { "type": "line", "label": "Religious affiliation", "description": "Use if the institution has an official or strong de facto religious affiliation." }, "academic_affiliation": { "type": "line", "label": "Academic affiliation", "description": "Academic organizations of which the institution is a member and provide [[Wikipedia:Defining|essential definition]] of the institution (mission, values, activities, etc.).", "aliases": [ "academic_affiliations" ] }, "endowment": { "type": "line", "label": "Endowment", "description": "[[Financial endowment]] value." }, "budget": { "type": "line", "label": "Budget", "description": "Total annual budget / expenditures." }, "rector": { "type": "line", "label": "Rector", "description": "Rector of the institution." }, "officer_in_charge": { "type": "line", "label": "Officer in Charge", "description": "Officer in Charge of the institution." }, "chair": { "type": "line", "label": "Chair", "description": "Chair of the institution." }, "chairman": { "type": "line", "label": "Chairman", "description": "Chairman of the institution. Per [[MOS:GNL]], use only if the title is official; otherwise use chairperson or chair fields." }, "chairperson": { "type": "line", "label": "Chairperson", "description": "Chairperson of the institution." }, "visitor": { "type": "line", "label": "Visitor", "description": "Visitor of the institution. This refers to the position of [[visitor]] under charities law in common law countries. It should only be used if this is a position with actual authority." }, "chancellor": { "type": "line", "label": "Chancellor", "description": "Chancellor of the institution." }, "president": { "type": "line", "label": "President", "description": "President of the institution." }, "vice_president": { "type": "line", "label": "Vice President", "description": "Vice President of the institution. Should only be used where this is the chief executive officer of the institution (i.e. the president is a ceremonial role), not where the vice president is a deputy." }, "superintendent": { "type": "line", "label": "Superintendent", "description": "Superintendent of the institution." }, "vice_chancellor": { "type": "line", "label": "Vice Chancellor", "description": "Vice Chancellor of the institution. Should only be used where this is the chief executive officer of the institution (i.e. the chancellor is a ceremonial role), not where the vice chancellor is a deputy." }, "provost": { "type": "line", "label": "Provost", "description": "Provost of the institution. Should only be used where this is the chief executive officer of the institution, not where the provost is a deputy." }, "principal": { "type": "line", "label": "Principal", "description": "Principal of the institution." }, "dean": { "type": "line", "label": "Dean", "description": "Dean of the institution. Should only be used where this is the chief executive officer of the institution, not where the dean is a deputy." }, "director": { "type": "line", "label": "Director", "description": "Director of the institution." }, "head_label": { "type": "line", "label": "Head label", "description": "Another officer title of someone essential to understanding the institution. Use with the Head Name field. For compound titles (e.g. Vice Chancellor and President), use either this field or the field corresponding to whichever individual title in the compound is most appropriate." }, "head": { "type": "line", "label": "Head name", "description": "The name of the officer serving in the role defined by the Head label field." }, "academic_staff": { "type": "line", "label": "# of academic staff", "description": "Number of [[Faculty (academic staff)|faculty]] / academic staff members. (include number formatting e.g. 1,234,567,890) If giving [[Full-time equivalent|FTE]], label as such.", "aliases": [ "faculty" ] }, "administrative_staff": { "type": "line", "label": "# of administrative staff", "description": "Number of administrative / support staff. (include number formatting e.g. 1,234,567,890) Discouraged unless it is precisely defined in the reference; use total_staff instead. If giving [[Full-time equivalent|FTE]], label as such." }, "total_staff": { "label": "# of total staff", "description": "Total number of employees of the institution, including academic staff (faculty), administrative staff, and others. (include number formatting e.g. 1,234,567,890) If giving [[Full-time equivalent|FTE]], label as such.", "type": "line" }, "students": { "type": "line", "label": "# of students", "description": "Total student count. Use undergrad, postgrad, doctoral and other for additional detail. (format amount, as 1,234,567,890 instead of 1234567890)", "aliases": [ "enrollment" ] }, "undergrad": { "type": "line", "label": "# of undergrads", "description": "Total [[undergraduate]] enrollment. (include number formatting e.g. 1,234,567,890 instead of 1234567890)" }, "postgrad": { "type": "line", "label": "# of postgrads", "description": "Total [[postgraduate]] enrollment. (include number formatting e.g. 1,234,567,890 instead of 1234567890)" }, "doctoral": { "type": "line", "label": "# of doctorals", "description": "Total [[doctoral student]] enrollment. (include number formatting e.g. 1,234,567,890 instead of 1234567890)" }, "other": { "type": "string", "label": "Other enrollment", "description": "Number of students enrolled in another capacity. Specify a category if possible. (include number formatting e.g. 1,234,567,890 instead of 1234567890)", "aliases": [ "other_students" ] }, "address": { "required": false, "type": "line", "label": "Address", "description": "Street address at which the institution is located, if applicable. Use only for institutions with a single campus which has a discreet address; omit otherwise." }, "city": { "suggested": true, "type": "line", "label": "City", "description": "City in which the institution is located. Provide wikilink if possible." }, "state": { "type": "line", "label": "State", "description": "U.S. state or similar administrative subdivision in which the institution is located. Use in conjunction with the Country field, and do not use with the Province field. Provide wikilink if possible.", "aliases": [ "canton", "prefecture", "region" ] }, "province": { "type": "line", "label": "Province", "description": "For all other administrative subdivisions; use as an alternative to the State field in conjunction with the Country field." }, "postalcode": { "required": false, "aliases": [ "postcode", "zipcode" ], "type": "line", "label": "Postal code", "description": "Postal code for the institution. Use is optional. May not be applicable for institutions with multiple campuses." }, "country": { "type": "line", "label": "Country", "description": "Country in which the institution is based. Use in conjunction with city and, optionally, state or province. [[MOS:OVERLINK|Do ''not'' wikilink]] for major countries.", "suggested": true }, "location": { "label": "Location", "type": "string", "description": "Location of the institution. Overrides the more specific fields (Address, City, etc.); use only if not possible to give the location through those." }, "coordinates": { "type": "content", "label": "Coordinates", "description": "Displays coordinates, in parentheses, after the location fields. Use Template:Coord with |type:edu and |display=inline,title.", "aliases": [ "coor" ], "suggested": true }, "campus_type": { "aliases": [ "campus" ], "label": "Campus type", "description": "Type/nature of the institution's campus (e.g. urban, rural, multiple sites).", "type": "line", "suggested": true }, "campus_size": { "label": "Campus size", "description": "Area owned by the institution, typically in acres. Use {{convert}}.", "example": "{{Convert|47|acre}}", "type": "content", "suggested": true }, "language": { "type": "content", "label": "Instruction language", "description": "Language commonly used for instruction; use only if not obvious from location", "example": "[[English language|English]]" }, "free_label": { "type": "line", "label": "Free label", "description": "A special field title; use with the Free data field." }, "free": { "type": "string", "label": "Free data", "description": "Related data that goes with the Free label field." }, "free_label1": { "type": "line", "label": "Free label1", "description": "Next middle custom specialty field label; labels the free data 1 field." }, "free1": { "type": "string", "label": "Free data1", "description": "Data by Free label 1 field." }, "free_label2": { "type": "line", "label": "Free label2", "description": "Next middle custom specialty field label." }, "free2": { "type": "string", "label": "Free data2", "description": "Data by Free Label2 field." }, "sports": { "type": "string", "label": "Sports", "description": "List of primary university sports", "aliases": [ "athletics" ], "deprecated": "Always replace with 'sporting_affiliations' or 'sports_nickname' parameters." }, "mascot": { "type": "line", "aliases": [ "mascots" ], "label": "Mascot", "description": "Institution's athletic mascot." }, "sporting_affiliations": { "type": "content", "label": "Sporting affiliations", "description": "List of sporting affiliations and memberships. Provide wikilink if possible; (use the Plainlist or Ublist templates).", "example": "[[National Collegiate Athletic Association|NCAA]] [[Division III (NCAA)|Division III]]&nbsp;– [[Southern California Intercollegiate Athletic Conference|SCIAC]]", "aliases": [ "athletics_affiliations" ] }, "sports_free_label": { "type": "line", "label": "Sports free label", "description": "First custom field label title near bottom of infobox; use with Sports-Free field." }, "sports_free": { "type": "string", "label": "Sports free data", "description": "First bottom custom data field; use with Sports Free label field." }, "sports_free_label1": { "type": "line", "label": "Sports free1 label", "description": "Next bottom custom label; use with Sports-Free1 field." }, "sports_free1": { "type": "string", "label": "Sports free1 data", "description": "Next bottom custom data field; use with Sports Free1 label." }, "sports_free_label2": { "type": "line", "label": "Sports free2 label", "description": "Next bottom custom label; use with Sports-Free2 field." }, "sports_free2": { "type": "string", "label": "Sports free2 data", "description": "Next custom data field; use with Sports Free2 label." }, "sports_free_label3": { "type": "line", "label": "Sports free3 label", "description": "Next bottom custom label; use with Sports-Free3 field." }, "sports_free3": { "type": "string", "label": "Sports free3 data", "description": "Next custom data field; use with Sports Free3 label." }, "website": { "type": "content", "label": "Website URL", "description": "URL of the official website of the institution, formatted as the sole unnamed parameter to the URL template.", "suggested": true, "example": "{{URL|https://oregonstate.edu/}}" }, "logo": { "type": "wiki-file-name", "label": "Logo", "description": "Use for an athletics logo, corporate emblem, or similar graphic. Omit \"File:\"" }, "footnotes": { "type": "content", "label": "Footnotes", "description": "Footnotes for the infobox. Useful for including references for data." }, "pushpin_map": { "description": "See Template:Location map documentation." }, "logo_size": { "label": "logo_size", "type": "string" }, "logo_upright": { "label": "logo_upright", "type": "line" }, "logo_alt": { "label": "logo_alt", "type": "string" }, "alumni": { "label": "Alumni", "type": "number", "description": "Number of alumni of the institution.", "deprecated": "Remove from infobox and note the number of alumni in the article body." }, "pushpin_map_caption": { "description": "Contextual information to display beneath the map, defaults to \"Location in <map name>\"", "type": "string", "label": "Map caption" }, "map_size": { "description": "Map width in pixels; do not include unit suffix (px).", "label": "Map width", "example": "285", "type": "number" }, "pushpin_label_position": { "description": "Determines position of displayed name relative to map pushpin, defaults to left or right, whichever is opposite the half the pin is in.", "label": "Map pin label position", "example": "top", "type": "line", "suggestedvalues": [ "left", "right", "top", "bottom", "none" ] }, "module": { "aliases": [ "embedded", "nrhp" ], "label": "NRHP or module", "description": "Module embedded in the infobox, such as [[Template:Infobox NRHP]]. Add only information not already covered elsewhere in the infobox, and consider placing NRHP infobox in campus section.", "example": "{{Infobox NRHP\n | embed = yes\n | nrhp_type = hd\n | architect = [[Gordon B. Kaufman]]\n | architecture = [[Spanish Colonial Revival]], [[Mediterranean Revival]]\n | added = September 20, 1984\n | area = {{convert|17.5|acre}}\n | refnum = 84000887\n}}", "type": "content" }, "sports_nickname": { "aliases": [ "athletics_nicknames", "sports_nicknames", "athletics_nickname", "nickname" ], "label": "Athletic nickname", "description": "Institution's athletic nickname or moniker. The 'nickname' alias is deprecated and should be replaced.", "type": "line" }, "colors": { "aliases": [ "colours" ], "label": "Official colo(u)rs", "description": "Official colors of the institution. Your choice of parameter name (color or colour) will appear in the table; use the one appropriate to the institution's location.", "example": "{{Color box|#20438f}}{{Color box|#fff}} Blue and white", "type": "content" } } }</templatedata> == Tracking categories == * {{Category link with count|Articles using infobox university}} * {{Category link with count|Pages using infobox university with the affiliations parameter}} * {{Category link with count|Pages using infobox university with the image name parameter}} * {{Category link with count|Pages using infobox university with the superintendent parameter}} <!-- * {{Category link with count|Pages using infobox university with the sports parameter}} --> * {{Category link with count|Pages using infobox university with the nickname alias}} * {{Category link with count|Pages using infobox university with unknown parameters}} * {{Category link with count|Pages using infobox university with conflicting parameters}} {{Organization infoboxes}}<includeonly> {{Sandbox other|| <!--Eponymous categories:--> [[Category:Universities and colleges infobox templates| ]] <!--Other categories:--> [[Category:Organization infobox templates|University]] [[Category:Templates that add a tracking category]] [[Category:Templates with coordinates fields]] [[Category:WikiProject Higher education templates]] }}</includeonly> 187a81d3fb282b737be8683a46eb12101230aeaf Template:Infobox UK place/styles.css 10 1409 2744 2023-07-15T18:49:14Z w>Keith D 0 Add .ib-uk-place .mergedrow .infobox-header, to fix problem of blank section when using embed sanitized-css text/css /* {{pp|small=y}} */ .ib-uk-place { border-collapse: collapse; } .ib-uk-place .infobox-label { width: 40%; } .ib-uk-place .infobox-header { text-align: left; } .ib-uk-place .infobox-above { font-size: 1.25em; } .ib-uk-place-other-names { font-size: 78%; } .ib-uk-place .infobox-subheader { background-color: #cddeff; font-weight: bold; } .ib-uk-place .infobox-below { border-top: 1px solid #aaa; padding-top: 3px; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-uk-place td, .ib-uk-place th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-uk-place .mergedtoprow .infobox-label, .ib-uk-place .mergedtoprow .infobox-data, .ib-uk-place .mergedtoprow .infobox-full-data { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.2em 0.6em; } .ib-uk-place .mergedrow .infobox-data, .ib-uk-place .mergedrow .infobox-header, .ib-uk-place .mergedrow .infobox-label { border: 0; padding: 0 0.6em 0.2em 0.6em; } .ib-uk-place .mergedbottomrow .infobox-data, .ib-uk-place .mergedbottomrow .infobox-full-data, .ib-uk-place .mergedbottomrow .infobox-label { border-top: 0; border-bottom: 1px solid #a2a9b1; padding: 0 0.6em 0.4em 0.6em; } caa4cf885fb52780f6945278c00d26c7be5f072c Template:Country data United Kingdom 10 1468 2803 2023-07-15T21:20:28Z w>Skjoldbro 0 navy link wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = United Kingdom | flag alias = Flag of the United Kingdom.svg | flag alias-1707 = Naval ensign of Great Britain (1707–1800).svg | flag alias-air force = Ensign of the Royal Air Force.svg | flag alias-army = Flag of the British Army.svg | flag alias-civil = Civil Ensign of the United Kingdom.svg | flag alias-civil-air = Civil Air Ensign of the United Kingdom.svg | flag alias-coast guard = Flag of Her Majesty's Coastguard.svg | flag alias-consulate = UK-Consular.svg | flag alias-embassy = British Ambassador Ensign.svg | flag alias-government = Government Ensign of the United Kingdom.svg | flag alias-marines = Flag of the Royal Marines.svg | flag alias-military = Flag of the United Kingdom (3-5).svg | flag alias-naval = Naval Ensign of the United Kingdom.svg | flag alias-GS = Government Service Ensign.svg | flag alias-merchant = Civil Ensign of the United Kingdom.svg | flag alias-RFA = British-Royal-Fleet-Auxiliary-Ensign.svg | flag alias-RMAS = British Royal Maritime Auxiliary Ensign.svg | flag alias-RNLI = Flag of the Royal National Lifeboat Institution.svg | flag alias-naval-1707 = Naval ensign of Great Britain (1707–1800).svg | flag alias-naval-GS = Government Service Ensign.svg | flag alias-naval-merchant = Civil Ensign of the United Kingdom.svg | flag alias-naval-RFA = British-Royal-Fleet-Auxiliary-Ensign.svg | flag alias-naval-RMAS = British Royal Maritime Auxiliary Ensign.svg | flag alias-naval-RNLI = Flag of the Royal National Lifeboat Institution.svg | flag alias-navy = Naval Ensign of the United Kingdom.svg | link alias-air force = Royal Air Force | link alias-army = British Army | link alias-coast guard = His Majesty's Coastguard | link alias-marines = Royal Marines | link alias-military = British Armed Forces | link alias-navy = Royal Navy | link alias-naval = {{#switch:{{{variant|}}} | merchant = Merchant Navy (United Kingdom){{!}}Merchant Navy | reserve = Royal Naval Reserve | RFA = Royal Fleet Auxiliary | RMAS = Royal Maritime Auxiliary Service | RNLI = Royal National Lifeboat Institution | naval-merchant = Merchant Navy (United Kingdom){{!}}Merchant Navy | naval-reserve = Royal Naval Reserve | naval-RFA = Royal Fleet Auxiliary | naval-RMAS = Royal Maritime Auxiliary Service | naval-RNLI = Royal National Lifeboat Institution | #default = Royal Navy }} | size = {{{size|}}} | name = {{#ifeq:{{{name|}}}|Britain|United Kingdom|{{{name|}}}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = civil | var2 = government | var3 = 1707 | var4 = civil-air | var5 = embassy | var6 = consulate | var7 = GS | var8 = merchant | var9 = RFA | var10 = RMAS | var11 = RNLI | var12 = naval-1707 | var13 = naval-GS | var14 = naval-merchant | var15 = naval-RFA | var16 = naval-RMAS | var17 = naval-RNLI | redir1 = UK | redir2 = U.K. | redir3 = the United Kingdom | related1 = Great Britain | related2 = London | related3 = Kingdom of Great Britain | related4 = British Empire | related5 = United Kingdom of Great Britain and Ireland | related6 = Kingdom of England | related7 = Kingdom of Scotland </noinclude> }} f35f7e64c499db65b9894d7fb917c4c07d791aa4 Template:Navbox/doc 10 1298 2633 2023-07-16T13:47:36Z w>Cedar101 0 /* Usage */ syntaxhighlight wikitext text/x-wiki {{for|vertically-aligned navigation|Template:Sidebar}} {{documentation subpage}} {{high-use|all-pages=y}} {{Template display|nomobile}} {{Lua|Module:Navbox}} {{Navbox suite}} {{Lua sidebar}} This template allows a [[Wikipedia:Navigation template|navigational template]] to be set up relatively quickly by supplying it with one or more lists of links. It comes equipped with default styles that should work for most navigational templates. Changing the default styles is possible, but not recommended. Using this template, or one of its "Navbox suite" sister templates, is highly recommended for standardization of navigational templates, and for ease of use. {{Navbox visibility}} == Usage == Please remove the parameters that are left blank. <syntaxhighlight lang="wikitext" style="overflow: auto;">{{Navbox | name = {{subst:PAGENAME}}{{subst:void|Don't change anything on this line. It will change itself when you save.}} | title = | listclass = hlist | state = {{{state|}}} | above = | image = | group1 = | list1 = | group2 = | list2 = | group3 = | list3 = <!-- ... --> | below = }} </syntaxhighlight> == Parameter list == {{{{PAGENAMETDOC}} | name = Navbox/doc | state = uncollapsed | title = {{{title}}} | above = {{{above}}} | image = {{{image}}} | group1 = {{{group1}}} | list1 = {{{list1}}} | group2 = {{{group2}}} | list2 = {{{list2}}} | group3 = {{{group3}}} | list3 = {{{list3}}} | group4 = {{{group4}}} | list4 = {{{list4}}} | below = {{{below}}} <br /> See alternate navbox formats under: [[#Layout of table|''Layout of table'']] }} The navbox uses lowercase parameter names, as shown in the box (''above''). The required ''name'' and ''title'' will create a one-line box if other parameters are omitted. Notice "group1" (etc.) is optional, as are sections named "above/below". {{clear}} The basic and most common parameters are as follows (see [[#Parameter descriptions|below]] for the full list): : <code>name</code> – the name (Wikipedia location) of the template. : <code>title</code> – text in the title bar, such as: <nowiki>[[Widget stuff]]</nowiki>. : <code>listclass</code> – a CSS class for the list cells, usually <code>hlist</code> for horizontal lists. Alternatively, use bodyclass for the whole box. : <code>state</code> – controls when a navbox is expanded or collapsed. : <code>titlestyle</code> – a CSS style for the title-bar, such as: <code>background: gray;</code> : <code>groupstyle</code> – a CSS style for the group-cells, such as: <code>background: #eee;</code> : <code>above</code> – text to appear above the group/list section (could be a list of overall wikilinks). : <code>image</code> – an optional right-side image, coded as the whole image, such as: <code><nowiki>[[File:</nowiki><var>XX</var><nowiki>.jpg|80px|link=|alt=]]</nowiki></code> :: Note that most of such images don't comply with [[MOS:DECOR]] and should be removed at sight. : <code>imageleft</code> – an optional left-side image (code the same as the "image" parameter). : <code>group<sub>n</sub></code> – the left-side text before list-n (if group-n omitted, list-n extends to the left edge of the box, and defaults to <code>text-align:center</code> styling). : <code>list<sub>n</sub></code> – text listing wikilinks using a [[Help:List|wikilist]] format. : <code>below</code> – optional text to appear below the group/list section. == Parameter descriptions == The following is a complete list of parameters for using {{tl|Navbox}}. In most cases, the only required parameters are <code>name</code>, <code>title</code>, and <code>list1</code>, though [[Template:Navbox/doc#Child navboxes|child navboxes]] do not even require those to be set. {{tl|Navbox}} shares numerous common parameter names with its sister templates, {{tl|Navbox with columns}} and {{tl|Navbox with collapsible groups}}, for consistency and ease of use. Parameters marked with an asterisk (*) are common to all three master templates. === Setup parameters === ; ''name''* : The name of the template, which is needed for the "V&nbsp;• T&nbsp;• E" ("View&nbsp;• Talk&nbsp;• Edit") links to work properly on all pages where the template is used. You can enter <code><nowiki>{{subst:PAGENAME}}</nowiki></code> for this value as a shortcut. The name parameter is only mandatory if a <code>title</code> is specified, and the <code>border</code> parameter is not set, and the <code>navbar</code> parameter is not used to disable the navbar. ; ''state''* <span style="font-weight:normal;">[<code>autocollapse, collapsed, expanded, plain, off</code>]</span> :* Defaults to <code>autocollapse</code>. A navbox with <code>autocollapse</code> will start out collapsed if there are two or more collapsible elements on the same page. Otherwise, the navbox will be expanded. For the technically minded, see [[MediaWiki:Common.js]] (search for "autocollapse"). :* If set to <code>collapsed</code>, the navbox will always start out in a collapsed state. :* If set to <code>expanded</code>, the navbox will always start out in an expanded state. :* If set to <code>plain</code>, the navbox will always be expanded with no [hide] link on the right, and the title will remain centered (by using padding to offset the <small>V&nbsp;• T&nbsp;• E</small> links). :* If set to <code>off</code>, the navbox will always be expanded with no [hide] link on the right, but no padding will be used to keep the title centered. This is for advanced use only; the "plain" option should suffice for most applications where the [show]/[hide] button needs to be hidden. : To show the box when standalone (non-included) but then auto-hide contents when in an article, put "expanded" inside {{tag|noinclude|p}} tags. This setting will force the box to be visible when standalone (even when followed by other boxes), displaying "[hide]", but then it will auto-collapse the box when stacked inside an article: :: <code><nowiki>| state =&nbsp;</nowiki></code>{{tag|noinclude|content=expanded}} :Often times, editors will want a default initial state for a navbox, which may be overridden in an article. Here is the trick to do this: :* In your intermediate template, create a parameter also named "state" as a pass-through like this: <pre><nowiki>| state = {{{state<includeonly>|your_desired_initial_state</includeonly>}}}</nowiki></pre> :* The {{tag|includeonly|o}}<code>|</code> will make the template expanded when viewing the template page by itself. :** Example 1: {{tl|Peso}} with ''autocollapse'' as the default initial state. [[Catalan peseta]] transcludes it and has only one navbox; thus, the peso navbox shows. [[Chilean peso]] has more than two navboxes; thus, the peso navbox collapses. :** Example 2: {{tl|Historical currencies of Hungary}} with ''expanded'' as the default initial state, as such: <pre>| state = {{{state<includeonly>|expanded</includeonly>}}}</pre> All transcluding articles show the content by default, unless there is a hypothetical article that specifies <code><nowiki>{{templatename|state=collapsed}}</nowiki></code> when transcluding. :** Example 3: {{tl|Tourism}} with ''collapsed'' as the default initial state, as such: <pre>| state = {{{state<includeonly>|collapsed</includeonly>}}}</pre> All transcluding articles will show the template as collapsed by default, but the template will still be uncollapsed when displayed on its own page. :* The template {{tl|Collapsible option}} explains how to use the <code>state</code> parameter. It can be added to a {{tag|noinclude|p}} section after the template definition or to the instructions on the {{tl|documentation subpage}}. ; ''navbar''* : If set to <code>plain</code>, the <span style="font-size: 88%;">V&nbsp;• T&nbsp;• E</span> links on the left side of the titlebar will not be displayed, and padding will be automatically used to keep the title centered. Use <code>off</code> to remove the <span style="font-size: 88%;">V&nbsp;• T&nbsp;• E</span> links, but not apply padding (this is for advanced use only; the "plain" option should suffice for most applications where a navbar is not desired). It is highly recommended that one not hide the navbar, in order to make it easier for users to edit the template, and to keep a standard style across pages. ; ''border''* : ''See later section on [[#Child navboxes|using navboxes within one another]] for examples and a more complete description.'' If set to <code>child</code> or <code>subgroup</code>, then the navbox can be used as a borderless child that fits snugly in another navbox. The border is hidden and there is no padding on the sides of the table, so it fits into the ''list'' area of its parent navbox. If set to <code>none</code>, then the border is hidden and padding is removed, and the navbox may be used as a child of another container (do not use the <code>none</code> option inside of another navbox; similarly, only use the <code>child</code>/<code>subgroup</code> option inside of another navbox). If set to anything else (default), then a regular navbox is displayed with a 1px border. An alternate way to specify the border to be a subgroup style is like this (i.e. use the first unnamed parameter instead of the named ''border'' parameter): :<pre>{{Navbox|child|...}}</pre> === Cells === ; ''title''* : Text that appears centered in the top row of the table. It is usually the template's topic, i.e. a succinct description of the body contents. This should be a single line, but if a second line is needed, use <code><nowiki>{{-}}</nowiki></code> to ensure proper centering. This parameter is technically not mandatory, but using {{tl|Navbox}} is rather pointless without a title. ; ''above''* : A full-width cell displayed between the titlebar and first group/list, i.e. ''above'' the template's body (groups, lists and image). In a template without an image, ''above'' behaves in the same way as the ''list1'' parameter without the ''group1'' parameter. ; ''group<sub>n</sub>''* : (i.e. ''group1'', ''group2'', etc.) If specified, text appears in a header cell displayed to the left of ''list<sub>n</sub>''. If omitted, ''list<sub>n</sub>'' uses the full width of the table. ; ''list<sub>n</sub>''* : (i.e. ''list1'', ''list2'', etc.) The body of the template, usually a list of links. Format is inline, although the text can be entered on separate lines if the entire list is enclosed within <code><nowiki><div> </div></nowiki></code>. At least one ''list'' parameter is required; each additional ''list'' is displayed in a separate row of the table. Each ''list<sub>n</sub>'' may be preceded by a corresponding ''group<sub>n</sub>'' parameter, if provided (see below). :Entries should be separated using a [[newline]] and an [[asterisk]] (*). If instead two asterisks are used, it provides [[Nesting (computing)|nesting]] within the previous entry by enclosing the entry with brackets. Increasing the number of asterisks used increases the number of brackets around entries. ; ''image''* : An image to be displayed in a cell below the title and to the right of the body (the groups/lists). For the image to display properly, the ''list1'' parameter must be specified. The ''image'' parameter accepts standard wikicode for displaying an image, ''e.g.'': <pre>[[File:</nowiki><var>XX</var><nowiki>.jpg|80px|link=|alt=]]</pre> nb: including "|right" will produce the usual left margin to provide separation from the list items and [[Zebra striping (computer graphics)|zebra striping]]. :Note that most of such images don't comply with [[MOS:DECOR]] and should be removed at sight. A rare example of a correct usage would be [[special:permalink/995622594|this one]]: a map shows (in green) the location of a region within the state of Kazakhstan, and this is consistently implemented for [[:category:Kazakhstan region templates|all state's regions]]. ; ''imageleft''* : An image to be displayed in a cell below the title and to the left of the body (lists). For the image to display properly, the ''list1'' parameter must be specified and no groups can be specified. It accepts the same sort of parameter that ''image'' accepts. ; ''below''* : A full-width cell displayed ''below'' the template's body (groups, lists and image). In a template without an image, ''below'' behaves in the same way as the template's final ''list<sub>n</sub>'' parameter without a ''group<sub>n</sub>'' parameter. For an example of the ''below'' parameter in use, see {{oldid|Main Page|352612160|this}} version of {{tl|Lists of the provinces and territories of Canada}}. {{tl|icon}} is often used for non-article links, for example <code><nowiki>{{icon|category}} [[:Category:</nowiki>''name''<nowiki>|Category]]</nowiki></code>. === Style parameters === Styles are generally advised against, to maintain consistency among templates and pages in Wikipedia; but the option to modify styles is given. ; ''bodystyle''* : Specifies [[Cascading Style Sheets|CSS]] styles to apply to the template body. This option should be used sparingly as it can lead to visual inconsistencies. Examples: :* <code>bodystyle = background: #''nnnnnn'';</code> :* <code>bodystyle = width: ''N''&nbsp;[em/%/px or width: auto];</code> :* <code>bodystyle = float: [''left/right/none''];</code> :* <code>bodystyle = clear: [''right/left/both/none''];</code> ; ''basestyle''* : CSS styles to apply to the ''title'', ''above'', ''below'', and ''group'' cells all at once. The styles are not applied to ''list'' cells. This is convenient for easily changing the basic color of the navbox without having to repeat the style specifications for the different parts of the navbox. Example: <code>basestyle = background: lightskyblue;</code> ; ''titlestyle''* : [[Cascading Style Sheets|CSS]] styles to apply to ''title'', most often the titlebar's background color: :* <code>titlestyle = background: ''#nnnnnn'';</code> :* <code>titlestyle = background: ''name'';</code> :* <code>titlestyle = background: none;</code> — for no background color ; ''groupstyle''* : CSS styles to apply to the ''groupN'' cells. This option overrides any styles that are applied to the entire table. Examples: :* <code>groupstyle = background: #''nnnnnn'';</code> :* <code>groupstyle = text-align: [''left/center/right''];</code> :* <code>groupstyle = vertical-align: [''top/middle/bottom''];</code> ; ''group<sub>n</sub>style''* : CSS styles to apply to a specific group, in addition to any styles specified by the ''groupstyle'' parameter. This parameter should only be used when absolutely necessary in order to maintain standardization and simplicity. Example: <code>group3style = background: red; color: white;</code> ; ''groupwidth'' : A number and unit specifying a uniform width for the group cells, in cases where little content in the list cells may cause group cells to be too wide. No default. However, may be overridden by the ''group(n)style'' parameter. Example: <code>groupwidth = 9em</code> ; ''liststyle''* : CSS styles to apply to all lists. Overruled by the ''oddstyle'' and ''evenstyle'' parameters (if specified) hereafter. When using backgound colors in the navbox, see the [[#Intricacies|note hereafter]]. ; ''list<sub>n</sub>style''* : CSS styles to apply to a specific list, in addition to any styles specified by the ''liststyle'' parameter. This parameter should only be used when absolutely necessary in order to maintain standardization and simplicity. Example: <code>list5style = background: #ddddff;</code> ; ''listpadding''* : A number and unit specifying the padding in each ''list'' cell. The ''list'' cells come equipped with a default padding of 0.25em on the left and right, and 0 on the top and bottom. Due to complex technical reasons, simply setting "liststyle = padding: 0.5em;" (or any other padding setting) will not work. Examples: :* <code>listpadding = 0.5em 0;</code> (sets 0.5em padding for the top/bottom, and 0 padding for the left/right.) :* <code>listpadding = 0;</code> (removes all list padding.) ; ''oddstyle'' ; ''evenstyle'' : Applies to odd/even list numbers. Overrules styles defined by ''liststyle''. The default behavior is to add striped colors (white and gray) to odd/even rows, respectively, in order to improve readability. These should not be changed except in extraordinary circumstances. ; ''evenodd'' <span style="font-weight: normal;"><code>[swap, even, odd, off]</code></span> : If set to <code>swap</code>, then the automatic striping of even and odd rows is reversed. Normally, even rows get a light gray background for striping; when this parameter is used, the odd rows receive the gray striping instead of the even rows. Setting to <code>even</code> or <code>odd</code> sets all rows to have that striping color. Setting to <code>off</code> disables automatic row striping. ; ''abovestyle''* ; ''belowstyle''* : CSS styles to apply to the top cell (specified via the ''above'' parameter) and bottom cell (specified via the ''below'' parameter). Typically used to set background color or text alignment: :* <code>abovestyle = background: #''nnnnnn'';</code> :* <code>abovestyle = text-align: [''left/center/right''];</code> :* <code>belowstyle = background: #''nnnnnn'';</code> :* <code>belowstyle = text-align: [''left/center/right''];</code> ; ''imagestyle''* ; ''imageleftstyle''* : CSS styles to apply to the cells where the image/imageleft sits. These styles should only be used in exceptional circumstances, usually to fix width problems if the width of groups is set and the width of the image cell grows too large. Example: <code>imagestyle = width:5em;</code> ===== Default styles ===== The style settings listed here are those that editors using the navbox change most often. The other more complex style settings were left out of this list to keep it simple. Most styles are set in [[MediaWiki:Common.css]]. <syntaxhighlight lang="css"> bodystyle = background: #fdfdfd; width: 100%; vertical-align: middle; titlestyle = background: #ccccff; padding-left: 1em; padding-right: 1em; text-align: center; abovestyle = background: #ddddff; padding-left: 1em; padding-right: 1em; text-align: center; belowstyle = background: #ddddff; padding-left: 1em; padding-right: 1em; text-align: center; groupstyle = background: #ddddff; padding-left: 1em; padding-right: 1em; text-align: right; liststyle = background: transparent; text-align: left/center; oddstyle = background: transparent; evenstyle = background: #f7f7f7; </syntaxhighlight> Since ''liststyle'' and ''oddstyle'' are transparent, odd lists have the color of the ''bodystyle'', which defaults to #fdfdfd (white with a hint of gray). A list defaults to <code>text-align: left;</code> if it has a group, if not it defaults to <code>text-align: center;</code>. Since only ''bodystyle'' has a vertical-align all the others inherit its <code>vertical-align: middle;</code>. === Advanced parameters === ; ''bodyclass'' ; ''aboveclass'' ; ''groupclass'' ; ''listclass'' ; ''belowclass'' : This enables attaching a CSS class to group or list cells. The most common use for ''listclass'' is to give it the <code>hlist</code> class that will cause lists to render horizontally. All these parameters accept the <code>hlist</code> class, but if more than one parameter is used for <code>hlist</code>, use {{para|bodyclass|hlist}} instead. :{{tl|navbox}} automatically adds the class <code>nowraplinks</code> which can be overridden, for example with <code>{{para|listclass|wraplinks}}</code>. ; ''innerstyle'' : A very advanced parameter to be used ''only'' for advanced meta-templates employing the navbox. Internally, the navbox uses an outer table to draw the border, and then an inner table for everything else (title/above/groups/lists/below/images, etc.). The ''style''/''bodystyle'' parameter sets the style for the outer table, which the inner table inherits, but in advanced cases (meta-templates) it may be necessary to directly set the style for the inner table. This parameter provides access to that inner table so styles can be applied. Use at your own risk. ; ''nowrapitems'' : Setting <code>|nowrapitems=yes</code> applies nowrap to each line in a list item, and to any <code>above</code> or <code>below</code> item. ; ''orphan'' : Setting <code>|orphan=yes</code> in a child navbox fixes odd/even striping and removes [[:Category:Navbox orphans]]. ==== Microformats ==== ; ''bodyclass'' : This parameter is inserted into the "class" attribute for the navbox as a whole. ; ''titleclass'' : This parameter is inserted into the "class" attribute for the navbox's title caption. This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. To flag a navbox as containing [[hCard]] information about a person, for example, add the following parameter: <pre> | bodyclass = vcard </pre> ''and'' <pre> | titleclass = fn </pre> ''or'' (for example): <pre><nowiki> | title = The books of <span class="fn">[[Iain Banks]]</span> </nowiki></pre> ...and so forth. See [[Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia, and [[microformat]] for more information on microformats in general. == Layout of table == ===Without image, above and below=== Table generated by {{tl|Navbox}} '''without''' ''image'', ''above'' and ''below'' parameters (gray list background color added for illustration only): {{{{PAGENAMETDOC}} | name = Navbox/doc | state = uncollapsed | liststyle = background: silver; | title = {{{title}}} | group1 = {{{group1}}} | list1 = {{{list1}}} | group2 = {{{group2}}} | list2 = {{{list2}}} | list3 = {{{list3}}} ''without {{{group3}}}'' | group4 = {{{group4}}} | list4 = {{{list4}}} }} ===With image, above and below=== Table generated by {{tl|Navbox}} '''with''' ''image'', ''above'' and ''below'' parameters (gray list background color added for illustration only): {{{{PAGENAMETDOC}} | name = Navbox/doc | state = uncollapsed | liststyle = background: silver; | image = {{{image}}} | title = {{{title}}} | above = {{{above}}} | group1 = {{{group1}}} | list1 = {{{list1}}} | group2 = {{{group2}}} | list2 = {{{list2}}} | list3 = {{{list3}}} ''without {{{group3}}}'' | group4 = {{{group4}}} | list4 = {{{list4}}} | below = {{{below}}} }} ===With image and without groups=== Table generated by {{tl|Navbox}} '''with''' ''image'', ''imageleft'', ''lists'', and '''without''' ''groups'', ''above'', ''below'' (gray list background color added for illustration only): {{{{PAGENAMETDOC}} | name = Navbox/doc | state = uncollapsed | liststyle = background: silver; | image = {{{image}}} | imageleft = {{{imageleft}}} | title = {{{title}}} | list1 = {{{list1}}} | list2 = {{{list2}}} | list3 = {{{list3}}} | list4 = {{{list4}}} }} == Examples == <!-- Please do not encourage folks to use <div> within Navboxes as (unless handled carefully) they can negate liststyles/groupstyles/etc. settings. --> === No image === <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Navbox | name = Navbox/doc | title = [[MSC Malaysia]] | listclass = hlist | group1 = Centre | list1 = * [[Cyberjaya]] | group2 = Area | list2 = * [[Klang Valley]] | group3 = Major landmarks | list3 = * [[Petronas Twin Towers]] * [[Kuala Lumpur Tower]] * [[Kuala Lumpur Sentral]] * [[Technology Park Malaysia]] * [[Putrajaya]] * [[Cyberjaya]] * [[Kuala Lumpur International Airport]] | group4 = Infrastructure | list4 = * [[Express Rail Link]] * [[KL-KLIA Dedicated Expressway]] | group5 = Prime applications | list5 = * [[E-Government]] * [[MyKad]] }} </syntaxhighlight> {{{{PAGENAMETDOC}} | name = Navbox/doc | state = uncollapsed | title = [[MSC Malaysia]] | listclass = hlist | group1 = Centre | list1 = * [[Cyberjaya]] | group2 = Area | list2 = * [[Klang Valley]] | group3 = Major landmarks | list3 = * [[Petronas Twin Towers]] * [[Kuala Lumpur Tower]] * [[Kuala Lumpur Sentral]] * [[Technology Park Malaysia]] * [[Putrajaya]] * [[Cyberjaya]] * [[Kuala Lumpur International Airport]] | group4 = Infrastructure | list4 = * [[Express Rail Link]] * [[KL-KLIA Dedicated Expressway]] | group5 = Prime applications | list5 = * [[E-Government]] * [[MyKad]] }} == Child navboxes == {{Selfref|For additional examples, see the [[Template:Navbox/testcases|Navbox testcases page]].}} It is possible to place multiple navboxes within a single border by using "child" as the first parameter, or by setting the ''border'' parameter. The basic code for doing this is as follows (which adds a subgroup for the first group/list area): <pre style="overflow: auto;"> {{Navbox | name = {{subst:PAGENAME}} | title = Title | group1 = [optional] | list1 = {{Navbox|child ...child navbox parameters... }} ... }} </pre> === Subgroups example === This example shows two subgroups created using <code>child</code> as the first unnamed parameter. The striping is alternated automatically. To remove the striping altogether, you can set <code>liststyle = background:transparent;</code> in each of the navboxes. {{{{PAGENAMETDOC}} | name = Navbox/doc | state = uncollapsed | title = Multiple subgroup example | above = Above | below = Below | group1 = Group1 | list1 = List1 | group2 = Group2 | list2 = {{{{PAGENAMETDOC}}|child | group1 = Group2.1 | list1 = List1 | group2 = Group2.2 | list2 = List2 | group3 = Group2.3 | list3 = List3 }} | group3 = Group3 | list3 = List3 | group4 = Group4 | list4 = {{{{PAGENAMETDOC}}|child | group1 = Group4.1 | list1 = List1 | group2 = Group4.2 | list2 = List2 | group3 = Group4.3 | list3 = List3 }} }} === Multiple show/hides in a single container === {{main|Template:Navbox with collapsible groups}} The example below is generated using a regular navbox for the main container, then its list1, list2, and list3 parameters each contain another navbox, with <code>1 = child</code> set. The view (v), talk (t), edit (e) navbar links are hidden using <code>navbar = plain</code> for each of them, or could be suppressed by just leaving out the ''name'' parameter (child navboxes do not require the name parameter to be set, unlike regular navboxes). {{{{PAGENAMETDOC}} | name = Navbox/doc | title = [[French colonial empire|Former French overseas empire]] | state = uncollapsed | list1 = {{{{PAGENAMETDOC}}|child | navbar = plain | title = [[French colonial empire|Former French colonies]] in [[Africa]] and the [[Indian Ocean]] | listclass = hlist | group1 = [[Mahgreb]] | list1 = * [[French rule in Algeria|Algeria]] * [[French Morocco|Morocco]] <small>([[Arguin|Arguin Island]])</small> * [[History of Tunisia|Tunisia]] | group2 = [[French West Africa]] | list2 = * [[History of Côte d'Ivoire#French Period|Côte d'Ivoire]] * [[French Dahomey|Dahomey]] * [[French Sudan]] * [[French Guinea|Guinea]] * [[History of Mauritania#French colonization and post-colonial history|Mauritania]] * [[History of Niger#Colonization|Niger]] * [[History of Senegal|Senegal]] * [[French Upper Volta|Upper Volta]] * [[French Togoland]] * [[James Island (The Gambia)|James Island]] | group3 = [[French Equatorial Africa]] | list3 = * [[Colonial Chad|Chad]] * [[History of Gabon|Gabon]] * [[History of the Republic of the Congo|Middle Congo]] * [[Oubangui-Chari]] | group4 = [[Comoros]] | list4 = * [[Anjouan]] * [[Grande Comore]] * [[Mohéli]] * [[History of Djibouti#French Interest|French Somaliland (Djibouti)]] * [[History of Madagascar#French control|Madagascar]] * [[Mauritius|Ile de France]] * [[Seychelles]] }} | list2 = {{{{PAGENAMETDOC}}|child | navbar = plain | title = [[French colonial empire|Former French colonies]] in the [[Americas]] | listclass = hlist | list1 = * [[New France]]{{spaces|2}}<small>([[Acadia]], [[Louisiana (New France)|Louisiana]], [[Canada, New France|Canada]], [[Newfoundland (island)|Terre Neuve]]) 1655–1763 </small> | list2 = * [[Inini]] * [[Berbice]] * [[Saint-Domingue]] * <small>[[Haiti]]</small> * [[Tobago]] * [[History of the British Virgin Islands|Virgin Islands]] * [[France Antarctique]] * [[France Équinoxiale]] | below = [[French West India Company]] }} | list3 = {{{{PAGENAMETDOC}}|child | navbar = plain | title = [[French colonial empire|Former French colonies]] in [[Asia]] and [[Oceania]] | listclass = hlist | group1 = [[French India]] | list1 = * [[Chandernagor]] * [[Coromandel Coast]] * [[History of Chennai|Madras]] * [[Mahé, India|Mahé]] * [[History of Pondicherry|Pondichéry]] * [[Karaikal]] * [[Yanam (India)|Yanaon]] | group2 = [[French Indochina]] | list2 = * [[Colonial Cambodia|Cambodia]] * [[History of Laos to 1945#French Laos|Laos]] * [[French Indochina|Vietnam]] <small>([[Annam (French colony)|Annam]], [[Cochinchina]], [[Tonkin]])</small> | group3 = Other Asian | list3 = * [[Alawite State|Alaouites]] * [[Republic of Hatay|Alexandretta-Hatay]] * [[Sri Lanka|Ceylon]] * [[Kwangchowan]] | group4 = [[Oceania]] | list4 = * [[New Hebrides]] ** [[History of Vanuatu|Vanuatu]] | below = [[French East India Company]] }} }} == Relationship with other Navbox templates == This navbox template works in conjunction with two other templates: {{tl|Navbox with columns}} and {{tl|Navbox with collapsible groups}}. All three of these templates share common parameters for consistency and ease of use (such parameters are marked with an asterisk (*) in the [[#Parameter descriptions|parameter descriptions]] list hereinbefore). Most importantly, each template can be used as a child of one another (by using the {{para|border|child}} parameter, or by specifying the first unnamed parameter to be <code>child</code>. For example: <code><nowiki>{{Navbox|child ...}}</nowiki></code>, <code><nowiki>{{Navbox with columns|child ...}}</nowiki></code> or <code><nowiki>{{Navbox with collapsible groups|child ...}}</nowiki></code>.) == Technical details == * The {{navbar|1=:{{FULLPAGENAME}}|mini=on}} links are produced by [[Template:Navbar]]. If you have a question about them, it is probably best to ask at [[Template talk:Navbar]]. * The 2px wide border between groups and lists is drawn using the border-left property of the list cell. Thus, if you wish to change the background color of the template (for example <code>bodystyle = background:purple;</code>), then you'll need to make the border-left-color match the background color (i.e. <code>liststyle = border-left-color: purple;</code>). If you wish to have a border around each list cell, then the 2px border between the list cells and group cells will disappear; you'll have to come up with your own solution. * Adjacent navboxes have only a 1 pixel border between them. If you set the top or bottom margin of <code>style/bodystyle</code>, then this will not work. * The default margin-left and margin-right of the outer navbox table are set to "auto;". If you wish to use navbox as a float, you need to manually set the margin-left and margin-right values, because the auto margins interfere with the float option. For example, add the following code to use the navbox as a float: ** <code>bodystyle = width: 22em; float: right; margin-left: 1em; margin-right: 0;</code> === Copying to other projects or wikis === If you are trying to copy {{tlf|Navbox}} to your local wiki, there are several other things that must be installed or copied over as well: * The [[mw:Extension:Scribunto|Scribunto]] and [[:mw:Extension:TemplateStyles|TemplateStyles]] extensions must be installed. * [[Module:Navbox]] and its module and TemplateStyles dependencies, listed in the above two links * Optionally, the <code>Add support to mw-collapsible for autocollapse, innercollapse and outercollapse</code> script from [[MediaWiki:Common.js]] may be copied, if autocollapsing is desired. == TemplateData == {{TemplateDataHeader}} <templatedata> { "params": { "state": { "label": "State", "description": "Controls when a navbox is expanded or collapsed", "example": "autocollapse", "suggestedvalues": [ "autocollapse", "collapsed", "expanded", "plain", "off" ], "default": "autocollapse", "suggested": true }, "title": { "label": "Title", "description": "Text in the title bar; centered in the top row of the table. Usually the template's topic.", "example": "[[Widget stuff]]", "suggested": true }, "above": { "label": "Above", "description": "Full-width cell displayed between the titlebar and first group/list, i.e. above the template's body (groups, lists and image)", "type": "string", "suggested": true }, "image": { "label": "Image", "description": "Image to be displayed in a cell below the title and to the right of the body", "example": "[[File:XX.jpg | 80px | link= | alt= ]]", "type": "wiki-file-name", "suggested": true }, "group1": { "label": "Group 1", "description": "If specified, text appears in a header cell displayed to the left of list 1. If omitted, list 1 uses the full width of the table.", "suggested": true }, "list1": { "label": "List 1", "description": "Body of the template; usually a list of links. Format is inline. At least one list parameter is required; each additional list is displayed in a separate row of the table. Each listn may be preceded by a corresponding groupn parameter.\nEntries should be separated using a newline and an asterisk. If two asterisks are used, it provides nesting within the previous entry with brackets.", "required": true, "suggested": true }, "group2": { "suggested": true }, "list2": { "suggested": true }, "list3": { "suggested": true }, "group3": { "suggested": true }, "group4": {}, "list4": {}, "below": { "label": "Below", "description": "Full-width cell displayed below the template's body.", "suggested": true }, "imageleft": { "label": "Image left", "description": "Image to be displayed in a cell below the title and to the left of the body. For the image to display properly, list1 parameter must be specified and no groups can be specified.", "example": "[[File:XX.jpg | 80px | link= | alt= ]]", "type": "wiki-file-name" }, "name": { "label": "Name", "description": "The name of the template. Needed for \"View • Talk • Edit\" links to work properly.", "type": "string", "default": "{{subst:PAGENAME}}{{subst:void|Don't change anything on this line. It will change itself when you save.}}", "suggested": true }, "listclass": { "label": "List class", "description": "CSS class for the list cells, usually hlist for horizontal lists. Alternatively, use bodyclass for the whole box.", "example": "hlist", "type": "string" }, "navbar": { "label": "Navbar status", "example": "plain, off", "type": "string" }, "border": { "label": "Border status", "example": "child, subgroup, none", "type": "string" }, "bodystyle": {}, "basestyle": {}, "titlestyle": {}, "groupstyle": {}, "group1style": {}, "groupwidth": {}, "liststyle": {}, "list1style": {}, "listpadding": {}, "oddstyle": {}, "evenstyle": {}, "evenodd": { "suggestedvalues": [ "swap", "even", "odd", "off" ] }, "abovestyle": {}, "belowstyle": {}, "imagestyle": {}, "imageleftstyle": {} }, "description": "Creates a navigational box for links to other pages. \nDoes not display in mobile.", "paramOrder": [ "name", "title", "group1", "list1", "listclass", "state", "above", "below", "image", "group2", "list2", "group3", "list3", "group4", "list4", "imageleft", "navbar", "border", "bodystyle", "basestyle", "titlestyle", "groupstyle", "liststyle", "group1style", "list1style", "groupwidth", "listpadding", "oddstyle", "evenstyle", "evenodd", "abovestyle", "belowstyle", "imagestyle", "imageleftstyle" ] } </templatedata> == See also == * {{tl|Navboxes}} — groups several navigation boxes together. * {{tl|Nobold}} — To display text at normal font-weight within a context where the default font-weight is bold, e.g. header cells in tables. * {{tl|Sidebar}} — Vertically-aligned navigation templates. * {{tl|Navbox documentation}} — Shows the standard documentation using {{tl|Documentation}}. * [[Template:Navbox/testcases]] — For additional examples of template code. * [[Wikipedia:Line-break handling]] — The how-to guide about how to handle word wraps (line breaks) on Wikipedia, such as the wrapping of the link lists used in navboxes. * [[Wikipedia:Template documentation]] — Guideline to creating the accompanying documentation * {{tl|Nowrap begin}}, {{tl|·}} and {{tl|•}} are '''deprecated''' in favor of the <code>hlist</code> class for formatting lists. See [[Template:Flatlist#Technical details|Flatlist]] for a technical explanation of how <code>hlist</code> works. === Tracking categories === * {{clc|Navbox orphans}} * {{clc|Navigational boxes without horizontal lists}} * {{clc|Navboxes using background colours}} * {{clc|Potentially illegible navboxes}} * {{clc|Navboxes using borders}} {{Navigation templates}} <includeonly>{{sandbox other|| <!-- Add categories below this line, and interwikis at Wikidata --> [[Category:Navbox meta-templates| ]] [[Category:Templates generating microformats]] [[Category:Templates that are not mobile friendly]] [[Category:Collapse templates]] }}</includeonly> 6da379ed21bc2d008a457bdb77169f27daf58526 Module:Authority control/documentation 828 1078 2354 2023-07-18T09:54:01Z wikipedia>MSGJ 0 use string.format to improve clarity of messages Scribunto text/plain require('strict') local p = {} local configfile = 'Module:Authority control/config' -- default configuation module local arg = mw.getCurrentFrame().args.config if arg and arg~='' then configfile = 'Module:Authority control/config/' .. arg end local config if mw.title.new(configfile).exists then config = mw.loadData(configfile) else return error('Invalid configuration file',0) end local title = mw.title.getCurrentTitle() local namespace = title.namespace local testcases = title.subpageText == config.i18n.testcases local makelink = require(config.i18n.ACmodule).makelink local lang = mw.getContentLanguage() local function needsAttention(sortkey) return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]' end local function addCat(cat,sortkey) if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then local redlinkcat = '' if testcases == false and mw.title.new(cat, 14).exists == false then redlinkcat = needsAttention('N') end if sortkey then cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]' else cat = '[[' .. config.i18n.category .. ':'..cat..']]' end cat = cat .. redlinkcat return cat else return '' end end -- Creates a human-readable standalone wikitable version of conf, and tracking categories with page counts, for use in the documentation function p.docConfTable(frame) local function checkcat(category,label) local ret='[[:Category:'..category..'|'..label..']]' --if mw.title.new(category,14).exists == false then --ret = ret..' <span class="plainlinks" style="font-size:85%;">&#91;['..tostring(mw.uri.fullUrl('Category:'..category,'action=edit&preload=Template:Authority_control/preload'))..' create]&#93;</span>' --end return ret end local doc = '' local a, P, f = 0, 0, 0 --cumulative sums local count = frame.args.count or false local columns = 3 + (count and 1 or 0) local row = function(conf) local category = conf.category or conf[1] local articleCat = string.format(config.i18n.cat,category) local articleCount = mw.site.stats.pagesInCategory(articleCat,config.i18n.pages) local errorCat = conf.errorcat or string.format( config.i18n.cat, config.i18n.faulty .. ' ' .. category ) local errorCount = mw.site.stats.pagesInCategory(errorCat,config.i18n.pages) P = P + 1 --property count a = a + articleCount f = f + errorCount local getstatement = function(id,propid,qualid) local statement = mw.wikibase.getBestStatements('P' .. id, 'P' .. propid) local value if statement and statement[1] and statement[1].mainsnak.datavalue.value.id then value = statement[1].mainsnak.datavalue.value.id local qual if qualid and statement[1].qualifiers['P' .. qualid][1].datavalue.value then qual = statement[1].qualifiers['P' .. qualid][1].datavalue.value end return value, qual end end local _, example = getstatement(conf.property, 1855, conf.property) if not example then example = '' end example = frame:expandTemplate{title = "Hlist", args = {'\n' .. makelink(conf,{id=example},1)}} .. '\n' local getname = function(nameprop) local name = getstatement(conf.property,nameprop) if name then return frame:expandTemplate{title='Wikidata fallback link',args={name}} end end local name = getname(1629) or getname(10726) or '' local out = '' if conf.remark then out = out .. '<tr><td rowspan=2>' else out = out .. '<tr><td>' end out = out .. name .. '</td>' .. '<td style="text-align: center">' .. config.sections[conf.section].name .. '</td>' .. '<td data-sort-value=' .. conf.property .. '>' .. frame:expandTemplate{title='Wikidata property link',args={id='f',conf.property}} .. '</td>' .. '<td>' .. example .. '</td>' if count then out = out .. '<td style="text-align: right;">'..checkcat(articleCat,lang:formatNum(articleCount))..' ('..checkcat(errorCat,errorCount)..')</td>' end out = out .. '</tr>' if conf.remark then out = out .. "<tr class='expand-child'><td colspan=" .. columns .. ">'''Remarks:''' " .. frame:preprocess{text = conf.remark} .. "</td></tr>" end return out end local doc = '<table class="wikitable sortable">' .. '<tr><th>' .. lang:ucfirst(config.i18n.identifier) .. '</th>' .. '<th>' .. config.i18n.Section .. '</th>' .. '<th data-sort-type=number>' .. config.i18n.WDproperty .. '</th>' .. '<th>' .. config.i18n.Appears_as .. '</th>' if count then doc = doc .. '<th>[[:' .. config.i18n.category .. ':' .. config.i18n.maincat .. '|' .. config.i18n.Articles .. ']] ' .. '([[:' .. config.i18n.category .. ':' .. config.i18n.faultcat .. '|' .. config.i18n.Faults .. ']])</th>' end doc = doc .. '</tr>' for _, conf in pairs(config.config) do doc = doc .. row(conf) end if count then doc = doc .. '<tr><th style="text-align: right;" colspan=' .. columns-1 .. '>' .. config.i18n.Totals .. '</th>' .. '<th style="text-align: right;">' .. P .. '</th>' .. '<th style="text-align: right;">' .. lang:formatNum(a) .. ' ([[:' .. config.i18n.category .. ':' .. config.i18n.allfaultycat .. '|' .. f .. ']])</th></tr>' end doc = doc .. '</table>' return doc end function p.errorTable(frame) local Table = '<table class="wikitable sortable">'.. '<tr><th>' .. config.i18n.WDproperty .. '</th>'.. '<th>' .. lang:ucfirst(config.i18n.faulty) .. ' ' .. config.i18n.identifiers .. '</th>'.. '<th>[[:' .. config.i18n.category .. ':' .. config.i18n.faultcat .. '|' .. config.i18n.Tracking_category .. ']]</th></tr>' local f, P = 0, 0, 0 --cumulative sums for _, conf in pairs(config.config) do local category = conf.errorcat or string.format( config.i18n.cat, config.i18n.faulty .. ' ' .. (conf.category or conf[1]) ) local count = mw.site.stats.pagesInCategory(category,'pages') if count > 0 then P = P + 1 f = f + count Table = Table..'<tr><td>'..frame:expandTemplate{ title = config.i18n.linktemplate, args = { id = 'f', conf.property } } .. '</td>'.. '<td style="text-align:center;">'..tostring(count)..'</td>'.. '<td>[[:' .. config.i18n.category .. ':'..category..']]</td></tr>' end end Table = Table..'<tr><th>' .. config.i18n.Totals .. '</th>'.. '<th style="text-align:center;">' .. '[[:' .. config.i18n.category .. ':' .. config.i18n.allfaultycat .. '|' .. tostring(f) .. ']]</th>'.. '<th style="text-align:center;">'..tostring(P)..'</th></tr></table>' return Table end function p.whitelisttable(frame) local Table = '<table class="wikitable sortable">'.. '<tr><th>' .. config.i18n.Code .. '</th>'.. '<th>' .. config.i18n.Topic .. '</th>'.. '<th>' .. lang:ucfirst(config.i18n.identifiers) .. '</th></tr>' for code, wlist in pairs(config.whitelists) do Table = Table .. '<tr><th>' .. code .. '</th>'.. '<td>[[' .. mw.wikibase.getSitelink('Q' .. wlist.topic) .. ']]</td>' local plist = {} for _, property in pairs(wlist.properties) do table.insert(plist,frame:expandTemplate{title='Wikidata property link', args={'P' .. property}}) end Table = Table .. '<td>' .. table.concat(plist,', ') .. '</td></tr>' end Table = Table .. '</table>' return Table end function p.sectiontable(frame) local Table = '<table class="wikitable sortable">'.. '<tr><th>' .. config.i18n.Section .. '</th>' .. '<th>' .. config.i18n.Description .. '</th>'.. '<th>' .. lang:ucfirst(config.i18n.identifiers) .. '</th></tr>' for number,section in ipairs(config.sections) do Table = Table .. '<tr><th>' .. number .. '</th>' .. '<td>' .. section.name .. '</td>' local plist = {} for _,id in pairs(config.config) do if id.section == number then table.insert(plist,frame:expandTemplate{title=config.i18n.linktemplate, args={'P' .. id.property}}) end end Table = Table .. '<td>' .. table.concat(plist,', ') .. '</td></tr>' end Table = Table .. '</table>' return Table end -- Main/External Call for Pages with authority control identifiers function p.autoDetect(frame) local function whichTOC(frame) -- standardize TOC behavior via {{CatAutoTOC}} return frame:expandTemplate{ title = 'CatAutoTOC', args = { align = 'center' } } end local function wpa(frame,id,faulty) for _,conf in pairs(config.config) do if conf.category == id or conf[1] == id then local getname = function(nameprop) local name = mw.wikibase.getBestStatements('P'..conf.property,nameprop) if name and name[1] and name[1].mainsnak.datavalue.value.id then return frame:expandTemplate{title='Wikidata fallback link',args={name[1].mainsnak.datavalue.value.id}} end end local name = getname('P1629') or getname('P10726') or '' local outString = frame:expandTemplate{ title = 'Category explanation', args = {'articles with '..name..' identifiers.'..' Please do not add [[Wikipedia:Categorization#Subcategorization|subcategories]].\nPages in this category should only be added by [[Module:Authority control]].'}} .. frame:expandTemplate{ title = 'Cat more', args = {'Wikipedia:Authority control', ':d:Property:P'..conf.property} } .. frame:expandTemplate{ title = 'Possibly empty category' } .. frame:expandTemplate{ title = 'Wikipedia category', args = { hidden = 'yes', tracking = 'yes' } } .. frame:expandTemplate{ title = 'Polluted category' } .. whichTOC( frame ) if faulty then outString = outString .. addCat(config.i18n.faultcat,id) .. addCat(string.format(config.i18n.cat, id)) else outString = outString .. addCat(config.i18n.maincat,id) end return outString end end end if namespace == 14 then --cat space local wpfaultyID = mw.ustring.match(title.text, 'Articles with faulty (.+) identifiers') local wpID = mw.ustring.match(title.text, 'Articles with (.+) identifiers') if wpfaultyID then return wpa(frame,wpfaultyID,true)-- must be before wpID check, in case they both match elseif wpID then return wpa(frame,wpID,false) else return needsAttention('U') end end end function p.idproposal(frame) local property = frame.args.property or '' local out = '<ul><li>Wikidata property: ' .. frame:expandTemplate{title='Wikidata property link', args={'P' .. property}} .. '</li>' out = out .. '<li>Section: ' local section = frame.args.section or '' if section~='' then out = out .. config.sections[section].name .. ' (' .. section .. ')' else out = out .. 'Not specified' end out = out .. '</li><li>Link: ' local link = frame.args.link or '' if link=='' then link = mw.wikibase.getBestStatements('P'..property,'P1630') or '' link = link[1].mainsnak.datavalue.value end if link~='' then out = out .. '<code>' .. link .. '</code>' else out = out .. 'Not specified' end out = out .. '</li><li>Label: ' local label = frame.args.label or '' if label~='' then out = out .. label else out = out .. 'Not specified' end out = out .. '</li><li>Example: ' local example = mw.wikibase.getBestStatements('P'..property,'P1855') or '' if example then example = example[1].qualifiers['P'..property][1].datavalue.value example = frame:expandTemplate{title = "Hlist", args = {'\n' .. makelink({[1]='',link=link,label=label},{id=example},1)}} .. '\n' out = out .. example else out = out .. 'Not available' end out = out .. '</li></ul>' return out end return p 0cc6ccce20ffd440b927baba266e176d5980bc71 Module:Authority control 828 1046 2290 2023-07-18T10:01:56Z wikipedia>MSGJ 0 don't track empty state parameter as error, tweak to messages Scribunto text/plain require('strict') local p = {} local configfile = 'Module:Authority control/config' -- default configuation module local arg = mw.getCurrentFrame().args.config if arg and arg~='' then configfile = 'Module:Authority control/config/' .. arg end local config if mw.title.new(configfile).exists then config = mw.loadData(configfile) else return error('Invalid configuration file',0) end local title = mw.title.getCurrentTitle() local namespace = title.namespace local testcases = title.subpageText == config.i18n.testcases local function needsAttention(sortkey) return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]' end local function addCat(cat,sortkey) if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then local redlinkcat = '' if testcases == false and mw.title.new(cat, 14).exists == false then redlinkcat = needsAttention('N') end if sortkey then cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]' else cat = '[[' .. config.i18n.category .. ':'..cat..']]' end cat = cat .. redlinkcat return cat else return '' end end local function getCatForId(id,faulty) local cat = string.format( config.i18n.cat, (faulty and config.i18n.faulty..' ' or '') .. id ) return addCat(cat) end local function getIdsFromWikidata(qid,property) local function getquals(statement,qualid) if statement.qualifiers and statement.qualifiers['P'..qualid] then return mw.wikibase.renderSnak(statement.qualifiers['P'..qualid][1]) else return false end end local ids = {} if qid then for _, statement in ipairs(mw.wikibase.getBestStatements(qid,property)) do if statement.mainsnak.datavalue then local val = statement.mainsnak.datavalue.value if val then local namedas = getquals(statement,1810) or getquals(statement,742) or '' table.insert(ids,{id=val,name=namedas}) end end end end return ids end local _makelink = function(conf,val,nextid,qid) --validate values and create a link local function tooltip(text,label) if label and label~='' then return mw.getCurrentFrame():expandTemplate{title = "Tooltip", args = {text,label}} else return text end end local link if nextid==1 then if conf.prefix then link = '*' .. conf.prefix .. '\n**' else link = '*' end else link = '\n**' end local valid_value = false if conf.customlink then -- use function to validate and generate link local label = nextid>1 and nextid local newlink= require(config.auxiliary)[conf.customlink](val.id,label) if newlink then link = link .. newlink valid_value = true end else if conf.pattern then -- use pattern to determine validity if defined valid_value = string.match(val.id,'^'..conf.pattern..'$') elseif conf.patterns then for _,pattern in ipairs(conf.patterns) do valid_value = val.id:match('^'..pattern..'$') if valid_value then break end end elseif conf.valid then -- otherwise use function to determine validity valid_value = require(config.auxiliary)[conf.valid](val.id) else -- no validation possible valid_value = val.id end if valid_value then local newlink local label = conf.label if not label or nextid>1 then label = tostring(nextid) end if conf.link then valid_value = valid_value:gsub('%%', '%%%%') newlink = '[' .. mw.ustring.gsub(conf.link,'%$1',valid_value) .. ' ' .. label .. ']' else newlink = valid_value end link = link .. '<span class="uid">'..tooltip(newlink,val.name)..'</span>' end end if valid_value then link = link .. getCatForId(conf.category or conf[1]) else --local preview = require("Module:If preview") local wdlink = qid and '[[:wikidata:' .. qid .. '#P' .. conf.property .. ']]' or '' local tooltip = string.format( config.i18n.idnotvalid, conf[1], val.id ) link = link .. '[[File:' .. config.i18n.warningicon .. '|20px|frameless|link=' .. wdlink .. '|' .. tooltip .. '.]]' if conf.errorcat then link = link .. addCat(conf.errorcat) else link = link .. getCatForId(conf.category or conf[1],true) end link = link .. addCat(config.i18n.allfaultycat,conf[1])-- .. preview._warning({'The '..conf[1]..' id '..val..' is not valid.'}) end return link end --[[==========================================================================]] --[[ Main ]] --[[==========================================================================]] function p.authorityControl(frame) local function resolveQID(qid) if qid then qid = 'Q'..mw.ustring.gsub(qid, '^[Qq]', '') if mw.wikibase.isValidEntityId(qid) and mw.wikibase.entityExists(qid) then local sitelink = mw.wikibase.getSitelink(qid) if sitelink then return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(qid).id end return mw.wikibase.getEntity(qid).id end end end local conf = config.config local parentArgs = frame:getParent().args local auxCats = '' local rct = false -- boolean to track if there are any links to be returned local qid,topic local wikilink = function(qid,hideifequal) local label,sitelink = mw.wikibase.getLabel(qid),mw.wikibase.getSitelink(qid) if label then if sitelink then local target = mw.title.new(sitelink) if target==title or (target.isRedirect and target.redirectTarget==title) then -- do not link return label else -- make wikilink to article return '[[' .. sitelink .. '|' .. label .. ']]' end else return label end else auxCats = auxCats .. needsAttention('L') return qid end end if namespace == 0 then qid = mw.wikibase.getEntityIdForCurrentPage() end if qid then -- article is connected to Wikidata item if parentArgs.qid and (resolveQID(parentArgs.qid) ~= qid) then -- non-matching qid parameter auxCats = auxCats .. needsAttention('D') end else -- page is not connected to any Wikidata item qid = resolveQID(parentArgs.qid) -- check qid parameter if no wikidata item is connected if qid then -- qid parameter is valid, set topic to display topic = mw.wikibase.getLabel(qid) if topic then if mw.ustring.lower(title.subpageText) == mw.ustring.lower(topic) then -- suppress topic display if subpagename equals topic up to case change topic = nil end if topic and mw.wikibase.getSitelink(qid) then -- make wikilink to article topic = '[[' .. mw.wikibase.getSitelink(qid) .. '|' .. topic .. ']]' end else auxCats = auxCats .. needsAttention('L') end elseif parentArgs.qid and parentArgs.qid~='' then -- invalid qid has been supplied, add to tracking cat auxCats = auxCats .. needsAttention('Q') end end local qids = {} -- setup any additional QIDs if parentArgs.additional=='auto' and qid then -- check P527 for parts to add additional qids local checkparts = function(property) local parts = mw.wikibase.getBestStatements(qid,property) if parts then for _,part in ipairs(parts) do if part.mainsnak.datavalue and part.mainsnak.datavalue.value.id then local resolvedqid = resolveQID(part.mainsnak.datavalue.value.id) if resolvedqid then table.insert(qids,resolvedqid) end end end end end for _,part in ipairs(config.auto_additional) do checkparts('P'..tostring(part)) end elseif parentArgs.additional and parentArgs.additional ~= '' then for _,v in ipairs(mw.text.split(parentArgs.additional,"%s*,%s*")) do v = resolveQID(v) if v then if v == qid then -- duplicate of qid parameter auxCats = auxCats .. needsAttention('R') end table.insert(qids,v) else -- invalid QID specified auxCats = auxCats .. needsAttention('A') end end end local sections = {} local localparams = false local numsections = 0 for _,_ in ipairs(config.sections) do numsections = numsections + 1 end for _ = 1,#qids+numsections do table.insert(sections,{}) end local qslink = '' -- setup link to add using QuickStatements -- check which identifiers to show/suppress in template local show = {} -- setup list local showall = true local function stripP(pid) if pid:match("^[Pp]%d+$") then pid = mw.ustring.gsub(pid,'[Pp]','') --strip P from property number end if pid:match("^%d+$") then return tonumber(pid) end end local function addshowlist(list) if list and list ~= '' then for _,v in ipairs(mw.text.split(string.lower(list),"%s*,%s*")) do local vprop = stripP(v) if vprop then -- e.g. show=P214 to show one particular property show[vprop] = true else -- e.g. show=arts to use whitelist if config.whitelists[v] then for _,w in ipairs(config.whitelists[v].properties) do show[w] = true end end end end showall = false end end addshowlist(frame.args.show) -- check show= parameter on wrapper template addshowlist(parentArgs.show or parentArgs.country) -- check show parameter on article template if parentArgs.suppress then local suppresslist = mw.text.split(parentArgs.suppress,"%s*,%s*") -- split parameter by comma for _,v in ipairs(suppresslist) do v = stripP(string.upper(v)) if v then show[v] = false auxCats = auxCats .. '[[' .. config.i18n.category .. ':' .. config.i18n.suppressedcat .. ']]' else auxCats = auxCats .. needsAttention('P') end end end local function makeSections(qid,addit) local tval = {} local function parameter_is_used(property) local used = false if property then if tval[property] then if tval[property][1] then used = true end elseif tval[property] == false then -- property has been manually suppressed used = true end end return used end for _, params in ipairs(conf) do tval[params.property] = getIdsFromWikidata(qid, 'P' .. params.property) -- setup table for values with property number as key local showb = true if (show[params.property] == nil) and (show[string.upper(params[1])] == nil ) then showb = showall -- if not specified then depends on showall elseif (show[params.property] == false) or (show[string.upper(params[1])] == false) then -- if either are false then id will be suppressed showb = false end if not showb then tval[params.property] = false -- indicates the identifier is suppressed elseif not addit then local val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]] if val and val~='' then -- add local parameter to list if not already in localparams = true local bnew = true for _, w in pairs(tval[params.property]) do if val == w.id then bnew = false end end if bnew then -- add new value to table if qid then qslink = qslink .. '%7C%7C' .. qid .. '%7CP' .. params.property .. '%7C%22' .. mw.uri.encode(val,"PATH") .. '%22%7CS143%7CQ328' end table.insert(tval[params.property],{id=val,name=''}) end end end local suppress = false if params.suppressedbyproperty then for _,sc in ipairs(params.suppressedbyproperty) do if parameter_is_used(sc) then suppress = true end end end if tval[params.property] ~= false and not suppress then local tlinks = {} -- setup table for links local nextIdVal = 1 local row = '' for _,val in ipairs(tval[params.property]) do local link = _makelink(params,val,nextIdVal,qid) row = row .. link table.insert(tlinks,link) nextIdVal = nextIdVal + 1 end if nextIdVal>=2 then row = row .. '\n' table.insert(sections[addit or params.section],row) rct = true end end end end local function pencil(qid) if not qid then return '' end local args = { pid = 'identifiers' } -- #target the list of identifiers args.qid = qid return require('Module:EditAtWikidata')._showMessage(args) end makeSections(qid,false) for c = 1,#qids do makeSections(qids[c],numsections+c) end --configure Navbox local outString = '' if rct or localparams then -- there is at least one link to display local Navbox = require('Module:Navbox') local sect,lastsect = 0,0 local navboxArgs = { name = 'Authority control', navboxclass = 'authority-control', bodyclass = 'hlist', state = parentArgs.state or config.i18n.autocollapse, navbar = 'off' } for c=1,numsections+#qids do if #sections[c] ~= 0 then -- section is non-empty sect = sect + 1 lastsect = c local sectname if c <= numsections then -- regular section sectname = config.sections[c].name else -- section from additional qid local qid = qids[c-numsections] sectname = wikilink(qid) .. pencil(qid) end navboxArgs['group' .. c] = sectname navboxArgs['list' .. c] = table.concat(sections[c]) end end if localparams then lastsect = lastsect + 1 sect = sect + 1 navboxArgs['group' .. lastsect] = config.i18n.warning local warning = frame:expandTemplate{title = config.i18n.errortemplate, args = {config.i18n.localparams}} if qslink ~= '' then warning = warning .. ' ' .. config.i18n.movetowd .. '<span class="qs autoconfirmed-show">&#32;[[File:Commons to Wikidata QuickStatements.svg|20px|link=https://quickstatements.toolforge.org/#/v1=' .. qslink .. '|' .. config.i18n.addtowd .. ']]</span>' elseif not qid then if namespace == 0 then warning = warning .. ' ' .. config.i18n.connecttowd elseif namespace==14 or namespace==2 or namespace==118 then warning = warning .. ' ' .. config.i18n.qidcode end end navboxArgs['list' .. lastsect] = warning end if topic then -- display in expanded form with topic navboxArgs.title = config.i18n.aclink .. ' &ndash; ' .. topic .. pencil(qid) elseif sect == 1 then -- special display when only one section if lastsect <= numsections then if config.sections[lastsect].hidelabelwhenalone then -- no special label when only general or other IDs are present navboxArgs['group' .. lastsect] = config.i18n.aclink .. pencil(qid) else -- other regular section navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] .. pencil(qid) end else -- section from additional qid navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] end else -- add title to navbox navboxArgs.title = config.i18n.aclink .. pencil(qid) end outString = Navbox._navbox(navboxArgs) end if parentArgs.state and parentArgs.state~='' and parentArgs.state~=config.i18n.collapsed and parentArgs.state~=config.i18n.expanded and parentArgs.state~=config.i18n.autocollapse then --invalid state parameter auxCats = auxCats .. needsAttention('S') end if testcases then auxCats = mw.ustring.gsub(auxCats, '(%[%[)(' .. config.i18n.category .. ')', '%1:%2') --for easier checking end --out outString = outString..auxCats if namespace ~= 0 then outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':' .. config.i18n.Articles .. ')([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4') outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':' .. config.i18n.All_articles .. ')([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4') end local check = require('Module:Check for unknown parameters')._check local sortkey if namespace == 0 then sortkey = '*' .. title.text else sortkey = title.fullText end outString = outString .. check({ ['unknown'] = '[[' .. config.i18n.category .. ':' .. config.i18n.pageswithparams .. '|' .. sortkey .. ']]', ['preview'] = config.i18n.previewwarning, 'show', 'country', 'suppress', 'additional', 'qid', 'state' }, parentArgs) return outString end p.makelink = function(conf,val,nextid,qid) return _makelink(conf,val,nextid,qid) end return p 53aaca83d7c22230cefa966b7911d2ab311588a9 Template:Country data Belgium 10 1197 2526 2023-07-18T17:32:14Z w>Paine Ellsworth 0 srv pending possible RfC wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Belgium | flag alias = Flag of Belgium (civil).svg <!-- Not the official flag of Belgium, but see talk page for objections to using the state flag as the default --> | flag alias-government = Government Ensign of Belgium.svg | flag alias-state = Flag of Belgium.svg<!-- The official flag of Belgium. See talk page for why it is not the default. --> | flag alias-1830 = Flag of Belgium (1830).svg | flag alias-1858 = Royal ensign of Belgium (1858).svg | flag alias-army = Flag of the Belgian Land Component.svg | link alias-army = Belgian Land Component | flag alias-naval = Naval Ensign of Belgium.svg | link alias-naval = Belgian Navy | flag alias-air force = Air Force Ensign of Belgium.svg | link alias-air force = Belgian Air Component | flag alias-navy = Naval Ensign of Belgium.svg | link alias-navy = Belgian Navy | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = state | var2 = government | var3 = 1830 | var4 = 1858 | redir1 = BEL </noinclude> }} f0f17baf77dfb0ac61bc71743e2811ff99176a5e Template:Marriage 10 1236 2570 2023-07-19T08:39:32Z w>Paine Ellsworth 0 per edit request on talk page - remove the redundant invoking of "Check for unknown parameters" wikitext text/x-wiki <templatestyles src="Template:Marriage/styles.css"/> {{#if:{{{1|}}}||{{#if:{{{2|}}}{{{3|}}}{{{end|{{{reason|}}}}}} |{{#ifeq:{{{1|+}}}|{{{1|-}}}|<div class="marriage-line-margin3px">&#8203;</div>|{{main other|[[Category:Marriage template anomalies|N{{PAGENAME}}]]}}}}}}}} <div class="marriage-display-ws">{{#if:{{{1|}}} |{{trim|{{#if:{{{end|{{{reason|}}}}}} |<div style="display:inline-block;line-height:normal;{{#if:{{{2|}}}{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-top:1px;white-space:normal;|{{str ≥ len|1={{delink|{{{1}}}}}|2=20|3=margin-top:1px;white-space:normal;}}}}">{{{1|}}}</div> {{#if:{{{2|}}} |{{#if:{{{end|{{{reason|}}}}}}|<div class="marriage-line-margin2px">&#8203;</div>}} |{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}} |<div class="marriage-line-margin2px">&#8203;</div> |{{str ≥ len|1={{delink|{{{1}}}}}|2=20 |3=<div class="marriage-line-margin2px">&#8203;</div>}} }}}} |<div style="display:inline-block;line-height:normal;{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-top:1px;white-space:normal;|{{str ≥ len|1={{delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}}|3=margin-top:1px;white-space:normal;}}}}">{{{1|}}}</div> {{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}} |<div class="marriage-line-margin2px">&#8203;</div> |{{str ≥ len|1={{delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}} |3=<div class="marriage-line-margin2px">&#8203;</div>}}}} }}}}}}&#32;<div style="display:inline-block;{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-bottom:1px;|{{str ≥ len|1={{delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}}|3=margin-bottom:1px;|4={{#if:{{{end|{{{reason|}}}}}}|{{#if:{{{2|}}}|margin-bottom:1px;}}}}}}}}">&#8203;</div>&#40;<!-- -->{{#if:{{{2|}}} |{{#ifeq:{{{end|{{{reason|+}}}}}}| |{{#switch:{{{3|}}} | = after&nbsp;}} |{{abbr|m.|married}}&nbsp;}}{{#ifeq:{{{2|}}}|{{YEAR|{{{2|}}}}} |{{{2|}}} |{{tooltip|dotted=no|1={{#iferror: {{YEAR|{{{2|}}}}} | {{main other|[[Category:Marriage template errors|I{{PAGENAME}}]]}}{{error-small|invalid year}}|{{YEAR|{{{2|}}}}}}}|2={{{2|}}}}} }} |{{#if:{{{3|}}}{{{end|{{{reason|}}}}}}||{{#if:{{#property:P570}}||{{main other|[[Category:Marriage template errors|N{{PAGENAME}}]]}}}}<!-- -->{{#if:{{{end|{{{reason|}}}}}}||{{#if:{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} | {{main other|[[Category:Marriage template anomalies|B{{PAGENAME}}]]}}before&nbsp;{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} |{{error-small|date missing}}}}}}<!-- -->{{#if:{{{end|{{{reason|}}}}}}|{{#if:{{{2|}}}{{{3|}}}|&#44;&#32;}}}}}} }}{{#if:{{{3|}}} |{{#ifeq:{{{end|{{{reason|}}}}}}| |{{#if:{{{2|}}}|&#x2060;&#8211;&#x2060;|{{#ifeq:{{{end|+}}}|{{{end|-}}} |{{#ifeq:{{{end|+}}}|{{{end|-}}} | until | before }} |{{#ifeq:{{{reason|+}}}|{{{reason|-}}} | until | before }}}}&nbsp;}} |{{#if:{{{2|}}} |&#59;&#32; }}{{#switch:{{lc:{{{end|{{{reason|}}}}}}}} | d | d. | died = died&nbsp;<!-- this used to be {{abbr|d.|died}} but caused confusion with "divorced" --> | div | div. | divorce | divorced = {{abbr|div.|divorced}}&nbsp; | she d. | her d. | she died | her death = {{#ifeq:{{#property:P21}}|male|died&nbsp;|{{main other|[[Category:Marriage template deprecations]]}}{{dc|her death&nbsp;}}}} | he d. | his d. | he died | his death = {{#ifeq:{{#property:P21}}|female|died&nbsp;|{{main other|[[Category:Marriage template deprecations]]}}{{dc|his death&nbsp;}}}} | w | w. | wid | wid. | widow | widowed = {{main other|[[Category:Marriage template errors|W{{PAGENAME}}]]}}{{error-small|invalid reason}}&nbsp; | = <!--(reason marriage ended not supplied)--> | #default = {{{end|{{{reason|}}}}}}&nbsp; }} }}{{#ifeq:{{{3|}}} |{{Str ≠ len|{{{3}}}|4 |{{#ifexpr:{{#iferror:{{#time:Ymd|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}} }}|{{#time:Ymd}} }} >= {{#time:Ymd|{{{3|}}}}} |{{#ifexpr:{{#time:Ymd|{{if empty|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}}|{{tomorrow}} }}}} = {{#time:Ymd|{{{3|}}}}} |{{#if:{{{end|{{{reason|}}}}}} |{{YEAR|{{{3|}}}}} |{{main other|[[Category:Marriage template anomalies|D{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{First word|{{PAGENAMEBASE}}|sep=,}}'s date of death}}</var>|{{YEAR|{{{3|}}}}} }}}} |{{YEAR|{{{3|}}}}} }} |{{main other|[[Category:Marriage template anomalies|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{#ifexpr:{{#time:Ymd}} >= {{#time:Ymd|{{{3|}}}}}|posthumous|future}} date}}</var>|{{YEAR|{{{3|}}}}} }}}} |{{#ifexpr:{{#iferror:{{YEAR|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} }}|{{#time:Y}} }} >= {{YEAR|{{{3|}}}}} |{{YEAR|{{{3|}}}}} |{{main other|[[Category:Marriage template anomalies|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{#ifexpr:{{#time:Y}} >= {{{3|}}}|posthumous|future}} year}}</var>|{{YEAR|{{{3|}}}}} }}}} }} |{{{3|}}} |{{tooltip|dotted=no|1={{#iferror: {{YEAR|{{{3|}}}}} | {{main other|[[Category:Marriage template errors|I{{PAGENAME}}]]}}{{error-small|invalid year}} |{{Str ≠ len|{{{3}}}|4 |{{#ifexpr:{{#iferror:{{#time:Ymd|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}} }}|{{#time:Ymd}} }} >= {{#time:Ymd|{{{3|}}}}} |{{#ifexpr:{{#time:Ymd|{{if empty|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}}|{{tomorrow}} }}}} = {{#time:Ymd|{{{3|}}}}} |{{#if:{{{end|{{{reason|}}}}}} |{{YEAR|{{{3|}}}}} |{{main other|[[Category:Marriage template anomalies|D{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{First word|{{PAGENAMEBASE}}|sep=,}}'s date of death}}</var>|{{YEAR|{{{3|}}}}} }}}} |{{YEAR|{{{3|}}}}} }} |{{main other|[[Category:Marriage template anomalies|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{#ifexpr:{{#time:Ymd}} >= {{#time:Ymd|{{{3|}}}}}|posthumous|future}} date}}</var>|{{YEAR|{{{3|}}}}} }}}} |{{#ifexpr:{{#iferror:{{YEAR|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} }}|{{#time:Y}} }} >= {{YEAR|{{{3|}}}}} |{{YEAR|{{{3|}}}}} |{{main other|[[Category:Marriage template anomalies|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{#ifexpr:{{#time:Y}} >= {{{3|}}}|posthumous|future}} year}}</var>|{{YEAR|{{{3|}}}}} }}}} }}}}|2={{{3|}}}}} }} |{{#if:{{{2|}}} |{{#if:{{{end|{{{reason|}}}}}}|&#44;&#32;|}} }}{{#switch:{{lc:{{{end|{{{reason|}}}}}}}} | d | d. | died = died | div | div. | divorce | divorced = divorced | she d. | her d. | she died | her death = {{#ifeq:{{#property:P21}}|male|died|{{main other|[[Category:Marriage template deprecations]]}}{{dc|her death}}}} | he d. | his d. | he died | his death = {{#ifeq:{{#property:P21}}|female|died|{{main other|[[Category:Marriage template deprecations]]}}{{dc|his death}}}} | w | w. | wid | wid. | widow | widowed = {{main other|[[Category:Marriage template errors|W{{PAGENAME}}]]}}{{error-small|invalid reason}} | = <!--(reason marriage ended not supplied)--> | #default = {{{end|{{{reason|}}}}}} }} }}&#41;<wbr />&#8203;</div><!-- -->{{#invoke:Parameter validation|validateparams|module_options = Module:Parameter validation/default config}}<noinclude> {{documentation}} </noinclude> 7452d847c3af0c74dec0ca6b50bf7ddb2a07da46 Template:Coord how-to 10 1666 3083 2023-07-19T16:10:34Z wikipedia>Redrose64 0 Undid revision 1166032258 by [[Special:Contributions/Beyond My Ken|Beyond My Ken]] ([[User talk:Beyond My Ken|talk]]) see [[Wikipedia:Village pump (technical)#Issue with coordinate templates and article previews]] wikitext text/x-wiki <div class="{{{class|}}}" style="display:table; background:#f5fffa; color: #222; margin: 1em 0; border: 1px solid #a2a9b1;{{{style|}}}"> <div style="background:#cef2e0; font-weight:bold; border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;"> {{{{{navbar|navbar-header}}}|1= {{{title|Quick how to}}} |2=Coord_how-to}} </div><!--end header --> <div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;"> To add {{Coord|57|18|22|N|4|27|32|W}} to the top of an article, use {{Tl|Coord}}, thus: :'''<code><nowiki>{{Coord|57|18|22|N|4|27|32|W|display=title}}</nowiki></code>''' These [[Geographic coordinate system|coordinates]] are in [[Degree (angle)|degrees]], [[Minute and second of arc|minutes, and seconds of arc]]. "title" means that the coordinates will be displayed next to the article's title at the top of the page (in desktop view only; title coordinates do not display in mobile view) and before any other text or images. It also records the coordinates as the primary location of the page's subject in Wikipedia's geosearch API. </div><!-- end of section 1 --> <div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;"> To add {{Coord|44.1124|N|87.9130|W}} to the top of an article, use either :'''<code><nowiki>{{Coord|44.1124|N|87.9130|W|display=title}}</nowiki></code>''' (which does not require minutes or seconds but does require the user to specify north/ south and east/west) ''or'' :'''<code><nowiki>{{Coord|44.1124|-87.9130|display=title}}</nowiki></code>''' (in which the north and east are presumed by positive values while the south and west are negative ones). These coordinates are in [[decimal degrees]]. </div><!-- end of section 2 --> <div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;"> * Degrees, minutes and seconds, when used, must each be separated by a [[Vertical bar|pipe ("|")]]. * [[Geodetic datum|Map datum]] must be [[WGS84]] if possible (except for off-Earth bodies). * Avoid [[Wikipedia:WikiProject Geographical coordinates#Precision guidelines|excessive precision]] (0.0001° is <11 m, 1″ is <31 m). * Maintain [[MOS:UNCERTAINTY|consistency]] of decimal places or minutes/seconds between latitude and longitude. * Latitude (N/S) must appear before longitude (E/W). </div><!-- end of section 3 --> <div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;"> Optional coordinate parameters follow the longitude and are separated by [[Underscore|an underscore ("_")]]:<br /> *[[Template:Coord#dim:D|dim]]: <code>dim:</code>'''''N''''' (viewing <u>d</u>iameter <u>i</u>n <u>m</u>etres) *[[Template:Coord#region:R|region]]: <code>region:</code>'''''R''''' ([[ISO 3166-1 alpha-2]] or [[ISO 3166-2]] code) *[[Template:Coord#type:T|type]]: <code>type:</code>'''''T''''' (<code>landmark</code> or <code>city(30,000)</code>, for example) Other optional parameters are separated by [[Vertical bar|a pipe ("|")]]:<br /> *[[Template:Coord#Display|display]] *: {{Para|display|inline}} (the default) to display in the body of the article only, *: {{Para|display|title}} to display at the top of the article only (in desktop view only; title coordinates do not display in mobile view), or *: {{Para|display|inline,title}} to display in both places. *[[Template:Coord#Name|name]] *: <code>name=</code>'''''X''''' to label the place on maps (default is [[mw:Help:Magic words#Page names|PAGENAME]]) Thus: '''<code><nowiki>{{Coord|44.1172|-87.9135|dim:30_region:US-WI_type:event</nowiki></code>''' ::'''<code><nowiki>|display=inline,title|name=accident site}}</nowiki></code>''' Use {{Para|display|title}} (or {{Para|display|inline,title}}) once per article, for the subject of the article, where appropriate. </div><!-- end of section 4 --> <div style="padding: 0.2em 0.4em;"> * Per [[WP:ORDER]], the template is placed at the bottom of the article in the 'end matter', after any [[Wikipedia:Navigation template|navigation templates]], but before all [[Wikipedia:Categorization|categories]], including the {{tl|DEFAULTSORT}} template. This template may also be placed within an [[Help:Infobox|infobox]], instead of at the bottom of the article. * For full details, refer to {{tl|Coord/doc}}. * Additional guidance is available at [[Wikipedia:Obtaining geographic coordinates|obtaining coordinates]] and [[Geographic coordinate conversion|converting coordinates]]. </div><!-- end of section 5 --> </div><noinclude> {{documentation|content= ==Usage== This a sub-tempate for {{tl|Coord/doc}}. [[Category:WikiProject Geographical coordinates]] }}</noinclude> 35f82b649ae37b5b4c2a11e6a668f083bab05a26 Module:PopulationFromWikidata 828 1394 2729 2023-07-20T01:57:48Z w>Johnuniq 0 update from [[Module:PopulationFromWikidata/sandbox]] mainly to fix irritating "Lua error in Module:PopulationFromWikidata at line 150: attempt to index field 'claims' (a nil value)." at [[Municipality of Scone]] Scribunto text/plain ---------------- Defining variables-------------------- local Pop_P = "P1082" -- population property local Applies_P = "P518" -- applies to part property local Pointin_P = "P585" -- point in time property local DetMeth_P = "P459" -- determination method property local RefURL_P = "P854" -- reference URL local RefTitle_P = "P1476" -- reference title local RefPubIn_P = "P1433" --reference published in property local DatePub_P = "P577" -- date of publication property local Publisher_P = "P123" -- publisher property local Retrieved_P = "P813" -- retrieved property local CensusAU_I = "Q5058971" -- Australian census item local Instof_P = "P31" -- instance of property local ShortN_P = "P1813" -- short name property local SAL_I = "Q33112019" -- state suburb item (includes SSC and SAL) --local GCCSA_I = "Q112762887" -- Greater Capital City Statistical Area item local LGA_I = "Q33127844" -- Local Government Area item local UCL_I = "Q33127891" -- Urban Centre or Locality --local SA2_I = "Q33128776" -- SA2 local ILOC_I = "Q112729549" -- Indigenous Location local item = nil --------------- Function GetRefsForClaim to check, collate and format all the reference components---------------------- local function GetRefsForClaim(claim, defaulttitle) local refs = "" for b,x in pairs(claim.references) do -- Loop through all references in a claim and pull out the components local refurl = "" -- initialise an empty URL, check if there is one then populate with the actual value (if not it stays as an empty string) if claim.references[b].snaks[RefURL_P] ~= nil then refurl = claim.references[b].snaks[RefURL_P][1].datavalue.value end local reftitle = defaulttitle -- Initialise the default title as the Wikidata item title. This is the fallback title if one isn't provided in the references if claim.references[b].snaks[RefTitle_P] ~= nil then reftitle = claim.references[b].snaks[RefTitle_P][1].datavalue.value.text end local detmet = mw.wikibase.getEntity(claim.qualifiers[DetMeth_P][1].datavalue.value.id) -- Get the dertermination method item local pubinlabel = "" --Initalising an empty published in label. This is the last option for this value. if claim.references[b].snaks[RefPubIn_P] ~= nil then --Checking if the published in part of reference exists (it should for all references) local pubin = mw.wikibase.getEntity(claim.references[b].snaks[RefPubIn_P][1].datavalue.value.id) --If it does then grab the published item and the label of that item pubinlabel = pubin.labels.en.value end local refwork = pubinlabel -- This value is used for non-census references, or as a fall-back value for census references with missing parts local pubdate = "" -- This is the fallback option if published date is missing (no date) if claim.references[b].snaks[DatePub_P] ~= nil then -- This is the second option for the published date (given with references - this is used for non-census references) pubdate = mw.language.getContentLanguage():formatDate('j F Y', claim.references[b].snaks[DatePub_P][1].datavalue.value.time) end if detmet.claims[Instof_P] ~=nil and detmet.claims[Instof_P][1].mainsnak.datavalue.value.id == CensusAU_I then -- Checking for census references (which will have different refwork and published date sources) refwork = detmet.labels.en.value.." "..pubinlabel -- Concatenating to get work - determination method + published in (this overwrites the refwork value for census references) if detmet.claims[DatePub_P] ~=nil then pubdate = mw.language.getContentLanguage():formatDate('j F Y', detmet.claims[DatePub_P][1].mainsnak.datavalue.value.time) -- Overwrite the published date value if the determination method item has a date published (for census references) end end local refpublisher = "" -- The publisher is empty if missing if detmet.claims[Publisher_P] ~= nil then local publisheritem = mw.wikibase.getEntity(detmet.claims[Publisher_P][1].mainsnak.datavalue.value.id) -- Get the determination method item and the publisher item ID refpublisher = publisheritem.labels.en.value -- Get the label of the publisher item end local refaccessdate = "" -- The retrieved date fallback is empty if claim.references[b].snaks[Retrieved_P] ~= nil then refaccessdate = mw.language.getContentLanguage():formatDate('j F Y', claim.references[b].snaks[Retrieved_P][1].datavalue.value.time) -- Populate the retrieved date if it's there end local appliespart = mw.wikibase.getEntity(claim.qualifiers[Applies_P][1].datavalue.value.id).labels.en.value -- The ABS geography type for the particular claim (to use in reference name) local pointintime = mw.language.getContentLanguage():formatDate('Y', claim.qualifiers[Pointin_P][1].datavalue.value.time) -- Getting the point in time as a YYYY (to use in the reference name) local citewebargs = { --Putting all the cite_web arguments into a list (for a single reference) url = refurl, title = reftitle.." ("..appliespart..")" , date = pubdate, work = refwork, author = "[["..refpublisher.."]]", -- Changed the publisher to author for now to match existing population references accessdate = refaccessdate } local wdeditpencil = mw.getCurrentFrame():expandTemplate{title = 'EditAtWikidata', args = {qid = item.id, pid = claim.id, nbsp = 1}} --Call the Edit At Wikidata template (to add the edit pencil to end of references) local reference = mw.getCurrentFrame():expandTemplate{ title = 'cite web', args = citewebargs } --expand template to feed arguments to cite_web refs = refs..mw.getCurrentFrame():extensionTag{ name = 'ref', content = reference..wdeditpencil, { name = refwork.."_"..pointintime.."_"..appliespart.."_"..reftitle } } --Add the reference from this iteration to the list of references for this particular claim end return refs -- List of references to be given to reflist end ---------------This is a function for getting the population geography abbreviation and the Wikipedia article link for the population year --------------- local function GetAbbrLabelYearLink(returnclaim) local appliespartitem = mw.wikibase.getEntity(returnclaim.qualifiers[Applies_P][1].datavalue.value.id) -- This gets the item ID for the current claim Applied to Part value local abbrelabel = appliespartitem.labels.en.value -- This is the fall back value for the geography label if no abbreviation (short name) value exists in Wikidata item if appliespartitem.claims[ShortN_P] ~= nil then -- If a short name value exists then use thi value instead of the full item label. abbrelabel = mw.getCurrentFrame():expandTemplate{title = 'Abbr', args = {appliespartitem.claims[ShortN_P][1].mainsnak.datavalue.value.text , appliespartitem.labels.en.value }} -- Output the abbreviated name with tooltip showing the full label end local year = string.sub(returnclaim.qualifiers[Pointin_P][1].datavalue.value.time, 2, 5) -- Get the population point in time as a year string local yearreturn = year -- If no links to Wikipedia articles describing population determination method exist then just output year local detmetitem = mw.wikibase.getEntity(returnclaim.qualifiers[DetMeth_P][1].datavalue.value.id) -- Get the current claim determination method item if detmetitem.sitelinks ~=nil and detmetitem.sitelinks.enwiki ~=nil then -- Check if the determination method item has an enwiki URL yearreturn = "[["..detmetitem.sitelinks.enwiki.title.."|".. year.."]]" -- If it does, use this URL as the link with the year value elseif detmetitem.claims[Instof_P] ~=nil and detmetitem.claims[Instof_P][1].mainsnak.datavalue.value.id == CensusAU_I then -- If there isn't a populated enwiki URL for determination method item AND it's a census determination method then... yearreturn = "[[Census_in_Australia#"..year.."|".. year.."]]" -- ... return the population year linked to the corresponding section of the Census in Australia article end return abbrelabel.." "..yearreturn -- Join the geography abbreviation to the year (with link) ready for the final output end ---------------- This ListForInfobox function is being used to grab the correct population value --------------- local p = {} function p.ListForInfobox( frame ) local luaplacetype = "" --Initialise the local place type if frame.args.type == nil then return "" end local articleplacetype = string.lower(frame.args.type) -- Bring in the place type entered into Infobox Australian place template, change to a lower case string if articleplacetype == "town" then -- Check which place type and match to the equivalent ABS geographic area "city", "suburb", "town", "lga", "region" luaplacetype = UCL_I elseif articleplacetype == "suburb" then luaplacetype = SAL_I elseif articleplacetype == "city" then luaplacetype = UCL_I elseif articleplacetype == "lga" then luaplacetype = LGA_I elseif articleplacetype == "region" then -- for now saying region == LGA_I... but unclear what is most apprpriate ABS geography type.... can revise luaplacetype = LGA_I end if frame.args.wikidata ~= nil and frame.args.wikidata ~= "" then -- checking if there's a linked Wikidata item for the article item = mw.wikibase.getEntity(frame.args.wikidata) -- this is the default item specified by the wikidata parameter in the template else item = mw.wikibase.getEntity() -- If there's a Wikidata item connected to the article it will find it here. end -- mw.logObject(item) --------------- CHECK: If item.claims[Pop_P] is nil. If it is return an empty string ---------------------- if not (item and item.claims and item.claims[Pop_P]) then return "" end ------------ PART 1: Find claims with (1) point in time is not nil, (2) applies to part is not nil, (3) determination method is not nil and (4) References table is not empty------------- local validpopclaims = {} --initialise the blank claim table for storing all population claims that satisfy the four conditions local z = 0 -- initialise the table row count for j, s in pairs(item.claims[Pop_P]) do if s.qualifiers ~= nil and s.qualifiers[Pointin_P]~= nil and s.qualifiers[Applies_P] ~= nil and s.qualifiers[DetMeth_P] ~= nil and s.references ~= nil then z = z + 1 validpopclaims[z]=s -- give the claim a new key in the table end end --------------- CHECK: If count of validpopclaims is less than one (eg 0) then return a html message. This checks we have something from which to get a population value and basic reference.-------------- if #validpopclaims <1 then return "" end --------------- PART 2: Compare claim 'applies to part' values against template place type------------------------- local templategeog = {} --initialise the blank claim table for if the template type matches to Wikidata claim applies to part local othergeog = {} --initialise the blank claim table for when the template type doesn't match Wikidata claims applies to part local c=0 local d=0 for i, q in pairs(validpopclaims) do if q.qualifiers[Applies_P][1].datavalue.value.id == luaplacetype then --filter for claims where applies to part = Infobox template type c=c+1 -- give the claim a new key in the table templategeog[c]=q -- claims with Infobox template type geography else d=d+1 othergeog[d]=q -- claims with geography other than specified in the Infobox template type. end end ----------PART 3: Get claims with the maximum 'Point in time' values ------------------ ----------PART 3A: Find the max date of claims with template geography----------------- local maxclaimspertemplategeog = nil --initialise the blank claim corresponding to the max date for k, v in pairs(templategeog) do --loop through all the claims with geography type = Infobox template type local tclaimdate = v.qualifiers[Pointin_P][1].datavalue.value.time if maxclaimspertemplategeog == nil or (maxclaimspertemplategeog ~= nil and tclaimdate >= maxclaimspertemplategeog.qualifiers[Pointin_P][1].datavalue.value.time) then maxclaimspertemplategeog=v end end ----------PART 3B: Find the max date of claims with non-Infobox template geography----------------- local maxclaimsperothergeog = {} for l, m in pairs(othergeog) do --loop through all the claims with geography type = non Infobox place type local oclaimdate = m.qualifiers[Pointin_P][1].datavalue.value.time local claimgeog = m.qualifiers[Applies_P][1].datavalue.value.id if maxclaimsperothergeog[claimgeog] == nil -- using the applies to part value as the table key or (maxclaimsperothergeog[claimgeog] ~= nil and oclaimdate >= maxclaimsperothergeog[claimgeog].qualifiers[Pointin_P][1].datavalue.value.time) -- checking the max date for a particular geography value then maxclaimsperothergeog[claimgeog]=m -- overwrites with a geography-max date claim pair whenever the point in time is bigger than the last iteration. end end ------------------------------Compiling the module output-------------------------------- local returnlist = {} -- Initiate an empty table to store the output claims if maxclaimspertemplategeog ~=nil then -- Situation 1: Getting population for max date claim where applies to part matches the Infobox place type local templategeogrefs = GetRefsForClaim(maxclaimspertemplategeog, item.labels.en.value) -- Getting the references for max date claim where Wikidata applies to part matches the Infobox place type table.insert (returnlist, mw.language.getContentLanguage():formatNum(tonumber(maxclaimspertemplategeog.mainsnak.datavalue.value.amount)).." ("..GetAbbrLabelYearLink(maxclaimspertemplategeog)..")"..templategeogrefs) --Insert the return string to returnlist. With population value, applies to part, point in time, reference elseif articleplacetype == "town" then -- Situation 2: Getting population for max date claims where Infobox place type = town. If no UCL populations (earlier default) then get ILOC and SAL populations. if maxclaimsperothergeog[ILOC_I]~=nil then local ILOCrefs = GetRefsForClaim(maxclaimsperothergeog[ILOC_I], item.labels.en.value) -- Getting the references for max date claim where applies to part = ILOC table.insert (returnlist, mw.language.getContentLanguage():formatNum(tonumber(maxclaimsperothergeog[ILOC_I].mainsnak.datavalue.value.amount)).." ("..GetAbbrLabelYearLink(maxclaimsperothergeog[ILOC_I])..")"..ILOCrefs) --Insert the return string to returnlist. With population value, applies to part, point in time, reference end if maxclaimsperothergeog[SAL_I]~=nil then local SALrefs = GetRefsForClaim(maxclaimsperothergeog[SAL_I], item.labels.en.value) -- Getting the references for max date claim where applies to part = SAL table.insert (returnlist, mw.language.getContentLanguage():formatNum(tonumber(maxclaimsperothergeog[SAL_I].mainsnak.datavalue.value.amount)).." ("..GetAbbrLabelYearLink(maxclaimsperothergeog[SAL_I])..")"..SALrefs) --Insert the return string to returnlist. With population value, applies to part, point in time, reference end else for a, w in pairs(maxclaimsperothergeog) do -- Situation 3: Getting population for max date claims where applies to part doesn't = Infobox place type, and Infobox place type doesn't = town. local othergeogrefs = GetRefsForClaim(w, item.labels.en.value) -- Loop through the claims in maxclaimsperothergeog and output all of them table.insert (returnlist, mw.language.getContentLanguage():formatNum(tonumber(maxclaimsperothergeog[a].mainsnak.datavalue.value.amount)).." ("..GetAbbrLabelYearLink(maxclaimsperothergeog[a])..")"..othergeogrefs) --Insert the return string to returnlist. With population value, applies to part, point in time, reference end end local wikitext = "" -- Initialise an empty string output (this is the value that goes back to the Infobox Australian place) if #returnlist == 1 then -- If there is only one formatted "population (geography year)" string (one row) in returnlist then return it without a bullet point wikitext = returnlist[1] else wikitext = "\n*"..table.concat(returnlist,"\n*") -- If there are multiple formatted "population (geography year)" strings (multiple rows) in returnlist then return all the rows with new line and bullet points between them end return wikitext..'[[Category:Australian place articles using Wikidata population values]]' -- Append the category to the output so we can keep track of which articles are using this module to output a population value end return p 84b30dfcb2e625e2d71b5dd908d8905009dd3e38 Module:Language/data 828 447 1049 2023-07-21T16:52:28Z wikipedia>AquitaneHungerForce 0 Added Abenaki and Mohegan-Pequot. Scribunto text/plain local U = mw.ustring.char -- Diacritics, from the [[Combining Diacritical Marks]] block. local grave = U(0x300) local acute = U(0x301) local circumflex = U(0x302) local tilde = U(0x303) local macron = U(0x304) local breve = U(0x306) local dot = U(0x307) local diaeresis = U(0x308) local double_acute = U(0x30B) local caron = U(0x30C) local double_grave = U(0x30F) local invbreve = U(0x311) local dot_below = U(0x323) local undertie = U(0x35C) --[[ This is a table of Wiktionary language codes with data belonging to them. Name is the "canonical name" used on Wiktionary. Article is the Wikipedia article. Script is the ISO 15924 code. ]] local data = { ["languages"] = { ["aaq"] = { ["name"] = "Penobscot", }, ["ab"] = { ["name"] = "Abkhaz", }, ["abe"] = { ["name"] = "Abenaki", }, ["ang"] = { ["name"] = "Old English", ["article"] = {"Old English"}, -- Remove macrons, acutes, and overdots ["replacements"] = { decompose = true, from = { "[" .. macron .. acute .. dot .. "]" }, }, }, ["ar"] = { ["name"] = "Arabic", ["article"] = "Arabic language", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["ara"] = { ["name"] = "Arabic", ["article"] = "Arabic language", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["arb"] = { ["name"] = "Modern Standard Arabic", ["article"] = "Modern Standard Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["apc"] = { ["name"] = "North Levantine Arabic", ["article"] = "North Levantine Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["ajp"] = { ["name"] = "South Levantine Arabic", ["article"] = "South Levantine Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["arz"] = { ["name"] = "Egyptian Arabic", ["article"] = "Egyptian Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["av"] = { ["name"] = "Avar" }, ["be"] = { ["article"] = "Belarusian language", ["replacements"] = { [acute] = "", }, }, ["bn"] = { ["name"] = "Bengali", ["article"] = "Bengali language", }, ["bua"] = { ["name"] = "Buryat", }, ["cel-pro"] = { -- Incorrect tag ["name"] = "Proto-Celtic", ["Wikipedia_code"] = "cel-x-proto", }, ["cel-x-proto"] = { ["name"] = "Proto-Celtic", }, ["cel-bry-pro"] = { -- Incorrect tag ["name"] = "Proto-Brythonic", ["article"] = "Common Brittonic", ["type"] = "reconstructed", }, ["cu"] = { ["name"] = "Old Church Slavonic", ["article"] = "Old Church Slavonic", }, ["de"] = { ["name"] = "German", ["article"] = "German language", }, ["en"] = { ["name"] = "English", ["article"] = "English language", }, ["es"] = { ["name"] = "Spanish", ["article"] = "Spanish language", }, ["egy"] = { ["name"] = "Egyptian", }, ["evn"] = { ["name"] = "Evenki", ["article"] = "Evenki language", }, ["fr"] = { ["name"] = "French", ["article"] = "French language", }, ["frm"] = { ["name"] = "Middle French", ["article"] = "Middle French", }, ["frp"] = { ["name"] = "Franco-Provençal", }, ["ff"] = { ["name"] = "Fula", }, ["gem-pro"] = { -- Incorrect tag ["name"] = "Proto-Germanic", ["article"] = "Proto-Germanic language", ["type"] = "reconstructed", ["replacements"] = {}, ["Wikipedia_code"] = "gem-x-proto", }, ["gem-x-proto"] = { ["name"] = "Proto-Germanic", ["article"] = "Proto-Germanic language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["gml"] = { ["name"] = "Middle Low German", }, ["gmw-ecg"] = { ["name"] = "East Central German", }, ["gmw-x-proto"] = { ["name"] = "Proto-West Germanic", ["article"] = "Proto-West Germanic language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["gmq-x-gut"] = { ["name"] = "Gutnish", ["article"] = "Gutnish", }, ["goh"] = { ["replacements"] = { decompose = true, from = { "[" .. macron .. circumflex .. diaeresis .. "]", }, }, }, ["got"] = { ["name"] = "Gothic", ["article"] = "Gothic language", ["replacements"] = { -- Latin to Gothic since people will not want to have to copy -- and paste Gothic letters in ["[AÁaáĀā]"] = "𐌰", ["[Bb]"] = "𐌱", ["[Gg]"] = "𐌲", ["[Dd]"] = "𐌳", ["[EeĒē]"] = "𐌴", ["[Qq]"] = "𐌵", ["[Zz]"] = "𐌶", ["[Hh]"] = "𐌷", ["[Þþ]"] = "𐌸", ["[IiÍí]"] = "𐌹", ["[Kk]"] = "𐌺", ["[Ll]"] = "𐌻", ["[Mm]"] = "𐌼", ["[Nn]"] = "𐌽", ["[Jj]"] = "𐌾", ["[UuÚúŪū]"] = "𐌿", ["[Pp]"] = "𐍀", ["[Rr]"] = "𐍂", ["[Ss]"] = "𐍃", ["[Tt]"] = "𐍄", ["[WwYy]"] = "𐍅", ["[Ff]"] = "𐍆", ["[Xx]"] = "𐍇", ["[Ƕƕ]"] = "𐍈", -- Not sure if "hw" and "hv" can safely be converted ["[OoŌō]"] = "𐍉", }, }, ["gsw"] = { ["name"] = "Alemannic German", }, ["grc"] = { ["name"] = "Ancient Greek", ["article"] = "Ancient Greek", ["replacements"] = { decompose = true, from = { -- Replace variant letterforms with standard ones. "ϐ", "ϵ", "ϑ", "ϰ", "ϱ", "ϲ", "ϕ", -- Remove macrons and breves. "[" .. macron .. breve .. undertie .. "]" }, to = { "β", "ε", "θ", "κ", "ρ", "σ", "φ", } }, }, ["grk-pro"] = { -- Incorrect tag ["name"] = "Proto-Hellenic", ["Wikipedia_name"] = "Proto-Greek", ["article"] = "Proto-Greek language", ["type"] = "reconstructed", ["replacements"] = {}, ["Wikipedia_code"] = "gem-x-proto", }, ["grk-x-proto"] = { ["name"] = "Proto-Hellenic", ["Wikipedia_name"] = "Proto-Greek", ["article"] = "Proto-Greek language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["grt"] = { ["name"] = "Garo", }, ["ha"] = { ["name"] = "Hausa", -- remove tilde, grave, acute, macron, circumflex ["replacements"] = { decompose = true, from = { "[" .. grave .. circumflex .. macron .. acute .. tilde .. "]" }, }, }, ["hi"] = { ["name"] = "Hindi", ["article"] = "Hindi", }, ["ine-bsl-pro"] = { ["name"] = "Proto-Balto-Slavic", ["article"] = "Proto-Balto-Slavic language", ["type"] = "reconstructed", }, ["ine-pro"] = { -- Incorrect tag ["name"] = "Proto-Indo-European", ["article"] = "Proto-Indo-European language", ["type"] = "reconstructed", ["replacements"] = {}, ["Wikipedia_code"] = "ine-x-proto", }, ["ine-x-proto"] = { ["name"] = "Proto-Indo-European", ["article"] = "Proto-Indo-European language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["ja"] = { ["name"] = "Japanese", ["article"] = "Japanese language", }, ["jbo"] = { -- Lojban ["type"] = "appendix", }, ["ksk"] = { ["name"] = "Kansa", ["article"] = "Kansa language", }, ["la"] = { ["name"] = "Latin", ["article"] = "Latin", ["replacements"] = { decompose = true, from = { "[" .. macron .. breve .. diaeresis .. "]" }, }, }, ["lt"] = { ["name"] = "Lithuanian", -- remove acute, tilde, grave ["replacements"] = { decompose = true, from = { "[" .. acute .. tilde .. grave .. "]" }, }, }, ["moe"] = { ["name"] = "Cree", }, ["mul"] = { ["name"] = "Translingual", ["article"] = "", }, ["nci"] = { ["name"] = "Classical Nahuatl", ["article"] = "Classical Nahuatl", -- Remove macrons, acutes, circumflexes and graves ["replacements"] = { decompose = true, -- Remove macrons, acutes, circumflexes, graves, and saltillo; -- see [[Saltillo (linguistics)]]. from = { "[" .. grave .. acute .. macron .. circumflex .. "Ꞌꞌʻʼ'ʔ]" }, }, }, ["nds-de"] = { ["name"] = "German Low German", }, ["odt"] = { ["name"] = "Old Dutch", }, ["oge"] = { ["name"] = "Old Georgian", }, ["oj"] = { ["name"] = "Ojibwe", }, ["orv"] = { ["name"] = "Old East Slavic", ["article"] = "Old East Slavic", ["replacements"] = { [U(0x484)] = "", }, }, ["osx"] = { ["name"] = "Old Saxon", }, ["pt"] = { ["name"] = "Portuguese", ["article"] = "Portuguese language", -- ["scripts"] = { "Latn" }, }, ["pa"] = { ["name"] = "Punjabi", ["article"] = "Punjabi language", }, ["pis"] = { ["name"] = "Pijin", ["article"] = "Pijin language", }, ["poz-x-poly-proto"] = { ["name"] = "Proto-Nuclear Polynesian", ["article"] = "Proto-Polynesian language", ["type"] = "reconstructed", }, ["rap"] = { ["name"] = "Rapa Nui", ["article"] = "Rapa Nui language", }, ["ru"] = { ["name"] = "Russian", ["article"] = "Russian language", ["replacements"] = { [acute] = "", }, }, ["rw"] = { ["name"] = "Rwanda-Rundi", }, ["se"] = { ["replacements"] = { ["([đflmnŋrsšŧv])'%1"] = "%1%1", }, }, ["sem-pro"] = { ["name"] = "Proto-Semitic", ["article"] = "Proto-Semitic", ["type"] = "reconstructed", }, ["sh"] = { ["article"] = "Serbo-Croatian language", ["replacements"] = { decompose = true, from = { "([AaEeIiOoUuRrАаЕеИиОоУуРр])[" .. double_grave .. grave .. invbreve .. acute .. macron .. tilde .. "]" }, to = { "%1" }, }, }, ["sl"] = { ["name"] = "Slovene", ["replacements"] = { decompose = true, -- remove tonal orthography from = {"ł", "[" .. grave .. acute .. macron .. double_grave .. invbreve .. circumflex .. dot_below .. "]"}, to = {"l"}, }, }, ["sla-pro"] = { ["name"] = "Proto-Slavic", -- also Common Slavic ["type"] = "reconstructed", ["replacements"] = { ["[ÀÁÃĀȀȂ]"] = "A", ["[àáãāȁȃ]"] = "a", ["[ÈÉẼĒȄȆ]"] = "E", ["[èéẽēȅȇ]"] = "e", ["[ÌÍĨĪȈȊ]"] = "I", ["[ìíĩīȉȋ]"] = "i", ["[ÒÓÕŌȌȎŐ]"] = "O", ["[òóõōȍȏő]"] = "o", ["[ÙÚŨŪȔȖŰ]"] = "U", ["[ùúũūȕȗű]"] = "u", ["[ỲÝỸȲ]"] = "Y", ["[ỳýỹȳ]"] = "y", ["Ǭ"] = "Ǫ", ["ǭ"] = "ǫ", ["[" .. grave .. acute .. double_acute .. tilde .. macron .. double_grave .. invbreve .. "]"] = "", ["ĭ"] = "ь", ["ŭ"] = "ъ", }, }, ["tts"] = { ["name"] = "Isan", -- also "Northeastern Thai" ["article"] = "Isan language", }, ["ug"] = { ["name"] = "Uyghur", --also less commonly "Uighur" ["article"] = "Uyghur language", }, ["uk"] = { ["article"] = "Ukrainian language", ["replacements"] = { [acute] = "", } }, ["ur"] = { ["name"] = "Urdu", ["article"] = "Urdu", }, ["xcl"] = { ["name"] = "Old Armenian", ["article"] = "Classical Armenian", ["replacements"] = { ["[՞՜՛՟]"] = "", ["և"] = "եւ", }, }, ["xgf"] = { ["name"] = "Tongva", -- not ISO name "Gabrielino-Fernandeño" ["article"] = "Tongva language", ["replacements"] = { ["['`ʔ]"] = "ʼ", }, }, ["xlu"] = { ["name"] = "Luwian", -- not ISO name "Cuneiform Luwian" ["article"] = "Cuneiform Luwian" }, ["xpq"] = { ["name"] = "Mohegan-Pequot", }, ["xxt"] = { ["name"] = "Tambora", ["article"] = "Tambora language", }, ["xvn"] = { ["name"] = "Vandalic", ["article"] = "Vandalic language", }, ["yua"] = { ["name"] = "Yucatec Maya", ["article"] = "Yucatec Maya language", }, ["zh"] = { ["name"] = "Chinese", ["article"] = "Chinese language", -- ["scripts"] = { "Hani" }, }, }, -- Here, keys (for example, "gem") are Wikipedia language codes used in -- {{lang}}, and values (for example, "gem-pro") are the equivalent Wiktionary -- code. -- Subtags are not currently supported. ["redirects"] = { ["aae"] = "sq", ["aiq"] = "fa", ["aln"] = "sq", ["als"] = "sq", ["azb"] = "az", ["azj"] = "az", ["bgn"] = "bal", ["bs"] = "sh", ["bxr"] = "bua", ["ciw"] = "oj", ["cnr"] = "sh", ["fil"] = "tl", ["fuf"] = "ff", ["gem"] = "gem-pro", -- Not correct, but is commonly used. ["hak"] = "zh", ["hbo"] = "he", ["hr"] = "sh", ["ine"] = "ine-pro", -- Not correct, but might be commonly used. ["kjv"] = "sh", ["nan"] = "zh", ["prs"] = "fa", ["rn"] = "rw", ["sli"] = "gmw-ecg", ["sr"] = "sh", ["src"] = "sc", ["sro"] = "sc", ["tw"] = "ak", ["wae"] = "gsw", ["wep"] = "nds-de", ["yue"] = "zh", ["xno"] = "fro", }, } return data 3e1cbaa2d45dde581a9e11f0ad142ed7dd116100 Module:Ordnance Survey coordinates 828 1405 2740 2023-07-22T11:02:03Z w>Hike395 0 lazy load module Scribunto text/plain -- Lat Long functions in Lua -- Ported to Lua from PHP by Wikipedia User Hike395, 18 Aug 2019 -- found by RWH at http://www.megalithia.com/search/llfuncshighlight.php -- With thanks to Andy, G4JNT for inspiration in GEOG, and to the OSGB for their white paper on coordinate transformation -- describing the iterative method used -- thanks to the Ordnance survey of Ireland for details of the true and false origins of the Irish grid -- You may use and redistribute this code under the terms of the GPL see http://www.gnu.org/copyleft/gpl.html -- Written by Richard -- www.megalithia.com -- v0.something 27/2/2000 -- v 1.01 28 June 2004 -- v 1.02 6 Aug 2004 line 89 add "0" to chars in ngr=stripcharsnotinbag Thx Andy -- v 1.03 9 Mar 2005 Jan (Klingon) added conversion to WGS84 map datum and removed limitation of digits of the grid ref -- v 1.04 10 Aug 2005 Richard correct error trapping (only manifest on malformed ngrs -- This code is predicated on the assumption that your are ONLY feeding it Irish or UK Grid references. -- It uses the single char prefix of Irish grid refs to tell the difference, UK grid refs have a two letter prefix. -- We would like an even number of digits for the rest of the grid ref. -- Anything in the NGR other than 0-9, A-Z, a-z is eliminated. -- WARNING this assumes there are no decimal points in your NGR components. -- The transformation from OSGB36/Ireland 1965 to WGS84 is more precise than 5 m. -- The function is case insensitive local oscoord = {} local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local namespace = mw.title.getCurrentTitle().namespace; local pow = math.pow local sqrt = math.sqrt local abs = math.abs local floor = math.floor local sin = math.sin local cos = math.cos local tan = math.tan local atan = math.atan local dr = math.deg(1.0) local function northeast(lett,num,shift) -- split into northings and eastings local le=mw.ustring.len(num) if le%2 == 1 then return {err="Malformed numerical part of NGR"} end local pr=le/2 local n = mw.ustring.sub(num,pr+1) local e = mw.ustring.sub(num,1,pr) -- Hack to move to center of square: append a 5 to northings and eastings shift = yesno(shift) if shift then n = n.."5" e = e.."5" pr = pr+1 end -- end hack n = n == '' and 0 or n e = e == '' and 0 or e pr = pow(10.0,(5.0-pr)) local T1 = mw.ustring.byte(mw.ustring.sub(lett,1,1))-65 if T1>8 then T1 = T1-1 end local T2 = nil if mw.ustring.len(lett)>1 then T2 = mw.ustring.byte(mw.ustring.sub(lett,2))-65 if T2>8 then T2 = T2-1 end end return {n=n,e=e,pr=pr,T1=T1,T2=T2} end local function GBEN2LL(e,n) -- True Origin is 2 deg W local phi0uk=-2.0 -- True Origin is 49 deg N local lambda0uk=49.0 -- scale factor @ central meridian local F0uk=0.9996012717 -- True origin in 400 km E of false origin local E0uk=400000.0 --True origin is 100 km S of false origin local N0uk=-100000.0 -- semi-major axis (in line to equator) 0.996012717 is yer scale @ central meridian local auk=6377563.396*F0uk --semi-minor axis (in line to poles) local buk=6356256.91*F0uk -- flatness=a1-b1/(a1+b1) local n1uk=0.00167322025032508731869331280635710896296 -- first eccentricity squared=2*f-f^2where f=(a1-b1)/a1 local e2uk=0.006670539761597529073698869358812557054558 local k=(n-N0uk)/auk+lambda0uk/dr local nextcounter=0 local j3, j4, j5, j6, m repeat nextcounter=nextcounter+1 local k3=k-lambda0uk/dr local k4=k+lambda0uk/dr j3=(1.0+n1uk+1.25*pow(n1uk,2.0)+1.25*pow(n1uk,3.0))*k3 j4=(3.0*n1uk+3.0*pow(n1uk,2.0)+2.625*pow(n1uk,3.0))*sin(k3)*cos(k4) j5=(1.875*pow(n1uk,2.0)+1.875*pow(n1uk,3.0))*sin(2.0*k3)*cos(2.0*k4) j6=35.0/24.0*pow(n1uk,3.0)*sin(3.0*k3)*cos(3.0*k4) m=buk*(j3-j4+j5-j6) k=k+(n-N0uk-m)/auk until abs(n-N0uk-m)<=0.000000001 or nextcounter>=100 local v=auk/sqrt(1.0-e2uk*pow(sin(k),2.0)) local r=v*(1.0-e2uk)/(1.0-e2uk*pow(sin(k),2.0)) local h2=v/r-1.0 local y1=e-E0uk j3=tan(k)/(2.0*r*v) j4=tan(k)/(24.0*r*pow(v,3.0))*(5.0+3.0*pow(tan(k),2.0)+h2-9.0*pow(tan(k),2.0)*h2) j5=tan(k)/(720.0*r*pow(v,5.0))*(61.0+90.0*pow(tan(k),2.0)+45.0*pow(tan(k),4.0)) local k9=k-y1*y1*j3+pow(y1,4.0)*j4-pow(y1,6.0)*j5 j6=1.0/(cos(k)*v) local j7=1.0/(cos(k)*6.0*pow(v,3.0))*(v/r+2.0*pow(tan(k),2.0)) local j8=1.0/(cos(k)*120.0*pow(v,5.0))*(5.0+28.0*pow(tan(k),2.0)+24.0*pow(tan(k),4.0)) local j9=1.0/(cos(k)*5040.0*pow(v,7.0)) local j9=j9*(61.0+662.0*pow(tan(k),2.0)+1320.0*pow(tan(k),4.0)+720.0*pow(tan(k),6.0)) local long=phi0uk+dr*(y1*j6-y1*y1*y1*j7+pow(y1,5.0)*j8-pow(y1,7.0)*j9) local lat=k9*dr local v=6377563.396/sqrt(1.0-e2uk*pow(sin(k),2.0)) local cartxa=v*cos(k9)*cos(long/dr) local cartya=v*cos(k9)*sin(long/dr) local cartza=(1.0-e2uk)*v*sin(k9) -- Helmert-Transformation from OSGB36 to WGS84 map date local rotx=-0.1502/3600.0/dr local roty=-0.2470/3600.0/dr local rotz=-0.8421/3600.0/dr local scale=-20.4894/1000000.0 local cartxb=446.448+(1.0+scale)*cartxa+rotz*cartya-roty*cartza local cartyb=-125.157-rotz*cartxa+(1.0+scale)*cartya+rotx*cartza local cartzb=542.06+roty*cartxa-rotx*cartya+(1.0+scale)*cartza -- convert Cartesian to long/lat local awgs84=6378137.0 local bwgs84=6356752.3141 local e2wgs84=0.00669438003551279089034150031998869922791 local lambdaradwgs84=atan(cartyb/cartxb) long=lambdaradwgs84*dr local pxy=sqrt(pow(cartxb,2.0)+pow(cartyb,2.0)) local phiradwgs84 local phinewwgs84=atan(cartzb/pxy/(1.0-e2wgs84)) nextcounter=0 repeat phiradwgs84=phinewwgs84 nextcounter=nextcounter+1 v=awgs84/sqrt(1.0-e2wgs84*pow(sin(phiradwgs84),2.0)) phinewwgs84=atan((cartzb+e2wgs84*v*sin(phiradwgs84))/pxy) until abs(phinewwgs84-phiradwgs84)<=0.000000000001 or nextcounter>=100 lat=phinewwgs84*dr return {region="GB",lat=lat,long=long} end local function GB2LL(lett,num) -- British OS to Lat+Long -- first caclulate e,n -- computing e and n exactly, to get SW corner of box local ne = northeast(lett,num) if ne.err then return {region="GB",err=ne.err} end -- use British definition of e and n local e=500000.0*(ne.T1%5)+100000.0*(ne.T2%5)-1000000.0+ne.e*ne.pr local n=1900000.0-500000.0*floor(ne.T1/5)-100000.0*floor(ne.T2/5)+ne.n*ne.pr local result = GBEN2LL(e,n) result.prec = 0.8165*ne.pr return result end local function IrishEN2LL(e,n) -- True Origin is 8 deg W local phi0ir=-8.0 -- True Origin is 53.5 deg N local lambda0ir=53.5 -- scale factor @ central meridian local F0ir=1.000035 -- True origin in 200 km E of false origin local E0ir=200000.0 --True origin is 250km N of false origin local N0ir=250000.0 -- semi-major axis (in line to equator) 1.000035 is yer scale @ central meridian local air=6377340.189*F0ir --semi-minor axis (in line to poles) local bir=6356034.447*F0ir -- flatness=a1-b1/(a1 + b1) local n1ir=0.001673220384152058651484728058385228837777 -- first eccentricity squared=2*f-f^2 where f=(a1-b1)/a1 local e2ir=0.006670540293336110419293763349975612794125 local k=(n-N0ir)/air+lambda0ir/dr local nextcounter=0 local j3,j4,j5,j6,m repeat nextcounter=nextcounter+1 local k3=k-lambda0ir/dr local k4=k+lambda0ir/dr j3=(1.0+n1ir+1.25*pow(n1ir,2.0)+1.25*pow(n1ir,3.0))*k3 j4=(3.0*n1ir+3.0*pow(n1ir,2.0)+2.625*pow(n1ir,3.0))*sin(k3)*cos(k4) j5=(1.875*pow(n1ir,2.0)+1.875*pow(n1ir,3.0))*sin(2.0*k3)*cos(2.0*k4) j6=35.0/24.0*pow(n1ir,3.0)*sin(3.0*k3)*cos(3.0*k4) m=bir*(j3-j4+j5-j6) k=k+(n-N0ir-m)/air until abs(n-N0ir-m)<=0.000000000001 or nextcounter>=10000 local v=air/sqrt(1.0-e2ir*pow(sin(k),2.0)) local r=v*(1.0-e2ir)/(1.0-e2ir*pow(sin(k),2.0)) local h2=v/r-1.0 local y1=e-E0ir j3=tan(k)/(2.0*r*v) j4=tan(k)/(24.0*r*pow(v,3.0))*(5.0+3.0*pow(tan(k),2.0)+h2-9.0*pow(tan(k),2.0)*h2) j5=tan(k)/(720.0*r*pow(v,5.0))*(61.0+90.0*pow(tan(k),2.0)+45.0*pow(tan(k),4.0)) local k9=k-y1*y1*j3+pow(y1,4.0)*j4-pow(y1,6.0)*j5 j6=1.0/(cos(k)*v) local j7=1.0/(cos(k)*6.0*pow(v,3.0))*(v/r+2.0*pow(tan(k),2.0)) local j8=1.0/(cos(k)*120.0*pow(v,5.0))*(5.0+28.0*pow(tan(k),2.0)+24.0*pow(tan(k),4.0)) local j9=1.0/(cos(k)*5040.0*pow(v,7.0)) local j9=j9*(61.0+662.0*pow(tan(k),2.0)+1320.0*pow(tan(k),4.0)+720.0*pow(tan(k),6.0)) local long=phi0ir+dr*(y1*j6-y1*y1*y1*j7+pow(y1,5.0)*j8-pow(y1,7.0)*j9) local lat=k9*dr -- convert long/lat to Cartesian coordinates v=6377340.189/sqrt(1.0-e2ir*pow(sin(k),2.0)) local cartxa=v*cos(k9)*cos(long/dr) local cartya=v*cos(k9)*sin(long/dr) local cartza=(1.0-e2ir)*v*sin(k9) -- Helmert-Transformation from Ireland 1965 to WGS84 map date local rotx=1.042/3600.0/dr local roty=0.214/3600.0/dr local rotz=0.631/3600.0/dr local scale=8.15/1000000.0 local cartxb=482.53+(1.0+scale)*cartxa+rotz*cartya-roty*cartza local cartyb=-130.596-rotz*cartxa+(1.0+scale)*cartya+rotx*cartza local cartzb=564.557+roty*cartxa-rotx*cartya+(1.0+scale)*cartza -- convert Cartesian to long/lat local awgs84=6378137.0 local bwgs84=6356752.3141 local e2wgs84=0.00669438003551279089034150031998869922791 local lambdaradwgs84=atan(cartyb/cartxb) long=lambdaradwgs84*dr local pxy=sqrt(pow(cartxb,2.0)+pow(cartyb,2.0)) local phinewwgs84=atan(cartzb/pxy/(1.0-e2wgs84)) local phiradwgs84 nextcounter=0 repeat phiradwgs84=phinewwgs84 nextcounter=nextcounter+1 v=awgs84/sqrt(1.0-e2wgs84*pow(sin(phiradwgs84),2.0)) phinewwgs84=atan((cartzb+e2wgs84*v*sin(phiradwgs84))/pxy) until abs(phinewwgs84-phiradwgs84)<=0.000000000001 or nextcounter>=10000 lat=phinewwgs84*dr return {region="IE",lat=lat,long=long} end local function Irish2LL(lett,num) -- Irish OS to Lat+Long -- first caclulate e,n -- computing e and n exactly, to get SW corner of box local ne = northeast(lett,num) if ne.err then return {region="IE", err=ne.err} end -- use Irish definition of northing and easting local e=100000.0*(ne.T1%5.0)+ne.e*ne.pr local n=ne.n*ne.pr+100000.0*(4.0-floor(ne.T1/5.0)) local result = IrishEN2LL(e,n) result.prec = 0.8165*ne.pr -- useful @ Commons return result end local function empty(s) return not s or s == '' end local function NGR2LL(ngr) local result = {} ngr, _ = mw.ustring.gsub(mw.ustring.upper(ngr),"[%s%p]","") local first, last, lett, num = mw.ustring.find(ngr,"^([A-Z]+)(%d+)$") if not first or empty(lett) or empty(num) or mw.ustring.len(lett) > 2 then return {err="Malformed NGR"} end if mw.ustring.len(lett) == 1 then return Irish2LL(lett,num) end return GB2LL(lett, num) end local function split(s,sep) -- split a string s into chunks, separated by sep sep = sep or "%s" local t = {} for chunk in mw.ustring.gmatch(s,"([^"..sep.."]+)") do table.insert(t,chunk) end return t end local function trim(s) s, _ = mw.ustring.gsub(s,"^%s+","") s, _ = mw.ustring.gsub(s,"%s+$","") return s end local function alldigits(s) return not mw.ustring.find(s,"%D") end local function warning(errmsg) local preview = require('Module:If preview') local msg = errmsg or 'Empty OS grid ref' local html = preview._warning({ msg }) if namespace == 0 and errmsg then html = html..'[[Category:Pages with malformed OS coordinates]]' end return html end function oscoord.main(frame) local args = getArgs(frame) local input = args[1] if empty(input) then return warning(nil) end local linktitle = args[2] local namearg = args["name"] local rawurl = yesno(args["rawurl"]) local args = split(input,'_') local LL local restargs = 1 local current_page = mw.title.getCurrentTitle() local pagename = mw.uri.encode( current_page.prefixedText, 'WIKI' ); if #args >= 2 and alldigits(args[2]) then if mw.ustring.sub(args[1],1,1) == 'i' then local firstArg = mw.ustring.sub(args[1],2) if alldigits(firstArg) then LL = IrishEN2LL(firstArg,args[2]) restargs = 3 if empty(linktitle) then linktitle=args[1]..'_'..args[2] end end elseif alldigits(args[1]) then LL = GBEN2LL(args[1],args[2]) restargs = 3 if empty(linktitle) then linktitle=args[1]..'_'..args[2] end end else LL = NGR2LL(args[1]) restargs = 2 if empty(linktitle) then linktitle=args[1] end end linktitle = trim(linktitle) if not empty(LL.err) then return linktitle ..warning(LL.err) end -- https://geohack.toolforge.org/geohack.php?pagename=Mount_Whitney&params=36.578580925_N_118.29199495_W_type:mountain_region:US-CA_scale:100000_source:NGS local url = '' if not rawurl then url = url..'[' end url = url..'https://geohack.toolforge.org/geohack.php?' if not empty(pagename) then url = url..'pagename='..pagename..'&' end LL.lat = LL.lat or 0 LL.long = LL.long or 0 url = url..'params='..LL.lat..'_N_' if LL.long < 0 then url = url..(-LL.long)..'_W' else url = url..LL.long..'_E' end for i = restargs,#args do url = url..'_'..args[i] end if not mw.ustring.find(input,"region") and LL.region then url = url..'_region:'..LL.region end if not mw.ustring.find(input,"scale") and not mw.ustring.find(input,"type") and not mw.ustring.find(input,"dim") and LL.prec then url = url..'_dim:'..floor(50*LL.prec+0.5)..'m' end if not empty(namearg) then url = url .. "&title=" .. mw.uri.encode(namearg) end if not rawurl then url = url..' '..linktitle..']' end return url end function oscoord.oscoord(frame) local output = '<span class="plainlinks nourlexpansion" style="white-space: nowrap">' .. oscoord.main(frame) .. '</span>' if namespace == 0 then output = output .. '[[Category:Articles with OS grid coordinates]]' end return output end return oscoord cfc17a53b8311d7bd2cec401a6dec6c7f6cbfb5d Module:Plain text 828 169 391 2023-07-24T05:28:17Z wikipedia>Jonesey95 0 keep contents of sub, sup, and underline (see talk) Scribunto text/plain --converts text with wikilinks to plain text, e.g "[[foo|gah]] is [[bar]]" to "gah is bar" --removes anything enclosed in tags that isn't nested, mediawiki strip markers (references etc), files, italic and bold markup require[[strict]] local p = {} function p.main(frame) local text = frame.args[1] local encode = require('Module:yesno')(frame.args.encode) return p._main(text, encode) end function p._main(text, encode) if not text then return end text = mw.text.killMarkers(text) :gsub('&nbsp;', ' ') --replace nbsp spaces with regular spaces :gsub('<br ?/?>', ', ') --replace br with commas :gsub('<span.->(.-)</span>', '%1') --remove spans while keeping text inside :gsub('<i.->(.-)</i>', '%1') --remove italics while keeping text inside :gsub('<b.->(.-)</b>', '%1') --remove bold while keeping text inside :gsub('<em.->(.-)</em>', '%1') --remove emphasis while keeping text inside :gsub('<strong.->(.-)</strong>', '%1') --remove strong while keeping text inside :gsub('<sub.->(.-)</sub>', '%1') --remove subscript markup; retain contents :gsub('<sup.->(.-)</sup>', '%1') --remove superscript markup; retain contents :gsub('<u.->(.-)</u>', '%1') --remove underline markup; retain contents :gsub('<.->.-<.->', '') --strip out remaining tags and the text inside :gsub('<.->', '') --remove any other tag markup :gsub('%[%[%s*[Ff][Ii][Ll][Ee]%s*:.-%]%]', '') --strip out files :gsub('%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:.-%]%]', '') --strip out use of image: :gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:.-%]%]', '') --strip out categories :gsub('%[%[[^%]]-|', '') --strip out piped link text :gsub('([^%[])%[[^%[%]][^%]]-%s', '%1') --strip out external link text :gsub('^%[[^%[%]][^%]]-%s', '') --strip out external link text :gsub('[%[%]]', '') --then strip out remaining [ and ] :gsub("'''''", "") --strip out bold italic markup :gsub("'''?", "") --not stripping out '''' gives correct output for bolded text in quotes :gsub('----+', '') --remove ---- lines :gsub("^%s+", "") --strip leading :gsub("%s+$", "") --and trailing spaces :gsub("%s+", " ") --strip redundant spaces if encode then return mw.text.encode(text) else return text end end return p 8d406c43e8cf1dadf34be7d3b395f44ba4c48b75 Template:Cite book/doc 10 691 1550 2023-07-24T21:51:38Z wikipedia>Rontrigger 0 wikitext text/x-wiki {{high-risk}} <noinclude>{{pp-protected|reason=Persistent [[WP:Disruptive editing|disruptive editing]] Protecting high visibility template.|small=yes}}</noinclude>{{Documentation subpage}} <!-- Categories go where indicated at the bottom of this page, please; interwikis go to Wikidata (see also: [[Wikipedia:Wikidata]]). --> {{csdoc|lua}} {{csdoc|cs1}} {{csdoc|lead|books}} When citing an article in a periodical, use {{tl|cite journal}} or {{tl|cite magazine}}. For conference papers, use {{tl|cite conference}}. For edited collections, use {{tl|cite encyclopedia}}. For theses, use {{tl|cite thesis}}. ==Usage== {{csdoc|usage}} {{csdoc|usage common}} ; To cite a book with a credited author : <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |author-link= |date= |title= |url= |location= |publisher= |page= |isbn=}}</syntaxhighlight> ; To cite a book with no credited author : <syntaxhighlight lang="wikitext" inline>{{cite book |author=<!--Staff writer(s); no by-line.--> |date= |title= |url= |location= |publisher= |page= |isbn=}}</syntaxhighlight> ; To cite an online book that has been archived : <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |date= |title= |url= |url-status= |location= |publisher= |isbn= |archive-url= |archive-date=}}</syntaxhighlight> ; To cite a book written in a foreign language : <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |date= |title= |trans-title= |url= |language= |location= |publisher= |isbn=}}</syntaxhighlight> ; To cite and quote an archived, two-author, foreign language book re-published as a PDF on an information aggregation service requiring a subscription : <syntaxhighlight lang="wikitext" inline>{{cite book |last1= |first1= |last2= |first2= |date= |title= |trans-title= |url= |url-status= |url-access= |format= |language= |location= |publisher= |isbn= |archive-url= |archive-date= |via= |quote=}}</syntaxhighlight> {{end}} {{csdoc|usage vertical common}} <syntaxhighlight lang="wikitext"> {{cite book | last = | first = | author-link = | date = | title = | url = | location = | publisher = | page = <!-- or pages: --> | isbn = }} </syntaxhighlight> {{end}} {{csdoc|usage full}} <syntaxhighlight lang="wikitext" inline>{{cite book |last1= |first1= |author-link1= |last2= |first2= |author-link2= |last3= |first3= |author-link3= |last4= |first4= |author-link4= |last5= |first5= |author-link5= |display-authors= |author-mask1= |author-mask2= |author-mask3= |author-mask4= |author-mask5= |editor-last1= |editor-first1= |editor-link1= |editor-last2= |editor-first2= |editor-link2= |editor-last3= |editor-first3= |editor-link3= |editor-last4= |editor-first4= |editor-link4= |editor-last5= |editor-first5= |editor-link5= |display-editors= |editor-mask1= |editor-mask2= |editor-mask3= |editor-mask4= |editor-mask5= |translator-last1= |translator-first1= |translator-link1= |translator-last2= |translator-first2= |translator-link2= |translator-last3= |translator-first3= |translator-link3= |translator-last4= |translator-first4= |translator-link4= |translator-last5= |translator-first5= |translator-link5= |display-translators= |translator-mask1= |translator-mask2= |translator-mask3= |translator-mask4= |translator-mask5= |others= |name-list-style= |date= |year= |orig-date= |chapter= |script-chapter= |trans-chapter= |chapter-url= |chapter-url-access= |chapter-format= |title= |script-title= |trans-title= |title-link= |url= |url-status= |url-access= |format= |type= |series= |language= |volume= |edition= |publication-place= |location= |publisher= |publication-date= |page= |pages= |at= |no-pp= |arxiv= |asin= |asin-tld= |bibcode= |bibcode-access= |biorxiv= |citeseerx= |doi= |doi-access= |doi-broken-date= |eissn= |hdl= |hdl-access= |isbn= |ismn= |issn= |jfm= |jstor= |jstor-access= |lccn= |mr= |oclc= |ol= |ol-access= |osti= |osti-access= |pmc= |pmc-embargo-date= |pmid= |rfc= |sbn= |ssrn= |s2cid= |s2cid-access= |zbl= |id= |archive-url= |archive-date= |access-date= |via= |quote= |script-quote= |trans-quote= |quote-page= |quote-pages= |mode= |postscript= |ref=}}</syntaxhighlight> {{end}} {| class="wikitable" |+Full parameter set in vertical format ! Parameters !! Prerequisites !! Brief instructions / notes !! Vertical list |- | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | | Author's last name or single name author. Don't link. | rowspan="111" style="vertical-align:top;" | <pre style="margin:0px; border:none;"> {{cite book &nbsp;|last1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= |first1 = |author-link1 = |last2 = |first2 = |author-link2 = |last3 = |first3 = |author-link3 = |last4 = |first4 = |author-link4 = |last5 = |first5 = |author-link5 = |display-authors = |author-mask1 = |author-mask2 = |author-mask3 = |author-mask4 = |author-mask5 = |editor-last1 = |editor-first1 = |editor-link1 = |editor-last2 = |editor-first2 = |editor-link2 = |editor-last3 = |editor-first3 = |editor-link3 = |editor-last4 = |editor-first4 = |editor-link4 = |editor-last5 = |editor-first5 = |editor-link5 = |display-editors = |editor-mask1 = |editor-mask2 = |editor-mask3 = |editor-mask4 = |editor-mask5 = |translator-last1 = |translator-first1 = |translator-link1 = |translator-last2 = |translator-first2 = |translator-link2 = |translator-last3 = |translator-first3 = |translator-link3 = |translator-last4 = |translator-first4 = |translator-link4 = |translator-last5 = |translator-first5 = |translator-link5 = |display-translators = |translator-mask1 = |translator-mask2 = |translator-mask3 = |translator-mask4 = |translator-mask5 = |others = |name-list-style = |date = |year = |orig-date = |chapter = |script-chapter = |trans-chapter = |chapter-url = |chapter-url-access = |chapter-format = |title = |script-title = |trans-title = |title-link = |url = |url-status = |url-access = |format = |type = |series = |language = |volume = |edition = |publication-place = |location = |publisher = |publication-date = |page = |pages = |at = |no-pp = |arxiv = |asin = |asin-tld = |bibcode = |bibcode-access = |biorxiv = |citeseerx = |doi = |doi-access = |doi-broken-date = |eissn = |hdl = |hdl-access = |isbn = |ismn = |issn = |jfm = |jstor = |jstor-access = |lccn = |mr = |oclc = |ol = |ol-access = |osti = |osti-access = |pmc = |pmc-embargo-date = |pmid = |rfc = |sbn = |ssrn = |s2cid = |s2cid-access = |zbl = |id = |archive-url = |archive-date = |access-date = |via = |quote = |script-quote = |trans-quote = |quote-page = |quote-pages = |mode = |postscript = |ref = }} </pre> |- | {{tooltip|2=or any of its aliases, including: first; given1; given; author-first1; author-first; (etc.)|first1}} | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | Author's first name. Don't link. |- | {{tooltip|2=or any of its aliases, including: author-link; author-link1; subject-link1; subject-link; (etc.)|author-link1}} | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | Title of Wikipedia article about the first author. Don't link. |- | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | Like <code>last1</code>, but for 2nd author. |- | {{tooltip|2=or any of its aliases, including: given2; author-first2; (etc.)|first2}} | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} | Like <code>first1</code>, but for 2nd author. |- | {{tooltip|2=or any of its aliases, including: subject-link2; (etc.)|author-link2}} | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} | Like <code>author-link1</code>, but for 2nd author. |- | {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}} | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} | Like <code>last1</code>, but for 3rd author. |- | {{tooltip|2=or any of its aliases, including: given3; author-first3; (etc.)|first3}} | {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}} | Like <code>first1</code>, but for 3rd author. |- | {{tooltip|2=or any of its aliases, including: subject-link3; (etc.)|author-link3}} | {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}} | Like <code>author-link1</code>, but for 3rd author. |- | {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}} | {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}} | Like <code>last1</code>, but for 4th author. |- | {{tooltip|2=or any of its aliases, including: given4; author-first4; (etc.)|first4}} | {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}} | Like <code>first1</code>, but for 4th author. |- | {{tooltip|2=or any of its aliases, including: subject-link4; (etc.)|author-link4}} | {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}} | Like <code>author-link1</code>, but for 4th author. |- | {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}} | {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}} | Like <code>last1</code>, but for 5th author. Similar: last6, etc. |- | {{tooltip|2=or any of its aliases, including: given5; author-first5; (etc.)|first5}} | {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}} | Like <code>first1</code>, but for 5th author. Similar: first6, etc. |- | {{tooltip|2=or any of its aliases, including: subject-link5; (etc.)|author-link5}} | {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}} | Like <code>author-link1</code>, but for 5th author. Similar: author-link6, etc. |- | {{tooltip|2=or alias displayauthors|display-authors}} | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | Number (number of authors displayed) or <code>etal</code> (more authors) |- | {{tooltip|2=or any of its aliases, including: author-mask; author1-mask; (etc.)|author-mask1}} | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | rowspan="5" | See [[#Display options|Display options]] below; not for lists of cited works |- | {{tooltip|2=or any of its aliases, including: author2-mask; (etc.)|author-mask2}} | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} |- | {{tooltip|2=or any of its aliases, including: author3-mask; (etc.)|author-mask3}} | {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}} |- | {{tooltip|2=or any of its aliases, including: author4-mask; (etc.)|author-mask4}} | {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}} |- | {{tooltip|2=or any of its aliases, including: author5-mask; (etc.)|author-mask5}} | {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}} |- || editor-last1 || || may also use "editor-last" |- || editor-first1 || editor-last1 || may also use "editor-first" |- || editor-link1 || editor-last1 || may also use "editor-link" |- || editor-mask1 || editor-last1 || |- || display-editors || || |- | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | | Like <code>last1</code>, but for translator |- | {{tooltip|2=or any of its aliases, including: translator-first; translator-given1; translator-given; (etc.)|translator-first1}} | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | Like <code>first1</code>, but for translator |- | {{tooltip|2=or any of its aliases, including: translator-link; (etc.)|translator-link1}} | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | Like <code>author-link1</code>, but for translator |- | {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}} | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | Like <code>last1</code>, but for 2nd translator. Similar: translator-last3, etc. |- | {{tooltip|2=or any of its aliases, including: translator2-first; translator-given2; (etc.)|translator-first2}} | {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}} | Like <code>first1</code>, but for 2nd translator. Similar: translator-first3, etc. |- | {{tooltip|2=or alias translator2-link|translator-link2}} | {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}} | Like <code>author-link1</code>, but for 2nd transl. Similar: translator-link3, ... |- | {{nowrap|display-translators}} | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | Like <code>display-authors</code>, but for translators |- | {{tooltip|2=or any of its aliases, including: translator-mask; (etc.)|translator-mask1}} | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | rowspan="2" | See [[#Display options|Display options]] below; not for lists of cited works |- | {{tooltip|2=or alias translator2-mask|translator-mask2}} | {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}} |- | name-list-style | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} | Set to <code>amp</code> or <code>ampersand</code> to separate the last author with {{nowrap|"<code> & </code>"}}; set to <code>and</code> to separate with {{nowrap|"<code> and </code>"}} |- || others || || |- || date || || |- || year || || |- || orig-date || date or year || |- || chapter || || This should be the title of the chapter cited. Do not wikilink "chapter" if "chapter-url" is provided |- || script-chapter || || |- || trans-chapter || chapter or script-chapter || |- || chapter-url || chapter or script-chapter || |- || chapter-format || chapter-url || |- || title || || |- || script-title || || |- || trans-title || title or script-title || |- || title-link || title or script-title || Name of a Wikipedia article about the work. Do not use if "url" is provided |- || url || title or script-title || Do not use if "title-link" is provided |- || url-status || archive-url || |- || url-access || url || |- || format || url || |- || type || || |- || series || || |- || language || || |- || volume || || |- || edition || || |- || publication-place || publisher || |- || location || publisher || can be used for written-at location when "publication-place" is used for publication place |- || publisher || || |- || publication-date || || |- || page || || choose one: "page", "pages", or "at" |- || pages || || choose one: "page", "pages", or "at". Use when content on multiple pages supports the article text. |- || at || || choose one: "page", "pages", or "at" |- || no-pp || page or pages || set no-pp to "yes" to suppress the "p." or "pp." before page numbers |- || arxiv || || |- || asin || || |- || asin-tld || asin || |- || bibcode || || |- || biorxiv || || |- || citeseerx || || |- || doi || || |- || doi-broken-date || doi || |- || eissn || || |- || hdl || || |- || isbn || || '''always include ISBN''', if one has been assigned |- || issn || || |- || ismn || || |- || jfm || || |- || jstor || || |- || lccn || || |- || mr || || |- || oclc || || |- || ol || || |- || osti || || |- || pmc || || |- || pmc-embargo-date || pmc || |- || pmid || || |- || rfc || || |- || sbn || || |- || ssrn || || |- || s2cid || || |- || zbl || || |- || id || || |- || archive-url || archive-date, url || |- || archive-date || archive-url || |- || access-date || url || |- || via || || |- || quote || || |- || script-quote || || |- || trans-quote || || |- || quote-page || || choose one: "quote-page", "quote-pages" |- || quote-pages || || choose one: "quote-page", "quote-pages". Use when quote contains contents from multiple pages. |- || mode || || <code>cs1</code> or <code>cs2</code> |- || postscript || || |- || ref || || |- | colspan="4" style="text-align: center" | If a field name is listed in the '''Prerequisites''' column, it is a prerequisite for the field to the left. |} ==Examples== {{markup2|t=Title |m=<syntaxhighlight lang="wikitext" inline>{{cite book |title=Mysterious Book}}</syntaxhighlight> |r={{cite book |title=Mysterious Book}} }} {{markup2|t=Title and year |m=<syntaxhighlight lang="wikitext" inline>{{cite book |title=Mysterious Book |date=1901}}</syntaxhighlight> |r={{cite book |title=Mysterious Book |date=1901}} }} {{markup2|t=Basic usage (single author) |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs}}</syntaxhighlight> |r={{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs}} }} {{markup2|t=Basic usage (two authors) |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Bloggs |first2=Fred |author-link2=Fred Bloggs |date=1974 |title=Book of Bloggs}}</syntaxhighlight> |r={{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Bloggs |first2=Fred |author-link2=Fred Bloggs |date=1974 |title=Book of Bloggs}} }} {{markup2|t=Basic usage with url (and access-date) and edition |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs |edition=1st |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}</syntaxhighlight> |r={{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs |edition=1st |url=https://en.wikipedia.org/ |access-date=February 17, 2006}} }}{{anchor|different authors}} {{markup2|t=Citing a chapter in a book with different authors for different chapters and an editor |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Compilation Book with Many Chapters and Distinct Chapter Authors |publisher=Book Publishers |pages=100–110 |chapter=Chapter 2: The History of the Bloggs Family |isbn=}}</syntaxhighlight> |r={{cite book |last=Bloggs |first=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Compilation Book with Many Chapters and Distinct Chapter Authors |publisher=Book Publishers |pages=100–110 |chapter=Chapter 2: The History of the Bloggs Family |isbn=}} }} {{markup2|t=Citing a chapter in a book with two joint authors and an editor |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |last2=Egg |first2=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Book with Many Chapters and Two Co-authors |publisher=Book Publishers |orig-date=1st pub. 1986 |pages=100–110 |chapter=Chapter 6: Getting There |chapter-url=https://en.wikipedia.org/ |isbn= |name-list-style=amp}}</syntaxhighlight> |r={{cite book |last1=Bloggs |first1=Joe |last2=Egg |first2=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Book with Many Chapters and Two Co-authors |publisher=Book Publishers |orig-date=1st pub. 1986 |pages=100–110 |chapter=Chapter 6: Getting There |chapter-url=https://en.wikipedia.org/ |isbn= |name-list-style=amp}} }} {{markup2|t=Three authors, title with a differently-named title link, edition |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Smith |first2=John |last3=Smythe |first3=Jim |title=1000 Acres |title-link=A Thousand Acres |edition=2nd}}</syntaxhighlight> |r={{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Smith |first2=John |last3=Smythe |first3=Jim |title=1000 Acres |title-link=A Thousand Acres |edition=2nd}} }} {{markup2|t=Complex usage showing effect of using volume parameter and lastauthoramp parameter (without volume and lastauthoramp) |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East. Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3}}</syntaxhighlight> |r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East. Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3}} }} {{markup2|t=Complex usage showing effect of using volume parameter and lastauthoramp parameter (with volume and lastauthoramp) |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East |volume=I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}</syntaxhighlight> |r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East |volume=I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}} }} {{markup2|t=Date without day, wikilinked title, publisher, pages, edition, location |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Cordell |first1=Bruce R. |last2=Grubb |first2=Jeff |last3=Noonan |first3=David |date=September 2001 |title=Manual of the Planes |title-link=Manual of the Planes |edition=3rd |publisher=Wizards of the Coast |location=Renton, Washington |isbn=0-7869-1850-0 |pages=134–137}}</syntaxhighlight> |r={{cite book |last1=Cordell |first1=Bruce R. |last2=Grubb |first2=Jeff |last3=Noonan |first3=David |date=September 2001 |title=Manual of the Planes |title-link=Manual of the Planes |edition=3rd |publisher=Wizards of the Coast |location=Renton, Washington |isbn=0-7869-1850-0 |pages=134–137}} }} {{markup2|t=Other language |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Jean |date=1974 |title=Livre de Bloggs |edition=1st |language=French |trans-title=Book of Bloggs |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}</syntaxhighlight> |r={{cite book |last=Bloggs |first=Jean |date=1974 |title=Livre de Bloggs |edition=1st |language=French |trans-title=Book of Bloggs |url=https://en.wikipedia.org/ |access-date=February 17, 2006}} }} {{markup2|t=Using a [[Digital object identifier|DOI]] |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Mumford |first=David |author-link=David Mumford |date=1999 |title=The Red Book of Varieties and Schemes: Includes the Michigan Lectures (1974) on Curves and Their Jacobians |edition=2nd |publisher=Springer-Verlag |doi=10.1007/b62130 |isbn=354063293X}}</syntaxhighlight> |r={{cite book |last=Mumford |first=David |author-link=David Mumford |date=1999 |title=The Red Book of Varieties and Schemes: Includes the Michigan Lectures (1974) on Curves and Their Jacobians |edition=2nd |publisher=Springer-Verlag |doi=10.1007/b62130 |isbn=354063293X}} }} {{markup2|t=Using author-mask parameter |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}</syntaxhighlight> |m2=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume II: The Germans Come to the Help of Their Ally (1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-66-1 |name-list-style=amp |author-mask=2}}</syntaxhighlight> |m3=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Gleave |first4=T. P. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=Sir James |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume III: British Fortunes Reach Their Lowest Ebb (September 1941 to September 1942) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-67-X |name-list-style=amp |author-mask=2}}</syntaxhighlight> |r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}} |r2={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume II: The Germans Come to the Help of Their Ally (1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-66-1 |name-list-style=amp |author-mask=2}} |r3={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Gleave |first4=T. P. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=Sir James |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume III: British Fortunes Reach Their Lowest Ebb (September 1941 to September 1942) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-67-X |name-list-style=amp |author-mask=2}} }} {{markup2|t=Using display-authors parameter |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |display-authors=1}}</syntaxhighlight> |r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |display-authors=1}} }} ==Parameters== ===Syntax=== {{csdoc|syntax}} ===COinS=== {{csdoc|coins}} ===What's new=== {{csdoc|whats new}} ===Deprecated=== {{csdoc|deprecated}} ===Description=== ====Authors==== {{csdoc|author|contributor=yes|others=yes}} ====Date==== {{csdoc|date}} ====Title==== {{csdoc|title|title_format=italics}} {{csdoc|type}} {{csdoc|chapter}} {{csdoc|language}} ====Publisher==== {{csdoc|publisher}} ====Edition, series, volume==== {{csdoc|edition}} {{csdoc|series}} {{csdoc|volume}} ====In-source locations==== {{csdoc|pages}} ===={{Anchor|url}}URL==== {{csdoc|url}} ====Chapter URL==== {{csdoc|chapterurl}} ====Anchor==== {{distinguish|#Identifiers}} {{csdoc|ref}} ====Identifiers==== {{distinguish|#Anchor}} {{csdoc|id1}} {{csdoc|id2}} ====Quote==== {{csdoc|quote}} ====Editors==== {{csdoc|editor}} ====Lay summary==== {{csdoc|lay}} ====Display options==== {{csdoc|display}} ====Subscription or registration required==== {{csdoc|registration}} ==TemplateData== See [[Template:Cite book/TemplateData]]. == Citation tools== {{main|Help:Citation tools}} *'''[https://citer.toolforge.org/ Citer]''': A web tool that converts a DOI, ISBN, PMID, PMCID, [[OCLC]], or [[Google Books]] URL into a citation and [[Help:Shortened footnotes|shortened footnote]]. * '''[https://alyw234237.github.io/wiki-doi-gbooks-citation-maker/ DOI and Google Books Citation Maker]''': A web tool for generating filled citation templates via DOIs and Google Books URLs. {{Citation Style 1}} {{Wikipedia referencing}} {{UF-COinS}} <includeonly>{{Sandbox other|| <!-- Categories go below this line, please; interwikis go to Wikidata, thank you! --> [[Category:Citation Style 1 templates|B]] [[Category:Book citation templates| ]] [[Category:Book templates]] }}</includeonly> 4035f77bf4e9982c578739e7272d6d3b11242c31 Template:Lua/doc 10 254 1267 563 2023-07-25T13:08:32Z wikipedia>JWBTH 0 See also: * {{tl|Uses TemplateStyles}} wikitext text/x-wiki {{Documentation subpage}} {{Template shortcut|Lua talk}} {{Lua|Module:Lua banner}} <!-- Categories go at the bottom of this page, and interwikis go on Wikidata. --> {{for|template to indicate [[Luba-Kasai language]] words|Template:Lang-lua}} This template is used to indicate that a template uses one or more [[Lua (programming language)|Lua]] modules (pages in the <code>Module:</code> namespace). It is placed at the top of the template's /doc page. It automatically adds a floating right notification box, and it adds the template to [[:Category:Lua-based templates]] or to one of its subcategories. == Usage == ; Basic : {{tlx|Lua|''module name''}} ; All parameters : {{tlx|Lua|''module 1''|''module 2''|''module 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}} The first module name is required. == Examples == * {{tlx|Lua|Module:Example}} {{Lua|Module:Example|nocat=true}} {{clear}} * {{tlx|Lua|Module:Example|Module:Example}} {{Lua|Module:Example|Module:Example|nocat=true}} {{clear}} * {{tlx|Lua}} {{Lua|nocat=true}} {{clear}} == Categorisation == ===Template category=== This template adds pages to [[:Category:Lua-based templates]] if the page is in the template namespace, and it is not on any of the subpages /doc, /sandbox, /sandbox2 or /testcases. You can specify a different category with the {{para|category}} parameter, e.g. {{para|category|Lua String-based templates}}. Some modules have a default category other than [[:Category:Lua-based templates]]: * [[Module:String]] has the default category [[:Category:Templates based on the String Lua module]]. * [[Module:Math]] has the default category [[:Category:Templates based on the Math Lua module]]. * [[Module:BaseConvert]] has the default category [[:Category:Templates based on the BaseConvert Lua module]]. * [[Module:Citation/CS1]] has the default category [[:Category:Templates based on the Citation/CS1 Lua module]]. ===Error category=== If no modules are specified, the transcluded page will be added to [[:Category:Lua templates with errors]]. ===Category suppression=== To suppress all categorisation, use {{para|nocat|true}}. (As well as "true", the values "yes", "y", and "1" will also work.) == TemplateData == {{Format TemplateData|TNT=Lua banner}} == See also == * [[Wikipedia:Lua]] * {{tl|module rating}} * {{tl|Uses TemplateStyles}} <includeonly>{{Sandbox other| | <!-- Categories go here, and interwikis go on Wikidata. --> [[Category:Lua-based templates| ]] [[Category:Template namespace templates]] }}</includeonly> a0a237a34ba98213650e4c11064bd4c8f944fcc6 Template:UF-coord-classes 10 1672 3099 2023-07-25T22:28:21Z wikipedia>IznoRepeat 0 /* top */[[phab:T337149#8953569]], replaced: |url=// → |url=https:// wikitext text/x-wiki To always display coordinates as DMS values, add this to [[Special:Mypage/common.css|your common.css]]: <syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px"> .geo-default { display: inline } .geo-nondefault { display: inline } .geo-dec { display: none } .geo-dms { display: inline } </syntaxhighlight> To always display coordinates as decimal values, add this to [[Special:Mypage/common.css|your common.css]]: <syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px"> .geo-default { display: inline } .geo-nondefault { display: inline } .geo-dec { display: inline } .geo-dms { display: none } </syntaxhighlight> To display coordinates in both formats, add this to [[Special:Mypage/common.css|your common.css]]: <syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px"> .geo-default { display: inline } .geo-nondefault { display: inline } .geo-dec { display: inline } .geo-dms { display: inline } .geo-multi-punct { display: inline } </syntaxhighlight> If CSS is disabled, or you have an old copy of [[MediaWiki:Common.css]] cached, you will see both formats. (You can either clear your cache or manually refresh this URL: {{Plain link|url=https://en.wikipedia.org/w/index.php?title=MediaWiki:Common.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=2678400}}.) To disable display of the blue globe adjacent to coordinates, add this to [[Special:Mypage/common.js|your common.js]]: <syntaxhighlight lang="javascript" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px"> var wma_settings = {enabled:false} </syntaxhighlight> Note that this will disable [[meta:WikiMiniAtlas|WikiMiniAtlas]]. See also: {{section link|Wikipedia:Manual of Style/Dates and numbers|Geographical coordinates}}.<noinclude> [[Category:Coordinates templates]] [[Category:Microformat (uF) message templates]] [[Category:WikiProject Geographical coordinates|τ]] </noinclude> 31012e4b57af9d700090a8426a0a905684be6518 Template:Portal/doc 10 879 1948 2023-07-26T02:06:04Z wikipedia>IznoRepeat 0 /* Other mobile-friendly versions */[[phab:T337149#8953569]], replaced: |url=// → |url=https:// (2) wikitext text/x-wiki {{#ifeq: {{{type|}}} | module ||<!-- section not transcluded if type = module --> {{documentation subpage}} {{high-use}} {{lua|Module:Portal}} <!---PLEASE ADD METADATA TO THE <includeonly> SECTION AT THE BOTTOM OF THIS PAGE.---> This {{{type|template}}} produces a box with links to a [[Portal:Contents/Portals|portal]] or to multiple portals. It is most often used in the "See also" section of an article. '''If a portal does not exist, then it will not be displayed'''. As of December 11, 2021 (UTC), this portal template is now mobile-friendly, meaning that the portal links will appear on mobile devices. }}<!-- end of section not transcluded if type = module --> == Usage == {{Portal |Canada | Biography |History |Science}} '''Basic usage''' <div style="overflow:auto"> &#123;&#123;{{#ifeq: {{{type|}}} | module | &#35;invoke:Portal&#124;portal | Portal }} |''Portal 1'' |''Portal 2'' |''Portal 3'' |... &#125;&#125; </div> == Location == Within articles, {{#ifeq: {{{type|}}} | module | the output of the portal function | this template }} is meant to be placed at the top of the article's ''See also'' section. If there is no ''See also'' section, you may put it in the ''External links'' section instead; there is no need to create a new section just to house this template. If there is no ''External links'' section either, just put it below the article text in the place that seems most appropriate. There are no particular rules about the placement of portals on other kinds of pages. == Image == The portal image names are stored in subpages of [[Module:Portal/images]], organised by the first letter of the portal name. For example, the first letter of [[Portal:Feminism]] is "F", so the image name is stored at [[Module:Portal/images/f]]. If there is an entry for a portal on the correct page then the corresponding image will be shown next to the portal link. If no image is found then [[:File:Portal-puzzle.svg]] will be shown instead. It is also possible to specify aliases for portal images. For example, the code {{tlx|Portal|Detroit}} produces the same image as the code {{tlx|Portal|Metro Detroit}}. The "Detroit" alias is found on the page [[Module:Portal/images/aliases]]. The image-detection algorithm is case-insensitive. For example, the code {{tlx|Portal|Detroit}} will produce the same image as the code {{tlx|Portal|detroit}} (although the portal links will be different). Portal names are stored in lower case in the image subpages, and input is converted to lower case before being checked. To add new images to the list, please <span class="plainlinks">[https://en.wikipedia.org/w/index.php?title=Template_talk:Portal&action=edit&preload=Template:Edit_protected/preload&preloadparams%5b%5d=edit%20template-protected&preloadparams%5b%5d=&editintro=Template:Edit_protected/editintro&preloadtitle=Image+edit+request+on+{{CURRENTDAY}}+{{CURRENTMONTHNAME}}+{{CURRENTYEAR}}&section=new make a protected edit request at Template talk:Portal]</span> to get an administrator to edit the correct subpage for you. Portal images must be either in the public domain or available under a [[WP:ICTIC|free license]] that allows commercial reuse and derivative works; [[Wikipedia:Non-free content|fair-use]] images are not acceptable. The template {{tl|Portal icon demonstration}} may be of use when deciding whether an image is suitable for use as a portal icon; it formats an image using the same size and style that the {{tl|Portal}} template uses by default. A list of portals and aliases of portals without icons can be found at [[User:Dreamy Jazz Bot/Portals needing icons]]. It is updated infrequently, so ping the [[User:Dreamy Jazz|bot owner]] to update the list. {{Collapse top|List of image subpages}} {| class="wikitable" |- ! Page !! Description |- | [[Module:Portal/images/a]] || For portal names starting with "A". |- | [[Module:Portal/images/b]] || For portal names starting with "B". |- | [[Module:Portal/images/c]] || For portal names starting with "C". |- | [[Module:Portal/images/d]] || For portal names starting with "D". |- | [[Module:Portal/images/e]] || For portal names starting with "E". |- | [[Module:Portal/images/f]] || For portal names starting with "F". |- | [[Module:Portal/images/g]] || For portal names starting with "G". |- | [[Module:Portal/images/h]] || For portal names starting with "H". |- | [[Module:Portal/images/i]] || For portal names starting with "I". |- | [[Module:Portal/images/j]] || For portal names starting with "J". |- | [[Module:Portal/images/k]] || For portal names starting with "K". |- | [[Module:Portal/images/l]] || For portal names starting with "L". |- | [[Module:Portal/images/m]] || For portal names starting with "M". |- | [[Module:Portal/images/n]] || For portal names starting with "N". |- | [[Module:Portal/images/o]] || For portal names starting with "O". |- | [[Module:Portal/images/p]] || For portal names starting with "P". |- | [[Module:Portal/images/q]] || For portal names starting with "Q". |- | [[Module:Portal/images/r]] || For portal names starting with "R". |- | [[Module:Portal/images/s]] || For portal names starting with "S". |- | [[Module:Portal/images/t]] || For portal names starting with "T". |- | [[Module:Portal/images/u]] || For portal names starting with "U". |- | [[Module:Portal/images/v]] || For portal names starting with "V". |- | [[Module:Portal/images/w]] || For portal names starting with "W". |- | [[Module:Portal/images/x]] || For portal names starting with "X". |- | [[Module:Portal/images/y]] || For portal names starting with "Y". |- | [[Module:Portal/images/z]] || For portal names starting with "Z". |- | [[Module:Portal/images/other]] || For portal names starting with any other letters. This includes numbers, letters with diacritics, and letters in non-Latin alphabets. |- | [[Module:Portal/images/aliases]] || For adding aliases for existing portal names. Use this page for variations in spelling and diacritics, etc., no matter what letter the portal begins with. |} {{Collapse bottom}} == Example == {| style="background:transparent;" |- ! Code !! Result |- | <span style="font-size: 90%;">&#123;&#123;{{#ifeq: {{{type|}}} | module | &#35;invoke:Portal&#124;portal | Portal }}|Science&#125;&#125;</span> | {{Portal|Science}} |} == Parameters == {| class="wikitable" |- ! Name !! Value !! Description |- | <code>'''1'''</code>, <code>'''2'''</code>, <code>'''3'''</code> ... || The portal name, e.g. <code>Literature</code> || The positional parameters specify the portals to be displayed. |- | <code>'''left'''</code> || <code>yes</code> || If set to <code>yes</code>, the portal appears on the left side of the page instead of the right. |- | <code>'''margin'''</code> || CSS margin value, e.g. <code>1.2em 3em 0.5em 1em</code> || This allows you to set a custom margin. All valid CSS margin values are accepted. |- | <code>'''break'''</code> || <code>yes</code> || If set to <code>yes</code>, a line break is inserted after the portal name and before the word ''portal''. |- | <code>'''redlinks'''</code> || Any of the following values: <code>yes</code>, <code>y</code>, <code>true</code>, or <code>include</code> || Redlinks will be displayed. The default is to suppress redlinks. |- | <code>'''nominimum'''</code> || Any of the following values: <code>yes</code>, <code>y</code>, or <code>true</code> || Suppresses the warning if no parameters are supplied. This can be useful when Template:Portal is called by another template. |- | <code>'''border'''</code> || Any of the following values: <code>no</code>, <code>n</code>, or <code>false</code> || Turn off border and background |- | <code>'''tracking'''</code> || Any of the following values: <code>no</code>, <code>n</code>, <code>false</code> || Tracking categories will be suppressed. The default is to use tracking categories, except on certain namespaces and on pagenames which contain "/archive", "/doc" or "/test". |} == Error tracking == If the {{{type|template}}} is used incorrectly, the page will be added to a tracking category. The tracking categories are not applied if any of the following is true: # Tracking is specially disabled for that usage. This is done by setting the optional parameter {{para|tracking}} to any the following values: <code><nowiki>no</nowiki></code>, <code><nowiki>n</nowiki></code>, <code><nowiki>false</nowiki></code> # the template is used on a page in any of these namespaces: Talk, User, User talk, Wikipedia talk, File talk, Template talk, Category talk, Portal talk, Draft, Draft talk, Module talk # The title page on which the template is used includes any of the following case-insensitive strings: "/archive", "/doc", "/test" * {{clc|Portal templates with too few portals}} * {{clc|Portal templates with too many portals}} * {{clc|Portal templates with redlinked portals}} * {{clc|Pages with empty portal template}} * {{clc|Portal templates with default image}} :{{Purge page|''Purge page to update totals''}} {{#ifeq: {{{type|}}} | module ||<!-- section not transcluded if type = module --> == Other mobile-friendly versions== For versions that are visible in print and mobile versions of Wikipedia pages see: * {{tl|Portal-inline}} * {{tl|Portal bar}} {{Quotation | *<small>Mobile version of '''{{Plain link|url=https://{{CONTENTLANG}}.m.{{SITENAME}}.org/wiki/{{urlencode:{{{1|{{FULLPAGENAME}}}}}|WIKI}}|name={{{1|{{FULLPAGENAME}}}}}}}'''</small> *<small>Desktop version of '''{{Plain link|url=https://{{CONTENTLANG}}.{{SITENAME}}.org/wiki/{{urlencode:{{{1|{{FULLPAGENAME}}}}}|WIKI}}|name={{{1|{{FULLPAGENAME}}}}}}}'''</small>}} == See also == * {{Tl|Subject bar}} {{Portal template list}} ==TemplateData== {{Collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <TemplateData> { "description": "A template to create a list of portals", "params": { "1": { "label": "Portal (1)", "description": "Inserts the portal image and text. Further portals can be added to the template by increasing the number", "type": "string", "required": true }, "2": { "label": "Portal (2)", "description": "Inserts the portal image and text", "type": "string" }, "3": { "label": "Portal (3)", "inherits": "2" }, "4": { "label": "Portal (4)", "inherits": "3" }, "5": { "label": "Portal (5)", "inherits": "4" }, "6": { "label": "Portal (6)", "inherits": "5" }, "left": { "label": "Side", "description": "If set to yes, the portal appears on the left side of the page instead of the right.", "type": "string", "default": "no" }, "margin": { "label": "Margin size", "description": "Alters the margin size. Any valid CSS margin is accepted", "type": "number" }, "break": { "label": "Line break", "description": "If set to yes, a line break is inserted after the portal name and before the word portal", "type": "string" }, "redlink": { "description": "Allow links to non-existent portals", "type": "string", "default": "false" }, "nominimum": { "description": "Do not check for at least one portal", "type": "string", "default": "false" }, "border": { "description": "Put border around portal links", "type": "string", "default": "true" }, "tracking": { "description": "In case of warning, add to tracking category", "type": "string", "default": "true" }, "type": {} }, "format": "block" } </TemplateData> {{Collapse bottom}} <includeonly>{{Sandbox other|| <!--Categories below this line, please; interwikis at Wikidata--> [[Category:Internal link templates]] [[Category:Wikipedia Portal navflags]] }}</includeonly> <noinclude> [[Category:Record production portal|Templates]]</noinclude> }}<!-- end of section not transcluded if type = module --> 12237d8da876a83e3d771aeccf9b8f19101fdbe8 Help:Citation Style 1 12 865 1918 2023-07-26T02:41:40Z wikipedia>IznoRepeat 0 [[phab:T337149#8953569]], replaced: [// → [https:// (2), |url=// → |url=https:// (2) wikitext text/x-wiki {{Short description|Help page for citation templates}} {{Wikipedia how to|WP:CS1|HELP:CS1}} {{Nutshell|This is an introductory how-to for Wikipedia's most frequently used citation style. It does not cover every option of every citation template. See individual templates' documentation (e.g. at [[Template:Cite journal]]) for details beyond this basic cheatsheet.}} {{notice|image=Gnome-applications-science.svg|This help page has {{subpages|testcases|Help:Citation Style 1}} demonstrating various uses.}} '''Citation Style 1''' ('''CS1''') is a collection of [[Wikipedia:Citing sources|reference citation]] [[Help:Template|templates]] that can be modified to create different styles for different referenced materials. Its purpose is to provide a set of default formats for references on Wikipedia. It includes a series of templates that in turn use [[Module:Citation/CS1]]. The use of CS1 or of templates is not compulsory; per [[WP:CITESTYLE]]: <blockquote>Wikipedia does not have a single [[style guide|house style]]. Editors may choose any option they want; one article need not match what is done in other articles or what is done in professional publications or recommended by academic [[style guide]]s. However, citations ''within a given article'' should follow a consistent style.</blockquote> [[WP:CITEVAR]] additionally states: {{quote|If the article you are editing is already using a particular citation style, you should follow it; if you believe it is inappropriate for the needs of the article, seek consensus for a change on the talk page.}} CS1 uses (in addition to Wikipedia's own [[WP:Manual of Style|Manual of Style]]) elements of ''[[The Chicago Manual of Style]]'' and the ''[[Publication Manual of the American Psychological Association]]'', with significant adaptations. ==Style== There are a number of templates that use a name starting with ''cite''; many were developed independently of CS1 and are not compliant with the CS1 style. There are also a number of templates that use one of the general use templates as a meta-template to cite a specific source. To be compliant with CS1, a template must: * Use [[Module:Citation/CS1]] or one of the templates listed below. * Use a period as a punctuation mark to separate fields and end the citation. * Use a semicolon as a punctuation mark to separate authors and editors. * Format the title of longer works in italics. * Format the title of short works such as chapters in quotes. ==Templates== ===General use=== The following is a list of templates that implement Citation Style 1 for one or more types of citations but are not restricted to any specific source. {| class="wikitable" style="max-width:55em;" !scope="row" {{Yes}} | Indicates that the corresponding tool or gadget can generate the template anytime user wishes. However, this does not mean that the tool or gadget fully supports all parameters or provides an interface for them. In fact, none of the mentioned items do so. |- !scope="row" {{Partial|Sometimes}} | Indicates that the corresponding tool or gadget may or may not generate the corresponding template. For more information, see associated footnote. |} {| class="wikitable" style="text-align:center;" |+ General-use CS1 templates !scope="col"| Template !scope="col"| Use !scope="col"| [[Wikipedia:The Wikipedia Library/Citoid|Citoid]] !scope="col"| [[WP:Citation expander|Citation expander]] !scope="col"| [[WP:RefToolbar/2.0|RefToolbar 2.0]] !scope="col"| [[Wikipedia:ProveIt|ProveIt]] !scope="col"| [[User:Odie5533/SnipManager|SnipManager]] |- !scope="row"| {{tl|Cite arXiv}} | [[arXiv]] preprints || || || || || |- !scope="row"| {{tl|Cite AV media}} | audio and visual sources || || || || {{Yes}} || {{Yes}} |- !scope="row"| {{tl|Cite AV media notes}} | liner notes from albums, DVDs, CDs and similar audio-visual media || || || || || |- !scope="row"| {{tl|Cite book}} | books || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} |- !scope="row"| {{tl|Cite conference}} | conference papers || || || || {{Yes}} || |- !scope="row"| {{tl|Cite encyclopedia}} | edited collections || || || || {{Yes}} || |- !scope="row"| {{tl|Cite episode}} | television or radio programs and episodes || || || || {{Yes}} || |- !scope="row"| {{tl|Cite interview}} | interviews || || || || || |- !scope="row"| {{tl|Cite journal}} | academic and scientific papers published in journals || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} |- !scope="row"| {{tl|Cite magazine}} | magazines and newsletters || || || || {{Yes}} || |- !scope="row"| {{tl|Cite mailing list}} | archived public mailing lists || || || || || |- !scope="row"| {{tl|Cite map}} | maps || || || || || |- !scope="row"| {{tl|Cite news}} | news articles in print, video, audio or web || {{Yes}} || {{Partial|Sometimes}}{{efn|Citation expander will only attempt to tidy up the citation and will not add new content}} || {{Yes}} || {{Yes}} || {{Yes}} |- !scope="row"| {{tl|Cite newsgroup}} | online newsgroups || || || || || |- !scope="row"| {{tl|Cite podcast}} | audio or video [[podcast]] || || || || || |- !scope="row"| {{tl|Cite press release}} | press releases || || || || {{Yes}} || |- !scope="row"| {{tl|Cite report}} | reports by government departments, instrumentalities, operated companies, etc. || || || || {{Yes}} || |- !scope="row"| {{tl|Cite serial}} | audio or video serials || || || || || |- !scope="row"| {{tl|Cite sign}} | signs, plaques and other visual sources || || || || {{Yes}} || |- !scope="row"| {{tl|Cite speech}} | speeches || || || || || |- !scope="row"| {{tl|Cite tech report}} | technical reports || || || || || |- !scope="row"| {{tl|Cite thesis}} | theses || {{Yes}} || || || {{Yes}} || |- !scope="row"| {{tl|Cite web}} | web sources not characterized by another template || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} |} {{notelist}} ===Specific source=== There are a number of templates that are CS1 compliant, because they use a CS1 template as a base, but are tied to a specific source; these are listed in [[:Category:Citation Style 1 specific-source templates]]. ==How the templates work== CS1 uses a series of templates that provide a consistent output. The main difference is in parameters optimized for the subject. For example, {{tl|cite book}} has fields for title and chapter, whereas {{tl|cite journal}} has fields for journal and title. This help page uses the names most commonly used across the templates series; see each template's documentation for details. CS1 templates present a citation generally as: * With author: :{{Cite journal |last=((Author)) |date=n.d. |title=Title |work=Work |publisher=Publisher |id=Identifiers |no-tracking=yes}} * Without author: :{{Cite journal |date=n.d. |title=Title |work=Work |publisher=Publisher |id=Identifiers |no-tracking=yes}} (where "n.d." could also be any other valid date formatted per the MOS) ===Authors=== An author may be cited using separate parameters for the author's surname and given name by using {{para|last}} and {{para|first}} respectively. If a cited source has multiple authors, subsequent authors can be listed in the citation using {{para|last2}} and {{para|first2}}, {{para|last3}} and {{para|first3}}, etc.<ref group="Note" name="NB_Unlimited">The number of authors that can be listed in the citation and displayed when published is unlimited.</ref> For symmetry with the other numbered parameters, {{para|last1}} and {{para|first1}} are available as well, as shown in the following example: :<code><nowiki>{{cite book |last1=Hawking |first1=Stephen |last2=Hawking |first2=Lucy |title=George's Secret Key to the Universe}}</nowiki></code> :{{cite book |last1=Hawking |first1=Stephen |last2=Hawking |first2=Lucy |title=George's Secret Key to the Universe}} For symmetry with similar parameters for editors and other contributors (discussed further below), longer parameter forms are also available for authors: {{para|author-last}} and {{para|author-first}}, as well as numbered variants like {{para|author-last{{var|n}}}} and {{para|author-first{{var|n}}}} or {{para|author{{var|n}}-last}} and {{para|author{{var|n}}-first}} (with {{var|n}} referring to this author's number in the list). Because the shorthand parameters might erroneously have been used also for editors and other types of contributors by some Wikipedians in the past, please make sure that the parameters actually refer to authors when expanding {{para|last}} and {{para|first}} parameters to their longer equivalents (equivalent parameters for editors etc. exist as well, see [[#Editors|below]]). If a cited source has a large number of authors, one can limit the number of authors displayed when the citation is published by using the {{para|display-authors}} parameter as described in detail in the [[Help:Citation Style 1#Display options|Display options]] section of this help page. If a cited author is notable and the author has a Wikipedia article, the author's name can be linked with {{para|author-link}}.<ref group="Note" name="NB_Prefix">If the English Wikipedia does not have an article about the author, but an article is available in another language entity of Wikipedia or if a [[Wikidata]] node for this author exists already, you can prefix the link using that Wikipedia's [[Help:Interlanguage links|language prefix]] (similar to <code>:en:</code> for the English Wikipedia) in order to create an [[Help:Interlanguage links|interwiki link]]. The [[Help:Interwiki linking#Prefix codes for linking to Wikimedia sister projects|prefix]] for Wikidata nodes is <code>:d:</code> (or <code>:wikidata:</code>) to be followed by the Q''&lt;id>'' number of the corresponding entry. (<!-- Put in brackets because this seldomly applies to authors: -->Similar, [[Wikisource]] uses <code>:s:</code> (or <code>:wikisource:</code>), [[Wiktionary]] <code>:wikt:</code> (or <code>:wiktionary:</code>) and [[Wikimedia Commons|Commons]] <code>:c:</code> (or <code>:commons:</code>), followed by the corresponding article name.) Alternatively, if a suitable [[:m:Interwiki map|custom interwiki prefix]] is defined for another authority control repository, this can be used as well. For example, to link to an author's [[VIAF]] entry (with code <code>''&lt;id>''</code>), <code>:VIAF:''&lt;id>''</code> can be used, even if this would resolve to an independent external site. In the absence of a local article such links can help to at least establish a connection to a particular author and, if an article gets created in the English Wikipedia as well in the future, these links can be fixed up by bots to point to the local article instead.</ref> If a citation includes multiple notable authors, one may use {{para|author-link{{var|n}}}} or {{para|author{{var|n}}-link}}, etc. This method is used because the {{para|last}}- and {{para|first}}-type parameters do not allow wikilinking. However, {{para|author-link}} cannot be used to link to an external website; the external link will not render correctly.<ref group="Note" name="NB_Prefix"/> Below is an example of a wikilinked author credit: :<code><nowiki>{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe}}</nowiki></code> :{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe}} When an author is cited, the date of the cited work is displayed after the author's name, as shown in the example below: :<code><nowiki>{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe |date=2007}}</nowiki></code> :{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe |date=2007}} If no author is cited, the date appears after the title, as shown in the example below: :<code><nowiki>{{cite book |title=George's Secret Key to the Universe |date=2007}}</nowiki></code> :{{cite book |title=George's Secret Key to the Universe |date=2007}} If the cited source does not credit an author, as is common with newswire reports, press releases or company websites use: :{{para|author|<nowiki><!--Not stated--></nowiki>}} This HTML comment alerts fact-checking and citation-fixing editors, and potentially bots, that the cited source did not name an author—the author was not overlooked. Without this entry editors and bots would waste time researching cited sources for a non-existent author credit. When using {{para|author}} avoid citations like <code><nowiki>{{cite news |work=Weekday Times |author=''Weekday Times'' editors |title=...}}</nowiki></code>, unless the article is on a field in which the majority of professional journals covering that field use such a citation style. Editors should use an {{para|author}} organizational citation when the cited source, such as a committee report, specifically names an official body or a sub-unit of the publisher as the collective author of the work, e.g. {{para|author|Commission on Headphone Safety}} or {{para|author|Rules Sub-committee}}. Do not use {{para|author}} to assert what you think was probably the collective author when the source itself does not specifically specify a collective author; doing so is [[WP:NOR|original research]] and falsification of [[WP:V|source verifiability]] and [[WP:RS|reliability]]. {{para|author}} should never hold the name of more than one author. Separate individual authors into enumerated individual {{para|author{{var|n}}}} parameters. ===Editors=== An editor may be cited using separate parameters for the editor's last and first name. A single or first editor would use {{para|editor-last}} and {{para|editor-first}}; subsequent editors would use {{para|editor2-last}} and {{para|editor2-first}}, {{para|editor3-last}} and {{para|editor3-first}}, etc. If an editor has a Wikipedia article, you may wikilink to that Wikipedia article using {{para|editor-link}}.<ref group="Note" name="NB_Prefix"/> If a cited work has multiple editors, you may use {{para|editor2-link}}, {{para|editor3-link}}, etc. to wikilink to each editor's Wikipedia article. This method is used because {{para|editor-last}} and {{para|editor-first}} do not allow wikilinking. {{para|editor-link}} cannot be used to link to an external website. If a cited source has a large number of editors, one can limit the number of editors displayed when the citation is published using the {{para|display-editors}} parameter as described in detail in the [[Help:Citation Style 1#Display options|Display options]] section of this help page. === Translators === A translator may be cited using separate parameters for the translator's last and first name. A single or first translator would use {{para|translator-last}} and {{para|translator-first}}; subsequent translators would use {{para|translator2-last}} and {{para|translator2-first}}, {{para|translator3-last}} and {{para|translator3-first}}, etc. If a translator has a Wikipedia article, you may wikilink to that Wikipedia article using {{para|translator-link}}.<ref group="Note" name="NB_Prefix"/> If a cited work has multiple translators, you may use {{para|translator2-link}}, {{para|translator3-link}}, etc. to wikilink to each translator's Wikipedia article. This method is used because {{para|translator-last}} and {{para|translator-first}} do not allow wikilinking. {{para|translator-link}} cannot be used to link to an external website. ===Others=== * '''others''': This parameter is used to credit contributors other than an author or an editor, such as an illustrator. You should include both the type of contribution and the name of the contributor, for example {{para|others|Illustrated by John Smith}}.<ref group="Note" name="NB_Prefix"/> ===Dates=== Dates are indicated by these parameters: * '''date''': Full date of publication edition being referenced, in the same format as other dates in citations in the same article. Must not be wikilinked. ** or: '''year''': Year of publication edition being referenced. Discouraged in favor of '''date''', except in the rare case that {{em|all}} of the following conditions are met: **#the publication-date format in the template is YYYY-MM-DD **#the citation requires a <code>[[Wikipedia:Citation templates and reference anchors|CITEREF]]</code> [[Template:Sfn#More than one work in a year|disambiguator]] * '''orig-date''': Original publication date or year, for display (in square brackets) after the '''date''' (or '''year'''). For clarity, please supply specifics, for instance <code>|orig-date=first published 1859</code> or <code>|orig-date=composed 1904</code>. This parameter displays only if there is a value for '''date''' (or '''year'''). Alias: '''origyear'''. When a source does not have a publication date, use {{para|date|n.d.}} or {{para|date|nd}} Acceptable date formats are shown in the "Acceptable date formats" table of the {{section link|Manual of Style/Dates and numbers|Dates, months and years}}. Further points: * Prescriptions about date formats only apply when the date is expressed in terms of Julian or Gregorian dates, or which use one of the seasons (spring, summer, autumn or fall, winter). Sources are at liberty to use other ways of expressing dates, such as "spring/summer" or a date in a religious calendar; editors should report the date as expressed by the source. [[WP:SEASON|Although the seasons are not normally capitalized]], they are capitalized when used as dates in CS1 templates, and the capitalization of the season stated by the source may be altered to follow this convention. In cases where the date as expressed in the source is not compatible with the template software, the citation should be created without using a template. * Do not wikilink. * Access and archive dates in references should be in either the format used for [[MOS:DATEUNIFY|publication dates]], or YYYY-MM-DD. ====Date format compliance with Wikipedia's Manual of Style==== CS1 uses {{section link|Wikipedia:Manual of Style/Dates and numbers|Dates, months, and years}} ([[MOS:DATEFORMAT]]) as the reference for all date format checking performed by [[Module:Citation/CS1]]. For various reasons, CS1 is not fully compliant with MOS:DATEFORMAT. This table indicates CS1 compliance with the listed sections of MOS:DATEFORMAT. {|class="wikitable plainrowheaders" style="margin: 1em auto 1em auto;" |+CS1 compliance with [[Wikipedia:Manual of Style/Dates and numbers]] !scope="col"| Section !scope="col"| Compliant !scope="col"| Comment |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Acceptable date formats|Acceptable date formats table]] | yes | Exceptions: linked dates not supported;<br />sortable dates not supported ({{tlx|dts}} etc.);<br />proper name dates not supported with the exception of 'Easter YYYY' and 'Christmas YYYY';<br />shortened month names longer than three characters or with terminating periods not supported;<br />quarterly dates supported in the form 'First Quarter 2020' |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Unacceptable date formats|Unacceptable date formats table]] | yes | |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Consistency|Consistency]] | yes<sup>{{dagger}}</sup> |rowspan="3"| Article-level restrictions are beyond the scope of CS1<br /><sup>{{dagger}}</sup>CS1/CS2 templates follow the format specified by the article's {{tlx|use dmy dates}} or {{tlx|use mdy dates}} templates; see [[#Auto-formatting citation template dates|Auto-formatting citation template dates]] |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Strong national ties to a topic|Strong national ties to a topic]] | no |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Retaining existing format|Retaining existing format]] | no |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Era style|Era style]] | no |Dates earlier than 100 not supported. Wikipedia [[Wikipedia:Citing sources#Say where you read it|editors seldom read ancient manuscripts directly]]; the specific, modern, published edition read by the editor is what goes in the source citation. Thus, the date of the source actually consulted should be provided in {{para|date}}, and the date of the ancient source may be provided in {{para|orig-date}}; the format of the orig-date value is not checked for errors. |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Julian and Gregorian calendars|Julian and Gregorian calendars]] | limited | Julian prior to 1582; Gregorian from 1582; assumes Gregorian in the overlap period of 1582 – c. 1923 |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Ranges|Ranges]] | yes | Exceptions: does not support the use of <code>&amp;ndash;</code> or <code>&amp;nbsp;</code><br />does not support dates prior to 100;<br />does not support solidus separator (/)<br />does not support " to " as a date separator<br />does not support YYYY–YY where the two-digit year is less than 13 (change to YYYY–YYYY to eliminate the error message) |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Uncertain, incomplete, or approximate dates|Uncertain, incomplete, or approximate dates]] | yes | Exceptions: does not support {{tlx|circa}} or {{tlx|floruit}};<br />does not support dates prior to 100;<br />Supports <code>c. </code> only with a single year value (no ranges or day/month combinations). |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Days of the week|Days of the week]] | no | |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Seasons|Seasons]] | limited | CS1 capitalizes seasons used as dates in citations, in line with external style guides |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Decades|Decades]] | no | |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Centuries and millennia|Centuries and millennia]] | no | |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Abbreviations for long periods of time|Abbreviations for long periods of time]] | no | |} ====Date range, multiple sources in same year==== If dates are used, the year range is 100 to present without era indication (AD, BC, CE, BCE). In the case where the same author has written more than one work in the same year, a lower-case letter may be appended to the year in the date parameter ({{xt|{{!}}date&#61;July 4, 1997b}}) or the year parameter ({{xt|{{!}}year&#61;1997b}}). ====Auto-formatting citation template dates==== {{use dmy dates|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=y}} [[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|2]] templates automatically render dates ({{para|date}}, {{para|access-date}}, {{para|archive-date}}, etc.) in the style specified by the article's {{tlx|use dmy dates}} or {{tlx|use mdy dates}} template. Editors may also choose how CS1/CS2 templates render dates by the use of {{para|cs1-dates|&lt;{{var|keyword}}>}} in the article's {{tld|use xxx dates}} template.<section begin="auto_date_format_table" /> {| class="wikitable" |+Acceptable <code>{{pipe}}cs1-dates=</code> keywords !scope="col"| Keyword !scope="col"| Definition |- !scope="row"| <code>l</code> |rowspan="2"| long-form publication and access- / archive-dates;<br />this is the default case when {{para|cs1-dates|plain=yes}} is omitted or empty |- !scope="row"| <code>ll</code> |- !scope="row"| <code>ls</code> | long-form publication dates; abbreviated access- / archive-dates |- !scope="row"| <code>ly</code> | long-form publication dates; year-initial numeric access- / archive-dates (ymd) |- !scope="row"| <code>s</code> |rowspan="2"| abbreviated publication and access- / archive-dates |- !scope="row"| <code>ss</code> |- !scope="row"| <code>sy</code> | abbreviated publication dates; year-initial numeric access- / archive-dates (ymd) |- !scope="row"| <code>y</code> |rowspan="2"| year-initial numeric publication, access- and archive-dates (ymd);<br />cs1|2 cannot reformat Month YYYY, Season YYYY, date-ranges of any form, or [[Julian calendar]] dates into ymd format |- !scope="row"| <code>yy</code> |}<section end="auto_date_format_table" /> Example: to have the CS1/CS2 templates in an article render their publication dates in the long form (fully spelled-out month names) with access-/archive-dates rendered in short form (abbreviated month names), write: :{{tlx|use dmy dates|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates{{=}}ls}} This documentation page has <code><nowiki>{</nowiki>{use dmy dates|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=y}}</code> at the top of this section so this cs1 template will render with ymd dates: :<code><nowiki>{{</nowiki>cite web |title=Example Webpage |url=https://example.com |website=Example |date=31 October 2017 |access-date=Dec 5, 2017}}</code> ::{{cite web |title=Example Webpage |url=https://example.com |website=Example |date=31 October 2017 |access-date=Dec 5, 2017}} This global setting may be overridden in individual CS1/CS2 templates by use of {{para|df}}; abbreviated date forms are not supported by {{para|df}}. {{lang|la|Nota bene}}: CS1/CS2 auto-date formatting does not apply when previewing an article section that does not contain a {{tld|use xxx dates}} template. ===Titles and chapters=== * '''title''': The title of the cited source. Titles are displayed in italics, except for short works such as a {{txl|cite press release}} and cited articles in {{tlx|cite news}}, {{tlx|cite journal}}, {{tlx|cite magazine}}, {{tlx|cite web}}, {{tlx|cite conference}}, and {{tlx|cite podcast}}, where the title is shown in quotation marks. For templates like these that show the title in quotation marks, any double quotation marks inside the title should be [[MOS:QINQ|converted]] to single quotation marks. Use [[MOS:CT|title case]] unless the cited source covers a scientific, legal or other technical topic and sentence case is the predominant style in journals on that topic. Use either title case or sentence case consistently throughout the article. Do not omit a leading "The" from the title. Subtitles are typically separated from titles with ": " though " – " is also used. [[MOS:TM|As with trademarks]], Wikipedia {{em|does not}} attempt to emulate any stylistic flourishes used by the cited source's publisher, such as ALL-CAPS, all-lower-case, {{sm|Small Caps}}, etc.; use either standard title case or sentence case consistently. If the cited source is itself notable and has a Wikipedia article, the title can be wikilinked. Wikilinking the title will make it impossible to use the "url" parameter to link to an external copy of the cited source, so only do this when citing works that do not need to be externally linked. A link to the actual source is preferred to a link to a Wikipedia article about the source. * '''script-title''': Languages that do not use a Latin-based alphabet, Arabic, Chinese, Cyrillic, Greek, Hebrew, Japanese, Korean, etc., should not be italicized and may also read [[right-to-left]] (RTL). To include titles in these languages, use '''script-title'''. Titles in '''script-title''' are wrapped in special HTML markup to isolate RTL script from adjacent left-to-right text. Part of that special markup is a language attribute that browsers can use to assist in the proper display of the script. Editors must add a prefix to the script that will identify the language. The prefix is one of the [[Help:Citation Style 1#&#124;script-&lt;param>&#x3D; language codes|supported language codes]] followed by a colon: {{para|script-title|ar:<bdi>العربية</bdi>}}. Unrecognized codes are ignored and will display in the rendered citation. * '''trans-title''': If the cited source is in a foreign language, an English translation of the title can be given here. This field will be displayed in square brackets after the title and will be linked to {{para|url}} if used. * '''chapter''': The title of the cited chapter from the source, written in full. Displayed in quotes before the title. For websites arranged in sections the "at" parameter serves a similar function: {{para|at|Featured News}} * '''script-chapter''': Languages that do not use a Latin-based alphabet, Arabic, Chinese, Cyrillic, Greek, Hebrew, Japanese, Korean, etc., may possibly read [[right-to-left]] (RTL). To include chapter titles in these languages, use '''script-chapter'''. Chapter titles in '''script-chapter''' are wrapped in special HTML markup to isolate RTL script from adjacent left-to-right text. Part of that special markup is a language attribute that browsers can use to assist in the proper display of the script. Editors must add a prefix to the script that will identify the language. The prefix is one of the [[Help:Citation Style 1#&#124;script-&lt;param>&#x3D; language codes|supported language codes]] followed by a colon: {{para|script-chapter|ar:<bdi>العربية</bdi>}}. Unrecognized codes are ignored and will display in the rendered citation. This field will be displayed following the transliterated title. * '''trans-chapter''': If the cited source is in a foreign language, an English translation of the cited chapter title can be given here. This field will be displayed in square brackets within the quotation marks which enclose the chapter field. Titles containing certain characters will both display and link incorrectly unless those characters are replaced or encoded like this: {| class="wikitable" style="text-align:center;" |- !scope="col"| Character !scope="col"| Must be replaced with |- !scope="row"| newline | space |- !scope="row"| [ | &amp;#91; |- !scope="row"| ] | &amp;#93; |- !scope="row"| <nowiki>|</nowiki> | &amp;#124; |} ====|script-&lt;<var>param</var>>= language codes==== Language codes known to cs1|2 for languages that do not use a Latin script are: {{#invoke:Cs1 documentation support|script_lang_lister}}<!-- makes a language code: name list from the master list in [[Module:Citation/CS1/Configuration]] --> ===Type=== * '''type''': Specifies the type of work cited. Appears in parentheses immediately after the title. Some templates use a default that can be overridden; example: {{tl|cite press release}} will show "(Press release)" by default. Other useful values are: Review, Systemic review, Report, Abstract, Meta-analysis, Original article, Oral history<!-- supported as "Oral History" by Dublin Core/Zotero -->, Email<!-- supported by Dublin Core/Zotero -->, Website<!-- supported by Dublin Core/Zotero -->, Text<!-- supported by Dublin Core/Zotero -->, Document<!-- supported by Dublin Core/Zotero -->. Alias: '''medium''', in {{tl|cite AV media}}, where typical values are: Motion picture, Moving image<!-- supported as "Moving Image" by Dublin Core/Zotero -->, Television production, Videotape, DVD, Blu-ray, Trailer, CD, Radio broadcast, Podcast, Sound<!-- supported by Dublin Core/Zotero -->. ===Language=== {{csdoc|language}} ===Work and publisher=== {{see|WP:CITEHOW}} * '''work''': Used by some templates such as {{tl|cite web}} (where it is aliased to '''website'''), {{tl|cite news}} (aliased to '''newspaper'''), {{tl|cite magazine}} (aliased to '''magazine'''), {{tl|cite journal}} (aliased to '''journal'''), and others where the citation is usually to a specific item (given in the "title" parameter) found in a larger work (this "work" parameter), most commonly an article in a website or print periodical, or an episode in a TV series. {{em|Do not confuse this with the "publisher" parameter}}, which is for the publishing company. If the work is notable and has an article in Wikipedia, it should be wiki-linked at first appearance in citations in the article. If the "title" is already linked-to externally, do not externally link to the "work". If the work title as given by the site/publication would be exactly or substantially the same as the name of the publisher, do not use the "publisher" parameter (see below for more detail). :On websites, in most cases "work" is the name of the website (as usually given in the logo/banner area of the site, and/or appearing in the {{tag|title|o}} of the homepage, which may appear as the page title in your browser tab, depending on browser). Do not append ".com" or the like if the site's actual title does not include it (thus {{para|work|<nowiki>[[Salon (magazine)|Salon]]</nowiki>}}, not <code>Salon.com</code>). If no clear title can be identified, or the title explicitly is the domain name, then use the site's domain name. Do not falsify the work's name by adding descriptive verbiage like "Website of [Publisher]" or "[Publisher]'s Homepage". Capitalize for reading clarity, and omit "www.", e.g. convert "www.veterinaryresourcesuk.com" to "VeterinaryResourcesUK.com". :Many journals use highly abbreviated titles when citing other journals (e.g. ''J Am Vet Med'' for ''[[Journal of the American Veterinary Medical Association]]'') because specialists in the field the journal covers usually already know what these abbreviations mean. Our readers usually do not, so these abbreviations should always be expanded. :If the titled item being cited is part of some other larger work, as in a book in a series, a special issue of a periodical, or a sub-site at a domain (e.g., you are citing the law school's section of a university's website system), it is usually better to use the name of that more specific work than just that of the entire larger work. Various citation templates provide separate fields for such information, e.g. {{para|chapter}}{{para|title}}{{para|volume}}{{para|series}} in {{tlx|Cite book}}. If the nature of the work and its relation to the site, book, or other context in which it is found is complicated or confusing, simply explain the situation after the citation template and before the {{xtag|ref|c}} that closes the citation. * '''publisher''': the name of the organization that actually published the source. The field should not include the corporate designation such as "Ltd" or "Inc.", unless some ambiguity would result or the organization is usually known with that designation even in everyday use (e.g. [[Apple Inc.]], which otherwise might be confused with [[Apple Records]] and other publishers). "Publisher", "Publishing" and "Publications" can be abbreviated "Pubr.", "Pubg." and "Pubs." respectively, but some templates in this series include a period (full-stop) immediately after this parameter, so the period may have to be omitted; check the output if you abbreviate here. They are usually safe to omit, but are usefully included where the publisher's name might be confusing without it. This is most often the case when the publisher's name is something like "Joshua Martin Publications", which without the designation might be mistaken for a co-author/editor. A leading "The" can generally be omitted, again unless confusion might result (e.g., for [[The International Cat Association]], "The" is part of their official acronym, TICA). If the publisher is notable and has an article independent of the "work", the "publisher" parameter can include a wiki-link to that article, but should never externally link to the publisher's website. Whether the publisher needs to be included depends to an extent on the type of work and sometimes on its recognizability. [[WP:Citing sources]], and most off-Wikipedia citation guides, suggest that it should be used for books (even famous ones), but not necessarily other works. The "publisher" parameter should not be included for widely-known mainstream news sources, for major academic journals, or where it would be the same or mostly the same as the work. For example, the "publisher" parameter should be omitted in these examples: *:{{para|work|<nowiki>[[Amazon.&#8288;com]]</nowiki>}}{{para|publisher|Amazon Inc.|!mxt=y}} *:{{para|newspaper|The Aberdeen Times}}{{para|publisher|The Aberdeen Times|!mxt=y}}<!--A genuine Idaho newspaper: http://www.smalltownpapers.com/newspapers/newspaper.php?id=1 --> *:{{para|newspaper|<nowiki>[[The New York Times]]</nowiki>}}{{para|publisher|The New York Times Company|!mxt=y}} *:{{para|newspaper|<nowiki>[[USA Today]]</nowiki>}}{{para|publisher|<nowiki>[[Gannett Company]]</nowiki>|!mxt=y}} *:{{para|journal|<nowiki>[[Nature (journal)|Nature]]</nowiki>}}{{para|publisher|<nowiki>[[Nature Research]]</nowiki>|!mxt=y}} :If the work is self-published, [[WP:SELFPUB|this is a very important fact]] about [[WP:RS|potential reliability of the source]], and needs to be specified; no consensus exists for the exact value of {{para|publisher}} in such a case, but some printed style guides suggest "author", while many Wikipedia editors have used "self-published" for increased clarity. When an exhaustive attempt to discover the name of the publisher (try [[whois]] for websites, and [[WorldCat]] for books, etc.) fails, use {{para|publisher|<nowiki><!--Unspecified by source.--></nowiki>}} to explicitly indicate that this was checked, so other editors do not waste time duplicating your fruitless efforts. Do not guess at the publisher when this information is not clear. See next entry for co-published works and how to specify multiple publishers and their locations. * '''location''' (alias {{para|publication-place}}): Geographical place of publication ({{em|not}} where you found your copy, nor location of material in the source). This is usually {{var|City, Country}}, or {{var|City, US State}}. The city name by itself can be used for world-recognized cities like New York, London (except in articles about [[London, Ontario|Canadian]] topics), Paris, Tokyo. Simply having a unique name does not mean it is globally recognizable; e.g., many people do not know where [[Mumbai]] is, especially if they are old enough that it was called [[Bombay]] for much of their lives. If in doubt, be more not less specific, since "Toronto, Canada" and "San Francisco, California" do not actually hurt anything. Be more specific when a {{var|City, Country}} would be ambiguous, e.g. {{para|location|Hanley, Staffordshire, UK}}, versus {{para|location|Hanley, Worcestershire, UK}}. Do not use sub-national postal abbreviations ("DE", "Wilts", etc.), per [[MOS:POSTABBR]].{{disputed inline|Postal abbreviations}} The location parameter should be omitted when it is implied by the name of the work, e.g. ''The Sydney Morning Herald''. The location parameter should be used when the location is part of a common appellation of but not the actual title of a periodical. For example, the newspaper sometimes called the ''New York Daily News'' is actually [[Daily News (New York)|''Daily News'']] and can be entered with {{para|newspaper|Daily News}} {{para|location|New York}}, which yields: ''Daily News''. New York. A similar example is ''[[The Times]]'' of London (contrast ''[[The New York Times]]''). Per [[WP:SAYWHEREYOUGOTIT]], provide the location of the edition you are using (e.g., if a publisher has operations in both New York and London and you have the London-published edition, use {{para|location|London}}, even if the publisher's corporate HQ is in New York). If your edition specifically gives multiple locations, this can be indicated with, e.g., {{para|location|New York / London}}. This same technique can be used for co-published works, e.g.: {{para|location|Oakbrook Terrace, Illinois / Los Angeles}}{{para|publisher|<nowiki>[[Council of Science Editors]]</nowiki> / <nowiki>[[Loyola Marymount University]]</nowiki> Press}}; just get them in corresponding order in both parameters. The templates do {{em|not}} have separate {{para|location1|!mxt=y}}, {{para|publisher1|!mxt=y}}, etc., parameters. For historical publications that are still worth citing and still findable (e.g. via book digitizers – see the "via" parameter below), do not confuse the {{em|printer}} (printing press owner-operator) with the {{em|publisher}} (organization or person that sponsored the work); an edition may have a printer's name in larger type than the publisher, but for citation purposes we care about the publisher. If the distinction cannot be determined for certain in a particular case, list both. While some off-site publishers lean toward omitting publishing locations, they can serve more than purely bibliographical purposes on Wikipedia (e.g. an overabundance of material published in one place in an article about another place may reveal an editorial bias). * '''publication-date''': Date of publication when different from the date the work was written. Displays only if date or year are defined and only if different, else publication-date is used and displayed as date. Use the same format as other dates in the article; do not wikilink. Follows publisher; if work is not defined, then publication-date is preceded by "published" and enclosed in parenthesis. * '''via''' (optional): Name of the content deliverer (when they are {{em|not}} the publisher). "via" is not a replacement for "publisher", but provides additional detail. It may be used when the content deliverer presents the source in a format other than the original, or when the URL provided does not make clear the identity of the deliverer, or as suggested in [[WP:The Wikipedia Library]], e.g. [[WP:Credo accounts/Citations]]. See also {{section link||Registration or subscription required}}. Typical uses of this parameter are identification of a book-scanning and -databasing project such as those provided by the [[Internet Archive]], [[Project Gutenberg]], and [[Google Books]]; journal indexing and search services through which we commonly find academic articles, e.g. [[PubMed Central]], [[Paperity]], and [[JSTOR]]; and other aggregators or indexers of previously-published content, such as [[Dictionary.com]]. Use via only when a standard identifier cannot be used (see {{section link||Identifiers}}). Example: <code><nowiki>{{Cite dictionary |entry=skeptic |entry-url=https://www.dictionary.com/browse/skeptic?s=t#collins-section |title=[[Collins English Dictionary]] |edition=Complete & Unabridged Digital |date=2012 |location=London |publisher=[[HarperCollins]] |via=[[Dictionary.com]] |access-date=</nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}</nowiki></code> ===Pages=== {| class="wikitable plainrowheaders sortable" style="float:right; margin-left:1em;" |+CS1/CS2 template support for<br /><code>{{pipe}}volume=</code>, <code>{{pipe}}issue=</code>, <code>{{pipe}}page(s)=</code> |- !scope="col"| Template !scope="col"| {{pipe}}volume= !scope="col"| {{pipe}}issue= !scope="col"| {{pipe}}page(s)= !scope="col"| {{pipe}}quote-page(s)= |- !scope="row"| {{tlx|citation}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite arXiv}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite AV media}} | {{yes}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite AV media notes}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite bioRxiv}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite book}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite citeseerx}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{plainlist| *{{tlx|cite conference}} *(as a book)}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{plainlist| *{{tlx|cite conference}} *(as a journal)}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite encyclopedia}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite episode}} | {{no}} || {{yes}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite interview}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite journal}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite magazine}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite mailing list}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{plainlist| *{{tlx|cite map}} *(as book)}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{plainlist| *{{tlx|cite map}} *(as journal or magazine)}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite news}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite newsgroup}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite podcast}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite press release}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite report}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite serial}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite sign}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite speech}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite ssrn}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite tech report}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite thesis}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite web}} | {{no}} || {{no}} || {{yes}} || {{yes}} |} An editor may use any <u>one</u> of the following parameters in a given citation to refer to the specific page(s) or place in a cited source that contains the information that supports the article text. If more than one of the following parameters are used in the same citation, the error message <span style="color:red">Extra <code>|pages=</code> or <code>|at=</code> (</span>[[Help:CS1 errors#extra pages|help]]<span style="color:red">)</span> will display in the published citation. When more than one of the following parameters is used in error, {{para|page}} overrides both {{para|pages}} and {{para|at}}; {{para|pages}} overrides {{para|at}}. To resolve the error, remove extra parameters of this type until only one remains in the affected citation. * '''page''': page in the cited source containing the information that supports the article text, for example {{para|page|52}}. **{{anchor|pagehyphen}}'''Note:''' For a hyphenated page, use {{para|page|<nowiki>12{{hyphen}}34</nowiki>}}. This will not only properly display a hyphen, but also reduce the likelihood that an editor/bot will convert this to {{para|pages|<nowiki>12{{endash}}34</nowiki>}} by mistake. * {{anchor|csdoc_pages<!-- for as long as we don't pull "pages" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_pages" -->}}'''pages''': pages in the cited source containing the information that supports the article text. Separate page ranges with an [[En dash#En dash|en dash]]: – , for example {{para|pages|236–239}}. Separate non-sequential pages either with commas or semicolons, for example {{para|pages|157, 159}}. The form {{para|pages|461, 466–467}} is used when you are citing both non-contiguous and sequential pages. For page numbers higher than 999, either do not use thousands separators or enclose the page number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators, e.g. {{para|pages|<nowiki>((1,234{{endash}}1,235))</nowiki>}}. For multiple hyphenated pages, use the [[Help:Citation Style 1#Accept-this-as-written markup|accept-this-as-written markup]] to avoid the hyphens being converted to dashes, e.g. {{para|pages|<nowiki>((1{{hyphen}}2)), ((3{{hyphen}}4))</nowiki>}}. **'''Note:''' CS1 citations do not record the total number of pages in a cited source; do not use this parameter for that purpose. * '''at''': place in the cited source containing the information that supports the article text when a page number is not given, is inappropriate or is insufficient. Common examples include column or col., paragraph or para. and section or sec. Depending on the source being cited, other indicators may be appropriate to use with the {{para|at}} parameter including, but not limited to, track, hours, minutes and seconds, act, scene, canto, book, part, folio, stanza, back cover, liner notes, indicia, colophon, dust jacket, etc. Examples include {{para|at|Column 2}} or {{para|at|Paragraph 5}} or {{para|at|Back cover}} or {{para|at|Act III, Scene 2}}. * <b>quote-page</b>: The number of a single page quoted in {{para|quote}}. Use either {{para|quote-page}} or {{para|quote-pages}}, but not both. Should be a subset of the page(s) specified in {{para|page}}, {{para|pages}} or {{para|at}}. Displays preceded by {{code|p.}} unless {{para|no-pp|yes}}. If hyphenated, use {{tl|hyphen}} to indicate this is intentional (e.g. {{para|quote-page|<nowiki>3{{hyphen}}12</nowiki>}}). Alias: none. * OR: <b>quote-pages</b>: A list or range of pages quoted in {{para|quote}}. Use either {{para|quote-page}} or {{para|quote-pages}}, but not both. Should be a subset of the pages specified in {{para|pages}} or {{para|at}}. Separate using an en dash (–); separate non-sequential pages with a comma (,). Displays preceded by {{code|pp.}} unless {{para|no-pp|yes}} is defined. Hyphens are automatically converted to en dashes; if hyphens are appropriate because individual page numbers contain hyphens, for example: pp. 3-1–3-15, use [[Help:Citation_Style_1#Accept-this-as-written_markup|double parentheses]] to tell the template to display the value of {{para|quote-pages}} without processing it, and use {{tl|hyphen}} to indicate to editors that a hyphen is really intended: {{para|quote-pages|<nowiki>((3{{hyphen}}1{{ndash}}3{{hyphen}}15))</nowiki>}}. Alias: none. If the same source is reused with different pages, separate citations must be created. A way around this problem is to use a short citation {{tlx|sfn}}, or {{tlx|rp}} to provide linked page number citations. ===Edition identifiers=== * '''edition''': Identifies the particular edition of a cited source when the source has more than one edition, such as "2nd", "Revised", etc. Note that this parameter automatically displays " ed." after your entry. For example, {{para|edition|Revised third}} displays as: Revised third ed. The edition parameter can be omitted if there is no content difference between two editions of the same work; e.g. if a book was identically published in the UK and the US except, for example, ISBN number and cover art, it is not necessary to indicate either "UK" or "US" edition; or if citing minute:seconds of a film available in both a regular edition and a "Special Limited Collector's Edition", if the running time and cut are the same, it is not necessary to cite the particular edition. * '''series''': When the source is part of a series, such as a book series or a journal where the issue numbering has restarted. For journal series, {{para|series}} should be limited to {{code|Original/New Series}}, {{code|First/Second/Third/... Series}}, or similar.{{refn|name="c17_14.126"|group="Note"|"Some numbered series have gone on so long that, as with certain long-lived journals, numbering has started over again, preceded by n.s. (new series), 2nd ser. (second series), or some similar notation, usually enclosed in commas. (A change of publisher may also be the occasion for a change in series designation.) Books in the old series may be identified by o.s., 1st ser., or whatever complements the notation for the new series."<ref>{{cite book |author=University of Chicago |title=The Chicago Manual of Style |edition=17th |year= 2017 |publisher=University of Chicago Press |page=14.126|location=Chicago |language= |isbn=978-0226104201}}</ref> <p>For instance the journal ''[[Physical Review]]'', was numbered volumes 1–35 from 1893 to 1912 (the first series). From 1913 to 1969, the volume numbering restarted at 1 and went up to 188 (the second series). In 1970, ''Physical Review'' split into different parts, ''Physical Review A'', ''Physical Review B'', ''Physical Review C'', and ''Physical Review D'', where volumes again restarted at 1 (the third series). Since there are two publications identified as ''Physical Review, Volume 1'', there is a need to distinguish which is which by use of {{para|series|First Series}} or {{para|series|Second Series}}. While ''Physical Review A'' is in the third series of the ''Physical Review'' [[media franchise]], it is the first series of the publication known as ''Physical Review A''. Since there is no confusion about what ''Physical Review A, Volume 1'' could be referring to, there is no need to clarify to which numbering series the journal belong.</p> <p>In particular, note that the {{para|series}} parameter is not to be used to distinguish the different parts of a [[media franchise]], like ''[[Physical Review A]]'', ''[[Acta Crystallographica Section A]]'', ''[[Journal of the Royal Statistical Society, Series B]]''.</p>}} * {{anchor|csdoc_volume<!-- for as long as we don't pull "volume" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_volume" -->}}'''volume''': For a source published in several volumes. This field is displayed in bold after the title and series parameters. An alternative is to include the volume information in the title parameter after the main title. Separate volume ranges with an [[En dash#En dash|en dash]]: – , for example {{para|volume|I–IV}}. Separate non-sequential volumes either with commas or semicolons, for example {{para|volume|I, III}}. The form {{para|volume|I, III–V}} is used when you are citing both non-contiguous and sequential volumes. For volume numbers higher than 999, either do not use thousands separators or enclose the volume number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators. * {{anchor|csdoc_issue<!-- for as long as we don't pull "journal" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_issue" -->}}'''issue''': When the source is part of a series that is published periodically. Alias: '''number'''. When the issue has a special title of its own, this may be given, in italics, along with the issue number, e.g. {{para|issue|2, <nowiki>''</nowiki>Modern Canadian Literature<nowiki>''</nowiki>}}. Please choose either {{para|issue}} or {{para|number}} depending on what nomenclature is actually used in a publication. If a publication carries both, issue and number designations (typically one being a year-relative and the other an absolute value), provide them both, for example {{para|issue|2 #143}}. Separate ranges with an [[En dash#En dash|en dash]]: – , and non-sequential numbers either with commas or semicolons. For numbers higher than 999, either do not use thousands separators or enclose the number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators. ===External links=== * '''url''': Adds a link to the title * '''chapter-url''': Adds a link to the chapter. * '''format''': Format of the document at its URL (e.g., PDF, XLS, etc.). Do not specify for HTML as it is implied as the default. Do not use this parameter for completely different purposes, with annotations such as "fee required" or "reprint"; its intent is to notify readers what the file format is (e.g. in case some browsers might have trouble with it, or some might prefer to save the link to disk rather than open it in the browser). Access restrictions can be shown using the appropriate {{para|url-access}} parameter, see [[#Registration or subscription required|Registration or subscription required]]. Other notes about reprintings, etc., should be placed after the template, and before {{tag|ref|c}}. ====Using |format= ==== When MediaWiki encounters an external link URL with a '.pdf' or '.PDF' [[filename extension|extension]], it renders the external link with a [https://example.com/document.pdf PDF icon] in place of the usual [https://example.com/document external-link icon]. To make rendered cs1|2 citations that link to PDF documents somewhat more accessible, cs1|2 automatically adds a parenthetical PDF annotation so that those readers using screen-reader technology can know the type of the linked file. This is imperfect because some on-line sources redirect .pdf URLs to .html landing pages (this is common for PDF documents behind paywalls or registration barriers). Because the parenthetical PDF annotation happens automatically, editors are not required to set {{para|format|PDF}}, though doing so causes no harm. The {{para|format|PDF}} parameter may be deleted as part of a more substantial edit but editors should consider that many cs1|2 templates are copied from en.Wikipedia to other-language Wikipedias when articles here are translated to that other language. Do not assume that other-language Wikipedias use up-to-date cs1|2 templates; many do not, so removing {{para|format|PDF}} here can affect readers/translators at other Wikipedias. ====Online sources==== {{main|Wikipedia:External links|Wikipedia:Citing sources}} Links to sources are regarded as conveniences and are not required, except when citing Web-only sources. There are many digital libraries with works that may be used as sources. * Links should be to full versions of the source. * Online sources that require payment or subscription may be included per [[Wikipedia:Verifiability]]. Do not link to: * Sites that do not have permission to republish the work or which otherwise violate copyright. * Commercial sites such as Amazon, unless no alternative exists. * Reviews of the work. * Very short extracts such as Google Books snippet view where there is not enough context to verify the content, unless the entire work is also freely available there. (See [[WP:BOOKLINKS]]) ====Link formats==== Links should be kept as simple as possible. For example, when performing a search for a Google Book, the link for ''Monty Python and Philosophy'' would look like: : https://books.google.com/books?id=NPDgD546-doC&pg=PP1#v=onepage&q&f=false But can be trimmed to: : https://books.google.com/?id=NPDgD546-doC&pg=PP1#v=onepage&q&f=false or: : https://books.google.com/?id=NPDgD546-doC&printsec=frontcover or: : https://books.google.com/?id=NPDgD546-doC (if Google Books does not provide the cover page). ====Pages==== A direct link to a specific page may be used if supported by the host. For example, the link to page 172 of ''Monty Python and Philosophy'' on Google Books: : https://books.google.com/?id=NPDgD546-doC&pg=PA172 like so: : <code><nowiki>|page=[https://books.google.com/?id=wPQelKFNA5MC&pg=PA172 172]</nowiki></code> ====Special characters==== {{MediaWiki URL rules}} ====Access date==== * '''access-date''': The full date when the content pointed to by '''url''' was last verified to support the text in the article; do not wikilink; requires '''url'''; use the same format as other access and archive dates in the article's citations. It is ''not required for linked documents that do not change.'' For example, '''access-date''' is not required for links to copies of published research papers accessed via DOI or a published book, but should be used for links to news articles on commercial websites (these can change from time to time, even if they are also published in a physical medium). Note that '''access-date''' is the date that the URL was checked to not just be working, but to support the assertion being cited (which the current version of the page may not do). Can be [[Help:Citation Style 1/accessdate|hidden or styled]] by registered editors. Alias: '''accessdate'''. ===Web archives=== {{see|Wikipedia:Link rot}} * '''archive-url'''. Alias: '''archiveurl'''. * '''archive-date'''. Alias: '''archivedate'''. The original link may become unavailable. When an archived version is located, the original URL is retained and {{para|archive-url}} is added with a link to an archived copy of a web page, usually from services like WebCite and the Internet Archive. {{para|archive-date}} must be added to show the date the page was archived, not the date the link was added. When {{para|archive-url}} is used, {{para|url}} and {{para|archive-date}} are required, else an error will show. When an archived link is used, the citation displays with the title linked to the archive and the original link at the end: {{cite book |title=Monty Python and Philosophy |url=https://books.google.com/books?id=wPQelKFNA5MC |archive-url=https://web.archive.org/web/20130501102912/http://books.google.com/books?id=wPQelKFNA5MC |archive-date=May 1, 2013}} * '''url-status''': To change the order with the title retaining the original link and the archive linked at the end, set {{para|url-status|live}}: :{{cite book|title=Monty Python and Philosophy |url=https://books.google.com/books?id=wPQelKFNA5MC |archive-url=https://web.archive.org/web/20130501102912/http://books.google.com/books?id=wPQelKFNA5MC |archive-date=May 1, 2013 |url-status=live}} When the original URL has been usurped for the purposes of spam, advertising, or is otherwise unsuitable, setting {{para|url-status|unfit}} or {{para|url-status|usurped}} suppresses display of the original URL (but {{para|url}} and {{para|archive-url}} are still required). ===Identifiers=== {{csdoc|id2}} A custom identifier can be specified through {{csdoc|id1}} ===Registration or subscription required=== {{csdoc|registration}} ===Quote=== {{csdoc|quote|unpaginated=yes}} ===Anchors=== The module creates HTML IDs by default suitable for use with [[WP:CITESHORT|shortened footnotes]] using the [[Template:Harvard citation documentation|Harv- and sfn-family templates]]. These styles use in-text cites with a link that will jump to the ID created by the CS1 template. The ID is created from up to four author last names and the year, of the format <code>CITEREF''lastname(s)year''</code>. '''{{para|ref|<var>ID</var>}}''': Creates a custom ID equivalent to the value <var>ID</var>. This is useful where the author and/or date is unknown. The {{tlx|harvid}} template may be used here to create an ID for the Harv- and sfn-family templates. {| class="wikitable plainrowheaders" |+ Examples of anchors |- !scope="col"| Kind !scope="col"| Wikitext !scope="col"| ID created !scope="col"| Targetable by |- !scope="row"| Default, one name | <code><nowiki>{{cite book |first=Gary L. |last=Hardcastle |title=Monty Python and Philosophy |date=2006}}</nowiki></code> | <code>CITEREFHardcastle2006</code> | {{tlx|harv|Hardcastle|2006|4=pp=12-34}} |- !scope="row"| Default, two names | <code><nowiki>{{cite book |first=Gary L. |last=Hardcastle |first2=George A. |last2=Reisch |title=Monty Python and Philosophy |date=2006}}</nowiki></code> | <code>CITEREFHardcastleReisch2006</code> | {{tlx|harv|Hardcastle|Reisch|2006|5=pp=12-34}} |- !scope="row"| {{para|ref}} using {{tl|harvid}} | <code><nowiki>|ref={{harvid|Monty Python and Philosophy|2006}}</nowiki></code> | <code>{{harvid|Monty Python and Philosophy|2006}}</code> | {{tlx|harv|Monty Python and Philosophy|2006|4=pp=12-34}} |} ===Display options=== These features are not often used, but can customize the display for use with other styles. {{csdoc|display|lua=yes}} ====et al.==== et al. is the abbreviation of the Latin {{lang|la|et alii}} ('and others'). It is used to complete a list of authors of a published work, where the complete list is considered overly long. The abbreviation is widely used in English, thus it is not italicized per [[MOS:FOREIGN]]. ===Accept-this-as-written markup=== There are occasions where [[Module:Citation/CS1]] emits error or maintenance messages because of, or makes changes to, the values assigned to a select set of parameters. Special markup can be used to enforce that a value will nonetheless be accepted as written. The markup for this is <code>(({{var|value}}))</code>, i.e., wrap the entire parameter value in two sets of parentheses. Parameters that support this markup are: {| class="wikitable plainrowheaders" |+ Parameters that support accept-this-as-written markup !scope="col"| Parameter !scope="col"| Notes |- !scope="row"| {{para|author{{var|n}}}} |rowspan="6"| The various {{var|name}} parameters (including their enumerated variants) are checked for extra comma and semicolon separator characters which may indicate that the parameter is holding more than one name. If so, the list of names should be split up over multiple {{var|n}}-enumerated parameters. Corporate names, however, are sometimes comma-separated lists of names as well and so are erroneously flagged as a multiple-name error; markup can be used to indicate this.<br /><br />Legitimate names may be caught by the [[Help:CS1_errors#generic_name|generic-name test]]. This markup can prevent legitimate names from being flagged as generic. |- !scope="row"| {{para|contributor{{var|n}}}} |- !scope="row"| {{para|editor{{var|n}}}} |- !scope="row"| {{para|interviewer{{var|n}}}} |- !scope="row"| {{para|subject{{var|n}}}} |- !scope="row"| {{para|translator{{var|n}}}} |- !scope="row"| [[#csdoc_doi|{{para|doi}}]] |rowspan="5"| Identifiers are checked for validity to the extent possible. In rare cases, identifiers actually used in published works deviate from the checked standard format but are nonetheless valid. If the problem is down to a mere typographical error in a third-party source, correct the identifier instead of overriding the error message. |- !scope="row"| [[#csdoc issue|{{para|eissn}}]] |- !scope="row"| [[#csdoc issue|{{para|isbn}}]] |- !scope="row"| [[#csdoc_issn|{{para|issn}}]] |- !scope="row"| [[#csdoc_sbn|{{para|sbn}}]] |- !scope="row"| [[#csdoc_issue|{{para|issue}}]] |rowspan="2"|Spaces are inserted between commas and succeeding characters in comma-separated lists of issues, a hyphen is converted to an ndash in issue ranges, etc. A hyphenated issue number and an issue range cannot be distinguished, nor can a four-or-more-digit number with a thousands-separator from a comma-separated list of two or more issues. Markup can be applied to the entry as a whole or to individual list entries. |- !scope="row"| [[#csdoc_issue|{{para|number}}]] |- !scope="row"| [[#csdoc_volume|{{para|volume}}]] | Spaces are inserted between commas and succeeding characters in comma-separated lists of volumes, a hyphen is converted to an ndash in volume ranges, etc. A hyphenated volume and an volume range cannot be distinguished, nor can a four-or-more-digit volume with a thousands-separator from a comma-separated list of two or more volumes. Markup can be applied to the entry as a whole or to individual list entries. |- !scope="row"| [[#csdoc_pages|{{para|pages}}]] |rowspan="3"| Spaces are inserted between commas and succeeding characters in comma-separated lists of pages, a hyphen is converted to an ndash in page ranges, etc. A hyphenated page number and a page range cannot be distinguished, nor can a four-or-more-digit number with a thousands-separator from a comma-separated list of two or more pages. Markup can be applied to the entry as a whole or to individual list entries; does not apply to {{para|page}}, {{para|p}}, or {{para|quote-page}}. (This special markup is also supported by the plural page parameters {{para|pages}}, {{para|pp}} and {{para|quote-pages}} (as well as other aliases) of the {{tl|r}}, {{tl|rp}} and {{tl|ran}} citation templates. The family of {{tl|sfn}}- and {{tl|harv}}-style templates supports it as well in conjunction with {{para|pages}} and {{para|pp}}.) |- !scope="row"| [[#csdoc_pages|{{para|pp}}]] |- !scope="row"| [[#Quote|{{para|quote-pages}}]] |- !scope="row"| {{para|title}} | Trailing dots are normally removed from the value assigned to {{para|title}} as being redundant. There are cases where trailing dots are not redundant but are part of the title proper so should be retained. <!-- At present, the following applies only to {{cite journal}}: -->The parameter may also accept a number of special keywords (<code>none</code>, etc.<!-- don't document "off" for now as it may change again with the next update -->) taking precedence over free text input to specify a title; if a value also matching a keyword is meant as actual title text, markup can be used to indicate this. |- !scope="row"| {{para|title-link}} | <!-- At present, the following applies only to {{cite journal}}: -->The parameter may also accept a number of special keywords (<code>none</code>, <code>doi</code>, <code>pmc</code>) taking precedence over free text input to specify a link target; if a value also matching a keyword is meant as actual link target, markup can be used to indicate this. |- !scope="row"| [[#Authors|{{para|vauthors}}]] |rowspan="2"| Markup to suppress error messages and automatic Vancouver reformatting of allowed corporate names. |- !scope="row"| [[#Editors|{{para|veditors}}]] |} ==Printing== When viewing the page, CS1 templates render the URL to the title to create a link; when printing, the URL is printed. [[Help:External link icons|External link icons]] are not printed. ==Elements not included== Not all factually accurate pieces of information about a source are used in a Citation Style 1 citation. Examples of information not included: * The total number of pages in a cited source * The name of the library that provided access to an electronic copy of a cited source * The name of the library that owns a physical copy of a cited work * The library record or shelf location of a physical copy of a cited work ==Tools== {{main|Help:Citation tools}} '''CS1 templates may be inserted manually or by use of tools:''' * [[Wikipedia:TWL/Citoid|Citoid]], a tool built into [[WP:Visual Editor|Visual Editor]] that attempts to build a full citation based on a URL. See [[Wikipedia:VisualEditor/User guide#Using Citoid|user guide]]. * [[Wikipedia:RefToolbar|RefToolbar]] is part of the editing tool bar. Version 2.0 does not yet support all templates supported by version 1.0. * [[User:ProveIt GT|ProveIt]] provides a graphical interface for editing, adding, and citing references. It may be enabled per the documentation. * [https://alyw234237.github.io/wiki-doi-gbooks-citation-maker/ Wikipedia DOI and Google Books Citation Maker] * [https://tools.wmflabs.org/dispenser/view/Reflinks Reflinks] Adds references to templates while updating/filling-in title/dates/publisher/accessdates etc. * [https://tools.wmflabs.org/refill/ reFill] open source version of Reflinks * [[Zotero]] can export citations in Wikipedia-ready format. * [http://tools.wmflabs.org/citer/ Citer] – generates shortened footnote or named reference for a given Google Books URL, ISBN, or DOI. Also supports some major news websites. '''{{anchor|Error checking}}Error checking [[Wikipedia:User scripts|scripts]]:''' * [[User:Svick/HarvErrors]] is a script that may be enabled to display errors when using [[WP:CITESHORT|Shortened footnotes]] or [[WP:PAREN|parenthetical referencing]]. It does not warn when a long citation has been added but not a short one (using {{tl|sfn}} or {{tl|harvnb}}). * [[User:Trappist the monk/HarvErrors]] is very similar, but also contains additional warnings for potential issues. * [[User:BrandonXLF/CitationStyleMarker]] highlights inconsistent (CS1 vs CS2) citation styles used in the same article. Only works with templated citations. '''{{anchor|Reliability}}Reliability scripts:''' * [[User:Headbomb/unreliable]] color codes URLs and DOIs in gray/red/pink/yellow depending on their broad reliability ==TemplateData== This section documents interactions between [[WP:TemplateData]] and tools which use that data to edit Wikipedia such as [[VisualEditor]] and bots. Before making changes to the TemplateData be aware of these interactions. ===[[User:InternetArchiveBot]]=== *If an argument is set to "required" the argument will be added to all templates edited by IABot. This including adding empty arguments. For example, when {{para|website}} is "required" IABot makes the following edit: [https://en.wikipedia.org/w/index.php?title=2017%E2%80%9318_British_and_Irish_Cup&diff=prev&oldid=914629379]. ==Common issues== {{shortcut|Help:CS1PROBS}} ; {{para|access-date}} does not show. : If {{para|url}} is not supplied, then {{para|access-date}} does not show; by design. ; The bare URL shows before the title. : If the {{para|title}} field includes a newline or an invalid character then the link will be malformed; see [[#Web links|Web links]]. ; The title appears in red. : If URL is supplied, then the title cannot be wikilinked. ; The URL is not linked and shows in brackets. : The URL must include the [[URI scheme]] in order for MediaWiki to recognize it as a link. For example: <code>www.example.org</code> vs. <code>http://www.example.org</code>. ; A field is truncated. : A pipe (<code>|</code>) in the value will truncate it. Use {{tlx|!}} instead. ; The template markup shows. : Double open brackets &#91;&#91; are used in a field without closing double brackets &#93;&#93;. ; The author shows in brackets with an external link icon. : The use of an URL in {{para|author-link}} will break the link; this field is for the name of the Wikipedia article about the author, not a website. ; Multiple author or editor names are defined and one or more does not show : The parameters must be used in sequence, i.e. if {{para|last}} or {{para|last1}} is not defined, then {{para|last2}} will not show. By design. ; {{para|page}}, {{para|pages}} or {{para|at}} do not show. : These parameters are mutually exclusive, and only one will show; by design. == See also == * [[Help:Citation Style 2]] * [[Help:CS1 errors]] ==Notes== {{reflist|group="Note"}} ==References== {{reflist}} {{Wikipedia referencing}} {{Citation Style 1}} {{Help navigation}} [[Category:Citation Style 1 templates|*]] [[Category:Wikipedia citation administration]] 163131d4cbdf81900cb0d4974c4b0d845e7b20b7 Module:Lang 828 434 1896 2023-07-28T21:46:18Z wikipedia>Trappist the monk 0 Scribunto text/plain --[=[ Lua support for the {{lang}}, {{lang-xx}}, and {{transliteration}} templates and replacement of various supporting templates. ]=] require('strict'); local getArgs = require ('Module:Arguments').getArgs; local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl() local yesno = require ('Module:Yesno'); local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts local lang_table = lang_data.lang_name_table.lang; local lang_dep_table = lang_data.lang_name_table.lang_dep; local script_table = lang_data.lang_name_table.script; local region_table = lang_data.lang_name_table.region; local variant_table = lang_data.lang_name_table.variant; local suppressed_table = lang_data.lang_name_table.suppressed; local override_table = lang_data.override; local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization local content_lang = mw.language.getContentLanguage(); local this_wiki_lang_tag = content_lang.code; -- get this wiki's language tag local this_wiki_lang_dir = content_lang:getDir(); -- get this wiki's language direction local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic() local maint_cats = {}; -- maintenance categories go here local maint_msgs = {}; -- and their messages go here --[[--------------------------< I S _ S E T >------------------------------------------------------------------ Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string. ]] local function is_set( var ) return not (var == nil or var == ''); end --[[--------------------------< I N V E R T _ I T A L I C S >------------------------------------------------- This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn't become bold markup inadvertently. Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal, replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements. In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns. This function expects that markup in args.text is complete and correct; if it is not, oddness may result. ]] local function invert_italics (source) local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns [""]="\'\'", -- empty string becomes italic markup ["\'\'"]="", -- italic markup becomes empty string ["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic ["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold }; local seg = {}; source = source:gsub ("%f[\']\'%f[^\']", '&#39;'); -- protect single quote marks from being interpreted as bold markup seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text' seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup elseif '' ~= seg[1] then seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup elseif '' ~= seg[3] then seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup else seg[2] = source -- when there is no markup end seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table return table.concat (seg); -- put it all back together and done end --[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------ validates |italic= or |italics= assigned values. When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or, for the special case 'default', return nil. When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message. When both |italic= and |italics= are set, returns nil and a 'conflicting' error message. The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template's defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-xx}} depending on the individual template's requirements, 'italic' for {{transliteration}}) or to the value appropriate to |script=, if set ({{lang}} and {{lang-xx}} only). Accepted values and the values that this function returns are are: nil - when |italic= absent or not set; returns nil default - for completeness, should rarely if ever be used; returns nil yes - force args.text to be rendered in italic font; returns 'italic' no - force args.text to be rendered in normal font; returns 'normal' unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit' invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert' ]] local function validate_italic (args) local properties = {['yes'] = 'italic', ['no'] = 'normal', ['unset'] = 'inherit', ['invert'] = 'invert', ['default'] = nil}; local count = 0 for _, arg in pairs {'italic', 'italics', 'i'} do if args[arg] then count = count + 1 end end if count > 1 then -- return nil and an error message if more than one is set return nil, 'only one of |italic=, |italics=, or |i= can be specified'; end return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message end --[=[--------------------------< V A L I D A T E _ C A T _ A R G S >---------------------------------------------------------- Default behavior of the {{lang}} and {{lang-xx}} templates is to add categorization when the templates are used in mainspace. This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters to control categorization. Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the parameter is treated as if it were not set in the template. Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply. Accepted values for |nocat= are the text strings: 'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else for |cat= 'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else ]=] local function validate_cat_args (args) if not (args.nocat or args.cat) then -- both are nil, so categorize return; end if false == yesno (args.cat) or true == yesno (args.nocat) then args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template) else -- args.nocat is the parameter actually used. args.nocat = nil; end end --[[--------------------------< I N _ A R R A Y >-------------------------------------------------------------- Whether needle is in haystack ]] local function in_array ( needle, haystack ) if needle == nil then return false; end for n,v in ipairs( haystack ) do if v == needle then return n; end end return false; end --[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------ prettify ietf tags to use recommended subtag formats: code: lower case script: sentence case region: upper case variant: lower case private: lower case prefixed with -x- ]] local function format_ietf_tag (code, script, region, variant, private) local out = {}; if is_set (private) then return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored end table.insert (out, code:lower()); if is_set (script) then script = script:lower():gsub ('^%a', string.upper); table.insert (out, script); end if is_set (region) then table.insert (out, region:upper()); end if is_set (variant) then table.insert (out, variant:lower()); end return table.concat (out, '-'); end --[[--------------------------< G E T _ I E T F _ P A R T S >-------------------------------------------------- extracts and returns IETF language tag parts: primary language subtag (required) - 2 or 3 character IANA language code script subtag - four character IANA script code region subtag - two-letter or three digit IANA region code variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag in any one of these forms lang lang-variant lang-script lang-script-variant lang-region lang-region-variant lang-script-region lang-script-region-variant lang-x-private each of lang, script, region, variant, and private, when used, must be valid Languages with both two- and three-character code synonyms are promoted to the two-character synonym because the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding the synonymous three-character codes in the lang= attribute. For {{lang-xx}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}} because those parameters are superfluous to the IETF subtags in |code=) returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil. see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1 ]] local function get_ietf_parts (source, args_script, args_region, args_variant) local code, script, region, variant, private; -- ietf tag parts if not is_set (source) then return nil, nil, nil, nil, nil, 'missing language tag'; end local pattern = { -- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits) {'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits) {'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss {'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR {'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits) {'^(%a%a%a?)$'}, -- 18 - ll {'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters) } local t = {}; -- table of captures; serves as a translator between captured ietf tag parts and named variables for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i]) if c1 then -- c1 always set on match code = c1; -- first capture is always code t = { [pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures [pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures [pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table }; script = t.s or ''; -- translate table contents to named variables; region = t.r or ''; -- absent table entries are nil so set named ietf parts to empty string for concatenation variant= t.v or ''; private = t.p or ''; break; -- and done end end if not code then return nil, nil, nil, nil, nil, table.concat ({'unrecognized language tag: ', source}); -- don't know what we got but it is malformed end code = code:lower(); -- ensure that we use and return lower case version of this if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then return nil, nil, nil, nil, nil, table.concat ({'unrecognized language code: ', code}); -- invalid language code, don't know about the others (don't care?) end if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym table.insert (maint_cats, table.concat ({'Lang and lang-xx code promoted to ISO 639-1|', code})); table.insert (maint_msgs, table.concat ({'code: ', code, ' promoted to code: ', synonym_table[code]})); code = synonym_table[code]; -- use the synonym end if is_set (script) then if is_set (args_script) then return code, nil, nil, nil, nil, 'redundant script tag'; -- both code with script and |script= not allowed end else script = args_script or ''; -- use args.script if provided end if is_set (script) then script = script:lower(); -- ensure that we use and return lower case version of this if not script_table[script] then return code, nil, nil, nil, nil, table.concat ({'unrecognized script: ', script, ' for code: ', code}); -- language code ok, invalid script, don't know about the others (don't care?) end end if suppressed_table[script] then -- ensure that code-script does not use a suppressed script if in_array (code, suppressed_table[script]) then return code, nil, nil, nil, nil, table.concat ({'script: ', script, ' not supported for code: ', code}); -- language code ok, script is suppressed for this code end end if is_set (region) then if is_set (args_region) then return code, nil, nil, nil, nil, 'redundant region tag'; -- both code with region and |region= not allowed end else region = args_region or ''; -- use args.region if provided end if is_set (region) then region = region:lower(); -- ensure that we use and return lower case version of this if not region_table[region] then return code, script, nil, nil, nil, table.concat ({'unrecognized region: ', region, ' for code: ', code}); end end if is_set (variant) then if is_set (args_variant) then return code, nil, nil, nil, nil, 'redundant variant tag'; -- both code with variant and |variant= not allowed end else variant = args_variant or ''; -- use args.variant if provided end if is_set (variant) then variant = variant:lower(); -- ensure that we use and return lower case version of this if not variant_table[variant] then -- make sure variant is valid return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant}); end -- does this duplicate/replace tests in lang() and lang_xx()? if is_set (script) then -- if script set it must be part of the 'prefix' if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-script pair: ', code, '-', script}); end elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound) if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred) if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound) return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-region pair: ', code, '-', region}); end end else -- cheap way to determine if there are prefixes; fonipa and others don't have prefixes; # operator always returns 0 if variant_table[variant]['prefixes'][1] and not in_array (code, variant_table[variant]['prefixes']) then return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code: ', code}); end end end if is_set (private) then private = private:lower(); -- ensure that we use and return lower case version of this if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index return code, script, region, nil, nil, table.concat ({'unrecognized private tag: ', private}); end end return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil end --[[--------------------------< M A K E _ E R R O R _ M S G >-------------------------------------------------- assembles an error message from template name, message text, help link, and error category. ]] local function make_error_msg (msg, args, template) local out = {}; local category; if 'Transliteration' == template then category = 'Transliteration'; else category = 'Lang and lang-xx' end table.insert (out, table.concat ({'[', args.text or 'undefined', '] '})); -- for error messages output args.text if available table.insert (out, table.concat ({'<span style=\"color:#d33\">Error: {{', template, '}}: '})); table.insert (out, msg); table.insert (out, table.concat ({' ([[:Category:', category, ' template errors|help]])'})); table.insert (out, '</span>'); if (0 == namespace or 10 == namespace) and not args.nocat then -- categorize in article space (and template space to take care of broken usages) table.insert (out, table.concat ({'[[Category:', category, ' template errors]]'})); end return table.concat (out); end --[=[-------------------------< M A K E _ W I K I L I N K >---------------------------------------------------- Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an empty string. ]=] local function make_wikilink (link, display) if is_set (link) then if is_set (display) then return table.concat ({'[[', link, '|', display, ']]'}); else return table.concat ({'[[', link, ']]'}); end else return ''; end end --[[--------------------------< D I V _ M A R K U P _ A D D >-------------------------------------------------- adds <i> and </i> tags to list-item text or to implied <p>..</p> text. mixed not supported ]] local function div_markup_add (text, style) local implied_p = {}; if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text if 'italic' == style then return text:gsub ('(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item else return text; end end if text:find ('\n+') then -- look for any number of \n characters in text text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics mediawiki if 'italic' == style then text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each impled p (two or more consecutive '\n\n' sequences) else text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each impled p text = text:gsub ('\n', ''); -- strip newline characters end end return text; end --[[--------------------------< T I T L E _ W R A P P E R _ M A K E >------------------------------------------ makes a <span title="<title text>"><content_text></span> or <div title="<title text>"><content_text></div> where <title text> is in the tool-tip in the wiki's local language and <content_text> is non-local-language text in html markup. This because the lang= attibute applies to the content of its enclosing tag. <tag> holds a string 'div' or 'span' used to choose the correct wrapping tag ]] local function title_wrapper_make (title_text, content_text, tag) local wrapper_t = {}; table.insert (wrapper_t, table.concat ({'<', tag})); -- open opening wrapper tag table.insert (wrapper_t, ' title=\"'); -- begin title attribute table.insert (wrapper_t, title_text); -- add <title_text> table.insert (wrapper_t, '\">'); -- end title attribute and close opening wrapper tag table.insert (wrapper_t, content_text); -- add <content_text> table.insert (wrapper_t, table.concat ({'</', tag, '>'})); -- add closing wrapper tag return table.concat (wrapper_t); -- make a big string and done end --[[--------------------------< M A K E _ T E X T _ H T M L >-------------------------------------------------- Add the html markup to text according to the type of content that it is: <span> or <i> tags for inline content or <div> tags for block content The lang= attribute also applies to the content of the tag where it is placed so this is wrong because 'Spanish language text' is English: <i lang="es" title="Spanish language text">casa</i> should be: <span title="Spanish language text"><i lang="es">casa</i></span> or for <div>...</div>: <div title="Spanish language text"><div lang="es"><spanish-language-text></div></div> ]] local function make_text_html (code, text, tag, rtl, style, size, language) local html_t = {}; local style_added = ''; local wrapper_tag = tag; -- <tag> gets modified so save a copy for use when/if we create a wrapper span or div if text:match ('^%*') then table.insert (html_t, '&#42;'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki text = text:gsub ('^%*', ''); -- remove the splat from the text end if 'span' == tag then -- default html tag for inline content if 'italic' == style then -- but if italic tag = 'i'; -- change to <i> tags end else -- must be div so go text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i> end table.insert (html_t, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> html tag code = code:gsub ('%-x%-.*', ''); -- strip private use subtag from code tag because meaningless outside of wikipedia table.insert (html_t, table.concat ({' lang="', code, '\"'})); -- add language attribute if (rtl or unicode.is_rtl(text)) and ('ltr' == this_wiki_lang_dir) then -- text is right-to-left on a left-to-right wiki table.insert (html_t, ' dir="rtl"'); -- add direction attribute for right-to-left languages elseif not (rtl or unicode.is_rtl(text)) and ('rtl' == this_wiki_lang_dir) then -- text is left-to-right on a right-to-left wiki table.insert (html_t, ' dir="ltr"'); -- add direction attribute for left-to-right languages end if 'normal' == style then -- when |italic=no table.insert (html_t, ' style=\"font-style: normal;'); -- override external markup, if any style_added = '\"'; -- remember that style attribute added and is not yet closed end if is_set (size) then -- when |size=<something> if is_set (style_added) then table.insert (html_t, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted else table.insert (html_t, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute style_added = '\"'; -- remember that style attribute added and is not yet closed end end table.insert (html_t, table.concat ({style_added, '>'})); -- close the opening html tag table.insert (html_t, text); -- insert the text table.insert (html_t, table.concat ({'</', tag, '>'})); -- close the 'text' <i>, <span>, or <div> html tag if is_set (language) then -- create a <title_text> string for the title= attribute in a wrapper span or div local title_text; if 'zxx' == code then -- special case for this tag 'no linguistic content' title_text = table.concat ({language, ' text'}); -- not a language so don't use 'language' in title text elseif mw.ustring.find (language, 'languages', 1, true) then title_text = table.concat ({language, ' collective text'}); -- for collective languages else title_text = table.concat ({language, '-language text'}); -- for individual languages end return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag); else return table.concat (html_t); end end --[=[-------------------------< M A K E _ C A T E G O R Y >---------------------------------------------------- For individual language, <language>, returns: [[Category:Articles containing <language>-language text]] for English: [[Category:Articles containing explicitly cited English-language text]] for ISO 639-2 collective languages (and for 639-1 bh): [[Category:Articles with text in <language> languages]] ]=] local function make_category (code, language_name, nocat, name_get) local cat = {}; local retval; if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space return ''; -- return empty string for concatenation end if mw.ustring.find (language_name, 'languages', 1, true) then return table.concat ({'[[Category:Articles with text in ', language_name, ']]'}); end table.insert (cat, '[[Category:Articles containing '); if this_wiki_lang_tag == code then table.insert (cat, 'explicitly cited ' .. language_name); -- unique category name for the local language else table.insert (cat, language_name); end table.insert (cat, '-language text]]'); return table.concat (cat); end --[[--------------------------< M A K E _ T R A N S L I T >---------------------------------------------------- return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string The value |script= is not used in {{transliteration}} for this purpose; instead it uses |code. Because language scripts are listed in the {{transliteration}} switches they are included in the data tables. The script parameter is introduced at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code. To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed to be |translit-script= (in this function, tscript) This function is used by both lang_xx() and transl() lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style transl() always provides language_name, translit, and one of code or tscript, never both; always provides style For {{transliteration}}, style only applies when a language code is provided ]] local function make_translit (code, language_name, translit, std, tscript, style) local title; local out_t = {}; local title_t = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards local title_text = ''; -- tool tip text for title= attribute std = std and std:lower(); -- lower case for table indexing if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified title_text = language_name; -- write a generic tool tip if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name) title_text = title_text .. '-language'; -- skip this text (individual and macro languages only) end title_text = title_text .. ' romanization'; -- finish the tool tip; use romanization when neither script nor standard supplied elseif is_set (std) and is_set (tscript) then -- when both are specified if title_t[std] then -- and if standard is legitimate if title_t[std][tscript] then -- and if script for that standard is legitimate if script_table[tscript] then title_text = title_text .. table.concat ({title_t[std][tscript:lower()], ' (', script_table[tscript], ' script) transliteration'}); -- add the appropriate text to the tool tip else title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard? end else title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard? end else return ''; -- invalid standard, setup for error message end elseif is_set (std) then -- translit-script not set, use language code if not title_t[std] then return ''; end -- invalid standard, setup for error message if title_t[std][code] then -- if language code is in the table (transl may not provide a language code) title_text = title_text .. table.concat ({title_t[std][code:lower()], ' (', language_name, ' language) transliteration'}); -- add the appropriate text to the tool tip else -- code doesn't match title_text = title_text .. title_t[std]['default']; -- so use the standard's default end else -- here if translit-script set but translit-std not set if title_t['no_std'][tscript] then title_text = title_text .. title_t['no_std'][tscript]; -- use translit-script if set elseif title_t['no_std'][code] then title_text = title_text .. title_t['no_std'][code]; -- use language code else if is_set (tscript) then title_text = title_text .. table.concat ({language_name, '-script transliteration'}); -- write a script tool tip elseif is_set (code) then if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name) title_text = title_text .. '-language'; -- skip this text (individual and macro languages only) end title_text = title_text .. ' transliteration'; -- finish the tool tip else title_text = title_text .. ' transliteration'; -- generic tool tip (can we ever get here?) end end end local close_tag; if is_set (code) then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transliteration}}) code = code:match ('^(%a%a%a?)'); -- strip all subtags leaving only the language subtag if not style then -- nil for the default italic style table.insert (out_t, "<i lang=\""); -- so use <i> tag close_tag = '</i>'; -- tag to be used when closing else table.insert (out_t, table.concat ({'<span style=\"font-style: ', style, '\" lang=\"'})); -- non-standard style, construct a span tag for it close_tag = '</span>'; -- tag to be used when closing end table.insert (out_t, code); table.insert (out_t, "-Latn\">"); -- transliterations are always Latin script else table.insert (out_t, "<span>"); -- when no language code: no lang= attribute, not italic ({{transliteration}} only) close_tag = '</span>'; end table.insert (out_t, translit); -- add the translit text table.insert (out_t, close_tag); -- and add the appropriate </i> or </span> if '' == title_text then -- when there is no need for a tool-tip return table.concat (out_t); -- make a string and done else return title_wrapper_make (title_text, table.concat (out_t), 'span'); -- wrap with a tool-tip span and don end end --[[--------------------------< V A L I D A T E _ T E X T >---------------------------------------------------- This function checks the content of args.text and returns empty string if nothing is amiss else it returns an error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup. Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert. ]] local function validate_text (template, args) if not is_set (args.text) then return make_error_msg ('no text', args, template); end if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes return make_error_msg ('text has malformed markup', args, template); end local style = args.italic; if ('unset' ~= style) and ('invert' ~=style) then if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic return make_error_msg ('text has italic markup', args, template); end end end --[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------ render mainenance messages and categories ]] local function render_maint(nocat) local maint = {}; if 0 < #maint_msgs then -- when there are maintenance messages table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag for _, msg in ipairs (maint_msgs) do table.insert (maint, table.concat ({msg, ' '})); -- add message strings end table.insert (maint, '</span>'); -- close the span end if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only for _, cat in ipairs (maint_cats) do table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories end end return table.concat (maint); end --[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------ for proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we do nothing proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac ]] local function proto_prefix (text, language_name, proto_param) if false == proto_param then -- when forced by |proto=no return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats end return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat end --[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------ looks for a poem strip marker in text; returns true when found; false else auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know the content that will replace the stripmarker. ]] local function has_poem_tag (text) return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false; end --[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------ Inspects content of and selectively trims text. Returns text and the name of an appropriate html tag for text. If text contains: \n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return If text begins with list markup: \n* unordered \n; definition \n: definition \n# ordered trim all leading whitespace except \n and trim all trailing whitespace If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because the stripmarker is replaced with text wrapped in <div>..</div> tags. If the text contains any actual <div>...</div> tags, then it's again returned unmodified and <div>...</div> tags are used to wrap it, to prevent div/span inversion. ]] local function html_tag_select (text) local tag; if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that) tag = 'div'; -- poem replacement is in div tags so lang must use div tags elseif text:find ('<div') then -- reductive; if the text contains a div tag, we must use div tags tag = 'div'; elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags text = mw.text.trim (text); -- trim leading and trailing whitespace characters tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags elseif text:find ('\n[%*:;%#]') then -- if text has list markup text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n' tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki) else text = mw.text.trim (text); -- plain text tag = 'span'; -- so span is fine end return text, tag; end --[[--------------------------< V A L I D A T E _ P R O T O >-------------------------------------------------- validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false, empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of true indicating that some other value has been assigned to |proto= ]] local function validate_proto (proto_param) if 'yes' == proto_param then return true; elseif 'no' == proto_param then return false; elseif is_set (proto_param) then return nil, true; -- |proto= something other than 'yes' or 'no' else return nil; -- missing or empty end end --[[--------------------------< L A N G U A G E _ N A M E _ G E T >-------------------------------------------- common function to return language name from the data set according to IETF tag returns language name if found in data tables; nil else ]] local function language_name_get (ietf, code, cat) ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case local name; -- remains nil if not found if override_table[ietf] then -- look for whole IETF tag in override table name = override_table[ietf]; elseif override_table[code] then -- not there so try basic language tag name = override_table[code]; elseif lang_table[code] then -- shift to iana active tag/name table name = lang_table[code]; elseif lang_dep_table[code] then -- try the iana deprecated tag/name table name = lang_dep_table[code]; end if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code})); table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'})); end return name; -- name from data tables or nil end --[[--------------------------< _ L A N G >-------------------------------------------------------------------- entry point for {{lang}} there should be no reason to set parameters in the {{lang}} {{#invoke:}} <includeonly>{{#invoke:lang|lang}}</includeonly> parameters are received from the template's frame (parent frame) ]] local function _lang (args) local out = {}; local language_name; -- used to make category names local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set local subtags = {}; -- IETF subtags script, region, variant, and private local code; -- the language code local msg; -- for error messages local tag = 'span'; -- initial value for make_text_html() local template = args.template or 'Lang'; maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once maint_msgs = {}; validate_cat_args (args); -- determine if categorization should be suppressed if args[1] and args.code then return make_error_msg ('conflicting: {{{1}}} and |code=', args, template); else args.code = args[1] or args.code; -- prefer args.code end if args[2] and args.text then return make_error_msg ('conflicting: {{{2}}} and |text=', args, template); else args.text = args[2] or args.text; -- prefer args.text end msg = validate_text (template, args); -- ensure that |text= is set if is_set (msg) then -- msg is an already-formatted error message return msg; end args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag if msg then return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template); end code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}}) if msg then return make_error_msg ( msg, args, template); end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, template); end if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls if ('latn' == subtags.script) or -- script is latn (this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and unicode.is_Latin (args.text)) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics) args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic else args.italic = 'inherit'; -- italic not set; script not latn; inherit current style end end if is_set (subtags.script) then -- if script set, override rtl setting if in_array (subtags.script, lang_data.rtl_scripts) then args.rtl = true; -- script is an rtl script else args.rtl = false; -- script is not an rtl script end end args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant if 'invert' == args.italic and 'span' == tag then -- invert only supported for in-line content args.text = invert_italics (args.text) end args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name)); table.insert (out, make_category (code, language_name, args.nocat)); table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories return table.concat (out); -- put it all together and done end --[[--------------------------< L A N G >---------------------------------------------------------------------- entry point for {{lang}} there should be no reason to set parameters in the {{lang}} {{#invoke:}} <includeonly>{{#invoke:lang|lang}}</includeonly> parameters are received from the template's frame (parent frame) ]] local function lang (frame) local args = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text valueFunc = function (key, value) if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space return value; -- return untrimmed 'text' elseif value then -- all other values: if the value is not nil value = mw.text.trim (value); -- trim whitespace if '' ~= value then -- empty string when value was only whitespace return value; end end return nil; -- value was empty or contained only whitespace end -- end of valueFunc }); return _lang (args); end --[[--------------------------< T R A N S L A T I O N _ M A K E >---------------------------------------------- stand-alone function to create literal translation of main text Also used by {{lang-x2}} ]] local function translation_make (args_t) local translation_t = {', '}; -- initialize output if 'none' ~= args_t.label then -- if we want a label table.insert (translation_t, '<small>'); -- open the <small> html tag if 'no' == args_t.link then table.insert (translation_t, '<abbr title="literal translation">lit.</abbr>'); -- unlinked form else table.insert (translation_t, make_wikilink ('Literal translation', 'lit.')); -- linked form end table.insert (translation_t, "&thinsp;</small>"); -- close the <small> html tag end table.insert (translation_t, table.concat ({'&#39;', args_t.translation, '&#39;'})); -- use html entities to avoid wiki markup confusion return table.concat (translation_t); -- make a big string and done end --[[--------------------------< L A N G _ X X >---------------------------------------------------------------- For the {{lang-xx}} templates, the only parameter required to be set in the template is the language code. All other parameters can, usually should, be written in the template call. For {{lang-xx}} templates for languages that can have multiple writing systems, it may be appropriate to set |script= as well. For each {{lang-xx}} template choose the appropriate entry-point function so that this function knows the default styling that should be applied to text. For normal, upright style: <includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly> For italic style: <includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly> All other parameters should be received from the template's frame (parent frame) Supported parameters are: |code = (required) the IANA language code |script = IANA script code; especially for use with languages that use multiple writing systems |region = IANA region code |variant = IANA variant code |text = (required) the displayed text in language specified by code |link = boolean false ('no') does not link code-spcified language name to associated language article |rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language |nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected |cat = boolian false ('no') opposite form of |nocat= |italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state |lit = text that is a literal translation of text |label = 'none' to suppress all labeling (language name, 'translit.', 'lit.') any other text replaces language-name label - automatic wikilinking disabled for those {{lang-xx}} templates that support transliteration (those templates where |text= is not entirely latn script): |translit = text that is a transliteration of text |translit-std = the standard that applies to the transliteration |translit-script = ISO 15924 script name; falls back to code For {{lang-xx}}, the positional parameters are: {{{1}}} text {{{2}}} transliterated text {{{3}}} literal translation text no other positional parameters are allowed ]] local function _lang_xx (args) local out = {}; local language_name; -- used to make display text, article links local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set local subtags = {}; -- IETF subtags script, region, and variant local code; -- the language code local translit_script_name; -- name associated with IANA (ISO 15924) script code local translit; local translit_title; local msg; -- for error messages local tag = 'span'; -- initial value for make_text_html() local template = args.template or 'Lang-xx'; maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once maint_msgs = {}; if args[1] and args.text then return make_error_msg ('conflicting: {{{1}}} and |text=', args, template); else args.text = args[1] or args.text; -- prefer args.text end msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding if is_set (msg) then return msg; end args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly if args[2] and args.translit then return make_error_msg ('conflicting: {{{2}}} and |translit=', args, template); else args.translit = args[2] or args.translit -- prefer args.translit end if args[3] and (args.translation or args.lit) then return make_error_msg ('conflicting: {{{3}}} and |lit= or |translation=', args, template); elseif args.translation and args.lit then return make_error_msg ('conflicting: |lit= and |translation=', args, template); else args.translation = args[3] or args.translation or args.lit; -- prefer args.translation end if args.links and args.link then return make_error_msg ('conflicting: |links= and |link=', args, template); else args.link = args.link or args.links; -- prefer args.link end validate_cat_args (args); -- determine if categorization should be suppressed args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private if msg then -- if an error detected then there is an error message return make_error_msg (msg, args, template); end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, template); end if nil == args.italic then -- args.italic controls if is_set (subtags.script) then if 'latn' == subtags.script then args.italic = 'italic'; -- |script=Latn; set for font-style:italic else args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state> end else args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state> end end if is_set (subtags.script) then -- if script set override rtl setting if in_array (subtags.script, lang_data.rtl_scripts) then args.rtl = true; -- script is an rtl script else args.rtl = false; -- script is not an rtl script end end args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag if msg then return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template); end args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any) language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them if args.label then if 'none' ~= args.label then table.insert (out, table.concat ({args.label, ': '})); -- custom label end else if 'no' == args.link then table.insert (out, language_name); -- language name without wikilink else if mw.ustring.find (language_name, 'languages', 1, true) then table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink elseif lang_data.article_name[code] then table.insert (out, make_wikilink (lang_data.article_name[code], language_name)); -- language name with wikilink from override data else table.insert (out, make_wikilink (language_name .. ' language', language_name)); -- language name with wikilink end end table.insert (out, ': '); -- separator end if 'invert' == args.italic then args.text = invert_italics (args.text) end args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, ('none' == args.label) and language_name or nil)) if is_set (args.translit) and not unicode.is_Latin (args.text) then -- transliteration (not supported in {{lang}}); not supported when args.text is wholly latn text (this is an imperfect test) table.insert (out, ', '); -- comma to separate text from translit if 'none' ~= args.label then table.insert (out, '<small>'); if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name translit_script_name = script_table[args['translit-script']]; else translit_script_name = language_name; -- fall back on language name end translit_title = mw.title.makeTitle (0, table.concat ({'Romanization of ', translit_script_name})); -- make a title object if translit_title.exists and ('no' ~= args.link) then table.insert (out, make_wikilink ('Romanization of ' .. translit_script_name or language_name, 'romanized') .. ':'); -- make a wikilink if there is an article to link to else table.insert (out, 'romanized:'); -- else plain text end table.insert (out, '&nbsp;</small>'); -- close the small tag end translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script']) if is_set (translit) then table.insert (out, translit); else return make_error_msg (table.concat ({'invalid translit-std: \'', args['translit-std'] or '[missing]'}), args, template); end end if is_set (args.translation) then -- translation (not supported in {{lang}}) table.insert (out, translation_make (args)); end table.insert (out, make_category (code, category_name, args.nocat)); table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories return table.concat (out); -- put it all together and done end --[[--------------------------< L A N G _ X X _ A R G S _ G E T >---------------------------------------------- common function to get args table from {{lang-??}} templates returns table of args ]] local function lang_xx_args_get (frame) local args = getArgs(frame, { parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}} valueFunc = function (key, value) if 1 == key then -- the 'text' parameter; do not trim wite space return value; -- return untrimmed 'text' elseif value then -- all other values: if the value is not nil value = mw.text.trim (value); -- trim whitespace if '' ~= value then -- empty string when value was only whitespace return value; end end return nil; -- value was empty or contained only whitespace end -- end of valueFunc }); return args; end --[[--------------------------< L A N G _ X X _ I T A L I C >-------------------------------------------------- Entry point for those {{lang-xx}} templates that call lang_xx_italic(). Sets the initial style state to italic. ]] local function lang_xx_italic (frame) local args = lang_xx_args_get (frame); initial_style_state = 'italic'; return _lang_xx (args); end --[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------ Entry point ffrom another module. Sets the initial style state to italic. ]] local function _lang_xx_italic (args) initial_style_state = 'italic'; return _lang_xx (args); end --[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------ Entry point for those {{lang-xx}} templates that call lang_xx_inherit(). Sets the initial style state to inherit. ]] local function lang_xx_inherit (frame) local args = lang_xx_args_get (frame); initial_style_state = 'inherit'; return _lang_xx (args); end --[[--------------------------< _ L A N G _ X X _ I N H E R I T >---------------------------------------------- Entry point from another module. Sets the initial style state to inherit. ]] local function _lang_xx_inherit (args) initial_style_state = 'inherit'; return _lang_xx (args); end --[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------ Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid. All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Module entry point from another module ]] local function _is_ietf_tag (tag) -- entry point when this module is require()d into another local c, s, r, v, p, err; -- code, script, region, variant, private, error message c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else end --[[--------------------------< I S _ I E T F _ T A G >-------------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function is_ietf_tag (frame) return _is_ietf_tag (getArgs (frame)[1]); -- args[1] is the ietf language tag to be tested; also get parent frame end --[[--------------------------< I S _ I E T F _ T A G _ F R A M E >-------------------------------------------- Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent (template) frame. This function not useful when called by {{lang|fn=is_ietf_tag_frame|<tag>}} because <tag> is in the parent frame. ]] local function is_ietf_tag_frame (frame) return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]); -- args[1] is the ietf language tag to be tested; do not get parent frame end --[[--------------------------< _ N A M E _ F R O M _ T A G >-------------------------------------------------- Returns language name associated with IETF language tag if valid; error message else. All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Set invoke's |link= parameter to yes to get wikilinked version of the language name. Module entry point from another module ]] local function _name_from_tag (args) local subtags = {}; -- IETF subtags script, region, variant, and private local raw_code = args[1]; -- save a copy of the input IETF subtag local link = 'yes' == args['link']; -- make a boolean local label = args.label; local code; -- the language code local msg; -- gets an error message if IETF language tag is malformed or invalid local language_name = ''; code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code); if msg then local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template) return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private language_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them if link then -- when |link=yes, wikilink the language name if mw.ustring.find (language_name, 'languages', 1, true) then language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink elseif lang_data.article_name[code] then language_name = make_wikilink (lang_data.article_name[code], label or language_name); -- language name with wikilink from override data else language_name = make_wikilink (language_name .. ' language', label or language_name); -- language name with wikilink end end return language_name; end --[[--------------------------< N A M E _ F R O M _ T A G >---------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function name_from_tag (frame) -- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}} return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame end --[[--------------------------< _ T A G _ F R O M _ N A M E >-------------------------------------------------- Returns the ietf language tag associated with the language name. Spelling of language name must be correct according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator, that disambiguator must be omitted (they are not present in the data name-to-tag tables). Module entry point from another module ]] local function _tag_from_name (args) -- entry point from another module local msg; if args[1] and '' ~= args[1] then local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct) local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard if tag then return tag, true; -- language name found so return tag and done; second return used by is_lang_name() else msg = 'language: ' .. args[1] .. ' not found' -- language name not found, error message end else msg = 'missing language name' -- language name not provided, error message end local template = ''; if args.template and '' ~= args.template then template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template) end return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end --[[--------------------------< T A G _ F R O M _ N A M E >---------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function tag_from_name (frame) -- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}} local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name() return result; end --[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------ Module entry point from an {{#invoke:}} ]] local function is_lang_name (frame) local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name() return result and true or nil; end --[[--------------------------< _ T R A N S L >---------------------------------------------------------------- Module entry point from another module ]] local function _transl (args) local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards local language_name; -- language name that matches language code; used for tool tip local translit; -- transliterated text to display local script; -- IANA script local msg; -- for when called functions return an error message maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once maint_msgs = {}; if is_set (args[3]) then -- [3] set when {{transliteration|code|standard|text}} args.text = args[3]; -- get the transliterated text args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing if not title_table[args.translit_std] then return make_error_msg (table.concat ({'unrecognized transliteration standard: ', args.translit_std}), args, 'Transliteration'); end else if is_set (args[2]) then -- [2] set when {{transliteration|code|text}} args.text = args[2]; -- get the transliterated text else if args[1] and (args[1]:match ('^%a%a%a?%a?$') or -- args[2] missing; is args[1] a language or script tag or is it the transliterated text? args[1]:match ('^%a%a%a?%-x%-')) then -- or is args[1] a private-use tag return make_error_msg ('no text', args, 'Transliteration'); -- args[1] is a code so we're missing text else args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message return make_error_msg ('missing language / script code', args, 'Transliteration'); end end end if is_set (args[1]) then -- IANA language code used for html lang= attribute; or ISO 15924 script code if args[1]:match ('^%a%a%a?%a?$') or args[1]:match ('^%a%a%a?%-x%-') then -- args[1] has correct form? args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case else return make_error_msg (table.concat ({'unrecognized language / script code: ', args[1]}), args, 'Transliteration'); -- invalid language / script code end else return make_error_msg ('missing language / script code', args, 'Transliteration'); -- missing language / script code so quit end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, 'Transliteration'); end if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default args.italic = nil; -- set to nil; end if override_table[args.code] then -- is code a language code defined in the override table? language_name = override_table[args.code]; args.code = args.code:match ('^%a%a%a?'); -- if private use, strip all but language subtag elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables? language_name = lang_table[args.code]; elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables? language_name = lang_dep_table[args.code]; elseif script_table[args.code] then -- if here, code is not a language code; is it a script code? language_name = script_table[args.code]; script = args.code; -- code was an ISO 15924 script so use that instead args.code = ''; -- unset because not a language code else return make_error_msg (table.concat ({'unrecognized language / script code: ', args.code}), args, 'Transliteration'); -- invalid language / script code end -- here only when all parameters passed to make_translit() are valid return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic); end --[[--------------------------< T R A N S L >------------------------------------------------------------------ Module entry point from an {{#invoke:}} ]] local function transl (frame) return _transl (getArgs(frame)); end --[[--------------------------< C A T E G O R Y _ F R O M _ T A G >-------------------------------------------- Returns category name associated with IETF language tag if valid; error message else All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Module entry point from another module ]] local function _category_from_tag (args_t) local subtags = {}; -- IETF subtags script, region, variant, and private local raw_code = args_t[1]; -- save a copy of the input IETF subtag local link = 'yes' == args_t.link; -- make a boolean local label = args_t.label; local code; -- the language code local msg; -- gets an error message if IETF language tag is malformed or invalid local category_name = ''; code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code); if msg then local template = (args_t.template and table.concat ({'{{', args_t.template, '}}: '})) or ''; -- make template name (if provided by the template) return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private category_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', ''); if link then return table.concat ({'[[:', category_name, ']]'}); else return category_name; end end --[[--------------------------< C A T E G O R Y _ F R O M _ T A G >-------------------------------------------- Module entry point from an {{#invoke:}} ]] local function category_from_tag (frame) -- entry point from an {{#invoke:Lang|category_from_tag|<ietf tag>|template=<template name>}} return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { category_from_tag = category_from_tag, lang = lang, -- entry point for {{lang}} lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}} lang_xx_italic = lang_xx_italic, is_ietf_tag = is_ietf_tag, is_ietf_tag_frame = is_ietf_tag_frame, is_lang_name = is_lang_name, tag_from_name = tag_from_name, -- returns ietf tag associated with language name name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates transl = transl, -- entry point for {{transliteration}} _category_from_tag = _category_from_tag, -- entry points when this module is require()d into other modules _lang = _lang, _lang_xx_inherit = _lang_xx_inherit, _lang_xx_italic = _lang_xx_italic, _is_ietf_tag = _is_ietf_tag, get_ietf_parts = get_ietf_parts, _tag_from_name = _tag_from_name, _name_from_tag = _name_from_tag, _transl = _transl, _translation_make = translation_make, }; b4bf37fa610695625e5f1ff5d33471dfaaf8af34 Template:Collapsible option 10 1062 2322 2023-07-28T22:20:39Z wikipedia>Sdkb 0 Implement overhaul for readability, per [[WP:SILENTCONSENSUS|silent consensus]] at talk [[Special:Permalink/1166630468#Readability_overhaul|here]]. wikitext text/x-wiki This template's '''initial visibility currently defaults to {{param value|{{#switch:{{{default|}}}|collapsed=collapsed|expanded=expanded|autocollapse|#default=autocollapse}}}}''', meaning that {{#switch:{{{default|}}}|collapsed=it is hidden apart from its title bar.|expanded=it is fully visible.|autocollapse|#default=if there is another collapsible item on the page (a [[Wikipedia:Navigation_template#Types|navbox, sidebar]], or [[Help:Collapsing|table with the collapsible attribute]]), it is hidden apart from its title bar; if not, it is fully visible.}} To change this template's initial visibility, the {{para|{{{parameter_name|state}}}}} [[Help:Template#Parameters|parameter]] may be used: <ul> {{#ifeq:{{{default|}}}|collapsed|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}}| |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=collapsed}}</nowiki></code> will show the template collapsed, i.e. hidden apart from its title bar.</li>}} {{#ifeq:{{{default|}}}|expanded|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}} | |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=expanded}}</nowiki></code> will show the template expanded, i.e. fully visible.</li>}} {{#ifeq:{{{default|autocollapse}}}|autocollapse|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}} | |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=autocollapse}}</nowiki></code> will show the template autocollapsed, i.e. if there is another collapsible item on the page (a [[Wikipedia:Navigation_template#Types|navbox, sidebar]], or [[Help:Collapsing|table with the collapsible attribute]]), it is hidden apart from its title bar, but if not, it is fully visible.</li>}}</ul><!-- -->{{#if:{{{align|}}}|{{para|align|{{var|value}}}} is also available; where {{var|value}} can be either <code>right</code> or <code>left</code>. The default is {{kbd|center}}. }}{{#if:{{{title-background|}}}|{{para|title-background|{{var|value}}}} is also available; where {{var|value}} can be either {{kbd|navbox}} or a {{kbd|color}}. The default is {{kbd|none}}, and {{{kbd|navbox}}} defaults to the default navbox color. }}{{#if:{{{width|}}}| {{para|width|{{var|value}}}} is also available; where {{var|value}} can be either {{kbd|{{var|N}} [em/%/px]}} or {{kbd|auto}}. The default is {{kbd|100%}}. }}<!-- Add {{pp-template}} if template page where this template is transcluded is protected: -->{{template other | {{#if:{{PROTECTIONLEVEL:edit}} |{{pp-template|docusage=yes}} | {{#if:{{PROTECTIONLEVEL:move}} |{{pp-move|docusage=yes|small=yes}} }} }} }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> fa727f26d272a237bc7017c83ebd236a8ebb743a Template:Ping 10 209 474 2023-07-29T03:13:30Z Zppix 23 Protected "[[Template:Ping]]": High-risk template ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite) [Delete=Allow only autoconfirmed users] (indefinite)) wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Reply to|replyto|<noinclude>example=Example</noinclude>|max=50}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 2a5b1c2046f67d2edc3c7b2dc5258b61310c2f02 Module:Lang/doc 828 443 2492 2023-07-29T09:49:33Z w>Fayenatic london 0 /* Tracking categories */ update category links wikitext text/x-wiki {{High-use}} {{Language templates}} {{Lua|Module:Lang/data|Module:Lang/ISO 639 synonyms|Module:Lang/tag from name|Module:Unicode data|Module:Yesno|Module:Arguments}} This module exists primarily to provide correct html markup for non–English language text where that text is used in the English Wikipedia. It has a secondary purpose of providing correct visual rendering for this non-English text. The module was developed to consolidate processing for {{tlx|Lang}}, the {{cl|Lang-x templates|{{tld|lang-??}}}} (most), and {{tlx|Transl}} templates into a single source and to use a clearly defined data set extracted from international standards. It provides error checking and reporting to ensure that the html rendered is correct for browsers and screen readers. Other templates that get language name support from this module are: * {{tlx|Native name}} ==Data set== The data set is specified in [[Module:Lang/data]] and its included data modules: * language tag-and-name data ** [[Module:Language/data/iana languages]] – from IANA [https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry language-subtag-registry file] * language script data ** [[Module:Language/data/iana scripts]] – from IANA language-subtag-registry file * language region data ** [[Module:Language/data/iana regions]] – from IANA language-subtag-registry file * language variant data ** [[Module:Language/data/iana variants]] – from IANA language-subtag-registry file * suppressed-script data ** [[Module:Language/data/iana suppressed scripts]] – from IANA language-subtag-registry file The data set also includes supplementary data modules: * override and other non-standard data ** [[Module:Lang/ISO 639 synonyms]] – maps three character ISO 639-2, -2T, -3 codes to two character ISO 639-1 codes – from [https://www.loc.gov/standards/iso639-2/php/English_list.php Codes for the Representation of Names of Languages] ** [[Module:Lang/tag from name]] – reversed language tag-and-name data so that the language name is the key and the language tag is the value == Testcases == * [[Module:Lang/testcases]] ([[Module talk:Lang/testcases|run]]) * category_from_tag() ** [[Module:Lang/testcases/ISO 639-1 category from tag]] ([[Module talk:Lang/testcases/ISO 639-1 category from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-1 category from tag]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 category from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-2 category from tag]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 category from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-3 category from tag]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 category from tag|run]]) ** [[Module:Lang/testcases/ISO 639 deprecated and override category from tag]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override category from tag|run]]) * name_from_tag() ** [[Module:Lang/testcases/ISO 639-1 name from tag]] ([[Module talk:Lang/testcases/ISO 639-1 name from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-1 name from tag]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 name from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-2 name from tag]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 name from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-3 name from tag]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 name from tag|run]]) ** [[Module:Lang/testcases/ISO 639 deprecated and override name from tag]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override name from tag|run]]) * tag_from_name() ** [[Module:Lang/testcases/ISO 639-1 tag from name]] ([[Module talk:Lang/testcases/ISO 639-1 tag from name|run]]) ** [[Module:Lang/testcases/ISO 639-3-1 tag from name]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 tag from name|run]]) ** [[Module:Lang/testcases/ISO 639-3-2 tag from name]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 tag from name|run]]) ** [[Module:Lang/testcases/ISO 639-3-3 tag from name]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 tag from name|run]]) ** [[Module:Lang/testcases/ISO 639 deprecated and override tag from name]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override tag from name|run]]) ==Tracking categories== * {{Category link with count|Lang and lang-xx template errors}} * {{Category link with count|Transliteration template errors}} * {{Category link with count|Lang and lang-xx code promoted to ISO 639-1}} * {{Category link with count|Lang and lang-xx using deprecated ISO 639 codes}} ==See also== MoS on foreign words: * {{Section link|Wikipedia:Manual of Style/Text formatting#Foreign terms}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Language-related modules]] [[Category:Modules that check for strip markers]] }}</includeonly> 86fdcd32c33e0452c7598425e985cf3163a09016 Template:Dabnav 10 1583 2918 2023-07-29T15:31:48Z w>Weeklyd3 0 Undid revision 1167680200 by [[Special:Contributions/2403:6200:8850:BA7B:C5CA:A12B:7B6F:9113|2403:6200:8850:BA7B:C5CA:A12B:7B6F:9113]] ([[User talk:2403:6200:8850:BA7B:C5CA:A12B:7B6F:9113|talk]]): looks like a test edit wikitext text/x-wiki {{helpbox|width:150px |templatename=Dabnav |float={{{float|right}}} |bodyclass=plainlist |name=Disambiguation |list1= *[[Wikipedia:Disambiguation|Guideline]] ([[Wikipedia talk:Disambiguation|talk]]) *[[Wikipedia:Manual of Style/Disambiguation pages|Manual of Style]] ([[Wikipedia talk:Manual of Style/Disambiguation pages|talk]]) *[[Wikipedia:Manual of Style/Organizing disambiguation pages by subject area|Organizing long dabs]] ([[Wikipedia talk:Manual of Style/Organizing disambiguation pages by subject area|talk]]) *[[Wikipedia:Disambiguation dos and don'ts|Dos and don'ts]] ([[Wikipedia talk:Disambiguation dos and don'ts|talk]]) *[[Wikipedia:Long dab dos and don'ts|Organizing dos and don'ts]] ([[Wikipedia talk:Long dab dos and don'ts|talk]]) *[[Help:Disambiguation|Reader help]] ([[Help talk:Disambiguation|talk]]) ---- *{{tl|Disambiguation}} ---- *[[Wikipedia:WikiProject Disambiguation|WikiProject]] ([[Wikipedia talk:WikiProject Disambiguation|talk]]) *[[Wikipedia:WikiProject Disambiguation/CJKV task force|CJKV task force]] ([[Wikipedia talk:WikiProject Disambiguation/CJKV task force|talk]]) ---- *[[:Category:Wikipedia disambiguation|Disambig category]] *[[:Category:Disambiguation pages in need of cleanup|Pages in need of cleanup]] *[[Wikipedia:Disambiguation pages with links|Pages with links]] ---- }}<noinclude> {{Documentation}} [[Category:Wikipedia maintenance navigational templates]] [[Category:Wikipedia administration templates]] [[Category:Wikipedia help templates]] [[Category:WikiProject Disambiguation|τ]] </noinclude> 2d19d538e7fe34f655d33e83f958ab37657c0197 Template:Param value 10 1068 2334 2023-07-29T17:59:50Z wikipedia>MusikBot II 0 Protected "[[Template:Param value]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 134494 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <code style="border:{{{border|{{{b|thin solid #caa}}}}}};background-color:{{{bg-color|{{{bg|white}}}}}};padding:1px 2px 0 1px;margin:0 2px 0 1px;white-space:nowrap;{{{style|}}}">{{replace|{{replace|{{replace|{{replace|{{replace|<includeonly>⊗ϑ{{{1|}}}⊗ϑ</includeonly><noinclude>value</noinclude>| |{{{space|{{{sp|&nbsp;}}}}}}}}|#|&#35;}}|*|&#42;}}|:|&#58;}}|⊗ϑ|}}</code><noinclude> {{Documentation}} </noinclude> 6298b021570fa18e8e9016184d0b7a3c00563553 Template:Disambiguation/doc 10 1587 2922 2023-07-31T06:31:31Z w>Sdkb 0 Improve TemplateData, adding suggested values and labels wikitext text/x-wiki <noinclude>{{pp-vandalism|small=yes}} </noinclude>{{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[</nowiki>[[Wikipedia:Wikidata]]<nowiki>]]) --> {{for|the inline tag|Template:Disambiguation needed}} {{High-use}} {{Nosubst}} {{Dabnav}} {{tsh|Dab|Disambig}} This is the {{tl|Disambiguation}} template. This is a general-purpose template, to be placed at the bottom of any article that exists to help readers find other articles with the same or similar names. This concept is called ''[[Wikipedia:Disambiguation|disambiguation]]'' and is used with many common words, such as ''[[Cross (disambiguation)|cross]]'', ''[[Life (disambiguation)|life]]'' and ''[[work]]''. This template automatically adds articles to the [[:Category:Disambiguation pages]]. == Page title fixes == This template will automatically detect incomplete disambiguation present in page titles. If the title includes anything other than (disambiguation) in parentheses, it is assumed to be the article type. For example, this template on the page [[1st Division (France)]] would produce the text "This disambiguation page lists France articles associated with the title '''1st Division'''". If the page title contains parentheses that are not used for disambiguation (such as [[Everything You Always Wanted to Know About Sex* (*But Were Afraid to Ask)]]), set {{para|ignore_parentheses|yes}}. If you wish to manually specify the article type, use the {{para|type}} parameter. ==Variant templates== ===Disambiguation=== {{Category see also|Disambiguation message boxes}} For disambiguation pages requiring cleanup, use {{tl|Disambiguation cleanup}}. More specific and alternative templates exist for disambiguation pages whose entries are limited exclusively to items of a particular type: {| |- style="text-align:left" ! Template !! Category !! Notes |- | {{tl|Airport disambiguation}} || [[:Category:Airport disambiguation pages]] || for airports |- | {{tl|Biology disambiguation}} || [[:Category:Biology disambiguation pages]] |- | {{tl|Call sign disambiguation}} || [[:Category:Broadcast call sign disambiguation pages]] |- | {{tl|Caselaw disambiguation}} || [[:Category:Case law disambiguation pages]] |- | {{tl|Chinese title disambiguation}} || [[:Category:Disambiguation pages with Chinese character titles]] |- | {{tl|Genus disambiguation}} || [[:Category:Genus disambiguation pages]] |- | {{tl|Human name disambiguation}}<br>{{pad}}{{tl|Human name disambiguation cleanup}} || [[:Category:Human name disambiguation pages]] |- |- | {{tl|Hospital disambiguation}} || [[:Category:Hospital disambiguation pages]] || for hospitals or medical centers |- | {{tl|Letter–number combination disambiguation}} || [[:Category:Letter–number combination disambiguation pages]] |- | {{tl|Mathematical disambiguation}} || [[:Category:Mathematics disambiguation pages]] || for mathematics titles |- | {{tl|Military unit disambiguation}} || [[:Category:Military units and formations disambiguation pages]] |- | {{tl|Number disambiguation}} || [[:Category:Lists of ambiguous numbers]] |- | {{tl|Phonetics disambiguation}} || [[:Category:Linguistics disambiguation pages]] |- | {{tl|Place name disambiguation}} || [[:Category:Place name disambiguation pages]] |- | {{tl|Road disambiguation}} || [[:Category:Road disambiguation pages]] |- | {{tl|School disambiguation}} || [[:Category:Educational institution disambiguation pages]] || for educational institutions |- | {{tl|Species Latin name disambiguation}} || [[:Category:Latin name disambiguation pages]] |- | {{tl|Station disambiguation}} || [[:Category:Station disambiguation pages]] || for railway and public transport stations |- | {{tl|Synagogue disambiguation}} || [[:Category:Synagogue disambiguation pages]] || for synagogues |} '''Note:''' A set index article (SIA) is ''not'' a disambiguation page; it is a list article about a set of items ''of a specific type'' that ''also'' share the same (or similar) name. [[Wikipedia:Set index articles]] includes templates for SIAs. == Parameters == Sometimes there isn't a specific disambiguation template (see list above) that fits for a page, or the page has items in more than one of the above classes. Then use {{tl|Disambiguation}} but with one or more parameters telling which categories to use. Up to ten parameters can be fed, and in any order. For example: :{{tlc|Disambiguation|school|hospital}} {| |colspan=2| Only add a parameter from this list if the disambiguation page has '''several''' items of that type: |- |style="vertical-align:top"| {{tlx|Disambiguation|human name}}<br>{{pad}}{{tlx|Disambiguation|hn{{=}}''sortkey''}} || for [[:Category:Human name disambiguation pages]]<br>{{pad}}for [[:Category:Human name disambiguation pages]] with a specified [[WP:SORTKEY|sort key]] (e.g. {{tlx|Disambiguation|hn{{=}}Doe, John}}) |- | {{tlx|Disambiguation|bird}} || for [[:Category:Bird common name disambiguation pages]] |- | {{tlx|Disambiguation|church}} || for [[:Category:Church building disambiguation pages]] |- |style="vertical-align:top"| {{tlx|Disambiguation|county}}<br>{{pad}}{{tlx|Disambiguation|uscounty}} || for [[:Category:County name disambiguation pages]]<br>{{pad}}for [[:Category:United States county name disambiguation pages]] |- | {{tlx|Disambiguation|fish}} || for [[:Category:Fish common name disambiguation pages]] |- | {{tlx|Disambiguation|genus}} || for [[:Category:Genus disambiguation pages]] |- | {{tlx|Disambiguation|geo}} || for [[:Category:Place name disambiguation pages]] |- | {{tlx|Disambiguation|hospital}} || for [[:Category:Hospital disambiguation pages]] |- | {{tlx|Disambiguation|latin}} || for [[:Category:Latin name disambiguation pages]] |- |style="white-space: nowrap;"| {{tlx|Disambiguation|letter number}} || for [[:Category:Letter–number combination disambiguation pages]] |- | {{tlx|Disambiguation|math}} || for [[:Category:Mathematics disambiguation pages]] |- | {{tlx|Disambiguation|number}} || for [[:Category:Lists of ambiguous numbers]] |- | {{tlx|Disambiguation|plant}} || for [[:Category:Plant common name disambiguation pages]] |- | {{tlx|Disambiguation|political}} || for [[:Category:Political party disambiguation pages]] |- | {{tlx|Disambiguation|road}} || for [[:Category:Road disambiguation pages]] |- | {{tlx|Disambiguation|school}} || for [[:Category:Educational institution disambiguation pages]] |- | {{tlx|Disambiguation|ship}} || for [[:Category:Ship disambiguation pages]] |- | {{tlx|Disambiguation|station}} || for [[:Category:Station disambiguation pages]] |- | {{tlx|Disambiguation|tndis}} || for [[:Category:Title and name disambiguation pages]] |- | {{tlx|Disambiguation|township}} || for [[:Category:Township name disambiguation pages]] |- |colspan=2| <br/>These can be added if there are '''one or more''' elements in the list (per their category descriptions): |- | {{tlx|Disambiguation|airport}} || for [[:Category:Airport disambiguation pages]] |- | {{tlx|Disambiguation|callsign}} || for [[:Category:Broadcast call sign disambiguation pages]] |- |colspan=2| <br/>These can be added even if there's '''only one''' element in the list, since these types are not actually ambiguous: |- | {{tlx|Disambiguation|given name}} || for [[:Category:Disambiguation pages with given-name-holder lists]] |- | {{tlx|Disambiguation|surname}} || for [[:Category:Disambiguation pages with surname-holder lists]] |- |colspan=2| <br/>This parameter reflects the '''title''', not the contents: |- | {{tlx|Disambiguation|chinese}} || for [[:Category:Disambiguation pages with Chinese character titles]] |- |colspan=2| <br/>And this parameter reflects a '''maintenance need''', not the contents: |- | {{tlx|Disambiguation|split}} || for [[:Category:Disambiguation pages in need of being split]] {{!}}} Note that {{tl|Disambiguation}} might not have parameters for all subcategories of [[:Category:Disambiguation pages]]; the category may have to be manually added to the disambiguation page. === Nocat === If categorization is not needed on pages that are not in [[WP:MAINSPACE|mainspace]], then the "nocat" parameter may be set equal to "true" or "yes" as follows: * {{tlx|Disambiguation|nocat{{=}}true}} * {{tlx|Disambiguation|nocat{{=}}yes}} == Redirects == The following redirect to this template: * {{tl|Disambig}} * {{tl|Dab}} * {{tl|Disamb}} == Technical details == Internally, this template uses {{tl|Dmbox}}. That template categorises pages into [[:Category:All disambiguation pages]] and [[:Category:All article disambiguation pages]]. This template also uses {{tl|Disambiguation/cat}} to handle the categorisation parameters, such as "hospital" and "school". Other templates and modules used: * {{tl|Disambiguation page short description}} * {{tl|Template other}} * {{tl|Title disambig text}} * {{tl|PAGENAMEBASE}} * {{tl|Trim}} * {{tl|Str rep}} * {{module link|Redirect|isRedirect}} == Template use == Place template at the foot of the disambiguation page after all of the disambiguation content but before any categories (see below) (interlanguage links to Wikidata), as per the [[WP:DCAT]] guideline. ==TemplateData== {{TemplateData header}} <templatedata> { "description": "Place at the bottom of Disambiguation pages.", "params": { "1": { "label": "First category key", "description": "Used to put the page in a category. Can be one of 'split' (dab pages in need of being split); 'clean up','clean-up','cleanup' (dabs in need of cleanup); 'airports','airport' (airport dabs); 'call sign','call signs','broadcast call sign','broadcast call signs','callsign' (broadcast call sign dabs); 'chinese char','chinese-char','chinesechar','chinese character','chinese' (chinese character dabs); 'churches','church building','church buildings','church' (church building dabs), 'fish' (fish dabs); 'geodis','geography','geographical','place name','place names','place','places','geo' (Place names); 'county'; 'uscounty' (United States county dabs); 'township' (Township name dabs); 'name','names','human name','human names','hn','hndis' (Human name dabs); 'surnames','surname' (surname dabs); 'given names','given name' (given-name dabs), 'hospital name','hospital names','hospitals','hospital' (hospital dabs); 'latin name','latin names','latin' (Latin name dabs); 'letter-number','letter number' (Letter-number combination dabs); 'mathdab','maths','mathematics','mathematical','math' (mathematical dabs); 'numberdis','numbers','ambiguous number','ambiguous numbers','number' (Lists of ambiguous numbers), 'plants','plant' (Plant common name dabs); 'roaddis','roads','road' (road dabs), 'schooldis','schools','educational institution','educational institutions','college','colleges','university','universities','school' (Educational institution dabs); 'political','party' (political party dabs), 'genus' (Genus dabs)", "type": "string", "required": false, "suggestedvalues": [ "split", "clean up", "airports", "call sign", "chinese char", "churches", "fish", "places", "uscounty", "township", "name", "surnames", "given names", "hospital names", "latin name", "letter-number", "mathematics", "ambiguous number", "plants", "roads", "schools", "political", "genus" ], "suggested": true }, "2": { "label": "Second category key", "description": "Further category keys, as parameter 1.", "type": "string", "required": false, "suggestedvalues": [ "split", "clean up", "airports", "call sign", "chinese char", "churches", "fish", "places", "uscounty", "township", "name", "surnames", "given names", "hospital names", "latin name", "letter-number", "mathematics", "ambiguous number", "plants", "roads", "schools", "political", "genus" ] }, "3": { "label": "Third category key", "description": "Further category keys, as parameter 1.", "type": "string", "required": false, "suggestedvalues": [ "split", "clean up", "airports", "call sign", "chinese char", "churches", "fish", "places", "uscounty", "township", "name", "surnames", "given names", "hospital names", "latin name", "letter-number", "mathematics", "ambiguous number", "plants", "roads", "schools", "political", "genus" ] }, "4": { "label": "Fourth category key", "description": "Further category keys, as parameter 1.", "type": "string", "required": false, "suggestedvalues": [ "split", "clean up", "airports", "call sign", "chinese char", "churches", "fish", "places", "uscounty", "township", "name", "surnames", "given names", "hospital names", "latin name", "letter-number", "mathematics", "ambiguous number", "plants", "roads", "schools", "political", "genus" ] }, "5": { "label": "Fifth category key", "description": "Further category keys, as parameter 1.", "type": "string", "required": false, "suggestedvalues": [ "split", "clean up", "airports", "call sign", "chinese char", "churches", "fish", "places", "uscounty", "township", "name", "surnames", "given names", "hospital names", "latin name", "letter-number", "mathematics", "ambiguous number", "plants", "roads", "schools", "political", "genus" ] }, "6": { "label": "Sixth category key", "description": "Further category keys, as parameter 1.", "type": "string", "required": false, "suggestedvalues": [ "split", "clean up", "airports", "call sign", "chinese char", "churches", "fish", "places", "uscounty", "township", "name", "surnames", "given names", "hospital names", "latin name", "letter-number", "mathematics", "ambiguous number", "plants", "roads", "schools", "political", "genus" ] }, "7": { "label": "Seventh category key", "description": "Further category keys, as parameter 1.", "type": "string", "required": false, "suggestedvalues": [ "split", "clean up", "airports", "call sign", "chinese char", "churches", "fish", "places", "uscounty", "township", "name", "surnames", "given names", "hospital names", "latin name", "letter-number", "mathematics", "ambiguous number", "plants", "roads", "schools", "political", "genus" ] }, "8": { "label": "Eighth category key", "description": "Further category keys, as parameter 1.", "type": "string", "required": false, "suggestedvalues": [ "split", "clean up", "airports", "call sign", "chinese char", "churches", "fish", "places", "uscounty", "township", "name", "surnames", "given names", "hospital names", "latin name", "letter-number", "mathematics", "ambiguous number", "plants", "roads", "schools", "political", "genus" ] }, "9": { "label": "Ninth category key", "description": "Further category keys, as parameter 1.", "type": "string", "required": false, "suggestedvalues": [ "split", "clean up", "airports", "call sign", "chinese char", "churches", "fish", "places", "uscounty", "township", "name", "surnames", "given names", "hospital names", "latin name", "letter-number", "mathematics", "ambiguous number", "plants", "roads", "schools", "political", "genus" ] }, "10": { "label": "Tenth category key", "description": "Further category keys, as parameter 1.", "type": "string", "required": false, "suggestedvalues": [ "split", "clean up", "airports", "call sign", "chinese char", "churches", "fish", "places", "uscounty", "township", "name", "surnames", "given names", "hospital names", "latin name", "letter-number", "mathematics", "ambiguous number", "plants", "roads", "schools", "political", "genus" ] }, "hn": { "label": "Human name", "description": "Human name disambiguation page with its own sort key.", "type": "string", "required": false }, "page-title": { "label": "page-title", "description": "Page title to use, only useful for special cases when default does not work.", "type": "string", "default": "(FULLPAGENAME)", "required": false }, "nocat": { "label": "nocat", "description": "Set to 'yes' to prevent categorisation.", "type": "string", "required": false }, "demospace": { "label": "demospace", "description": "Used for testing.", "type": "string", "required": false }, "ignore_parentheses": { "label": "ignore_parentheses", "description": "Set to 'yes' to prevent parentheses in the article title from being parsed as incomplete disambiguation.", "type": "string", "required": false }, "type": { "label": "type", "description": "Manually specify the article type in the descriptive text ('This disambiguation page lists {{{type}}} articles...')", "type": "string", "required": false } } } </templatedata> == See also == * [[Wikipedia:Hatnote]] * {{tl|Dablinks}}{{snd}}lists wikilinks on the page that link to disambiguation pages * {{tl|dabsearch}} * {{tl|Disambiguation needed}} – Adds an inline "disambiguation needed" tag to an ambiguous link within an article, see [[Wikipedia:OTHERUSES]] for more. * {{tl|WikiProject Disambiguation}} – for disambig talkpages * {{tl|Redirect}} – for linking to disambiguation pages in an article that is [[WP:PRIMARYREDIRECT|the primary topic of a redirect]] * {{tl|Other uses}} – for linking to disambiguation pages in articles <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Disambiguation message boxes| ]] }}</includeonly> a042e98cd46caf4b65d6bb2996e5ba821d10ee65 Module:Documentation 828 51 97 2023-07-31T17:22:10Z wikipedia>Izno 0 add a comment to make it obvious Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub local format = mw.ustring.format ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return format('[[%s|%s]]', page, display) else return format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return format( '<span class="%s">(%s)</span>', message('toolbar-class'), table.concat(ret, ' &#124; ') ) end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :wikitext(p._getModuleWikitext(args, env)) :wikitext(p.protectionTemplate(env)) :wikitext(p.sandboxNotice(args, env)) :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.protectionLevels - the protection levels table of the title object. -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.protectionLevels() -- The protection levels table of the title object. return env.title.protectionLevels end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.canonicalUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Auxiliary templates ---------------------------------------------------------------------------- p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') function p._getModuleWikitext(args, env) local currentTitle = mw.title.getCurrentTitle() if currentTitle.contentModel ~= 'Scribunto' then return end pcall(require, currentTitle.prefixedText) -- if it fails, we don't care local moduleWikitext = package.loaded["Module:Module wikitext"] if moduleWikitext then return moduleWikitext.main() end end function p.sandboxNotice(args, env) --[=[ -- Generates a sandbox notice for display above sandbox pages. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' -- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page' -- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page' -- 'sandbox-notice-pagetype-other' --> 'sandbox page' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.' -- 'sandbox-notice-testcases-link-display' --> 'test cases' -- 'sandbox-category' --> 'Template sandboxes' --]=] local title = env.title local sandboxTitle = env.sandboxTitle local templateTitle = env.templateTitle local subjectSpace = env.subjectSpace if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then return nil end -- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text". local omargs = {} omargs.image = message('sandbox-notice-image') -- Get the text. We start with the opening blurb, which is something like -- "This is the template sandbox for [[Template:Foo]] (diff)." local text = '' local pagetype if subjectSpace == 10 then pagetype = message('sandbox-notice-pagetype-template') elseif subjectSpace == 828 then pagetype = message('sandbox-notice-pagetype-module') else pagetype = message('sandbox-notice-pagetype-other') end local templateLink = makeWikilink(templateTitle.prefixedText) local compareUrl = env.compareUrl if compareUrl then local compareDisplay = message('sandbox-notice-compare-link-display') local compareLink = makeUrlLink(compareUrl, compareDisplay) text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) else text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) end -- Get the test cases page blurb if the page exists. This is something like -- "See also the companion subpage for [[Template:Foo/testcases|test cases]]." local testcasesTitle = env.testcasesTitle if testcasesTitle and testcasesTitle.exists then if testcasesTitle.contentModel == "Scribunto" then local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink}) else local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) end end -- Add the sandbox to the sandbox category. omargs.text = text .. makeCategoryLink(message('sandbox-category')) -- 'documentation-clear' return '<div class="' .. message('clear') .. '"></div>' .. require('Module:Message box').main('ombox', omargs) end function p.protectionTemplate(env) -- Generates the padlock icon in the top right. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local protectionLevels = env.protectionLevels if not protectionLevels then return nil end local editProt = protectionLevels.edit and protectionLevels.edit[1] local moveProt = protectionLevels.move and protectionLevels.move[1] if editProt then -- The page is edit-protected. return require('Module:Protection banner')._main{ message('protection-reason-edit'), small = true } elseif moveProt and moveProt ~= 'autoconfirmed' then -- The page is move-protected but not edit-protected. Exclude move -- protection with the level "autoconfirmed", as this is equivalent to -- no move protection at all. return require('Module:Protection banner')._main{ action = 'move', small = true } else return nil end end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end return { title = title, docTitle = docTitle, -- View, display, edit, and purge links if /doc exists. viewLinkDisplay = message('view-link-display'), editLinkDisplay = message('edit-link-display'), historyLinkDisplay = message('history-link-display'), purgeLinkDisplay = message('purge-link-display'), preload = preload, createLinkDisplay = message('create-link-display') } end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local docTitle = data.docTitle -- yes, we do intend to purge the template page on which the documentation appears local purgeLink = makeWikilink("Special:Purge/" .. data.title.prefixedText, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, data.editLinkDisplay) local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, data.historyLinkDisplay) return "&#91;" .. viewLink .. "&#93; &#91;" .. editLink .. "&#93; &#91;" .. historyLink .. "&#93; &#91;" .. purgeLink .. "&#93;" else local createLink = makeUrlLink(docTitle:canonicalUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) return "&#91;" .. createLink .. "&#93; &#91;" .. purgeLink .. "&#93;" end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editDisplay = message('edit-link-display') local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, editDisplay) local historyDisplay = message('history-link-display') local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:canonicalUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeWikilink("Special:EditPage/" .. sandboxPage, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:canonicalUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeWikilink("Special:EditPage/" .. testcasesPage, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:canonicalUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 268dc89480af10873bfbca5439ae8e61b404f770 Template:Infobox government cabinet 10 1156 2482 2023-07-31T17:59:57Z w>MusikBot II 0 Changed protection settings for "[[Template:Infobox government cabinet]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2500 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki {{infobox | bodystyle = width:auto; max-width:30em | abovestyle = background-color: #ededed; | above = <includeonly><div class="fn org">{{{cabinet_name|{{PAGENAMEBASE}}}}}</div></includeonly> | subheaderstyle1 = font-weight:bold; | subheader1 = {{br separated entries | 1 = {{#invoke:InfoboxImage|InfoboxImage|image={{{flag|}}}|border={{#if:{{{flag_border|}}}|yes}}|size={{{flag_width|}}}|sizedefault=50px}} | 2 = {{#if:{{{jurisdiction|}}}|{{{cabinet_number|}}} {{if empty|{{{cabinet_type|}}}|Cabinet}} of {{{jurisdiction}}}}} }} | subheaderstyle2 = background-color: #efefef; font-weight:bold; | subheader2 = {{{incumbent|}}} | headerstyle = background-color: #efefef | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=300x200px|alt={{{alt|}}}}} {{#invoke:InfoboxImage|InfoboxImage|image={{{image2|}}}|size={{{image_size2|}}}|sizedefault=300x200px|alt={{{alt2|}}}}} {{#invoke:InfoboxImage|InfoboxImage|image={{{image3|}}}|size={{{image_size3|}}}|sizedefault=100px|alt={{{alt3|}}}}} {{#invoke:InfoboxImage|InfoboxImage|image={{{image4|}}}|size={{{image_size4|}}}|sizedefault=100px|alt={{{alt4|}}}}} | caption = {{{caption|}}} | label1 = Date formed | data1 = {{{date_formed|}}} | label2 = Date dissolved | data2 = {{{date_dissolved|}}} | header3 = {{#if:{{{government_head|}}}{{{government_head_history|}}}{{{deputy_government_head|}}}{{{state_head|}}}{{{current_number|}}}{{{former_members_number|}}}{{{total_number|}}}{{{political_party|}}}{{{legislature_status|}}}{{{opposition_cabinet|}}}{{{opposition_party|}}}{{{opposition_leader|}}}|People and {{engvar |defaultWord=organisations |defaultLang=en-UK |en-US=organizations |engvar={{{engvar|{{{jurisdiction|}}}}}}}}}} | label4 = {{#if:{{{state_head_title|}}}|{{{state_head_title}}}|Head of state}} | data4 = {{{state_head|}}} | label5 = {{#if:{{{governor_title|}}}|{{{governor_title}}}|Governor}} | data5 = {{{governor|}}} | label6 = {{#if:{{{governor_general_title|}}}|{{{governor_general_title}}}|Governor-General}} | data6 = {{{governor_general|}}} | label7 = {{#if:{{{represented_by_title|}}}|{{{represented_by_title}}}|Represented by}} | data7 = {{{represented_by|}}} | label8 = {{#if:{{{government_head_title|}}}|{{{government_head_title}}}|Head of government}} | data8 = {{{government_head|}}} | label9 = {{#if:{{{government_head_title|}}}|{{{government_head_title}}}|Head of government}}'s history | data9 = {{{government_head_history|}}} | label10 = {{#if:{{{deputy_government_head_title|}}}|{{{deputy_government_head_title}}}|Deputy {{#if:{{{government_head_title|}}}|{{{government_head_title}}}|head of government}}}} | data10 = {{{deputy_government_head|}}} | label11 = {{{other_government_minister_title|}}} | data11 = {{{other_government_minister|}}} | label12 = {{abbr|No.|Number}} of ministers | data12 = {{{members_number|{{{current_number|}}}}}} | label13 = Ministers removed | data13 ={{br separated entries | 1 = {{#if:{{{former_members_number|}}}|{{{former_members_number|}}}}} | 2 = {{#if:{{{former_members_resigned|}}}|{{{former_members_resigned|}}} resigned }} | 3 = {{#if:{{{former_members_dismissed|}}}|{{{former_members_dismissed|}}} dismissed }} | 4 = {{#if:{{{former_members_died|}}}|{{{former_members_died|}}} died }} | 5 = {{#if:{{{former_members_other|}}}|{{{former_members_other|}}} left for other reasons }} }} | label14 = Total {{abbr|no.|number}} of members | data14 = {{{total_number|}}} | label15 = {{#if:{{{political_party|}}}|Member party|Member parties}} | data15 = {{#if:{{{political_party|}}}|{{{political_party}}}|{{{political_parties|}}}}} | label16 = Status in legislature | data16 = {{{legislature_status|}}} | label17 = Opposition cabinet | data17 = {{{opposition_cabinet|}}} | label18 = {{#if:{{{opposition_party|}}}|Opposition party|Opposition parties}} | data18 = {{#if:{{{opposition_party|}}}|{{{opposition_party}}}|{{{opposition_parties|}}}}} | label19 = {{#if:{{{opposition_leader|}}}|Opposition leader|Opposition leaders}} | data19 = {{#if:{{{opposition_leader|}}}|{{{opposition_leader}}}|{{{opposition_leaders|}}}}} | header20 = {{#if:{{{election|}}}{{{last_election|}}}{{{legislature_term|}}}{{{budget|}}}{{{advice_and_consent1|}}}{{{advice_and_consent2|}}}{{{advice_and_consent3|}}}{{{advice_and_consent4|}}}{{{advice_and_consent5|}}}{{{incoming_formation|}}}{{{outgoing_formation|}}}{{{previous|{{{predecessor|}}}}}}{{{successor|}}}|History}} | label21 = Election(s) | data21 = {{{election|}}} | label22 = Outgoing election | data22 = {{{last_election|}}} | label23 = Legislature term(s) | data23 = {{{legislature_term|}}} | label24 = Budget(s) | data24 = {{{budget|}}} | label25 = Advice and consent | data25 = {{br separated entries | 1 = {{{advice_and_consent1|}}} | 2 = {{{advice_and_consent2|}}} | 3 = {{{advice_and_consent3|}}} | 4 = {{{advice_and_consent4|}}} | 5 = {{{advice_and_consent5|}}} }} | label26 = Incoming formation | data26 = {{{incoming_formation|}}} | label27 = Outgoing formation | data27 = {{{outgoing_formation|}}} | label28 = Predecessor | data28 = {{{previous|{{{predecessor|}}}}}} | label29 = Successor | data29 = {{{successor|}}} }}{{#if:{{{cabinet_number|}}}|{{#if:{{{jurisdiction|}}}||{{main other|[[Category:Pages using infobox government cabinet with number and without jurisdiction]]}}}}}}{{#if:{{{government_head_history|}}}|{{main other|[[Category:Pages using infobox government cabinet with government_head_history]]}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox government cabinet with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox government cabinet]] with unknown parameter "_VALUE_"|ignoreblank=y| advice_and_consent1 | advice_and_consent2 | advice_and_consent3 | advice_and_consent4 | advice_and_consent5 | alt | alt2 | alt3 | alt4 | budget | cabinet_name | cabinet_number | cabinet_type | caption | current_number | date_dissolved | date_formed | deputy_government_head | deputy_government_head_title | election | engvar | flag | flag_border | flag_width | former_members_died | former_members_dismissed | former_members_number | former_members_other | former_members_resigned | government_head | government_head_history | government_head_title | governor | governor_general | governor_general_title | governor_title | image | image_size | image_size2 | image_size3 | image_size4 | image2 | image3 | image4 | incoming_formation | incumbent | jurisdiction | last_election | legislature_status | legislature_term | members_number | opposition_cabinet | opposition_leader | opposition_leaders | opposition_parties | opposition_party | other_government_minister | other_government_minister_title | outgoing_formation | political_parties | political_party | predecessor | previous | represented_by | represented_by_title | state_head | state_head_title | successor | total_number }}<noinclude> {{documentation}} </noinclude> c72cf78002f07aab16e762bbb8a17d54d618fad1 Module:Portal/images/aliases 828 847 1876 2023-08-01T18:11:55Z wikipedia>Buaidh 0 ["native americans"] = {"american indians"}, Scribunto text/plain --[==[ This is the "aliases" list of portal image names. It contains a list of portal image aliases for use with [[Module:Portal]]. -- The aliases can be used to point to an existing portal image entry. For portals who do not yet have a portal image entry, please -- use the appropriate page from the following list instead: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- When adding entries, please use alphabetical order. The format of the alias table entries is as follows: -- ["portal name"] = {"alias 1", "alias 2", "alias 3"}, -- Both the portal name and the alias names should be in lower case, and the "Portal:" namespace prefix -- should be omitted. For example, if you wanted "UK" to be an alias for "Portal:United Kingdom", then the -- alias name would be "uk" and the portal name would be "united kingdom". ]==] return { ["1990s"] = {"1990's"}, ["2000s"] = {"2000's"}, ["ac/dc"] = {"ac dc"}, ["academy award"] = {"academy awards"}, ["africa"] = {"african"}, ["african american"] = {"african-american", "african-americans", "african americans"}, ["african union"] = {"au"}, ["agriculture"] = {"agriculture and agronomy", "farming"}, ["american civil war"] = {"acw"}, ["american revolutionary war"] = {"american revolution"}, ["amphibians"] = {"amphibian"}, ["aviation"] = {"airplanes"}, ["åland"] = {"åland islands", "aland islands", "aland", "ax", "ala"}, ["albania"] = {"albanian", "al", "alb"}, ["alpine rhine"] = {"alpine rhine valley"}, ["american football"] = {"college football", "arena football league"}, ["ancient rome"] = {"roman empire"}, ["android (operating system)"] = {"android", "android os"}, ["animals"] = {"animal", "zoology"}, ["anime and manga"] = {"anime", "manga"}, ["apple inc."] = {"apple", "apple inc"}, ["arabic language"] = {"arabic"}, ["archaeology"] = {"archeology"}, ["argentina"] = {"argentine"}, ["arizona"] = {"phoenix, arizona"}, ["asian americans"] = {"asian american"}, ["association football"] = {"soccer", "football (soccer)"}, ["assyrians"] = {"assyria"}, ["atlas"] = {"cartography"}, ["atmospheric science"] = {"atmosphere","atmospheric sciences"}, ["australia"] = {"australian", "aus"}, ["australian capital territory"] = {"canberra"}, ["banks"] = {"bank", "banking"}, ["baseball"] = {"college baseball", "little league"}, ["basketball"] = {"national basketball league of canada", "wnba"}, ["biography"] = {"people", "biographies"}, ["birds"] = {"bird"}, ["björk"] = {"bjork"}, ["books"] = {"book"}, ["brunei"] = {"brunei darussalam", "bn", "brn"}, ["business and economics"] = {"advertising", "business", "economics", "economy", "marketing"}, ["buses"] = {"bus"}, ["california roads"] = {"roads in california"}, ["california state polytechnic university, pomona"] = {"cal poly pomona"}, ["canada"] = {"canadian", "ca", "can"}, ["canadian armed forces"] = {"canadian forces", "military history of canada"}, ["canary islands"] = {"spanish africa"}, ["caribbean"] = {"caribbean sea", "the caribbean", "west indies"}, ["cars"] = {"car", "automobile"}, ["cartoon"] = {"cartoons"}, ["catalan-speaking countries"] = {"catalan", "catalonia"}, ["catholic church"] = {"catholic", "catholicism"}, ["cats"] = {"cat"}, ["celtic studies"] = {"celts"}, ["cetaceans"] = {"cetacea"}, ["chemistry"] = {"chemical"}, ["children's literature"] = {"children's and young adult literature", "children and young adult literature"}, ["china"] = {"chinese", "cn", "chn"}, ["christiantiy"] = {"christ", "christian"}, ["christianity in india"] = {"indian christianity"}, ["classical civilisation"] = {"classical civilization", "classics"}, ["cleveland"] = {"cleveland, ohio"}, ["coconuts"] = {"coconut"}, ["color"] = {"colour"}, ["comedy"] = {"humour", "humor"}, ["commonwealth realms"] = {"commonwealth"}, ["communism"] = {"marxism"}, ["compact disc"] = {"cd", "compact disk"}, ["companies"] = {"company"}, ["computer-generated imagery"] = {"computer generated imagery"}, ["computer programming"] = {"programming"}, ["countries"] = {"country"}, ["county kilkenny"] = {"kilkenny"}, ["criminal justice"] = {"crime"}, ["current events"] = {"events", "news"}, ["czech republic"] = {"czechia", "czech", "the czech republic"}, ["dallas – fort worth metroplex"] = {"dallas", "dallas-fort worth", "dallas - fort worth metroplex"}, ["democratic republic of the congo"] = {"zaire", "zaïre", "cod", "drc", "the democratic republic of the congo"}, ["denmark"] = {"kingdom of denmark", "danish", "dk", "dnk"}, ["disasters"] = {"disaster"}, ["dravidian languages"] = {"dravidian", "dravidia", "dravidian peoples", "dravidian civilization"}, ["drink"] = {"drinks"}, ["dominican republic"] = {"the dominican republic"}, ["durham, north carolina"] = {"durham nc"}, ["dungeons & dragons"] = {"d&d"}, ["earth sciences"] = {"earth science"}, ["east timor"] = {"timor leste", "tl"}, ["electromagnetism"] = {"em"}, ["energy"] = {"electricity"}, ["english football"] = {"football in england"}, ["english language"] = {"english"}, ["erotica and pornography"] = {"porn", "pornography"}, ["european military history"] = {"military history of europe"}, ["european union"] = {"eu"}, ["evolutionary biology"] = {"evolution"}, ["extinct and endangered species"] = {"extinction", "endangered species"}, ["falkland islands"] = {"falkland", "malvinas", "fk", "flk"}, ["faroe islands"] = {"the faroe islands"}, ["federated states of micronesia"] = {"fm", "fsm"}, ["film"] = {"cinema", "films", "movie"}, ["fish"] = {"fishes"}, ["food"] = {"eating", "nutrition"}, ["football"] = {"association football", "soccer", "soccer ball"}, ["formula one"] = {"f1", "formula 1"}, ["france"] = {"overseas france"}, ["free and open-source software"] = {"floss", "foss", "free and open source software", "free software", "freeware", "open source", "open source software", "open-source software", "oss"}, ["freedom of speech"] = {"censorship", "free speech"}, ["french and francophone literature"] = {"french literature"}, ["french politics"] = {"politics of france"}, ["fungi"] = {"mycology"}, ["gardening"] = {"garden", "gardens", "gardening and horticulture"}, ["gemology and jewelry"] = {"gemmology and jewellery", "gemmology and jewelry", "gemology and jewellery"}, ["georgia (country)"] = {"georgia", "republic of georgia", "ge", "geo"}, ["georgia (u.s. state)"] = {"georgia (state)"}, ["globalization"] = {"globalisation"}, ["greater manchester"] = {"manchester"}, ["gullah"] = {"gullah people"}, ["hawaii"] = {"hawaiian kingdom", "hawai'i", "hawaiʻi", "us-hi"}, ["hazardous materials"] = {"dangerous goods"}, ["health and fitness"] = {"health"}, ["himalayas"] = {"himalaya region"}, ["hindustani"] = {"hindustani language", "hindustani and allied languages"}, ["hip hop"] = {"hip-hop"}, ["hispanic and latino americans"] = {"hispanic and latino american", "latino and hispanic americans", "latino and hispanic american"}, ["history"] = {"victorian era"}, ["horror fiction"] = {"horror"}, ["horticulture and gardening"] = {"horticulture"}, ["housing"] = {"houses"}, ["hunger relief"] = {"hunger"}, ["ice hockey"] = {"hockey"}, ["india"] = {"indian", "in", "ind", "republic of india"}, ["indian women"] = {"women of india", "indian women and gender issues"}, ["indiana"] = {"hoosier", "us-in"}, ["indigenous peoples of north america"] = {"indigenous people of north america"}, ["information technology"] = {"computing", "computer science", "it"}, ["insects"] = {"insect"}, ["internet"] = {"web"}, ["ireland"] = {"irish"}, ["islam"] = {"muslim history"}, ["islamic state of iraq and the levant"] = {"daesh", "isil", "isis"}, ["islands"] = {"island"}, ["italy"] = {"italian", "ita", "papal states"}, ["jacksonville, florida"] = {"jacksonville"}, ["judaism"] = {"jewish"}, ["kazi nazrul islam"] = {"nazrul"}, ["kurdistan"] = {"iraqi kurdistan"}, ["latter day saint movement"] = {"latter-day saints", "lds"}, ["lemony snicket"] = {"a series of unfortunate events"}, ["lists"] = {"list"}, ["lgbt"] = {"lgbt studies", "lgbtq", "lgbtqa"}, ["library and information science"] = {"information science"}, ["linguistics"] = {"linguistic"}, ["madonna (entertainer)"] = {"madonna"}, ["mammals"] = {"mammal"}, ["marine life"] = {"marine biology"}, ["mathematics"] = {"math", "maths"}, ["medicine"] = {"health care", "public health", "medical"}, ["mediterranean"] = {"mediterranean sea"}, ["metro detroit"] = {"detroit"}, ["mexico"] = {"méxico", "mx", "mex"}, ["middle tennessee state university"] = {"mtsu"}, ["michigan highways"] = {"highways in michigan"}, ["military history of australia"] = {"royal australian air force"}, ["modern history"] = {"2020s"}, ["molecular and cell biology"] = {"molecular and cellular biology"}, ["moldova"] = {"republic of moldova"}, ["mongolia"] = {"mongols"}, ["mountains"] = {"mountain"}, ["music of australia"] = {"australian music"}, ["myanmar"] = {"burma", "burmese", "mm", "mmr"}, ["national register of historic places"] = {"nrhp"}, ["native americans"] = {"american indians"}, ["nazism"] = {"nazi germany"}, ["netherlands"] = {"kingdom of the netherlands", "nl", 'nld', 'caribbean netherlands', 'the netherlands', 'dutch empire', 'the dutch empire', 'dutch republic'}, ["new guinea"] = {"western new guinea"}, ["new south wales"] = {"nsw"}, ["new york"] = {"new york state", "new york (state)", "us-ny"}, ["new york city"] = {"nyc"}, ["new zealand"] = {"nz", "nzl"}, ["north korea"] = {"dprk", "democratic people's republic of korea"}, ["north macedonia"] = {"republic of north macedonia", "mk", "mkd"}, ["north rhine-westphalia"] = {"nrw"}, ["north west england"] = {"liverpool"}, ["novels"] = {"novel"}, ["oceans"] = {"ocean", "world ocean"}, ["odisha"] = {"orissa"}, ["opera"] = {"operas"}, ["organized labour"] = {"labor", "organised labour", "organized labor", "trade unionism"}, ["pakistan"] = {"pakistani", "pk", "pak"}, ["paleontology"] = {"palaeontology", "prehistoric life"}, ["palestine"] = {"gaza strip", "the state of palestine","state of palestine"}, ["paralympic games"] = {"paralympics"}, ["pan-africanism"] = {"pan-african"}, ["pandemics"] = {"pandemic"}, ["people's republic of china"] = {"prc"}, ["pharmacy and pharmacology"] = {"pharmacy"}, ["philippines"] = {"the philippines"}, ["pitcairn islands"] = {"pitcairn, henderson, ducie and oeno islands"}, ["politics"] = {"government"}, ["portugal"] = {"portuguese empire"}, ["prince edward island"] = {"pei", "ca-pe"}, ["protected areas of india"] = {"biodiversity, protected areas & environment of india", "biodiversity of india", "environment of india"}, ["puducherry"] = {"pondicherry", "in-py"}, ["punjab, india"] = {"punjab (india)", "in-pb"}, ["punjab, pakistan"] = {"punjab (pakistan)", "western punjab", "pk-pb"}, ["python programming"] = {"python"}, ["quebec"] = {"québec", "ca-qc"}, ["religion"] = {"religions", "religious", "theology"}, ["republic of ireland"] = {"éire", "ie", "irl", "irish republicanism"}, ["republic of north macedonia"] = {"north macedonia", "mk", "mkd", "the republic of macedonia", "republic of macedonia"}, ["republic of the congo"] = {"the republic of the congo", "republic of congo", "french congo"}, ["roads"] = {"road"}, ["roads of canada"] = {"canada roads"}, ["romani people"] = {"roma", "romani"}, ["saint barthelemy"] = {"saint-barthélemy", "saint barthélemy"}, ["saint helena, ascension and tristan da cunha"] = {"saint helena"}, ["salad dressing"] = {"salad dressings"}, ["san francisco bay area"] = {"bay area", "san francisco"}, ["sandwich"] = {"sandwiches"}, ["schools"] = {"school"}, ["serer people"] = {"serer"}, ["september 11 attacks"] = {"september 11, 2001"}, ["sexuality"] = {"sex"}, ["shia islam"] = {"shia"}, ["spain"] = {"castile"}, ["spaceflight"] = {"space flight"}, ["sri lanka"] = {"sri lankan"}, ["systems science"] = {"system science"}, ["soap operas and telenovelas"] = {"soap operas", "telenovelas"}, ["south africa"] = {"za", "zaf"}, ["south georgia and the south sandwich islands"] = {"south georgia", "south sandwich islands", "gs", "sgs"}, ["soviet union"] = {"ussr", "soviet", "the soviet union"}, ["space"] = {"outer space"}, ["spices"] = {"herbs and spices"}, ["sports in canada"] = {"canadian sports", "canadian sport", "sports of canada", "sport in canada"}, ["sports"] = {"sport"}, ["st. john's, newfoundland and labrador"] = {"st. john's"}, ["state of georgia"] = {"georgia (u.s. state)", "georgia usa", "us-ga"}, ["state of mexico"] = {"mexico (state)", "mx-mex"}, ["state university of new york"] = {"suny"}, ["taiwan"] = {"republic of china", "roc", "tw", "twn"}, ["tamils"] = {"tamil","tamil people"}, ["tanks"] = {"tank"}, ["telecommunication"] = {"telecommunications", "telecoms", "telecomms", "telecomm", "telecom"}, ["telephones"] = {"telephone"}, ["television"] = {"tv"}, ["texas"] = {"republic of texas"}, ["texas a&m university"] = {"texas a&m"}, ["texas tech university"] = {"texas tech"}, ["thailand"] = {"siam"}, ["theatre"] = {"theater"}, ["the bahamas"] = {"bahamas", "bs", "bhs"}, ["the gambia"] = {"gambia", "gm", "gmb"}, ["the legend of zelda"] = {"legend of zelda"}, ["tiruchirappalli"] = {"trichy", "tiruchi"}, ["trains"] = {"rail", "rail transport"}, ["transportation"] = {"transport"}, ["trauma and orthopaedics"] = {"trauma & orthopaedics"}, ["trinidad and tobago"] = {"trinidad"}, ["tropical cyclones"] = {"hurricanes", "tropical cyclone"}, ["turkey"] = {"anatolia"}, ["united arab emirates"] = {"emirates", "ae", "uae", "emirati", "the united arab emirates"}, ["united kingdom"] = {"the united kingdom", "uk", "gb", "gbr", "britain", "british", "british overseas territories"}, ["united nations"] = {"un"}, ["united states"] = {"us", "usa", "u.s.", "united states armed forces", "american", "territories of the united states"}, ["united states arms"] = {"united states armed forces", "united states military", "united states military history", "u.s. armed forces", "u.s. military"}, ["united states congress"] = {"u.s. congress"}, ["united states counties"] = {"u.s. counties"}, ["united states presidents"] = {"u.s. presidents"}, ["united states roads"] = {"u.s. roads"}, ["united states state legislatures"] = {"u.s. state legislatures", "us state legislatures"}, ["united states streets"] = {"u.s. streets"}, ["united states supreme court"] = {"u.s. supreme court cases"}, ["united states territories"] = {"territories of the united states"}, ["university of missouri"] = {"mizzou"}, ["university of notre dame"] = {"notre dame"}, ["university of pittsburgh"] = {"pitt"}, ["vatican city"] = {"vatican"}, ["video games"] = {"vg", "video game"}, ["vietnam"] = {"south vietnam"}, ["war"] = {"military"}, ["washington (state)"] = {"washington", "us-wa"}, ["washington, d.c."] = {"district of columbia", "dc", "washington dc", "us-dc"}, ["western asia"] = {"west asia"}, ["western sahara"] = {"sahrawi arab democratic republic", "eh", "esh", "the sahrawi arab democratic republic"}, ["wind power"] = {"windmills"}, ["world war i"] = {"first world war", "wwi"}, ["world war ii"] = {"second world war", "world war 2", "wwii"}, ["zoos"] = {"zoo"} } fc71e0a63efd359c69c5660deabe9f1ca67e454d Template:Transliteration/doc 10 436 2966 2023-08-01T18:57:08Z w>Trappist the monk 0 Reverted edit by [[Special:Contribs/101.2.178.250|101.2.178.250]] ([[User talk:101.2.178.250|talk]]) to last version by Fayenatic london wikitext text/x-wiki {{Documentation subpage}} {{Redirect|Template:Transl|the template for translated text|Template:Translation}} {{High use}} {{COinS safe|n}} {{Lua|Module:Lang}} {{Language templates}} This template is used to mark up text '''[[transliteration|transliterated]] or [[romanisation|romanised]]''' from a non-Latin alphabet script to Latin alphabet script. This template should only be used for the transliterations of non-Latin scripts; for non-English language text displayed in its native script (such as Greek, Cyrillic and Arabic), {{tl|lang}} should be used, which tags non-transliterated text (written in original script). Transliteration is often used alongside that template, to allow non-readers of the script to interpret the text. This template adds a [[tooltip]] label naming the transliteration scheme, and renders text in [[italics]] by default. This template is important for [[MOS:ACCESSIBILITY]], as it invisibly tags text with the correct language, allowing for screenreaders to use the correct style of pronunciation. It also displays text in an appropriate font; romanisations marked up in {{tl|lang}} may display in fonts designed for that language's native text, whereas the transl template displays text in the same font as the rest of the article. Some languages, such as [[Chinese language|Chinese]], have more than one style of transliteration (such as [[Wade–Giles]], [[pinyin]], etc). This template can be used for these different transliteration schemes, though Wikipedia has a number of [[:Category:Wikipedia multilingual support templates|language-specific templates]], some of which support more than one transliteration styles in their parameters, that may be better suited for marking up transliterations. ==Example== The following code tags a Ukrainian name and its transliteration according to the Ukrainian National scheme. {{markup | <nowiki>{{lang|uk|Ярослав Рудницький}} ({{transliteration|uk|ukrainian|Yaroslav Rudnytskyi}})</nowiki> | {{lang|uk|Ярослав Рудницький}} ({{transliteration|uk|ukrainian|Yaroslav Rudnytskyi}}) }} ==Rationale== This template is intended to unify all "transliteration" templates, such as {{tl|IAST}} and {{tl|ISOtranslit}}. These templates are still usable, but they just transclude or are redirected back to <nowiki>{{transl}}</nowiki>. For example, (e.g. <code><nowiki>{{IAST|saṃskṛtam}}</nowiki></code> is a shortcut for <code><nowiki>{{transliteration|sa|IAST|saṃskṛtam}}</nowiki></code>. Other transliteration templates that once existed, such as {{tl|ArabDIN}}, are now handled natively by this template: <code><nowiki>{{transliteration|ar|DIN|...}}</nowiki></code>). This template is kept separate from {{tl|lang}} to address formatting issues (via CSS classes) and identification of transliteration schemes used. Ultimately, if these concerns are smartly addressed in the CSS file and/or in {{tl|lang}}, using <code><nowiki>{{transliteration|xx|...}}</nowiki></code> should be equivalent to using <code><nowiki>{{lang|xx-Latn|...}}</nowiki></code>. ==Usage== There are two ways of using this template: with or without specifying the [[romanization|transliteration scheme]] used: *two parameters, with [[ISO 639]] language code: <code><nowiki>{{transliteration|ar|al-Khwarizmi}}</nowiki></code> means that "al-Khwarizmi" is a transliteration from the Arabic in a loose or unspecified scheme. *two parameters, with [[ISO 15924]] script code: <code><nowiki>{{transliteration|Ogam|MAQI}}</nowiki></code> means that "MAQI" transliterates an [[Ogham]] inscription without specifying the language. Potentially useful when writing systems themselves are under discussion, e.g. <code><nowiki>{{transliteration|Cyrl|š}}</nowiki></code>, not <code><nowiki>{{transliteration|cu|š}}</nowiki></code> or <code><nowiki>{{transliteration|ru|š}}</nowiki></code> when discussing the letter {{script|Cyrl|[[Ш]]}}. *three parameters, with [[ISO 639]] language code: <code><nowiki>{{transliteration|ar|DIN|al-Ḫawārizmī}} / {{transliteration|ar|ALA|al-Khawārizmī}}</nowiki></code> the second parameter specifies the scheme used (DIN vs. ALA). *three parameters, with [[ISO 15924]] script code: <code><nowiki>{{transliteration|Arab|DIN|Ḫ}} vs {{transliteration|Arab|ALA|Kh}}</nowiki></code> for {{script|Arab|[[ﺥ]]}}. {{para|italic|no}} can be added to suppress the default italicization of Latin scripts; however, proper nouns – the names of people and places – are typically not italicized, and as such, generally do not require the use of a transliteration template. Note that there is no need to add italic markup (<code><nowiki>''</nowiki></code>) to transliteration templates. '''Note''': the language code is ISO 639 or IETF private-use tag (see [[Template:Lang#Private-use language tags]]); other forms of [[IETF BCP 47 language tag]]s are {{em|not}} supported. ===Transliteration scheme codes=== Codes for supported transliteration schemes can be seen by viewing the source of [[:Module:Lang/data]] – the {{code|translit_title_table}} data-structure lists for each such code the corresponding transliteration schemes. These may vary by language – e.g. code "ISO" means scheme [[ISO 233]] for Arabic but [[ISO 11940]] for Thai. ===Examples=== Inputting: *<code><nowiki>{{transliteration|ar|[[al-Khwarizmi]]}} / [[DIN 31635]]: {{transliteration|ar|DIN|al-Ḫawārizmī}} / [[ISO 233]]: {{transliteration|ar|ISO|al-H̱awārizmī}} / [[ALA-LC Romanization|ALA]]: {{transliteration|ar|ALA|al-Khawārizmī}}</nowiki></code> *<code><nowiki>[[Royal Thai General System of Transcription|RTGS]]: {{transliteration|th|phasa thai}} / [[ISO 11940]]: {{transliteration|th|ISO|p̣hās̄ʹāthịy}}</nowiki></code> *<code><nowiki>{{cuneiform|[[Sumerian language|&#x12174;&#x120a0;]]}} {{transliteration|sux|EME.GIR<sub>15</sub>}} / {{cuneiform|6|[[Hittite language|𒉈𒅆𒇷]]}} {{transliteration|hit|ne-ši-li}}</nowiki></code> Results in: *{{transliteration|ar|[[al-Khwarizmi]]}} / [[DIN 31635]]: {{transliteration|ar|DIN|al-Ḫawārizmī}} / [[ISO 233]]: {{transliteration|ar|ISO|al-H̱awārizmī}} / [[ALA-LC Romanization|ALA]]: {{transliteration|ar|ALA|al-Khawārizmī}} * [[Royal Thai General System of Transcription|RTGS]]: {{transliteration|th|phasa thai}} / [[ISO 11940]]: {{transliteration|th|ISO|p̣hās̄ʹāthịy}} *{{cuneiform|[[Sumerian language|&#x12174;&#x120a0;]]}} {{transliteration|sux|EME.GIR<sub>15</sub>}} / {{cuneiform|6|[[Hittite language|𒉈𒅆𒇷]]}} {{transliteration|hit|ne-ši-li}} '''ISO''': *{{lang|ru|[[Russian language|русский]]}} <code><nowiki>{{transliteration|ru|ISO|russkij}}</nowiki></code>: {{transliteration|ru|ISO|russkij}} *{{lang|ab|[[Abkhaz language|Аҧсуа]]}} <code><nowiki>{{transliteration|ab|ISO|aṗsua}}</nowiki></code>: {{transliteration|ab|ISO|aṗsua}} *{{lang|ar|[[Arabic| عربي ]]}} <code><nowiki>{{transliteration|ar|ISO|ʿarabī}}</nowiki></code>: {{transliteration|ar|ISO|ʿarabī}} *: ISO has huge issues transliterating {{transliteration|ar|alif}}, so it's better to use the Library of Congress transliteration, the [[DIN 31635|German Institute for Standardization]] or [[Hans Wehr transliteration]]; see [[Arabic transliteration]] and [[MOS:APOSTROPHE]] *{{lang|ta|[[Tamil language|தமிழ் ]]}} <code><nowiki>{{transliteration|ta|ISO|tamiḻ}}</nowiki></code>: {{transliteration|ta|ISO|tamiḻ}} *{{lang|bn|[[Bengali language|বাংলা ]]}} <code><nowiki>{{transliteration|bn|ISO|baṅla}}</nowiki></code>: {{transliteration|bn|ISO|baṅla}} *{{lang|el|[[Greek language|ελληνικά ]]}} <code><nowiki>{{transliteration|el|ISO|ellēniká}}</nowiki></code>: {{transliteration|el|ISO|ellēniká}} *{{lang|ka|[[Georgian language|ქართული]]}} <code><nowiki>{{transliteration|ka|ISO|k'art'uli}}</nowiki></code>: {{transliteration|ka|ISO|k'art'uli}} *{{lang|zh|[[Pinyin|漢語拼音]]}} <code><nowiki>{{transliteration|zh|ISO|hànyǔ pīnyīn}}</nowiki></code>: {{transliteration|zh|ISO|hànyǔ pīnyīn}} *{{lang|th|[[Thai language|ภาษาไทย]]}} <code><nowiki>{{transliteration|th|ISO|p̣hās̄ʹāthịy}}</nowiki></code>: {{transliteration|th|ISO|p̣hās̄ʹāthịy}} ==CSS== In order to apply a style to all text marked as transliteration, use a CSS selector that chooses all text with <code>transliteration</code> in the title attribute (tooltip). For instance, if you add the following to [[Special:MyPage/common.css|your common.css]], all transliterations will be colored {{color|teal}}: <syntaxhighlight lang="CSS"> [title~=transliteration] { color: teal; } </syntaxhighlight> ==Tracking category== * {{clc|Transliteration template errors}} ==TemplateData== {{templatedata header}} <templatedata> { "description": "Marks a text span transliterated from a particular language or writing system, and, optionally, according to a specific transliteration system.", "params": { "1": { "label": "Language or script code", "description": "ISO 639 language code (e.g., uk) or ISO 15924 script code (e.g., Cyrl)", "required": true, "type": "line" }, "2": { "label": "Text or transliteration scheme", "description": "Latin-alphabet transliterated text, or, optionally, transliteration scheme (e.g., bgn/pcgn)", "required": true, "type": "string" }, "3": { "label": "Text", "description": "Latin-alphabet transliterated text (required if a transliteration scheme is entered above)", "required": false, "suggested": true, "type": "string" } } } </templatedata> ==See also== *{{tl|lang}}, {{tl|language}} *{{tl|script}} * {{tl|trans}}, {{tl|translation}} *[[Romanization]] *[[List of ISO transliterations]] {{ISO 15924 script codes and related Unicode data|state=collapsed}} <includeonly>{{Sandbox other|| [[Category:Wikipedia multilingual support templates]] [[Category:Templates that add a tracking category]] }}</includeonly> 9eff20202df9880064bd01460f3d5f316b52a868 Module:Portal/images/g 828 1105 2409 2023-08-01T19:04:21Z wikipedia>Buaidh 0 ["genocide"] = "GenocidePortalLogo(ESR)2.JPG|link=Genocide|alt=icon", Scribunto text/plain --[==[ This is the "G" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "G". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be omitted. ]==] return { ["gabon"] = "Flag of Gabon.svg|border|link=|alt=flag", ["game theory"] = "Tictactoe-cgt-star.svg|link=|alt=icon", ["gaeilge"] = "Ireland smaller.svg|link=|alt=map", ["gaelic games"] = "GaelicGamesProjectLogo.png|link=|alt=icon", ["games"] = "Nuvola apps kbackgammon.png|alt=icon", ["gaming"] = "WPVG icon 2016.svg|link=|alt=", ["gardening"] = "France Loiret La Bussiere Potager 05.jpg|alt=icon", ["gastropods"] = "Grapevinesnail 01a.jpg|alt=icon", ["gene wiki"] = "Gene Wiki logo.png|link=|alt=", ["genocide"] = "GenocidePortalLogo(ESR)2.JPG|link=Genocide|alt=icon", ["geodesy"] = "Latitude and longitude graticule on an ellipsoid.svg|link=|alt=icon", ["geographical coordinates"] = "Earth clip art.svg|link=|alt=icon", ["geography"] = "Terra.png|link=|alt=icon", ["geography of india"] = "India physical map.svg|link=|alt=map", ["geology"] = "WikiProject Geology.svg|alt=icon", ["geophysics"] = "Geodynamo Between Reversals.gif|alt=icon", ["georgia (country)"] = "Flag of Georgia.svg|border|link=|alt=flag", ["georgia (u.s. state)"] = "Flag of Georgia (U.S. state).svg|border|link=|alt=flag", ["german"] = "German dialectal map.PNG|border|link=German language|alt=map", ["german empire"] = "Flag of the German Empire.svg|border|link=|alt=flag", ["germany"] = "Flag of Germany.svg|border|link=|alt=flag", ["ghana"] = "Flag of Ghana.svg|border|link=|alt=flag", ["gibraltar"] = "Flag of Gibraltar.svg|border|link=|alt=flag", ["gilbert and sullivan"] = "Pinaforeplaybill.jpg|link=|alt=", ["gilgit-baltistan"] = "Flag of Pakistan.svg|border|link=|alt=flag", ["glaciers"] = "Baltoro Glacier, Pakistan 2012.png|link=|alt=icon", ["global warming"] = "Change in Average Temperature.svg|alt=icon", ---Please do not add the file "Flag of Goa.svg" for Portal:Goa. This is due to the flag not being the offical flag and discussions on [[Template_talk:Portal#Goa_(2)] ["go"] = "GO game.png|alt=", ["goa"] = "GOA Colva Beach - panoramio.jpg|link=|alt=", ["governments of canada"] = "Canada Parliament2.jpg|alt=icon", ["great britain"] = "Flag of the United Kingdom.svg|border|link=|alt=flag", ["greater los angeles"] = "Flag of Los Angeles County, California.svg|border|link=|alt=flag", ["greater manchester"] = "England Greater Manchester numbered.svg|alt=icon", ["greece"] = "Flag of Greece.svg|border|link=|alt=flag", ["greenland"] = "Flag of Greenland.svg|border|link=|alt=flag", ["grenada"] = "Flag of Grenada.svg|border|link=|alt=flag", ["guadeloupe"] = "Flag of Guadeloupe (local).svg|border|link=|alt=flag", ["guam"] = "Flag of Guam.svg|border|link=|alt=flag", ["guatemala"] = "Flag of Guatemala.svg|border|link=|alt=flag", ["guernsey"] = "Flag of Guernsey.svg|border|link=|alt=flag", ["guinea"] = "Flag of Guinea.svg|border|link=|alt=flag", ["guinea-bissau"] = "Flag of Guinea-Bissau.svg|border|link=|alt=flag", ["gujarat"] = "Seal of Gujarat.svg|link=|alt=", ["guyana"] = "Flag of Guyana.svg|border|link=|alt=flag", } 68a8319ad516f2d3220b70d30b2ad1356bcba06f Template:Multiple issues 10 1299 2634 2023-08-02T19:25:23Z w>Paine Ellsworth 0 per edit request on talk page - ifeq function → if function wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||$B= {{Ambox |name = Multiple issues |templatestyles = Multiple issues/styles.css |doc = no |subst = <includeonly>{{subst:substcheck}}</includeonly> |class = ambox-multiple_issues compact-ambox |type = content |removalnotice = yes <!-- as of 2016-06, param does not work on this template --> |cat=Articles with multiple maintenance issues |text = <div class="multiple-issues-text {{#if:{{{1|}}}|mw-collapsible {{#if:{{{collapsed|}}}|mw-collapsed}}}}"><!-- -->'''This {{#if:{{{section|}}}|section|article}} has multiple issues.''' Please help '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it]''' or discuss these issues on the '''[[{{TALKPAGENAME}}|talk page]]'''. <small>''([[Help:Maintenance template removal|Learn how and when to remove these template messages]])''</small> {{#if:{{{1|}}} | <div class="mw-collapsible-content"> {{#invoke:String|replace|source={{{1|}}}|pattern=style="display: none"|replace=|count=}}<!--remove style="display: none", to support display of {{orphan}} messages in {{multiple issues}}--> </div> | <includeonly>{{error|No issues specified. Please specify issues, or remove this template.}}</includeonly> }} </div> {{#if:{{{2|}}}|[[Category:Pages using multiple issues with unknown parameters|§{{PAGENAME}}]]}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using multiple issues with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Multiple issues]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | collapsed | section }} }}<noinclude> {{Documentation}} </noinclude> 3f964ca8d5ea8370050c8fa38db6df668160b77b Template:Flagicon/doc 10 1726 3254 2023-08-03T21:44:50Z wikipedia>Paine Ellsworth 0 High-use template + fmt wikitext text/x-wiki {{documentation subpage}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> {{high-use}} '''Template:Flagicon''' displays a flag of the named parameter in "icon" size, currently 23×15 pixels maximally (defined in [[Template:Flagicon/core]]), plus a one-pixel border. The image also has a clickable link to the associated article. For an unlinked flag icon, use [[Template:Flagdeco]] instead. Please consider the [[Wikipedia:Manual of Style (icons)#Flags|Manual of Style section on flag]]s before using this template. ==Usage== <code><nowiki>{{flagicon|name|variant=|size=|noredlink=}}</nowiki></code> ;name: The first parameter is mandatory, and identifies the name of the country, region, city, etc. A full list of available values can be found in [[:Category:Country data templates]]. For example, [[:Template:Country data Peru]] is used when the ''name'' parameter is specified as <code>Peru</code>. Many flags are also available via shortened "aliases", such as standard three-letter country codes as specified by [[ISO 3166-1 alpha-3]], [[List of IOC country codes|IOC]], or [[List of FIFA country codes|FIFA]]. The list of available "aliases" is found in [[:Category:Country data redirects]]. Many of these country codes could be considered obscure, so it is recommended to use the full country name. ;variant: The second parameter is optional, and identifies a flag variant to be used instead of the standard flag. This is most often used for historical flags but can also be used to specify naval flags, sport-use flags, etc. The list of available flag variants for each country is documented on the specific page for the country data template. For example, [[Template:Country data Peru]] includes a description of each of the available flag variations for Peru. This parameter can be a named parameter (e.g.. "<code>variant=1815</code>"), or a positional parameter, always after the country name. ;size: This parameter is optional, and is used to specify the maximum width and/or height of the flag image. This parameter is specified using standard [[Wikipedia:Extended image syntax|image syntax]]. ==Template data== {{TemplateData header}} <templatedata> { "description": "This template displays a wikilinked flag of the named parameter in 'icon' size, currently 23×15 pixels (defined in Template:Flagicon/core) plus a one-pixel border.", "params": { "1": { "label": "Name", "description": "Name of the country, region, city, etc.; full name is recommended for countries", "type": "string", "required": true }, "variant": { "label": "Variant", "description": "Identifies a flag variant to be used instead of the standard flag, e.g. 1815", "type": "string", "required": false, "aliases": [ "2" ] }, "size": { "label": "Maximum dimension", "description": "The maximum width or height, specified via standard 'extended image syntax' (e.g. x30px)", "type": "string", "required": false }, "noredlink": { "label": "No redlink", "description": "If set to any value which evaluates as true (i.e. '1', 'true', 'yes', or 'y'), it displays nothing if the country data file doesn't exist. (The default is to display a redlink)", "type": "string", "required": false } } } </templatedata> ==Examples== {| class="wikitable" ! Wikicode !! Results !! Notes |- | <code><nowiki>{{flagicon|Peru}}</nowiki></code> || {{flagicon|Peru}} || |- | <code><nowiki>{{flagicon|PER}}</nowiki></code> || {{flagicon|PER}} || Uses the ISO/IOC/FIFA country code |- | <code><nowiki>{{flagicon|Peru|1822}}</nowiki></code> || {{flagicon|Peru|1822}} || rowspan="2"| Specifies a historical flag |- | <code><nowiki>{{flagicon|Peru|variant=1822}}</nowiki></code> || {{flagicon|Peru|variant=1822}} |- | <code><nowiki>{{flagicon|PER|naval}}</nowiki></code> || {{flagicon|PER|naval}} || Specifies the naval ensign |- | <code><nowiki>{{flagicon|PER|air force}}</nowiki></code> || {{flagicon|PER|air force}} || Specifies the air force flag |- | <code><nowiki>{{flagicon|Peru|size=50px}}</nowiki></code> || {{flagicon|Peru|size=50px}} || Sets width to 50 pixels |- | <code><nowiki>{{flagicon|Xanadu}}</nowiki></code> || [[Template:Country data Xanadu]] || No flag for Xanadu, so displays redlink |- | <code><nowiki>{{flagicon|Xanadu|noredlink=yes}}</nowiki></code> || {{flagicon|Xanadu|noredlink=yes}} || No flag, so displays nothing |} ==Implementation notes== This template uses the data templates listed under [[:Category:Country data templates]], which contain the data specifying '''what''' to display and the formatter [[Template:Flagicon/core]], which contains the logic of '''how''' to display the flag. * <code><nowiki>{{flagicon|Peru}}</nowiki></code> → {{flagicon|Peru}} — uses [[Template:Country data Peru]] * <code><nowiki>{{flagicon|PER}}</nowiki></code> → {{flagicon|PER}} — uses [[Template:Country data PER]], which is a redirect to [[Template:Country data Peru]] Inside each country data template, this template uses the following parameters: * <code>flag alias</code> — name of the image file to display * <code>flag alias-xxxx</code> — name of the image file of flag variant <code>xxxx</code> * <code>alias</code> — used to display the [[alt attribute]] of the image (defaults to "Flag of ''alias''") == Tracking categories == *{{clc|Pages using flagicon template with unknown parameters}} Where <code><nowiki>{{Flagicon|Foo}}</nowiki></code> is used, but the <code><nowiki>Template:Country data Foo</nowiki></code> does not exist, then a [[WP:Red link|redlink]] is displayed, ''unless'' the {{para|noredlink|yes}} parameter has been set. Where the redlink is displayed, the page is addded to a tracking category: * [[:Category:Flagicons with missing country data templates]] (population: {{PAGESINCATEGORY:Flagicons with missing country data templates}}) ==Related templates== * [[Template:Flag]] is used to display a wikilinked name next to the flag. The displayed name will be the same as the parameter used with the template, but the link target will be the main article for the country (in these examples, [[Peru]]). ** <code><nowiki>{{flag|Peru}}</nowiki></code> → {{flag|Peru}} ** <code><nowiki>{{flag|PER}}</nowiki></code> → {{flag|Peru}} * [[Template:Flagcountry]] is also used to display a wikilinked name next to the flag. The displayed name will always be the same, regardless of whether or not a country code alias is used as the template parameter. ** <code><nowiki>{{flagcountry|Peru}}</nowiki></code> → {{flagcountry|Peru}} ** <code><nowiki>{{flagcountry|PER}}</nowiki></code> → {{flagcountry|PER}} * [[Template:Flagdeco]] displays an unlinked flag icon without country name. ** <code><nowiki>{{flagdeco|Peru}}</nowiki></code> → {{flagdeco|Peru}} For a full list of flag templates, see [[:Category:Flag template system]]. ==Alternatives to avoid Wikipedia's [[WP:PEIS|Post-expand include size]] limit== Pages with many flag icons may come close to or exceed Wikipedia's [[WP:PEIS|Post-expand include size]] limit. In these cases consider using modules or module-wrapper templates instead: * {{tl|flagg}} is a simple wrapper for [[Module:Flagg]]: For basic use, <code><nowiki>{{flagicon|</nowiki>''country''<nowiki>}}</nowiki></code> can be replaced with <code><nowiki>{{flagg|cxxlo|</nowiki>''country''<nowiki>}}</nowiki></code> ==See also== * [[Template:Flagicon image]] * [[Template:Coat of arms]] * [[Wikipedia:WikiProject Flag Template]] * [[Regional indicator symbol]] <includeonly>{{Sandbox other|| [[Category:Flag template system]] }}</includeonly> 879ee079273663abd7cfb598fedbf382231852c7 Module:Portal/images/c 828 871 1932 2023-08-04T04:12:44Z wikipedia>Hike395 0 Restored revision 1152754403 by [[Special:Contributions/Hike395|Hike395]] ([[User talk:Hike395|talk]]): Rv: undiscussed change Scribunto text/plain --[==[ This is the "C" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "C". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be -- omitted. ]==] local ambox_globe = "Ambox globe.svg" local hour=tonumber(os.date("%k")) if hour >= 22 or hour < 6 then ambox_globe = "Ambox globe Asia Australia.svg" else if hour >= 14 and hour < 22 then ambox_globe = "Ambox globe Americas.svg" end end return { ["cabo verde"] = "Flag of Cape Verde.svg|border|link=|alt=flag", ["california"] = "Flag of California.svg|border|link=|alt=flag", ["california delta"] = "California SD-03 (2011).svg|link=|alt=map", ["california roads"] = "California 1.svg|link=|alt=sign", ["california state university"] = "Flag of California.svg|border|link=|alt=flag", ["calvinism"] = "Kreuz-hugenotten.svg|alt=icon", ["cambodia"] = "Flag of Cambodia.svg|border|link=|alt=flag", ["cameroon"] = "Flag of Cameroon.svg|border|link=|alt=flag", ["canada"] = "Maple Leaf (from roundel).svg|link=|alt=flag", ["canadian communities"] = "Map Canada political-geo.png|link=|alt=", ["canadian football"] = "Canadian football.png|alt=icon", ["canadian law"] = "Supreme Court of Canada.jpg|link=|alt=", ["canadian territories"] = "Northern Canada.svg|alt=icon", ["canary islands"] = "Flag of the Canary Islands.svg|border|link=|alt=flag", ["cannabis"] = "Cannabis leaf.svg|alt=icon", ["cape cod and the islands"] = "Nobska Lighthouse 1.jpg|alt=icon", ["cape verde"] = "Flag of Cape Verde.svg|border|link=|alt=flag", ["capital district"] = "Empire State Plaza symbol 2.svg|link=|alt=", ["capitalism"] = "Capitalismlogo.svg|alt=icon", ["caribbean"] = "Relief Map of Caribbean.png|link=|alt=map", ["caribbean community"] = "Flag of CARICOM.svg|border|link=|alt=flag", ["cars"] = "Sportcar sergio luiz ara 01.svg|link=|alt=", ["cartoon network"] = "Cartoon Network.svg|border|link=|alt=", ["cartoon"] = "Mad scientist.svg|alt=icon", ["catalan-speaking countries"] = "Siñal d'Aragón.svg|border|alt=icon", ["catholic church"] = "046CupolaSPietro.jpg|border|alt=icon", ["cats"] = "Cat03.jpg|alt=icon", ["cayman islands"] = "Flag of the Cayman Islands.svg|border|link=|alt=flag", ["central african republic"] = "Flag of the Central African Republic.svg|border|link=|alt=flag", ["central america"] = "Age of Consent - Central America.svg|alt=icon", ["central asia"] = "Central Asian Games participating countries.PNG|alt=icon", ["cetaceans"] = "Sperm whale fluke.jpg|link=|alt=", ["chad"] = "Flag of Chad.svg|border|link=|alt=flag", ["chandigarh"] = "Gandhi Bhawan at Punjab University.jpg|alt=icon", ["channel islands"] = "Flag of Sark.svg|border|link=|alt=flag", ["chemistry"] = "Papapishu-Lab-icon-6.svg|link=|alt=", ["chennai"] = "Chennai High Court 1200x800.jpg|alt=icon", ["cheshire"] = "Cheshire Flag.svg|border|alt=icon", ["chess"] = "Chess.svg|alt=icon", ["chhattisgarh"] = "India Chhattisgarh locator map.svg|border|link=|alt=map", ["chicago"] = "Seal of Chicago, Illinois.svg|link=|alt=", ["children's literature"] = "Tom Sawyer 1876 frontispiece.jpg|link=|alt=", ["chile"] = "Flag of Chile.svg|border|link=|alt=flag", ["china"] = "Flag of the People's Republic of China.svg|border|link=|alt=flag", ["christianity"] = "P christianity.svg|alt=icon", ["christianity in india"] = "India with cross.svg|alt=icon", ["christmas"] = "Xmas tree.svg|link=|alt=", ["christmas island"] = "Flag of Christmas Island.svg|link=|alt=flag", ["civilizations"] = "Lascar Avenue of the Dead and the Pyramid of the Sun in the background (4566574277).jpg|border|link=|alt=", ["civil rights movement"] = "Logo SNCC.svg|link=WP:ACRM|alt=", ["cities"] = "COL-city icon.png|link=|alt=", ["clans of scotland"] = "Scottish clan map.png|link=|alt=map", ["classical music"] = "Audio a.svg|link=|alt=", ["classical tamil"] = "Word_Tamil.svg|link=|alt=word", ["climate"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=icon", ["climate change"] = "Climate change icon.png|link=|alt=icon", ["climbing"] = "Pictograms-nps-land-technical_rock_climbing.svg|link=|alt=icon", ["clothing"] = "Emojione 1F458.svg|alt=icon", ["cocos (keeling) islands"] = "Flag of the Cocos (Keeling) Islands.svg|border|link=|alt=flag", ["coffee"] = "Emblem-relax.svg|alt=icon", ["college basketball"] = "Basketball.png|link=|alt=", ["college football"] = "NCAAFootball transparent.png|alt=icon", ["colombia"] = "Flag of Colombia.svg|border|link=|alt=flag", ["colorado"] = "Flag of Colorado.svg|border|link=|alt=flag", ["comedy"] = "SMirC-laugh.svg|alt=icon", ["comics"] = "Wikipetan-manga.png|alt=icon", ["communism"] = "Symbol-hammer-and-sickle.svg|link=|alt=", ["community"] = "P globe blue.png|alt=icon", ["comoros"] = "Flag of the Comoros.svg|border|link=|alt=flag", ["companies"] = "Industry5.svg|link=|alt=", ["computer programming"] = "Octicons-terminal.svg|alt=icon", ["computer science"] = "Internet map 1024.jpg|alt=icon", ["connecticut"] = "Flag of Connecticut.svg|border|link=|alt=flag", ["conservatism"] = "DodgerBlue flag waving.svg|link=|alt=", ["constructed languages"] = "Design conlang.png|alt=icon", ["contents"] = "Wikipedia's W.svg|link=|alt=", ["contents/indexes"] = "Pointing-right.svg|link=|alt=icon", ["contents/lists"] = "Liste.svg|link=|alt=icon", ["contents/outlines"] = "Pointing-left.svg|link=|alt=icon", ["cooking"] = "One chef's hat.png|link=|alt=", ["cook islands"] = "Flag of the Cook Islands.svg|border|link=|alt=flag", ["cornwall"] = "Flag of Cornwall.svg|border|link=|alt=flag", ["coronavirus disease 2019"] = "SARS-CoV-2 (Wikimedia colors).svg|alt=virus icon", ["cosmology"] = "Ilc 9yr moll4096.png|link=|alt=", ["costa rica"] = "Flag of Costa Rica.svg|border|link=|alt=flag", ["côte d'ivoire"] = "Flag of Côte d'Ivoire.svg|border|link=|alt=flag", ["countries"] = "P countries-vector.svg|alt=icon", ["county kilkenny"] = "County Kilkenny arms.svg|alt=coat of arms", ["covid-19"] = "SARS-CoV-2 (Wikimedia colors).svg|alt=virus icon", ["cretaceous"] = "Shantungosaurus-v4.jpg|alt=", ["cricket"] = "Cricketball.png|link=|alt=", ["criminal justice"] = "Scale of justice 2.svg|link=|alt=", ["croatia"] = "Flag of Croatia.svg|border|link=|alt=flag", ["crustaceans"] = "Charybdis japonica.jpg|alt=icon", ["cuba"] = "Flag of Cuba.svg|border|link=|alt=flag", ["cumbria"] = "Herdwick sheep crop.jpg|alt=icon", ["curaçao"] = "Flag of Curaçao.svg|border|link=|alt=flag", ["cue sports"] = "Eight Ball Rack 2005 SeanMcClean.jpg|link=|alt=", ["current events"] = ambox_globe .. "|link=|alt=", ["current events/turkey"] = "Wikinews-logo.png|link=|alt=", ["cyprus"] = "Flag of Cyprus.svg|border|link=|alt=flag", ["czech republic"] = "Flag of the Czech Republic.svg|border|link=|alt=flag", ["czechia"] = "Flag of the Czech Republic.svg|border|link=|alt=flag", } 12569afcf6d5bfd01b853e6f6bca13f71c151050 Template:Country data New Zealand 10 1469 2804 2023-08-04T09:10:41Z w>Paine Ellsworth 0 per edit request on talk page - include entry wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = New Zealand | flag alias = Flag of New Zealand.svg | flag alias-1834 = Flag of the United Tribes of New Zealand.svg | flag alias-civil-1867 = Flag of New Zealand Government Ships 1867.svg | flag alias-civil = Civil Ensign of New Zealand.svg | flag alias-naval = Naval Ensign of New Zealand.svg | flag alias-naval-1941 = Naval Ensign of the United Kingdom.svg | link alias-naval = Royal New Zealand Navy | flag alias-air force = Air Force Ensign of New Zealand.svg | link alias-air force = Royal New Zealand Air Force | flag alias-navy = Naval Ensign of New Zealand.svg | link alias-navy = Royal New Zealand Navy | {{#ifeq:{{{altlink}}}|A national rugby union team|link alias-rugby union|empty}} = Junior All Blacks | link alias-football = New Zealand {{{mw|men's}}} national {{{age|}}} football team | size = {{{size|}}} | name = {{{name|}}} | altlink = {{{altlink|}}} | altvar = {{{altvar|}}} | variant = {{{variant|}}} <noinclude> | var1 = 1834 | var2 = civil-1867 | var3 = civil | var4 = naval-1941 | redir1 = NZL </noinclude> }} 4a2d3e8b70d545a0b673944f12c5663dcf4c85e5 Template:Hatnote templates 10 992 2180 2023-08-04T18:41:52Z wikipedia>FooBarBaz 0 Moved. wikitext text/x-wiki {{Navbox | name = Hatnote templates | state = {{{state|<includeonly>autocollapse</includeonly>}}} | bodyclass = hlist | belowclass = hlist | title = [[WP:Hatnote#Hatnote templates|Hatnote templates]] | above = *[[Wikipedia:Hatnote]] *[[Wikipedia:Disambiguation]] *[[Wikipedia:Redirect]] | group1 = Generic | list1 = *{{tl|Hatnote}} *{{tl|Self-reference}} | group2 = For and about | list2 = *{{tl|For}} *{{tl|For-text}} (for custom text) *{{tl|For-multi}} (for multiple uses) *{{tl|About}} *Variations: {{tl|Other uses}} *{{tl|Other uses of}} *{{tl|Redirect-distinguish-for}} *{{tl|About-distinguish}} *{{tl|About-distinguish-text}} | group3 = Other topics | list3 = *{{tl|Other people}} *{{tl|About other people}} (adds "about" description) *{{tl|Similar names}} *{{tl|Other storms}} *{{tl|Other places}} *{{tl|Other ships}} | group4 = Redirect | list4 = *{{tl|Redirect}} *{{tl|Redirect2}} (for two redirects) *{{tl|Redirect-multi}} (for multiple redirects) *{{tl|Redirect-several}} (for several redirects, without listing each) *{{tl|Redirect-synonym}} *{{tl|Redirect-distinguish}} *{{tl|Redirect-distinguish-text}} *{{tl|Redirect-distinguish-for}} *{{tl|Technical reasons}} | group5 = Distinguish | list5 = *{{tl|Distinguish}} (supports custom text) *{{tl|About-distinguish}} *{{tl|About-distinguish-text}} (for custom text) *{{tl|Redirect-distinguish}} *{{tl|Redirect-distinguish-text}} (for custom text) *{{tl|Redirect-distinguish-for}} | group6 = For use in sections | list6 = *{{tl|Main}} *{{tl|Main if exists}} *{{tl|Main list}} *{{tl|Further}} *{{tl|Further-text}} (for custom text) *{{tl|Further interlanguage link}} *{{tl|See also}} *{{tl|See also if exists}} *{{tl|See also-text}} (for custom text) *{{tl|For outline}} *{{tl|For timeline}} | group7 = Special | list7 = *{{tl|Broader}} *{{tl|For introduction}} *{{tl|See Wiktionary}} *{{tl|Transcluding article}} *{{tl|Transcluded section}} | group8 = Subject specific | list8 = * {{tl|About year}} * {{tl|Highway detail hatnote}} * {{tl|For LMST}} * {{tl|WikiIPA}} | below = *{{Icon|cat}} [[:Category:Hatnote templates]] **[[:Category:Hatnote modules|modules]] **[[:Category:Hatnote templates for names|for [family] names]] **[[:Category:Hatnote templates for lists|for lists]] *[[Template:Category hatnote templates|hatnote templates for category pages]] }}<noinclude> {{Documentation}} </noinclude> 5ea17ab2381b3c2002e4846f08d462d2574b6015 Template:Documentation 10 50 169 95 2023-08-07T07:13:50Z meta>Nieuwsgierige Gebruiker 0 Undid revision 342625 by [[Special:Contributions/67.163.114.70|67.163.114.70]] ([[User talk:67.163.114.70|talk]]) wikitext text/x-wiki {{#invoke:Documentation|main}} bb08b6773a4c1e1d528cefda2d7c305d8b5193ec Template:Infobox settlement 10 1427 2762 2023-08-08T12:47:25Z w>Paine Ellsworth 0 per edit request on talk page - remove redundant "%" wikitext text/x-wiki <includeonly>{{main other|{{#invoke:Settlement short description|main}}|}}{{Infobox | child = {{yesno|{{{embed|}}}}} | templatestyles = Infobox settlement/styles.css | bodyclass = ib-settlement vcard <!--** names, type, and transliterations ** --> | above = <div class="fn org">{{if empty|{{{name|}}}|{{{official_name|}}}|{{PAGENAMEBASE}}}}</div> {{#if:{{{native_name|}}}|<div class="nickname ib-settlement-native" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}}{{#if:{{{other_name|}}}|<div class="nickname ib-settlement-other-name">{{{other_name}}}</div>}} | subheader = {{#if:{{{settlement_type|{{{type|}}}}}}|<div class="category">{{{settlement_type|{{{type}}}}}}</div>}} | rowclass1 = mergedtoprow ib-settlement-official | data1 = {{#if:{{{name|}}}|{{{official_name|}}}}} <!-- ***Transliteration language 1*** --> | rowclass2 = mergedtoprow | header2 = {{#if:{{{translit_lang1|}}}|{{{translit_lang1}}}&nbsp;transcription(s)}} | rowclass3 = {{#if:{{{translit_lang1_type1|}}}|mergedrow|mergedbottomrow}} | label3 = &nbsp;•&nbsp;{{{translit_lang1_type}}} | data3 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type|}}}|{{{translit_lang1_info|}}}}}}} | rowclass4 = {{#if:{{{translit_lang1_type2|}}}|mergedrow|mergedbottomrow}} | label4 = &nbsp;•&nbsp;{{{translit_lang1_type1}}} | data4 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type1|}}}|{{{translit_lang1_info1|}}}}}}} | rowclass5 = {{#if:{{{translit_lang1_type3|}}}|mergedrow|mergedbottomrow}} | label5 =&nbsp;•&nbsp;{{{translit_lang1_type2}}} | data5 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type2|}}}|{{{translit_lang1_info2|}}}}}}} | rowclass6 = {{#if:{{{translit_lang1_type4|}}}|mergedrow|mergedbottomrow}} | label6 = &nbsp;•&nbsp;{{{translit_lang1_type3}}} | data6 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type3|}}}|{{{translit_lang1_info3|}}}}}}} | rowclass7 = {{#if:{{{translit_lang1_type5|}}}|mergedrow|mergedbottomrow}} | label7 = &nbsp;•&nbsp;{{{translit_lang1_type4}}} | data7 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type4|}}}|{{{translit_lang1_info4|}}}}}}} | rowclass8 = {{#if:{{{translit_lang1_type6|}}}|mergedrow|mergedbottomrow}} | label8 = &nbsp;•&nbsp;{{{translit_lang1_type5}}} | data8 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type5|}}}|{{{translit_lang1_info5|}}}}}}} | rowclass9 = mergedbottomrow | label9 = &nbsp;•&nbsp;{{{translit_lang1_type6}}} | data9 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type6|}}}|{{{translit_lang1_info6|}}}}}}} <!-- ***Transliteration language 2*** --> | rowclass10 = mergedtoprow | header10 = {{#if:{{{translit_lang2|}}}|{{{translit_lang2}}}&nbsp;transcription(s)}} | rowclass11 = {{#if:{{{translit_lang2_type1|}}}|mergedrow|mergedbottomrow}} | label11 = &nbsp;•&nbsp;{{{translit_lang2_type}}} | data11 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type|}}}|{{{translit_lang2_info|}}}}}}} | rowclass12 = {{#if:{{{translit_lang2_type2|}}}|mergedrow|mergedbottomrow}} | label12 = &nbsp;•&nbsp;{{{translit_lang2_type1}}} | data12 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type1|}}}|{{{translit_lang2_info1|}}}}}}} | rowclass13 = {{#if:{{{translit_lang2_type3|}}}|mergedrow|mergedbottomrow}} | label13 =&nbsp;•&nbsp;{{{translit_lang2_type2}}} | data13 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type2|}}}|{{{translit_lang2_info2|}}}}}}} | rowclass14 = {{#if:{{{translit_lang2_type4|}}}|mergedrow|mergedbottomrow}} | label14 = &nbsp;•&nbsp;{{{translit_lang2_type3}}} | data14 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type3|}}}|{{{translit_lang2_info3|}}}}}}} | rowclass15 = {{#if:{{{translit_lang2_type5|}}}|mergedrow|mergedbottomrow}} | label15 = &nbsp;•&nbsp;{{{translit_lang2_type4}}} | data15 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type4|}}}|{{{translit_lang2_info4|}}}}}}} | rowclass16 = {{#if:{{{translit_lang2_type6|}}}|mergedrow|mergedbottomrow}} | label16 = &nbsp;•&nbsp;{{{translit_lang2_type5}}} | data16 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type5|}}}|{{{translit_lang2_info5|}}}}}}} | rowclass17 = mergedbottomrow | label17 = &nbsp;•&nbsp;{{{translit_lang2_type6}}} | data17 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type6|}}}|{{{translit_lang2_info6|}}}}}}} <!-- end ** names, type, and transliterations ** --> <!-- ***Skyline Image*** --> | rowclass18 = mergedtoprow | data18 = {{#if:{{{image_skyline|}}}|<!-- -->{{#invoke:InfoboxImage|InfoboxImage<!-- -->|image={{{image_skyline|}}}<!-- -->|size={{if empty|{{{image_size|}}}|{{{imagesize|}}}}}|sizedefault=250px<!-- -->|alt={{if empty|{{{image_alt|}}}|{{{alt|}}}}}<!-- -->|title={{if empty|{{{image_caption|}}}|{{{caption|}}}|{{{image_alt|}}}|{{{alt|}}}}}}}<!-- -->{{#if:{{{image_caption|}}}{{{caption|}}}|<div class="ib-settlement-caption">{{if empty|{{{image_caption|}}}|{{{caption|}}}}}</div>}} }} <!-- ***Flag, Seal, Shield and Coat of arms*** --> | rowclass19 = mergedtoprow | class19 = maptable | data19 = {{#if:{{{image_flag|}}}{{{image_seal|}}}{{{image_shield|}}}{{{image_blank_emblem|}}}{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}} |{{Infobox settlement/columns | 1 = {{#if:{{{image_flag|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_flag}}}|size={{{flag_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|125px|100x100px}}|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{flag_alt|}}}|title=Flag of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type=Flag|link={{{flag_link|}}}|name={{{official_name}}}}}</div>}} | 2 = {{#if:{{{image_seal|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_seal|}}}|size={{{seal_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{seal_alt|}}}|title=Official seal of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type={{#if:{{{seal_type|}}}|{{{seal_type}}}|Seal}}|link={{{seal_link|}}}|name={{{official_name}}}}}</div>}} | 3 = {{#if:{{{image_shield|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_shield|}}}||size={{{shield_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{shield_alt|}}}|title=Coat of arms of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type=Coat of arms|link={{{shield_link|}}}|name={{{official_name}}}}}</div>}} | 4 = {{#if:{{{image_blank_emblem|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_blank_emblem|}}}|size={{{blank_emblem_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{blank_emblem_alt|}}}|title=Official logo of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type={{#if:{{{blank_emblem_type|}}}|{{{blank_emblem_type}}}}}|link={{{blank_emblem_link|}}}|name={{{official_name}}}}}</div>}} | 5 = {{#if:{{{image_map|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map}}}|size={{{mapsize|}}}|sizedefault=100x100px|alt={{{map_alt|}}}|title={{{map_caption|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption|}}}|<div class="ib-settlement-caption-link">{{{map_caption}}}</div>}}}} | 0 = {{#if:{{{pushpin_map_narrow|}}}|{{#if:{{both| {{{pushpin_map|}}} | {{{coordinates|}}} }}| {{location map|{{{pushpin_map|}}} |border = infobox |alt = {{{pushpin_map_alt|}}} |caption ={{#if:{{{pushpin_map_caption_notsmall|}}}|{{{pushpin_map_caption_notsmall|}}}|{{#if:{{{pushpin_map_caption|}}}|{{{pushpin_map_caption}}}|{{#if:{{{map_caption|}}}|{{{map_caption}}}}}}}}} |float = center |width = {{#if:{{{pushpin_mapsize|}}}|{{{pushpin_mapsize}}}|150}} |default_width = 250 |relief= {{{pushpin_relief|}}} |AlternativeMap = {{{pushpin_image|}}} |overlay_image = {{{pushpin_overlay|}}} |coordinates = {{{coordinates|}}} |label = {{#ifeq: {{lc: {{{pushpin_label_position|}}} }} | none | | {{#if:{{{pushpin_label|}}}|{{{pushpin_label}}}|{{#if:{{{name|}}}|{{{name}}}|{{{official_name|}}}}}}} }} |marksize =6 |outside = {{{pushpin_outside|}}}<!-- pin is outside the map --> |position = {{{pushpin_label_position|}}} }} }} }} }} }} <!-- ***Etymology*** --> | rowclass20 = mergedtoprow | data20 = {{#if:{{{etymology|}}}|Etymology: {{{etymology}}} }} <!-- ***Nickname*** --> | rowclass21 = {{#if:{{{etymology|}}}|mergedrow|mergedtoprow}} | data21 = {{#if:{{{nickname|}}}{{{nicknames|}}}|<!-- -->{{Pluralize from text|parse_links=1|{{if empty|{{{nickname|}}}|{{{nicknames|}}}{{force plural}}}}|<!-- -->link={{{nickname_link|}}}|singular=Nickname|likely=Nickname(s)|plural=Nicknames}}:&nbsp;<!-- --><div class="ib-settlement-nickname nickname">{{if empty|{{{nickname|}}}|{{{nicknames|}}}}}</div><!-- -->{{Main other|{{Pluralize from text|parse_links=1|{{{nickname|}}}|<!-- -->likely=[[Category:Pages using infobox settlement with possible nickname list]]}}}}}} <!-- ***Motto*** --> | rowclass22 = {{#if:{{{etymology|}}}{{{nickname|}}}{{{nicknames|}}}|mergedrow|mergedtoprow}} | data22 = {{#if:{{{motto|}}}{{{mottoes|}}}|<!-- -->{{Pluralize from text|{{if empty|{{{motto|}}}|{{{mottoes|}}}{{force plural}}}}|<!-- -->link={{{motto_link|}}}|singular=Motto|likely=Motto(s)|plural=Mottoes}}:&nbsp;<!-- --><div class="ib-settlement-nickname nickname">{{if empty|{{{motto|}}}|{{{mottoes|}}}}}</div><!-- -->{{Main other|{{Pluralize from text|{{{motto|}}}|<!-- -->likely=[[Category:Pages using infobox settlement with possible motto list]]}}}}}} <!-- ***Anthem*** --> | rowclass23 = {{#if:{{{etymology|}}}{{{nickname|}}}{{{nicknames|}}}{{{motto|}}}{{{mottoes|}}}|mergedrow|mergedtoprow}} | data23 = {{#if:{{{anthem|}}}|{{#if:{{{anthem_link|}}}|[[{{{anthem_link|}}}|Anthem:]]|Anthem:}} {{{anthem}}}}} <!-- ***Map*** --> | rowclass24 = mergedtoprow | data24 = {{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}||{{#if:{{{image_map|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map}}}|size={{{mapsize|}}}|sizedefault=250px|alt={{{map_alt|}}}|title={{{map_caption|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption|}}}|<div class="ib-settlement-caption">{{{map_caption}}}</div>}} }}}} | rowclass25 = mergedrow | data25 = {{#if:{{{image_map1|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map1}}}|size={{{mapsize1|}}}|sizedefault=250px|alt={{{map_alt1|}}}|title={{{map_caption1|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption1|}}}|<div class="ib-settlement-caption">{{{map_caption1}}}</div>}} }} <!-- ***Pushpin Map*** --> | rowclass26 = mergedtoprow | data26 = {{#if:{{{pushpin_map_narrow|}}}||{{#if:{{both| {{{pushpin_map|}}} | {{{coordinates|}}} }}| {{location map|{{{pushpin_map|}}} |border = infobox |alt = {{{pushpin_map_alt|}}} |caption ={{#if:{{{pushpin_map_caption_notsmall|}}}|{{{pushpin_map_caption_notsmall|}}}|{{#if:{{{pushpin_map_caption|}}}|{{{pushpin_map_caption}}}|{{#if:{{{map_caption|}}}|{{#if:{{{image_map|}}}||{{{map_caption}}}}}}}}}}} |float = center |width = {{{pushpin_mapsize|}}} |default_width = 250 |relief= {{{pushpin_relief|}}} |AlternativeMap = {{{pushpin_image|}}} |overlay_image = {{{pushpin_overlay|}}} |coordinates = {{{coordinates|}}} |label = {{#ifeq: {{lc: {{{pushpin_label_position|}}} }} | none | | {{#if:{{{pushpin_label|}}}|{{{pushpin_label}}}|{{#if:{{{name|}}}|{{{name}}}|{{{official_name|}}}}}}} }} |marksize =6 |outside = {{{pushpin_outside|}}}<!-- pin is outside the map --> |position = {{{pushpin_label_position|}}} }} }} }} <!-- ***Coordinates*** --> | rowclass27 = {{#if:{{{image_map|}}}{{{image_map1|}}}{{{pushpin_map|}}}|{{#if:{{{grid_position|}}}|mergedrow|mergedbottomrow}}}} | data27 = {{#if:{{{coordinates|}}} |Coordinates{{#if:{{{coor_pinpoint|{{{coor_type|}}}}}}|&#32;({{{coor_pinpoint|{{{coor_type|}}}}}})}}: {{#invoke:ISO 3166|geocoordinsert|nocat=true|1={{{coordinates|}}}|country={{{subdivision_name|}}}|subdivision1={{{subdivision_name1|}}}|subdivision2={{{subdivision_name2|}}}|subdivision3={{{subdivision_name3|}}}|type=city{{#if:{{{population_total|}}}|{{#iferror:{{#expr:{{formatnum:{{{population_total}}}|R}}+1}}||({{formatnum:{{replace|{{{population_total}}}|,|}}|R}})}}}} }}{{{coordinates_footnotes|}}} }} | rowclass28 = {{#if:{{{image_map|}}}{{{image_map1|}}}{{{pushpin_map|}}}|mergedbottomrow|mergedrow}} | label28 = {{if empty|{{{grid_name|}}}|Grid&nbsp;position}} | data28 = {{{grid_position|}}} <!-- ***Subdivisions*** --> | rowclass29 = mergedtoprow | label29 = {{{subdivision_type}}} | data29 = {{#if:{{{subdivision_type|}}}|{{{subdivision_name|}}} }} | rowclass30 = mergedrow | label30 = {{{subdivision_type1}}} | data30 = {{#if:{{{subdivision_type1|}}}|{{{subdivision_name1|}}} }} | rowclass31 = mergedrow | label31 = {{{subdivision_type2}}} | data31 = {{#if:{{{subdivision_type2|}}}|{{{subdivision_name2|}}} }} | rowclass32 = mergedrow | label32 = {{{subdivision_type3}}} | data32 = {{#if:{{{subdivision_type3|}}}|{{{subdivision_name3|}}} }} | rowclass33 = mergedrow | label33 = {{{subdivision_type4}}} | data33 = {{#if:{{{subdivision_type4|}}}|{{{subdivision_name4|}}} }} | rowclass34 = mergedrow | label34 = {{{subdivision_type5}}} | data34 = {{#if:{{{subdivision_type5|}}}|{{{subdivision_name5|}}} }} | rowclass35 = mergedrow | label35 = {{{subdivision_type6}}} | data35 = {{#if:{{{subdivision_type6|}}}|{{{subdivision_name6|}}} }} <!--***Established*** --> | rowclass36 = mergedtoprow | label36 = {{{established_title}}} | data36 = {{#if:{{{established_title|}}}|{{{established_date|}}} }} | rowclass37 = mergedrow | label37 = {{{established_title1}}} | data37 = {{#if:{{{established_title1|}}}|{{{established_date1|}}} }} | rowclass38 = mergedrow | label38 = {{{established_title2}}} | data38 = {{#if:{{{established_title2|}}}|{{{established_date2|}}} }} | rowclass39 = mergedrow | label39 = {{{established_title3}}} | data39 = {{#if:{{{established_title3|}}}|{{{established_date3|}}} }} | rowclass40 = mergedrow | label40 = {{{established_title4}}} | data40 = {{#if:{{{established_title4|}}}|{{{established_date4|}}} }} | rowclass41 = mergedrow | label41 = {{{established_title5}}} | data41 = {{#if:{{{established_title5|}}}|{{{established_date5|}}} }} | rowclass42 = mergedrow | label42 = {{{established_title6}}} | data42 = {{#if:{{{established_title6|}}}|{{{established_date6|}}} }} | rowclass43 = mergedrow | label43 = {{{established_title7}}} | data43 = {{#if:{{{established_title7|}}}|{{{established_date7|}}} }} | rowclass44 = mergedrow | label44 = {{{extinct_title}}} | data44 = {{#if:{{{extinct_title|}}}|{{{extinct_date|}}} }} | rowclass45 = mergedrow | label45 = Founded by | data45 = {{{founder|}}} | rowclass46 = mergedrow | label46 = [[Namesake|Named for]] | data46 = {{{named_for|}}} <!-- ***Seat of government and subdivisions within the settlement*** --> | rowclass47 = mergedtoprow | label47 = {{#if:{{{seat_type|}}}|{{{seat_type}}}|Seat}} | data47 = {{{seat|}}} | rowclass48 = mergedrow | label48 = {{#if:{{{seat1_type|}}}|{{{seat1_type}}}|Former seat}} | data48 = {{{seat1|}}} | rowclass49 = mergedrow | label49 = {{#if:{{{seat2_type|}}}|{{{seat2_type}}}|Former seat}} | data49 = {{{seat2|}}} | rowclass51 = {{#if:{{{seat|}}}{{{seat1|}}}{{{seat2|}}}|mergedrow|mergedtoprow}} | label51 = {{#if:{{{parts_type|}}}|{{{parts_type}}}|Boroughs}} | data51 = {{#if:{{{parts|}}}{{{p1|}}} |{{#ifeq:{{{parts_style|}}}|para |<b>{{{parts|}}}{{#if:{{both|{{{parts|}}}|{{{p1|}}}}}|&#58;&nbsp;|}}</b>{{comma separated entries|{{{p1|}}}|{{{p2|}}}|{{{p3|}}}|{{{p4|}}}|{{{p5|}}}|{{{p6|}}}|{{{p7|}}}|{{{p8|}}}|{{{p9|}}}|{{{p10|}}}|{{{p11|}}}|{{{p12|}}}|{{{p13|}}}|{{{p14|}}}|{{{p15|}}}|{{{p16|}}}|{{{p17|}}}|{{{p18|}}}|{{{p19|}}}|{{{p20|}}}|{{{p21|}}}|{{{p22|}}}|{{{p23|}}}|{{{p24|}}}|{{{p25|}}}|{{{p26|}}}|{{{p27|}}}|{{{p28|}}}|{{{p29|}}}|{{{p30|}}}|{{{p31|}}}|{{{p32|}}}|{{{p33|}}}|{{{p34|}}}|{{{p35|}}}|{{{p36|}}}|{{{p37|}}}|{{{p38|}}}|{{{p39|}}}|{{{p40|}}}|{{{p41|}}}|{{{p42|}}}|{{{p43|}}}|{{{p44|}}}|{{{p45|}}}|{{{p46|}}}|{{{p47|}}}|{{{p48|}}}|{{{p49|}}}|{{{p50|}}}}} |{{#if:{{{p1|}}}|{{Collapsible list|title={{{parts|}}}|expand={{#switch:{{{parts_style|}}}|coll=|list=y|{{#if:{{{p6|}}}||y}}}}|1={{{p1|}}}|2={{{p2|}}}|3={{{p3|}}}|4={{{p4|}}}|5={{{p5|}}}|6={{{p6|}}}|7={{{p7|}}}|8={{{p8|}}}|9={{{p9|}}}|10={{{p10|}}}|11={{{p11|}}}|12={{{p12|}}}|13={{{p13|}}}|14={{{p14|}}}|15={{{p15|}}}|16={{{p16|}}}|17={{{p17|}}}|18={{{p18|}}}|19={{{p19|}}}|20={{{p20|}}}|21={{{p21|}}}|22={{{p22|}}}|23={{{p23|}}}|24={{{p24|}}}|25={{{p25|}}}|26={{{p26|}}}|27={{{p27|}}}|28={{{p28|}}}|29={{{p29|}}}|30={{{p30|}}}|31={{{p31|}}}|32={{{p32|}}}|33={{{p33|}}}|34={{{p34|}}}|35={{{p35|}}}|36={{{p36|}}}|37={{{p37|}}}|38={{{p38|}}}|39={{{p39|}}}|40={{{p40|}}}|41={{{p41|}}}|42={{{p42|}}}|43={{{p43|}}}|44={{{p44|}}}|45={{{p45|}}}|46={{{p46|}}}|47={{{p47|}}}|48={{{p48|}}}|49={{{p49|}}}|50={{{p50|}}}}} |{{{parts}}} }} }} }} <!-- ***Government type and Leader*** --> | rowclass52 = mergedtoprow | header52 = {{#if:{{{government_type|}}}{{{governing_body|}}}{{{leader_name|}}}{{{leader_name1|}}}{{{leader_name2|}}}{{{leader_name3|}}}{{{leader_name4|}}}|Government<div class="ib-settlement-fn">{{{government_footnotes|}}}</div>}} <!-- ***Government*** --> | rowclass53 = mergedrow | label53 = &nbsp;•&nbsp;Type | data53 = {{{government_type|}}} | rowclass54 = mergedrow | label54 = &nbsp;•&nbsp;Body | class54 = agent | data54 = {{{governing_body|}}} | rowclass55 = mergedrow | label55 = &nbsp;•&nbsp;{{{leader_title}}} | data55 = {{#if:{{{leader_title|}}}|{{{leader_name|}}} {{#if:{{{leader_party|}}}|({{Polparty|{{{subdivision_name}}}|{{{leader_party}}}}})}}}} | rowclass56 = mergedrow | label56 = &nbsp;•&nbsp;{{{leader_title1}}} | data56 = {{#if:{{{leader_title1|}}}|{{{leader_name1|}}}}} | rowclass57 = mergedrow | label57 = &nbsp;•&nbsp;{{{leader_title2}}} | data57 = {{#if:{{{leader_title2|}}}|{{{leader_name2|}}}}} | rowclass58 = mergedrow | label58 = &nbsp;•&nbsp;{{{leader_title3}}} | data58 = {{#if:{{{leader_title3|}}}|{{{leader_name3|}}}}} | rowclass59 = mergedrow | label59 = &nbsp;•&nbsp;{{{leader_title4}}} | data59 = {{#if:{{{leader_title4|}}}|{{{leader_name4|}}}}} | rowclass60 = mergedrow | label60 = {{{government_blank1_title}}} | data60 = {{#if:{{{government_blank1|}}}|{{{government_blank1|}}}}} | rowclass61 = mergedrow | label61 = {{{government_blank2_title}}} | data61 = {{#if:{{{government_blank2|}}}|{{{government_blank2|}}}}} | rowclass62 = mergedrow | label62 = {{{government_blank3_title}}} | data62 = {{#if:{{{government_blank3|}}}|{{{government_blank3|}}}}} | rowclass63 = mergedrow | label63 = {{{government_blank4_title}}} | data63 = {{#if:{{{government_blank4|}}}|{{{government_blank4|}}}}} | rowclass64 = mergedrow | label64 = {{{government_blank5_title}}} | data64 = {{#if:{{{government_blank5|}}}|{{{government_blank5|}}}}} | rowclass65 = mergedrow | label65 = {{{government_blank6_title}}} | data65 = {{#if:{{{government_blank6|}}}|{{{government_blank6|}}}}} <!-- ***Geographical characteristics*** --> <!-- ***Area*** --> | rowclass66 = mergedtoprow | header66 = {{#if:{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_acre|}}}{{{area_land_sq_mi|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_acre|}}}{{{area_water_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_ha|}}}{{{area_urban_acre|}}}{{{area_urban_sq_mi|}}}{{{area_rural_sq_mi|}}}{{{area_rural_ha|}}}{{{area_rural_acre|}}}{{{area_rural_km2|}}}{{{area_metro_km2|}}}{{{area_metro_ha|}}}{{{area_metro_acre|}}}{{{area_blank1_km2|}}}{{{area_blank1_ha|}}}{{{area_blank1_acre|}}}{{{area_metro_sq_mi|}}}{{{area_blank1_sq_mi|}}} |{{#if:{{both|{{#ifeq:{{{total_type}}}|&nbsp;|1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}} |<!-- displayed below --> |Area<div class="ib-settlement-fn">{{{area_footnotes|}}}</div> }} }} | rowclass67 = {{#if:{{both|{{#ifeq:{{{total_type}}}|&nbsp;|1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}}|mergedtoprow|mergedrow}} | label67 = {{#if:{{both|{{#ifeq:{{{total_type}}}|&nbsp;|1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}} |Area<div class="ib-settlement-fn">{{{area_footnotes|}}}</div> |&nbsp;•&nbsp;{{#if:{{{total_type|}}}|{{{total_type}}}|{{#if:{{{area_metro_km2|}}}{{{area_metro_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_sq_mi|}}}{{{area_rural_km2|}}}{{{area_rural_sq_mi|}}}{{{population_metro|}}}{{{population_urban|}}}{{{population_rural|}}}|{{#if:{{{settlement_type|{{{type|}}}}}}|{{{settlement_type|{{{type}}}}}}|City}}|Total}}}} }} | data67 = {{#if:{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_total_km2|}}} |ha ={{{area_total_ha|}}} |acre ={{{area_total_acre|}}} |sqmi ={{{area_total_sq_mi|}}} |dunam={{{area_total_dunam|}}} |link ={{#switch:{{{dunam_link|}}}||on|total=on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass68 = mergedrow | label68 = &nbsp;•&nbsp;Land | data68 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_acre|}}}{{{area_land_sq_mi|}}}{{{area_land_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_land_km2|}}} |ha ={{{area_land_ha|}}} |acre ={{{area_land_acre|}}} |sqmi ={{{area_land_sq_mi|}}} |dunam={{{area_land_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|land|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass69 = mergedrow | label69 = &nbsp;•&nbsp;Water | data69 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_acre|}}}{{{area_water_sq_mi|}}}{{{area_water_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_water_km2|}}} |ha ={{{area_water_ha|}}} |acre ={{{area_water_acre|}}} |sqmi ={{{area_water_sq_mi|}}} |dunam={{{area_water_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|water|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }} {{#if:{{{area_water_percent|}}}| &nbsp;{{{area_water_percent}}}{{#ifeq:%|{{#invoke:string|sub|{{{area_water_percent|}}}|-1}}||%}}}}}} | rowclass70 = mergedrow | label70 = &nbsp;•&nbsp;Urban<div class="ib-settlement-fn">{{{area_urban_footnotes|}}}</div> | data70 = {{#if:{{{area_urban_km2|}}}{{{area_urban_ha|}}}{{{area_urban_acre|}}}{{{area_urban_sq_mi|}}}{{{area_urban_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_urban_km2|}}} |ha ={{{area_urban_ha|}}} |acre ={{{area_urban_acre|}}} |sqmi ={{{area_urban_sq_mi|}}} |dunam={{{area_urban_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|urban|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass71 = mergedrow | label71 = &nbsp;•&nbsp;Rural<div class="ib-settlement-fn">{{{area_rural_footnotes|}}}</div> | data71 = {{#if:{{{area_rural_km2|}}}{{{area_rural_ha|}}}{{{area_rural_acre|}}}{{{area_rural_sq_mi|}}}{{{area_rural_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_rural_km2|}}} |ha ={{{area_rural_ha|}}} |acre ={{{area_rural_acre|}}} |sqmi ={{{area_rural_sq_mi|}}} |dunam={{{area_rural_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|rural|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass72 = mergedrow | label72 =&nbsp;•&nbsp;Metro<div class="ib-settlement-fn">{{{area_metro_footnotes|}}}</div> | data72 = {{#if:{{{area_metro_km2|}}}{{{area_metro_ha|}}}{{{area_metro_acre|}}}{{{area_metro_sq_mi|}}}{{{area_metro_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_metro_km2|}}} |ha ={{{area_metro_ha|}}} |acre ={{{area_metro_acre|}}} |sqmi ={{{area_metro_sq_mi|}}} |dunam={{{area_metro_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|metro|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} <!-- ***Area rank*** --> | rowclass73 = mergedrow | label73 = &nbsp;•&nbsp;Rank | data73 = {{{area_rank|}}} | rowclass74 = mergedrow | label74 = &nbsp;•&nbsp;{{{area_blank1_title}}} | data74 = {{#if:{{{area_blank1_km2|}}}{{{area_blank1_ha|}}}{{{area_blank1_acre|}}}{{{area_blank1_sq_mi|}}}{{{area_blank1_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_blank1_km2|}}} |ha ={{{area_blank1_ha|}}} |acre ={{{area_blank1_acre|}}} |sqmi ={{{area_blank1_sq_mi|}}} |dunam={{{area_blank1_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|blank1|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass75 = mergedrow | label75 = &nbsp;•&nbsp;{{{area_blank2_title}}} | data75 = {{#if:{{{area_blank2_km2|}}}{{{area_blank2_ha|}}}{{{area_blank2_acre|}}}{{{area_blank2_sq_mi|}}}{{{area_blank2_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_blank2_km2|}}} |ha ={{{area_blank2_ha|}}} |acre ={{{area_blank2_acre|}}} |sqmi ={{{area_blank2_sq_mi|}}} |dunam={{{area_blank2_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|blank2|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass76 = mergedrow | label76 = &nbsp; | data76 = {{{area_note|}}} <!-- ***Dimensions*** --> | rowclass77 = mergedtoprow | header77 = {{#if:{{{length_km|}}}{{{length_mi|}}}{{{width_km|}}}{{{width_mi|}}}|Dimensions<div class="ib-settlement-fn">{{{dimensions_footnotes|}}}</div>}} | rowclass78 = mergedrow | label78 = &nbsp;•&nbsp;Length | data78 = {{#if:{{{length_km|}}}{{{length_mi|}}} | {{infobox_settlement/lengthdisp |km ={{{length_km|}}} |mi ={{{length_mi|}}} |pref={{{unit_pref}}} |name={{{subdivision_name}}} }} }} | rowclass79 = mergedrow | label79 = &nbsp;•&nbsp;Width | data79 = {{#if:{{{width_km|}}}{{{width_mi|}}} |{{infobox_settlement/lengthdisp |km ={{{width_km|}}} |mi ={{{width_mi|}}} |pref={{{unit_pref}}} |name={{{subdivision_name}}} }} }} <!-- ***Elevation*** --> | rowclass80 = mergedtoprow | label80 = {{#if:{{{elevation_link|}}}|[[{{{elevation_link|}}}|Elevation]]|Elevation}}<div class="ib-settlement-fn">{{{elevation_footnotes|}}}{{#if:{{{elevation_point|}}}|&#32;({{{elevation_point}}})}}</div> | data80 = {{#if:{{{elevation_m|}}}{{{elevation_ft|}}} |{{infobox_settlement/lengthdisp |m ={{{elevation_m|}}} |ft ={{{elevation_ft|}}} |pref={{{unit_pref}}} |name={{{subdivision_name}}} }} }} | rowclass81 = {{#if:{{{elevation_m|}}}{{{elevation_ft|}}}|mergedrow|mergedtoprow}} | label81 = Highest&nbsp;elevation<div class="ib-settlement-fn">{{{elevation_max_footnotes|}}}{{#if:{{{elevation_max_point|}}}|&#32;({{{elevation_max_point}}})}}</div> | data81 = {{#if:{{{elevation_max_m|}}}{{{elevation_max_ft|}}} |{{infobox_settlement/lengthdisp |m ={{{elevation_max_m|}}} |ft ={{{elevation_max_ft|}}} |pref={{{unit_pref}}} |name={{{subdivision_name}}} }} }} <!-- ***Elevation max rank*** --> | rowclass82 = mergedrow | label82 = &nbsp;•&nbsp;Rank | data82 = {{#if:{{{elevation_max_m|}}}{{{elevation_max_ft|}}}| {{{elevation_max_rank|}}} }} | rowclass83 = {{#if:{{{elevation_min_rank|}}}|mergedrow|mergedbottomrow}} | label83 = Lowest&nbsp;elevation<div class="ib-settlement-fn">{{{elevation_min_footnotes|}}}{{#if:{{{elevation_min_point|}}}|&#32;({{{elevation_min_point}}})}}</div> | data83 = {{#if:{{{elevation_min_m|}}}{{{elevation_min_ft|}}} |{{infobox_settlement/lengthdisp |m ={{{elevation_min_m|}}} |ft ={{{elevation_min_ft|}}} |pref={{{unit_pref}}} |name={{{subdivision_name}}} }} }} <!-- ***Elevation min rank*** --> | rowclass84 = mergedrow | label84 = &nbsp;•&nbsp;Rank | data84 = {{#if:{{{elevation_min_m|}}}{{{elevation_min_ft|}}}|{{{elevation_min_rank|}}}}} <!-- ***Population*** --> | rowclass85 = mergedtoprow | label85 = Population<div class="ib-settlement-fn">{{#if:{{{population_as_of|}}}|{{nbsp}}({{{population_as_of}}})}}{{{population_footnotes|}}}</div> | data85 = {{fix comma category|{{#if:{{{population|}}} | {{formatnum:{{replace|{{{population}}}|,|}}}} | {{#ifeq:{{{total_type}}}|&nbsp; | {{#if:{{{population_total|}}} | {{formatnum:{{replace|{{{population_total}}}|,|}}}} }} }} }}}} | rowclass86 = mergedtoprow | header86 = {{#if:{{{population|}}} | |{{#ifeq:{{{total_type}}}|&nbsp; | |{{#if:{{{population_total|}}}{{{population_urban|}}}{{{population_rural|}}}{{{population_metro|}}}{{{population_blank1|}}}{{{population_blank2|}}}{{{population_est|}}} |Population<div class="ib-settlement-fn">{{#if:{{{population_as_of|}}}|{{nbsp}}({{{population_as_of}}})}}{{{population_footnotes|}}}</div> }} }} }} | rowclass87 = mergedrow | label87 = &nbsp;•&nbsp;{{#if:{{{total_type|}}}|{{{total_type}}}|{{#if:{{{population_metro|}}}{{{population_urban|}}}{{{population_rural|}}}{{{area_metro_km2|}}}{{{area_metro_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_sq_mi|}}}{{{area_rural_km2|}}}{{{area_rural_sq_mi|}}}|{{#if:{{{settlement_type|{{{type|}}}}}}|{{{settlement_type|{{{type}}}}}}|City}}|Total}}}} | data87 = {{#if:{{{population|}}} | |{{#ifeq:{{{total_type}}}|&nbsp; | |{{#if:{{{population_total|}}} | {{fix comma category|{{formatnum:{{replace|{{{population_total}}}|,|}}}}}} }} }} }} | rowclass88 = mergedrow | label88 = &nbsp;•&nbsp;Estimate&nbsp;<div class="ib-settlement-fn">({{{pop_est_as_of}}}){{{pop_est_footnotes|}}}</div> | data88 = {{#if:{{{population_est|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_est}}}|,|}}}}}} }} <!-- ***Population rank*** --> | rowclass89 = mergedrow | label89 =&nbsp;•&nbsp;Rank | data89 = {{{population_rank|}}} | rowclass90 = mergedrow | label90 = &nbsp;•&nbsp;Density | data90 = {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}}{{{population_total|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_km2|}}} |/sqmi={{{population_density_sq_mi|}}} |pop ={{{population_total|}}} |dunam={{{area_total_dunam|}}} |ha ={{{area_total_ha|}}} |km2 ={{{area_total_km2|}}} |acre ={{{area_total_acre|}}} |sqmi ={{{area_total_sq_mi|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} <!-- ***Population density rank*** --> | rowclass91 = mergedrow | label91 = &nbsp;&nbsp;•&nbsp;Rank | data91 = {{{population_density_rank|}}} | rowclass92 = mergedrow | label92 = &nbsp;•&nbsp;[[Urban area|Urban]]<div class="ib-settlement-fn">{{{population_urban_footnotes|}}}</div> | data92 = {{#if:{{{population_urban|}}}| {{fix comma category|{{formatnum:{{replace|{{{population_urban}}}|,|}}}}}} }} | rowclass93 = mergedrow | label93 = &nbsp;•&nbsp;Urban&nbsp;density | data93 = {{#if:{{{population_density_urban_km2|}}}{{{population_density_urban_sq_mi|}}}{{{population_urban|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_urban_km2|}}} |/sqmi={{{population_density_urban_sq_mi|}}} |pop ={{{population_urban|}}} |ha ={{{area_urban_ha|}}} |km2 ={{{area_urban_km2|}}} |acre ={{{area_urban_acre|}}} |sqmi ={{{area_urban_sq_mi|}}} |dunam={{{area_urban_dunam|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass94 = mergedrow | label94 = &nbsp;•&nbsp;[[Rural area|Rural]]<div class="ib-settlement-fn">{{{population_rural_footnotes|}}}</div> | data94 = {{#if:{{{population_rural|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_rural}}}|,|}}}}}}}} | rowclass95 = mergedrow | label95 = &nbsp;•&nbsp;Rural&nbsp;density | data95 = {{#if:{{{population_density_rural_km2|}}}{{{population_density_rural_sq_mi|}}}{{{population_rural|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_rural_km2|}}} |/sqmi={{{population_density_rural_sq_mi|}}} |pop ={{{population_rural|}}} |ha ={{{area_rural_ha|}}} |km2 ={{{area_rural_km2|}}} |acre ={{{area_rural_acre|}}} |sqmi ={{{area_rural_sq_mi|}}} |dunam={{{area_rural_dunam|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass96 = mergedrow | label96 =&nbsp;•&nbsp;[[Metropolitan area|Metro]]<div class="ib-settlement-fn">{{{population_metro_footnotes|}}}</div> | data96 = {{#if:{{{population_metro|}}}| {{fix comma category|{{formatnum:{{replace|{{{population_metro}}}|,|}}}}}} }} | rowclass97 = mergedrow | label97 = &nbsp;•&nbsp;Metro&nbsp;density | data97 = {{#if:{{{population_density_metro_km2|}}}{{{population_density_metro_sq_mi|}}}{{{population_metro|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_metro_km2|}}} |/sqmi={{{population_density_metro_sq_mi|}}} |pop ={{{population_metro|}}} |ha ={{{area_metro_ha|}}} |km2 ={{{area_metro_km2|}}} |acre ={{{area_metro_acre|}}} |sqmi ={{{area_metro_sq_mi|}}} |dunam={{{area_metro_dunam|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass98 = mergedrow | label98 = &nbsp;•&nbsp;{{{population_blank1_title|}}}<div class="ib-settlement-fn">{{{population_blank1_footnotes|}}}</div> | data98 = {{#if:{{{population_blank1|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_blank1}}}|,|}}}}}}}} | rowclass99 = mergedrow | label99 = &nbsp;•&nbsp;{{#if:{{{population_blank1_title|}}}|{{{population_blank1_title}}} density|Density}} | data99 = {{#if:{{{population_density_blank1_km2|}}}{{{population_density_blank1_sq_mi|}}}{{{population_blank1|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_blank1_km2|}}} |/sqmi={{{population_density_blank1_sq_mi|}}} |pop ={{{population_blank1|}}} |ha ={{{area_blank1_ha|}}} |km2 ={{{area_blank1_km2|}}} |acre ={{{area_blank1_acre|}}} |sqmi ={{{area_blank1_sq_mi|}}} |dunam={{{area_blank1_dunam|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass100 = mergedrow | label100 = &nbsp;•&nbsp;{{{population_blank2_title|}}}<div class="ib-settlement-fn">{{{population_blank2_footnotes|}}}</div> | data100 = {{#if:{{{population_blank2|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_blank2}}}|,|}}}}}}}} | rowclass101 = mergedrow | label101 = &nbsp;•&nbsp;{{#if:{{{population_blank2_title|}}}|{{{population_blank2_title}}} density|Density}} | data101 = {{#if:{{{population_density_blank2_km2|}}}{{{population_density_blank2_sq_mi|}}}{{{population_blank2|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_blank2_km2|}}} |/sqmi={{{population_density_blank2_sq_mi|}}} |pop ={{{population_blank2|}}} |ha ={{{area_blank2_ha|}}} |km2 ={{{area_blank2_km2|}}} |acre ={{{area_blank2_acre|}}} |sqmi ={{{area_blank2_sq_mi|}}} |dunam={{{area_blank2_dunam|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass102 = mergedrow | label102 = &nbsp; | data102 = {{{population_note|}}} | rowclass103 = mergedtoprow | label103 = {{Pluralize from text|{{if empty|{{{population_demonym|}}}|{{{population_demonyms|}}}{{force plural}}}}|<!-- -->link=Demonym|singular=Demonym|likely=Demonym(s)|plural=Demonyms}} | data103 = {{if empty|{{{population_demonym|}}}|{{{population_demonyms|}}}}}{{Main other|{{Pluralize from text|{{{population_demonym|}}}|likely=[[Category:Pages using infobox settlement with possible demonym list]]}}}} <!-- ***Demographics 1*** --> | rowclass104 = mergedtoprow | header104 = {{#if:{{{demographics_type1|}}} |{{{demographics_type1}}}<div class="ib-settlement-fn">{{{demographics1_footnotes|}}}</div>}} | rowclass105 = mergedrow | label105 = &nbsp;•&nbsp;{{{demographics1_title1}}} | data105 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title1|}}}|{{{demographics1_info1|}}}}}}} | rowclass106 = mergedrow | label106 = &nbsp;•&nbsp;{{{demographics1_title2}}} | data106 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title2|}}}|{{{demographics1_info2|}}}}}}} | rowclass107 = mergedrow | label107 = &nbsp;•&nbsp;{{{demographics1_title3}}} | data107 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title3|}}}|{{{demographics1_info3|}}}}}}} | rowclass108 = mergedrow | label108 = &nbsp;•&nbsp;{{{demographics1_title4}}} | data108 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title4|}}}|{{{demographics1_info4|}}}}}}} | rowclass109 = mergedrow | label109 = &nbsp;•&nbsp;{{{demographics1_title5}}} | data109 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title5|}}}|{{{demographics1_info5|}}}}}}} | rowclass110 = mergedrow | label110 = &nbsp;•&nbsp;{{{demographics1_title6}}} | data110 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title6|}}}|{{{demographics1_info6|}}}}}}} | rowclass111 = mergedrow | label111 = &nbsp;•&nbsp;{{{demographics1_title7}}} | data111 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title7|}}}|{{{demographics1_info7|}}}}}}} | rowclass112 = mergedrow | label112 = &nbsp;•&nbsp;{{{demographics1_title8}}} | data112 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title8|}}}|{{{demographics1_info8|}}}}}}} | rowclass113 = mergedrow | label113 = &nbsp;•&nbsp;{{{demographics1_title9}}} | data113 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title9|}}}|{{{demographics1_info9|}}}}}}} | rowclass114 = mergedrow | label114 = &nbsp;•&nbsp;{{{demographics1_title10}}} | data114 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title10|}}}|{{{demographics1_info10|}}}}}}} <!-- ***Demographics 2*** --> | rowclass115 = mergedtoprow | header115 = {{#if:{{{demographics_type2|}}} |{{{demographics_type2}}}<div class="ib-settlement-fn">{{{demographics2_footnotes|}}}</div>}} | rowclass116 = mergedrow | label116 = &nbsp;•&nbsp;{{{demographics2_title1}}} | data116 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title1|}}}|{{{demographics2_info1|}}}}}}} | rowclass117 = mergedrow | label117 = &nbsp;•&nbsp;{{{demographics2_title2}}} | data117 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title2|}}}|{{{demographics2_info2|}}}}}}} | rowclass118 = mergedrow | label118 = &nbsp;•&nbsp;{{{demographics2_title3}}} | data118 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title3|}}}|{{{demographics2_info3|}}}}}}} | rowclass119 = mergedrow | label119 = &nbsp;•&nbsp;{{{demographics2_title4}}} | data119 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title4|}}}|{{{demographics2_info4|}}}}}}} | rowclass120 = mergedrow | label120 = &nbsp;•&nbsp;{{{demographics2_title5}}} | data120 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title5|}}}|{{{demographics2_info5|}}}}}}} | rowclass121 = mergedrow | label121 = &nbsp;•&nbsp;{{{demographics2_title6}}} | data121 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title6|}}}|{{{demographics2_info6|}}}}}}} | rowclass122 = mergedrow | label122 = &nbsp;•&nbsp;{{{demographics2_title7}}} | data122 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title7|}}}|{{{demographics2_info7|}}}}}}} | rowclass123 = mergedrow | label123 = &nbsp;•&nbsp;{{{demographics2_title8}}} | data123 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title8|}}}|{{{demographics2_info8|}}}}}}} | rowclass124 = mergedrow | label124 = &nbsp;•&nbsp;{{{demographics2_title9}}} | data124 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title9|}}}|{{{demographics2_info9|}}}}}}} | rowclass125 = mergedrow | label125 = &nbsp;•&nbsp;{{{demographics2_title10}}} | data125 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title10|}}}|{{{demographics2_info10|}}}}}}} <!-- ***Time Zones*** --> | rowclass126 = mergedtoprow | header126 = {{#if:{{{timezone1_location|}}}|{{#if:{{{timezone2|}}}|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]s|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]}}|}} | rowclass127 = {{#if:{{{timezone1_location|}}}|mergedrow|mergedtoprow}} | label127 = {{#if:{{{timezone1_location|}}}|{{{timezone1_location}}}|{{#if:{{{timezone2_location|}}}|{{{timezone2_location}}}|{{#if:{{{timezone2|}}}|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]s|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]}}}}}} | data127 = {{#if:{{{utc_offset1|{{{utc_offset|}}} }}} |[[UTC{{{utc_offset1|{{{utc_offset}}}}}}]] {{#if:{{{timezone1|{{{timezone|}}}}}}|({{{timezone1|{{{timezone}}}}}})}} |{{{timezone1|{{{timezone|}}}}}} }} | rowclass128 = mergedrow | label128 = <span class="nowrap">&nbsp;•&nbsp;Summer ([[Daylight saving time|DST]])</span> | data128 = {{#if:{{{utc_offset1_DST|{{{utc_offset_DST|}}}}}} |[[UTC{{{utc_offset1_DST|{{{utc_offset_DST|}}}}}}]] {{#if:{{{timezone1_DST|{{{timezone_DST|}}}}}}|({{{timezone1_DST|{{{timezone_DST}}}}}})}} |{{{timezone1_DST|{{{timezone_DST|}}}}}} }} | rowclass129 = mergedrow | label129 = {{#if:{{{timezone2_location|}}}| {{{timezone2_location|}}}|<nowiki />}} | data129 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}} |{{#if:{{{utc_offset2|{{{utc_offset2|}}} }}} |[[UTC{{{utc_offset2|{{{utc_offset2}}}}}}]] {{#if:{{{timezone2|}}}|({{{timezone2}}})}} |{{{timezone2|}}} }} }} | rowclass130 = mergedrow | label130 = <span class="nowrap">&nbsp;•&nbsp;Summer ([[Daylight saving time|DST]])</span> | data130 = {{#if:{{{utc_offset2_DST|}}}|[[UTC{{{utc_offset2_DST|}}}]] {{#if:{{{timezone2_DST|}}}|({{{timezone2_DST|}}})}} |{{{timezone2_DST|}}} }} | rowclass131 = mergedrow | label131 = {{#if:{{{timezone3_location|}}}| {{{timezone3_location|}}}|<nowiki />}} | data131 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}} |{{#if:{{{utc_offset3|{{{utc_offset3|}}} }}} |[[UTC{{{utc_offset3|{{{utc_offset3}}}}}}]] {{#if:{{{timezone3|}}}|({{{timezone3}}})}} |{{{timezone3|}}} }} }} | rowclass132 = mergedrow | label132 = <span class="nowrap">&nbsp;•&nbsp;Summer ([[Daylight saving time|DST]])</span> | data132 = {{#if:{{{utc_offset3_DST|}}}|[[UTC{{{utc_offset3_DST|}}}]] {{#if:{{{timezone3_DST|}}}|({{{timezone3_DST|}}})}} |{{{timezone3_DST|}}} }} | rowclass133 = mergedrow | label133 = {{#if:{{{timezone4_location|}}}| {{{timezone4_location|}}}|<nowiki />}} | data133 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}} |{{#if:{{{utc_offset4|{{{utc_offset4|}}} }}} |[[UTC{{{utc_offset4|{{{utc_offset4}}}}}}]] {{#if:{{{timezone4|}}}|({{{timezone4}}})}} |{{{timezone4|}}} }} }} | rowclass134 = mergedrow | label134 = <span class="nowrap">&nbsp;•&nbsp;Summer ([[Daylight saving time|DST]])</span> | data134 = {{#if:{{{utc_offset4_DST|}}}|[[UTC{{{utc_offset4_DST|}}}]] {{#if:{{{timezone4_DST|}}}|({{{timezone4_DST|}}})}} |{{{timezone4_DST|}}} }} | rowclass135 = mergedrow | label135 = {{#if:{{{timezone5_location|}}}| {{{timezone5_location|}}}|<nowiki />}} | data135 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}} |{{#if:{{{utc_offset5|{{{utc_offset5|}}} }}} |[[UTC{{{utc_offset5|{{{utc_offset5}}}}}}]] {{#if:{{{timezone5|}}}|({{{timezone5}}})}} |{{{timezone5|}}} }} }} | rowclass136 = mergedrow | label136 = <span class="nowrap">&nbsp;•&nbsp;Summer ([[Daylight saving time|DST]])</span> | data136 = {{#if:{{{utc_offset5_DST|}}}|[[UTC{{{utc_offset5_DST|}}}]] {{#if:{{{timezone5_DST|}}}|({{{timezone5_DST|}}})}} |{{{timezone5_DST|}}} }} <!-- ***Postal Code(s)*** --> | rowclass137 = mergedtoprow | label137 = {{{postal_code_type}}} | class137 = adr | data137 = {{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|<div class="postal-code">{{{postal_code}}}</div>}}}} | rowclass138 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}|mergedbottomrow|mergedtoprow}} | label138 = {{{postal2_code_type}}} | class138 = adr | data138 = {{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|<div class="postal-code">{{{postal2_code}}}</div>}} }} }} <!-- ***Area Code(s)*** --> | rowclass139 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}|mergedrow|mergedtoprow}} | label139 = {{if empty|{{{area_code_type|}}}|{{Pluralize from text|any_comma=1|parse_links=1|{{if empty|{{{area_code|}}}|{{{area_codes|}}}{{force plural}}}}|<!-- -->link=Telephone numbering plan|singular=Area code|likely=Area code(s)|plural=Area codes}}}} | data139 = {{if empty|{{{area_code|}}}|{{{area_codes|}}}}}{{#if:{{{area_code_type|}}}||{{Main other|{{Pluralize from text|any_comma=1|parse_links=1|{{{area_code|}}}|||[[Category:Pages using infobox settlement with possible area code list]]}}}}}} <!-- Geocode--> | rowclass140 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}|mergedrow|mergedtoprow}} | label140 = [[Geocode]] | class140 = nickname | data140 = {{{geocode|}}} <!-- ISO Code--> | rowclass141 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}|mergedrow|mergedtoprow}} | label141 = [[ISO 3166|ISO 3166 code]] | class141 = nickname | data141 = {{{iso_code|}}} <!-- Vehicle registration plate--> | rowclass142 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|mergedrow|mergedtoprow}} | label142 = {{#if:{{{registration_plate_type|}}}|{{{registration_plate_type}}}|[[Vehicle registration plate|Vehicle registration]]}} | data142 = {{{registration_plate|}}} <!-- Other codes --> | rowclass143 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|{{{registration_plate|}}}|mergedrow|mergedtoprow}} | label143 = {{{code1_name|}}} | class143 = nickname | data143 = {{#if:{{{code1_name|}}}|{{{code1_info|}}}}} | rowclass144 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|{{{registration_plate|}}}|{{{code1_name|}}}|mergedrow|mergedtoprow}} | label144 = {{{code2_name|}}} | class144 = nickname | data144 = {{#if:{{{code2_name|}}}|{{{code2_info|}}}}} <!-- ***Blank Fields (two sections)*** --> | rowclass145 = mergedtoprow | label145 = {{{blank_name_sec1|{{{blank_name|}}}}}} | data145 = {{#if:{{{blank_name_sec1|{{{blank_name|}}}}}}|{{{blank_info_sec1|{{{blank_info|}}}}}}}} | rowclass146 = mergedrow | label146 = {{{blank1_name_sec1|{{{blank1_name|}}}}}} | data146 = {{#if:{{{blank1_name_sec1|{{{blank1_name|}}}}}}|{{{blank1_info_sec1|{{{blank1_info|}}}}}}}} | rowclass147 = mergedrow | label147 = {{{blank2_name_sec1|{{{blank2_name|}}}}}} | data147 = {{#if:{{{blank2_name_sec1|{{{blank2_name|}}}}}}|{{{blank2_info_sec1|{{{blank2_info|}}}}}}}} | rowclass148 = mergedrow | label148 = {{{blank3_name_sec1|{{{blank3_name|}}}}}} | data148 = {{#if:{{{blank3_name_sec1|{{{blank3_name|}}}}}}|{{{blank3_info_sec1|{{{blank3_info|}}}}}}}} | rowclass149 = mergedrow | label149 = {{{blank4_name_sec1|{{{blank4_name|}}}}}} | data149 = {{#if:{{{blank4_name_sec1|{{{blank4_name|}}}}}}|{{{blank4_info_sec1|{{{blank4_info|}}}}}}}} | rowclass150 = mergedrow | label150 = {{{blank5_name_sec1|{{{blank5_name|}}}}}} | data150 = {{#if:{{{blank5_name_sec1|{{{blank5_name|}}}}}}|{{{blank5_info_sec1|{{{blank5_info|}}}}}}}} | rowclass151 = mergedrow | label151 = {{{blank6_name_sec1|{{{blank6_name|}}}}}} | data151 = {{#if:{{{blank6_name_sec1|{{{blank6_name|}}}}}}|{{{blank6_info_sec1|{{{blank6_info|}}}}}}}} | rowclass152 = mergedrow | label152 = {{{blank7_name_sec1|{{{blank7_name|}}}}}} | data152 = {{#if:{{{blank7_name_sec1|{{{blank7_name|}}}}}}|{{{blank7_info_sec1|{{{blank7_info|}}}}}}}} | rowclass153 = mergedtoprow | label153 = {{{blank_name_sec2}}} | data153 = {{#if:{{{blank_name_sec2|}}}|{{{blank_info_sec2|}}}}} | rowclass154 = mergedrow | label154 = {{{blank1_name_sec2}}} | data154 = {{#if:{{{blank1_name_sec2|}}}|{{{blank1_info_sec2|}}}}} | rowclass155 = mergedrow | label155 = {{{blank2_name_sec2}}} | data155 = {{#if:{{{blank2_name_sec2|}}}|{{{blank2_info_sec2|}}}}} | rowclass156 = mergedrow | label156 = {{{blank3_name_sec2}}} | data156 = {{#if:{{{blank3_name_sec2|}}}|{{{blank3_info_sec2|}}}}} | rowclass157 = mergedrow | label157 = {{{blank4_name_sec2}}} | data157 = {{#if:{{{blank4_name_sec2|}}}|{{{blank4_info_sec2|}}}}} | rowclass158 = mergedrow | label158 = {{{blank5_name_sec2}}} | data158 = {{#if:{{{blank5_name_sec2|}}}|{{{blank5_info_sec2|}}}}} | rowclass159 = mergedrow | label159 = {{{blank6_name_sec2}}} | data159 = {{#if:{{{blank6_name_sec2|}}}|{{{blank6_info_sec2|}}}}} | rowclass160 = mergedrow | label160 = {{{blank7_name_sec2}}} | data160 = {{#if:{{{blank7_name_sec2|}}}|{{{blank7_info_sec2|}}}}} <!-- ***Website*** --> | rowclass161 = mergedtoprow | label161 = Website | data161 = {{#if:{{{website|}}}|{{{website}}}}} | class162 = maptable | data162 = {{#if:{{{module|}}}|{{{module}}}}} <!-- ***Footnotes*** --> | belowrowclass = mergedtoprow | below = {{{footnotes|}}} }}<!-- Check for unknowns -->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox settlement with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox settlement]] with unknown parameter "_VALUE_"|ignoreblank=y | alt | anthem | anthem_link | area_blank1_acre | area_blank1_dunam | area_blank1_ha | area_blank1_km2 | area_blank1_sq_mi | area_blank1_title | area_blank2_acre | area_blank2_dunam | area_blank2_ha | area_blank2_km2 | area_blank2_sq_mi | area_blank2_title | area_code | area_code_type | area_codes | area_footnotes | area_land_acre | area_land_dunam | area_land_ha | area_land_km2 | area_land_sq_mi | area_metro_acre | area_metro_dunam | area_metro_footnotes | area_metro_ha | area_metro_km2 | area_metro_sq_mi | area_note | area_rank | area_rural_acre | area_rural_dunam | area_rural_footnotes | area_rural_ha | area_rural_km2 | area_rural_sq_mi | area_total_acre | area_total_dunam | area_total_ha | area_total_km2 | area_total_sq_mi | area_urban_acre | area_urban_dunam | area_urban_footnotes | area_urban_ha | area_urban_km2 | area_urban_sq_mi | area_water_acre | area_water_dunam | area_water_ha | area_water_km2 | area_water_percent | area_water_sq_mi | blank_emblem_alt | blank_emblem_link | blank_emblem_size | blank_emblem_type | blank_info | blank_info_sec1 | blank_info_sec2 | blank_name | blank_name_sec1 | blank_name_sec2 | blank1_info | blank1_info_sec1 | blank1_info_sec2 | blank1_name | blank1_name_sec1 | blank1_name_sec2 | blank2_info | blank2_info_sec1 | blank2_info_sec2 | blank2_name | blank2_name_sec1 | blank2_name_sec2 | blank3_info | blank3_info_sec1 | blank3_info_sec2 | blank3_name | blank3_name_sec1 | blank3_name_sec2 | blank4_info | blank4_info_sec1 | blank4_info_sec2 | blank4_name | blank4_name_sec1 | blank4_name_sec2 | blank5_info | blank5_info_sec1 | blank5_info_sec2 | blank5_name | blank5_name_sec1 | blank5_name_sec2 | blank6_info | blank6_info_sec1 | blank6_info_sec2 | blank6_name | blank6_name_sec1 | blank6_name_sec2 | blank7_info | blank7_info_sec1 | blank7_info_sec2 | blank7_name | blank7_name_sec1 | blank7_name_sec2 | caption | code1_info | code1_name | code2_info | code2_name | coor_pinpoint | coor_type | coordinates | coordinates_footnotes | demographics_type1 | demographics_type2 | demographics1_footnotes | demographics1_info1 | demographics1_info10 | demographics1_info2 | demographics1_info3 | demographics1_info4 | demographics1_info5 | demographics1_info6 | demographics1_info7 | demographics1_info8 | demographics1_info9 | demographics1_title1 | demographics1_title10 | demographics1_title2 | demographics1_title3 | demographics1_title4 | demographics1_title5 | demographics1_title6 | demographics1_title7 | demographics1_title8 | demographics1_title9 | demographics2_footnotes | demographics2_info1 | demographics2_info10 | demographics2_info2 | demographics2_info3 | demographics2_info4 | demographics2_info5 | demographics2_info6 | demographics2_info7 | demographics2_info8 | demographics2_info9 | demographics2_title1 | demographics2_title10 | demographics2_title2 | demographics2_title3 | demographics2_title4 | demographics2_title5 | demographics2_title6 | demographics2_title7 | demographics2_title8 | demographics2_title9 | dimensions_footnotes | dunam_link | elevation_footnotes | elevation_ft | elevation_link | elevation_m | elevation_max_footnotes | elevation_max_ft | elevation_max_m | elevation_max_point | elevation_max_rank | elevation_min_footnotes | elevation_min_ft | elevation_min_m | elevation_min_point | elevation_min_rank | elevation_point | embed | established_date | established_date1 | established_date2 | established_date3 | established_date4 | established_date5 | established_date6 | established_date7 | established_title | established_title1 | established_title2 | established_title3 | established_title4 | established_title5 | established_title6 | established_title7 | etymology | extinct_date | extinct_title | flag_alt | flag_border | flag_link | flag_size | footnotes | founder | geocode | governing_body | government_footnotes | government_type | government_blank1_title | government_blank1 | government_blank2_title | government_blank2 | government_blank2_title | government_blank3 | government_blank3_title | government_blank3 | government_blank4_title | government_blank4 | government_blank5_title | government_blank5 | government_blank6_title | government_blank6 | grid_name | grid_position | image_alt | image_blank_emblem | image_caption | image_flag | image_map | image_map1 | image_seal | image_shield | image_size | image_skyline | imagesize | iso_code | leader_name | leader_name1 | leader_name2 | leader_name3 | leader_name4 | leader_party | leader_title | leader_title1 | leader_title2 | leader_title3 | leader_title4 | length_km | length_mi | map_alt | map_alt1 | map_caption | map_caption1 | mapsize | mapsize1 | module | motto | motto_link | mottoes | name | named_for | native_name | native_name_lang | nickname | nickname_link | nicknames | official_name | other_name | p1 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p2 | p20 | p21 | p22 | p23 | p24 | p25 | p26 | p27 | p28 | p29 | p3 | p30 | p31 | p32 | p33 | p34 | p35 | p36 | p37 | p38 | p39 | p4 | p40 | p41 | p42 | p43 | p44 | p45 | p46 | p47 | p48 | p49 | p5 | p50 | p6 | p7 | p8 | p9 | parts | parts_style | parts_type | pop_est_as_of | pop_est_footnotes | population | population_as_of | population_blank1 | population_blank1_footnotes | population_blank1_title | population_blank2 | population_blank2_footnotes | population_blank2_title | population_demonym | population_demonyms | population_density_blank1_km2 | population_density_blank1_sq_mi | population_density_blank2_km2 | population_density_blank2_sq_mi | population_density_km2 | population_density_metro_km2 | population_density_metro_sq_mi | population_density_rank | population_density_rural_km2 | population_density_rural_sq_mi | population_density_sq_mi | population_density_urban_km2 | population_density_urban_sq_mi | population_est | population_footnotes | population_metro | population_metro_footnotes | population_note | population_rank | population_rural | population_rural_footnotes | population_total | population_urban | population_urban_footnotes | postal_code | postal_code_type | postal2_code | postal2_code_type | pushpin_image | pushpin_label | pushpin_label_position | pushpin_map | pushpin_map_alt | pushpin_map_caption | pushpin_map_caption_notsmall | pushpin_map_narrow | pushpin_mapsize | pushpin_outside | pushpin_overlay | pushpin_relief | registration_plate | registration_plate_type | seal_alt | seal_link | seal_size | seal_type | seat | seat_type | seat1 | seat1_type | seat2 | seat2_type | settlement_type | shield_alt | shield_link | shield_size | short_description | subdivision_name | subdivision_name1 | subdivision_name2 | subdivision_name3 | subdivision_name4 | subdivision_name5 | subdivision_name6 | subdivision_type | subdivision_type1 | subdivision_type2 | subdivision_type3 | subdivision_type4 | subdivision_type5 | subdivision_type6 | timezone | timezone_DST | timezone_link | timezone1 | timezone1_DST | timezone1_location | timezone2 | timezone2_DST | timezone2_location | timezone3 | timezone3_DST | timezone3_location | timezone4 | timezone4_DST | timezone4_location | timezone5 | timezone5_DST | timezone5_location | total_type | translit_lang1 | translit_lang1_info | translit_lang1_info1 | translit_lang1_info2 | translit_lang1_info3 | translit_lang1_info4 | translit_lang1_info5 | translit_lang1_info6 | translit_lang1_type | translit_lang1_type1 | translit_lang1_type2 | translit_lang1_type3 | translit_lang1_type4 | translit_lang1_type5 | translit_lang1_type6 | translit_lang2 | translit_lang2_info | translit_lang2_info1 | translit_lang2_info2 | translit_lang2_info3 | translit_lang2_info4 | translit_lang2_info5 | translit_lang2_info6 | translit_lang2_type | translit_lang2_type1 | translit_lang2_type2 | translit_lang2_type3 | translit_lang2_type4 | translit_lang2_type5 | translit_lang2_type6 | type | unit_pref | utc_offset | utc_offset_DST | utc_offset1 | utc_offset1_DST | utc_offset2 | utc_offset2_DST | utc_offset3 | utc_offset3_DST | utc_offset4 | utc_offset4_DST | utc_offset5 | utc_offset5_DST | website | width_km | width_mi }}<!-- -->{{#invoke:Check for clobbered parameters|check | template = Infobox settlement | cat = {{main other|Category:Pages using infobox settlement with conflicting parameters}} | population; population_total | image_size; imagesize | image_alt; alt | image_caption; caption }}<!-- Wikidata -->{{#if:{{{coordinates_wikidata|}}}{{{wikidata|}}} |[[Category:Pages using infobox settlement with the wikidata parameter]] }}{{main other|<!-- Missing country -->{{#if:{{{subdivision_name|}}}||[[Category:Pages using infobox settlement with missing country]]}}<!-- No map -->{{#if:{{{pushpin_map|}}}{{{image_map|}}}{{{image_map1|}}}||[[Category:Pages using infobox settlement with no map]]}}<!-- Image_map1 without image_map -->{{#if:{{{image_map1|}}}|{{#if:{{{image_map|}}}||[[Category:Pages using infobox settlement with image_map1 but not image_map]]}}}}<!-- No coordinates -->{{#if:{{{coordinates|}}}||[[Category:Pages using infobox settlement with no coordinates]]}}<!-- -->{{#if:{{{type|}}}|{{#ifeq:{{{settlement_type|a}}}|{{{settlement_type|b}}}|[[Category:Pages using infobox settlement with ignored type]]|}}|}}<!-- Ignored type parameter -->{{#if:{{{embed|}}}|[[Category:Pages using infobox settlement with embed]]}} }}</includeonly><noinclude> {{documentation}} <!--Please add this template's categories to the /doc subpage, not here - thanks!--> </noinclude> f793562757697511bcbaf05e1a004a887ca760f8 Module:Footnotes/anchor id list 828 897 1984 2023-08-08T18:24:26Z wikipedia>Trappist the monk 0 Scribunto text/plain require('strict'); local data = mw.loadData ('Module:Footnotes/anchor id list/data'); local whitelist = mw.loadData ('Module:Footnotes/whitelist'); local Lang_obj = mw.language.getContentLanguage(); -- used by template_list_add() to uppercase first letter of template name TODO: better way to do that? local redirects_date = { ['date'] = true, ['datetomos'] = true, ['formatdate'] = true, ['isotodmymdy'] = true, ['isotomos'] = true, } local redirects_patent = { -- special case cs1-like templates because uses different parameters for name and date in anchor ID ['Cite patent'] = true, ['Citeref patent'] = true, ['Ref patent'] = true, } local redirects_sfnref = { ['sfnref'] = true, ['harvid'] = true, } local aliases_author = { -- these use pseudo-patterns in the same way as cs1|2; '#' represents 1 or more enumerator digits 'last#', 'author#', 'surname#', 'author-last#', 'author#-last', 'subject#', 'host#', } local aliases_contributor = { 'contributor#', 'contributor-last#', 'contributor#-last', 'contributor-surname#', 'contributor#-surname', } local aliases_editor = { 'editor#', 'editor-last#', 'editor#-last', 'editor-surname#', 'editor#-surname', } local aliases_harvc_author = { 'last#', 'author#', } local aliases_inventor = { -- cite patent 'inventor#', 'inventor-last#', 'inventor#-last', 'inventor-surname#', 'inventor#-surname', 'invent#', 'invent-#', } local alias_patterns_date = { -- normal lua patterns for most cs1|2-like templates '|%s*year%s*=%s*', '|%s*date%s*=%s*', '|%s*publication%-?date%s*=%s*', '|%s*air%-?date%s*=%s*', } local alias_patterns_harvc_date = { -- normal lua patterns for harvc template '|%s*anchor%-year%s*=%s*', '|%s*year%s*=%s*', } local alias_patterns_patent_date = { -- normal lua patterns for cite patent templates '|%s*issue%-date%s*=%s*', '|%s*gdate%s*=%s*', '|%s*publication%-date%s*=%s*', '|%s*pubdate%s*=%s*', } local patterns_date = { -- normal lua patterns -- '(%d%d%d%d–%d%d%d%d%l?)$', -- YYYY–YYYY four-digit year range at end (Season YYYY–YYYY); with or without dab '(%d%d%d%d)%D+(%d%d%d%d%l?)$', -- any range with four-digit years; with or without dab; not two captures '^(%d%d%d%d–%d%d%l?)$', -- YYYY–YY two-digit year range; with or without dab '^(c%. %d%d%d%d?%l?)$', -- three- or four-digit circa year; with or without dab '(%d%d%d%d?%l?)$', -- three- or four-digit year at end of date (dmy or mdy); with or without dab '^(%d%d%d%d?%l?)', -- three- or four-digit year at beginning of date (ymd or YYYY); with or without dab '^(n%.d%.%l?)$', -- 'no date' with dots; with or without dab '^(nd%l?)$', -- 'no date' without dots; with or without dab } local patterns_tags = { '<nowiki>.-</nowiki>', '<!%-%-.-%-%->', '<pre>.-</pre>', '<syntaxhighlight.->.-</syntaxhighlight>', '<source.->.-</source>', -- deprecated alias of syntaxhighlight tag } local template_skip = { -- templates to be skipped for whatever reason; mostly because they resemble cs1-like templates ['Citation-attribution'] = true, } local Article_content; local anchor_id_list = {}; -- exported tables local template_list = {}; local article_whitelist = {}; --[[--------------------------< A R T I C L E _ C O N T E N T _ G E T >---------------------------------------- get article content, remove certain html-like tags and their content so that this code doesn't include any citation templates inside the tags as valid tagets; they are not. ]] local function article_content_get () if not Article_content then Article_content = mw.title.getCurrentTitle():getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625 for _, tag in ipairs (patterns_tags) do Article_content = Article_content:gsub (tag, ''); -- remove certain html-like tags and their content end end end --[[--------------------------< S F N R E F _ G E T >---------------------------------------------------------- make an anchor id from the contents of {{sfnref}} or {{harvid}}. this function assumes that {{sfnref}} and {{harvid}} are correctly formed. ]] local function sfnref_get (template) template = template:gsub ('{{%s*(.-)%s*}}', '%1'); -- strip bounding template markup and trim local parts = mw.text.split (template, '%s*|%s*'); -- split at the pipe and remove extraneous space characters local anchor_id = {}; if redirects_sfnref[parts[1]:lower()] then anchor_id[1] = 'CITEREF'; else return nil; -- not an sfnref or harvid template end local i = 2; -- indexer into parts{} table local j = 2; -- indexer into anchor_id{} table which already has 'CITEREF' at [1] while parts[i] and 7 > j do -- loop through what should be just positional parameters for names and year (2-6 four names and a date) if not parts[i]:find ('=') then -- look for equal sign (named paraneter in a template that doesn't support named parameters) anchor_id[j] = parts[i]; -- positional parameters are saved j = j+1; -- bump the anchor_id{} indexer end i = i+ 1; -- bump the parts{} indexer end return table.concat (anchor_id, ''); end --[[--------------------------< D A T E _ G E T >-------------------------------------------------------------- extract year from one of |year=, |date=, |publicationdate=, or |publication-date in that order. Does not error check (that is left to the cs1|2 templates to do) also gets date from |<date alias>={{date|...}} ]] local function date_get (template, aliases) local rvalue; for _, pattern in ipairs (aliases) do -- spin through the date alias patterns rvalue = tostring(template):match (pattern); -- is this |<date alias>= used (tostring() because something makes match() think template is a table) if rvalue then rvalue = tostring(template):match (pattern .. '(%b{})'); -- is rvalue a template? if rvalue then rvalue = rvalue:gsub ('{{%s*(.-)%s*}}', '%1'); -- strip bounding template markup and trim local parts = mw.text.split (rvalue, '%s*|%s*'); -- split at the pipe and remove extraneous space characters if redirects_date[parts[1]:lower()] then -- if parts[1] names {{date}} or redirect rvalue = parts[2]; -- assume that date template is properly formed, first positional parameter is the date else return ''; -- |date= holds some other template than {{date}} or redirect end else rvalue = template:match (pattern .. '([^|}]+)'); if rvalue then -- if rvalue is something rvalue = mw.text.trim (rvalue); -- trim it end if not rvalue or '' == rvalue then -- if rvale was nothing or trimed to nothing rvalue = nil; -- ensure that it is unset so we can try the next parameter in the list end end if rvalue then for _, pattern in ipairs (patterns_date) do -- spin through the recognized date formats -- date = rvalue:match (pattern); -- attempt to extract year portion according to the pattern local date, date2 = rvalue:match (pattern); -- attempt to extract year portion according to the pattern; <date2> gets second year in any range if date then if date2 then -- when a second year date = table.concat ({date, '–', date2}); -- build a date range end return date; -- matched so return; end end break; -- found a date but it was malformed so abandon end end end return ''; -- no date param or date param doesn't hold a recognized date; empty string for concatenation end --[[--------------------------< V N A M E S _ G E T >---------------------------------------------------------- extract names from |vauthors= or |veditors=; there is no |vcontributors= parameter. splits the v parameter value at the comma; correctly handles accept-as-witten markup when used to wrap a comma- separated names (corporate) ]] local function vnames_get (params, vparam) local vnames = {}; -- first four author or editor names go here local split = {}; -- temp table to assist in decoding accept-as-witten-markup if params[vparam] then -- test for |vauthors= or |veditor= split = mw.text.split (params[vparam], '%s*,%s*'); -- this will separate portions of ((Black, Brown, White, an Co.)) local i = 1; -- an indexer while split[i] do if split[i]:match ('^%(%(.*[^%)][^%)]$') then -- first segment of comma-separated accept-as-witten; this segment has the opening doubled parens local name = split[i]; i=i+1; -- bump indexer to next segment while split[i] do name = name .. ', ' .. split[i]; -- concatenate with previous segments if split[i]:match ('^.*%)%)$') then -- if this table member has the closing doubled parens break; -- and done reassembling so end i=i+1; -- bump indexer end table.insert (vnames, name); -- and add accept-as-witten name to the vnames table else table.insert (vnames, split[i]); -- and add name to the vnames table end i=i+1; -- bump indexer if 5 == i then break; end -- limit to four names end for i, vname in ipairs (vnames) do if not vname:match ('%(%(.-%)%)') then -- without accept-this-value-as-written markup vnames[i] = vname:gsub ('(.-)%s+%u+$', '%1'); -- extract and save surname(s) end end for i, vname in ipairs (vnames) do -- repeat, this time for accept-this-value-as-written markup vnames[i] = vname:gsub ('%(%((.-)%)%)', '%1'); -- remove markup if present and save the whole name end end return 0 ~= #vnames and table.concat (vnames) or nil -- return a concatenation of the vnames; nil else end --[[--------------------------< N A M E S _ G E T >------------------------------------------------------------ cs1|2 makes anchor id from contributor, author, or editor name-lists in that order get the names from the cs1|2 template; if there are no contributor names, try author names, then try editor names. returns concatenated names in enumeration order when successful; nil else empty name (nameholding parameter n is present without value) and missing name (nameholding parameter n is not present) are included as empty string with all other names ]] local function names_get (params, aliases_list) local names = {}; -- first four author or editor names go here local enum_alias; -- alias with '#' replaced with a digit for enum=1, 4 do -- four names only for i, alias in ipairs (aliases_list) do if not names[enum] then -- hanven't found a previous alias with this [enum]? see if we can find this alias with this enum enum_alias = alias:gsub ('#', enum); -- replace '#' to make 'lastn' if 1 == enum then -- because |last= and last1= are exact aliases if params[enum_alias] then -- test |last1= first names[enum] = params[enum_alias]; -- found so save the value assigned to |last1= break; -- next enum else enum_alias = alias:gsub ('#', ''); -- replace '#' to make 'last' if params[enum_alias] then names[enum] = params[enum_alias]; -- found so save the value assigned to |last= break; -- next enum end end else -- here for enum 2, 3, 4 if params[enum_alias] then names[enum] = params[enum_alias]; -- found so save the value assigned to |lastn= break; -- next enum end end end end end for enum=1, 4 do -- spin through the names table and local name = names[enum]; if not name then -- when nameholding parameter n is not present (nil) name = ''; -- convert to empty string for concatenation end name = name:gsub('%(%((.-)%)%)', '%1'); -- remove accept-as-written markup if present names[enum] = name; -- save the modified name end local name_str = table.concat (names); -- concatenate the names return '' ~= name_str and name_str or nil; -- return the concatenation if not empty string; nil else end --[[--------------------------< T E M P L A T E _ S T R I P >-------------------------------------------------- removes the citation or havrc template's {{ and }} markup then removes, in whole, any templates found inside the citation or harvc template. Templates are not allowed in parameters that are made part of COinS metadata; yet, they will appear. cs1|2 does not see the template markup but instead sees the result of the template as html. cs1|2 strips the html which leaves the displayed value for the anchor id. We can't do that here so, because templates aren't allowed in parameters, we simply discard any templates found in the cs1|2 template. this may leave a |lastn= parameter empty which will be treated as if it were really empty as cs1|2 do (three authors, |last2= empty -> CITEREFLast1Last3YYYY (the harv and sfn render: 'Last1, & Last3 YYYY' with CITEREFLast1Last3YYYY). ]] local function template_strip (template) template = template:gsub ('^{{%s*', ''):gsub ('%s*}}$', '', 1); -- remove outer {{ and }} (cs1|2 template delimiters with trailing/leading whitespace) template = template:gsub ('%b{}', ''); -- remove any templates from the cs1|2 template return template; end --[[--------------------------< E S C A P E _ L U A _ M A G I C _ C H A R S >---------------------------------- Returns a string where all of lua's magic characters have been escaped. This is important because functions like string.gsub() treat their pattern and replace strings as patterns, not literal strings. ]] local function escape_lua_magic_chars (argument) argument = argument:gsub("%%", "%%%%"); -- replace % with %% argument = argument:gsub("([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1"); -- replace all other lua magic pattern characters return argument; end --[=[-------------------------< W I K I L I N K _ S T R I P >-------------------------------------------------- Wikilink markup does not belong in an anchor id and can / does confuse the code that parses apart citation and harvc templates so here we remove any wiki markup: [[link|label]] -> label [[link]] -> link ]=] local function wikilink_strip (template) for wikilink in template:gmatch ('%[%b[]%]') do -- get a wikilink template = template:gsub ('%[%b[]%]', '__57r1P__', 1); -- install a marker if wikilink:match ('%[%[.-|(.-)%]%]') then wikilink = wikilink:match ('%[%[.-|(.-)%]%]'); -- extract label from complex [[link|label]] wikilink else wikilink = wikilink:match ('%[%[(.-)%]%]'); -- extract link from simple [[link]] wikilinks end wikilink = escape_lua_magic_chars (wikilink); -- in case there are lua magic characters in wikilink template = template:gsub ('__57r1P__', wikilink, 1); -- replace the marker with the appropriate text end return template; end --[[--------------------------< T E M P L A T E _ N A M E _ G E T >-------------------------------------------- return the citation or harvc template's name; convert to lower case and trim leading and trailing whitespace; when the template is a sandbox the subpage portion of the template name is omitted from the returned template name {{Cite book/new |...}} returns cite book ]] local function template_name_get (template) local template_name = template:match ('^{{%s*([^/|}]+)'); -- get template name; ignore subpages ~/new, ~/sandbox; parser functions if not template_name or template_name:match ('^#') then -- parser functions, magic words don't count as templates return nil; -- could not get template name from (possibly corrupt) template; extraneous opening { mid template can cause this; end; template_name = template_name:gsub ('%s*$', ''); -- trim trailing whitespace; leading whitespace already removed return Lang_obj:ucfirst (template_name); -- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this? end --[[--------------------------< T E M P L A T E _ P A R A M S _ G E T >---------------------------------------- parse apart a template's parameters and store in the params table where key is the parameter's name and value is the parameter's value; empty parameters are not saved ]] local function template_params_get (template, params_t) template = wikilink_strip (template); -- because piped wikilinks confuse code that builds params_t{} and because wikilinks not allowed in an anchor id -- strip templates after getting |ref= value because |ref={{sfnref}} and |ref={{harvid}} are allowed template = template_strip (template); -- because template markup can confuse code that builds params_t{} and because templates in name parameters are not allowed local temp_t = mw.text.split (template, '%s*|%s*'); --split on the pipe for _, param in ipairs (temp_t) do if param:find ('=', 1, true) then -- a named parameter? local k, v = param:match ('%s*([^=]-)%s*=%s*([^|}]+)'); if v then -- there must be a value if '' ~= v and not v:match ('^%s$') then -- skip when value is empty string or only whitespace params_t[k] = mw.text.trim (v); -- add trimmed value else end end end end end --[[--------------------------< C I T E R E F _ M A K E _ H A R V C >------------------------------------------ makes anchor_id from {{harvc}} or redirects ]] local function anchor_id_make_harvc (template) local date = date_get (template, alias_patterns_harvc_date); -- get date; done here because might be in {{date}}; return date if valid; empty string else local anchor_id; local params = {}; -- table of harvc parameters local id; -- custom anchor id for this {{harvc}} template id = template:match ('|%s*id%s*=%s*(%b{})'); -- in case |id={{sfnref}}; done here because templates will be stripped template_params_get (template, params); -- build a table of template parameters and their values; this strips wikilinks and templates if id then -- when set is {{sfnref}} or {{harvid}} template return sfnref_get (id); -- returns content of {{sfnref}} or {{harvid}}; nil else end if params.id then -- custom anchor for this {{harvc}} template (text) return params.id; -- |id= value as written end anchor_id = names_get (params, aliases_harvc_author); -- get the harvc contributor names if anchor_id then -- if names were gotten return 'CITEREF' .. anchor_id .. date; end return nil; -- no names; no anchor_id end --[[--------------------------< A N C H O R _ I D _ M A K E _ W R A P P E R >---------------------------------- for wrapper templates inspect externally visible |ref= to decide what to do: |ref= - empty or missing: get names and date from whitelist defaults; override defaults from externally visible template parameters |ref=harv - same as empty or missing |ref={{SfnRef|name|name|name|name|year}} - assemble an anchor id from {{sfnref}} positional parameters |ref={{Harvid|name|name|name|name|year}} - assemble an anchor id from {{harvid}} positional parameters |ref=none - skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'? |ref=<text> - save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter ]] local function anchor_id_make_wrapper (template) local ref; -- content of |ref= local template_name; -- name of the template local anchor_id; -- the assembled anchor id from this template local date; local name_default; local date_default; local vol; local params = {}; -- table of template parameters template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox if not template_name or template_skip[template_name] then return nil; -- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this) end date = date_get (template, alias_patterns_date); -- get date; done here because might be in {{date}} -- if '' == date then -- date = whitelist.wrapper_templates[template_name][2] or ''; -- no externally visible date so get default date -- end ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the wrapper template if not ref then if template:match ('|%s*ref%s*=([^|}]+)') then -- |ref={{template}} not found; if there is a |ref= param with an assigned value ref = template:match ('|%s*ref%s*=([^|}]+)'); -- get the value; whitespace is a 'value' if ref then -- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace) ref = mw.text.trim (ref); -- something, could be just whitespace, so trim leading / trailing whitespace if '' == ref then -- trimming a string of whitespace makes an empty string ref = nil; -- make empty ref same as missing ref end end end end template_params_get (template, params); -- build a table of template parameters and their values if whitelist.wrapper_templates[template_name][1] then -- is this wrapper a simple-default wrapper? name_default = whitelist.wrapper_templates[template_name][1]; -- get the default names date_default = whitelist.wrapper_templates[template_name][2]; -- get the default date else vol = params['volume'] or 'default'; if not whitelist.wrapper_templates[template_name][vol] then -- make sure this volume exists vol = 'default'; -- doesn't exist, use default volume end name_default = whitelist.wrapper_templates[template_name][vol][1]; -- get the default names date_default = whitelist.wrapper_templates[template_name][vol][2]; -- get the default date end if 'harv' == ref or not ref then -- |ref=harv specified or |ref= missing or empty anchor_id = names_get (params, aliases_contributor) or -- get contributor, author, or editor names names_get (params, aliases_author) or vnames_get (params, 'vauthors') or -- |vauthors= names_get (params, aliases_editor) or vnames_get (params, 'veditors') or -- |veditors= name_default; -- default names from whitelist -- whitelist.wrapper_templates[template_name][1]; -- default names from whitelist if '' == date then -- if date not provided in the template date = date_default; -- use the default date from whitelist end if anchor_id then -- if names were gotten anchor_id = 'CITEREF' .. anchor_id .. date; end elseif ref:match ('%b{}') then -- ref holds a template anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else elseif 'none' == ref then -- |ref=none return nil; -- anchor id expicitly suppressed else anchor_id = ref; -- |ref=<text> may match an anchor id override value in {{harv}} template |ref= parameter end return anchor_id; -- anchor_id text; nil else end --[[--------------------------< A N C H O R _ I D _ M A K E _ C S 1 2 >---------------------------------------- for cs1|2 template and cs1-like templates inspect |ref= to decide what to do: |ref= - empty or missing: get names and date from template parameters; all cs1|2 create CITEREF anchor IDs |ref=harv - get names and date from template parameters |ref={{SfnRef|name|name|name|name|year}} - assemble an anchor id from {{sfnref}} positional parameters |ref={{Harvid|name|name|name|name|year}} - assemble an anchor id from {{harvid}} positional parameters |ref=none - skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'? |ref=<text> - save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter ]] local function anchor_id_make_cs12 (template) local ref; -- content of |ref= local template_name; -- name of the template local anchor_id; -- the assembled anchor id from this template local date; local params = {}; -- table of template parameters template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox if not template_name or template_skip[template_name] then return nil; -- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this) end if redirects_patent[template_name] then date = date_get (template, alias_patterns_patent_date); -- get date; done here because might be in {{date}} else date = date_get (template, alias_patterns_date); end ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the cs1|2 template if not ref then if template:match ('|%s*ref%s*=([^|}]+)') then -- |ref={{template}} not found; if there is a |ref= param with an assigned value ref = template:match ('|%s*ref%s*=([^|}]+)'); -- get the value; whitespace is a 'value' if ref then -- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace) ref = mw.text.trim (ref); -- something, could be just whitespace, so trim leading / trailing whitespace if '' == ref then -- trimming a string of whitespace makes an empty string ref = nil; -- make empty ref same as missing ref end end end end template_params_get (template, params); -- build a table of template parameters and their values if not ref then -- |ref= not set, might be cite LSA which doesn't support |ref= if 'cite lsa' == template_name then return 'CITEREF' .. (params.last or '') .. (params.year or ''); -- cite LSA always creates an anchor id using only |last= and |year= (no aliases) end end if 'harv' == ref or not ref then -- |ref=harv specified or |ref= missing or empty if redirects_patent[template_name] then -- if this is a cite patent template anchor_id = names_get (params, aliases_inventor); -- inventor names only else -- cs1|2 template anchor_id = names_get (params, aliases_contributor) or -- get contributor, author, or editor names names_get (params, aliases_author) or vnames_get (params, 'vauthors') or -- |vauthors= names_get (params, aliases_editor) or vnames_get (params, 'veditors'); -- |veditors= end if anchor_id then -- if names were gotten anchor_id = 'CITEREF' .. anchor_id .. date; end elseif ref:match ('%b{}') then -- ref holds a template anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else elseif 'none' == ref and not redirects_patent[template_name] then -- |ref=none; not supported by cite patent return nil; -- anchor id expicitly suppressed else anchor_id = ref; -- |ref=<text> may match an anchor id override value in {{harv}} template |ref= parameter end return anchor_id; -- anchor_id text; nil else end --[[--------------------------< L I S T _ A D D >-------------------------------------------------------------- adds an <item> to <list> table; for anchor IDs, the boolean <encode> argument must be set true; no return value ]] local function list_add (item, list, encode) if item then -- if there was an item if encode then -- for anchor IDs ... item = mw.uri.anchorEncode (item); -- encode to remove wikimarkup, convert spaces to underscores etc end if not list[item] then -- if not already saved list[item] = 1; -- save it else -- here when this item already saved list[item] = list[item] + 1; -- to indicate that there are multiple items end end end --[[--------------------------< A N C H O R _ I D _ M A K E _ A N C H O R >------------------------------------ make anchor IDs from {{anchor}}; there may be more than one because {{anchor}} is not limited to the number of anchors it may hold. ]] local function anchor_id_make_anchor (template, anchor_id_list) template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1); -- remove outer {{ and }} and template name template = wikilink_strip (template); -- strip any wikilink markup (there shouldn't be any but just in case) local params = {}; local anchor_id; for param in template:gmatch ('%b{}') do -- loop through the template; remove and save templates (presumed to be sfnref or harvid) table.insert (params, param); -- save it template = template:gsub ('%b{}', '', 1); -- remove it from source template end for _, t in ipairs (params) do -- spin through the templates in params anchor_id = sfnref_get (t); -- attempt to decode {{sfnref}} and {{harvid}} if anchor_id then -- nil when not {{sfnref}} or {{harvid}} list_add (anchor_id, anchor_id_list, true); -- add anchor ID to the list end end template = template:gsub ('|%s*|', '|'); -- when pipe follows pipe with or without white space, remove extraneous pipe template = template:gsub ('^|', ''):gsub('|$', ''); -- remove extraneous leading and trailing pipes params = mw.text.split (template, '%s*|%s*'); -- split at the pipe and remove extraneous space characters for _, t in ipairs (params) do -- spin through the anchor IDs anchor_id = mw.text.trim (t); -- trim white space if '' ~= anchor_id then -- should always have something list_add (anchor_id, anchor_id_list, true); -- add anchor ID to the list end end end --[[--------------------------< T E M P L A T E _ L I S T _ A D D >-------------------------------------------- makes a list of templates use in the article. ]] local function template_list_add (template) local template = template:match ('{{%s*(.-)[|}]'); -- keep the case of the template - this is different from template_name_get() if template and not template:match ('^#') then -- found a template or magic word; ignore magic words template=mw.text.trim (template); -- trim whitespace template = Lang_obj:ucfirst (template); -- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this? list_add (template, template_list); -- add to list with (unused) tally end end --[[--------------------------< A N C H O R _ I D _ L I S T _ M A K E >---------------------------------------- makes a list of anchor ids from cs1|2, cs1|2-like, vcite xxx, harvc, anchor, wikicite templates Because cs1|2 wrapper templates can, and often do, hide the author and date parameters inside the wrapper, these parameters are not available in the article's wikisource so {{harv}}, {{sfn}}, and {{harvc}} templates that link correctly to those wrapper templates will incorrectly show error messages. Use |ignore-err=yes in the {{harv}}, {{sfn}}, and {{harvc}} templates to supress the error message. creates a list of templates used in the article for use with the whitelist creates a list of article-local whitelisted anchor IDs from {{sfn whitelist}} ]] local function anchor_id_list_make () article_content_get (); -- attempt to get this article's content if '' == Article_content then -- when there is no article content return ''; -- no point in continuing end local template; -- place to hold the template that we found local template_name; local anchor_id; -- place to hold an anchor id as it is extracted / decoded local find_pattern = '%f[{]{{[^{]'; local tstart, tend = Article_content:find (find_pattern); -- find the first template; do not find template variables: {{{template var|}}} while tstart do template = Article_content:match ('%b{}', tstart); -- get the whole template if not template then break; -- template is nil for some reason (last template missing closing }} for example) so declare ourselves done end template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox template_list_add (template); -- add this template's name to the list if data.known_templates_cs12 [template_name] then anchor_id = anchor_id_make_cs12 (template); -- extract an anchor id from this template list_add (anchor_id, anchor_id_list, true) elseif data.known_templates_vcite [template_name] then local ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the vcite template if ref then -- |ref={{template}} anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else list_add (anchor_id, anchor_id_list, true); else local params = {}; template_params_get (template, params); -- build a table of template parameters and their values anchor_id = params['ref']; -- when both set, vcite uses value from |ref= if not anchor_id and params['harvid'] then anchor_id = 'CITEREF' .. params['harvid']; -- in vcite, |harvid= auto-adds 'CITEREF' prefix to the value in |harvid= end list_add (anchor_id, anchor_id_list, true); end elseif data.known_templates_harvc [template_name] then anchor_id = anchor_id_make_harvc (template); -- extract an anchor id from this template list_add (anchor_id, anchor_id_list, true); elseif data.known_templates_wikicite [template_name] then local ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} if ref then anchor_id = sfnref_get (ref); elseif template:match ('|%s*ref%s*=([^|}]+)') then anchor_id = template:match ('|%s*ref%s*=([^|}]+)'); -- plain-text elseif template:match ('|%s*id%s*=%s*(%b{})') then ref = template:match ('|%s*id%s*=%s*(%b{})'); anchor_id = 'Reference-' .. sfnref_get (ref); elseif template:match ('|%s*id%s*=([^|}]+)') then anchor_id = 'Reference-' .. template:match ('|%s*id%s*=([^|}]+)'); -- plain-text else anchor_id = nil; -- no matches, ensure that anchor_id has no value end if anchor_id then list_add (anchor_id, anchor_id_list, true); end elseif data.known_templates_anchor [template_name] then anchor_id_make_anchor (template, anchor_id_list); -- extract anchor ids from this template if any elseif data.known_templates_sfn_whitelist [template_name] then template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1); -- remove outer {{ and }} and template name template = mw.text.trim (template, '%s|'); -- trim leading trailing white space and pipes template = mw.text.split (template, '%s*|%s*'); -- make a table of the template's parameters for _, anchor_id in ipairs (template) do -- spin through this template's parameter if '' ~= anchor_id and not article_whitelist[anchor_id] then anchor_id = mw.uri.anchorEncode (anchor_id) article_whitelist[anchor_id] = 1; -- add to the whitelist end end elseif template_name and whitelist.wrapper_templates[template_name] then anchor_id = anchor_id_make_wrapper (template); -- extract an anchor id from this template if possible list_add (anchor_id, anchor_id_list, true); elseif template_name and template_name:match ('^Cit[ea]') then -- not known, not known wrapper; last gasp, try as cs1-like anchor_id = anchor_id_make_cs12 (template); -- extract an anchor id from this template if possible list_add (anchor_id, anchor_id_list, true); end tstart, tend = Article_content:find (find_pattern, tend); -- search for another template; begin at end of last search end mw.logObject (anchor_id_list, 'anchor_id_list'); mw.logObject (template_list, 'template_list'); mw.logObject (article_whitelist, 'article_whitelist'); return anchor_id_list; end --[[--------------------------< E X P O R T E D _ T A B L E S >------------------------------------------------ ]] return { anchor_id_list = anchor_id_list_make(), -- table of anchor ids available in this article article_whitelist = article_whitelist, -- table of anchor ids with false-positive error message to be suppressed template_list = template_list, -- table of templates used in this article } a827820b3af4a53f9ce6c4a2293bd7f418785903 Module:Demo 828 1337 2672 2023-08-09T09:12:21Z w>JWBTH 0 fix handling of -{ Scribunto text/plain local p = {} --creates a frame object that cannot access any of the parent's args --unless a table containing a list keys of not to inherit is provided function disinherit(frame, onlyTheseKeys) local parent = frame:getParent() or frame local orphan = parent:newChild{} orphan.getParent = parent.getParent --returns nil orphan.args = {} if onlyTheseKeys then local family = {parent, frame} for f = 1, 2 do for k, v in pairs(family[f] and family[f].args or {}) do orphan.args[k] = orphan.args[k] or v end end parent.args = mw.clone(orphan.args) setmetatable(orphan.args, nil) for _, k in ipairs(onlyTheseKeys) do rawset(orphan.args, k, nil) end end return orphan, parent end function getSeparator(args, default) local br = tonumber(args.br) and ('<br>'):rep(args.br) or args.br local sep = args.sep or br or default return #sep > 0 and ' ' .. sep .. ' ' or sep end function p.get(frame, arg, passArgs) local orphan, frame = disinherit(frame, passArgs and {arg or 1}) local code = frame.args[arg or 1] or '' if code:match'UNIQ%-%-nowiki' then code = mw.text.unstripNoWiki(code) :gsub('&lt;', '<') :gsub('&gt;', '>') :gsub('&quot;', '"') -- Replace `&#125;%-` with `}-` because of some server quirk leading to -- =mw.text.unstripNoWiki(mw.getCurrentFrame():preprocess('<nowiki>}-</nowiki>')) -- outputting `&#125;-` instead of `}-`, while it's ok with `<nowiki>} -</nowiki>` :gsub('&#125;%-', '}-') -- The same with `-&#123;` :gsub('%-&#123;', '-{') end local kill_categories = frame.args.demo_kill_categories or frame.args.nocat return { source = code, output = orphan:preprocess(code):gsub(kill_categories and '%[%[Category.-%]%]' or '', ''), frame = frame } end function p.main(frame, demoTable) local show = demoTable or p.get(frame) local args = show.frame.args if show[args.result_arg] then return show[args.result_arg] end local yesno = require('Module:Yesno') args.reverse = yesno(args.reverse, false) args.sep = getSeparator(args, '') local source = frame:extensionTag{ name = 'syntaxhighlight', args = { lang = 'wikitext', style = args.style }, content = show.source } return args.reverse and show.output .. args.sep .. source or source .. args.sep .. show.output end -- Alternate function to return an inline result function p.inline(frame, demoTable) local show = demoTable or p.get(frame) local args = show.frame.args if show[args.result_arg] then return show[args.result_arg] end local yesno = require('Module:Yesno') args.reverse = yesno(args.reverse, false) args.sep = getSeparator(args, args.reverse and '←' or '→') local source = frame:extensionTag{ name = 'syntaxhighlight', args = { lang = 'wikitext', inline = true, style = args.style }, content = show.source } return args.reverse and show.output .. args.sep .. source or source .. args.sep .. show.output end --passing of args into other module without preprocessing function p.module(frame) local orphan, frame = disinherit(frame, { 'demo_template', 'demo_module', 'demo_module_func', 'demo_main', 'demo_sep', 'demo_br', 'demo_result_arg', 'demo_kill_categories', 'nocat' }) local template = frame.args.demo_template and 'Template:'..frame.args.demo_template local demoFunc = frame.args.demo_module_func or 'main\n' local demoModule = require('Module:' .. frame.args.demo_module)[demoFunc:match('^%s*(.-)%s*$')] frame.args.br, frame.args.result_arg = frame.args.demo_sep or frame.args.demo_br, frame.args.demo_result_arg local kill_categories = frame.args.demo_kill_categories or frame.args.nocat if demoModule then local named = {insert = function(self, ...) table.insert(self, ...) return self end} local source = {insert = named.insert, '{{', frame.args.demo_template or frame.args.demo_module, '\n'} if not template then source:insert(2, '#invoke:'):insert(4, '|'):insert(5, demoFunc) end local insertNamed = #source + 1 for k, v in pairs(orphan.args) do local nan, insert = type(k) ~= 'number', {v} local target = nan and named or source target:insert'|' if nan then target:insert(k):insert'=':insert'\n' table.insert(insert, 1, #target) end target:insert(unpack(insert)) local nowiki = v:match('nowiki') if nowiki or v:match('{{.-}}') then orphan.args[k] = frame:preprocess(nowiki and mw.text.unstripNoWiki(v) or v) end end source:insert'}}' table.insert(source, insertNamed, table.concat(named)) return p.main(orphan, { source = table.concat(source), "<>'|=~", output = tostring(demoModule(orphan)):gsub(kill_categories and '%[%[Category.-%]%]' or '', ''), frame = frame }) else return "ERROR: Invalid module function: "..demoFunc end end return p ca508cc116b29461dde7f1bd086a5d7f2a08507b Template:Unichar 10 1609 2944 2023-08-09T17:53:55Z w>Jonesey95 0 removing main other check from the error detection, since this template is used in a lot of template documentation pages and should be checked wikitext text/x-wiki <includeonly>{{unichar/main | hval ={{unichar/hexformat|{{{1|<#salted#>}}} }} | hvalinput ={{{1|}}}<!--to use in errormessage--> | na ={{{2|}}} | ulink ={{{ulink|<#salted#>}}} | nlink ={{{nlink|<#salted#>}}} | image ={{{image|}}} | cwith ={{#if:{{{cwith|}}} | {{{cwith}}} | {{#if:{{{cwith}}} || &nbsp; }} }} | size ={{#if:{{{image|}}} | {{#if:{{#invoke:String|endswith|1={{lc:{{{size|}}}}}|2=px}}|{{{size}}}|10px}} | {{{size|{{#if:{{{cwith}}}|125%|150%}}}}} }} | use ={{lc:{{{use|unicode}}}}} | use2 ={{{use2|}}} | dval ={{hex2dec|{{unichar/hexformat|{{{1|<#salted#>}}} }}|no}} | html ={{#ifeq:{{{html|+}}}|{{{html|-}}}|yes|no}} | note ={{{note|}}} | gc ={{#if:{{{1|}}} |{{unichar/gc|{{hex2dec|{{{1|0}}}|no}}|hval={{unichar/hexformat|{{{1|<#salted#>}}} }} }} | <#not a Unicode code point#> }} }}<!-- -->{{#invoke:check for unknown parameters|check |unknown=[[Category: Pages using Unichar with unknown parameters|_VALUE_]] |preview=[[Template:Unichar]] unknown parameter "_VALUE_" |showblankpositional=1 |1 |hval |2 |na |ulink |image |cwith |size |use |use2 |nlink |html |gc |note }}</includeonly><!-- --><noinclude>{{documentation}}</noinclude> d466c6ddb83896c3c9a47089b09eb54cd49e1bb7 Template:Template parameter usage 10 60 115 2023-08-10T01:28:48Z wikipedia>Jonesey95 0 clarify that the linked report applies only to article space wikitext text/x-wiki {{#switch:{{{label|}}} |=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|C|c}}lick here] to see a monthly parameter usage report for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|this template}} in articles{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}}. |None|none=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report]{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}} |for|For=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|[[Template:{{ROOTPAGENAME}}]]}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}}. |#default=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{{label|}}}]{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}} }}<noinclude> {{documentation}} </noinclude> 10a89e6a4bc63a1427518ea21bf94b8f623a7391 Template:Interlanguage link 10 1096 2391 2023-08-10T08:18:00Z wikipedia>Primefac 0 add a hairspace for italics use to avoid collisions wikitext text/x-wiki <includeonly>{{safesubst:#if:{{{quote|}}}{{{quotes|}}}|"}}{{safesubst:#if:{{{italic|}}}{{{italics|}}}|''}}[[{{{1}}}{{safesubst:#if:{{{lt|}}}|{{safesubst:!}}{{{lt}}}}}]]{{safesubst:#if:{{{italic|}}}{{{italics|}}}|&#8202;''}}{{safesubst:#if:{{{quote|}}}{{{quotes|}}}|"}}{{safesubst:#ifeq:{{subst:Substcheck}}|SUBST||<!-- -->{{#if:{{#if:{{{preserve|{{{display|}}}}}}|1|{{#ifexist:{{{1|}}}|{{#invoke:redirect|isRedirect|{{{1|}}}}}|1}}}}<!-- --> |<{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|sup|super=sup|sub=sub|span}} class="noprint" style="{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|ib|font-size:100%;|sup|super|sub=|font-size:85%;}} font-style: normal; {{#if:{{{nobold|}}}|font-weight: normal;}}">&nbsp;&#91;{{#if:{{{WD|{{{wd|}}}}}} | [[d:Special:EntityPage/{{{WD|{{{wd}}}}}}#sitelinks-wikipedia|<span title="&quot;{{{1}}}&quot; in other languages">{{#if:{{{short|{{{s|}}}}}}|d|Wikidata}}</span>]]<!-- -->{{main other||{{#if:{{{reasonator|}}}|<nowiki />; [https://tools.wmflabs.org/reasonator/?q={{urlencode:{{{WD|{{{wd}}}}}}}} Reasonator]}}}} | {{Separated entries|separator=;&#32; | {{#if:{{{2|}}}|[[:{{{2}}}:{{#if:{{{3|}}}|{{{3}}}|{{{1}}}}}|{{{2}}}]]}} | {{#if:{{{4|}}}|[[:{{{4}}}:{{#if:{{{5|}}}|{{{5}}}|{{{1}}}}}|{{{4}}}]]}} | {{#if:{{{6|}}}|[[:{{{6}}}:{{#if:{{{7|}}}|{{{7}}}|{{{1}}}}}|{{{6}}}]]}} | {{#if:{{{8|}}}{{{10|}}}{{{12|}}}|{{Separated entries|separator=;&#32; | {{#if:{{{8|}}}|[[:{{{8}}}:{{#if:{{{9|}}}|{{{9}}}|{{{1}}}}}|{{{8}}}]]}} | {{#if:{{{10|}}}|[[:{{{10}}}:{{#if:{{{11|}}}|{{{11}}}|{{{1}}}}}|{{{10}}}]]}} | {{#if:{{{12|}}}|[[:{{{12}}}:{{#if:{{{13|}}}|{{{13}}}|{{{1}}}}}|{{{12}}}]]}} | {{#if:{{{14|}}}|[[:{{{14}}}:{{#if:{{{15|}}}|{{{15}}}|{{{1}}}}}|{{{14}}}]]}} | {{#if:{{{16|}}}|[[:{{{16}}}:{{#if:{{{17|}}}|{{{17}}}|{{{1}}}}}|{{{16}}}]]}} | {{#if:{{{18|}}}|[[:{{{18}}}:{{#if:{{{19|}}}|{{{19}}}|{{{1}}}}}|{{{18}}}]]}} | {{#if:{{{20|}}}|[[:{{{20}}}:{{#if:{{{21|}}}|{{{21}}}|{{{1}}}}}|{{{20}}}]]}} | {{#if:{{{22|}}}|[[:{{{22}}}:{{#if:{{{23|}}}|{{{23}}}|{{{1}}}}}|{{{22}}}]]}} | {{#if:{{{24|}}}|[[:{{{24}}}:{{#if:{{{25|}}}|{{{25}}}|{{{1}}}}}|{{{24}}}]]}} }}}} | {{#if:{{{reasonator|}}}|[https://tools.wmflabs.org/reasonator/test/?find={{urlencode:{{{1}}}}} Reasonator search]}} }}}}&#93;</{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|sup|super=sup|sub=sub|span}}> | [[Category:Interlanguage link template existing link]]<nowiki /> }}}}</includeonly>{{main other|{{#if:{{{preserve|{{{display|}}}}}}|[[Category:Interlanguage link template forcing interwiki links]]}}}}<noinclude> {{documentation}} </noinclude> 4c50a05de0c11d15b5feac4c7e31ab97094984bb Module:Citation/CS1/COinS 828 895 1980 2023-08-12T19:19:02Z wikipedia>Trappist the monk 0 sync from sandbox; Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local has_accept_as_written, is_set, in_array, remove_wiki_link, strip_apostrophe_markup; -- functions in Module:Citation/CS1/Utilities local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration --[[--------------------------< M A K E _ C O I N S _ T I T L E >---------------------------------------------- Makes a title for COinS from Title and / or ScriptTitle (or any other name-script pairs) Apostrophe markup (bold, italics) is stripped from each value so that the COinS metadata isn't corrupted with strings of %27%27... ]] local function make_coins_title (title, script) title = has_accept_as_written (title); if is_set (title) then title = strip_apostrophe_markup (title); -- strip any apostrophe markup else title = ''; -- if not set, make sure title is an empty string end if is_set (script) then script = script:gsub ('^%l%l%s*:%s*', ''); -- remove language prefix if present (script value may now be empty string) script = strip_apostrophe_markup (script); -- strip any apostrophe markup else script = ''; -- if not set, make sure script is an empty string end if is_set (title) and is_set (script) then script = ' ' .. script; -- add a space before we concatenate end return title .. script; -- return the concatenation end --[[--------------------------< E S C A P E _ L U A _ M A G I C _ C H A R S >---------------------------------- Returns a string where all of Lua's magic characters have been escaped. This is important because functions like string.gsub() treat their pattern and replace strings as patterns, not literal strings. ]] local function escape_lua_magic_chars (argument) argument = argument:gsub("%%", "%%%%"); -- replace % with %% argument = argument:gsub("([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1"); -- replace all other Lua magic pattern characters return argument; end --[[--------------------------< G E T _ C O I N S _ P A G E S >------------------------------------------------ Extract page numbers from external wikilinks in any of the |page=, |pages=, or |at= parameters for use in COinS. ]] local function get_coins_pages (pages) local pattern; if not is_set (pages) then return pages; end -- if no page numbers then we're done while true do pattern = pages:match("%[(%w*:?//[^ ]+%s+)[%w%d].*%]"); -- pattern is the opening bracket, the URL and following space(s): "[url " if nil == pattern then break; end -- no more URLs pattern = escape_lua_magic_chars (pattern); -- pattern is not a literal string; escape Lua's magic pattern characters pages = pages:gsub(pattern, ""); -- remove as many instances of pattern as possible end pages = pages:gsub("[%[%]]", ""); -- remove the brackets pages = pages:gsub("–", "-" ); -- replace endashes with hyphens pages = pages:gsub("&%w+;", "-" ); -- and replace HTML entities (&ndash; etc.) with hyphens; do we need to replace numerical entities like &#32; and the like? return pages; end --[=[-------------------------< C O I N S _ R E P L A C E _ M A T H _ S T R I P M A R K E R >------------------ There are three options for math markup rendering that depend on the editor's math preference settings. These settings are at [[Special:Preferences#mw-prefsection-rendering]] and are PNG images TeX source MathML with SVG or PNG fallback All three are heavy with HTML and CSS which doesn't belong in the metadata. Without this function, the metadata saved in the raw wikitext contained the rendering determined by the settings of the last editor to save the page. This function gets the rendered form of an equation according to the editor's preference before the page is saved. It then searches the rendering for the text equivalent of the rendered equation and replaces the rendering with that so that the page is saved without extraneous HTML/CSS markup and with a reasonably readable text form of the equation. When a replacement is made, this function returns true and the value with replacement; otherwise false and the initial value. To replace multipe equations it is necessary to call this function from within a loop. ]=] local function coins_replace_math_stripmarker (value) local stripmarker = cfg.stripmarkers['math']; local rendering = value:match (stripmarker); -- is there a math stripmarker if not rendering then -- when value doesn't have a math stripmarker, abandon this test return false, value; end rendering = mw.text.unstripNoWiki (rendering); -- convert stripmarker into rendered value (or nil? ''? when math render error) if rendering:match ('alt="[^"]+"') then -- if PNG math option rendering = rendering:match ('alt="([^"]+)"'); -- extract just the math text elseif rendering:match ('$%s+.+%s+%$') then -- if TeX math option; $ is legit character that is escapes as \$ rendering = rendering:match ('$%s+(.+)%s+%$') -- extract just the math text elseif rendering:match ('<annotation[^>]+>.+</annotation>') then -- if MathML math option rendering = rendering:match ('<annotation[^>]+>(.+)</annotation>') -- extract just the math text else return false, value; -- had math stripmarker but not one of the three defined forms end return true, value:gsub (stripmarker, rendering, 1); end --[[--------------------------< C O I N S _ C L E A N U P >---------------------------------------------------- Cleanup parameter values for the metadata by removing or replacing invisible characters and certain HTML entities. 2015-12-10: there is a bug in mw.text.unstripNoWiki (). It replaces math stripmarkers with the appropriate content when it shouldn't. See https://phabricator.wikimedia.org/T121085 and Wikipedia_talk:Lua#stripmarkers_and_mw.text.unstripNoWiki.28.29 TODO: move the replacement patterns and replacement values into a table in /Configuration similar to the invisible characters table? ]] local function coins_cleanup (value) local replaced = true; -- default state to get the do loop running while replaced do -- loop until all math stripmarkers replaced replaced, value = coins_replace_math_stripmarker (value); -- replace math stripmarker with text representation of the equation end value = value:gsub (cfg.stripmarkers['math'], "MATH RENDER ERROR"); -- one or more couldn't be replaced; insert vague error message value = mw.text.unstripNoWiki (value); -- replace nowiki stripmarkers with their content value = value:gsub ('<span class="nowrap" style="padding%-left:0%.1em;">&#39;(s?)</span>', "'%1"); -- replace {{'}} or {{'s}} with simple apostrophe or apostrophe-s value = value:gsub ('&nbsp;', ' '); -- replace &nbsp; entity with plain space value = value:gsub ('\226\128\138', ' '); -- replace hair space with plain space if not mw.ustring.find (value, cfg.indic_script) then -- don't remove zero-width joiner characters from indic script value = value:gsub ('&zwj;', ''); -- remove &zwj; entities value = mw.ustring.gsub (value, '[\226\128\141\226\128\139\194\173]', ''); -- remove zero-width joiner, zero-width space, soft hyphen end value = value:gsub ('[\009\010\013 ]+', ' '); -- replace horizontal tab, line feed, carriage return with plain space return value; end --[[--------------------------< C O I N S >-------------------------------------------------------------------- COinS metadata (see <http://ocoins.info/>) allows automated tools to parse the citation information. ]] local function COinS(data, class) if 'table' ~= type(data) or nil == next(data) then return ''; end for k, v in pairs (data) do -- spin through all of the metadata parameter values if 'ID_list' ~= k and 'Authors' ~= k then -- except the ID_list and Author tables (author nowiki stripmarker done when Author table processed) data[k] = coins_cleanup (v); end end local ctx_ver = "Z39.88-2004"; -- treat table strictly as an array with only set values. local OCinSoutput = setmetatable( {}, { __newindex = function(self, key, value) if is_set(value) then rawset( self, #self+1, table.concat{ key, '=', mw.uri.encode( remove_wiki_link( value ) ) } ); end end }); if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn', 'journal', 'news', 'magazine'}) or (in_array (class, {'conference', 'interview', 'map', 'press release', 'web'}) and is_set(data.Periodical)) or ('citation' == class and is_set(data.Periodical) and not is_set (data.Encyclopedia)) then OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:journal"; -- journal metadata identifier if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) then -- set genre according to the type of citation template we are rendering OCinSoutput["rft.genre"] = "preprint"; -- cite arxiv, cite biorxiv, cite citeseerx, cite medrxiv, cite ssrn elseif 'conference' == class then OCinSoutput["rft.genre"] = "conference"; -- cite conference (when Periodical set) elseif 'web' == class then OCinSoutput["rft.genre"] = "unknown"; -- cite web (when Periodical set) else OCinSoutput["rft.genre"] = "article"; -- journal and other 'periodical' articles end OCinSoutput["rft.jtitle"] = data.Periodical; -- journal only OCinSoutput["rft.atitle"] = data.Title; -- 'periodical' article titles -- these used only for periodicals OCinSoutput["rft.ssn"] = data.Season; -- keywords: winter, spring, summer, fall OCinSoutput["rft.quarter"] = data.Quarter; -- single digits 1->first quarter, etc. OCinSoutput["rft.chron"] = data.Chron; -- free-form date components OCinSoutput["rft.volume"] = data.Volume; -- does not apply to books OCinSoutput["rft.issue"] = data.Issue; OCinSoutput['rft.artnum'] = data.ArticleNumber; -- {{cite journal}} only OCinSoutput["rft.pages"] = data.Pages; -- also used in book metadata elseif 'thesis' ~= class then -- all others except cite thesis are treated as 'book' metadata; genre distinguishes OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:book"; -- book metadata identifier if 'report' == class or 'techreport' == class then -- cite report and cite techreport OCinSoutput["rft.genre"] = "report"; elseif 'conference' == class then -- cite conference when Periodical not set OCinSoutput["rft.genre"] = "conference"; OCinSoutput["rft.atitle"] = data.Chapter; -- conference paper as chapter in proceedings (book) elseif in_array (class, {'book', 'citation', 'encyclopaedia', 'interview', 'map'}) then if is_set (data.Chapter) then OCinSoutput["rft.genre"] = "bookitem"; OCinSoutput["rft.atitle"] = data.Chapter; -- book chapter, encyclopedia article, interview in a book, or map title else if 'map' == class or 'interview' == class then OCinSoutput["rft.genre"] = 'unknown'; -- standalone map or interview else OCinSoutput["rft.genre"] = 'book'; -- book and encyclopedia end end else -- {'audio-visual', 'AV-media-notes', 'DVD-notes', 'episode', 'interview', 'mailinglist', 'map', 'newsgroup', 'podcast', 'press release', 'serial', 'sign', 'speech', 'web'} OCinSoutput["rft.genre"] = "unknown"; end OCinSoutput["rft.btitle"] = data.Title; -- book only OCinSoutput["rft.place"] = data.PublicationPlace; -- book only OCinSoutput["rft.series"] = data.Series; -- book only OCinSoutput["rft.pages"] = data.Pages; -- book, journal OCinSoutput["rft.edition"] = data.Edition; -- book only OCinSoutput["rft.pub"] = data.PublisherName; -- book and dissertation else -- cite thesis OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:dissertation"; -- dissertation metadata identifier OCinSoutput["rft.title"] = data.Title; -- dissertation (also patent but that is not yet supported) OCinSoutput["rft.degree"] = data.Degree; -- dissertation only OCinSoutput['rft.inst'] = data.PublisherName; -- book and dissertation end -- NB. Not currently supported are "info:ofi/fmt:kev:mtx:patent", "info:ofi/fmt:kev:mtx:dc", "info:ofi/fmt:kev:mtx:sch_svc", "info:ofi/fmt:kev:mtx:ctx" -- and now common parameters (as much as possible) OCinSoutput["rft.date"] = data.Date; -- book, journal, dissertation for k, v in pairs( data.ID_list ) do -- what to do about these? For now assume that they are common to all? if k == 'ISBN' then v = v:gsub( "[^-0-9X]", "" ); end local id = cfg.id_handlers[k].COinS; if string.sub( id or "", 1, 4 ) == 'info' then -- for ids that are in the info:registry OCinSoutput["rft_id"] = table.concat{ id, "/", v }; elseif string.sub (id or "", 1, 3 ) == 'rft' then -- for isbn, issn, eissn, etc. that have defined COinS keywords OCinSoutput[ id ] = v; elseif 'url' == id then -- for urls that are assembled in ~/Identifiers; |asin= and |ol= OCinSoutput["rft_id"] = table.concat ({data.ID_list[k], "#id-name=", cfg.id_handlers[k].label}); elseif id then -- when cfg.id_handlers[k].COinS is not nil so urls created here OCinSoutput["rft_id"] = table.concat{ cfg.id_handlers[k].prefix, v, cfg.id_handlers[k].suffix or '', "#id-name=", cfg.id_handlers[k].label }; -- others; provide a URL and indicate identifier name as #fragment (human-readable, but transparent to browsers) end end local last, first; for k, v in ipairs( data.Authors ) do last, first = coins_cleanup (v.last), coins_cleanup (v.first or ''); -- replace any nowiki stripmarkers, non-printing or invisible characters if k == 1 then -- for the first author name only if is_set(last) and is_set(first) then -- set these COinS values if |first= and |last= specify the first author name OCinSoutput["rft.aulast"] = last; -- book, journal, dissertation OCinSoutput["rft.aufirst"] = first; -- book, journal, dissertation elseif is_set(last) then OCinSoutput["rft.au"] = last; -- book, journal, dissertation -- otherwise use this form for the first name end else -- for all other authors if is_set(last) and is_set(first) then OCinSoutput["rft.au"] = table.concat{ last, ", ", first }; -- book, journal, dissertation elseif is_set(last) then OCinSoutput["rft.au"] = last; -- book, journal, dissertation end -- TODO: At present we do not report "et al.". Add anything special if this condition applies? end end OCinSoutput.rft_id = data.URL; OCinSoutput.rfr_id = table.concat{ "info:sid/", mw.site.server:match( "[^/]*$" ), ":", data.RawPage }; -- TODO: Add optional extra info: -- rfr_dat=#REVISION<version> (referrer private data) -- ctx_id=<data.RawPage>#<ref> (identifier for the context object) -- ctx_tim=<ts> (timestamp in format yyyy-mm-ddThh:mm:ssTZD or yyyy-mm-dd) -- ctx_enc=info:ofi/enc:UTF-8 (character encoding) OCinSoutput = setmetatable( OCinSoutput, nil ); -- sort with version string always first, and combine. -- table.sort( OCinSoutput ); table.insert( OCinSoutput, 1, "ctx_ver=" .. ctx_ver ); -- such as "Z39.88-2004" return table.concat(OCinSoutput, "&"); end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) cfg = cfg_table_ptr; has_accept_as_written = utilities_page_ptr.has_accept_as_written; -- import functions from selected Module:Citation/CS1/Utilities module is_set = utilities_page_ptr.is_set; in_array = utilities_page_ptr.in_array; remove_wiki_link = utilities_page_ptr.remove_wiki_link; strip_apostrophe_markup = utilities_page_ptr.strip_apostrophe_markup; end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { make_coins_title = make_coins_title, get_coins_pages = get_coins_pages, COinS = COinS, set_selected_modules = set_selected_modules, } 4fe549c532af319223cc4d9da2c6d33a786131c1 Module:Citation/CS1/Date validation 828 893 1976 2023-08-12T19:19:06Z wikipedia>Trappist the monk 0 sync from sandbox; Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local add_prop_cat, is_set, in_array, set_message, substitute, wrap_style; -- imported functions from selected Module:Citation/CS1/Utilities local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration --[[--------------------------< F I L E - S C O P E D E C L A R A T I O N S >-------------------------------- File-scope variables are declared here ]] local lang_object = mw.getContentLanguage(); -- used by is_valid_accessdate(), is_valid_year(), date_name_xlate(); TODO: move to ~/Configuration? local year_limit; -- used by is_valid_year() --[=[-------------------------< I S _ V A L I D _ A C C E S S D A T E >---------------------------------------- returns true if: Wikipedia start date <= accessdate < today + 2 days Wikipedia start date is 2001-01-15T00:00:00 UTC which is 979516800 seconds after 1970-01-01T00:00:00 UTC (the start of Unix time) accessdate is the date provided in |access-date= at time 00:00:00 UTC today is the current date at time 00:00:00 UTC plus 48 hours if today is 2015-01-01T00:00:00 then adding 24 hours gives 2015-01-02T00:00:00 – one second more than today adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow This function does not work if it is fed month names for languages other than English. Wikimedia #time: parser apparently doesn't understand non-English date month names. This function will always return false when the date contains a non-English month name because good1 is false after the call to lang.formatDate(). To get around that call this function with YYYY-MM-DD format dates. ]=] local function is_valid_accessdate (accessdate) local good1, good2; local access_ts, tomorrow_ts; -- to hold Unix time stamps representing the dates good1, access_ts = pcall (lang_object.formatDate, lang_object, 'U', accessdate ); -- convert accessdate value to Unix timestamp good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which which tonumber() may not understand access_ts = tonumber (access_ts) or lang_object:parseFormattedNumber (access_ts); -- convert to numbers for the comparison; tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts); else return false; -- one or both failed to convert to Unix time stamp end if 979516800 <= access_ts and access_ts < tomorrow_ts then -- Wikipedia start date <= accessdate < tomorrow's date return true; else return false; -- accessdate out of range end end --[[--------------------------< G E T _ M O N T H _ N U M B E R >---------------------------------------------- returns a number according to the month in a date: 1 for January, etc. Capitalization and spelling must be correct. If not a valid month, returns 0 ]] local function get_month_number (month) return cfg.date_names['local'].long[month] or cfg.date_names['local'].short[month] or -- look for local names first cfg.date_names['en'].long[month] or cfg.date_names['en'].short[month] or -- failing that, look for English names 0; -- not a recognized month name end --[[--------------------------< G E T _ S E A S O N _ N U M B E R >-------------------------------------------- returns a number according to the sequence of seasons in a year: 21 for Spring, etc. Capitalization and spelling must be correct. If not a valid season, returns 0. 21-24 = Spring, Summer, Autumn, Winter, independent of “Hemisphere” returns 0 when <param> is not |date= Season numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons. EDTF does support the distinction between north and south hemisphere seasons but cs1|2 has no way to make that distinction. These additional divisions not currently supported: 25-28 = Spring - Northern Hemisphere, Summer- Northern Hemisphere, Autumn - Northern Hemisphere, Winter - Northern Hemisphere 29-32 = Spring – Southern Hemisphere, Summer– Southern Hemisphere, Autumn – Southern Hemisphere, Winter - Southern Hemisphere 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_season_number (season, param) if 'date' ~= param then return 0; -- season dates only supported by |date= end return cfg.date_names['local'].season[season] or -- look for local names first cfg.date_names['en'].season[season] or -- failing that, look for English names 0; -- not a recognized season name end --[[--------------------------< G E T _ Q U A R T E R _ N U M B E R >------------------------------------------ returns a number according to the sequence of quarters in a year: 33 for first quarter, etc. Capitalization and spelling must be correct. If not a valid quarter, returns 0. 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) returns 0 when <param> is not |date= Quarter numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons and quarters. These additional divisions not currently supported: 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_quarter_number (quarter, param) if 'date' ~= param then return 0; -- quarter dates only supported by |date= end quarter = mw.ustring.gsub (quarter, ' +', ' '); -- special case replace multiple space chars with a single space char return cfg.date_names['local'].quarter[quarter] or -- look for local names first cfg.date_names['en'].quarter[quarter] or -- failing that, look for English names 0; -- not a recognized quarter name end --[[--------------------------< G E T _ P R O P E R _ N A M E _ N U M B E R >---------------------------------- returns a non-zero number if date contains a recognized proper-name. Capitalization and spelling must be correct. returns 0 when <param> is not |date= ]] local function get_proper_name_number (name, param) if 'date' ~= param then return 0; -- proper-name dates only supported by |date= end return cfg.date_names['local'].named[name] or -- look for local names dates first cfg.date_names['en'].named[name] or -- failing that, look for English names 0; -- not a recognized named date end --[[--------------------------< G E T _ E L E M E N T _ N U M B E R <------------------------------------------ returns true if month or season or quarter or proper name is valid (properly spelled, capitalized, abbreviated) ]] local function get_element_number (element, param) local num; local funcs = {get_month_number, get_season_number, get_quarter_number, get_proper_name_number}; -- list of functions to execute in order for _, func in ipairs (funcs) do -- spin through the function list num = func (element, param); -- call the function and get the returned number if 0 ~= num then -- non-zero when valid month season quarter return num; -- return that number end end return nil; -- not valid end --[[--------------------------< I S _ V A L I D _ Y E A R >---------------------------------------------------- Function gets current year from the server and compares it to year from a citation parameter. Years more than one year in the future are not acceptable. Special case for |pmc-embargo-date=: years more than two years in the future are not acceptable ]] local function is_valid_year (year, param) if not is_set (year_limit) then year_limit = tonumber(os.date("%Y"))+1; -- global variable so we only have to fetch it once end year = tonumber (year) or lang_object:parseFormattedNumber (year); -- convert to number for the comparison if year and (100 > year) then -- years less than 100 not supported return false; end if 'pmc-embargo-date' == param then -- special case for |pmc-embargo-date= return year and (year <= tonumber(os.date("%Y"))+2) or false; -- years more than two years in the future are not accepted end return year and (year <= year_limit) or false; end --[[--------------------------< I S _ V A L I D _ D A T E >---------------------------------------------------- Returns true if day is less than or equal to the number of days in month and year is no farther into the future than next year; else returns false. Assumes Julian calendar prior to year 1582 and Gregorian calendar thereafter. Accounts for Julian calendar leap years before 1582 and Gregorian leap years after 1582. Where the two calendars overlap (1582 to approximately 1923) dates are assumed to be Gregorian. ]] local function is_valid_date (year, month, day, param) local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; local month_length; if not is_valid_year (year, param) then -- no farther into the future than next year except |pmc-embargo-date= no more than two years in the future return false; end month = tonumber (month); -- required for YYYY-MM-DD dates if (2 == month) then -- if February month_length = 28; -- then 28 days unless if 1582 > tonumber(year) then -- Julian calendar if 0 == (year%4) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end else -- Gregorian calendar if (0 == (year%4) and (0 ~= (year%100) or 0 == (year%400))) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end end else month_length = days_in_month[month]; end if tonumber (day) > month_length then return false; end return true; end --[[--------------------------< I S _ V A L I D _ M O N T H _ R A N G E _ S T Y L E >-------------------------- Months in a range are expected to have the same style: Jan–Mar or October–December but not February–Mar or Jul–August. This function looks in cfg.date_names{} to see if both month names are listed in the long subtable or both are listed in the short subtable. When both have the same style (both are listed in the same table), returns true; false else ]] local function is_valid_month_range_style (month1, month2) if (cfg.date_names.en.long[month1] and cfg.date_names.en.long[month2]) or -- are both English names listed in the long subtable? (cfg.date_names.en.short[month1] and cfg.date_names.en.short[month2]) or -- are both English names listed in the short subtable? (cfg.date_names['local'].long[month1] and cfg.date_names['local'].long[month2]) or -- are both local names listed in the long subtable? (cfg.date_names['local'].short[month1] and cfg.date_names['local'].short[month2]) then -- are both local names listed in the short subtable? return true; end return false; -- names are mixed end --[[--------------------------< I S _ V A L I D _ M O N T H _ S E A S O N _ R A N G E >------------------------ Check a pair of months or seasons to see if both are valid members of a month or season pair. Month pairs are expected to be left to right, earliest to latest in time. All season ranges are accepted as valid because there are publishers out there who have published a Summer–Spring YYYY issue, hence treat as ok ]] local function is_valid_month_season_range(range_start, range_end, param) local range_start_number = get_month_number (range_start); local range_end_number; if 0 == range_start_number then -- is this a month range? range_start_number = get_season_number (range_start, param); -- not a month; is it a season? get start season number range_end_number = get_season_number (range_end, param); -- get end season number if (0 ~= range_start_number) and (0 ~= range_end_number) and (range_start_number ~= range_end_number) then return true; -- any season pairing is accepted except when both are the same end return false; -- range_start and/or range_end is not a season end -- here when range_start is a month range_end_number = get_month_number (range_end); -- get end month number if range_start_number < range_end_number and -- range_start is a month; does range_start precede range_end? is_valid_month_range_style (range_start, range_end) then -- do months have the same style? return true; -- proper order and same style end return false; -- range_start month number is greater than or equal to range end number; or range end isn't a month end --[[--------------------------< M A K E _ C O I N S _ D A T E >------------------------------------------------ This function receives a table of date parts for one or two dates and an empty table reference declared in Module:Citation/CS1. The function is called only for |date= parameters and only if the |date=<value> is determined to be a valid date format. The question of what to do with invalid date formats is not answered here. The date parts in the input table are converted to an ISO 8601 conforming date string: single whole dates: yyyy-mm-dd month and year dates: yyyy-mm year dates: yyyy ranges: yyyy-mm-dd/yyyy-mm-dd yyyy-mm/yyyy-mm yyyy/yyyy Dates in the Julian calendar are reduced to year or year/year so that we don't have to do calendar conversion from Julian to Proleptic Gregorian. The input table has: year, year2 – always present; if before 1582, ignore months and days if present month, month2 – 0 if not provided, 1-12 for months, 21-24 for seasons; 99 Christmas day, day2 – 0 if not provided, 1-31 for days the output table receives: rftdate: an ISO 8601 formatted date rftchron: a free-form version of the date, usually without year which is in rftdate (season ranges and proper-name dates) rftssn: one of four season keywords: winter, spring, summer, fall (lowercase) rftquarter: one of four values: 1, 2, 3, 4 ]] local function make_COinS_date (input, tCOinS_date) local date; -- one date or first date in a range local date2 = ''; -- end of range date input.year = tonumber (input.year) or lang_object:parseFormattedNumber (input.year); -- language-aware tonumber() input.year2 = tonumber (input.year2) or lang_object:parseFormattedNumber (input.year2); -- COinS dates are pseudo-ISO 8601 so convert to Arabic numerals -- start temporary Julian / Gregorian calendar uncertainty detection local year = input.year; -- this temporary code to determine the extent of sources dated to the Julian/Gregorian local month = tonumber(input.month); -- interstice 1 October 1582 – 1 January 1926 local day = tonumber (input.day); if (0 ~= day) and -- day must have a value for this to be a whole date (((1582 == year) and (10 <= month) and (12 >= month)) or -- any whole 1582 date from 1 October to 31 December or ((1926 == year) and (1 == month) and (1 == input.day)) or -- 1 January 1926 or ((1582 < year) and (1925 >= year))) then -- any date 1 January 1583 – 31 December 1925 tCOinS_date.inter_cal_cat = true; -- set category flag true end -- end temporary Julian / Gregorian calendar uncertainty detection if ((1582 == year) and (10 > month)) or (1582 > year) then -- if a Julian calendar date tCOinS_date.rftdate = tostring (input.year); -- &rft.date gets year only return; -- done end -- here for all forms of Gregorian dates if 20 < tonumber (input.month) then -- if season, quarter, or proper-name date date = input.year; -- &rft.date gets year only if 0 ~= input.year2 and input.year ~= input.year2 then -- if a range, only the second year portion when not the same as range start year date = string.format ('%.4d/%.4d', input.year, input.year2) -- assemble the date range end local season = {[24] = 'winter', [21] = 'spring', [22] = 'summer', [23] = 'fall', [33] = '1', [34] = '2', [35] = '3', [36] = '4', [98] = 'Easter', [99] = 'Christmas'}; -- seasons lowercase, no autumn; proper-names use title case if 0 == input.month2 then -- single season, quarter, or proper-name date if 40 < tonumber(input.month) then tCOinS_date.rftchron = season[input.month]; -- proper-name date; used in journal metadata only elseif 30 < tonumber(input.month) then tCOinS_date.rftquarter = season[input.month]; -- quarter date; used in journal metadata only else tCOinS_date.rftssn = season[input.month]; -- season date; used in journal metadata only end else -- season ranges are lumped into &rft.chron; &rft.ssn and &rft.quarter are left blank if input.year ~= input.year2 then -- season year – season year range or season year–year if 0 ~= input.month2 then tCOinS_date.rftchron = string.format ('%s %s – %s %s', season[input.month], input.year, season[input.month2], input.year2); -- used in journal metadata only end else -- season–season year range tCOinS_date.rftchron = season[input.month] .. '–' .. season[input.month2]; -- season–season year range; used in journal metadata only end end tCOinS_date.rftdate = tostring (date); return; -- done end -- here for gregorian calendar dates if 0 ~= input.day then date = string.format ('%s-%.2d-%.2d', input.year, tonumber(input.month), tonumber(input.day)); -- whole date elseif 0 ~= input.month then date = string.format ('%s-%.2d', input.year, tonumber(input.month)); -- year and month else date = string.format ('%s', input.year); -- just year end if 0 ~= input.year2 then if 0 ~= input.day2 then date2 = string.format ('/%s-%.2d-%.2d', input.year2, tonumber(input.month2), tonumber(input.day2)); -- whole date elseif 0 ~= input.month2 then date2 = string.format ('/%s-%.2d', input.year2, tonumber(input.month2)); -- year and month else date2 = string.format ('/%s', input.year2); -- just year end end tCOinS_date.rftdate = date .. date2; -- date2 has the '/' separator return; end --[[--------------------------< P A T T E R N S >-------------------------------------------------------------- this is the list of patterns for date formats that this module recognizes. Approximately the first half of these patterns represent formats that might be reformatted into another format. Those that might be reformatted have 'indicator' letters that identify the content of the matching capture: 'd' (day), 'm' (month), 'a' (anchor year), 'y' (year); second day, month, year have a '2' suffix. These patterns are used for both date validation and for reformatting. This table should not be moved to ~/Configuration because changes to this table require changes to check_date() and to reformatter() and reformat_date() ]] local patterns = { -- year-initial numerical year-month-day ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, -- month-initial: month day, year ['Mdy'] = {'^(%D-) +([1-9]%d?), +((%d%d%d%d?)%a?)$', 'm', 'd', 'a', 'y'}, -- month-initial day range: month day–day, year; days are separated by endash ['Md-dy'] = {'^(%D-) +([1-9]%d?)[%-–]([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'd2', 'a', 'y'}, -- day-initial: day month year ['dMy'] = {'^([1-9]%d?) +(%D-) +((%d%d%d%d?)%a?)$', 'd', 'm', 'a', 'y'}, -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed; not supported at en.wiki -- ['yMd'] = {'^((%d%d%d%d?)%a?) +(%D-) +(%d%d?)$', 'a', 'y', 'm', 'd'}, -- day-range-initial: day–day month year; days are separated by endash ['d-dMy'] = {'^([1-9]%d?)[%-–]([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'd2', 'm', 'a', 'y'}, -- day initial month-day-range: day month - day month year; uses spaced endash ['dM-dMy'] = {'^([1-9]%d?) +(%D-) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'd2', 'm2', 'a', 'y'}, -- month initial month-day-range: month day – month day, year; uses spaced endash ['Md-Mdy'] = {'^(%D-) +([1-9]%d?) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$','m', 'd', 'm2', 'd2', 'a', 'y'}, -- day initial month-day-year-range: day month year - day month year; uses spaced endash ['dMy-dMy'] = {'^([1-9]%d?) +(%D-) +(%d%d%d%d) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'y', 'd2', 'm2', 'a', 'y2'}, -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash ['Mdy-Mdy'] = {'^(%D-) +([1-9]%d?), +(%d%d%d%d) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'y', 'm2', 'd2', 'a', 'y2'}, -- these date formats cannot be converted, per se, but month name can be rendered short or long -- month/season year - month/season year; separated by spaced endash ['My-My'] = {'^(%D-) +(%d%d%d%d) +[%-–] +(%D-) +((%d%d%d%d)%a?)$', 'm', 'y', 'm2', 'a', 'y2'}, -- month/season range year; months separated by endash ['M-My'] = {'^(%D-)[%-–](%D-) +((%d%d%d%d)%a?)$', 'm', 'm2', 'a', 'y'}, -- month/season year or proper-name year; quarter year when First Quarter YYYY etc. ['My'] = {'^([^%d–]-) +((%d%d%d%d)%a?)$', 'm', 'a', 'y'}, -- this way because endash is a member of %D; %D- will match January–March 2019 when it shouldn't -- these date formats cannot be converted ['Sy4-y2'] = {'^(%D-) +((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash ['Sy-y'] = {'^(%D-) +(%d%d%d%d)[%-–]((%d%d%d%d)%a?)$'}, -- special case Winter/Summer year-year; year separated with unspaced endash ['y-y'] = {'^(%d%d%d%d?)[%-–]((%d%d%d%d?)%a?)$'}, -- year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 ['y4-y2'] = {'^((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- year range: YYYY–YY; separated by unspaced endash ['y'] = {'^((%d%d%d%d?)%a?)$'}, -- year; here accept either YYY or YYYY } --[[--------------------------< I S _ V A L I D _ E M B A R G O _ D A T E >------------------------------------ returns true and date value if that value has proper dmy, mdy, ymd format. returns false and 9999 (embargoed forever) when date value is not proper format; assumes that when |pmc-embargo-date= is set, the editor intended to embargo a PMC but |pmc-embargo-date= does not hold a single date. ]] local function is_valid_embargo_date (v) if v:match (patterns['ymd'][1]) or -- ymd v:match (patterns['Mdy'][1]) or -- dmy v:match (patterns['dMy'][1]) then -- mdy return true, v; end return false, '9999'; -- if here not good date so return false and set embargo date to long time in future end --[[--------------------------< C H E C K _ D A T E >---------------------------------------------------------- Check date format to see that it is one of the formats approved by WP:DATESNO or WP:DATERANGE. Exception: only allowed range separator is endash. Additionally, check the date to see that it is a real date: no 31 in 30-day months; no 29 February when not a leap year. Months, both long-form and three character abbreviations, and seasons must be spelled correctly. Future years beyond next year are not allowed. If the date fails the format tests, this function returns false and does not return values for anchor_year and COinS_date. When this happens, the date parameter is (DEBUG: not?) used in the COinS metadata and the CITEREF identifier gets its year from the year parameter if present otherwise CITEREF does not get a date value. Inputs: date_string - date string from date-holding parameters (date, year, publication-date, access-date, pmc-embargo-date, archive-date, lay-date) Returns: false if date string is not a real date; else true, anchor_year, COinS_date anchor_year can be used in CITEREF anchors COinS_date is ISO 8601 format date; see make_COInS_date() ]] local function check_date (date_string, param, tCOinS_date) local year; -- assume that year2, months, and days are not used; local year2 = 0; -- second year in a year range local month = 0; local month2 = 0; -- second month in a month range local day = 0; local day2 = 0; -- second day in a day range local anchor_year; local coins_date; if date_string:match (patterns['ymd'][1]) then -- year-initial numerical year month day format year, month, day = date_string:match (patterns['ymd'][1]); if 12 < tonumber(month) or 1 > tonumber(month) or 1582 > tonumber(year) or 0 == tonumber(day) then return false; end -- month or day number not valid or not Gregorian calendar anchor_year = year; elseif mw.ustring.match(date_string, patterns['Mdy'][1]) then -- month-initial: month day, year month, day, anchor_year, year = mw.ustring.match(date_string, patterns['Mdy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months elseif mw.ustring.match(date_string, patterns['Md-dy'][1]) then -- month-initial day range: month day–day, year; days are separated by endash month, day, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-dy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2=month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dMy'][1]) then -- day-initial: day month year day, month, anchor_year, year = mw.ustring.match(date_string, patterns['dMy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months --[[ NOT supported at en.wiki elseif mw.ustring.match(date_string, patterns['yMd'][1]) then -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed anchor_year, year, month, day = mw.ustring.match(date_string, patterns['yMd'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months -- end NOT supported at en.wiki ]] elseif mw.ustring.match(date_string, patterns['d-dMy'][1]) then -- day-range-initial: day–day month year; days are separated by endash day, day2, month, anchor_year, year = mw.ustring.match(date_string, patterns['d-dMy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2 = month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dM-dMy'][1]) then -- day initial month-day-range: day month - day month year; uses spaced endash day, month, day2, month2, anchor_year, year = mw.ustring.match(date_string, patterns['dM-dMy'][1]); if (not is_valid_month_season_range(month, month2)) or not is_valid_year(year) then return false; end -- date range order is left to right: earlier to later; month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['Md-Mdy'][1]) then -- month initial month-day-range: month day – month day, year; uses spaced endash month, day, month2, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-Mdy'][1]); if (not is_valid_month_season_range(month, month2, param)) or not is_valid_year(year) then return false; end month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['dMy-dMy'][1]) then -- day initial month-day-year-range: day month year - day month year; uses spaced endash day, month, year, day2, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['dMy-dMy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number (month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]) then -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash month, day, year, month2, day2, anchor_year, year2 = mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Sy4-y2'][1]) then -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash local century; month, year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy4-y2'][1]); if 'Winter' ~= month and 'Summer' ~= month then return false end; -- 'month' can only be Winter or Summer anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years year2 = century..year2; -- add the century to year2 for comparisons if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year month = get_season_number(month, param); elseif mw.ustring.match(date_string, patterns['Sy-y'][1]) then -- special case Winter/Summer year-year; year separated with unspaced endash month, year, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy-y'][1]); month = get_season_number (month, param); -- <month> can only be winter or summer; also for metadata if (month ~= cfg.date_names['en'].season['Winter']) and (month ~= cfg.date_names['en'].season['Summer']) then return false; -- not Summer or Winter; abandon end anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['My-My'][1]) then -- month/season year - month/season year; separated by spaced endash month, year, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['My-My'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year if 0 ~= get_month_number(month) and 0 ~= get_month_number(month2) and is_valid_month_range_style(month, month2) then -- both must be month year, same month style month = get_month_number(month); month2 = get_month_number(month2); elseif 0 ~= get_season_number(month, param) and 0 ~= get_season_number(month2, param) then -- both must be season year, not mixed month = get_season_number(month, param); month2 = get_season_number(month2, param); else return false; end elseif mw.ustring.match(date_string, patterns['M-My'][1]) then -- month/season range year; months separated by endash month, month2, anchor_year, year = mw.ustring.match(date_string, patterns['M-My'][1]); if (not is_valid_month_season_range(month, month2, param)) or (not is_valid_year(year)) then return false; end if 0 ~= get_month_number(month) then -- determined to be a valid range so just check this one to know if month or season month = get_month_number(month); month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end else month = get_season_number(month, param); month2 = get_season_number(month2, param); end year2 = year; elseif mw.ustring.match(date_string, patterns['My'][1]) then -- month/season/quarter/proper-name year month, anchor_year, year = mw.ustring.match(date_string, patterns['My'][1]); if not is_valid_year(year) then return false; end month = get_element_number(month, param); -- get month season quarter proper-name number or nil if not month then return false; end -- not valid whatever it is elseif mw.ustring.match(date_string, patterns['y-y'][1]) then -- Year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 year, anchor_year, year2 = mw.ustring.match(date_string, patterns['y-y'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['y4-y2'][1]) then -- Year range: YYYY–YY; separated by unspaced endash local century; year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['y4-y2'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if 13 > tonumber(year2) then return false; end -- don't allow 2003-05 which might be May 2003 year2 = century .. year2; -- add the century to year2 for comparisons if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year if in_array (param, {'date', 'publication-date', 'year'}) then -- here when 'valid' abbreviated year range; if one of these parameters add_prop_cat ('year-range-abbreviated'); -- add properties cat end elseif mw.ustring.match(date_string, patterns['y'][1]) then -- year; here accept either YYY or YYYY anchor_year, year = mw.ustring.match(date_string, patterns['y'][1]); if false == is_valid_year(year) then return false; end else return false; -- date format not one of the MOS:DATE approved formats end if param ~= 'date' then -- CITEREF disambiguation only allowed in |date=; |year= & |publication-date= promote to date if anchor_year:match ('%l$') then return false; end end if 'access-date' == param then -- test access-date here because we have numerical date parts if 0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required 0 == year2 and 0 == month2 and 0 == day2 then -- none of these; access-date must not be a range if not is_valid_accessdate(year .. '-' .. month .. '-' .. day) then return false; -- return false when access-date out of bounds end else return false; -- return false when access-date is a range of two dates end end if 'archive-date' == param then -- test archive-date here because we have numerical date parts if not (0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required 0 == year2 and 0 == month2 and 0 == day2) then -- none of these; archive-date must not be a range return false; -- return false when archive-date is a range of two dates end end local result=true; -- check whole dates for validity; assume true because not all dates will go through this test if 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 == day2 then -- YMD (simple whole date) result = is_valid_date (year, month, day, param); -- <param> for |pmc-embargo-date= elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 ~= day2 then -- YMD-d (day range) result = is_valid_date (year, month, day); result = result and is_valid_date (year, month, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-md (day month range) result = is_valid_date (year, month, day); result = result and is_valid_date (year, month2, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 ~= year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-ymd (day month year range) result = is_valid_date(year, month, day); result = result and is_valid_date(year2, month2, day2); end if false == result then return false; end if nil ~= tCOinS_date then -- this table only passed into this function when testing |date= parameter values make_COinS_date ({year = year, month = month, day = day, year2 = year2, month2 = month2, day2 = day2}, tCOinS_date); -- make an ISO 8601 date string for COinS end return true, anchor_year; -- format is good and date string represents a real date end --[[--------------------------< D A T E S >-------------------------------------------------------------------- Cycle the date-holding parameters in passed table date_parameters_list through check_date() to check compliance with MOS:DATE. For all valid dates, check_date() returns true. The |date= parameter test is unique, it is the only date holding parameter from which values for anchor_year (used in CITEREF identifiers) and COinS_date (used in the COinS metadata) are derived. The |date= parameter is the only date-holding parameter that is allowed to contain the no-date keywords "n.d." or "nd" (without quotes). Unlike most error messages created in this module, only one error message is created by this function. Because all of the date holding parameters are processed serially, parameters with errors are added to the <error_list> sequence table as the dates are tested. ]] local function dates(date_parameters_list, tCOinS_date, error_list) local anchor_year; -- will return as nil if the date being tested is not |date= local COinS_date; -- will return as nil if the date being tested is not |date= local embargo_date; -- if embargo date is a good dmy, mdy, ymd date then holds original value else reset to 9999 local good_date = false; for k, v in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(v.val) then -- if the parameter has a value v.val = mw.ustring.gsub(v.val, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9 if v.val:match("^c%. [1-9]%d%d%d?%a?$") then -- special case for c. year or with or without CITEREF disambiguator - only |date= and |year= local year = v.val:match("c%. ([1-9]%d%d%d?)%a?"); -- get the year portion so it can be tested if 'date' == k then anchor_year, COinS_date = v.val:match("((c%. [1-9]%d%d%d?)%a?)"); -- anchor year and COinS_date only from |date= parameter good_date = is_valid_year(year); elseif 'year' == k then good_date = is_valid_year(year); end elseif 'date' == k then -- if the parameter is |date= if v.val:match("^n%.d%.%a?$") then -- ToDo: I18N -- if |date=n.d. with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((n%.d%.)%a?)"); -- ToDo: I18N -- "n.d."; no error when date parameter is set to no date elseif v.val:match("^nd%a?$") then -- ToDo: I18N -- if |date=nd with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((nd)%a?)"); -- ToDo: I18N -- "nd"; no error when date parameter is set to no date else good_date, anchor_year, COinS_date = check_date (v.val, k, tCOinS_date); -- go test the date end elseif 'year' == k then -- if the parameter is |year= it should hold only a year value if v.val:match("^[1-9]%d%d%d?%a?$") then -- if |year = 3 or 4 digits only with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((%d+)%a?)"); end elseif 'pmc-embargo-date' == k then -- if the parameter is |pmc-embargo-date= good_date = check_date (v.val, k); -- go test the date if true == good_date then -- if the date is a valid date good_date, embargo_date = is_valid_embargo_date (v.val); -- is |pmc-embargo-date= date a single dmy, mdy, or ymd formatted date? yes: returns embargo date; no: returns 9999 end else -- any other date-holding parameter good_date = check_date (v.val, k); -- go test the date end if false == good_date then -- assemble one error message so we don't add the tracking category multiple times table.insert (error_list, wrap_style ('parameter', v.name)); -- make parameter name suitable for error message list end end end return anchor_year, embargo_date; -- and done end --[[--------------------------< Y E A R _ D A T E _ C H E C K >------------------------------------------------ Compare the value provided in |year= with the year value(s) provided in |date=. This function sets a local numeric value: 0 - year value does not match the year value in date 1 - (default) year value matches the year value in date or one of the year values when date contains two years 2 - year value matches the year value in date when date is in the form YYYY-MM-DD and year is disambiguated (|year=YYYYx) the numeric value in <result> determines the 'output' if any from this function: 0 – adds error message to error_list sequence table 1 – adds maint cat 2 – does nothing ]] local function year_date_check (year_string, year_origin, date_string, date_origin, error_list) local year; local date1; local date2; local result = 1; -- result of the test; assume that the test passes year = year_string:match ('(%d%d%d%d?)'); if date_string:match ('%d%d%d%d%-%d%d%-%d%d') and year_string:match ('%d%d%d%d%a') then --special case where both date and year are required YYYY-MM-DD and YYYYx date1 = date_string:match ('(%d%d%d%d)'); year = year_string:match ('(%d%d%d%d)'); if year ~= date1 then result = 0; -- years don't match else result = 2; -- years match; but because disambiguated, don't add to maint cat end elseif date_string:match ("%d%d%d%d?.-%d%d%d%d?") then -- any of the standard range formats of date with two three- or four-digit years date1, date2 = date_string:match ("(%d%d%d%d?).-(%d%d%d%d?)"); if year ~= date1 and year ~= date2 then result = 0; end elseif mw.ustring.match(date_string, "%d%d%d%d[%-–]%d%d") then -- YYYY-YY date ranges local century; date1, century, date2 = mw.ustring.match(date_string, "((%d%d)%d%d)[%-–]+(%d%d)"); date2 = century..date2; -- convert YY to YYYY if year ~= date1 and year ~= date2 then result = 0; end elseif date_string:match ("%d%d%d%d?") then -- any of the standard formats of date with one year date1 = date_string:match ("(%d%d%d%d?)"); if year ~= date1 then result = 0; end else -- should never get here; this function called only when no other date errors result = 0; -- no recognizable year in date end if 0 == result then -- year / date mismatch table.insert (error_list, substitute (cfg.messages['mismatch'], {year_origin, date_origin})); -- add error message to error_list sequence table elseif 1 == result then -- redundant year / date set_message ('maint_date_year'); -- add a maint cat end end --[[--------------------------< R E F O R M A T T E R >-------------------------------------------------------- reformat 'date' into new format specified by format_param if pattern_idx (the current format of 'date') can be reformatted. Does the grunt work for reformat_dates(). The table re_formats maps pattern_idx (current format) and format_param (desired format) to a table that holds: format string used by string.format() identifier letters ('d', 'm', 'y', 'd2', 'm2', 'y2') that serve as indexes into a table t{} that holds captures from mw.ustring.match() for the various date parts specified by patterns[pattern_idx][1] Items in patterns{} have the general form: ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, where: ['ymd'] is pattern_idx patterns['ymd'][1] is the match pattern with captures for mw.ustring.match() patterns['ymd'][2] is an indicator letter identifying the content of the first capture patterns['ymd'][3] ... the second capture etc. when a pattern matches a date, the captures are loaded into table t{} in capture order using the idemtifier characters as indexes into t{} For the above, a ymd date is in t{} as: t.y = first capture (year), t.m = second capture (month), t.d = third capture (day) To reformat, this function is called with the pattern_idx that matches the current format of the date and with format_param set to the desired format. This function loads table t{} as described and then calls string.format() with the format string specified by re_format[pattern_idx][format_param][1] using values taken from t{} according to the capture identifier letters specified by patterns[pattern_idx][format_param][n] where n is 2.. ]] local re_formats = { ['ymd'] = { -- date format is ymd; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Mdy'] = { -- date format is Mdy; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['dMy'] = { -- date format is dMy; reformat to: ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Md-dy'] = { -- date format is Md-dy; reformat to: ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- |df=dmy -> d-dMy }, ['d-dMy'] = { -- date format is d-d>y; reformat to: ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- |df=mdy -> Md-dy }, ['dM-dMy'] = { -- date format is dM-dMy; reformat to: ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- |df=mdy -> Md-Mdy }, ['Md-Mdy'] = { -- date format is Md-Mdy; reformat to: ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- |df=dmy -> dM-dMy }, ['dMy-dMy'] = { -- date format is dMy-dMy; reformat to: ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- |df=mdy -> Mdy-Mdy }, ['Mdy-Mdy'] = { -- date format is Mdy-Mdy; reformat to: ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- for long/short reformatting ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- |df=dmy -> dMy-dMy }, ['My-My'] = { -- these for long/short reformatting ['any'] = {'%s %s – %s %s', 'm', 'y', 'm2', 'y2'}, -- dmy/mdy agnostic }, ['M-My'] = { -- these for long/short reformatting ['any'] = {'%s–%s %s', 'm', 'm2', 'y'}, -- dmy/mdy agnostic }, ['My'] = { -- these for long/short reformatting ['any'] = {'%s %s', 'm', 'y'}, -- dmy/mdy agnostic }, -- ['yMd'] = { -- not supported at en.wiki -- ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy -- ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- }, } local function reformatter (date, pattern_idx, format_param, mon_len) if not in_array (pattern_idx, {'ymd', 'Mdy', 'Md-dy', 'dMy', 'yMd', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- not in this set of date format patterns then not a reformattable date end if 'ymd' == format_param and in_array (pattern_idx, {'ymd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- ymd date ranges not supported at en.wiki; no point in reformatting ymd to ymd end if in_array (pattern_idx, {'My', 'M-My', 'My-My'}) then -- these are not dmy/mdy so can't be 'reformatted' into either format_param = 'any'; -- so format-agnostic end -- yMd is not supported at en.wiki; when yMd is supported at your wiki, uncomment the next line -- if 'yMd' == format_param and in_array (pattern_idx, {'yMd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy'}) then -- these formats not convertable; yMd not supported at en.wiki if 'yMd' == format_param then -- yMd not supported at en.wiki; when yMd is supported at your wiki, remove or comment-out this line return; -- not a reformattable date end local c1, c2, c3, c4, c5, c6, c7; -- these hold the captures specified in patterns[pattern_idx][1] c1, c2, c3, c4, c5, c6, c7 = mw.ustring.match (date, patterns[pattern_idx][1]); -- get the captures local t = { -- table that holds k/v pairs of date parts from the captures and patterns[pattern_idx][2..] [patterns[pattern_idx][2]] = c1; -- at minimum there is always one capture with a matching indicator letter [patterns[pattern_idx][3] or 'x'] = c2; -- patterns can have a variable number of captures; each capture requires an indicator letter; [patterns[pattern_idx][4] or 'x'] = c3; -- where there is no capture, there is no indicator letter so n in patterns[pattern_idx][n] will be nil; [patterns[pattern_idx][5] or 'x'] = c4; -- the 'x' here spoofs an indicator letter to prevent 'table index is nil' error [patterns[pattern_idx][6] or 'x'] = c5; [patterns[pattern_idx][7] or 'x'] = c6; [patterns[pattern_idx][8] or 'x'] = c7; }; if t.a then -- if this date has an anchor year capture (all convertable date formats except ymd) if t.y2 then -- for year range date formats t.y2 = t.a; -- use the anchor year capture when reassembling the date else -- here for single date formats (except ymd) t.y = t.a; -- use the anchor year capture when reassembling the date end end if tonumber(t.m) then -- if raw month is a number (converting from ymd) if 's' == mon_len then -- if we are to use abbreviated month names t.m = cfg.date_names['inv_local_short'][tonumber(t.m)]; -- convert it to a month name else t.m = cfg.date_names['inv_local_long'][tonumber(t.m)]; -- convert it to a month name end t.d = t.d:gsub ('0(%d)', '%1'); -- strip leading '0' from day if present elseif 'ymd' == format_param then -- when converting to ymd t.y = t.y:gsub ('%a', ''); -- strip CITREF disambiguator if present; anchor year already known so process can proceed; TODO: maint message? if 1582 > tonumber (t.y) then -- ymd format dates not allowed before 1582 return; end t.m = string.format ('%02d', get_month_number (t.m)); -- make sure that month and day are two digits t.d = string.format ('%02d', t.d); elseif mon_len then -- if mon_len is set to either 'short' or 'long' for _, mon in ipairs ({'m', 'm2'}) do -- because there can be two month names, check both if t[mon] then t[mon] = get_month_number (t[mon]); -- get the month number for this month (is length agnostic) if 0 == t[mon] then return; end -- seasons and named dates can't be converted t[mon] = (('s' == mon_len) and cfg.date_names['inv_local_short'][t[mon]]) or cfg.date_names['inv_local_long'][t[mon]]; -- fetch month name according to length end end end local new_date = string.format (re_formats[pattern_idx][format_param][1], -- format string t[re_formats[pattern_idx][format_param][2]], -- named captures from t{} t[re_formats[pattern_idx][format_param][3]], t[re_formats[pattern_idx][format_param][4]], t[re_formats[pattern_idx][format_param][5]], t[re_formats[pattern_idx][format_param][6]], t[re_formats[pattern_idx][format_param][7]], t[re_formats[pattern_idx][format_param][8]] ); return new_date; end --[[-------------------------< R E F O R M A T _ D A T E S >-------------------------------------------------- Reformats existing dates into the format specified by format. format is one of several manual keywords: dmy, dmy-all, mdy, mdy-all, ymd, ymd-all. The -all version includes access- and archive-dates; otherwise these dates are not reformatted. This function allows automatic date formatting. In ~/Configuration, the article source is searched for one of the {{use xxx dates}} templates. If found, xxx becomes the global date format as xxx-all. If |cs1-dates= in {{use xxx dates}} has legitimate value then that value determines how cs1|2 dates will be rendered. Legitimate values for |cs1-dates= are: l - all dates are rendered with long month names ls - publication dates use long month names; access-/archive-dates use abbreviated month names ly - publication dates use long month names; access-/archive-dates rendered in ymd format s - all dates are rendered with abbreviated (short) month names sy - publication dates use abbreviated month names; access-/archive-dates rendered in ymd format y - all dates are rendered in ymd format the format argument for automatic date formatting will be the format specified by {{use xxx dates}} with the value supplied by |cs1-dates so one of: xxx-l, xxx-ls, xxx-ly, xxx-s, xxx-sy, xxx-y, or simply xxx (|cs1-dates= empty, omitted, or invalid) where xxx shall be either of dmy or mdy. dates are extracted from date_parameters_list, reformatted (if appropriate), and then written back into the list in the new format. Dates in date_parameters_list are presumed here to be valid (no errors). This function returns true when a date has been reformatted, false else. Actual reformatting is done by reformatter(). ]] local function reformat_dates (date_parameters_list, format) local all = false; -- set to false to skip access- and archive-dates local len_p = 'l'; -- default publication date length shall be long local len_a = 'l'; -- default access-/archive-date length shall be long local result = false; local new_date; if format:match('%a+%-all') then -- manual df keyword; auto df keyword when length not specified in {{use xxx dates}}; format = format:match('(%a+)%-all'); -- extract the format all = true; -- all dates are long format dates because this keyword doesn't specify length elseif format:match('%a+%-[lsy][sy]?') then -- auto df keywords; internal only all = true; -- auto df applies to all dates; use length specified by capture len_p for all dates format, len_p, len_a = format:match('(%a+)%-([lsy])([sy]?)'); -- extract the format and length keywords if 'y' == len_p then -- because allowed by MOS:DATEUNIFY (sort of) range dates and My dates not reformatted format = 'ymd'; -- override {{use xxx dates}} elseif (not is_set(len_a)) or (len_p == len_a) then -- no access-/archive-date length specified or same length as publication dates then len_a = len_p; -- in case len_a not set end end -- else only publication dates and they are long for param_name, param_val in pairs (date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) then -- if the parameter has a value if not (not all and in_array (param_name, {'access-date', 'archive-date'})) then -- skip access- or archive-date unless format is xxx-all; yeah, ugly; TODO: find a better way for pattern_idx, pattern in pairs (patterns) do if mw.ustring.match (param_val.val, pattern[1]) then if all and in_array (param_name, {'access-date', 'archive-date'}) then -- if this date is an access- or archive-date new_date = reformatter (param_val.val, pattern_idx, (('y' == len_a) and 'ymd') or format, len_a); -- choose ymd or dmy/mdy according to len_a setting else -- all other dates new_date = reformatter (param_val.val, pattern_idx, format, len_p); end if new_date then -- set when date was reformatted date_parameters_list[param_name].val = new_date; -- update date in date list result = true; -- and announce that changes have been made break; end end -- if end -- for end -- if end -- if end -- for return result; -- declare boolean result and done end --[[--------------------------< D A T E _ H Y P H E N _ T O _ D A S H >---------------------------------------- Loops through the list of date-holding parameters and converts any hyphen to an ndash. Not called if the cs1|2 template has any date errors. Modifies the date_parameters_list and returns true if hyphens are replaced, else returns false. ]] local function date_hyphen_to_dash (date_parameters_list) local result = false; local n; for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) and not mw.ustring.match (param_val.val, patterns.ymd[1]) then -- for those that are not ymd dates (ustring because here digits may not be Western) param_val.val, n = param_val.val:gsub ('%-', '–'); -- replace any hyphen with ndash if 0 ~= n then date_parameters_list[param_name].val = param_val.val; -- update the list result = true; end end end return result; -- so we know if any hyphens were replaced end --[[-------------------------< D A T E _ N A M E _ X L A T E >------------------------------------------------ Attempts to translate English date names to local-language date names using names supplied by MediaWiki's date parser function. This is simple name-for-name replacement and may not work for all languages. if xlat_dig is true, this function will also translate Western (English) digits to the local language's digits. This will also translate ymd dates. ]] local function date_name_xlate (date_parameters_list, xlt_dig) local xlate; local mode; -- long or short month names local modified = false; local date; local sources_t = { {cfg.date_names.en.long, cfg.date_names.inv_local_long}, -- for translating long English month names to long local month names {cfg.date_names.en.short, cfg.date_names.inv_local_short}, -- short month names {cfg.date_names.en.quarter, cfg.date_names.inv_local_quarter}, -- quarter date names {cfg.date_names.en.season, cfg.date_names.inv_local_season}, -- season date nam {cfg.date_names.en.named, cfg.date_names.inv_local_named}, -- named dates } local function is_xlateable (month) -- local function to get local date name that replaces existing English-language date name for _, date_names_t in ipairs (sources_t) do -- for each sequence table in date_names_t if date_names_t[1][month] then -- if date name is English month (long or short), quarter, season or named and if date_names_t[2][date_names_t[1][month]] then -- if there is a matching local date name return date_names_t[2][date_names_t[1][month]]; -- return the local date name end end end end for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(param_val.val) then -- if the parameter has a value date = param_val.val; for month in mw.ustring.gmatch (date, '[%a ]+') do -- iterate through all date names in the date (single date or date range) month = mw.text.trim (month); -- this because quarterly dates contain whitespace xlate = is_xlateable (month); -- get translate <month>; returns translation or nil if xlate then date = mw.ustring.gsub (date, month, xlate); -- replace the English with the translation date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end if xlt_dig then -- shall we also translate digits? date = date:gsub ('%d', cfg.date_names.xlate_digits); -- translate digits from Western to 'local digits' date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end end return modified; end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) add_prop_cat = utilities_page_ptr.add_prop_cat ; -- import functions from selected Module:Citation/CS1/Utilities module is_set = utilities_page_ptr.is_set; in_array = utilities_page_ptr.in_array; set_message = utilities_page_ptr.set_message; substitute = utilities_page_ptr.substitute; wrap_style = utilities_page_ptr.wrap_style; cfg = cfg_table_ptr; -- import tables from selected Module:Citation/CS1/Configuration end --[[--------------------------< A R C H I V E _ D A T E _ C H E C K >------------------------------------------ Compare value in |archive-date= with the timestamp in Wayback machine urls. Emits an error message when |archive-date= does not match the timestamp. ]] local function archive_date_check (archive_date, archive_url_timestamp) local good, archive_date_ts = pcall (lang_object.formatDate, lang_object, 'Ymd', archive_date); -- |archive-date= value to YYYYMMDD format -- local archive_date_ts = lang_object:formatDate ('Ymd', archive_date); -- |archive-date= value to YYYYMMDD format if good then if not archive_url_timestamp:find (archive_date_ts, 1, true) then -- plain text find; begin search at position 1 set_message ('err_archive_date_url_ts_mismatch'); -- emit an error message end end end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { -- return exported functions archive_date_check = archive_date_check, date_hyphen_to_dash = date_hyphen_to_dash, date_name_xlate = date_name_xlate, dates = dates, reformat_dates = reformat_dates, set_selected_modules = set_selected_modules, year_date_check = year_date_check, } 91dea3f3d4d1691cec7700aac0057c873554b8c1 Module:Citation/CS1/Whitelist 828 886 1962 2023-08-12T19:19:08Z wikipedia>Trappist the monk 0 sync from sandbox; Scribunto text/plain --[[--------------------------< S U P P O R T E D P A R A M E T E R S >-------------------------------------- Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values: true - these parameters are valid and supported parameters false - these parameters are deprecated but still supported tracked - these parameters are valid and supported parameters tracked in an eponymous properties category nil - these parameters are no longer supported. remove entirely ]] local basic_arguments_t = { ['accessdate'] = true, ['access-date'] = true, ['agency'] = true, ['archivedate'] = true, ['archive-date'] = true, ['archive-format'] = true, ['archiveurl'] = true, ['archive-url'] = true, ['article'] = true, ['article-format'] = true, ['article-number'] = true, -- {{cite journal}}, {{cite conference}}; {{citation}} when |journal= has a value ['article-url'] = true, ['article-url-access'] = true, ['arxiv'] = true, -- cite arxiv; here because allowed in cite ... as identifier ['asin'] = true, ['ASIN'] = true, ['asin-tld'] = true, ['at'] = true, ['author'] = true, ['author-first'] = true, ['author-given'] = true, ['author-last'] = true, ['author-surname'] = true, ['authorlink'] = true, ['author-link'] = true, ['author-mask'] = true, ['authors'] = true, ['bibcode'] = true, ['bibcode-access'] = true, ['biorxiv'] = true, -- cite biorxiv; here because allowed in cite ... as identifier ['chapter'] = true, ['chapter-format'] = true, ['chapter-url'] = true, ['chapter-url-access'] = true, ['citeseerx'] = true, -- cite citeseerx; here because allowed in cite ... as identifier ['collaboration'] = true, ['contribution'] = true, ['contribution-format'] = true, ['contribution-url'] = true, ['contribution-url-access'] = true, ['contributor'] = true, ['contributor-first'] = true, ['contributor-given'] = true, ['contributor-last'] = true, ['contributor-surname'] = true, ['contributor-link'] = true, ['contributor-mask'] = true, ['date'] = true, ['department'] = true, ['df'] = true, ['dictionary'] = true, ['display-authors'] = true, ['display-contributors'] = true, ['display-editors'] = true, ['display-interviewers'] = true, ['display-subjects'] = true, ['display-translators'] = true, ['doi'] = true, ['DOI'] = true, ['doi-access'] = true, ['doi-broken-date'] = true, ['edition'] = true, ['editor'] = true, ['editor-first'] = true, ['editor-given'] = true, ['editor-last'] = true, ['editor-surname'] = true, ['editor-link'] = true, ['editor-mask'] = true, ['eissn'] = true, ['EISSN'] = true, ['encyclopaedia'] = true, ['encyclopedia'] = true, ['entry'] = true, ['entry-format'] = true, ['entry-url'] = true, ['entry-url-access'] = true, ['eprint'] = true, -- cite arxiv; here because allowed in cite ... as identifier ['first'] = true, ['format'] = true, ['given'] = true, ['hdl'] = true, ['HDL'] = true, ['hdl-access'] = true, ['host'] = true, -- unique to certain templates? ['id'] = true, ['ID'] = true, ['institution'] = true, -- constrain to cite thesis? ['interviewer'] = true, ['interviewer-first'] = true, ['interviewer-given'] = true, ['interviewer-last'] = true, ['interviewer-surname'] = true, ['interviewer-link'] = true, ['interviewer-mask'] = true, ['isbn'] = true, ['ISBN'] = true, ['ismn'] = true, ['ISMN'] = true, ['issn'] = true, ['ISSN'] = true, ['issue'] = true, ['jfm'] = true, ['JFM'] = true, ['journal'] = true, ['jstor'] = true, ['JSTOR'] = true, ['jstor-access'] = true, ['lang'] = true, ['language'] = true, ['last'] = true, ['lccn'] = true, ['LCCN'] = true, ['location'] = true, ['magazine'] = true, ['medium'] = true, ['medrxiv'] = true, -- cite medrxiv; here because allowed in cite ... as identifier ['minutes'] = true, -- constrain to cite AV media and podcast? ['mode'] = true, ['mr'] = true, ['MR'] = true, ['name-list-style'] = true, ['newspaper'] = true, ['no-pp'] = true, ['no-tracking'] = true, ['number'] = true, ['oclc'] = true, ['OCLC'] = true, ['ol'] = true, ['OL'] = true, ['ol-access'] = true, ['orig-date'] = true, ['origyear'] = true, ['orig-year'] = true, ['osti'] = true, ['OSTI'] = true, ['osti-access'] = true, ['others'] = true, ['p'] = true, ['page'] = true, ['pages'] = true, ['people'] = true, ['periodical'] = true, ['place'] = true, ['pmc'] = true, ['PMC'] = true, ['pmc-embargo-date'] = true, ['pmid'] = true, ['PMID'] = true, ['postscript'] = true, ['pp'] = true, ['publication-date'] = true, ['publication-place'] = true, ['publisher'] = true, ['quotation'] = true, ['quote'] = true, ['quote-page'] = true, ['quote-pages'] = true, ['ref'] = true, ['rfc'] = true, ['RFC'] = true, ['sbn'] = true, ['SBN'] = true, ['scale'] = true, ['script-article'] = true, ['script-chapter'] = true, ['script-contribution'] = true, ['script-entry'] = true, ['script-journal'] = true, ['script-magazine'] = true, ['script-newspaper'] = true, ['script-periodical'] = true, ['script-quote'] = true, ['script-section'] = true, ['script-title'] = true, ['script-website'] = true, ['script-work'] = true, ['section'] = true, ['section-format'] = true, ['section-url'] = true, ['section-url-access'] = true, ['series'] = true, ['ssrn'] = true, -- cite ssrn; these three here because allowed in cite ... as identifier ['SSRN'] = true, ['ssrn-access'] = true, ['subject'] = true, ['subject-first'] = true, ['subject-given'] = true, ['subject-last'] = true, ['subject-link'] = true, ['subject-mask'] = true, ['subject-surname'] = true, ['surname'] = true, ['s2cid'] = true, ['S2CID'] = true, ['s2cid-access'] = true, ['template-doc-demo'] = true, ['time'] = true, -- constrain to cite av media and podcast? ['time-caption'] = true, -- constrain to cite av media and podcast? ['title'] = true, ['title-link'] = true, ['title-note'] = true, ['translator'] = true, ['translator-first'] = true, ['translator-given'] = true, ['translator-last'] = true, ['translator-surname'] = true, ['translator-link'] = true, ['translator-mask'] = true, ['trans-article'] = true, ['trans-chapter'] = true, ['trans-contribution'] = true, ['trans-entry'] = true, ['trans-journal'] = true, ['trans-magazine'] = true, ['trans-newspaper'] = true, ['trans-periodical'] = true, ['trans-quote'] = true, ['trans-section'] = true, ['trans-title'] = true, ['trans-website'] = true, ['trans-work'] = true, ['type'] = true, ['url'] = true, ['URL'] = true, ['url-access'] = true, ['url-status'] = true, ['vauthors'] = true, ['veditors'] = true, ['version'] = true, ['via'] = true, ['volume'] = true, ['website'] = true, ['work'] = true, ['year'] = true, ['zbl'] = true, ['ZBL'] = true, } local numbered_arguments_t = { ['author#'] = true, ['author-first#'] = true, ['author#-first'] = true, ['author-given#'] = true, ['author#-given'] = true, ['author-last#'] = true, ['author#-last'] = true, ['author-surname#'] = true, ['author#-surname'] = true, ['author-link#'] = true, ['author#-link'] = true, ['authorlink#'] = true, ['author#link'] = true, ['author-mask#'] = true, ['author#-mask'] = true, ['contributor#'] = true, ['contributor-first#'] = true, ['contributor#-first'] = true, ['contributor-given#'] = true, ['contributor#-given'] = true, ['contributor-last#'] = true, ['contributor#-last'] = true, ['contributor-surname#'] = true, ['contributor#-surname'] = true, ['contributor-link#'] = true, ['contributor#-link'] = true, ['contributor-mask#'] = true, ['contributor#-mask'] = true, ['editor#'] = true, ['editor-first#'] = true, ['editor#-first'] = true, ['editor-given#'] = true, ['editor#-given'] = true, ['editor-last#'] = true, ['editor#-last'] = true, ['editor-surname#'] = true, ['editor#-surname'] = true, ['editor-link#'] = true, ['editor#-link'] = true, ['editor-mask#'] = true, ['editor#-mask'] = true, ['first#'] = true, ['given#'] = true, ['host#'] = true, ['interviewer#'] = true, ['interviewer-first#'] = true, ['interviewer#-first'] = true, ['interviewer-given#'] = true, ['interviewer#-given'] = true, ['interviewer-last#'] = true, ['interviewer#-last'] = true, ['interviewer-surname#'] = true, ['interviewer#-surname'] = true, ['interviewer-link#'] = true, ['interviewer#-link'] = true, ['interviewer-mask#'] = true, ['interviewer#-mask'] = true, ['last#'] = true, ['subject#'] = true, ['subject-first#'] = true, ['subject#-first'] = true, ['subject-given#'] = true, ['subject#-given'] = true, ['subject-last#'] = true, ['subject#-last'] = true, ['subject-link#'] = true, ['subject#-link'] = true, ['subject-mask#'] = true, ['subject#-mask'] = true, ['subject-surname#'] = true, ['subject#-surname'] = true, ['surname#'] = true, ['translator#'] = true, ['translator-first#'] = true, ['translator#-first'] = true, ['translator-given#'] = true, ['translator#-given'] = true, ['translator-last#'] = true, ['translator#-last'] = true, ['translator-surname#'] = true, ['translator#-surname'] = true, ['translator-link#'] = true, ['translator#-link'] = true, ['translator-mask#'] = true, ['translator#-mask'] = true, } --[[--------------------------< P R E P R I N T S U P P O R T E D P A R A M E T E R S >-------------------- Cite arXiv, cite biorxiv, cite citeseerx, cite medrxiv, and cite ssrn are preprint templates that use the limited set of parameters defined in the limited_basic_arguments and limited_numbered_arguments tables. Those lists are supplemented with a template-specific list of parameters that are required by the particular template and may be exclusive to one of the preprint templates. Some of these parameters may also be available to the general cs1|2 templates. Same conventions for true/false/tracked/nil as above. ]] local preprint_arguments_t = { arxiv = { ['arxiv'] = true, -- cite arxiv and arxiv identifiers ['class'] = true, ['eprint'] = true, -- cite arxiv and arxiv identifiers }, biorxiv = { ['biorxiv'] = true, }, citeseerx = { ['citeseerx'] = true, }, medrxiv = { ['medrxiv'] = true, }, ssrn = { ['ssrn'] = true, ['SSRN'] = true, ['ssrn-access'] = true, }, } --[[--------------------------< L I M I T E D S U P P O R T E D P A R A M E T E R S >---------------------- cite arxiv, cite biorxiv, cite citeseerx, cite medrxiv, and cite ssrn templates are preprint templates so are allowed only a limited subset of parameters allowed to all other cs1|2 templates. The limited subset is defined here. This list of parameters also used by {{cite document}} Same conventions for true/false/tracked/nil as above. ]] local limited_basic_arguments_t = { ['at'] = true, ['author'] = true, ['author-first'] = true, ['author-given'] = true, ['author-last'] = true, ['author-surname'] = true, ['author-link'] = true, ['authorlink'] = true, ['author-mask'] = true, ['authors'] = true, ['collaboration'] = true, ['date'] = true, ['df'] = true, ['display-authors'] = true, ['first'] = true, ['given'] = true, ['language'] = true, ['last'] = true, ['mode'] = true, ['name-list-style'] = true, ['no-tracking'] = true, ['p'] = true, ['page'] = true, ['pages'] = true, ['postscript'] = true, ['pp'] = true, ['quotation'] = true, ['quote'] = true, ['ref'] = true, ['surname'] = true, ['template-doc-demo'] = true, ['title'] = true, ['trans-title'] = true, ['vauthors'] = true, ['year'] = true, } local limited_numbered_arguments_t = { ['author#'] = true, ['author-first#'] = true, ['author#-first'] = true, ['author-given#'] = true, ['author#-given'] = true, ['author-last#'] = true, ['author#-last'] = true, ['author-surname#'] = true, ['author#-surname'] = true, ['author-link#'] = true, ['author#-link'] = true, ['authorlink#'] = true, ['author#link'] = true, ['author-mask#'] = true, ['author#-mask'] = true, ['first#'] = true, ['given#'] = true, ['last#'] = true, ['surname#'] = true, } --[[--------------------------< U N I Q U E _ A R G U M E N T S >---------------------------------------------- Some templates have unique parameters. Those templates and their unique parameters are listed here. Keys in this table are the template's CitationClass parameter value Same conventions for true/false/tracked/nil as above. ]] local unique_arguments_t = { ['audio-visual'] = { ['transcript'] = true, ['transcript-format'] = true, ['transcript-url'] = true, }, conference = { ['book-title'] = true, ['conference'] = true, ['conference-format'] = true, ['conference-url'] = true, ['event'] = true, }, episode = { ['airdate'] = true, ['air-date'] = true, ['credits'] = true, ['episode-link'] = true, -- alias of |title-link= ['network'] = true, ['season'] = true, ['series-link'] = true, ['series-no'] = true, ['series-number'] = true, ['station'] = true, ['transcript'] = true, ['transcript-format'] = true, ['transcript-url'] = true, }, mailinglist = { ['mailing-list'] = true, }, map = { ['cartography'] = true, ['inset'] = true, ['map'] = true, ['map-format'] = true, ['map-url'] = true, ['map-url-access'] = true, ['script-map'] = true, ['sections'] = true, ['sheet'] = true, ['sheets'] = true, ['trans-map'] = true, }, newsgroup = { ['message-id'] = true, ['newsgroup'] = true, }, report = { ['docket'] = true, }, serial = { ['airdate'] = true, ['air-date'] = true, ['credits'] = true, ['episode'] = true, -- cite serial only TODO: make available to cite episode? ['episode-link'] = true, -- alias of |title-link= ['network'] = true, ['series-link'] = true, ['station'] = true, }, speech = { ['conference'] = true, ['conference-format'] = true, ['conference-url'] = true, ['event'] = true, }, thesis = { ['degree'] = true, ['docket'] = true, }, } --[[--------------------------< C I T E _ D O C U M E N T >---------------------------------------------------- Special case for cite document. This template takes the limited basic and limited enumerated parameters plus others that are apply only to standalone published sources that cannot be cited any other way; no url, book, periodical, etc parameters; limited support for name lists and named identifiers. when validating parameters in {{cite document}} templates, the basic and ]] local document_arguments_t = { ['bibcode'] = true, ['bibcode-access'] = true, ['doi'] = true, ['DOI'] = true, ['doi-access'] = true, ['doi-broken-date'] = true, ['hdl'] = true, ['HDL'] = true, ['hdl-access'] = true, ['id'] = true, ['ID'] = true, ['jfm'] = true, ['JFM'] = true, ['lang'] = true, ['location'] = true, ['mr'] = true, ['MR'] = true, ['no-pp'] = true, ['orig-date'] = true, ['origyear'] = true, ['orig-year'] = true, ['osti'] = true, ['OSTI'] = true, ['osti-access'] = true, ['place'] = true, ['publisher'] = true, ['quote-page'] = true, ['quote-pages'] = true, ['script-quote'] = true, ['script-title'] = true, ['title-link'] = true, ['translator'] = true, ['translator-first'] = true, ['translator-given'] = true, ['translator-last'] = true, ['translator-surname'] = true, ['translator-link'] = true, ['translator-mask'] = true, ['trans-quote'] = true, ['type'] = true, ['zbl'] = true, ['ZBL'] = true, } local document_numbered_arguments_t = { ['translator#'] = true, ['translator-first#'] = true, ['translator#-first'] = true, ['translator-given#'] = true, ['translator#-given'] = true, ['translator-last#'] = true, ['translator#-last'] = true, ['translator-surname#'] = true, ['translator#-surname'] = true, ['translator-link#'] = true, ['translator#-link'] = true, ['translator-mask#'] = true, ['translator#-mask'] = true, } --[[--------------------------< L I S T _ C O M B I N E >------------------------------------------------------ makes one table from a list of tables. <lists_t> is a sequence of tables to be combined ]] local function list_combine (lists_t) local out_t = {}; for _, list_t in ipairs (lists_t) do -- for each list in <lists_t> for k, v in pairs (list_t) do -- extract each k/v pair out_t[k] = v; -- add to <out_t> end end return out_t; -- and done end --[[--------------------------< T E M P L A T E _ L I S T _ G E T >-------------------------------------------- gets a list of the templates from table t ]] local function template_list_get (t) local out_t = {}; -- a table for output for k, _ in pairs (t) do -- spin through the table and collect the keys table.insert (out_t, k) -- add each key to the output table end return out_t; -- and done end --[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------ ]] return { preprint_arguments_t = preprint_arguments_t, preprint_template_list_t = template_list_get (preprint_arguments_t), -- make a template list from preprint_arguments{} table unique_arguments_t = unique_arguments_t, unique_param_template_list_t = template_list_get (unique_arguments_t), -- make a template list from unique_arguments{} table document_parameters_t = list_combine ({limited_basic_arguments_t, limited_numbered_arguments_t, document_arguments_t, document_numbered_arguments_t}); common_parameters_t = list_combine ({basic_arguments_t, numbered_arguments_t}); limited_parameters_t = list_combine ({limited_basic_arguments_t, limited_numbered_arguments_t}); }; bd347271e3380cb17f22c0e3924982798e9adc07 Template:Infobox writer 10 1142 2468 2023-08-14T18:21:07Z w>Neveselbert 0 add/copy from [[Template:Infobox person]] wikitext text/x-wiki {{Infobox | bodyclass = vcard | bodystyle = {{#if:{{{box_width|}}} |width:{{{box_width}}};}} | child = {{lc:{{{embed}}}}} | title = {{#ifeq:{{lc:{{{embed}}}}}|yes|'''Writing career'''}} | abovestyle = font-size:125%; | above = {{#ifeq:{{lc:{{{embed}}}}}|yes|| {{#if:{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|}}}}}}}}} |<div class="honorific-prefix" style="display:inline;font-size: 77%; font-weight: normal;">{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix}}}}}}}}}</div><br/>}}<!-- --><includeonly><div style="display:inline;" class="fn">{{{name|{{PAGENAMEBASE}}}}}</div></includeonly><!-- -->{{#if:{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix|}}}}}}}}} |<br/><div class="honorific-suffix" style="display:inline;font-size: 77%; font-weight: normal;">{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix}}}}}}}}}</div>}}<!-- -->}} | image = {{#invoke:InfoboxImage|InfoboxImage |image={{{image|}}} |size={{#ifeq:{{lc:{{{landscape|}}}}}|yes|{{min|300|{{#if:{{#ifexpr:{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}|300|{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}}}x200px|{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}|sizedefault=frameless |upright={{{image_upright|1}}} |alt={{{alt|}}} |title={{{caption|}}} |suppressplaceholder=yes}} | caption = {{{caption|}}} | captionstyle = line-height:1.4em; | labelstyle = line-height:1.2em; padding-right:0.65em; | datastyle = line-height:1.4em; | label1 = Native name | data1 = {{#if:{{{native_name|}}} |<div class="nickname" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}} | label2 = Born | data2 = {{br separated entries | 1={{{birth_name|}}} | 2={{#switch:{{lc:{{{birth_date|}}}}} |? |?? |??? |???? |19? |19?? |18?? |17?? |u |unk |unknown = {{abbr|DOB|Date of birth}}&nbsp;unknown | {{{birth_date|}}} }} | 3={{{birth_place|}}} }} | label3 = Died | data3 = {{br separated entries | 1={{#switch:{{lc:{{{death_date|}}}}} |? |?? |??? |???? |19? |19?? |18?? |17?? |u |unk |unknown = {{abbr|DOD|Date of death}}&nbsp;unknown | {{{death_date|}}} }} | 2={{{death_place|}}} }} | label4 = Resting place | data4 = {{br separated entries|{{{resting_place|}}} |{{{resting_place_coordinates|}}} }} | label5 = Pen name | class5 = nickname | data5 = {{{penname|{{{pseudonym|}}}}}} | label6 = Nickname | class6 = nickname | data6 = {{{nickname|}}} | label7 = Occupation | class7 = role | data7 = {{{occupation|}}} | label8 = Language | data8 = {{{language|}}} | label10 = Nationality | class10 = category | data10 = {{{nationality|}}} | label11 = Citizenship | data11 = {{{citizenship|}}} | label12 = Education | data12 = {{{education|}}} | label13 = Alma&nbsp;mater | data13 = {{{alma_mater|}}} | label15 = Period | data15 = {{{period|}}} | label16 = Genre{{#if:{{{genres|}}}|s}} | class16 = category | data16 = {{#if:{{{genres|}}}|{{{genres}}}|{{{genre|}}}}} | label17 = Subject{{#if:{{{subjects|}}}|s}} | data17 = {{#if:{{{subjects|}}}|{{{subjects}}}|{{{subject|}}}}} | label18 = Literary movement | data18 = {{{movement|}}} | label21 = Years&nbsp;active | data21 = {{{years active|{{{years_active|{{{yearsactive|}}}}}}}}} | label22 = Employer{{Pluralize from text|{{{employer|}}}|likely=(s)|plural=s}} | data22 = {{{employer|}}}{{main other|{{Pluralize from text| {{{employer|}}}|likely=}}}} | class22 = org | label29 = Notable work{{#if:{{{notableworks|{{{notable_works|}}}}}}|s}} | data29 = {{#if:{{{notableworks|{{{notable_works|}}}}}}|{{{notableworks|{{{notable_works|}}}}}}|{{{notablework|}}}}} | label30 = Notable awards | data30 = {{{awards|}}} | label32 = Spouse{{#if:{{{spouses|}}}|s}} | data32 = {{#if:{{{spouses|}}}|{{{spouses}}}|{{{spouse|}}}}} | label33 = Partner{{#if:{{{partners|}}}|s}} | data33 = {{#if:{{{partners|}}}|{{{partners}}}|{{{partner|}}}}} | label34 = Children | data34 = {{{children|}}} | label35 = Parent{{#if:{{{parents|}}}|s}} | data35 = {{#if:{{{parents|}}}|{{{parents}}}|{{{parent|}}}}} | label36 = Relatives | data36 = {{{relatives|{{{relations|}}}}}} |header39 = {{#if:{{{signature|}}}|{{if empty|{{{signature_type|}}}|Signature}}}} | data40 = {{#invoke:InfoboxImage|InfoboxImage|image={{{signature|}}}|size={{{signature_size|}}}|sizedefault=150px|upright=0.72|alt={{{signature_alt|}}}}} | data41 = {{{misc|{{{module|}}}}}} | header42 = {{#if:{{{website|{{{homepage|{{{URL|}}}}}}}}}|Website}} | data43 = {{{website|{{{homepage|{{{URL|}}}}}}}}} | data44 = {{#if:{{{portaldisp|}}} |<hr/>'''{{portal-inline|Literature|size=tiny}}'''}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Infobox writer with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox writer]] with unknown parameter "_VALUE_"|ignoreblank=y| alma_mater | alt | awards | birth_date | birth_name | birth_place | box_width | caption | children | citizenship | death_date | death_place | education | embed | employer | genre | genres | homepage | honorific prefix | honorific suffix | honorific_prefix | honorific_suffix | honorific-prefix | honorific-suffix | image | image caption | image size | image_caption | image_size | image_upright | imagesize | landscape | language | misc | module | movement | name | nationality | native_name | native_name_lang | nickname | notablework | notableworks | notable_works | occupation | partner | partners | penname | period | portaldisp | pronunciation | pseudonym | relations | relatives | resting_place | resting_place_coordinates | signature | signature_alt | signature_size | signature_type | spouse | spouses | subject | subjects | URL | website | years active | years_active | yearsactive | parent | parents}}{{main other| {{#if:{{{pronunciation|}}} |[[Category:Biography template using pronunciation]] }}{{#if:{{{website|{{{homepage|{{{URL|}}}}}}}}}|{{#switch:{{str left|{{{website|{{{homepage|{{{URL|}}}}}}}}}|1}}|<=|[=|#default=[[Category:Biography template using bare URL in website parameter]]}}}} }}<noinclude> {{Documentation}} </noinclude> edcd937c2868da8b8be16170de5a9c0966b3e2f1 Template:Infobox writer/doc 10 1383 2718 2023-08-14T18:36:09Z w>Neveselbert 0 /* TemplateData */ punc wikitext text/x-wiki {{Documentation subpage}} {{Person infobox header}} {{high-use}} {{auto short description}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} '''Infobox writer''' may be used to summarize information about a person who is a writer/author (includes screenwriters). If the writer-specific fields here are not needed, consider using the more general {{Tl|Infobox person}}; other infoboxes there can be found in [[:Category:People and person infobox templates]]. This template may also be used as a module (or sub-template) of {{Tl|Infobox person}}; see [[Wikipedia:WikiProject Infoboxes/embed|WikiProject Infoboxes/embed]] for guidance on such usage. == Syntax == {{Parameter names example |embed |honorific_prefix |name |honorific_suffix |image |image_size={{{image_size}}} |image_upright |landscape |alt |caption |native_name |native_name_lang |pseudonym |birth_name |birth_date |birth_place |death_date |death_place |resting_place |occupation |language |nationality |citizenship |education |alma_mater | |period |genre={{{genre}}} or {{{genres}}} |subject={{{subject}}} or {{{subjects}}} |movement |notable_works={{{notable_works}}} |spouse={{{spouse}}} or {{{spouses}}} |partner={{{partner}}} or {{{partners}}} |children |relatives |awards |signature={{{signature}}}<br /> |signature_alt |signature_size |signature_type |years_active |module |website={{{website}}} |portaldisp }} The infobox may be added by pasting the template as shown below into an article. All fields are optional. Any unused parameter names can be left blank or omitted. <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox writer | embed = | honorific_prefix = | name = | honorific_suffix = | image = | image_size = | image_upright = | landscape = <!-- yes, if wide image, otherwise leave blank --> | alt = <!-- descriptive text for use by speech synthesis (text-to-speech) software --> | caption = | native_name = | native_name_lang = | pseudonym = | birth_name = <!-- only use if different from name --> | birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year with {{Birth year and age|YYYY}} unless the exact date is already widely published, as per [[WP:DOB]]. For people who have died, use {{Birth date|YYYY|MM|DD}}. --> | birth_place = | death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (DEATH date then BIRTH date) --> | death_place = | resting_place = | occupation = | language = | nationality = <!-- use only when necessary per [[WP:INFONAT]] --> | citizenship = <!-- use only when necessary per [[WP:INFONAT]] --> | education = | alma_mater = | period = | genre = <!-- or: | genres = --> | subject = <!-- or: | subjects = --> | movement = | notable_works = | spouse = <!-- or: | spouses = --> | partner = <!-- or: | partners = --> | children = | relatives = | awards = | signature = | signature_alt = | signature_size = | signature_type = | years_active = | module = | website = <!-- {{URL|example.org}} --> | portaldisp = <!-- "on", "yes", "true", etc.; or omit --> }} </syntaxhighlight> <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox writer | embed = | honorific_prefix = | name = | honorific_suffix = | image = | image_size = | image_upright = | landscape = | alt = | caption = | native_name = | native_name_lang = | pseudonym = | birth_name = | birth_date = | birth_place = | death_date = | death_place = | resting_place = | occupation = | language = | nationality = | citizenship = | education = | alma_mater = | period = | genre = | subject = | movement = | notable_works = | spouse = | partner = | children = | relatives = | awards = | signature = | signature_alt = | signature_size = | signature_type = | years_active = | module = | website = | portaldisp = }} </syntaxhighlight> {{clear}} == Parameters == Please remove any parameters from an article's infobox that are unlikely to be used. All parameters are optional. Unless otherwise specified, if a parameter has multiple values, they should be comma-separated using the {{Tlx|Cslist}} template: : {{Para|language|{{Tlx|Cslist|French|Spanish|English}}}} which produces: : |language={{Cslist|French|Spanish|English}} If any of the individual values contain commas already, add {{Para|semi|true}} to use semi-colons as separators: : {{Para|pseudonym|{{Tlx|Cslist|Smith, Bob|DaveyJones|Adams, Fred|semi{{=}}true}}}} which produces: : |pseudonym={{Cslist|Smith, Bob|DaveyJones|Adams, Fred|semi=true}} For more information, see [[Template:Infobox person#Inline lists]]. {| class="wikitable" ! style="text-align: left" | Parameter ! style="text-align: left" | Explanation |- | '''name''' | Insert name of the person. Use the common name, typically name of article. If omitted it defaults to the name of the article; if present but blank, the header is omitted. Note: '''<ins>Do not</ins>''' add icons or other images. |- | '''embed ''' | Set to "yes" if embedded in another infobox template. |- | '''honorific_prefix''' | Honorifics that go before the name, e.g. "Lady", "Sir" |- | '''honorific_suffix''' | Honorifics that go after the name, e.g. "MBE" |- | '''image''' | Insert image name. Use only the file name such as {{highlight|abc.jpg}}, {{highlight|xyz.png}}, {{highlight|123.gif}}, etc. Do not use syntax such as <nowiki>[[File:abc.jpg]]</nowiki> or <nowiki>[[File:abc.jpg|200px]]</nowiki><br /> Only free-content images are allowed for depicting living people. Non-free and "fair use" images, e.g., promo photos, CD/DVD covers, posters, screen captures, etc., will be deleted. See [[WP:NONFREE]]. |- | '''image_upright''' | Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%). |- | '''image_size''' | Size to display image: ''200px'' (set width), or ''200x300px'' (max width & max height). This defaults to 200px if empty or omitted. |- | '''landscape''' | Set to "yes" when using wide, short images. The image height (rather than width) will be limited to 200 pixels. |- | '''alt''' | The [[alt attribute]] for the image, for readers who cannot see the image. See [[WP:ALT]]. |- | '''caption''' | Caption for the image. Try to include the date the image was created. |- | '''native_name''' | Name in local language. Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]). |- | '''native_name_lang''' | A [[language tag]], e.g. "fr" for French. If more than one, use {{tl|lang}} inside native_name instead |- | '''pseudonym''' | Any of the person's aliases or pen names. Use {{Tlx|Cslist}} for multiple values (see information at the [[#Parameters|top of this section]]). |- | '''nickname''' | Nickname(s) other than pen names. |- | '''birth_name''' | Insert person's name at birth (or christening if name at birth is unavailable). |- | '''birth_date''' | Insert the person's birth date if known as: month day, year or day month year as appropriate. For a living person consider using: :{{tlx|Birth date and age|year of birth|month of birth|day of birth}} Otherwise use: :{{tlx|Birth date|year of birth|month of birth|day of birth}}. In either case, add {{para|df|yes}} to show date as [[WP:DATES#Full date formatting|day before month]]; otherwise format is month before day. |- | '''birth_place''' | Insert the person's place of birth if known as: town, city, state, country. Note: '''<ins>Do not</ins>''' add flag icons to the birthplace. See: [[Wikipedia:Manual of Style (flags)]]. |- | '''death_date''' | Note: Using this field will also change the background display color of the name at the top of the infobox to <span style="background:silver">silver</span>. If the person is still living, leave this parameter blank. Insert the person's date of death if known as: month day, year or day month year as appropriate. When the full birth date and death date are known, use the following: :{{Tlx|Death date and age|yr died|mo died|da died|yr born|mo born|da born}} Add {{para|df|yes}} to show date as [[WP:DATES#Full date formatting|day before month]]; otherwise format is month before day. ::'''''example''''' :::<small><nowiki>{{Death date and age|</nowiki>{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{CURRENTDAY}}|1950|12|31|df=yes<nowiki>}}</nowiki></small> ::'''''output display results''''' :::<small>{{Death date and age|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{CURRENTDAY}}|1950|12|31|df=yes}}</small> *When only the birth and death years are known, use: :<small><nowiki>{{</nowiki>Death year and age|year died|year born<nowiki>}}</nowiki></small> ::'''''example''''' :::<small><nowiki>{{</nowiki>Death year and age|{{CURRENTYEAR}}|1950<nowiki>}}</nowiki></small> ::'''''output display results''''' :::<small>{{Death year and age|{{CURRENTYEAR}}|1950}}</small> *When only the birth month, birth year and death year are known, use: :<small>birth month, <nowiki>{{</nowiki>Death year and age|year died|year born<nowiki>}}</nowiki></small> ::'''''example''''' :::<small>{{CURRENTMONTHNAME}}, <nowiki>{{</nowiki>Death year and age|{{CURRENTYEAR}}|1950<nowiki>}}</nowiki></small> ::'''''output display results''''' :::<small>{{CURRENTMONTHNAME}}, {{Death year and age|{{CURRENTYEAR}}|1950}}</small> *When only the death year is known, use: :<small>death year</small> ::'''''example''''' :::<small>{{CURRENTYEAR}}</small> ::'''''output display results''''' :::<small>{{CURRENTYEAR}}</small> *When the date of death is unknown, but the person is certainly now dead use the following (case is insensitive): ::'''''example''''' :::unknown ::'''''output display results''''' :::date of death unknown *When the date of death is unknown, and it is preferable not to display anything and just change the background display color of the infobox. Enter the following (case is insensitive): ::'''''example''''' :::died ::'''''output display results''''' :::nothing will be displayed. *When the date of death is only known approximately. :Preface the entry with a wikilink <nowiki>[[</nowiki>Circa|c. <nowiki>]]</nowiki> or c. ::'''''examples''''' :::<small><nowiki>[[</nowiki>Circa|c.<nowiki>]]</nowiki> <nowiki>{{</nowiki>Death year and age|{{CURRENTYEAR}}|1950<nowiki>}}</nowiki></small> :::<small><nowiki>[[</nowiki>Circa|c.<nowiki>]]</nowiki> year died</small> ::'''''output display results''''' :::<small>[[Wiktionary:circa|c.]] {{Death year and age|{{CURRENTYEAR}}|1950}}</small> :::<small>[[Wiktionary:circa|c.]] {{CURRENTYEAR}}</small> |- | '''death_place''' | Insert the person's place of death if known as: town, city, state, country. Note: '''<ins>Do not</ins>''' add flag icons to the deathplace. See: [[Wikipedia:Manual of Style (flags)]]. |- | '''resting_place''' | Place of burial, ash-scattering, etc. |- |- | '''occupation''' | Insert the type of person: novelist, short story person, journalist, etc. Use {{Tlx|Cslist}} for multiple values (see information at the [[#Parameters|top of this section]]). |- | '''language''' | Language of published writings. |- | '''nationality''' | Nationality of person, use only when necessary per [[WP:INFONAT]]. |- | '''citizenship''' | Citizenship of person., use only when necessary per [[WP:INFONAT]]. |- | '''education''' | |- | '''alma_mater''' | The [[alma mater]], or college or universities where the person studied. If more than one, indicate ones where they obtained their degree(s) or graduated from. |- | '''period''' | Dates from first publication to last publication. |- | '''genre''' | Fiction persons: All genres that the person wrote in. Use {{Tlx|Cslist}} for multiple values (see information at the [[#Parameters|top of this section]]). |- | '''subject''' | Non-fiction persons: All subjects that the person wrote about. Use {{Tlx|Cslist}} for multiple values (see information at the [[#Parameters|top of this section]]). |- | '''movement''' | Insert the literary movement associated with or involving the person. Use {{Tlx|Cslist}} for multiple values (see information at the [[#Parameters|top of this section]]). |- | '''notable_works''' | Names of '''notable''' works ([[WP:NN]]). Use {{Tlx|Unbulleted list}} for multiple values (see information at [[Template:Infobox person#Inline lists]]). <small>If there is a dispute between editors over what is or is not a notable work, it should be brought up on the article's talk page. If no consensus can be developed for a particular person, the notable_works parameter should be marked with:</small> <small>{{highlight|<nowiki><!-- Please do not add notable works to this article. See talk page as mutual consensus could not be achieved on this article. --></nowiki>}}</small> |- | '''spouse''' | Name of spouse(s), followed by years of marriage. Use the format ''Name (1950–present)'' for current spouse and ''Name (1970–1999)'' for former spouse(s). Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]). |- | '''partner''' | Name of long-term unmarried partner(s) (e.g., [[domestic partner]]). Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]). |- | '''children''' | Number of children (e.g., 3), or list of children names. Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]). |- | '''relatives''' | Names of parents, siblings or other relatives; include only if they are independently notable or particularly relevant. Include the relationship in parentheses after the name (father, sister, uncle, etc.). Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]). |- | '''parents''' | Names of parents; include only if they are independently notable or particularly relevant. This parameter may be used for biological, adoptive, foster, or step-parents. Use {{Tlx|Unbulleted list}} for multiple values (see information at [[Template:Infobox person#Inline lists]]). |- | '''influences''' | No longer supported. Please move cited/citable instances into prose. |- | '''influenced''' | No longer supported. Please move cited/citable instances into prose. |- | '''awards''' | Insert any '''notable''' awards the person has won. Consider using the template: {{tlx|Awards|award|year|title|role}} Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]). Note: '''<ins>Do not</ins>''' add icons or other images. |- | '''signature''' | An image of the person's signature. Image is displayed at a width of 128px, same format as {{Tl|Infobox person}}, {{Tl|Infobox officeholder}} and {{Tl|Infobox philosopher}}. |- | '''signature_type''' | Changes the '''Signature''' label to the preferred argument, such as '''Seal''' |- | '''signature_size''' | Default is {{samp|150px}}. If necessary, a signature can be resized manually as per the {{para|image_size}} parameter. |- | '''signature_alt''' | [[WP:Alternative text for images|Alternative text]] for signature. Write out the signature exactly as it appears in the image, including punctuation. For [[WP:ACCESSIBILITY|accessibility]]. |- | '''years_active''' | Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format 1950–2000, or 1970–present if still active (note the use of an en dash, not hyphen). If no dates of birth and/or death are known for the subject, only a [[floruit]] date range, as is common with ancient subjects, this parameter can be used for it. If approximate (circa) dates are known for either or both, put them in the birth_date and death_date parameters. |- | '''module''' | Used for embedding other infoboxes into this one. |- | '''website''' | If the person has an '''official''' website enter it here. '''<ins>Do not</ins>''' enter unofficial, blogs or fan websites. Only one '''official''' website is allowed. If the person has more than one '''official''' website, only the most prominent should be listed in the infobox. All other websites should be listed in the article under ==External links==. Use {{T|URL}} as in <nowiki>{{URL|ExampleCompany.com}}</nowiki>. Do not include the "<nowiki>http[s]://</nowiki>" or "www." parts unless the server requires it. Use [[camel case]] capitalization to make multiword domain names easier to read. |- | '''portaldisp''' | This is an optional parameter to display the literature portal link at the bottom of the infobox. Leaving this parameter blank will cause the literature portal link '''not''' to display. Setting this parameter to '''yes''' or '''y''' (case is insensitive) will display the literature portal link. ::::::[[File:Portal-puzzle.svg|frameless|upright=0.11|link=|alt=]] [[Portal:Literature|Literature portal]] If there is a dispute between editors over whether this parameter should be used in the article, it should be brought up on the article's talk page. If no consensus can be developed for a particular person, the portaldisp parameter should be marked with: {{highlight|<nowiki><!-- Please do not use this parameter in this article. See talk page as mutual consensus could not be achieved on this article. --></nowiki>}} |- <!-- removed, very few articles used this parameter | '''footnotes''' | Insert any miscellaneous information here. --> |} == Use as a child template == The '''embed''' parameter is used when embedding this infobox into another. {{Infobox person module documentation |template=Infobox writer |parameter=embed |example_parameter1=genre}} == TemplateData == {{TemplateData header}} {{collapse top|title=TemplateData}} <templatedata> { "description": "Infobox writer may be used to summarize information about a person who is a writer/author (includes screenwriters).", "format": "{{_\n| ________________ = _\n}}\n", "params": { "name": { "required": false, "label": "Name", "type": "string", "description": "Insert name of the person. Use the common name, typically name of article. If omitted it defaults to the name of the article; if present but blank, the header is omitted. Note: Do not add icons or other images.", "suggested": true }, "embed": { "label": "Embedded", "description": "Set to 'yes' if embedded in another infobox template.", "type": "string", "required": false, "suggestedvalues": [ "Yes" ] }, "honorific_prefix": { "required": false, "label": "Honorific (prefix)", "type": "string", "description": "Honorifics that go before the name, e.g. 'Lady', 'Sir', 'Dr'." }, "honorific_suffix": { "required": false, "label": "Honorific (suffix)", "type": "string", "description": "Honorifics that go after the name, e.g. 'MBE'." }, "native_name": { "required": false, "label": "Native name", "type": "string", "description": "Name of the writer in his native languages(s). Use {{Plainlist}} for multiple values." }, "native_name_lang": { "required": false, "label": "Native name language", "type": "string", "description": "A language tag e.g. 'fr' for French. If more than one, use {{lang}} inside native_name instead" }, "image": { "required": false, "label": "Image", "type": "wiki-file-name", "description": "Image of the writer. Insert image name. Use only the file name such as abc.jpg, xyz.png, 123.gif, etc. Do not use syntax such as [[File:abc.jpg]] or [[File:abc.jpg|200px]]\nOnly free-content images are allowed for depicting living people. Non-free and \"fair use\" images, e.g., promo photos, CD/DVD covers, posters, screen captures, etc., will be deleted. See WP:NONFREE.", "suggested": true }, "image_size": { "required": false, "label": "Image size", "type": "string", "description": "Size to display image.", "aliases": [ "image size", "imagesize" ], "example": "Format: 250px (set width), or 200x300px (max width & max height).", "default": "200px if empty or omitted." }, "image_upright": { "required": false, "label": "Image upright", "type": "string", "description": "Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%)." }, "landscape": { "label": "Landscape", "description": "Set to 'yes' when using wide, short images. The image height (rather than width) will be limited to 200 pixels.", "type": "boolean" }, "alt": { "required": false, "label": "Image alternative text", "type": "string", "description": "The alt attribute for the image, for readers who cannot see the image. See WP:ALT." }, "caption": { "required": false, "label": "Image caption", "aliases": [ "image caption", "image_caption" ], "type": "string", "description": "Caption for the image. Try to include the date the image was created.", "suggested": true }, "pseudonym": { "required": false, "label": "Pseudonym", "type": "string", "description": "Any of the person's aliases or pen names. Use {{Cslist}} for multiple values" }, "birth_name": { "required": false, "label": "Birth name", "type": "string", "description": "Insert person's name at birth (or christening if name at birth is unavailable)." }, "birth_date": { "required": false, "label": "Birth date", "type": "line", "description": "Insert the person's birth date if known as: month day, year or day month year as appropriate.\nFor a living person consider using:\n\n{{Birth date and age|year of birth|month of birth|day of birth}}\nOtherwise use:\n\n{{Birth date|year of birth|month of birth|day of birth}}.\nIn either case, add |df=yes to show date as day before month; otherwise format is month before day.", "suggested": true }, "birth_place": { "required": false, "label": "Birth place", "type": "string", "description": "Insert the person's place of birth if known as: town, city, state, country. Note: Do not add flag icons to the birthplace." }, "death_date": { "required": false, "label": "Death date", "type": "line", "description": "If the person is still living, leave this parameter blank.\n\nInsert the person's date of death if known as: month day, year or day month year as appropriate.\n\nWhen the full birth date and death date are known, use the following:\n\n{{Death date and age|yr died|mo died|da died|yr born|mo born|da born}} - See template page for more details about formatting options.", "suggested": true }, "death_place": { "required": false, "label": "Death place", "type": "string", "description": "Insert the person's place of death if known as: town, city, state, country. Note: Do not add flag icons to the deathplace." }, "resting_place": { "required": false, "label": "Resting place", "type": "string", "description": "Place of writer's grave or ash scattering" }, "occupation": { "required": false, "label": "Occupation", "type": "string", "description": "Insert the type of person: novelist, short story person, journalist, etc. Use {{Cslist}} for multiple values", "suggested": true }, "language": { "required": false, "label": "Language", "type": "string", "description": "Language of published writings" }, "nationality": { "required": false, "label": "Nationality", "type": "string", "description": "Nationality of writer, use only when necessary per [[WP:INFONAT]]" }, "citizenship": { "required": false, "label": "Citizenship", "type": "string", "description": "Writer's country of citizenship" }, "education": { "required": false, "label": "Education", "type": "string" }, "alma_mater": { "required": false, "label": "Alma mater", "type": "string", "description": "University or school that writer attended. If more than one, indicate ones where they obtained their degree(s) or graduated from." }, "home_town": { "required": false, "label": "Home town", "type": "string", "description": "Place where the person was raised and matured" }, "period": { "required": false, "label": "Period", "type": "line", "description": "Dates from first publication to last publication", "suggested": true }, "genre": { "required": false, "label": "Genre", "type": "string", "description": "Use for fiction writers: All genres that the person wrote in. Use {{Cslist}} for multiple values" }, "subject": { "required": false, "label": "Subject", "type": "string", "description": "Use for non-fiction writers: All subjects that the person wrote about. Use {{Cslist}} for multiple values", "suggested": true }, "movement": { "required": false, "label": "Movement", "type": "string", "description": "Insert the literary movement associated with or involving the person. Use {{Cslist}} for multiple values" }, "notable_works": { "required": false, "label": "Notable works", "type": "string", "description": "Names of notable works (see WP:NN). Use {{Unbulleted list}} for multiple values.", "aliases": [ "notableworks" ], "suggested": true }, "spouse": { "required": false, "label": "Spouse", "type": "string", "description": "Name of spouse(s), followed by years of marriage. Use the format Name (1950–present) for current spouse and Name (1970–1999) for former spouse(s). Use {{Plainlist}} for multiple values." }, "partner": { "required": false, "label": "Partner", "type": "string", "description": "Name of long-term unmarried partner(s) (e.g., domestic partner). Use {{Plainlist}} for multiple values." }, "children": { "required": false, "label": "Children", "type": "string", "description": "Number of children (e.g., 3), or list of children names. Use {{Plainlist}} for multiple values." }, "relatives": { "required": false, "label": "Relatives", "type": "string", "description": "Names of parents, siblings or other relatives; include only if they are independently notable or particularly relevant. Include the relationship in parentheses after the name (father, sister, uncle, etc.). Use {{Plainlist}} for multiple values." }, "awards": { "required": false, "label": "Awards", "type": "string", "description": "Insert any notable awards the person has won.\nConsider using the template: {{Awards|award|year|title|role}}\n\nUse {{Plainlist}} for multiple values.", "suggested": true }, "signature": { "required": false, "label": "Signature", "type": "wiki-page-name", "description": "File name of the writer's signature. Image is displayed at a width of 128px." }, "signature_type": { "description": "Alter from Signature to, for example, Seal", "label": "Signature type", "type": "string" }, "signature_size": { "description": "Default is 150px. If necessary, a signature can be resized manually as per the \"image_size\" parameter.", "label": "Signature size" }, "signature_alt": { "required": false, "label": "Signature (alternative)", "type": "string", "description": "Alternative text for signature. Write out the signature exactly as it appears in the image, including punctuation. (For accessibility, to be read by screen readers.)" }, "years_active": { "description": "Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format 1950–2000, or 1970–present if still active (note the use of an en dash, not hyphen). If no dates of birth and/or death are known for the subject, only a floruit date range, as is common with ancient subjects, this parameter can be used for it. If approximate (circa) dates are known for either or both, put them in the birth_date and death_date parameters.", "label": "Years Active", "type": "string", "required": false }, "module": { "required": false, "label": "Module", "type": "string", "description": "Used for embedding other infoboxes into this one" }, "website": { "required": false, "label": "Website", "type": "string", "description": "If the person has an official website enter it here. Do not enter unofficial, blogs or fan websites. Only one official website is allowed. If the person has more than one official website, only the most prominent should be listed in the infobox. All other websites should be listed in the article under ==External links==.\nUse {{URL}}. Do not include the \"http[s]://\" or \"www.\" parts unless the server requires it. Use camel case capitalization to make multiword domain names easier to read.", "example": "{{URL|ExampleCompany.com}}", "suggested": true }, "portaldisp": { "required": false, "label": "Portal link", "type": "string", "description": "This is an optional parameter to display the literature portal link at the bottom of the infobox. Set this parameter to yes or y for enabling the portal link.", "suggestedvalues": [ "yes" ] } } } </templatedata> {{Collapse bottom}} ==Example== {{Infobox writer | name = J. K. Rowling | honorific_suffix = {{post-nominals|country=GBR|CH|OBE|HonFRSE|FRCPE|FRSL|size=100%}} | image = J. K. Rowling 2010.jpg | caption = Rowling at the [[White House]] in 2010 | birth_name = Joanne Rowling | birth_date = {{Birth date and age|df=yes|1965|7|31}} | birth_place = [[Yate]], Gloucestershire, England | pseudonym = {{unbulleted list|J. K. Rowling|Robert Galbraith}} | occupation = {{hlist|Author|philanthropist}} | alma_mater = {{ubl|[[University of Exeter]]|[[Moray House School of Education|Moray House]]}} | period = [[Contemporary literature|Contemporary]] | years_active = 1997–present | genres = {{hlist|[[Fantasy]]|[[drama]]|[[young adult fiction]]|[[crime fiction]]}} | subject = | movement = | spouse = {{unbulleted list|{{marriage|Jorge Arantes|1992|1995|end=divorced}}|{{marriage|Neil Murray|26 December 2001}}}} | children = 3 | relatives = | website = {{URL|jkrowling.com}} | signature = JKRowlingsignature.svg }} <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox writer | name = J. K. Rowling | honorific_suffix = {{post-nominals|country=GBR|CH|OBE|HonFRSE|FRCPE|FRSL|size=100%}} | image = J. K. Rowling 2010.jpg | caption = Rowling at the [[White House]] in 2010 | birth_name = Joanne Rowling | birth_date = {{Birth date and age|df=yes|1965|7|31}} | birth_place = [[Yate]], Gloucestershire, England | pseudonym = {{unbulleted list|J. K. Rowling|Robert Galbraith}} | occupation = {{hlist|Author|philanthropist}} | alma_mater = {{ubl|[[University of Exeter]]|[[Moray House School of Education|Moray House]]}} | period = [[Contemporary literature|Contemporary]] | years_active = 1997–present | genres = {{hlist|[[Fantasy]]|[[drama]]|[[young adult fiction]]|[[crime fiction]]}} | subject = | movement = | spouse = {{unbulleted list|{{marriage|Jorge Arantes|1992|1995|end=divorced}}|{{marriage|Neil Murray|26 December 2001}}}} | children = 3 | relatives = | website = {{URL|jkrowling.com}} | signature = JKRowlingsignature.svg }} </syntaxhighlight> == Microformat == {{UF-hcard-person}} == Tracking categories == * {{Category link with count|Biography template using pronunciation}} * {{Category link with count|Pages using Infobox writer with unknown parameters}} == See also == * {{tl|Infobox person}} <includeonly> {{Sandbox other|| <!----Categories below this line, please; interwikis to Wikidata----> {{DEFAULTSORT:Writer}} [[Category:Publishing infobox templates]] [[Category:People and person infobox templates|Writer]] [[Category:Biographical templates usable as a module]] [[Category:Infobox templates with module parameter|Writer]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }} </includeonly> 553d1466b6e2e37ad8b54f07dc7b1ee693fcbeef Template:Math templates 10 1564 2899 2023-08-16T02:21:03Z w>PK2 0 use bodyclass = hlist in navbox as per [[WP:HLIST]] wikitext text/x-wiki <!-- This template uses British English. --> {{Navbox with collapsible groups | name = Math templates | state = {{{state|expanded}}} | bodyclass = hlist | title = Math templates | liststyle = font-size:110%;<!--(as some templates' descriptions include links)--> | selected = {{{selected|{{{expanded|{{{1|}}}}}}}}} <!-------------- Functions / Numeral systems --------------> | abbr1 = FN | group1 = *Functions *Numeral systems | state1 = <noinclude>expanded</noinclude> | list1 = {{Navbox |child | group1 = Functions | list1 = *{{tlbare|elementary arithmetic}} *{{tlbare|precision}} *{{tlbare|val}}&nbsp;(value formatting) *{{tlbare|percentage}} | group2 = Numeral systems | list2 = *{{ml|BaseConvert|''X''to''Y''}} *{{tlbare|binary}} *{{tlbare|decimal2Base}} *{{tlbare|hex2dec}} *{{tlbare|hexadecimal}} *{{tlbare|octal}} *{{tlbare|quaternary}} *{{tlbare|quinary}} *{{tlbare|rn}} *{{tlbare|roman}} *{{tlbare|senary}} *{{tlbare|ternary}} *{{tlbare|vigesimal}} }} <!---------------------- Conversions ----------------------> | abbr2 = conversions | group2 = Conversions | state2 = <noinclude>expanded</noinclude> | list2 = {{Aligned table |style=margin:0 auto 0;text-align:left; | {{Aligned table |style=padding-right:2.5em; |col1style=text-align:right;white-space:nowrap;padding-right:1.0em; |col2style=font-size:90%;<!--(see liststyle above)--> vertical-align:middle;line-height:1.3em;font-style:italic; | {{tlbare|convert}} | many units (see: [[Template:Convert/list_of_units |list]]) | {{tlbare|cvt}} | abbreviated {{tl|convert}} | {{tlbare|convinfobox}} | {{tl|convert}} for infoboxes | {{tlbare|bbl to t}} | barrels of oil to tonnes | {{tlbare|long ton}} | long hundredweights, quarters and pounds to kilograms;<br/>long tons and hundredweights to pounds and metric tons | {{tlbare|miles-chains}} | miles and chains to kilometres linking "chains" }} | {{Aligned table |col1style=text-align:right;white-space:nowrap;padding-right:1.0em; |col2style=font-size:90%;<!--(as above)--> vertical-align:middle;line-height:1.3em;font-style:italic; | {{tlbare|decdeg}} | degrees, minutes, and seconds to [[decimal degrees]] | {{tlbare|deg2DMS|deg2dms}} | decimal degrees to degrees, minutes, and seconds | {{tlbare|deg2HMS|deg2hms}} | decimal degrees to [[hour angle]] (in hours, minutes, and seconds) | {{tlbare|HMS2Deg|hms2deg}} | [[hour angle]] (in hours, minutes, and seconds) to decimal degrees | {{tlbare|inflation}} | calculate inflation of Consumer Price Index-related prices | {{tlbare|pop density}} | population density in an area | {{tlbare|track gauge}} | railway track gauges }} }} <!----------------------- Notation & formatting ------------------------> | group3 = Notation and {{Category link|Mathematical formatting templates|formatting}} | abbr3 = notation | state3 = <noinclude>expanded</noinclude> | list3 = {{Aligned table |style=margin:0 auto 0;text-align:left; | {{Aligned table |style=padding-right:2.5em; |col1style=text-align:right;white-space:nowrap;padding-right:1.0em; |col2style=font-size:90%;<!--(as above)--> vertical-align:middle;line-height:1.3em;font-style:italic; | {{tlbare|bigmath}} | bigger font to match {{noitalic|[[TeX]]}} {{noitalic|<samp><nowiki>\</nowiki>displaystyle</samp>}} (standalone formulas only) | *{{tlbare|bra-ket}} *{{tlbare|braket}} *{{tlbare|bra}} *{{tlbare|ket}} | [[bra–ket notation]] | {{tlbare|ceil}}, {{tlbare|floor}} | calculations [[:mw:Help:Extension:ParserFunctions##expr|:mw:Help:#expr]]; formatting indicators {{noitalic|1={{ceil|3.14}}}}, {{noitalic|1={{floor|3.14}}}} (no calculation performed) | {{tlbare|fraction}} | slant fractions {{frac|3|5}} (not for maths/science articles; use ''standing'' or upright fractions {{noitalic|{{tlx|sfrac}}}} instead) | {{tlbare|intmath}} | [[integral symbol]]s | *{{tlbare|langle}} *{{tlbare|rangle}} *{{tlbare|Angle bracket|angbr}} | [[Bracket#Angular brackets|angular bracket]]s | *{{tlbare|ldelim}} *{{tlbare|rdelim}} | multiline delimiters (2–5 lines inclusive) | {{tlbare|abs}} | absolute values (paired vertical lines) | {{tlbare|math}} | short text-based formulas | {{tlbare|mathcal}} | [mathematical] calligraphic font; alternative to {{noitalic|[[LaTeX]]}} {{noitalic|<samp><nowiki>\</nowiki>mathcal{...}</samp>}} }} | {{Aligned table |col1style=text-align:right;white-space:nowrap;padding-right:1.0em; |col2style=font-size:90%;<!--(as above)--> vertical-align:middle;line-height:1.3em;font-style:italic; | {{tlbare|mvar}} | individual italicized maths variables in normal text | *{{tlbare|overline}} *{{tlbare|underline}} | a line set above/below a sequence of characters | {{tlbare|overarc}} | an arc set above a sequence of characters | *{{tlbare|overset}} *{{tlbare|underset}} | arbitrary characters/diacritics set above/below one another | {{tlbare|pars}} | parentheses that can be resized {{noitalic|1={{math|{{pars|s=150|{{large|∑}}}}}}}} | {{tlbare|sfrac}} | "standing" or upright fractions {{sfrac|3|5}} (use in maths/science articles instead of{{noitalic|{{tlx|fraction}}}}) | *{{tlbare|sub}} *{{tlbare|sup}} *{{tlbare|su}} | subscripts and superscripts |style7.1=vertical-align:middle;text-align:right;padding-right:1.0em;| {{tlbare|tmath}} | Wrap {{noitalic|[[TeX]]}} in {{noitalic|<nowiki><math></nowiki>}} tags | {{tlbare|tombstone}} | symbol indicating the [[Tombstone (typography)|end of a proof]] | {{tlbare|val}} | measurement values, uncertainties and units | {{tlbare|vec}} | various overarrows, underarrows, etc.<!--pointing left, right or both ways--> }} }} <!---------------- Boxes / Tags / Notices -----------------> | abbr4 = BTN | group4 = *Boxes *Tags *Notices | state4 = <noinclude>expanded</noinclude> | list4 = {{Navbox with columns |child |colstyle=text-align:center; | col1header = Boxes | col1 = *{{tlbare|arithmetic operations}} *{{tlbare|calculus}} *{{tlbare|Infobox mathematical function}} *{{tlbare|functions}} | col2header = Tags | col2 = *{{tlbare|metricate}} *{{tlbare|undue precision}} *{{tlbare|units attention}} }} | below = *{{icon|Category}} {{c|Mathematics templates|Category}} *[[:Module:Math]] }}<noinclude> {{Documentation}} </noinclude> 26ad83e7e42cc47c602b1e14ad1859e0f4fb6867 Template:Infobox3cols/doc 10 1539 2874 2023-08-16T21:46:03Z w>SWinxy 0 Split module doc; use <syntaxhighlight> wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}} {{Lua|Module:Infobox3cols}} {{Uses TemplateStyles|Template:Plainlist/styles.css|Template:Hlist/styles.css}} This is a fork of {{tl|infobox}} which provides an option for up to three <code>data</code> attributes per row, in addition to a label: data''x''a, data''x''b and data''x''c. {{clear}} == Usage == <syntaxhighlight lang="wikitext"> {{Infobox3cols | child = | bodyclass = | bodystyle = | title = | titleclass = | titlestyle = | above = | abovestyle = | aboveclass = | aboverowclass = | subheader = | subheaderstyle = | subheaderclass = | subheaderrowclass1 = | subheader2 = | subheaderrowclass2 = | image = | image1 = | caption = | caption1 = | captionstyle = | imagestyle = | imageclass = | imagerowclass1 = | image2 = | caption2 = | imagerowclass2 = | headerstyle = | labelstyle = | datastyle = | datastylea = | datastyleb = | datastylec = | extracellstyles = 1,3a,4b=... | header1 = | label1 = | data1 = | data1a = | data1b = | data1c = | class1 = | rowclass1 = | header2 = | rowclass2 = | label2 = | data2 = | class2 = | data2a = | data2b = | class2a = | class2b = | class2c = | data2c = ... | below = | belowstyle = | belowclass = | belowrowclass = | name = }} </syntaxhighlight> == Parameter precedence == The bulk of the infobox is generated by blocks of numbered parameters: <code>headerX</code>, <code>labelX</code>, <code>dataX</code>, <code>dataXa</code>, <code>dataXb</code>, and <code>dataXc</code>. The following examples demonstrate the order in which these parameters are used. {| |+ Example 1 ! Code !! Result |- style="vertical-align:top" | <syntaxhighlight lang="wikitext"> {{Infobox3cols | header1 = header1 | label1 = label1 | data1 = data1 | data1a = data1a | data1b = data1b | data1c = data1c }} </syntaxhighlight> | {{infobox3cols | header1 = header1 | label1 = label1 | data1 = data1 | data1a = data1a | data1b = data1b | data1c = data1c }} |} {| |+ Example 2 ! Code !! Result |- style="vertical-align:top" | <syntaxhighlight lang="wikitext"> {{infobox3cols | header1 = | label1 = label1 | data1 = data1 | data1a = data1a | data1b = data1b | data1c = data1c }} </syntaxhighlight> | {{infobox3cols | header1 = | label1 = label1 | data1 = data1 | data1a = data1a | data1b = data1b | data1c = data1c }} |} {| |+ Example 3 ! Code !! Result |- style="vertical-align:top" | <syntaxhighlight lang="wikitext"> {{infobox3cols | header1 = | label1 = | data1 = data1 | data1a = data1a | data1b = data1b | data1c = data1c }} </syntaxhighlight> | {{infobox3cols | header1 = | label1 = | data1 = data1 | data1a = data1a | data1b = data1b | data1c = data1c }} |} {| |+ Example 4 ! Code !! Result |- style="vertical-align:top" | <syntaxhighlight lang="wikitext"> {{infobox3cols | header1 = | label1 = label1 | data1 = | data1a = data1a | data1b = data1b | data1c = data1c }} </syntaxhighlight> | {{infobox3cols | header1 = | label1 = label1 | data1 = | data1a = data1a | data1b = data1b | data1c = data1c }} |} {| |+ Example 5 ! Code !! Result |- style="vertical-align:top" | <syntaxhighlight lang="wikitext"> {{infobox3cols | header1 = | label1 = label1 | data1 = | data1a = | data1b = data1b | data1c = data1c }} </syntaxhighlight> | {{infobox3cols | header1 = | label1 = label1 | data1 = | data1a = | data1b = data1b | data1c = data1c }} |} {| |+ Example 6 ! Code !! Result |- style="vertical-align:top" | <syntaxhighlight lang="wikitext"> {{infobox3cols | header1 = | label1 = label1 | data1 = | data1a = | data1b = | data1c = data1c }} </syntaxhighlight> | {{infobox3cols | header1 = | label1 = label1 | data1 = | data1a = | data1b = | data1c = data1c }} |} {| |+ Example 7 ! Code !! Result |- style="vertical-align:top" | <syntaxhighlight lang="wikitext"> {{infobox3cols | header1 = | label1 = | data1 = | data1a = data1a | data1b = data1b | data1c = data1c }} </syntaxhighlight> | {{infobox3cols | header1 = | label1 = | data1 = | data1a = data1a | data1b = data1b | data1c = data1c }} |} == Tracking categories == * {{clc|Pages using infobox3cols with undocumented parameters}} * {{clc|Pages using infobox3cols with header0 or label0 or data0}} * {{clc|Pages using infobox3cols with multidatastyle}} <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Infobox templates| ]] [[Category:Wikipedia metatemplates]] [[Category:Templates that add a tracking category]] [[Category:Infobox templates with three columns| ]] }}</includeonly> ab485207606ddc9a4a57e3ff567920b0e72b8eae Template:More citations needed 10 1020 2236 2023-08-18T03:57:08Z wikipedia>SWinxy 0 Use [[Special:EditPage]] link wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = {{{name|More citations needed}}} | small = {{#if:{{{small|}}}|left}} | type = content | class = ambox-Refimprove | image = [[File:Question book-new.svg|50x40px|alt=]] | issue = This {{#if:{{{1|}}}|{{{1}}}|article}} '''needs additional citations for [[Wikipedia:Verifiability|verification]]'''. | fix = Please help [[Special:Edit/{{FULLPAGENAME}}|improve this article]] by [[Help:Referencing for beginners|adding citations to reliable sources]]{{#if:{{{1|}}}|{{sp}}in this {{{1}}}}}. Unsourced material may be challenged and removed.{{#if:{{{find2|{{{unquoted|}}}}}}| <br /><small>{{find sources mainspace|{{#if:{{{find|}}}|{{{find}}}|.}}|{{{find2|{{{unquoted|}}}}}}}}</small> |{{#if:{{{find|}}}|{{#ifeq: {{{find|}}} |none ||<br /><small>{{find sources mainspace|{{{find}}} }}</small>}}|<br /><small>{{find sources mainspace}}</small>}} }} | removalnotice = yes | talk = {{{talk|}}} | date = {{{date|}}} | cat = Articles needing additional references | all = All articles needing additional references }} }}<noinclude> <!-- Please add categories to the /doc subpage, thanks --> {{Documentation}} </noinclude> f2f3be3f3c3586a16c3e9caeb10bd8b6b751fab3 Template:Infobox UK place/NoLocalMap 10 1417 2752 2023-08-18T18:00:08Z w>MusikBot II 0 Protected "[[Template:Infobox UK place/NoLocalMap]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 250 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <noinclude>Do not delete this page, just select the '''What links here''' option to find pages with the UK map shown rather than a more local one.</noinclude> b2cd2398b5b579ab44791b1c8ad576927270f6ca Template:Marriage/doc 10 1260 2594 2023-08-19T09:05:05Z CrafterNova 48 /* Usage */wording fix wikitext text/x-wiki {{Documentation subpage}} <!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{esoteric}} {{high-use}} {{Lua|Module:Check for unknown parameters|Module:Parameter validation}} {{Uses Wikidata|P21|P570}} {{Uses TemplateStyles|Template:Marriage/styles.css}} ==Usage== This template is intended for use in infoboxes; specifically {{tl|Infobox person}} and [[:Category:Templates calling Infobox person|templates calling Infobox person]]. {{tl|Marriage}} takes up to three unnamed parameters (name, start date, end date)&mdash;plus an optional named parameter {{para|end}} (also called {{para|reason}})&mdash;to produce output such as the following: {{Markup | style = font-size:small; | title = Examples | col1 = Template | col2 = Output | <nowiki>{{marriage |John Smith |1 January 1895 |December 31, 1905}}</nowiki> | {{marriage |John Smith |1 January 1895 |December 31, 1905}} | <nowiki>{{marriage |John Doe |1885 |July 27, 1888 |end=d.}}</nowiki> | {{marriage |John Doe |1885 |July 27, 1888 |end=d.}} | <nowiki>{{marriage |Jane Doe |2002}}</nowiki> | {{marriage |Jane Doe |2002}} | <nowiki>{{marriage |John Q. Public |2002|2010}}</nowiki> | {{marriage |John Q. Public |2002|2010}} | <nowiki>{{marriage |John Q. Citizen |2002|2010|end=div}} {{marriage |<!--John Q. Citizen-->|2012}}</nowiki> | {{marriage |John Q. Citizen |2002|2010|end=div}} {{marriage |<!--John Q. Citizen-->|2012}} | <nowiki>{{marriage |John Q. Taxpayer |2002|end=div}}</nowiki> | {{marriage |John Q. Taxpayer |2002|end=div}} | <nowiki>{{marriage |Joe Blow|<!--unknown-->|2010|end=div}}</nowiki> | {{marriage |Joe Blow|<!--unknown-->|2010|end=div}} | <nowiki>{{marriage |Joe Bloggs|<!--unknown-->|2010}}</nowiki> | {{marriage |Joe Bloggs|<!--unknown-->|2010}} | <nowiki>{{marriage |Joe Sixpack|<!--unknown-->|2010|end=<!--uncertain-->}}</nowiki> | {{marriage |Joe Sixpack|<!--unknown-->|2010|end=<!--uncertain-->}} | <nowiki>{{marriage |Joe Schmo |end=div}}</nowiki> | {{marriage |Joe Schmo |end=div}} | <nowiki>{{marriage |Juan Perez |2010|reason=<!--earliest-->}}</nowiki> | {{marriage |Juan Perez |2010|reason=<!--earliest-->}} }} Use of the first two parameters with {{para|end}} ({{para|reason}}) will cause a line break between the name and the start date. ===In an infobox=== {{Infobox person|name={{tl|Infobox person}} |spouse = {{Plainlist| * {{marriage |John Smith |1 January 1895 |December 31, 1905}} * {{marriage |John Doe |1885 |July 27, 1888 |end=d.}} * {{marriage |Jane Doe |2002}} * {{marriage |John Q. Public |2002|2010}} * {{marriage |John Q. Citizen |2002|2010|end=div}} * {{marriage |<!--John Q. Citizen-->|2012}} * {{marriage |John Q. Taxpayer |2002|end=div}} * {{marriage |Joe Blow|<!--unknown-->|2010|end=div}} * {{marriage |Joe Bloggs|<!--unknown-->|2010}} * {{marriage |Joe Sixpack|<!--unknown-->|2010|end=<!--uncertain-->}} * {{marriage |Joe Schmo |end=div}} * {{marriage |Juan Perez |2010|reason=<!--earliest-->}} }} }} Infoboxes already reduce text size to 88%, and [[MOS:FONTSIZE]] sets a lower limit for text size at 85% of the normal page font size, so it is not appropriate to use font size reduction when this template is used in an infobox. The example here is produced by: <syntaxhighlight style="font-size:small;" lang="wikitext"> {{Infobox person |spouse = {{Plainlist| * {{marriage |John Smith |1 January 1895 |December 31, 1905}} * {{marriage |John Doe |1885 |July 27, 1888 |end=d.}} * {{marriage |Jane Doe |2002}} * {{marriage |John Q. Public |2002|2010}} * {{marriage |John Q. Citizen |2002|2010|end=div}} * {{marriage |<!--John Q. Citizen-->|2012}} * {{marriage |John Q. Taxpayer |2002|end=div}} * {{marriage |Joe Blow|<!--unknown-->|2010|end=div}} * {{marriage |Joe Bloggs|<!--unknown-->|2010}} * {{marriage |Joe Sixpack|<!--unknown-->|2010|end=<!--uncertain-->}} * {{marriage |Joe Schmo |end=div}} * {{marriage |Juan Perez |2010|reason=<!--earliest-->}} }} }} </syntaxhighlight> ==Syntax and parameters== <code>{{((}}marriage&thinsp;{{!}}{{thin space|<{{var|text}}>}}{{!}}{{thin space|<{{var|start date}}>}}{{!}}{{thin space|<{{var|end date}}>}}[{{!}}{{thin space|end{{=}}}}]{{))}}</code> {{Aligned table |class=wikitable |style=line-height:1.35em; | col1style=vertical-align:middle;text-align:center;padding-right:1.0em; |col2style=vertical-align:middle;padding-right:0.5em; | row1style=background:whitesmoke;vertical-align:middle;text-align:center;font-weight:bold; | Parameter | Description | <{{var|text}}> | (First unnamed parameter) Some text&mdash;usually a spouse's name&mdash;preceding the parenthesis carrying the marriage date/s, etc. This parameter may be omitted, typically for a remarriage to the same spouse. | <{{var|start date}}> | (Second unnamed parameter) Year or full date when the marriage began. Only the year will be displayed. If a full date is provided, it is given via a tooltip; i.e., {{tla|Tooltip}}. ([[#In an infobox|See first and second examples above.]]) | <{{var|end date}}> | (Third unnamed parameter) Year or full date when the marriage ended. Only the year will be displayed. If a full date is provided, it is given via a tooltip; i.e., {{tla|Tooltip}}. ([[#In an infobox|See first and second examples above.]]) If the marriage ended because of the death of the article's subject, {{insource|"Omission per Template:Marriage instructions"|do {{em|not}} provide a date}}. | {{para|end}} or {{para|reason}} | Reason for marriage's end. If the marriage ended because of the death of the article's subject, {{insource|"Omission per Template:Marriage instructions"|do {{em|not}} provide a reason}}; use of <i>{{dc|his death}}</i> or <i>{{dc|her death}}</i> for this purpose has been deprecated ([[Template talk:Marriage/Archive 5#Use "(m. 1900)" and do not fill in an end date|see discussion]]). * {{bxtn|d}}, {{bxtn|d.}}, or {{bxtn|died}} includes {{xtn|died}} within the parentheses if the marriage ended on the spouse's death. * {{bxtn|div}}, {{bxtn|div.}}, or {{bxtn|divorced}} includes {{abbr|{{xtn|div.}}|divorced}} or {{xtn|divorced}} within the parentheses. * Otherwise, {{para|end|<var>value</var>}} includes customized text. For example: : {{code|<nowiki>{{marriage |Miss Doe |January 1, 1882 |December 31, 1905 |end=annulled}}</nowiki>}} which produces: {{block indent |style=margin-bottom:0.6em; | {{marriage |Miss Doe |January 1, 1882 |December 31, 1905 |end=annulled}} }} {{qnote|Use of the values {{dcr|w}}, {{dcr|w.}}, {{dcr|wid}}, {{dcr|wid.}}, {{dcr|widow}}, or {{dcr|widowed}} is [[Template talk:Marriage/Archive 4#Who is widowed - topic or topic's spouse?|no longer supported]] and will display an error message.}} }} None of the parameters are required on their own, but if a template is missing all three of start date, end date, and reason, an error message will be displayed. ==Tracking categories== ===Categories populated via template logic=== * {{Category link with count|Marriage template errors}}: invalid or missing dates; unsupported parameters or values ** {{Category link with count|Marriage template deprecations}} ** {{Category link with count|Category:Marriage template anomalies}} ===Categories populated via [[Module:Parameter_validation|parameter validation]]=== * {{Category link with count|Pages using Marriage with duplicate parameters}} * {{Category link with count|Pages using Marriage with unknown parameters}} * {{Category link with count|Pages using Marriage with deprecated parameters}} ==TemplateData== {{TemplateData header}} <templatedata>{ "params": { "1": { "label": "Spouse's name", "description": "Name of the person to whom the subject is married.", "type": "string", "suggested": true }, "2": { "label": "Date married", "description": "Date the marriage began.", "type": "date", "suggested": true }, "3": { "label": "Date ended", "description": "Date the marriage was dissolved or the spouse of the article's subject died.", "type": "date", "required": false }, "end": { "label": "Reason ended", "description": "Reason for marriage's end. If the marriage ended because of the death of the article's subject, do not provide a reason.", "type": "string", "required": false, "aliases": [ "reason" ], "suggestedvalues": [ "died", "divorced" ] } }, "format": "inline" }</templatedata> <includeonly>{{sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Text-specific formatting and function templates‎]] [[Category:Marriage templates]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> ad7cdf80745a2d1fc2328987b9401dc5441882c6 Template:Visible anchor 10 1243 2577 2023-08-19T16:03:20Z w>Paine Ellsworth 0 update wikitext text/x-wiki <templatestyles src="Template:Visible anchor/styles.css" /><span class="vanchor"><!-- -->{{#if:{{{1|}}}|<span id="{{{1}}}"></span>}}<!-- -->{{#if:{{{2|}}}|<span id="{{{2}}}"></span>}}<!-- -->{{#if:{{{3|}}}|<span id="{{{3}}}"></span>}}<!-- -->{{#if:{{{4|}}}|<span id="{{{4}}}"></span>}}<!-- -->{{#if:{{{5|}}}|<span id="{{{5}}}"></span>}}<!-- -->{{#if:{{{6|}}}|<span id="{{{6}}}"></span>}}<!-- -->{{#if:{{{7|}}}|<span id="{{{7}}}"></span>}}<!-- -->{{#if:{{{8|}}}|<span id="{{{8}}}"></span>}}<!-- -->{{#if:{{{9|}}}|<span id="{{{9}}}"></span>}}<!-- -->{{#if:{{{10|}}}|<span id="{{{10}}}"></span>}}<!-- --><span class="vanchor-text">{{{text|{{{1}}}}}}</span><!-- -->{{#if:{{{11|}}}|<span class="error">[[Template:Visible anchor]]: too many anchors, maximum is 10.</span>}}<!-- --></span><noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES TO THE /doc SUBPAGE; INTERWIKIS GO TO WIKIDATA, THANK YOU! --> </noinclude> 291421f0e3c11a13eea17d283cc3d18aa587bbf7 Help:Footnotes 12 586 1320 2023-08-20T07:07:44Z wikipedia>Mathglot 0 /* Footnotes: predefined groups */ Use template. wikitext text/x-wiki <noinclude>{{pp-semi-indef}}</noinclude>{{short description|Wikipedia help article}} {{For|the official guideline on citing sources|Wikipedia:Citing sources}} {{For|help with citation templates|Help:Citation Style 1}} {{Redirect|WP:FN|the fringe theories noticeboard|Wikipedia:Fringe theories/Noticeboard}} {{Redirect|WP:NOTES|hatnotes|Wikipedia:Hatnote|article layout of footnotes|MOS:NOTES|musical notes|Wikipedia:Manual of Style/Music#Images and notation}} {{Wikipedia how to|H:FOOT|WP:FOOTNOTES|H:FN}} This page explains how to create the '''Footnotes''' section for Wikipedia articles. In this context, the word "Footnotes" refers to the Wikipedia-specific manner of documenting an article's sources and providing tangential information, and should not be confused with the general concept of [[Note (typography)|footnotes]]. This how-to does not cover the formatting of citations within the Footnotes section, which is reviewed in [[Wikipedia:Citing sources|Citing sources]]. Footnotes are used most commonly to provide: * [[Wikipedia:Citing sources|references (bibliographic citations) to reliable sources]], * [[Help:explanatory notes|explanatory information]], or * source information for tables and other elements. Footnotes or [[Help:Shortened footnotes|shortened footnotes]] may be used at the editor's discretion in accordance with the guideline on [[WP:CITEVAR|Variation in citation methods]]. Only certain types of material on the English Wikipedia are required to have an inline citation. There is [[Wikipedia:Inline citation#Citation density|no requirement to provide a citation for every sentence]], because multiple sentences may be supported by the same footnote. For advice on which material should be cited, see the guidelines on [[WP:MINREF|When you must use inline citations]], the [[Wikipedia:Good article criteria|Good article criteria]] and [[Wikipedia:when to cite|When to cite]]. For advice on how to organize and format bibliographic citations, see the guideline on [[Wikipedia:Citing sources|Citing sources]] and examples of [[Wikipedia:Citation templates#Examples|Citation templates]]. Footnotes are created using the {{cite.php}} software extension. This extension adds the HTML-like elements {{tag|ref}}, {{tag|references|s}} and {{tag|references}}. The elements are also used in a number of templates; for example, it is becoming more common to use {{tl|reflist}} rather than {{tag|references|s}} as it can style the reference list. ==Overview== {{VE documentation|style=width: 25%; font-size: 87%; float:right}}<!--This is because the visual editor is even more limited than the standard Wikitext editor--> The Footnotes system shows two elements on the page: * A '''Footnote marker''' is displayed in the article's content as a bracketed, superscripted number, letter, or word. Examples shown respectively are: {{dummy ref}}{{dummy ref|a}}{{dummy ref|Note 1}}. This footnote label is linked to the full footnote. Clicking on the footnote marker jumps the page down to the footnote and highlights the citation. If you are using the desktop site and have Javascript enabled, then hovering your cursor over a footnote marker (or touching it on touch devices) will show a pop-up box containing the footnote. * A '''Footnote''' displays the full citation for the source. Together the footnotes are displayed in an ordered list wherever the reference list markup {{tl|reflist}} is placed. Each entry begins with the footnote label in plain text. The entire reference list is formatted in a slightly smaller font. :Each successive footnote label is automatically incremented. Thus the first footnote marker would be {{dummy ref}}, the second would be {{dummy ref|2}} and so on. Custom labels are also incremented: {{dummy ref|a}}{{dummy ref|b}}{{dummy ref|c}}, {{dummy ref|Note 1}} {{dummy ref|Note 2}} {{dummy ref|Note 3}}. :For a single use footnote, the label is followed by a caret (^) that is a backlink to the matching footnote marker. For example: {{dummy footnote|margin=5em}} :If a named footnote is used in the text multiple times, then the footnote has multiple backlinks shown as letters: {{dummy footnote|2|a b c|margin=5em}} :Clicking on the backlink or pressing {{keypress|Alt|←}} returns to the footnote marker. ===Footnotes in action=== The superscript numeral "1" in square brackets at the end of this sentence is an example of a footnote marker.<ref>This is a footnote that contains a citation or note.</ref> {{reflist}} {{anchor|Footnote markers: the basics}} ==Footnotes: the basics== {{See also|Help:Reftags}} To create the footnote marker, determine the point in the page content where the marker is desired and enter the markup with the citation or note inside the {{tag|ref}} tags. For example: {{markup |<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}}</nowiki> |This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}} }} The {{tl|reflist}} template will be explained in the next section. The content inside the {{tag|ref}} will show in the reference list. The ref tags can be added anywhere a citation or note is needed. There must be content inside the tags, else an error will show. ===Where to place ref tags=== Ref tags should follow any punctuation (usually a period), not precede it; see [[WP:REFPUNC]]. There should be no space between the punctuation and the tag: {{markup |<nowiki>...text.<ref>Content of the reference</ref> {{reflist}}</nowiki> |...text.<ref>Content of the reference</ref> &nbsp; &nbsp; {{xt|Right}} {{reflist}} |<nowiki>...text<ref>Content of the reference</ref>. {{reflist}}</nowiki> |...text<ref>Content of the reference</ref>. &nbsp; &nbsp; {{!xt|Wrong (tag before punctuation)}} {{reflist}} |<nowiki>...text. <ref>Content of the reference</ref> {{reflist}}</nowiki> |...text. <ref>Content of the reference</ref> &nbsp; &nbsp; {{!xt|Wrong (space before tag)}} {{reflist}} }} ===Formatting ref tags=== The content of the ref tags can be formatted using most wiki markup or HTML markup, although techniques such as the [[Help:Pipe trick|pipe trick]] and [[Help:Substitution|template substitution]] will not work in footnotes. For example: {{markup |<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}}</nowiki> |This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}} }} The ref tag content may also contain an internal or external link: {{markup |<nowiki>This is page content.<ref>''[http://www.example.org LibreOffice For Starters]'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}}</nowiki> |This is page content.<ref>''[http://www.example.org LibreOffice For Starters]'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}} }} {{MediaWiki URL rules}} ==Reference lists: the basics== Once any number of footnotes have been inserted into the content, the reference list must be generated. For the basic reference list, add {{tl|reflist}} wherever the list is desired. Once the page is published and viewed, the footnotes will be automatically generated and numbered and the reference list will be generated. The main reference list is placed in a separate section, usually titled "References", "Notes" or the like. {{markup |<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> ==References== {{reflist}}</nowiki> |This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{fake heading|sub=2|References}} {{reflist}} }} '''Notes''' {{shortcut|HELP:MULTIREF}} * In some cases, a page has more than one reference list. Until 2014, multiple uses of {{tl|reflist}} on the same page required use of a {{para|close}} parameter; that bug has been fixed and the{{para|close}} parameter may safely be removed. *When editing, {{tag|references|s}} may be seen instead of {{tl|reflist}}. This will automatically display the references in multiple columns, but {{tag|references|s}} does not offer the other advanced features of {{tl|reflist}}. {{anchor|Naming a ref tag so it can be used more than once|Footnote markers: using a source more than once}} ==Footnotes: using a source more than once== {{Shortcut|WP:REFNAME|WP:NAMEDREFS}} {{Anchor|Reference name (naming a ref tag so it can be used more than once)}} {{Anchor|WP:NAMEDREF}} <!-- from WP:NAMEDREFS redirect --> {{See also|Wikipedia:Citing sources#Citing multiple pages of the same source}} You can cite the same source more than once on a page by using '''named references''', also called named footnotes. The syntax to define a named footnote is: :{{tag|ref|params=name="<var>name</var>"|content=<var>content</var>}} To invoke the named footnote: :{{tag|ref|s|params=name="<var>name</var>"}} {{refname rules}} Note that the colon-followed-by-numeral names, like <code>":0"</code>, are currently [[Wikipedia:Village_pump_(technical)/Archive_173#VisualEditor_creating_bad_ref_names|generated by default]] in [[WP:VE|VisualEditor]]. {{markup |<nowiki>This is page content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is more content.<ref name="manchester2002" /> {{reflist}}</nowiki> |This is page content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is more content.<ref name="manchester2002" /> {{reflist}} }} The actual name used can be almost anything, but it is recommended that it have a connection to the citation or note. A common practice is to use the author-year or publisher-year for the reference name. This helps editors remember the name, by associating it with the information that is visible to the reader. Note that the footnote labels are incremented in the order they are used, and that they use the same label when reused, thus the labels can seem out of order: {{markup |<nowiki>This is starter content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is expert content.<ref name="lexington2004">{{cite book|title=OpenOffice for Experts|publisher=Lexington|year=2004|p=18}}</ref> And more starter content.<ref name="manchester2002" /> And more expert content.<ref name="lexington2004" /> {{reflist}}</nowiki> |This is starter content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is expert content.<ref name="lexington2004">{{cite book|title=OpenOffice for Experts|publisher=Lexington|year=2004|p=18}}</ref> And more starter content.<ref name="manchester2002" /> And more expert content.<ref name="lexington2004" /> {{reflist}} }} When using both names and [[#Footnotes:_groups|groups]], the syntax is: :{{tag|ref|params=group="<var>groupname</var>" name="<var>name</var>"|content=Content}} Care should be taken when deleting references to avoid creating a cite error. See [[Wikipedia:Avoiding common mistakes#Deleting...|Avoiding common mistakes]]. ==Reference lists: columns== {{shortcut|H:REFCOLS}} {{hatnote|Columns are not supported by Internet Explorer 9 and below; see {{tl|reflist}} for technical details}} When using {{tag|references|s}} or {{tl|reflist}}, the list can be split into columns. The {{tag|references|s}} tag provides a default column width of 30 [[em (typography)|em]]. {{tl|Reflist}} can be used to set a different column width: :{{tlx|reflist|<var>xx</var>em}}, where <var>xx</var> is the column width in em. The number of columns will automatically be adjusted to the width of the display. It should be used only when necessary, as both the tag and the template have built-in auto-formatting capabilities providing a useful default display in most scenarios. The [[Template:Reflist#Columns|set columns feature]] is now [[deprecated]] in favor of the option described above, which is better suited to flexible formatting for a variety of display screen sizes, ranging from mobile phones and tablets to wide-screen "cinema" displays. Forcing a fixed number of columns has been disabled in mobile view. The number of columns to use is up to the editor, but some major practices include: * {{tlx|Reflist|30em}}: Where there are many footnotes plus a page-width Bibliography subsection: see {{oldid|Ebola virus disease|561190497#References|Ebola virus disease (06:28, 23 June 2013)}} * {{tlx|Reflist|20em}}: Where {{sfnote}} are used; see {{oldid|NBR 224 and 420 Classes|442508215#Notes|NBR 224 and 420 Classes (13:32, 1 August 2011)}}. For example: Using {{tlx|Reflist|30em}} will create columns with a minimum width of 30 em, {{markup|title=30em wide columns |<nowiki>Lorem ipsum.<ref>Source name, access date, etc.</ref> Lorem ipsum dolor sit amet.<ref>Source name, access date, etc.</ref> ==References== {{Reflist|30em}}</nowiki> |Lorem ipsum.<ref>Source name, access date, etc.</ref> Lorem ipsum dolor sit amet.<ref>Source name, access date, etc.</ref> {{fake heading|sub=3|References}} {{Reflist|30em}} }} ==List-defined references== {{shortcut|WP:LDR}} {{main|Help:List-defined references}} Some or all of the footnotes can also be defined within the reference section/list, and invoked in the page content. This keeps those citations in one central location for easier maintenance and avoids cluttering the text. This is purely a source code change{{snd}}the actual display of the citation in the text to a reader is unaffected. For a more detailed evaluation of this method, see [[WP:LDRHOW]]. The syntax is: <syntaxhighlight lang="xml"> {{reflist|refs= <ref name="name1">Content</ref> <ref name="name2">Content</ref> <ref name="name...n">Content</ref> }} </syntaxhighlight> or, alternatively, <syntaxhighlight lang="xml"> <references> <ref name="name1">Content</ref> <ref name="name2">Content</ref> <ref name="name...n">Content</ref> </references> </syntaxhighlight> The footnote markers are included as usual for a named footnote. For example: {{markup |<nowiki>The quick brown fox jumps over the lazy dog.<ref name="LazyDog"/> Amazingly few discotheques provide jukeboxes.<ref name="Jukeboxes"/> How razorback-jumping frogs can level six piqued gymnasts.<ref name="JumpingFrogs"/> ==References== {{reflist|refs= <ref name="Jukeboxes">This is the jukeboxes reference.</ref> <ref name="LazyDog">This is the lazy dog reference.</ref> <ref name="JumpingFrogs">This is the jumping frogs reference.</ref> }}</nowiki> |The quick brown fox jumps over the lazy dog.<ref name="LazyDog"/> Amazingly few discotheques provide jukeboxes.<ref name="Jukeboxes"/> How razorback-jumping frogs can level six piqued gymnasts.<ref name="JumpingFrogs"/> {{fake heading|sub=3|References}} {{reflist|refs= <ref name="LazyDog">This is the lazy dog reference.</ref> <ref name="Jukeboxes">This is the jukeboxes reference.</ref> <ref name="JumpingFrogs">This is the jumping frogs reference.</ref> }}}} The references will be numbered, and appear in the output, ''in the order that they are first referred to in the content,'' regardless of their order within the list. All references in reference list must be referenced in the content, otherwise an error message will be shown. Note that when you use the visual editor, you will not be able to add, remove, or change list-defined references. {{anchor|Embedding references within footnotes}} ==Footnotes: embedding references== {{shortcut|WP:REFNEST}} {{See also|WP:Nesting footnotes}} [[Help:Explanatory notes|Explanatory notes]] may need to be referenced. Because of limitations in the {{cite.php}} software, reference tags cannot be nested; that is, a set of {{tag|ref}} tags cannot be placed inside another pair of {{tag|ref}} tags. Attempting to do so will result in a cite error. The templates {{tl|r}} and {{tl|refn}} can be used to nest references. The markup is: :{{tlx|refn|2=group=''group''|3=name=''name''|4=''content''}} or :{{tlx|r|2=group=''group''|3=name=''name''|4=refn=''content''}} or :{{tlx|r|2=g=''group''|3=n=''name''|4=r=''content''}} (shorter) ''name'' and ''group'' being optional parameters. The ''content'' may include {{tag|ref|o}} tags or another {{tl|r}} template. The other templates listed below in [[#Footnotes: predefined groups|Predefined groups]] are variants of {{tl|refn}} that include a styled group and have a matching styled reference list template. Examples: ===Using {{tl|refn}}=== {{markup |<nowiki>The quick brown fox jumps over the lazy dog.{{refn|group=nb|A footnote.<ref>A reference for the footnote.</ref>}} ==Notes== {{reflist|group=nb}} ==References== {{reflist}} </nowiki> |The quick brown fox jumps over the lazy dog.{{refn|group=nb|A footnote.<ref>A reference for the footnote.</ref>}} {{fake heading|sub=3|Notes}} {{reflist|group=nb}} {{fake heading|sub=3|References}} {{reflist}} }} ===Using {{tl|r}}=== {{markup |<nowiki>The quick brown fox jumps over the lazy dog.{{r|g=nb|r=A footnote.{{r|r=A reference for the footnote.}}}} ==Notes== {{reflist|group=nb}} ==References== {{reflist}} </nowiki> |The quick brown fox jumps over the lazy dog.{{r|g=nb|r=A footnote.{{r|r=A reference for the footnote.}}}} {{fake heading|sub=3|Notes}} {{reflist|group=nb}} {{fake heading|sub=3|References}} {{reflist}} }} The use of the magic word <code>#tag:ref</code> is valid, but the sequence of parameters is invariant and nonintuitive. {{tl|r}} as well as {{tl|refn}} and its variants use this markup internally. :<code>&#123;&#123;#tag:ref|<var>refcontent</var>|group=<var>groupname</var>|name=<var>name</var>}}</code> {{anchor|Grouping footnotes}} ==Footnotes: groups== {{shortcut|WP:REFGROUP|WP:CITELABEL}} Sometimes it is useful to group the footnotes into separate lists, for example to separate explanatory notes from references, or to list references for tables, image captions, infoboxes and navboxes. The sequence of footnote labels is independent in each group. The syntax to define a footnote with a group is: :{{tag|ref|params=group=<var>groupname</var>|content=Content}} The footnote marker group name ''must'' be enclosed in quotes if the group name includes a space, else a cite error will occur, otherwise quotes are optional. The syntax for the reference list with a group is: :{{tlx|reflist|2=group=<var>groupname</var>}} The reference list group name does not need to be enclosed in quotes. Example: {{markup |<nowiki>This part of the text requires clarification,<ref group=note>Listed separately from the citation</ref> whereas the entire text is cited.<ref>Citation.</ref> And this needs even more clarification.<ref group=note>Another note</ref> ==Notes== {{reflist|group=note}} ==References== {{reflist}}</nowiki> |This part of the text requires clarification,<ref group=note>Listed separately from the citation</ref> whereas the entire text is cited.<ref>Citation</ref> And this needs even more clarification.<ref group=note>Another note</ref> {{fake heading|sub=3|Notes}} {{reflist|group=note}} {{fake heading|sub=3|References}} {{reflist}} }} Note that the footnote labels in the reference list show only the numbers and not the group name. When using both names and groups, the syntax is: :{{tag|ref|params=group="<var>groupname</var>" name="<var>name</var>"|content=Content}} For the repeated note: :{{tag|ref|s|params=group="<var>groupname</var>" name="<var>name</var>"}} ==Footnotes: predefined groups== {{shortcut|H:PREGROUP|WP:EXPLNOTE}} {{for|technical details|Help:Cite link labels}} {{for|Shortened footnotes with explanatory footnotes|Help:Shortened footnotes#Explanatory notes}} {{See also|Wikipedia:Citing sources#Variation in citation methods|Wikipedia:Manual of Style/Layout#Notes and references}} <section begin=pregroup /><!--this section is used as the documentation for the efn/notelist templates-->{{anchor|footnotes_predefined_groups}} There are several predefined groups that can have a reference list styled so that the label (a superscripted character within square brackets, e.g., {{dummy ref|1}}) of an [[Help:Explanatory notes|explanatory note]] or citation ({{aka}} footnote, reference) matches and links to the note marker label located in the main text and the label in front of the note's text in the appropriate group's list. There can be [[Wikipedia:Citing sources#Separating citations from explanatory footnotes|more than one of these groups' lists]] in the Notes, References and other similarly purposed sections. These predefined note and citation groups have templates that make the [[wikitext]] markup simpler. These templates also allow a standard reference to be inserted, so that an explanatory note can have a reference, or citations can be nested. '''Note:''' If the note's text has a reference name that is used more than once, the labels will still match, but the clickable alpha characters that toggle the note's display will be ''next to'' the note's label, with links to the multiple locations of its marker in the main text. See [[Help:Footnotes#Footnotes: using a source more than once|WP:REFNAME]] and the first point below in [[#Issues|§&nbsp;Issues]]. ===Template use by reference group type=== <section begin=pregrouptable /> {| class="wikitable" |- style="vertical-align:top;" ! Group type !! Footnote marker template<br/>or markup !! Reference list<br/> template !! Sample labels |- |rowspan=3|''none by default, but optionally any'' || {{tag|ref}} |rowspan=3| {{tlx|reflist}} |rowspan=3| 1 2 3 4 5 6 7 8 9 10 |- | {{tlx|r}} (for nested references) |- | {{tlx|refn}} (for nested references) |- | lower-alpha || {{tlx|efn}}<br />{{tlx|efn-la}} || {{tlx|notelist}}<br />{{tlx|notelist-la}} || a b c d e f g h i j |- | upper-alpha || {{tlx|efn-ua}} || {{tlx|notelist-ua}} || A B C D E F G H I J |- | lower-roman || {{tlx|efn-lr}} || {{tlx|notelist-lr}} || i ii iii iv v vi vii viii ix x |- | upper-roman || {{tlx|efn-ur}} || {{tlx|notelist-ur}} || I II III IV V VI VII VIII IX X |- | lower-greek || {{tlx|efn-lg}} || {{tlx|notelist-lg}} || α β γ δ ε ζ η θ ι κ |- |note || {{tlx|NoteTag}} || {{tlx|NoteFoot}} || note 1 note 2 note 3 |}<section end=pregrouptable /> * {{tlx|efn}} supports {{para|name}} and {{para|group}}, which work the same as the parameters in {{tag|ref|o}} (see, for instance, the 3rd and 4th examples below). Do not enclose values in quotes. * {{tlx|notelist}} supports the {{para|colwidth}}, {{para|refs}}, and {{para|group}} parameters, which work the same as the parameters in {{tlx|reflist}}. Do not enclose values in quotes. In these examples, the footnote labels match between the footnote marker and the reference list: {{markup|title=With lower-alpha labels |<nowiki>Lorem ipsum dolor sit amet.{{efn|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|Footnote 3}} {{notelist}} </nowiki> |Lorem ipsum dolor sit amet.{{efn|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|Footnote 3}} {{notelist}} }} {{markup|title=With lower-roman labels |<nowiki>Lorem ipsum dolor sit amet.{{efn-lr|Footnote 1}} Consectetur adipisicing elit.{{efn-lr|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn-lr|Footnote 3}} {{notelist-lr}} </nowiki> |Lorem ipsum dolor sit amet.{{efn-lr|Footnote 1}} Consectetur adipisicing elit.{{efn-lr|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn-lr|Footnote 3}} {{notelist-lr}} }} {{markup|title=With named references |<nowiki>Lorem ipsum dolor sit amet.{{efn|name=fn1|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}} {{notelist}} </nowiki> |Lorem ipsum dolor sit amet.{{efn|name=fn1|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}} {{notelist}} }} Note: With named references you only need to add the details once. For each use after the first you just need to re-use the reference name. Doing this will not cause the inline superscript to display a custom name. {{markup|title=Named references can also be defined in the notelist |<nowiki>Lorem ipsum dolor sit amet.{{efn|name=fn1}} Consectetur adipisicing elit.{{efn|name=fn2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}} {{notelist|refs= {{efn|name=fn1|Very long footnote 1}} {{efn|name=fn2|Very long footnote 2}} }} </nowiki> |Lorem ipsum dolor sit amet.{{efn|name=fn1}} Consectetur adipisicing elit.{{efn|name=fn2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}} {{notelist|refs= {{efn|name=fn1|Very long footnote 1}} {{efn|name=fn2|Very long footnote 2}} }} }} '''Note''': Due to limitations in the MediaWiki software, do not use list defined footnotes that contain references. ===Issues=== * Multiple backlink labels (see [[WP:REFNAME]]) are always styled as lower-alpha. This can be confusing when {{tlx|efn}} is used. See the note in the introduction of [[#footnotes_predefined_groups|this section]], above. * The entries in the reference list will show the default decimal styling if: ** The value for {{para|group}} in {{tlx|reflist}} or {{tag|references|s}} does not exactly match one of the predefined values; use {{tlx|efn}} or variant as {{para|group}} will not be needed. ** The value for {{para|group}} in {{tlx|reflist}} or {{tag|references|s}} is enclosed by quotes; use {{tlx|efn}} or variant as {{para|group}} will not be needed. ** {{tlx|reflist}} is indented with the {{code|:}} markup. ** {{tag|references|s}} is used instead of {{tlx|reflist}} * The entries in the reference list will have no styling if: ** A reference is included in {{tlx|navbox}} or one of the variants and the style is set to <code>bodyclass=hlist</code>; to resolve this, replace the style with <code>listclass=hlist</code>.<section end=pregroup /> * If the note text contains an "=" sign, precede the note text with {{para|1}}, like this: <code><nowiki>{{efn|name=fn1|1=Very long footnote with an equation, 2+2=4}}</nowiki></code> ==Reference lists: automatically generated== {{main|Help:Automatically generated reference list}} A page with {{tag|ref|o}} tags but no reference list markup used to display an error, except on talk and user pages. In recent versions of Wikipedia, the error no longer appears; instead an automatically generated reference list (AGRL) is displayed at the bottom of the page. Compared to the reference lists on properly formatted pages, an AGRL can be confusing to both readers and editors. But it is easily corrected by adding reference list markup such as the following. Add it at the position where the reference list would normally appear. <syntaxhighlight lang="wikitext" style="width: 10.6em;"> ==References== {{reflist}} </syntaxhighlight> On talk pages, the {{tl|reflist-talk}} template can be used to add a reference list to a specific discussion. {{anchor|Citing one book repeatedly with different page numbers}} ==Footnotes: page numbers== {{main|Help:References and page numbers}} Suppose you would like to cite one book, but different facts appear on different pages. You would like to cite the book again and again, but point each fact to the proper page. Suppose one fact is on page 8, a different fact on page 12, a third fact on page 18, a fourth fact on page 241. You could put a line in the "pages" parameter saying "see pages 8, 12, 18, 241" but a fact-checker might have to check all of them before figuring out the right one. Or, you could duplicate the entire citation for the book in each instance, but that would be redundant. One common approach is to use [[Help:Shortened footnotes|shortened citations]]. The long citation to support the shortened citations can either be placed as a bullet point in a separate ''References section'' after the ''Footnotes section''; or it can be placed in the first footnote to cite the source (with the initial relevant page number[s]). The remaining footnotes will use shortened citations (these usually contain the author's last name, the date of publication, and the relevant page number[s]). A less common approach is to attach a {{tlx|rp|8}} right after the footnote marker and replace the "8" with the appropriate page number. For example: {{markup |<nowiki>Schudson said the Constitution shaped citizenship in fundamental ways.<ref name="Schudson">{{Cite book |last=Schudson |first=Michael |title=The Good Citizen: A Brief History of American Civic Life |publisher=Simon & Schuster |date=1998 |url=https://books.google.com/books?id=aawMAQAAMAAJ |isbn=0-684-82729-8}}</ref>{{rp|8}} But elections in early American politics did not generate much interest<ref name="Schudson"/>{{rp|12}} while "open discussion of differences" was generally avoided.<ref name="Schudson"/>{{rp|18}} Citizenship later shifted to a polity of essentially "self-absorbed citizens", according to his analysis.<ref name="Schudson"/>{{rp|241}}</nowiki> |Schudson said the Constitution shaped citizenship in fundamental ways.<ref name="Schudson">{{Cite book |last=Schudson |first=Michael |title=The Good Citizen: A Brief History of American Civic Life |publisher=Simon & Schuster |date=1998 |url=https://books.google.com/books?id=aawMAQAAMAAJ |isbn=0-684-82729-8}}</ref>{{rp|8}} But elections in early American politics did not generate much interest<ref name="Schudson"/>{{rp|12}} while "open discussion of differences" was generally avoided.<ref name="Schudson"/>{{rp|18}} Citizenship later shifted to a polity of essentially "self-absorbed citizens", according to his analysis.<ref name="Schudson"/>{{rp|241}} {{fake heading|sub=3|References}} {{reflist}} }} {{tlx|r}} compactly combines the functions of <code><nowiki><ref></nowiki></code> and {{t|rp}}: <code><nowiki>{{r|Schudson}}</nowiki></code> is equivalent to <code><nowiki><ref name="Schudson"/></nowiki></code> and <code><nowiki>{{r|Schudson|p=241}}</nowiki></code> is equivalent to <code><nowiki><ref name="Schudson"/>{{rp|241}}</nowiki></code>. ==Previewing edits== When you [[Help:Section#Section editing|edit a single section]] of a page, the footnotes list will be visible when you [[Help:Show preview|preview your edits]] under the heading "Preview of references", although you will still not be able to see named references whose definition is outside the section you are editing. Tools that can be used are the [[user:js/ajaxPreview]] or [[User:Anomie/ajaxpreview.js]] scripts or the [[User:Cacycle/wikEd|wikEd]] gadget. ==RefToolbar== {{main|Wikipedia:RefToolbar/2.0}} [[File:Cite web named ref 01.png|thumb|400px|Using the citation toolbar to name the first reference.]] [[File:Citation toolbar named ref.png|thumb|400px|Using the citation toolbar to insert additional references to the first source.]] You can use the citation toolbar to name references. When you first create a reference, you can enter a value in the "Ref name" box. When you want to reuse this reference, click the "Named references" button on the citation toolbar and choose which reference you would like to insert. {{clear}} ==Issues and limitations== * {{cite.php|bug}} * [[Help:Substitution|subst:]] does not work within {{tag|ref|o}} tags. {{phab|T4700}} * The [[Help:Pipe trick|pipe trick]] does not work within {{tag|ref|o}} tags. {{phab|T4700}} == Flagging inadequate referencing == {{See also | Template: Unreferenced/doc#Usage|Template:Citation style}} * The template {{Tlx|Refimprove}} should be added to articles where there are '''some, but insufficient, inline citations to support the material''' currently in the article. For [[WP:BLP|biographies of living persons]], use {{tlx|BLP sources}} instead. * The template {{Tlx|Unreferenced}} should be added to articles with '''no references at all'''. For biographies of living persons, use {{tlx|BLP unsourced}} instead. * The template {{Tlx|Unreferenced section}} is for '''individual sections that have no citations''' in articles that have at least one citation somewhere else. For biographies of living persons, use {{tlx|BLP unsourced section}} instead. * The template {{Tlx|Medref}} is specifically for articles '''needing additional ''medical'' references'''. ==See also== * [[Template:Harvard citation#Using CITEREF directly]] and {{tl|sfnref}} * [[Wikipedia:Citing sources/Further considerations]]—a how-to article with some additional considerations for citing sources * [[Wikipedia:Help desk]]—to ask questions about using footnotes in articles if you were not able to find the information you need on this help page. *[[Template:Editor tools]]—{{tl|Editor tools}} {{Wikipedia referencing}} {{Help navigation}} [[Category:Wikipedia editor help]] [[Category:Wikipedia citation administration]] 5da4bd8b070c8a7aaa5dac9fc84a9f447a9061cd Template:Infobox year in country/doc 10 1351 2686 2023-08-20T20:19:59Z w>Tassedethe 0 v2.05 - Repaired 1 link to disambiguation page - [[WP:DPL|(You can help)]] - [[Michael Jeffery]] wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE. --> This template may be used on any page formatted as '(Year) in (Place)' (e.g. [[1967 in Australia]]). But as of 2021-10-06 it is common only on pages about 'Year in Australia'. == Usage == <syntaxhighlight lang="wikitext"> {{Infobox year in country | year = | country = | monarch = | president = | governor-general = | pm = | population = | australian = | elections = }} </syntaxhighlight> == Parameters == All parameters are optional. Separate multiple values using {{tl|Plainlist}} or {{tl|Flatlist}} ; year : ; country : May be wikilinked; if not present, infobox title defaults to page name ; monarch : ; president : ; governor-general : ; pm : Prime minister ; population : ; australian : [[Australian of the Year]] awardee; for Australia only ; elections : == Examples == {{Infobox year in country | year = 1967 | monarch = Queen [[Elizabeth II]] | governor-general = [[Richard Casey, Baron Casey|Richard Casey]] | pm = [[Harold Holt]], then [[John McEwen]] | population = 11,912,253 | australian = [[The Seekers]] | elections = {{Plainlist| * [[1967 Australian Senate election|Half-senate]] * [[1967 Australian referendum (Aboriginals)|referendum]] }} }} {{Infobox year in country | year = 2007 | country = [[Australia]] | monarch = Queen [[Elizabeth II]] | governor-general = [[Michael Jeffery (Australian Army officer)|Michael Jeffery]] | pm = [[John Howard]], then [[Kevin Rudd]] | population = 21,161,323 | australian = [[Tim Flannery]] | elections = {{Plainlist| * [[2007 New South Wales state election|New South Wales]] * [[2007 Australian federal election|federal]] }} }} == How to get information for Australia == *Monarch: Generally contained within the article, but if not, see [http://www.genuki.org.uk/big/royalty/index.html#list here] for a good list. *Governor-General: Generally contained within the article, but if not, see [http://www.gg.gov.au/governorgeneral/category.php?id=3 here] for a good list. *Prime Minister: Generally contained within the article, but if not, see [http://pandora.nla.gov.au/pan/10052/20071016-1104/www.pm.gov.au/past_pm/index.html#biographies here] for a good list. *Population: See [http://www.abs.gov.au/AUSSTATS/ABS@Archive.nsf/log?openagent&3105065001_table2.xls&3105.0.65.001&DataCubes&7BB5E247A5A2F416CA25717600229537&0&2006&23.05.2006&Latest here] (since 1901) or [http://www.abs.gov.au/AUSSTATS/ABS@Archive.nsf/log?openagent&3105065001_table1.xls&3105.0.65.001&DataCubes&3451B0B3478CB42ECA2571760022670D&0&2006&23.05.2006&Latest here] (since 1788). Some older results do not include indigenous peoples. 'Since 1901' generally contains this data. *Australian of the Year: See [[Australian of the Year]]. *Elections: See [http://elections.uwa.edu.au/electionsearch.lasso here] for state elections (specify state and date - both are optional). See [http://www.aph.gov.au/library/elect/elecdate.htm here] for federal elections. <includeonly>{{Sandbox other|| <!--Categories below this line, please; interwikis at Wikidata--> [[Category:Country infobox templates|Year In Country]] [[Category:Year in region templates| ]] }}</includeonly> e6a4b9427473f3076fb833ef46de2b2b20312044 Module:Language/data/iana languages 828 468 1035 2023-08-21T15:41:21Z wikipedia>Trappist the monk 0 update to 2023-08-02 data; Scribunto text/plain -- File-Date: 2023-08-02 local active = { ["aa"] = {"Afar"}, ["ab"] = {"Abkhazian"}, ["ae"] = {"Avestan"}, ["af"] = {"Afrikaans"}, ["ak"] = {"Akan"}, ["am"] = {"Amharic"}, ["an"] = {"Aragonese"}, ["ar"] = {"Arabic"}, ["as"] = {"Assamese"}, ["av"] = {"Avaric"}, ["ay"] = {"Aymara"}, ["az"] = {"Azerbaijani"}, ["ba"] = {"Bashkir"}, ["be"] = {"Belarusian"}, ["bg"] = {"Bulgarian"}, ["bh"] = {"Bihari languages"}, ["bi"] = {"Bislama"}, ["bm"] = {"Bambara"}, ["bn"] = {"Bengali", "Bangla"}, ["bo"] = {"Tibetan"}, ["br"] = {"Breton"}, ["bs"] = {"Bosnian"}, ["ca"] = {"Catalan", "Valencian"}, ["ce"] = {"Chechen"}, ["ch"] = {"Chamorro"}, ["co"] = {"Corsican"}, ["cr"] = {"Cree"}, ["cs"] = {"Czech"}, ["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"}, ["cv"] = {"Chuvash"}, ["cy"] = {"Welsh"}, ["da"] = {"Danish"}, ["de"] = {"German"}, ["dv"] = {"Dhivehi", "Divehi", "Maldivian"}, ["dz"] = {"Dzongkha"}, ["ee"] = {"Ewe"}, ["el"] = {"Modern Greek (1453-)"}, ["en"] = {"English"}, ["eo"] = {"Esperanto"}, ["es"] = {"Spanish", "Castilian"}, ["et"] = {"Estonian"}, ["eu"] = {"Basque"}, ["fa"] = {"Persian"}, ["ff"] = {"Fulah"}, ["fi"] = {"Finnish"}, ["fj"] = {"Fijian"}, ["fo"] = {"Faroese"}, ["fr"] = {"French"}, ["fy"] = {"Western Frisian"}, ["ga"] = {"Irish"}, ["gd"] = {"Scottish Gaelic", "Gaelic"}, ["gl"] = {"Galician"}, ["gn"] = {"Guarani"}, ["gu"] = {"Gujarati"}, ["gv"] = {"Manx"}, ["ha"] = {"Hausa"}, ["he"] = {"Hebrew"}, ["hi"] = {"Hindi"}, ["ho"] = {"Hiri Motu"}, ["hr"] = {"Croatian"}, ["ht"] = {"Haitian", "Haitian Creole"}, ["hu"] = {"Hungarian"}, ["hy"] = {"Armenian"}, ["hz"] = {"Herero"}, ["ia"] = {"Interlingua (International Auxiliary Language Association)"}, ["id"] = {"Indonesian"}, ["ie"] = {"Interlingue", "Occidental"}, ["ig"] = {"Igbo"}, ["ii"] = {"Sichuan Yi", "Nuosu"}, ["ik"] = {"Inupiaq"}, ["io"] = {"Ido"}, ["is"] = {"Icelandic"}, ["it"] = {"Italian"}, ["iu"] = {"Inuktitut"}, ["ja"] = {"Japanese"}, ["jv"] = {"Javanese"}, ["ka"] = {"Georgian"}, ["kg"] = {"Kongo"}, ["ki"] = {"Kikuyu", "Gikuyu"}, ["kj"] = {"Kuanyama", "Kwanyama"}, ["kk"] = {"Kazakh"}, ["kl"] = {"Kalaallisut", "Greenlandic"}, ["km"] = {"Khmer", "Central Khmer"}, ["kn"] = {"Kannada"}, ["ko"] = {"Korean"}, ["kr"] = {"Kanuri"}, ["ks"] = {"Kashmiri"}, ["ku"] = {"Kurdish"}, ["kv"] = {"Komi"}, ["kw"] = {"Cornish"}, ["ky"] = {"Kirghiz", "Kyrgyz"}, ["la"] = {"Latin"}, ["lb"] = {"Luxembourgish", "Letzeburgesch"}, ["lg"] = {"Ganda", "Luganda"}, ["li"] = {"Limburgan", "Limburger", "Limburgish"}, ["ln"] = {"Lingala"}, ["lo"] = {"Lao"}, ["lt"] = {"Lithuanian"}, ["lu"] = {"Luba-Katanga"}, ["lv"] = {"Latvian"}, ["mg"] = {"Malagasy"}, ["mh"] = {"Marshallese"}, ["mi"] = {"Maori"}, ["mk"] = {"Macedonian"}, ["ml"] = {"Malayalam"}, ["mn"] = {"Mongolian"}, ["mr"] = {"Marathi"}, ["ms"] = {"Malay (macrolanguage)"}, ["mt"] = {"Maltese"}, ["my"] = {"Burmese"}, ["na"] = {"Nauru"}, ["nb"] = {"Norwegian Bokmål"}, ["nd"] = {"North Ndebele"}, ["ne"] = {"Nepali (macrolanguage)"}, ["ng"] = {"Ndonga"}, ["nl"] = {"Dutch", "Flemish"}, ["nn"] = {"Norwegian Nynorsk"}, ["no"] = {"Norwegian"}, ["nr"] = {"South Ndebele"}, ["nv"] = {"Navajo", "Navaho"}, ["ny"] = {"Nyanja", "Chewa", "Chichewa"}, ["oc"] = {"Occitan (post 1500)"}, ["oj"] = {"Ojibwa"}, ["om"] = {"Oromo"}, ["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"}, ["os"] = {"Ossetian", "Ossetic"}, ["pa"] = {"Panjabi", "Punjabi"}, ["pi"] = {"Pali"}, ["pl"] = {"Polish"}, ["ps"] = {"Pushto", "Pashto"}, ["pt"] = {"Portuguese"}, ["qu"] = {"Quechua"}, ["rm"] = {"Romansh"}, ["rn"] = {"Rundi"}, ["ro"] = {"Romanian", "Moldavian", "Moldovan"}, ["ru"] = {"Russian"}, ["rw"] = {"Kinyarwanda"}, ["sa"] = {"Sanskrit"}, ["sc"] = {"Sardinian"}, ["sd"] = {"Sindhi"}, ["se"] = {"Northern Sami"}, ["sg"] = {"Sango"}, ["sh"] = {"Serbo-Croatian"}, ["si"] = {"Sinhala", "Sinhalese"}, ["sk"] = {"Slovak"}, ["sl"] = {"Slovenian"}, ["sm"] = {"Samoan"}, ["sn"] = {"Shona"}, ["so"] = {"Somali"}, ["sq"] = {"Albanian"}, ["sr"] = {"Serbian"}, ["ss"] = {"Swati"}, ["st"] = {"Southern Sotho"}, ["su"] = {"Sundanese"}, ["sv"] = {"Swedish"}, ["sw"] = {"Swahili (macrolanguage)"}, ["ta"] = {"Tamil"}, ["te"] = {"Telugu"}, ["tg"] = {"Tajik"}, ["th"] = {"Thai"}, ["ti"] = {"Tigrinya"}, ["tk"] = {"Turkmen"}, ["tl"] = {"Tagalog"}, ["tn"] = {"Tswana"}, ["to"] = {"Tonga (Tonga Islands)"}, ["tr"] = {"Turkish"}, ["ts"] = {"Tsonga"}, ["tt"] = {"Tatar"}, ["tw"] = {"Twi"}, ["ty"] = {"Tahitian"}, ["ug"] = {"Uighur", "Uyghur"}, ["uk"] = {"Ukrainian"}, ["ur"] = {"Urdu"}, ["uz"] = {"Uzbek"}, ["ve"] = {"Venda"}, ["vi"] = {"Vietnamese"}, ["vo"] = {"Volapük"}, ["wa"] = {"Walloon"}, ["wo"] = {"Wolof"}, ["xh"] = {"Xhosa"}, ["yi"] = {"Yiddish"}, ["yo"] = {"Yoruba"}, ["za"] = {"Zhuang", "Chuang"}, ["zh"] = {"Chinese"}, ["zu"] = {"Zulu"}, ["aaa"] = {"Ghotuo"}, ["aab"] = {"Alumu-Tesu"}, ["aac"] = {"Ari"}, ["aad"] = {"Amal"}, ["aae"] = {"Arbëreshë Albanian"}, ["aaf"] = {"Aranadan"}, ["aag"] = {"Ambrak"}, ["aah"] = {"Abu' Arapesh"}, ["aai"] = {"Arifama-Miniafia"}, ["aak"] = {"Ankave"}, ["aal"] = {"Afade"}, ["aan"] = {"Anambé"}, ["aao"] = {"Algerian Saharan Arabic"}, ["aap"] = {"Pará Arára"}, ["aaq"] = {"Eastern Abnaki"}, ["aas"] = {"Aasáx"}, ["aat"] = {"Arvanitika Albanian"}, ["aau"] = {"Abau"}, ["aav"] = {"Austro-Asiatic languages"}, ["aaw"] = {"Solong"}, ["aax"] = {"Mandobo Atas"}, ["aaz"] = {"Amarasi"}, ["aba"] = {"Abé"}, ["abb"] = {"Bankon"}, ["abc"] = {"Ambala Ayta"}, ["abd"] = {"Manide"}, ["abe"] = {"Western Abnaki"}, ["abf"] = {"Abai Sungai"}, ["abg"] = {"Abaga"}, ["abh"] = {"Tajiki Arabic"}, ["abi"] = {"Abidji"}, ["abj"] = {"Aka-Bea"}, ["abl"] = {"Lampung Nyo"}, ["abm"] = {"Abanyom"}, ["abn"] = {"Abua"}, ["abo"] = {"Abon"}, ["abp"] = {"Abellen Ayta"}, ["abq"] = {"Abaza"}, ["abr"] = {"Abron"}, ["abs"] = {"Ambonese Malay"}, ["abt"] = {"Ambulas"}, ["abu"] = {"Abure"}, ["abv"] = {"Baharna Arabic"}, ["abw"] = {"Pal"}, ["abx"] = {"Inabaknon"}, ["aby"] = {"Aneme Wake"}, ["abz"] = {"Abui"}, ["aca"] = {"Achagua"}, ["acb"] = {"Áncá"}, ["acd"] = {"Gikyode"}, ["ace"] = {"Achinese"}, ["acf"] = {"Saint Lucian Creole French"}, ["ach"] = {"Acoli"}, ["aci"] = {"Aka-Cari"}, ["ack"] = {"Aka-Kora"}, ["acl"] = {"Akar-Bale"}, ["acm"] = {"Mesopotamian Arabic"}, ["acn"] = {"Achang"}, ["acp"] = {"Eastern Acipa"}, ["acq"] = {"Ta'izzi-Adeni Arabic"}, ["acr"] = {"Achi"}, ["acs"] = {"Acroá"}, ["act"] = {"Achterhoeks"}, ["acu"] = {"Achuar-Shiwiar"}, ["acv"] = {"Achumawi"}, ["acw"] = {"Hijazi Arabic"}, ["acx"] = {"Omani Arabic"}, ["acy"] = {"Cypriot Arabic"}, ["acz"] = {"Acheron"}, ["ada"] = {"Adangme"}, ["adb"] = {"Atauran"}, ["add"] = {"Lidzonka", "Dzodinka"}, ["ade"] = {"Adele"}, ["adf"] = {"Dhofari Arabic"}, ["adg"] = {"Andegerebinha"}, ["adh"] = {"Adhola"}, ["adi"] = {"Adi"}, ["adj"] = {"Adioukrou"}, ["adl"] = {"Galo"}, ["adn"] = {"Adang"}, ["ado"] = {"Abu"}, ["adq"] = {"Adangbe"}, ["adr"] = {"Adonara"}, ["ads"] = {"Adamorobe Sign Language"}, ["adt"] = {"Adnyamathanha"}, ["adu"] = {"Aduge"}, ["adw"] = {"Amundava"}, ["adx"] = {"Amdo Tibetan"}, ["ady"] = {"Adyghe", "Adygei"}, ["adz"] = {"Adzera"}, ["aea"] = {"Areba"}, ["aeb"] = {"Tunisian Arabic"}, ["aec"] = {"Saidi Arabic"}, ["aed"] = {"Argentine Sign Language"}, ["aee"] = {"Northeast Pashai", "Northeast Pashayi"}, ["aek"] = {"Haeke"}, ["ael"] = {"Ambele"}, ["aem"] = {"Arem"}, ["aen"] = {"Armenian Sign Language"}, ["aeq"] = {"Aer"}, ["aer"] = {"Eastern Arrernte"}, ["aes"] = {"Alsea"}, ["aeu"] = {"Akeu"}, ["aew"] = {"Ambakich"}, ["aey"] = {"Amele"}, ["aez"] = {"Aeka"}, ["afa"] = {"Afro-Asiatic languages"}, ["afb"] = {"Gulf Arabic"}, ["afd"] = {"Andai"}, ["afe"] = {"Putukwam"}, ["afg"] = {"Afghan Sign Language"}, ["afh"] = {"Afrihili"}, ["afi"] = {"Akrukay", "Chini"}, ["afk"] = {"Nanubae"}, ["afn"] = {"Defaka"}, ["afo"] = {"Eloyi"}, ["afp"] = {"Tapei"}, ["afs"] = {"Afro-Seminole Creole"}, ["aft"] = {"Afitti"}, ["afu"] = {"Awutu"}, ["afz"] = {"Obokuitai"}, ["aga"] = {"Aguano"}, ["agb"] = {"Legbo"}, ["agc"] = {"Agatu"}, ["agd"] = {"Agarabi"}, ["age"] = {"Angal"}, ["agf"] = {"Arguni"}, ["agg"] = {"Angor"}, ["agh"] = {"Ngelima"}, ["agi"] = {"Agariya"}, ["agj"] = {"Argobba"}, ["agk"] = {"Isarog Agta"}, ["agl"] = {"Fembe"}, ["agm"] = {"Angaataha"}, ["agn"] = {"Agutaynen"}, ["ago"] = {"Tainae"}, ["agq"] = {"Aghem"}, ["agr"] = {"Aguaruna"}, ["ags"] = {"Esimbi"}, ["agt"] = {"Central Cagayan Agta"}, ["agu"] = {"Aguacateco"}, ["agv"] = {"Remontado Dumagat"}, ["agw"] = {"Kahua"}, ["agx"] = {"Aghul"}, ["agy"] = {"Southern Alta"}, ["agz"] = {"Mt. Iriga Agta"}, ["aha"] = {"Ahanta"}, ["ahb"] = {"Axamb"}, ["ahg"] = {"Qimant"}, ["ahh"] = {"Aghu"}, ["ahi"] = {"Tiagbamrin Aizi"}, ["ahk"] = {"Akha"}, ["ahl"] = {"Igo"}, ["ahm"] = {"Mobumrin Aizi"}, ["ahn"] = {"Àhàn"}, ["aho"] = {"Ahom"}, ["ahp"] = {"Aproumu Aizi"}, ["ahr"] = {"Ahirani"}, ["ahs"] = {"Ashe"}, ["aht"] = {"Ahtena"}, ["aia"] = {"Arosi"}, ["aib"] = {"Ainu (China)"}, ["aic"] = {"Ainbai"}, ["aid"] = {"Alngith"}, ["aie"] = {"Amara"}, ["aif"] = {"Agi"}, ["aig"] = {"Antigua and Barbuda Creole English"}, ["aih"] = {"Ai-Cham"}, ["aii"] = {"Assyrian Neo-Aramaic"}, ["aij"] = {"Lishanid Noshan"}, ["aik"] = {"Ake"}, ["ail"] = {"Aimele"}, ["aim"] = {"Aimol"}, ["ain"] = {"Ainu (Japan)"}, ["aio"] = {"Aiton"}, ["aip"] = {"Burumakok"}, ["aiq"] = {"Aimaq"}, ["air"] = {"Airoran"}, ["ait"] = {"Arikem"}, ["aiw"] = {"Aari"}, ["aix"] = {"Aighon"}, ["aiy"] = {"Ali"}, ["aja"] = {"Aja (South Sudan)"}, ["ajg"] = {"Aja (Benin)"}, ["aji"] = {"Ajië"}, ["ajn"] = {"Andajin"}, ["ajs"] = {"Algerian Jewish Sign Language"}, ["aju"] = {"Judeo-Moroccan Arabic"}, ["ajw"] = {"Ajawa"}, ["ajz"] = {"Amri Karbi"}, ["akb"] = {"Batak Angkola"}, ["akc"] = {"Mpur"}, ["akd"] = {"Ukpet-Ehom"}, ["ake"] = {"Akawaio"}, ["akf"] = {"Akpa"}, ["akg"] = {"Anakalangu"}, ["akh"] = {"Angal Heneng"}, ["aki"] = {"Aiome"}, ["akj"] = {"Aka-Jeru"}, ["akk"] = {"Akkadian"}, ["akl"] = {"Aklanon"}, ["akm"] = {"Aka-Bo"}, ["ako"] = {"Akurio"}, ["akp"] = {"Siwu"}, ["akq"] = {"Ak"}, ["akr"] = {"Araki"}, ["aks"] = {"Akaselem"}, ["akt"] = {"Akolet"}, ["aku"] = {"Akum"}, ["akv"] = {"Akhvakh"}, ["akw"] = {"Akwa"}, ["akx"] = {"Aka-Kede"}, ["aky"] = {"Aka-Kol"}, ["akz"] = {"Alabama"}, ["ala"] = {"Alago"}, ["alc"] = {"Qawasqar"}, ["ald"] = {"Alladian"}, ["ale"] = {"Aleut"}, ["alf"] = {"Alege"}, ["alg"] = {"Algonquian languages"}, ["alh"] = {"Alawa"}, ["ali"] = {"Amaimon"}, ["alj"] = {"Alangan"}, ["alk"] = {"Alak"}, ["all"] = {"Allar"}, ["alm"] = {"Amblong"}, ["aln"] = {"Gheg Albanian"}, ["alo"] = {"Larike-Wakasihu"}, ["alp"] = {"Alune"}, ["alq"] = {"Algonquin"}, ["alr"] = {"Alutor"}, ["als"] = {"Tosk Albanian"}, ["alt"] = {"Southern Altai"}, ["alu"] = {"'Are'are"}, ["alv"] = {"Atlantic-Congo languages"}, ["alw"] = {"Alaba-K’abeena", "Wanbasana"}, ["alx"] = {"Amol"}, ["aly"] = {"Alyawarr"}, ["alz"] = {"Alur"}, ["ama"] = {"Amanayé"}, ["amb"] = {"Ambo"}, ["amc"] = {"Amahuaca"}, ["ame"] = {"Yanesha'"}, ["amf"] = {"Hamer-Banna"}, ["amg"] = {"Amurdak"}, ["ami"] = {"Amis"}, ["amj"] = {"Amdang"}, ["amk"] = {"Ambai"}, ["aml"] = {"War-Jaintia"}, ["amm"] = {"Ama (Papua New Guinea)"}, ["amn"] = {"Amanab"}, ["amo"] = {"Amo"}, ["amp"] = {"Alamblak"}, ["amq"] = {"Amahai"}, ["amr"] = {"Amarakaeri"}, ["ams"] = {"Southern Amami-Oshima"}, ["amt"] = {"Amto"}, ["amu"] = {"Guerrero Amuzgo"}, ["amv"] = {"Ambelau"}, ["amw"] = {"Western Neo-Aramaic"}, ["amx"] = {"Anmatyerre"}, ["amy"] = {"Ami"}, ["amz"] = {"Atampaya"}, ["ana"] = {"Andaqui"}, ["anb"] = {"Andoa"}, ["anc"] = {"Ngas"}, ["and"] = {"Ansus"}, ["ane"] = {"Xârâcùù"}, ["anf"] = {"Animere"}, ["ang"] = {"Old English (ca. 450-1100)"}, ["anh"] = {"Nend"}, ["ani"] = {"Andi"}, ["anj"] = {"Anor"}, ["ank"] = {"Goemai"}, ["anl"] = {"Anu-Hkongso Chin"}, ["anm"] = {"Anal"}, ["ann"] = {"Obolo"}, ["ano"] = {"Andoque"}, ["anp"] = {"Angika"}, ["anq"] = {"Jarawa (India)"}, ["anr"] = {"Andh"}, ["ans"] = {"Anserma"}, ["ant"] = {"Antakarinya", "Antikarinya"}, ["anu"] = {"Anuak"}, ["anv"] = {"Denya"}, ["anw"] = {"Anaang"}, ["anx"] = {"Andra-Hus"}, ["any"] = {"Anyin"}, ["anz"] = {"Anem"}, ["aoa"] = {"Angolar"}, ["aob"] = {"Abom"}, ["aoc"] = {"Pemon"}, ["aod"] = {"Andarum"}, ["aoe"] = {"Angal Enen"}, ["aof"] = {"Bragat"}, ["aog"] = {"Angoram"}, ["aoi"] = {"Anindilyakwa"}, ["aoj"] = {"Mufian"}, ["aok"] = {"Arhö"}, ["aol"] = {"Alor"}, ["aom"] = {"Ömie"}, ["aon"] = {"Bumbita Arapesh"}, ["aor"] = {"Aore"}, ["aos"] = {"Taikat"}, ["aot"] = {"Atong (India)", "A'tong"}, ["aou"] = {"A'ou"}, ["aox"] = {"Atorada"}, ["aoz"] = {"Uab Meto"}, ["apa"] = {"Apache languages"}, ["apb"] = {"Sa'a"}, ["apc"] = {"Levantine Arabic"}, ["apd"] = {"Sudanese Arabic"}, ["ape"] = {"Bukiyip"}, ["apf"] = {"Pahanan Agta"}, ["apg"] = {"Ampanang"}, ["aph"] = {"Athpariya"}, ["api"] = {"Apiaká"}, ["apj"] = {"Jicarilla Apache"}, ["apk"] = {"Kiowa Apache"}, ["apl"] = {"Lipan Apache"}, ["apm"] = {"Mescalero-Chiricahua Apache"}, ["apn"] = {"Apinayé"}, ["apo"] = {"Ambul"}, ["app"] = {"Apma"}, ["apq"] = {"A-Pucikwar"}, ["apr"] = {"Arop-Lokep"}, ["aps"] = {"Arop-Sissano"}, ["apt"] = {"Apatani"}, ["apu"] = {"Apurinã"}, ["apv"] = {"Alapmunte"}, ["apw"] = {"Western Apache"}, ["apx"] = {"Aputai"}, ["apy"] = {"Apalaí"}, ["apz"] = {"Safeyoka"}, ["aqa"] = {"Alacalufan languages"}, ["aqc"] = {"Archi"}, ["aqd"] = {"Ampari Dogon"}, ["aqg"] = {"Arigidi"}, ["aqk"] = {"Aninka"}, ["aql"] = {"Algic languages"}, ["aqm"] = {"Atohwaim"}, ["aqn"] = {"Northern Alta"}, ["aqp"] = {"Atakapa"}, ["aqr"] = {"Arhâ"}, ["aqt"] = {"Angaité"}, ["aqz"] = {"Akuntsu"}, ["arb"] = {"Standard Arabic"}, ["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"}, ["ard"] = {"Arabana"}, ["are"] = {"Western Arrarnta"}, ["arh"] = {"Arhuaco"}, ["ari"] = {"Arikara"}, ["arj"] = {"Arapaso"}, ["ark"] = {"Arikapú"}, ["arl"] = {"Arabela"}, ["arn"] = {"Mapudungun", "Mapuche"}, ["aro"] = {"Araona"}, ["arp"] = {"Arapaho"}, ["arq"] = {"Algerian Arabic"}, ["arr"] = {"Karo (Brazil)"}, ["ars"] = {"Najdi Arabic"}, ["art"] = {"Artificial languages"}, ["aru"] = {"Aruá (Amazonas State)", "Arawá"}, ["arv"] = {"Arbore"}, ["arw"] = {"Arawak"}, ["arx"] = {"Aruá (Rodonia State)"}, ["ary"] = {"Moroccan Arabic"}, ["arz"] = {"Egyptian Arabic"}, ["asa"] = {"Asu (Tanzania)"}, ["asb"] = {"Assiniboine"}, ["asc"] = {"Casuarina Coast Asmat"}, ["ase"] = {"American Sign Language"}, ["asf"] = {"Auslan", "Australian Sign Language"}, ["asg"] = {"Cishingini"}, ["ash"] = {"Abishira"}, ["asi"] = {"Buruwai"}, ["asj"] = {"Sari"}, ["ask"] = {"Ashkun"}, ["asl"] = {"Asilulu"}, ["asn"] = {"Xingú Asuriní"}, ["aso"] = {"Dano"}, ["asp"] = {"Algerian Sign Language"}, ["asq"] = {"Austrian Sign Language"}, ["asr"] = {"Asuri"}, ["ass"] = {"Ipulo"}, ["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"}, ["asu"] = {"Tocantins Asurini"}, ["asv"] = {"Asoa"}, ["asw"] = {"Australian Aborigines Sign Language"}, ["asx"] = {"Muratayak"}, ["asy"] = {"Yaosakor Asmat"}, ["asz"] = {"As"}, ["ata"] = {"Pele-Ata"}, ["atb"] = {"Zaiwa"}, ["atc"] = {"Atsahuaca"}, ["atd"] = {"Ata Manobo"}, ["ate"] = {"Atemble"}, ["atg"] = {"Ivbie North-Okpela-Arhe"}, ["ath"] = {"Athapascan languages"}, ["ati"] = {"Attié"}, ["atj"] = {"Atikamekw"}, ["atk"] = {"Ati"}, ["atl"] = {"Mt. Iraya Agta"}, ["atm"] = {"Ata"}, ["atn"] = {"Ashtiani"}, ["ato"] = {"Atong (Cameroon)"}, ["atp"] = {"Pudtol Atta"}, ["atq"] = {"Aralle-Tabulahan"}, ["atr"] = {"Waimiri-Atroari"}, ["ats"] = {"Gros Ventre"}, ["att"] = {"Pamplona Atta"}, ["atu"] = {"Reel"}, ["atv"] = {"Northern Altai"}, ["atw"] = {"Atsugewi"}, ["atx"] = {"Arutani"}, ["aty"] = {"Aneityum"}, ["atz"] = {"Arta"}, ["aua"] = {"Asumboa"}, ["aub"] = {"Alugu"}, ["auc"] = {"Waorani"}, ["aud"] = {"Anuta"}, ["auf"] = {"Arauan languages"}, ["aug"] = {"Aguna"}, ["auh"] = {"Aushi"}, ["aui"] = {"Anuki"}, ["auj"] = {"Awjilah"}, ["auk"] = {"Heyo"}, ["aul"] = {"Aulua"}, ["aum"] = {"Asu (Nigeria)"}, ["aun"] = {"Molmo One"}, ["auo"] = {"Auyokawa"}, ["aup"] = {"Makayam"}, ["auq"] = {"Anus", "Korur"}, ["aur"] = {"Aruek"}, ["aus"] = {"Australian languages"}, ["aut"] = {"Austral"}, ["auu"] = {"Auye"}, ["auw"] = {"Awyi"}, ["aux"] = {"Aurá"}, ["auy"] = {"Awiyaana"}, ["auz"] = {"Uzbeki Arabic"}, ["avb"] = {"Avau"}, ["avd"] = {"Alviri-Vidari"}, ["avi"] = {"Avikam"}, ["avk"] = {"Kotava"}, ["avl"] = {"Eastern Egyptian Bedawi Arabic"}, ["avm"] = {"Angkamuthi"}, ["avn"] = {"Avatime"}, ["avo"] = {"Agavotaguerra"}, ["avs"] = {"Aushiri"}, ["avt"] = {"Au"}, ["avu"] = {"Avokaya"}, ["avv"] = {"Avá-Canoeiro"}, ["awa"] = {"Awadhi"}, ["awb"] = {"Awa (Papua New Guinea)"}, ["awc"] = {"Cicipu"}, ["awd"] = {"Arawakan languages"}, ["awe"] = {"Awetí"}, ["awg"] = {"Anguthimri"}, ["awh"] = {"Awbono"}, ["awi"] = {"Aekyom"}, ["awk"] = {"Awabakal"}, ["awm"] = {"Arawum"}, ["awn"] = {"Awngi"}, ["awo"] = {"Awak"}, ["awr"] = {"Awera"}, ["aws"] = {"South Awyu"}, ["awt"] = {"Araweté"}, ["awu"] = {"Central Awyu"}, ["awv"] = {"Jair Awyu"}, ["aww"] = {"Awun"}, ["awx"] = {"Awara"}, ["awy"] = {"Edera Awyu"}, ["axb"] = {"Abipon"}, ["axe"] = {"Ayerrerenge"}, ["axg"] = {"Mato Grosso Arára"}, ["axk"] = {"Yaka (Central African Republic)"}, ["axl"] = {"Lower Southern Aranda"}, ["axm"] = {"Middle Armenian"}, ["axx"] = {"Xârâgurè"}, ["aya"] = {"Awar"}, ["ayb"] = {"Ayizo Gbe"}, ["ayc"] = {"Southern Aymara"}, ["ayd"] = {"Ayabadhu"}, ["aye"] = {"Ayere"}, ["ayg"] = {"Ginyanga"}, ["ayh"] = {"Hadrami Arabic"}, ["ayi"] = {"Leyigha"}, ["ayk"] = {"Akuku"}, ["ayl"] = {"Libyan Arabic"}, ["ayn"] = {"Sanaani Arabic"}, ["ayo"] = {"Ayoreo"}, ["ayp"] = {"North Mesopotamian Arabic"}, ["ayq"] = {"Ayi (Papua New Guinea)"}, ["ayr"] = {"Central Aymara"}, ["ays"] = {"Sorsogon Ayta"}, ["ayt"] = {"Magbukun Ayta"}, ["ayu"] = {"Ayu"}, ["ayz"] = {"Mai Brat"}, ["aza"] = {"Azha"}, ["azb"] = {"South Azerbaijani"}, ["azc"] = {"Uto-Aztecan languages"}, ["azd"] = {"Eastern Durango Nahuatl"}, ["azg"] = {"San Pedro Amuzgos Amuzgo"}, ["azj"] = {"North Azerbaijani"}, ["azm"] = {"Ipalapa Amuzgo"}, ["azn"] = {"Western Durango Nahuatl"}, ["azo"] = {"Awing"}, ["azt"] = {"Faire Atta"}, ["azz"] = {"Highland Puebla Nahuatl"}, ["baa"] = {"Babatana"}, ["bab"] = {"Bainouk-Gunyuño"}, ["bac"] = {"Badui"}, ["bad"] = {"Banda languages"}, ["bae"] = {"Baré"}, ["baf"] = {"Nubaca"}, ["bag"] = {"Tuki"}, ["bah"] = {"Bahamas Creole English"}, ["bai"] = {"Bamileke languages"}, ["baj"] = {"Barakai"}, ["bal"] = {"Baluchi"}, ["ban"] = {"Balinese"}, ["bao"] = {"Waimaha"}, ["bap"] = {"Bantawa"}, ["bar"] = {"Bavarian"}, ["bas"] = {"Basa (Cameroon)"}, ["bat"] = {"Baltic languages"}, ["bau"] = {"Bada (Nigeria)"}, ["bav"] = {"Vengo"}, ["baw"] = {"Bambili-Bambui"}, ["bax"] = {"Bamun"}, ["bay"] = {"Batuley"}, ["bba"] = {"Baatonum"}, ["bbb"] = {"Barai"}, ["bbc"] = {"Batak Toba"}, ["bbd"] = {"Bau"}, ["bbe"] = {"Bangba"}, ["bbf"] = {"Baibai"}, ["bbg"] = {"Barama"}, ["bbh"] = {"Bugan"}, ["bbi"] = {"Barombi"}, ["bbj"] = {"Ghomálá'"}, ["bbk"] = {"Babanki"}, ["bbl"] = {"Bats"}, ["bbm"] = {"Babango"}, ["bbn"] = {"Uneapa"}, ["bbo"] = {"Northern Bobo Madaré", "Konabéré"}, ["bbp"] = {"West Central Banda"}, ["bbq"] = {"Bamali"}, ["bbr"] = {"Girawa"}, ["bbs"] = {"Bakpinka"}, ["bbt"] = {"Mburku"}, ["bbu"] = {"Kulung (Nigeria)"}, ["bbv"] = {"Karnai"}, ["bbw"] = {"Baba"}, ["bbx"] = {"Bubia"}, ["bby"] = {"Befang"}, ["bca"] = {"Central Bai"}, ["bcb"] = {"Bainouk-Samik"}, ["bcc"] = {"Southern Balochi"}, ["bcd"] = {"North Babar"}, ["bce"] = {"Bamenyam"}, ["bcf"] = {"Bamu"}, ["bcg"] = {"Baga Pokur"}, ["bch"] = {"Bariai"}, ["bci"] = {"Baoulé"}, ["bcj"] = {"Bardi"}, ["bck"] = {"Bunuba"}, ["bcl"] = {"Central Bikol"}, ["bcm"] = {"Bannoni"}, ["bcn"] = {"Bali (Nigeria)"}, ["bco"] = {"Kaluli"}, ["bcp"] = {"Bali (Democratic Republic of Congo)"}, ["bcq"] = {"Bench"}, ["bcr"] = {"Babine"}, ["bcs"] = {"Kohumono"}, ["bct"] = {"Bendi"}, ["bcu"] = {"Awad Bing"}, ["bcv"] = {"Shoo-Minda-Nye"}, ["bcw"] = {"Bana"}, ["bcy"] = {"Bacama"}, ["bcz"] = {"Bainouk-Gunyaamolo"}, ["bda"] = {"Bayot"}, ["bdb"] = {"Basap"}, ["bdc"] = {"Emberá-Baudó"}, ["bdd"] = {"Bunama"}, ["bde"] = {"Bade"}, ["bdf"] = {"Biage"}, ["bdg"] = {"Bonggi"}, ["bdh"] = {"Baka (South Sudan)"}, ["bdi"] = {"Burun"}, ["bdj"] = {"Bai (South Sudan)", "Bai"}, ["bdk"] = {"Budukh"}, ["bdl"] = {"Indonesian Bajau"}, ["bdm"] = {"Buduma"}, ["bdn"] = {"Baldemu"}, ["bdo"] = {"Morom"}, ["bdp"] = {"Bende"}, ["bdq"] = {"Bahnar"}, ["bdr"] = {"West Coast Bajau"}, ["bds"] = {"Burunge"}, ["bdt"] = {"Bokoto"}, ["bdu"] = {"Oroko"}, ["bdv"] = {"Bodo Parja"}, ["bdw"] = {"Baham"}, ["bdx"] = {"Budong-Budong"}, ["bdy"] = {"Bandjalang"}, ["bdz"] = {"Badeshi"}, ["bea"] = {"Beaver"}, ["beb"] = {"Bebele"}, ["bec"] = {"Iceve-Maci"}, ["bed"] = {"Bedoanas"}, ["bee"] = {"Byangsi"}, ["bef"] = {"Benabena"}, ["beg"] = {"Belait"}, ["beh"] = {"Biali"}, ["bei"] = {"Bekati'"}, ["bej"] = {"Beja", "Bedawiyet"}, ["bek"] = {"Bebeli"}, ["bem"] = {"Bemba (Zambia)"}, ["beo"] = {"Beami"}, ["bep"] = {"Besoa"}, ["beq"] = {"Beembe"}, ["ber"] = {"Berber languages"}, ["bes"] = {"Besme"}, ["bet"] = {"Guiberoua Béte"}, ["beu"] = {"Blagar"}, ["bev"] = {"Daloa Bété"}, ["bew"] = {"Betawi"}, ["bex"] = {"Jur Modo"}, ["bey"] = {"Beli (Papua New Guinea)"}, ["bez"] = {"Bena (Tanzania)"}, ["bfa"] = {"Bari"}, ["bfb"] = {"Pauri Bareli"}, ["bfc"] = {"Panyi Bai", "Northern Bai"}, ["bfd"] = {"Bafut"}, ["bfe"] = {"Betaf", "Tena"}, ["bff"] = {"Bofi"}, ["bfg"] = {"Busang Kayan"}, ["bfh"] = {"Blafe"}, ["bfi"] = {"British Sign Language"}, ["bfj"] = {"Bafanji"}, ["bfk"] = {"Ban Khor Sign Language"}, ["bfl"] = {"Banda-Ndélé"}, ["bfm"] = {"Mmen"}, ["bfn"] = {"Bunak"}, ["bfo"] = {"Malba Birifor"}, ["bfp"] = {"Beba"}, ["bfq"] = {"Badaga"}, ["bfr"] = {"Bazigar"}, ["bfs"] = {"Southern Bai"}, ["bft"] = {"Balti"}, ["bfu"] = {"Gahri"}, ["bfw"] = {"Bondo"}, ["bfx"] = {"Bantayanon"}, ["bfy"] = {"Bagheli"}, ["bfz"] = {"Mahasu Pahari"}, ["bga"] = {"Gwamhi-Wuri"}, ["bgb"] = {"Bobongko"}, ["bgc"] = {"Haryanvi"}, ["bgd"] = {"Rathwi Bareli"}, ["bge"] = {"Bauria"}, ["bgf"] = {"Bangandu"}, ["bgg"] = {"Bugun"}, ["bgi"] = {"Giangan"}, ["bgj"] = {"Bangolan"}, ["bgk"] = {"Bit", "Buxinhua"}, ["bgl"] = {"Bo (Laos)"}, ["bgn"] = {"Western Balochi"}, ["bgo"] = {"Baga Koga"}, ["bgp"] = {"Eastern Balochi"}, ["bgq"] = {"Bagri"}, ["bgr"] = {"Bawm Chin"}, ["bgs"] = {"Tagabawa"}, ["bgt"] = {"Bughotu"}, ["bgu"] = {"Mbongno"}, ["bgv"] = {"Warkay-Bipim"}, ["bgw"] = {"Bhatri"}, ["bgx"] = {"Balkan Gagauz Turkish"}, ["bgy"] = {"Benggoi"}, ["bgz"] = {"Banggai"}, ["bha"] = {"Bharia"}, ["bhb"] = {"Bhili"}, ["bhc"] = {"Biga"}, ["bhd"] = {"Bhadrawahi"}, ["bhe"] = {"Bhaya"}, ["bhf"] = {"Odiai"}, ["bhg"] = {"Binandere"}, ["bhh"] = {"Bukharic"}, ["bhi"] = {"Bhilali"}, ["bhj"] = {"Bahing"}, ["bhl"] = {"Bimin"}, ["bhm"] = {"Bathari"}, ["bhn"] = {"Bohtan Neo-Aramaic"}, ["bho"] = {"Bhojpuri"}, ["bhp"] = {"Bima"}, ["bhq"] = {"Tukang Besi South"}, ["bhr"] = {"Bara Malagasy"}, ["bhs"] = {"Buwal"}, ["bht"] = {"Bhattiyali"}, ["bhu"] = {"Bhunjia"}, ["bhv"] = {"Bahau"}, ["bhw"] = {"Biak"}, ["bhx"] = {"Bhalay"}, ["bhy"] = {"Bhele"}, ["bhz"] = {"Bada (Indonesia)"}, ["bia"] = {"Badimaya"}, ["bib"] = {"Bissa", "Bisa"}, ["bid"] = {"Bidiyo"}, ["bie"] = {"Bepour"}, ["bif"] = {"Biafada"}, ["big"] = {"Biangai"}, ["bik"] = {"Bikol"}, ["bil"] = {"Bile"}, ["bim"] = {"Bimoba"}, ["bin"] = {"Bini", "Edo"}, ["bio"] = {"Nai"}, ["bip"] = {"Bila"}, ["biq"] = {"Bipi"}, ["bir"] = {"Bisorio"}, ["bit"] = {"Berinomo"}, ["biu"] = {"Biete"}, ["biv"] = {"Southern Birifor"}, ["biw"] = {"Kol (Cameroon)"}, ["bix"] = {"Bijori"}, ["biy"] = {"Birhor"}, ["biz"] = {"Baloi"}, ["bja"] = {"Budza"}, ["bjb"] = {"Banggarla"}, ["bjc"] = {"Bariji"}, ["bje"] = {"Biao-Jiao Mien"}, ["bjf"] = {"Barzani Jewish Neo-Aramaic"}, ["bjg"] = {"Bidyogo"}, ["bjh"] = {"Bahinemo"}, ["bji"] = {"Burji"}, ["bjj"] = {"Kanauji"}, ["bjk"] = {"Barok"}, ["bjl"] = {"Bulu (Papua New Guinea)"}, ["bjm"] = {"Bajelani"}, ["bjn"] = {"Banjar"}, ["bjo"] = {"Mid-Southern Banda"}, ["bjp"] = {"Fanamaket"}, ["bjr"] = {"Binumarien"}, ["bjs"] = {"Bajan"}, ["bjt"] = {"Balanta-Ganja"}, ["bju"] = {"Busuu"}, ["bjv"] = {"Bedjond"}, ["bjw"] = {"Bakwé"}, ["bjx"] = {"Banao Itneg"}, ["bjy"] = {"Bayali"}, ["bjz"] = {"Baruga"}, ["bka"] = {"Kyak"}, ["bkc"] = {"Baka (Cameroon)"}, ["bkd"] = {"Binukid", "Talaandig"}, ["bkf"] = {"Beeke"}, ["bkg"] = {"Buraka"}, ["bkh"] = {"Bakoko"}, ["bki"] = {"Baki"}, ["bkj"] = {"Pande"}, ["bkk"] = {"Brokskat"}, ["bkl"] = {"Berik"}, ["bkm"] = {"Kom (Cameroon)"}, ["bkn"] = {"Bukitan"}, ["bko"] = {"Kwa'"}, ["bkp"] = {"Boko (Democratic Republic of Congo)"}, ["bkq"] = {"Bakairí"}, ["bkr"] = {"Bakumpai"}, ["bks"] = {"Northern Sorsoganon"}, ["bkt"] = {"Boloki"}, ["bku"] = {"Buhid"}, ["bkv"] = {"Bekwarra"}, ["bkw"] = {"Bekwel"}, ["bkx"] = {"Baikeno"}, ["bky"] = {"Bokyi"}, ["bkz"] = {"Bungku"}, ["bla"] = {"Siksika"}, ["blb"] = {"Bilua"}, ["blc"] = {"Bella Coola"}, ["bld"] = {"Bolango"}, ["ble"] = {"Balanta-Kentohe"}, ["blf"] = {"Buol"}, ["blh"] = {"Kuwaa"}, ["bli"] = {"Bolia"}, ["blj"] = {"Bolongan"}, ["blk"] = {"Pa'o Karen", "Pa'O"}, ["bll"] = {"Biloxi"}, ["blm"] = {"Beli (South Sudan)"}, ["bln"] = {"Southern Catanduanes Bikol"}, ["blo"] = {"Anii"}, ["blp"] = {"Blablanga"}, ["blq"] = {"Baluan-Pam"}, ["blr"] = {"Blang"}, ["bls"] = {"Balaesang"}, ["blt"] = {"Tai Dam"}, ["blv"] = {"Kibala", "Bolo"}, ["blw"] = {"Balangao"}, ["blx"] = {"Mag-Indi Ayta"}, ["bly"] = {"Notre"}, ["blz"] = {"Balantak"}, ["bma"] = {"Lame"}, ["bmb"] = {"Bembe"}, ["bmc"] = {"Biem"}, ["bmd"] = {"Baga Manduri"}, ["bme"] = {"Limassa"}, ["bmf"] = {"Bom-Kim"}, ["bmg"] = {"Bamwe"}, ["bmh"] = {"Kein"}, ["bmi"] = {"Bagirmi"}, ["bmj"] = {"Bote-Majhi"}, ["bmk"] = {"Ghayavi"}, ["bml"] = {"Bomboli"}, ["bmm"] = {"Northern Betsimisaraka Malagasy"}, ["bmn"] = {"Bina (Papua New Guinea)"}, ["bmo"] = {"Bambalang"}, ["bmp"] = {"Bulgebi"}, ["bmq"] = {"Bomu"}, ["bmr"] = {"Muinane"}, ["bms"] = {"Bilma Kanuri"}, ["bmt"] = {"Biao Mon"}, ["bmu"] = {"Somba-Siawari"}, ["bmv"] = {"Bum"}, ["bmw"] = {"Bomwali"}, ["bmx"] = {"Baimak"}, ["bmz"] = {"Baramu"}, ["bna"] = {"Bonerate"}, ["bnb"] = {"Bookan"}, ["bnc"] = {"Bontok"}, ["bnd"] = {"Banda (Indonesia)"}, ["bne"] = {"Bintauna"}, ["bnf"] = {"Masiwang"}, ["bng"] = {"Benga"}, ["bni"] = {"Bangi"}, ["bnj"] = {"Eastern Tawbuid"}, ["bnk"] = {"Bierebo"}, ["bnl"] = {"Boon"}, ["bnm"] = {"Batanga"}, ["bnn"] = {"Bunun"}, ["bno"] = {"Bantoanon"}, ["bnp"] = {"Bola"}, ["bnq"] = {"Bantik"}, ["bnr"] = {"Butmas-Tur"}, ["bns"] = {"Bundeli"}, ["bnt"] = {"Bantu languages"}, ["bnu"] = {"Bentong"}, ["bnv"] = {"Bonerif", "Beneraf", "Edwas"}, ["bnw"] = {"Bisis"}, ["bnx"] = {"Bangubangu"}, ["bny"] = {"Bintulu"}, ["bnz"] = {"Beezen"}, ["boa"] = {"Bora"}, ["bob"] = {"Aweer"}, ["boe"] = {"Mundabli"}, ["bof"] = {"Bolon"}, ["bog"] = {"Bamako Sign Language"}, ["boh"] = {"Boma"}, ["boi"] = {"Barbareño"}, ["boj"] = {"Anjam"}, ["bok"] = {"Bonjo"}, ["bol"] = {"Bole"}, ["bom"] = {"Berom"}, ["bon"] = {"Bine"}, ["boo"] = {"Tiemacèwè Bozo"}, ["bop"] = {"Bonkiman"}, ["boq"] = {"Bogaya"}, ["bor"] = {"Borôro"}, ["bot"] = {"Bongo"}, ["bou"] = {"Bondei"}, ["bov"] = {"Tuwuli"}, ["bow"] = {"Rema"}, ["box"] = {"Buamu"}, ["boy"] = {"Bodo (Central African Republic)"}, ["boz"] = {"Tiéyaxo Bozo"}, ["bpa"] = {"Daakaka"}, ["bpc"] = {"Mbuk"}, ["bpd"] = {"Banda-Banda"}, ["bpe"] = {"Bauni"}, ["bpg"] = {"Bonggo"}, ["bph"] = {"Botlikh"}, ["bpi"] = {"Bagupi"}, ["bpj"] = {"Binji"}, ["bpk"] = {"Orowe", "'Ôrôê"}, ["bpl"] = {"Broome Pearling Lugger Pidgin"}, ["bpm"] = {"Biyom"}, ["bpn"] = {"Dzao Min"}, ["bpo"] = {"Anasi"}, ["bpp"] = {"Kaure"}, ["bpq"] = {"Banda Malay"}, ["bpr"] = {"Koronadal Blaan"}, ["bps"] = {"Sarangani Blaan"}, ["bpt"] = {"Barrow Point"}, ["bpu"] = {"Bongu"}, ["bpv"] = {"Bian Marind"}, ["bpw"] = {"Bo (Papua New Guinea)"}, ["bpx"] = {"Palya Bareli"}, ["bpy"] = {"Bishnupriya"}, ["bpz"] = {"Bilba"}, ["bqa"] = {"Tchumbuli"}, ["bqb"] = {"Bagusa"}, ["bqc"] = {"Boko (Benin)", "Boo"}, ["bqd"] = {"Bung"}, ["bqf"] = {"Baga Kaloum"}, ["bqg"] = {"Bago-Kusuntu"}, ["bqh"] = {"Baima"}, ["bqi"] = {"Bakhtiari"}, ["bqj"] = {"Bandial"}, ["bqk"] = {"Banda-Mbrès"}, ["bql"] = {"Bilakura"}, ["bqm"] = {"Wumboko"}, ["bqn"] = {"Bulgarian Sign Language"}, ["bqo"] = {"Balo"}, ["bqp"] = {"Busa"}, ["bqq"] = {"Biritai"}, ["bqr"] = {"Burusu"}, ["bqs"] = {"Bosngun"}, ["bqt"] = {"Bamukumbit"}, ["bqu"] = {"Boguru"}, ["bqv"] = {"Koro Wachi", "Begbere-Ejar"}, ["bqw"] = {"Buru (Nigeria)"}, ["bqx"] = {"Baangi"}, ["bqy"] = {"Bengkala Sign Language"}, ["bqz"] = {"Bakaka"}, ["bra"] = {"Braj"}, ["brb"] = {"Brao", "Lave"}, ["brc"] = {"Berbice Creole Dutch"}, ["brd"] = {"Baraamu"}, ["brf"] = {"Bira"}, ["brg"] = {"Baure"}, ["brh"] = {"Brahui"}, ["bri"] = {"Mokpwe"}, ["brj"] = {"Bieria"}, ["brk"] = {"Birked"}, ["brl"] = {"Birwa"}, ["brm"] = {"Barambu"}, ["brn"] = {"Boruca"}, ["bro"] = {"Brokkat"}, ["brp"] = {"Barapasi"}, ["brq"] = {"Breri"}, ["brr"] = {"Birao"}, ["brs"] = {"Baras"}, ["brt"] = {"Bitare"}, ["bru"] = {"Eastern Bru"}, ["brv"] = {"Western Bru"}, ["brw"] = {"Bellari"}, ["brx"] = {"Bodo (India)"}, ["bry"] = {"Burui"}, ["brz"] = {"Bilbil"}, ["bsa"] = {"Abinomn"}, ["bsb"] = {"Brunei Bisaya"}, ["bsc"] = {"Bassari", "Oniyan"}, ["bse"] = {"Wushi"}, ["bsf"] = {"Bauchi"}, ["bsg"] = {"Bashkardi"}, ["bsh"] = {"Kati"}, ["bsi"] = {"Bassossi"}, ["bsj"] = {"Bangwinji"}, ["bsk"] = {"Burushaski"}, ["bsl"] = {"Basa-Gumna"}, ["bsm"] = {"Busami"}, ["bsn"] = {"Barasana-Eduria"}, ["bso"] = {"Buso"}, ["bsp"] = {"Baga Sitemu"}, ["bsq"] = {"Bassa"}, ["bsr"] = {"Bassa-Kontagora"}, ["bss"] = {"Akoose"}, ["bst"] = {"Basketo"}, ["bsu"] = {"Bahonsuai"}, ["bsv"] = {"Baga Sobané"}, ["bsw"] = {"Baiso"}, ["bsx"] = {"Yangkam"}, ["bsy"] = {"Sabah Bisaya"}, ["bta"] = {"Bata"}, ["btc"] = {"Bati (Cameroon)"}, ["btd"] = {"Batak Dairi"}, ["bte"] = {"Gamo-Ningi"}, ["btf"] = {"Birgit"}, ["btg"] = {"Gagnoa Bété"}, ["bth"] = {"Biatah Bidayuh"}, ["bti"] = {"Burate"}, ["btj"] = {"Bacanese Malay"}, ["btk"] = {"Batak languages"}, ["btm"] = {"Batak Mandailing"}, ["btn"] = {"Ratagnon"}, ["bto"] = {"Rinconada Bikol"}, ["btp"] = {"Budibud"}, ["btq"] = {"Batek"}, ["btr"] = {"Baetora"}, ["bts"] = {"Batak Simalungun"}, ["btt"] = {"Bete-Bendi"}, ["btu"] = {"Batu"}, ["btv"] = {"Bateri"}, ["btw"] = {"Butuanon"}, ["btx"] = {"Batak Karo"}, ["bty"] = {"Bobot"}, ["btz"] = {"Batak Alas-Kluet"}, ["bua"] = {"Buriat"}, ["bub"] = {"Bua"}, ["buc"] = {"Bushi"}, ["bud"] = {"Ntcham"}, ["bue"] = {"Beothuk"}, ["buf"] = {"Bushoong"}, ["bug"] = {"Buginese"}, ["buh"] = {"Younuo Bunu"}, ["bui"] = {"Bongili"}, ["buj"] = {"Basa-Gurmana"}, ["buk"] = {"Bugawac"}, ["bum"] = {"Bulu (Cameroon)"}, ["bun"] = {"Sherbro"}, ["buo"] = {"Terei"}, ["bup"] = {"Busoa"}, ["buq"] = {"Brem"}, ["bus"] = {"Bokobaru"}, ["but"] = {"Bungain"}, ["buu"] = {"Budu"}, ["buv"] = {"Bun"}, ["buw"] = {"Bubi"}, ["bux"] = {"Boghom"}, ["buy"] = {"Bullom So"}, ["buz"] = {"Bukwen"}, ["bva"] = {"Barein"}, ["bvb"] = {"Bube"}, ["bvc"] = {"Baelelea"}, ["bvd"] = {"Baeggu"}, ["bve"] = {"Berau Malay"}, ["bvf"] = {"Boor"}, ["bvg"] = {"Bonkeng"}, ["bvh"] = {"Bure"}, ["bvi"] = {"Belanda Viri"}, ["bvj"] = {"Baan"}, ["bvk"] = {"Bukat"}, ["bvl"] = {"Bolivian Sign Language"}, ["bvm"] = {"Bamunka"}, ["bvn"] = {"Buna"}, ["bvo"] = {"Bolgo"}, ["bvp"] = {"Bumang"}, ["bvq"] = {"Birri"}, ["bvr"] = {"Burarra"}, ["bvt"] = {"Bati (Indonesia)"}, ["bvu"] = {"Bukit Malay"}, ["bvv"] = {"Baniva"}, ["bvw"] = {"Boga"}, ["bvx"] = {"Dibole"}, ["bvy"] = {"Baybayanon"}, ["bvz"] = {"Bauzi"}, ["bwa"] = {"Bwatoo"}, ["bwb"] = {"Namosi-Naitasiri-Serua"}, ["bwc"] = {"Bwile"}, ["bwd"] = {"Bwaidoka"}, ["bwe"] = {"Bwe Karen"}, ["bwf"] = {"Boselewa"}, ["bwg"] = {"Barwe"}, ["bwh"] = {"Bishuo"}, ["bwi"] = {"Baniwa"}, ["bwj"] = {"Láá Láá Bwamu"}, ["bwk"] = {"Bauwaki"}, ["bwl"] = {"Bwela"}, ["bwm"] = {"Biwat"}, ["bwn"] = {"Wunai Bunu"}, ["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"}, ["bwp"] = {"Mandobo Bawah"}, ["bwq"] = {"Southern Bobo Madaré"}, ["bwr"] = {"Bura-Pabir"}, ["bws"] = {"Bomboma"}, ["bwt"] = {"Bafaw-Balong"}, ["bwu"] = {"Buli (Ghana)"}, ["bww"] = {"Bwa"}, ["bwx"] = {"Bu-Nao Bunu"}, ["bwy"] = {"Cwi Bwamu"}, ["bwz"] = {"Bwisi"}, ["bxa"] = {"Tairaha"}, ["bxb"] = {"Belanda Bor"}, ["bxc"] = {"Molengue"}, ["bxd"] = {"Pela"}, ["bxe"] = {"Birale"}, ["bxf"] = {"Bilur", "Minigir"}, ["bxg"] = {"Bangala"}, ["bxh"] = {"Buhutu"}, ["bxi"] = {"Pirlatapa"}, ["bxj"] = {"Bayungu"}, ["bxk"] = {"Bukusu", "Lubukusu"}, ["bxl"] = {"Jalkunan"}, ["bxm"] = {"Mongolia Buriat"}, ["bxn"] = {"Burduna"}, ["bxo"] = {"Barikanchi"}, ["bxp"] = {"Bebil"}, ["bxq"] = {"Beele"}, ["bxr"] = {"Russia Buriat"}, ["bxs"] = {"Busam"}, ["bxu"] = {"China Buriat"}, ["bxv"] = {"Berakou"}, ["bxw"] = {"Bankagooma"}, ["bxz"] = {"Binahari"}, ["bya"] = {"Batak"}, ["byb"] = {"Bikya"}, ["byc"] = {"Ubaghara"}, ["byd"] = {"Benyadu'"}, ["bye"] = {"Pouye"}, ["byf"] = {"Bete"}, ["byg"] = {"Baygo"}, ["byh"] = {"Bhujel"}, ["byi"] = {"Buyu"}, ["byj"] = {"Bina (Nigeria)"}, ["byk"] = {"Biao"}, ["byl"] = {"Bayono"}, ["bym"] = {"Bidjara"}, ["byn"] = {"Bilin", "Blin"}, ["byo"] = {"Biyo"}, ["byp"] = {"Bumaji"}, ["byq"] = {"Basay"}, ["byr"] = {"Baruya", "Yipma"}, ["bys"] = {"Burak"}, ["byt"] = {"Berti"}, ["byv"] = {"Medumba"}, ["byw"] = {"Belhariya"}, ["byx"] = {"Qaqet"}, ["byz"] = {"Banaro"}, ["bza"] = {"Bandi"}, ["bzb"] = {"Andio"}, ["bzc"] = {"Southern Betsimisaraka Malagasy"}, ["bzd"] = {"Bribri"}, ["bze"] = {"Jenaama Bozo"}, ["bzf"] = {"Boikin"}, ["bzg"] = {"Babuza"}, ["bzh"] = {"Mapos Buang"}, ["bzi"] = {"Bisu"}, ["bzj"] = {"Belize Kriol English"}, ["bzk"] = {"Nicaragua Creole English"}, ["bzl"] = {"Boano (Sulawesi)"}, ["bzm"] = {"Bolondo"}, ["bzn"] = {"Boano (Maluku)"}, ["bzo"] = {"Bozaba"}, ["bzp"] = {"Kemberano"}, ["bzq"] = {"Buli (Indonesia)"}, ["bzr"] = {"Biri"}, ["bzs"] = {"Brazilian Sign Language"}, ["bzt"] = {"Brithenig"}, ["bzu"] = {"Burmeso"}, ["bzv"] = {"Naami"}, ["bzw"] = {"Basa (Nigeria)"}, ["bzx"] = {"Kɛlɛngaxo Bozo"}, ["bzy"] = {"Obanliku"}, ["bzz"] = {"Evant"}, ["caa"] = {"Chortí"}, ["cab"] = {"Garifuna"}, ["cac"] = {"Chuj"}, ["cad"] = {"Caddo"}, ["cae"] = {"Lehar", "Laalaa"}, ["caf"] = {"Southern Carrier"}, ["cag"] = {"Nivaclé"}, ["cah"] = {"Cahuarano"}, ["cai"] = {"Central American Indian languages"}, ["caj"] = {"Chané"}, ["cak"] = {"Kaqchikel", "Cakchiquel"}, ["cal"] = {"Carolinian"}, ["cam"] = {"Cemuhî"}, ["can"] = {"Chambri"}, ["cao"] = {"Chácobo"}, ["cap"] = {"Chipaya"}, ["caq"] = {"Car Nicobarese"}, ["car"] = {"Galibi Carib"}, ["cas"] = {"Tsimané"}, ["cau"] = {"Caucasian languages"}, ["cav"] = {"Cavineña"}, ["caw"] = {"Callawalla"}, ["cax"] = {"Chiquitano"}, ["cay"] = {"Cayuga"}, ["caz"] = {"Canichana"}, ["cba"] = {"Chibchan languages"}, ["cbb"] = {"Cabiyarí"}, ["cbc"] = {"Carapana"}, ["cbd"] = {"Carijona"}, ["cbg"] = {"Chimila"}, ["cbi"] = {"Chachi"}, ["cbj"] = {"Ede Cabe"}, ["cbk"] = {"Chavacano"}, ["cbl"] = {"Bualkhaw Chin"}, ["cbn"] = {"Nyahkur"}, ["cbo"] = {"Izora"}, ["cbq"] = {"Tsucuba", "Cuba"}, ["cbr"] = {"Cashibo-Cacataibo"}, ["cbs"] = {"Cashinahua"}, ["cbt"] = {"Chayahuita"}, ["cbu"] = {"Candoshi-Shapra"}, ["cbv"] = {"Cacua"}, ["cbw"] = {"Kinabalian"}, ["cby"] = {"Carabayo"}, ["ccc"] = {"Chamicuro"}, ["ccd"] = {"Cafundo Creole"}, ["cce"] = {"Chopi"}, ["ccg"] = {"Samba Daka"}, ["cch"] = {"Atsam"}, ["ccj"] = {"Kasanga"}, ["ccl"] = {"Cutchi-Swahili"}, ["ccm"] = {"Malaccan Creole Malay"}, ["ccn"] = {"North Caucasian languages"}, ["cco"] = {"Comaltepec Chinantec"}, ["ccp"] = {"Chakma"}, ["ccr"] = {"Cacaopera"}, ["ccs"] = {"South Caucasian languages"}, ["cda"] = {"Choni"}, ["cdc"] = {"Chadic languages"}, ["cdd"] = {"Caddoan languages"}, ["cde"] = {"Chenchu"}, ["cdf"] = {"Chiru"}, ["cdh"] = {"Chambeali"}, ["cdi"] = {"Chodri"}, ["cdj"] = {"Churahi"}, ["cdm"] = {"Chepang"}, ["cdn"] = {"Chaudangsi"}, ["cdo"] = {"Min Dong Chinese"}, ["cdr"] = {"Cinda-Regi-Tiyal"}, ["cds"] = {"Chadian Sign Language"}, ["cdy"] = {"Chadong"}, ["cdz"] = {"Koda"}, ["cea"] = {"Lower Chehalis"}, ["ceb"] = {"Cebuano"}, ["ceg"] = {"Chamacoco"}, ["cek"] = {"Eastern Khumi Chin"}, ["cel"] = {"Celtic languages"}, ["cen"] = {"Cen"}, ["cet"] = {"Centúúm"}, ["cey"] = {"Ekai Chin"}, ["cfa"] = {"Dijim-Bwilim"}, ["cfd"] = {"Cara"}, ["cfg"] = {"Como Karim"}, ["cfm"] = {"Falam Chin"}, ["cga"] = {"Changriwa"}, ["cgc"] = {"Kagayanen"}, ["cgg"] = {"Chiga"}, ["cgk"] = {"Chocangacakha"}, ["chb"] = {"Chibcha"}, ["chc"] = {"Catawba"}, ["chd"] = {"Highland Oaxaca Chontal"}, ["chf"] = {"Tabasco Chontal"}, ["chg"] = {"Chagatai"}, ["chh"] = {"Chinook"}, ["chj"] = {"Ojitlán Chinantec"}, ["chk"] = {"Chuukese"}, ["chl"] = {"Cahuilla"}, ["chm"] = {"Mari (Russia)"}, ["chn"] = {"Chinook jargon"}, ["cho"] = {"Choctaw"}, ["chp"] = {"Chipewyan", "Dene Suline"}, ["chq"] = {"Quiotepec Chinantec"}, ["chr"] = {"Cherokee"}, ["cht"] = {"Cholón"}, ["chw"] = {"Chuwabu"}, ["chx"] = {"Chantyal"}, ["chy"] = {"Cheyenne"}, ["chz"] = {"Ozumacín Chinantec"}, ["cia"] = {"Cia-Cia"}, ["cib"] = {"Ci Gbe"}, ["cic"] = {"Chickasaw"}, ["cid"] = {"Chimariko"}, ["cie"] = {"Cineni"}, ["cih"] = {"Chinali"}, ["cik"] = {"Chitkuli Kinnauri"}, ["cim"] = {"Cimbrian"}, ["cin"] = {"Cinta Larga"}, ["cip"] = {"Chiapanec"}, ["cir"] = {"Tiri", "Haméa", "Méa"}, ["ciw"] = {"Chippewa"}, ["ciy"] = {"Chaima"}, ["cja"] = {"Western Cham"}, ["cje"] = {"Chru"}, ["cjh"] = {"Upper Chehalis"}, ["cji"] = {"Chamalal"}, ["cjk"] = {"Chokwe"}, ["cjm"] = {"Eastern Cham"}, ["cjn"] = {"Chenapian"}, ["cjo"] = {"Ashéninka Pajonal"}, ["cjp"] = {"Cabécar"}, ["cjs"] = {"Shor"}, ["cjv"] = {"Chuave"}, ["cjy"] = {"Jinyu Chinese"}, ["ckb"] = {"Central Kurdish"}, ["ckh"] = {"Chak"}, ["ckl"] = {"Cibak"}, ["ckm"] = {"Chakavian"}, ["ckn"] = {"Kaang Chin"}, ["cko"] = {"Anufo"}, ["ckq"] = {"Kajakse"}, ["ckr"] = {"Kairak"}, ["cks"] = {"Tayo"}, ["ckt"] = {"Chukot"}, ["cku"] = {"Koasati"}, ["ckv"] = {"Kavalan"}, ["ckx"] = {"Caka"}, ["cky"] = {"Cakfem-Mushere"}, ["ckz"] = {"Cakchiquel-Quiché Mixed Language"}, ["cla"] = {"Ron"}, ["clc"] = {"Chilcotin"}, ["cld"] = {"Chaldean Neo-Aramaic"}, ["cle"] = {"Lealao Chinantec"}, ["clh"] = {"Chilisso"}, ["cli"] = {"Chakali"}, ["clj"] = {"Laitu Chin"}, ["clk"] = {"Idu-Mishmi"}, ["cll"] = {"Chala"}, ["clm"] = {"Clallam"}, ["clo"] = {"Lowland Oaxaca Chontal"}, ["clt"] = {"Lautu Chin"}, ["clu"] = {"Caluyanun"}, ["clw"] = {"Chulym"}, ["cly"] = {"Eastern Highland Chatino"}, ["cma"] = {"Maa"}, ["cmc"] = {"Chamic languages"}, ["cme"] = {"Cerma"}, ["cmg"] = {"Classical Mongolian"}, ["cmi"] = {"Emberá-Chamí"}, ["cml"] = {"Campalagian"}, ["cmm"] = {"Michigamea"}, ["cmn"] = {"Mandarin Chinese"}, ["cmo"] = {"Central Mnong"}, ["cmr"] = {"Mro-Khimi Chin"}, ["cms"] = {"Messapic"}, ["cmt"] = {"Camtho"}, ["cna"] = {"Changthang"}, ["cnb"] = {"Chinbon Chin"}, ["cnc"] = {"Côông"}, ["cng"] = {"Northern Qiang"}, ["cnh"] = {"Hakha Chin", "Haka Chin"}, ["cni"] = {"Asháninka"}, ["cnk"] = {"Khumi Chin"}, ["cnl"] = {"Lalana Chinantec"}, ["cno"] = {"Con"}, ["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"}, ["cnq"] = {"Chung"}, ["cnr"] = {"Montenegrin"}, ["cns"] = {"Central Asmat"}, ["cnt"] = {"Tepetotutla Chinantec"}, ["cnu"] = {"Chenoua"}, ["cnw"] = {"Ngawn Chin"}, ["cnx"] = {"Middle Cornish"}, ["coa"] = {"Cocos Islands Malay"}, ["cob"] = {"Chicomuceltec"}, ["coc"] = {"Cocopa"}, ["cod"] = {"Cocama-Cocamilla"}, ["coe"] = {"Koreguaje"}, ["cof"] = {"Colorado"}, ["cog"] = {"Chong"}, ["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"}, ["coj"] = {"Cochimi"}, ["cok"] = {"Santa Teresa Cora"}, ["col"] = {"Columbia-Wenatchi"}, ["com"] = {"Comanche"}, ["con"] = {"Cofán"}, ["coo"] = {"Comox"}, ["cop"] = {"Coptic"}, ["coq"] = {"Coquille"}, ["cot"] = {"Caquinte"}, ["cou"] = {"Wamey"}, ["cov"] = {"Cao Miao"}, ["cow"] = {"Cowlitz"}, ["cox"] = {"Nanti"}, ["coz"] = {"Chochotec"}, ["cpa"] = {"Palantla Chinantec"}, ["cpb"] = {"Ucayali-Yurúa Ashéninka"}, ["cpc"] = {"Ajyíninka Apurucayali"}, ["cpe"] = {"English-based creoles and pidgins"}, ["cpf"] = {"French-based creoles and pidgins"}, ["cpg"] = {"Cappadocian Greek"}, ["cpi"] = {"Chinese Pidgin English"}, ["cpn"] = {"Cherepon"}, ["cpo"] = {"Kpeego"}, ["cpp"] = {"Portuguese-based creoles and pidgins"}, ["cps"] = {"Capiznon"}, ["cpu"] = {"Pichis Ashéninka"}, ["cpx"] = {"Pu-Xian Chinese"}, ["cpy"] = {"South Ucayali Ashéninka"}, ["cqd"] = {"Chuanqiandian Cluster Miao"}, ["cra"] = {"Chara"}, ["crb"] = {"Island Carib"}, ["crc"] = {"Lonwolwol"}, ["crd"] = {"Coeur d'Alene"}, ["crf"] = {"Caramanta"}, ["crg"] = {"Michif"}, ["crh"] = {"Crimean Tatar", "Crimean Turkish"}, ["cri"] = {"Sãotomense"}, ["crj"] = {"Southern East Cree"}, ["crk"] = {"Plains Cree"}, ["crl"] = {"Northern East Cree"}, ["crm"] = {"Moose Cree"}, ["crn"] = {"El Nayar Cora"}, ["cro"] = {"Crow"}, ["crp"] = {"Creoles and pidgins"}, ["crq"] = {"Iyo'wujwa Chorote"}, ["crr"] = {"Carolina Algonquian"}, ["crs"] = {"Seselwa Creole French"}, ["crt"] = {"Iyojwa'ja Chorote"}, ["crv"] = {"Chaura"}, ["crw"] = {"Chrau"}, ["crx"] = {"Carrier"}, ["cry"] = {"Cori"}, ["crz"] = {"Cruzeño"}, ["csa"] = {"Chiltepec Chinantec"}, ["csb"] = {"Kashubian"}, ["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"}, ["csd"] = {"Chiangmai Sign Language"}, ["cse"] = {"Czech Sign Language"}, ["csf"] = {"Cuba Sign Language"}, ["csg"] = {"Chilean Sign Language"}, ["csh"] = {"Asho Chin"}, ["csi"] = {"Coast Miwok"}, ["csj"] = {"Songlai Chin"}, ["csk"] = {"Jola-Kasa"}, ["csl"] = {"Chinese Sign Language"}, ["csm"] = {"Central Sierra Miwok"}, ["csn"] = {"Colombian Sign Language"}, ["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"}, ["csp"] = {"Southern Ping Chinese", "Southern Pinghua"}, ["csq"] = {"Croatia Sign Language"}, ["csr"] = {"Costa Rican Sign Language"}, ["css"] = {"Southern Ohlone"}, ["cst"] = {"Northern Ohlone"}, ["csu"] = {"Central Sudanic languages"}, ["csv"] = {"Sumtu Chin"}, ["csw"] = {"Swampy Cree"}, ["csx"] = {"Cambodian Sign Language"}, ["csy"] = {"Siyin Chin"}, ["csz"] = {"Coos"}, ["cta"] = {"Tataltepec Chatino"}, ["ctc"] = {"Chetco"}, ["ctd"] = {"Tedim Chin"}, ["cte"] = {"Tepinapa Chinantec"}, ["ctg"] = {"Chittagonian"}, ["cth"] = {"Thaiphum Chin"}, ["ctl"] = {"Tlacoatzintepec Chinantec"}, ["ctm"] = {"Chitimacha"}, ["ctn"] = {"Chhintange"}, ["cto"] = {"Emberá-Catío"}, ["ctp"] = {"Western Highland Chatino"}, ["cts"] = {"Northern Catanduanes Bikol"}, ["ctt"] = {"Wayanad Chetti"}, ["ctu"] = {"Chol"}, ["cty"] = {"Moundadan Chetty"}, ["ctz"] = {"Zacatepec Chatino"}, ["cua"] = {"Cua"}, ["cub"] = {"Cubeo"}, ["cuc"] = {"Usila Chinantec"}, ["cuh"] = {"Chuka", "Gichuka"}, ["cui"] = {"Cuiba"}, ["cuj"] = {"Mashco Piro"}, ["cuk"] = {"San Blas Kuna"}, ["cul"] = {"Culina", "Kulina"}, ["cuo"] = {"Cumanagoto"}, ["cup"] = {"Cupeño"}, ["cuq"] = {"Cun"}, ["cur"] = {"Chhulung"}, ["cus"] = {"Cushitic languages"}, ["cut"] = {"Teutila Cuicatec"}, ["cuu"] = {"Tai Ya"}, ["cuv"] = {"Cuvok"}, ["cuw"] = {"Chukwa"}, ["cux"] = {"Tepeuxila Cuicatec"}, ["cuy"] = {"Cuitlatec"}, ["cvg"] = {"Chug"}, ["cvn"] = {"Valle Nacional Chinantec"}, ["cwa"] = {"Kabwa"}, ["cwb"] = {"Maindo"}, ["cwd"] = {"Woods Cree"}, ["cwe"] = {"Kwere"}, ["cwg"] = {"Chewong", "Cheq Wong"}, ["cwt"] = {"Kuwaataay"}, ["cxh"] = {"Cha'ari"}, ["cya"] = {"Nopala Chatino"}, ["cyb"] = {"Cayubaba"}, ["cyo"] = {"Cuyonon"}, ["czh"] = {"Huizhou Chinese"}, ["czk"] = {"Knaanic"}, ["czn"] = {"Zenzontepec Chatino"}, ["czo"] = {"Min Zhong Chinese"}, ["czt"] = {"Zotung Chin"}, ["daa"] = {"Dangaléat"}, ["dac"] = {"Dambi"}, ["dad"] = {"Marik"}, ["dae"] = {"Duupa"}, ["dag"] = {"Dagbani"}, ["dah"] = {"Gwahatike"}, ["dai"] = {"Day"}, ["daj"] = {"Dar Fur Daju"}, ["dak"] = {"Dakota"}, ["dal"] = {"Dahalo"}, ["dam"] = {"Damakawa"}, ["dao"] = {"Daai Chin"}, ["daq"] = {"Dandami Maria"}, ["dar"] = {"Dargwa"}, ["das"] = {"Daho-Doo"}, ["dau"] = {"Dar Sila Daju"}, ["dav"] = {"Taita", "Dawida"}, ["daw"] = {"Davawenyo"}, ["dax"] = {"Dayi"}, ["day"] = {"Land Dayak languages"}, ["daz"] = {"Dao"}, ["dba"] = {"Bangime"}, ["dbb"] = {"Deno"}, ["dbd"] = {"Dadiya"}, ["dbe"] = {"Dabe"}, ["dbf"] = {"Edopi"}, ["dbg"] = {"Dogul Dom Dogon"}, ["dbi"] = {"Doka"}, ["dbj"] = {"Ida'an"}, ["dbl"] = {"Dyirbal"}, ["dbm"] = {"Duguri"}, ["dbn"] = {"Duriankere"}, ["dbo"] = {"Dulbu"}, ["dbp"] = {"Duwai"}, ["dbq"] = {"Daba"}, ["dbr"] = {"Dabarre"}, ["dbt"] = {"Ben Tey Dogon"}, ["dbu"] = {"Bondum Dom Dogon"}, ["dbv"] = {"Dungu"}, ["dbw"] = {"Bankan Tey Dogon"}, ["dby"] = {"Dibiyaso"}, ["dcc"] = {"Deccan"}, ["dcr"] = {"Negerhollands"}, ["dda"] = {"Dadi Dadi"}, ["ddd"] = {"Dongotono"}, ["dde"] = {"Doondo"}, ["ddg"] = {"Fataluku"}, ["ddi"] = {"West Goodenough"}, ["ddj"] = {"Jaru"}, ["ddn"] = {"Dendi (Benin)"}, ["ddo"] = {"Dido"}, ["ddr"] = {"Dhudhuroa"}, ["dds"] = {"Donno So Dogon"}, ["ddw"] = {"Dawera-Daweloor"}, ["dec"] = {"Dagik"}, ["ded"] = {"Dedua"}, ["dee"] = {"Dewoin"}, ["def"] = {"Dezfuli"}, ["deg"] = {"Degema"}, ["deh"] = {"Dehwari"}, ["dei"] = {"Demisa"}, ["dek"] = {"Dek"}, ["del"] = {"Delaware"}, ["dem"] = {"Dem"}, ["den"] = {"Slave (Athapascan)"}, ["dep"] = {"Pidgin Delaware"}, ["deq"] = {"Dendi (Central African Republic)"}, ["der"] = {"Deori"}, ["des"] = {"Desano"}, ["dev"] = {"Domung"}, ["dez"] = {"Dengese"}, ["dga"] = {"Southern Dagaare"}, ["dgb"] = {"Bunoge Dogon"}, ["dgc"] = {"Casiguran Dumagat Agta"}, ["dgd"] = {"Dagaari Dioula"}, ["dge"] = {"Degenan"}, ["dgg"] = {"Doga"}, ["dgh"] = {"Dghwede"}, ["dgi"] = {"Northern Dagara"}, ["dgk"] = {"Dagba"}, ["dgl"] = {"Andaandi", "Dongolawi"}, ["dgn"] = {"Dagoman"}, ["dgo"] = {"Dogri (individual language)"}, ["dgr"] = {"Dogrib", "Tłı̨chǫ"}, ["dgs"] = {"Dogoso"}, ["dgt"] = {"Ndra'ngith"}, ["dgw"] = {"Daungwurrung"}, ["dgx"] = {"Doghoro"}, ["dgz"] = {"Daga"}, ["dhd"] = {"Dhundari"}, ["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"}, ["dhi"] = {"Dhimal"}, ["dhl"] = {"Dhalandji"}, ["dhm"] = {"Zemba"}, ["dhn"] = {"Dhanki"}, ["dho"] = {"Dhodia"}, ["dhr"] = {"Dhargari"}, ["dhs"] = {"Dhaiso"}, ["dhu"] = {"Dhurga"}, ["dhv"] = {"Dehu", "Drehu"}, ["dhw"] = {"Dhanwar (Nepal)"}, ["dhx"] = {"Dhungaloo"}, ["dia"] = {"Dia"}, ["dib"] = {"South Central Dinka"}, ["dic"] = {"Lakota Dida"}, ["did"] = {"Didinga"}, ["dif"] = {"Dieri", "Diyari"}, ["dig"] = {"Digo", "Chidigo"}, ["dih"] = {"Kumiai"}, ["dii"] = {"Dimbong"}, ["dij"] = {"Dai"}, ["dik"] = {"Southwestern Dinka"}, ["dil"] = {"Dilling"}, ["dim"] = {"Dime"}, ["din"] = {"Dinka"}, ["dio"] = {"Dibo"}, ["dip"] = {"Northeastern Dinka"}, ["diq"] = {"Dimli (individual language)"}, ["dir"] = {"Dirim"}, ["dis"] = {"Dimasa"}, ["diu"] = {"Diriku"}, ["diw"] = {"Northwestern Dinka"}, ["dix"] = {"Dixon Reef"}, ["diy"] = {"Diuwe"}, ["diz"] = {"Ding"}, ["dja"] = {"Djadjawurrung"}, ["djb"] = {"Djinba"}, ["djc"] = {"Dar Daju Daju"}, ["djd"] = {"Djamindjung", "Ngaliwurru"}, ["dje"] = {"Zarma"}, ["djf"] = {"Djangun"}, ["dji"] = {"Djinang"}, ["djj"] = {"Djeebbana"}, ["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"}, ["djm"] = {"Jamsay Dogon"}, ["djn"] = {"Jawoyn", "Djauan"}, ["djo"] = {"Jangkang"}, ["djr"] = {"Djambarrpuyngu"}, ["dju"] = {"Kapriman"}, ["djw"] = {"Djawi"}, ["dka"] = {"Dakpakha"}, ["dkg"] = {"Kadung"}, ["dkk"] = {"Dakka"}, ["dkr"] = {"Kuijau"}, ["dks"] = {"Southeastern Dinka"}, ["dkx"] = {"Mazagway"}, ["dlg"] = {"Dolgan"}, ["dlk"] = {"Dahalik"}, ["dlm"] = {"Dalmatian"}, ["dln"] = {"Darlong"}, ["dma"] = {"Duma"}, ["dmb"] = {"Mombo Dogon"}, ["dmc"] = {"Gavak"}, ["dmd"] = {"Madhi Madhi"}, ["dme"] = {"Dugwor"}, ["dmf"] = {"Medefaidrin"}, ["dmg"] = {"Upper Kinabatangan"}, ["dmk"] = {"Domaaki"}, ["dml"] = {"Dameli"}, ["dmm"] = {"Dama"}, ["dmn"] = {"Mande languages"}, ["dmo"] = {"Kemedzung"}, ["dmr"] = {"East Damar"}, ["dms"] = {"Dampelas"}, ["dmu"] = {"Dubu", "Tebi"}, ["dmv"] = {"Dumpas"}, ["dmw"] = {"Mudburra"}, ["dmx"] = {"Dema"}, ["dmy"] = {"Demta", "Sowari"}, ["dna"] = {"Upper Grand Valley Dani"}, ["dnd"] = {"Daonda"}, ["dne"] = {"Ndendeule"}, ["dng"] = {"Dungan"}, ["dni"] = {"Lower Grand Valley Dani"}, ["dnj"] = {"Dan"}, ["dnk"] = {"Dengka"}, ["dnn"] = {"Dzùùngoo"}, ["dno"] = {"Ndrulo", "Northern Lendu"}, ["dnr"] = {"Danaru"}, ["dnt"] = {"Mid Grand Valley Dani"}, ["dnu"] = {"Danau"}, ["dnv"] = {"Danu"}, ["dnw"] = {"Western Dani"}, ["dny"] = {"Dení"}, ["doa"] = {"Dom"}, ["dob"] = {"Dobu"}, ["doc"] = {"Northern Dong"}, ["doe"] = {"Doe"}, ["dof"] = {"Domu"}, ["doh"] = {"Dong"}, ["doi"] = {"Dogri (macrolanguage)"}, ["dok"] = {"Dondo"}, ["dol"] = {"Doso"}, ["don"] = {"Toura (Papua New Guinea)"}, ["doo"] = {"Dongo"}, ["dop"] = {"Lukpa"}, ["doq"] = {"Dominican Sign Language"}, ["dor"] = {"Dori'o"}, ["dos"] = {"Dogosé"}, ["dot"] = {"Dass"}, ["dov"] = {"Dombe"}, ["dow"] = {"Doyayo"}, ["dox"] = {"Bussa"}, ["doy"] = {"Dompo"}, ["doz"] = {"Dorze"}, ["dpp"] = {"Papar"}, ["dra"] = {"Dravidian languages"}, ["drb"] = {"Dair"}, ["drc"] = {"Minderico"}, ["drd"] = {"Darmiya"}, ["dre"] = {"Dolpo"}, ["drg"] = {"Rungus"}, ["dri"] = {"C'Lela"}, ["drl"] = {"Paakantyi"}, ["drn"] = {"West Damar"}, ["dro"] = {"Daro-Matu Melanau"}, ["drq"] = {"Dura"}, ["drs"] = {"Gedeo"}, ["drt"] = {"Drents"}, ["dru"] = {"Rukai"}, ["dry"] = {"Darai"}, ["dsb"] = {"Lower Sorbian"}, ["dse"] = {"Dutch Sign Language"}, ["dsh"] = {"Daasanach"}, ["dsi"] = {"Disa"}, ["dsk"] = {"Dokshi"}, ["dsl"] = {"Danish Sign Language"}, ["dsn"] = {"Dusner"}, ["dso"] = {"Desiya"}, ["dsq"] = {"Tadaksahak"}, ["dsz"] = {"Mardin Sign Language"}, ["dta"] = {"Daur"}, ["dtb"] = {"Labuk-Kinabatangan Kadazan"}, ["dtd"] = {"Ditidaht"}, ["dth"] = {"Adithinngithigh"}, ["dti"] = {"Ana Tinga Dogon"}, ["dtk"] = {"Tene Kan Dogon"}, ["dtm"] = {"Tomo Kan Dogon"}, ["dtn"] = {"Daatsʼíin"}, ["dto"] = {"Tommo So Dogon"}, ["dtp"] = {"Kadazan Dusun", "Central Dusun"}, ["dtr"] = {"Lotud"}, ["dts"] = {"Toro So Dogon"}, ["dtt"] = {"Toro Tegu Dogon"}, ["dtu"] = {"Tebul Ure Dogon"}, ["dty"] = {"Dotyali"}, ["dua"] = {"Duala"}, ["dub"] = {"Dubli"}, ["duc"] = {"Duna"}, ["due"] = {"Umiray Dumaget Agta"}, ["duf"] = {"Dumbea", "Drubea"}, ["dug"] = {"Duruma", "Chiduruma"}, ["duh"] = {"Dungra Bhil"}, ["dui"] = {"Dumun"}, ["duk"] = {"Uyajitaya"}, ["dul"] = {"Alabat Island Agta"}, ["dum"] = {"Middle Dutch (ca. 1050-1350)"}, ["dun"] = {"Dusun Deyah"}, ["duo"] = {"Dupaninan Agta"}, ["dup"] = {"Duano"}, ["duq"] = {"Dusun Malang"}, ["dur"] = {"Dii"}, ["dus"] = {"Dumi"}, ["duu"] = {"Drung"}, ["duv"] = {"Duvle"}, ["duw"] = {"Dusun Witu"}, ["dux"] = {"Duungooma"}, ["duy"] = {"Dicamay Agta"}, ["duz"] = {"Duli-Gey"}, ["dva"] = {"Duau"}, ["dwa"] = {"Diri"}, ["dwk"] = {"Dawik Kui"}, ["dwr"] = {"Dawro"}, ["dws"] = {"Dutton World Speedwords"}, ["dwu"] = {"Dhuwal"}, ["dww"] = {"Dawawa"}, ["dwy"] = {"Dhuwaya"}, ["dwz"] = {"Dewas Rai"}, ["dya"] = {"Dyan"}, ["dyb"] = {"Dyaberdyaber"}, ["dyd"] = {"Dyugun"}, ["dyg"] = {"Villa Viciosa Agta"}, ["dyi"] = {"Djimini Senoufo"}, ["dym"] = {"Yanda Dom Dogon"}, ["dyn"] = {"Dyangadi", "Dhanggatti"}, ["dyo"] = {"Jola-Fonyi"}, ["dyr"] = {"Dyarim"}, ["dyu"] = {"Dyula"}, ["dyy"] = {"Djabugay", "Dyaabugay"}, ["dza"] = {"Tunzu"}, ["dzd"] = {"Daza"}, ["dze"] = {"Djiwarli"}, ["dzg"] = {"Dazaga"}, ["dzl"] = {"Dzalakha"}, ["dzn"] = {"Dzando"}, ["eaa"] = {"Karenggapa"}, ["ebc"] = {"Beginci"}, ["ebg"] = {"Ebughu"}, ["ebk"] = {"Eastern Bontok"}, ["ebo"] = {"Teke-Ebo"}, ["ebr"] = {"Ebrié"}, ["ebu"] = {"Embu", "Kiembu"}, ["ecr"] = {"Eteocretan"}, ["ecs"] = {"Ecuadorian Sign Language"}, ["ecy"] = {"Eteocypriot"}, ["eee"] = {"E"}, ["efa"] = {"Efai"}, ["efe"] = {"Efe"}, ["efi"] = {"Efik"}, ["ega"] = {"Ega"}, ["egl"] = {"Emilian"}, ["egm"] = {"Benamanga"}, ["ego"] = {"Eggon"}, ["egx"] = {"Egyptian languages"}, ["egy"] = {"Egyptian (Ancient)"}, ["ehs"] = {"Miyakubo Sign Language"}, ["ehu"] = {"Ehueun"}, ["eip"] = {"Eipomek"}, ["eit"] = {"Eitiep"}, ["eiv"] = {"Askopan"}, ["eja"] = {"Ejamat"}, ["eka"] = {"Ekajuk"}, ["eke"] = {"Ekit"}, ["ekg"] = {"Ekari"}, ["eki"] = {"Eki"}, ["ekk"] = {"Standard Estonian"}, ["ekl"] = {"Kol (Bangladesh)", "Kol"}, ["ekm"] = {"Elip"}, ["eko"] = {"Koti"}, ["ekp"] = {"Ekpeye"}, ["ekr"] = {"Yace"}, ["eky"] = {"Eastern Kayah"}, ["ele"] = {"Elepi"}, ["elh"] = {"El Hugeirat"}, ["eli"] = {"Nding"}, ["elk"] = {"Elkei"}, ["elm"] = {"Eleme"}, ["elo"] = {"El Molo"}, ["elu"] = {"Elu"}, ["elx"] = {"Elamite"}, ["ema"] = {"Emai-Iuleha-Ora"}, ["emb"] = {"Embaloh"}, ["eme"] = {"Emerillon"}, ["emg"] = {"Eastern Meohang"}, ["emi"] = {"Mussau-Emira"}, ["emk"] = {"Eastern Maninkakan"}, ["emm"] = {"Mamulique"}, ["emn"] = {"Eman"}, ["emp"] = {"Northern Emberá"}, ["emq"] = {"Eastern Minyag"}, ["ems"] = {"Pacific Gulf Yupik"}, ["emu"] = {"Eastern Muria"}, ["emw"] = {"Emplawas"}, ["emx"] = {"Erromintxela"}, ["emy"] = {"Epigraphic Mayan"}, ["emz"] = {"Mbessa"}, ["ena"] = {"Apali"}, ["enb"] = {"Markweeta"}, ["enc"] = {"En"}, ["end"] = {"Ende"}, ["enf"] = {"Forest Enets"}, ["enh"] = {"Tundra Enets"}, ["enl"] = {"Enlhet"}, ["enm"] = {"Middle English (1100-1500)"}, ["enn"] = {"Engenni"}, ["eno"] = {"Enggano"}, ["enq"] = {"Enga"}, ["enr"] = {"Emumu", "Emem"}, ["enu"] = {"Enu"}, ["env"] = {"Enwan (Edo State)"}, ["enw"] = {"Enwan (Akwa Ibom State)"}, ["enx"] = {"Enxet"}, ["eot"] = {"Beti (Côte d'Ivoire)"}, ["epi"] = {"Epie"}, ["era"] = {"Eravallan"}, ["erg"] = {"Sie"}, ["erh"] = {"Eruwa"}, ["eri"] = {"Ogea"}, ["erk"] = {"South Efate"}, ["ero"] = {"Horpa"}, ["err"] = {"Erre"}, ["ers"] = {"Ersu"}, ["ert"] = {"Eritai"}, ["erw"] = {"Erokwanas"}, ["ese"] = {"Ese Ejja"}, ["esg"] = {"Aheri Gondi"}, ["esh"] = {"Eshtehardi"}, ["esi"] = {"North Alaskan Inupiatun"}, ["esk"] = {"Northwest Alaska Inupiatun"}, ["esl"] = {"Egypt Sign Language"}, ["esm"] = {"Esuma"}, ["esn"] = {"Salvadoran Sign Language"}, ["eso"] = {"Estonian Sign Language"}, ["esq"] = {"Esselen"}, ["ess"] = {"Central Siberian Yupik"}, ["esu"] = {"Central Yupik"}, ["esx"] = {"Eskimo-Aleut languages"}, ["esy"] = {"Eskayan"}, ["etb"] = {"Etebi"}, ["etc"] = {"Etchemin"}, ["eth"] = {"Ethiopian Sign Language"}, ["etn"] = {"Eton (Vanuatu)"}, ["eto"] = {"Eton (Cameroon)"}, ["etr"] = {"Edolo"}, ["ets"] = {"Yekhee"}, ["ett"] = {"Etruscan"}, ["etu"] = {"Ejagham"}, ["etx"] = {"Eten"}, ["etz"] = {"Semimi"}, ["eud"] = {"Eudeve"}, ["euq"] = {"Basque (family)"}, ["eve"] = {"Even"}, ["evh"] = {"Uvbie"}, ["evn"] = {"Evenki"}, ["ewo"] = {"Ewondo"}, ["ext"] = {"Extremaduran"}, ["eya"] = {"Eyak"}, ["eyo"] = {"Keiyo"}, ["eza"] = {"Ezaa"}, ["eze"] = {"Uzekwe"}, ["faa"] = {"Fasu"}, ["fab"] = {"Fa d'Ambu"}, ["fad"] = {"Wagi"}, ["faf"] = {"Fagani"}, ["fag"] = {"Finongan"}, ["fah"] = {"Baissa Fali"}, ["fai"] = {"Faiwol"}, ["faj"] = {"Faita"}, ["fak"] = {"Fang (Cameroon)"}, ["fal"] = {"South Fali"}, ["fam"] = {"Fam"}, ["fan"] = {"Fang (Equatorial Guinea)"}, ["fap"] = {"Paloor"}, ["far"] = {"Fataleka"}, ["fat"] = {"Fanti"}, ["fau"] = {"Fayu"}, ["fax"] = {"Fala"}, ["fay"] = {"Southwestern Fars"}, ["faz"] = {"Northwestern Fars"}, ["fbl"] = {"West Albay Bikol"}, ["fcs"] = {"Quebec Sign Language"}, ["fer"] = {"Feroge"}, ["ffi"] = {"Foia Foia"}, ["ffm"] = {"Maasina Fulfulde"}, ["fgr"] = {"Fongoro"}, ["fia"] = {"Nobiin"}, ["fie"] = {"Fyer"}, ["fif"] = {"Faifi"}, ["fil"] = {"Filipino", "Pilipino"}, ["fip"] = {"Fipa"}, ["fir"] = {"Firan"}, ["fit"] = {"Tornedalen Finnish", "Meänkieli"}, ["fiu"] = {"Finno-Ugrian languages"}, ["fiw"] = {"Fiwaga"}, ["fkk"] = {"Kirya-Konzəl"}, ["fkv"] = {"Kven Finnish"}, ["fla"] = {"Kalispel-Pend d'Oreille"}, ["flh"] = {"Foau"}, ["fli"] = {"Fali"}, ["fll"] = {"North Fali"}, ["fln"] = {"Flinders Island"}, ["flr"] = {"Fuliiru"}, ["fly"] = {"Flaaitaal", "Tsotsitaal"}, ["fmp"] = {"Fe'fe'"}, ["fmu"] = {"Far Western Muria"}, ["fnb"] = {"Fanbak"}, ["fng"] = {"Fanagalo"}, ["fni"] = {"Fania"}, ["fod"] = {"Foodo"}, ["foi"] = {"Foi"}, ["fom"] = {"Foma"}, ["fon"] = {"Fon"}, ["for"] = {"Fore"}, ["fos"] = {"Siraya"}, ["fox"] = {"Formosan languages"}, ["fpe"] = {"Fernando Po Creole English"}, ["fqs"] = {"Fas"}, ["frc"] = {"Cajun French"}, ["frd"] = {"Fordata"}, ["frk"] = {"Frankish"}, ["frm"] = {"Middle French (ca. 1400-1600)"}, ["fro"] = {"Old French (842-ca. 1400)"}, ["frp"] = {"Arpitan", "Francoprovençal"}, ["frq"] = {"Forak"}, ["frr"] = {"Northern Frisian"}, ["frs"] = {"Eastern Frisian"}, ["frt"] = {"Fortsenal"}, ["fse"] = {"Finnish Sign Language"}, ["fsl"] = {"French Sign Language"}, ["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"}, ["fub"] = {"Adamawa Fulfulde"}, ["fuc"] = {"Pulaar"}, ["fud"] = {"East Futuna"}, ["fue"] = {"Borgu Fulfulde"}, ["fuf"] = {"Pular"}, ["fuh"] = {"Western Niger Fulfulde"}, ["fui"] = {"Bagirmi Fulfulde"}, ["fuj"] = {"Ko"}, ["fum"] = {"Fum"}, ["fun"] = {"Fulniô"}, ["fuq"] = {"Central-Eastern Niger Fulfulde"}, ["fur"] = {"Friulian"}, ["fut"] = {"Futuna-Aniwa"}, ["fuu"] = {"Furu"}, ["fuv"] = {"Nigerian Fulfulde"}, ["fuy"] = {"Fuyug"}, ["fvr"] = {"Fur"}, ["fwa"] = {"Fwâi"}, ["fwe"] = {"Fwe"}, ["gaa"] = {"Ga"}, ["gab"] = {"Gabri"}, ["gac"] = {"Mixed Great Andamanese"}, ["gad"] = {"Gaddang"}, ["gae"] = {"Guarequena"}, ["gaf"] = {"Gende"}, ["gag"] = {"Gagauz"}, ["gah"] = {"Alekano"}, ["gai"] = {"Borei"}, ["gaj"] = {"Gadsup"}, ["gak"] = {"Gamkonora"}, ["gal"] = {"Galolen"}, ["gam"] = {"Kandawo"}, ["gan"] = {"Gan Chinese"}, ["gao"] = {"Gants"}, ["gap"] = {"Gal"}, ["gaq"] = {"Gata'"}, ["gar"] = {"Galeya"}, ["gas"] = {"Adiwasi Garasia"}, ["gat"] = {"Kenati"}, ["gau"] = {"Mudhili Gadaba"}, ["gaw"] = {"Nobonob"}, ["gax"] = {"Borana-Arsi-Guji Oromo"}, ["gay"] = {"Gayo"}, ["gaz"] = {"West Central Oromo"}, ["gba"] = {"Gbaya (Central African Republic)"}, ["gbb"] = {"Kaytetye"}, ["gbd"] = {"Karajarri"}, ["gbe"] = {"Niksek"}, ["gbf"] = {"Gaikundi"}, ["gbg"] = {"Gbanziri"}, ["gbh"] = {"Defi Gbe"}, ["gbi"] = {"Galela"}, ["gbj"] = {"Bodo Gadaba"}, ["gbk"] = {"Gaddi"}, ["gbl"] = {"Gamit"}, ["gbm"] = {"Garhwali"}, ["gbn"] = {"Mo'da"}, ["gbo"] = {"Northern Grebo"}, ["gbp"] = {"Gbaya-Bossangoa"}, ["gbq"] = {"Gbaya-Bozoum"}, ["gbr"] = {"Gbagyi"}, ["gbs"] = {"Gbesi Gbe"}, ["gbu"] = {"Gagadu"}, ["gbv"] = {"Gbanu"}, ["gbw"] = {"Gabi-Gabi"}, ["gbx"] = {"Eastern Xwla Gbe"}, ["gby"] = {"Gbari"}, ["gbz"] = {"Zoroastrian Dari"}, ["gcc"] = {"Mali"}, ["gcd"] = {"Ganggalida"}, ["gce"] = {"Galice"}, ["gcf"] = {"Guadeloupean Creole French"}, ["gcl"] = {"Grenadian Creole English"}, ["gcn"] = {"Gaina"}, ["gcr"] = {"Guianese Creole French"}, ["gct"] = {"Colonia Tovar German"}, ["gda"] = {"Gade Lohar"}, ["gdb"] = {"Pottangi Ollar Gadaba"}, ["gdc"] = {"Gugu Badhun"}, ["gdd"] = {"Gedaged"}, ["gde"] = {"Gude"}, ["gdf"] = {"Guduf-Gava"}, ["gdg"] = {"Ga'dang"}, ["gdh"] = {"Gadjerawang", "Gajirrabeng"}, ["gdi"] = {"Gundi"}, ["gdj"] = {"Gurdjar"}, ["gdk"] = {"Gadang"}, ["gdl"] = {"Dirasha"}, ["gdm"] = {"Laal"}, ["gdn"] = {"Umanakaina"}, ["gdo"] = {"Ghodoberi"}, ["gdq"] = {"Mehri"}, ["gdr"] = {"Wipi"}, ["gds"] = {"Ghandruk Sign Language"}, ["gdt"] = {"Kungardutyi"}, ["gdu"] = {"Gudu"}, ["gdx"] = {"Godwari"}, ["gea"] = {"Geruma"}, ["geb"] = {"Kire"}, ["gec"] = {"Gboloo Grebo"}, ["ged"] = {"Gade"}, ["gef"] = {"Gerai"}, ["geg"] = {"Gengle"}, ["geh"] = {"Hutterite German", "Hutterisch"}, ["gei"] = {"Gebe"}, ["gej"] = {"Gen"}, ["gek"] = {"Ywom"}, ["gel"] = {"ut-Ma'in"}, ["gem"] = {"Germanic languages"}, ["geq"] = {"Geme"}, ["ges"] = {"Geser-Gorom"}, ["gev"] = {"Eviya"}, ["gew"] = {"Gera"}, ["gex"] = {"Garre"}, ["gey"] = {"Enya"}, ["gez"] = {"Geez"}, ["gfk"] = {"Patpatar"}, ["gft"] = {"Gafat"}, ["gga"] = {"Gao"}, ["ggb"] = {"Gbii"}, ["ggd"] = {"Gugadj"}, ["gge"] = {"Gurr-goni"}, ["ggg"] = {"Gurgula"}, ["ggk"] = {"Kungarakany"}, ["ggl"] = {"Ganglau"}, ["ggt"] = {"Gitua"}, ["ggu"] = {"Gagu", "Gban"}, ["ggw"] = {"Gogodala"}, ["gha"] = {"Ghadamès"}, ["ghc"] = {"Hiberno-Scottish Gaelic"}, ["ghe"] = {"Southern Ghale"}, ["ghh"] = {"Northern Ghale"}, ["ghk"] = {"Geko Karen"}, ["ghl"] = {"Ghulfan"}, ["ghn"] = {"Ghanongga"}, ["gho"] = {"Ghomara"}, ["ghr"] = {"Ghera"}, ["ghs"] = {"Guhu-Samane"}, ["ght"] = {"Kuke", "Kutang Ghale"}, ["gia"] = {"Kija"}, ["gib"] = {"Gibanawa"}, ["gic"] = {"Gail"}, ["gid"] = {"Gidar"}, ["gie"] = {"Gaɓogbo", "Guébie"}, ["gig"] = {"Goaria"}, ["gih"] = {"Githabul"}, ["gii"] = {"Girirra"}, ["gil"] = {"Gilbertese"}, ["gim"] = {"Gimi (Eastern Highlands)"}, ["gin"] = {"Hinukh"}, ["gip"] = {"Gimi (West New Britain)"}, ["giq"] = {"Green Gelao"}, ["gir"] = {"Red Gelao"}, ["gis"] = {"North Giziga"}, ["git"] = {"Gitxsan"}, ["giu"] = {"Mulao"}, ["giw"] = {"White Gelao"}, ["gix"] = {"Gilima"}, ["giy"] = {"Giyug"}, ["giz"] = {"South Giziga"}, ["gjk"] = {"Kachi Koli"}, ["gjm"] = {"Gunditjmara"}, ["gjn"] = {"Gonja"}, ["gjr"] = {"Gurindji Kriol"}, ["gju"] = {"Gujari"}, ["gka"] = {"Guya"}, ["gkd"] = {"Magɨ (Madang Province)"}, ["gke"] = {"Ndai"}, ["gkn"] = {"Gokana"}, ["gko"] = {"Kok-Nar"}, ["gkp"] = {"Guinea Kpelle"}, ["gku"] = {"ǂUngkue"}, ["glb"] = {"Belning"}, ["glc"] = {"Bon Gula"}, ["gld"] = {"Nanai"}, ["glh"] = {"Northwest Pashai", "Northwest Pashayi"}, ["glj"] = {"Gula Iro"}, ["glk"] = {"Gilaki"}, ["gll"] = {"Garlali"}, ["glo"] = {"Galambu"}, ["glr"] = {"Glaro-Twabo"}, ["glu"] = {"Gula (Chad)"}, ["glw"] = {"Glavda"}, ["gly"] = {"Gule"}, ["gma"] = {"Gambera"}, ["gmb"] = {"Gula'alaa"}, ["gmd"] = {"Mághdì"}, ["gme"] = {"East Germanic languages"}, ["gmg"] = {"Magɨyi"}, ["gmh"] = {"Middle High German (ca. 1050-1500)"}, ["gml"] = {"Middle Low German"}, ["gmm"] = {"Gbaya-Mbodomo"}, ["gmn"] = {"Gimnime"}, ["gmq"] = {"North Germanic languages"}, ["gmr"] = {"Mirning", "Mirniny"}, ["gmu"] = {"Gumalu"}, ["gmv"] = {"Gamo"}, ["gmw"] = {"West Germanic languages"}, ["gmx"] = {"Magoma"}, ["gmy"] = {"Mycenaean Greek"}, ["gmz"] = {"Mgbolizhia"}, ["gna"] = {"Kaansa"}, ["gnb"] = {"Gangte"}, ["gnc"] = {"Guanche"}, ["gnd"] = {"Zulgo-Gemzek"}, ["gne"] = {"Ganang"}, ["gng"] = {"Ngangam"}, ["gnh"] = {"Lere"}, ["gni"] = {"Gooniyandi"}, ["gnj"] = {"Ngen"}, ["gnk"] = {"ǁGana"}, ["gnl"] = {"Gangulu"}, ["gnm"] = {"Ginuman"}, ["gnn"] = {"Gumatj"}, ["gno"] = {"Northern Gondi"}, ["gnq"] = {"Gana"}, ["gnr"] = {"Gureng Gureng"}, ["gnt"] = {"Guntai"}, ["gnu"] = {"Gnau"}, ["gnw"] = {"Western Bolivian Guaraní"}, ["gnz"] = {"Ganzi"}, ["goa"] = {"Guro"}, ["gob"] = {"Playero"}, ["goc"] = {"Gorakor"}, ["god"] = {"Godié"}, ["goe"] = {"Gongduk"}, ["gof"] = {"Gofa"}, ["gog"] = {"Gogo"}, ["goh"] = {"Old High German (ca. 750-1050)"}, ["goi"] = {"Gobasi"}, ["goj"] = {"Gowlan"}, ["gok"] = {"Gowli"}, ["gol"] = {"Gola"}, ["gom"] = {"Goan Konkani"}, ["gon"] = {"Gondi"}, ["goo"] = {"Gone Dau"}, ["gop"] = {"Yeretuar"}, ["goq"] = {"Gorap"}, ["gor"] = {"Gorontalo"}, ["gos"] = {"Gronings"}, ["got"] = {"Gothic"}, ["gou"] = {"Gavar"}, ["gov"] = {"Goo"}, ["gow"] = {"Gorowa"}, ["gox"] = {"Gobu"}, ["goy"] = {"Goundo"}, ["goz"] = {"Gozarkhani"}, ["gpa"] = {"Gupa-Abawa"}, ["gpe"] = {"Ghanaian Pidgin English"}, ["gpn"] = {"Taiap"}, ["gqa"] = {"Ga'anda"}, ["gqi"] = {"Guiqiong"}, ["gqn"] = {"Guana (Brazil)"}, ["gqr"] = {"Gor"}, ["gqu"] = {"Qau"}, ["gra"] = {"Rajput Garasia"}, ["grb"] = {"Grebo"}, ["grc"] = {"Ancient Greek (to 1453)"}, ["grd"] = {"Guruntum-Mbaaru"}, ["grg"] = {"Madi"}, ["grh"] = {"Gbiri-Niragu"}, ["gri"] = {"Ghari"}, ["grj"] = {"Southern Grebo"}, ["grk"] = {"Greek languages"}, ["grm"] = {"Kota Marudu Talantang"}, ["gro"] = {"Groma"}, ["grq"] = {"Gorovu"}, ["grr"] = {"Taznatit"}, ["grs"] = {"Gresi"}, ["grt"] = {"Garo"}, ["gru"] = {"Kistane"}, ["grv"] = {"Central Grebo"}, ["grw"] = {"Gweda"}, ["grx"] = {"Guriaso"}, ["gry"] = {"Barclayville Grebo"}, ["grz"] = {"Guramalum"}, ["gse"] = {"Ghanaian Sign Language"}, ["gsg"] = {"German Sign Language"}, ["gsl"] = {"Gusilay"}, ["gsm"] = {"Guatemalan Sign Language"}, ["gsn"] = {"Nema", "Gusan"}, ["gso"] = {"Southwest Gbaya"}, ["gsp"] = {"Wasembo"}, ["gss"] = {"Greek Sign Language"}, ["gsw"] = {"Swiss German", "Alemannic", "Alsatian"}, ["gta"] = {"Guató"}, ["gtu"] = {"Aghu-Tharnggala"}, ["gua"] = {"Shiki"}, ["gub"] = {"Guajajára"}, ["guc"] = {"Wayuu"}, ["gud"] = {"Yocoboué Dida"}, ["gue"] = {"Gurindji"}, ["guf"] = {"Gupapuyngu"}, ["gug"] = {"Paraguayan Guaraní"}, ["guh"] = {"Guahibo"}, ["gui"] = {"Eastern Bolivian Guaraní"}, ["guk"] = {"Gumuz"}, ["gul"] = {"Sea Island Creole English"}, ["gum"] = {"Guambiano"}, ["gun"] = {"Mbyá Guaraní"}, ["guo"] = {"Guayabero"}, ["gup"] = {"Gunwinggu"}, ["guq"] = {"Aché"}, ["gur"] = {"Farefare"}, ["gus"] = {"Guinean Sign Language"}, ["gut"] = {"Maléku Jaíka"}, ["guu"] = {"Yanomamö"}, ["guw"] = {"Gun"}, ["gux"] = {"Gourmanchéma"}, ["guz"] = {"Gusii", "Ekegusii"}, ["gva"] = {"Guana (Paraguay)"}, ["gvc"] = {"Guanano"}, ["gve"] = {"Duwet"}, ["gvf"] = {"Golin"}, ["gvj"] = {"Guajá"}, ["gvl"] = {"Gulay"}, ["gvm"] = {"Gurmana"}, ["gvn"] = {"Kuku-Yalanji"}, ["gvo"] = {"Gavião Do Jiparaná"}, ["gvp"] = {"Pará Gavião"}, ["gvr"] = {"Gurung"}, ["gvs"] = {"Gumawana"}, ["gvy"] = {"Guyani"}, ["gwa"] = {"Mbato"}, ["gwb"] = {"Gwa"}, ["gwc"] = {"Gawri", "Kalami"}, ["gwd"] = {"Gawwada"}, ["gwe"] = {"Gweno"}, ["gwf"] = {"Gowro"}, ["gwg"] = {"Moo"}, ["gwi"] = {"Gwichʼin"}, ["gwj"] = {"ǀGwi"}, ["gwm"] = {"Awngthim"}, ["gwn"] = {"Gwandara"}, ["gwr"] = {"Gwere"}, ["gwt"] = {"Gawar-Bati"}, ["gwu"] = {"Guwamu"}, ["gww"] = {"Kwini"}, ["gwx"] = {"Gua"}, ["gxx"] = {"Wè Southern"}, ["gya"] = {"Northwest Gbaya"}, ["gyb"] = {"Garus"}, ["gyd"] = {"Kayardild"}, ["gye"] = {"Gyem"}, ["gyf"] = {"Gungabula"}, ["gyg"] = {"Gbayi"}, ["gyi"] = {"Gyele"}, ["gyl"] = {"Gayil"}, ["gym"] = {"Ngäbere"}, ["gyn"] = {"Guyanese Creole English"}, ["gyo"] = {"Gyalsumdo"}, ["gyr"] = {"Guarayu"}, ["gyy"] = {"Gunya"}, ["gyz"] = {"Geji", "Gyaazi"}, ["gza"] = {"Ganza"}, ["gzi"] = {"Gazi"}, ["gzn"] = {"Gane"}, ["haa"] = {"Han"}, ["hab"] = {"Hanoi Sign Language"}, ["hac"] = {"Gurani"}, ["had"] = {"Hatam"}, ["hae"] = {"Eastern Oromo"}, ["haf"] = {"Haiphong Sign Language"}, ["hag"] = {"Hanga"}, ["hah"] = {"Hahon"}, ["hai"] = {"Haida"}, ["haj"] = {"Hajong"}, ["hak"] = {"Hakka Chinese"}, ["hal"] = {"Halang"}, ["ham"] = {"Hewa"}, ["han"] = {"Hangaza"}, ["hao"] = {"Hakö"}, ["hap"] = {"Hupla"}, ["haq"] = {"Ha"}, ["har"] = {"Harari"}, ["has"] = {"Haisla"}, ["hav"] = {"Havu"}, ["haw"] = {"Hawaiian"}, ["hax"] = {"Southern Haida"}, ["hay"] = {"Haya"}, ["haz"] = {"Hazaragi"}, ["hba"] = {"Hamba"}, ["hbb"] = {"Huba"}, ["hbn"] = {"Heiban"}, ["hbo"] = {"Ancient Hebrew"}, ["hbu"] = {"Habu"}, ["hca"] = {"Andaman Creole Hindi"}, ["hch"] = {"Huichol"}, ["hdn"] = {"Northern Haida"}, ["hds"] = {"Honduras Sign Language"}, ["hdy"] = {"Hadiyya"}, ["hea"] = {"Northern Qiandong Miao"}, ["hed"] = {"Herdé"}, ["heg"] = {"Helong"}, ["heh"] = {"Hehe"}, ["hei"] = {"Heiltsuk"}, ["hem"] = {"Hemba"}, ["hgm"] = {"Haiǁom"}, ["hgw"] = {"Haigwai"}, ["hhi"] = {"Hoia Hoia"}, ["hhr"] = {"Kerak"}, ["hhy"] = {"Hoyahoya"}, ["hia"] = {"Lamang"}, ["hib"] = {"Hibito"}, ["hid"] = {"Hidatsa"}, ["hif"] = {"Fiji Hindi"}, ["hig"] = {"Kamwe"}, ["hih"] = {"Pamosu"}, ["hii"] = {"Hinduri"}, ["hij"] = {"Hijuk"}, ["hik"] = {"Seit-Kaitetu"}, ["hil"] = {"Hiligaynon"}, ["him"] = {"Himachali languages", "Western Pahari languages"}, ["hio"] = {"Tsoa"}, ["hir"] = {"Himarimã"}, ["hit"] = {"Hittite"}, ["hiw"] = {"Hiw"}, ["hix"] = {"Hixkaryána"}, ["hji"] = {"Haji"}, ["hka"] = {"Kahe"}, ["hke"] = {"Hunde"}, ["hkh"] = {"Khah", "Poguli"}, ["hkk"] = {"Hunjara-Kaina Ke"}, ["hkn"] = {"Mel-Khaonh"}, ["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"}, ["hla"] = {"Halia"}, ["hlb"] = {"Halbi"}, ["hld"] = {"Halang Doan"}, ["hle"] = {"Hlersu"}, ["hlt"] = {"Matu Chin"}, ["hlu"] = {"Hieroglyphic Luwian"}, ["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"}, ["hmb"] = {"Humburi Senni Songhay"}, ["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"}, ["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"}, ["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"}, ["hmf"] = {"Hmong Don"}, ["hmg"] = {"Southwestern Guiyang Hmong"}, ["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"}, ["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"}, ["hmj"] = {"Ge", "Gejia"}, ["hmk"] = {"Maek"}, ["hml"] = {"Luopohe Hmong", "Luopohe Miao"}, ["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"}, ["hmn"] = {"Hmong", "Mong"}, ["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"}, ["hmq"] = {"Eastern Qiandong Miao"}, ["hmr"] = {"Hmar"}, ["hms"] = {"Southern Qiandong Miao"}, ["hmt"] = {"Hamtai"}, ["hmu"] = {"Hamap"}, ["hmv"] = {"Hmong Dô"}, ["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"}, ["hmx"] = {"Hmong-Mien languages"}, ["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"}, ["hmz"] = {"Hmong Shua", "Sinicized Miao"}, ["hna"] = {"Mina (Cameroon)"}, ["hnd"] = {"Southern Hindko"}, ["hne"] = {"Chhattisgarhi"}, ["hng"] = {"Hungu"}, ["hnh"] = {"ǁAni"}, ["hni"] = {"Hani"}, ["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"}, ["hnn"] = {"Hanunoo"}, ["hno"] = {"Northern Hindko"}, ["hns"] = {"Caribbean Hindustani"}, ["hnu"] = {"Hung"}, ["hoa"] = {"Hoava"}, ["hob"] = {"Mari (Madang Province)"}, ["hoc"] = {"Ho"}, ["hod"] = {"Holma"}, ["hoe"] = {"Horom"}, ["hoh"] = {"Hobyót"}, ["hoi"] = {"Holikachuk"}, ["hoj"] = {"Hadothi", "Haroti"}, ["hok"] = {"Hokan languages"}, ["hol"] = {"Holu"}, ["hom"] = {"Homa"}, ["hoo"] = {"Holoholo"}, ["hop"] = {"Hopi"}, ["hor"] = {"Horo"}, ["hos"] = {"Ho Chi Minh City Sign Language"}, ["hot"] = {"Hote", "Malê"}, ["hov"] = {"Hovongan"}, ["how"] = {"Honi"}, ["hoy"] = {"Holiya"}, ["hoz"] = {"Hozo"}, ["hpo"] = {"Hpon"}, ["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"}, ["hra"] = {"Hrangkhol"}, ["hrc"] = {"Niwer Mil"}, ["hre"] = {"Hre"}, ["hrk"] = {"Haruku"}, ["hrm"] = {"Horned Miao"}, ["hro"] = {"Haroi"}, ["hrp"] = {"Nhirrpi"}, ["hrt"] = {"Hértevin"}, ["hru"] = {"Hruso"}, ["hrw"] = {"Warwar Feni"}, ["hrx"] = {"Hunsrik"}, ["hrz"] = {"Harzani"}, ["hsb"] = {"Upper Sorbian"}, ["hsh"] = {"Hungarian Sign Language"}, ["hsl"] = {"Hausa Sign Language"}, ["hsn"] = {"Xiang Chinese"}, ["hss"] = {"Harsusi"}, ["hti"] = {"Hoti"}, ["hto"] = {"Minica Huitoto"}, ["hts"] = {"Hadza"}, ["htu"] = {"Hitu"}, ["htx"] = {"Middle Hittite"}, ["hub"] = {"Huambisa"}, ["huc"] = {"ǂHua", "ǂʼAmkhoe"}, ["hud"] = {"Huaulu"}, ["hue"] = {"San Francisco Del Mar Huave"}, ["huf"] = {"Humene"}, ["hug"] = {"Huachipaeri"}, ["huh"] = {"Huilliche"}, ["hui"] = {"Huli"}, ["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"}, ["huk"] = {"Hulung"}, ["hul"] = {"Hula"}, ["hum"] = {"Hungana"}, ["huo"] = {"Hu"}, ["hup"] = {"Hupa"}, ["huq"] = {"Tsat"}, ["hur"] = {"Halkomelem"}, ["hus"] = {"Huastec"}, ["hut"] = {"Humla"}, ["huu"] = {"Murui Huitoto"}, ["huv"] = {"San Mateo Del Mar Huave"}, ["huw"] = {"Hukumina"}, ["hux"] = {"Nüpode Huitoto"}, ["huy"] = {"Hulaulá"}, ["huz"] = {"Hunzib"}, ["hvc"] = {"Haitian Vodoun Culture Language"}, ["hve"] = {"San Dionisio Del Mar Huave"}, ["hvk"] = {"Haveke"}, ["hvn"] = {"Sabu"}, ["hvv"] = {"Santa María Del Mar Huave"}, ["hwa"] = {"Wané"}, ["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"}, ["hwo"] = {"Hwana"}, ["hya"] = {"Hya"}, ["hyw"] = {"Western Armenian"}, ["hyx"] = {"Armenian (family)"}, ["iai"] = {"Iaai"}, ["ian"] = {"Iatmul"}, ["iar"] = {"Purari"}, ["iba"] = {"Iban"}, ["ibb"] = {"Ibibio"}, ["ibd"] = {"Iwaidja"}, ["ibe"] = {"Akpes"}, ["ibg"] = {"Ibanag"}, ["ibh"] = {"Bih"}, ["ibl"] = {"Ibaloi"}, ["ibm"] = {"Agoi"}, ["ibn"] = {"Ibino"}, ["ibr"] = {"Ibuoro"}, ["ibu"] = {"Ibu"}, ["iby"] = {"Ibani"}, ["ica"] = {"Ede Ica"}, ["ich"] = {"Etkywan"}, ["icl"] = {"Icelandic Sign Language"}, ["icr"] = {"Islander Creole English"}, ["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"}, ["idb"] = {"Indo-Portuguese"}, ["idc"] = {"Idon", "Ajiya"}, ["idd"] = {"Ede Idaca"}, ["ide"] = {"Idere"}, ["idi"] = {"Idi"}, ["idr"] = {"Indri"}, ["ids"] = {"Idesa"}, ["idt"] = {"Idaté"}, ["idu"] = {"Idoma"}, ["ifa"] = {"Amganad Ifugao"}, ["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"}, ["ife"] = {"Ifè"}, ["iff"] = {"Ifo"}, ["ifk"] = {"Tuwali Ifugao"}, ["ifm"] = {"Teke-Fuumu"}, ["ifu"] = {"Mayoyao Ifugao"}, ["ify"] = {"Keley-I Kallahan"}, ["igb"] = {"Ebira"}, ["ige"] = {"Igede"}, ["igg"] = {"Igana"}, ["igl"] = {"Igala"}, ["igm"] = {"Kanggape"}, ["ign"] = {"Ignaciano"}, ["igo"] = {"Isebe"}, ["igs"] = {"Interglossa"}, ["igw"] = {"Igwe"}, ["ihb"] = {"Iha Based Pidgin"}, ["ihi"] = {"Ihievbe"}, ["ihp"] = {"Iha"}, ["ihw"] = {"Bidhawal"}, ["iin"] = {"Thiin"}, ["iir"] = {"Indo-Iranian languages"}, ["ijc"] = {"Izon"}, ["ije"] = {"Biseni"}, ["ijj"] = {"Ede Ije"}, ["ijn"] = {"Kalabari"}, ["ijo"] = {"Ijo languages"}, ["ijs"] = {"Southeast Ijo"}, ["ike"] = {"Eastern Canadian Inuktitut"}, ["ikh"] = {"Ikhin-Arokho"}, ["iki"] = {"Iko"}, ["ikk"] = {"Ika"}, ["ikl"] = {"Ikulu"}, ["iko"] = {"Olulumo-Ikom"}, ["ikp"] = {"Ikpeshi"}, ["ikr"] = {"Ikaranggal"}, ["iks"] = {"Inuit Sign Language"}, ["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"}, ["ikv"] = {"Iku-Gora-Ankwa"}, ["ikw"] = {"Ikwere"}, ["ikx"] = {"Ik"}, ["ikz"] = {"Ikizu"}, ["ila"] = {"Ile Ape"}, ["ilb"] = {"Ila"}, ["ilg"] = {"Garig-Ilgar"}, ["ili"] = {"Ili Turki"}, ["ilk"] = {"Ilongot"}, ["ilm"] = {"Iranun (Malaysia)"}, ["ilo"] = {"Iloko"}, ["ilp"] = {"Iranun (Philippines)"}, ["ils"] = {"International Sign"}, ["ilu"] = {"Ili'uun"}, ["ilv"] = {"Ilue"}, ["ima"] = {"Mala Malasar"}, ["imi"] = {"Anamgura"}, ["iml"] = {"Miluk"}, ["imn"] = {"Imonda"}, ["imo"] = {"Imbongu"}, ["imr"] = {"Imroing"}, ["ims"] = {"Marsian"}, ["imt"] = {"Imotong"}, ["imy"] = {"Milyan"}, ["inb"] = {"Inga"}, ["inc"] = {"Indic languages"}, ["ine"] = {"Indo-European languages"}, ["ing"] = {"Degexit'an"}, ["inh"] = {"Ingush"}, ["inj"] = {"Jungle Inga"}, ["inl"] = {"Indonesian Sign Language"}, ["inm"] = {"Minaean"}, ["inn"] = {"Isinai"}, ["ino"] = {"Inoke-Yate"}, ["inp"] = {"Iñapari"}, ["ins"] = {"Indian Sign Language"}, ["int"] = {"Intha"}, ["inz"] = {"Ineseño"}, ["ior"] = {"Inor"}, ["iou"] = {"Tuma-Irumu"}, ["iow"] = {"Iowa-Oto"}, ["ipi"] = {"Ipili"}, ["ipo"] = {"Ipiko"}, ["iqu"] = {"Iquito"}, ["iqw"] = {"Ikwo"}, ["ira"] = {"Iranian languages"}, ["ire"] = {"Iresim"}, ["irh"] = {"Irarutu"}, ["iri"] = {"Rigwe", "Irigwe"}, ["irk"] = {"Iraqw"}, ["irn"] = {"Irántxe"}, ["iro"] = {"Iroquoian languages"}, ["irr"] = {"Ir"}, ["iru"] = {"Irula"}, ["irx"] = {"Kamberau"}, ["iry"] = {"Iraya"}, ["isa"] = {"Isabi"}, ["isc"] = {"Isconahua"}, ["isd"] = {"Isnag"}, ["ise"] = {"Italian Sign Language"}, ["isg"] = {"Irish Sign Language"}, ["ish"] = {"Esan"}, ["isi"] = {"Nkem-Nkum"}, ["isk"] = {"Ishkashimi"}, ["ism"] = {"Masimasi"}, ["isn"] = {"Isanzu"}, ["iso"] = {"Isoko"}, ["isr"] = {"Israeli Sign Language"}, ["ist"] = {"Istriot"}, ["isu"] = {"Isu (Menchum Division)"}, ["itb"] = {"Binongan Itneg"}, ["itc"] = {"Italic languages"}, ["itd"] = {"Southern Tidung"}, ["ite"] = {"Itene"}, ["iti"] = {"Inlaod Itneg"}, ["itk"] = {"Judeo-Italian"}, ["itl"] = {"Itelmen"}, ["itm"] = {"Itu Mbon Uzo"}, ["ito"] = {"Itonama"}, ["itr"] = {"Iteri"}, ["its"] = {"Isekiri"}, ["itt"] = {"Maeng Itneg"}, ["itv"] = {"Itawit"}, ["itw"] = {"Ito"}, ["itx"] = {"Itik"}, ["ity"] = {"Moyadan Itneg"}, ["itz"] = {"Itzá"}, ["ium"] = {"Iu Mien"}, ["ivb"] = {"Ibatan"}, ["ivv"] = {"Ivatan"}, ["iwk"] = {"I-Wak"}, ["iwm"] = {"Iwam"}, ["iwo"] = {"Iwur"}, ["iws"] = {"Sepik Iwam"}, ["ixc"] = {"Ixcatec"}, ["ixl"] = {"Ixil"}, ["iya"] = {"Iyayu"}, ["iyo"] = {"Mesaka"}, ["iyx"] = {"Yaka (Congo)"}, ["izh"] = {"Ingrian"}, ["izm"] = {"Kizamani"}, ["izr"] = {"Izere"}, ["izz"] = {"Izii"}, ["jaa"] = {"Jamamadí"}, ["jab"] = {"Hyam"}, ["jac"] = {"Popti'", "Jakalteko"}, ["jad"] = {"Jahanka"}, ["jae"] = {"Yabem"}, ["jaf"] = {"Jara"}, ["jah"] = {"Jah Hut"}, ["jaj"] = {"Zazao"}, ["jak"] = {"Jakun"}, ["jal"] = {"Yalahatan"}, ["jam"] = {"Jamaican Creole English"}, ["jan"] = {"Jandai"}, ["jao"] = {"Yanyuwa"}, ["jaq"] = {"Yaqay"}, ["jas"] = {"New Caledonian Javanese"}, ["jat"] = {"Jakati"}, ["jau"] = {"Yaur"}, ["jax"] = {"Jambi Malay"}, ["jay"] = {"Yan-nhangu", "Nhangu"}, ["jaz"] = {"Jawe"}, ["jbe"] = {"Judeo-Berber"}, ["jbi"] = {"Badjiri"}, ["jbj"] = {"Arandai"}, ["jbk"] = {"Barikewa"}, ["jbm"] = {"Bijim"}, ["jbn"] = {"Nafusi"}, ["jbo"] = {"Lojban"}, ["jbr"] = {"Jofotek-Bromnya"}, ["jbt"] = {"Jabutí"}, ["jbu"] = {"Jukun Takum"}, ["jbw"] = {"Yawijibaya"}, ["jcs"] = {"Jamaican Country Sign Language"}, ["jct"] = {"Krymchak"}, ["jda"] = {"Jad"}, ["jdg"] = {"Jadgali"}, ["jdt"] = {"Judeo-Tat"}, ["jeb"] = {"Jebero"}, ["jee"] = {"Jerung"}, ["jeh"] = {"Jeh"}, ["jei"] = {"Yei"}, ["jek"] = {"Jeri Kuo"}, ["jel"] = {"Yelmek"}, ["jen"] = {"Dza"}, ["jer"] = {"Jere"}, ["jet"] = {"Manem"}, ["jeu"] = {"Jonkor Bourmataguil"}, ["jgb"] = {"Ngbee"}, ["jge"] = {"Judeo-Georgian"}, ["jgk"] = {"Gwak"}, ["jgo"] = {"Ngomba"}, ["jhi"] = {"Jehai"}, ["jhs"] = {"Jhankot Sign Language"}, ["jia"] = {"Jina"}, ["jib"] = {"Jibu"}, ["jic"] = {"Tol"}, ["jid"] = {"Bu (Kaduna State)"}, ["jie"] = {"Jilbe"}, ["jig"] = {"Jingulu", "Djingili"}, ["jih"] = {"sTodsde", "Shangzhai"}, ["jii"] = {"Jiiddu"}, ["jil"] = {"Jilim"}, ["jim"] = {"Jimi (Cameroon)"}, ["jio"] = {"Jiamao"}, ["jiq"] = {"Guanyinqiao", "Lavrung"}, ["jit"] = {"Jita"}, ["jiu"] = {"Youle Jinuo"}, ["jiv"] = {"Shuar"}, ["jiy"] = {"Buyuan Jinuo"}, ["jje"] = {"Jejueo"}, ["jjr"] = {"Bankal"}, ["jka"] = {"Kaera"}, ["jkm"] = {"Mobwa Karen"}, ["jko"] = {"Kubo"}, ["jkp"] = {"Paku Karen"}, ["jkr"] = {"Koro (India)"}, ["jks"] = {"Amami Koniya Sign Language"}, ["jku"] = {"Labir"}, ["jle"] = {"Ngile"}, ["jls"] = {"Jamaican Sign Language"}, ["jma"] = {"Dima"}, ["jmb"] = {"Zumbun"}, ["jmc"] = {"Machame"}, ["jmd"] = {"Yamdena"}, ["jmi"] = {"Jimi (Nigeria)"}, ["jml"] = {"Jumli"}, ["jmn"] = {"Makuri Naga"}, ["jmr"] = {"Kamara"}, ["jms"] = {"Mashi (Nigeria)"}, ["jmw"] = {"Mouwase"}, ["jmx"] = {"Western Juxtlahuaca Mixtec"}, ["jna"] = {"Jangshung"}, ["jnd"] = {"Jandavra"}, ["jng"] = {"Yangman"}, ["jni"] = {"Janji"}, ["jnj"] = {"Yemsa"}, ["jnl"] = {"Rawat"}, ["jns"] = {"Jaunsari"}, ["job"] = {"Joba"}, ["jod"] = {"Wojenaka"}, ["jog"] = {"Jogi"}, ["jor"] = {"Jorá"}, ["jos"] = {"Jordanian Sign Language"}, ["jow"] = {"Jowulu"}, ["jpa"] = {"Jewish Palestinian Aramaic"}, ["jpr"] = {"Judeo-Persian"}, ["jpx"] = {"Japanese (family)"}, ["jqr"] = {"Jaqaru"}, ["jra"] = {"Jarai"}, ["jrb"] = {"Judeo-Arabic"}, ["jrr"] = {"Jiru"}, ["jrt"] = {"Jakattoe"}, ["jru"] = {"Japrería"}, ["jsl"] = {"Japanese Sign Language"}, ["jua"] = {"Júma"}, ["jub"] = {"Wannu"}, ["juc"] = {"Jurchen"}, ["jud"] = {"Worodougou"}, ["juh"] = {"Hõne"}, ["jui"] = {"Ngadjuri"}, ["juk"] = {"Wapan"}, ["jul"] = {"Jirel"}, ["jum"] = {"Jumjum"}, ["jun"] = {"Juang"}, ["juo"] = {"Jiba"}, ["jup"] = {"Hupdë"}, ["jur"] = {"Jurúna"}, ["jus"] = {"Jumla Sign Language"}, ["jut"] = {"Jutish"}, ["juu"] = {"Ju"}, ["juw"] = {"Wãpha"}, ["juy"] = {"Juray"}, ["jvd"] = {"Javindo"}, ["jvn"] = {"Caribbean Javanese"}, ["jwi"] = {"Jwira-Pepesa"}, ["jya"] = {"Jiarong"}, ["jye"] = {"Judeo-Yemeni Arabic"}, ["jyy"] = {"Jaya"}, ["kaa"] = {"Kara-Kalpak", "Karakalpak"}, ["kab"] = {"Kabyle"}, ["kac"] = {"Kachin", "Jingpho"}, ["kad"] = {"Adara"}, ["kae"] = {"Ketangalan"}, ["kaf"] = {"Katso"}, ["kag"] = {"Kajaman"}, ["kah"] = {"Kara (Central African Republic)"}, ["kai"] = {"Karekare"}, ["kaj"] = {"Jju"}, ["kak"] = {"Kalanguya", "Kayapa Kallahan"}, ["kam"] = {"Kamba (Kenya)"}, ["kao"] = {"Xaasongaxango"}, ["kap"] = {"Bezhta"}, ["kaq"] = {"Capanahua"}, ["kar"] = {"Karen languages"}, ["kav"] = {"Katukína"}, ["kaw"] = {"Kawi"}, ["kax"] = {"Kao"}, ["kay"] = {"Kamayurá"}, ["kba"] = {"Kalarko"}, ["kbb"] = {"Kaxuiâna"}, ["kbc"] = {"Kadiwéu"}, ["kbd"] = {"Kabardian"}, ["kbe"] = {"Kanju"}, ["kbg"] = {"Khamba"}, ["kbh"] = {"Camsá"}, ["kbi"] = {"Kaptiau"}, ["kbj"] = {"Kari"}, ["kbk"] = {"Grass Koiari"}, ["kbl"] = {"Kanembu"}, ["kbm"] = {"Iwal"}, ["kbn"] = {"Kare (Central African Republic)"}, ["kbo"] = {"Keliko"}, ["kbp"] = {"Kabiyè"}, ["kbq"] = {"Kamano"}, ["kbr"] = {"Kafa"}, ["kbs"] = {"Kande"}, ["kbt"] = {"Abadi"}, ["kbu"] = {"Kabutra"}, ["kbv"] = {"Dera (Indonesia)"}, ["kbw"] = {"Kaiep"}, ["kbx"] = {"Ap Ma"}, ["kby"] = {"Manga Kanuri"}, ["kbz"] = {"Duhwa"}, ["kca"] = {"Khanty"}, ["kcb"] = {"Kawacha"}, ["kcc"] = {"Lubila"}, ["kcd"] = {"Ngkâlmpw Kanum"}, ["kce"] = {"Kaivi"}, ["kcf"] = {"Ukaan"}, ["kcg"] = {"Tyap"}, ["kch"] = {"Vono"}, ["kci"] = {"Kamantan"}, ["kcj"] = {"Kobiana"}, ["kck"] = {"Kalanga"}, ["kcl"] = {"Kela (Papua New Guinea)", "Kala"}, ["kcm"] = {"Gula (Central African Republic)"}, ["kcn"] = {"Nubi"}, ["kco"] = {"Kinalakna"}, ["kcp"] = {"Kanga"}, ["kcq"] = {"Kamo"}, ["kcr"] = {"Katla"}, ["kcs"] = {"Koenoem"}, ["kct"] = {"Kaian"}, ["kcu"] = {"Kami (Tanzania)"}, ["kcv"] = {"Kete"}, ["kcw"] = {"Kabwari"}, ["kcx"] = {"Kachama-Ganjule"}, ["kcy"] = {"Korandje"}, ["kcz"] = {"Konongo"}, ["kda"] = {"Worimi"}, ["kdc"] = {"Kutu"}, ["kdd"] = {"Yankunytjatjara"}, ["kde"] = {"Makonde"}, ["kdf"] = {"Mamusi"}, ["kdg"] = {"Seba"}, ["kdh"] = {"Tem"}, ["kdi"] = {"Kumam"}, ["kdj"] = {"Karamojong"}, ["kdk"] = {"Numèè", "Kwényi"}, ["kdl"] = {"Tsikimba"}, ["kdm"] = {"Kagoma"}, ["kdn"] = {"Kunda"}, ["kdo"] = {"Kordofanian languages"}, ["kdp"] = {"Kaningdon-Nindem"}, ["kdq"] = {"Koch"}, ["kdr"] = {"Karaim"}, ["kdt"] = {"Kuy"}, ["kdu"] = {"Kadaru"}, ["kdw"] = {"Koneraw"}, ["kdx"] = {"Kam"}, ["kdy"] = {"Keder", "Keijar"}, ["kdz"] = {"Kwaja"}, ["kea"] = {"Kabuverdianu"}, ["keb"] = {"Kélé"}, ["kec"] = {"Keiga"}, ["ked"] = {"Kerewe"}, ["kee"] = {"Eastern Keres"}, ["kef"] = {"Kpessi"}, ["keg"] = {"Tese"}, ["keh"] = {"Keak"}, ["kei"] = {"Kei"}, ["kej"] = {"Kadar"}, ["kek"] = {"Kekchí"}, ["kel"] = {"Kela (Democratic Republic of Congo)"}, ["kem"] = {"Kemak"}, ["ken"] = {"Kenyang"}, ["keo"] = {"Kakwa"}, ["kep"] = {"Kaikadi"}, ["keq"] = {"Kamar"}, ["ker"] = {"Kera"}, ["kes"] = {"Kugbo"}, ["ket"] = {"Ket"}, ["keu"] = {"Akebu"}, ["kev"] = {"Kanikkaran"}, ["kew"] = {"West Kewa"}, ["kex"] = {"Kukna"}, ["key"] = {"Kupia"}, ["kez"] = {"Kukele"}, ["kfa"] = {"Kodava"}, ["kfb"] = {"Northwestern Kolami"}, ["kfc"] = {"Konda-Dora"}, ["kfd"] = {"Korra Koraga"}, ["kfe"] = {"Kota (India)"}, ["kff"] = {"Koya"}, ["kfg"] = {"Kudiya"}, ["kfh"] = {"Kurichiya"}, ["kfi"] = {"Kannada Kurumba"}, ["kfj"] = {"Kemiehua"}, ["kfk"] = {"Kinnauri"}, ["kfl"] = {"Kung"}, ["kfm"] = {"Khunsari"}, ["kfn"] = {"Kuk"}, ["kfo"] = {"Koro (Côte d'Ivoire)"}, ["kfp"] = {"Korwa"}, ["kfq"] = {"Korku"}, ["kfr"] = {"Kachhi", "Kutchi"}, ["kfs"] = {"Bilaspuri"}, ["kft"] = {"Kanjari"}, ["kfu"] = {"Katkari"}, ["kfv"] = {"Kurmukar"}, ["kfw"] = {"Kharam Naga"}, ["kfx"] = {"Kullu Pahari"}, ["kfy"] = {"Kumaoni"}, ["kfz"] = {"Koromfé"}, ["kga"] = {"Koyaga"}, ["kgb"] = {"Kawe"}, ["kge"] = {"Komering"}, ["kgf"] = {"Kube"}, ["kgg"] = {"Kusunda"}, ["kgi"] = {"Selangor Sign Language"}, ["kgj"] = {"Gamale Kham"}, ["kgk"] = {"Kaiwá"}, ["kgl"] = {"Kunggari"}, ["kgn"] = {"Karingani"}, ["kgo"] = {"Krongo"}, ["kgp"] = {"Kaingang"}, ["kgq"] = {"Kamoro"}, ["kgr"] = {"Abun"}, ["kgs"] = {"Kumbainggar"}, ["kgt"] = {"Somyev"}, ["kgu"] = {"Kobol"}, ["kgv"] = {"Karas"}, ["kgw"] = {"Karon Dori"}, ["kgx"] = {"Kamaru"}, ["kgy"] = {"Kyerung"}, ["kha"] = {"Khasi"}, ["khb"] = {"Lü"}, ["khc"] = {"Tukang Besi North"}, ["khd"] = {"Bädi Kanum"}, ["khe"] = {"Korowai"}, ["khf"] = {"Khuen"}, ["khg"] = {"Khams Tibetan"}, ["khh"] = {"Kehu"}, ["khi"] = {"Khoisan languages"}, ["khj"] = {"Kuturmi"}, ["khk"] = {"Halh Mongolian"}, ["khl"] = {"Lusi"}, ["khn"] = {"Khandesi"}, ["kho"] = {"Khotanese", "Sakan"}, ["khp"] = {"Kapori", "Kapauri"}, ["khq"] = {"Koyra Chiini Songhay"}, ["khr"] = {"Kharia"}, ["khs"] = {"Kasua"}, ["kht"] = {"Khamti"}, ["khu"] = {"Nkhumbi"}, ["khv"] = {"Khvarshi"}, ["khw"] = {"Khowar"}, ["khx"] = {"Kanu"}, ["khy"] = {"Kele (Democratic Republic of Congo)"}, ["khz"] = {"Keapara"}, ["kia"] = {"Kim"}, ["kib"] = {"Koalib"}, ["kic"] = {"Kickapoo"}, ["kid"] = {"Koshin"}, ["kie"] = {"Kibet"}, ["kif"] = {"Eastern Parbate Kham"}, ["kig"] = {"Kimaama", "Kimaghima"}, ["kih"] = {"Kilmeri"}, ["kii"] = {"Kitsai"}, ["kij"] = {"Kilivila"}, ["kil"] = {"Kariya"}, ["kim"] = {"Karagas"}, ["kio"] = {"Kiowa"}, ["kip"] = {"Sheshi Kham"}, ["kiq"] = {"Kosadle", "Kosare"}, ["kis"] = {"Kis"}, ["kit"] = {"Agob"}, ["kiu"] = {"Kirmanjki (individual language)"}, ["kiv"] = {"Kimbu"}, ["kiw"] = {"Northeast Kiwai"}, ["kix"] = {"Khiamniungan Naga"}, ["kiy"] = {"Kirikiri"}, ["kiz"] = {"Kisi"}, ["kja"] = {"Mlap"}, ["kjb"] = {"Q'anjob'al", "Kanjobal"}, ["kjc"] = {"Coastal Konjo"}, ["kjd"] = {"Southern Kiwai"}, ["kje"] = {"Kisar"}, ["kjg"] = {"Khmu"}, ["kjh"] = {"Khakas"}, ["kji"] = {"Zabana"}, ["kjj"] = {"Khinalugh"}, ["kjk"] = {"Highland Konjo"}, ["kjl"] = {"Western Parbate Kham"}, ["kjm"] = {"Kháng"}, ["kjn"] = {"Kunjen"}, ["kjo"] = {"Harijan Kinnauri"}, ["kjp"] = {"Pwo Eastern Karen"}, ["kjq"] = {"Western Keres"}, ["kjr"] = {"Kurudu"}, ["kjs"] = {"East Kewa"}, ["kjt"] = {"Phrae Pwo Karen"}, ["kju"] = {"Kashaya"}, ["kjv"] = {"Kaikavian Literary Language"}, ["kjx"] = {"Ramopa"}, ["kjy"] = {"Erave"}, ["kjz"] = {"Bumthangkha"}, ["kka"] = {"Kakanda"}, ["kkb"] = {"Kwerisa"}, ["kkc"] = {"Odoodee"}, ["kkd"] = {"Kinuku"}, ["kke"] = {"Kakabe"}, ["kkf"] = {"Kalaktang Monpa"}, ["kkg"] = {"Mabaka Valley Kalinga"}, ["kkh"] = {"Khün"}, ["kki"] = {"Kagulu"}, ["kkj"] = {"Kako"}, ["kkk"] = {"Kokota"}, ["kkl"] = {"Kosarek Yale"}, ["kkm"] = {"Kiong"}, ["kkn"] = {"Kon Keu"}, ["kko"] = {"Karko"}, ["kkp"] = {"Gugubera", "Koko-Bera"}, ["kkq"] = {"Kaeku"}, ["kkr"] = {"Kir-Balar"}, ["kks"] = {"Giiwo"}, ["kkt"] = {"Koi"}, ["kku"] = {"Tumi"}, ["kkv"] = {"Kangean"}, ["kkw"] = {"Teke-Kukuya"}, ["kkx"] = {"Kohin"}, ["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"}, ["kkz"] = {"Kaska"}, ["kla"] = {"Klamath-Modoc"}, ["klb"] = {"Kiliwa"}, ["klc"] = {"Kolbila"}, ["kld"] = {"Gamilaraay"}, ["kle"] = {"Kulung (Nepal)"}, ["klf"] = {"Kendeje"}, ["klg"] = {"Tagakaulo"}, ["klh"] = {"Weliki"}, ["kli"] = {"Kalumpang"}, ["klj"] = {"Khalaj"}, ["klk"] = {"Kono (Nigeria)"}, ["kll"] = {"Kagan Kalagan"}, ["klm"] = {"Migum"}, ["kln"] = {"Kalenjin"}, ["klo"] = {"Kapya"}, ["klp"] = {"Kamasa"}, ["klq"] = {"Rumu"}, ["klr"] = {"Khaling"}, ["kls"] = {"Kalasha"}, ["klt"] = {"Nukna"}, ["klu"] = {"Klao"}, ["klv"] = {"Maskelynes"}, ["klw"] = {"Tado", "Lindu"}, ["klx"] = {"Koluwawa"}, ["kly"] = {"Kalao"}, ["klz"] = {"Kabola"}, ["kma"] = {"Konni"}, ["kmb"] = {"Kimbundu"}, ["kmc"] = {"Southern Dong"}, ["kmd"] = {"Majukayang Kalinga"}, ["kme"] = {"Bakole"}, ["kmf"] = {"Kare (Papua New Guinea)"}, ["kmg"] = {"Kâte"}, ["kmh"] = {"Kalam"}, ["kmi"] = {"Kami (Nigeria)"}, ["kmj"] = {"Kumarbhag Paharia"}, ["kmk"] = {"Limos Kalinga"}, ["kml"] = {"Tanudan Kalinga"}, ["kmm"] = {"Kom (India)"}, ["kmn"] = {"Awtuw"}, ["kmo"] = {"Kwoma"}, ["kmp"] = {"Gimme"}, ["kmq"] = {"Kwama"}, ["kmr"] = {"Northern Kurdish"}, ["kms"] = {"Kamasau"}, ["kmt"] = {"Kemtuik"}, ["kmu"] = {"Kanite"}, ["kmv"] = {"Karipúna Creole French"}, ["kmw"] = {"Komo (Democratic Republic of Congo)"}, ["kmx"] = {"Waboda"}, ["kmy"] = {"Koma"}, ["kmz"] = {"Khorasani Turkish"}, ["kna"] = {"Dera (Nigeria)"}, ["knb"] = {"Lubuagan Kalinga"}, ["knc"] = {"Central Kanuri"}, ["knd"] = {"Konda"}, ["kne"] = {"Kankanaey"}, ["knf"] = {"Mankanya"}, ["kng"] = {"Koongo"}, ["kni"] = {"Kanufi"}, ["knj"] = {"Western Kanjobal"}, ["knk"] = {"Kuranko"}, ["knl"] = {"Keninjal"}, ["knm"] = {"Kanamarí"}, ["knn"] = {"Konkani (individual language)"}, ["kno"] = {"Kono (Sierra Leone)"}, ["knp"] = {"Kwanja"}, ["knq"] = {"Kintaq"}, ["knr"] = {"Kaningra"}, ["kns"] = {"Kensiu"}, ["knt"] = {"Panoan Katukína"}, ["knu"] = {"Kono (Guinea)"}, ["knv"] = {"Tabo"}, ["knw"] = {"Kung-Ekoka"}, ["knx"] = {"Kendayan", "Salako"}, ["kny"] = {"Kanyok"}, ["knz"] = {"Kalamsé"}, ["koa"] = {"Konomala"}, ["koc"] = {"Kpati"}, ["kod"] = {"Kodi"}, ["koe"] = {"Kacipo-Bale Suri"}, ["kof"] = {"Kubi"}, ["kog"] = {"Cogui", "Kogi"}, ["koh"] = {"Koyo"}, ["koi"] = {"Komi-Permyak"}, ["kok"] = {"Konkani (macrolanguage)"}, ["kol"] = {"Kol (Papua New Guinea)"}, ["koo"] = {"Konzo"}, ["kop"] = {"Waube"}, ["koq"] = {"Kota (Gabon)"}, ["kos"] = {"Kosraean"}, ["kot"] = {"Lagwan"}, ["kou"] = {"Koke"}, ["kov"] = {"Kudu-Camo"}, ["kow"] = {"Kugama"}, ["koy"] = {"Koyukon"}, ["koz"] = {"Korak"}, ["kpa"] = {"Kutto"}, ["kpb"] = {"Mullu Kurumba"}, ["kpc"] = {"Curripaco"}, ["kpd"] = {"Koba"}, ["kpe"] = {"Kpelle"}, ["kpf"] = {"Komba"}, ["kpg"] = {"Kapingamarangi"}, ["kph"] = {"Kplang"}, ["kpi"] = {"Kofei"}, ["kpj"] = {"Karajá"}, ["kpk"] = {"Kpan"}, ["kpl"] = {"Kpala"}, ["kpm"] = {"Koho"}, ["kpn"] = {"Kepkiriwát"}, ["kpo"] = {"Ikposo"}, ["kpq"] = {"Korupun-Sela"}, ["kpr"] = {"Korafe-Yegha"}, ["kps"] = {"Tehit"}, ["kpt"] = {"Karata"}, ["kpu"] = {"Kafoa"}, ["kpv"] = {"Komi-Zyrian"}, ["kpw"] = {"Kobon"}, ["kpx"] = {"Mountain Koiali"}, ["kpy"] = {"Koryak"}, ["kpz"] = {"Kupsabiny"}, ["kqa"] = {"Mum"}, ["kqb"] = {"Kovai"}, ["kqc"] = {"Doromu-Koki"}, ["kqd"] = {"Koy Sanjaq Surat"}, ["kqe"] = {"Kalagan"}, ["kqf"] = {"Kakabai"}, ["kqg"] = {"Khe"}, ["kqh"] = {"Kisankasa"}, ["kqi"] = {"Koitabu"}, ["kqj"] = {"Koromira"}, ["kqk"] = {"Kotafon Gbe"}, ["kql"] = {"Kyenele"}, ["kqm"] = {"Khisa"}, ["kqn"] = {"Kaonde"}, ["kqo"] = {"Eastern Krahn"}, ["kqp"] = {"Kimré"}, ["kqq"] = {"Krenak"}, ["kqr"] = {"Kimaragang"}, ["kqs"] = {"Northern Kissi"}, ["kqt"] = {"Klias River Kadazan"}, ["kqu"] = {"Seroa"}, ["kqv"] = {"Okolod"}, ["kqw"] = {"Kandas"}, ["kqx"] = {"Mser"}, ["kqy"] = {"Koorete"}, ["kqz"] = {"Korana"}, ["kra"] = {"Kumhali"}, ["krb"] = {"Karkin"}, ["krc"] = {"Karachay-Balkar"}, ["krd"] = {"Kairui-Midiki"}, ["kre"] = {"Panará"}, ["krf"] = {"Koro (Vanuatu)"}, ["krh"] = {"Kurama"}, ["kri"] = {"Krio"}, ["krj"] = {"Kinaray-A"}, ["krk"] = {"Kerek"}, ["krl"] = {"Karelian"}, ["krn"] = {"Sapo"}, ["kro"] = {"Kru languages"}, ["krp"] = {"Durop"}, ["krr"] = {"Krung"}, ["krs"] = {"Gbaya (Sudan)"}, ["krt"] = {"Tumari Kanuri"}, ["kru"] = {"Kurukh"}, ["krv"] = {"Kavet"}, ["krw"] = {"Western Krahn"}, ["krx"] = {"Karon"}, ["kry"] = {"Kryts"}, ["krz"] = {"Sota Kanum"}, ["ksb"] = {"Shambala"}, ["ksc"] = {"Southern Kalinga"}, ["ksd"] = {"Kuanua"}, ["kse"] = {"Kuni"}, ["ksf"] = {"Bafia"}, ["ksg"] = {"Kusaghe"}, ["ksh"] = {"Kölsch"}, ["ksi"] = {"Krisa", "I'saka"}, ["ksj"] = {"Uare"}, ["ksk"] = {"Kansa"}, ["ksl"] = {"Kumalu"}, ["ksm"] = {"Kumba"}, ["ksn"] = {"Kasiguranin"}, ["kso"] = {"Kofa"}, ["ksp"] = {"Kaba"}, ["ksq"] = {"Kwaami"}, ["ksr"] = {"Borong"}, ["kss"] = {"Southern Kisi"}, ["kst"] = {"Winyé"}, ["ksu"] = {"Khamyang"}, ["ksv"] = {"Kusu"}, ["ksw"] = {"S'gaw Karen"}, ["ksx"] = {"Kedang"}, ["ksy"] = {"Kharia Thar"}, ["ksz"] = {"Kodaku"}, ["kta"] = {"Katua"}, ["ktb"] = {"Kambaata"}, ["ktc"] = {"Kholok"}, ["ktd"] = {"Kokata", "Kukatha"}, ["kte"] = {"Nubri"}, ["ktf"] = {"Kwami"}, ["ktg"] = {"Kalkutung"}, ["kth"] = {"Karanga"}, ["kti"] = {"North Muyu"}, ["ktj"] = {"Plapo Krumen"}, ["ktk"] = {"Kaniet"}, ["ktl"] = {"Koroshi"}, ["ktm"] = {"Kurti"}, ["ktn"] = {"Karitiâna"}, ["kto"] = {"Kuot"}, ["ktp"] = {"Kaduo"}, ["ktq"] = {"Katabaga"}, ["kts"] = {"South Muyu"}, ["ktt"] = {"Ketum"}, ["ktu"] = {"Kituba (Democratic Republic of Congo)"}, ["ktv"] = {"Eastern Katu"}, ["ktw"] = {"Kato"}, ["ktx"] = {"Kaxararí"}, ["kty"] = {"Kango (Bas-Uélé District)"}, ["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"}, ["kub"] = {"Kutep"}, ["kuc"] = {"Kwinsu"}, ["kud"] = {"'Auhelawa"}, ["kue"] = {"Kuman (Papua New Guinea)"}, ["kuf"] = {"Western Katu"}, ["kug"] = {"Kupa"}, ["kuh"] = {"Kushi"}, ["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"}, ["kuj"] = {"Kuria"}, ["kuk"] = {"Kepo'"}, ["kul"] = {"Kulere"}, ["kum"] = {"Kumyk"}, ["kun"] = {"Kunama"}, ["kuo"] = {"Kumukio"}, ["kup"] = {"Kunimaipa"}, ["kuq"] = {"Karipuna"}, ["kus"] = {"Kusaal"}, ["kut"] = {"Kutenai"}, ["kuu"] = {"Upper Kuskokwim"}, ["kuv"] = {"Kur"}, ["kuw"] = {"Kpagua"}, ["kux"] = {"Kukatja"}, ["kuy"] = {"Kuuku-Ya'u"}, ["kuz"] = {"Kunza"}, ["kva"] = {"Bagvalal"}, ["kvb"] = {"Kubu"}, ["kvc"] = {"Kove"}, ["kvd"] = {"Kui (Indonesia)"}, ["kve"] = {"Kalabakan"}, ["kvf"] = {"Kabalai"}, ["kvg"] = {"Kuni-Boazi"}, ["kvh"] = {"Komodo"}, ["kvi"] = {"Kwang"}, ["kvj"] = {"Psikye"}, ["kvk"] = {"Korean Sign Language"}, ["kvl"] = {"Kayaw"}, ["kvm"] = {"Kendem"}, ["kvn"] = {"Border Kuna"}, ["kvo"] = {"Dobel"}, ["kvp"] = {"Kompane"}, ["kvq"] = {"Geba Karen"}, ["kvr"] = {"Kerinci"}, ["kvt"] = {"Lahta Karen", "Lahta"}, ["kvu"] = {"Yinbaw Karen"}, ["kvv"] = {"Kola"}, ["kvw"] = {"Wersing"}, ["kvx"] = {"Parkari Koli"}, ["kvy"] = {"Yintale Karen", "Yintale"}, ["kvz"] = {"Tsakwambo", "Tsaukambo"}, ["kwa"] = {"Dâw"}, ["kwb"] = {"Kwa"}, ["kwc"] = {"Likwala"}, ["kwd"] = {"Kwaio"}, ["kwe"] = {"Kwerba"}, ["kwf"] = {"Kwara'ae"}, ["kwg"] = {"Sara Kaba Deme"}, ["kwh"] = {"Kowiai"}, ["kwi"] = {"Awa-Cuaiquer"}, ["kwj"] = {"Kwanga"}, ["kwk"] = {"Kwakiutl"}, ["kwl"] = {"Kofyar"}, ["kwm"] = {"Kwambi"}, ["kwn"] = {"Kwangali"}, ["kwo"] = {"Kwomtari"}, ["kwp"] = {"Kodia"}, ["kwr"] = {"Kwer"}, ["kws"] = {"Kwese"}, ["kwt"] = {"Kwesten"}, ["kwu"] = {"Kwakum"}, ["kwv"] = {"Sara Kaba Náà"}, ["kww"] = {"Kwinti"}, ["kwx"] = {"Khirwar"}, ["kwy"] = {"San Salvador Kongo"}, ["kwz"] = {"Kwadi"}, ["kxa"] = {"Kairiru"}, ["kxb"] = {"Krobu"}, ["kxc"] = {"Konso", "Khonso"}, ["kxd"] = {"Brunei"}, ["kxf"] = {"Manumanaw Karen", "Manumanaw"}, ["kxh"] = {"Karo (Ethiopia)"}, ["kxi"] = {"Keningau Murut"}, ["kxj"] = {"Kulfa"}, ["kxk"] = {"Zayein Karen"}, ["kxm"] = {"Northern Khmer"}, ["kxn"] = {"Kanowit-Tanjong Melanau"}, ["kxo"] = {"Kanoé"}, ["kxp"] = {"Wadiyara Koli"}, ["kxq"] = {"Smärky Kanum"}, ["kxr"] = {"Koro (Papua New Guinea)"}, ["kxs"] = {"Kangjia"}, ["kxt"] = {"Koiwat"}, ["kxv"] = {"Kuvi"}, ["kxw"] = {"Konai"}, ["kxx"] = {"Likuba"}, ["kxy"] = {"Kayong"}, ["kxz"] = {"Kerewo"}, ["kya"] = {"Kwaya"}, ["kyb"] = {"Butbut Kalinga"}, ["kyc"] = {"Kyaka"}, ["kyd"] = {"Karey"}, ["kye"] = {"Krache"}, ["kyf"] = {"Kouya"}, ["kyg"] = {"Keyagana"}, ["kyh"] = {"Karok"}, ["kyi"] = {"Kiput"}, ["kyj"] = {"Karao"}, ["kyk"] = {"Kamayo"}, ["kyl"] = {"Kalapuya"}, ["kym"] = {"Kpatili"}, ["kyn"] = {"Northern Binukidnon"}, ["kyo"] = {"Kelon"}, ["kyp"] = {"Kang"}, ["kyq"] = {"Kenga"}, ["kyr"] = {"Kuruáya"}, ["kys"] = {"Baram Kayan"}, ["kyt"] = {"Kayagar"}, ["kyu"] = {"Western Kayah"}, ["kyv"] = {"Kayort"}, ["kyw"] = {"Kudmali"}, ["kyx"] = {"Rapoisi"}, ["kyy"] = {"Kambaira"}, ["kyz"] = {"Kayabí"}, ["kza"] = {"Western Karaboro"}, ["kzb"] = {"Kaibobo"}, ["kzc"] = {"Bondoukou Kulango"}, ["kzd"] = {"Kadai"}, ["kze"] = {"Kosena"}, ["kzf"] = {"Da'a Kaili"}, ["kzg"] = {"Kikai"}, ["kzi"] = {"Kelabit"}, ["kzk"] = {"Kazukuru"}, ["kzl"] = {"Kayeli"}, ["kzm"] = {"Kais"}, ["kzn"] = {"Kokola"}, ["kzo"] = {"Kaningi"}, ["kzp"] = {"Kaidipang"}, ["kzq"] = {"Kaike"}, ["kzr"] = {"Karang"}, ["kzs"] = {"Sugut Dusun"}, ["kzu"] = {"Kayupulau"}, ["kzv"] = {"Komyandaret"}, ["kzw"] = {"Karirí-Xocó"}, ["kzx"] = {"Kamarian"}, ["kzy"] = {"Kango (Tshopo District)"}, ["kzz"] = {"Kalabra"}, ["laa"] = {"Southern Subanen"}, ["lab"] = {"Linear A"}, ["lac"] = {"Lacandon"}, ["lad"] = {"Ladino"}, ["lae"] = {"Pattani"}, ["laf"] = {"Lafofa"}, ["lag"] = {"Rangi"}, ["lah"] = {"Lahnda"}, ["lai"] = {"Lambya"}, ["laj"] = {"Lango (Uganda)"}, ["lal"] = {"Lalia"}, ["lam"] = {"Lamba"}, ["lan"] = {"Laru"}, ["lap"] = {"Laka (Chad)"}, ["laq"] = {"Qabiao"}, ["lar"] = {"Larteh"}, ["las"] = {"Lama (Togo)"}, ["lau"] = {"Laba"}, ["law"] = {"Lauje"}, ["lax"] = {"Tiwa"}, ["lay"] = {"Lama Bai"}, ["laz"] = {"Aribwatsa"}, ["lbb"] = {"Label"}, ["lbc"] = {"Lakkia"}, ["lbe"] = {"Lak"}, ["lbf"] = {"Tinani"}, ["lbg"] = {"Laopang"}, ["lbi"] = {"La'bi"}, ["lbj"] = {"Ladakhi"}, ["lbk"] = {"Central Bontok"}, ["lbl"] = {"Libon Bikol"}, ["lbm"] = {"Lodhi"}, ["lbn"] = {"Rmeet"}, ["lbo"] = {"Laven"}, ["lbq"] = {"Wampar"}, ["lbr"] = {"Lohorung"}, ["lbs"] = {"Libyan Sign Language"}, ["lbt"] = {"Lachi"}, ["lbu"] = {"Labu"}, ["lbv"] = {"Lavatbura-Lamusong"}, ["lbw"] = {"Tolaki"}, ["lbx"] = {"Lawangan"}, ["lby"] = {"Lamalama", "Lamu-Lamu"}, ["lbz"] = {"Lardil"}, ["lcc"] = {"Legenyem"}, ["lcd"] = {"Lola"}, ["lce"] = {"Loncong", "Sekak"}, ["lcf"] = {"Lubu"}, ["lch"] = {"Luchazi"}, ["lcl"] = {"Lisela"}, ["lcm"] = {"Tungag"}, ["lcp"] = {"Western Lawa"}, ["lcq"] = {"Luhu"}, ["lcs"] = {"Lisabata-Nuniali"}, ["lda"] = {"Kla-Dan"}, ["ldb"] = {"Dũya"}, ["ldd"] = {"Luri"}, ["ldg"] = {"Lenyima"}, ["ldh"] = {"Lamja-Dengsa-Tola"}, ["ldi"] = {"Laari"}, ["ldj"] = {"Lemoro"}, ["ldk"] = {"Leelau"}, ["ldl"] = {"Kaan"}, ["ldm"] = {"Landoma"}, ["ldn"] = {"Láadan"}, ["ldo"] = {"Loo"}, ["ldp"] = {"Tso"}, ["ldq"] = {"Lufu"}, ["lea"] = {"Lega-Shabunda"}, ["leb"] = {"Lala-Bisa"}, ["lec"] = {"Leco"}, ["led"] = {"Lendu"}, ["lee"] = {"Lyélé"}, ["lef"] = {"Lelemi"}, ["leh"] = {"Lenje"}, ["lei"] = {"Lemio"}, ["lej"] = {"Lengola"}, ["lek"] = {"Leipon"}, ["lel"] = {"Lele (Democratic Republic of Congo)"}, ["lem"] = {"Nomaande"}, ["len"] = {"Lenca"}, ["leo"] = {"Leti (Cameroon)"}, ["lep"] = {"Lepcha"}, ["leq"] = {"Lembena"}, ["ler"] = {"Lenkau"}, ["les"] = {"Lese"}, ["let"] = {"Lesing-Gelimi", "Amio-Gelimi"}, ["leu"] = {"Kara (Papua New Guinea)"}, ["lev"] = {"Lamma"}, ["lew"] = {"Ledo Kaili"}, ["lex"] = {"Luang"}, ["ley"] = {"Lemolang"}, ["lez"] = {"Lezghian"}, ["lfa"] = {"Lefa"}, ["lfn"] = {"Lingua Franca Nova"}, ["lga"] = {"Lungga"}, ["lgb"] = {"Laghu"}, ["lgg"] = {"Lugbara"}, ["lgh"] = {"Laghuu"}, ["lgi"] = {"Lengilu"}, ["lgk"] = {"Lingarak", "Neverver"}, ["lgl"] = {"Wala"}, ["lgm"] = {"Lega-Mwenga"}, ["lgn"] = {"T'apo", "Opuuo"}, ["lgo"] = {"Lango (South Sudan)"}, ["lgq"] = {"Logba"}, ["lgr"] = {"Lengo"}, ["lgs"] = {"Guinea-Bissau Sign Language", "Língua Gestual Guineense"}, ["lgt"] = {"Pahi"}, ["lgu"] = {"Longgu"}, ["lgz"] = {"Ligenza"}, ["lha"] = {"Laha (Viet Nam)"}, ["lhh"] = {"Laha (Indonesia)"}, ["lhi"] = {"Lahu Shi"}, ["lhl"] = {"Lahul Lohar"}, ["lhm"] = {"Lhomi"}, ["lhn"] = {"Lahanan"}, ["lhp"] = {"Lhokpu"}, ["lhs"] = {"Mlahsö"}, ["lht"] = {"Lo-Toga"}, ["lhu"] = {"Lahu"}, ["lia"] = {"West-Central Limba"}, ["lib"] = {"Likum"}, ["lic"] = {"Hlai"}, ["lid"] = {"Nyindrou"}, ["lie"] = {"Likila"}, ["lif"] = {"Limbu"}, ["lig"] = {"Ligbi"}, ["lih"] = {"Lihir"}, ["lij"] = {"Ligurian"}, ["lik"] = {"Lika"}, ["lil"] = {"Lillooet"}, ["lio"] = {"Liki"}, ["lip"] = {"Sekpele"}, ["liq"] = {"Libido"}, ["lir"] = {"Liberian English"}, ["lis"] = {"Lisu"}, ["liu"] = {"Logorik"}, ["liv"] = {"Liv"}, ["liw"] = {"Col"}, ["lix"] = {"Liabuku"}, ["liy"] = {"Banda-Bambari"}, ["liz"] = {"Libinza"}, ["lja"] = {"Golpa"}, ["lje"] = {"Rampi"}, ["lji"] = {"Laiyolo"}, ["ljl"] = {"Li'o"}, ["ljp"] = {"Lampung Api"}, ["ljw"] = {"Yirandali"}, ["ljx"] = {"Yuru"}, ["lka"] = {"Lakalei"}, ["lkb"] = {"Kabras", "Lukabaras"}, ["lkc"] = {"Kucong"}, ["lkd"] = {"Lakondê"}, ["lke"] = {"Kenyi"}, ["lkh"] = {"Lakha"}, ["lki"] = {"Laki"}, ["lkj"] = {"Remun"}, ["lkl"] = {"Laeko-Libuat"}, ["lkm"] = {"Kalaamaya"}, ["lkn"] = {"Lakon", "Vure"}, ["lko"] = {"Khayo", "Olukhayo"}, ["lkr"] = {"Päri"}, ["lks"] = {"Kisa", "Olushisa"}, ["lkt"] = {"Lakota"}, ["lku"] = {"Kungkari"}, ["lky"] = {"Lokoya"}, ["lla"] = {"Lala-Roba"}, ["llb"] = {"Lolo"}, ["llc"] = {"Lele (Guinea)"}, ["lld"] = {"Ladin"}, ["lle"] = {"Lele (Papua New Guinea)"}, ["llf"] = {"Hermit"}, ["llg"] = {"Lole"}, ["llh"] = {"Lamu"}, ["lli"] = {"Teke-Laali"}, ["llj"] = {"Ladji Ladji"}, ["llk"] = {"Lelak"}, ["lll"] = {"Lilau"}, ["llm"] = {"Lasalimu"}, ["lln"] = {"Lele (Chad)"}, ["llp"] = {"North Efate"}, ["llq"] = {"Lolak"}, ["lls"] = {"Lithuanian Sign Language"}, ["llu"] = {"Lau"}, ["llx"] = {"Lauan"}, ["lma"] = {"East Limba"}, ["lmb"] = {"Merei"}, ["lmc"] = {"Limilngan"}, ["lmd"] = {"Lumun"}, ["lme"] = {"Pévé"}, ["lmf"] = {"South Lembata"}, ["lmg"] = {"Lamogai"}, ["lmh"] = {"Lambichhong"}, ["lmi"] = {"Lombi"}, ["lmj"] = {"West Lembata"}, ["lmk"] = {"Lamkang"}, ["lml"] = {"Hano"}, ["lmn"] = {"Lambadi"}, ["lmo"] = {"Lombard"}, ["lmp"] = {"Limbum"}, ["lmq"] = {"Lamatuka"}, ["lmr"] = {"Lamalera"}, ["lmu"] = {"Lamenu"}, ["lmv"] = {"Lomaiviti"}, ["lmw"] = {"Lake Miwok"}, ["lmx"] = {"Laimbue"}, ["lmy"] = {"Lamboya"}, ["lna"] = {"Langbashe"}, ["lnb"] = {"Mbalanhu"}, ["lnd"] = {"Lundayeh", "Lun Bawang"}, ["lng"] = {"Langobardic"}, ["lnh"] = {"Lanoh"}, ["lni"] = {"Daantanai'"}, ["lnj"] = {"Leningitij"}, ["lnl"] = {"South Central Banda"}, ["lnm"] = {"Langam"}, ["lnn"] = {"Lorediakarkar"}, ["lns"] = {"Lamnso'"}, ["lnu"] = {"Longuda"}, ["lnw"] = {"Lanima"}, ["lnz"] = {"Lonzo"}, ["loa"] = {"Loloda"}, ["lob"] = {"Lobi"}, ["loc"] = {"Inonhan"}, ["loe"] = {"Saluan"}, ["lof"] = {"Logol"}, ["log"] = {"Logo"}, ["loh"] = {"Laarim", "Narim"}, ["loi"] = {"Loma (Côte d'Ivoire)"}, ["loj"] = {"Lou"}, ["lok"] = {"Loko"}, ["lol"] = {"Mongo"}, ["lom"] = {"Loma (Liberia)"}, ["lon"] = {"Malawi Lomwe"}, ["loo"] = {"Lombo"}, ["lop"] = {"Lopa"}, ["loq"] = {"Lobala"}, ["lor"] = {"Téén"}, ["los"] = {"Loniu"}, ["lot"] = {"Otuho"}, ["lou"] = {"Louisiana Creole"}, ["lov"] = {"Lopi"}, ["low"] = {"Tampias Lobu"}, ["lox"] = {"Loun"}, ["loy"] = {"Loke"}, ["loz"] = {"Lozi"}, ["lpa"] = {"Lelepa"}, ["lpe"] = {"Lepki"}, ["lpn"] = {"Long Phuri Naga"}, ["lpo"] = {"Lipo"}, ["lpx"] = {"Lopit"}, ["lqr"] = {"Logir"}, ["lra"] = {"Rara Bakati'"}, ["lrc"] = {"Northern Luri"}, ["lre"] = {"Laurentian"}, ["lrg"] = {"Laragia"}, ["lri"] = {"Marachi", "Olumarachi"}, ["lrk"] = {"Loarki"}, ["lrl"] = {"Lari"}, ["lrm"] = {"Marama", "Olumarama"}, ["lrn"] = {"Lorang"}, ["lro"] = {"Laro"}, ["lrr"] = {"Southern Yamphu"}, ["lrt"] = {"Larantuka Malay"}, ["lrv"] = {"Larevat"}, ["lrz"] = {"Lemerig"}, ["lsa"] = {"Lasgerdi"}, ["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"}, ["lsc"] = {"Albarradas Sign Language", "Lengua de señas Albarradas"}, ["lsd"] = {"Lishana Deni"}, ["lse"] = {"Lusengo"}, ["lsh"] = {"Lish"}, ["lsi"] = {"Lashi"}, ["lsl"] = {"Latvian Sign Language"}, ["lsm"] = {"Saamia", "Olusamia"}, ["lsn"] = {"Tibetan Sign Language"}, ["lso"] = {"Laos Sign Language"}, ["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"}, ["lsr"] = {"Aruop"}, ["lss"] = {"Lasi"}, ["lst"] = {"Trinidad and Tobago Sign Language"}, ["lsv"] = {"Sivia Sign Language"}, ["lsw"] = {"Seychelles Sign Language", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"}, ["lsy"] = {"Mauritian Sign Language"}, ["ltc"] = {"Late Middle Chinese"}, ["ltg"] = {"Latgalian"}, ["lth"] = {"Thur"}, ["lti"] = {"Leti (Indonesia)"}, ["ltn"] = {"Latundê"}, ["lto"] = {"Tsotso", "Olutsotso"}, ["lts"] = {"Tachoni", "Lutachoni"}, ["ltu"] = {"Latu"}, ["lua"] = {"Luba-Lulua"}, ["luc"] = {"Aringa"}, ["lud"] = {"Ludian"}, ["lue"] = {"Luvale"}, ["luf"] = {"Laua"}, ["lui"] = {"Luiseno"}, ["luj"] = {"Luna"}, ["luk"] = {"Lunanakha"}, ["lul"] = {"Olu'bo"}, ["lum"] = {"Luimbi"}, ["lun"] = {"Lunda"}, ["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"}, ["lup"] = {"Lumbu"}, ["luq"] = {"Lucumi"}, ["lur"] = {"Laura"}, ["lus"] = {"Lushai"}, ["lut"] = {"Lushootseed"}, ["luu"] = {"Lumba-Yakkha"}, ["luv"] = {"Luwati"}, ["luw"] = {"Luo (Cameroon)"}, ["luy"] = {"Luyia", "Oluluyia"}, ["luz"] = {"Southern Luri"}, ["lva"] = {"Maku'a"}, ["lvi"] = {"Lavi"}, ["lvk"] = {"Lavukaleve"}, ["lvl"] = {"Lwel"}, ["lvs"] = {"Standard Latvian"}, ["lvu"] = {"Levuka"}, ["lwa"] = {"Lwalu"}, ["lwe"] = {"Lewo Eleng"}, ["lwg"] = {"Wanga", "Oluwanga"}, ["lwh"] = {"White Lachi"}, ["lwl"] = {"Eastern Lawa"}, ["lwm"] = {"Laomian"}, ["lwo"] = {"Luwo"}, ["lws"] = {"Malawian Sign Language"}, ["lwt"] = {"Lewotobi"}, ["lwu"] = {"Lawu"}, ["lww"] = {"Lewo"}, ["lxm"] = {"Lakurumau"}, ["lya"] = {"Layakha"}, ["lyg"] = {"Lyngngam"}, ["lyn"] = {"Luyana"}, ["lzh"] = {"Literary Chinese"}, ["lzl"] = {"Litzlitz"}, ["lzn"] = {"Leinong Naga"}, ["lzz"] = {"Laz"}, ["maa"] = {"San Jerónimo Tecóatl Mazatec"}, ["mab"] = {"Yutanduchi Mixtec"}, ["mad"] = {"Madurese"}, ["mae"] = {"Bo-Rukul"}, ["maf"] = {"Mafa"}, ["mag"] = {"Magahi"}, ["mai"] = {"Maithili"}, ["maj"] = {"Jalapa De Díaz Mazatec"}, ["mak"] = {"Makasar"}, ["mam"] = {"Mam"}, ["man"] = {"Mandingo", "Manding"}, ["map"] = {"Austronesian languages"}, ["maq"] = {"Chiquihuitlán Mazatec"}, ["mas"] = {"Masai"}, ["mat"] = {"San Francisco Matlatzinca"}, ["mau"] = {"Huautla Mazatec"}, ["mav"] = {"Sateré-Mawé"}, ["maw"] = {"Mampruli"}, ["max"] = {"North Moluccan Malay"}, ["maz"] = {"Central Mazahua"}, ["mba"] = {"Higaonon"}, ["mbb"] = {"Western Bukidnon Manobo"}, ["mbc"] = {"Macushi"}, ["mbd"] = {"Dibabawon Manobo"}, ["mbe"] = {"Molale"}, ["mbf"] = {"Baba Malay"}, ["mbh"] = {"Mangseng"}, ["mbi"] = {"Ilianen Manobo"}, ["mbj"] = {"Nadëb"}, ["mbk"] = {"Malol"}, ["mbl"] = {"Maxakalí"}, ["mbm"] = {"Ombamba"}, ["mbn"] = {"Macaguán"}, ["mbo"] = {"Mbo (Cameroon)"}, ["mbp"] = {"Malayo"}, ["mbq"] = {"Maisin"}, ["mbr"] = {"Nukak Makú"}, ["mbs"] = {"Sarangani Manobo"}, ["mbt"] = {"Matigsalug Manobo"}, ["mbu"] = {"Mbula-Bwazza"}, ["mbv"] = {"Mbulungish"}, ["mbw"] = {"Maring"}, ["mbx"] = {"Mari (East Sepik Province)"}, ["mby"] = {"Memoni"}, ["mbz"] = {"Amoltepec Mixtec"}, ["mca"] = {"Maca"}, ["mcb"] = {"Machiguenga"}, ["mcc"] = {"Bitur"}, ["mcd"] = {"Sharanahua"}, ["mce"] = {"Itundujia Mixtec"}, ["mcf"] = {"Matsés"}, ["mcg"] = {"Mapoyo"}, ["mch"] = {"Maquiritari"}, ["mci"] = {"Mese"}, ["mcj"] = {"Mvanip"}, ["mck"] = {"Mbunda"}, ["mcl"] = {"Macaguaje"}, ["mcm"] = {"Malaccan Creole Portuguese"}, ["mcn"] = {"Masana"}, ["mco"] = {"Coatlán Mixe"}, ["mcp"] = {"Makaa"}, ["mcq"] = {"Ese"}, ["mcr"] = {"Menya"}, ["mcs"] = {"Mambai"}, ["mct"] = {"Mengisa"}, ["mcu"] = {"Cameroon Mambila"}, ["mcv"] = {"Minanibai"}, ["mcw"] = {"Mawa (Chad)"}, ["mcx"] = {"Mpiemo"}, ["mcy"] = {"South Watut"}, ["mcz"] = {"Mawan"}, ["mda"] = {"Mada (Nigeria)"}, ["mdb"] = {"Morigi"}, ["mdc"] = {"Male (Papua New Guinea)"}, ["mdd"] = {"Mbum"}, ["mde"] = {"Maba (Chad)"}, ["mdf"] = {"Moksha"}, ["mdg"] = {"Massalat"}, ["mdh"] = {"Maguindanaon"}, ["mdi"] = {"Mamvu"}, ["mdj"] = {"Mangbetu"}, ["mdk"] = {"Mangbutu"}, ["mdl"] = {"Maltese Sign Language"}, ["mdm"] = {"Mayogo"}, ["mdn"] = {"Mbati"}, ["mdp"] = {"Mbala"}, ["mdq"] = {"Mbole"}, ["mdr"] = {"Mandar"}, ["mds"] = {"Maria (Papua New Guinea)"}, ["mdt"] = {"Mbere"}, ["mdu"] = {"Mboko"}, ["mdv"] = {"Santa Lucía Monteverde Mixtec"}, ["mdw"] = {"Mbosi"}, ["mdx"] = {"Dizin"}, ["mdy"] = {"Male (Ethiopia)"}, ["mdz"] = {"Suruí Do Pará"}, ["mea"] = {"Menka"}, ["meb"] = {"Ikobi"}, ["mec"] = {"Marra"}, ["med"] = {"Melpa"}, ["mee"] = {"Mengen"}, ["mef"] = {"Megam"}, ["meh"] = {"Southwestern Tlaxiaco Mixtec"}, ["mei"] = {"Midob"}, ["mej"] = {"Meyah"}, ["mek"] = {"Mekeo"}, ["mel"] = {"Central Melanau"}, ["mem"] = {"Mangala"}, ["men"] = {"Mende (Sierra Leone)"}, ["meo"] = {"Kedah Malay"}, ["mep"] = {"Miriwoong"}, ["meq"] = {"Merey"}, ["mer"] = {"Meru"}, ["mes"] = {"Masmaje"}, ["met"] = {"Mato"}, ["meu"] = {"Motu"}, ["mev"] = {"Mano"}, ["mew"] = {"Maaka"}, ["mey"] = {"Hassaniyya"}, ["mez"] = {"Menominee"}, ["mfa"] = {"Pattani Malay"}, ["mfb"] = {"Bangka"}, ["mfc"] = {"Mba"}, ["mfd"] = {"Mendankwe-Nkwen"}, ["mfe"] = {"Morisyen"}, ["mff"] = {"Naki"}, ["mfg"] = {"Mogofin"}, ["mfh"] = {"Matal"}, ["mfi"] = {"Wandala"}, ["mfj"] = {"Mefele"}, ["mfk"] = {"North Mofu"}, ["mfl"] = {"Putai"}, ["mfm"] = {"Marghi South"}, ["mfn"] = {"Cross River Mbembe"}, ["mfo"] = {"Mbe"}, ["mfp"] = {"Makassar Malay"}, ["mfq"] = {"Moba"}, ["mfr"] = {"Marrithiyel"}, ["mfs"] = {"Mexican Sign Language"}, ["mft"] = {"Mokerang"}, ["mfu"] = {"Mbwela"}, ["mfv"] = {"Mandjak"}, ["mfw"] = {"Mulaha"}, ["mfx"] = {"Melo"}, ["mfy"] = {"Mayo"}, ["mfz"] = {"Mabaan"}, ["mga"] = {"Middle Irish (900-1200)"}, ["mgb"] = {"Mararit"}, ["mgc"] = {"Morokodo"}, ["mgd"] = {"Moru"}, ["mge"] = {"Mango"}, ["mgf"] = {"Maklew"}, ["mgg"] = {"Mpumpong"}, ["mgh"] = {"Makhuwa-Meetto"}, ["mgi"] = {"Lijili"}, ["mgj"] = {"Abureni"}, ["mgk"] = {"Mawes"}, ["mgl"] = {"Maleu-Kilenge"}, ["mgm"] = {"Mambae"}, ["mgn"] = {"Mbangi"}, ["mgo"] = {"Meta'"}, ["mgp"] = {"Eastern Magar"}, ["mgq"] = {"Malila"}, ["mgr"] = {"Mambwe-Lungu"}, ["mgs"] = {"Manda (Tanzania)"}, ["mgt"] = {"Mongol"}, ["mgu"] = {"Mailu"}, ["mgv"] = {"Matengo"}, ["mgw"] = {"Matumbi"}, ["mgy"] = {"Mbunga"}, ["mgz"] = {"Mbugwe"}, ["mha"] = {"Manda (India)"}, ["mhb"] = {"Mahongwe"}, ["mhc"] = {"Mocho"}, ["mhd"] = {"Mbugu"}, ["mhe"] = {"Besisi", "Mah Meri"}, ["mhf"] = {"Mamaa"}, ["mhg"] = {"Margu"}, ["mhi"] = {"Ma'di"}, ["mhj"] = {"Mogholi"}, ["mhk"] = {"Mungaka"}, ["mhl"] = {"Mauwake"}, ["mhm"] = {"Makhuwa-Moniga"}, ["mhn"] = {"Mócheno"}, ["mho"] = {"Mashi (Zambia)"}, ["mhp"] = {"Balinese Malay"}, ["mhq"] = {"Mandan"}, ["mhr"] = {"Eastern Mari"}, ["mhs"] = {"Buru (Indonesia)"}, ["mht"] = {"Mandahuaca"}, ["mhu"] = {"Digaro-Mishmi", "Darang Deng"}, ["mhw"] = {"Mbukushu"}, ["mhx"] = {"Maru", "Lhaovo"}, ["mhy"] = {"Ma'anyan"}, ["mhz"] = {"Mor (Mor Islands)"}, ["mia"] = {"Miami"}, ["mib"] = {"Atatláhuca Mixtec"}, ["mic"] = {"Mi'kmaq", "Micmac"}, ["mid"] = {"Mandaic"}, ["mie"] = {"Ocotepec Mixtec"}, ["mif"] = {"Mofu-Gudur"}, ["mig"] = {"San Miguel El Grande Mixtec"}, ["mih"] = {"Chayuco Mixtec"}, ["mii"] = {"Chigmecatitlán Mixtec"}, ["mij"] = {"Abar", "Mungbam"}, ["mik"] = {"Mikasuki"}, ["mil"] = {"Peñoles Mixtec"}, ["mim"] = {"Alacatlatzala Mixtec"}, ["min"] = {"Minangkabau"}, ["mio"] = {"Pinotepa Nacional Mixtec"}, ["mip"] = {"Apasco-Apoala Mixtec"}, ["miq"] = {"Mískito"}, ["mir"] = {"Isthmus Mixe"}, ["mis"] = {"Uncoded languages"}, ["mit"] = {"Southern Puebla Mixtec"}, ["miu"] = {"Cacaloxtepec Mixtec"}, ["miw"] = {"Akoye"}, ["mix"] = {"Mixtepec Mixtec"}, ["miy"] = {"Ayutla Mixtec"}, ["miz"] = {"Coatzospan Mixtec"}, ["mjb"] = {"Makalero"}, ["mjc"] = {"San Juan Colorado Mixtec"}, ["mjd"] = {"Northwest Maidu"}, ["mje"] = {"Muskum"}, ["mjg"] = {"Tu"}, ["mjh"] = {"Mwera (Nyasa)"}, ["mji"] = {"Kim Mun"}, ["mjj"] = {"Mawak"}, ["mjk"] = {"Matukar"}, ["mjl"] = {"Mandeali"}, ["mjm"] = {"Medebur"}, ["mjn"] = {"Ma (Papua New Guinea)"}, ["mjo"] = {"Malankuravan"}, ["mjp"] = {"Malapandaram"}, ["mjq"] = {"Malaryan"}, ["mjr"] = {"Malavedan"}, ["mjs"] = {"Miship"}, ["mjt"] = {"Sauria Paharia"}, ["mju"] = {"Manna-Dora"}, ["mjv"] = {"Mannan"}, ["mjw"] = {"Karbi"}, ["mjx"] = {"Mahali"}, ["mjy"] = {"Mahican"}, ["mjz"] = {"Majhi"}, ["mka"] = {"Mbre"}, ["mkb"] = {"Mal Paharia"}, ["mkc"] = {"Siliput"}, ["mke"] = {"Mawchi"}, ["mkf"] = {"Miya"}, ["mkg"] = {"Mak (China)"}, ["mkh"] = {"Mon-Khmer languages"}, ["mki"] = {"Dhatki"}, ["mkj"] = {"Mokilese"}, ["mkk"] = {"Byep"}, ["mkl"] = {"Mokole"}, ["mkm"] = {"Moklen"}, ["mkn"] = {"Kupang Malay"}, ["mko"] = {"Mingang Doso"}, ["mkp"] = {"Moikodi"}, ["mkq"] = {"Bay Miwok"}, ["mkr"] = {"Malas"}, ["mks"] = {"Silacayoapan Mixtec"}, ["mkt"] = {"Vamale"}, ["mku"] = {"Konyanka Maninka"}, ["mkv"] = {"Mafea"}, ["mkw"] = {"Kituba (Congo)"}, ["mkx"] = {"Kinamiging Manobo"}, ["mky"] = {"East Makian"}, ["mkz"] = {"Makasae"}, ["mla"] = {"Malo"}, ["mlb"] = {"Mbule"}, ["mlc"] = {"Cao Lan"}, ["mle"] = {"Manambu"}, ["mlf"] = {"Mal"}, ["mlh"] = {"Mape"}, ["mli"] = {"Malimpung"}, ["mlj"] = {"Miltu"}, ["mlk"] = {"Ilwana", "Kiwilwana"}, ["mll"] = {"Malua Bay"}, ["mlm"] = {"Mulam"}, ["mln"] = {"Malango"}, ["mlo"] = {"Mlomp"}, ["mlp"] = {"Bargam"}, ["mlq"] = {"Western Maninkakan"}, ["mlr"] = {"Vame"}, ["mls"] = {"Masalit"}, ["mlu"] = {"To'abaita"}, ["mlv"] = {"Motlav", "Mwotlap"}, ["mlw"] = {"Moloko"}, ["mlx"] = {"Malfaxal", "Naha'ai"}, ["mlz"] = {"Malaynon"}, ["mma"] = {"Mama"}, ["mmb"] = {"Momina"}, ["mmc"] = {"Michoacán Mazahua"}, ["mmd"] = {"Maonan"}, ["mme"] = {"Mae"}, ["mmf"] = {"Mundat"}, ["mmg"] = {"North Ambrym"}, ["mmh"] = {"Mehináku"}, ["mmi"] = {"Musar"}, ["mmj"] = {"Majhwar"}, ["mmk"] = {"Mukha-Dora"}, ["mml"] = {"Man Met"}, ["mmm"] = {"Maii"}, ["mmn"] = {"Mamanwa"}, ["mmo"] = {"Mangga Buang"}, ["mmp"] = {"Siawi"}, ["mmq"] = {"Musak"}, ["mmr"] = {"Western Xiangxi Miao"}, ["mmt"] = {"Malalamai"}, ["mmu"] = {"Mmaala"}, ["mmv"] = {"Miriti"}, ["mmw"] = {"Emae"}, ["mmx"] = {"Madak"}, ["mmy"] = {"Migaama"}, ["mmz"] = {"Mabaale"}, ["mna"] = {"Mbula"}, ["mnb"] = {"Muna"}, ["mnc"] = {"Manchu"}, ["mnd"] = {"Mondé"}, ["mne"] = {"Naba"}, ["mnf"] = {"Mundani"}, ["mng"] = {"Eastern Mnong"}, ["mnh"] = {"Mono (Democratic Republic of Congo)"}, ["mni"] = {"Manipuri"}, ["mnj"] = {"Munji"}, ["mnk"] = {"Mandinka"}, ["mnl"] = {"Tiale"}, ["mnm"] = {"Mapena"}, ["mnn"] = {"Southern Mnong"}, ["mno"] = {"Manobo languages"}, ["mnp"] = {"Min Bei Chinese"}, ["mnq"] = {"Minriq"}, ["mnr"] = {"Mono (USA)"}, ["mns"] = {"Mansi"}, ["mnu"] = {"Mer"}, ["mnv"] = {"Rennell-Bellona"}, ["mnw"] = {"Mon"}, ["mnx"] = {"Manikion"}, ["mny"] = {"Manyawa"}, ["mnz"] = {"Moni"}, ["moa"] = {"Mwan"}, ["moc"] = {"Mocoví"}, ["mod"] = {"Mobilian"}, ["moe"] = {"Innu", "Montagnais"}, ["mog"] = {"Mongondow"}, ["moh"] = {"Mohawk"}, ["moi"] = {"Mboi"}, ["moj"] = {"Monzombo"}, ["mok"] = {"Morori"}, ["mom"] = {"Mangue"}, ["moo"] = {"Monom"}, ["mop"] = {"Mopán Maya"}, ["moq"] = {"Mor (Bomberai Peninsula)"}, ["mor"] = {"Moro"}, ["mos"] = {"Mossi"}, ["mot"] = {"Barí"}, ["mou"] = {"Mogum"}, ["mov"] = {"Mohave"}, ["mow"] = {"Moi (Congo)"}, ["mox"] = {"Molima"}, ["moy"] = {"Shekkacho"}, ["moz"] = {"Mukulu", "Gergiko"}, ["mpa"] = {"Mpoto"}, ["mpb"] = {"Malak Malak", "Mullukmulluk"}, ["mpc"] = {"Mangarrayi"}, ["mpd"] = {"Machinere"}, ["mpe"] = {"Majang"}, ["mpg"] = {"Marba"}, ["mph"] = {"Maung"}, ["mpi"] = {"Mpade"}, ["mpj"] = {"Martu Wangka", "Wangkajunga"}, ["mpk"] = {"Mbara (Chad)"}, ["mpl"] = {"Middle Watut"}, ["mpm"] = {"Yosondúa Mixtec"}, ["mpn"] = {"Mindiri"}, ["mpo"] = {"Miu"}, ["mpp"] = {"Migabac"}, ["mpq"] = {"Matís"}, ["mpr"] = {"Vangunu"}, ["mps"] = {"Dadibi"}, ["mpt"] = {"Mian"}, ["mpu"] = {"Makuráp"}, ["mpv"] = {"Mungkip"}, ["mpw"] = {"Mapidian"}, ["mpx"] = {"Misima-Panaeati"}, ["mpy"] = {"Mapia"}, ["mpz"] = {"Mpi"}, ["mqa"] = {"Maba (Indonesia)"}, ["mqb"] = {"Mbuko"}, ["mqc"] = {"Mangole"}, ["mqe"] = {"Matepi"}, ["mqf"] = {"Momuna"}, ["mqg"] = {"Kota Bangun Kutai Malay"}, ["mqh"] = {"Tlazoyaltepec Mixtec"}, ["mqi"] = {"Mariri"}, ["mqj"] = {"Mamasa"}, ["mqk"] = {"Rajah Kabunsuwan Manobo"}, ["mql"] = {"Mbelime"}, ["mqm"] = {"South Marquesan"}, ["mqn"] = {"Moronene"}, ["mqo"] = {"Modole"}, ["mqp"] = {"Manipa"}, ["mqq"] = {"Minokok"}, ["mqr"] = {"Mander"}, ["mqs"] = {"West Makian"}, ["mqt"] = {"Mok"}, ["mqu"] = {"Mandari"}, ["mqv"] = {"Mosimo"}, ["mqw"] = {"Murupi"}, ["mqx"] = {"Mamuju"}, ["mqy"] = {"Manggarai"}, ["mqz"] = {"Pano"}, ["mra"] = {"Mlabri"}, ["mrb"] = {"Marino"}, ["mrc"] = {"Maricopa"}, ["mrd"] = {"Western Magar"}, ["mre"] = {"Martha's Vineyard Sign Language"}, ["mrf"] = {"Elseng"}, ["mrg"] = {"Mising"}, ["mrh"] = {"Mara Chin"}, ["mrj"] = {"Western Mari"}, ["mrk"] = {"Hmwaveke"}, ["mrl"] = {"Mortlockese"}, ["mrm"] = {"Merlav", "Mwerlap"}, ["mrn"] = {"Cheke Holo"}, ["mro"] = {"Mru"}, ["mrp"] = {"Morouas"}, ["mrq"] = {"North Marquesan"}, ["mrr"] = {"Maria (India)"}, ["mrs"] = {"Maragus"}, ["mrt"] = {"Marghi Central"}, ["mru"] = {"Mono (Cameroon)"}, ["mrv"] = {"Mangareva"}, ["mrw"] = {"Maranao"}, ["mrx"] = {"Maremgi", "Dineor"}, ["mry"] = {"Mandaya"}, ["mrz"] = {"Marind"}, ["msb"] = {"Masbatenyo"}, ["msc"] = {"Sankaran Maninka"}, ["msd"] = {"Yucatec Maya Sign Language"}, ["mse"] = {"Musey"}, ["msf"] = {"Mekwei"}, ["msg"] = {"Moraid"}, ["msh"] = {"Masikoro Malagasy"}, ["msi"] = {"Sabah Malay"}, ["msj"] = {"Ma (Democratic Republic of Congo)"}, ["msk"] = {"Mansaka"}, ["msl"] = {"Molof", "Poule"}, ["msm"] = {"Agusan Manobo"}, ["msn"] = {"Vurës"}, ["mso"] = {"Mombum"}, ["msp"] = {"Maritsauá"}, ["msq"] = {"Caac"}, ["msr"] = {"Mongolian Sign Language"}, ["mss"] = {"West Masela"}, ["msu"] = {"Musom"}, ["msv"] = {"Maslam"}, ["msw"] = {"Mansoanka"}, ["msx"] = {"Moresada"}, ["msy"] = {"Aruamu"}, ["msz"] = {"Momare"}, ["mta"] = {"Cotabato Manobo"}, ["mtb"] = {"Anyin Morofo"}, ["mtc"] = {"Munit"}, ["mtd"] = {"Mualang"}, ["mte"] = {"Mono (Solomon Islands)"}, ["mtf"] = {"Murik (Papua New Guinea)"}, ["mtg"] = {"Una"}, ["mth"] = {"Munggui"}, ["mti"] = {"Maiwa (Papua New Guinea)"}, ["mtj"] = {"Moskona"}, ["mtk"] = {"Mbe'"}, ["mtl"] = {"Montol"}, ["mtm"] = {"Mator"}, ["mtn"] = {"Matagalpa"}, ["mto"] = {"Totontepec Mixe"}, ["mtp"] = {"Wichí Lhamtés Nocten"}, ["mtq"] = {"Muong"}, ["mtr"] = {"Mewari"}, ["mts"] = {"Yora"}, ["mtt"] = {"Mota"}, ["mtu"] = {"Tututepec Mixtec"}, ["mtv"] = {"Asaro'o"}, ["mtw"] = {"Southern Binukidnon"}, ["mtx"] = {"Tidaá Mixtec"}, ["mty"] = {"Nabi"}, ["mua"] = {"Mundang"}, ["mub"] = {"Mubi"}, ["muc"] = {"Ajumbu"}, ["mud"] = {"Mednyj Aleut"}, ["mue"] = {"Media Lengua"}, ["mug"] = {"Musgu"}, ["muh"] = {"Mündü"}, ["mui"] = {"Musi"}, ["muj"] = {"Mabire"}, ["muk"] = {"Mugom"}, ["mul"] = {"Multiple languages"}, ["mum"] = {"Maiwala"}, ["mun"] = {"Munda languages"}, ["muo"] = {"Nyong"}, ["mup"] = {"Malvi"}, ["muq"] = {"Eastern Xiangxi Miao"}, ["mur"] = {"Murle"}, ["mus"] = {"Creek"}, ["mut"] = {"Western Muria"}, ["muu"] = {"Yaaku"}, ["muv"] = {"Muthuvan"}, ["mux"] = {"Bo-Ung"}, ["muy"] = {"Muyang"}, ["muz"] = {"Mursi"}, ["mva"] = {"Manam"}, ["mvb"] = {"Mattole"}, ["mvd"] = {"Mamboru"}, ["mve"] = {"Marwari (Pakistan)"}, ["mvf"] = {"Peripheral Mongolian"}, ["mvg"] = {"Yucuañe Mixtec"}, ["mvh"] = {"Mulgi"}, ["mvi"] = {"Miyako"}, ["mvk"] = {"Mekmek"}, ["mvl"] = {"Mbara (Australia)"}, ["mvn"] = {"Minaveha"}, ["mvo"] = {"Marovo"}, ["mvp"] = {"Duri"}, ["mvq"] = {"Moere"}, ["mvr"] = {"Marau"}, ["mvs"] = {"Massep"}, ["mvt"] = {"Mpotovoro"}, ["mvu"] = {"Marfa"}, ["mvv"] = {"Tagal Murut"}, ["mvw"] = {"Machinga"}, ["mvx"] = {"Meoswar"}, ["mvy"] = {"Indus Kohistani"}, ["mvz"] = {"Mesqan"}, ["mwa"] = {"Mwatebu"}, ["mwb"] = {"Juwal"}, ["mwc"] = {"Are"}, ["mwe"] = {"Mwera (Chimwera)"}, ["mwf"] = {"Murrinh-Patha"}, ["mwg"] = {"Aiklep"}, ["mwh"] = {"Mouk-Aria"}, ["mwi"] = {"Labo", "Ninde"}, ["mwk"] = {"Kita Maninkakan"}, ["mwl"] = {"Mirandese"}, ["mwm"] = {"Sar"}, ["mwn"] = {"Nyamwanga"}, ["mwo"] = {"Central Maewo"}, ["mwp"] = {"Kala Lagaw Ya"}, ["mwq"] = {"Mün Chin"}, ["mwr"] = {"Marwari"}, ["mws"] = {"Mwimbi-Muthambi"}, ["mwt"] = {"Moken"}, ["mwu"] = {"Mittu"}, ["mwv"] = {"Mentawai"}, ["mww"] = {"Hmong Daw"}, ["mwz"] = {"Moingi"}, ["mxa"] = {"Northwest Oaxaca Mixtec"}, ["mxb"] = {"Tezoatlán Mixtec"}, ["mxc"] = {"Manyika"}, ["mxd"] = {"Modang"}, ["mxe"] = {"Mele-Fila"}, ["mxf"] = {"Malgbe"}, ["mxg"] = {"Mbangala"}, ["mxh"] = {"Mvuba"}, ["mxi"] = {"Mozarabic"}, ["mxj"] = {"Miju-Mishmi", "Geman Deng"}, ["mxk"] = {"Monumbo"}, ["mxl"] = {"Maxi Gbe"}, ["mxm"] = {"Meramera"}, ["mxn"] = {"Moi (Indonesia)"}, ["mxo"] = {"Mbowe"}, ["mxp"] = {"Tlahuitoltepec Mixe"}, ["mxq"] = {"Juquila Mixe"}, ["mxr"] = {"Murik (Malaysia)"}, ["mxs"] = {"Huitepec Mixtec"}, ["mxt"] = {"Jamiltepec Mixtec"}, ["mxu"] = {"Mada (Cameroon)"}, ["mxv"] = {"Metlatónoc Mixtec"}, ["mxw"] = {"Namo"}, ["mxx"] = {"Mahou", "Mawukakan"}, ["mxy"] = {"Southeastern Nochixtlán Mixtec"}, ["mxz"] = {"Central Masela"}, ["myb"] = {"Mbay"}, ["myc"] = {"Mayeka"}, ["mye"] = {"Myene"}, ["myf"] = {"Bambassi"}, ["myg"] = {"Manta"}, ["myh"] = {"Makah"}, ["myj"] = {"Mangayat"}, ["myk"] = {"Mamara Senoufo"}, ["myl"] = {"Moma"}, ["mym"] = {"Me'en"}, ["myn"] = {"Mayan languages"}, ["myo"] = {"Anfillo"}, ["myp"] = {"Pirahã"}, ["myr"] = {"Muniche"}, ["mys"] = {"Mesmes"}, ["myu"] = {"Mundurukú"}, ["myv"] = {"Erzya"}, ["myw"] = {"Muyuw"}, ["myx"] = {"Masaaba"}, ["myy"] = {"Macuna"}, ["myz"] = {"Classical Mandaic"}, ["mza"] = {"Santa María Zacatepec Mixtec"}, ["mzb"] = {"Tumzabt"}, ["mzc"] = {"Madagascar Sign Language"}, ["mzd"] = {"Malimba"}, ["mze"] = {"Morawa"}, ["mzg"] = {"Monastic Sign Language"}, ["mzh"] = {"Wichí Lhamtés Güisnay"}, ["mzi"] = {"Ixcatlán Mazatec"}, ["mzj"] = {"Manya"}, ["mzk"] = {"Nigeria Mambila"}, ["mzl"] = {"Mazatlán Mixe"}, ["mzm"] = {"Mumuye"}, ["mzn"] = {"Mazanderani"}, ["mzo"] = {"Matipuhy"}, ["mzp"] = {"Movima"}, ["mzq"] = {"Mori Atas"}, ["mzr"] = {"Marúbo"}, ["mzs"] = {"Macanese"}, ["mzt"] = {"Mintil"}, ["mzu"] = {"Inapang"}, ["mzv"] = {"Manza"}, ["mzw"] = {"Deg"}, ["mzx"] = {"Mawayana"}, ["mzy"] = {"Mozambican Sign Language"}, ["mzz"] = {"Maiadomu"}, ["naa"] = {"Namla"}, ["nab"] = {"Southern Nambikuára"}, ["nac"] = {"Narak"}, ["nae"] = {"Naka'ela"}, ["naf"] = {"Nabak"}, ["nag"] = {"Naga Pidgin"}, ["nah"] = {"Nahuatl languages"}, ["nai"] = {"North American Indian languages"}, ["naj"] = {"Nalu"}, ["nak"] = {"Nakanai"}, ["nal"] = {"Nalik"}, ["nam"] = {"Ngan'gityemerri"}, ["nan"] = {"Min Nan Chinese"}, ["nao"] = {"Naaba"}, ["nap"] = {"Neapolitan"}, ["naq"] = {"Khoekhoe", "Nama (Namibia)"}, ["nar"] = {"Iguta"}, ["nas"] = {"Naasioi"}, ["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"}, ["naw"] = {"Nawuri"}, ["nax"] = {"Nakwi"}, ["nay"] = {"Ngarrindjeri"}, ["naz"] = {"Coatepec Nahuatl"}, ["nba"] = {"Nyemba"}, ["nbb"] = {"Ndoe"}, ["nbc"] = {"Chang Naga"}, ["nbd"] = {"Ngbinda"}, ["nbe"] = {"Konyak Naga"}, ["nbg"] = {"Nagarchal"}, ["nbh"] = {"Ngamo"}, ["nbi"] = {"Mao Naga"}, ["nbj"] = {"Ngarinyman"}, ["nbk"] = {"Nake"}, ["nbm"] = {"Ngbaka Ma'bo"}, ["nbn"] = {"Kuri"}, ["nbo"] = {"Nkukoli"}, ["nbp"] = {"Nnam"}, ["nbq"] = {"Nggem"}, ["nbr"] = {"Numana"}, ["nbs"] = {"Namibian Sign Language"}, ["nbt"] = {"Na"}, ["nbu"] = {"Rongmei Naga"}, ["nbv"] = {"Ngamambo"}, ["nbw"] = {"Southern Ngbandi"}, ["nby"] = {"Ningera"}, ["nca"] = {"Iyo"}, ["ncb"] = {"Central Nicobarese"}, ["ncc"] = {"Ponam"}, ["ncd"] = {"Nachering"}, ["nce"] = {"Yale"}, ["ncf"] = {"Notsi"}, ["ncg"] = {"Nisga'a"}, ["nch"] = {"Central Huasteca Nahuatl"}, ["nci"] = {"Classical Nahuatl"}, ["ncj"] = {"Northern Puebla Nahuatl"}, ["nck"] = {"Na-kara"}, ["ncl"] = {"Michoacán Nahuatl"}, ["ncm"] = {"Nambo"}, ["ncn"] = {"Nauna"}, ["nco"] = {"Sibe"}, ["ncq"] = {"Northern Katang"}, ["ncr"] = {"Ncane"}, ["ncs"] = {"Nicaraguan Sign Language"}, ["nct"] = {"Chothe Naga"}, ["ncu"] = {"Chumburung"}, ["ncx"] = {"Central Puebla Nahuatl"}, ["ncz"] = {"Natchez"}, ["nda"] = {"Ndasa"}, ["ndb"] = {"Kenswei Nsei"}, ["ndc"] = {"Ndau"}, ["ndd"] = {"Nde-Nsele-Nta"}, ["ndf"] = {"Nadruvian"}, ["ndg"] = {"Ndengereko"}, ["ndh"] = {"Ndali"}, ["ndi"] = {"Samba Leko"}, ["ndj"] = {"Ndamba"}, ["ndk"] = {"Ndaka"}, ["ndl"] = {"Ndolo"}, ["ndm"] = {"Ndam"}, ["ndn"] = {"Ngundi"}, ["ndp"] = {"Ndo"}, ["ndq"] = {"Ndombe"}, ["ndr"] = {"Ndoola"}, ["nds"] = {"Low German", "Low Saxon"}, ["ndt"] = {"Ndunga"}, ["ndu"] = {"Dugun"}, ["ndv"] = {"Ndut"}, ["ndw"] = {"Ndobo"}, ["ndx"] = {"Nduga"}, ["ndy"] = {"Lutos"}, ["ndz"] = {"Ndogo"}, ["nea"] = {"Eastern Ngad'a"}, ["neb"] = {"Toura (Côte d'Ivoire)"}, ["nec"] = {"Nedebang"}, ["ned"] = {"Nde-Gbite"}, ["nee"] = {"Nêlêmwa-Nixumwak"}, ["nef"] = {"Nefamese"}, ["neg"] = {"Negidal"}, ["neh"] = {"Nyenkha"}, ["nei"] = {"Neo-Hittite"}, ["nej"] = {"Neko"}, ["nek"] = {"Neku"}, ["nem"] = {"Nemi"}, ["nen"] = {"Nengone"}, ["neo"] = {"Ná-Meo"}, ["neq"] = {"North Central Mixe"}, ["ner"] = {"Yahadian"}, ["nes"] = {"Bhoti Kinnauri"}, ["net"] = {"Nete"}, ["neu"] = {"Neo"}, ["nev"] = {"Nyaheun"}, ["new"] = {"Newari", "Nepal Bhasa"}, ["nex"] = {"Neme"}, ["ney"] = {"Neyo"}, ["nez"] = {"Nez Perce"}, ["nfa"] = {"Dhao"}, ["nfd"] = {"Ahwai"}, ["nfl"] = {"Ayiwo", "Äiwoo"}, ["nfr"] = {"Nafaanra"}, ["nfu"] = {"Mfumte"}, ["nga"] = {"Ngbaka"}, ["ngb"] = {"Northern Ngbandi"}, ["ngc"] = {"Ngombe (Democratic Republic of Congo)"}, ["ngd"] = {"Ngando (Central African Republic)"}, ["nge"] = {"Ngemba"}, ["ngf"] = {"Trans-New Guinea languages"}, ["ngg"] = {"Ngbaka Manza"}, ["ngh"] = {"Nǁng"}, ["ngi"] = {"Ngizim"}, ["ngj"] = {"Ngie"}, ["ngk"] = {"Dalabon"}, ["ngl"] = {"Lomwe"}, ["ngm"] = {"Ngatik Men's Creole"}, ["ngn"] = {"Ngwo"}, ["ngp"] = {"Ngulu"}, ["ngq"] = {"Ngurimi", "Ngoreme"}, ["ngr"] = {"Engdewu"}, ["ngs"] = {"Gvoko"}, ["ngt"] = {"Kriang", "Ngeq"}, ["ngu"] = {"Guerrero Nahuatl"}, ["ngv"] = {"Nagumi"}, ["ngw"] = {"Ngwaba"}, ["ngx"] = {"Nggwahyi"}, ["ngy"] = {"Tibea"}, ["ngz"] = {"Ngungwel"}, ["nha"] = {"Nhanda"}, ["nhb"] = {"Beng"}, ["nhc"] = {"Tabasco Nahuatl"}, ["nhd"] = {"Chiripá", "Ava Guaraní"}, ["nhe"] = {"Eastern Huasteca Nahuatl"}, ["nhf"] = {"Nhuwala"}, ["nhg"] = {"Tetelcingo Nahuatl"}, ["nhh"] = {"Nahari"}, ["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"}, ["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"}, ["nhm"] = {"Morelos Nahuatl"}, ["nhn"] = {"Central Nahuatl"}, ["nho"] = {"Takuu"}, ["nhp"] = {"Isthmus-Pajapan Nahuatl"}, ["nhq"] = {"Huaxcaleca Nahuatl"}, ["nhr"] = {"Naro"}, ["nht"] = {"Ometepec Nahuatl"}, ["nhu"] = {"Noone"}, ["nhv"] = {"Temascaltepec Nahuatl"}, ["nhw"] = {"Western Huasteca Nahuatl"}, ["nhx"] = {"Isthmus-Mecayapan Nahuatl"}, ["nhy"] = {"Northern Oaxaca Nahuatl"}, ["nhz"] = {"Santa María La Alta Nahuatl"}, ["nia"] = {"Nias"}, ["nib"] = {"Nakame"}, ["nic"] = {"Niger-Kordofanian languages"}, ["nid"] = {"Ngandi"}, ["nie"] = {"Niellim"}, ["nif"] = {"Nek"}, ["nig"] = {"Ngalakgan"}, ["nih"] = {"Nyiha (Tanzania)"}, ["nii"] = {"Nii"}, ["nij"] = {"Ngaju"}, ["nik"] = {"Southern Nicobarese"}, ["nil"] = {"Nila"}, ["nim"] = {"Nilamba"}, ["nin"] = {"Ninzo"}, ["nio"] = {"Nganasan"}, ["niq"] = {"Nandi"}, ["nir"] = {"Nimboran"}, ["nis"] = {"Nimi"}, ["nit"] = {"Southeastern Kolami"}, ["niu"] = {"Niuean"}, ["niv"] = {"Gilyak"}, ["niw"] = {"Nimo"}, ["nix"] = {"Hema"}, ["niy"] = {"Ngiti"}, ["niz"] = {"Ningil"}, ["nja"] = {"Nzanyi"}, ["njb"] = {"Nocte Naga"}, ["njd"] = {"Ndonde Hamba"}, ["njh"] = {"Lotha Naga"}, ["nji"] = {"Gudanji"}, ["njj"] = {"Njen"}, ["njl"] = {"Njalgulgule"}, ["njm"] = {"Angami Naga"}, ["njn"] = {"Liangmai Naga"}, ["njo"] = {"Ao Naga"}, ["njr"] = {"Njerep"}, ["njs"] = {"Nisa"}, ["njt"] = {"Ndyuka-Trio Pidgin"}, ["nju"] = {"Ngadjunmaya"}, ["njx"] = {"Kunyi"}, ["njy"] = {"Njyem"}, ["njz"] = {"Nyishi"}, ["nka"] = {"Nkoya"}, ["nkb"] = {"Khoibu Naga"}, ["nkc"] = {"Nkongho"}, ["nkd"] = {"Koireng"}, ["nke"] = {"Duke"}, ["nkf"] = {"Inpui Naga"}, ["nkg"] = {"Nekgini"}, ["nkh"] = {"Khezha Naga"}, ["nki"] = {"Thangal Naga"}, ["nkj"] = {"Nakai"}, ["nkk"] = {"Nokuku"}, ["nkm"] = {"Namat"}, ["nkn"] = {"Nkangala"}, ["nko"] = {"Nkonya"}, ["nkp"] = {"Niuatoputapu"}, ["nkq"] = {"Nkami"}, ["nkr"] = {"Nukuoro"}, ["nks"] = {"North Asmat"}, ["nkt"] = {"Nyika (Tanzania)"}, ["nku"] = {"Bouna Kulango"}, ["nkv"] = {"Nyika (Malawi and Zambia)"}, ["nkw"] = {"Nkutu"}, ["nkx"] = {"Nkoroo"}, ["nkz"] = {"Nkari"}, ["nla"] = {"Ngombale"}, ["nlc"] = {"Nalca"}, ["nle"] = {"East Nyala"}, ["nlg"] = {"Gela"}, ["nli"] = {"Grangali"}, ["nlj"] = {"Nyali"}, ["nlk"] = {"Ninia Yali"}, ["nll"] = {"Nihali"}, ["nlm"] = {"Mankiyali"}, ["nlo"] = {"Ngul"}, ["nlq"] = {"Lao Naga"}, ["nlu"] = {"Nchumbulu"}, ["nlv"] = {"Orizaba Nahuatl"}, ["nlw"] = {"Walangama"}, ["nlx"] = {"Nahali"}, ["nly"] = {"Nyamal"}, ["nlz"] = {"Nalögo"}, ["nma"] = {"Maram Naga"}, ["nmb"] = {"Big Nambas", "V'ënen Taut"}, ["nmc"] = {"Ngam"}, ["nmd"] = {"Ndumu"}, ["nme"] = {"Mzieme Naga"}, ["nmf"] = {"Tangkhul Naga (India)"}, ["nmg"] = {"Kwasio"}, ["nmh"] = {"Monsang Naga"}, ["nmi"] = {"Nyam"}, ["nmj"] = {"Ngombe (Central African Republic)"}, ["nmk"] = {"Namakura"}, ["nml"] = {"Ndemli"}, ["nmm"] = {"Manangba"}, ["nmn"] = {"ǃXóõ"}, ["nmo"] = {"Moyon Naga"}, ["nmp"] = {"Nimanbur"}, ["nmq"] = {"Nambya"}, ["nmr"] = {"Nimbari"}, ["nms"] = {"Letemboi"}, ["nmt"] = {"Namonuito"}, ["nmu"] = {"Northeast Maidu"}, ["nmv"] = {"Ngamini"}, ["nmw"] = {"Nimoa", "Rifao"}, ["nmx"] = {"Nama (Papua New Guinea)"}, ["nmy"] = {"Namuyi"}, ["nmz"] = {"Nawdm"}, ["nna"] = {"Nyangumarta"}, ["nnb"] = {"Nande"}, ["nnc"] = {"Nancere"}, ["nnd"] = {"West Ambae"}, ["nne"] = {"Ngandyera"}, ["nnf"] = {"Ngaing"}, ["nng"] = {"Maring Naga"}, ["nnh"] = {"Ngiemboon"}, ["nni"] = {"North Nuaulu"}, ["nnj"] = {"Nyangatom"}, ["nnk"] = {"Nankina"}, ["nnl"] = {"Northern Rengma Naga"}, ["nnm"] = {"Namia"}, ["nnn"] = {"Ngete"}, ["nnp"] = {"Wancho Naga"}, ["nnq"] = {"Ngindo"}, ["nnr"] = {"Narungga"}, ["nnt"] = {"Nanticoke"}, ["nnu"] = {"Dwang"}, ["nnv"] = {"Nugunu (Australia)"}, ["nnw"] = {"Southern Nuni"}, ["nny"] = {"Nyangga"}, ["nnz"] = {"Nda'nda'"}, ["noa"] = {"Woun Meu"}, ["noc"] = {"Nuk"}, ["nod"] = {"Northern Thai"}, ["noe"] = {"Nimadi"}, ["nof"] = {"Nomane"}, ["nog"] = {"Nogai"}, ["noh"] = {"Nomu"}, ["noi"] = {"Noiri"}, ["noj"] = {"Nonuya"}, ["nok"] = {"Nooksack"}, ["nol"] = {"Nomlaki"}, ["non"] = {"Old Norse"}, ["nop"] = {"Numanggang"}, ["noq"] = {"Ngongo"}, ["nos"] = {"Eastern Nisu"}, ["not"] = {"Nomatsiguenga"}, ["nou"] = {"Ewage-Notu"}, ["nov"] = {"Novial"}, ["now"] = {"Nyambo"}, ["noy"] = {"Noy"}, ["noz"] = {"Nayi"}, ["npa"] = {"Nar Phu"}, ["npb"] = {"Nupbikha"}, ["npg"] = {"Ponyo-Gongwang Naga"}, ["nph"] = {"Phom Naga"}, ["npi"] = {"Nepali (individual language)"}, ["npl"] = {"Southeastern Puebla Nahuatl"}, ["npn"] = {"Mondropolon"}, ["npo"] = {"Pochuri Naga"}, ["nps"] = {"Nipsan"}, ["npu"] = {"Puimei Naga"}, ["npx"] = {"Noipx"}, ["npy"] = {"Napu"}, ["nqg"] = {"Southern Nago"}, ["nqk"] = {"Kura Ede Nago"}, ["nql"] = {"Ngendelengo"}, ["nqm"] = {"Ndom"}, ["nqn"] = {"Nen"}, ["nqo"] = {"N'Ko", "N’Ko"}, ["nqq"] = {"Kyan-Karyaw Naga"}, ["nqt"] = {"Nteng"}, ["nqy"] = {"Akyaung Ari Naga"}, ["nra"] = {"Ngom"}, ["nrb"] = {"Nara"}, ["nrc"] = {"Noric"}, ["nre"] = {"Southern Rengma Naga"}, ["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"}, ["nrg"] = {"Narango"}, ["nri"] = {"Chokri Naga"}, ["nrk"] = {"Ngarla"}, ["nrl"] = {"Ngarluma"}, ["nrm"] = {"Narom"}, ["nrn"] = {"Norn"}, ["nrp"] = {"North Picene"}, ["nrr"] = {"Norra", "Nora"}, ["nrt"] = {"Northern Kalapuya"}, ["nru"] = {"Narua"}, ["nrx"] = {"Ngurmbur"}, ["nrz"] = {"Lala"}, ["nsa"] = {"Sangtam Naga"}, ["nsb"] = {"Lower Nossob"}, ["nsc"] = {"Nshi"}, ["nsd"] = {"Southern Nisu"}, ["nse"] = {"Nsenga"}, ["nsf"] = {"Northwestern Nisu"}, ["nsg"] = {"Ngasa"}, ["nsh"] = {"Ngoshie"}, ["nsi"] = {"Nigerian Sign Language"}, ["nsk"] = {"Naskapi"}, ["nsl"] = {"Norwegian Sign Language"}, ["nsm"] = {"Sumi Naga"}, ["nsn"] = {"Nehan"}, ["nso"] = {"Pedi", "Northern Sotho", "Sepedi"}, ["nsp"] = {"Nepalese Sign Language"}, ["nsq"] = {"Northern Sierra Miwok"}, ["nsr"] = {"Maritime Sign Language"}, ["nss"] = {"Nali"}, ["nst"] = {"Tase Naga"}, ["nsu"] = {"Sierra Negra Nahuatl"}, ["nsv"] = {"Southwestern Nisu"}, ["nsw"] = {"Navut"}, ["nsx"] = {"Nsongo"}, ["nsy"] = {"Nasal"}, ["nsz"] = {"Nisenan"}, ["ntd"] = {"Northern Tidung"}, ["nte"] = {"Nathembo"}, ["ntg"] = {"Ngantangarra"}, ["nti"] = {"Natioro"}, ["ntj"] = {"Ngaanyatjarra"}, ["ntk"] = {"Ikoma-Nata-Isenye"}, ["ntm"] = {"Nateni"}, ["nto"] = {"Ntomba"}, ["ntp"] = {"Northern Tepehuan"}, ["ntr"] = {"Delo"}, ["ntu"] = {"Natügu"}, ["ntw"] = {"Nottoway"}, ["ntx"] = {"Tangkhul Naga (Myanmar)"}, ["nty"] = {"Mantsi"}, ["ntz"] = {"Natanzi"}, ["nua"] = {"Yuanga"}, ["nub"] = {"Nubian languages"}, ["nuc"] = {"Nukuini"}, ["nud"] = {"Ngala"}, ["nue"] = {"Ngundu"}, ["nuf"] = {"Nusu"}, ["nug"] = {"Nungali"}, ["nuh"] = {"Ndunda"}, ["nui"] = {"Ngumbi"}, ["nuj"] = {"Nyole"}, ["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"}, ["nul"] = {"Nusa Laut"}, ["num"] = {"Niuafo'ou"}, ["nun"] = {"Anong"}, ["nuo"] = {"Nguôn"}, ["nup"] = {"Nupe-Nupe-Tako"}, ["nuq"] = {"Nukumanu"}, ["nur"] = {"Nukuria"}, ["nus"] = {"Nuer"}, ["nut"] = {"Nung (Viet Nam)"}, ["nuu"] = {"Ngbundu"}, ["nuv"] = {"Northern Nuni"}, ["nuw"] = {"Nguluwan"}, ["nux"] = {"Mehek"}, ["nuy"] = {"Nunggubuyu"}, ["nuz"] = {"Tlamacazapa Nahuatl"}, ["nvh"] = {"Nasarian"}, ["nvm"] = {"Namiae"}, ["nvo"] = {"Nyokon"}, ["nwa"] = {"Nawathinehena"}, ["nwb"] = {"Nyabwa"}, ["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"}, ["nwe"] = {"Ngwe"}, ["nwg"] = {"Ngayawung"}, ["nwi"] = {"Southwest Tanna"}, ["nwm"] = {"Nyamusa-Molo"}, ["nwo"] = {"Nauo"}, ["nwr"] = {"Nawaru"}, ["nww"] = {"Ndwewe"}, ["nwx"] = {"Middle Newar"}, ["nwy"] = {"Nottoway-Meherrin"}, ["nxa"] = {"Nauete"}, ["nxd"] = {"Ngando (Democratic Republic of Congo)"}, ["nxe"] = {"Nage"}, ["nxg"] = {"Ngad'a"}, ["nxi"] = {"Nindi"}, ["nxk"] = {"Koki Naga"}, ["nxl"] = {"South Nuaulu"}, ["nxm"] = {"Numidian"}, ["nxn"] = {"Ngawun"}, ["nxo"] = {"Ndambomo"}, ["nxq"] = {"Naxi"}, ["nxr"] = {"Ninggerum"}, ["nxx"] = {"Nafri"}, ["nyb"] = {"Nyangbo"}, ["nyc"] = {"Nyanga-li"}, ["nyd"] = {"Nyore", "Olunyole"}, ["nye"] = {"Nyengo"}, ["nyf"] = {"Giryama", "Kigiryama"}, ["nyg"] = {"Nyindu"}, ["nyh"] = {"Nyikina"}, ["nyi"] = {"Ama (Sudan)"}, ["nyj"] = {"Nyanga"}, ["nyk"] = {"Nyaneka"}, ["nyl"] = {"Nyeu"}, ["nym"] = {"Nyamwezi"}, ["nyn"] = {"Nyankole"}, ["nyo"] = {"Nyoro"}, ["nyp"] = {"Nyang'i"}, ["nyq"] = {"Nayini"}, ["nyr"] = {"Nyiha (Malawi)"}, ["nys"] = {"Nyungar"}, ["nyt"] = {"Nyawaygi"}, ["nyu"] = {"Nyungwe"}, ["nyv"] = {"Nyulnyul"}, ["nyw"] = {"Nyaw"}, ["nyx"] = {"Nganyaywana"}, ["nyy"] = {"Nyakyusa-Ngonde"}, ["nza"] = {"Tigon Mbembe"}, ["nzb"] = {"Njebi"}, ["nzd"] = {"Nzadi"}, ["nzi"] = {"Nzima"}, ["nzk"] = {"Nzakara"}, ["nzm"] = {"Zeme Naga"}, ["nzr"] = {"Dir-Nyamzak-Mbarimi"}, ["nzs"] = {"New Zealand Sign Language"}, ["nzu"] = {"Teke-Nzikou"}, ["nzy"] = {"Nzakambay"}, ["nzz"] = {"Nanga Dama Dogon"}, ["oaa"] = {"Orok"}, ["oac"] = {"Oroch"}, ["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"}, ["oav"] = {"Old Avar"}, ["obi"] = {"Obispeño"}, ["obk"] = {"Southern Bontok"}, ["obl"] = {"Oblo"}, ["obm"] = {"Moabite"}, ["obo"] = {"Obo Manobo"}, ["obr"] = {"Old Burmese"}, ["obt"] = {"Old Breton"}, ["obu"] = {"Obulom"}, ["oca"] = {"Ocaina"}, ["och"] = {"Old Chinese"}, ["ocm"] = {"Old Cham"}, ["oco"] = {"Old Cornish"}, ["ocu"] = {"Atzingo Matlatzinca"}, ["oda"] = {"Odut"}, ["odk"] = {"Od"}, ["odt"] = {"Old Dutch"}, ["odu"] = {"Odual"}, ["ofo"] = {"Ofo"}, ["ofs"] = {"Old Frisian"}, ["ofu"] = {"Efutop"}, ["ogb"] = {"Ogbia"}, ["ogc"] = {"Ogbah"}, ["oge"] = {"Old Georgian"}, ["ogg"] = {"Ogbogolo"}, ["ogo"] = {"Khana"}, ["ogu"] = {"Ogbronuagum"}, ["oht"] = {"Old Hittite"}, ["ohu"] = {"Old Hungarian"}, ["oia"] = {"Oirata"}, ["oie"] = {"Okolie"}, ["oin"] = {"Inebu One"}, ["ojb"] = {"Northwestern Ojibwa"}, ["ojc"] = {"Central Ojibwa"}, ["ojg"] = {"Eastern Ojibwa"}, ["ojp"] = {"Old Japanese"}, ["ojs"] = {"Severn Ojibwa"}, ["ojv"] = {"Ontong Java"}, ["ojw"] = {"Western Ojibwa"}, ["oka"] = {"Okanagan"}, ["okb"] = {"Okobo"}, ["okc"] = {"Kobo"}, ["okd"] = {"Okodia"}, ["oke"] = {"Okpe (Southwestern Edo)"}, ["okg"] = {"Koko Babangk"}, ["okh"] = {"Koresh-e Rostam"}, ["oki"] = {"Okiek"}, ["okj"] = {"Oko-Juwoi"}, ["okk"] = {"Kwamtim One"}, ["okl"] = {"Old Kentish Sign Language"}, ["okm"] = {"Middle Korean (10th-16th cent.)"}, ["okn"] = {"Oki-No-Erabu"}, ["oko"] = {"Old Korean (3rd-9th cent.)"}, ["okr"] = {"Kirike"}, ["oks"] = {"Oko-Eni-Osayen"}, ["oku"] = {"Oku"}, ["okv"] = {"Orokaiva"}, ["okx"] = {"Okpe (Northwestern Edo)"}, ["okz"] = {"Old Khmer"}, ["ola"] = {"Walungge"}, ["old"] = {"Mochi"}, ["ole"] = {"Olekha"}, ["olk"] = {"Olkol"}, ["olm"] = {"Oloma"}, ["olo"] = {"Livvi"}, ["olr"] = {"Olrat"}, ["olt"] = {"Old Lithuanian"}, ["olu"] = {"Kuvale"}, ["oma"] = {"Omaha-Ponca"}, ["omb"] = {"East Ambae"}, ["omc"] = {"Mochica"}, ["omg"] = {"Omagua"}, ["omi"] = {"Omi"}, ["omk"] = {"Omok"}, ["oml"] = {"Ombo"}, ["omn"] = {"Minoan"}, ["omo"] = {"Utarmbung"}, ["omp"] = {"Old Manipuri"}, ["omq"] = {"Oto-Manguean languages"}, ["omr"] = {"Old Marathi"}, ["omt"] = {"Omotik"}, ["omu"] = {"Omurano"}, ["omv"] = {"Omotic languages"}, ["omw"] = {"South Tairora"}, ["omx"] = {"Old Mon"}, ["omy"] = {"Old Malay"}, ["ona"] = {"Ona"}, ["onb"] = {"Lingao"}, ["one"] = {"Oneida"}, ["ong"] = {"Olo"}, ["oni"] = {"Onin"}, ["onj"] = {"Onjob"}, ["onk"] = {"Kabore One"}, ["onn"] = {"Onobasulu"}, ["ono"] = {"Onondaga"}, ["onp"] = {"Sartang"}, ["onr"] = {"Northern One"}, ["ons"] = {"Ono"}, ["ont"] = {"Ontenu"}, ["onu"] = {"Unua"}, ["onw"] = {"Old Nubian"}, ["onx"] = {"Onin Based Pidgin"}, ["ood"] = {"Tohono O'odham"}, ["oog"] = {"Ong"}, ["oon"] = {"Önge"}, ["oor"] = {"Oorlams"}, ["oos"] = {"Old Ossetic"}, ["opa"] = {"Okpamheri"}, ["opk"] = {"Kopkaka"}, ["opm"] = {"Oksapmin"}, ["opo"] = {"Opao"}, ["opt"] = {"Opata"}, ["opy"] = {"Ofayé"}, ["ora"] = {"Oroha"}, ["orc"] = {"Orma"}, ["ore"] = {"Orejón"}, ["org"] = {"Oring"}, ["orh"] = {"Oroqen"}, ["orn"] = {"Orang Kanaq"}, ["oro"] = {"Orokolo"}, ["orr"] = {"Oruma"}, ["ors"] = {"Orang Seletar"}, ["ort"] = {"Adivasi Oriya"}, ["oru"] = {"Ormuri"}, ["orv"] = {"Old Russian"}, ["orw"] = {"Oro Win"}, ["orx"] = {"Oro"}, ["ory"] = {"Odia (individual language)", "Oriya (individual language)"}, ["orz"] = {"Ormu"}, ["osa"] = {"Osage"}, ["osc"] = {"Oscan"}, ["osi"] = {"Osing"}, ["osn"] = {"Old Sundanese"}, ["oso"] = {"Ososo"}, ["osp"] = {"Old Spanish"}, ["ost"] = {"Osatu"}, ["osu"] = {"Southern One"}, ["osx"] = {"Old Saxon"}, ["ota"] = {"Ottoman Turkish (1500-1928)"}, ["otb"] = {"Old Tibetan"}, ["otd"] = {"Ot Danum"}, ["ote"] = {"Mezquital Otomi"}, ["oti"] = {"Oti"}, ["otk"] = {"Old Turkish"}, ["otl"] = {"Tilapa Otomi"}, ["otm"] = {"Eastern Highland Otomi"}, ["otn"] = {"Tenango Otomi"}, ["oto"] = {"Otomian languages"}, ["otq"] = {"Querétaro Otomi"}, ["otr"] = {"Otoro"}, ["ots"] = {"Estado de México Otomi"}, ["ott"] = {"Temoaya Otomi"}, ["otu"] = {"Otuke"}, ["otw"] = {"Ottawa"}, ["otx"] = {"Texcatepec Otomi"}, ["oty"] = {"Old Tamil"}, ["otz"] = {"Ixtenco Otomi"}, ["oua"] = {"Tagargrent"}, ["oub"] = {"Glio-Oubi"}, ["oue"] = {"Oune"}, ["oui"] = {"Old Uighur"}, ["oum"] = {"Ouma"}, ["ovd"] = {"Elfdalian", "Övdalian"}, ["owi"] = {"Owiniga"}, ["owl"] = {"Old Welsh"}, ["oyb"] = {"Oy"}, ["oyd"] = {"Oyda"}, ["oym"] = {"Wayampi"}, ["oyy"] = {"Oya'oya"}, ["ozm"] = {"Koonzime"}, ["paa"] = {"Papuan languages"}, ["pab"] = {"Parecís"}, ["pac"] = {"Pacoh"}, ["pad"] = {"Paumarí"}, ["pae"] = {"Pagibete"}, ["paf"] = {"Paranawát"}, ["pag"] = {"Pangasinan"}, ["pah"] = {"Tenharim"}, ["pai"] = {"Pe"}, ["pak"] = {"Parakanã"}, ["pal"] = {"Pahlavi"}, ["pam"] = {"Pampanga", "Kapampangan"}, ["pao"] = {"Northern Paiute"}, ["pap"] = {"Papiamento"}, ["paq"] = {"Parya"}, ["par"] = {"Panamint", "Timbisha"}, ["pas"] = {"Papasena"}, ["pau"] = {"Palauan"}, ["pav"] = {"Pakaásnovos"}, ["paw"] = {"Pawnee"}, ["pax"] = {"Pankararé"}, ["pay"] = {"Pech"}, ["paz"] = {"Pankararú"}, ["pbb"] = {"Páez"}, ["pbc"] = {"Patamona"}, ["pbe"] = {"Mezontla Popoloca"}, ["pbf"] = {"Coyotepec Popoloca"}, ["pbg"] = {"Paraujano"}, ["pbh"] = {"E'ñapa Woromaipu"}, ["pbi"] = {"Parkwa"}, ["pbl"] = {"Mak (Nigeria)"}, ["pbm"] = {"Puebla Mazatec"}, ["pbn"] = {"Kpasam"}, ["pbo"] = {"Papel"}, ["pbp"] = {"Badyara"}, ["pbr"] = {"Pangwa"}, ["pbs"] = {"Central Pame"}, ["pbt"] = {"Southern Pashto"}, ["pbu"] = {"Northern Pashto"}, ["pbv"] = {"Pnar"}, ["pby"] = {"Pyu (Papua New Guinea)"}, ["pca"] = {"Santa Inés Ahuatempan Popoloca"}, ["pcb"] = {"Pear"}, ["pcc"] = {"Bouyei"}, ["pcd"] = {"Picard"}, ["pce"] = {"Ruching Palaung"}, ["pcf"] = {"Paliyan"}, ["pcg"] = {"Paniya"}, ["pch"] = {"Pardhan"}, ["pci"] = {"Duruwa"}, ["pcj"] = {"Parenga"}, ["pck"] = {"Paite Chin"}, ["pcl"] = {"Pardhi"}, ["pcm"] = {"Nigerian Pidgin"}, ["pcn"] = {"Piti"}, ["pcp"] = {"Pacahuara"}, ["pcw"] = {"Pyapun"}, ["pda"] = {"Anam"}, ["pdc"] = {"Pennsylvania German"}, ["pdi"] = {"Pa Di"}, ["pdn"] = {"Podena", "Fedan"}, ["pdo"] = {"Padoe"}, ["pdt"] = {"Plautdietsch"}, ["pdu"] = {"Kayan"}, ["pea"] = {"Peranakan Indonesian"}, ["peb"] = {"Eastern Pomo"}, ["ped"] = {"Mala (Papua New Guinea)"}, ["pee"] = {"Taje"}, ["pef"] = {"Northeastern Pomo"}, ["peg"] = {"Pengo"}, ["peh"] = {"Bonan"}, ["pei"] = {"Chichimeca-Jonaz"}, ["pej"] = {"Northern Pomo"}, ["pek"] = {"Penchal"}, ["pel"] = {"Pekal"}, ["pem"] = {"Phende"}, ["peo"] = {"Old Persian (ca. 600-400 B.C.)"}, ["pep"] = {"Kunja"}, ["peq"] = {"Southern Pomo"}, ["pes"] = {"Iranian Persian"}, ["pev"] = {"Pémono"}, ["pex"] = {"Petats"}, ["pey"] = {"Petjo"}, ["pez"] = {"Eastern Penan"}, ["pfa"] = {"Pááfang"}, ["pfe"] = {"Pere"}, ["pfl"] = {"Pfaelzisch"}, ["pga"] = {"Sudanese Creole Arabic"}, ["pgd"] = {"Gāndhārī"}, ["pgg"] = {"Pangwali"}, ["pgi"] = {"Pagi"}, ["pgk"] = {"Rerep"}, ["pgl"] = {"Primitive Irish"}, ["pgn"] = {"Paelignian"}, ["pgs"] = {"Pangseng"}, ["pgu"] = {"Pagu"}, ["pgz"] = {"Papua New Guinean Sign Language"}, ["pha"] = {"Pa-Hng"}, ["phd"] = {"Phudagi"}, ["phg"] = {"Phuong"}, ["phh"] = {"Phukha"}, ["phi"] = {"Philippine languages"}, ["phj"] = {"Pahari"}, ["phk"] = {"Phake"}, ["phl"] = {"Phalura", "Palula"}, ["phm"] = {"Phimbi"}, ["phn"] = {"Phoenician"}, ["pho"] = {"Phunoi"}, ["phq"] = {"Phana'"}, ["phr"] = {"Pahari-Potwari"}, ["pht"] = {"Phu Thai"}, ["phu"] = {"Phuan"}, ["phv"] = {"Pahlavani"}, ["phw"] = {"Phangduwali"}, ["pia"] = {"Pima Bajo"}, ["pib"] = {"Yine"}, ["pic"] = {"Pinji"}, ["pid"] = {"Piaroa"}, ["pie"] = {"Piro"}, ["pif"] = {"Pingelapese"}, ["pig"] = {"Pisabo"}, ["pih"] = {"Pitcairn-Norfolk"}, ["pij"] = {"Pijao"}, ["pil"] = {"Yom"}, ["pim"] = {"Powhatan"}, ["pin"] = {"Piame"}, ["pio"] = {"Piapoco"}, ["pip"] = {"Pero"}, ["pir"] = {"Piratapuyo"}, ["pis"] = {"Pijin"}, ["pit"] = {"Pitta Pitta"}, ["piu"] = {"Pintupi-Luritja"}, ["piv"] = {"Pileni", "Vaeakau-Taumako"}, ["piw"] = {"Pimbwe"}, ["pix"] = {"Piu"}, ["piy"] = {"Piya-Kwonci"}, ["piz"] = {"Pije"}, ["pjt"] = {"Pitjantjatjara"}, ["pka"] = {"Ardhamāgadhī Prākrit"}, ["pkb"] = {"Pokomo", "Kipfokomo"}, ["pkc"] = {"Paekche"}, ["pkg"] = {"Pak-Tong"}, ["pkh"] = {"Pankhu"}, ["pkn"] = {"Pakanha"}, ["pko"] = {"Pökoot"}, ["pkp"] = {"Pukapuka"}, ["pkr"] = {"Attapady Kurumba"}, ["pks"] = {"Pakistan Sign Language"}, ["pkt"] = {"Maleng"}, ["pku"] = {"Paku"}, ["pla"] = {"Miani"}, ["plb"] = {"Polonombauk"}, ["plc"] = {"Central Palawano"}, ["pld"] = {"Polari"}, ["ple"] = {"Palu'e"}, ["plf"] = {"Central Malayo-Polynesian languages"}, ["plg"] = {"Pilagá"}, ["plh"] = {"Paulohi"}, ["plk"] = {"Kohistani Shina"}, ["pll"] = {"Shwe Palaung"}, ["pln"] = {"Palenquero"}, ["plo"] = {"Oluta Popoluca"}, ["plq"] = {"Palaic"}, ["plr"] = {"Palaka Senoufo"}, ["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"}, ["plt"] = {"Plateau Malagasy"}, ["plu"] = {"Palikúr"}, ["plv"] = {"Southwest Palawano"}, ["plw"] = {"Brooke's Point Palawano"}, ["ply"] = {"Bolyu"}, ["plz"] = {"Paluan"}, ["pma"] = {"Paama"}, ["pmb"] = {"Pambia"}, ["pmd"] = {"Pallanganmiddang"}, ["pme"] = {"Pwaamei"}, ["pmf"] = {"Pamona"}, ["pmh"] = {"Māhārāṣṭri Prākrit"}, ["pmi"] = {"Northern Pumi"}, ["pmj"] = {"Southern Pumi"}, ["pml"] = {"Lingua Franca"}, ["pmm"] = {"Pomo"}, ["pmn"] = {"Pam"}, ["pmo"] = {"Pom"}, ["pmq"] = {"Northern Pame"}, ["pmr"] = {"Paynamar"}, ["pms"] = {"Piemontese"}, ["pmt"] = {"Tuamotuan"}, ["pmw"] = {"Plains Miwok"}, ["pmx"] = {"Poumei Naga"}, ["pmy"] = {"Papuan Malay"}, ["pmz"] = {"Southern Pame"}, ["pna"] = {"Punan Bah-Biau"}, ["pnb"] = {"Western Panjabi"}, ["pnc"] = {"Pannei"}, ["pnd"] = {"Mpinda"}, ["pne"] = {"Western Penan"}, ["png"] = {"Pangu", "Pongu"}, ["pnh"] = {"Penrhyn"}, ["pni"] = {"Aoheng"}, ["pnj"] = {"Pinjarup"}, ["pnk"] = {"Paunaka"}, ["pnl"] = {"Paleni"}, ["pnm"] = {"Punan Batu 1"}, ["pnn"] = {"Pinai-Hagahai"}, ["pno"] = {"Panobo"}, ["pnp"] = {"Pancana"}, ["pnq"] = {"Pana (Burkina Faso)"}, ["pnr"] = {"Panim"}, ["pns"] = {"Ponosakan"}, ["pnt"] = {"Pontic"}, ["pnu"] = {"Jiongnai Bunu"}, ["pnv"] = {"Pinigura"}, ["pnw"] = {"Banyjima", "Panytyima"}, ["pnx"] = {"Phong-Kniang"}, ["pny"] = {"Pinyin"}, ["pnz"] = {"Pana (Central African Republic)"}, ["poc"] = {"Poqomam"}, ["poe"] = {"San Juan Atzingo Popoloca"}, ["pof"] = {"Poke"}, ["pog"] = {"Potiguára"}, ["poh"] = {"Poqomchi'"}, ["poi"] = {"Highland Popoluca"}, ["pok"] = {"Pokangá"}, ["pom"] = {"Southeastern Pomo"}, ["pon"] = {"Pohnpeian"}, ["poo"] = {"Central Pomo"}, ["pop"] = {"Pwapwâ"}, ["poq"] = {"Texistepec Popoluca"}, ["pos"] = {"Sayula Popoluca"}, ["pot"] = {"Potawatomi"}, ["pov"] = {"Upper Guinea Crioulo"}, ["pow"] = {"San Felipe Otlaltepec Popoloca"}, ["pox"] = {"Polabian"}, ["poy"] = {"Pogolo"}, ["poz"] = {"Malayo-Polynesian languages"}, ["ppe"] = {"Papi"}, ["ppi"] = {"Paipai"}, ["ppk"] = {"Uma"}, ["ppl"] = {"Pipil", "Nicarao"}, ["ppm"] = {"Papuma"}, ["ppn"] = {"Papapana"}, ["ppo"] = {"Folopa"}, ["ppp"] = {"Pelende"}, ["ppq"] = {"Pei"}, ["pps"] = {"San Luís Temalacayuca Popoloca"}, ["ppt"] = {"Pare"}, ["ppu"] = {"Papora"}, ["pqa"] = {"Pa'a"}, ["pqe"] = {"Eastern Malayo-Polynesian languages"}, ["pqm"] = {"Malecite-Passamaquoddy"}, ["pqw"] = {"Western Malayo-Polynesian languages"}, ["pra"] = {"Prakrit languages"}, ["prc"] = {"Parachi"}, ["prd"] = {"Parsi-Dari"}, ["pre"] = {"Principense"}, ["prf"] = {"Paranan"}, ["prg"] = {"Prussian"}, ["prh"] = {"Porohanon"}, ["pri"] = {"Paicî"}, ["prk"] = {"Parauk"}, ["prl"] = {"Peruvian Sign Language"}, ["prm"] = {"Kibiri"}, ["prn"] = {"Prasuni"}, ["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"}, ["prq"] = {"Ashéninka Perené"}, ["prr"] = {"Puri"}, ["prs"] = {"Dari", "Afghan Persian"}, ["prt"] = {"Phai"}, ["pru"] = {"Puragi"}, ["prw"] = {"Parawen"}, ["prx"] = {"Purik"}, ["prz"] = {"Providencia Sign Language"}, ["psa"] = {"Asue Awyu"}, ["psc"] = {"Iranian Sign Language", "Persian Sign Language"}, ["psd"] = {"Plains Indian Sign Language"}, ["pse"] = {"Central Malay"}, ["psg"] = {"Penang Sign Language"}, ["psh"] = {"Southwest Pashai", "Southwest Pashayi"}, ["psi"] = {"Southeast Pashai", "Southeast Pashayi"}, ["psl"] = {"Puerto Rican Sign Language"}, ["psm"] = {"Pauserna"}, ["psn"] = {"Panasuan"}, ["pso"] = {"Polish Sign Language"}, ["psp"] = {"Philippine Sign Language"}, ["psq"] = {"Pasi"}, ["psr"] = {"Portuguese Sign Language"}, ["pss"] = {"Kaulong"}, ["pst"] = {"Central Pashto"}, ["psu"] = {"Sauraseni Prākrit"}, ["psw"] = {"Port Sandwich"}, ["psy"] = {"Piscataway"}, ["pta"] = {"Pai Tavytera"}, ["pth"] = {"Pataxó Hã-Ha-Hãe"}, ["pti"] = {"Pindiini", "Wangkatha"}, ["ptn"] = {"Patani"}, ["pto"] = {"Zo'é"}, ["ptp"] = {"Patep"}, ["ptq"] = {"Pattapu"}, ["ptr"] = {"Piamatsina"}, ["ptt"] = {"Enrekang"}, ["ptu"] = {"Bambam"}, ["ptv"] = {"Port Vato"}, ["ptw"] = {"Pentlatch"}, ["pty"] = {"Pathiya"}, ["pua"] = {"Western Highland Purepecha"}, ["pub"] = {"Purum"}, ["puc"] = {"Punan Merap"}, ["pud"] = {"Punan Aput"}, ["pue"] = {"Puelche"}, ["puf"] = {"Punan Merah"}, ["pug"] = {"Phuie"}, ["pui"] = {"Puinave"}, ["puj"] = {"Punan Tubu"}, ["pum"] = {"Puma"}, ["puo"] = {"Puoc"}, ["pup"] = {"Pulabu"}, ["puq"] = {"Puquina"}, ["pur"] = {"Puruborá"}, ["put"] = {"Putoh"}, ["puu"] = {"Punu"}, ["puw"] = {"Puluwatese"}, ["pux"] = {"Puare"}, ["puy"] = {"Purisimeño"}, ["pwa"] = {"Pawaia"}, ["pwb"] = {"Panawa"}, ["pwg"] = {"Gapapaiwa"}, ["pwi"] = {"Patwin"}, ["pwm"] = {"Molbog"}, ["pwn"] = {"Paiwan"}, ["pwo"] = {"Pwo Western Karen"}, ["pwr"] = {"Powari"}, ["pww"] = {"Pwo Northern Karen"}, ["pxm"] = {"Quetzaltepec Mixe"}, ["pye"] = {"Pye Krumen"}, ["pym"] = {"Fyam"}, ["pyn"] = {"Poyanáwa"}, ["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"}, ["pyu"] = {"Puyuma"}, ["pyx"] = {"Pyu (Myanmar)"}, ["pyy"] = {"Pyen"}, ["pze"] = {"Pesse"}, ["pzh"] = {"Pazeh"}, ["pzn"] = {"Jejara Naga", "Para Naga"}, ["qua"] = {"Quapaw"}, ["qub"] = {"Huallaga Huánuco Quechua"}, ["quc"] = {"K'iche'", "Quiché"}, ["qud"] = {"Calderón Highland Quichua"}, ["quf"] = {"Lambayeque Quechua"}, ["qug"] = {"Chimborazo Highland Quichua"}, ["quh"] = {"South Bolivian Quechua"}, ["qui"] = {"Quileute"}, ["quk"] = {"Chachapoyas Quechua"}, ["qul"] = {"North Bolivian Quechua"}, ["qum"] = {"Sipacapense"}, ["qun"] = {"Quinault"}, ["qup"] = {"Southern Pastaza Quechua"}, ["quq"] = {"Quinqui"}, ["qur"] = {"Yanahuanca Pasco Quechua"}, ["qus"] = {"Santiago del Estero Quichua"}, ["quv"] = {"Sacapulteco"}, ["quw"] = {"Tena Lowland Quichua"}, ["qux"] = {"Yauyos Quechua"}, ["quy"] = {"Ayacucho Quechua"}, ["quz"] = {"Cusco Quechua"}, ["qva"] = {"Ambo-Pasco Quechua"}, ["qvc"] = {"Cajamarca Quechua"}, ["qve"] = {"Eastern Apurímac Quechua"}, ["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"}, ["qvi"] = {"Imbabura Highland Quichua"}, ["qvj"] = {"Loja Highland Quichua"}, ["qvl"] = {"Cajatambo North Lima Quechua"}, ["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"}, ["qvn"] = {"North Junín Quechua"}, ["qvo"] = {"Napo Lowland Quechua"}, ["qvp"] = {"Pacaraos Quechua"}, ["qvs"] = {"San Martín Quechua"}, ["qvw"] = {"Huaylla Wanca Quechua"}, ["qvy"] = {"Queyu"}, ["qvz"] = {"Northern Pastaza Quichua"}, ["qwa"] = {"Corongo Ancash Quechua"}, ["qwc"] = {"Classical Quechua"}, ["qwe"] = {"Quechuan (family)"}, ["qwh"] = {"Huaylas Ancash Quechua"}, ["qwm"] = {"Kuman (Russia)"}, ["qws"] = {"Sihuas Ancash Quechua"}, ["qwt"] = {"Kwalhioqua-Tlatskanai"}, ["qxa"] = {"Chiquián Ancash Quechua"}, ["qxc"] = {"Chincha Quechua"}, ["qxh"] = {"Panao Huánuco Quechua"}, ["qxl"] = {"Salasaca Highland Quichua"}, ["qxn"] = {"Northern Conchucos Ancash Quechua"}, ["qxo"] = {"Southern Conchucos Ancash Quechua"}, ["qxp"] = {"Puno Quechua"}, ["qxq"] = {"Qashqa'i"}, ["qxr"] = {"Cañar Highland Quichua"}, ["qxs"] = {"Southern Qiang"}, ["qxt"] = {"Santa Ana de Tusi Pasco Quechua"}, ["qxu"] = {"Arequipa-La Unión Quechua"}, ["qxw"] = {"Jauja Wanca Quechua"}, ["qya"] = {"Quenya"}, ["qyp"] = {"Quiripi"}, ["raa"] = {"Dungmali"}, ["rab"] = {"Camling"}, ["rac"] = {"Rasawa"}, ["rad"] = {"Rade"}, ["raf"] = {"Western Meohang"}, ["rag"] = {"Logooli", "Lulogooli"}, ["rah"] = {"Rabha"}, ["rai"] = {"Ramoaaina"}, ["raj"] = {"Rajasthani"}, ["rak"] = {"Tulu-Bohuai"}, ["ral"] = {"Ralte"}, ["ram"] = {"Canela"}, ["ran"] = {"Riantana"}, ["rao"] = {"Rao"}, ["rap"] = {"Rapanui"}, ["raq"] = {"Saam"}, ["rar"] = {"Rarotongan", "Cook Islands Maori"}, ["ras"] = {"Tegali"}, ["rat"] = {"Razajerdi"}, ["rau"] = {"Raute"}, ["rav"] = {"Sampang"}, ["raw"] = {"Rawang"}, ["rax"] = {"Rang"}, ["ray"] = {"Rapa"}, ["raz"] = {"Rahambuu"}, ["rbb"] = {"Rumai Palaung"}, ["rbk"] = {"Northern Bontok"}, ["rbl"] = {"Miraya Bikol"}, ["rbp"] = {"Barababaraba"}, ["rcf"] = {"Réunion Creole French"}, ["rdb"] = {"Rudbari"}, ["rea"] = {"Rerau"}, ["reb"] = {"Rembong"}, ["ree"] = {"Rejang Kayan"}, ["reg"] = {"Kara (Tanzania)"}, ["rei"] = {"Reli"}, ["rej"] = {"Rejang"}, ["rel"] = {"Rendille"}, ["rem"] = {"Remo"}, ["ren"] = {"Rengao"}, ["rer"] = {"Rer Bare"}, ["res"] = {"Reshe"}, ["ret"] = {"Retta"}, ["rey"] = {"Reyesano"}, ["rga"] = {"Roria"}, ["rge"] = {"Romano-Greek"}, ["rgk"] = {"Rangkas"}, ["rgn"] = {"Romagnol"}, ["rgr"] = {"Resígaro"}, ["rgs"] = {"Southern Roglai"}, ["rgu"] = {"Ringgou"}, ["rhg"] = {"Rohingya"}, ["rhp"] = {"Yahang"}, ["ria"] = {"Riang (India)"}, ["rib"] = {"Bribri Sign Language"}, ["rif"] = {"Tarifit"}, ["ril"] = {"Riang Lang", "Riang (Myanmar)"}, ["rim"] = {"Nyaturu"}, ["rin"] = {"Nungu"}, ["rir"] = {"Ribun"}, ["rit"] = {"Ritharrngu"}, ["riu"] = {"Riung"}, ["rjg"] = {"Rajong"}, ["rji"] = {"Raji"}, ["rjs"] = {"Rajbanshi"}, ["rka"] = {"Kraol"}, ["rkb"] = {"Rikbaktsa"}, ["rkh"] = {"Rakahanga-Manihiki"}, ["rki"] = {"Rakhine"}, ["rkm"] = {"Marka"}, ["rkt"] = {"Rangpuri", "Kamta"}, ["rkw"] = {"Arakwal"}, ["rma"] = {"Rama"}, ["rmb"] = {"Rembarrnga"}, ["rmc"] = {"Carpathian Romani"}, ["rmd"] = {"Traveller Danish"}, ["rme"] = {"Angloromani"}, ["rmf"] = {"Kalo Finnish Romani"}, ["rmg"] = {"Traveller Norwegian"}, ["rmh"] = {"Murkim"}, ["rmi"] = {"Lomavren"}, ["rmk"] = {"Romkun"}, ["rml"] = {"Baltic Romani"}, ["rmm"] = {"Roma"}, ["rmn"] = {"Balkan Romani"}, ["rmo"] = {"Sinte Romani"}, ["rmp"] = {"Rempi"}, ["rmq"] = {"Caló"}, ["rms"] = {"Romanian Sign Language"}, ["rmt"] = {"Domari"}, ["rmu"] = {"Tavringer Romani"}, ["rmv"] = {"Romanova"}, ["rmw"] = {"Welsh Romani"}, ["rmx"] = {"Romam"}, ["rmy"] = {"Vlax Romani"}, ["rmz"] = {"Marma"}, ["rnb"] = {"Brunca Sign Language"}, ["rnd"] = {"Ruund"}, ["rng"] = {"Ronga"}, ["rnl"] = {"Ranglong"}, ["rnn"] = {"Roon"}, ["rnp"] = {"Rongpo"}, ["rnr"] = {"Nari Nari"}, ["rnw"] = {"Rungwa"}, ["roa"] = {"Romance languages"}, ["rob"] = {"Tae'"}, ["roc"] = {"Cacgia Roglai"}, ["rod"] = {"Rogo"}, ["roe"] = {"Ronji"}, ["rof"] = {"Rombo"}, ["rog"] = {"Northern Roglai"}, ["rol"] = {"Romblomanon"}, ["rom"] = {"Romany"}, ["roo"] = {"Rotokas"}, ["rop"] = {"Kriol"}, ["ror"] = {"Rongga"}, ["rou"] = {"Runga"}, ["row"] = {"Dela-Oenale"}, ["rpn"] = {"Repanbitip"}, ["rpt"] = {"Rapting"}, ["rri"] = {"Ririo"}, ["rro"] = {"Waima"}, ["rrt"] = {"Arritinngithigh"}, ["rsb"] = {"Romano-Serbian"}, ["rsk"] = {"Ruthenian", "Rusnak"}, ["rsl"] = {"Russian Sign Language"}, ["rsm"] = {"Miriwoong Sign Language"}, ["rsn"] = {"Rwandan Sign Language"}, ["rsw"] = {"Rishiwa"}, ["rtc"] = {"Rungtu Chin"}, ["rth"] = {"Ratahan"}, ["rtm"] = {"Rotuman"}, ["rts"] = {"Yurats"}, ["rtw"] = {"Rathawi"}, ["rub"] = {"Gungu"}, ["ruc"] = {"Ruuli"}, ["rue"] = {"Rusyn"}, ["ruf"] = {"Luguru"}, ["rug"] = {"Roviana"}, ["ruh"] = {"Ruga"}, ["rui"] = {"Rufiji"}, ["ruk"] = {"Che"}, ["ruo"] = {"Istro Romanian"}, ["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"}, ["ruq"] = {"Megleno Romanian"}, ["rut"] = {"Rutul"}, ["ruu"] = {"Lanas Lobu"}, ["ruy"] = {"Mala (Nigeria)"}, ["ruz"] = {"Ruma"}, ["rwa"] = {"Rawo"}, ["rwk"] = {"Rwa"}, ["rwl"] = {"Ruwila"}, ["rwm"] = {"Amba (Uganda)"}, ["rwo"] = {"Rawa"}, ["rwr"] = {"Marwari (India)"}, ["rxd"] = {"Ngardi"}, ["rxw"] = {"Karuwali", "Garuwali"}, ["ryn"] = {"Northern Amami-Oshima"}, ["rys"] = {"Yaeyama"}, ["ryu"] = {"Central Okinawan"}, ["rzh"] = {"Rāziḥī"}, ["saa"] = {"Saba"}, ["sab"] = {"Buglere"}, ["sac"] = {"Meskwaki"}, ["sad"] = {"Sandawe"}, ["sae"] = {"Sabanê"}, ["saf"] = {"Safaliba"}, ["sah"] = {"Yakut"}, ["sai"] = {"South American Indian languages"}, ["saj"] = {"Sahu"}, ["sak"] = {"Sake"}, ["sal"] = {"Salishan languages"}, ["sam"] = {"Samaritan Aramaic"}, ["sao"] = {"Sause"}, ["saq"] = {"Samburu"}, ["sar"] = {"Saraveca"}, ["sas"] = {"Sasak"}, ["sat"] = {"Santali"}, ["sau"] = {"Saleman"}, ["sav"] = {"Saafi-Saafi"}, ["saw"] = {"Sawi"}, ["sax"] = {"Sa"}, ["say"] = {"Saya"}, ["saz"] = {"Saurashtra"}, ["sba"] = {"Ngambay"}, ["sbb"] = {"Simbo"}, ["sbc"] = {"Kele (Papua New Guinea)"}, ["sbd"] = {"Southern Samo"}, ["sbe"] = {"Saliba"}, ["sbf"] = {"Chabu", "Shabo"}, ["sbg"] = {"Seget"}, ["sbh"] = {"Sori-Harengan"}, ["sbi"] = {"Seti"}, ["sbj"] = {"Surbakhal"}, ["sbk"] = {"Safwa"}, ["sbl"] = {"Botolan Sambal"}, ["sbm"] = {"Sagala"}, ["sbn"] = {"Sindhi Bhil"}, ["sbo"] = {"Sabüm"}, ["sbp"] = {"Sangu (Tanzania)"}, ["sbq"] = {"Sileibi"}, ["sbr"] = {"Sembakung Murut"}, ["sbs"] = {"Subiya"}, ["sbt"] = {"Kimki"}, ["sbu"] = {"Stod Bhoti"}, ["sbv"] = {"Sabine"}, ["sbw"] = {"Simba"}, ["sbx"] = {"Seberuang"}, ["sby"] = {"Soli"}, ["sbz"] = {"Sara Kaba"}, ["scb"] = {"Chut"}, ["sce"] = {"Dongxiang"}, ["scf"] = {"San Miguel Creole French"}, ["scg"] = {"Sanggau"}, ["sch"] = {"Sakachep"}, ["sci"] = {"Sri Lankan Creole Malay"}, ["sck"] = {"Sadri"}, ["scl"] = {"Shina"}, ["scn"] = {"Sicilian"}, ["sco"] = {"Scots"}, ["scp"] = {"Hyolmo", "Helambu Sherpa"}, ["scq"] = {"Sa'och"}, ["scs"] = {"North Slavey"}, ["sct"] = {"Southern Katang"}, ["scu"] = {"Shumcho"}, ["scv"] = {"Sheni"}, ["scw"] = {"Sha"}, ["scx"] = {"Sicel"}, ["sda"] = {"Toraja-Sa'dan"}, ["sdb"] = {"Shabak"}, ["sdc"] = {"Sassarese Sardinian"}, ["sde"] = {"Surubu"}, ["sdf"] = {"Sarli"}, ["sdg"] = {"Savi"}, ["sdh"] = {"Southern Kurdish"}, ["sdj"] = {"Suundi"}, ["sdk"] = {"Sos Kundi"}, ["sdl"] = {"Saudi Arabian Sign Language"}, ["sdn"] = {"Gallurese Sardinian"}, ["sdo"] = {"Bukar-Sadung Bidayuh"}, ["sdp"] = {"Sherdukpen"}, ["sdq"] = {"Semandang"}, ["sdr"] = {"Oraon Sadri"}, ["sds"] = {"Sened"}, ["sdt"] = {"Shuadit"}, ["sdu"] = {"Sarudu"}, ["sdv"] = {"Eastern Sudanic languages"}, ["sdx"] = {"Sibu Melanau"}, ["sdz"] = {"Sallands"}, ["sea"] = {"Semai"}, ["seb"] = {"Shempire Senoufo"}, ["sec"] = {"Sechelt"}, ["sed"] = {"Sedang"}, ["see"] = {"Seneca"}, ["sef"] = {"Cebaara Senoufo"}, ["seg"] = {"Segeju"}, ["seh"] = {"Sena"}, ["sei"] = {"Seri"}, ["sej"] = {"Sene"}, ["sek"] = {"Sekani"}, ["sel"] = {"Selkup"}, ["sem"] = {"Semitic languages"}, ["sen"] = {"Nanerigé Sénoufo"}, ["seo"] = {"Suarmin"}, ["sep"] = {"Sìcìté Sénoufo"}, ["seq"] = {"Senara Sénoufo"}, ["ser"] = {"Serrano"}, ["ses"] = {"Koyraboro Senni Songhai"}, ["set"] = {"Sentani"}, ["seu"] = {"Serui-Laut"}, ["sev"] = {"Nyarafolo Senoufo"}, ["sew"] = {"Sewa Bay"}, ["sey"] = {"Secoya"}, ["sez"] = {"Senthang Chin"}, ["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"}, ["sfe"] = {"Eastern Subanen"}, ["sfm"] = {"Small Flowery Miao"}, ["sfs"] = {"South African Sign Language"}, ["sfw"] = {"Sehwi"}, ["sga"] = {"Old Irish (to 900)"}, ["sgb"] = {"Mag-antsi Ayta"}, ["sgc"] = {"Kipsigis"}, ["sgd"] = {"Surigaonon"}, ["sge"] = {"Segai"}, ["sgg"] = {"Swiss-German Sign Language"}, ["sgh"] = {"Shughni"}, ["sgi"] = {"Suga"}, ["sgj"] = {"Surgujia"}, ["sgk"] = {"Sangkong"}, ["sgm"] = {"Singa"}, ["sgn"] = {"Sign languages"}, ["sgp"] = {"Singpho"}, ["sgr"] = {"Sangisari"}, ["sgs"] = {"Samogitian"}, ["sgt"] = {"Brokpake"}, ["sgu"] = {"Salas"}, ["sgw"] = {"Sebat Bet Gurage"}, ["sgx"] = {"Sierra Leone Sign Language"}, ["sgy"] = {"Sanglechi"}, ["sgz"] = {"Sursurunga"}, ["sha"] = {"Shall-Zwall"}, ["shb"] = {"Ninam"}, ["shc"] = {"Sonde"}, ["shd"] = {"Kundal Shahi"}, ["she"] = {"Sheko"}, ["shg"] = {"Shua"}, ["shh"] = {"Shoshoni"}, ["shi"] = {"Tachelhit"}, ["shj"] = {"Shatt"}, ["shk"] = {"Shilluk"}, ["shl"] = {"Shendu"}, ["shm"] = {"Shahrudi"}, ["shn"] = {"Shan"}, ["sho"] = {"Shanga"}, ["shp"] = {"Shipibo-Conibo"}, ["shq"] = {"Sala"}, ["shr"] = {"Shi"}, ["shs"] = {"Shuswap"}, ["sht"] = {"Shasta"}, ["shu"] = {"Chadian Arabic"}, ["shv"] = {"Shehri"}, ["shw"] = {"Shwai"}, ["shx"] = {"She"}, ["shy"] = {"Tachawit"}, ["shz"] = {"Syenara Senoufo"}, ["sia"] = {"Akkala Sami"}, ["sib"] = {"Sebop"}, ["sid"] = {"Sidamo"}, ["sie"] = {"Simaa"}, ["sif"] = {"Siamou"}, ["sig"] = {"Paasaal"}, ["sih"] = {"Zire", "Sîshëë"}, ["sii"] = {"Shom Peng"}, ["sij"] = {"Numbami"}, ["sik"] = {"Sikiana"}, ["sil"] = {"Tumulung Sisaala"}, ["sim"] = {"Mende (Papua New Guinea)"}, ["sio"] = {"Siouan languages"}, ["sip"] = {"Sikkimese"}, ["siq"] = {"Sonia"}, ["sir"] = {"Siri"}, ["sis"] = {"Siuslaw"}, ["sit"] = {"Sino-Tibetan languages"}, ["siu"] = {"Sinagen"}, ["siv"] = {"Sumariup"}, ["siw"] = {"Siwai"}, ["six"] = {"Sumau"}, ["siy"] = {"Sivandi"}, ["siz"] = {"Siwi"}, ["sja"] = {"Epena"}, ["sjb"] = {"Sajau Basap"}, ["sjd"] = {"Kildin Sami"}, ["sje"] = {"Pite Sami"}, ["sjg"] = {"Assangori"}, ["sjk"] = {"Kemi Sami"}, ["sjl"] = {"Sajalong", "Miji"}, ["sjm"] = {"Mapun"}, ["sjn"] = {"Sindarin"}, ["sjo"] = {"Xibe"}, ["sjp"] = {"Surjapuri"}, ["sjr"] = {"Siar-Lak"}, ["sjs"] = {"Senhaja De Srair"}, ["sjt"] = {"Ter Sami"}, ["sju"] = {"Ume Sami"}, ["sjw"] = {"Shawnee"}, ["ska"] = {"Skagit"}, ["skb"] = {"Saek"}, ["skc"] = {"Ma Manda"}, ["skd"] = {"Southern Sierra Miwok"}, ["ske"] = {"Seke (Vanuatu)"}, ["skf"] = {"Sakirabiá"}, ["skg"] = {"Sakalava Malagasy"}, ["skh"] = {"Sikule"}, ["ski"] = {"Sika"}, ["skj"] = {"Seke (Nepal)"}, ["skm"] = {"Kutong"}, ["skn"] = {"Kolibugan Subanon"}, ["sko"] = {"Seko Tengah"}, ["skp"] = {"Sekapan"}, ["skq"] = {"Sininkere"}, ["skr"] = {"Saraiki", "Seraiki"}, ["sks"] = {"Maia"}, ["skt"] = {"Sakata"}, ["sku"] = {"Sakao"}, ["skv"] = {"Skou"}, ["skw"] = {"Skepi Creole Dutch"}, ["skx"] = {"Seko Padang"}, ["sky"] = {"Sikaiana"}, ["skz"] = {"Sekar"}, ["sla"] = {"Slavic languages"}, ["slc"] = {"Sáliba"}, ["sld"] = {"Sissala"}, ["sle"] = {"Sholaga"}, ["slf"] = {"Swiss-Italian Sign Language"}, ["slg"] = {"Selungai Murut"}, ["slh"] = {"Southern Puget Sound Salish"}, ["sli"] = {"Lower Silesian"}, ["slj"] = {"Salumá"}, ["sll"] = {"Salt-Yui"}, ["slm"] = {"Pangutaran Sama"}, ["sln"] = {"Salinan"}, ["slp"] = {"Lamaholot"}, ["slr"] = {"Salar"}, ["sls"] = {"Singapore Sign Language"}, ["slt"] = {"Sila"}, ["slu"] = {"Selaru"}, ["slw"] = {"Sialum"}, ["slx"] = {"Salampasu"}, ["sly"] = {"Selayar"}, ["slz"] = {"Ma'ya"}, ["sma"] = {"Southern Sami"}, ["smb"] = {"Simbari"}, ["smc"] = {"Som"}, ["smf"] = {"Auwe"}, ["smg"] = {"Simbali"}, ["smh"] = {"Samei"}, ["smi"] = {"Sami languages"}, ["smj"] = {"Lule Sami"}, ["smk"] = {"Bolinao"}, ["sml"] = {"Central Sama"}, ["smm"] = {"Musasa"}, ["smn"] = {"Inari Sami"}, ["smp"] = {"Samaritan"}, ["smq"] = {"Samo"}, ["smr"] = {"Simeulue"}, ["sms"] = {"Skolt Sami"}, ["smt"] = {"Simte"}, ["smu"] = {"Somray"}, ["smv"] = {"Samvedi"}, ["smw"] = {"Sumbawa"}, ["smx"] = {"Samba"}, ["smy"] = {"Semnani"}, ["smz"] = {"Simeku"}, ["snc"] = {"Sinaugoro"}, ["sne"] = {"Bau Bidayuh"}, ["snf"] = {"Noon"}, ["sng"] = {"Sanga (Democratic Republic of Congo)"}, ["sni"] = {"Sensi"}, ["snj"] = {"Riverain Sango"}, ["snk"] = {"Soninke"}, ["snl"] = {"Sangil"}, ["snm"] = {"Southern Ma'di"}, ["snn"] = {"Siona"}, ["sno"] = {"Snohomish"}, ["snp"] = {"Siane"}, ["snq"] = {"Sangu (Gabon)"}, ["snr"] = {"Sihan"}, ["sns"] = {"South West Bay", "Nahavaq"}, ["snu"] = {"Senggi", "Viid"}, ["snv"] = {"Sa'ban"}, ["snw"] = {"Selee"}, ["snx"] = {"Sam"}, ["sny"] = {"Saniyo-Hiyewe"}, ["snz"] = {"Kou"}, ["soa"] = {"Thai Song"}, ["sob"] = {"Sobei"}, ["soc"] = {"So (Democratic Republic of Congo)"}, ["sod"] = {"Songoora"}, ["soe"] = {"Songomeno"}, ["sog"] = {"Sogdian"}, ["soh"] = {"Aka"}, ["soi"] = {"Sonha"}, ["soj"] = {"Soi"}, ["sok"] = {"Sokoro"}, ["sol"] = {"Solos"}, ["son"] = {"Songhai languages"}, ["soo"] = {"Songo"}, ["sop"] = {"Songe"}, ["soq"] = {"Kanasi"}, ["sor"] = {"Somrai"}, ["sos"] = {"Seeku"}, ["sou"] = {"Southern Thai"}, ["sov"] = {"Sonsorol"}, ["sow"] = {"Sowanda"}, ["sox"] = {"Swo"}, ["soy"] = {"Miyobe"}, ["soz"] = {"Temi"}, ["spb"] = {"Sepa (Indonesia)"}, ["spc"] = {"Sapé"}, ["spd"] = {"Saep"}, ["spe"] = {"Sepa (Papua New Guinea)"}, ["spg"] = {"Sian"}, ["spi"] = {"Saponi"}, ["spk"] = {"Sengo"}, ["spl"] = {"Selepet"}, ["spm"] = {"Akukem"}, ["spn"] = {"Sanapaná"}, ["spo"] = {"Spokane"}, ["spp"] = {"Supyire Senoufo"}, ["spq"] = {"Loreto-Ucayali Spanish"}, ["spr"] = {"Saparua"}, ["sps"] = {"Saposa"}, ["spt"] = {"Spiti Bhoti"}, ["spu"] = {"Sapuan"}, ["spv"] = {"Sambalpuri", "Kosli"}, ["spx"] = {"South Picene"}, ["spy"] = {"Sabaot"}, ["sqa"] = {"Shama-Sambuga"}, ["sqh"] = {"Shau"}, ["sqj"] = {"Albanian languages"}, ["sqk"] = {"Albanian Sign Language"}, ["sqm"] = {"Suma"}, ["sqn"] = {"Susquehannock"}, ["sqo"] = {"Sorkhei"}, ["sqq"] = {"Sou"}, ["sqr"] = {"Siculo Arabic"}, ["sqs"] = {"Sri Lankan Sign Language"}, ["sqt"] = {"Soqotri"}, ["squ"] = {"Squamish"}, ["sqx"] = {"Kufr Qassem Sign Language (KQSL)"}, ["sra"] = {"Saruga"}, ["srb"] = {"Sora"}, ["src"] = {"Logudorese Sardinian"}, ["sre"] = {"Sara"}, ["srf"] = {"Nafi"}, ["srg"] = {"Sulod"}, ["srh"] = {"Sarikoli"}, ["sri"] = {"Siriano"}, ["srk"] = {"Serudung Murut"}, ["srl"] = {"Isirawa"}, ["srm"] = {"Saramaccan"}, ["srn"] = {"Sranan Tongo"}, ["sro"] = {"Campidanese Sardinian"}, ["srq"] = {"Sirionó"}, ["srr"] = {"Serer"}, ["srs"] = {"Sarsi"}, ["srt"] = {"Sauri"}, ["sru"] = {"Suruí"}, ["srv"] = {"Southern Sorsoganon"}, ["srw"] = {"Serua"}, ["srx"] = {"Sirmauri"}, ["sry"] = {"Sera"}, ["srz"] = {"Shahmirzadi"}, ["ssa"] = {"Nilo-Saharan languages"}, ["ssb"] = {"Southern Sama"}, ["ssc"] = {"Suba-Simbiti"}, ["ssd"] = {"Siroi"}, ["sse"] = {"Balangingi", "Bangingih Sama"}, ["ssf"] = {"Thao"}, ["ssg"] = {"Seimat"}, ["ssh"] = {"Shihhi Arabic"}, ["ssi"] = {"Sansi"}, ["ssj"] = {"Sausi"}, ["ssk"] = {"Sunam"}, ["ssl"] = {"Western Sisaala"}, ["ssm"] = {"Semnam"}, ["ssn"] = {"Waata"}, ["sso"] = {"Sissano"}, ["ssp"] = {"Spanish Sign Language"}, ["ssq"] = {"So'a"}, ["ssr"] = {"Swiss-French Sign Language"}, ["sss"] = {"Sô"}, ["sst"] = {"Sinasina"}, ["ssu"] = {"Susuami"}, ["ssv"] = {"Shark Bay"}, ["ssx"] = {"Samberigi"}, ["ssy"] = {"Saho"}, ["ssz"] = {"Sengseng"}, ["sta"] = {"Settla"}, ["stb"] = {"Northern Subanen"}, ["std"] = {"Sentinel"}, ["ste"] = {"Liana-Seti"}, ["stf"] = {"Seta"}, ["stg"] = {"Trieng"}, ["sth"] = {"Shelta"}, ["sti"] = {"Bulo Stieng"}, ["stj"] = {"Matya Samo"}, ["stk"] = {"Arammba"}, ["stl"] = {"Stellingwerfs"}, ["stm"] = {"Setaman"}, ["stn"] = {"Owa"}, ["sto"] = {"Stoney"}, ["stp"] = {"Southeastern Tepehuan"}, ["stq"] = {"Saterfriesisch"}, ["str"] = {"Straits Salish"}, ["sts"] = {"Shumashti"}, ["stt"] = {"Budeh Stieng"}, ["stu"] = {"Samtao"}, ["stv"] = {"Silt'e"}, ["stw"] = {"Satawalese"}, ["sty"] = {"Siberian Tatar"}, ["sua"] = {"Sulka"}, ["sub"] = {"Suku"}, ["suc"] = {"Western Subanon"}, ["sue"] = {"Suena"}, ["sug"] = {"Suganga"}, ["sui"] = {"Suki"}, ["suj"] = {"Shubi"}, ["suk"] = {"Sukuma"}, ["suo"] = {"Bouni"}, ["suq"] = {"Tirmaga-Chai Suri", "Suri"}, ["sur"] = {"Mwaghavul"}, ["sus"] = {"Susu"}, ["sut"] = {"Subtiaba"}, ["suv"] = {"Puroik"}, ["suw"] = {"Sumbwa"}, ["sux"] = {"Sumerian"}, ["suy"] = {"Suyá"}, ["suz"] = {"Sunwar"}, ["sva"] = {"Svan"}, ["svb"] = {"Ulau-Suain"}, ["svc"] = {"Vincentian Creole English"}, ["sve"] = {"Serili"}, ["svk"] = {"Slovakian Sign Language"}, ["svm"] = {"Slavomolisano"}, ["svs"] = {"Savosavo"}, ["svx"] = {"Skalvian"}, ["swb"] = {"Maore Comorian"}, ["swc"] = {"Congo Swahili"}, ["swf"] = {"Sere"}, ["swg"] = {"Swabian"}, ["swh"] = {"Swahili (individual language)", "Kiswahili"}, ["swi"] = {"Sui"}, ["swj"] = {"Sira"}, ["swk"] = {"Malawi Sena"}, ["swl"] = {"Swedish Sign Language"}, ["swm"] = {"Samosa"}, ["swn"] = {"Sawknah"}, ["swo"] = {"Shanenawa"}, ["swp"] = {"Suau"}, ["swq"] = {"Sharwa"}, ["swr"] = {"Saweru"}, ["sws"] = {"Seluwasan"}, ["swt"] = {"Sawila"}, ["swu"] = {"Suwawa"}, ["swv"] = {"Shekhawati"}, ["sww"] = {"Sowa"}, ["swx"] = {"Suruahá"}, ["swy"] = {"Sarua"}, ["sxb"] = {"Suba"}, ["sxc"] = {"Sicanian"}, ["sxe"] = {"Sighu"}, ["sxg"] = {"Shuhi", "Shixing"}, ["sxk"] = {"Southern Kalapuya"}, ["sxl"] = {"Selian"}, ["sxm"] = {"Samre"}, ["sxn"] = {"Sangir"}, ["sxo"] = {"Sorothaptic"}, ["sxr"] = {"Saaroa"}, ["sxs"] = {"Sasaru"}, ["sxu"] = {"Upper Saxon"}, ["sxw"] = {"Saxwe Gbe"}, ["sya"] = {"Siang"}, ["syb"] = {"Central Subanen"}, ["syc"] = {"Classical Syriac"}, ["syd"] = {"Samoyedic languages"}, ["syi"] = {"Seki"}, ["syk"] = {"Sukur"}, ["syl"] = {"Sylheti"}, ["sym"] = {"Maya Samo"}, ["syn"] = {"Senaya"}, ["syo"] = {"Suoy"}, ["syr"] = {"Syriac"}, ["sys"] = {"Sinyar"}, ["syw"] = {"Kagate"}, ["syx"] = {"Samay"}, ["syy"] = {"Al-Sayyid Bedouin Sign Language"}, ["sza"] = {"Semelai"}, ["szb"] = {"Ngalum"}, ["szc"] = {"Semaq Beri"}, ["sze"] = {"Seze"}, ["szg"] = {"Sengele"}, ["szl"] = {"Silesian"}, ["szn"] = {"Sula"}, ["szp"] = {"Suabo"}, ["szs"] = {"Solomon Islands Sign Language"}, ["szv"] = {"Isu (Fako Division)"}, ["szw"] = {"Sawai"}, ["szy"] = {"Sakizaya"}, ["taa"] = {"Lower Tanana"}, ["tab"] = {"Tabassaran"}, ["tac"] = {"Lowland Tarahumara"}, ["tad"] = {"Tause"}, ["tae"] = {"Tariana"}, ["taf"] = {"Tapirapé"}, ["tag"] = {"Tagoi"}, ["tai"] = {"Tai languages"}, ["taj"] = {"Eastern Tamang"}, ["tak"] = {"Tala"}, ["tal"] = {"Tal"}, ["tan"] = {"Tangale"}, ["tao"] = {"Yami"}, ["tap"] = {"Taabwa"}, ["taq"] = {"Tamasheq"}, ["tar"] = {"Central Tarahumara"}, ["tas"] = {"Tay Boi"}, ["tau"] = {"Upper Tanana"}, ["tav"] = {"Tatuyo"}, ["taw"] = {"Tai"}, ["tax"] = {"Tamki"}, ["tay"] = {"Atayal"}, ["taz"] = {"Tocho"}, ["tba"] = {"Aikanã"}, ["tbc"] = {"Takia"}, ["tbd"] = {"Kaki Ae"}, ["tbe"] = {"Tanimbili"}, ["tbf"] = {"Mandara"}, ["tbg"] = {"North Tairora"}, ["tbh"] = {"Dharawal", "Thurawal"}, ["tbi"] = {"Gaam"}, ["tbj"] = {"Tiang"}, ["tbk"] = {"Calamian Tagbanwa"}, ["tbl"] = {"Tboli"}, ["tbm"] = {"Tagbu"}, ["tbn"] = {"Barro Negro Tunebo"}, ["tbo"] = {"Tawala"}, ["tbp"] = {"Taworta", "Diebroud"}, ["tbq"] = {"Tibeto-Burman languages"}, ["tbr"] = {"Tumtum"}, ["tbs"] = {"Tanguat"}, ["tbt"] = {"Tembo (Kitembo)"}, ["tbu"] = {"Tubar"}, ["tbv"] = {"Tobo"}, ["tbw"] = {"Tagbanwa"}, ["tbx"] = {"Kapin"}, ["tby"] = {"Tabaru"}, ["tbz"] = {"Ditammari"}, ["tca"] = {"Ticuna"}, ["tcb"] = {"Tanacross"}, ["tcc"] = {"Datooga"}, ["tcd"] = {"Tafi"}, ["tce"] = {"Southern Tutchone"}, ["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"}, ["tcg"] = {"Tamagario"}, ["tch"] = {"Turks And Caicos Creole English"}, ["tci"] = {"Wára"}, ["tck"] = {"Tchitchege"}, ["tcl"] = {"Taman (Myanmar)"}, ["tcm"] = {"Tanahmerah"}, ["tcn"] = {"Tichurong"}, ["tco"] = {"Taungyo"}, ["tcp"] = {"Tawr Chin"}, ["tcq"] = {"Kaiy"}, ["tcs"] = {"Torres Strait Creole", "Yumplatok"}, ["tct"] = {"T'en"}, ["tcu"] = {"Southeastern Tarahumara"}, ["tcw"] = {"Tecpatlán Totonac"}, ["tcx"] = {"Toda"}, ["tcy"] = {"Tulu"}, ["tcz"] = {"Thado Chin"}, ["tda"] = {"Tagdal"}, ["tdb"] = {"Panchpargania"}, ["tdc"] = {"Emberá-Tadó"}, ["tdd"] = {"Tai Nüa"}, ["tde"] = {"Tiranige Diga Dogon"}, ["tdf"] = {"Talieng"}, ["tdg"] = {"Western Tamang"}, ["tdh"] = {"Thulung"}, ["tdi"] = {"Tomadino"}, ["tdj"] = {"Tajio"}, ["tdk"] = {"Tambas"}, ["tdl"] = {"Sur"}, ["tdm"] = {"Taruma"}, ["tdn"] = {"Tondano"}, ["tdo"] = {"Teme"}, ["tdq"] = {"Tita"}, ["tdr"] = {"Todrah"}, ["tds"] = {"Doutai"}, ["tdt"] = {"Tetun Dili"}, ["tdv"] = {"Toro"}, ["tdx"] = {"Tandroy-Mahafaly Malagasy"}, ["tdy"] = {"Tadyawan"}, ["tea"] = {"Temiar"}, ["teb"] = {"Tetete"}, ["tec"] = {"Terik"}, ["ted"] = {"Tepo Krumen"}, ["tee"] = {"Huehuetla Tepehua"}, ["tef"] = {"Teressa"}, ["teg"] = {"Teke-Tege"}, ["teh"] = {"Tehuelche"}, ["tei"] = {"Torricelli"}, ["tek"] = {"Ibali Teke"}, ["tem"] = {"Timne"}, ["ten"] = {"Tama (Colombia)"}, ["teo"] = {"Teso"}, ["tep"] = {"Tepecano"}, ["teq"] = {"Temein"}, ["ter"] = {"Tereno"}, ["tes"] = {"Tengger"}, ["tet"] = {"Tetum"}, ["teu"] = {"Soo"}, ["tev"] = {"Teor"}, ["tew"] = {"Tewa (USA)"}, ["tex"] = {"Tennet"}, ["tey"] = {"Tulishi"}, ["tez"] = {"Tetserret"}, ["tfi"] = {"Tofin Gbe"}, ["tfn"] = {"Tanaina"}, ["tfo"] = {"Tefaro"}, ["tfr"] = {"Teribe"}, ["tft"] = {"Ternate"}, ["tga"] = {"Sagalla"}, ["tgb"] = {"Tobilung"}, ["tgc"] = {"Tigak"}, ["tgd"] = {"Ciwogai"}, ["tge"] = {"Eastern Gorkha Tamang"}, ["tgf"] = {"Chalikha"}, ["tgh"] = {"Tobagonian Creole English"}, ["tgi"] = {"Lawunuia"}, ["tgj"] = {"Tagin"}, ["tgn"] = {"Tandaganon"}, ["tgo"] = {"Sudest"}, ["tgp"] = {"Tangoa"}, ["tgq"] = {"Tring"}, ["tgr"] = {"Tareng"}, ["tgs"] = {"Nume"}, ["tgt"] = {"Central Tagbanwa"}, ["tgu"] = {"Tanggu"}, ["tgv"] = {"Tingui-Boto"}, ["tgw"] = {"Tagwana Senoufo"}, ["tgx"] = {"Tagish"}, ["tgy"] = {"Togoyo"}, ["tgz"] = {"Tagalaka"}, ["thd"] = {"Kuuk Thaayorre", "Thayore"}, ["the"] = {"Chitwania Tharu"}, ["thf"] = {"Thangmi"}, ["thh"] = {"Northern Tarahumara"}, ["thi"] = {"Tai Long"}, ["thk"] = {"Tharaka", "Kitharaka"}, ["thl"] = {"Dangaura Tharu"}, ["thm"] = {"Aheu"}, ["thn"] = {"Thachanadan"}, ["thp"] = {"Thompson"}, ["thq"] = {"Kochila Tharu"}, ["thr"] = {"Rana Tharu"}, ["ths"] = {"Thakali"}, ["tht"] = {"Tahltan"}, ["thu"] = {"Thuri"}, ["thv"] = {"Tahaggart Tamahaq"}, ["thy"] = {"Tha"}, ["thz"] = {"Tayart Tamajeq"}, ["tia"] = {"Tidikelt Tamazight"}, ["tic"] = {"Tira"}, ["tif"] = {"Tifal"}, ["tig"] = {"Tigre"}, ["tih"] = {"Timugon Murut"}, ["tii"] = {"Tiene"}, ["tij"] = {"Tilung"}, ["tik"] = {"Tikar"}, ["til"] = {"Tillamook"}, ["tim"] = {"Timbe"}, ["tin"] = {"Tindi"}, ["tio"] = {"Teop"}, ["tip"] = {"Trimuris"}, ["tiq"] = {"Tiéfo"}, ["tis"] = {"Masadiit Itneg"}, ["tit"] = {"Tinigua"}, ["tiu"] = {"Adasen"}, ["tiv"] = {"Tiv"}, ["tiw"] = {"Tiwi"}, ["tix"] = {"Southern Tiwa"}, ["tiy"] = {"Tiruray"}, ["tiz"] = {"Tai Hongjin"}, ["tja"] = {"Tajuasohn"}, ["tjg"] = {"Tunjung"}, ["tji"] = {"Northern Tujia"}, ["tjj"] = {"Tjungundji"}, ["tjl"] = {"Tai Laing"}, ["tjm"] = {"Timucua"}, ["tjn"] = {"Tonjon"}, ["tjo"] = {"Temacine Tamazight"}, ["tjp"] = {"Tjupany"}, ["tjs"] = {"Southern Tujia"}, ["tju"] = {"Tjurruru"}, ["tjw"] = {"Djabwurrung"}, ["tka"] = {"Truká"}, ["tkb"] = {"Buksa"}, ["tkd"] = {"Tukudede"}, ["tke"] = {"Takwane"}, ["tkf"] = {"Tukumanféd"}, ["tkg"] = {"Tesaka Malagasy"}, ["tkl"] = {"Tokelau"}, ["tkm"] = {"Takelma"}, ["tkn"] = {"Toku-No-Shima"}, ["tkp"] = {"Tikopia"}, ["tkq"] = {"Tee"}, ["tkr"] = {"Tsakhur"}, ["tks"] = {"Takestani"}, ["tkt"] = {"Kathoriya Tharu"}, ["tku"] = {"Upper Necaxa Totonac"}, ["tkv"] = {"Mur Pano"}, ["tkw"] = {"Teanu"}, ["tkx"] = {"Tangko"}, ["tkz"] = {"Takua"}, ["tla"] = {"Southwestern Tepehuan"}, ["tlb"] = {"Tobelo"}, ["tlc"] = {"Yecuatla Totonac"}, ["tld"] = {"Talaud"}, ["tlf"] = {"Telefol"}, ["tlg"] = {"Tofanma"}, ["tlh"] = {"Klingon", "tlhIngan Hol"}, ["tli"] = {"Tlingit"}, ["tlj"] = {"Talinga-Bwisi"}, ["tlk"] = {"Taloki"}, ["tll"] = {"Tetela"}, ["tlm"] = {"Tolomako"}, ["tln"] = {"Talondo'"}, ["tlo"] = {"Talodi"}, ["tlp"] = {"Filomena Mata-Coahuitlán Totonac"}, ["tlq"] = {"Tai Loi"}, ["tlr"] = {"Talise"}, ["tls"] = {"Tambotalo"}, ["tlt"] = {"Sou Nama", "Teluti"}, ["tlu"] = {"Tulehu"}, ["tlv"] = {"Taliabu"}, ["tlx"] = {"Khehek"}, ["tly"] = {"Talysh"}, ["tma"] = {"Tama (Chad)"}, ["tmb"] = {"Katbol", "Avava"}, ["tmc"] = {"Tumak"}, ["tmd"] = {"Haruai"}, ["tme"] = {"Tremembé"}, ["tmf"] = {"Toba-Maskoy"}, ["tmg"] = {"Ternateño"}, ["tmh"] = {"Tamashek"}, ["tmi"] = {"Tutuba"}, ["tmj"] = {"Samarokena"}, ["tml"] = {"Tamnim Citak"}, ["tmm"] = {"Tai Thanh"}, ["tmn"] = {"Taman (Indonesia)"}, ["tmo"] = {"Temoq"}, ["tmq"] = {"Tumleo"}, ["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"}, ["tms"] = {"Tima"}, ["tmt"] = {"Tasmate"}, ["tmu"] = {"Iau"}, ["tmv"] = {"Tembo (Motembo)"}, ["tmw"] = {"Temuan"}, ["tmy"] = {"Tami"}, ["tmz"] = {"Tamanaku"}, ["tna"] = {"Tacana"}, ["tnb"] = {"Western Tunebo"}, ["tnc"] = {"Tanimuca-Retuarã"}, ["tnd"] = {"Angosturas Tunebo"}, ["tng"] = {"Tobanga"}, ["tnh"] = {"Maiani"}, ["tni"] = {"Tandia"}, ["tnk"] = {"Kwamera"}, ["tnl"] = {"Lenakel"}, ["tnm"] = {"Tabla"}, ["tnn"] = {"North Tanna"}, ["tno"] = {"Toromono"}, ["tnp"] = {"Whitesands"}, ["tnq"] = {"Taino"}, ["tnr"] = {"Ménik"}, ["tns"] = {"Tenis"}, ["tnt"] = {"Tontemboan"}, ["tnu"] = {"Tay Khang"}, ["tnv"] = {"Tangchangya"}, ["tnw"] = {"Tonsawang"}, ["tnx"] = {"Tanema"}, ["tny"] = {"Tongwe"}, ["tnz"] = {"Ten'edn"}, ["tob"] = {"Toba"}, ["toc"] = {"Coyutla Totonac"}, ["tod"] = {"Toma"}, ["tof"] = {"Gizrra"}, ["tog"] = {"Tonga (Nyasa)"}, ["toh"] = {"Gitonga"}, ["toi"] = {"Tonga (Zambia)"}, ["toj"] = {"Tojolabal"}, ["tok"] = {"Toki Pona"}, ["tol"] = {"Tolowa"}, ["tom"] = {"Tombulu"}, ["too"] = {"Xicotepec De Juárez Totonac"}, ["top"] = {"Papantla Totonac"}, ["toq"] = {"Toposa"}, ["tor"] = {"Togbo-Vara Banda"}, ["tos"] = {"Highland Totonac"}, ["tou"] = {"Tho"}, ["tov"] = {"Upper Taromi"}, ["tow"] = {"Jemez"}, ["tox"] = {"Tobian"}, ["toy"] = {"Topoiyo"}, ["toz"] = {"To"}, ["tpa"] = {"Taupota"}, ["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"}, ["tpe"] = {"Tippera"}, ["tpf"] = {"Tarpia"}, ["tpg"] = {"Kula"}, ["tpi"] = {"Tok Pisin"}, ["tpj"] = {"Tapieté"}, ["tpk"] = {"Tupinikin"}, ["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"}, ["tpm"] = {"Tampulma"}, ["tpn"] = {"Tupinambá"}, ["tpo"] = {"Tai Pao"}, ["tpp"] = {"Pisaflores Tepehua"}, ["tpq"] = {"Tukpa"}, ["tpr"] = {"Tuparí"}, ["tpt"] = {"Tlachichilco Tepehua"}, ["tpu"] = {"Tampuan"}, ["tpv"] = {"Tanapag"}, ["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"}, ["tpy"] = {"Trumai"}, ["tpz"] = {"Tinputz"}, ["tqb"] = {"Tembé"}, ["tql"] = {"Lehali"}, ["tqm"] = {"Turumsa"}, ["tqn"] = {"Tenino"}, ["tqo"] = {"Toaripi"}, ["tqp"] = {"Tomoip"}, ["tqq"] = {"Tunni"}, ["tqr"] = {"Torona"}, ["tqt"] = {"Western Totonac"}, ["tqu"] = {"Touo"}, ["tqw"] = {"Tonkawa"}, ["tra"] = {"Tirahi"}, ["trb"] = {"Terebu"}, ["trc"] = {"Copala Triqui"}, ["trd"] = {"Turi"}, ["tre"] = {"East Tarangan"}, ["trf"] = {"Trinidadian Creole English"}, ["trg"] = {"Lishán Didán"}, ["trh"] = {"Turaka"}, ["tri"] = {"Trió"}, ["trj"] = {"Toram"}, ["trk"] = {"Turkic languages"}, ["trl"] = {"Traveller Scottish"}, ["trm"] = {"Tregami"}, ["trn"] = {"Trinitario"}, ["tro"] = {"Tarao Naga"}, ["trp"] = {"Kok Borok"}, ["trq"] = {"San Martín Itunyoso Triqui"}, ["trr"] = {"Taushiro"}, ["trs"] = {"Chicahuaxtla Triqui"}, ["trt"] = {"Tunggare"}, ["tru"] = {"Turoyo", "Surayt"}, ["trv"] = {"Sediq", "Seediq", "Taroko"}, ["trw"] = {"Torwali"}, ["trx"] = {"Tringgus-Sembaan Bidayuh"}, ["try"] = {"Turung"}, ["trz"] = {"Torá"}, ["tsa"] = {"Tsaangi"}, ["tsb"] = {"Tsamai"}, ["tsc"] = {"Tswa"}, ["tsd"] = {"Tsakonian"}, ["tse"] = {"Tunisian Sign Language"}, ["tsg"] = {"Tausug"}, ["tsh"] = {"Tsuvan"}, ["tsi"] = {"Tsimshian"}, ["tsj"] = {"Tshangla"}, ["tsk"] = {"Tseku"}, ["tsl"] = {"Ts'ün-Lao"}, ["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"}, ["tsp"] = {"Northern Toussian"}, ["tsq"] = {"Thai Sign Language"}, ["tsr"] = {"Akei"}, ["tss"] = {"Taiwan Sign Language"}, ["tst"] = {"Tondi Songway Kiini"}, ["tsu"] = {"Tsou"}, ["tsv"] = {"Tsogo"}, ["tsw"] = {"Tsishingini"}, ["tsx"] = {"Mubami"}, ["tsy"] = {"Tebul Sign Language"}, ["tsz"] = {"Purepecha"}, ["tta"] = {"Tutelo"}, ["ttb"] = {"Gaa"}, ["ttc"] = {"Tektiteko"}, ["ttd"] = {"Tauade"}, ["tte"] = {"Bwanabwana"}, ["ttf"] = {"Tuotomb"}, ["ttg"] = {"Tutong"}, ["tth"] = {"Upper Ta'oih"}, ["tti"] = {"Tobati"}, ["ttj"] = {"Tooro"}, ["ttk"] = {"Totoro"}, ["ttl"] = {"Totela"}, ["ttm"] = {"Northern Tutchone"}, ["ttn"] = {"Towei"}, ["tto"] = {"Lower Ta'oih"}, ["ttp"] = {"Tombelala"}, ["ttq"] = {"Tawallammat Tamajaq"}, ["ttr"] = {"Tera"}, ["tts"] = {"Northeastern Thai"}, ["ttt"] = {"Muslim Tat"}, ["ttu"] = {"Torau"}, ["ttv"] = {"Titan"}, ["ttw"] = {"Long Wat"}, ["tty"] = {"Sikaritai"}, ["ttz"] = {"Tsum"}, ["tua"] = {"Wiarumus"}, ["tub"] = {"Tübatulabal"}, ["tuc"] = {"Mutu"}, ["tud"] = {"Tuxá"}, ["tue"] = {"Tuyuca"}, ["tuf"] = {"Central Tunebo"}, ["tug"] = {"Tunia"}, ["tuh"] = {"Taulil"}, ["tui"] = {"Tupuri"}, ["tuj"] = {"Tugutil"}, ["tul"] = {"Tula"}, ["tum"] = {"Tumbuka"}, ["tun"] = {"Tunica"}, ["tuo"] = {"Tucano"}, ["tup"] = {"Tupi languages"}, ["tuq"] = {"Tedaga"}, ["tus"] = {"Tuscarora"}, ["tut"] = {"Altaic languages"}, ["tuu"] = {"Tututni"}, ["tuv"] = {"Turkana"}, ["tuw"] = {"Tungus languages"}, ["tux"] = {"Tuxináwa"}, ["tuy"] = {"Tugen"}, ["tuz"] = {"Turka"}, ["tva"] = {"Vaghua"}, ["tvd"] = {"Tsuvadi"}, ["tve"] = {"Te'un"}, ["tvi"] = {"Tulai"}, ["tvk"] = {"Southeast Ambrym"}, ["tvl"] = {"Tuvalu"}, ["tvm"] = {"Tela-Masbuar"}, ["tvn"] = {"Tavoyan"}, ["tvo"] = {"Tidore"}, ["tvs"] = {"Taveta"}, ["tvt"] = {"Tutsa Naga"}, ["tvu"] = {"Tunen"}, ["tvw"] = {"Sedoa"}, ["tvx"] = {"Taivoan"}, ["tvy"] = {"Timor Pidgin"}, ["twa"] = {"Twana"}, ["twb"] = {"Western Tawbuid"}, ["twc"] = {"Teshenawa"}, ["twd"] = {"Twents"}, ["twe"] = {"Tewa (Indonesia)"}, ["twf"] = {"Northern Tiwa"}, ["twg"] = {"Tereweng"}, ["twh"] = {"Tai Dón"}, ["twl"] = {"Tawara"}, ["twm"] = {"Tawang Monpa"}, ["twn"] = {"Twendi"}, ["two"] = {"Tswapong"}, ["twp"] = {"Ere"}, ["twq"] = {"Tasawaq"}, ["twr"] = {"Southwestern Tarahumara"}, ["twt"] = {"Turiwára"}, ["twu"] = {"Termanu"}, ["tww"] = {"Tuwari"}, ["twx"] = {"Tewe"}, ["twy"] = {"Tawoyan"}, ["txa"] = {"Tombonuo"}, ["txb"] = {"Tokharian B"}, ["txc"] = {"Tsetsaut"}, ["txe"] = {"Totoli"}, ["txg"] = {"Tangut"}, ["txh"] = {"Thracian"}, ["txi"] = {"Ikpeng"}, ["txj"] = {"Tarjumo"}, ["txm"] = {"Tomini"}, ["txn"] = {"West Tarangan"}, ["txo"] = {"Toto"}, ["txq"] = {"Tii"}, ["txr"] = {"Tartessian"}, ["txs"] = {"Tonsea"}, ["txt"] = {"Citak"}, ["txu"] = {"Kayapó"}, ["txx"] = {"Tatana"}, ["txy"] = {"Tanosy Malagasy"}, ["tya"] = {"Tauya"}, ["tye"] = {"Kyanga"}, ["tyh"] = {"O'du"}, ["tyi"] = {"Teke-Tsaayi"}, ["tyj"] = {"Tai Do", "Tai Yo"}, ["tyl"] = {"Thu Lao"}, ["tyn"] = {"Kombai"}, ["typ"] = {"Thaypan"}, ["tyr"] = {"Tai Daeng"}, ["tys"] = {"Tày Sa Pa"}, ["tyt"] = {"Tày Tac"}, ["tyu"] = {"Kua"}, ["tyv"] = {"Tuvinian"}, ["tyx"] = {"Teke-Tyee"}, ["tyy"] = {"Tiyaa"}, ["tyz"] = {"Tày"}, ["tza"] = {"Tanzanian Sign Language"}, ["tzh"] = {"Tzeltal"}, ["tzj"] = {"Tz'utujil"}, ["tzl"] = {"Talossan"}, ["tzm"] = {"Central Atlas Tamazight"}, ["tzn"] = {"Tugun"}, ["tzo"] = {"Tzotzil"}, ["tzx"] = {"Tabriak"}, ["uam"] = {"Uamué"}, ["uan"] = {"Kuan"}, ["uar"] = {"Tairuma"}, ["uba"] = {"Ubang"}, ["ubi"] = {"Ubi"}, ["ubl"] = {"Buhi'non Bikol"}, ["ubr"] = {"Ubir"}, ["ubu"] = {"Umbu-Ungu"}, ["uby"] = {"Ubykh"}, ["uda"] = {"Uda"}, ["ude"] = {"Udihe"}, ["udg"] = {"Muduga"}, ["udi"] = {"Udi"}, ["udj"] = {"Ujir"}, ["udl"] = {"Wuzlam"}, ["udm"] = {"Udmurt"}, ["udu"] = {"Uduk"}, ["ues"] = {"Kioko"}, ["ufi"] = {"Ufim"}, ["uga"] = {"Ugaritic"}, ["ugb"] = {"Kuku-Ugbanh"}, ["uge"] = {"Ughele"}, ["ugh"] = {"Kubachi"}, ["ugn"] = {"Ugandan Sign Language"}, ["ugo"] = {"Ugong"}, ["ugy"] = {"Uruguayan Sign Language"}, ["uha"] = {"Uhami"}, ["uhn"] = {"Damal"}, ["uis"] = {"Uisai"}, ["uiv"] = {"Iyive"}, ["uji"] = {"Tanjijili"}, ["uka"] = {"Kaburi"}, ["ukg"] = {"Ukuriguma"}, ["ukh"] = {"Ukhwejo"}, ["uki"] = {"Kui (India)"}, ["ukk"] = {"Muak Sa-aak"}, ["ukl"] = {"Ukrainian Sign Language"}, ["ukp"] = {"Ukpe-Bayobiri"}, ["ukq"] = {"Ukwa"}, ["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"}, ["uku"] = {"Ukue"}, ["ukv"] = {"Kuku"}, ["ukw"] = {"Ukwuani-Aboh-Ndoni"}, ["uky"] = {"Kuuk-Yak"}, ["ula"] = {"Fungwa"}, ["ulb"] = {"Ulukwumi"}, ["ulc"] = {"Ulch"}, ["ule"] = {"Lule"}, ["ulf"] = {"Usku", "Afra"}, ["uli"] = {"Ulithian"}, ["ulk"] = {"Meriam Mir"}, ["ull"] = {"Ullatan"}, ["ulm"] = {"Ulumanda'"}, ["uln"] = {"Unserdeutsch"}, ["ulu"] = {"Uma' Lung"}, ["ulw"] = {"Ulwa"}, ["uly"] = {"Buli"}, ["uma"] = {"Umatilla"}, ["umb"] = {"Umbundu"}, ["umc"] = {"Marrucinian"}, ["umd"] = {"Umbindhamu"}, ["umg"] = {"Morrobalama", "Umbuygamu"}, ["umi"] = {"Ukit"}, ["umm"] = {"Umon"}, ["umn"] = {"Makyan Naga"}, ["umo"] = {"Umotína"}, ["ump"] = {"Umpila"}, ["umr"] = {"Umbugarla"}, ["ums"] = {"Pendau"}, ["umu"] = {"Munsee"}, ["una"] = {"North Watut"}, ["und"] = {"Undetermined"}, ["une"] = {"Uneme"}, ["ung"] = {"Ngarinyin"}, ["uni"] = {"Uni"}, ["unk"] = {"Enawené-Nawé"}, ["unm"] = {"Unami"}, ["unn"] = {"Kurnai"}, ["unr"] = {"Mundari"}, ["unu"] = {"Unubahe"}, ["unx"] = {"Munda"}, ["unz"] = {"Unde Kaili"}, ["uon"] = {"Kulon"}, ["upi"] = {"Umeda"}, ["upv"] = {"Uripiv-Wala-Rano-Atchin"}, ["ura"] = {"Urarina"}, ["urb"] = {"Urubú-Kaapor", "Kaapor"}, ["urc"] = {"Urningangg"}, ["ure"] = {"Uru"}, ["urf"] = {"Uradhi"}, ["urg"] = {"Urigina"}, ["urh"] = {"Urhobo"}, ["uri"] = {"Urim"}, ["urj"] = {"Uralic languages"}, ["urk"] = {"Urak Lawoi'"}, ["url"] = {"Urali"}, ["urm"] = {"Urapmin"}, ["urn"] = {"Uruangnirin"}, ["uro"] = {"Ura (Papua New Guinea)"}, ["urp"] = {"Uru-Pa-In"}, ["urr"] = {"Lehalurup", "Löyöp"}, ["urt"] = {"Urat"}, ["uru"] = {"Urumi"}, ["urv"] = {"Uruava"}, ["urw"] = {"Sop"}, ["urx"] = {"Urimo"}, ["ury"] = {"Orya"}, ["urz"] = {"Uru-Eu-Wau-Wau"}, ["usa"] = {"Usarufa"}, ["ush"] = {"Ushojo"}, ["usi"] = {"Usui"}, ["usk"] = {"Usaghade"}, ["usp"] = {"Uspanteco"}, ["uss"] = {"us-Saare"}, ["usu"] = {"Uya"}, ["uta"] = {"Otank"}, ["ute"] = {"Ute-Southern Paiute"}, ["uth"] = {"ut-Hun"}, ["utp"] = {"Amba (Solomon Islands)"}, ["utr"] = {"Etulo"}, ["utu"] = {"Utu"}, ["uum"] = {"Urum"}, ["uur"] = {"Ura (Vanuatu)"}, ["uuu"] = {"U"}, ["uve"] = {"West Uvean", "Fagauvea"}, ["uvh"] = {"Uri"}, ["uvl"] = {"Lote"}, ["uwa"] = {"Kuku-Uwanh"}, ["uya"] = {"Doko-Uyanga"}, ["uzn"] = {"Northern Uzbek"}, ["uzs"] = {"Southern Uzbek"}, ["vaa"] = {"Vaagri Booli"}, ["vae"] = {"Vale"}, ["vaf"] = {"Vafsi"}, ["vag"] = {"Vagla"}, ["vah"] = {"Varhadi-Nagpuri"}, ["vai"] = {"Vai"}, ["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"}, ["val"] = {"Vehes"}, ["vam"] = {"Vanimo"}, ["van"] = {"Valman"}, ["vao"] = {"Vao"}, ["vap"] = {"Vaiphei"}, ["var"] = {"Huarijio"}, ["vas"] = {"Vasavi"}, ["vau"] = {"Vanuma"}, ["vav"] = {"Varli"}, ["vay"] = {"Wayu"}, ["vbb"] = {"Southeast Babar"}, ["vbk"] = {"Southwestern Bontok"}, ["vec"] = {"Venetian"}, ["ved"] = {"Veddah"}, ["vel"] = {"Veluws"}, ["vem"] = {"Vemgo-Mabas"}, ["veo"] = {"Ventureño"}, ["vep"] = {"Veps"}, ["ver"] = {"Mom Jango"}, ["vgr"] = {"Vaghri"}, ["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"}, ["vic"] = {"Virgin Islands Creole English"}, ["vid"] = {"Vidunda"}, ["vif"] = {"Vili"}, ["vig"] = {"Viemo"}, ["vil"] = {"Vilela"}, ["vin"] = {"Vinza"}, ["vis"] = {"Vishavan"}, ["vit"] = {"Viti"}, ["viv"] = {"Iduna"}, ["vjk"] = {"Bajjika"}, ["vka"] = {"Kariyarra"}, ["vkj"] = {"Kujarge"}, ["vkk"] = {"Kaur"}, ["vkl"] = {"Kulisusu"}, ["vkm"] = {"Kamakan"}, ["vkn"] = {"Koro Nulu"}, ["vko"] = {"Kodeoha"}, ["vkp"] = {"Korlai Creole Portuguese"}, ["vkt"] = {"Tenggarong Kutai Malay"}, ["vku"] = {"Kurrama"}, ["vkz"] = {"Koro Zuba"}, ["vlp"] = {"Valpei"}, ["vls"] = {"Vlaams"}, ["vma"] = {"Martuyhunira"}, ["vmb"] = {"Barbaram"}, ["vmc"] = {"Juxtlahuaca Mixtec"}, ["vmd"] = {"Mudu Koraga"}, ["vme"] = {"East Masela"}, ["vmf"] = {"Mainfränkisch"}, ["vmg"] = {"Lungalunga"}, ["vmh"] = {"Maraghei"}, ["vmi"] = {"Miwa"}, ["vmj"] = {"Ixtayutla Mixtec"}, ["vmk"] = {"Makhuwa-Shirima"}, ["vml"] = {"Malgana"}, ["vmm"] = {"Mitlatongo Mixtec"}, ["vmp"] = {"Soyaltepec Mazatec"}, ["vmq"] = {"Soyaltepec Mixtec"}, ["vmr"] = {"Marenje"}, ["vms"] = {"Moksela"}, ["vmu"] = {"Muluridyi"}, ["vmv"] = {"Valley Maidu"}, ["vmw"] = {"Makhuwa"}, ["vmx"] = {"Tamazola Mixtec"}, ["vmy"] = {"Ayautla Mazatec"}, ["vmz"] = {"Mazatlán Mazatec"}, ["vnk"] = {"Vano", "Lovono"}, ["vnm"] = {"Vinmavis", "Neve'ei"}, ["vnp"] = {"Vunapu"}, ["vor"] = {"Voro"}, ["vot"] = {"Votic"}, ["vra"] = {"Vera'a"}, ["vro"] = {"Võro"}, ["vrs"] = {"Varisi"}, ["vrt"] = {"Burmbar", "Banam Bay"}, ["vsi"] = {"Moldova Sign Language"}, ["vsl"] = {"Venezuelan Sign Language"}, ["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"}, ["vto"] = {"Vitou"}, ["vum"] = {"Vumbu"}, ["vun"] = {"Vunjo"}, ["vut"] = {"Vute"}, ["vwa"] = {"Awa (China)"}, ["waa"] = {"Walla Walla"}, ["wab"] = {"Wab"}, ["wac"] = {"Wasco-Wishram"}, ["wad"] = {"Wamesa", "Wondama"}, ["wae"] = {"Walser"}, ["waf"] = {"Wakoná"}, ["wag"] = {"Wa'ema"}, ["wah"] = {"Watubela"}, ["wai"] = {"Wares"}, ["waj"] = {"Waffa"}, ["wak"] = {"Wakashan languages"}, ["wal"] = {"Wolaytta", "Wolaitta"}, ["wam"] = {"Wampanoag"}, ["wan"] = {"Wan"}, ["wao"] = {"Wappo"}, ["wap"] = {"Wapishana"}, ["waq"] = {"Wagiman"}, ["war"] = {"Waray (Philippines)"}, ["was"] = {"Washo"}, ["wat"] = {"Kaninuwa"}, ["wau"] = {"Waurá"}, ["wav"] = {"Waka"}, ["waw"] = {"Waiwai"}, ["wax"] = {"Watam", "Marangis"}, ["way"] = {"Wayana"}, ["waz"] = {"Wampur"}, ["wba"] = {"Warao"}, ["wbb"] = {"Wabo"}, ["wbe"] = {"Waritai"}, ["wbf"] = {"Wara"}, ["wbh"] = {"Wanda"}, ["wbi"] = {"Vwanji"}, ["wbj"] = {"Alagwa"}, ["wbk"] = {"Waigali"}, ["wbl"] = {"Wakhi"}, ["wbm"] = {"Wa"}, ["wbp"] = {"Warlpiri"}, ["wbq"] = {"Waddar"}, ["wbr"] = {"Wagdi"}, ["wbs"] = {"West Bengal Sign Language"}, ["wbt"] = {"Warnman"}, ["wbv"] = {"Wajarri"}, ["wbw"] = {"Woi"}, ["wca"] = {"Yanomámi"}, ["wci"] = {"Waci Gbe"}, ["wdd"] = {"Wandji"}, ["wdg"] = {"Wadaginam"}, ["wdj"] = {"Wadjiginy"}, ["wdk"] = {"Wadikali"}, ["wdt"] = {"Wendat"}, ["wdu"] = {"Wadjigu"}, ["wdy"] = {"Wadjabangayi"}, ["wea"] = {"Wewaw"}, ["wec"] = {"Wè Western"}, ["wed"] = {"Wedau"}, ["weg"] = {"Wergaia"}, ["weh"] = {"Weh"}, ["wei"] = {"Kiunum"}, ["wem"] = {"Weme Gbe"}, ["wen"] = {"Sorbian languages"}, ["weo"] = {"Wemale"}, ["wep"] = {"Westphalien"}, ["wer"] = {"Weri"}, ["wes"] = {"Cameroon Pidgin"}, ["wet"] = {"Perai"}, ["weu"] = {"Rawngtu Chin"}, ["wew"] = {"Wejewa"}, ["wfg"] = {"Yafi", "Zorop"}, ["wga"] = {"Wagaya"}, ["wgb"] = {"Wagawaga"}, ["wgg"] = {"Wangkangurru", "Wangganguru"}, ["wgi"] = {"Wahgi"}, ["wgo"] = {"Waigeo"}, ["wgu"] = {"Wirangu"}, ["wgy"] = {"Warrgamay"}, ["wha"] = {"Sou Upaa", "Manusela"}, ["whg"] = {"North Wahgi"}, ["whk"] = {"Wahau Kenyah"}, ["whu"] = {"Wahau Kayan"}, ["wib"] = {"Southern Toussian"}, ["wic"] = {"Wichita"}, ["wie"] = {"Wik-Epa"}, ["wif"] = {"Wik-Keyangan"}, ["wig"] = {"Wik Ngathan"}, ["wih"] = {"Wik-Me'anha"}, ["wii"] = {"Minidien"}, ["wij"] = {"Wik-Iiyanh"}, ["wik"] = {"Wikalkan"}, ["wil"] = {"Wilawila"}, ["wim"] = {"Wik-Mungkan"}, ["win"] = {"Ho-Chunk"}, ["wir"] = {"Wiraféd"}, ["wiu"] = {"Wiru"}, ["wiv"] = {"Vitu"}, ["wiy"] = {"Wiyot"}, ["wja"] = {"Waja"}, ["wji"] = {"Warji"}, ["wka"] = {"Kw'adza"}, ["wkb"] = {"Kumbaran"}, ["wkd"] = {"Wakde", "Mo"}, ["wkl"] = {"Kalanadi"}, ["wkr"] = {"Keerray-Woorroong"}, ["wku"] = {"Kunduvadi"}, ["wkw"] = {"Wakawaka"}, ["wky"] = {"Wangkayutyuru"}, ["wla"] = {"Walio"}, ["wlc"] = {"Mwali Comorian"}, ["wle"] = {"Wolane"}, ["wlg"] = {"Kunbarlang"}, ["wlh"] = {"Welaun"}, ["wli"] = {"Waioli"}, ["wlk"] = {"Wailaki"}, ["wll"] = {"Wali (Sudan)"}, ["wlm"] = {"Middle Welsh"}, ["wlo"] = {"Wolio"}, ["wlr"] = {"Wailapa"}, ["wls"] = {"Wallisian"}, ["wlu"] = {"Wuliwuli"}, ["wlv"] = {"Wichí Lhamtés Vejoz"}, ["wlw"] = {"Walak"}, ["wlx"] = {"Wali (Ghana)"}, ["wly"] = {"Waling"}, ["wma"] = {"Mawa (Nigeria)"}, ["wmb"] = {"Wambaya"}, ["wmc"] = {"Wamas"}, ["wmd"] = {"Mamaindé"}, ["wme"] = {"Wambule"}, ["wmg"] = {"Western Minyag"}, ["wmh"] = {"Waima'a"}, ["wmi"] = {"Wamin"}, ["wmm"] = {"Maiwa (Indonesia)"}, ["wmn"] = {"Waamwang"}, ["wmo"] = {"Wom (Papua New Guinea)"}, ["wms"] = {"Wambon"}, ["wmt"] = {"Walmajarri"}, ["wmw"] = {"Mwani"}, ["wmx"] = {"Womo"}, ["wnb"] = {"Mokati"}, ["wnc"] = {"Wantoat"}, ["wnd"] = {"Wandarang"}, ["wne"] = {"Waneci"}, ["wng"] = {"Wanggom"}, ["wni"] = {"Ndzwani Comorian"}, ["wnk"] = {"Wanukaka"}, ["wnm"] = {"Wanggamala"}, ["wnn"] = {"Wunumara"}, ["wno"] = {"Wano"}, ["wnp"] = {"Wanap"}, ["wnu"] = {"Usan"}, ["wnw"] = {"Wintu"}, ["wny"] = {"Wanyi", "Waanyi"}, ["woa"] = {"Kuwema", "Tyaraity"}, ["wob"] = {"Wè Northern"}, ["woc"] = {"Wogeo"}, ["wod"] = {"Wolani"}, ["woe"] = {"Woleaian"}, ["wof"] = {"Gambian Wolof"}, ["wog"] = {"Wogamusin"}, ["woi"] = {"Kamang"}, ["wok"] = {"Longto"}, ["wom"] = {"Wom (Nigeria)"}, ["won"] = {"Wongo"}, ["woo"] = {"Manombai"}, ["wor"] = {"Woria"}, ["wos"] = {"Hanga Hundi"}, ["wow"] = {"Wawonii"}, ["woy"] = {"Weyto"}, ["wpc"] = {"Maco"}, ["wrb"] = {"Waluwarra", "Warluwara"}, ["wrg"] = {"Warungu", "Gudjal"}, ["wrh"] = {"Wiradjuri"}, ["wri"] = {"Wariyangga"}, ["wrk"] = {"Garrwa"}, ["wrl"] = {"Warlmanpa"}, ["wrm"] = {"Warumungu"}, ["wrn"] = {"Warnang"}, ["wro"] = {"Worrorra"}, ["wrp"] = {"Waropen"}, ["wrr"] = {"Wardaman"}, ["wrs"] = {"Waris"}, ["wru"] = {"Waru"}, ["wrv"] = {"Waruna"}, ["wrw"] = {"Gugu Warra"}, ["wrx"] = {"Wae Rana"}, ["wry"] = {"Merwari"}, ["wrz"] = {"Waray (Australia)"}, ["wsa"] = {"Warembori"}, ["wsg"] = {"Adilabad Gondi"}, ["wsi"] = {"Wusi"}, ["wsk"] = {"Waskia"}, ["wsr"] = {"Owenia"}, ["wss"] = {"Wasa"}, ["wsu"] = {"Wasu"}, ["wsv"] = {"Wotapuri-Katarqalai"}, ["wtb"] = {"Matambwe"}, ["wtf"] = {"Watiwa"}, ["wth"] = {"Wathawurrung"}, ["wti"] = {"Berta"}, ["wtk"] = {"Watakataui"}, ["wtm"] = {"Mewati"}, ["wtw"] = {"Wotu"}, ["wua"] = {"Wikngenchera"}, ["wub"] = {"Wunambal"}, ["wud"] = {"Wudu"}, ["wuh"] = {"Wutunhua"}, ["wul"] = {"Silimo"}, ["wum"] = {"Wumbvu"}, ["wun"] = {"Bungu"}, ["wur"] = {"Wurrugu"}, ["wut"] = {"Wutung"}, ["wuu"] = {"Wu Chinese"}, ["wuv"] = {"Wuvulu-Aua"}, ["wux"] = {"Wulna"}, ["wuy"] = {"Wauyai"}, ["wwa"] = {"Waama"}, ["wwb"] = {"Wakabunga"}, ["wwo"] = {"Wetamut", "Dorig"}, ["wwr"] = {"Warrwa"}, ["www"] = {"Wawa"}, ["wxa"] = {"Waxianghua"}, ["wxw"] = {"Wardandi"}, ["wyb"] = {"Wangaaybuwan-Ngiyambaa"}, ["wyi"] = {"Woiwurrung"}, ["wym"] = {"Wymysorys"}, ["wyn"] = {"Wyandot"}, ["wyr"] = {"Wayoró"}, ["wyy"] = {"Western Fijian"}, ["xaa"] = {"Andalusian Arabic"}, ["xab"] = {"Sambe"}, ["xac"] = {"Kachari"}, ["xad"] = {"Adai"}, ["xae"] = {"Aequian"}, ["xag"] = {"Aghwan"}, ["xai"] = {"Kaimbé"}, ["xaj"] = {"Ararandewára"}, ["xak"] = {"Máku"}, ["xal"] = {"Kalmyk", "Oirat"}, ["xam"] = {"ǀXam"}, ["xan"] = {"Xamtanga"}, ["xao"] = {"Khao"}, ["xap"] = {"Apalachee"}, ["xaq"] = {"Aquitanian"}, ["xar"] = {"Karami"}, ["xas"] = {"Kamas"}, ["xat"] = {"Katawixi"}, ["xau"] = {"Kauwera"}, ["xav"] = {"Xavánte"}, ["xaw"] = {"Kawaiisu"}, ["xay"] = {"Kayan Mahakam"}, ["xbb"] = {"Lower Burdekin"}, ["xbc"] = {"Bactrian"}, ["xbd"] = {"Bindal"}, ["xbe"] = {"Bigambal"}, ["xbg"] = {"Bunganditj"}, ["xbi"] = {"Kombio"}, ["xbj"] = {"Birrpayi"}, ["xbm"] = {"Middle Breton"}, ["xbn"] = {"Kenaboi"}, ["xbo"] = {"Bolgarian"}, ["xbp"] = {"Bibbulman"}, ["xbr"] = {"Kambera"}, ["xbw"] = {"Kambiwá"}, ["xby"] = {"Batjala", "Batyala"}, ["xcb"] = {"Cumbric"}, ["xcc"] = {"Camunic"}, ["xce"] = {"Celtiberian"}, ["xcg"] = {"Cisalpine Gaulish"}, ["xch"] = {"Chemakum", "Chimakum"}, ["xcl"] = {"Classical Armenian"}, ["xcm"] = {"Comecrudo"}, ["xcn"] = {"Cotoname"}, ["xco"] = {"Chorasmian"}, ["xcr"] = {"Carian"}, ["xct"] = {"Classical Tibetan"}, ["xcu"] = {"Curonian"}, ["xcv"] = {"Chuvantsy"}, ["xcw"] = {"Coahuilteco"}, ["xcy"] = {"Cayuse"}, ["xda"] = {"Darkinyung"}, ["xdc"] = {"Dacian"}, ["xdk"] = {"Dharuk"}, ["xdm"] = {"Edomite"}, ["xdo"] = {"Kwandu"}, ["xdq"] = {"Kaitag"}, ["xdy"] = {"Malayic Dayak"}, ["xeb"] = {"Eblan"}, ["xed"] = {"Hdi"}, ["xeg"] = {"ǁXegwi"}, ["xel"] = {"Kelo"}, ["xem"] = {"Kembayan"}, ["xep"] = {"Epi-Olmec"}, ["xer"] = {"Xerénte"}, ["xes"] = {"Kesawai"}, ["xet"] = {"Xetá"}, ["xeu"] = {"Keoru-Ahia"}, ["xfa"] = {"Faliscan"}, ["xga"] = {"Galatian"}, ["xgb"] = {"Gbin"}, ["xgd"] = {"Gudang"}, ["xgf"] = {"Gabrielino-Fernandeño"}, ["xgg"] = {"Goreng"}, ["xgi"] = {"Garingbal"}, ["xgl"] = {"Galindan"}, ["xgm"] = {"Dharumbal", "Guwinmal"}, ["xgn"] = {"Mongolian languages"}, ["xgr"] = {"Garza"}, ["xgu"] = {"Unggumi"}, ["xgw"] = {"Guwa"}, ["xha"] = {"Harami"}, ["xhc"] = {"Hunnic"}, ["xhd"] = {"Hadrami"}, ["xhe"] = {"Khetrani"}, ["xhm"] = {"Middle Khmer (1400 to 1850 CE)"}, ["xhr"] = {"Hernican"}, ["xht"] = {"Hattic"}, ["xhu"] = {"Hurrian"}, ["xhv"] = {"Khua"}, ["xib"] = {"Iberian"}, ["xii"] = {"Xiri"}, ["xil"] = {"Illyrian"}, ["xin"] = {"Xinca"}, ["xir"] = {"Xiriâna"}, ["xis"] = {"Kisan"}, ["xiv"] = {"Indus Valley Language"}, ["xiy"] = {"Xipaya"}, ["xjb"] = {"Minjungbal"}, ["xjt"] = {"Jaitmatang"}, ["xka"] = {"Kalkoti"}, ["xkb"] = {"Northern Nago"}, ["xkc"] = {"Kho'ini"}, ["xkd"] = {"Mendalam Kayan"}, ["xke"] = {"Kereho"}, ["xkf"] = {"Khengkha"}, ["xkg"] = {"Kagoro"}, ["xki"] = {"Kenyan Sign Language"}, ["xkj"] = {"Kajali"}, ["xkk"] = {"Kachok", "Kaco'"}, ["xkl"] = {"Mainstream Kenyah"}, ["xkn"] = {"Kayan River Kayan"}, ["xko"] = {"Kiorr"}, ["xkp"] = {"Kabatei"}, ["xkq"] = {"Koroni"}, ["xkr"] = {"Xakriabá"}, ["xks"] = {"Kumbewaha"}, ["xkt"] = {"Kantosi"}, ["xku"] = {"Kaamba"}, ["xkv"] = {"Kgalagadi"}, ["xkw"] = {"Kembra"}, ["xkx"] = {"Karore"}, ["xky"] = {"Uma' Lasan"}, ["xkz"] = {"Kurtokha"}, ["xla"] = {"Kamula"}, ["xlb"] = {"Loup B"}, ["xlc"] = {"Lycian"}, ["xld"] = {"Lydian"}, ["xle"] = {"Lemnian"}, ["xlg"] = {"Ligurian (Ancient)"}, ["xli"] = {"Liburnian"}, ["xln"] = {"Alanic"}, ["xlo"] = {"Loup A"}, ["xlp"] = {"Lepontic"}, ["xls"] = {"Lusitanian"}, ["xlu"] = {"Cuneiform Luwian"}, ["xly"] = {"Elymian"}, ["xma"] = {"Mushungulu"}, ["xmb"] = {"Mbonga"}, ["xmc"] = {"Makhuwa-Marrevone"}, ["xmd"] = {"Mbudum"}, ["xme"] = {"Median"}, ["xmf"] = {"Mingrelian"}, ["xmg"] = {"Mengaka"}, ["xmh"] = {"Kugu-Muminh"}, ["xmj"] = {"Majera"}, ["xmk"] = {"Ancient Macedonian"}, ["xml"] = {"Malaysian Sign Language"}, ["xmm"] = {"Manado Malay"}, ["xmn"] = {"Manichaean Middle Persian"}, ["xmo"] = {"Morerebi"}, ["xmp"] = {"Kuku-Mu'inh"}, ["xmq"] = {"Kuku-Mangk"}, ["xmr"] = {"Meroitic"}, ["xms"] = {"Moroccan Sign Language"}, ["xmt"] = {"Matbat"}, ["xmu"] = {"Kamu"}, ["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"}, ["xmw"] = {"Tsimihety Malagasy"}, ["xmx"] = {"Salawati", "Maden"}, ["xmy"] = {"Mayaguduna"}, ["xmz"] = {"Mori Bawah"}, ["xna"] = {"Ancient North Arabian"}, ["xnb"] = {"Kanakanabu"}, ["xnd"] = {"Na-Dene languages"}, ["xng"] = {"Middle Mongolian"}, ["xnh"] = {"Kuanhua"}, ["xni"] = {"Ngarigu"}, ["xnj"] = {"Ngoni (Tanzania)"}, ["xnk"] = {"Nganakarti"}, ["xnm"] = {"Ngumbarl"}, ["xnn"] = {"Northern Kankanay"}, ["xno"] = {"Anglo-Norman"}, ["xnq"] = {"Ngoni (Mozambique)"}, ["xnr"] = {"Kangri"}, ["xns"] = {"Kanashi"}, ["xnt"] = {"Narragansett"}, ["xnu"] = {"Nukunul"}, ["xny"] = {"Nyiyaparli"}, ["xnz"] = {"Kenzi", "Mattoki"}, ["xoc"] = {"O'chi'chi'"}, ["xod"] = {"Kokoda"}, ["xog"] = {"Soga"}, ["xoi"] = {"Kominimung"}, ["xok"] = {"Xokleng"}, ["xom"] = {"Komo (Sudan)"}, ["xon"] = {"Konkomba"}, ["xoo"] = {"Xukurú"}, ["xop"] = {"Kopar"}, ["xor"] = {"Korubo"}, ["xow"] = {"Kowaki"}, ["xpa"] = {"Pirriya"}, ["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"}, ["xpc"] = {"Pecheneg"}, ["xpd"] = {"Oyster Bay Tasmanian"}, ["xpe"] = {"Liberia Kpelle"}, ["xpf"] = {"Southeast Tasmanian", "Nuenonne"}, ["xpg"] = {"Phrygian"}, ["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"}, ["xpi"] = {"Pictish"}, ["xpj"] = {"Mpalitjanh"}, ["xpk"] = {"Kulina Pano"}, ["xpl"] = {"Port Sorell Tasmanian"}, ["xpm"] = {"Pumpokol"}, ["xpn"] = {"Kapinawá"}, ["xpo"] = {"Pochutec"}, ["xpp"] = {"Puyo-Paekche"}, ["xpq"] = {"Mohegan-Pequot"}, ["xpr"] = {"Parthian"}, ["xps"] = {"Pisidian"}, ["xpt"] = {"Punthamara"}, ["xpu"] = {"Punic"}, ["xpv"] = {"Northern Tasmanian", "Tommeginne"}, ["xpw"] = {"Northwestern Tasmanian", "Peerapper"}, ["xpx"] = {"Southwestern Tasmanian", "Toogee"}, ["xpy"] = {"Puyo"}, ["xpz"] = {"Bruny Island Tasmanian"}, ["xqa"] = {"Karakhanid"}, ["xqt"] = {"Qatabanian"}, ["xra"] = {"Krahô"}, ["xrb"] = {"Eastern Karaboro"}, ["xrd"] = {"Gundungurra"}, ["xre"] = {"Kreye"}, ["xrg"] = {"Minang"}, ["xri"] = {"Krikati-Timbira"}, ["xrm"] = {"Armazic"}, ["xrn"] = {"Arin"}, ["xrr"] = {"Raetic"}, ["xrt"] = {"Aranama-Tamique"}, ["xru"] = {"Marriammu"}, ["xrw"] = {"Karawa"}, ["xsa"] = {"Sabaean"}, ["xsb"] = {"Sambal"}, ["xsc"] = {"Scythian"}, ["xsd"] = {"Sidetic"}, ["xse"] = {"Sempan"}, ["xsh"] = {"Shamang"}, ["xsi"] = {"Sio"}, ["xsj"] = {"Subi"}, ["xsl"] = {"South Slavey"}, ["xsm"] = {"Kasem"}, ["xsn"] = {"Sanga (Nigeria)"}, ["xso"] = {"Solano"}, ["xsp"] = {"Silopi"}, ["xsq"] = {"Makhuwa-Saka"}, ["xsr"] = {"Sherpa"}, ["xsu"] = {"Sanumá"}, ["xsv"] = {"Sudovian"}, ["xsy"] = {"Saisiyat"}, ["xta"] = {"Alcozauca Mixtec"}, ["xtb"] = {"Chazumba Mixtec"}, ["xtc"] = {"Katcha-Kadugli-Miri"}, ["xtd"] = {"Diuxi-Tilantongo Mixtec"}, ["xte"] = {"Ketengban"}, ["xtg"] = {"Transalpine Gaulish"}, ["xth"] = {"Yitha Yitha"}, ["xti"] = {"Sinicahua Mixtec"}, ["xtj"] = {"San Juan Teita Mixtec"}, ["xtl"] = {"Tijaltepec Mixtec"}, ["xtm"] = {"Magdalena Peñasco Mixtec"}, ["xtn"] = {"Northern Tlaxiaco Mixtec"}, ["xto"] = {"Tokharian A"}, ["xtp"] = {"San Miguel Piedras Mixtec"}, ["xtq"] = {"Tumshuqese"}, ["xtr"] = {"Early Tripuri"}, ["xts"] = {"Sindihui Mixtec"}, ["xtt"] = {"Tacahua Mixtec"}, ["xtu"] = {"Cuyamecalco Mixtec"}, ["xtv"] = {"Thawa"}, ["xtw"] = {"Tawandê"}, ["xty"] = {"Yoloxochitl Mixtec"}, ["xua"] = {"Alu Kurumba"}, ["xub"] = {"Betta Kurumba"}, ["xud"] = {"Umiida"}, ["xug"] = {"Kunigami"}, ["xuj"] = {"Jennu Kurumba"}, ["xul"] = {"Ngunawal", "Nunukul"}, ["xum"] = {"Umbrian"}, ["xun"] = {"Unggaranggu"}, ["xuo"] = {"Kuo"}, ["xup"] = {"Upper Umpqua"}, ["xur"] = {"Urartian"}, ["xut"] = {"Kuthant"}, ["xuu"] = {"Kxoe", "Khwedam"}, ["xve"] = {"Venetic"}, ["xvi"] = {"Kamviri"}, ["xvn"] = {"Vandalic"}, ["xvo"] = {"Volscian"}, ["xvs"] = {"Vestinian"}, ["xwa"] = {"Kwaza"}, ["xwc"] = {"Woccon"}, ["xwd"] = {"Wadi Wadi"}, ["xwe"] = {"Xwela Gbe"}, ["xwg"] = {"Kwegu"}, ["xwj"] = {"Wajuk"}, ["xwk"] = {"Wangkumara"}, ["xwl"] = {"Western Xwla Gbe"}, ["xwo"] = {"Written Oirat"}, ["xwr"] = {"Kwerba Mamberamo"}, ["xwt"] = {"Wotjobaluk"}, ["xww"] = {"Wemba Wemba"}, ["xxb"] = {"Boro (Ghana)"}, ["xxk"] = {"Ke'o"}, ["xxm"] = {"Minkin"}, ["xxr"] = {"Koropó"}, ["xxt"] = {"Tambora"}, ["xya"] = {"Yaygir"}, ["xyb"] = {"Yandjibara"}, ["xyj"] = {"Mayi-Yapi"}, ["xyk"] = {"Mayi-Kulan"}, ["xyl"] = {"Yalakalore"}, ["xyt"] = {"Mayi-Thakurti"}, ["xyy"] = {"Yorta Yorta"}, ["xzh"] = {"Zhang-Zhung"}, ["xzm"] = {"Zemgalian"}, ["xzp"] = {"Ancient Zapotec"}, ["yaa"] = {"Yaminahua"}, ["yab"] = {"Yuhup"}, ["yac"] = {"Pass Valley Yali"}, ["yad"] = {"Yagua"}, ["yae"] = {"Pumé"}, ["yaf"] = {"Yaka (Democratic Republic of Congo)"}, ["yag"] = {"Yámana"}, ["yah"] = {"Yazgulyam"}, ["yai"] = {"Yagnobi"}, ["yaj"] = {"Banda-Yangere"}, ["yak"] = {"Yakama"}, ["yal"] = {"Yalunka"}, ["yam"] = {"Yamba"}, ["yan"] = {"Mayangna"}, ["yao"] = {"Yao"}, ["yap"] = {"Yapese"}, ["yaq"] = {"Yaqui"}, ["yar"] = {"Yabarana"}, ["yas"] = {"Nugunu (Cameroon)"}, ["yat"] = {"Yambeta"}, ["yau"] = {"Yuwana"}, ["yav"] = {"Yangben"}, ["yaw"] = {"Yawalapití"}, ["yax"] = {"Yauma"}, ["yay"] = {"Agwagwune"}, ["yaz"] = {"Lokaa"}, ["yba"] = {"Yala"}, ["ybb"] = {"Yemba"}, ["ybe"] = {"West Yugur"}, ["ybh"] = {"Yakha"}, ["ybi"] = {"Yamphu"}, ["ybj"] = {"Hasha"}, ["ybk"] = {"Bokha"}, ["ybl"] = {"Yukuben"}, ["ybm"] = {"Yaben"}, ["ybn"] = {"Yabaâna"}, ["ybo"] = {"Yabong"}, ["ybx"] = {"Yawiyo"}, ["yby"] = {"Yaweyuha"}, ["ych"] = {"Chesu"}, ["ycl"] = {"Lolopo"}, ["ycn"] = {"Yucuna"}, ["ycp"] = {"Chepya"}, ["ycr"] = {"Yilan Creole"}, ["yda"] = {"Yanda"}, ["ydd"] = {"Eastern Yiddish"}, ["yde"] = {"Yangum Dey"}, ["ydg"] = {"Yidgha"}, ["ydk"] = {"Yoidik"}, ["yea"] = {"Ravula"}, ["yec"] = {"Yeniche"}, ["yee"] = {"Yimas"}, ["yei"] = {"Yeni"}, ["yej"] = {"Yevanic"}, ["yel"] = {"Yela"}, ["yer"] = {"Tarok"}, ["yes"] = {"Nyankpa"}, ["yet"] = {"Yetfa"}, ["yeu"] = {"Yerukula"}, ["yev"] = {"Yapunda"}, ["yey"] = {"Yeyi"}, ["yga"] = {"Malyangapa"}, ["ygi"] = {"Yiningayi"}, ["ygl"] = {"Yangum Gel"}, ["ygm"] = {"Yagomi"}, ["ygp"] = {"Gepo"}, ["ygr"] = {"Yagaria"}, ["ygs"] = {"Yolŋu Sign Language"}, ["ygu"] = {"Yugul"}, ["ygw"] = {"Yagwoia"}, ["yha"] = {"Baha Buyang"}, ["yhd"] = {"Judeo-Iraqi Arabic"}, ["yhl"] = {"Hlepho Phowa"}, ["yhs"] = {"Yan-nhaŋu Sign Language"}, ["yia"] = {"Yinggarda"}, ["yif"] = {"Ache"}, ["yig"] = {"Wusa Nasu"}, ["yih"] = {"Western Yiddish"}, ["yii"] = {"Yidiny"}, ["yij"] = {"Yindjibarndi"}, ["yik"] = {"Dongshanba Lalo"}, ["yil"] = {"Yindjilandji"}, ["yim"] = {"Yimchungru Naga"}, ["yin"] = {"Riang Lai", "Yinchia"}, ["yip"] = {"Pholo"}, ["yiq"] = {"Miqie"}, ["yir"] = {"North Awyu"}, ["yis"] = {"Yis"}, ["yit"] = {"Eastern Lalu"}, ["yiu"] = {"Awu"}, ["yiv"] = {"Northern Nisu"}, ["yix"] = {"Axi Yi"}, ["yiz"] = {"Azhe"}, ["yka"] = {"Yakan"}, ["ykg"] = {"Northern Yukaghir"}, ["ykh"] = {"Khamnigan Mongol"}, ["yki"] = {"Yoke"}, ["ykk"] = {"Yakaikeke"}, ["ykl"] = {"Khlula"}, ["ykm"] = {"Kap"}, ["ykn"] = {"Kua-nsi"}, ["yko"] = {"Yasa"}, ["ykr"] = {"Yekora"}, ["ykt"] = {"Kathu"}, ["yku"] = {"Kuamasi"}, ["yky"] = {"Yakoma"}, ["yla"] = {"Yaul"}, ["ylb"] = {"Yaleba"}, ["yle"] = {"Yele"}, ["ylg"] = {"Yelogu"}, ["yli"] = {"Angguruk Yali"}, ["yll"] = {"Yil"}, ["ylm"] = {"Limi"}, ["yln"] = {"Langnian Buyang"}, ["ylo"] = {"Naluo Yi"}, ["ylr"] = {"Yalarnnga"}, ["ylu"] = {"Aribwaung"}, ["yly"] = {"Nyâlayu", "Nyelâyu"}, ["ymb"] = {"Yambes"}, ["ymc"] = {"Southern Muji"}, ["ymd"] = {"Muda"}, ["yme"] = {"Yameo"}, ["ymg"] = {"Yamongeri"}, ["ymh"] = {"Mili"}, ["ymi"] = {"Moji"}, ["ymk"] = {"Makwe"}, ["yml"] = {"Iamalele"}, ["ymm"] = {"Maay"}, ["ymn"] = {"Yamna", "Sunum"}, ["ymo"] = {"Yangum Mon"}, ["ymp"] = {"Yamap"}, ["ymq"] = {"Qila Muji"}, ["ymr"] = {"Malasar"}, ["yms"] = {"Mysian"}, ["ymx"] = {"Northern Muji"}, ["ymz"] = {"Muzi"}, ["yna"] = {"Aluo"}, ["ynd"] = {"Yandruwandha"}, ["yne"] = {"Lang'e"}, ["yng"] = {"Yango"}, ["ynk"] = {"Naukan Yupik"}, ["ynl"] = {"Yangulam"}, ["ynn"] = {"Yana"}, ["yno"] = {"Yong"}, ["ynq"] = {"Yendang"}, ["yns"] = {"Yansi"}, ["ynu"] = {"Yahuna"}, ["yob"] = {"Yoba"}, ["yog"] = {"Yogad"}, ["yoi"] = {"Yonaguni"}, ["yok"] = {"Yokuts"}, ["yol"] = {"Yola"}, ["yom"] = {"Yombe"}, ["yon"] = {"Yongkom"}, ["yot"] = {"Yotti"}, ["yox"] = {"Yoron"}, ["yoy"] = {"Yoy"}, ["ypa"] = {"Phala"}, ["ypb"] = {"Labo Phowa"}, ["ypg"] = {"Phola"}, ["yph"] = {"Phupha"}, ["ypk"] = {"Yupik languages"}, ["ypm"] = {"Phuma"}, ["ypn"] = {"Ani Phowa"}, ["ypo"] = {"Alo Phola"}, ["ypp"] = {"Phupa"}, ["ypz"] = {"Phuza"}, ["yra"] = {"Yerakai"}, ["yrb"] = {"Yareba"}, ["yre"] = {"Yaouré"}, ["yrk"] = {"Nenets"}, ["yrl"] = {"Nhengatu"}, ["yrm"] = {"Yirrk-Mel"}, ["yrn"] = {"Yerong"}, ["yro"] = {"Yaroamë"}, ["yrs"] = {"Yarsun"}, ["yrw"] = {"Yarawata"}, ["yry"] = {"Yarluyandi"}, ["ysc"] = {"Yassic"}, ["ysd"] = {"Samatao"}, ["ysg"] = {"Sonaga"}, ["ysl"] = {"Yugoslavian Sign Language"}, ["ysm"] = {"Myanmar Sign Language"}, ["ysn"] = {"Sani"}, ["yso"] = {"Nisi (China)"}, ["ysp"] = {"Southern Lolopo"}, ["ysr"] = {"Sirenik Yupik"}, ["yss"] = {"Yessan-Mayo"}, ["ysy"] = {"Sanie"}, ["yta"] = {"Talu"}, ["ytl"] = {"Tanglang"}, ["ytp"] = {"Thopho"}, ["ytw"] = {"Yout Wam"}, ["yty"] = {"Yatay"}, ["yua"] = {"Yucateco", "Yucatec Maya"}, ["yub"] = {"Yugambal"}, ["yuc"] = {"Yuchi"}, ["yud"] = {"Judeo-Tripolitanian Arabic"}, ["yue"] = {"Yue Chinese", "Cantonese"}, ["yuf"] = {"Havasupai-Walapai-Yavapai"}, ["yug"] = {"Yug"}, ["yui"] = {"Yurutí"}, ["yuj"] = {"Karkar-Yuri"}, ["yuk"] = {"Yuki"}, ["yul"] = {"Yulu"}, ["yum"] = {"Quechan"}, ["yun"] = {"Bena (Nigeria)"}, ["yup"] = {"Yukpa"}, ["yuq"] = {"Yuqui"}, ["yur"] = {"Yurok"}, ["yut"] = {"Yopno"}, ["yuw"] = {"Yau (Morobe Province)"}, ["yux"] = {"Southern Yukaghir"}, ["yuy"] = {"East Yugur"}, ["yuz"] = {"Yuracare"}, ["yva"] = {"Yawa"}, ["yvt"] = {"Yavitero"}, ["ywa"] = {"Kalou"}, ["ywg"] = {"Yinhawangka"}, ["ywl"] = {"Western Lalu"}, ["ywn"] = {"Yawanawa"}, ["ywq"] = {"Wuding-Luquan Yi"}, ["ywr"] = {"Yawuru"}, ["ywt"] = {"Xishanba Lalo", "Central Lalo"}, ["ywu"] = {"Wumeng Nasu"}, ["yww"] = {"Yawarawarga"}, ["yxa"] = {"Mayawali"}, ["yxg"] = {"Yagara"}, ["yxl"] = {"Yardliyawarra"}, ["yxm"] = {"Yinwum"}, ["yxu"] = {"Yuyu"}, ["yxy"] = {"Yabula Yabula"}, ["yyr"] = {"Yir Yoront"}, ["yyu"] = {"Yau (Sandaun Province)"}, ["yyz"] = {"Ayizi"}, ["yzg"] = {"E'ma Buyang"}, ["yzk"] = {"Zokhuo"}, ["zaa"] = {"Sierra de Juárez Zapotec"}, ["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"}, ["zac"] = {"Ocotlán Zapotec"}, ["zad"] = {"Cajonos Zapotec"}, ["zae"] = {"Yareni Zapotec"}, ["zaf"] = {"Ayoquesco Zapotec"}, ["zag"] = {"Zaghawa"}, ["zah"] = {"Zangwal"}, ["zai"] = {"Isthmus Zapotec"}, ["zaj"] = {"Zaramo"}, ["zak"] = {"Zanaki"}, ["zal"] = {"Zauzou"}, ["zam"] = {"Miahuatlán Zapotec"}, ["zao"] = {"Ozolotepec Zapotec"}, ["zap"] = {"Zapotec"}, ["zaq"] = {"Aloápam Zapotec"}, ["zar"] = {"Rincón Zapotec"}, ["zas"] = {"Santo Domingo Albarradas Zapotec"}, ["zat"] = {"Tabaa Zapotec"}, ["zau"] = {"Zangskari"}, ["zav"] = {"Yatzachi Zapotec"}, ["zaw"] = {"Mitla Zapotec"}, ["zax"] = {"Xadani Zapotec"}, ["zay"] = {"Zayse-Zergulla", "Zaysete"}, ["zaz"] = {"Zari"}, ["zba"] = {"Balaibalan"}, ["zbc"] = {"Central Berawan"}, ["zbe"] = {"East Berawan"}, ["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"}, ["zbt"] = {"Batui"}, ["zbu"] = {"Bu (Bauchi State)"}, ["zbw"] = {"West Berawan"}, ["zca"] = {"Coatecas Altas Zapotec"}, ["zcd"] = {"Las Delicias Zapotec"}, ["zch"] = {"Central Hongshuihe Zhuang"}, ["zdj"] = {"Ngazidja Comorian"}, ["zea"] = {"Zeeuws"}, ["zeg"] = {"Zenag"}, ["zeh"] = {"Eastern Hongshuihe Zhuang"}, ["zem"] = {"Zeem"}, ["zen"] = {"Zenaga"}, ["zga"] = {"Kinga"}, ["zgb"] = {"Guibei Zhuang"}, ["zgh"] = {"Standard Moroccan Tamazight"}, ["zgm"] = {"Minz Zhuang"}, ["zgn"] = {"Guibian Zhuang"}, ["zgr"] = {"Magori"}, ["zhb"] = {"Zhaba"}, ["zhd"] = {"Dai Zhuang"}, ["zhi"] = {"Zhire"}, ["zhn"] = {"Nong Zhuang"}, ["zhw"] = {"Zhoa"}, ["zhx"] = {"Chinese (family)"}, ["zia"] = {"Zia"}, ["zib"] = {"Zimbabwe Sign Language"}, ["zik"] = {"Zimakani"}, ["zil"] = {"Zialo"}, ["zim"] = {"Mesme"}, ["zin"] = {"Zinza"}, ["ziw"] = {"Zigula"}, ["ziz"] = {"Zizilivakan"}, ["zka"] = {"Kaimbulawa"}, ["zkd"] = {"Kadu"}, ["zkg"] = {"Koguryo"}, ["zkh"] = {"Khorezmian"}, ["zkk"] = {"Karankawa"}, ["zkn"] = {"Kanan"}, ["zko"] = {"Kott"}, ["zkp"] = {"São Paulo Kaingáng"}, ["zkr"] = {"Zakhring"}, ["zkt"] = {"Kitan"}, ["zku"] = {"Kaurna"}, ["zkv"] = {"Krevinian"}, ["zkz"] = {"Khazar"}, ["zla"] = {"Zula"}, ["zle"] = {"East Slavic languages"}, ["zlj"] = {"Liujiang Zhuang"}, ["zlm"] = {"Malay (individual language)"}, ["zln"] = {"Lianshan Zhuang"}, ["zlq"] = {"Liuqian Zhuang"}, ["zls"] = {"South Slavic languages"}, ["zlu"] = {"Zul"}, ["zlw"] = {"West Slavic languages"}, ["zma"] = {"Manda (Australia)"}, ["zmb"] = {"Zimba"}, ["zmc"] = {"Margany"}, ["zmd"] = {"Maridan"}, ["zme"] = {"Mangerr"}, ["zmf"] = {"Mfinu"}, ["zmg"] = {"Marti Ke"}, ["zmh"] = {"Makolkol"}, ["zmi"] = {"Negeri Sembilan Malay"}, ["zmj"] = {"Maridjabin"}, ["zmk"] = {"Mandandanyi"}, ["zml"] = {"Matngala"}, ["zmm"] = {"Marimanindji", "Marramaninyshi"}, ["zmn"] = {"Mbangwe"}, ["zmo"] = {"Molo"}, ["zmp"] = {"Mpuono"}, ["zmq"] = {"Mituku"}, ["zmr"] = {"Maranunggu"}, ["zms"] = {"Mbesa"}, ["zmt"] = {"Maringarr"}, ["zmu"] = {"Muruwari"}, ["zmv"] = {"Mbariman-Gudhinma"}, ["zmw"] = {"Mbo (Democratic Republic of Congo)"}, ["zmx"] = {"Bomitaba"}, ["zmy"] = {"Mariyedi"}, ["zmz"] = {"Mbandja"}, ["zna"] = {"Zan Gula"}, ["znd"] = {"Zande languages"}, ["zne"] = {"Zande (individual language)"}, ["zng"] = {"Mang"}, ["znk"] = {"Manangkari"}, ["zns"] = {"Mangas"}, ["zoc"] = {"Copainalá Zoque"}, ["zoh"] = {"Chimalapa Zoque"}, ["zom"] = {"Zou"}, ["zoo"] = {"Asunción Mixtepec Zapotec"}, ["zoq"] = {"Tabasco Zoque"}, ["zor"] = {"Rayón Zoque"}, ["zos"] = {"Francisco León Zoque"}, ["zpa"] = {"Lachiguiri Zapotec"}, ["zpb"] = {"Yautepec Zapotec"}, ["zpc"] = {"Choapan Zapotec"}, ["zpd"] = {"Southeastern Ixtlán Zapotec"}, ["zpe"] = {"Petapa Zapotec"}, ["zpf"] = {"San Pedro Quiatoni Zapotec"}, ["zpg"] = {"Guevea De Humboldt Zapotec"}, ["zph"] = {"Totomachapan Zapotec"}, ["zpi"] = {"Santa María Quiegolani Zapotec"}, ["zpj"] = {"Quiavicuzas Zapotec"}, ["zpk"] = {"Tlacolulita Zapotec"}, ["zpl"] = {"Lachixío Zapotec"}, ["zpm"] = {"Mixtepec Zapotec"}, ["zpn"] = {"Santa Inés Yatzechi Zapotec"}, ["zpo"] = {"Amatlán Zapotec"}, ["zpp"] = {"El Alto Zapotec"}, ["zpq"] = {"Zoogocho Zapotec"}, ["zpr"] = {"Santiago Xanica Zapotec"}, ["zps"] = {"Coatlán Zapotec"}, ["zpt"] = {"San Vicente Coatlán Zapotec"}, ["zpu"] = {"Yalálag Zapotec"}, ["zpv"] = {"Chichicapan Zapotec"}, ["zpw"] = {"Zaniza Zapotec"}, ["zpx"] = {"San Baltazar Loxicha Zapotec"}, ["zpy"] = {"Mazaltepec Zapotec"}, ["zpz"] = {"Texmelucan Zapotec"}, ["zqe"] = {"Qiubei Zhuang"}, ["zra"] = {"Kara (Korea)"}, ["zrg"] = {"Mirgan"}, ["zrn"] = {"Zerenkel"}, ["zro"] = {"Záparo"}, ["zrp"] = {"Zarphatic"}, ["zrs"] = {"Mairasi"}, ["zsa"] = {"Sarasira"}, ["zsk"] = {"Kaskean"}, ["zsl"] = {"Zambian Sign Language"}, ["zsm"] = {"Standard Malay"}, ["zsr"] = {"Southern Rincon Zapotec"}, ["zsu"] = {"Sukurum"}, ["zte"] = {"Elotepec Zapotec"}, ["ztg"] = {"Xanaguía Zapotec"}, ["ztl"] = {"Lapaguía-Guivini Zapotec"}, ["ztm"] = {"San Agustín Mixtepec Zapotec"}, ["ztn"] = {"Santa Catarina Albarradas Zapotec"}, ["ztp"] = {"Loxicha Zapotec"}, ["ztq"] = {"Quioquitani-Quierí Zapotec"}, ["zts"] = {"Tilquiapan Zapotec"}, ["ztt"] = {"Tejalapan Zapotec"}, ["ztu"] = {"Güilá Zapotec"}, ["ztx"] = {"Zaachila Zapotec"}, ["zty"] = {"Yatee Zapotec"}, ["zuh"] = {"Tokano"}, ["zum"] = {"Kumzari"}, ["zun"] = {"Zuni"}, ["zuy"] = {"Zumaya"}, ["zwa"] = {"Zay"}, ["zxx"] = {"No linguistic content", "Not applicable"}, ["zyb"] = {"Yongbei Zhuang"}, ["zyg"] = {"Yang Zhuang"}, ["zyj"] = {"Youjiang Zhuang"}, ["zyn"] = {"Yongnan Zhuang"}, ["zyp"] = {"Zyphe Chin"}, ["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"}, ["zzj"] = {"Zuojiang Zhuang"} } local deprecated = { ["in"] = {"Indonesian"}, ["iw"] = {"Hebrew"}, ["ji"] = {"Yiddish"}, ["jw"] = {"Javanese"}, ["mo"] = {"Moldavian", "Moldovan"}, ["aam"] = {"Aramanik"}, ["adp"] = {"Adap"}, ["agp"] = {"Paranan"}, ["ais"] = {"Nataoran Amis"}, ["ajp"] = {"South Levantine Arabic"}, ["ajt"] = {"Judeo-Tunisian Arabic"}, ["aoh"] = {"Arma"}, ["asd"] = {"Asas"}, ["aue"] = {"ǂKxʼauǁʼein"}, ["ayx"] = {"Ayi (China)"}, ["ayy"] = {"Tayabas Ayta"}, ["baz"] = {"Tunen"}, ["bbz"] = {"Babalia Creole Arabic"}, ["bgm"] = {"Baga Mboteni"}, ["bhk"] = {"Albay Bicolano"}, ["bic"] = {"Bikaru"}, ["bij"] = {"Vaghat-Ya-Bijim-Legeri"}, ["bjd"] = {"Bandjigali"}, ["bjq"] = {"Southern Betsimisaraka Malagasy"}, ["bkb"] = {"Finallig"}, ["blg"] = {"Balau"}, ["bmy"] = {"Bemba (Democratic Republic of Congo)"}, ["bpb"] = {"Barbacoas"}, ["btb"] = {"Beti (Cameroon)"}, ["btl"] = {"Bhatola"}, ["bxx"] = {"Borna (Democratic Republic of Congo)"}, ["byy"] = {"Buya"}, ["cbe"] = {"Chipiajes"}, ["cbh"] = {"Cagua"}, ["cca"] = {"Cauca"}, ["ccq"] = {"Chaungtha"}, ["cdg"] = {"Chamari"}, ["cjr"] = {"Chorotega"}, ["cka"] = {"Khumi Awa Chin"}, ["cmk"] = {"Chimakum"}, ["coy"] = {"Coyaima"}, ["cqu"] = {"Chilean Quechua"}, ["cug"] = {"Chungmboko", "Cung"}, ["cum"] = {"Cumeral"}, ["daf"] = {"Dan"}, ["dap"] = {"Nisi (India)"}, ["dgu"] = {"Degaru"}, ["dha"] = {"Dhanwar (India)"}, ["dit"] = {"Dirari"}, ["djl"] = {"Djiwarli"}, ["dkl"] = {"Kolum So Dogon"}, ["drh"] = {"Darkhat"}, ["drr"] = {"Dororo"}, ["drw"] = {"Darwazi"}, ["dud"] = {"Hun-Saare"}, ["duj"] = {"Dhuwal"}, ["dwl"] = {"Walo Kumbe Dogon"}, ["ekc"] = {"Eastern Karnic"}, ["elp"] = {"Elpaputih"}, ["emo"] = {"Emok"}, ["gav"] = {"Gabutamon"}, ["gbc"] = {"Garawa"}, ["gfx"] = {"Mangetti Dune ǃXung"}, ["ggn"] = {"Eastern Gurung"}, ["ggo"] = {"Southern Gondi"}, ["ggr"] = {"Aghu Tharnggalu"}, ["gio"] = {"Gelao"}, ["gji"] = {"Geji"}, ["gli"] = {"Guliguli"}, ["gti"] = {"Gbati-ri"}, ["guv"] = {"Gey"}, ["hrr"] = {"Horuru"}, ["iap"] = {"Iapama"}, ["ibi"] = {"Ibilo"}, ["ill"] = {"Iranun"}, ["ilw"] = {"Talur"}, ["ime"] = {"Imeraguen"}, ["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"}, ["jar"] = {"Jarawa (Nigeria)"}, ["jeg"] = {"Jeng"}, ["kbf"] = {"Kakauhua"}, ["kdv"] = {"Kado"}, ["kgc"] = {"Kasseng"}, ["kgd"] = {"Kataang"}, ["kgh"] = {"Upper Tanudan Kalinga"}, ["kgm"] = {"Karipúna"}, ["kjf"] = {"Khalaj [Indo-Iranian]"}, ["koj"] = {"Sara Dunjo"}, ["kox"] = {"Coxima"}, ["kpp"] = {"Paku Karen"}, ["krm"] = {"Krim"}, ["ksa"] = {"Shuwa-Zamani"}, ["ktr"] = {"Kota Marudu Tinagas"}, ["kvs"] = {"Kunggara"}, ["kwq"] = {"Kwak"}, ["kxe"] = {"Kakihum"}, ["kxl"] = {"Nepali Kurux"}, ["kxu"] = {"Kui (India)"}, ["kzh"] = {"Kenuzi-Dongola"}, ["kzj"] = {"Coastal Kadazan"}, ["kzt"] = {"Tambunan Dusun"}, ["lak"] = {"Laka (Nigeria)"}, ["lba"] = {"Lui"}, ["leg"] = {"Lengua"}, ["lii"] = {"Lingkhim"}, ["llo"] = {"Khlor"}, ["lmm"] = {"Lamam"}, ["lmz"] = {"Lumbee"}, ["lno"] = {"Lango (South Sudan)"}, ["lsg"] = {"Lyons Sign Language"}, ["meg"] = {"Mea"}, ["mgx"] = {"Omati"}, ["mhh"] = {"Maskoy Pidgin"}, ["mja"] = {"Mahei"}, ["mld"] = {"Malakhel"}, ["mnt"] = {"Maykulan"}, ["mof"] = {"Mohegan-Montauk-Narragansett"}, ["mst"] = {"Cataelano Mandaya"}, ["mvm"] = {"Muya"}, ["mwd"] = {"Mudbura"}, ["mwj"] = {"Maligo"}, ["mwx"] = {"Mediak"}, ["mwy"] = {"Mosiro"}, ["myd"] = {"Maramba"}, ["myi"] = {"Mina (India)"}, ["myq"] = {"Forest Maninka"}, ["myt"] = {"Sangab Mandaya"}, ["nad"] = {"Nijadali"}, ["nbf"] = {"Naxi"}, ["nbx"] = {"Ngura"}, ["ncp"] = {"Ndaktup"}, ["ngo"] = {"Ngoni"}, ["nln"] = {"Durango Nahuatl"}, ["nlr"] = {"Ngarla"}, ["nns"] = {"Ningye"}, ["nnx"] = {"Ngong"}, ["nom"] = {"Nocamán"}, ["noo"] = {"Nootka"}, ["nts"] = {"Natagaimas"}, ["nxu"] = {"Narau"}, ["ome"] = {"Omejes"}, ["oun"] = {"ǃOǃung"}, ["pat"] = {"Papitalai"}, ["pbz"] = {"Palu"}, ["pcr"] = {"Panang"}, ["pgy"] = {"Pongyong"}, ["pii"] = {"Pini"}, ["plj"] = {"Polci"}, ["plp"] = {"Palpa"}, ["pmc"] = {"Palumata"}, ["pmk"] = {"Pamlico"}, ["pmu"] = {"Mirpur Panjabi"}, ["pod"] = {"Ponares"}, ["ppa"] = {"Pao"}, ["ppr"] = {"Piru"}, ["prb"] = {"Lua'"}, ["prp"] = {"Parsi"}, ["pry"] = {"Pray 3"}, ["puk"] = {"Pu Ko"}, ["puz"] = {"Purum Naga"}, ["rie"] = {"Rien"}, ["rmr"] = {"Caló"}, ["rna"] = {"Runa"}, ["rsi"] = {"Rennellese Sign Language"}, ["sap"] = {"Sanapaná"}, ["sca"] = {"Sansu"}, ["sdm"] = {"Semandang"}, ["sgl"] = {"Sanglechi-Ishkashimi"}, ["sgo"] = {"Songa"}, ["skk"] = {"Sok"}, ["slq"] = {"Salchuq"}, ["smd"] = {"Sama"}, ["snb"] = {"Sebuyau"}, ["snh"] = {"Shinabo"}, ["sul"] = {"Surigaonon"}, ["sum"] = {"Sumo-Mayangna"}, ["svr"] = {"Savara"}, ["szd"] = {"Seru"}, ["tbb"] = {"Tapeba"}, ["tdu"] = {"Tempasuk Dusun"}, ["tgg"] = {"Tangga"}, ["thc"] = {"Tai Hang Tong"}, ["thw"] = {"Thudam"}, ["thx"] = {"The"}, ["tid"] = {"Tidong"}, ["tie"] = {"Tingal"}, ["tkk"] = {"Takpa"}, ["tlw"] = {"South Wemale"}, ["tmk"] = {"Northwestern Tamang"}, ["tmp"] = {"Tai Mène"}, ["tne"] = {"Tinoc Kallahan"}, ["tnf"] = {"Tangshewi"}, ["toe"] = {"Tomedes"}, ["tpw"] = {"Tupí"}, ["tsf"] = {"Southwestern Tamang"}, ["unp"] = {"Worora"}, ["uok"] = {"Uokha"}, ["uun"] = {"Kulon-Pazeh"}, ["vki"] = {"Ija-Zuba"}, ["wgw"] = {"Wagawaga"}, ["wit"] = {"Wintu"}, ["wiw"] = {"Wirangu"}, ["wra"] = {"Warapu"}, ["wrd"] = {"Warduji"}, ["wya"] = {"Wyandot"}, ["xba"] = {"Kamba (Brazil)"}, ["xbx"] = {"Kabixí"}, ["xia"] = {"Xiandao"}, ["xip"] = {"Xipináwa"}, ["xkh"] = {"Karahawyana"}, ["xrq"] = {"Karranga"}, ["xss"] = {"Assan"}, ["xtz"] = {"Tasmanian"}, ["ybd"] = {"Yangbye"}, ["yds"] = {"Yiddish Sign Language"}, ["yen"] = {"Yendang"}, ["yiy"] = {"Yir Yoront"}, ["yma"] = {"Yamphe"}, ["ymt"] = {"Mator-Taygi-Karagas"}, ["ynh"] = {"Yangho"}, ["yos"] = {"Yos"}, ["yri"] = {"Yarí"}, ["yuu"] = {"Yugh"}, ["zir"] = {"Ziriya"}, ["zkb"] = {"Koibal"}, ["zua"] = {"Zeem"} } return { active = active, deprecated = deprecated, } d2b8387b798a45d93230d1c1b7b22a80714751a1 Module:Language/data/iana scripts 828 470 1037 2023-08-21T15:41:24Z wikipedia>Trappist the monk 0 update to 2023-08-02 data; Scribunto text/plain -- File-Date: 2023-08-02 return { ["Adlm"] = {"Adlam"}, ["Afak"] = {"Afaka"}, ["Aghb"] = {"Caucasian Albanian"}, ["Ahom"] = {"Ahom", "Tai Ahom"}, ["Arab"] = {"Arabic"}, ["Aran"] = {"Arabic (Nastaliq variant)"}, ["Armi"] = {"Imperial Aramaic"}, ["Armn"] = {"Armenian"}, ["Avst"] = {"Avestan"}, ["Bali"] = {"Balinese"}, ["Bamu"] = {"Bamum"}, ["Bass"] = {"Bassa Vah"}, ["Batk"] = {"Batak"}, ["Beng"] = {"Bengali", "Bangla"}, ["Bhks"] = {"Bhaiksuki"}, ["Blis"] = {"Blissymbols"}, ["Bopo"] = {"Bopomofo"}, ["Brah"] = {"Brahmi"}, ["Brai"] = {"Braille"}, ["Bugi"] = {"Buginese"}, ["Buhd"] = {"Buhid"}, ["Cakm"] = {"Chakma"}, ["Cans"] = {"Unified Canadian Aboriginal Syllabics"}, ["Cari"] = {"Carian"}, ["Cham"] = {"Cham"}, ["Cher"] = {"Cherokee"}, ["Chrs"] = {"Chorasmian"}, ["Cirt"] = {"Cirth"}, ["Copt"] = {"Coptic"}, ["Cpmn"] = {"Cypro-Minoan"}, ["Cprt"] = {"Cypriot syllabary"}, ["Cyrl"] = {"Cyrillic"}, ["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"}, ["Deva"] = {"Devanagari", "Nagari"}, ["Diak"] = {"Dives Akuru"}, ["Dogr"] = {"Dogra"}, ["Dsrt"] = {"Deseret", "Mormon"}, ["Dupl"] = {"Duployan shorthand", "Duployan stenography"}, ["Egyd"] = {"Egyptian demotic"}, ["Egyh"] = {"Egyptian hieratic"}, ["Egyp"] = {"Egyptian hieroglyphs"}, ["Elba"] = {"Elbasan"}, ["Elym"] = {"Elymaic"}, ["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"}, ["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"}, ["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"}, ["Glag"] = {"Glagolitic"}, ["Gong"] = {"Gunjala Gondi"}, ["Gonm"] = {"Masaram Gondi"}, ["Goth"] = {"Gothic"}, ["Gran"] = {"Grantha"}, ["Grek"] = {"Greek"}, ["Gujr"] = {"Gujarati"}, ["Guru"] = {"Gurmukhi"}, ["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"}, ["Hang"] = {"Hangul", "Hangŭl", "Hangeul"}, ["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"}, ["Hano"] = {"Hanunoo", "Hanunóo"}, ["Hans"] = {"Han (Simplified variant)"}, ["Hant"] = {"Han (Traditional variant)"}, ["Hatr"] = {"Hatran"}, ["Hebr"] = {"Hebrew"}, ["Hira"] = {"Hiragana"}, ["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"}, ["Hmng"] = {"Pahawh Hmong"}, ["Hmnp"] = {"Nyiakeng Puachue Hmong"}, ["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"}, ["Hung"] = {"Old Hungarian", "Hungarian Runic"}, ["Inds"] = {"Indus", "Harappan"}, ["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"}, ["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"}, ["Java"] = {"Javanese"}, ["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"}, ["Jurc"] = {"Jurchen"}, ["Kali"] = {"Kayah Li"}, ["Kana"] = {"Katakana"}, ["Kawi"] = {"Kawi"}, ["Khar"] = {"Kharoshthi"}, ["Khmr"] = {"Khmer"}, ["Khoj"] = {"Khojki"}, ["Kitl"] = {"Khitan large script"}, ["Kits"] = {"Khitan small script"}, ["Knda"] = {"Kannada"}, ["Kore"] = {"Korean (alias for Hangul + Han)"}, ["Kpel"] = {"Kpelle"}, ["Kthi"] = {"Kaithi"}, ["Lana"] = {"Tai Tham", "Lanna"}, ["Laoo"] = {"Lao"}, ["Latf"] = {"Latin (Fraktur variant)"}, ["Latg"] = {"Latin (Gaelic variant)"}, ["Latn"] = {"Latin"}, ["Leke"] = {"Leke"}, ["Lepc"] = {"Lepcha", "Róng"}, ["Limb"] = {"Limbu"}, ["Lina"] = {"Linear A"}, ["Linb"] = {"Linear B"}, ["Lisu"] = {"Lisu", "Fraser"}, ["Loma"] = {"Loma"}, ["Lyci"] = {"Lycian"}, ["Lydi"] = {"Lydian"}, ["Mahj"] = {"Mahajani"}, ["Maka"] = {"Makasar"}, ["Mand"] = {"Mandaic", "Mandaean"}, ["Mani"] = {"Manichaean"}, ["Marc"] = {"Marchen"}, ["Maya"] = {"Mayan hieroglyphs"}, ["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"}, ["Mend"] = {"Mende Kikakui"}, ["Merc"] = {"Meroitic Cursive"}, ["Mero"] = {"Meroitic Hieroglyphs"}, ["Mlym"] = {"Malayalam"}, ["Modi"] = {"Modi", "Moḍī"}, ["Mong"] = {"Mongolian"}, ["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"}, ["Mroo"] = {"Mro", "Mru"}, ["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"}, ["Mult"] = {"Multani"}, ["Mymr"] = {"Myanmar", "Burmese"}, ["Nagm"] = {"Nag Mundari"}, ["Nand"] = {"Nandinagari"}, ["Narb"] = {"Old North Arabian", "Ancient North Arabian"}, ["Nbat"] = {"Nabataean"}, ["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"}, ["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"}, ["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"}, ["Nkoo"] = {"N’Ko", "N'Ko"}, ["Nshu"] = {"Nüshu"}, ["Ogam"] = {"Ogham"}, ["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"}, ["Orkh"] = {"Old Turkic", "Orkhon Runic"}, ["Orya"] = {"Oriya", "Odia"}, ["Osge"] = {"Osage"}, ["Osma"] = {"Osmanya"}, ["Ougr"] = {"Old Uyghur"}, ["Palm"] = {"Palmyrene"}, ["Pauc"] = {"Pau Cin Hau"}, ["Pcun"] = {"Proto-Cuneiform"}, ["Pelm"] = {"Proto-Elamite"}, ["Perm"] = {"Old Permic"}, ["Phag"] = {"Phags-pa"}, ["Phli"] = {"Inscriptional Pahlavi"}, ["Phlp"] = {"Psalter Pahlavi"}, ["Phlv"] = {"Book Pahlavi"}, ["Phnx"] = {"Phoenician"}, ["Piqd"] = {"Klingon (KLI pIqaD)"}, ["Plrd"] = {"Miao", "Pollard"}, ["Prti"] = {"Inscriptional Parthian"}, ["Psin"] = {"Proto-Sinaitic"}, ["Ranj"] = {"Ranjana"}, ["Rjng"] = {"Rejang", "Redjang", "Kaganga"}, ["Rohg"] = {"Hanifi Rohingya"}, ["Roro"] = {"Rongorongo"}, ["Runr"] = {"Runic"}, ["Samr"] = {"Samaritan"}, ["Sara"] = {"Sarati"}, ["Sarb"] = {"Old South Arabian"}, ["Saur"] = {"Saurashtra"}, ["Sgnw"] = {"SignWriting"}, ["Shaw"] = {"Shavian", "Shaw"}, ["Shrd"] = {"Sharada", "Śāradā"}, ["Shui"] = {"Shuishu"}, ["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"}, ["Sind"] = {"Khudawadi", "Sindhi"}, ["Sinh"] = {"Sinhala"}, ["Sogd"] = {"Sogdian"}, ["Sogo"] = {"Old Sogdian"}, ["Sora"] = {"Sora Sompeng"}, ["Soyo"] = {"Soyombo"}, ["Sund"] = {"Sundanese"}, ["Sunu"] = {"Sunuwar"}, ["Sylo"] = {"Syloti Nagri"}, ["Syrc"] = {"Syriac"}, ["Syre"] = {"Syriac (Estrangelo variant)"}, ["Syrj"] = {"Syriac (Western variant)"}, ["Syrn"] = {"Syriac (Eastern variant)"}, ["Tagb"] = {"Tagbanwa"}, ["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"}, ["Tale"] = {"Tai Le"}, ["Talu"] = {"New Tai Lue"}, ["Taml"] = {"Tamil"}, ["Tang"] = {"Tangut"}, ["Tavt"] = {"Tai Viet"}, ["Telu"] = {"Telugu"}, ["Teng"] = {"Tengwar"}, ["Tfng"] = {"Tifinagh", "Berber"}, ["Tglg"] = {"Tagalog", "Baybayin", "Alibata"}, ["Thaa"] = {"Thaana"}, ["Thai"] = {"Thai"}, ["Tibt"] = {"Tibetan"}, ["Tirh"] = {"Tirhuta"}, ["Tnsa"] = {"Tangsa"}, ["Toto"] = {"Toto"}, ["Ugar"] = {"Ugaritic"}, ["Vaii"] = {"Vai"}, ["Visp"] = {"Visible Speech"}, ["Vith"] = {"Vithkuqi"}, ["Wara"] = {"Warang Citi", "Varang Kshiti"}, ["Wcho"] = {"Wancho"}, ["Wole"] = {"Woleai"}, ["Xpeo"] = {"Old Persian"}, ["Xsux"] = {"Sumero-Akkadian cuneiform"}, ["Yezi"] = {"Yezidi"}, ["Yiii"] = {"Yi"}, ["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"}, ["Zinh"] = {"Code for inherited script"}, ["Zmth"] = {"Mathematical notation"}, ["Zsye"] = {"Symbols (Emoji variant)"}, ["Zsym"] = {"Symbols"}, ["Zxxx"] = {"Code for unwritten documents"}, ["Zyyy"] = {"Code for undetermined script"}, ["Zzzz"] = {"Code for uncoded script"} } 441e9d6e54b88bea137b8945819732a90106bd4d Module:Language/data/iana regions 828 472 1039 2023-08-21T15:41:26Z wikipedia>Trappist the monk 0 update to 2023-08-02 data; Scribunto text/plain -- File-Date: 2023-08-02 return { ["AC"] = {"Ascension Island"}, ["AD"] = {"Andorra"}, ["AE"] = {"United Arab Emirates"}, ["AF"] = {"Afghanistan"}, ["AG"] = {"Antigua and Barbuda"}, ["AI"] = {"Anguilla"}, ["AL"] = {"Albania"}, ["AM"] = {"Armenia"}, ["AO"] = {"Angola"}, ["AQ"] = {"Antarctica"}, ["AR"] = {"Argentina"}, ["AS"] = {"American Samoa"}, ["AT"] = {"Austria"}, ["AU"] = {"Australia"}, ["AW"] = {"Aruba"}, ["AX"] = {"Åland Islands"}, ["AZ"] = {"Azerbaijan"}, ["BA"] = {"Bosnia and Herzegovina"}, ["BB"] = {"Barbados"}, ["BD"] = {"Bangladesh"}, ["BE"] = {"Belgium"}, ["BF"] = {"Burkina Faso"}, ["BG"] = {"Bulgaria"}, ["BH"] = {"Bahrain"}, ["BI"] = {"Burundi"}, ["BJ"] = {"Benin"}, ["BL"] = {"Saint Barthélemy"}, ["BM"] = {"Bermuda"}, ["BN"] = {"Brunei Darussalam"}, ["BO"] = {"Bolivia"}, ["BQ"] = {"Bonaire, Sint Eustatius and Saba"}, ["BR"] = {"Brazil"}, ["BS"] = {"Bahamas"}, ["BT"] = {"Bhutan"}, ["BV"] = {"Bouvet Island"}, ["BW"] = {"Botswana"}, ["BY"] = {"Belarus"}, ["BZ"] = {"Belize"}, ["CA"] = {"Canada"}, ["CC"] = {"Cocos (Keeling) Islands"}, ["CD"] = {"The Democratic Republic of the Congo"}, ["CF"] = {"Central African Republic"}, ["CG"] = {"Congo"}, ["CH"] = {"Switzerland"}, ["CI"] = {"Côte d'Ivoire"}, ["CK"] = {"Cook Islands"}, ["CL"] = {"Chile"}, ["CM"] = {"Cameroon"}, ["CN"] = {"China"}, ["CO"] = {"Colombia"}, ["CP"] = {"Clipperton Island"}, ["CQ"] = {"Sark"}, ["CR"] = {"Costa Rica"}, ["CU"] = {"Cuba"}, ["CV"] = {"Cabo Verde", "Cape Verde"}, ["CW"] = {"Curaçao"}, ["CX"] = {"Christmas Island"}, ["CY"] = {"Cyprus"}, ["CZ"] = {"Czechia", "Czech Republic"}, ["DE"] = {"Germany"}, ["DG"] = {"Diego Garcia"}, ["DJ"] = {"Djibouti"}, ["DK"] = {"Denmark"}, ["DM"] = {"Dominica"}, ["DO"] = {"Dominican Republic"}, ["DZ"] = {"Algeria"}, ["EA"] = {"Ceuta, Melilla"}, ["EC"] = {"Ecuador"}, ["EE"] = {"Estonia"}, ["EG"] = {"Egypt"}, ["EH"] = {"Western Sahara"}, ["ER"] = {"Eritrea"}, ["ES"] = {"Spain"}, ["ET"] = {"Ethiopia"}, ["EU"] = {"European Union"}, ["EZ"] = {"Eurozone"}, ["FI"] = {"Finland"}, ["FJ"] = {"Fiji"}, ["FK"] = {"Falkland Islands (Malvinas)"}, ["FM"] = {"Federated States of Micronesia"}, ["FO"] = {"Faroe Islands"}, ["FR"] = {"France"}, ["GA"] = {"Gabon"}, ["GB"] = {"United Kingdom"}, ["GD"] = {"Grenada"}, ["GE"] = {"Georgia"}, ["GF"] = {"French Guiana"}, ["GG"] = {"Guernsey"}, ["GH"] = {"Ghana"}, ["GI"] = {"Gibraltar"}, ["GL"] = {"Greenland"}, ["GM"] = {"Gambia"}, ["GN"] = {"Guinea"}, ["GP"] = {"Guadeloupe"}, ["GQ"] = {"Equatorial Guinea"}, ["GR"] = {"Greece"}, ["GS"] = {"South Georgia and the South Sandwich Islands"}, ["GT"] = {"Guatemala"}, ["GU"] = {"Guam"}, ["GW"] = {"Guinea-Bissau"}, ["GY"] = {"Guyana"}, ["HK"] = {"Hong Kong"}, ["HM"] = {"Heard Island and McDonald Islands"}, ["HN"] = {"Honduras"}, ["HR"] = {"Croatia"}, ["HT"] = {"Haiti"}, ["HU"] = {"Hungary"}, ["IC"] = {"Canary Islands"}, ["ID"] = {"Indonesia"}, ["IE"] = {"Ireland"}, ["IL"] = {"Israel"}, ["IM"] = {"Isle of Man"}, ["IN"] = {"India"}, ["IO"] = {"British Indian Ocean Territory"}, ["IQ"] = {"Iraq"}, ["IR"] = {"Islamic Republic of Iran"}, ["IS"] = {"Iceland"}, ["IT"] = {"Italy"}, ["JE"] = {"Jersey"}, ["JM"] = {"Jamaica"}, ["JO"] = {"Jordan"}, ["JP"] = {"Japan"}, ["KE"] = {"Kenya"}, ["KG"] = {"Kyrgyzstan"}, ["KH"] = {"Cambodia"}, ["KI"] = {"Kiribati"}, ["KM"] = {"Comoros"}, ["KN"] = {"Saint Kitts and Nevis"}, ["KP"] = {"Democratic People's Republic of Korea"}, ["KR"] = {"Republic of Korea"}, ["KW"] = {"Kuwait"}, ["KY"] = {"Cayman Islands"}, ["KZ"] = {"Kazakhstan"}, ["LA"] = {"Lao People's Democratic Republic"}, ["LB"] = {"Lebanon"}, ["LC"] = {"Saint Lucia"}, ["LI"] = {"Liechtenstein"}, ["LK"] = {"Sri Lanka"}, ["LR"] = {"Liberia"}, ["LS"] = {"Lesotho"}, ["LT"] = {"Lithuania"}, ["LU"] = {"Luxembourg"}, ["LV"] = {"Latvia"}, ["LY"] = {"Libya"}, ["MA"] = {"Morocco"}, ["MC"] = {"Monaco"}, ["MD"] = {"Moldova"}, ["ME"] = {"Montenegro"}, ["MF"] = {"Saint Martin (French part)"}, ["MG"] = {"Madagascar"}, ["MH"] = {"Marshall Islands"}, ["MK"] = {"North Macedonia"}, ["ML"] = {"Mali"}, ["MM"] = {"Myanmar"}, ["MN"] = {"Mongolia"}, ["MO"] = {"Macao"}, ["MP"] = {"Northern Mariana Islands"}, ["MQ"] = {"Martinique"}, ["MR"] = {"Mauritania"}, ["MS"] = {"Montserrat"}, ["MT"] = {"Malta"}, ["MU"] = {"Mauritius"}, ["MV"] = {"Maldives"}, ["MW"] = {"Malawi"}, ["MX"] = {"Mexico"}, ["MY"] = {"Malaysia"}, ["MZ"] = {"Mozambique"}, ["NA"] = {"Namibia"}, ["NC"] = {"New Caledonia"}, ["NE"] = {"Niger"}, ["NF"] = {"Norfolk Island"}, ["NG"] = {"Nigeria"}, ["NI"] = {"Nicaragua"}, ["NL"] = {"Netherlands"}, ["NO"] = {"Norway"}, ["NP"] = {"Nepal"}, ["NR"] = {"Nauru"}, ["NU"] = {"Niue"}, ["NZ"] = {"New Zealand"}, ["OM"] = {"Oman"}, ["PA"] = {"Panama"}, ["PE"] = {"Peru"}, ["PF"] = {"French Polynesia"}, ["PG"] = {"Papua New Guinea"}, ["PH"] = {"Philippines"}, ["PK"] = {"Pakistan"}, ["PL"] = {"Poland"}, ["PM"] = {"Saint Pierre and Miquelon"}, ["PN"] = {"Pitcairn"}, ["PR"] = {"Puerto Rico"}, ["PS"] = {"State of Palestine"}, ["PT"] = {"Portugal"}, ["PW"] = {"Palau"}, ["PY"] = {"Paraguay"}, ["QA"] = {"Qatar"}, ["RE"] = {"Réunion"}, ["RO"] = {"Romania"}, ["RS"] = {"Serbia"}, ["RU"] = {"Russian Federation"}, ["RW"] = {"Rwanda"}, ["SA"] = {"Saudi Arabia"}, ["SB"] = {"Solomon Islands"}, ["SC"] = {"Seychelles"}, ["SD"] = {"Sudan"}, ["SE"] = {"Sweden"}, ["SG"] = {"Singapore"}, ["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"}, ["SI"] = {"Slovenia"}, ["SJ"] = {"Svalbard and Jan Mayen"}, ["SK"] = {"Slovakia"}, ["SL"] = {"Sierra Leone"}, ["SM"] = {"San Marino"}, ["SN"] = {"Senegal"}, ["SO"] = {"Somalia"}, ["SR"] = {"Suriname"}, ["SS"] = {"South Sudan"}, ["ST"] = {"Sao Tome and Principe"}, ["SV"] = {"El Salvador"}, ["SX"] = {"Sint Maarten (Dutch part)"}, ["SY"] = {"Syrian Arab Republic"}, ["SZ"] = {"Eswatini", "eSwatini", "Swaziland"}, ["TA"] = {"Tristan da Cunha"}, ["TC"] = {"Turks and Caicos Islands"}, ["TD"] = {"Chad"}, ["TF"] = {"French Southern Territories"}, ["TG"] = {"Togo"}, ["TH"] = {"Thailand"}, ["TJ"] = {"Tajikistan"}, ["TK"] = {"Tokelau"}, ["TL"] = {"Timor-Leste"}, ["TM"] = {"Turkmenistan"}, ["TN"] = {"Tunisia"}, ["TO"] = {"Tonga"}, ["TR"] = {"Türkiye", "Turkey"}, ["TT"] = {"Trinidad and Tobago"}, ["TV"] = {"Tuvalu"}, ["TW"] = {"Taiwan, Province of China"}, ["TZ"] = {"United Republic of Tanzania"}, ["UA"] = {"Ukraine"}, ["UG"] = {"Uganda"}, ["UM"] = {"United States Minor Outlying Islands"}, ["UN"] = {"United Nations"}, ["US"] = {"United States"}, ["UY"] = {"Uruguay"}, ["UZ"] = {"Uzbekistan"}, ["VA"] = {"Holy See (Vatican City State)"}, ["VC"] = {"Saint Vincent and the Grenadines"}, ["VE"] = {"Venezuela"}, ["VG"] = {"British Virgin Islands"}, ["VI"] = {"U.S. Virgin Islands"}, ["VN"] = {"Viet Nam"}, ["VU"] = {"Vanuatu"}, ["WF"] = {"Wallis and Futuna"}, ["WS"] = {"Samoa"}, ["YE"] = {"Yemen"}, ["YT"] = {"Mayotte"}, ["ZA"] = {"South Africa"}, ["ZM"] = {"Zambia"}, ["ZW"] = {"Zimbabwe"}, ["001"] = {"World"}, ["002"] = {"Africa"}, ["003"] = {"North America"}, ["005"] = {"South America"}, ["009"] = {"Oceania"}, ["011"] = {"Western Africa"}, ["013"] = {"Central America"}, ["014"] = {"Eastern Africa"}, ["015"] = {"Northern Africa"}, ["017"] = {"Middle Africa"}, ["018"] = {"Southern Africa"}, ["019"] = {"Americas"}, ["021"] = {"Northern America"}, ["029"] = {"Caribbean"}, ["030"] = {"Eastern Asia"}, ["034"] = {"Southern Asia"}, ["035"] = {"South-Eastern Asia"}, ["039"] = {"Southern Europe"}, ["053"] = {"Australia and New Zealand"}, ["054"] = {"Melanesia"}, ["057"] = {"Micronesia"}, ["061"] = {"Polynesia"}, ["142"] = {"Asia"}, ["143"] = {"Central Asia"}, ["145"] = {"Western Asia"}, ["150"] = {"Europe"}, ["151"] = {"Eastern Europe"}, ["154"] = {"Northern Europe"}, ["155"] = {"Western Europe"}, ["202"] = {"Sub-Saharan Africa"}, ["419"] = {"Latin America and the Caribbean"} } 08de6963e81994fd00a9f7b5a76b5ed63c543989 Module:Language/data/iana variants 828 473 1041 2023-08-21T15:41:29Z wikipedia>Trappist the monk 0 update to 2023-08-02 data; Scribunto text/plain -- File-Date: 2023-08-02 return { ["1606nict"] = { ["descriptions"] = {"Late Middle French (to 1606)"}, ["prefixes"] = {"frm"}, }, ["1694acad"] = { ["descriptions"] = {"Early Modern French"}, ["prefixes"] = {"fr"}, }, ["1901"] = { ["descriptions"] = {"Traditional German orthography"}, ["prefixes"] = {"de"}, }, ["1959acad"] = { ["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"}, ["prefixes"] = {"be"}, }, ["1994"] = { ["descriptions"] = {"Standardized Resian orthography"}, ["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"}, }, ["1996"] = { ["descriptions"] = {"German orthography of 1996"}, ["prefixes"] = {"de"}, }, ["abl1943"] = { ["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"}, ["prefixes"] = {"pt-br"}, }, ["akuapem"] = { ["descriptions"] = {"Akuapem Twi"}, ["prefixes"] = {"tw"}, }, ["alalc97"] = { ["descriptions"] = {"ALA-LC Romanization, 1997 edition"}, ["prefixes"] = {}, }, ["aluku"] = { ["descriptions"] = {"Aluku dialect", "Boni dialect"}, ["prefixes"] = {"djk"}, }, ["ao1990"] = { ["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"}, ["prefixes"] = {"pt", "gl"}, }, ["aranes"] = { ["descriptions"] = {"Aranese"}, ["prefixes"] = {"oc"}, }, ["arkaika"] = { ["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"}, ["prefixes"] = {"eo"}, }, ["asante"] = { ["descriptions"] = {"Asante Twi", "Ashanti Twi"}, ["prefixes"] = {"tw"}, }, ["auvern"] = { ["descriptions"] = {"Auvergnat"}, ["prefixes"] = {"oc"}, }, ["baku1926"] = { ["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"}, ["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"}, }, ["balanka"] = { ["descriptions"] = {"The Balanka dialect of Anii"}, ["prefixes"] = {"blo"}, }, ["barla"] = { ["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["basiceng"] = { ["descriptions"] = {"Basic English"}, ["prefixes"] = {"en"}, }, ["bauddha"] = { ["descriptions"] = {"Buddhist Hybrid Sanskrit"}, ["prefixes"] = {"sa"}, }, ["bciav"] = { ["descriptions"] = {"BCI Blissymbolics AV"}, ["prefixes"] = {"zbl"}, }, ["bcizbl"] = { ["descriptions"] = {"BCI Blissymbolics"}, ["prefixes"] = {"zbl"}, }, ["biscayan"] = { ["descriptions"] = {"Biscayan dialect of Basque"}, ["prefixes"] = {"eu"}, }, ["biske"] = { ["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["blasl"] = { ["descriptions"] = {"Black American Sign Language dialect"}, ["prefixes"] = {"ase", "sgn-ase"}, }, ["bohoric"] = { ["descriptions"] = {"Slovene in Bohorič alphabet"}, ["prefixes"] = {"sl"}, }, ["boont"] = { ["descriptions"] = {"Boontling"}, ["prefixes"] = {"en"}, }, ["bornholm"] = { ["descriptions"] = {"Bornholmsk"}, ["prefixes"] = {"da"}, }, ["cisaup"] = { ["descriptions"] = {"Cisalpine"}, ["prefixes"] = {"oc"}, }, ["colb1945"] = { ["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"}, ["prefixes"] = {"pt"}, }, ["cornu"] = { ["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"}, ["prefixes"] = {"en"}, }, ["creiss"] = { ["descriptions"] = {"Occitan variants of the Croissant area"}, ["prefixes"] = {"oc"}, }, ["dajnko"] = { ["descriptions"] = {"Slovene in Dajnko alphabet"}, ["prefixes"] = {"sl"}, }, ["ekavsk"] = { ["descriptions"] = {"Serbian with Ekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["emodeng"] = { ["descriptions"] = {"Early Modern English (1500-1700)"}, ["prefixes"] = {"en"}, }, ["fonipa"] = { ["descriptions"] = {"International Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonkirsh"] = { ["descriptions"] = {"Kirshenbaum Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonnapa"] = { ["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"}, ["prefixes"] = {}, }, ["fonupa"] = { ["descriptions"] = {"Uralic Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonxsamp"] = { ["descriptions"] = {"X-SAMPA transcription"}, ["prefixes"] = {}, }, ["gallo"] = { ["descriptions"] = {"Gallo"}, ["prefixes"] = {"fr"}, }, ["gascon"] = { ["descriptions"] = {"Gascon"}, ["prefixes"] = {"oc"}, }, ["grclass"] = { ["descriptions"] = {"Classical Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["grital"] = { ["descriptions"] = {"Italian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"}, }, ["grmistr"] = { ["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["hepburn"] = { ["descriptions"] = {"Hepburn romanization"}, ["prefixes"] = {"ja-latn"}, }, ["hognorsk"] = { ["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"}, ["prefixes"] = {"nn"}, }, ["hsistemo"] = { ["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, }, ["ijekavsk"] = { ["descriptions"] = {"Serbian with Ijekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["itihasa"] = { ["descriptions"] = {"Epic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["ivanchov"] = { ["descriptions"] = {"Bulgarian in 1899 orthography"}, ["prefixes"] = {"bg"}, }, ["jauer"] = { ["descriptions"] = {"Jauer dialect of Romansh"}, ["prefixes"] = {"rm"}, }, ["jyutping"] = { ["descriptions"] = {"Jyutping Cantonese Romanization"}, ["prefixes"] = {"yue"}, }, ["kkcor"] = { ["descriptions"] = {"Common Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["kociewie"] = { ["descriptions"] = {"The Kociewie dialect of Polish"}, ["prefixes"] = {"pl"}, }, ["kscor"] = { ["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"}, ["prefixes"] = {"kw"}, }, ["laukika"] = { ["descriptions"] = {"Classical Sanskrit"}, ["prefixes"] = {"sa"}, }, ["lemosin"] = { ["descriptions"] = {"Limousin"}, ["prefixes"] = {"oc"}, }, ["lengadoc"] = { ["descriptions"] = {"Languedocien"}, ["prefixes"] = {"oc"}, }, ["lipaw"] = { ["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["ltg1929"] = { ["descriptions"] = {"The Latgalian language orthography codified in 1929"}, ["prefixes"] = {"ltg"}, }, ["ltg2007"] = { ["descriptions"] = {"The Latgalian language orthography codified in the language law in 2007"}, ["prefixes"] = {"ltg"}, }, ["luna1918"] = { ["descriptions"] = {"Post-1917 Russian orthography"}, ["prefixes"] = {"ru"}, }, ["metelko"] = { ["descriptions"] = {"Slovene in Metelko alphabet"}, ["prefixes"] = {"sl"}, }, ["monoton"] = { ["descriptions"] = {"Monotonic Greek"}, ["prefixes"] = {"el"}, }, ["ndyuka"] = { ["descriptions"] = {"Ndyuka dialect", "Aukan dialect"}, ["prefixes"] = {"djk"}, }, ["nedis"] = { ["descriptions"] = {"Natisone dialect", "Nadiza dialect"}, ["prefixes"] = {"sl"}, }, ["newfound"] = { ["descriptions"] = {"Newfoundland English"}, ["prefixes"] = {"en-ca"}, }, ["nicard"] = { ["descriptions"] = {"Niçard"}, ["prefixes"] = {"oc"}, }, ["njiva"] = { ["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["nulik"] = { ["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"}, ["prefixes"] = {"vo"}, }, ["osojs"] = { ["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["oxendict"] = { ["descriptions"] = {"Oxford English Dictionary spelling"}, ["prefixes"] = {"en"}, }, ["pahawh2"] = { ["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh3"] = { ["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh4"] = { ["descriptions"] = {"Pahawh Hmong Final Version orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pamaka"] = { ["descriptions"] = {"Pamaka dialect"}, ["prefixes"] = {"djk"}, }, ["peano"] = { ["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"}, ["prefixes"] = {"la"}, }, ["petr1708"] = { ["descriptions"] = {"Petrine orthography"}, ["prefixes"] = {"ru"}, }, ["pinyin"] = { ["descriptions"] = {"Pinyin romanization"}, ["prefixes"] = {"zh-latn", "bo-latn"}, }, ["polyton"] = { ["descriptions"] = {"Polytonic Greek"}, ["prefixes"] = {"el"}, }, ["provenc"] = { ["descriptions"] = {"Provençal"}, ["prefixes"] = {"oc"}, }, ["puter"] = { ["descriptions"] = {"Puter idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["rigik"] = { ["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"}, ["prefixes"] = {"vo"}, }, ["rozaj"] = { ["descriptions"] = {"Resian", "Resianic", "Rezijan"}, ["prefixes"] = {"sl"}, }, ["rumgr"] = { ["descriptions"] = {"Rumantsch Grischun"}, ["prefixes"] = {"rm"}, }, ["scotland"] = { ["descriptions"] = {"Scottish Standard English"}, ["prefixes"] = {"en"}, }, ["scouse"] = { ["descriptions"] = {"Scouse"}, ["prefixes"] = {"en"}, }, ["simple"] = { ["descriptions"] = {"Simplified form"}, ["prefixes"] = {}, }, ["solba"] = { ["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["sotav"] = { ["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["spanglis"] = { ["descriptions"] = {"Spanglish"}, ["prefixes"] = {"en", "es"}, }, ["surmiran"] = { ["descriptions"] = {"Surmiran idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sursilv"] = { ["descriptions"] = {"Sursilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sutsilv"] = { ["descriptions"] = {"Sutsilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["synnejyl"] = { ["descriptions"] = {"Synnejysk", "South Jutish"}, ["prefixes"] = {"da"}, }, ["tarask"] = { ["descriptions"] = {"Belarusian in Taraskievica orthography"}, ["prefixes"] = {"be"}, }, ["tongyong"] = { ["descriptions"] = {"Tongyong Pinyin romanization"}, ["prefixes"] = {"zh-latn"}, }, ["tunumiit"] = { ["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"}, ["prefixes"] = {"kl"}, }, ["uccor"] = { ["descriptions"] = {"Unified Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ucrcor"] = { ["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ulster"] = { ["descriptions"] = {"Ulster dialect of Scots"}, ["prefixes"] = {"sco"}, }, ["unifon"] = { ["descriptions"] = {"Unifon phonetic alphabet"}, ["prefixes"] = {"en", "hup", "kyh", "tol", "yur"}, }, ["vaidika"] = { ["descriptions"] = {"Vedic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["valencia"] = { ["descriptions"] = {"Valencian"}, ["prefixes"] = {"ca"}, }, ["vallader"] = { ["descriptions"] = {"Vallader idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["vecdruka"] = { ["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"}, ["prefixes"] = {"lv"}, }, ["vivaraup"] = { ["descriptions"] = {"Vivaro-Alpine"}, ["prefixes"] = {"oc"}, }, ["wadegile"] = { ["descriptions"] = {"Wade-Giles romanization"}, ["prefixes"] = {"zh-latn"}, }, ["xsistemo"] = { ["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, } } 36f89cd82969f3b0f948034eba0fa2c149ee65c2 Module:Language/data/iana suppressed scripts 828 474 1043 2023-08-21T15:41:32Z wikipedia>Trappist the monk 0 update to 2023-08-02 data; Scribunto text/plain -- File-Date: 2023-08-02 return { ["Arab"] = {"ar", "fa", "ps", "ur"}, ["Armn"] = {"hy"}, ["Beng"] = {"as", "bn"}, ["Blis"] = {"zbl"}, ["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"}, ["Deva"] = {"hi", "mr", "ne", "kok", "mai"}, ["Ethi"] = {"am", "ti"}, ["Geor"] = {"ka"}, ["Grek"] = {"el"}, ["Gujr"] = {"gu"}, ["Guru"] = {"pa"}, ["Hebr"] = {"he", "iw", "yi"}, ["Jpan"] = {"ja"}, ["Khmr"] = {"km"}, ["Knda"] = {"kn"}, ["Kore"] = {"ko"}, ["Laoo"] = {"lo"}, ["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo", "es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn", "gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb", "ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd", "nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn", "ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv", "sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb", "frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh", "tpi", "tvl"}, ["Mlym"] = {"ml"}, ["Mymr"] = {"my"}, ["Nkoo"] = {"nqo"}, ["Orya"] = {"or"}, ["Sinh"] = {"si"}, ["Taml"] = {"ta"}, ["Telu"] = {"te"}, ["Thaa"] = {"dv"}, ["Thai"] = {"th"}, ["Tibt"] = {"dz"} } e2c364560ccc050dacdd276ebab1758584b937ad Template:Lang-x/doc/parameters 10 1007 2210 2023-08-22T01:52:38Z wikipedia>LethologicalLinguophile 0 Fix capitalization of script name in "ru-Latn" wikitext text/x-wiki ==lang-xx== <section begin=lang_xx_parameters /><!-- {{#lst:Template:Lang-x/doc/parameters|lang_xx_parameters}} --> {| class="wikitable" |+lang-xx supported parameters !parameter !! definition !! yields to !! alias |- |<code>text</code> || non-English text || – || <code><nowiki>{{{1}}}</nowiki></code> |- |<code>translit</code> || Latin script transliteration of the content in <code>text</code> || – || <code><nowiki>{{{2}}}</nowiki></code> |- |<code>translit-std</code> || standard used for the transliteration of the value of <code>translit</code>; accepted values are: <kbd>ISO</kbd>, <kbd>DIN</kbd>, <kbd>IAST</kbd>, <kbd>ALA</kbd>, <kbd>ALA-LC</kbd> || – || |- |{{nowrap|<code>translit-script</code>}} || transliteration standard's script identifier || – || |- |<code>translation</code> || literal English translation or gloss of the content in <code>text</code> || – || <code>lit</code>, <code><nowiki>{{{3}}}</nowiki></code> |- |<code>label</code> || label to be used instead of template-provided language label; may be wikilinked; special keyword <kbd>none</kbd> causes the template to render without any labels (including transliteration and translation labels) || – || |- |<code>link</code> || <kbd>yes</kbd> (default) links language name and static text associated with <code>translit</code> and <code>translation</code>; accepted values are: <kbd>no</kbd>, <kbd>yes</kbd>; {{para|link|no}} does not unlink wikilinked labels set by {{para|label}} || – || <code>links</code> |- |- |<code>code</code> || [[IETF language tag]] for the content in <code>text</code>; set by the template, overriding the template setting is discouraged || – || |- |<code>script</code> || IETF language script subtag; sometimes set by the template when the language of the content in <code>text</code> uses more than one writing system; always four alpha characters; a value of <kbd>Latn</kbd> <small>({{em|not}} "Latin"!)</small> forces italic rendering unless overridden by <code>italic</code>; overrides <code>rtl</code> || <code>italic</code> || |- |<code>region</code> || IETF language region subtag || – || |- |<code>variant</code> || IETF language variant subtag || – || |- |<code>rtl</code> || <kbd>yes</kbd> indicates that the writing system used for the content in <code>text</code> is right-to-left; accepted values are: <kbd>no</kbd> (default), <kbd>yes</kbd> || <code>script</code> || |- |<code>italic</code> || {{crossref|see table "lang-xx {{pipe}}italic{{=}} parameter operation"}}; accepted values are: <kbd>yes</kbd>, <kbd>no</kbd>, <kbd>unset</kbd>, <kbd>invert</kbd>, <kbd>default</kbd> || – || <code>italics</code>,<code>i</code> |- |<code>size</code> || specifies font size of the content in <code>text</code>; use a value suitable for use with the CSS <code>font-size</code> property; this should almost always be a relative value supplied in <kbd>{{mxt|%}}</kbd> or <kbd>{{mxt|em}}</kbd> units, not a fixed <kbd>{{!mxt|px}}</kbd> value. || – || |- |<code>cat</code> || inhibits automatic categorization; mirror version of <code>nocat</code>; accepted values are: <kbd>no</kbd>, <kbd>n</kbd>, <kbd>false</kbd>, <kbd>f</kbd>, <kbd>off</kbd>, <kbd>0</kbd> || – || |- |<code>nocat</code> || inhibits automatic categorization; mirror version of <code>cat</code>; accepted values are: <kbd>yes</kbd>, <kbd>y</kbd>, <kbd>true</kbd>, <kbd>t</kbd>, <kbd>on</kbd>, <kbd>1</kbd> || – || |- |} {| class="wikitable" |+lang-xx {{pipe}}italic= parameter operation |- !{{pipe}}italic= value !! description !! example code !! result !! html markup |- |rowspan="4"| {{plainlist| *parameter not present; *parameter present, not set; *invalid value}} |rowspan="7"| {{plainlist| *module applies style from: *&nbsp;&nbsp;template setting, or *&nbsp;&nbsp;{{para|script|latn}}; *else inherits from external markup; *invalid values treated as default}} | <code><nowiki>{{lang-ru|тундра}}</nowiki></code> || {{lang-ru|тундра}} || {{code|{{lang-ru|тундра}}}} |- | <code>{{deprecated code|red=yes|<nowiki>{{lang-ru|tûndra}}</nowiki>}}</code> || {{lang-ru|tûndra}} || {{code|{{lang-ru|tûndra}}}}<br />Incorrect markup; this requires {{para|script|latn}}. |- | <code><nowiki>{{lang-fr|toundra}}</nowiki></code> || {{lang-fr|toundra}} || {{code|{{lang-fr|toundra}}}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra}}</nowiki></code> || {{lang-ru|script=latn|tûndra}} || {{code|{{lang-ru|script=latn|tûndra}}}} |- |rowspan="3"| <kbd>default</kbd> || <code><nowiki>{{lang-ru|тундра|italic=default}}</nowiki></code> || {{lang-ru|тундра|italic=default}} || {{code|{{lang-ru|тундра|italic=default}}}} |- | <code><nowiki>{{lang-fr|toundra|italic=default}}</nowiki></code> || {{lang-fr|toundra|italic=default}} || {{code|{{lang-fr|toundra|italic=default}}}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra|italic=default}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=default}} || {{code|{{lang-ru|script=latn|tûndra|italic=default}}}} |- |rowspan="4"| <kbd>no</kbd> ||rowspan="4"| {{plainlist| *module applies upright style; *overrides {{para|script|latn}}; *overrides external markup}} | <code><nowiki>{{lang-ru|тундра|italic=no}}</nowiki></code> || {{lang-ru|тундра|italic=no}} || {{code|{{lang-ru|тундра|italic=no}}}} |- | <code><nowiki>{{lang-fr|toundra|italic=no}}</nowiki></code> || {{lang-fr|toundra|italic=no}} || {{code|{{lang-fr|toundra|italic=no}}}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra|italic=no}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=no}} || {{code|{{lang-ru|script=latn|tûndra|italic=no}}}} |- | <code><nowiki>''{{lang-ru|script=latn|tûndra|italic=no}}''</nowiki></code> || ''{{lang-ru|script=latn|tûndra|italic=no}}'' || {{code|''{{lang-ru|script=latn|tûndra|italic=no}}''}} |- |rowspan="2" | <kbd>yes</kbd> ||rowspan="2" | {{plainlist| *module applies italic style; *ignores {{para|script|latn}}}} | <code><nowiki>{{lang-ru|тундра|italic=yes}}</nowiki></code> || {{lang-ru|тундра|italic=yes}} || {{code|{{lang-ru|тундра|italic=yes}}}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra|italic=yes}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=yes}} || {{code|{{lang-ru|script=latn|tûndra|italic=yes}}}} |- |rowspan="4"| <kbd>unset</kbd> ||rowspan="4"| {{plainlist| *module applies no style; *inherits style from external markup; *overrides {{para|script|latn}}}} | <code><nowiki>{{lang-ru|тундра|italic=unset}}</nowiki></code> || {{lang-ru|тундра|italic=unset}} || {{code|{{lang-ru|тундра|italic=unset}}}} |- | <code><nowiki>''{{lang-ru|тундра|italic=unset}}''</nowiki></code> || ''{{lang-ru|тундра|italic=unset}}'' || {{code|''{{lang-ru|тундра|italic=unset}}''}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra|italic=unset}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=unset}} || {{code|{{lang-ru|script=latn|tûndra|italic=unset}}}} |- | <code><nowiki>''{{lang-ru|script=latn|tûndra|italic=unset}}''</nowiki></code> || ''{{lang-ru|script=latn|tûndra|italic=unset}}'' || {{code|''{{lang-ru|script=latn|tûndra|italic=unset}}''}} |- |rowspan="4"| <kbd>invert</kbd> ||rowspan="4"| {{plainlist| *module applies no style; *inverts style in internal markup{{dagger}}; *disables auto-italics *overrides script subtag <code>latn</code>;}} | <code><nowiki>{{lang-ru|тундра|italic=invert}}</nowiki></code> || {{lang-ru|тундра|italic=invert}} || {{code|{{lang-ru|тундра|italic=invert}}}} |- | <code><nowiki>{{lang-ru|''тундра''|italic=invert}}</nowiki></code> || {{lang-ru|''тундра''|italic=invert}} || {{code|{{lang-ru|''тундра''|italic=invert}}}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra|italic=invert}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=invert}} || {{code|{{lang-ru|script=latn|tûndra|italic=invert}}}} |- | <code><nowiki>{{lang-ru|script=latn|''tûndra''|italic=invert}}</nowiki></code> || {{lang-ru|script=latn|''tûndra''|italic=invert}} || {{code|{{lang-ru|script=latn|''tûndra''|italic=invert}}}} |- |} {{dagger}} compare {{para|italic|invert}} to {{para|italic|unset}}: :<code><nowiki>{{Lang-de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}</nowiki></code> ::{{Lang-de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}} :<code><nowiki>{{Lang-de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}</nowiki></code> ::{{Lang-de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}} <section end=lang_xx_parameters /> ==lang== <section begin=lang_parameters /><!-- {{#lst:Template:Lang-x/doc/parameters|lang_parameters}} --> {| class="wikitable" |+lang supported parameters !parameter !! definition !! yields to !! alias |- |<code>code</code> || [[IETF language tag]] for the content in <code>text</code> || – || <code><nowiki>{{{1}}}</nowiki></code> |- |<code>text</code> || non-English text || – || <code><nowiki>{{{2}}}</nowiki></code> |- |<code>rtl</code> || <kbd>yes</kbd> indicates that the writing system used for the content in <code>text</code> is right-to-left; accepted values are: <kbd>no</kbd> (default), <kbd>yes</kbd> || IETF script subtag in <code>code</code> (if provided) || |- |<code>italic</code> || {{crossref|see table "lang {{pipe}}italic{{=}} parameter operation"}}; accepted values are: <kbd>yes</kbd>, <kbd>no</kbd>, <kbd>unset</kbd>, <kbd>invert</kbd>, <kbd>default</kbd> || – || <code>italics</code>,<code>i</code> |- |<code>size</code> || specifies font size of the content in <code>text</code>; use a value suitable for use with the CSS <code>font-size</code> property; this should almost always be a relative value supplied in <kbd>{{mxt|%}}</kbd> or <kbd>{{mxt|em}}</kbd> units, not a fixed <kbd>{{!mxt|px}}</kbd> value. || – || |- |<code>nocat</code> || inhibits automatic categorization; mirror version of <code>cat</code>; accepted values are: <kbd>yes</kbd>, <kbd>y</kbd>, <kbd>true</kbd>, <kbd>t</kbd>, <kbd>on</kbd>, <kbd>1</kbd> || – || |- |<code>cat</code> || inhibits automatic categorization; mirror version of <code>nocat</code>; accepted values are: <kbd>no</kbd>, <kbd>n</kbd>, <kbd>false</kbd>, <kbd>f</kbd>, <kbd>off</kbd>, <kbd>0</kbd> || – || |- |} {| class="wikitable" id="italic parameter" |+lang {{pipe}}italic= parameter operation |- !{{pipe}}italic= value !! description !! example code !! result !! html markup |- |rowspan="4"| {{plainlist| *parameter not present; *parameter present, not set; *invalid value}} |rowspan="7"| {{plainlist| *module applies style from: *&nbsp;&nbsp;auto-italics or *&nbsp;&nbsp;script subtag <code>latn</code>; *else inherits from external markup; *invalid values treated as default}} | <code><nowiki>{{lang|ru|тундра}}</nowiki></code> || {{lang|ru|тундра}} || {{code|{{lang|ru|тундра}}}} |- | <code>{{deprecated code|red=yes|<nowiki>{{lang|ru|tûndra}}</nowiki>}}</code> || {{lang|ru|tûndra}} || {{code|{{lang|ru|tûndra}}}}<br />Incorrect markup; this requires {{para||ru-Latn}}. |- | <code><nowiki>{{lang|fr|toundra}}</nowiki></code> || {{lang|fr|toundra}} || {{code|{{lang|fr|toundra}}}} |- | <code><nowiki>{{lang|ru-Latn|tûndra}}</nowiki></code> || {{lang|ru-Latn|tûndra}} || {{code|{{lang|ru-Latn|tûndra}}}} |- |rowspan="3"| <kbd>default</kbd> || <code><nowiki>{{lang|ru|тундра|italic=default}}</nowiki></code> || {{lang|ru|тундра|italic=default}} || {{code|{{lang|ru|тундра|italic=default}}}} |- | <code><nowiki>{{lang|fr|toundra|italic=default}}</nowiki></code> || {{lang|fr|toundra|italic=default}} || {{code|{{lang|fr|toundra|italic=default}}}} |- | <code><nowiki>{{lang|ru-Latn|tûndra|italic=default}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=default}} || {{code|{{lang|ru-Latn|tûndra|italic=default}}}} |- |rowspan="4"| <kbd>no</kbd> ||rowspan="4"| {{plainlist| *module applies upright style; *overrides auto-italics *overrides script subtag <code>latn</code>; *overrides external markup}} | <code><nowiki>{{lang|ru|тундра|italic=no}}</nowiki></code> || {{lang|ru|тундра|italic=no}} || {{code|{{lang|ru|тундра|italic=no}}}} |- | <code><nowiki>{{lang|fr|toundra|italic=no}}</nowiki></code> || {{lang|fr|toundra|italic=no}} || {{code|{{lang|fr|toundra|italic=no}}}} |- | <code><nowiki>{{lang|ru-Latn|tûndra|italic=no}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=no}} || {{code|{{lang|ru-Latn|tûndra|italic=no}}}} |- | <code><nowiki>''{{lang|fr|toundra|italic=no}}''</nowiki></code> || ''{{lang|fr|toundra|italic=no}}'' || {{code|''{{lang|fr|toundra|italic=no}}''}} |- |rowspan="2" | <kbd>yes</kbd> ||rowspan="2" | {{plainlist| *module applies italic style; *ignores auto-italics; *ignores script subtag <code>latn</code>}} | <code><nowiki>{{lang|ru|тундра|italic=yes}}</nowiki></code> || {{lang|ru|тундра|italic=yes}} || {{code|{{lang|ru|тундра|italic=yes}}}} |- | <code><nowiki>{{lang|ru-Latn|tûndra|italic=yes}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=yes}} || {{code|{{lang|ru-Latn|tûndra|italic=yes}}}} |- |rowspan="4"| <kbd>unset</kbd> ||rowspan="4"| {{plainlist| *module applies no style; *inherits style from external markup; *disables auto-italics *overrides script subtag <code>latn</code>;}} | <code><nowiki>{{lang|ru|тундра|italic=unset}}</nowiki></code> || {{lang|ru|тундра|italic=unset}} || {{code|{{lang|ru|тундра|italic=unset}}}} |- | <code><nowiki>''{{lang|ru|тундра|italic=unset}}''</nowiki></code> || ''{{lang|ru|тундра|italic=unset}}'' || {{code|''{{lang|ru|тундра|italic=unset}}''}} |- | <code><nowiki>{{lang|ru-Latn|tûndra|italic=unset}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=unset}} || {{code|{{lang|ru-Latn|tûndra|italic=unset}}}} |- | <code><nowiki>''{{lang|ru-Latn|tûndra|italic=unset}}''</nowiki></code> || ''{{lang|ru-Latn|tûndra|italic=unset}}'' || {{code|''{{lang|ru-Latn|tûndra|italic=unset}}''}} |- |rowspan="4"| <kbd>invert</kbd> ||rowspan="4"| {{plainlist| *module applies no style; *inverts style in internal markup{{dagger}}; *disables auto-italics *overrides script subtag <code>latn</code>;}} | <code><nowiki>{{lang|ru|тундра|italic=invert}}</nowiki></code> || {{lang|ru|тундра|italic=invert}} || {{code|{{lang|ru|тундра|italic=invert}}}} |- | <code><nowiki>{{lang|ru|''тундра''|italic=invert}}</nowiki></code> || {{lang|ru|''тундра''|italic=invert}} || {{code|{{lang|ru|''тундра''|italic=invert}}}} |- | <code><nowiki>{{lang|ru-Latn|tûndra|italic=invert}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=invert}} || {{code|{{lang|ru-Latn|tûndra|italic=invert}}}} |- | <code><nowiki>{{lang|ru-Latn|''tûndra''|italic=invert}}</nowiki></code> || {{lang|ru-Latn|''tûndra''|italic=invert}} || {{code|{{lang|ru-Latn|''tûndra''|italic=invert}}}} |- |} {{dagger}} compare {{para|italic|invert}} to {{para|italic|unset}}: :<code><nowiki>{{Lang|de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}</nowiki></code> ::{{Lang|de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}} :<code><nowiki>{{Lang|de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}</nowiki></code> ::{{Lang|de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}} <section end=lang_parameters /> 9f872259d64409fe61de99a33ab37b30ea8b89c5 Template:UF-hcard-place 10 1221 2550 2023-08-22T10:47:27Z w>PK2 0 bypass redirect to [[Template:Flatlist]] wikitext text/x-wiki The HTML mark up produced by this template includes an [[HCard|hCard microformat]], which makes the place-name and location [[Parsing|parsable]] by computers, either acting automatically to catalogue article across Wikipedia, or via a browser tool operated by a person, to (for example) add the subject to an address book. For more information about the use of [[microformat]]s on Wikipedia, please see [[WP:UF|the microformat project]]. If the place or venue has an "established", "founded", "opened" or similar date that is specific to the day, use {{tl|start date}} [[Wikipedia:WikiProject Microformats/dates|unless the date is before 1583 CE]]. If it has a URL, use {{tl|URL}}. hCard uses HTML classes including: {{flatlist | * adr * category * country-name * extended-address * fn * label * locality * nickname * note * org * street-address * url * vcard }} '''Please do not rename or remove these classes nor collapse nested elements which use them.'''<includeonly>{{sandbox other||[[Category:Templates generating hCards]]}}</includeonly><noinclude> [[Category:Templates generating hCards]] [[Category:Microformat (uF) message templates]] </noinclude> 4dd5b2fed1d81094b0e7b4f51a6009b556b539b3 Template:UF-hcard-person 10 202 458 2023-08-22T10:48:21Z wikipedia>PK2 0 bypass redirect to [[Template:Flatlist]] wikitext text/x-wiki The HTML markup produced by this template includes an [[HCard|hCard microformat]], which makes the person's details [[Parsing|parsable]] by computers, either acting automatically to catalogue articles across Wikipedia or via a browser tool operated by a reader, to (for example) add the subject to an address book or database. For more information about the use of [[microformat]]s on Wikipedia, please see [[Wikipedia:WikiProject Microformats|the microformat project]]. === Sub-templates === Date-of-birth ("bday") information will only be included in the microformat if {{tl|birth date}}, or {{tl|birth date and age}} are used in the infobox. ([[Wikipedia:WikiProject Microformats/dates|Do not use these if the date is before 1583]]). Be cautious about using these if the person is still living, per [[WP:DOB]]. To include a URL, use {{Tl|URL}}. '''Please do not remove instances of these sub-templates.''' === Classes === hCard uses HTML classes including: {{Flatlist| *adr *agent *bday *birthplace *category *country-name *deathdate *deathplace *extended-address *family-name *fn (required) *given-name *honorific-prefix *honorific-suffix *label *locality *n *nickname *note *org *role *url *vcard }} '''Please do not rename or remove these classes nor collapse nested elements which use them.'''<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCards]]}} }}</includeonly><noinclude> [[Category:Templates generating hCards]] [[Category:Microformat (uF) message templates]] </noinclude> cf7d7c17b9e4a925f11599e609ceb43d23ba29ea Template:UF-hcard-geo 10 1391 2726 2023-08-22T10:49:12Z w>PK2 0 bypass redirect to [[Template:Flatlist]] wikitext text/x-wiki The HTML markup produced by this template includes an [[HCard| hCard microformat]], which makes the place-name and location [[Parsing|parsable]] by computers, either acting automatically to catalogue articles across Wikipedia, or via a browser tool operated by a person, to (for example) add the subject to an address book. Within the hCard is a [[Geo (microformat)|Geo microformat]], which additionally makes the [[Geographic coordinate system|coordinates]] (latitude & longitude) parsable, so that they can be, say, looked up on a map, or downloaded to a [[Global Positioning System|GPS]] unit. For more information about the use of [[microformat]]s on Wikipedia, please see [[Wikipedia:WikiProject Microformats|the microformat project]]. === Sub-templates === If the place or venue has "established", "founded", "opened" or similar dates, use {{tl|start date}} for the earliest of those dates [[Wikipedia:WikiProject Microformats/dates|unless the date is before 1583 CE]]. If it has a URL, use {{tl|URL}}. '''Please do not remove instances of these sub-templates.''' === Classes === hCard uses HTML classes including: {{Flatlist| *adr *agent *category *county-name *extended-address *fn *label *locality *nickname *note *org *region *street-address *uid *url *vcard }} Geo is produced by calling {{tl|coord}}, and uses HTML classes: {{Flatlist| *geo *latitude *longitude }} '''Please do not rename or remove these classes nor collapse nested elements which use them.''' === Precision === When giving coordinates, '''please use an [[Wikipedia:WikiProject Geographical coordinates#Precision|appropriate level of precision]]'''. Do '''not''' use {{tl|coord}}'s {{para|name}} parameter.<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | | [[Category:Templates with coordinates fields]] [[Category:Templates generating hCards and Geo]] }}</includeonly><noinclude>__NOTOC__{{doc}}</noinclude> b2e64e922ddf0a9b1b20a214e99d2d1a8d7f81c4 Template:UF-hcal-geo 10 1513 2848 2023-08-22T10:50:57Z w>PK2 0 bypass redirect to [[Template:Flatlist]] wikitext text/x-wiki The HTML markup produced by this template includes an [[hCalendar|hCalendar microformat]], which makes the event details [[parsing|parsable]] by computers, either acting automatically to catalogue article across Wikipedia, or via a browser tool operated by a person, to (for example) add the subject to a calendar or diary application. Within the hCalendar is a [[Geo (microformat)|Geo microformat]], which additionally makes the [[geographic coordinate system|coordinates]] (latitude & longitude) parsable, so that they can be, say, looked up on a map, or downloaded to a [[Global Positioning System|GPS]] unit. For more information about the use of [[microformat]]s on Wikipedia, please see [[Wikipedia:WikiProject Microformats|the microformat project]]. Dates will only be included if you use {{tl|Start date}} or {{tl|End date}} (use the former for single dates, [[Wikipedia:WikiProject Microformats/dates|but do not use any of these if the date is before 1583 CE]]). {{tl|End date}} requires that a time be specified, but display of this time may be suppressed by adding {{para|nodate|yes}} to the end. To include a URL, use {{tl|URL}}. hCalendar uses HTML classes including: {{Flatlist|indent=1| *attendee *dtend *dtstart *location *summary *url *vevent }} Geo is produced by calling {{tl|coord}}, and uses HTML classes: {{Flatlist|indent=1| *geo *latitude *longitude }} '''Please do not rename or remove these classes nor collapse nested elements which use them.'''<br/>Also, when giving coordinates, please don't be [[wikipedia:WikiProject Geographical coordinates#Precision|overly precise]]. <includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCalendars and Geo|{{PAGENAME}}]]}} }}</includeonly><noinclude> [[Category:Microformat (uF) message templates]] </noinclude> 17ca83a86600e9c6435d5e462efaadfbe2c34b4b Template:UF-geo-other 10 1687 3145 2023-08-22T10:51:40Z wikipedia>PK2 0 bypass redirect to [[Template:Flatlist]] wikitext text/x-wiki The HTML markup produced by this template emits an [[Geo (microformat)| Geo microformat]], which makes the location's [[Geographic coordinate system|coordinates]] (latitude & longitude) [[Parsing|parsable]], so that they can be, say, looked up on a map. As yet, [http://microformats.org/wiki/geo-extension-strawman the standard for doing this] for off-world bodies is still under development, but is supported in some microformat parsers (e.g. [http://buzzword.org.uk/swignition/ Swignition]). For more information about the use of [[microformat]]s on Wikipedia, please see [[WP:UF|the microformat project]]. Geo is usually produced by calling {{tl|coord}}, and uses HTML classes: {{Flatlist| *body *geo *latitude *longitude }} '''Please do not rename or remove these classes.''' When giving coordinates, please don't be [[Wikipedia:WikiProject Geographical coordinates#Precision|overly precise]]. [[Category:Templates generating Geo]]<noinclude> [[Category:Microformat (uF) message templates]] </noinclude> 613bb35611b91e35da4f93aa2271dff142885821 Module:Portal/images/e 828 848 1878 2023-08-24T02:42:07Z wikipedia>Paine Ellsworth 0 per edit request on talk page - include entry Scribunto text/plain --[==[ This is the "E" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "E". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be omitted. ]==] return { ["earth"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=", ["earth sciences"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=", ["earthquakes"] = "Good Friday Earthquake at Turnagain Arm.jpg|link=|alt=image", ["east asia"] = "East Asia Cutout Projection.png|border|link=|alt=map", ["east germany"] = "Flag of East Germany.svg|border|link=|alt=flag", ["east sussex"] = "Arms of the East Sussex County Council.svg|link=|alt=", ["east timor"] = "Flag of East Timor.svg|border|link=|alt=flag", ["eastern europe"] = "Eastern Europe (Robinson projection).png|border|link=|alt=map", ["ecology"] = "Earth Day Flag.png|border|link=|alt=icon", ["ecuador"] = "Flag of Ecuador.svg|border|link=|alt=flag", ["ed, edd n eddy"] = "Ed, Edd n Eddy logo.png|link=|alt=", ["edinburgh"] = "Flag of Edinburgh.svg|alt=flag", ["education"] = "Diploma icon.png|alt=icon", ["education in india"] = "Nalanda University India ruins.jpg|link=|alt=photo", ["egypt"] = "Flag of Egypt.svg|border|link=|alt=flag", ["eifel"] = "Geobox Mountain Range.svg|link=|alt=icon", ["el salvador"] = "Flag of El Salvador.svg|border|link=|alt=flag", ["electoral districts in canada"] = "Canpoligeoicon.png|link=|alt=", ["electronics"] = "Nuvola apps ksim.png|alt=icon", ["energy"] = "Crystal energy.svg|alt=icon", ["engineering"] = "Nuvola apps kcmsystem.svg|alt=icon", ["england"] = "Flag of England.svg|border|link=|alt=flag", ["english football"] = "Soccerball England.svg|link=|alt=", ["english language"] = "Shakespeare2.jpg|link=|alt=painting", ["english law"] = "Scale of justice 2 new.jpeg|alt=icon", ["entomology"] = "Orapia rayneri.svg|link=|alt=image", ["environment"] = "Aegopodium podagraria1 ies.jpg|alt=icon", ["equatorial guinea"] = "Flag of Equatorial Guinea.svg|border|link=|alt=flag", ["eritrea"] = "Flag of Eritrea.svg|border|link=|alt=flag", ["erotica and pornography"] = "Pornproject logo.svg|alt=icon", ["estonia"] = "Flag of Estonia.svg|border|link=|alt=flag", ["eswatini"] = "Flag of Eswatini.svg|border|link=|alt=flag", ["ethiopia"] = "Flag of Ethiopia.svg|border|link=|alt=flag", ["eurasia"] = "Eurasia (orthographic projection).svg|link=|alt=map", ["europe"] = "Europe (orthographic projection).svg|link=|alt=map", ["european military history"] = "Cartography of Europe (blue).svg|link=|alt=", ["european union"] = "Flag of Europe.svg|border|link=|alt=flag", ["eurovision song contest"] = "Wiki Eurovision Heart (Infobox).svg|border|link=|alt=icon", ["evangelical christianity"] = "ChristianitySymbolWhite.PNG|link=|alt=", ["evangelion"] = "Tree of life kircher plain.png|link=|alt=", ["evolutionary biology"] = "Tree of life.svg|alt=icon", ["extinct and endangered species"] = "ExtinctDodoBird.jpeg|link=|alt=", ["extraterrestrial"] = "Galaxy blue.jpg|link=|alt=photo", } 94070388d2b90fdc5d9bac8bcf57cd60115a825f Template:Infobox military person/doc 10 1366 2701 2023-08-24T03:10:51Z w>Shaan Sengupta 0 Added death cause wikitext text/x-wiki {{#ifeq:{{{noheader|}}}|yes|| {{Documentation subpage}} {{Person infobox header}} {{High-use}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} }} A military person infobox may be used to summarize information about an individual military person, such as a soldier or military leader, or for uniformed officers in non-military branches of government. This template may be used as a module (sub-template) of {{tl|Infobox person}}; see [[Wikipedia:Infobox modules]] for guidance on such usage. == Usage == === Blank template === The infobox should be added as shown below: {{Parameter names example|_template=|embed|width_style|honorific prefix|honorific_prefix|name|honorific suffix|honorific_suffix|image|image_size|alt|caption|native_name|native_name_lang|birth_name|other_name|nickname|birth_date|birth_place|death_date|death_place|death_cause|placeofburial_label|placeofburial|placeofburial_coordinates|allegiance|branch_label|branch|serviceyears_label|serviceyears|rank_label|rank|servicenumber|unit|commands|known_for|battles_label|battles|awards|memorials|alma_mater|spouse|relations|otherwork|laterwork|signature|signature_size|signature alt|signature_alt|website|homepage|URL|module}} <syntaxhighlight lang="wikitext" style=overflow:auto;> {{Infobox military person |honorific_prefix = |name = |honorific_suffix = |image = |image_upright = |alt = |caption = |native_name = |native_name_lang = |birth_name = |other_name = |nickname = |birth_date = <!--{{birth date and age|YYYY|MM|DD}} or {{birth date|YYYY|MM|DD}} if dead--> |birth_place = |death_date = <!--{{death date and age|dYYYY|dMM|dDD|YYYY|MM|DD}}--> |death_place = |death_cause = |placeofburial = |placeofburial_label = |placeofburial_coordinates = <!--{{coord|LAT|LONG|display=inline,title}}--> |allegiance = |branch = |branch_label = <!--"Branch" or "Service"--> |serviceyears = |serviceyears_label = |rank = |rank_label = |servicenumber = |unit = |commands = |known_for = |battles = |battles_label = |awards = |memorials = |alma_mater = |spouse = <!--{{marriage|name|start date|end date}}; add spouse if reliably sourced--> |children = |relations = |laterwork = |signature = |signature_size = |signature_alt = |website = <!--{{URL|example.com}}--> |module = }}</syntaxhighlight> === Parameters === '''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]). Please keep in mind [[WP:ICONDECORATION]] for the use of images. * '''honorific_prefix''' – titles such as "Sir". * '''name''' – the full name of the person. * '''honorific_suffix''' – post-nominal honours such as "OBE" * '''image''' – ''optional'' – an image of the person. The image must be given in the form <code><nowiki>Example.jpg</nowiki></code>; an image of a nation's highest award, such as the [[Medal of Honor]] or [[Victoria Cross]], may be displayed for recipients of it, especially as a placeholder. * '''image_upright''' – ''optional'' – See [[WP:UPRIGHT]] * '''image_size''' – ''optional'' – the size of the image in px. Give the number without the px suffix (for example, ''220'' rather than ''220px''). {{para|image_upright}} is preferred. * '''alt''' [[Wikipedia:Alternative text for images|Alt text]], if used, must be placed here. * '''caption''' – ''optional'' – the text to be placed below the image. * '''native_name''' – the person's name in their own language * '''native_name_lang''' – [[List of ISO 639-2 codes|ISO 639-2 code]] e.g. "fre" or "fra" for French. If more than one, use {{Tl|lang}} for {{Para|native_name}} instead * '''birth_name''' – ''optional'' – the name the person was born with, if different from that used later in life. * '''other_name''' – ''optional'' – other names by which the person was known. * '''nickname''' – ''optional'' – nickname(s) by which the person was known. * '''birth_date''' – ''optional'' – the date of birth, if known, using {{Tl|Birth date}} or {{Tl|Birth date and age}}. * '''birth_place''' – ''optional'' – the person's birthplace. * '''death_date''' – ''optional'' – the date of death, if applicable and known, in {{Tl|Death date and age}}. * '''death_place''' – ''optional'' – the place where the person died. * '''death_cause''' - ''optional'' - the cause of death of the person. * '''placeofburial''' – ''optional'' – the place where the person's remains are buried or otherwise interred. * '''placeofburial_label''' – ''optional'' – the label of the ''placeofburial'' field (above). The ''placeofburial'' field is normally preceded by the label "Buried"; if this is not appropriate for the particular manner in which the remains were disposed of, a different label can be specified here. * '''placeofburial_coordinates''' – ''optional'' – the precise location where the person's remains are buried or otherwise interred. {{UF-coord}} * '''allegiance''' – ''optional'' – the country or other power the person served. Multiple countries may be indicated together with the corresponding dates. This field should not be used to indicate a particular service branch, which is better indicated by the <code>branch</code> field (below). * '''branch''' – ''optional'' – the service branch (Army, Navy, etc.) the person was a part of; this should be left blank for people who were not part of a formal armed service, or who predate the establishment of formal service branches. * '''branch_label''' – ''optional'' – the label of the ''branch'' field (above). The ''branch'' field is normally preceded by "Service/Branch"; to avoid word wrapping, one of "Service" or "Branch" can be specified. * '''serviceyears''' – ''optional'' – the years during which the person served. * '''serviceyears_label''' – ''optional'' – the label to use for the '''serviceyears''' field (above); defaults to "Years of service". * '''rank''' – ''optional'' – the highest rank achieved by the person. The rank being awarded posthumously, may be noted. In cases where the person held different ranks in different armies, multiple ranks should be specified with dates and country noted for each. Separate multiple entries using {{Tl|Plainlist}}. * '''rank_label''' – ''optional'' – the label to use for the '''rank''' field (above); defaults to "Rank". * '''service number''' – ''optional'' – the [[service number]] held by the individual during military service. Do not supply for living persons unless published by secondary sources such as the ''[[London Gazette]]''. * '''unit''' – ''optional'' – for persons who are not notable as commanding officers, the unit (company, battalion, regiment, etc.) in which they served. This should be omitted if the commands are specified (as below). * '''commands''' – ''optional'' – for persons who are notable as commanding officers, the units they commanded. Dates should be given if multiple notable commands were held. Separate multiple entries using {{Tl|Plainlist}}. * '''known_for''' or '''known''' – ''optional'' – for other areas of notability such as war crimes or notable orders. * '''battles''' – ''optional'' – any notable battles or wars in which the person participated. This should be omitted if a {{tl|Campaignbox}} is used in conjunction with this template. Separate multiple entries using {{Tl|Plainlist}}. * '''battles_label''' – ''optional'' – the label to use for the '''battles''' field (above); defaults to "Battles/wars". * '''awards''' – ''optional'' – any ''notable'' awards or decorations the person received; exhaustive lists should be worked into the prose. Separate multiple entries using {{Tl|Plainlist}}. * '''memorials''' – ''optional'' – Memorials or monuments to the subject (e.g. statues, streets named after them). Separate multiple entries using {{Tl|Plainlist}}. * '''alma_mater''' – ''optional'' – educational institutions the subject graduated from and degree received, in parentheses. Separate multiple entries using {{Tl|Plainlist}} * '''spouse''' – ''optional'' – list the service members spouse(s) if verifiable from a reliable source. * '''children''' – ''optional'' – Only if independently notable themselves or particularly relevant. Number of children (e.g., three or 3), or list of names if notable, in which case, separate entries using <nowiki>{{Plainlist}}</nowiki> or <nowiki>{{Unbulleted list}}</nowiki>. For privacy reasons, consider omitting the names of children of living persons, unless notable. * '''relations''' – ''optional'' – any notable relations. Only reasonably close ones should be indicated; an exhaustive listing of an extensive family tree should be avoided here. * '''laterwork''' – ''optional'' – profession or positions held by the person other than military service (displays with the label "Other work"). Separate multiple entries using {{Tl|Plainlist}}. * '''signature''' – ''optional'' – an image of the person's signature. The image must be given in the form <code><nowiki>example.jpg</nowiki></code>. * '''signature_size''' – ''optional'' – the size of the signature in px. Give the number without the px suffix. * '''signature_alt''' – ''optional'' – alt text for the signature. * '''website''' – ''optional'' – Use {{Tl|URL}} * '''module''' – ''optional'' – Embedded template === Lists === For parameters such as {{para|awards}}, {{para|unit}} or {{para|commands}}, which take lists of values, unbulleted or bulleted lists may be preferable. See [[MOS:VLIST]]. '''Unbulleted lists''' can be created with {{tl|plainlist}} or {{tl|ublist}}. The use of {{tag|br|s}} is common but {{dcr|semantically incorrect.}} See [[MOS:NOBR]]. {{markup|<nowiki>awards = {{plainlist| * Purple Heart (3) * Bronze Star (2) * World War II Victory Medal * Presidential Unit Citation * Orange Lanyard }}</nowiki>|{{plainlist| * Purple Heart (3) * Bronze Star (2) * World War II Victory Medal * Presidential Unit Citation * Orange Lanyard}} }} {{markup|<nowiki>awards = {{unbulleted list | Purple Heart (3) | Bronze Star (2) | World War II Victory Medal | Presidential Unit Citation | Orange Lanyard }}</nowiki>|{{unbulleted list | Purple Heart (3) | Bronze Star (2) | World War II Victory Medal | Presidential Unit Citation | Orange Lanyard}} }} '''Bulleted lists''' can be created with * markup. {{markup|<nowiki>awards = * Purple Heart (3) * Bronze Star (2) * World War II Victory Medal * Presidential Unit Citation * Orange Lanyard </nowiki>| * Purple Heart (3) * Bronze Star (2) * World War II Victory Medal * Presidential Unit Citation * Orange Lanyard }} === Embedding === Many military people and uniformed officers in other services are known primarily for something other than their military service (e.g. [[Douglas Fairbanks Jr.]], [[Vivek Murthy]], or [[James Stewart]]), and hence it may be desirable to merge this infobox with another one, like {{tl|Infobox person}}. By adding {{para|embed|yes}} to the first line of the infobox code, one can embed this infobox into another, displaying one continuous infobox. Though the process is a little complicated, it is possible to insert this infobox into most if not all other infoboxes. For {{tl|Infobox person}}, this infobox is passed as a "module" using the {{para|module}} syntax. The title for the embedded section can be changed using {{para|embed_title}}. {{Infobox person |name = John Infobox |birth_name = John Military Infobox |birth_date = {{birth date|1950|5|5|df=y}} |birth_place = Template City, Country |death_date = {{death date and age|2010|6|10|1950|5|5|df=y}} |occupation = Actor |years_active = 1970–1990 |module = {{Infobox military person |embed = yes |embed_title = Fictitious military career |allegiance = United States |branch = U.S. Army Air Forces |serviceyears = 1980–1985 |rank = Brigadier general |website = example.com }} }} <syntaxhighlight lang="wikitext" style=overflow:auto;> {{Infobox person |name = John Infobox |birth_name = John Military Infobox |birth_date = {{birth date|1950|5|5|df=y}} |birth_place = Template City, Country |death_date = {{death date and age|2010|6|10|1950|5|5|df=y}} |occupation = Actor |years_active = 1970–1990 |module = {{Infobox military person |embed = yes |embed_title = Fictitious military career |allegiance = United States |branch = U.S. Army Air Forces |serviceyears = 1980–1985 |rank = Brigadier general |website = {{URL|example.com}} }} }}</syntaxhighlight> === Example === '''Templates demonstrated:''' {{tl|birth date}}, {{tl|death date and age}}, {{tl|plainlist}}, {{tl|tree list}}, {{tl|tree list/end}}, and {{tl|ublist}}. {{Infobox military person |width_style = person |name = Carwood Lipton<!-- |image = Carwood lipton 506e.jpg |caption = First Lieutenant Lipton in dress uniform--> |birth_name = Clifford Carwood Lipton |nickname = "Lip" |birth_date = {{birth date|1920|01|30}} |birth_place = [[Huntington, West Virginia]] |death_date = {{death date and age|2001|12|16|1920|01|30}} |death_place = [[Pinehurst, North Carolina]] |allegiance = United States |branch_label = Branch |branch = [[United States Army]] |serviceyears_label = Service&nbsp;years |serviceyears = 1942–1945 |rank = [[First lieutenant (United States)|First lieutenant]] |unit = {{plainlist| * [[E Company, 506th Infantry Regiment (United States)|Easy Company]], * [[506th Infantry Regiment (United States)|506th Infantry Regiment]], * [[101st Airborne Division]]}} |battles_label = Conflict |battles = {{tree list}} * World War II ** [[American airborne landings in Normandy|Normandy landings]] ** [[Operation Market Garden|''Market Garden'']] ** [[Battle of the Bulge]] {{tree list/end}} |awards = {{unbulleted list|[[Bronze Star]] (2)|[[Purple Heart]] (3)}} |otherwork = Glass executive }} <syntaxhighlight lang="wikitext"> {{Infobox military person |width_style = person |name = Carwood Lipton<!-- |image = Carwood lipton 506e.jpg |caption = First Lieutenant Lipton in dress uniform--> |birth_name = Clifford Carwood Lipton |nickname = "Lip" |birth_date = {{birth date|1920|01|30}} |birth_place = [[Huntington, West Virginia]] |death_date = {{death date and age|2001|12|16|1920|01|30}} |death_place = [[Pinehurst, North Carolina]] |allegiance = United States |branch_label = Branch |branch = [[United States Army]] |serviceyears_label = Service&nbsp;years |serviceyears = 1942–1945 |rank = [[First lieutenant (United States)|First lieutenant]] |unit = {{plainlist| * [[E Company, 506th Infantry Regiment (United States)|Easy Company]], * [[506th Infantry Regiment (United States)|506th Infantry Regiment]], * [[101st Airborne Division]]}} |battles_label = Conflict |battles = {{tree list}} * World War II ** [[American airborne landings in Normandy|Normandy landings]] ** [[Operation Market Garden|''Market Garden'']] ** [[Battle of the Bulge]] {{tree list/end}} |awards = {{unbulleted list|[[Bronze Star]] (2)|[[Purple Heart]] (3)}} |otherwork = Glass executive }} </syntaxhighlight> == TemplateData == {{TemplateData header}} <templatedata> { "params": { "honorific_prefix": { "required": false, "label": "Honorific Prefix", "type": "string", "description": "Titles such as 'Sir'." }, "name": { "required": false, "label": "Name", "type": "string", "description": "The full name of the person." }, "honorific_suffix": { "required": false, "label": "Honorific Suffix", "type": "string", "description": "Post-nominal honours such as 'OBE'" }, "native_name": { "required": false, "label": "Native Name", "type": "string", "description": "The person's name in their own language" }, "native_name_lang": { "required": false, "label": "Native Name Language", "type": "string", "description": "Language in which the native name is given" }, "image": { "required": false, "label": "Image", "type": "wiki-page-name", "description": "The image must be given in the form Example.jpg" }, "image_upright": { "required": false, "label": "Image scaling", "type": "number", "description": "Image scaling factor, see WP:UPRIGHT" }, "image_size": { "required": false, "label": "Image size", "type": "number", "description": "Size of the image in pixels." }, "alt": { "required": false, "label": "Alt", "type": "string", "description": "Alternative text, if used, must be placed here." }, "caption": { "required": false, "label": "Caption", "type": "string", "description": "Caption for the image" }, "birth_date": { "required": false, "label": "Birth Date", "type": "line", "description": "The Date of Birth, if known," }, "death_date": { "required": false, "label": "Death Date", "type": "line", "description": "The Date of Death, if applicable and known," }, "birth_place": { "required": false, "label": "Birth Place", "type": "string", "description": "The person's birth place." }, "death_place": { "required": false, "label": "Death Place", "type": "string", "description": "The place where the person died." }, "death_cause": { "required": false, "label": "Death Cause", "type": "string", "description": "The cause of the person's death." }, "placeofburial": { "required": false, "label": "Place of Burial", "type": "string", "description": "The place where the person's remains are buried or otherwise interred." }, "placeofburial_label": { "required": false, "label": "Place of Burial Label", "type": "string", "description": "The label to use for the place of burial field" }, "placeofburial_coordinates": { "required": false, "label": "Place of burial Coordinates", "type": "string", "description": "The precise location where the person's remains are buried or otherwise interred. " }, "nickname": { "required": false, "label": "Nick Name", "type": "string", "description": "Nick name(s) by which the person was known." }, "birth_name": { "required": false, "label": "Birth Name", "type": "string", "description": "The name of the person was born with." }, "allegiance": { "required": false, "label": "Allegiance", "type": "string", "description": "The country or other power the person served." }, "branch": { "required": false, "label": "Branch", "type": "string", "description": "The service branch (Army, Navy, etc.)" }, "serviceyears": { "required": false, "label": "Service Years", "type": "number", "description": "The years during which the person served." }, "rank": { "required": false, "label": "Rank", "type": "string", "description": "The highest rank achieved by the person" }, "servicenumber": { "required": false, "label": "Service Number", "type": "string", "description": "The service number held by the individual during military service. " }, "unit": { "required": false, "label": "Unit", "type": "string", "description": "The unit in which the person served(company, battalion, regiment, etc.)" }, "commands": { "required": false, "label": "Commands", "type": "string", "description": "For persons who are notable as commanding officers, the units they commanded." }, "known_for": { "required": false, "label": "Known for", "type": "string", "description": "For other areas of notability such as war crimes or notable orders." }, "battles": { "required": false, "label": "Battles", "type": "string", "description": "Any notable battles or wars in which the person participated." }, "battles_label": { "required": false, "label": "Battles Label", "type": "string", "description": "The label to use for the battles field" }, "awards": { "required": false, "label": "Awards", "type": "string", "description": "Any notable awards or decorations the person received" }, "alma_mater": { "required": false, "label": "Alma mater", "type": "string", "description": "The linked name of attended higher education institution(s)." }, "spouse": { "required": false, "label": "Spouse", "type": "string", "description": "Notable spouse if verifiable from a reliable source." }, "children": { "required": false, "label": "Children", "type": "string", "description": "Notable children or number of children if verifiable from a reliable source." }, "relations": { "required": false, "label": "Relations", "type": "string", "description": "Any notable relations." }, "laterwork": { "required": false, "label": "Later Work", "type": "string", "description": "Profession or positions held by the person other than military service" }, "signature": { "required": false, "label": "Signature", "type": "string", "description": "An image of the person's signature." }, "website": { "required": false, "label": "Website", "type": "string", "description": "Military's website" }, "branch_label": { "label": "Branch Label", "description": "The label of the branch field (above). The branch field is normally preceded by \"Service/Branch\"; to avoid word wrapping, one of \"Service\" or \"Branch\" can be specified.", "example": "Branch", "type": "string", "default": "Service/Branch" } }, "format": "{{_\n| _____________ = _\n}}\n", "paramOrder": [ "honorific_prefix", "name", "honorific_suffix", "native_name", "native_name_lang", "image", "image_upright", "image_size", "alt", "caption", "birth_date", "death_date", "death_cause", "birth_place", "death_place", "placeofburial", "placeofburial_label", "placeofburial_coordinates", "nickname", "birth_name", "allegiance", "branch", "branch_label", "serviceyears", "rank", "servicenumber", "unit", "commands", "known_for", "battles", "battles_label", "awards", "alma_mater", "spouse", "children", "relations", "laterwork", "signature", "website" ] } </templatedata> == Tracking category == * {{Category link with count|Pages using infobox military person with unknown parameters}} * {{Category link with count|Infobox military person image param needs updating}} == See also == * {{tlg|Infobox military unit}} * {{tlg|Infobox officeholder}}<!-- --><includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Military infobox templates|Person]] [[Category:People and person infobox templates|Military person]] [[Category:Biographical templates usable as a module|Military person]] [[Category:Infobox templates with module parameter|Military person]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> <noinclude> [[Category:WikiProject Military history template instructions|Military person infobox]] </noinclude> f2f58bd3347bb5f2dcc79323e1fd43b6c3975c8a Template:Tree list/doc 10 492 1089 2023-08-26T12:16:07Z wikipedia>WOSlinker 0 remove {{Tree list/final branch}} as not needed wikitext text/x-wiki {{doc subpage}} {{When on basepage|{{Uses TemplateStyles|Template:Tree list/styles.css}}}} This family of templates can be used to create a properly structured and accessible tree. This can be used to display family trees, succession to thrones, etc. They comprise: {{Tree list}} * {{tl|Tree list}} ** {{tl|Tree list/end}} ** {{tl|Tree list/branching}} {{Tree list/end}} == Syntax == === Start and finish of the tree === The tree must include a start and finish, using the templates {{tl|Tree list}} and {{tl|Tree list/end}} respectively. The tree is essentially a series of nested lists built with the asterisk *. <syntaxhighlight lang="wikitext"> {{Tree list}} * Here goes the content of the tree using asterisks. {{Tree list/end}} </syntaxhighlight> === The branches of the tree === Each branch of the tree is built using nested lists: <syntaxhighlight lang="wikitext"> {{Tree list}} * A first level branch ** A second level branch *** A third level branch {{Tree list/end}} </syntaxhighlight> produces {{Tree list}} * A first level branch ** A second level branch *** A third level branch {{Tree list/end}} === Unlabelled branches === An unlabelled branch may be formed by using the {{tl|Tree list/branching}} template. <syntaxhighlight lang="wikitext">{{Tree list}} * A first level branch ** {{Tree list/branching}} *** A third level branch *** Another third level branch *** The final third level branch ** A second level branch ** {{Tree list/branching}} <!--- This branch ends the second level ---> *** A third level branch *** The final third level branch {{Tree list/end}}</syntaxhighlight> produces the following: {{Tree list}} * A first level branch ** {{Tree list/branching}} *** A third level branch *** Another third level branch *** The final third level branch ** A second level branch ** {{Tree list/branching}} *** A third level branch *** The final third level branch {{Tree list/end}} ==Collapse== To collapse a tree place {{tlx|Hidden begin}} before {{tlx|Tree list}} and enclose {{tlx|Tree list/end}} with {{tlx|Hidden end}}. {{tlx|Hidden begin}} default to just a show link on the right, but it takes a number of parameters see the template's documentation. In this case: |border=1px #aaa solid — a solid border around the tree |title=Demonstration tree — a suitable name for the tree |ta1=center – center the title= name <syntaxhighlight lang="wikitext"> {{hidden begin|border=1px #aaa solid|title=Demonstration tree|ta1=center}} {{Tree list}} * A first level branch ** {{Tree list/branching}} *** A third level branch *** Another third level branch *** The final third level branch ** A second level branch ** {{Tree list/branching}} <!--- This branch ends the second level ---> *** A third level branch *** The final third level branch {{Tree list/end}} {{Hidden end}} </syntaxhighlight> {{hidden begin|border=1px #aaa solid|ta1=center||title=Demonstration tree}} {{Tree list}} * A first level branch ** {{Tree list/branching}} *** A third level branch *** Another third level branch *** The final third level branch ** A second level branch ** {{Tree list/branching}} <!--- This branch ends the second level ---> *** A third level branch *** The final third level branch {{Tree list/end}} {{Hidden end}} If the parameter <code>|expanded=on</code> is added to {{tlx|hidden begin}} then the box will be drawn expanded rather than the default, which is to collapse the tree. == Examples == ===A family tree === '''Code :''' <syntaxhighlight lang="wikitext"> {{hidden begin|border=1px #aaa solid|title=A family tree (descendants of Henry VII of England)|ta1=center|expanded=on}} {{Tree list}} *[[Image:Simple gold crown.svg|15px]] '''(1)''' [[Henry VII of England|Henry VII]] (1457 - 1509) **[[Arthur, Prince of Wales]] (1486 - 1502) **[[Margaret Tudor|Margaret, Queen of Scots]] (1489 - 1541) ***[[James, Duke of Rothesay]] (1507 - 1508) ***[[Arthur, Duke of Rothesay]] (1509 - 1510) ***[[Image:Simple silver crown.svg|15px]] [[James V of Scotland]] (1512 - 1542) ****[[Image:Simple silver crown.svg|15px]] [[Mary, Queen of Scots]] (1542 - 1587) *****[[Image:Simple silver crown.svg|15px]] [[Image:Simple gold crown.svg|15px]] '''(7)''' [[James VI and I|James VI of Scotland and I of England]] (1566 - 1625) ******''From whom succeeding English, Scottish and British monarchs are descended.'' ***[[Alexander Stewart, Duke of Ross]] (1514 - 1515) ***[[Margaret Douglas|Margaret Douglas, Countess of Lennox]] (1515 - 1578) **[[Image:Simple gold crown.svg|15px]] '''(2)''' [[Henry VIII of England]] (1491 - 1547) ***[[Henry, Duke of Cornwall]] (1511 - 1511) ***[[Image:Simple gold crown.svg|15px]] '''(5)''' [[Mary I of England]] (1516 - 1558) ***[[Image:Simple gold crown.svg|15px]] '''(6)''' [[Elizabeth I of England]] (1533 - 1603) ***[[Image:Simple gold crown.svg|15px]] '''(3)''' [[Edward VI of England]] **[[Elizabeth Tudor (daughter of Henry VII)|Elizabeth Tudor]] (1492 - 1495) **[[Mary Tudor (queen consort of France)|Mary, Queen of France]] (1496 - 1533) ***Henry Brandon (1516 - 1522) ***[[Frances Grey, Duchess of Suffolk]] (1517 - 1547) ****[[Image:Simple gold crown.svg|15px]] '''(4)''' [[Lady Jane Grey]] (1536 - 1553) ****[[Lady Catherine Grey|Catherine Seymour, Countess of Hertford]] (1540 - 1568) ****[[Lady Mary Grey|Lady Mary Keyes]] (1545 - 1578) ****Elizabeth Stokes (1555 - 1556) ***[[Eleanor Clifford, Countess of Cumberland]] (1519 - 1547) ****''From whom are descended the [[Earl of Derby|Earls of Derby]]'' ***[[Henry Brandon, 1st Earl of Lincoln]] (1523 - 1534) **[[Edmund Tudor, Duke of Somerset]] (1499 - 1500) **[[Katherine Tudor (1503)|Katherine Tudor]] (1503 - 1503) {{Tree list/end}} {{hidden end}} </syntaxhighlight> which gives {{hidden begin|border=1px #aaa solid|title=A family tree (descendants of Henry VII of England) |ta1=center|expanded=on}} {{Tree list}} *[[Image:Simple gold crown.svg|15px]] '''(1)''' [[Henry VII of England|Henry VII]] (1457 - 1509) **[[Arthur, Prince of Wales]] (1486 - 1502) **[[Margaret Tudor|Margaret, Queen of Scots]] (1489 - 1541) ***[[James, Duke of Rothesay]] (1507 - 1508) ***[[Arthur, Duke of Rothesay]] (1509 - 1510) ***[[Image:Simple silver crown.svg|15px]] [[James V of Scotland]] (1512 - 1542) ****[[Image:Simple silver crown.svg|15px]] [[Mary, Queen of Scots]] (1542 - 1587) *****[[Image:Simple silver crown.svg|15px]] [[Image:Simple gold crown.svg|15px]] '''(7)''' [[James VI and I|James VI of Scotland and I of England]] (1566 - 1625) ******''From whom succeeding English, Scottish and British monarchs are descended.'' ***[[Alexander Stewart, Duke of Ross]] (1514 - 1515) ***[[Margaret Douglas|Margaret Douglas, Countess of Lennox]] (1515 - 1578) **[[Image:Simple gold crown.svg|15px]] '''(2)''' [[Henry VIII of England]] (1491 - 1547) ***[[Henry, Duke of Cornwall]] (1511 - 1511) ***[[Image:Simple gold crown.svg|15px]] '''(5)''' [[Mary I of England]] (1516 - 1558) ***[[Image:Simple gold crown.svg|15px]] '''(6)''' [[Elizabeth I of England]] (1533 - 1603) ***[[Image:Simple gold crown.svg|15px]] '''(3)''' [[Edward VI of England]] **[[Elizabeth Tudor (daughter of Henry VII)|Elizabeth Tudor]] (1492 - 1495) **[[Mary Tudor (queen consort of France)|Mary, Queen of France]] (1496 - 1533) ***Henry Brandon (1516 - 1522) ***[[Frances Grey, Duchess of Suffolk]] (1517 - 1547) ****[[Image:Simple gold crown.svg|15px]] '''(4)''' [[Lady Jane Grey]] (1536 - 1553) ****[[Lady Catherine Grey|Catherine Seymour, Countess of Hertford]] (1540 - 1568) ****[[Lady Mary Grey|Lady Mary Keyes]] (1545 - 1578) ****Elizabeth Stokes (1555 - 1556) ***[[Eleanor Clifford, Countess of Cumberland]] (1519 - 1547) ****''From whom are descended the [[Earl of Derby|Earls of Derby]]'' ***[[Henry Brandon, 1st Earl of Lincoln]] (1523 - 1534) **[[Edmund Tudor, Duke of Somerset]] (1499 - 1500) **[[Katherine Tudor (1503)|Katherine Tudor]] (1503 - 1503) {{Tree list/end}} {{hidden end}} ===An ancestry tree=== [[Ahnentafel]] style trees can be can be displayed using this template, but usually for less than 6 generations the customised Ahnentafel templates are clearer (see [[Template:Ahnentafel/doc]]). There is also an ahnentafel template ({{tl|Ahnentafel-tree}}), that is based on this one, that makes construction this tree simpler. <syntaxhighlight lang="wikitext"> {{hidden begin|border=1px #aaa solid|title=Ancestry tree of Prince William, Duke of Cambridge|ta1=center|expanded=on}} {{Tree list}} *1. '''[[William, Prince of Wales]]''' (born 21 June 1982) **2. [[Charles III|Charles III of the United Kingdom]] (born 14 November 1948) ***4. [[Prince Philip, Duke of Edinburgh|Prince Philip of Greece and Denmark]] (10 June 1921 – 9 April 2021) ****8. [[Prince Andrew of Greece and Denmark]] (20 January 1882 – 3 December 1944) ****9. [[Princess Alice of Battenberg]] (25 February 1885 – 5 December 1969) ***5. [[Elizabeth II|Elizabeth II of the United Kingdom]] (21 April 1926 – 8 September 2022) ****10. [[George VI|George VI of the United Kingdom]] (14 December 1895 – 6 February 1952) ****11. [[Queen Elizabeth The Queen Mother|Lady Elizabeth Bowes-Lyon]] (4 August 1900 – 30 March 2002) **3. [[Diana, Princess of Wales|Lady Diana Spencer]] (1 July 1961 – 31 August 1997) ***6. [[John Spencer, 8th Earl Spencer]] (21 April 1926 – 29 March 1992) ****12. [[Albert Spencer, 7th Earl Spencer]] (23 May 1892 – 9 June 1975) ****13. [[Cynthia Spencer, Countess Spencer|Lady Cynthia Hamilton]] (16 August 1897 – 4 December 1972) ***7. [[Frances Shand Kydd|The Honourable Frances Roche]] (20 January 1936 – 3 June 2004) ****14. [[Maurice Roche, 4th Baron Fermoy]] (15 May 1885 – 8 July 1955) ****15. [[Ruth Roche, Baroness Fermoy|Ruth Gill]] (2 October 1908 – 6 July 1993) {{Tree list/end}} {{hidden end}} </syntaxhighlight> {{hidden begin|border=1px #aaa solid|title=Ancestry tree of Prince William, Duke of Cambridge|ta1=center|expanded=on}} {{Tree list}} *1. '''[[William, Prince of Wales]]''' (born 21 June 1982) **2. [[Charles III|Charles III of the United Kingdom]] (born 14 November 1948) ***4. [[Prince Philip, Duke of Edinburgh|Prince Philip of Greece and Denmark]] (10 June 1921 – 9 April 2021) ****8. [[Prince Andrew of Greece and Denmark]] (20 January 1882 – 3 December 1944) ****9. [[Princess Alice of Battenberg]] (25 February 1885 – 5 December 1969) ***5. [[Elizabeth II|Elizabeth II of the United Kingdom]] (21 April 1926 – 8 September 2022) ****10. [[George VI|George VI of the United Kingdom]] (14 December 1895 – 6 February 1952) ****11. [[Queen Elizabeth The Queen Mother|Lady Elizabeth Bowes-Lyon]] (4 August 1900 – 30 March 2002) **3. [[Diana, Princess of Wales|Lady Diana Spencer]] (1 July 1961 – 31 August 1997) ***6. [[John Spencer, 8th Earl Spencer]] (21 April 1926 – 29 March 1992) ****12. [[Albert Spencer, 7th Earl Spencer]] (23 May 1892 – 9 June 1975) ****13. [[Cynthia Spencer, Countess Spencer|Lady Cynthia Hamilton]] (16 August 1897 – 4 December 1972) ***7. [[Frances Shand Kydd|The Honourable Frances Roche]] (20 January 1936 – 3 June 2004) ****14. [[Maurice Roche, 4th Baron Fermoy]] (15 May 1885 – 8 July 1955) ****15. [[Ruth Roche, Baroness Fermoy|Ruth Gill]] (2 October 1908 – 6 July 1993) {{Tree list/end}} {{hidden end}} === A cladogram === <syntaxhighlight lang="wikitext"> {{hidden begin|border=1px #aaa solid|title=A cladogram|ta1=center|expanded=on}} {{Tree list}} *[[Tetrapoda]] ** {{Tree list/branching}} *** Many extinct groups such as the ''[[Eucritta]]'' *** '''[[Lissamphibia]]''' Whose ancestors of the current amphibians ** {{Tree list/branching}} *** Many extinct groups reminiscent of amphibians with more or less pronounced reptilian characteristics such as [[Eoherpetontidae]], the [[Embolomeri]], the [[Tokosauridae]], [[Chroniosuchidae]], [[Gephyrostegidae]], [[Solenodonsauridae]], [[Seymouriamorpha]], [[Westlothiana]], [[Lepospondyli]] *** [[Cotylosauria]] **** [[Amniota]], Originally all "Reptilian" **** Other extinct sibling taxa like [[Diadectomorpha]] or [[Tseajaiidae]] are close enough to reptiles {{Tree list/end}} {{hidden end}} </syntaxhighlight> {{hidden begin|border=1px #aaa solid|title=A cladogram|ta1=center|expanded=on}} {{Tree list}} *[[Tetrapoda]] ** {{Tree list/branching}} *** Many extinct groups such as the ''[[Eucritta]]'' *** '''[[Lissamphibia]]''' Whose ancestors of the current amphibians ** {{Tree list/branching}} *** Many extinct groups reminiscent of amphibians with more or less pronounced reptilian characteristics such as [[Eoherpetontidae]], the [[Embolomeri]], the [[Tokosauridae]], [[Chroniosuchidae]], [[Gephyrostegidae]], [[Solenodonsauridae]], [[Seymouriamorpha]], [[Westlothiana]], [[Lepospondyli]] *** [[Cotylosauria]] **** [[Amniota]], Originally all "Reptilian" **** Other extinct sibling taxa like [[Diadectomorpha]] or [[Tseajaiidae]] are close enough to reptiles {{Tree list/end}} {{hidden end}} ==See also== *[[Wikipedia:Family trees]] *{{tlx|Chart}} — This template produces one row in a "family tree"-like chart consisting of boxes and connecting lines *{{tlx|Ahnentafel}} — This template takes genealogical data in the form of an [[ahnentafel]] and presents it as a graphical ancestry tree *{{tlx|ahnentafel-tree}} uses {{tlx|Tree list}} and will handle up to an ahnentafel of 511 places (9 generations), but will also display as little as one generation. <includeonly>{{Sandbox other|| [[Category:List formatting and function templates]] [[Category:Genealogy formatting templates]] }}</includeonly> e198bd2ed42427a385cca605488247032f83e579 Module:Footnotes/whitelist 828 899 1988 2023-08-27T19:27:58Z wikipedia>Renata3 0 + apod from talk Scribunto text/plain --[[--------------------------< W R A P P E R _ T E M P L A T E _ D E F A U L T S >---------------------------- A list of wrapper templates by their canonical names – spelling and capitalization is important. Each wrapper template has a table of two values: [1] is the wrapper's default name-list as it is used in an anchor ID; [2] is the default year. This table is indexed indirectly through the wrapper_templates table. This table is not available externally. ]] local wrapper_template_defaults = { -- keys are canonical template names ['Americana'] = {'Rines', '1920'}, -- tables with default name and default year ['Cite EB1911'] = {'Chisholm', '1911'}, -- tables with default name and default year ['EB1911'] = {'Chisholm', '1911'}, ['EI3'] = {'FleetKrämerMatringeNawas', ''}, ['ODNB'] = {'', ''}, -- there is no default anchor ID; this forces evaluation of {{cite ODNB}} redirects } --[[--------------------------< W R A P P E R _ T E M P L A T E _ D E F A U L T S _ V O L >-------------------- For wrapper templates that use |volume= to specify default name (often editor names) and year. Wrapper templates are indexed by their canonical names – spelling and capitalization is important. Each wrapper template has a table of values for every volume. Volumes may be indexed by Arabic or Roman numerals. Each volume index has a table of twp values" [1] is the wrapper's default name-list as it is used in an anchor ID; [2] is the default year. Each wrapper template in this table must have a ['default'] key for those occasions when |volume= is omitted or empty. This table is indexed indirectly through the wrapper_templates table. This table is not available externally. ]] local wrapper_template_defaults_vol = { -- primary keys are canonical template names; TODO: do these keys have to be canonical template names? ['Cite Catholic Encyclopedia'] = { -- secondary keys are volume ['1'] = {'Herbermann', '1907'}, ['2'] = {'Herbermann', '1907'}, ['3'] = {'Herbermann', '1908'}, ['4'] = {'Herbermann', '1908'}, ['5'] = {'Herbermann', '1909'}, ['6'] = {'Herbermann', '1909'}, ['7'] = {'Herbermann', '1910'}, ['8'] = {'Herbermann', '1910'}, ['9'] = {'Herbermann', '1910'}, ['10'] = {'Herbermann', '1911'}, ['11'] = {'Herbermann', '1911'}, ['12'] = {'Herbermann', '1911'}, ['13'] = {'Herbermann', '1912'}, ['14'] = {'Herbermann', '1912'}, ['15'] = {'Herbermann', '1912'}, ['default'] = {'Herbermann', '1913'}, }, ['Cite EB9'] = { ['1'] = {'Baynes', '1878'}, ['I'] = {'Baynes', '1878'}, ['2'] = {'Baynes', '1878'}, ['II'] = {'Baynes', '1878'}, ['3'] = {'Baynes', '1878'}, ['III'] = {'Baynes', '1878'}, ['4'] = {'Baynes', '1878'}, ['IV'] = {'Baynes', '1878'}, ['5'] = {'Baynes', '1878'}, ['V'] = {'Baynes', '1878'}, ['6'] = {'Baynes', '1878'}, ['VI'] = {'Baynes', '1878'}, ['7'] = {'Baynes', '1878'}, ['VII'] = {'Baynes', '1878'}, ['8'] = {'Baynes', '1878'}, ['VIII'] = {'Baynes', '1878'}, ['9'] = {'Baynes', '1879'}, ['IX'] = {'Baynes', '1879'}, ['10'] = {'Baynes', '1879'}, ['X'] = {'Baynes', '1879'}, ['11'] = {'BaynesSmith', '1880'}, ['XI'] = {'BaynesSmith', '1880'}, ['12'] = {'BaynesSmith', '1881'}, ['XII'] = {'BaynesSmith', '1881'}, ['13'] = {'BaynesSmith', '1881'}, ['XIII'] = {'BaynesSmith', '1881'}, ['14'] = {'BaynesSmith', '1882'}, ['XIV'] = {'BaynesSmith', '1882'}, ['15'] = {'BaynesSmith', '1883'}, ['XV'] = {'BaynesSmith', '1883'}, ['16'] = {'BaynesSmith', '1883'}, ['XVI'] = {'BaynesSmith', '1883'}, ['17'] = {'BaynesSmith', '1884'}, ['XVII'] = {'BaynesSmith', '1884'}, ['18'] = {'BaynesSmith', '1885'}, ['XVIII'] = {'BaynesSmith', '1885'}, ['19'] = {'BaynesSmith', '1885'}, ['XIX'] = {'BaynesSmith', '1885'}, ['20'] = {'BaynesSmith', '1886'}, ['XX'] = {'BaynesSmith', '1886'}, ['21'] = {'BaynesSmith', '1886'}, ['XXI'] = {'BaynesSmith', '1886'}, ['22'] = {'BaynesSmith', '1887'}, ['XXII'] = {'BaynesSmith', '1887'}, ['23'] = {'BaynesSmith', '1888'}, ['XXIII'] = {'BaynesSmith', '1888'}, ['24'] = {'BaynesSmith', '1888'}, ['XXIV'] = {'BaynesSmith', '1888'}, ['default'] = {'Baynes', '1875–1889'}, }, ['Encyclopaedia of Islam, New Edition'] = { ['1'] = {'GibbKramersLévi-ProvençalSchacht', '1960'}, ['2'] = {'LewisPellatSchacht', '1965'}, ['3'] = {'LewisMénagePellatSchacht', '1971'}, ['4'] = {'van_DonzelLewisPellatBosworth', '1978'}, ['5'] = {'Bosworthvan_DonzelLewisPellat', '1986'}, ['6'] = {'Bosworthvan_DonzelPellat', '1991'}, ['7'] = {'Bosworthvan_DonzelHeinrichsPellat', '1993'}, ['8'] = {'Bosworthvan_DonzelHeinrichsLecomte', '1995'}, ['9'] = {'Bosworthvan_DonzelHeinrichsLecomte', '1997'}, ['10'] = {'BearmanBianquisBosworthvan_Donzel', '2000'}, ['11'] = {'BearmanBianquisBosworthvan_Donzel', '2002'}, ['12'] = {'BearmanBianquisBosworthvan_Donzel', '2004'}, ['atlas'] = {'Brice', '1981'}, ['abridged'] = {'van_Donzel', '1994'}, ['default'] = {'BearmanBianquisBosworthvan_Donzel', '1960–2005'}, }, ['New Cambridge Medieval History'] = { ['1'] = {'Fouracre', '2005'}, ['2'] = {'McKitterick', '1995'}, ['3'] = {'Reuter', '2000'}, ['4a'] = {'LuscombeRiley-Smith', '2004'}, ['4b'] = {'LuscombeRiley-Smith', '2004'}, ['5'] = {'Abulafia', '1999'}, ['6'] = {'Jones', '2000'}, ['7'] = {'Allmand', '1998'}, ['default'] = {'', '1995–2005'}, }, ['The History of al-Tabari'] = { ['1'] = {'Rosenthal', '1989'}, ['2'] = {'Brinner', '1986'}, ['3'] = {'Brinner', '1991'}, ['4'] = {'Perlmann', '1987'}, ['5'] = {'Bosworth', '1999'}, ['6'] = {'WattMcDonald', '1989'}, ['7'] = {'McDonald', '1987'}, ['8'] = {'Fishbein', '1997'}, ['9'] = {'Poonawala', '1990'}, ['10'] = {'Donner', '1993'}, ['11'] = {'Blankinship', '1993'}, ['12'] = {'Friedmann', '1992'}, ['13'] = {'Juynboll', '1989'}, ['14'] = {'Smith', '1994'}, ['15'] = {'Humphreys', '1990'}, ['16'] = {'Brockett', '1997'}, ['17'] = {'Hawting', '1996'}, ['18'] = {'Morony', '1987'}, ['19'] = {'Howard', '1990'}, ['20'] = {'Hawting', '1989'}, ['21'] = {'Fishbein', '1990'}, ['22'] = {'Rowson', '1989'}, ['23'] = {'Hinds', '1990'}, ['24'] = {'Powers', '1989'}, ['25'] = {'Blankinship', '1989'}, ['26'] = {'Hillenbrand', '1989'}, ['27'] = {'Williams', '1985'}, ['28'] = {'McAuliffe', '1995'}, ['29'] = {'Kennedy', '1990'}, ['30'] = {'Bosworth', '1989'}, ['31'] = {'Fishbein', '1992'}, ['32'] = {'Bosworth', '1987'}, ['33'] = {'Bosworth', '1991'}, ['34'] = {'Kraemer', '1989'}, ['35'] = {'Saliba', '1985'}, ['36'] = {'Waines', '1992'}, ['37'] = {'Fields', '1987'}, ['38'] = {'Rosenthal', '1985'}, ['39'] = {'Landau-Tasseron', '1998'}, ['40'] = {'Popovkin', '2007'}, ['default'] = {'Yarshater', '1985–2007'}, }, } --[[--------------------------< W R A P P E R _ T E M P L A T E S >-------------------------------------------- A list of wrapper templates and their redirects – spelling and capitalization is important; first character is always uppercase. Each wrapper template gets its value from a k/v pair in the wrapper_template_defaults table. article reader queries this table to see if template_name is a wrapper template ]] local wrapper_templates = { -- keys are names of wrapper templates and their redirects ['Americana'] = wrapper_template_defaults['Americana'], -- canonical name; this template calls Cite Americana ['Catholic Encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['1913Catholic'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Catholic'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Catholic encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['CatholicEncyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['CE13'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['CE1913'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Cite Americana'] = wrapper_template_defaults['Americana'], -- canonical name ['Cite Catholic Encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['CathEncy'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Cite Catholic Encyclopædia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Cite CE1913'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Cite EB1911'] = wrapper_template_defaults['Cite EB1911'], -- canonical name ['1911EB'] = wrapper_template_defaults['Cite EB1911'], -- redirects ['EB1911 cite'] = wrapper_template_defaults['Cite EB1911'], ['Wikisource1911Enc Citation'] = wrapper_template_defaults['Cite EB1911'], ['Wikisource1911Enc citation'] = wrapper_template_defaults['Cite EB1911'], ['Cite EB9'] = wrapper_template_defaults_vol['Cite EB9'], -- canonical ['Eb9'] = wrapper_template_defaults_vol['Cite EB9'], ['Cite ODNB'] = wrapper_template_defaults['ODNB'], -- canonical ['Cite odnb'] = wrapper_template_defaults['ODNB'], ['DNBweb'] = wrapper_template_defaults['ODNB'], ['OBDNweb'] = wrapper_template_defaults['ODNB'], ['ODNB'] = wrapper_template_defaults['ODNB'], ['ODNBref'] = wrapper_template_defaults['ODNB'], ['ODNBweb'] = wrapper_template_defaults['ODNB'], ['EB1911'] = wrapper_template_defaults['EB1911'], -- canonical name; this template calls Cite EB1911 ['1911'] = wrapper_template_defaults['EB1911'], -- redirects ['1911s'] = wrapper_template_defaults['EB1911'], ['Britannica 1911'] = wrapper_template_defaults['EB1911'], ['Encyclopedia Britannica 1911'] = wrapper_template_defaults['EB1911'], ['Encyclopædia Britannica 1911'] = wrapper_template_defaults['EB1911'], ['EB9'] = wrapper_template_defaults_vol['Cite EB9'], -- canonical; this template calls Cite EB9 ['Encyclopaedia of Islam, New Edition'] = wrapper_template_defaults_vol['Encyclopaedia of Islam, New Edition'], -- canonical ['EI2'] = wrapper_template_defaults_vol['Encyclopaedia of Islam, New Edition'], ['Encyclopaedia of Islam, THREE'] = wrapper_template_defaults['EI3'], -- canonical ['EI3'] = wrapper_template_defaults['EI3'], ['New Cambridge Medieval History'] = wrapper_template_defaults_vol['New Cambridge Medieval History'], -- canonical ['The History of al-Tabari'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- canonical ['The History of Al-Tabari'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- redirects ['The History of al-Ṭabarī'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- redirects } --[[--------------------------< T E M P L A T E _ N A M E S >-------------------------------------------------- This table holds the names of templates and the names of their redirects. Template names must be written exactly as they are named at their templatespace page. This same also applies to redirects. The indexes in this table are not critical but should be short and concise. ]] local template_names = { ['ADB'] = {'Allgemeine Deutsche Biographie', 'Cite ADB'}, ['Butt_Stations'] = {'Butt-Stations', 'Butt-stations'}, ['Cam_Hist_Iran'] = {'Cambridge History of Iran', 'The Cambridge History of Iran'}, ['DNB'] = {'Cite DNB', 'DNB', 'DNB Cite', 'Cite DNBSupp', 'DNBSupp', 'Cite DNB12', 'Cite DNBIE', 'DNB12', 'DNBIE', 'DNBfirst'}, ['ME-ref'] = {'ME-ref', 'Me-ref'}, ['ODB'] = {'ODB', 'Oxford Dictionary of Byzantium'}, ['ODLA'] = {'ODLA', 'Oxford Dictionary of Late Antiquity'}, ['NDB'] = {'Cite NDB', 'NDB'}, ['Iranica'] = {'Encyclopædia Iranica Online', 'Encyclopædia Iranica', 'Encyclopaedia Iranica', 'Cite Encyclopædia Iranica Online'}, } --[[--------------------------< S P E C I A L _ P A T T E R N S >---------------------------------------------- Lua patterns. These are scanned sequentially which costs time and processing far and above the time and processing needed to index into whitelist{}. Do not create a pattern here if a normal whitelist entry or entries can be created. ]] local special_patterns = { 'CITEREFACAD%u%u%u?%u?%d+%u%u?', -- {{Acad}} ID appears to be 2-4 letters, then 3 numbers, then 1-2 letters 'CITEREFAHD%d+', -- {{Cite AHD}} 'CITEREFHistoric_England%d+', -- {{National Heritage List for England}} & {{PastScape}} 'CITEREFHistoric_Environment_Scotland%u%u%u?%u?%d', -- {{Historic Environment Scotland}} %u can be BTL, GLD, HMPA, LB, SM 'CITEREFQHR%d+', -- {{Cite QHR}} 'CITEREF[%d%a_%pöüäß→]+_at_Bach_Digital', -- {{BDh}} 'CITEREF[BR]GBl_[12]%d%d%d%-?I?I?%/%d+', -- {{Cite Austrian gazette}} 'CITEREFStGBl_[12]%d%d%d%/%d+', -- {{Cite Austrian gazette}} 'CITEREFGBlÖ_[12]%d%d%d%/%d+', -- {{Cite Austrian gazette}} } --[[--------------------------< D N B _ S P E C I A L _ P A T T E R N S >-------------------------------------- Lua patterns. Note at special_patterns applies. These for the DNB templates only; these will be tried only when there is a DNB template in the article. Pretty much any author name during the period 1885–1901 inclusive, and 1912. The DNBIE was published in 1903, and Template:DNBIE says that its use is deprecated, but we do not fight that battle here. ]] local DNB_special_patterns = { 'CITEREF%a[%a%-_\']*188[5-9]', -- 1885–1889 'CITEREF%a[%a%-_\']*189%d', -- 1890–1899 'CITEREF%a[%a%-_\']*190[0-1]', -- 1900–1901 'CITEREF%a[%a%-_\']*1903', -- 1903 IE 'CITEREF%a[%a%-_\']*1912', -- 1912 supplement } --[[--------------------------< W H I T E L I S T >------------------------------------------------------------ This is a list of anchor IDs known to be associated with specific wrapper templates. The anchor ID serves as an index into the table. The assigned value is another table that lists the associated template and any redirects. Except for year disambiguators, anchor IDs must have the same form as the anchor creator makes; must be the anchor-encoded form. Remove the year disambiguator. Template names must be written exactly as they are named at their templatespace page. This same also applies to redirects. Module:Footnotes reads the template names left to right so most-commonly-used template or redirect name should appear first. When there are more than one name and when those templates have various anchor IDs the template namelist should be added to the template_names{} table. Note that references to Template:EB1911 are listed under "E" in the alphabetical list below to keep them organized. ]] local whitelist = { ----------< # >---------- ['CITEREF2013_Statistical_Yearbook_of_the_Republic_of_Croatia'] = {'Croatia Yearbook 2013'}, ----------< A >---------- ['CITEREFAGA_1884–1897'] = {'Schubert\'s compositions (references)'}, ['CITEREFATOC2009'] = {'ATOCConnectingCommunitiesReportS10'}, ['CITEREFAbaevBailey1985'] = template_names['Iranica'], ['CITEREFAbbas1988'] = template_names['Iranica'], ['CITEREFAbbas1989'] = template_names['Iranica'], ['CITEREFAbramowitzStegun1983'] = {'Abramowitz Stegun ref'}, ['CITEREFActa_Lipsiensium1723'] = {'Bach\'s compositions (sources)'}, ['CITEREFAdamsFranzosa2009'] = {'Adams Franzosa Introduction to Topology Pure and Applied'}, ['CITEREFAdaschErnstKeim1978'] = {'Adasch Topological Vector Spaces'}, ['CITEREFAffleck1978'] = {'Affleck-On Track'}, ['CITEREFAhlgrimm1969'] = {'Bach\'s compositions (sources)'}, ['CITEREFAhmadiNegahban2013'] = {'Encyclopaedia Islamica'}, ['CITEREFAhrons1927'] = {'Book-Ahrons-British Steam Railway Locomotive'}, ['CITEREFAl-Kindi1912'] = {'The Governors and Judges of Egypt'}, ['CITEREFAlbert_Schumann1886'] = {'Cite ADB'}, ['CITEREFAlden1916'] = {'Shakespeare sonnets bibliography'}, ['CITEREFAldrich1969'] = {'Aldrich-LocosGER7'}, ['CITEREFAleksidze2018'] = template_names['ODLA'], ['CITEREFAlexiou2010'] = {'Cite flatiron'}, ['CITEREFAlgar1983'] = template_names['Iranica'], ['CITEREFAlgar1989'] = template_names['Iranica'], ['CITEREFAlgar1990'] = template_names['Iranica'], ['CITEREFAlgar2003'] = template_names['Iranica'], ['CITEREFAlizadeh1990'] = template_names['Iranica'], ['CITEREFAllamaniPanagiotopoulou1978'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFAllcockDaviesle_FlemingMaskelyne1968'] = {'RCTS-LocosGWR-1'}, ['CITEREFAllenBoddyBrownFry1970'] = {'RCTS-LocosLNER-8A', 'RCTS-LocosLNER'}, ['CITEREFAllenBoddyBrownFry1971'] = {'RCTS-LocosLNER-8B', 'RCTS-LocosLNER'}, ['CITEREFAllenBoddyBrownFry1983'] = {'RCTS-LocosLNER-8A', 'RCTS-LocosLNER'}, ['CITEREFAmanat1998'] = template_names['Iranica'], ['CITEREFAmanat1999'] = template_names['Iranica'], ['CITEREFAmbartsumian2014'] = template_names['Iranica'], ['CITEREFAmerican_Railway_Association1922'] = {'1922 Locomotive Cyclopedia'}, ['CITEREFAnderson1952'] = {'Naval Wars in the Levant 1559–1853'}, ['CITEREFAndo2000'] = template_names['Iranica'], ['CITEREFAngelov2018'] = template_names['ODLA'], ['CITEREFAnwārEIr1985'] = template_names['Iranica'], ['CITEREFArkhangel&#039;skiiPonomarev1984'] = {'Arkhangel\'skii Ponomarev Fundamentals of General Topology Problems and Exercises'}, ['CITEREFArrey_von_Dommer1875'] = {'Cite ADB'}, ['CITEREFAshraf2006'] = template_names['Iranica'], ['CITEREFAslanianBerberian2009'] = template_names['Iranica'], ['CITEREFAsmus1966'] = template_names['NDB'], ['CITEREFAsmussen1985'] = template_names['Iranica'], ['CITEREFAspreas1929'] = {'Great Military and Naval Encyclopaedia'}, ['CITEREFAtkins2007'] = {'Shakespeare sonnets bibliography'}, ['CITEREFAube2011'] = template_names['Iranica'], ['CITEREFAudiKondevWangHuang2017'] = {'NUBASE2016'}, ['CITEREFAvdoyan2018'] = template_names['ODLA'], ['CITEREFAwdry1990'] = {'Awdry-RailCo', 'Carnarvonshire Railway'}, ['CITEREFAzarnoosh2021'] = template_names['Iranica'], ['CITEREFRamelli2018'] = {'Oxford Dictionary of Late Antiquity'},['CITEREFA_History_of_the_Crusades'] = {'Setton-A History of the Crusades'}, ----------< B >---------- ['CITEREFBabinger1962'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFBabinger1978'] = {'Mehmed the Conqueror and His Time'}, ['CITEREFBabinger1992'] = {'Mehmed the Conqueror and His Time'}, ['CITEREFBachAgricola1754'] = {'Bach\'s compositions (sources)'}, ['CITEREFBadura-SkodaBranscombe2008'] = {'Schubert\'s compositions (references)'}, ['CITEREFBagley1999'] = {'Cite Cambridge History of China'}, ['CITEREFBahramianHirtensteinGholami2013'] = {'Encyclopaedia Islamica'}, ['CITEREFBalcer1990'] = template_names['Iranica'], ['CITEREFBaldwin1969'] = {'Setton-A History of the Crusades'}, ['CITEREFBaldwin1985'] = {'Setton-A History of the Crusades'}, ['CITEREFBaldwinKazhdan1991'] = template_names['ODB'], ['CITEREFBaldwinTalbot1991'] = template_names['ODB'], ['CITEREFBaltzer1916'] = {'Baltzer-Kolonialbahnen'}, ['CITEREFBanach1932'] = {'Banach Théorie des Opérations Linéaires'}, ['CITEREFBandy2021'] = template_names['Iranica'], ['CITEREFBartusis1991'] = template_names['ODB'], ['CITEREFBaxter1971'] = {'Baxter-BritishLocoCat1'}, ['CITEREFBaxter1977'] = {'Baxter-BritishLocoCat1'}, ['CITEREFBaxter1978'] = {'Baxter-BritishLocoCat2A'}, ['CITEREFBaxter1979'] = {'Baxter-BritishLocoCat2B'}, ['CITEREFBaxter1982'] = {'Baxter-BritishLocoCat3A', 'Baxter-BritishLocoCat3B'}, ['CITEREFBaxter1984'] = {'Baxter-BritishLocoCat4'}, ['CITEREFBaxter1986'] = {'Baxter-BritishLocoCat5A'}, ['CITEREFBaxter1988'] = {'Baxter-BritishLocoCat5B'}, ['CITEREFBaxter2012'] = {'Baxter-BritishLocoCat6'}, ['CITEREFBeattie1986'] = template_names['Iranica'], ['CITEREFBeißwenger1991'] = {'Bach\'s compositions (sources)'}, ['CITEREFBek2001'] = {'Cite Grove'}, ['CITEREFBelke1996'] = {'Tabula Imperii Byzantini'}, ['CITEREFBelkeMersisch1990'] = {'Tabula Imperii Byzantini'}, ['CITEREFBelkeRestle1984'] = {'Tabula Imperii Byzantini'}, ['CITEREFBellini2008'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFBernardini2003'] = template_names['Iranica'], ['CITEREFBernhard_von_Poten1889'] = template_names['ADB'], ['CITEREFBernhard_von_Poten1898'] = template_names['ADB'], ['CITEREFBernjian2008'] = {'Encyclopaedia Islamica'}, ['CITEREFBezilla1980'] = {'Bezilla-PRR-Electric-Traction'}, ['CITEREFBianquis1998'] = {'The Cambridge History of Egypt', 'Cambridge History of Egypt'}, ['CITEREFBickerman1983'] = template_names['Cam_Hist_Iran'], ['CITEREFBierstedt1988'] = {'Bierstedt An Introduction to Locally Convex Inductive Limits'}, ['CITEREFBiran2009'] = template_names['Iranica'], ['CITEREFBirken1976'] = {'Die Provinzen des Osmanischen Reiches'}, ['CITEREFBivar1983'] = template_names['Cam_Hist_Iran'], ['CITEREFBivar2003'] = template_names['Iranica'], ['CITEREFBlair2002'] = template_names['Iranica'], ['CITEREFBlair2021'] = template_names['Iranica'], ['CITEREFBlake1966'] = {'DisraeliRef'}, ['CITEREFBlanken2019'] = {'Bach\'s compositions (sources)'}, ['CITEREFBlankinship1994'] = {'The End of the Jihâd State', 'The End of the Jihad State'}, ['CITEREFBlautSchulze2008'] = {'Bach\'s compositions (sources)'}, ['CITEREFBloom2007'] = {'Cite Routledge Broadway', 'Cite Broadway Routledge', 'Cite Routledge Guide to Broadway', 'Routledge Guide to Broadway'}, ['CITEREFBock1978'] = {'Audie-bock-directors'}, ['CITEREFBodde1986'] = {'Cite Cambridge History of China'}, ['CITEREFBoddyBrownFryHennigan1968'] = {'RCTS-LocosLNER-4', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownFryHennigan1975'] = {'RCTS-LocosLNER-2B', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownFryHennigan1977'] = {'RCTS-LocosLNER-9A', 'RCTS-LocosLNER-9B', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownFryHennigan1979'] = {'RCTS-LocosLNER-3A', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownHenniganHoole1984'] = {'RCTS-LocosLNER-6C', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownHenniganNeve1981'] = {'RCTS-LocosLNER-3B', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownNeveYeadon1983'] = {'RCTS-LocosLNER-6B', 'RCTS-LocosLNER'}, ['CITEREFBoddyFryHenniganHoole1990'] = {'RCTS-LocosLNER-10B', 'RCTS-LocosLNER'}, ['CITEREFBoddyFryHenniganProud1963'] = {'RCTS-LocosLNER-1', 'RCTS-LocosLNER'}, ['CITEREFBoddyNeveTeeYeadon1982'] = {'RCTS-LocosLNER-6A', 'RCTS-LocosLNER'}, ['CITEREFBoddyNeveYeadon1973'] = {'RCTS-LocosLNER-2A', 'RCTS-LocosLNER'}, ['CITEREFBody1989'] = {'Body-Railways-Vol2'}, ['CITEREFBon1969'] = {'La Morée franque'}, ['CITEREFBonebakker1997'] = template_names['Iranica'], ['CITEREFBonner2010'] = {'New Cambridge History of Islam'}, ['CITEREFBonnett2005'] = {'Bonnett Practical Rail Engineering'}, ['CITEREFBonporti1712'] = {'Bach\'s compositions (sources)'}, ['CITEREFBooth2000'] = {'Shakespeare sonnets bibliography'}, ['CITEREFBorsari1964'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFBossert1914'] = {'Schaff-Herzog'}, ['CITEREFBosworth1968'] = template_names['Cam_Hist_Iran'], ['CITEREFBosworth1975'] = template_names['Cam_Hist_Iran'], ['CITEREFBosworth1983'] = template_names['Iranica'], ['CITEREFBosworth1984'] = template_names['Iranica'], ['CITEREFBosworth1987'] = template_names['Iranica'], ['CITEREFBosworth1988'] = template_names['Iranica'], ['CITEREFBosworth1989'] = template_names['Iranica'], ['CITEREFBosworth1994'] = template_names['Iranica'], ['CITEREFBosworth1995'] = template_names['Iranica'], ['CITEREFBosworth1997'] = template_names['Iranica'], ['CITEREFBosworth1998'] = template_names['Iranica'], ['CITEREFBosworth2000'] = template_names['Iranica'], ['CITEREFBosworth2001'] = template_names['Iranica'], ['CITEREFBosworth2002'] = template_names['Iranica'], ['CITEREFBosworth2003'] = template_names['Iranica'], ['CITEREFBosworth2008'] = template_names['Iranica'], ['CITEREFBosworth2009'] = template_names['Iranica'], ['CITEREFBosworth2010'] = template_names['Iranica'], ['CITEREFBosworth2011'] = template_names['Iranica'], ['CITEREFBosworthCrane1984'] = template_names['Iranica'], ['CITEREFBottoMitchell2002'] = {'Cite ATT Broadway', 'Cite At This Theatre Broadway', 'Cite Broadway At This Theatre', 'Cite Broadway ATT'}, ['CITEREFBourbaki1987'] = {'Bourbaki Topological Vector Spaces', 'Bourbaki Topological Vector Spaces Part 1 Chapters 1–5'}, ['CITEREFBourbaki1989'] = {'Bourbaki General Topology Part I Chapters 1-4', 'Bourbaki General Topology Part II Chapters 5-10', 'Bourbaki Algebra I Chapters 1-3 Springer'}, ['CITEREFBourbaki1994'] = {'Bourbaki EHM'}, ['CITEREFBowen1928'] = {'The Life and Times of Ali ibn Isa'}, ['CITEREFBowmanCameronGarnsey2005'] = {'Cambridge Ancient History'}, ['CITEREFBoyce1983'] = template_names['Iranica'], ['CITEREFBoyce1986'] = template_names['Iranica'], ['CITEREFBoyce1989'] = template_names['Iranica'], ['CITEREFBoyce2000'] = template_names['Iranica'], ['CITEREFBoyce2009'] = template_names['Iranica'], ['CITEREFBoyd1970'] = {'Boyd-MidWales'}, ['CITEREFBoyd1975'] = {'Boyd-FR1'}, ['CITEREFBoyd1985'] = {'Boyd-NCaerns2Penrhyn'}, ['CITEREFBoyd1986'] = {'Boyd-NCaerns3Dinorwic'}, ['CITEREFBoyd1988'] = {'Boyd-SCaerns1'}, ['CITEREFBoyd1989'] = {'Boyd-SCaerns2'}, ['CITEREFBoyd1990'] = {'Boyd-NCaerns1'}, ['CITEREFBradshaw1968'] = {'Bradshaw-1910April'}, ['CITEREFBradshaw1985'] = {'Bradshaw-1922July'}, ['CITEREFBradshaw2011'] = {'Bradshaw-1895December'}, ['CITEREFBradshaw2012'] = {'Bradshaw-1850March'}, ['CITEREFBrand1968'] = {'Byzantium Confronts the West'}, ['CITEREFBrand1991'] = {'DBI', 'ODB', 'Oxford Dictionary of Byzantium'}, ['CITEREFBray2010'] = {'Bray-SDJR'}, ['CITEREFBrett2010'] = {'New Cambridge History of Islam'}, ['CITEREFBriant1985'] = template_names['Iranica'], ['CITEREFBrosius2000'] = template_names['Iranica'], ['CITEREFBrown2000'] = template_names['Iranica'], ['CITEREFBrown2008'] = {'The Cambridge History of the Byzantine Empire'}, ['CITEREFBrown2021'] = {'Cite Gaia EDR3'}, ['CITEREFBrunner1975'] = template_names['Cam_Hist_Iran'], ['CITEREFBrunner1983'] = template_names['Cam_Hist_Iran'], ['CITEREFBrunner1984'] = template_names['Iranica'], ['CITEREFBrunner1986'] = template_names['Iranica'], ['CITEREFBryan1886'] = {'Bryan (3rd edition)'}, ['CITEREFBryan1889'] = {'Bryan (3rd edition)'}, ['CITEREFBuhle1909'] = {'Bach\'s compositions (sources)'}, ['CITEREFBulliet1984'] = template_names['Iranica'], ['CITEREFBulookbashiNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFBunbury1857'] = {'DGRG'}, ['CITEREFBurant1987'] = {'Cite DCB'}, ['CITEREFBurch1911'] = {'Burch Electric Traction'}, ['CITEREFBurke1866'] = {'O\'Donnell family tree'}, ['CITEREFBurn1985'] = template_names['Cam_Hist_Iran'], ['CITEREFBurrowsWallace1999'] = {'Cite gotham'}, ['CITEREFBury1911'] = {'The Imperial Administrative System of the Ninth Century'}, ['CITEREFBusse1975'] = template_names['Cam_Hist_Iran'], ['CITEREFBusse1982'] = template_names['Iranica'], ['CITEREFButcherNicholson2018'] = template_names['ODLA'], ['CITEREFButt1995'] = template_names['Butt_Stations'], ['CITEREFBöwering1995'] = template_names['Iranica'], ['CITEREFBürgelMottahedeh1988'] = template_names['Iranica'], ----------< C >---------- ['CITEREFCIC1983'] = {'CIC1983bib'}, ['CITEREFCalifornia1988'] = {'CA-Rail Passenger Development Plan-1988'}, ['CITEREFCalmard1988'] = template_names['Iranica'], ['CITEREFCalmard1999'] = template_names['Iranica'], ['CITEREFCaltrans1984'] = {'Countrystudy'}, ['CITEREFCameronWard-PerkinsWhitby2000'] = {'Cambridge Ancient History'}, ['CITEREFCanepa2018'] = template_names['ODLA'], ['CITEREFCanny2008'] = {'O\'Donnell family tree'}, ['CITEREFCappelCutlerKazhdan1991'] = template_names['ODB'], ['CITEREFCarl_von_Prantl1879'] = {'Cite ADB'}, ['CITEREFCarlson2010'] = {'Dlmf'}, ['CITEREFCaro1974'] = {'Cite Power Broker'}, ['CITEREFCarpenter1977'] = template_names['ME-ref'], ['CITEREFCarpenter1981'] = template_names['ME-ref'], ['CITEREFCarra_de_VauxHodgson1965'] = {'EI2'}, ['CITEREFCarter2006'] = {'Carter-RailwaysMotivePowerArgentina'}, ['CITEREFCasserley1968'] = {'Casserley-joint'}, ['CITEREFCasserleyJohnston1966'] = {'Casserley-LocoGrouping3'}, ['CITEREFCasserleyJohnston1974'] = {'Casserley-LocoGrouping3', 'Casserley-LocoGrouping2', '0-7110-0554-0'}, ['CITEREFCasway1984'] = {'O\'Donnell family tree'}, ['CITEREFCavanna_Ciappina2001'] = {'DBI'}, ['CITEREFCawley2001'] = {'Medieval Lands by Charles Cawley', 'MLCC'}, ['CITEREFCawley2001'] = {'Medieval Lands by Charles Cawley'}, ['CITEREFCawley2010'] = {'MLCC'}, ['CITEREFCawley2011'] = {'MLCC'}, ['CITEREFChaléardChanson-JabeurBéranger2006'] = {'Chaléard-Le cdf en Afrique'}, ['CITEREFChambers1728'] = {'Cyclopaedia 1728'}, ['CITEREFChasiotis1975'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFChaumont1985'] = template_names['Iranica'], ['CITEREFChaumont1986'] = template_names['Iranica'], ['CITEREFChaumont1987'] = template_names['Iranica'], ['CITEREFChaumont1990'] = template_names['Iranica'], ['CITEREFChaumontSchippmann1988'] = template_names['Iranica'], ['CITEREFCheyneBlack1899'] = {'Biblica', 'Cite Biblica'}, ['CITEREFCheyneBlack1899–1903'] = {'Cite Biblica'}, ['CITEREFCheyneBlack1901'] = {'Cite Biblica'}, ['CITEREFCheyneBlack1902'] = {'Cite Biblica'}, ['CITEREFCheyneBlack1903'] = {'Cite Biblica'}, ['CITEREFChisholm1922'] = {'EB1922', 'Cite EB1922'}, ['CITEREFChittick1997'] = template_names['Iranica'], ['CITEREFChkeidze2001'] = template_names['Iranica'], ['CITEREFChoniates1984'] = {'O City of Byzantium'}, ['CITEREFChrista_Jost1999'] = template_names['NDB'], ['CITEREFChung1994'] = {'Country study'}, ['CITEREFChurchmanHurst2001'] = {'Churchman & Hurst Railways of New Zealand'}, ['CITEREFChurchman_&amp;_Hurst2001'] = {'Churchman & Hurst Railways of New Zealand'}, ['CITEREFChurella2013'] = {'Churella-PRR-1'}, ['CITEREFClementsMcMahon2008'] = {'ClementsMcMahon-GSR Locomotives'}, ['CITEREFClinker1978'] = {'Clinker-Stations'}, ['CITEREFClinker1988'] = {'Clinker-Stations'}, ['CITEREFCoates1990'] = {'Coates-Reading'}, ['CITEREFColbyWilliams1916'] = {'New International Encyclopedia', 'NIE'}, ['CITEREFColledgeWarlow2006'] = {'Colledge', 'Cite Colledge2006'}, ['CITEREFColledgeWarlow2010'] = {'Cite Colledge2010'}, ['CITEREFCollins2016'] = {'Cite Collins 2016'}, ['CITEREFConolly1998'] = {'IanAllan-PreGroup-Atlas1998'}, ['CITEREFConway1990'] = {'Conway A Course in Functional Analysis'}, ['CITEREFCosentino2008'] = {'DBI'}, ['CITEREFCoulthard-Clark2002'] = {'Australian Dictionary of Biography'}, ['CITEREFCousin1910'] = {'A Short Biographical Dictionary of English Literature', 'Cite SBDEL'}, ['CITEREFCox1967'] = {'Cox-Upper Darby'}, ['CITEREFCox2011'] = {'Cox-Dixie'}, ['CITEREFCrevier1993'] = {'Crevier 1993'}, ['CITEREFCrockett2007'] = {'Australian Dictionary of Biography'}, ['CITEREFCroke2018'] = template_names['ODLA'], ['CITEREFCrone1980'] = {'Slaves on Horses'}, ['CITEREFCronin2011'] = template_names['Iranica'], ['CITEREFCroughtonKidnerYoung1982'] = {'Croughton-PrivateStations'}, ['CITEREFCruickshanks1970'] = {'HistoryofParliament'}, ['CITEREFCudahy2002'] = {'Cudahy-Hudson'}, ['CITEREFCudahy2003'] = {'Cudahy-Subways'}, ['CITEREFCurta2006'] = {'Southeastern Europe in the Middle Ages, 500–1250'}, ----------< D >---------- ['CITEREFDBI'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFDZS2015'] = {'Croatia Yearbook 2015'}, ['CITEREFDadelsen1957'] = {'Bach\'s compositions (sources)'}, ['CITEREFDaftary1990'] = {'Daftary-The Ismailis'}, ['CITEREFDaftary2003'] = template_names['Iranica'], ['CITEREFDaftary2007'] = {'Daftary-The Ismailis'}, ['CITEREFDaftary2015'] = template_names['Iranica'], ['CITEREFDaiber1988'] = template_names['Iranica'], ['CITEREFDandamayevShahbaziLecoq1986'] = template_names['Iranica'], ['CITEREFDaniel2000'] = template_names['Iranica'], ['CITEREFDaniel2010'] = {'New Cambridge History of Islam'}, ['CITEREFDanielsDench1963'] = {'Daniels-NoMore'}, ['CITEREFDanielsDench1973'] = {'Daniels-NoMore'}, ['CITEREFDanner1975'] = template_names['Cam_Hist_Iran'], ['CITEREFDarleyCanepa2018'] = {'Oxford Dictionary of Late Antiquity'}, ['CITEREFDaryaee2009'] = template_names['Iranica'], ['CITEREFDaryaee2018'] = template_names['ODLA'], ['CITEREFDaryaeeCanepa2018'] = template_names['ODLA'], ['CITEREFDavid1961'] = {'Bach\'s compositions (sources)'}, ['CITEREFDavidson2010'] = {'HistoryofParliament'}, ['CITEREFDavidsonThrush2010'] = {'HistoryofParliament'}, ['CITEREFDavies1996'] = {'Davies-PLMLocoList'}, ['CITEREFDavies1997'] = {'Davies-NordLocoList'}, ['CITEREFDavies2001'] = {'Davies-EstLocoList3', 'Davies-ÉtatLocoList'}, ['CITEREFDavies2003'] = {'Davies-SNCFLocoList'}, ['CITEREFDaviesFirthLuckingThomas1966'] = {'RCTS-LocosGWR-10'}, ['CITEREFDavud2018'] = {'Encyclopaedia Islamica'}, ['CITEREFDavudNazerian2008'] = {'Encyclopaedia Islamica'}, ['CITEREFDe_Negri1997'] = {'DBI'}, ['CITEREFDemircan2010'] = {'TDV Encyclopedia of Islam'}, ['CITEREFDeutsch1951'] = {'Schubert\'s compositions (references)'}, ['CITEREFDeutsch1978'] = {'Schubert\'s compositions (references)'}, ['CITEREFDeutsche_Autos,_Band_2,2001'] = {'Deutsche Autos-2'}, ['CITEREFDeutsche_Autos,_Band_3,2001'] = {'Deutsche Autos-3'}, ['CITEREFDeutsche_Autos,_Band_4,2001'] = {'Deutsche Autos-4'}, ['CITEREFDeutsche_Autos,_Band_5,2001'] = {'Deutsche Autos-5'}, ['CITEREFDeutsche_Autos,_Band_6,2001'] = {'Deutsche Autos-6'}, ['CITEREFDewick2005'] = {'Dewick-Atlas'}, ['CITEREFDiamonstein-Spielvogel2011'] = {'Cite landmarks'}, ['CITEREFDickens2018'] = template_names['ODLA'], ['CITEREFDirksen1998'] = {'Bach\'s compositions (sources)'}, ['CITEREFDirksen2010'] = {'Bach\'s compositions (sources)'}, ['CITEREFDirksen2016'] = {'Bach\'s compositions (sources)'}, ['CITEREFDixmier1984'] = {'Dixmier General Topology'}, ['CITEREFDoerfer1989'] = template_names['Iranica'], ['CITEREFDoganis1930'] = {'Great Military and Naval Encyclopaedia'}, ['CITEREFDoleckiMynard2016'] = {'Dolecki Mynard Convergence Foundations Of Topology'}, ['CITEREFDolkart1998'] = {'Cite morningside'}, ['CITEREFDonner1995'] = template_names['Iranica'], ['CITEREFDonohue2003'] = {'The Buwayhid Dynasty in Iraq'}, ['CITEREFDorin1972'] = {'Dorin-North Western'}, ['CITEREFDow1962'] = {'Dow-GC2'}, ['CITEREFDow1965'] = {'Dow-GC3'}, ['CITEREFDow1985'] = {'Dow-GC1'}, ['CITEREFDowney2007'] = {'Downey-Chicago'}, ['CITEREFDrechsler2005'] = template_names['Iranica'], ['CITEREFDrummond1964'] = {'HistoryofParliament'}, ['CITEREFDrury1985'] = {'Drury Historical Guide 1985'}, ['CITEREFDrury1993'] = {'Drury-North American Steam'}, ['CITEREFDuchesne-Guillemin1994'] = template_names['Iranica'], ['CITEREFDugundji1966'] = {'Dugundji Topology'}, ['CITEREFDuke1995'] = {'Duke-Santa Fe-1'}, ['CITEREFDukeKeilty1990'] = {'Duke-RDC'}, ['CITEREFDumbarton_Oaks_Hagiography_Database'] = {'Dumbarton Oaks Hagiography Database'}, ['CITEREFDunbar1969'] = {'Dunbar-Railroads'}, ['CITEREFDuncan-Jones2010'] = {'Shakespeare sonnets bibliography'}, ['CITEREFDunlop1895'] = {'O\'Donnell family tree'}, ['CITEREFDunlop1985'] = template_names['Iranica'], ['CITEREFDunn2013'] = {'Dunn-Comeng-5'}, ['CITEREFDurand-Guédy2008'] = template_names['Iranica'], ['CITEREFDurand-Guédy2010'] = template_names['Iranica'], ['CITEREFDurand-Guédy2013'] = {'Encyclopaedia Islamica'}, ['CITEREFDurham1998'] = {'California\'s Geographic Names'}, ['CITEREFDurrant1972'] = {'Durrant-Steam Locos Eastern Europe'}, ['CITEREFDurrant1981'] = {'Durrant-Garratt-Rev'}, ['CITEREFDurrantLewisJorgensen1981'] = {'Durrant-SteamAfrica'}, ['CITEREFDömlingKohlhase1971'] = {'Bach\'s compositions (sources)'}, ['CITEREFDürr1952'] = {'Bach\'s compositions (sources)'}, ['CITEREFDürr1954'] = {'Bach\'s compositions (sources)'}, ['CITEREFDürr1987'] = {'Bach\'s compositions (sources)'}, ['CITEREFDürrJones2006'] = {'Bach\'s compositions (sources)'}, ['CITEREFDürrKobayashi1998'] = {'Bach\'s compositions (sources)'}, ['CITEREFde_Blois2000'] = template_names['Iranica'], ['CITEREFde_Planhol1987'] = template_names['Iranica'], ['CITEREFde_Planhol1988'] = template_names['Iranica'], ----------< E >---------- ['CITEREFEIr.1994'] = template_names['Iranica'], ['CITEREFEarle2018'] = {'Gymnosperm Database'}, ['CITEREFEbata2019'] = {'BDh'}, ['CITEREFEbata2020'] = {'BDh'}, ['CITEREFEbrahimKhodaverdian2018'] = {'Encyclopaedia Islamica'}, ['CITEREFEdwards1995'] = {'Edwards Functional Analysis Theory and Applications'}, ['CITEREFEichberg1976'] = {'Bach\'s compositions (sources)'}, ['CITEREFEilers1983'] = template_names ['Cam_Hist_Iran'], ['CITEREFEkbal1991'] = template_names['Iranica'], ['CITEREFEl-Hibri2010'] = {'New Cambridge History of Islam'}, ['CITEREFEldredgeHorenstein2014'] = {'Cite concrete'}, ['CITEREFElsholz1982'] = {'Schubert\'s compositions (references)'}, ['CITEREFElwell-Sutton1984'] = template_names['Iranica'], ['CITEREFEppstein1966'] = {'Bach\'s compositions (sources)'}, ['CITEREFEppstein1982'] = {'Bach\'s compositions (sources)'}, ['CITEREFEquasis'] = {'Csr', 'Cite ship register'}, ['CITEREFEuDaly2009'] = {'Complete Book of North American Railroading'}, ['CITEREFEuDalySchaferJessupBoyd2009'] = {'Complete Book of North American Railroading'}, ----------< F >---------- ['CITEREFFacella2021'] = template_names['Iranica'], ['CITEREFFang1943'] = {'Cite ECCP'}, ['CITEREFFarinella2001'] = {'DBI'}, ['CITEREFFatehi-NezhadAzarnooshNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFFatehi-nezhadRahimi2008'] = {'Encyclopaedia Islamica'}, ['CITEREFFeder1958'] = {'Bach\'s compositions (sources)'}, ['CITEREFFederal_Writers&#039;_Project1939'] = {'Cite fednyc'}, ['CITEREFFelixMadelung1995'] = template_names['Iranica'], ['CITEREFFernandez1983'] = {'Fernandez1983'}, ['CITEREFFerneyhough1980'] = {'Ferneyhough-LMR'}, ['CITEREFFesharaki2015'] = {'Encyclopaedia Islamica'}, ['CITEREFFiaccadori1991'] = template_names['ODB'], ['CITEREFFikratUmar2008'] = template_names['Iranica'], ['CITEREFFine1991'] = {'The Early Medieval Balkans'}, ['CITEREFFine1994'] = {'The Late Medieval Balkans'}, ['CITEREFFletcher,_Great_Tank_Scandal'] = {'Book-Fletcher-Great Tank Scandal'}, ['CITEREFFletcher,_Universal_Tank'] = {'Book-Fletcher-Universal Tank'}, ['CITEREFFloor1992'] = template_names['Iranica'], ['CITEREFFloor2005'] = template_names['Iranica'], ['CITEREFFlora_of_North_America'] = {'EFloras'}, ['CITEREFFlora_of_North_America2009'] = {'EFloras'}, ['CITEREFFluckMarshallWilson1996'] = {'FluMarWil-LocRailCR'}, ['CITEREFFonstad1991'] = template_names['ME-ref'], ['CITEREFForkelTerry1920'] = {'Bach\'s compositions (sources)'}, ['CITEREFFornaçon,_Siegfried1957'] = template_names['NDB'], ['CITEREFForrestal1999'] = {'Forrestal-Wineries'}, ['CITEREFForster1990'] = {'Cite DCB'}, ['CITEREFFoss1991'] = template_names['ODB'], ['CITEREFFoster1971'] = template_names['ME-ref'], ['CITEREFFoster1996'] = {'Foster-Field Guide'}, ['CITEREFFrailey2010'] = {'Frailey-Twilight'}, ['CITEREFFranke1994'] = {'Cite Cambridge History of China'}, ['CITEREFFranz_Schnorr_von_Carolsfeld1883'] = {'Cite ADB'}, ['CITEREFFriedrich_Wilhelm_Bautz1975'] = {'BBKL'}, ['CITEREFFriedrich_Wilhelm_Bautz1990'] = {'BBKL'}, ['CITEREFFry1964'] = {'RCTS-LocosLNER-7', 'RCTS-LocosLNER'}, ['CITEREFFry1966'] = {'RCTS-LocosLNER-5', 'RCTS-LocosLNER'}, ['CITEREFFrye1975'] = template_names['Cam_Hist_Iran'], ['CITEREFFrye1983'] = template_names['Cam_Hist_Iran'], ['CITEREFFrye2004'] = template_names['Iranica'], ['CITEREFFubini2012'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFFudenbergTirole1991'] = {'Cite Fudenberg Tirole 1991'}, ['CITEREFFultonHarris1991'] = {'Fulton-Harris'}, ----------< G >---------- ['CITEREFGarakaniBrown2013'] = {'Encyclopaedia Islamica'}, ['CITEREFGardner2005'] = {'MSW3 Microbiotheria'}, ['CITEREFGardoni2015'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFGareyJohnson1979'] = {'Garey-Johnson'}, ['CITEREFGarsoian2000'] = template_names['Iranica'], ['CITEREFGarsoian2004'] = template_names['Iranica'], ['CITEREFGarsoian2005'] = template_names['Iranica'], ['CITEREFGarth2003'] = template_names['ME-ref'], ['CITEREFGazette34205'] = {'London Gazette'}, ['CITEREFGazette34339'] = {'London Gazette'}, ['CITEREFGazette34390'] = {'London Gazette'}, ['CITEREFGazette34427'] = {'London Gazette'}, ['CITEREFGazette34558'] = {'London Gazette'}, ['CITEREFGazette34870'] = {'London Gazette'}, ['CITEREFGazette34978'] = {'London Gazette'}, ['CITEREFGazette34989'] = {'London Gazette'}, ['CITEREFGazette35037'] = {'London Gazette'}, ['CITEREFGazette35107'] = {'London Gazette'}, ['CITEREFGazette35134'] = {'London Gazette'}, ['CITEREFGazette35284'] = {'London Gazette'}, ['CITEREFGazette37560'] = {'London Gazette'}, ['CITEREFGazette37590'] = {'London Gazette'}, ['CITEREFGazette37598'] = {'London Gazette'}, ['CITEREFGazette37610'] = {'London Gazette'}, ['CITEREFGazette38020'] = {'London Gazette'}, ['CITEREFGazette38611'] = {'London Gazette'}, ['CITEREFGeanakoplos1959'] = {'Emperor Michael Palaeologus and the West'}, ['CITEREFGeorg_von_Dadelsen1953'] = template_names['NDB'], ['CITEREFGhanoonparvar1989'] = template_names['Iranica'], ['CITEREFGhereghlou2009'] = template_names['Iranica'], ['CITEREFGhereghlou2016'] = template_names['Iranica'], ['CITEREFGhulamiyan2015'] = template_names['Iranica'], ['CITEREFGhulamiyan2015'] = {'Encyclopaedia Islamica'}, ['CITEREFGiannasi1975'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFGibb1923'] = {'The Arab Conquests in Central Asia'}, ['CITEREFGignoux1983'] = template_names['Iranica'], ['CITEREFGignoux1994'] = template_names['Iranica'], ['CITEREFGil1997'] = {'A History of Palestine, 634-1099', 'A History of Palestine, 634–1099'}, ['CITEREFGillham2001'] = {'Gillham-Waterloo-City'}, ['CITEREFGilliland1969'] = {'Gilliland'}, ['CITEREFGilliland1994'] = {'Pop Chronicles 40s'}, ['CITEREFGilliverMarshallWeiner2006'] = template_names['ME-ref'], ['CITEREFGilmanPeckColby1905'] = {'Cite NIE', 'New International Encyclopedia', 'NIE'}, ['CITEREFGilmanPeckColby1916'] = {'New International Encyclopedia', 'NIE'}, ['CITEREFGiunashvili2016'] = template_names['Iranica'], ['CITEREFGleaves1921'] = {'Gleaves'}, ['CITEREFGlischinski1997'] = {'Glischinski-Santa Fe'}, ['CITEREFGlöckner1983'] = {'Bach\'s compositions (sources)'}, ['CITEREFGoldberg1981'] = {'Goldberg-Amtrak'}, ['CITEREFGordon2001'] = {'Gordon-The Breaking of a Thousand Swords'}, ['CITEREFGraham1974'] = {'Cite DCB'}, ['CITEREFGrant1994'] = {'Grant-Death'}, ['CITEREFGrant2010'] = {'Grant-Twilight'}, ['CITEREFGrant2017'] = {'Grant-RailCo'}, ['CITEREFGrassi2018'] = template_names['Iranica'], ['CITEREFGray1986'] = template_names['Cam_Hist_Iran'], ['CITEREFGreenlaw2007'] = {'Greenlaw-Via Rail'}, ['CITEREFGregory1991'] = template_names['ODB'], ['CITEREFGregoryŠevčenko1991'] = template_names['ODB'], ['CITEREFGrete_Schemann1957'] = template_names['NDB'], ['CITEREFGrey2002'] = {'Australian Dictionary of Biography'}, ['CITEREFGrierson1903'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'}, ['CITEREFGrierson1908'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'}, ['CITEREFGrierson1919'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'}, ['CITEREFGrierson1967'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'}, ['CITEREFGriffith1991'] = template_names['ODB'], ['CITEREFGriffithsSmith1999'] = {'Griffiths-Sheds1'}, ['CITEREFGriffithsSmith2000'] = {'Griffiths-Sheds2'}, ['CITEREFGrothendieck1955'] = {'Grothendieck Produits Tensoriels Topologiques et Espaces Nucléaires'}, ['CITEREFGrothendieck1973'] = {'Grothendieck Topological Vector Spaces'}, ['CITEREFGrothendieckDieudonné1960'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1961'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1963'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1964'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1965'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1966'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1967'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1971'] = {'EGA'}, ['CITEREFGroves2005'] = {'MSW3 Primates', 'MSW3 Groves'}, ['CITEREFGrubb2005'] = {'MSW3 Artiodactyla'}, ['CITEREFGuilland1967'] = {'Recherches sur les institutions byzantines'}, ['CITEREFGulino2005'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFGunzburg1984'] = {'Gunzburg-History WAGR Steam'}, ['CITEREFGurneyNabavi1993'] = template_names['Iranica'], ['CITEREFGutas1987'] = template_names['Iranica'], ['CITEREFGvakharia2001'] = template_names['Iranica'], ['CITEREFGüner1997'] = {'TDV Encyclopedia of Islam'}, ----------< H >---------- ['CITEREFHaarer2018'] = template_names['ODLA'], ['CITEREFHabibi2021'] = template_names['Iranica'], ['CITEREFHadidi2000'] = template_names['Iranica'], ['CITEREFHaji2008'] = template_names['Iranica'], ['CITEREFHaldon1999'] = {'Warfare, State and Society in the Byzantine World, 565–1204'}, ['CITEREFHalliday1985'] = {'Halliday-AustWineCompend'}, ['CITEREFHalliday2008'] = {'Halliday-JHWAtlasAust2008'}, ['CITEREFHalliday2009'] = {'Halliday-AustWineEncyc'}, ['CITEREFHalm1998'] = template_names['Iranica'], ['CITEREFHalpenny1990'] = {'Canadabio'}, ['CITEREFHambly1990'] = template_names['Cam_Hist_Iran'], ['CITEREFHambly1991'] = template_names['Cam_Hist_Iran'], ['CITEREFHammondAnderson1993'] = template_names['ME-ref'], ['CITEREFHammondScull1995'] = template_names['ME-ref'], ['CITEREFHammondScull2005'] = template_names['ME-ref'], ['CITEREFHammondScull2006'] = template_names['ME-ref'], ['CITEREFHanaway1988'] = template_names['Iranica'], ['CITEREFHanaway1989'] = template_names['Iranica'], ['CITEREFHanawayLewisohn2004'] = template_names['Iranica'], ['CITEREFHans_Heinrich_Borcherdt1955'] = template_names['NDB'], ['CITEREFHans_Knudsen1972'] = template_names['NDB'], ['CITEREFHansen1988'] = {'Book-Hansen-US Nuclear Weapons'}, ['CITEREFHansman1991'] = template_names['Iranica'], ['CITEREFHartshorne1977'] = {'Hartshorne AG'}, ['CITEREFHassanpour1989'] = template_names['Iranica'], ['CITEREFHassanpour1995'] = template_names['Iranica'], ['CITEREFHasumi2003'] = {'Hasumi-shiguehiko-ozu-2003'}, ['CITEREFHaswell-Smith2004'] = {'Haswell-Smith'}, ['CITEREFHaugic1908'] = {'Schaff-Herzog'}, ['CITEREFHawting1987'] = {'The First Dynasty of Islam'}, ['CITEREFHawting2000'] = {'The First Dynasty of Islam'}, ['CITEREFHaynes2011'] = {'RubberBible92nd'}, ['CITEREFHeinichen1728'] = {'Bach\'s compositions (sources)'}, ['CITEREFHeinrich_Welti1890'] = {'Cite ADB'}, ['CITEREFHelgen2005'] = {'MSW3 Scandentia'}, ['CITEREFHellmann1965'] = {'Bach\'s compositions (sources)'}, ['CITEREFHenrici1725'] = {'Bach\'s compositions (sources)'}, ['CITEREFHenryOrsmond1928'] = {'Raiatea family tree'}, ['CITEREFHermann_Palm1876'] = {'Cite ADB'}, ['CITEREFHerr2000'] = {'Herr-LN'}, ['CITEREFHeschel2007'] = {'Encyclopaedia Judaica', 'Cite EJ', 'Cite Encyclopaedia Judaica'}, ['CITEREFHewsen1988'] = template_names['Iranica'], ['CITEREFHidyHidyScottHofsummer2004'] = {'Hidy-Great Northern'}, ['CITEREFHildHellenkemper1990'] = {'Tabula Imperii Byzantini'}, ['CITEREFHildHellenkemper1994'] = {'Tabula Imperii Byzantini'}, ['CITEREFHildRestle1981'] = {'Tabula Imperii Byzantini'}, ['CITEREFHillenbrand1986'] = template_names['Iranica'], ['CITEREFHills,_Power_from_Steam'] = {'Book-Hills-Power from Steam'}, ['CITEREFHills1989'] = {'Book-Hills-Power from Steam'}, ['CITEREFHilmarJestremski2004'] = {'Schubert\'s compositions (references)'}, ['CITEREFHilton1980'] = {'Hilton-Amtrak'}, ['CITEREFHilton1990'] = {'Hilton Narrow Gauge'}, ['CITEREFHiltonDue1960'] = {'Hilton-Interurban'}, ['CITEREFHinton1986'] = {'HistoryofParliament'}, ['CITEREFHirsch1906'] = {'Cite JE1906'}, ['CITEREFHistoric_Environment_Scotland'] = {'Canmore'}, ['CITEREFHistoric_Environment_Scotland1972'] = {'Historic Environment Scotland'}, ['CITEREFHistoric_Environment_Scotland1976'] = {'Historic Environment Scotland'}, ['CITEREFHistoric_Environment_Scotland2020'] = {'Historic Environment Scotland'}, ['CITEREFHistoric_Environment_Scotland:_Rusco_Tower2020'] = {'Historic Environment Scotland'}, ['CITEREFHistoric_Environment_ScotlandLB33744'] = {'Historic Environment Scotland'}, ['CITEREFHistoric_Environment_ScotlandLB50114'] = {'Historic Environment Scotland'}, ['CITEREFHob.'] = {'Schubert\'s compositions (references)'}, ['CITEREFHoffmanSmith2005'] = {'MSW3 Lagomorpha'}, ['CITEREFHoffmann1738'] = {'Bach\'s compositions (sources)'}, ['CITEREFHofmann1983'] = {'Bach\'s compositions (sources)'}, ['CITEREFHofmann1987'] = {'Bach\'s compositions (sources)'}, ['CITEREFHofmann1999'] = {'Bach\'s compositions (sources)'}, ['CITEREFHolland1972'] = {'Holland-Vol 2'}, ['CITEREFHolland1988'] = {'Cite DCB'}, ['CITEREFHolland2001'] = {'Holland-Classic'}, ['CITEREFHollingsworth1980'] = {'Hollingsworth-Atlas-Rigby'}, ['CITEREFHollingsworth1991'] = template_names['ODB'], ['CITEREFHollingsworthCutler1991'] = template_names['ODB'], ['CITEREFHolmgren2003'] = {'EFloras'}, ['CITEREFHoltBiddle1986'] = {'Holt-NorthWest'}, ['CITEREFHolton1989'] = {'Holton-Reading-1'}, ['CITEREFHonigmann1935'] = {'Byzance et les Arabes'}, ['CITEREFHopley1983'] = {'Australian Dictionary of Biography'}, ['CITEREFHort1911'] = {'DCBL'}, ['CITEREFHorváth1966'] = {'Horváth Topological Vector Spaces and Distributions Volume 1 1966'}, ['CITEREFHosseini2017'] = template_names['Iranica'], ['CITEREFHounshell1984'] = {'Hounshell1984'}, ['CITEREFHudson1997'] = {'Country study'}, ['CITEREFHughes1990'] = {'Hughes-IndianLocos1'}, ['CITEREFHughes1992'] = {'Hughes-IndianLocos2'}, ['CITEREFHughes1994'] = {'Hughes-IndianLocos3'}, ['CITEREFHughes1996'] = {'Hughes-IndianLocos4'}, ['CITEREFHummel1943'] = {'Cite ECCP'}, ['CITEREFHumphreys2018'] = template_names['ODLA'], ['CITEREFHunter-Crawley2018'] = template_names['ODLA'], ['CITEREFHunter2008'] = {'Country study'}, ['CITEREFHutter2009'] = template_names['Iranica'], ['CITEREFHutterer2005'] = {'MSW3 Soricomorpha'}, ['CITEREFHütter2012'] = {'Hütter-50bis53'}, ['CITEREFHütter2015'] = {'Hütter-54bis59'}, ['CITEREFHütter2021'] = {'Hütter-60bis91'}, ----------< I >---------- ['CITEREFIbn_Khallikan1843'] = {'Ibn Khallikan\'s Biographical Dictionary'}, ['CITEREFImber2002'] = {'Imber-The Ottoman Empire, 1300–1650'}, ['CITEREFInalcik1989'] = {'Setton-A History of the Crusades'}, ['CITEREFIranica:_Bahrām'] = template_names['Iranica'], ['CITEREFIrvine2006'] = template_names['Iranica'], ['CITEREFIshino1998'] = {'Teishajo'}, ['CITEREFIshkevariNejad2008'] = {'Encyclopaedia Islamica'}, ['CITEREFIvey1919'] = {'Ivey-Marquette'}, ----------< J >---------- ['CITEREFJackson1908'] = {'Schaff-Herzog'}, ['CITEREFJackson1988'] = template_names['Iranica'], ['CITEREFJackson1989'] = template_names['Iranica'], ['CITEREFJackson1995'] = {'Cite enc-nyc'}, ['CITEREFJackson2010'] = {'Cite enc-nyc2'}, ['CITEREFJacksonMelville2001'] = template_names['Iranica'], ['CITEREFJacobs1904'] = {'Cite Jewish Encyclopedia'}, ['CITEREFJarchow1981'] = {'Jarchow Locally Convex Spaces'}, ['CITEREFJavadiBurrill1988'] = template_names['Iranica'], ['CITEREFJohn_O&#039;Donovan1856'] = {'Cite AFM'}, ['CITEREFJohnstonWelshSchafer2001'] = {'Johnston-Streamliner'}, ['CITEREFJones2011'] = {'Cite EPD'}, ['CITEREFJordan2002'] = {'Jordan-WineWABest'}, ['CITEREFJoshi1983'] = {'Joshi Introduction to General Topology'}, ['CITEREFJoslen2003'] = {'Joslen-OOB'}, ['CITEREFJowett1867'] = {'DGRBM', 'Cite DGRBM'}, ['CITEREFJowett1989'] = {'Jowett-Atlas', 'Carnarvonshire Railway'}, ['CITEREFJowett2000'] = {'Jowett-Nationalised'}, ['CITEREFJullien2018'] = template_names['ODLA'], ['CITEREFJupp1986'] = {'HistoryofParliament'}, ----------< K >---------- ['CITEREFK.'] = {'Schubert\'s compositions (references)'}, ['CITEREFKadinsky2016'] = {'Cite Hidden Waters NYC'}, ['CITEREFKaegi1991'] = template_names['ODB'], ['CITEREFKamaly2006'] = template_names['Iranica'], ['CITEREFKamp1981'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFKang2008'] = {'Country study'}, ['CITEREFKaramatiMelvin-Koushki2021'] = template_names['Iranica'], ['CITEREFKaramatiMelvin-Koushki2021'] = {'Encyclopaedia Islamica'}, ['CITEREFKarimi-Hakkak1997'] = template_names['Iranica'], ['CITEREFKarimiMaghsoodi2013'] = {'Encyclopaedia Islamica'}, ['CITEREFKarl_Frohnmeyer1953'] = template_names['NDB'], ['CITEREFKarnow1989'] = {'Cite-Karnow'}, ['CITEREFKasheff2001'] = template_names['Iranica'], ['CITEREFKayvaniGholami2008'] = {'Encyclopaedia Islamica'}, ['CITEREFKazhdan1991'] = template_names['ODB'], ['CITEREFKazhdanCutler1991'] = template_names['ODB'], ['CITEREFKazhdanJeffreys1991'] = template_names['ODB'], ['CITEREFKazhdanŠevčenko1991'] = template_names['ODB'], ['CITEREFKeall1987'] = template_names['Iranica'], ['CITEREFKeefe2006'] = {'Schubert\'s compositions (references)'}, ['CITEREFKeightley1999'] = {'Cite Cambridge History of China'}, ['CITEREFKeller1937'] = {'Bach\'s compositions (sources)'}, ['CITEREFKelly1988'] = {'Cite GEIL'}, ['CITEREFKellyBurrage1920'] = {'Cite AMB1920'}, ['CITEREFKennedy1998'] = {'The Cambridge History of Egypt', 'Cite Kennedy 1998', 'Cambridge History of Egypt'}, ['CITEREFKennedy2001'] = {'Kennedy-The Armies of the Caliphs'}, ['CITEREFKennedy2004'] = {'The Prophet and the Age of the Caliphates'}, ['CITEREFKennedy2007'] = {'Kennedy-The Great Arab Conquests'}, ['CITEREFKennedy2016'] = {'The Prophet and the Age of the Caliphates'}, ['CITEREFKenyon2011'] = {'Bach\'s compositions (sources)'}, ['CITEREFKerrigan1995'] = {'Shakespeare sonnets bibliography'}, ['CITEREFKettenhofen1995'] = template_names['Iranica'], ['CITEREFKettenhofen2001'] = template_names['Iranica'], ['CITEREFKettenhofenBournoutianHewsen1998'] = template_names['Iranica'], ['CITEREFKhaleelulla1982'] = {'Khaleelulla Counterexamples in Topological Vector Spaces'}, ['CITEREFKhaleghi-Motlagh1999'] = template_names['Iranica'], ['CITEREFKhaleghi-Motlagh2001'] = template_names['Iranica'], ['CITEREFKhan2012'] = {'Cite Banglapedia'}, ['CITEREFKhatibiNegahban2013'] = {'Encyclopaedia Islamica'}, ['CITEREFKim1994'] = {'Country study'}, ['CITEREFKirnberger1774'] = {'Bach\'s compositions (sources)'}, ['CITEREFKirnberger1780'] = {'Bach\'s compositions (sources)'}, ['CITEREFKlein2006'] = {'Klein-UP-2'}, ['CITEREFKlíma1988'] = template_names['Iranica'], ['CITEREFKobayashi1978'] = {'Bach\'s compositions (sources)'}, ['CITEREFKoderHild1976'] = {'Tabula Imperii Byzantini'}, ['CITEREFKoderSoustalKoder1998'] = {'Tabula Imperii Byzantini'}, ['CITEREFKoeppel2015'] = {'Cite citygrid'}, ['CITEREFKofos1977'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFKohler1902'] = {'Cite Jewish Encyclopedia'}, ['CITEREFKolde1914'] = {'Schaff-Herzog'}, ['CITEREFKoliopoulos1978'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFKolmogorovFomin1957'] = {'Kolmogorov Fomin Elements of the Theory of Functions and Functional Analysis'}, ['CITEREFKonrad_Ameln1985'] = template_names['NDB'], ['CITEREFKoska2011'] = {'Bach\'s compositions (sources)'}, ['CITEREFKratville1962'] = {'Kratville-SSL'}, ['CITEREFKretzschmar1910'] = {'Bach\'s compositions (sources)'}, ['CITEREFKube2009'] = {'Schubert\'s compositions (references)'}, ['CITEREFKurz1983'] = template_names['Cam_Hist_Iran'], ['CITEREFKuznik2008'] = {'Bach\'s compositions (sources)'}, ['CITEREFKöthe1969'] = {'Köthe Topological Vector Spaces I'}, ['CITEREFKöthe1979'] = {'Köthe Topological Vector Spaces II'}, ['CITEREFKöthe1983'] = {'Köthe Topological Vector Spaces I'}, ['CITEREFKülzer2008'] = {'Tabula Imperii Byzantini'}, ['CITEREFKüçükaşcı2001'] = {'TDV Encyclopedia of Islam'}, ----------< L >---------- ['CITEREFLa_Porta2018'] = template_names['ODLA'], ['CITEREFLacourcière1974'] = {'Cite DCB'}, ['CITEREFLadefogedMaddieson1996'] = {'SOWL'}, ['CITEREFLandau-Tasseron2010'] = {'New Cambridge History of Islam'}, ['CITEREFLandauCondit1996'] = {'Cite nysky'}, ['CITEREFLandmann1907'] = {'Bach\'s compositions (sources)'}, ['CITEREFLang1983'] = template_names['Cam_Hist_Iran'], ['CITEREFLangaroodiCooper2008'] = {'Encyclopaedia Islamica'}, ['CITEREFLangaroodiCooper2015'] = template_names['Iranica'], ['CITEREFLangaroodiCooper2015'] = {'Encyclopaedia Islamica'}, ['CITEREFLangaroodiNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFLangaroodiNegahban2015'] = template_names['Iranica'], ['CITEREFLangaroodiNegahban2015'] = {'Encyclopaedia Islamica'}, ['CITEREFLangaroudi2001'] = template_names['Iranica'], ['CITEREFLatham1982–2021'] = template_names['Iranica'], ['CITEREFLazard1975'] = template_names['Cam_Hist_Iran'], ['CITEREFLaërtius1925'] = {'Cite Lives of the Eminent Philosophers', 'Cite LotEP'}, ['CITEREFLeCoq1986'] = template_names['Iranica'], ['CITEREFLe_Quien1740'] = {'Oriens Christianus'}, ['CITEREFLe_Strange1900'] = {'Baghdad During the Abbasid Caliphate'}, ['CITEREFLe_Strange1905'] = {'Lands of the Eastern Caliphate'}, ['CITEREFLe_Strange1922'] = {'Baghdad During the Abbasid Caliphate'}, ['CITEREFLeblanc1979'] = {'Cite DCB'}, ['CITEREFLee1903'] = {'Cite DNBIE'}, ['CITEREFLee2018'] = template_names['ODLA'], ['CITEREFLeisingerWollny1993'] = {'Bach\'s compositions (sources)'}, ['CITEREFLerner1988'] = template_names['Iranica'], ['CITEREFLev1999'] = {'Saladin in Egypt'}, ['CITEREFLevitan2001'] = {'Springer'}, ['CITEREFLewin1925'] = {'Lewin-EarlyRail'}, ['CITEREFLewis1969'] = {'Setton-A History of the Crusades'}, ['CITEREFLewis1986'] = {'Lewis-Shortline-1986'}, ['CITEREFLewis1991'] = {'Lewis-Shortline-1991'}, ['CITEREFLewis1996'] = {'Lewis-Shortline-1996'}, ['CITEREFLewis2001'] = template_names['Iranica'], ['CITEREFLi2002'] = {'Cite Cambridge History of China'}, ['CITEREFLiederNet_Archive'] = {'Schubert\'s compositions (references)'}, ['CITEREFLieu1997'] = template_names['Iranica'], ['CITEREFLighthouses_of_Australia_Inc'] = {'Cite loa'}, ['CITEREFLind1986'] = {'Lind-Limiteds'}, ['CITEREFLittle1974'] = {'Cite DCB'}, ['CITEREFLongnon1969'] = {'Setton-A History of the Crusades'}, ['CITEREFLosensky2003'] = template_names['Iranica'], ['CITEREFLoverance2018'] = template_names['ODLA'], ['CITEREFLukonin1983'] = {'Cambridge History of Iran'}, ['CITEREFLurje2010'] = template_names['Iranica'], ['CITEREFLuttrell1975'] = {'Setton-A History of the Crusades'}, ['CITEREFLuttrell1987'] = {'DBI'}, ['CITEREFLynch2004'] = {'Lynch-Penn Central'}, ['CITEREFLynch2005'] = {'Lynch-New Haven passenger'}, ['CITEREFLynch2018'] = template_names['ODLA'], ['CITEREFLéger1990'] = {'Cite DCB'}, ['CITEREFle_Fleming1953'] = {'RCTS-LocosGWR-8'}, ['CITEREFle_Fleming1960'] = {'RCTS-LocosGWR-8'}, ----------< M >---------- ['CITEREFMacDermot1927'] = {'Infobox GWR'}, ['CITEREFMacDermot1931'] = {'Infobox GWR'}, ['CITEREFMacEoin1988'] = template_names['Iranica'], ['CITEREFMacKenzie1992'] = template_names['Iranica'], ['CITEREFMadelung1975'] = template_names['Cam_Hist_Iran'], ['CITEREFMadelung1978'] = {'EI2'}, ['CITEREFMadelung1983'] = template_names['Iranica'], ['CITEREFMadelung1984'] = template_names['Iranica'], ['CITEREFMadelung1988'] = template_names['Iranica'], ['CITEREFMadelung1993'] = template_names['Iranica'], ['CITEREFMadelung2003'] = template_names['Iranica'], ['CITEREFMadelungFelix1995'] = template_names['Iranica'], ['CITEREFMaeda2009'] = template_names['Iranica'], ['CITEREFMagdalino2002'] = {'The Empire of Manuel I Komnenos'}, ['CITEREFMaiken1989'] = {'Maiken-Night Trains'}, ['CITEREFMailer2004'] = {'Mailer-Omaha Road'}, ['CITEREFMajidiNegahban'] = {'Encyclopaedia Islamica'}, ['CITEREFMalandra2009'] = template_names['Iranica'], ['CITEREFManfred_Knedlik2007'] = {'BBKL'}, ['CITEREFMarshak1994'] = template_names['Iranica'], ['CITEREFMarshak2002'] = template_names['Iranica'], ['CITEREFMarshall1823'] = {'Cite RNB1823'}, ['CITEREFMarshall1824'] = {'Cite RNB1823'}, ['CITEREFMarshall1825'] = {'Cite RNB1823'}, ['CITEREFMarshall1827'] = {'Cite RNB1823'}, ['CITEREFMarshall1828'] = {'Cite RNB1823'}, ['CITEREFMarshall1829'] = {'Cite RNB1823'}, ['CITEREFMarshall1830'] = {'Cite RNB1823'}, ['CITEREFMarshall1831'] = {'Cite RNB1823'}, ['CITEREFMarshall1832'] = {'Cite RNB1823'}, ['CITEREFMarshall1833'] = {'Cite RNB1823'}, ['CITEREFMarshall1835'] = {'Cite RNB1823'}, ['CITEREFMarshall1972'] = {'Lancashire & Yorkshire Railway 3'}, ['CITEREFMarshall2001'] = {'Marshall-INGSR'}, ['CITEREFMartin_Persch1992'] = {'BBKL'}, ['CITEREFMartin_Persch1993'] = {'BBKL'}, ['CITEREFMartin_Persch1996'] = {'BBKL'}, ['CITEREFMartindale1980'] = {'Prosopography of the Later Roman Empire', 'PLRE'}, ['CITEREFMartindale1992'] = {'Prosopography of the Later Roman Empire', 'PLRE'}, ['CITEREFMartindaleJonesMorris1971'] = {'Prosopography of the Later Roman Empire', 'PLRE'}, ['CITEREFMasoud_Jalali-Moqaddam2015'] = {'Encyclopaedia Islamica'}, ['CITEREFMatini1987'] = template_names['Iranica'], ['CITEREFMatthee2008'] = template_names['Iranica'], ['CITEREFMatthee2015'] = template_names['Iranica'], ['CITEREFMaul2005'] = {'Bach\'s compositions (sources)'}, ['CITEREFMayGray2006'] = {'MayGray-WAGRPassCar'}, ['CITEREFMazzaoui2002'] = template_names['Iranica'], ['CITEREFMcArthurMcArthur2003'] = {'Cite ogn', 'Cite Oregon Geographic Names'}, ['CITEREFMcCaffrey1990'] = template_names['Iranica'], ['CITEREFMcCorduck2004'] = {'McCorduck 2004'}, ['CITEREFMcCurdyRogers1902'] = {'Cite Jewish Encyclopedia'}, ['CITEREFMcDonnell2015'] = {'McDonnell-Locomotives-2nd'}, ['CITEREFMcGhee2008'] = {'Cite McGhee 2008'}, ['CITEREFMeiningen1704'] = {'Bach\'s compositions (sources)'}, ['CITEREFMeints1992'] = {'Meints-Companies'}, ['CITEREFMeints2005'] = {'Meints-Lines'}, ['CITEREFMelamed1988'] = {'Bach\'s compositions (sources)'}, ['CITEREFMelamed1995'] = {'Bach\'s compositions (sources)'}, ['CITEREFMelville1997'] = template_names['Iranica'], ['CITEREFMelville2003'] = template_names['Iranica'], ['CITEREFMennell1892'] = {'Dictionary of Australasian Biography'}, ['CITEREFMetcalfe2009'] = {'The Muslims of Medieval Italy'}, ['CITEREFMiddleton1961'] = {'Middleton-Interurban'}, ['CITEREFMiddleton2001'] = {'Middleton-Electrified-2nd'}, ['CITEREFMiddleton2002'] = {'Middleton-PRR-Under-Wire'}, ['CITEREFMiddletonSmerkDiehl2007'] = {'Encyclopedia of North American Railroads'}, ['CITEREFMiles1975'] = template_names['Cam_Hist_Iran'], ['CITEREFMillar2011'] = {'NZR Steam Locomotive'}, ['CITEREFMiller'] = {'Encyclopaedia Islamica'}, ['CITEREFMiller1908'] = {'The Latins in the Levant', 'Latins in the Levant'}, ['CITEREFMiller1921'] = {'Essays on the Latin Orient'}, ['CITEREFMinnich2008'] = {'Country study'}, ['CITEREFMiramar_Ship_Index'] = {'Csr', 'Cite ship register'}, ['CITEREFMitchell1965'] = {'Mitchell TOC'}, ['CITEREFMittermeierKonstantHawkinsLouis2006'] = {'LoM2'}, ['CITEREFMittermeierLouisRichardsonSchwitzer2010'] = {'LoM3'}, ['CITEREFMittermeierTattersallKonstantMeyers1994'] = {'LoM1'}, ['CITEREFMoore1875'] = {'Cite CEM'}, ['CITEREFMorana1993'] = {'Bach\'s compositions (sources)'}, ['CITEREFMorony2009'] = template_names['Iranica'], ['CITEREFMoschonas1975'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFMottahedeh1975'] = template_names['Cam_Hist_Iran'], ['CITEREFMozartHaydnHaydn2008'] = {'Schubert\'s compositions (references)'}, ['CITEREFMunkres1974'] = {'Munkres Topology'}, ['CITEREFMunkres2000'] = {'Munkres Topology'}, ['CITEREFMurray2006'] = {'Murray-Illinois Central'}, ['CITEREFMusserCarleton2005'] = {'MSW3 Muroidea'}, ['CITEREFMüller,_Hans-Christian1966'] = template_names['NDB'], ['CITEREFMyersWang2002'] = {'Cite Cambridge History of China'}, ----------< N >---------- ['CITEREFNSA_II,_15'] = {'Schubert\'s compositions (references)'}, ['CITEREFNSA_scores'] = {'Schubert\'s compositions (references)'}, ['CITEREFNSA_website'] = {'Schubert\'s compositions (references)'}, ['CITEREFNagel1990'] = template_names['Iranica'], ['CITEREFNariciBeckenstein2011'] = {'Narici Beckenstein Topological Vector Spaces'}, ['CITEREFNavāʾī1988'] = template_names['Iranica'], ['CITEREFNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFNersessian2018'] = template_names['ODLA'], ['CITEREFNetzer1998'] = template_names['Iranica'], ['CITEREFNetzer2007'] = template_names['Iranica'], ['CITEREFNeukirch1999'] = {'Neukirch ANT'}, ['CITEREFNeukirchSchmidtWingberg2000'] = {'Neukirch et al. CNF'}, ['CITEREFNew_York_City_Landmarks_Preservation_CommissionDolkartPostal2009'] = {'Cite nycland'}, ['CITEREFNewbould1999'] = {'Schubert\'s compositions (references)'}, ['CITEREFNewman1994'] = template_names['Iranica'], ['CITEREFNicholsonCanepaDaryaee2018'] = template_names['ODLA'], ['CITEREFNicol1988'] = {'Byzantium and Venice: A Study in Diplomatic and Cultural Relations'}, ['CITEREFNicol1992'] = {'The Immortal Emperor: The Life and Legend of Constantine Palaiologos, Last Emperor of the Romans'}, ['CITEREFNicol1993'] = {'The Last Centuries of Byzantium, 1261–1453', 'The Last Centuries of Byzantium'}, ['CITEREFNock1974'] = {'Nock-EustonGlasgow'}, ----------< O >---------- ['CITEREFO&#039;Byrne1849'] = {'Cite NBD1849'}, ['CITEREFO&#039;ConnorRobertson'] = {'MacTutor Biography', 'MacTutor'}, ['CITEREFO&#039;ConnorRobertson1996'] = {'MacTutor Biography', 'MacTutor'}, ['CITEREFO&#039;ConnorRobertson2000'] = {'MacTutor Biography', 'MacTutor'}, ['CITEREFO&#039;ConnorRobertson2004'] = {'MacTutor Biography', 'MacTutor'}, ['CITEREFO&#039;Donoghue1897'] = {'Cite DNB'}, ['CITEREFODB'] = template_names['ODB'], ['CITEREFODLA'] = template_names['ODLA'], ['CITEREFOberling1984'] = template_names['Iranica'], ['CITEREFOberling2008'] = template_names['Iranica'], ['CITEREFOberling2010'] = template_names['Iranica'], ['CITEREFOdisheli2018'] = template_names['ODLA'], ['CITEREFOfficial_Guide_of_the_Railways1950'] = {'Official Guide of the Railways'}, ['CITEREFOgorek2012'] = {'Ogorek-South Shore'}, ['CITEREFOikonomides1991'] = template_names['ODB'], ['CITEREFOikonomou1977'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFOlbrycht2021'] = template_names['Iranica'], ----------< P >---------- ['CITEREFPLP'] = {'Prosopographisches Lexikon der Palaiologenzeit', 'PLP'}, ['CITEREFPalmer1875'] = {'Cite ADB'}, ['CITEREFPalmerStewart1965'] = {'Palmer & Stewart'}, ['CITEREFPanainoAbdollahyBalland1990'] = template_names['Iranica'], ['CITEREFPandariHirtensteinNegahban2013'] = {'Encyclopaedia Islamica'}, ['CITEREFParvin2003'] = template_names['Iranica'], ['CITEREFParvin2009'] = template_names['Iranica'], ['CITEREFPatience1996'] = {'Patience-SteamTwilight'}, ['CITEREFPatton2005'] = {'MSW3 Geomyidae'}, ['CITEREFPaul2000'] = template_names['Iranica'], ['CITEREFPawson1979'] = {'Pawson-Delaware Valley'}, ['CITEREFPaxtonBourne1985'] = {'Paxton-Bourne'}, ['CITEREFPeacock2011'] = template_names['Iranica'], ['CITEREFPeck1898'] = {'HDCA'}, ['CITEREFPerlis2001'] = {'Springer'}, ['CITEREFPerreault2004'] = {'Bach\'s compositions (sources)'}, ['CITEREFPerry1983'] = template_names['Cam_Hist_Iran'], ['CITEREFPerry1990'] = template_names['Cam_Hist_Iran'], ['CITEREFPerry1991'] = template_names['Cam_Hist_Iran'], ['CITEREFPetropoulosKoumarianou1977'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFPetrucci1982'] = {'DBI'}, ['CITEREFPezeshk2017'] = {'Encyclopaedia Islamica'}, ['CITEREFPezeshkKhaleeli2017'] = template_names['Iranica'], ['CITEREFPezeshkKhaleeli2017'] = {'Encyclopaedia Islamica'}, ['CITEREFPfau2008'] = {'Bach\'s compositions (sources)'}, ['CITEREFPinkepank1973'] = {'Pinkepank diesel spotters guide 2'}, ['CITEREFPlantlist2016'] = {'Plantlist'}, ['CITEREFPlaten1976'] = {'Bach\'s compositions (sources)'}, ['CITEREFPloumidisAlexiou1974'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFPmbZ'] = {'Prosopographie der mittelbyzantinischen Zeit', 'PMBZ'}, ['CITEREFPolemis1968'] = {'Polemis-The Doukai'}, ['CITEREFPope2007'] = {'Encyclopaedia Judaica', 'Cite EJ', 'Cite Encyclopaedia Judaica'}, ['CITEREFPopplewell'] = {'Popplewell-Gazetteer'}, ['CITEREFPotts2018'] = template_names['ODLA'], ['CITEREFPottsCanepa2018'] = template_names['ODLA'], ['CITEREFPourshariati2017'] = {'Encyclopædia Iranica Online'}, ['CITEREFPozza1992'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFPrawer1985'] = {'Setton-A History of the Crusades'}, ['CITEREFPritsak1991'] = template_names['ODB'], ['CITEREFProsopographie_der_mittelbyz._Zeit'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ----------< Q >---------- ['CITEREFQuick2009'] = {'Quick-Stations'}, ['CITEREFQuick2019'] = {'Quick-stations-5'}, ['CITEREFQuick2020'] = {'Quick-stations-5'}, ['CITEREFQuick2022'] = {'Quick-stations-5'}, ['CITEREFQuinn2003'] = template_names['Iranica'], ----------< R >---------- ['CITEREFRaditsa1983'] = template_names['Cam_Hist_Iran'], ['CITEREFRahman1983'] = template_names['Iranica'], ['CITEREFRaja&#039;i1987'] = template_names['Iranica'], ['CITEREFRamaer1974'] = {'Ramaer-SteamLocosEAR'}, ['CITEREFRansome-Wallis1971'] = {'Ransome-Wallis 1'}, ['CITEREFRateliff2007'] = template_names['ME-ref'], ['CITEREFRavegnano2000'] = {'DBI'}, ['CITEREFReed1953'] = {'RCTS-LocosGWR-2'}, ['CITEREFReed1975'] = {'Reed-Streamline era'}, ['CITEREFReed1997'] = {'Schubert\'s compositions (references)'}, ['CITEREFReinhard_Tenberg1990'] = {'BBKL'}, ['CITEREFRettinghaus2020'] = {'BDh'}, ['CITEREFReynolds1921'] = {'Cite Collier\'s', 'Collier\'s'}, ['CITEREFReynoldsOroszi2000'] = {'Reynolds-BO'}, ['CITEREFRezaHirtensteinGholami2021'] = {'Encyclopaedia Islamica'}, ['CITEREFRezakhani2018'] = template_names['ODLA'], ['CITEREFRezvani2014'] = template_names['Iranica'], ['CITEREFRichter-Bernburg2003'] = template_names['Iranica'], ['CITEREFRichter2018'] = {'BDh'}, ['CITEREFRigo2005'] = template_names['ODB'], ['CITEREFRipleyDana1863'] = {'New American Cyclopedia'}, ['CITEREFRipleyDana1864'] = {'New American Cyclopedia'}, ['CITEREFRipleyDana1879'] = {'Cite AmCyc'}, ['CITEREFRistaino1988'] = {'Country study'}, ['CITEREFRobert_Eitner1891'] = {'Cite ADB'}, ['CITEREFRobertson1983'] = {'Robertson-OriginScot'}, ['CITEREFRoe1916'] = {'Roe1916'}, ['CITEREFRoe1937'] = {'Roe1937'}, ['CITEREFRoemer1986'] = template_names['Cam_Hist_Iran'], ['CITEREFRoemer1989'] = template_names['Iranica'], ['CITEREFRoemer2004'] = template_names['Iranica'], ['CITEREFRolt1965'] = {'Rolt1965'}, ['CITEREFRoltKichenside1982'] = {'Rolt-Red'}, ['CITEREFRose1857'] = {'Cite Newgenbio'}, ['CITEREFRosenfeld1974'] = template_names['NDB'], ['CITEREFRosenzweigBlackmar1992'] = {'Cite Central Park History', 'Cite Central Park history'}, ['CITEREFRowe2002'] = {'Cite Cambridge History of China'}, ['CITEREFRowledge1975'] = {'Rowledge-Engines of the LMS'}, ['CITEREFRowledge1993'] = {'Rowledge-Irish Steam Register'}, ['CITEREFRowlett'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowlett2007'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowlett2012'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowlett2013'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowlett2016'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowlett2017'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowson1998'] = template_names['Iranica'], ['CITEREFRudin1973'] = {'Rudin Walter Functional Analysis'}, ['CITEREFRudin1991'] = {'Rudin Walter Functional Analysis'}, ['CITEREFRunciman1951'] = {'Runciman-A History of the Crusades'}, ['CITEREFRunciman1951–1954'] = {'Runciman-A History of the Crusades'}, ['CITEREFRunciman1952'] = {'Runciman-A History of the Crusades'}, ['CITEREFRunciman1954'] = {'Runciman-A History of the Crusades'}, ['CITEREFRunciman1989'] = {'Runciman-A History of the Crusades'}, ['CITEREFRussell1985'] = {'Setton-A History of the Crusades', 'Encyclopædia Iranica Online', 'Encyclopædia Iranica', 'Encyclopaedia Iranica', 'Cite Encyclopædia Iranica Online'}, ['CITEREFRussell1986'] = template_names['Iranica'], ['CITEREFRussell1987'] = template_names['Iranica'], ['CITEREFRussellNorvig2003'] = {'Russell Norvig 2003'}, ['CITEREFRybczynski2000'] = {'Rybczynski2000'}, ['CITEREFRypka1968'] = template_names['Cam_Hist_Iran'], ----------< S >---------- ['CITEREFSR_staff2013'] = {'Houston family tree'}, ['CITEREFSadeghiTehrani2008'] = {'Encyclopaedia Islamica'}, ['CITEREFSadıkoğlu1996'] = {'TDV Encyclopedia of Islam'}, ['CITEREFSafa1987'] = template_names['Iranica'], ['CITEREFSafa1988'] = template_names['Iranica'], ['CITEREFSafa1989'] = template_names['Iranica'], ['CITEREFSafa1994'] = template_names['Iranica'], ['CITEREFSafa2003'] = template_names['Iranica'], ['CITEREFSajjadiAsatryanMelvin-Koushki'] = {'Encyclopaedia Islamica Online'}, ['CITEREFSajjadiAsatryanMelvin-Koushki'] = {'Encyclopaedia Islamica'}, ['CITEREFSajjadiAsatryanMelvin-Koushki2021'] = template_names['Iranica'], ['CITEREFSalbiev2021'] = template_names['Iranica'], ['CITEREFSalo2004'] = template_names['ME-ref'], ['CITEREFSamiʿiMelvin-Koushki2013'] = {'Encyclopaedia Islamica'}, ['CITEREFSanders1998'] = {'The Cambridge History of Egypt', 'Cambridge History of Egypt'}, ['CITEREFSanders2003'] = {'Sanders-Indiana'}, ['CITEREFSanders2006'] = {'Sanders-Heartland'}, ['CITEREFSanders2007'] = {'Sanders-Akron'}, ['CITEREFSarikakis1974'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFSaunders2001'] = {'Saunders-Merging Lines'}, ['CITEREFSaunders2013'] = {'Saunders-Giants of the Seas'}, ['CITEREFSavadaShaw1992'] = {'Country study'}, ['CITEREFSavoryKaramustafa1998'] = template_names['Iranica'], ['CITEREFScarce1986'] = template_names['Iranica'], ['CITEREFSchaeferWolff1999'] = {'Schaefer Wolff Topological Vector Spaces'}, ['CITEREFSchafer1996'] = {'Schafer-Classic-Railroads-1'}, ['CITEREFSchafer1998'] = {'Schafer-Vintage Diesel'}, ['CITEREFSchafer2000'] = {'Schafer-More-Classic'}, ['CITEREFSchafer2003'] = {'Schafer-Classic-Railroads-3'}, ['CITEREFSchaferSolomon1997'] = {'Schafer-Pennsylvania'}, ['CITEREFSchaferWelsh1997'] = {'Schafer-Classic'}, ['CITEREFSchaferWelsh2002'] = {'Schafer-Streamliners'}, ['CITEREFSchaferWelshHolland2001'] = {'Schafer-American passenger train'}, ['CITEREFSchaff-Herzog'] = {'Schaff-Herzog'}, ['CITEREFSchechter1996'] = {'Schechter Handbook of Analysis and Its Foundations'}, ['CITEREFScheide1960'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchicht1805'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchilling1997'] = {'Schilling-pop-culture'}, ['CITEREFSchindel2013'] = template_names['Iranica'], ['CITEREFSchippmann1986'] = template_names['Iranica'], ['CITEREFSchippmann1987'] = template_names['Iranica'], ['CITEREFSchlitter2005'] = {'MSW3 Tubulidentata'}, ['CITEREFSchlumberger1983'] = template_names['Cam_Hist_Iran'], ['CITEREFSchmieder1950'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchmieder1990'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchmitt1986'] = template_names['Iranica'], ['CITEREFSchmitt1989'] = template_names['Iranica'], ['CITEREFSchmitt1993'] = template_names['Iranica'], ['CITEREFSchmitt1994'] = template_names['Iranica'], ['CITEREFSchmitt1995'] = template_names['Iranica'], ['CITEREFSchmitt2002'] = template_names['Iranica'], ['CITEREFSchmitt2004'] = template_names['Iranica'], ['CITEREFSchmitt2005'] = template_names['Iranica'], ['CITEREFSchmitt2018'] = template_names['Iranica'], ['CITEREFSchmittBailey1986'] = template_names['Iranica'], ['CITEREFSchmitz1870'] = {'Cite DGRBM'}, ['CITEREFSchneider1907'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchneider1912'] = {'Bach\'s compositions (sources)'}, ['CITEREFScholze1736'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchroeter1961'] = {'Schroeter-Eisenbahnen'}, ['CITEREFSchroeterRamaer1993'] = {'Schroeter-Ramaer-Eisenbahnen'}, ['CITEREFSchubert-online'] = {'Schubert\'s compositions (references)'}, ['CITEREFSchubert1968'] = {'Schubert Topology'}, ['CITEREFSchulenberg2010'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchulenberg2013'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchulze1980'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchulze1983'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchulze1984'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchwieterman2001'] = {'Schwieterman-Leaves-Eastern'}, ['CITEREFScottNegus2011'] = {'Scott-Negus-Cellar Door'}, ['CITEREFScribbins1970'] = {'Scribbins-Hiawatha'}, ['CITEREFScribbins2008'] = {'Scribbins-400-2008', 'Scribbins-Remembered'}, ['CITEREFSearle'] = {'Cite sslidx'}, ['CITEREFSegal1982'] = template_names['Iranica'], ['CITEREFSellwood1983'] = template_names['Cam_Hist_Iran'], ['CITEREFSemmensGoldfinch2003'] = {'Book-Semmens-Goldfinch-How Steam Locomotives Really Work'}, ['CITEREFSemsarZand2008'] = {'Encyclopaedia Islamica'}, ['CITEREFSetton1975'] = {'Setton-A History of the Crusades'}, ['CITEREFSetton1976'] = {'The Papacy and the Levant'}, ['CITEREFSetton1978'] = {'The Papacy and the Levant'}, ['CITEREFSetton1984'] = {'The Papacy and the Levant'}, ['CITEREFSettonHazard1975'] = {'Setton-A History of the Crusades'}, ['CITEREFSfyroeras1975'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFShahbazi1986'] = template_names['Iranica'], ['CITEREFShahbazi1987'] = template_names['Iranica'], ['CITEREFShahbazi1988'] = template_names['Iranica'], ['CITEREFShahbazi1989'] = template_names['Iranica'], ['CITEREFShahbazi1991'] = template_names['Iranica'], ['CITEREFShahbazi1994'] = template_names['Iranica'], ['CITEREFShahbazi2002'] = template_names['Iranica'], ['CITEREFShahbazi2003'] = template_names['Iranica'], ['CITEREFShahbazi2004'] = template_names['Iranica'], ['CITEREFShahbazi2005'] = template_names['Iranica'], ['CITEREFShahbaziBosworth1990'] = template_names['Iranica'], ['CITEREFShahbaziRichter-Bernburg2002'] = template_names['Iranica'], ['CITEREFShaki1991'] = template_names['Iranica'], ['CITEREFShaughnessy1997'] = {'Shaughnessy-DH'}, ['CITEREFShaw1978'] = {'Shaw-RailroadAccidents'}, ['CITEREFShayegan2004'] = template_names['Iranica'], ['CITEREFShayesteh2013'] = template_names['Iranica'], ['CITEREFSheikhsofla2018'] = {'Encyclopaedia Islamica'}, ['CITEREFShindo2004'] = {'Kaneto-shindo-shinario-jinsei'}, ['CITEREFShoarian-SattariRezaeeNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFShoshani2005'] = {'MSW3 Shoshani'}, ['CITEREFShtern2001'] = {'Springer', 'SpringerEOM'}, ['CITEREFSiegele1957'] = {'Bach\'s compositions (sources)'}, ['CITEREFSilanos2014'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFSilke2006'] = {'O\'Donnell family tree'}, ['CITEREFSimmons2005'] = {'MSW3 Chiroptera'}, ['CITEREFSimon1966'] = {'Simon-Wines Australia'}, ['CITEREFSimonWarner2011'] = {'Amtrak By the Numbers'}, ['CITEREFSinclair1911'] = {'DCBL'}, ['CITEREFSinger1905'] = {'Jewish Encyclopedia'}, ['CITEREFSix1934'] = {'Cite Six', 'Cite six'}, ['CITEREFSkjærvø2018'] = template_names['ODLA'], ['CITEREFSkoulatos1980'] = {'Les personnages byzantins de l\'Alexiade'}, ['CITEREFSloan1964'] = {'Sloan1964'}, ['CITEREFSmith1854'] = {'Cite DGRG', 'DGRG'}, ['CITEREFSmith1870'] = {'DGRBM', 'Cite DGRBM'}, ['CITEREFSmith1873'] = {'DGRBM', 'Cite DGRBM'}, ['CITEREFSmith1876'] = {'DGRBM', 'Cite DGRBM'}, ['CITEREFSmith1880'] = {'DGRBM', 'Cite DGRBM'}, ['CITEREFSmith2010'] = {'Smith-Cruise Ships-2010'}, ['CITEREFSolomentsev2001'] = {'Springer', 'SpringerEOM'}, ['CITEREFSolomon2000'] = {'Solomon-American Diesel', 'Solomon-UP'}, ['CITEREFSolomon2003'] = {'Solomon-Masterpieces'}, ['CITEREFSolomon2004'] = {'Solomon-Amtrak'}, ['CITEREFSolomon2005'] = {'Solomon-SP-Passenger'}, ['CITEREFSolomon2006'] = {'Solomon-EMD Locomotives'}, ['CITEREFSolomon2011'] = {'Solomon-Modern Diesel'}, ['CITEREFSolomon2014'] = {'Solomon-GE and EMD'}, ['CITEREFSolomonSchafer2007'] = {'Solomon-New York Central'}, ['CITEREFSolopova2009'] = template_names['ME-ref'], ['CITEREFSoucek1982'] = template_names['Iranica'], ['CITEREFSoucek1983'] = template_names['Iranica'], ['CITEREFSoustal1991'] = {'Tabula Imperii Byzantini'}, ['CITEREFSoustalKoder1981'] = {'Tabula Imperii Byzantini'}, ['CITEREFSpielhoff1991'] = {'Spielhoff-EL'}, ['CITEREFSpitta1894'] = {'Bach\'s compositions (sources)'}, ['CITEREFSpitta1899'] = {'Bach\'s compositions (sources)'}, ['CITEREFSpringirth2016'] = {'Springirth-Philadelphia'}, ['CITEREFSpuhler1986'] = template_names['Cam_Hist_Iran'], ['CITEREFSpuler1983'] = template_names['Iranica'], ['CITEREFSpuler1987'] = template_names['Iranica'], ['CITEREFStagner1993'] = {'Stagner-Transition'}, ['CITEREFStansfield1999'] = {'Stansfield-AyrRenfrew'}, ['CITEREFStatistical_Yearbook_of_the_Republic_of_Croatia_2015'] = {'Croatia Yearbook 2015'}, ['CITEREFStaufer1993'] = {'Staufer-Pennsy_III'}, ['CITEREFStauferPennypacker1962'] = {'Staufer-Pennsy'}, ['CITEREFStauferPennypacker1968'] = {'Staufer-Pennsy Power II'}, ['CITEREFStaunton1988'] = {'Australian Dictionary of Biography'}, ['CITEREFSternFishmanTilove2006'] = {'Cite New York 2000', 'Cite NY2000', 'Cite ny2000', 'Cite NY 2000', 'Cite ny 2000'}, ['CITEREFSternGilmartinMassengale1983'] = {'Cite New York 1900', 'Cite NY1900'}, ['CITEREFSternGilmartinMellins1987'] = {'Cite New York 1930', 'Cite NY 1930', 'Cite NY1930', 'Cite ny1930', 'Cite ny 1930'}, ['CITEREFSternMellinsFishman1995'] = {'Cite New York 1960', 'Cite NY1960', 'Cite NY 1960', 'Cite ny1960', 'Cite ny 1960'}, ['CITEREFSternMellinsFishman1999'] = {'Cite New York 1880', 'Cite NY1880', 'Cite NY 1880', 'Cite ny1880', 'Cite ny 1880'}, ['CITEREFStewart1974'] = {'When Steam Was King'}, ['CITEREFStrachey1981'] = template_names['ME-ref'], ['CITEREFStrickland1983'] = {'Strickland Locomotive Directory'}, ['CITEREFStähelin1909'] = {'Schaff-Herzog'}, ['CITEREFSuetin2001'] = {'Springer', 'SpringerEOM'}, ['CITEREFSundermann1988'] = template_names['Iranica'], ['CITEREFSusanne_Schurr1992'] = {'BBKL'}, ['CITEREFSusanne_Siebert1992'] = {'BBKL'}, ['CITEREFSvolopoulos1977'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFSwartz1992'] = {'Swartz An Introduction to Functional Analysis'}, ----------< T >---------- ['CITEREFLondon_Gazette'] = {'London Gazette'}, ['CITEREFTaber1977'] = {'Taber-DLW-19th'}, ['CITEREFTaberTaber1980'] = {'Taber-DLW-20th-1'}, ['CITEREFTaberTaber1981'] = {'Taber-DLW-20th-2'}, ['CITEREFTafazzoli1999'] = template_names['Iranica'], ['CITEREFTafazzoli1999'] = {'Encyclopaedia Islamica'}, ['CITEREFTafazzoli2000'] = template_names['Iranica'], ['CITEREFTalbot1991'] = template_names['ODB'], ['CITEREFTalbotKazhdan1991'] = template_names['ODB'], ['CITEREFTanındı2008'] = template_names['Iranica'], ['CITEREFTao2009'] = {'Cite Cambridge History of China'}, ['CITEREFTer-Ghewondyan1976'] = {'The Arab Emirates in Bagratid Armenia'}, ['CITEREFThe_London_Gazette1950'] = {'London Gazette'}, ['CITEREFThe_London_Gazette_26_September_1919'] = {'London Gazette'}, ['CITEREFThielemann2012'] = {'Bach\'s compositions (sources)'}, ['CITEREFThomas1970'] = {'HistoryofParliament'}, ['CITEREFThomas1971'] = {'Thomas-History-VI'}, ['CITEREFThrush2010'] = {'HistoryofParliament'}, ['CITEREFTikhomirov2001'] = {'Springer'}, ['CITEREFTittel1966'] = {'Bach\'s compositions (sources)'}, ['CITEREFTodt1996'] = {'BBKL'}, ['CITEREFTodtVest2014'] = {'Tabula Imperii Byzantini'}, ['CITEREFTolkien1937'] = template_names['ME-ref'], ['CITEREFTolkien1954'] = template_names['ME-ref'], ['CITEREFTolkien1955'] = template_names['ME-ref'], ['CITEREFTolkien1964'] = template_names['ME-ref'], ['CITEREFTolkien1966'] = template_names['ME-ref'], ['CITEREFTolkien1977'] = template_names['ME-ref'], ['CITEREFTolkien1980'] = template_names['ME-ref'], ['CITEREFTolkien1982'] = template_names['ME-ref'], ['CITEREFTolkien1983'] = template_names['ME-ref'], ['CITEREFTolkien1984'] = template_names['ME-ref'], ['CITEREFTolkien1985'] = template_names['ME-ref'], ['CITEREFTolkien1986'] = template_names['ME-ref'], ['CITEREFTolkien1987'] = template_names['ME-ref'], ['CITEREFTolkien1988'] = template_names['ME-ref'], ['CITEREFTolkien1989'] = template_names['ME-ref'], ['CITEREFTolkien1990'] = template_names['ME-ref'], ['CITEREFTolkien1992'] = template_names['ME-ref'], ['CITEREFTolkien1993'] = template_names['ME-ref'], ['CITEREFTolkien1994'] = template_names['ME-ref'], ['CITEREFTolkien1996'] = template_names['ME-ref'], ['CITEREFTolkien1998'] = template_names['ME-ref'], ['CITEREFTolkien1999'] = template_names['ME-ref'], ['CITEREFTolkien2007'] = template_names['ME-ref'], ['CITEREFTolkienSwann1978'] = template_names['ME-ref'], ['CITEREFTolkienTolkien1992'] = template_names['ME-ref'], ['CITEREFTonks1988'] = {'Tonks ironstone'}, ['CITEREFTonks1989'] = {'Tonks ironstone'}, ['CITEREFTonks1992'] = {'Tonks ironstone'}, ['CITEREFTorri2013'] = {'Bach\'s compositions (sources)'}, ['CITEREFTougher2018'] = template_names['ODLA'], ['CITEREFToumanoff1986'] = template_names['Iranica'], ['CITEREFToumanoff2010'] = template_names['Iranica'], ['CITEREFToumanoffChaumont1987'] = template_names['Iranica'], ['CITEREFTourret1995'] = {'Tourret-Allied Military Locomotives'}, ['CITEREFTrapp1991'] = template_names['ODB'], ['CITEREFTrappBeyerSturm-Schnabl1983'] = {'Prosopographisches Lexikon der Palaiologenzeit'}, ['CITEREFTrappWaltherBeyer1976'] = {'Prosopographisches Lexikon der Palaiologenzeit'}, ['CITEREFTrappWaltherBeyerSturm-Schnabl1978'] = {'Prosopographisches Lexikon der Palaiologenzeit'}, ['CITEREFTreadgold1988'] = {'The Byzantine Revival, 780–842'}, ['CITEREFTreadgold1997'] = {'A History of the Byzantine State and Society'}, ['CITEREFTrèves2006'] = {'Trèves François Topological vector spaces, distributions and kernels'}, ['CITEREFTucker2009'] = {'Encyclopaedia Islamica'}, ['CITEREFTurim1998'] = {'Turim-oshima'}, ['CITEREFTuring1950'] = {'Turing 1950'}, ----------< U >---------- ['CITEREFUS-NHub_Music_Deposit_31_(Klavierbüchlein_für_W._F._Bach)_at_Bach_Digital'] = {'Bach\'s compositions (sources)'}, ['CITEREFUtas2002'] = template_names['Iranica'], ['CITEREFUwe_Eckardt2001'] = {'BBKL'}, ['CITEREFunknown_author1881'] = {'Cite ADB'}, ['CITEREFunknown_author1882'] = {'Cite ADB'}, ----------< V >---------- ['CITEREFVakalopoulos1975'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFVan_Cleve1969'] = {'Setton-A History of the Crusades'}, ['CITEREFVan_Hoorickx1971'] = {'Schubert\'s compositions (references)'}, ['CITEREFVan_Hoorickx_1974–1976'] = {'Schubert\'s compositions (references)'}, ['CITEREFVan_Lint2018'] = template_names['ODLA'], ['CITEREFVan_Riemsdijk,_Compound_Locomotives'] = {'Book-Van Riemsdijk-Compound Locomotives'}, ['CITEREFVan_Tricht2011'] = {'The Latin Renovatio of Byzantium'}, ['CITEREFVandenberghen1989'] = {'Vandenberghen-SNCB12.2'}, ['CITEREFVarzos1984'] = {'Η Γενεαλογία των Κομνηνών', 'Varzos-Genealogy of the Komnenoi'}, ['CITEREFVasiliev1935'] = {'Byzance et les Arabes'}, ['CITEREFVasiliev1968'] = {'Byzance et les Arabes'}, ['CITEREFVendler1997'] = {'Shakespeare sonnets bibliography'}, ['CITEREFVenetis2012'] = template_names['Iranica'], ['CITEREFVenn1954'] = {'VennAC'}, ['CITEREFVesel1999'] = template_names['Iranica'], ['CITEREFVetter1713'] = {'Bach\'s compositions (sources)'}, ['CITEREFVevainaCanepa2018'] = template_names['ODLA'], ['CITEREFVeysey1958'] = {'Veysey-PE-1958'}, ['CITEREFVischer1912'] = {'Schaff-Herzog'}, ['CITEREFVogelsang2003'] = template_names['Iranica'], ['CITEREFVolkmer1991'] = {'Volkmer-Pennsy-Electric'}, ['CITEREFvan_Leyden1956'] = {'Bach\'s compositions (sources)'}, ['CITEREFvan_Lint2018'] = template_names['ODLA'], ['CITEREFvon_Prantl1879'] = {'Cite ADB'}, ----------< W >---------- ['CITEREFWagnerBäzoldZschechLüderitz1990'] = {'Wagner-EFA2.3.2'}, ['CITEREFWalter_Asmus1966'] = template_names['NDB'], ['CITEREFWayner1972'] = {'Wayner - Car names, numbers, consists'}, ['CITEREFWayner1973'] = {'Wayner-Spotter-2nd'}, ['CITEREFWebb2018'] = template_names['ODLA'], ['CITEREFWeber2016'] = template_names['Iranica'], ['CITEREFWechsler1979'] = {'Cite Cambridge History of China'}, ['CITEREFWegman2008'] = {'Wegman-Illustrated'}, ['CITEREFWeibel1994'] = {'Weibel IHA'}, ['CITEREFWeinrebHibbertKeayKeay2008'] = {'London encyclopedia'}, ['CITEREFWeisbrod1991'] = {'Weisbrod-EFA1.5'}, ['CITEREFWeisbrodMüllerPetznik1978'] = {'Weisbrod-EFA1.2'}, ['CITEREFWeiskopf1987'] = template_names['Iranica'], ['CITEREFWeiskopf1989'] = template_names['Iranica'], ['CITEREFWeiskopf1990'] = template_names['Iranica'], ['CITEREFWeiskopf1993'] = template_names['Iranica'], ['CITEREFWellhausen1927'] = {'The Arab Kingdom and its Fall'}, ['CITEREFWells1982'] = {'Accents of English'}, ['CITEREFWells2008'] = {'Cite LPD'}, ['CITEREFWelsh2006'] = {'Welsh-Broadway'}, ['CITEREFWelsh2008'] = {'Welsh-UP'}, ['CITEREFWerner_Raupp2001'] = {'BBKL'}, ['CITEREFWestcott1911'] = {'DCBL'}, ['CITEREFWestermayer,_Georg1882'] = {'Cite ADB'}, ['CITEREFWham1997'] = {'Wham-Ayrshire'}, ['CITEREFWharton1991'] = template_names['ODB'], ['CITEREFWhishaw1842'] = {'Whishaw-RailofGB-2ndEd'}, ['CITEREFWhishaw1969'] = {'Whishaw-RailofGB'}, ['CITEREFWhite1985'] = {'White-Passenger-1985'}, ['CITEREFWhite1993'] = {'White - American railroad freight car'}, ['CITEREFWhiteWillenskyLeadon2010'] = {'Cite aia5'}, ['CITEREFWhitehurst1973'] = {'Whitehurst GW Engines from 1940'}, ['CITEREFWhittow1996'] = {'The Making of Byzantium, 600–1025'}, ['CITEREFWickman1982'] = {'Country study'}, ['CITEREFWiesehöfer1986'] = template_names['Iranica'], ['CITEREFWiesehöfer2018'] = template_names['ODLA'], ['CITEREFWilansky2013'] = {'Wilansky Modern Methods in Topological Vector Spaces'}, ['CITEREFWillard2004'] = {'Willard General Topology'}, ['CITEREFWilliams1998'] = {'Williams-Philadelphia'}, ['CITEREFWilliams2003'] = {'Bach\'s compositions (sources)'}, ['CITEREFWilliams2014'] = template_names['Iranica'], ['CITEREFWillis1750'] = {'Cite Notitia Parliamentaria'}, ['CITEREFWilson2017'] = {'Wilson-Guide'}, ['CITEREFWilsonFiske1891'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'}, ['CITEREFWilsonFiske1892'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'}, ['CITEREFWilsonFiske1900'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'}, ['CITEREFWiltshire2000'] = {'Lloyd-Margaret River'}, ['CITEREFWinfieldLyon2004'] = {'Winfield'}, ['CITEREFWinkler1883'] = template_names['ADB'], ['CITEREFWitakowski2018'] = template_names['ODLA'], ['CITEREFWolff1969'] = {'Setton-A History of the Crusades'}, ['CITEREFWollny2015'] = {'Bach\'s compositions (sources)'}, ['CITEREFWood1907'] = {'Cite Nuttall', 'Nuttall'}, ['CITEREFWoodsKilpatrick2005'] = {'MSW3 Hystricognathi'}, ['CITEREFWorden2008'] = {'Country study'}, ['CITEREFWortley2010'] = {'John Skylitzes: A Synopsis of Byzantine History, 811–1057'}, ['CITEREFWozencraft2005'] = {'MSW3 Carnivora'}, ['CITEREFWright1979'] = {'Cite Cambridge History of China'}, ['CITEREFWright2000'] = {'Bach\'s compositions (sources)'}, ['CITEREFWägliJacobi2010'] = {'Schienennetz Schweiz'}, ['CITEREFWürsch2013'] = template_names['Iranica'], ----------< X >---------- ----------< Y >---------- ['CITEREFYakubova2016'] = template_names['Iranica'], ['CITEREFYarshater1983'] = template_names['Iranica'], ['CITEREFYarshater1986'] = template_names['Cam_Hist_Iran'], ['CITEREFYarshater1988'] = template_names['Iranica'], ['CITEREFYarshater2018'] = template_names['Iranica'], ['CITEREFYarshater2021'] = template_names['Iranica'], ['CITEREFYazici2002'] = template_names['Iranica'], ['CITEREFYenne2005'] = {'Yenne-Chiefs'}, ['CITEREFYildiz2004'] = template_names['Iranica'], ['CITEREFYonge1990'] = {'Quail-4'}, ['CITEREFYonge1994'] = {'Quail-5'}, ['CITEREFYonge2002'] = {'Quail-5'}, ['CITEREFYonge2008'] = {'Quail-5'}, ['CITEREFYonge2016'] = {'Quail-2-2016'}, ['CITEREFYongePadgettSzwenk2013'] = {'Quail-4-Paper-3rdEd'}, ['CITEREFYu1986'] = {'Cite Cambridge History of China'}, ['CITEREFYusofi1990'] = template_names['Iranica'], ----------< Z >---------- ['CITEREFZahn1889–1893'] = {'Bach\'s compositions (sources)'}, ['CITEREFZakeri2021'] = template_names['Iranica'], ['CITEREFZarrinkoubNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFZarrinkub1975'] = template_names['Cam_Hist_Iran'], ['CITEREFZeiniWiesehöfer2018'] = template_names['ODLA'], ['CITEREFZekulich2000'] = {'Zekulich-WineWA'}, ['CITEREFZimmermann2004'] = {'Zimmermann-Burlington'}, ['CITEREFZimmermann2007'] = {'Zimmermann-GrandLuxe'}, ['CITEREFZuccaric._1747'] = {'Bach\'s compositions (sources)'}, ----------< UNSORTED >---------- ['CITEREFGazette27462'] = {'London Gazette'}, ['CITEREFCawley2012'] = {'Medieval Lands by Charles Cawley'}, ['CITEREFCrone2003'] = {'Slaves on Horses'}, ['CITEREFΙστορία_του_Ελληνικού_Έθνους'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFSpyropoulos1928'] = {'Great Military and Naval Encyclopaedia'}, ['CITEREFPikros1977'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFÖz1993'] = {'TDV Encyclopedia of Islam'}, ['CITEREFÖzgüdenli2008'] = template_names['Iranica'], ['CITEREFÖzaydın2002'] = {'TDV Encyclopedia of Islam'}, ['CITEREFÖzaydın2006'] = {'TDV Encyclopedia of Islam'}, ['CITEREFÖzkuyumcu2006'] = {'TDV Encyclopedia of Islam'}, ['CITEREFÖztürk2013'] = {'TDV Encyclopedia of Islam'}, ['CITEREFΜεγάλη_Στρατιωτικὴ_καὶ_Ναυτικὴ_Ἐγκυκλοπαιδεία'] = {'Great Military and Naval Encyclopaedia'}, ['CITEREFŞeşen1988'] = {'TDV Encyclopedia of Islam'}, ['CITEREFFranke1994'] = {'Cite Cambridge History of China', 'The Cambridge History of China'}, ['CITEREFTao2009'] = {'Cite Cambridge History of China', 'The Cambridge History of China'}, ['CITEREFWechsler1979'] = {'Cite Cambridge History of China', 'The Cambridge History of China'}, ['CITEREFWright1979'] = {'Cite Cambridge History of China', 'The Cambridge History of China'}, ['CITEREFHistoric_England_Benty_Grange'] = {'NHLE'}, ['CITEREFWalter1967'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFAliprantisBorder2006'] = {'Aliprantis Border Infinite Dimensional Analysis A Hitchhiker\'s Guide Third Edition'}, ['CITEREFAmanat1985'] = template_names['Iranica'], ['CITEREFBaldwin1991'] = template_names['ODB'], ['CITEREFCallwell1999'] = {'Muni Chronology'}, ['CITEREFHalmos1982'] = {'Halmos A Hilbert Space Problem Book 1982'}, ['CITEREFHistoric_England'] = {'NHLE', 'National Heritage List for England'}, ['CITEREFHitchins2001'] = template_names['Iranica'], ['CITEREFJohnson1906'] = {'BDA1906', 'Cite BDA1906'}, ['CITEREFMachinery&#039;s_Handbook1996'] = {'MachinerysHandbook25e'}, ['CITEREFMatthee2012'] = template_names['Iranica'], ['CITEREFNicholson2018'] = template_names['ODLA'], ['CITEREFNicol1968'] = {'The Byzantine Family of Kantakouzenos'}, ['CITEREFWilsonFiske1889'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'}, ['CITEREFShippey2005'] = template_names['ME-ref'], ['CITEREFColvin1947'] = {'Colvin1947'}, ['CITEREFSorensen1956'] = {'Sorensen1956'}, ['CITEREFBosworth1999'] = template_names['Iranica'], ['CITEREFGregoryKazhdan1991'] = template_names['ODB'], ['CITEREFKelley1975'] = {'Kelley General Topology'}, ['CITEREFIacocca1984'] = {'Iacocca1984'}, ['CITEREFNestruev2020'] = {'Nestruev Smooth Manifolds and Observables 2020'}, ['CITEREFOrmsby1982'] = {'Cite DCB'}, ['CITEREFVentura1963'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFZălinescu2002'] = {'Zălinescu Convex Analysis in General Vector Spaces 2002'}, ['CITEREFGreenwoodEarnshaw1997'] = {'Greenwood&Earnshaw2nd'}, ['CITEREFMullié1852'] = {'Cite Mullié', 'Mullié'}, ['CITEREFEl-Hibri2021'] = {'The Abbasid Caliphate: A History'}, ['CITEREFHolland1989'] = {'Holland1989'}, ['CITEREFHowes1995'] = {'Howes Modern Analysis and Topology 1995'}, ['CITEREFRockafellarWets2009'] = {'Rockafellar Wets Variational Analysis 2009 Springer'}, ['CITEREFSearle1980'] = {'Searle 1980'}, ['CITEREFVan_Riemsdijk1994'] = {'Book-Van Riemsdijk-Compound Locomotives'}, ['CITEREFGaines2008'] = {'Cite Gaines 2008'}, ['CITEREFSmid2008'] = {'Smid2008'}, ['CITEREFSmid2010'] = {'Smid2010'}, ['CITEREFNesbittOikonomides1991'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFNesbittOikonomides1994'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFNesbittOikonomides1996'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFMcGeerNesbittOikonomides2001'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFMcGeerNesbittOikonomides2005'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFNesbittMorrisson2009'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITETEFCotsonis2020'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFTolkienSwann2002'] = {'ME-ref'}, ['CITEREFApostol1976'] = {'Apostol IANT'}, ['CITEREFBournoutian2018'] = {'Cite Armenia and Imperial Decline'}, ['CITEREFCsászár1978'] = {'Császár General Topology'}, ['CITEREFHovannisian1971'] = {'Cite The Republic of Armenia Volume 1'}, ['CITEREFКавказский_календарь_на_1913_год'] = {'Cite Kavkazskiy Kalendar 1913'}, ['CITEREFКавказский_календарь_на_1917_год'] = {'Cite Kavkazskiy Kalendar 1917'}, ['CITEREFLang2002'] = {'Lang Algebra'}, ['CITEREFLurie'] = {'Lurie-HA'}, ['CITEREFTsutsiev2014'] = {'Cite Atlas of the Ethno-Political History of the Caucasus'}, ['CITEREFVenables1911'] = {'DCBL'}, ['CITEREFWilansky2008'] = {'Wilansky Topology for Analysis 2008'}, ['CITEREFKazemzadeh1951'] = {'The Struggle for Transcaucasia'}, ['CITEREFNicol1984'] = {'The Despotate of Epiros, 1267–1479'}, ['CITEREFKorkotyan1932'] = {'Cite The Population of Soviet Armenia'}, ['CITEREFHalm1991'] = {'Das Reich des Mahdi'}, ['CITEREFHalm2014'] = {'Kalifen und Assassinen'}, ['CITEREFHovannisian1982'] = {'Cite The Republic of Armenia Volume 2'}, ['CITEREFHovannisian1996'] = {'Cite The Republic of Armenia Volume 3', 'Cite The Republic of Armenia Volume 4'}, ['CITEREFHovannisian1967'] = {'Cite Armenia on the Road to Independence'}, ['CITEREFKazemzadeh1951'] = {'Cite The Struggle for Transcaucasia'}, ['CITEREFКавказский_календарь_на_1910_год'] = {'Cite Kavkazskiy Kalendar 1910'}, ['CITEREFКавказский_календарь_на_1915_год'] = {'Cite Kavkazskiy Kalendar 1915'}, ['CITEREFNicol1994'] = {'The Byzantine Lady: Ten Portraits, 1250–1500'}, ['CITEREFTolkien1979'] = {'ME-ref'}, ['CITEREFTopping1975'] = {'Setton-A History of the Crusades', 'Wisconsin History of the Crusades'}, ['CITEREFHalm2003'] = {'Die Kalifen von Kairo'}, ['CITEREFLilieLudwigPratschZielke1999'] = {'Prosopographie der mittelbyzantinischen Zeit', 'PMBZ'}, ['CITEREFDer_Matossian2020'] = {'Cite The First Republic of Armenia'}, ['CITEREFEaston1897'] = {'Eastons', 'EBD'}, ['CITEREFLilieLudwigPratschZielke2000'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFLilieLudwigPratschZielke2001'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFLilieLudwigPratschZielke2002'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFLilieLudwigPratschZielke2009'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFLilieLudwigPratschZielke2013'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFLilieLudwigPratschZielke1998–2013'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFWells2000'] = {'Cite LPD'}, ['CITEREFWells1990'] = {'Cite LPD'}, ['CITEREFHunter2012'] = {'Cite HGOC', 'Cite Hunter'}, ['CITEREFFordCrowther1922'] = {'Ford1922'}, ['CITEREFLegifrance'] = {'Cite Legifrance'}, ['CITEREFCoverdale_&_Colpitts1946'] = {'Coverdale & Colpitts 1', 'Coverdale & Colpitts 2', 'Coverdale & Colpitts 3'}, ['CITEREFDonaghy1972'] = {'Donaghy-LMR'}, ['CITEREFKubrusly2011'] = {'Kubrusly The Elements of Operator Theory 2nd Edition 2011'}, ['CITEREFNemiroffBonnell1998'] = {'Cite APOD'}, ['CITEREFNemiroffBonnell2004'] = {'Cite APOD'}, ['CITEREFNemiroffBonnell2005'] = {'Cite APOD'}, ['CITEREFNemiroffBonnell2006'] = {'Cite APOD'}, ['CITEREFNemiroffBonnell2007'] = {'Cite APOD'}, } --[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------ ]] return { DNB_special_patterns = DNB_special_patterns, DNB_template_names = template_names['DNB'], special_patterns = special_patterns, whitelist = whitelist, wrapper_templates = wrapper_templates, } 23630084de31b60e3f29b5c4182432ec14252600 Module:Math/doc 828 1662 3065 2023-08-27T20:07:46Z wikipedia>MarMi wiki 0 clarify wikitext text/x-wiki {{for|''formatting'' mathematical expressions, LATEX-style|Template:Math}} {{High-risk|1,607,000+}} {{module rating|protected}} This module provides a number of mathematical functions. These functions can be used from #invoke or from other Lua modules. == Use from other Lua modules == To use the module from normal wiki pages, no special preparation is needed. If you are using the module from another Lua module, first you need to load it, like this: <syntaxhighlight lang="lua"> local mm = require('Module:Math') </syntaxhighlight> (The <code>mm</code> variable stands for '''M'''odule '''M'''ath; you can choose something more descriptive if you prefer.) Most functions in the module have a version for Lua and a version for #invoke. It is possible to use the #invoke functions from other Lua modules, but using the Lua functions has the advantage that you do not need to access a Lua [[mw:Extension:Scribunto/Lua reference manual#Frame object|frame object]]. Lua functions are preceded by <code>_</code>, whereas #invoke functions are not. == random == {{see also|Module:Random}} &#123;{#invoke:math|random}} &#123;{#invoke:math|random|''max_value''}} &#123;{#invoke:math|random|''min_value''|''max_value''}} <syntaxhighlight lang="lua"> mm._random() mm._random(max_value) mm._random(min_value, max_value) </syntaxhighlight> Generates a random number. * If no arguments are specified, the number produced is greater than or equal to 0 and less than 1. * If one argument is provided, the number produced is an integer between 1 and that argument. The argument must be a positive integer. * If two arguments are provided, the number produced is an integer between the first and second arguments. Both arguments must be integers, but can be negative. This function will not work properly for numbers less than &minus;2<sup>32</sup> and greater than 2<sup>32</sup> &minus; 1. If you need to use numbers outside of this range, it is recommended that you use [[Module:Random]]. == order == &#123;{#invoke:math|order|''n''}} <syntaxhighlight lang="lua"> mm._order(n) </syntaxhighlight> Determines the [[order of magnitude]] of a number. == precision == &#123;{#invoke:math|precision|''n''}} &#123;{#invoke:math|precision|x=''n''}} <syntaxhighlight lang="lua"> mm._precision(number_string) </syntaxhighlight> Detemines the precision of a number. For example, for "4" it will return "0", for "4.567" it will return "3", and for "100" it will return "-2". The function attempts to parse the string representation of the number, and detects whether the number uses [[Scientific notation#E notation|E notation]]. For this reason, when called from Lua, very large numbers or very precise numbers should be directly input as strings to get accurate results. If they are input as numbers, the Lua interpreter will change them to E notation and this function will return the precision of the E notation rather than that of the original number. This is not a problem when the number is called from #invoke, as all input from #invoke is in string format. == max == &#123;{#invoke:math|max|''v1''|''v2''|''v3''|...}} <syntaxhighlight lang="lua"> mm._max(v1, v2, v3, ...) </syntaxhighlight> Returns the maximum value from the values specified. Values that cannot be converted to numbers are ignored. == median == &#123;{#invoke:math|median|''v1''|''v2''|''v3''|...}} <syntaxhighlight lang="lua"> mm._median(v1, v2, v3, ...) </syntaxhighlight> Returns the [[median]] value from the values specified. Values that cannot be converted to numbers are ignored. == min == &#123;{#invoke:math|min|''v1''|''v2''|''v3''|...}} <syntaxhighlight lang="lua"> mm._min(v1, v2, v3, ...) </syntaxhighlight> Returns the minimum value from the values specified. Values that cannot be converted to numbers are ignored. == sum == &#123;{#invoke:math|sum|''v1''|''v2''|''v3''|...}} <syntaxhighlight lang="lua"> mm._sum(v1, v2, v3, ...) </syntaxhighlight> Returns the sum of the values specified. Values that cannot be converted to numbers are ignored. == average == &#123;{#invoke:math|average|''v1''|''v2''|''v3''|...}} <syntaxhighlight lang="lua"> mm._average(v1, v2, v3, ...) </syntaxhighlight> Returns the average of the values specified. (More precisely, the value returned is the [[Mean#Arithmetic mean (AM)|arithmetic mean]].) Values that cannot be converted to numbers are ignored. == round == &#123;{#invoke:math|round|''value''|''precision''}} &#123;{#invoke:math|round|value=''value''|precision=''precision''}} <syntaxhighlight lang="lua"> mm._round(value, precision) </syntaxhighlight> [[Rounding|Rounds]] a number to the specified precision{{clarify|reason=What method exactly is used?}}. Note: As of October 2019, there is a bug in the display of some rounded numbers. When trying to round a number that rounds to "n.0", like "1.02", to the nearest tenth of a digit (i.e. {{para|r|1}}), this function should display "1.0", but it unexpectedly displays "1". Use the {{para|precision_format}} parameter instead. == log10 == &#123;{#invoke:math | log10 | ''x''}} <syntaxhighlight lang="lua"> mm._log10(x) </syntaxhighlight> Returns <code>log<sub>10</sub>(''x'')</code>, the [[logarithm]] of ''x'' using base 10. == mod == &#123;{#invoke:math|mod|''x''|''y''}} <syntaxhighlight lang="lua"> mm._mod(x, y) </syntaxhighlight> Gets <code>''x''</code> [[Modulo operation|modulo]] <code>''y''</code>, or the remainder after <code>''x''</code> has been divided by <code>''y''</code>. This is accurate for integers up to 2<sup>53</sup>; for larger integers Lua's modulo operator may return an erroneous value. This function deals with this problem by returning <code>0</code> if the modulo given by Lua's modulo operator is less than 0 or greater than <code>''y''</code>. == gcd == &#123;{#invoke:math|gcd|''v1''|''v2''|...}} <syntaxhighlight lang="lua"> mm._gcd(v1, v2, ...) </syntaxhighlight> Finds the [[greatest common divisor]] of the values specified. Values that cannot be converted to numbers are ignored. == precision_format == &#123;{#invoke:math|precision_format|''value_string''|''precision''}} <syntaxhighlight lang="lua"> mm._precision_format(value_string, precision) </syntaxhighlight> Rounds a number to the specified precision and formats according to rules originally used for {{tl|Rnd}}. Output is a string. Parameter <var>precision</var> should be an integer number of digits after the decimal point. Negative values are permitted. Non-integers give unexpected results. Positive values greater than the input precision add zero-padding, negative values greater than the input order can consume all digits. Formatting 8,765.567 with {{tlc|#invoke:Math|precision_format|8765.567|<var>precision</var>}} gives: {|class="wikitable" |+ !<code><var>precision</var></code>!!Result |- |style="text-align:right"|2||{{#invoke:Math|precision_format|8765.567|2}} |- |style="text-align:right"| -2||{{#invoke:Math|precision_format|8765.567|-2}} |- |style="text-align:right"|6||{{#invoke:Math|precision_format|8765.567|6}} |- |style="text-align:right"| -6||{{#invoke:Math|precision_format|8765.567|-6}} |- |style="text-align:right"|2.5||{{#invoke:Math|precision_format|8765.567|2.5}} |- |style="text-align:right"| -2.5||{{#invoke:Math|precision_format|8765.567|-2.5}} |} == divide == &#123;{#invoke:Math|divide|''x''|''y''|''round=''|''precision=''}} <syntaxhighlight lang="lua"> mm._divide(x, y, round, precision) </syntaxhighlight> Divide x by y. * If y if not a number, it is returned. * Otherwise, if x is not a number, it is returned. * If round is true ("yes" for #invoke), the result has no decimals * Precision indicates how many digits of precision the result should have If any of the arguments contain HTML tags, they are returned unchanged, allowing any errors in calculating the arguments to the division function to be propagated to the calling template. == cleanNumber == <syntaxhighlight lang="lua"> local number, number_string = mm._cleanNumber(number_string) </syntaxhighlight> A helper function that can be called from other Lua modules, but not from #invoke. This takes a string or a number value as input, and if the value can be converted to a number, cleanNumber returns the number and the number string. If the value cannot be converted to a number, cleanNumber returns <code>nil, nil</code>. ==See also== {{Math templates}} 58f1eada1ab7de23905e945547ffa5f823a88b94 Template:Infobox 10 86 215 2023-08-28T04:05:10Z Tali64³ 14 Undid revision 343934 by [[Special:Contributions/Corkscrew012|Corkscrew012]] ([[User talk:Corkscrew012|talk]]) Unconstructive editing; perhaps you posted your edit to the wrong wiki? wikitext text/x-wiki {{#invoke:Infobox|infobox}}<noinclude> {{documentation}} <!-- Categories go in the /doc subpage, and interwikis go in Wikidata. --> </noinclude> adcda4ac544f8af340cf47833dc2960631593988 Module:Pagetype/config 828 94 235 2023-08-28T13:36:34Z wikipedia>Mr. Stradivarius 0 update from [[Module:Pagetype/config/sandbox]] Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Pagetype configuration data -- -- This page holds localisation and configuration data for Module:Pagetype. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Start configuration data -- -------------------------------------------------------------------------------- -- This table holds the default page types for each namespace. Keys to this -- table should be integers that can be used as keys to mw.site.namespaces. cfg.pagetypes = { [0] = 'article', -- Main namespace [2] = 'user page', [4] = 'project page', [6] = 'file', [8] = 'interface page', -- MediaWiki namespace [10] = 'template', [12] = 'help page', [14] = 'category', [100] = 'portal', [118] = 'draft', [710] = 'Timed Text page', [828] = 'module', [2300] = 'gadget', [2302] = 'gadget definition', [-1] = 'special page', [-2] = 'file', -- Media namespace } -- This table holds the namespaces to be looked up from cfg.pagetypes by -- default. cfg.defaultNamespaces = { [0] = true, -- main [6] = true, -- file [10] = true, -- template [14] = true, -- category [828] = true, -- module } -- This table holds the namespaces to be looked up from cfg.pagetypes if -- cfg.defaultnsExtended is set. cfg.extendedNamespaces = { [0] = true, -- main [2] = true, -- user [4] = true, -- project [6] = true, -- file [8] = true, -- mediawiki [10] = true, -- template [12] = true, -- help [14] = true, -- category [100] = true, -- portal [118] = true, -- draft [828] = true, -- module } -- This table holds custom aliases for each namespace. cfg.customNamespaceAliases = { [0] = {'main'}, } -- The parameter name to set which default namespace values to be looked up from -- cfg.pagetypes. cfg.defaultns = 'defaultns' -- The value of cfg.defaultns to set all namespaces, including talk. cfg.defaultnsAll = 'all' -- The value of cfg.defaultns to set the namespaces listed in -- cfg.extendedNamespaces cfg.defaultnsExtended = 'extended' -- The value of cfg.defaultns to set no default namespaces. cfg.defaultnsNone = 'none' -- The parameter name to use for talk pages. cfg.talk = 'talk' -- The default value for talk pages. cfg.talkDefault = 'talk page' -- The parameter name to use for disambiguation pages page. cfg.dab = 'dab' -- This table holds the different possible aliases for disambiguation-class -- pages. These should be lower-case. cfg.dabAliases = { ['disambiguation'] = true, ['disambig'] = true, ['disamb'] = true, ['dab'] = true, } -- The default value for disambiguation pages. cfg.dabDefault = 'page' -- The parameter name to use for N/A-class page. cfg.na = 'na' -- This table holds the different possible aliases for N/A-class pages. These -- should be lower-case. cfg.naAliases = { ['na'] = true, ['n/a'] = true, } -- The default value for N/A-class pages. cfg.naDefault = 'page' -- The parameter name to use for redirects. cfg.redirect = 'redirect' -- The default value to use for redirects. cfg.redirectDefault = 'redirect' -- The parameter name for undefined namespaces. cfg.other = 'other' -- The value used if the module detects an undefined namespace. cfg.otherDefault = 'page' -- The usual suffix denoting a plural. cfg.plural = 's' -- This table holds plurals not formed by a simple suffix. cfg.irregularPlurals = { ["category"] = "categories" } -------------------------------------------------------------------------------- -- End configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line 5360b93ef5fd7551e38026f1b8df00bed8b34b2d Module:Pagetype 828 93 233 2023-08-28T13:37:34Z wikipedia>Mr. Stradivarius 0 switch back to using [[Module:Pagetype/config]], as it has now been updated Scribunto text/plain -------------------------------------------------------------------------------- -- -- -- PAGETYPE -- -- -- -- This is a meta-module intended to replace {{pagetype}} and similar -- -- templates. It automatically detects namespaces, and allows for a -- -- great deal of customisation. It can easily be ported to other -- -- wikis by changing the values in the [[Module:Pagetype/config]]. -- -- -- -------------------------------------------------------------------------------- -- Load config. local cfg = mw.loadData('Module:Pagetype/config') -- Load required modules. local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local mDisambiguation = require('Module:Disambiguation') local p = {} -- Look up a namespace argument in the args table. local function lookUpNamespaceArg(args, key) local arg = args[key] -- Convert "yes", "1" etc. to true, "no", "0" etc. to false, and leave -- other values the same. return yesno(arg, arg) end -- Append multiple values to an array local function appendMultiple(target, source) for _, value in ipairs(source) do table.insert(target, value) end end -- Get argument keys for a title's namespace local function getNamespaceArgKeys(title, cfg) local nsInfo = mw.site.namespaces[title.namespace] local customAliases = cfg.customNamespaceAliases[title.namespace] or {} local keys = {} if nsInfo.name ~= '' then table.insert(keys, nsInfo.name) end if nsInfo.canonicalName ~= nsInfo.name and nsInfo.canonicalName ~= '' then table.insert(keys, nsInfo.canonicalName) end appendMultiple(keys, nsInfo.aliases) appendMultiple(keys, customAliases) return keys end -- Get the argument for a title's namespace, if it was specified in the args -- table. local function getNamespaceArg(title, args, cfg) if title.isTalkPage then return lookUpNamespaceArg(args, cfg.talk) end for _, key in ipairs(getNamespaceArgKeys(title, cfg)) do local arg = lookUpNamespaceArg(args, mw.ustring.lower(key)) if arg ~= nil then return arg end end return nil end -- Look up a page type specific to the title's namespace local function getExplicitPageType(title, cfg) if title.isTalkPage then return cfg.talkDefault else return cfg.pagetypes[title.namespace] end end -- Get a default page type that is not specific to the title's namespace local function getDefaultPageType(args, cfg) local other = lookUpNamespaceArg(args, cfg.other) if type(other) == 'string' then return other else return cfg.otherDefault end end local function detectRedirects(title, args) local redirect = lookUpNamespaceArg(args, cfg.redirect) if redirect == false then -- Don't detect redirects if they have been specifically disallowed. return nil end -- Allow custom values for redirects. if not title.isRedirect then return nil elseif type(redirect) == 'string' then return redirect else return cfg.redirectDefault end end local function detectDisambiguationPages(title, args, cfg) if title.namespace ~= 0 then -- Only detect disambiguation pages in mainspace return nil end local dab = lookUpNamespaceArg(args, cfg.dab) if dab == false then -- Don't detect disambiguation pages if explicitly disallowed return nil end if not mDisambiguation.isDisambiguation(title:getContent()) then return nil elseif type(dab) == 'string' then return dab else return cfg.dabDefault end end -- Gets the pagetype from a class specified from the first positional -- parameter. local function getPageTypeFromClass(args, class, key, aliasTable, default) local arg = lookUpNamespaceArg(args, key) if arg == false then -- Don't check for this class if it is specifically disallowed. return nil end if aliasTable[class] then if type(arg) == 'string' then return arg else return default end end return nil end -- Get page types for mainspaces pages with an explicit class specified local function getMainNamespaceClassPageType(title, args, cfg) if title.namespace ~= 0 then return nil end local class = args[1] if type(class) == 'string' then -- Put in lower case so e.g. "na" and "NA" will both match. class = mw.ustring.lower(class) end return getPageTypeFromClass( args, class, cfg.na, cfg.naAliases, cfg.naDefault ) end -- Get page type specified by an explicit namespace argument. local function getNamespaceArgPageType(title, args, cfg) local namespaceArg = getNamespaceArg(title, args, cfg) if namespaceArg == true then -- Namespace has been explicitly enabled, so return the default for -- this namespace return getExplicitPageType(title, cfg) elseif namespaceArg == false then -- Namespace has been explicitly disabled return getDefaultPageType(args, cfg) elseif namespaceArg then -- This namespaces uses custom text return namespaceArg else return nil end end -- Whether the title is in the set of default active namespaces which are -- looked up in cfg.pagetypes. local function isInDefaultActiveNamespace(title, args, cfg) local defaultNamespacesKey = args[cfg.defaultns] if defaultNamespacesKey == cfg.defaultnsAll then return true end local defaultNamespaces if defaultNamespacesKey == cfg.defaultnsExtended then defaultNamespaces = cfg.extendedNamespaces elseif defaultNamespacesKey == cfg.defaultnsNone then defaultNamespaces = {} else defaultNamespaces = cfg.defaultNamespaces end return defaultNamespaces[title.namespace] or false end -- Get page type not specified or detected by other means local function getOtherPageType(title, args, cfg) if isInDefaultActiveNamespace(title, args, cfg) then return getExplicitPageType(title, cfg) else return getDefaultPageType(args, cfg) end end local function getPageType(title, args, cfg) return ( detectRedirects(title, args, cfg) or detectDisambiguationPages(title, args, cfg) or getMainNamespaceClassPageType(title, args, cfg) or getNamespaceArgPageType(title, args, cfg) or getOtherPageType(title, args, cfg) ) end local function shouldUseSubjectTitle(args, cfg) return not yesno(args.talk, true) and args[cfg.defaultns] ~= cfg.defaultnsAll end -- Get the Scribunto title object to fetch the page type of local function getTitle(args, cfg) local title if args.page then title = mw.title.new(args.page) if not title then return nil end else title = mw.title.getCurrentTitle() end if shouldUseSubjectTitle(args, cfg) then return title.subjectPageTitle else return title end end local function pluralize(pageType, cfg) if cfg.irregularPlurals[pageType] then return cfg.irregularPlurals[pageType] else return pageType .. cfg.plural -- often 's' end end local function capitalize(pageType) local first = mw.ustring.sub(pageType, 1, 1) local rest = mw.ustring.sub(pageType, 2) return mw.ustring.upper(first) .. rest end function p._main(args) local title = getTitle(args, cfg) local pageType = getPageType(title, args, cfg) if yesno(args.plural, false) then pageType = pluralize(pageType, cfg) end if yesno(args.caps, false) then pageType = capitalize(pageType) end return pageType end function p.main(frame) local args = getArgs(frame) return p._main(args) end return p ab72b17cbd3e423817484aedfd33b480e9ba3611 Template:Navigation templates 10 1296 2631 2023-08-29T10:05:25Z w>Andrybak 0 use [[Module:Navbox/styles.css]] wikitext text/x-wiki <templatestyles src="Module:Navbox/styles.css" /> {| class="wikitable" style="margin-left: auto; margin-right: auto; text-align: center;" |+ Navigation templates comparison {{Navbar|Navigation templates|plain=1|brackets=y}} |- ! Template ! Collapsible !! Header color ! Image !! Groups !! Style (body) <br /> parameter/s |- | style="text-align: left;" | {{tl|Navbox}} | collapsible || class="navbox-title" | navbox | Left/right of body || Yes || Yes |- | style="text-align: left;" | {{tl|Navbox with collapsible groups}} | collapsible || class="navbox-title" | navbox | Left/right of body and/or in each list || Yes || Yes |- | style="text-align: left;" | {{tl|Navbox with columns}} | collapsible || class="navbox-title" | navbox | Left/right of columns || No || Yes |} {| class="wikitable" style="margin-left: auto; margin-right: auto; text-align: center;" |+ Collapsible attributes |- ! Type !! CSS classes !! JavaScript !! Collapses when !! Custom <br /> initial&nbsp;state !! Nesting |- | style="text-align:left;" | [[Help:Collapsing|Collapsible tables]] | mw-collapsible | Defined in [[MediaWiki:Common.js|Common.js]] | 2 or more autocollapse on page || Yes || Yes |}<noinclude> [[Category:Navbox meta-templates|Δ]] [[Category:Documentation shared content templates]] </noinclude> 3532432c7f57704faf211932139c393f1bc2b912 Template:Infobox officeholder/doc 10 203 460 2023-08-30T04:04:42Z wikipedia>Jonesey95 0 clarify how jr/sr works now wikitext text/x-wiki {{Documentation subpage}} {{Person infobox header}} {{High-use|demo={{ROOTPAGENAME}}}} {{Notice|Please note that in June 2017, the {{para|religion}} parameter was removed from Infobox officeholder as a result of [[Template talk:Infobox officeholder/Archive 21#Religion in officeholder infoboxes|this discussion]].}} {{tl|Infobox officeholder}} is incorporated into the following templates (i.e. all the templates listed <span class="plainlinks">[{{fullurl:Special:WhatLinksHere/Template:Infobox officeholder|namespace=10&limit=1000&hidetrans=1&hidelinks=1}} here]</span>). Please use the most appropriate name when placing this template on a page. {{collapse top |title= List of templates}} {{refbegin|colwidth=20em}} * {{Tld|Infobox AM}} * {{Tld|Infobox Canadian MP}} * {{Tld|Infobox Canadian senator}} * {{Tld|Infobox candidate}} * {{Tld|Infobox civil servant}} * {{Tld|Infobox chancellor}} * {{Tld|Infobox congressional candidate}} * {{Tld|Infobox congressman}} * {{Tld|Infobox defense minister}} * {{Tld|Infobox deputy first minister}} * {{Tld|Infobox deputy prime minister}} * {{Tld|Infobox doge}} * {{Tld|Infobox Eritrea cabinet official}} * {{Tld|Infobox first lady}} * {{Tld|Infobox first minister}} * {{Tld|Infobox governor}} * {{Tld|Infobox governor-elect}} * {{Tld|Infobox governor general}} * {{Tld|Infobox governor-general}} * {{Tld|Infobox Indian politician}} * {{Tld|Infobox judge}} * {{Tld|Infobox lt governor}} * {{Tld|Infobox mayor}} * {{Tld|Infobox MEP}} * {{Tld|Infobox minister}} * {{Tld|Infobox MLA}} * {{Tld|Infobox MP}} * {{Tld|Infobox MSP}} * {{Tld|Infobox PM}} * {{Tld|Infobox politician}} * {{Tld|Infobox politician (general)}} * {{Tld|Infobox premier}} * {{Tld|Infobox president}} * {{Tld|Infobox president-elect}} * {{Tld|Infobox prime minister}} * {{Tld|Infobox prime minister-elect}} * {{Tld|Infobox representative-elect}} * {{Tld|Infobox SCC chief justice}} * {{Tld|Infobox SCC puisne justice}} * {{Tld|Infobox secretary-general}} * {{Tld|Infobox senator}} * {{Tld|Infobox senator-elect}} * {{Tld|Infobox speaker}} * {{Tld|Infobox state representative}} * {{Tld|Infobox state SC associate justice}} * {{Tld|Infobox state SC justice}} * {{Tld|Infobox state senator}} * {{Tld|Infobox US ambassador}} * {{Tld|Infobox US associate justice}} * {{Tld|Infobox US cabinet official}} * {{Tld|Infobox US chief justice}} * {{Tld|Infobox US territorial governor}} * {{Tld|Infobox vice president}} {{refend}} {{collapse bottom}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} ==Usage== {{hatnote|Note: This template is for use on articles about '''individual people'''. For the infobox for use on articles about offices/positions, see [[Template:Infobox official post]].}} Paste the code for the relevant office and then add the [[#Personal data|personal data]] to the bottom. There are no required fields and some fields will not appear when others are in use. For instructions on how to implement multiple terms, see [[Template:Infobox officeholder/example#Multiple terms|this page]]. For advice on alt text, see ''[[Wikipedia:Alternative text for images]]''. The parameter {{para|order}} is used in conjunction with {{para|office}} to state that the officeholder is the ''n''th holder of the office, for example "42nd President of the United States". This should only be used when there is a well established use of such numbering in reliable sources. Do not add numbers simply based on a Wikipedia list of holders of the office, because (1) the list may not be accurate and (2) even with a definite list, different numbering systems could be applied (as to how various categories of "irregular" officeholders should be counted, and as to the counting of those serving for multiple non-consecutive periods) making the numbers arbitrary; and even where such issues are not yet present, they are bound to be in the future, making this unsustainable. Per [[WP:SEAOFBLUE]], it is not recommended to wikilink {{para|order}} to a list of officeholders, even if such a list exists. If {{para|order}} is not specified, the value of {{para|office}} can be [[Help:Link#Wikilinks|wikilinked]] in the usual way, for example, "<code><nowiki>[[Ministry of Defence (Singapore)|Minister for Defence]]</nowiki></code>". However, if {{para|order}} is specified together with {{para|office}}, the value of {{para|office}} is automatically linked to a Wikipedia article of the same name, whether such an article exists or not. Wikilinking cannot be used to redirect the link elsewhere, but a [[Wikipedia:Piped link|piped link]] can be created like this: "<code><nowiki>Ministry of Defence (Singapore){{!}}Minister for Defence</nowiki></code>" (note that the double square brackets have been omitted). When both a start and an end term are given, you can instead specify the complete term using the parameters {{para|term}}, {{para|term2}}, etc. This can be helpful for complicated terms that cannot be given as simple starting or ending dates, or if you prefer something other than the default term separator (an en dash, with spaces around it if the start or end is not a simple integer date). Where a politician was redistricted into a new district, you can use {{para|prior_term}} to indicate which district(s) they were in before. This saves space in the infobox by not generating a completely new office each time redistricting happens. If you do this, it is recommended that you list the person who preceded the subject when the subject first took office and the person who succeeded the subject when the subject last left office. Where the use of "same district number" is used for determining "predecessor" and "successor" in any office, but where the area is so altered as to make such a "predecessor" or "successor" of little or no biographical value, the word "redistricted" should be used rather than using names of officeholders whose connection is accidental by virtue of district number, but unrelated to any election contests between officeholders. Please do not re-purpose any fields to add decorative images, icons or flags. Template:Infobox viceroy styles or the like can be used for this. [[WP:INFOBOXFLAG]] applies here. Per consensus in [[Wikipedia:Village pump (proposals)/Archive 175#RfC: Interim use of successor in Infobox officeholder|this RfC]], the infobox for an incumbent officeholder should not mention an [[-elect|elected or designated]] successor, or the end date of the term, until the successor takes office. ===General office=== {{For|examples of this code in use|Template:Infobox officeholder/example#General office}} {{Generic template demo | honorific_prefix | name<!-- defaults to article title when left blank --> | native_name | native_name_lang | honorific_suffix | image | image_size | image_upright | image name | image_name_alt | smallimage | smallimage_alt | alt | caption | order | office | status<!--If this is specified, overrides Incumbent.--> | term_start | term_end<!-- Add data only when the actual term has ended, not for terms which will end in the future. (Per usage guideline.) --> | subterm | suboffice | alongside | monarch | president | governor_general | primeminister | chancellor | taoiseach | governor | co-leader | vicepresident | viceprimeminister | deputy | lieutenant | parliamentarygroup | constituency | majority | predecessor | successor | prior_term | order2 | office2 | term_start2 | term_end2 | subterm2 | suboffice2 | alongside2 | monarch2 | president2 | governor_general2 | primeminister2 | chancellor2 | taoiseach2 | governor2 | co-leader2 | vicepresident2 | viceprimeminister2 | deputy2 | lieutenant2Z | parliamentarygroup2 | constituency2 | predecessor2 | successor2 | majority2 | prior_term2 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox officeholder | honorific_prefix = | name = <!-- defaults to article title when left blank --> | native_name = <!--The person's name in their own language, if different.--> | native_name_lang = <!--ISO 639-1 code, e.g., "fr" for French. If more than one, use {{lang}} in |native_name= instead.--> | honorific_suffix = | image = | image_size = | image_upright = | smallimage = <!--If this is specified, "image" should not be.--> | smallimage_alt = | alt = | caption = | order = | office = | status = <!--If this is specified, overrides Incumbent.--> | term_start = | term_end = <!-- Add data only when the actual term has ended, not for terms which will end in the future. (Per usage guideline.) --> | subterm = | suboffice = | alongside = <!--For two or more people serving in the same position from the same district. (e.g. United States senators.)--> | monarch = | president = | governor_general = | primeminister = | taoiseach = | chancellor = | governor = | co-leader = | vicepresident = | viceprimeminister = | deputy = | lieutenant = | succeeding = <!--For President-elect or equivalent--> | parliamentarygroup = | constituency = | majority = | predecessor = | successor = <!-- should not be filled until the successor takes office--> | prior_term = | order2 = <!--Can be repeated up to 16 times by changing the number--> | office2 = <!--Can be repeated up to 16 times by changing the number--> | term_start2 = <!--Can be repeated up to 16 times by changing the number--> | term_end2 = <!--Can be repeated up to 16 times by changing the number--> | subterm2 = <!--Can be repeated up to 16 times by changing the number--> | suboffice2 = <!--Can be repeated up to 16 times by changing the number--> | alongside2 = <!--Can be repeated up to 16 times by changing the number--> | monarch2 = <!--Can be repeated up to 16 times by changing the number--> | president2 = <!--Can be repeated up to 16 times by changing the number--> | governor_general2 = <!--Can be repeated up to 16 times by changing the number--> | primeminister2 = <!--Can be repeated up to 16 times by changing the number--> | chancellor2 = <!--Can be repeated up to 16 times by changing the number--> | taoiseach2 = <!--Can be repeated up to 16 times by changing the number--> | governor2 = <!--Can be repeated up to 16 times by changing the number--> | co-leader2 = <!--Can be repeated up to 16 times by changing the number--> | vicepresident2 = <!--Can be repeated up to 16 times by changing the number--> | viceprimeminister2 = <!--Can be repeated up to 16 times by changing the number--> | deputy2 = <!--Can be repeated up to 16 times by changing the number--> | lieutenant2 = <!--Can be repeated up to 16 times by changing the number--> | succeeding2 = <!--Can be repeated up to 16 times by changing the number--> | predecessor2 = <!--Can be repeated up to 16 times by changing the number--> | successor2 = <!--Can be repeated up to 16 times by changing the number--> | parliamentarygroup2= <!--Can be repeated up to 16 times by changing the number--> | constituency2 = <!--Can be repeated up to 16 times by changing the number--> | majority2 = <!--Can be repeated up to 16 times by changing the number--> | prior_term2 = <!--Can be repeated up to 16 times by changing the number--> </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} ===Ambassador=== {{For|examples of this code in use|Template:Infobox officeholder/example#Ambassador}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | order | ambassador_from | country | term_start | term_end | predecessor | successor | president }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox ambassador | honorific_prefix = | name = | honorific_suffix = | image = | alt = | order = <!--Can be repeated up to 16 times by adding a number--> | ambassador_from = <!--Can be repeated up to 16 times by adding a number--> | country = <!--Can be repeated up to 16 times by adding a number--> | term_start = <!--Can be repeated up to 16 times by adding a number--> | term_end = <!--Can be repeated up to 16 times by adding a number--> | predecessor = <!--Can be repeated up to 16 times by adding a number--> | successor = <!--Can be repeated up to 16 times by adding a number--> | president = <!--Can be repeated up to 16 times by adding a number--> </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} ===Assembly member=== {{For|examples of this code in use|Template:Infobox officeholder/example#Assembly Member}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | caption | constituency_AM | assembly | majority | term_start | term_end | predecessor | successor | prior_term }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox AM | honorific_prefix = | name = | honorific_suffix = | image = | alt = | caption = | constituency_AM = <!--Can be repeated up to eight times by adding a number--> | assembly = <!--Can be repeated up to 16 times by adding a number--> | majority = <!--Can be repeated up to 16 times by adding a number--> | term_start = <!--Can be repeated up to 16 times by adding a number--> | term_end = <!--Can be repeated up to 16 times by adding a number--> | predecessor = <!--Can be repeated up to 16 times by adding a number--> | successor = <!--Can be repeated up to 16 times by adding a number--> | prior_term = </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} ===Governor=== {{For|examples of this code in use|Template:Infobox officeholder/example#Governor}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | order | office | term_start | term_end | lieutenant | predecessor | successor }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox governor | honorific_prefix = | name = | honorific_suffix = | image = | alt = | order = <!--Can be repeated up to 16 times by adding a number--> | office = <!--Can be repeated up to 16 times by adding a number--> | term_start = <!--Can be repeated up to 16 times by adding a number--> | term_end = <!--Can be repeated up to 16 times by adding a number--> | lieutenant = <!--Can be repeated up to 16 times by adding a number--> | predecessor = <!--Can be repeated up to 16 times by adding a number--> | successor = <!--Can be repeated up to 16 times by adding a number--> </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} If Governor was appointed by a President, add: {{Generic template demo | president }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | president = <!--name of president--> </syntaxhighlight> {{clear}} If Governor appointed by other, add: {{Generic template demo | appointed }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | appointed = <!--name of appointer--> </syntaxhighlight> {{clear}} ===Judge=== {{For|examples of this code in use|Template:Infobox officeholder/example#Judge}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | caption | office | term_start | term_end | nominator | appointer | predecessor | successor }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox judge | honorific_prefix = | name = | honorific_suffix = | image = | alt = | caption = | office = <!--Can be repeated up to 16 times by changing the number--> | term_start = <!--Can be repeated up to 16 times by changing the number--> | term_end = <!--Can be repeated up to 16 times by changing the number--> | nominator = <!--Can be repeated up to 16 times by changing the number--> | appointer = <!--Can be repeated up to 16 times by changing the number--> | predecessor = <!--Can be repeated up to 16 times by changing the number--> | successor = <!--Can be repeated up to 16 times by changing the number--> </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} ===Member of Parliament=== {{For|examples of this code in use|Template:Infobox officeholder/example#Member of Parliament}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | caption | constituency_MP | parliament | majority | term_start | term_end | predecessor | successor | prior_term }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox MP | honorific_prefix = | name = | honorific_suffix = | image = | alt = | caption = | constituency_MP = <!--Can be repeated up to eight times by adding a number--> | parliament = <!--Can be repeated up to 16 times by adding a number--> | majority = <!--Can be repeated up to 16 times by adding a number--> | term_start = <!--Can be repeated up to 16 times by adding a number--> | term_end = <!--Can be repeated up to 16 times by adding a number--> | predecessor = <!--Can be repeated up to 16 times by adding a number--> | successor = <!--Can be repeated up to 16 times by adding a number--> | prior_term = </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} ===U.S. Representatives=== ====U.S. Congressperson==== {{For|examples of this code in use|Template:Infobox officeholder/example#US Congressperson}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | state | district | term_start | term_end | predecessor | successor | prior_term }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox Congressman | honorific_prefix = | name = | honorific_suffix = | image = | alt = | state = <!--Can be repeated up to 16 times by adding a number, start at 3--> | district = <!--Can be repeated up to 16 times by adding a number, start at 3--> | term_start = <!--Can be repeated up to 16 times by adding a number, start at 3--> | term_end = <!--Can be repeated up to 16 times by adding a number, start at 3--> | predecessor = <!--Can be repeated up to 16 times by adding a number, start at 3--> | successor = <!--Can be repeated up to 16 times by adding a number, start at 3--> | prior_term = </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} If Congressperson served as Speaker of the House add: {{Generic template demo | speaker | term_start2 | term_end2 | predecessor2 | successor2 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | speaker = <!--number of office holder--> | term_start2 = | term_end2 = | predecessor2 = | successor2 = </syntaxhighlight> {{clear}} If Congressman has been elected but not sworn in: {{Generic template demo | succeeding }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | succeeding = <!--the name of the incumbent congressman--> </syntaxhighlight> {{clear}} ====State Representative==== {{For|examples of this code in use|Template:Infobox officeholder/example#State Representative}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | state_house | district | term_start | term_end | predecessor | successor | prior_term }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox state representative | honorific_prefix = | name = | honorific_suffix = | image = | alt = | state_house = <!--Can be repeated up to 16 times by adding a number, start at 3--> | district = <!--Can be repeated up to 16 times by adding a number, start at 3--> | term_start = <!--Can be repeated up to 16 times by adding a number, start at 3--> | term_end = <!--Can be repeated up to 16 times by adding a number, start at 3--> | predecessor = <!--Can be repeated up to 16 times by adding a number, start at 3--> | successor = <!--Can be repeated up to 16 times by adding a number, start at 3--> | prior_term = </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} For Representative from states that have an Assembly, instead of state_house use: {{Generic template demo | state_assembly | district }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | state_assembly = <!--Can be repeated up to 16 times by adding a number, start at 3--> | district = <!--Can be repeated up to 16 times by adding a number, start at 3--> </syntaxhighlight> {{clear}} For Representative from states that have a House of Delegates, instead of state_house use: {{Generic template demo | state_delegate | district }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | state_delegate = <!--Can be repeated up to 16 times by adding a number, start at 3--> | district = <!--Can be repeated up to 16 times by adding a number, start at 3--> </syntaxhighlight> {{clear}} For Representative from states that have a Legislature, instead of state_house use: {{Generic template demo | state_legislature | district }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | state_legislature = <!--Can be repeated up to 16 times by adding a number, start at 3--> | district = <!--Can be repeated up to 16 times by adding a number, start at 3--> </syntaxhighlight> {{clear}} If Representative served as Speaker of the State House add: {{Generic template demo | speaker | state_house | term_start2 | term_end2 | predecessor2 | successor2 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | speaker = <!--number of office holder--> | state_house = | term_start2 = | term_end2 = | predecessor2 = | successor2 = </syntaxhighlight> {{clear}} ===U.S. Senators=== ====U.S. Senator==== {{For|examples of this code in use|Template:Infobox officeholder/example#US Senator}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | image_size | image_upright | alt | jr/sr | state | term_start | term_end | predecessor | successor }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox senator | honorific_prefix = | name = | honorific_suffix = | image = | image_size = | image_upright = | alt = | jr/sr = <!--Can be repeated up to eight times by appending 2, 3, etc--> Set to any value to display the "United States Senator from" header. If this parameter is missing or empty, "United States Senator from" will not be displayed. | state = <!--Can be repeated up to eight times by appending 2, 3, etc--> | term_start = <!--Can be repeated up to eight times by appending 2, 3, etc--> | term_end = <!--Can be repeated up to eight times by appending 2, 3, etc--> | predecessor = <!--Can be repeated up to eight times by appending 2, 3, etc--> | successor = <!--Can be repeated up to eight times by appending 2, 3, etc--> </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} {{Generic template demo | term_start | alongside }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | term_start = | alongside = <!--the name of fellow senator--> </syntaxhighlight> {{clear}} If Senator has just been elected and is a Senator-Elect: {{Generic template demo | succeeding }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | succeeding = <!--the name of the incumbent senator--> </syntaxhighlight> {{clear}} If Senator served as Senate Majority Leader add: {{Generic template demo | majorityleader3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | majorityleader3 = <!--number of office holder--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} If Senator served as Congressman add: {{Generic template demo | state3 | district3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | state3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | district3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} ====State Senator==== {{For|examples of this code in use|Template:Infobox officeholder/example#State Senator}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | state_senate | district | term_start | term_end | predecessor | successor | prior_term }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox state senator | honorific_prefix = | name = | honorific_suffix = | image = | alt = | state_senate = <!--Can be repeated up to eight times by appending 2, 3, etc--> | district = <!--Can be repeated up to eight times by appending 2, 3, etc--> | term_start = <!--Can be repeated up to eight times by appending 2, 3, etc--> | term_end = <!--Can be repeated up to eight times by appending 2, 3, etc--> | predecessor = <!--Can be repeated up to eight times by appending 2, 3, etc--> | successor = <!--Can be repeated up to eight times by appending 2, 3, etc--> | prior_term = </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} If State Senator served as Majority Leader of the State Senate add: {{Generic template demo | majority_leader3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | majority_leader3 = <!--number of office holder--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} If State Senator served as Minority Leader of the State Senate add: {{Generic template demo | minority_leader3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | minority_leader3 = <!--number of office holder--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} If State Senator served as Majority Floor Leader of the State Senate add: {{Generic template demo | majority_floor_leader3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | majority_floor_leader3 = <!--number of office holder--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} If State Senator served as Minority Floor Leader of the State Senate add: {{Generic template demo | minority_floor_leader3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | minority_floor_leader3 = <!--number of office holder--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} ===Ukrainian legislative office=== {{For|examples of this code in use|Template:Infobox officeholder/example#Ukrainian legislative office}} {{Generic template demo | name | native_name | native_name_lang | image | caption | office1 | convocation1 | constituency1 | term_start1 | term_end1 | convocation2 | constituency2 | term_start2 | term_end2 | office3 | convocation3 | constituency3 | term_start3 | term_end3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox Ukrainian legislative office | name = | native_name = | native_name_lang = | image = | caption = | office1 = | convocation1 = | constituency1 = | term_start1 = | term_end1 = | convocation2 = | constituency2 = | term_start2 = | term_end2 = | office3 = <!--Can be repeated up to 16 times by adding a number--> | convocation3 = <!--Can be repeated up to 16 times by adding a number--> | constituency3 = <!--Can be repeated up to 16 times by adding a number--> | term_start3 = <!--Can be repeated up to 16 times by adding a number--> | term_end3 = <!--Can be repeated up to 16 times by adding a number--> </syntaxhighlight> ==Personal data== Place this underneath the template {{Generic template demo | pronunciation | birth_name <!-- only use if different from name --> | birth_date | birth_place | death_date | death_place | death_cause <!-- should only be included when the cause of death has significance for the subject's notability --> | resting_place | resting_place_coordinates | citizenship <!-- use only when necessary per [[WP:INFONAT]] --> | nationality <!-- use only when necessary per [[WP:INFONAT]] --> | party | otherparty | height | spouse <!--Fill only if notable (reference required) or there is a WP article on this person--> | partner <!--Fill only if notable (reference required) or there is a WP article on this person--> | relations <!--Fill only if notable (reference required) or there is a WP article on this person--> | children <!--Fill only if notable (reference required) or there is a WP article on this person--> | parents <!--Fill only if notable (reference required) or there is a WP article on this person--> | mother <!--Fill only if notable (reference required) or there is a WP article on this person--> | father <!--Fill only if notable (reference required) or there is a WP article on this person--> | relatives <!--Fill only if notable (reference required) or there is a WP article on this person--> | residence | education | alma_mater | occupation | profession | salary | known_for | cabinet | committees | portfolio | awards | blank1 | data1 | blank2 | data2 | blank3 | data3 | blank4 | data4 | blank5 | data5 | signature | signature_alt | website | nickname | allegiance | branch | serviceyears | rank | unit | commands | battles | mawards | military_blank1 | military_data1 | military_blank2 | military_data2 | military_blank3 | military_data3 | military_blank4 | military_data4 | military_blank5 | military_data5 | module | module2 | module3 | module4 | module5 | footnotes }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | pronunciation = | birth_name = <!-- only use if different from name --> | birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} --> | birth_place = | death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} --> | death_place = | death_cause = <!-- should only be included when the cause of death has significance for the subject's notability --> | resting_place = | resting_place_coordinates = | citizenship = <!-- use only when necessary per [[WP:INFONAT]] --> | nationality = <!-- use only when necessary per [[WP:INFONAT]] --> | party = | otherparty = <!--For additional political affiliations--> | height = <!-- "X cm", "X m" or "X ft Y in" plus optional reference (conversions are automatic) --> | spouse = | partner = <!--For those with a domestic partner and not married--> | relations = | children = | parents = <!-- overrides mother and father parameters --> | mother = <!-- may be used (optionally with father parameter) in place of parents parameter (displays "Parent(s)" as label) --> | father = <!-- may be used (optionally with mother parameter) in place of parents parameter (displays "Parent(s)" as label) --> | relatives = | residence = | education = | alma_mater = | occupation = | profession = | known_for = | salary = | cabinet = | committees = | portfolio = | awards = <!-- For civilian awards - appears as "Awards" if |mawards= is not set --> | blank1 = | data1 = | blank2 = | data2 = | blank3 = | data3 = | blank4 = | data4 = | blank5 = | data5 = | signature = | signature_alt = | signature_size = | website = | nickname = <!--Military service--> | allegiance = | branch = | serviceyears = | rank = | unit = | commands = | battles = | mawards = <!-- for military awards - appears as "Awards" if |awards= is not set --> | military_blank1 = | military_data1 = | military_blank2 = | military_data2 = | military_blank3 = | military_data3 = | military_blank4 = | military_data4 = | military_blank5 = | military_data5 = <!--Embedded templates / Footnotes--> | module = | module2 = | module3 = | module4 = | module5 = | footnotes = }} </syntaxhighlight> {{clear}} <code>nationality</code> is [[Wikipedia:Manual of Style/Infoboxes#Nationality and citizenship|not displayed]] if the corresponding country is mentioned in <code>birth_place</code>, for example <code>|birth_place = Tokyo, Japan |nationality = Japanese</code>. == Embedding other templates == The ''module'' parameters (module, module2, ... module5) may used to embed other templates into this infobox (see [[Wikipedia:Infobox modules]]). <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox officeholder | name = | <!-- etc. --> | module = {{Infobox football biography | embed = yes | <!-- etc. --> }} }} </syntaxhighlight> == Embedding within a different infobox == Many officeholders are known for more than just their appointments (e.g., [[Clint Eastwood]]), and hence it may be desirable to merge this infobox with another one, like {{tl|Infobox person}}. By adding {{para|embed|yes}} to the first line of the infobox code, one can embed this infobox into another, creating the illusion of one continuous infobox. Though the process is a little complicated, it is possible to insert this infobox into most if not all other infoboxes. For {{tl|Infobox person}}, this infobox is passed as a "module" using the {{para|module}} syntax. <syntaxhighlight lang="wikitext" style="overflow: auto"> {{Infobox person | name = John Infobox | image = Example.jpg | caption = John Infobox in 2005 | birth_name = John Officeholder Person Infobox | birth_date = {{Birth date|1950|5|25}} | birth_place = Template City | death_date = {{Death date and age|2010|10|22|1950|5|25}} | occupation = Actor | years_active = 1970–1990 | module = {{Infobox officeholder | embed = yes | office = Mayor of Wikipedia | term_start = 1994 | term_end = 1998 }} | website = {{URL|example.com}} }} </syntaxhighlight> ==Microformat== {{UF-hcard-person}} ==TemplateData== {{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <templatedata> { "description": "An infobox for office holders", "format": "{{_\n| ___________________ = _\n}}\n", "params": { "name": { "label": "Name", "description": "Commonly-known name of person (defaults to article name, without disambiguation)", "type": "line", "default": "PAGENAME" }, "office": { "label": "office", "description": "Office held", "type": "string" }, "order": { "label": "order", "description": "Used in conjunction with 'office' to state that the officeholder is the nth holder of the office", "type": "string" }, "bodyclass": { "label": "bodyclass", "type": "string" }, "mainwidth": { "label": "mainwidth", "default": "22em", "type": "string" }, "native_name": { "label": "Native name", "type": "string", "description": "Name in the person's native language", "example": "Melquíades Rafael Martínez Ruiz" }, "native_name_lang": { "label": "Native name language", "type": "string", "description": "Language in which the person's native name is", "example": "ca" }, "image": { "label": "Image", "description": "Filename for the image (e.g. 'Example.jpg').", "type": "wiki-file-name", "required": false }, "width": { "label": "width", "type": "string", "aliases": [ "imagesize", " image_size" ] }, "alt": { "label": "Alternative text", "description": "Alternative text for the image.", "type": "line" }, "image name": { "label": "image name", "type": "string" }, "smallimage": { "label": "smallimage", "type": "string" }, "caption": { "label": "Image caption", "description": "Caption for the image.", "type": "string", "required": false }, "alongside": { "label": "alongside", "description": "For two or more people serving in the same position from the same district. (e.g. United States senators.)", "type": "string" }, "ambassador_from": { "label": "ambassador from", "type": "string" }, "appointer": { "label": "appointer", "type": "string" }, "assembly": { "label": "assembly", "type": "string" }, "chancellor": { "label": "chancellor", "type": "string" }, "co-leader": { "label": "co-leader", "type": "string" }, "constituency_AM": { "label": "constituency AM", "type": "string" }, "constituency": { "label": "constituency", "type": "string" }, "country": { "label": "country", "type": "string", "example": "Israel" }, "deputy": { "label": "deputy", "type": "string" }, "district": { "label": "district", "type": "string" }, "firstminister": { "label": "first minister", "type": "string" }, "governor-general": { "label": "governor-general", "type": "string" }, "leader": { "label": "leader", "type": "string" }, "legislature": { "label": "legislature", "type": "wiki-page-name", "example": "[[United States House of Representatives]]" }, "lieutenant_governor": { "label": "lieutenant governor", "type": "string" }, "lieutenant": { "label": "lieutenant", "type": "string" }, "majorityleader": { "label": "majority leader", "type": "string" }, "minister": { "label": "minister", "type": "string" }, "minister_from": { "label": "minister from", "type": "string" }, "minority_floor_leader": { "label": "minority floor leader", "type": "string" }, "majority_floor_leader": { "label": "majority floor leader", "type": "string" }, "minorityleader": { "label": "minority leader", "type": "string", "example": "[[Chuck Shumer]]" }, "monarch": { "label": "monarch", "type": "string" }, "nominator": { "label": "nominator", "type": "string" }, "parliament": { "label": "parliament", "type": "string" }, "parliamentarygroup": { "label": "parliamentary group", "type": "string" }, "predecessor": { "label": "predecessor", "type": "string" }, "preceding": { "label": "preceding", "type": "string" }, "preceded": { "label": "preceded", "type": "string" }, "premier": { "label": "premier", "type": "string" }, "president": { "label": "president", "type": "string" }, "primeminister": { "label": "primeminister", "type": "string" }, "riding": { "label": "riding", "type": "string" }, "status": { "label": "status", "description": "If this is specified, overrides Incumbent.", "type": "string" }, "succeeded": { "label": "succeeded", "type": "string" }, "succeeding": { "label": "succeeding", "description": "For President-elect or equivalent.", "type": "string" }, "successor": { "label": "successor", "type": "string" }, "taoiseach": { "label": "taoiseach", "type": "string" }, "term_start": { "label": "term start", "type": "string", "description": "Date of the beginning of the person's term" }, "term_end": { "label": "term end", "type": "string", "description": "Date for the end of the person's term" }, "title": { "label": "title", "type": "string" }, "vicechair": { "label": "vice chair", "type": "string" }, "vicegovernor": { "label": "vice governor", "type": "string" }, "vicepresident": { "label": "vice president", "type": "string" }, "vicepremier": { "label": "vice premier", "type": "string" }, "viceprimeminister": { "label": "vice prime minister", "type": "string" }, "speaker": { "label": "speaker", "type": "string" }, "footnotes": { "label": "footnotes", "type": "string" }, "date": { "label": "date", "type": "string" }, "year": { "label": "year", "type": "string" }, "source": { "label": "source", "type": "string" }, "signature": { "label": "signature", "type": "wiki-file-name" }, "signature_alt": { "label": "signature alt text", "type": "string" }, "appointe": { "label": "appointee", "type": "string" }, "alongside2": { "label": "alongside 2", "type": "string" }, "peerage2": { "label": "peerage 2", "type": "string" }, "ambassador_from2": { "label": "ambassador from 2", "type": "string" }, "appointer2": { "label": "appointer 2", "type": "string" }, "assembly2": { "label": "assembly 2", "type": "string" }, "chancellor2": { "label": "chancellor 2", "type": "string" }, "co-leader2": { "label": "co-leader 2", "type": "string" }, "constituency_AM2": { "label": "constituency AM 2", "type": "string" }, "country2": { "label": "country 2", "type": "string", "example": "Malaya" }, "deputy2": { "label": "deputy 2", "type": "string" }, "district2": { "label": "district 2", "type": "string" }, "firstminister2": { "label": "first minister 2", "type": "string" }, "governor": { "label": "governor", "type": "string" }, "governor-general2": { "label": "governor-general 2", "type": "string" }, "governor2": { "label": "governor 2", "type": "string" }, "leader2": { "label": "leader 2", "type": "string", "example": "Donald Trump" }, "legislature2": { "label": "legislature 2", "type": "wiki-page-name", "example": "[[United States Senate]]" }, "lieutenant_governor2": { "label": "lieutenant governor 2", "type": "string" }, "lieutenant2": { "label": "lieutenant2", "type": "string" }, "majority": { "label": "majority", "type": "string" }, "majorityleader2": { "label": "majority leader 2", "type": "string", "example": "Mitch McConnell" }, "minister_from2": { "label": "minister from 2", "type": "string" }, "minority_floor_leader2": { "label": "minority floor leader 2", "type": "string" }, "majority_floor_leader2": { "label": "majority floor leader 2", "type": "string" }, "majority2": { "label": "majority 2", "type": "string" }, "minister2": { "label": "minister 2", "type": "string" }, "minority": { "label": "minority", "type": "string" }, "minorityleader2": { "label": "minority leader 2", "type": "string", "example": "[[Chuck Shumer]]" }, "monarch2": { "label": "monarch 2", "type": "string" }, "nominator2": { "label": "nominator 2", "type": "string" }, "office2": { "label": "office 2", "type": "string" }, "order2": { "label": "order 2", "type": "string" }, "parliament2": { "label": "parliament2", "type": "string" }, "parliamentarygroup2": { "label": "parliamentary group 2", "type": "string" }, "predecessor2": { "label": "predecessor 2", "type": "string" }, "preceding2": { "label": "preceding 2", "type": "string" }, "preceded2": { "label": "preceded 2", "type": "string" }, "premier2": { "label": "premier 2", "type": "string" }, "president2": { "label": "president 2", "type": "string" }, "primeminister2": { "label": "prime minister 2", "type": "string" }, "riding2": { "label": "riding 2", "type": "string" }, "speaker_office": { "label": "speaker office", "type": "string" }, "state_assembly": { "label": "state assembly", "type": "string" }, "state_delegate": { "label": "state delegate", "type": "string" }, "state_house": { "label": "state house", "type": "string" }, "state_legislature": { "label": "state legislature", "type": "string" }, "state_senate": { "label": "state senate", "type": "string" }, "state": { "label": "state", "type": "string", "description": "The state this officeholder represents or represented", "example": "[[Alabama]]" }, "term": { "label": "term", "type": "string" }, "party": { "label": "party", "type": "string" }, "prior_term": { "label": "prior_term", "description": "Additional fields numbered up to 14", "type": "string" }, "1blankname": { "label": "1blankname", "description": "Additional fields numbered up to 14", "type": "string" }, "1namedata": { "label": "1namedata", "description": "Additional fields numbered up to 14", "type": "string" }, "2blankname": { "label": "2blankname", "description": "Additional fields numbered up to 14", "type": "string" }, "2namedata": { "label": "2namedata", "description": "Additional fields numbered up to 14", "type": "string" }, "3blankname": { "label": "3blankname", "description": "Additional fields numbered up to 14", "type": "string" }, "3namedata": { "label": "3namedata", "description": "Additional fields numbered up to 14", "type": "string" }, "4blankname": { "label": "4blankname", "description": "Additional fields numbered up to 14", "type": "string" }, "4namedata": { "label": "4namedata", "description": "Additional fields numbered up to 14", "type": "string" }, "5blankname": { "label": "5blankname", "description": "Additional fields numbered up to 14", "type": "string" }, "5namedata": { "label": "5namedata", "description": "Additional fields numbered up to 14", "type": "string" }, "1blankname1": { "label": "1blankname1", "description": "Additional fields numbered up to 14", "type": "string" }, "1namedata1": { "label": "1namedata1", "description": "Additional fields numbered up to 14", "type": "string" }, "2blankname1": { "label": "2blankname1", "description": "Additional fields numbered up to 14", "type": "string" }, "2namedata1": { "label": "2namedata1", "description": "Additional fields numbered up to 14", "type": "string" }, "3blankname1": { "label": "3blankname1", "description": "Additional fields numbered up to 14", "type": "string" }, "3namedata1": { "label": "3namedata1", "description": "Additional fields numbered up to 14", "type": "string" }, "4blankname1": { "label": "4blankname1", "description": "Additional fields numbered up to 14", "type": "string" }, "4namedata1": { "label": "4namedata1", "description": "Additional fields numbered up to 14", "type": "string" }, "5blankname1": { "label": "5blankname1", "description": "Additional fields numbered up to 14", "type": "string" }, "5namedata1": { "label": "5namedata1", "description": "Additional fields numbered up to 14", "type": "string" }, "alongside1": { "label": "alongside1", "description": "Additional fields numbered up to 14", "type": "string" }, "ambassador_from1": { "label": "ambassador_from1", "description": "Additional fields numbered up to 14", "type": "string" }, "appointer1": { "label": "appointer1", "description": "Additional fields numbered up to 14", "type": "string" }, "assembly1": { "label": "assembly1", "description": "Additional fields numbered up to 14", "type": "string" }, "chair1": { "label": "chair1", "description": "Additional fields numbered up to 14", "type": "string" }, "chancellor1": { "label": "chancellor1", "description": "Additional fields numbered up to 14", "type": "string" }, "co-leader1": { "label": "co-leader1", "description": "Additional fields numbered up to 14", "type": "string" }, "constituency_AM1": { "label": "constituency_AM1", "description": "Additional fields numbered up to 14", "type": "string" }, "constituency1": { "label": "constituency1", "description": "Additional fields numbered up to 14", "type": "string" }, "country1": { "label": "country1", "description": "Additional fields numbered up to 14", "type": "string" }, "deputy1": { "label": "deputy1", "description": "Additional fields numbered up to 14", "type": "string" }, "district1": { "label": "district1", "description": "Additional fields numbered up to 14", "type": "string" }, "firstminister1": { "label": "firstminister1", "description": "Additional fields numbered up to 14", "type": "string" }, "governor-general1": { "label": "governor-general1", "description": "Additional fields numbered up to 14", "type": "string" }, "governor1": { "label": "governor1", "description": "Additional fields numbered up to 14", "type": "string" }, "leader1": { "label": "leader1", "description": "Additional fields numbered up to 14", "type": "string" }, "legislature1": { "label": "legislature1", "description": "Additional fields numbered up to 14", "type": "string" }, "lieutenant_governor1": { "label": "lieutenant governor 1", "description": "Additional fields numbered up to 14", "type": "string" }, "lieutenant1": { "label": "lieutenant 1", "description": "Additional fields numbered up to 14", "type": "string" }, "minority_floor_leader1": { "label": "minority floor leader 1", "description": "Additional fields numbered up to 14", "type": "string" }, "minister_from1": { "label": "minister from 1", "description": "Additional fields numbered up to 14", "type": "string" }, "majority_floor_leader1": { "label": "majority_floor_leader1", "description": "Additional fields numbered up to 14", "type": "string" }, "majorityleader1": { "label": "majorityleader1", "description": "Additional fields numbered up to 14", "type": "string" }, "majority1": { "label": "majority1", "description": "Additional fields numbered up to 14", "type": "string" }, "minister1": { "label": "minister1", "description": "Additional fields numbered up to 14", "type": "string" }, "minorityleader1": { "label": "minorityleader1", "description": "Additional fields numbered up to 14", "type": "string" }, "monarch1": { "label": "monarch1", "description": "Additional fields numbered up to 14", "type": "string" }, "nominator1": { "label": "nominator1", "description": "Additional fields numbered up to 14", "type": "string" }, "office1": { "label": "office1", "description": "Additional fields numbered up to 14", "type": "string" }, "order1": { "label": "order1", "description": "Additional fields numbered up to 14", "type": "string" }, "parliament1": { "label": "parliament1", "description": "Additional fields numbered up to 14", "type": "string" }, "parliamentarygroup1": { "label": "parliamentary group 1", "description": "Additional fields numbered up to 14", "type": "string" }, "predecessor1": { "label": "predecessor1", "description": "Additional fields numbered up to 14", "type": "string" }, "preceding1": { "label": "preceding1", "description": "Additional fields numbered up to 14", "type": "string" }, "preceded1": { "label": "preceded1", "description": "Additional fields numbered up to 14", "type": "string" }, "premier1": { "label": "premier1", "description": "Additional fields numbered up to 14", "type": "string" }, "president1": { "label": "president1", "description": "Additional fields numbered up to 14", "type": "string" }, "primeminister1": { "label": "primeminister1", "description": "Additional fields numbered up to 14", "type": "string" }, "riding1": { "label": "riding 1", "description": "Additional fields numbered up to 14", "type": "string" }, "state_assembly1": { "label": "state_assembly1", "description": "Additional fields numbered up to 14", "type": "string" }, "state_delegate1": { "label": "state_delegate1", "description": "Additional fields numbered up to 14", "type": "string" }, "state_house1": { "label": "state_house1", "description": "Additional fields numbered up to 14", "type": "string" }, "state_legislature1": { "label": "state_legislature1", "description": "Additional fields numbered up to 14", "type": "string" }, "state_senate1": { "label": "state_senate1", "description": "Additional fields numbered up to 14", "type": "string" }, "state1": { "label": "state1", "description": "Additional fields numbered up to 14", "type": "string" }, "succeeded1": { "label": "succeeded1", "description": "Additional fields numbered up to 14", "type": "string" }, "succeeding1": { "label": "succeeding1", "description": "Additional fields numbered up to 14", "type": "string" }, "successor1": { "label": "successor1", "description": "Additional fields numbered up to 14", "type": "string" }, "taoiseach1": { "label": "taoiseach1", "description": "Additional fields numbered up to 14", "type": "string" }, "termend1": { "label": "termend1", "description": "Additional fields numbered up to 14", "type": "string" }, "termstart1": { "label": "termstart1", "description": "Additional fields numbered up to 14", "type": "string" }, "term1": { "label": "term1", "description": "Additional fields numbered up to 14", "type": "string" }, "title1": { "label": "title1", "description": "Additional fields numbered up to 14", "type": "string" }, "vicechair1": { "label": "vicechair1", "description": "Additional fields numbered up to 14", "type": "string" }, "vicegovernor1": { "label": "vicegovernor1", "description": "Additional fields numbered up to 14", "type": "string" }, "vicepresident1": { "label": "vicepresident1", "description": "Additional fields numbered up to 14", "type": "string" }, "vicepremier1": { "label": "vicepremier1", "description": "Additional fields numbered up to 14", "type": "string" }, "viceprimeminister1": { "label": "viceprimeminister1", "description": "Additional fields numbered up to 14", "type": "string" }, "prior_term1": { "label": "prior term 1", "description": "Additional fields numbered up to 14", "type": "string" }, "termend2": { "label": "term end 2", "type": "string" }, "termstart2": { "label": "term start 2", "type": "string" }, "term2": { "label": "term 2", "type": "string" }, "title2": { "label": "title 2", "type": "string" }, "vicechair2": { "label": "vice chair 2", "type": "string" }, "vicegovernor2": { "label": "vice governor 2", "type": "string" }, "vicepresident2": { "label": "vice president 2", "type": "string" }, "vicepremier2": { "label": "vice premier 2", "type": "string" }, "viceprimeminister2": { "label": "vice prime minister 2", "type": "string" }, "succeeded2": { "label": "succeeded 2", "type": "string" }, "succeeding2": { "label": "succeeding 2", "type": "string" }, "successor2": { "label": "successor 2", "type": "string" }, "taoiseach2": { "label": "taoiseach 2", "type": "string" }, "state_assembly2": { "label": "state assembly2", "description": "Additional fields numbered up to 14", "type": "string" }, "state_delegate2": { "label": "state delegate2", "description": "Additional fields numbered up to 14", "type": "string" }, "state_house2": { "label": "state house 2", "description": "Additional fields numbered up to 14", "type": "string" }, "state_legislature2": { "label": "state legislature 2", "description": "Additional fields numbered up to 14", "type": "string" }, "state_senate2": { "label": "state senate2", "description": "Additional fields numbered up to 14", "type": "string" }, "state 2": { "label": "state 2", "description": "Additional fields numbered up to 14", "type": "string", "example": "[[Georgia (U.S. State)|Georgia]]" }, "prior_term2": { "label": "prior term 2", "description": "Additional fields numbered up to 14", "type": "string" }, "birth_name": { "label": "Birth name", "description": "Name at birth, if different from 'name'.", "type": "string", "required": false, "aliases": [ "birthname" ] }, "birth_date": { "label": "Birth date", "description": "Date of birth. Use {{birth date and age}} (for living people) or {{birth date}} for the deceased.", "type": "line", "required": false }, "birth_place": { "label": "Birth place", "description": "Place of birth.", "type": "line" }, "death_date": { "label": "Death date", "description": "Date of death. Use {{death date and age}}. Use {{death date}} if birth date unknown or incomplete.", "type": "content" }, "death_place": { "label": "Death place", "description": "The person's place of death, if deceased", "type": "line", "required": false, "example": "[[Crown Heights]]" }, "resting_place": { "label": "Resting place", "description": "Person's grave, etc.", "type": "line", "required": false }, "resting_place_coordinates": { "label": "Resting place", "description": "Coordinates of grave, etc. Use {{Coord|LAT|LONG|type:landmark|display=inline}}", "type": "line" }, "citizenship": { "label": "citizenship", "type": "string", "description": "The person's country of citizenship", "example": "[[Germany]]" }, "nationality": { "label": "Nationality", "description": "The person's nationality, use only when necessary per [[WP:INFONAT]]", "type": "line", "example": "Canadian" }, "otherparty": { "label": "other political party", "type": "string" }, "spouse": { "label": "Spouse(s)", "description": "Spouse(s), if notable", "type": "line", "required": false, "aliases": [ "spouses" ] }, "partner": { "label": "Partner(s)", "description": "Domestic partner(s), if notable", "type": "line" }, "relations": { "label": "relations", "type": "string" }, "children": { "label": "children", "type": "string" }, "parents": { "label": "parents", "type": "string" }, "residence": { "label": "Residence", "description": "Where this person lives", "type": "line" }, "alma_mater": { "label": "Alma mater", "description": "The linked name of attended higher education institution(s).", "type": "line" }, "occupation": { "label": "occupation", "description": " Please observe sentence case and capitalise only the first letter of the first item: (i.e. Politician, entrepreneur, businessman)", "type": "string" }, "profession": { "label": "profession", "description": " Please observe sentence case and capitalise only the first letter of the first item: (i.e. Attorney, accountant)", "type": "string" }, "cabinet": { "label": "cabinet", "type": "string" }, "committees": { "label": "committees", "type": "string" }, "portfolio": { "label": "portfolio", "type": "string" }, "blank1": { "label": "blank1", "description": "Also blank2 ... blank5", "type": "string" }, "data1": { "label": "data1", "description": "Also data2 ... data5", "type": "string" }, "website": { "label": "Official website", "description": "Office holder's official website, using {{URL}}.", "type": "line" }, "nickname": { "label": "nickname", "type": "string" }, "allegiance": { "label": "allegiance", "type": "string" }, "branch": { "label": "branch", "type": "string" }, "serviceyears": { "label": "serviceyears", "type": "string" }, "rank": { "label": "rank", "type": "string" }, "unit": { "label": "unit", "type": "string" }, "commands": { "label": "commands", "type": "string" }, "battles": { "label": "battles fought", "type": "string" }, "military_blank1": { "label": "military blank 1", "description": "Also military_blank2 ... military_blank5", "type": "string" }, "military_data1": { "label": "military data 1", "description": "Also military_data2 ... military_data5", "type": "string" }, "1blankname2": { "label": "1blankname2", "type": "string" }, "1namedata2": { "label": "1namedata2", "type": "string" }, "2blankname2": { "label": "2blankname2", "type": "string" }, "2namedata2": { "label": "2namedata2", "type": "string" }, "3blankname2": { "label": "3blankname2", "type": "string" }, "3namedata2": { "label": "3namedata2", "type": "string" }, "4blankname2": { "label": "4blankname2", "type": "string" }, "4namedata2": { "label": "4namedata2", "type": "string" }, "5blankname2": { "label": "5blankname2", "type": "string" }, "5namedata2": { "label": "5namedata2", "type": "string" }, "pronunciation": { "label": "Name pronunciation", "type": "string" }, "honorific_prefix": { "label": "Honorific prefix", "description": "Title such as 'The Honourable'", "type": "wiki-page-name", "required": false, "aliases": [ "honorific prefix" ] }, "honorific_suffix": { "label": "Honorific suffix", "description": "Initials such as 'OBE', 'FRSA'", "type": "wiki-page-name", "required": false, "aliases": [ "honorific suffix" ] }, "image_size": { "label": "Image size", "description": "Size of the image (e.g. '220px').", "type": "line", "default": "varies", "required": false, "aliases": [ "imagesize" ] }, "education": { "label": "Education", "description": "Where or with whom the officeholder trained.", "type": "line", "required": false }, "awards": { "label": "Awards", "description": "Awards won by the officeholder. Consider using {{awd}}.", "type": "line", "required": false }, "image_name_alt": {}, "smallname_alt": {}, "net_worth": { "label": "DEPRECATED: Net worth", "description": "Current estimated net worth, if relevant. Please be sure to support with a citation from a reliable source, in the article body.", "deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered." } } } </templatedata> {{Collapse bottom}} == Tracking categories == ; Hidden tracking/maintenance categories (in main and supporting templates): * {{clc|Biography template using pronunciation}} * {{clc|Pages using infobox officeholder with ambassador from or minister from}} * {{clc|Pages using infobox officeholder with both term and term_start or term_end}} * {{clc|Pages using infobox officeholder with office0}} * {{clc|Pages using infobox officeholder with speaker}} * {{clc|Pages using infobox officeholder with succeeding and term or termend}} * {{clc|Pages using infobox officeholder with unknown parameters}} == See also == * [[Template:S-start]] ([[Wikipedia:WikiProject Succession Box Standardization|succession box standardization]]) ; Supporting templates * [[Template:Infobox officeholder/office]] * <!-- [[Template:Infobox officeholder/Personal data]] --> <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Infobox templates|Officeholder]] [[Category:Politics and government infobox templates|Officeholder]] [[Category:People and person infobox templates|Officeholder]] [[Category:Infobox templates with module parameter|Officeholder]] [[Category:Biographical templates usable as a module|Officeholder]] [[Category:Templates that add a tracking category]] }}</includeonly> 9f0aa9b1712a817a2411b7ffcf199709eb3a1b22 Module:Citation/CS1 828 827 1844 2023-08-30T19:56:08Z wikipedia>Trappist the monk 0 fix {{cs1 config}} support for |display-translators=; Scribunto text/plain require ('strict'); --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- each of these counts against the Lua upvalue limit ]] local validation; -- functions in Module:Citation/CS1/Date_validation local utilities; -- functions in Module:Citation/CS1/Utilities local z = {}; -- table of tables in Module:Citation/CS1/Utilities local identifiers; -- functions and tables in Module:Citation/CS1/Identifiers local metadata; -- functions in Module:Citation/CS1/COinS local cfg = {}; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration local whitelist = {}; -- table of tables listing valid template parameter names; defined in Module:Citation/CS1/Whitelist --[[------------------< P A G E S C O P E V A R I A B L E S >--------------- declare variables here that have page-wide scope that are not brought in from other modules; that are created here and used here ]] local added_deprecated_cat; -- Boolean flag so that the category is added only once local added_vanc_errs; -- Boolean flag so we only emit one Vancouver error / category local added_generic_name_errs; -- Boolean flag so we only emit one generic name error / category and stop testing names once an error is encountered local Frame; -- holds the module's frame table local is_preview_mode; -- true when article is in preview mode; false when using 'Preview page with this template' (previewing the module) local is_sandbox; -- true when using sandbox modules to render citation --[[--------------------------< F I R S T _ S E T >------------------------------------------------------------ Locates and returns the first set value in a table of values where the order established in the table, left-to-right (or top-to-bottom), is the order in which the values are evaluated. Returns nil if none are set. This version replaces the original 'for _, val in pairs do' and a similar version that used ipairs. With the pairs version the order of evaluation could not be guaranteed. With the ipairs version, a nil value would terminate the for-loop before it reached the actual end of the list. ]] local function first_set (list, count) local i = 1; while i <= count do -- loop through all items in list if utilities.is_set( list[i] ) then return list[i]; -- return the first set list member end i = i + 1; -- point to next end end --[[--------------------------< A D D _ V A N C _ E R R O R >---------------------------------------------------- Adds a single Vancouver system error message to the template's output regardless of how many error actually exist. To prevent duplication, added_vanc_errs is nil until an error message is emitted. added_vanc_errs is a Boolean declared in page scope variables above ]] local function add_vanc_error (source, position) if added_vanc_errs then return end added_vanc_errs = true; -- note that we've added this category utilities.set_message ('err_vancouver', {source, position}); end --[[--------------------------< I S _ S C H E M E >------------------------------------------------------------ does this thing that purports to be a URI scheme seem to be a valid scheme? The scheme is checked to see if it is in agreement with http://tools.ietf.org/html/std66#section-3.1 which says: Scheme names consist of a sequence of characters beginning with a letter and followed by any combination of letters, digits, plus ("+"), period ("."), or hyphen ("-"). returns true if it does, else false ]] local function is_scheme (scheme) return scheme and scheme:match ('^%a[%a%d%+%.%-]*:'); -- true if scheme is set and matches the pattern end --[=[-------------------------< I S _ D O M A I N _ N A M E >-------------------------------------------------- Does this thing that purports to be a domain name seem to be a valid domain name? Syntax defined here: http://tools.ietf.org/html/rfc1034#section-3.5 BNF defined here: https://tools.ietf.org/html/rfc4234 Single character names are generally reserved; see https://tools.ietf.org/html/draft-ietf-dnsind-iana-dns-01#page-15; see also [[Single-letter second-level domain]] list of TLDs: https://www.iana.org/domains/root/db RFC 952 (modified by RFC 1123) requires the first and last character of a hostname to be a letter or a digit. Between the first and last characters the name may use letters, digits, and the hyphen. Also allowed are IPv4 addresses. IPv6 not supported domain is expected to be stripped of any path so that the last character in the last character of the TLD. tld is two or more alpha characters. Any preceding '//' (from splitting a URL with a scheme) will be stripped here. Perhaps not necessary but retained in case it is necessary for IPv4 dot decimal. There are several tests: the first character of the whole domain name including subdomains must be a letter or a digit internationalized domain name (ASCII characters with .xn-- ASCII Compatible Encoding (ACE) prefix xn-- in the TLD) see https://tools.ietf.org/html/rfc3490 single-letter/digit second-level domains in the .org, .cash, and .today TLDs q, x, and z SL domains in the .com TLD i and q SL domains in the .net TLD single-letter SL domains in the ccTLDs (where the ccTLD is two letters) two-character SL domains in gTLDs (where the gTLD is two or more letters) three-plus-character SL domains in gTLDs (where the gTLD is two or more letters) IPv4 dot-decimal address format; TLD not allowed returns true if domain appears to be a proper name and TLD or IPv4 address, else false ]=] local function is_domain_name (domain) if not domain then return false; -- if not set, abandon end domain = domain:gsub ('^//', ''); -- strip '//' from domain name if present; done here so we only have to do it once if not domain:match ('^[%w]') then -- first character must be letter or digit return false; end if domain:match ('^%a+:') then -- hack to detect things that look like s:Page:Title where Page: is namespace at Wikisource return false; end local patterns = { -- patterns that look like URLs '%f[%w][%w][%w%-]+[%w]%.%a%a+$', -- three or more character hostname.hostname or hostname.tld '%f[%w][%w][%w%-]+[%w]%.xn%-%-[%w]+$', -- internationalized domain name with ACE prefix '%f[%a][qxz]%.com$', -- assigned one character .com hostname (x.com times out 2015-12-10) '%f[%a][iq]%.net$', -- assigned one character .net hostname (q.net registered but not active 2015-12-10) '%f[%w][%w]%.%a%a$', -- one character hostname and ccTLD (2 chars) '%f[%w][%w][%w]%.%a%a+$', -- two character hostname and TLD '^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?', -- IPv4 address } for _, pattern in ipairs (patterns) do -- loop through the patterns list if domain:match (pattern) then return true; -- if a match then we think that this thing that purports to be a URL is a URL end end for _, d in ipairs (cfg.single_letter_2nd_lvl_domains_t) do -- look for single letter second level domain names for these top level domains if domain:match ('%f[%w][%w]%.' .. d) then return true end end return false; -- no matches, we don't know what this thing is end --[[--------------------------< I S _ U R L >------------------------------------------------------------------ returns true if the scheme and domain parts of a URL appear to be a valid URL; else false. This function is the last step in the validation process. This function is separate because there are cases that are not covered by split_url(), for example is_parameter_ext_wikilink() which is looking for bracketted external wikilinks. ]] local function is_url (scheme, domain) if utilities.is_set (scheme) then -- if scheme is set check it and domain return is_scheme (scheme) and is_domain_name (domain); else return is_domain_name (domain); -- scheme not set when URL is protocol-relative end end --[[--------------------------< S P L I T _ U R L >------------------------------------------------------------ Split a URL into a scheme, authority indicator, and domain. First remove Fully Qualified Domain Name terminator (a dot following TLD) (if any) and any path(/), query(?) or fragment(#). If protocol-relative URL, return nil scheme and domain else return nil for both scheme and domain. When not protocol-relative, get scheme, authority indicator, and domain. If there is an authority indicator (one or more '/' characters immediately following the scheme's colon), make sure that there are only 2. Any URL that does not have news: scheme must have authority indicator (//). TODO: are there other common schemes like news: that don't use authority indicator? Strip off any port and path; ]] local function split_url (url_str) local scheme, authority, domain; url_str = url_str:gsub ('([%a%d])%.?[/%?#].*$', '%1'); -- strip FQDN terminator and path(/), query(?), fragment (#) (the capture prevents false replacement of '//') if url_str:match ('^//%S*') then -- if there is what appears to be a protocol-relative URL domain = url_str:match ('^//(%S*)') elseif url_str:match ('%S-:/*%S+') then -- if there is what appears to be a scheme, optional authority indicator, and domain name scheme, authority, domain = url_str:match ('(%S-:)(/*)(%S+)'); -- extract the scheme, authority indicator, and domain portions if utilities.is_set (authority) then authority = authority:gsub ('//', '', 1); -- replace place 1 pair of '/' with nothing; if utilities.is_set(authority) then -- if anything left (1 or 3+ '/' where authority should be) then return scheme; -- return scheme only making domain nil which will cause an error message end else if not scheme:match ('^news:') then -- except for news:..., MediaWiki won't link URLs that do not have authority indicator; TODO: a better way to do this test? return scheme; -- return scheme only making domain nil which will cause an error message end end domain = domain:gsub ('(%a):%d+', '%1'); -- strip port number if present end return scheme, domain; end --[[--------------------------< L I N K _ P A R A M _ O K >--------------------------------------------------- checks the content of |title-link=, |series-link=, |author-link=, etc. for properly formatted content: no wikilinks, no URLs Link parameters are to hold the title of a Wikipedia article, so none of the WP:TITLESPECIALCHARACTERS are allowed: # < > [ ] | { } _ except the underscore which is used as a space in wiki URLs and # which is used for section links returns false when the value contains any of these characters. When there are no illegal characters, this function returns TRUE if value DOES NOT appear to be a valid URL (the |<param>-link= parameter is ok); else false when value appears to be a valid URL (the |<param>-link= parameter is NOT ok). ]] local function link_param_ok (value) local scheme, domain; if value:find ('[<>%[%]|{}]') then -- if any prohibited characters return false; end scheme, domain = split_url (value); -- get scheme or nil and domain or nil from URL; return not is_url (scheme, domain); -- return true if value DOES NOT appear to be a valid URL end --[[--------------------------< L I N K _ T I T L E _ O K >--------------------------------------------------- Use link_param_ok() to validate |<param>-link= value and its matching |<title>= value. |<title>= may be wiki-linked but not when |<param>-link= has a value. This function emits an error message when that condition exists check <link> for inter-language interwiki-link prefix. prefix must be a MediaWiki-recognized language code and must begin with a colon. ]] local function link_title_ok (link, lorig, title, torig) local orig; if utilities.is_set (link) then -- don't bother if <param>-link doesn't have a value if not link_param_ok (link) then -- check |<param>-link= markup orig = lorig; -- identify the failing link parameter elseif title:find ('%[%[') then -- check |title= for wikilink markup orig = torig; -- identify the failing |title= parameter elseif link:match ('^%a+:') then -- if the link is what looks like an interwiki local prefix = link:match ('^(%a+):'):lower(); -- get the interwiki prefix if cfg.inter_wiki_map[prefix] then -- if prefix is in the map, must have preceding colon orig = lorig; -- flag as error end end end if utilities.is_set (orig) then link = ''; -- unset utilities.set_message ('err_bad_paramlink', orig); -- URL or wikilink in |title= with |title-link=; end return link; -- link if ok, empty string else end --[[--------------------------< C H E C K _ U R L >------------------------------------------------------------ Determines whether a URL string appears to be valid. First we test for space characters. If any are found, return false. Then split the URL into scheme and domain portions, or for protocol-relative (//example.com) URLs, just the domain. Use is_url() to validate the two portions of the URL. If both are valid, or for protocol-relative if domain is valid, return true, else false. Because it is different from a standard URL, and because this module used external_link() to make external links that work for standard and news: links, we validate newsgroup names here. The specification for a newsgroup name is at https://tools.ietf.org/html/rfc5536#section-3.1.4 ]] local function check_url( url_str ) if nil == url_str:match ("^%S+$") then -- if there are any spaces in |url=value it can't be a proper URL return false; end local scheme, domain; scheme, domain = split_url (url_str); -- get scheme or nil and domain or nil from URL; if 'news:' == scheme then -- special case for newsgroups return domain:match('^[%a%d%+%-_]+%.[%a%d%+%-_%.]*[%a%d%+%-_]$'); end return is_url (scheme, domain); -- return true if value appears to be a valid URL end --[=[-------------------------< I S _ P A R A M E T E R _ E X T _ W I K I L I N K >---------------------------- Return true if a parameter value has a string that begins and ends with square brackets [ and ] and the first non-space characters following the opening bracket appear to be a URL. The test will also find external wikilinks that use protocol-relative URLs. Also finds bare URLs. The frontier pattern prevents a match on interwiki-links which are similar to scheme:path URLs. The tests that find bracketed URLs are required because the parameters that call this test (currently |title=, |chapter=, |work=, and |publisher=) may have wikilinks and there are articles or redirects like '//Hus' so, while uncommon, |title=[[//Hus]] is possible as might be [[en://Hus]]. ]=] local function is_parameter_ext_wikilink (value) local scheme, domain; if value:match ('%f[%[]%[%a%S*:%S+.*%]') then -- if ext. wikilink with scheme and domain: [xxxx://yyyyy.zzz] scheme, domain = split_url (value:match ('%f[%[]%[(%a%S*:%S+).*%]')); elseif value:match ('%f[%[]%[//%S+.*%]') then -- if protocol-relative ext. wikilink: [//yyyyy.zzz] scheme, domain = split_url (value:match ('%f[%[]%[(//%S+).*%]')); elseif value:match ('%a%S*:%S+') then -- if bare URL with scheme; may have leading or trailing plain text scheme, domain = split_url (value:match ('(%a%S*:%S+)')); elseif value:match ('//%S+') then -- if protocol-relative bare URL: //yyyyy.zzz; may have leading or trailing plain text scheme, domain = split_url (value:match ('(//%S+)')); -- what is left should be the domain else return false; -- didn't find anything that is obviously a URL end return is_url (scheme, domain); -- return true if value appears to be a valid URL end --[[-------------------------< C H E C K _ F O R _ U R L >----------------------------------------------------- loop through a list of parameters and their values. Look at the value and if it has an external link, emit an error message. ]] local function check_for_url (parameter_list, error_list) for k, v in pairs (parameter_list) do -- for each parameter in the list if is_parameter_ext_wikilink (v) then -- look at the value; if there is a URL add an error message table.insert (error_list, utilities.wrap_style ('parameter', k)); end end end --[[--------------------------< S A F E _ F O R _ U R L >------------------------------------------------------ Escape sequences for content that will be used for URL descriptions ]] local function safe_for_url( str ) if str:match( "%[%[.-%]%]" ) ~= nil then utilities.set_message ('err_wikilink_in_url', {}); end return str:gsub( '[%[%]\n]', { ['['] = '&#91;', [']'] = '&#93;', ['\n'] = ' ' } ); end --[[--------------------------< E X T E R N A L _ L I N K >---------------------------------------------------- Format an external link with error checking ]] local function external_link (URL, label, source, access) local err_msg = ''; local domain; local path; local base_url; if not utilities.is_set (label) then label = URL; if utilities.is_set (source) then utilities.set_message ('err_bare_url_missing_title', {utilities.wrap_style ('parameter', source)}); else error (cfg.messages["bare_url_no_origin"]); -- programmer error; valid parameter name does not have matching meta-parameter end end if not check_url (URL) then utilities.set_message ('err_bad_url', {utilities.wrap_style ('parameter', source)}); end domain, path = URL:match ('^([/%.%-%+:%a%d]+)([/%?#].*)$'); -- split the URL into scheme plus domain and path if path then -- if there is a path portion path = path:gsub ('[%[%]]', {['['] = '%5b', [']'] = '%5d'}); -- replace '[' and ']' with their percent-encoded values URL = table.concat ({domain, path}); -- and reassemble end base_url = table.concat ({ "[", URL, " ", safe_for_url (label), "]" }); -- assemble a wiki-markup URL if utilities.is_set (access) then -- access level (subscription, registration, limited) base_url = utilities.substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[access].class, cfg.presentation[access].title, base_url}); -- add the appropriate icon end return base_url; end --[[--------------------------< D E P R E C A T E D _ P A R A M E T E R >-------------------------------------- Categorize and emit an error message when the citation contains one or more deprecated parameters. The function includes the offending parameter name to the error message. Only one error message is emitted regardless of the number of deprecated parameters in the citation. added_deprecated_cat is a Boolean declared in page scope variables above ]] local function deprecated_parameter(name) if not added_deprecated_cat then added_deprecated_cat = true; -- note that we've added this category utilities.set_message ('err_deprecated_params', {name}); -- add error message end end --[=[-------------------------< K E R N _ Q U O T E S >-------------------------------------------------------- Apply kerning to open the space between the quote mark provided by the module and a leading or trailing quote mark contained in a |title= or |chapter= parameter's value. This function will positive kern either single or double quotes: "'Unkerned title with leading and trailing single quote marks'" " 'Kerned title with leading and trailing single quote marks' " (in real life the kerning isn't as wide as this example) Double single quotes (italic or bold wiki-markup) are not kerned. Replaces Unicode quote marks in plain text or in the label portion of a [[L|D]] style wikilink with typewriter quote marks regardless of the need for kerning. Unicode quote marks are not replaced in simple [[D]] wikilinks. Call this function for chapter titles, for website titles, etc.; not for book titles. ]=] local function kern_quotes (str) local cap = ''; local wl_type, label, link; wl_type, label, link = utilities.is_wikilink (str); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]] if 1 == wl_type then -- [[D]] simple wikilink with or without quote marks if mw.ustring.match (str, '%[%[[\"“”\'‘’].+[\"“”\'‘’]%]%]') then -- leading and trailing quote marks str = utilities.substitute (cfg.presentation['kern-left'], str); str = utilities.substitute (cfg.presentation['kern-right'], str); elseif mw.ustring.match (str, '%[%[[\"“”\'‘’].+%]%]') then -- leading quote marks str = utilities.substitute (cfg.presentation['kern-left'], str); elseif mw.ustring.match (str, '%[%[.+[\"“”\'‘’]%]%]') then -- trailing quote marks str = utilities.substitute (cfg.presentation['kern-right'], str); end else -- plain text or [[L|D]]; text in label variable label = mw.ustring.gsub (label, '[“”]', '\"'); -- replace “” (U+201C & U+201D) with " (typewriter double quote mark) label = mw.ustring.gsub (label, '[‘’]', '\''); -- replace ‘’ (U+2018 & U+2019) with ' (typewriter single quote mark) cap = mw.ustring.match (label, "^([\"\'][^\'].+)"); -- match leading double or single quote but not doubled single quotes (italic markup) if utilities.is_set (cap) then label = utilities.substitute (cfg.presentation['kern-left'], cap); end cap = mw.ustring.match (label, "^(.+[^\'][\"\'])$") -- match trailing double or single quote but not doubled single quotes (italic markup) if utilities.is_set (cap) then label = utilities.substitute (cfg.presentation['kern-right'], cap); end if 2 == wl_type then str = utilities.make_wikilink (link, label); -- reassemble the wikilink else str = label; end end return str; end --[[--------------------------< F O R M A T _ S C R I P T _ V A L U E >---------------------------------------- |script-title= holds title parameters that are not written in Latin-based scripts: Chinese, Japanese, Arabic, Hebrew, etc. These scripts should not be italicized and may be written right-to-left. The value supplied by |script-title= is concatenated onto Title after Title has been wrapped in italic markup. Regardless of language, all values provided by |script-title= are wrapped in <bdi>...</bdi> tags to isolate RTL languages from the English left to right. |script-title= provides a unique feature. The value in |script-title= may be prefixed with a two-character ISO 639-1 language code and a colon: |script-title=ja:*** *** (where * represents a Japanese character) Spaces between the two-character code and the colon and the colon and the first script character are allowed: |script-title=ja : *** *** |script-title=ja: *** *** |script-title=ja :*** *** Spaces preceding the prefix are allowed: |script-title = ja:*** *** The prefix is checked for validity. If it is a valid ISO 639-1 language code, the lang attribute (lang="ja") is added to the <bdi> tag so that browsers can know the language the tag contains. This may help the browser render the script more correctly. If the prefix is invalid, the lang attribute is not added. At this time there is no error message for this condition. Supports |script-title=, |script-chapter=, |script-<periodical>= ]] local function format_script_value (script_value, script_param) local lang=''; -- initialize to empty string local name; if script_value:match('^%l%l%l?%s*:') then -- if first 3 or 4 non-space characters are script language prefix lang = script_value:match('^(%l%l%l?)%s*:%s*%S.*'); -- get the language prefix or nil if there is no script if not utilities.is_set (lang) then utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing title part']}); -- prefix without 'title'; add error message return ''; -- script_value was just the prefix so return empty string end -- if we get this far we have prefix and script name = cfg.lang_tag_remap[lang] or mw.language.fetchLanguageName( lang, cfg.this_wiki_code ); -- get language name so that we can use it to categorize if utilities.is_set (name) then -- is prefix a proper ISO 639-1 language code? script_value = script_value:gsub ('^%l+%s*:%s*', ''); -- strip prefix from script -- is prefix one of these language codes? if utilities.in_array (lang, cfg.script_lang_codes) then utilities.add_prop_cat ('script', {name, lang}) else utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['unknown language code']}); -- unknown script-language; add error message end lang = ' lang="' .. lang .. '" '; -- convert prefix into a lang attribute else utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['invalid language code']}); -- invalid language code; add error message lang = ''; -- invalid so set lang to empty string end else utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing prefix']}); -- no language code prefix; add error message end script_value = utilities.substitute (cfg.presentation['bdi'], {lang, script_value}); -- isolate in case script is RTL return script_value; end --[[--------------------------< S C R I P T _ C O N C A T E N A T E >------------------------------------------ Initially for |title= and |script-title=, this function concatenates those two parameter values after the script value has been wrapped in <bdi> tags. ]] local function script_concatenate (title, script, script_param) if utilities.is_set (script) then script = format_script_value (script, script_param); -- <bdi> tags, lang attribute, categorization, etc.; returns empty string on error if utilities.is_set (script) then title = title .. ' ' .. script; -- concatenate title and script title end end return title; end --[[--------------------------< W R A P _ M S G >-------------------------------------------------------------- Applies additional message text to various parameter values. Supplied string is wrapped using a message_list configuration taking one argument. Supports lower case text for {{citation}} templates. Additional text taken from citation_config.messages - the reason this function is similar to but separate from wrap_style(). ]] local function wrap_msg (key, str, lower) if not utilities.is_set ( str ) then return ""; end if true == lower then local msg; msg = cfg.messages[key]:lower(); -- set the message to lower case before return utilities.substitute ( msg, str ); -- including template text else return utilities.substitute ( cfg.messages[key], str ); end end --[[----------------< W I K I S O U R C E _ U R L _ M A K E >------------------- Makes a Wikisource URL from Wikisource interwiki-link. Returns the URL and appropriate label; nil else. str is the value assigned to |chapter= (or aliases) or |title= or |title-link= ]] local function wikisource_url_make (str) local wl_type, D, L; local ws_url, ws_label; local wikisource_prefix = table.concat ({'https://', cfg.this_wiki_code, '.wikisource.org/wiki/'}); wl_type, D, L = utilities.is_wikilink (str); -- wl_type is 0 (not a wikilink), 1 (simple wikilink), 2 (complex wikilink) if 0 == wl_type then -- not a wikilink; might be from |title-link= str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace if utilities.is_set (str) then ws_url = table.concat ({ -- build a Wikisource URL wikisource_prefix, -- prefix str, -- article title }); ws_label = str; -- label for the URL end elseif 1 == wl_type then -- simple wikilink: [[Wikisource:ws article]] str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace if utilities.is_set (str) then ws_url = table.concat ({ -- build a Wikisource URL wikisource_prefix, -- prefix str, -- article title }); ws_label = str; -- label for the URL end elseif 2 == wl_type then -- non-so-simple wikilink: [[Wikisource:ws article|displayed text]] ([[L|D]]) str = L:match ('^[Ww]ikisource:(.+)') or L:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace if utilities.is_set (str) then ws_label = D; -- get ws article name from display portion of interwiki link ws_url = table.concat ({ -- build a Wikisource URL wikisource_prefix, -- prefix str, -- article title without namespace from link portion of wikilink }); end end if ws_url then ws_url = mw.uri.encode (ws_url, 'WIKI'); -- make a usable URL ws_url = ws_url:gsub ('%%23', '#'); -- undo percent-encoding of fragment marker end return ws_url, ws_label, L or D; -- return proper URL or nil and a label or nil end --[[----------------< F O R M A T _ P E R I O D I C A L >----------------------- Format the three periodical parameters: |script-<periodical>=, |<periodical>=, and |trans-<periodical>= into a single Periodical meta-parameter. ]] local function format_periodical (script_periodical, script_periodical_source, periodical, trans_periodical) if not utilities.is_set (periodical) then periodical = ''; -- to be safe for concatenation else periodical = utilities.wrap_style ('italic-title', periodical); -- style end periodical = script_concatenate (periodical, script_periodical, script_periodical_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped if utilities.is_set (trans_periodical) then trans_periodical = utilities.wrap_style ('trans-italic-title', trans_periodical); if utilities.is_set (periodical) then periodical = periodical .. ' ' .. trans_periodical; else -- here when trans-periodical without periodical or script-periodical periodical = trans_periodical; utilities.set_message ('err_trans_missing_title', {'periodical'}); end end return periodical; end --[[------------------< F O R M A T _ C H A P T E R _ T I T L E >--------------- Format the four chapter parameters: |script-chapter=, |chapter=, |trans-chapter=, and |chapter-url= into a single chapter meta- parameter (chapter_url_source used for error messages). ]] local function format_chapter_title (script_chapter, script_chapter_source, chapter, chapter_source, trans_chapter, trans_chapter_source, chapter_url, chapter_url_source, no_quotes, access) local ws_url, ws_label, L = wikisource_url_make (chapter); -- make a wikisource URL and label from a wikisource interwiki link if ws_url then ws_label = ws_label:gsub ('_', ' '); -- replace underscore separators with space characters chapter = ws_label; end if not utilities.is_set (chapter) then chapter = ''; -- to be safe for concatenation else if false == no_quotes then chapter = kern_quotes (chapter); -- if necessary, separate chapter title's leading and trailing quote marks from module provided quote marks chapter = utilities.wrap_style ('quoted-title', chapter); end end chapter = script_concatenate (chapter, script_chapter, script_chapter_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped if utilities.is_set (chapter_url) then chapter = external_link (chapter_url, chapter, chapter_url_source, access); -- adds bare_url_missing_title error if appropriate elseif ws_url then chapter = external_link (ws_url, chapter .. '&nbsp;', 'ws link in chapter'); -- adds bare_url_missing_title error if appropriate; space char to move icon away from chap text; TODO: better way to do this? chapter = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, chapter}); end if utilities.is_set (trans_chapter) then trans_chapter = utilities.wrap_style ('trans-quoted-title', trans_chapter); if utilities.is_set (chapter) then chapter = chapter .. ' ' .. trans_chapter; else -- here when trans_chapter without chapter or script-chapter chapter = trans_chapter; chapter_source = trans_chapter_source:match ('trans%-?(.+)'); -- when no chapter, get matching name from trans-<param> utilities.set_message ('err_trans_missing_title', {chapter_source}); end end return chapter; end --[[----------------< H A S _ I N V I S I B L E _ C H A R S >------------------- This function searches a parameter's value for non-printable or invisible characters. The search stops at the first match. This function will detect the visible replacement character when it is part of the Wikisource. Detects but ignores nowiki and math stripmarkers. Also detects other named stripmarkers (gallery, math, pre, ref) and identifies them with a slightly different error message. See also coins_cleanup(). Output of this function is an error message that identifies the character or the Unicode group, or the stripmarker that was detected along with its position (or, for multi-byte characters, the position of its first byte) in the parameter value. ]] local function has_invisible_chars (param, v) local position = ''; -- position of invisible char or starting position of stripmarker local capture; -- used by stripmarker detection to hold name of the stripmarker local stripmarker; -- boolean set true when a stripmarker is found capture = string.match (v, '[%w%p ]*'); -- test for values that are simple ASCII text and bypass other tests if true if capture == v then -- if same there are no Unicode characters return; end for _, invisible_char in ipairs (cfg.invisible_chars) do local char_name = invisible_char[1]; -- the character or group name local pattern = invisible_char[2]; -- the pattern used to find it position, _, capture = mw.ustring.find (v, pattern); -- see if the parameter value contains characters that match the pattern if position and (cfg.invisible_defs.zwj == capture) then -- if we found a zero-width joiner character if mw.ustring.find (v, cfg.indic_script) then -- it's ok if one of the Indic scripts position = nil; -- unset position elseif cfg.emoji_t[mw.ustring.codepoint (v, position+1)] then -- is zwj followed by a character listed in emoji{}? position = nil; -- unset position end end if position then if 'nowiki' == capture or 'math' == capture or -- nowiki and math stripmarkers (not an error condition) ('templatestyles' == capture and utilities.in_array (param, {'id', 'quote'})) then -- templatestyles stripmarker allowed in these parameters stripmarker = true; -- set a flag elseif true == stripmarker and cfg.invisible_defs.del == capture then -- because stripmakers begin and end with the delete char, assume that we've found one end of a stripmarker position = nil; -- unset else local err_msg; if capture and not (cfg.invisible_defs.del == capture or cfg.invisible_defs.zwj == capture) then err_msg = capture .. ' ' .. char_name; else err_msg = char_name .. ' ' .. 'character'; end utilities.set_message ('err_invisible_char', {err_msg, utilities.wrap_style ('parameter', param), position}); -- add error message return; -- and done with this parameter end end end end --[[-------------------< A R G U M E N T _ W R A P P E R >---------------------- Argument wrapper. This function provides support for argument mapping defined in the configuration file so that multiple names can be transparently aliased to single internal variable. ]] local function argument_wrapper ( args ) local origin = {}; return setmetatable({ ORIGIN = function ( self, k ) local dummy = self[k]; -- force the variable to be loaded. return origin[k]; end }, { __index = function ( tbl, k ) if origin[k] ~= nil then return nil; end local args, list, v = args, cfg.aliases[k]; if type( list ) == 'table' then v, origin[k] = utilities.select_one ( args, list, 'err_redundant_parameters' ); if origin[k] == nil then origin[k] = ''; -- Empty string, not nil end elseif list ~= nil then v, origin[k] = args[list], list; else -- maybe let through instead of raising an error? -- v, origin[k] = args[k], k; error( cfg.messages['unknown_argument_map'] .. ': ' .. k); end -- Empty strings, not nil; if v == nil then v = ''; origin[k] = ''; end tbl = rawset( tbl, k, v ); return v; end, }); end --[[--------------------------< N O W R A P _ D A T E >------------------------- When date is YYYY-MM-DD format wrap in nowrap span: <span ...>YYYY-MM-DD</span>. When date is DD MMMM YYYY or is MMMM DD, YYYY then wrap in nowrap span: <span ...>DD MMMM</span> YYYY or <span ...>MMMM DD,</span> YYYY DOES NOT yet support MMMM YYYY or any of the date ranges. ]] local function nowrap_date (date) local cap = ''; local cap2 = ''; if date:match("^%d%d%d%d%-%d%d%-%d%d$") then date = utilities.substitute (cfg.presentation['nowrap1'], date); elseif date:match("^%a+%s*%d%d?,%s+%d%d%d%d$") or date:match ("^%d%d?%s*%a+%s+%d%d%d%d$") then cap, cap2 = string.match (date, "^(.*)%s+(%d%d%d%d)$"); date = utilities.substitute (cfg.presentation['nowrap2'], {cap, cap2}); end return date; end --[[--------------------------< S E T _ T I T L E T Y P E >--------------------- This function sets default title types (equivalent to the citation including |type=<default value>) for those templates that have defaults. Also handles the special case where it is desirable to omit the title type from the rendered citation (|type=none). ]] local function set_titletype (cite_class, title_type) if utilities.is_set (title_type) then if 'none' == cfg.keywords_xlate[title_type] then title_type = ''; -- if |type=none then type parameter not displayed end return title_type; -- if |type= has been set to any other value use that value end return cfg.title_types [cite_class] or ''; -- set template's default title type; else empty string for concatenation end --[[--------------------------< S A F E _ J O I N >----------------------------- Joins a sequence of strings together while checking for duplicate separation characters. ]] local function safe_join( tbl, duplicate_char ) local f = {}; -- create a function table appropriate to type of 'duplicate character' if 1 == #duplicate_char then -- for single byte ASCII characters use the string library functions f.gsub = string.gsub f.match = string.match f.sub = string.sub else -- for multi-byte characters use the ustring library functions f.gsub = mw.ustring.gsub f.match = mw.ustring.match f.sub = mw.ustring.sub end local str = ''; -- the output string local comp = ''; -- what does 'comp' mean? local end_chr = ''; local trim; for _, value in ipairs( tbl ) do if value == nil then value = ''; end if str == '' then -- if output string is empty str = value; -- assign value to it (first time through the loop) elseif value ~= '' then if value:sub(1, 1) == '<' then -- special case of values enclosed in spans and other markup. comp = value:gsub( "%b<>", "" ); -- remove HTML markup (<span>string</span> -> string) else comp = value; end -- typically duplicate_char is sepc if f.sub(comp, 1, 1) == duplicate_char then -- is first character same as duplicate_char? why test first character? -- Because individual string segments often (always?) begin with terminal punct for the -- preceding segment: 'First element' .. 'sepc next element' .. etc.? trim = false; end_chr = f.sub(str, -1, -1); -- get the last character of the output string -- str = str .. "<HERE(enchr=" .. end_chr .. ")" -- debug stuff? if end_chr == duplicate_char then -- if same as separator str = f.sub(str, 1, -2); -- remove it elseif end_chr == "'" then -- if it might be wiki-markup if f.sub(str, -3, -1) == duplicate_char .. "''" then -- if last three chars of str are sepc'' str = f.sub(str, 1, -4) .. "''"; -- remove them and add back '' elseif f.sub(str, -5, -1) == duplicate_char .. "]]''" then -- if last five chars of str are sepc]]'' trim = true; -- why? why do this and next differently from previous? elseif f.sub(str, -4, -1) == duplicate_char .. "]''" then -- if last four chars of str are sepc]'' trim = true; -- same question end elseif end_chr == "]" then -- if it might be wiki-markup if f.sub(str, -3, -1) == duplicate_char .. "]]" then -- if last three chars of str are sepc]] wikilink trim = true; elseif f.sub(str, -3, -1) == duplicate_char .. '"]' then -- if last three chars of str are sepc"] quoted external link trim = true; elseif f.sub(str, -2, -1) == duplicate_char .. "]" then -- if last two chars of str are sepc] external link trim = true; elseif f.sub(str, -4, -1) == duplicate_char .. "'']" then -- normal case when |url=something & |title=Title. trim = true; end elseif end_chr == " " then -- if last char of output string is a space if f.sub(str, -2, -1) == duplicate_char .. " " then -- if last two chars of str are <sepc><space> str = f.sub(str, 1, -3); -- remove them both end end if trim then if value ~= comp then -- value does not equal comp when value contains HTML markup local dup2 = duplicate_char; if f.match(dup2, "%A" ) then dup2 = "%" .. dup2; end -- if duplicate_char not a letter then escape it value = f.gsub(value, "(%b<>)" .. dup2, "%1", 1 ) -- remove duplicate_char if it follows HTML markup else value = f.sub(value, 2, -1 ); -- remove duplicate_char when it is first character end end end str = str .. value; -- add it to the output string end end return str; end --[[--------------------------< I S _ S U F F I X >----------------------------- returns true if suffix is properly formed Jr, Sr, or ordinal in the range 1–9. Puncutation not allowed. ]] local function is_suffix (suffix) if utilities.in_array (suffix, {'Jr', 'Sr', 'Jnr', 'Snr', '1st', '2nd', '3rd'}) or suffix:match ('^%dth$') then return true; end return false; end --[[--------------------< I S _ G O O D _ V A N C _ N A M E >------------------- For Vancouver style, author/editor names are supposed to be rendered in Latin (read ASCII) characters. When a name uses characters that contain diacritical marks, those characters are to be converted to the corresponding Latin character. When a name is written using a non-Latin alphabet or logogram, that name is to be transliterated into Latin characters. The module doesn't do this so editors may/must. This test allows |first= and |last= names to contain any of the letters defined in the four Unicode Latin character sets [http://www.unicode.org/charts/PDF/U0000.pdf C0 Controls and Basic Latin] 0041–005A, 0061–007A [http://www.unicode.org/charts/PDF/U0080.pdf C1 Controls and Latin-1 Supplement] 00C0–00D6, 00D8–00F6, 00F8–00FF [http://www.unicode.org/charts/PDF/U0100.pdf Latin Extended-A] 0100–017F [http://www.unicode.org/charts/PDF/U0180.pdf Latin Extended-B] 0180–01BF, 01C4–024F |lastn= also allowed to contain hyphens, spaces, and apostrophes. (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/) |firstn= also allowed to contain hyphens, spaces, apostrophes, and periods This original test: if nil == mw.ustring.find (last, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%']*$") or nil == mw.ustring.find (first, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%'%.]+[2-6%a]*$") then was written outside of the code editor and pasted here because the code editor gets confused between character insertion point and cursor position. The test has been rewritten to use decimal character escape sequence for the individual bytes of the Unicode characters so that it is not necessary to use an external editor to maintain this code. \195\128-\195\150 – À-Ö (U+00C0–U+00D6 – C0 controls) \195\152-\195\182 – Ø-ö (U+00D8-U+00F6 – C0 controls) \195\184-\198\191 – ø-ƿ (U+00F8-U+01BF – C0 controls, Latin extended A & B) \199\132-\201\143 – DŽ-ɏ (U+01C4-U+024F – Latin extended B) ]] local function is_good_vanc_name (last, first, suffix, position) if not suffix then if first:find ('[,%s]') then -- when there is a space or comma, might be first name/initials + generational suffix first = first:match ('(.-)[,%s]+'); -- get name/initials suffix = first:match ('[,%s]+(.+)$'); -- get generational suffix end end if utilities.is_set (suffix) then if not is_suffix (suffix) then add_vanc_error (cfg.err_msg_supl.suffix, position); return false; -- not a name with an appropriate suffix end end if nil == mw.ustring.find (last, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%']*$") or nil == mw.ustring.find (first, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%'%.]*$") then add_vanc_error (cfg.err_msg_supl['non-Latin char'], position); return false; -- not a string of Latin characters; Vancouver requires Romanization end; return true; end --[[--------------------------< R E D U C E _ T O _ I N I T I A L S >------------------------------------------ Attempts to convert names to initials in support of |name-list-style=vanc. Names in |firstn= may be separated by spaces or hyphens, or for initials, a period. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35062/. Vancouver style requires family rank designations (Jr, II, III, etc.) to be rendered as Jr, 2nd, 3rd, etc. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35085/. This code only accepts and understands generational suffix in the Vancouver format because Roman numerals look like, and can be mistaken for, initials. This function uses ustring functions because firstname initials may be any of the Unicode Latin characters accepted by is_good_vanc_name (). ]] local function reduce_to_initials(first, position) local name, suffix = mw.ustring.match(first, "^(%u+) ([%dJS][%drndth]+)$"); if not name then -- if not initials and a suffix name = mw.ustring.match(first, "^(%u+)$"); -- is it just initials? end if name then -- if first is initials with or without suffix if 3 > mw.ustring.len (name) then -- if one or two initials if suffix then -- if there is a suffix if is_suffix (suffix) then -- is it legitimate? return first; -- one or two initials and a valid suffix so nothing to do else add_vanc_error (cfg.err_msg_supl.suffix, position); -- one or two initials with invalid suffix so error message return first; -- and return first unmolested end else return first; -- one or two initials without suffix; nothing to do end end end -- if here then name has 3 or more uppercase letters so treat them as a word local initials, names = {}, {}; -- tables to hold name parts and initials local i = 1; -- counter for number of initials names = mw.text.split (first, '[%s,]+'); -- split into a table of names and possible suffix while names[i] do -- loop through the table if 1 < i and names[i]:match ('[%dJS][%drndth]+%.?$') then -- if not the first name, and looks like a suffix (may have trailing dot) names[i] = names[i]:gsub ('%.', ''); -- remove terminal dot if present if is_suffix (names[i]) then -- if a legitimate suffix table.insert (initials, ' ' .. names[i]); -- add a separator space, insert at end of initials table break; -- and done because suffix must fall at the end of a name end -- no error message if not a suffix; possibly because of Romanization end if 3 > i then table.insert (initials, mw.ustring.sub(names[i], 1, 1)); -- insert the initial at end of initials table end i = i + 1; -- bump the counter end return table.concat(initials) -- Vancouver format does not include spaces. end --[[--------------------------< I N T E R W I K I _ P R E F I X E N _ G E T >---------------------------------- extract interwiki prefixen from <value>. Returns two one or two values: false – no prefixen nil – prefix exists but not recognized project prefix, language prefix – when value has either of: :<project>:<language>:<article> :<language>:<project>:<article> project prefix, nil – when <value> has only a known single-letter prefix nil, language prefix – when <value> has only a known language prefix accepts single-letter project prefixen: 'd' (wikidata), 's' (wikisource), and 'w' (wikipedia) prefixes; at this writing, the other single-letter prefixen (b (wikibook), c (commons), m (meta), n (wikinews), q (wikiquote), and v (wikiversity)) are not supported. ]] local function interwiki_prefixen_get (value, is_link) if not value:find (':%l+:') then -- if no prefix return false; -- abandon; boolean here to distinguish from nil fail returns later end local prefix_patterns_linked_t = { -- sequence of valid interwiki and inter project prefixen '^%[%[:([dsw]):(%l%l+):', -- wikilinked; project and language prefixes '^%[%[:(%l%l+):([dsw]):', -- wikilinked; language and project prefixes '^%[%[:([dsw]):', -- wikilinked; project prefix '^%[%[:(%l%l+):', -- wikilinked; language prefix } local prefix_patterns_unlinked_t = { -- sequence of valid interwiki and inter project prefixen '^:([dsw]):(%l%l+):', -- project and language prefixes '^:(%l%l+):([dsw]):', -- language and project prefixes '^:([dsw]):', -- project prefix '^:(%l%l+):', -- language prefix } local cap1, cap2; for _, pattern in ipairs ((is_link and prefix_patterns_linked_t) or prefix_patterns_unlinked_t) do cap1, cap2 = value:match (pattern); if cap1 then break; -- found a match so stop looking end end if cap1 and cap2 then -- when both then :project:language: or :language:project: (both forms allowed) if 1 == #cap1 then -- length == 1 then :project:language: if cfg.inter_wiki_map[cap2] then -- is language prefix in the interwiki map? return cap1, cap2; -- return interwiki project and interwiki language end else -- here when :language:project: if cfg.inter_wiki_map[cap1] then -- is language prefix in the interwiki map? return cap2, cap1; -- return interwiki project and interwiki language end end return nil; -- unknown interwiki language elseif not (cap1 or cap2) then -- both are nil? return nil; -- we got something that looks like a project prefix but isn't; return fail elseif 1 == #cap1 then -- here when one capture return cap1, nil; -- length is 1 so return project, nil language else -- here when one capture and its length it more than 1 if cfg.inter_wiki_map[cap1] then -- is language prefix in the interwiki map? return nil, cap1; -- return nil project, language end end end --[[--------------------------< L I S T _ P E O P L E >-------------------------- Formats a list of people (authors, contributors, editors, interviewers, translators) names in the list will be linked when |<name>-link= has a value |<name>-mask- does NOT have a value; masked names are presumed to have been rendered previously so should have been linked there when |<name>-mask=0, the associated name is not rendered ]] local function list_people (control, people, etal) local sep; local namesep; local format = control.format; local maximum = control.maximum; local name_list = {}; if 'vanc' == format then -- Vancouver-like name styling? sep = cfg.presentation['sep_nl_vanc']; -- name-list separator between names is a comma namesep = cfg.presentation['sep_name_vanc']; -- last/first separator is a space else sep = cfg.presentation['sep_nl']; -- name-list separator between names is a semicolon namesep = cfg.presentation['sep_name']; -- last/first separator is <comma><space> end if sep:sub (-1, -1) ~= " " then sep = sep .. " " end if utilities.is_set (maximum) and maximum < 1 then return "", 0; end -- returned 0 is for EditorCount; not used for other names for i, person in ipairs (people) do if utilities.is_set (person.last) then local mask = person.mask; local one; local sep_one = sep; if utilities.is_set (maximum) and i > maximum then etal = true; break; end if mask then local n = tonumber (mask); -- convert to a number if it can be converted; nil else if n then one = 0 ~= n and string.rep("&mdash;", n) or nil; -- make a string of (n > 0) mdashes, nil else, to replace name person.link = nil; -- don't create link to name if name is replaces with mdash string or has been set nil else one = mask; -- replace name with mask text (must include name-list separator) sep_one = " "; -- modify name-list separator end else one = person.last; -- get surname local first = person.first -- get given name if utilities.is_set (first) then if ("vanc" == format) then -- if Vancouver format one = one:gsub ('%.', ''); -- remove periods from surnames (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/) if not person.corporate and is_good_vanc_name (one, first, nil, i) then -- and name is all Latin characters; corporate authors not tested first = reduce_to_initials (first, i); -- attempt to convert first name(s) to initials end end one = one .. namesep .. first; end end if utilities.is_set (person.link) then one = utilities.make_wikilink (person.link, one); -- link author/editor end if one then -- if <one> has a value (name, mdash replacement, or mask text replacement) local proj, tag = interwiki_prefixen_get (one, true); -- get the interwiki prefixen if present if 'w' == proj and ('Wikipedia' == mw.site.namespaces.Project['name']) then proj = nil; -- for stuff like :w:de:<article>, :w is unnecessary TODO: maint cat? end if proj then proj = ({['d'] = 'Wikidata', ['s'] = 'Wikisource', ['w'] = 'Wikipedia'})[proj]; -- :w (wikipedia) for linking from a non-wikipedia project if proj then one = one .. utilities.wrap_style ('interproj', proj); -- add resized leading space, brackets, static text, language name tag = nil; -- unset; don't do both project and language end end if tag == cfg.this_wiki_code then tag = nil; -- stuff like :en:<article> at en.wiki is pointless TODO: maint cat? end if tag then local lang = cfg.lang_tag_remap[tag] or cfg.mw_languages_by_tag_t[tag]; if lang then -- error messaging done in extract_names() where we know parameter names one = one .. utilities.wrap_style ('interwiki', lang); -- add resized leading space, brackets, static text, language name end end table.insert (name_list, one); -- add it to the list of names table.insert (name_list, sep_one); -- add the proper name-list separator end end end local count = #name_list / 2; -- (number of names + number of separators) divided by 2 if 0 < count then if 1 < count and not etal then if 'amp' == format then name_list[#name_list-2] = " & "; -- replace last separator with ampersand text elseif 'and' == format then if 2 == count then name_list[#name_list-2] = cfg.presentation.sep_nl_and; -- replace last separator with 'and' text else name_list[#name_list-2] = cfg.presentation.sep_nl_end; -- replace last separator with '(sep) and' text end end end name_list[#name_list] = nil; -- erase the last separator end local result = table.concat (name_list); -- construct list if etal and utilities.is_set (result) then -- etal may be set by |display-authors=etal but we might not have a last-first list result = result .. sep .. cfg.messages['et al']; -- we've got a last-first list and etal so add et al. end return result, count; -- return name-list string and count of number of names (count used for editor names only) end --[[--------------------< M A K E _ C I T E R E F _ I D >----------------------- Generates a CITEREF anchor ID if we have at least one name or a date. Otherwise returns an empty string. namelist is one of the contributor-, author-, or editor-name lists chosen in that order. year is Year or anchor_year. ]] local function make_citeref_id (namelist, year) local names={}; -- a table for the one to four names and year for i,v in ipairs (namelist) do -- loop through the list and take up to the first four last names names[i] = v.last if i == 4 then break end -- if four then done end table.insert (names, year); -- add the year at the end local id = table.concat(names); -- concatenate names and year for CITEREF id if utilities.is_set (id) then -- if concatenation is not an empty string return "CITEREF" .. id; -- add the CITEREF portion else return ''; -- return an empty string; no reason to include CITEREF id in this citation end end --[[--------------------------< C I T E _ C L A S S _A T T R I B U T E _M A K E >------------------------------ construct <cite> tag class attribute for this citation. <cite_class> – config.CitationClass from calling template <mode> – value from |mode= parameter ]] local function cite_class_attribute_make (cite_class, mode) local class_t = {}; table.insert (class_t, 'citation'); -- required for blue highlight if 'citation' ~= cite_class then table.insert (class_t, cite_class); -- identify this template for user css table.insert (class_t, utilities.is_set (mode) and mode or 'cs1'); -- identify the citation style for user css or javascript else table.insert (class_t, utilities.is_set (mode) and mode or 'cs2'); -- identify the citation style for user css or javascript end for _, prop_key in ipairs (z.prop_keys_t) do table.insert (class_t, prop_key); -- identify various properties for user css or javascript end return table.concat (class_t, ' '); -- make a big string and done end --[[---------------------< N A M E _ H A S _ E T A L >-------------------------- Evaluates the content of name parameters (author, editor, etc.) for variations on the theme of et al. If found, the et al. is removed, a flag is set to true and the function returns the modified name and the flag. This function never sets the flag to false but returns its previous state because it may have been set by previous passes through this function or by the associated |display-<names>=etal parameter ]] local function name_has_etal (name, etal, nocat, param) if utilities.is_set (name) then -- name can be nil in which case just return local patterns = cfg.et_al_patterns; -- get patterns from configuration for _, pattern in ipairs (patterns) do -- loop through all of the patterns if name:match (pattern) then -- if this 'et al' pattern is found in name name = name:gsub (pattern, ''); -- remove the offending text etal = true; -- set flag (may have been set previously here or by |display-<names>=etal) if not nocat then -- no categorization for |vauthors= utilities.set_message ('err_etal', {param}); -- and set an error if not added end end end end return name, etal; end --[[---------------------< N A M E _ I S _ N U M E R I C >---------------------- Add maint cat when name parameter value does not contain letters. Does not catch mixed alphanumeric names so |last=A. Green (1922-1987) does not get caught in the current version of this test but |first=(1888) is caught. returns nothing ]] local function name_is_numeric (name, list_name) if utilities.is_set (name) then if mw.ustring.match (name, '^[%A]+$') then -- when name does not contain any letters utilities.set_message ('maint_numeric_names', cfg.special_case_translation [list_name]); -- add a maint cat for this template end end end --[[-----------------< N A M E _ H A S _ M U L T _ N A M E S >------------------ Evaluates the content of last/surname (authors etc.) parameters for multiple names. Multiple names are indicated if there is more than one comma or any "unescaped" semicolons. Escaped semicolons are ones used as part of selected HTML entities. If the condition is met, the function adds the multiple name maintenance category. Same test for first except that commas should not appear in given names (MOS:JR says that the generational suffix does not take a separator character). Titles, degrees, postnominals, affiliations, all normally comma separated don't belong in a citation. <name> – name parameter value <list_name> – AuthorList, EditorList, etc <limit> – number of allowed commas; 1 (default) for surnames; 0 for given names returns nothing ]] local function name_has_mult_names (name, list_name, limit) local _, commas, semicolons, nbsps; limit = limit and limit or 1; if utilities.is_set (name) then _, commas = name:gsub (',', ''); -- count the number of commas _, semicolons = name:gsub (';', ''); -- count the number of semicolons -- nbsps probably should be its own separate count rather than merged in -- some way with semicolons because Lua patterns do not support the -- grouping operator that regex does, which means there is no way to add -- more entities to escape except by adding more counts with the new -- entities _, nbsps = name:gsub ('&nbsp;',''); -- count nbsps -- There is exactly 1 semicolon per &nbsp; entity, so subtract nbsps -- from semicolons to 'escape' them. If additional entities are added, -- they also can be subtracted. if limit < commas or 0 < (semicolons - nbsps) then utilities.set_message ('maint_mult_names', cfg.special_case_translation [list_name]); -- add a maint message end end end --[=[-------------------------< I S _ G E N E R I C >---------------------------------------------------------- Compares values assigned to various parameters according to the string provided as <item> in the function call. <item> can have on of two values: 'generic_names' – for name-holding parameters: |last=, |first=, |editor-last=, etc 'generic_titles' – for |title= There are two types of generic tests. The 'accept' tests look for a pattern that should not be rejected by the 'reject' test. For example, |author=[[John Smith (author)|Smith, John]] would be rejected by the 'author' reject test. But piped wikilinks with 'author' disambiguation should not be rejected so the 'accept' test prevents that from happening. Accept tests are always performed before reject tests. Each of the 'accept' and 'reject' sequence tables hold tables for en.wiki (['en']) and local.wiki (['local']) that each can hold a test sequence table The sequence table holds, at index [1], a test pattern, and, at index [2], a boolean control value. The control value tells string.find() or mw.ustring.find() to do plain-text search (true) or a pattern search (false). The intent of all this complexity is to make these searches as fast as possible so that we don't run out of processing time on very large articles. Returns true when a reject test finds the pattern or string false when an accept test finds the pattern or string nil else ]=] local function is_generic (item, value, wiki) local test_val; local str_lower = { -- use string.lower() for en.wiki (['en']) and use mw.ustring.lower() or local.wiki (['local']) ['en'] = string.lower, ['local'] = mw.ustring.lower, } local str_find = { -- use string.find() for en.wiki (['en']) and use mw.ustring.find() or local.wiki (['local']) ['en'] = string.find, ['local'] = mw.ustring.find, } local function test (val, test_t, wiki) -- local function to do the testing; <wiki> selects lower() and find() functions val = test_t[2] and str_lower[wiki](value) or val; -- when <test_t[2]> set to 'true', plaintext search using lowercase value return str_find[wiki] (val, test_t[1], 1, test_t[2]); -- return nil when not found or matched end local test_types_t = {'accept', 'reject'}; -- test accept patterns first, then reject patterns local wikis_t = {'en', 'local'}; -- do tests for each of these keys; en.wiki first, local.wiki second for _, test_type in ipairs (test_types_t) do -- for each test type for _, generic_value in pairs (cfg.special_case_translation[item][test_type]) do -- spin through the list of generic value fragments to accept or reject for _, wiki in ipairs (wikis_t) do if generic_value[wiki] then if test (value, generic_value[wiki], wiki) then -- go do the test return ('reject' == test_type); -- param value rejected, return true; false else end end end end end end --[[--------------------------< N A M E _ I S _ G E N E R I C >------------------------------------------------ calls is_generic() to determine if <name> is a 'generic name' listed in cfg.generic_names; <name_alias> is the parameter name used in error messaging ]] local function name_is_generic (name, name_alias) if not added_generic_name_errs and is_generic ('generic_names', name) then utilities.set_message ('err_generic_name', name_alias); -- set an error message added_generic_name_errs = true; end end --[[--------------------------< N A M E _ C H E C K S >-------------------------------------------------------- This function calls various name checking functions used to validate the content of the various name-holding parameters. ]] local function name_checks (last, first, list_name, last_alias, first_alias) local accept_name; if utilities.is_set (last) then last, accept_name = utilities.has_accept_as_written (last); -- remove accept-this-as-written markup when it wraps all of <last> if not accept_name then -- <last> not wrapped in accept-as-written markup name_has_mult_names (last, list_name); -- check for multiple names in the parameter name_is_numeric (last, list_name); -- check for names that are composed of digits and punctuation name_is_generic (last, last_alias); -- check for names found in the generic names list end end if utilities.is_set (first) then first, accept_name = utilities.has_accept_as_written (first); -- remove accept-this-as-written markup when it wraps all of <first> if not accept_name then -- <first> not wrapped in accept-as-written markup name_has_mult_names (first, list_name, 0); -- check for multiple names in the parameter; 0 is number of allowed commas in a given name name_is_numeric (first, list_name); -- check for names that are composed of digits and punctuation name_is_generic (first, first_alias); -- check for names found in the generic names list end local wl_type, D = utilities.is_wikilink (first); if 0 ~= wl_type then first = D; utilities.set_message ('err_bad_paramlink', first_alias); end end return last, first; -- done end --[[----------------------< E X T R A C T _ N A M E S >------------------------- Gets name list from the input arguments Searches through args in sequential order to find |lastn= and |firstn= parameters (or their aliases), and their matching link and mask parameters. Stops searching when both |lastn= and |firstn= are not found in args after two sequential attempts: found |last1=, |last2=, and |last3= but doesn't find |last4= and |last5= then the search is done. This function emits an error message when there is a |firstn= without a matching |lastn=. When there are 'holes' in the list of last names, |last1= and |last3= are present but |last2= is missing, an error message is emitted. |lastn= is not required to have a matching |firstn=. When an author or editor parameter contains some form of 'et al.', the 'et al.' is stripped from the parameter and a flag (etal) returned that will cause list_people() to add the static 'et al.' text from Module:Citation/CS1/Configuration. This keeps 'et al.' out of the template's metadata. When this occurs, an error is emitted. ]] local function extract_names(args, list_name) local names = {}; -- table of names local last; -- individual name components local first; local link; local mask; local i = 1; -- loop counter/indexer local n = 1; -- output table indexer local count = 0; -- used to count the number of times we haven't found a |last= (or alias for authors, |editor-last or alias for editors) local etal = false; -- return value set to true when we find some form of et al. in an author parameter local last_alias, first_alias, link_alias; -- selected parameter aliases used in error messaging while true do last, last_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'err_redundant_parameters', i ); -- search through args for name components beginning at 1 first, first_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'err_redundant_parameters', i ); link, link_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i ); mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i ); if last then -- error check |lastn= alias for unknown interwiki link prefix; done here because this is where we have the parameter name local project, language = interwiki_prefixen_get (last, true); -- true because we expect interwiki links in |lastn= to be wikilinked if nil == project and nil == language then -- when both are nil utilities.set_message ('err_bad_paramlink', last_alias); -- not known, emit an error message -- TODO: err_bad_interwiki? last = utilities.remove_wiki_link (last); -- remove wikilink markup; show display value only end end if link then -- error check |linkn= alias for unknown interwiki link prefix local project, language = interwiki_prefixen_get (link, false); -- false because wiki links in |author-linkn= is an error if nil == project and nil == language then -- when both are nil utilities.set_message ('err_bad_paramlink', link_alias); -- not known, emit an error message -- TODO: err_bad_interwiki? link = nil; -- unset so we don't link link_alias = nil; end end last, etal = name_has_etal (last, etal, false, last_alias); -- find and remove variations on et al. first, etal = name_has_etal (first, etal, false, first_alias); -- find and remove variations on et al. last, first = name_checks (last, first, list_name, last_alias, first_alias); -- multiple names, extraneous annotation, etc. checks if first and not last then -- if there is a firstn without a matching lastn local alias = first_alias:find ('given', 1, true) and 'given' or 'first'; -- get first or given form of the alias utilities.set_message ('err_first_missing_last', { first_alias, -- param name of alias missing its mate first_alias:gsub (alias, {['first'] = 'last', ['given'] = 'surname'}), -- make param name appropriate to the alias form }); -- add this error message elseif not first and not last then -- if both firstn and lastn aren't found, are we done? count = count + 1; -- number of times we haven't found last and first if 2 <= count then -- two missing names and we give up break; -- normal exit or there is a two-name hole in the list; can't tell which end else -- we have last with or without a first local result; link = link_title_ok (link, link_alias, last, last_alias); -- check for improper wiki-markup if first then link = link_title_ok (link, link_alias, first, first_alias); -- check for improper wiki-markup end names[n] = {last = last, first = first, link = link, mask = mask, corporate = false}; -- add this name to our names list (corporate for |vauthors= only) n = n + 1; -- point to next location in the names table if 1 == count then -- if the previous name was missing utilities.set_message ('err_missing_name', {list_name:match ("(%w+)List"):lower(), i - 1}); -- add this error message end count = 0; -- reset the counter, we're looking for two consecutive missing names end i = i + 1; -- point to next args location end return names, etal; -- all done, return our list of names and the etal flag end --[[--------------------------< N A M E _ T A G _ G E T >------------------------------------------------------ attempt to decode |language=<lang_param> and return language name and matching tag; nil else. This function looks for: <lang_param> as a tag in cfg.lang_tag_remap{} <lang_param> as a name in cfg.lang_name_remap{} <lang_param> as a name in cfg.mw_languages_by_name_t <lang_param> as a tag in cfg.mw_languages_by_tag_t when those fail, presume that <lang_param> is an IETF-like tag that MediaWiki does not recognize. Strip all script, region, variant, whatever subtags from <lang_param> to leave just a two or three character language tag and look for the new <lang_param> in cfg.mw_languages_by_tag_t{} on success, returns name (in properly capitalized form) and matching tag (in lowercase); on failure returns nil ]] local function name_tag_get (lang_param) local lang_param_lc = mw.ustring.lower (lang_param); -- use lowercase as an index into the various tables local name; local tag; name = cfg.lang_tag_remap[lang_param_lc]; -- assume <lang_param_lc> is a tag; attempt to get remapped language name if name then -- when <name>, <lang_param> is a tag for a remapped language name return name, lang_param_lc; -- so return <name> from remap and <lang_param_lc> end tag = lang_param_lc:match ('^(%a%a%a?)%-.*'); -- still assuming that <lang_param_lc> is a tag; strip script, region, variant subtags name = cfg.lang_tag_remap[tag]; -- attempt to get remapped language name with language subtag only if name then -- when <name>, <tag> is a tag for a remapped language name return name, tag; -- so return <name> from remap and <tag> end if cfg.lang_name_remap[lang_param_lc] then -- not a tag, assume <lang_param_lc> is a name; attempt to get remapped language tag return cfg.lang_name_remap[lang_param_lc][1], cfg.lang_name_remap[lang_param_lc][2]; -- for this <lang_param_lc>, return a (possibly) new name and appropriate tag end tag = cfg.mw_languages_by_name_t[lang_param_lc]; -- assume that <lang_param_lc> is a language name; attempt to get its matching tag if tag then return cfg.mw_languages_by_tag_t[tag], tag; -- <lang_param_lc> is a name so return the name from the table and <tag> end name = cfg.mw_languages_by_tag_t[lang_param_lc]; -- assume that <lang_param_lc> is a tag; attempt to get its matching language name if name then return name, lang_param_lc; -- <lang_param_lc> is a tag so return it and <name> end tag = lang_param_lc:match ('^(%a%a%a?)%-.*'); -- is <lang_param_lc> an IETF-like tag that MediaWiki doesn't recognize? <tag> gets the language subtag; nil else if tag then name = cfg.mw_languages_by_tag_t[tag]; -- attempt to get a language name using the shortened <tag> if name then return name, tag; -- <lang_param_lc> is an unrecognized IETF-like tag so return <name> and language subtag end end end --[[-------------------< L A N G U A G E _ P A R A M E T E R >------------------ Gets language name from a provided two- or three-character ISO 639 code. If a code is recognized by MediaWiki, use the returned name; if not, then use the value that was provided with the language parameter. When |language= contains a recognized language (either code or name), the page is assigned to the category for that code: Category:Norwegian-language sources (no). For valid three-character code languages, the page is assigned to the single category for '639-2' codes: Category:CS1 ISO 639-2 language sources. Languages that are the same as the local wiki are not categorized. MediaWiki does not recognize three-character equivalents of two-character codes: code 'ar' is recognized but code 'ara' is not. This function supports multiple languages in the form |language=nb, French, th where the language names or codes are separated from each other by commas with optional space characters. ]] local function language_parameter (lang) local tag; -- some form of IETF-like language tag; language subtag with optional region, sript, vatiant, etc subtags local lang_subtag; -- ve populates |language= with mostly unecessary region subtags the MediaWiki does not recognize; this is the base language subtag local name; -- the language name local language_list = {}; -- table of language names to be rendered local names_t = {}; -- table made from the value assigned to |language= local this_wiki_name = mw.language.fetchLanguageName (cfg.this_wiki_code, cfg.this_wiki_code); -- get this wiki's language name names_t = mw.text.split (lang, '%s*,%s*'); -- names should be a comma separated list for _, lang in ipairs (names_t) do -- reuse lang here because we don't yet know if lang is a language name or a language tag name, tag = name_tag_get (lang); -- attempt to get name/tag pair for <lang>; <name> has proper capitalization; <tag> is lowercase if utilities.is_set (tag) then lang_subtag = tag:gsub ('^(%a%a%a?)%-.*', '%1'); -- for categorization, strip any IETF-like tags from language tag if cfg.this_wiki_code ~= lang_subtag then -- when the language is not the same as this wiki's language if 2 == lang_subtag:len() then -- and is a two-character tag utilities.add_prop_cat ('foreign-lang-source', {name, tag}, lang_subtag); -- categorize it; tag appended to allow for multiple language categorization else -- or is a recognized language (but has a three-character tag) utilities.add_prop_cat ('foreign-lang-source-2', {lang_subtag}, lang_subtag); -- categorize it differently TODO: support multiple three-character tag categories per cs1|2 template? end elseif cfg.local_lang_cat_enable then -- when the language and this wiki's language are the same and categorization is enabled utilities.add_prop_cat ('local-lang-source', {name, lang_subtag}); -- categorize it end else name = lang; -- return whatever <lang> has so that we show something utilities.set_message ('maint_unknown_lang'); -- add maint category if not already added end table.insert (language_list, name); name = ''; -- so we can reuse it end name = utilities.make_sep_list (#language_list, language_list); if (1 == #language_list) and (lang_subtag == cfg.this_wiki_code) then -- when only one language, find lang name in this wiki lang name; for |language=en-us, 'English' in 'American English' return ''; -- if one language and that language is this wiki's return an empty string (no annotation) end return (" " .. wrap_msg ('language', name)); -- otherwise wrap with '(in ...)' --[[ TODO: should only return blank or name rather than full list so we can clean up the bunched parenthetical elements Language, Type, Format ]] end --[[-----------------------< S E T _ C S _ S T Y L E >-------------------------- Gets the default CS style configuration for the given mode. Returns default separator and either postscript as passed in or the default. In CS1, the default postscript and separator are '.'. In CS2, the default postscript is the empty string and the default separator is ','. ]] local function set_cs_style (postscript, mode) if utilities.is_set(postscript) then -- emit a maintenance message if user postscript is the default cs1 postscript -- we catch the opposite case for cs2 in set_style if mode == 'cs1' and postscript == cfg.presentation['ps_' .. mode] then utilities.set_message ('maint_postscript'); end else postscript = cfg.presentation['ps_' .. mode]; end return cfg.presentation['sep_' .. mode], postscript; end --[[--------------------------< S E T _ S T Y L E >----------------------------- Sets the separator and postscript styles. Checks the |mode= first and the #invoke CitationClass second. Removes the postscript if postscript == none. ]] local function set_style (mode, postscript, cite_class) local sep; if 'cs2' == mode then sep, postscript = set_cs_style (postscript, 'cs2'); elseif 'cs1' == mode then sep, postscript = set_cs_style (postscript, 'cs1'); elseif 'citation' == cite_class then sep, postscript = set_cs_style (postscript, 'cs2'); else sep, postscript = set_cs_style (postscript, 'cs1'); end if cfg.keywords_xlate[postscript:lower()] == 'none' then -- emit a maintenance message if user postscript is the default cs2 postscript -- we catch the opposite case for cs1 in set_cs_style if 'cs2' == mode or 'citation' == cite_class then utilities.set_message ('maint_postscript'); end postscript = ''; end return sep, postscript end --[=[-------------------------< I S _ P D F >----------------------------------- Determines if a URL has the file extension that is one of the PDF file extensions used by [[MediaWiki:Common.css]] when applying the PDF icon to external links. returns true if file extension is one of the recognized extensions, else false ]=] local function is_pdf (url) return url:match ('%.pdf$') or url:match ('%.PDF$') or url:match ('%.pdf[%?#]') or url:match ('%.PDF[%?#]') or url:match ('%.PDF&#035') or url:match ('%.pdf&#035'); end --[[--------------------------< S T Y L E _ F O R M A T >----------------------- Applies CSS style to |format=, |chapter-format=, etc. Also emits an error message if the format parameter does not have a matching URL parameter. If the format parameter is not set and the URL contains a file extension that is recognized as a PDF document by MediaWiki's commons.css, this code will set the format parameter to (PDF) with the appropriate styling. ]] local function style_format (format, url, fmt_param, url_param) if utilities.is_set (format) then format = utilities.wrap_style ('format', format); -- add leading space, parentheses, resize if not utilities.is_set (url) then utilities.set_message ('err_format_missing_url', {fmt_param, url_param}); -- add an error message end elseif is_pdf (url) then -- format is not set so if URL is a PDF file then format = utilities.wrap_style ('format', 'PDF'); -- set format to PDF else format = ''; -- empty string for concatenation end return format; end --[[---------------------< G E T _ D I S P L A Y _ N A M E S >------------------ Returns a number that defines the number of names displayed for author and editor name lists and a Boolean flag to indicate when et al. should be appended to the name list. When the value assigned to |display-xxxxors= is a number greater than or equal to zero, return the number and the previous state of the 'etal' flag (false by default but may have been set to true if the name list contains some variant of the text 'et al.'). When the value assigned to |display-xxxxors= is the keyword 'etal', return a number that is one greater than the number of authors in the list and set the 'etal' flag true. This will cause the list_people() to display all of the names in the name list followed by 'et al.' In all other cases, returns nil and the previous state of the 'etal' flag. inputs: max: A['DisplayAuthors'] or A['DisplayEditors'], etc; a number or some flavor of etal count: #a or #e list_name: 'authors' or 'editors' etal: author_etal or editor_etal This function sets an error message when |display-xxxxors= value greater than or equal to number of names but not when <max> comes from {{cs1 config}} global settings. When using global settings, <param> is set to the keyword 'cs1 config' which is used to supress the normal error. Error is suppressed because it is to be expected that some citations in an article will have the same or fewer names that the limit specified in {{cs1 config}}. ]] local function get_display_names (max, count, list_name, etal, param) if utilities.is_set (max) then if 'etal' == max:lower():gsub("[ '%.]", '') then -- the :gsub() portion makes 'etal' from a variety of 'et al.' spellings and stylings max = count + 1; -- number of authors + 1 so display all author name plus et al. etal = true; -- overrides value set by extract_names() elseif max:match ('^%d+$') then -- if is a string of numbers max = tonumber (max); -- make it a number if (max >= count) and ('cs1 config' ~= param) then -- error when local |display-xxxxors= value greater than or equal to number of names; not an error when using global setting utilities.set_message ('err_disp_name', {param, max}); -- add error message max = nil; end else -- not a valid keyword or number utilities.set_message ('err_disp_name', {param, max}); -- add error message max = nil; -- unset; as if |display-xxxxors= had not been set end end return max, etal; end --[[----------< E X T R A _ T E X T _ I N _ P A G E _ C H E C K >--------------- Adds error if |page=, |pages=, |quote-page=, |quote-pages= has what appears to be some form of p. or pp. abbreviation in the first characters of the parameter content. check page for extraneous p, p., pp, pp., pg, pg. at start of parameter value: good pattern: '^P[^%.P%l]' matches when page begins PX or P# but not Px where x and X are letters and # is a digit bad pattern: '^[Pp][PpGg]' matches when page begins pp, pP, Pp, PP, pg, pG, Pg, PG ]] local function extra_text_in_page_check (val, name) if not val:match (cfg.vol_iss_pg_patterns.good_ppattern) then for _, pattern in ipairs (cfg.vol_iss_pg_patterns.bad_ppatterns) do -- spin through the selected sequence table of patterns if val:match (pattern) then -- when a match, error so utilities.set_message ('err_extra_text_pages', name); -- add error message return; -- and done end end end end --[[--------------------------< E X T R A _ T E X T _ I N _ V O L _ I S S _ C H E C K >------------------------ Adds error if |volume= or |issue= has what appears to be some form of redundant 'type' indicator. For |volume=: 'V.', or 'Vol.' (with or without the dot) abbreviations or 'Volume' in the first characters of the parameter content (all case insensitive). 'V' and 'v' (without the dot) are presumed to be roman numerals so are allowed. For |issue=: 'No.', 'I.', 'Iss.' (with or without the dot) abbreviations, or 'Issue' in the first characters of the parameter content (all case insensitive). Single character values ('v', 'i', 'n') allowed when not followed by separator character ('.', ':', '=', or whitespace character) – param values are trimmed of whitespace by MediaWiki before delivered to the module. <val> is |volume= or |issue= parameter value <name> is |volume= or |issue= parameter name for error message <selector> is 'v' for |volume=, 'i' for |issue= sets error message on failure; returns nothing ]] local function extra_text_in_vol_iss_check (val, name, selector) if not utilities.is_set (val) then return; end local patterns = 'v' == selector and cfg.vol_iss_pg_patterns.vpatterns or cfg.vol_iss_pg_patterns.ipatterns; local handler = 'v' == selector and 'err_extra_text_volume' or 'err_extra_text_issue'; val = val:lower(); -- force parameter value to lower case for _, pattern in ipairs (patterns) do -- spin through the selected sequence table of patterns if val:match (pattern) then -- when a match, error so utilities.set_message (handler, name); -- add error message return; -- and done end end end --[=[-------------------------< G E T _ V _ N A M E _ T A B L E >---------------------------------------------- split apart a |vauthors= or |veditors= parameter. This function allows for corporate names, wrapped in doubled parentheses to also have commas; in the old version of the code, the doubled parentheses were included in the rendered citation and in the metadata. Individual author names may be wikilinked |vauthors=Jones AB, [[E. B. White|White EB]], ((Black, Brown, and Co.)) ]=] local function get_v_name_table (vparam, output_table, output_link_table) local name_table = mw.text.split(vparam, "%s*,%s*"); -- names are separated by commas local wl_type, label, link; -- wl_type not used here; just a placeholder local i = 1; while name_table[i] do if name_table[i]:match ('^%(%(.*[^%)][^%)]$') then -- first segment of corporate with one or more commas; this segment has the opening doubled parentheses local name = name_table[i]; i = i + 1; -- bump indexer to next segment while name_table[i] do name = name .. ', ' .. name_table[i]; -- concatenate with previous segments if name_table[i]:match ('^.*%)%)$') then -- if this table member has the closing doubled parentheses break; -- and done reassembling so end i = i + 1; -- bump indexer end table.insert (output_table, name); -- and add corporate name to the output table table.insert (output_link_table, ''); -- no wikilink else wl_type, label, link = utilities.is_wikilink (name_table[i]); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]] table.insert (output_table, label); -- add this name if 1 == wl_type then table.insert (output_link_table, label); -- simple wikilink [[D]] else table.insert (output_link_table, link); -- no wikilink or [[L|D]]; add this link if there is one, else empty string end end i = i + 1; end return output_table; end --[[--------------------------< P A R S E _ V A U T H O R S _ V E D I T O R S >-------------------------------- This function extracts author / editor names from |vauthors= or |veditors= and finds matching |xxxxor-maskn= and |xxxxor-linkn= in args. It then returns a table of assembled names just as extract_names() does. Author / editor names in |vauthors= or |veditors= must be in Vancouver system style. Corporate or institutional names may sometimes be required and because such names will often fail the is_good_vanc_name() and other format compliance tests, are wrapped in doubled parentheses ((corporate name)) to suppress the format tests. Supports generational suffixes Jr, 2nd, 3rd, 4th–6th. This function sets the Vancouver error when a required comma is missing and when there is a space between an author's initials. ]] local function parse_vauthors_veditors (args, vparam, list_name) local names = {}; -- table of names assembled from |vauthors=, |author-maskn=, |author-linkn= local v_name_table = {}; local v_link_table = {}; -- when name is wikilinked, targets go in this table local etal = false; -- return value set to true when we find some form of et al. vauthors parameter local last, first, link, mask, suffix; local corporate = false; vparam, etal = name_has_etal (vparam, etal, true); -- find and remove variations on et al. do not categorize (do it here because et al. might have a period) v_name_table = get_v_name_table (vparam, v_name_table, v_link_table); -- names are separated by commas for i, v_name in ipairs(v_name_table) do first = ''; -- set to empty string for concatenation and because it may have been set for previous author/editor local accept_name; v_name, accept_name = utilities.has_accept_as_written (v_name); -- remove accept-this-as-written markup when it wraps all of <v_name> if accept_name then last = v_name; corporate = true; -- flag used in list_people() elseif string.find(v_name, "%s") then if v_name:find('[;%.]') then -- look for commonly occurring punctuation characters; add_vanc_error (cfg.err_msg_supl.punctuation, i); end local lastfirstTable = {} lastfirstTable = mw.text.split(v_name, "%s+") first = table.remove(lastfirstTable); -- removes and returns value of last element in table which should be initials or generational suffix if not mw.ustring.match (first, '^%u+$') then -- mw.ustring here so that later we will catch non-Latin characters suffix = first; -- not initials so assume that whatever we got is a generational suffix first = table.remove(lastfirstTable); -- get what should be the initials from the table end last = table.concat(lastfirstTable, ' ') -- returns a string that is the concatenation of all other names that are not initials and generational suffix if not utilities.is_set (last) then first = ''; -- unset last = v_name; -- last empty because something wrong with first add_vanc_error (cfg.err_msg_supl.name, i); end if mw.ustring.match (last, '%a+%s+%u+%s+%a+') then add_vanc_error (cfg.err_msg_supl['missing comma'], i); -- matches last II last; the case when a comma is missing end if mw.ustring.match (v_name, ' %u %u$') then -- this test is in the wrong place TODO: move or replace with a more appropriate test add_vanc_error (cfg.err_msg_supl.initials, i); -- matches a space between two initials end else last = v_name; -- last name or single corporate name? Doesn't support multiword corporate names? do we need this? end if utilities.is_set (first) then if not mw.ustring.match (first, "^%u?%u$") then -- first shall contain one or two upper-case letters, nothing else add_vanc_error (cfg.err_msg_supl.initials, i); -- too many initials; mixed case initials (which may be ok Romanization); hyphenated initials end is_good_vanc_name (last, first, suffix, i); -- check first and last before restoring the suffix which may have a non-Latin digit if utilities.is_set (suffix) then first = first .. ' ' .. suffix; -- if there was a suffix concatenate with the initials suffix = ''; -- unset so we don't add this suffix to all subsequent names end else if not corporate then is_good_vanc_name (last, '', nil, i); end end link = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i ) or v_link_table[i]; mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i ); names[i] = {last = last, first = first, link = link, mask = mask, corporate = corporate}; -- add this assembled name to our names list end return names, etal; -- all done, return our list of names end --[[--------------------------< S E L E C T _ A U T H O R _ E D I T O R _ S O U R C E >------------------------ Select one of |authors=, |authorn= / |lastn / firstn=, or |vauthors= as the source of the author name list or select one of |editorn= / editor-lastn= / |editor-firstn= or |veditors= as the source of the editor name list. Only one of these appropriate three will be used. The hierarchy is: |authorn= (and aliases) highest and |authors= lowest; |editorn= (and aliases) highest and |veditors= lowest (support for |editors= withdrawn) When looking for |authorn= / |editorn= parameters, test |xxxxor1= and |xxxxor2= (and all of their aliases); stops after the second test which mimicks the test used in extract_names() when looking for a hole in the author name list. There may be a better way to do this, I just haven't discovered what that way is. Emits an error message when more than one xxxxor name source is provided. In this function, vxxxxors = vauthors or veditors; xxxxors = authors as appropriate. ]] local function select_author_editor_source (vxxxxors, xxxxors, args, list_name) local lastfirst = false; if utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 1 ) or -- do this twice in case we have a |first1= without a |last1=; this ... utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 1 ) or -- ... also catches the case where |first= is used with |vauthors= utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 2 ) or utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 2 ) then lastfirst = true; end if (utilities.is_set (vxxxxors) and true == lastfirst) or -- these are the three error conditions (utilities.is_set (vxxxxors) and utilities.is_set (xxxxors)) or (true == lastfirst and utilities.is_set (xxxxors)) then local err_name; if 'AuthorList' == list_name then -- figure out which name should be used in error message err_name = 'author'; else err_name = 'editor'; end utilities.set_message ('err_redundant_parameters', err_name .. '-name-list parameters'); -- add error message end if true == lastfirst then return 1 end; -- return a number indicating which author name source to use if utilities.is_set (vxxxxors) then return 2 end; if utilities.is_set (xxxxors) then return 3 end; return 1; -- no authors so return 1; this allows missing author name test to run in case there is a first without last end --[[--------------------------< I S _ V A L I D _ P A R A M E T E R _ V A L U E >------------------------------ This function is used to validate a parameter's assigned value for those parameters that have only a limited number of allowable values (yes, y, true, live, dead, etc.). When the parameter value has not been assigned a value (missing or empty in the source template) the function returns the value specified by ret_val. If the parameter value is one of the list of allowed values returns the translated value; else, emits an error message and returns the value specified by ret_val. TODO: explain <invert> ]] local function is_valid_parameter_value (value, name, possible, ret_val, invert) if not utilities.is_set (value) then return ret_val; -- an empty parameter is ok end if (not invert and utilities.in_array (value, possible)) then -- normal; <value> is in <possible> table return cfg.keywords_xlate[value]; -- return translation of parameter keyword elseif invert and not utilities.in_array (value, possible) then -- invert; <value> is not in <possible> table return value; -- return <value> as it is else utilities.set_message ('err_invalid_param_val', {name, value}); -- not an allowed value so add error message return ret_val; end end --[[--------------------------< T E R M I N A T E _ N A M E _ L I S T >---------------------------------------- This function terminates a name list (author, contributor, editor) with a separator character (sepc) and a space when the last character is not a sepc character or when the last three characters are not sepc followed by two closing square brackets (close of a wikilink). When either of these is true, the name_list is terminated with a single space character. ]] local function terminate_name_list (name_list, sepc) if (string.sub (name_list, -3, -1) == sepc .. '. ') then -- if already properly terminated return name_list; -- just return the name list elseif (string.sub (name_list, -1, -1) == sepc) or (string.sub (name_list, -3, -1) == sepc .. ']]') then -- if last name in list ends with sepc char return name_list .. " "; -- don't add another else return name_list .. sepc .. ' '; -- otherwise terminate the name list end end --[[-------------------------< F O R M A T _ V O L U M E _ I S S U E >----------------------------------------- returns the concatenation of the formatted volume and issue (or journal article number) parameters as a single string; or formatted volume or formatted issue, or an empty string if neither are set. ]] local function format_volume_issue (volume, issue, article, cite_class, origin, sepc, lower) if not utilities.is_set (volume) and not utilities.is_set (issue) and not utilities.is_set (article) then return ''; end -- same condition as in format_pages_sheets() local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin); local is_numeric_vol = volume and (volume:match ('^[MDCLXVI]+$') or volume:match ('^%d+$')); -- is only uppercase roman numerals or only digits? local is_long_vol = volume and (4 < mw.ustring.len(volume)); -- is |volume= value longer than 4 characters? if volume and (not is_numeric_vol and is_long_vol) then -- when not all digits or Roman numerals, is |volume= longer than 4 characters? utilities.add_prop_cat ('long-vol'); -- yes, add properties cat end if is_journal then -- journal-style formatting local vol = ''; if utilities.is_set (volume) then if is_numeric_vol then -- |volume= value all digits or all uppercase Roman numerals? vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, volume}); -- render in bold face elseif is_long_vol then -- not all digits or Roman numerals; longer than 4 characters? vol = utilities.substitute (cfg.messages['j-vol'], {sepc, utilities.hyphen_to_dash (volume)}); -- not bold else -- four or fewer characters vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, utilities.hyphen_to_dash (volume)}); -- bold end end vol = vol .. (utilities.is_set (issue) and utilities.substitute (cfg.messages['j-issue'], issue) or '') vol = vol .. (utilities.is_set (article) and utilities.substitute (cfg.messages['j-article-num'], article) or '') return vol; end if 'podcast' == cite_class and utilities.is_set (issue) then return wrap_msg ('issue', {sepc, issue}, lower); end if 'conference' == cite_class and utilities.is_set (article) then -- |article-number= supported only in journal and conference cites if utilities.is_set (volume) and utilities.is_set (article) then -- both volume and article number return wrap_msg ('vol-art', {sepc, utilities.hyphen_to_dash (volume), article}, lower); elseif utilities.is_set (article) then -- article number alone; when volume alone, handled below return wrap_msg ('art', {sepc, article}, lower); end end -- all other types of citation if utilities.is_set (volume) and utilities.is_set (issue) then return wrap_msg ('vol-no', {sepc, utilities.hyphen_to_dash (volume), issue}, lower); elseif utilities.is_set (volume) then return wrap_msg ('vol', {sepc, utilities.hyphen_to_dash (volume)}, lower); else return wrap_msg ('issue', {sepc, issue}, lower); end end --[[-------------------------< F O R M A T _ P A G E S _ S H E E T S >----------------------------------------- adds static text to one of |page(s)= or |sheet(s)= values and returns it with all of the others set to empty strings. The return order is: page, pages, sheet, sheets Singular has priority over plural when both are provided. ]] local function format_pages_sheets (page, pages, sheet, sheets, cite_class, origin, sepc, nopp, lower) if 'map' == cite_class then -- only cite map supports sheet(s) as in-source locators if utilities.is_set (sheet) then if 'journal' == origin then return '', '', wrap_msg ('j-sheet', sheet, lower), ''; else return '', '', wrap_msg ('sheet', {sepc, sheet}, lower), ''; end elseif utilities.is_set (sheets) then if 'journal' == origin then return '', '', '', wrap_msg ('j-sheets', sheets, lower); else return '', '', '', wrap_msg ('sheets', {sepc, sheets}, lower); end end end local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin); if utilities.is_set (page) then if is_journal then return utilities.substitute (cfg.messages['j-page(s)'], page), '', '', ''; elseif not nopp then return utilities.substitute (cfg.messages['p-prefix'], {sepc, page}), '', '', ''; else return utilities.substitute (cfg.messages['nopp'], {sepc, page}), '', '', ''; end elseif utilities.is_set (pages) then if is_journal then return utilities.substitute (cfg.messages['j-page(s)'], pages), '', '', ''; elseif tonumber(pages) ~= nil and not nopp then -- if pages is only digits, assume a single page number return '', utilities.substitute (cfg.messages['p-prefix'], {sepc, pages}), '', ''; elseif not nopp then return '', utilities.substitute (cfg.messages['pp-prefix'], {sepc, pages}), '', ''; else return '', utilities.substitute (cfg.messages['nopp'], {sepc, pages}), '', ''; end end return '', '', '', ''; -- return empty strings end --[[--------------------------< I N S O U R C E _ L O C _ G E T >---------------------------------------------- returns one of the in-source locators: page, pages, or at. If any of these are interwiki links to Wikisource, returns the label portion of the interwiki-link as plain text for use in COinS. This COinS thing is done because here we convert an interwiki-link to an external link and add an icon span around that; get_coins_pages() doesn't know about the span. TODO: should it? TODO: add support for sheet and sheets?; streamline; TODO: make it so that this function returns only one of the three as the single in-source (the return value assigned to a new name)? ]] local function insource_loc_get (page, page_orig, pages, pages_orig, at) local ws_url, ws_label, coins_pages, L; -- for Wikisource interwiki-links; TODO: this corrupts page metadata (span remains in place after cleanup; fix there?) if utilities.is_set (page) then if utilities.is_set (pages) or utilities.is_set (at) then pages = ''; -- unset the others at = ''; end extra_text_in_page_check (page, page_orig); -- emit error message when |page= value begins with what looks like p., pp., etc. ws_url, ws_label, L = wikisource_url_make (page); -- make ws URL from |page= interwiki link; link portion L becomes tooltip label if ws_url then page = external_link (ws_url, ws_label .. '&nbsp;', 'ws link in page'); -- space char after label to move icon away from in-source text; TODO: a better way to do this? page = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, page}); coins_pages = ws_label; end elseif utilities.is_set (pages) then if utilities.is_set (at) then at = ''; -- unset end extra_text_in_page_check (pages, pages_orig); -- emit error message when |page= value begins with what looks like p., pp., etc. ws_url, ws_label, L = wikisource_url_make (pages); -- make ws URL from |pages= interwiki link; link portion L becomes tooltip label if ws_url then pages = external_link (ws_url, ws_label .. '&nbsp;', 'ws link in pages'); -- space char after label to move icon away from in-source text; TODO: a better way to do this? pages = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, pages}); coins_pages = ws_label; end elseif utilities.is_set (at) then ws_url, ws_label, L = wikisource_url_make (at); -- make ws URL from |at= interwiki link; link portion L becomes tooltip label if ws_url then at = external_link (ws_url, ws_label .. '&nbsp;', 'ws link in at'); -- space char after label to move icon away from in-source text; TODO: a better way to do this? at = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, at}); coins_pages = ws_label; end end return page, pages, at, coins_pages; end --[[--------------------------< I S _ U N I Q U E _ A R C H I V E _ U R L >------------------------------------ add error message when |archive-url= value is same as |url= or chapter-url= (or alias...) value ]] local function is_unique_archive_url (archive, url, c_url, source, date) if utilities.is_set (archive) then if archive == url or archive == c_url then utilities.set_message ('err_bad_url', {utilities.wrap_style ('parameter', source)}); -- add error message return '', ''; -- unset |archive-url= and |archive-date= because same as |url= or |chapter-url= end end return archive, date; end --[=[-------------------------< A R C H I V E _ U R L _ C H E C K >-------------------------------------------- Check archive.org URLs to make sure they at least look like they are pointing at valid archives and not to the save snapshot URL or to calendar pages. When the archive URL is 'https://web.archive.org/save/' (or http://...) archive.org saves a snapshot of the target page in the URL. That is something that Wikipedia should not allow unwitting readers to do. When the archive.org URL does not have a complete timestamp, archive.org chooses a snapshot according to its own algorithm or provides a calendar 'search' result. [[WP:ELNO]] discourages links to search results. This function looks at the value assigned to |archive-url= and returns empty strings for |archive-url= and |archive-date= and an error message when: |archive-url= holds an archive.org save command URL |archive-url= is an archive.org URL that does not have a complete timestamp (YYYYMMDDhhmmss 14 digits) in the correct place otherwise returns |archive-url= and |archive-date= There are two mostly compatible archive.org URLs: //web.archive.org/<timestamp>... -- the old form //web.archive.org/web/<timestamp>... -- the new form The old form does not support or map to the new form when it contains a display flag. There are four identified flags ('id_', 'js_', 'cs_', 'im_') but since archive.org ignores others following the same form (two letters and an underscore) we don't check for these specific flags but we do check the form. This function supports a preview mode. When the article is rendered in preview mode, this function may return a modified archive URL: for save command errors, return undated wildcard (/*/) for timestamp errors when the timestamp has a wildcard, return the URL unmodified for timestamp errors when the timestamp does not have a wildcard, return with timestamp limited to six digits plus wildcard (/yyyymm*/) A secondary function is to return an archive-url timestamp from those urls that have them (archive.org and archive.today). The timestamp is used by validation.archive_date_check() to see if the value in |archive-date= matches the timestamp in the archive url. ]=] local function archive_url_check (url, date) local err_msg = ''; -- start with the error message empty local path, timestamp, flag; -- portions of the archive.org URL timestamp = url:match ('//archive.today/(%d%d%d%d%d%d%d%d%d%d%d%d%d%d)/'); -- get timestamp from archive.today urls if timestamp then -- if this was an archive.today url ... return url, date, timestamp; -- return ArchiveURL, ArchiveDate, and timestamp from |archive-url=, and done end -- here for archive.org urls if (not url:match('//web%.archive%.org/')) and (not url:match('//liveweb%.archive%.org/')) then -- also deprecated liveweb Wayback machine URL return url, date; -- not an archive.org archive, return ArchiveURL and ArchiveDate end if url:match('//web%.archive%.org/save/') then -- if a save command URL, we don't want to allow saving of the target page err_msg = cfg.err_msg_supl.save; url = url:gsub ('(//web%.archive%.org)/save/', '%1/*/', 1); -- for preview mode: modify ArchiveURL elseif url:match('//liveweb%.archive%.org/') then err_msg = cfg.err_msg_supl.liveweb; else path, timestamp, flag = url:match('//web%.archive%.org/([^%d]*)(%d+)([^/]*)/'); -- split out some of the URL parts for evaluation if not path then -- malformed in some way; pattern did not match err_msg = cfg.err_msg_supl.timestamp; elseif 14 ~= timestamp:len() then -- path and flag optional, must have 14-digit timestamp here err_msg = cfg.err_msg_supl.timestamp; if '*' ~= flag then local replacement = timestamp:match ('^%d%d%d%d%d%d') or timestamp:match ('^%d%d%d%d'); -- get the first 6 (YYYYMM) or first 4 digits (YYYY) if replacement then -- nil if there aren't at least 4 digits (year) replacement = replacement .. string.rep ('0', 14 - replacement:len()); -- year or yearmo (4 or 6 digits) zero-fill to make 14-digit timestamp url=url:gsub ('(//web%.archive%.org/[^%d]*)%d[^/]*', '%1' .. replacement .. '*', 1) -- for preview, modify ts to 14 digits plus splat for calendar display end end elseif utilities.is_set (path) and 'web/' ~= path then -- older archive URLs do not have the extra 'web/' path element err_msg = cfg.err_msg_supl.path; elseif utilities.is_set (flag) and not utilities.is_set (path) then -- flag not allowed with the old form URL (without the 'web/' path element) err_msg = cfg.err_msg_supl.flag; elseif utilities.is_set (flag) and not flag:match ('%a%a_') then -- flag if present must be two alpha characters and underscore (requires 'web/' path element) err_msg = cfg.err_msg_supl.flag; else return url, date, timestamp; -- return ArchiveURL, ArchiveDate, and timestamp from |archive-url= end end -- if here, something not right so utilities.set_message ('err_archive_url', {err_msg}); -- add error message and if is_preview_mode then return url, date, timestamp; -- preview mode so return ArchiveURL, ArchiveDate, and timestamp from |archive-url= else return '', ''; -- return empty strings for ArchiveURL and ArchiveDate end end --[[--------------------------< P L A C E _ C H E C K >-------------------------------------------------------- check |place=, |publication-place=, |location= to see if these params include digits. This function added because many editors misuse location to specify the in-source location (|page(s)= and |at= are supposed to do that) returns the original parameter value without modification; added maint cat when parameter value contains digits ]] local function place_check (param_val) if not utilities.is_set (param_val) then -- parameter empty or omitted return param_val; -- return that empty state end if mw.ustring.find (param_val, '%d') then -- not empty, are there digits in the parameter value utilities.set_message ('maint_location'); -- yep, add maint cat end return param_val; -- and done end --[[--------------------------< I S _ A R C H I V E D _ C O P Y >---------------------------------------------- compares |title= to 'Archived copy' (placeholder added by bots that can't find proper title); if matches, return true; nil else ]] local function is_archived_copy (title) title = mw.ustring.lower(title); -- switch title to lower case if title:find (cfg.special_case_translation.archived_copy.en) then -- if title is 'Archived copy' return true; elseif cfg.special_case_translation.archived_copy['local'] then if mw.ustring.find (title, cfg.special_case_translation.archived_copy['local']) then -- mw.ustring() because might not be Latin script return true; end end end --[[--------------------------< C I T A T I O N 0 >------------------------------------------------------------ This is the main function doing the majority of the citation formatting. ]] local function citation0( config, args ) --[[ Load Input Parameters The argument_wrapper facilitates the mapping of multiple aliases to single internal variable. ]] local A = argument_wrapper ( args ); local i -- Pick out the relevant fields from the arguments. Different citation templates -- define different field names for the same underlying things. local author_etal; local a = {}; -- authors list from |lastn= / |firstn= pairs or |vauthors= local Authors; local NameListStyle; if cfg.global_cs1_config_t['NameListStyle'] then -- global setting in {{cs1 config}} overrides local |name-list-style= parameter value; nil when empty or assigned value invalid NameListStyle = is_valid_parameter_value (cfg.global_cs1_config_t['NameListStyle'], 'cs1 config: name-list-style', cfg.keywords_lists['name-list-style'], ''); -- error messaging 'param' here is a hoax else NameListStyle = is_valid_parameter_value (A['NameListStyle'], A:ORIGIN('NameListStyle'), cfg.keywords_lists['name-list-style'], ''); end if cfg.global_cs1_config_t['NameListStyle'] and utilities.is_set (A['NameListStyle']) then -- when template has |name-list-style=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end local Collaboration = A['Collaboration']; do -- to limit scope of selected local selected = select_author_editor_source (A['Vauthors'], A['Authors'], args, 'AuthorList'); if 1 == selected then a, author_etal = extract_names (args, 'AuthorList'); -- fetch author list from |authorn= / |lastn= / |firstn=, |author-linkn=, and |author-maskn= elseif 2 == selected then NameListStyle = 'vanc'; -- override whatever |name-list-style= might be a, author_etal = parse_vauthors_veditors (args, A['Vauthors'], 'AuthorList'); -- fetch author list from |vauthors=, |author-linkn=, and |author-maskn= elseif 3 == selected then Authors = A['Authors']; -- use content of |authors= if 'authors' == A:ORIGIN('Authors') then -- but add a maint cat if the parameter is |authors= utilities.set_message ('maint_authors'); -- because use of this parameter is discouraged; what to do about the aliases is a TODO: end end if utilities.is_set (Collaboration) then author_etal = true; -- so that |display-authors=etal not required end end local editor_etal; local e = {}; -- editors list from |editor-lastn= / |editor-firstn= pairs or |veditors= do -- to limit scope of selected local selected = select_author_editor_source (A['Veditors'], nil, args, 'EditorList'); -- support for |editors= withdrawn if 1 == selected then e, editor_etal = extract_names (args, 'EditorList'); -- fetch editor list from |editorn= / |editor-lastn= / |editor-firstn=, |editor-linkn=, and |editor-maskn= elseif 2 == selected then NameListStyle = 'vanc'; -- override whatever |name-list-style= might be e, editor_etal = parse_vauthors_veditors (args, args.veditors, 'EditorList'); -- fetch editor list from |veditors=, |editor-linkn=, and |editor-maskn= end end local Chapter = A['Chapter']; -- done here so that we have access to |contribution= from |chapter= aliases local Chapter_origin = A:ORIGIN ('Chapter'); local Contribution; -- because contribution is required for contributor(s) if 'contribution' == Chapter_origin then Contribution = Chapter; -- get the name of the contribution end local c = {}; -- contributors list from |contributor-lastn= / contributor-firstn= pairs if utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (A['Periodical']) then -- |contributor= and |contribution= only supported in book cites c = extract_names (args, 'ContributorList'); -- fetch contributor list from |contributorn= / |contributor-lastn=, -firstn=, -linkn=, -maskn= if 0 < #c then if not utilities.is_set (Contribution) then -- |contributor= requires |contribution= utilities.set_message ('err_contributor_missing_required_param', 'contribution'); -- add missing contribution error message c = {}; -- blank the contributors' table; it is used as a flag later end if 0 == #a then -- |contributor= requires |author= utilities.set_message ('err_contributor_missing_required_param', 'author'); -- add missing author error message c = {}; -- blank the contributors' table; it is used as a flag later end end else -- if not a book cite if utilities.select_one (args, cfg.aliases['ContributorList-Last'], 'err_redundant_parameters', 1 ) then -- are there contributor name list parameters? utilities.set_message ('err_contributor_ignored'); -- add contributor ignored error message end Contribution = nil; -- unset end local Title = A['Title']; local TitleLink = A['TitleLink']; local auto_select = ''; -- default is auto local accept_link; TitleLink, accept_link = utilities.has_accept_as_written (TitleLink, true); -- test for accept-this-as-written markup if (not accept_link) and utilities.in_array (TitleLink, {'none', 'pmc', 'doi'}) then -- check for special keywords auto_select = TitleLink; -- remember selection for later TitleLink = ''; -- treat as if |title-link= would have been empty end TitleLink = link_title_ok (TitleLink, A:ORIGIN ('TitleLink'), Title, 'title'); -- check for wiki-markup in |title-link= or wiki-markup in |title= when |title-link= is set local Section = ''; -- {{cite map}} only; preset to empty string for concatenation if not used if 'map' == config.CitationClass and 'section' == Chapter_origin then Section = A['Chapter']; -- get |section= from |chapter= alias list; |chapter= and the other aliases not supported in {{cite map}} Chapter = ''; -- unset for now; will be reset later from |map= if present end local Periodical = A['Periodical']; local Periodical_origin = A:ORIGIN('Periodical'); local ScriptPeriodical = A['ScriptPeriodical']; local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical'); local TransPeriodical = A['TransPeriodical']; local TransPeriodical_origin = A:ORIGIN ('TransPeriodical'); if (utilities.in_array (config.CitationClass, {'book', 'encyclopaedia'}) and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (ScriptPeriodical))) then local param; if utilities.is_set (Periodical) then -- get a parameter name from one of these periodical related meta-parameters Periodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters param = Periodical_origin -- get parameter name for error messaging elseif utilities.is_set (TransPeriodical) then TransPeriodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters param = TransPeriodical_origin; -- get parameter name for error messaging elseif utilities.is_set (ScriptPeriodical) then ScriptPeriodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters param = ScriptPeriodical_origin; -- get parameter name for error messaging end if utilities.is_set (param) then -- if we found one utilities.set_message ('err_periodical_ignored', {param}); -- emit an error message end end if utilities.is_set (Periodical) then local i; Periodical, i = utilities.strip_apostrophe_markup (Periodical); -- strip apostrophe markup so that metadata isn't contaminated if i then -- non-zero when markup was stripped so emit an error message utilities.set_message ('err_apostrophe_markup', {Periodical_origin}); end end if 'mailinglist' == config.CitationClass then -- special case for {{cite mailing list}} if utilities.is_set (Periodical) and utilities.is_set (A ['MailingList']) then -- both set emit an error TODO: make a function for this and similar? utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', Periodical_origin) .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'mailinglist')}); end Periodical = A ['MailingList']; -- error or no, set Periodical to |mailinglist= value because this template is {{cite mailing list}} Periodical_origin = A:ORIGIN('MailingList'); end -- web and news not tested for now because of -- Wikipedia:Administrators%27_noticeboard#Is_there_a_semi-automated_tool_that_could_fix_these_annoying_"Cite_Web"_errors? if not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) then -- 'periodical' templates require periodical parameter -- local p = {['journal'] = 'journal', ['magazine'] = 'magazine', ['news'] = 'newspaper', ['web'] = 'website'}; -- for error message local p = {['journal'] = 'journal', ['magazine'] = 'magazine'}; -- for error message if p[config.CitationClass] then utilities.set_message ('err_missing_periodical', {config.CitationClass, p[config.CitationClass]}); end end local Volume; -- local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical'); if 'citation' == config.CitationClass then if utilities.is_set (Periodical) then if not utilities.in_array (Periodical_origin, cfg.citation_no_volume_t) then -- {{citation}} does not render |volume= when these parameters are used Volume = A['Volume']; -- but does for all other 'periodicals' end elseif utilities.is_set (ScriptPeriodical) then if 'script-website' ~= ScriptPeriodical_origin then -- {{citation}} does not render volume for |script-website= Volume = A['Volume']; -- but does for all other 'periodicals' end else Volume = A['Volume']; -- and does for non-'periodical' cites end elseif utilities.in_array (config.CitationClass, cfg.templates_using_volume) then -- render |volume= for cs1 according to the configuration settings Volume = A['Volume']; end extra_text_in_vol_iss_check (Volume, A:ORIGIN ('Volume'), 'v'); local Issue; if 'citation' == config.CitationClass then if utilities.is_set (Periodical) and utilities.in_array (Periodical_origin, cfg.citation_issue_t) then -- {{citation}} may render |issue= when these parameters are used Issue = utilities.hyphen_to_dash (A['Issue']); end elseif utilities.in_array (config.CitationClass, cfg.templates_using_issue) then -- conference & map books do not support issue; {{citation}} listed here because included in settings table if not (utilities.in_array (config.CitationClass, {'conference', 'map', 'citation'}) and not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical))) then Issue = utilities.hyphen_to_dash (A['Issue']); end end local ArticleNumber; if utilities.in_array (config.CitationClass, {'journal', 'conference'}) or ('citation' == config.CitationClass and utilities.is_set (Periodical) and 'journal' == Periodical_origin) then ArticleNumber = A['ArticleNumber']; end extra_text_in_vol_iss_check (Issue, A:ORIGIN ('Issue'), 'i'); local Page; local Pages; local At; local QuotePage; local QuotePages; if not utilities.in_array (config.CitationClass, cfg.templates_not_using_page) then -- TODO: rewrite to emit ignored parameter error message? Page = A['Page']; Pages = utilities.hyphen_to_dash (A['Pages']); At = A['At']; QuotePage = A['QuotePage']; QuotePages = utilities.hyphen_to_dash (A['QuotePages']); end local Edition = A['Edition']; local PublicationPlace = place_check (A['PublicationPlace'], A:ORIGIN('PublicationPlace')); local Place = place_check (A['Place'], A:ORIGIN('Place')); local PublisherName = A['PublisherName']; local PublisherName_origin = A:ORIGIN('PublisherName'); if utilities.is_set (PublisherName) and (cfg.keywords_xlate['none'] ~= PublisherName) then local i = 0; PublisherName, i = utilities.strip_apostrophe_markup (PublisherName); -- strip apostrophe markup so that metadata isn't contaminated; publisher is never italicized if i and (0 < i) then -- non-zero when markup was stripped so emit an error message utilities.set_message ('err_apostrophe_markup', {PublisherName_origin}); end end if ('document' == config.CitationClass) and not utilities.is_set (PublisherName) then utilities.set_message ('err_missing_publisher', {config.CitationClass, 'publisher'}); end local Newsgroup = A['Newsgroup']; -- TODO: strip apostrophe markup? local Newsgroup_origin = A:ORIGIN('Newsgroup'); if 'newsgroup' == config.CitationClass then if utilities.is_set (PublisherName) and (cfg.keywords_xlate['none'] ~= PublisherName) then -- general use parameter |publisher= not allowed in cite newsgroup utilities.set_message ('err_parameter_ignored', {PublisherName_origin}); end PublisherName = nil; -- ensure that this parameter is unset for the time being; will be used again after COinS end local URL = A['URL']; -- TODO: better way to do this for URL, ChapterURL, and MapURL? local UrlAccess = is_valid_parameter_value (A['UrlAccess'], A:ORIGIN('UrlAccess'), cfg.keywords_lists['url-access'], nil); if not utilities.is_set (URL) and utilities.is_set (UrlAccess) then UrlAccess = nil; utilities.set_message ('err_param_access_requires_param', 'url'); end local ChapterURL = A['ChapterURL']; local ChapterUrlAccess = is_valid_parameter_value (A['ChapterUrlAccess'], A:ORIGIN('ChapterUrlAccess'), cfg.keywords_lists['url-access'], nil); if not utilities.is_set (ChapterURL) and utilities.is_set (ChapterUrlAccess) then ChapterUrlAccess = nil; utilities.set_message ('err_param_access_requires_param', {A:ORIGIN('ChapterUrlAccess'):gsub ('%-access', '')}); end local MapUrlAccess = is_valid_parameter_value (A['MapUrlAccess'], A:ORIGIN('MapUrlAccess'), cfg.keywords_lists['url-access'], nil); if not utilities.is_set (A['MapURL']) and utilities.is_set (MapUrlAccess) then MapUrlAccess = nil; utilities.set_message ('err_param_access_requires_param', {'map-url'}); end local this_page = mw.title.getCurrentTitle(); -- also used for COinS and for language local no_tracking_cats = is_valid_parameter_value (A['NoTracking'], A:ORIGIN('NoTracking'), cfg.keywords_lists['yes_true_y'], nil); -- check this page to see if it is in one of the namespaces that cs1 is not supposed to add to the error categories if not utilities.is_set (no_tracking_cats) then -- ignore if we are already not going to categorize this page if cfg.uncategorized_namespaces[this_page.namespace] then -- is this page's namespace id one of the uncategorized namespace ids? no_tracking_cats = "true"; -- set no_tracking_cats end for _, v in ipairs (cfg.uncategorized_subpages) do -- cycle through page name patterns if this_page.text:match (v) then -- test page name against each pattern no_tracking_cats = "true"; -- set no_tracking_cats break; -- bail out if one is found end end end -- check for extra |page=, |pages= or |at= parameters. (also sheet and sheets while we're at it) utilities.select_one (args, {'page', 'p', 'pp', 'pages', 'at', 'sheet', 'sheets'}, 'err_redundant_parameters'); -- this is a dummy call simply to get the error message and category local coins_pages; Page, Pages, At, coins_pages = insource_loc_get (Page, A:ORIGIN('Page'), Pages, A:ORIGIN('Pages'), At); local NoPP = is_valid_parameter_value (A['NoPP'], A:ORIGIN('NoPP'), cfg.keywords_lists['yes_true_y'], nil); if utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- both |publication-place= and |place= (|location=) allowed if different utilities.add_prop_cat ('location-test'); -- add property cat to evaluate how often PublicationPlace and Place are used together if PublicationPlace == Place then Place = ''; -- unset; don't need both if they are the same end elseif not utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- when only |place= (|location=) is set ... PublicationPlace = Place; -- promote |place= (|location=) to |publication-place end if PublicationPlace == Place then Place = ''; end -- don't need both if they are the same local URL_origin = A:ORIGIN('URL'); -- get name of parameter that holds URL local ChapterURL_origin = A:ORIGIN('ChapterURL'); -- get name of parameter that holds ChapterURL local ScriptChapter = A['ScriptChapter']; local ScriptChapter_origin = A:ORIGIN ('ScriptChapter'); local Format = A['Format']; local ChapterFormat = A['ChapterFormat']; local TransChapter = A['TransChapter']; local TransChapter_origin = A:ORIGIN ('TransChapter'); local TransTitle = A['TransTitle']; local ScriptTitle = A['ScriptTitle']; --[[ Parameter remapping for cite encyclopedia: When the citation has these parameters: |encyclopedia= and |title= then map |title= to |article= and |encyclopedia= to |title= for rendering |encyclopedia= and |article= then map |encyclopedia= to |title= for rendering |trans-title= maps to |trans-chapter= when |title= is re-mapped |url= maps to |chapter-url= when |title= is remapped All other combinations of |encyclopedia=, |title=, and |article= are not modified ]] local Encyclopedia = A['Encyclopedia']; -- used as a flag by this module and by ~/COinS if utilities.is_set (Encyclopedia) then -- emit error message when Encyclopedia set but template is other than {{cite encyclopedia}} or {{citation}} if 'encyclopaedia' ~= config.CitationClass and 'citation' ~= config.CitationClass then utilities.set_message ('err_parameter_ignored', {A:ORIGIN ('Encyclopedia')}); Encyclopedia = nil; -- unset because not supported by this template end end if ('encyclopaedia' == config.CitationClass) or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then if utilities.is_set (Periodical) and utilities.is_set (Encyclopedia) then -- when both parameters set emit an error message; {{citation}} only; Periodical not allowed in {{cite encyclopedia}} utilities.set_message ('err_periodical_ignored', {Periodical_origin}); end if utilities.is_set (Encyclopedia) then Periodical = Encyclopedia; -- error or no, set Periodical to Encyclopedia for rendering; {{citation}} could (not legitimately) have both; use Encyclopedia Periodical_origin = A:ORIGIN ('Encyclopedia'); if utilities.is_set (Title) or utilities.is_set (ScriptTitle) then if not utilities.is_set (Chapter) then Chapter = Title; -- |encyclopedia= and |title= are set so map |title= to |article= and |encyclopedia= to |title= for rendering ScriptChapter = ScriptTitle; ScriptChapter_origin = A:ORIGIN('ScriptTitle') TransChapter = TransTitle; ChapterURL = URL; ChapterURL_origin = URL_origin; ChapterUrlAccess = UrlAccess; if not utilities.is_set (ChapterURL) and utilities.is_set (TitleLink) then Chapter = utilities.make_wikilink (TitleLink, Chapter); end Title = Periodical; ChapterFormat = Format; Periodical = ''; -- redundant so unset TransTitle = ''; URL = ''; Format = ''; TitleLink = ''; ScriptTitle = ''; end elseif utilities.is_set (Chapter) or utilities.is_set (ScriptChapter) then -- |title= not set Title = Periodical; -- |encyclopedia= set and |article= set so map |encyclopedia= to |title= for rendering Periodical = ''; -- redundant so unset end end end -- special case for cite techreport. local ID = A['ID']; if (config.CitationClass == "techreport") then -- special case for cite techreport if utilities.is_set (A['Number']) then -- cite techreport uses 'number', which other citations alias to 'issue' if not utilities.is_set (ID) then -- can we use ID for the "number"? ID = A['Number']; -- yes, use it else -- ID has a value so emit error message utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'id') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'number')}); end end end -- Account for the oddity that is {{cite conference}}, before generation of COinS data. local ChapterLink -- = A['ChapterLink']; -- deprecated as a parameter but still used internally by cite episode local Conference = A['Conference']; local BookTitle = A['BookTitle']; local TransTitle_origin = A:ORIGIN ('TransTitle'); if 'conference' == config.CitationClass then if utilities.is_set (BookTitle) then Chapter = Title; Chapter_origin = 'title'; -- ChapterLink = TitleLink; -- |chapter-link= is deprecated ChapterURL = URL; ChapterUrlAccess = UrlAccess; ChapterURL_origin = URL_origin; URL_origin = ''; ChapterFormat = Format; TransChapter = TransTitle; TransChapter_origin = TransTitle_origin; Title = BookTitle; Format = ''; -- TitleLink = ''; TransTitle = ''; URL = ''; end elseif 'speech' ~= config.CitationClass then Conference = ''; -- not cite conference or cite speech so make sure this is empty string end -- CS1/2 mode local Mode; if cfg.global_cs1_config_t['Mode'] then -- global setting in {{cs1 config}} overrides local |mode= parameter value; nil when empty or assigned value invalid Mode = is_valid_parameter_value (cfg.global_cs1_config_t['Mode'], 'cs1 config: mode', cfg.keywords_lists['mode'], ''); -- error messaging 'param' here is a hoax else Mode = is_valid_parameter_value (A['Mode'], A:ORIGIN('Mode'), cfg.keywords_lists['mode'], ''); end if cfg.global_cs1_config_t['Mode'] and utilities.is_set (A['Mode']) then -- when template has |mode=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end -- separator character and postscript local sepc, PostScript = set_style (Mode:lower(), A['PostScript'], config.CitationClass); -- controls capitalization of certain static text local use_lowercase = ( sepc == ',' ); -- cite map oddities local Cartography = ""; local Scale = ""; local Sheet = A['Sheet'] or ''; local Sheets = A['Sheets'] or ''; if config.CitationClass == "map" then if utilities.is_set (Chapter) then --TODO: make a function for this and similar? utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'map') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', Chapter_origin)}); -- add error message end Chapter = A['Map']; Chapter_origin = A:ORIGIN('Map'); ChapterURL = A['MapURL']; ChapterURL_origin = A:ORIGIN('MapURL'); TransChapter = A['TransMap']; ScriptChapter = A['ScriptMap'] ScriptChapter_origin = A:ORIGIN('ScriptMap') ChapterUrlAccess = MapUrlAccess; ChapterFormat = A['MapFormat']; Cartography = A['Cartography']; if utilities.is_set ( Cartography ) then Cartography = sepc .. " " .. wrap_msg ('cartography', Cartography, use_lowercase); end Scale = A['Scale']; if utilities.is_set ( Scale ) then Scale = sepc .. " " .. Scale; end end -- Account for the oddities that are {{cite episode}} and {{cite serial}}, before generation of COinS data. local Series = A['Series']; if 'episode' == config.CitationClass or 'serial' == config.CitationClass then local SeriesLink = A['SeriesLink']; SeriesLink = link_title_ok (SeriesLink, A:ORIGIN ('SeriesLink'), Series, 'series'); -- check for wiki-markup in |series-link= or wiki-markup in |series= when |series-link= is set local Network = A['Network']; local Station = A['Station']; local s, n = {}, {}; -- do common parameters first if utilities.is_set (Network) then table.insert(n, Network); end if utilities.is_set (Station) then table.insert(n, Station); end ID = table.concat(n, sepc .. ' '); if 'episode' == config.CitationClass then -- handle the oddities that are strictly {{cite episode}} local Season = A['Season']; local SeriesNumber = A['SeriesNumber']; if utilities.is_set (Season) and utilities.is_set (SeriesNumber) then -- these are mutually exclusive so if both are set TODO: make a function for this and similar? utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'season') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'seriesno')}); -- add error message SeriesNumber = ''; -- unset; prefer |season= over |seriesno= end -- assemble a table of parts concatenated later into Series if utilities.is_set (Season) then table.insert(s, wrap_msg ('season', Season, use_lowercase)); end if utilities.is_set (SeriesNumber) then table.insert(s, wrap_msg ('seriesnum', SeriesNumber, use_lowercase)); end if utilities.is_set (Issue) then table.insert(s, wrap_msg ('episode', Issue, use_lowercase)); end Issue = ''; -- unset because this is not a unique parameter Chapter = Title; -- promote title parameters to chapter ScriptChapter = ScriptTitle; ScriptChapter_origin = A:ORIGIN('ScriptTitle'); ChapterLink = TitleLink; -- alias |episode-link= TransChapter = TransTitle; ChapterURL = URL; ChapterUrlAccess = UrlAccess; ChapterURL_origin = URL_origin; ChapterFormat = Format; Title = Series; -- promote series to title TitleLink = SeriesLink; Series = table.concat(s, sepc .. ' '); -- this is concatenation of season, seriesno, episode number if utilities.is_set (ChapterLink) and not utilities.is_set (ChapterURL) then -- link but not URL Chapter = utilities.make_wikilink (ChapterLink, Chapter); elseif utilities.is_set (ChapterLink) and utilities.is_set (ChapterURL) then -- if both are set, URL links episode; Series = utilities.make_wikilink (ChapterLink, Series); end URL = ''; -- unset TransTitle = ''; ScriptTitle = ''; Format = ''; else -- now oddities that are cite serial Issue = ''; -- unset because this parameter no longer supported by the citation/core version of cite serial Chapter = A['Episode']; -- TODO: make |episode= available to cite episode someday? if utilities.is_set (Series) and utilities.is_set (SeriesLink) then Series = utilities.make_wikilink (SeriesLink, Series); end Series = utilities.wrap_style ('italic-title', Series); -- series is italicized end end -- end of {{cite episode}} stuff -- handle type parameter for those CS1 citations that have default values local TitleType = A['TitleType']; local Degree = A['Degree']; if utilities.in_array (config.CitationClass, {'AV-media-notes', 'document', 'interview', 'mailinglist', 'map', 'podcast', 'pressrelease', 'report', 'speech', 'techreport', 'thesis'}) then TitleType = set_titletype (config.CitationClass, TitleType); if utilities.is_set (Degree) and "Thesis" == TitleType then -- special case for cite thesis TitleType = Degree .. ' ' .. cfg.title_types ['thesis']:lower(); end end if utilities.is_set (TitleType) then -- if type parameter is specified TitleType = utilities.substitute ( cfg.messages['type'], TitleType); -- display it in parentheses -- TODO: Hack on TitleType to fix bunched parentheses problem end -- legacy: promote PublicationDate to Date if neither Date nor Year are set. local Date = A['Date']; local Date_origin; -- to hold the name of parameter promoted to Date; required for date error messaging local PublicationDate = A['PublicationDate']; local Year = A['Year']; if not utilities.is_set (Date) then Date = Year; -- promote Year to Date Year = nil; -- make nil so Year as empty string isn't used for CITEREF if not utilities.is_set (Date) and utilities.is_set (PublicationDate) then -- use PublicationDate when |date= and |year= are not set Date = PublicationDate; -- promote PublicationDate to Date PublicationDate = ''; -- unset, no longer needed Date_origin = A:ORIGIN('PublicationDate'); -- save the name of the promoted parameter else Date_origin = A:ORIGIN('Year'); -- save the name of the promoted parameter end else Date_origin = A:ORIGIN('Date'); -- not a promotion; name required for error messaging end if PublicationDate == Date then PublicationDate = ''; end -- if PublicationDate is same as Date, don't display in rendered citation --[[ Go test all of the date-holding parameters for valid MOS:DATE format and make sure that dates are real dates. This must be done before we do COinS because here is where we get the date used in the metadata. Date validation supporting code is in Module:Citation/CS1/Date_validation ]] local DF = is_valid_parameter_value (A['DF'], A:ORIGIN('DF'), cfg.keywords_lists['df'], ''); if not utilities.is_set (DF) then DF = cfg.global_df; -- local |df= if present overrides global df set by {{use xxx date}} template end local ArchiveURL; local ArchiveDate; local ArchiveFormat = A['ArchiveFormat']; local archive_url_timestamp; -- timestamp from wayback machine url ArchiveURL, ArchiveDate, archive_url_timestamp = archive_url_check (A['ArchiveURL'], A['ArchiveDate']) ArchiveFormat = style_format (ArchiveFormat, ArchiveURL, 'archive-format', 'archive-url'); ArchiveURL, ArchiveDate = is_unique_archive_url (ArchiveURL, URL, ChapterURL, A:ORIGIN('ArchiveURL'), ArchiveDate); -- add error message when URL or ChapterURL == ArchiveURL local AccessDate = A['AccessDate']; -- local LayDate = A['LayDate']; local COinS_date = {}; -- holds date info extracted from |date= for the COinS metadata by Module:Date verification local DoiBroken = A['DoiBroken']; local Embargo = A['Embargo']; local anchor_year; -- used in the CITEREF identifier do -- create defined block to contain local variables error_message, date_parameters_list, mismatch local error_message = ''; -- AirDate has been promoted to Date so not necessary to check it local date_parameters_list = { ['access-date'] = {val = AccessDate, name = A:ORIGIN ('AccessDate')}, ['archive-date'] = {val = ArchiveDate, name = A:ORIGIN ('ArchiveDate')}, ['date'] = {val = Date, name = Date_origin}, ['doi-broken-date'] = {val = DoiBroken, name = A:ORIGIN ('DoiBroken')}, ['pmc-embargo-date'] = {val = Embargo, name = A:ORIGIN ('Embargo')}, -- ['lay-date'] = {val = LayDate, name = A:ORIGIN ('LayDate')}, ['publication-date'] = {val = PublicationDate, name = A:ORIGIN ('PublicationDate')}, ['year'] = {val = Year, name = A:ORIGIN ('Year')}, }; local error_list = {}; anchor_year, Embargo = validation.dates(date_parameters_list, COinS_date, error_list); -- start temporary Julian / Gregorian calendar uncertainty categorization if COinS_date.inter_cal_cat then utilities.add_prop_cat ('jul-greg-uncertainty'); end -- end temporary Julian / Gregorian calendar uncertainty categorization if utilities.is_set (Year) and utilities.is_set (Date) then -- both |date= and |year= not normally needed; validation.year_date_check (Year, A:ORIGIN ('Year'), Date, A:ORIGIN ('Date'), error_list); end if 0 == #error_list then -- error free dates only; 0 when error_list is empty local modified = false; -- flag if utilities.is_set (DF) then -- if we need to reformat dates modified = validation.reformat_dates (date_parameters_list, DF); -- reformat to DF format, use long month names if appropriate end if true == validation.date_hyphen_to_dash (date_parameters_list) then -- convert hyphens to dashes where appropriate modified = true; utilities.set_message ('maint_date_format'); -- hyphens were converted so add maint category end -- for those wikis that can and want to have English date names translated to the local language; not supported at en.wiki if cfg.date_name_auto_xlate_enable and validation.date_name_xlate (date_parameters_list, cfg.date_digit_auto_xlate_enable ) then utilities.set_message ('maint_date_auto_xlated'); -- add maint cat modified = true; end if modified then -- if the date_parameters_list values were modified AccessDate = date_parameters_list['access-date'].val; -- overwrite date holding parameters with modified values ArchiveDate = date_parameters_list['archive-date'].val; Date = date_parameters_list['date'].val; DoiBroken = date_parameters_list['doi-broken-date'].val; -- LayDate = date_parameters_list['lay-date'].val; PublicationDate = date_parameters_list['publication-date'].val; end if archive_url_timestamp and utilities.is_set (ArchiveDate) then validation.archive_date_check (ArchiveDate, archive_url_timestamp); -- does YYYYMMDD in archive_url_timestamp match date in ArchiveDate end else utilities.set_message ('err_bad_date', {utilities.make_sep_list (#error_list, error_list)}); -- add this error message end end -- end of do if utilities.in_array (config.CitationClass, {'book', 'encyclopaedia'}) or -- {{cite book}}, {{cite encyclopedia}}; TODO: {{cite conference}} and others? ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) or -- {{citation}} as an encylopedia citation ('citation' == config.CitationClass and not utilities.is_set (Periodical)) then -- {{citation}} as a book citation if utilities.is_set (PublicationPlace) then if not utilities.is_set (PublisherName) then local date = COinS_date.rftdate and tonumber (COinS_date.rftdate:match ('%d%d%d%d')); -- get year portion of COinS date (because in Arabic numerals); convert string to number if date and (1850 <= date) then -- location has no publisher; if date is 1850 or later utilities.set_message ('maint_location_no_publisher'); -- add maint cat end else -- PublisherName has a value if cfg.keywords_xlate['none'] == PublisherName then -- if that value is 'none' (only for book and encyclopedia citations) PublisherName = ''; -- unset end end end end local ID_list = {}; -- sequence table of rendered identifiers local ID_list_coins = {}; -- table of identifiers and their values from args; key is same as cfg.id_handlers's key local Class = A['Class']; -- arxiv class identifier local ID_support = { {A['ASINTLD'], 'ASIN', 'err_asintld_missing_asin', A:ORIGIN ('ASINTLD')}, {DoiBroken, 'DOI', 'err_doibroken_missing_doi', A:ORIGIN ('DoiBroken')}, {Embargo, 'PMC', 'err_embargo_missing_pmc', A:ORIGIN ('Embargo')}, } ID_list, ID_list_coins = identifiers.identifier_lists_get (args, {DoiBroken = DoiBroken, ASINTLD = A['ASINTLD'], Embargo = Embargo, Class = Class}, ID_support); -- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite medrxiv}}, {{cite ssrn}}, before generation of COinS data. if utilities.in_array (config.CitationClass, whitelist.preprint_template_list_t) then -- |arxiv= or |eprint= required for cite arxiv; |biorxiv=, |citeseerx=, |medrxiv=, |ssrn= required for their templates if not (args[cfg.id_handlers[config.CitationClass:upper()].parameters[1]] or -- can't use ID_list_coins k/v table here because invalid parameters omitted args[cfg.id_handlers[config.CitationClass:upper()].parameters[2]]) then -- which causes unexpected parameter missing error message utilities.set_message ('err_' .. config.CitationClass .. '_missing'); -- add error message end Periodical = ({['arxiv'] = 'arXiv', ['biorxiv'] = 'bioRxiv', ['citeseerx'] = 'CiteSeerX', ['medrxiv'] = 'medRxiv', ['ssrn'] = 'Social Science Research Network'})[config.CitationClass]; end -- Link the title of the work if no |url= was provided, but we have a |pmc= or a |doi= with |doi-access=free if config.CitationClass == "journal" and not utilities.is_set (URL) and not utilities.is_set (TitleLink) and not utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) then -- TODO: remove 'none' once existing citations have been switched to 'off', so 'none' can be used as token for "no title" instead if 'none' ~= cfg.keywords_xlate[auto_select] then -- if auto-linking not disabled if identifiers.auto_link_urls[auto_select] then -- manual selection URL = identifiers.auto_link_urls[auto_select]; -- set URL to be the same as identifier's external link URL_origin = cfg.id_handlers[auto_select:upper()].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title= elseif identifiers.auto_link_urls['pmc'] then -- auto-select PMC URL = identifiers.auto_link_urls['pmc']; -- set URL to be the same as the PMC external link if not embargoed URL_origin = cfg.id_handlers['PMC'].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title= elseif identifiers.auto_link_urls['doi'] then -- auto-select DOI URL = identifiers.auto_link_urls['doi']; URL_origin = cfg.id_handlers['DOI'].parameters[1]; end end if utilities.is_set (URL) then -- set when using an identifier-created URL if utilities.is_set (AccessDate) then -- |access-date= requires |url=; identifier-created URL is not |url= utilities.set_message ('err_accessdate_missing_url'); -- add an error message AccessDate = ''; -- unset end if utilities.is_set (ArchiveURL) then -- |archive-url= requires |url=; identifier-created URL is not |url= utilities.set_message ('err_archive_missing_url'); -- add an error message ArchiveURL = ''; -- unset end end end -- At this point fields may be nil if they weren't specified in the template use. We can use that fact. -- Test if citation has no title if not utilities.is_set (Title) and not utilities.is_set (TransTitle) and not utilities.is_set (ScriptTitle) then -- has special case for cite episode utilities.set_message ('err_citation_missing_title', {'episode' == config.CitationClass and 'series' or 'title'}); end if utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) and utilities.in_array (config.CitationClass, {'journal', 'citation'}) and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and ('journal' == Periodical_origin or 'script-journal' == ScriptPeriodical_origin) then -- special case for journal cites Title = ''; -- set title to empty string utilities.set_message ('maint_untitled'); -- add maint cat end -- COinS metadata (see <http://ocoins.info/>) for automated parsing of citation information. -- handle the oddity that is cite encyclopedia and {{citation |encyclopedia=something}}. Here we presume that -- when Periodical, Title, and Chapter are all set, then Periodical is the book (encyclopedia) title, Title -- is the article title, and Chapter is a section within the article. So, we remap local coins_chapter = Chapter; -- default assuming that remapping not required local coins_title = Title; -- et tu if 'encyclopaedia' == config.CitationClass or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then if utilities.is_set (Chapter) and utilities.is_set (Title) and utilities.is_set (Periodical) then -- if all are used then coins_chapter = Title; -- remap coins_title = Periodical; end end local coins_author = a; -- default for coins rft.au if 0 < #c then -- but if contributor list coins_author = c; -- use that instead end -- this is the function call to COinS() local OCinSoutput = metadata.COinS({ ['Periodical'] = utilities.strip_apostrophe_markup (Periodical), -- no markup in the metadata ['Encyclopedia'] = Encyclopedia, -- just a flag; content ignored by ~/COinS ['Chapter'] = metadata.make_coins_title (coins_chapter, ScriptChapter), -- Chapter and ScriptChapter stripped of bold / italic / accept-as-written markup ['Degree'] = Degree; -- cite thesis only ['Title'] = metadata.make_coins_title (coins_title, ScriptTitle), -- Title and ScriptTitle stripped of bold / italic / accept-as-written markup ['PublicationPlace'] = PublicationPlace, ['Date'] = COinS_date.rftdate, -- COinS_date.* has correctly formatted date values if Date is valid; ['Season'] = COinS_date.rftssn, ['Quarter'] = COinS_date.rftquarter, ['Chron'] = COinS_date.rftchron, ['Series'] = Series, ['Volume'] = Volume, ['Issue'] = Issue, ['ArticleNumber'] = ArticleNumber, ['Pages'] = coins_pages or metadata.get_coins_pages (first_set ({Sheet, Sheets, Page, Pages, At, QuotePage, QuotePages}, 7)), -- pages stripped of external links ['Edition'] = Edition, ['PublisherName'] = PublisherName or Newsgroup, -- any apostrophe markup already removed from PublisherName ['URL'] = first_set ({ChapterURL, URL}, 2), ['Authors'] = coins_author, ['ID_list'] = ID_list_coins, ['RawPage'] = this_page.prefixedText, }, config.CitationClass); -- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite medrxiv}}, and {{cite ssrn}} AFTER generation of COinS data. if utilities.in_array (config.CitationClass, whitelist.preprint_template_list_t) then -- we have set rft.jtitle in COinS to arXiv, bioRxiv, CiteSeerX, medRxiv, or ssrn now unset so it isn't displayed Periodical = ''; -- periodical not allowed in these templates; if article has been published, use cite journal end -- special case for cite newsgroup. Do this after COinS because we are modifying Publishername to include some static text if 'newsgroup' == config.CitationClass and utilities.is_set (Newsgroup) then PublisherName = utilities.substitute (cfg.messages['newsgroup'], external_link( 'news:' .. Newsgroup, Newsgroup, Newsgroup_origin, nil )); end local Editors; local EditorCount; -- used only for choosing {ed.) or (eds.) annotation at end of editor name-list local Contributors; -- assembled contributors name list local contributor_etal; local Translators; -- assembled translators name list local translator_etal; local t = {}; -- translators list from |translator-lastn= / translator-firstn= pairs t = extract_names (args, 'TranslatorList'); -- fetch translator list from |translatorn= / |translator-lastn=, -firstn=, -linkn=, -maskn= local Interviewers; local interviewers_list = {}; interviewers_list = extract_names (args, 'InterviewerList'); -- process preferred interviewers parameters local interviewer_etal; -- Now perform various field substitutions. -- We also add leading spaces and surrounding markup and punctuation to the -- various parts of the citation, but only when they are non-nil. do local last_first_list; local control = { format = NameListStyle, -- empty string, '&', 'amp', 'and', or 'vanc' maximum = nil, -- as if display-authors or display-editors not set mode = Mode }; do -- do editor name list first because the now unsupported coauthors used to modify control table if cfg.global_cs1_config_t['DisplayEditors'] then -- global setting from {{cs1 config}} overrides local setting control.maximum , editor_etal = get_display_names (cfg.global_cs1_config_t['DisplayEditors'], #e, 'editors', editor_etal, 'cs1 config'); else control.maximum , editor_etal = get_display_names (A['DisplayEditors'], #e, 'editors', editor_etal, A:ORIGIN ('DisplayEditors')); end if cfg.global_cs1_config_t['DisplayEditors'] and utilities.is_set (A['DisplayEditors']) then -- when template has |display-editors=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end Editors, EditorCount = list_people (control, e, editor_etal); if 1 == EditorCount and (true == editor_etal or 1 < #e) then -- only one editor displayed but includes etal then EditorCount = 2; -- spoof to display (eds.) annotation end end do -- now do interviewers if cfg.global_cs1_config_t['DisplayInterviewers'] then -- global setting from {{cs1 config}} overrides local setting control.maximum, interviewer_etal = get_display_names (cfg.global_cs1_config_t['DisplayInterviewers'], #interviewers_list, 'interviewers', interviewer_etal, 'cs1 config'); else control.maximum, interviewer_etal = get_display_names (A['DisplayInterviewers'], #interviewers_list, 'interviewers', interviewer_etal, A:ORIGIN ('DisplayInterviewers')); end if cfg.global_cs1_config_t['DisplayInterviewers'] and utilities.is_set (A['DisplayInterviewers']) then -- when template has |display-interviewers=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end Interviewers = list_people (control, interviewers_list, interviewer_etal); end do -- now do translators if cfg.global_cs1_config_t['DisplayTranslators'] then -- global setting from {{cs1 config}} overrides local setting control.maximum, translator_etal = get_display_names (cfg.global_cs1_config_t['DisplayTranslators'], #t, 'translators', translator_etal, 'cs1 config'); else control.maximum, translator_etal = get_display_names (A['DisplayTranslators'], #t, 'translators', translator_etal, A:ORIGIN ('DisplayTranslators')); end if cfg.global_cs1_config_t['DisplayTranslators'] and utilities.is_set (A['DisplayTranslators']) then -- when template has |display-translators=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end Translators = list_people (control, t, translator_etal); end do -- now do contributors if cfg.global_cs1_config_t['DisplayContributors'] then -- global setting from {{cs1 config}} overrides local setting control.maximum, contributor_etal = get_display_names (cfg.global_cs1_config_t['DisplayContributors'], #c, 'contributors', contributor_etal, 'cs1 config'); else control.maximum, contributor_etal = get_display_names (A['DisplayContributors'], #c, 'contributors', contributor_etal, A:ORIGIN ('DisplayContributors')); end if cfg.global_cs1_config_t['DisplayContributors'] and utilities.is_set (A['DisplayContributors']) then -- when template has |display-contributors=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end Contributors = list_people (control, c, contributor_etal); end do -- now do authors if cfg.global_cs1_config_t['DisplayAuthors'] then -- global setting from {{cs1 config}} overrides local setting control.maximum, author_etal = get_display_names (cfg.global_cs1_config_t['DisplayAuthors'], #a, 'authors', author_etal, 'cs1 config'); else control.maximum, author_etal = get_display_names (A['DisplayAuthors'], #a, 'authors', author_etal, A:ORIGIN ('DisplayAuthors')); end if cfg.global_cs1_config_t['DisplayAuthors'] and utilities.is_set (A['DisplayAuthors']) then -- when template has |display-authors=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end last_first_list = list_people (control, a, author_etal); if utilities.is_set (Authors) then Authors, author_etal = name_has_etal (Authors, author_etal, false, 'authors'); -- find and remove variations on et al. if author_etal then Authors = Authors .. ' ' .. cfg.messages['et al']; -- add et al. to authors parameter end else Authors = last_first_list; -- either an author name list or an empty string end end -- end of do if utilities.is_set (Authors) and utilities.is_set (Collaboration) then Authors = Authors .. ' (' .. Collaboration .. ')'; -- add collaboration after et al. end end local ConferenceFormat = A['ConferenceFormat']; local ConferenceURL = A['ConferenceURL']; ConferenceFormat = style_format (ConferenceFormat, ConferenceURL, 'conference-format', 'conference-url'); Format = style_format (Format, URL, 'format', 'url'); -- special case for chapter format so no error message or cat when chapter not supported if not (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or ('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia))) then ChapterFormat = style_format (ChapterFormat, ChapterURL, 'chapter-format', 'chapter-url'); end if not utilities.is_set (URL) then if utilities.in_array (config.CitationClass, {"web", "podcast", "mailinglist"}) or -- |url= required for cite web, cite podcast, and cite mailinglist ('citation' == config.CitationClass and ('website' == Periodical_origin or 'script-website' == ScriptPeriodical_origin)) then -- and required for {{citation}} with |website= or |script-website= utilities.set_message ('err_cite_web_url'); end -- do we have |accessdate= without either |url= or |chapter-url=? if utilities.is_set (AccessDate) and not utilities.is_set (ChapterURL) then -- ChapterURL may be set when URL is not set; utilities.set_message ('err_accessdate_missing_url'); AccessDate = ''; end end local UrlStatus = is_valid_parameter_value (A['UrlStatus'], A:ORIGIN('UrlStatus'), cfg.keywords_lists['url-status'], ''); local OriginalURL local OriginalURL_origin local OriginalFormat local OriginalAccess; UrlStatus = UrlStatus:lower(); -- used later when assembling archived text if utilities.is_set ( ArchiveURL ) then if utilities.is_set (ChapterURL) then -- if chapter-url= is set apply archive url to it OriginalURL = ChapterURL; -- save copy of source chapter's url for archive text OriginalURL_origin = ChapterURL_origin; -- name of |chapter-url= parameter for error messages OriginalFormat = ChapterFormat; -- and original |chapter-format= if 'live' ~= UrlStatus then ChapterURL = ArchiveURL -- swap-in the archive's URL ChapterURL_origin = A:ORIGIN('ArchiveURL') -- name of |archive-url= parameter for error messages ChapterFormat = ArchiveFormat or ''; -- swap in archive's format ChapterUrlAccess = nil; -- restricted access levels do not make sense for archived URLs end elseif utilities.is_set (URL) then OriginalURL = URL; -- save copy of original source URL OriginalURL_origin = URL_origin; -- name of URL parameter for error messages OriginalFormat = Format; -- and original |format= OriginalAccess = UrlAccess; if 'live' ~= UrlStatus then -- if URL set then |archive-url= applies to it URL = ArchiveURL -- swap-in the archive's URL URL_origin = A:ORIGIN('ArchiveURL') -- name of archive URL parameter for error messages Format = ArchiveFormat or ''; -- swap in archive's format UrlAccess = nil; -- restricted access levels do not make sense for archived URLs end end elseif utilities.is_set (UrlStatus) then -- if |url-status= is set when |archive-url= is not set utilities.set_message ('maint_url_status'); -- add maint cat end if utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or -- if any of the 'periodical' cites except encyclopedia ('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) then local chap_param; if utilities.is_set (Chapter) then -- get a parameter name from one of these chapter related meta-parameters chap_param = A:ORIGIN ('Chapter') elseif utilities.is_set (TransChapter) then chap_param = A:ORIGIN ('TransChapter') elseif utilities.is_set (ChapterURL) then chap_param = A:ORIGIN ('ChapterURL') elseif utilities.is_set (ScriptChapter) then chap_param = ScriptChapter_origin; else utilities.is_set (ChapterFormat) chap_param = A:ORIGIN ('ChapterFormat') end if utilities.is_set (chap_param) then -- if we found one utilities.set_message ('err_chapter_ignored', {chap_param}); -- add error message Chapter = ''; -- and set them to empty string to be safe with concatenation TransChapter = ''; ChapterURL = ''; ScriptChapter = ''; ChapterFormat = ''; end else -- otherwise, format chapter / article title local no_quotes = false; -- default assume that we will be quoting the chapter parameter value if utilities.is_set (Contribution) and 0 < #c then -- if this is a contribution with contributor(s) if utilities.in_array (Contribution:lower(), cfg.keywords_lists.contribution) then -- and a generic contribution title no_quotes = true; -- then render it unquoted end end Chapter = format_chapter_title (ScriptChapter, ScriptChapter_origin, Chapter, Chapter_origin, TransChapter, TransChapter_origin, ChapterURL, ChapterURL_origin, no_quotes, ChapterUrlAccess); -- Contribution is also in Chapter if utilities.is_set (Chapter) then Chapter = Chapter .. ChapterFormat ; if 'map' == config.CitationClass and utilities.is_set (TitleType) then Chapter = Chapter .. ' ' .. TitleType; -- map annotation here; not after title end Chapter = Chapter .. sepc .. ' '; elseif utilities.is_set (ChapterFormat) then -- |chapter= not set but |chapter-format= is so ... Chapter = ChapterFormat .. sepc .. ' '; -- ... ChapterFormat has error message, we want to see it end end -- Format main title local plain_title = false; local accept_title; Title, accept_title = utilities.has_accept_as_written (Title, true); -- remove accept-this-as-written markup when it wraps all of <Title> if accept_title and ('' == Title) then -- only support forced empty for now "(())" Title = cfg.messages['notitle']; -- replace by predefined "No title" message -- TODO: utilities.set_message ( 'err_redundant_parameters', ...); -- issue proper error message instead of muting ScriptTitle = ''; -- just mute for now TransTitle = ''; -- just mute for now plain_title = true; -- suppress text decoration for descriptive title utilities.set_message ('maint_untitled'); -- add maint cat end if not accept_title then -- <Title> not wrapped in accept-as-written markup if '...' == Title:sub (-3) then -- if ellipsis is the last three characters of |title= Title = Title:gsub ('(%.%.%.)%.+$', '%1'); -- limit the number of dots to three elseif not mw.ustring.find (Title, '%.%s*%a%.$') and -- end of title is not a 'dot-(optional space-)letter-dot' initialism ... not mw.ustring.find (Title, '%s+%a%.$') then -- ...and not a 'space-letter-dot' initial (''Allium canadense'' L.) Title = mw.ustring.gsub(Title, '%' .. sepc .. '$', ''); -- remove any trailing separator character; sepc and ms.ustring() here for languages that use multibyte separator characters end if utilities.is_set (ArchiveURL) and is_archived_copy (Title) then utilities.set_message ('maint_archived_copy'); -- add maintenance category before we modify the content of Title end if is_generic ('generic_titles', Title) then utilities.set_message ('err_generic_title'); -- set an error message end end if (not plain_title) and (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'document', 'pressrelease', 'podcast', 'newsgroup', 'mailinglist', 'interview', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or ('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) or ('map' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)))) then -- special case for cite map when the map is in a periodical treat as an article Title = kern_quotes (Title); -- if necessary, separate title's leading and trailing quote marks from module provided quote marks Title = utilities.wrap_style ('quoted-title', Title); Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle ); elseif plain_title or ('report' == config.CitationClass) then -- no styling for cite report and descriptive titles (otherwise same as above) Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle ); -- for cite report, use this form for trans-title else Title = utilities.wrap_style ('italic-title', Title); Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped TransTitle = utilities.wrap_style ('trans-italic-title', TransTitle); end if utilities.is_set (TransTitle) then if utilities.is_set (Title) then TransTitle = " " .. TransTitle; else utilities.set_message ('err_trans_missing_title', {'title'}); end end if utilities.is_set (Title) then -- TODO: is this the right place to be making Wikisource URLs? if utilities.is_set (TitleLink) and utilities.is_set (URL) then utilities.set_message ('err_wikilink_in_url'); -- set an error message because we can't have both TitleLink = ''; -- unset end if not utilities.is_set (TitleLink) and utilities.is_set (URL) then Title = external_link (URL, Title, URL_origin, UrlAccess) .. TransTitle .. Format; URL = ''; -- unset these because no longer needed Format = ""; elseif utilities.is_set (TitleLink) and not utilities.is_set (URL) then local ws_url; ws_url = wikisource_url_make (TitleLink); -- ignore ws_label return; not used here if ws_url then Title = external_link (ws_url, Title .. '&nbsp;', 'ws link in title-link'); -- space char after Title to move icon away from italic text; TODO: a better way to do this? Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], TitleLink, Title}); Title = Title .. TransTitle; else Title = utilities.make_wikilink (TitleLink, Title) .. TransTitle; end else local ws_url, ws_label, L; -- Title has italic or quote markup by the time we get here which causes is_wikilink() to return 0 (not a wikilink) ws_url, ws_label, L = wikisource_url_make (Title:gsub('^[\'"]*(.-)[\'"]*$', '%1')); -- make ws URL from |title= interwiki link (strip italic or quote markup); link portion L becomes tooltip label if ws_url then Title = Title:gsub ('%b[]', ws_label); -- replace interwiki link with ws_label to retain markup Title = external_link (ws_url, Title .. '&nbsp;', 'ws link in title'); -- space char after Title to move icon away from italic text; TODO: a better way to do this? Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, Title}); Title = Title .. TransTitle; else Title = Title .. TransTitle; end end else Title = TransTitle; end if utilities.is_set (Place) then Place = " " .. wrap_msg ('written', Place, use_lowercase) .. sepc .. " "; end local ConferenceURL_origin = A:ORIGIN('ConferenceURL'); -- get name of parameter that holds ConferenceURL if utilities.is_set (Conference) then if utilities.is_set (ConferenceURL) then Conference = external_link( ConferenceURL, Conference, ConferenceURL_origin, nil ); end Conference = sepc .. " " .. Conference .. ConferenceFormat; elseif utilities.is_set (ConferenceURL) then Conference = sepc .. " " .. external_link( ConferenceURL, nil, ConferenceURL_origin, nil ); end local Position = ''; if not utilities.is_set (Position) then local Minutes = A['Minutes']; local Time = A['Time']; if utilities.is_set (Minutes) then if utilities.is_set (Time) then --TODO: make a function for this and similar? utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'minutes') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'time')}); end Position = " " .. Minutes .. " " .. cfg.messages['minutes']; else if utilities.is_set (Time) then local TimeCaption = A['TimeCaption'] if not utilities.is_set (TimeCaption) then TimeCaption = cfg.messages['event']; if sepc ~= '.' then TimeCaption = TimeCaption:lower(); end end Position = " " .. TimeCaption .. " " .. Time; end end else Position = " " .. Position; At = ''; end Page, Pages, Sheet, Sheets = format_pages_sheets (Page, Pages, Sheet, Sheets, config.CitationClass, Periodical_origin, sepc, NoPP, use_lowercase); At = utilities.is_set (At) and (sepc .. " " .. At) or ""; Position = utilities.is_set (Position) and (sepc .. " " .. Position) or ""; if config.CitationClass == 'map' then local Sections = A['Sections']; -- Section (singular) is an alias of Chapter so set earlier local Inset = A['Inset']; if utilities.is_set ( Inset ) then Inset = sepc .. " " .. wrap_msg ('inset', Inset, use_lowercase); end if utilities.is_set ( Sections ) then Section = sepc .. " " .. wrap_msg ('sections', Sections, use_lowercase); elseif utilities.is_set ( Section ) then Section = sepc .. " " .. wrap_msg ('section', Section, use_lowercase); end At = At .. Inset .. Section; end local Others = A['Others']; if utilities.is_set (Others) and 0 == #a and 0 == #e then -- add maint cat when |others= has value and used without |author=, |editor= if config.CitationClass == "AV-media-notes" or config.CitationClass == "audio-visual" then -- special maint for AV/M which has a lot of 'false' positives right now utilities.set_message ('maint_others_avm') else utilities.set_message ('maint_others'); end end Others = utilities.is_set (Others) and (sepc .. " " .. Others) or ""; if utilities.is_set (Translators) then Others = safe_join ({sepc .. ' ', wrap_msg ('translated', Translators, use_lowercase), Others}, sepc); end if utilities.is_set (Interviewers) then Others = safe_join ({sepc .. ' ', wrap_msg ('interview', Interviewers, use_lowercase), Others}, sepc); end local TitleNote = A['TitleNote']; TitleNote = utilities.is_set (TitleNote) and (sepc .. " " .. TitleNote) or ""; if utilities.is_set (Edition) then if Edition:match ('%f[%a][Ee]d%n?%.?$') or Edition:match ('%f[%a][Ee]dition$') then -- Ed, ed, Ed., ed., Edn, edn, Edn., edn. utilities.set_message ('err_extra_text_edition'); -- add error message end Edition = " " .. wrap_msg ('edition', Edition); else Edition = ''; end Series = utilities.is_set (Series) and wrap_msg ('series', {sepc, Series}) or ""; -- not the same as SeriesNum local Agency = A['Agency']; Agency = utilities.is_set (Agency) and wrap_msg ('agency', {sepc, Agency}) or ""; Volume = format_volume_issue (Volume, Issue, ArticleNumber, config.CitationClass, Periodical_origin, sepc, use_lowercase); if utilities.is_set (AccessDate) then local retrv_text = " " .. cfg.messages['retrieved'] AccessDate = nowrap_date (AccessDate); -- wrap in nowrap span if date in appropriate format if (sepc ~= ".") then retrv_text = retrv_text:lower() end -- if mode is cs2, lower case AccessDate = utilities.substitute (retrv_text, AccessDate); -- add retrieved text AccessDate = utilities.substitute (cfg.presentation['accessdate'], {sepc, AccessDate}); -- allow editors to hide accessdates end if utilities.is_set (ID) then ID = sepc .. " " .. ID; end local Docket = A['Docket']; if "thesis" == config.CitationClass and utilities.is_set (Docket) then ID = sepc .. " Docket " .. Docket .. ID; end if "report" == config.CitationClass and utilities.is_set (Docket) then -- for cite report when |docket= is set ID = sepc .. ' ' .. Docket; -- overwrite ID even if |id= is set end if utilities.is_set (URL) then URL = " " .. external_link( URL, nil, URL_origin, UrlAccess ); end local Quote = A['Quote']; local TransQuote = A['TransQuote']; local ScriptQuote = A['ScriptQuote']; if utilities.is_set (Quote) or utilities.is_set (TransQuote) or utilities.is_set (ScriptQuote) then if utilities.is_set (Quote) then if Quote:sub(1, 1) == '"' and Quote:sub(-1, -1) == '"' then -- if first and last characters of quote are quote marks Quote = Quote:sub(2, -2); -- strip them off end end Quote = kern_quotes (Quote); -- kern if needed Quote = utilities.wrap_style ('quoted-text', Quote ); -- wrap in <q>...</q> tags if utilities.is_set (ScriptQuote) then Quote = script_concatenate (Quote, ScriptQuote, 'script-quote'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after quote is wrapped end if utilities.is_set (TransQuote) then if TransQuote:sub(1, 1) == '"' and TransQuote:sub(-1, -1) == '"' then -- if first and last characters of |trans-quote are quote marks TransQuote = TransQuote:sub(2, -2); -- strip them off end Quote = Quote .. " " .. utilities.wrap_style ('trans-quoted-title', TransQuote ); end if utilities.is_set (QuotePage) or utilities.is_set (QuotePages) then -- add page prefix local quote_prefix = ''; if utilities.is_set (QuotePage) then extra_text_in_page_check (QuotePage, 'quote-page'); -- add to maint cat if |quote-page= value begins with what looks like p., pp., etc. if not NoPP then quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePage}), '', '', ''; else quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePage}), '', '', ''; end elseif utilities.is_set (QuotePages) then extra_text_in_page_check (QuotePages, 'quote-pages'); -- add to maint cat if |quote-pages= value begins with what looks like p., pp., etc. if tonumber(QuotePages) ~= nil and not NoPP then -- if only digits, assume single page quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePages}), '', ''; elseif not NoPP then quote_prefix = utilities.substitute (cfg.messages['pp-prefix'], {sepc, QuotePages}), '', ''; else quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePages}), '', ''; end end Quote = quote_prefix .. ": " .. Quote; else Quote = sepc .. " " .. Quote; end PostScript = ""; -- cs1|2 does not supply terminal punctuation when |quote= is set end -- We check length of PostScript here because it will have been nuked by -- the quote parameters. We'd otherwise emit a message even if there wasn't -- a displayed postscript. -- TODO: Should the max size (1) be configurable? -- TODO: Should we check a specific pattern? if utilities.is_set(PostScript) and mw.ustring.len(PostScript) > 1 then utilities.set_message ('maint_postscript') end local Archived; if utilities.is_set (ArchiveURL) then if not utilities.is_set (ArchiveDate) then -- ArchiveURL set but ArchiveDate not set utilities.set_message ('err_archive_missing_date'); -- emit an error message ArchiveURL = ''; -- empty string for concatenation ArchiveDate = ''; -- empty string for concatenation end else if utilities.is_set (ArchiveDate) then -- ArchiveURL not set but ArchiveDate is set utilities.set_message ('err_archive_date_missing_url'); -- emit an error message ArchiveURL = ''; -- empty string for concatenation ArchiveDate = ''; -- empty string for concatenation end end if utilities.is_set (ArchiveURL) then local arch_text; -- if not utilities.is_set (ArchiveDate) then -- utilities.set_message ('err_archive_missing_date'); -- ArchiveDate = ''; -- empty string for concatenation -- end if "live" == UrlStatus then arch_text = cfg.messages['archived']; if sepc ~= "." then arch_text = arch_text:lower() end if utilities.is_set (ArchiveDate) then Archived = sepc .. ' ' .. utilities.substitute ( cfg.messages['archived-live'], {external_link( ArchiveURL, arch_text, A:ORIGIN('ArchiveURL'), nil) .. ArchiveFormat, ArchiveDate } ); else Archived = ''; end if not utilities.is_set (OriginalURL) then utilities.set_message ('err_archive_missing_url'); Archived = ''; -- empty string for concatenation end elseif utilities.is_set (OriginalURL) then -- UrlStatus is empty, 'dead', 'unfit', 'usurped', 'bot: unknown' if utilities.in_array (UrlStatus, {'unfit', 'usurped', 'bot: unknown'}) then arch_text = cfg.messages['archived-unfit']; if sepc ~= "." then arch_text = arch_text:lower() end Archived = sepc .. ' ' .. arch_text .. ArchiveDate; -- format already styled if 'bot: unknown' == UrlStatus then utilities.set_message ('maint_bot_unknown'); -- and add a category if not already added else utilities.set_message ('maint_unfit'); -- and add a category if not already added end else -- UrlStatus is empty, 'dead' arch_text = cfg.messages['archived-dead']; if sepc ~= "." then arch_text = arch_text:lower() end if utilities.is_set (ArchiveDate) then Archived = sepc .. " " .. utilities.substitute ( arch_text, { external_link( OriginalURL, cfg.messages['original'], OriginalURL_origin, OriginalAccess ) .. OriginalFormat, ArchiveDate } ); -- format already styled else Archived = ''; -- unset for concatenation end end else -- OriginalUrl not set utilities.set_message ('err_archive_missing_url'); Archived = ''; -- empty string for concatenation end elseif utilities.is_set (ArchiveFormat) then Archived = ArchiveFormat; -- if set and ArchiveURL not set ArchiveFormat has error message else Archived = ''; end -- local Lay = ''; -- local LaySource = A['LaySource']; -- local LayURL = A['LayURL']; -- local LayFormat = A['LayFormat']; -- LayFormat = style_format (LayFormat, LayURL, 'lay-format', 'lay-url'); -- if utilities.is_set (LayURL) then -- if utilities.is_set (LayDate) then LayDate = " (" .. LayDate .. ")" end -- if utilities.is_set (LaySource) then -- LaySource = " &ndash; ''" .. utilities.safe_for_italics (LaySource) .. "''"; -- else -- LaySource = ""; -- end -- if sepc == '.' then -- Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary'], A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate -- else -- Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary']:lower(), A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate -- end -- elseif utilities.is_set (LayFormat) then -- Test if |lay-format= is given without giving a |lay-url= -- Lay = sepc .. LayFormat; -- if set and LayURL not set, then LayFormat has error message -- end local TranscriptURL = A['TranscriptURL'] local TranscriptFormat = A['TranscriptFormat']; TranscriptFormat = style_format (TranscriptFormat, TranscriptURL, 'transcript-format', 'transcripturl'); local Transcript = A['Transcript']; local TranscriptURL_origin = A:ORIGIN('TranscriptURL'); -- get name of parameter that holds TranscriptURL if utilities.is_set (Transcript) then if utilities.is_set (TranscriptURL) then Transcript = external_link( TranscriptURL, Transcript, TranscriptURL_origin, nil ); end Transcript = sepc .. ' ' .. Transcript .. TranscriptFormat; elseif utilities.is_set (TranscriptURL) then Transcript = external_link( TranscriptURL, nil, TranscriptURL_origin, nil ); end local Publisher; if utilities.is_set (PublicationDate) then PublicationDate = wrap_msg ('published', PublicationDate); end if utilities.is_set (PublisherName) then if utilities.is_set (PublicationPlace) then Publisher = sepc .. " " .. PublicationPlace .. ": " .. PublisherName .. PublicationDate; else Publisher = sepc .. " " .. PublisherName .. PublicationDate; end elseif utilities.is_set (PublicationPlace) then Publisher= sepc .. " " .. PublicationPlace .. PublicationDate; else Publisher = PublicationDate; end -- Several of the above rely upon detecting this as nil, so do it last. if (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (TransPeriodical)) then if utilities.is_set (Title) or utilities.is_set (TitleNote) then Periodical = sepc .. " " .. format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin); else Periodical = format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin); end end local Language = A['Language']; if utilities.is_set (Language) then Language = language_parameter (Language); -- format, categories, name from ISO639-1, etc. else Language=''; -- language not specified so make sure this is an empty string; --[[ TODO: need to extract the wrap_msg from language_parameter so that we can solve parentheses bunching problem with Format/Language/TitleType ]] end --[[ Handle the oddity that is cite speech. This code overrides whatever may be the value assigned to TitleNote (through |department=) and forces it to be " (Speech)" so that the annotation directly follows the |title= parameter value in the citation rather than the |event= parameter value (if provided). ]] if "speech" == config.CitationClass then -- cite speech only TitleNote = TitleType; -- move TitleType to TitleNote so that it renders ahead of |event= TitleType = ''; -- and unset if utilities.is_set (Periodical) then -- if Periodical, perhaps because of an included |website= or |journal= parameter if utilities.is_set (Conference) then -- and if |event= is set Conference = Conference .. sepc .. " "; -- then add appropriate punctuation to the end of the Conference variable before rendering end end end -- Piece all bits together at last. Here, all should be non-nil. -- We build things this way because it is more efficient in LUA -- not to keep reassigning to the same string variable over and over. local tcommon; local tcommon2; -- used for book cite when |contributor= is set if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then if not (utilities.is_set (Authors) or utilities.is_set (Editors)) then Others = Others:gsub ('^' .. sepc .. ' ', ''); -- when no authors and no editors, strip leading sepc and space end if utilities.is_set (Others) then Others = safe_join ({Others, sepc .. " "}, sepc) end -- add terminal punctuation & space; check for dup sepc; TODO why do we need to do this here? tcommon = safe_join( {Others, Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Edition, Publisher, Agency, Volume}, sepc ); elseif utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (Periodical) then -- special cases for book cites if utilities.is_set (Contributors) then -- when we are citing foreword, preface, introduction, etc. tcommon = safe_join( {Title, TitleNote}, sepc ); -- author and other stuff will come after this and before tcommon2 tcommon2 = safe_join( {Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc ); else tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc ); end elseif 'map' == config.CitationClass then -- special cases for cite map if utilities.is_set (Chapter) then -- map in a book; TitleType is part of Chapter tcommon = safe_join( {Title, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc ); elseif utilities.is_set (Periodical) then -- map in a periodical tcommon = safe_join( {Title, TitleType, Format, Periodical, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc ); else -- a sheet or stand-alone map tcommon = safe_join( {Title, TitleType, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher}, sepc ); end elseif 'episode' == config.CitationClass then -- special case for cite episode tcommon = safe_join( {Title, TitleNote, TitleType, Series, Language, Edition, Publisher}, sepc ); else -- all other CS1 templates tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc ); end if #ID_list > 0 then ID_list = safe_join( { sepc .. " ", table.concat( ID_list, sepc .. " " ), ID }, sepc ); else ID_list = ID; end local Via = A['Via']; Via = utilities.is_set (Via) and wrap_msg ('via', Via) or ''; local idcommon; if 'audio-visual' == config.CitationClass or 'episode' == config.CitationClass then -- special case for cite AV media & cite episode position transcript -- idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, Lay, Quote }, sepc ); idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, Quote }, sepc ); else -- idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, Lay, Quote }, sepc ); idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, Quote }, sepc ); end local text; local pgtext = Position .. Sheet .. Sheets .. Page .. Pages .. At; local OrigDate = A['OrigDate']; OrigDate = utilities.is_set (OrigDate) and wrap_msg ('origdate', OrigDate) or ''; if utilities.is_set (Date) then if utilities.is_set (Authors) or utilities.is_set (Editors) then -- date follows authors or editors when authors not set Date = " (" .. Date .. ")" .. OrigDate .. sepc .. " "; -- in parentheses else -- neither of authors and editors set if (string.sub(tcommon, -1, -1) == sepc) then -- if the last character of tcommon is sepc Date = " " .. Date .. OrigDate; -- Date does not begin with sepc else Date = sepc .. " " .. Date .. OrigDate; -- Date begins with sepc end end end if utilities.is_set (Authors) then if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Authors termination Authors = terminate_name_list (Authors, sepc); -- when no date, terminate with 0 or 1 sepc and a space end if utilities.is_set (Editors) then local in_text = ''; local post_text = ''; if utilities.is_set (Chapter) and 0 == #c then in_text = cfg.messages['in'] .. ' '; if (sepc ~= '.') then in_text = in_text:lower(); -- lowercase for cs2 end end if EditorCount <= 1 then post_text = ' (' .. cfg.messages['editor'] .. ')'; -- be consistent with no-author, no-date case else post_text = ' (' .. cfg.messages['editors'] .. ')'; end Editors = terminate_name_list (in_text .. Editors .. post_text, sepc); -- terminate with 0 or 1 sepc and a space end if utilities.is_set (Contributors) then -- book cite and we're citing the intro, preface, etc. local by_text = sepc .. ' ' .. cfg.messages['by'] .. ' '; if (sepc ~= '.') then by_text = by_text:lower() end -- lowercase for cs2 Authors = by_text .. Authors; -- author follows title so tweak it here if utilities.is_set (Editors) and utilities.is_set (Date) then -- when Editors make sure that Authors gets terminated Authors = terminate_name_list (Authors, sepc); -- terminate with 0 or 1 sepc and a space end if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Contributors termination Contributors = terminate_name_list (Contributors, sepc); -- terminate with 0 or 1 sepc and a space end text = safe_join( {Contributors, Date, Chapter, tcommon, Authors, Place, Editors, tcommon2, pgtext, idcommon }, sepc ); else text = safe_join( {Authors, Date, Chapter, Place, Editors, tcommon, pgtext, idcommon }, sepc ); end elseif utilities.is_set (Editors) then if utilities.is_set (Date) then if EditorCount <= 1 then Editors = Editors .. cfg.presentation['sep_name'] .. cfg.messages['editor']; else Editors = Editors .. cfg.presentation['sep_name'] .. cfg.messages['editors']; end else if EditorCount <= 1 then Editors = Editors .. " (" .. cfg.messages['editor'] .. ")" .. sepc .. " " else Editors = Editors .. " (" .. cfg.messages['editors'] .. ")" .. sepc .. " " end end text = safe_join( {Editors, Date, Chapter, Place, tcommon, pgtext, idcommon}, sepc ); else if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then text = safe_join( {Chapter, Place, tcommon, pgtext, Date, idcommon}, sepc ); else text = safe_join( {Chapter, Place, tcommon, Date, pgtext, idcommon}, sepc ); end end if utilities.is_set (PostScript) and PostScript ~= sepc then text = safe_join( {text, sepc}, sepc ); -- Deals with italics, spaces, etc. text = text:sub(1, -sepc:len() - 1); end text = safe_join( {text, PostScript}, sepc ); -- Now enclose the whole thing in a <cite> element local options_t = {}; options_t.class = cite_class_attribute_make (config.CitationClass, Mode); local Ref = is_valid_parameter_value (A['Ref'], A:ORIGIN('Ref'), cfg.keywords_lists['ref'], nil, true); -- nil when |ref=harv; A['Ref'] else if 'none' ~= cfg.keywords_xlate[(Ref and Ref:lower()) or ''] then local namelist_t = {}; -- holds selected contributor, author, editor name list local year = first_set ({Year, anchor_year}, 2); -- Year first for legacy citations and for YMD dates that require disambiguation if #c > 0 then -- if there is a contributor list namelist_t = c; -- select it elseif #a > 0 then -- or an author list namelist_t = a; elseif #e > 0 then -- or an editor list namelist_t = e; end local citeref_id; if #namelist_t > 0 then -- if there are names in namelist_t citeref_id = make_citeref_id (namelist_t, year); -- go make the CITEREF anchor if mw.uri.anchorEncode (citeref_id) == ((Ref and mw.uri.anchorEncode (Ref)) or '') then -- Ref may already be encoded (by {{sfnref}}) so citeref_id must be encoded before comparison utilities.set_message ('maint_ref_duplicates_default'); end else citeref_id = ''; -- unset end options_t.id = Ref or citeref_id; end if string.len (text:gsub('%b<>', '')) <= 2 then -- remove html and html-like tags; then get length of what remains; z.error_cats_t = {}; -- blank the categories list z.error_msgs_t = {}; -- blank the error messages list OCinSoutput = nil; -- blank the metadata string text = ''; -- blank the the citation utilities.set_message ('err_empty_citation'); -- set empty citation message and category end local render_t = {}; -- here we collect the final bits for concatenation into the rendered citation if utilities.is_set (options_t.id) then -- here we wrap the rendered citation in <cite ...>...</cite> tags table.insert (render_t, utilities.substitute (cfg.presentation['cite-id'], {mw.uri.anchorEncode(options_t.id), mw.text.nowiki(options_t.class), text})); -- when |ref= is set or when there is a namelist else table.insert (render_t, utilities.substitute (cfg.presentation['cite'], {mw.text.nowiki(options_t.class), text})); -- when |ref=none or when namelist_t empty and |ref= is missing or is empty end if OCinSoutput then -- blanked when citation is 'empty' so don't bother to add boilerplate metadata span table.insert (render_t, utilities.substitute (cfg.presentation['ocins'], OCinSoutput)); -- format and append metadata to the citation end local template_name = ('citation' == config.CitationClass) and 'citation' or 'cite ' .. (cfg.citation_class_map_t[config.CitationClass] or config.CitationClass); local template_link = '[[Template:' .. template_name .. '|' .. template_name .. ']]'; local msg_prefix = '<code class="cs1-code">{{' .. template_link .. '}}</code>: '; if 0 ~= #z.error_msgs_t then mw.addWarning (utilities.substitute (cfg.messages.warning_msg_e, template_link)); table.insert (render_t, ' '); -- insert a space between citation and its error messages table.sort (z.error_msgs_t); -- sort the error messages list; sorting includes wrapping <span> and <code> tags; hidden-error sorts ahead of visible-error local hidden = true; -- presume that the only error messages emited by this template are hidden for _, v in ipairs (z.error_msgs_t) do -- spin through the list of error messages if v:find ('cs1-visible-error', 1, true) then -- look for the visible error class name hidden = false; -- found one; so don't hide the error message prefix break; -- and done because no need to look further end end z.error_msgs_t[1] = table.concat ({utilities.error_comment (msg_prefix, hidden), z.error_msgs_t[1]}); -- add error message prefix to first error message to prevent extraneous punctuation table.insert (render_t, table.concat (z.error_msgs_t, '; ')); -- make a big string of error messages and add it to the rendering end if 0 ~= #z.maint_cats_t then mw.addWarning (utilities.substitute (cfg.messages.warning_msg_m, template_link)); table.sort (z.maint_cats_t); -- sort the maintenance messages list local maint_msgs_t = {}; -- here we collect all of the maint messages if 0 == #z.error_msgs_t then -- if no error messages table.insert (maint_msgs_t, msg_prefix); -- insert message prefix in maint message livery end for _, v in ipairs( z.maint_cats_t ) do -- append maintenance categories table.insert (maint_msgs_t, -- assemble new maint message and add it to the maint_msgs_t table table.concat ({v, ' (', utilities.substitute (cfg.messages[':cat wikilink'], v), ')'}) ); end table.insert (render_t, utilities.substitute (cfg.presentation['hidden-maint'], table.concat (maint_msgs_t, ' '))); -- wrap the group of maint messages with proper presentation and save end if not no_tracking_cats then for _, v in ipairs (z.error_cats_t) do -- append error categories table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v)); end for _, v in ipairs (z.maint_cats_t) do -- append maintenance categories table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v)); end for _, v in ipairs (z.prop_cats_t) do -- append properties categories table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v)); end end return table.concat (render_t); -- make a big string and done end --[[--------------------------< V A L I D A T E >-------------------------------------------------------------- Looks for a parameter's name in one of several whitelists. Parameters in the whitelist can have three values: true - active, supported parameters false - deprecated, supported parameters nil - unsupported parameters ]] local function validate (name, cite_class, empty) local name = tostring (name); local enum_name; -- parameter name with enumerator (if any) replaced with '#' local state; local function state_test (state, name) -- local function to do testing of state values if true == state then return true; end -- valid actively supported parameter if false == state then if empty then return nil; end -- empty deprecated parameters are treated as unknowns deprecated_parameter (name); -- parameter is deprecated but still supported return true; end if 'tracked' == state then local base_name = name:gsub ('%d', ''); -- strip enumerators from parameter names that have them to get the base name utilities.add_prop_cat ('tracked-param', {base_name}, base_name); -- add a properties category; <base_name> modifies <key> return true; end return nil; end if name:find ('#') then -- # is a cs1|2 reserved character so parameters with # not permitted return nil; end -- replace wnumerator digit(s) with # (|last25= becomes |last#=) (mw.ustring because non-Western 'local' digits) enum_name = mw.ustring.gsub (name, '%d+$', '#'); -- where enumerator is last charaters in parameter name (these to protect |s2cid=) enum_name = mw.ustring.gsub (enum_name, '%d+([%-l])', '#%1'); -- where enumerator is in the middle of the parameter name; |author#link= is the oddity if 'document' == cite_class then -- special case for {{cite document}} state = whitelist.document_parameters_t[enum_name]; -- this list holds enumerated and nonenumerated parameters if true == state_test (state, name) then return true; end return false; end if utilities.in_array (cite_class, whitelist.preprint_template_list_t) then -- limited parameter sets allowed for these templates state = whitelist.limited_parameters_t[enum_name]; -- this list holds enumerated and nonenumerated parameters if true == state_test (state, name) then return true; end state = whitelist.preprint_arguments_t[cite_class][name]; -- look in the parameter-list for the template identified by cite_class if true == state_test (state, name) then return true; end return false; -- not supported because not found or name is set to nil end -- end limited parameter-set templates if utilities.in_array (cite_class, whitelist.unique_param_template_list_t) then -- template-specific parameters for templates that accept parameters from the basic argument list state = whitelist.unique_arguments_t[cite_class][name]; -- look in the template-specific parameter-lists for the template identified by cite_class if true == state_test (state, name) then return true; end end -- if here, fall into general validation state = whitelist.common_parameters_t[enum_name]; -- all other templates; all normal parameters allowed; this list holds enumerated and nonenumerated parameters if true == state_test (state, name) then return true; end return false; -- not supported because not found or name is set to nil end --[=[-------------------------< I N T E R _ W I K I _ C H E C K >---------------------------------------------- check <value> for inter-language interwiki-link markup. <prefix> must be a MediaWiki-recognized language code. when these values have the form (without leading colon): [[<prefix>:link|label]] return label as plain-text [[<prefix>:link]] return <prefix>:link as plain-text return value as is else ]=] local function inter_wiki_check (parameter, value) local prefix = value:match ('%[%[(%a+):'); -- get an interwiki prefix if one exists local _; if prefix and cfg.inter_wiki_map[prefix:lower()] then -- if prefix is in the map, needs preceding colon so utilities.set_message ('err_bad_paramlink', parameter); -- emit an error message _, value, _ = utilities.is_wikilink (value); -- extract label portion from wikilink end return value; end --[[--------------------------< M I S S I N G _ P I P E _ C H E C K >------------------------------------------ Look at the contents of a parameter. If the content has a string of characters and digits followed by an equal sign, compare the alphanumeric string to the list of cs1|2 parameters. If found, then the string is possibly a parameter that is missing its pipe. There are two tests made: {{cite ... |title=Title access-date=2016-03-17}} -- the first parameter has a value and whitespace separates that value from the missing pipe parameter name {{cite ... |title=access-date=2016-03-17}} -- the first parameter has no value (whitespace after the first = is trimmed by MediaWiki) cs1|2 shares some parameter names with XML/HTML attributes: class=, title=, etc. To prevent false positives XML/HTML tags are removed before the search. If a missing pipe is detected, this function adds the missing pipe maintenance category. ]] local function missing_pipe_check (parameter, value) local capture; value = value:gsub ('%b<>', ''); -- remove XML/HTML tags because attributes: class=, title=, etc. capture = value:match ('%s+(%a[%w%-]+)%s*=') or value:match ('^(%a[%w%-]+)%s*='); -- find and categorize parameters with possible missing pipes if capture and validate (capture) then -- if the capture is a valid parameter name utilities.set_message ('err_missing_pipe', parameter); end end --[[--------------------------< H A S _ E X T R A N E O U S _ P U N C T >-------------------------------------- look for extraneous terminal punctuation in most parameter values; parameters listed in skip table are not checked ]] local function has_extraneous_punc (param, value) if 'number' == type (param) then return; end param = param:gsub ('%d+', '#'); -- enumerated name-list mask params allow terminal punct; normalize if cfg.punct_skip[param] then return; -- parameter name found in the skip table so done end if value:match ('[,;:]$') then utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat end if value:match ('^=') then -- sometimes an extraneous '=' character appears ... utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat end end --[[--------------------------< H A S _ E X T R A N E O U S _ U R L >------------------------------------------ look for extraneous url parameter values; parameters listed in skip table are not checked ]] local function has_extraneous_url (url_param_t) local url_error_t = {}; check_for_url (url_param_t, url_error_t); -- extraneous url check if 0 ~= #url_error_t then -- non-zero when there are errors table.sort (url_error_t); utilities.set_message ('err_param_has_ext_link', {utilities.make_sep_list (#url_error_t, url_error_t)}); -- add this error message end end --[[--------------------------< C I T A T I O N >-------------------------------------------------------------- This is used by templates such as {{cite book}} to create the actual citation text. ]] local function citation(frame) Frame = frame; -- save a copy in case we need to display an error message in preview mode local config = {}; -- table to store parameters from the module {{#invoke:}} for k, v in pairs( frame.args ) do -- get parameters from the {{#invoke}} frame config[k] = v; -- args[k] = v; -- crude debug support that allows us to render a citation from module {{#invoke:}}; skips parameter validation; TODO: keep? end -- i18n: set the name that your wiki uses to identify sandbox subpages from sandbox template invoke (or can be set here) local sandbox = ((config.SandboxPath and '' ~= config.SandboxPath) and config.SandboxPath) or '/sandbox'; -- sandbox path from {{#invoke:Citation/CS1/sandbox|citation|SandboxPath=/...}} is_sandbox = nil ~= string.find (frame:getTitle(), sandbox, 1, true); -- is this invoke the sandbox module? sandbox = is_sandbox and sandbox or ''; -- use i18n sandbox to load sandbox modules when this module is the sandox; live modules else local pframe = frame:getParent() local styles; cfg = mw.loadData ('Module:Citation/CS1/Configuration' .. sandbox); -- load sandbox versions of support modules when {{#invoke:Citation/CS1/sandbox|...}}; live modules else whitelist = mw.loadData ('Module:Citation/CS1/Whitelist' .. sandbox); utilities = require ('Module:Citation/CS1/Utilities' .. sandbox); validation = require ('Module:Citation/CS1/Date_validation' .. sandbox); identifiers = require ('Module:Citation/CS1/Identifiers' .. sandbox); metadata = require ('Module:Citation/CS1/COinS' .. sandbox); styles = 'Module:Citation/CS1' .. sandbox .. '/styles.css'; utilities.set_selected_modules (cfg); -- so that functions in Utilities can see the selected cfg tables identifiers.set_selected_modules (cfg, utilities); -- so that functions in Identifiers can see the selected cfg tables and selected Utilities module validation.set_selected_modules (cfg, utilities); -- so that functions in Date validataion can see selected cfg tables and the selected Utilities module metadata.set_selected_modules (cfg, utilities); -- so that functions in COinS can see the selected cfg tables and selected Utilities module z = utilities.z; -- table of error and category tables in Module:Citation/CS1/Utilities is_preview_mode = not utilities.is_set (frame:preprocess ('{{REVISIONID}}')); local args = {}; -- table where we store all of the template's arguments local suggestions = {}; -- table where we store suggestions if we need to loadData them local error_text; -- used as a flag local capture; -- the single supported capture when matching unknown parameters using patterns local empty_unknowns = {}; -- sequence table to hold empty unknown params for error message listing for k, v in pairs( pframe.args ) do -- get parameters from the parent (template) frame v = mw.ustring.gsub (v, '^%s*(.-)%s*$', '%1'); -- trim leading/trailing whitespace; when v is only whitespace, becomes empty string if v ~= '' then if ('string' == type (k)) then k = mw.ustring.gsub (k, '%d', cfg.date_names.local_digits); -- for enumerated parameters, translate 'local' digits to Western 0-9 end if not validate( k, config.CitationClass ) then if type (k) ~= 'string' then -- exclude empty numbered parameters if v:match("%S+") ~= nil then error_text = utilities.set_message ('err_text_ignored', {v}); end elseif validate (k:lower(), config.CitationClass) then error_text = utilities.set_message ('err_parameter_ignored_suggest', {k, k:lower()}); -- suggest the lowercase version of the parameter else if nil == suggestions.suggestions then -- if this table is nil then we need to load it suggestions = mw.loadData ('Module:Citation/CS1/Suggestions' .. sandbox); --load sandbox version of suggestion module when {{#invoke:Citation/CS1/sandbox|...}}; live module else end for pattern, param in pairs (suggestions.patterns) do -- loop through the patterns to see if we can suggest a proper parameter capture = k:match (pattern); -- the whole match if no capture in pattern else the capture if a match if capture then -- if the pattern matches param = utilities.substitute (param, capture); -- add the capture to the suggested parameter (typically the enumerator) if validate (param, config.CitationClass) then -- validate the suggestion to make sure that the suggestion is supported by this template (necessary for limited parameter lists) error_text = utilities.set_message ('err_parameter_ignored_suggest', {k, param}); -- set the suggestion error message else error_text = utilities.set_message ('err_parameter_ignored', {k}); -- suggested param not supported by this template v = ''; -- unset end end end if not utilities.is_set (error_text) then -- couldn't match with a pattern, is there an explicit suggestion? if (suggestions.suggestions[ k:lower() ] ~= nil) and validate (suggestions.suggestions[ k:lower() ], config.CitationClass) then utilities.set_message ('err_parameter_ignored_suggest', {k, suggestions.suggestions[ k:lower() ]}); else utilities.set_message ('err_parameter_ignored', {k}); v = ''; -- unset value assigned to unrecognized parameters (this for the limited parameter lists) end end end end args[k] = v; -- save this parameter and its value elseif not utilities.is_set (v) then -- for empty parameters if not validate (k, config.CitationClass, true) then -- is this empty parameter a valid parameter k = ('' == k) and '(empty string)' or k; -- when k is empty string (or was space(s) trimmed to empty string), replace with descriptive text table.insert (empty_unknowns, utilities.wrap_style ('parameter', k)); -- format for error message and add to the list end -- crude debug support that allows us to render a citation from module {{#invoke:}} TODO: keep? -- elseif args[k] ~= nil or (k == 'postscript') then -- when args[k] has a value from {{#invoke}} frame (we don't normally do that) -- args[k] = v; -- overwrite args[k] with empty string from pframe.args[k] (template frame); v is empty string here end -- not sure about the postscript bit; that gets handled in parameter validation; historical artifact? end if 0 ~= #empty_unknowns then -- create empty unknown error message utilities.set_message ('err_param_unknown_empty', { 1 == #empty_unknowns and '' or 's', utilities.make_sep_list (#empty_unknowns, empty_unknowns) }); end local url_param_t = {}; for k, v in pairs( args ) do if 'string' == type (k) then -- don't evaluate positional parameters has_invisible_chars (k, v); -- look for invisible characters end has_extraneous_punc (k, v); -- look for extraneous terminal punctuation in parameter values missing_pipe_check (k, v); -- do we think that there is a parameter that is missing a pipe? args[k] = inter_wiki_check (k, v); -- when language interwiki-linked parameter missing leading colon replace with wiki-link label if 'string' == type (k) and not cfg.url_skip[k] then -- when parameter k is not positional and not in url skip table url_param_t[k] = v; -- make a parameter/value list for extraneous url check end end has_extraneous_url (url_param_t); -- look for url in parameter values where a url does not belong return table.concat ({ frame:extensionTag ('templatestyles', '', {src=styles}), citation0( config, args) }); end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return {citation = citation}; 03d0c65e9544044eef296e124f940c7cc9319972 Template:Balkan Wars 10 1107 2413 2023-08-31T03:15:06Z wikipedia>Ortizesp 0 Disambiguating links to [[Božidar Janković]] (link changed to [[Božidar Janković (general)]]) using [[User:Qwertyytrewqqwerty/DisamAssist|DisamAssist]]. wikitext text/x-wiki {{Military navigation | name = Balkan Wars | style = wide | state = {{{state<includeonly>|{{{1|collapsed}}}</includeonly>}}} | bodyclass = hlist | title = [[Balkan Wars]] | category = Balkan Wars | group1 = Background | list1 = * [[Rise of nationalism in the Ottoman Empire|Nationalism in the Ottoman Empire]] ** [[Greater Albania|Albanian]] ** [[Bulgarian irredentism|Bulgarian]] ** [[Megali Idea|Greek]] ** [[Greater Serbia|Serbian]] * [[Congress of Berlin]] * Annexation of [[Eastern Rumelia]] * [[Serbo-Bulgarian War]] * [[Greco-Turkish War (1897)|Greco-Turkish War of 1897]] * [[Cretan State]] * [[Internal Macedonian Revolutionary Organization|IMRO]] & [[Ilinden–Preobrazhenie Uprising]] * [[Macedonian Struggle]] * [[Young Turk Revolution]] * [[Bosnian Crisis]] * [[Bulgarian Declaration of Independence|Bulgarian Independence]] * [[31 March Incident]] * [[Goudi coup]] * [[Italo-Turkish War]] * [[Albanian revolt of 1912]] * [[Balkan League]] |list2style = background: gainsboro; |list2 = '''[[First Balkan War]]''' | group3 = Battles | list3 = * [[Battle of Sarantaporo|Sarantaporo]] * [[Battle of Kardzhali|Kardzhali]] * [[Battle of Pente Pigadia|Pente Pigadia]] * [[Battle of Sorovich|Sorovich]] * [[Battle of Kumanovo|Kumanovo]] * [[Battle of Kirk Kilisse|Kirk Kilisse]] * [[Siege of Scutari (1912–1913)|Scutari]] * [[Battle of Lule Burgas|Lule Burgas]] * [[Battle of Yenidje|Yenidje]] * [[Siege of Adrianople (1912–1913)|Adrianople]] * [[Battle of Prilep|Prilep]] * [[Himara revolt of 1912|Himara]] * [[Battle of Monastir|Monastir]] * [[First Battle of Çatalca|First Çatalca]] * [[Battle of Kaliakra (1912)|Kaliakra]] * [[Battle of Merhamli|Merhamli]] * [[Battle of Driskos|Driskos]] * [[Battle of Elli|Elli]] * [[Capture of Korytsa|Korytsa]] * [[Battle of Lemnos (1913)|Lemnos]] * [[Battle of Bulair|Bulair]] * [[Battle of Şarköy|Şarköy]] * [[Battle of Bizani|Bizani]] * [[Second Battle of Çatalca|Second Çatalca]] | group4 = Diplomacy and politics | list4 = * [[London Conference of 1912–1913|London Conference]] * [[Independent Albania|Albanian Independence]] * [[1913 Ottoman coup d'état]] * [[Treaty of London (1913)|Treaty of London]] |list5style = background: gainsboro; |list5 = '''[[Second Balkan War]]''' | group6 = Battles | list6 = * [[Battle of Kilkis–Lachanas|Kilkis–Lachanas]] * [[Battle of Doiran (1913)|Doiran]] * [[Battle of Bregalnica|Bregalnica]] * [[Battle of Knjaževac|Knjaževac]] * [[Battle of Kalimanci|Kalimanci]] * [[Battle of Kresna Gorge|Kresna Gorge]] * [[Southern Dobruja Offensive|Southern Dobruja]] * [[Romanian landings in Bulgaria]] * [[Siege of Vidin (1913)|Vidin]] * [[Battle of Pirot (1913)|Pirot]] | group7 = Diplomacy and politics | list7 = * [[Greek–Serbian Alliance of 1913|Greek–Serbian Alliance]] * [[Provisional Government of Western Thrace]] * [[Treaty of Bucharest (1913)|Treaty of Bucharest]] * [[Treaty of Constantinople (1913)|Treaty of Constantinople]] * [[Treaty of Athens]] | group8 = Other | list8 = * [[1913 Romanian Army cholera outbreak]] |list9style = background: gainsboro; |list9 = '''General''' | group10 = Aftermath | list10 = * [[Autonomous Republic of Northern Epirus|Autonomy of Northern Epirus]] * [[Greco-Turkish crisis of 1914]] * [[Assassination of Archduke Franz Ferdinand|Sarajevo Assassination]] and [[World War I]] * [[Ottoman–Bulgarian alliance]] * [[Balkans theatre|Balkans campaign of WWI]] ** [[Serbian campaign]] ** [[Macedonian front]] | group11 = Atrocities | list11 = * [[Report of the International Commission on the Balkan Wars|Carnegie Commission]] * [[Massacres of Albanians in the Balkan Wars|Massacres of Albanians]] * [[Destruction of the Thracian Bulgarians in 1913|Bulgarians deportation program]] * [[Greek genocide#Events|Initial phase of the Greek genocide]] * [[List of places burned during the Balkan Wars|Places burned down]] | group12 = Participants | list12 = * [[Kingdom of Bulgaria|Bulgaria]] ** [[Ferdinand I of Bulgaria|Ferdinand I]] ** [[Ivan Evstratiev Geshov|Ivan Geshov]] ** [[Stoyan Danev]] ** [[Mihail Savov]] ** [[Ivan Fichev]] ** [[Vasil Kutinchev]] ** [[Nikola Ivanov]] ** [[Radko Dimitriev]] ** [[Stiliyan Kovachev]] ** [[Georgi Todorov (general)|Georgi Todorov]] * [[Greece in the Balkan Wars|Greece]] ** [[George I of Greece|George I]] ** [[Constantine I of Greece|Constantine I]] ** [[Eleftherios Venizelos]] ** [[Panagiotis Danglis]] ** [[Pavlos Kountouriotis]] ** [[Konstantinos Sapountzakis]] ** [[Viktor Dousmanis]] * [[Kingdom of Montenegro|Montenegro]] ** [[Nicholas I of Montenegro|Nicholas I]] ** [[Danilo, Crown Prince of Montenegro|Crown Prince Danilo]] ** [[Janko Vukotić]] * [[Ottoman Empire]] ** [[Mehmed V]] ** [[Nazim Pasha]] ** [[Zeki Pasha]] ** [[Mehmet Esat Bülkat|Esad Pasha]] ** [[Kölemen Abdullah Pasha]] ** [[Ali Rıza Pasha]] ** [[Hasan Tahsin Pasha]] ** [[Enver Pasha|Enver Bey]] ** [[Ahmed Izzet Pasha]] * [[Kingdom of Romania|Romania]] ** [[Carol I of Romania|Carol I]] ** [[Ferdinand I of Romania|Crown Prince Ferdinand]] ** [[Alexandru Averescu]] * [[Serbia in the Balkan Wars|Serbia]] ** [[Peter I of Serbia|Peter I]] ** [[Alexander I of Yugoslavia|Crown Prince Alexander]] ** [[Radomir Putnik]] ** [[Petar Bojović]] ** [[Stepa Stepanović]] ** [[Božidar Janković (general)|Božidar Janković]] * Other Balkan states: [[Albania during the Balkan Wars|Albania]] ([[Ismail Kemal]]) | below = * [[:Category:Balkan Wars|Category]] }}<noinclude> {{collapsible option |statename=optional |default=collapsed}} [[Category:Europe war and conflict navigational boxes]] </noinclude> 66e26a69be983c820e6ca2c449f43206837f4fed Template:Infobox musical artist 10 1141 2467 2023-08-31T14:02:47Z w>Paine Ellsworth 0 per edit request on talk page - include discography parameter wikitext text/x-wiki {{Infobox | child = {{lc:{{{embed|}}}}} | bodyclass = vcard plainlist | headerstyle = background-color: {{Infobox musical artist/color}} | autoheaders = y | title = {{#ifeq:{{lc:{{{embed|}}}}}|yes|'''Musical career'''}} | decat = yes <!-- remove from template:infobox tracking categories --> | abovestyle = background-color: {{Infobox musical artist/color}}; font-size: 125%; | above = {{#ifeq:{{lc:{{{embed|}}}}}|yes||{{#if:{{{name|{{PAGENAMEBASE}}}}}|{{#if:{{{honorific_prefix|}}}|<div class="honorific-prefix" style="font-size: 78%; font-weight: normal;">{{{honorific_prefix|}}}</div>}}<div class="{{Infobox musical artist/hCard class|{{{background|}}}}}">{{{name|{{PAGENAMEBASE}}}}}</div>{{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang|}}}">}}{{{native_name|}}}{{#if:{{{native_name_lang|}}}|</div>}}}}{{#if:{{{honorific_suffix|}}}|<div class="honorific-suffix" style="font-size: 78%; font-weight: normal;">{{{honorific_suffix|}}}</div>}} |{{BASEPAGENAME}}}}}} | image = {{#invoke:InfoboxImage|InfoboxImage |image={{{image|}}} |size={{#ifeq:{{lc:{{{landscape|}}}}}|yes|{{min|300|{{#if:{{#ifexpr:{{{image_size|}}}}}|300|{{{image_size|}}}}}}}x200px|{{{image_size|}}}}} |sizedefault=frameless |upright={{{image_upright|1}}} |title={{{alt|{{{caption|}}}}}} |alt={{{alt|}}} |suppressplaceholder=yes}} | caption = {{{caption|}}} | header1 = {{#if:{{{image|}}}|Background information}} | class3 = nickname | label3 = {{Nowrap|Birth name}} | data3 = {{{birth_name|}}} | class4 = nickname | label4 = {{Nowrap|Also known as}} | data4 = {{{alias|}}} | label5 = Born | data5 = {{br separated entries|{{{birth_date|}}}|{{{birth_place|}}}}} | label6 = Origin | data6 = {{{origin|}}} | label7 = Died | data7 = {{br separated entries|{{{death_date|}}}|{{{death_place|}}}}} | label8 = Genres | data8 = {{{genre|}}} | class9 = role | label9 = {{#if:{{{occupations|}}}|Occupations|Occupation(s)}} | data9 = {{if empty|{{{occupations|}}}|{{{occupation|}}}}} | class10 = note | label10 = {{#if:{{{instruments|}}}|Instruments|Instrument(s)}} | data10 = {{{instruments|{{{instrument|}}}}}} | label11 = Discography | data11 = {{{discography|}}} | label12 = {{Nowrap|Years active}} | data12 = {{{years_active|}}} | label13 = Labels | data13 = {{{label|}}} | label14 = Member of | data14 = {{{current_member_of|}}} | label15 = Formerly of | data15 = {{{past_member_of|}}} | label16 = Spinoffs | data16 = {{{spinoffs|}}} | label17 = Spinoff of | data17 = {{{spinoff_of|}}} | label18 = <span class="nowrap">Spouse(s)</span> | data18 = {{{spouse|}}} | label19 = <span class="nowrap">Partner(s)</span> | data19 = {{{partner|}}} | header20 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}} | label21 = Members | data21 = {{{current_members|}}} | header22 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}} | label23 = {{Nowrap|Past members}} | data23 = {{{past_members|}}} | header30 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}} | label31 = Website | data31 = {{{website|}}} | label40 = <nowiki /> | data41 = {{{module|}}} | data42 = {{{module2|}}} | data43 = {{{module3|}}} }}<includeonly>{{#if:{{{current_members|}}}{{{past_members|}}}||{{#ifeq:{{#invoke:Is infobox in lead|main|[Ii]nfobox [Mm]usical [Aa]rtists?}}<!-- Is infobox in lead: -->{{#invoke:Is infobox in lead|main|[Ii]nfobox [Ss]inger}}{{#invoke:Is infobox in lead|main|[Ii]nfobox [Mm]usician}}{{#invoke:Is infobox in lead|main|[Ii]nfobox [Ii]nstrumentalist}}|true|{{short description|Musical artist|noreplace}}}}}}<!-- hCards: -->{{Main other|1=[[Category:Articles with hCards]]}}<!-- Unknown parameters: -->{{#invoke:Check for unknown parameters | check | unknown={{main other|1=[[Category:Pages using Template:Infobox musical artist with unknown parameters|_VALUE_]]}}| preview = Page using [[Template:Infobox musical artist]] with unknown parameter "_VALUE_"| ignoreblank=y <!-- whitelist 29 Jun 2022 [38x param name]: -->| alias | alt | associated_acts | background | birth_date | birth_name | birth_place | caption | current_member_of | current_members | death_date | death_place | discography | embed | genre | honorific_prefix | honorific_suffix | image_size | image_upright | image | instrument | instruments | label | landscape | module2 | module3 | module | name | native_name_lang | native_name | occupations | occupation | origin | partner | past_member_of | past_members | spinoff_of | spinoffs | spouse | website | years_active}}<!-- Associated_acts tracking: -->{{main other|1={{#if:{{{associated_acts|}}}|[[Category:Pages using infobox musical artist with associated acts]]}}}}</includeonly><!-- Documentation: --><noinclude>{{Documentation}}</noinclude> 68288e373bb81a89d5f51c4f49452b0cdb52b0f3 Template:Infobox musical artist/doc 10 1376 2711 2023-08-31T14:41:38Z w>Paine Ellsworth 0 /* For groups or bands */ further example wikitext text/x-wiki <noinclude>{{pp-vandalism|small=yes}}</noinclude>{{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[</nowiki>[[Wikipedia:Wikidata]]<nowiki>]]) --> {{High-use}} {{Person infobox header}} {{Music infobox header}} {{auto short description|conditions=unless {{para|current_members}} or {{para|past_members}} is populated}} {{lua|Module:InfoboxImage|Module:Check for unknown parameters}} '''{{tl|Infobox musical artist}}''' is the standard infobox for musician articles, and is within the purview of [[Wikipedia:WikiProject Musicians|WikiProject Musicians]]. This template may also be used as a module (or sub-template) of {{tl|Infobox person}}; see [[Wikipedia:WikiProject Infoboxes/embed|WikiProject Infoboxes/embed]] for guidance on such usage. See also [[Wikipedia:WikiProject Musicians/Infobox|WikiProject Musicians/Infobox]] for more information. == Usage == {{em|One of the following two}} alternatives (one for individuals, one for groups) should be placed in an article at the top of the page, before the introduction. === For articles about individuals === * For dancers, use {{tl|Infobox dancer}} instead. {{Parameter names example | honorific_prefix| name| honorific_suffix| image| image_upright| image_size| landscape| alt| caption| native_name| native_name_lang| birth_name| alias| birth_date| birth_place| origin| death_date| death_place| genre| occupations| instruments| discography| years_active| label| current_member_of| past_member_of| spouse| partner| website| module| module2| module3 }} <syntaxhighlight lang="wikitext" style="overflow:auto; margin-left:0"> {{Infobox musical artist | background = person | honorific_prefix = | name = | honorific_suffix = | image = | image_upright = | image_size = | landscape = <!-- yes, if wide image, otherwise leave blank --> | alt = | caption = | native_name = | native_name_lang = | birth_name = <!-- leave empty if the same "name" --> | alias = | birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year unless the exact date is already WIDELY published, as per [[WP:DOB]] --> | birth_place = | origin = | death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (death date first) --> | death_place = | genre = | occupation = | instrument = | discography = | years_active = <!-- YYYY–YYYY (or –present) --> | label = | current_member_of = | past_member_of = | spouse = <!-- Use article title or common name --> | partner = <!-- (unmarried long-term partner) --> | website = <!-- {{URL|example.com}} or {{Official URL}} --> | module = | module2 = | module3 = }} </syntaxhighlight> === For articles about musical groups === * Some types of musical groups have their own dedicated infobox, which should be used instead: {{tl|Infobox choir}}, {{tl|Infobox orchestra}}, {{tl|Infobox marching band}} {{Parameter names example | name | image | image_size | image_upright | landscape | alt | caption | alias | origin | genre | discography | years_active | label | website | current_members | past_members | spinoffs | spinoff_of | module | module2 | module3 }} <syntaxhighlight lang="wikitext" style="overflow:auto; margin-left:0"> {{Infobox musical artist | background = group_or_band | name = | image = | image_size = | image_upright = | landscape = <!-- yes, if wide image, otherwise leave blank --> | alt = | caption = | alias = | origin = | genre = | discography = | years_active = <!-- {{Start date|YYYY}}–{{End date|YYYY}} (or –present) --> | label = | spinoffs = | spinoff_of = | current_members = | past_members = | website = <!-- {{URL|example.com}} or {{Official URL}} --> | module = | module2 = | module3 = }} </syntaxhighlight> == Parameters == * Most fields are optional and the row will simply be omitted if no data is supplied. * See [[Wikipedia:WikiProject Musicians|WikiProject Musicians]] for more information about this template. === background === Currently only used to track if it's a single person or a group that is required for [[Wikipedia:WikiProject Microformats/hcard|hCard microformat]]. Use value <code>person</code> or <code>group_or_band</code>. === honorific_prefix === Titles or styles such as "[[The Right Honourable]]" === name === The name of the group or artist ("the act") in plain text only. Logos and other graphics are to be avoided in this field in accordance with [[WP:ACCESS]], [[WP:FAIR]], and in particular [[WP:LOGO]]. This field is mandatory. === honorific_suffix === Honours such as "CBE", "OBE" (e.g. [[Cilla Black|Cilla Black OBE]]) === image === An image of the act, sufficiently clear for display at 220 pixels' width. Set to only the image name (e.g. <code>Example.png</code>) not <code>File:Example.png</code> or <code><nowiki>[[File:Example.png|200px|abc]]</nowiki></code>. === image_size === The image size should only be specified if the image is smaller than 220 pixels width. Enter the width in pixels without "px", for example <code>150</code>. === image_upright === Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%). === landscape === Set to <code>yes</code> when using wide, short images. The image height (rather than width) will be limited to 200 pixels. === alt === Alt text for the image, for visually impaired and other readers who cannot see the image. See [[WP:ALT]]. === caption === Caption for the image to be displayed. === native_name === {{Em|This field is only relevant for individuals.}} The artist's name in their own language. For Chinese-language individuals, use {{tl|Infobox Chinese}} for <code>|module=</code> instead. For Korean-language individuals, use {{tl|Infobox Korean name}} for <code>|module=</code> instead. === native_name_lang === {{Em|This field is only relevant for individuals.}} [[List of ISO 639-2 codes|ISO 639-2 code]] ("fre" or "fra" for French). If more than one, use {{tl|lang}} for {{Para|native_name}} instead === birth_name === {{Em|This field is only relevant for individuals.}} The person's name at birth, if different === alias === For listing {{em|official}} [[stage name]]s for the act or solo artist other than the name in the {{para|name}} parameter. Also for the solo artist's [[legal name]](s), or other officially authorized names that differ from their birth name. This field is not for nicknames such as "The Godfather of Soul" ([[James Brown]]) or "Nippy" ([[Whitney Houston]]), which are not the artists' {{em|official}} names. === birth_date === {{Em|This field is only relevant for individuals.}} The artist's date of birth; it is preferable to use {{tl|Birth date and age}} (for example <code><nowiki>{{Birth date and age|1949|12|31}}</nowiki></code>) to display current age. If the artist's age is verified, but the date is not known, then use {{tl|Birth based on age as of date}} (for example <code><nowiki>{{Birth based on age as of date|63|2012|08|30}}</nowiki></code>). For dead people, use {{tl|Birth date}} (for example <code><nowiki>{{Birth date|1949|12|31}}</nowiki></code>). Also list the place of birth using the birth_place parameter (below). <syntaxhighlight lang="wikitext">{{Birth date and age|Year|Month|Day}}</syntaxhighlight> === birth_place === {{Em|This field is only relevant for individuals.}} The artist's place of birth. For "United States" and "United Kingdom", it is preferred that they be abbreviated "U.S." and "UK", but political subdivisions should never be (never "MA" for "Massachusetts", "ON" for "Ontario", etc.). See Notes{{r|location}} for details. Do not add a flag icon. (see field "[[Template:Infobox musical artist/doc#origin|origin]]" below). <syntaxhighlight lang="wikitext">[[City]], State/Province, Country</syntaxhighlight> === origin === The town, city etc., from which the group or musician originated (that is, the place where the group was founded, or where the individual performer started their career, should it not match the location of their birth). If the place is not known, specify at least the country. For "United States" and "United Kingdom", it is preferred that they be abbreviated "U.S." and "UK", but political subdivisions should never be (never "MA" for "Massachusetts", "ON" for "Ontario", etc.). See Notes{{r|location}} for details. Do not add a flag icon. Omit the country if it does not differ from that specified at the field "birth_place". <syntaxhighlight lang="wikitext">[[City]], State/Province, Country</syntaxhighlight> === death_date === {{Em|This field is only relevant for individuals.}} The artist's date of death (same format as birth_date; but use {{tl|Death date and age}}). === death_place === {{Em|This field is only relevant for individuals.}} The artist's place of death (same format as birth_place). For "United States" and "United Kingdom", it is preferred that they be abbreviated "U.S." and "UK", but political subdivisions should never be (never "MA" for "Massachusetts", "ON" for "Ontario", etc.). See Notes{{r|location}} for details. Do not add a flag icon. Omit the country if it does not differ from that specified at the field "birth_place". === genre === The genre or genres of music performed by the act. Aim for generality (e.g. <code><nowiki>[[Hip hop music|Hip hop]]</nowiki></code> rather than <code><nowiki>[[East Coast hip hop]]</nowiki></code>) and preferably use two to four. Genres should be separated by using commas, {{tl|Flatlist}} or {{tl|Hlist}}.{{r|lists}} Genres should be wikilinked. Use piped links where needed, for example: <code><nowiki>[[Pop music|Pop]], [[Rock music|rock]]</nowiki></code>. Most genres are not proper nouns and should not be capitalized. However, the first word in a list of multiple genres should be capitalized. Genres that are sourced in the article itself do not require a source in the infobox, but sometimes it can be useful to have the source listed again anyway, to help prevent edit warring. A hidden comment such as <code><nowiki><!-- genres listed here are sourced in the article text --></nowiki></code> can also be used to this end. === occupation === {{Em|This field is only relevant for individuals.}} Roles the artist has fulfilled (e.g. musician, songwriter, producer). For artists who have participated in forms of entertainment outside of music (such as acting), these occupations can be included if notable. Please observe sentence case and capitalise only the first letter of the first item (e.g. Musician, actor, singer-songwriter). Multiple occupations should be ordered according to importance and separated by commas, {{tl|Flatlist}} or {{tl|Hlist}}.{{r|lists}} === instrument === {{Em|This field is only relevant for individuals.}} General class(es) of instrument(s) played by the artist (e.g. <code><nowiki>guitar</nowiki></code> or <code><nowiki>violin</nowiki></code>). Include <code><nowiki>singing</nowiki></code>, <code><nowiki>rapping</nowiki></code>, <code><nowiki>beatboxing</nowiki></code> or <code><nowiki>scat singing</nowiki></code> if relevant. Separate multiple entries by using commas, {{tl|Flatlist}} or {{tl|Hlist}}.{{r|lists}} Instruments listed in the infobox should be limited to {{em|only}} those that the artist is primarily known for using. The instruments infobox parameter is {{em|not}} intended as a [[WP:COATRACK]] for every instrument the subject has ever used. === discography === Link to an article about the musician's or group's [[discography]]. === years_active === Period(s) during which the act was or has been active. Only calendar year ranges or a single calendar year should be listed; for example, do not distinguish between the period [[Paul McCartney]] was in [[the Beatles]] and his solo career. Use commas, {{tl|Flatlist}}, or {{tl|Hlist}}}.{{r|lists}} to separate non-consecutive periods, and denote ranges with an unspaced [[en dash]] (e.g. {{nowrap|1993–2004, 2005–present}}). See [[WP:DATE#Longer periods]] and [[WP:MOS#En dashes]]. === label === The record label or labels to which the act has been signed. Omit parenthetical dates; save that information for the main article as this degree of detail is better discussed in prose. [[MOS:PIPEDLINK|Pipe out]] "Records", "Entertainment", "Music" or similar words from the end of any label's name. For example, use <code><nowiki>[[Universal Records|Universal]]</nowiki></code> rather than <code><nowiki>[[Universal Records]]</nowiki></code>. Separate multiple entries by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}} Start with the oldest first. === current_member_of === The groups/bands of which the artist is currently part of. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}} === past_member_of === The groups/bands of which the artist is previously part of. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}} === spinoffs === Groups which have spun off from this group. For example, sub-units. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}} === spinoff_of === A group from which this group has spun off. === spouse === {{Em|This field is only relevant for individuals.}} The confirmed spouse(s) of the individual. Names of the spouses should be separated by using commas, {{tl|Flatlist}}, {{tl|Hlist}}, or {{tl|Unbulleted list}}. {{Tl|Marriage}} may be used to indicate the date at which the marriage(s) started and ended where known. {{r|lists}} === partner === {{Em|This field is only relevant for individuals.}} As for spouse or spouses, but the confirmed long term unmarried partner(s) of the individual. === current_members === {{Em|This field is only relevant for active groups.}} Current members of the group, listed in order of joining with no other notation than names. For multiple members joining concurrently (such as the formation of the band), list them according to alphabetical order. Separate multiple entries using [[Help:list|<nowiki>*</nowiki> list markup]]. For example, <syntaxhighlight lang="wikitext" style="overflow:auto"> | current_members = * Member 1 * Member 2 * Member 3 </syntaxhighlight> === past_members === {{Em|This field is only relevant for groups.}} Past members of the group, listed in order of joining with no other notation than names. If a group is inactive, all members should be listed here, and none in the "current_members" field. If membership of the group has varied over time, it should not be noted here, but may be discussed in the article body. Separate multiple entries using [[Help:list|<nowiki>*</nowiki> list markup]]. For example, <syntaxhighlight lang="wikitext" style="overflow:auto"> | past_members = * Member 1 * Member 2 * Member 3 </syntaxhighlight> === website === The {{em|single}} web address for the act's primary {{em|official}} website. Use {{tl|URL}} as <nowiki>{{URL|example.com}} </nowiki>. {{tl|Official URL}} can be used to automatically fetch the web address from Wikidata. === embed === Set to 'yes' if embedded in another infobox template. === module, module2, module3 === Used for embedding other infoboxes into this one. == Use as a child template == The '''embed''' parameter is used when embedding this infobox into another. {{Infobox person module documentation |template=Infobox musical artist |parameter=embed}} == Embedding other templates == The '''module''' parameters (module, module2, module3) are used for embedding other templates into this infobox. <syntaxhighlight lang="wikitext" style="overflow:auto; white-space:pre;"> {{Infobox musical artist | name = | <!-- etc. --> | module = {{Infobox ABC | embed = yes <!-- or child=yes / subbox=yes --> | <!-- etc. --> }} }} </syntaxhighlight> == Examples == === For individual musicians === {{Infobox musical artist | name = Mariah Carey | image = Mariah Carey13 Edwards Dec 1998.jpg | image_upright = | alt = Young woman singing into a hand mic with her eyes closed and a big smile | caption = Carey performing in 1998 | birth_name = <!-- leave empty if the same "name" --> | birth_date = {{Birth date and age|1970|3|27}} | birth_place = [[Huntington, New York]], U.S. | origin = New York City | genre = {{Flatlist| * [[Pop music|Pop]] * [[Contemporary R&B|R&B]] * [[dance-pop]] }} | discography = [[Mariah Carey albums discography|Albums]]<br />[[Mariah Carey singles discography|Singles]] | occupation = Singer-songwriter, record producer | years_active = 1990–present | spouse = {{Unbulleted list|{{marriage|[[Tommy Mottola]]|1993|1998|end=divorced}}|{{marriage|[[Nick Cannon]]|2008|2016|end=divorced}}}} | label = {{Flatlist| * [[Columbia Records|Columbia]] * [[Virgin Records|Virgin]] * [[MonarC]]/[[Island Records|Island]] }} | website = {{URL|mariahcarey.com}} }} <syntaxhighlight lang="wikitext" style="overflow:auto; margin-left:0"> {{Infobox musical artist | name = Mariah Carey | image = Mariah Carey13 Edwards Dec 1998.jpg | image_upright = | alt = Young woman singing into a hand mic with her eyes closed and a big smile | caption = Carey performing in 1998 | birth_name = <!-- leave empty if the same "name" --> | birth_date = {{Birth date and age|1970|3|27}} | birth_place = [[Huntington, New York]], U.S. | origin = New York City | genre = {{hlist| * [[Pop music|Pop]] * [[Contemporary R&B|R&B]] * [[dance-pop]] }} | discography = [[Mariah Carey albums discography|Albums]]<br />[[Mariah Carey singles discography|Singles]] | occupations = Singer-songwriter, record producer | years_active = 1990–present | spouse = {{Unbulleted list|{{marriage|[[Tommy Mottola]]|1993|1998|end=divorced}}|{{marriage|[[Nick Cannon]]|2008|2016|end=divorced}}}} | label = {{Flatlist| * [[Columbia Records|Columbia]] * [[Virgin Records|Virgin]] * [[MonarC]]/[[Island Records|Island]] }} | website = {{URL|mariahcarey.com}} }} </syntaxhighlight> {{Clear}} === For groups or bands === {{Infobox musical artist | name = Audioslave | image = Audioslave 2005.jpg | landscape = yes | alt = Four-man rock group performing on stage, spotlit, with row of darkened fans in the foreground | caption = From left to right: [[Tim Commerford]], [[Chris Cornell]], [[Brad Wilk]] and [[Tom Morello]] in 2005 | origin = [[Los Angeles]], California, U.S. | genre = {{Flatlist| * [[Hard rock]] * [[alternative rock]] * [[post-grunge]] }} | discography = [[Audioslave discography]] | years_active = 2001–2007 | label = {{Flatlist| * [[Epic Records|Epic]] * [[Interscope Records|Interscope]] }} | current_members = | past_members = * [[Chris Cornell]] * [[Tom Morello]] * [[Tim Commerford]] * [[Brad Wilk]] | website = {{URL|audioslave.com}} }} <syntaxhighlight lang="wikitext" style="overflow:auto; margin-left:0"> {{Infobox musical artist | name = Audioslave | image = Audioslave 2005.jpg | landscape = yes | alt = Four-man rock group performing on stage, spotlit, with row of darkened fans in the foreground | caption = From left to right: [[Tim Commerford]], [[Chris Cornell]], [[Brad Wilk]] and [[Tom Morello]] in 2005 | origin = [[Los Angeles]], California, U.S. | genre = {{Flatlist| * [[Hard rock]] * [[alternative rock]] * [[post-grunge]] }} | discography = [[Audioslave discography]] | years_active = 2001–2007 | label = {{Flatlist| * [[Epic Records|Epic]] * [[Interscope Records|Interscope]] }} | current_members = | past_members = * [[Chris Cornell]] * [[Tom Morello]] * [[Tim Commerford]] * [[Brad Wilk]] | website = {{URL|audioslave.com}} }} </syntaxhighlight> Examples of the template in use can be found at: * [[Elvis Presley]] * [[Madonna]] * [[Sly and the Family Stone]] == Tracking categories == Hidden maintenance/tracking categories which may be added to articles using this infobox: * {{Category link with count|Pages using Template:Infobox musical artist with unknown parameters|pages}} – any articles using this infobox with unknown parameter names * {{clc|Pages using infobox musical artist with associated acts|pages}} - all articles where this deprecated param has been used * {{Category link with count|Articles with hCards|pages}} – all articles using this infobox == See also == '''Supporting templates''' * [[Template:Infobox musical artist/hCard class]] '''Similate templates''' * [[Template:Infobox person]] == Notes == {{Reflist|refs= <ref name="lists">For short horizontal lists of two or three items, comma separators are acceptable, but for longer lists the use of {{tl|Flatlist}} or {{tl|Hlist}} is preferred as they offer a benefit to users of screen readers. Vertical lists should always be implemented by {{tl|Plainlist}} or {{tl|Unbulleted list}} and never by {{tag|br|s}} tags for reasons of [[Wikipedia:Manual of Style/Accessibility#Vertical lists|accessibility]].</ref> <ref name="location">As per RfC "Naming countries in infoboxes": When identifying a location, city or region in the United States or United Kingdom, the preferred approach is to use the country abbreviations allowed by [[MOS:ACRO]], such as "Portsmouth, New Hampshire, U.S." and "Cardiff, Wales, UK", rather than spelling out the full country name. Avoid using abbreviations for states or provinces in all nations. {{xt|New Hampshire}} rather than {{!xt|NH}}, {{xt|New South Wales}} rather than {{!xt|NSW}}, or {{xt|British Columbia}} rather than {{!xt|BC}} (see [[MOS:POSTABBR]]). Cities such as New York City and London may be rendered as "New York City, U.S." and "London, UK" or simply "New York City" and "London". Also, these should not be linked when the context makes it clear (see [[MOS:OVERLINK]]). If only the country name is included, it may be written out in full. </ref> }} == Microformat == {{UF-hcard-person}} The determination between <code>class="fn"</code> (for individuals) and <code>class="fn org"</code> (for groups) and is made by {{tl|Infobox musical artist/hCard class}} using {{para|background}}. == TemplateData == {{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <templatedata> { "description": "An infobox for musical artists/groups.", "params": { "honorific_prefix": { "label": "Honorific prefix", "description": "Titles such as Sir.", "type": "string", "required": false }, "name": { "label": "Name", "description": "Name of group/artist, plain text only.", "type": "string", "default": "The page name" }, "honorific_suffix": { "label": "Honorific suffix", "description": "Honours such as CBE, OBE.", "type": "string", "required": false }, "image": { "label": "Image", "description": "Image to use in infobox Set to only the image name.", "type": "wiki-file-name", "required": false, "example": "ABBA - TopPop 1974 5.png" }, "image_size": { "label": "Image size", "description": "Should only be specified if the image is smaller than 220 pixels width. Enter the width in pixels without 'px'.", "type": "string", "required": false, "example": "150", "deprecated": "image_upright should be used instead" }, "image_upright": { "label": "Image upright", "description": "Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).", "type": "string", "required": false }, "landscape": { "label": "Landscape", "description": "Set to yes when using wide, short images.", "type": "line", "required": false, "autovalue": "yes", "suggestedvalues": [ "yes" ] }, "alt": { "label": "Image alt text", "description": "Alt text for the image, for visually impaired and other readers who cannot see the image.", "type": "string", "required": false }, "caption": { "label": "Image caption", "description": "Caption for the image.", "type": "string", "required": false }, "native_name": { "label": "Native name", "description": "The artist's name in their own language.", "type": "string", "required": false }, "native_name_lang": { "label": "Native name language (code)", "description": "ISO 639-2 code e.g. 'fra' for French. If more than one, use {{lang}} for native_name instead", "type": "line", "required": false, "example": "fra" }, "birth_name": { "label": "Birth name", "description": "The person's name at birth.", "type": "string", "required": false }, "alias": { "label": "Alias", "description": "Official stage names, legal names, or other officially authorized names. Not for nicknames.", "type": "string", "required": false }, "birth_date": { "label": "Birth date", "description": "The artist's date of birth; it is preferable to use {{Birth date and age}}.", "type": "string", "required": false, "example": "{{Birth date and age|1949|12|31}}", "autovalue": "{{Birth date and age|YYYY|MM|DD}}" }, "birth_place": { "label": "Birth place", "description": "The artist's place of birth. e.g. '[[Lubbock, Texas]], U.S.'.", "type": "string", "required": false }, "origin": { "label": "Origin", "description": "The city from which the singer or group originated.", "type": "string", "required": false, "example": "[[Aston]], [[Birmingham]], England" }, "death_date": { "label": "Death date", "description": "The artist's date of death use {{Death date and age}}", "type": "string", "required": false, "autovalue": "{{Death date and age|YYYY|MM|DD|YYYY|MM|DD}}" }, "death_place": { "label": "Death place", "description": "Place of death.", "type": "string", "required": false }, "genre": { "label": "Genre", "description": "The genre or genres of music performed by the act. Genres should be wikilinked and separated by using commas, {{tl|flatlist}} or {{tl|hlist}}", "type": "string", "required": false, "example": "{{hlist|[[Rock music|Rock]]|[[synth-pop]]|[[house music|house}}" }, "discography": { "label": "Discography", "description": "Link to an article or articles about the musician's or group's discography", "type": "string", "required": false, "example": "[[ABBA discography]]" }, "years_active": { "label": "Years active", "description": "Years artist/group was active.", "type": "string", "required": false, "example": "1993–2004, 2005–present" }, "label": { "label": "Record label", "description": "The record label or labels to which the act has been signed, as a comma- or {{tl|flatlist}}-separated list. Omit dates.", "type": "string", "required": false, "example": "[[Universal Records|Universal]]" }, "current_member_of": { "label": "Current member of", "description": "The groups/bands of which the artist is currently part of. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}}", "type": "string" }, "past_member_of": { "label": "Past member of", "description": "The groups/bands of which the artist is formerly part of. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}}", "type": "string" }, "spinoffs": { "label": "Spinoffs", "description": "Groups which have spun off from this group. For example, sub-units. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}}", "type": "string" }, "spinoff_of": { "label": "Spinoff of", "description": "A group from which this group has spun off.", "type": "string" }, "spouse": { "label": "Spouse(s)", "description": "Name of spouse(s), followed by years of marriage. Use the format Name (married 1950–present) for a current spouse, and Name (married 1970–1999) for former spouse(s). Separate entries using Template:Plainlist or Template:Unbulleted list. For deceased persons still married at time of death, do not include an end year. {{Marriage}} may be used.", "type": "string", "required": false }, "partner": { "label": "Partner(s)", "description": "For unmarried life partners in a domestic partnership (of any gender or sexual orientation), not business partners. Use the format Name (1950–present) for current partner and Name (1970–1999) for former partner(s).", "type": "string", "required": false }, "website": { "label": "Website", "description": "The single web address for the act's primary official website, {{URL|example.com}} or {{Official URL}}", "type": "string", "required": false, "example": "{{URL|blacksabbath.com}}" }, "current_members": { "label": "Current members", "description": "Name of current members of the group, listed in order of joining. Separate multiple entries using * list markup, one per line.", "type": "string", "required": false }, "past_members": { "label": "Past members", "description": "Past members of the group, listed in order of joining. Separate multiple entries using * list markup, one per line. If a group is inactive, all members should be listed here, and none in the 'current_members' field.", "type": "string", "required": false }, "embed": { "label": "Embedded", "description": "Set to 'yes' if embedded in another infobox template.", "type": "line", "required": false, "autovalue": "yes", "suggestedvalues": [ "yes" ] }, "module": { "label": "Module", "description": "Used for embedding other infoboxes into this one.", "type": "string", "required": false }, "module2": { "label": "Module 2", "description": "Used for embedding other infoboxes into this one.", "type": "string", "required": false }, "module3": { "label": "Module 3", "description": "Used for embedding other infoboxes into this one.", "type": "string", "required": false }, "background": { "label": "Background", "description": "Currently only used to track if it's a single person or a group for hCard microformat.", "example": "person", "type": "line", "suggestedvalues": [ "person", "group_or_band" ] }, "occupation": { "label": "Occupation(s)", "description": "Roles the artist has fulfilled (e.g. musician, songwriter, producer, etc). For artists who have participated in forms of entertainment outside of music (such as acting), these occupations can be included if notable.", "type": "string" }, "occupations": { "deprecated": true }, "instruments": { "deprecated": true }, "instrument": { "label": "Instrument(s)", "description": "General classes of instruments played by the artist, e.g. guitar or violin. Include singing, rapping, beatboxing and/or scat singing if relevant. Separate multiple entries by using commas, {{tl|flatlist}} or {{tl|hlist}}. Instruments listed in the infobox should be limited to only those that the artist is primarily known for using.", "type": "string" }, "associated_acts": { "deprecated": "Replace with (1) current_member_of / past_member_of for persons or (2) spinoffs / spinoff_of for groups" } }, "format": "{{_\n| _________________ = _\n}}\n", "paramOrder": [ "honorific_prefix", "background", "name", "honorific_suffix", "image", "image_size", "image_upright", "landscape", "alt", "caption", "native_name", "native_name_lang", "birth_name", "alias", "birth_date", "birth_place", "origin", "death_date", "death_place", "genre", "occupation", "instrument", "discography", "years_active", "label", "current_member_of", "past_member_of", "spinoffs", "spinoff_of", "spouse", "partner", "current_members", "past_members", "website", "embed", "module", "module2", "module3", "occupations", "instruments", "associated_acts" ] } </templatedata> {{Collapse bottom}} <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Music infobox templates|Musical Artist]] [[Category:People and person infobox templates|Musical Artist]] [[Category:Biographical templates usable as a module|Musical Artist]] [[Category:Infobox templates with module parameter|Musical Artist]] [[Category:WikiProject Musicians templates|Infobox Musical Artist]] [[Category:Templates that add a tracking category]]<!--sort by PAGENAME--> }}</includeonly> 31648732a0c3f204726e288b9e1783f3a42cbd23 Template:Template display 10 1066 2330 2023-08-31T17:59:44Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Template display]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 5077 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Message box|ombox|type=notice |image={{#switch:{{{1}}}|adaptive=[[File:Different devices simple.svg|65x65px|link=|alt=]]|nomobile=[[File:Handheld devices no.svg|55px|link=|alt=]]|nodesktop=[[File:Desktop devices no.svg|55px|link=|alt=]]}} |text={{#switch:{{{1}}} | adaptive = This template is [[Adaptive web design|responsive]] and <strong>displays differently in mobile and desktop view</strong>. Read the documentation for an explanation of the differences and why they exist. | nomobile = This template does ''not'' display in the mobile view of Wikipedia; it is <strong>desktop only</strong>. Read the documentation for an explanation. | nodesktop = This template does ''not'' display in the desktop view of Wikipedia; it is <strong>mobile only</strong>. Read the documentation for an explanation. | nomobilesidebar = This template does ''not'' display in the mobile view of Wikipedia; it is <strong>desktop only</strong>. Read the [[Template:Sidebar/doc|parent documentation]] for an explanation. | vector2022 = This template does not work properly in the [[Wikipedia:Vector 2022|Vector 2022]] skin. Read the documentation for an explanation. | #default = {{{1}}} }}}}</includeonly><noinclude> {{Documentation}} </noinclude> 47cc41eacc2d2dec246f01b81111b280cec901a3 Template:Infobox organization/doc 10 1524 2859 2023-09-02T16:22:42Z w>Hossam Azab 0 /* TemplateData */ wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{High-use}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} {{tlc|{{BASEPAGENAME}}}} can be used to provide at-a-glance information at the start of an article about an organization. == Usage == {{Parameter names example |_display=italics |name |full_name |native_name |native_name_lang=es |image={{{image}}} |image_size={{{image_size}}} |alt={{{alt}}} |caption |logo={{{logo}}} |logo_size={{{logo_size}}} |logo_alt={{{logo_alt}}} |logo_caption |map={{{map}}} |map_size={{{map_size}}} |map_alt={{{map_alt}}} |map_caption |map2={{{map2}}} |map2_size={{{map2_size}}} |map2_alt={{{map2_alt}}} |map2_caption |abbreviation |nickname |pronounce={{{pronounce}}}&nbsp; |pronounce ref |pronounce comment |pronounce 2 |named_after |predecessor |merged |successor |formation |founder=''founder''&nbsp;{{\}}&nbsp;''founders'' |founding_location |dissolved=''dissolved''&nbsp;{{\}}&nbsp;''defunct'' |merger |type |tax_id=''tax_id''&nbsp;{{\}}&nbsp;''vat_id'' |registration_id |status |purpose |professional_title |headquarters |location_city |location_country |location_city2 |location_country2 |addnl_location_city |addnl_location_country |addnl_location_city2 |addnl_location_country2 |coordinates |origins |region_served=''region_served''&nbsp;{{\}}&nbsp;''region''&nbsp;{{\}}&nbsp;''area_served'' |products=''products''&nbsp;{{\}}&nbsp;''product'' |services |methods=''methods''&nbsp;{{\}}&nbsp;''method'' |fields=''fields''&nbsp;{{\}}&nbsp;''field'' |membership |membership_year=''_year'' |language =''language''&nbsp;{{\}}&nbsp;''languages'' |owner=''owner''&nbsp;{{\}}&nbsp;''owners'' |sec_gen=''sec_gen''&nbsp;{{\}}&nbsp;''gen_sec'' |leader_title |leader_name |leader_title2 |leader_name2 |leader_title3 |leader_name3 |leader_title4 |leader_name4 |leader_title5 |leader_name5 |board_of_directors |key_people |main_organ =''main_organ''&nbsp;{{\}}&nbsp;''publication'' |parent_organization=''parent_organization''&nbsp;{{\}}&nbsp;''parent_organisation'' |subsidiaries |secessions |affiliations |ror_id |budget |budget_year=''_year'' |revenue |revenue_year=''_year'' |disbursements |expenses |expenses_year=''_year'' |endowment |endowment_year=''_year'' | funding |staff |staff_year=''_year'' |volunteers |volunteers_year=''_year'' |students |students_year=''_year'' |awards |website=<code><nowiki>{{URL|...}}</nowiki></code> |remarks |formerly=''formerly''&nbsp;{{\}}&nbsp;''former_name'' |footnotes |bodystyle }} ===Full syntax=== Copy this version to use, remove hidden notes (both the <code><nowiki><!--</nowiki></code> and <code><nowiki>--></nowiki></code> characters) that surround certain entries, in order for the data you enter to appear in the published article. All fields '''''must''''' be [[lowercase]], and all are optional. <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox organization | name = <!-- defaults to {{PAGENAME}}, if not provided --> | full_name = | native_name = <!-- organization's name in its local language --> | native_name_lang = <!-- required ISO 639-1 code of the above native language --> | logo = | logo_size = | logo_alt = | logo_caption = | image = | image_size = | alt = <!-- see [[WP:ALT]] --> | caption = | map = <!-- map image --> | map_size = <!-- defaults to 250px --> | map_alt = | map_caption = | map2 = <!-- 2nd map image, if required --> | map2_size = | map2_alt = | map2_caption = | abbreviation = | nickname = | pronounce = | pronounce ref = | pronounce comment = | pronounce 2 = | named_after = | predecessor = | merged = <!-- any other organization(s) which it was merged into --> | successor = | formation = <!-- or |established = --><!-- use {{start date and age|YYYY|MM|DD}} --> | founder = <!-- or |founders = --> | founding_location = | dissolved = <!-- or |defunct = --><!-- use {{end date and age|YYYY|MM|DD}} --> | merger = <!-- other organizations (if any) merged with, to constitute the new organization --> | type = <!-- e.g., [[Nonprofit organization|Nonprofit]], [[Non-governmental organization|NGO]], etc. --> | tax_id = <!-- or |vat_id = (for European organizations) --> | registration_id = <!-- for non-profits --> | status = <!-- legal status or description (company, charity, foundation, etc.) --> | purpose = <!-- or |focus = --><!-- humanitarian, activism, peacekeeping, etc. --> | professional_title = <!-- for professional associations --> | headquarters = | location_city = | location_country = | location_city2 = | location_country2 = | addnl_location_city = | addnl_location_country = | addnl_location_city2 = | addnl_location_country2 = | coordinates = <!-- {{coord|LAT|LON|display=inline,title}} --> | origins = | region_served = <!-- or |area_served = or |region = --> | products = <!-- or |product = --> | services = | methods = <!-- or |method = --> | fields = <!-- or |field = --> | membership = <!-- number of members --> | membership_year = <!-- year to which membership numbers/data apply --> | language = <!-- or |languages = --><!-- any official language or languages used --> | owner = <!-- or |owners = --> | sec_gen = <!-- or |gen_sec for General Secretary --> | leader_title = <!-- defaults to "Leader" --> | leader_name = | leader_title2 = | leader_name2 = | leader_title3 = | leader_name3 = | leader_title4 = | leader_name4 = | leader_title5 = | leader_name5 = | board_of_directors = | key_people = | main_organ = <!-- or |publication = --><!-- organization's principal body (assembly, committee, board, etc.) or publication --> | parent_organization = <!-- or |parent_organisation = --> | subsidiaries = | secessions = | affiliations = | ror_id = <!-- unique ID in the Research Organization Registry --> | budget = | budget_year = | revenue = | revenue_year = | disbursements = | expenses = | expenses_year = | endowment = | endowment_year = | funding = <!-- source of funding e.g. for "think tanks" --> | staff = | staff_year = | volunteers = | volunteers_year = | students = | students_year = | awards = | website = <!-- {{Official URL}} or {{URL|example.com}} --> | remarks = | formerly = <!-- or |former_name = --> | footnotes = | bodystyle = }} </syntaxhighlight> {{clear}} === Example === All fields are [[lower case]] and optional. {{Infobox organization | name = Organization's {{var|name}} | full_name = Organization's unabbreviated name | native_name = {{var|native_name}} | native_name_lang = es | image = Example.png | alt = Text alternative for those who do not see the image | caption = {{longitem|({{var|caption}}{{thin space}}''':'''){{break}}Example.png ({{var|image}}) at template's default size.}} | map = World map.jpg | map_alt = This is the message carried by "map_alt" parameter | map_caption = {{longitem|({{var|map_caption}}{{thin space}}''':'''){{break}}World map.jpg ({{var|map}}) at template's default size.}} | abbreviation = {{var|abbreviation}} | nickname = {{var|nickname}} | named_after = {{var|named_after}} | predecessor = {{var|predecessor}} | merged = {{var|merged}} | successor = {{var|successor}} | formation = {{nowrap|{{var|formation}} &nbsp;(or {{var|established}})}} | founder = {{var|founder}} &nbsp;(or {{var|founders}}) | founding_location = {{var|founding_location}} | dissolved = {{var|dissolved}} &nbsp;(or {{var|defunct}}) | merger = {{var|merger}} | type = {{var|type}} | tax_id = {{var|tax_id}} &nbsp;(or {{var|vat_id}}) | registration_id = {{var|registration_id}} | status = {{var|status}} | purpose = {{var|purpose}} | headquarters = {{var|headquarters}} | location_city = {{var|location_city}} | location_country = {{var|location_country}} | coords = ({{thin space|use {{tl|coord}}}}) | origins = {{var|origins}} | region_served = {{var|region_served}} | products = {{var|products}} | services = {{var|services}} | methods = {{var|methods}} | fields = {{var|fields}} | membership = {{var|membership}} | membership_year = {{var|_year}} | language = {{var|language}} &nbsp;(or {{var|languages}}) | owner = {{var|owner}} &nbsp;(or {{var|owners}}) | sec_gen = {{var|sec_gen}} &nbsp;(or {{var|gen_sec}}) | leader_title = {{var|leader_title}} | leader_name = {{var|leader_name}} | leader_title2 = {{var|leader_title2}} | leader_name2 = {{var|leader_name2}} | board_of_directors = {{var|board_of_directors}} | key_people = {{var|key_people}} | main_organ = {{nowrap|{{var|main_organ}} &nbsp;(or {{var|publication}})}} | parent_organization = {{var|parent_organi[z/s]ation}} | subsidiaries = {{var|subsidiaries}} | secessions = {{var|secessions}} | affiliations = {{var|affiliations}} | ror_id = {{var|unique id}} | budget = {{var|budget}} | budget_year = {{var|_year}} | revenue = {{var|revenue}} | revenue_year = {{var|_year}} | disbursements = {{var|disbursements}} | expenses = {{var|expenses}} | expenses_year = {{var|_year}} | endowment = {{var|endowment}} | endowment_year = {{var|_year}} | funding = {{var|funding}} | staff = {{var|staff}} | staff_year = {{var|_year}} | volunteers = {{var|volunteers}} | volunteers_year = {{var|_year}} | students = {{var|students}} | students_year = {{var|_year}} | awards = {{var|awards}} | website = {{var|website}} | remarks = {{var|remarks}} | formerly = {{nowrap|{{var|formerly}} &nbsp;(or {{var|former_name}})}} | footnotes = {{var|footnotes}} }} <syntaxhighlight lang="wikitext" line style="overflow:auto;"> {{Infobox organization | name = Organization's {{var|name}} | full_name = Organization's unabbreviated name | native_name = {{var|native_name}} | native_name_lang = required ISO 639-1 code of the above native language | image = Example.png | alt = Text alternative for those who do not see the image | caption = {{longitem|({{var|caption}}{{thin space}}''':'''){{break}}Example.png ({{var|image}}) at template's default size.}} | map = World map.jpg | map_alt = This is the message carried by "map_alt" parameter | map_caption = {{longitem|({{var|map_caption}}{{thin space}}''':'''){{break}}World map.jpg ({{var|map}}) at template's default size.}} | abbreviation = {{var|abbreviation}} | nickname = {{var|nickname}} | named_after = {{var|named_after}} | predecessor = {{var|predecessor}} | merged = {{var|merged}} | successor = {{var|successor}} | formation = {{nowrap|{{var|formation}} &nbsp;(or {{var|established}})}} | founder = {{var|founder}} &nbsp;(or {{var|founders}}) | founding_location = {{var|founding_location}} | dissolved = {{var|dissolved}} &nbsp;(or {{var|defunct}}) | merger = {{var|merger}} | type = {{var|type}} | tax_id = {{var|tax_id}} &nbsp;(or {{var|vat_id}}) | registration_id = {{var|registration_id}} | status = {{var|status}} | purpose = {{var|purpose}} | headquarters = {{var|headquarters}} | location_city = {{var|location_city}} | location_country = {{var|location_country}} | coords = ({{thin space|use {{tl|coord}}}}) | origins = {{var|origins}} | region_served = {{var|region_served}} | products = {{var|products}} | services = {{var|services}} | methods = {{var|methods}} | fields = {{var|fields}} | membership = {{var|membership}} | membership_year = {{var|_year}} | language = {{var|language}} &nbsp;(or {{var|languages}}) | owner = {{var|owner}} &nbsp;(or {{var|owners}}) | sec_gen = {{var|sec_gen}} &nbsp;(or {{var|gen_sec}}) | leader_title = {{var|leader_title}} | leader_name = {{var|leader_name}} | leader_title2 = {{var|leader_title2}} | leader_name2 = {{var|leader_name2}} | board_of_directors = {{var|board_of_directors}} | key_people = {{var|key_people}} | main_organ = {{nowrap|{{var|main_organ}} &nbsp;(or {{var|publication}})}} | parent_organization = {{var|parent_organi[z/s]ation}} | subsidiaries = {{var|subsidiaries}} | secessions = {{var|secessions}} | affiliations = {{var|affiliations}} | ror_id = {{var|unique id}} | budget = {{var|budget}} | budget_year = {{var|_year}} | revenue = {{var|revenue}} | revenue_year = {{var|_year}} | disbursements = {{var|disbursements}} | expenses = {{var|expenses}} | expenses_year = {{var|_year}} | endowment = {{var|endowment}} | endowment_year = {{var|_year}} | funding = {{var|funding}} | staff = {{var|staff}} | staff_year = {{var|_year}} | volunteers = {{var|volunteers}} | volunteers_year = {{var|_year}} | students = {{var|students}} | students_year = {{var|_year}} | awards = {{var|awards}} | website = {{var|website}} | remarks = {{var|remarks}} | formerly = {{nowrap|{{var|formerly}} &nbsp;(or {{var|former_name}})}} | footnotes = {{var|footnotes}} }} </syntaxhighlight> {{clear}} ===Uprights=== There are four upright parameters, logo: {{para|upright}}, image: {{para|image_upright}}, map: {{para|map_upright}} and map2: {{para|map2_upright}}. For an explanation of the upright parameter, please see [[Help:Upright]]. ===Pushpin maps=== <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox organization ... | coordinates = <!-- Use the {{Coord}} template. --> | pushpin_map = <!-- Location name used for Template:Location map --> | map_alt = <!-- Location name used for Template:Location map --> | pushpin_relief = | map_dot_label = | map_size = | map_caption = <!-- Text to be displayed below map; for no caption enter "map_caption="; --> ... }} </syntaxhighlight> ==== Map type ==== A list of modules containing maps that may be used can be found at: * [[Special:PrefixIndex/Module:Location map/data/]] == Microformat == {{UF-hcard-org}} == TemplateData == {{TemplateData header}} <templatedata> { "format": "block", "params": { "full_name": { "label": "Full name", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Unabbreviated name of the organization" }, "image": { "label": "Image", "type": "wiki-file-name", "required": false, "suggested": false, "deprecated": false, "description": "Image of organisation" }, "image_size": { "label": "Image size", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "Size of image" }, "image_upright": { "label": "Image upright", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Upright sizing for image. See [[Help:Upright]]." }, "alt": { "label": "Alternative text", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Alternative text for image. See [[WP:ALT]]." }, "caption": { "label": "Image caption", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Caption for image", "example": "YMCA headquarters in Geneva, Switzerland" }, "logo": { "label": "Logo", "type": "wiki-file-name", "required": false, "suggested": false, "deprecated": false, "description": "Logo of organisation" }, "logo_size": { "label": "Logo size", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "size of logo" }, "upright": { "label": "Logo upright", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Upright sizing for logo. See [[Help:Upright]]." }, "logo_alt": { "label": "Logo alt", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "see [[WP:ALT]]" }, "logo_caption": { "label": "Logo caption", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "caption of logo" }, "map": { "label": "Map", "type": "wiki-file-name", "required": false, "suggested": false, "deprecated": false, "description": "Map image" }, "map_size": { "label": "Map size", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "defaults to 250px" }, "map_upright": { "label": "Map upright", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Upright sizing for map. See [[Help:Upright]]." }, "map_alt": { "label": "Map alt", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Alternative text for map" }, "map_caption": { "label": "Map caption", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "caption for map" }, "map2": { "label": "Second map", "type": "wiki-file-name", "required": false, "suggested": false, "deprecated": false, "description": "second map image, if required" }, "map2_size": { "label": "Second map size", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "size of map" }, "map2_upright": { "label": "Second map upright", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Upright sizing for map2. See [[Help:Upright]]." }, "map2_alt": { "label": "Second map alt", "type": "string", "required": false, "suggested": false, "deprecated": false }, "map2_caption": { "label": "Second map caption", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "caption for map" }, "nickname": { "label": "Nickname", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Nickname of organization" }, "pronounce": { "label": "Pronounce", "type": "string", "required": false, "suggested": false, "deprecated": false }, "pronounce ref": { "label": "Pronounce ref", "type": "string", "required": false, "suggested": false, "deprecated": false }, "pronounce comment": { "label": "pronounce comment", "type": "string", "required": false, "suggested": false, "deprecated": false }, "pronounce 2": { "label": "Pronounce 2", "type": "string", "required": false, "suggested": false, "deprecated": false }, "named_after": { "label": "Named after", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Person or other entity that the organisation was named after, if any" }, "predecessor": { "label": "Predecessor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Organization that preceded this one, if any" }, "merged": { "label": "Merged", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Any other organizations with which this organization was merged" }, "successor": { "label": "Successor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Organisation that succeeded/replaced this one, if any" }, "formation": { "label": "Formation", "aliases": [ "established", "founded" ], "type": "date", "required": false, "suggested": true, "deprecated": false, "description": "Date established, e.g., use {{start date and age|YYYY|MM|DD}}" }, "founder": { "label": "Founder", "aliases": [ "founders" ], "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Founder(s) of organisation" }, "founding_location": { "label": "Founding location", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Place where organization was founded" }, "merger": { "label": "Merger", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Other organizations (if any) that merged to constitute this organization" }, "type": { "label": "Type", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Type of organization", "example": "[[Governmental organization|Governmental]], [[Non-governmental organization|NGO]], [[Nonprofit organization|Nonprofit]]" }, "tax_id": { "label": "tax_id", "aliases": [ "vat_id" ], "type": "string", "required": false, "suggested": false, "deprecated": false }, "registration_id": { "label": "registration_id", "type": "string", "required": false, "suggested": false, "deprecated": false }, "status": { "label": "Status", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Organization's legal status or description (company, charity, foundation)", "example": "foundation" }, "purpose": { "label": "Purpose", "aliases": [ "focus" ], "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Organization's purpose or focus", "example": "humanitarian, activism, peacekeeping, etc." }, "professional_title": { "label": "Professional title", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "For professional associations" }, "headquarters": { "label": "Headquarters", "type": "string", "required": false, "suggested": true, "deprecated": false, "description": "Location of organisation's headquarters" }, "coordinates": { "label": "Coordinates", "aliases": [ "coords" ], "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Coordinates of location, use {{coord}}" }, "origins": { "label": "Origins", "type": "string", "required": false, "suggested": false, "deprecated": false }, "products": { "label": "Products", "aliases": [ "product" ], "type": "string", "required": false, "suggested": false, "deprecated": false }, "services": { "label": "Services", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "services of organisation" }, "methods": { "label": "Methods", "aliases": [ "method" ], "type": "string", "required": false, "suggested": false, "deprecated": false }, "fields": { "label": "Fields", "aliases": [ "field" ], "type": "string", "required": false, "suggested": false, "deprecated": false }, "membership": { "label": "Membership", "aliases": [ "members" ], "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Number of memberships in organisation, if relevant", "example": "100" }, "membership_year": { "label": "Membership year", "type": "date", "required": false, "suggested": false, "deprecated": false, "description": "Year in which number of memberships was given", "example": "2016" }, "language": { "label": "Language", "aliases": [ "languages" ], "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Any official language or languages used by the organization", "example": "French" }, "owner": { "label": "Owner", "aliases": [ "owners" ], "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Entity that owns this organization, if any" }, "sec_gen": { "label": "Secretary General", "aliases": [ "gen_sec" ], "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the organization's Secretary General (if such post exists)" }, "leader_title": { "label": "Leader title", "type": "string", "required": false, "suggested": true, "deprecated": false, "description": "Title of leader #1", "example": "Board Chair" }, "leader_name": { "label": "Leader name", "type": "string", "required": false, "suggested": true, "deprecated": false, "description": "Name of leader #1", "example": "Jane Doe" }, "leader_title2": { "label": "Leader title 2", "type": "string", "required": false, "suggested": false, "deprecated": false, "example": "CEO, President, etc." }, "leader_name2": { "label": "Leader name 2", "type": "string", "required": false, "suggested": false, "deprecated": false }, "leader_name3": { "label": "Leader name 3", "type": "string", "required": false, "suggested": false, "deprecated": false }, "leader_title3": { "label": "Leader title 3", "type": "string", "required": false, "suggested": false, "deprecated": false, "example": "Director, Manager, etc." }, "leader_title4": { "label": "Leader title 4", "type": "string", "required": false, "suggested": false, "deprecated": false }, "leader_name4": { "label": "Leader name 4", "type": "string", "required": false, "suggested": false, "deprecated": false }, "leader_title5": { "label": "Leader title 5", "type": "string", "required": false, "suggested": false, "deprecated": false }, "leader_name5": { "label": "Leader name 5", "type": "string", "required": false, "suggested": false, "deprecated": false }, "board_of_directors": { "label": "Board of directors", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Organization's board of directors" }, "key_people": { "label": "Key people", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Key people of organisation, e.g. use {{plainlist}} for multiple" }, "main_organ": { "label": "Main organ", "aliases": [ "publication" ], "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Organization's principal body (assembly, committee, board) or publication", "example": "assembly, committee, board, etc." }, "parent_organization": { "label": "Parent organization", "aliases": [ "parent_organisation" ], "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Parent organisation of this one" }, "subsidiaries": { "label": "Subsidiaries", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Subsidiaries of this organisation" }, "secessions": { "label": "Secessions", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Organisation secessions" }, "affiliations": { "label": "Affiliations", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Affiliation of organisation" }, "ror_id": { "label": "R.O.R. Id", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "unique ID in the Research Organization Registry" }, "budget": { "label": "Budget", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Organisation budget", "example": "$2 m [[Canadian dollar|CAD]]" }, "budget_year": { "label": "Budget year", "type": "date", "required": false, "suggested": false, "deprecated": false, "example": "2016" }, "revenue": { "label": "Revenue", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Revenue made by organization", "example": "$5 m [[Canadian dollar|CAD]]" }, "revenue_year": { "label": "Revenue year", "type": "date", "required": false, "suggested": false, "deprecated": false }, "disbursements": { "label": "Disbursements", "type": "string", "required": false, "suggested": false, "deprecated": false }, "expenses": { "label": "Expenses", "type": "string", "required": false, "suggested": false, "deprecated": false }, "expenses_year": { "label": "Expenses year", "type": "date", "required": false, "suggested": false, "deprecated": false }, "endowment": { "label": "Endowment", "type": "string", "required": false, "suggested": false, "deprecated": false }, "endowment_year": { "label": "Endowment year", "type": "date", "required": false, "suggested": false, "deprecated": false }, "staff": { "label": "Staff", "aliases": [ "employees" ], "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Numbers or types of staff", "example": "20 [[Full-time equivalent|FTEs]]" }, "staff_year": { "label": "Staff year", "aliases": [ "employees_year" ], "type": "date", "required": false, "suggested": false, "deprecated": false }, "volunteers": { "label": "Volunteers", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Numbers or types of volunteers", "example": "10 (part-time)" }, "volunteers_year": { "label": "Volunteers year", "type": "date", "required": false, "suggested": false, "deprecated": false }, "students": { "label": "Students", "type": "string", "required": false, "suggested": false, "deprecated": false }, "students_year": { "label": "Students year", "type": "date", "required": false, "suggested": false, "deprecated": false }, "website": { "label": "Website", "type": "url", "required": false, "suggested": true, "deprecated": false, "description": "Official website of organisation", "aliases": [ "site" ] }, "remarks": { "label": "Remarks", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Organisation remarks" }, "formerly": { "label": "Formerly", "aliases": [ "former_name" ], "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Any former names by which the organization was known" }, "footnotes": { "label": "Footnotes", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Footnotes/references" }, "bodystyle": { "label": "bodystyle", "type": "string", "required": false, "suggested": false, "deprecated": false }, "dissolved": { "aliases": [ "defunct" ], "label": "Dissolved", "description": "Dissolved, e.g. use {{end date and age|YYYY|MM|DD}}", "type": "date" }, "location_country": { "label": "Location country", "description": "Country of the organization's location", "example": "[[Canada]]" }, "location_city2": { "aliases": [ "location2" ] }, "location_country2": {}, "addnl_location_city": { "aliases": [ "addnl_location" ] }, "addnl_location_country": {}, "addnl_location_city2": { "aliases": [ "addnl_location2" ] }, "addnl_location_country2": {}, "awards": { "label": "Awards", "description": "Awards received by organization, include wikilink if any, use {{Template:Bulleted list}} or {{plainlist}} if multiple" }, "native_name_lang": { "label": "Native name language", "description": "2 letter language code for native_name", "type": "string", "example": "fr" }, "name": { "label": "Name", "description": "defaults to {{PAGENAME}} if name not provided", "example": "YMCA", "type": "string", "suggested": true }, "native name": { "label": "Native name", "description": "Organization's name in its local language", "type": "string" }, "abbreviation": { "label": "Abbreviation", "description": "Abbreviation or acronym of organisation name", "type": "string" }, "region": { "label": "Region", "description": "Any particular region or regions associated with or served by the organization", "type": "string" }, "location_city": { "label": "Location city", "description": "city where organization is located", "example": "[[Baltimore, MD]]", "type": "string" } }, "paramOrder": [ "name", "formation", "full_name", "native name", "native_name_lang", "logo", "logo_size", "upright", "logo_alt", "logo_caption", "image", "image_size", "image_upright", "alt", "caption", "map", "map_size", "map_upright", "map_alt", "map_caption", "map2", "map2_size", "map2_upright", "map2_alt", "map2_caption", "abbreviation", "nickname", "formerly", "named_after", "pronounce", "pronounce ref", "pronounce comment", "pronounce 2", "predecessor", "merged", "merger", "successor", "founder", "founding_location", "dissolved", "type", "tax_id", "registration_id", "status", "purpose", "professional_title", "headquarters", "location_city", "location_country", "location_city2", "location_country2", "addnl_location_city", "addnl_location_country", "addnl_location_city2", "addnl_location_country2", "coordinates", "origins", "region", "products", "services", "methods", "fields", "membership", "membership_year", "language", "owner", "sec_gen", "leader_title", "leader_name", "leader_title2", "leader_name2", "leader_title3", "leader_name3", "leader_title4", "leader_name4", "leader_title5", "leader_name5", "board_of_directors", "key_people", "main_organ", "parent_organization", "subsidiaries", "secessions", "affiliations", "ror_id", "budget", "budget_year", "revenue", "revenue_year", "disbursements", "expenses", "expenses_year", "endowment", "endowment_year", "staff", "staff_year", "volunteers", "volunteers_year", "students", "students_year", "awards", "website", "remarks", "footnotes", "bodystyle" ], "description": { "en": "Used to provide at-a-glance information at the start of an article about an organization." } } </templatedata> == Tracking categories == * {{Category link with count|Infoboxes without native name language parameter}} * {{Category link with count|Pages using infobox organization with motto or pledge}} * {{Category link with count|Pages using infobox organization with unknown parameters}} == See also == * {{tl|Infobox organization/Wikidata}} * [[Wikipedia:INFOBOXFLAG]] {{Organization infoboxes}}<includeonly> {{sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Organization infobox templates| Organization]] [[Category:Society and social science infobox templates|Organization]] [[Category:Templates that add a tracking category]] }}</includeonly> 10fee924fdd5eaaca355e4caf3bd7788fd9d37c6 Module:Message box 828 10 15 2023-09-02T22:54:30Z Anomie 5 [[:File:Cscr-featured.svg]] needs a link to the description page for license and attribution. Add the ability for the configuration to specify a flag to accomplish this. Scribunto text/plain require('strict') local getArgs local yesno = require('Module:Yesno') local lang = mw.language.getContentLanguage() local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image self.typeImageNeedsLink = typeData.imageNeedsLink -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s%s|alt=]]', self.typeImage or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" ) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end -- set templatestyles self.base_templatestyles = cfg.templatestyles self.templatestyles = args.templatestyles end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end local frame = mw.getCurrentFrame() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.base_templatestyles }, }) -- Add support for a single custom templatestyles sheet. Undocumented as -- need should be limited and many templates using mbox are substed; we -- don't want to spread templatestyles sheets around to arbitrary places if self.templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.templatestyles }, }) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('span') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :addClass('mbox-invalid-type') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) f2fb84f7b817d2d88747f57c40902a0d8be8158a Template:Dummy ref 10 584 1316 2023-09-03T16:33:15Z wikipedia>Intrisit 0 Added rcat shell for a clean look and refactored rcat for this title. wikitext text/x-wiki #REDIRECT [[Template:Dummy reference]] {{Redirect category shell|{{R from short name}}}} 51e7e4d220e438d9b8e1e1ee2c7b8d4f91fb7569 Template:Infobox royalty/doc 10 1360 2695 2023-09-03T20:02:19Z w>DrKay 0 unnecessary detail wikitext text/x-wiki {{Documentation subpage}} {{person infobox header}} {{Auto short description}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} This template may be used for anyone having royal connections. This template is only for historic biographies and must not be used for mythical / legendary characters or creatures. You can use other templates for them, such as {{tlx|Infobox character}}. == Blank syntax == {{Parameter names example |name |title |titletext |more |image |image_size |alt |caption |succession |moretext |reign |reign-type |coronation |cor-type |investiture |predecessor |pre-type |successor |suc-type |regent |reg-type |succession1 |moretext1 |reign1 |reign-type1 |coronation1 |cor-type1 |predecessor1 |pre-type1 |successor1 |suc-type1 |regent1 |reg-type1 |succession2 |moretext2 |reign2 |reign-type2 |coronation2 |cor-type2 |predecessor2 |pre-type2 |successor2 |suc-type2 |regent2 |reg-type2 |succession3 |moretext3 |reign3 |reign-type3 |coronation3 |cor-type3 |predecessor3 |pre-type3 |successor3 |suc-type3 |regent3 |reg-type3 |birth_name |birth_date |birth_place |death_date |death_place |burial_date |burial_place |queen |type |spouse |spouse-type |spouses |spouses-type |consort |issue |issue-link |issue-pipe |issue-type |full name |era name |era dates |regnal name |posthumous name |temple name |native_lang1 |native_lang1_name1 |house |house-type |royal house |father |mother |religion |occupation |signature_type |signature |signature_alt |module }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox royalty | embed = | name = | title = | titletext = | more = | image = | image_size = | alt = | caption = | succession = | moretext = | reign = | reign-type = | coronation = | cor-type = | investiture = | predecessor = | pre-type = | successor = | suc-type = | regent = | reg-type = | succession1 = | moretext1 = | reign1 = | reign-type1 = | coronation1 = | cor-type1 = | predecessor1 = | pre-type1 = | successor1 = | suc-type1 = | regent1 = | reg-type1 = | succession2 = | moretext2 = | reign2 = | reign-type2 = | coronation2 = | cor-type2 = | predecessor2 = | pre-type2 = | successor2 = | suc-type2 = | regent2 = | reg-type2 = | succession3 = <!-- up to | succession10 = --> | moretext3 = | reign3 = | reign-type3 = | coronation3 = | cor-type3 = | predecessor3 = | pre-type3 = | successor3 = | suc-type3 = | regent3 = | reg-type3 = | birth_name = | birth_date = <!-- For Gregorian dates: {{birth date and age|YYYY|MM|DD|df=y}} --> | birth_place = | death_date = <!-- {{death date and age|YYYY|MM|DD|YYYY|MM|DD|df=y}} --> | death_place = | burial_date = | burial_place = | queen = | spouse = <!-- or | spouses = --> | spouse-type = <!-- or | spouses-type = --> | consort = <!-- yes or no --> | issue = <!--list children in order of birth. Use {{plainlist}} or {{unbulleted list}} --> | issue-link = | issue-pipe = | issue-type = | full name = | era name = | era dates = | regnal name = | posthumous name = | temple name = | native_lang1 = <!-- up to | native_lang5 = --> | native_lang1_name1 = <!-- up to | native_lang5_name1 = --> | house = | house-type = | royal house = | dynasty = | father = | mother = | religion = | occupation = | signature_type = | signature = | signature_alt = | module = }} </syntaxhighlight> == Example == {{Infobox royalty | name = Henry VIII | image = After Hans Holbein the Younger - Portrait of Henry VIII - Google Art Project.jpg | alt = Portrait of Henry VIII | caption = Portrait by [[Hans Holbein the Younger]] | succession = {{hlist |[[List of English monarchs|King of England]] |[[List of Irish monarchs|Lord/King of Ireland]]}} | moretext = ([[Style of the English sovereigns|more...]]) | reign = {{nowrap|21 April 1509 – 28 January 1547}} | coronation = 24 June 1509 | predecessor = [[Henry VII of England|Henry VII]] | successor = [[Edward VI of England|Edward VI]] | spouses = {{plainlist| * [[Catherine of Aragon]] * [[Anne Boleyn]] * [[Jane Seymour]] * [[Anne of Cleves]] * [[Catherine Howard]] * [[Catherine Parr]] }} | issue = {{plainlist| * [[Mary I of England]] * [[Henry FitzRoy, 1st Duke of Richmond and Somerset|Henry Fitzroy]] ''(illegitimate)'' * [[Elizabeth I of England]] * [[Edward VI of England]] }} | issue-link = #Marriages and issue | issue-pipe = (among others) | house = [[House of Tudor|Tudor]] | father = [[Henry VII of England]] | mother = [[Elizabeth of York]] | birth_date = 28 June 1491 | birth_place = [[Palace of Placentia|Greenwich Palace]], [[Greenwich]] | death_date = {{death date and age|1547|1|28|1491|6|28|df=yes}} | death_place = [[Palace of Whitehall]], London | burial_place = {{nowrap|[[St George's Chapel, Windsor Castle]]}} | signature = HenryVIIISig.svg | religion = {{longitem|Christian ([[Catholic Church|Roman Catholic]] then [[Anglo-Catholicism#History|Anglican]])}} }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox royalty | name = Henry VIII | image = After Hans Holbein the Younger - Portrait of Henry VIII - Google Art Project.jpg | alt = Portrait of Henry VIII | caption = Portrait by [[Hans Holbein the Younger]] | succession = {{hlist |[[List of English monarchs|King of England]] |[[List of Irish monarchs|Lord/King of Ireland]]}} | moretext = ([[Style of the English sovereigns|more...]]) | reign = {{nowrap|21 April 1509 – 28 January 1547}} | coronation = 24 June 1509 | predecessor = [[Henry VII of England|Henry VII]] | successor = [[Edward VI of England|Edward VI]] | spouses = {{plainlist| * [[Catherine of Aragon]] * [[Anne Boleyn]] * [[Jane Seymour]] * [[Anne of Cleves]] * [[Catherine Howard]] * [[Catherine Parr]] }} | issue = {{plainlist| * [[Mary I of England]] * [[Henry FitzRoy, 1st Duke of Richmond and Somerset|Henry Fitzroy]] ''(illegitimate)'' * [[Elizabeth I of England]] * [[Edward VI of England]] }} | issue-link = #Marriages and issue | issue-pipe = (among others) | house = [[House of Tudor|Tudor]] | father = [[Henry VII of England]] | mother = [[Elizabeth of York]] | birth_date = 28 June 1491 | birth_place = [[Palace of Placentia|Greenwich Palace]], [[Greenwich]] | death_date = {{death date and age|1547|1|28|1491|6|28|df=yes}} | death_place = [[Palace of Whitehall]], London | burial_place = {{nowrap|[[St George's Chapel, Windsor Castle]]}} | signature = HenryVIIISig.svg | religion = {{longitem|Christian ([[Catholic Church|Roman Catholic]] then [[Anglo-Catholicism#History|Anglican]])}} }} </syntaxhighlight> {{clear right}} == Parameters == All parameters are optional (even "name" can be taken from PAGENAME). {| class="wikitable" |- | colspan="2" style="text-align:center;background: #EEDDFF;" | name / title / type / image |- | style="align: right; text-align: right; vertical-align: top;" | name = | Most common name in English-language sources (e.g. George III; Prince William (not William, Duke of Cumberland); Sophie (neither Princess Edward nor Princess Sophie); Elizabeth Bowes-Lyon (rather than Queen Elizabeth); Prince William (rather than Prince William of Wales) etc.) |- | style="align: right; text-align: right; vertical-align: top;" | title = | Principal [[substantive title]](s) in use (e.g. King of England; prev. Duke of Edinburgh) (omit this field if any one "succession(X)" field would be identical to it). Automatically italicized, so do not use {{tl|plainlist}} or similar templates; use {{tag|br|s}} for line breaks. |- | style="align: right; text-align: right; vertical-align: top;" | titletext = | An explanatory note about "title", already in small text — such as a link to full titles (dependent upon "title") |- | style="align: right; text-align: right; vertical-align: top;" | more = | Automatically-generated alternative to "titletext"; only appears if "titletext" is undefined/empty and "realm" is defined : '''{{hlist |austria |belgium |britain |china |cyprus |denmark |en-sco |england |ethiopia |france |hre |hungary |italy |jerusalem |luxembourg |malaysia |monaco |netherlands |norway |parma |portugal |russia |scotland |sicilies |spain-crown |spain-heir |sweden}}''' |- | style="align: right; text-align: right; vertical-align: top;" | image = | i.e. X.jpg, ''that is to say no [[Image:'' |- | style="align: right; text-align: right; vertical-align: top;" | image_size = | Size to display image: 200px (set width), x300px (set height), or 200x300px (max width & max height). This defaults to frameless (default is 220px, but logged in users can change this by clicking on "my preferences" and adjusting thumbnail size) if empty or omitted. This parameter should not normally need to be set. |- | style="align: right; text-align: right; vertical-align: top;" | alt = | Alt text for the image, for visually impaired readers ''see [[WP:ALT]]'' |- | style="align: right; text-align: right; vertical-align: top;" | caption = | Details of artist and year, for instance ''see [[WP:CAP]]'' |- | colspan="2" style="text-align:center;background: #EEDDFF;" | ''succession'' fields |- | style="align: right; text-align: right; vertical-align: top;" | succession = | Primary substantive hereditary title (regarding the following fields, "reign" 'til "suc-type"; omit the "title" field if the two would be identical) |- | style="align: right; text-align: right; vertical-align: top;" | moretext = | An explanatory note about the "succession", already in small text — such as a link to full titles (dependent upon "succession") |- | style="align: right; text-align: right; vertical-align: top;" | reign = | D Month YYYY – D Month YYYY (or other appropriate format per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]]; for monarchs and their consorts (although dates may differ between the two)) |- | style="align: right; text-align: right; vertical-align: top;" | reign-type = | Optional alternative text for 'Reign' (dependent upon "reign") |- | style="align: right; text-align: right; vertical-align: top;" | coronation = | D Month YYYY (or other appropriate format per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]]; for monarchs and their consorts) |- | style="align: right; text-align: right; vertical-align: top;" | cor-type = | Optional alternative text for 'Coronation', such as 'Investiture' (dependent upon "coronation"). Automatically links to country-specific article if one of the following values is entered: : '''{{hlist |britain |france |hre |hungary |japan |malaysia |norway |ottoman |poland |russia}}''' |- | style="align: right; text-align: right; vertical-align: top;" | predecessor = | For use in succession whose titles are entirely and directly hereditary. Link should be piped as appropriate — when it is reasonably clear that the person in context is a (e.g.) King of Scots, he may be linked as "James II" rather than "James II of Scotland". |- | style="align: right; text-align: right; vertical-align: top;" | pre-type = | Optional alternative text for 'Predecessor' (dependent upon "predecessor") |- | style="align: right; text-align: right; vertical-align: top;" | regent = | Any regents of the monarch in their role in this succession only; listed by most common name/title, most recent first, using {{tl|unbulleted list}}. |- | style="align: right; text-align: right; vertical-align: top;" | reg-type = | Optional alternative text for 'Regent' (dependent upon "regent") |- | style="align: right; text-align: right; vertical-align: top;" | successor = | As predecessor, ''[[mutatis mutandis]]'' |- | style="align: right; text-align: right; vertical-align: top;" | suc-type = | Optional alternative text for 'Successor'. e.g. 'Heir apparent' or 'Heir presumptive' (dependent upon "successor") |- | colspan="2" style="text-align:center;background: #EEDDFF;" | "succession" to "suc-type" repeated as "successionX" to "suc-typeX" for 1–9 |- | style="align: right; text-align: right; vertical-align: top;" | birth_name = | If different from name or full name |- | style="align: right; text-align: right; vertical-align: top;" | birth_date = | *for dead people with dates in the Gregorian calendar, <nowiki>{{birth date|yyyy|mm|dd|df=yes}}</nowiki> (''m.m.'' per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]] and [[:Template:Birth date]]) *for living persons, <nowiki>{{birth date and age|yyyy|mm|dd|df=yes}}</nowiki> (''m.m.'' per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]] and [[:Template:Birth date and age]]) |- | style="align: right; text-align: right; vertical-align: top;" | birth_place = | [[Home|Residence]], Town/City/County/Region/Country (although almost invariably Country is obvious) HOWEVER, TAKE CARE TO AVOID [[Wikipedia:Manual of Style/Icons|FLAGCRUFT]] (dependent upon "date of birth") |- | style="align: right; text-align: right; vertical-align: top;" | death_date = | *for those who died aged 3 years old or over, <nowiki>{{death date and age|YYYY|MM|DD|yyyy|mm|dd|df=yes}}</nowiki> (dd/mm/yyyy being DoB; ''m.m.'' per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]] and [[:Template:Death date and age]]) *for those who died aged under 3 years old, <nowiki>{{death date|YYYY|MM|DD|df=yes}} (aged {{age for infant|abbr=yes|yyyy|mm|dd|YYYY|MM|DD|df=yes}})</nowiki> (dd/mm/yyyy being DoB; ''m.m.'' per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]], [[:Template:Death date]] and [[:Template:age for infant]]) |- | style="align: right; text-align: right; vertical-align: top;" | death_place = | See "birth_place", ''m.m.'' (dependent upon "death_date") |- | style="align: right; text-align: right; vertical-align: top;" | burial_date = | See "death_date" |- | style="align: right; text-align: right; vertical-align: top;" | burial_place = | See "birth_place" |- | colspan="2" style="text-align:center;background: #FFEEDD;" | ''spouse'' fields |- | style="align: right; text-align: right; vertical-align: top;" | consort = | *yes, ''if the subject is the consort of any monarch — affects "reign"'' *no, ''which is the default if the field is omitted'' |- | style="align: right; text-align: right; vertical-align: top;" | spouse = | Husbands/wives only; listed by most common name/title, in chronological order, using {{tl|unbulleted list}}, and dates if needed, e.g. (m. 2004; div. 2006). Break dates onto a new line if more visually appropriate. <code>spouses</code> is an alternative. |- | style="align: right; text-align: right; vertical-align: top;" | spouse-type = | Optional alternative text for 'Spouse', <code>spouses-type</code> is an alternative. |- | colspan="2" style="text-align:center;background: #FFEEDD;" | Another alternative is to repeat as "spouseX" and "spouseX-type" for 1–9; label is 'Wife' or 'Wives'. |- | style="align: right; text-align: right; vertical-align: top;" | issue = | Children in order of birth, using {{tl|unbulleted list}}; listed by name and highest shorthand title (e.g. Prince Edward, Earl of Wessex), do not use preceding styles (e.g. ''HM''). Individuals without articles and/or who died as infants may be omitted from the list on an arbitrary basis. See also note for 'predecessor'. |- | style="align: right; text-align: right; vertical-align: top;" | issue-link = | Creates small link to a section in the article for further details on offspring (dependent upon "issue") |- | style="align: right; text-align: right; vertical-align: top;" | issue-pipe = | Changes the output text of the above link (dependent upon "issue-link") |- | style="align: right; text-align: right; vertical-align: top;" | full name = | English/Anglicised full legal non-titular name (current/most recent), with maiden name '([[Married and maiden names|née]] Whatever)' and translation in their native/official tongue(s) on a new line (each) underneath (use a <nowiki>''{{lang-XX|}}''</nowiki> [[:Category:Wikipedia multilingual support templates|multilingual support template]]) |- | style="align: right; text-align: right; vertical-align: top;" | era name = | For [[Regnal year#Asian era names|Asian era names]], wikilinked if appropriate (dependent upon "era dates") |- | style="align: right; text-align: right; vertical-align: top;" | era dates = | The dates of the monarch's era (per the above) |- | style="align: right; text-align: right; vertical-align: top;" | regnal name = | The monarch's [[regnal name]] |- | style="align: right; text-align: right; vertical-align: top;" | posthumous name = | The posthumous name given to monarchs in certain traditions |- | style="align: right; text-align: right; vertical-align: top;" | temple name = | As "posthumous name" ''m.m.'' |- | style="align: right; text-align: right; vertical-align: top;" | house = | The houses, dynasties, or families to which the subject belonged/s (by birth, marriage or otherwise), listed chronologically first to last, using {{tl|unbulleted list}} (e.g. <code><nowiki>{{unbulleted list|[[House of Saxe-Coburg and Gotha|Saxe-Coburg and Gotha]] | [[House of Windsor|Windsor]] }}</nowiki></code>) (formerly called "house name" and listed last to first — it is strongly recommended that, for clarity, ''(by birth/marriage)'' or similar be included after each House's link) |- | style="align: right; text-align: right; vertical-align: top;" | house-type = | Optional alternative text for 'Royal house', such as 'Dynasty' or 'Family' (dependent upon "house") |- | style="align: right; text-align: right; vertical-align: top;" | father = | Most common shorthand name, do not use preceding styles (e.g. ''HM''). May include multiple individuals, such as (biological), (adoptive) or (''hānai''). See also note for 'predecessor'. |- | style="align: right; text-align: right; vertical-align: top;" | mother = | Most common maiden name or highest title held in her own right |- | style="align: right; text-align: right; vertical-align: top;" | occupation = | Primary non-royal occupations, listed most recent first (if the subject is deceased there's no need for 'prev.') e.g. 'Theatre; prev. Broadcasting' (alive), or 'Military; Author' (dead) |- | style="align: right; text-align: right; vertical-align: top;" | signature = | X.jpg, being an image of the subject's personal signature |- | style="align: right; text-align: right; vertical-align: top;" | signature_type = | A label to replace the default 'Signature', e.g. [[Tughra]] for Ottoman sultans |- | style="align: right; text-align: right; vertical-align: top;" | signature_alt = | Alt text for signature |- | style="align: right; text-align: right; vertical-align: top;" | religion = | Despite [[Wikipedia:Village_pump_(policy)/Archive_126#RfC:_Religion_in_biographical_infoboxes|an RFC that generally forbids religion in "person" infoboxes]], because religion is a relevant characteristic of many monarchs, religion may be listed if relevant, sourced and uncontroversial. See this template's talk page for related discussions. |} === Use as a child template === The '''embed''' parameter is used when embedding this infobox into another. {{Infobox person module documentation |template=Infobox royalty |parameter=embed}} === Embedding other templates === The '''module''' parameter is used for embedding other templates into this infobox (see [[Wikipedia:Infobox modules]]). <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox royalty | name = | <!-- etc. --> | module = {{Infobox military person | embed=yes | <!-- etc. --> }} }} </syntaxhighlight> == Notes == ; Peer wikilinks : The wikilinks of substantive peers (or those in another kind of numbered succession) should always show that number (eg [[Richard, 1st Earl of Cornwall]] rather than Richard, Earl of Cornwall), unless other conventions say otherwise (such as that one should always see [[Prince Edward, Duke of Kent]], never Prince Edward, 2nd Duke of Kent). Generally, use the article's title, omitting surplus fore- and surnames or disambiguation. == Microformats == {{UF-hcard-person}} == TemplateData == {{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <templatedata>{ "description": "An infobox for royalty", "format": "{{_\n| ____________ = _\n}}\n", "params": { "2": {}, "name": { "label": "Name", "description": "Most common name in English-language sources.", "type": "string", "required": false }, "title": { "label": "Title", "description": "Principal substantive title(s) in use.", "type": "string", "required": false }, "titletext": { "label": "Titletext", "description": "An explanatory note about 'title', already in small text — such as a link to full titles (dependent upon 'title').", "type": "string", "required": false }, "more": { "label": "More", "description": "Automatically-generated alternative to 'titletext', only appears if 'titletext' is undefined/empty and 'realm' is defined.", "type": "string", "required": false }, "image": { "label": "Image", "description": "i.e. X.jpg, that is to say no [[Image:", "type": "wiki-file-name", "required": false }, "alt": { "label": "Alt", "description": "Alt text for the image", "type": "string", "required": false }, "caption": { "label": "Caption", "description": "Details of author and year", "type": "string", "required": false }, "succession": { "label": "Succession", "description": "Primary substantive hereditary title (regarding the following fields, 'reign' 'til 'suc-type'; omit the 'title' field if the two would be identical)", "type": "string", "required": false }, "moretext": { "label": "moretext", "description": "An explanatory note about the 'succession', already in small text — such as a link to full titles (dependent upon 'succession')", "type": "string", "required": false }, "reign": { "label": "Reign", "description": "D Month YYYY – D Month YYYY (or other appropriate format per MOS:DATE#Dates; for monarchs and their consorts (although dates may differ between the two))", "type": "string", "required": false }, "reign-type": { "label": "Reign-type", "description": "Optional alternative text for 'Reign' (dependent upon 'reign')", "type": "string", "required": false }, "coronation": { "label": "Coronation", "description": "D Month YYYY (or other appropriate format per MOS:DATE#Dates; for monarchs and their consorts)", "type": "string", "required": false }, "cor-type": { "label": "Coronation-type", "description": "Optional alternative text for 'Coronation', such as 'Investiture' (dependent upon 'coronation'). Automatically links to country-specific article if one of the following values is entered:britain,france,hre,hungary,japan,malaysia,norway,ottoman,poland,russia.", "type": "string", "required": false }, "predecessor": { "label": "Predecessor", "description": "For use in succession whose titles are entirely and directly hereditary. Link should be piped as appropriate — when it is reasonably clear that the person in context is a (e.g.) King of Scots, he may be linked as 'James II' rather than 'James II of Scotland'.", "type": "string", "required": false }, "pre-type": { "label": "Predecessor-type", "description": "Optional alternative text for 'Predecessor' (dependent upon 'predecessor')", "type": "string", "required": false }, "regent": { "label": "Regent", "description": "Any regents of the monarch in their role in this succession only; listed by most common name/title, most recent first, using <nowiki>{{unbulleted list}}</nowiki>", "type": "string", "required": false }, "reg-type": { "label": "Regent-type", "description": "Optional alternative text for 'Regent' (dependent upon 'regent')", "type": "string", "required": false }, "successor": { "label": "Successor", "description": "As predecessor, mutatis mutandis", "type": "string", "required": false }, "suc-type": { "label": "Successor-type", "description": "Optional alternative text for 'Successor'. e.g. 'Heir apparent' or 'Heir presumptive' (dependent upon 'successor')", "type": "string", "required": false }, "birth_name": { "label": "Birth name", "description": "If different from name or full name.", "type": "string", "required": false }, "birth_date": { "label": "Birth date", "description": "for dead people with dates in the Gregorian calendar, {{birth date|yyyy|mm|dd|df=yes}} (m.m. per MOS:DATE#Dates and Template:Birth date), for living persons, {{birth date and age|yyyy|mm|dd|df=yes}} (m.m. per MOS:DATE#Dates and Template:Birth date and age)", "type": "string", "required": false }, "birth_place": { "label": "Birth place", "description": "Residence, Town/City/County/Region/Country (although almost invariably Country is obvious) HOWEVER, TAKE CARE TO AVOID FLAGCRUFT (dependent upon 'date of birth')", "type": "string", "required": false }, "death_date": { "label": "Death date", "description": "for those who died aged 3 years old or over, {{death date and age|YYYY|MM|DD|yyyy|mm|dd|df=yes}} (dd/mm/yyyy being DoB; m.m. per MOS:DATE#Dates and Template:Death date and age), for those who died aged under 3 years old, {{death date|YYYY|MM|DD|df=yes}} (aged {{age for infant|abbr=yes|yyyy|mm|dd|YYYY|MM|DD|df=yes}}) (dd/mm/yyyy being DoB; m.m. per MOS:DATE#Dates, Template:Death date and Template:age for infant)", "type": "string", "required": false }, "death_place": { "label": "Death place", "description": "See 'birth_place', m.m. (dependent upon 'death_date')", "type": "string", "required": false }, "burial_date": { "label": "Burial date", "description": "See 'death_date'", "type": "string", "required": false, "aliases": [ "date of burial" ] }, "burial_place": { "label": "Burial place", "description": "See 'birth_place'", "type": "string", "required": false, "aliases": [ "place of burial" ] }, "consort": { "label": "Consort", "description": "yes, if the subject is the consort of any monarch — affects 'reign' no, which is the default if the field is omitted", "type": "string", "required": false }, "spouse": { "label": "Spouse", "description": "Husbands/wives only; listed by most common name/title, in chronological order, using <nowiki>{{unbulleted list}}</nowiki>, and dates if needed, e.g. (m. 2004; div. 2006). Break dates onto a new line if more visually appropriate. 'spouses' will have label 'Spouses' instead of 'Spouse'.", "type": "string", "required": false, "aliases": [ "spouses" ] }, "spouse-type": { "label": "Spouse-type", "description": "Optional alternative text for 'Spouse' and 'Spouses'.", "type": "string", "required": false, "aliases": [ "spouses-type" ] }, "issue": { "label": "Issue", "description": "Children in order of birth, separated using <nowiki>{{unbulleted list}}</nowiki>; listed by name and highest shorthand title (e.g. Prince Edward, Earl of Wessex), do not use preceding styles (e.g. HM). Individuals without articles and/or who died as infants may be omitted from the list on an arbitrary basis. See also note for 'predecessor'.", "type": "string", "required": false }, "issue-link": { "label": "Issue-link", "description": "Creates small link to a section in the article for further details on offspring (dependent upon 'issue')", "type": "string", "required": false }, "issue-pipe": { "label": "Issue-pipe", "description": "Changes the output text of the above link (dependent upon 'issue-link')", "type": "string", "required": false }, "full name": { "label": "Full name", "description": "English/Anglicised full legal non-titular name (current/most recent), with maiden name '(née Whatever)' and translation in their native/official tongue(s) on a new line (each) underneath (use a ''{{lang-XX|}}'' Multilingual support template)", "type": "string", "required": false, "aliases": [ "family_name", "clan_name", "given_name" ] }, "era name": { "label": "Era name", "description": "For Asian era names, wikilinked if appropriate (dependent upon 'era dates')", "type": "string", "required": false }, "era dates": { "label": "Era dates", "description": "The dates of the monarch's era (per the above)", "type": "string", "required": false }, "regnal name": { "label": "Regnal name", "description": "The monarch's regnal name", "type": "string", "required": false }, "posthumous name": { "label": "Posthumous name", "description": "The posthumous name given to monarchs in certain traditions", "type": "string", "required": false }, "temple name": { "label": "Temple name", "description": "As 'posthumous name' m.m.", "type": "string", "required": false }, "house": { "label": "House", "description": "The houses, dynasties, or families to which the subject belonged/s (by birth, marriage or otherwise), listed chronologically first to last, using <nowiki>{{unbulleted list}}</nowiki> (e.g. <nowiki>{{unbulleted list|[[House of Saxe-Coburg and Gotha]] | [[House of Windsor]] }}</nowiki>) (formerly called 'house name' and listed last to first — it is strongly recommended that, for clarity, (by birth/marriage) or similar be included after each House's link)", "type": "string", "required": false }, "house-type": { "label": "House-type", "description": "Optional alternative text for 'Royal house', such as 'Dynasty' or 'Family' (dependent upon 'house')", "type": "string", "required": false }, "father": { "label": "Father", "description": "Most common shorthand title, do not use preceding styles (e.g. HM). May include multiple individuals, such as (biological), (adoptive) or (''hānai''). See also note for 'predecessor'.", "type": "string", "required": false }, "mother": { "label": "Mother", "description": "Most common maiden name or highest title held in her own right", "type": "string", "required": false }, "occupation": { "label": "Occupation", "description": "Primary non-royal occupations, listed most recent first (if the subject is deceased there's no need for 'prev.') e.g. 'Theatre; prev. Broadcasting' (alive), or 'Military; Author' (dead).", "type": "string", "required": false }, "signature_type": { "label": "Signature type", "description": "A label to replace the default 'Signature', e.g. 'Tughra' for Ottoman sultans", "type": "string", "required": false }, "signature_alt": { "label": "Signature alt", "description": "Alt text for signature", "type": "string", "required": false }, "religion": { "label": "Religion", "description": "The subject's religion(s) may be listed with dates (in chronological order) if relevant, sourced and uncontroversial", "type": "string", "required": false }, "embed": {}, "image_size": { "description": "Size to display image: 200px (set width), x300px (set height), or 200x300px (max width & max height).", "type": "string", "default": "220px" }, "investiture": {}, "succession1": {}, "moretext1": {}, "reign-type1": {}, "reign1": {}, "cor-type1": {}, "coronation1": {}, "pre-type1": {}, "predecessor1": {}, "suc-type1": {}, "successor1": {}, "reg-type1": {}, "regent1": {}, "succession2": {}, "moretext2": {}, "reign-type2": {}, "reign2": {}, "cor-type2": {}, "coronation2": {}, "pre-type2": {}, "predecessor2": {}, "suc-type2": {}, "successor2": {}, "reg-type2": {}, "regent2": {}, "succession3": {}, "moretext3": {}, "reign-type3": {}, "reign3": {}, "cor-type3": {}, "coronation3": {}, "pre-type3": {}, "predecessor3": {}, "suc-type3": {}, "successor3": {}, "reg-type3": {}, "regent3": {}, "succession4": {}, "moretext4": {}, "reign-type4": {}, "reign4": {}, "cor-type4": {}, "coronation4": {}, "pre-type4": {}, "predecessor4": {}, "suc-type4": {}, "successor4": {}, "reg-type4": {}, "regent4": {}, "succession5": {}, "moretext5": {}, "reign-type5": {}, "reign5": {}, "cor-type5": {}, "coronation5": {}, "pre-type5": {}, "predecessor5": {}, "suc-type5": {}, "successor5": {}, "reg-type5": {}, "regent5": {}, "succession6": {}, "moretext6": {}, "reign-type6": {}, "reign6": {}, "cor-type6": {}, "coronation6": {}, "pre-type6": {}, "predecessor6": {}, "suc-type6": {}, "successor6": {}, "reg-type6": {}, "regent6": {}, "succession7": {}, "moretext7": {}, "reign-type7": {}, "reign7": {}, "cor-type7": {}, "coronation7": {}, "pre-type7": {}, "predecessor7": {}, "suc-type7": {}, "successor7": {}, "reg-type7": {}, "regent7": {}, "succession8": {}, "moretext8": {}, "reign-type8": {}, "reign8": {}, "cor-type8": {}, "coronation8": {}, "pre-type8": {}, "predecessor8": {}, "suc-type8": {}, "successor8": {}, "reg-type8": {}, "regent8": {}, "succession9": {}, "moretext9": {}, "reign-type9": {}, "reign9": {}, "cor-type9": {}, "coronation9": {}, "pre-type9": {}, "predecessor9": {}, "suc-type9": {}, "successor9": {}, "reg-type9": {}, "regent9": {}, "succession10": {}, "moretext10": {}, "reign-type10": {}, "reign10": {}, "cor-type10": {}, "coronation10": {}, "pre-type10": {}, "predecessor10": {}, "suc-type10": {}, "successor10": {}, "reg-type10": {}, "regent10": {}, "queen": {}, "type": {}, "spouse 2": {}, "spouse 1": {}, "spouse 3": {}, "spouse 4": {}, "spouse 5": {}, "spouse 6": {}, "spouse 7": {}, "spouse 8": {}, "spouse 9": {}, "issue-type": {}, "native_lang1": {}, "native_lang1_name1": {}, "native_lang2": {}, "native_lang2_name1": {}, "native_lang3": {}, "native_lang3_name1": {}, "native_lang4": {}, "native_lang4_name1": {}, "native_lang5": {}, "native_lang5_name1": {}, "royal house": {}, "dynasty": {}, "signature": { "description": "X.jpg, being an image of the subject's personal signature", "type": "string" }, "module": {}, "pronunciation": {} }, "paramOrder": [ "name", "title", "titletext", "more", "image", "image_size", "alt", "caption", "succession", "moretext", "reign", "reign-type", "coronation", "cor-type", "predecessor", "pre-type", "regent", "reg-type", "successor", "suc-type", "birth_name", "birth_date", "birth_place", "death_date", "death_place", "burial_date", "burial_place", "consort", "spouse", "spouse-type", "issue", "issue-link", "issue-pipe", "full name", "era name", "era dates", "regnal name", "posthumous name", "temple name", "house", "house-type", "father", "mother", "occupation", "signature", "signature_type", "signature_alt", "religion", "embed", "2", "investiture", "succession1", "moretext1", "reign-type1", "reign1", "cor-type1", "coronation1", "pre-type1", "predecessor1", "suc-type1", "successor1", "reg-type1", "regent1", "succession2", "moretext2", "reign-type2", "reign2", "cor-type2", "coronation2", "pre-type2", "predecessor2", "suc-type2", "successor2", "reg-type2", "regent2", "succession3", "moretext3", "reign-type3", "reign3", "cor-type3", "coronation3", "pre-type3", "predecessor3", "suc-type3", "successor3", "reg-type3", "regent3", "succession4", "moretext4", "reign-type4", "reign4", "cor-type4", "coronation4", "pre-type4", "predecessor4", "suc-type4", "successor4", "reg-type4", "regent4", "succession5", "moretext5", "reign-type5", "reign5", "cor-type5", "coronation5", "pre-type5", "predecessor5", "suc-type5", "successor5", "reg-type5", "regent5", "succession6", "moretext6", "reign-type6", "reign6", "cor-type6", "coronation6", "pre-type6", "predecessor6", "suc-type6", "successor6", "reg-type6", "regent6", "succession7", "moretext7", "reign-type7", "reign7", "cor-type7", "coronation7", "pre-type7", "predecessor7", "suc-type7", "successor7", "reg-type7", "regent7", "succession8", "moretext8", "reign-type8", "reign8", "cor-type8", "coronation8", "pre-type8", "predecessor8", "suc-type8", "successor8", "reg-type8", "regent8", "succession9", "moretext9", "reign-type9", "reign9", "cor-type9", "coronation9", "pre-type9", "predecessor9", "suc-type9", "successor9", "reg-type9", "regent9", "succession10", "moretext10", "reign-type10", "reign10", "cor-type10", "coronation10", "pre-type10", "predecessor10", "suc-type10", "successor10", "reg-type10", "regent10", "queen", "type", "spouse 2", "spouse 1", "spouse 3", "spouse 4", "spouse 5", "spouse 6", "spouse 7", "spouse 8", "spouse 9", "issue-type", "native_lang1", "native_lang1_name1", "native_lang2", "native_lang2_name1", "native_lang3", "native_lang3_name1", "native_lang4", "native_lang4_name1", "native_lang5", "native_lang5_name1", "royal house", "dynasty", "module", "pronunciation" ] }</templatedata> {{Collapse bottom}} == Tracking categories == * {{clc|Biography template using pronunciation}} * {{clc|Pages using infobox royalty with unknown parameters}} == See also == * [https://en.wikipedia.org/w/index.php?title=Special%3AWhatLinksHere&target=Template%3A{{urlencode:{{BASEPAGENAME}}}}&namespace=0 List of articles using ''Template:{{BASEPAGENAME}}''] <includeonly>{{Sandbox other|| <!-- Categories go here and interwikis go in Wikidata --> [[Category:Royalty and nobility infobox templates| ]] [[Category:Biographical templates usable as a module|Royalty]] [[Category:Infobox templates with module parameter|Royalty]] [[Category:Politics and government infobox templates|Royalty]] [[Category:Templates generating hCalendars]] [[Category:Templates generating hCards]] [[Category:Templates that add a tracking category]] }}</includeonly> 7cb7a1aaba8421390bead3cef6da2d9acd78035e Template:Flag/core 10 1491 2826 2023-09-04T21:35:34Z Pppery 6 Add new flags per edit request wikitext text/x-wiki <span class="flagicon">[[File:{{{flag alias-{{{variant}}}|{{#if:{{{flag alias|}}}|{{{flag alias}}}|Flag placeholder.svg}}}}}|{{#if:{{{size|}}}|{{{size}}}|{{{size flag alias-{{{variant}}}|{{#if:{{{variant|}}}|23x15px|{{{size flag alias|23x15px}}}}}}}}}}|{{{border-{{{variant}}}|{{{border|border}}}}}} |alt=|link=]]&nbsp;{{#switch:{{{flag alias}}}|Flag of Switzerland.svg|Flag of the Vatican City.svg|Flag of Switzerland (Pantone).svg|Flag of Vatican City State - 2023 version.svg=&nbsp;}}{{#ifeq:{{{alias}}}|Nepal|&nbsp;&nbsp;}}</span>[[{{{alias}}}|{{{name}}}]]<noinclude>{{documentation}}</noinclude> 0714064913bcc5abd9dae55d4fb50f52965eef35 Template:Flagcountry/core 10 1205 2534 2023-09-04T21:39:51Z Pppery 6 Per edit request wikitext text/x-wiki <span class="datasortkey" data-sort-value="{{{sortkey|{{{shortname alias|{{{alias}}}}}}}}}"><!-- --><span class="flagicon"><!-- -->[[File:{{{flag alias-{{{variant}}}|{{{flag alias}}}}}}|<!-- -->{{#if:{{{size|}}}|{{{size}}}|{{{size flag alias-{{{variant}}}|{{#if:{{{variant|}}}|23x15px|{{{size flag alias|23x15px}}}}}}}}}}|<!-- -->{{{border-{{{variant}}}|{{{border|border}}}}}} |<!-- -->alt=|<!-- -->link=]]&nbsp;<!-- -->{{#switch:{{{flag alias}}}|Flag of Switzerland.svg|Flag of the Vatican City.svg|Flag of Switzerland (Pantone).svg|Flag of Vatican City State - 2023 version.svg=&nbsp;}}<!-- -->{{#ifeq:{{{alias}}}|Nepal|&nbsp;&nbsp;}}<!-- --></span>[[{{{link alias-{{{variant}}}|{{{alias}}}}}}|<!-- -->{{#if:{{{name|}}}|{{{name}}}|{{{shortname alias|{{{alias}}}}}}}}]]<!-- --></span><noinclude>{{documentation}}</noinclude> 1f6cdc61b8d06e6993f1621ac4b695389268eedf Module:Portal/images/p 828 843 1868 2023-09-05T14:16:21Z wikipedia>Pppery 0 Per edit request Scribunto text/plain --[==[ This is the "P" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "P". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be omitted. ]==] return { ["pacific northwest"] = "Abies lasiocarpa 0775.JPG|link=|alt=", ["painting"] = "600-artist-palette.svg|link=|alt=artist's palette", ["pakistan"] = "Flag of Pakistan.svg|border|link=|alt=flag", ["palaeontology"] = "Allosaurus Jardin des Plantes.png|link=|alt=icon", ["palau"] = "Flag of Palau.svg|border|link=|alt=flag", ["paleontology"] = "Allosaurus Jardin des Plantes.png|link=|alt=icon", ["paleozoic"] = "Tiktaalik BW flopped.jpg|alt=icon", ["palestine"] = "Flag of Palestine.svg|border|link=|alt=flag", ["palestinian territories"] = "Flag of Palestine.svg|border|link=|alt=flag", ["pan-africanism"] = "Flag of the UNIA.svg", ["panama"] = "Flag of Panama.svg|border|link=|alt=flag", ["pandemics"] = "Protokol Kesehatan.jpg|link=|alt=", ["papua new guinea"] = "Flag of Papua New Guinea.svg|border|link=|alt=flag", ["paraguay"] = "Flag of Paraguay.svg|border|link=|alt=flag", ["patna"] = "Golghar, Patna, 1888.jpg|link=|alt=", ["peer review"] = "PR icon.png|alt=icon", ["pennsylvania"] = "Flag of Pennsylvania.svg|border|link=|alt=flag", ["people's republic of china"] = "Flag of the People's Republic of China.svg|border|link=|alt=flag", ["peru"] = "Flag of Peru.svg|border|link=|alt=flag", ["philadelphia"] = "Libertybell alone small.jpg|link=|alt=", ["philately"] = "Stamp UK Penny Red pl148.jpg|link=|alt=", ["philippines"] = "Flag of the Philippines.svg|border|link=|alt=flag", ["philosophy"] = "Socrates.png|link=|alt=", ["phoenicia"] = "Phoenician aleph.svg|alt=Black on white image of the Phoenician letter Aleph", ["photography"] = "Camera-871052.svg|link=|alt=", ["physics"] = "Stylised atom with three Bohr model orbits and stylised nucleus.svg|alt=icon", ["piracy"] = "Skull and crossbones.svg|link=|alt=", ["pitcairn islands"] = "Flag of the Pitcairn Islands.svg|border|link=|alt=flag", ["pittsburgh"] = "Coat of arms of Pittsburgh, Pennsylvania.svg|link=|alt=", ["plants"] = "Leaf 1 web.jpg|alt=icon", ["poetry"] = "Quill and ink.svg|alt=icon", ["pokémon"] = "Wikiball.svg|alt=icon", ["poland"] = "Flag of Poland.svg|border|link=|alt=flag", ["political science"] = "Plato-raphael.jpg|link=|alt=", ["politics"] = "A coloured voting box.svg|border|alt=icon", ["polyhedra"] = "Small snub icosicosidodecahedron.png|link=|alt=icon", ["polynesia"] = "Polynesia.png|link=|alt=map", ["pollution"] = "Benxi Steel Industries.jpg|link=|alt=photo", ["pop music"] = "Audio-input-microphone.png|alt=icon", ["portal"] = "PorcheCentralNordCathedraleChartre041130-.jpg|alt=icon", ["portugal"] = "Flag of Portugal.svg|border|link=|alt=flag", ["prehistoric mammals"] = "Smilodon Knight.jpg|link=|alt=", ["primates"] = "Man of the woods.JPG|alt=icon", ["prince edward island"] = "Flag of Prince Edward Island.svg|border|link=|alt=flag", ["probability"] = "Nuvola apps atlantik.png|link=|alt=icon", ["prostitution"] = "Bombilla roja - red Edison lamp.svg|link=alt=icon", ["protected areas of india"] = "Nagzira Tiger By Vijay Phulwadhawa.jpg|link=|alt=photo", ["prussia"] = "Flag of Prussia (1892-1918).svg|link=|alt=photo", ["psychiatry"] = "American Lady Against The Sky.jpg|alt=icon", ["psychology"] = "Psi2.svg|link=|alt=", ["puducherry"] = "Seal of Puducherry (cropped).svg|link=|alt=", ["puerto rico"] = "Flag of Puerto Rico.svg|border|link=|alt=flag", ["punjab"] = "Golden Temple (Harmandir Sahib) in Amritsar, India.jpg|border|link=|alt=image", ["punjab, india"] = "Seal of Punjab.gif|link=|alt=icon", ["punjab, pakistan"] = "Flag of Punjab.svg|border|link=|alt=flag", } f0317bea96bbb5170b149cd1fd81695e9a105b56 Template:Stateless nationalism in Europe 10 1111 2421 2023-09-07T09:03:43Z wikipedia>The Banner 0 lf wikitext text/x-wiki {{navbox |navbar= |name=Stateless nationalism in Europe |title=[[List of active separatist movements in Europe|Movements]] of [[Regionalism (politics)|regionalism]], [[separatism]] and [[Stateless nation|stateless]] [[nationalism]] in Europe |listclass=hlist | group1 = Albania | list1 = *[[Autonomous Republic of Northern Epirus|Northern Epirus]] | group2 = Azerbaijan | list2 = *[[Republic of Artsakh|Artsakh]] *[[Lezgin nationalism|Lezgin]] *[[Talysh-Mughan Autonomous Republic|Talysh]] | group3 = Belgium | list3 = *[[Flemish Movement|Flemish]] *[[Walloon Movement|Walloon]] | group4 = Bosnia and<br />Herzegovina | list4 = *[[Proposed secession of Republika Srpska|Republika Srpska]] | group5 = Croatia | list5 = *[[Istrianism|Istrian]] | group6 = Cyprus | list6 = *[[Turkish Cypriot nationalism|Turkish Cypriot]] | group7 = Denmark | list7 = *[[Greenlandic independence|Greenlandic]] *[[Faroese independence movement|Faroese]] | group8 = Finland | list8 = *[[Future of Åland|Ålandic]] *[[Sápmi|Sámi]] | group9 = France | list9 = *[[Alsace independence movement|Alsatian]] *[[Basque nationalism|Basque]] *[[Breton nationalism|Breton]] *[[Corsican nationalism|Corsican]] *[[Occitan nationalism|Occitan]] *[[Catalan nationalism|North Catalan]] | group10 = Georgia | list10 = *[[Abkhazia]]n *[[Adjaria]]n *[[United Javakhk Democratic Alliance|Javakheti]] *[[Ossetia]]n | group11 = Germany | list11 = *[[Bavarian nationalism|Bavarian]] *[[Sorbs]] *[[Swabians]] | group12 = Greece | list12 = *[[Chameria|Cham Albanian]] | group13 = Italy | list13 = *[[Lombard nationalism|Lombard]] *[[Padanian nationalism|Padanian]] *[[Sardinian nationalism|Sardinian]] *[[Sicilian nationalism|Sicilian]] *[[South Tyrolean independence movement|South Tyrolean]] *[[Venetian nationalism|Venetian]] | group14 = North Macedonia | list14 = *[[Ilirida]] | group15 = Moldova | list15 = *[[Gagauzia]] *[[Transnistria]] | group16 = Netherlands | list16 = *[[Frisian nationalism|Frisian]] | group17 = Norway | list17 = *[[Sápmi|Sámi]] | group18 = Poland | list18 = *[[Kaszëbskô Jednota|Kashubian]] *[[Silesian Autonomy Movement|Silesian]] *[[Free City of Danzig Government in Exile|Free City of Danzig]] | group19 = Romania | list19 = *[[Székely autonomy movement|Székely]] *[[Transylvania–Banat League|Transylvania–Banat]] | group20 = Russia | list20 = *[[Balkar and Karachay nationalism|Balkar and Karachay]] *[[Bashkortostan|Bashkir]] *[[Chechen Republic of Ichkeria|Chechen]] *[[Chuvash nationalism|Chuvash]] *[[Circassian nationalism|Circassian]] *[[Crimean People's Republic|Crimean Tatar]] *[[Karelia]]n *[[Lezgin nationalism|Lezgin]] *[[Ossetia]]n *[[Sápmi|Sámi]] *[[Siberian regionalism|Siberian]] *[[Tatar nationalism|Tatar]] | group21 = Serbia | list21 = *[[Vojvodina Autonomist Movement|Vojvodina]] *[[Kosovo]] | group22 = Spain | list22 = *[[Andalusian nationalism|Andalusian]] *[[Aragonese nationalism|Aragonese]] *[[Asturian nationalism|Asturian]] *[[Basque nationalism|Basque]] *[[Canarian nationalism|Canarian]] *[[Castilian nationalism|Castilian]] *[[Catalan nationalism|Catalan]] *[[Galician nationalism|Galician]] *[[Navarrese nationalism|Navarrese]] *[[Valencian nationalism|Valencian]] | group23 = Sweden | list23 = *[[Sápmi|Sámi]] *[[Scania Party|Scania]] | group24 = Turkey | list24 = *[[Assyrian nationalism|Assyrian]] *[[Kurdish nationalism|Kurdish]] | group25 = Ukraine | list25 = *[[Crimean People's Republic|Crimean Tatar]] *[[Donetsk People's Republic|Donetsk]] *[[Luhansk People's Republic|Luhansk]] | group26 = United Kingdom | list26 = *[[Cornish nationalism|Cornish]] *[[Ulster nationalism|Northern Irish]] *[[Scottish nationalism|Scottish]] *[[Welsh nationalism|Welsh]] *[[Yorkshire Party|Yorkshire]] |group27= See also |list27= *[[First-level NUTS of the European Union]] |group28= Notes }}<noinclude> {{Doc|content= ==See also== * [[:Category:Stateless nationalism in Europe]] [[Category:Europe politics and government navigational boxes|Nationalism]] [[Category:Nationalism navigational boxes|Europe]] }}</noinclude> b87180dad1a4664fe28e781822eba7c933c7979b Template:Infobox character/doc 10 1267 2601 2023-09-07T23:17:36Z w>Omnipaedista 0 edited formatting wikitext text/x-wiki {{Documentation subpage}} {{High-use}} {{auto short description}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters|Module:Formatted appearance}} '''Infobox character''' is used to create an infobox for a fictional character of any type. == Usage == The blank form immediately below shows the most commonly used fields, and complete instructions are listed further down the page. {{Infobox character | name = {{{name}}} | series = {{{series}}} | image = {{{image}}} | alt = {{{alt}}} | caption = {{{caption}}} | first_major = {{{first_major}}} | first_minor = {{{first_minor}}} | first_date = {{{first_date}}} | last_major = {{{last_major}}} | last_minor = {{{last_minor}}} | last_date = {{{last_date}}} | creator = {{{creator}}} | based_on = {{{based_on}}} | adapted_by = {{{adapted_by}}} | designer = {{{designer}}} | portrayer = {{{portrayer}}} | voice = {{{voice}}} | motion_actor = {{{motion_actor}}} | full_name = {{{full_name}}} | nickname = {{{nickname}}} | alias = {{{alias}}} | species = {{{species}}} | gender = {{{gender}}} | title = {{{title}}} | occupation = {{{occupation}}} | affiliation = {{{affiliation}}} | fighting_style = {{{fighting_style}}} | weapon = {{{weapon}}} | family = {{{family}}} | spouse = {{{spouse}}} | significant_other = {{{significant_other}}} | children = {{{children}}} | relatives = {{{relatives}}} | religion = {{{religion}}} | origin = {{{origin}}} | nationality = {{{nationality}}} }} <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox character | name = | series = <!-- or |franchise=; use without the italic on the outside --> | image = | alt = | caption = | first_major = <!-- per [[MOS:MAJORWORK]] - major works include TV series, films, books, albums and games --> | first_minor = <!-- or |first_issue=; Per [[MOS:MINORWORK]] - minor works include TV episodes, chapters, songs and game missions --> | first_date = | first = <!-- Use instead of first_major= etc. when custom or complex formatting is needed. --> | last_major = | last_minor = <!-- or |last_issue= --> | last_date = | last = <!-- Use instead of last_major= etc. when custom or complex formatting is needed. --> | creator = <!-- only the credited creators; use adapted_by= for adaptations --> | based_on = <!-- if not an original creation, use {{based on|character|author}} --> | adapted_by = <!-- for character adaption articles --> | designer = | portrayer = | voice = | motion_actor = | full_name = | nickname = <!-- or |nicknames= --> | alias = <!-- or |aliases= --> | species = <!-- or |race=; for non-humans only --> | gender = <!-- if not obvious --> | title = | occupation = <!-- or |position= or |class= --> | affiliation = <!-- or |alignment= --> | fighting_style = | weapon = | family = | spouse = <!-- or |spouses= --> | significant_other = <!-- or |significant_others= --> | children = | relatives = | religion = | origin = <!-- or |home= --> | nationality = }}</syntaxhighlight> == Parameters == All parameters are optional. Separate multiple entries using {{tl|Plainlist}}. {| class="wikitable" |- ! scope="col" | Parameter ! scope="col" | Notes |- ! scope="row" | name | Character name to display in top header (default = PAGENAME). |- ! scope="row" | series | Name of the series in which the character appears. |- ! scope="row" | franchise | Name of the fictional world or story in which the character appears. Does not italicize title. |- ! scope="row" | multiple | Set to yes if the infobox describes more than one character. |- ! scope="row" | image | Image of the character. "File:" and wikilinking is not required; i.e. use {{para|image|Example.png}}. |- ! scope="row" | image_upright | The image size defaults to frameless (220px). The size should not be set to a value that would result in an image width greater than 270px. |- ! scope="row" | alt | Alt text for image per [[WP:MOSALT]]. |- ! scope="row" | caption | A caption explaining the image. |- ! scope="row" | first_major | The title of the [[MOS:MAJORWORK|major work]] the fictional element first appeared in. Major works include TV series, films, books, albums and games. |- ! scope="row" | first_minor | The title of the [[MOS:MINORWORK|minor work]] the fictional element first appeared in. Minor works include TV episodes, chapters, songs and game missions. |- ! scope="row" | first_issue | The number of the comic book issue the fictional element first appeared in. |- ! scope="row" | first_date | The date of the publication/release of the minor work where the fictional element first appeared in. |- ! scope="row" | last_major | The title of the [[MOS:MAJORWORK|major work]] the fictional element last appeared in. Major works include TV series, films, books, albums and games. |- ! scope="row" | last_minor | The title of the [[MOS:MINORWORK|minor work]] the fictional element last appeared in. Minor works include TV episodes, chapters, songs and game missions. |- ! scope="row" | last_issue | The number of the comic book issue the fictional element last appeared in. |- ! scope="row" | last_date | The date of the publication/release of the minor work where the fictional element last appeared in. |- ! scope="row" | first | First appearance of the character. |- ! scope="row" | firstgame | First appearance in a game of the character. |- ! scope="row" | last | Last appearance of the character. |- ! scope="row" | creator | Name of the individuals who are credited with the creation of the character. |- ! scope="row" | based_on | Name of the original character the adaptation is based on. Use {{based on}} to add the title of original character and the names of the original creators. Use this field in conjunction with {{para|adapted_by}}. |- ! scope="row" | adapted_by | Name of the individuals who adapted the character into a new medium. Use this field if the character in a medium is based on a character from a different medium, such as a character on television based on a comic book character. |- ! scope="row" | designer | Name of the individuals who designed the character. |- ! scope="row" | portrayer | Name of the individuals who portrayed the character. |- ! scope="row" | voice | Name of the individuals who voiced the character. Should be omitted if the same as "portrayer". |- ! scope="row" | motion_actor | Name of the individuals who portrayed the character in motion capture. |- ! scope="row" | noinfo | Disable the first "In-universe information" header. |- ! scope="row" | info-hdr | Text for display in second header (default = Information). |- ! scope="row" | full_name | The character's full name. |- ! scope="row" | {{Unbulleted list|nickname|nicknames}} | Any nicknames used by the character. |- ! scope="row" | {{Unbulleted list|alias|aliases}} | Any aliases used by the character. |- ! scope="row" | {{Unbulleted list|species|race}} | The species or race of the character. Use for non-human characters only. |- ! scope="row" | gender | The gender of the character. Use only if not obvious. |- ! scope="row" | title | Titles the character was known by. |- ! scope="row" | {{Unbulleted list|occupation|position}} | The character's job or role. |- ! scope="row" | class | The [[character class]] for RPG characters. |- ! scope="row" | affiliation | The groups or teams the character belongs to. |- ! scope="row" | alignment | The character's Dungeons & Dragons alignment. |- ! scope="row" | fighting_style | The primary fighting styles used by the character. |- ! scope="row" | weapon | The types of weapons the character uses. |- ! scope="row" | family | The character's family members. |- ! scope="row" | {{Unbulleted list|spouse|spouses}} | The character's spouses. |- ! scope="row" | {{Unbulleted list|significant_other|significant_others}} | The character's significant others. |- ! scope="row" | children | The characters's children. |- ! scope="row" | relatives | The characters's relatives. |- ! scope="row" | religion | The character's religion. |- ! scope="row" | {{Unbulleted list|origin|home}} | The character's place of origin. |- ! scope="row" | nationality | The character's nationality. |- ! scope="row" | extra-hdr | Text for display in third header (default = No third header). |- ! scope="row" | lbl# | Label to display in left column where "#" is 1-5, 21-25, or 31-35 for custom fields under the 1st, 2nd, or 3rd headers respectively. |- ! scope="row" | data# | Text to display in the right column corresponding to the appropriate "lbl#". |} ===TemplateData=== {{Collapse top|title=TemplateData}} {{TemplateData header|noheader=1}} <templatedata> { "description": "Creates an infobox for a fictional character of any type.", "params": { "name": { "label": "Name", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Character name to display in top header (default = PAGENAME)." }, "series": { "label": "Series", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the series in which the character appears." }, "franchise": { "label": "Franchise", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the fictional world or story in which the character appears. Does not italicize title." }, "multiple": { "label": "Multiple", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Set to yes if the infobox describes more than one character." }, "image": { "label": "Image", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Image of the character. \"File:\" and wikilinking is not required; i.e. use {{para|image|Example.png}}." }, "image_upright": { "label": "Image upright", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The image size defaults to frameless (220px). The size should not be set to a value that would result in an image width greater than 270px." }, "alt": { "label": "Alt", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Alt text for image per [[WP:MOSALT]]." }, "caption": { "label": "Caption", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "A caption explaining the image." }, "first_major": { "label": "First appearance major", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the major work the fictional element first appeared in. Major works include TV series, films, books, albums and games." }, "first_minor": { "label": "First appearance minor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the minor work the fictional element first appeared in. Minor works include TV episodes, chapters, songs and game missions." }, "first_issue": { "label": "First appearance issue", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The number of the comic book issue the fictional element first appeared in." }, "first_date": { "label": "First appearance date", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The date of the publication/release of the minor work where the fictional element first appeared in." }, "last_major": { "label": "Last appearance major", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the major work the fictional element last appeared in. Major works include TV series, films, books, albums and games." }, "last_minor": { "label": "Last appearance minor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the minor work the fictional element last appeared in. Minor works include TV episodes, chapters, songs and game missions." }, "last_issue": { "label": "Last appearance issue", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The number of the comic book issue the fictional element last appeared in." }, "last_date": { "label": "Last appearance date", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The date of the publication/release of the minor work where the fictional element last appeared in." }, "first": { "label": "First appearance", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "First appearance of the character." }, "firstgame": { "label": "First game", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "First appearance in a game of the character." }, "last": { "label": "Last appearance", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Last appearance of the character." }, "creator": { "label": "Creator", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who are credited with the creation of the character." }, "based_on": { "label": "Based on", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the original character the adaptation is based on. Use {{based on}} to add the title of original character and the names of the original creators. Use this field in conjunction with {{para|adapted_by}}." }, "adapted_by": { "label": "Adapted by", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who adapted the character into a new medium. Use this field if the character in a medium is based on a character from a different medium, such as a character on television based on a comic book character." }, "designer": { "label": "Designer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who designed the character." }, "portrayer": { "label": "Portrayer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who portrayed the character." }, "voice": { "label": "Voice actor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who voiced the character (if different from portrayer or there is no portrayer)" }, "motion_actor": { "label": "Motion actor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who portrayed the character in motion capture." }, "lbl1": { "label": "Label 1", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Label to display in left column for custom fields under the 1st header." }, "data1": { "label": "Data 1", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Text to display in the right column corresponding to lbl1." }, "lbl2": { "label": "Label 2", "inherits": "lbl1" }, "data2": { "label": "Data 2", "description": "Text to display in the right column corresponding to lbl2.", "inherits": "data1" }, "lbl3": { "label": "Label 3", "inherits": "lbl1" }, "data3": { "label": "Data 3", "description": "Text to display in the right column corresponding to lbl3.", "inherits": "data1" }, "lbl4": { "label": "Label 4", "inherits": "lbl1" }, "data4": { "label": "Data 4", "description": "Text to display in the right column corresponding to lbl4.", "inherits": "data1" }, "lbl5": { "label": "Label 5", "inherits": "lbl1" }, "data5": { "label": "Data 5", "description": "Text to display in the right column corresponding to lbl5.", "inherits": "data1" }, "noinfo": { "label": "Disable second header", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Disable the first \"In-universe information\" header." }, "info-hdr": { "label": "Second header text", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Text for display in second header (default = Information)." }, "full_name": { "label": "Full name", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's full name." }, "nickname": { "label": "Nickname", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "A nickname used by the character. If there is more than one nickname, use {{para|nicknames}} and separate multiple entries using {{tl|Plainlist}}." }, "nicknames": { "label": "Nicknames", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Any nicknames used by the character. If there is only one nickname, use {{para|nickname}}." }, "alias": { "label": "Alias", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "An alias used by the character. If there is more than one alias, use {{para|aliases}} and separate multiple entries using {{tl|Plainlist}}." }, "aliases": { "label": "Alias", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Any aliases used by the character. If there is only one alias, use {{para|alias}}." }, "species": { "label": "Species", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The species of the character. Use for non-human characters only." }, "race": { "label": "Race", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The race of the character. Use for non-human characters only." }, "gender": { "label": "Gender", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The gender of the character. Use only if not obvious." }, "title": { "label": "Title", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Titles the character was known by." }, "occupation": { "label": "Occupation", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's job or role." }, "position": { "label": "Position", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's job or role." }, "class": { "label": "Class", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character class for RPG characters." }, "affiliation": { "label": "Affiliation", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The groups or teams the character belongs to." }, "alignment": { "label": "Alignment", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's Dungeons & Dragons alignment." }, "fighting_style": { "label": "Fighting style", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The primary fighting styles used by the character." }, "weapon": { "label": "Weapon", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The types of weapons the character uses." }, "family": { "label": "Family", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's family members." }, "spouse": { "label": "Spouse", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's spouses." }, "spouses": { "label": "Spouses", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's spouses." }, "significant_other": { "label": "Significant other", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's significant others. If there is more than one significant_other, use {{para|significant_others}} and separate multiple entries using {{tl|Plainlist}}." }, "significant_others": { "label": "Significant others", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's significant others. If there is only one significant_other, use {{para|significant_other}}." }, "children": { "label": "Children", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The characters's children" }, "relatives": { "label": "Relatives", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The characters's relatives" }, "religion": { "label": "Religion", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's religion" }, "origin": { "label": "Origin", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's place of origin." }, "home": { "label": "Home", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's place of origin." }, "nationality": { "label": "Nationality", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's nationality." }, "lbl21": { "label": "Label 21", "description": "Label to display in left column for custom fields under the 2nd header.", "inherits": "lbl1" }, "data21": { "label": "Data 21", "description": "Text to display in the right column corresponding to lbl21.", "inherits": "data1" }, "lbl22": { "label": "Label 22", "inherits": "lbl21" }, "data22": { "label": "Data 22", "description": "Text to display in the right column corresponding to lbl22.", "inherits": "data1" }, "lbl23": { "label": "Label 23", "inherits": "lbl21" }, "data23": { "label": "Data 23", "description": "Text to display in the right column corresponding to lbl23.", "inherits": "data1" }, "lbl24": { "label": "Label 24", "inherits": "lbl21" }, "data24": { "label": "Data 24", "description": "Text to display in the right column corresponding to lbl24.", "inherits": "data1" }, "lbl25": { "label": "Label 25", "inherits": "lbl21" }, "data25": { "label": "Data 25", "description": "Text to display in the right column corresponding to lbl25.", "inherits": "data1" }, "extra-hdr": { "label": "Third header text", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Text for display in third header (default = No third header)." }, "lbl31": { "label": "Label 31", "description": "Label to display in left column for custom fields under the 3rd header.", "inherits": "lbl22" }, "data31": { "label": "Data 31", "description": "Text to display in the right column corresponding to lbl31.", "inherits": "data1" }, "lbl32": { "label": "Label 32", "inherits": "lbl31" }, "data32": { "label": "Data 32", "description": "Text to display in the right column corresponding to lbl32.", "inherits": "data1" }, "lbl33": { "label": "Label 33", "inherits": "lbl31" }, "data33": { "label": "Data 33", "description": "Text to display in the right column corresponding to lbl33.", "inherits": "data1" }, "lbl34": { "label": "Label 34", "inherits": "lbl31" }, "data34": { "label": "Data 34", "description": "Text to display in the right column corresponding to lbl34.", "inherits": "data1" }, "lbl35": { "label": "Label 35", "inherits": "lbl31" }, "data35": { "label": "Data 35", "description": "Text to display in the right column corresponding to lbl35.", "inherits": "data1" } }, "format": "block" } </templatedata> {{Collapse bottom}} === All parameters (not for general use) === {{Collapse top|title=Complete list of parameters}} {{Parameter names example|_template=| adapted_by | affiliation | alias | alt | based_on | caption | children | creator | data1 | data2 | data3 | data4 | data5 | data21 | data22 | data23 | data24 | data25 | data31 | data32 | data33 | data34 | data35 | designer | extra-hdr | family | fighting_style | first_date | first_major | first_minor | firstgame | franchise | full_name | gender | home | image | image_size | image_upright | info-hdr | last_date | last_major | last_minor | lbl1 | lbl2 | lbl3 | lbl4 | lbl5 | lbl21 | lbl22 | lbl23 | lbl24 | lbl25 | lbl31 | lbl32 | lbl33 | lbl34 | lbl35 | motion_actor | multiple | name | nationality | nickname | occupation | origin | portrayer | position | race | relatives | religion | series | significant_other | species | spouse | title | voice | weapon}} <syntaxhighlight lang="wikitext"> {{Infobox character | name = | series = <!-- or |franchise=; use without the italic on the outside --> | multiple = | image = | image_upright = | alt = | caption = | first_major = <!-- per [[MOS:MAJORWORK]] - major works include TV series, films, books, albums and games --> | first_minor = <!-- or |first_issue=; Per [[MOS:MINORWORK]] - minor works include TV episodes, chapters, songs and game missions --> | first_date = | last_major = | last_minor = <!-- or |last_issue= --> | last_date = | first = | firstgame = | last = | creator = <!-- only the credited creators; use adapted_by= for adaptations --> | based_on = <!-- if not an original creation, use {{based on|character|author}} --> | adapted_by = <!-- for character adaption articles --> | designer = | portrayer = | voice = | motion_actor = | lbl1 = | data1 = | lbl2 = | data2 = | lbl3 = | data3 = | lbl4 = | data4 = | lbl5 = | data5 = | noinfo = | info-hdr = | full_name = | nickname = <!-- or |nicknames= --> | alias = <!-- or |aliases= --> | species = <!-- or |race=; for non-humans only --> | gender = <!-- if not obvious --> | title = | occupation = <!-- or |position= or |class= --> | affiliation = <!-- or |alignment= --> | fighting_style = | weapon = | family = | spouse = <!-- or |spouses= --> | significant_other = <!-- or |significant_others= --> | children = | relatives = | religion = | origin = <!-- or |home= --> | nationality = | lbl21 = | data21 = | lbl22 = | data22 = | lbl23 = | data23 = | lbl24 = | data24 = | lbl25 = | data25 = | extra-hdr = | lbl31 = | data31 = | lbl32 = | data32 = | lbl33 = | data33 = | lbl34 = | data34 = | lbl35 = | data35 = }}</syntaxhighlight> {{Collapse bottom}} == Example == {{Infobox character | name = John Doe | series = [[Criminal Minds]] | image = | caption = | first_major = Criminal Minds | first_minor = Pilot | first_date = 2005 | last_major = Criminal Minds | last_minor = Last One | last_date = 2018 | creator = [[Agnes Nixon]] | portrayer = [[Soupy Sales]] | nickname = Doeboy | alias = Jack Dew | gender = Male | title = Detective | occupation = Law enforcement | family = Doe | spouse = Jane Doe | significant_other = | children = John Doe, Jr. | relatives = {{Plainlist| * Phil Doe (father) * Nancy Doe (mother) }} | religion = [[Christianity|Christian]] | nationality = American }} <syntaxhighlight lang="wikitext"> {{Infobox character | name = John Doe | series = [[Criminal Minds]] | image = | caption = | first_major = Criminal Minds | first_minor = Pilot | first_date = 2005 | last_major = Criminal Minds | last_minor = Last One | last_date = 2018 | creator = [[Agnes Nixon]] | portrayer = [[Soupy Sales]] | nickname = Doeboy | alias = Jack Dew | gender = Male | title = Detective | occupation = Law enforcement | family = Doe | spouse = Jane Doe | significant_other = | children = John Doe, Jr. | relatives = {{Plainlist| * Phil Doe (father) * Nancy Doe (mother) }} | religion = [[Christianity|Christian]] | nationality = American }} </syntaxhighlight> == Tracking categories == * {{clc|Pages using infobox character with unknown parameters}} * {{clc|Articles using Infobox character with multiple unlabeled fields}} == See also == * {{tl|Infobox person}} {{Film- and television-related infobox templates}}<includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Fictional character infobox templates| ]] [[Category:Templates that add a tracking category]] }}</includeonly> abefaf40a0d8f61cb9007d12379197adc0dbf68c Template:Unicode version 10 1619 2954 2023-09-08T03:19:08Z w>Drmccreedy 0 Prepare for next release wikitext text/x-wiki {{trim|1=<!-- PREFIX -->{{#switch:{{{prefix|}}} |as of|asof=as of Unicode version |As of|Asof=As of Unicode version |#default={{{prefix|}}}}} <!-- VERSION NUMBER -->{{#switch:{{{version|0.0}}} | 1 | 1.0.0 = 1.0.0 | 1.0.1 = 1.0.1 | 1.1 = 1.1 | 2 | 2.0 = 2.0 | 2.1 = 2.1 | 3 | 3.0 = 3.0 | 3.1 = 3.1 | 3.2 = 3.2 | 4 | 4.0 = 4.0 | 4.1 = 4.1 | 5 | 5.0 = 5.0 | 5.1 = 5.1 | 5.2 = 5.2 | 6 | 6.0 = 6.0 | 6.1 = 6.1 | 6.2 = 6.2 | 6.3 = 6.3 | 7 | 7.0 = 7.0 | 8 | 8.0 = 8.0 | 9 | 9.0 = 9.0 | 10 | 10.0 = 10.0 | 11 | 11.0 = 11.0 | 12 | 12.0 = 12.0 | 12.1 = 12.1 | 13 | 13.0 = 13.0 | 14 | 14.0 = 14.0 | 15 | 15.0 = 15.0 | 15.1 = 15.1 |#default=<!-- not recognised/error, return blank --> }}<!-- SUFFIX -->{{#if:{{{suffix|}}}|&#x20;{{#switch:{{lc:{{{suffix|}}}}} |#default={{{suffix|}}}}}}}{{{ref|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> 30faebd87a5634ec93174a1faa2aa8cc59cb15fe Module:Message box/configuration 828 11 17 2023-09-08T14:09:56Z Pppery 6 Use SVG per edit request Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix', 'subst'}, removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox-license.svg' }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg', imageNeedsLink = true }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } 27f00af5cf3939613e9156acd5e62a3469d03d81 Template:Infobox character 10 1117 2442 2023-09-08T15:46:09Z w>Izno 0 [[Wikipedia:Templates for discussion/Log/2023 August 29#Template:Infobox Transformers character]] closed as merge ([[WP:XFDC#4.0.13|XFDcloser]]) wikitext text/x-wiki {{Main other|{{Short description|Fictional character|noreplace|pagetype=Articles}}}} {{Infobox | bodystyle = border-spacing: 2px 5px; | above = {{If empty |{{{name|}}} |<includeonly>{{PAGENAMEBASE}}</includeonly> }} | abovestyle = background-color: #DEDEE2; | subheader = {{#if: {{{series|}}}{{{franchise|}}} | {{#if: {{{series|}}} | ''{{{series|}}}'' | {{{franchise|}}} }} character{{#if: {{{multiple|}}} | s }} }} | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{alt|}}}}} | caption = {{{caption|}}} | headerstyle = background-color: #DEDEE2; | label1 = First appearance | data1 = {{#if: {{{first|}}} | {{{first|}}} | {{#invoke:Formatted appearance|getFormattedAppearance|major_work={{{first_major|}}} |minor_work={{{first_minor|}}} |issue={{{first_issue|}}} |date={{{first_date|}}} }} }} | label2 = First game | data2 = {{{firstgame|}}} | label3 = Last appearance | data3 = {{#if: {{{last|}}} | {{{last|}}} | {{#invoke:Formatted appearance|getFormattedAppearance|major_work={{{last_major|}}} |minor_work={{{last_minor|}}} |issue={{{last_issue|}}} |date={{{last_date|}}} }} }} | label4 = Created by | data4 = {{{creator|}}} | label5 = Based on | data5 = {{{based_on|}}} | label6 = Adapted by | data6 = {{{adapted_by|}}} | label7 = Designed by | data7 = {{{designer|}}} | label8 = Portrayed by | data8 = {{{portrayer|}}} | label9 = Voiced by | data9 = {{{voice|}}} | label10 = Motion capture | data10 = {{{motion_actor|}}} | label11 = {{{lbl1|}}} | data11 = {{{data1|}}} | label12 = {{{lbl2|}}} | data12 = {{{data2|}}} | label13 = {{{lbl3|}}} | data13 = {{{data3|}}} | label14 = {{{lbl4|}}} | data14 = {{{data4|}}} | label15 = {{{lbl5|}}} | data15 = {{{data5|}}} | header20 = {{#if: {{{noinfo|}}} || {{#if: {{{full_name|}}} {{{alias|}}} {{{aliases|}}} {{{nickname|}}} {{{nicknames|}}} {{{race|}}} {{{species|}}} {{{gender|}}} {{{title|}}} {{{occupation|}}} {{{position|}}} {{{class|}}} {{{affiliation|}}} {{{alignment|}}} {{{fighting_style|}}} {{{weapon|}}} {{{family|}}} {{{spouse|}}} {{{spouses|}}} {{{significant_other|}}} {{{significant_others|}}} {{{children|}}} {{{relatives|}}} {{{religion|}}} {{{origin|}}} {{{home|}}} {{{nationality|}}} {{{data21|}}} {{{data22|}}} {{{data23|}}} {{{data24|}}} {{{data25|}}} | {{If empty |{{{info-hdr|}}} |In-universe information }} }} }} | label21 = Full name | data21 = {{{full_name|}}} | label22 = {{#if: {{{alias|}}} | Alias | Aliases }} | data22 = {{If empty |{{{alias|}}} |{{{aliases|}}} }} | label23 = {{#if: {{{nickname|}}} | Nickname | Nicknames }} | data23 = {{If empty |{{{nickname|}}} |{{{nicknames|}}} }} | label24 = {{#if: {{{race|}}} | Race | Species }} | data24 = {{If empty |{{{race|}}} |{{{species|}}} }} | label25 = Gender | data25 = {{{gender|}}} | label26 = Title | data26 = {{{title|}}} | label27 = {{#if: {{{occupation|}}} | Occupation | {{#if: {{{position|}}} | Position | Class }} }} | data27 = {{If empty |{{{occupation|}}} |{{{position|}}} |{{{class|}}} }} | label28 = {{#if: {{{affiliation|}}} | Affiliation | Alignment }} | data28 = {{If empty |{{{affiliation|}}} |{{{alignment|}}} }} | label29 = Fighting style | data29 = {{{fighting_style|}}} | label30 = Weapon | data30 = {{{weapon|}}} | label31 = Family | data31 = {{{family|}}} | label32 = {{#if: {{{spouse|}}} | Spouse | Spouses }} | data32 = {{If empty |{{{spouse|}}} |{{{spouses|}}} }} | label33 = {{#if: {{{significant_other|}}} | Significant {{nowrap|other}} | Significant {{nowrap|others}} }} | data33 = {{If empty |{{{significant_other|}}} |{{{significant_others|}}} }} | label34 = Children | data34 = {{{children|}}} | label35 = Relatives | data35 = {{{relatives|}}} | label36 = Religion | data36 = {{{religion|}}} | label37 = {{#if: {{{origin|}}} | Origin | Home }} | data37 = {{If empty |{{{origin|}}} |{{{home|}}} }} | label38 = Nationality | data38 = {{{nationality|}}} | label39 = {{{lbl21|}}} | data39 = {{{data21|}}} | label40 = {{{lbl22|}}} | data40 = {{{data22|}}} | label41 = {{{lbl23|}}} | data41 = {{{data23|}}} | label42 = {{{lbl24|}}} | data42 = {{{data24|}}} | label43 = {{{lbl25|}}} | data43 = {{{data25|}}} | header50 = {{#if: {{{data31|}}} {{{data32|}}} {{{data33|}}} {{{data34|}}} {{{data35|}}} | {{{extra-hdr|}}} }} | label51 = {{{lbl31|}}} | data51 = {{{data31|}}} | label52 = {{{lbl32|}}} | data52 = {{{data32|}}} | label53 = {{{lbl33|}}} | data53 = {{{data33|}}} | label54 = {{{lbl34|}}} | data54 = {{{data34|}}} | label55 = {{{lbl35|}}} | data55 = {{{data35|}}} }}<!-- Start tracking -->{{Main other |{{#if: {{{lbl35|}}} {{{data35|}}} {{{lbl25|}}} {{{data25|}}} {{{lbl5|}}} {{{data5|}}} | [[Category:Articles using Infobox character with multiple unlabeled fields|5{{PAGENAME}}]] | {{#if: {{{lbl34|}}} {{{data34|}}} {{{lbl24|}}} {{{data24|}}} {{{lbl4|}}} {{{data4|}}} | [[Category:Articles using Infobox character with multiple unlabeled fields|4{{PAGENAME}}]] | {{#if: {{{lbl33|}}} {{{data33|}}} {{{lbl23|}}} {{{data23|}}} {{{lbl3|}}} {{{data3|}}} | [[Category:Articles using Infobox character with multiple unlabeled fields|3{{PAGENAME}}]] | {{#if: {{{lbl32|}}} {{{data32|}}} {{{lbl22|}}} {{{data22|}}} {{{lbl2|}}} {{{data2|}}} | [[Category:Articles using Infobox character with multiple unlabeled fields|2{{PAGENAME}}]] }} }} }} }}}}<!-- -->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using infobox character with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox character]] with unknown parameter "_VALUE_"|showblankpositional=1| adapted_by | affiliation | alias | aliases | alignment | alt | caption | children | class | creator | based_on | data1 | data2 | data3 | data4 | data5 | data21 | data22 | data23 | data24 | data25 | data31 | data32 | data33 | data34 | data35 | designer | extra-hdr | family | fighting_style | first | first_date | first_issue | first_major | first_minor | firstgame | franchise | full_name | gender | home | image | image_size | image_upright | info-hdr | last | last_date | last_issue | last_major | last_minor | lbl1 | lbl2 | lbl3 | lbl4 | lbl5 | lbl21 | lbl22 | lbl23 | lbl24 | lbl25 | lbl31 | lbl32 | lbl33 | lbl34 | lbl35 | motion_actor | multiple | name | nationality | nickname | nicknames | noinfo | occupation | origin | portrayer | position | race | relatives | religion | series | significant_other | significant_others | species | spouse | spouses | title | voice | weapon }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> b871898b27742ffec427d7523c2ac6875ce11391 Template:Infobox/doc 10 207 2493 470 2023-09-09T08:06:21Z w>Tjmj 0 /* Examples */ Suppress [[Category:Pages using infobox templates with ignored data cells]] wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{distinguish|Template:Userbox}} {{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}} {{Lua|Module:Infobox}} {{Parameter names example |name={{PAGENAME}} <!--|child |subbox |decat--> |title |above |subheader |subheader1 |subheader2={{{subheader2}}}<br/>...... |image|caption |image1|caption1 |image2|caption2={{{caption2}}}<br/>...... |header1=<div style="border-top:1px dashed #ccc;">{{{header1}}}<br/>{{nobold|( ''or'' )}}</div> |label2={{{label1}}} |data2={{{data1}}} |data3=( ''or'' ) |data4=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data1}}}</div> |header5={{{header2}}}<br/><div style="padding:0.75em 0 0.5em;">{{nobold|( ''or'' )}}</div> |label6={{{label2}}} |data6={{{data2}}} |data7=( ''or'' ) |data8=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data2}}}</div> |data9=<div style="padding:0.75em 0 0.5em;">( ''etc'' )</div> |below }} This template is intended as a meta template: a template used for constructing other templates. '''Note''': In general, it is not meant for use directly in an article, but can be used on a one-off basis if required. [[Help:Infobox]] contains an introduction about the recommended content and design of infoboxes; [[Wikipedia:Manual of Style/Infoboxes]] contains additional style guidelines. See [[WP:List of infoboxes]] and [[:Category:Infobox templates]] for lists of prepared topic-specific infoboxes. == Usage == {{tlf|Infobox}} is a meta-template: used to organise an actual <nowiki>{{Infobox sometopic}}</nowiki> template (like {{tl|Infobox building}}). For <code><nowiki>[[Template:Infobox sometopic]]</nowiki></code>, template code then looks like this, simplified: <syntaxhighlight lang="wikitext"> {{Infobox | name = {{{name|{{PAGENAME}}}}} | image = {{{image|}}} | caption1 = {{{caption|}}} | label1 = Former names | data1 = {{{former_names|}}} | header2 = General information | label3 = Status | data3 = {{{status|}}} ... <!-- etc. --> }} </syntaxhighlight> == Optional control parameters == ; name : If this parameter is present, "view/talk/edit" links will be added to the bottom of the infobox pointing to the named page, prefixed by <code>Template:</code> if no namespace is specified. You may use the value <nowiki>{{subst:PAGENAME}}</nowiki>; however, this is rarely what you want because it will send users clicking these links in an infobox to the template code rather than the data in the infobox they probably want to change. ; child : See the [[#Embedding|Embedding]] section for details. If this is set to "yes", this child infobox should be titled but have no name parameter. This parameter is empty by default, set it to "yes" to activate it. ; subbox : See the [[#Subboxes|Subboxes]] section for details. If this is set to "yes", this subbox should be titled but have no name parameter. This parameter is empty by default, set to "yes" to activate it. It has no effect if the '''child''' parameter is also set to "yes". ; decat : If this is set to "yes", the current page will not be autocategorized in a maintenance category when the generated infobox has some problems or no visible data section. Leave empty by default or set to "yes" to activate it. ; autoheaders: If this is set to any non-blank value, headers which are not followed by data fields are suppressed. See the "[[#Hiding headers when all its data fields are empty|hiding headers when all its data fields are empty]]" section for more details. == Content parameters == === Title === There are two different ways to put a title on an infobox. One contains the title inside the infobox's border in the uppermost cell of the table, the other puts it as a caption on top of the table. You can use them both together, or just one or the other, or neither (though this is not recommended): ; title : Text to put in the caption over the top of the table (or as section header before the whole content of this table, if this is a child infobox). For [[Wikipedia:Manual of Style/Accessibility#Tables|accessibility reasons]], this is the most recommended alternative. ; above : Text to put within the uppermost cell of the table. ; subheader(n) : additional title fields which fit below {{{title}}} and {{{above}}}, but before images. Examples: {{Infobox | name = Infobox/doc | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} </syntaxhighlight>{{clear}} {{Infobox | name = Infobox/doc | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} </syntaxhighlight>{{clear}} === Illustration images === ; image(n) : images to display at the top of the template. Use full image syntax, for example <nowiki>[[File:example.png|200px|alt=Example alt text]]</nowiki>. Image is centered by default. See [[WP:ALT]] for more on alt text. ; caption(n) : Text to put underneath the images. === Main data === ; header(n) : Text to use as a header in row n. ; label(n) : Text to use as a label in row n. ; data(n) : Text to display as data in row n. Note: for any given value for (n), not all combinations of parameters are permitted. The presence of a {{para|header''(n)''}} will cause the corresponding {{para|data''(n)''}} (and {{para|rowclass''(n)''}} {{para|label''(n)''}}, see below) to be ignored; the absence of a {{para|data''(n)''}} will cause the corresponding {{para|label''(n)''}} to be ignored. Valid combinations for any single row are: * {{para|class''(n)''}} {{para|header''(n)''}} * {{para|rowclass''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}} * {{para|rowclass''(n)''}} {{para|label''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}} See the rendering of header4, label4, and data4 in the [[#Examples|Examples]] section below. ==== Number ranges ==== To allow flexibility when the layout of an infobox is changed, it may be helpful when developing an infobox to use non-contiguous numbers for header and label/data rows. Parameters for new rows can then be inserted in future without having to renumber existing parameters. For example: <syntaxhighlight lang="wikitext" style="overflow:auto"> | header3 = Section 1 | label5 = Label A | data5 = Data A | label7 = Label C | data7 = Data C | header10 = Section 2 | label12 = Label D | data12 = Data D </syntaxhighlight>{{clear}} It is also possible to automatically renumber parameter names by using [[User:Frietjes/infoboxgap.js]] or [[Module:IncrementParams]]. There is no upper limit on numbers but there must be at most 50 between each used number. ==== Making data fields optional ==== A row with a label but no data is not displayed. This allows for the easy creation of optional infobox content rows. To make a row optional use a parameter that defaults to an empty string, like so: <syntaxhighlight lang="wikitext" style="overflow:auto"> | label5 = Population | data5 = {{{population|}}} </syntaxhighlight>{{clear}} This way if an article doesn't define the population parameter in its infobox the row won't be displayed. For more complex fields with pre-formatted contents that would still be present even if the parameter wasn't set, you can wrap it all in an "#if" statement to make the whole thing vanish when the parameter is not used. For instance, the "#if" statement in the following example reads "#if:the parameter ''mass'' has been supplied |then display it, followed by 'kg'": <syntaxhighlight lang="wikitext" style="overflow:auto"> | label6 = Mass | data6 = {{ #if: {{{mass|}}} | {{{mass}}} kg }} </syntaxhighlight>{{clear}} For more on #if, see [[meta:ParserFunctions##if:|here]]. ==== Hiding headers when all its data fields are empty ==== You can also make headers automatically hide when their section is empty (has no data-row showing). Consider this situation: {{Infobox | title = Example: header with & without data | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Example: header with & without data | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} </syntaxhighlight>{{clear}} If you want hide the header when no {{para|data''N''}} values are present, use '''{{para|autoheaders|y}}''': {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} </syntaxhighlight>{{clear}} So, header1 will be shown if any of item1, item2, or item3 is defined. If none of the three parameters are defined the header won't be shown and no empty row appears before the next visible content. Note: if the data has empty css elements, like {{para|data|2=&lt;span style="background:yellow;">&lt;/span>}}, this will be treated as non-empty (having data). If {{para|autoheaders|y}} but there are items that you ''do not'' want to trigger a header, place {{para|headerX|_BLANK_}}. This will serve as an empty header and separate it from the subsequent items. {{Infobox | title = Example: blank header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = _BLANK_ | label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5 }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = _BLANK_ | label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5 }} </syntaxhighlight>{{clear}} === Footer === ; below : Text to put in the bottom cell. The bottom cell is intended for footnotes, see-also, and other such information. == Presentation parameters == === Italic titles === Titles of articles with infoboxes may be made italic, in line with [[WP:ITALICTITLE]], by passing the <code>italic title</code> parameter. * Turn on italic titles by passing {{para|italic title|<nowiki>{{{italic title|}}}</nowiki>}} from the infobox. * Turn off by default (notably because only Latin script may be safely rendered in this style and italic may be needed to distinguish foreign language from local English language only in that script, but would be difficult to read for other scripts) but allow some instances to be made italic by passing {{para|italic title|<nowiki>{{{italic title|no}}}</nowiki>}} * Do not make any titles italic by not passing the parameter at all. === CSS styling === {{div col}} ; bodystyle : Applies to the infobox table as a whole ; titlestyle : Applies only to the title caption. Adding a background color is usually inadvisable since the text is rendered "outside" the infobox. ; abovestyle : Applies only to the "above" cell at the top. The default style has font-size:125%; since this cell is usually used for a title, if you want to use the above cell for regular-sized text include "font-size:100%;" in the abovestyle. ; imagestyle : Applies to the cell the image is in. This includes the text of the image caption, but you should set text properties with captionstyle instead of imagestyle in case the caption is moved out of this cell in the future. ; captionstyle : Applies to the text of the image caption. ; rowstyle(n) : This parameter is inserted into the <code>style</code> attribute for the specified row. ; headerstyle : Applies to all header cells ; subheaderstyle : Applies to all subheader cells ; labelstyle : Applies to all label cells ; datastyle : Applies to all data cells ; belowstyle : Applies only to the below cell {{div col end}} === HTML classes and microformats === {{div col}} ; bodyclass : This parameter is inserted into the <code>class</code> attribute for the infobox as a whole. ; titleclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''title''' caption. <!-- currently not implemented in Lua module ; aboverowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''above''' cell is on. --> ; aboveclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''above''' cell. ; subheaderrowclass(n) : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''subheader''' is on. ; subheaderclass(n) : This parameter is inserted into the <code>class</code> attribute for the infobox's '''subheader'''. ; imagerowclass(n) : These parameters are inserted into the <code>class</code> attribute for the complete table row their respective '''image''' is on. ; imageclass : This parameter is inserted into the <code>class</code> attribute for the '''image'''. ; rowclass(n) : This parameter is inserted into the <code>class</code> attribute for the specified row including the '''label''' and '''data''' cells. ; class(n) : This parameter is inserted into the <code>class</code> attribute for the '''data''' cell of the specified row. If there's no '''data''' cell it has no effect. <!-- currently not implemented in Lua module ; belowrowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''below''' cell is on. --> ; belowclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''below''' cell. {{div col end}} This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. Multiple class names may be specified, separated by spaces, some of them being used as selectors for custom styling according to a project policy or to the skin selected in user preferences, others being used for microformats. To flag an infobox as containing [[hCard]] information, for example, add the following parameter: <syntaxhighlight lang="wikitext" style="overflow:auto"> | bodyclass = vcard </syntaxhighlight>{{clear}} And for each row containing a data cell that's part of the vcard, add a corresponding class parameter: <syntaxhighlight lang="wikitext" style="overflow:auto"> | class1 = fn | class2 = org | class3 = tel </syntaxhighlight>{{clear}} ...and so forth. "above" and "title" can also be given classes, since these are usually used to display the name of the subject of the infobox. See [[Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia, and [[microformat]] for more information on microformats in general. == Examples == Notice how the row doesn't appear in the displayed infobox when a '''label''' is defined without an accompanying '''data''' cell, and how all of them are displayed when a '''header''' is defined on the same row as a '''data''' cell. Also notice that '''subheaders''' are not bold by default like the '''headers''' used to split the main data section, because this role is meant to be for the '''above''' cell : {{Suppress categories| {{Infobox |name = Infobox/doc |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = |image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below File:Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} }} <syntaxhighlight lang="wikitext"> {{Infobox |name = Infobox/doc |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = |image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below File:Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} </syntaxhighlight> For this example, the {{para|bodystyle}} and {{para|labelstyle}} parameters are used to adjust the infobox width and define a default width for the column of labels: {{Infobox |name = Infobox/doc |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} <syntaxhighlight lang="wikitext"> {{Infobox |name = Infobox/doc |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} </syntaxhighlight> == Embedding == <!--Linked from [[Template:Subinfobox bodystyle/doc]]--> One infobox template can be embedded into another using the {{para|child}} parameter. This feature can be used to create a modular infobox, or to create better-defined logical sections. Long ago, it was necessary to use embedding in order to create infoboxes with more than 99 rows; but nowadays there's no limit to the number of rows that can be defined in a single instance of <code><nowiki>{{infobox}}</nowiki></code>. {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </syntaxhighlight>{{clear}} Note, in the examples above, the child infobox is placed in a <code>data</code> field, not a <code>header</code> field. Notice that the section subheadings are not in bold font if bolding is not explicitly specified. To obtain bold section headings, place the child infobox in a '''header''' field (but not in a '''label''' field because it would not be displayed!), either using {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </syntaxhighlight>{{clear}} or, {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </syntaxhighlight>{{clear}} Note that omitting the {{para|title}} parameter, and not including any text preceding the embedded infobox, may result in spurious blank table rows, creating gaps in the visual presentation. The garbage output can be suppressed using {{para|rowstyleN|display: none}}, replacing N with the data/header number. [[Wikipedia:WikiProject Infoboxes/embed]] includes some links to Wikipedia articles which include infoboxes embedded within other infoboxes. == Subboxes == An alternative method for embedding is to use {{para|subbox|yes}}, which removes the outer border from the infobox, but preserves the interior structure. One feature of this approach is that the parent and child boxes need not have the same structure, and the label and data fields are not aligned between the parent and child boxes because they are not in the same parent table. {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} </syntaxhighlight>{{clear}} Similar embedding techniques may be used within content parameters of some other templates generating tables (such as [[:Template:Sidebar|Sidebar]]) : {{Sidebar | navbar = off | headingstyle = background-color:#eee; | heading1 = Heading 1 | heading2 = Heading 2 | content3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | content4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | heading5 = Heading 5 }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Sidebar | navbar = off | headingstyle = background-color:#eee; | heading1 = Heading 1 | heading2 = Heading 2 | content3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | content4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | heading5 = Heading 5 }} </syntaxhighlight>{{clear}} Note that the default padding of the parent data cell containing each subbox is still visible, so the subboxes are slightly narrower than the parent box and there's a higher vertical spacing between standard cells of the parent box than between cells of distinct subboxes. == Controlling line-breaking in embedded bulletless lists == Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists embedded in infoboxes (e.g. cast list in {{tlx|Infobox film}}), to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details. == Full blank syntax == (Note: there is no limit to the number of possible rows; only 20 are given below since infoboxes larger than that will be relatively rare. Just extend the numbering as needed. The microformat "class" parameters are also omitted as they are not commonly used.) <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | child = {{{child|}}} | subbox = {{{subbox|}}} | italic title = {{{italic title|no}}} | templatestyles = | child templatestyles = | grandchild templatestyles = | bodystyle = | titlestyle = | abovestyle = | subheaderstyle = | title = | above = | subheader = | imagestyle = | captionstyle = | image = | caption = | image2 = | caption2 = | headerstyle = | labelstyle = | datastyle = | header1 = | label1 = | data1 = | header2 = | label2 = | data2 = | header3 = | label3 = | data3 = | header4 = | label4 = | data4 = | header5 = | label5 = | data5 = | header6 = | label6 = | data6 = | header7 = | label7 = | data7 = | header8 = | label8 = | data8 = | header9 = | label9 = | data9 = | header10 = | label10 = | data10 = | header11 = | label11 = | data11 = | header12 = | label12 = | data12 = | header13 = | label13 = | data13 = | header14 = | label14 = | data14 = | header15 = | label15 = | data15 = | header16 = | label16 = | data16 = | header17 = | label17 = | data17 = | header18 = | label18 = | data18 = | header19 = | label19 = | data19 = | header20 = | label20 = | data20 = | belowstyle = | below = }} </syntaxhighlight>{{clear}} {{Help:Infobox/user style}} == Porting to other MediaWikis == The infobox template requires the [[:mw:Extension:Scribunto|Scribunto]] and [[:mw:Extension:TemplateStyles|TemplateStyles]] extensions. [[Wikipedia:WikiProject Transwiki|WikiProject Transwiki]] has a version of this template that has been modified to work on other MediaWikis. == TemplateData == {{TemplateData header}} <templatedata> { "description": "This template is intended as a meta template, a template used for constructing other templates. In general, it is not meant for use directly in an article but can be used on a one-off basis if required.", "format": "{{_\n| ________________ = _\n}}\n", "params": { "title": { "label": "Title", "description": "Title displayed above the infobox", "type": "string", "suggested": true }, "image": { "label": "Image", "description": "Image illustrating the topic. Use full image syntax.", "type": "content", "suggested": true, "example": "[[File:example.png|200px|alt=Example alt text]]" }, "caption": { "label": "Caption", "description": "caption for the image", "type": "content", "suggested": true } }, "paramOrder": [ "title", "image", "caption" ] } </templatedata> ==Tracking categories== * {{Category link with count|Articles with missing Wikidata information}} * {{Category link with count|Articles using infobox templates with no data rows}} * {{Category link with count|Pages using embedded infobox templates with the title parameter}} ==See also== * [[Module:Infobox]], the [[WP:LUA|Lua]] module on which this template is based * [[Module:Check for unknown parameters]] * {{tl|Infobox3cols}} * {{tl|Navbox}} and {{tl|Sidebar}} * [[Wikipedia:List of infoboxes|List of infoboxes]] * [[:Module:InfoboxImage]] <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Infobox templates| ]] [[Category:Wikipedia metatemplates|Infobox]] [[Category:Templates generating microformats]] [[Category:Templates that add a tracking category]] [[Category:Templates based on the Infobox Lua module]] }}</includeonly> b7ba187ea76ee960bbe295ad01c44c646eaedadb Module:Authority control/config 828 1076 2350 2023-09-11T08:49:27Z wikipedia>MSGJ 0 update link for PLBABN and remove obsolete patterns from NLP Scribunto text/plain require('strict') local p = {} p.auxiliary = 'Module:Authority control/auxiliary' p.i18n = { aclink = '[[Help:Authority control|Authority control databases]]', ACmodule = 'Module:Authority control', addtowd = 'Add values to Wikidata', attentioncat = 'Pages with authority control identifiers needing attention', All_articles = 'All articles', allfaultycat = 'All articles with faulty authority control information', Appears_as = 'Appears as', -- used on documentation table to show example Articles = 'Articles', autocollapse = 'autocollapse', -- Navbox state parameter cat = 'Articles with %s identifiers', category = 'Category', Code = 'Code', collapsed = 'collapsed', -- Navbox state parameter connecttowd = 'Please connect this article to a Wikidata item.', Description = 'Description', errortemplate = 'Error', -- e.g. [[Template:Error]], expanded = 'expanded', -- Navbox state parameter faultcat = 'Articles with faulty authority control information', Faults = 'Faults', faulty = 'faulty', identifier = 'identifier', identifiers = 'identifiers', idnotvalid = 'The %s identifier %s is not valid.', linktemplate = 'Wikidata property link', -- refers to [[Template:Wikidata property link]] localparams = 'Local parameters are deprecated.', maincat = 'Articles with authority control information', movetowd = 'Please move values to Wikidata.', name = 'Authority control', navbox = 'Module:Navbox', pages = 'pages', pageswithparams = 'Pages using authority control with parameters', -- name of category for tracking uses with parameters previewwarning = 'Warning: Local parameters are deprecated. Please move any identifiers to Wikidata.', -- preview message when local parameters are used qidcode = 'Please use the <code>|qid=</code> parameter to specify the Wikidata item.', sandbox = 'sandbox', Section = 'Section', suppressedcat = 'Articles with suppressed authority control identifiers', testcases = 'testcases', Topic = 'Topic', Totals = 'Totals', Tracking_category = 'Tracking category', warning = 'Warning', warningicon = '345-409 Ambox warning centered.svg', -- icon used for faulty ids WDproperty = 'Wikidata property', } p.config = { { 'AAG', property = 3372, section = 5, link = 'https://www.aucklandartgallery.com/explore-art-and-ideas/artist/$1/', label = 'Auckland', pattern = '%d+', }, { 'ACM-DL', property = 864, section = 4, pattern = '%d%d%d%d%d%d%d%d%d%d%d', link = 'https://dl.acm.org/profile/$1', label = 'Association for Computing Machinery', }, { 'ADB', property = 1907, section = 6, patterns = {'[a-z][-a-z]+-[1-3]%d%d?%d?%d?', '[a-z][-a-z]+-[1-9]%d?%d?%d?'}, link = 'http://adb.anu.edu.au/biography/$1', label = 'Australia', }, { 'ADK', property = 4114, section = 5, link = 'https://www.adk.de/de/akademie/mitglieder/?we_objectID=$1', label = 'ADK', patterns = {'4999[6-9]', '5[0-4]%d%d%d', '55[0-6]%d%d', '5570%d', '5571[0-8]'} }, { 'admiralty', property = 3562, patterns = {'[A-Q]%d%d%d%d', '[A-Q]%d%d%d%d%.%d+'}, section = 3, prefix = '[[Admiralty (identifier)|Admiralty]]' }, { 'AGSA', property = 6804, section = 5, pattern = '[1-9]%d*', link = 'https://www.agsa.sa.gov.au/collection-publications/collection/creators/_/$1/', label = 'South Australia', }, { 'ARLHS', property = 2980, section = 3, pattern = '[A-Z][A-Z][A-Z]%d%d%d%d?[A-Z]?', link = 'http://wlol.arlhs.com/lighthouse/$1.html', label = 'ARLHS', }, { 'autores.uy', property = 2558, section = 6, pattern = '[1-9]%d?%d?%d?%d?', link = 'https://autores.uy/autor/$1', label = 'Uruguay', remark = "autores.uy is an author's database, that focus on [[Uruguay]]an authors. It was created and maintained by the Uruguayan chapter of Creative Commons. It also provides access to digitized works of the authors in public domain." }, { 'AWR', property = 4186, section = 6, patterns = {'[A-Z][A-Z][A-Z]%d%d%d%d[a-z]', '[A-Z][A-Z]%d%d%d%d%d[a-z]'}, link = 'http://www.womenaustralia.info/biogs/$1.htm', label = 'Australian Women\'s Register', }, { 'BGCI', property = 5818, section = 3, link = 'https://www.bgci.org/garden.php?id=$1', label = 'BGCI garden', pattern = '%d+' }, { 'BIBSYS', property = 1015, section = 2, patterns = {'[1-9]%d?%d?%d?%d?%d?%d?%d?%d?', '[1-9]%d%d%d%d%d%d%d%d%d%d%d%d'}, link = 'https://authority.bibsys.no/authority/rest/authorities/html/$1', label = 'Norway', remark = 'BIBSYS is a supplier of library and information systems for all Norwegian university Libraries, the National Library of Norway, college libraries, and a number of research libraries and institutions.' }, { 'Bildindex', property = 2092, section = 7, pattern = '%d+', link = 'https://www.bildindex.de/document/obj$1', label = 'Bildindex', }, { 'BMLO', property = 865, section = 6, link = 'https://bmlo.de/$1', label = 'BMLO', pattern = '[a-z][0-9][0-9][0-9][0-9]' }, { 'BNC', property = 1890, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'http://www.bncatalogo.cl/F?func=direct&local_base=red10&doc_number=$1', label = 'Chile', }, { 'BNE', property = 950, section = 2, patterns = {'[XF][XF]%d%d%d%d%d?%d?%d?', 'a%d%d%d%d%d?%d?%d?', 'bi[mcsv][aoei]%d%d%d%d%d%d%d%d%d%d', 'Mi[sm][eoa]%d%d%d%d%d%d%d%d%d%d'}, link = 'http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=$1', label = 'Spain', remark = "National Library of Spain (BNE: ''Biblioteca Nacional de España'') is a major public library, the largest in Spain." }, { 'BNF', property = 268, section = 2, pattern = '%d%d%d%d%d%d%d%d[0-9bcdfghjkmnpqrstvwxz]', link = 'https://catalogue.bnf.fr/ark:/12148/cb$1', label = 'France', remark = 'Authority data of people listed in the general catalogue of the National Library of France' }, { 'BNFdata', property = 268, section = 2, pattern = '%d%d%d%d%d%d%d%d[0-9bcdfghjkmnpqrstvwxz]', link = 'https://data.bnf.fr/ark:/12148/cb$1', label = 'BnF data' }, { 'BNMM', property = 3788, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'https://catalogo.bn.gov.ar/F/?func=direct&local_base=BNA10&doc_number=$1', label = 'Argentina', }, { 'Botanist', property = 428, section = 4, valid = 'botanistV', link = 'https://www.ipni.org/ipni/advAuthorSearch.do?find_abbreviation=$1', label = 'International Plant Names Index', remark = 'Author citation (botany): standard form (official abbreviation) of a personal name for use in an author citation (only for names of algae, fungi and plants). Links to page at [[International Plant Names Index]] (IPNI).' }, { 'BPN', property = 651, section = 6, patterns = {'%d%d%d%d%d%d%d%d', '0?%d%d%d%d%d%d%d', '0?0?%d%d%d%d%d%d'}, link = 'http://www.biografischportaal.nl/en/persoon/$1', label = 'Netherlands', remark = 'Dutch project with material for 40,000 digitized biographies, including former colonies of the Netherlands.' }, { 'BRAHMS artist', property = 5226, section = 5, link = 'http://brahms.ircam.fr/$1', label = 'BRAHMS', pattern = '[a-z%-\\]+', remark = 'Identifier of an artist in the B.R.A.H.M.S. (Base Relationnelle d\'Articles Hypertextes sur la Musique du 20e Siècle database), by the IRCAM' }, { 'BRAHMS work', property = 5302, section = 7, link = 'https://brahms.ircam.fr/works/work/$1/', label = 'BRAHMS', pattern = '[1-9]%d*', remark = "Identifier for a musical work in the B.R.A.H.M.S. (Base Relationnelle d\'Articles Hypertextes sur la Musique du 20e Siècle database) database, by the IRCAM" }, { 'CANTICN', property = 9984, section = 2, pattern = '981[0-1]%d%d%d%d%d%d%d%d%d06706', link = 'https://cantic.bnc.cat/registre/$1', label = 'Catalonia', }, { 'CCG', property = 3920, section = 3, customlink = 'ccg', remark = 'Identifier from one of 4 volumes of List of Lights, Buoys and Fog Signals issued by the Canadian Coast Guard.' }, { 'CINII', property = 271, section = 4, pattern = 'D[AB]%d%d%d%d%d%d%d[%dX]', link = 'https://ci.nii.ac.jp/author/$1?l=en', label = 'CiNii', remark = 'CiNii is a bibliographic database service for material in Japanese academic libraries. It is maintained by the [[National Institute of Informatics]].' }, { 'CWGC', property = 1908, section = 6, pattern = '[1-9]%d*', link = 'https://www.cwgc.org/find-war-dead/casualty/$1/', label = 'Commonwealth War Graves Commission', }, { 'DAAO', property = 1707, section = 5, pattern = '[a-z%-]+%d*', link = 'https://www.daao.org.au/bio/$1', label = 'Australian Artists', }, { 'Danish List of Lights and Fog signals', property = 4038, section = 3, pattern = '[1-9]%d*[A-Za-z]?', prefix = 'Denmark', }, { 'DB', property = 8671, section = 7, label = 'Deutsche Bahn', link = 'https://iris.noncd.db.de/wbt/js/index.html?bhf=$1&zeilen=50&seclang=en', remark = 'Deutsche Bahn station code, identifier for train stations and other operating points used by Deutsche Bahn', pattern = '[ABCDEFHIJKLMNOPQRSTUVWXYZ][A-Z0-9%s][A-Z0-9%s]?[A-Z0-9%s]?[A-Z0-9%s]?' }, { 'DBI', property = 1986, section = 6, link = 'https://www.treccani.it/enciclopedia/$1_(Dizionario-Biografico)', label = 'Italian People', }, { 'DBLP', property = 2456, section = 4, patterns = {'%d%d%d?%/%d+-?[%d]*[%a]*-?[%d]*', '[%a]+%/[%w]*-?[%d]*'}, link = 'https://dblp.org/pid/$1', label = 'DBLP', }, { 'Deutsche Synchronkartei', property = 11646, section = 6, label = 'Deutsche Synchronkartei', link = 'https://www.synchronkartei.de/person/$1', remark = 'Online database of voice actors in film and television productions', pattern = string.rep('[0-9a-zA-Z_-]',9) }, { 'DIB', property = 6829, section = 6, pattern = '0[01]%d%d%d%d%.?[A-D]?', link = 'https://doi.org/10.3318/dib.$1.v1', label = 'Ireland', }, { 'DSI', property = 2349, section = 5, pattern = '[1-9]%d*', link = 'http://www.uni-stuttgart.de/hi/gnt/dsi2/index.php?table_name=dsi&function=details&where_field=id&where_value=$1', label = 'Scientific illustrators', }, { 'DTBIO', property = 7902, section = 6, pattern = '1[0-9]%d%d%d%d%d%d%d?[0-9X]', link = 'https://www.deutsche-biographie.de/pnd$1.html?language=en', label = 'Deutsche Biographie', }, { 'EBIDAT', property = 9725, section = 3, label = 'EBIDAT', link = 'https://www.ebidat.de/cgi-bin/ebidat.pl?id=$1', remark = 'Identifier for an entry in the castles inventory database EBIDAT', pattern = '[1-9]%d?%d?%d?' }, { 'Emmy', property = 8381, section = 5, link = 'https://www.emmys.com/bios/$1', label = 'Emmy Awards' }, { 'EMU', property = 4613, section = 7, pattern = '%d%d?%d?%d?%d?%d?', link = 'http://esu.com.ua/search_articles.php?id=$1', label = 'Encyclopedia of Modern Ukraine', }, { 'EUTA', property = 4535, section = 3, label = 'EUTA theatre', link = 'http://www.theatre-architecture.eu/db/?theatreId=$1', pattern = '[1-9]%d*' }, { 'EUTA person', property = 4534, section = 6, label = 'EUTA', link = 'http://www.theatre-architecture.eu/db.html?personId=$1', pattern = '[1-9]%d?%d?%d?%d?%d?%d?' }, { 'FAST', property = 2163, section = 1, pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?', link = 'http://id.worldcat.org/fast/$1/', label = 'FAST', }, { 'Finnish List of Lights', property = 4143, section = 3, pattern = '%d+', prefix = 'Finland', }, { 'FNZA', property = 6792, section = 5, pattern = '[1-9]%d*', link = 'https://findnzartists.org.nz/artist/$1/', label = 'New Zealand Artists', }, { 'GND', property = 227, section = 2, patterns = {'1[0123]?%d%d%d%d%d%d%d[0-9X]', '[47]%d%d%d%d%d%d%-%d', '[1-9]%d?%d?%d?%d?%d?%d?%d?%-[0-9X]', '3%d%d%d%d%d%d%d[0-9X]'}, link = 'https://d-nb.info/gnd/$1', label = 'Germany', remark = 'Authority data on people, corporations and subjects from the [[German National Library]] (DNB)' }, { 'Google Scholar', property = 1960, section = 4, pattern = '[%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u]', link = 'https://scholar.google.com/citations?user=$1', label = 'Google Scholar', }, { 'Grammy', property = 7303, section = 5, pattern = '%w[%w-]+%/%d+', link = 'https://www.grammy.com/grammys/artists/$1', label = 'Grammy Awards', }, { 'GVP', property = 1886, section = 3, link = 'https://volcano.si.edu/volcano.cfm?vn=$1', label = 'Global Volcanism Program', pattern = '%d%d%d%d%d%d' }, { 'HDS', property = 902, section = 7, pattern = '%d%d%d%d%d%d', label = 'Historical Dictionary of Switzerland', link = 'https://hls-dhs-dss.ch/fr/articles/$1', remark = 'Historical Dictionary of Switzerland is an encyclopedia on the history of Switzerland.' }, { 'IAAF', property = 1146, section = 6, pattern = '%d+', link = 'https://www.iaaf.org/athletes/_/$1', label = 'World Athletics', remark = 'The IAAF athlete database lists information about [[sport of athletics]] competitors.' }, { 'ICCU', property = 396, section = 2, pattern = '%u%u[%u0-3]V%d%d%d%d%d%d', link = 'https://opac.sbn.it/nome/$1', label = 'Italy', remark = 'Central Institute for the Union Catalogue (ICCU: {{lang|it|Istituto Centrale per il Catalogo Unico}}) is an Italian government agency created to build a single catalog of all the libraries in the nation. It manages National Library Service ({{lang|it|Servizio bibliotecario nazionale}}).' }, { 'ICIA', property = 1736, section = 5, pattern = '%d+', link = 'https://www.imj.org.il/artcenter/newsite/en/?artist=$1', label = 'ICIA (Israel)', }, { 'IEU', property = 9070, section = 7, pattern = '[A-Z]\\[A-Z]\\%w+', link = 'http://www.encyclopediaofukraine.com/display.asp?linkpath=pages\\$1', label = 'Internet Encyclopedia of Ukraine', }, { 'ISIL', property = 791, section = 6, customlink = 'ISILlink', remark = 'Libraries, museums and archives, decentralized national databases.' }, { 'ISNI', property = 213, section = 1, label = 'ISNI', valid = 'validateIsni', link = 'https://isni.org/isni/$1', remark = 'ISNI is a method for uniquely identifying the public identities of contributors to media content such as books, TV programmes, and newspaper articles. Please take care not to confuse ISNI and ORCID identifiers.' }, { 'J9U', property = 8189, section = 2, pattern = '9870[0-1]%d%d%d%d%d%d%d%d05171', link = 'http://uli.nli.org.il/F/?func=find-b&local_base=NLX10&find_code=UID&request=$1', label = 'Israel', }, { 'Joconde', property = 347, section = 7, pattern = ''..string.rep('[%-0-9A-Za-z]', 11)..'', link = 'https://www.pop.culture.gouv.fr/notice/joconde/$1', label = 'Joconde', }, { 'KANTO', property = 8980, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'https://urn.fi/URN:NBN:fi:au:finaf:$1', label = 'Finland', }, { 'KBR', property = 11249, section = 2, pattern = '%d%d%d%d%d%d%d%d', link = 'https://opac.kbr.be/LIBRARY/doc/AUTHORITY/$1', label = 'Belgium', }, { 'KULTURNAV', property = 1248, section = 5, pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'http://kulturnav.org/$1', label = 'KulturNav', remark = 'KulturNav is a Norwegian cloud-based software service, allowing users to create, manage and distribute name authorities and terminology, focusing on the needs of museums and other cultural heritage institutions. The software is developed by KulturIT ANS and the development project is funded by the [[Arts Council Norway]].' }, { 'LCCN', property = 244, section = 2, pattern = '%l%l?%d%d%d%d%d%d%d%d%d?%d?', link = 'https://id.loc.gov/authorities/$1', label = 'United States', remark = 'See [[Wikipedia:Authority control#LCCN]] for formatting instructions' }, { 'Leopoldina', property = 10299, section = 4, link = 'https://www.leopoldina.org/mitgliederverzeichnis/mitglieder/member/Member/show/$1/', label = 'Leopoldina', pattern = '[%-a-z]+%d?' }, { 'LexM', property = 9692, section = 5, link = 'https://www.lexm.uni-hamburg.de/object/lexm_lexmperson_$1', label = 'LexM', remark = 'Identifier for a musician in the Lexikon verfolgter Musiker und Musikerinnen der NS-Zeit', pattern = '%d%d%d%d%d%d%d%d' }, { 'Libris', property = 5587, section = 2, pattern = '%w+', link = 'https://libris.kb.se/$1', label = 'Sweden' }, { 'LIR', property = 886, section = 7, pattern = '%d+', link = 'http://www.e-lir.ch/e-LIR___Lexicon.$1.450.0.html', label = 'Lexicon Istoric Retic', remark = '{{lang|rm|Lexicon Istoric Retic}} (LIR) is a two volume version with a selection of articles published in Romansh.' }, { 'LNB', property = 1368, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number=$1&P_CON_LNG=ENG', label = 'Latvia', }, { 'Marina Militare', property = 3863, section = 3, pattern = '[1-9]%d*', link = 'http://www.marina.difesa.it/cosa-facciamo/per-la-difesa-sicurezza/fari/Pagine/$1.aspx', label = 'Italy', }, { 'MarineTraffic', property = 3601, section = 3, pattern = '%d%d%d%d%d%d%d%d%d%d', link = 'https://www.marinetraffic.com/en/ais/details/lights/$1', label = 'MarineTraffic', }, { 'MATHSN', property = 4955, section = 4, pattern = '[1-9]%d%d%d%d%d?%d?', link = 'https://mathscinet.ams.org/mathscinet/MRAuthorID/$1', label = 'MathSciNet', }, { 'MBA', property = 434, section = 5, category = 'MusicBrainz', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/artist/$1', label = 'MusicBrainz', remark = 'MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.' }, { 'MBAREA', property = 982, section = 3, category = 'MusicBrainz area', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/area/$1', label = 'MusicBrainz area', }, { 'MBI', property = 1330, section = 7, category = 'MusicBrainz instrument', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/instrument/$1', label = 'MusicBrainz instrument', }, { 'MBL', property = 966, section = 7, category = 'MusicBrainz label', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', label = 'MusicBrainz label', link = 'https://musicbrainz.org/label/$1', }, { 'MBP', property = 1004, section = 3, category = 'MusicBrainz place', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/place/$1', label = 'MusicBrainz place', }, { 'MBRG', property = 436, section = 7, category = 'MusicBrainz release group', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/release-group/$1', label = 'MusicBrainz release group', }, { 'MBS', property = 1407, section = 7, category = 'MusicBrainz series', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/series/$1', label = 'MusicBrainz series', }, { 'MBW', property = 435, section = 7, category = 'MusicBrainz work', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/work/$1', label = 'MusicBrainz work', }, { 'Mérimée', property = 380, section = 3, link = 'https://www.pop.culture.gouv.fr/notice/merimee/$1', label = 'Mérimée', patterns = {'[PEI]A%d[0-9AB]%d%d%d%d%d%d','ACR%d%d%d%d%d%d%d', 'MI%d%d%dB?', 'JAR%d%d%d%d%d%d%d', 'SPR%d%d%d%d%d%d%d'} }, { 'MGP', property = 549, section = 4, pattern = '%d%d?%d?%d?%d?%d?', link = 'https://www.mathgenealogy.org/id.php?id=$1', label = 'Mathematics Genealogy Project', remark = 'Mathematics Genealogy Project is a web-based database for the academic genealogy of mathematicians.' }, { 'MoMA', property = 2174, section = 5, link = 'https://www.moma.org/artists/$1', label = 'Museum of Modern Art', pattern = '%d+' }, { 'Musée d\'Orsay', property = 2268, section = 5, link = 'https://www.musee-orsay.fr/en/ressources/repertoire-artistes-personnalites/$1', label = 'Musée d\'Orsay', pattern = '[1-9]%d?%d?%d?%d?%d?' }, { 'NARA', property = 1225, section = 7, pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?', link = 'https://catalog.archives.gov/id/$1', label = 'NARA', remark = 'National Archives and Records Administration (NARA) is an independent agency of the United States government charged with preserving and documenting government and historical records.' }, { 'National Gallery of Canada', property = 5368, section = 5, label = 'National Gallery of Canada', link = 'https://www.gallery.ca/collection/artist/$1', pattern = '%C+' }, { 'NCL', property = 1048, section = 2, pattern = '%d+', link = 'http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence=$1&CON_LNG=ENG', label = 'Taiwan', remark = 'National Central Library is the national library of Taiwan, Republic of China.' }, { 'NDL', property = 349, section = 2, link = 'https://id.ndl.go.jp/auth/ndlna/$1', patterns = {'a1%d?%d%d%d%d%d%d%d%d', 's?%d?%d%d%d%d%d%d%d%d'}, label = 'Japan', remark = 'Authority data listed in the catalog of the national library of Japan. Search also available via [http://viaf.org/ VIAF].' }, { 'NGA', property = 3563, section = 3, pattern = '11[0-6]%-%d+%.?%d*', link = 'https://wikidata-externalid-url.toolforge.org/?url=https%3A%2F%2Fmsi.nga.mil%2FqueryResults%3Fpublications%2Fngalol%2Flights-buoys%3Fvolume%3D%251%26featureNumber%3D%252%26includeRemovals%3Dfalse%26output%3Dhtml&exp=(%5Cd%7B3%7D)-(.*)&id=$1', label = 'NGA', }, { 'NGV', property = 2041, section = 5, pattern = '%d+', link = 'https://www.ngv.vic.gov.au/explore/collection/artist/$1/', label = 'Victoria', }, { 'NKC', property = 691, section = 2, pattern = '[a-z][a-z][a-z]?[a-z]?%d%d%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?', link = 'https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=$1&CON_LNG=ENG', label = 'Czech Republic', remark = 'National Library of the Czech Republic ({{lang|cs|Národní knihovna České republiky}}) is the central library of the Czech Republic.' }, { 'NLA', property = 409, section = 2, pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?', link = 'https://nla.gov.au/anbd.aut-an$1', label = 'Australia', remark = "NLA Trove's People and Organisation view allows the discovery of biographical and other contextual information about people and organisations. Search also available via [http://viaf.org/ VIAF]." }, { 'NLG', property = 3348, section = 2, pattern = '[1-9]%d*', link = 'https://data.nlg.gr/resource/authority/record$1', label = 'Greece', }, { 'NLK', property = 5034, section = 2, link = 'https://lod.nl.go.kr/resource/$1', label = 'Korea', patterns = {'%u%u%u%d%d%d%d%a?%d%d%d%d%d?%d?', 'CNTS%-%d%d%d%d%d%d%d%d%d%d%d'} }, { 'NLR', property = 1003, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'http://aleph.bibnat.ro:8991/F/?func=direct&local_base=NLR10&doc_number=$1', label = 'Romania', }, { 'Norwegian List of Lights', property = 4055, section = 3, pattern = '%d+', prefix = 'Norway', }, { 'NSK', property = 1375, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'http://katalog.nsk.hr/F/?func=direct&doc_number=$1&local_base=nsk10', label = 'Croatia', }, { 'NTA', property = 1006, section = 2, pattern = '%d%d%d%d%d%d%d%d[%dX]', link = 'http://data.bibliotheken.nl/id/thes/p$1', label = 'Netherlands', }, { 'Online List of Lights', property = 3223, section = 3, pattern = '[1-9]%d*', label = 'OLL', link = 'http://listoflights.org/leuchtfeuer/detail?id=$1.aspx' }, { 'ORCID', property = 496, section = 4, label = 'ORCID', valid = 'orcidV', link = 'https://orcid.org/$1', remark = 'Authority data on researchers, academics, etc. The ID range is a subset of the [[ISNI]] range. For free text links (for example when mentioning a person on page which is not about them), it is also possible to use {{tl|ORCID}}. Authors—including Wikipedia editors—may obtain an ORCID by signing up at [https://orcid.org/register orcid.org/register]. Please take care not to confuse ORCID and ISNI identifiers.' }, { 'PIC', property = 2750, section = 5, pattern = '[1-9]%d*', link = 'https://pic.nypl.org/constituents/$1', label = 'Photographers\' Identities', remark = "PIC is a photographer's database. It is maintained by the New York Public Library." }, { 'Pleiades', property = 1584, section = 3, label = 'Pleiades', link = 'https://pleiades.stoa.org/places/$1', pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?', remark = "Pleiades is a joint project of the Institute for the Study of the Ancient World at [[New York University]] and the Ancient World Mapping Center at the [[University of North Carolina]] at Chapel Hill." }, { 'PLWABN', property = 7293, section = 2, pattern = '981%d%d%d%d%d%d%d%d05606*', link = 'https://dbn.bn.org.pl/descriptor-details/$1', label = 'Poland', }, { 'PortugalA', property = 1005, section = 2, pattern = '[1-9]%d*', link = 'http://id.bnportugal.gov.pt/aut/catbnp/$1', label = 'Portugal', }, { 'Portuguese lighthouse', property = 4423, section = 3, patterns = {'[1-9]%d*', '[1-9]%d*.%d+'}, prefix = 'Portugal', }, { 'NLP', property = 1695, section = 2, pattern = 'a%d%d%d%d%d%d%d%d%d%d%d%d%d', link = 'https://dbn.bn.org.pl/descriptor-details/$1', label = 'Poland', suppressedbyproperty = {7293} }, { 'PhilPeople', property = 3233, section = 4, link = 'https://philpeople.org/profiles/$1', label = 'PhilPeople', patterns = {'[a-z%-]+', '[a-z%-]+%-%d'} }, { 'Prado', property = 5321, section = 5, link = 'https://www.museodelprado.es/en/the-collection/artist/wd/$1', label = 'Prado', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x' }, { 'Publons', property = 3829, section = 4, pattern = '%d+', link = 'https://publons.com/author/$1/', label = 'Publons' }, { 'RID', property = 1053, section = 4, patterns = {'[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-19%d%d', '[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-20%d%d'}, link = 'https://www.researcherid.com/rid/$1', label = 'ResearcherID', remark = 'An identifying system for scientific authors. The system was introduced in January 2008 by [[Thomson Reuters]]. The combined use of the [[digital object identifier]] with the ResearcherID allows for a unique association of authors and scientific articles.' }, { 'RISM', property = 5504, section = 7, label = 'RISM', patterns = {'pe[1-9]%d*', 'ks[1-9]%d*', '[1-9]%d*'}, link = 'https://opac.rism.info/search?id=$1', }, { 'RKDartists', property = 650, section = 5, pattern = '[1-9]%d?%d?%d?%d?%d?', link = 'https://rkd.nl/en/explore/artists/$1', label = 'RKD Artists', remark = 'RKDartists is an online database using a controlled vocabulary currently containing around 200,000+ names and other information about artists. Names in RKDartists may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names).' }, { 'RKDID', property = 350, section = 7, pattern = '[1-9]%d?%d?%d?%d?%d?', link = 'https://rkd.nl/nl/explore/images/$1', label = 'RKD ID', }, { 'RSL', property = 947, section = 2, pattern = '%d%d?%d?%d?%d?%d?%d?%d?%d?', link = 'http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request=$1&CON_LNG=ENG', label = 'Russia', remark = 'Russian State Library ({{lang|ru|Российская государственная библиотека}}) is the national library of Russia.' }, { 'Scopus', property = 1153, section = 4, pattern = '[1-9]%d%d%d%d%d%d%d%d%d%d?', link = 'https://www.scopus.com/authid/detail.uri?authorId=$1', label = 'Scopus', remark = 'SciVerse Scopus is a bibliographic database containing abstracts and citations for academic journal articles. It covers nearly 19,500 titles from over 5,000 international publishers, of which 16,500 are peer-reviewed journals in the scientific, technical, medical, and social sciences (including arts and humanities).' }, { 'SELIBR', property = 906, section = 2, pattern = '[1-9]%d%d%d%d%d?', link = 'https://libris.kb.se/auth/$1', label = 'Sweden', remark = 'Authority data from the [[National Library of Sweden]]', suppressedbyproperty = {5587} }, { 'SIKART', property = 781, section = 5, pattern = '%d%d%d%d%d%d%d%d?%d?', link = 'http://www.sikart.ch/KuenstlerInnen.aspx?id=$1&lng=en', label = 'SIKART', remark = 'SIKART is a biographical dictionary and a database on visual art in Switzerland and Liechtenstein. It is published online by the Swiss Institute for Art Research (SIAR).' }, { 'SNAC-ID', property = 3430, section = 7, pattern = '%d*[A-Za-z][0-9A-Za-z]*', link = 'https://snaccooperative.org/ark:/99166/$1', label = 'SNAC', }, { 'Städel', property = 4581, section = 5, label = 'Städel', link = 'https://sammlung.staedelmuseum.de/en/person/$1', pattern = '%C+' }, { 'StadiumDB', property = 5288, section = 3, label = 'StadiumDB', link = 'http://stadiumdb.com/stadiums/$1', pattern = '%l%l%l/[_%w]+' }, { 'Structurae structure', property = 454, section = 3, pattern = '[12]0%d%d%d%d%d%d', label = 'Structurae', link = 'https://structurae.net/structures/$1', }, { 'Structurae person', property = 2418, section = 6, pattern = '10%d%d%d%d%d', label = 'Structurae', link = 'https://structurae.net/persons/$1', }, { 'SUDOC', property = 269, section = 7, label = 'IdRef', pattern = '%d%d%d%d%d%d%d%d[%dxX]', link = 'https://www.idref.fr/$1', remark = 'Authority data of people listed in the general catalogue of the University Documentation System of France. Also available from [http://www.sudoc.abes.fr/xslt//DB=2.1/SET=2/TTL=1/LNG=EN/ English-speaking catalog] (search author, click one book, click author name, take PPN= value of the URL)' }, { 'Sycomore', property = 1045, section = 6, link = 'https://www2.assemblee-nationale.fr/sycomore/fiche/(num_dept)/$1', label = 'Sycomore', pattern = '[1-9]%d?%d?%d?%d?' }, { 'TA98', property = 1323, section = 7, pattern = 'A%d%d%.%d%.%d%d%.%d%d%d[FM]?', link = 'http://tools.wmflabs.org/wikidata-externalid-url/?p=1323&url_prefix=https:%2F%2Fwww.unifr.ch%2Fifaa%2FPublic%2FEntryPage%2FTA98%20Tree%2FEntity%20TA98%20EN%2F&url_suffix=%20Entity%20TA98%20EN.htm&id=$1', label = 'Terminologia Anatomica', }, { 'TDVİA', property = 7314, section = 7, pattern = '[%d%l/-]+', link = 'https://islamansiklopedisi.org.tr/$1', label = 'İslâm Ansiklopedisi', }, { 'TePapa', property = 3544, section = 5, pattern = '%d+', link = 'https://collections.tepapa.govt.nz/agent/$1', label = 'Te Papa (New Zealand)' }, { 'TLS', property = 1362, section = 7, valid = 'tlsV', link = 'http://tls.theaterwissenschaft.ch/wiki/$1', label = 'Theaterlexikon', remark = '{{lang|de|Theaterlexikon der Schweiz}} (TLS) is an encyclopedia about theatre in Switzerland. It was developed by the Institute of Theatre Studies of the [[University of Berne]].' }, { 'Trove', property = 1315, section = 6, label = 'Trove', pattern = '[1-9]%d%d%d%d%d%d?%d?', link = 'https://trove.nla.gov.au/people/$1', }, { 'UKPARL', property = 6213, section = 6, pattern = '[a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d]', link = 'https://id.parliament.uk/$1', label = 'UK Parliament', remark = 'UK parliament member data' }, { 'ULAN', property = 245, section = 5, pattern = '500%d%d%d%d%d%d', link = 'https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=$1', label = 'ULAN', remark = 'ULAN is an online database using a controlled vocabulary currently containing around 293,000 names and other information about artists. Names in ULAN may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names).' }, { 'USCG', property = 3723, section = 3, prefix = '[[USCG (identifier)|USCG]]', customlink = 'uscgLink' }, { 'USCongress', property = 1157, section = 6, pattern = '[A-Z]00[01]%d%d%d', link = 'http://bioguide.congress.gov/scripts/biodisplay.pl?index=$1', label = 'US Congress', remark = 'Biographical Directory of the United States Congress is a biographical dictionary of all present and former members of the United States Congress and its predecessor, the Continental Congress. Also included are Delegates from territories and the District of Columbia and Resident Commissioners from the Philippines and Puerto Rico.' }, { 'VcBA', property = 8034, section = 2, pattern = '49[0-9]%/[1-9][0-9]?[0-9]?[0-9]?[0-9]?[0-9]?', link = 'https://wikidata-externalid-url.toolforge.org/?p=8034&url_prefix=https://opac.vatlib.it/auth/detail/&id=$1', label = 'Vatican', remark = 'Vatican Library document data' }, { 'VIAF', property = 214, section = 1, label = 'VIAF', patterns = {'[1-9]%d%d?%d?%d?%d?%d?%d?%d?', '[1-9]%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d?%d?%d?'}, link = 'https://viaf.org/viaf/$1', remark = 'International authority data from the Online Computer Library Center (OCLC)' }, { 'Vitaskrá', property = 3993, section = 3, pattern = '[1-9]%d*', prefix = 'Iceland' }, { 'WorldCat Entities', property = 10832, section = 1, link = 'https://id.oclc.org/worldcat/entity/$1', label = 'WorldCat', patterns = {'%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w', '[QP][1-9]%d*'}, remark = 'WorldCat Entities for persons and works, by [[OCLC]]', }, { 'World Waterfall', property = 3326, section = 3, link = 'https://www.worldwaterfalldatabase.com/index.php/waterfall/$1', label = 'World Waterfall', pattern = '%d+' }, { 'ZBMATH', property = 1556, section = 4, patterns = {'%l[%l%-]*','%l[%l%-]*%.%l[%l%-]*','%l[%l%-]*.%d*','%l[%l%-]*%.%l[%l%-]*%.%d*'}, link = 'https://zbmath.org/authors/?q=ai:$1', label = 'zbMATH', } } p.sections = { [1] = {name = 'International', hidelabelwhenalone = true}, [2] = {name = 'National'}, [3] = {name = 'Geographic'}, [4] = {name = 'Academics'}, [5] = {name = 'Artists'}, [6] = {name = 'People'}, [7] = {name = 'Other', hidelabelwhenalone = true} } p.whitelists = { arts = { topic = 2018526, properties = {268, 214, 7859, 3372, 6804, 1907, 4186, 2092, 1908, 1707, 6829, 2349, 6792, 227, 1960, 347, 1248, 244, 1225, 2041, 409, 2750, 650, 350, 781, 3430, 3544, 1315, 245, 1986, 7902, 651, 791, 7303} }, lighthouse = { topic = 39715, properties = {3563, 4055, 3223, 4423, 3723, 3993, 3562, 2980, 4038, 3920, 4143, 3863, 3601} }, ch = { topic = 39, properties = {902, 886, 3065, 781, 1362}, }, cz = {topic = 213, properties = {691}}, cl = {topic = 298, properties = {1890}}, es = {topic = 29, properties = {950, 9984}}, gr = {topic = 41, properties = {3348}}, hr = {topic = 224, properties = {1375}}, il = {topic = 801, properties = {8189, 1736}}, it = {topic = 38, properties = {396, 3863, 1986, 8034}}, ja = {topic = 17, properties = {349, 271}}, kr = {topic = 884, properties = {5034}}, lv = {topic = 211, properties = {1368}}, nl = {topic = 55, properties = {651, 1006, 650, 350}}, pl = {topic = 36, properties = {1695, 7293}}, ro = {topic = 218, properties = {1003}}, ru = {topic = 159, properties = {947}}, sv = {topic = 34, properties = {906, 5587}}, tr = {topic = 43, properties = {7314}}, tw = {topic = 865, properties = {1048}}, uy = {topic = 77, properties = {2558}} } p.auto_additional = { -- defines properties to check when additional=auto 527, -- has part(s) 150, -- contains the administrative territorial entity 355, -- has subsidiary } return p 9ae0144b113daabc4b65bcd79ccd0ae3152eea27 Template:Authority control/doc 10 1075 2348 2023-09-12T15:05:58Z wikipedia>Tholme 0 wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{High-use}} {{Template display|nomobile}} {{Lua|Module:Authority control|Module:Authority control/config|Module:Check for unknown parameters}} {{Uses Wikidata|section=Wikidata}} {{Authority control/related}} {{TOC right}} == Description == {{details|Authority control|Wikipedia:Authority control}} This template links Wikipedia articles to various library (and other) catalogue systems, for biographies and other topics. This template draws its values from [[Wikidata]]. A pencil icon [[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px]] gives convenient access to the "Identifiers" section of the corresponding Wikidata item. === Empty instances === If there is no information in Wikidata for the specific subject, an empty instance of this template will be ''dormant'', meaning it will be invisible on the rendered page. Thus, using this template on a page with no authority information is harmless. An empty instance of this template stays dormant in an article, until values are added to Wikidata, when it will then display them. === Validation === The template attempts to validate digits for all values and shows an error if the check fails. <!--Wherever possible, the template also generates a link to [[WorldCat Identities]], using VIAF or LCCN values, or manually via {{para|WORLDCATID}}.--> === Position === {{See also|Wikipedia:Manual of Style/Layout#Standard appendices and footers{{!}}Wikipedia:Manual of Style/Layout}} As a metadata template, the Authority control template should be placed on a new line, after the [[Wikipedia:External links|external links]] section and [[Wikipedia:Navigation templates|navigation templates]], immediately before the categories. ==Usage== :{{kbd|<nowiki>{{Authority control}}</nowiki>}} As a general guideline: # Insert the empty version # Click "[[Help:Show preview|Show preview]]" to see which sources are automatically pulled from Wikidata # If you know of more sources, add those sources to the article's [[WP:Wikidata#Access from Wikipedia|Wikidata item]], so that other language versions of Wikipedia will automatically benefit. === Suppression of identifiers === Identifiers can be selectively suppressed via the {{para|suppress}} parameter. For example {{Q|P434}} can be suppressed by typing: :{{kbd|<nowiki>{{Authority control |suppress=P434}}</nowiki>}} === Specifying the Wikidata item === If a page is not connected to a Wikidata item (for example, a page in draft space, user space or project space), you can specify the appropriate item to draw data from, by using the {{para|qid}} parameter. :{{kbd|<nowiki>{{Authority control |qid=Q49605590}}</nowiki>}} To find the correct item, you can [[wikidata:Special:Search|search the database]]. If there is not yet an existing item, you can [[wikidata:Special:NewItem|create a new item]]. As soon as the page is connected to a Wikidata item, this parameter will be ignored so you can remove it from the template. === Additional Wikidata items === In some cases, you might need to specify additional items to draw data from. For example, * [[Bonnie and Clyde]] also draws data from {{Q|Q2319886}} and {{Q|Q3320282}} * [[North Rona]] also draws data from {{Q|Q28831543}} To specify additional items, you can use the {{para|additional}} parameter. For example: {{kbd|<nowiki>{{Authority control | additional = Q2319886, Q3320282}}</nowiki>}} To automatically add additional links from related items, use {{para|additional|auto}}. This is useful for married couples, musical groups, etc. === Whitelists === A number of whitelists are configured, which allow only a limited selection of identifiers to be displayed. These can be used with the {{para|show}} parameter. For example, including {{para|show|arts}} will only show identifiers which have identified as particularly relevant to the arts. Multiple whitelists may be used. For example: {{kbd|<nowiki>{{Authority control|show=arts,SV}}</nowiki>}} adds identifiers from the arts and Sweden whitelists. {{para|country}} can be used as an alias for {{para|show}} (but they can't both be used simultaneously). {{collapse|{{#invoke:Authority control/documentation|whitelisttable}}|List of whitelists}} ==Examples== ;[[Victor Hugo]] <kbd><nowiki>{{Authority control |qid=Q535}}</nowiki></kbd> {{Authority control |qid=Q535}} ;[[Alexander Graham Bell]] <kbd><nowiki>{{Authority control |qid=Q34286}}</nowiki></kbd> {{Authority control |qid=Q34286}} ;[[Harry Forbes Witherby]]: <kbd><nowiki>{{Authority control |qid=Q352545}}</nowiki></kbd> {{Authority control |qid=Q352545}} ;[[Carl Larsson]]: <kbd><nowiki>{{Authority control (arts) |country=SV |qid=Q187310}}</nowiki></kbd> {{Authority control (arts) |country=SV |qid=Q187310}} == Rendering == The template is split into a number of sections, including "International", "National", "Academics", "Artists" etc. The template usually displays as a navbox with a header: {{Authority control |qid=Q921242}} If all identifiers are in the same section, {{para|state}} is ignored, and the template displays on one line. If you use additional qids to draw data from additional wikidata items, then a new section will be added for each. In this case, the identifiers will not be separated further: {{Authority control |qid=Q219937|additional=Q2319886,Q3320282}} {{collapsible option}} {{Anchor|Wikidata|Tracking categories}} === Microformat === The template wraps each UID value with the [[HTML]] markup: <code><nowiki><span class="uid">...</span></nowiki></code>, which enables the first-found value to be included in an [[hCard]] [[microformat]]. == List of identifiers == {{#ifexpr:{{PAGESINCAT:All articles with faulty authority control information}}|{{error|Warning: {{plural|{{PAGESINCAT:All articles with faulty authority control information}}|article has|articles have}} faulty authority control information}}, see [[:Category:All articles with faulty authority control information|All articles with faulty authority control information]].}} The template gets its information from the following properties on [[Wikidata]]: {{#invoke:Authority control/documentation{{#ifeq:{{SUBPAGENAME}}|sandbox|/sandbox}}|docConfTable|config={{#switch:{{SUBPAGENAME}}|sandbox=sandbox|staging=staging}}}} == Additional tracking categories == This template may add the following categories: * {{Category link with count|Pages with authority control identifiers needing attention|pages}} – category to track errors ** {{Category link with count|Pages using authority control with parameters}} – identifiers should be migrated to Wikidata ** {{Category link with count|All articles with faulty authority control information}} – faulty identifiers to fix === Error reports === {{Template error report}} ==See also== * [[Wikipedia:Authority control]] – editor information * [[Help:Authority control]] – reader help * [[Template:Taxonbar]] – authority control style template for taxonomic databases * [[Template:Sports links]] – authority control style template for sports articles * [[User:UBX/Authority control]] – for self-identifying as an AC user * [[:Commons:Template:Authority control]] – template on Commons == TemplateData == {{TemplateDataHeader}} <templatedata> { "description": "A template to link Wikipedia articles to various library catalogue systems", "params": { "state": { "description": "Initial state of the template", "type": "string", "suggestedvalues": [ "autocollapse", "expanded", "collapsed" ], "default": "autocollapse" }, "qid": { "label": "qid", "description": "Wikidata QID number for an article not yet connected to a Wikidata item. Once the article is connected to a Wikidata item, then this parameter will be ignored.", "example": "Q49605590", "type": "string" }, "suppress": { "description": "Comma-separated list of identifers to suppress from the template, in the form of the Wikidata property ID (e.g. P227),", "example": "P227, P1986", "type": "string" }, "additional": { "description": "Comma-seprated list of additional Wikidata QIDs of items to display data for. Each should be related and covered by the article.", "type": "string", "example": "Q28831543" }, "show": { "aliases": [ "country" ], "label": "whitelist", "example": "ES", "type": "string", "suggestedvalues": [ "arts" ], "suggested": true, "description": "Whitelist (e.g. arts) or country code (e.g. ES) or property (e.g. P214) to show. If not specified, then every supported identifier will be displayed." } }, "format": "\n{{_|_=_}}\n", "paramOrder": [ "show", "suppress", "qid", "additional", "state" ] } </templatedata> <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Wikipedia authority control]] [[Category:Templates using data from Wikidata]] [[Category:Templates that add a tracking category]] [[Category:External link templates using Wikidata]] }}</includeonly> d58567c78dce9fd58e573d100f1f9ec327aef132 Module:Unicode data 828 459 1031 2023-09-12T16:56:59Z wikipedia>Drmccreedy 0 Add new block for Unicode v15.1 Scribunto text/plain local p = {} local floor = math.floor local function errorf(level, ...) if type(level) == "number" then return error(string.format(...), level + 1) else -- level is actually the format string. return error(string.format(level, ...), 2) end end local function binary_range_search(codepoint, ranges) local low, mid, high low, high = 1, ranges.length or require "Module:TableTools".length(ranges) while low <= high do mid = floor((low + high) / 2) local range = ranges[mid] if codepoint < range[1] then high = mid - 1 elseif codepoint <= range[2] then return range, mid else low = mid + 1 end end return nil, mid end p.binary_range_search = binary_range_search --[[ local function linear_range_search(codepoint, ranges) for i, range in ipairs(ranges) do if range[1] <= codepoint and codepoint <= range[2] then return range end end end --]] -- Load a module by indexing "loader" with the name of the module minus the -- "Module:Unicode data/" part. For instance, loader.blocks returns -- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be -- returned. local loader = setmetatable({}, { __index = function (self, key) local success, data = pcall(mw.loadData, "Module:Unicode data/" .. key) if not success then data = false end self[key] = data return data end }) -- For the algorithm used to generate Hangul Syllable names, -- see "Hangul Syllable Name Generation" in section 3.12 of the -- Unicode Specification: -- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf local name_hooks = { { 0x00, 0x1F, "<control-%04X>" }, -- C0 control characters { 0x7F, 0x9F, "<control-%04X>" }, -- DEL and C1 control characters { 0x3400, 0x4DBF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension A { 0x4E00, 0x9FFF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph { 0xAC00, 0xD7A3, function (codepoint) -- Hangul Syllables local Hangul_data = loader.Hangul local syllable_index = codepoint - 0xAC00 return ("HANGUL SYLLABLE %s%s%s"):format( Hangul_data.leads[floor(syllable_index / Hangul_data.final_count)], Hangul_data.vowels[floor((syllable_index % Hangul_data.final_count) / Hangul_data.trail_count)], Hangul_data.trails[syllable_index % Hangul_data.trail_count] ) end }, -- High Surrogates, High Private Use Surrogates, Low Surrogates { 0xD800, 0xDFFF, "<surrogate-%04X>" }, { 0xE000, 0xF8FF, "<private-use-%04X>" }, -- Private Use -- CJK Compatibility Ideographs { 0xF900, 0xFA6D, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0xFA70, 0xFAD9, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0x17000, 0x187F7, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph { 0x18800, 0x18AFF, function (codepoint) return ("TANGUT COMPONENT-%03d"):format(codepoint - 0x187FF) end }, { 0x18D00, 0x18D08, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph Supplement { 0x1B170, 0x1B2FB, "NUSHU CHARACTER-%04X" }, -- Nushu { 0x20000, 0x2A6DF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension B { 0x2A700, 0x2B739, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension C { 0x2B740, 0x2B81D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension D { 0x2B820, 0x2CEA1, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension E { 0x2CEB0, 0x2EBE0, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension F -- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane) { 0x2F800, 0x2FA1D, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0xE0100, 0xE01EF, function (codepoint) -- Variation Selectors Supplement return ("VARIATION SELECTOR-%d"):format(codepoint - 0xE0100 + 17) end}, { 0x30000, 0x3134A, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension G { 0x31350, 0x323AF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension H { 0x2EBF0, 0x2EE5D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension I { 0xF0000, 0xFFFFD, "<private-use-%04X>" }, -- Plane 15 Private Use { 0x100000, 0x10FFFD, "<private-use-%04X>" } -- Plane 16 Private Use } name_hooks.length = #name_hooks local name_range_cache local function generate_name(data, codepoint) if type(data) == "string" then return data:format(codepoint) else return data(codepoint) end end --[[ -- Checks that the code point is a number and in range. -- Does not check whether code point is an integer. -- Not used local function check_codepoint(funcName, argIdx, val) require 'libraryUtil'.checkType(funcName, argIdx, val, 'number') if codepoint < 0 or 0x10FFFF < codepoint then errorf("Codepoint %04X out of range", codepoint) end end --]] -- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8 function p.lookup_name(codepoint) -- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned -- (Cn) and specifically noncharacters: -- https://www.unicode.org/faq/private_use.html#nonchar4 if 0xFDD0 <= codepoint and (codepoint <= 0xFDEF or floor(codepoint % 0x10000) >= 0xFFFE) then return ("<noncharacter-%04X>"):format(codepoint) end if name_range_cache -- Check if previously used "name hook" applies to this code point. and codepoint >= name_range_cache[1] and codepoint <= name_range_cache[2] then return generate_name(name_range_cache[3], codepoint) end local range = binary_range_search(codepoint, name_hooks) if range then name_range_cache = range return generate_name(range[3], codepoint) end local data = loader[('names/%03X'):format(codepoint / 0x1000)] if data and data[codepoint] then return data[codepoint] -- Unassigned (Cn) consists of noncharacters and reserved characters. -- The character has been established not to be a noncharacter, -- and if it were assigned, its name would already been retrieved, -- so it must be reserved. else return ("<reserved-%04X>"):format(codepoint) end end --[[ -- No image data modules on Wikipedia yet. function p.lookup_image(codepoint) local data = loader[('images/%03X'):format(codepoint / 0x1000)] if data then return data[codepoint] end end --]] local planes = { [ 0] = "Basic Multilingual Plane"; [ 1] = "Supplementary Multilingual Plane"; [ 2] = "Supplementary Ideographic Plane"; [ 3] = "Tertiary Ideographic Plane"; [14] = "Supplementary Special-purpose Plane"; [15] = "Supplementary Private Use Area-A"; [16] = "Supplementary Private Use Area-B"; } -- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable. local blocks local function block_iter(blocks, i) i = i + 1 local data = blocks[i] if data then -- Unpack doesn't work on tables loaded with mw.loadData. return i, data[1], data[2], data[3] end end -- An ipairs-type iterator generator for the list of blocks. function p.enum_blocks() local blocks = loader.blocks return block_iter, blocks, 0 end function p.lookup_plane(codepoint) local i = floor(codepoint / 0x10000) return planes[i] or ("Plane %u"):format(i) end function p.lookup_block(codepoint) local blocks = loader.blocks local range = binary_range_search(codepoint, blocks) if range then return range[3] else return "No Block" end end function p.get_block_info(name) for i, block in ipairs(loader.blocks) do if block[3] == name then return block end end end function p.is_valid_pagename(pagename) local has_nonws = false for cp in mw.ustring.gcodepoint(pagename) do if (cp == 0x0023) -- # or (cp == 0x005B) -- [ or (cp == 0x005D) -- ] or (cp == 0x007B) -- { or (cp == 0x007C) -- | or (cp == 0x007D) -- } or (cp == 0x180E) -- MONGOLIAN VOWEL SEPARATOR or ((cp >= 0x2000) and (cp <= 0x200A)) -- spaces in General Punctuation block or (cp == 0xFFFD) -- REPLACEMENT CHARACTER then return false end local printable, result = p.is_printable(cp) if not printable then return false end if result ~= "space-separator" then has_nonws = true end end return has_nonws end local function manual_unpack(what, from) if what[from + 1] == nil then return what[from] end local result = {} from = from or 1 for i, item in ipairs(what) do if i >= from then table.insert(result, item) end end return unpack(result) end local function compare_ranges(range1, range2) return range1[1] < range2[1] end -- Creates a function to look up data in a module that contains "singles" (a -- code point-to-data map) and "ranges" (an array containing arrays that contain -- the low and high code points of a range and the data associated with that -- range). -- "loader" loads and returns the "singles" and "ranges" tables. -- "match_func" is passed the code point and either the data or the "dots", and -- generates the final result of the function. -- The varargs ("dots") describes the default data to be returned if there wasn't -- a match. -- In case the function is used more than once, "cache" saves ranges that have -- already been found to match, or a range whose data is the default if there -- was no match. local function memo_lookup(data_module_subpage, match_func, ...) local dots = { ... } local cache = {} local singles, ranges return function (codepoint) if not singles then local data_module = loader[data_module_subpage] singles, ranges = data_module.singles, data_module.ranges end if singles[codepoint] then return match_func(codepoint, singles[codepoint]) end local range = binary_range_search(codepoint, cache) if range then return match_func(codepoint, manual_unpack(range, 3)) end local range, index = binary_range_search(codepoint, ranges) if range then table.insert(cache, range) table.sort(cache, compare_ranges) return match_func(codepoint, manual_unpack(range, 3)) end if ranges[index] then local dots_range if codepoint > ranges[index][2] then dots_range = { ranges[index][2] + 1, ranges[index + 1] and ranges[index + 1][1] - 1 or 0x10FFFF, unpack(dots) } else -- codepoint < range[index][1] dots_range = { ranges[index - 1] and ranges[index - 1][2] + 1 or 0, ranges[index][1] - 1, unpack(dots) } end table.sort(cache, compare_ranges) end return match_func(codepoint) end end -- Get a code point's combining class value in [[Module:Unicode data/combining]], -- and return whether this value is not zero. Zero is assigned as the default -- if the combining class value is not found in this data module. -- That is, return true if character is combining, or false if it is not. -- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for -- more information. p.is_combining = memo_lookup( "combining", function (codepoint, combining_class) return combining_class and combining_class ~= 0 or false end, 0) function p.add_dotted_circle(str) return (mw.ustring.gsub(str, ".", function(char) if p.is_combining(mw.ustring.codepoint(char)) then return '◌' .. char end end)) end local lookup_control = memo_lookup( "control", function (codepoint, ccc) return ccc or "assigned" end, "assigned") p.lookup_control = lookup_control function p.is_assigned(codepoint) return lookup_control(codepoint) ~= "unassigned" end function p.is_printable(codepoint) local result = lookup_control(codepoint) return (result == "assigned") or (result == "space-separator"), result end function p.is_whitespace(codepoint) local result = lookup_control(codepoint) return (result == "space-separator"), result end p.lookup_category = memo_lookup( "category", function (codepoint, category) return category end, "Cn") local lookup_script = memo_lookup( "scripts", function (codepoint, script_code) return script_code or 'Zzzz' end, "Zzzz") p.lookup_script = lookup_script function p.get_best_script(str) -- Check type of argument, because mw.text.decode coerces numbers to strings! require "libraryUtil".checkType("get_best_script", 1, str, "string") -- Convert HTML character references (including named character references, -- or character entities) to characters. str = mw.text.decode(str, true) local scripts = {} for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) -- Ignore "Inherited", "Undetermined", or "Uncoded" scripts. if not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then scripts[script] = true end end -- If scripts does not contain two or more keys, -- return first and only key (script code) in table. if not next(scripts, next(scripts)) then return next(scripts) end -- else return majority script, or else "Zzzz"? end function p.is_Latin(str) require "libraryUtil".checkType("get_best_script", 1, str, "string") str = mw.text.decode(str, true) -- Search for the leading bytes that introduce the UTF-8 encoding of the -- code points U+0340-U+10FFFF. If they are not found and there is at least -- one Latin-script character, the string counts as Latin, because the rest -- of the characters can only be Zyyy, Zinh, and Zzzz. -- The only scripts found below U+0370 (the first code point of the Greek -- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz. -- See the codepage in the [[UTF-8]] article. if not str:find "[\205-\244]" then for codepoint in mw.ustring.gcodepoint(str) do if lookup_script(codepoint) == "Latn" then return true end end end local Latn = false for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) if script == "Latn" then Latn = true elseif not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then return false end end return Latn end -- Checks that a string contains only characters belonging to right-to-left -- scripts, or characters of ignorable scripts. function p.is_rtl(str) require "libraryUtil".checkType("get_best_script", 1, str, "string") str = mw.text.decode(str, true) -- Search for the leading bytes that introduce the UTF-8 encoding of the -- code points U+0580-U+10FFFF. If they are not found, the string can only -- have characters from a left-to-right script, because the first code point -- in a right-to-left script is U+0591, in the Hebrew block. if not str:find "[\214-\244]" then return false end local result = false local rtl = loader.scripts.rtl for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) if rtl[script] then result = true elseif not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then return false end end return result end --[[--------------------------< I S _ R T L _ F R A M E >------------------------------------------------------ external entry from an {{#invoke:}} to determine if a string of text is rtl. Strips html and html-like tags so that those tags don't corrupt the is-rtl-is-not-rtl determination; this added for the cases where the rtl text has <br /> tags. ]] function p.is_rtl_frame (frame) local str = frame.args[1]; -- get the string from the {{#invoke:}} frame str = str:gsub ('%b<>', ''); -- strip any html and html-like tags return p.is_rtl (str); -- return if whatever remains rtl; false else end local function get_codepoint(args, arg) local codepoint_string = args[arg] or errorf(2, "Parameter %s is required", tostring(arg)) local codepoint = tonumber(codepoint_string, 16) or errorf(2, "Parameter %s is not a code point in hexadecimal base", tostring(arg)) if not (0 <= codepoint and codepoint <= 0x10FFFF) then errorf(2, "code point in parameter %s out of range", tostring(arg)) end return codepoint end local function get_func(args, arg, prefix) local suffix = args[arg] or errorf(2, "Parameter %s is required", tostring(arg)) suffix = mw.text.trim(suffix) local func_name = prefix .. suffix local func = p[func_name] or errorf(2, "There is no function '%s'", func_name) return func end -- This function allows any of the "lookup" functions to be invoked. The first -- parameter is the word after "lookup_"; the second parameter is the code point -- in hexadecimal base. function p.lookup(frame) local func = get_func(frame.args, 1, "lookup_") local codepoint = get_codepoint(frame.args, 2) local result = func(codepoint) if func == p.lookup_name then -- Prevent code point labels such as <control-0000> from being -- interpreted as HTML tags. result = result:gsub("<", "&lt;") end return result end function p.is(frame) local func = get_func(frame.args, 1, "is_") -- is_Latin and is_valid_pagename take strings. if func == p.is_Latin or func == p.is_valid_pagename or func == p.is_rtl then return (func(frame.args[2])) else -- The rest take code points. local codepoint = get_codepoint(frame.args, 2) return (func(codepoint)) -- Adjust to one result. end end return p 898b5f0689e2646f633acbbd08143920c87abef2 Template:ISO 15924 alias 10 1603 2938 2023-09-12T21:58:30Z w>Drmccreedy 0 bump Unicode version to 15.1 wikitext text/x-wiki <!-- As of 2023-08-07 this is the complete list of 166 Unicode 15.1 code-to-alias script IDs (Property Value Alias) by ISO 15924/Unicode Expected input: "alpha4=" OR "1=" (an existing ISO 15924 code in alpha4, eg "Latn") -->{{#switch:{{ISO 15924 code|{{{alpha4|{{{1|}}}}}}}} | Adlm = Adlam | Aghb = Caucasian Albanian | Ahom = Ahom | Arab = Arabic | Armi = Imperial Aramaic | Armn = Armenian | Avst = Avestan | Bali = Balinese | Bamu = Bamum | Bass = Bassa Vah | Batk = Batak | Beng = Bengali | Bhks = Bhaiksuki | Bopo = Bopomofo | Brah = Brahmi | Brai = Braille | Bugi = Buginese | Buhd = Buhid | Cakm = Chakma | Cans = Canadian Aboriginal | Cari = Carian | Cham = Cham | Cher = Cherokee | Chrs = Chorasmian | Copt = Coptic | Cpmn = Cypro Minoan | Cprt = Cypriot | Cyrl = Cyrillic | Deva = Devanagari | Diak = Dives Akuru | Dogr = Dogra | Dsrt = Deseret | Dupl = Duployan | Egyp = Egyptian Hieroglyphs | Elba = Elbasan | Elym = Elymaic | Ethi = Ethiopic | Geok = Georgian | Geor = Georgian | Glag = Glagolitic | Gong = Gunjala Gondi | Gonm = Masaram Gondi | Goth = Gothic | Gran = Grantha | Grek = Greek | Gujr = Gujarati | Guru = Gurmukhi | Hang = Hangul | Hani = Han | Hano = Hanunoo | Hatr = Hatran | Hebr = Hebrew | Hira = Hiragana | Hluw = Anatolian Hieroglyphs | Hmng = Pahawh Hmong | Hmnp = Nyiakeng Puachue Hmong | Hrkt = Katakana or Hiragana | Hung = Old Hungarian | Ital = Old Italic | Java = Javanese | Kali = Kayah Li | Kana = Katakana | Kawi = Kawi | Khar = Kharoshthi | Khmr = Khmer | Khoj = Khojki | Kits = Khitan Small Script | Knda = Kannada | Kthi = Kaithi | Lana = Tai Tham | Laoo = Lao | Latn = Latin | Lepc = Lepcha | Limb = Limbu | Lina = Linear A | Linb = Linear B | Lisu = Lisu | Lyci = Lycian | Lydi = Lydian | Mahj = Mahajani | Maka = Makasar | Mand = Mandaic | Mani = Manichaean | Marc = Marchen | Medf = Medefaidrin | Mend = Mende Kikakui | Merc = Meroitic Cursive | Mero = Meroitic Hieroglyphs | Mlym = Malayalam | Modi = Modi | Mong = Mongolian | Mroo = Mro | Mtei = Meetei Mayek | Mult = Multani | Mymr = Myanmar | Nagm = Nag Mundari | Nand = Nandinagari | Narb = Old North Arabian | Nbat = Nabataean | Newa = Newa | Nkoo = NKo | Nshu = Nushu | Ogam = Ogham | Olck = Ol Chiki | Orkh = Old Turkic | Orya = Oriya | Osge = Osage | Osma = Osmanya | Ougr = Old Uyghur | Palm = Palmyrene | Pauc = Pau Cin Hau | Perm = Old Permic | Phag = Phags-pa | Phli = Inscriptional Pahlavi | Phlp = Psalter Pahlavi | Phnx = Phoenician | Plrd = Miao | Prti = Inscriptional Parthian | Rjng = Rejang | Rohg = Hanifi Rohingya | Runr = Runic | Samr = Samaritan | Sarb = Old South Arabian | Saur = Saurashtra | Sgnw = SignWriting | Shaw = Shavian | Shrd = Sharada | Sidd = Siddham | Sind = Khudawadi | Sinh = Sinhala | Sogd = Sogdian | Sogo = Old Sogdian | Sora = Sora Sompeng | Soyo = Soyombo | Sund = Sundanese | Sylo = Syloti Nagri | Syrc = Syriac | Tagb = Tagbanwa | Takr = Takri | Tale = Tai Le | Talu = New Tai Lue | Taml = Tamil | Tang = Tangut | Tavt = Tai Viet | Telu = Telugu | Tfng = Tifinagh | Tglg = Tagalog | Thaa = Thaana | Thai = Thai | Tibt = Tibetan | Tirh = Tirhuta | Tnsa = Tangsa | Toto = Toto | Ugar = Ugaritic | Vaii = Vai | Vith = Vithkuqi | Wara = Warang Citi | Wcho = Wancho | Xpeo = Old Persian | Xsux = Cuneiform | Yezi = Yezidi | Yiii = Yi | Zanb = Zanabazar Square | Zinh = Inherited | Zyyy = Common | Zzzz = Unknown | #default = {{{default|}}} }}<!-- --><noinclude>{{documentation}}</noinclude> 2e5d96a69b08aab71ee4c8e0540fa6b89a70744f Template:Markup 10 581 1310 2023-09-13T11:00:00Z wikipedia>Nardog 0 fix conditional wikitext text/x-wiki <includeonly>{| style="{{#if:{{{width|}}}|width:{{{width}}};}} margin-top:0;margin-left:{{{margin-left|{{{margin|0}}}}}}; border-width:medium; padding:0; {{{style|}}}" {{#if:{{{title|}}} |{{!}}+ '''{{{title}}}'''}} {{#if:{{{noheaders|}}}{{{notitle|}}} | |! scope="col" style="width:50%;{{{colheaderstyle|}}}{{{col1headerstyle|}}}"{{!}} {{{col1|{{{t1|Markup}}}}}} {{!!}}<!-- -->scope="col" style="width:50%;{{{colheaderstyle|}}}{{{col2headerstyle|}}}"{{!}} {{{col2|{{{t2|Renders as}}}}}} }}<!-- -->{{For loop||call=format item|pc1n=template|pc1v=Markup/row|pc2n=c1style|pc2v={{{col1style|{{{codestyle|{{{markupstyle|}}}}}}}}}|pc3n=c2style|pc3v={{{col2style|{{{outputstyle|}}}}}}|pv=item|{{item|c1={{{1|}}}|c2={{{2|}}}}}|{{item|c1={{{3|}}}|c2={{{4|}}}}}|{{item|c1={{{5|}}}|c2={{{6|}}}}}|{{item|c1={{{7|}}}|c2={{{8|}}}}}|{{item|c1={{{9|}}}|c2={{{10|}}}}}|{{item|c1={{{11|}}}|c2={{{12|}}}}}|{{item|c1={{{13|}}}|c2={{{14|}}}}}|{{item|c1={{{15|}}}|c2={{{16|}}}}}|{{item|c1={{{17|}}}|c2={{{18|}}}}}|{{item|c1={{{19|}}}|c2={{{20|}}}}}|{{item|c1={{{21|}}}|c2={{{22|}}}}}|{{item|c1={{{23|}}}|c2={{{24|}}}}}|{{item|c1={{{25|}}}|c2={{{26|}}}}}|{{item|c1={{{27|}}}|c2={{{28|}}}}}|{{item|c1={{{29|}}}|c2={{{30|}}}}}|{{item|c1={{{31|}}}|c2={{{32|}}}}}|{{item|c1={{{33|}}}|c2={{{34|}}}}}|{{item|c1={{{35|}}}|c2={{{36|}}}}}|{{item|c1={{{37|}}}|c2={{{38|}}}}}|{{item|c1={{{39|}}}|c2={{{40|}}}}}}} |- |style="border-width:1px;border-style: none none none;border-color:#ddd; padding:5px; vertical-align:top;"| |style="border-width:1px;border-style: none none none;border-color:#ddd; padding:5px; vertical-align:top;"| |}</includeonly><noinclude> {{Documentation}} </noinclude> 8f9e78df3cd9801aa6cb36c463195df132394e9a Module:Unicode data/scripts 828 477 1047 2023-09-13T19:41:55Z wikipedia>Drmccreedy 0 Update for Unicode v15.1 Scribunto text/plain --[=[ -- Official Unicode script values for individual codepoints and ranges of -- codepoints. -- https://www.unicode.org/Public/UNIDATA/Scripts.txt provided -- the script names, and https://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt -- provided script codes corresponding to the names (see [[Script (Unicode)]]). --]=] local data = { singles = { [0x000AA] = "Latn", [0x000BA] = "Latn", [0x000D7] = "Zyyy", [0x000F7] = "Zyyy", [0x00374] = "Zyyy", [0x0037E] = "Zyyy", [0x0037F] = "Grek", [0x00384] = "Grek", [0x00385] = "Zyyy", [0x00386] = "Grek", [0x00387] = "Zyyy", [0x0038C] = "Grek", [0x00605] = "Zyyy", [0x0060C] = "Zyyy", [0x0061B] = "Zyyy", [0x0061F] = "Zyyy", [0x00640] = "Zyyy", [0x00670] = "Zinh", [0x006DD] = "Zyyy", [0x0085E] = "Mand", [0x008E2] = "Zyyy", [0x009B2] = "Beng", [0x009D7] = "Beng", [0x00A3C] = "Guru", [0x00A51] = "Guru", [0x00A5E] = "Guru", [0x00AD0] = "Gujr", [0x00B9C] = "Taml", [0x00BD0] = "Taml", [0x00BD7] = "Taml", [0x00C5D] = "Telu", [0x00DBD] = "Sinh", [0x00DCA] = "Sinh", [0x00DD6] = "Sinh", [0x00E3F] = "Zyyy", [0x00E84] = "Laoo", [0x00EA5] = "Laoo", [0x00EC6] = "Laoo", [0x010C7] = "Geor", [0x010CD] = "Geor", [0x010FB] = "Zyyy", [0x01258] = "Ethi", [0x012C0] = "Ethi", [0x0171F] = "Tglg", [0x01804] = "Mong", [0x01805] = "Zyyy", [0x01940] = "Limb", [0x01CD3] = "Zyyy", [0x01CE1] = "Zyyy", [0x01CED] = "Zinh", [0x01CF4] = "Zinh", [0x01CFA] = "Zyyy", [0x01D2B] = "Cyrl", [0x01D78] = "Cyrl", [0x01DBF] = "Grek", [0x01F59] = "Grek", [0x01F5B] = "Grek", [0x01F5D] = "Grek", [0x02071] = "Latn", [0x0207F] = "Latn", [0x02126] = "Grek", [0x02132] = "Latn", [0x0214E] = "Latn", [0x02D27] = "Geor", [0x02D2D] = "Geor", [0x02D7F] = "Tfng", [0x03005] = "Hani", [0x03006] = "Zyyy", [0x03007] = "Hani", [0x030A0] = "Zyyy", [0x031EF] = "Zyyy", [0x032FF] = "Zyyy", [0x0A7D3] = "Latn", [0x0A92E] = "Zyyy", [0x0A92F] = "Kali", [0x0A95F] = "Rjng", [0x0A9CF] = "Zyyy", [0x0AB5B] = "Zyyy", [0x0AB65] = "Grek", [0x0FB3E] = "Hebr", [0x0FDCF] = "Arab", [0x0FEFF] = "Zyyy", [0x0FF70] = "Zyyy", [0x101A0] = "Grek", [0x101FD] = "Zinh", [0x102E0] = "Zinh", [0x1039F] = "Ugar", [0x1056F] = "Aghb", [0x10808] = "Cprt", [0x1083C] = "Cprt", [0x1083F] = "Cprt", [0x1091F] = "Phnx", [0x1093F] = "Lydi", [0x1107F] = "Brah", [0x110CD] = "Kthi", [0x11288] = "Mult", [0x1133B] = "Zinh", [0x11350] = "Gran", [0x11357] = "Gran", [0x118FF] = "Wara", [0x11909] = "Diak", [0x11D3A] = "Gonm", [0x11FB0] = "Lisu", [0x11FFF] = "Taml", [0x16FE0] = "Tang", [0x16FE1] = "Nshu", [0x16FE4] = "Kits", [0x1B000] = "Kana", [0x1B132] = "Hira", [0x1B155] = "Kana", [0x1D4A2] = "Zyyy", [0x1D4BB] = "Zyyy", [0x1D546] = "Zyyy", [0x1E08F] = "Cyrl", [0x1E2FF] = "Wcho", [0x1EE24] = "Arab", [0x1EE27] = "Arab", [0x1EE39] = "Arab", [0x1EE3B] = "Arab", [0x1EE42] = "Arab", [0x1EE47] = "Arab", [0x1EE49] = "Arab", [0x1EE4B] = "Arab", [0x1EE54] = "Arab", [0x1EE57] = "Arab", [0x1EE59] = "Arab", [0x1EE5B] = "Arab", [0x1EE5D] = "Arab", [0x1EE5F] = "Arab", [0x1EE64] = "Arab", [0x1EE7E] = "Arab", [0x1F200] = "Hira", [0x1F7F0] = "Zyyy", [0xE0001] = "Zyyy", }, ranges = { { 0x00000, 0x00040, "Zyyy" }, { 0x00041, 0x0005A, "Latn" }, { 0x0005B, 0x00060, "Zyyy" }, { 0x00061, 0x0007A, "Latn" }, { 0x0007B, 0x000A9, "Zyyy" }, { 0x000AB, 0x000B9, "Zyyy" }, { 0x000BB, 0x000BF, "Zyyy" }, { 0x000C0, 0x000D6, "Latn" }, { 0x000D8, 0x000F6, "Latn" }, { 0x000F8, 0x002B8, "Latn" }, { 0x002B9, 0x002DF, "Zyyy" }, { 0x002E0, 0x002E4, "Latn" }, { 0x002E5, 0x002E9, "Zyyy" }, { 0x002EA, 0x002EB, "Bopo" }, { 0x002EC, 0x002FF, "Zyyy" }, { 0x00300, 0x0036F, "Zinh" }, { 0x00370, 0x00373, "Grek" }, { 0x00375, 0x00377, "Grek" }, { 0x0037A, 0x0037D, "Grek" }, { 0x00388, 0x0038A, "Grek" }, { 0x0038E, 0x003A1, "Grek" }, { 0x003A3, 0x003E1, "Grek" }, { 0x003E2, 0x003EF, "Copt" }, { 0x003F0, 0x003FF, "Grek" }, { 0x00400, 0x00484, "Cyrl" }, { 0x00485, 0x00486, "Zinh" }, { 0x00487, 0x0052F, "Cyrl" }, { 0x00531, 0x00556, "Armn" }, { 0x00559, 0x0058A, "Armn" }, { 0x0058D, 0x0058F, "Armn" }, { 0x00591, 0x005C7, "Hebr" }, { 0x005D0, 0x005EA, "Hebr" }, { 0x005EF, 0x005F4, "Hebr" }, { 0x00600, 0x00604, "Arab" }, { 0x00606, 0x0060B, "Arab" }, { 0x0060D, 0x0061A, "Arab" }, { 0x0061C, 0x0061E, "Arab" }, { 0x00620, 0x0063F, "Arab" }, { 0x00641, 0x0064A, "Arab" }, { 0x0064B, 0x00655, "Zinh" }, { 0x00656, 0x0066F, "Arab" }, { 0x00671, 0x006DC, "Arab" }, { 0x006DE, 0x006FF, "Arab" }, { 0x00700, 0x0070D, "Syrc" }, { 0x0070F, 0x0074A, "Syrc" }, { 0x0074D, 0x0074F, "Syrc" }, { 0x00750, 0x0077F, "Arab" }, { 0x00780, 0x007B1, "Thaa" }, { 0x007C0, 0x007FA, "Nkoo" }, { 0x007FD, 0x007FF, "Nkoo" }, { 0x00800, 0x0082D, "Samr" }, { 0x00830, 0x0083E, "Samr" }, { 0x00840, 0x0085B, "Mand" }, { 0x00860, 0x0086A, "Syrc" }, { 0x00870, 0x0088E, "Arab" }, { 0x00890, 0x00891, "Arab" }, { 0x00898, 0x008E1, "Arab" }, { 0x008E3, 0x008FF, "Arab" }, { 0x00900, 0x00950, "Deva" }, { 0x00951, 0x00954, "Zinh" }, { 0x00955, 0x00963, "Deva" }, { 0x00964, 0x00965, "Zyyy" }, { 0x00966, 0x0097F, "Deva" }, { 0x00980, 0x00983, "Beng" }, { 0x00985, 0x0098C, "Beng" }, { 0x0098F, 0x00990, "Beng" }, { 0x00993, 0x009A8, "Beng" }, { 0x009AA, 0x009B0, "Beng" }, { 0x009B6, 0x009B9, "Beng" }, { 0x009BC, 0x009C4, "Beng" }, { 0x009C7, 0x009C8, "Beng" }, { 0x009CB, 0x009CE, "Beng" }, { 0x009DC, 0x009DD, "Beng" }, { 0x009DF, 0x009E3, "Beng" }, { 0x009E6, 0x009FE, "Beng" }, { 0x00A01, 0x00A03, "Guru" }, { 0x00A05, 0x00A0A, "Guru" }, { 0x00A0F, 0x00A10, "Guru" }, { 0x00A13, 0x00A28, "Guru" }, { 0x00A2A, 0x00A30, "Guru" }, { 0x00A32, 0x00A33, "Guru" }, { 0x00A35, 0x00A36, "Guru" }, { 0x00A38, 0x00A39, "Guru" }, { 0x00A3E, 0x00A42, "Guru" }, { 0x00A47, 0x00A48, "Guru" }, { 0x00A4B, 0x00A4D, "Guru" }, { 0x00A59, 0x00A5C, "Guru" }, { 0x00A66, 0x00A76, "Guru" }, { 0x00A81, 0x00A83, "Gujr" }, { 0x00A85, 0x00A8D, "Gujr" }, { 0x00A8F, 0x00A91, "Gujr" }, { 0x00A93, 0x00AA8, "Gujr" }, { 0x00AAA, 0x00AB0, "Gujr" }, { 0x00AB2, 0x00AB3, "Gujr" }, { 0x00AB5, 0x00AB9, "Gujr" }, { 0x00ABC, 0x00AC5, "Gujr" }, { 0x00AC7, 0x00AC9, "Gujr" }, { 0x00ACB, 0x00ACD, "Gujr" }, { 0x00AE0, 0x00AE3, "Gujr" }, { 0x00AE6, 0x00AF1, "Gujr" }, { 0x00AF9, 0x00AFF, "Gujr" }, { 0x00B01, 0x00B03, "Orya" }, { 0x00B05, 0x00B0C, "Orya" }, { 0x00B0F, 0x00B10, "Orya" }, { 0x00B13, 0x00B28, "Orya" }, { 0x00B2A, 0x00B30, "Orya" }, { 0x00B32, 0x00B33, "Orya" }, { 0x00B35, 0x00B39, "Orya" }, { 0x00B3C, 0x00B44, "Orya" }, { 0x00B47, 0x00B48, "Orya" }, { 0x00B4B, 0x00B4D, "Orya" }, { 0x00B55, 0x00B57, "Orya" }, { 0x00B5C, 0x00B5D, "Orya" }, { 0x00B5F, 0x00B63, "Orya" }, { 0x00B66, 0x00B77, "Orya" }, { 0x00B82, 0x00B83, "Taml" }, { 0x00B85, 0x00B8A, "Taml" }, { 0x00B8E, 0x00B90, "Taml" }, { 0x00B92, 0x00B95, "Taml" }, { 0x00B99, 0x00B9A, "Taml" }, { 0x00B9E, 0x00B9F, "Taml" }, { 0x00BA3, 0x00BA4, "Taml" }, { 0x00BA8, 0x00BAA, "Taml" }, { 0x00BAE, 0x00BB9, "Taml" }, { 0x00BBE, 0x00BC2, "Taml" }, { 0x00BC6, 0x00BC8, "Taml" }, { 0x00BCA, 0x00BCD, "Taml" }, { 0x00BE6, 0x00BFA, "Taml" }, { 0x00C00, 0x00C0C, "Telu" }, { 0x00C0E, 0x00C10, "Telu" }, { 0x00C12, 0x00C28, "Telu" }, { 0x00C2A, 0x00C39, "Telu" }, { 0x00C3C, 0x00C44, "Telu" }, { 0x00C46, 0x00C48, "Telu" }, { 0x00C4A, 0x00C4D, "Telu" }, { 0x00C55, 0x00C56, "Telu" }, { 0x00C58, 0x00C5A, "Telu" }, { 0x00C60, 0x00C63, "Telu" }, { 0x00C66, 0x00C6F, "Telu" }, { 0x00C77, 0x00C7F, "Telu" }, { 0x00C80, 0x00C8C, "Knda" }, { 0x00C8E, 0x00C90, "Knda" }, { 0x00C92, 0x00CA8, "Knda" }, { 0x00CAA, 0x00CB3, "Knda" }, { 0x00CB5, 0x00CB9, "Knda" }, { 0x00CBC, 0x00CC4, "Knda" }, { 0x00CC6, 0x00CC8, "Knda" }, { 0x00CCA, 0x00CCD, "Knda" }, { 0x00CD5, 0x00CD6, "Knda" }, { 0x00CDD, 0x00CDE, "Knda" }, { 0x00CE0, 0x00CE3, "Knda" }, { 0x00CE6, 0x00CEF, "Knda" }, { 0x00CF1, 0x00CF3, "Knda" }, { 0x00D00, 0x00D0C, "Mlym" }, { 0x00D0E, 0x00D10, "Mlym" }, { 0x00D12, 0x00D44, "Mlym" }, { 0x00D46, 0x00D48, "Mlym" }, { 0x00D4A, 0x00D4F, "Mlym" }, { 0x00D54, 0x00D63, "Mlym" }, { 0x00D66, 0x00D7F, "Mlym" }, { 0x00D81, 0x00D83, "Sinh" }, { 0x00D85, 0x00D96, "Sinh" }, { 0x00D9A, 0x00DB1, "Sinh" }, { 0x00DB3, 0x00DBB, "Sinh" }, { 0x00DC0, 0x00DC6, "Sinh" }, { 0x00DCF, 0x00DD4, "Sinh" }, { 0x00DD8, 0x00DDF, "Sinh" }, { 0x00DE6, 0x00DEF, "Sinh" }, { 0x00DF2, 0x00DF4, "Sinh" }, { 0x00E01, 0x00E3A, "Thai" }, { 0x00E40, 0x00E5B, "Thai" }, { 0x00E81, 0x00E82, "Laoo" }, { 0x00E86, 0x00E8A, "Laoo" }, { 0x00E8C, 0x00EA3, "Laoo" }, { 0x00EA7, 0x00EBD, "Laoo" }, { 0x00EC0, 0x00EC4, "Laoo" }, { 0x00EC8, 0x00ECE, "Laoo" }, { 0x00ED0, 0x00ED9, "Laoo" }, { 0x00EDC, 0x00EDF, "Laoo" }, { 0x00F00, 0x00F47, "Tibt" }, { 0x00F49, 0x00F6C, "Tibt" }, { 0x00F71, 0x00F97, "Tibt" }, { 0x00F99, 0x00FBC, "Tibt" }, { 0x00FBE, 0x00FCC, "Tibt" }, { 0x00FCE, 0x00FD4, "Tibt" }, { 0x00FD5, 0x00FD8, "Zyyy" }, { 0x00FD9, 0x00FDA, "Tibt" }, { 0x01000, 0x0109F, "Mymr" }, { 0x010A0, 0x010C5, "Geor" }, { 0x010D0, 0x010FA, "Geor" }, { 0x010FC, 0x010FF, "Geor" }, { 0x01100, 0x011FF, "Hang" }, { 0x01200, 0x01248, "Ethi" }, { 0x0124A, 0x0124D, "Ethi" }, { 0x01250, 0x01256, "Ethi" }, { 0x0125A, 0x0125D, "Ethi" }, { 0x01260, 0x01288, "Ethi" }, { 0x0128A, 0x0128D, "Ethi" }, { 0x01290, 0x012B0, "Ethi" }, { 0x012B2, 0x012B5, "Ethi" }, { 0x012B8, 0x012BE, "Ethi" }, { 0x012C2, 0x012C5, "Ethi" }, { 0x012C8, 0x012D6, "Ethi" }, { 0x012D8, 0x01310, "Ethi" }, { 0x01312, 0x01315, "Ethi" }, { 0x01318, 0x0135A, "Ethi" }, { 0x0135D, 0x0137C, "Ethi" }, { 0x01380, 0x01399, "Ethi" }, { 0x013A0, 0x013F5, "Cher" }, { 0x013F8, 0x013FD, "Cher" }, { 0x01400, 0x0167F, "Cans" }, { 0x01680, 0x0169C, "Ogam" }, { 0x016A0, 0x016EA, "Runr" }, { 0x016EB, 0x016ED, "Zyyy" }, { 0x016EE, 0x016F8, "Runr" }, { 0x01700, 0x01715, "Tglg" }, { 0x01720, 0x01734, "Hano" }, { 0x01735, 0x01736, "Zyyy" }, { 0x01740, 0x01753, "Buhd" }, { 0x01760, 0x0176C, "Tagb" }, { 0x0176E, 0x01770, "Tagb" }, { 0x01772, 0x01773, "Tagb" }, { 0x01780, 0x017DD, "Khmr" }, { 0x017E0, 0x017E9, "Khmr" }, { 0x017F0, 0x017F9, "Khmr" }, { 0x01800, 0x01801, "Mong" }, { 0x01802, 0x01803, "Zyyy" }, { 0x01806, 0x01819, "Mong" }, { 0x01820, 0x01878, "Mong" }, { 0x01880, 0x018AA, "Mong" }, { 0x018B0, 0x018F5, "Cans" }, { 0x01900, 0x0191E, "Limb" }, { 0x01920, 0x0192B, "Limb" }, { 0x01930, 0x0193B, "Limb" }, { 0x01944, 0x0194F, "Limb" }, { 0x01950, 0x0196D, "Tale" }, { 0x01970, 0x01974, "Tale" }, { 0x01980, 0x019AB, "Talu" }, { 0x019B0, 0x019C9, "Talu" }, { 0x019D0, 0x019DA, "Talu" }, { 0x019DE, 0x019DF, "Talu" }, { 0x019E0, 0x019FF, "Khmr" }, { 0x01A00, 0x01A1B, "Bugi" }, { 0x01A1E, 0x01A1F, "Bugi" }, { 0x01A20, 0x01A5E, "Lana" }, { 0x01A60, 0x01A7C, "Lana" }, { 0x01A7F, 0x01A89, "Lana" }, { 0x01A90, 0x01A99, "Lana" }, { 0x01AA0, 0x01AAD, "Lana" }, { 0x01AB0, 0x01ACE, "Zinh" }, { 0x01B00, 0x01B4C, "Bali" }, { 0x01B50, 0x01B7E, "Bali" }, { 0x01B80, 0x01BBF, "Sund" }, { 0x01BC0, 0x01BF3, "Batk" }, { 0x01BFC, 0x01BFF, "Batk" }, { 0x01C00, 0x01C37, "Lepc" }, { 0x01C3B, 0x01C49, "Lepc" }, { 0x01C4D, 0x01C4F, "Lepc" }, { 0x01C50, 0x01C7F, "Olck" }, { 0x01C80, 0x01C88, "Cyrl" }, { 0x01C90, 0x01CBA, "Geor" }, { 0x01CBD, 0x01CBF, "Geor" }, { 0x01CC0, 0x01CC7, "Sund" }, { 0x01CD0, 0x01CD2, "Zinh" }, { 0x01CD4, 0x01CE0, "Zinh" }, { 0x01CE2, 0x01CE8, "Zinh" }, { 0x01CE9, 0x01CEC, "Zyyy" }, { 0x01CEE, 0x01CF3, "Zyyy" }, { 0x01CF5, 0x01CF7, "Zyyy" }, { 0x01CF8, 0x01CF9, "Zinh" }, { 0x01D00, 0x01D25, "Latn" }, { 0x01D26, 0x01D2A, "Grek" }, { 0x01D2C, 0x01D5C, "Latn" }, { 0x01D5D, 0x01D61, "Grek" }, { 0x01D62, 0x01D65, "Latn" }, { 0x01D66, 0x01D6A, "Grek" }, { 0x01D6B, 0x01D77, "Latn" }, { 0x01D79, 0x01DBE, "Latn" }, { 0x01DC0, 0x01DFF, "Zinh" }, { 0x01E00, 0x01EFF, "Latn" }, { 0x01F00, 0x01F15, "Grek" }, { 0x01F18, 0x01F1D, "Grek" }, { 0x01F20, 0x01F45, "Grek" }, { 0x01F48, 0x01F4D, "Grek" }, { 0x01F50, 0x01F57, "Grek" }, { 0x01F5F, 0x01F7D, "Grek" }, { 0x01F80, 0x01FB4, "Grek" }, { 0x01FB6, 0x01FC4, "Grek" }, { 0x01FC6, 0x01FD3, "Grek" }, { 0x01FD6, 0x01FDB, "Grek" }, { 0x01FDD, 0x01FEF, "Grek" }, { 0x01FF2, 0x01FF4, "Grek" }, { 0x01FF6, 0x01FFE, "Grek" }, { 0x02000, 0x0200B, "Zyyy" }, { 0x0200C, 0x0200D, "Zinh" }, { 0x0200E, 0x02064, "Zyyy" }, { 0x02066, 0x02070, "Zyyy" }, { 0x02074, 0x0207E, "Zyyy" }, { 0x02080, 0x0208E, "Zyyy" }, { 0x02090, 0x0209C, "Latn" }, { 0x020A0, 0x020C0, "Zyyy" }, { 0x020D0, 0x020F0, "Zinh" }, { 0x02100, 0x02125, "Zyyy" }, { 0x02127, 0x02129, "Zyyy" }, { 0x0212A, 0x0212B, "Latn" }, { 0x0212C, 0x02131, "Zyyy" }, { 0x02133, 0x0214D, "Zyyy" }, { 0x0214F, 0x0215F, "Zyyy" }, { 0x02160, 0x02188, "Latn" }, { 0x02189, 0x0218B, "Zyyy" }, { 0x02190, 0x02426, "Zyyy" }, { 0x02440, 0x0244A, "Zyyy" }, { 0x02460, 0x027FF, "Zyyy" }, { 0x02800, 0x028FF, "Brai" }, { 0x02900, 0x02B73, "Zyyy" }, { 0x02B76, 0x02B95, "Zyyy" }, { 0x02B97, 0x02BFF, "Zyyy" }, { 0x02C00, 0x02C5F, "Glag" }, { 0x02C60, 0x02C7F, "Latn" }, { 0x02C80, 0x02CF3, "Copt" }, { 0x02CF9, 0x02CFF, "Copt" }, { 0x02D00, 0x02D25, "Geor" }, { 0x02D30, 0x02D67, "Tfng" }, { 0x02D6F, 0x02D70, "Tfng" }, { 0x02D80, 0x02D96, "Ethi" }, { 0x02DA0, 0x02DA6, "Ethi" }, { 0x02DA8, 0x02DAE, "Ethi" }, { 0x02DB0, 0x02DB6, "Ethi" }, { 0x02DB8, 0x02DBE, "Ethi" }, { 0x02DC0, 0x02DC6, "Ethi" }, { 0x02DC8, 0x02DCE, "Ethi" }, { 0x02DD0, 0x02DD6, "Ethi" }, { 0x02DD8, 0x02DDE, "Ethi" }, { 0x02DE0, 0x02DFF, "Cyrl" }, { 0x02E00, 0x02E5D, "Zyyy" }, { 0x02E80, 0x02E99, "Hani" }, { 0x02E9B, 0x02EF3, "Hani" }, { 0x02F00, 0x02FD5, "Hani" }, { 0x02FF0, 0x03004, "Zyyy" }, { 0x03008, 0x03020, "Zyyy" }, { 0x03021, 0x03029, "Hani" }, { 0x0302A, 0x0302D, "Zinh" }, { 0x0302E, 0x0302F, "Hang" }, { 0x03030, 0x03037, "Zyyy" }, { 0x03038, 0x0303B, "Hani" }, { 0x0303C, 0x0303F, "Zyyy" }, { 0x03041, 0x03096, "Hira" }, { 0x03099, 0x0309A, "Zinh" }, { 0x0309B, 0x0309C, "Zyyy" }, { 0x0309D, 0x0309F, "Hira" }, { 0x030A1, 0x030FA, "Kana" }, { 0x030FB, 0x030FC, "Zyyy" }, { 0x030FD, 0x030FF, "Kana" }, { 0x03105, 0x0312F, "Bopo" }, { 0x03131, 0x0318E, "Hang" }, { 0x03190, 0x0319F, "Zyyy" }, { 0x031A0, 0x031BF, "Bopo" }, { 0x031C0, 0x031E3, "Zyyy" }, { 0x031F0, 0x031FF, "Kana" }, { 0x03200, 0x0321E, "Hang" }, { 0x03220, 0x0325F, "Zyyy" }, { 0x03260, 0x0327E, "Hang" }, { 0x0327F, 0x032CF, "Zyyy" }, { 0x032D0, 0x032FE, "Kana" }, { 0x03300, 0x03357, "Kana" }, { 0x03358, 0x033FF, "Zyyy" }, { 0x03400, 0x04DBF, "Hani" }, { 0x04DC0, 0x04DFF, "Zyyy" }, { 0x04E00, 0x09FFF, "Hani" }, { 0x0A000, 0x0A48C, "Yiii" }, { 0x0A490, 0x0A4C6, "Yiii" }, { 0x0A4D0, 0x0A4FF, "Lisu" }, { 0x0A500, 0x0A62B, "Vaii" }, { 0x0A640, 0x0A69F, "Cyrl" }, { 0x0A6A0, 0x0A6F7, "Bamu" }, { 0x0A700, 0x0A721, "Zyyy" }, { 0x0A722, 0x0A787, "Latn" }, { 0x0A788, 0x0A78A, "Zyyy" }, { 0x0A78B, 0x0A7CA, "Latn" }, { 0x0A7D0, 0x0A7D1, "Latn" }, { 0x0A7D5, 0x0A7D9, "Latn" }, { 0x0A7F2, 0x0A7FF, "Latn" }, { 0x0A800, 0x0A82C, "Sylo" }, { 0x0A830, 0x0A839, "Zyyy" }, { 0x0A840, 0x0A877, "Phag" }, { 0x0A880, 0x0A8C5, "Saur" }, { 0x0A8CE, 0x0A8D9, "Saur" }, { 0x0A8E0, 0x0A8FF, "Deva" }, { 0x0A900, 0x0A92D, "Kali" }, { 0x0A930, 0x0A953, "Rjng" }, { 0x0A960, 0x0A97C, "Hang" }, { 0x0A980, 0x0A9CD, "Java" }, { 0x0A9D0, 0x0A9D9, "Java" }, { 0x0A9DE, 0x0A9DF, "Java" }, { 0x0A9E0, 0x0A9FE, "Mymr" }, { 0x0AA00, 0x0AA36, "Cham" }, { 0x0AA40, 0x0AA4D, "Cham" }, { 0x0AA50, 0x0AA59, "Cham" }, { 0x0AA5C, 0x0AA5F, "Cham" }, { 0x0AA60, 0x0AA7F, "Mymr" }, { 0x0AA80, 0x0AAC2, "Tavt" }, { 0x0AADB, 0x0AADF, "Tavt" }, { 0x0AAE0, 0x0AAF6, "Mtei" }, { 0x0AB01, 0x0AB06, "Ethi" }, { 0x0AB09, 0x0AB0E, "Ethi" }, { 0x0AB11, 0x0AB16, "Ethi" }, { 0x0AB20, 0x0AB26, "Ethi" }, { 0x0AB28, 0x0AB2E, "Ethi" }, { 0x0AB30, 0x0AB5A, "Latn" }, { 0x0AB5C, 0x0AB64, "Latn" }, { 0x0AB66, 0x0AB69, "Latn" }, { 0x0AB6A, 0x0AB6B, "Zyyy" }, { 0x0AB70, 0x0ABBF, "Cher" }, { 0x0ABC0, 0x0ABED, "Mtei" }, { 0x0ABF0, 0x0ABF9, "Mtei" }, { 0x0AC00, 0x0D7A3, "Hang" }, { 0x0D7B0, 0x0D7C6, "Hang" }, { 0x0D7CB, 0x0D7FB, "Hang" }, { 0x0F900, 0x0FA6D, "Hani" }, { 0x0FA70, 0x0FAD9, "Hani" }, { 0x0FB00, 0x0FB06, "Latn" }, { 0x0FB13, 0x0FB17, "Armn" }, { 0x0FB1D, 0x0FB36, "Hebr" }, { 0x0FB38, 0x0FB3C, "Hebr" }, { 0x0FB40, 0x0FB41, "Hebr" }, { 0x0FB43, 0x0FB44, "Hebr" }, { 0x0FB46, 0x0FB4F, "Hebr" }, { 0x0FB50, 0x0FBC2, "Arab" }, { 0x0FBD3, 0x0FD3D, "Arab" }, { 0x0FD3E, 0x0FD3F, "Zyyy" }, { 0x0FD40, 0x0FD8F, "Arab" }, { 0x0FD92, 0x0FDC7, "Arab" }, { 0x0FDF0, 0x0FDFF, "Arab" }, { 0x0FE00, 0x0FE0F, "Zinh" }, { 0x0FE10, 0x0FE19, "Zyyy" }, { 0x0FE20, 0x0FE2D, "Zinh" }, { 0x0FE2E, 0x0FE2F, "Cyrl" }, { 0x0FE30, 0x0FE52, "Zyyy" }, { 0x0FE54, 0x0FE66, "Zyyy" }, { 0x0FE68, 0x0FE6B, "Zyyy" }, { 0x0FE70, 0x0FE74, "Arab" }, { 0x0FE76, 0x0FEFC, "Arab" }, { 0x0FF01, 0x0FF20, "Zyyy" }, { 0x0FF21, 0x0FF3A, "Latn" }, { 0x0FF3B, 0x0FF40, "Zyyy" }, { 0x0FF41, 0x0FF5A, "Latn" }, { 0x0FF5B, 0x0FF65, "Zyyy" }, { 0x0FF66, 0x0FF6F, "Kana" }, { 0x0FF71, 0x0FF9D, "Kana" }, { 0x0FF9E, 0x0FF9F, "Zyyy" }, { 0x0FFA0, 0x0FFBE, "Hang" }, { 0x0FFC2, 0x0FFC7, "Hang" }, { 0x0FFCA, 0x0FFCF, "Hang" }, { 0x0FFD2, 0x0FFD7, "Hang" }, { 0x0FFDA, 0x0FFDC, "Hang" }, { 0x0FFE0, 0x0FFE6, "Zyyy" }, { 0x0FFE8, 0x0FFEE, "Zyyy" }, { 0x0FFF9, 0x0FFFD, "Zyyy" }, { 0x10000, 0x1000B, "Linb" }, { 0x1000D, 0x10026, "Linb" }, { 0x10028, 0x1003A, "Linb" }, { 0x1003C, 0x1003D, "Linb" }, { 0x1003F, 0x1004D, "Linb" }, { 0x10050, 0x1005D, "Linb" }, { 0x10080, 0x100FA, "Linb" }, { 0x10100, 0x10102, "Zyyy" }, { 0x10107, 0x10133, "Zyyy" }, { 0x10137, 0x1013F, "Zyyy" }, { 0x10140, 0x1018E, "Grek" }, { 0x10190, 0x1019C, "Zyyy" }, { 0x101D0, 0x101FC, "Zyyy" }, { 0x10280, 0x1029C, "Lyci" }, { 0x102A0, 0x102D0, "Cari" }, { 0x102E1, 0x102FB, "Zyyy" }, { 0x10300, 0x10323, "Ital" }, { 0x1032D, 0x1032F, "Ital" }, { 0x10330, 0x1034A, "Goth" }, { 0x10350, 0x1037A, "Perm" }, { 0x10380, 0x1039D, "Ugar" }, { 0x103A0, 0x103C3, "Xpeo" }, { 0x103C8, 0x103D5, "Xpeo" }, { 0x10400, 0x1044F, "Dsrt" }, { 0x10450, 0x1047F, "Shaw" }, { 0x10480, 0x1049D, "Osma" }, { 0x104A0, 0x104A9, "Osma" }, { 0x104B0, 0x104D3, "Osge" }, { 0x104D8, 0x104FB, "Osge" }, { 0x10500, 0x10527, "Elba" }, { 0x10530, 0x10563, "Aghb" }, { 0x10570, 0x1057A, "Vith" }, { 0x1057C, 0x1058A, "Vith" }, { 0x1058C, 0x10592, "Vith" }, { 0x10594, 0x10595, "Vith" }, { 0x10597, 0x105A1, "Vith" }, { 0x105A3, 0x105B1, "Vith" }, { 0x105B3, 0x105B9, "Vith" }, { 0x105BB, 0x105BC, "Vith" }, { 0x10600, 0x10736, "Lina" }, { 0x10740, 0x10755, "Lina" }, { 0x10760, 0x10767, "Lina" }, { 0x10780, 0x10785, "Latn" }, { 0x10787, 0x107B0, "Latn" }, { 0x107B2, 0x107BA, "Latn" }, { 0x10800, 0x10805, "Cprt" }, { 0x1080A, 0x10835, "Cprt" }, { 0x10837, 0x10838, "Cprt" }, { 0x10840, 0x10855, "Armi" }, { 0x10857, 0x1085F, "Armi" }, { 0x10860, 0x1087F, "Palm" }, { 0x10880, 0x1089E, "Nbat" }, { 0x108A7, 0x108AF, "Nbat" }, { 0x108E0, 0x108F2, "Hatr" }, { 0x108F4, 0x108F5, "Hatr" }, { 0x108FB, 0x108FF, "Hatr" }, { 0x10900, 0x1091B, "Phnx" }, { 0x10920, 0x10939, "Lydi" }, { 0x10980, 0x1099F, "Mero" }, { 0x109A0, 0x109B7, "Merc" }, { 0x109BC, 0x109CF, "Merc" }, { 0x109D2, 0x109FF, "Merc" }, { 0x10A00, 0x10A03, "Khar" }, { 0x10A05, 0x10A06, "Khar" }, { 0x10A0C, 0x10A13, "Khar" }, { 0x10A15, 0x10A17, "Khar" }, { 0x10A19, 0x10A35, "Khar" }, { 0x10A38, 0x10A3A, "Khar" }, { 0x10A3F, 0x10A48, "Khar" }, { 0x10A50, 0x10A58, "Khar" }, { 0x10A60, 0x10A7F, "Sarb" }, { 0x10A80, 0x10A9F, "Narb" }, { 0x10AC0, 0x10AE6, "Mani" }, { 0x10AEB, 0x10AF6, "Mani" }, { 0x10B00, 0x10B35, "Avst" }, { 0x10B39, 0x10B3F, "Avst" }, { 0x10B40, 0x10B55, "Prti" }, { 0x10B58, 0x10B5F, "Prti" }, { 0x10B60, 0x10B72, "Phli" }, { 0x10B78, 0x10B7F, "Phli" }, { 0x10B80, 0x10B91, "Phlp" }, { 0x10B99, 0x10B9C, "Phlp" }, { 0x10BA9, 0x10BAF, "Phlp" }, { 0x10C00, 0x10C48, "Orkh" }, { 0x10C80, 0x10CB2, "Hung" }, { 0x10CC0, 0x10CF2, "Hung" }, { 0x10CFA, 0x10CFF, "Hung" }, { 0x10D00, 0x10D27, "Rohg" }, { 0x10D30, 0x10D39, "Rohg" }, { 0x10E60, 0x10E7E, "Arab" }, { 0x10E80, 0x10EA9, "Yezi" }, { 0x10EAB, 0x10EAD, "Yezi" }, { 0x10EB0, 0x10EB1, "Yezi" }, { 0x10EFD, 0x10EFF, "Arab" }, { 0x10F00, 0x10F27, "Sogo" }, { 0x10F30, 0x10F59, "Sogd" }, { 0x10F70, 0x10F89, "Ougr" }, { 0x10FB0, 0x10FCB, "Chrs" }, { 0x10FE0, 0x10FF6, "Elym" }, { 0x11000, 0x1104D, "Brah" }, { 0x11052, 0x11075, "Brah" }, { 0x11080, 0x110C2, "Kthi" }, { 0x110D0, 0x110E8, "Sora" }, { 0x110F0, 0x110F9, "Sora" }, { 0x11100, 0x11134, "Cakm" }, { 0x11136, 0x11147, "Cakm" }, { 0x11150, 0x11176, "Mahj" }, { 0x11180, 0x111DF, "Shrd" }, { 0x111E1, 0x111F4, "Sinh" }, { 0x11200, 0x11211, "Khoj" }, { 0x11213, 0x11241, "Khoj" }, { 0x11280, 0x11286, "Mult" }, { 0x1128A, 0x1128D, "Mult" }, { 0x1128F, 0x1129D, "Mult" }, { 0x1129F, 0x112A9, "Mult" }, { 0x112B0, 0x112EA, "Sind" }, { 0x112F0, 0x112F9, "Sind" }, { 0x11300, 0x11303, "Gran" }, { 0x11305, 0x1130C, "Gran" }, { 0x1130F, 0x11310, "Gran" }, { 0x11313, 0x11328, "Gran" }, { 0x1132A, 0x11330, "Gran" }, { 0x11332, 0x11333, "Gran" }, { 0x11335, 0x11339, "Gran" }, { 0x1133C, 0x11344, "Gran" }, { 0x11347, 0x11348, "Gran" }, { 0x1134B, 0x1134D, "Gran" }, { 0x1135D, 0x11363, "Gran" }, { 0x11366, 0x1136C, "Gran" }, { 0x11370, 0x11374, "Gran" }, { 0x11400, 0x1145B, "Newa" }, { 0x1145D, 0x11461, "Newa" }, { 0x11480, 0x114C7, "Tirh" }, { 0x114D0, 0x114D9, "Tirh" }, { 0x11580, 0x115B5, "Sidd" }, { 0x115B8, 0x115DD, "Sidd" }, { 0x11600, 0x11644, "Modi" }, { 0x11650, 0x11659, "Modi" }, { 0x11660, 0x1166C, "Mong" }, { 0x11680, 0x116B9, "Takr" }, { 0x116C0, 0x116C9, "Takr" }, { 0x11700, 0x1171A, "Ahom" }, { 0x1171D, 0x1172B, "Ahom" }, { 0x11730, 0x11746, "Ahom" }, { 0x11800, 0x1183B, "Dogr" }, { 0x118A0, 0x118F2, "Wara" }, { 0x11900, 0x11906, "Diak" }, { 0x1190C, 0x11913, "Diak" }, { 0x11915, 0x11916, "Diak" }, { 0x11918, 0x11935, "Diak" }, { 0x11937, 0x11938, "Diak" }, { 0x1193B, 0x11946, "Diak" }, { 0x11950, 0x11959, "Diak" }, { 0x119A0, 0x119A7, "Nand" }, { 0x119AA, 0x119D7, "Nand" }, { 0x119DA, 0x119E4, "Nand" }, { 0x11A00, 0x11A47, "Zanb" }, { 0x11A50, 0x11AA2, "Soyo" }, { 0x11AB0, 0x11ABF, "Cans" }, { 0x11AC0, 0x11AF8, "Pauc" }, { 0x11B00, 0x11B09, "Deva" }, { 0x11C00, 0x11C08, "Bhks" }, { 0x11C0A, 0x11C36, "Bhks" }, { 0x11C38, 0x11C45, "Bhks" }, { 0x11C50, 0x11C6C, "Bhks" }, { 0x11C70, 0x11C8F, "Marc" }, { 0x11C92, 0x11CA7, "Marc" }, { 0x11CA9, 0x11CB6, "Marc" }, { 0x11D00, 0x11D06, "Gonm" }, { 0x11D08, 0x11D09, "Gonm" }, { 0x11D0B, 0x11D36, "Gonm" }, { 0x11D3C, 0x11D3D, "Gonm" }, { 0x11D3F, 0x11D47, "Gonm" }, { 0x11D50, 0x11D59, "Gonm" }, { 0x11D60, 0x11D65, "Gong" }, { 0x11D67, 0x11D68, "Gong" }, { 0x11D6A, 0x11D8E, "Gong" }, { 0x11D90, 0x11D91, "Gong" }, { 0x11D93, 0x11D98, "Gong" }, { 0x11DA0, 0x11DA9, "Gong" }, { 0x11EE0, 0x11EF8, "Maka" }, { 0x11F00, 0x11F10, "Kawi" }, { 0x11F12, 0x11F3A, "Kawi" }, { 0x11F3E, 0x11F59, "Kawi" }, { 0x11FC0, 0x11FF1, "Taml" }, { 0x12000, 0x12399, "Xsux" }, { 0x12400, 0x1246E, "Xsux" }, { 0x12470, 0x12474, "Xsux" }, { 0x12480, 0x12543, "Xsux" }, { 0x12F90, 0x12FF2, "Cpmn" }, { 0x13000, 0x13455, "Egyp" }, { 0x14400, 0x14646, "Hluw" }, { 0x16800, 0x16A38, "Bamu" }, { 0x16A40, 0x16A5E, "Mroo" }, { 0x16A60, 0x16A69, "Mroo" }, { 0x16A6E, 0x16A6F, "Mroo" }, { 0x16A70, 0x16ABE, "Tnsa" }, { 0x16AC0, 0x16AC9, "Tnsa" }, { 0x16AD0, 0x16AED, "Bass" }, { 0x16AF0, 0x16AF5, "Bass" }, { 0x16B00, 0x16B45, "Hmng" }, { 0x16B50, 0x16B59, "Hmng" }, { 0x16B5B, 0x16B61, "Hmng" }, { 0x16B63, 0x16B77, "Hmng" }, { 0x16B7D, 0x16B8F, "Hmng" }, { 0x16E40, 0x16E9A, "Medf" }, { 0x16F00, 0x16F4A, "Plrd" }, { 0x16F4F, 0x16F87, "Plrd" }, { 0x16F8F, 0x16F9F, "Plrd" }, { 0x16FE2, 0x16FE3, "Hani" }, { 0x16FF0, 0x16FF1, "Hani" }, { 0x17000, 0x187F7, "Tang" }, { 0x18800, 0x18AFF, "Tang" }, { 0x18B00, 0x18CD5, "Kits" }, { 0x18D00, 0x18D08, "Tang" }, { 0x1AFF0, 0x1AFF3, "Kana" }, { 0x1AFF5, 0x1AFFB, "Kana" }, { 0x1AFFD, 0x1AFFE, "Kana" }, { 0x1B001, 0x1B11F, "Hira" }, { 0x1B120, 0x1B122, "Kana" }, { 0x1B150, 0x1B152, "Hira" }, { 0x1B164, 0x1B167, "Kana" }, { 0x1B170, 0x1B2FB, "Nshu" }, { 0x1BC00, 0x1BC6A, "Dupl" }, { 0x1BC70, 0x1BC7C, "Dupl" }, { 0x1BC80, 0x1BC88, "Dupl" }, { 0x1BC90, 0x1BC99, "Dupl" }, { 0x1BC9C, 0x1BC9F, "Dupl" }, { 0x1BCA0, 0x1BCA3, "Zyyy" }, { 0x1CF00, 0x1CF2D, "Zinh" }, { 0x1CF30, 0x1CF46, "Zinh" }, { 0x1CF50, 0x1CFC3, "Zyyy" }, { 0x1D000, 0x1D0F5, "Zyyy" }, { 0x1D100, 0x1D126, "Zyyy" }, { 0x1D129, 0x1D166, "Zyyy" }, { 0x1D167, 0x1D169, "Zinh" }, { 0x1D16A, 0x1D17A, "Zyyy" }, { 0x1D17B, 0x1D182, "Zinh" }, { 0x1D183, 0x1D184, "Zyyy" }, { 0x1D185, 0x1D18B, "Zinh" }, { 0x1D18C, 0x1D1A9, "Zyyy" }, { 0x1D1AA, 0x1D1AD, "Zinh" }, { 0x1D1AE, 0x1D1EA, "Zyyy" }, { 0x1D200, 0x1D245, "Grek" }, { 0x1D2C0, 0x1D2D3, "Zyyy" }, { 0x1D2E0, 0x1D2F3, "Zyyy" }, { 0x1D300, 0x1D356, "Zyyy" }, { 0x1D360, 0x1D378, "Zyyy" }, { 0x1D400, 0x1D454, "Zyyy" }, { 0x1D456, 0x1D49C, "Zyyy" }, { 0x1D49E, 0x1D49F, "Zyyy" }, { 0x1D4A5, 0x1D4A6, "Zyyy" }, { 0x1D4A9, 0x1D4AC, "Zyyy" }, { 0x1D4AE, 0x1D4B9, "Zyyy" }, { 0x1D4BD, 0x1D4C3, "Zyyy" }, { 0x1D4C5, 0x1D505, "Zyyy" }, { 0x1D507, 0x1D50A, "Zyyy" }, { 0x1D50D, 0x1D514, "Zyyy" }, { 0x1D516, 0x1D51C, "Zyyy" }, { 0x1D51E, 0x1D539, "Zyyy" }, { 0x1D53B, 0x1D53E, "Zyyy" }, { 0x1D540, 0x1D544, "Zyyy" }, { 0x1D54A, 0x1D550, "Zyyy" }, { 0x1D552, 0x1D6A5, "Zyyy" }, { 0x1D6A8, 0x1D7CB, "Zyyy" }, { 0x1D7CE, 0x1D7FF, "Zyyy" }, { 0x1D800, 0x1DA8B, "Sgnw" }, { 0x1DA9B, 0x1DA9F, "Sgnw" }, { 0x1DAA1, 0x1DAAF, "Sgnw" }, { 0x1DF00, 0x1DF1E, "Latn" }, { 0x1DF25, 0x1DF2A, "Latn" }, { 0x1E000, 0x1E006, "Glag" }, { 0x1E008, 0x1E018, "Glag" }, { 0x1E01B, 0x1E021, "Glag" }, { 0x1E023, 0x1E024, "Glag" }, { 0x1E026, 0x1E02A, "Glag" }, { 0x1E030, 0x1E06D, "Cyrl" }, { 0x1E100, 0x1E12C, "Hmnp" }, { 0x1E130, 0x1E13D, "Hmnp" }, { 0x1E140, 0x1E149, "Hmnp" }, { 0x1E14E, 0x1E14F, "Hmnp" }, { 0x1E290, 0x1E2AE, "Toto" }, { 0x1E2C0, 0x1E2F9, "Wcho" }, { 0x1E4D0, 0x1E4F9, "Nagm" }, { 0x1E7E0, 0x1E7E6, "Ethi" }, { 0x1E7E8, 0x1E7EB, "Ethi" }, { 0x1E7ED, 0x1E7EE, "Ethi" }, { 0x1E7F0, 0x1E7FE, "Ethi" }, { 0x1E800, 0x1E8C4, "Mend" }, { 0x1E8C7, 0x1E8D6, "Mend" }, { 0x1E900, 0x1E94B, "Adlm" }, { 0x1E950, 0x1E959, "Adlm" }, { 0x1E95E, 0x1E95F, "Adlm" }, { 0x1EC71, 0x1ECB4, "Zyyy" }, { 0x1ED01, 0x1ED3D, "Zyyy" }, { 0x1EE00, 0x1EE03, "Arab" }, { 0x1EE05, 0x1EE1F, "Arab" }, { 0x1EE21, 0x1EE22, "Arab" }, { 0x1EE29, 0x1EE32, "Arab" }, { 0x1EE34, 0x1EE37, "Arab" }, { 0x1EE4D, 0x1EE4F, "Arab" }, { 0x1EE51, 0x1EE52, "Arab" }, { 0x1EE61, 0x1EE62, "Arab" }, { 0x1EE67, 0x1EE6A, "Arab" }, { 0x1EE6C, 0x1EE72, "Arab" }, { 0x1EE74, 0x1EE77, "Arab" }, { 0x1EE79, 0x1EE7C, "Arab" }, { 0x1EE80, 0x1EE89, "Arab" }, { 0x1EE8B, 0x1EE9B, "Arab" }, { 0x1EEA1, 0x1EEA3, "Arab" }, { 0x1EEA5, 0x1EEA9, "Arab" }, { 0x1EEAB, 0x1EEBB, "Arab" }, { 0x1EEF0, 0x1EEF1, "Arab" }, { 0x1F000, 0x1F02B, "Zyyy" }, { 0x1F030, 0x1F093, "Zyyy" }, { 0x1F0A0, 0x1F0AE, "Zyyy" }, { 0x1F0B1, 0x1F0BF, "Zyyy" }, { 0x1F0C1, 0x1F0CF, "Zyyy" }, { 0x1F0D1, 0x1F0F5, "Zyyy" }, { 0x1F100, 0x1F1AD, "Zyyy" }, { 0x1F1E6, 0x1F1FF, "Zyyy" }, { 0x1F201, 0x1F202, "Zyyy" }, { 0x1F210, 0x1F23B, "Zyyy" }, { 0x1F240, 0x1F248, "Zyyy" }, { 0x1F250, 0x1F251, "Zyyy" }, { 0x1F260, 0x1F265, "Zyyy" }, { 0x1F300, 0x1F6D7, "Zyyy" }, { 0x1F6DC, 0x1F6EC, "Zyyy" }, { 0x1F6F0, 0x1F6FC, "Zyyy" }, { 0x1F700, 0x1F776, "Zyyy" }, { 0x1F77B, 0x1F7D9, "Zyyy" }, { 0x1F7E0, 0x1F7EB, "Zyyy" }, { 0x1F800, 0x1F80B, "Zyyy" }, { 0x1F810, 0x1F847, "Zyyy" }, { 0x1F850, 0x1F859, "Zyyy" }, { 0x1F860, 0x1F887, "Zyyy" }, { 0x1F890, 0x1F8AD, "Zyyy" }, { 0x1F8B0, 0x1F8B1, "Zyyy" }, { 0x1F900, 0x1FA53, "Zyyy" }, { 0x1FA60, 0x1FA6D, "Zyyy" }, { 0x1FA70, 0x1FA7C, "Zyyy" }, { 0x1FA80, 0x1FA88, "Zyyy" }, { 0x1FA90, 0x1FABD, "Zyyy" }, { 0x1FABF, 0x1FAC5, "Zyyy" }, { 0x1FACE, 0x1FADB, "Zyyy" }, { 0x1FAE0, 0x1FAE8, "Zyyy" }, { 0x1FAF0, 0x1FAF8, "Zyyy" }, { 0x1FB00, 0x1FB92, "Zyyy" }, { 0x1FB94, 0x1FBCA, "Zyyy" }, { 0x1FBF0, 0x1FBF9, "Zyyy" }, { 0x20000, 0x2A6DF, "Hani" }, { 0x2A700, 0x2B739, "Hani" }, { 0x2B740, 0x2B81D, "Hani" }, { 0x2B820, 0x2CEA1, "Hani" }, { 0x2CEB0, 0x2EBE0, "Hani" }, { 0x2EBF0, 0x2EE5D, "Hani" }, { 0x2F800, 0x2FA1D, "Hani" }, { 0x30000, 0x3134A, "Hani" }, { 0x31350, 0x323AF, "Hani" }, { 0xE0020, 0xE007F, "Zyyy" }, { 0xE0100, 0xE01EF, "Zinh" }, }, -- Scripts.txt gives full names; here we consider them aliases to save space. aliases = { Adlm = "Adlam", Aghb = "Caucasian Albanian", Ahom = "Ahom", Arab = "Arabic", Armi = "Imperial Aramaic", Armn = "Armenian", Avst = "Avestan", Bali = "Balinese", Bamu = "Bamum", Bass = "Bassa Vah", Batk = "Batak", Beng = "Bengali", Bhks = "Bhaiksuki", Bopo = "Bopomofo", Brah = "Brahmi", Brai = "Braille", Bugi = "Buginese", Buhd = "Buhid", Cakm = "Chakma", Cans = "Canadian Aboriginal", Cari = "Carian", Cham = "Cham", Cher = "Cherokee", Chrs = "Chorasmian", Copt = "Coptic", Cpmn = "Cypro Minoan", Cprt = "Cypriot", Cyrl = "Cyrillic", Deva = "Devanagari", Diak = "Dives Akuru", Dogr = "Dogra", Dsrt = "Deseret", Dupl = "Duployan", Egyp = "Egyptian Hieroglyphs", Elba = "Elbasan", Elym = "Elymaic", Ethi = "Ethiopic", Geor = "Georgian", Glag = "Glagolitic", Gong = "Gunjala Gondi", Gonm = "Masaram Gondi", Goth = "Gothic", Gran = "Grantha", Grek = "Greek", Gujr = "Gujarati", Guru = "Gurmukhi", Hang = "Hangul", Hani = "Han", Hano = "Hanunoo", Hatr = "Hatran", Hebr = "Hebrew", Hira = "Hiragana", Hluw = "Anatolian Hieroglyphs", Hmng = "Pahawh Hmong", Hmnp = "Nyiakeng Puachue Hmong", Hrkt = "Katakana Or Hiragana", Hung = "Old Hungarian", Ital = "Old Italic", Java = "Javanese", Kali = "Kayah Li", Kana = "Katakana", Kawi = "Kawi", Khar = "Kharoshthi", Khmr = "Khmer", Khoj = "Khojki", Kits = "Khitan Small Script", Knda = "Kannada", Kthi = "Kaithi", Lana = "Tai Tham", Laoo = "Lao", Latn = "Latin", Lepc = "Lepcha", Limb = "Limbu", Lina = "Linear A", Linb = "Linear B", Lisu = "Lisu", Lyci = "Lycian", Lydi = "Lydian", Mahj = "Mahajani", Maka = "Makasar", Mand = "Mandaic", Mani = "Manichaean", Marc = "Marchen", Medf = "Medefaidrin", Mend = "Mende Kikakui", Merc = "Meroitic Cursive", Mero = "Meroitic Hieroglyphs", Mlym = "Malayalam", Modi = "Modi", Mong = "Mongolian", Mroo = "Mro", Mtei = "Meetei Mayek", Mult = "Multani", Mymr = "Myanmar", Nagm = "Nag Mundari", Nand = "Nandinagari", Narb = "Old North Arabian", Nbat = "Nabataean", Newa = "Newa", Nkoo = "NKo", Nshu = "Nushu", Ogam = "Ogham", Olck = "Ol Chiki", Orkh = "Old Turkic", Orya = "Oriya", Osge = "Osage", Osma = "Osmanya", Ougr = "Old Uyghur", Palm = "Palmyrene", Pauc = "Pau Cin Hau", Perm = "Old Permic", Phag = "Phags Pa", Phli = "Inscriptional Pahlavi", Phlp = "Psalter Pahlavi", Phnx = "Phoenician", Plrd = "Miao", Prti = "Inscriptional Parthian", Rjng = "Rejang", Rohg = "Hanifi Rohingya", Runr = "Runic", Samr = "Samaritan", Sarb = "Old South Arabian", Saur = "Saurashtra", Sgnw = "SignWriting", Shaw = "Shavian", Shrd = "Sharada", Sidd = "Siddham", Sind = "Khudawadi", Sinh = "Sinhala", Sogd = "Sogdian", Sogo = "Old Sogdian", Sora = "Sora Sompeng", Soyo = "Soyombo", Sund = "Sundanese", Sylo = "Syloti Nagri", Syrc = "Syriac", Tagb = "Tagbanwa", Takr = "Takri", Tale = "Tai Le", Talu = "New Tai Lue", Taml = "Tamil", Tang = "Tangut", Tavt = "Tai Viet", Telu = "Telugu", Tfng = "Tifinagh", Tglg = "Tagalog", Thaa = "Thaana", Thai = "Thai", Tibt = "Tibetan", Tirh = "Tirhuta", Tnsa = "Tangsa", Toto = "Toto", Ugar = "Ugaritic", Vaii = "Vai", Vith = "Vithkuqi", Wara = "Warang Citi", Wcho = "Wancho", Xpeo = "Old Persian", Xsux = "Cuneiform", Yezi = "Yezidi", Yiii = "Yi", Zanb = "Zanabazar Square", Zinh = "Inherited", Zyyy = "Common", Zzzz = "Unknown", }, } -- Required for binary search function in [[Module:Language/scripts]]. -- Cannot get length of module loaded with mw.loadData. data.ranges.length = #data.ranges data.rtl = {} for _, script in ipairs(mw.loadData "Module:Lang/data".rtl_scripts) do -- [[Module:Lang/data]] has script codes in lowercase; -- this module has script codes with the first letter capitalized. data.rtl[script:gsub("^%a", string.upper)] = true end return data 6afbaa9e21efd3898f0ff056b5456c0cd5813400 Template:Film- and television-related infobox templates 10 1257 2591 2023-09-15T04:24:20Z w>InfiniteNexus 0 wikitext text/x-wiki {{Navbox | name = Film- and television-related infobox templates | title = Film- and television-related infobox templates | listclass = hlist | state = {{{state|autocollapse}}} | group1 = [[Wikipedia:List of infoboxes#Film|Film]] | list1 = * [[Template:Infobox film|Film]] ** [[Template:Infobox film/short description|/short description]] * [[Template:Infobox film or theatre festival|Film or theatre festival]] * [[Template:Infobox art movement|Art movement]] * [[Template:Infobox cinema market|Cinema market]] * [[Template:Infobox movie quote|Movie quote]] | group2 = [[Wikipedia:List of infoboxes#Television|Television]] | list2 = * [[Template:Infobox television|Television]] * [[Template:Infobox television season|Television season]] ** [[Template:Infobox reality competition season|Reality competition season]] * [[Template:Infobox television episode|Television episode]] ** [[Template:Infobox television crossover episode|crossover]] *** [[Template:Infobox television crossover episode/part|/part]] ** ''[[Template:Infobox Doctor Who episode|Doctor Who]]'' ** ''[[Template:Infobox Futurama episode|Futurama]]'' ** ''[[Template:Infobox Simpsons episode|Simpsons]]'' * [[Template:Infobox animanga/Video|Animanga]] | group3 = Misc video | list3 = * ''[[Template:Infobox Paris by Night|Paris by Night]]'' * [[Template:Infobox machinima|Machinima]] | group4 = Industry | list4 = * [[Template:Infobox award|Award]] * [[Template:Infobox awards list|Awards list]] * [[Template:Infobox film awards|Film awards]] ** [[Template:Infobox film awards/link|/link]] ** [[Template:Infobox film awards/style|/style]] * [[Template:Infobox broadcasting network|Broadcasting network]] * [[Template:Infobox television channel|Television channel]] * [[Template:Infobox television station|Television station]] * [[Template:Infobox programming block|Programming block]] * [[Template:Infobox presenter|Presenter]] | group5 = [[Wikipedia:List of infoboxes#Photography|Technical]] | list5 = * [[Template:Infobox camera|Camera]] * [[Template:Infobox movie camera|Movie camera]] * [[Template:Infobox camera mount|Camera mount]] * [[Template:Infobox photographic lens|Photographic lens]] * [[Template:Infobox lens design|Lens design]] * [[Template:Infobox photographic film|Photographic film]] | group6 = [[Wikipedia:List of infoboxes#Fictional elements|Fiction]] | list6 = * [[Template:Infobox fictional artifact|Artifact]] * [[Template:Infobox character|Character]] ** [[Template:Infobox Doctor Who doctor|Doctor Who doctor]] ** [[Template:Infobox G.I. Joe character|''G.I. Joe'']] ** [[Template:Infobox soap character|Soap opera]] * [[Template:Infobox fictional family|Family]] ** [[Template:Infobox fictional family/member|Family member]] * [[Template:Infobox fictional location|Location]] * [[Template:Infobox fictional organisation|Organisation]] * [[Template:Infobox fictional race|Race]] * [[Template:Infobox fictional vehicle|Vehicle]] | group7 = Template modules | list7 = * [[Template:Infobox name module|Name module]] * [[Template:Based on|Based on]] * [[Template:Infobox person|Person]] * [[Template:Listen|Listen]] | group8 = Related | list8 = * [[Template:Infobox advertising|Advertising]] * [[Template:Infobox media franchise|Media franchise]] * [[Template:Infobox audio drama|Audio drama]] * [[Template:Infobox podcast|Podcast]] * [[Template:Infobox radio station|Radio station]] * [[Template:Infobox radio show|Radio show]] }}<noinclude> {{Documentation}} </noinclude> 194d6ca46eda0a7ea7550c9c6dce0440fc9c303e Template:Language templates 10 444 1061 2023-09-16T04:59:36Z wikipedia>Nardog 0 distracting wikitext text/x-wiki {{Sidebar | name = Language templates | width = 238px | bodystyle = border-spacing:0;background:#f7f7f7;padding:2px; | titlestyle = background:#ccccff; | title = Language templates | contentclass = plainlist | contentstyle = padding:0.25em;background:#fdfdfd; | navbarstyle = background:#fdfdfd;padding:0 5px | heading1 = Language names ([[ISO 639]]) | content1 = * {{tl|ISO 639 name}} | heading2 = Interwiki links | content2 = * {{tl|Wikt-lang}} * [[Module:Language]] * {{tl|Interlanguage link}} | heading5 = Foreign-language text | content5 = * {{tl|Lang}} * [[Module:Lang]] * {{tl|Transliteration}} * {{tl|Title language}} * {{tl|PIE}} | heading6 = Other | content6 = * {{tl|IPA}} * [[Module:Language/data]] * [[:Category:Wikipedia multilingual support templates]] }}<noinclude> {{Documentation|content= [[WP:SIDEBAR|Sidebar]] listing language [[WP:templates|templates]]. }} [[Category:Documentation see also templates]] </noinclude> f329063cbc1e51e9ff27b6f2cbb366cdee87c7e7 Template:Infobox German place/doc 10 1436 2771 2023-09-17T02:53:11Z Pppery 6 - wikitext text/x-wiki {{Documentation subpage}} <!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE --> {{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}} {{Uses Infobox settlement}} {{Lua|Module:String|Module:Check for unknown parameters}} {{Uses Wikidata|P2046}} === Infobox for cities, towns and municipalities in Germany === New infobox that combines features of [[:de:Vorlage:Infobox Gemeinde in Deutschland]] and [[Template:Infobox settlement]], plus a few extra things. == Syntax - German parameters == Also see English parameters in next section, or see: <span style="background:yellow">'''[[Template:Infobox German place/Instructions|instructions for full syntax]]'''</span> List of basic German-name parameters (skip any unneeded fields): <nowiki>{{Infobox German place | Name = | German_name = | Art = | image_photo = | imagesize = | image_caption = | Wappen = | image_flag = | coordinates = {{Coord}} | Lageplan = | Lageplanbeschreibung = | Bundesland = required parameter | Regierungsbezirk = | Landkreis = | Kreis = | Amt = | Gemeindeverwaltungsverband = | Samtgemeinde = | Verbandsgemeinde = | Verwaltungsgemeinschaft = | Verwaltungsverband = | Höhe = elevation | elevationmax = "X-Xmax m (y-ymax ft)" Xmax is optional elevationmax | Fläche = | area_metro = | pop_metro = | PLZ = | Vorwahl = | Kfz = | Gemeindeschlüssel = | Gliederung = | Website = | Bürgermeister = | Bürgermeistertitel = | leader_term = | Partei = | ruling_party1 = | ruling_party2 = | ruling_party3 = | year = | _noautocat = }}</nowiki> == Syntax - English parameters == <span style="background:yellow">'''[[Template:Infobox German location/Instructions|Click here to see instructions for full syntax information]]'''</span> List of English-name alias parameters (skip any unneeded fields): <nowiki>{{Infobox German place | name = (or 'Name') English name of the place | German_name = German name of the place | image_photo = image file for top image (omit "Image:") | imagesize = width of image_photo (default 268px) | image_caption = phrase shown beneath top image | image_coa = (or 'Wappen') image file of town seal | image_flag = image file of town flag | coordinates = latitude and longitude; use {{Coord}} | image_plan = (or 'Lageplan') image file of bottom closeup map | plantext = (or 'Lageplanbeschreibung') heading above bottom map | state = (or 'Bundesland') required parameter | region = (or 'Regierungsbezirk') optional region name | district = (or 'Landkreis' or 'Kreis') name of district | borough = 'Stadtkreis' or 'Bezirk', borough if subdivision | Amt = | Gemeindeverwaltungsverband = | Samtgemeinde = | Verbandsgemeinde = | Verwaltungsgemeinschaft = | Verwaltungsverband = | type = type of subdivision, e.g. borough or quarter (locality) | City = city, if subdivision | Town = town, if subdivision | elevation = (or 'Höhe') meters above sea-level (converts to ft) | elevationmax = "X-Xmax m (y-ymax ft)" Xmax is optional elevationmax | area = (or 'Fläche') area of location in square km | area_metro = area of metro part in square km | pop_metro = population of metro part (without commas) | postal_code = (or 'PLZ') postal or ZIP codes | area_code = (or 'Vorwahl') telephone area code | licence = (or 'Kfz' or 'license') licence plate code | Gemeindeschlüssel = | divisions = (or 'Gliederung') divisions, such as "5 boroughs" | mayor = (or 'Bürgermeister') name of leader | Bürgermeistertitel = official title of leader | leader_term = term in office for leader | party = (or 'Partei') political party of leader | ruling_party1 = | ruling_party2 = | ruling_party3 = | year = year founded | website = (or 'Website') URL of location website | _noautocat = }}</nowiki> == Important features == Since [[:de:Vorlage:Infobox Gemeinde in Deutschland]] is being introduced to many German locations in the German Wikipedia, the variable fields here use the same names to make it easier for editors to import infobox information from the German Wikipedia to the English one. <br>For many fields, German values can be given (i.e. without translation to English) and will be displayed in English. * e.g., By entering "Bundesland = Bayern", the infobox will display "State: Bavaria" The variables with English names relate to features that do not exist in ''Infobox Ort in Deutschland''. Major new features, compared to {{tlc|Infobox Town DE}}: * No longer need a location map for each entry. By entering the geographical co-ordinates, a map is automatically displayed. * Population data automatically transcluded from {{tl|Population Germany}}. * Area, population density and elevation automatically displayed in both metric and imperial units * Auto-categorisation of entries, depending on values entered * Optional 2nd map (''Lageplan'') at bottom, to display location in more detail. Major new features, compared to [[:de:Vorlage:Infobox Ort in Deutschland]]: * Can give year of city foundation: places article in "Category: xxxx establishments" * Can display representative photo of location (a feature of Infobox Town DE, which, for some reason, was never used) (e.g. see: ''[[Cologne]]'') * In addition to displaying the political party of the mayor/lord mayor/etc., it is also possible to display the ruling parties. Currently, a coalition of up to 3 parties is supported - if more are needed, please report it on the template talk page. (e.g. see: ''[[Braunschweig]]''). == TemplateData == {{TemplateData header}} <templatedata> { "params": { "borough": { "label": "borough", "type": "string", "required": false, "suggested": false, "deprecated": false }, "imagesize": { "label": "Imagesize", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Avoid. Use only when it is necessary to reduce the size of the above image from its default value of 268px. Tall images could be reduced, such as 220px, to balance the infobox appearance." }, "image_caption": { "label": "Image caption", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Caption underneath representative image. Keep as short as possible. Allows wikilinks" }, "Bürgermeistertitel": { "label": "Bürgermeistertitel", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Title: Mayor / Bürgermeister, Lord Mayor / Oberbürgermeister, Ortsbürgermeister, Ortsvorsteher etc. Use wikilinks only if linking to a specific article (eg. [[List of mayors of Bremen|Mayor]]). Default is \"Mayor\"" }, "area_metro": { "label": "area_metro", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Are of metropolitan area in square kilometres. Will automatically calculate value in square miles. Enter value without spaces or commas, otherwise an error message will be displayed in the area field. Only the bigger cities will have a need for this field." }, "Gemeindeschlüssel": { "label": "Gemeindeschlüssel", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The Gemeindeschlüssel is the code for the municipalities, cities, districts etc. as used by the German statistics offices. For municipalities and cities this is an 8-digit number, either formatted \"XX X XX XXX\" or unformatted. This infobox uses this code to retrieve the municipality population from a database, see {{Population Germany}}. The code is not displayed. It is required for independent municipalities and cities. For dependent areas and settlements (quarters, boroughs, villages) use the \"Einwohner\" or \"population\" field." }, "Stand": { "label": "Stand", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "Date for population value. Enter in YYYY-MM-DD format (eg. 2006-12-31)", "aliases": [ "population_as_of" ] }, "pop_metro": { "label": "Pop metro", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "Population of metropolitan area. Only the bigger cities will have a need for this field." }, "pop_urban": { "label": "Pop urban", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "Population of urban area. Only the bigger cities will have a need for this field." }, "pop_ref": { "label": "Pop ref", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "Source for population statistic(s). Needed only for places that do not have automatic population updates using the Gemeindeschlüssel/key parameter. This field must use the <ref>-code, citing the document or website. When this field is filled in, you must add a references section at the end of the article if it does not already have one. (eg. with {{reflist}}) Citation examples: 1. Minimum requirement: pop_ref=<ref>[http://www.samplesite.de Population source]</ref> 2. Expanded syntax:<ref>{{cite web |title=Bevölkerung im Regierungsbezirk Köln |url=http://www.lds.nrw.de/statistik/datenangebot/Regionen/amtlichebevoelkerungszahlen/rp3_juni06.html |author=Landesamt für Datenverarbeitung und Statistik Nordrhein-Westfalen |accessdate=2007-04-25 |language=German}}</ref>" }, "year": { "label": "Year", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "Year of foundation, NOT the year of the first recorded mention of the location." }, "_noautocat": { "label": "Noautocat", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Give a value of \"yes\" to prevent auto-categorisation. Used only on draft articles (i.e. in the User space)" }, "name": { "aliases": [ "Name" ], "label": "Name", "description": "Common English name of location. Use only if name is different from article name", "type": "string" }, "German_name": { "label": "German name", "description": "German name of location. Use only if name is different from English name.", "type": "string" }, "type": { "aliases": [ "Art" ], "description": "Needed. Type of location. Also used for article categorisation. Accepts German and English names. Accepted values: * Municipality / Gemeinde - default * Town / Stadt - if the municipality has town-rights (ie. it appears on this list) * City - towns with more than 100,000 people (ie. it appears on this list) * Amt / Gemeindeverwaltungsverband / Samtgemeinde / Verbandsgemeinde / Verwaltungsgemeinschaft / Verwaltungsverband - collective municipality * Ortsteil / Stadtteil / Borough / Quarter etc. - subdivision of a city, town or municipality", "type": "string" }, "image_photo": { "aliases": [ "image_skyline" ], "label": "Image photo ", "description": "The top image, a representative photo of the location: skyline, notable landmark, etc. The image used should be wider than it is tall, to keep the infobox as compact as possible. No wikilinks.", "type": "string" }, "City": { "aliases": [ "Town", "Municipality" ], "label": "City or Town or Municipality", "description": "Used for places that are subdivisions of cities, towns or municipalities. Use the field name that corresponds with the higher administrative unit (e.g. \"City = Berlin\" for parts of Berlin, \"Town = Memmingen\" for parts of Memmingen, \"Municipality = Sassenburg\" for parts of Sassenburg).", "type": "string" }, "image_coa": { "aliases": [ "Wappen" ], "label": "Wappen or image_coa", "description": "Coat of arms image. No wikilinks. Leave blank if image is unknown or unavailable. If the location simply does not have a coat of arms, put: Wappen = none.", "type": "string" }, "state": { "aliases": [ "Bundesland" ], "label": "Bundesland or state", "description": "Needed. Federal state to which the location belongs. No wikilinks. Accepts English and German names, translates many names to English.", "type": "string", "required": true }, "region": { "aliases": [ "Regierungsbezirk", "regbzk" ], "label": "Regierungsbezirk or region", "description": "Name of the administrative region (Regierungsbezirk) that the location belongs to. Not used for all states. Regierungsbezirk articles on the English wiki are named \"xxxx (region)\", so only the name of the region is needed here (without wikilinks) and the infobox should link to the correct article.", "type": "string" }, "district": { "aliases": [ "Kreis", "Landkreis" ], "label": "Kreis / Landkreis or district", "description": "Needed. District that the location belongs to. If the location is an urban district, say Kreis = urban. District articles on the English wiki are named \"xxxx (district)\" or without the \"(district)\" part. For most cases, only the name of the district (xxxx) is needed here (without wikilinks) and the infobox should link to the correct article.", "type": "string" }, "Amt": { "aliases": [ "Gemeindeverwaltungsverband", "Samtgemeinde", "Verbandsgemeinde", "Verwaltungsgemeinschaft", "Verwaltungsverband" ], "label": "Amt, Gemeindeverwaltungsverband, Samtgemeinde, Verbandsgemeinde, Verwaltungsgemeinschaft, Verwaltungsverband", "description": "Some locations belong to a collective municipality of some sort. Fill in the corresponding field and delete all unused fields.", "type": "string" }, "divisions": { "aliases": [ "Gliederung" ], "label": "Gliederung or divisions", "description": "Local subdivisions. When copying towninfo directly from the German wiki, please translate content of this field to English and remove any red links.", "type": "string" }, "mayor": { "aliases": [ "Bürgermeister" ], "label": "Bürgermeister or mayor", "description": "Name of the mayor/lord mayor/etc. Wikilinks automatically generated if the entry exists.", "type": "string" }, "party": { "aliases": [ "Partei" ], "label": "Partei or party", "description": "Political party of Mayor/Lord Mayor/etc. Use standard party abbreviations (CDU, SPD, Green, FDP, PDS, FWG, etc.) and the correct wikilinks should be generated (if not, leave a comment on the template talk page). For independent politicians, say Partei=ind", "type": "string" }, "ruling_party1": { "aliases": [ "ruling_party2", "ruling_party3" ], "label": "ruling_party1, ruling_party2, ruling_party3", "description": "Party or parties that govern this location. Fill in this field in the same way as the Partei field.", "type": "string" }, "area": { "aliases": [ "Fläche" ], "label": "Fläche or area", "description": "Area in square kilometres. Will automatically calculate value in square miles. Enter value without spaces or commas, otherwise an error message will be displayed in the area field.", "type": "string" }, "elevation": { "aliases": [ "Höhe" ], "label": "Höhe or elevation", "description": "Elevation in metres. Will automatically calculate value in feet. For some entries, a range of elevation values is given in the German wiki. To prevent an error in the conversion to feet, any range values must use a simple minus sign instead of any other dash characters. Elevation ranges will not be converted to feet.", "type": "string" }, "population": { "aliases": [ "Einwohner" ], "label": "Einwohner or population", "description": "Population. Don't use this for independent municipalities and cities, use the \"Gemeindeschlüssel\" field instead. If area is also given, population density will also be calculated. Enter value without spaces or commas, otherwise an error message will be displayed in the density field.", "type": "string" }, "licence": { "aliases": [ "Kfz" ], "label": "Kfz or licence", "description": "Car number plate code for the location (1-3 capital letters).", "type": "string" }, "area_code": { "aliases": [ "Vorwahl" ], "label": "Vorwahl or area_code", "description": "Telephone area code. If various values are given, display as a simple range (if possible). Avoid descriptions of each code.", "type": "number" }, "postal_code": { "aliases": [ "PLZ" ], "label": "PLZ or postal_code", "description": "[edit] Postal code. If various values are given, display as a simple range (if possible). Avoid descriptions of each code.", "type": "number" }, "website": { "aliases": [ "Website" ], "label": "Website", "description": "Official website of the location. Trim displayed URL as much as possible. (eg. Website=[http://www.samplesite.de samplesite.de])", "type": "wiki-page-name" }, "image_plan": { "aliases": [ "Lageplan" ], "label": "Lageplan or image_plan", "description": "Zoomed-in map image displaying location within a region of Germany (e.g., a state or a Kreis), with optional width, plansize=265px. ", "type": "string" }, "plantext": { "aliases": [ "Lageplanbeschreibung" ], "label": "Lageplanbeschreibung or plantext", "description": "Caption for map image given by Lageplan. The template will attempt to automatically create a caption, using values given for other fields. If the caption does not match with the image, use this field to manually enter a caption.", "type": "string" }, "image_flag": { "description": "Flag image. Plain file name, no wikilinks or size." }, "coordinates": { "description": "Use the {{coord}} template" }, "year_of_first_mention": { "description": "year of the first recorded mention of the location.", "type": "number" }, "pop_demonym": { "aliases": [ "demonym" ], "description": "Demonym " }, "footnotes": {}, "dissolved": { "description": "If the administrative unit was disbanded: the date when it was disbanded" }, "leader_term": { "description": "Term for elected mayors", "example": "2019&ndash;2024" } }, "paramOrder": [ "name", "German_name", "type", "City", "borough", "image_photo", "imagesize", "image_caption", "image_coa", "state", "region", "district", "Amt", "divisions", "mayor", "Bürgermeistertitel", "party", "ruling_party1", "area", "area_metro", "elevation", "Gemeindeschlüssel", "population", "Stand", "pop_metro", "pop_urban", "pop_ref", "licence", "area_code", "postal_code", "year", "website", "image_plan", "plantext", "_noautocat", "image_flag", "coordinates", "year_of_first_mention", "pop_demonym", "footnotes", "dissolved", "leader_term" ] } </templatedata> == Microformat == {{UF-hcard-geo}} == Tracking categories == * {{clc|Pages using infobox German place with unknown parameters}} * {{clc|Pages using infobox German place with an elevation range}} * {{clc|Germany articles requiring maintenance}} == See also == * [[Wikipedia:Uploading metadata to Wikidata]] <includeonly>{{Sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Templates with coordinates fields|Infobox German location]] [[Category:Germany subdivision infobox templates|4]] [[Category:Templates that add a tracking category]] }}</includeonly> 979010cf2e5ae975e444a77615b6a20c498a560e Template:Infobox officeholder/office 10 158 369 2023-09-17T22:18:03Z wikipedia>Neveselbert 0 conditional wikitext text/x-wiki {{#if:{{{speaker|}}}{{{state_legislature|}}}{{{state_assembly|}}}{{{speaker_office|}}}{{{state_delegate|}}}{{{state_house|}}}{{{prior_term|}}}{{{nominee|}}}{{{candidate|}}}{{{termstart|}}}{{{election_date|}}}{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}{{{jr/sr|}}}{{{succeeding|}}}{{{assuming|}}}{{{state|}}}{{{jr/sr and state|}}}{{{state_senate|}}}{{{district|}}}{{{ambassador_from|}}}{{{minister_from|}}}{{{order|}}}{{{office|}}}{{{title|}}}{{{country|}}}{{{constituency_AM|}}}{{{constituency_MP|}}}{{{parliament|}}}{{{assembly|}}}{{{constituency_|}}}{{{riding|}}}{{{term|}}}{{{termend|}}}{{{alongside|}}}{{{co-leader|}}} |{{#invoke:infobox|infoboxTemplate|child=yes|decat=yes | headerstyle = background:{{{color|lavender}}};line-height:normal;padding:0.2em; | datastyle = border-bottom:none <!--------Speaker of the House---------> | header1 = {{#if:{{{speaker|}}}| {{{speaker}}} {{#if:{{{state_legislature|}}} |[[Speaker of the {{{state_legislature}}} Legislature]] |{{#if:{{{state_assembly|}}} |[[Speaker of the {{{state_assembly|}}} {{#ifeq:{{{state_assembly|}}}|Nevada||{{#ifeq:{{{state_assembly|}}}|New Jersey|General|State}}}} Assembly]] |{{#if:{{{speaker_office|}}}|{{{speaker_office}}}|[[Speaker of the {{#if:{{{state_delegate|}}} |{{{state_delegate}}}|{{#if:{{{state_house|}}} |{{{state_house}}}|United States}}}} House of {{#if:{{{state_delegate|}}}|Delegates|Representatives}}|Speaker of the {{#if:{{{state_delegate|}}} |{{{state_delegate}}}|{{#if:{{{state_house|}}} |{{{state_house}}}|U.S.}}}} House of {{#if:{{{state_delegate|}}}|Delegates|Representatives}}]]}} }} }}{{#if:{{{prior_term|}}}| <br />{{{prior_term}}}}} }} <!--------Office---------> | header2 = {{#if:{{{nominee|}}}{{{candidate|}}}| {{#if:{{{party_election|}}}{{{party|}}} |{{#if:{{{party_election|}}}|{{{party_election}}}|{{{party}}}}} {{#if:{{{nominee|}}}|nominee for<br>{{{nominee}}}|candidate for<br>{{{candidate}}}}} |{{#if:{{{nominee|}}}|Nominee for<br>{{{nominee}}}|Candidate for<br>{{{candidate}}}}} }} }} | data3 = {{#if:{{{nominee|}}}{{{candidate|}}}| {{#if:{{{termstart|}}}{{{election_date|}}} | <span class="nowrap">'''Election date'''</span><br />{{#if:{{{election_date|}}}|{{{election_date}}}|{{{termstart}}}}} }} }} | header4 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}|| {{#if:{{{jr/sr|}}}|[[United States Senate|<!--Changed code to eliminate "Junior/Senior" distinction for U.S. Senators per [[Template talk:Infobox Officeholder/Archive 9#Senior/Junior U.S. Senators]]{{{jr/sr}}}-->United States Senator{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}}]]<br />from {{{state}}} }} }} | header5 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}|| {{{jr/sr and state|}}} }} | header6 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}|| {{#if:{{{state_senate|}}}|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_senate}}} Senate]]</span><br />from the {{{district}}} district{{#if:{{{prior_term|}}}| <br />{{{prior_term}}}}} }} }} | header7 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}|| {{#if:{{{state_legislature|}}}|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_legislature}}} Legislature]]</span><br />from the {{{district}}} district }} }} | header8 = {{#if:{{{ambassador_from|}}}{{{minister_from|}}}|| {{#if:{{{order|}}} |{{{order}}}{{#if:{{{office|}}} |&#32;[[{{{office}}}]]}}{{#if:{{{state|}}} |&#32;[[{{{state}}}]]}}{{#if:{{{title|}}} |&#32;{{{title}}}}} |{{{office|}}} }} }} | header9 = {{#if:{{{ambassador_from|}}}{{{minister_from|}}}|| {{#if:{{{order|}}} ||{{{title|}}} }} }} <!--------Ambassador---------> | header10 = {{#if:{{both|{{{ambassador_from|}}}{{{minister_from|}}}|{{{country|}}}}} |{{#if:{{{order|}}}|{{{order}}}}} {{#if:{{{minister_from|}}} |[[{{{minister_from}}} Ambassador to {{CountryPrefixThe|{{{country}}}}}|{{{minister_from}}} Minister to <span class="nowrap">{{CountryPrefixThe|{{{country}}}}}</span>]] |[[{{{ambassador_from}}} Ambassador to {{CountryPrefixThe|{{{country}}}}}|{{{ambassador_from}}} Ambassador to <span class="nowrap">{{CountryPrefixThe|{{{country}}}}}</span>]] }} [[Category:Pages using infobox officeholder with ambassador from or minister from]] }} <!--------MP---------> | header11 = {{#if:{{{constituency_AM|}}}{{{constituency_MP|}}}| {{#switch:{{{parliament|}}} |Australian = Member of the <span style="display: inline-block;">[[Australian House of Representatives|Australian Parliament]]</span> |European = [[Member of the European&nbsp;Parliament]] |Scottish = [[Member of the Scottish&nbsp;Parliament]] |Sri Lanka|Sri Lankan = [[Member of Parliament (Sri Lanka)|Member of Parliament]] |United Kingdom|UK = [[Member of Parliament (United Kingdom)|Member of Parliament]] |#default = {{#if:{{{constituency_AM|}}}|{{#if:{{{assembly|}}}|Member of the <span style="display: inline-block;">[[{{{assembly}}} Assembly]]</span>|Assembly Member}}|Member of {{#if:{{{parliament|}}}|the <span style="display: inline-block;">[[{{{parliament}}} Parliament]]</span>|Parliament}}}}}}<br />for {{#ifeq:{{Title disambig text|{{{constituency_MP|}}}}}|UK Parliament constituency |{{{constituency_MP|}}} |{{#if:{{#switch:{{{parliament|}}} |United Kingdom|UK| = {{Linkless exists|{{delink|{{{constituency_MP|}}}}} (UK Parliament constituency)}} }} |{{#if:{{Constlk|{{delink|{{{constituency_MP|}}}}}}} |{{Constlk|{{delink|{{{constituency_MP|}}}}}}} |{{{constituency_{{#if:{{{constituency_AM|}}}|AM|MP}}}}}}} |{{{constituency_{{#if:{{{constituency_AM|}}}|AM|MP}}}}}}} }}{{#if:{{{prior_term|}}}| <div style="font-weight:normal;">{{{prior_term}}}</div>}} }} | header12 = {{#if:{{{riding|}}}|{{#if:{{{constituency_AM|}}}|{{#if:{{{assembly|}}}|Member of the <span style="display: inline-block;">[[{{{assembly}}} Assembly]]</span>|Assembly Member}}| {{#switch:{{{parliament|}}} |Canadian = [[Member of Parliament (Canada)|Member of Parliament]] |#default = Member of {{#if:{{{parliament|}}}|the <span style="display: inline-block;">[[{{{parliament}}} Parliament]]</span>|Parliament}}}}}}<br />for {{{riding}}} }} <!--------Majority Leader (State Senate)---------> | header13 = {{#if:{{{majority_leader|}}}|{{{majority_leader}}} {{#if:{{{state_senate|}}}|[[Majority Leader of the {{{state_senate}}} Senate]]|[[United States Senate Majority Leader]]}} }} <!--------Majority Floor Leader (State Senate)---------> | header14 = {{#if:{{{majority_floor_leader|}}}|{{{majority_floor_leader}}} [[Majority Floor Leader of the {{{state_senate}}} Senate]] }} <!--------Minority Leader (State Senate)---------> | header15 = {{#if:{{{minority_leader|}}}|{{{minority_leader}}} [[Minority Leader of the {{{state_senate}}} Senate]] }} <!--------Minority Floor Leader (State Senate)---------> | header16 = {{#if:{{{minority_floor_leader|}}}|{{{minority_floor_leader}}} [[Minority Floor Leader of the {{{state_senate}}} Senate]] }} <!--------Congressman---------> | header17 = {{#if:{{{state_legislature|}}}{{{state_senate|}}}{{{jr/sr|}}}{{{jr/sr and state|}}}|| {{#if:{{#if:{{{state|}}}|{{{constituency|}}}}}{{{district|}}}{{{state_house|}}}|{{#if:{{{state_assembly|}}} |Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_assembly|}}} {{#ifeq:{{{state_assembly|}}}|Nevada||{{#ifeq:{{{state_assembly|}}}|New Jersey|General|State}}}} Assembly]]</span><br />from the |Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{#if:{{{state_house|}}} |{{{state_house}}}|{{#if:{{{state_delegate|}}}|{{{state_delegate}}}|United States }}}} {{#if:{{{state_delegate|}}}|House of Delegates|House of Representatives}}|{{#if:{{{state_house|}}} |{{{state_house}}}|{{#if:{{{state_delegate|}}}|{{{state_delegate}}}|U.S.}}}}&#32;{{#if:{{{state_delegate|}}}|House&#32;of&#32;Delegates|{{#if:{{{state_house|}}}| }}House&#32;of&#32;Representatives}}]]</span>{{#if:{{{district|}}}{{{state|}}}{{{state_delegate|}}}{{{state_house|}}}|<br />from {{#if:{{{state_delegate|}}}|the |{{#if:{{{state_house|}}}|{{#if:{{{district|}}}|the|{{{state|}}}}}|{{{state|}}}{{#if:{{{district|}}}|'s}}}}}} }}}} {{#if:{{{district|}}}|{{{district}}} district|{{#if:{{{state_house|}}}|{{{constituency|}}}}}}}{{#if:{{{prior_term|}}}| <br />{{{prior_term}}}}} }} }} <!--------Convocation---------> | header18 = {{#if:{{{convocation|}}}|{{{convocation}}}}} <!--------Term---------> | data19 = {{#if:{{{termend|}}}{{{succeeding|}}}{{{assuming|}}}| {{#if:{{{status|}}} | <div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''{{{status}}}'''</div>|}}| }} | data20 = {{#if:{{{nominee|}}}{{{candidate|}}}|| {{#if:{{{succeeding|}}}{{{assuming|}}} | <span class="nowrap">'''Assuming office'''</span><br />{{{termstart}}}{{#if:{{{term|}}}{{{termend|}}}|[[Category:Pages using infobox officeholder with succeeding and term or termend]]}} | {{#if: {{{term|}}} | <span class="nowrap">'''{{{termlabel|In office}}}'''</span><br />{{{term}}} }} }} }} | data21 = {{#if:{{{nominee|}}}{{{candidate|}}}|| {{#if:{{{succeeding|}}}{{{assuming|}}} | |{{#if:{{{termstart|}}} | {{#if:{{{termend|}}} |<!--then: term has start and end:--><span class="nowrap">'''{{{termlabel|In office}}}'''</span><br />{{en dash range|{{{termstart}}}|{{{termend}}}}}{{#if:{{{alongside|}}}{{{co-leader|}}}|<div style="line-height:normal; padding-top:0.2em; padding-bottom:0.1em">{{#if:{{{alongside|}}}|Serving|Co-leading}}&#32;with&#32;{{#if:{{{alongside|}}}|{{{alongside}}}|{{{co-leader}}}}}</div>}} |{{#if:{{{status|}}}|<div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''{{{status}}}'''</div>|<!--else: term is ongoing--><div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''[[Incumbent]]'''</div>}} }} }} }} }} | data22 = {{#if:{{{nominee|}}}{{{candidate|}}}|| {{#if:{{{succeeding|}}}{{{assuming|}}} | |{{#if:{{{termstart|}}} |{{#if:{{{termend|}}} |<!--then nothing else; term has ended--> |<!--else term is ongoing:--><span class="nowrap">'''{{#if:{{{termlabel|}}}|{{str rep|1={{{termlabel}}}|2=In office|3=Assumed office}}|Assumed office}}'''</span>&#32;<br />{{{termstart}}}{{#if:{{{alongside|}}}{{{co-leader|}}}|<div style="line-height:normal; padding-top:0.2em; padding-bottom:0.1em">{{#if:{{{alongside|}}}|Serving|Co-leader}}&#32;with&#32;{{#if:{{{alongside|}}}|{{{alongside}}}|{{{co-leader}}}}}</div>}} }} }} }} }} }} }}<!-- end infobox1 / start infobox2 -->{{#if:{{{monarch|}}}{{{president|}}}{{{governor-general|}}}{{{governor_general|}}}{{{primeminister|}}}{{{chancellor|}}}{{{minister|}}}{{{taoiseach|}}}{{{firstminister|}}}{{{chiefminister|}}}{{{premier|}}}{{{governor|}}}{{{lieutenant_governor|}}}{{{vicepresident|}}}{{{vicegovernor|}}}{{{viceprimeminister|}}}{{{vicepremier|}}}{{{deputy|}}}{{{leader|}}}{{{lieutenant|}}}{{{nominator|}}}{{{appointer|}}}{{{opponent|}}}{{{incumbent|}}}{{{succeeding|}}}{{{assuming|}}}{{{preceding|}}}{{{predecessor|}}}{{{preceded|}}}{{{successor|}}}{{{succeeded|}}}{{{parliamentarygroup|}}}{{{constituency|}}}{{{majority|}}}{{{suboffice|}}}{{{1namedata|}}}{{{2namedata|}}}{{{3namedata|}}}{{{4namedata|}}}{{{5namedata|}}}{{{runningmate|}}}| {{#invoke:infobox|infoboxTemplate|child=yes | labelstyle = text-align:left | label1 = <span class="nowrap">Nominated by</span> | data1 = {{{nominator|}}} | label2 = <span class="nowrap">Appointed by</span> | data2 = {{{appointer|}}} <!--------President, Prime Minister, Governor---------> | label3 = Monarch{{#if:{{detect singular|{{{monarch|}}}}}||s}} | data3 = {{{monarch|}}} | label4 = President | data4 = {{{president|}}} | label5 = {{#if:{{{governor_general|}}}|Governor{{#if:{{detect singular|{{{governor_general}}}}}||s}} General|Governor{{#if:{{detect singular|{{{governor-general}}}}}||s}}-General}} | data5 = {{#if:{{{governor_general|}}}|{{{governor_general}}}|{{{governor-general|}}}}} | label6 = <span class="nowrap">Prime Minister</span> | data6 = {{{primeminister|}}} | label7 = Chancellor | data7 = {{{chancellor|}}} | label8 = Minister | data8 = {{{minister|}}} | label9 = Taoiseach | data9 = {{{taoiseach|}}} | label10 = <span class="nowrap">First Minister</span> | data10 = {{{firstminister|}}} | label11 = <span class="nowrap">Chief Minister</span> | data11 = {{{chiefminister|}}} | label12 = Premier | data12 = {{{premier|}}} | label13 = Governor | data13 = {{{governor|}}} | label14 = Lieutenant Governor | data14 = {{{lieutenant_governor|}}} <!--------Vice president/s, Vice Prime Minister/s, Deputy/ies, Lieutenant/s---------> | label15 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice President]]|Vice President}}|Vice President}}</span> | data15 = {{{vicepresident|}}} | label16 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice Governor]]|Vice Governor}}|Vice Governor}}</span> | data16 = {{{vicegovernor|}}} | label17 = <span class="nowrap">{{#if:{{{office|}}}|[[Vice {{{office}}}|Vice PM]]|Vice [[Prime Minister|PM]]}}</span> | data17 = {{{viceprimeminister|}}} | label18 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice Premier]]|Vice Premier}}|Vice Premier}}</span> | data18 = {{{vicepremier|}}} | label19 = {{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Deputy {{{office}}}}}|valid|[[Deputy {{{office}}}|Deputy]]|Deputy}}|Deputy}} | data19 = {{{deputy|}}} | label20 = Leader | data20 = {{{leader|}}} | label21 = {{#if:{{{office|}}}|[[Lieutenant {{{office}}}|Lieutenant]]|Lieutenant}} | data21 = {{{lieutenant|}}} | label22 = {{nowrap|{{{subterm|}}}}} | data22 = {{{suboffice|}}} <!--------Blank fields---------> | label23 = {{{1blankname|}}} | data23 = {{{1namedata|}}} | label24 = {{{2blankname|}}} | data24 = {{{2namedata|}}} | label25 = {{{3blankname|}}} | data25 = {{{3namedata|}}} | label26 = {{{4blankname|}}} | data26 = {{{4namedata|}}} | label27 = {{{5blankname|}}} | data27 = {{{5namedata|}}} <!--------Predecessor/successor---------> | label28 = <span class="nowrap">Running mate</span> | data28 = {{{runningmate|}}} | label29 = Opponent{{Pluralize from text|{{{opponent|}}}|likely=(s)|plural=s}} | data29 = {{{opponent|}}} | label30 = Incumbent | data30 = {{{incumbent|}}} | label31 = {{#if:{{{succeeding|}}}|Succeeding|Preceding}} | data31 = {{#if:{{{succeeding|}}}|{{{succeeding|}}}|{{{preceding|}}}}} | label32 = <span class="nowrap">Preceded by</span> | data32 = {{#if:{{{succeeding|}}}||{{#if:{{{predecessor|}}}|{{{predecessor}}}|{{{preceded|}}}}}}} | label33 = <span class="nowrap">Succeeded by</span> | data33 = {{#if:{{{succeeding|}}}||{{#switch:{{#if:{{{successor|}}}|{{{successor}}}|{{{succeeded|}}}}} | Incumbent | '''Incumbent''' | ''Incumbent'' | [[Incumbent]] | incumbent | '''incumbent''' | ''incumbent'' | [[incumbent]] = | #default = {{#if:{{{successor|}}}|{{{successor}}}|{{{succeeded|}}}}} }}}} <!--------Constituency/Majority---------> | label34 = [[Parliamentary group]] | data34 = {{{parliamentarygroup|}}} | label35 = Constituency | data35 = {{#if:{{{state_house|}}}||{{{constituency|}}}}} | label36 = Majority | data36 = {{{majority|}}} }} }}<noinclude>{{documentation}}</noinclude> 78e1d0c6824133f19dbb0aa4c7571c928b233dbc Template:Ambox/doc 10 1309 2644 2023-09-17T23:40:21Z w>Paine Ellsworth 0 fmt wikitext text/x-wiki {{Documentation subpage}} <!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) --> {{High-use}} {{Lua|Module:Message box}} {{Mbox templates (small)}} {{tl|Ambox}} stands for '''A'''rticle '''m'''essage '''box''', which is a [[Help:Metatemplating|metatemplate]]. It is used to build message boxes for templates used in '''articles''', such as {{tl|underlinked}}. It offers several different colours, images and some other features. ==Basic usage== The box below shows the most common parameters that are accepted by {{Tl|Ambox}}. The purpose of each is described below. <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Ambox | name = | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = | image = | sect = {{{1|}}} | issue = | talk = {{{talk|}}} | fix = | date = {{{date|}}} | cat = | all = }} </syntaxhighlight> ==Full usage== {{Hidden begin |title=Full parameters| titlestyle = background:palegreen;}} The "All parameters" box shows all possible parameters for this template. However, it is not recommended to copy this, because it will never be required to use all parameters simultaneously. {| class="wikitable" align="left" style="background:transparent; width=30%;" !All parameters |- |<syntaxhighlight lang="wikitext" style="font-size:100%"> {{Ambox | name = | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = | image = | imageright = | smallimage = | smallimageright = | class = | style = | textstyle = | sect = {{{1|}}} | issue = | talk = {{{talk|}}} | fix = | date = {{{date|}}} | text = | smalltext = | plainlinks = no | removalnotice = | cat = | all = | cat2 = | all2 = | cat3 = | all3 = }} </syntaxhighlight> |} {{Hidden end}} {{clear}} ==Common parameters== === ''name'' === The ''name'' parameter specifies the name of the template, without the Template namespace prefix. For example {{Tl|Underlinked}} specifies {{Para|name|Underlinked}}. This parameter should be updated if the template is ever moved. The purpose of this parameter is twofold: * If incorrectly [[Wikipedia:Substitution|substituted]], it allows the meta-template to notify the name of the template which has been substituted, which may help editors to fix the problem. * It allows the template to have a more useful display on its template page, for example to show the date even when not specified, and to apply categorisation of the template itself. === ''subst'' === The ''subst'' parameter allows the meta-template to detect whether the template has been incorrectly substituted, and give an appropriate warning. It will also add such pages to [[:Category:Pages with incorrectly substituted templates]]. Just copy the code exactly as it appears in the box. === ''small'' === The ''small'' parameter should be passed through the template, as this will allow editors to use the small format by specifying {{para|small|left}} on an article: {{Ambox|nocat=true|small=left|text=This is the small left-aligned Ambox format.}} Otherwise the standard format will be produced: {{Ambox|nocat=true|text=This is the standard Ambox format.}} Other variations: * For templates which should ''never'' be small, specify {{Para|small|no}} or do not pass the small parameter at all. * For templates which should ''always'' be small, just specify {{Para|small|left}}. * For templates which should ''default to small'', try {{para|small|<nowiki>{{{small|left}}}</nowiki>}}. This will allow an editor to override by using {{para|small|no}} on an article. To use a small box that adjusts its width to match the text, use {{para|style|width: auto; margin-right: 0px;}} and {{para|textstyle|width: auto;}} together: {{Ambox|nocat=true|small=left|style=width: auto; margin-right: 0px;|textstyle=width: auto; margin-right: 0px;|text=This is the small left-aligned Ambox format with flexible width.}} See {{section link||sect}} below for more information on how to limit {{para|small}} display to cases when the template is being used for a section instead of the whole article (recommended, to prevent inconsistent top-of-article display). === ''type'' === The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below. {{Ambox |nocat=true | type = speedy | text = type=<u>speedy</u> – Speedy deletion issues, such as {{tl|db-g1}} and {{tl|db-g3}}. }} {{Ambox |nocat=true | type = delete | text = type=<u>delete</u> – Deletion issues, such as {{tl|article for deletion}} and {{tl|proposed deletion}}. }} {{Ambox |nocat=true | type = content | text = type=<u>content</u> – Content issues, such as {{tl|POV}} and {{tl|globalize}}. }} {{Ambox |nocat=true | type = style | text = type=<u>style</u> – Style issues, such as {{tl|cleanup}} and {{tl|underlinked}}. }} {{ambox |nocat=true | type = notice | text = type=<u>notice</u> – Article notices, such as {{tl|current}} and {{tl|in use}}. }} {{Ambox |nocat=true | type = move | text = type=<u>move</u> – Merge, split and transwiki proposals, such as {{tl|split}} and {{tl|merge}}. }} {{Ambox |nocat=true | type = protection | text = type=<u>protection</u> – Protection notices, such as {{tl|pp-vandalism}} and {{tl|pp-protected}}. }} If no ''type'' parameter is given the template defaults to {{para|type|notice}}. === ''image'' === You can choose a specific image to use for the template by using the ''image'' parameter. Images are specified using the standard syntax for inserting files in Wikipedia (see [[Wikipedia:Manual of Style/Images#How to place an image]].) Widths of 40-50px are typical. For example: * {{Tl|POV}} specifies {{Para|image|<nowiki>[[File:Unbalanced scales.svg|40px|link=|alt=]]</nowiki>}} and looks like this: {{POV|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} * {{tl|underlinked}} specifies {{para|image|<nowiki>[[File:Ambox wikify.svg|50x40px|link=|alt=]]</nowiki>}} and looks like this: {{underlinked|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} Please note: * If no image is specified then the default image corresponding to the ''type'' is used. (See [[#type]] above.) * If {{para|image|none}} is specified, then no image is used and the text uses the whole message box area. * If an icon is [[Wikipedia:Alternative text for images#Purely decorative images|purely decorative]] and also in the [[Wikipedia:Image use policy#Public_domain|public domain]], [[Wikipedia:Manual of Style/Accessibility|accessibility]] can be improved by suppressing the link to the file page by adding "{{para|link}}{{para|alt}}" as seen above. === ''sect'' === Many article message templates begin with the text '''This article ...''' and it is often desirable that this wording change to '''This section ...''' if the template is used on a section instead. The value of this parameter will replace the word "article". Various possibilities for use include: {{para|sect|list}}, {{para|sect|table}}, {{para|sect|"In popular culture" material}}, etc. {{em|If using this feature, be sure to remove the first two words ("This article") from the template's text, otherwise it will be duplicated.}} A common way to facilitate this functionality is to pass {{para|sect|<nowiki>{{{1|}}}</nowiki>}}. This will allow editors to type <kbd>section</kbd>, for example, as the first unnamed parameter of the template to change the wording. For example, {{tlx|Advert|section}} produces: {{Advert|section|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} Another approach is to pass {{para|sect|<nowiki>{{{section|{{{sect|}}}}}}</nowiki>}} to provide a named value. Another is to use {{tlx|Yesno}} to parse the value for a positive, and pass {{para|sect|section}} if true. {{em|These approaches can be combined}}, and this is recommended. The following ready-to-use code: {{block indent|1=<code><nowiki>| sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section}}}}}} }}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}} }}</nowiki></code>}} enables the following: * Any positive value that {{tlx|Yesno}} can detect will be used with the named parameter in the ambox-based template to get "section" instead of "article": {{para|section|y}}, {{para|sect|True}}, etc. It is recommended to allow both {{para|sect}} and {{para|section}} so that editors do not have to guess which one will work. The sample code above does this for you. * Any other value passed, in any manner, will replace "article": {{para||section and its subsections}}, {{para|1|list}}, {{para|sect|section}}, {{para|section|table}}, etc. It is also advisable to restrict use of the {{para|small}} parameter so that it is made contingent upon the template being applied to a section (or whatever) rather than the whole article, to prevent the small version of the template being used at the top of the article where it would be inconsistent with other article-wide cleanup/dispute banners: {{block indent|1=<code><nowiki>| small = {{#if:{{{sect|{{{section|{{{1|}}}}}}}}}|{{#if:{{{small|{{{left|}}}}}}|left}} }}</nowiki></code>}} (In this case, any value of {{para|small}} or {{para|left}} will trigger the small, left display, as long as some value of {{para|sect}} or one of its aliases in that template has also been provided.) This code can be copy-pasted and used with the above code block. See, e.g., [[Template:Trivia]] and its [[Template:Trivia/testcases]] to observe the combined functionality. === ''issue'' and ''fix'' === The ''issue'' parameter is used to describe the issue with the article. Try to keep it short and to-the-point (approximately 10-20 words) and be sure to include a link to a relevant [[Wikipedia:Policies and guidelines|policy or guideline]]. The ''fix'' parameter contains some text which describes what should be done to improve the article. It may be longer than the text in ''issue'', but should not usually be more than two sentences. When the template is in its compact form (when placed inside {{tl|multiple issues}}) or small form (when using {{para|small|left}}), the ''issue'' is the only text that will be displayed. For example, {{Tl|Citation style}} defines * <syntaxhighlight lang="text" inline>|issue=This article '''has an unclear citation style'''.</syntaxhighlight> * <syntaxhighlight lang="text" inline>|fix=The references used may be made clearer with a different or consistent style of [[Wikipedia:Citing sources|citation]], [[Wikipedia:Footnotes|footnoting]], or [[Wikipedia:External links|external linking]].</syntaxhighlight> When used stand-alone it produces the whole text: {{Citation style|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} But when used inside {{Tl|Multiple issues}} or with {{Para|small|left}} it displays only the issue: {{Multiple issues <!-- Even though there's only one "issue", please don't remove this {{Multiple issues}} template. It is a demonstration of the formatting. --> |{{Citation style|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}}} {{Citation style|small=left|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} === ''talk'' === Some article message templates include a link to the talk page, and allow an editor to specify a section heading to link directly to the relevant section. To achieve this functionality, simply pass the ''talk'' parameter through, i.e. {{para|talk|<nowiki>{{{talk|}}}</nowiki>}} This parameter may then be used by an editor as follows: * {{para|talk|SECTION HEADING}} – the link will point to the specified section on the article's talk page, e.g. {{para|talk|Foo}} * {{para|talk|FULL PAGE NAME}} – the template will link to the page specified (which may include a [[Help:Link#Section linking (anchors)|section anchor]]), e.g. {{para|talk|Talk:Banana#Foo}} Notes: * When this parameter is used by a template, the talk page link will appear on the template itself (in order to demonstrate the functionality) but this will only display on articles if the parameter is actually defined. * In order to make sure there is always a link to the talk page, you can use {{para|talk|<nowiki>{{{talk|#}}}</nowiki>}}. * If the talk page does not exist, there will be no link, whatever the value of the parameter. === ''date'' === Passing the ''date'' parameter through to the meta-template means that the date that the article is tagged may be specified by an editor (or more commonly a [[Wikipedia:Bots|bot]]). This will be displayed after the message in a smaller font. Passing this parameter also enables [[:Category:Wikipedia maintenance categories sorted by month|monthly cleanup categorisation]] when the ''cat'' parameter is also defined. === ''info'' === This parameter is for specifying additional information. Whatever you add here will appear after the date, and will not be displayed if the template is being wrapped in {{tl|multiple issues}}. === ''removalnotice'' === If you specify {{para|removalnotice|yes}}, then the following notice will be displayed after the date and after the ''info'' text: * <small>[[Help:Maintenance template removal|Learn how and when to remove this template message]].</small> This will not be displayed if the template is being wrapped in {{tl|multiple issues}}. === ''cat'' === This parameter defines a monthly cleanup category. If {{para|cat|CATEGORY}} then: * articles will be placed in '''Category:CATEGORY from DATE''' if {{para|date|DATE}} is specified. * articles will be placed in '''Category:CATEGORY''' if the date is not specified. For example, {{Tl|No footnotes}} specifies {{Para|cat|Articles lacking in-text citations}} and so an article with the template {{Tlx|No footnotes|2=date=June 2010}} will be placed in [[:Category:Articles lacking in-text citations from June 2010]]. The ''cat'' parameter should not be linked, nor should the prefix <code>Category:</code> be used. === ''all'' === The ''all'' parameter defines a category into which all articles should be placed. The ''all'' parameter should not be linked, nor should the prefix <code>Category:</code> be used. == Additional parameters == === ''imageright'' === An image on the right side of the message box may be specified using this parameter. The syntax is the same as for the ''image'' parameter, except that the default is no image. === ''smallimage'' and ''smallimageright'' === Images for the small format box may be specified using these parameters. They will have no effect unless {{para|small|left}} is specified. === ''class'' === Custom [[Cascading Style Sheets|CSS]] classes to apply to the box. If adding multiple classes, they should be space-separated. === ''style'' and ''textstyle'' === Optional CSS values may be defined, without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. * ''style'' specifies the style used by the entire message box table. This can be used to do things such as modifying the width of the box. * ''textstyle'' relates to the text cell. === ''text'' and ''smalltext'' === Instead of specifying the ''issue'' and the ''fix'' it is possible to use the ''text'' parameter instead. Customised text for the small format can be defined using ''smalltext''. === ''plainlinks'' === Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}. === ''cat2'', ''cat3'', ''all2'', and ''all3'' === * ''cat2'' and ''cat3'' provide for additional monthly categories; see [[#cat]]. * ''all2'' and ''all3'' provide for additional categories into which all articles are placed, just like [[#all]]. == Technical notes == * If you need to use special characters in the text parameter then you need to escape them like this: <syntaxhighlight lang="wikitext"> {{Ambox |nocat=true | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe &#124; and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} </syntaxhighlight> {{Ambox |nocat=true | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe &#124; and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} * The <code>&lt;div></code> tags that surround the text in the example above are usually not needed. But if the text contains line breaks then sometimes we get weird line spacing. This especially happens when using vertical dotted lists. Then use the div tags to fix that. * The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons. * For more technical details see the [[Template talk:Ambox|talk page]] and the "See also" links below. Since this template works almost exactly like {{Tl|Tmbox}}, {{Tl|Imbox}}, {{Tl|Cmbox}} and {{Tl|Ombox}} their talk pages and related pages might also contain more details. ==Display on mobile devices== The MediaWiki developers have been conducted ongoing readability studies on ambox on the [https://en.m.wikipedia.org mobile version of Wikipedia]. Until further notice, code installed by the developers on the mobile version will generally override what we do here regarding the display and layout of this template. For more information, see [[:MW:Reading/Web/Projects/Mobile Page Issues]]. == TemplateData == {{TemplateData header|noheader=1}} <templatedata> { "params": { "1": {}, "small": { "label": "Small Mode", "description": "The small parameter should be passed through the template, as this will allow editors to use the small format by specifying |small=left on an article.", "type": "string", "suggestedvalues": [ "no", "left" ] }, "talk": { "autovalue": "{{{talk|}}}" }, "date": {}, "name": { "label": "Template Name", "description": "The name parameter specifies the name of the template, without the Template namespace prefix. ", "type": "string" }, "type": { "description": "Type of issue the template describes. Defines the colour of the left bar, and the image that is used by default", "type": "line", "suggestedvalues": [ "speedy", "delete", "content", "style", "notice", "move", "protection" ] }, "image": { "description": "Image used with the template", "type": "wiki-file-name" }, "sect": { "description": "Parameter that can be used to change the text \"this article\" to \"this section\" or something else", "type": "line", "suggestedvalues": [ "{{{1|}}}" ] }, "issue": { "description": "Describes the issue with the article", "type": "content" }, "fix": { "description": "Describes what should be done to improve the article", "type": "content" }, "subst": { "description": "Allows the meta-template to detect whether the template has been incorrectly substituted" }, "info": { "description": "Specifies additional information" }, "removalnotice": { "description": "Displays a notice about when and how to remove the template message", "type": "boolean" }, "cat": { "description": "Defines a monthly cleanup category" }, "all": { "description": "Defines a category into which all articles should be placed" }, "imageright": {}, "class": {}, "text ": {}, "plainlinks": {}, "smallimage ": {}, "smallimageright": {}, "textstyle": {}, "style ": {}, "smalltext": {}, "cat2": {}, "cat3": {}, "all2": {}, "all3": {} }, "paramOrder": [ "name", "subst", "small", "type", "image", "sect", "issue", "fix", "talk", "date", "1", "info", "removalnotice", "cat", "all", "imageright", "class", "text ", "plainlinks", "smallimage ", "smallimageright", "textstyle", "style ", "smalltext", "cat2", "cat3", "all2", "all3" ] } </templatedata> == Mbox family == {{Mbox templates see also}} == See also == * [[Wikipedia:Manual of Style/Article message boxes]] – The historical style guideline for creating article message boxes. <includeonly>{{sandbox other|| <!-- Add categories below this line, and interwikis at Wikidata --> [[Category:Article message templates| ]] [[Category:Mbox and messagebox templates]] }}</includeonly> c7aefac73ea2ee9bb36c0ca5e40d4f3afd61c3e1 Template:Film date 10 1344 2679 2023-09-19T07:02:20Z w>Gonnym 0 Undid revision 1176062049 by [[Special:Contributions/Gonnym|Gonnym]] ([[User talk:Gonnym|talk]]) seems there are errors wikitext text/x-wiki {{#if:{{{1|}}} |{{Main other|demospace={{{demospace|}}} |{{#ifexpr:{{#time:U|{{{1}}}-{{#if:{{{2|}}}|{{{2}}}|01}}-{{#if:{{{3|}}}|{{{3}}}|01}}}} > {{#time:U|{{CURRENTTIMESTAMP}}}} | [[Category:Upcoming {{#if:{{{TV|}}}|television}} films]] }}{{#ifexist:Category:{{{fy|{{{1}}}}}} {{#if:{{{TV|}}}|television}} films | [[Category:{{{fy|{{{1}}}}}} {{#if:{{{TV|}}}|television}} films]] }} }} }}{{Plainlist| * {{Start date|{{{1|}}}|{{{2|}}}|{{{3|}}}|df={{{df|}}}}}{{#if:{{{4|}}}|&#32;({{{4|}}}){{{ref1|}}}|{{{ref1|}}}}}{{#if:{{{5|}}}| * {{Start date|{{{5}}}|{{{6|}}}|{{{7|}}}|df={{{df|}}}}}{{#if:{{{8|}}}|&#32;({{{8|}}}){{{ref2|}}}|{{{ref2|}}}}}}}{{#if:{{{9|}}}| * {{Start date|{{{9}}}|{{{10|}}}|{{{11|}}}|df={{{df|}}}}}{{#if:{{{12|}}}|&#32;({{{12|}}}){{{ref3|}}}|{{{ref3|}}}}}}}{{#if:{{{13|}}}| * {{Start date|{{{13}}}|{{{14|}}}|{{{15|}}}|df={{{df|}}}}}{{#if:{{{16|}}}|&#32;({{{16|}}}){{{ref4|}}}|{{{ref4|}}}}}}}{{#if:{{{17|}}}| * {{Start date|{{{17}}}|{{{18|}}}|{{{19|}}}|df={{{df|}}}}}{{#if:{{{20|}}}|&#32;({{{20|}}}){{{ref5|}}}|{{{ref5|}}}}}}} }}<!-- # Tracking categories added 3 April 2020 by User:BrownHairedGirl -->{{Main other|<!-- -->{{#if: {{{fy|}}}<!-- -->|[[Category:Template film date with category override]]<!-- -->}}<!-- -->{{#if: {{{17|}}}<!-- -->|[[Category:Template film date with 5 release dates]]<!-- -->|{{#if: {{{13|}}}<!-- -->|[[Category:Template film date with 4 release dates]]<!-- -->|{{#if: {{{9|}}}<!-- -->|[[Category:Template film date with 3 release dates]]<!-- -->|{{#if: {{{5|}}}<!-- -->|[[Category:Template film date with 2 release dates]]<!-- -->|{{#if: {{{1|}}}<!-- -->|[[Category:Template film date with 1 release date]]<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- --><noinclude>{{Documentation}}</noinclude> 89f1fedaf1d01160c6062452636664ececfaf823 Module:Disambiguation 828 133 315 2023-09-19T18:27:51Z wikipedia>MSGJ 0 deploy new version, code by [[User:Mr. Stradivarius]] Scribunto text/plain local p = {} local mRedirect = require('Module:Redirect') local disambiguationTemplates = mw.loadData('Module:Disambiguation/templates') local function capitalize(s) -- This function only works on ASCII strings. If your wiki has -- disambiguation templates that use Unicode strings, use the commented-out -- line instead. Enwiki uses ASCII string manipulation only here to improve -- performance. return s:sub(1, 1):upper() .. s:sub(2, -1) -- return mw.ustring.upper(mw.ustring.sub(1, 1)) .. mw.ustring.sub(2, -1) end local function isDisambiguationTemplate(template) return disambiguationTemplates[capitalize(template)] or false end p.isDisambiguation = function(content) -- false if there is no content if content == nil then return false end -- redirects are not disambiguation pages if mRedirect.getTargetFromText(content) ~= nil then return false end -- check for disambiguation templates in the content local templateNames = {} for template in string.gmatch(content, "{{%s*([^|}]-)%s*[|}]") do if isDisambiguationTemplate(template) then return true end end -- check for magic word if string.find(content, "__DISAMBIG__", 1, true) ~= nil then return true end return false end p._isDisambiguationPage = function(page) -- Look "(disambiguation)" in the title if string.find(page, "(disambiguation)",0,true) ~= nil then return true; end -- Look for disamiguation template in page content local title = mw.title.new(page) if not title then return false end local content = title:getContent() return p.isDisambiguation(content) end -- Entry points for templates p.isDisambiguationPage = function(frame) local title = frame.args[1] return p._isDisambiguationPage(title) and "yes" or "" end return p fedda4d3046080cab39fcd65ab9a9318912a8d57 Template:Person infobox header 10 204 462 2023-09-20T04:58:38Z wikipedia>Jonesey95 0 add documentation template wikitext text/x-wiki {{ombox|type=content|text=The design and content of biographical infoboxes must follow Wikipedia's [[Wikipedia:Verifiability|verifiability policy]], as well as [[Wikipedia:Manual of Style/Infoboxes|infobox]] and [[Wikipedia:Manual of Style/Biography|biographical style guideline]]. All content displayed in this template must adhere to the '''[[Wikipedia:Biographies of living persons|biographies of living persons]]''' policy if applicable. [[Wikipedia:Citing sources|Unsourced or poorly sourced]] contentious material '''must be removed immediately''' from the article and its infobox, especially if potentially [[Wikipedia:Libel|libellous]].}} <noinclude> {{documentation |content= {{no documentation}} {{Uncat}} }} </noinclude> 9f982493e161c304a75d9b6b06d5b730ee1bb282 Module:Citation/CS1/Identifiers 828 894 1978 2023-09-20T15:12:36Z wikipedia>Trappist the monk 0 tweak to support new oclc limit; Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local has_accept_as_written, is_set, in_array, set_message, select_one, -- functions in Module:Citation/CS1/Utilities substitute, make_wikilink; local z; -- table of tables defined in Module:Citation/CS1/Utilities local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration --[[--------------------------< P A G E S C O P E V A R I A B L E S >-------------------------------------- declare variables here that have page-wide scope that are not brought in from other modules; that are created here and used here ]] local auto_link_urls = {}; -- holds identifier URLs for those identifiers that can auto-link |title= --============================<< H E L P E R F U N C T I O N S >>============================================ --[[--------------------------< W I K I D A T A _ A R T I C L E _ N A M E _ G E T >---------------------------- as an aid to internationalizing identifier-label wikilinks, gets identifier article names from Wikidata. returns :<lang code>:<article title> when <q> has an <article title> for <lang code>; nil else for identifiers that do not have q, returns nil for wikis that do not have mw.wikibase installed, returns nil ]] local function wikidata_article_name_get (q) if not is_set (q) or (q and not mw.wikibase) then -- when no q number or when a q number but mw.wikibase not installed on this wiki return nil; -- abandon end local wd_article; local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org wd_article = mw.wikibase.getSitelink (q, this_wiki_code .. 'wiki'); -- fetch article title from WD; nil when no title available at this wiki if wd_article then wd_article = table.concat ({':', this_wiki_code, ':', wd_article}); -- interwiki-style link without brackets if taken from WD; leading colon required end return wd_article; -- article title from WD; nil else end --[[--------------------------< L I N K _ L A B E L _ M A K E >------------------------------------------------ common function to create identifier link label from handler table or from Wikidata returns the first available of 1. redirect from local wiki's handler table (if enabled) 2. Wikidata (if there is a Wikidata entry for this identifier in the local wiki's language) 3. label specified in the local wiki's handler table ]] local function link_label_make (handler) local wd_article; if not (cfg.use_identifier_redirects and is_set (handler.redirect)) then -- redirect has priority so if enabled and available don't fetch from Wikidata because expensive wd_article = wikidata_article_name_get (handler.q); -- if Wikidata has an article title for this wiki, get it; end return (cfg.use_identifier_redirects and is_set (handler.redirect) and handler.redirect) or wd_article or handler.link; end --[[--------------------------< E X T E R N A L _ L I N K _ I D >---------------------------------------------- Formats a wiki-style external link ]] local function external_link_id (options) local url_string = options.id; local ext_link; local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org local wd_article; -- article title from Wikidata if options.encode == true or options.encode == nil then url_string = mw.uri.encode (url_string, 'PATH'); end if options.auto_link and is_set (options.access) then auto_link_urls[options.auto_link] = table.concat ({options.prefix, url_string, options.suffix}); end ext_link = mw.ustring.format ('[%s%s%s %s]', options.prefix, url_string, options.suffix or "", mw.text.nowiki (options.id)); if is_set (options.access) then ext_link = substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[options.access].class, cfg.presentation[options.access].title, ext_link}); -- add the free-to-read / paywall lock end return table.concat ({ make_wikilink (link_label_make (options), options.label), -- redirect, Wikidata link, or locally specified link (in that order) options.separator or '&nbsp;', ext_link }); end --[[--------------------------< I N T E R N A L _ L I N K _ I D >---------------------------------------------- Formats a wiki-style internal link TODO: Does not currently need to support options.access, options.encode, auto-linking and COinS (as in external_link_id), but may be needed in the future for :m:Interwiki_map custom-prefixes like :arxiv:, :bibcode:, :DOI:, :hdl:, :ISSN:, :JSTOR:, :Openlibrary:, :PMID:, :RFC:. ]] local function internal_link_id (options) local id = mw.ustring.gsub (options.id, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9 return table.concat ( { make_wikilink (link_label_make (options), options.label), -- wiki-link the identifier label options.separator or '&nbsp;', -- add the separator make_wikilink ( table.concat ( { options.prefix, id, -- translated to Western digits options.suffix or '' }), substitute (cfg.presentation['bdi'], {'', mw.text.nowiki (options.id)}) -- bdi tags to prevent Latin script identifiers from being reversed at RTL language wikis ); -- nowiki because MediaWiki still has magic links for ISBN and the like; TODO: is it really required? }); end --[[--------------------------< I S _ E M B A R G O E D >------------------------------------------------------ Determines if a PMC identifier's online version is embargoed. Compares the date in |pmc-embargo-date= against today's date. If embargo date is in the future, returns the content of |pmc-embargo-date=; otherwise, returns an empty string because the embargo has expired or because |pmc-embargo-date= was not set in this cite. ]] local function is_embargoed (embargo) if is_set (embargo) then local lang = mw.getContentLanguage(); local good1, embargo_date, todays_date; good1, embargo_date = pcall (lang.formatDate, lang, 'U', embargo); todays_date = lang:formatDate ('U'); if good1 then -- if embargo date is a good date if tonumber (embargo_date) >= tonumber (todays_date) then -- is embargo date is in the future? return embargo; -- still embargoed else set_message ('maint_pmc_embargo'); -- embargo has expired; add main cat return ''; -- unset because embargo has expired end end end return ''; -- |pmc-embargo-date= not set return empty string end --[=[-------------------------< I S _ V A L I D _ R X I V _ D A T E >------------------------------------------ for biorxiv, returns true if: 2019-12-11T00:00Z <= biorxiv_date < today + 2 days for medrxiv, returns true if: 2020-01-01T00:00Z <= medrxiv_date < today + 2 days The dated form of biorxiv identifier has a start date of 2019-12-11. The Unix timestamp for that date is {{#time:U|2019-12-11}} = 1576022400 The medrxiv identifier has a start date of 2020-01-01. The Unix timestamp for that date is {{#time:U|2020-01-01}} = 1577836800 <rxiv_date> is the date provided in those |biorxiv= parameter values that are dated and in |medrxiv= parameter values at time 00:00:00 UTC <today> is the current date at time 00:00:00 UTC plus 48 hours if today's date is 2023-01-01T00:00:00 then adding 24 hours gives 2023-01-02T00:00:00 – one second more than today adding 24 hours gives 2023-01-03T00:00:00 – one second more than tomorrow inputs: <y>, <m>, <d> – year, month, day parts of the date from the birxiv or medrxiv identifier <select> 'b' for biorxiv, 'm' for medrxiv; defaults to 'b' ]=] local function is_valid_rxiv_date (y, m, d, select) if 0 == tonumber (m) and 12 < tonumber (m) then -- <m> must be a number 1–12 return false; end if 0 == tonumber (d) and 31 < tonumber (d) then -- <d> must be a number 1–31; TODO: account for month length and leap yer? return false; end local rxiv_date = table.concat ({y, m, d}, '-'); -- make ymd date string local good1, good2; local rxiv_ts, tomorrow_ts; -- to hold Unix timestamps representing the dates local lang_object = mw.getContentLanguage(); good1, rxiv_ts = pcall (lang_object.formatDate, lang_object, 'U', rxiv_date); -- convert rxiv_date value to Unix timestamp good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which tonumber() may not understand rxiv_ts = tonumber (rxiv_ts) or lang_object:parseFormattedNumber (rxiv_ts); -- convert to numbers for the comparison; tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts); else return false; -- one or both failed to convert to Unix timestamp end local limit_ts = ((select and ('m' == select)) and 1577836800) or 1576022400; -- choose the appropriate limit timesatmp return ((limit_ts <= rxiv_ts) and (rxiv_ts < tomorrow_ts)) -- limit_ts <= rxiv_date < tomorrow's date end --[[--------------------------< IS _ V A L I D _ I S X N >----------------------------------------------------- ISBN-10 and ISSN validator code calculates checksum across all ISBN/ISSN digits including the check digit. ISBN-13 is checked in isbn(). If the number is valid the result will be 0. Before calling this function, ISBN/ISSN must be checked for length and stripped of dashes, spaces and other non-ISxN characters. ]] local function is_valid_isxn (isxn_str, len) local temp = 0; isxn_str = { isxn_str:byte(1, len) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39, 'X' → 0x58 len = len + 1; -- adjust to be a loop counter for i, v in ipairs (isxn_str) do -- loop through all of the bytes and calculate the checksum if v == string.byte ("X" ) then -- if checkdigit is X (compares the byte value of 'X' which is 0x58) temp = temp + 10 * (len - i); -- it represents 10 decimal else temp = temp + tonumber (string.char (v) )*(len-i); end end return temp % 11 == 0; -- returns true if calculation result is zero end --[[--------------------------< IS _ V A L I D _ I S X N _ 1 3 >----------------------------------------------- ISBN-13 and ISMN validator code calculates checksum across all 13 ISBN/ISMN digits including the check digit. If the number is valid, the result will be 0. Before calling this function, ISBN-13/ISMN must be checked for length and stripped of dashes, spaces and other non-ISxN-13 characters. ]] local function is_valid_isxn_13 (isxn_str) local temp=0; isxn_str = { isxn_str:byte(1, 13) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39 for i, v in ipairs (isxn_str) do temp = temp + (3 - 2*(i % 2)) * tonumber (string.char (v) ); -- multiply odd index digits by 1, even index digits by 3 and sum; includes check digit end return temp % 10 == 0; -- sum modulo 10 is zero when ISBN-13/ISMN is correct end --[[--------------------------< N O R M A L I Z E _ L C C N >-------------------------------------------------- LCCN normalization (https://www.loc.gov/marc/lccn-namespace.html#normalization) 1. Remove all blanks. 2. If there is a forward slash (/) in the string, remove it, and remove all characters to the right of the forward slash. 3. If there is a hyphen in the string: a. Remove it. b. Inspect the substring following (to the right of) the (removed) hyphen. Then (and assuming that steps 1 and 2 have been carried out): 1. All these characters should be digits, and there should be six or less. (not done in this function) 2. If the length of the substring is less than 6, left-fill the substring with zeroes until the length is six. Returns a normalized LCCN for lccn() to validate. There is no error checking (step 3.b.1) performed in this function. ]] local function normalize_lccn (lccn) lccn = lccn:gsub ("%s", ""); -- 1. strip whitespace if nil ~= string.find (lccn, '/') then lccn = lccn:match ("(.-)/"); -- 2. remove forward slash and all character to the right of it end local prefix local suffix prefix, suffix = lccn:match ("(.+)%-(.+)"); -- 3.a remove hyphen by splitting the string into prefix and suffix if nil ~= suffix then -- if there was a hyphen suffix = string.rep("0", 6-string.len (suffix)) .. suffix; -- 3.b.2 left fill the suffix with 0s if suffix length less than 6 lccn = prefix..suffix; -- reassemble the LCCN end return lccn; end --============================<< I D E N T I F I E R F U N C T I O N S >>==================================== --[[--------------------------< A R X I V >-------------------------------------------------------------------- See: https://arxiv.org/help/arxiv_identifier format and error check arXiv identifier. There are three valid forms of the identifier: the first form, valid only between date codes 9107 and 0703, is: arXiv:<archive>.<class>/<date code><number><version> where: <archive> is a string of alpha characters - may be hyphenated; no other punctuation <class> is a string of alpha characters - may be hyphenated; no other punctuation; not the same as |class= parameter which is not supported in this form <date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01 first digit of YY for this form can only 9 and 0 <number> is a three-digit number <version> is a 1 or more digit number preceded with a lowercase v; no spaces (undocumented) the second form, valid from April 2007 through December 2014 is: arXiv:<date code>.<number><version> where: <date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01 <number> is a four-digit number <version> is a 1 or more digit number preceded with a lowercase v; no spaces the third form, valid from January 2015 is: arXiv:<date code>.<number><version> where: <date code> and <version> are as defined for 0704-1412 <number> is a five-digit number ]] local function arxiv (options) local id = options.id; local class = options.Class; -- TODO: lowercase? local handler = options.handler; local year, month, version; local err_msg = false; -- assume no error message local text; -- output text if id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%d$") or id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%dv%d+$") then -- test for the 9107-0703 format with or without version year, month = id:match("^%a[%a%.%-]+/([90]%d)([01]%d)%d%d%d[v%d]*$"); year = tonumber (year); month = tonumber (month); if ((not (90 < year or 8 > year)) or (1 > month or 12 < month)) or -- if invalid year or invalid month ((91 == year and 7 > month) or (7 == year and 3 < month)) then -- if years ok, are starting and ending months ok? err_msg = true; -- flag for error message end elseif id:match("^%d%d[01]%d%.%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%dv%d+$") then -- test for the 0704-1412 with or without version year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d[v%d]*$"); year = tonumber (year); month = tonumber (month); if ((7 > year) or (14 < year) or (1 > month or 12 < month)) or -- is year invalid or is month invalid? (doesn't test for future years) ((7 == year) and (4 > month)) then -- when year is 07, is month invalid (before April)? err_msg = true; -- flag for error message end elseif id:match("^%d%d[01]%d%.%d%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%d%dv%d+$") then -- test for the 1501- format with or without version year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d%d[v%d]*$"); year = tonumber (year); month = tonumber (month); if ((15 > year) or (1 > month or 12 < month)) then -- is year invalid or is month invalid? (doesn't test for future years) err_msg = true; -- flag for error message end else err_msg = true; -- not a recognized format; flag for error message end if err_msg then options.coins_list_t['ARXIV'] = nil; -- when error, unset so not included in COinS end local err_msg_t = {}; if err_msg then set_message ('err_bad_arxiv'); end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}); if is_set (class) then if id:match ('^%d+') then text = table.concat ({text, ' [[https://arxiv.org/archive/', class, ' ', class, ']]'}); -- external link within square brackets, not wikilink else set_message ('err_class_ignored'); end end return text; end --[[--------------------------< B I B C O D E >-------------------------------------------------------------------- Validates (sort of) and formats a bibcode ID. Format for bibcodes is specified here: https://adsabs.harvard.edu/abs_doc/help_pages/data.html#bibcodes But, this: 2015arXiv151206696F is apparently valid so apparently, the only things that really matter are length, 19 characters and first four digits must be a year. This function makes these tests: length must be 19 characters characters in position 1–4 must be digits and must represent a year in the range of 1000 – next year 5 must be a letter 6–8 must be letter, digit, ampersand, or dot (ampersand cannot directly precede a dot; &. ) 9–18 must be letter, digit, or dot 19 must be a letter or dot ]] local function bibcode (options) local id = options.id; local access = options.access; local handler = options.handler; local ignore_invalid = options.accept; local err_type; local err_msg = ''; local year; local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access}); if 19 ~= id:len() then err_type = cfg.err_msg_supl.length; else year = id:match ("^(%d%d%d%d)[%a][%w&%.][%w&%.][%w&%.][%w.]+[%a%.]$"); if not year then -- if nil then no pattern match err_type = cfg.err_msg_supl.value; -- so value error else local next_year = tonumber (os.date ('%Y')) + 1; -- get the current year as a number and add one for next year year = tonumber (year); -- convert year portion of bibcode to a number if (1000 > year) or (year > next_year) then err_type = cfg.err_msg_supl.year; -- year out of bounds end if id:find('&%.') then err_type = cfg.err_msg_supl.journal; -- journal abbreviation must not have '&.' (if it does it's missing a letter) end if id:match ('.........%.tmp%.') then -- temporary bibcodes when positions 10–14 are '.tmp.' set_message ('maint_bibcode'); end end end if is_set (err_type) and not ignore_invalid then -- if there was an error detected and accept-as-written markup not used set_message ('err_bad_bibcode', {err_type}); options.coins_list_t['BIBCODE'] = nil; -- when error, unset so not included in COinS end return text; end --[[--------------------------< B I O R X I V >----------------------------------------------------------------- Format bioRxiv ID and do simple error checking. Before 2019-12-11, biorXiv IDs were 10.1101/ followed by exactly 6 digits. After 2019-12-11, biorXiv IDs retained the six-digit identifier but prefixed that with a yyyy.mm.dd. date and suffixed with an optional version identifier. The bioRxiv ID is the string of characters: https://doi.org/10.1101/078733 -> 10.1101/078733 or a date followed by a six-digit number followed by an optional version indicator 'v' and one or more digits: https://www.biorxiv.org/content/10.1101/2019.12.11.123456v2 -> 10.1101/2019.12.11.123456v2 see https://www.biorxiv.org/about-biorxiv ]] local function biorxiv (options) local id = options.id; local handler = options.handler; local err_msg = true; -- flag; assume that there will be an error local patterns = { '^10%.1101/%d%d%d%d%d%d$', -- simple 6-digit identifier (before 2019-12-11) '^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%dv%d+$', -- y.m.d. date + 6-digit identifier + version (after 2019-12-11) '^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d$', -- y.m.d. date + 6-digit identifier (after 2019-12-11) } for _, pattern in ipairs (patterns) do -- spin through the patterns looking for a match if id:match (pattern) then local y, m, d = id:match (pattern); -- found a match, attempt to get year, month and date from the identifier if m then -- m is nil when id is the six-digit form if not is_valid_rxiv_date (y, m, d, 'b') then -- validate the encoded date; 'b' for biorxiv limit break; -- date fail; break out early so we don't unset the error message end end err_msg = nil; -- we found a match so unset the error message break; -- and done end end -- err_cat remains set here when no match if err_msg then options.coins_list_t['BIORXIV'] = nil; -- when error, unset so not included in COinS set_message ('err_bad_biorxiv'); -- and set the error message end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}); end --[[--------------------------< C I T E S E E R X >------------------------------------------------------------ CiteSeerX use their own notion of "doi" (not to be confused with the identifiers resolved via doi.org). The description of the structure of this identifier can be found at Help_talk:Citation_Style_1/Archive_26#CiteSeerX_id_structure ]] local function citeseerx (options) local id = options.id; local handler = options.handler; local matched; local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}); matched = id:match ("^10%.1%.1%.[1-9]%d?%d?%d?%.[1-9]%d?%d?%d?$"); if not matched then set_message ('err_bad_citeseerx' ); options.coins_list_t['CITESEERX'] = nil; -- when error, unset so not included in COinS end return text; end --[[--------------------------< D O I >------------------------------------------------------------------------ Formats a DOI and checks for DOI errors. DOI names contain two parts: prefix and suffix separated by a forward slash. Prefix: directory indicator '10.' followed by a registrant code Suffix: character string of any length chosen by the registrant This function checks a DOI name for: prefix/suffix. If the DOI name contains spaces or endashes, or, if it ends with a period or a comma, this function will emit a bad_doi error message. DOI names are case-insensitive and can incorporate any printable Unicode characters so the test for spaces, endash, and terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely if ever used in DOI names. https://www.doi.org/doi_handbook/2_Numbering.html -- 2.2 Syntax of a DOI name https://www.doi.org/doi_handbook/2_Numbering.html#2.2.2 -- 2.2.2 DOI prefix ]] local function doi (options) local id = options.id; local inactive = options.DoiBroken local access = options.access; local ignore_invalid = options.accept; local handler = options.handler; local err_flag; local text; if is_set (inactive) then local inactive_year = inactive:match("%d%d%d%d"); -- try to get the year portion from the inactive date local inactive_month, good; if is_set (inactive_year) then if 4 < inactive:len() then -- inactive date has more than just a year (could be anything) local lang_obj = mw.getContentLanguage(); -- get a language object for this wiki good, inactive_month = pcall (lang_obj.formatDate, lang_obj, 'F', inactive); -- try to get the month name from the inactive date if not good then inactive_month = nil; -- something went wrong so make sure this is unset end end end -- otherwise, |doi-broken-date= has something but it isn't a date if is_set (inactive_year) and is_set (inactive_month) then set_message ('maint_doi_inactive_dated', {inactive_year, inactive_month, ' '}); elseif is_set (inactive_year) then set_message ('maint_doi_inactive_dated', {inactive_year, '', ''}); else set_message ('maint_doi_inactive'); end inactive = " (" .. cfg.messages['inactive'] .. ' ' .. inactive .. ')'; end local registrant = mw.ustring.match (id, '^10%.([^/]+)/[^%s–]-[^%.,]$'); -- registrant set when DOI has the proper basic form local registrant_err_patterns = { -- these patterns are for code ranges that are not supported '^[^1-3]%d%d%d%d%.%d+$', -- 5 digits with subcode (0xxxx, 40000+); accepts: 10000–39999 '^[^1-6]%d%d%d%d$', -- 5 digits without subcode (0xxxx, 60000+); accepts: 10000–69999 '^[^1-9]%d%d%d%.%d+$', -- 4 digits with subcode (0xxx); accepts: 1000–9999 '^[^1-9]%d%d%d$', -- 4 digits without subcode (0xxx); accepts: 1000–9999 '^%d%d%d%d%d%d+', -- 6 or more digits '^%d%d?%d?$', -- less than 4 digits without subcode (3 digits with subcode is legitimate) '^%d%d?%.[%d%.]+', -- 1 or 2 digits with subcode '^5555$', -- test registrant will never resolve '[^%d%.]', -- any character that isn't a digit or a dot } if not ignore_invalid then if registrant then -- when DOI has proper form for i, pattern in ipairs (registrant_err_patterns) do -- spin through error patterns if registrant:match (pattern) then -- to validate registrant codes err_flag = set_message ('err_bad_doi'); -- when found, mark this DOI as bad break; -- and done end end else err_flag = set_message ('err_bad_doi'); -- invalid directory or malformed end else set_message ('maint_doi_ignore'); end if err_flag then options.coins_list_t['DOI'] = nil; -- when error, unset so not included in COinS end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access, auto_link = not (err_flag or is_set (inactive) or ignore_invalid) and 'doi' or nil -- do not auto-link when |doi-broken-date= has a value or when there is a DOI error or (to play it safe, after all, auto-linking is not essential) when invalid DOIs are ignored }) .. (inactive or ''); return text; end --[[--------------------------< H D L >------------------------------------------------------------------------ Formats an HDL with minor error checking. HDL names contain two parts: prefix and suffix separated by a forward slash. Prefix: character string using any character in the UCS-2 character set except '/' Suffix: character string of any length using any character in the UCS-2 character set chosen by the registrant This function checks a HDL name for: prefix/suffix. If the HDL name contains spaces, endashes, or, if it ends with a period or a comma, this function will emit a bad_hdl error message. HDL names are case-insensitive and can incorporate any printable Unicode characters so the test for endashes and terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely if ever used in HDLs. Query string parameters are named here: https://www.handle.net/proxy_servlet.html. query strings are not displayed but since '?' is an allowed character in an HDL, '?' followed by one of the query parameters is the only way we have to detect the query string so that it isn't URL-encoded with the rest of the identifier. ]] local function hdl (options) local id = options.id; local access = options.access; local handler = options.handler; local query_params = { -- list of known query parameters from https://www.handle.net/proxy_servlet.html 'noredirect', 'ignore_aliases', 'auth', 'cert', 'index', 'type', 'urlappend', 'locatt', 'action', } local hdl, suffix, param = id:match ('(.-)(%?(%a+).+)$'); -- look for query string local found; if hdl then -- when there are query strings, this is the handle identifier portion for _, q in ipairs (query_params) do -- spin through the list of query parameters if param:match ('^' .. q) then -- if the query string begins with one of the parameters found = true; -- announce a find break; -- and stop looking end end end if found then id = hdl; -- found so replace id with the handle portion; this will be URL-encoded, suffix will not else suffix = ''; -- make sure suffix is empty string for concatenation else end local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, suffix = suffix, separator = handler.separator, encode = handler.encode, access = access}) if nil == id:match("^[^%s–]-/[^%s–]-[^%.,]$") then -- HDL must contain a forward slash, must not contain spaces, endashes, and must not end with period or comma set_message ('err_bad_hdl' ); options.coins_list_t['HDL'] = nil; -- when error, unset so not included in COinS end return text; end --[[--------------------------< I S B N >---------------------------------------------------------------------- Determines whether an ISBN string is valid ]] local function isbn (options) local isbn_str = options.id; local ignore_invalid = options.accept; local handler = options.handler; local function return_result (check, err_type) -- local function to handle the various returns local ISBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect, prefix = handler.prefix, id = isbn_str, separator = handler.separator}); if ignore_invalid then -- if ignoring ISBN errors set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error else -- here when not ignoring if not check then -- and there is an error options.coins_list_t['ISBN'] = nil; -- when error, unset so not included in COinS set_message ('err_bad_isbn', err_type); -- set an error message return ISBN; -- return id text end end return ISBN; -- return id text end if nil ~= isbn_str:match ('[^%s-0-9X]') then return return_result (false, cfg.err_msg_supl.char); -- fail if isbn_str contains anything but digits, hyphens, or the uppercase X end local id = isbn_str:gsub ('[%s-]', ''); -- remove hyphens and whitespace local len = id:len(); if len ~= 10 and len ~= 13 then return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length end if len == 10 then if id:match ('^%d*X?$') == nil then -- fail if isbn_str has 'X' anywhere but last position return return_result (false, cfg.err_msg_supl.form); end if not is_valid_isxn (id, 10) then -- test isbn-10 for numerical validity return return_result (false, cfg.err_msg_supl.check); -- fail if isbn-10 is not numerically valid end if id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not valid isbn group ids but are used by amazon as numeric identifiers (asin) return return_result (false, cfg.err_msg_supl.group); -- fail if isbn-10 begins with 630/1 end return return_result (true, cfg.err_msg_supl.check); -- pass if isbn-10 is numerically valid else if id:match ('^%d+$') == nil then return return_result (false, cfg.err_msg_supl.char); -- fail if ISBN-13 is not all digits end if id:match ('^97[89]%d*$') == nil then return return_result (false, cfg.err_msg_supl.prefix); -- fail when ISBN-13 does not begin with 978 or 979 end if id:match ('^9790') then return return_result (false, cfg.err_msg_supl.group); -- group identifier '0' is reserved to ISMN end return return_result (is_valid_isxn_13 (id), cfg.err_msg_supl.check); end end --[[--------------------------< A S I N >---------------------------------------------------------------------- Formats a link to Amazon. Do simple error checking: ASIN must be mix of 10 numeric or uppercase alpha characters. If a mix, first character must be uppercase alpha; if all numeric, ASINs must be 10-digit ISBN. If 10-digit ISBN, add a maintenance category so a bot or AWB script can replace |asin= with |isbn=. Error message if not 10 characters, if not ISBN-10, if mixed and first character is a digit. |asin=630....... and |asin=631....... are (apparently) not a legitimate ISBN though it checksums as one; these do not cause this function to emit the maint_asin message This function is positioned here because it calls isbn() ]] local function asin (options) local id = options.id; local domain = options.ASINTLD; local err_flag; if not id:match("^[%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u]$") then err_flag = set_message ('err_bad_asin'); -- ASIN is not a mix of 10 uppercase alpha and numeric characters else if id:match("^%d%d%d%d%d%d%d%d%d[%dX]$") then -- if 10-digit numeric (or 9 digits with terminal X) if is_valid_isxn (id, 10) then -- see if ASIN value is or validates as ISBN-10 if not id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not a valid isbn prefixes but are used by amazon as a numeric identifier err_flag = set_message ('err_bad_asin'); -- ASIN has ISBN-10 form but begins with something other than 630/1 so probably an isbn end elseif not is_set (err_flag) then err_flag = set_message ('err_bad_asin'); -- ASIN is not ISBN-10 end elseif not id:match("^%u[%d%u]+$") then err_flag = set_message ('err_bad_asin'); -- asin doesn't begin with uppercase alpha end end if (not is_set (domain)) or in_array (domain, {'us'}) then -- default: United States domain = "com"; elseif in_array (domain, {'jp', 'uk'}) then -- Japan, United Kingdom domain = "co." .. domain; elseif in_array (domain, {'z.cn'}) then -- China domain = "cn"; elseif in_array (domain, {'au', 'br', 'mx', 'sg', 'tr'}) then -- Australia, Brazil, Mexico, Singapore, Turkey domain = "com." .. domain; elseif not in_array (domain, {'ae', 'ca', 'cn', 'de', 'es', 'fr', 'in', 'it', 'nl', 'pl', 'sa', 'se', 'co.jp', 'co.uk', 'com', 'com.au', 'com.br', 'com.mx', 'com.sg', 'com.tr'}) then -- Arabic Emirates, Canada, China, Germany, Spain, France, Indonesia, Italy, Netherlands, Poland, Saudi Arabia, Sweden (as of 2021-03 Austria (.at), Liechtenstein (.li) and Switzerland (.ch) still redirect to the German site (.de) with special settings, so don't maintain local ASINs for them) err_flag = set_message ('err_bad_asin_tld'); -- unsupported asin-tld value end local handler = options.handler; if not is_set (err_flag) then options.coins_list_t['ASIN'] = handler.prefix .. domain .. "/dp/" .. id; -- asin for coins else options.coins_list_t['ASIN'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix .. domain .. "/dp/", id = id, encode = handler.encode, separator = handler.separator}) end --[[--------------------------< I S M N >---------------------------------------------------------------------- Determines whether an ISMN string is valid. Similar to ISBN-13, ISMN is 13 digits beginning 979-0-... and uses the same check digit calculations. See https://www.ismn-international.org/download/Web_ISMN_Users_Manual_2008-6.pdf section 2, pages 9–12. ismn value not made part of COinS metadata because we don't have a url or isn't a COinS-defined identifier (rft.xxx) or an identifier registered at info-uri.info (info:) ]] local function ismn (options) local id = options.id; local handler = options.handler; local text; local valid_ismn = true; local id_copy; id_copy = id; -- save a copy because this testing is destructive id = id:gsub ('[%s-]', ''); -- remove hyphens and white space if 13 ~= id:len() or id:match ("^9790%d*$" ) == nil then -- ISMN must be 13 digits and begin with 9790 valid_ismn = false; else valid_ismn=is_valid_isxn_13 (id); -- validate ISMN end -- text = internal_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- use this (or external version) when there is some place to link to -- prefix = handler.prefix, id = id_copy, separator = handler.separator, encode = handler.encode}) text = table.concat ( -- because no place to link to yet { make_wikilink (link_label_make (handler), handler.label), handler.separator, id_copy }); if false == valid_ismn then options.coins_list_t['ISMN'] = nil; -- when error, unset so not included in COinS; not really necessary here because ismn not made part of COinS set_message ('err_bad_ismn'); -- create an error message if the ISMN is invalid end return text; end --[[--------------------------< I S S N >---------------------------------------------------------------------- Validate and format an ISSN. This code fixes the case where an editor has included an ISSN in the citation but has separated the two groups of four digits with a space. When that condition occurred, the resulting link looked like this: |issn=0819 4327 gives: [https://www.worldcat.org/issn/0819 4327 0819 4327] -- can't have spaces in an external link This code now prevents that by inserting a hyphen at the ISSN midpoint. It also validates the ISSN for length and makes sure that the checkdigit agrees with the calculated value. Incorrect length (8 digits), characters other than 0-9 and X, or checkdigit / calculated value mismatch will all cause a check ISSN error message. The ISSN is always displayed with a hyphen, even if the ISSN was given as a single group of 8 digits. ]] local function issn (options) local id = options.id; local handler = options.handler; local ignore_invalid = options.accept; local issn_copy = id; -- save a copy of unadulterated ISSN; use this version for display if ISSN does not validate local text; local valid_issn = true; id = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace if 8 ~= id:len() or nil == id:match ("^%d*X?$" ) then -- validate the ISSN: 8 digits long, containing only 0-9 or X in the last position valid_issn = false; -- wrong length or improper character else valid_issn = is_valid_isxn (id, 8); -- validate ISSN end if true == valid_issn then id = string.sub (id, 1, 4 ) .. "-" .. string.sub (id, 5 ); -- if valid, display correctly formatted version else id = issn_copy; -- if not valid, show the invalid ISSN with error message end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) if ignore_invalid then set_message ('maint_issn_ignore'); else if false == valid_issn then options.coins_list_t['ISSN'] = nil; -- when error, unset so not included in COinS set_message ('err_bad_issn', (options.hkey == 'EISSN') and 'e' or ''); -- create an error message if the ISSN is invalid end end return text; end --[[--------------------------< J F M >----------------------------------------------------------------------- A numerical identifier in the form nn.nnnn.nn ]] local function jfm (options) local id = options.id; local handler = options.handler; local id_num; id_num = id:match ('^[Jj][Ff][Mm](.*)$'); -- identifier with jfm prefix; extract identifier if is_set (id_num) then set_message ('maint_jfm_format'); else -- plain number without JFM prefix id_num = id; -- if here id does not have prefix end if id_num and id_num:match('^%d%d%.%d%d%d%d%.%d%d$') then id = id_num; -- jfm matches pattern else set_message ('err_bad_jfm' ); -- set an error message options.coins_list_t['JFM'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}); end --[[--------------------------< J S T O R >-------------------------------------------------------------------- Format a JSTOR with some error checking ]] local function jstor (options) local id = options.id; local access = options.access; local handler = options.handler; if id:find ('[Jj][Ss][Tt][Oo][Rr]') or id:find ('^https?://') or id:find ('%s') then set_message ('err_bad_jstor'); -- set an error message options.coins_list_t['JSTOR'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access}); end --[[--------------------------< L C C N >---------------------------------------------------------------------- Format LCCN link and do simple error checking. LCCN is a character string 8-12 characters long. The length of the LCCN dictates the character type of the first 1-3 characters; the rightmost eight are always digits. https://oclc-research.github.io/infoURI-Frozen/info-uri.info/info:lccn/reg.html length = 8 then all digits length = 9 then lccn[1] is lowercase alpha length = 10 then lccn[1] and lccn[2] are both lowercase alpha or both digits length = 11 then lccn[1] is lower case alpha, lccn[2] and lccn[3] are both lowercase alpha or both digits length = 12 then lccn[1] and lccn[2] are both lowercase alpha ]] local function lccn (options) local lccn = options.id; local handler = options.handler; local err_flag; -- presume that LCCN is valid local id = lccn; -- local copy of the LCCN id = normalize_lccn (id); -- get canonical form (no whitespace, hyphens, forward slashes) local len = id:len(); -- get the length of the LCCN if 8 == len then if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits) err_flag = set_message ('err_bad_lccn'); -- set an error message end elseif 9 == len then -- LCCN should be adddddddd if nil == id:match("%l%d%d%d%d%d%d%d%d") then -- does it match our pattern? err_flag = set_message ('err_bad_lccn'); -- set an error message end elseif 10 == len then -- LCCN should be aadddddddd or dddddddddd if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits) ... if nil == id:match("^%l%l%d%d%d%d%d%d%d%d") then -- ... see if it matches our pattern err_flag = set_message ('err_bad_lccn'); -- no match, set an error message end end elseif 11 == len then -- LCCN should be aaadddddddd or adddddddddd if not (id:match("^%l%l%l%d%d%d%d%d%d%d%d") or id:match("^%l%d%d%d%d%d%d%d%d%d%d")) then -- see if it matches one of our patterns err_flag = set_message ('err_bad_lccn'); -- no match, set an error message end elseif 12 == len then -- LCCN should be aadddddddddd if not id:match("^%l%l%d%d%d%d%d%d%d%d%d%d") then -- see if it matches our pattern err_flag = set_message ('err_bad_lccn'); -- no match, set an error message end else err_flag = set_message ('err_bad_lccn'); -- wrong length, set an error message end if not is_set (err_flag) and nil ~= lccn:find ('%s') then err_flag = set_message ('err_bad_lccn'); -- lccn contains a space, set an error message end if is_set (err_flag) then options.coins_list_t['LCCN'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = lccn, separator = handler.separator, encode = handler.encode}); end --[[--------------------------< M E D R X I V >----------------------------------------------------------------- Format medRxiv ID and do simple error checking. Similar to later bioRxiv IDs, medRxiv IDs are prefixed with a yyyy.mm.dd. date and suffixed with an optional version identifier. Ealiest date accepted is 2020.01.01 The medRxiv ID is a date followed by an eight-digit number followed by an optional version indicator 'v' and one or more digits: https://www.medrxiv.org/content/10.1101/2020.11.16.20232009v2 -> 10.1101/2020.11.16.20232009v2 ]] local function medrxiv (options) local id = options.id; local handler = options.handler; local err_msg_flag = true; -- flag; assume that there will be an error local patterns = { '%d%d%d%d%d%d%d%d$', -- simple 8-digit identifier; these should be relatively rare '^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d%d%dv%d+$', -- y.m.d. date + 8-digit identifier + version (2020-01-01 and later) '^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d%d%d$', -- y.m.d. date + 8-digit identifier (2020-01-01 and later) } for _, pattern in ipairs (patterns) do -- spin through the patterns looking for a match if id:match (pattern) then local y, m, d = id:match (pattern); -- found a match, attempt to get year, month and date from the identifier if m then -- m is nil when id is the 8-digit form if not is_valid_rxiv_date (y, m, d, 'b') then -- validate the encoded date; 'b' for medrxiv limit break; -- date fail; break out early so we don't unset the error message end end err_msg_flag = nil; -- we found a match so unset the error message break; -- and done end end -- <err_msg_flag> remains set here when no match if err_msg_flag then options.coins_list_t['MEDRXIV'] = nil; -- when error, unset so not included in COinS set_message ('err_bad_medrxiv'); -- and set the error message end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}); end --[[--------------------------< M R >-------------------------------------------------------------------------- A seven digit number; if not seven digits, zero-fill leading digits to make seven digits. ]] local function mr (options) local id = options.id; local handler = options.handler; local id_num; local id_len; id_num = id:match ('^[Mm][Rr](%d+)$'); -- identifier with mr prefix if is_set (id_num) then set_message ('maint_mr_format'); -- add maint cat else -- plain number without mr prefix id_num = id:match ('^%d+$'); -- if here id is all digits end id_len = id_num and id_num:len() or 0; if (7 >= id_len) and (0 ~= id_len) then id = string.rep ('0', 7-id_len) .. id_num; -- zero-fill leading digits else set_message ('err_bad_mr'); -- set an error message options.coins_list_t['MR'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}); end --[[--------------------------< O C L C >---------------------------------------------------------------------- Validate and format an OCLC ID. https://www.oclc.org/batchload/controlnumber.en.html {{dead link}} archived at: https://web.archive.org/web/20161228233804/https://www.oclc.org/batchload/controlnumber.en.html ]] local function oclc (options) local id = options.id; local handler = options.handler; local number; if id:match('^ocm%d%d%d%d%d%d%d%d$') then -- ocm prefix and 8 digits; 001 field (12 characters) number = id:match('ocm(%d+)'); -- get the number elseif id:match('^ocn%d%d%d%d%d%d%d%d%d$') then -- ocn prefix and 9 digits; 001 field (12 characters) number = id:match('ocn(%d+)'); -- get the number elseif id:match('^on%d%d%d%d%d%d%d%d%d%d+$') then -- on prefix and 10 or more digits; 001 field (12 characters) number = id:match('^on(%d%d%d%d%d%d%d%d%d%d+)$'); -- get the number elseif id:match('^%(OCoLC%)[1-9]%d*$') then -- (OCoLC) prefix and variable number digits; no leading zeros; 035 field number = id:match('%(OCoLC%)([1-9]%d*)'); -- get the number if 9 < number:len() then number = nil; -- constrain to 1 to 9 digits; change this when OCLC issues 10-digit numbers end elseif id:match('^%d+$') then -- no prefix number = id; -- get the number if tonumber (id) > handler.id_limit then number = nil; -- unset when id value exceeds the limit end end if number then -- proper format id = number; -- exclude prefix, if any, from external link else set_message ('err_bad_oclc') -- add an error message if the id is malformed options.coins_list_t['OCLC'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}); end --[[--------------------------< O P E N L I B R A R Y >-------------------------------------------------------- Formats an OpenLibrary link, and checks for associated errors. ]] local function openlibrary (options) local id = options.id; local access = options.access; local handler = options.handler; local ident, code = id:gsub('^OL', ''):match("^(%d+([AMW]))$"); -- strip optional OL prefix followed immediately by digits followed by 'A', 'M', or 'W'; local err_flag; local prefix = { -- these are appended to the handler.prefix according to code ['A']='authors/OL', ['M']='books/OL', ['W']='works/OL', ['X']='OL' -- not a code; spoof when 'code' in id is invalid }; if not ident then code = 'X'; -- no code or id completely invalid ident = id; -- copy id to ident so that we display the flawed identifier err_flag = set_message ('err_bad_ol'); end if not is_set (err_flag) then options.coins_list_t['OL'] = handler.prefix .. prefix[code] .. ident; -- experiment for ol coins else options.coins_list_t['OL'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix .. prefix[code], id = ident, separator = handler.separator, encode = handler.encode, access = access}); end --[[--------------------------< O S T I >---------------------------------------------------------------------- Format OSTI and do simple error checking. OSTIs are sequential numbers beginning at 1 and counting up. This code checks the OSTI to see that it contains only digits and is less than test_limit specified in the configuration; the value in test_limit will need to be updated periodically as more OSTIs are issued. NB. 1018 is the lowest OSTI number found in the wild (so far) and resolving OK on the OSTI site ]] local function osti (options) local id = options.id; local access = options.access; local handler = options.handler; if id:match("[^%d]") then -- if OSTI has anything but digits set_message ('err_bad_osti'); -- set an error message options.coins_list_t['OSTI'] = nil; -- when error, unset so not included in COinS else -- OSTI is only digits local id_num = tonumber (id); -- convert id to a number for range testing if 1018 > id_num or handler.id_limit < id_num then -- if OSTI is outside test limit boundaries set_message ('err_bad_osti'); -- set an error message options.coins_list_t['OSTI'] = nil; -- when error, unset so not included in COinS end end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access}); end --[[--------------------------< P M C >------------------------------------------------------------------------ Format a PMC, do simple error checking, and check for embargoed articles. The embargo parameter takes a date for a value. If the embargo date is in the future the PMC identifier will not be linked to the article. If the embargo date is today or in the past, or if it is empty or omitted, then the PMC identifier is linked to the article through the link at cfg.id_handlers['PMC'].prefix. PMC embargo date testing is done in function is_embargoed () which is called earlier because when the citation has |pmc=<value> but does not have a |url= then |title= is linked with the PMC link. Function is_embargoed () returns the embargo date if the PMC article is still embargoed, otherwise it returns an empty string. PMCs are sequential numbers beginning at 1 and counting up. This code checks the PMC to see that it contains only digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically as more PMCs are issued. ]] local function pmc (options) local id = options.id; local embargo = options.Embargo; -- TODO: lowercase? local handler = options.handler; local err_flag; local id_num; local text; id_num = id:match ('^[Pp][Mm][Cc](%d+)$'); -- identifier with PMC prefix if is_set (id_num) then set_message ('maint_pmc_format'); else -- plain number without PMC prefix id_num = id:match ('^%d+$'); -- if here id is all digits end if is_set (id_num) then -- id_num has a value so test it id_num = tonumber (id_num); -- convert id_num to a number for range testing if 1 > id_num or handler.id_limit < id_num then -- if PMC is outside test limit boundaries err_flag = set_message ('err_bad_pmc'); -- set an error message else id = tostring (id_num); -- make sure id is a string end else -- when id format incorrect err_flag = set_message ('err_bad_pmc'); -- set an error message end if is_set (embargo) and is_set (is_embargoed (embargo)) then -- is PMC is still embargoed? text = table.concat ( -- still embargoed so no external link { make_wikilink (link_label_make (handler), handler.label), handler.separator, id, }); else text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- no embargo date or embargo has expired, ok to link to article prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access, auto_link = not err_flag and 'pmc' or nil -- do not auto-link when PMC has error }); end if err_flag then options.coins_list_t['PMC'] = nil; -- when error, unset so not included in COinS end return text; end --[[--------------------------< P M I D >---------------------------------------------------------------------- Format PMID and do simple error checking. PMIDs are sequential numbers beginning at 1 and counting up. This code checks the PMID to see that it contains only digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically as more PMIDs are issued. ]] local function pmid (options) local id = options.id; local handler = options.handler; if id:match("[^%d]") then -- if PMID has anything but digits set_message ('err_bad_pmid'); -- set an error message options.coins_list_t['PMID'] = nil; -- when error, unset so not included in COinS else -- PMID is only digits local id_num = tonumber (id); -- convert id to a number for range testing if 1 > id_num or handler.id_limit < id_num then -- if PMID is outside test limit boundaries set_message ('err_bad_pmid'); -- set an error message options.coins_list_t['PMID'] = nil; -- when error, unset so not included in COinS end end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}); end --[[--------------------------< R F C >------------------------------------------------------------------------ Format RFC and do simple error checking. RFCs are sequential numbers beginning at 1 and counting up. This code checks the RFC to see that it contains only digits and is less than test_limit specified in the configuration; the value in test_limit will need to be updated periodically as more RFCs are issued. An index of all RFCs is here: https://tools.ietf.org/rfc/ ]] local function rfc (options) local id = options.id; local handler = options.handler; if id:match("[^%d]") then -- if RFC has anything but digits set_message ('err_bad_rfc'); -- set an error message options.coins_list_t['RFC'] = nil; -- when error, unset so not included in COinS else -- RFC is only digits local id_num = tonumber (id); -- convert id to a number for range testing if 1 > id_num or handler.id_limit < id_num then -- if RFC is outside test limit boundaries set_message ('err_bad_rfc'); -- set an error message options.coins_list_t['RFC'] = nil; -- when error, unset so not included in COinS end end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}); end --[[--------------------------< S 2 C I D >-------------------------------------------------------------------- Format an S2CID, do simple error checking S2CIDs are sequential numbers beginning at 1 and counting up. This code checks the S2CID to see that it is only digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically as more S2CIDs are issued. ]] local function s2cid (options) local id = options.id; local access = options.access; local handler = options.handler; local id_num; local text; id_num = id:match ('^[1-9]%d*$'); -- id must be all digits; must not begin with 0; no open access flag if is_set (id_num) then -- id_num has a value so test it id_num = tonumber (id_num); -- convert id_num to a number for range testing if handler.id_limit < id_num then -- if S2CID is outside test limit boundaries set_message ('err_bad_s2cid'); -- set an error message options.coins_list_t['S2CID'] = nil; -- when error, unset so not included in COinS end else -- when id format incorrect set_message ('err_bad_s2cid'); -- set an error message options.coins_list_t['S2CID'] = nil; -- when error, unset so not included in COinS end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access}); return text; end --[[--------------------------< S B N >------------------------------------------------------------------------ 9-digit form of ISBN-10; uses same check-digit validation when SBN is prefixed with an additional '0' to make 10 digits sbn value not made part of COinS metadata because we don't have a url or isn't a COinS-defined identifier (rft.xxx) or an identifier registered at info-uri.info (info:) ]] local function sbn (options) local id = options.id; local ignore_invalid = options.accept; local handler = options.handler; local function return_result (check, err_type) -- local function to handle the various returns local SBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator}); if not ignore_invalid then -- if not ignoring SBN errors if not check then options.coins_list_t['SBN'] = nil; -- when error, unset so not included in COinS; not really necessary here because sbn not made part of COinS set_message ('err_bad_sbn', {err_type}); -- display an error message return SBN; end else set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error (ToDo: Possibly switch to separate message for SBNs only) end return SBN; end if id:match ('[^%s-0-9X]') then return return_result (false, cfg.err_msg_supl.char); -- fail if SBN contains anything but digits, hyphens, or the uppercase X end local ident = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace; they interfere with the rest of the tests if 9 ~= ident:len() then return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length end if ident:match ('^%d*X?$') == nil then return return_result (false, cfg.err_msg_supl.form); -- fail if SBN has 'X' anywhere but last position end return return_result (is_valid_isxn ('0' .. ident, 10), cfg.err_msg_supl.check); end --[[--------------------------< S S R N >---------------------------------------------------------------------- Format an SSRN, do simple error checking SSRNs are sequential numbers beginning at 100? and counting up. This code checks the SSRN to see that it is only digits and is greater than 99 and less than test_limit; the value in local variable test_limit will need to be updated periodically as more SSRNs are issued. ]] local function ssrn (options) local id = options.id; local handler = options.handler; local id_num; local text; id_num = id:match ('^%d+$'); -- id must be all digits if is_set (id_num) then -- id_num has a value so test it id_num = tonumber (id_num); -- convert id_num to a number for range testing if 100 > id_num or handler.id_limit < id_num then -- if SSRN is outside test limit boundaries set_message ('err_bad_ssrn'); -- set an error message options.coins_list_t['SSRN'] = nil; -- when error, unset so not included in COinS end else -- when id format incorrect set_message ('err_bad_ssrn'); -- set an error message options.coins_list_t['SSRN'] = nil; -- when error, unset so not included in COinS end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = options.access}); return text; end --[[--------------------------< U S E N E T _ I D >------------------------------------------------------------ Validate and format a usenet message id. Simple error checking, looks for 'id-left@id-right' not enclosed in '<' and/or '>' angle brackets. ]] local function usenet_id (options) local id = options.id; local handler = options.handler; local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) if not id:match('^.+@.+$') or not id:match('^[^<].*[^>]$') then -- doesn't have '@' or has one or first or last character is '< or '>' set_message ('err_bad_usenet_id') -- add an error message if the message id is invalid options.coins_list_t['USENETID'] = nil; -- when error, unset so not included in COinS end return text; end --[[--------------------------< Z B L >----------------------------------------------------------------------- A numerical identifier in the form nnnn.nnnnn - leading zeros in the first quartet optional format described here: http://emis.mi.sanu.ac.rs/ZMATH/zmath/en/help/search/ temporary format is apparently eight digits. Anything else is an error ]] local function zbl (options) local id = options.id; local handler = options.handler; if id:match('^%d%d%d%d%d%d%d%d$') then -- is this identifier using temporary format? set_message ('maint_zbl'); -- yes, add maint cat elseif not id:match('^%d?%d?%d?%d%.%d%d%d%d%d$') then -- not temporary, is it normal format? set_message ('err_bad_zbl'); -- no, set an error message options.coins_list_t['ZBL'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}); end --============================<< I N T E R F A C E F U N C T I O N S >>========================================== --[[--------------------------< E X T R A C T _ I D S >------------------------------------------------------------ Populates ID table from arguments using configuration settings. Loops through cfg.id_handlers and searches args for any of the parameters listed in each cfg.id_handlers['...'].parameters. If found, adds the parameter and value to the identifier list. Emits redundant error message if more than one alias exists in args ]] local function extract_ids (args) local id_list = {}; -- list of identifiers found in args for k, v in pairs (cfg.id_handlers) do -- k is uppercase identifier name as index to cfg.id_handlers; e.g. cfg.id_handlers['ISBN'], v is a table v = select_one (args, v.parameters, 'err_redundant_parameters' ); -- v.parameters is a table of aliases for k; here we pick one from args if present if is_set (v) then id_list[k] = v; end -- if found in args, add identifier to our list end return id_list; end --[[--------------------------< E X T R A C T _ I D _ A C C E S S _ L E V E L S >-------------------------------------- Fetches custom id access levels from arguments using configuration settings. Parameters which have a predefined access level (e.g. arxiv) do not use this function as they are directly rendered as free without using an additional parameter. returns a table of k/v pairs where k is same as the identifier's key in cfg.id_handlers and v is the assigned (valid) keyword access-level values must match the case used in cfg.keywords_lists['id-access'] (lowercase unless there is some special reason for something else) ]] local function extract_id_access_levels (args, id_list) local id_accesses_list = {}; for k, v in pairs (cfg.id_handlers) do local access_param = v.custom_access; -- name of identifier's access-level parameter if is_set (access_param) then local access_level = args[access_param]; -- get the assigned value if there is one if is_set (access_level) then if not in_array (access_level, cfg.keywords_lists['id-access']) then -- exact match required set_message ('err_invalid_param_val', {access_param, access_level}); access_level = nil; -- invalid so unset end if not is_set (id_list[k]) then -- identifier access-level must have a matching identifier set_message ('err_param_access_requires_param', {k:lower()}); -- parameter name is uppercase in cfg.id_handlers (k); lowercase for error message end id_accesses_list[k] = cfg.keywords_xlate[access_level]; -- get translated keyword end end end return id_accesses_list; end --[[--------------------------< B U I L D _ I D _ L I S T >---------------------------------------------------- render the identifiers into a sorted sequence table <ID_list_coins_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value <options_t> is a table of various k/v option pairs provided in the call to new_build_id_list(); modified by this function and passed to all identifier rendering functions <access_levels_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value (if valid) returns a sequence table of sorted (by hkey - 'handler' key) rendered identifier strings ]] local function build_id_list (ID_list_coins_t, options_t, access_levels_t) local ID_list_t = {}; local accept; local func_map = { --function map points to functions associated with hkey identifier ['ARXIV'] = arxiv, ['ASIN'] = asin, ['BIBCODE'] = bibcode, ['BIORXIV'] = biorxiv, ['CITESEERX'] = citeseerx, ['DOI'] = doi, ['EISSN'] = issn, ['HDL'] = hdl, ['ISBN'] = isbn, ['ISMN'] = ismn, ['ISSN'] = issn, ['JFM'] = jfm, ['JSTOR'] = jstor, ['LCCN'] = lccn, ['MEDRXIV'] = medrxiv, ['MR'] = mr, ['OCLC'] = oclc, ['OL'] = openlibrary, ['OSTI'] = osti, ['PMC'] = pmc, ['PMID'] = pmid, ['RFC'] = rfc, ['S2CID'] = s2cid, ['SBN'] = sbn, ['SSRN'] = ssrn, ['USENETID'] = usenet_id, ['ZBL'] = zbl, } for hkey, v in pairs (ID_list_coins_t) do v, accept = has_accept_as_written (v); -- remove accept-as-written markup if present; accept is boolean true when markup removed; false else -- every function gets the options table with value v and accept boolean options_t.hkey = hkey; -- ~/Configuration handler key options_t.id = v; -- add that identifier value to the options table options_t.accept = accept; -- add the accept boolean flag options_t.access = access_levels_t[hkey]; -- add the access level for those that have an |<identifier-access= parameter options_t.handler = cfg.id_handlers[hkey]; options_t.coins_list_t = ID_list_coins_t; -- pointer to ID_list_coins_t; for |asin= and |ol=; also to keep erroneous values out of the citation's metadata options_t.coins_list_t[hkey] = v; -- id value without accept-as-written markup for metadata if options_t.handler.access and not in_array (options_t.handler.access, cfg.keywords_lists['id-access']) then error (cfg.messages['unknown_ID_access'] .. options_t.handler.access); -- here when handler access key set to a value not listed in list of allowed id access keywords end if func_map[hkey] then local id_text = func_map[hkey] (options_t); -- call the function to get identifier text and any error message table.insert (ID_list_t, {hkey, id_text}); -- add identifier text to the output sequence table else error (cfg.messages['unknown_ID_key'] .. hkey); -- here when func_map doesn't have a function for hkey end end local function comp (a, b) -- used by following table.sort() return a[1]:lower() < b[1]:lower(); -- sort by hkey end table.sort (ID_list_t, comp); -- sequence table of tables sort for k, v in ipairs (ID_list_t) do -- convert sequence table of tables to simple sequence table of strings ID_list_t[k] = v[2]; -- v[2] is the identifier rendering from the call to the various functions in func_map{} end return ID_list_t; end --[[--------------------------< O P T I O N S _ C H E C K >---------------------------------------------------- check that certain option parameters have their associated identifier parameters with values <ID_list_coins_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value <ID_support_t> is a sequence table of tables created in citation0() where each subtable has four elements: [1] is the support parameter's assigned value; empty string if not set [2] is a text string same as key in cfg.id_handlers [3] is cfg.error_conditions key used to create error message [4] is original ID support parameter name used to create error message returns nothing; on error emits an appropriate error message ]] local function options_check (ID_list_coins_t, ID_support_t) for _, v in ipairs (ID_support_t) do if is_set (v[1]) and not ID_list_coins_t[v[2]] then -- when support parameter has a value but matching identifier parameter is missing or empty set_message (v[3], (v[4])); -- emit the appropriate error message end end end --[[--------------------------< I D E N T I F I E R _ L I S T S _ G E T >-------------------------------------- Creates two identifier lists: a k/v table of identifiers and their values to be used locally and for use in the COinS metadata, and a sequence table of the rendered identifier strings that will be included in the rendered citation. ]] local function identifier_lists_get (args_t, options_t, ID_support_t) local ID_list_coins_t = extract_ids (args_t); -- get a table of identifiers and their values for use locally and for use in COinS options_check (ID_list_coins_t, ID_support_t); -- ID support parameters must have matching identifier parameters local ID_access_levels_t = extract_id_access_levels (args_t, ID_list_coins_t); -- get a table of identifier access levels local ID_list_t = build_id_list (ID_list_coins_t, options_t, ID_access_levels_t); -- get a sequence table of rendered identifier strings return ID_list_t, ID_list_coins_t; -- return the tables end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) cfg = cfg_table_ptr; has_accept_as_written = utilities_page_ptr.has_accept_as_written; -- import functions from select Module:Citation/CS1/Utilities module is_set = utilities_page_ptr.is_set; in_array = utilities_page_ptr.in_array; set_message = utilities_page_ptr.set_message; select_one = utilities_page_ptr.select_one; substitute = utilities_page_ptr.substitute; make_wikilink = utilities_page_ptr.make_wikilink; z = utilities_page_ptr.z; -- table of tables in Module:Citation/CS1/Utilities end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { auto_link_urls = auto_link_urls, -- table of identifier URLs to be used when auto-linking |title= identifier_lists_get = identifier_lists_get, -- experiment to replace individual calls to build_id_list(), extract_ids, extract_id_access_levels is_embargoed = is_embargoed; set_selected_modules = set_selected_modules; } 3cd8b5ef8d199885cc0c92aabeb5bc338fa6f42c Module:Lang/documentor tool 828 1005 2206 2023-09-20T16:20:02Z wikipedia>Nardog 0 make "Supported private-use IETF language tags" sortable Scribunto text/plain require('strict') local p = {} --[[ -------------------------< P R I V A T E _ T A G S >------------------------------------------------------ {{#invoke:Lang/documentor tool|private_tags}} Reads the override{} table in Module:Lang/data and renders a wiki table of private tags and their associated languages ]] local function private_tags (frame) local override_t = mw.loadData ('Module:Lang/data').override; -- get the override table local private_t = {}; for tag, lang in pairs (override_t) do if tag:find ('%-x%-') then table.insert (private_t, table.concat ({'\n|-\n|', lang, '||', tag})) end end table.sort (private_t) table.insert (private_t, 1, '{| class="wikitable sortable"'); table.insert (private_t, 2, '\n|+ Supported private-use IETF language tags') table.insert (private_t, 3, '\n! Language !! Private-use tag') return table.concat (private_t) .. '\n|}'; -- return '<pre>' .. table.concat (private_t) .. '\n|}' .. '</pre>' --error (mw.dumpObject (private_t)) end --[[ -------------------------< L A N G - X X _ S E T T I N G S >---------------------------------------------- {{#invoke:Lang/documentor tool|lang_xx_settings|template={{ROOTPAGENAME}}}} Reads the content of the template and extracts the parameters from {{#invoke:Lang|...}} for display on the template's documentation page. ]] local function lang_xx_settings(frame) local page = mw.title.makeTitle('Template', frame.args['template'] or frame.args[1]) -- get a page object for this page in 'Template:' namespace if not page then return '' -- TODO: error message? end local content = page:getContent() -- get unparsed content if not page then return '' -- TODO: error message? end local out = {} local params local style if content:match('{{%s*#invoke:%s*[Ll]ang%s*|[^|]+|[^}]+}}') or content:match('{{%s*#invoke:%s*[Ll]ang/sandbox%s*|[^|]+|[^}]+}}') then -- if this template uses [[Module:Lang]] params = content:match('{{%s*#invoke:%s*[Ll]ang%s*|[^|]+(|[^}]+)}}') or content:match('{{%s*#invoke:%s*[Ll]ang/sandbox%s*|[^|]+(|[^}]+)}}') -- extract the #invoke:'s parameters if not params then return '' -- there should be at least one or the template/module won't work TODO: error message? end table.insert(out, '{| class="wikitable" style="text-align: right; float: right;"\n|+settings') -- start a wikitable for k, v in params:gmatch('%s*|%s*([^%s=]+)%s*=%s*([^%s|]+)') do -- get the parameter names (k) and values (v) if 'label' == k then -- special case for labels because spaces and pipes v = params:match('label%s*=%s*(%[%[[^%]]+%]%])') or params:match('label%s*=%s*([^|\n]+)') or 'missing label' end table.insert(out, table.concat({k, '\n|', v})) -- make rudimentary wikitable entries end style = content:match('lang_xx_([^|]+)'); if not style or ('italic' ~= mw.text.trim (style) and 'inherit' ~= mw.text.trim (style)) then return '<span style="color:#d33">Error: template #invoke calls unknown function</span>'; end return table.concat({table.concat(out,'\n|-\n! scope="row" | '), '\n|-\n|colspan="2"|style: ', style, '\n|-\n|}'}) -- add inter-row markup and close the wikitable and done else return '' -- does not use [[Module:Lang]] so abandon quietly end end --[[ -------------------------- < U S E S _ M O D U L E > -------------------------- {{#invoke:Lang/documentor tool|uses_module|template={{ROOTPAGENAME}}}} Reads the content of the template to determine if this {{lang-xx}} template uses Module:Lang. Returns the index of the substring '{{#invoke|lang|' in the template page content if true; empty string if false. Used in template documentation {{#if:}} parser functions. ]] local function uses_module(frame) local page = mw.title.makeTitle('Template', frame.args['template'] or frame.args[1]) -- get a page object for this page in 'Template:' namespace if not page then return '' -- TODO: error message? end local content = page:getContent() -- get unparsed content if not page then return '' -- TODO: error message? end return content:find('{{%s*#invoke:[Ll]ang%s*|') or '' -- return index or empty string end --[[ -------------------------- < S H A R E D _ C O D E > -------------------------- - Tables: -- language_categories -- error_messages -- strings - Functions: -- make_error(message, layout, parent_category, nocat) -- get_language_link(language_name, language_code) -- get_see_also_section(page_title, language_name, language_code) -- get_hidden_category_template(frame) -- get_top_section(frame) -- get_bottom_section(frame, language_name, see_also_section, parent_category) ]] local language_categories = { ["LANGUAGES_SOURCES"] = "Articles with %s-language sources (%s)", ["LANGUAGES_COLLECTIVE_SOURCES"] = "Articles with %s-collective sources (%s)", ["CS1"] = "CS1 %s-language sources (%s)", ["LANGUAGE_TEXT"] = "Articles containing %s-language text", -- old version ["LANGUAGES_COLLECTIVE_TEXT"] = "Articles with text from the %s collective", ["LANGUAGES_COLLECTIVE_TEXT"] = "Articles with text in %s", ["ENGLISH"] = "Articles containing explicitly cited %s-language text", } local error_assistance = " Please see [[Template talk:Lang]] for assistance." local error_messages = { ["ASSISTANCE"] = "Please see [[Template talk:Lang]] for assistance.", ["INCORRECT_CATEGORY_TITLE"] = "[[:%s]] is not the category being populated by the {{tlx|%s}} template. The correct category is located at: [[:%s]].", ["NO_CATEGORY_TITLE_FOUND"] = "No language category found for '''%s.'''" .. error_assistance, ["NOT_VALID_CATEGORY_FORMAT"] = "'''%s''' is not a a valid category title." .. error_assistance, ["NOT_VALID_LANGUAGE_CODE"] = "[[%s]] is not a valid ISO 639 or IETF language name." .. error_assistance, } local strings = { ["ERROR_CATEGORY"] = "[[Category:Lang and lang-xx template errors]]", ["ERROR_SPAN"] = '<span style="font-size: 100%%; font-style: normal;" class="error">Error: %s </span>', ["PURGE_DIV"] = '<div style="font-size: x-small;">%s</div>', ["SEE_ALSO"] = "\n==See also==", ["SEE_ALSO_ITEM"] = "* [[:%s]]", } --[[ -------------------------- < M A K E _ E R R O R > -------------------------- Create an error message. Does not place page in error category if args.nocat is used. Does not categorize in parent cateogory if used in category namespace (usually for /testcases). ]] local function make_error(message, layout, parent_category, nocat) table.insert(layout, string.format(strings["ERROR_SPAN"], message)) if not nocat then table.insert(layout, strings["ERROR_CATEGORY"]) end if mw.title.getCurrentTitle().nsText == "Category" then table.insert(layout, parent_category) end return table.concat(layout) end --[[ -------------------------- < G E T _ L A N G U A G E _ L I N K > -------------------------- Generates a language link for the correct style. Collective languages use the name_from_tag value, while other languages use a display name of "x-language". ]] local function get_language_link(language_name, language_code) local lang_module = require('Module:Lang') -- Is a language collective? if language_name:find('languages') then return lang_module.name_from_tag({language_code, link = "yes"}) else return lang_module.name_from_tag({language_code, link = "yes", label = lang_module.name_from_tag({language_code}) .. "-language"}) end end --[[ -------------------------- < G E T _ S E E _ A L S O _ S E C T I O N > -------------------------- Generates a consistent style See also section for {{Category articles containing non-English-language text}} and {{Non-English-language source category}}. If {{CS1 language sources}} is converted, it should also use it. ]] local function get_see_also_section(page_title, language_name, language_code) local see_also_section = {} for _, category_name in pairs(language_categories) do local category = mw.title.new(string.format(category_name, language_name, language_code), 14) if category and page_title ~= category.text and category.exists then table.insert(see_also_section, string.format(strings["SEE_ALSO_ITEM"], category.prefixedText)) end end table.sort(see_also_section) table.insert(see_also_section, 1, strings["SEE_ALSO"]) if table.getn(see_also_section) == 1 then return "" else return table.concat(see_also_section, "\n") end end --[[ -------------------------- < G E T _ H I D D E N _ C A T E G O R Y _ T E M P L A T E > -------------------------- Generates the Template:Hidden category template. This function is separate from the get_top_section() function as this should be used in both error categories and valid categories. ]] local function get_hidden_category_template(frame) return frame:expandTemplate{title = 'Hidden category'} end --[[ -------------------------- < G E T _ T O P _ S E C T I O N > -------------------------- Generates a consistent top maintenance template section which consists of: -- Template:Possibly empty category -- Template:Purge ]] local function get_top_section(frame) local top_section = {} if mw.site.stats.pagesInCategory(mw.title.getCurrentTitle().text, "all") == 0 then table.insert(top_section, frame:expandTemplate{title = 'Possibly empty category'}) else table.insert(top_section, frame:expandTemplate{title = 'Possibly empty category', args = {hidden=true}}) end local purge_module = require('Module:Purge') table.insert(top_section, string.format(strings["PURGE_DIV"], purge_module._main({"Purge page cache"}))) return table.concat(top_section, "\n\n") end --[[ -------------------------- < G E T _ B O T T O M _ S E C T I O N > -------------------------- Generates a consistent non-text section which consists of: -- Template:CatAutoTOC -- A see also section -- {{DEFAULTSORT}} -- Categorization in parent category ]] local function get_bottom_section(frame, language_name, see_also_section, parent_category) local bottom_section = {} table.insert(bottom_section, frame:expandTemplate{title = 'CatAutoTOC'}) table.insert(bottom_section, see_also_section) if mw.title.getCurrentTitle().nsText == "Category" then table.insert(bottom_section, frame:preprocess{text = "{{DEFAULTSORT:" .. language_name .. "}}"}) table.insert(bottom_section, parent_category) end return table.concat(bottom_section, "\n\n\n") end --[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ T E X T _ C A T E G O R Y > -------------------------- {{#invoke:Lang/documentor tool|non_english_language_text_category}} This function implements {{Non-English-language text category}}. ]] local non_english_language_text_strings = { ["LINE1"] = "This category contains articles with %s%s text. The primary purpose of these categories is to facilitate manual or automated checking of text in other languages.", ["LINE2"] = "This category should only be added with the %s family of templates, never explicitly.", ["LINE3"] = 'For example %s, which wraps the text with <code>&lt;span lang="%s"&gt;</code>.%s', ["LINE3_EXTRA"] = " Also available is %s which displays as %s.", ["IN_SCRIPT"] = " (in %s)", ["EXAMPLE_DEFAULT_TEXT"] = "text in %s language here", ["PARENT_CATEGORY"] = "[[Category:Articles containing non-English-language text]]", ["TEMPLATE"] = "Lang", } local function non_english_language_text_category(frame) local page = mw.title.getCurrentTitle() local args = require('Module:Arguments').getArgs(frame) -- args.test is used for /testcases if args.test then page = mw.title.new(args.test) end -- Naming style: Articles with text from the Berber languages collective local page_title_modified = page.text local split_title = "([^,]+)%%s([^,]*)" local part1 = "" local part2 = "" if page_title_modified:find('Articles with text in') then -- Naming style: Category:Articles with text from Afro-Asiatic languages (as currently implemented in Module:lang) part1, part2 = language_categories["LANGUAGES_COLLECTIVE_TEXT"]:match(split_title) elseif page_title_modified:find('explicitly cited') then part1, part2 = language_categories["ENGLISH"]:match(split_title) else -- Naming style: Category:Articles containing French-language text part1, part2 = language_categories["LANGUAGE_TEXT"]:match(split_title) end page_title_modified = page_title_modified:gsub(part1, "") page_title_modified = page_title_modified:gsub(part2, "") local language_name = page_title_modified local layout = {} table.insert(layout, get_hidden_category_template(frame)) local parent_category = non_english_language_text_strings["PARENT_CATEGORY"] if language_name == page.text then -- Error: Category title format not supported. return make_error(string.format(error_messages["NOT_VALID_CATEGORY_FORMAT"], page.text), layout, parent_category, args.nocat) end local lang_module = require('Module:Lang') local language_code = lang_module._tag_from_name({language_name}) if language_code:find('[Ee]rror') then -- Error: Language code not found in database. return make_error(string.format(error_messages["NOT_VALID_LANGUAGE_CODE"], language_name), layout, parent_category, args.nocat) end local correct_language_category_title = lang_module._category_from_tag({language_code}) if correct_language_category_title:find('[Ee]rror') then -- Error: No category title found for language code. return make_error(string.format(error_messages["NO_CATEGORY_TITLE_FOUND"], language_code), layout, parent_category, args.nocat) end local current_category_title = page.prefixedText if current_category_title ~= correct_language_category_title then -- Error: The current title used is not in the supported format. TODO: can this still be reached? return make_error( string.format(error_messages["INCORRECT_CATEGORY_TITLE"], current_category_title, non_english_language_text_strings["LANG"], correct_language_category_title), layout, parent_category, args.nocat) end table.insert(layout, get_top_section(frame)) local script_text = "" if args.script then script_text = string.format(non_english_language_text_strings["IN_SCRIPT"], args.script) end local language_link = get_language_link(language_name, language_code) table.insert(layout, string.format(non_english_language_text_strings["LINE1"], language_link, script_text)) local lang_template = frame:expandTemplate{title = 'Tl', args = {non_english_language_text_strings["TEMPLATE"]}} table.insert(layout, string.format(non_english_language_text_strings["LINE2"], lang_template)) local language_code_link = lang_module._name_from_tag({language_code, link="yes", label=language_code}) local example_default_text = string.format(non_english_language_text_strings["EXAMPLE_DEFAULT_TEXT"], language_name) local example_text = args.example or example_default_text local lang_template_example = frame:expandTemplate{title = 'Tlx', args = {non_english_language_text_strings["TEMPLATE"], language_code_link, example_text}} local lang_x = mw.title.makeTitle(10, "Lang-" .. language_code) local line3_extra = "" if lang_x.exists then local lang_x_template_example = frame:expandTemplate{title = 'Tlx', args = {lang_x.text, example_text}} local lang_x_template = frame:expandTemplate{title = lang_x.text, args = {example_text}} line3_extra = string.format(non_english_language_text_strings["LINE3_EXTRA"], lang_x_template_example, lang_x_template) end table.insert(layout, string.format(non_english_language_text_strings["LINE3"], lang_template_example, language_code, line3_extra)) local see_also_section = get_see_also_section(page.text, language_name, language_code) local bottom = get_bottom_section(frame, language_name, see_also_section, non_english_language_text_strings["PARENT_CATEGORY"]) return table.concat(layout, "\n\n") .. bottom end --[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ S O U R C E S _ C A T E G O R Y > -------------------------- {{#invoke:Lang/documentor tool|non_english_language_sources_category}} This function implements {{Non-English-language sources category}}. ]] local non_english_language_sources_strings = { ["LINE1"] = "This is a tracking category for articles that use %s to identify %s sources.", ["PARENT_CATEGORY"] = "[[Category:Articles with non-English-language sources]]", ["TEMPLATE"] = "In lang", } local function non_english_language_sources_category(frame) local page = mw.title.getCurrentTitle() local args = require('Module:Arguments').getArgs(frame) -- args.test is used for /testcases if args.test then page = mw.title.new(args.test) end local page_title = page.text local language_code = page_title:match('%(([%a%-]+)%)') local language_name = require('Module:Lang')._name_from_tag({language_code}) local layout = {} table.insert(layout, get_hidden_category_template(frame)) local parent_category = non_english_language_sources_strings["PARENT_CATEGORY"] local correct_language_category_title = require('Module:In lang')._in_lang({language_code, ["list-cats"]="yes"}) if correct_language_category_title == "" then -- Error: No category title found for language code. return make_error(string.format(error_messages["NO_CATEGORY_TITLE_FOUND"], language_code), layout, parent_category, args.nocat) end local current_category_title = page.prefixedText if correct_language_category_title ~= current_category_title then -- Error: The current title used is not in the supported format. return make_error( string.format(error_messages["INCORRECT_CATEGORY_TITLE"], current_category_title, non_english_language_sources_strings["TEMPLATE"], correct_language_category_title), layout, parent_category, args.nocat) end local language_link = get_language_link(language_name, language_code) local text = string.format(non_english_language_sources_strings["LINE1"], frame:expandTemplate{title = 'Tlx', args = {non_english_language_sources_strings["TEMPLATE"], language_code}}, language_link) table.insert(layout, get_top_section(frame)) table.insert(layout, text) local see_also_section = get_see_also_section(page_title, language_name, language_code) local bottom = get_bottom_section(frame, language_name, see_also_section, parent_category) return table.concat(layout, "\n\n") .. bottom end --[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ C S 1 _ S O U R C E S _ C A T E G O R Y > -------------------------- {{#invoke:Lang/documentor tool|non_english_language_cs1_sources_category}} This function implements {{Non-English-language CS1 sources category}}. ]] local non_english_language_cs1_text_strings = { ["LINE1"] = "This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s to identify a source in [[%s language|%s]]. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].", ["PARENT_CATEGORY"] = "[[Category:CS1 foreign language sources]]", -- #TODO change to "Articles with non-english CS1 language sources" or "CS1 non-English language sources" } --"This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s to hold a citation title that uses %s characters and contains the language prefix <code>%s:</code>. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].", --"[[Category:CS1 uses foreign language script]]", -- "This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].", -- "to identify a source in [[%s language|%s]].", -- "to hold a citation title that uses %s characters and contains the language prefix <code>%s:</code>.", local function non_english_language_cs1_sources_category(frame) local page_title_object = mw.title.getCurrentTitle() local page_title = page_title_object.text local language_code = page_title:match('%(([%a%-]+)%)') local language_name = require('Module:Lang')._name_from_tag({language_code}) local layout = {} table.insert(layout, get_hidden_category_template(frame)) local see_also_section = "" local parameter_doc = frame:expandTemplate{title = 'para', args = {"language", language_code}} table.insert(layout, get_top_section(frame)) table.insert(layout, string.format(non_english_language_cs1_text_strings["LINE1"], parameter_doc, language_name, language_name)) local see_also_section = get_see_also_section(page_title, language_name, language_code) local bottom = get_bottom_section(frame, language_name, see_also_section, non_english_language_cs1_text_strings["PARENT_CATEGORY"]) return table.concat(layout, "\n\n") .. bottom end --[[ -------------------------- < T E S T _ C A S E S _ S H A R E D _ C O D E > -------------------------- ]] local function compare_by_keys2(a, b) -- local function used by table.sort() return a[2] < b[2] -- ascending sort by code end local function compare_by_keys(a, b) -- local function used by table.sort() return a[1] < b[1] -- ascending sort by code end -- Used by testcases_iso_code_to_name() local function get_language_code_table_from_code(args) local entry = {} --if args.override_table[args.language_code] then -- table.insert(entry, args.override_table[args.language_code][1]) -- :gsub(' %b()$', '') fails here --else table.insert(entry, args.language_code) -- end return entry end -- Used by testcases_name_from_tag() local function get_language_code_and_name_table_from_code(args) local entry = {} if args.override_table[args.language_code] then table.insert(entry, args.language_code) local language_code, _ = args.override_table[args.language_code][1]:gsub(' %b()$', '') table.insert(entry, language_code) else table.insert(entry, args.language_code) table.insert(entry, args.language_table[args.language_code]) end return entry end -- Used by testcases_category_from_tag() local function get_language_code_and_category_table_from_code(args) local entry = {} table.insert(entry, args.language_code) table.insert(entry, args.test_function({args.language_code})) return entry end -- Used by testcases_iso_name_to_code() and testcases_tag_from_name() local function get_language_name_and_code_table_from_code(args) local entry = {} if args.override_table[args.language_code] then table.insert(entry, args.override_table[args.language_code][1]) -- only the first name when there are multiples table.insert(entry, args.language_code) else table.insert(entry, args.language_names[1]) -- only the first name when there are multiples table.insert(entry, args.language_code) end return entry end local function get_table(table_function, language_table, length, range, iso_number, test_function) local table_of_language_name_and_code_tables = {} local override_table_name = "override" if iso_number then override_table_name = "override_" .. iso_number end local override_table = require("Module:Language/data/ISO_639_override/sandbox")[override_table_name] -- For most ISO 639s. if range then for language_code, language_names in pairs(language_table) do if language_code:find(range) then table.insert(table_of_language_name_and_code_tables, table_function({ override_table = override_table, language_code = language_code, language_names = language_names, test_function = test_function, language_table = language_table })) end end -- For ISO 639-1. elseif length then for language_code, language_names in pairs(language_table) do if language_code:len() == 2 then table.insert(table_of_language_name_and_code_tables, table_function({ override_table = override_table, language_code = language_code, language_names = language_names, test_function = test_function, language_table = language_table })) end end -- For general /testcases. else for language_code, language_names in pairs(language_table) do table.insert(table_of_language_name_and_code_tables, table_function({ override_table = override_table, language_code = language_code, language_names = language_names, test_function = test_function, language_table = language_table })) end end return table_of_language_name_and_code_tables end local function get_undabbed_table(language_list, length, range) local undabbed_language_table = {} -- for this test, ISO 639-3 language name disambiguators must be removed; un-dabbed names go here for language_code, language_names in pairs(language_list) do -- For most ISO 639s. if range then if language_code:find(range) then undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '') -- undab and save only the first name; ignore all other names assigned to a code end -- For ISO 639-1. elseif length then if language_code:len() == 2 then undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '') -- undab and save only the first name; ignore all other names assigned to a code end -- For general /testcases. else undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '') end end return undabbed_language_table end --[[ -------------------------- < T E S T C A S E S _ C A T E G O R Y _ F R O M _ T A G > -------------------------- Entry point for the various category_from_tag testcases. Build a table of test patterns where each entry in the table is a table with two members: {"<language_code>", "<category name according to Module:Lang>"} - "Expected" column value is the category name according to Module:Lang. - "Actual" column value is the result of {{#invoke:Lang/sandbox|category_from_tag|<language_code>}}. TODO: Currently not working. ]] local function testcases_category_from_tag(self, args) local cat_from_tag_function = require('Module:Lang')._category_from_tag local language_tables = get_table(get_language_code_and_category_table_from_code, args.language_list, args.length, args.range, args.iso_number, cat_from_tag_function) table.sort(language_tables, compare_by_keys) self:preprocess_equals_preprocess_many( '{{#invoke:Lang/sandbox|category_from_tag|', '}}', '', '', language_tables, {nowiki=false} ) end --[[ -------------------------- < T E S T C A S E S _ N A M E _ F R O M _ T A G > -------------------------- Entry point for the various name_from_tag testcases. Build a table of test patterns where each entry in the table is a table with two members: {"<language_code>", "<language_name>"} - "Expected" column value is the <language_name>. - "Actual" column value is the result of sandbox version {{#invoke:Lang/sandbox|name_from_tag|<language_code>}}. ]] local function testcases_name_from_tag(self, args) local undabbed_language_table = get_undabbed_table(args.language_list, args.length, args.range, nil) local language_tables = get_table(get_language_code_and_name_table_from_code, undabbed_language_table, args.length, args.range) table.sort(language_tables, compare_by_keys) self:preprocess_equals_preprocess_many( '{{#invoke:Lang/sandbox|name_from_tag|', '}}', '', '', language_tables, {nowiki=false} ) end --[[ -------------------------- < T E S T C A S E S _ T A G _ F R O M _ N A M E > -------------------------- Entry point for the various tag_from_name testcases. Build a table of test patterns where each entry in the table is a table with two members: {"<language_name>", "<language_code>"} - "Expected" column value is the <language_code>. - "Actual" column value is the result of sandbox version {{#invoke:Lang/sandbox|tag_from_name|<language_name>}}. TODO: Currently not working. ]] local function testcases_tag_from_name(self, args) local language_tables = get_table(get_language_name_and_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil) table.sort(language_tables, compare_by_keys2) local ordered_table = {} table.sort(unordered_table) for _, key in ipairs(unordered_table) do table.insert(ordered_table, {key, reverse_table[key]}) end self:preprocess_equals_preprocess_many( '{{#invoke:Lang/sandbox|tag_from_name|', '}}', '', '', language_tables, {nowiki=false} ) end --[[ -------------------------- < T E S T C A S E S _ I S O _ C O D E _ T O _ N A M E > -------------------------- Entry point for the various iso_code_to_name testcases. Build a table of test patterns where each entry in the table is a table with one member: {"<language_code>"} - "Expected" column value is the result of the live version of {{#invoke:ISO 639 name|iso_639_name_to_code|<language_code>}}. - "Actual" column value is the result of sandbox version {{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|<language_code>}}. ]] local function testcases_iso_code_to_name(self, args) local language_tables = get_table(get_language_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil) table.sort(language_tables, compare_by_keys) self:preprocess_equals_preprocess_many( '{{#invoke:ISO 639 name/sandbox|iso_639_code_to_name|link=yes|', '}}', '{{#invoke:ISO 639 name|iso_639_code_to_name|link=yes|', '}}', language_tables, {nowiki=false} ) end --[[ -------------------------- < T E S T C A S E S _ I S O _ N A M E _ T O _ C O D E > -------------------------- Entry point for the various iso_name_to_code testcases. Build a table of test patterns where each entry in the table is a table with two members: {"<language_name>", "<language_code>"} - "Expected" column value is the <language_code>. - "Actual" column is value the result of {{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|<language_name>}}. ]] local function testcases_iso_name_to_code(self, args) local language_tables = get_table(get_language_name_and_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil) table.sort(language_tables, compare_by_keys2) self:preprocess_equals_preprocess_many( '{{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|2=' .. args.iso_number .. "|", '}}', '', '', language_tables, {nowiki=false} ) end --[[--------------------------< S E E _ A L S O >-------------------------------------------------------------- adds items to the list of items in §See also section of Template:Lang-x/doc; Evaluates single positional parameter which is a comma-separated list of items including list markup. {{#invoke:Lang/documentor tool|see_also|*{{tl|Lang-tt-Cyrl}}, *{{tl|Lang-tt-Latn}}, *{{tl|Lang-tt-Arab}}}} ]] local function see_also (frame) if nil == frame.args[1] or '' == frame.args[1] then -- if empty, ... return; -- ... return nothing end return frame:preprocess (frame.args[1]:gsub ('%s*,%s', '\n')); -- preprocess so any templates are rendered before saving and done end --[[ -------------------------< E X P O R T E D _ F U N C T I O N S > ----------------------------------------- ]] return { lang_xx_settings = lang_xx_settings, uses_module = uses_module, see_also = see_also, non_english_language_text_category = non_english_language_text_category, non_english_language_sources_category = non_english_language_sources_category, non_english_language_cs1_sources_category = non_english_language_cs1_sources_category, private_tags = private_tags, -- Module:Lang testcases testcases_category_from_tag = testcases_category_from_tag, testcases_name_from_tag = testcases_name_from_tag, testcases_tag_from_name = testcases_tag_from_name, -- Module:ISO 639 name testcases testcases_iso_code_to_name = testcases_iso_code_to_name, testcases_iso_name_to_code = testcases_iso_name_to_code, } 3db6b7c36a439f8240ae6575fc41416c18ae47fe Template:Lang-el/doc 10 1009 2214 2023-09-20T16:45:01Z wikipedia>Nardog 0 /* See also */ not the case, now just a redirct wikitext text/x-wiki {{Documentation subpage}} {{COinS safe|n}} {{high-use|18556}} {{lua|Module:lang}} {{hatnote|'''This template is only for tagging [[Modern Greek]] text.''' For Ancient Greek, see {{tlx|lang-grc}}; for Medieval Greek, see {{tlx|lang-gkm}}. For custom labels, no labels, or other uses, see {{tlx|lang}}.}} ==Usage== {{#invoke:Lang/documentor tool|lang_xx_settings|template={{ROOTPAGENAME}}}} The primary objective of this template (and of the other {{tlx|lang}} templates) is to tag non-English text so that ''both'' human ''and'' machine readers are able to properly interpret, display and understand non-English text as part of an effort to move towards a [[semantic web]]. To that end, proper use of these templates helps web browsers to choose the correct display font, text-to-speech screen readers to select a more appropriate pronunciation, search engines to better index and relate the context of the content, translation services to properly interpret the words, spell checkers to properly allow and/or require diacritics, and so on. ===Important metadata=== ''Regardless of the label that is displayed in front of the text'' (e.g.: "Ancient Greek:" vs. "Greek:" vs. "Modern Greek"), this template will ''always'' wrap the supplied Greek text inside of appropriate HTML {{tag|span}} tags – that is to say that the Greek text will be tagged using the [[ISO 639-1]] language code for '''Modern Greek''': "'''el'''". The following example wikicode: ::{{tlc|lang-el|άτομο}} produces the following HTML: ::<code><nowiki><a href="/wiki/Greek language" title="Greek language">Greek</a>:</nowiki></code> ::<code><nowiki><span </nowiki>'''lang="el" xml:lang="el"'''<nowiki>>άτομο</span></nowiki></code> This [[metadata]] identifies the enclosed text as Modern Greek for the benefit of search engines, browsers, screen readers, translators, typesetters, and so on. To these "non-human readers", Modern Greek (encoded as "el") has important distinctions from e.g. Ancient Greek (appropriately encoded using "grc" by other {{tlx|lang}} templates). '''For that reason, this template should never be used with Ancient or Medieval or other Greek text'''. == Parameters == {{#lst:Template:Lang-x/doc/parameters|lang_xx_parameters}} ==Syntax== :'''<nowiki>{{lang-el</nowiki>''' ::'''|{{var|Modern Greek text}}''' – using the Greek alphabet (with [[Greek diacritics|diacritics]]). ''(mandatory)'' ::'''|{{var|<nowiki>links=value</nowiki>}}''' – valid values: '''yes''' to have the language name linked (default) and '''no''' to prevent the language name from being linked. '' (optional)'' ::'''|{{var|<nowiki>lit=string</nowiki>}}''' – valid strings are English translations of the Greek text. ''(optional)'' ::'''|{{var|<nowiki>translit=string</nowiki>}}''' – valid strings are transliterations (with the [[Latin script]]) of the Greek text. ''(optional)'' :'''<nowiki>}}</nowiki>''' ==Examples== :{| class="wikitable" |- ! Code ! Result |- | {{tlf|lang-el|άτομο}} | {{lang-el|άτομο}} |- | {{tlf|lang-el|άτομο|links{{=}}yes}} | {{lang-el|άτομο|links=yes}} |- | {{tlf|lang-el|άτομο|links{{=}}no}} | {{lang-el|άτομο|links=no}} |- | <code><nowiki>'''Nea Dimokratia''' -</nowiki></code><br/><code><nowiki>{{Lang-el|Νέα Δημοκρατία|translit=Nea Dimokratia}}</nowiki></code> | '''Nea Dimokratia''' - {{Lang-el|Νέα Δημοκρατία|translit=Nea Dimokratia}} |- | <code><nowiki>'''Eleftherotypia''' -</nowiki></code><br/><code><nowiki>{{Lang-el|Ελευθεροτυπία|lit=Freedom of the Press}}</nowiki></code> | '''Eleftherotypia''' - {{Lang-el|Ελευθεροτυπία|lit=Freedom of the Press}} |} == Tracking categories == * Articles using this template are automatically placed in {{clc|Articles containing Greek-language text}}. * {{clc|Instances of Lang-el using second unnamed parameter}} - nothing inherently wrong if supplied <code>{{{2}}}</code>, but was created to check for compliance with template scheme. == TemplateData == {{TemplateData header}} <templatedata> { "params": { "1": { "label": "Text", "description": "The Greek text to be displayed", "type": "line", "required": true }, "links": { "label": "Link?", "description": "If a link to the article Greek language is included", "type": "boolean", "default": "yes" }, "lit": { "label": "Lit", "description": "English translation of Greek text", "type": "string" }, "translit": { "label": "Transliteration", "description": "A Latin alphabet respelling of Greek text", "suggested": true, "type": "string" }, "translit-std": { "label": "Transliteration standard", "description": "The identifier for the standard used for transliteration. Accepted value must be one of: ISO, DIN, IAST, ALA, and ALA-LC.", "suggested": true, "example": "ISO", "type": "string" }, "label": { "label": "Label", "description": "label to be used instead of template-provided language label; may be wikilinked; special keyword none causes the template to render without any labels (including transliteration and translation labels)", "example": "none" } }, "description": "Insert Greek text. This template should only be used with modern Greek." } </templatedata> == See also == * {{tlx|lang-gkm}} for Medieval Greek. * {{tlx|lang-grc}} for Ancient Greek. * {{tlx|lang-grc-gre}} for which the Ancient Greek description is not satisfactory or limiting. * {{tlx|lang|2=el}} tags Modern Greek text, without the label (for use with custom display, and other uses). * {{tlx|lang|2=ell}} tags Modern Greek text, without the label (for use with custom display, and other uses). * {{tlx|lang|2=grc}} tags Ancient Greek text, without the label (for use with custom display, and other uses). * {{tlx|transl|2=el}} tags text as "Greek Transliteration" (has no visible effect other than said tag when pointer is placed on text). <includeonly>{{Sandbox other|| <!-- Categories go here and interwikis go in Wikidata. --> [[Category:Greek multilingual support templates|{{PAGENAME}}]] [[Category:Lang-x templates|el]] [[Category:Templates that add a tracking category]] }}</includeonly> 9299cd14ca31df398ffd6c1bbb96c9a03855f67c Template:Infobox government agency/doc 10 1536 2871 2023-09-20T18:27:09Z w>Dudhhr 0 Reverted edits by [[Special:Contributions/Jakeistead|Jakeistead]] ([[User talk:Jakeistead|talk]]) ([[WP:AntiVandal|AV]]) wikitext text/x-wiki {{Documentation subpage}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --> {{High-use}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Location map|Module:Check for unknown parameters}} {{Parameter names example | name | native_name | native_name_a | native_name_r | seal | seal_size | seal_caption | seal_alt | logo | logo_size | logo_caption | logo_alt | image | image_size | image_caption | image_alt | formed | preceding1 | preceding2 | preceding3 | preceding4 | preceding5 | preceding6 | dissolved | type | agency_type | superseding1 | superseding2 | superseding3 | superseding4 | superseding5 | superseding6 | jurisdiction | status | headquarters | coordinates | motto | employees | budget | minister_type | minister1_name | minister1_pfo | minister2_name | minister2_pfo | deputyminister_type | deputyminister1_name | deputyminister1_pfo | deputyminister2_name | deputyminister2_pfo | chief1_name | chief1_position | chief2_name | chief2_position | parent_department | parent_agency | parent_agency_type | child1_agency | child2_agency | keydocument1 | keydocument2 | website | agency_id | map | map_size | map_caption | map_alt | footnotes }} {{tlg|bold=yes|Infobox government agency}} is an [[WP:infobox|infobox]] for use in articles on government agencies, departments, ministries, etc. == Usage == === Syntax === <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox government agency | name = | native_name = | native_name_a = | native_name_r = | type = | seal = | seal_size = | seal_caption = | seal_alt = | logo = | logo_size = | logo_caption = | logo_alt = | image = | image_size = | image_caption = | image_alt = | formed = <!-- {{Start date|YYYY|MM|DD}} OR {{Start date and age|YYYY|MM|DD}} --> | preceding1 = | preceding2 = <!-- up to |preceding6= --> | dissolved = | superseding1 = | superseding2 = <!-- up to |superseding6= --> | agency_type = | jurisdiction = | status = | headquarters = | coordinates = <!-- {{coord|LATITUDE|LONGITUDE|type:landmark_region:US|display=inline,title}} --> | motto = | employees = | budget = | minister_type = | minister1_name = | minister1_pfo = | minister2_name = | minister2_pfo = <!-- up to |minister8_name= --> | deputyminister_type = | deputyminister1_name = | deputyminister1_pfo = | deputyminister2_name = | deputyminister2_pfo = <!-- up to |deputyminister8_name= --> | chief1_name = | chief1_position = | chief2_name = | chief2_position = <!-- up to |chief9_name= --> | parent_department = | parent_agency = | parent_agency_type = <!-- defaults to |type if left blank --> | child1_agency = | child2_agency = <!-- up to |child25_agency= --> | keydocument1 = <!-- up to |keydocument6= --> | website = <!-- {{URL|example.com}} --> | agency_id = | map = | map_size = | map_caption = | map_alt = | footnotes = | embed = }} </syntaxhighlight> {{clear}} === Parameters === All parameters except the agency name are optional. {| class="wikitable" style="background-color: white;" | style="background-color: whitesmoke;" | '''Field Name''' | style="background-color: whitesmoke;" | '''Required''' | style="background-color: whitesmoke;" | '''Description''' | style="background-color: whitesmoke;" | '''Values''' |- | name || yes || Name of the agency || Text |- | native_name || no || Agency name in a native language using Western characters (French, German, Spanish, etc.), such as Port Lotniczy im. Fryderyka Chopina. Can also be used for two different names in the same language. || Text; wrap with {{Tl|Lang}} |- | native_name_a || no || (optional) Agency name in a native language with non-Western characters (Chinese, Japanese, Korean, Arabic, etc.), such as 北京首都国际机场. || Text; wrap with {{Tl|Lang}} |- | native_name_r || no || (optional) Use in conjunction with above for Romanized name of the agency, such as Běijīng Shǒudū Guójì Jīcháng. || Text; wrap with {{Tl|Lang}} |- | agency_type || no || Type of agency, rendered on separate line as "'''Type'''" || Text |- | type || no || Type of agency, rendered elsewhere in infobox, e.g. "''type'' overview in first line (defaults to "agency") || Text |- | seal || no || Seal for the agency || filename |- | seal_size || no || Image size for the agency seal (limited to 180 px maximum) || Numbers |- | seal_caption || no || Caption for the agency seal || Text |- | seal_alt || no || Alt caption for the agency seal || Text |- | logo || no || Logo for the agency || filename |- | logo_size || no || Image size for the agency logo (limited to 220 px maximum) || Numbers |- | logo_caption || no || Caption for the agency logo || Text |- | logo_alt || no || Alt caption for the agency logo || Text |- | image || no || Image for the agency || filename |- | image_size || no || Image size for the agency image (limited to 220 px maximum) || Numbers |- | image_caption || no || Caption for the agency image || Text |- | image_alt || no || Alt caption for the agency image || Text |- | formed || no || Date of foundation of the agency || Use {{Tl|Start date}} |- | preceding1 || no || Name of preceding agency. Can be repeated up to six times (preceding1 to preceding6).<br/>'''Note:''' Title of box will automatically pluralise upon use of preceding2. || Text |- | dissolved || no || Date of dissolution of the agency || Text e.g.; <nowiki>25 July 2005, or 1876</nowiki> |- | superseding1 || no || Name of superseding agency. Can be repeated up to six times (superseding1 to superseding6).<br/>'''Note:''' Title of box will automatically pluralise upon use of superseding2. || Text |- | jurisdiction || no || Name of the jurisdiction in which the agency resides || Text e.g.; <nowiki>[[Government of Western Australia]] or [[United States Government]]</nowiki> |- | headquarters || no || Location of the agency's headquarters. || Text e.g.; <nowiki>[[Sydney, New South Wales]]</nowiki> |- | coordinates || no || Headquarters coordinates using {{tl|coord}}. See documentation at {{tl|coord}} for fields. || <nowiki>{{coord|45|31|7|N|122|50|16|W|type:landmark_region:US|display=inline,title}}</nowiki> |- | motto || no || Official motto/slogan of the agency|| Motto/slogan |- | employees || no || Number of employees of the agency || Number |- | budget || no || Annual budget of the agency || Text e.g.; <nowiki>$95 m [[United States dollar|USD]] (2006)</nowiki> |- | minister1_name || no || For [[Westminster system]]s: Name of current minister responsible for the agency. Can be repeated up to eight times (minister1_name to minister8_name).<br/>'''Note:''' Title of box will automatically pluralise upon use of minister2_name. || Text |- | minister1_pfo || no || For Westminster systems: Portfolio title of responsible minister. Can be repeated up to eight times (minister1_pfo to minister8_pfo). || Text |- | deputyminister1_name || no || For Westminster systems with deputy ministers: Name of current deputy minister responsible for the agency. Can be repeated up to eight times (deputyminister1_name to deputyminister8_name).<br/>'''Note:''' Title of box will automatically pluralise upon use of minister2_name. || Text |- | deputyminister1_pfo || no || For Westminster systems with deputy ministers: Portfolio title of responsible deputy minister. Can be repeated up to eight times (minister1_pfo to minister8_pfo). || Text |- | chief1_name || no || Name of current agency chief/director/executive director. Can be repeated up to nine times (chief1_name to chief9_name).<br/>'''Note:''' Title of box will automatically pluralise upon use of chief2_name. || Text |- | chief1_position || no || Position title of current agency chief/director/executive director. Can be repeated up to nine times (chief1_position to chief9_position). || Text |- | parent_department || no || Parent department of this agency (when the parent is not an agency) || Text |- | parent_agency || no || Parent agency of this agency (when the parent is also an agency) || Text |- | parent_agency_type || no || Parent agency type (defaults to ''type'') || Text |- | child1_agency || no || List of current child agencies reporting to this agency. Can be repeated up to twenty five times (child1_agency to child25_agency).<br/>'''Note:''' Title of box will automatically pluralise upon use of child2_agency. || Text |- | keydocument1|| no || Hyperlink of key document for organisation. Can be repeated up to six times (keydocument1 to keydocument6).<br/>'''Note:''' Title of box will automatically pluralise upon use of keydocument2. || Text |- | website || no || Web address for agency website || Use {{Tl|URL}}. '''Don't forget to take out the "example.com"!''' |- | agency_id || no || Unique identifier assigned by records office or similar organisation || Text |- | map || no || Image for the map || filename |- | map_size || no || Image size for the map (limited to 220 px maximum) || Numbers |- | map_caption || no || Caption for the map || Text |- | map_alt || no || Alt caption for the map || Text |- | footnotes || no || Footnotes or references for included information || Text |- | child || no || to make this a child (subsidiary) infobox || Infobox template |- | embed || no || to embed another child (subsidiary) infobox at the bottom || infobox template |} == Examples == {{Infobox government agency | name = United States Department of Agriculture | type = Department | logo = USDA logo.svg | logo_size = 140 px | logo_caption = Logo of the USDA | logo_alt = USDA official logo | seal = US Department of Agriculture seal.svg | seal_size = 140 px | seal_caption = Seal of the Department of Agriculture | seal_alt = Department of Agriculture official seal | formed = {{Start date|1889|02|15}} | jurisdiction = [[Federal government of the United States]] | headquarters = 1301 [[Independence Avenue (Washington, D.C.)|Independence Avenue]], S.W., [[Washington, D.C.]] | coordinates = {{coord|38|53|12|N|77|01|47|W|region:US-DC_type:landmark|display=inline}} | employees = 105,778 (June 2007) | budget = $94 billion [[United States dollar|USD]] (2006) | chief1_name = [[Mike Johanns]] | chief1_position = [[United States Secretary of Agriculture|Secretary of Agriculture]] | chief2_name = [[Charles Franklin Conner|Charles F. Conner]] | chief2_position = Deputy Secretary of Agriculture | child1_agency = Several | website = {{URL|usda.gov}} }} For the [[United States Department of Agriculture]]: <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox government agency | name = United States Department of Agriculture | type = Department | logo = USDA logo.svg | logo_size = 140 px | logo_caption = Logo of the USDA | logo_alt = USDA official logo | seal = Seal of the United States Department of Agriculture.svg | seal_size = 140 px | seal_caption = Seal of the Department of Agriculture | seal_alt = Department of Agriculture official seal | formed = {{Start date|1889|02|15}} | jurisdiction = [[Federal government of the United States]] | headquarters = 1301 [[Independence Avenue (Washington, D.C.)|Independence Avenue]], S.W., [[Washington, D.C.]] | coordinates = {{coord|38|53|12|N|77|01|47|W|region:US-DC_type:landmark|display=inline,title}} | employees = 105,778 (June 2007) | budget = $94 billion [[United States dollar|USD]] (2006) | chief1_name = [[Mike Johanns]] | chief1_position = [[United States Secretary of Agriculture|Secretary of Agriculture]] | chief2_name = [[Charles Franklin Conner|Charles F. Conner]] | chief2_position = Deputy Secretary of Agriculture | child1_agency = Several | website = {{URL|usda.gov}} }} </syntaxhighlight> {{clear}} {{Infobox government agency | name = Federal Statistical Office of Germany | native_name = Statistisches Bundesamt Deutschland | logo = Logo Destatis.svg | logo_alt = Logo Destatis | headquarters = Gustav-Stresemann-Ring 11, D-65189, [[Wiesbaden]] | coordinates = {{coord|50|4|18.7068|N|8|15|6.2676|E|region:DE-HE_type:landmark|display=inline}} | formed = {{start date and age|df=yes|paren=yes|1953|07|03}} | jurisdiction = [[Politics of Germany|Government of Germany]] | employees = 2,780 | minister1_name = [[Wolfgang Schäuble|Wolfgang Schauble]] | minister1_pfo = [[Federal Ministry of the Interior (Germany)|German Interior Minister]] | chief1_name = Walter Radermacher | chief1_position = Bureau president | parent_department = [[Federal Ministry of the Interior (Germany)|Federal Ministry of the Interior]] | website = {{URL|destatis.de}} }} For the [[Federal Statistical Office of Germany]]: <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox government agency | name = Federal Statistical Office of Germany | native_name = Statistisches Bundesamt Deutschland | logo = Logo Destatis.svg | logo_alt = Logo Destatis | headquarters = Gustav-Stresemann-Ring 11, D-65189, [[Wiesbaden]] | coordinates = {{coord|50|4|18.7068|N|8|15|6.2676|E|region:DE-HE_type:landmark|display=inline,title}} | formed = {{start date and age|df=yes|paren=yes|1953|07|03}} | jurisdiction = [[Politics of Germany|Government of Germany]] | employees = 2,780 | minister1_name = [[Wolfgang Schäuble|Wolfgang Schauble]] | minister1_pfo = [[Federal Ministry of the Interior (Germany)|German Interior Minister]] | chief1_name = Walter Radermacher | chief1_position = Bureau president | parent_department = [[Federal Ministry of the Interior (Germany)|Federal Ministry of the Interior]] | website = {{URL|destatis.de}} }} </syntaxhighlight> {{clear}} == TemplateData == {{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <templatedata> { "description": "An infobox template for use in articles on government agencies", "format": "{{_\n| _______________ = _\n}}\n", "params": { "name": { "suggested": true, "aliases": [ "agency_name" ], "label": "Name", "description": "Name of the agency", "type": "line", "default": "Name of the page" }, "native_name": { "aliases": [ "nativename" ], "label": "Native name", "description": "Agency name in a native language using Western characters (French, German, Spanish, etc.), such as Port Lotniczy im. Fryderyka Chopina. Can also be used for two different names in the same language.", "example": "{{lang|pl|Port Lotniczy im}}", "type": "line" }, "native_name_a": { "aliases": [ "nativename_a" ], "label": "Direct native name", "description": "Agency name in a native language with non-Western characters (Chinese, Japanese, Korean, Arabic, etc.).", "example": "{{lang|zh|北京首都国际机场}}", "type": "line" }, "native_name_r": { "aliases": [ "nativename_r" ], "label": "Romanised native name", "description": "(optional) Use in conjunction with above for Romanized name of the agency.", "example": "{{lang|zh-p|Běijīng Shǒudū Guójì Jīcháng}}", "type": "line" }, "seal": { "label": "Seal", "description": "Seal for the agency", "type": "wiki-file-name", "suggested": true }, "seal_size": { "aliases": [ "seal_width" ], "label": "Seal size", "description": "Image size for the agency seal (limited to 180 px maximum)", "type": "number" }, "seal_caption": { "label": "Seal caption", "description": "Caption for the agency seal", "type": "line" }, "logo": { "label": "Logo", "description": "Image for the agency\t", "type": "wiki-file-name", "suggested": true }, "logo_size": { "aliases": [ "logo_width" ], "label": "Logo size", "description": "Image size for the agency image (limited to 180 px maximum)\t", "type": "number" }, "logo_caption": { "description": "Caption for the agency logo", "type": "line", "label": "Logo caption" }, "image": { "aliases": [ "picture" ], "label": "Image", "description": "Image for the agency", "type": "wiki-file-name" }, "image_size": { "aliases": [ "picture_width" ], "label": "Image size", "description": "Image size for the agency image (limited to 180 px maximum)", "type": "number" }, "image_caption": { "aliases": [ "picture_caption" ], "label": "Image caption", "description": "Caption for the agency image\t", "type": "line" }, "formed": { "label": "Date founded", "description": "Date of foundation of the agency", "example": "{{Start date|1066|12|25|df=yes}}", "type": "line", "suggested": true }, "preceding1": { "label": "Preceding agency 1", "description": "Name of a preceding agency. Title of box will automatically pluralise upon use of more than one.", "type": "line" }, "preceding2": { "inherits": "preceding1", "label": "Preceding agency 2" }, "preceding3": { "inherits": "preceding1", "label": "Preceding agency 3" }, "preceding4": { "inherits": "preceding1", "label": "Preceding agency 4" }, "preceding5": { "inherits": "preceding1", "label": "Preceding agency 5" }, "preceding6": { "inherits": "preceding1", "label": "Preceding agency 6" }, "dissolved": { "label": "Date dissolved", "description": "Date of dissolution of the agency", "example": "{{end date|1782}}" }, "superseding1": { "aliases": [ "superseding" ], "label": "Superseding agency 1", "description": "Name of a superseding agency. Title of box will automatically pluralise upon use of more than one.", "type": "line" }, "superseding2": { "inherits": "superseding1", "label": "Superseding agency 2" }, "superseding3": { "inherits": "superseding1", "label": "Superseding agency 3" }, "superseding4": { "inherits": "superseding1", "label": "Superseding agency 4" }, "superseding5": { "inherits": "superseding1", "label": "Superseding agency 5" }, "superseding6": { "inherits": "superseding1", "label": "Superseding agency 6" }, "jurisdiction": { "label": "Jurisdiction", "description": "Name of the jurisdiction in which the agency resides\t", "example": "[[Government of Western Australia]]", "type": "line", "suggested": true }, "headquarters": { "label": "Headquarters", "description": "Location of the agency's headquarters. Do not list country unless it is not already clear from context.", "example": "[[Sydney, New South Wales]]", "type": "line" }, "latd": { "label": "Latitude in degrees", "description": "Headquarters co-ordinates; latitude in degrees.", "type": "number" }, "longd": { "label": "Longitude in degrees.", "description": "Headquarters co-ordinates; longitude in degrees.", "type": "number" }, "latm": { "label": "Latitude in minutes", "description": "Headquarters co-ordinates; latitude in minutes.", "type": "number" }, "lats": { "label": "Latitude in seconds", "description": "Headquarters co-ordinates; latitude in seconds.", "type": "number" }, "latNS": { "label": "Latitude polarity", "description": "Headquarters co-ordinates; specifies Northern (N) or Southern (S) latitude.", "example": "N", "type": "line" }, "longm": { "label": "Longitude in minutes", "description": "Headquarters co-ordinates; longitude in minutes.", "type": "number" }, "longs": { "label": "Longitude in seconds", "description": "Headquarters co-ordinates; longitude in seconds.", "type": "number" }, "longEW": { "label": "Longitude polarity", "description": "Headquarters co-ordinates; specifies Western (W) or Eastern (E) latitude.", "example": "W", "type": "line" }, "region_code": { "label": "Region code", "description": "Headquarters coordinates; sets the preferred map region of coverage, used in selecting appropriate map resources for the area. The region should be supplied as either a two character ISO 3166-1 alpha-2 country code, or an ISO 3166-2 region code.", "example": "AU", "type": "line" }, "coordinates": { "label": "Headquarter co-ordinates template", "description": "Headquarters coordinates using {{coord}} option instead of the above. See documentation at {{coord}} for fields.\t", "type": "line", "deprecated": true }, "motto": { "label": "Motto or slogan", "description": "Official motto/slogan of the agency", "example": "Semper Occultus", "type": "line" }, "employees": { "label": "Employees", "description": "Number of employees of the agency", "example": "3200", "type": "number", "suggested": true }, "budget": { "label": "Annual budget", "description": "Annual budget of the agency", "example": "$95 m [[United States dollar|USD]] (2006)", "type": "line", "suggested": true }, "minister1_name": { "label": "Minister 1", "description": "Name of a current minister responsible for the agency, in Westminster systems. Title of box will automatically pluralise upon use of more than one.", "example": "[[The Right Honourable|Rt Hon]] [[Philip Hammond]], [[Member of parliament|MP]]", "type": "line" }, "minister1_pfo": { "label": "Ministerial portfolio 1", "description": "Portfolio of a current minister responsible for the agency, in Westminster systems. Title of box will automatically pluralise upon use of more than one.", "example": "[[Secretary of State for Foreign and Commonwealth Affairs]]", "type": "line" }, "minister2_name": { "inherits": "minister1_name", "label": "Minister 2" }, "minister2_pfo": { "inherits": "minister1_pfo", "label": "Ministerial portfolio 2" }, "minister3_name": { "inherits": "minister1_name", "label": "Minister 3" }, "minister3_pfo": { "inherits": "minister1_pfo", "label": "Ministerial portfolio 3" }, "minister4_name": { "inherits": "minister1_name", "label": "Minister 4" }, "minister4_pfo": { "inherits": "minister1_pfo", "label": "Ministerial portfolio 4" }, "minister5_name": { "inherits": "minister1_name", "label": "Minister 5" }, "minister5_pfo": { "inherits": "minister1_pfo", "label": "Ministerial portfolio 5" }, "minister6_name": { "inherits": "minister1_name", "label": "Minister 6" }, "minister6_pfo": { "inherits": "minister1_pfo", "label": "Ministerial portfolio 6" }, "minister7_name": { "inherits": "minister1_name", "label": "Minister 7" }, "minister7_pfo": { "inherits": "minister1_pfo", "label": "Ministerial portfolio 7" }, "deputyminister1_name": { "label": "Deputy minister 1", "description": "Name of a current deputy minister responsible for the agency, in Westminster systems. Title of box will automatically pluralise upon use of more than one.", "type": "line" }, "deputyminister1_pfo": { "label": "Deputy ministerial portfolio 1", "description": "Portfolio of a current deputy minister responsible for the agency, in Westminster systems. Title of box will automatically pluralise upon use of more than one.", "example": "[[Secretary of State for Foreign and Commonwealth Affairs]]", "type": "line" }, "deputyminister2_name": { "inherits": "deputyminister1_name", "label": "Deputy minister 2" }, "deputyminister2_pfo": { "inherits": "deputyminister1_pfo", "label": "Deputy ministerial portfolio 2" }, "deputyminister3_name": { "inherits": "deputyminister1_name", "label": "Deputy minister 3" }, "deputyminister3_pfo": { "inherits": "deputyminister1_pfo", "label": "Deputy ministerial portfolio 3" }, "deputyminister4_name": { "inherits": "deputyminister1_name", "label": "Deputy minister 4" }, "deputyminister4_pfo": { "inherits": "deputyminister1_pfo", "label": "Deputy ministerial portfolio 4" }, "deputyminister5_name": { "inherits": "deputyminister1_name", "label": "Deputy minister 5" }, "deputyminister5_pfo": { "inherits": "deputyminister1_pfo", "label": "Deputy ministerial portfolio 5" }, "deputyminister6_name": { "inherits": "deputyminister1_name", "label": "Deputy minister 6" }, "deputyminister6_pfo": { "inherits": "deputyminister1_pfo", "label": "Deputy ministerial portfolio 6" }, "deputyminister7_name": { "inherits": "deputyminister1_name", "label": "Deputy minister 7" }, "deputyminister7_pfo": { "inherits": "deputyminister1_pfo", "label": "Deputy ministerial portfolio 7" }, "chief1_name": { "label": "Head 1", "description": "Name of current agency chief/director/executive director.", "example": "[[Alex Younger]]", "type": "line", "suggested": true }, "chief1_position": { "label": "Head position 1", "description": "Position title of current agency chief/director/executive director.", "example": "[[Chief of the Secret Intelligence Service|Chief of the SIS]]", "type": "line", "suggested": true }, "chief2_name": { "inherits": "chief1_name", "label": "Head 2" }, "chief2_position": { "inherits": "chief1_position", "label": "Head position 2" }, "chief3_name": { "inherits": "chief1_name", "label": "Head 3" }, "chief3_position": { "inherits": "chief1_position", "label": "Head position 3" }, "chief4_name": { "inherits": "chief1_name", "label": "Head 4" }, "chief4_position": { "inherits": "chief1_position", "label": "Head position 4" }, "chief5_name": { "inherits": "chief1_name", "label": "Head 5" }, "chief5_position": { "inherits": "chief1_position", "label": "Head position 5" }, "chief6_name": { "inherits": "chief1_name", "label": "Head 6" }, "chief6_position": { "inherits": "chief1_position", "label": "Head position 6" }, "chief7_name": { "inherits": "chief1_name", "label": "Head 7" }, "chief7_position": { "inherits": "chief1_position", "label": "Head position 7" }, "chief8_name": { "inherits": "chief1_name", "label": "Head 8" }, "chief8_position": { "inherits": "chief1_position", "label": "Head position 8" }, "chief9_name": { "inherits": "chief1_name", "label": "Head 9" }, "chief9_position": { "inherits": "chief1_position", "label": "Head position 9" }, "parent_department": { "label": "Parent department", "description": "Parent department of this agency (when the parent is not an agency)\t", "example": "[[Home Office]]", "type": "line", "suggested": true }, "parent_agency": { "label": "Parent agency", "description": "Parent agency of this agency (when the parent is also an agency)\t", "type": "line" }, "child1_agency": { "label": "Child agency 1", "description": "An agency that reports to this one.", "type": "line" }, "child2_agency": { "inherits": "child1_agency", "label": "Child agency 2" }, "child3_agency": { "inherits": "child1_agency", "label": "Child agency 3" }, "child4_agency": { "inherits": "child1_agency", "label": "Child agency 4" }, "child5_agency": { "inherits": "child1_agency", "label": "Child agency 5" }, "child6_agency": { "inherits": "child1_agency", "label": "Child agency 6" }, "child7_agency": { "inherits": "child1_agency", "label": "Child agency 7" }, "child8_agency": { "inherits": "child1_agency", "label": "Child agency 8" }, "child9_agency": { "inherits": "child1_agency", "label": "Child agency 9" }, "child10_agency": { "inherits": "child1_agency", "label": "Child agency 10" }, "child11_agency": { "inherits": "child1_agency", "label": "Child agency 11" }, "child12_agency": { "inherits": "child1_agency", "label": "Child agency " }, "child13_agency": { "inherits": "child1_agency", "label": "Child agency 13" }, "child14_agency": { "inherits": "child1_agency", "label": "Child agency 14" }, "child15_agency": { "inherits": "child1_agency", "label": "Child agency 15" }, "child16_agency": { "inherits": "child1_agency", "label": "Child agency 16" }, "child17_agency": { "inherits": "child1_agency", "label": "Child agency 17" }, "child18_agency": { "inherits": "child1_agency", "label": "Child agency 18" }, "child19_agency": { "inherits": "child1_agency", "label": "Child agency 19" }, "child20_agency": { "inherits": "child1_agency", "label": "Child agency 20" }, "child31_agency": { "inherits": "child1_agency", "label": "Child agency 31" }, "child22_agency": { "inherits": "child1_agency", "label": "Child agency 22" }, "child23_agency": { "inherits": "child1_agency", "label": "Child agency 23" }, "child24_agency": { "inherits": "child1_agency", "label": "Child agency 24" }, "child25_agency": { "inherits": "child1_agency", "label": "Child agency 25" }, "keydocument1": { "label": "Key document 1", "description": "Hyperlink to key document for the organisation.", "type": "url" }, "keydocument2": { "inherits": "keydocument1", "label": "Key document 2" }, "keydocument3": { "inherits": "keydocument1", "label": "Key document 3" }, "keydocument4": { "inherits": "keydocument1", "label": "Key document 4" }, "keydocument5": { "inherits": "keydocument1", "label": "Key document 5" }, "keydocument6": { "inherits": "keydocument1", "label": "Key document 6" }, "website": { "label": "Website", "description": "Hyperlink to agency's website.", "type": "url", "suggested": true }, "map": { "label": "Map", "description": "Image for the map", "type": "wiki-file-name" }, "map_size": { "aliases": [ "map_width", "pushpin_mapsize" ], "label": "Map size", "description": "Image size for the map (limited to 180 px maximum)", "type": "number" }, "map_caption": { "label": "Map caption", "description": "Caption for the map", "type": "line", "aliases": [ "pushpin_map_caption" ] }, "footnotes": { "label": "Footnotes" }, "type": { "label": "Type", "description": "Type of agency", "type": "line", "default": "agency" }, "service": {}, "agency_type": {}, "subbox": {}, "italic title": {}, "child": {}, "embed": {}, "seal_alt": {}, "logo_alt": {}, "image_alt": {}, "status": {}, "minister_type": {}, "minister8_name": { "label": "Minister 8" }, "minister8_pfo": { "label": "Ministerial portfolio 8" }, "deputyminister_type": {}, "deputyminister8_name": { "label": "Deputy minister 8" }, "deputyminister8_pfo": { "label": "Deputy ministerial portfolio 8" }, "parent_agency_type": {}, "child21_agency": {}, "agency_id": {}, "map_alt": { "aliases": [ "pushpin_map_alt" ] }, "map_type": { "aliases": [ "pushpin_map" ] }, "map_dot_mark": {}, "map_dot_label": { "aliases": [ "map dot label", "pushpin_label" ] }, "relief": { "aliases": [ "pushpin_relief" ] }, "image_map": {} }, "paramOrder": [ "name", "native_name", "native_name_a", "native_name_r", "type", "seal", "seal_size", "seal_caption", "logo", "logo_size", "logo_caption", "image", "image_size", "image_caption", "formed", "preceding1", "preceding2", "preceding3", "preceding4", "preceding5", "preceding6", "dissolved", "superseding1", "superseding2", "superseding3", "superseding4", "superseding5", "superseding6", "jurisdiction", "headquarters", "latd", "longd", "latm", "lats", "latNS", "longm", "longs", "longEW", "region_code", "coordinates", "motto", "employees", "budget", "minister1_name", "minister1_pfo", "minister2_name", "minister2_pfo", "minister3_name", "minister3_pfo", "minister4_name", "minister4_pfo", "minister5_name", "minister5_pfo", "minister6_name", "minister6_pfo", "minister7_name", "minister7_pfo", "minister8_name", "deputyminister1_name", "deputyminister1_pfo", "deputyminister2_name", "deputyminister2_pfo", "deputyminister3_name", "deputyminister3_pfo", "deputyminister4_name", "deputyminister4_pfo", "deputyminister5_name", "deputyminister5_pfo", "deputyminister6_name", "deputyminister6_pfo", "deputyminister7_name", "deputyminister7_pfo", "chief1_name", "chief1_position", "chief2_name", "chief2_position", "chief3_name", "chief3_position", "chief4_name", "chief4_position", "chief5_name", "chief5_position", "chief6_name", "chief6_position", "chief7_name", "chief7_position", "chief8_name", "chief8_position", "chief9_name", "chief9_position", "parent_department", "parent_agency", "child1_agency", "child2_agency", "child3_agency", "child4_agency", "child5_agency", "child6_agency", "child7_agency", "child8_agency", "child9_agency", "child10_agency", "child11_agency", "child12_agency", "child13_agency", "child14_agency", "child15_agency", "child16_agency", "child17_agency", "child18_agency", "child19_agency", "child20_agency", "child31_agency", "child22_agency", "child23_agency", "child24_agency", "child25_agency", "keydocument1", "keydocument2", "keydocument3", "keydocument4", "keydocument5", "keydocument6", "website", "map", "map_size", "map_caption", "footnotes", "agency_type", "service", "subbox", "italic title", "child", "embed", "seal_alt", "logo_alt", "image_alt", "status", "minister_type", "minister8_pfo", "deputyminister_type", "deputyminister8_name", "deputyminister8_pfo", "parent_agency_type", "child21_agency", "agency_id", "map_alt", "map_type", "map_dot_mark", "map_dot_label", "relief", "image_map" ] } </templatedata> {{Collapse bottom}} == Tracking category == * {{clc|Pages using infobox government agency with unknown parameters}} == See also == ===A related note=== {{Note2}} 'Infobox government agency' is discouraged as the sole infobox for certain government bodies, such as law enforcement, military units, space programs, and a few others because they ''all'' have infoboxes specializing in those subjects. However, practical embedding of infoboxes ''is'' encouraged. {{Organization infoboxes}} <includeonly>{{Sandbox other|| <!--Categories below this line, please; interwikis at Wikidata--> [[Category:Organization infobox templates|Government Agency]] [[Category:Politics and government infobox templates|Government Agency]] [[Category:Embeddable templates]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}</includeonly> 24bd4129b5e2f63990eb107efca1696a417c76f1 Template:Infobox person/doc 10 1259 2593 2023-09-21T07:19:01Z w>Toghrul R 0 + wikitext text/x-wiki <noinclude>{{pp-template|small=yes}}{{pp-move-indef}}</noinclude>{{for|an infobox for fictional characters|Template:Infobox character}} {{Template shortcut|Personbox}} {{documentation subpage}} {{Person infobox header}} {{High-use|info=About [https://linkcount.toolforge.org/index.php?project=en.wikipedia.org&page=Template:Infobox_person&namespaces=0 410,000] of them (90%) are in mainspace.}} {{Notice|Please note that in 2016, the {{para|religion}} and {{para|ethnicity}} parameters were removed from Infobox person as a result of [[Wikipedia:Village pump (policy)/Archive 126#RfC: Religion in biographical infoboxes|the RfC: Religion in biographical infoboxes]] and [[Wikipedia:Village pump (policy)/Archive 127#RfC: Ethnicity in infoboxes|the RfC: Ethnicity in infoboxes]] as clarified by [[Template talk:Infobox person/Archive 31#Ethnicity? Religion?|this discussion]].}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} {{Tracks Wikidata|P18|cat=No local image but image on Wikidata}} <!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE --> {{tl|Infobox person}} may be used to summarize information about a particular person, usually at the top of an article. == Redirects and calls == At least {{PAGESINCATEGORY:Templates calling Infobox person}} other [[:Category:Templates calling Infobox person|templates call this one]] and many templates [{{fullurl:Special:WhatLinksHere/Template:Infobox_person|namespace=10&hidetrans=1&hidelinks=1}} redirect here]. == Modules == The following templates are suitable for use as a "module" in this one: * Templates in [[:Category:Biographical templates usable as a module]] * {{tl|Listen}} * {{tl|Infobox Chinese}} == Usage == The infobox may be added by pasting the template as shown below into an article and then filling in the desired fields. Any parameters left blank or omitted will not be displayed. === Blank template with basic parameters === {{Infobox person | name = ''name'' | image = example-serious.jpg | alt = alt | caption = ''caption'' | birth_name = ''birth_name'' | birth_date = ''birth_date'' | birth_place = ''birth_place'' | death_date = ''death_date'' | death_place = ''death_place'' | nationality = ''nationality'' | other_names = ''other_names'' | occupation = ''occupation'' | years_active = ''years_active'' | known_for = ''known_for'' | notable_works = ''notable_works'' }} <syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em;"> {{Infobox person | name = <!-- defaults to article title when left blank --> | image = <!-- filename only, no "File:" or "Image:" prefix, and no enclosing [[brackets]] --> | alt = <!-- descriptive text for use by speech synthesis (text-to-speech) software --> | caption = | birth_name = <!-- only use if different from name --> | birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year with {{Birth year and age|YYYY}} unless the exact date is already widely published, as per [[WP:DOB]]. For people who have died, use {{Birth date|YYYY|MM|DD}}. --> | birth_place = | death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (DEATH date then BIRTH date) --> | death_place = | nationality = <!-- use only when necessary per [[WP:INFONAT]] --> | other_names = | occupation = | years_active = | known_for = | notable_works = }} </syntaxhighlight> {{Infobox person | name = ''name'' | image = example-serious.jpg | alt = alt | caption = ''caption'' | birth_name = ''birth_name'' | birth_date = ''birth_date'' | birth_place = ''birth_place'' | death_date = ''death_date'' | death_place = ''death_place'' | nationality = ''nationality'' | other_names = ''other_names'' | occupation = ''occupation'' | years_active = ''years_active'' | known_for = ''known_for'' | notable_works = ''notable_works'' }} <syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em;"> {{Infobox person | name = | image = | alt = | caption = | birth_name = | birth_date = | birth_place = | death_date = | death_place = | nationality = | other_names = | occupation = | years_active = | known_for = | notable_works = }} </syntaxhighlight> {{clear}} === Blank template with all parameters === Only the most pertinent information should be included. Please {{em|remove}} unused parameters, and refrain from inserting dubious trivia in an attempt to fill all parameters. {{Parameter names example | _display=italics | honorific_prefix | name | honorific_suffix | image=example-serious.jpg | image_upright=1 | landscape | alt | caption <!--shows placement of parameters, see examples for image--> | native_name | native_name_lang | pronunciation | birth_name | birth_date | birth_place | baptised <!--does not display due to birth date displayed--> | disappeared_date | disappeared_place | disappeared_status | death_date | death_place | death_cause <!--should only be included when the cause of death has significance for the subject's notability--> | body_discovered | resting_place | resting_place_coordinates | monuments | nationality | other_names | siglum | citizenship | education | alma_mater | occupation | years_active | era | employer | organization | agent | known_for | notable_works | style | height | television | title | term | predecessor | successor | party | otherparty | movement | opponents | boards | criminal_charges | criminal_penalty | criminal_status | spouse | partner | children | parents | relatives | family | callsign | awards | website | module | module2 | module3 | module4 | module5 | module6 <!--removed the ... which only saved two lines from being shown--> | signature=<nowiki>signature.jpg</nowiki> |signature_type | signature_size | signature_alt | footnotes }} <syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em"> {{Infobox person | honorific_prefix = | name = <!-- defaults to article title when left blank --> | honorific_suffix = | image = <!-- filename only, no "File:" or "Image:" prefix, and no enclosing [[brackets]] --> | image_upright = | landscape = <!-- yes, if wide image, otherwise leave blank --> | alt = <!-- descriptive text for use by speech synthesis (text-to-speech) software --> | caption = | native_name = | native_name_lang = | pronunciation = | birth_name = <!-- only use if different from name --> | birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year with {{Birth year and age|YYYY}} unless the exact date is already widely published, as per [[WP:DOB]]. For people who have died, use {{Birth date|YYYY|MM|DD}}. --> | birth_place = | baptised = <!-- will not display if birth_date is entered --> | disappeared_date = <!-- {{Disappeared date and age|YYYY|MM|DD|YYYY|MM|DD}} (disappeared date then birth date) --> | disappeared_place = | disappeared_status = | death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (enter DEATH date then BIRTH date (e.g., ...|1967|8|31|1908|2|28}} use both this parameter and |birth_date to display the person's date of birth, date of death, and age at death) --> | death_place = | death_cause = <!-- should only be included when the cause of death has significance for the subject's notability --> | body_discovered = | resting_place = | resting_place_coordinates = <!-- {{coord|LAT|LONG|type:landmark|display=inline}} --> | burial_place = <!-- may be used instead of resting_place and resting_place_coordinates (displays "Burial place" as label) --> | burial_coordinates = <!-- {{coord|LAT|LONG|type:landmark|display=inline}} --> | monuments = | nationality = <!-- use only when necessary per [[WP:INFONAT]] --> | other_names = | siglum = | citizenship = <!-- use only when necessary per [[WP:INFONAT]] --> | education = | alma_mater = | occupation = | years_active = | era = | employer = | organization = | agent = <!-- discouraged in most cases, specifically when promotional, and requiring a reliable source --> | known_for = | notable_works = <!-- produces label "Notable work"; may be overridden by |credits=, which produces label "Notable credit(s)"; or by |works=, which produces label "Works"; or by |label_name=, which produces label "Label(s)" --> | style = | height = <!-- "X cm", "X m" or "X ft Y in" plus optional reference (conversions are automatic) --> | television = | title = <!-- formal/awarded/job title. The parameter |office=may be used as an alternative when the label is better rendered as "Office" (e.g. public office or appointments) --> | term = | predecessor = | successor = | party = | otherparty = | movement = | opponents = | boards = | criminal_charges = <!-- criminality parameters should be supported with citations from reliable sources --> | criminal_penalty = | criminal_status = | spouse = <!-- use article title or common name --> | partner = <!-- (unmarried long-term partner) --> | children = | parents = <!-- overrides mother and father parameters --> | mother = <!-- may be used (optionally with father parameter) in place of parents parameter (displays "Parent(s)" as label) --> | father = <!-- may be used (optionally with mother parameter) in place of parents parameter (displays "Parent(s)" as label) --> | relatives = | family = | callsign = <!-- amateur radio, use if relevant --> | awards = | website = <!-- {{URL|example.com}} --> | module = | module2 = | module3 = | module4 = | module5 = | module6 = | signature = | signature_type = | signature_size = | signature_alt = | footnotes = }} </syntaxhighlight> <syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em"> {{Infobox person | honorific_prefix = | name = | honorific_suffix = | image = | image_upright = | landscape = | alt = | caption = | native_name = | native_name_lang = | pronunciation = | birth_name = | birth_date = | birth_place = | baptised = | disappeared_date = | disappeared_place = | disappeared_status = | death_date = | death_place = | death_cause = | body_discovered = | resting_place = | resting_place_coordinates = | burial_place = | burial_coordinates = | monuments = | nationality = | other_names = | siglum = | citizenship = | education = | alma_mater = | occupation = | years_active = | era = | employer = | organization = | agent = | known_for = | notable_works = | style = | height = | television = | title = | term = | predecessor = | successor = | party = | otherparty = | movement = | opponents = | boards = | criminal_charges = | criminal_penalty = | criminal_status = | spouse = | partner = | children = | parents = | mother = | father = | relatives = | family = | callsign = | awards = | website = | module = | module2 = | module3 = | module4 = | module5 = | module6 = | signature = | signature_type = | signature_size = | signature_alt = | footnotes = }} </syntaxhighlight> {{clear}} == Parameters == {{large|Do not use all these parameters for any one person. The list is long to cover a wide range of people. Only use those parameters that convey essential or notable information about the subject, and ensure that this information is sourced in the article or (if present only in the infobox) in the infobox itself}} Any parameters left blank or omitted will not be displayed. Many parameters have alternative names, implemented for compatibility with other templates (especially to aid merging). The preferred names are shown in the table below. {| class="wikitable" ! Parameter ! Explanation |- | {{mono|honorific_prefix}} | To appear on the line above the person's name. This is for things like {{para|honorific_prefix|Sir}} – honorifics of serious significance that are attached to the name in formal address, such as knighthoods and formal titles used by people with official governmental or diplomatic positions; do not use it for routine things like "{{!mxt|[[Dr.]]}}" or "{{!mxt|[[Ms.]]}}" |- | {{mono|name}} | Common name of person (defaults to article name if left blank; provide {{para|birth_name}} (below) if different from {{para|name}}). If middle initials are specified (or implied) by the lead of the article, and are not specified separately in the {{para|birth_name}} parameter, include them here. ''Do not put honorifics or alternative names in this parameter.'' There are separate parameters for these things, covered below. |- | {{mono|honorific_suffix}} | To appear on the line below the person's name. This is for things like {{para|honorific_suffix|[[Officer of the Order of the British Empire|OBE]]}} – honorifics of serious significance that are attached to the name in formal address, such as national orders and non-honorary doctorates; do not use it for routine things like "{{!mxt|[[Bachelor of Arts|BA]]}}". It is permissible but not required to use the {{tlx|post-nominals}} template inside this parameter; doing so requires {{tlx|post-nominals|size{{=}}100%|...}}. |- | {{mono|image}} | Image name: {{pval|abc.jpg}}, {{pval|xpz.png}}, {{pval|123.gif}}, etc., without the {{code|File:}} or {{code|Image:}} prefix. If an image is desired but not available, one may add {{pval|yes}} to the {{para|needs-photo}} parameter of the {{tlx|WikiProject Biography}} template on the talk page. If no image is available yet, [[Wikipedia:Centralized discussion/Image placeholders|do not use an image placeholder]]. See [[#Image]] for further guidelines. |- | {{mono|image_upright}} | Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%). |- | {{mono|landscape}} | Set to <code>yes</code> when using wide, short images. The image height (rather than width) will be limited to 200 pixels. |- | {{mono|alt}} | Descriptive [[Wikipedia:Manual of Style/Accessibility/Alternative text for images|{{code|alt}} text for the image]], for visually impaired readers. One word (such as {{pval|photograph}}) is rarely sufficient. Do not copy-paste the value of {{para|caption}} (below) into this parameter. Example of the difference: "Willie Nelson at a concert in Dallas, 1989" is good as {{para|caption}} value; "Nelson in western-wear with an acoustic guitar, on stage in a daytime show with band in background" is an {{para|alt}} description. If nothing meaningful can be said that isn't already in the caption, use the [[Wikipedia:Manual of Style/Accessibility/Alternative text for images#Captions and nearby text|stock text]] {{para|alt|refer to caption}}. |- | {{mono|caption}} | Caption for image, if needed. Try to include the date of photo, some context (check the <code>File:</code> or [[Wikimedia Commons|Commons]] page for the image). Image credit should generally not be included per [[MOS:CREDITS]]. |- | {{mono|native_name}} | The person's name in their own language, if different. |- | {{mono|native_name_lang}} | [[ISO 639-1]] code, e.g., "{{pval|fr}}" for French. If more than one, use {{tlx|lang}} around each name in {{para|native_name}} instead. |- | {{mono|pronunciation}} | Details of how to pronounce the individual's native name. <!--copied from TemplateData description, if changed please update there also--> |- | {{mono|birth_name}} | Name at birth; only use if different from {{para|name}}. |- | {{mono|birth_date}} | Date of birth: Use {{tlx|birth date and age}} (if living) or {{tlx|birth date}} (if dead). {{crossref|See template's page for details on usage.}} If only a year of birth is known, or age as of a certain date, consider using {{tlx|birth year and age}} or {{tlx|birth based on age as of date}}. For living people [[Wikipedia:Biographies of living persons#Privacy of personal information and using primary sources|supply only the year unless the exact date is already widely published]]. Treat such cases as if only the year is known, so use {{tlx|birth year and age}} or a similar option. The templates mentioned in this paragraph emit metadata indicating the date is in the Gregorian calendar; if the date is in the Julian calendar, do not use these templates, just write the date. |- | {{mono|{{vanchor|birth_place}}}} | Place of birth: {{var|city}}, {{var|administrative region}}, {{var|country}}. * Use the name of the birthplace at the time of birth, e.g.: {{pval|Saigon}} (prior to 1976) or {{pval|Ho Chi Minh City}} (post-1976). * [[Wikipedia:Manual of Style/Icons#Do not use flags to indicate locations of birth, residence, or death|Do not use a flag template]], coat of arms, or other icon. * [[Wikipedia:Manual of Style/Infoboxes#Purpose|Omit unnecessary or redundant details]]. For example, it is not necessary to state: {{!xt|{{pval|New York City, [[New York (state)|New York]], United States}}}} when {{xt|{{pval|New York City, U.S.}}}} conveys essentially the same information more concisely. * Countries should [[Wikipedia:Manual of Style/Linking#What generally should not be linked|generally not be linked]]. * For modern subjects, the country should generally be a sovereign state; for United Kingdom locations, the constituent [[Countries of the United Kingdom|countries of the UK]] are sometimes used instead, when more appropriate in the context. * For historical subjects, use the place name most appropriate for the context and our readership. What the place may correspond to on a modern map is a matter for an article's main text. * For union republics, subordinate country can be shown: {{!xt|{{pval|Moscow, [[Russian SFSR]], Soviet Union}}}}. * For subsequent places (of death, etc.) it is not necessary to repeat jurisdictional details or links for the same place name. |- | {{mono|baptised}} | Date of baptism: {{em|Only}} for use when birth date is not known (e.g., for [[Ludwig van Beethoven]]). Will not display if a birth date is entered. Do not use subtemplates. Parameter <code>baptized</code> can be used for articles that use American English spelling. |- | {{mono|disappeared_date}} | (For missing people) Date of disappearance: Use {{tlx|disappeared date and age}} (if birth date is known) or {{tlx|disappeared date}} (if birth date unknown). |- | {{mono|disappeared_place}} | (For missing people) Place of disappearance: {{var|city}}, {{var|administrative region}}, {{var|country}}.&nbsp;<!--This space is needed for readability, due to quirk of these templated elements being in proximity.--> ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.) |- | {{mono|disappeared_status}} | (For missing people) Current status for the person, e.g., if the person is still regarded as missing (using {{tlx|missing for}} to calculate the time since disappearance), or if the person has been [[Declared death in absentia|declared dead ''{{lang|la|in absentia}}'']], with a date for such a ruling. |- | {{mono|death_date}} | Date of death: Use {{tlx|death date and age}} (if birth date is known) or {{tlx|death date}} (if birth date unknown). {{crossref|See template's page for details on usage.}} If exact dates are unknown, consider using {{tlx|death year and age}}. The templates mentioned in this paragraph emit metadata indicating the date is in the Gregorian calendar; if the date is in the Julian calendar, do not use these templates, just write the date. |- | {{mono|death_place}} | Place of death: {{var|city}}, {{var|administrative region}}, {{var|country}}.&nbsp; ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.) |- | {{mono|death_cause}} | Cause of death. Should be clearly defined and sourced, and should only be included when the cause of death has significance for the subject's notability, e.g. [[James Dean]], [[John Lennon]]. It should not be filled in for unremarkable deaths such as those from old age or routine illness, e.g. [[Bruce Forsyth]], [[Eduard Khil]]. |- | {{mono|body_discovered}} | Place where the body was discovered (if different from place of death). {{var|city}}, {{var|administrative region}}, {{var|country}}.&nbsp; ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.) |- | {{mono|burial_place}} | Place of burial {{var|city}}, {{var|administrative region}}, {{var|country}}.&nbsp; ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc. {{crossref|See {{para|resting_place}} for non-burials}}.) |- | {{mono|burial_coordinates}} | Coordinates for place of burial, to accompany {{para|burial_place}}. Use {{tlx|coord}} template. |- | {{mono|resting_place}} | Location of columbarium, ash-scattering, etc. If no location, leave blank. {{var|city}}, {{var|administrative region}}, {{var|country}}.&nbsp; ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.) |- | {{mono|resting_place_coordinates}} | Coordinates for location of columbarium, ash-scattering etc. Use {{tlx|coord}} template. |- | {{mono|monuments}} | Significant monuments erected, buildings named, etc., in honour of the subject. If many, link to an appropriate section of the article instead. |- | {{mono|nationality}} | {{anchor|nationality}}May be used instead of {{para|citizenship}} (below) or vice versa in cases where any confusion could result. Should only be used {{em|with}} {{para|citizenship}} when they differ per [[WP:INFONAT]]. Do not put religion or ethnicity in this field. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, anachronisms, "country" definitions, etc.) |- | {{mono|other_names}} | Other notable names for the person, if different from {{para|name}} and {{para|birth_name}}. [[Wikipedia:Manual of Style/Biographies#Pseudonyms|This can include]] stage names, maiden/married names, nicknames, criminal aliases, etc. |- | {{mono|siglum}} | [[Siglum]] or monogram, a text shortcut (often formed from the initials of the name, with variations) used to sign work, if relevant. |- | {{mono|citizenship}} | Country of legal citizenship, if different from nationality. Rarely needed. See usage notes for {{para|nationality}}, above. Should only be used if citizenship differs from the value in {{para|nationality}} and cannot be inferred from the birthplace. Note that many countries do not automatically grant citizenship to people born within their borders. Do not put religion or ethnicity in this field. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, anachronisms, "country" definitions, etc.) |- | {{mono|education}} | Education, e.g., degree, institution and graduation year, if relevant. If very little information is available or relevant, the {{para|alma_mater}} parameter may be more appropriate. |- | {{mono|alma_mater}} | ''[[Alma mater]]''. This parameter is a more concise alternative to (not addition to) {{para|education}}, and will often consist of the linked name of the last-attended institution of higher education (not secondary schools). It is usually not relevant to include either parameter for non-graduates, but article talk page consensus may conclude otherwise, as perhaps at [[Bill Gates]]. |- | {{mono|occupation}} | Occupation(s) as given in the lead. Use list markup for three or more entries, e.g. with {{tlx|flatlist}}. Please observe [[sentence case]] and capitalise only the first letter of the first item; e.g.: {{block indent|1={{Flatlist| * Musician * singer-songwriter * actor }}}} |- | {{mono|years_active}} | Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format {{code|1950–2000}}, or {{code|1970–present}} if still active. [[Wikipedia:Manual of Style/Dates and numbers#Ranges|Date ranges]] always use an [[Wikipedia:Manual of Style#En dashes|en dash]], not hyphen. If no dates of birth and/or death are known for the subject, only a ''[[floruit]]'' date range, as is common with ancient subjects, this parameter can be used for it. If approximate (''[[wikt:circa#English|circa]]'') dates are known for either or both, put them in the {{para|birth_date}} and {{para|death_date}} parameters. Helpful templates: {{tlx|floruit}}, {{tlx|circa}}. |- | {{mono|era}} | Era (e.g., {{pval|Medieval}}) in which the person lived; less specific than {{para|years_active}}. Should not be used if dates are available. |- | {{mono|employer}} | Employer(s), if relevant. |- | {{mono|organization}} or {{mono|organisation}} | Non-employing organization(s), if relevant. |- | {{mono|agent}} | The subject's agent (individual and/or agency), discouraged in most cases, specifically when promotional, and requiring a [[Wikipedia:Identifying reliable sources|reliable source]]. |- | {{mono|known_for}} | A brief description of why the person is notable. |- | {{ubl|{{mono|notable_works}};<br/>&nbsp;&nbsp;{{small|alternatives:}} |{{mono|credits}} |{{mono|label_name}} |{{mono|works}} }} | Title(s) of notable work(s) (publications, compositions, sculptures, films, etc.) by the subject, if any. Produces the label '''Notable work'''. May be overridden by {{para|credits}}, which produces '''Notable credit(s)'''; or by {{para|works}}, which produces '''Works'''; or by {{para|label_name}}, which produces '''Label(s)'''. * The {{para|notable_works}}, {{para|credits}}, and {{para|label_name}} parameters are intended to be (at most) short [[#Inline lists|inline lists]]. * The {{para|label_name}} variant is used for one or more record labels with which a performer is associated, or a fashion label in which a designer has been heavily involved or for which they are well known. Remember that this parameter is an alternative to the others mentioned here and is not used along with them. * The {{para|works}} variant is intended to link to {{em|a specific list article}} for a larger body of work (not all of which may be individually notable). |- | {{mono|style}} | The style of the subject's works, if applicable. {{crossref|This parameter is not for [[Style (manner of address)|styles of address or office]]; see {{para|honorific_prefix}}.}} |- | {{mono|height}} | If person was notable for their height, or if height is relevant. If used, this should also include the year of the measurement if the person had not reached full adulthood when this stat was published. {{crossref|See documentation of this parameter at [[Template:Infobox sportsperson#height|Template:Infobox sportsperson]] for more information.}} |- | {{mono|television}} | Television programmes presented by or {{em|closely}} associated with the subject. For multiple entries, use an [[#Inline lists|inline list]]. |- | {{mono|title}} | Multiple uses: * Formal title, such as {{pval|First Lady of Japan}} for [[Akie Abe]]. * Awarded title, such as {{pval|Mr. Olympia}} for [[Arnold Schwarzenegger]]. * Job title, such as {{pval|President of Calvin College}} for [[Anthony Diekema]]. * A combination of the above, such as {{pval|Professor of Mathematics}} and {{pval|[[Fellow of the Royal Society]]}} for [[Bill Parry (mathematician)|Bill Parry]] For multiple entries, use an [[#Inline lists|inline list]]. Use the {{para|awards}} parameter, below, for awarded honors that are not really titles. A single award should not use both parameters. |- | {{mono|office}} | May be used as an alternative to {{para|title}} when the label is better displayed as '''Office''' (e.g. public office or appointments). Using this parameter will override {{para|title}}. |- | {{mono|term}} | Years the person held the {{para|title}} or {{para|office}} listed above. Helpful template: {{tlx|reign}} (also used for civil offices). |- | {{mono|predecessor}} | Person who previously held the {{para|title}} or {{para|office}} listed above. |- | {{mono|successor}} | Person who subsequently held the {{para|title}} or {{para|office}} listed above. |- | {{mono|party}} | If relevant. Field labelled '''Political party'''. |- | {{mono|otherparty}} | If relevant. Field labelled '''Other political affiliations'''. |- | {{mono|movement}} | If relevant. Can be [[Social movement|social]], [[Political movement|political]] (non-party), [[Art movement|artistic]], [[Philosophical movement|philosophical]], [[List of literary movements|literary]], [[Cultural movement|cultural]], etc. |- | {{mono|opponents}} | Notable relevant opponents (e.g., for major political office). |- | {{mono|boards}} | For [[board of directors]] membership(s), if relevant. Field labeled '''Board member&nbsp;of'''. |- | {{ubl|{{mono|criminal_charges}}|{{mono|criminal_penalty}}|{{mono|criminal_status}}}} | For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body. |- | {{mono|spouse}} | Name of spouse(s), followed by years of marriage. Use the format ''Name (married 1950–present)'' for a current spouse, and ''Name (married 1970–99)'' for former spouse(s). Use article title (if linking) or [[Wikipedia:Article titles#Use commonly recognizable names|common name]]. For multiple entries, use an [[#Inline lists|inline list]]. For deceased persons still married at time of death, do not include the end year. |- | {{mono|partner}} | If particularly relevant, or if the partner is notable; "partner" here means unmarried life partners in a [[domestic partnership]] (of any gender or sexual orientation), not business partner. Use the format ''Name (1950–present)'' for current partner and ''Name (1970–1999)'' for former partner(s). |- | {{mono|children}} | Typically the number of children (e.g., {{pval|3}}); only list names of independently notable or particularly relevant children. Names may be preceded by a number to show total children and avoid implying that named children are the only offspring. For multiple entries, use an [[#Inline lists|inline list]]. {{em|For [[Wikipedia:Biographies of living persons#Privacy of names|privacy reasons]], consider omitting the names of living children, unless notable.}} |- | {{mono|parents}} | Names of parents; include only if they are independently notable or particularly relevant. For multiple entries, use an [[#Inline lists|inline list]]. If subject has only one notable mother and/or only one notable father, {{para|mother}} and {{para|father}} parameters may be used instead. These parameters may be used for biological, adoptive, foster, or step-parents. |- | {{mono|mother}} | Name of mother; include only if subject has one mother who is independently notable or particularly relevant. Displays '''Parent(s)''' as label, and is overridden by the {{para|parents}} parameter. |- | {{mono|father}} | Name of father; include only if subject has one father who is independently notable or particularly relevant. Displays '''Parent(s)''' as label, and is overridden by the {{para|parents}} parameter. |- | {{mono|relatives}} | Names of siblings or other relatives; include only if independently notable and particularly relevant. Include the relationship in parentheses after the name (sister, uncle, etc.). For multiple entries, use an [[#Inline lists|inline list]]. |- | {{mono|callsign}} | Amateur radio [[call sign]], if relevant. |- | {{mono|awards}} | Notable awards. If many, link to an appropriate section of the article instead. Use {{para|title}} parameter, above, for awarded titles; A single award should not use both parameters. |- | {{mono|website}} | Official website only. Unofficial websites should be placed under <code><nowiki>==External links==</nowiki></code> in the body of the article. Use {{tlx|URL}} as in {{tnull|URL|Example.com}}. Do not display the {{samp|www.}} part unless the site requires it. |- | {{mono|template_name}} | Used when {{tl|Infobox person}} is wrapped by another template. This would be the (lower-case) name of the wrapping template, without the "Template:" prefix. |- | {{ubl | {{mono|module}} | {{mono|module2}} | {{mono|module3}} | {{mono|module4}} | {{mono|module5}} | {{mono|module6}} }} | Used for embedding other infoboxes into this one. Example: <syntaxhighlight lang="wikitext"> {{Infobox person | name = Paul McCartney ... | module = {{Infobox musical artist | embed = yes | instrument = piano ... }} <!-- end of Infobox musical artist --> ... }} <!-- end of Infobox person --> </syntaxhighlight> {{crossref|For more detailed information, see [[Wikipedia:WikiProject Infoboxes/embed]].}} |- | {{mono|signature}} | An image of the person's signature. Please use image name: {{pval|abc.jpg}}, {{pval|xpz.png}}, {{pval|123.gif}}, etc., without the {{samp|File:}} or {{samp|Image:}} prefix |- | {{mono|signature_type}} | Changes the '''Signature''' label to the preferred argument, such as '''Seal''' |- | {{mono|signature_size}} | Default is {{samp|150px}}. If necessary, a signature can be resized manually as per the {{para|image_size}} parameter. |- | {{mono|signature_alt}} | Alt text for the signature image. For example, for {{samp|[[:File:Thomas Jefferson Signature.svg]]}}, the alt text might be {{para|signature_alt| Th: Jefferson}}, spelling out the signature exactly as it appears in the image. |- | {{mono|footnotes}} | Textual notes about any of the infobox data. This is not for reference citations. If an infobox parameter's value needs a citation, [[Wikipedia:Citing sources|cite inline]] at the end of the value. Citations will appear in the article's references section along with the other citations in the article. |- | {{mono|image_size}} | {{strongbad|Deprecated}}. Size to display image: {{pval|200px}} (set width), {{pval|x300px}} (set height), or {{pval|200x300px}} (max width & max height). If empty or omitted, this defaults to {{samp|frameless}} (default is {{samp|220px}}, but logged-in users can change this by clicking on "my preferences" and adjusting thumbnail size). [[Wikipedia:Image use policy#Displayed image size|Use of this parameter is discouraged]]. Use image_upright instead. Do not use "{{!mxt|×}}" or capital "{{!mxt|X}}" |} === Additional parameter usage explanation === ==== Image ==== The image in the infobox should be representative of the person who is the subject of the article. For some historical figures, particularly those born in the 18th century or before, this image is often a painting or other artistic depiction of the individual (see [[George Washington]]). Persons born in the 20th century onward, such as [[Barack Obama]], are most often represented by a photograph of the individual. When the subject of a biographical article has recently died, particularly those who have been publicly known for decades, editors may come to a consensus on the article's talk page regarding what image would best be suited for the infobox. An example of such a discussion can be found in the talk page archives for [[Elizabeth II]] (section [[Talk:Elizabeth II/Archive 45#Infobox photograph for after her death|Infobox photograph for after her death]]); in this instance, the 2015 photograph of Elizabeth II that was present in the article's infobox when discussions began was eventually replaced with a photograph of her taken in 1958. === Inline lists === {{Main|WP:Manual of Style/Lists#Horizontal lists|WP:Manual of Style/Lists#Unbulleted lists}} Parameters with multiple values should be formatted with inline-list templates. '''Horizontal''' ones include {{tlx|hlist}} or {{tlx|flatlist}}. In [[Wikipedia:Manual of Style/Lists#Horizontal lists|horizontal style]], only the first item is capitalized (aside from [[Wikipedia:Manual of Style/Capital letters#Proper names|proper names]]). This style is best for short items, and few of them. Mid-dots, commas or semicolons are available as separators (use semicolons or mid-dots if any items contain their own commas). For example: * {{para|parameter_name|{{tlp|hlist |Foo |bar |baz}}}} → {{hlist |Foo |bar |baz}} * {{para|parameter_name|{{tlp|cslist |Foo |bar |baz}}}} → {{cslist |Foo |bar |baz}} * {{para|parameter_name|{{tlp|cslist |Foo, fee |bar, bor |baz, biz |semi=true}}}} → {{cslist |Foo, fee |bar, bor |baz, biz |semi=true}} Horizontal list example with {{tlx|hlist|Item one|item two|item three}}: {{hlist|Item one|item two|item three}} '''Vertical''' templates are {{tlx|plainlist}} and {{tlx|unbulleted list}} (vertical), use [[Wikipedia:Manual of Style/Lists#Unbulleted lists|unbulleted, non-indented lists]] for clean display in infoboxes. Entries may be all [[sentence case]], or all lowercase (aside from proper names) after the first. This style is best for long items, and longer lists. For long lists of information that may not be of immediate interest but retained for reference, the {{tlx|collapsible list}} template can be used; this is not a universally accessible option, so should not be used for key information. ''[[Wikipedia:Manual of Style/Lists#Line breaks|Do not use {{tag|br|s}} markup]]'' to create fake lists, as in: {{!mxt|<nowiki>Item one<br />item two<br />item three</nowiki>}}. Vertical list example:, using {{tlx|unbulleted list|Item one|item two|item three}}: {{unbulleted list|Item one|item two|item three}} == Example == {{Infobox person{{#ifeq:{{SUBPAGENAME}}|sandbox |/sandbox}} | name = Bill Gates | post-nominals = | image = Bill Gates 2017 (cropped).jpg | alt = Head and shoulders photo of Bill Gates | caption = Gates in 2017 | birth_name = William Henry Gates III | birth_date = {{birth date and age|1955|10|28}} | birth_place = [[Seattle, Washington]], U.S. | known_for = Co-founder of [[Microsoft]] and [[Bill & Melinda Gates Foundation]] | education = [[Harvard University]] (dropped out) | occupation = {{hlist|Software developer|investor|entrepreneur}} | years_active = 1972–present | title = {{indented plainlist| * Co-[[chairperson]] of the Bill & Melinda Gates Foundation * Chairman and founder of [[Branded Entertainment Network]] * Chairman and founder of [[Cascade Investment]] * Chairman and co-founder of [[TerraPower]] * Founder of [[Breakthrough Energy]] * Technology advisor of Microsoft}} | boards = {{plainlist| *[[Berkshire Hathaway]] *Microsoft (former, both)}} | spouse = {{marriage|[[Melinda French]]|January 1, 1994|August 2, 2021|reason=divorce}} | children = 3 | father = [[Bill Gates Sr.]] | mother = [[Mary Maxwell Gates|Mary Maxwell]] | website = {{URL|https://www.gatesnotes.com}} | awards = {{ubl|[[Presidential Medal of Freedom]] (2016)|[[Hilal-e-Pakistan]] (2022)}} | signature = Bill Gates signature.svg | signature_alt = William H. Gates III }} <syntaxhighlight lang="wikitext" style="overflow: auto"> {{Infobox person | name = Bill Gates | post-nominals = | image = Bill Gates 2017 (cropped).jpg | alt = Head and shoulders photo of Bill Gates | caption = Gates in 2017 | birth_name = William Henry Gates III | birth_date = {{birth date and age|1955|10|28}} | birth_place = [[Seattle, Washington]], U.S. | known_for = Co-founder of [[Microsoft]] and [[Bill & Melinda Gates Foundation]] | education = [[Harvard University]] (dropped out) | occupation = {{hlist|Software developer|investor|entrepreneur}} | years_active = 1972–present | title = {{indented plainlist| * Co-[[chairperson]] of the Bill & Melinda Gates Foundation * Chairman and founder of [[Branded Entertainment Network]] * Chairman and founder of [[Cascade Investment]] * Chairman and co-founder of [[TerraPower]] * Founder of [[Breakthrough Energy]] * Technology advisor of Microsoft}} | boards = {{plainlist| *[[Berkshire Hathaway]] *Microsoft (former, both)}} | spouse = {{marriage|[[Melinda French]]|January 1, 1994|August 2, 2021|reason=divorce}} | children = 3 | father = [[Bill Gates Sr.]] | mother = [[Mary Maxwell Gates|Mary Maxwell]] | website = {{URL|https://www.gatesnotes.com}} | awards = {{ubl|[[Presidential Medal of Freedom]] (2016)|[[Hilal-e-Pakistan]] (2022)}} | signature = Bill Gates signature.svg | signature_alt = William H. Gates III }} </syntaxhighlight> == Microformat == {{UF-hcard-person}} {{clear}} == TemplateData == {{TemplateData header}} <div style="width:auto; overflow:scroll"> <templatedata> { "description": "An infobox for articles about people", "format": "{{_\n| __________________ = _\n}}\n", "params": { "honorific_prefix": { "description": "Honorific prefix(es), to appear on the line above the person's name", "label": "Honorific prefix", "aliases": [ "honorific-prefix", "honorific prefix", "pre-nominals" ] }, "name": { "description": "Common name of person (defaults to article name if left blank; provide birth_name (below) if different from name). If middle initials are specified (or implied) by the lead of the article, and are not specified separately in the birth_name field, include them here.", "label": "Name", "type": "string", "suggested": true }, "honorific_suffix": { "description": "Honorific suffix(es), to appear on the line below the person's name", "label": "Post-nominals", "aliases": [ "honorific-suffix", "honorific suffix", "post-nominals" ] }, "image": { "description": "Image name: abc.jpg, xpz.png, 123.gif, etc. If an image is desired but not available, one may add \"yes\" to the \"needs-photo\" section of the :Template:WPBiography on the talkpage. If no image is available yet, do not use an image placeholder.", "label": "Image", "example": "abc.jpg, xpz.png, 123.gif", "type": "wiki-file-name", "suggested": true }, "image_size": { "description": "DEPRECATED/DISCOURAGED. Size to display image: 200px (set width), x300px (set height), or 200x300px (max width & max height). This defaults to frameless (default is 220px, but logged in users can change this by clicking on \"my preferences\" and adjusting thumbnail size) if empty or omitted. Use of this parameter is discouraged as per WP:IMGSIZE. Use image_upright instead.", "label": "DEPRECATED: Image size", "aliases": [ "image size", "imagesize" ], "example": "200px", "default": "220px", "deprecated": "DEPRECATED: Use of this parameter is discouraged as per WP:IMGSIZE. Delete it when encountered and use image_upright instead." }, "alt": { "description": "Alt text for image, for visually impaired readers. One word (such as \"photograph\") is rarely sufficient. See WP:ALT.", "label": "Alt", "type": "string" }, "caption": { "description": "Caption for image, if needed. Try to include date of photo and the photographer.", "label": "Caption", "aliases": [ "image caption", "image_caption" ], "type": "string" }, "native_name": { "description": "The person's name in their own language, if different.", "label": "Native name", "type": "string" }, "native_name_lang": { "description": "ISO 639-1 code, e.g., \"fr\" for French. If more than one, use Template:lang in `native_name` instead.", "label": "Native name language" }, "pronunciation": { "description": "Details of how to pronounce the individual's native name.", "label": "Native name pronunciation" }, "birth_name": { "description": "Name at birth; only use if different from name.", "label": "Birth name", "aliases": [ "birthname" ], "type": "string" }, "birth_date": { "description": "Date of birth: {{Birth date and age|YYYY|MM|DD}} for living people. For people who have died, use {{Birth date|YYYY|MM|DD}}. If only a year of birth is known, or age as of a certain date, consider using Template:birth year and age or Template:birth based on age as of date.", "label": "Birth date", "type": "content" }, "birth_place": { "description": "Place of birth: city, administrative region, sovereign state. Use the name of the birthplace at the time of birth, e.g.: Saigon (prior to 1976), Ho Chi Minh City (post 1976). Do not use a flag template.", "label": "Birth place", "type": "string" }, "baptised": { "description": "Date of baptism: ONLY for use when birth date is not known (e.g., Beethoven). Will not display if a birth date is entered. Do not use subtemplates. Parameter 'baptized' can be used for articles that use American english spelling.", "label": "Baptised", "aliases": [ "baptized" ], "type": "date" }, "disappeared_date": { "description": "(For missing people) Date of disappearance: Template:disappeared date and age (if birth date is known) or Template:disappeared date (if birth date unknown).", "label": "Disappeared date" }, "disappeared_place": { "description": "(For missing people) Place of disappearance: city, administrative region, sovereign state. Do not use a flag template.", "label": "Disappeared place" }, "disappeared_status": { "description": "(For missing people) Current status for the person, e.g., if the person is still regarded as missing (using Template:missing for to calculate the time since disappearance), or if the person has been declared dead in absentia, with a date for such a ruling.", "label": "Disappeared status", "aliases": [ "status" ] }, "death_date": { "description": "Date of death: {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (if birth date is known) or Template:death date (if birth date unknown). See Template:Death date/doc for details on usage. If exact dates are unknown, consider using Template:death year and age.", "label": "Death date" }, "death_place": { "description": "Place of death: city, administrative region, sovereign state. Note: Do not use a flag template. Use the name of the deathplace at the time of death, e.g.: Saigon (prior to 1976), Ho Chi Minh City (post 1976)", "label": "Death place", "type": "string" }, "death_cause": { "description": "Cause of death. This should only be included when the cause of death has significance for the subject's notability.", "label": "Death cause", "aliases": [ "death cause" ] }, "body_discovered": { "description": "Place where the body was discovered (if different from place of death). Do not use a flag template.", "label": "Body discovered", "aliases": [ "body discovered" ] }, "resting_place": { "description": "Place of burial, ash-scattering, etc. Do not use a flag template.", "label": "Resting place", "aliases": [ "resting place", "restingplace" ] }, "resting_place_coordinates": { "description": "Coordinates for place of burial, ash-scattering etc. Use Template:coord template.", "label": "Resting place coordinates", "aliases": [ "resting place coordinates", "restingplacecoordinates" ] }, "monuments": { "description": "Significant monuments erected, buildings named, etc., in honour of the subject. If many, link to an appropriate section of the article instead.", "label": "Monuments" }, "nationality": { "description": "Nationality. May be used instead of citizenship (below) or vice versa in cases where any confusion could result. Should only be used 'with' citizenship when they somehow differ. Should only be used if nationality cannot be inferred from the birthplace per [[WP:INFONAT]]. Do not use a flag template.", "label": "Nationality", "type": "string" }, "other_names": { "description": "Other notable names for the person, if different from name and birth_name.", "label": "Other names", "aliases": [ "other names", "othername", "nickname", "alias" ] }, "siglum": { "description": "Siglum, monogram, shortcut, if relevant.", "label": "Siglum" }, "citizenship": { "description": "Country of legal citizenship, if different from nationality. Rarely needed. See usage notes for nationality above. Should only be used if citizenship cannot be inferred from the birthplace. Do not use a flag template.", "label": "Citizenship", "type": "string" }, "education": { "description": "Education, e.g., degree, institution and graduation year, if relevant. If very little information is available or relevant, the `alma_mater` parameter may be more appropriate.", "label": "Education" }, "alma_mater": { "description": "Alma mater. This parameter is a more concise alternative to `education`, and will most often simply consist of the linked name of the last-attended higher education institution. It is usually not relevant to include either parameter for non-graduates, but article talk page consensus may conclude otherwise, as at Bill Gates.", "label": "Alma mater", "aliases": [ "alma mater" ] }, "occupation": { "description": "Occupation(s) as given in the lead.", "label": "Occupation" }, "years_active": { "description": "Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format 1950–2000, or 1970–present if still active (note the use of an en dash, not hyphen). If no dates of birth and/or death are known for the subject, only a floruit date range, as is common with ancient subjects, this parameter can be used for it. If approximate (circa) dates are known for either or both, put them in the birth_date and death_date parameters.", "label": "Years active", "aliases": [ "years active", "yearsactive" ] }, "era": { "description": "Era during which the subject lived or was active. Less specific than 'years active'.", "label": "Era" }, "employer": { "description": "Employer(s), if relevant.", "label": "Employer" }, "organization": { "description": "Non-employing organization(s), if relevant.", "label": "Organization", "aliases": [ "organizations", "organisation", "organisations" ] }, "agent": { "description": "The subject's agent (individual and/or agency), discouraged in most cases, specifically when promotional, and requiring a reliable source.", "label": "Agent" }, "known_for": { "description": "A brief description of what the person is notable for.", "label": "Known For", "aliases": [ "known for", "known" ], "example": "Environmental activism" }, "notable_works": { "description": "Title(s) of notable work(s) (publications, compositions, sculptures, films, etc.) by the subject, if any.", "label": "Notable works", "aliases": [ "works", "credits", "notable works", "label_name" ] }, "style": { "description": "The style in which the subject works, if applicable.", "label": "Style" }, "net_worth": { "deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered.", "description": "Current estimated net worth, if relevant. Please be sure to support with a citation from a reliable source, in the article body.", "label": "DEPRECATED: Net worth", "aliases": [ "net worth", "networth" ] }, "height": { "description": "If person was notable for their height, or if height is relevant. If used, this should also include the year of the measurement if the person had not reached full adulthood when this stat was published. See documentation of this parameter at Template:Infobox sportsperson for more information.", "label": "Height" }, "height_m": { "description": "If person was notable for their height, or if height is relevant, their height in metres (it will be automatically converted to Imperial).", "label": "Height in metres", "type": "number" }, "height_cm": { "description": "If person was notable for their height, or if height is relevant, their height in centimetres (it will be automatically converted to Imperial).", "label": "Height in centimetres", "type": "number" }, "height_ft": { "description": "If person was notable for their height, or if height is relevant, their height in whole feet (it will be automatically converted to SI). Use with height_in.", "label": "Height in feet", "type": "number" }, "height_in": { "description": "If person was notable for their height, or if height is relevant, their height in remaining inches (it will be automatically converted to SI). Use with height_ft.", "label": "Remaining height in inches", "type": "number" }, "weight": { "deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered.", "label": "DEPRECATED: Weight" }, "weight_kg": { "deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered.", "description": "If person was notable for their weight, or if weight is relevant, their weight in kilogrammes (it will be automatically converted to Imperial).", "label": "DEPRECATED: Weight in kilogrammes" }, "weight_lb": { "deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered.", "description": "If person was notable for their weight, or if weight is relevant, their weight in pounds, or their weight in remaining pounds if weight in whole stones is specified (it will be automatically converted to SI).", "label": "DEPRECATED: Weight in pounds" }, "weight_st": { "deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered.", "description": "If person was notable for their weight, or if weight is relevant, their weight in whole stones (it will be automatically converted to SI).", "label": "DEPRECATED: Weight in stones" }, "television": { "description": "Television programmes presented by or closely associated with the subject.", "label": "Television" }, "title": { "description": "Multiple uses: Formal title, such as First Lady of Japan for Akie Abe.; Awarded title, such as Mr. Olympia for Arnold Schwarzenegger.; Job title, such as President of Calvin College for Anthony Diekema.; A combination of the above, such as Professor of Mathematics and Fellow of the Royal Society for Bill Parry See also \"awards\" parameter, below, for awarded honors that are not really titles. A single award should not use both parameters.", "label": "Title", "aliases": [ "office" ] }, "term": { "description": "Years the person held the title listed above.", "label": "Term" }, "predecessor": { "description": "Person who previously held the title listed above.", "label": "Predecessor" }, "successor": { "description": "Person who subsequently held the title listed above.", "label": "Successor" }, "party": { "description": "If relevant. Field labelled Political party.", "label": "Party" }, "otherparty": { "description": "If relevant. Field labelled Other political affiliations.", "label": "Other party" }, "movement": { "description": "If relevant. '''Movement''' can be social, political (non-party), artistic, philosophical, literary, cultural, etc.", "label": "Movement" }, "opponents": { "description": "Notable relevant opponents (e.g., for major political office).", "label": "Opponents" }, "boards": { "description": "For board of directors membership(s), if relevant. Field labeled Board member of.", "label": "Boards" }, "criminal_charges": { "description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources in the article body.", "label": "Criminal charge(s)", "aliases": [ "criminal_charge", "criminal charge" ] }, "criminal_penalty": { "label": "Criminal penalty", "description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body.", "aliases": [ "criminal penalty" ] }, "criminal_status": { "label": "Criminal status", "description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body.", "aliases": [ "judicial_status", "judicial status", "criminal status" ] }, "spouse": { "description": "Name of spouse(s), followed by years of marriage. Use the format Name (married 1950–present) for a current spouse, and Name (married 1970–99) for former spouse(s). Separate entries using Template:Plainlist or Template:Unbulleted list. For deceased persons still married at time of death, do not include an end year. {{Marriage}} may be used.", "label": "Spouse(s)", "aliases": [ "spouses", "spouse(s)" ] }, "partner": { "description": "For unmarried life partners in a domestic partnership (of any gender or sexual orientation), not business partners. Use the format Name (1950–present) for current partner and Name (1970–99) for former partner(s).", "label": "Partner(s)", "aliases": [ "partners", "partner(s)", "domestic_partner", "domesticpartner" ] }, "children": { "description": "Number of children (e.g., 3), or list of independently notable names, in which case, separate entries using Template:Plainlist or Template:Unbulleted list. Names may be preceded by a number to show total children and avoid implying that named children are the only offspring. For privacy reasons, consider omitting the names of children of living persons, unless notable.", "label": "Children" }, "parents": { "description": "Names of parents. Separate entries using Template:Plainlist or Template:Unbulleted list. If subject has only one notable mother and/or father, 'mother' and 'father' parameters may be used instead", "label": "Parent(s)" }, "mother": { "description": "Name of mother; include only if subject has one mother who is independently notable or particularly relevant. Overwritten by 'parents' parameter.", "label": "Mother", "type": "string" }, "father": { "description": "Name of father; include only if subject has one father who is independently notable or particularly relevant. Overwritten by 'parents' parameter.", "label": "Father", "type": "string" }, "relatives": { "description": "Names of siblings or other relatives. Include the relationship in parentheses after the name (sister, uncle, etc). Separate entries using Template:Plainlist or Template:Unbulleted list.", "label": "Relatives", "aliases": [ "relations" ] }, "family": { "description": "Family or house of the individual, if notable.", "label": "Family" }, "callsign": { "description": "Amateur radio call sign, if relevant.", "label": "Callsign" }, "awards": { "description": "Notable awards. If many, link to an appropriate section of the article instead. See also \"title\" parameter, above, for awarded titles. A single award should not use both parameters.", "label": "Awards" }, "honours": { "description": "Honours the individual has been awarded, if notable.", "label": "Honours", "aliases": [ "honors" ] }, "website": { "description": "Official website only. Unofficial websites should be placed under ==External links== in the body of the article. Use {{URL}}. Do not include the www. part unless the server requires it. Use camel case capitalization to make multiword domain names easier to read.", "label": "Website", "aliases": [ "homepage", "URL", "url" ], "type": "content", "example": "{{URL|example.com}}", "suggested": true }, "template_name": { "description": "If Infobox person is wrapped by another template, set this to lowercase name of template (without the 'Template:').", "label": "Template name", "type": "string", "example": "infobox academic", "default": "infobox person" }, "module": { "description": "Used for embedding other infoboxes into this one.", "label": "Module", "aliases": [ "misc" ] }, "module2": { "description": "Used for embedding other infoboxes into this one.", "label": "Module two", "aliases": [ "misc2" ] }, "module3": { "description": "Used for embedding other infoboxes into this one.", "label": "Module three", "aliases": [ "misc3" ] }, "module4": { "description": "Used for embedding other infoboxes into this one.", "label": "Module four", "aliases": [ "misc4" ] }, "module5": { "description": "Used for embedding other infoboxes into this one.", "label": "Module five", "aliases": [ "misc5" ] }, "module6": { "description": "Used for embedding other infoboxes into this one.", "label": "Module six", "aliases": [ "misc6" ] }, "child": { "label": "DEPRECATED: Use as an embedded infobox", "description": "DEPRECATED: Use this infobox within another one. For experts only.", "example": "yes", "deprecated": true, "aliases": [ "embed" ] }, "signature": { "description": "An image of the person's signature. Please use image name: abc.jpg, xpz.png, 123.gif, etc.", "label": "Signature", "type": "wiki-file-name" }, "signature_type": { "description": "Alter from Signature to, for example, Seal", "label": "Signature type", "type": "string" }, "signature_size": { "description": "Default is 150px. If necessary, a signature can be resized manually as per the \"image_size\" parameter.", "label": "Signature size" }, "signature_alt": { "description": "Alt text for the signature image. For example, for :File:Thomas Jefferson Signature.svg, the alt text might be |signature_alt= Th: Jefferson, spelling out the signature exactly as it appears in the image.", "label": "Signature alt", "aliases": [ "signature alt" ], "type": "string" }, "footnotes": { "description": "Notes about any of the infobox data.", "label": "Footnotes" }, "abovestyle": { "description": "DEPRECATED: A CSS style to use for the individual's name, over-riding the community norm. Only use in exception circumstances.", "label": "DEPRECATED: Name CSS over-ride", "deprecated": true }, "image_upright": { "label": "Image upright", "description": "Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).", "example": "1.15", "default": "1", "type": "number" }, "landscape": { "label": "Landscape", "description": "Set to yes when using wide, short images. The image height (rather than width) will be limited to 200 pixels.", "type": "boolean" }, "burial_place": { "label": "Burial place", "description": "Place of burial, alternative to 'Resting place' Displays the label 'Burial place'.", "type": "content" }, "burial_coordinates": { "label": "Burial place coordinates", "description": "Coordinates for place of burial, to accompany 'Burial place'. Use {{coord}} template." }, "influences": { "label": "DEPRECATED: Influences", "description": "DEPRECATED and unused in the infobox. Do not use.", "deprecated": "Deprecated. Unused in the infobox. Do not use." }, "influenced": { "label": "DEPRECATED: Influenced", "description": "DEPRECATED and unused in the infobox. Do not use.", "deprecated": "Deprecated. Unused in the infobox. Do not use." }, "home_town": { "aliases": [ "home town" ], "label": "DEPRECATED: home_town", "description": "The place where the person was raised and matured, if different from birth place.", "deprecated": "DEPRECATED and now unused in the infobox. Do not use." }, "nocat_wdimage": { "label": "nocat_wdimage", "description": "Where an infobox has no image but Wikidata has an image name, add an image or |nocat_wdimage=yes to the infobox.", "type": "string" } }, "paramOrder": [ "honorific_prefix", "name", "honorific_suffix", "image", "image_upright", "landscape", "image_size", "alt", "caption", "native_name", "native_name_lang", "pronunciation", "other_names", "siglum", "birth_name", "birth_date", "birth_place", "baptised", "disappeared_date", "disappeared_place", "disappeared_status", "death_date", "death_place", "death_cause", "body_discovered", "resting_place", "resting_place_coordinates", "burial_place", "burial_coordinates", "monuments", "nationality", "citizenship", "education", "alma_mater", "occupation", "years_active", "era", "employer", "organization", "agent", "known_for", "notable_works", "style", "net_worth", "height", "height_m", "height_cm", "height_ft", "height_in", "weight", "weight_kg", "weight_lb", "weight_st", "television", "title", "term", "predecessor", "successor", "party", "otherparty", "movement", "opponents", "boards", "criminal_charges", "criminal_penalty", "criminal_status", "spouse", "partner", "children", "parents", "mother", "father", "relatives", "family", "callsign", "awards", "honours", "website", "template_name", "module", "module2", "module3", "module4", "module5", "module6", "signature", "signature_type", "signature_size", "signature_alt", "footnotes", "nocat_wdimage", "abovestyle", "child", "influences", "influenced", "home_town" ] } </templatedata> </div> == Tracking categories == * {{clc|Pages using infobox person with unknown parameters}} * {{clc|Pages using infobox person with conflicting parameters}} * {{clc|Pages using infobox person with multiple employers}} * {{clc|Pages using infobox person with multiple organizations}} * {{clc|Pages using infobox person with multiple agents}} * {{clc|Pages using infobox person with multiple credits}} * {{clc|Pages using infobox person with multiple labels}} * {{clc|Pages using infobox person with multiple opponents}} * {{clc|Pages using infobox person with multiple criminal charges}} * {{clc|Pages using infobox person with multiple spouses}} * {{clc|Pages using infobox person with multiple partners}} * {{clc|Pages using infobox person with multiple parents}} * {{clc|Biography template using pronunciation}} * {{clc|Biography with signature}} * {{clc|No local image but image on Wikidata}} – Used by [[Template:Wikidata image]] to track articles where an infobox has no image but [[Wikidata]] has an image name. To exclude articles from this category, add an image or {{para|nocat_wdimage|yes}} to the infobox. == See also == Variations of this template which use [[Wikidata]]: * {{tl|Infobox person/Wikidata}} Alternative templates are listed at [[Wikipedia:WikiProject Biography/Infoboxes|WikiProject Biography/Infoboxes]] and within the [[:Category:People and person infobox templates|people and person infobox templates category]]. <div style="display: none">{{reflist}}</div> {{Film- and television-related infobox templates}} <includeonly> {{Basepage subpage| [[Category:People and person infobox templates| ]] [[Category:Biographical templates usable as a module|Person]] [[Category:Infobox templates with module parameter|Person]] [[Category:Templates that add a tracking category]] }} </includeonly> 6c3ac5da41c8e9030ec5bd531450af67794f574d Module:Disambiguation/templates 828 156 361 2023-09-22T01:35:40Z Pppery 6 Changed protection settings for "[[Module:Disambiguation/templates]]": Up to full prot for consistency with the parent ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) Scribunto text/plain -- This page contains a table of all disambiguation templates and their -- redirects. Templates names are capitalized, and the Template: prefix is -- removed. Templates are grouped with the main template first, followed by -- its redirects. return { ['Disambiguation'] = true, ['Begriffsklärung'] = true, ['DAB'] = true, ['Dab'] = true, ['Dabpage'] = true, ['Dbig'] = true, ['Dis'] = true, ['Disam'] = true, ['Disamb'] = true, ['Disambig misspelling'] = true, ['Disambig'] = true, ['Disambig-plants'] = true, ['Disambiguation page'] = true, ['Meta disambig'] = true, ['Project disambiguation'] = true, ['Shortcut disambig'] = true, ['WP disambig'] = true, ['WP-disambig'] = true, ['Wikipedia disambiguation'] = true, ['Airport disambiguation'] = true, ['Airport disambig'] = true, ['Biology disambiguation'] = true, ['Call sign disambiguation'] = true, ['Callsigndis'] = true, ['Caselaw disambiguation'] = true, ['Case law disambiguation'] = true, ['Chinese title disambiguation'] = true, ['CJKVdab'] = true, ['Chinese title disambig'] = true, ['Disambig-Chinese-char-title'] = true, ['Disambiguation cleanup'] = true, ['Cleanup disambig'] = true, ['Cleanup disambiguation'] = true, ['CleanupDisambig'] = true, ['Dab cleanup'] = true, ['Dab-cleanup'] = true, ['Dabclean'] = true, ['Disamb-cleanup'] = true, ['Disambcleanup'] = true, ['Disambig cleanup'] = true, ['Disambig-CU'] = true, ['Disambig-cleanup'] = true, ['Disambig-cu'] = true, ['Disambigcleanup'] = true, ['Disambiguate-cleanup'] = true, ['Disambiguation-cleanup'] = true, ['Geodis-cleanup'] = true, ['Genus disambiguation'] = true, ['Genus disambig'] = true, ['Hospital disambiguation'] = true, ['Hospitaldis'] = true, ['Human name disambiguation'] = true, ['Bio-dab'] = true, ['HNDIS'] = true, ['HnDis'] = true, ['Hndab'] = true, ['Hndis'] = true, ['Hndisambig'] = true, ['Human name dab'] = true, ['Personal name disambiguation'] = true, ['Personal name'] = true, ['Human name disambiguation cleanup'] = true, ['Hndis-cleanup'] = true, ['Personal name disambiguation cleanup'] = true, ['Letter–number combination disambiguation'] = true, ['LNCD'] = true, ['Letter-Number Combination Disambiguation'] = true, ['Letter-Number combination disambiguation'] = true, ['Letter-NumberCombDisambig'] = true, ['Letter-NumberCombdisambig'] = true, ['Letter-NumberCombinationDisambiguation'] = true, ['Letter-number combination disambiguation'] = true, ['Mathematical disambiguation'] = true, ['Math dab'] = true, ['Math disambiguation'] = true, ['Mathdab'] = true, ['Mathematics disambiguation'] = true, ['Maths disambiguation'] = true, ['Military unit disambiguation'] = true, ['Mil-unit-dis'] = true, ['Mil-unit-disambig'] = true, ['Music disambiguation'] = true, ['Music disambig'] = true, ['Number disambiguation'] = true, ['Numberdis'] = true, ['Numdab'] = true, ['Numdisambig'] = true, ['Opus number disambiguation'] = true, ['Phonetics disambiguation'] = true, ['Place name disambiguation'] = true, ['DisambigG'] = true, ['DisambigGeo'] = true, ['Disambiggeo'] = true, ['Geo-dis'] = true, ['Geodab'] = true, ['Geodis'] = true, ['Geodisambig'] = true, ['Geographic disambiguation'] = true, ['Portal disambiguation'] = true, ['Portal disambig'] = true, ['Road disambiguation'] = true, ['Roaddis'] = true, ['School disambiguation'] = true, ['School disambig'] = true, ['Schooldab'] = true, ['Schooldis'] = true, ['Species Latin name abbreviation disambiguation'] = true, ['Species Latin name disambiguation'] = true, ['LatinNameDisambig'] = true, ['SpeciesLatinNameDisambig'] = true, ['Station disambiguation'] = true, ['Station dab'] = true, ['Synagogue disambiguation'] = true, ['Taxonomic authority disambiguation'] = true, ['Taxonomic authorities disambiguation'] = true, ['Taxonomy disambiguation'] = true, ['Species disambiguation'] = true, ['Template disambiguation'] = true, ['Template ambiguous'] = true, ['Template dab'] = true, ['Template disambig'] = true, ['WoO number disambiguation'] = true, } 7af08129f9ba1d6305051d78ca21d8cd58a1bea9 Template:Unichar/glyph 10 1614 2949 2023-09-23T23:50:42Z w>Andrevan 0 wikitext text/x-wiki {{#if:{{{br|}}}|{{substr|{{#invoke:HTMLDecode | HTMLDecode | text={{{br|}}}}}|0|1}}}}{{#if:{{{image|}}} | [[File:{{{image|}}}|frameless|{{{size|}}}|baseline|alt={{{na|}}}]] | {{#switch:{{{gc|<#not a Unicode code point#>}}} | <#not a Unicode code point#> = | Cc =<span style="font-size:small"><control-{{{hval|}}}></span> | Cs =<span style="font-size:small"><surrogate-{{{hval|}}}></span> | Cp =<span style="font-size:small"><private-use-{{{hval|}}}></span> | Cn =<!--Cn=<reserved> is not detected--><span style="font-size:small"><noncharacter-{{{hval|}}}></span> | Cf | Zl | Zp =<!--formatting chars, no glyph or html code at all--> | Zs =<span class="Unicode" style="background:lightblue;line-height:1em">{{#ifeq:{{{hval|}}}| 0020 |&#xA0;|&#x{{{hval|}}};}}</span><!--change space 0x20 into nbsp=0xA0 to preserve the space from wiki-markup deletion--> | #default=<span style="font-size:{{{size|unexp}}};line-height:1em">{{#switch:{{{use|}}} | ipa ={{IPA|{{{cwith|}}}&#x{{{hval}}};}} | lang ={{lang|{{{use2|}}}|{{{cwith|}}}&#x{{{hval}}};}} | script={{script|{{{use2|}}}|{{{cwith|}}}&#x{{{hval}}};}}<!--use2: first char uc here?--> | unicode | #default = {{#ifeq:{{{cwith|}}}|◌|{{script|serif|{{{cwith|}}}&#x{{{hval}}};}}|{{{cwith|}}}&#x{{{hval|}}}; }}}}</span>}}{{#ifeq:{{{cwith|}}}|&nbsp;|&nbsp;}}}}{{#if:{{{br|}}}|{{substr|{{#invoke:HTMLDecode | HTMLDecode | text={{{br|}}}}}|1|2}}}}<!-- --><noinclude>{{documentation}}</noinclude> d1cd6eabceba8c77c4e5fa68b03004e540ad1b13 Module:Transclusion count/data/I 828 70 135 2023-09-24T05:10:35Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["IAAF_name"] = 2100, ["IAST"] = 6300, ["IBDB_name"] = 9100, ["ICD10"] = 4700, ["ICD9"] = 4400, ["ICS"] = 2900, ["IDN"] = 3400, ["IMDb_episode"] = 10000, ["IMDb_episodes"] = 2700, ["IMDb_name"] = 153000, ["IMDb_title"] = 189000, ["IMO_Number"] = 4100, ["IMSLP"] = 8200, ["INA"] = 2100, ["IND"] = 7500, ["INR"] = 6500, ["INRConvert"] = 5700, ["INRConvert/CurrentRate"] = 5600, ["INRConvert/USD"] = 5600, ["INRConvert/out"] = 5600, ["IOC_profile"] = 5200, ["IP"] = 2600, ["IPA"] = 142000, ["IPA-de"] = 8100, ["IPA-es"] = 7900, ["IPA-fr"] = 44000, ["IPA-it"] = 6000, ["IPA-nl"] = 3900, ["IPA-pl"] = 4100, ["IPA-pt"] = 3300, ["IPA-ru"] = 2700, ["IPA-sl"] = 6900, ["IPA-th"] = 3000, ["IPA_audio_link"] = 3500, ["IPA_link"] = 3500, ["IPAc-cmn"] = 2300, ["IPAc-en"] = 48000, ["IPAc-pl"] = 51000, ["IPC_athlete"] = 2800, ["IPSummary"] = 78000, ["IP_summary"] = 79000, ["IPtalk"] = 18000, ["IPuser"] = 7000, ["IPvandal"] = 2700, ["IRC"] = 7300, ["IRI"] = 2300, ["IRL"] = 5500, ["IRN"] = 3600, ["ISBN"] = 462000, ["ISBN?"] = 2100, ["ISBNT"] = 39000, ["ISBN_missing"] = 2600, ["ISFDB_name"] = 4100, ["ISFDB_title"] = 4600, ["ISL"] = 2100, ["ISO_15924/script-example-character"] = 2800, ["ISO_15924/wp-article"] = 2800, ["ISO_15924/wp-article/format"] = 2800, ["ISO_15924/wp-article/label"] = 2700, ["ISO_3166_code"] = 518000, ["ISO_3166_name"] = 16000, ["ISO_639_name"] = 8100, ["ISP"] = 5300, ["ISR"] = 4800, ["ISSN"] = 12000, ["ISSN_link"] = 30000, ["ISTAT"] = 8100, ["ISU_figure_skater"] = 2500, ["ITA"] = 17000, ["ITF"] = 6300, ["ITF_profile"] = 9000, ["ITIS"] = 4400, ["ITN_talk"] = 10000, ["ITN_talk/date"] = 10000, ["IUCN_banner"] = 15000, ["I_sup"] = 4600, ["Iaaf_name"] = 7200, ["Ice_hockey"] = 19000, ["Ice_hockey_stats"] = 17000, ["Icehockeystats"] = 12000, ["Icon"] = 581000, ["If"] = 271000, ["If_all"] = 6400, ["If_between"] = 3800, ["If_both"] = 155000, ["If_empty"] = 3660000, ["If_first_display_both"] = 73000, ["If_in_page"] = 9900, ["If_last_display_both"] = 30000, ["If_preview"] = 58000, ["If_then_show"] = 289000, ["Ifempty"] = 4000, ["Ifeq"] = 16000, ["Iferror_then_show"] = 3300, ["Ifexist_not_redirect"] = 1300000, ["Ifnotempty"] = 14000, ["Ifnumber"] = 36000, ["Ifsubst"] = 445000, ["Ih"] = 7500, ["Ill"] = 117000, ["Illm"] = 6700, ["Image_frame"] = 4900, ["Image_label"] = 4500, ["Image_label_begin"] = 3800, ["Image_label_end"] = 3800, ["Image_label_small"] = 2600, ["Image_needed"] = 4500, ["Image_other"] = 272000, ["Image_requested"] = 167000, ["Image_requested/Category_helper"] = 159000, ["Imbox"] = 917000, ["Imdb_name"] = 5400, ["Imdb_title"] = 4000, ["Import_style"] = 11000, ["Import_style/inputbox.css"] = 11000, ["Importance"] = 5620000, ["Importance/colour"] = 5640000, ["Importance_mask"] = 10400000, ["Improve_categories"] = 7100, ["Improve_documentation"] = 2400, ["In_class"] = 5900, ["In_lang"] = 357000, ["In_progress"] = 3200, ["In_string"] = 75000, ["In_title"] = 19000, ["Inactive_WikiProject_banner"] = 206000, ["Inactive_userpage_blanked"] = 4900, ["Include-USGov"] = 29000, ["Incomplete_list"] = 23000, ["Inconclusive"] = 2100, ["Increase"] = 43000, ["Incumbent_pope"] = 4300, ["Indent"] = 4300, ["IndexFungorum"] = 2200, ["Indian_English"] = 4300, ["Indian_Rupee"] = 10000, ["Indian_railway_code"] = 3200, ["Inflation"] = 21000, ["Inflation-fn"] = 5400, ["Inflation-year"] = 4500, ["Inflation/IN/startyear"] = 5600, ["Inflation/UK"] = 4300, ["Inflation/UK/dataset"] = 4300, ["Inflation/UK/startyear"] = 4400, ["Inflation/US"] = 12000, ["Inflation/US-GDP"] = 2400, ["Inflation/US-GDP/dataset"] = 2400, ["Inflation/US-GDP/startyear"] = 2400, ["Inflation/US/dataset"] = 12000, ["Inflation/US/startyear"] = 12000, ["Inflation/fn"] = 6200, ["Inflation/year"] = 25000, ["Info"] = 7300, ["Infobox"] = 3230000, ["Infobox/Columns"] = 2400, ["Infobox/mobileviewfix.css"] = 147000, ["Infobox3cols"] = 17000, ["Infobox_AFL_biography"] = 14000, ["Infobox_Aircraft_Begin"] = 5300, ["Infobox_Aircraft_Type"] = 4700, ["Infobox_Athletics_Championships"] = 2700, ["Infobox_Australian_place"] = 15000, ["Infobox_CFL_biography"] = 2200, ["Infobox_COA_wide"] = 3200, ["Infobox_Canada_electoral_district"] = 2500, ["Infobox_Canadian_Football_League_biography"] = 5700, ["Infobox_Canadian_Football_League_biography/position"] = 5700, ["Infobox_Chinese"] = 20000, ["Infobox_Chinese/Chinese"] = 2700, ["Infobox_Chinese/Footer"] = 8700, ["Infobox_Chinese/Header"] = 8700, ["Infobox_Chinese/Korean"] = 17000, ["Infobox_Christian_leader"] = 18000, ["Infobox_French_commune"] = 38000, ["Infobox_GAA_player"] = 2700, ["Infobox_Gaelic_games_player"] = 5000, ["Infobox_German_location"] = 13000, ["Infobox_German_place"] = 14000, ["Infobox_Grand_Prix_race_report"] = 2000, ["Infobox_Greece_place"] = 2800, ["Infobox_Greek_Dimos"] = 2800, ["Infobox_Hindu_temple"] = 2400, ["Infobox_Indian_constituency"] = 4600, ["Infobox_Indian_constituency/defaultdata"] = 4600, ["Infobox_Italian_comune"] = 8100, ["Infobox_Korean_name"] = 15000, ["Infobox_Korean_name/categories"] = 15000, ["Infobox_MLB_yearly"] = 3100, ["Infobox_NASCAR_race_report"] = 2200, ["Infobox_NCAA_team_season"] = 18000, ["Infobox_NFL_biography"] = 28000, ["Infobox_NFL_player"] = 7700, ["Infobox_NFL_team_season"] = 3900, ["Infobox_NRHP"] = 72000, ["Infobox_NRHP/conv"] = 18000, ["Infobox_NRHP/locmapin2region"] = 66000, ["Infobox_Officeholder"] = 4800, ["Infobox_Olympic_event"] = 7300, ["Infobox_Olympic_event/games_text"] = 7300, ["Infobox_Paralympic_event"] = 2600, ["Infobox_Paralympic_event/games_text"] = 2600, ["Infobox_Politician"] = 2200, ["Infobox_Romanian_subdivision"] = 3200, ["Infobox_Russian_district"] = 2000, ["Infobox_Russian_inhabited_locality"] = 4500, ["Infobox_SCOTUS_case"] = 3700, ["Infobox_Site_of_Special_Scientific_Interest"] = 2000, ["Infobox_Swiss_town"] = 2800, ["Infobox_Switzerland_municipality"] = 2900, ["Infobox_Turkey_place"] = 19000, ["Infobox_U.S._county"] = 3000, ["Infobox_U.S._county/district"] = 3000, ["Infobox_UK_constituency"] = 2100, ["Infobox_UK_constituency/year"] = 2100, ["Infobox_UK_legislation"] = 3300, ["Infobox_UK_place"] = 26000, ["Infobox_UK_place/NoDialCode"] = 8000, ["Infobox_UK_place/NoPostCode"] = 3100, ["Infobox_UK_place/area"] = 2400, ["Infobox_UK_place/dist"] = 2500, ["Infobox_UK_place/local"] = 26000, ["Infobox_UK_place/styles.css"] = 26000, ["Infobox_UN_resolution"] = 2300, ["Infobox_US_Supreme_Court_case"] = 3800, ["Infobox_US_Supreme_Court_case/courts"] = 3800, ["Infobox_Wikipedia_user"] = 9800, ["Infobox_YouTube_personality"] = 2600, ["Infobox_YouTube_personality/styles.css"] = 2600, ["Infobox_academic"] = 14000, ["Infobox_aircraft_begin"] = 14000, ["Infobox_aircraft_occurrence"] = 2300, ["Infobox_aircraft_type"] = 12000, ["Infobox_airline"] = 4600, ["Infobox_airport"] = 15000, ["Infobox_airport/datatable"] = 15000, ["Infobox_album"] = 162000, ["Infobox_album/color"] = 191000, ["Infobox_album/link"] = 162000, ["Infobox_anatomy"] = 4500, ["Infobox_ancient_site"] = 5400, ["Infobox_animanga/Footer"] = 6800, ["Infobox_animanga/Header"] = 6800, ["Infobox_animanga/Print"] = 5500, ["Infobox_animanga/Video"] = 4700, ["Infobox_architect"] = 3700, ["Infobox_artist"] = 28000, ["Infobox_artist_discography"] = 5900, ["Infobox_artwork"] = 11000, ["Infobox_athlete"] = 2800, ["Infobox_automobile"] = 8400, ["Infobox_award"] = 13000, ["Infobox_badminton_player"] = 3200, ["Infobox_baseball_biography"] = 28000, ["Infobox_baseball_biography/style"] = 28000, ["Infobox_baseball_biography/styles.css"] = 28000, ["Infobox_basketball_biography"] = 21000, ["Infobox_basketball_biography/style"] = 21000, ["Infobox_basketball_club"] = 3000, ["Infobox_beauty_pageant"] = 2400, ["Infobox_bilateral_relations"] = 4400, ["Infobox_body_of_water"] = 18000, ["Infobox_book"] = 52000, ["Infobox_boxer"] = 5700, ["Infobox_bridge"] = 6000, ["Infobox_building"] = 27000, ["Infobox_character"] = 7600, ["Infobox_chess_biography"] = 3900, ["Infobox_chess_player"] = 3200, ["Infobox_church"] = 15000, ["Infobox_church/denomination"] = 15000, ["Infobox_church/font_color"] = 15000, ["Infobox_civil_conflict"] = 2400, ["Infobox_civilian_attack"] = 5500, ["Infobox_college_coach"] = 12000, ["Infobox_college_football_game"] = 2100, ["Infobox_college_sports_team_season"] = 40000, ["Infobox_college_sports_team_season/link"] = 40000, ["Infobox_college_sports_team_season/name"] = 40000, ["Infobox_college_sports_team_season/succession"] = 40000, ["Infobox_college_sports_team_season/team"] = 40000, ["Infobox_comic_book_title"] = 3000, ["Infobox_comics_character"] = 3600, ["Infobox_comics_creator"] = 3500, ["Infobox_comics_creator/styles.css"] = 3500, ["Infobox_company"] = 83000, ["Infobox_computing_device"] = 2300, ["Infobox_concert"] = 3300, ["Infobox_constituency"] = 5400, ["Infobox_country"] = 6400, ["Infobox_country/formernext"] = 6000, ["Infobox_country/imagetable"] = 5200, ["Infobox_country/multirow"] = 8300, ["Infobox_country/status_text"] = 2800, ["Infobox_country/styles.css"] = 6400, ["Infobox_country_at_games"] = 15000, ["Infobox_country_at_games/core"] = 15000, ["Infobox_country_at_games/see_also"] = 12000, ["Infobox_court_case"] = 4700, ["Infobox_court_case/images"] = 2400, ["Infobox_cricket_tournament"] = 2300, ["Infobox_cricketer"] = 32000, ["Infobox_cricketer/career"] = 32000, ["Infobox_cricketer/national_side"] = 7500, ["Infobox_criminal"] = 6400, ["Infobox_curler"] = 2600, ["Infobox_cycling_race_report"] = 4500, ["Infobox_cyclist"] = 16000, ["Infobox_dam"] = 5700, ["Infobox_designation_list"] = 19000, ["Infobox_designation_list/entry"] = 17000, ["Infobox_dim"] = 6900, ["Infobox_dim/core"] = 6900, ["Infobox_diocese"] = 3800, ["Infobox_drug"] = 9700, ["Infobox_drug/chemical_formula"] = 9700, ["Infobox_drug/data_page_link"] = 9700, ["Infobox_drug/formatATC"] = 9600, ["Infobox_drug/formatCASnumber"] = 9700, ["Infobox_drug/formatChEBI"] = 9700, ["Infobox_drug/formatChEMBL"] = 9700, ["Infobox_drug/formatChemDBNIAID"] = 9700, ["Infobox_drug/formatChemSpider"] = 9700, ["Infobox_drug/formatCompTox"] = 9700, ["Infobox_drug/formatDrugBank"] = 9700, ["Infobox_drug/formatIUPHARBPS"] = 9700, ["Infobox_drug/formatJmol"] = 9700, ["Infobox_drug/formatKEGG"] = 9700, ["Infobox_drug/formatPDBligand"] = 9100, ["Infobox_drug/formatPubChemCID"] = 9700, ["Infobox_drug/formatPubChemSID"] = 9700, ["Infobox_drug/formatUNII"] = 9700, ["Infobox_drug/legal_status"] = 10000, ["Infobox_drug/licence"] = 9800, ["Infobox_drug/maintenance_categories"] = 9700, ["Infobox_drug/non-ref-space"] = 4200, ["Infobox_drug/pregnancy_category"] = 9800, ["Infobox_drug/title"] = 9700, ["Infobox_election"] = 30000, ["Infobox_election/row"] = 30000, ["Infobox_election/shortname"] = 28000, ["Infobox_enzyme"] = 5100, ["Infobox_ethnic_group"] = 7300, ["Infobox_event"] = 5400, ["Infobox_family"] = 2100, ["Infobox_figure_skater"] = 4200, ["Infobox_film"] = 156000, ["Infobox_film/short_description"] = 152000, ["Infobox_film_awards"] = 2600, ["Infobox_film_awards/link"] = 2600, ["Infobox_film_awards/style"] = 2600, ["Infobox_food"] = 6900, ["Infobox_football_biography"] = 206000, ["Infobox_football_club"] = 27000, ["Infobox_football_club_season"] = 20000, ["Infobox_football_league"] = 2600, ["Infobox_football_league_season"] = 19000, ["Infobox_football_match"] = 5900, ["Infobox_football_tournament_season"] = 8000, ["Infobox_former_subdivision"] = 3300, ["Infobox_former_subdivision/styles.css"] = 3300, ["Infobox_galaxy"] = 2100, ["Infobox_game"] = 2500, ["Infobox_game_score"] = 3400, ["Infobox_gene"] = 13000, ["Infobox_given_name"] = 4000, ["Infobox_golfer"] = 4400, ["Infobox_golfer/highest_ranking"] = 4400, ["Infobox_government_agency"] = 10000, ["Infobox_government_cabinet"] = 2600, ["Infobox_gridiron_football_person"] = 2400, ["Infobox_gridiron_football_person/position"] = 5700, ["Infobox_gymnast"] = 3400, ["Infobox_handball_biography"] = 4900, ["Infobox_historic_site"] = 11000, ["Infobox_horseraces"] = 2600, ["Infobox_hospital"] = 6300, ["Infobox_hospital/care_system"] = 6300, ["Infobox_hospital/lists"] = 6300, ["Infobox_ice_hockey_biography"] = 20000, ["Infobox_ice_hockey_player"] = 19000, ["Infobox_ice_hockey_team"] = 3000, ["Infobox_ice_hockey_team_season"] = 2000, ["Infobox_international_football_competition"] = 5800, ["Infobox_islands"] = 8800, ["Infobox_islands/area"] = 9200, ["Infobox_islands/density"] = 9200, ["Infobox_islands/length"] = 8800, ["Infobox_islands/styles.css"] = 8800, ["Infobox_journal"] = 9700, ["Infobox_journal/Abbreviation_search"] = 9600, ["Infobox_journal/Bluebook_check"] = 9400, ["Infobox_journal/Former_check"] = 9400, ["Infobox_journal/ISO_4_check"] = 9400, ["Infobox_journal/ISSN-eISSN"] = 9500, ["Infobox_journal/Indexing_search"] = 9500, ["Infobox_journal/MathSciNet_check"] = 9400, ["Infobox_journal/NLM_check"] = 9400, ["Infobox_journal/frequency"] = 8600, ["Infobox_lake"] = 4300, ["Infobox_language"] = 9500, ["Infobox_language/family-color"] = 11000, ["Infobox_language/genetic"] = 6500, ["Infobox_language/linguistlist"] = 9500, ["Infobox_language/ref"] = 7100, ["Infobox_legislature"] = 3600, ["Infobox_library"] = 2100, ["Infobox_lighthouse"] = 2600, ["Infobox_lighthouse/light"] = 2600, ["Infobox_locomotive"] = 4900, ["Infobox_magazine"] = 7600, ["Infobox_manner_of_address"] = 3300, ["Infobox_mapframe"] = 80000, ["Infobox_martial_artist"] = 5700, ["Infobox_martial_artist/record"] = 5700, ["Infobox_medal_templates"] = 423000, ["Infobox_medical_condition"] = 10000, ["Infobox_medical_condition_(new)"] = 8200, ["Infobox_medical_details"] = 2000, ["Infobox_military_conflict"] = 22000, ["Infobox_military_installation"] = 9800, ["Infobox_military_person"] = 45000, ["Infobox_military_unit"] = 26000, ["Infobox_mine"] = 2100, ["Infobox_model"] = 2300, ["Infobox_monument"] = 2000, ["Infobox_mountain"] = 28000, ["Infobox_multi-sport_competition_event"] = 2400, ["Infobox_museum"] = 10000, ["Infobox_musical_artist"] = 121000, ["Infobox_musical_artist/color"] = 121000, ["Infobox_musical_artist/hCard_class"] = 313000, ["Infobox_musical_composition"] = 2900, ["Infobox_name"] = 7400, ["Infobox_name_module"] = 7000, ["Infobox_newspaper"] = 9700, ["Infobox_nobility"] = 2500, ["Infobox_noble"] = 7300, ["Infobox_officeholder"] = 219000, ["Infobox_officeholder/office"] = 224000, ["Infobox_official_post"] = 8100, ["Infobox_organization"] = 36000, ["Infobox_pageant_titleholder"] = 2900, ["Infobox_park"] = 7400, ["Infobox_person"] = 473000, ["Infobox_person/Wikidata"] = 4800, ["Infobox_person/height"] = 103000, ["Infobox_person/length"] = 7100, ["Infobox_person/weight"] = 66000, ["Infobox_philosopher"] = 3400, ["Infobox_planet"] = 4700, ["Infobox_play"] = 3900, ["Infobox_political_party"] = 14000, ["Infobox_power_station"] = 3000, ["Infobox_prepared_food"] = 3100, ["Infobox_professional_wrestler"] = 4300, ["Infobox_professional_wrestling_event"] = 2700, ["Infobox_protected_area"] = 14000, ["Infobox_protein_family"] = 2100, ["Infobox_publisher"] = 2400, ["Infobox_racehorse"] = 5500, ["Infobox_racing_driver"] = 3800, ["Infobox_racing_driver_series_section"] = 2000, ["Infobox_radio_station"] = 22000, ["Infobox_rail"] = 2900, ["Infobox_rail_line"] = 7300, ["Infobox_rail_service"] = 2900, ["Infobox_rail_service/doc"] = 2900, ["Infobox_reality_competition_season"] = 3500, ["Infobox_record_label"] = 4000, ["Infobox_recurring_event"] = 6400, ["Infobox_religious_biography"] = 5200, ["Infobox_religious_building"] = 12000, ["Infobox_religious_building/color"] = 17000, ["Infobox_restaurant"] = 2800, ["Infobox_river"] = 30000, ["Infobox_river/calcunit"] = 30000, ["Infobox_river/discharge"] = 30000, ["Infobox_river/row-style"] = 30000, ["Infobox_river/source"] = 30000, ["Infobox_road"] = 24000, ["Infobox_road/meta/mask/category"] = 24000, ["Infobox_road/meta/mask/country"] = 24000, ["Infobox_road/styles.css"] = 25000, ["Infobox_road_small"] = 2300, ["Infobox_rockunit"] = 6400, ["Infobox_royalty"] = 22000, ["Infobox_royalty/short_description"] = 12000, ["Infobox_rugby_biography"] = 16000, ["Infobox_rugby_biography/correct_date"] = 16000, ["Infobox_rugby_biography/depcheck"] = 15000, ["Infobox_rugby_league_biography"] = 9900, ["Infobox_rugby_league_biography/PLAYER"] = 9800, ["Infobox_rugby_team"] = 2600, ["Infobox_sailboat_specifications"] = 2300, ["Infobox_saint"] = 5000, ["Infobox_school"] = 38000, ["Infobox_school/short_description"] = 38000, ["Infobox_school_district"] = 5700, ["Infobox_school_district/styles.css"] = 5700, ["Infobox_scientist"] = 48000, ["Infobox_service_record"] = 2600, ["Infobox_settlement"] = 561000, ["Infobox_settlement/areadisp"] = 235000, ["Infobox_settlement/columns"] = 94000, ["Infobox_settlement/columns/styles.css"] = 94000, ["Infobox_settlement/densdisp"] = 436000, ["Infobox_settlement/impus"] = 81000, ["Infobox_settlement/lengthdisp"] = 169000, ["Infobox_settlement/link"] = 94000, ["Infobox_settlement/metric"] = 209000, ["Infobox_settlement/pref"] = 291000, ["Infobox_settlement/styles.css"] = 561000, ["Infobox_ship_begin"] = 41000, ["Infobox_ship_career"] = 37000, ["Infobox_ship_characteristics"] = 41000, ["Infobox_ship_class_overview"] = 4100, ["Infobox_ship_image"] = 40000, ["Infobox_shopping_mall"] = 3400, ["Infobox_short_story"] = 2400, ["Infobox_skier"] = 2500, ["Infobox_soap_character"] = 2900, ["Infobox_software"] = 14000, ["Infobox_software/simple"] = 14000, ["Infobox_song"] = 76000, ["Infobox_song/color"] = 76000, ["Infobox_song/link"] = 76000, ["Infobox_spaceflight"] = 3600, ["Infobox_spaceflight/styles.css"] = 3600, ["Infobox_sport_event"] = 2100, ["Infobox_sports_competition_event"] = 17000, ["Infobox_sports_competition_event/medalrow"] = 11000, ["Infobox_sports_league"] = 5000, ["Infobox_sports_season"] = 5400, ["Infobox_sports_team"] = 2200, ["Infobox_sportsperson"] = 106000, ["Infobox_stadium"] = 3500, ["Infobox_station"] = 55000, ["Infobox_station/doc"] = 55000, ["Infobox_station/services"] = 55000, ["Infobox_station/styles.css"] = 55000, ["Infobox_street"] = 3400, ["Infobox_swimmer"] = 9400, ["Infobox_television"] = 57000, ["Infobox_television/Short_description"] = 54000, ["Infobox_television_channel"] = 6200, ["Infobox_television_episode"] = 12000, ["Infobox_television_episode/styles.css"] = 12000, ["Infobox_television_season"] = 9500, ["Infobox_television_station"] = 3700, ["Infobox_tennis_biography"] = 10000, ["Infobox_tennis_event"] = 2500, ["Infobox_tennis_tournament_event"] = 19000, ["Infobox_tennis_tournament_year"] = 9200, ["Infobox_tennis_tournament_year/color"] = 28000, ["Infobox_tennis_tournament_year/footer"] = 28000, ["Infobox_train"] = 2300, ["Infobox_union"] = 2100, ["Infobox_university"] = 26000, ["Infobox_user"] = 2700, ["Infobox_venue"] = 18000, ["Infobox_video_game"] = 28000, ["Infobox_video_game/styles.css"] = 28000, ["Infobox_volleyball_biography"] = 5400, ["Infobox_weapon"] = 7300, ["Infobox_website"] = 7700, ["Infobox_writer"] = 39000, ["Information"] = 101000, ["Information/styles.css"] = 101000, ["Inprogress"] = 2400, ["Input_link"] = 32000, ["Instagram"] = 11000, ["Interlanguage_link"] = 155000, ["Interlanguage_link_multi"] = 19000, ["Internet_Archive_author"] = 19000, ["Internet_Archive_film"] = 2500, ["Intitle"] = 12000, ["Invalid_SVG"] = 3600, ["Invalid_SVG/styles.css"] = 3600, ["Iptalk"] = 17000, ["IranCensus2006"] = 47000, ["IranNCSGN"] = 3200, ["Iran_Census_2006"] = 47000, ["Irc"] = 2100, ["Irish_place_name"] = 2600, ["IsIPAddress"] = 38000, ["IsValidPageName"] = 141000, ["Is_country_in_Central_America"] = 13000, ["Is_country_in_the_Caribbean"] = 14000, ["Is_interwiki_link"] = 6100, ["Is_italic_taxon"] = 478000, ["Is_redirect"] = 27000, ["Isbn"] = 7500, ["Isfdb_name"] = 3700, ["Isfdb_title"] = 4400, ["Isnumeric"] = 209000, ["Iso2continent"] = 35000, ["Iso2country"] = 23000, ["Iso2country/article"] = 22000, ["Iso2country/data"] = 23000, ["Iso2nationality"] = 226000, ["Issubst"] = 72000, ["Isu_name"] = 2200, ["Italic_dab2"] = 5200, ["Italic_title"] = 282000, ["Italic_title_prefixed"] = 8700, ["Italics_colon"] = 3800, ["Italictitle"] = 4300, ["Ivm"] = 5700, ["Ivm/styles.css"] = 5700, ["Ivmbox"] = 123000, ["Ivory_messagebox"] = 142000, ["Module:I18n/complex_date"] = 66000, ["Module:IP"] = 131000, ["Module:IPA"] = 142000, ["Module:IPA/data"] = 128000, ["Module:IPA/styles.css"] = 114000, ["Module:IPA_symbol"] = 4800, ["Module:IPA_symbol/data"] = 4800, ["Module:IPAc-en"] = 48000, ["Module:IPAc-en/data"] = 48000, ["Module:IPAc-en/phonemes"] = 48000, ["Module:IPAc-en/pronunciation"] = 48000, ["Module:IPAddress"] = 188000, ["Module:ISO_3166"] = 1030000, ["Module:ISO_3166/data/AT"] = 2500, ["Module:ISO_3166/data/BA"] = 3400, ["Module:ISO_3166/data/CA"] = 2500, ["Module:ISO_3166/data/CN"] = 2100, ["Module:ISO_3166/data/DE"] = 14000, ["Module:ISO_3166/data/ES"] = 3600, ["Module:ISO_3166/data/FR"] = 38000, ["Module:ISO_3166/data/GB"] = 6400, ["Module:ISO_3166/data/GR"] = 3100, ["Module:ISO_3166/data/IN"] = 29000, ["Module:ISO_3166/data/IR"] = 7900, ["Module:ISO_3166/data/National"] = 1030000, ["Module:ISO_3166/data/PL"] = 6700, ["Module:ISO_3166/data/RS"] = 3200, ["Module:ISO_3166/data/RU"] = 25000, ["Module:ISO_3166/data/US"] = 85000, ["Module:ISO_639_name"] = 20000, ["Module:ISOdate"] = 66000, ["Module:Icon"] = 581000, ["Module:Icon/data"] = 581000, ["Module:If_empty"] = 3660000, ["Module:If_in_page"] = 9900, ["Module:If_preview"] = 295000, ["Module:If_preview/configuration"] = 295000, ["Module:If_preview/styles.css"] = 295000, ["Module:Import_style"] = 11000, ["Module:In_lang"] = 357000, ["Module:Indent"] = 4300, ["Module:Infobox"] = 4100000, ["Module:Infobox/dates"] = 69000, ["Module:Infobox/styles.css"] = 4360000, ["Module:Infobox3cols"] = 296000, ["Module:InfoboxImage"] = 4410000, ["Module:Infobox_body_of_water_tracking"] = 18000, ["Module:Infobox_cyclist_tracking"] = 16000, ["Module:Infobox_gene"] = 13000, ["Module:Infobox_mapframe"] = 404000, ["Module:Infobox_military_conflict"] = 22000, ["Module:Infobox_military_conflict/styles.css"] = 22000, ["Module:Infobox_multi-lingual_name"] = 20000, ["Module:Infobox_multi-lingual_name/data"] = 20000, ["Module:Infobox_power_station"] = 3000, ["Module:Infobox_road"] = 25000, ["Module:Infobox_road/browselinks"] = 25000, ["Module:Infobox_road/errors"] = 24000, ["Module:Infobox_road/length"] = 25000, ["Module:Infobox_road/locations"] = 24000, ["Module:Infobox_road/map"] = 25000, ["Module:Infobox_road/route"] = 25000, ["Module:Infobox_road/sections"] = 24000, ["Module:Infobox_television"] = 57000, ["Module:Infobox_television_disambiguation_check"] = 63000, ["Module:Infobox_television_episode"] = 12000, ["Module:Infobox_television_season_disambiguation_check"] = 9000, ["Module:Infobox_television_season_name"] = 9500, ["Module:Internet_Archive"] = 19000, ["Module:IrelandByCountyCatNav"] = 3300, ["Module:Is_infobox_in_lead"] = 377000, ["Module:Is_instance"] = 335000, ["Module:Italic_title"] = 1110000, ["Module:Italic_title2"] = 5200, } 55575e31a45262bbf1b3a26b1bf96c3de6e0cacf Template:VTE 10 1333 2668 2023-09-24T22:17:02Z w>SWinxy 0 Wrap in {{Documentation}} wikitext text/x-wiki {{#invoke:Navbar|navbar|mini = 1|template = {{{template|{{{1|}}}}}}}}<noinclude>{{Documentation|content= The VTE template invokes the {{tl|navbar}} template with the parameter {{var|mini}} set to 1. For more information, see [[Template:Navbar/doc]], which has been transcluded below for convenience. {{cot|[[Template:Navbar/doc]]}} {{documentation|1=Template:Navbar/doc}} {{cob}} }} </noinclude> ae3a70a9ea950d57d33c91e4d5b182059181b000 Template:Infobox military operation/doc 10 1511 2846 2023-09-24T23:24:29Z w>EnderWatcher95 0 /* Example */ wikitext text/x-wiki {{#ifeq:{{{noheader|}}}|yes||{{Documentation subpage}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} }} This infobox may be used to describe a particular planned or executed military operation or attack. For operations that resulted in combat, it can be used as an auxiliary template to the {{tl|infobox military conflict}}, if necessary; for other types of operations, including those that were planned but never executed, it may be used alone. In the case of conflicts that consisted of multiple independent operations, multiple copies of the box may be used on a single article. __TOC__ === Usage === {{Parameter names example|_template = Infobox military operation |title |name |partof |conflict |image |image_size |image_upright |alt |caption |coordinates = {{coord|0|0}} |map_type=Earth |map_size= |map_label |map_caption |scope |type |location |coordinates |planned |planned_by |commanded_by |target |objective |date |time |time-begin |time-end |timezone |executed_by |outcome |casualties |fatalities |injuries}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox military operation |name = |partof = |subtitle = |image = |image_upright = |alt = |caption = |scope = |type = |location = |location2 = <!-- 2 through 10 for more locations --> |coordinates = |coordinates2 = <!-- 2 through 10 for more locations --> |map_type = |map_size = |map_caption = |map_label = |map_label2 = <!-- 2 through 10 for more locations --> |planned = |planned_by = |commanded_by = |objective = |target = |date = <!-- {{start date|YYYY|MM|DD|df=y}} --> |time = |time-begin = |time-end = |timezone = |executed_by = |outcome = |casualties = |fatalities = |injuries = }}</syntaxhighlight> === Example === {{Infobox military operation |name = Case Blue |Result = Australian Victory |planned_by = ''[[Wehrmacht]]'' |objective = Capture of [[Caucasus]] oil fields |executed = Began {{start date|1942|06|28|df=y}} |executed_by = [[Army Group South]] }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox military operation |name = Case Blue |scope = Strategic offensive |planned_by = ''[[Wehrmacht]]'' |objective = Capture of [[Caucasus]] oil fields |executed = Began {{start date|1942|06|28|df=y}} |executed_by = [[Army Group South]] }}</syntaxhighlight> === Parameters === '''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]). * '''name''' – the name of the operational plan; names in multiple languages may be provided. * '''subtitle''' – alternative name of the conflict being described. * '''partof''' – ''optional'' – the larger conflict containing the event described in the article. * '''image''' – ''optional'' – an image for the warbox. Given in the form <code>File:Example.jpg</code> * '''image_upright''' – ''optional'' – image upright scaling factor. * '''alt''' – ''optional'' – [[Wikipedia:Manual of Style/Accessibility/Alternative text for images|Alternative text for image]] that is accessible to [[screen reader]]s to help the [[visually impaired]] * '''caption''' – ''optional'' – the text to be placed below the image. * '''location''' – ''optional'' – the location of the operation. * '''coordinates''' – ''optional'' – the coordinates for the location above, given as {{tl|coord}} with ''|display=inline,title''. Used to display the geographic location of the conflict and the location on a map added with the <code>map_type</code> parameter. If coordinates for several locations are given, consider if hany shall have the title display. * '''map_type''' &ndash; ''optional'' &ndash; the base map to be used for the location map, e.g. "Scotland"; see {{tl|location map}} for more details. * '''map_size''' &ndash; ''optional'' &ndash; width of the location map in pixels (px), e.g. "150"; defaults to: "220". * '''map_caption''' &ndash; ''optional'' &ndash; caption displayed below the location map; defaults to "Location within {{{map_type}}}", e.g. "Location within Scotland". * '''map_label''' &ndash; ''optional'' &ndash; the label placed next to the marker on the location map. * '''scope''' – ''optional'' – the scope of the operation, such as "Strategic", "Operational", or "Tactical". * '''type''' – ''optional'' – as an alternative to the '''scope''' field above, the type of operation, such as "Suicide attack" or "Ambush". * '''planned''' – ''optional'' – the date(s) on which the plan was developed. * '''planned_by''' – ''optional'' – the person or group responsible for developing the plan. * '''commanded_by''' – ''optional'' – the person commanding the operation. * '''objective''' – ''optional'' – the objective(s) of the operation. * '''target''' – ''optional'' – as an alternative to the '''objective''' field above, the target(s) of the operation. * '''date''' – ''optional'' – the date(s), if any, on which the operation was executed. use {{Tl|Start date}} (and {{Tl|End date}} if required) * '''time''' – ''optional'' – the time, if any, at which the operation was executed. * '''time-begin''' and '''time-end''' – ''optional'' – as an alternative to the '''time''' field above, the start and end times, respectively. * '''timezone''' – ''optional'' – the timezone of the location of the operation; [[UTC]]+X, [[UTC]]-X, or [[UTC]] (i.e. offset from [[UTC]]) is preferred. * '''executed_by''' – ''optional'' – the people, groups, units, or formations responsible for executing the operation. * '''outcome''' – ''optional'' – the outcome of the operation from the perspective of the planners. * '''casualties''' – ''optional'' – any casualties occurring during the execution of the operation. * '''fatalities''' – ''optional'' – as an alternative to the '''casualties''' field above, the number of fatalities occurring during the execution of the operation. * '''injuries''' – ''optional'' – as an alternative to the '''casualties''' field above, the number of injuries occurring during the execution of the operation. === Microformat === {{UF-hcal}} === TemplateData === {{collapse top|title=[[Wikipedia:TemplateData|TemplateData]] for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=y}} <templatedata> { "description": "This infobox may be used to describe a particular planned or executed military operation or attack.", "format": "{{_\n| _____________ = _\n}}\n", "params": { "name": { "label": "Name", "description": "The name of the military operation", "type": "string", "suggested": true } }, "paramOrder": [ "name" ] } </templatedata> {{collapse bottom}} === See also === * {{tl|Infobox civil conflict}} * {{tl|Infobox civilian attack}} * {{tl|Infobox military conflict}}<noinclude> [[Category:WikiProject Military history template instructions|Military operation]] </noinclude> <includeonly> {{Sandbox other||{{#ifeq:{{{noheader|}}}|yes|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Templates with coordinates fields]] [[Category:Military auxiliary infobox templates|Military operation]] [[Category:Templates that add a tracking category|{{PAGENAME}}]] }}}}</includeonly> 8563c0313f73379ff06c13310de97e2837a51023 Template:ISO 15924 number 10 1623 2958 2023-09-25T03:14:51Z w>Drmccreedy 0 Update for 2023-09-12 update of ISO 15924 wikitext text/x-wiki {{#switch:{{ISO 15924 code|{{{alpha4|{{{1|}}}}}}}}<!-- ISO 15924 as of 2023-09-12: complete list of 221 + 50 Qaaaa-Qabx codes--> | Adlm = 166 | Afak = 439 | Aghb = 239 | Ahom = 338 | Arab = 160 | Aran = 161 | Armi = 124 | Armn = 230 | Avst = 134 | Bali = 360 | Bamu = 435 | Bass = 259 | Batk = 365 | Beng = 325 | Bhks = 334 | Blis = 550 | Bopo = 285 | Brah = 300 | Brai = 570 | Bugi = 367 | Buhd = 372 | Cakm = 349 | Cans = 440 | Cari = 201 | Cham = 358 | Cher = 445 | Chis = 298 | Chrs = 109 | Cirt = 291 | Copt = 204 | Cpmn = 402 | Cprt = 403 | Cyrl = 220 | Cyrs = 221 | Deva = 315 | Diak = 342 | Dogr = 328 | Dsrt = 250 | Dupl = 755 | Egyd = 070 | Egyh = 060 | Egyp = 050 | Elba = 226 | Elym = 128 | Ethi = 430 | Gara = 164 | Geok = 241 | Geor = 240 | Glag = 225 | Gong = 312 | Gonm = 313 | Goth = 206 | Gran = 343 | Grek = 200 | Gujr = 320 | Gukh = 397 | Guru = 310 | Hanb = 503 | Hang = 286 | Hani = 500 | Hano = 371 | Hans = 501 | Hant = 502 | Hatr = 127 | Hebr = 125 | Hira = 410 | Hluw = 080 | Hmng = 450 | Hmnp = 451 | Hrkt = 412 | Hung = 176 | Inds = 610 | Ital = 210 | Jamo = 284 | Java = 361 | Jpan = 413 | Jurc = 510 | Kali = 357 | Kana = 411 | Kawi = 368 | Khar = 305 | Khmr = 355 | Khoj = 322 | Kitl = 505 | Kits = 288 | Knda = 345 | Kore = 287 | Kpel = 436 | Krai = 396 | Kthi = 317 | Lana = 351 | Laoo = 356 | Latf = 217 | Latg = 216 | Latn = 215 | Leke = 364 | Lepc = 335 | Limb = 336 | Lina = 400 | Linb = 401 | Lisu = 399 | Loma = 437 | Lyci = 202 | Lydi = 116 | Mahj = 314 | Maka = 366 | Mand = 140 | Mani = 139 | Marc = 332 | Maya = 090 | Medf = 265 | Mend = 438 | Merc = 101 | Mero = 100 | Mlym = 347 | Modi = 324 | Mong = 145 | Moon = 218 | Mroo = 264 | Mtei = 337 | Mult = 323 | Mymr = 350 | Nagm = 295 | Nand = 311 | Narb = 106 | Nbat = 159 | Newa = 333 | Nkdb = 085 | Nkgb = 420 | Nkoo = 165 | Nshu = 499 | Ogam = 212 | Olck = 261 | Onao = 296 | Orkh = 175 | Orya = 327 | Osge = 219 | Osma = 260 | Ougr = 143 | Palm = 126 | Pauc = 263 | Pcun = 015 | Pelm = 016 | Perm = 227 | Phag = 331 | Phli = 131 | Phlp = 132 | Phlv = 133 | Phnx = 115 | Piqd = 293 | Plrd = 282 | Prti = 130 | Psin = 103 | Qaaa-Qabx | Qaaa-Qabx | Qaaa–Qabx= 900-949 | Qaaa = 900 | Qaab = 901 | Qaac = 902 | Qaad = 903 | Qaae = 904 | Qaaf = 905 | Qaag = 906 | Qaah = 907 | Qaai = 908 | Qaaj = 909 | Qaak = 910 | Qaal = 911 | Qaam = 912 | Qaan = 913 | Qaao = 914 | Qaap = 915 | Qaaq = 916 | Qaar = 917 | Qaas = 918 | Qaat = 919 | Qaau = 920 | Qaav = 921 | Qaaw = 922 | Qaax = 923 | Qaay = 924 | Qaaz = 925 | Qaba = 926 | Qabb = 927 | Qabc = 928 | Qabd = 929 | Qabe = 930 | Qabf = 931 | Qabg = 932 | Qabh = 933 | Qabi = 934 | Qabj = 935 | Qabk = 936 | Qabl = 937 | Qabm = 938 | Qabn = 939 | Qabo = 940 | Qabp = 941 | Qabq = 942 | Qabr = 943 | Qabs = 944 | Qabt = 945 | Qabu = 946 | Qabv = 947 | Qabw = 948 | Qabx = 949 | Ranj = 303 | Rjng = 363 | Rohg = 167 | Roro = 620 | Runr = 211 | Samr = 123 | Sara = 292 | Sarb = 105 | Saur = 344 | Sgnw = 095 | Shaw = 281 | Shrd = 319 | Shui = 530 | Sidd = 302 | Sidt = 180 | Sind = 318 | Sinh = 348 | Sogd = 141 | Sogo = 142 | Sora = 398 | Soyo = 329 | Sund = 362 | Sunu = 274 | Sylo = 316 | Syrc = 135 | Syre = 138 | Syrj = 137 | Syrn = 136 | Tagb = 373 | Takr = 321 | Tale = 353 | Talu = 354 | Taml = 346 | Tang = 520 | Tavt = 359 | Tayo = 380 | Telu = 340 | Teng = 290 | Tfng = 120 | Tglg = 370 | Thaa = 170 | Thai = 352 | Tibt = 330 | Tirh = 326 | Tnsa = 275 | Todr = 229 | Tols = 299 | Toto = 294 | Tutg = 341 | Ugar = 040 | Vaii = 470 | Visp = 280 | Vith = 228 | Wara = 262 | Wcho = 283 | Wole = 480 | Xpeo = 030 | Xsux = 020 | Yezi = 192 | Yiii = 460 | Zanb = 339 | Zinh = 994 | Zmth = 995 | Zsye = 993 | Zsym = 996 | Zxxx = 997 | Zyyy = 998 | Zzzz = 999 | #default = {{{default|}}} }}<noinclude> {{documentation}} </noinclude> 9c5511b734ff43c00f63bd437379515d8c352a18 Template:ISO 15924 code 10 1604 2939 2023-09-25T03:17:54Z w>Drmccreedy 0 Update for 2023-09-12 update of ISO 15924 wikitext text/x-wiki <!-- Exact list from ISO datafile, as of 2023-09-12: 223 output values (codes). -->{{#switch:{{{alpha4|{{ucfirst:{{lc:{{{1|}}}}}}}}}} | 166 | Adlm = Adlm | 439 | Afak = Afak | 239 | Aghb = Aghb | 338 | Ahom = Ahom | 160 | Arab = Arab | 161 | Aran = Aran | 124 | Armi = Armi | 230 | Armn = Armn | 134 | Avst = Avst | 360 | Bali = Bali | 435 | Bamu = Bamu | 259 | Bass = Bass | 365 | Batk = Batk | 325 | Beng = Beng | 334 | Bhks = Bhks | 550 | Blis = Blis | 285 | Bopo = Bopo | 300 | Brah = Brah | 570 | Brai = Brai | 367 | Bugi = Bugi | 372 | Buhd = Buhd | 349 | Cakm = Cakm | 440 | Cans = Cans | 201 | Cari = Cari | 358 | Cham = Cham | 445 | Cher = Cher | 298 | Chis = Chis | 109 | Chrs = Chrs | 291 | Cirt = Cirt | 204 | Copt = Copt | 402 | Cpmn = Cpmn | 403 | Cprt = Cprt | 220 | Cyrl = Cyrl | 221 | Cyrs = Cyrs | 315 | Deva = Deva | 342 | Diak = Diak | 328 | Dogr = Dogr | 250 | Dsrt = Dsrt | 755 | Dupl = Dupl | 70 | 070 | Egyd = Egyd | 60 | 060 | Egyh = Egyh | 50 | 050 | Egyp = Egyp | 226 | Elba = Elba | 128 | Elym = Elym | 430 | Ethi = Ethi | 164 | Gara = Gara | 241 | Geok = Geok | 240 | Geor = Geor | 225 | Glag = Glag | 312 | Gong = Gong | 313 | Gonm = Gonm | 206 | Goth = Goth | 343 | Gran = Gran | 200 | Grek = Grek | 320 | Gujr = Gujr | 397 | Gukh = Gukh | 310 | Guru = Guru | 503 | Hanb = Hanb | 286 | Hang = Hang | 500 | Hani = Hani | 371 | Hano = Hano | 501 | Hans = Hans | 502 | Hant = Hant | 127 | Hatr = Hatr | 125 | Hebr = Hebr | 410 | Hira = Hira | 80 | 080 | Hluw = Hluw | 450 | Hmng = Hmng | 451 | Hmnp = Hmnp | 412 | Hrkt = Hrkt | 176 | Hung = Hung | 610 | Inds = Inds | 210 | Ital = Ital | 284 | Jamo = Jamo | 361 | Java = Java | 413 | Jpan = Jpan | 510 | Jurc = Jurc | 357 | Kali = Kali | 411 | Kana = Kana | 368 | Kawi = Kawi | 305 | Khar = Khar | 355 | Khmr = Khmr | 322 | Khoj = Khoj | 505 | Kitl = Kitl | 288 | Kits = Kits | 345 | Knda = Knda | 287 | Kore = Kore | 436 | Kpel = Kpel | 396 | Krai = Krai | 317 | Kthi = Kthi | 351 | Lana = Lana | 356 | Laoo = Laoo | 217 | Latf = Latf | 216 | Latg = Latg | 215 | Latn = Latn | 364 | Leke = Leke | 335 | Lepc = Lepc | 336 | Limb = Limb | 400 | Lina = Lina | 401 | Linb = Linb | 399 | Lisu = Lisu | 437 | Loma = Loma | 202 | Lyci = Lyci | 116 | Lydi = Lydi | 314 | Mahj = Mahj | 366 | Maka = Maka | 140 | Mand = Mand | 139 | Mani = Mani | 332 | Marc = Marc | 90 | 090 | Maya = Maya | 265 | Medf = Medf | 438 | Mend = Mend | 101 | Merc = Merc | 100 | Mero = Mero | 347 | Mlym = Mlym | 324 | Modi = Modi | 145 | Mong = Mong | 218 | Moon = Moon | 264 | Mroo = Mroo | 337 | Mtei = Mtei | 323 | Mult = Mult | 350 | Mymr = Mymr | 295 | Nagm = Nagm | 311 | Nand = Nand | 106 | Narb = Narb | 159 | Nbat = Nbat | 333 | Newa = Newa | 85 | 085 | Nkdb = Nkdb | 420 | Nkgb = Nkgb | 165 | Nkoo = Nkoo | 499 | Nshu = Nshu | 212 | Ogam = Ogam | 261 | Olck = Olck | 296 | Onao = Onao | 175 | Orkh = Orkh | 327 | Orya = Orya | 219 | Osge = Osge | 260 | Osma = Osma | 143 | Ougr = Ougr | 126 | Palm = Palm | 263 | Pauc = Pauc | 15 | 015 | Pcun = Pcun | 16 | 016 | Pelm = Pelm | 227 | Perm = Perm | 331 | Phag = Phag | 131 | Phli = Phli | 132 | Phlp = Phlp | 133 | Phlv = Phlv | 115 | Phnx = Phnx | 293 | Piqd = Piqd | 282 | Plrd = Plrd | 130 | Prti = Prti | 103 | Psin = Psin | 900-949 | 900&ndash;949 | Qaaa-qabx | Qaaa&ndash;qabx = Qaaa&ndash;Qabx<!-- As a range. Separator IN "-" or NDASH;lc. OUT = NDASH. 2021-02 --> | 900 | Qaaa = Qaaa | 949 | Qabx = Qabx | 303 | Ranj = Ranj | 363 | Rjng = Rjng | 167 | Rohg = Rohg | 620 | Roro = Roro | 211 | Runr = Runr | 123 | Samr = Samr | 292 | Sara = Sara | 105 | Sarb = Sarb | 344 | Saur = Saur | 95 | 095 | Sgnw = Sgnw | 281 | Shaw = Shaw | 319 | Shrd = Shrd | 530 | Shui = Shui | 302 | Sidd = Sidd | 180 | Sidt = Sidt | 318 | Sind = Sind | 348 | Sinh = Sinh | 141 | Sogd = Sogd | 142 | Sogo = Sogo | 398 | Sora = Sora | 329 | Soyo = Soyo | 362 | Sund = Sund | 274 | Sunu = Sunu | 316 | Sylo = Sylo | 135 | Syrc = Syrc | 138 | Syre = Syre | 137 | Syrj = Syrj | 136 | Syrn = Syrn | 373 | Tagb = Tagb | 321 | Takr = Takr | 353 | Tale = Tale | 354 | Talu = Talu | 346 | Taml = Taml | 520 | Tang = Tang | 359 | Tavt = Tavt | 380 | Tayo = Tayo | 340 | Telu = Telu | 290 | Teng = Teng | 120 | Tfng = Tfng | 370 | Tglg = Tglg | 170 | Thaa = Thaa | 352 | Thai = Thai | 330 | Tibt = Tibt | 326 | Tirh = Tirh | 275 | Tnsa = Tnsa | 229 | Todr = Todr | 299 | Tols = Tols | 294 | Toto = Toto | 341 | Tutg = Tutg | 40 | 040 | Ugar = Ugar | 470 | Vaii = Vaii | 280 | Visp = Visp | 228 | Vith = Vith | 262 | Wara = Wara | 283 | Wcho = Wcho | 480 | Wole = Wole | 30 | 030 | Xpeo = Xpeo | 20 | 020 | Xsux = Xsux | 192 | Yezi = Yezi | 460 | Yiii = Yiii | 339 | Zanb = Zanb | 994 | Zinh = Zinh | 995 | Zmth = Zmth | 993 | Zsye = Zsye | 996 | Zsym = Zsym | 997 | Zxxx = Zxxx | 998 | Zyyy = Zyyy | 999 | Zzzz = Zzzz | #default={{{default|{{error|Error using {{tlx|ISO 15924 code}}: input "{{{alpha4|{{{1|}}}}}}" not recognized|tag=span}}}}} }}<noinclude> {{documentation}} </noinclude> 0d8982f8566f56ccf8d8469fb534a29f553b6c1e Template:ISO 15924 name 10 1605 2940 2023-09-25T03:22:17Z w>Drmccreedy 0 Update for 2023-09-12 update of ISO 15924 wikitext text/x-wiki {{#switch:{{{alpha4|{{ISO 15924 code|{{{1|}}}}}}}}<!-- ISO 15924 list as of 2023-09-12: this is the complete list of the 221 + 50 Qaaa-Qabx codes--> | Adlm = Adlam | Afak = Afaka | Aghb = Caucasian Albanian | Ahom = Ahom, Tai Ahom | Arab = Arabic | Aran = Arabic (Nastaliq variant) | Armi = Imperial Aramaic | Armn = Armenian | Avst = Avestan | Bali = Balinese | Bamu = Bamum | Bass = Bassa Vah | Batk = Batak | Beng = Bengali (Bangla) | Bhks = Bhaiksuki | Blis = Blissymbols | Bopo = Bopomofo | Brah = Brahmi | Brai = Braille | Bugi = Buginese | Buhd = Buhid | Cakm = Chakma | Cans = Unified Canadian Aboriginal Syllabics | Cari = Carian | Cham = Cham | Cher = Cherokee | Chis = Chisoi | Chrs = Chorasmian | Cirt = Cirth | Copt = Coptic | Cpmn = Cypro-Minoan | Cprt = Cypriot syllabary | Cyrl = Cyrillic | Cyrs = Cyrillic (Old Church Slavonic variant) | Deva = Devanagari (Nagari) | Diak = Dives Akuru | Dogr = Dogra | Dsrt = Deseret (Mormon) | Dupl = Duployan shorthand, Duployan stenography | Egyd = Egyptian demotic | Egyh = Egyptian hieratic | Egyp = Egyptian hieroglyphs | Elba = Elbasan | Elym = Elymaic | Ethi = Ethiopic (Geʻez) | Gara = Garay | Geok = Khutsuri (Asomtavruli and Nuskhuri) | Geor = Georgian (Mkhedruli and Mtavruli) | Glag = Glagolitic | Gong = Gunjala Gondi | Gonm = Masaram Gondi | Goth = Gothic | Gran = Grantha | Grek = Greek | Gujr = Gujarati | Gukh = Gurung Khema | Guru = Gurmukhi | Hanb = Han with Bopomofo (alias for Han + Bopomofo) | Hang = Hangul (Hangŭl, Hangeul) | Hani = Han (Hanzi, Kanji, Hanja) | Hano = Hanunoo (Hanunóo) | Hans = Han (Simplified variant) | Hant = Han (Traditional variant) | Hatr = Hatran | Hebr = Hebrew | Hira = Hiragana | Hluw = Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs) | Hmng = Pahawh Hmong | Hmnp = Nyiakeng Puachue Hmong | Hrkt = Japanese syllabaries (alias for Hiragana + Katakana) | Hung = Old Hungarian (Hungarian Runic) | Inds = Indus (Harappan) | Ital = Old Italic (Etruscan, Oscan, etc.) | Jamo = Jamo (alias for Jamo subset of Hangul) | Java = Javanese | Jpan = Japanese (alias for Han + Hiragana + Katakana) | Jurc = Jurchen | Kali = Kayah Li | Kana = Katakana | Kawi = Kawi | Khar = Kharoshthi | Khmr = Khmer | Khoj = Khojki | Kitl = Khitan large script | Kits = Khitan small script | Knda = Kannada | Kore = Korean (alias for Hangul + Han) | Kpel = Kpelle | Krai = Kirat Rai | Kthi = Kaithi | Lana = Tai Tham (Lanna) | Laoo = Lao | Latf = Latin (Fraktur variant) | Latg = Latin (Gaelic variant) | Latn = Latin | Leke = Leke | Lepc = Lepcha (Róng) | Limb = Limbu | Lina = Linear A | Linb = Linear B | Lisu = Lisu (Fraser) | Loma = Loma | Lyci = Lycian | Lydi = Lydian | Mahj = Mahajani | Maka = Makasar | Mand = Mandaic, Mandaean | Mani = Manichaean | Marc = Marchen | Maya = Mayan hieroglyphs | Medf = Medefaidrin (Oberi Okaime, Oberi Ɔkaimɛ) | Mend = Mende Kikakui | Merc = Meroitic Cursive | Mero = Meroitic Hieroglyphs | Mlym = Malayalam | Modi = Modi, Moḍī | Mong = Mongolian | Moon = Moon (Moon code, Moon script, Moon type) | Mroo = Mro, Mru | Mtei = Meitei Mayek (Meithei, Meetei) | Mult = Multani | Mymr = Myanmar (Burmese) | Nagm = Nag Mundari | Nand = Nandinagari | Narb = Old North Arabian (Ancient North Arabian) | Nbat = Nabataean | Newa = Newa, Newar, Newari, Nepāla lipi | Nkdb = Naxi Dongba (na²¹ɕi³³ to³³ba²¹, Nakhi Tomba) | Nkgb = Naxi Geba (na²¹ɕi³³ gʌ²¹ba²¹, 'Na-'Khi ²Ggŏ-¹baw, Nakhi Geba) | Nkoo = N’Ko | Nshu = Nüshu | Ogam = Ogham | Olck = Ol Chiki (Ol Cemet’, Ol, Santali) | Onao = Ol Onal | Orkh = Old Turkic, Orkhon Runic | Orya = Oriya (Odia) | Osge = Osage | Osma = Osmanya | Ougr = Old Uyghur | Palm = Palmyrene | Pauc = Pau Cin Hau | Pcun = Proto-Cuneiform | Pelm = Proto-Elamite | Perm = Old Permic | Phag = Phags-pa | Phli = Inscriptional Pahlavi | Phlp = Psalter Pahlavi | Phlv = Book Pahlavi | Phnx = Phoenician | Piqd = Klingon (KLI pIqaD) | Plrd = Miao (Pollard) | Prti = Inscriptional Parthian | Psin = Proto-Sinaitic | Qaaa-Qabx | Qaaa–Qabx = Reserved for private use (range) | Qaaa = Reserved for private use (start) | Qaab | Qaac | Qaad | Qaae | Qaaf | Qaag | Qaah | Qaai | Qaaj | Qaak | Qaal | Qaam | Qaan | Qaao | Qaap | Qaaq | Qaar | Qaas | Qaat | Qaau | Qaav | Qaaw | Qaax | Qaay | Qaaz | Qaba | Qabb | Qabc | Qabd | Qabe | Qabf | Qabg | Qabh | Qabi | Qabj | Qabk | Qabl | Qabm | Qabn | Qabo | Qabp | Qabq | Qabr | Qabs | Qabt | Qabu | Qabv | Qabw = Reserved for private use | Qabx = Reserved for private use (end) | Ranj = Ranjana | Rjng = Rejang (Redjang, Kaganga) | Rohg = Hanifi Rohingya | Roro = Rongorongo | Runr = Runic | Samr = Samaritan | Sara = Sarati | Sarb = Old South Arabian | Saur = Saurashtra | Sgnw = SignWriting | Shaw = Shavian (Shaw) | Shrd = Sharada, Śāradā | Shui = Shuishu | Sidd = Siddham, Siddhaṃ, Siddhamātṛkā | Sidt = Sidetic | Sind = Khudawadi, Sindhi | Sinh = Sinhala | Sogd = Sogdian | Sogo = Old Sogdian | Sora = Sora Sompeng | Soyo = Soyombo | Sund = Sundanese | Sunu = Sunuwar | Sylo = Syloti Nagri | Syrc = Syriac | Syre = Syriac (Estrangelo variant) | Syrj = Syriac (Western variant) | Syrn = Syriac (Eastern variant) | Tagb = Tagbanwa | Takr = Takri, Ṭākrī, Ṭāṅkrī | Tale = Tai Le | Talu = New Tai Lue | Taml = Tamil | Tang = Tangut | Tavt = Tai Viet | Tayo = Tai Yo | Telu = Telugu | Teng = Tengwar | Tfng = Tifinagh (Berber) | Tglg = Tagalog (Baybayin, Alibata) | Thaa = Thaana | Thai = Thai | Tibt = Tibetan | Tirh = Tirhuta | Tnsa = Tangsa | Todr = Todhri | Tols = Tolong Siki | Toto = Toto | Tutg = Tulu-Tigalari | Ugar = Ugaritic | Vaii = Vai | Visp = Visible Speech | Vith = Vithkuqi | Wara = Warang Citi (Varang Kshiti) | Wcho = Wancho | Wole = Woleai | Xpeo = Old Persian | Xsux = Cuneiform, Sumero-Akkadian | Yezi = Yezidi | Yiii = Yi | Zanb = Zanabazar Square (Zanabazarin Dörböljin Useg, Xewtee Dörböljin Bicig, Horizontal Square Script) | Zinh = Code for inherited script | Zmth = Mathematical notation | Zsye = Symbols (emoji variant) | Zsym = Symbols | Zxxx = Code for unwritten documents | Zyyy = Code for undetermined script | Zzzz = Code for uncoded script | #default = {{{default|}}} }}<noinclude> {{documentation}} </noinclude> 4916fd905002b84f32ac38b9f4b572dcc057406d Template:ISO 15924/wp-article 10 1594 2929 2023-09-25T03:46:14Z w>Drmccreedy 0 Update for 2023-09-12 update of ISO 15924 wikitext text/x-wiki {{ISO 15924/wp-article/format<!-- ISO 15924 as of 2023-09-12: 221 + Qaaa-Qabx codes--> |alpha4={{{alpha4|{{{1|}}}}}} |format={{{format|}}} |label={{{label|}}} |value={{#switch:{{{alpha4|{{{1|}}}}}} | Adlm = Adlam script | Afak = Afaka syllabary | Aghb = Caucasian Albanian script | Ahom = Ahom script | Arab = Arabic script | Aran = Nastaliq | Armi = Aramaic alphabet | Armn = Armenian alphabet | Avst = Avestan alphabet | Bali = Balinese script | Bamu = Bamum script | Bass = Bassa Vah script | Batk = Batak script | Beng = Bengali–Assamese script | Bhks = Bhaiksuki script | Blis = Blissymbols | Bopo = Bopomofo | Brah = Brahmi script | Brai = Braille | Bugi = Lontara script | Buhd = Buhid script | Cakm = Chakma script | Cans = Canadian Aboriginal syllabics | Cari = Carian alphabets | Cham = Cham script | Cher = Cherokee syllabary | Chis = Kurmali language | Chrs = Khwarezmian language#Writing system | Cirt = Cirth | Copt = Coptic alphabet | Cpmn = Cypro-Minoan syllabary | Cprt = Cypriot syllabary | Cyrl = Cyrillic script | Cyrs = Early Cyrillic alphabet | Deva = Devanagari | Diak = Dhives Akuru | Dogr = Namem Dogra Akkhar | Dsrt = Deseret alphabet | Dupl = Duployan shorthand | Egyd = Demotic (Egyptian) | Egyh = Hieratic | Egyp = Egyptian hieroglyphs | Elba = Elbasan script | Elym = Elymaic | Ethi = Geʽez script | Gara = Garay alphabet | Geok = Georgian scripts#Nuskhuri | Geor = Georgian scripts | Glag = Glagolitic script | Gong = Gunjala Gondi script | Gonm = Gondi writing#Masaram | Goth = Gothic alphabet | Gran = Grantha script | Grek = Greek alphabet | Gujr = Gujarati script | Gukh = Khema script | Guru = Gurmukhi | Hanb = Chinese characters | Hang = Hangul | Hani = Chinese characters | Hano = Hanunoo script | Hans = Simplified Chinese characters | Hant = Traditional Chinese characters | Hatr = Hatran Aramaic#Alphabet | Hebr = Hebrew alphabet | Hira = Hiragana | Hluw = Anatolian hieroglyphs | Hmng = Pahawh Hmong | Hmnp = Nyiakeng Puachue Hmong | Hrkt = Kana | Hung = Old Hungarian script | Inds = Indus script | Ital = Old Italic scripts | Jamo = Hangul#Letters | Java = Javanese script | Jpan = Japanese writing system | Jurc = Jurchen script | Kali = Kayah Li alphabet | Kana = Katakana | Kawi = Kawi script | Khar = Kharosthi | Khmr = Khmer script | Khoj = Khojki script | Kitl = Khitan large script | Kits = Khitan small script | Knda = Kannada script | Kore = Korean mixed script | Kpel = Kpelle syllabary | Krai = Bantawa language | Kthi = Kaithi | Lana = Tai Tham script | Laoo = Lao script | Latf = Fraktur | Latg = Gaelic type | Latn = Latin script | Leke = Leke script | Lepc = Lepcha script | Limb = Limbu script | Lina = Linear A | Linb = Linear B | Lisu = Fraser script | Loma = Loma language#Writing systems | Lyci = Lycian alphabet | Lydi = Lydian alphabet | Mahj = Mahajani | Maka = Makasar script | Mand = Mandaic alphabet | Mani = Manichaean script | Marc = Marchen script | Maya = Maya script | Medf = Medefaidrin | Mend = Mende Kikakui script | Merc = Meroitic script | Mero = Meroitic script | Mlym = Malayalam script | Modi = Modi script | Mong = Mongolian script | Moon = Moon type | Mroo = Mru language#Script | Mtei = Meitei script | Mult = Multani script | Mymr = Mon–Burmese script | Nagm = Mundari Bani | Nand = Nandinagari | Narb = Ancient North Arabian | Nbat = Nabataean alphabet | Newa = Pracalit script | Nkdb = Dongba symbols | Nkgb = Geba syllabary | Nkoo = N'Ko script | Nshu = Nüshu | Ogam = Ogham | Olck = Ol Chiki script | Onao = Ol Onal | Orkh = Old Turkic script | Orya = Odia script | Osge = Osage script | Osma = Osmanya script | Ougr = Old Uyghur alphabet | Palm = Palmyrene alphabet | Pauc = Pau Cin Hau script | Pcun = Proto-cuneiform numerals | Pelm = Proto-Elamite script | Perm = Old Permic script | Phag = ʼPhags-pa script | Phli = Inscriptional Pahlavi | Phlp = Psalter Pahlavi | Phlv = Pahlavi scripts#Book Pahlavi | Phnx = Phoenician alphabet | Piqd = Klingon scripts | Plrd = Pollard script | Prti = Inscriptional Parthian | Psin = Proto-Sinaitic script | Qaaa | Qaab | Qaac | Qaad | Qaae | Qaaf | Qaag | Qaah | Qaai | Qaaj | Qaak | Qaal | Qaam | Qaan | Qaao | Qaap | Qaaq | Qaar | Qaas | Qaat | Qaau | Qaav | Qaaw | Qaax | Qaay | Qaaz | Qaba | Qabb | Qabc | Qabd | Qabe | Qabf | Qabg | Qabh | Qabi | Qabj | Qabk | Qabl | Qabm | Qabn | Qabo | Qabp | Qabq | Qabr | Qabs | Qabt | Qabu | Qabv | Qabw | Qabx | Qaaa-Qabx | Qaaa–Qabx = ISO 15924#Special codes | Ranj = Rejang alphabet | Rjng = Rejang script | Rohg = Hanifi Rohingya script | Roro = Rongorongo | Runr = Runes | Samr = Samaritan script | Sara = Sarati | Sarb = Ancient South Arabian script | Saur = Saurashtra script | Sgnw = SignWriting | Shaw = Shavian alphabet | Shrd = Sharada script | Shui = Sui script | Sidd = Siddhaṃ script | Sidt = Sidetic language | Sind = Khudabadi script | Sinh = Sinhala script | Sogd = Sogdian alphabet | Sogo = Sogdian alphabet | Sora = Sorang Sompeng script | Soyo = Soyombo script | Sund = Sundanese script | Sunu = Sunuwar script | Sylo = Sylheti Nagri | Syrc = Syriac alphabet | Syre = Syriac alphabet#Estrangelo variant | Syrj = Syriac alphabet#Western variant | Syrn = Syriac alphabet#Eastern variant | Tagb = Tagbanwa script | Takr = Takri script | Tale = Tai Le script | Talu = New Tai Lue alphabet | Taml = Tamil script | Tang = Tangut script | Tavt = Tai Viet script | Tayo = Lai Tay script | Telu = Telugu script | Teng = Tengwar | Tfng = Tifinagh | Tglg = Baybayin | Thaa = Thaana | Thai = Thai script | Tibt = Tibetan script | Tirh = Tirhuta script | Tnsa = Tangsa language#Orthography | Todr = Todhri alphabet | Tols = Tolong Siki | Toto = Toto language#Writing system | Tutg = Tigalari script | Ugar = Ugaritic alphabet | Vaii = Vai syllabary | Visp = Visible Speech | Vith = Vithkuqi script | Wara = Warang Citi | Wcho = Wancho script | Wole = Woleai script | Xpeo = Old Persian cuneiform | Xsux = Cuneiform | Yezi = Kurdish alphabets#Yezidi | Yiii = Yi script | Zanb = Zanabazar square script | Zmth = Mathematical notation | Zsye = Emoji | Zsym = Symbol | Zinh | Zxxx | Zyyy | Zzzz = ISO 15924#Special codes | #default = {{{default|Writing system}}} }}}}<!-- --><noinclude>{{documentation}}</noinclude> ebe01f592e50f72d4a002d38d91cf91fb50dd984 Module:Citation/CS1/Configuration 828 880 1950 2023-09-25T12:02:29Z wikipedia>Trappist the monk 0 bump s2cid; Scribunto text/plain local lang_obj = mw.language.getContentLanguage(); -- make a language object for the local language; used here for languages and dates --[[--------------------------< S E T T I N G S >-------------------------------------------------------------- boolean settings used to control various things. these setting located here to make them easy to find ]] -- these settings local to this module only local local_digits_from_mediawiki = false; -- for i18n; when true, module fills date_names['local_digits'] from MediaWiki; manual fill required else; always false at en.wiki local local_date_names_from_mediawiki = false; -- for i18n; when true, module fills date_names['local']['long'] and date_names['local']['short'] from MediaWiki; -- manual translation required else; ; always false at en.wiki -- these settings exported to other modules local use_identifier_redirects = true; -- when true use redirect name for identifier label links; always true at en.wiki local local_lang_cat_enable = false; -- when true categorizes pages where |language=<local wiki's language>; always false at en.wiki local date_name_auto_xlate_enable = false; -- when true translates English month-names to the local-wiki's language month names; always false at en.wiki local date_digit_auto_xlate_enable = false; -- when true translates Western date digit to the local-wiki's language digits (date_names['local_digits']); always false at en.wiki --[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------ List of namespaces identifiers for namespaces that will not be included in citation error categories. Same as setting notracking = true by default. For wikis that have a current version of Module:cs1 documentation support, this #invoke will return an unordered list of namespace names and their associated identifiers: {{#invoke:cs1 documentation support|uncategorized_namespace_lister|all=<anything>}} ]] uncategorized_namespaces_t = {[2]=true}; -- init with user namespace id for k, _ in pairs (mw.site.talkNamespaces) do -- add all talk namespace ids uncategorized_namespaces_t[k] = true; end local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases', '/[^/]*[Ll]og', '/[Aa]rchive'}; -- list of Lua patterns found in page names of pages we should not categorize --[[--------------------------< M E S S A G E S >-------------------------------------------------------------- Translation table The following contains fixed text that may be output as part of a citation. This is separated from the main body to aid in future translations of this module. ]] local messages = { ['agency'] = '$1 $2', -- $1 is sepc, $2 is agency ['archived-dead'] = 'Archived from $1 on $2', ['archived-live'] = '$1 from the original on $2', ['archived-unfit'] = 'Archived from the original on ', ['archived'] = 'Archived', ['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword ['cartography'] = 'Cartography by $1', ['editor'] = 'ed.', ['editors'] = 'eds.', ['edition'] = '($1&nbsp;ed.)', ['episode'] = 'Episode $1', ['et al'] = 'et&nbsp;al.', ['in'] = 'In', -- edited works ['inactive'] = 'inactive', ['inset'] = '$1 inset', ['interview'] = 'Interviewed by $1', ['mismatch'] = '<code class="cs1-code">&#124;$1=</code> / <code class="cs1-code">&#124;$2=</code> mismatch', -- $1 is year param name; $2 is date param name ['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]:&nbsp;$1', ['notitle'] = 'No title', -- for |title=(()) and (in the future) |title=none ['original'] = 'the original', ['origdate'] = ' [$1]', ['published'] = ' (published $1)', ['retrieved'] = 'Retrieved $1', ['season'] = 'Season $1', ['section'] = '§&nbsp;$1', ['sections'] = '§§&nbsp;$1', ['series'] = '$1 $2', -- $1 is sepc, $2 is series ['seriesnum'] = 'Series $1', ['translated'] = 'Translated by $1', ['type'] = ' ($1)', -- for titletype ['written'] = 'Written at $1', ['vol'] = '$1 Vol.&nbsp;$2', -- $1 is sepc; bold journal style volume is in presentation{} ['vol-no'] = '$1 Vol.&nbsp;$2, no.&nbsp;$3', -- sepc, volume, issue (alternatively insert $1 after $2, but then we'd also have to change capitalization) ['issue'] = '$1 No.&nbsp;$2', -- $1 is sepc ['art'] = '$1 Art.&nbsp;$2', -- $1 is sepc; for {{cite conference}} only ['vol-art'] = '$1 Vol.&nbsp;$2, art.&nbsp;$3', -- sepc, volume, article-number; for {{cite conference}} only ['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{} ['j-issue'] = ' ($1)', ['j-article-num'] = ' $1', -- TODO: any punctuation here? static text? ['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc ['p-prefix'] = "$1 p.&nbsp;$2", -- $1 is sepc ['pp-prefix'] = "$1 pp.&nbsp;$2", -- $1 is sepc ['j-page(s)'] = ': $1', -- same for page and pages ['sheet'] = '$1 Sheet&nbsp;$2', -- $1 is sepc ['sheets'] = '$1 Sheets&nbsp;$2', -- $1 is sepc ['j-sheet'] = ': Sheet&nbsp;$1', ['j-sheets'] = ': Sheets&nbsp;$1', ['language'] = '(in $1)', ['via'] = " &ndash; via $1", ['event'] = 'Event occurs at', ['minutes'] = 'minutes in', -- Determines the location of the help page ['help page link'] = 'Help:CS1 errors', ['help page label'] = 'help', -- categories ['cat wikilink'] = '[[Category:$1]]', -- $1 is the category name [':cat wikilink'] = '[[:Category:$1|link]]', -- category name as maintenance message wikilink; $1 is the category name -- Internal errors (should only occur if configuration is bad) ['undefined_error'] = 'Called with an undefined error condition', ['unknown_ID_key'] = 'Unrecognized ID key: ', -- an ID key in id_handlers not found in ~/Identifiers func_map{} ['unknown_ID_access'] = 'Unrecognized ID access keyword: ', -- an ID access keyword in id_handlers not found in keywords_lists['id-access']{} ['unknown_argument_map'] = 'Argument map not defined for this variable', ['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty', ['warning_msg_e'] = '<span style="color:#d33">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">&#123;{$1}}</code> templates have errors</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link ['warning_msg_m'] = '<span style="color:#3a3">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">&#123;{$1}}</code> templates have maintenance messages</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link } --[[--------------------------< C I T A T I O N _ C L A S S _ M A P >------------------------------------------ this table maps the value assigned to |CitationClass= in the cs1|2 templates to the canonical template name when the value assigned to |CitationClass= is different from the canonical template name. |CitationClass= values are used as class attributes in the <cite> tag that encloses the citation so these names may not contain spaces while the canonical template name may. These names are used in warning_msg_e and warning_msg_m to create links to the template's documentation when an article is displayed in preview mode. Most cs1|2 template |CitationClass= values at en.wiki match their canonical template names so are not listed here. ]] local citation_class_map_t = { -- TODO: if kept, these and all other config.CitationClass 'names' require some sort of i18n ['arxiv'] = 'arXiv', ['audio-visual'] = 'AV media', ['AV-media-notes'] = 'AV media notes', ['biorxiv'] = 'bioRxiv', ['citeseerx'] = 'CiteSeerX', ['encyclopaedia'] = 'encyclopedia', ['mailinglist'] = 'mailing list', ['medrxiv'] = 'medRxiv', ['pressrelease'] = 'press release', ['ssrn'] = 'SSRN', ['techreport'] = 'tech report', } --[=[-------------------------< E T _ A L _ P A T T E R N S >-------------------------------------------------- This table provides Lua patterns for the phrase "et al" and variants in name text (author, editor, etc.). The main module uses these to identify and emit the 'etal' message. ]=] local et_al_patterns = { "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.;,\"']*$", -- variations on the 'et al' theme "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][AaIi][Ee]?[%.;,\"']*$", -- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match) "[;,]? *%f[%a]and [Oo]thers", -- an alternative to et al. "%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form "%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax) "[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form } --[[--------------------------< P R E S E N T A T I O N >------------------------ Fixed presentation markup. Originally part of citation_config.messages it has been moved into its own, more semantically correct place. ]] local presentation = { -- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display ['hidden-error'] = '<span class="cs1-hidden-error citation-comment">$1</span>', ['visible-error'] = '<span class="cs1-visible-error citation-comment">$1</span>', ['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>', ['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal CSS ['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like ['cite'] = '<cite class="$1">$2</cite>'; -- for use when citation does not have a namelist and |ref= not set so no id="..." attribute ['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when when |ref= is set or when citation has a namelist ['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc. ['interwiki'] = ' <span class="cs1-format">[in $1]</span>', -- for interwiki-language-linked author, editor, etc ['interproj'] = ' <span class="cs1-format">[at $1]</span>', -- for interwiki-project-linked author, editor, etc (:d: and :s: supported; :w: ignored) -- various access levels, for |access=, |doi-access=, |arxiv=, ... -- narrow no-break space &#8239; may work better than nowrap CSS. Or not? Browser support? ['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon ['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css ['registration'] = {class='cs1-lock-registration', title='Free registration required'}, ['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'}, ['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'}, ['interwiki-icon'] = '<span class="$1" title="$2">$3</span>', ['class-wikisource'] = 'cs1-ws-icon', ['italic-title'] = "''$1''", ['kern-left'] = '<span class="cs1-kern-left"></span>$1', -- spacing to use when title contains leading single or double quote mark ['kern-right'] = '$1<span class="cs1-kern-right"></span>', -- spacing to use when title contains trailing single or double quote mark ['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span> ['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space) ['ocins'] = '<span title="$1" class="Z3988"></span>', ['parameter'] = '<code class="cs1-code">&#124;$1=</code>', ['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character ['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string) ['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content ['quoted-title'] = '"$1"', ['sep_cs1'] = '.', -- CS1 element separator ['sep_cs2'] = ',', -- CS2 separator ['sep_nl'] = ';', -- CS1|2 style name-list separator between names is a semicolon ['sep_nl_and'] = ' and ', -- used as last nl sep when |name-list-style=and and list has 2 items ['sep_nl_end'] = '; and ', -- used as last nl sep when |name-list-style=and and list has 3+ names ['sep_name'] = ', ', -- CS1|2 style last/first separator is <comma><space> ['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma ['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space ['sep_list'] = ', ', -- used for |language= when list has 3+ items except for last sep which uses sep_list_end ['sep_list_pair'] = ' and ', -- used for |language= when list has 2 items ['sep_list_end'] = ', and ', -- used as last list sep for |language= when list has 3+ items ['trans-italic-title'] = "&#91;''$1''&#93;", ['trans-quoted-title'] = "&#91;$1&#93;", -- for |trans-title= and |trans-quote= ['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{} } --[[--------------------------< A L I A S E S >--------------------------------- Aliases table for commonly passed parameters. Parameter names on the right side in the assignments in this table must have been defined in the Whitelist before they will be recognized as valid parameter names ]] local aliases = { ['AccessDate'] = {'access-date', 'accessdate'}, -- Used by InternetArchiveBot ['Agency'] = 'agency', ['ArchiveDate'] = {'archive-date', 'archivedate'}, -- Used by InternetArchiveBot ['ArchiveFormat'] = 'archive-format', ['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- Used by InternetArchiveBot ['ArticleNumber'] = 'article-number', ['ASINTLD'] = 'asin-tld', ['At'] = 'at', -- Used by InternetArchiveBot ['Authors'] = {'authors', 'people', 'credits'}, ['BookTitle'] = {'book-title', 'booktitle'}, ['Cartography'] = 'cartography', ['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'}, ['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format', 'article-format', 'section-format'}; ['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl'}, -- Used by InternetArchiveBot ['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access', 'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot ['Class'] = 'class', -- cite arxiv and arxiv identifier ['Collaboration'] = 'collaboration', ['Conference'] = {'conference', 'event'}, ['ConferenceFormat'] = 'conference-format', ['ConferenceURL'] = 'conference-url', -- Used by InternetArchiveBot ['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only ['Degree'] = 'degree', ['DF'] = 'df', ['DisplayAuthors'] = {'display-authors', 'display-subjects'}, ['DisplayContributors'] = 'display-contributors', ['DisplayEditors'] = 'display-editors', ['DisplayInterviewers'] = 'display-interviewers', ['DisplayTranslators'] = 'display-translators', ['Docket'] = 'docket', ['DoiBroken'] = 'doi-broken-date', ['Edition'] = 'edition', ['Embargo'] = 'pmc-embargo-date', ['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only ['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode? ['Format'] = 'format', ['ID'] = {'id', 'ID'}, ['Inset'] = 'inset', ['Issue'] = {'issue', 'number'}, ['Language'] = {'language', 'lang'}, ['MailingList'] = {'mailing-list', 'mailinglist'}, -- cite mailing list only ['Map'] = 'map', -- cite map only ['MapFormat'] = 'map-format', -- cite map only ['MapURL'] = {'map-url', 'mapurl'}, -- cite map only -- Used by InternetArchiveBot ['MapUrlAccess'] = 'map-url-access', -- cite map only -- Used by InternetArchiveBot ['Minutes'] = 'minutes', ['Mode'] = 'mode', ['NameListStyle'] = 'name-list-style', ['Network'] = 'network', ['Newsgroup'] = 'newsgroup', -- cite newsgroup only ['NoPP'] = {'no-pp', 'nopp'}, ['NoTracking'] = {'no-tracking', 'template-doc-demo'}, ['Number'] = 'number', -- this case only for cite techreport ['OrigDate'] = {'orig-date', 'orig-year', 'origyear'}, ['Others'] = 'others', ['Page'] = {'page', 'p'}, -- Used by InternetArchiveBot ['Pages'] = {'pages', 'pp'}, -- Used by InternetArchiveBot ['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work'}, ['Place'] = {'place', 'location'}, ['PostScript'] = 'postscript', ['PublicationDate'] = {'publication-date', 'publicationdate'}, ['PublicationPlace'] = {'publication-place', 'publicationplace'}, ['PublisherName'] = {'publisher', 'institution'}, ['Quote'] = {'quote', 'quotation'}, ['QuotePage'] = 'quote-page', ['QuotePages'] = 'quote-pages', ['Ref'] = 'ref', ['Scale'] = 'scale', ['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry', 'script-article', 'script-section'}, ['ScriptMap'] = 'script-map', ['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-website', 'script-work'}, ['ScriptQuote'] = 'script-quote', ['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot ['Season'] = 'season', ['Sections'] = 'sections', -- cite map only ['Series'] = {'series', 'version'}, ['SeriesLink'] = {'series-link', 'serieslink'}, ['SeriesNumber'] = {'series-number', 'series-no'}, ['Sheet'] = 'sheet', -- cite map only ['Sheets'] = 'sheets', -- cite map only ['Station'] = 'station', ['Time'] = 'time', ['TimeCaption'] = 'time-caption', ['Title'] = 'title', -- Used by InternetArchiveBot ['TitleLink'] = {'title-link', 'episode-link', 'episodelink'}, -- Used by InternetArchiveBot ['TitleNote'] = {'title-note', 'department'}, ['TitleType'] = {'type', 'medium'}, ['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution', 'trans-entry', 'trans-section'}, ['Transcript'] = 'transcript', ['TranscriptFormat'] = 'transcript-format', ['TranscriptURL'] = 'transcript-url', -- Used by InternetArchiveBot ['TransMap'] = 'trans-map', -- cite map only ['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper', 'trans-periodical', 'trans-website', 'trans-work'}, ['TransQuote'] = 'trans-quote', ['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot ['URL'] = {'url', 'URL'}, -- Used by InternetArchiveBot ['UrlAccess'] = 'url-access', -- Used by InternetArchiveBot ['UrlStatus'] = 'url-status', -- Used by InternetArchiveBot ['Vauthors'] = 'vauthors', ['Veditors'] = 'veditors', ['Via'] = 'via', ['Volume'] = 'volume', ['Year'] = 'year', ['AuthorList-First'] = {"first#", "author-first#", "author#-first", "author-given#", "author#-given", "subject-first#", "subject#-first", "subject-given#", "subject#-given", "given#"}, ['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "author-surname#", "author#-surname", "subject-last#", "subject#-last", "subject-surname#", "subject#-surname", "author#", 'host#', "subject#", "surname#"}, ['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#", "subject#-link", "authorlink#", "author#link"}, ['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask"}, ['ContributorList-First'] = {'contributor-first#', 'contributor#-first', 'contributor-given#', 'contributor#-given'}, ['ContributorList-Last'] = {'contributor-last#', 'contributor#-last', 'contributor-surname#', 'contributor#-surname', 'contributor#'}, ['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'}, ['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'}, ['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"}, ['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#", "editor#-surname", "editor#"}, ['EditorList-Link'] = {"editor-link#", "editor#-link"}, ['EditorList-Mask'] = {"editor-mask#", "editor#-mask"}, ['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first', 'interviewer-given#', 'interviewer#-given'}, ['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last', 'interviewer-surname#', 'interviewer#-surname', 'interviewer#'}, ['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'}, ['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'}, ['TranslatorList-First'] = {'translator-first#', 'translator#-first', 'translator-given#', 'translator#-given'}, ['TranslatorList-Last'] = {'translator-last#', 'translator#-last', 'translator-surname#', 'translator#-surname', 'translator#'}, ['TranslatorList-Link'] = {'translator-link#', 'translator#-link'}, ['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'}, } --[[--------------------------< P U N C T _ S K I P >--------------------------- builds a table of parameter names that the extraneous terminal punctuation check should not check. ]] local punct_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value 'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters 'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators 'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous 'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'MapURL', 'TranscriptURL', 'URL', -- URL-holding parameters } local url_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value 'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'ID', 'MapURL', 'TranscriptURL', 'URL', -- parameters allowed to hold urls 'Page', 'Pages', 'At', 'QuotePage', 'QuotePages', -- insource locators allowed to hold urls } local function build_skip_table (skip_t, meta_params) for _, meta_param in ipairs (meta_params) do -- for each meta parameter key local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name if 'string' == type (params) then skip_t[params] = 1; -- just a single parameter else for _, param in ipairs (params) do -- get the parameter name skip_t[param] = 1; -- add the parameter name to the skip table local count; param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters if 0 ~= count then -- if removed skip_t[param] = 1; -- add param name without enumerator marker end end end end return skip_t; end local punct_skip = {}; local url_skip = {}; --[[--------------------------< S I N G L E - L E T T E R S E C O N D - L E V E L D O M A I N S >---------- this is a list of tlds that are known to have single-letter second-level domain names. This list does not include ccTLDs which are accepted in is_domain_name(). ]] local single_letter_2nd_lvl_domains_t = {'cash', 'company', 'foundation', 'org', 'today'}; --[[-----------< S P E C I A L C A S E T R A N S L A T I O N S >------------ This table is primarily here to support internationalization. Translations in this table are used, for example, when an error message, category name, etc., is extracted from the English alias key. There may be other cases where this translation table may be useful. ]] local is_Latn = 'A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143'; local special_case_translation = { ['AuthorList'] = 'authors list', -- used to assemble maintenance category names ['ContributorList'] = 'contributors list', -- translation of these names plus translation of the base maintenance category names in maint_cats{} table below ['EditorList'] = 'editors list', -- must match the names of the actual categories ['InterviewerList'] = 'interviewers list', -- this group or translations used by name_has_ed_markup() and name_has_mult_names() ['TranslatorList'] = 'translators list', -- Lua patterns to match pseudo-titles used by InternetArchiveBot and others as placeholder for unknown |title= value ['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title ['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki ['local'] = nil, -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language }, -- Lua patterns to match generic titles; usually created by bots or reference filling tools -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language -- generic titles and patterns in this table should be lowercase only -- leave ['local'] nil except when there is a matching generic title in your language -- boolean 'true' for plain-text searches; 'false' for pattern searches ['generic_titles'] = { ['accept'] = { }, ['reject'] = { {['en'] = {'^wayback%s+machine$', false}, ['local'] = nil}, {['en'] = {'are you a robot', true}, ['local'] = nil}, {['en'] = {'hugedomains.com', true}, ['local'] = nil}, {['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil}, {['en'] = {'page not found', true}, ['local'] = nil}, {['en'] = {'subscribe to read', true}, ['local'] = nil}, {['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil}, {['en'] = {'website is for sale', true}, ['local'] = nil}, {['en'] = {'^404', false}, ['local'] = nil}, {['en'] = {'internet archive wayback machine', true}, ['local'] = nil}, {['en'] = {'log into facebook', true}, ['local'] = nil}, {['en'] = {'login • instagram', true}, ['local'] = nil}, {['en'] = {'redirecting...', true}, ['local'] = nil}, {['en'] = {'usurped title', true}, ['local'] = nil}, -- added by a GreenC bot {['en'] = {'webcite query result', true}, ['local'] = nil}, {['en'] = {'wikiwix\'s cache', true}, ['local'] = nil}, } }, -- boolean 'true' for plain-text searches, search string must be lowercase only -- boolean 'false' for pattern searches -- leave ['local'] nil except when there is a matching generic name in your language ['generic_names'] = { ['accept'] = { {['en'] = {'%[%[[^|]*%(author%) *|[^%]]*%]%]', false}, ['local'] = nil}, }, ['reject'] = { {['en'] = {'about us', true}, ['local'] = nil}, {['en'] = {'%f[%a][Aa]dvisor%f[%A]', false}, ['local'] = nil}, {['en'] = {'allmusic', true}, ['local'] = nil}, {['en'] = {'%f[%a][Aa]uthor%f[%A]', false}, ['local'] = nil}, {['en'] = {'business', true}, ['local'] = nil}, {['en'] = {'cnn', true}, ['local'] = nil}, {['en'] = {'collaborator', true}, ['local'] = nil}, {['en'] = {'contributor', true}, ['local'] = nil}, {['en'] = {'contact us', true}, ['local'] = nil}, {['en'] = {'directory', true}, ['local'] = nil}, {['en'] = {'%f[%(%[][%(%[]%s*eds?%.?%s*[%)%]]?$', false}, ['local'] = nil}, {['en'] = {'[,%.%s]%f[e]eds?%.?$', false}, ['local'] = nil}, {['en'] = {'^eds?[%.,;]', false}, ['local'] = nil}, {['en'] = {'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', false}, ['local'] = nil}, {['en'] = {'%f[%a][Ee]dited%f[%A]', false}, ['local'] = nil}, {['en'] = {'%f[%a][Ee]ditors?%f[%A]', false}, ['local'] = nil}, {['en'] = {'%f[%a]]Ee]mail%f[%A]', false}, ['local'] = nil}, {['en'] = {'facebook', true}, ['local'] = nil}, {['en'] = {'google', true}, ['local'] = nil}, {['en'] = {'home page', true}, ['local'] = nil}, {['en'] = {'^[Ii]nc%.?$', false}, ['local'] = nil}, {['en'] = {'instagram', true}, ['local'] = nil}, {['en'] = {'interviewer', true}, ['local'] = nil}, {['en'] = {'linkedIn', true}, ['local'] = nil}, {['en'] = {'^[Nn]ews$', false}, ['local'] = nil}, {['en'] = {'pinterest', true}, ['local'] = nil}, {['en'] = {'policy', true}, ['local'] = nil}, {['en'] = {'privacy', true}, ['local'] = nil}, {['en'] = {'reuters', true}, ['local'] = nil}, {['en'] = {'translator', true}, ['local'] = nil}, {['en'] = {'tumblr', true}, ['local'] = nil}, {['en'] = {'twitter', true}, ['local'] = nil}, {['en'] = {'site name', true}, ['local'] = nil}, {['en'] = {'statement', true}, ['local'] = nil}, {['en'] = {'submitted', true}, ['local'] = nil}, {['en'] = {'super.?user', false}, ['local'] = nil}, {['en'] = {'%f['..is_Latn..'][Uu]ser%f[^'..is_Latn..']', false}, ['local'] = nil}, {['en'] = {'verfasser', true}, ['local'] = nil}, } } } --[[--------------------------< D A T E _ N A M E S >---------------------------------------------------------- This table of tables lists local language date names and fallback English date names. The code in Date_validation will look first in the local table for valid date names. If date names are not found in the local table, the code will look in the English table. Because citations can be copied to the local wiki from en.wiki, the English is required when the date-name translation function date_name_xlate() is used. In these tables, season numbering is defined by Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. CS1|2 only supports generic seasons. EDTF does support the distinction between north and south hemisphere seasons but CS1|2 has no way to make that distinction. 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) The standard does not address 'named' dates so, for the purposes of CS1|2, Easter and Christmas are defined here as 98 and 99, which should be out of the ISO 8601 (EDTF) range of uses for a while. local_date_names_from_mediawiki is a boolean. When set to: true – module will fetch local month names from MediaWiki for both date_names['local']['long'] and date_names['local']['short'] false – module will *not* fetch local month names from MediaWiki Caveat lector: There is no guarantee that MediaWiki will provide short month names. At your wiki you can test the results of the MediaWiki fetch in the debug console with this command (the result is alpha sorted): =mw.dumpObject (p.date_names['local']) While the module can fetch month names from MediaWiki, it cannot fetch the quarter, season, and named date names from MediaWiki. Those must be translated manually. ]] local local_date_names_from_mediawiki = true; -- when false, manual translation required for date_names['local']['long'] and date_names['local']['short'] -- when true, module fetches long and short month names from MediaWiki local date_names = { ['en'] = { -- English ['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12}, ['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12}, ['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36}, ['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23}, ['named'] = {['Easter'] = 98, ['Christmas'] = 99}, }, -- when local_date_names_from_mediawiki = false ['local'] = { -- replace these English date names with the local language equivalents ['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12}, ['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12}, ['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36}, ['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23}, ['named'] = {['Easter'] = 98, ['Christmas'] = 99}, }, ['inv_local_long'] = {}, -- used in date reformatting & translation; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc. ['inv_local_short'] = {}, -- used in date reformatting & translation; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc. ['inv_local_quarter'] = {}, -- used in date translation; copy of date_names['local'].quarter where k/v are inverted: [1]='<local name>' etc. ['inv_local_season'] = {}, -- used in date translation; copy of date_names['local'].season where k/v are inverted: [1]='<local name>' etc. ['inv_local_named'] = {}, -- used in date translation; copy of date_names['local'].named where k/v are inverted: [1]='<local name>' etc. ['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9 ['xlate_digits'] = {}, } if local_date_names_from_mediawiki then -- if fetching local month names from MediaWiki is enabled local long_t = {}; local short_t = {}; for i=1, 12 do -- loop 12x and local name = lang_obj:formatDate('F', '2022-' .. i .. '-1'); -- get long month name for each i long_t[name] = i; -- save it name = lang_obj:formatDate('M', '2022-' .. i .. '-1'); -- get short month name for each i short_t[name] = i; -- save it end date_names['local']['long'] = long_t; -- write the long table – overwrites manual translation date_names['local']['short'] = short_t; -- write the short table – overwrites manual translation end -- create inverted date-name tables for reformatting and/or translation for _, invert_t in pairs {{'long', 'inv_local_long'}, {'short', 'inv_local_short'}, {'quarter', 'inv_local_quarter'}, {'season', 'inv_local_season'}, {'named', 'inv_local_named'}} do for name, i in pairs (date_names['local'][invert_t[1]]) do -- this table is ['name'] = i date_names[invert_t[2]][i] = name; -- invert to get [i] = 'name' for conversions from ymd end end if local_digits_from_mediawiki then -- if fetching local digits from MediaWiki is enabled local digits_t = {}; for i=0, 9 do -- loop 10x and digits_t [lang_obj:formatNum (i)] = tostring (i); -- format the loop indexer as local lang table index and assign loop indexer (a string) as the value end date_names['local_digits'] = digits_t; end for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value end local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}} '{{ *[Uu]se +(dmy) +dates *[|}]', -- 1159k -- sorted by approximate transclusion count '{{ *[Uu]se +(mdy) +dates *[|}]', -- 212k '{{ *[Uu]se +(MDY) +dates *[|}]', -- 788 '{{ *[Uu]se +(DMY) +dates *[|}]', -- 343 '{{ *([Mm]dy) *[|}]', -- 176 '{{ *[Uu]se *(dmy) *[|}]', -- 156 + 18 '{{ *[Uu]se *(mdy) *[|}]', -- 149 + 11 '{{ *([Dd]my) *[|}]', -- 56 '{{ *[Uu]se +(MDY) *[|}]', -- 5 '{{ *([Dd]MY) *[|}]', -- 3 '{{ *[Uu]se(mdy)dates *[|}]', -- 1 '{{ *[Uu]se +(DMY) *[|}]', -- 0 '{{ *([Mm]DY) *[|}]', -- 0 } local title_object = mw.title.getCurrentTitle(); local content; -- done this way so that unused templates appear in unused-template-reports; self-transcluded makes them look like they are used if 10 ~= title_object.namespace then -- all namespaces except Template content = title_object:getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625 end local function get_date_format () -- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports; if not content then -- nil content when we're in template return nil; -- auto-formatting does not work in Template space so don't set global_df end for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format if match then local use_dates_template = content:match ('%b{}', start); -- get the whole template if use_dates_template:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length return match:lower() .. '-' .. use_dates_template:match ('| *cs1%-dates *= *([lsy][sy]?)'); else return match:lower() .. '-all'; -- no |cs1-dates= k/v pair; return value appropriate for use in |df= end end end end local global_df; -- TODO: add this to <global_cs1_config_t>? --[[-----------------< V O L U M E , I S S U E , P A G E S >------------------ These tables hold cite class values (from the template invocation) and identify those templates that support |volume=, |issue=, and |page(s)= parameters. Cite conference and cite map require further qualification which is handled in the main module. ]] local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'} local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'} local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'} --[[ These tables control when it is appropriate for {{citation}} to render |volume= and/or |issue=. The parameter names in the tables constrain {{citation}} so that its renderings match the renderings of the equivalent cs1 templates. For example, {{cite web}} does not support |volume= so the equivalent {{citation |website=...}} must not support |volume=. ]] local citation_no_volume_t = { -- {{citation}} does not render |volume= when these parameters are used 'website', 'mailinglist', 'script-website', } local citation_issue_t = { -- {{citation}} may render |issue= when these parameters are used 'journal', 'magazine', 'newspaper', 'periodical', 'work', 'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work', } --[[ Patterns for finding extra text in |volume=, |issue=, |page=, |pages= ]] local vol_iss_pg_patterns = { good_ppattern = '^P[^%.PpGg]', -- OK to begin with uppercase P: P7 (page 7 of section P), but not p123 (page 123); TODO: this allows 'Pages' which it should not bad_ppatterns = { -- patterns for |page= and |pages= '^[Pp][PpGg]?%.?[ %d]', '^[Pp][Pp]?%.&nbsp;', -- from {{p.}} and {{pp.}} templates '^[Pp]ages?', '^[Pp]gs.?', }, vpatterns = { -- patterns for |volume= '^volumes?', '^vols?[%.:=]?' }, ipatterns = { -- patterns for |issue= '^issues?', '^iss[%.:=]?', '^numbers?', '^nos?%A', -- don't match 'november' or 'nostradamus' '^nr[%.:=]?', '^n[%.:= ]' -- might be a valid issue without separator (space char is sep char here) } } --[[--------------------------< K E Y W O R D S >------------------------------- These tables hold keywords for those parameters that have defined sets of acceptable keywords. ]] --[[-------------------< K E Y W O R D S T A B L E >-------------------------- this is a list of keywords; each key in the list is associated with a table of synonymous keywords possibly from different languages. for I18N: add local-language keywords to value table; do not change the key. For example, adding the German keyword 'ja': ['affirmative'] = {'yes', 'true', 'y', 'ja'}, Because CS1|2 templates from en.wiki articles are often copied to other local wikis, it is recommended that the English keywords remain in these tables. ]] local keywords = { ['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style= ['and'] = {'and', 'serial'}, -- |name-list-style= ['affirmative'] = {'yes', 'true', 'y'}, -- |no-tracking=, |no-pp= -- Used by InternetArchiveBot ['afterword'] = {'afterword'}, -- |contribution= ['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot ['cs1'] = {'cs1'}, -- |mode= ['cs2'] = {'cs2'}, -- |mode= ['dead'] = {'dead', 'deviated'}, -- |url-status= -- Used by InternetArchiveBot ['dmy'] = {'dmy'}, -- |df= ['dmy-all'] = {'dmy-all'}, -- |df= ['foreword'] = {'foreword'}, -- |contribution= ['free'] = {'free'}, -- |<id>-access= -- Used by InternetArchiveBot ['harv'] = {'harv'}, -- |ref=; this no longer supported; is_valid_parameter_value() called with <invert> = true ['introduction'] = {'introduction'}, -- |contribution= ['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot ['live'] = {'live'}, -- |url-status= -- Used by InternetArchiveBot ['mdy'] = {'mdy'}, -- |df= ['mdy-all'] = {'mdy-all'}, -- |df= ['none'] = {'none'}, -- |postscript=, |ref=, |title=, |type= -- Used by InternetArchiveBot ['off'] = {'off'}, -- |title= (potentially also: |title-link=, |postscript=, |ref=, |type=) ['preface'] = {'preface'}, -- |contribution= ['registration'] = {'registration'}, -- |url-access= -- Used by InternetArchiveBot ['subscription'] = {'subscription'}, -- |url-access= -- Used by InternetArchiveBot ['unfit'] = {'unfit'}, -- |url-status= -- Used by InternetArchiveBot ['usurped'] = {'usurped'}, -- |url-status= -- Used by InternetArchiveBot ['vanc'] = {'vanc'}, -- |name-list-style= ['ymd'] = {'ymd'}, -- |df= ['ymd-all'] = {'ymd-all'}, -- |df= -- ['yMd'] = {'yMd'}, -- |df=; not supported at en.wiki -- ['yMd-all'] = {'yMd-all'}, -- |df=; not supported at en.wiki } --[[------------------------< X L A T E _ K E Y W O R D S >--------------------- this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{} become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}: ['affirmative'] = {'yes', 'true', 'y'}, -- in keywords{} becomes ['yes'] = 'affirmative', -- in keywords_xlate{} ['true'] = 'affirmative', ['y'] = 'affirmative', the purpose of this function is to act as a translator between a non-English keyword and its English equivalent that may be used in other modules of this suite ]] local function xlate_keywords () local out_table = {}; -- output goes here for k, keywords_t in pairs (keywords) do -- spin through the keywords table for _, keyword in ipairs (keywords_t) do -- for each keyword out_table[keyword] = k; -- create an entry in the output table where keyword is the key end end return out_table; end local keywords_xlate = xlate_keywords (); -- the list of translated keywords --[[----------------< M A K E _ K E Y W O R D S _ L I S T >--------------------- this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter. keywords_lists{}, is a table of tables from keywords{} ]] local function make_keywords_list (keywords_lists) local out_table = {}; -- output goes here for _, keyword_list in ipairs (keywords_lists) do -- spin through keywords_lists{} and get a table of keywords for _, keyword in ipairs (keyword_list) do -- spin through keyword_list{} and add each keyword, ... table.insert (out_table, keyword); -- ... as plain text, to the output list end end return out_table; end --[[----------------< K E Y W O R D S _ L I S T S >----------------------------- this is a list of lists of valid keywords for the various parameters in [key]. Generally the keys in this table are the canonical en.wiki parameter names though some are contrived because of use in multiple differently named parameters: ['yes_true_y'], ['id-access']. The function make_keywords_list() extracts the individual keywords from the appropriate list in keywords{}. The lists in this table are used to validate the keyword assignment for the parameters named in this table's keys. ]] local keywords_lists = { ['yes_true_y'] = make_keywords_list ({keywords.affirmative}), ['contribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}), ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all']}), -- ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all'], keywords.yMd, keywords['yMd-all']}), -- not supported at en.wiki ['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}), ['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}), ['ref'] = make_keywords_list ({keywords.harv}), -- inverted check; |ref=harv no longer supported ['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}), ['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}), ['id-access'] = make_keywords_list ({keywords.free}), } --[[--------------------------< C S 1 _ C O N F I G _ G E T >-------------------------------------------------- fetch and validate values from {{cs1 config}} template to fill <global_cs1_config_t> no error messages; when errors are detected, the parameter value from {{cs1 config}} is blanked. Supports all parameters and aliases associated with the metaparameters: DisplayAuthors, DisplayContributors, DisplayEditors, DisplayInterviewers, DisplayTranslators, NameListStyle, and Mode. The DisplayWhatever metaparameters accept numeric values only (|display-authors=etal and the like is not supported). ]] local global_cs1_config_t = {}; -- TODO: add value returned from get_date_format() to this table? local function get_cs1_config () -- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports; if not content then -- nil content when we're in template return nil; -- auto-formatting does not work in Template space so don't set global_df end local start = content:find('{{ *[Cc][Ss]1 config *[|}]'); -- <start> is offset into <content> when {{cs1 config}} found; nil else if start then local cs1_config_template = content:match ('%b{}', start); -- get the whole template if not cs1_config_template then return nil; end local params_t = mw.text.split (cs1_config_template:gsub ('^{{%s*', ''):gsub ('%s*}}$', ''), '%s*|%s*'); -- remove '{{' and '}}'; make a sequence of parameter/value pairs (split on the pipe) table.remove (params_t, 1); -- remove the template name because it isn't a parameter/value pair local config_meta_params_t = {'DisplayAuthors', 'DisplayContributors', 'DisplayEditors', 'DisplayInterviewers', 'DisplayTranslators', 'NameListStyle', 'Mode'}; local meta_param_map_t = {}; -- list of accepted parameter names usable in {{cs1 config}} goes here for _, meta_param in ipairs (config_meta_params_t) do -- for i18n using <config_meta_params_t>, map template parameter names to their metaparameter equivalents if 'table' == type (aliases[meta_param]) then -- if <meta_param> is a sequence, for _, param in ipairs (aliases[meta_param]) do -- extract its contents meta_param_map_t[param] = meta_param; -- and add to <meta_param_map_t> end else meta_param_map_t[aliases[meta_param]] = meta_param; -- not a sequence so just add the parameter to <meta_param_map_t> end end local keywords_t = {}; -- map valid keywords to their associate metaparameter; reverse form of <keyword_lists[key] for these metaparameters for _, metaparam_t in ipairs ({{'NameListStyle', 'name-list-style'}, {'Mode', 'mode'}}) do -- only these metaparameter / keywords_lists key pairs for _, keyword in ipairs (keywords_lists[metaparam_t[2]]) do -- spin through the list of keywords keywords_t[keyword] = metaparam_t[1]; -- add [keyword] = metaparameter to the map end end for _, param in ipairs (params_t) do -- spin through the {{cs1 config}} parameters and fill <global_cs1_config_t> local k, v = param:match ('([^=]-)%s*=%s*(.+)'); -- <k> is the parameter name; <v> is parameter's assigned value if k then if k:find ('^display') then -- if <k> is one of the |display-<namelist>= parameters if v:match ('%d+') then -- the assigned value must be digits; doesn't accept 'etal' global_cs1_config_t[meta_param_map_t[k]]=v; -- add the display param and its value to globals table end else if keywords_t[v] == meta_param_map_t[k] then -- keywords_t[v] returns nil or the metaparam name; these must be the same global_cs1_config_t[meta_param_map_t[k]]=v; -- add the parameter and its value to globals table end end end end end end get_cs1_config (); -- fill <global_cs1_config_t> --[[---------------------< S T R I P M A R K E R S >---------------------------- Common pattern definition location for stripmarkers so that we don't have to go hunting for them if (when) MediaWiki changes their form. ]] local stripmarkers = { ['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker ['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker() } --[[------------< I N V I S I B L E _ C H A R A C T E R S >--------------------- This table holds non-printing or invisible characters indexed either by name or by Unicode group. Values are decimal representations of UTF-8 codes. The table is organized as a table of tables because the Lua pairs keyword returns table data in an arbitrary order. Here, we want to process the table from top to bottom because the entries at the top of the table are also found in the ranges specified by the entries at the bottom of the table. Also here is a pattern that recognizes stripmarkers that begin and end with the delete characters. The nowiki stripmarker is not an error but some others are because the parameter values that include them become part of the template's metadata before stripmarker replacement. ]] local invisible_defs = { del = '\127', -- used to distinguish between stripmarker and del char zwj = '\226\128\141', -- used with capture because zwj may be allowed } local invisible_chars = { {'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD {'zero width joiner', '('.. invisible_defs.zwj .. ')'}, -- U+200D, E2 80 8D; capture because zwj may be allowed {'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B {'hair space', '\226\128\138'}, -- U+200A, E2 80 8A {'soft hyphen', '\194\173'}, -- U+00AD, C2 AD {'horizontal tab', '\009'}, -- U+0009 (HT), 09 {'line feed', '\010'}, -- U+000A (LF), 0A {'no-break space', '\194\160'}, -- U+00A0 (NBSP), C2 A0 {'carriage return', '\013'}, -- U+000D (CR), 0D {'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type {'delete', '('.. invisible_defs.del .. ')'}, -- U+007F (DEL), 7F; must be done after stripmarker test; capture to distinguish isolated del chars not part of stripmarker {'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D)) {'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F -- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF -- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF -- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD -- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD } --[[ Indic script makes use of zero width joiner as a character modifier so zwj characters must be left in. This pattern covers all of the unicode characters for these languages: Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf plus the not-necessarily Indic scripts for Sinhala and Burmese: Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf the pattern is used by has_invisible_chars() and coins_cleanup() ]] local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]'; -- list of emoji that use a zwj character (U+200D) to combine with another emoji -- from: https://unicode.org/Public/emoji/15.0/emoji-zwj-sequences.txt; version: 15.0; 2022-05-06 -- table created by: [[:en:Module:Make emoji zwj table]] local emoji_t = { -- indexes are decimal forms of the hex values in U+xxxx [9760] = true, -- U+2620 ☠ skull and crossbones [9792] = true, -- U+2640 ♀ female sign [9794] = true, -- U+2642 ♂ male sign [9877] = true, -- U+2695 ⚕ staff of aesculapius [9878] = true, -- U+2696 ⚖ scales [9895] = true, -- U+26A7 ⚧ male with stroke and male and female sign [9992] = true, -- U+2708 ✈ airplane [10052] = true, -- U+2744 ❄ snowflake [10084] = true, -- U+2764 ❤ heavy black heart [11035] = true, -- U+2B1B ⬛ black large square [127752] = true, -- U+1F308 🌈 rainbow [127787] = true, -- U+1F32B 🌫 fog [127806] = true, -- U+1F33E 🌾 ear of rice [127859] = true, -- U+1F373 🍳 cooking [127868] = true, -- U+1F37C 🍼 baby bottle [127876] = true, -- U+1F384 🎄 christmas tree [127891] = true, -- U+1F393 🎓 graduation cap [127908] = true, -- U+1F3A4 🎤 microphone [127912] = true, -- U+1F3A8 🎨 artist palette [127979] = true, -- U+1F3EB 🏫 school [127981] = true, -- U+1F3ED 🏭 factory [128102] = true, -- U+1F466 👦 boy [128103] = true, -- U+1F467 👧 girl [128104] = true, -- U+1F468 👨 man [128105] = true, -- U+1F469 👩 woman [128139] = true, -- U+1F48B 💋 kiss mark [128168] = true, -- U+1F4A8 💨 dash symbol [128171] = true, -- U+1F4AB 💫 dizzy symbol [128187] = true, -- U+1F4BB 💻 personal computer [128188] = true, -- U+1F4BC 💼 brief case [128293] = true, -- U+1F525 🔥 fire [128295] = true, -- U+1F527 🔧 wrench [128300] = true, -- U+1F52C 🔬 microscope [128488] = true, -- U+1F5E8 🗨 left speech bubble [128640] = true, -- U+1F680 🚀 rocket [128658] = true, -- U+1F692 🚒 fire engine [129309] = true, -- U+1F91D 🤝 handshake [129455] = true, -- U+1F9AF 🦯 probing cane [129456] = true, -- U+1F9B0 🦰 emoji component red hair [129457] = true, -- U+1F9B1 🦱 emoji component curly hair [129458] = true, -- U+1F9B2 🦲 emoji component bald [129459] = true, -- U+1F9B3 🦳 emoji component white hair [129466] = true, -- U+1F9BA 🦺 safety vest [129468] = true, -- U+1F9BC 🦼 motorized wheelchair [129469] = true, -- U+1F9BD 🦽 manual wheelchair [129489] = true, -- U+1F9D1 🧑 adult [129657] = true, -- U+1FA79 🩹 adhesive bandage [129778] = true, -- U+1FAF2 🫲 leftwards hand } --[[----------------------< L A N G U A G E S U P P O R T >------------------- These tables and constants support various language-specific functionality. ]] --local this_wiki_code = mw.getContentLanguage():getCode(); -- get this wiki's language code local this_wiki_code = lang_obj:getCode(); -- get this wiki's language code if string.match (mw.site.server, 'wikidata') then this_wiki_code = mw.getCurrentFrame():callParserFunction('int', {'lang'}); -- on Wikidata so use interface language setting instead end local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a table of language tag/name pairs known to Wikimedia; used for interwiki tests local mw_languages_by_name_t = {}; for k, v in pairs (mw_languages_by_tag_t) do -- build a 'reversed' table name/tag language pairs know to MediaWiki; used for |language= v = mw.ustring.lower (v); -- lowercase for tag fetch; get name's proper case from mw_languages_by_tag_t[<tag>] if mw_languages_by_name_t[v] then -- when name already in the table if 2 == #k or 3 == #k then -- if tag does not have subtags mw_languages_by_name_t[v] = k; -- prefer the shortest tag for this name end else -- here when name not in the table mw_languages_by_name_t[v] = k; -- so add name and matching tag end end local inter_wiki_map = {}; -- map of interwiki prefixes that are language-code prefixes for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base interwiki map (limited to local) if mw_languages_by_tag_t[v["prefix"]] then -- if the prefix matches a known language tag inter_wiki_map[v["prefix"]] = true; -- add it to our local map end end --[[--------------------< S C R I P T _ L A N G _ C O D E S >------------------- This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character language codes that apply only to |script-title= and |script-chapter= ]] local script_lang_codes = { 'ab', 'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu', 'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo', 'mk', 'ml', 'mn', 'mni', 'mr', 'my', 'ne', 'or', 'ota', 'pa', 'ps', 'ru', 'sd', 'si', 'sr', 'syc', 'ta', 'te', 'tg', 'th', 'ti', 'tt', 'ug', 'uk', 'ur', 'uz', 'yi', 'yue', 'zh' }; --[[---------------< L A N G U A G E R E M A P P I N G >---------------------- These tables hold language information that is different (correct) from MediaWiki's definitions For each ['<tag>'] = 'language name' in lang_code_remap{} there must be a matching ['language name'] = {'language name', '<tag>'} in lang_name_remap{} lang_tag_remap{}: key is always lowercase ISO 639-1, -2, -3 language tag or a valid lowercase IETF language tag value is properly spelled and capitalized language name associated with <tag> only one language name per <tag>; key/value pair must have matching entry in lang_name_remap{} lang_name_remap{}: key is always lowercase language name value is a table the holds correctly spelled and capitalized language name [1] and associated tag [2] (tag must match a tag key in lang_tag_remap{}) may have multiple keys referring to a common preferred name and tag; For example: ['kolsch'] and ['kölsch'] both refer to 'Kölsch' and 'ksh' ]] local lang_tag_remap = { -- used for |language= and |script-title= / |script-chapter= ['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch ['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org ['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name ['bn'] = 'Bengali', -- MediaWiki returns Bangla ['ca-valencia'] = 'Valencian', -- IETF variant of Catalan ['fkv'] = 'Kven', -- MediaWiki returns Kvensk ['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name ['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name ['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data ['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data ['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name } local lang_name_remap = { -- used for |language=; names require proper capitalization; tags must be lowercase ['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org ['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap ['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code ['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org ['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found ['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name ['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh ['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name ['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö) ['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name ['kven'] = {'Kven', 'fkv'}, -- Unicode CLDR have decided not to support English language name for these two... ['kvensk'] = {'Kven', 'fkv'}, -- ...they say to refer to IANA registry for English names ['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639 ['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-tw'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese ['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found ['valencian'] = {'Valencian', 'ca-valencia'}, -- variant of Catalan; categorizes as Valencian } --[[---------------< P R O P E R T I E S _ C A T E G O R I E S >---------------- Properties categories. These are used for investigating qualities of citations. ]] local prop_cats = { ['foreign-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code ['foreign-lang-source-2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key ['jul-greg-uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926 ['local-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false ['location-test'] = 'CS1 location test', ['long-vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 characters ['script'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code ['tracked-param'] = 'CS1 tracked parameter: $1', -- $1 is base (enumerators removed) parameter name ['year-range-abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form } --[[-------------------< T I T L E _ T Y P E S >-------------------------------- Here we map a template's CitationClass to TitleType (default values for |type= parameter) ]] local title_types = { ['AV-media-notes'] = 'Media notes', ['document'] = 'Document', ['interview'] = 'Interview', ['mailinglist'] = 'Mailing list', ['map'] = 'Map', ['podcast'] = 'Podcast', ['pressrelease'] = 'Press release', ['report'] = 'Report', ['speech'] = 'Speech', ['techreport'] = 'Technical report', ['thesis'] = 'Thesis', } --[[===================<< E R R O R M E S S A G I N G >>====================== ]] --[[----------< E R R O R M E S S A G E S U P P L I M E N T S >------------- I18N for those messages that are supplemented with additional specific text that describes the reason for the error TODO: merge this with special_case_translations{}? ]] local err_msg_supl = { ['char'] = 'invalid character', -- |isbn=, |sbn= ['check'] = 'checksum', -- |isbn=, |sbn= ['flag'] = 'flag', -- |archive-url= ['form'] = 'invalid form', -- |isbn=, |sbn= ['group'] = 'invalid group id', -- |isbn= ['initials'] = 'initials', -- Vancouver ['invalid language code'] = 'invalid language code', -- |script-<param>= ['journal'] = 'journal', -- |bibcode= ['length'] = 'length', -- |isbn=, |bibcode=, |sbn= ['liveweb'] = 'liveweb', -- |archive-url= ['missing comma'] = 'missing comma', -- Vancouver ['missing prefix'] = 'missing prefix', -- |script-<param>= ['missing title part'] = 'missing title part', -- |script-<param>= ['name'] = 'name', -- Vancouver ['non-Latin char'] = 'non-Latin character', -- Vancouver ['path'] = 'path', -- |archive-url= ['prefix'] = 'invalid prefix', -- |isbn= ['punctuation'] = 'punctuation', -- Vancouver ['save'] = 'save command', -- |archive-url= ['suffix'] = 'suffix', -- Vancouver ['timestamp'] = 'timestamp', -- |archive-url= ['unknown language code'] = 'unknown language code', -- |script-<param>= ['value'] = 'value', -- |bibcode= ['year'] = 'year', -- |bibcode= } --[[--------------< E R R O R _ C O N D I T I O N S >--------------------------- Error condition table. This table has two sections: errors at the top, maintenance at the bottom. Maint 'messaging' does not have a 'message' (message=nil) The following contains a list of IDs for various error conditions defined in the code. For each ID, we specify a text message to display, an error category to include, and whether the error message should be wrapped as a hidden comment. Anchor changes require identical changes to matching anchor in Help:CS1 errors TODO: rename error_conditions{} to something more generic; create separate error and maint tables inside that? ]] local error_conditions = { err_accessdate_missing_url = { message = '<code class="cs1-code">&#124;access-date=</code> requires <code class="cs1-code">&#124;url=</code>', anchor = 'accessdate_missing_url', category = 'CS1 errors: access-date without URL', hidden = false }, err_apostrophe_markup = { message = 'Italic or bold markup not allowed in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'apostrophe_markup', category = 'CS1 errors: markup', hidden = false }, err_archive_date_missing_url = { message = '<code class="cs1-code">&#124;archive-date=</code> requires <code class="cs1-code">&#124;archive-url=</code>', anchor = 'archive_date_missing_url', category = 'CS1 errors: archive-url', hidden = false }, err_archive_date_url_ts_mismatch = { message = '<code class="cs1-code">&#124;archive-date=</code> / <code class="cs1-code">&#124;archive-url=</code> timestamp mismatch', anchor = 'archive_date_url_ts_mismatch', category = 'CS1 errors: archive-url', hidden = false }, err_archive_missing_date = { message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;archive-date=</code>', anchor = 'archive_missing_date', category = 'CS1 errors: archive-url', hidden = false }, err_archive_missing_url = { message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;url=</code>', anchor = 'archive_missing_url', category = 'CS1 errors: archive-url', hidden = false }, err_archive_url = { message = '<code class="cs1-code">&#124;archive-url=</code> is malformed: $1', -- $1 is error message detail anchor = 'archive_url', category = 'CS1 errors: archive-url', hidden = false }, err_arxiv_missing = { message = '<code class="cs1-code">&#124;arxiv=</code> required', anchor = 'arxiv_missing', category = 'CS1 errors: arXiv', -- same as bad arxiv hidden = false }, err_asintld_missing_asin = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;asin=</code>', -- $1 is parameter name anchor = 'asintld_missing_asin', category = 'CS1 errors: ASIN TLD', hidden = false }, err_bad_arxiv = { message = 'Check <code class="cs1-code">&#124;arxiv=</code> value', anchor = 'bad_arxiv', category = 'CS1 errors: arXiv', hidden = false }, err_bad_asin = { message = 'Check <code class="cs1-code">&#124;asin=</code> value', anchor = 'bad_asin', category ='CS1 errors: ASIN', hidden = false }, err_bad_asin_tld = { message = 'Check <code class="cs1-code">&#124;asin-tld=</code> value', anchor = 'bad_asin_tld', category ='CS1 errors: ASIN TLD', hidden = false }, err_bad_bibcode = { message = 'Check <code class="cs1-code">&#124;bibcode=</code> $1', -- $1 is error message detail anchor = 'bad_bibcode', category = 'CS1 errors: bibcode', hidden = false }, err_bad_biorxiv = { message = 'Check <code class="cs1-code">&#124;biorxiv=</code> value', anchor = 'bad_biorxiv', category = 'CS1 errors: bioRxiv', hidden = false }, err_bad_citeseerx = { message = 'Check <code class="cs1-code">&#124;citeseerx=</code> value', anchor = 'bad_citeseerx', category = 'CS1 errors: citeseerx', hidden = false }, err_bad_date = { message = 'Check date values in: $1', -- $1 is a parameter name list anchor = 'bad_date', category = 'CS1 errors: dates', hidden = false }, err_bad_doi = { message = 'Check <code class="cs1-code">&#124;doi=</code> value', anchor = 'bad_doi', category = 'CS1 errors: DOI', hidden = false }, err_bad_hdl = { message = 'Check <code class="cs1-code">&#124;hdl=</code> value', anchor = 'bad_hdl', category = 'CS1 errors: HDL', hidden = false }, err_bad_isbn = { message = 'Check <code class="cs1-code">&#124;isbn=</code> value: $1', -- $1 is error message detail anchor = 'bad_isbn', category = 'CS1 errors: ISBN', hidden = false }, err_bad_ismn = { message = 'Check <code class="cs1-code">&#124;ismn=</code> value', anchor = 'bad_ismn', category = 'CS1 errors: ISMN', hidden = false }, err_bad_issn = { message = 'Check <code class="cs1-code">&#124;$1issn=</code> value', -- $1 is 'e' or '' for eissn or issn anchor = 'bad_issn', category = 'CS1 errors: ISSN', hidden = false }, err_bad_jfm = { message = 'Check <code class="cs1-code">&#124;jfm=</code> value', anchor = 'bad_jfm', category = 'CS1 errors: JFM', hidden = false }, err_bad_jstor = { message = 'Check <code class="cs1-code">&#124;jstor=</code> value', anchor = 'bad_jstor', category = 'CS1 errors: JSTOR', hidden = false }, err_bad_lccn = { message = 'Check <code class="cs1-code">&#124;lccn=</code> value', anchor = 'bad_lccn', category = 'CS1 errors: LCCN', hidden = false }, err_bad_medrxiv = { message = 'Check <code class="cs1-code">&#124;medrxiv=</code> value', anchor = 'bad_medrxiv', category = 'CS1 errors: medRxiv', hidden = false }, err_bad_mr = { message = 'Check <code class="cs1-code">&#124;mr=</code> value', anchor = 'bad_mr', category = 'CS1 errors: MR', hidden = false }, err_bad_oclc = { message = 'Check <code class="cs1-code">&#124;oclc=</code> value', anchor = 'bad_oclc', category = 'CS1 errors: OCLC', hidden = false }, err_bad_ol = { message = 'Check <code class="cs1-code">&#124;ol=</code> value', anchor = 'bad_ol', category = 'CS1 errors: OL', hidden = false }, err_bad_osti = { message = 'Check <code class="cs1-code">&#124;osti=</code> value', anchor = 'bad_osti', category = 'CS1 errors: OSTI', hidden = false }, err_bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link= message = 'Check <code class="cs1-code">&#124;$1=</code> value', -- $1 is parameter name anchor = 'bad_paramlink', category = 'CS1 errors: parameter link', hidden = false }, err_bad_pmc = { message = 'Check <code class="cs1-code">&#124;pmc=</code> value', anchor = 'bad_pmc', category = 'CS1 errors: PMC', hidden = false }, err_bad_pmid = { message = 'Check <code class="cs1-code">&#124;pmid=</code> value', anchor = 'bad_pmid', category = 'CS1 errors: PMID', hidden = false }, err_bad_rfc = { message = 'Check <code class="cs1-code">&#124;rfc=</code> value', anchor = 'bad_rfc', category = 'CS1 errors: RFC', hidden = false }, err_bad_s2cid = { message = 'Check <code class="cs1-code">&#124;s2cid=</code> value', anchor = 'bad_s2cid', category = 'CS1 errors: S2CID', hidden = false }, err_bad_sbn = { message = 'Check <code class="cs1-code">&#124;sbn=</code> value: $1', -- $1 is error message detail anchor = 'bad_sbn', category = 'CS1 errors: SBN', hidden = false }, err_bad_ssrn = { message = 'Check <code class="cs1-code">&#124;ssrn=</code> value', anchor = 'bad_ssrn', category = 'CS1 errors: SSRN', hidden = false }, err_bad_url = { message = 'Check $1 value', -- $1 is parameter name anchor = 'bad_url', category = 'CS1 errors: URL', hidden = false }, err_bad_usenet_id = { message = 'Check <code class="cs1-code">&#124;message-id=</code> value', anchor = 'bad_message_id', category = 'CS1 errors: message-id', hidden = false }, err_bad_zbl = { message = 'Check <code class="cs1-code">&#124;zbl=</code> value', anchor = 'bad_zbl', category = 'CS1 errors: Zbl', hidden = false }, err_bare_url_missing_title = { message = '$1 missing title', -- $1 is parameter name anchor = 'bare_url_missing_title', category = 'CS1 errors: bare URL', hidden = false }, err_biorxiv_missing = { message = '<code class="cs1-code">&#124;biorxiv=</code> required', anchor = 'biorxiv_missing', category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv hidden = false }, err_chapter_ignored = { message = '<code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'chapter_ignored', category = 'CS1 errors: chapter ignored', hidden = false }, err_citation_missing_title = { message = 'Missing or empty <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'citation_missing_title', category = 'CS1 errors: missing title', hidden = false }, err_citeseerx_missing = { message = '<code class="cs1-code">&#124;citeseerx=</code> required', anchor = 'citeseerx_missing', category = 'CS1 errors: citeseerx', -- same as bad citeseerx hidden = false }, err_cite_web_url = { -- this error applies to cite web and to cite podcast message = 'Missing or empty <code class="cs1-code">&#124;url=</code>', anchor = 'cite_web_url', category = 'CS1 errors: requires URL', hidden = false }, err_class_ignored = { message = '<code class="cs1-code">&#124;class=</code> ignored', anchor = 'class_ignored', category = 'CS1 errors: class', hidden = false }, err_contributor_ignored = { message = '<code class="cs1-code">&#124;contributor=</code> ignored', anchor = 'contributor_ignored', category = 'CS1 errors: contributor', hidden = false }, err_contributor_missing_required_param = { message = '<code class="cs1-code">&#124;contributor=</code> requires <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'contributor_missing_required_param', category = 'CS1 errors: contributor', hidden = false }, err_deprecated_params = { message = 'Cite uses deprecated parameter <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'deprecated_params', category = 'CS1 errors: deprecated parameters', hidden = false }, err_disp_name = { message = 'Invalid <code class="cs1-code">&#124;$1=$2</code>', -- $1 is parameter name; $2 is the assigned value anchor = 'disp_name', category = 'CS1 errors: display-names', hidden = false, }, err_doibroken_missing_doi = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;doi=</code>', -- $1 is parameter name anchor = 'doibroken_missing_doi', category = 'CS1 errors: DOI', hidden = false }, err_embargo_missing_pmc = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;pmc=</code>', -- $1 is parameter name anchor = 'embargo_missing_pmc', category = 'CS1 errors: PMC embargo', hidden = false }, err_empty_citation = { message = 'Empty citation', anchor = 'empty_citation', category = 'CS1 errors: empty citation', hidden = false }, err_etal = { message = 'Explicit use of et al. in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'explicit_et_al', category = 'CS1 errors: explicit use of et al.', hidden = false }, err_extra_text_edition = { message = '<code class="cs1-code">&#124;edition=</code> has extra text', anchor = 'extra_text_edition', category = 'CS1 errors: extra text: edition', hidden = false, }, err_extra_text_issue = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_issue', category = 'CS1 errors: extra text: issue', hidden = false, }, err_extra_text_pages = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_pages', category = 'CS1 errors: extra text: pages', hidden = false, }, err_extra_text_volume = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_volume', category = 'CS1 errors: extra text: volume', hidden = true, }, err_first_missing_last = { message = '<code class="cs1-code">&#124;$1=</code> missing <code class="cs1-code">&#124;$2=</code>', -- $1 is first alias, $2 is matching last alias anchor = 'first_missing_last', category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator hidden = false }, err_format_missing_url = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;$2=</code>', -- $1 is format parameter $2 is url parameter anchor = 'format_missing_url', category = 'CS1 errors: format without URL', hidden = false }, err_generic_name = { message = '<code class="cs1-code">&#124;$1=</code> has generic name', -- $1 is parameter name anchor = 'generic_name', category = 'CS1 errors: generic name', hidden = false, }, err_generic_title = { message = 'Cite uses generic title', anchor = 'generic_title', category = 'CS1 errors: generic title', hidden = false, }, err_invalid_param_val = { message = 'Invalid <code class="cs1-code">&#124;$1=$2</code>', -- $1 is parameter name $2 is parameter value anchor = 'invalid_param_val', category = 'CS1 errors: invalid parameter value', hidden = false }, err_invisible_char = { message = '$1 in $2 at position $3', -- $1 is invisible char $2 is parameter name $3 is position number anchor = 'invisible_char', category = 'CS1 errors: invisible characters', hidden = false }, err_medrxiv_missing = { message = '<code class="cs1-code">&#124;medrxiv=</code> required', anchor = 'medrxiv_missing', category = 'CS1 errors: medRxiv', -- same as bad medRxiv hidden = false }, err_missing_name = { message = 'Missing <code class="cs1-code">&#124;$1$2=</code>', -- $1 is modified NameList; $2 is enumerator anchor = 'missing_name', category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator hidden = false }, err_missing_periodical = { message = 'Cite $1 requires <code class="cs1-code">&#124;$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1 anchor = 'missing_periodical', category = 'CS1 errors: missing periodical', hidden = true }, err_missing_pipe = { message = 'Missing pipe in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'missing_pipe', category = 'CS1 errors: missing pipe', hidden = false }, err_missing_publisher = { message = 'Cite $1 requires <code class="cs1-code">&#124;$2=</code>', -- $1 is cs1 template name; $2 is canonical publisher parameter name for cite $1 anchor = 'missing_publisher', category = 'CS1 errors: missing publisher', hidden = false }, err_param_access_requires_param = { message = '<code class="cs1-code">&#124;$1-access=</code> requires <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'param_access_requires_param', category = 'CS1 errors: param-access', hidden = false }, err_param_has_ext_link = { message = 'External link in <code class="cs1-code">$1</code>', -- $1 is parameter name anchor = 'param_has_ext_link', category = 'CS1 errors: external links', hidden = false }, err_parameter_ignored = { message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'parameter_ignored', category = 'CS1 errors: unsupported parameter', hidden = false }, err_parameter_ignored_suggest = { message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored (<code class="cs1-code">&#124;$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name anchor = 'parameter_ignored_suggest', category = 'CS1 errors: unsupported parameter', hidden = false }, err_periodical_ignored = { message = '<code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'periodical_ignored', category = 'CS1 errors: periodical ignored', hidden = false }, err_redundant_parameters = { message = 'More than one of $1 specified', -- $1 is error message detail anchor = 'redundant_parameters', category = 'CS1 errors: redundant parameter', hidden = false }, err_script_parameter = { message = 'Invalid <code class="cs1-code">&#124;$1=</code>: $2', -- $1 is parameter name $2 is script language code or error detail anchor = 'script_parameter', category = 'CS1 errors: script parameters', hidden = false }, err_ssrn_missing = { message = '<code class="cs1-code">&#124;ssrn=</code> required', anchor = 'ssrn_missing', category = 'CS1 errors: SSRN', hidden = false }, err_text_ignored = { message = 'Text "$1" ignored', -- $1 is ignored text anchor = 'text_ignored', category = 'CS1 errors: unrecognized parameter', hidden = false }, err_trans_missing_title = { message = '<code class="cs1-code">&#124;trans-$1=</code> requires <code class="cs1-code">&#124;$1=</code> or <code class="cs1-code">&#124;script-$1=</code>', -- $1 is base parameter name anchor = 'trans_missing_title', category = 'CS1 errors: translated title', hidden = false }, err_param_unknown_empty = { message = 'Cite has empty unknown parameter$1: $2', -- $1 is 's' or empty space; $2 is emty unknown param list anchor = 'param_unknown_empty', category = 'CS1 errors: empty unknown parameters', hidden = false }, err_vancouver = { message = 'Vancouver style error: $1 in name $2', -- $1 is error detail, $2 is the nth name anchor = 'vancouver', category = 'CS1 errors: Vancouver style', hidden = false }, err_wikilink_in_url = { message = 'URL–wikilink conflict', -- uses ndash anchor = 'wikilink_in_url', category = 'CS1 errors: URL–wikilink conflict', -- uses ndash hidden = false }, --[[--------------------------< M A I N T >------------------------------------- maint messages do not have a message (message = nil); otherwise the structure is the same as error messages ]] maint_archived_copy = { message = nil, anchor = 'archived_copy', category = 'CS1 maint: archived copy as title', hidden = true, }, maint_authors = { message = nil, anchor = 'authors', category = 'CS1 maint: uses authors parameter', hidden = true, }, maint_bibcode = { message = nil, anchor = 'bibcode', category = 'CS1 maint: bibcode', hidden = true, }, maint_location_no_publisher = { -- cite book, conference, encyclopedia; citation as book cite or encyclopedia cite message = nil, anchor = 'location_no_publisher', category = 'CS1 maint: location missing publisher', hidden = true, }, maint_bot_unknown = { message = nil, anchor = 'bot:_unknown', category = 'CS1 maint: bot: original URL status unknown', hidden = true, }, maint_date_auto_xlated = { -- date auto-translation not supported by en.wiki message = nil, anchor = 'date_auto_xlated', category = 'CS1 maint: date auto-translated', hidden = true, }, maint_date_format = { message = nil, anchor = 'date_format', category = 'CS1 maint: date format', hidden = true, }, maint_date_year = { message = nil, anchor = 'date_year', category = 'CS1 maint: date and year', hidden = true, }, maint_doi_ignore = { message = nil, anchor = 'doi_ignore', category = 'CS1 maint: ignored DOI errors', hidden = true, }, maint_doi_inactive = { message = nil, anchor = 'doi_inactive', category = 'CS1 maint: DOI inactive', hidden = true, }, maint_doi_inactive_dated = { message = nil, anchor = 'doi_inactive_dated', category = 'CS1 maint: DOI inactive as of $2$3$1', -- $1 is year, $2 is month-name or empty string, $3 is space or empty string hidden = true, }, maint_extra_punct = { message = nil, anchor = 'extra_punct', category = 'CS1 maint: extra punctuation', hidden = true, }, maint_isbn_ignore = { message = nil, anchor = 'ignore_isbn_err', category = 'CS1 maint: ignored ISBN errors', hidden = true, }, maint_issn_ignore = { message = nil, anchor = 'ignore_issn', category = 'CS1 maint: ignored ISSN errors', hidden = true, }, maint_jfm_format = { message = nil, anchor = 'jfm_format', category = 'CS1 maint: JFM format', hidden = true, }, maint_location = { message = nil, anchor = 'location', category = 'CS1 maint: location', hidden = true, }, maint_mr_format = { message = nil, anchor = 'mr_format', category = 'CS1 maint: MR format', hidden = true, }, maint_mult_names = { message = nil, anchor = 'mult_names', category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table hidden = true, }, maint_numeric_names = { message = nil, anchor = 'numeric_names', category = 'CS1 maint: numeric names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table hidden = true, }, maint_others = { message = nil, anchor = 'others', category = 'CS1 maint: others', hidden = true, }, maint_others_avm = { message = nil, anchor = 'others_avm', category = 'CS1 maint: others in cite AV media (notes)', hidden = true, }, maint_overridden_setting = { message = nil, anchor = 'overridden', category = 'CS1 maint: overridden setting', hidden = true, }, maint_pmc_embargo = { message = nil, anchor = 'embargo', category = 'CS1 maint: PMC embargo expired', hidden = true, }, maint_pmc_format = { message = nil, anchor = 'pmc_format', category = 'CS1 maint: PMC format', hidden = true, }, maint_postscript = { message = nil, anchor = 'postscript', category = 'CS1 maint: postscript', hidden = true, }, maint_ref_duplicates_default = { message = nil, anchor = 'ref_default', category = 'CS1 maint: ref duplicates default', hidden = true, }, maint_unfit = { message = nil, anchor = 'unfit', category = 'CS1 maint: unfit URL', hidden = true, }, maint_unknown_lang = { message = nil, anchor = 'unknown_lang', category = 'CS1 maint: unrecognized language', hidden = true, }, maint_untitled = { message = nil, anchor = 'untitled', category = 'CS1 maint: untitled periodical', hidden = true, }, maint_url_status = { message = nil, anchor = 'url_status', category = 'CS1 maint: url-status', hidden = true, }, maint_zbl = { message = nil, anchor = 'zbl', category = 'CS1 maint: Zbl', hidden = true, }, } --[[--------------------------< I D _ H A N D L E R S >-------------------------------------------------------- The following contains a list of values for various defined identifiers. For each identifier we specify a variety of information necessary to properly render the identifier in the citation. parameters: a list of parameter aliases for this identifier; first in the list is the canonical form link: Wikipedia article name redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number' q: Wikidata q number for the identifier label: the label preceding the identifier; label is linked to a Wikipedia article (in this order): redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true Wikidata-supplied article name for the local wiki from id_handlers['<id>'].q local article name from id_handlers['<id>'].link prefix: the first part of a URL that will be concatenated with a second part which usually contains the identifier suffix: optional third part to be added after the identifier encode: true if URI should be percent-encoded; otherwise false COinS: identifier link or keyword for use in COinS: for identifiers registered at info-uri.info use: info:.... where '...' is the appropriate identifier label for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn for |asin= and |ol=, which require assembly, use the keyword: url for others make a URL using the value in prefix/suffix and #label, use the keyword: pre (not checked; any text other than 'info', 'rft', or 'url' works here) set to nil to leave the identifier out of the COinS separator: character or text between label and the identifier in the rendered citation id_limit: for those identifiers with established limits, this property holds the upper limit access: use this parameter to set the access level for all instances of this identifier. the value must be a valid access level for an identifier (see ['id-access'] in this file). custom_access: to enable custom access level for an identifier, set this parameter to the parameter that should control it (normally 'id-access') ]] local id_handlers = { ['ARXIV'] = { parameters = {'arxiv', 'eprint'}, link = 'arXiv', redirect = 'arXiv (identifier)', q = 'Q118398', label = 'arXiv', prefix = 'https://arxiv.org/abs/', encode = false, COinS = 'info:arxiv', separator = ':', access = 'free', -- free to read }, ['ASIN'] = { parameters = { 'asin', 'ASIN' }, link = 'Amazon Standard Identification Number', redirect = 'ASIN (identifier)', q = 'Q1753278', label = 'ASIN', prefix = 'https://www.amazon.', COinS = 'url', separator = '&nbsp;', encode = false; }, ['BIBCODE'] = { parameters = {'bibcode'}, link = 'Bibcode', redirect = 'Bibcode (identifier)', q = 'Q25754', label = 'Bibcode', prefix = 'https://ui.adsabs.harvard.edu/abs/', encode = false, COinS = 'info:bibcode', separator = ':', custom_access = 'bibcode-access', }, ['BIORXIV'] = { parameters = {'biorxiv'}, link = 'bioRxiv', redirect = 'bioRxiv (identifier)', q = 'Q19835482', label = 'bioRxiv', prefix = 'https://doi.org/', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = true, separator = '&nbsp;', }, ['CITESEERX'] = { parameters = {'citeseerx'}, link = 'CiteSeerX', redirect = 'CiteSeerX (identifier)', q = 'Q2715061', label = 'CiteSeerX', prefix = 'https://citeseerx.ist.psu.edu/viewdoc/summary?doi=', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = true, separator = '&nbsp;', }, ['DOI'] = { -- Used by InternetArchiveBot parameters = { 'doi', 'DOI'}, link = 'Digital object identifier', redirect = 'doi (identifier)', q = 'Q25670', label = 'doi', prefix = 'https://doi.org/', COinS = 'info:doi', separator = ':', encode = true, custom_access = 'doi-access', }, ['EISSN'] = { parameters = {'eissn', 'EISSN'}, link = 'International Standard Serial Number#Electronic ISSN', redirect = 'eISSN (identifier)', q = 'Q46339674', label = 'eISSN', prefix = 'https://www.worldcat.org/issn/', COinS = 'rft.eissn', encode = false, separator = '&nbsp;', }, ['HDL'] = { parameters = { 'hdl', 'HDL' }, link = 'Handle System', redirect = 'hdl (identifier)', q = 'Q3126718', label = 'hdl', prefix = 'https://hdl.handle.net/', COinS = 'info:hdl', separator = ':', encode = true, custom_access = 'hdl-access', }, ['ISBN'] = { -- Used by InternetArchiveBot parameters = {'isbn', 'ISBN'}, link = 'International Standard Book Number', redirect = 'ISBN (identifier)', q = 'Q33057', label = 'ISBN', prefix = 'Special:BookSources/', COinS = 'rft.isbn', separator = '&nbsp;', }, ['ISMN'] = { parameters = {'ismn', 'ISMN'}, link = 'International Standard Music Number', redirect = 'ISMN (identifier)', q = 'Q1666938', label = 'ISMN', prefix = '', -- not currently used; COinS = nil, -- nil because we can't use pre or rft or info: separator = '&nbsp;', }, ['ISSN'] = { parameters = {'issn', 'ISSN'}, link = 'International Standard Serial Number', redirect = 'ISSN (identifier)', q = 'Q131276', label = 'ISSN', prefix = 'https://www.worldcat.org/issn/', COinS = 'rft.issn', encode = false, separator = '&nbsp;', }, ['JFM'] = { parameters = {'jfm', 'JFM'}, link = 'Jahrbuch über die Fortschritte der Mathematik', redirect = 'JFM (identifier)', q = '', label = 'JFM', prefix = 'https://zbmath.org/?format=complete&q=an:', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, ['JSTOR'] = { parameters = {'jstor', 'JSTOR'}, link = 'JSTOR', redirect = 'JSTOR (identifier)', q = 'Q1420342', label = 'JSTOR', prefix = 'https://www.jstor.org/stable/', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', custom_access = 'jstor-access', }, ['LCCN'] = { parameters = {'lccn', 'LCCN'}, link = 'Library of Congress Control Number', redirect = 'LCCN (identifier)', q = 'Q620946', label = 'LCCN', prefix = 'https://lccn.loc.gov/', COinS = 'info:lccn', encode = false, separator = '&nbsp;', }, ['MEDRXIV'] = { parameters = {'medrxiv'}, link = 'medRxiv', redirect = 'medRxiv (identifier)', q = 'Q58465838', label = 'medRxiv', prefix = 'https://www.medrxiv.org/content/', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = false, separator = '&nbsp;', }, ['MR'] = { parameters = {'mr', 'MR'}, link = 'Mathematical Reviews', redirect = 'MR (identifier)', q = 'Q211172', label = 'MR', prefix = 'https://mathscinet.ams.org/mathscinet-getitem?mr=', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, ['OCLC'] = { parameters = {'oclc', 'OCLC'}, link = 'OCLC', redirect = 'OCLC (identifier)', q = 'Q190593', label = 'OCLC', prefix = 'https://www.worldcat.org/oclc/', COinS = 'info:oclcnum', encode = true, separator = '&nbsp;', id_limit = 10005000000, }, ['OL'] = { parameters = { 'ol', 'OL' }, link = 'Open Library', redirect = 'OL (identifier)', q = 'Q1201876', label = 'OL', prefix = 'https://openlibrary.org/', COinS = 'url', separator = '&nbsp;', encode = true, custom_access = 'ol-access', }, ['OSTI'] = { parameters = {'osti', 'OSTI'}, link = 'Office of Scientific and Technical Information', redirect = 'OSTI (identifier)', q = 'Q2015776', label = 'OSTI', prefix = 'https://www.osti.gov/biblio/', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 23010000, custom_access = 'osti-access', }, ['PMC'] = { parameters = {'pmc', 'PMC'}, link = 'PubMed Central', redirect = 'PMC (identifier)', q = 'Q229883', label = 'PMC', prefix = 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC', suffix = '', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 10700000, access = 'free', -- free to read }, ['PMID'] = { parameters = {'pmid', 'PMID'}, link = 'PubMed Identifier', redirect = 'PMID (identifier)', q = 'Q2082879', label = 'PMID', prefix = 'https://pubmed.ncbi.nlm.nih.gov/', COinS = 'info:pmid', encode = false, separator = '&nbsp;', id_limit = 37900000, }, ['RFC'] = { parameters = {'rfc', 'RFC'}, link = 'Request for Comments', redirect = 'RFC (identifier)', q = 'Q212971', label = 'RFC', prefix = 'https://tools.ietf.org/html/rfc', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', id_limit = 9300, access = 'free', -- free to read }, ['SBN'] = { parameters = {'sbn', 'SBN'}, link = 'Standard Book Number', -- redirect to International_Standard_Book_Number#History redirect = 'SBN (identifier)', label = 'SBN', prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn COinS = nil, -- nil because we can't use pre or rft or info: separator = '&nbsp;', }, ['SSRN'] = { parameters = {'ssrn', 'SSRN'}, link = 'Social Science Research Network', redirect = 'SSRN (identifier)', q = 'Q7550801', label = 'SSRN', prefix = 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 4600000, custom_access = 'ssrn-access', }, ['S2CID'] = { parameters = {'s2cid', 'S2CID'}, link = 'Semantic Scholar', redirect = 'S2CID (identifier)', q = 'Q22908627', label = 'S2CID', prefix = 'https://api.semanticscholar.org/CorpusID:', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', id_limit = 264000000, custom_access = 's2cid-access', }, ['USENETID'] = { parameters = {'message-id'}, link = 'Usenet', redirect = 'Usenet (identifier)', q = 'Q193162', label = 'Usenet:', prefix = 'news:', encode = false, COinS = 'pre', -- use prefix value separator = '&nbsp;', }, ['ZBL'] = { parameters = {'zbl', 'ZBL' }, link = 'Zentralblatt MATH', redirect = 'Zbl (identifier)', q = 'Q190269', label = 'Zbl', prefix = 'https://zbmath.org/?format=complete&q=an:', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, } --[[--------------------------< E X P O R T S >--------------------------------- ]] return { use_identifier_redirects = use_identifier_redirects, -- booleans defined in the settings at the top of this module local_lang_cat_enable = local_lang_cat_enable, date_name_auto_xlate_enable = date_name_auto_xlate_enable, date_digit_auto_xlate_enable = date_digit_auto_xlate_enable, -- tables and variables created when this module is loaded global_df = get_date_format (), -- this line can be replaced with "global_df = 'dmy-all'," to have all dates auto translated to dmy format. global_cs1_config_t = global_cs1_config_t, -- global settings from {{cs1 config}} punct_skip = build_skip_table (punct_skip, punct_meta_params), url_skip = build_skip_table (url_skip, url_meta_params), aliases = aliases, special_case_translation = special_case_translation, date_names = date_names, err_msg_supl = err_msg_supl, error_conditions = error_conditions, editor_markup_patterns = editor_markup_patterns, et_al_patterns = et_al_patterns, id_handlers = id_handlers, keywords_lists = keywords_lists, keywords_xlate = keywords_xlate, stripmarkers = stripmarkers, invisible_chars = invisible_chars, invisible_defs = invisible_defs, indic_script = indic_script, emoji_t = emoji_t, maint_cats = maint_cats, messages = messages, presentation = presentation, prop_cats = prop_cats, script_lang_codes = script_lang_codes, lang_tag_remap = lang_tag_remap, lang_name_remap = lang_name_remap, this_wiki_code = this_wiki_code, title_types = title_types, uncategorized_namespaces = uncategorized_namespaces_t, uncategorized_subpages = uncategorized_subpages, templates_using_volume = templates_using_volume, templates_using_issue = templates_using_issue, templates_not_using_page = templates_not_using_page, vol_iss_pg_patterns = vol_iss_pg_patterns, single_letter_2nd_lvl_domains_t = single_letter_2nd_lvl_domains_t, inter_wiki_map = inter_wiki_map, mw_languages_by_tag_t = mw_languages_by_tag_t, mw_languages_by_name_t = mw_languages_by_name_t, citation_class_map_t = citation_class_map_t, citation_issue_t = citation_issue_t, citation_no_volume_t = citation_no_volume_t, } 46fa8aad81f28bb571f448d36acfddc95d791bf5 Template:ISO 15924 script codes and related Unicode data 10 1628 2963 2023-09-26T02:58:22Z w>Drmccreedy 0 Update for 2023-09-12 update of ISO 15924 wikitext text/x-wiki {{ISO 15924 script codes and related Unicode data/header |state={{{state|mw-uncollapsed}}} }} {{ISO 15924 script codes and related Unicode data/row|alpha4=Adlm|version=9.0 |chars=88 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Afak|direction=varies|version= |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed">{{Cite web | title=SEI List of Scripts Not Yet Encoded | url=https://linguistics.berkeley.edu/sei/scripts-not-encoded.html | publisher=[[Unicode Consortium]] | date=March 2023 | access-date=2023-09-25}}</ref>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Aghb|version=7.0 |chars=53 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Ahom|version=8.0 |chars=65 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Arab|version=1.0 |chars=1,368 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Aran |direction=mixed |version= |chars= |note=|unicode-status=Typographic variant of Arabic (see {{slink||Arab}})}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Armi|version=5.2 |chars=31 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Armn|version=1.0 |chars=96 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Avst|version=5.2 |chars=61 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Bali|version=5.0 |chars=124 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Bamu|version=5.2 |chars=657 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Bass|version=7.0 |chars=36 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Batk|version=6.0 |chars=56 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Beng|version=1.0 |chars=96 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Bhks|version=9.0 |chars=97 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Blis|version= |direction= varies|chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Bopo|version=1.0 |chars=77 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Brah|version=6.0 |chars=115 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Brai|version=3.0 |chars=256 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Bugi|version=4.1 |chars=30 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Buhd|version=3.2 |chars=20 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Cakm|version=6.1 |chars=71 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Cans|version=3.0 |chars=726 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Cari|version=5.1 |chars=49 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Cham|version=5.1 |chars=83 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Cher|version=3.0 |chars=172 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Chis|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, proposal is mature<ref group="lower-roman" name="pipeline_mature">{{Cite web | title=Unicode Pipeline § Code Points Provisionally Assigned for Mature Proposals | url=https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation | publisher=Unicode Consortium | date=2023-09-12 | access-date=2023-09-25}}</ref>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Chrs|version=13.0 |chars=28 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Cirt|version= |direction= varies|chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Copt|version=1.0 |chars=137 |note=Ancient/historic, disunified from Greek in 4.1}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Cpmn|version=14.0 |direction= left-to-right |chars=99 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Cprt|version=4.0 |chars=55 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Cyrl|version=1.0 |chars=506 |note=Includes typographic variant Old Church Slavonic (see {{slink||Cyrs)}}}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Cyrs|version= |direction=varies |chars= |note=Ancient/historic|unicode-status=Typographic variant of Cyrillic (see {{slink||Cyrl}})}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Deva|version=1.0 |chars=164 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Diak|version=13.0 |chars=72 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Dogr|version=11.0 |chars=60 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Dsrt|version=3.1 |chars=80 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Dupl|version=7.0 |chars=143 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Egyd|version= |direction=mixed |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Egyh|version= |direction=mixed |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Egyp|version=5.2 |chars=1,110 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Elba|version=7.0 |chars=40 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Elym|version=12.0 |chars=23 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Ethi|version=3.0 |chars=523 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Gara|version= |direction=right-to-left |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16">{{Cite web | title=Unicode Pipeline § Approved for Publication in Version 16.0 | url=https://www.unicode.org/alloc/Pipeline.html#v16_0 | publisher=Unicode Consortium | date=2023-09-12 | access-date=2023-09-25}}</ref>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Geok|version= |chars= |note=Unicode groups Khutsori, Asomtavruli and Nuskhuri into 'Georgian' (see {{slink||Geok}}). Similarly, Mkhedruli and Mtavruli are 'Georgian' (see {{slink||Geor}})}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Geor|version=1.0 |chars=173 |note=In Unicode this also includes Nuskhuri ({{mono|1=Geok}})}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Glag|version=4.1 |chars=134 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Gong|version=11.0 |chars=63 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Gonm|version=10.0 |chars=75 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Goth|version=3.1 |chars=27 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Gran|version=7.0 |chars=85 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Grek|version=1.0 |chars=518 |note=Directionality sometimes as [[boustrophedon]]}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Gujr|version=1.0 |chars=91 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Gukh|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Guru|version=1.0 |chars=80 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hanb|version= |direction=mixed |chars= |unicode-status=See {{slink||Hani}}, {{slink||Bopo}} |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hang|version=1.0 |chars=11,739 |note=Hangul syllables relocated in 2.0}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hani|version=1.0 |direction=top-to-bottom, columns right-to-left (historically) |chars=99,030 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hano|version=3.2 |chars=21 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hans|version= |direction=varies |chars= |unicode-status=Subset of Han (Hanzi, Kanji, Hanja) (see {{slink||Hani}}) |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hant |direction=varies|version= |chars= |unicode-status=Subset of {{slink || Hani}} |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hatr|version=8.0 |chars=26 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hebr|version=1.0 |chars=134 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hira|version=1.0 |chars=381 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hluw|version=8.0 |chars=583 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hmng|version=7.0 |chars=127 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hmnp|version=12.0 |chars=71 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hrkt|version= |chars= |note=See {{slink||Hira}}, {{slink||Kana}}}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Hung|version=8.0 |chars=108 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Inds|version= |direction=mixed |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Ital|version=3.1 |chars=39 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Jamo|version= |direction=varies |chars= |unicode-status=Subset of {{slink||Hang}} |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Java|version=5.2 |chars=90 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Jpan|version= |direction=varies |chars= |unicode-status=See {{slink||Hani}}, {{slink||Hira}} and {{slink||Kana}} |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Jurc|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Kali|version=5.1 |chars=47 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Kana|version=1.0 |chars=321 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Kawi|version=15.0 |chars=86 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Khar|version=4.1 |chars=68 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Khmr|version=3.0 |chars=146 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Khoj|version=7.0 |chars=65 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Kitl|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Kits|version=13.0 |chars=471 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Knda|version=1.0 |chars=91 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Kore|version= |direction=left-to-right |chars= |unicode-status=See {{slink||Hani}}, {{slink||Hang}} |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Kpel|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Krai|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Kthi|version=5.2 |chars=68 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Lana|version=5.2 |chars=127 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Laoo|version=1.0 |chars=83 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Latf|version= |direction=varies |chars= |note=|unicode-status=Typographic variant of Latin (see {{slink||Latn}})}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Latg|version= |direction=left-to-right |chars= |note=|unicode-status=Typographic variant of Latin (see {{slink||Latn}})}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Latn|version=1.0 |chars=1,481 |note=See also: [[Latin script in Unicode]]}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Leke|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Lepc|version=5.1 |chars=74 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Limb|version=4.0 |chars=68 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Lina|version=7.0 |chars=341 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Linb|version=4.0 |chars=211 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Lisu|version=5.2 |chars=49 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Loma|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Lyci|version=5.1 |chars=29 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Lydi|version=5.1 |chars=27 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Mahj|version=7.0 |chars=39 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Maka|version=11.0 |chars=25 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Mand|version=6.0 |chars=29 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Mani|version=7.0 |chars=51 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Marc|version=9.0 |chars=68 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Maya|version= |direction=mixed |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Medf|version=11.0 |chars=91 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Mend|version=7.0 |chars=213 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Merc|version=6.1 |chars=90 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Mero|version=6.1 |chars=32 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Mlym|version=1.0 |chars=118 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Modi|version=7.0 |chars=79 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Mong|version=3.0 |chars=168 |note={{mono|Mong}} includes [[Clear Script|Clear]] and [[Manchu alphabet|Manchu]] scripts}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Moon|version= |direction=mixed |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Mroo|version=7.0 |chars=43 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Mtei|version=5.2 |chars=79 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Mult|version=8.0 |chars=38 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Mymr|version=3.0 |chars=223 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Nagm|version=15.0 |chars=42 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Nand|version=12.0 |chars=65 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Narb|version=7.0 |chars=32 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Nbat|version=7.0 |chars=40 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Newa|version=9.0 |chars=97 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Nkdb|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Nkgb|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Nkoo|version=5.0 |chars=62 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Nshu|version=10.0 |chars=397 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Ogam|version=3.0 |chars=29 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Olck|version=5.1 |chars=48 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Onao|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Orkh|version=5.2 |chars=73 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Orya|version=1.0 |chars=91 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Osge|version=9.0 |chars=72 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Osma|version=4.0 |chars=40 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Ougr|version=14.0 |direction=mixed |chars=26 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Palm|version=7.0 |chars=32 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Pauc|version=7.0 |chars=57 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Pcun|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Pelm|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Perm|version=7.0 |chars=43 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Phag|version=5.0 |chars=56 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Phli|version=5.2 |chars=27 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Phlp|version=7.0 |chars=29 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Phlv|version= |direction=mixed |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Phnx|version=5.0 |chars=29 |note=Ancient/historic{{cref2|group=Scripts|g}} }} {{ISO 15924 script codes and related Unicode data/row|alpha4=Piqd|version= |chars= |unicode-status= Rejected for inclusion in Unicode<ref group="lower-roman">{{cite web |url=http://std.dkuug.dk/jtc1/sc2/wg2/docs/n1643/n1643.htm | title=Proposal to encode Klingon in Plane 1 of ISO/IEC 10646-2 | date=1997-09-18 | author=Michael Everson}}</ref><!-- --><ref group="lower-roman">{{cite web | url=https://www.unicode.org/consortium/utc-minutes/UTC-087-200105.html | title=Approved Minutes of the UTC 87 / L2 184 Joint Meeting | date=2001-08-14 | author=The Unicode Consortium}}</ref> |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Plrd|version=6.1 |chars=149 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Prti|version=5.2 |chars=30 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Psin|version= |direction=mixed |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Qaaa-Qabx|version= |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Ranj|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Rjng|version=5.1 |chars=37 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Rohg|version=11.0 |chars=50 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Roro|version= |direction=mixed |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Runr|version=3.0 |chars=86 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Samr|version=5.2 |chars=61 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sara|version= |direction=mixed |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sarb|version=5.2 |chars=32 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Saur|version=5.1 |chars=82 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sgnw|version=8.0 |chars=672 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Shaw|version=4.0 |chars=48 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Shrd|version=6.1 |chars=96 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Shui|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sidd|version=7.0 |chars=92 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sidt|version= |direction=right-to-left |chars= |unicode-status=Not in Unicode, proposal is mature<ref group="lower-roman" name="pipeline_mature"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sind|version=7.0 |chars=69 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sinh|version=3.0 |chars=111 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sogd|version=11.0 |chars=42 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sogo|version=11.0 |chars=40 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sora|version=6.1 |chars=35 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Soyo|version=10.0 |chars=83 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sund|version=5.1 |chars=72 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sunu|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Sylo|version=4.1 |chars=45 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Syrc|version=3.0 |chars=88 |note=Includes typographic variants Estrangelo (see {{slink||Syre}}), Western ({{slink||Syrj}}), and Eastern ({{slink||Syrn}})}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Syre|version= |direction=mixed |chars= |note=|unicode-status=Typographic variant of Syriac (see {{slink||Syrc}})}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Syrj|version= |direction=mixed |chars= |note=|unicode-status=Typographic variant of Syriac (see {{slink||Syrc}})}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Syrn|version= |direction=mixed |chars= |note=|unicode-status=Typographic variant of Syriac (see {{slink||Syrc}})}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tagb|version=3.2 |chars=18 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Takr|version=6.1 |chars=68 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tale|version=4.0 |chars=35 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Talu|version=4.1 |chars=83 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Taml|version=1.0 |chars=123 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tang|version=9.0 |chars=6,914 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tavt|version=5.2 |chars=72 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tayo|version= |direction=top-to-bottom, columns right-to-left |chars= |unicode-status=Not in Unicode, proposal is mature<ref group="lower-roman" name="pipeline_mature"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Telu|version=1.0 |chars=100 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Teng|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tfng|version=4.1 |chars=59 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tglg|version=3.2 |chars=23 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Thaa|version=3.0 |chars=50 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Thai|version=1.0 |chars=86 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tibt|version=2.0 |chars=207 |note=Added in 1.0, removed in 1.1 and reintroduced in 2.0}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tirh|version=7.0 |chars=82 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tnsa|version=14.0 |direction=left-to-right |chars=89 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Todr|version= |direction=right-to-left |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tols|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, proposal is mature<ref group="lower-roman" name="pipeline_mature"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Toto|version=14.0 |direction=left-to-right |chars=31 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Tutg|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Ugar|version=4.0 |chars=31 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Vaii|version=5.1 |chars=300 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Visp|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Vith|version=14.0 |direction= left-to-right |chars=70 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Wara|version=7.0 |chars=84 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Wcho|version=12.0 |chars=59 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Wole|version= |direction=mixed |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Xpeo|version=4.1 |chars=50 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Xsux|version=5.0 |chars=1,234 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Yezi|version=13.0 |chars=47 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Yiii|version=3.0 |chars=1,220 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Zanb|version=10.0 |chars=72 |note=Ancient/historic}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Zinh|version= |chars=657 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Zmth|version= |chars= |unicode-status=Not a 'script' in Unicode|note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Zsym|version= |chars= |unicode-status=Not a 'script' in Unicode|note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Zsye|version= |chars= |unicode-status=Not a 'script' in Unicode|note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Zxxx|version= |chars= |unicode-status=Not a 'script' in Unicode|note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Zyyy|version= |chars=8,306 |note=}} {{ISO 15924 script codes and related Unicode data/row|alpha4=Zzzz|version= |chars=964,234 |note=In Unicode: ''All other code points''}} |- class="sortbottom" | colspan="8" | '''Notes''' {{cnote2 begin | liststyle=lower-alpha}} {{cnote2 | a | group=ISO_Unicode | [https://unicode.org/iso15924/codelists.html ISO 15924 publications] {{As of|2023|09|12}}}} {{cnote2 | b | group=ISO_list | [https://unicode.org/iso15924/iso15924-text.html ISO 15924 Normative text file] {{As of|2023|09|12}}}} {{cnote2 | c | group=ISO_changes | [https://www.unicode.org/iso15924/codechanges.html ISO 15924 Changes] (including Aliases for Unicode; {{As of|2023|09|12|lc=y}})}} {{cnote2 | d | group=Asof_Unicode_version | Unicode version {{Unicode version|version=15.1}}}} {{cnote2 | e | group=Unicode_charts | [https://www.unicode.org/charts/ Unicode charts]}} {{cnote2 | f | group=Aliases_for_Unicode | Unicode uses the "Property Value Alias" (Alias) as the script-name. These Alias names are part of Unicode and are published informatively next to ISO 15924. An alias script name may be used in a character name: <code>Palm</code>, Palmyrene &rarr; {{unichar|1=10860|2=PALMYRENE LETTER ALEPH}}.}} {{cnote2 | g | group=Scripts | In Unicode, the Phoenician script is intended for the representation of text in [[Paleo-Hebrew alphabet|Paleo-Hebrew]], Archaic Phoenician, [[Phoenician language|Phoenician]], [[Aramaic alphabet|Early Aramaic]], Late Phoenician cursive, Phoenician papyri, [[Siloam inscription|Siloam Hebrew]], [[LMLK seal|Hebrew seals]], [[Ammonite language|Ammonite]], [[Moabite language|Moabite]], and [[Punic language|Punic]].<ref group="lower-roman">{{cite web|url=https://www.unicode.org/versions/Unicode15.0.0/ch10.pdf|title=Middle East-II, Ancient Scripts|publisher=The Unicode Consortium|version=15.0.0|access-date=2023-09-25}}</ref>}} {{cnote2 end}} |- class="sortbottom" | colspan="8" | '''References''' {{reflist|group=lower-roman}} |}<noinclude> {{Documentation}} </noinclude> aa54cd9a8f18294808e1064d4d15d48d67298be5 Template:Efn/doc 10 588 1324 2023-09-26T20:33:27Z wikipedia>Jonesey95 0 Reverted 1 edit by [[Special:Contributions/223.24.153.147|223.24.153.147]] ([[User talk:223.24.153.147|talk]]) to last revision by Mirokado wikitext text/x-wiki {{Documentation subpage}} {{Transwiki guide |small=yes |text=See [[Template:Reflist/Transwiki guide|'''this information''']] on copying this template and modifying it for use on another wiki.}} <!-- Categories and interwikis go at the bottom of this page. --> {{High-use}} '''Explanatory footnotes''' or '''Efn''' are footnotes which provide something other than, or more than, a reference to a [[WP:Reliable sources|source]] that supports the accompanying text. The first unnamed parameter is displayed as the content of the footnote. Note that if the note's content contains an "=" character, a reference error will be displayed; precede the content with {{para|1}} (or one of its aliases, {{para|text}}, {{para|reference}}, or {{para|content}}) to fix the error. The following explanation is transcluded from [[Help:Footnotes#Footnotes: predefined groups]]. {{#section:Help:footnotes|pregroup}} ==Example articles== * [[Logic Theorist]] (a short article showing basic usage) * [[Chinese room]] (a long and complex article which uses all the features: named footnotes, list defined notes, etc.) * [[Empire of Brazil]] * [[John Diefenbaker]] (with name= and notes in <nowiki>{{notes}}</nowiki>) * [[USS Monitor|USS ''Monitor'']] <includeonly>{{sandbox other|| <!-- Categories and interwikis go here: --> [[Category:Explanatory footnote templates]] [[Category:Templates that generate named references]] }}</includeonly> == Template data == Description: <templatedata> { "description": "Inserts an explanatory footnote. Notes can be named and grouped.", "params": { "1": { "aliases": [ "reference", "text", "content" ], "label": "Note", "description": "Text of the note", "type": "content", "suggested": true }, "name": { "label": "Ref. name", "description": "Reference name of the note", "type": "string", "suggested": true }, "group": { "label": "Reference group", "description": "Styled group to which the note belongs", "type": "string", "suggested": true, "suggestedvalues": [ "upper-alpha", "lower-greek", "note", "lower-roman", "upper-roman" ] } } } </templatedata> 425513f20ca710aa83ef00ed07b04319a3d1cef9 Template:Infobox country/doc 10 245 2551 2023-09-26T23:27:17Z w>Nikkimaria 0 fix per mos wikitext text/x-wiki {{#ifeq:{{{nested|no}}}|no|{{documentation subpage}}{{hatnote|{{tl|Infobox geopolitical organisation}} and {{tl|Infobox former country}} redirect here; related parameters and examples are included below.}}}} {{High-use}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}} {{Uses TemplateStyles|Template:Infobox country/styles.css}} This infobox template is used to generate an infobox for the right-hand side of two specific types of article: on a country or territory, or on a geopolitical organisation. Parameter syntax and examples are detailed in the collapsed sections immediately below. __FORCETOC__ == Syntax == <!---------------------- Country/territory use ----------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox country |micronation = <!--yes if a micronation--> |conventional_long_name = <!--Formal or official full name of the country in English--> |native_name = <!--Country's name (usually full name) in its official/defacto language(s), hence in italics (double quotemarks)--> |common_name = <!--Common name in English (used for wikilinks, captions, and to produce a default iso3166 code)--> |status = <!--Status of country, especially useful for micronations--> |image_flag = <!--e.g. Flag of country.svg--> |alt_flag = <!--alt text for flag (text shown when pointer hovers over flag)--> |flag_border = <!--set to no to disable border around the flag--> |image_flag2 = <!--e.g. Second-flag of country.svg--> |alt_flag2 = <!--alt text for second flag--> |flag2_border = <!--set to no to disable border around the flag--> |image_coat = <!--e.g. Coat of arms of country.svg--> |alt_coat = <!--alt text for coat of arms--> |symbol_type = <!--emblem, seal, etc (if not a coat of arms)--> |national_motto = <!--in inverted commas and wikilinked if link exists--> |englishmotto = <!--English language version of motto--> |national_anthem = <!--in inverted commas and wikilinked if link exists--> |royal_anthem = <!--in inverted commas and wikilinked if link exists--> |other_symbol_type = <!--Use if a further symbol exists, e.g. hymn--> |other_symbol = |image_map = <!--e.g. LocationCountry.svg--> |loctext = <!--text description of location of country--> |alt_map = <!--alt text for map--> |map_caption = <!--Caption to place below map--> |image_map_size = <!--Map size in number of pixels--> |image_map2 = <!--Another map, if required--> |alt_map2 = <!--alt text for second map--> |map_caption2 = <!--Caption to place below second map--> |image_map2_size = <!--Map size in number of pixels--> |capital = <!--Name of country/territory's capital, wikilinked if link exists--> |coordinates = <!-- Coordinates for capital, using {{tl|coord}} --> |largest_city = <!--Name of country/territory's largest city. Use "capital" (without quotation marks) if it's the capital.--> |largest_settlement_type = <!--Type of settlement if largest settlement not a city--> |largest_settlement = <!--Name of largest settlement--> |official_languages = <!--Languages recognised in legislation, constitution, etc--> |national_languages = <!--Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc--> |regional_languages = <!--Languages recognised or associated with particular regions within the country/territory--> |languages_type = <!--Use to specify a further type of language, if not official, national or regional--> |languages = <!--Languages of the further type--> |languages_sub = <!--Is this further type of language a sub-item of the previous non-sub type? ("yes" or "no")--> |languages2_type = <!--Another further type of language--> |languages2 = <!--Languages of this second further type--> |languages2_sub = <!--Is the second alternative type of languages a sub-item of the previous non-sub type? ("yes" or "no")--> |ethnic_groups = <!--List/breakdown of ethnic groups within the country/territory--> |ethnic_groups_year = <!--Year of ethnic groups data (if provided)--> |ethnic_groups_ref = <!--(for any ref/s to associate with ethnic groups data)--> |religion = <!--Religion--> |religion_year = <!--Year of religion data (if provided)--> |religion_ref = <!--(for any ref/s to associate with religion data)--> |demonym = <!--Term/s describing those associated with the country/territory (e.g. "Belgian" for the country Belgium)--> |government_type = <!--Wikilinked if link exists--> |leader_title1 = <!--(for a country, usually the head of state's (wikilinked) title, e.g. "President", "Monarch")--> |leader_name1 = |leader_title2 = <!--(could be "Vice President", otherwise "Prime Minster", etc, etc)--> |leader_name2 = |leader_title14 = <!--(up to 14 distinct leaders may be included)--> |leader_name14 = |legislature = <!--Name of the country/territory's governing body, e.g. "Parliament", "Congress", etc--> |upper_house = <!--Name of governing body's upper house, if given (e.g. "Senate")--> |lower_house = <!--Name of governing body's lower house, if given (e.g. "Chamber of Deputies")--> |sovereignty_type = <!--Brief description of country/territory's status ("Independence [from...]", "Autonomous province [of...]", etc)--> |sovereignty_note = |established_event1 = <!--First key event in history of country/territory's status or formation--> |established_date1 = <!--Date of first key event--> |established_event2 = <!--Second key event--> |established_date2 = <!--Date of second key event--> |established_event13 = <!--(up to 13 distinct events may be included)--> |established_date13 = |area_rank = |area = <!--Major area size (in [[Template:convert]] either km2 or sqmi first)--> |area_km2 = <!--Major area size (in square km)--> |area_sq_mi = <!--Area in square mi (requires area_km2)--> |area_footnote = <!--Optional footnote for area--> |percent_water = |area_label = <!--Label under "Area" (default is "Total")--> |area_label2 = <!--Label below area_label (optional)--> |area_data2 = <!--Text after area_label2 (optional)--> |population_estimate = |population_estimate_rank = |population_estimate_year = |population_census = |population_census_year = |population_density_km2 = |population_density_sq_mi = |population_density_rank = |nummembers = <!--An alternative to population for micronation--> |GDP_PPP = <!--(Gross Domestic Product from Purchasing Power Parity)--> |GDP_PPP_rank = |GDP_PPP_year = |GDP_PPP_per_capita = |GDP_PPP_per_capita_rank = |GDP_nominal = |GDP_nominal_rank = |GDP_nominal_year = |GDP_nominal_per_capita = |GDP_nominal_per_capita_rank = |Gini = <!--(Gini measure of income inequality; input number only; valid values are between 0 and 100)--> |Gini_ref = <!--(for any ref/s to associate with Gini number)--> |Gini_rank = |Gini_year = |HDI_year = <!-- Please use the year to which the data refers, not the publication year--> |HDI = <!--(Human Development Index; input number only; valid values are between 0 and 1)--> |HDI_change = <!--increase/decrease/steady; rank change from previous year--> |HDI_rank = |HDI_ref = <!--(for any ref/s to associate with HDI number)--> |currency = <!--Name/s of currency/ies used in country/territory--> |currency_code = <!--ISO 4217 code/s for currency/ies (each usually three capital letters)--> |time_zone = <!--e.g. GMT, PST, AST, etc, etc (wikilinked if possible)--> |utc_offset = <!--in the form "+N", where N is number of hours offset--> |time_zone_DST = <!--Link to DST (Daylight Saving Time) used, otherwise leave empty--> |utc_offset_DST = <!--in the form "+N", where N is number of hours offset--> |DST_note = <!--Optional note regarding DST use--> |antipodes = <!--Place/s exactly on the opposite side of the world to country/territory--> |date_format = <!--all-numeric date format and era, such as [[Common Era|CE]], [[Anno Domini|AD]], [[Hijri year|AH]], etc.; e.g. {{abbr|yyyy|year}}-{{abbr|mm|month}}-{{abbr|dd|day}} ([[Anno Domini|AD]]) --> |drives_on = <!--"right" or "left" (side of road)--> |cctld = <!--Internet country code top-level domain identifier (e.g. [[.br]], [[.de]], etc)--> |iso3166code = <!--ISO code only; no extra text. Use to override default from common_name parameter above; omit using "omit".--> |calling_code = <!--e.g. [[+1]], [[+531]], [[+44]], etc--> |patron_saint = <!--Use patron_saints for multiple--> |image_map3 = <!--Optional third map position, e.g. for use with reference to footnotes below it--> |alt_map3 = <!--alt text for third map position--> |footnote_a = <!--For any footnote <sup>a</sup> used above--> |footnote_b = <!--For any footnote <sup>b</sup> used above--> |footnote_h = <!--For any footnote <sup>h</sup> used above--> |footnotes = <!--For any generic non-numbered footnotes--> }} </syntaxhighlight> {{hidden end}} {{hidden begin |toggle=left|title=France-specific parameters}}<!--(France-specific parameters)--> Note: Now redundant. <syntaxhighlight lang="wikitext"> |metropole = |metropole_area = |metropole_area_rank = |metropole_area_magnitude = |metropole_areami² = |metropole_population = |metropole_population_estimate_rank = |foot = |foot2 = |foot3 = |foot4 = |foot5 = </syntaxhighlight> <!--(France-specific parameters)--> {{smaller|* If, on a particular page, the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use ''flag_width'' (as % or px) to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included).}} {{hidden end}} <!------------------------- Geopolitical use --------------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox geopolitical organization |name = <!-- (in English) --> |native_name = <!-- Long-form name in native or any/all non-English languages --> |linking_name = <!-- For wikilinks, if diff from name --> |image_flag = <!-- Flag image's filename --> |alt_flag = <!-- alt text for flag--> |flag_border = <!--set to no to disable border around the flag--> |symbol_type = <!-- Symbol, Emblem, Logo, etc. --> |image_symbol = <!-- Symbol image's filename --> |alt_symbol = <!-- alt text for symbol --> |symbol_width = <!-- Symbol image's width (default 85px) --> |motto = <!-- "[motto]" --> |englishmotto = <!--English language version of motto--> |anthem = <!-- ''[anthem name]'' --> |text_symbol_type = <!-- for other types of text symbol --> |text_symbol = <!-- e.g. ''[hymn name]'' --> |image_map = <!-- Map image's filename --> |loctext = <!--text description of location of organization--> |alt_map = <!-- alt text for map image --> |map_width = <!-- Map image's width (default 250px) --> |map_caption = |org_type = <!-- e.g. Trade bloc --> |membership_type = <!-- (default "Membership") --> |membership = <!-- Type/s and/or number/s of members --> |admin_center_type = <!-- e.g. "Administrative center" (default) --> |admin_center = <!-- Location/s of administrative center/s --> |languages_type = <!-- e.g. "[[Official language]]s" (default) --> |languages = |leader_title1 = <!-- e.g. "Chair", "President", etc. --> |leader_name1 = |leader_title2 = <!-- e.g. "Deputy chair", etc. --> |leader_name2 = |leader_title14 = |leader_name14 = |established = <!-- Usually a date, in lieu of event/s hereafter --> |established_event1 = |established_date1 = |established_event2 = |established_date2 = |established_event9 = |established_date9 = |official_website = |area_km2 = <!-- major area size (in sq_km) --> |area_sq_mi = <!-- area in square mi (requires area_km2) --> |area_footnote = <!-- optional footnote for area --> |percent_water = |area_label = <!-- label under "Area" (default is "Total") --> |area_label2 = <!-- label below area_label (optional) --> |area_dabodyalign = <!-- text after area_label2 (optional) --> |population_estimate = |population_estimate_year = |population_density_km2 = |population_density_sq_mi = |GDP_PPP = |GDP_PPP_rank = |GDP_PPP_year = |GDP_PPP_per_capita = |GDP_nominal = |GDP_nominal_year = |GDP_nominal_per_capita = |Gini = <!-- number only, 0-100 --> |Gini_ref = <!-- for any ref/s to associate with Gini number --> |Gini_year = |HDI = <!-- number only, 0-1 --> |HDI_ref = <!-- for any ref/s to associate with HDI number --> |HDI_year = |currency = |currency_code = |time_zone = |utc_offset = <!-- +N, where N is number of hours --> |footnote1 = |footnote2 = |footnote7 = |footnotes = <!-- For generic non-numbered footnotes --> }} </syntaxhighlight> {{hidden end}} <!-------------------- Former country use ----------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox former country |native_name = <!-- Name in a modern syntax of native language(s). Leave blank if name is only in English. Separate with line breaks<br/> or use Template:Plainlist. If language uses Latin characters, place name(s) in italics. --> |conventional_long_name = <!-- Full name in English --> |common_name = <!-- Name to be used in constructing links and category names; not for display --> |iso3166code = omit <!-- For a country or geopolitical version of a country that ceased to exist prior to the introduction of iso3166--> |era = <!-- Use: "Napoleonic Wars", "Cold War", etc. --> |status = <!-- Status: see Category list on template page --> |status_text = <!-- A free text to describe status at the top of the infobox. Use sparingly. --> |empire = <!-- The empire or country to which the entity was in a state of dependency --> |government_type = <!-- To generate categories: "Monarchy", "Republic", etc. to generate categories --> <!-- Rise and fall, events, years and dates --> <!-- only fill in the start/end event entry if a specific article exists. Don't just say "abolition" or "declaration" --> |event_start = <!-- Default: "Established" --> |date_start = <!-- Optional: Date of establishment, in format 1 January (no year) --> |year_start = <!-- Year of establishment --> |event_end = <!-- Default: "Disestablished" --> |date_end = <!-- Optional: Date of disestablishment, in format 1 January (no year) --> |year_end = <!-- Year of disestablishment --> |year_exile_start = <!-- Year of start of exile (if dealing with exiled government: status="Exile") --> |year_exile_end = <!-- Year of end of exile (leave blank if still in exile) --> |event1 = <!-- Optional: other events between "start" and "end" --> |date_event1 = |event2 = |date_event2 = |event3 = |date_event3 = |event4 = |date_event4 = |event5 = |date_event5 = |event6 = |date_event6 = |event_pre = <!-- Optional: A crucial event that took place before "event_start" --> |date_pre = |event_post = <!-- Optional: A crucial event that took place after "event_end" --> |date_post = <!-- Flag navigation: Preceding and succeeding entities p1 to p5 and s1 to s5 --> |p1 = <!-- Name of the article for preceding entity, numbered 1-5 --> |flag_p1 = <!-- Default: "Flag of {{{p1}}}.svg" (size 30) --> |image_p1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] --> |p2 = |flag_p2 = |p3 = |flag_p3 = |p4 = |flag_p4 = |p5 = |flag_p5 = |s1 = <!-- Name of the article for succeeding entity, numbered 1-5 --> |flag_s1 = <!-- Default: "Flag of {{{s1}}}.svg" (size 30) --> |image_s1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] --> |s2 = |flag_s2 = |s3 = |flag_s3 = |s4 = |flag_s4 = |s5 = |flag_s5 = |image_flag = <!-- Default: Flag of {{{common_name}}}.svg --> |flag_alt = <!-- Alt text for flag --> |image_flag2 = <!-- Second flag --> |flag_alt2 = <!-- Alt text for second flag --> |flag = <!-- Link target under flag image. Default: Flag of {{{common_name}}} --> |flag2 = <!-- Link target under flag2 image. Default: Flag of {{{common_name}}} --> |flag_type = <!-- Displayed text for link under flag. Default "Flag" --> |flag2_type = <!-- Displayed text for link under flag2. Default "Flag" --> |image_coat = <!-- Default: Coat of arms of {{{common_name}}}.svg --> |coa_size = <!-- Size of coat of arms --> |coat_alt = <!-- Alt text for coat of arms --> |symbol_type = <!-- Displayed text for link under symbol. Default "Coat of arms" --> |symbol_type_article = <!-- Link target under symbol image. Default: Coat of arms of {{{common_name}}} --> |image_map = |image_map_size = <!--Map size in number of pixels--> |image_map_alt = |image_map_caption = |image_map2 = <!-- If second map is needed; does not appear by default --> |image_map2_size = <!--Map size in number of pixels--> |image_map2_alt = |image_map2_caption = |capital = |capital_exile = <!-- If status="Exile" --> |national_motto = |national_anthem = |common_languages = |religion = |demonym = |currency = <!-- Titles and names of the first and last leaders and their deputies --> |leader1 = <!-- Name of king or president --> |leader2 = |leader3 = |leader4 = |leader21 = <!--(up to 21 distinct leaders may be included)--> |year_leader1 = <!-- Years served --> |year_leader2 = |year_leader3 = |year_leader4 = |year_leader21 = |title_leader = <!-- Default: "King" for monarchy, otherwise "President" --> |representative1 = <!-- Name of representative of head of state (e.g. colonial governor) --> |representative2 = |representative3 = |representative4 = |representative5 = |year_representative1 = <!-- Years served --> |year_representative2 = |year_representative3 = |year_representative4 = |year_representative5 = |title_representative = <!-- Default: "Governor" --> |deputy1 = <!-- Name of prime minister --> |deputy2 = |deputy3 = |deputy4 = |year_deputy1 = <!-- Years served --> |year_deputy2 = |year_deputy3 = |year_deputy4 = |title_deputy = <!-- Default: "Prime minister" --> <!-- Legislature --> |legislature = <!-- Name of legislature --> |house1 = <!-- Name of first chamber --> |type_house1 = <!-- Default: "Upper house" --> |house2 = <!-- Name of second chamber --> |type_house2 = <!-- Default: "Lower house" --> <!-- Area and population of a given year --> |stat_year1 = <!-- year of the statistic, specify either area, population or both --> |stat_area1 = <!-- area in square kilometres (w/o commas or spaces); area in square miles is calculated --> |stat_pop1 = <!-- population (w/o commas or spaces) --> |stat_year2 = |stat_area2 = |stat_pop2 = |stat_year3 = |stat_area3 = |stat_pop3 = |stat_year4 = |stat_area4 = |stat_pop4 = |stat_year5 = |stat_area5 = |stat_pop5 = |today = <!-- Present-day countries that overlap with the territorial extent of the former country. Do not use this parameter if there are more than four such countries. --><!-- Do NOT add flags, per MOS:INFOBOXFLAG --> |footnote_a = <!-- Accepts wikilinks --> |footnote_b = <!-- Accepts wikilinks --> ... |footnote_h = <!-- Accepts wikilinks --> |footnotes = <!-- Accepts wikilinks --> }} </syntaxhighlight> {{hidden end}} == Examples == <!------------------ Country/territory example -------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}} {{Infobox country |conventional_long_name = Republic of Cameroon |native_name = {{lang|fr|République du Cameroun}} |common_name = Cameroon |image_flag = Flag of Cameroon.svg |alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red. |image_coat = Coat of arms of Cameroon.svg |symbol_type = Coat of arms |image_map = Cameroon (orthographic projection).svg |alt_map = Location of Cameroon on the globe. |national_motto = <br/>{{native phrase|fr|"Paix &ndash; Travail &ndash; Patrie"|italics=off}}<br/>{{small|"Peace &ndash; Work &ndash; Fatherland"}} |national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}}&nbsp;{{lower|0.1em|<sup>a</sup>}}}} |official_languages = {{hlist |[[French language|French]] |[[English language|English]]}} |demonym = Cameroonian |ethnic_groups = {{unbulleted list | {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}} | 19% [[Bantu peoples|Equatorial Bantu]] | 11% [[Kirdi]] | 10% [[Fula people|Fulani]] | {{0|0}}8% [[Bantu peoples|Northwestern Bantu]] | {{0|0}}7% Eastern Nigritic | 13% other African | &lt;1% non-African }} |capital = [[Yaoundé]] |coordinates = {{coord|3|52|N|11|31|E}} |largest_city = [[Douala]] |government_type = [[Republic]] |leader_title1 = [[List of heads of state of Cameroon|President]] |leader_name1 = [[Paul Biya]] |leader_title2 = [[Prime Minister of Cameroon|Prime Minister]] |leader_name2 = [[Philémon Yang]] |legislature = [[National Assembly (Cameroon)|National Assembly]] |area_rank = 54th <!--Demographic Yearbook 1.--> |area_km2 = 475,442 |area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 1.3 <!--CIA World Factbook--> |population_estimate = 20,129,878 |population_estimate_rank = 58th <!--UN World Population Prospects--> |population_estimate_year = July 2012 |population_census = 17,463,836 |population_census_year = 2005 |population_density_km2 = 39.7 |population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]--> |population_density_rank = 167th <!--UN World Population Prospects--> |GDP_PPP = $47.251&nbsp;billion |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $2,257 |GDP_PPP_per_capita_rank = |GDP_nominal = $25.759&nbsp;billion |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $1,230 |sovereignty_type = Independence {{nobold|from [[France]]}} |established_event1 = Declared |established_date1 = 1 January 1960 |established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}} |established_date2 = 1 October 1961 |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.482 <!--number only--> |HDI_ref = |HDI_rank = 150th |Gini_year = 2001 |Gini_change = <!--increase/decrease/steady--> |Gini = 44.6 <!--number only--> |Gini_ref = |Gini_rank = |currency = [[Central African CFA franc]] |currency_code = XAF |time_zone = [[West Africa Time|WAT]] |utc_offset = +1 |time_zone_DST = |utc_offset_DST = |drives_on = right |calling_code = [[+237]] |cctld = [[.cm]] |footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61. }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox country |conventional_long_name = Republic of Cameroon |native_name = {{lang|fr|République du Cameroun}} |common_name = Cameroon |image_flag = Flag of Cameroon.svg |alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red. |image_coat = Coat of arms of Cameroon.svg |symbol_type = Coat of arms |image_map = Cameroon (orthographic projection).svg |alt_map = Location of Cameroon on the globe. |national_motto = <br/>{{native phrase|fr|"Paix &ndash; Travail &ndash; Patrie"|italics=off}}<br/>{{small|"Peace &ndash; Work &ndash; Fatherland"}} |national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}}&nbsp;{{lower|0.1em|<sup>a</sup>}}}} |official_languages = {{hlist |[[French language|French]] |[[English language|English]]}} |demonym = Cameroonian |ethnic_groups = {{unbulleted list | {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}} | 19% [[Bantu peoples|Equatorial Bantu]] | 11% [[Kirdi]] | 10% [[Fula people|Fulani]] | {{0|0}}8% [[Bantu peoples|Northwestern Bantu]] | {{0|0}}7% Eastern Nigritic | 13% other African | &lt;1% non-African }} |capital = [[Yaoundé]] |coordinates = {{coord|3|52|N|11|31|E}} |largest_city = [[Douala]] |government_type = [[Republic]] |leader_title1 = [[List of heads of state of Cameroon|President]] |leader_name1 = [[Paul Biya]] |leader_title2 = [[Prime Minister of Cameroon|Prime Minister]] |leader_name2 = [[Philémon Yang]] |legislature = [[National Assembly (Cameroon)|National Assembly]] |area_rank = 54th <!--Demographic Yearbook 1.--> |area_km2 = 475,442 |area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 1.3 <!--CIA World Factbook--> |population_estimate = 20,129,878 |population_estimate_rank = 58th <!--UN World Population Prospects--> |population_estimate_year = July 2012 |population_census = 17,463,836 |population_census_year = 2005 |population_density_km2 = 39.7 |population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]--> |population_density_rank = 167th <!--UN World Population Prospects--> |GDP_PPP = $47.251&nbsp;billion |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $2,257 |GDP_PPP_per_capita_rank = |GDP_nominal = $25.759&nbsp;billion |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $1,230 |sovereignty_type = Independence {{nobold|from [[France]]}} |established_event1 = Declared |established_date1 = 1 January 1960 |established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}} |established_date2 = 1 October 1961 |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.482 <!--number only--> |HDI_ref = |HDI_rank = 150th |Gini_year = 2001 |Gini_change = <!--increase/decrease/steady--> |Gini = 44.6 <!--number only--> |Gini_ref = |Gini_rank = |currency = [[Central African CFA franc]] |currency_code = XAF |time_zone = [[West Africa Time|WAT]] |utc_offset = +1 |time_zone_DST = not observed |utc_offset_DST = +1 |drives_on = right |calling_code = [[+237]] |cctld = [[.cm]] |footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61. }} </syntaxhighlight> {{hidden end}} <!-------------- Geopolitical organization example ---------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}} {{Infobox geopolitical organization |name = {{collapsible list |titlestyle = background:transparent;text-align:center;font-size:85%; |title = {{resize|130%|European Union}} |liststyle = text-align:center; | {{smaller|{{native name|bg|Европейски съюз}}<br/><!-- -->{{native name|hr|Europska unija}}<br/><!-- -->{{native name|cs|Evropská unie}}<br/><!-- -->{{native name|da|Den Europæiske Union}}<br/><!-- -->{{native name|nl|Europese Unie}}<br /><!-- -->{{native name|et|Euroopa Liit}}<br/><!-- -->{{native name|fi|Euroopan unioni}}<br/><!-- -->{{native name|fr|Union européenne}}<br/><!-- -->{{native name|de|Europäische Union}}<br/><!-- -->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!-- -->{{native name|hu|Európai Unió}}<br/><!-- -->{{native name|ga|An tAontas Eorpach}}<br/><!-- -->{{native name|it|Unione europea}}<br/><!-- -->{{native name|lv|Eiropas Savienība}}<br/><!-- -->{{native name|lt|Europos Sąjunga}}<br/><!-- -->{{native name|mt|Unjoni Ewropea}}<br/><!-- -->{{native name|pl|Unia Europejska}}<br/><!-- -->{{native name|pt|União Europeia}}<br/><!-- -->{{native name|ro|Uniunea Europeană}}<br/><!-- -->{{native name|sk|Európska únia}}<br/><!-- -->{{native name|sl|Evropska unija}}<br/><!-- -->{{native name|es|Unión Europea}}<br/><!-- -->{{native name|sv|Europeiska unionen}}<!-- -->}} }} |linking_name = Europe |image_flag = Flag of Europe.svg |alt_flag = Circle of 12 gold stars on a blue background |motto = "[[Motto of the European Union|United in diversity]]" |anthem = <div style="padding-bottom:0.2em;">"[[Anthem of Europe|Ode to Joy]]"&nbsp;&nbsp;{{small|(orchestral)}}</div>[[File:Anthem of Europe (US Navy instrumental short version).ogg|center]] |image_map = EU Globe No Borders.svg |map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green). |map_width = 220px |admin_center_type = Political centres |admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}} |largest_city = [[London]] |official_languages = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = [[Languages of the European Union|24 languages]] | {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}} }} |demonym = [[Citizenship of the European Union|European]] |membership_type = [[Member state of the European Union|Member state]]s |membership = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = 27 states |{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}} |{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}} |{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}} |{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}} |{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}} |{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}} |{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}} |{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}} |{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}} }} |leader_title1 = [[President of the European Council|President of the European Council]] |leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}} |leader_title2 = [[President of the European Commission|President of the Commission]] |leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}} |legislature = [[Legislature of the European Union]] |upper_house = {{nowrap|[[Council of the European Union]]}} |lower_house = [[European Parliament]] |established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]] |established_date1 = 23 July 1952 |established_event2 = [[Treaty of Rome]] |established_date2 = 1 January 1958 |established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}} |established_date3 = 1 November 1993 |official_website = {{URL|europa.eu}} |area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]--> |area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 3.08 |population_estimate = 507,890,191 |population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |population_estimate_year = 2012 |population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)--> |population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)--> |population_density_rank = <!--Calculated by taking out EU members from the list--> <!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011--> |GDP_PPP = $15.821 trillion |GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $31,607<!--same ref as above--> |GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal = $17.577 trillion |GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $35,116 |GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |Gini_year = 2010 |Gini_change = <!--increase/decrease/steady--> |Gini = 30.4 <!--number only--> |Gini_ref = |Gini_rank = |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.876 <!--number only--> |HDI_ref = |HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list--> |currency = {{(!}} cellspacing="0" cellpadding="0" {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}} {{!-}} style="height: 22px;" ! {{flagicon|EU}} ! [[Euro]] ! [[Euro sign|€]] ! [[ISO 4217|EUR]] {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Bulgaria}} {{!}} [[Bulgarian lev|Lev]] {{!}} лв {{!}} [[ISO 4217|BGN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Croatia}} {{!}} [[Croatian kuna|Kuna]] {{!}} kn {{!}} [[ISO 4217|HRK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Czech Republic}} {{!}} [[Czech koruna|Koruna]] {{!}} Kč {{!}} [[ISO 4217|CZK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Denmark}} {{!}} [[Danish krone|Krone]] {{!}} kr {{!}} [[ISO 4217|DKK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Hungary}} {{!}} [[Hungarian forint|Forint]] {{!}} Ft {{!}} [[ISO 4217|HUF]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Latvia}} {{!}} [[Latvian lats|Lats]] {{!}} Ls {{!}} [[ISO 4217|LVL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Lithuania}} {{!}} [[Lithuanian litas|Litas]] {{!}} Lt {{!}} [[ISO 4217|LTL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Poland}} {{!}} [[Polish złoty|Złoty]] {{!}} zł {{!}} [[ISO 4217|PLN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Romania}} {{!}} [[Romanian Leu|Leu]] {{!}} L {{!}} [[ISO 4217|RON]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Sweden}} {{!}} [[Swedish krona|Krona]] {{!}} kr {{!}} [[ISO 4217|SEK]] {{!)}} |time_zone = |utc_offset = +0 to +2 |time_zone_DST = |utc_offset_DST = +1 to +3 |date_format = |cctld = [[.eu]] |calling_code = [[Telephone numbers in the European Union|27 codes]] |footnote_a = If considered as a single entity. }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox geopolitical organization |name = {{collapsible list |titlestyle = background:transparent;text-align:center;font-size:85%; |title = {{resize|130%|European Union}} |liststyle = text-align:center; | {{smaller|{{native name|bg|Европейски съюз}}<br/><!-- -->{{native name|hr|Europska unija}}<br/><!-- -->{{native name|cs|Evropská unie}}<br/><!-- -->{{native name|da|Den Europæiske Union}}<br/><!-- -->{{native name|nl|Europese Unie}}<br /><!-- -->{{native name|et|Euroopa Liit}}<br/><!-- -->{{native name|fi|Euroopan unioni}}<br/><!-- -->{{native name|fr|Union européenne}}<br/><!-- -->{{native name|de|Europäische Union}}<br/><!-- -->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!-- -->{{native name|hu|Európai Unió}}<br/><!-- -->{{native name|ga|An tAontas Eorpach}}<br/><!-- -->{{native name|it|Unione europea}}<br/><!-- -->{{native name|lv|Eiropas Savienība}}<br/><!-- -->{{native name|lt|Europos Sąjunga}}<br/><!-- -->{{native name|mt|Unjoni Ewropea}}<br/><!-- -->{{native name|pl|Unia Europejska}}<br/><!-- -->{{native name|pt|União Europeia}}<br/><!-- -->{{native name|ro|Uniunea Europeană}}<br/><!-- -->{{native name|sk|Európska únia}}<br/><!-- -->{{native name|sl|Evropska unija}}<br/><!-- -->{{native name|es|Unión Europea}}<br/><!-- -->{{native name|sv|Europeiska unionen}}<!-- -->}} }} |linking_name = Europe |image_flag = Flag of Europe.svg |alt_flag = Circle of 12 gold stars on a blue background |motto = "[[Motto of the European Union|United in diversity]]" |anthem = <div style="padding-bottom:0.2em;">''[[Anthem of Europe|Ode to Joy]]''&nbsp;&nbsp;{{small|(orchestral)}}</div>{{center|[[File:Anthem of Europe (US Navy instrumental short version).ogg]]}} |image_map = EU Globe No Borders.svg |map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green). |map_width = 220px |admin_center_type = Political centres |admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}} |largest_city = [[London]] |official_languages = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = [[Languages of the European Union|24 languages]] | {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}} }} |demonym = [[Citizenship of the European Union|European]] |membership_type = [[Member state of the European Union|Member state]]s |membership = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = 27 states |{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}} |{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}} |{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}} |{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}} |{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}} |{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}} |{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}} |{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}} |{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}} }} |leader_title1 = [[President of the European Council|President of the European Council]] |leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}} |leader_title2 = [[President of the European Commission|President of the Commission]] |leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}} |legislature = [[Legislature of the European Union]] |upper_house = {{nowrap|[[Council of the European Union]]}} |lower_house = [[European Parliament]] |established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]] |established_date1 = 23 July 1952 |established_event2 = [[Treaty of Rome]] |established_date2 = 1 January 1958 |established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}} |established_date3 = 1 November 1993 |official_website = {{URL|europa.eu}} |area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]--> |area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 3.08 |population_estimate = 507,890,191 |population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |population_estimate_year = 2012 |population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)--> |population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)--> |population_density_rank = <!--Calculated by taking out EU members from the list--> <!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011--> |GDP_PPP = $15.821 trillion |GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $31,607 |GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal = $17.577 trillion |GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $35,116 |GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |Gini_year = 2010 |Gini_change = <!--increase/decrease/steady--> |Gini = 30.4 <!--number only--> |Gini_ref = |Gini_rank = |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.876 <!--number only--> |HDI_ref = |HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list--> |currency = {{(!}} cellspacing="0" cellpadding="0" {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}} {{!-}} style="height: 22px;" ! {{flagicon|EU}} ! [[Euro]] ! [[Euro sign|€]] ! [[ISO 4217|EUR]] {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Bulgaria}} {{!}} [[Bulgarian lev|Lev]] {{!}} лв {{!}} [[ISO 4217|BGN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Croatia}} {{!}} [[Croatian kuna|Kuna]] {{!}} kn {{!}} [[ISO 4217|HRK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Czech Republic}} {{!}} [[Czech koruna|Koruna]] {{!}} Kč {{!}} [[ISO 4217|CZK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Denmark}} {{!}} [[Danish krone|Krone]] {{!}} kr {{!}} [[ISO 4217|DKK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Hungary}} {{!}} [[Hungarian forint|Forint]] {{!}} Ft {{!}} [[ISO 4217|HUF]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Latvia}} {{!}} [[Latvian lats|Lats]] {{!}} Ls {{!}} [[ISO 4217|LVL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Lithuania}} {{!}} [[Lithuanian litas|Litas]] {{!}} Lt {{!}} [[ISO 4217|LTL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Poland}} {{!}} [[Polish złoty|Złoty]] {{!}} zł {{!}} [[ISO 4217|PLN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Romania}} {{!}} [[Romanian Leu|Leu]] {{!}} L {{!}} [[ISO 4217|RON]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Sweden}} {{!}} [[Swedish krona|Krona]] {{!}} kr {{!}} [[ISO 4217|SEK]] {{!)}} |time_zone = |utc_offset = +0 to +2 |time_zone_DST = |utc_offset_DST = +1 to +3 |date_format = |cctld = [[.eu]] |calling_code = [[Telephone numbers in the European Union|27 codes]] |footnote_a = If considered as a single entity. }} </syntaxhighlight> {{hidden end}} <!------------------ Former country example -------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}} {{Infobox former country |native_name = ''Deutsches Reich'' |conventional_long_name = German Empire |common_name = Germany |iso3166code = omit |status = Empire |era = [[New Imperialism]]/[[World War I|WWI]] |event_start = [[Unification of Germany|Unification]] |date_start = 18 January |year_start = 1871 |event_end = [[German Revolution of 1918–1919|Republic declared]] |date_end = 9 November |year_end = 1918 |event_post = Formal abdication |date_post = 28 November 1918 |p1 = North German Confederation |flag_p1 = Flag of the German Empire.svg |p2 = Kingdom of Bavaria |flag_p2 = Flag of Bavaria (striped).svg |p3 = Kingdom of Württemberg |flag_p3 = Flagge Königreich Württemberg.svg |p4 = Grand Duchy of Baden |flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg |p5 = Grand Duchy of Hesse |flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg |p6 = Alsace-Lorraine |flag_p6 = Flag of France.svg |s1 = Weimar Republic |s2 = Republic of Alsace-Lorraine |s3 = Free City of Danzig |s4 = Second Polish Republic |s5 = Klaipėda Region |s6 = Saar (League of Nations) |s7 = Hlučín Region |s8 = South Jutland County{{!}}Northern Schleswig |s9 = Eupen-Malmedy |flag_s1 = Flag of Germany (3-2 aspect ratio).svg |flag_s2 = Flag of the Republic of Alsace-Lorraine.svg |flag_s3 = Gdansk flag.svg |flag_s4 = Flag of Poland.svg |flag_s5 = Flag of Lithuania 1918-1940.svg |flag_s6 = Flag of Saar 1920-1935.svg |flag_s7 = Flag of Bohemia.svg |flag_s8 = Flag of Denmark.svg |flag_s9 = Flag of Belgium.svg |image_flag = Flag of the German Empire.svg |flag_alt = Horizontal tricolor (black, white, red) |flag_caption = Flag of the German Empire |image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg |symbol_type = Imperial Coat of arms |coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons. |image_map = German Empire, Wilhelminian third version.svg |image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland |image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]] |national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}} |national_anthem = {{plainlist| * ''(none official)'' * "[[Heil dir im Siegerkranz]]" (Imperial) * "[[Deutschlandlied]]" (popular) * "[[Die Wacht am Rhein]]" (unofficial) }} |capital = Berlin |common_languages = ;Official language :[[German language|German]] ;Unofficial minority languages :[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]] ;Colonial languages :[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies) :[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay) :[[Papuan languages]] (German New Guinea) :[[Samoan language|Samoan]] (German Samoa) |government_type = Constitutional monarchy |title_leader = [[German Emperor|Emperor]] |leader1 = [[William I, German Emperor|William I]] |year_leader1 = 1871–1888 |leader2 = [[Frederick III, German Emperor|Frederick III]] |year_leader2 = 1888 |leader3 = [[Wilhelm II, German Emperor|Wilhelm II]] |year_leader3 = 1888–1918 |title_deputy = [[List of Chancellors of Germany|Chancellor]] |deputy1 = [[Otto von Bismarck]] (first) |year_deputy1 = 1871–1890 |deputy2 = [[Friedrich Ebert]] (last) |year_deputy2 = 8–9 Nov 1918 |legislature = [[Reichstag (German Empire)|Reichstag]] |house1 = [[Reichsrat (Germany)|Reichsrat]] |type_house1 = State council |stat_year1 = 1871 |religion = {{plainlist| * [[Lutherans]]~60% * [[Roman Catholics]]~40% }} |stat_pop1 = {{formatnum:41058792}} |stat_year2 = 1890 |stat_pop2 = {{formatnum:49428470}} |stat_year4 = 1910 |stat_pop4 = {{formatnum:64925993}} |stat_area4 = 540857.54 |currency = {{plainlist| * [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}} * [[German gold mark|Goldmark]] {{small|(1873–1914)}} * [[German Papiermark|Papiermark]] {{small|(after 1914)}} }} |footnotes = Area and population not including colonial possessions |today = }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox former country |native_name = ''Deutsches Reich'' |conventional_long_name = German Empire |common_name = Germany |iso3166code = omit |status = Empire |era = [[New Imperialism]]/[[World War I|WWI]] |event_start = [[Unification of Germany|Unification]] |date_start = 18 January |year_start = 1871 |event_end = [[German Revolution of 1918–1919|Republic declared]] |date_end = 9 November |year_end = 1918 |event_post = Formal abdication |date_post = 28 November 1918 |p1 = North German Confederation |flag_p1 = Flag of the German Empire.svg |p2 = Kingdom of Bavaria |flag_p2 = Flag of Bavaria (striped).svg |p3 = Kingdom of Württemberg |flag_p3 = Flagge Königreich Württemberg.svg |p4 = Grand Duchy of Baden |flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg |p5 = Grand Duchy of Hesse |flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg |p6 = Alsace-Lorraine |flag_p6 = Flag of France.svg |s1 = Weimar Republic |s2 = Republic of Alsace-Lorraine |s3 = Free City of Danzig |s4 = Second Polish Republic |s5 = Klaipėda Region |s6 = Saar (League of Nations) |s7 = Hlučín Region |s8 = South Jutland County{{!}}Northern Schleswig |s9 = Eupen-Malmedy |flag_s1 = Flag of Germany (3-2 aspect ratio).svg |flag_s2 = Flag of the Republic of Alsace-Lorraine.svg |flag_s3 = Gdansk flag.svg |flag_s4 = Flag of Poland.svg |flag_s5 = Flag of Lithuania 1918-1940.svg |flag_s6 = Flag of Saar 1920-1935.svg |flag_s7 = Flag of Bohemia.svg |flag_s8 = Flag of Denmark.svg |flag_s9 = Flag of Belgium.svg |image_flag = Flag of the German Empire.svg |flag_alt = Horizontal tricolor (black, white, red) |flag_caption = Flag of the German Empire |image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg |symbol_type = Imperial Coat of arms |coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons. |image_map = German Empire, Wilhelminian third version.svg |image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland |image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]] |national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}} |national_anthem = {{plainlist| * ''(none official)'' * "[[Heil dir im Siegerkranz]]" (Imperial) * "[[Deutschlandlied]]" (popular) * "[[Die Wacht am Rhein]]" (unofficial) }} |capital = Berlin |common_languages = ;Official language :[[German language|German]] ;Unofficial minority languages :[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]] ;Colonial languages :[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies) :[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay) :[[Papuan languages]] (German New Guinea) :[[Samoan language|Samoan]] (German Samoa) |government_type = Constitutional monarchy |title_leader = [[German Emperor|Emperor]] |leader1 = [[William I, German Emperor|William I]] |year_leader1 = 1871–1888 |leader2 = [[Frederick III, German Emperor|Frederick III]] |year_leader2 = 1888 |leader3 = [[Wilhelm II, German Emperor|Wilhelm II]] |year_leader3 = 1888–1918 |title_deputy = [[List of Chancellors of Germany|Chancellor]] |deputy1 = [[Otto von Bismarck]] (first) |year_deputy1 = 1871–1890 |deputy2 = [[Friedrich Ebert]] (last) |year_deputy2 = 8–9 Nov 1918 |legislature = [[Reichstag (German Empire)|Reichstag]] |house1 = [[Reichsrat (Germany)|Reichsrat]] |type_house1 = State council |stat_year1 = 1871 |religion = {{plainlist| * [[Lutherans]]~60% * [[Roman Catholics]]~40% }} |stat_pop1 = {{formatnum:41058792}} |stat_year2 = 1890 |stat_pop2 = {{formatnum:41058792}} |stat_year4 = 1910 |stat_pop4 = {{formatnum:41058792}} |stat_area4 = 540857.54 |currency = {{plainlist| * [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}} * [[German gold mark|Goldmark]] {{small|(1873–1914)}} * [[German Papiermark|Papiermark]] {{small|(after 1914)}} }} |footnotes = Area and population not including colonial possessions |today = }} </syntaxhighlight> {{hidden end}} == Errors == If the template generates errors when calculating data for the Gini or HDI fields, it will add the article to [[:Category:Country articles requiring maintenance]]. This only happens if the page is in the [[WP:MAINSPACE|main article space]], not any other [[WP:NAMESPACE|namespaces]]. == Microformat == {{UF-hcard-place}} == Tracking categories == * {{clc|Country articles requiring maintenance}} * {{clc|Pages using infobox country with unknown parameters}} * {{clc|Pages using infobox country with syntax problems}} * {{clc|Pages using infobox country or infobox former country with the flag caption or type parameters}} * {{clc|Pages using infobox country or infobox former country with the symbol caption or type parameters}} * {{clc|Former country articles using status text with Colony or Exile}} == TemplateData == {{TemplateData header}} {{collapse top|title=TemplateData}} <templatedata> { "description": "This template produces an infobox for countries that covers their major attributes such as their flags, ethnic makeup, and political system.", "format": "{{_\n| ______________________ = _\n}}\n", "params": { "conventional_long_name": { "label": "Conventional long name", "type": "string", "required": false, "description": "Formal or official full name of the country in English. This entry should not be enclosed in brackets.", "example": "The United States of America" }, "common_name": {}, "linking_name": {}, "native_name": { "label": "Native name", "type": "string", "required": false, "example": "{{native name|Bundesrepublik Deutschland}}", "description": "Country's name (usually full name) in its native language, hence in italics (double quotemarks). The template {{native name}} should be used with this parameter to automatically italicize the text." }, "name": { "label": "Geopolitical organisation name", "type": "string", "required": false, "description": "Name of the geopolitical organisation in English." }, "image_flag": { "label": "Flag", "type": "wiki-file-name", "required": false, "example": "Flag of Iceland.svg", "description": "File name of an image file on Wikipedia or on Commons that contains the country's current flag. Do not enclose this entry in double brackets and do not give it a prefix such as File:" }, "flag_width": { "label": "Flag width", "type": "string", "required": false, "description": "If the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use this to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included). Can be done as a % or px." }, "alt_flag": { "label": "Flag alt text", "type": "string", "required": false, "description": "Alternate text for flag (text shown when pointer hovers over flag)." }, "flag_border": { "label": "Flag border", "type": "string", "required": false, "description": "Set to no to disable border around the flag." }, "flag_caption": { "label": "Flag caption", "type": "string", "required": false, "description": "Use this parameter to enter a caption for the flag, if one is necessary. Do not end this entry with a period.", "example": "1992 version of the flag prior to the country's dissolution" }, "image_flag2": { "label": "Second flag", "type": "wiki-file-name", "required": false, "example": "Secondflag of Namibia.svg", "description": "If a country has a second flag— perhaps because of an ongoing civil war or a dispute over sovereignty— you can provide the file name of that second flag in this parameter. Do not include the prefix File:, and do not enclose it in double brackets." }, "alt_flag2": { "label": "Second flag alt text", "type": "string", "required": false, "description": "Alt text for second flag (text shown when pointer hovers over flag)." }, "flag2_border": { "label": "Second flag border", "type": "string", "required": false, "description": "Set to no to disable border around the flag." }, "image_coat": { "label": "Coat of arms", "type": "wiki-file-name", "aliases": [ "image_symbol" ], "example": "Great Seal of the United States (obverse).svg" }, "symbol_width": { "label": "Symbol width", "type": "string", "required": false, "description": "Symbol image's width.", "default": "85px" }, "alt_coat": { "label": "Coat of arms alt text", "type": "string", "aliases": [ "alt_symbol", "coat_alt" ], "required": false, "description": "Alt text for coat of arms." }, "symbol_type": { "label": "Symbol type", "type": "string", "required": false, "description": "If not a coat of arms.", "example": "emblem, seal, etc" }, "symbol_type_article": { "label": "Symbol type article", "type": "string", "description": "An article about the type of symbol of the country" }, "text_symbol": { "label": "Text symbol", "type": "string", "required": false, "description": "For other types of text symbol.", "example": "''[hymn name]''" }, "text_symbol_type": { "label": "Text symbol type", "type": "string", "required": false, "description": "For other types of text symbol." }, "other_symbol": { "label": "Other symbol", "type": "string", "required": false, "description": "Use if a further symbol exists." }, "other_symbol_type": { "label": "Other symbol type", "type": "string", "required": false }, "national_motto": { "label": "National motto", "type": "string", "required": false, "example": "{{lang|de|''{{lang|de|[[Das Lied der Deutschen|Einigkeit und Recht und Freiheit]]}}''}}", "description": "In inverted commas and wikilinked if link exists. Can also be used with the {{lang}} template and correct two-letter language code to designate the language of the motto where not provided in English." }, "motto": { "label": "Motto", "type": "string", "required": false }, "national_anthem": { "label": "National anthem", "type": "string", "required": false, "description": "In inverted commas and wikilinked if link exists." }, "anthem": { "label": "Anthem", "type": "string", "required": false }, "royal_anthem": { "label": "Royal anthem", "type": "string", "required": false, "description": "In inverted commas and wikilinked if link exists." }, "image_map": { "label": "Map", "type": "string", "required": false, "example": "LocationCountry.svg" }, "map_width": { "label": "Map width", "type": "string", "required": false, "description": "Map image's width.", "default": "250px" }, "alt_map": { "label": "Map alt text", "type": "string", "required": false }, "map_caption": { "label": "Map caption", "type": "string", "required": false, "description": "Caption to place below map." }, "image_map2": { "label": "Map 2", "type": "string", "required": false, "description": "Another map, if required." }, "map2_width": { "label": "Map 2 width", "type": "string", "required": false }, "alt_map2": { "label": "Map 2 alt text", "type": "string", "required": false }, "map_caption2": { "label": "Map 2 caption", "type": "string", "required": false, "description": "Caption to place below second map." }, "image_map3": {}, "map3_width": {}, "alt_map3": {}, "map_caption3": {}, "capital": { "label": "Capital", "type": "string", "required": false, "description": "Name of country/territory's capital, wikilinked if link exists." }, "capital_type": { "label": "Capital type", "type": "string", "required": false }, "coordinates": { "label": "Coordinates", "type": "string", "required": false, "description": "The geographic coordinates of the capital." }, "latd": { "label": "Latitude degrees", "type": "string", "required": false, "description": "The degrees of the capital's latitude." }, "latm": { "label": "Latitude minutes", "type": "string", "description": "The minutes of the capital's latitude." }, "latNS": { "label": "Latitude NS", "type": "string", "description": "The direction of the capital's latitude." }, "longd": { "label": "Longitude degrees", "type": "string", "description": "The degrees of the capital's longitude." }, "longm": { "label": "Longitude minutes", "type": "string", "description": "The minutes of the capital's longitude." }, "longEW": { "label": "Longitude EW", "type": "string", "description": "The direction of the capital's longitude." }, "admin_center": { "label": "Administrative center", "type": "string", "required": false, "description": "Location/s of administrative center/s." }, "admin_center_type": { "label": "Administrative center type", "type": "string", "required": false, "default": "Administrative center" }, "capital2": { "label": "Capital 2", "type": "string", "required": false, "description": "Name of country/territory's capital, wikilinked if link exists." }, "capital_type2": { "label": "Capital 2 type", "type": "string", "required": false }, "admin_center2": { "label": "Administrative center 2", "type": "string", "required": false }, "admin_center_type2": { "label": "Administrative center 2 type", "type": "string", "required": false }, "largest_city": { "label": "Largest city", "type": "string", "required": false, "description": "Name of country/territory's largest city. Use \"capital\" (without quotemarks) if it's the capital." }, "largest_settlement": { "label": "Largest settlement", "type": "string", "required": false, "description": "Name of largest settlement if not a city." }, "largest_settlement_type": { "label": "Largest settlement type", "type": "string", "required": false, "description": "Type of settlement if largest settlement not a city." }, "official_languages": { "label": "Official languages", "type": "string", "required": false, "description": "Languages recognised in legislation, constitution, etc." }, "national_languages": { "label": "National languages", "type": "string", "required": false, "description": "Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc." }, "regional_languages": { "label": "Regional languages", "type": "string", "required": false, "description": "Languages recognised or associated with particular regions within the country/territory." }, "languages_type": { "label": "Languages type", "type": "string", "description": "Use to specify a further type of language, if not official, national or regional." }, "languages_sub": { "label": "Languages sub", "type": "string", "required": false, "description": "Is this further type of language a sub-item of the previous non-sub type?", "example": "'yes' or 'no'" }, "languages": { "label": "Languages", "type": "string", "required": false, "description": "Languages of the further type." }, "languages2_type": { "label": "2nd languages type", "type": "string", "description": "Use to specify a 2nd further type of language, if not official, national or regional." }, "languages2_sub": { "label": "Languages 2 sub", "type": "string", "required": false, "description": "Is the second alternative type of languages a sub-item of the previous non-sub type?", "example": "'yes or 'no'" }, "languages2": { "label": "Languages 2", "type": "string", "required": false, "description": "Languages of the second further type." }, "ethnic_groups": { "label": "Ethnic groups", "type": "string", "required": false, "description": "The primary ethnic groups of the country", "example": "{{unbulleted list | 68.8% [[Bumiputera (Malaysia)|Bumiputera]] | 23.2% [[Malaysian Chinese|Chinese]] | &nbsp;7.0% [[Malaysian Indian|Indian]] | &nbsp;1.0% Others }}" }, "ethnic_groups_ref": { "label": "Ethnic groups reference", "type": "string", "required": false, "description": "Reference, in <ref> format, of ethnic composition" }, "ethnic_groups_year": { "label": "Ethnic groups year", "type": "number", "required": false, "description": "Year the ethnic group statistic is from", "example": "2017" }, "religion": { "label": "Religions", "type": "string", "required": false, "description": "List of religious affiliations in {{ublist}} format", "example": "{{ublist|list_style=line-height:1.3em; |class=nowrap | 33.2% [[Buddhism in Singapore|Buddhism]]...}}" }, "religion_ref": { "label": "Religions reference", "type": "string", "required": false, "description": "Reference, in <ref> format, of religious composition" }, "demonym": { "label": "Demonym", "type": "string", "required": false, "description": "Name of residents of this country", "example": "Singaporean", "suggested": true }, "org_type": { "label": "Organization type", "type": "string", "required": false }, "membership": { "label": "membership", "type": "string", "required": false }, "membership_type": { "label": "membership_type", "type": "string", "required": false }, "government_type": { "label": "Type of government", "type": "string", "required": false, "description": "The type of government, e.g. federal republic", "example": "[[Monarchy]]" }, "politics_link": { "label": "Politics link", "type": "string", "required": false }, "leader_title1": { "label": "Leader 1 title", "type": "line", "required": false, "description": "Title of principal leader", "example": "[[President of Singapore|President]]" }, "leader_name1": { "label": "Leader 1 name", "type": "line", "required": false, "description": "Name of principal leader", "example": "[[Halimah Yacob]]" }, "leader_title2": { "label": "Leader 2 title", "type": "line", "required": false, "description": "Title of 2nd leader", "example": "[[Prime Minister of Singapore|Prime Minister]]" }, "leader_name2": { "label": "Leader 2 name", "type": "line", "description": "Name of 2nd leader", "example": "[[Lee Hsien Loong]]" }, "leader_title3": { "label": "Leader 3 title", "type": "line", "required": false, "description": "Title of 3rd leader", "example": "[[Deputy Prime Minister of Singapore|Deputy Prime Ministers]]" }, "leader_name3": { "label": "Leader 3 name", "type": "line", "description": "Name of 3rd leader", "example": "[[Teo Chee Hean]]<br>[[Tharman Shanmugaratnam]]" }, "leader_title4": { "label": "Leader 4 title", "type": "line", "required": false, "description": "Title of the 4th leader", "example": "[[President pro tempore of the United States Senate|President pro tempore]]" }, "leader_name4": { "label": "Leader 4 name", "type": "line", "description": "Name of the 4th leader" }, "leader_title5": { "label": "leader_title5", "type": "string", "required": false }, "leader_name5": { "label": "Leader name 5", "type": "string" }, "leader_title6": { "label": "Leader title 6", "type": "string", "required": false }, "leader_name6": { "label": "Leader name 6", "type": "string" }, "leader_title7": { "label": "Leader title7", "type": "string", "required": false }, "leader_name7": { "label": "Leader name 7", "type": "string" }, "leader_title8": { "label": "Leader title 8", "type": "string", "required": false }, "leader_name8": { "label": "Leader name 8", "type": "string" }, "leader_title9": { "label": "Leader title 9", "type": "string", "required": false }, "leader_name9": { "label": "Leader name 9", "type": "string" }, "leader_title10": { "label": "Leader title 10", "type": "string", "required": false }, "leader_name10": { "label": "Leader name 10", "type": "string" }, "leader_title11": { "label": "Leader title 11", "type": "string", "required": false }, "leader_name11": { "label": "Leader name 11", "type": "string" }, "leader_title12": { "label": "Leader title 12", "type": "string", "required": false }, "leader_name12": { "label": "Leader name 12", "type": "string" }, "leader_title13": { "label": "Leader title 13", "type": "string", "required": false }, "leader_name13": { "label": "Leader name 13", "type": "string" }, "leader_title14": { "label": "Leader title 14", "type": "string", "required": false }, "leader_name14": { "label": "Leader name 14", "type": "string" }, "legislature": { "label": "Legislature", "type": "line", "description": "Name of, and link to, the country's national legislature", "example": "[[Parliament of Singapore|Parliament]]" }, "upper_house": { "description": "Upper house of the country or organization's legislature", "type": "string", "example": "[[United States House of Representatives|House of Representatives]]" }, "lower_house": { "description": "Lower house of the country or organization's legislature", "label": "Lower house", "type": "string", "example": "[[United States House of Representatives|House of Representatives]]" }, "sovereignty_type": { "label": "Sovereignty type", "type": "line", "required": false, "description": "Type of sovereignty this country has", "example": "Independence" }, "sovereignty_note": { "label": "Sovereignty note", "type": "content", "required": false, "description": "Note about this country's sovereignty", "example": "from the [[United Kingdom]]" }, "established": { "label": "established", "type": "string", "required": false }, "established_event1": { "label": "Establishment event 1", "type": "string", "required": false }, "established_date1": { "label": "Establishment date 1", "type": "string", "required": false }, "established_event2": { "label": "Establishment event 2", "type": "string", "required": false }, "established_date2": { "label": "Establishment date 2", "type": "string", "required": false }, "established_event3": { "label": "Establishment event 3", "type": "string", "required": false }, "established_date3": { "label": "Establishment date 3", "type": "string", "required": false }, "established_event4": { "label": "Establishment event 4", "type": "string", "required": false }, "established_date4": { "label": "established_date4", "type": "string", "required": false }, "established_event5": { "label": "Establishment event 5", "type": "string", "required": false }, "established_date5": { "label": "established_date5", "type": "string", "required": false }, "established_event6": { "label": "established_event6", "type": "string", "required": false }, "established_date6": { "label": "established_date6", "type": "string", "required": false }, "established_event7": { "label": "established_event7", "type": "string", "required": false }, "established_date7": { "label": "established_date7", "type": "string", "required": false }, "established_event8": { "label": "established_event8", "type": "string", "required": false }, "established_date8": { "label": "established_date8", "type": "string", "required": false }, "established_event9": { "label": "established_event9", "type": "string", "required": false }, "established_date9": { "label": "established_date9", "type": "string", "required": false }, "established_event10": { "label": "established_event10", "type": "string", "required": false }, "established_date10": { "label": "established_date10", "type": "string", "required": false }, "established_event11": { "label": "established_event11", "type": "string", "required": false }, "established_date11": { "label": "established_date11", "type": "string", "required": false }, "established_event12": { "label": "established_event12", "type": "string", "required": false }, "established_date12": { "label": "established_date12", "type": "string", "required": false }, "area_km2": { "label": "Land area (km²)", "type": "number", "required": false, "description": "Land area of the country in square kilometers", "example": "722.5", "suggested": true }, "area_link": { "label": "area_link", "type": "string", "required": false }, "area_label": { "label": "area_label", "type": "string", "required": false }, "FR_foot4": { "label": "FR_foot4", "type": "string", "required": false, "deprecated": true }, "area_footnote": { "label": "area_footnote", "type": "string", "required": false }, "area_rank": { "label": "Area rank", "type": "string", "required": false, "description": "Rank among countries of land area", "example": "174th", "suggested": true }, "area_sq_mi": { "label": "Land area (mi²)", "type": "number", "required": false, "description": "Land area of the country in square miles", "example": "290" }, "percent_water": { "label": "percent_water", "type": "string", "required": false }, "area_label2": { "label": "area_label2", "type": "string", "required": false }, "area_data2": { "label": "area_data2", "type": "string", "required": false }, "area_label3": { "label": "area_label3", "type": "string", "required": false }, "area_data3": { "label": "area_data3", "type": "string", "required": false }, "FR_metropole": { "label": "FR_metropole", "type": "string", "required": false, "deprecated": true }, "FR_foot2": { "label": "FR_foot2", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_km2": { "label": "FR_IGN_area_km2", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_rank": { "label": "FR_IGN_area_rank", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_sq_mi": { "label": "FR_IGN_area_sq_mi", "type": "string", "required": false, "deprecated": true }, "FR_foot3": { "label": "FR_foot3", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_km2": { "label": "FR_cadastre_area_km2", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_rank": { "label": "FR_cadastre_area_rank", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_sq_mi": { "label": "FR_cadastre_area_sq_mi", "type": "string", "required": false, "deprecated": true }, "population_estimate": { "label": "Population estimate", "type": "number", "required": false, "description": "An estimate of the country's population", "example": "24,000,000" }, "population_census": { "label": "Population census", "type": "string" }, "population_link": { "label": "Population link", "type": "url" }, "population_estimate_year": { "label": "Population estimate year", "type": "number", "description": "The year the population estimate is from", "example": "2018" }, "population_estimate_rank": { "label": "Population estimate rank", "type": "string", "description": "Rank among countries in estimated population", "example": "3rd" }, "population_label2": { "label": "population_label2", "type": "string", "required": false }, "population_data2": { "label": "Population data 2", "type": "string", "required": false }, "population_label3": { "label": "Population label 3", "type": "string", "required": false }, "population_data3": { "label": "Population data 3", "type": "string", "required": false }, "population_census_year": { "label": "Population census year", "type": "number", "required": false, "description": "Year the population census statistics are from", "example": "2010" }, "population_census_rank": { "label": "Population census rank", "type": "string", "description": "Rank among countries in census population", "example": "3rd" }, "population_density_km2": { "label": "Population density per km²", "type": "number", "example": "20,212", "description": "Population density per square kilometer" }, "population_density_sq_mi": { "label": "Population density per mi²", "type": "number", "description": "Population density per square mile", "example": "20,212" }, "pop_den_footnote": { "label": "Population density footnote", "type": "string", "description": "footnote about the population density statistic" }, "population_density_rank": { "label": "Population density rank", "type": "string", "required": false, "description": "Rank among countries in population density", "example": "3rd" }, "FR_metropole_population": { "label": "FR_metropole_population", "type": "string", "required": false, "deprecated": true }, "FR_total_population_estimate_year": { "label": "FR_total_population_estimate_year", "type": "string", "deprecated": true }, "FR_foot": { "label": "FR_foot", "type": "string", "deprecated": true }, "FR_total_population_estimate": { "label": "FR_total_population_estimate", "type": "string", "deprecated": true }, "FR_total_population_estimate_rank": { "label": "FR_total_population_estimate_rank", "type": "string", "deprecated": true }, "FR_metropole_population_estimate_rank": { "label": "FR_metropole_population_estimate_rank", "type": "string", "deprecated": true }, "FR_foot5": { "label": "FR_foot5", "type": "string", "required": false, "deprecated": true }, "GDP_PPP": { "label": "GDP (PPP)", "type": "line", "required": false, "description": "Gross domestic product (purchasing power parity)", "example": "$554.855 billion", "suggested": true }, "GDP_PPP_year": { "label": "GDP (PPP) year cited", "type": "number", "required": false, "description": "Year the GDP (PPP) statistic is cited from", "example": "2018", "suggested": true }, "GDP_PPP_rank": { "label": "GDP (PPP) rank", "type": "string", "required": false, "description": "Rank among countries for GDP PPP", "example": "39th" }, "GDP_PPP_per_capita": { "label": "GDP_PPP_per_capita", "type": "line", "required": false, "description": "Gross domestic product (purchasing power parity) per capita", "example": "$98,014" }, "GDP_PPP_per_capita_rank": { "label": "GDP (PPP) per capita rank", "type": "line", "required": false, "description": "Rank among countries for GDP PPP per capita", "example": "3rd" }, "GDP_nominal": { "label": "GDP (nominal)", "type": "string", "required": false, "description": "Nominal GDP of the country" }, "GDP_nominal_year": { "label": "GDP (nominal) year", "type": "number", "required": false, "description": "Year cited for the country's nominal GDP statistic" }, "GDP_nominal_rank": { "label": "GDP (nominal) rank", "type": "string", "required": false, "description": "Rank among countries for nominal GDP", "example": "41st" }, "GDP_nominal_per_capita": { "label": "GDP (nominal) per capita", "type": "string", "required": false, "description": "Nominal GDP per capita in the country", "example": "$61,766" }, "GDP_nominal_per_capita_rank": { "label": "GDP (nominal) per capita rank", "type": "string", "required": false, "description": "Rank among countries for nominal GDP per capita", "example": "8th" }, "Gini": { "label": "Gini index", "type": "number", "required": false, "description": "Gini index of the country", "example": "46.4" }, "Gini_year": { "label": "Gini index year cited", "type": "number", "required": false, "description": "Year the gini index statistic is cited for", "example": "2014" }, "Gini_change": { "label": "Gini change", "type": "string", "required": false, "description": "\"increase\" or \"decrease\" (over last year)", "example": "increase" }, "Gini_ref": { "label": "Gini index reference", "type": "line", "required": false, "description": "Reference for cited Gini index statistic" }, "Gini_rank": { "label": "Gini rank", "type": "string", "required": false, "description": "Rank of Gini indices", "example": "30th" }, "HDI": { "label": "Human development index", "type": "number", "required": false, "example": "0.932", "suggested": true, "description": "The country's human development index (HDI)" }, "HDI_year": { "label": "Human Development Index year", "type": "number", "required": false, "description": "Year to which the HDI statistic refers", "example": "2017", "suggested": true }, "HDI_change": { "label": "HDI change", "type": "string", "required": false, "description": "\"increase\" or \"decrease\" from previous year", "example": "increase" }, "HDI_ref": { "label": "Human Development Index reference", "type": "line", "required": false, "description": "Reference for HDI statistic" }, "HDI_rank": { "label": "Human development index rank", "type": "string", "required": false, "description": "Rank among countries for HDI score", "example": "9th" }, "currency": { "label": "Currency", "type": "line", "required": false, "description": "National/official currency name and article link", "example": "[[Singapore dollar]]" }, "currency_code": { "label": "Currency code", "type": "line", "required": false, "description": "Currency code of the official currency", "example": "SGD" }, "time_zone": { "label": "Time zone", "type": "line", "required": false, "description": "National time zone(s)", "example": "[[Singapore Standard Time|SST]]" }, "utc_offset": { "label": "UTC offsets", "type": "string", "example": "−4 to −12, +10, +11" }, "utc_offset_DST": { "label": "UTF offsets (DST)", "type": "string", "example": "−4 to −10" }, "DST_note": { "label": "DST note", "type": "string", "example": "{{efn|name=\"time\"}}" }, "time_zone_DST": { "label": "Time zones (DST)", "type": "string", "required": false }, "DST": { "label": "Daylight savings time", "type": "string", "required": false }, "antipodes": { "label": "antipodes", "type": "string", "required": false }, "date_format": { "label": "Date format", "type": "string", "required": false }, "drives_on": { "label": "drives on", "type": "string", "required": false }, "rail gauge": { "label": "Rail gauge", "type": "string", "required": false }, "calling_code": { "label": "Calling code", "type": "string", "example": "+1" }, "patron_saint": { "label": "Patron saint", "aliases": [ "patron_saints" ], "type": "string", "required": false }, "iso3166code": { "label": "ISO 3166 code", "type": "string", "description": "ISO 3166 code for the country", "example": "US" }, "cctld": { "label": "Country code top level domain", "type": "string", "example": ".se" }, "official_website": { "label": "official_website", "type": "string", "required": false, "description": "For geopolitical entities: do not use government website (e.g. usa.gov) for countries (e.g. [[United States]])." }, "footnote_a": { "label": "footnote_a", "type": "string", "required": false }, "footnote_b": { "label": "footnote_b", "type": "string", "required": false }, "footnote_c": { "label": "footnote_c", "type": "string", "required": false }, "footnote_d": { "label": "footnote_d", "type": "string", "required": false }, "footnote_e": { "label": "footnote_e", "type": "string", "required": false }, "footnote_f": { "label": "footnote_f", "type": "string", "required": false }, "footnote_g": { "label": "footnote_g", "type": "string", "required": false }, "footnote_h": { "label": "footnote_h", "type": "string", "required": false }, "footnote1": { "label": "footnote1", "type": "string", "required": false }, "footnote2": { "label": "footnote2", "type": "string", "required": false }, "footnote3": { "label": "footnote3", "type": "string", "required": false }, "footnote4": { "label": "footnote4", "type": "string", "required": false }, "footnote5": { "label": "footnote5", "type": "string", "required": false }, "footnote6": { "label": "footnote6", "type": "string", "required": false }, "footnote7": { "label": "footnote7", "type": "string", "required": false }, "footnote8": { "label": "footnote8", "type": "string", "required": false }, "footnotes": { "label": "footnotes", "type": "string", "required": false }, "navbar": { "label": "navbar", "type": "string", "required": false }, "micronation": {}, "status": { "type": "line" }, "status_text": { "type": "line" }, "empire": {}, "year_end": { "type": "number" }, "year_exile_start": { "type": "number" }, "year_exile_end": { "type": "number" }, "life_span": { "type": "line" }, "year_start": { "type": "number" }, "flag_size": { "type": "line" }, "flag_alt": { "type": "string" }, "flag_alt2": { "type": "string" }, "flag_type": { "type": "string" }, "coa_size": { "type": "line" }, "englishmotto": { "type": "string", "label": "Motto in English", "description": "The country's motto translated into English" }, "image_map_size": { "type": "line" }, "image_map_alt": { "type": "string" }, "image_map_caption": { "type": "content" }, "image_map2_size": { "type": "line" }, "image_map2_alt": { "type": "string" }, "image_map2_caption": { "type": "content" }, "loctext": { "type": "string" }, "capital_exile": { "type": "string" }, "recognized_languages": { "aliases": [ "recognised_languages" ], "type": "content", "label": "Recognized languages", "description": "Recognized languages of the country, possibly in list format" }, "recognized_national_languages": { "aliases": [ "recognised_national_languages" ], "type": "content", "label": "Recognized national languages", "description": "Recognized national languages of the country, possibly in list format" }, "recognized_regional_languages": { "aliases": [ "recognised_regional_languages" ], "type": "content", "label": "Recognized regional languages", "description": "Recognized regional languages of the country, possibly in list format" }, "common_languages": { "type": "content", "label": "Common languages", "description": "Common languages of the country, possibly in list format", "example": "{{ublist|[[English language|English]]|[[Spanish language|Spanish]]|[[Chinese language|Chinese]]}}" }, "religion_year": { "type": "number", "label": "Religion statistic year", "description": "Year the religion statistic is from", "example": "2015" }, "leader_title15": { "type": "line" }, "leader_name15": { "type": "line" }, "title_leader": { "type": "line", "label": "Leader's title", "description": "Title of the country's leader", "example": "[[President of the United States|President]]" }, "year_leader1": { "type": "line", "label": "Leader 1 years", "description": "Years the first leader reigned", "example": "1776-1795" }, "leader1": { "type": "line", "label": "Leader 1", "description": "The first leader of the country", "example": "[[George Washington]]" }, "year_leader2": { "type": "line" }, "leader2": { "type": "line" }, "year_leader3": { "type": "line" }, "leader3": { "type": "line" }, "year_leader4": { "type": "line" }, "leader4": { "type": "line" }, "year_leader5": { "type": "line" }, "leader5": { "type": "line" }, "year_leader6": { "type": "line" }, "leader6": { "type": "line" }, "year_leader7": { "type": "line" }, "leader7": { "type": "line" }, "year_leader8": { "type": "line" }, "leader8": { "type": "line" }, "year_leader9": { "type": "line" }, "leader9": { "type": "line" }, "year_leader10": { "type": "line" }, "leader10": { "type": "line" }, "year_leader11": { "type": "line", "label": "Leader 11 years", "description": "Year of leader 11", "example": "1980-1987" }, "leader11": { "type": "line" }, "title_representative": { "type": "line", "label": "Representative title", "description": "Title of the country's representative", "example": "[[Governor General of Canada|Governor General]]" }, "year_representative1": { "type": "line", "label": "Representative 1 years", "description": "Year of representative 1", "example": "1492-1506" }, "representative1": { "type": "line", "label": "Representative 1", "description": "First representative" }, "year_representative2": { "type": "line", "label": "Representative 2 years", "description": "Year of representative 2", "example": "1552-1580" }, "representative2": { "type": "line" }, "year_representative3": { "type": "line", "label": "Representative 3 years", "description": "Year of representative 3", "example": "1652-1666" }, "representative3": { "type": "line" }, "year_representative4": { "type": "line", "label": "Representative 4 year", "description": "Year of representative 4", "example": "1652-1666" }, "representative4": { "type": "line" }, "year_representative5": { "type": "line", "label": "Representative 5 years", "description": "Year of representative 5", "example": "1652-1666" }, "representative5": { "type": "line" }, "title_deputy": { "type": "line" }, "year_deputy1": { "type": "line", "label": "Deputy 1 years", "description": "Years of the 1st deputy", "example": "2006-2009" }, "deputy1": { "type": "line", "label": "Deputy 1", "description": "First deputy" }, "year_deputy2": { "type": "line", "label": "Deputy 2 years", "description": "Years of the 2nd deputy", "example": "2009-2011" }, "deputy2": { "type": "line" }, "year_deputy3": { "type": "line", "label": "Deputy 3 years", "description": "Years of the 3rd deputy", "example": "2011-2013" }, "deputy3": { "type": "line" }, "year_deputy4": { "type": "line", "label": "Deputy 4 years", "description": "Years of the 4th deputy", "example": "2013-2016" }, "deputy4": { "type": "line" }, "year_deputy5": { "type": "line", "label": "Deputy 5 years", "description": "Years of the 5th deputy", "example": "2016-2018" }, "deputy5": { "type": "line" }, "year_deputy6": { "type": "line", "label": "Deputy 6 years", "description": "Years of the 6th deputy", "example": "2018-" }, "deputy6": { "type": "line" }, "type_house1": { "type": "line" }, "house1": { "type": "line" }, "type_house2": { "type": "line" }, "house2": { "type": "line" }, "event_pre": { "type": "line" }, "established_event13": { "label": "Establishment event 13", "type": "line" }, "established_date13": { "label": "Establishment date 13", "type": "date" }, "established_event14": { "type": "line" }, "established_date14": { "type": "line" }, "established_event15": { "type": "line" }, "established_date15": { "type": "line" }, "event_start": { "label": "Starting event", "description": "The foundational event of the country", "example": "Established", "type": "string" }, "date_pre": {}, "date_start": { "label": "Date established", "description": "Date the country, dynasty or organization was established (date of event_start)", "example": "601 CE", "type": "string" }, "event1": { "label": "Event 1", "description": "First significant event", "example": "Signing of the [[Chanyuan Treaty]] with [[Liao dynasty|Liao]]", "type": "string" }, "date_event1": { "label": "Event 1 date", "description": "Date of the first significant event", "example": "601", "type": "date" }, "event2": { "label": "Event 2", "description": "Second significant event", "example": "[[Alliance Conducted at Sea|Alliance with Jin]]", "type": "string" }, "date_event2": { "label": "Event 2 date", "description": "Date of the second significant event", "type": "string" }, "event3": { "label": "Event 3", "description": "Third significant event", "example": "[[Jingkang Incident]]", "type": "string" }, "date_event3": {}, "event4": { "label": "Event 4", "description": "Fourth significant event", "example": "Beginning of [[Mongol conquest of the Song dynasty|Mongol invasion]]", "type": "string" }, "date_event4": {}, "event5": { "label": "Event 5", "description": "Fifth significant event", "example": "Fall of [[Hangzhou|Lin'an]]", "type": "string" }, "date_event5": {}, "event6": { "label": "Event 6", "description": "Sixth significant event", "example": "[[Krystallnacht]]", "type": "string" }, "date_event6": {}, "event_end": { "label": "Event ending the country", "description": "The event that caused the country to stop existing or transition, if applicable", "example": "[[Battle of Yamen]] (end of dynasty)", "type": "string" }, "date_end": { "label": "End date", "description": "Date the country stopped existing or transitioned, if applicable", "example": "1433", "type": "date" }, "event_post": {}, "date_post": {}, "area_ha": {}, "area_acre": {}, "area_land_km2": {}, "area_land_ha": {}, "area_land_sq_mi": {}, "area_land_acre": {}, "area_water_km2": {}, "area_water_ha": {}, "area_water_sq_mi": {}, "area_water_acre": {}, "stat_area1": {}, "stat_area2": {}, "stat_area3": {}, "stat_area4": {}, "stat_area5": {}, "area_land_footnote": {}, "area_water_footnote": {}, "stat_year1": {}, "ref_area1": {}, "stat_year2": {}, "ref_area2": {}, "stat_year3": {}, "ref_area3": {}, "stat_year4": {}, "ref_area4": {}, "stat_year5": { "label": "Statistic 5 year", "description": "Year of statistic 5", "example": "1933", "type": "number" }, "ref_area5": {}, "stat_pop1": {}, "stat_pop2": {}, "stat_pop3": {}, "stat_pop4": {}, "stat_pop5": {}, "ref_pop1": {}, "ref_pop2": {}, "ref_pop3": {}, "ref_pop4": {}, "ref_pop5": {}, "nummembers": {}, "p1": {}, "s1": {}, "flag_p1": {}, "image_p1": {}, "border_p1": {}, "flag_p2": {}, "image_p2": {}, "p2": {}, "border_p2": {}, "flag_p3": {}, "image_p3": {}, "p3": {}, "border_p3": {}, "flag_p4": {}, "image_p4": {}, "p4": {}, "border_p4": {}, "flag_p5": {}, "image_p5": {}, "p5": {}, "border_p5": {}, "flag_p6": {}, "image_p6": {}, "p6": {}, "border_p6": {}, "flag_p7": {}, "image_p7": {}, "p7": {}, "border_p7": {}, "flag_p8": {}, "image_p8": {}, "p8": {}, "border_p8": {}, "flag_p9": {}, "image_p9": {}, "p9": {}, "border_p9": {}, "flag_p10": {}, "image_p10": {}, "p10": {}, "border_p10": {}, "flag_p11": {}, "image_p11": {}, "p11": {}, "border_p11": {}, "flag_p12": {}, "image_p12": {}, "p12": {}, "border_p12": {}, "flag_p13": {}, "image_p13": {}, "p13": {}, "border_p13": {}, "flag_p14": {}, "image_p14": {}, "p14": {}, "border_p14": {}, "flag_p15": {}, "image_p15": {}, "p15": {}, "border_p15": {}, "flag_s1": {}, "image_s1": {}, "border_s1": {}, "flag_s2": {}, "image_s2": {}, "s2": {}, "border_s2": {}, "flag_s3": {}, "image_s3": {}, "s3": {}, "border_s3": {}, "flag_s4": {}, "image_s4": {}, "s4": {}, "border_s4": {}, "flag_s5": {}, "image_s5": {}, "s5": {}, "border_s5": {}, "flag_s6": {}, "image_s6": {}, "s6": {}, "border_s6": {}, "flag_s7": {}, "image_s7": {}, "s7": {}, "border_s7": {}, "flag_s8": {}, "image_s8": {}, "s8": {}, "border_s8": {}, "flag_s9": {}, "image_s9": {}, "s9": {}, "border_s9": {}, "flag_s10": {}, "image_s10": {}, "s10": {}, "border_s10": {}, "flag_s11": {}, "image_s11": {}, "s11": {}, "border_s11": {}, "flag_s12": {}, "image_s12": {}, "s12": {}, "border_s12": {}, "flag_s13": {}, "image_s13": {}, "s13": {}, "border_s13": {}, "flag_s14": {}, "image_s14": {}, "s14": {}, "border_s14": {}, "flag_s15": {}, "image_s15": {}, "s15": {}, "border_s15": {}, "today": { "label": "Today part of", "description": "For former countries, a list of countries of which the former country's territories are now part, if no more than four.", "example": "{{plainlist| *[[Czech Republic]] *[[Denmark]] *[[France]] *[[Germany]] }}", "type": "content", "suggested": true }, "footnotes2": {}, "symbol_caption": {}, "nested": {} }, "paramOrder": [ "conventional_long_name", "common_name", "linking_name", "native_name", "name", "image_flag", "flag_width", "alt_flag", "flag_border", "flag_caption", "image_flag2", "alt_flag2", "flag2_border", "image_coat", "symbol_width", "alt_coat", "symbol_type", "symbol_type_article", "text_symbol", "text_symbol_type", "other_symbol", "other_symbol_type", "national_motto", "motto", "national_anthem", "anthem", "royal_anthem", "image_map", "map_width", "alt_map", "map_caption", "image_map2", "map2_width", "alt_map2", "map_caption2", "image_map3", "map3_width", "alt_map3", "map_caption3", "capital", "capital_type", "coordinates", "latd", "latm", "latNS", "longd", "longm", "longEW", "admin_center", "admin_center_type", "capital2", "capital_type2", "admin_center2", "admin_center_type2", "largest_city", "largest_settlement", "largest_settlement_type", "official_languages", "national_languages", "regional_languages", "languages_type", "languages_sub", "languages", "languages2_type", "languages2_sub", "languages2", "ethnic_groups", "ethnic_groups_ref", "ethnic_groups_year", "religion", "religion_ref", "demonym", "org_type", "membership", "membership_type", "government_type", "politics_link", "leader_title1", "leader_name1", "leader_title2", "leader_name2", "leader_title3", "leader_name3", "leader_title4", "leader_name4", "leader_title5", "leader_name5", "leader_title6", "leader_name6", "leader_title7", "leader_name7", "leader_title8", "leader_name8", "leader_title9", "leader_name9", "leader_title10", "leader_name10", "leader_title11", "leader_name11", "leader_title12", "leader_name12", "leader_title13", "leader_name13", "leader_title14", "leader_name14", "legislature", "upper_house", "lower_house", "sovereignty_type", "sovereignty_note", "established", "established_event1", "established_date1", "established_event2", "established_date2", "established_event3", "established_date3", "established_event4", "established_date4", "established_event5", "established_date5", "established_event6", "established_date6", "established_event7", "established_date7", "established_event8", "established_date8", "established_event9", "established_date9", "established_event10", "established_date10", "established_event11", "established_date11", "established_event12", "established_date12", "area_km2", "area_link", "area_label", "FR_foot4", "area_footnote", "area_rank", "area_sq_mi", "percent_water", "area_label2", "area_data2", "area_label3", "area_data3", "FR_metropole", "FR_foot2", "FR_IGN_area_km2", "FR_IGN_area_rank", "FR_IGN_area_sq_mi", "FR_foot3", "FR_cadastre_area_km2", "FR_cadastre_area_rank", "FR_cadastre_area_sq_mi", "population_estimate", "population_census", "population_link", "population_estimate_year", "population_estimate_rank", "population_label2", "population_data2", "population_label3", "population_data3", "population_census_year", "population_census_rank", "population_density_km2", "population_density_sq_mi", "pop_den_footnote", "population_density_rank", "FR_metropole_population", "FR_total_population_estimate_year", "FR_foot", "FR_total_population_estimate", "FR_total_population_estimate_rank", "FR_metropole_population_estimate_rank", "FR_foot5", "GDP_PPP", "GDP_PPP_year", "GDP_PPP_rank", "GDP_PPP_per_capita", "GDP_PPP_per_capita_rank", "GDP_nominal", "GDP_nominal_year", "GDP_nominal_rank", "GDP_nominal_per_capita", "GDP_nominal_per_capita_rank", "Gini", "Gini_year", "Gini_change", "Gini_ref", "Gini_rank", "HDI", "HDI_year", "HDI_change", "HDI_ref", "HDI_rank", "currency", "currency_code", "time_zone", "utc_offset", "utc_offset_DST", "DST_note", "time_zone_DST", "DST", "antipodes", "date_format", "drives_on", "rail gauge", "calling_code", "patron_saint", "iso3166code", "cctld", "official_website", "footnote_a", "footnote_b", "footnote_c", "footnote_d", "footnote_e", "footnote_f", "footnote_g", "footnote_h", "footnote1", "footnote2", "footnote3", "footnote4", "footnote5", "footnote6", "footnote7", "footnote8", "footnotes", "navbar", "micronation", "status", "status_text", "empire", "year_end", "year_exile_start", "year_exile_end", "life_span", "year_start", "flag_size", "flag_alt", "flag_alt2", "flag_type", "coa_size", "englishmotto", "image_map_size", "image_map_alt", "image_map_caption", "image_map2_size", "image_map2_alt", "image_map2_caption", "loctext", "capital_exile", "recognized_languages", "recognized_national_languages", "recognized_regional_languages", "common_languages", "religion_year", "leader_title15", "leader_name15", "title_leader", "year_leader1", "leader1", "year_leader2", "leader2", "year_leader3", "leader3", "year_leader4", "leader4", "year_leader5", "leader5", "year_leader6", "leader6", "year_leader7", "leader7", "year_leader8", "leader8", "year_leader9", "leader9", "year_leader10", "leader10", "year_leader11", "leader11", "title_representative", "year_representative1", "representative1", "year_representative2", "representative2", "year_representative3", "representative3", "year_representative4", "representative4", "year_representative5", "representative5", "title_deputy", "year_deputy1", "deputy1", "year_deputy2", "deputy2", "year_deputy3", "deputy3", "year_deputy4", "deputy4", "year_deputy5", "deputy5", "year_deputy6", "deputy6", "type_house1", "house1", "type_house2", "house2", "established_event13", "established_date13", "established_event14", "established_date14", "established_event15", "established_date15", "event_pre", "date_pre", "event_start", "date_start", "event1", "date_event1", "event2", "date_event2", "event3", "date_event3", "event4", "date_event4", "event5", "date_event5", "event6", "date_event6", "event_end", "date_end", "event_post", "date_post", "area_ha", "area_acre", "area_land_km2", "area_land_ha", "area_land_sq_mi", "area_land_acre", "area_water_km2", "area_water_ha", "area_water_sq_mi", "area_water_acre", "stat_area1", "stat_area2", "stat_area3", "stat_area4", "stat_area5", "area_land_footnote", "area_water_footnote", "stat_year1", "ref_area1", "stat_year2", "ref_area2", "stat_year3", "ref_area3", "stat_year4", "ref_area4", "stat_year5", "ref_area5", "stat_pop1", "stat_pop2", "stat_pop3", "stat_pop4", "stat_pop5", "ref_pop1", "ref_pop2", "ref_pop3", "ref_pop4", "ref_pop5", "nummembers", "p1", "s1", "flag_p1", "image_p1", "border_p1", "flag_p2", "image_p2", "p2", "border_p2", "flag_p3", "image_p3", "p3", "border_p3", "flag_p4", "image_p4", "p4", "border_p4", "flag_p5", "image_p5", "p5", "border_p5", "flag_p6", "image_p6", "p6", "border_p6", "flag_p7", "image_p7", "p7", "border_p7", "flag_p8", "image_p8", "p8", "border_p8", "flag_p9", "image_p9", "p9", "border_p9", "flag_p10", "image_p10", "p10", "border_p10", "flag_p11", "image_p11", "p11", "border_p11", "flag_p12", "image_p12", "p12", "border_p12", "flag_p13", "image_p13", "p13", "border_p13", "flag_p14", "image_p14", "p14", "border_p14", "flag_p15", "image_p15", "p15", "border_p15", "flag_s1", "image_s1", "border_s1", "flag_s2", "image_s2", "s2", "border_s2", "flag_s3", "image_s3", "s3", "border_s3", "flag_s4", "image_s4", "s4", "border_s4", "flag_s5", "image_s5", "s5", "border_s5", "flag_s6", "image_s6", "s6", "border_s6", "flag_s7", "image_s7", "s7", "border_s7", "flag_s8", "image_s8", "s8", "border_s8", "flag_s9", "image_s9", "s9", "border_s9", "flag_s10", "image_s10", "s10", "border_s10", "flag_s11", "image_s11", "s11", "border_s11", "flag_s12", "image_s12", "s12", "border_s12", "flag_s13", "image_s13", "s13", "border_s13", "flag_s14", "image_s14", "s14", "border_s14", "flag_s15", "image_s15", "s15", "border_s15", "today", "footnotes2", "symbol_caption", "nested" ] } </templatedata> {{cob}} <includeonly>{{Sandbox other|| <!--Categories below this line, please; interwikis at Wikidata--> [[Category:Country infobox templates| ]] [[Category:Templates that add a tracking category]] }}</includeonly> 965378ebc164be211eeb082cae05a1663a245efc Template:Infobox military conflict/doc 10 1510 2845 2023-09-27T01:07:25Z w>Cinderella157 0 Undid revision 1177120633 by [[Special:Contributions/Vascoescatolico|Vascoescatolico]] ([[User talk:Vascoescatolico|talk]])Not for test wikitext text/x-wiki {{Documentation subpage}} {{High-use|16,100}} {{Lua|Module:Infobox military conflict}} __TOC__ ==Usage== {{Infobox military conflict | conflict = Battle of Lützen | partof = the [[Thirty Years' War]] | image = Battle of Lutzen.jpg | alt = Battle of Lutzen by Carl Whalbom depicting King Gustavus Aolphus falling from a horse mortally wounded in a melee | image_size = 300px | caption = The '' '''Battle of Lützen''' '' by [[Carl Wahlbom]] shows the death of King [[Gustavus Adolphus]] on 16 November 1632. | date = 6 November ([[Old Style and New Style dates|O.S.]]) or 16 November ([[Old Style and New Style dates|N.S.]]), 1632 | place = Near [[Lützen]], southwest of [[Leipzig]]<br />(present-day [[Germany]]) | coordinates = {{coord|51|15|N|12|08|E|region:DE_type:city}} | result = Protestant victory <br />(see {{blue|Aftermath}} section) | combatant1 = {{flagicon|Sweden|1562}} [[Swedish Empire|Sweden]]<br />[[Protestant Union]] | combatant2 = {{flag|Holy Roman Empire}}<br/>{{flagicon image|Catholic League (Germany).svg}} [[Catholic League (German)|Catholic League]] | commander1 = {{flagicon|Sweden|1562}} [[Gustavus Adolphus]]{{KIA}}<br/>{{flagicon|Sweden|1562}} [[Dodo zu Innhausen und Knyphausen|Dodo von Knyphausen]]<br/>{{Flagicon|Electorate of Saxony}} [[Bernhard of Saxe-Weimar]]<br/>{{flagicon|Sweden|1562}} [[Robert Munro, 18th Baron of Foulis]] | commander2 = {{flagicon|Holy Roman Empire}} [[Albrecht von Wallenstein]]<br/>{{flagicon|Holy Roman Empire}} [[Heinrich Holk]]<br/>{{flagicon|Holy Roman Empire}} [[Gottfried zu Pappenheim|Count Gottfried zu Pappenheim]]{{DOW}} | strength1 = 12,800 infantry<br />6,200 cavalry<br />60 guns | strength2 = 10,000 infantry<br />7,000 cavalry, plus 3,000 infantry and 2,000 cavalry on arrival<br />24 guns | casualties1 = 3,400 dead and 1,600 wounded or missing | casualties2 = Probably about the same as Swedish casualties{{fakeref|1}} }} A military conflict infobox (sometimes referred to as a warbox) may be used to summarize information about a particular military conflict (a battle, campaign, war, or group of related wars) in a standard manner. Information summarized in an infobox should follow the general guidance for writing a [[Wikipedia:Manual of Style/Lead section|lead section]]. It should not "make claims" or present material not covered by the article. As with a lead section, there is some discretion in citing information in an infobox. The same guidance should be applied to an infobox as given for [[Wikipedia:Manual of Style/Lead section#Citations|citations in a lead section]]. Information in an infobox must conform with [[Wikipedia:Verifiability|verifiability]], [[Wikipedia:Neutral point of view|point-of-view]] and other policies. Information in the infobox should not be "controversial". Refer the reader to an appropriate section in the article or leave the parameter blank rather than make an unsubstantiated or doubtful claim. The infobox should be added using the {{tl|infobox military conflict}} template, as shown below: <div style="width:250px;background:#dddddd;border: 1px solid black;padding:0.5em 1em 0.5em 1em"><syntaxhighlight lang="wikitext"> {{Infobox military conflict | conflict = | width = | partof = | image = | image_size = | alt = | caption = | date = | place = | coordinates = <!--Use the {{coord}} template --> | map_type = | map_relief = | map_size = | map_marksize = | map_caption = | map_label = | territory = | result = | status = | combatants_header = | combatant1 = | combatant2 = | combatant3 = | commander1 = | commander2 = | commander3 = | units1 = | units2 = | units3 = | strength1 = | strength2 = | strength3 = | casualties1 = | casualties2 = | casualties3 = | notes = | campaignbox = }} </syntaxhighlight></div> '''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]). ===Parameters=== * '''conflict''' – the name of the conflict being described (e.g. "Battle of Lützen" or "World War I"). * '''width''' – ''optional'' – the width of the infobox, e.g. "400px"; defaults to: "315px". * '''partof''' – ''optional'' – the larger conflict containing the event described in the article. For battles or campaigns, this should be the war during which the event takes place; for particularly large wars, this may include a theatre (e.g. "the Eastern Front of World War II"). For wars, the parameter may be used to link to a larger group of wars (e.g. the [[Italian War of 1521–26]] to the [[Italian Wars]]). It may be necessary to insert "the" before the name of the war for proper grammar. * '''image''' – ''optional'' – an image for the warbox. Given in the form <code>Example.jpg</code> * '''image_size''' – ''optional'' – a size for the image * '''alt''' – ''optional'' – [[Wikipedia:Manual of Style/Accessibility/Alternative text for images|Alternative text for image]] that is accessible to [[screen reader]]s to help the [[visually impaired]] * '''caption''' – ''optional'' – the text to be placed below the image. * '''date''' – ''optional'' – the date of the conflict described. Convention is to give the actual date for battles and the years for wars, but this does not always apply. * '''place''' – the location of the conflict. For conflicts covering a wide area, a general description (e.g. "France", or "Europe", or "Worldwide") may be used. * '''coordinates''' &ndash; ''optional'' &ndash; the location of the structure, given as a coordinate pair by using {{tl|coord}} with ''display=inline,title''. Used to display the geographic location of the conflict and the location on a map added with the <code>map_type</code> parameter. * '''map_type''' &ndash; ''optional'' &ndash; the base map to be used for the location map, e.g. "Scotland"; see {{tl|location map}} for more details. * '''map_relief''' &ndash; ''optional'' &ndash; "yes" if the location map is a relief map; see {{tl|location map}} for more details. * '''map_size''' &ndash; ''optional'' &ndash; width of the location map in pixels (px), e.g. "150"; defaults to: "220". * '''map_mark''' &ndash; ''optional'' &ndash; the name of a file to use as the location map marker, e.g. Green_pog.svg; defaults to: "Red_pog.svg". * '''map_marksize''' &ndash; ''optional'' &ndash; width of the location map marker in pixels (px), e.g. "10"; defaults to: "8". * '''map_caption''' &ndash; ''optional'' &ndash; caption displayed below the location map; defaults to "Location within {{{map_type}}}", e.g. "Location within Scotland". * '''map_label''' &ndash; ''optional'' &ndash; the label placed next to the marker on the location map. * '''territory''' – ''optional'' – any changes in territorial control as a result of the conflict; this should not be used for overly lengthy descriptions of the peace settlement. * '''action''' – ''optional'' – In case of Coup d'État, short description of ''modus operandi'', e.g. "...marched over the city...", "...dissolving the Congress of the Republic...", "...take the government hostage ...", "...put the country under military control ...", etc. * '''result''' – ''optional'' – this parameter may use one of two standard terms: "X victory" or "Inconclusive". The term used is for the "immediate" outcome of the "subject" conflict and should reflect what the sources say. In cases where the standard terms do not accurately describe the outcome, a link or note should be made to the section of the article where the result is discussed in detail (such as "See the {{blue|Aftermath}} section"). Such a note can also be used in conjunction with the standard terms but should not be used to conceal an ambiguity in the "immediate" result. Do not introduce non-standard terms like "decisive", "marginal" or "tactical", or contradictory statements like "decisive tactical victory but strategic defeat". Omit this parameter altogether rather than engage in [[WP:NOR|speculation]] about which side won or by how much. * '''status''' – ''optional'' – for ongoing conflicts, the current status of the conflict. This should not be used if a final result (above) is provided. * '''combatants_header''' – ''optional'' – sets the header text for the combatants section. Default is "Belligerents". In case of Coup d'État, use "Government-Insurgents&nbsp;&nbsp;&nbsp;" * '''combatant1'''/'''combatant2'''/'''combatant3''' – ''optional'' – the parties participating in the conflict. This is most commonly the countries whose forces took part in the conflict; however, larger groups (such as alliances or international organizations) or smaller ones (such as particular units, formations, or groups) may be indicated if doing so improves reader understanding. When there is a large number of participants, it may be better to list only the three or four major groups on each side of the conflict, and to describe the rest in the body of the article. The '''combatant3''' field may be used if a conflict has three distinct "sides", and should be left blank on other articles. Combatants should be listed in order of importance to the conflict, be it in terms of military contribution, political clout, or a recognized chain of command. If differing metrics can support alternative lists, then ordering is left to the editors of the particular article. The practice of writing in a "Supported by" subheading is deprecated (see [[Template talk:Infobox military conflict#RfC on "supported by" being used with the belligerent parameter|discussion]]). ** '''combatant1a'''/'''combatant2a'''/'''combatant3a''' – ''optional'' – in cases where the parties significantly changed over the course of the conflict, these subsidiary fields may be used to provide additional rows for the '''combatant''N''''' fields (above). ** '''combatant1b'''/'''combatant2b'''/'''combatant3b''' – ''optional'' – additional row, as above. ** '''combatant1c'''/'''combatant2c'''/'''combatant3c''' – ''optional'' – additional row, as above. ** '''combatant1d'''/'''combatant2d'''/'''combatant3d''' – ''optional'' – additional row, as above. ** '''combatant1e'''/'''combatant2e'''/'''combatant3e''' – ''optional'' – additional row, as above. * '''commander1'''/'''commander2'''/'''commander3''' – ''optional'' – the commanders of the military forces involved. For battles, this should include military commanders (and other officers as necessary). For wars, only prominent or notable leaders should be listed, with an upper limit of about seven per combatant column recommended. Ranks and position titles should be omitted. The {{tl|KIA}} and {{tl|POW}} templates may be included immediately after the names of commanders who were killed in action or surrendered and were taken prisoner, respectively. The '''commander3''' field can only be used if the '''combatant3''' field is set. ** '''commander1a'''/'''commander2a'''/'''commander3a''' – ''optional'' – in cases where the commanders significantly changed over the course of the conflict, these subsidiary fields may be used to provide additional rows for the '''commander''N''''' fields (above). ** '''commander1b'''/'''commander2b'''/'''commander3b''' – ''optional'' – additional row, as above. ** '''commander1c'''/'''commander2c'''/'''commander3c''' – ''optional'' – additional row, as above. ** '''commander1d'''/'''commander2d'''/'''commander3d''' – ''optional'' – additional row, as above. ** '''commander1e'''/'''commander2e'''/'''commander3e''' – ''optional'' – additional row, as above. * '''units1'''/'''units2'''/'''units3''' – ''optional'' – the units or formations involved. If a large number of distinct formations is present, it may be better to reference an order of battle in the body of the article than to include the entire list in this field. The '''units3''' field can only be used if the '''combatant3''' field is set. * '''strength1'''/'''strength2''' – ''optional'' – the numerical strength of the units involved. :* '''polstrength1'''/'''polstrength2''' – ''optional'' – In case of Coup d'Etat, political organizations that supported the government (1) respective the insurgents (2). :* '''milstrength1'''/'''milstrength2''' – ''optional'' – In case of Coup d'Etat, military units that supported the government (1) respective the insurgents (2). * '''strength3''' – ''optional'' – if '''combatant3''' is set, this is a third strength field identical to the two above; if it is '''''not''''' set, this is an alternate combined field for use where only the total participation in a conflict is known. * '''casualties1'''/'''casualties2''' – ''optional'' – casualties suffered (including: dead, wounded, missing, captured and civilian deaths) and equipment losses. Note that this section of the infobox is headed "Casualties and losses". Terms such as "dead" (or "killed"), "wounded", or "captured" should be used in place of abbreviations such as "KIA" or "POW". Where equipment losses are reported, this should be confined to major or significant types of equipment broadly categorized such as: tanks, guns (artillery pieces), aircraft, destroyers etc. * '''casualties3''' – ''optional'' – if '''combatant3''' is set, this is a third casualty field identical to the two above; if it is '''''not''''' set, this is an alternate combined field for use where only the total casualties of a conflict are known, or where civilian casualties cannot be directly attributed to either side. * '''notes''' – ''optional'' – optional field for further notes; this should only be used in exceptional circumstances. * '''campaignbox''' – ''optional'' – optional field for appending a [[WP:CAMPAIGN|campaignbox template]] to the bottom of the infobox, which allows both boxes to float as a single element (useful if there are subsequent left floating images, which would otherwise not be able to float above the campaign box); the template must be specified in the format <nowiki>{{Campaignbox XYZ}}</nowiki>.<noinclude> [[Category:WikiProject Military history template instructions|Military conflict infobox]] </noinclude>{{Campaign/doc|noheader=yes}} {{Operational plan/doc|noheader=yes}} ==Microformat== {{UF-hcal-geo}} == TemplateData == {{TemplateData header}} {{collapse top|title=TemplateData}} <templatedata> { "description": "Summarize information about a particular military conflict (a battle, campaign, war, or group of related wars).", "format": "{{_\n| _________________ = _\n}}\n", "params": { "conflict": { "label": "Conflict", "description": "The name of the conflict being described.", "type": "string/line", "required": true }, "width": { "label": "Width", "description": "Width of the infobox.", "type": "string", "default": "315px", "required": false }, "partof": { "label": "Part of", "description": "The larger conflict containing the event described in the article.", "type": "wiki-page-name", "required": false }, "image": { "label": "Image", "description": "An image for the warbox given in the form Example.jpg.", "type": "wiki-file-name", "required": false }, "image_size": { "label": "Image size", "description": "The size of the image", "type": "string", "required": false }, "alt": { "label": "Alt", "description": "Alternative textual description of the image", "type": "string", "required": false }, "caption": { "label": "Caption", "description": "The text to be placed below the image.", "type": "string", "required": false }, "date": { "label": "Date", "description": "The date of the conflict described. Convention is to give the actual date for battles and the years for wars, but this does not always apply.", "type": "string", "required": false }, "place": { "label": "Place", "description": "The location of the conflict.", "type": "string", "required": true }, "coordinates": { "label": "Coordinates", "description": "The location of the structure, given as a coordinate pair by using {{coord}} with display=inline,title.", "type": "string", "required": false }, "map_type": { "label": "Map Type", "description": "The base map to be used for the location map, e.g. \"Scotland\"; see {{location map}} for more details.", "type": "string", "required": false }, "map_relief": { "label": "Map Relief", "description": "\"yes\" if the location map is a relief map.", "type": "string", "required": false }, "map_size": { "label": "Map Size", "description": "Width of the location map in pixels (px).", "type": "number", "default": "220", "required": false }, "map_mark": { "label": "Map Marker", "description": "File to use as the location map marker.", "type": "string", "default": "red_pog.svg", "required": false }, "map_marksize": { "label": "Map Marker Size", "description": "Width of the location map marker in pixels (px).", "type": "number", "default": "8", "required": false }, "map_caption": { "label": "Map Caption", "description": "Caption displayed below the location map.", "type": "string", "default": "Location within {{{map_type}}}", "required": false }, "map_label": { "label": "Map Label", "description": "The label placed next to the marker on the location map.", "type": "string/line", "required": false }, "territory": { "label": "Territory", "description": "Any changes in territorial control as a result of the conflict; this should not be used for overly lengthy descriptions of the peace settlement.", "type": "string", "required": false }, "result": { "label": "Result", "description": "This parameter may use one of two standard terms: \"X victory\" or \"Inconclusive\". The term used is for the \"immediate\" outcome of the \"subject\" conflict and should reflect what the sources say. In cases where the standard terms do not accurately describe the outcome, a link or note should be made to the section of the article where the result is discussed in detail (such as \"See the Aftermath section\"). Such a note can also be used in conjunction with the standard terms but should not be used to conceal an ambiguity in the \"immediate\" result. Do not introduce non-standard terms like \"decisive\", \"marginal\" or \"tactical\", or contradictory statements like \"decisive tactical victory but strategic defeat\". Omit this parameter altogether rather than engage in speculation about which side won or by how much.", "type": "string", "required": false }, "status": { "label": "Status", "description": "For ongoing conflicts, the current status of the conflict.", "type": "string/line", "required": false }, "combatants_header": { "label": "\"Combatants\" Header Text", "description": "Sets the header text for the combatants section.", "type": "string/line", "default": "Belligerents", "required": false }, "combatant1": { "label": "Combatant 1", "description": "A party participating in the conflict.", "type": "string", "required": false }, "combatant2": { "label": "Combatant 2", "description": "A party participating in the conflict.", "type": "string", "required": false }, "combatant3": { "label": "Combatant 3", "description": "A party participating in the conflict. (only if the conflict has three distinct \"sides\")", "type": "string", "required": false }, "combatant1a": { "label": "Combatant 1a", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 1 field.", "type": "string", "required": false }, "combatant2a": { "label": "Combatant 2a", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 2 field.", "type": "string", "required": false }, "combatant3a": { "label": "Combatant 3a", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 3 field.", "type": "string", "required": false }, "combatant1b": { "label": "Combatant 1b", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 1 field.", "type": "string", "required": false }, "combatant2b": { "label": "Combatant 2b", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 2 field.", "type": "string", "required": false }, "combatant3b": { "label": "Combatant 3b", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 3 field.", "type": "string", "required": false }, "combatant1c": { "label": "Combatant 1c", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 1 field.", "type": "string", "required": false }, "combatant2c": { "label": "Combatant 2c", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 2 field.", "type": "string", "required": false }, "combatant3c": { "label": "Combatant 3c", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 3 field.", "type": "string", "required": false }, "combatant1d": { "label": "Combatant 1d", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 1 field.", "type": "string", "required": false }, "combatant2d": { "label": "Combatant 2d", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 2 field.", "type": "string", "required": false }, "combatant3d": { "label": "Combatant 3d", "description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 3 field.", "type": "string", "required": false }, "commander1": { "label": "Commander of Combatant 1", "description": "The commanders of the military forces of Combatant (1) involved.", "type": "string", "required": false }, "commander2": { "label": "Commander of Combatant 2", "description": "The commanders of the military forces of Combatant 2 involved.", "type": "string", "required": false }, "commander3": { "label": "Commander of Combatant 3", "description": "The commanders of the military forces of Combatant 3 involved.", "type": "string", "required": false }, "units1": { "label": "Units of Combatant 1", "description": "The units or formations of Combatant 1 involved. If a large number of distinct formations is present, it may be better to reference an order of battle in the body of the article than to include the entire list in this field.", "type": "string", "required": false }, "units2": { "label": "Units of Combatant 2", "description": "The units or formations of Combatant 2 involved. If a large number of distinct formations is present, it may be better to reference an order of battle in the body of the article than to include the entire list in this field.", "type": "string", "required": false }, "units3": { "label": "Units of Combatant 3", "description": "The units or formations of Combatant 3 involved. If a large number of distinct formations is present, it may be better to reference an order of battle in the body of the article than to include the entire list in this field.", "type": "string", "required": false }, "strength1": { "label": "Strength of Combatant 1", "description": "The numerical strength of Combatant 1.", "type": "string", "required": false }, "strength2": { "label": "Strength of Combatant 2", "description": "The numerical strength of Combatant 2.", "type": "string", "required": false }, "strength3": { "label": "Strength of Combatant 3", "description": "If Combatant 3 is set, this field is for the numerical strength of Combatant 3. If Combatant 3 is not set, this is an alternate combined field for use where only the total participation in a conflict is known.", "type": "string", "required": false }, "casualties1": { "label": "Casualties of Combatant 1", "description": "Casualties suffered by Combatant 1 (including: dead, wounded, missing, captured and civilian deaths) and equipment losses. Terms such as \"dead\" (or \"killed\"), \"wounded\", or \"captured\" should be used in place of abbreviations such as \"KIA\" or \"POW\". Where equipment losses are reported, this should be confined to major or significant types of equipment broadly categorized such as: tanks, guns (artillery pieces), aircraft, destroyers etc.", "type": "string", "required": false }, "casualties2": { "label": "Casualties of Combatant 2", "description": "Casualties suffered by Combatant 2 (including: dead, wounded, missing, captured and civilian deaths) and equipment losses. Terms such as \"dead\" (or \"killed\"), \"wounded\", or \"captured\" should be used in place of abbreviations such as \"KIA\" or \"POW\". Where equipment losses are reported, this should be confined to major or significant types of equipment broadly categorized such as: tanks, guns (artillery pieces), aircraft, destroyers etc.", "type": "string", "required": false }, "casualties3": { "label": "Casualties of Combatant 3", "description": "If Combatant 3 is set, this field is for the casualties suffered by Combatant 3, (including: dead, wounded, missing, captured and civilian deaths) and equipment losses. Terms such as \"dead\" (or \"killed\"), \"wounded\", or \"captured\" should be used in place of abbreviations such as \"KIA\" or \"POW\". Where equipment losses are reported, this should be confined to major or significant types of equipment broadly categorized such as: tanks, guns (artillery pieces), aircraft, destroyers etc. If combatant3 is not set, this is an alternate combined field for use where only the total casualties of a conflict are known, or where civilian casualties cannot be directly attributed to either side.", "type": "string", "required": false }, "notes": { "label": "Notes", "description": "Optional field for further notes; this should only be used in exceptional circumstances.", "type": "string", "required": false }, "campaignbox": { "label": "Campaignbox", "description": "Optional field for appending a campaignbox template to the bottom of the infobox, which allows both boxes to float as a single element (useful if there are subsequent left floating images, which would otherwise not be able to float above the campaign box); the template must be specified in the format {{Campaignbox XYZ}}.", "type": "string", "required": false } } }</templatedata> {{Collapse bottom}} ==See also== *{{tl|Infobox military operation}} *{{tl|Infobox civil conflict}} *{{tl|Infobox civilian attack}} <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:War and conflict infobox templates| ]] [[Category:Templates based on the Infobox Lua module]] }}</includeonly> b7bc1bfd8830e6f3810fed38740c84ef509585dd Megali Idea 0 1083 2365 2023-09-27T15:23:43Z 69.84.59.34 0 /* Fall of Constantinople */ minor grammatical changes wikitext text/x-wiki {{Short description|Irredentist concept}} {{Redirect|Greater Greece|the Ancient Greek settlements in southern Italy|Magna Graecia}} [[File:ParisPeace-Venizelos-Map.png|thumb|Map showing Greek ambitions at the Paris Peace Conference after WWI, 1919]] [[File:Map of Greater Greece.png|thumb|Map of Megali Hellas (Greater Greece) as proposed at the Paris Peace Conference of 1919 by [[Eleftherios Venizelos]], the leading major proponent of the Megali Idea at the time.]] [[File:Map Greece expansion 1832-1947-en.svg|thumb|The territorial expansion of Greece, 1832–1947.]] The '''Megali Idea''' ({{lang-el|Μεγάλη Ιδέα|Megáli Idéa|Great Idea}})<ref>{{cite book |url=https://books.google.com/books?id=AjDYlMB9amwC |title=The Mediterranean in the Age of Globalization: Migration, Welfare & Borders |last=Mateos |first=Natalia Ribas |publisher=[[Transaction Publishers]]|isbn=9781412837750 }}</ref> is a [[nationalist]]<ref>{{Citation |last=Miller |first=James Edward |title=Introduction: Manifest Destiny Meets the Megali Idea |date=2009-02-01 |url=http://dx.doi.org/10.5149/9780807887943_miller.6 |work=The United States and the Making of Modern Greece |pages=1–22 |publisher=University of North Carolina Press |doi=10.5149/9780807887943_miller.6 |isbn=9780807832479 |access-date=2022-10-21}}</ref><ref>{{Cite book |last=A. |first=Jenkins, Mary |url=http://worldcat.org/oclc/35675237 |title=To megali idea - dead or alive? : the domestic determinants of Greek foreign policy |date=1994 |publisher=Naval Postgraduate School |oclc=35675237}}</ref> and [[irredentist]] concept that expresses the goal of reviving the [[Byzantine Empire]],<ref>Roumen Daskalov, Tchavdar Marinov, Entangled Histories of the Balkans - Volume One: National Ideologies and Language Policies; BRILL, 2013; {{ISBN|900425076X}}, p. 200.</ref> by establishing a Greek state, which would include the large Greek populations that were still under [[Ottoman Empire|Ottoman]] rule after the end of the [[Greek War of Independence]] (1821–1829) and all the regions that had large Greek populations (parts of the southern [[Balkans]], [[Anatolia]] and [[Cyprus]]).<ref>{{Cite web|url=https://o.nsd.no/european_election_database/country/greece/introduction.html|title=European Election Database - Background - Greece|website=o.nsd.no}}</ref> The term appeared for the first time during the debates of [[Prime Ministers of Greece|Prime Minister]] [[Ioannis Kolettis]] with [[Otto of Greece|King Otto]] that preceded the promulgation of the 1844 constitution.<ref name="BA0">[https://www.britannica.com/place/Greece/Building-the-nation-1832-1913 ''History of Greece''] Encyclopædia Britannica Online</ref> It came to dominate foreign relations and played a significant role in domestic politics for much of the first century of Greek independence. The expression was new in 1844 but the concept had roots in the Greek popular psyche, which long had hopes of liberation from Ottoman rule and restoration of the Byzantine Empire.<ref name="BA0" /> <blockquote>Πάλι με χρόνια με καιρούς, :πάλι δικά μας θα 'ναι! (''Once more, as years and time go by, once more they shall be ours'').<ref name="BK0">D. Bolukbasi and D. Bölükbaşı, ''Turkey And Greece: The Aegean Disputes'', Routledge Cavendish 2004</ref></blockquote> The Megali Idea implies establishing a Greek state, which would be a territory encompassing mostly the former Byzantine lands from the [[Ionian Sea]] in the west to Anatolia and the [[Black Sea]] to the east and from [[Thrace]], [[Macedonia (region)|Macedonia]] and [[Epirus]] in the north to [[Crete]] and [[Cyprus]] to the south. This new state would have [[Constantinople]] as its capital: it would be the "Greece of Two Continents and Five Seas" ([[Europe]] and [[Asia]], the Ionian, [[Aegean Sea|Aegean]], [[Sea of Marmara|Marmara]], Black and [[Libyan Sea|Libyan]] Seas). If realized, this would expand modern Greece to roughly the same size and extent of the later Byzantine Empire, after its [[Byzantine Empire under the Palaiologos dynasty|restoration]] in 1261 AD. The Megali Idea dominated foreign policy and domestic politics of [[Greece]] from the [[Greek War of Independence|War of Independence]] in the 1820s through the [[Balkan wars]] in the beginning of the 20th century. It started to fade after the [[Greco-Turkish War (1919–1922)]], followed by the [[population exchange between Greece and Turkey]] in 1923. Despite the end of the Megali Idea project in 1922, by then the Greek state had expanded four times, either through military conquest or diplomacy (often with British support). After the creation of Greece in 1830, it annexed the [[Ionian Islands]] ([[Treaty of London, 1864]]), [[Thessaly]] ([[Convention of Constantinople (1881)]]), [[Macedonia (Greece)|Macedonia]], [[Crete]], [[Epirus (region)|(southern) Epirus]] and the Eastern Aegean Islands ([[Treaty of Bucharest (1913)|Treaty of Bucharest]]), and [[Western Thrace]] ([[Treaty of Neuilly]], 1920). The [[Dodecanese]] were annexed after the Second World War ([[Treaty of Peace with Italy, 1947]]). A related concept is ''[[enosis]]''. ==Fall of Constantinople== {{Main|Fall of Constantinople}} [[File:Zonaro GatesofConst.jpg|thumb|180px|Sultan [[Mehmed the Conqueror|Mehmed II]]'s entry into Constantinople.]] The [[Byzantine Empire]] was [[Division of the Roman Empire|Eastern Roman]] in origin and was called the "Roman Empire" by its inhabitants, though often not by the [[Latin West]], which regarded it as [[Greek East|Greek]]. After its fall, [[Hieronymus Wolf]] popularized the usage of "Byzantium". An informal cultural division had existed within the Roman Empire for centuries before the official political split of the Empire into Eastern and Western halves. Although Latin was the official language of the empire, Greek was the lingua franca in the East and was regularly used alongside Latin in official business. Following the adoption of Christianity in the 4th century, Greek was also the dominant liturgical language, as exemplified by the fact the New Testament was written in Greek. [[Byzantium under the Heraclians|Greek replaced Latin as the official language]] in AD 620. Byzantium held out against numerous invasions over the centuries and during the 10th and early 11th centuries managed to reclaim considerable territory in the Balkans, Anatolia and to a lesser extent Syria. The Turkish invasion of the mid to late 11th century however greatly weakened the Empire and, although it partially recovered under the [[Byzantine Empire under the Komnenos dynasty|Komnenos dynasty]], it never managed to regain control of the Anatolian interior, cutting the empire off from a valuable source of manpower and tax revenue. In 1204 Constantinople was besieged and sacked during the [[Fourth Crusade]] and became the Capital of what has come to be known as the [[Latin Empire]], a French dominated crusader state, until it was liberated by the [[Empire of Nicaea]], the Byzantine state in exile, in 1261. However, Byzantine strength would rapidly diminish towards the end of the 13th century and evaporated almost entirely during the 14th century, to the extent that by 1400 little remained of the Empire except Constantinople, the city’s immediate surroundings and some small territories in modern-day Greece. In 1453 the Ottoman Turks besieged and captured Constantinople officially marking the end of the Roman Empire and also the end of Greek predominance in the city; although it would continue to have a considerable [[Greeks in Turkey|Greek speaking population]] and the Patriarch of Constantinople continued to reside in the city. == Greeks under Ottoman rule== {{Further|Ottoman Greece|Greek Plan}} [[File:Subject Nationalities of the German Alliance (1917) (cropped).jpg|thumb|Ethnic map of [[Asia Minor]] in 1917.{{Unbulleted list|{{legend|black|Bulgars and Turks}}|{{legend|maroon|Greeks}}|{{legend|yellow|Armenians}}|{{legend|teal|Kurds}}|{{legend|orange|Lazes}}|{{legend|olive|Arabs}}|{{legend|green|Nestorians}}}}]] Under the ''[[Millet (Ottoman Empire)|millet]]'' system which was in force during the [[Ottoman Empire]], the population was classified according to religion rather than language or ethnicity. Orthodox Greeks were seen as part of the ''millet-i Rûm'' (literally "Roman community") which included all [[Orthodoxy#Christianity|Orthodox Christians]], including beside Greeks also [[Bulgarians]], [[Serbs]], [[Vlachs]], [[Slavs]], [[Georgians]], [[Romanians]] and [[Albanians]], despite their differences in ethnicity and language and despite the fact that the religious hierarchy was Greek dominated. It is not clear to what extent one can speak of a Greek identity during those times as opposed to a Christian or Orthodox identity.<ref>{{cite book |title=Greece: The Modern Sequel |last1=Koliopoulos |first1=John S. |last2=Veremis |first2=Thanos |year=2007 |publisher=C Hurst & Co Publishers Ltd }}</ref> In the late 1780s, [[Catherine II of Russia]] and [[Joseph II of Austria]] intended to reclaim the Byzantine heritage and restore the Greek statehood as part of their joint [[Greek Plan]]. During the Middle Ages and the Ottoman period, Greek-speaking Christians identified as ''Romans'' and thought of themselves as the descendants of the [[Roman Empire]] (including the medieval [[Eastern Roman Empire]]). The term ''Roman'' was often interpreted as synonymous with ''Christian'' throughout Europe and the Mediterranean during this time. The terms ''Greek'' or ''Hellene'' were largely seen by Ottoman Christians as referring to the ancient pagan peoples of the region. This changed during the late stages of the Ottoman Empire and the emergence of the Greek independence movement.<ref>{{cite book |title=Standard Languages and Multilingualism in European History |date=31 May 2012 |editor1=Honing, Matthias |editor2=Vogl, Ulrik |editor3=Moliner, Olivier |publisher=John Benjamins |url=https://books.google.com/books?id=tXAc72rjwBcC |page=163|isbn=9789027273918 }}</ref><ref>{{cite book |title=Hellenisms: Culture, Identity, and Ethnicity from Antiquity to Modernity |year=2008 |editor=Zacharia, Katerina |publisher=Ashgate Publishing |url=https://books.google.com/books?id=H1fGJRxUG6wC |page=240|isbn=9780754665250 }}</ref> ==Greek War of Independence and later== {{Main|Greek War of Independence|First Hellenic Republic|Kingdom of Greece}} {{Quote box2 |width= 30em |border= 1px |align= right |halign= left |quote= "The Kingdom of Greece is not Greece; it is merely a part: the smallest, poorest part of Greece. The Greek is not only he who inhabits the Kingdom, but also he who inhabits [[Ioannina]], [[Salonika]] or [[Serres]] or [[Adrianople]] or [[Constantinople]] or [[Trabzon|Trebizond]] or [[Crete]] or [[Samos]] or any other region belonging to the Greek history or the Greek race... There are two great centres of Hellenism. [[Athens]] is the capital of the Kingdom. Constantinople is the great capital, the dream and hope of all Greeks." |source=Kolettis voicing his convictions in the National Assembly in January 1844.<ref>Smith M., ''Ionian Vision'', (1999), p. 2</ref>}} After the [[Greek War of Independence]] ended in 1829, a new southern Greek state was established, with assistance from the [[United Kingdom of Great Britain and Ireland|British Empire]], [[July Monarchy|Kingdom of France]], and [[Imperial Russia]]. However, this new Greek state under [[John Capodistrias]] after the Greek War of Independence was, with Serbia, one of the only two countries of the era whose population was smaller than the population of the same ethnicity outside its borders; most ethnic Greeks still resided within the borders of the Ottoman Empire. This version of Greece was designed by the [[Great Powers]], who had no desire to see a larger Greek state replace the Ottoman Empire. The Great Idea embodied a desire to bring all ethnic Greeks into the Greek state, and subsequently revive the [[Byzantine Empire]]; it applied specifically to the Greeks in [[Epirus]], [[Thessaly]], [[Macedonia (region)|Macedonia]], [[Thrace]], the [[Aegean Islands]], [[Crete]], [[Cyprus]], parts of [[Anatolia]], and the city of [[Istanbul|Constantinople]] (which would replace [[Athens]] as the capital). When the young Danish prince [[George I of Greece|Wilhelm Georg]] was elected king in 1863, the title offered to him by the Greek National Assembly was ''not'' "King of Greece", the title of his deposed predecessor, King [[Otto of Greece|Otto]]; but rather "King of ''the [[Hellene]]s''". Implicit in the wording was that George I was to be king of all Greeks, regardless of whether they then lived within the borders of his new kingdom. The first additional areas to be incorporated into the Kingdom were the [[Ionian islands]] in 1864, and later [[Thessaly]] with the [[Treaty of Berlin (1878)]]. ==Revolts, Cretan crisis and Greco-Turkish War (1897)== {{See also|Epirus Revolt of 1854|Cretan Revolt (1866–69)|Epirus Revolt of 1878|1878 Greek Macedonian rebellion|Greco-Turkish War of 1897|Macedonian Struggle}} [[File:P. A. de László - Constantine I of Greece, King of the Hellenes.jpg|thumb|140px|[[Constantine I of Greece]] was called ''Constantine XII'' by his supporters, the purported successor to the Emperor [[Constantine XI Palaiologos]]]] [[File:Elefteriosvenizelos--victoryofvenizel00seliuoft.jpg|thumb|140px|[[Eleftherios Venizelos]] tried to realize the Megali Idea]] In January 1897, violence and disorder were escalating in Crete, polarizing the population. Massacres of the Christian population took place in Chania and Rethimno. The Greek government, pressured by public opinion, intransigent political elements, extreme nationalist groups (e.g. [[Ethniki Etairia]]) and with the Great Powers reluctant to intervene, decided to send warships and personnel to assist the Cretans. The Great Powers had no option then but to proceed with the occupation of the island, but they were too late. A Greek force of 1,500 men had landed at Kolymbari on 1 February 1897, and its commanding officer, Colonel [[Timoleon Vassos]], declared that he was taking over the island "in the name of the King of the Hellenes" and that he was announcing the union of Crete with Greece. This led to an uprising that spread immediately throughout the island. The Great Powers finally decided to land their troops and stopped the Greek army force from approaching Chania. At the same time their fleets blockaded Crete, preventing both Greeks and Turks from bringing any more troops to the island. The Ottoman Empire, in reaction to the rebellion of Crete and the assistance sent by Greece, relocated a significant part of its army in the Balkans to the north of Thessaly, close to the borders with Greece. Greece in reply reinforced its borders in Thessaly. However, irregular Greek forces and followers of the Megali Idea acted without orders and raided Turkish outposts, leading the Ottoman Empire to declare war on Greece; the war is known as the [[Greco-Turkish War of 1897]]. The Turkish army, far outnumbering the Greek, was also better prepared, due to the recent reforms carried out by a German mission under [[Colmar Freiherr von der Goltz|Baron von der Goltz]]. The Greek army fell back in retreat. The other Great Powers then intervened and an armistice was signed in May 1897. The war, however, only ended in December of that year. The military failure in the Greco-Turkish war cost Greece small territorial losses along the border line in northern Thessaly, and a large sum of financial reparations that wrecked Greece's economy for years, while giving no lasting solution to the Cretan Question. The Great Powers (Britain, France, Russia, and Italy) in order to prevent future clashes and trying to avoid the creation of a revanchist climate in Greece, imposed what they thought of as a lasting solution; Crete was proclaimed an autonomous ''[[Cretan State]]''. The four Great Powers assumed the administration of Crete; and, in a decisive diplomatic victory for Greece, Prince George of Greece (second son of King George I) became High Commissioner. ==Early 20th century== ===Balkan Wars=== {{Main|Greece in the Balkan Wars}} [[File:Maximal Greek claims in Epirus and Macedonia.png|thumb|200px|Greek claims in Epirus and Macedonia after the first Balkan war]] [[File:New Greece.jpg|thumb|200px|Poster celebrating the "New Hellas" after the [[Balkan Wars]].]] A major proponent of the Megali Idea was [[Eleftherios Venizelos]], under whose leadership Greek territory doubled in the [[Balkan Wars]] of 1912–13 — southern [[Epirus]], [[Crete]], [[Lesbos]], [[Chios]], [[Ikaria]], [[Samos]], [[Samothrace]], [[Lemnos]] and the majority of [[Macedonia (region)|Macedonia]] were attached to Greece. Born and raised in Crete, in 1909 Venizelos was already a prominent Cretan and had influence in mainland Greece. As such, he was invited after the [[Goudi coup]] in 1909 by the Military League to become Prime Minister of Greece. Venizelos pressed forward a series of reforms in society, as well as the military and administration, which helped Greece succeed in its goals during the Balkan Wars. ===World War I=== {{Main|Greece during World War I|Treaty of Sèvres}} [[File:Greece in the Treaty of Sèvres.jpg|thumb|200px|Map of Megali Hellas after the [[Treaty of Sèvres]] and featuring a picture of [[Eleftherios Venizelos]].]] Following the Greek gains in the Balkan Wars, the Ottomans began to persecute ethnic Greeks living in the Empire, which led to [[ethnic cleansing]] in the [[Greek genocide]]. This persecution continued into [[World War I]] when the Ottomans declared for the [[Central Powers]] on late 1914. Greece remained neutral until 1917 when they joined the [[Allies of World War I|Allies]]. Refugees reports of Turkish atrocities as well as the Allied victory in [[World War I]] seemed to promise an even greater realization of the Megali Idea. Greece gained a foothold in Asia Minor with a protectorate over [[Smyrna]] and its hinterland. Following 5 years of Greek administration, a referendum was to be held to determine whether the territory would revert to Ottoman control or join Greece. Greece also gained the islands of [[Imbros]] and [[Tenedos]], [[Western Thrace|Western]] and [[Eastern Thrace]], the border then drawn a few miles from the walls of [[Constantinople]]. ===Greco-Turkish War (1919–1922)=== {{Main|Greco-Turkish War (1919–1922)|Great Fire of Smyrna|Treaty of Lausanne|Population exchange between Greece and Turkey}} [[File:Izmir15Mayis1919.jpg|thumb|200px|Greek soldiers in Smyrna, May 1919.]] Greece's efforts to take control of Smyrna in accordance with the Treaty of Sèvres were thwarted by [[Turkish revolutionaries]], who were resisting the Allies. The Turks finally prevailed and expelled the Greeks from Anatolia during the [[Greco-Turkish War (1919–1922)]] (part of the [[Turkish War of Independence]]). The war was concluded by the [[Treaty of Lausanne]] which saw Greece cede Eastern Thrace, Imbros, Tenedos and [[Smyrna]] to the nascent Turkish Republic. To avoid any further territorial claims, both Greece and Turkey engaged in an "[[exchange of populations]]": During the conflict, 151,892 Greeks had already fled Asia Minor. The Treaty of Lausanne moved 1,104,216 Greeks from Turkey,<ref>André Billy, ''La Grèce'', Arthaud, 1937, p. 188.</ref> while 380,000 Turks left the Greek territory for Turkey. The transfers ended any further appetite for pursuing the concept of a Greater Greece and ended the 3000 year Greek habitation of Asia Minor. Further population exchanges occurred after World War I, including 40,027 Greeks from Bulgaria, 58,522 from Russia (because of the defeat of the [[White Army]] led by [[Pyotr Wrangel]]) and 10,080 from other lands (for example [[Dodecanese]] or [[Albania]]), while 70,000 Bulgarians from [[Thrace]] and [[Macedonia (Greece)|Macedonia]] had moved to [[Bulgaria]].<ref>''The [[Treaty of Neuilly-sur-Seine]] led to an exchange of 50,000 Greeks for 70,000 Bulgarians between the two countries.'' For more see: Rutsel Silvestre, J. Martha; The Financial Obligation in International Law, Oxford University Press, 2015; {{ISBN|0191055956}}, p. 70.</ref> From the Bulgarian refugees ca. 66,000 were from Greek Macedonia.<ref>"''The second wave of Bulgarian refugees took place in the 1920s, following the signing of the Neilly Treaty (1919) concerning the so-called "voluntary" exchange of population between Greece and Bulgaria. Of them 66,126 people from Greek Macedonia.''" For more see: Victor Roudometof, Collective Memory, National Identity, and Ethnic Conflict: Greece, Bulgaria, and the Macedonian Question; Greenwood Publishing Group, 2002 {{ISBN|0275976483}}, p. 97.</ref> The immediate reception of refugees to Greece cost 45 million francs, so the League of Nations arranged for a loan of 150 million francs to aid settlement of refugees. In 1930, Venizelos even went on an official visit to [[Turkey]], where he proposed that [[Mustafa Kemal Atatürk|Mustafa Kemal]] be awarded the [[Nobel Peace Prize]]. The Greek novelist [[Yiorgos Theotokas]] described the psychological impact of the defeat of 1922:<blockquote>"For a short time, while the Treaty of Serves ran its joyful but uncertain course, it seemed to them that the...long-buried hopes of their ancestors were to be fulfilled. But the terrible summer of 1922 came all too soon. From the hermitage of Arsenios they watched, tense with anxiety, the daily unfolding of the national tragedy, the last desperate efforts of the Royalist Governments of Greece to save the situation, the failure of King Constantine's attempt to take Constantinople, and the final Catastrophe.<br>In mid-August Mustapha Kemal broke through the Greek front and the Greek army, exhausted by ten years of warfare and the privations of the Asia Minor campaign, was vanquished in two weeks. The Turks, advancing rapidly, recaptured in quick succession Afion-Karahisar, Eski-Shehir, Kiutahia, Brussa, Oushak—and then Smyrna! Once again the banners of Islam floated proudly, tauntingly, over the Aegean coast opposite Chios and Mytilene. The whole of Ionia was in flames. Slaughter and pillage descended on the smiling city of Smyrna and in a few short days turned it into a ruin...As day succeeded day, Greece seemed to have become paralyzed, to have lost all will, all ability to resist the blows of fate. The swiftness of the catastrophe completely overwhelmed the State, flooded as it was by the thousands of fleeting soldiers and refugees who sought shelter on the Greek coasts.The nation was plunged into deep despair...<br>Greece had lost her big gamble and had been uprooted from Asia Minor. St. Sophia remained in the hands of the Moslems. The brilliant plans of 1918 were mocking visions, hallucinations, dreams. And the return of reality was truly heartbreaking. The tale of the years was not yet told, then, the historic hour, the fulfillment of the Great Idea, the moment they had longed for with such faith and such anxiety for five tortured, bloody centuries, had not yet come! It was all a lie!"<ref>Kaloudis, George "Ethnic Cleansing in Asia Minor and the Treaty of Lausanne" p.59-89 from ''International Journal on World Peace'', Volume 31, No. 1, March 2014 p.83-84</ref></blockquote> == World War II, annexation of Dodecanese and Cyprus dispute == {{See also|Military history of Greece during World War II|EOKA|1974 Cypriot coup d'état}} Although the Great Idea ceased to be a driving force behind Greek foreign policy, some remnants continued to influence Greek foreign policy throughout the remainder of the 20th century. Thus, after his coup d'état of 4 August 1936, [[Ioannis Metaxas]] proclaimed the advent of the "Third Hellenic Civilization", similar to Adolf Hitler's Third Reich (influenced by [[pan-germanism|pan-Germanism]]).<ref>R. Clogg, p. 118.</ref> The attack by Italy from Albania and the Greek victories enabled Greece to conquer, during the winter of 1940–1941, parts of southern [[Albania]] ([[Northern Epirus]], as it is identified by [[Greeks]]) which were administered as a province of Greece for a short time until the German offensive of April 1941. The occupation, resistance and the [[Greek civil war|civil war]] initially put the Great Idea in the background. Nevertheless, another very good diplomatic performance by the Greek side at the [[Paris Peace Conference, 1946]] secured a further enlargement of Greek territory, in the form of the Dodecanese Islands, despite the very strong opposition of [[Vyacheslav Molotov]] and the Soviet delegates.<ref>K. Svolopoulos, Greek Foreign Policy 1945–1981, p. 134.</ref> The British colony of [[Cyprus]] became the "apple of discord" between the two countries, putting an end to the positive Greco-Turkish relations that had existed since the Kemal-Venizelos agreement in the 1930s. In 1955, a [[Hellenic Army|Greek army]] colonel of Greek Cypriot origin, [[George Grivas]], began a campaign of civil disobedience whose purpose was primarily to drive the British from the island, then move for ''[[Enosis]]'' with Greece. The Greek prime minister, [[Alexandros Papagos]], was not unfavourable to this idea.{{citation needed|date=June 2014}} There was increasing polarisation of opinion between the dominant Greek population and the minority Turks.{{citation needed|date=June 2014}} The problems in Cyprus affected the continent itself. In September 1955, in response to the demand for ''Énosis'', an anti-Greek riot took place in Istanbul. During the [[Istanbul Pogrom]] 4,000 stores, 100 hotels and restaurants and 70 churches were destroyed or damaged.<ref>R. Clogg, p. 153.</ref> This led to the last great wave of migration from Turkey to Greece. [[File:Cyprus districts named.png|thumb|200px|The island of Cyprus, showing the areas controlled by the ethnic Greek Cypriots of the [[Republic of Cyprus]] (south), and the areas controlled by ethnic Turkish Cypriots (north).]] The [[Zürich and London Agreement|Zürich Agreement]] of 1959 culminated in independence of the island with Greece, Turkey and UK as guarantee powers. The inter-ethnic clashes from 1960 led to the dispatch of a [[United Nations Peacekeeping Force in Cyprus|peacekeeping force]] of the [[United Nations Organisation|United Nations]] in 1964. The Cyprus issue was revived by the [[Greek military junta of 1967-1974|dictatorship of the colonels]], who presented their April 21, 1967, ''coup d'état'' as the only way to defend the traditional values of what they called the "Hellenic-Christian Civilization". Brigadier General Ioannidis arranged, in July 1974, to overthrow Cypriot President [[Archbishop]] [[Makarios III|Makarios]], and proceed with ''[[Enosis]]'' (union with Greece).{{citation needed|date= June 2014}} This led to Turkey invading the island in response, with the expulsion of Greek Cypriots in areas controlled by Turkey, and the flight of Turkish Cypriots from the south. In 1983, the north declared independence, but to this day, the only country that recognizes [[Northern Cyprus]] is Turkey. ==Attempted revival by Golden Dawn== The [[Greek nationalism|ultra-nationalist]] [[Golden Dawn (political party)|Golden Dawn party]], which had electoral support from 2010 to 2019, supports the Megali Idea,<ref name="stoxos.gr">{{cite news|script-title=el:Μιχαλολιάκος: Του χρόνου στην Κωνσταντινούπολη, στην Σμύρνη, στην Τραπεζούντα…|url=http://www.stoxos.gr/2012/12/blog-post_7247.html|access-date=3 November 2013|newspaper=[[Stochos]]|date=31 December 2012|language=el}}</ref> with party leader, [[Nikolaos Michaloliakos]] stating: {{quote|For two thousand years, the Jews would say a wish during their festivals, "[[next year in Jerusalem]]", and ultimately after many centuries they managed to make it a reality. So I too conclude with a wish: Next year in [[Constantinople]], in [[Smyrna]], in [[Trabzon|Trebizond]]!|<ref name="stoxos.gr"/>}} Michaloliakos criticized [[Thessaloniki]] mayor [[Yiannis Boutaris]] for wanting to name a street after Atatürk, who was born in the city when it was still part of the Ottoman Empire.<ref name="todayszaman1">{{Citation |title=Greek far-right leader vows to 'take back' İstanbul, İzmir |newspaper=Today's Zaman|date=15 June 2012 |url=http://www.todayszaman.com/newsDetail_getNewsById.action?newsId=283673 |access-date=12 September 2012 | archive-url=https://web.archive.org/web/20131103095534/http://www.todayszaman.com/newsDetail_getNewsById.action?newsId=283673 |archive-date=3 November 2013}}</ref><ref name="smyrna">{{Cite web|url=https://www.hurriyetdailynews.com/greek-fuhrer-vows-to-take-back-izmir-after-istanbul-23248|title=Greek 'Führer' vows to 'take back İzmir' after Istanbul|website=Hürriyet Daily News}}</ref> In January 2013, a group of Golden Dawn supporters attacked the car of Turkish [[consul (representative)|consul-general]] Osman İlhan Şener and hurled insults at Atatürk, during an [[Anti-Turkism|anti-Turkey]] protest in [[Komotini]].<ref name=komotiniAttack>{{cite web|title=Yunanistan'da Türk konsolosun aracına saldırı|url=https://www.ntvmsnbc.com/id/25412725|publisher=NTVMSNBC|access-date=10 January 2013|language=tr}}</ref> Mihaloliakos has also called for the "liberation"{{citation needed|date=March 2021}} of Northern Epirus. Golden Dawn and its former Cypriot counterpart [[ELAM (Cyprus)|ELAM]] support enosis. In 2015, close to 100 Golden Dawn members and leaders were arrested on a range of charges, including murder and racketeering. In 2019, the party's level of support, slumped to less than 2%. In October 2020, most of Golden Dawn's leadership was convicted, including Michaloliakos. As of 2023, the party, which never enjoyed electoral support above 10% of the popular vote, now has no remaining members in either the Hellenic or European Parliament.<ref>Gatopoulos, Derek; Becatoros, Elena (7 October 2020). "Greek court rules Golden Dawn party criminal organization". Associated Press. Retrieved January 3, 2020.</ref> == See also == {{Portal|Greece}} * [[Greek diaspora]] * [[Northern Epirus]] * [[Autonomous Republic of Northern Epirus]] * [[Greece during World War I]] * [[Occupation of Constantinople]] * [[Irredentism]] * [[Zone of Smyrna]] * [[Republic of Pontus]] * * [[Georgios Grivas]] * [[Foreign relations of Greece]] * [[Greek Plan]] * [[Enosis]] * [[Succession of the Roman Empire]] ==References== {{Reflist|2}} {{Balkan Wars}} {{Megali Idea}} {{Greek nationalism}} {{Irredentism}} {{Pan-nationalist concepts}} {{Stateless nationalism in Europe}} [[Category:Megali Idea| ]] [[Category:National unifications]] [[Category:Foreign relations of Greece]] [[Category:Greece–Turkey relations]] [[Category:History of modern Greece]] [[Category:19th century in the Ottoman Empire]] [[Category:Greek nationalism]] [[Category:Nationalist movements in Europe]] [[Category:Pan-nationalism]] [[Category:Political history of Greece]] [[Category:Political movements of the Ottoman Empire]] f45ac96163cdb251665c56e33fbee9b5df193b2a Module:Political party/N 828 1575 2910 2023-09-27T17:16:36Z w>Jvalienforce 0 Scribunto text/plain -- Constant data used by [[Module:Political party]] local alternate = { ["N/a"] = "N/A", ["n/a"] = "N/A", ["Nacionalista Party (Liberal wing)"] = "Liberal Party (Philippines)", ["Nacionalista Party-Consolidato"] = "Nacionalista Democratico", ["Nacionalista Party-Pro-Independencia"] = "Nacionalista Democrata Pro-Independencia", ["Nafarroa Bai"] = "Geroa Bai", ["Nagaland People's Council"] = "Naga People's Front", ["Naga Peoples Front"] = "Naga People's Front", ["Nagaland People's Front"] = "Naga People's Front", ["Nagaland Peoples Front"] = "Naga People's Front", ["Naleraq Party"] = "Naleraq", ["Natatok"] = "Natatok Indigenous People's Democratic Party", ["National–Liberal Coalition"] = "National/Liberal Coalition", ["National Centre of Independents"] = "National Centre of Independents and Peasants", ["National Coalition Party (Finland)"] = "National Coalition Party", ["National Congress (Sudan)"] = "National Congress Party (Sudan)", ["National Cooperation (Denmark)"] = "National Cooperation", ["National Conservative Party"] = "National Conservative Party (Cuba)", ["National Democratic Alliance (India)"] = "National Democratic Alliance", ["National Democratic Party (UK 1960s)"] = "National Democratic Party (UK, 1966)", ["National Democratic Party (United States)"] = "National Democratic Party (US)", ["National Democrats (UK)"] = "National Democrats (United Kingdom)", ["National Development Party (East Timor)"] = "Party of National Development", ["National Freedom Front"] = "Jathika Nidahas Peramuna", ["National Front (Finland)"] = "Finnish People's Blue-Whites", ["National Front (United Kingdom)"] = "National Front (UK)", ["National Government (UK)"] = "National Government (United Kingdom)", ["National Independence Party (Luxembourg)"] = "Independent National Party (Luxembourg)", ["National Independent"] = "National Government (United Kingdom)", ["National Labour Party (UK 1930s)"] = "National Labour Organisation", ["National Labour Party (UK)"] = "National Labour Organisation", ["National League (Ireland)"] = "National League Party", ["National Liberal and Conservative"] = "National Liberal Party (UK, 1931)", ["National Liberal Party (UK, 1947)"] = "National Liberal Party (UK, 1931)", ["National Liberation Front (Yugoslavia)"] = "Unitary National Liberation Front", ["National Organisation of We the People"] = "Nationwide Organisation of We the People", ["National Organization of the Right"] = "Moderate Party", ["National Party (Chile, 1857–1933)"] = "National Party (Chile, 1857)", ["National Party (Chile, 1966–94)"] = "National Party (Chile, 1966)", ["National Party (United States)"] = "National Party (US)", ["National Party of Australia - Queensland"] = "National Party of Australia – Queensland", ["National Party of Western Australia"] = "National Party of Australia", ["National Patriotic Union \"Rodina\""] = "Rodina (political party)", ["National People’s Ambassadors"] = "National People's Ambassadors", ["National People’s Front (South Africa)"] = "National People's Front (South Africa)", ["National People’s Front"] = "National People's Front (South Africa)", ["National Rally (France)"] = "National Rally", ["National Rally for Democracy (Algeria)"] = "Democratic National Rally", ["National Renewal Alliance Party"] = "National Renewal Alliance", ["National Renewal"] = "National Renewal (Chile)", ["National Republican Party (United States)"] = "National Republican Party (US)", ["National Republican Party"] = "National Republican Party (US)", ["National Revival"] = "National Revival (Artsakh)", ["National Revolutionary Dividends Party"] = "National Revolutionary Party (South Korea, 2020)", ["National Solidarity Party (Peru)"] = "National Solidarity (Peru)", ["National Solidarity Party"] = "National Solidarity Party (Singapore)", ["National Umma Party Sudan"] = "National Umma Party", ["National Union Party (United States)"] = "National Union Party (US)", ["National Union"] = "National Union (Cuba)", ["National Unionist Party (Sudan)"] = "Democratic Unionist Party (Sudan)", ["National Unity Party (Burma)"] = "National Unity Party (Myanmar)", ["Nationalist Coalition (1989)"] = "Nationalist Coalition", ["Nationalist Coalition (1994)"] = "Nationalist Coalition", ["Nationalist Democracy Party (Turkey)"] = "Nationalist Democracy Party", ["Nationalist Left of the Balearic Islands Federation"] = "Socialist Party of Majorca", ["Nationalist Party of Australia"] = "Nationalist Party (Australia)", ["Natural Law Party (New Zealand)"] = "Natural Law Party of New Zealand", ["Natural Law Party (United States)"] = "Natural Law Party (US)", ["Navarrese Autonomist Union"] = "Basque Nationalists", ["Naya Shakti Party, Nepal"] = "Communist Party of Nepal (Unified Socialist)", ["Nebraska Legal Marijuana NOW Party"] = "Legal Marijuana Now Party", ["Nebraska Democratic Party"] = "Democratic Party (United States)", ["Nebraska Republican Party"] = "Republican Party (United States)", ["Neighbourhood and Workers Service Centre"] = "Neighbourhood and Worker's Service Centre", ["Neighbourhood and Workers' Service Centre"] = "Neighbourhood and Worker's Service Centre", ["Neo Destour"] = "Democratic Constitutional Rally", ["NEOS - The New Austria"] = "NEOS – The New Austria and Liberal Forum", ["NEOS – The New Austria"] = "NEOS – The New Austria and Liberal Forum", ["Nepal Sadbhavana Party"] = "Nepal Sadbhawana Party", ["Nepali Congress"] = "Nepali Congress sidebar", ["NETWORK (Slovak party)"] = "Network (Slovak party)", ["Network of Electoral Democracy"] = "Democratic Network", ["Nevada Democratic Party"] = "Democratic Party (United States)", ["Nevada Republican Party"] = "Republican Party (United States)", ["New Alternative Party"] = "New Alternative Party (Thailand)", ["New Centre-Right – Union of the Centre"] = "New Centre-Right", ["New Centre-right"] = "New Centre-Right", ["New Centre"] = "Les Centristes", ["New Force"] = "New Force (Italy)", ["New Generation Party – Christian Democratic"] = "New Generation Party (Romania)", ["New Harmony"] = "New Harmony (Latvia)", ["New Iran Party"] = "Iran Novin Party", ["New Jersey Conservative Party"] = "Conservative Party (US)", ["New Komeito Party"] = "New Kōmeitō", ["New Komeito"] = "New Kōmeitō", ["New Left Front"] = "Left Liberation Front", ["New Majority (Slovakia)"] = "NOVA (Slovakia)", ["New Majority"] = "NOVA (Slovakia)", ["New Nationalist Party"] = "New Nationalist Party (UK)", ["New Party (Republic of China)"] = "New Party (Taiwan)", ["New Progressive Party (United States)"] = "New Progressive Party (US)", ["New Progressive Party of Puerto Rico"] = "New Progressive Party (Puerto Rico)", ["New Republic Party"] = "New Republic Party (South Africa)", ["New Self-Government"] = "Self-Government (Faroe Islands)", ["New Union for Macau's Development"] = "New Macau Development Union", ["New Union for Macau’s Development"] = "New Macau Development Union", ["New York Democratic Party"] = "Democratic Party (United States)", ["New York Republican Party"] = "Republican Party (United States)", ["New York Republican State Committee"] = "Republican Party (United States)", ["New York State Democratic Committee"] = "Democratic Party (United States)", ["New York Tax Cut Now Party"] = "Tax Cut Now Party (New York)", ["New Zealand Democratic Party"] = "New Zealand Democratic Party for Social Credit", ["New Zealand Outdoors Party"] = "NZ Outdoors & Freedom Party", ["New Zealand Progressive Party"] = "Jim Anderton's Progressive Party", ["New Zealand Reform Party"] = "Reform Party (New Zealand)", ["Nieuw Sociaal Contract"] = "New Social Contract", ["No Overall Control"] = "No overall control", ["No party preference (United States)"] = "No party preference (US)", ["No Party to Support (Japan)"] = "Shiji Seitō Nashi", ["Nominated by Petition"] = "Independent (US)", ["Non Partisan"] = "Nonpartisan politician", ["Non-Affiliated"] = "Non-affiliated members of the House of Lords", ["Non-affiliated"] = "Non-affiliated members of the House of Lords", ["Non-Partisan League"] = "Nonpartisan League", ["Non-partisan Solidarity Union"] = "Non-Partisan Solidarity Union", ["Non-partisan"] = "Nonpartisan politician", ["Non-registered candidates"] = "Independent politician", ["None"] = "Independent politician", ["Nonpartisan"] = "Nonpartisan politician", ["Nonpartisan candidate"] = "Nonpartisan politician", ["Nonpartisan (United States)"] = "Nonpartisan (US)", ["North Calotte People"] = "Nordkalottfolket", ["North Carolina Democratic Party"] = "Democratic Party (United States)", ["North Carolina Green Party"] = "Green Party (US)", ["North Carolina Republican Party"] = "Republican Party (United States)", ["North Dakota Democratic-Independent Party"] = "Democratic-Independent Party (North Dakota)", ["North Dakota Democratic–NPL"] = "North Dakota Democratic–Nonpartisan League Party", ["North Dakota Democratic–NPL Party"] = "North Dakota Democratic–Nonpartisan League Party", ["North Dakota Democratic-NPL"] = "North Dakota Democratic–Nonpartisan League Party", ["North Dakota Democratic-NPL Party"] = "North Dakota Democratic–Nonpartisan League Party", ["North Dakota Republican Party"] = "Republican Party (United States)", ["NorthBohemians.cz"] = "Severočeši.cz", ["Northern Mariana Islands Democratic Party"] = "Democratic Party (United States)", ["Northern League"] = "Lega Nord", ["Norwegian Farmers' Association"] = "Centre Party (Norway)", ["Norwegian Labour Party"] = "Labour Party (Norway)", ["Nouvelle Union Populaire écologiste et sociale"] = "New Ecological and Social People's Union", ["NOW – List Pilz"] = "JETZT (party)", ["NPHK"] = "New Prospect for Hong Kong", ["NPPHK"] = "New People's Party (Hong Kong)", ["Nullifier Party (United States)"] = "Nullifier Party", ["NUPES"] = "New Ecological and Social People's Union", ["NUPÉS"] = "New Ecological and Social People's Union", ["NWSC"] = "Neighbourhood and Worker's Service Centre", ["NZ Outdoors Party"] = "NZ Outdoors & Freedom Party", } local full = { ["N/A"] = {abbrev = "", color = "#DDDDDD", shortname = "",}, ["Naam Tamilar Katchi"] = {abbrev = "NTK", color = "#B31818", shortname = "",}, ["Naari Shakti Party"] = {abbrev = "", color = "#993366", shortname = "",}, ["Nabad iyo Nolol"] = {abbrev = "", color = "#5EA4D7", shortname = "",}, ["Nacionalista Democrata Pro-Independencia"] = {abbrev = "", color = "#B22222", shortname = "",}, ["Nacionalista Democratico"] = {abbrev = "", color = "#191970", shortname = "",}, ["Nacionalista Party"] = {abbrev = "NP", color = "#98fb98", shortname = "Nacionalista",}, ["Naga National Democratic Party"] = {abbrev = "NND", color = "#a00000", shortname = "",}, ["Naga People's Front"] = {abbrev = "NPF", color = "#1717CC", shortname = "",}, ["Nagaland Nationalist Organisation"] = {abbrev = "NNO", color = "#FFFF00", shortname = "",}, ["Nagaland People's Conference"] = {abbrev = "", color = "#800080", shortname = "",}, ["Nagriamel"] = {abbrev = "", color = "#42adde", shortname = "",}, ["Nagrik Unmukti Party"] = {abbrev = "NUP", color = "#2E8B57", shortname = "Nagrik Unmukti",}, ["Nahdlatul Ulama"] = {abbrev = "", color = "#017533", shortname = "",}, ["Najjadeh Party"] = {abbrev = "", color = "#000000", shortname = "",}, ["Naleraq"] = {abbrev = "", color = "#FF6900", shortname = "",}, ["Namakwa Civic Movement (South Africa)"] = {abbrev = "", color = "#876D51", shortname = "",}, ["Namangi Aute"] = {abbrev = "", color = "#F16A26", shortname = "",}, ["Namibian Economic Freedom Fighters"] = {abbrev = "NEFF", color = "#852A2A", shortname = "",}, ["Nanggroe Aceh Party"] = {abbrev = "PNA", color = "#FF7F42", shortname = "",}, ["Nantwich Independent Party"] = {abbrev = "", color = "#FFFFFF", shortname = "Nantwich Independent",}, ["Nasdem Party"] = {abbrev = "", color = "#27408B", shortname = "Nasdem",}, ["Nashi (political party)"] = {abbrev = "", color = "#16327A", shortname = "",}, ["Nasion Rénioné"] = {abbrev = "", color = "#FFDD00", shortname = "",}, ["Nasjonal Samling"] = {abbrev = "", color = "red", shortname = "",}, ["Nasserist Reform Organisation"] = {abbrev = "", color = "green", shortname = "",}, ["Nasserist Unionist People's Organisation"] = {abbrev = "NUPO", color = "#000000", shortname = "",}, ["Natatok Indigenous People's Democratic Party"] = {abbrev = "", color = "#6495ED", shortname = "Natatok",}, ["Nation (political party)"] = {abbrev = "", color = "black", shortname = "",}, ["Nation Alliance (Turkey)"] = {abbrev = "", color = "#D0222C", shortname = "Millet",}, ["Nation and Justice Party"] = {abbrev = "", color = "#3F5394", shortname = "",}, ["Nation and Revolution"] = {abbrev = "", color = "#000000", shortname = "",}, ["Nation Building Labour Party"] = {abbrev = "", color = "#673A8F", shortname = "",}, ["Nation Party (Turkey, 1962)"] = {abbrev = "MP", color = "#610B0B", shortname = "",}, ["Nation Party (Turkey, 1992)"] = {abbrev = "", color = "#0050A9", shortname = "Nation",}, ["Nation Party of Iran"] = {abbrev = "NPI", color = "#FFD700", shortname = "",}, ["Nation's Future Party"] = {abbrev = "", color = "#283279", shortname = "",}, ["National-Liberal Coalition"] = {abbrev = "", color = "#006644", shortname = "Country",}, ["National/Liberal Coalition"] = {abbrev = "", color = "#006644", shortname = "Coalition",}, ["National (UK)"] = {abbrev = "", color = "lightblue", shortname = "National",}, ["National Action (Chile, 1963)"] = {abbrev = "", color = "#000080", shortname = "",}, ["National Action (Italy)"] = {abbrev = "", color = "#336699", shortname = "",}, ["National Action (Malta)"] = {abbrev = "", color = "navy", shortname = "",}, ["National Action against the Alienation of the People and the Home"] = {abbrev = "", color = "#CD5B45", shortname = "National Action",}, ["National Action Movement (Venezuela)"] = {abbrev = "", color = "#000000", shortname = "",}, ["National Action Party (El Salvador)"] = {abbrev = "PAN", color = "#7FA920", shortname = "",}, ["National Action Party (Mexico)"] = {abbrev = "PAN", color = "#0957A4", shortname = "",}, ["National Advance"] = {abbrev = "", color = "#000000", shortname = "",}, ["National Advancement Party"] = {abbrev = "PAN", color = "#FFFC33", shortname = "",}, ["National Agenda Party"] = {abbrev = "", color = "#1E2144", shortname = "",}, ["National Agenda Party (Kenya)"] = {abbrev = "NAP-K", color = "#2D4766", shortname = "",}, ["National Agrarian Party"] = {abbrev = "PNA", color = "black", shortname = "",}, ["National Agrarian Party (Costa Rica)"] = {abbrev = "PAN", color = "#F5DEB3", shortname = "",}, ["National Agricultural Industrial Party"] = {abbrev = "", color = "#0080FF", shortname = "",}, ["National Alfonsinist Movement"] = {abbrev = "MNA", color = "#008fc3", shortname = "",}, ["National Alliance (Italy)"] = {abbrev = "", color = "#004E99", shortname = "National Alliance",}, ["National Alliance (Latvia)"] = {abbrev = "NA", color = "#932330", shortname = "",}, ["National Alliance (Lithuania)"] = {abbrev = "NS", color = "#BB2025", shortname = "",}, ["National Alliance (Sint Maarten)"] = {abbrev = "NA", color = "#262262", shortname = "",}, ["National Alliance (Spain)"] = {abbrev = "", color = "#111011", shortname = "",}, ["National Alliance – Segni Pact"] = {abbrev = "", color = "#004E99", shortname = "",}, ["National Alliance 21"] = {abbrev = "", color = "#197C53", shortname = "",}, ["National Alliance for Belizean Rights"] = {abbrev = "NABR", color = "#228B22", shortname = "",}, ["National Alliance for Change"] = {abbrev = "ANC", color = "#FF8201", shortname = "",}, ["National Alliance for Democracy and Progress"] = {abbrev = "ANDP", color = "#FBEE06", shortname = "",}, ["National Alliance for Reconstruction"] = {abbrev = "NAR", color = "#F35D46", shortname = "",}, ["National Alliance July 18"] = {abbrev = "", color = "#1F3759", shortname = "",}, ["National Alliance of Independents"] = {abbrev = "", color = "#013068", shortname = "",}, ["National Alliance Party (Papua New Guinea)"] = {abbrev = "NAP", color = "#FFD700", shortname = "",}, ["National Alliance Party for Unity"] = {abbrev = "", color = "#556627", shortname = "",}, ["National Alternative"] = {abbrev = "", color = "#000080", shortname = "",}, ["National Alternative Movement"] = {abbrev = "MAN", color = "#0F7B61", shortname = "",}, ["National Amalgamated Union of Labour"] = {abbrev = "NAUL", color = "#B31B1B", shortname = "",}, ["National Andorran Coalition"] = {abbrev = "CNA", color = "#000080", shortname = "",}, ["National Antisemitic Party"] = {abbrev = "", color = "#cfb53b", shortname = "National Antisemitic",}, ["National Arab Socialist Ba'ath Party – Yemen Region"] = {abbrev = "", color = "black", shortname = "",}, ["National Assembly for Wales"] = {abbrev = "", color = "#E60A82", shortname = "",}, ["National Assembly (South Korea)"] = {abbrev = "", color = "#580009", shortname = "",}, ["National Association (South Korea)"] = {abbrev = "", color = "#1271B5", shortname = "National Association",}, ["National Autonomist Party"] = {abbrev = "PAN", color = "#30D5C8", shortname = "",}, ["National Awakening (Iceland)"] = {abbrev = "", color = "#D6AB72", shortname = "",}, ["National Awakening Party"] = {abbrev = "PKB", color = "#02754C", shortname = "",}, ["National Awami Party (Wali)"] = {abbrev = "", color = "#ff0000", shortname = "",}, ["National Awami Party"] = {abbrev = "NAP", color = "#004C7C", shortname = "",}, ["National Bloc (France)"] = {abbrev = "", color = "#4682B4", shortname = "",}, ["National Bloc (Italy, 1921)"] = {abbrev = "BN", color = "#272E75", shortname = "National Bloc",}, ["National Bloc (Italy, 1948)"] = {abbrev = "BN", color = "#000000", shortname = "National Bloc",}, ["National Bloc (Lebanon)"] = {abbrev = "", color = "#3e9bae", shortname = "National Bloc",}, ["National Bloc (Syria)"] = {abbrev = "", color = "#808080", shortname = "",}, ["National Blocs"] = {abbrev = "", color = "#15317E", shortname = "",}, ["National Bolshevik Party"] = {abbrev = "", color = "#A80000", shortname = "",}, ["National Call for the Republic"] = {abbrev = "", color = "#FFCD03", shortname = "",}, ["National Catholic Association of Propagandists"] = {abbrev = "", color = "#EB0029", shortname = "",}, ["National Centre of Independents and Peasants"] = {abbrev = "CNIP", color = "#26C4EC", shortname = "",}, ["National Centre of Social Republicans"] = {abbrev = "CNRS", color = "#00008b", shortname = "",}, ["National Centre Party (Estonia)"] = {abbrev = "RKE", color = "", shortname = "",}, ["National Centre Party (Ireland)"] = {abbrev = "NCP", color = "#0000FF", shortname = "National Centre Party",}, ["National Centre Union"] = {abbrev = "", color = "#002C77", shortname = "",}, ["National Centrist Party"] = {abbrev = "NCP", color = "#293D94", shortname = "",}, ["National Change Union"] = {abbrev = "UCN", color = "#0000FE", shortname = "",}, ["National Christian Party (Armenia)"] = {abbrev = "", color = "#122D3F", shortname = "",}, ["National Christian Party"] = {abbrev = "PNC", color = "#A52A2A", shortname = "",}, ["National Christian Union"] = {abbrev = "", color = "white", shortname = "",}, ["National-Christian Defense League"] = {abbrev = "LANC", color = "#5a1111", shortname = "",}, ["National Citizen Party"] = {abbrev = "", color = "blue", shortname = "",}, ["National Citizen Will Party"] = {abbrev = "", color = "#0060af", shortname = "",}, ["National Citizens Alliance"] = {abbrev = "", color = "#710039", shortname = "",}, ["National Civic Union (Dominican Republic)"] = {abbrev = "", color = "#ff9100", shortname = "",}, ["National Coalition / Independent Candidates"] = {abbrev = "NK/NEKA", color = "#27A3DD", shortname = "",}, ["National Coalition for Transformation"] = {abbrev = "NCT", color = "#cebcb6", shortname = "",}, ["National Coalition of Afghanistan"] = {abbrev = "", color = "#034F97", shortname = "National Coalition",}, ["National Coalition Party (2020)"] = {abbrev = "", color = "#0F56FF", shortname = "",}, ["National Coalition Party (El Salvador)"] = {abbrev = "PCN", color = "#0B58DC", shortname = "",}, ["National Coalition Party"] = {abbrev = "NCP", color = "#006288", shortname = "National Coalition",}, ["National Cohesion for Rights and the Construction of Generations"] = {abbrev = "", color = "#B7752C", shortname = "Ribat",}, ["National Committee"] = {abbrev = "EK", color = "#6B8E23", shortname = "",}, ["National Community Association"] = {abbrev = "NCA", color = "#FFDF00", shortname = "",}, ["National Community Association Party"] = {abbrev = "NCAP", color = "#FFFFFF", shortname = "",}, ["National Community Party"] = {abbrev = "", color = "#F97F63", shortname = "",}, ["National Congress (Pakistan and Bangladesh)"] = {abbrev = "", color = "#00BFFF", shortname = "National Congress",}, ["National Congress (Sri Lanka)"] = {abbrev = "", color = "#9acd32", shortname = "",}, ["National Congress for Democratic Initiative"] = {abbrev = "", color = "#00FF7F", shortname = "",}, ["National Congress for Liberty"] = {abbrev = "", color = "#107B40", shortname = "",}, ["National Congress for New Politics"] = {abbrev = "", color = "#009a44", shortname = "National Congress",}, ["National Congress for Timorese Reconstruction"] = {abbrev = "CNRT", color = "#1E90FF", shortname = "",}, ["National Congress of the Canaries"] = {abbrev = "", color = "#427A3A", shortname = "",}, ["National Congress Party (Sudan)"] = {abbrev = "", color = "#0A5A38", shortname = "National Congress",}, ["National Congress Party of Afghanistan"] = {abbrev = "", color = "#FFCC66", shortname = "",}, ["National Conscience Party"] = {abbrev = "NCP", color = "#000000", shortname = "",}, ["National Consensus Forces"] = {abbrev = "NCF", color = "#EC313A", shortname = "",}, ["National Conservative Party (Cuba)"] = {abbrev = "PNC", color = "#008000", shortname = "",}, ["National Consultation"] = {abbrev = "CN", color = "#172DFC", shortname = "",}, ["National Constitution Party"] = {abbrev = "", color = "#32A640", shortname = "Constitution",}, ["National Constitutional Assembly"] = {abbrev = "NCA", color = "#EA6646", shortname = "",}, ["National Construction Movement"] = {abbrev = "", color = "#43C100", shortname = "El Binaa",}, ["National Convention of Nagaland"] = {abbrev = "NCN", color = "#a04040", shortname = "",}, ["National Convention Party (Ghana)"] = {abbrev = "", color = "red", shortname = "",}, ["National Convention Party (The Gambia)"] = {abbrev = "", color = "pink", shortname = "",}, ["National Convergence \"Kwa Na Kwa\""] = {abbrev = "", color = "orange", shortname = "",}, ["National Convergence Front"] = {abbrev = "FCN", color = "#003896", shortname = "",}, ["National Convergence"] = {abbrev = "CVGC", color = "#36D135", shortname = "",}, ["National Cooperation"] = {abbrev = "", color = "#087830", shortname = "National Cooperative",}, ["National Cooperative Party"] = {abbrev = "", color = "#A703DF", shortname = "National Cooperative",}, ["National Corporate Party"] = {abbrev = "", color = "#003000", shortname = "",}, ["National Corps"] = {abbrev = "", color = "#002E52", shortname = "",}, ["National Council for the Defense of Democracy – Forces for the Defense of Democracy"] = {abbrev = "CNDD–FDD", color = "#CC0001", shortname = "",}, ["National Council for the Defense of Democracy"] = {abbrev = "", color = "#000099", shortname = "",}, ["National Council of Nigeria and the Cameroons"] = {abbrev = "", color = "blue", shortname = "",}, ["National Council of Venezuelan Indians"] = {abbrev = "CONIVE", color = "#249E2F", shortname = "",}, ["National Council (Georgia)"] = {abbrev = "CNDD–FDD", color = "#FFFF00", shortname = "National Council",}, ["National Country Party (NSW)"] = {abbrev = "", color = "#006644", shortname = "",}, ["National Covenant Party"] = {abbrev = "", color = "green", shortname = "",}, ["National Creation"] = {abbrev = "ED", color = "#EF8C18", shortname = "",}, ["National Crusade Party"] = {abbrev = "PCN", color = "#000000", shortname = "",}, ["National Defence League"] = {abbrev = "", color = "#0000FF", shortname = "",}, ["National Democracy (Czech Republic)"] = {abbrev = "ND", color = "#284696", shortname = "",}, ["National Democracy (Czechoslovakia)"] = {abbrev = "", color = "#2B347F", shortname = "",}, ["National Democracy (Italy)"] = {abbrev = "", color = "#0045AA", shortname = "National Democracy",}, ["National Democracy (Poland)"] = {abbrev = "ND", color = "#FFFFFF", shortname = "",}, ["National Democracy (Spain)"] = {abbrev = "", color = "#183463", shortname = "",}, ["National Democrat Party (Thailand)"] = {abbrev = "", color = "black", shortname = "National Democrat",}, ["National Democratic Action (Ecuador)"] = {abbrev = "ADN", color = "#67308B", shortname = "",}, ["National Democratic Alternative (Serbia)"] = {abbrev = "NADA", color = "#616264", shortname = "",}, ["National Democratic Alliance (Aruba)"] = {abbrev = "", color = "#4682B4", shortname = "",}, ["National Democratic Alliance (Italy)"] = {abbrev = "ADN", color = "#32CD32", shortname = "",}, ["National Democratic Alliance (Kuwait)"] = {abbrev = "NDA", color = "#88ADD6", shortname = "",}, ["National Democratic Alliance (Malawi)"] = {abbrev = "NDA", color = "#EEEEEE", shortname = "",}, ["National Democratic Alliance (Mauritania)"] = {abbrev = "AND", color = "#0AA450", shortname = "",}, ["National Democratic Alliance (Sierra Leone)"] = {abbrev = "NDA", color = "#4B9A23", shortname = "",}, ["National Democratic Alliance"] = {abbrev = "NDA", color = "#F98C1F", shortname = "",}, ["National Democratic and Labour Party"] = {abbrev = "", color = "#ffdead", shortname = "National Democratic",}, ["National Democratic Christian Party"] = {abbrev = "PNDC", color = "#004A92", shortname = "",}, ["National Democratic Civic Movement"] = {abbrev = "MCDN", color = "#000000", shortname = "",}, ["National Democratic Coalition (Liberia)"] = {abbrev = "", color = "#D29B24", shortname = "",}, ["National Democratic Congress (Ghana)"] = {abbrev = "NDC", color = "#2E8B57", shortname = "",}, ["National Democratic Congress (Grenada)"] = {abbrev = "NDC", color = "#FECA09", shortname = "",}, ["National Democratic Convention (South Africa)"] = {abbrev = "", color = "black", shortname = "National Democratic Convention",}, ["National Democratic Force"] = {abbrev = "NDF", color = "#2042A1", shortname = "",}, ["National Democratic Front (Algeria)"] = {abbrev = "FND", color = "", shortname = "",}, ["National Democratic Front (Mexico)"] = {abbrev = "FDN", color = "yellow", shortname = "",}, ["National Democratic Group"] = {abbrev = "AND", color = "#E21019", shortname = "",}, ["National Democratic Hungarian-Szekler Party"] = {abbrev = "PNDMS", color = "#15803C", shortname = "",}, ["National Democratic Movement (Bosnia and Herzegovina)"] = {abbrev = "", color = "#0070FF", shortname = "",}, ["National Democratic Movement (Jamaica)"] = {abbrev = "NDM", color = "#0C8DE0", shortname = "",}, ["National Democratic Party (Argentina)"] = {abbrev = "PDN", color = "#005C9E", shortname = "National Democratic Party",}, ["National Democratic Party (Austria)"] = {abbrev = "NDP", color = "#995908", shortname = "",}, ["National Democratic Party (Bangladesh)"] = {abbrev = "NDP", color = "#FFBB2B", shortname = "",}, ["National Democratic Party (Bosnia and Herzegovina)"] = {abbrev = "NDS", color = "#b30000", shortname = "",}, ["National Democratic Party (British Virgin Islands)"] = {abbrev = "NDP", color = "#ED2939", shortname = "",}, ["National Democratic Party (Chile)"] = {abbrev = "PADENA", color = "#013068", shortname = "",}, ["National Democratic Party (Egypt)"] = {abbrev = "NDP", color = "#11573B", shortname = "",}, ["National Democratic Party (El Salvador)"] = {abbrev = "PND", color = "#90EE90", shortname = "",}, ["National Democratic Party (Georgia)"] = {abbrev = "NDP", color = "#B5011E", shortname = "",}, ["National Democratic Party (Ghana)"] = {abbrev = "NDP", color = "#FF0000", shortname = "",}, ["National Democratic Party (Greece)"] = {abbrev = "EDK", color = "#FFD700", shortname = "",}, ["National Democratic Party (Iraq)"] = {abbrev = "NDP", color = "red", shortname = "",}, ["National Democratic Party (Ireland)"] = {abbrev = "", color = "yellow", shortname = "National Democratic",}, ["National Democratic Party (Japan)"] = {abbrev = "", color = "#A703DF", shortname = "National Democratic",}, ["National Democratic Party (Kerala)"] = {abbrev = "NDP", color = "Orange", shortname = "",}, ["National Democratic Party (Morocco)"] = {abbrev = "NDP", color = "#00FF00", shortname = "",}, ["National Democratic Party (Namibia)"] = {abbrev = "NDP", color = "#14A016", shortname = "",}, ["National Democratic Party (Northern Ireland)"] = {abbrev = "NDP", color = "#DDFFDD", shortname = "National Democratic",}, ["National Democratic Party (Suriname)"] = {abbrev = "NDP", color = "#872890", shortname = "",}, ["National Democratic Party (UK, 1966)"] = {abbrev = "", color = "#3F5F5F", shortname = "National Democratic",}, ["National Democratic Party (US)"] = {abbrev = "", color = "#FFD700", shortname = "National Democratic",}, ["National Democratic Party of Alabama"] = {abbrev = "", color = "#3333FF", shortname = "National Democratic (Ala.)",}, ["National Democratic Party of Germany (East Germany)"] = {abbrev = "NDPD", color = "#FFCF00", shortname = "",}, ["National Democratic Party of Germany"] = {abbrev = "NPD", color = "#8B4726", shortname = "",}, ["National Democratic Party of Liberia"] = {abbrev = "NDPL", color = "#A34120", shortname = "",}, ["National Democratic Party of Lithuania"] = {abbrev = "LNDP", color = "gold", shortname = "",}, ["National Democratic Party of Spain"] = {abbrev = "", color = "#0061A5", shortname = "",}, ["National Democratic Party of Tibet"] = {abbrev = "NDPT", color = "red", shortname = "",}, ["National Democratic Party"] = {abbrev = "", color = "#ff8c00", shortname = "National Democratic",}, ["National Democratic Peoples Front"] = {abbrev = "NDPF", color = "#7401DF", shortname = "",}, ["National Democratic Pole"] = {abbrev = "", color = "#292929", shortname = "",}, ["National Democratic Policy Committee"] = {abbrev = "NDPC", color = "red", shortname = "LaRouche movement",}, ["National Democratic Progressive Party"] = {abbrev = "", color = "#ED6255", shortname = "",}, ["National Democratic Reconciliation Party"] = {abbrev = "", color = "#FFE25A", shortname = "",}, ["National Democratic Reconstruction"] = {abbrev = "", color = "#6AAC90", shortname = "",}, ["National Democratic Revival"] = {abbrev = "RDK", color = "#D71D29", shortname = "",}, ["National Democratic Union (Armenia)"] = {abbrev = "NDU", color = "#16229b", shortname = "",}, ["National Democratic Union (Brazil)"] = {abbrev = "UDN", color = "#000080", shortname = "",}, ["National Democratic Union (Greece)"] = {abbrev = "EDE", color = "#00008B", shortname = "National Democratic Union",}, ["National Democratic Union (Italy)"] = {abbrev = "UDN", color = "#000080", shortname = "National Democratic Union",}, ["National Democratic Union (Mauritania)"] = {abbrev = "UDN", color = "#32523D", shortname = "",}, ["National Democrats (Sweden)"] = {abbrev = "", color = "#ec9411", shortname = "National Democrats",}, ["National Democrats (United Kingdom)"] = {abbrev = "", color = "#2F4F4F", shortname = "National Democrats",}, ["National Destourian Initiative"] = {abbrev = "", color = "SkyBlue", shortname = "",}, ["National Development Party (Kenya)"] = {abbrev = "NDP", color = "#000040", shortname = "",}, ["National Development Party (Myanmar)"] = {abbrev = "", color = "#EA1D27", shortname = "",}, ["National Development Party (Thailand)"] = {abbrev = "", color = "#FFA500", shortname = "National&nbsp;Development",}, ["National Ecologic Party"] = {abbrev = "PEN", color = "#CCAA00", shortname = "",}, ["National Encounter Party"] = {abbrev = "PEN", color = "#EDB337", shortname = "",}, ["National Falange"] = {abbrev = "", color = "#0080FF", shortname = "",}, ["National Farmers' Association (Sweden)"] = {abbrev = "", color = "#008F3E", shortname = "National Farmers'",}, ["National Fascist Community"] = {abbrev = "NOF", color = "black", shortname = "",}, ["National Fascist Party"] = {abbrev = "", color = "#000000", shortname = "",}, ["National Federal Party"] = {abbrev = "", color = "#1E90FF", shortname = "National Federal",}, ["National Federation of Discharged and Demobilized Sailors and Soldiers"] = {abbrev = "NFDDSS", color = "#C0C0C0", shortname = "",}, ["National Federation Party"] = {abbrev = "NFP", color = "#145935", shortname = "",}, ["National Flood Prevention Party"] = {abbrev = "NFPP", color = "#B0E0E6", shortname = "Flood Prevention",}, ["National Force (Belgium)"] = {abbrev = "", color = "#FFFD08", shortname = "",}, ["National Forces Alliance"] = {abbrev = "NFA", color = "#FFBA00", shortname = "",}, ["National Forces' Movement"] = {abbrev = "NEM", color = "#A91101", shortname = "",}, ["National Forces of Liberation"] = {abbrev = "", color = "green", shortname = "",}, ["National Forum (Croatia)"] = {abbrev = "", color = "#345AA6", shortname = "",}, ["National Freedom Party"] = {abbrev = "NFP", color = "#FF8040", shortname = "",}, ["National Front (Belgium)"] = {abbrev = "FN", color = "#F2CB2E", shortname = "",}, ["National Front (Czechoslovakia)"] = {abbrev = "", color = "red", shortname = "",}, ["National Front (France)"] = {abbrev = "FN", color = "#004A77", shortname = "",}, ["National Front (Greece)"] = {abbrev = "EM", color = "#0060a6", shortname = "",}, ["National Front (Iran)"] = {abbrev = "NF", color = "#FFD700", shortname = "",}, ["National Front (Spain, 1986)"] = {abbrev = "", color = "#000000", shortname = "",}, ["National Front (Spain, 2006)"] = {abbrev = "", color = "#000080", shortname = "",}, ["National Front (Switzerland)"] = {abbrev = "", color = "black", shortname = "National Front",}, ["National Front (UK)"] = {abbrev = "", color = "MidnightBlue", shortname = "National Front",}, ["National Front Constitutional Movement"] = {abbrev = "", color = "DarkGoldenrod", shortname = "",}, ["National Front for Justice"] = {abbrev = "FNJ", color = "#008000", shortname = "",}, ["National Front for Salvation (Tunisia)"] = {abbrev = "", color = "DarkGoldenrod", shortname = "",}, ["National Front for Social Justice"] = {abbrev = "FNHS", color = "", shortname = "",}, ["National Front for the Salvation of Bulgaria"] = {abbrev = "NFSB", color = "#1C4482", shortname = "",}, ["National Front of Albania"] = {abbrev = "", color = "#73584E", shortname = "",}, ["National Front of Catalonia (2013)"] = {abbrev = "", color = "#49A6F6", shortname = "",}, ["National Front of Catalonia"] = {abbrev = "", color = "#FFF700", shortname = "",}, ["National Front of Independents for Understanding"] = {abbrev = "FNIC", color = "", shortname = "",}, ["National Front of the German Democratic Republic"] = {abbrev = "", color = "red", shortname = "",}, ["National Front of Workers and Peasants"] = {abbrev = "", color = "#FFD700", shortname = "",}, ["National Front Party (Azerbaijan)"] = {abbrev = "", color = "#14B5E1", shortname = "",}, ["National Front Party (Libya)"] = {abbrev = "NFP", color = "#D1E231", shortname = "",}, ["National Government (United Kingdom)"] = {abbrev = "", color = "#cccccc", shortname = "National",}, ["National Grand Coalition"] = {abbrev = "", color = "#028DD5", shortname = "",}, ["National Harmony Party"] = {abbrev = "", color = "#8A2A30", shortname = "",}, ["National Health Action Party"] = {abbrev = "NHA", color = "#0071BB", shortname = "",}, ["National Health Service Alliance"] = {abbrev = "", color = "#8B00FF", shortname = "",}, ["National Independence Party (Belize)"] = {abbrev = "NIP", color = "#FF0000", shortname = "",}, ["National Independence Party (UK)"] = {abbrev = "", color = "#2C6700", shortname = "National Independence",}, ["National Independence Party of Georgia"] = {abbrev = "NIP", color = "#C1161E", shortname = "",}, ["National Independent Party"] = {abbrev = "NIP", color = "#000000", shortname = "",}, ["National Independent Party (Costa Rica)"] = {abbrev = "PNI", color = "#4B0082", shortname = "",}, ["National Independent Party (Nepal)"] = {abbrev = "NIP", color = "#0095DA", shortname = "",}, ["National Independent Union"] = {abbrev = "", color = "#CF912A", shortname = "",}, ["National Indian Muslim Alliance Party"] = {abbrev = "IMAN", color = "#cd0000", shortname = "",}, ["National Initiative Party"] = {abbrev = "", color = "#92000a", shortname = "",}, ["National Innovation Party"] = {abbrev = "", color = "#25A9E0", shortname = "",}, ["National Integration Movement"] = {abbrev = "", color = "#1EC4FF", shortname = "",}, ["National Integration Party (Costa Rica)"] = {abbrev = "PIN", color = "#122562", shortname = "",}, ["National Integration Party (Guatemala)"] = {abbrev = "PIN", color = "#000000", shortname = "",}, ["National Iraqi Alliance"] = {abbrev = "", color = "#008000", shortname = "",}, ["National Islamic Front of Afghanistan"] = {abbrev = "", color = "gold", shortname = "",}, ["National Islamic Front"] = {abbrev = "NIF", color = "#000000", shortname = "",}, ["National Islamic Movement of Afghanistan"] = {abbrev = "", color = "#3F47CC", shortname = "Junbish",}, ["National Ittihadi Congress"] = {abbrev = "", color = "#1170C1", shortname = "",}, ["National Jankranti Dal"] = {abbrev = "NJD", color = "#edb7c9", shortname = "",}, ["National Joint Action Committee"] = {abbrev = "NJAC", color = "black", shortname = "",}, ["National Labor Party (Brazil)"] = {abbrev = "", color = "#31b44b", shortname = "",}, ["National Labor Party (Mongolia)"] = {abbrev = "NLP", color = "#6D3290", shortname = "",}, ["National Labor Party"] = {abbrev = "", color = "#E2826B", shortname = "",}, ["National Labour Organisation"] = {abbrev = "", color = "green", shortname = "National Labour",}, ["National Labour Party (Brazil)"] = {abbrev = "PTN", color = "#AFB908", shortname = "",}, ["National Labour Party (Czechoslovakia, 1925)"] = {abbrev = "NSP", color = "#B0E0E6", shortname = "",}, ["National Labour Party (Ireland)"] = {abbrev = "NLP", color = "#FF7F50", shortname = "National Labour Party",}, ["National Labour Party (Kenya)"] = {abbrev = "NLP", color = "#23C539", shortname = "",}, ["National Landowners (Denmark)"] = {abbrev = "", color = "#246B24", shortname = "National Landowners",}, ["National League for Democracy"] = {abbrev = "NLD", color = "#EC1B23", shortname = "",}, ["National League of Sweden"] = {abbrev = "", color = "black", shortname = "National League",}, ["National League Party"] = {abbrev = "NL", color = "#9932CC", shortname = "National League",}, ["National Legitimist Party"] = {abbrev = "", color = "#004F50", shortname = "National Legitimist",}, ["National Legion (Norway)"] = {abbrev = "", color = "black", shortname = "",}, ["National Liberal Party (Bermuda)"] = {abbrev = "", color = "#E3B533", shortname = "",}, ["National Liberal Party (Bulgaria)"] = {abbrev = "", color = "#03C03C", shortname = "",}, ["National Liberal Party (Denmark)"] = {abbrev = "", color = "#AFEEEE", shortname = "National Liberal",}, ["National Liberal Party (El Salvador)"] = {abbrev = "", color = "#D8F781", shortname = "",}, ["National Liberal Party (Germany)"] = {abbrev = "NLP", color = "#98C22C", shortname = "",}, ["National Liberal Party (Lebanon)"] = {abbrev = "", color = "#C89E00", shortname = "National Liberal Party",}, ["National Liberal Party (Moldova)"] = {abbrev = "", color = "#FFE600", shortname = "",}, ["National Liberal Party (Panama)"] = {abbrev = "", color = "#9F140F", shortname = "",}, ["National Liberal Party (Romania, 1875)"] = {abbrev = "PNL", color = "#FFE101", shortname = "",}, ["National Liberal Party (Romania)"] = {abbrev = "PNL", color = "#FFDD00", shortname = "",}, ["National Liberal Party (UK, 1922)"] = {abbrev = "", color = "#FFF890", shortname = "National Liberal",}, ["National Liberal Party (UK, 1931)"] = {abbrev = "", color = "#AFEEEE", shortname = "National Liberal",}, ["National Liberal Party (UK, 1999)"] = {abbrev = "", color = "#FF6600", shortname = "National Liberal",}, ["National Liberal Party–Brătianu"] = {abbrev = "", color = "#d3c241", shortname = "PNL–Brătianu",}, ["National Liberal Party–Tătărescu"] = {abbrev = "", color = "#fdff62", shortname = "PNL-Tătărescu",}, ["National Liberation Front (Algeria)"] = {abbrev = "FLN", color = "#DC143C", shortname = "",}, ["National Liberation Front (Ceylon)"] = {abbrev = "", color = "#00008B", shortname = "",}, ["National Liberation Front (South Yemen)"] = {abbrev = "NLF", color = "#DC143C", shortname = "",}, ["National Liberation Front of Angola"] = {abbrev = "FNLA", color = "#F8D516", shortname = "",}, ["National Liberation Movement (Guatemala)"] = {abbrev = "MLN", color = "#002C77", shortname = "",}, ["National Liberation Party (Costa Rica)"] = {abbrev = "PLN", color = "#008024", shortname = "",}, ["National List"] = {abbrev = "", color = "#0047AB", shortname = "",}, ["National List (Italy)"] = {abbrev = "", color = "#000000", shortname = "National List",}, ["National Lokhind Party"] = {abbrev = "NLHP", color = "#00BFFF", shortname = "",}, ["National Loktantrik Party"] = {abbrev = "NLP", color = "#3333FF", shortname = "",}, ["National Mandate Party"] = {abbrev = "PAN", color = "#0054A3", shortname = "",}, ["National Monarchist Union (Spain, 1919)"] = {abbrev = "", color = "#008080", shortname = "",}, ["National Movement (Costa Rica)"] = {abbrev = "MN", color = "#FFFFFF", shortname = "",}, ["National Movement (Luxembourg)"] = {abbrev = "", color = "gray", shortname = "",}, ["National Movement (Poland)"] = {abbrev = "", color = "#C11D1E", shortname = "",}, ["National Movement for People's Power"] = {abbrev = "", color = "#A2006D", shortname = "",}, ["National Movement for Reconciliation"] = {abbrev = "", color = "#264F9E", shortname = "",}, ["National Movement for Sovereignty"] = {abbrev = "", color = "#2B3856", shortname = "",}, ["National Movement for Stability and Progress"] = {abbrev = "NDSV", color = "#F5CE42", shortname = "",}, ["National Movement for the Development of Society"] = {abbrev = "MNSD", color = "#22B14C", shortname = "",}, ["National Movement for the Liberation of Kosovo"] = {abbrev = "", color = "red", shortname = "",}, ["National Movement of Amhara"] = {abbrev = "NaMA", color = "#C66122", shortname = "",}, ["National Movement of Hope"] = {abbrev = "MNE", color = "#C66122", shortname = "",}, ["National Movement of the Revolution"] = {abbrev = "", color = "#FF7F00", shortname = "",}, ["National Network (Serbia)"] = {abbrev = "NM", color = "#46B8E9", shortname = "",}, ["National Opinion"] = {abbrev = "", color = "#7D5C4B", shortname = "",}, ["National Opposing Union"] = {abbrev = "UNO", color = "#006400", shortname = "",}, ["National Opposition Union"] = {abbrev = "UNO", color = "#1E90FF", shortname = "",}, ["National Ordinary People Empowerment Union"] = {abbrev = "", color = "#08702D", shortname = "",}, ["National Pact for Democracy and Development"] = {abbrev = "PNDD-ADIL", color = "#92440A", shortname = "",}, ["National Partnership"] = {abbrev = "NS", color = "#000000", shortname = "",}, ["National Party (Chile, 1857)"] = {abbrev = "", color = "#9C74FD", shortname = "National",}, ["National Party (Chile, 1966)"] = {abbrev = "", color = "#00008B", shortname = "National",}, ["National Party (Colombia)"] = {abbrev = "", color = "#E3FF2A", shortname = "",}, ["National Party (Costa Rica)"] = {abbrev = "", color = "#32CD32", shortname = "National",}, ["National Party (Czech Republic)"] = {abbrev = "NS", color = "#00008B", shortname = "",}, ["National Party (Haiti)"] = {abbrev = "", color = "#007BA7", shortname = "",}, ["National Party (Ireland, 1995)"] = {abbrev = "", color = "#8A8AE0", shortname = "National Party",}, ["National Party (Ireland, 2016)"] = {abbrev = "", color = "#264A3C", shortname = "National Party",}, ["National Party (Kingdom of Serbia)"] = {abbrev = "", color = "#040F0F", shortname = "National",}, ["National Party (Pakistan)"] = {abbrev = "NP", color = "#CD5C5C", shortname = "",}, ["National Party (Papua New Guinea)"] = {abbrev = "", color = "#2F8814", shortname = "National Party",}, ["National Party (Poland)"] = {abbrev = "SN", color = "#5E5151", shortname = "",}, ["National Party (Queensland, 1917)"] = {abbrev = "", color = "#6495ED", shortname = "National",}, ["National Party (South Africa)"] = {abbrev = "", color = "#FF9933", shortname = "National",}, ["National Party (South Korea)"] = {abbrev = "", color = "#F1433A", shortname = "National",}, ["National Party (Sweden)"] = {abbrev = "", color = "#ffff00", shortname = "National Party",}, ["National Party (Syria)"] = {abbrev = "", color = "#00529F", shortname = "National Party",}, ["National Party (UK, 1917)"] = {abbrev = "", color = "#327", shortname = "National",}, ["National Party (UK, 1976)"] = {abbrev = "", color = "black", shortname = "National Party",}, ["National Party (Uruguay)"] = {abbrev = "", color = "#80BFFF", shortname = "National Party",}, ["National Party (US)"] = {abbrev = "", color = "#EE6666", shortname = "National",}, ["National Party (Zambia)"] = {abbrev = "", color = "#377eb8", shortname = "",}, ["National Party For Development and Welfare"] = {abbrev = "NPFDW", color = "#FFBA00", shortname = "",}, ["National Party for Solidarity and Development"] = {abbrev = "PNSD", color = "", shortname = "",}, ["National Party of Australia – NSW"] = {abbrev = "", color = "#006644", shortname = "National",}, ["National Party of Australia – Queensland"] = {abbrev = "", color = "#006644", shortname = "National",}, ["National Party of Australia – Tasmania"] = {abbrev = "", color = "#006644", shortname = "",}, ["National Party of Australia – Victoria"] = {abbrev = "", color = "#006644", shortname = "National",}, ["National Party of Australia (WA)"] = {abbrev = "", color = "#006644", shortname = "National",}, ["National Party of Australia"] = {abbrev = "", color = "#006644", shortname = "National",}, ["National Party of Greece"] = {abbrev = "EKE", color = "lightgrey", shortname = "",}, ["National Party of Honduras"] = {abbrev = "", color = "#007DBC", shortname = "National",}, ["National Party of Nigeria"] = {abbrev = "", color = "#445FAC", shortname = "",}, ["National Party of Scotland"] = {abbrev = "", color = "#FFFF66", shortname = "National (Scotland)",}, ["National Party of South West Africa"] = {abbrev = "", color = "orange", shortname = "",}, ["National Party of Suriname"] = {abbrev = "NPS", color = "#00964C", shortname = "",}, ["National Party of Work"] = {abbrev = "", color = "#AAD8E6", shortname = "National&nbsp;Party&nbsp;of&nbsp;Work",}, ["National Party South Africa"] = {abbrev = "", color = "#0006B0", shortname = "National Party",}, ["National Patriotic Coalition"] = {abbrev = "", color = "#ADD8E6", shortname = "",}, ["National Patriotic Front (Namibia)"] = {abbrev = "NPF", color = "#EDD31C", shortname = "",}, ["National Patriotic Front (Zimbabwe)"] = {abbrev = "", color = "black", shortname = "",}, ["National Patriotic Party (Bangladesh)"] = {abbrev = "NPP", color = "#70179E", shortname = "",}, ["National Patriotic Party"] = {abbrev = "NPP", color = "#000000", shortname = "",}, ["National Peasant Party (Hungary)"] = {abbrev = "", color = "#FFCC00", shortname = "National Peasant",}, ["National Peasants' Party"] = {abbrev = "PNȚ", color = "#50693b", shortname = "",}, ["National People's Ambassadors"] = {abbrev = "", color = "#D1001C", shortname = "",}, ["National People's Front (South Africa)"] = {abbrev = "", color = "#52871E", shortname = "",}, ["National People's Party (Bangladesh)"] = {abbrev = "", color = "#CD853F", shortname = "",}, ["National People's Party (Curaçao)"] = {abbrev = "PNP", color = "#04733C", shortname = "",}, ["National People's Party (India)"] = {abbrev = "NPEP", color = "#FFCA61", shortname = "",}, ["National People's Party (Indonesia)"] = {abbrev = "", color = "black", shortname = "",}, ["National People's Party (South Africa, 1981)"] = {abbrev = "", color = "#DC143C", shortname = "National People's",}, ["National People's Party (South Africa)"] = {abbrev = "", color = "#274D8F", shortname = "National People's Party",}, ["National People's Party (The Gambia)"] = {abbrev = "NPP", color = "#40484F", shortname = "",}, ["National People's Power"] = {abbrev = "NPP", color = "#C4094A", shortname = "",}, ["National People’s Party"] = {abbrev = "", color = "#DDBBCC", shortname = "",}, ["National Peoples Party (Pakistan)"] = {abbrev = "", color = "#B22222", shortname = "",}, ["National Political Union"] = {abbrev = "", color = "black", shortname = "",}, ["National Political Union (1984)"] = {abbrev = "EPEN", color = "#0a00cc", shortname = "",}, ["National Popular Alliance"] = {abbrev = "ANAPO", color = "#bc8f8f", shortname = "",}, ["National Popular Movement"] = {abbrev = "", color = "#FB0242", shortname = "",}, ["National Popular Rally"] = {abbrev = "", color = "#F0001C", shortname = "",}, ["National Porfirist Party"] = {abbrev = "", color = "#0047AB", shortname = "",}, ["National Preservation Party"] = {abbrev = "", color = "#36895D", shortname = "National&nbsp;Preservation",}, ["National Pro Patria Party"] = {abbrev = "PNPP", color = "darkblue", shortname = "",}, ["National Progress Party of Armenia"] = {abbrev = "", color = "#F3A81D", shortname = "National&nbsp;Progress",}, ["National Progressive Center Union"] = {abbrev = "EPEK", color = "#9370DB", shortname = "",}, ["National Progressive Democrats"] = {abbrev = "NPD", color = "#FA8072", shortname = "National Progressive Democrats",}, ["National Progressive Force"] = {abbrev = "", color = "#2A52BE", shortname = "",}, ["National Progressive Front (Iraq)"] = {abbrev = "NPF", color = "#197B30", shortname = "",}, ["National Progressive Front (Syria)"] = {abbrev = "NPF", color = "#197B30", shortname = "",}, ["National Progressive Party (Carniola)"] = {abbrev = "NNS", color = "yellow", shortname = "",}, ["National Progressive Party (Finland)"] = {abbrev = "", color = "gold", shortname = "National Progressive",}, ["National Progressive Party (Laos)"] = {abbrev = "", color = "#002868", shortname = "",}, ["National Progressive Party (Switzerland)"] = {abbrev = "PPN", color = "#0404B4", shortname = "",}, ["National Progressive Unionist Party"] = {abbrev = "", color = "#F30502", shortname = "Tagammu",}, ["National Radical Union"] = {abbrev = "ERE", color = "#005AC0", shortname = "",}, ["National Rainbow Coalition – Kenya"] = {abbrev = "", color = "#66FF66", shortname = "",}, ["National Rainbow Coalition"] = {abbrev = "NARC", color = "#1889C7", shortname = "",}, ["National Rally for Democracy (Benin)"] = {abbrev = "", color = "#FEF880", shortname = "",}, ["National Rally for Democracy in Chad"] = {abbrev = "", color = "#ffd700", shortname = "RNDT–Le Réveil",}, ["National Rally for Development and Progress"] = {abbrev = "RNDP", color = "#000040", shortname = "",}, ["National Rally for Reform and Development"] = {abbrev = "", color = "#008040", shortname = "Tewassoul",}, ["National Rally of Independents"] = {abbrev = "RNI", color = "#00B5EE", shortname = "",}, ["National Rally"] = {abbrev = "RN", color = "#254671", shortname = "",}, ["National Rebirth Party"] = {abbrev = "", color = "#2C4F19", shortname = "",}, ["National Reconciliation Party"] = {abbrev = "NRP", color = "#0073CF", shortname = "",}, ["National Reconstruction"] = {abbrev = "", color = "#7B68EE", shortname = "National&nbsp;Reconstruction",}, ["National Reconstruction Party"] = {abbrev = "PRN", color = "#0087DC", shortname = "",}, ["National Reconstruction Party of Romania"] = {abbrev = "PRN", color = "yellow", shortname = "",}, ["National Reform Party (Belize)"] = {abbrev = "NRP", color = "#FF7F00", shortname = "",}, ["National Reform Party (Ghana)"] = {abbrev = "", color = "purple", shortname = "",}, ["National Reform Trend"] = {abbrev = "", color = "#AEDBFB", shortname = "",}, ["National Regeneration Movement"] = {abbrev = "MORENA", color = "#B62118", shortname = "",}, ["National Religious Front"] = {abbrev = "", color = "#583759", shortname = "",}, ["National Religious Party"] = {abbrev = "", color = "#583759", shortname = "Mafdal",}, ["National Renaissance Front"] = {abbrev = "", color = "#000080", shortname = "",}, ["National Renewal (Chile)"] = {abbrev = "", color = "#024E9A", shortname = "National Renewal",}, ["National Renewal (Peru)"] = {abbrev = "", color = "#0047AB", shortname = "",}, ["National Renewal Alliance"] = {abbrev = "ARENA", color = "#0067A5", shortname = "",}, ["National Renewal Movement (Panama)"] = {abbrev = "MRN", color = "darkgreen", shortname = "",}, ["National Renewal Party (Guatemala)"] = {abbrev = "PNR", color = "darkorange", shortname = "",}, ["National Renovator Party"] = {abbrev = "", color = "#002147", shortname = "National Renovator",}, ["National Republican Alliance"] = {abbrev = "ANR", color = "#504a48", shortname = "",}, ["National Republican Convention"] = {abbrev = "", color = "#D82628", shortname = "",}, ["National Republican Movement for Democracy and Development"] = {abbrev = "", color = "#000000", shortname = "",}, ["National Republican Movement"] = {abbrev = "MNR", color = "#404040", shortname = "",}, ["National Republican Party (Costa Rica)"] = {abbrev = "PRN", color = "#FF1414", shortname = "",}, ["National Republican Party (Portugal)"] = {abbrev = "", color = "#556B2F", shortname = "",}, ["National Republican Party (Spain)"] = {abbrev = "PRN", color = "#B74896", shortname = "",}, ["National Republican Party (US)"] = {abbrev = "", color = "#FFE6B0", shortname = "National Republican",}, ["National Republican Party of Russia"] = {abbrev = "NRPR", color = "#F9DA00", shortname = "",}, ["National Rescue Movement"] = {abbrev = "NRM", color = "#fecd00", shortname = "",}, ["National Rescue Party"] = {abbrev = "PRN", color = "#DB7093", shortname = "",}, ["National Resistance Movement"] = {abbrev = "NRM", color = "#FFD700", shortname = "",}, ["National Restoration Party (Costa Rica)"] = {abbrev = "PREN", color = "#0059CF", shortname = "",}, ["National Restoration Party (Zambia)"] = {abbrev = "", color = "#F7941D", shortname = "",}, ["National Resurrection Party"] = {abbrev = "TPP", color = "#EB7C11", shortname = "",}, ["National Revival (Artsakh)"] = {abbrev = "", color = "#F26737", shortname = "National Revival",}, ["National Revival Movement Party"] = {abbrev = "", color = "#CC0000", shortname = "",}, ["National Revival of Poland"] = {abbrev = "", color = "#016E4F", shortname = "",}, ["National Revolutionary Party (South Korea, 2020)"] = {abbrev = "", color = "#E7141A", shortname = "National Revolutionary",}, ["National Revolutionary Party (South Korea, 2021)"] = {abbrev = "", color = "#023793", shortname = "",}, ["National Revolutionary Party of Afghanistan"] = {abbrev = "", color = "#FFD700", shortname = "",}, ["National Road Party"] = {abbrev = "MYP", color = "#F40F0F", shortname = "",}, ["National Salvation Front (Lebanon)"] = {abbrev = "", color = "#DA70D6", shortname = "",}, ["National Salvation Front (Romania)"] = {abbrev = "FSN", color = "#DA70D6", shortname = "",}, ["National Salvation Movement"] = {abbrev = "MSN", color = "#05AFF2", shortname = "",}, ["National Salvation Party"] = {abbrev = "MSP", color = "#000000", shortname = "",}, ["National Secular Conference"] = {abbrev = "NSC", color = "green", shortname = "",}, ["National Secular Party"] = {abbrev = "NSCP", color = "#F78181", shortname = "",}, ["National Self-Government of Germans in Hungary"] = {abbrev = "LdU", color = "#0047AB", shortname = "",}, ["National Social Democratic Front"] = {abbrev = "", color = "#FF3180", shortname = "",}, ["National Socialist Freedom Movement"] = {abbrev = "NSFP", color = "#804C19", shortname = "",}, ["National Socialist Front"] = {abbrev = "NSF", color = "#006699", shortname = "",}, ["National Socialist Party (Philippines)"] = {abbrev = "", color = "#B22222", shortname = "National Socialist",}, ["National Socialist Party (UK)"] = {abbrev = "", color = "#B20000", shortname = "National Socialist Party",}, ["National Socialist Party of New Zealand"] = {abbrev = "", color = "#964B00", shortname = "National Socialist",}, ["National Socialist Party"] = {abbrev = "", color = "#FF0800", shortname = "",}, ["National Socialist Workers' Party (Sweden)"] = {abbrev = "NSAP", color = "#005293", shortname = "National Socialists",}, ["National Socialist Workers' Party of Denmark"] = {abbrev = "", color = "#964B00", shortname = "National Socialists",}, ["National Socialists – Left of the 21st century"] = {abbrev = "NS-LEV 21", color = "#E0000F", shortname = "",}, ["National Solidarity (Peru)"] = {abbrev = "", color = "#FFEE00", shortname = "",}, ["National Solidarity Alliance"] = {abbrev = "", color = "#FFEE00", shortname = "",}, ["National Solidarity Party (Singapore)"] = {abbrev = "NSP", color = "#FF3300", shortname = "",}, ["National Solidarity Party of Afghanistan"] = {abbrev = "", color = "#6BA5D3", shortname = "",}, ["National Struggle Party"] = {abbrev = "", color = "#AF0621", shortname = "",}, ["National Super Alliance"] = {abbrev = "", color = "#FFA500", shortname = "",}, ["National Transformation Alliance"] = {abbrev = "NTA", color = "#283C95", shortname = "",}, ["National Transformation Party (Solomon Islands)"] = {abbrev = "NTPSI", color = "#FEE40D", shortname = "",}, ["National Transformation Party (Trinidad and Tobago)"] = {abbrev = "NTP", color = "#FFFFFF", shortname = "",}, ["National Trust Party (Malaysia)"] = {abbrev = "", color = "#FFA009", shortname = "Amanah",}, ["National Umma Party"] = {abbrev = "NUP", color = "#056D0C", shortname = "",}, ["National Unification (Czechoslovakia)"] = {abbrev = "NSj", color = "#251779", shortname = "",}, ["National Unification Party (Costa Rica)"] = {abbrev = "UN", color = "#595CFF", shortname = "",}, ["National Union (Cuba)"] = {abbrev = "", color = "#D2FF78", shortname = "National Union",}, ["National Union (Egypt)"] = {abbrev = "NU", color = "#F0001C", shortname = "",}, ["National Union (Gabon)"] = {abbrev = "UN", color = "#276DAB", shortname = "",}, ["National Union (Israel)"] = {abbrev = "", color = "#001367", shortname = "National Union",}, ["National Union (Portugal)"] = {abbrev = "UN", color = "#002E79", shortname = "",}, ["National Union (Spain, 1900)"] = {abbrev = "UN", color = "#FF7F27", shortname = "",}, ["National Union (Spain)"] = {abbrev = "UN", color = "#383CA8", shortname = "",}, ["National Union (Switzerland)"] = {abbrev = "UN", color = "black", shortname = "",}, ["National Union (United Arab Republic)"] = {abbrev = "NU", color = "#DC143C", shortname = "",}, ["National Union Attack"] = {abbrev = "ATAKA", color = "#00563F", shortname = "",}, ["National Union for Democracy and Progress (Cameroon)"] = {abbrev = "UNDP", color = "#40B749", shortname = "",}, ["National Union for Democracy and Progress (Central African Republic)"] = {abbrev = "", color = "#357D29", shortname = "",}, ["National Union for Democracy and Renewal"] = {abbrev = "", color = "#FF8C00", shortname = "",}, ["National Union for Democratic Progress"] = {abbrev = "", color = "#E90785", shortname = "",}, ["National Union for Development and Democracy"] = {abbrev = "UNDD", color = "#008080", shortname = "",}, ["National Union for the Defence of Democracy"] = {abbrev = "", color = "#ED8419", shortname = "",}, ["National Union for Independence"] = {abbrev = "UNI", color = "#21202e", shortname = "",}, ["National Union for Independence and Revolution"] = {abbrev = "UNIR", color = "#0000AA", shortname = "",}, ["National Union for the Progress of Romania"] = {abbrev = "UNPR", color = "#D90000", shortname = "",}, ["National Union from Banat"] = {abbrev = "UNB", color = "black", shortname = "",}, ["National Union of Ethical Citizens"] = {abbrev = "UNACE", color = "#B31B1B", shortname = "",}, ["National Union of Greece"] = {abbrev = "EEE", color = "black", shortname = "",}, ["National Union of Christian Democrats"] = {abbrev = "NUCD", color = "#B0E0E6", shortname = "",}, ["National Union of Independents (Chile)"] = {abbrev = "", color = "grey", shortname = "",}, ["National Union of Popular Forces"] = {abbrev = "", color = "#EC1B24", shortname = "",}, ["National Union of Progress"] = {abbrev = "", color = "orange", shortname = "",}, ["National Union of Workers (Sri Lanka)"] = {abbrev = "", color = "#F90818", shortname = "",}, ["National Union Party (Costa Rica)"] = {abbrev = "PUN", color = "green", shortname = "",}, ["National Union Party (US)"] = {abbrev = "", color = "#B22222", shortname = "National Union",}, ["National Union PSD+PUR"] = {abbrev = "PSD+PUR", color = "#3068D5", shortname = "",}, ["National Unionist Zamindara Party"] = {abbrev = "NUZP", color = "#DDFFEE", shortname = "",}, ["National United Front"] = {abbrev = "NUF", color = "#0000FF", shortname = "",}, ["National United Front of Kampuchea"] = {abbrev = "FUNK", color = "#DC143C", shortname = "",}, ["National United Party (Vanuatu)"] = {abbrev = "NUP", color = "#FDCC06", shortname = "National United",}, ["National United Party of Afghanistan"] = {abbrev = "", color = "#1081B9", shortname = "",}, ["National United Renaissance"] = {abbrev = "", color = "#9F8170", shortname = "",}, ["National Unity (Armenia)"] = {abbrev = "", color = "#2B3A8D", shortname = "National Unity",}, ["National Unity (Czech Republic)"] = {abbrev = "NSJ", color = "#00008B", shortname = "",}, ["National Unity (Greece)"] = {abbrev = "", color = "#022262", shortname = "",}, ["National Unity (Maldives)"] = {abbrev = "", color = "#027018", shortname = "",}, ["National Unity (Peru)"] = {abbrev = "", color = "green", shortname = "",}, ["National Unity Alliance"] = {abbrev = "", color = "#0F0", shortname = "",}, ["National Unity and Reconciliation Party"] = {abbrev = "NURP", color = "#B18403", shortname = "",}, ["National Unity Association"] = {abbrev = "SEE", color = "#800000", shortname = "",}, ["National Unity Democratic Organisation"] = {abbrev = "NUDO", color = "#0B4000", shortname = "",}, ["National Unity Movement of Equatorial Guinea"] = {abbrev = "MUNGE", color = "#00059C", shortname = "",}, ["National Unity Front"] = {abbrev = "", color = "#FFD700", shortname = "National Unity",}, ["National Unity Government"] = {abbrev = "", color = "#FF4545", shortname = "",}, ["National Unity of Hope"] = {abbrev = "UNE", color = "#50A700", shortname = "",}, ["National Unity of Timorese Resistance"] = {abbrev = "UNDERTIM", color = "#3FB043", shortname = "",}, ["National Unity Party (Central African Republic)"] = {abbrev = "", color = "#AFEEEE", shortname = "",}, ["National Unity Party (Dominican Republic)"] = {abbrev = "", color = "#50c878", shortname = "",}, ["National Unity Party (East Timor)"] = {abbrev = "PUN", color = "#3B4783", shortname = "",}, ["National Unity Party (Guinea-Bissau)"] = {abbrev = "", color = "#7BC76D", shortname = "",}, ["National Unity Party (Haiti)"] = {abbrev = "PUN", color = "#000000", shortname = "",}, ["National Unity Party (Israel)"] = {abbrev = "", color = "#00BBDF", shortname = "National Unity",}, ["National Unity Party (Moldova)"] = {abbrev = "PUN", color = "#802937", shortname = "",}, ["National Unity Party (Myanmar)"] = {abbrev = "NUP", color = "#2188ca", shortname = "",}, ["National Unity Party (Northern Cyprus)"] = {abbrev = "UBP", color = "#FF7F00", shortname = "",}, ["National Unity Party (Philippines)"] = {abbrev = "NUP", color = "#104a21", shortname = "",}, ["National Unity Platform"] = {abbrev = "NUP", color = "#C62127", shortname = "",}, ["National Vanguard of the People"] = {abbrev = "", color = "#A52A2A", shortname = "",}, ["National Vanguard Party"] = {abbrev = "PAGN", color = "#000000", shortname = "",}, ["National Velasquista Federation"] = {abbrev = "FNV", color = "darkblue", shortname = "",}, ["National Veteran's Committee"] = {abbrev = "KKVLAPSH", color = "#A7221D", shortname = "",}, ["National Victory"] = {abbrev = "", color = "#EE204E", shortname = "",}, ["National Vision Party"] = {abbrev = "", color = "olive", shortname = "",}, ["New Wave – The Other Cyprus"] = {abbrev = "", color = "#00AEEE", shortname = "New Wave",}, ["National Woodcutters' Rally – Rally for Gabon"] = {abbrev = "RNB–RPG", color = "#E0E05A", shortname = "",}, ["National Workers' Party (Spain)"] = {abbrev = "", color = "#B93C3D", shortname = "",}, ["National Workers' Party"] = {abbrev = "NPR", color = "#86041C", shortname = "",}, ["National Workers' Union (Poland)"] = {abbrev = "NZR", color = "#DA4740", shortname = "",}, ["National Youth Movement (Dominican Republic)"] = {abbrev = "", color = "white", shortname = "",}, ["National Youth Party"] = {abbrev = "NYP", color = "#16D229", shortname = "",}, ["National"] = {abbrev = "", color = "#DDDDDD", shortname = "",}, ["Nationalist (Ireland)"] = {abbrev = "", color = "#33FF00", shortname = "Nationalist",}, ["Nationalist Alliance"] = {abbrev = "", color = "#FFFDD0", shortname = "",}, ["Nationalist and Conservative Party"] = {abbrev = "", color = "#67C5EB", shortname = "Nationalist Conservative",}, ["Nationalist Canarian Assembly"] = {abbrev = "", color = "#C62821", shortname = "",}, ["Nationalist Canarian Centre"] = {abbrev = "", color = "#FF6600", shortname = "",}, ["Nationalist Canarian Initiative"] = {abbrev = "ICAN", color = "#EB6143", shortname = "",}, ["Nationalist Canarian Platform"] = {abbrev = "PCN", color = "#BB2996", shortname = "",}, ["Nationalist Citizens' Party"] = {abbrev = "NCP", color = "#50C878", shortname = "",}, ["Nationalist Civic Crusade"] = {abbrev = "", color = "#0000FF", shortname = "",}, ["Nationalist Coalition–Europe of the Peoples"] = {abbrev = "CN–EP", color = "#1D9546", shortname = "",}, ["Nationalist Coalition"] = {abbrev = "", color = "#228B22", shortname = "",}, ["Nationalist Congress Party"] = {abbrev = "NCP", color = "#00B2B2", shortname = "",}, ["Nationalist Congress Party (Ajit Pawar)"] = {abbrev = "NCP(AP)", color = "#00B2B2", shortname = "",}, ["Nationalist Democracy Party"] = {abbrev = "MDP", color = "#000000", shortname = "",}, ["Nationalist Democratic Action"] = {abbrev = "", color = "#9B2335", shortname = "",}, ["Nationalist Democratic Federation"] = {abbrev = "", color = "#EEDB65", shortname = "",}, ["Nationalist Democratic Movement (Bangladesh)"] = {abbrev = "NDM", color = "#005125", shortname = "",}, ["Nationalist Democratic Movement"] = {abbrev = "NDM", color = "#DDD000", shortname = "",}, ["Nationalist Democratic Progressive Party"] = {abbrev = "NDPP", color = "#ED1B24", shortname = "",}, ["Nationalist Galicianist Party"] = {abbrev = "", color = "#79CDCD", shortname = "",}, ["Nationalist Hong Kong"] = {abbrev = "", color = "#00247D", shortname = "",}, ["Nationalist Left of Manresa"] = {abbrev = "", color = "#A7252F", shortname = "",}, ["Nationalist Left"] = {abbrev = "", color = "#396BE4", shortname = "",}, ["Nationalist Liberal Party"] = {abbrev = "PLN", color = "#FF0000", shortname = "",}, ["Nationalist Maga Alternative"] = {abbrev = "", color = "#089C99", shortname = "",}, ["Nationalist Movement Party"] = {abbrev = "MHP", color = "#870000", shortname = "",}, ["Nationalist Party (1912)"] = {abbrev = "", color = "#000099", shortname = "Nationalist",}, ["Nationalist Party (Australia)"] = {abbrev = "", color = "#6495ED", shortname = "Nationalist",}, ["Nationalist Party (Bolivia)"] = {abbrev = "", color = "#191970", shortname = "",}, ["Nationalist Party (Greece)"] = {abbrev = "", color = "#87CEFA", shortname = "",}, ["Nationalist Party (Iceland)"] = {abbrev = "", color = "#0166cc", shortname = "Nationalist",}, ["Nationalist Party (India)"] = {abbrev = "NP", color = "#009999", shortname = "",}, ["Nationalist Party (Ireland)"] = {abbrev = "IrishNat", color = "#99FF66", shortname = "Irish Nationalist",}, ["Nationalist Party (Malta)"] = {abbrev = "", color = "#5087B2", shortname = "Nationalist",}, ["Nationalist Party (Northern Ireland)"] = {abbrev = "Nat", color = "#32cd32", shortname = "Nationalist",}, ["Nationalist Party (Thailand)"] = {abbrev = "", color = "#dfab53", shortname = "Nationalist",}, ["Nationalist Party (UK)"] = {abbrev = "", color = "DarkGoldenrod", shortname = "Nationalist Party",}, ["Nationalist Party for Justice in Angola"] = {abbrev = "P-JANGO", color = "#047CC0", shortname = "",}, ["Nationalist Party of Cantabria"] = {abbrev = "", color = "#11DD00", shortname = "",}, ["Nationalist Party of Castile and León"] = {abbrev = "", color = "#808080", shortname = "",}, ["Nationalist Party of Catalonia"] = {abbrev = "", color = "#47A9B6", shortname = "",}, ["Nationalist Party of Ceuta"] = {abbrev = "", color = "#E46C0A", shortname = "",}, ["Nationalist Party of Greater Vietnam"] = {abbrev = "", color = "#EA9978", shortname = "",}, ["Nationalist Party of Puerto Rico"] = {abbrev = "PNPR", color = "black", shortname = "",}, ["Nationalist Party of the Valencian Country"] = {abbrev = "", color = "#D09400", shortname = "",}, ["Nationalist People's Coalition"] = {abbrev = "NPC", color = "#4AA02C", shortname = "",}, ["Nationalist Republican (Spain)"] = {abbrev = "", color = "#C8989B", shortname = "",}, ["Nationalist Republican Alliance"] = {abbrev = "ARENA", color = "#234B9A", shortname = "",}, ["Nationalist Republican Liberal Movement"] = {abbrev = "MOLIRENA", color = "#FFFE51", shortname = "",}, ["Nationalist Republican Party (Portugal)"] = {abbrev = "", color = "#0087DC", shortname = "",}, ["Nationalist Republican Party (Suriname)"] = {abbrev = "PNR", color = "#005AAD", shortname = "",}, ["National Socialist Union of Finland"] = {abbrev = "", color = "black", shortname = "",}, ["Nationalist Task Party"] = {abbrev = "MÇP", color = "#870000", shortname = "",}, ["Nationalist Trinamool Congress"] = {abbrev = "", color = "#99FF99", shortname = "Trinamool Congress",}, ["Nationalist Valencian Party"] = {abbrev = "", color = "#F5A302", shortname = "",}, ["Nationalist Vanua Tako Lavo Party"] = {abbrev = "NVTLP", color = "blue", shortname = "",}, ["Nationalist/Country coalition"] = {abbrev = "", color = "#6495ED", shortname = "",}, ["Nationalist/Progressive coalition"] = {abbrev = "", color = "#6495ED", shortname = "",}, ["Nationalists’ Party (Iran)"] = {abbrev = "", color = "#4169E1", shortname = "",}, ["Nationwide Organisation of We the People"] = {abbrev = "NOW", color = "#22211c", shortname = "",}, ["Nationwide Social Democratic Party"] = {abbrev = "JSDP", color = "#0045AF", shortname = "",}, ["Native Zakarpattia"] = {abbrev = "", color = "#28724F", shortname = "",}, ["Natural Culture"] = {abbrev = "", color = "#CE9A00", shortname = "",}, ["Natural Law Party (Finland)"] = {abbrev = "", color = "turquoise", shortname = "",}, ["Natural Law Party (Ireland)"] = {abbrev = "", color = "#FFE4E1", shortname = "Natural Law Party",}, ["Natural Law Party (Spain)"] = {abbrev = "", color = "#A5A608", shortname = "",}, ["Natural Law Party (US)"] = {abbrev = "", color = "NavajoWhite", shortname = "Natural Law",}, ["Natural Law Party of New Zealand"] = {abbrev = "", color = "#333366", shortname = "Natural Law",}, ["Natural Law Party"] = {abbrev = "", color = "#ffe4e1", shortname = "Natural Law",}, ["Nauru First"] = {abbrev = "", color = "#002780", shortname = "",}, ["Nava Sama Samaja Party"] = {abbrev = "", color = "#FF0000", shortname = "",}, ["Navarra Suma"] = {abbrev = "NA+", color = "#819DA3", shortname = "",}, ["Navarre Platform"] = {abbrev = "PN", color = "#812217", shortname = "",}, ["Navarrese and Spanish Right"] = {abbrev = "", color = "#E2001A", shortname = "",}, ["Navarrese Foral Alliance"] = {abbrev = "", color = "#2A52BE", shortname = "",}, ["Navarrese Freedom"] = {abbrev = "", color = "#E30019", shortname = "",}, ["Navarrese Left Union"] = {abbrev = "", color = "#51345A", shortname = "",}, ["Navarrese People's Union"] = {abbrev = "UPN", color = "#00599B", shortname = "",}, ["Navbharat Nirman Party"] = {abbrev = "NBNP", color = "#F7BE81", shortname = "",}, ["Nawa Janabadi Morcha"] = {abbrev = "", color = "purple", shortname = "Nav Janbadi Morcha",}, ["Nawa Nepal Prajatantrik Dal"] = {abbrev = "", color = "#40E0D0", shortname = "Navnepal Prajatantrik Dal",}, ["Nawan Punjab Party"] = {abbrev = "NPP", color = "#E1A95F", shortname = "",}, ["Naya Daur Party"] = {abbrev = "NDP", color = "#3B0B0B", shortname = "",}, ["Nazi Party"] = {abbrev = "NSDAP", color = "#964B00", shortname = "",}, ["NBNP"] = {abbrev = "", color = "#3453CC", shortname = "",}, ["NCCR–Mageuzi"] = {abbrev = "", color = "#025dc3", shortname = "",}, ["Ne Tak"] = {abbrev = "", color = "#CC181E", shortname = "",}, ["Nebraska Party"] = {abbrev = "", color = "#A356DE", shortname = "Nebraska",}, ["NEE"] = {abbrev = "", color = "#000000", shortname = "",}, ["Neighborhood Force"] = {abbrev = "", color = "#1F95D1", shortname = "",}, ["Neighborhoods with Voice"] = {abbrev = "", color = "#994499", shortname = "",}, ["Neighbors for Alicante"] = {abbrev = "", color = "#6699CC", shortname = "",}, ["Neighbors for Benalmádena"] = {abbrev = "", color = "#32BAC9", shortname = "",}, ["Neighbors for Burgos"] = {abbrev = "", color = "#C67607", shortname = "",}, ["Neighbors for Llanes"] = {abbrev = "", color = "#969696", shortname = "",}, ["Neighbors for Salamanca"] = {abbrev = "", color = "#F9B233", shortname = "",}, ["Neighbors for Sestao"] = {abbrev = "", color = "#32A33B", shortname = "",}, ["Neighbors for Torrejón"] = {abbrev = "", color = "#FFFF01", shortname = "",}, ["Neighbors for Torrelodones"] = {abbrev = "", color = "#49AFE8", shortname = "",}, ["Neighbors for Tudela"] = {abbrev = "", color = "#BDCCE3", shortname = "",}, ["Neighbors Ponferrada"] = {abbrev = "", color = "#020181", shortname = "",}, ["Neighbors' Alternative"] = {abbrev = "", color = "#FAF300", shortname = "",}, ["Neighbors' Group of San Bartolomé de Tirajana"] = {abbrev = "", color = "#718FC1", shortname = "",}, ["Neighbour Association of Gorraiz"] = {abbrev = "", color = "#FBC02E", shortname = "",}, ["Neighbourhood Action Movement"] = {abbrev = "", color = "#187F36", shortname = "",}, ["Neighbourhood and Worker's Service Centre"] = {abbrev = "NWSC", color = "#FFC500", shortname = "",}, ["NELU"] = {abbrev = "", color = "#5658CC", shortname = "",}, ["Neo Democrats"] = {abbrev = "", color = "#F9B924", shortname = "",}, ["Neo-Democrats (Spain)"] = {abbrev = "", color = "#FFA608", shortname = "",}, ["NEOS – The New Austria and Liberal Forum"] = {abbrev = "NEOS", color = "#CB1667", shortname = "",}, ["Nepa Rastriya Party"] = {abbrev = "", color = "#e34234", shortname = "",}, ["Nepal Communist Party"] = {abbrev = "NCP", color = "#DD232C", shortname = "",}, ["Nepal Federal Socialist Party"] = {abbrev = "", color = "mediumvioletred", shortname = "",}, ["Nepal Janata Party"] = {abbrev = "", color = "orange", shortname = "",}, ["Nepal Loktantrik Samajbadi Dal"] = {abbrev = "", color = "#fbceb1", shortname = "Loktantrik Samajbadi Dal",}, ["Nepal Pariwar Dal"] = {abbrev = "", color = "#87CEEB", shortname = "",}, ["Nepal Rashtrabadi Gorkha Parishad"] = {abbrev = "", color = "#73A3DE", shortname = "Gorkha Parishad",}, ["Nepal Rastriya Bikas Party"] = {abbrev = "", color = "#E6DBCF", shortname = "",}, ["Nepal Rastriya Loktantrik Dal"] = {abbrev = "", color = "#E6DBCF", shortname = "Rastriya Loktantrik Dal",}, ["Nepal Sadbhavana Party (Anandidevi)"] = {abbrev = "", color = "greenyellow", shortname = "Nepal Sadbhavana Party (A)",}, ["Nepal Sadbhawana Party"] = {abbrev = "", color = "yellowgreen", shortname = "",}, ["Nepal Samata Party"] = {abbrev = "", color = "#FFDAB9", shortname = "",}, ["Nepal Samyabadi Party (Marksbadi-Leninbadi-Maobadi)"] = {abbrev = "", color = "crimson", shortname = "Nepal Samyabadi Party (MLM)",}, ["Nepal Shanti Kshetra Parishad"] = {abbrev = "", color = "#98FB98", shortname = "",}, ["Nepal Socialist Party"] = {abbrev = "", color = "#00B2B2", shortname = "",}, ["Nepal Sukumbasi Party (Loktantrik)"] = {abbrev = "", color = "coral", shortname = "",}, ["Nepal Workers Peasants Party"] = {abbrev = "NMKP", color = "#ff8080", shortname = "",}, ["Nepali Congress (Rastrabadi)"] = {abbrev = "", color = "blue", shortname = "",}, ["Nepali Congress sidebar"] = {abbrev = "", color = "green", shortname = "Nepali Congress",}, ["Nepali Janata Dal"] = {abbrev = "", color = "#c21e56", shortname = "",}, ["Network (Slovak party)"] = {abbrev = "", color = "#E5452E", shortname = "#Network",}, ["Neuquén People's Movement"] = {abbrev = "MPN", color = "#0070B8", shortname = "",}, ["Neutral Free Austria Federation"] = {abbrev = "NFÖ", color = "red", shortname = "",}, ["Neutral Bulgaria"] = {abbrev = "", color = "#018340", shortname = "",}, ["Neutral Democratic Party"] = {abbrev = "", color = "#FF0000", shortname = "Neutral&nbsp;Democratic",}, ["Nevis Reformation Party"] = {abbrev = "NRP", color = "#4CAB2D", shortname = "",}, ["Nevada Democratic Party"] = {abbrev = "NDP", color = "#3333FF", shortname = "",}, ["Nevada Republican Party"] = {abbrev = "NRP", color = "#E81B23", shortname = "",}, ["New Afghanistan Party"] = {abbrev = "", color = "#FFD800", shortname = "Naveen",}, ["New Agreement"] = {abbrev = "", color = "#FFE647", shortname = "",}, ["New Alajuelita Party"] = {abbrev = "PALNU", color = "yellow", shortname = "",}, ["New Algeria Front"] = {abbrev = "FAN", color = "#88E040", shortname = "",}, ["New Alliance (Denmark)"] = {abbrev = "", color = "#9B0059", shortname = "New Alliance",}, ["New Alliance of Faso"] = {abbrev = "", color = "#ffdb58", shortname = "",}, ["New Alliance Party (Cook Islands)"] = {abbrev = "", color = "#00A5AE", shortname = "New Alliance",}, ["New Alliance Party (Mexico)"] = {abbrev = "PNA", color = "#00AAAA", shortname = "",}, ["New Alliance Party"] = {abbrev = "", color = "#FF00FF", shortname = "New Alliance",}, ["New Alternative (Venezuela)"] = {abbrev = "", color = "#FF0066", shortname = "",}, ["New Alternative Party (Thailand)"] = {abbrev = "", color = "#1e90ff", shortname = "",}, ["New Alternatives"] = {abbrev = "", color = "#236736", shortname = "",}, ["New Andalusian Green Left"] = {abbrev = "", color = "#C6514A", shortname = "",}, ["New Anticapitalist Party"] = {abbrev = "NPA", color = "#C0081F", shortname = "",}, ["New Aspiration Party"] = {abbrev = "", color = "#FFFF00", shortname = "New Aspiration",}, ["New Azerbaijan Party"] = {abbrev = "YAP", color = "#0075C1", shortname = "",}, ["New Barbados Kingdom Alliance"] = {abbrev = "NBKA", color = "#9A4EAE", shortname = "",}, ["New Belgian Front"] = {abbrev = "", color = "#FEFB00", shortname = "",}, ["New Britain Party"] = {abbrev = "", color = "#999999", shortname = "New Britain",}, ["New Canaries"] = {abbrev = "NCa", color = "#639E42", shortname = "",}, ["New Catalan Left"] = {abbrev = "", color = "#947F62", shortname = "",}, ["New Centre (Andorra)"] = {abbrev = "", color = "Black", shortname = "",}, ["New Centre (Latvia)"] = {abbrev = "", color = "#89192F", shortname = "",}, ["New Centre-Right"] = {abbrev = "", color = "#05517e", shortname = "",}, ["New Century Forum"] = {abbrev = "", color = "#005F6B", shortname = "New Forum",}, ["New Civic Power"] = {abbrev = "NPC", color = "#1DA768", shortname = "",}, ["New Citizen Party"] = {abbrev = "", color = "#D0BA42", shortname = "New&nbsp;Citizen",}, ["New coalition (Mongolia)"] = {abbrev = "", color = "#f26022", shortname = "",}, ["New Communist Party of Britain"] = {abbrev = "NCP", color = "red", shortname = "New Communist",}, ["New Communist Party of Georgia"] = {abbrev = "", color = "#B22222", shortname = "",}, ["New Communist Party of the Netherlands"] = {abbrev = "", color = "#CC0000", shortname = "",}, ["New Communist Party of Yugoslavia"] = {abbrev = "NKPJ", color = "red", shortname = "",}, ["New Conservative Party (Japan)"] = {abbrev = "", color = "#2D6BA1", shortname = "New Conservative",}, ["New Conservative Party (Japan, 2002)"] = {abbrev = "", color = "#BD0401", shortname = "New Conservative",}, ["New Conservative Party (Latvia)"] = {abbrev = "JKP", color = "#182956", shortname = "",}, ["New Conservative Party (New Zealand)"] = {abbrev = "", color = "#00AEEF", shortname = "New Conservative",}, ["New Conservative Party (South Korea)"] = {abbrev = "", color = "#00A7E5", shortname = "",}, ["New Conservative Party of New Zealand"] = {abbrev = "", color = "#00AEEF", shortname = "New Conservative",}, ["New Course — Automobile Russia"] = {abbrev = "NCAR", color = "#004090", shortname = "",}, ["New Croatian Initiative"] = {abbrev = "NHI", color = "#3BB9FF", shortname = "",}, ["New Cyprus Party"] = {abbrev = "", color = "navy", shortname = "",}, ["New Dawn (Algeria)"] = {abbrev = "", color = "#B0BF1A", shortname = "New Dawn",}, ["New Dawn Party"] = {abbrev = "YDP", color = "#AE4855", shortname = "",}, ["New Deal (Chile)"] = {abbrev = "", color = "#37B296", shortname = "",}, ["New Deal (France)"] = {abbrev = "", color = "#D11677", shortname = "",}, ["New Democracy (Andorra)"] = {abbrev = "ND", color = "#FFAC30", shortname = "",}, ["New Democracy (Gabon)"] = {abbrev = "ND", color = "#B2804D", shortname = "",}, ["New Democracy (Greece)"] = {abbrev = "ND", color = "#1b5cc7", shortname = "",}, ["New Democracy (Sweden)"] = {abbrev = "", color = "yellow", shortname = "New Democracy",}, ["New Democracy Electoral Union"] = {abbrev = "NDUE", color = "#F58220", shortname = "",}, ["New Democracy Party (Guinea-Bissau)"] = {abbrev = "", color = "#ADD8E6", shortname = "",}, ["New Democracy Party (Lithuania)"] = {abbrev = "", color = "#210083", shortname = "",}, ["New Democracy Party (Portugal)"] = {abbrev = "", color = "#1F468B", shortname = "New Democracy",}, ["New Democracy Party (Thailand)"] = {abbrev = "", color = "#FF9900", shortname = "New Democracy",}, ["New Democratic Force (Montenegro)"] = {abbrev = "FORCA", color = "#06437A", shortname = "",}, ["New Democratic Forces (Guinea)"] = {abbrev = "", color = "#D47E35", shortname = "",}, ["New Democratic Front (Sri Lanka)"] = {abbrev = "NDF", color = "#008000", shortname = "",}, ["New Democratic Generation"] = {abbrev = "", color = "#99B200", shortname = "",}, ["New Democratic Initiative of Kosovo"] = {abbrev = "IRDK", color = "#CBAC6C", shortname = "",}, ["New Democratic Macau Association"] = {abbrev = "ANMD", color = "#df7038", shortname = "",}, ["New Democratic Party — Greens"] = {abbrev = "", color = "#E32636", shortname = "",}, ["New Democratic Party of Canada"] = {abbrev = "NDP", color = "#F4A460", shortname = "New Democratic",}, ["New Democratic Party of Serbia"] = {abbrev = "NDSS", color = "#126180", shortname = "",}, ["New Democratic Party (Albania)"] = {abbrev = "PDR", color = "#000099", shortname = "",}, ["New Democratic Party (Kosovo)"] = {abbrev = "NDS", color = "#FFFF00", shortname = "",}, ["New Democratic Party (New Zealand)"] = {abbrev = "", color = "#B8860B", shortname = "New Democratic",}, ["New Democratic Party (Saint Vincent and the Grenadines)"] = {abbrev = "", color = "#ffcc29", shortname = "New Democratic",}, ["New Democratic Party (South Korea)"] = {abbrev = "NDP", color = "#DC352A", shortname = "New Democratic",}, ["New Democratic Republican Party"] = {abbrev = "NDRP", color = "#59955E", shortname = "New Democratic Republican",}, ["New Democratic Spirit"] = {abbrev = "NDS", color = "#082567", shortname = "",}, ["New Democratic Union Party"] = {abbrev = "", color = "#FFA500", shortname = "",}, ["New Democrats (France)"] = {abbrev = "ND", color = "#421787", shortname = "",}, ["New Democrats (Kenya)"] = {abbrev = "", color = "#E23237", shortname = "New Democrats",}, ["New Dimension Party"] = {abbrev = "", color = "#2E3192", shortname = "",}, ["New Ecological and Social People's Union"] = {abbrev = "NUPÉS", color = "#642497", shortname = "",}, ["New Economics Party (Thailand)"] = {abbrev = "", color = "#7c2d89", shortname = "New Economics",}, ["New Encounter"] = {abbrev = "", color = "#008FC3", shortname = "",}, ["New England Party"] = {abbrev = "", color = "#2F4F4F", shortname = "New England",}, ["New Energies"] = {abbrev = "", color = "#BD3758", shortname = "",}, ["New Era for Democracy"] = {abbrev = "", color = "#4393AD", shortname = "",}, ["New Era Party"] = {abbrev = "", color = "#26395D", shortname = "New Era",}, ["New Flemish Alliance"] = {abbrev = "N-VA", color = "#F9CE19", shortname = "",}, ["New Force (Italy)"] = {abbrev = "", color = "#000000", shortname = "New Force",}, ["New Force (Moldova)"] = {abbrev = "MFN", color = "#7AE600", shortname = "",}, ["New Force (Spain)"] = {abbrev = "", color = "#37649D", shortname = "",}, ["New Force Party"] = {abbrev = "", color = "#008000", shortname = "",}, ["New Forum for the Restoration of Democracy–Kenya"] = {abbrev = "", color = "blue", shortname = "",}, ["New Forum"] = {abbrev = "", color = "black", shortname = "",}, ["New Front for Democracy and Development"] = {abbrev = "NFDO", color = "yellow", shortname = "",}, ["New Frontier Party (Japan)"] = {abbrev = "", color = "#E2176A", shortname = "New Frontier",}, ["New Fuerteventura"] = {abbrev = "", color = "#139115", shortname = "",}, ["New Future Coalition Party"] = {abbrev = "", color = "yellow", shortname = "",}, ["New Generation Movement"] = {abbrev = "NGM", color = "#FF681F", shortname = "",}, ["New Generation Party (Costa Rica)"] = {abbrev = "PNG", color = "#0070B8", shortname = "",}, ["New Generation Party (Fiji)"] = {abbrev = "", color = "#223FB7", shortname = "",}, ["New Generation Party (Papua New Guinea)"] = {abbrev = "NGP", color = "#FFD700", shortname = "",}, ["New Generation Party (Romania)"] = {abbrev = "", color = "green", shortname = "",}, ["New Gibraltar Democracy"] = {abbrev = "", color = "#FDCD2F", shortname = "",}, ["New Harmony (Latvia)"] = {abbrev = "", color = "#960019", shortname = "",}, ["New Heritage Party"] = {abbrev = "", color = "#F0B300", shortname = "",}, ["New Historical Option"] = {abbrev = "", color = "#2BB2C6", shortname = "",}, ["New Hong Kong Alliance"] = {abbrev = "NHKA", color = "#ED6420", shortname = "",}, ["New Hope (Israel)"] = {abbrev = "", color = "#0081B2", shortname = "New Hope",}, ["New Hope (Macau)"] = {abbrev = "NE", color = "#7CFC00", shortname = "",}, ["New Hope"] = {abbrev = "", color = "#7CFC00", shortname = "",}, ["New Horizons (Cyprus)"] = {abbrev = "", color = "#002366", shortname = "",}, ["New Ideas for Monaco"] = {abbrev = "NIM", color = "#FF00BA", shortname = "",}, ["New Indonesia Party of Struggle"] = {abbrev = "", color = "#B32823", shortname = "",}, ["New Italian Socialist Party"] = {abbrev = "", color = "Salmon", shortname = "New PSI",}, ["New Jewel Movement"] = {abbrev = "", color = "#FFA500", shortname = "",}, ["New Korean Democratic Party"] = {abbrev = "NKDP", color = "#E6573B", shortname = "New Korean Democratic",}, ["New Korea Party"] = {abbrev = "NKP", color = "#003990", shortname = "New Korea",}, ["New Korea Party of Hope"] = {abbrev = "NKPH", color = "#283C7B", shortname = "New Korea",}, ["New Kosovo Alliance"] = {abbrev = "AKR", color = "#0000FF", shortname = "",}, ["New Kōmeitō"] = {abbrev = "NK", color = "#0851A3", shortname = "",}, ["New Labour"] = {abbrev = "", color = "#ED918F", shortname = "",}, ["New Left (Croatia)"] = {abbrev = "", color = "#cc0000", shortname = "",}, ["New Left (Luxembourg)"] = {abbrev = "", color = "green", shortname = "",}, ["New Left (Poland)"] = {abbrev = "", color = "#EB2A48", shortname = "",}, ["New Left Current"] = {abbrev = "", color = "#FF0000", shortname = "",}, ["New Liberal Club"] = {abbrev = "", color = "#CF0006", shortname = "",}, ["New Liberal Party (New Zealand)"] = {abbrev = "", color = "#DDBB00", shortname = "New Liberal",}, ["New Liberalism (Colombia)"] = {abbrev = "", color = "#c91226", shortname = "",}, ["New Liberals (Australia)"] = {abbrev = "", color = "#54C2BD", shortname = "",}, ["New Liberals (Germany)"] = {abbrev = "", color = "#00758C", shortname = "",}, ["New Macau Association"] = {abbrev = "ANM", color = "#006400", shortname = "",}, ["New Macau Development Union"] = {abbrev = "NMDU", color = "#FFD700", shortname = "",}, ["New Macau Liberals"] = {abbrev = "AMN", color = "#006400", shortname = "",}, ["New Majority (Chile)"] = {abbrev = "", color = "#FF8000", shortname = "",}, ["New Majority (coalition)"] = {abbrev = "", color = "orange", shortname = "New Majority",}, ["New Majority (Peru)"] = {abbrev = "", color = "#FF7538", shortname = "",}, ["New Majority for Chile"] = {abbrev = "", color = "#FF1493", shortname = "",}, ["New Middle Party"] = {abbrev = "", color = "#0033EE", shortname = "",}, ["New Millennium Bean Party"] = {abbrev = "", color = "white", shortname = "",}, ["New Movement for the Future"] = {abbrev = "NBZ", color = "gold", shortname = "",}, ["New Nation Alliance (Taiwan)"] = {abbrev = "NNA", color = "#5D2971", shortname = "",}, ["New Nation Alternative"] = {abbrev = "", color = "red", shortname = "",}, ["New Nation Party"] = {abbrev = "NNP", color = "#4646b2", shortname = "New Nation",}, ["New Nation Party (Solomon Islands)"] = {abbrev = "NNP", color = "#C39E4D", shortname = "",}, ["New National Democracy Party"] = {abbrev = "NNDP", color = "#FFFFFF", shortname = "",}, ["New National Front"] = {abbrev = "", color = "#00008B", shortname = "",}, ["New National Party (Grenada)"] = {abbrev = "NNP", color = "#026701", shortname = "",}, ["New National Party (South Africa)"] = {abbrev = "NNP", color = "#ff9933", shortname = "",}, ["New National Order"] = {abbrev = "", color = "#FEFF54", shortname = "",}, ["New National Vision"] = {abbrev = "NNV", color = "#07944c", shortname = "",}, ["New Nationalist Party (UK)"] = {abbrev = "", color = "black", shortname = "New Nationalist Party",}, ["New Nigeria Peoples Party"] = {abbrev = "NNPP", color = "#049603", shortname = "",}, ["New Order (Venezuela)"] = {abbrev = "", color = "#000000", shortname = "",}, ["New Ossetia"] = {abbrev = "NO",color = "#F9D949", shortname = "",}, ["New Palangdharma Party"] = {abbrev = "", color = "#1A4B8E", shortname = "New Palangdharma",}, ["New Party (Brazil)"] = {abbrev = "NOVO", color = "#F3701B", shortname = "",}, ["New Party (Corrientes)"] = {abbrev = "", color = "#FF7500", shortname = "",}, ["New Party (Greece)"] = {abbrev = "", color = "#ADFF2F", shortname = "",}, ["New Party (Greece, 1947)"] = {abbrev = "", color = "darkblue", shortname = "",}, ["New Party (Latvia)"] = {abbrev = "", color = "#800080", shortname = "",}, ["New Party (Serbia)"] = {abbrev = "", color = "#FFDF00", shortname = "Nova",}, ["New Party (Taiwan)"] = {abbrev = "", color = "#FFD700", shortname = "New",}, ["New Party (UK)"] = {abbrev = "", color = "black", shortname = "New Party",}, ["New Party (Thailand)"] = {abbrev = "", color = "#172E58", shortname = "New Party",}, ["New Party Daichi"] = {abbrev = "", color = "#008000", shortname = "",}, ["New Party Nippon"] = {abbrev = "", color = "#ED1B23", shortname = "",}, ["New Party Sakigake"] = {abbrev = "", color = "#2F5CD7", shortname = "",}, ["New Party Taiwan"] = {abbrev = "", color = "#FFD306", shortname = "",}, ["New Patriotic Party (Aruba)"] = {abbrev = "", color = "#7F7D9C", shortname = "",}, ["New Patriotic Party"] = {abbrev = "NPP", color = "#132F7A", shortname = "",}, ["New People (political party)"] = {abbrev = "", color = "#0AD1C9", shortname = "New People",}, ["New People Party"] = {abbrev = "", color = "#ECF295", shortname = "",}, ["New People's Alliance"] = {abbrev = "", color = "#EE1100", shortname = "",}, ["New People's Left"] = {abbrev = "", color = "#0A8070", shortname = "",}, ["New People's Party (Hong Kong)"] = {abbrev = "NPP", color = "#1C8BCD", shortname = "",}, ["New People's Party (Norway)"] = {abbrev = "", color = "#CC00FF", shortname = "New People's",}, ["New People's Party of Korea"] = {abbrev = "", color = "#FF0000", shortname = "",}, ["New People's Party–Civil Force"] = {abbrev = "NPP/CF", color = "#1C8BCD", shortname = "",}, ["New People's Party"] = {abbrev = "", color = "Orange", shortname = "",}, ["New Political Center — Girchi"] = {abbrev = "", color = "#327F37", shortname = "Girchi",}, ["New Political Reform Party (1992)"] = {abbrev = "", color = "#101299", shortname = "New Political Reform",}, ["New Political Reform Party"] = {abbrev = "", color = "#317873", shortname = "New Political Reform",}, ["New Politics (Ukraine)"] = {abbrev = "", color = "#FFCB08", shortname = "New Politics",}, ["New Politics Alliance for Democracy"] = {abbrev = "NPAD", color = "#0099cc", shortname = "",}, ["New Politics Alliance"] = {abbrev = "", color = "#00CCFF", shortname = "",}, ["New Power Party"] = {abbrev = "NPP", color = "#FBBE01", shortname = "",}, ["New Progressive Alliance"] = {abbrev = "", color = "#E43234", shortname = "",}, ["New Progressive Party (Puerto Rico)"] = {abbrev = "PNP", color = "#161687", shortname = "",}, ["New Progressive Party (South Korea)"] = {abbrev = "", color = "#E62020", shortname = "New Progressive",}, ["New Progressive Party (US)"] = {abbrev = "", color = "#3333FF", shortname = "",}, ["New Prospect for Hong Kong"] = {abbrev = "NPHK", color = "#30D5C8", shortname = "New Prospect",}, ["New Region"] = {abbrev = "", color = "#377825", shortname = "",}, ["New Renaissance Party"] = {abbrev = "", color = "#00B0EC", shortname = "New Renaissance",}, ["New Republic Party (Costa Rica)"] = {abbrev = "PNR", color = "#87CEFA", shortname = "",}, ["New Republic Party (South Africa)"] = {abbrev = "", color = "#FDB813", shortname = "New Republic",}, ["New Republican Force"] = {abbrev = "NFR", color = "#8C479B", shortname = "",}, ["New Right (Denmark)"] = {abbrev = "", color = "#00505B", shortname = "New Right",}, ["New Right (Greece)"] = {abbrev = "", color = "#00366B", shortname = "",}, ["New Right (Israel)"] = {abbrev = "", color = "#25ACE1", shortname = "New Right",}, ["New Right (Netherlands)"] = {abbrev = "NR", color = "red", shortname = "",}, ["New Rights Party"] = {abbrev = "", color = "#8CD309", shortname = "New Rights",}, ["New Russia Party"] = {abbrev = "", color = "#D52B1E", shortname = "",}, ["New Serb Democracy"] = {abbrev = "NSD", color = "#163868", shortname = "",}, ["New Serbia (political party)"] = {abbrev = "NS", color = "#162243", shortname = "",}, ["New Siam Party"] = {abbrev = "", color = "#FFA07A", shortname = "New Siam",}, ["New Sinhala Heritage"] = {abbrev = "NSU", color = "maroon", shortname = "",}, ["New Slovenia"] = {abbrev = "NSi", color = "#009AC7", shortname = "",}, ["New Social Contract"] = {abbrev = "NSC", color = "#8DA6D6", shortname = "",}, ["New Social Democratic Party"] = {abbrev = "", color = "#004F94", shortname = "New Social Democratic",}, ["New Social Pact"] = {abbrev = "", color = "#800080", shortname = "",}, ["New Social Power Party"] = {abbrev = "", color = "#2B934A", shortname = "",}, ["New Socialism (political party)"] = {abbrev = "", color = "#EF8A39", shortname = "",}, ["New Socialist Party (San Marino)"] = {abbrev = "NPS", color = "#0060B6", shortname = "",}, ["New Socialist Party of Japan"] = {abbrev = "", color = "#6EB92B", shortname = "New Socialist",}, ["New Space (Uruguay)"] = {abbrev = "", color = "#F34723", shortname = "New Space",}, ["New Start (Hungary)"] = {abbrev = "", color = "#012E46", shortname = "New Start",}, ["New Territories Association of Societies"] = {abbrev = "NTAS", color = "#2181FA", shortname = "",}, ["New Time (Chile)"] = {abbrev = "", color = "#360170", shortname = "",}, ["New Turkey Party (1961)"] = {abbrev = "YTP", color = "#00B0F0", shortname = "",}, ["New Turkey Party (2002)"] = {abbrev = "YTP", color = "#FF0000", shortname = "",}, ["New Turkey Party"] = {abbrev = "", color = "#0057A4", shortname = "",}, ["New Union (Social Liberals)"] = {abbrev = "NS", color = "#2A3177", shortname = "",}, ["New United Democratic Party"] = {abbrev = "NUDP", color = "#70BA86", shortname = "New United Democratic",}, ["New Unity"] = {abbrev = "JV", color = "#6AB647", shortname = "",}, ["New Vision (electoral alliance)"] = {abbrev = "", color = "#CC00FF", shortname = "New Vision",}, ["New Wafd Party"] = {abbrev = "", color = "#1C6339", shortname = "New Wafd",}, ["New Welfare Party"] = {abbrev = "YRP", color = "#E20613", shortname = "",}, ["New World Order Party"] = {abbrev = "", color = "#CC66FF", shortname = "New World Order",}, ["New World People's Party"] = {abbrev = "ÚVNP", color = "#e50081", shortname = "",}, ["New York State Right to Life Party"] = {abbrev = "", color = "#F4C2C2", shortname = "Right to Life",}, ["New Youth Forum"] = {abbrev = "", color = "#FF8C00", shortname = "Youth Forum",}, ["New Youth of Macau"] = {abbrev = "", color = "#FF4F00", shortname = "",}, ["New Zealand Conservative Party"] = {abbrev = "", color = "#0D0DFC", shortname = "Conservatives",}, ["New Zealand Democrat Party (1934)"] = {abbrev = "", color = "#00AEEF", shortname = "Democrat",}, ["New Zealand Democratic Party for Social Credit"] = {abbrev = "", color = "#339966", shortname = "Democrats",}, ["New Zealand Family Rights Protection Party"] = {abbrev = "", color = "#65FFF0", shortname = "Family Rights",}, ["New Zealand First"] = {abbrev = "", color = "#000000", shortname = "NZ First",}, ["New Zealand Labour Party (1910)"] = {abbrev = "", color = "#DE2C34", shortname = "Labour",}, ["New Zealand Labour Party"] = {abbrev = "", color = "#D82A20", shortname = "Labour",}, ["New Zealand Legion"] = {abbrev = "", color = "#2E3B74", shortname = "Legion",}, ["New Zealand Liberal Party (1962)"] = {abbrev = "", color = "#FFD700", shortname = "Liberal",}, ["New Zealand Liberal Party (1991)"] = {abbrev = "", color = "#CC9900", shortname = "Liberal",}, ["New Zealand Liberal Party (2008)"] = {abbrev = "", color = "#FFFFFF", shortname = "",}, ["New Zealand Liberal Party"] = {abbrev = "", color = "#FFDF00", shortname = "Liberal",}, ["New Zealand Loyal"] = {abbrev = "", color = "#FDB813", shortname = "",}, ["New Zealand Momentum Party"] = {abbrev = "", color = "#E11088", shortname = "Momentum",}, ["New Zealand National Front"] = {abbrev = "", color = "#00008B", shortname = "National Front",}, ["New Zealand National Party"] = {abbrev = "", color = "#00529F", shortname = "National",}, ["New Zealand Pacific Party"] = {abbrev = "", color = "#531E8A", shortname = "Pacific",}, ["New Zealand Party"] = {abbrev = "", color = "#43A2FF", shortname = "NZ Party",}, ["New Zealand People's Party"] = {abbrev = "", color = "#22316C", shortname = "People's Party",}, ["New Zealand Public Party"] = {abbrev = "", color = "#5BCAF4", shortname = "Public",}, ["New Zealand Republican Party (1995)"] = {abbrev = "", color = "#FF0000", shortname = "Republican",}, ["New Zealand Socialist Party"] = {abbrev = "", color = "#8B0000", shortname = "Socialist",}, ["New Zealand Sovereignty Party"] = {abbrev = "", color = "#E2AB20", shortname = "Sovereignty",}, ["New Zealand TEA Party"] = {abbrev = "TEA", color = "#5A276C", shortname = "",}, ["New Zealand Women's Political Party"] = {abbrev = "", color = "#DF2B6A", shortname = "Women's",}, ["Newcastle Independents"] = {abbrev = "", color = "#000000", shortname = "Newcastle Ind.",}, ["Newham Independent"] = {abbrev = "", color = "#DDDDDD", shortname = "",}, ["NewLabour Party (New Zealand)"] = {abbrev = "", color = "#FF4040", shortname = "NewLabour",}, ["Newropeans"] = {abbrev = "", color = "#FF9000", shortname = "",}, ["Newport Independents Party"] = {abbrev = "NIP", color = "#ffbb00", shortname = "Newport Ind.",}, ["NewZeal"] = {abbrev = "", color = "#28CEDC", shortname = "",}, ["Ngwane National Liberatory Congress"] = {abbrev = "", color = "#000000", shortname = "",}, ["NHK Party"] = {abbrev = "", color = "#F8EA0D", shortname = "Anti-NHK",}, ["NI21"] = {abbrev = "", color = "#008080", shortname = "",}, ["Nicaraguan Liberal Alliance"] = {abbrev = "ALN", color = "#ed1b25", shortname = "",}, ["Nicaraguan Party of the Christian Path"] = {abbrev = "CCN", color = "#00b1ec", shortname = "",}, ["Nicaraguan Socialist Party"] = {abbrev = "", color = "red", shortname = "",}, ["Nick Xenophon Team"] = {abbrev = "", color = "#ff6300", shortname = "Xenophon Team",}, ["NIDA (political party)"] = {abbrev = "", color = "#76B729", shortname = "",}, ["Nida El Watan"] = {abbrev = "NW", color = "#C96A2F", shortname = "",}, ["Nidaa Tounes"] = {abbrev = "", color = "#ed1c24", shortname = "",}, ["Nigerian People's Party"] = {abbrev = "", color = "#028c3b", shortname = "",}, ["Nigerien Alliance for Democracy and Progress"] = {abbrev = "", color = "#FF8600", shortname = "ANDP-Zaman Lahiya",}, ["Nigerien Democratic Movement for an African Federation"] = {abbrev = "", color = "#F79800", shortname = "",}, ["Nigerien Democratic Front"] = {abbrev = "", color = "#4154B9", shortname = "",}, ["Nigerien Party for Democracy and Socialism"] = {abbrev = "PNDS", color = "#FFAEC9", shortname = "",}, ["Nigerien Patriotic Movement"] = {abbrev = "", color = "#EA1821", shortname = "",}, ["Nigerien Progressive Party – African Democratic Rally"] = {abbrev = "PPN–RDA", color = "#000000", shortname = "",}, ["Nigerien Self-Management Party"] = {abbrev = "", color = "blue", shortname = "",}, ["Nine Per Cent Growth Party"] = {abbrev = "", color = "#008080", shortname = "",}, ["Nippon Ishin no Kai"] = {abbrev = "", color = "#B8CE43", shortname = "Innovation",}, ["Nippon Kaigi"] = {abbrev = "", color = "#A22041", shortname = "",}, ["NISHAD Party"] = {abbrev = "", color = "#BA0005", shortname = "NISHAD",}, ["Nisma Thurje"] = {abbrev = "", color = "#00798D", shortname = "",}, ["Niue People's Party"] = {abbrev = "", color = "#228B22", shortname = "Niue People's",}, ["Nivaria"] = {abbrev = "", color = "#006CB7", shortname = "",}, ["Niz Goenkar Revolution Front"] = {abbrev = "NGRF", color = "#CCCCFF", shortname = "",}, ["Nizam-e-Islam Party"] = {abbrev = "BNIP", color = "#D1F8AB", shortname = "",}, ["NLHP"] = {abbrev = "", color = "#4678CC", shortname = "",}, ["NMP (political party)"] = {abbrev = "NMP", color = "#FFFFC0", shortname = "",}, ["No Candidate Deserves My Vote!"] = {abbrev = "NCDMV!", color = "white", shortname = "",}, ["No overall control"] = {abbrev = "", color = "black", shortname = "",}, ["No party preference (US)"] = {abbrev = "", color = "#FDFD7F", shortname = "No party preference",}, ["No party preference"] = {abbrev = "", color = "#DDDDDD", shortname = "",}, ["No to the EU – Yes to Democracy"] = {abbrev = "NO2EU", color = "darkgrey", shortname = "",}, ["No2EU"] = {abbrev = "", color = "grey", shortname = "",}, ["Nominated (India)"] = {abbrev = "", color = "black", shortname = "Nominated",}, ["Non Partisan (Washington)"] = {abbrev = "", color = "#FCF5D9", shortname = "",}, ["Non-affiliated members of the House of Lords"] = {abbrev = "", color = "darkgrey", shortname = "Non-affiliated",}, ["Non-aligned Coalition"] = {abbrev = "", color = "#FFEF6A", shortname = "",}, ["Non-Inscrits"] = {abbrev = "NI", color = "#999999", shortname = "",}, ["Non-Neutral Independents"] = {abbrev = "", color = "#252D60", shortname = "",}, ["Non-partisan democracy"] = {abbrev = "", color = "#808080", shortname = "Nonpartisan",}, ["Non-Partisan Deputies"] = {abbrev = "", color = "#AAAAAA", shortname = "Non-Partisan",}, ["Non-Partisan Solidarity Union"] = {abbrev = "NPSU", color = "#C20F51", shortname = "",}, ["Non-Partisans"] = {abbrev = "NK", color = "grey", shortname = "",}, ["Non-Political"] = {abbrev = "", color = "#DDDDDD", shortname = "",}, ["Non-Smokers' Party (Spain)"] = {abbrev = "", color = "#005D9C", shortname = "",}, ["None of the above"] = {abbrev = "NOTA", color = "#FFFFFF", shortname = "",}, ["Nonpartisan (US)"] = {abbrev = "", color = "#FDFD7F", shortname = "",}, ["Nonpartisan Bloc for Cooperation with the Government"] = {abbrev = "BBWR", color = "#A9A9A9", shortname = "",}, ["Nonpartisan Bloc for Support of Reforms"] = {abbrev = "BBWR", color = "#A9A9A9", shortname = "",}, ["Nonpartisan League"] = {abbrev = "", color = "#FCF5D9", shortname = "",}, ["Nonpartisan Local Government Activists"] = {abbrev = "", color = "#E6001A", shortname = "",}, ["Nonpartisan politician"] = {abbrev = "", color = "#C0C0C0", shortname = "Nonpartisan",}, ["Nordic Freedom"] = {abbrev = "", color = "#423F5F", shortname = "",}, ["Nordic Green Left Alliance"] = {abbrev = "", color = "#00A172", shortname = "",}, ["Nordic Resistance Movement"] = {abbrev = "NMR", color = "#00703c", shortname = "",}, ["Nordkalottfolket"] = {abbrev = "NKF", color = "#2F358C", shortname = "",}, ["Nork Residents' Association"] = {abbrev = "", color = "#DDDDDD", shortname = "",}, ["Norodom Ranariddh Party"] = {abbrev = "NRP", color = "#40E0D0", shortname = "",}, ["Norrländska Coalition"] = {abbrev = "", color = "#feda00", shortname = "",}, ["North Dakota Democratic–Nonpartisan League Party"] = {abbrev = "", color = "#0055AA", shortname = "Democratic–NPL",}, ["North District Blueprint"] = {abbrev = "NDB", color = "#00609A", shortname = "",}, ["North East India Development Party"] = {abbrev = "NEIDP", color = "#2a4b8d", shortname = "",}, ["North East Party"] = {abbrev = "", color = "#800000", shortname = "North East",}, ["North of the Rings"] = {abbrev = "NOTR", color = "#44C4DD", shortname = "",}, ["North Queensland First"] = {abbrev = "", color = "#162659", shortname = "NQ First",}, ["North Queensland Labor Party"] = {abbrev = "", color = "#CD5C5C", shortname = "North Queensland Labor",}, ["North-East Project"] = {abbrev = "", color = "#FFA700", shortname = "",}, ["Northern Country Party"] = {abbrev = "NCP", color = "#556B2F", shortname = "Northern Country",}, ["Northern Elements Progressive Union"] = {abbrev = "", color = "#00AB00", shortname = "",}, ["Northern Force"] = {abbrev = "", color = "#D2B48C", shortname = "",}, ["Northern Independence Party"] = {abbrev = "NIP", color = "#9E1C34", shortname = "",}, ["Northern Ireland Conservatives"] = {abbrev = "", color = "#0087DC", shortname = "NI Conservatives",}, ["Northern Ireland Labour Party"] = {abbrev = "NILP", color = "#DC241f", shortname = "NI Labour",}, ["Northern Ireland Labour Representation Committee"] = {abbrev = "", color = "#DC241f", shortname = "NI Labour",}, ["Northern Ireland Unionist Party"] = {abbrev = "", color = "darkorange", shortname = "NI Unionist",}, ["Northern Ireland Women's Coalition"] = {abbrev = "", color = "aqua", shortname = "NI Women's Coalition",}, ["Northern Party"] = {abbrev = "", color = "#FF8C00", shortname = "Northern",}, ["Northern Territory Greens"] = {abbrev = "", color = "#00a651", shortname = "Greens",}, ["Northern Territory Nationals"] = {abbrev = "", color = "#006644", shortname = "Nationals",}, ["Norway Democrats"] = {abbrev = "", color = "#001F5A", shortname = "",}, ["Norwegian Agrarian Association"] = {abbrev = "", color = "#008542", shortname = "Agrarian",}, ["Norwegian People's Party"] = {abbrev = "", color = "darkblue", shortname = "",}, ["Norwegian Sámi Association"] = {abbrev = "NSR", color = "#f9b429", shortname = "",}, ["Nós Galeguistas"] = {abbrev = "", color = "#5EC6FB", shortname = "",}, ["Nós–Unidade Popular"] = {abbrev = "", color = "#ED1C24", shortname = "",}, ["NOS"] = {abbrev = "", color = "#307FE2", shortname = "",}, ["Nosotros (political party)"] = {abbrev = "PPN", color = "#cf152c", shortname = "",}, ["Nottingham Independents"] = {abbrev = "NI", color = "#ffe4e1", shortname = "Nottingham Ind.",}, ["Noua Dreaptă"] = {abbrev = "", color = "#143F2E", shortname = "",}, ["Nous Citoyens"] = {abbrev = "", color = "#006992", shortname = "",}, ["Nouvelle Action Royaliste"] = {abbrev = "", color = "yellow", shortname = "",}, ["NOVA (Slovakia)"] = {abbrev = "NOVA", color = "#00599D", shortname = "",}, ["Nova Alternativa"] = {abbrev = "", color = "#00A8C5", shortname = "",}, ["NOW Platform DA and PAS"] = {abbrev = "ACUM", color = "#e6c300", shortname = "",}, ["Now! (political party)"] = {abbrev = "", color = "#0B2232", shortname = "",}, ["NTR Telugu Desam Party (Lakshmi Parvathi)"] = {abbrev = "NTRTDP(LP)", color = "#33CCCC", shortname = "",}, ["Nuance Party"] = {abbrev = "PN", color = "#ee7d31", shortname = "",}, ["Nuestro Tiempo (El Salvador)"] = {abbrev = "NT", color = "#93C97D", shortname = "",}, ["Nuevas Ideas"] = {abbrev = "NI", color = "#00ADEF", shortname = "",}, ["Nueva Mayoría"] = {abbrev = "", color = "orange", shortname = "",}, ["Nullifier Party"] = {abbrev = "", color = "#0EBFB0", shortname = "Nullifier",}, ["Nunatta Qitornai"] = {abbrev = "", color = "#A1359B", shortname = "",}, ["Nur Otan"] = {abbrev = "", color = "#1CA9C9", shortname = "",}, ["Nusantara Awakening Party"] = {abbrev = "PKN", color = "#FF2121", shortname = "",}, ["Nykhaz"] = {abbrev = "", color = "#13193B", shortname = "",}, ["Nyt Odsherred"] = {abbrev = "", color = "#027F9C", shortname = "",}, ["NZ Economic Euthenics Party"] = {abbrev = "", color = "#AA6", shortname = "",}, ["NZ Equal Rights Party"] = {abbrev = "", color = "#DC143C", shortname = "",}, ["NZ Independent Coalition"] = {abbrev = "", color = "#349E9F", shortname = "Independent Coalition",}, ["NZ Outdoors & Freedom Party"] = {abbrev = "", color = "#008000", shortname = "Outdoors",}, ["NZ South Island Party"] = {abbrev = "", color = "#009900", shortname = "South Island",}, } return { full = full, alternate = alternate, } caf31c03e52b9960006ac908a4a4eb9fac0983d3 Module:Political party/L 828 1576 2911 2023-09-27T17:18:28Z w>Jvalienforce 0 Scribunto text/plain -- Constant data used by [[Module:Political party]] local alternate = { ["La France insoumise"] = "La France Insoumise", ["Labor Front"] = "Labour Front", ["Labor Party (United States, 1996)"] = "Labor Party (US, 1996)", ["Labor Party (United States)"] = "Labor Party (US)", ["Labor Party (US, 19th century)"] = "Labor Party (United States, 19th century)", ["Labor Party"] = "Labour Party", ["Labour Party–GroenLinks"] = "GroenLinks–PvdA", ["Labor-Farm Party of Wisconsin"] = "Labor–Farm Party of Wisconsin", ["Labour '87"] = "Labour Party of Northern Ireland", ["Labour Co-operative"] = "Labour and Co-operative", ["Labour Coalition"] = "Labour coalition", ["Labour (Ireland)"] = "Labour Party (Ireland)", ["Labour Party (Mexico)"] = "Labor Party (Mexico)", ["Lakas Kampi CMD"] = "Lakas–Kampi", ["Lakas-Christian Muslim Democrats"] = "Lakas–CMD", ["Lakas-CMD"] = "Lakas–CMD", ["Lakas-CMD (1991)"] = "Lakas–CMD (1991)", ["Lakas-CMD (2009)"] = "Lakas–CMD", ["Lakas-Kampi-CMD"] = "Lakas–Kampi", ["Lakas-NUCD-UMDP"] = "Lakas–CMD (1991)", ["Lakas-NUCD"] = "Lakas–CMD (1991)", ["Lakas–Christian Muslim Democrats"] = "Lakas–CMD", ["Lakas–CMD (2009)"] = "Lakas–CMD", ["Lakas–Kampi–CMD"] = "Lakas–CMD", ["Lakas–NUCD–UMDP"] = "Lakas–CMD (1991)", ["Lakas–NUCD"] = "Lakas–CMD (1991)", ["Lalit"] = "Lalit (Mauritius)", ["Lanka Democratic Party"] = "Lanka Prajathanthravadi Pakshaya", ["Lantmannapartiet"] = "Lantmanna Party", ["LaRouche movement"] = "National Democratic Policy Committee", ["Latvian Centrist Party"] = "Centre Party (Latvia)", ["Latvian Social Democratic Alliance"] = "Latvian Social Democratic Workers' Party", ["Law and Order (Latvia)"] = "For Each and Every One", ["Law and Order Party (United States)"] = "Law and Order Party (US)", ["LDPR (political party)"] = "Liberal Democratic Party of Russia", ["Left for the Right to Decide"] = "Republican Left of Catalonia", ["Left Front (India)"] = "Left Front", ["Left Front (Sri Lanka)"] = "Left Liberation Front", ["Left of the Peoples (1987)"] = "Left of the Peoples", ["Left of the Peoples (1989)"] = "Left of the Peoples", ["Left Option"] = "Estonian Left Party", ["Left Party – Communists"] = "Left Party (Sweden)", ["Left Party-Communists"] = "Left Party (Sweden)", ["Left Radical Party"] = "Radical Party of the Left", ["Left Unity (European Parliament)"] = "European United Left–Nordic Green Left", ["Leftist Socialist Party of Japan"] = "Left Socialist Party of Japan", ["Leftist Workers and Farm Labourers"] = "Communist Party of Latvia", ["Lega per Salvini Premier"] = "Lega (political party)", ["Les Engagés"] = "Les Engagés (political party)", ["Libertarian Party (Alaska)"] = "Libertarian Party (US)", ["Liberal–Democratic List"] = "Liberal League (Luxembourg)", ["Liberal/Country Coalition"] = "Coalition (Australia)", ["Liberal-Country Coalition"] = "Coalition (Australia)", ["Liberal–Country Coalition"] = "Coalition (Australia)", ["Liberal/National Coalition"] = "Coalition (Australia)", ["Liberal-National Coalition"] = "Coalition (Australia)", ["Liberal–National Coalition"] = "Coalition (Australia)", ["Lib-Lab"] = "Liberal-Labour (UK)", ["Liberal Coalition Party"] = "Liberals (Sweden)", ["Liberal Constitutional Party (Italy)"] = "Historical Right (Italy)", ["Liberal Democratic Party (Chile)"] = "Liberal Democratic Party (Chile, 1893)", ["Liberal Democratic Party (Italy)"] = "Italian Democratic Liberal Party", ["Liberal Democratic Party (Lithuania)"] = "Order and Justice", ["Liberal Democratic Party (Serbia 2005)"] = "Liberal Democratic Party (Serbia)", ["Liberal Democratic Party (Spain)"] = "Liberal Democratic Party (Spain, 1982)", ["Liberal Democratic Party of Japan"] = "Liberal Democratic Party (Japan)", ["Liberal Democratic Party of Switzerland"] = "Liberal Party of Switzerland", ["Liberal Democrats"] = "Liberal Democrats (UK)", ["Liberal Movement"] = "Liberal Movement (Australia)", ["Liberal Movement (Lithuania)"] = "Liberals' Movement (Lithuania)", ["Liberal National Party (UK, 1931)"] = "National Liberal Party (UK, 1931)", ["Liberal Party (Japan, 1945)"] = "Liberal Party (Japan, 1950)", ["Liberal Party (Luxembourg)"] = "Liberal League (Luxembourg)", ["Liberal Party (Scotland)"] = "Scottish Liberal Party", ["Liberal Party (Serbia, 1989)"] = "Liberal Democratic Party (Serbia, 1989)", ["Liberal Party of Australia (Australian Capital Territory Division)"] = "Liberal Party of Australia (A.C.T. Division)", ["Liberal Party of New York"] = "Liberal Party (New York)", ["Liberal Party of Sweden"] = "Liberals (Sweden)", ["Liberal Party"] = "Democratic Liberal Party (Japan)", ["Liberal People's Party (Sweden)"] = "Liberals (Sweden)", ["Liberal People's Party"] = "Liberals (Sweden)", ["Liberal Reformist Party + Democratic Front of Francophones"] = "Reformist Movement", ["Liberal Reformist Party"] = "Liberal Reformist Party (Belgium)", ["Liberal Republican Party (United States)"] = "Liberal Republican Party (US)", ["Liberal Socialist Party"] = "Liberal Socialist Party (Singapore)", ["Liberal Socialists Party"] = "Liberal Socialists Party (Egypt)", ["Liberal Unionist"] = "Liberal Unionist Party", ["Liberal Unionist Party (UK)"] = "Liberal Unionist Party", ["Liberal-Labour (New Zealand)"] = "Liberal–Labour (New Zealand)", ["Liberals (Italy)"] = "Liberal Union (Italy)", ["Liberals–Democrats–Radicals"] = "Liberals, Democrats and Radicals", ["Liberals' Movement of the Republic of Lithuania"] = "Liberals' Movement (Lithuania)", ["Liberal Party of Andorra"] = "Liberals of Andorra", ["Libertad y Refundación"] = "Liberty and Refoundation", ["Libertarian, Direct, Democratic"] = "Libertair, Direct, Democratisch", ["Libertarian Party UK"] = "Libertarian Party (UK)", ["Libertarian Party (United Kingdom)"] = "Libertarian Party (UK)", ["Libertarian Party (United States)"] = "Libertarian Party (US)", ["Libertarian Party (Alaska)"] = "Libertarian Party (US)", ["Libertarian Party (Arizona)"] = "Libertarian Party (US)", ["Libertarian Party (California)"] = "Libertarian Party (US)", ["Libertarian Party (Colorado)"] = "Libertarian Party (US)", ["Libertarian Party (Connecticut)"] = "Libertarian Party (US)", ["Libertarian Party (Delaware)"] = "Libertarian Party (US)", ["Libertarian Party (Iowa)"] = "Libertarian Party (US)", ["Libertarian Party (Massachusetts)"] = "Libertarian Party (US)", ["Libertarian Party (Michigan)"] = "Libertarian Party (US)", ["Libertarian Party (Missouri)"] = "Libertarian Party (US)", ["Libertarian Party (Nevada)"] = "Libertarian Party (US)", ["Libertarian Party (New Mexico)"] = "Libertarian Party (US)", ["Libertarian Party (New York)"] = "Libertarian Party (US)", ["Libertarian Party (Oregon)"] = "Libertarian Party (US)", ["Libertarian Party (Vermont)"] = "Libertarian Party (US)", ["Libertarian Party (Washington)"] = "Libertarian Party (US)", ["Libertarian Party of Arizona"] = "Libertarian Party (US)", ["Libertarian Party of California"] = "Libertarian Party (US)", ["Libertarian Party of Colorado"] = "Libertarian Party (US)", ["Libertarian Party of Connecticut"] = "Libertarian Party (US)", ["Libertarian Party of Delaware"] = "Libertarian Party (US)", ["Libertarian Party of the District of Columbia"] = "Libertarian Party (US)", ["Libertarian Party of Florida"] = "Libertarian Party (US)", ["Libertarian Party of Georgia"] = "Libertarian Party (US)", ["Libertarian Party of Hawaii"] = "Libertarian Party (US)", ["Libertarian Party of Kentucky"] = "Libertarian Party (US)", ["Libertarian Party of Maryland"] = "Libertarian Party (US)", ["Libertarian Party of Massachusetts"] = "Libertarian Party (US)", ["Libertarian Party of Michigan"] = "Libertarian Party (US)", ["Libertarian Party of Minnesota"] = "Libertarian Party (US)", ["Libertarian Party of Missouri"] = "Libertarian Party (US)", ["Libertarian Party of Montana"] = "Libertarian Party (US)", ["Libertarian Party of Nevada"] = "Libertarian Party (US)", ["Libertarian Party of New Mexico"] = "Libertarian Party (US)", ["Libertarian Party of New York"] = "Libertarian Party (US)", ["Libertarian Party of North Carolina"] = "Libertarian Party (US)", ["Libertarian Party of North Dakota"] = "Libertarian Party (US)", ["Libertarian Party of Ohio"] = "Libertarian Party (US)", ["Libertarian Party of Oklahoma"] = "Libertarian Party (US)", ["Libertarian Party of Oregon"] = "Libertarian Party (US)", ["Libertarian Party of Pennsylvania"] = "Libertarian Party (US)", ["Libertarian Party of Texas"] = "Libertarian Party (US)", ["Libertarian Party of Utah"] = "Libertarian Party (US)", ["Libertarian Party of Washington"] = "Libertarian Party (US)", ["Libertarian Party of Wisconsin"] = "Libertarian Party (US)", ["Libertas (lobby group)"] = "Libertas.eu", ["Libertas Spain"] = "Libertas.eu", ["Liberty Forward Party"] = "Advancement Unification Party", ["Liberty Party (United States, 1840)"] = "Liberty Party (US)", ["Liberty Party (United States, 1932)"] = "Liberty Party (US)", ["Liberty Party (United States)"] = "Liberty Party (US)", ["Liberty Party (US, 1840)"] = "Liberty Party (US)", ["Liberty Party"] = "Liberty Party (US)", ["Liberal People's Party (Finland)"] = "Liberals (Finland)", ["Libra Party (Albania)"] = "Libra Party", ["Libyan Arab Socialist Union"] = "Arab Socialist Union (Libya)", ["LID"] = "Left and Democrats", ["Ligue du Midi"] = "Ligue du Sud", ["Local"] = "Localist", ["Lok Dal"] = "Lokdal", ["Lok Jan Shakti Party"] = "Lok Janshakti Party", ["Long Live Tunisia"] = "Tahya Tounes", ["Louisiana Democratic Party"] = "Democratic Party (United States)", ["LPHK"] = "Liberal Party (Hong Kong)", ["LPR"] = "League of Polish Families", ["LSSP"] = "Lanka Sama Samaja Party", ["Luxembourg Workers' Party"] = "Luxembourg Socialist Workers' Party", ["Luys Alliance"] = "Bright Alliance", } local full = { ["L'Alternativa c'è"] = {abbrev = "", color = "#FE9F07", shortname = "",}, ["L'Hospitalet Left Alternative"] = {abbrev = "", color = "#42837D", shortname = "",}, ["La Axarquía Progress"] = {abbrev = "", color = "#FF990E", shortname = "",}, ["La España en Marcha"] = {abbrev = "", color = "#111011", shortname = "",}, ["La Falange (1999)"] = {abbrev = "", color = "#29191E", shortname = "",}, ["La France En Action"] = {abbrev = "", color = "#F8F1BB", shortname = "",}, ["La France Insoumise"] = {abbrev = "LFI", color = "#E53D40", shortname = "",}, ["La Fresneda Local Platform"] = {abbrev = "", color = "#004D21", shortname = "",}, ["La Libertad Avanza"] = {abbrev = "LLA", color = "#6C4C99", shortname = "",}, ["La Línea 100x100"] = {abbrev = "", color = "#FA5841", shortname = "",}, ["La Palma Group of Independents"] = {abbrev = "", color = "#072357", shortname = "",}, ["La République En Marche!"] = {abbrev = "LREM", color = "#FFD600", shortname = "",}, ["Laban ng Demokratikong Pilipino"] = {abbrev = "LDP", color = "#0000CD", shortname = "",}, ["Laban ng Makabayang Masang Pilipino"] = {abbrev = "LAMMP", color = "#ffa500", shortname = "",}, ["Labor and Agrarian Party"] = {abbrev = "PALA", color = "royalblue", shortname = "",}, ["Labor Party (Mexico)"] = {abbrev = "PT", color = "#DB2017", shortname = "",}, ["Labor Party (South Korea)"] = {abbrev = "", color = "#DC143C", shortname = "Labor",}, ["Labor Party (Taiwan)"] = {abbrev = "", color = "red", shortname = "",}, ["Labor Party (United States, 19th century)"] = {abbrev = "", color = "#FF6347", shortname = "Labor",}, ["Labor Party (US, 1996)"] = {abbrev = "", color = "#FF6347", shortname = "Labor",}, ["Labor Party (US)"] = {abbrev = "", color = "#FF6347", shortname = "Labor",}, ["Labor Party of the United States"] = {abbrev = "", color = "#FF6347", shortname = "Labor",}, ["Labor Party Philippines"] = {abbrev = "WPP", color = "#00039F", shortname = "",}, ["Labor Solidarity"] = {abbrev = "SL", color = "purple", shortname = "",}, ["Labor Union of Games and Gambling in Macau"] = {abbrev = "", color = "#B2FFFF", shortname = "",}, ["Labor–Farm Party of Wisconsin"] = {abbrev = "", color = "#17aa5c", shortname = "Labor–Farm",}, ["Labor-Gesher-Meretz"] = {abbrev = "", color = "#ED1B25", shortname = "Emet",}, ["Labor-Gesher"] = {abbrev = "", color = "#EE161F", shortname = "",}, ["Labor"] = {abbrev = "", color = "#FF6347", shortname = "",}, ["Laboring People's Party"] = {abbrev = "", color = "red", shortname = "",}, ["Laborious Ukraine Electoral Bloc"] = {abbrev = "", color = "#872558", shortname = "Labour Ukraine",}, ["Laborist Party (Mexico)"] = {abbrev = "", color = "#CE1126", shortname = "Laborist",}, ["Laborista Party"] = {abbrev = "", color = "green", shortname = "Laborista",}, ["Labour and Co-operative"] = {abbrev = "", color = "#E4003B", shortname = "Labour Co-op",}, ["Labour and Equity Party"] = {abbrev = "", color = "#4e92d3", shortname = "",}, ["Labour and Freedom Alliance"] = {abbrev = "", color = "#90268F", shortname = "Labour and Freedom",}, ["Labour and Justice Party (Spain)"] = {abbrev = "", color = "#AD0000", shortname = "",}, ["Labour and Social Justice – The Electoral Alternative"] = {abbrev = "WASG", color = "#FF8000", shortname = "Labour and Social Justice",}, ["Labour and Solidarity Party"] = {abbrev = "", color = "#5963cf", shortname = "",}, ["Labour and Trade Union Group"] = {abbrev = "", color = "#D44442", shortname = "Labour and Trade Union",}, ["Labour Cause's Party"] = {abbrev = "", color = "#9F030A", shortname = "",}, ["Labour coalition"] = {abbrev = "", color = "#cd5c5c", shortname = "",}, ["Labour Democrat Party"] = {abbrev = "", color = "", shortname = "Labour Democrat",}, ["Labour Democratic Party"] = {abbrev = "", color = "Pink", shortname = "Labour Democracy",}, ["Labour Democrats"] = {abbrev = "", color = "#59A421", shortname = "",}, ["Labour Electoral Association"] = {abbrev = "LEA", color = "#B22222", shortname = "",}, ["Labour Faction (1937)"] = {abbrev = "SP", color = "#1693F4", shortname = "",}, ["Labour Front"] = {abbrev = "LF", color = "#AA5634", shortname = "",}, ["Labour Gathering Party"] = {abbrev = "", color = "#8B0000", shortname = "",}, ["Labour Independent Group"] = {abbrev = "", color = "#FF0000", shortname = "",}, ["Labour Party (Argentina)"] = {abbrev = "PL", color = "#00708B", shortname = "Labour Party",}, ["Labour Party (Greenland)"] = {abbrev = "", color = "pink", shortname = "Labour",}, ["Labour Party (Hong Kong)"] = {abbrev = "", color = "#F7941E", shortname = "Labour",}, ["Labour Party (Indonesia, 1949)"] = {abbrev = "", color = "red", shortname = "Labour",}, ["Labour Party (Indonesia, 1998)"] = {abbrev = "", color = "#000080", shortname = "Labour",}, ["Labour Party (Indonesia, 2021)"] = {abbrev = "", color = "#ff6800", shortname = "Labour",}, ["Labour Party (Ireland)"] = {abbrev = "Lab", color = "#CC0000", shortname = "Labour",}, ["Labour Party (Lithuania)"] = {abbrev = "DP", color = "#1D578C", shortname = "",}, ["Labour Party (Malta)"] = {abbrev = "", color = "#EE3224", shortname = "Labour",}, ["Labour Party (Mauritius)"] = {abbrev = "", color = "#FF0000", shortname = "Labour Party",}, ["Labour Party (Morocco)"] = {abbrev = "", color = "#D04933", shortname = "",}, ["Labour Party (Netherlands)"] = {abbrev = "PvdA", color = "#DF111A", shortname = "",}, ["Labour Party (New Caledonia)"] = {abbrev = "PT", color = "#9A0000", shortname = "",}, ["Labour Party (Nigeria)"] = {abbrev = "LP", color = "#DA251C", shortname = "",}, ["Labour Party (Norway)"] = {abbrev = "", color = "#D70926", shortname = "Labour",}, ["Labour Party (Poland)"] = {abbrev = "SP", color = "#083A7F", shortname = "",}, ["Labour Party (Secular)"] = {abbrev = "LP(S)", color = "#2E64FE", shortname = "",}, ["Labour Party (Singapore)"] = {abbrev = "", color = "#CC8955", shortname = "Labour Party",}, ["Labour Party (Slovakia)"] = {abbrev = "SP", color = "#C31B3E", shortname = "",}, ["Labour Party (South Africa, 1969)"] = {abbrev = "", color = "#8D0000", shortname = "Labour",}, ["Labour Party (South Africa)"] = {abbrev = "", color = "#FF0000", shortname = "Labour",}, ["Labour Party (Thailand)"] = {abbrev = "", color = "#FF0000", shortname = "Labour",}, ["Labour Party (Turkey)"] = {abbrev = "", color = "#FFDE4D", shortname = "Labour",}, ["Labour Party (UK)"] = {abbrev = "Lab", color = "#E4003B", shortname = "Labour",}, ["Labour Party in Northern Ireland"] = {abbrev = "", color = "#DC241F", shortname = "",}, ["Labour Party of Bosnia and Herzegovina"] = {abbrev = "", color = "#013971", shortname = "",}, ["Labour Party of Brazil"] = {abbrev = "PTdoB", color = "#00FF00", shortname = "",}, ["Labour Party of Hong Kong"] = {abbrev = "", color = "#DE2910", shortname = "Labour",}, ["Labour Party of India (V V Prasad)"] = {abbrev = "LPI(V)", color = "#4C81B6", shortname = "",}, ["Labour Party of India"] = {abbrev = "LPI", color = "#E0E6F8", shortname = "",}, ["Labour Party of Malaya"] = {abbrev = "", color = "#FAAFBA", shortname = "",}, ["Labour Party of Northern Ireland"] = {abbrev = "", color = "#DC241f", shortname = "Labour Party NI",}, ["Labour Party of Serbia"] = {abbrev = "LPS", color = "#2274A5", shortname = "",}, ["Labour Party Pakistan"] = {abbrev = "", color = "#FE2712", shortname = "",}, ["Labour Party"] = {abbrev = "", color = "#FF0000", shortname = "Labour",}, ["Labour Progressive"] = {abbrev = "", color = "red", shortname = "",}, ["Labour Renewal Movement"] = {abbrev = "", color = "#23FF00", shortname = "",}, ["Labour Representation Committee (1900)"] = {abbrev = "", color = "#b22222", shortname = "Labour Repr. Cmte.",}, ["Labour Representation Committee"] = {abbrev = "", color = "#b22222", shortname = "Labour",}, ["Labour Republican Party"] = {abbrev = "", color = "#FF9340", shortname = "",}, ["Labour Solidarity"] = {abbrev = "SP", color = "#D33F49", shortname = "",}, ["Labour Ukraine"] = {abbrev = "", color = "Purple", shortname = "",}, ["Labour Union (Poland)"] = {abbrev = "UP", color = "#ED1C24", shortname = "",}, ["Labour Unionist"] = {abbrev = "", color = "#DDEEFF", shortname = "",}, ["Labour-Farmer Party"] = {abbrev = "", color = "#FF5C85", shortname = "",}, ["Labour-Farmer Masses Party"] = {abbrev = "", color = "#FF5C85", shortname = "",}, ["Labour, Co-operative and Trade Union"] = {abbrev = "", color = "white", shortname = "Labour, Co-op & Trade Union",}, ["Labourers and Farmers Party"] = {abbrev = "", color = "#FE7580", shortname = "Labourers and Farmers",}, ["Ladlad"] = {abbrev = "", color = "#FFC0CB", shortname = "",}, ["Lahu National Development Party"] = {abbrev = "LHNDP", color = "#A66971", shortname = "",}, ["Lakas ng Bansa"] = {abbrev = "LnB", color = "#0000CD", shortname = "",}, ["Lakas ng Bayan Coalition"] = {abbrev = "LABAN", color = "#FFFF40", shortname = "",}, ["Lakas ng Bayan"] = {abbrev = "LABAN", color = "#FFFF00", shortname = "",}, ["Lakas–CMD (1991)"] = {abbrev = "", color = "#B0E0E6", shortname = "Lakas",}, ["Lakas–CMD"] = {abbrev = "", color = "#B0E0E6", shortname = "Lakas",}, ["Lakas–Kampi"] = {abbrev = "LKS-KAM", color = "#B0E0E6", shortname = "Lakas–Kampi",}, ["Lakas-Laban Coalition"] = {abbrev = "L–L", color = "#B0E0E6", shortname = "Lakas–Laban",}, ["Lalit (Mauritius)"] = {abbrev = "", color = "#F7CC06", shortname = "",}, ["Land and Justice Party"] = {abbrev = "", color = "#DC261B", shortname = "Land & Justice",}, ["Land development"] = {abbrev = "", color = "#CDB79E", shortname = "",}, ["Land Justice League"] = {abbrev = "", color = "#73BC7C", shortname = "",}, ["Land of Dharma Party"] = {abbrev = "", color = "#593012", shortname = "",}, ["Land Party (South Africa)"] = {abbrev = "", color = "#7e803e", shortname = "Land Party",}, ["Land Party"] = {abbrev = "", color = "#4898B9", shortname = "",}, ["Landbund"] = {abbrev = "", color = "#385A38", shortname = "",}, ["Landless People's Movement (Namibia)"] = {abbrev = "LPM", color = "#FC7B2C", shortname = "",}, ["Lang Labor"] = {abbrev = "", color = "#E2725B", shortname = "",}, ["Lanka Prajathanthravadi Pakshaya"] = {abbrev = "", color = "#0000FF", shortname = "",}, ["Lanka Sama Samaja Party"] = {abbrev = "LSSP", color = "#FF0000", shortname = "",}, ["Lantmanna and Bourgeois Party"] = {abbrev = "", color = "#ff9933", shortname = "Lantmanna and Bourgeois",}, ["Lantmanna Party"] = {abbrev = "", color = "#00529C", shortname = "Lantmanna",}, ["Lanzarote Avanza"] = {abbrev = "", color = "#037468", shortname = "",}, ["Lanzarote Independents Party"] = {abbrev = "", color = "#31B404", shortname = "",}, ["Lanzarote Neighborhood Force"] = {abbrev = "", color = "#98CCFE", shortname = "",}, ["Lao National Union Party"] = {abbrev = "", color = "#FFFFFF", shortname = "",}, ["Lao Patriotic Front"] = {abbrev = "", color = "#CE1126", shortname = "",}, ["Lao People's Revolutionary Party"] = {abbrev = "LPRP", color = "#CE1126", shortname = "",}, ["Lapian ng Masang Pilipino"] = {abbrev = "LAMP", color = "#ffa500", shortname = "",}, ["Lapiang Manggagawa"] = {abbrev = "LM", color = "#00039f", shortname = "",}, ["LaPrimaire.org"] = {abbrev = "", color = "#800080", shortname = "",}, ["Las Palmas de Gran Canaria Puede"] = {abbrev = "", color = "#96CA2D", shortname = "",}, ["Latgale Party"] = {abbrev = "", color = "#004B84", shortname = "",}, ["Latvia First"] = {abbrev = "LPV", color = "#A8343C", shortname = "",}, ["Latvia's First Party"] = {abbrev = "", color = "#582B64", shortname = "",}, ["Latvia's First Party/Latvian Way"] = {abbrev = "", color = "#682376", shortname = "",}, ["Latvian Association of Regions"] = {abbrev = "LRA", color = "#0E3267", shortname = "",}, ["Latvian Farmers' Union"] = {abbrev = "LZS", color = "#D5D900", shortname = "",}, ["Latvian Green Party"] = {abbrev = "", color = "#00683A", shortname = "",}, ["Latvian National Independence Movement"] = {abbrev = "", color = "#902E3B", shortname = "",}, ["Latvian Nationalists"] = {abbrev = "", color = "#9E2B38", shortname = "",}, ["Latvian Russian Union"] = {abbrev = "", color = "#3560A9", shortname = "",}, ["Latvian Social Democratic Workers' Party"] = {abbrev = "LSDSP", color = "#830D30", shortname = "",}, ["Latvian Unity Party"] = {abbrev = "", color = "#DC5356", shortname = "",}, ["Latvian Way"] = {abbrev = "", color = "#FFE200", shortname = "",}, ["Lauredian Union"] = {abbrev = "UL", color = "#000000", shortname = "",}, ["Law and Justice (Georgia)"] = {abbrev = "", color = "#01FFFF", shortname = "",}, ["Law and Justice"] = {abbrev = "PiS", color = "#263778", shortname = "",}, ["Law and Order Party (US)"] = {abbrev = "", color = "#00DDDD", shortname = "Law and Order",}, ["Law Preservation Party"] = {abbrev = "", color = "#FF00FF", shortname = "Law Preservation",}, ["Le Trèfle"] = {abbrev = "", color = "#77FF77", shortname = "",}, ["Leaders Party of Vanuatu"] = {abbrev = "", color = "#3DAB48", shortname = "Leaders Party",}, ["Leading Thai Party"] = {abbrev = "", color = "#DEB887", shortname = "Leading Thai",}, ["League Against Usury"] = {abbrev = "LCC", color = "lightgreen", shortname = "",}, ["League for Democracy Party"] = {abbrev = "", color = "#3BB9FF", shortname = "",}, ["League Nepal Shanti Ekta Party"] = {abbrev = "", color = "#E6DBCF", shortname = "",}, ["League of Albanians of Romania"] = {abbrev = "LSR", color = "#444444", shortname = "",}, ["League of Anti-Corruption Governors"] = {abbrev = "LIGA", color = "#F5EC49", shortname = "",}, ["League of Catalonia–Catalan Liberal Party"] = {abbrev = "", color = "#99FF00", shortname = "",}, ["League of Communists – Movement for Yugoslavia"] = {abbrev = "", color = "#FF0000", shortname = "",}, ["League of Communists of Bosnia and Herzegovina"] = {abbrev = "SK BiH", color = "#DD0000", shortname = "",}, ["League of Communists of Croatia"] = {abbrev = "SKH", color = "#DD0000", shortname = "",}, ["League of Communists of Montenegro"] = {abbrev = "SKCG", color = "#DD0000", shortname = "",}, ["League of Communists of Serbia"] = {abbrev = "SKS", color = "#DD0000", shortname = "",}, ["League of Communists of Slovenia"] = {abbrev = "ZKS", color = "#DD0000", shortname = "",}, ["League of Communists of Yugoslavia"] = {abbrev = "SKJ", color = "#DD0000", shortname = "",}, ["League of Communists of Yugoslavia in Serbia"] = {abbrev = "SKJS", color = "red", shortname = "",}, ["League of Democratic Socialists"] = {abbrev = "BDS", color = "red", shortname = "",}, ["League of Free Liberals"] = {abbrev = "BVL", color = "#3399FF", shortname = "",}, ["League of Polish Families"] = {abbrev = "LPR", color = "#2DA0D2", shortname = "",}, ["League of Social Democrats of Vojvodina"] = {abbrev = "LSV", color = "#03C03C", shortname = "",}, ["League of Social Democrats"] = {abbrev = "LSD", color = "#e0050d", shortname = "",}, ["League of Socialist Youth of Bosnia and Herzegovina"] = {abbrev = "", color = "#FF6347", shortname = "",}, ["League of Supporters of Indonesian Independence"] = {abbrev = "IPKI", color = "#D1E231", shortname = "",}, ["League of the South (France)"] = {abbrev = "", color = "#C60B27", shortname = "",}, ["League of West German Communists"] = {abbrev = "BWK", color = "red", shortname = "",}, ["Lebanese Forces"] = {abbrev = "LF", color = "#ED2027", shortname = "Lebanese Forces",}, ["Lecompton Democrat"] = {abbrev = "", color = "#ACCCFE", shortname = "Lecompton Democratic",}, ["Leeds Left Alliance"] = {abbrev = "", color = "#00A86B", shortname = "",}, ["Left (Austria)"] = {abbrev = "", color = "#FF0000", shortname = "Left",}, ["Left Alliance (Finland)"] = {abbrev = "Vas.", color = "#F00A64", shortname = "Left Alliance",}, ["Left Alternative"] = {abbrev = "", color = "red", shortname = "",}, ["Left and Democrats"] = {abbrev = "LiD", color = "#D22833", shortname = "",}, ["Left Andalusian Bloc"] = {abbrev = "", color = "#32754C", shortname = "",}, ["Left Assembly of Tudela"] = {abbrev = "", color = "#CC7EAE", shortname = "",}, ["Left Assembly–Initiative for Andalusia"] = {abbrev = "", color = "#ADA0A3", shortname = "",}, ["Left Bloc (Portugal)"] = {abbrev = "BE", color = "#8B0000", shortname = "",}, ["Left Bloc for National Liberation"] = {abbrev = "", color = "#FF9933", shortname = "",}, ["Left Bloc"] = {abbrev = "", color = "#8B0000", shortname = "",}, ["Left Camp of Israel"] = {abbrev = "Sheli", color = "#DC241F", shortname = "",}, ["Left Centre"] = {abbrev = "", color = "#2CBFE3", shortname = "",}, ["Left Coalition (Serbia)"] = {abbrev = "LK", color = "#A60C19", shortname = "",}, ["Left Communists (Weimar Republic)"] = {abbrev = "LK", color = "red", shortname = "",}, ["Left Democratic Front (Kerala)"] = {abbrev = "LDF", color = "#EE0000", shortname = "",}, ["Left and Democratic Front (India)"] = {abbrev = "LDF", color = "#FF0000", shortname = "",}, ["Left Ecology Freedom"] = {abbrev = "", color = "#C80815", shortname = "",}, ["Left for Almería"] = {abbrev = "", color = "#037949", shortname = "",}, ["Left for Independence"] = {abbrev = "", color = "#DAC125", shortname = "",}, ["Left Front (Asturias)"] = {abbrev = "", color = "#76319B", shortname = "",}, ["Left Front (France)"] = {abbrev = "FG", color = "#D6232B", shortname = "",}, ["Left Front (Russia)"] = {abbrev = "Left Front", color = "#FF131C", shortname = "",}, ["Left Front (West Bengal)"] = {abbrev = "LF", color = "#FF0000", shortname = "",}, ["Left Front"] = {abbrev = "LF", color = "red", shortname = "",}, ["Left in Positive"] = {abbrev = "", color = "#9B0F3B", shortname = "",}, ["Left Independentists"] = {abbrev = "", color = "#AF1B1D", shortname = "",}, ["Left Liberals"] = {abbrev = "", color = "#00FF00", shortname = "",}, ["Left Liberation Front"] = {abbrev = "", color = "#FF0000", shortname = "",}, ["Left List"] = {abbrev = "", color = "red", shortname = "",}, ["Left Movement"] = {abbrev = "", color = "#BD1928", shortname = "",}, ["Left Nationalists"] = {abbrev = "", color = "#E53E13", shortname = "",}, ["Left of Catalonia–Democratic Electoral Front"] = {abbrev = "", color = "#EFF24C", shortname = "",}, ["Left of Galicia"] = {abbrev = "", color = "#E80810", shortname = "",}, ["Left of the Peoples"] = {abbrev = "", color = "#D56545", shortname = "",}, ["Left Party - Communists"] = {abbrev = "", color = "#b00000", shortname = "Left-Communist",}, ["Left Party (France)"] = {abbrev = "", color = "#AA0000", shortname = "Left Party",}, ["Left Party (Sweden)"] = {abbrev = "V", color = "#B00000", shortname = "Left",}, ["Left Party (Turkey)"] = {abbrev = "", color = "#0069B4", shortname = "SOL",}, ["Left Peraltese Union"] = {abbrev = "", color = "#A1138C", shortname = "",}, ["Left Platform of Coslada"] = {abbrev = "", color = "#244E0E", shortname = "",}, ["Left Republican Party (Spain)"] = {abbrev = "", color = "#7F1E6D", shortname = "",}, ["Left Segovia"] = {abbrev = "", color = "#F53000", shortname = "",}, ["Left Socialist Initiative"] = {abbrev = "", color = "#DE0929", shortname = "",}, ["Left Socialist Party (Belgium)"] = {abbrev = "", color = "red", shortname = "",}, ["Left Socialist Party (Sweden)"] = {abbrev = "", color = "red", shortname = "Left Socialist",}, ["Left Socialists"] = {abbrev = "", color = "#E72240", shortname = "",}, ["Left Socialist Party of Japan"] = {abbrev = "", color = "#C90F36", shortname = "Left Socialist",}, ["Left Struggle"] = {abbrev = "MA", color = "red", shortname = "",}, ["Left Together"] = {abbrev = "", color = "#870f57", shortname = "",}, ["Left Union for a Clean and Holy Republic"] = {abbrev = "", color = "#F11928", shortname = "",}, ["Left Unity (UK)"] = {abbrev = "", color = "red", shortname = "Left Unity",}, ["Left Unity"] = {abbrev = "", color = "#990000", shortname = "",}, ["Left-Green Movement"] = {abbrev = "", color = "#00B878", shortname = "Left-Green",}, ["Left-wing Workers"] = {abbrev = "PTK", color = "#FF0000", shortname = "",}, ["Left-wing Revolutionary Nationalist Movement"] = {abbrev = "MNRI", color = "#E34234", shortname = "",}, ["Left-wing Revolutionary Nationalist Movement – 1"] = {abbrev = "MNRI-1", color = "#EF86B5", shortname = "",}, ["Lega Alpina Lumbarda"] = {abbrev = "LAL", color = "green", shortname = "",}, ["Lega Autonomia Veneta"] = {abbrev = "LAV", color = "gold", shortname = "",}, ["Lega Lombarda"] = {abbrev = "", color = "green", shortname = "",}, ["Lega Marche"] = {abbrev = "", color = "#008000", shortname = "",}, ["Lega Nord"] = {abbrev = "", color = "#008000", shortname = "",}, ["Lega Piemonte"] = {abbrev = "", color = "#008000", shortname = "",}, ["Lega (political party)"] = {abbrev = "", color = "#008000", shortname = "Lega",}, ["Legal Marijuana Now Party"] = {abbrev = "", color = "#50C878", shortname = "Legal Marijuana Now",}, ["Legalise Cannabis Australia"] = {abbrev = "", color = "#6fc442", shortname = "",}, ["Legalise Cannabis Alliance"] = {abbrev = "", color = "#669966", shortname = "Legalise Cannabis",}, ["Legality Movement Party"] = {abbrev = "PLL", color = "#FFFF05", shortname = "",}, ["Leganemos"] = {abbrev = "", color = "#8183D8", shortname = "",}, ["Legitimists"] = {abbrev = "", color = "#1F497D", shortname = "",}, ["Lelo for Georgia"] = {abbrev = "", color = "#F0CE0D", shortname = "Lelo",}, ["Leighton Baker Party"] = {abbrev = "", color = "#26A805", shortname = "",}, ["León Despierta"] = {abbrev = "", color = "#4B244C", shortname = "",}, ["León en Común"] = {abbrev = "", color = "#9D181D", shortname = "",}, ["Leonese Autonomist Party–Leonesist Unity"] = {abbrev = "", color = "#D44F0C", shortname = "",}, ["Leonese Convergence"] = {abbrev = "", color = "#FFCBDB", shortname = "",}, ["Leonese People's Union"] = {abbrev = "UPL", color = "#B41062", shortname = "",}, ["Leonid Chernovetskyi Bloc"] = {abbrev = "", color = "Gold", shortname = "",}, ["Lepsza Polska"] = {abbrev = "", color = "white", shortname = "",}, ["Les Centristes"] = {abbrev = "LC", color = "#6F97CF", shortname = "",}, ["Les Écologistes"] = {abbrev = "LE", color = "#1F7B52", shortname = "",}, ["Les Engagés (political party)"] = {abbrev = "LE", color = "#02E5D2", shortname = "",}, ["Les Verts Fraternels"] = {abbrev = "", color = "#32CD32", shortname = "",}, ["Lesotho Congress for Democracy"] = {abbrev = "LCD", color = "#78a22c", shortname = "",}, ["Lesotho People's Congress"] = {abbrev = "LPC", color = "", shortname = "",}, ["Lesotho Workers' Party"] = {abbrev = "LWP", color = "", shortname = "",}, ["Lespwa"] = {abbrev = "", color = "#30B700", shortname = "",}, ["Let Every Child Have Both Parents"] = {abbrev = "", color = "#DAA520", shortname = "",}, ["Let London Live"] = {abbrev = "", color = "#2d1e6d", shortname = "",}, ["Let us Give the Change"] = {abbrev = "", color = "#F7D102", shortname = "",}, ["Let's Connect Slovenia"] = {abbrev = "PoS", color = "#FDB92E", shortname = "",}, ["Let's Go Peru"] = {abbrev = "", color = "#FA8072", shortname = "",}, ["Letterkenny Residents Party"] = {abbrev = "", color = "#9900CC", shortname = "",}, ["Levantemos El Puerto"] = {abbrev = "", color = "#93117E", shortname = "",}, ["Leviathan Movement"] = {abbrev = "", color = "#000000", shortname = "",}, ["Lewisham People Before Profit"] = {abbrev = "", color = "#9400d3", shortname = "People Before Profit",}, ["Lewisham Peoples' Alliance"] = {abbrev = "", color = "#CCCCCC", shortname = "",}, ["Liaison Committee for the Presidential Majority"] = {abbrev = "", color = "#0047AB", shortname = "Presidential Majority",}, ["Libera San Marino"] = {abbrev = "", color = "#14AABC", shortname = "Libera",}, ["Liberal (Costa Rica)"] = {abbrev = "", color = "#BF1313", shortname = "Liberal",}, ["Liberal (South Korea)"] = {abbrev = "", color = "#004EA2", shortname = "",}, ["Liberal Alliance (Brazil)"] = {abbrev = "AL", color = "#FF8C00", shortname = "",}, ["Liberal Alliance (Chile)"] = {abbrev = "", color = "#FFD700", shortname = "",}, ["Liberal Alliance (Denmark)"] = {abbrev = "", color = "#3FB2BE", shortname = "Liberal Alliance",}, ["Liberal Alliance (Denmark, 2021)"] = {abbrev = "", color = "#18354B", shortname = "Liberal Alliance",}, ["Liberal Alliance (Greece)"] = {abbrev = "FISY", color = "#800080", shortname = "",}, ["Liberal Alliance (Spain)"] = {abbrev = "", color = "#99FF00", shortname = "",}, ["Liberal Alliance of Montenegro"] = {abbrev = "LSCG", color = "#007F00", shortname = "",}, ["Liberal Alternative for Manacor"] = {abbrev = "", color = "#291562", shortname = "",}, ["Liberal Alternative"] = {abbrev = "", color = "#846394", shortname = "",}, ["Liberal and Centre Union"] = {abbrev = "LiCS", color = "#FFD126", shortname = "",}, ["Liberal and Country League (SA)"] = {abbrev = "", color = "#0095B6", shortname = "",}, ["Liberal and Country League"] = {abbrev = "", color = "#0095B6", shortname = "",}, ["Liberal and Country Party"] = {abbrev = "", color = "#080CAB", shortname = "Liberal and Country",}, ["Liberal and Democratic Union"] = {abbrev = "", color = "#0000FF", shortname = "",}, ["Liberal and Social Alternative"] = {abbrev = "", color = "#4A4999", shortname = "",}, ["Liberal Appeal"] = {abbrev = "", color = "#4A48CF", shortname = "",}, ["Liberal bloc (Hong Kong)"] = {abbrev = "", color = "#297329", shortname = "Liberal",}, ["Liberal Coalition (Spain)"] = {abbrev = "", color = "#ACAE34", shortname = "",}, ["Liberal Centre (Spain)"] = {abbrev = "", color = "#0DB85E", shortname = "",}, ["Liberal Centre"] = {abbrev = "", color = "#00CCA3", shortname = "",}, ["Liberal Centrist Union (Spain)"] = {abbrev = "", color = "#3399FF", shortname = "",}, ["Liberal Citizens Action"] = {abbrev = "", color = "#F96611", shortname = "",}, ["Liberal Conservative Reformers"] = {abbrev = "LKR", color = "#F29200", shortname = "",}, ["Liberal Constitutional Party (Egypt)"] = {abbrev = "", color = "#483D8B", shortname = "Liberal Constitutional",}, ["Liberal Constitutionalist Party (Mexico)"] = {abbrev = "PLC", color = "#D4AA00", shortname = "",}, ["Liberal Democracy (France)"] = {abbrev = "DL", color = "#004B8C", shortname = "",}, ["Liberal Democracy of Slovenia"] = {abbrev = "LDS", color = "#00BBF0", shortname = "",}, ["Liberal Democrat Party (Turkey)"] = {abbrev = "", color = "#00008B", shortname = "Liberal Democrat",}, ["Liberal Democrat Party of Chile"] = {abbrev = "", color = "#FFD700", shortname = "",}, ["Liberal Democratic Alliance for Italy"] = {abbrev = "ALI", color = "#195385", shortname = "",}, ["Liberal Democratic Centre"] = {abbrev = "", color = "#21A631", shortname = "",}, ["Liberal Democratic Congress"] = {abbrev = "KLD", color = "#007FB2", shortname = "",}, ["Liberal Democratic Federation of Hong Kong"] = {abbrev = "LDF", color = "#DC2A2A", shortname = "",}, ["Liberal Democratic Focus Team"] = {abbrev = "", color = "#FDBB30", shortname = "Lib Dem Focus Team",}, ["Liberal Democratic Party (Angola)"] = {abbrev = "PLD", color = "#FFCB48", shortname = "",}, ["Liberal Democratic Party (Australia)"] = {abbrev = "", color = "#FEC327", shortname = "Liberal&nbsp;Democrats",}, ["Liberal Democratic Party (Bangladesh)"] = {abbrev = "LDP", color = "#FFBF00", shortname = "",}, ["Liberal Democratic Party (Bosnia and Herzegovina)"] = {abbrev = "LDS BiH", color = "#28166F", shortname = "",}, ["Liberal Democratic Party (Cambodia)"] = {abbrev = "", color = "blue", shortname = "",}, ["Liberal Democratic Party (Chile, 1893)"] = {abbrev = "", color = "#00CCCC", shortname = "Liberal&nbsp;Democratic",}, ["Liberal Democratic Party (El Salvador)"] = {abbrev = "PDL", color = "#E7D055", shortname = "",}, ["Liberal Democratic Party (France)"] = {abbrev = "PLD", color = "#0080FF", shortname = "",}, ["Liberal Democratic Party (Iceland)"] = {abbrev = "", color = "#3466E4", shortname = "",}, ["Liberal Democratic Party (Japan)"] = {abbrev = "LDP", color = "#3CA324", shortname = "Liberal&nbsp;Democratic",}, ["Liberal Democratic Party (Japan, 2017)"] = {abbrev = "LDP", color = "#D7003A", shortname = "",}, ["Liberal Democratic Party (Kenya)"] = {abbrev = "", color = "yellow", shortname = "",}, ["Liberal Democratic Party (Malaysia)"] = {abbrev = "", color = "#FF7F00", shortname = "",}, ["Liberal Democratic Party (Netherlands)"] = {abbrev = "", color = "#333399", shortname = "",}, ["Liberal Democratic Party (North Macedonia)"] = {abbrev = "LDP", color = "#2B2F7D", shortname = "",}, ["Liberal Democratic Party (Romania)"] = {abbrev = "PLD", color = "#ff6633", shortname = "",}, ["Liberal Democratic Party (Serbia)"] = {abbrev = "LDP", color = "#6901d4", shortname = "",}, ["Liberal Democratic Party (Serbia, 1989)"] = {abbrev = "LDS", color = "#D85313", shortname = "",}, ["Liberal Democratic Party (Slovenia)"] = {abbrev = "LDS", color = "#139BEA", shortname = "",}, ["Liberal Democratic Party (Spain, 1913)"] = {abbrev = "", color = "#009933", shortname = "Liberal Democratic",}, ["Liberal Democratic Party (Spain, 1982)"] = {abbrev = "PDL", color = "#339CD5", shortname = "",}, ["Liberal Democratic Party (Sri Lanka)"] = {abbrev = "LDP", color = "#FFDE17", shortname = "Liberal Democratic Party",}, ["Liberal Democratic Party (Thailand)"] = {abbrev = "", color = "#ffd700", shortname = "Liberal Democratic",}, ["Liberal Democratic Party (Turkey)"] = {abbrev = "LDP", color = "#000099", shortname = "",}, ["Liberal Democratic Party of the Soviet Union"] = {abbrev = "LDPSU", color = "#7295DB", shortname = "",}, ["Liberal Democratic Party of Belarus"] = {abbrev = "LDPB", color = "#011E41", shortname = "",}, ["Liberal Democratic Party of Germany"] = {abbrev = "LDPD", color = "#FFA500", shortname = "",}, ["Liberal Democratic Party of Moldova"] = {abbrev = "PLDM", color = "#0E8A4A", shortname = "",}, ["Liberal Democratic Party of Russia"] = {abbrev = "LDPR", color = "#48C", shortname = "",}, ["Liberal Democratic Party of Ukraine"] = {abbrev = "", color = "orange", shortname = "Liberal&nbsp;Democratic",}, ["Liberal Democratic Republican Party"] = {abbrev = "", color = "#1DACD6", shortname = "",}, ["Liberal Democratic Union (Albania)"] = {abbrev = "BLD", color = "#2EA5E9", shortname = "",}, ["Liberal Democrats (Germany)"] = {abbrev = "LD", color = "#F98113", shortname = "",}, ["Liberal Democrats (UK)"] = {abbrev = "Lib Dem", color = "#FAA61A", shortname = "Liberal Democrats",}, ["Liberal Democrats' Rally for National Reconstruction – Vivoten"] = {abbrev = "", color = "yellow", shortname = "",}, ["Liberal Egyptian Party"] = {abbrev = "", color = "#FF3333", shortname = "",}, ["Liberal Federation"] = {abbrev = "", color = "#0000FF", shortname = "",}, ["Liberal Force"] = {abbrev = "FL", color = "#FFDD93", shortname = "",}, ["Liberal Forum"] = {abbrev = "LiF", color = "#FFDC00", shortname = "",}, ["Liberal Front Party"] = {abbrev = "PFL", color = "#8CC63E", shortname = "",}, ["Liberal Group of Andratx"] = {abbrev = "", color = "#6699CC", shortname = "",}, ["Liberal Group Sanxenxo"] = {abbrev = "", color = "#0078B3", shortname = "",}, ["Liberal Independent Group"] = {abbrev = "", color = "#009B31", shortname = "",}, ["Liberal Initiative"] = {abbrev = "IL", color = "#00ADEF", shortname = "",}, ["Liberal Integrity Party"] = {abbrev = "", color = "#ff69b4", shortname = "Liberal Integrity",}, ["Liberal League (Finland)"] = {abbrev = "", color = "mediumblue", shortname = "",}, ["Liberal League (Japan)"] = {abbrev = "", color = "#FFDF00", shortname = "Liberal League",}, ["Liberal League (Luxembourg)"] = {abbrev = "", color = "yellow", shortname = "",}, ["Liberal Left (France)"] = {abbrev = "", color = "#FFD700", shortname = "",}, ["Liberal Left (Spain)"] = {abbrev = "", color = "#007138", shortname = "Liberal Left",}, ["Liberal Left Coalition"] = {abbrev = "", color = "#6EBD57", shortname = "Liberal Left",}, ["Liberal Movement (Australia)"] = {abbrev = "", color = "#8B008B", shortname = "Liberal Movement",}, ["Liberal National Party of Queensland"] = {abbrev = "", color = "#1456F1", shortname = "Liberal National",}, ["Liberal Opening Movement"] = {abbrev = "", color = "yellow", shortname = "",}, ["Liberal Oppositionist"] = {abbrev = "", color = "#FFBF00", shortname = "Oppositionist",}, ["Liberal Party – Freedom to Choose"] = {abbrev = "Lib.", color = "#F19321", shortname = "Liberal Party",}, ["Liberal Party (Armenia)"] = {abbrev = "", color = "#EB5F10", shortname = "",}, ["Liberal Party (Belgium)"] = {abbrev = "", color = "#3C40D2", shortname = "Liberal",}, ["Liberal Party (Bolivia)"] = {abbrev = "", color = "#FFD700", shortname = "",}, ["Liberal Party (Bourbon Restoration)"] = {abbrev = "", color = "#FDEE00", shortname = "",}, ["Liberal Party (Brazil, 1831)"] = {abbrev = "", color = "#F7C100", shortname = "Liberal",}, ["Liberal Party (Brazil, 1985)"] = {abbrev = "PL", color = "#080074", shortname = "",}, ["Liberal Party (Brazil, 2006)"] = {abbrev = "PL", color = "#015AAA", shortname = "",}, ["Liberal Party (Bulgaria)"] = {abbrev = "", color = "#EAC117", shortname = "",}, ["Liberal Party (Cambodia)"] = {abbrev = "", color = "#FAAC58", shortname = "Liberal",}, ["Liberal Party (Chile)"] = {abbrev = "", color = "#FFAE34", shortname = "",}, ["Liberal Party (Chile, 1849)"] = {abbrev = "", color = "#FFD700", shortname = "Liberal",}, ["Liberal Party (Chile, 1988)"] = {abbrev = "", color = "#F5D60A", shortname = "",}, ["Liberal Party (Chile, 1998)"] = {abbrev = "", color = "#FFEE00", shortname = "",}, ["Liberal Party (Croatia)"] = {abbrev = "", color = "#0303fa", shortname = "",}, ["Liberal Party (East Timor)"] = {abbrev = "", color = "#2C43DB", shortname = "Liberal",}, ["Liberal Party (Greece)"] = {abbrev = "", color = "#FFA500", shortname = "Liberal",}, ["Liberal Party (Greece, modern)"] = {abbrev = "", color = "orange", shortname = "Liberal",}, ["Liberal Party (Guatemala)"] = {abbrev = "", color = "#0000ff", shortname = "Liberal",}, ["Liberal Party (Haiti)"] = {abbrev = "", color = "#FFD700", shortname = "",}, ["Liberal Party (Hong Kong)"] = {abbrev = "", color = "#00aeef", shortname = "Liberal",}, ["Liberal Party (Hungary)"] = {abbrev = "", color = "#AAD8E6", shortname = "Liberal",}, ["Liberal Party (Iceland, historical)"] = {abbrev = "", color = "#00C6FF", shortname = "Liberal",}, ["Liberal Party (Iceland)"] = {abbrev = "", color = "#406899", shortname = "Liberal",}, ["Liberal Party (Israel)"] = {abbrev = "", color = "#FFCC00", shortname = "Liberal",}, ["Liberal Party (Japan, 1890)"] = {abbrev = "", color = "#EFAB93", shortname = "Liberal",}, ["Liberal Party (Japan, 1950)"] = {abbrev = "", color = "#128A45", shortname = "Liberal",}, ["Liberal Party (Japan, 1998)"] = {abbrev = "", color = "#000099", shortname = "Liberal",}, ["Liberal Party (Japan, 2016)"] = {abbrev = "", color = "#0950A0", shortname = "Liberal",}, ["Liberal Party (Kingdom of Serbia)"] = {abbrev = "", color = "#FFDF00", shortname = "Liberal",}, ["Liberal Party (Mexico)"] = {abbrev = "PL", color = "#FF3333", shortname = "Liberal",}, ["Liberal Party (Moldova)"] = {abbrev = "PL", color = "#73C2FB", shortname = "",}, ["Liberal Party (New York)"] = {abbrev = "", color = "#CC0000", shortname = "Liberal",}, ["Liberal Party (Nicaragua)"] = {abbrev = "", color = "#800000", shortname = "Liberal",}, ["Liberal Party (Norway)"] = {abbrev = "", color = "#006666", shortname = "Liberal",}, ["Liberal Party (Panama)"] = {abbrev = "", color = "#FF0000", shortname = "Liberal",}, ["Liberal Party (Paraguay)"] = {abbrev = "", color = "#0000FF", shortname = "Liberal",}, ["Liberal Party (Philippines)"] = {abbrev = "LP", color = "#f0e68c", shortname = "Liberal",}, ["Liberal Party (Radoslavists)"] = {abbrev = "", color = "maroon", shortname = "",}, ["Liberal Party (Rwanda)"] = {abbrev = "PL", color = "#03b464", shortname = "",}, ["Liberal Party (Serbia)"] = {abbrev = "", color = "#FAFC38", shortname = "",}, ["Liberal Party (Slovenia)"] = {abbrev = "", color = "#FFCC00", shortname = "",}, ["Liberal Party (South Korea)"] = {abbrev = "", color = "#254170", shortname = "Liberal",}, ["Liberal Party (South Korea, 1963)"] = {abbrev = "", color = "#485142", shortname = "Liberal",}, ["Liberal Party (Spain, 1880)"] = {abbrev = "", color = "#83C53A", shortname = "Liberal",}, ["Liberal Party (Spain, 1976)"] = {abbrev = "", color = "#006C95", shortname = "",}, ["Liberal Party (Thailand)"] = {abbrev = "", color = "#00008B", shortname = "Liberal",}, ["Liberal Party (UK, 1989)"] = {abbrev = "", color = "#EB7A43", shortname = "Liberal",}, ["Liberal Party (UK)"] = {abbrev = "Lib", color = "#FFD700", shortname = "Liberal",}, ["Liberal Party (Uruguay)"] = {abbrev = "", color = "#1047a1", shortname = "Liberal",}, ["Liberal Party (Venezuela)"] = {abbrev = "", color = "#FFD700", shortname = "",}, ["Liberal Party–Hatoyama"] = {abbrev = "", color = "#8DA405", shortname = "",}, ["Liberal Party Bangladesh"] = {abbrev = "", color = "#EA6D6A", shortname = "",}, ["Liberal Party of Albania"] = {abbrev = "", color = "#F2D863", shortname = "",}, ["Liberals of Andorra"] = {abbrev = "L'A", color = "#019DC5", shortname = "",}, ["Liberal Party of Australia (A.C.T. Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",}, ["Liberal Party of Australia (New South Wales Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",}, ["Liberal Party of Australia (Queensland Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",}, ["Liberal Party of Australia (South Australian Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",}, ["Liberal Party of Australia (Tasmanian Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",}, ["Liberal Party of Australia (Victorian Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",}, ["Liberal Party of Australia (Western Australian Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",}, ["Liberal Party of Australia"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",}, ["Liberal Party of Chile (2013)"] = {abbrev = "", color = "#FF432C", shortname = "Liberal",}, ["Liberal Party of Canada"] = {abbrev = "", color = "#D71920", shortname = "Liberal",}, ["Liberal Party of Corrientes"] = {abbrev = "", color = "#35AAE0", shortname = "",}, ["Liberal Party of Cuba"] = {abbrev = "", color = "#75AADB", shortname = "Liberal",}, ["Liberal Party of Ghana"] = {abbrev = "", color = "#F96128", shortname = "",}, ["Liberal Party of Gibraltar"] = {abbrev = "", color = "#DF424D", shortname = "Liberal",}, ["Liberal Party of Honduras"] = {abbrev = "", color = "#CE2029", shortname = "Liberal",}, ["Liberal Party of Ireland"] = {abbrev = "LPI", color = "#ADD8E6", shortname = "Liberal",}, ["Liberal Party of Kosovo"] = {abbrev = "", color = "brown", shortname = "",}, ["Liberal Party of Macedonia"] = {abbrev = "LPM", color = "#FFFF00", shortname = "",}, ["Liberal Party of Montenegro"] = {abbrev = "LPCG", color = "#87CEEB", shortname = "",}, ["Liberal Party of Norway"] = {abbrev = "", color = "#8CD600", shortname = "Liberal",}, ["Liberal Party of South Africa"] = {abbrev = "", color = "#FED86F", shortname = "",}, ["Liberal Party of Sri Lanka"] = {abbrev = "", color = "#FFDE17", shortname = "",}, ["Liberal Party of State Employment and Housing"] = {abbrev = "", color = "#311829", shortname = "",}, ["Liberal Party of Switzerland"] = {abbrev = "", color = "#134B94", shortname = "Liberals",}, ["Liberal Party of the Right"] = {abbrev = "", color = "#4955A1", shortname = "",}, ["Liberal Party of Ukraine"] = {abbrev = "", color = "blue", shortname = "Liberal",}, ["Liberal People's Party (Norway)"] = {abbrev = "", color = "purple", shortname = "",}, ["Liberal People's Party (Norway, 1972)"] = {abbrev = "", color = "red", shortname = "",}, ["Liberal Poland – Entrepreneurs' Strike"] = {abbrev = "PL!SP", color = "#FFD900", shortname = "",}, ["Liberal Popular Alliance"] = {abbrev = "", color = "#3366FF", shortname = "",}, ["Liberal Progressive Party (Costa Rica)"] = {abbrev = "PLP", color = "#ff7300", shortname = "",}, ["Liberal-Radical Party"] = {abbrev = "", color = "#ffcc00", shortname = "Liberal-Radical",}, ["Liberal Reform Party (Australia)"] = {abbrev = "", color = "#00CED1", shortname = "Liberal Reform",}, ["Liberal Reform Party (Czech Republic)"] = {abbrev = "LiRA", color = "yellow", shortname = "",}, ["Liberal Reformist Party (Belgium)"] = {abbrev = "PRL", color = "blue", shortname = "",}, ["Liberal Reformist Party (Dominican Republic)"] = {abbrev = "", color = "#32cd32", shortname = "",}, ["Liberal Reformist Party (Puerto Rico)"] = {abbrev = "", color = "#B9245D", shortname = "",}, ["Liberal Reformist Party (Romania)"] = {abbrev = "", color = "#1A92D0", shortname = "",}, ["Liberal Reformist Party (Spain)"] = {abbrev = "", color = "#13CED2", shortname = "Liberal Reformist",}, ["Liberal Regenerator Party"] = {abbrev = "", color = "#1935D0", shortname = "",}, ["Liberal–Republican Coalition (Spain)"] = {abbrev = "", color = "#B1855B", shortname = "",}, ["Liberal Republican Party (Turkey)"] = {abbrev = "", color = "#348AC9", shortname = "",}, ["Liberal Republican Party (US)"] = {abbrev = "", color = "#FF69B4", shortname = "Liberal Republican",}, ["Liberal Republican Right"] = {abbrev = "DLR", color = "#4EC766", shortname = "",}, ["Liberal Samajbadi Party"] = {abbrev = "", color = "yellow", shortname = "",}, ["Liberal Socialist Party (Singapore)"] = {abbrev = "LSP", color = "#EE5533", shortname = "",}, ["Liberal Socialist Party (Switzerland)"] = {abbrev = "PLSS", color = "#F0D90B", shortname = "",}, ["Liberal Socialists Party (Egypt)"] = {abbrev = "", color = "#00EE00", shortname = "",}, ["Liberal State Party"] = {abbrev = "", color = "#5A5CBD", shortname = "",}, ["Liberal Swedish Party"] = {abbrev = "", color = "Blue", shortname = "",}, ["Liberal Unification Party"] = {abbrev = "", color = "#013792", shortname = "Liberal Unification",}, ["Liberal Union (Australia)"] = {abbrev = "", color = "#0000FF", shortname = "Liberal Union",}, ["Liberal Union (Germany)"] = {abbrev = "LV", color = "#EEDC82", shortname = "",}, ["Liberal Union (Italy)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal Union",}, ["Liberal Union (Netherlands)"] = {abbrev = "LU", color = "#5873DF", shortname = "",}, ["Liberal Union (Spain, 1983)"] = {abbrev = "", color = "#1E90FF", shortname = "",}, ["Liberal Union (Spain)"] = {abbrev = "", color = "#FFD700", shortname = "",}, ["Liberal Union–Brătianu"] = {abbrev = "UL–B", color = "#FFDD00", shortname = "",}, ["Liberal Union of Lithuania"] = {abbrev = "LLS", color = "#E8CA58", shortname = "",}, ["Liberal Unionist Party"] = {abbrev = "LibU", color = "#2061A2", shortname = "Liberal Unionist",}, ["Liberal Unity"] = {abbrev = "", color = "#FFD300", shortname = "",}, ["Liberal Vannin Party"] = {abbrev = "", color = "#FA8000", shortname = "Liberal Vannin",}, ["Liberal-Labour (UK)"] = {abbrev = "Lib-Lab", color = "orange", shortname = "",}, ["Liberal-Labour"] = {abbrev = "", color = "orange", shortname = "",}, ["Liberal–Labour (New Zealand)"] = {abbrev = "", color = "#FFA500", shortname = "Liberal–Labour",}, ["Liberal-Social Union"] = {abbrev = "LSU", color = "#50C878", shortname = "",}, ["Liberal–Socialist Kartels"] = {abbrev = "", color = "#800080", shortname = "Liberal–Socialist",}, ["Liberal/Country coalition"] = {abbrev = "", color = "#0047AB", shortname = "",}, ["Liberal/National coalition"] = {abbrev = "", color = "#0047AB", shortname = "",}, ["Liberal/NCP coalition"] = {abbrev = "", color = "#0047AB", shortname = "",}, ["Liberal"] = {abbrev = "", color = "#FFFF00", shortname = "",}, -- Generic color, not a party color; specify the actual party ["Liberalism in the Netherlands"] = {abbrev = "", color = "#e7cf25", shortname = "",}, ["Liberalism"] = {abbrev = "", color = "#FFFF00", shortname = "Liberal",}, ["Liberals (Finland)"] = {abbrev = "", color = "gold", shortname = "Liberals",}, ["Liberals (Sweden)"] = {abbrev = "L", color = "#006AB3", shortname = "Liberals",}, ["Liberals for Åland"] = {abbrev = "", color = "#1F66CA", shortname = "",}, ["Liberals for Forests"] = {abbrev = "LFF", color = "#05A593", shortname = "Liberals for Forests",}, ["Liberals of Benidorm"] = {abbrev = "", color = "#359E74", shortname = "",}, ["Liberals of Serbia"] = {abbrev = "LS", color = "#FF4F00", shortname = "",}, ["Liberals' Movement (Lithuania)"] = {abbrev = "LRLS", color = "#F48100", shortname = "",}, ["Liberals, Democrats and Radicals"] = {abbrev = "LDR", color = "Gold", shortname = "",}, ["Liberate the People"] = {abbrev = "YAW", color = "#FF1493", shortname = "",}, ["Liberation Rally"] = {abbrev = "", color = "#CD7F32", shortname = "",}, ["Liberation Movement (Serbia)"] = {abbrev = "O", color = "#18478e", shortname = "",}, ["Liberator Party (Brazil)"] = {abbrev = "", color = "#F9AF1E", shortname = "",}, ["Liberia Destiny Party"] = {abbrev = "LDP", color = "#BEC2CB", shortname = "",}, ["Liberia National Union"] = {abbrev = "LNU", color = "#2E7286", shortname = "",}, ["Liberia Restoration Party"] = {abbrev = "LRP", color = "#008000", shortname = "",}, ["Liberia Transformation Party"] = {abbrev = "LTP", color = "#330104", shortname = "",}, ["Liberian Action Party"] = {abbrev = "LAP", color = "#00FFFF", shortname = "",}, ["Liberian People's Party"] = {abbrev = "LPP", color = "#DC143C", shortname = "",}, ["Libertair, Direct, Democratisch"] = {abbrev = "LDD", color = "#6DCFF6", shortname = "",}, ["Libertarian Left (Chile)"] = {abbrev = "", color = "#451255", shortname = "",}, ["Libertarian Movement (Costa Rica)"] = {abbrev = "PML", color = "#DC143C", shortname = "",}, ["Libertarian Movement Party"] = {abbrev = "", color = "#BA151B", shortname = "",}, ["Libertarian Party (Netherlands)"] = {abbrev = "", color = "#1170ce", shortname = "",}, ["Libertarian Party (Spain)"] = {abbrev = "", color = "#C9A900", shortname = "",}, ["Libertarian Party (Switzerland)"] = {abbrev = "", color = "#FFD700", shortname = "",}, ["Libertarian Party (US)"] = {abbrev = "LI", color = "#FED105", shortname = "Libertarian",}, ["Libertarian Party (UK)"] = {abbrev = "", color = "#FCC820", shortname = "Libertarian",}, ["Libertarian Party of Australia"] = {abbrev = "", color = "#E5C601", shortname = "",}, ["Libertarian Party of Canada"] = {abbrev = "", color = "#F2BA00", shortname = "",}, ["Libertarian Party of South Africa"] = {abbrev = "", color = "#BE9F4D", shortname = "",}, ["Libertarianz"] = {abbrev = "", color = "#09296B", shortname = "",}, ["Libertas Estonia"] = {abbrev = "", color = "#0000FF", shortname = "",}, ["Libertas France"] = {abbrev = "", color = "#003366", shortname = "Libertas",}, ["Libertas Ireland"] = {abbrev = "", color = "#3333CC", shortname = "Libertas",}, ["Libertas United Kingdom"] = {abbrev = "", color = "#900020", shortname = "Pro-Democracy: Libertas.eu",}, ["Libertas.eu"] = {abbrev = "Lib.eu", color = "#2c296e", shortname = "",}, ["Liberties, Independents, Overseas and Territories"] = {abbrev = "", color = "#38D4C7", shortname = "LIOT",}, ["Liberty (political party, Palestine)"] = {abbrev = "", color = "#C69F14", shortname = "",}, ["Liberty (political party)"] = {abbrev = "", color = "#1882C5", shortname = "Volia",}, ["Liberty and Lawfulness"] = {abbrev = "WiP", color = "grey", shortname = "",}, ["Liberty and Refoundation"] = {abbrev = "", color = "#8B0000", shortname = "Libre",}, ["Liberty GB"] = {abbrev = "", color = "#000168", shortname = "",}, ["Liberty Korea Party"] = {abbrev = "", color = "#C9151E", shortname = "Liberty Korea",}, ["Liberty Party (Liberia)"] = {abbrev = "LP", color = "#FFD600", shortname = "",}, ["Liberty Party (US, 1932)"] = {abbrev = "", color = "#00DDDD", shortname = "Liberty",}, ["Liberty Party (US)"] = {abbrev = "", color = "#00DDDD", shortname = "Liberty",}, ["Liberty Republican Party"] = {abbrev = "", color = "#009944", shortname = "",}, ["Liberty Unification Party"] = {abbrev = "", color = "#E12F33", shortname = "Liberty Unification",}, ["Liberty Union Party"] = {abbrev = "", color = "#D6FF33", shortname = "Liberty Union",}, ["Liberty, Worth Voting For"] = {abbrev = "", color = "#DDDDDD", shortname = "Liberty",}, ["Libra Party"] = {abbrev = "", color = "#F8D308", shortname = "",}, ["Libre (Guatemala)"] = {abbrev = "", color = "#3467A1", shortname = "Libre",}, ["Libres"] = {abbrev = "", color = "#194955", shortname = "",}, ["Lider (political party)"] = {abbrev = "", color = "#00AFF0", shortname = "",}, ["Liepāja Party"] = {abbrev = "", color = "#50A640", shortname = "",}, ["Life – National Party"] = {abbrev = "Život–NS", color = "#032F67", shortname = "",}, ["Life and Liberty Party"] = {abbrev = "", color = "black", shortname = "Life and Liberty",}, ["Liga Veneta"] = {abbrev = "", color = "#0030AA", shortname = "",}, ["LiGanDo"] = {abbrev = "", color = "#02A24A", shortname = "",}, ["Light Blue and White Union"] = {abbrev = "", color = "blue", shortname = "",}, ["Light of Faith (political party)"] = {abbrev = "", color = "#10C8DF", shortname = "Yiman Nuru",}, ["Ligue du Sud"] = {abbrev = "LS", color = "#404040", shortname = "",}, ["Likud Yisrael Beiteinu"] = {abbrev = "", color = "#1f5aa5", shortname = "",}, ["Likud"] = {abbrev = "", color = "#1f5aa5", shortname = "",}, ["Linares First"] = {abbrev = "", color = "#1F1715", shortname = "",}, ["Lincoln Democratic Labour Association"] = {abbrev = "", color = "#FF6600", shortname = "Democratic Labour",}, ["Lincolnshire Independents"] = {abbrev = "", color = "#000000", shortname = "Lincolnshire Independent",}, ["Linese Alternative"] = {abbrev = "", color = "#0CB7F2", shortname = "",}, ["Lingkod Taguig"] = {abbrev = "", color = "#0051B0", shortname = "",}, ["Linyon Demokratik Seselwa"] = {abbrev = "", color = "#2C50A4", shortname = "",}, ["List Burgenland"] = {abbrev = "", color = "#F8D323", shortname = "",}, ["List Dedecker"] = {abbrev = "", color = "#000080", shortname = "",}, ["List for Fiume"] = {abbrev = "", color = "#545AA7", shortname = "",}, ["List for Sandžak"] = {abbrev = "LZS", color = "#307A4D", shortname = "",}, ["List for Trieste"] = {abbrev = "", color = "#4CBB17", shortname = "",}, ["List of Decency"] = {abbrev = "", color = "#CC00CC", shortname = "",}, ["List of Marjan Šarec"] = {abbrev = "LMŠ", color = "#005AAB", shortname = "",}, ["Lists of Slavs and Germans"] = {abbrev = "LST", color = "#B00000", shortname = "",}, ["Lista del Apruebo"] = {abbrev = "", color = "#6F4D9A", shortname = "",}, ["Lista Niun Paso Atras"] = {abbrev = "", color = "gold", shortname = "",}, ["Lisu National Development Party"] = {abbrev = "LNDP", color = "#DC0723", shortname = "",}, ["Lithuanian Centre Party"] = {abbrev = "", color = "#0CA13B", shortname = "",}, ["Lithuanian Centre Union"] = {abbrev = "LCS", color = "#D6D40F", shortname = "",}, ["Lithuanian Christian Democratic Party"] = {abbrev = "LKDP", color = "#3D6DBF", shortname = "",}, ["Lithuanian Christian Democrats"] = {abbrev = "", color = "#3333CC", shortname = "",}, ["Lithuanian Citizens' Alliance"] = {abbrev = "LPA", color = "#799B6F", shortname = "",}, ["Lithuanian Democratic Party"] = {abbrev = "LDP", color = "#007272", shortname = "",}, ["Lithuanian Farmers and Greens Union"] = {abbrev = "LVŽS", color = "#00A651", shortname = "",}, ["Lithuanian Green Party"] = {abbrev = "LŽP", color = "#92C83E", shortname = "",}, ["Lithuanian Labour Federation"] = {abbrev = "", color = "#2C6BC7", shortname = "Labour Federation",}, ["Lithuanian Liberty Union"] = {abbrev = "LLS", color = "#FBB800", shortname = "",}, ["Lithuanian List"] = {abbrev = "LS", color = "#810305", shortname = "",}, ["Lithuanian Nationalist and Republican Union"] = {abbrev = "", color = "#FDC52A", shortname = "",}, ["Lithuanian Nationalist Union"] = {abbrev = "LTS", color = "#FFD700", shortname = "",}, ["Lithuanian Peasant Popular Union"] = {abbrev = "", color = "#BBFF02", shortname = "",}, ["Lithuanian Peasants Party"] = {abbrev = "LVP", color = "#BAD759", shortname = "",}, ["Lithuanian People's Party"] = {abbrev = "LLP", color = "#E6AD1E", shortname = "",}, ["Lithuanian Popular Peasants' Union"] = {abbrev = "LVLS", color = "green", shortname = "",}, ["Lithuanian Popular Socialist Democratic Party"] = {abbrev = "LSLDP", color = "", shortname = "",}, ["Lithuanian Regions Party"] = {abbrev = "LRP", color = "#CE2C29", shortname = "",}, ["Lithuanian Russian Union"] = {abbrev = "SRL", color = "red", shortname = "",}, ["Lithuanian Social Democratic Union"] = {abbrev = "LSDS", color = "#901d78", shortname = "",}, ["Lithuanian Union of Political Prisoners and Deportees"] = {abbrev = "LPKTS", color = "#216319", shortname = "",}, ["Livable Netherlands"] = {abbrev = "LN", color = "#FF4400", shortname = "",}, ["Liverpool Community Independents"] = {abbrev = "", color = "#800000", shortname = "Community Independents",}, ["Liverpool Independent Party"] = {abbrev = "", color = "#DDDDDD", shortname = "",}, ["Liverpool Protestant Party"] = {abbrev = "", color = "#F88017", shortname = "Protestant",}, ["Living Ourense"] = {abbrev = "", color = "#0082CD", shortname = "",}, ["LIVRE"] = {abbrev = "", color = "#C2D216", shortname = "",}, ["Llais Gwynedd"] = {abbrev = "", color = "#006400", shortname = "",}, ["Llantwit First Independents"] = {abbrev = "", color = "#999999", shortname = "Llantwit First Independent",}, ["Lliures"] = {abbrev = "", color = "#E75C73", shortname = "",}, ["Lloc Espai Independent"] = {abbrev = "", color = "#E6302B", shortname = "",}, ["LMP – Hungary's Green Party"] = {abbrev = "LMP", color = "#36CA8B", shortname = "",}, ["Lower Hutt Citizens' Association"] = {abbrev = "", color = "#B8BFFE", shortname = "Citizens'",}, ["Local Alliance"] = {abbrev = "", color = "#000000", shortname = "",}, ["Local and Rural Issues"] = {abbrev = "", color = "#DDDDDD", shortname = "",}, ["Local Danish parties"] = {abbrev = "", color = "#C7C3BF", shortname = "",}, ["Local Education Action by Parents"] = {abbrev = "", color = "#CCCCCC", shortname = "",}, ["Local Option"] = {abbrev = "", color = "silver", shortname = "",}, ["Local Progressive Party"] = {abbrev = "", color = "#FF4500", shortname = "",}, ["Localist Bloc of Melilla"] = {abbrev = "", color = "#217118", shortname = "",}, ["Localist"] = {abbrev = "", color = "#bb00bb", shortname = "",}, ["Localist groups (Hong Kong)"] = {abbrev = "", color = "#002366", shortname = "Localist",}, ["Loktantrik Morcha (Rajasthan)"] = {abbrev = "LM", color = "#FF1D15", shortname = "",}, ["Lok Bhalai Party"] = {abbrev = "LBP", color = "#386059", shortname = "",}, ["Lok Insaaf Party"] = {abbrev = "LIP", color = "Maroon", shortname = "",}, ["Lok Janshakti Party (Ram Vilas)"] = {abbrev = "LJP(RV)", color = "#5B006A", shortname = "",}, ["Lok Janshakti Party"] = {abbrev = "LJP", color = "#0093DD", shortname = "",}, ["Lok Kalayankari Janata Party Nepal"] = {abbrev = "", color = "#FFEFD5", shortname = "Lok Kalayankari Janata Party",}, ["Lok Paritran"] = {abbrev = "LKPT", color = "#f3c0f3", shortname = "",}, ["Lok Raj Party Himachal Pradesh"] = {abbrev = "LRP", color = "indigo", shortname = "",}, ["Lok Rajya Party"] = {abbrev = "", color = "#9900FF", shortname = "",}, ["Lok Satta Party"] = {abbrev = "LSP", color = "#FF1493", shortname = "",}, ["Lok Sewak Dal"] = {abbrev = "", color = "#0000FF", shortname = "",}, ["Lok Sewak Sangh"] = {abbrev = "", color = "#00FF00", shortname = "",}, ["Lok Shakti"] = {abbrev = "", color = "#336600", shortname = "",}, ["Lokdal"] = {abbrev = "LKD", color = "#00FF66", shortname = "",}, ["Lokpriya Samaj Party"] = {abbrev = "LPSP", color = "#66FF99", shortname = "",}, ["Loktanter Suraksha Party"] = {abbrev = "LSP", color = "#FF9900", shortname = "",}, ["Loktantra Suraksha Party"] = {abbrev = "", color = "#FFFF00", shortname = "",}, ["Loktantrik Jan Samta Party"] = {abbrev = "LJSP", color = "grey", shortname = "",}, ["Loktantrik Janata Dal"] = {abbrev = "LJD", color = "#2E8B57", shortname = "",}, ["Loktantrik Janata Party (Secular)"] = {abbrev = "LJP(S)", color = "pink", shortname = "",}, ["Loktantrik Samajwadi Party, Nepal"] = {abbrev = "LSWP", color = "#c7f884 ", shortname = "Loktantrik Samajwadi",}, ["Londependence Party"] = {abbrev = "", color = "#751056", shortname = "Londependence",}, ["London Real Party"] = {abbrev = "", color = "#af0823", shortname = "London Real",}, ["London Socialist Alliance"] = {abbrev = "", color = "red", shortname = "London Socialist",}, ["Longthornton and Tamworth Residents Association"] = {abbrev = "", color = "#000000", shortname = "Longthornton and Tamworth Residents",}, ["Lord Fusituʻa"] = {abbrev = "", color = "#D3D3D3", shortname = "",}, ["Lord Nuku"] = {abbrev = "", color = "#D3D3D3", shortname = "",}, ["Lord Speaker"] = {abbrev = "", color = "black", shortname = "",}, ["Lord Tuʻiʻafitu"] = {abbrev = "", color = "#D3D3D3", shortname = "",}, ["Lords Spiritual"] = {abbrev = "", color = "#7F00FF", shortname = "",}, ["Loss"] = {abbrev = "", color = "#999999", shortname = "",}, ["Loughton Residents Association"] = {abbrev = "", color = "#50C878", shortname = "Loughton Residents",}, ["Love Malaysia Party"] = {abbrev = "", color = "#DAE2EA", shortname = "",}, ["Love Party (Italy)"] = {abbrev = "", color = "#FF91AF", shortname = "",}, ["Love Sabah Party"] = {abbrev = "", color = "#FB5B47", shortname = "",}, ["Love, Faith, Hope"] = {abbrev = "", color = "#BC413C", shortname = "",}, ["Lower Cinca Between Everyone"] = {abbrev = "ETXSBC", color = "#F57D02", shortname = "",}, ["Lower Minho Independents"] = {abbrev = "", color = "#824941", shortname = "",}, ["Loyalty and Dignity"] = {abbrev = "", color = "#1e90ff", shortname = "",}, ["Luen Wo United"] = {abbrev = "", color = "#000000", shortname = "",}, ["Lugonovo"] = {abbrev = "", color = "#E5432C", shortname = "",}, ["Luhansk Economic Union"] = {abbrev = "LES", color = "#76C5F0", shortname = "",}, ["Lung Mun Concern Group"] = {abbrev = "LMCG", color = "#11A0B4", shortname = "",}, ["Lutte Ouvrière"] = {abbrev = "LO", color = "#AA0000", shortname = "",}, ["Luxembourg Socialist Workers' Party"] = {abbrev = "LSAP", color = "#F10035", shortname = "",}, ["LXE"] = {abbrev = "", color = "#47B9AF", shortname = "",}, ["Lytvyn Bloc"] = {abbrev = "", color = "#01B8A4", shortname = "",}, ["Lytyn Bloc"] = {abbrev = "", color = "Green", shortname = "",}, } return { full = full, alternate = alternate, } a2f7777ecc352423e77ec55288d0f529e1eb84d3 Template:Organization infoboxes 10 1479 2814 2023-09-27T23:17:19Z w>Jonesey95 0 fix redirect wikitext text/x-wiki {{Navbox | name = Organization infoboxes | state = {{{state<includeonly>|expanded</includeonly>}}} | bodyclass = hlist | title = [[Wikipedia:Template index|Wikipedia templates]]: [[organization]] [[Template:Infobox|infoboxes]] | above = [[Wikipedia:Manual of Style/Infoboxes]] | group1 = General | list1 = * {{Tl|Infobox organization}} * {{Tl|Infobox official post}} * {{tl|Infobox criminal organization}} * {{tl|Infobox fictional organisation}} | group2 = {{longitem|Government<br/>and politics}} | list2 = * {{Tl|Infobox government}} * {{Tl|Infobox government agency}} * {{Tl|Infobox legislature}} * {{Tl|Infobox political party}} * {{Tl|Infobox court}} * {{Tl|Infobox detention facility}} * {{tl|Infobox fire department}} * {{Tl|Infobox law enforcement agency}} * {{Tl|Infobox space agency}} | group3 = Military | list3 = * {{Tl|Infobox national military}} * {{Tl|Infobox military unit}} * {{tl|Infobox military rank}} * {{Tl|Infobox military gear}} | group4 = Religion | list4 = * {{Tl|Infobox religious group}} * {{Tl|Infobox religion}} * {{Tl|Infobox diocese}} * {{Tl|Infobox church}} * {{Tl|Infobox monastery}} | group5 = People | list5 = * {{Tl|Infobox ethnic group}} * {{Tl|Infobox caste}} * {{Tl|Infobox clan}} * {{Tl|Infobox family}} * {{Tl|Infobox iwi}} * {{Tl|Infobox hereditary title}} * {{Tl|Infobox monarchy}} * {{Tl|Infobox officeholder}} * {{Tl|Infobox tribe}} | group6 = {{longitem|Typically<br/>non-profit}} | list6 = * {{tl|Infobox hospital}} * {{Tl|Infobox institute}} * {{Tl|Infobox laboratory}}{{smallsup|1}} * {{tl|Infobox museum}} * {{Tl|Infobox observatory}} * {{Tl|Infobox school}} * {{tl|Infobox school district}} * {{Tl|Infobox university}}{{smallsup|2}} | group7 = Publications | list7 = * {{Tl|Infobox journal}} * {{Tl|Infobox magazine}} * {{Tl|Infobox newspaper}} * {{Tl|Infobox publisher}} | group8 = Business | list8 = * {{Tl|Infobox company}} * {{tl|Infobox brewery}} * {{Tl|Infobox law firm}} * {{tl|Infobox restaurant}} * {{tl|Infobox website}} – ''type of business or publication'' | group9 = Distinctions | list9 = * {{Tl|Infobox order}} * {{Tl|Infobox fraternity}} * {{Tl|Infobox Grand Lodge}} | group10 = Subtemplates | list10 = * '''Coordinates'''&nbsp;{{Tl|coord}} * '''Dates''' ** {{Tl|start date}}}—for {{para|established}}, {{para|founded}}, {{para|opened}} etc. ** {{Tl|end date}}}—for {{para|dissolved}}, {{para|defunct}} * '''Lists''' **{{tl|plainlist}} ** {{tl|flatlist}} ** {{tl|unbulleted list}} * '''Non-English text'''&nbsp;{{Tl|lang}} * '''Website''' ** {{tl|URL}} ** {{tl|Official URL}} ** {{tl|Official website}} * '''Documentation''' ** &nbsp;{{Tl|mf-adr}}}—Address ** &nbsp;{{Tl|UF-hcard-org}}—[[Microformat]]/metadata | below = * {{smallsup|1}} or research institution * {{smallsup|2}} or college * [[:Category:Infobox templates|Category]] * [[Help:Infobox|Help]] * [[Wikipedia:List of infoboxes|List of infoboxes]] }}<noinclude>{{documentation}}</noinclude> 8e81fe7179216c1823e098fa600be889f26cbeba Template:Infobox school/doc 10 1482 2817 2023-09-28T04:19:43Z w>Jonesey95 0 /* Basic syntax */ provide example wikitext text/x-wiki {{Documentation subpage}} <!-- Categories where indicated at the bottom of this page, please; interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{High-use|demo={{ROOTPAGENAME}}}} {{Auto short description}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Infobox mapframe|Module:Coordinates|Module:Check for clobbered parameters|Module:Check for unknown parameters}} {{Tl|Infobox school}} can be used for adding at-a-glance comparative information to articles about schools, other than school districts, universities or colleges (see {{Tl|Infobox school district}}, {{Tl|Infobox university}} and [[:Category:Universities and colleges infobox templates|related infobox templates]] for higher-education facilities). Examples of use for this template would include primary and secondary schools. == Usage == {{See also|Wikipedia:WikiProject Schools/Article advice#Selecting the correct Infobox}} === Basic syntax === To add an empty infobox with the most common options, you can copy and paste the blank template below, but be sure to remove any unused parameters. You can add more information by copying any relevant parameters available from the [[#Full syntax|full syntax]]. <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox school | name = | native_name = <!-- {{lang|language code|name in native language}}--> | image = | alt = | caption = | motto = <!-- or | mottoes = --> | motto_translation = | location = | country = | coordinates = <!-- {{Coord|LAT|LON|display=inline,title}} --> | other_name = <!-- or | other_names = --> | former_name = <!-- or | former_names = --> | type = | religious_affiliation = | established = <!-- {{Start date|YYYY|MM|DD|df=yes}} --> | founder = <!-- or | founders = --> | closed = <!-- {{End date|YYYY|MM|DD|df=yes}} --> | school_board = | district = | authority = <!-- or | educational_authority = or | local_authority = --> | oversight = <!-- use | oversight_label = to override the default label --> | principal = <!-- use | principal_label = to override the default label --> | head = <!-- use | head_label = to override the default label --> | staff = | faculty = | grades = <!-- use | grades_label = to override the default label --> | gender = <!-- use | gender_label = to override the default label --> | age_range = <!-- or | lower_age = and | upper_age = --> | enrollment = <!-- or | enrolment = or | students = or | pupils = or | roll = --> | language = | campus_size = | campus_type = | colors = <!-- or | colours = --> | accreditation = <!-- or | accreditations = --> | publication = | newspaper = | yearbook = | affiliation = <!-- or | affiliations = --> | website = <!-- {{URL|school.url}} or {{URL|1=school.url}} if the url contains an equals sign --> | footnotes = }} </syntaxhighlight> === Additional principals === Per talk page consensus, do not use any of these fields to add "Athletic Director" or titles starting with "Assistant", "Deputy", or "Vice". <syntaxhighlight lang="wikitext" style="overflow:auto"> | principal1 = <!-- use | principal_label1 = to override the default label --> | principal2 = <!-- use | principal_label2 = to override the default label --> | principal3 = <!-- use | principal_label3 = to override the default label --> | principal4 = <!-- use | principal_label4 = to override the default label --> </syntaxhighlight> <syntaxhighlight lang="wikitext" style="overflow:auto"> | head_name2 = | head2 = | r_head = <!-- use | r_head_label = to override the default label --> </syntaxhighlight> === Additional free text fields === Per talk page consensus, do not use any of these fields to add "Athletic Director" or titles starting with "Assistant", "Deputy", or "Vice". <syntaxhighlight lang="wikitext" style="overflow:auto"> | free_label = | free_text = | free_label1 = | free_text1 = | free_label2 = | free_text2 = | free_label3 = | free_text3 = | free_label4 = | free_text4 = | free_label5 = | free_text5 = </syntaxhighlight> === Full syntax === {{Parameter names example | name | native_name | latin_name | logo | logo_size | logo_alt | seal_image | seal_size | seal_alt | image | image_size | alt | caption | motto | motto_translation | address | location | region | city | county | state | province | postcode={{{postcode}}} ''or'' {{{postalcode}}} ''or'' {{{zipcode}}} | country | country1 | coordinates={{Coord|0|0}} | coordinates_footnotes | mapframe-zoom=0 | other_name={{{other_name}}} ''or''&nbsp;{{{other_names}}} | former_name={{{former_name}}} ''or''&nbsp;{{{former_names}}} | type | religious_affiliation | denomination | patron | established={{{established}}} ''or''&nbsp;{{{founded}}} ''or''&nbsp;{{{opened}}} | founder={{{founder}}} ''or''&nbsp;{{{founders}}} | status | closed | locale | sister_school | school_board | district | us_nces_district_id | local_authority | educational_authority={{{educational_authority}}} ''or''&nbsp;{{{authority}}} | category_label | category | oversight_label | oversight | trust | authorizer | superintendent | trustee | specialist={{{specialist}}} ''or''&nbsp;{{{specialists}}} | session | school_number | school_code | urn | MOE | ofsted | ceeb | us_nces_school_id | president | chair_label | chair | chairman_label | chairman | chairperson_label | chairperson | dean | administrator | rector | director | principal_label | principal | principal_label1 | principal1 | principal_label2 | principal2 | principal_label3 | principal3 | principal_label4 | principal4 | campus_director | headmistress | headmaster | head_of_school | head_teacher={{{head_teacher}}} ''or''&nbsp;{{{headteacher}}} | executive_headteacher | acting_headteacher | head_label | head | head_name2 | head2 | r_head_label | r_head | officer_in_charge | chaplain | staff | faculty | teaching_staff | employees | key_people | grades_label | grades | years | years_taught | nursery_years_taught | primary_years_taught | secondary_years_taught | gender_label | gender | age_range={{{age_range}}} ''or'' {{{lower_age}}}&nbsp;to&nbsp;{{{upper_age}}} | enrollment={{{enrollment}}} ''or''&nbsp;{{{enrolment}}} ''or''&nbsp;{{{students}}} ''or''&nbsp;{{{pupils}}} ''or''&nbsp;{{{roll}}} | enrollment_as_of={{{enrollment_as_of}}} ''or''&nbsp;{{{enrolment_as_of}}} ''or''&nbsp;{{{students_as_of}}} ''or''&nbsp;{{{pupils_as_of}}} | capacity | sixth_form_students | grade_preK | gradeK | grade1 | grade2 | grade3 | grade4 | grade5 | grade6 | grade7 | grade8 | grade9 | grade10 | grade11 | grade12 | grade13 | other | other_grade_label | other_grade_enrollment | other_grade_label_1 | other_grade_enrollment_1 | other_grade_label_2 | other_grade_enrollment_2 | international_students | classes | average_class_size | ratio | system | classes_offered | language | schedule_type | schedule | hours_in_day | classrooms | campuses | campus | campus_size | area | campus_type | houses | student_union_label | student_union | colors={{{colors}}} ''or''&nbsp;{{{colours}}} | slogan | song | fight_song | athletics | athletics_conference | sports | mascot | nickname | teams_label | teams | team_name | rival={{{rival}}} ''or''&nbsp;{{{rivals}}} | accreditation={{{accreditation}}} ''or''&nbsp;{{{accreditations}}} | USNWR_ranking | national_ranking | test_name | test_average | bar_pass_rate | decile | publication | newspaper | yearbook | products | endowment | budget | fees | annual_tuition | tuition | revenue | communities | feeder_schools | feeder_to | graduates_year | graduates | affiliation={{{affiliation}}} ''or''&nbsp;{{{affiliations}}} | alumni | alumni_name | nobel_laureates | information | free_label | free_text | free_label1 | free_text1 | free_label2 | free_text2 | free_label3 | free_text3 | free_label4 | free_text4 | free_label5 | free_text5 | website | footnotes | picture | picture_caption | picture2 | picture_caption2 | module | lastupdate }} To add an empty infobox with all options, you can copy and paste the blank template below, but be sure to remove any unused parameters. Alternatively, it may be easier to use the [[#Basic syntax|basic syntax]] and then add more information by copying any relevant parameters from the template below. <small>(Note for new editors: '''this is a list of all parameters available in this template'''. Adding your own will not work and will flag up as an unsupported parameter. You can discuss any parameter concerns on the [[Template_talk:Infobox_school|talk page]]. Don't forget, you can make use of the [[#Additional free text fields|additional free text fields]])</small> <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox school | name = | native_name = | latin_name = | logo = | logo_size = | logo_alt = | seal_image = | seal_size = | seal_alt = | image = | image_size = | alt = | caption = | motto = <!-- or | mottoes = --> | motto_translation = | address = | location = | region = | city = <!-- or | town = --> | county = | state = | province = | postcode = <!-- or | postalcode = --> | zipcode = | country = | country1 = | coordinates = <!-- {{Coord|LAT|LON|display=inline,title}} --> | coordinates_footnotes = | other_name = <!-- or | other_names = --> | former_name = <!-- or | former_names = --> | schooltype = | fundingtype = | type = | religious_affiliation = | denomination = | patron = | established = <!-- {{Start date|YYYY|MM|DD|df=yes}} --> | founder = <!-- or | founders = --> | status = | closed = <!-- {{End date|YYYY|MM|DD|df=yes}} --> | locale = | sister_school = | school_board = | district = | us_nces_district_id = | local_authority = | educational_authority = <!-- or | authority = --> | category = <!-- use | category_label = to override the default label --> | oversight = <!-- use | oversight_label = to override the default label --> | trust = | authorizer = | superintendent = | trustee = | specialist = <!-- or | specialists = --> | session = | school_number = | school_code = | urn = | MOE = | ofsted = | ceeb = | us_nces_school_id = | president = | chair = <!-- use | chair_label = to override the default label --> | chairman = <!-- use | chairman_label = to override the default label --> | chairperson = <!-- use | chairperson_label = to override the default label --> | dean = | administrator = | rector = | director = | principal = <!-- use | principal_label = to override the default label --> | campus_director = | headmistress = | headmaster = | head_of_school = | head_teacher = <!-- or | headteacher = --> | executive_headteacher = | acting_headteacher = | head = <!-- use | head_label = to override the default label --> | r_head = <!-- use | r_head_label = to override the default label --> | officer_in_charge = | chaplain = | staff = | faculty = | teaching_staff = | employees = | key_people = | grades = <!-- use | grades_label = to override the default label --> | years = | years_taught = <!-- use | nursery_years_taught =, | primary_years_taught =, | secondary_years_taught = for additional information --> | gender = <!-- use | gender_label = to override the default label --> | age_range = <!-- or | lower_age = and | upper_age = --> | lower_age = <!-- or | age_range = --> | upper_age = <!-- or | age_range = --> | enrollment = <!-- or | enrolment = or | students = or | pupils = or | roll = --> | enrollment_as_of = <!-- or | enrolment_as_of = or | students_as_of = or | pupils_as_of = --> | capacity = | sixth_form_students = | grade_preK = | gradeK = | grade1 = | grade2 = | grade3 = | grade4 = | grade5 = | grade6 = | grade7 = | grade8 = | grade9 = | grade10 = | grade11 = | grade12 = | grade13 = | other = <!-- use | other_grade_label = to override the default label --> | other_grade_label_1 = | other_grade_enrollment_1 = | other_grade_label_2 = | other_grade_enrollment_2 = | international_students = | classes = | average_class_size = | ratio = | system = | classes_offered = | language = | schedule_type = | schedule = | hours_in_day = | classrooms = | campuses = | campus = | campus_size = | area = | campus_type = | houses = | student_union = <!-- use | student_union_label = to override the default label --> | colors = <!-- or | colours = --> | slogan = | song = | fight_song = | athletics = | athletics_conference = | sports = | mascot = | nickname = | teams = <!-- use | teams_label = to override the default label --> | team_name = | rival = <!-- or | rivals = --> | accreditation = <!-- or | accreditations = --> | USNWR_ranking = | national_ranking = | test_name = | test_average = | bar_pass_rate = | decile = | publication = | newspaper = | yearbook = | products = | endowment = | budget = | fees = | tuition = | annual_tuition = | revenue = | communities = | feeder_schools = | feeder_to = | graduates = | graduates_year = | affiliation = <!-- or | affiliations = --> | alumni = | alumni_name = | nobel_laureates = | information = <!-- do not enter phone numbers or email addresses --> | website = <!-- {{URL|school.url}} or {{URL|1=school.url}} if the url contains an equals sign --> | footnotes = | picture = | picture_caption = | picture2 = | picture_caption2 = }} </syntaxhighlight> === Embedding === Any infobox which supports embedding can be embedded within infobox school, using the <code>module</code> parameter. For example, to embed {{Tl|Infobox NRHP}}, use the following syntax <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox school | name = Wikipedia High School | image = ... ... | module = {{Infobox NRHP | embed = yes | name = Wikipedia High School | nrhp_type = nhl | image = | caption = ... }} }} </syntaxhighlight> {{Clear}} == Parameters == <!-- explain what this template's parameters do -- if no params, delete the definition --> {| class="wikitable" style="margin:auto; width:100%" ! style="text-align: left" | Parameter ! style="text-align: left" | Description |- ! name | Name of the school. If left blank, the pagename will display. |- ! native_name | Name of the school in its native language, if different from its English name. |- ! latin_name | Latin name of the school, if applicable. |- ! logo | rowspan=3 | Logo file name with no wikimarkup, e.g. ''Logo.png'', size in pixels, e.g. ''150px'', alt text for visually impaired readers who cannot see it; see [[WP:ALT]]. |- ! logo_size |- ! logo_alt |- ! seal_image | rowspan=3 | Seal file name with no wikimarkup, e.g. ''Seal.png'', size in pixels, e.g. ''150px'', alt text for visually impaired readers who cannot see it; see [[WP:ALT]]. |- ! seal_size |- ! seal_alt |- ! image | rowspan=4 | Image file name with no wikimarkup, e.g. ''MySchool.png'', size in pixels, e.g. ''150px'', alt text for visually impaired readers who cannot see it; see [[WP:ALT]], and caption text which is displayed below the image; see [[WP:CAPTION]]. |- ! image_size |- ! alt |- ! caption |- ! address | Street address on which the school is located. Causes the section heading to appear as "Address" instead of "Location". |- ! location | Location, could include address; separate lines with <nowiki><br /></nowiki>. |- ! region | Region in which the school is located. |- ! city <br /> town | City, town or village in which the school is located. |- ! county | County or Local Government Area in which the school is located. |- ! state | State in which the school is located. |- ! province | Province in which the school is located. |- ! postcode <br /> postalcode | The school's postcode. '''postalcode''' provides identical results. |- ! zipcode | The school's zip code. |- ! country | Country in which the school is located (plain text; do not use flag icons, do not wikilink; see [[WP:SCH/AG]] and [[WP:OVERLINK]]). |- <!--! country1 | Country, in [[ISO 3166-1 alpha-3]] form<br>Useful for stating a semi-autonomous area and the mother country |AUS, GER, USA --> ! coordinates | [[Geographic coordinate system|Geographic coordinates]]. Use {{Tl|Coord}} with ''display=inline,title''; for example: <code><nowiki>{{Coord|dd|mm|ss|N/S|dd|mm|ss|E/W|display=inline,title}}</nowiki></code>. <code>type:edu</code> is '''automatically added''', unless a different <code>type:</code> is specified. |- ! coordinates_footnotes | Footnotes for '''coordinates'''. |- ! other_name <br /> other_names | Alternate ''current'' name by which the school is known, such as acronyms and abbreviations. If there is more than one, use '''other_names''' instead. |- ! former_name <br /> former_names | Name by which the school used to be known. If there is more than one, use '''former_names''' instead. |- ! schooltype | Type of school. If entered with '''funding type''' or '''type''', will display as ''funding type'', ''schooltype'' or ''type schooltype''. |- ! fundingtype | Funding type of the school. If an article on "''fundingtype'' school" exists, will automatically be linked to it. |- ! type | Type of school; overridden by '''fundingtype'''. |- ! motto <br /> mottoes | The school's motto. If shown in foreign language then use appropriate language template (such as {{Tl|Lang-la}} template for Latin text). If there is more than one, use '''mottoes''' instead. |- ! motto_translation | English translation of the school's motto, if applicable. |- ! religious_affiliation | The school's religious affiliation. |- ! denomination | If a faith school, the [[Religious denomination|denomination]]. |- ! patron | [[Patron saint]] of the school. |- ! established <br /> founded <br /> opened | Date of establishment/founding. Add c. before any approximate dates. Use {{Tl|Start date}} where possible. |- ! founder <br /> founders | Founder of the school. If there is more than one, use '''founders''' instead. |- ! status | Status of the school, if open or not. For US schools, attributes can also be included from the [http://nces.ed.gov/ccd/commonfiles/glossary.asp Common Core of Data (CCD) School and District Glossary] page on the [[National Center for Education Statistics]] (NCES) website. |- ! closed | Date the school closed. Use {{Tl|End date}} where possible. |- ! locale | Locale of the school. |- ! sister_school | The [[sister school]], if any. The main article should clarify the sister's relationship (same management, mutual agreement, other bonds, etc.), give the history of the arrangement and, of course, references. |- ! school_board | [[Board of education|Board]] the school comes under. |- ! district | The [[school district]] of the school. |- ! {{Flagicon|United States}} us_nces_district_id | For US schools only, the District ID which can be found by searching for the school district at the [http://nces.ed.gov/ccd/districtsearch/ Common Core of Data (CCD)] page on the NCES website. Also note that <nowiki>{{</nowiki>[[Template:NCES District ID|NCES District ID]]<nowiki>}}</nowiki> may be useful here. |- ! {{Flagicon|United Kingdom}} local_authority | For UK schools only, the [[local education authority|local authority]]. This can be found by searching for the school at the "[https://get-information-schools.service.gov.uk/ Get information about schools]" page on the [[Gov.uk|GOV.UK]] website for schools in [[England]] and [[Wales]] ("[http://mylocalschool.wales.gov.uk/ My Local School]" page on the [[Welsh Government|GOV.WALES]] website can also be used for schools in Wales), and "[https://education.gov.scot/parentzone/find-a-school Find a school]" page on the [[Scottish Government|GOV.SCOT]] website for schools in [[Scotland]]. |- ! authority | rowspan=2 | Authority the school comes under. |- ! educational_authority |- ! category | rowspan=2 | Category of school. Use '''category_label''' to override the default label "Category". |- ! category_label |- ! oversight | rowspan=2 | Oversight the school comes under. Use '''oversight_label''' to override the default label "Oversight". |- ! oversight_label |- ! trust | If the school is a sponsor led academy or a foundation school it may be part of a trust or foundation. |- ! authorizer | School authorizer. |- ! superintendent | Superintendent of the school. |- ! trustee | Area trustee of the school. |- ! specialist <br /> specialists | Specialist of the school. If there is more than one, use '''specialists''' instead. |- ! session | Session of the school. |- ! school_number | Official number (not for phone number). |- ! school_code | School code, if applicable. |- ! {{Flagicon|England}}{{Flagicon|Wales}} urn | The 6-digit [[Department for Education]] Unique Reference Number (URN) of a school in England and Wales, which can be found by searching for the school at the "[https://get-information-schools.service.gov.uk/ Get information about schools]" page on the [[Gov.uk|GOV.UK]] website ([https://www.gov.uk/government/organisations/ofsted Ofsted] and "[http://mylocalschool.wales.gov.uk/ My Local School]" page on the [[Welsh Government|GOV.WALES]] website can also be used). The field generates a link to the school's information and comparison pages on the GOV.UK website. |- ! {{Flagicon|New Zealand}} MOE | For New Zealand schools only, the [[Ministry of Education (New Zealand)|Ministry of Education]] Institution number. |- ! {{Flagicon|England}} ofsted | Any non-blank text in this field signifies that the school's teaching is inspected by [[Ofsted]], and causes a link to the Ofsted reports page for the school to be generated from the value of the '''urn''' field. |- ! {{Flagicon|United States}} ceeb | For US high schools and post secondary schools only, the [[College Board#CEEB Code|CEEB code]] which can be found at {{URL|http://sat.collegeboard.org/register/sat-code-search}}. |- ! {{Flagicon|United States}} us_nces_school_id | For US schools only, the School ID which can be found by searching for the school at the following respective pages on the NCES website:<br />{{Bulleted list |For public (government funded) schools, use the [http://nces.ed.gov/ccd/schoolsearch/ Common Core of Data (CCD)] page and consider using the <nowiki>{{</nowiki>[[Template:NCES School ID|NCES School ID]]<nowiki>}}</nowiki> template. |For private schools, use the [http://nces.ed.gov/surveys/pss/privateschoolsearch/ Private School Universe Survey (PSS)] page and consider using the <nowiki>{{</nowiki>[[Template:NCES Private School ID|NCES Private School ID]]<nowiki>}}</nowiki> template.}} |- ! president | "President" - first of various fields to describe the head and/or important officials of the school. Use only the parameters applicable to the school. |- ! chair | rowspan=2 | Oversight the school comes under. Use '''chair_label''' to override the default label "Chair". |- ! chair_label |- ! chairman | rowspan=2 | Oversight the school comes under. Use '''chairman_label''' to override the default label "Chairman". |- ! chairman_label |- ! chairperson | rowspan=2 | Oversight the school comes under. Use '''chairperson_label''' to override the default label "Chairperson". |- ! chairperson_label |- ! dean | rowspan="4" | More fields to describe officials of the school. Use only the parameters applicable to the school. |- ! administrator |- ! rector |- ! director |- ! principal | rowspan="10" | Principal(s) of the school. Use '''_label''' parameters to override the default label "Principal". (Per talk page consensus, do not use any of these fields to add "Athletic Director" or titles starting with "Assistant", "Deputy, or "Vice") |- ! principal_label |- ! principal1 |- ! principal_label1 |- ! principal2 |- ! principal_label2 |- ! principal3 |- ! principal_label3 |- ! principal4 |- ! principal_label4 |- ! campus_director | rowspan="7" | More fields to describe officials of the school. Use only the parameters applicable to the school. |- ! headmistress |- ! headmaster |- ! head_of_school |- ! head_teacher <br /> headteacher |- ! executive_headteacher |- ! acting_headteacher |- ! head | rowspan=2 | The name of the school head. For use when the available parameters below aren't applicable to the school. Use '''head_label''' to override the default label "Head teacher". (Per talk page consensus, do not use this field to add "Athletic Director" or titles starting with "Assistant", "Deputy, or "Vice") |- ! head_label |- ! head2 | rowspan=2 | The name of the school head. For use when the available parameters below aren't applicable to the school. Won't display unless '''head_name2''' is also specified. (Per talk page consensus, do not use this field to add "Athletic Director" or titles starting with "Assistant", "Deputy, or "Vice") |- ! head_name2 |- ! r_head | rowspan=2 | The name of the religious head. Use '''r_head_label''' to override the default label "Religious head". |- ! r_head_label |- ! officer_in_charge | rowspan="2" | More fields to describe officials of the school. Use only the parameters applicable to the school. |- ! chaplain |- ! staff | Number of staff. |- ! faculty | Number of faculty. |- ! teaching_staff | Number of teaching staff, other alternative terms are '''employees''' and '''key_people'''. |- ! employees | Number of employees. |- ! key_people | Key people. (Per talk page consensus, do not use this field to add "Athletic Director" or titles starting with "Assistant", "Deputy, or "Vice") |- ! grades | rowspan=2 | Grade levels. Use '''grades_label''' to override the default label "Grades". Can also use '''years''' and '''years_taught'''. |- ! grades_label |- ! years | Years offered. |- ! years_taught | Years taught. |- ! nursery_years_taught | Nursery years taught. |- ! primary_years_taught | Primary years taught. |- ! secondary_years_taught | Secondary years taught. |- ! gender | rowspan=2 | Gender of the students at the school. Use '''gender_label''' to override the default label "Gender". |- ! gender_label |- ! age_range | Age range of students. As an alternative, use '''lower_age''' with or without '''upper_age'''. |- ! lower_age | The lowest age at which a pupil can enter the school. Displayed with or without '''upper_age'''. |- ! upper_age | The age at which students normally leave. Leave this undefined if there is no upper age limit, and the age field will be displayed as "{{{lower_age}}}+". |- ! enrollment <br /> enrolment <br /> students <br /> pupils <br /> roll | Number of the school's students. Use the appropriate term. |- ! enrollment_as_of <br /> enrolment_as_of <br /> students_as_of <br /> pupils_as_of | The date, year or academic year the enrollment/enrolment figure refers to. |- ! capacity | The schools capacity, in terms of the number of pupils. |- ! sixth_form_students | Number of [[Sixth form|sixth-form]] students. |- ! grade_preK | Pre-kindergarten enrollment. |- ! gradeK | Kindergarten enrollment. |- ! grade1<br/>...<br/>grade13 | Enrollment for each grade. |- ! other | Other grade enrollment. Use this alone to get an entry simply labeled "Other" for enrollment figures of other grades. |- ! other_grade_label <br /> other_grade_label_1 <br /> other_grade_label_2 | rowspan=2 | Other grade label. Use with '''other_grade_enrollment''' to get a custom labeled entry for enrollment figures of other grades. |- ! other_grade_enrollment <br /> other_grade_enrollment_1 <br /> other_grade_enrollment_2 |- ! international_students | International students. |- ! classes | Number of classes in the school. |- ! average_class_size | The average number of students in a classroom at the school. |- ! ratio | The student:teacher ratio at the school. |- ! system | The education system the school follows. |- ! classes_offered | Classes offered at the school. |- ! language | Language the school teaches in. |- ! schedule_type | Schedule type. |- ! schedule | Schedule. |- ! hours_in_day | Hours in school day. |- ! classrooms | Number of classrooms in the school. |- ! campus | rowspan="2" | The name or names of the school campus, may also use '''campuses'''. |- ! campuses |- ! campus_size | The size of the school campus (see [[WP:OVERLINK]] for guidance of overlinking measurements). |- ! area | Area of school building(s). |- ! campus_type | Urban, suburban, etc. |- ! houses | The names of any [[House system|school houses]] the school might have. If the school has too many houses to fit into the infobox, give the number of houses with a [[Help:Link#Section_linking_.28anchors.29|link]] to the relevant section within the article (e.g. [[Uppingham School]]). |- ! student_union | rowspan=2 | Name of student union. Use '''student_union_label''' to override the default label "Student Union/Association". |- ! student_union_label |- ! colors <br /> colours | The [[School colors|school colors/colours]] (use appropriate spelling; if using one parameter, delete other parameter, if present). There is no need to wikilink the colors. Use of <nowiki>{{</nowiki>[[Template:Color box|Color box]]<nowiki>}}</nowiki> will provide adequate illustration to the reader (e.g. [[Amador Valley High School]]). |- ! slogan | The school's slogan. |- ! song | Name of the [[School song|school's song]]. |- ! fight_song | Name of the school's [[fight song]]. |- ! athletics | What type of athletics are held at the school; or Yes or No. |- ! athletics_conference | Name of athletics conference. |- ! sports | Main sport(s) at the school; or Yes or No. |- ! mascot | Name of the school's mascot. |- ! nickname | The school's [[athletic nickname]]. |- ! teams | rowspan=2 | Teams. Use '''teams_label''' to override the default label "Teams". |- ! teams_label |- ! team_name | "Team name" - names of any athletic teams. |- ! rival <br /> rivals | Rival of the school. If there is more than one, use '''rivals''' instead. |- ! accreditation <br /> accreditations | Accreditation of the school. If there is more than one, use '''accreditations''' instead. |- ! {{Flagicon|United States}} USNWR_ranking | For US schools only, the [[U.S. News & World Report]] (USNWR) ranking in league tables. |- ! national_ranking | The school's national ranking. |- ! test_average | rowspan=2 | The school's average test score. Use '''test_name''' to override the default label "Test average". |- ! test_name |- ! bar_pass_rate | If a law school, the most recent bar pass rate in percent. |- ! {{Flagicon|New Zealand}} decile | For New Zealand schools only, the [[socioeconomic decile]] of the school. |- ! publication | Name of the school publication. |- ! newspaper | Name of the school newspaper (template automatically italicizes it). |- ! yearbook | Name of the school yearbook (template automatically italicizes it). |- ! products | Any products the school produces. |- ! endowment | Endowment. |- ! budget | School budget. |- ! fees | rowspan=3 | School fees, may also use '''tuition''' and '''annual_tuition'''. |- ! tuition |- ! annual_tuition |- ! revenue | School revenue. |- ! communities | Communities the school serves. |- ! feeder_schools | Name(s) of schools which feed this school. |- ! feeder_to | Name(s) of schools which are fed by this school. |- ! graduates | rowspan=2 | Number of graduates, use with '''graduates_year''' to display the year. |- ! graduates_year |- ! affiliation <br /> affiliations | Affiliation of the school. If there is more than one, use '''affiliations''' instead. |- ! alumni | Notable alumni of the school (wikilink all names). |- ! alumni_name | Name of the school's alumni. |- ! nobel_laureates | Number of or list of notable [[List of Nobel laureates|Nobel laureates]] from the school (wikilink all names). |- ! information | Information (do not enter phone numbers or email addresses). |- ! free_label | rowspan="12" | Additional free text fields. '''_label''' parameters must be defined (and non-blank) in order for the corresponding text to be shown. |- ! free_text |- ! free_label1 |- ! free_text1 |- ! free_label2 |- ! free_text2 |- ! free_label3 |- ! free_text3 |- ! free_label4 |- ! free_text4 |- ! free_label5 |- ! free_text5 |- ! website | URL of the school's website. Use {{Tl|URL}}: '''<nowiki>{{URL|school.url}}</nowiki>'''. Note that if the URL contains an equals sign, then it must be written as '''<nowiki>{{URL|1=school.url}}</nowiki>'''. |- ! footnotes | Any footnotes. |- ! picture | rowspan=4 | Picture(s) of the school, displays at bottom. Use file name with no wikimarkup, e.g. ''MySchool.png'', and caption text which is displayed below the picture; see [[WP:CAPTION]]. |- ! picture_caption |- ! picture2 |- ! picture_caption2 |- ! module | See [[#Embedding]]. |- ! lastupdate | Date of last update (use <nowiki>{{subst:Date}}</nowiki> or <nowiki>{{subst:Date|2=mdy}}</nowiki> for the current date). |} === Map and coordinates === The mapframe map uses the values in the {{Para|coordinates}} parameter if specified, or else from Wikidata if available. {{Infobox mapframe/doc/parameters|mapframe=yes|mapframe-zoom=13|mapframe-marker=school|mapframe-wikidata=yes}} ==== Map for multiple campuses ==== The mapframe map can be overridden using the {{Para|mapframe-custom}} parameter with the {{Tl|Maplink}} template for schools with multiple campuses. Simply add the following parameters below the {{Para|coordinates}} parameter: <syntaxhighlight lang="wikitext" style="overflow:auto"> | mapframe-custom = {{Maplink |frame=yes |plain=yes |frame-align=center |frame-width=270 |zoom=13 |type=point |coord={{Coord|LAT|LON}} |marker=school |title= |description= |type2=point |coord2={{Coord|LAT|LON}} |marker2=school |title2= |description2=}} </syntaxhighlight> The above can be used for schools with two campuses (the zoom may have to be adjusted depending on how far apart the campuses are, as to ensure the markers can be seen). More campuses can be shown by adding the same parameter set with a sequential number to the end of the parameter name. For example, the third would start with {{Para|type3|point}}, and so on. === Deprecated parameters === * There are no deprecated parameters at this time. == Examples == === United Kingdom school example === {{Infobox school | name = The Judd School | logo = Andrew Judde Monument coat of arms.png | logo_alt = The Judd School coat of arms | motto = {{Lang-la|Deus Dat Incrementum}} | motto_translation = God Gives Growth / God Gives Gifts | address = Brook Street | town = [[Tonbridge]] | county = [[Kent]] | postcode = TN9 2PN | country = England | coordinates = {{Coord|51.188115|0.264445|region:GB-KEN_dim:100|format=dms|display=inline<!--,title-->}} | other_name = Judd | type = [[Voluntary aided school|Voluntary aided]] [[grammar school]] | established = {{Start date and age|1888}} | founder = [[Worshipful Company of Skinners|The Skinners' Company]] | local_authority = [[Kent County Council]] | urn = 118843 | ofsted = Yes | chairman = Charles Doyle<ref>{{cite web |title=Governors |url=https://www.judd.online/page/?title=Governors&pid=47 |website=The Judd School |accessdate=9 July 2020}}</ref> | headteacher = Jonathan Wood<ref>{{cite web |title=About Us |url=http://www.judd.online/about-us |website=The Judd School |accessdate=8 November 2018}}</ref> | gender = {{Unbulleted list|Boys (11 to 16)|Mixed (16 to 18)}} | age_range = 11–18 | enrolment = 1,152 (2019)<ref name="GOV.UK">{{cite web |title=The Judd School |url=https://get-information-schools.service.gov.uk/Establishments/Establishment/Details/118843 |website=Get information about schools |publisher=UK Government |accessdate=12 June 2019}}</ref> | capacity = 1,095<ref name="GOV.UK" /> | houses = {{Hlist|Morgan|Starling|Rendall|Byrant|Taylor|Evans}} | colours = Navy and maroon {{Color box|Navy}}{{Color box|Maroon}} | alumni = Old Juddians | website = {{URL|judd.online}} | footnotes = Example of footnotes }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox school | name = The Judd School | logo = Andrew Judde Monument coat of arms.png | logo_alt = The Judd School coat of arms | motto = {{Lang-la|Deus Dat Incrementum}} | motto_translation = God Gives Growth / God Gives Gifts | address = Brook Street | town = [[Tonbridge]] | county = [[Kent]] | postcode = TN9 2PN | country = England | coordinates = {{Coord|51.188115|0.264445|region:GB-KEN_dim:100|format=dms|display=inline,title}} | other_name = Judd | type = [[Voluntary aided school|Voluntary aided]] [[grammar school]] | established = {{Start date and age|1888}} | founder = [[Worshipful Company of Skinners|The Skinners' Company]] | local_authority = [[Kent County Council]] | urn = 118843 | ofsted = Yes | chairman = Charles Doyle<ref>{{cite web |title=Governors |url=https://www.judd.online/page/?title=Governors&pid=47 |website=The Judd School |accessdate=9 July 2020}}</ref> | headteacher = Jonathan Wood<ref>{{cite web |title=About Us |url=http://www.judd.online/about-us |website=The Judd School |accessdate=8 November 2018}}</ref> | gender = {{Unbulleted list|Boys (11 to 16)|Mixed (16 to 18)}} | age_range = 11–18 | enrolment = 1,152 (2019)<ref name="GOV.UK">{{cite web |title=The Judd School |url=https://get-information-schools.service.gov.uk/Establishments/Establishment/Details/118843 |website=Get information about schools |publisher=UK Government |accessdate=12 June 2019}}</ref> | capacity = 1,095<ref name="GOV.UK" /> | houses = {{Hlist|Morgan|Starling|Rendall|Byrant|Taylor|Evans}} | colours = Navy and maroon {{Color box|Navy}}{{Color box|Maroon}} | alumni = Old Juddians | website = {{URL|judd.online}} | footnotes = Example of footnotes }} </syntaxhighlight> '''References''' {{Reflist}} {{Clear}} === United States school example === {{Infobox school | name = Amador Valley High School | image = Amador Valley and Pleasanton Ridge.jpg | alt = Amador Valley and Pleasanton Ridge | motto = School of Champions | address = 1155 Santa Rita Road | city = [[Pleasanton, California|Pleasanton]] | state = California | zipcode = 94566 | country = United States | coordinates = {{Coord|37.6681740|-121.8743425|format=dms|region:US-CA|display=inline<!--,title-->}} | other_names = {{Hlist|Amador Valley|Amador|AVHS}} | former_name = Amador Valley Joint Union High School | type = [[State school|Public]] [[Secondary school|high school]] | established = {{Start date|1922|03|14}} | district = [[Pleasanton Unified School District]] | us_nces_school_id = {{NCES School ID|060002009282|school_name=Amador Valley High School|access_date=8 November 2018|ref_name=NCES}} | principal = Michael Williams | teaching_staff = 105.75 {{FTE}}<ref name="NCES" /> | grades = 9–12 | enrollment = 2,628 (2015–2016)<ref name="NCES" /> | ratio = 24.85<ref name="NCES" /> | campus_size = {{Convert|39.27|acre|ha}} | campus_type = Suburban | colors = Purple and gold {{Color box|Purple}}{{Color box|Gold}} | mascot = The [[Don (honorific)|Don]] | rival = [[Foothill High School (Pleasanton, California)|Foothill High School]]<ref>{{cite news |last1=Bonagura |first1=Kyle |title=Foothill-Amador Valley rivalry runs deeper than just football |url=https://www.eastbaytimes.com/2009/11/12/foothill-amador-valley-rivalry-runs-deeper-than-just-football/ |accessdate=September 21, 2020 |work=[[East Bay Times]] |date=August 15, 2016 |orig-year=2009}}</ref> | newspaper = The Amadon | yearbook = The Book of Names and Faces | website = {{URL|amador.pleasantonusd.net}} | footnotes = Example of footnotes }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox school | name = Amador Valley High School | image = Amador Valley and Pleasanton Ridge.jpg | alt = Amador Valley and Pleasanton Ridge | motto = School of Champions | address = 1155 Santa Rita Road | city = [[Pleasanton, California|Pleasanton]] | state = California | zipcode = 94566 | country = United States | coordinates = {{Coord|37.6681740|-121.8743425|format=dms|region:US-CA|display=inline,title}} | other_names = {{Hlist|Amador Valley|Amador|AVHS}} | former_name = Amador Valley Joint Union High School | type = [[State school|Public]] [[Secondary school|high school]] | established = {{Start date|1922|03|14}} | district = [[Pleasanton Unified School District]] | us_nces_school_id = {{NCES School ID|060002009282|school_name=Amador Valley High School|access_date=8 November 2018|ref_name=NCES}} | principal = Michael Williams | teaching_staff = 105.75 {{FTE}}<ref name="NCES" /> | grades = 9–12 | enrollment = 2,628 (2015–2016)<ref name="NCES" /> | ratio = 24.85<ref name="NCES" /> | campus_size = {{Convert|39.27|acre|ha}} | campus_type = Suburban | colors = Purple and gold {{Color box|Purple}}{{Color box|Gold}} | mascot = The [[Don (honorific)|Don]] | rival = [[Foothill High School (Pleasanton, California)|Foothill High School]]<ref>{{cite news |last1=Bonagura |first1=Kyle |title=Foothill-Amador Valley rivalry runs deeper than just football |url=https://www.eastbaytimes.com/2009/11/12/foothill-amador-valley-rivalry-runs-deeper-than-just-football/ |accessdate=September 21, 2020 |work=[[East Bay Times]] |date=August 15, 2016 |orig-year=2009}}</ref> | newspaper = The Amadon | yearbook = The Book of Names and Faces | website = {{URL|amador.pleasantonusd.net}} | footnotes = Example of footnotes }} </syntaxhighlight> '''References''' {{Reflist}} {{Clear}} === Australia school example === {{Infobox school | name = North Sydney Boys High School | image = NSBHS front.jpg | alt = North Sydney Boys High School front entrance | caption = North Sydney Boys High School front entrance | motto = {{Lang-la|Vincit qui se vincit}} | motto_translation = He conquers who conquers himself | city = [[Crows Nest, New South Wales|Crows Nest]] | state = New South Wales | country = Australia | coordinates = {{Coord|33|49|46|S|151|12|27|E|region:AU-NSW|display=inline<!--,title-->}} | type = [[State school|Public]] [[secondary school]] | established = {{Start date|1912}}<ref name="NSBHS">{{cite web |title=School History |url=https://northsydbo-h.schools.nsw.gov.au/about-our-school/history.html |publisher=North Sydney Boys High School |accessdate=21 September 2020}}</ref> | principal = Robyn Hughes | teaching_staff = ~54 | grades = 7–12 | enrolment = ~915 (2019)<ref name=SchoolLocator>{{cite web |url=https://www.myschool.edu.au/school/41320 |title=North Sydney Boys High School |accessdate=21 September 2020 |work=My School |publisher=Australian Curriculum, Assessment and Reporting Authority}}</ref> | campus_type = Suburban | alumni = Old Falconians | colours = Bismark, coral and gold {{Color box|#800000}}{{Color box|#FF7F50}}{{Color box|#FFD700}} | website = {{URL|northsydbo-h.schools.nsw.gov.au}} }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox school | name = North Sydney Boys High School | image = NSBHS front.jpg | alt = North Sydney Boys High School front entrance | caption = North Sydney Boys High School front entrance | motto = {{Lang-la|Vincit qui se vincit}} | motto_translation = He conquers who conquers himself | city = [[Crows Nest, New South Wales|Crows Nest]] | state = New South Wales | country = Australia | coordinates = {{Coord|33|49|46|S|151|12|27|E|region:AU-NSW|display=inline,title}} | type = [[State school|Public]] [[secondary school]] | established = {{Start date|1912}}<ref name="NSBHS">{{cite web |title=School History |url=https://northsydbo-h.schools.nsw.gov.au/about-our-school/history.html |publisher=North Sydney Boys High School |accessdate=21 September 2020}}</ref> | principal = Robyn Hughes | teaching_staff = ~54 | grades = 7–12 | enrolment = ~915 (2019)<ref name=SchoolLocator>{{cite web |url=https://www.myschool.edu.au/school/41320 |title=North Sydney Boys High School |accessdate=21 September 2020 |work=My School |publisher=Australian Curriculum, Assessment and Reporting Authority}}</ref> | campus_type = Suburban | alumni = Old Falconians | colours = Bismark, coral and gold {{Color box|#800000}}{{Color box|#FF7F50}}{{Color box|#FFD700}} | website = {{URL|northsydbo-h.schools.nsw.gov.au}} }} </syntaxhighlight> '''References''' {{Reflist}} {{Clear}} == TemplateData == {{collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <templatedata> { "params": { "box_width": { "label": "Infobox width", "description": "Desired width of the infobox, can be expressed as percentage, pixels or em", "type": "string", "example": "280px", "default": "250px" }, "box_style": { "label": "Infobox CSS", "description": "CSS styling for the infobox", "type": "string" }, "name": { "label": "Name", "type": "string", "description": "Name of the school", "default": "{{PAGENAMEBASE}}" }, "native_name": { "label": "Native name", "type": "string", "description": "Name of the school in its native language" }, "latin_name": { "label": "Latin name", "type": "string", "description": "Latin name of the school, if any" }, "logo": { "label": "Logo filename", "type": "wiki-file-name", "description": "Filename of school logo image on Wikipedia or Wikimedia Commons" }, "logo_alt": { "label": "Logo accessibility text", "type": "string", "description": "Description of the elements in the logo suitable for a screen reader or other aid to the visually impaired" }, "logo_size": { "label": "Logo width", "type": "number", "description": "Desired display width of logo image in pixels, without 'px' suffix", "example": "220" }, "seal_image": { "label": "Seal Image", "type": "wiki-page-name", "description": "Seal of the School" }, "seal_alt": { "label": "Seal alt", "type": "string", "description": "Alternative text for seal" }, "seal_size": { "label": "Seal size", "type": "string" }, "image": { "label": "Image", "type": "string", "description": "Image file name with no wikimarkup", "aliases": [ "image_name", "imagewikilink" ] }, "image_size": { "label": "Image Size", "type": "string", "description": "Image width in pixels", "aliases": [ "image size", "imagesize", "size" ] }, "alt": { "label": "Alternative", "type": "string", "description": "Alternative text for image" }, "caption": { "label": "Caption", "type": "string", "description": "Caption for image" }, "motto": { "label": "Official motto", "type": "string", "description": "Short phrase or sentence used by the school for branding self-identification", "example": "Semper fidelis." }, "motto_translation": { "label": "Motto translation", "type": "string", "description": "English translation of the school motto, if needed" }, "location": { "label": "Location", "type": "string", "description": "Location, could include address" }, "address": { "label": "Street address", "type": "string", "description": "Street address in which the school is found", "aliases": [ "streetaddress", "street" ] }, "region": { "label": "Region", "type": "string", "description": "Region in which the school is found" }, "city": { "label": "City", "type": "string", "description": "City, town or village in which the school is found", "aliases": [ "town", "city/town" ] }, "county": { "label": "County", "type": "string", "description": "County or Local Government Area in which the school is found" }, "state": { "label": "State", "type": "string", "description": "State of in which the school is found" }, "province": { "label": "Province", "type": "string", "description": "Province in which the school is found" }, "postcode": { "label": "Post Code", "type": "string", "description": "The school's postcode", "aliases": [ "postalcode" ] }, "zipcode": { "label": "Zip Code", "type": "string", "description": "The school's zip code; alternative term for postcode" }, "pushpin_map": { "label": "Pushpin map", "type": "string", "deprecated": true }, "pushpin_label": { "label": "Pushpin label", "type": "string", "deprecated": true }, "pushpin_label_position": { "label": "Pushpin label position", "type": "string", "deprecated": true }, "pushpin_map_alt": { "label": "Pushpin map alt", "type": "string", "deprecated": true }, "pushpin_mapsize": { "label": "Pushpin map size", "type": "number", "description": "Pushpin map width in pixels", "default": "250", "deprecated": true }, "pushpin_image": { "label": "Pushpin image", "type": "wiki-file-name", "deprecated": true }, "pushpin_map_caption": { "label": "Pushpin map caption", "type": "string", "deprecated": true }, "country": { "label": "Country", "type": "string", "description": "Country of the school" }, "country1": { "label": "Country 1", "type": "string", "description": "Country of the school" }, "coordinates": { "label": "Coordinates", "type": "string", "description": "Geographic coordinates" }, "coordinates_footnotes": { "label": "Coordinates footnotes", "type": "string" }, "other_name": { "label": "Other name", "type": "string", "description": "Alternate name by which the school is known" }, "other_names": { "label": "Other names", "type": "string", "description": "Alternate names by which the school is known" }, "former_name": { "label": "Former name", "type": "string", "description": "Previous name of the school" }, "former_names": { "label": "Former names", "type": "string", "description": "Previous names of the school" }, "schooltype": { "label": "School Type", "type": "string", "description": "Type of school" }, "fundingtype": { "label": "Funding Type", "type": "string", "description": "Funding type of the school" }, "type": { "label": "Type", "type": "string", "description": "Type of the school" }, "religious_affiliation": { "label": "Religious affiliation", "type": "string", "description": "School's religious affiliation", "aliases": [ "religion" ] }, "denomination": { "label": "Denomination", "type": "string", "description": "If a faith school, the denomination of the school" }, "patron": { "label": "Patron", "type": "string", "description": "Patron saint of the school" }, "established": { "label": "Established", "type": "string", "description": "Date of institution's establishment; if precise date is not available, add \"c. \" before the year.", "suggested": true }, "founded": { "label": "Founded", "type": "string", "description": "Date of founding of the School" }, "opened": { "label": "Opened", "type": "string", "description": "Date when the first classes with enrolled students began" }, "founder": { "label": "Founder", "type": "string", "description": "Founder of the school" }, "status": { "label": "Status", "type": "string", "description": "Status of the school" }, "closed": { "label": "Closed", "type": "string", "description": "Date of closure of the school" }, "locale": { "label": "Locale", "type": "string", "description": "Locale of the School" }, "sister_school": { "label": "Sister School", "type": "string", "description": "The Sister School, if any" }, "school_board": { "label": "School Board", "type": "string", "description": "Board, the school comes under", "aliases": [ "schoolboard" ] }, "district": { "label": "District", "type": "string", "description": "The school district of the school" }, "us_nces_district_id": { "label": "NCES District ID (US)", "type": "string", "description": "For US schools only, the District ID from the NCES CCD" }, "authority": { "label": "Authority", "type": "string", "description": "Authority, the school comes under" }, "educational_authority": { "label": "Educational authority", "type": "string", "aliases": [ "educational authority" ] }, "category": { "label": "Category", "type": "string", "description": "Category of the School" }, "category_label": { "label": "Category label", "default": "Category" }, "oversight": { "label": "Oversight", "type": "string", "description": "Oversight, the school comes under" }, "oversight_label": { "label": "Oversight Label", "type": "string", "description": "Label of the oversight of the School" }, "authorizer": { "label": "Authorizer", "type": "string", "description": "Name of the Authorizer of the School" }, "superintendent": { "label": "Superintendent", "type": "string", "description": "Name of Superintendent of the school" }, "trustee": { "label": "Trustee", "type": "string", "description": "Name of Area trustee of the school" }, "specialist": { "label": "Specialist", "type": "string", "description": "Name of Specialist of the school" }, "session": { "label": "Session", "type": "string", "description": "Session of the school" }, "school_number": { "label": "School Number", "type": "number", "description": "Official number address of school", "aliases": [ "schoolnumber", "number" ] }, "school_code": { "label": "School Code", "type": "number", "description": "School code, if applicable", "aliases": [ "school code" ] }, "MOE": { "label": "MOE (NZ)", "type": "number", "description": "Institution number, assigned by the Ministry of Education (New Zealand)" }, "ofsted": { "label": "Ofsted", "type": "string", "description": "Any value given for this parameter activates the display of a link to the school's latest report on the Ofsted website; leave blank to omit." }, "ceeb": { "label": "CEEB (US)", "type": "number", "description": "CEEB code, assigned by the College Board (United States)" }, "us_nces_school_id": { "label": "NCES School ID (US)", "type": "string", "description": "For US schools only, the School ID from the NCES websites" }, "president": { "label": "President", "type": "string" }, "chair": { "label": "Chair", "type": "string" }, "chair_label": { "label": "Chair label", "type": "string", "default": "Chair" }, "chairman": { "label": "Chairman", "type": "string", "description": "Name of Chairman of the School" }, "chairman_label": { "label": "Chairman label", "type": "string", "default": "Chairman" }, "chairperson": { "label": "Chairperson", "type": "string", "description": "Name of the chairperson of the School" }, "chairperson_label": { "label": "Chairperson label", "type": "string", "default": "Chairperson" }, "dean": { "label": "Dean", "type": "string", "description": "Name of the Dean of the School" }, "administrator": { "label": "Administrator", "type": "string", "description": "Name of the Administrator of the school" }, "rector": { "label": "Rector", "type": "string", "description": "Name of the Rector of the school" }, "director": { "label": "Director", "type": "string", "description": "Name of the Director of the school" }, "principal": { "label": "Principal", "type": "string", "description": "Name of the Principal of the school" }, "principal_label": { "label": "Principal label", "type": "string", "description": "Label for principal", "default": "Principal" }, "principal1": { "label": "Principal 1", "type": "string" }, "principal_label1": { "label": "Principal label 1", "type": "string", "description": "Label for principal 1", "default": "Principal" }, "principal2": { "label": "Principal 2", "type": "string" }, "principal_label2": { "label": "Principal label 2", "type": "string", "description": "Label for principal 2", "default": "Principal" }, "principal3": { "label": "Principal 3", "type": "string" }, "principal_label3": { "label": "Principal label 3", "type": "string", "description": "Label for principal 3", "default": "Principal" }, "principal4": { "label": "Principal 4", "type": "string" }, "principal_label4": { "label": "Principal label 4", "type": "string", "description": "Label for principal 4", "default": "Principal" }, "campus_director": { "label": "Campus Director", "type": "string", "description": "Name of the Campus Director", "aliases": [ "campus director" ] }, "headmistress": { "label": "Headmistress", "type": "string", "description": "Name of the Headmistress" }, "headmaster": { "label": "Headmaster", "type": "string", "description": "Name of the Headmaster" }, "head_of_school": { "label": "Head of School", "type": "string", "description": "Name of the Head of the school", "aliases": [ "head of school" ] }, "head_teacher": { "label": "Head Teacher", "type": "string", "description": "Name of the Head Teacher", "aliases": [ "headteacher" ] }, "executive_headteacher": { "label": "Executive Head Teacher", "type": "string", "description": "Name of the Executive Head Teacher" }, "acting_headteacher": { "label": "Acting Head Teacher", "type": "string", "description": "Name of the Acting Head Teacher" }, "head": { "label": "Head", "type": "string", "description": "Name of the Head" }, "head_name": { "label": "Head label", "type": "string", "description": "Label for head", "default": "Head teacher", "aliases": [ "head_label" ] }, "head2": { "label": "Head 2", "type": "string" }, "head_name2": { "label": "Head label 2", "type": "string", "description": "Label for head2" }, "r_head": { "label": "R head", "type": "string" }, "r_head_label": { "label": "R head label", "type": "string", "description": "Label for r_head" }, "officer_in_charge": { "label": "Officer in charge", "type": "string" }, "chaplain": { "label": "Chaplain", "type": "string", "description": "Name of the Chaplain of the school" }, "staff": { "label": "Staff", "type": "number", "description": " Number of staff", "aliases": [ "number_of_staff", "number of staff" ] }, "faculty": { "label": "Faculty", "type": "number", "description": " Number of faculty of the school" }, "teaching_staff": { "label": "Teaching Staff", "type": "number", "description": "Number of the school's teaching staff" }, "employees": { "label": "Employees", "type": "number", "description": " Number of the school's employees staff", "aliases": [ "num_employ" ] }, "key_people": { "label": "Key People", "type": "number", "description": " Number of the school's Key People" }, "grades": { "label": "Grades", "type": "string", "description": "Grade levels" }, "grades_label": { "label": "Grades label", "type": "string", "default": "Grades" }, "years": { "label": "Years", "type": "number", "description": "Years offered" }, "years_taught": { "label": "Years taught", "type": "string", "aliases": [ "years taught" ] }, "nursery_years_taught": { "label": "ECE levels", "type": "string", "aliases": [ "nursery years taught" ], "description": "Early childhood education instruction levels offered", "example": "24 months through Transitional Kindergarten" }, "secondary_years_taught": { "label": "Secondary education levels", "type": "string", "aliases": [ "secondary years taught" ], "description": "Range of secondary education instruction levels offered", "example": "6th through 9th grades" }, "gender": { "label": "Gender", "type": "string", "description": "Gender of the students at the school. " }, "gender_label": { "label": "Gender label", "type": "string", "default": "Gender" }, "lower_age": { "label": "Lower age", "type": "string", "description": "The youngest age at which a student can be enrolled at the school" }, "upper_age": { "label": "Upper age", "type": "string", "description": "The oldest age at which a student may be enrolled at the school" }, "age_range": { "label": "Age range", "type": "string", "description": "Age range of students", "aliases": [ "age range" ] }, "enrollment": { "label": "Enrollment", "type": "number", "description": "Number of students in attendance during a specified academic term. Use the appropriate term; enrollment, enrolment, students, pupils or roll", "aliases": [ "enrolment", "students", "pupils", "school_roll", "roll" ] }, "sixth_form_students": { "label": "Sixth form students", "type": "string" }, "grade_preK": { "label": "Grade pre K", "type": "string", "description": "Pre-kindergarten enrollment" }, "gradeK": { "label": "Grade K", "type": "string", "description": "Kindergarten enrollment" }, "grade1": { "label": "Grade 1", "type": "number", "description": "Enrollment for this grade" }, "grade2": { "label": "Grade 2", "type": "number", "description": "Enrollment for this grade" }, "grade3": { "label": "Grade 3", "type": "number", "description": "Enrollment for this grade" }, "grade4": { "label": "Grade 4", "type": "number", "description": "Enrollment for this grade" }, "grade5": { "label": "Grade 5", "type": "number", "description": "Enrollment for this grade" }, "grade6": { "label": "Grade 6", "type": "number", "description": "Enrollment for this grade" }, "grade7": { "label": "Grade 7", "type": "number", "description": "Enrollment for this grade" }, "grade8": { "label": "Grade 8", "type": "number", "description": "Enrollment for this grade" }, "grade9": { "label": "Grade 9", "type": "number", "description": "Enrollment for this grade" }, "grade10": { "label": "Grade 10", "type": "number", "description": "Enrollment for this grade" }, "grade11": { "label": "Grade 11", "type": "number", "description": "Enrollment for this grade" }, "grade12": { "label": "Grade 12", "type": "number", "description": "Enrollment for this grade" }, "grade13": { "label": "Grade 13", "type": "number", "description": "Enrollment for this grade" }, "other": { "label": "Other", "type": "number", "description": "Other grade enrollment" }, "other_grade_enrollment": { "label": "Other grade enrollment", "type": "string", "aliases": [ "other_grade_enrolment" ] }, "other_grade_label": { "label": "Other grade enrollment label", "type": "string", "default": "Other" }, "other_grade_enrollment_1": { "label": "Other grade enrollment 1", "type": "string", "aliases": [ "other_grade_enrolment_1" ] }, "other_grade_label_1": { "label": "Other grade enrollment 1 label", "type": "string", "default": "Other" }, "other_grade_enrollment_2": { "label": "Other grade enrollment 2", "type": "string", "aliases": [ "other_grade_enrolment_2" ] }, "other_grade_label_2": { "label": "Other grade enrollment 2 label", "type": "string", "default": "Other" }, "international_students": { "label": "International Students", "type": "number", "description": "Number of International Students" }, "classes": { "label": "Classes", "type": "number", "description": " Number of classes in the school" }, "average_class_size": { "label": "Average class size", "type": "number", "description": "The average number of students in a classroom at the school", "aliases": [ "avg_class_size", "class" ] }, "ratio": { "label": "Ratio", "type": "number", "description": "The student: teacher ratio at the school" }, "system": { "label": "System", "type": "string", "description": " The education system the school follows" }, "classes_offered": { "label": "Classes offered", "type": "number", "description": "Classes offered at the school", "aliases": [ "classes offered" ] }, "schedule_type": { "label": "Scheduled type", "type": "string", "description": "Type of Schedule of the School", "aliases": [ "schedtyp" ] }, "schedule": { "label": "Schedule", "type": "string", "description": "Schedule of the School" }, "hours_in_day": { "label": "Hours in Day", "type": "number", "description": "Hours in the school day" }, "classrooms": { "label": "Classrooms", "type": "number", "description": "Number of classrooms in the school" }, "campuses": { "label": "Campuses", "type": "string", "description": "The names of the school campuses" }, "campus": { "label": "Campus", "type": "string", "description": "The name of the school campus" }, "campus_size": { "label": "Campus size", "type": "number", "description": "The size of the school campus", "aliases": [ "campus size" ] }, "area": { "label": "Area", "type": "string", "description": "Total area of the school building(s)" }, "campus_type": { "label": "Campus type", "type": "string", "description": "Type of campus e.g. urban, suburb, etc", "aliases": [ "campus type" ] }, "houses": { "label": "Houses", "type": "string", "description": "The names of any school houses the school might have" }, "student_union": { "label": "Student union", "type": "string" }, "student_union_label": { "label": "Label for student union", "type": "string", "default": "Student Union/Association" }, "colors": { "label": "Colors", "type": "string", "description": "The school colors/colours (use appropriate spelling; if using one parameter, delete other parameter, if present)", "aliases": [ "colours", "school_colors", "schoolcolors", "school_colours", "schoolcolours" ] }, "slogan": { "label": "Slogan", "type": "string", "description": "The school's slogan" }, "song": { "label": "Song", "type": "string", "description": "Name of the school's song" }, "athletics": { "label": "Athletics", "type": "string", "description": "What type of athletics are held at the school; or Yes or No" }, "athletics_conference": { "label": "Athletic conference", "type": "string", "description": "Athletic conference", "aliases": [ "athletics conference", "athletic_conference", "athletic conference", "conference" ] }, "sports": { "label": "Sports", "type": "string", "description": "Main sport(s) at the school; or Yes or No" }, "mascot": { "label": "Mascot", "type": "string", "description": "School mascot" }, "nickname": { "label": "Nickname", "type": "string", "description": "The school's athletic nickname" }, "teams": { "label": "Teams", "type": "string" }, "teams_label": { "label": "Label for teams", "type": "string", "default": "Teams" }, "team_name": { "label": "Team name", "type": "string", "description": "Names of any teams", "aliases": [ "team name", "teamname" ] }, "rival": { "label": "Rival", "type": "string", "description": "Any rival schools", "aliases": [ "rivals" ] }, "accreditation": { "label": "Accreditation", "type": "string", "description": "Accreditation of School education", "aliases": [ "accreditations" ] }, "USNWR_ranking": { "label": "Ranking", "type": "number", "description": "The school's USNWR ranking in league tables", "aliases": [ "ranking" ] }, "national_ranking": { "label": "National ranking", "type": "number", "description": "The school's national ranking" }, "test_name": { "label": "Test name", "type": "string", "description": "Name of the test in test average", "aliases": [ "testname" ] }, "test_average": { "label": "Test average", "type": "number", "description": "Average test score", "aliases": [ "testaverage" ] }, "SAT": { "label": "SAT", "type": "number", "description": "Most recent average SAT scores", "deprecated": true }, "SAT_year": { "label": "SAT Year", "type": "number", "description": "Year of aforementioned SAT scores", "deprecated": true }, "ACT": { "label": "ACT", "type": "number", "description": "Most recent average ACT scores", "deprecated": true }, "ACT_year": { "label": "ACT Year", "type": "number", "description": "Year of aforementioned ACT scores", "deprecated": true }, "bar_pass_rate": { "label": "Bar pass rate", "type": "string", "description": "Bar pass rate of the School", "aliases": [ "bar pass rate" ] }, "decile": { "label": "Decile", "type": "string", "description": "The Socio-economic decile of the school, applicable to New Zealand schools" }, "publication": { "label": "Publication", "type": "string", "description": "Any publications that the school produces" }, "newspaper": { "label": "Newspaper", "type": "string", "description": "Name of the school newspaper" }, "yearbook": { "label": "Year book", "type": "string", "description": "Name of the school yearbook" }, "products": { "label": "Products", "type": "string" }, "endowment": { "label": "Endowment", "type": "string" }, "budget": { "label": "Budget", "type": "number", "description": "School budget" }, "fees": { "label": "Fees", "type": "number", "description": "Fees of the School" }, "annual_tuition": { "label": "Annual tuition", "aliases": [ "annual tuition" ], "type": "string" }, "tuition": { "label": "Tuition", "type": "string" }, "revenue": { "label": "Revenue", "type": "number", "description": "Revenue of the School" }, "communities": { "label": "Communities", "type": "string", "description": "Communities served" }, "feeder_schools": { "label": "Feeders", "type": "string", "description": "Feeder schools", "aliases": [ "main feeder schools", "feeders" ] }, "feeder_to": { "label": "Feeder to", "type": "string", "description": "Feeder school for", "aliases": [ "main feeder school for" ] }, "graduates": { "label": "Graduates", "type": "number", "description": "Number of graduates from the school" }, "graduates_year": { "label": "Graduates Year", "type": "number", "description": "Year of aforementioned number of graduates" }, "affiliation": { "label": "Affiliations", "type": "string", "description": "Any of the school's affiliations", "aliases": [ "affiliations" ] }, "alumni": { "label": "Alumni", "type": "string", "description": "Any notable alumni of the school" }, "alumni_name": { "label": "Alumni name", "type": "string" }, "nobel_laureates": { "label": "Nobel laureates", "type": "string", "description": "Any notable Nobel laureates from the school" }, "information": { "label": "Information", "type": "string", "description": "Any other information about the school, do not enter phone numbers or email addresses" }, "free": { "label": "Free text", "type": "string", "aliases": [ "free_text" ] }, "free_label": { "label": "Free label", "type": "string", "description": "Label for free text", "default": "Other" }, "free_1": { "label": "Free text 1", "type": "string", "description": "Free text", "aliases": [ "free_text1" ] }, "free_label1": { "label": "Free label 1", "type": "string", "description": "Label for free text 1", "aliases": [ "free_label_1" ] }, "free_2": { "label": "Free text 2", "type": "string", "description": "Free text", "aliases": [ "free_text2" ] }, "free_label2": { "label": "Free label 2", "type": "string", "description": "Label for free text 2", "aliases": [ "free_label_2" ] }, "free_3": { "label": "Free text 3", "type": "string", "description": "Free text", "aliases": [ "free_text3" ] }, "free_label3": { "label": "Free label 3", "type": "string", "description": "Label for free text 3", "aliases": [ "free_label_3" ] }, "free_4": { "label": "Free text 4", "type": "string", "description": "Free text", "aliases": [ "free_text4" ] }, "free_label4": { "label": "Free label 4", "type": "string", "description": "Label for free text 4", "aliases": [ "free_label_4" ] }, "free_5": { "label": "Free text 5", "type": "string", "description": "Free text", "aliases": [ "free_text5" ] }, "free_label5": { "label": "Free label 5", "type": "string", "description": "Label for free text 5", "aliases": [ "free_label_5" ] }, "website": { "label": "Website", "type": "string", "description": "URL of the school website", "aliases": [ "homepage", "url" ] }, "footnotes": { "label": "Footnotes", "type": "string", "description": "Any footnotes" }, "picture": { "label": "Picture", "type": "wiki-page-name", "description": "Picture of the school" }, "picture_caption": { "label": "Picture caption", "type": "string", "description": "Caption for picture" }, "picture2": { "label": "Picture 2", "type": "wiki-page-name", "description": "Second picture" }, "picture_caption2": { "label": "Picture caption 2", "type": "string", "description": "Second picture caption" }, "enrollment_as_of": { "label": "Enrollment point in time", "type": "string", "aliases": [ "enrolment_as_of", "students_as_of", "pupils_as_of" ], "description": "Specific academic term or date range from which the enrollment figure(s) were sourced", "example": "2015-2016" }, "module": { "label": "Module", "type": "content" }, "lastupdate": { "label": "Last update", "type": "date", "description": "Date the infobox was last updated" }, "fight_song": { "aliases": [ "fightsong" ], "label": "Fight song", "description": "Name of official fight song; use 'song' parameter for name of alma mater.", "type": "string" }, "trust": { "label": "Trust", "type": "string" }, "local_authority": { "aliases": [ "LEA" ], "label": "Local ed. authority", "description": "Name of local education authority (UK)", "type": "string" }, "urn": { "label": "URN (UK)", "description": "Unique Reference Number, assigned by the Department for Education (United Kingdom)", "type": "number" }, "capacity": { "label": "Enrollment limit", "description": "Maximum number of students a school is permitted to enroll at any given time", "type": "number" }, "mottoes": { "label": "Official mottoes", "description": "If a school has more than one official motto, use this parameter and place the mottoes within the {{Unbulleted indent list}} template", "type": "wiki-template-name" }, "founders": { "label": "Founders", "description": "If more than one founder, use this parameter and place all founders within {{Hlist}} template", "type": "wiki-template-name" }, "specialists": { "label": "Specialists", "description": "If school has more than one specialist, use this parameter and place all specialists within the {{Hlist}} template", "type": "string" }, "primary_years_taught": { "aliases": [ "primary years taught" ], "label": "Primary education levels", "description": "Range of primary education instruction levels offered", "example": "1st through 5th grades", "type": "string" }, "language": { "aliases": [ "medium_of_language", "medium of language", "medium", "mediums" ], "label": "Language", "description": "Language the school teaches in", "type": "string" } }, "format": "{{_\n | _______________________ = _\n}}", "paramOrder": [ "box_width", "box_style", "name", "native_name", "latin_name", "logo", "logo_size", "logo_alt", "seal_image", "seal_size", "seal_alt", "image", "image_size", "alt", "caption", "pushpin_map", "pushpin_label", "pushpin_label_position", "pushpin_map_alt", "pushpin_map_caption", "pushpin_mapsize", "pushpin_image", "motto", "mottoes", "motto_translation", "location", "address", "region", "city", "county", "state", "province", "postcode", "zipcode", "country", "country1", "coordinates", "coordinates_footnotes", "other_name", "other_names", "former_name", "former_names", "schooltype", "fundingtype", "type", "religious_affiliation", "denomination", "patron", "established", "founded", "opened", "founder", "founders", "status", "closed", "locale", "sister_school", "school_board", "district", "us_nces_district_id", "local_authority", "authority", "educational_authority", "category_label", "category", "oversight_label", "oversight", "trust", "authorizer", "superintendent", "trustee", "specialist", "specialists", "session", "school_number", "school_code", "urn", "MOE", "ofsted", "ceeb", "us_nces_school_id", "president", "chair_label", "chair", "chairman_label", "chairman", "chairperson_label", "chairperson", "dean", "administrator", "rector", "director", "principal_label", "principal", "principal_label1", "principal1", "principal_label2", "principal2", "principal_label3", "principal3", "principal_label4", "principal4", "campus_director", "headmistress", "headmaster", "head_of_school", "head_teacher", "executive_headteacher", "acting_headteacher", "head_name", "head", "head_name2", "head2", "r_head_label", "r_head", "officer_in_charge", "chaplain", "staff", "faculty", "teaching_staff", "employees", "key_people", "grades_label", "grades", "years", "years_taught", "nursery_years_taught", "primary_years_taught", "secondary_years_taught", "gender_label", "gender", "age_range", "lower_age", "upper_age", "enrollment", "enrollment_as_of", "capacity", "sixth_form_students", "grade_preK", "gradeK", "grade1", "grade2", "grade3", "grade4", "grade5", "grade6", "grade7", "grade8", "grade9", "grade10", "grade11", "grade12", "grade13", "other", "other_grade_label", "other_grade_enrollment", "other_grade_label_1", "other_grade_enrollment_1", "other_grade_label_2", "other_grade_enrollment_2", "international_students", "classes", "average_class_size", "ratio", "system", "classes_offered", "language", "schedule_type", "schedule", "hours_in_day", "classrooms", "campuses", "campus", "campus_size", "area", "campus_type", "houses", "student_union_label", "student_union", "colors", "slogan", "song", "fight_song", "athletics", "athletics_conference", "sports", "mascot", "nickname", "teams", "teams_label", "team_name", "rival", "accreditation", "USNWR_ranking", "national_ranking", "test_name", "test_average", "SAT", "SAT_year", "ACT", "ACT_year", "bar_pass_rate", "decile", "publication", "newspaper", "yearbook", "products", "endowment", "budget", "fees", "annual_tuition", "tuition", "revenue", "communities", "feeder_schools", "feeder_to", "graduates", "graduates_year", "affiliation", "alumni", "alumni_name", "nobel_laureates", "information", "free", "free_label", "free_1", "free_label1", "free_2", "free_label2", "free_3", "free_label3", "free_4", "free_label4", "free_5", "free_label5", "website", "footnotes", "picture", "picture_caption", "picture2", "picture_caption2", "module", "lastupdate" ], "description": "Infobox for details of school organisations" } </templatedata> {{collapse bottom}} == Microformat == {{UF-hcard-geo}} == Tracking categories == * {{clc|Pages using infobox school with a linked country}} * {{clc|Pages using infobox school with an unknown country}} * {{clc|Pages using infobox school with a linked country1}} * {{clc|Pages using infobox school with an unknown country1}} * {{clc|Pages using infobox school with a mascot image}} * {{clc|Pages using infobox school with the module parameter}} * {{clc|Pages using infobox school with unsupported parameters}} * {{clc|Pages using infobox school with coordinates not using the Coord template}} {{Organization infoboxes}} {{Buildings and structures infobox templates}} <includeonly>{{Sandbox other|| <!--Categories below this line, please; interwikis at Wikidata--> [[Category:Education infobox templates|School]] [[Category:Buildings and structures infobox templates|School]] [[Category:Infobox templates with module parameter|School]] [[Category:Infobox templates with updated parameter|School]] [[Category:Templates that add a tracking category]] }}</includeonly> b72047531e265292f22b2bcfa61716331bc787bf Module:Political party/A 828 1574 2909 2023-09-29T01:03:15Z w>Krisgabwoosh 0 Added entry. Scribunto text/plain -- Constant data used by [[Module:Political party]] local alternate = { ["A test"] = {main = "Business and Professional Group", abbrev = "AT", shortname = "atest"}, ["A Better Britain - Unionist Party"] = "British Unionist Party", ["A Better Britain – Unionist Party"] = "British Unionist Party", ["A Just Russia – For Truth"] = "A Just Russia — For Truth", ["A Public Party"] = "Other parties", ["Abolish the Welsh Assembly"] = "Abolish the Welsh Assembly Party", ["ABV"] = "Alternative for Bulgarian Revival", ["ACT Party"] = "ACT New Zealand", ["ACT Teachers"] = "ACT Teachers Partylist", ["Action Coalition for Thailand"] = "Action Coalition Party", ["Action Coalition for Thailand Party"] = "Action Coalition Party", ["Action Committee 5/6 Pensions for Everyone"] = "Alternative Democratic Reform Party", ["Action Committee for Democracy and Pensions Justice"] = "Alternative Democratic Reform Party", ["Action Party (Italy, 1848)"] = "Action Party (Italy, 1853)", ["Action (Italy)"] = "Action (Italian political party)", ["Adal (party)"] = "Adal (political party)", ["Adams Party (United States)"] = "Anti-Jacksonian Party", ["Adams-Clay Republican"] = "Anti-Jacksonian Party", ["Adelante Andalucía"] = "Adelante Andalucía (2018)", ["ADPL"] = "Hong Kong Association for Democracy and People's Livelihood", ["Advance NZ"] = "Advance New Zealand", ["African Independence Party of Guinea and Cape Verde"] = "African Party for the Independence of Guinea and Cape Verde", ["Aggrupation of Parties for Progress"] = "Aggrupation of Parties for Prosperity", ["Agrarian Party (Finland)"] = "Centre Party (Finland)", ["Agrarian Party (Tajikistan)"] = "Agrarian Party of Tajikistan", ["Agrarian Party of Albania"] = "Environmentalist Agrarian Party", ["Agreement for Catalonia Progress"] = "Catalan Agreement of Progress", ["Agreement of Left Nationalists"] = "Left Nationalists", ["Agreement of Nationalist Unity"] = "Canarian Coalition", ["AIADMK"] = "All India Anna Dravida Munnetra Kazhagam", ["Akbayan Citizens' Action Party"] = "Akbayan", ["Ak Zhol Democratic Party"] = "Aq Jol Democratic Party", ["Akhil Bharatiya Lok Tantrik Congress"] = "Akhil Bharatiya Loktantrik Congress", ["Aksyon Demokratiko"] = "Aksyon", ["Alabama Democratic Party"] = "Democratic Party (United States)", ["Alabama Republican Party"] = "Republican Party (United States)", ["Alaska Democratic Party"] = "Democratic Party (United States)", ["Alaska Libertarian Party"] = "Libertarian Party (US)", ["Alaska Republican Party"] = "Republican Party (United States)", ["Alaskan Independence Party"] = "Independence Party (US)", ["Albanian Fascist Party"] = "Fascist Party of Albania", ["Albanian Liberal Party"] = "Liberal Party of Albania", ["Alignment (political party)"] = "Alignment (Israel)", ["All"] = "Alleanza Bidla", ["All Ceylon Muslim Congress"] = "All Ceylon Makkal Congress", ["All India Majlis-E-Ittehadul Muslimeen"] = "All India Majlis-e-Ittehadul Muslimeen", ["All India Trinamool Congress"] = "Trinamool Congress", ["All-Ukrainian Union \"Fatherland\""] = "Batkivshchyna", ["All-Ukrainian Union \"Freedom\""] = "Svoboda (political party)", ["All-Ukrainian Union \"Svoboda\""] = "Svoboda (political party)", ["Alliance '90/The Greens"] = "Alliance 90/The Greens", ["Alliance (New Zealand)"] = "Alliance (New Zealand political party)", ["Alliance for Free Finland"] = "Independence Party (Finland)", ["Alliance for Human Rights, Animal and Environmental Protection"] = "Alliance for Human Rights, Animal and Nature Protection", ["Alliance for Progress and Renewal"] = "Liberal Conservative Reformers", ["Alliance for the Reliberation of Somalia"] = "Alliance for the Re-liberation of Somalia", ["Alliance of Alenka Bratušek"] = "Party of Alenka Bratušek", ["Alliance of Conservatives and Reformists in Europe"] = "Alliance of European Conservatives and Reformists", ["Alliance of Liberals and Democrats for Europe Group"] = "Alliance of Liberals and Democrats for Europe group", ["Alliance of Liberals and Democrats for Europe Party"] = "Alliance of Liberals and Democrats for Europe", ["Alliance Party"] = "Alliance Party (Fiji)", ["Alternativa (Italy)"] = "Alternativa (Italian political party)", ["Alternative List - Worth it"] = "Communist League of Luxemburg", ["American Independent Party (United States)"] = "American Independent Party", ["American Independent"] = "American Independent Party", ["American Party (United States)"] = "Know Nothing", ["American Party (US)"] = "Know Nothing", ["American Party (South Carolina)"] = "American Party of South Carolina", ["American Party"] = "Know Nothing", ["Amma Makkal Munnetra Kazhagam"] = "Amma Makkal Munnettra Kazhagam", ["Amma Makkal Munnettra Kazagam"] = "Amma Makkal Munnettra Kazhagam", ["Amplitude"] = "Amplitude (political party)", ["Amra Bangalee"] = "Amra Bangali", ["An Independence from Europe"] = "Independence from Europe", ["Anguilla United Front (2020)"] = "Anguilla United Front", ["Animals Count"] = "Animal Welfare Party", ["Anova-Nationalist Brotherhood"] = "Renewal–Nationalist Brotherhood", ["Anova–Nationalist Brotherhood"] = "Renewal–Nationalist Brotherhood", ["ANP"] = "Awami National Party", ["Anti-Partition of Ireland League"] = "Irish Anti-Partition League", ["Anti Revolutionary Party"] = "Anti-Revolutionary Party", ["Anti-Administration Party (United States)"] = "Anti-Administration Party (US)", ["Anti-Austerity Alliance-People Before Profit"] = "Anti-Austerity Alliance–People Before Profit", ["Anti-Jacksonian Party (United States)"] = "Anti-Jacksonian Party", ["Anti-Jacksonian Party (US)"] = "Anti-Jacksonian Party", ["Anti-Jacksonian"] = "Anti-Jacksonian Party", ["Anti-Lecompton Democratic Party (United States)"] = "Democratic Party (United States)", ["Anti-Masonic Party (United States)"] = "Anti-Masonic Party", ["Anti-Monopoly Party (United States)"] = "Anti-Monopoly Party (US)", ["Anti-Parnellite"] = "Irish National Federation", ["Aosta Valley"] = "Aosta Valley (political coalition)", ["AP–PDP–PDL–UCD"] = "People's Alliance (Spain)", ["Apna Dal (Soneylal)"] = "Apna Dal (Sonelal)", ["Arab Socialist Union (Syria)"] = "Arab Socialist Union Party (Syria)", ["AraCatalunya"] = "Ara Reus", ["Arise the Republic"] = "Debout la République", ["Arizona Democratic Party"] = "Democratic Party (United States)", ["Arizona Green Party"] = "Green Party (US)", ["Arizona Republican Party"] = "Republican Party (United States)", ["Armenian Democratic Liberal Party"] = "Ramgavar", ["Armenian Renaissance (party)"] = "Orinats Yerkir", ["Armenian Revolutionary Federation in Lebanon"] = "Armenian Revolutionary Federation", ["Article 1 – Democratic and Progressive Movement"] = "Article One (political party)", ["Article One (Italy)"] = "Article One (political party)", ["Article One"] = "Article One (political party)", ["Artikel 1"] = "BIJ1", ["Association for Democracy and People's Livelihood"] = "Hong Kong Association for Democracy and People's Livelihood", ["Association of Consumers and Taxpayers"] = "ACT New Zealand", ["Asturian Socialist Federation"] = "Spanish Socialist Workers' Party", ["Australian Country Party (1920)"] = "National Party of Australia", ["Australian Labour Party (Tasmanian Branch)"] = "Australian Labor Party (Tasmanian Branch)", ["Australian Labour Party"] = "Australian Labor Party", ["Authentic Party"] = "Partido Auténtico", ["Avante"] = "Avante (political party)", ["AWS"] = "Solidarity Electoral Action", ["Azerbaijan Democratic Party"] = "Azerbaijan Democrat Party", ["Azimio La Umoja"] = "Azimio la Umoja", } local full = { ["A test no values"] = {abbrev = "", color = "", shortname = "",}, ["A Better Future For Our Children"] = {abbrev = "ABFFOC", color = "#5F9EA0", shortname = "",}, ["A Change for Curaçao"] = {abbrev = "", color = "#368035", shortname = "",}, ["A Connecticut Party"] = {abbrev = "", color = "#FFA500", shortname = "",}, ["A Guadalajara Hay Que Quererla"] = {abbrev = "", color = "#47873F", shortname = "",}, ["A here ia Porinetia"] = {abbrev = "", color = "#17996B", shortname = "A here",}, ["A Just Costa Rica"] = {abbrev = "", color = "#02B2E3", shortname = "",}, ["A Just Russia"] = {abbrev = "SR", color = "#FFC003", shortname = "",}, ["A Just Russia — For Truth"] = {abbrev = "SRZP", color = "#FFC003", shortname = "",}, ["A la valenciana"] = {abbrev = "", color = "#2AAB8C", shortname = "",}, ["A New Era"] = {abbrev = "UNT", color = "#003399", shortname = "",}, ["A Partnership for National Unity"] = {abbrev = "APNU", color = "#1C9F43", shortname = "",}, ["A Worthy Extremadura"] = {abbrev = "UED", color = "#097565", shortname = "",}, ["A-Combination"] = {abbrev = "AC", color = "#F1C40F", shortname = "",}, ["A16 Alliance"] = {abbrev = "", color = "#F9AE3E", shortname = "",}, ["Aam Aadmi Party"] = {abbrev = "AAP", color = "#0072B0", shortname = "",}, ["Aama Odisha Party"] = {abbrev = "AOP", color = "#E1A95F", shortname = "",}, ["Aapna Punjab Party"] = {abbrev = "APP", color = "#43DCFF", shortname = "",}, ["Aarakashan Virodhi Party"] = {abbrev = "AVP", color = "#C171A1", shortname = "",}, ["ABAKO"] = {abbrev = "", color = "#F9E99C", shortname = "",}, ["Abantu Batho Congress"] = {abbrev = "", color = "#4EA338", shortname = "",}, ["ABBA (Malta)"] = {abbrev = "ABBA", color = "#4C015E", shortname = "",}, ["ABC (Cuba)"] = {abbrev = "", color = "#008000", shortname = "",}, ["Abertzaleen Batasuna"] = {abbrev = "", color = "#800020", shortname = "",}, ["Aberdeen Labour"] = {abbrev = "", color = "#ffbbbb", shortname = "",}, ["Abolish the Scottish Parliament Party"] = {abbrev = "", color = "#1D8DFF", shortname = "Abolish the Scottish Parliament",}, ["Abolish the Welsh Assembly Party"] = {abbrev = "", color = "#810000", shortname = "Abolish",}, ["Abolition of Income Tax and Usury Party"] = {abbrev = "", color = "#99FF00", shortname = "",}, ["Abono"] = {abbrev = "", color = "#B22222", shortname = "",}, ["Abundant Nigeria Renewal Party"] = {abbrev = "ANRP", color = "#008000", shortname = "",}, ["Academics In Support of Democracy"] = {abbrev = "", color = "#FFF100", shortname = "",}, ["Accessibility without Exclusion"] = {abbrev = "PASE", color = "#4682B4", shortname = "",}, ["Accion 21"] = {abbrev = "", color = "#0093D5", shortname = "",}, ["Acción Chaqueña"] = {abbrev = "", color = "#000080", shortname = "",}, ["Accord (Nigeria)"] = {abbrev = "A", color = "#99FF33", shortname = "",}, ["Aceh Abode Party"] = {abbrev = "PDA", color = "#48C5FF", shortname = "",}, ["Aceh Party"] = {abbrev = "PA", color = "#DA2625", shortname = "",}, ["Achdus"] = {abbrev = "", color = "#7F51C7", shortname = "",}, ["Acoma Party"] = {abbrev = "", color = "red", shortname = "",}, ["Acord Ciutadà"] = {abbrev = "", color = "#A91C30", shortname = "",}, ["Acord pes Mercadal i Fornells"] = {abbrev = "", color = "#EFAF50", shortname = "",}, ["Act (Brazil)"] = {abbrev = "", color = "#025B97", shortname = "Agir",}, ["ACT Greens"] = {abbrev = "", color = "#10C25B", shortname = "Greens",}, ["ACT New Zealand"] = {abbrev = "ACT", color = "#FDE401", shortname = "",}, ["Act to Stop the Decline"] = {abbrev = "", color = "#F00000", shortname = "",}, ["Action (Italian political party)"] = {abbrev = "", color = "#0039AA", shortname = "Action",}, ["Action – Italia Viva"] = {abbrev = "A-IV", color = "#283B87", shortname = "Action – Italia Viva",}, ["Action (Serbia)"] = {abbrev = "", color = "#90C64A", shortname = "",}, ["Action 18"] = {abbrev = "", color = "#1E5498", shortname = "",}, ["Action 9"] = {abbrev = "", color = "#DBE767", shortname = "",}, ["Action Alliance"] = {abbrev = "AA", color = "#3498DB", shortname = "",}, ["Action and Renewal Movement"] = {abbrev = "MAR", color = "#F6881F", shortname = "",}, ["Action Coalition Party"] = {abbrev = "", color = "#2A3994", shortname = "Action Coalition",}, ["Action Coalition Party (2023)"] = {abbrev = "", color = "#591283", shortname = "Action Coalition",}, ["Action Committee for Renewal"] = {abbrev = "", color = "#E4011C", shortname = "",}, ["Action Congress of Nigeria"] = {abbrev = "", color = "#0080FF", shortname = "",}, ["Action Democratic Party (Nigeria)"] = {abbrev = "ADP", color = "#000080", shortname = "",}, ["Action for Andorra"] = {abbrev = "", color = "#95D9D4", shortname = "Acció",}, ["Action for Change"] = {abbrev = "AC", color = "#FFE100", shortname = "",}, ["Action for Córdoba"] = {abbrev = "", color = "#AD1140", shortname = "",}, ["Action for Independence"] = {abbrev = "", color = "#00335A", shortname = "",}, ["Action for the Republic (Argentina)"] = {abbrev = "AxR", color = "#3E5298", shortname = "Action for the Republic",}, ["Action for the Republic (Catalonia)"] = {abbrev = "", color = "#EC008B", shortname = "",}, ["Action Front for Renewal and Development"] = {abbrev = "", color = "#DC143C", shortname = "",}, ["Action Group (Nigeria)"] = {abbrev = "", color = "red", shortname = "",}, ["Action Party (Italy, 1853)"] = {abbrev = "", color = "#F0002B", shortname = "",}, ["Action Party (Italy)"] = {abbrev = "", color = "#009246", shortname = "Action Party",}, ["Action Party (Latvia)"] = {abbrev = "", color = "#266AAB", shortname = "",}, ["Action Party (Morocco)"] = {abbrev = "", color = "#1E90FF", shortname = "",}, ["Action Party (UK)"] = {abbrev = "", color = "#2F4F4F", shortname = "Action",}, ["Action Peoples Party"] = {abbrev = "APP", color = "#2b2a29", shortname = "",}, ["ActionSA"] = {abbrev = "", color = "#05B615", shortname = "",}, ["Active and Social Participation for Cerdanyola"] = {abbrev = "", color = "#BB1816", shortname = "",}, ["Active Citizenship"] = {abbrev = "CA", color = "#BB0011", shortname = "",}, ["Active Xàtiva"] = {abbrev = "", color = "#F9C21D", shortname = "",}, ["Activism for Democracy Association"] = {abbrev = "", color = "#9F8170", shortname = "",}, ["Actúa Torrent"] = {abbrev = "", color = "#FE8D00", shortname = "",}, ["Actúa"] = {abbrev = "", color = "#007776", shortname = "",}, ["Actual Equality"] = {abbrev = "", color = "#2ABE9C", shortname = "",}, ["AD+PD"] = {abbrev = "", color = "#FFE700", shortname = "",}, ["Adal (political party)"] = {abbrev = "", color = "#26B173", shortname = "Adal",}, ["Adarshwaadi Congress Party"] = {abbrev = "ACP", color = "#81F7BE", shortname = "",}, ["Adelante Andalucía (2018)"] = {abbrev = "", color = "#4EB270", shortname = "Adelante Andalucía",}, ["Adelante Andalucía (2021)"] = {abbrev = "", color = "#24C87E", shortname = "Adelante Andalucía",}, ["Adelante Melilla"] = {abbrev = "", color = "#535D9B", shortname = "",}, ["Adelante Ourense"] = {abbrev = "", color = "#FBC000", shortname = "",}, ["Adelante Zamboanga Party"] = {abbrev = "AZAP", color = "#BE0032", shortname = "",}, ["Adhaalath Party"] = {abbrev = "AP", color = "#31c642", shortname = "",}, ["ADN Morvedre"] = {abbrev = "", color = "#A6489A", shortname = "",}, ["ADÑ"] = {abbrev = "", color = "#FF7E00", shortname = "",}, ["Advance (Ecuador)"] = {abbrev = "", color = "#017DB6", shortname = "",}, ["Advance New Zealand (1995)"] = {abbrev = "", color = "#AADDCC", shortname = "Advance NZ",}, ["Advance New Zealand"] = {abbrev = "", color = "#1987D1", shortname = "Advance NZ",}, ["Advance SA"] = {abbrev = "", color = "#10294F", shortname = "",}, ["Advance San Luis"] = {abbrev = "", color = "#24A1BD", shortname = "",}, ["Advance Together"] = {abbrev = "", color = "#FF008F", shortname = "Advance",}, ["Advance"] = {abbrev = "", color = "#0000FF", shortname = "",}, ["Advancement Unification Party"] = {abbrev = "AUP", color = "#0067A5", shortname = "Advancement Unification",}, ["Afar Liberation Front"] = {abbrev = "", color = "#4189DD", shortname = "",}, ["Afar National Democratic Party"] = {abbrev = "", color = "#1614BA", shortname = "",}, ["Afek Tounes"] = {abbrev = "", color = "#FF9900", shortname = "",}, ["Afghan Millat Party"] = {abbrev = "", color = "red", shortname = "",}, ["Africa Moral Party"] = {abbrev = "", color = "#47852C", shortname = "",}, ["Africa Muslim Party"] = {abbrev = "", color = "#009f00", shortname = "",}, ["Africa Restoration Alliance"] = {abbrev = "", color = "hotpink", shortname = "",}, ["African Action Congress"] = {abbrev = "AAC", color = "#6F4E37", shortname = "",}, ["African Christian Democratic Party"] = {abbrev = "ACDP", color = "#ba0c2f", shortname = "",}, ["African Congress of Democrats"] = {abbrev = "", color = "#D12626", shortname = "",}, ["African Content Movement"] = {abbrev = "", color = "#5a2d8a", shortname = "",}, ["African Covenant"] = {abbrev = "", color = "#164518", shortname = "",}, ["African Democratic Change"] = {abbrev = "", color = "#ff9933", shortname = "",}, ["African Democratic Congress"] = {abbrev = "ADC", color = "#00A86B", shortname = "",}, ["African Democratic Rally (Burkina Faso)"] = {abbrev = "", color = "#000000", shortname = "",}, ["African Democratic Rally"] = {abbrev = "", color = "#000000", shortname = "",}, ["African Forum for Reconstruction"] = {abbrev = "FAR", color = "red", shortname = "",}, ["African Independence Party – Renewal"] = {abbrev = "", color = "red", shortname = "",}, ["African Independence Party (Burkina Faso)"] = {abbrev = "", color = "red", shortname = "",}, ["African Independence Party (Touré)"] = {abbrev = "", color = "red", shortname = "",}, ["African Independent Congress"] = {abbrev = "AIC", color = "#ffb543", shortname = "",}, ["African National Congress"] = {abbrev = "ANC", color = "#006600", shortname = "",}, ["African Party for the Independence of Cape Verde"] = {abbrev = "PAICV", color = "#FCD116", shortname = "",}, ["African Party for the Independence of Guinea and Cape Verde"] = {abbrev = "PAIGC", color = "#FF0000", shortname = "",}, ["African Patriots of Senegal for Work, Ethics and Fraternity"] = {abbrev = "PASTEF", color = "#B13131", shortname = "",}, ["African People's Bloc"] = {abbrev = "BPA", color = "#F38C22", shortname = "",}, ["African People's Convention"] = {abbrev = "", color = "#007500", shortname = "",}, ["African People's Socialist Party"] = {abbrev = "", color = "#EA202C", shortname = "African People's Socialist",}, ["African Regroupment Party – Senegal"] = {abbrev = "", color = "#5C96C4", shortname = "",}, ["African Renaissance Unity Party"] = {abbrev = "", color = "#85251B", shortname = "",}, ["African Security Congress"] = {abbrev = "", color = "#F21313", shortname = "",}, ["African Socialist Movement"] = {abbrev = "", color = "#CD5C5C", shortname = "",}, ["African Solidarity for Democracy and Independence"] = {abbrev = "", color = "#CC0707", shortname = "",}, ["African Transformation Movement"] = {abbrev = "ATM", color = "#00ADEE", shortname = "",}, ["Afrikan Alliance of Social Democrats"] = {abbrev = "", color = "#179123", shortname = "",}, ["Afrikaner Party"] = {abbrev = "", color = "#007090", shortname = "",}, ["Afrikaner self-determination Party"] = {abbrev = "", color = "#FF9900", shortname = "",}, ["Afro-Shirazi Party"] = {abbrev = "", color = "#000000", shortname = "",}, ["AFROVIDES"] = {abbrev = "", color = "#555555", shortname = "",}, ["Against all"] = {abbrev = "", color = "#000000", shortname = "",}, ["Agalev"] = {abbrev = "", color = "#1B7710", shortname = "",}, ["Agang South Africa"] = {abbrev = "", color = "#008752", shortname = "Agang SA",}, ["Agano Party"] = {abbrev = "", color = "Purple", shortname = "Agano",}, ["Agar Jan Party"] = {abbrev = "AGRJP", color = "#B9C1C0", shortname = "",}, ["Aggrupation of Parties for Prosperity"] = {abbrev = "APP", color = "#1325ae", shortname = "",}, ["Agir (France)"] = {abbrev = "", color = "#43519E", shortname = "Agir",}, ["Agora (Belgium)"] = {abbrev = "", color = "#4DBCB4", shortname = "",}, ["Agrarian Alliance"] = {abbrev = "ASZ", color = "#EDED00", shortname = "",}, ["Agrarian Bloc Electoral Group"] = {abbrev = "", color = "#32B2A3", shortname = "",}, ["Agrarian Labor Party"] = {abbrev = "", color = "#008000", shortname = "",}, ["Agrarian Labour Action Party"] = {abbrev = "PALA", color = "#8f5100", shortname = "",}, ["Agrarian League (Finland)"] = {abbrev = "", color = "#74C365", shortname = "Agrarian",}, ["Agrarian League (Spain)"] = {abbrev = "", color = "#124838", shortname = "",}, ["Agrarian Liberal Party"] = {abbrev = "", color = "#548D54", shortname = "",}, ["Agrarian Democratic Party"] = {abbrev = "ADS", color = "#30A741", shortname = "",}, ["Agrarian Party (Chile)"] = {abbrev = "", color = "#9ACD32", shortname = "",}, ["Agrarian Party (Italy)"] = {abbrev = "", color = "#006600", shortname = "Agrarian",}, ["Agrarian Party (Yugoslavia)"] = {abbrev = "", color = "#3D863D", shortname = "",}, ["Agrarian Party of Greece"] = {abbrev = "", color = "yellow", shortname = "Agrarian",}, ["Agrarian Party of Moldova"] = {abbrev = "", color = "#16924C", shortname = "",}, ["Agrarian Party of Russia"] = {abbrev = "APR", color = "#EED23C", shortname = "",}, ["Agrarian Party of Tajikistan"] = {abbrev = "", color = "#FDDC1D", shortname = "",}, ["Agrarian Party of Turkmenistan"] = {abbrev = "TAP", color = "#FFD700", shortname = "",}, ["Agrarian Party of Ukraine"] = {abbrev = "APU", color = "#80AC4D", shortname = "",}, ["Agrarian Patriotic Front"] = {abbrev = "FREPAB", color = "#F3D09C", shortname = "",}, ["Agrarian People's Union"] = {abbrev = "", color = "#FF7212", shortname = "",}, ["Agrarian Union (Poland)"] = {abbrev = "ZC", color = "#279B6A", shortname = "",}, ["Agrarian Union \"Aleksandar Stamboliyski\""] = {abbrev = "", color = "#FE9901", shortname = "",}, ["Agreement (political party)"] = {abbrev = "", color = "#230871", shortname = "",}, ["Agreement for the Country"] = {abbrev = "IpP", color = "#0061A5", shortname = "",}, ["Agreement of Independents for Badalona"] = {abbrev = "", color = "#4CC417", shortname = "",}, ["Agreement of the Catalans"] = {abbrev = "", color = "#FFD901", shortname = "",}, ["Agricultural and Labour Party"] = {abbrev = "AEK", color = "#ffb4a1", shortname = "",}, ["Agricultural League"] = {abbrev = "RLB", color = "#52AE6F", shortname = "",}, ["Agricultural Party of Greece"] = {abbrev = "", color = "yellow", shortname = "",}, ["Agricultural Party"] = {abbrev = "", color = "#F4A460", shortname = "",}, ["Agricultural Party (Costa Rica)"] = {abbrev = "", color = "#008000", shortname = "Agricultural",}, ["Agricultural Party (Czech Republic)"] = {abbrev = "ZS", color = "#00B233", shortname = "",}, ["Agricultural People's Front of Peru"] = {abbrev = "FREPAP", color = "#00009B", shortname = "",}, ["Agriculturalist Party"] = {abbrev = "", color = "#B8D8C9", shortname = "Agriculturalist",}, ["Agriculture and Development"] = {abbrev = "", color = "#AF0000", shortname = "",}, ["Agriculture First"] = {abbrev = "", color = "#5FC099", shortname = "",}, ["AGROunia"] = {abbrev = "", color = "#BBCB15", shortname = "",}, ["Aguadulce en Marcha"] = {abbrev = "", color = "#00A0B0", shortname = "",}, ["Agudas Israel (Latvia)"] = {abbrev = "", color = "lightblue", shortname = "Agudas Israel",}, ["Agudat Yisrael"] = {abbrev = "", color = "#033669", shortname = "",}, ["Ahd 54"] = {abbrev = "", color = "#2D5A20", shortname = "",}, ["Ahdut HaAvoda"] = {abbrev = "", color = "#CE2029", shortname = "",}, ["Ahora Almería"] = {abbrev = "", color = "#137776", shortname = "",}, ["Ahora Arganda"] = {abbrev = "", color = "#00A58E", shortname = "",}, ["Ahora Basauri Orain"] = {abbrev = "", color = "#016703", shortname = "",}, ["Ahora Canarias"] = {abbrev = "", color = "#11865C", shortname = "",}, ["Ahora Ciempozuelos"] = {abbrev = "", color = "#3F9D2F", shortname = "",}, ["Ahora Decide"] = {abbrev = "", color = "#198100", shortname = "",}, ["Ahora Estella"] = {abbrev = "", color = "#B21AAA", shortname = "",}, ["Ahora Getafe"] = {abbrev = "", color = "#7F4098", shortname = "",}, ["Ahora Guadalajara"] = {abbrev = "", color = "#810081", shortname = "",}, ["Ahora Madrid"] = {abbrev = "", color = "#00A58E", shortname = "",}, ["Ahora Patria"] = {abbrev = "", color = "#FFFF00", shortname = "",}, ["Ahora Repúblicas"] = {abbrev = "", color = "#FCBC43", shortname = "",}, ["Ahora Santa Cruz"] = {abbrev = "", color = "#6A205F", shortname = "",}, ["Ahora Sí Torremolinos"] = {abbrev = "", color = "#BB9031", shortname = "",}, ["Ailtirí na hAiséirghe"] = {abbrev = "AnaA", color = "#004400", shortname = "Ailtirí na hAiséirghe",}, ["Aitaira"] = {abbrev = "", color = "#0000FF", shortname = "",}, ["Ak Jol"] = {abbrev = "", color = "#FF7070", shortname = "",}, ["Akali Dal"] = {abbrev = "", color = "#72474c", shortname = "",}, ["Akali Dal – Sant Fateh Singh Group"] = {abbrev = "AD(SFS)", color = "#FF8000", shortname = "Akali Dal (SFS)",}, ["Akbayan"] = {abbrev = "", color = "#FE0000", shortname = "Akbayan",}, ["Akha National Development Party"] = {abbrev = "ANDP", color = "#374BA1", shortname = "",}, ["Akhand Bharat Mahasang Sarvahara Krantikari Party"] = {abbrev = "ABMSKP", color = "#DFB43D", shortname = "",}, ["Akhand Bharat Samaj Party"] = {abbrev = "ABSP", color = "#9AFE2E", shortname = "",}, ["Akhand Bharti"] = {abbrev = "AB", color = "#9AFE2E", shortname = "",}, ["Akhil Bharat Hindu Mahasabha"] = {abbrev = "ABHM", color = "#FFFF00", shortname = "",}, ["Akhil Bharatiya Aman Committee"] = {abbrev = "ABAC", color = "#D2EFF0", shortname = "",}, ["Akhil Bharatiya Congress Dal (Ambedkar)"] = {abbrev = "ABCD", color = "#FFCCCC", shortname = "",}, ["Akhil Bharatiya Dalit Utthan Party"] = {abbrev = "ABDUP", color = "#F2F5A9", shortname = "",}, ["Akhil Bharatiya Dharmnirpeksh Dal"] = {abbrev = "DND", color = "#EBD023", shortname = "",}, ["Akhil Bharatiya Gorkha League"] = {abbrev = "ABGL", color = "#7E5692", shortname = "",}, ["Akhil Bharatiya Hindu Mahasabha"] = {abbrev = "ABHM", color = "orange", shortname = "",}, ["Akhil Bharatiya Jana Sangh"] = {abbrev = "ABJS", color = "#FF9933", shortname = "",}, ["Akhil Bharatiya Janata Congress"] = {abbrev = "ABJC", color = "#08088A", shortname = "",}, ["Akhil Bharatiya Janata Vikas Party"] = {abbrev = "BJVP", color = "#A9F5BC", shortname = "",}, ["Akhil Bharatiya Loktantrik Congress"] = {abbrev = "ABLTC", color = "#93DE73", shortname = "",}, ["Akhil Bharatiya Manav Adhikar Dal"] = {abbrev = "ABMAD", color = "#A264C1", shortname = "",}, ["Akhil Bharatiya Ram Rajya Parishad"] = {abbrev = "RRP", color = "#330033", shortname = "",}, ["Akhil Bharatiya Rashtriya Azad Hind Party"] = {abbrev = "ABRAHP", color = "#FFFF66", shortname = "",}, ["Akhil Bharatiya Sena"] = {abbrev = "ABS", color = "#3060D0", shortname = "",}, ["Akhil Bharatiya Shivsena Rashtrawadi"] = {abbrev = "SHS", color = "#A9F5A9", shortname = "",}, ["Akhil Bharatiya Shoshit Samaj Dal"] = {abbrev = "SSD", color = "#F2F5A9", shortname = "",}, ["Akhil Bharatiya Sudhar Party"] = {abbrev = "ABSP", color = "#8A4B08", shortname = "",}, ["Akhil Bharatiya Vikas Congress Party"] = {abbrev = "ABVCP", color = "#F2F5A9", shortname = "",}, ["Akhila India Jananayaka Makkal Katchi"] = {abbrev = "AIJMK", color = "Red", shortname = "",}, ["Akhl Bharatiya Garib Mazdoor Kisan Party"] = {abbrev = "ABGMKP", color = "#ADEFE5", shortname = "",}, ["Akila India Jananayaka Makkal Katchi"] = {abbrev = "AIJMK", color = "", shortname = "",}, ["AKMA-PTM"] = {abbrev = "", color = "#fbe405", shortname = "",}, ["Ako Bicol Political Party"] = {abbrev = "", color = "#ffff00", shortname = "Ako Bicol",}, ["Akshumkar"] = {abbrev = "", color = "#3DBCCB", shortname = "",}, ["Aksyon"] = {abbrev = "AD", color = "#9683EC", shortname = "Aksyon",}, ["Aktsent"] = {abbrev = "", color = "#008DA2", shortname = "",}, ["Al Asalah"] = {abbrev = "", color = "#00568B", shortname = "",}, ["Al Jama-ah"] = {abbrev = "", color = "#1c9069", shortname = "",}, ["Al Wefaq"] = {abbrev = "", color = "#0D4173", shortname = "",}, ["Al-Ahbash"] = {abbrev = "", color = "#DDB531", shortname = "",}, ["Al-Ahrar Bloc"] = {abbrev = "", color = "#000000", shortname = "al-Ahrar",}, ["Al-Arabiya Coalition"] = {abbrev = "", color = "#57888D", shortname = "al-Arabiya",}, ["Al-ʽAhd (Morocco)"] = {abbrev = "", color = "#915701", shortname = "",}, ["Al-Irada"] = {abbrev = "", color = "#ACACAC", shortname = "",}, ["Al-Islah (Yemen)"] = {abbrev = "", color = "#0463D1", shortname = "Al-Islah",}, ["Al-Menber Islamic Society"] = {abbrev = "", color = "#E93230", shortname = "",}, ["Al-Muthanna Club"] = {abbrev = "", color = "#000000", shortname = "",}, ["Al-Muwatin"] = {abbrev = "", color = "#009933", shortname = "",}, ["Al-Nour Party"] = {abbrev = "", color = "#000000", shortname = "al-Nour",}, ["Al-Sadiqoun Bloc"] = {abbrev = "", color = "#B5CA7F", shortname = "",}, ["Al-Wasat Party"] = {abbrev = "", color = "#A52A2A", shortname = "",}, ["Al-Watan Party (Tunisia)"] = {abbrev = "", color = "#1E90FF", shortname = "",}, ["Al-Wataniya"] = {abbrev = "", color = "#B5CA7F", shortname = "",}, ["Alajuelense Democratic Action"] = {abbrev = "PADA", color = "#FF7E1C", shortname = "",}, ["Alajuelense Solidarity Party"] = {abbrev = "PSA", color = "#D41C00", shortname = "",}, ["Alanian Union"] = {abbrev = "AU", color = "#000000", shortname = "",}, ["Alavese Unity"] = {abbrev = "", color = "#3159A5", shortname = "",}, ["Alba Party"] = {abbrev = "", color = "#005EB8", shortname = "Alba",}, ["Albanian Alternative"] = {abbrev = "ASH", color = "darkblue", shortname = "",}, ["Albanian Christian Democratic Party of Kosovo"] = {abbrev = "", color = "#4775BF", shortname = "",}, ["Albanian Coalition"] = {abbrev = "KSH", color = "#800000", shortname = "",}, ["Albanian Coalition of Preševo Valley"] = {abbrev = "KSLP", color = "#0081CC", shortname = "",}, ["Albanian Democratic Union Party"] = {abbrev = "PBDSH", color = "#6192ad", shortname = "",}, ["Albanian List (Montenegro)"] = {abbrev = "LSh", color = "#E62927", shortname = "",}, ["Albanian National Front Party"] = {abbrev = "PBK", color = "black", shortname = "",}, ["Albanians Decisively"] = {abbrev = "AO", color = "#00aae5", shortname = "",}, ["Alberta Independence Party"] = {abbrev = "", color = "#55ba47", shortname = "",}, ["Alcalá 100%"] = {abbrev = "", color = "#1D88BE", shortname = "",}, ["Alcalá Habitable"] = {abbrev = "", color = "#336F27", shortname = "",}, ["Alcalá Puede"] = {abbrev = "", color = "#7F215F", shortname = "",}, ["Alderney representatives"] = {abbrev = "", color = "#BABCDB", shortname = "",}, ["Ale Yarok"] = {abbrev = "", color = "#799A00", shortname = "",}, ["Aleksa and Dritan – Count Bravely!"] = {abbrev = "", color = "#69BD44", shortname = "Count Bravely!",}, ["Alfarista Radical Front"] = {abbrev = "FRA", color = "#4169E1", shortname = "",}, ["Algaida for the Development of Sanlúcar"] = {abbrev = "", color = "#94FF00", shortname = "",}, ["Algeciras 100x100"] = {abbrev = "", color = "#E75200", shortname = "",}, ["Algeciras Citizen Action"] = {abbrev = "", color = "#FFC800", shortname = "",}, ["Algeciras Sí Se Puede"] = {abbrev = "", color = "#761B5E", shortname = "",}, ["Algerian Communist Party"] = {abbrev = "", color = "#CD0000", shortname = "",}, ["Algerian National Front"] = {abbrev = "FNA", color = "#406080", shortname = "",}, ["Algerian Popular Movement"] = {abbrev = "MPA", color = "green", shortname = "",}, ["Algerian Rally"] = {abbrev = "RA", color = "green", shortname = "",}, ["Alliance Party for Progress"] = {abbrev = "APP", color = "#0E9345", shortname = "",}, ["Alianza Puertorriqueña"] = {abbrev = "", color = "#F0DC82", shortname = "",}, ["Alignment (Israel)"] = {abbrev = "", color = "#3DEAFD", shortname = "Alignment",}, ["Alive Land Palencia Independent Group"] = {abbrev = "", color = "#FF9900", shortname = "",}, ["All-Armenian National Statehood Party"] = {abbrev = "", color = "#0620FD", shortname = "",}, ["All Basotho Convention"] = {abbrev = "ABC", color = "#F5D42D", shortname = "",}, ["All Blended Party"] = {abbrev = "ABP", color = "#040A55", shortname = "",}, ["All Ceylon Makkal Congress"] = {abbrev = "", color = "#9acd32", shortname = "",}, ["All Ceylon Tamil Congress"] = {abbrev = "", color = "#FFFF00", shortname = "",}, ["All-Democratic Agricultural Front"] = {abbrev = "PAME", color = "#FF0000", shortname = "",}, ["All for Latvia!"] = {abbrev = "", color = "#5A0505", shortname = "",}, ["All for Unity"] = {abbrev = "", color = "#2C5781", shortname = "",}, ["All India Anna Dravida Munnetra Kazhagam"] = {abbrev = "AIADMK", color = "#009546", shortname = "",}, ["All India Bahujan Samman Party"] = {abbrev = "AIBSP", color = "#A9F5D0", shortname = "",}, ["All India Dalit Muslim Minorities Suraksha Mahasangh"] = {abbrev = "DMM", color = "#14D00D", shortname = "",}, ["All India Forward Bloc (Marxist)"] = {abbrev = "FBL(M)", color = "#259268", shortname = "",}, ["All India Forward Bloc"] = {abbrev = "AIFB", color = "#ac1313", shortname = "",}, ["All India Ganatantra Parishad"] = {abbrev = "AIGP", color = "#FF33CC", shortname = "",}, ["All India Indira Congress (Tiwari)"] = {abbrev = "AIIC(T)", color = "#00FFFF", shortname = "",}, ["All India Jharkhand Party"] = {abbrev = "", color = "#CC9999", shortname = "",}, ["All India Mahila Empowerment Party"] = {abbrev = "AIMEP", color = "#FFF", shortname = "",}, ["All India Majlis-e-Ittehadul Muslimeen"] = {abbrev = "AIMIM", color = "#0c6b4b", shortname = "",}, ["All India Minorities Front"] = {abbrev = "AIMF", color = "#00FFFF", shortname = "",}, ["All India Moovendar Munnani Kazhagam"] = {abbrev = "", color = "Red", shortname = "",}, ["All India Muslim Forum"] = {abbrev = "", color = "green", shortname = "",}, ["All India N.R. Congress"] = {abbrev = "AINRC", color = "#FDA209", shortname = "",}, ["All India Party for the Protection of Civil Rights"] = {abbrev = "AIPPCR", color = "mistyrose", shortname = "",}, ["All India Rajiv Krantikari Congress"] = {abbrev = "AIRKC", color = "#417A81", shortname = "",}, ["All India Rashtriya Janata Party"] = {abbrev = "AIRJP", color = "#9A5815", shortname = "",}, ["All India Samathuva Makkal Katchi"] = {abbrev = "SMK", color = "#fe0000", shortname = "",}, ["All India United Democratic Front"] = {abbrev = "AIUDF", color = "#348017", shortname = "",}, ["All Jammu and Kashmir Muslim Conference"] = {abbrev = "AJKMC", color = "#F4A460", shortname = "",}, ["All Jharkhand Students Union"] = {abbrev = "AJSU", color = "#6827B5", shortname = "",}, ["All Liberia Coalition Party"] = {abbrev = "ALCP", color = "#000000", shortname = "",}, ["All Liberian Party"] = {abbrev = "ALP", color = "#fd0f0d", shortname = "",}, ["All Malaysian Indian Progressive Front"] = {abbrev = "", color = "#EC2029", shortname = "",}, ["All Mon Region Democracy Party"] = {abbrev = "AMRDP", color = "#DC143C", shortname = "",}, ["All Nigeria Peoples Party"] = {abbrev = "ANPP", color = "#0000CD", shortname = "",}, ["All Pakistan Awami Muslim League"] = {abbrev = "", color = "#006a4e", shortname = "",}, ["All Pakistan Muslim League"] = {abbrev = "APML", color = "#556B2F", shortname = "",}, ["All Party Alliance"] = {abbrev = "", color = "#C19A6B", shortname = "",}, ["All Party Hill Leaders Conference"] = {abbrev = "AHL", color = "#FFFF00", shortname = "",}, ["All People Front"] = {abbrev = "PM", color = "red", shortname = "",}, ["All Peoples Party"] = {abbrev = "", color = "#9e13c4", shortname = "",}, ["All People's Congress (Ghana)"] = {abbrev = "", color = "#106338", shortname = "",}, ["All People's Congress"] = {abbrev = "APC", color = "#FF0000", shortname = "",}, ["All People's Party (Namibia)"] = {abbrev = "APP", color = "#D84F23", shortname = "",}, ["All People's Party (UK)"] = {abbrev = "", color = "DarkOrange", shortname = "All People's Party",}, ["All Progressives Congress"] = {abbrev = "APC", color = "#87BEEB", shortname = "",}, ["All Progressives Grand Alliance"] = {abbrev = "APGA", color = "#00923F", shortname = "",}, ["All Scotland Pensioners Party"] = {abbrev = "", color = "#BBD9DB", shortname = "",}, ["All Together (Serbia)"] = {abbrev = "SZ", color = "brown", shortname = "",}, ["All-for-Ireland League"] = {abbrev = "AFI", color = "#66FF99", shortname = "All-for-Ireland",}, ["All-German Bloc/League of Expellees and Deprived of Rights"] = {abbrev = "GB/BHE", color = "#C3C318", shortname = "",}, ["All-German People's Party"] = {abbrev = "GVP", color = "#FF7F00", shortname = "",}, ["All-In Democracy"] = {abbrev = "", color = "#DDDDDD", shortname = "",}, ["All-India Muslim League"] = {abbrev = "AIML", color = "#008000", shortname = "",}, ["All-Ukrainian Political Movement \"State Independence of Ukraine\""] = {abbrev = "DSU", color = "#ff0080", shortname = "",}, ["All-Ukrainian Union \"Cherkashchany\""] = {abbrev = "", color = "lightblue", shortname = "Cherkashchany",}, ["All-Union Communist Party of Bolsheviks (1991)"] = {abbrev = "", color = "#881300", shortname = "",}, ["Allah-o-Akbar Tehreek"] = {abbrev = "AAT", color = "#FFD700", shortname = "",}, ["Alleanza Bidla"] = {abbrev = "", color = "purple", shortname = "",}, ["Alleanza Lombarda Autonomia"] = {abbrev = "ALA", color = "green", shortname = "",}, ["Allegiance Party (Papua New Guinea)"] = {abbrev = "AP", color = "#233F92", shortname = "",}, ["Alliance (Argentina)"] = {abbrev = "", color = "#0AABDB", shortname = "Alianza",}, ["Alliance (Chile)"] = {abbrev = "", color = "#4682B4", shortname = "Alliance",}, ["Alliance (Kyrgyz political party)"] = {abbrev = "", color = "#25AAE2", shortname = "Alliance",}, ["Alliance (New Zealand political party)"] = {abbrev = "", color = "#33CC66", shortname = "Alliance",}, ["Alliance (Portugal)"] = {abbrev = "", color = "#6AD1E3", shortname = "",}, ["Alliance (Norway)"] = {abbrev = "", color = "#f47b20", shortname = "Alliance",}, ["Alliance (Slovak political party)"] = {abbrev = "", color = "#F48B24", shortname = "",}, ["Alliance 21/RRP"] = {abbrev = "", color = "#C0C0C0", shortname = "",}, ["Alliance 90"] = {abbrev = "B90", color = "green", shortname = "",}, ["Alliance 90/Greens of Serbia"] = {abbrev = "S90", color = "#286019", shortname = "",}, ["Alliance 90/The Greens"] = {abbrev = "", color = "#64A12D", shortname = "Greens",}, ["Alliance C – Christians for Germany"] = {abbrev = "", color = "#00529C", shortname = "Bündnis C",}, ["Alliance for a Triumphant Benin"] = {abbrev = "", color = "#CBE08F", shortname = "",}, ["Alliance for Albanians"] = {abbrev = "AS", color = "#6D3D87", shortname = "",}, ["Alliance for Barangay Concerns"] = {abbrev = "ABC", color = "#010066", shortname = "",}, ["Alliance for Brazil"] = {abbrev = "", color = "#008000", shortname = "",}, ["Alliance for Burgos"] = {abbrev = "", color = "#9F9152", shortname = "",}, ["Alliance for Change"] = {abbrev = "", color = "#ED6C10", shortname = "",}, ["Alliance for Change (Guyana)"] = {abbrev = "AFC", color = "#FFCC01", shortname = "",}, ["Alliance for Change (Macau)"] = {abbrev = "MUDAR", color = "#00AB66", shortname = "",}, ["Alliance for Change (Venezuela)"] = {abbrev = "", color = "#F50087", shortname = "",}, ["Alliance for Change and Progress"] = {abbrev = "AMP", color = "#10B0E0", shortname = "",}, ["Alliance for Change and Transparency"] = {abbrev = "", color = "#A03389", shortname = "ACT–Wazalendo",}, ["Alliance for Commerce and Housing"] = {abbrev = "", color = "#FFED00", shortname = "",}, ["Alliance for Croatia"] = {abbrev = "", color = "#5D93D3", shortname = "",}, ["Alliance for Democracy (Dominican Republic)"] = {abbrev = "", color = "#80A7BF", shortname = "",}, ["Alliance for Democracy (Malawi)"] = {abbrev = "AFORD", color = "#25D9FA", shortname = "",}, ["Alliance for Democracy (Nigeria)"] = {abbrev = "AD", color = "#186315", shortname = "",}, ["Alliance for Democracy and Federation – African Democratic Rally"] = {abbrev = "", color = "#FFEF00", shortname = "",}, ["Alliance for Democracy and Freedom (UK)"] = {abbrev = "ADF", color = "#002182", shortname = "",}, ["Alliance for Democracy and Reforms"] = {abbrev = "", color = "blue", shortname = "",}, ["Alliance for Democracy in Mali"] = {abbrev = "ADEMA-PASJ", color = "#EB1D2A", shortname = "",}, ["Alliance for Democratic Change"] = {abbrev = "", color = "navy", shortname = "",}, ["Alliance for Democratic Renewal"] = {abbrev = "", color = "#D9BF08", shortname = "",}, ["Alliance for Development and Nature"] = {abbrev = "", color = "#1D463B", shortname = "",}, ["Alliance for Direct Democracy in Europe"] = {abbrev = "", color = "#800080", shortname = "",}, ["Alliance for Equality and European Justice"] = {abbrev = "ABDE", color = "", shortname = "",}, ["Alliance for Europe of the Nations"] = {abbrev = "AEN", color = "#00DDDD", shortname = "",}, ["Alliance for Germany"] = {abbrev = "AFD", color = "#2483BB", shortname = "",}, ["Alliance for Green Socialism"] = {abbrev = "", color = "#00A86B", shortname = "",}, ["Alliance for Human Rights, Animal and Nature Protection"] = {abbrev = "", color = "#3d499a", shortname = "Tierschutzallianz",}, ["Alliance for Innovation and Justice"] = {abbrev = "BIG", color = "orange", shortname = "",}, ["Alliance for Italy"] = {abbrev = "", color = "#89CFF0", shortname = "",}, ["Alliance for Justice and Democracy/Movement for Renewal"] = {abbrev = "AJD/MR", color = "#000000", shortname = "",}, ["Alliance for Local Living"] = {abbrev = "ALL", color = "#11B4BB", shortname = "",}, ["Alliance for National Transformation"] = {abbrev = "", color = "#9954AD", shortname = "",}, ["Alliance for New Nigeria"] = {abbrev = "ANN", color = "#358C43", shortname = "",}, ["Alliance for Patriotic Reorientation and Construction"] = {abbrev = "APRC", color = "#0D6F4A", shortname = "",}, ["Alliance for Peace and Democracy (Liberia)"] = {abbrev = "", color = "#E1EC2C", shortname = "",}, ["Alliance for Peace and Freedom"] = {abbrev = "", color = "#000000", shortname = "",}, ["Alliance for Progress (Peru)"] = {abbrev = "APP", color = "#1155cc", shortname = "",}, ["Alliance for Progressives"] = {abbrev = "AP", color = "#662E91", shortname = "",}, ["Alliance for Real Change"] = {abbrev = "", color = "#730026", shortname = "",}, ["Alliance for Romanian Unity"] = {abbrev = "AUR", color = "blue", shortname = "",}, ["Alliance for Ronda"] = {abbrev = "", color = "#3E79BF", shortname = "",}, ["Alliance for Social and Economic Advancement"] = {abbrev = "ASEA", color = "#009EE3", shortname = "",}, ["Alliance for Tanzania Farmers Party"] = {abbrev = "AFP", color = "green", shortname = "",}, ["Alliance for the Development of Macau"] = {abbrev = "", color = "#FFD700", shortname = "",}, ["Alliance for the Fatherland"] = {abbrev = "", color = "#08099F", shortname = "",}, ["Alliance for the Future (Czech Republic)"] = {abbrev = "", color = "#005094", shortname = "",}, ["Alliance for the Future (Peru)"] = {abbrev = "", color = "#FF7F00", shortname = "",}, ["Alliance for the Future of Austria"] = {abbrev = "BZÖ", color = "#F29400", shortname = "",}, ["Alliance for the Future of Kosovo"] = {abbrev = "AAK", color = "#03112C", shortname = "",}, ["Alliance for the Great Change"] = {abbrev = "", color = "#00B0F6", shortname = "",}, ["Alliance for the Progress of Peru"] = {abbrev = "", color = "#1E5BA8", shortname = "",}, ["Alliance for the Re-liberation of Somalia"] = {abbrev = "ARS", color = "#000000", shortname = "",}, ["Alliance for the Republic (Nicaragua)"] = {abbrev = "APRE", color = "#800080", shortname = "",}, ["Alliance for the Republic (Senegal)"] = {abbrev = "APR", color = "#704214", shortname = "",}, ["Alliance for the Republic (Spain)"] = {abbrev = "", color = "#C00040", shortname = "",}, ["Alliance for the Union of Romanians"] = {abbrev = "AUR", color = "#FCC224", shortname = "",}, ["Alliance for Transformation for All"] = {abbrev = "", color = "#47A165", shortname = "",}, ["Alliance for Workers' Liberty"] = {abbrev = "", color = "red", shortname = "",}, ["Alliance Germany"] = {abbrev = "BD", color = "#ff1493", shortname = "",}, ["Alliance of Builders of Islamic Iran"] = {abbrev = "ABII", color = "#3835ba", shortname = "",}, ["Alliance of Chinese and Expatriates"] = {abbrev = "ACE", color = "#99221A", shortname = "",}, ["ACT Teachers Partylist"] = {abbrev = "", color = "#ADD8E6", shortname = "ACT Teachers",}, ["Alliance of Democrats (Lesotho)"] = {abbrev = "AD", color = "#7F0305", shortname = "",}, ["Alliance of Democrats (Poland)"] = {abbrev = "SD", color = "#475196", shortname = "",}, ["Alliance of European Conservatives and Reformists"] = {abbrev = "AECR", color = "#0054A5", shortname = "",}, ["Alliance of European National Movements"] = {abbrev = "", color = "#000055", shortname = "",}, ["Alliance of Free Democrats"] = {abbrev = "SZDSZ", color = "#1CA8E6", shortname = "",}, ["Alliance of German Democrats"] = {abbrev = "ADD", color = "#1e5ea5", shortname = "",}, ["Alliance of Independent Democrats in Europe"] = {abbrev = "ADIE", color = "#000066", shortname = "",}, ["Alliance of Independent Social Democrats"] = {abbrev = "SNSD", color = "#990000", shortname = "",}, ["Alliance of Independents"] = {abbrev = "LdU", color = "#019c3e", shortname = "",}, ["Alliance of Liberals and Democrats (Romania)"] = {abbrev = "ALDE", color = "#005487", shortname = "",}, ["Alliance of Liberals and Democrats for Europe group"] = {abbrev = "ALDE", color = "gold", shortname = "",}, ["Alliance of Liberals and Democrats for Europe"] = {abbrev = "ALDE", color = "gold", shortname = "",}, ["Alliance of Liberties"] = {abbrev = "", color = "#6FA293", shortname = "",}, ["Alliance of Movements for the Emergence of Niger"] = {abbrev = "", color = "#01d9f2", shortname = "",}, ["Alliance of National Forces (Czech Republic)"] = {abbrev = "", color = "#2D3092", shortname = "",}, ["Alliance of Nationalist Left Forces of the MNR"] = {abbrev = "", color = "#EB737E", shortname = "",}, ["Alliance of Patriots of Georgia"] = {abbrev = "APG", color = "#DB9F00", shortname = "",}, ["Alliance of Primorje-Gorski Kotar"] = {abbrev = "", color = "#00c8c8", shortname = "",}, ["Alliance of Progressives"] = {abbrev = "", color = "#D90000", shortname = "Progressives",}, ["Alliance of Resuming British Sovereignty over Hong Kong and Independence"] = {abbrev = "", color = "#07263A", shortname = "",}, ["Alliance of Social Democrats"] = {abbrev = "", color = "#B22222", shortname = "Social Democrats",}, ["Alliance of the Centre (Italy)"] = {abbrev = "", color = "#89CFF0", shortname = "",}, ["Alliance of the Christian Democratic Popular Front"] = {abbrev = "AFPCD", color = "#C1500C", shortname = "",}, ["Alliance of the Democratic Centre (Spain)"] = {abbrev = "", color = "#00974A", shortname = "",}, ["Alliance of the Forces of Progress (Senegal)"] = {abbrev = "AFP", color = "#000080", shortname = "",}, ["Alliance of the Left"] = {abbrev = "", color = "#CD0F0F", shortname = "Alliance",}, ["Alliance of the National Left"] = {abbrev = "", color = "#E5D03C", shortname = "",}, ["Alliance of the New Citizen"] = {abbrev = "ANO", color = "#FFB200", shortname = "",}, ["Alliance of the Spanish Republican Left"] = {abbrev = "", color = "#FF0000", shortname = "",}, ["Alliance of Vojvodina Hungarians"] = {abbrev = "VMSZ", color = "#00732B", shortname = "",}, ["Alliance Party (Armenia)"] = {abbrev = "", color = "#0021C6", shortname = "",}, ["Alliance Party (Cook Islands)"] = {abbrev = "", color = "#F2D030", shortname = "Alliance Party",}, ["Alliance Party (Fiji)"] = {abbrev = "", color = "#6495ED", shortname = "Alliance",}, ["Alliance Party (Malaysia)"] = {abbrev = "", color = "#000080", shortname = "Alliance",}, ["Alliance Party (Panama)"] = {abbrev = "", color = "#E2211C", shortname = "",}, ["Alliance Party (United States)"] = {abbrev = "", color = "#385AA3", shortname = "Alliance",}, ["Alliance Party for the Sake of Azerbaijan"] = {abbrev = "", color = "#00AF68", shortname = "",}, ["Alliance Party Guernsey"] = {abbrev = "", color = "#E60E29", shortname = "",}, ["Alliance Party of Kenya"] = {abbrev = "APK", color = "#FBCC0C", shortname = "",}, ["Alliance Party of Northern Ireland"] = {abbrev = "APNI", color = "#F6CB2F", shortname = "Alliance",}, ["Alliance PSD+PC"] = {abbrev = "PSD+PC", color = "#ED2128", shortname = "",}, ["Alliance Royale"] = {abbrev = "AR", color = "#EEC400", shortname = "",}, ["Allied Peoples Movement"] = {abbrev = "APM", color = "#00FFFF", shortname = "",}, ["ALLinHK"] = {abbrev = "", color = "#F4681D", shortname = "",}, ["Almerian Neighborhood Union"] = {abbrev = "", color = "#244A91", shortname = "",}, ["Almerian Regionalist Union"] = {abbrev = "", color = "#B59639", shortname = "",}, ["Almerienses–Regionalists for Almería"] = {abbrev = "", color = "#043F63", shortname = "",}, ["Aloha ʻĀina Party"] = {abbrev = "", color = "#ffd100", shortname = "Aloha ʻĀina",}, ["Alsace d'Abord"] = {abbrev = "", color = "#80461B", shortname = "",}, ["Alsace-Lorraine Party"] = {abbrev = "", color = "#000000", shortname = "",}, ["Alsasua Group"] = {abbrev = "", color = "#73A745", shortname = "",}, ["Alternatiba (Basque political party)"] = {abbrev = "", color = "#CE010C", shortname = "",}, ["Alternativa (Italian political party)"] = {abbrev = "", color = "#EE7622", shortname = "Alternativa",}, ["Alternativa de Govern"] = {abbrev = "", color = "#008E9C", shortname = "",}, ["Alternativa Sí se puede"] = {abbrev = "", color = "#E00686", shortname = "",}, ["Alternativas desde Abajo"] = {abbrev = "", color = "#33D100", shortname = "",}, ["Alternative and Change Party"] = {abbrev = "", color = "#DBB84D", shortname = "",}, ["Alternative Democratic Movement"] = {abbrev = "", color = "#ff7538", shortname = "",}, ["Alternative Democratic Pole"] = {abbrev = "PDA", color = "#FEF71F", shortname = "",}, ["Alternative Democratic Reform Party"] = {abbrev = "ADR", color = "#00AAE5", shortname = "",}, ["Alternative Ecologists"] = {abbrev = "OE", color = "green", shortname = "",}, ["Alternative Faso"] = {abbrev = "", color = "#DD198D", shortname = "",}, ["Alternative for Arzúa"] = {abbrev = "", color = "#5A439B", shortname = "",}, ["Alternative for Benalmádena"] = {abbrev = "", color = "#40287B", shortname = "",}, ["Alternative for Benidorm"] = {abbrev = "", color = "#E9582C", shortname = "",}, ["Alternative for Boadilla"] = {abbrev = "", color = "#37703E", shortname = "",}, ["Alternative for Bulgarian Revival"] = {abbrev = "ABV", color = "#6A013A", shortname = "",}, ["Alternative for Castile and León"] = {abbrev = "", color = "#808080", shortname = "",}, ["Alternative for Change"] = {abbrev = "AC", color = "#87CEFA", shortname = "",}, ["Alternative for Changes"] = {abbrev = "APN", color = "#1A70AB", shortname = "",}, ["Alternative for Germany"] = {abbrev = "AfD", color = "#009EE0", shortname = "",}, ["Alternative for Gran Canaria"] = {abbrev = "", color = "#A0A0A0", shortname = "",}, ["Alternative for Social Advance"] = {abbrev = "", color = "#FF7F7F", shortname = "",}, ["Alternative for Sweden"] = {abbrev = "", color = "#000095", shortname = "",}, ["Alternative for Italy"] = {abbrev = "APLI", color = "#2A295C", shortname = "",}, ["Alternative Forces for Renewal and Emergence"] = {abbrev = "", color = "#68B0E5", shortname = "",}, ["Alternative Island"] = {abbrev = "", color = "#E57815", shortname = "",}, ["Alternative League for Haitian Progress and Emancipation"] = {abbrev = "LAPEH", color = "#F3E601", shortname = "",}, ["Alternative Left"] = {abbrev = "", color = "#960018", shortname = "",}, ["Alternative List"] = {abbrev = "", color = "#ec018c", shortname = "",}, ["Alternative Moroneran Assembly"] = {abbrev = "", color = "#55BA51", shortname = "",}, ["Alternative National Congress"] = {abbrev = "ANC", color = "#D71800", shortname = "",}, ["Alternative Party"] = {abbrev = "", color = "#E62E00", shortname = "",}, ["Always Forward (Brazil)"] = {abbrev = "", color = "#00B7EB", shortname = "PSDB-Cidadania",}, ["Amaiur (1979 coalition)"] = {abbrev = "", color = "#66669A", shortname = "Amaiur",}, ["Amaiur"] = {abbrev = "", color = "#087178", shortname = "",}, ["Amal Movement"] = {abbrev = "", color = "#008000", shortname = "Amal",}, ["Amani Coalition"] = {abbrev = "", color = "#FFFF00", shortname = "",}, ["Amanat (political party)"] = {abbrev = "", color = "#3AB4AD", shortname = "Amanat",}, ["Amani National Congress"] = {abbrev = "", color = "brown", shortname = "Amani",}, ["Amarillos por Chile"] = {abbrev = "AxCh", color = "#FAB700", shortname = "",}, ["Ambedkar Kranti Dal"] = {abbrev = "AKD", color = "#B62559", shortname = "",}, ["Ambedkar National Congress"] = {abbrev = "ANC", color = "#FFFFCC", shortname = "",}, ["Ambedkar People's Movement"] = {abbrev = "APM", color = "tan", shortname = "",}, ["Ambedkar Puratchikara Makkal Katchi"] = {abbrev = "APMK", color = "grey", shortname = "",}, ["Ambedkar Samaj Party"] = {abbrev = "ASP", color = "#58D3F7", shortname = "",}, ["Ambedkarite Party of India"] = {abbrev = "API", color = "blue", shortname = "",}, ["America First Party (1943)"] = {abbrev = "", color = "Yellow", shortname = "America First",}, ["America First Party (2002)"] = {abbrev = "", color = "#CC66FF", shortname = "",}, ["American Constitution Party (Colorado)"] = {abbrev = "", color = "#A356DE", shortname = "American Constitution",}, ["American Constitution Party"] = {abbrev = "", color = "transparent", shortname = "Constitution",}, ["American Delta Party"] = {abbrev = "", color = "#355E39", shortname = "American Delta",}, ["American Freedom Party"] = {abbrev = "", color = "#DDDDBB", shortname = "American Freedom",}, ["American Independent Party"] = {abbrev = "AI", color = "#800080", shortname = "American Independent",}, ["American Labor Party (1932)"] = {abbrev = "", color = "#0000CC", shortname = "American Labor",}, ["American Labor Party"] = {abbrev = "", color = "#FF6347", shortname = "American Labor",}, ["American Party (1924)"] = {abbrev = "", color = "#B340D1", shortname = "American",}, ["American Party (1969)"] = {abbrev = "", color = "#CC66FF", shortname = "American",}, ["American Party of South Carolina"] = {abbrev = "", color = "#DDDDDD", shortname = "American",}, ["American Patriot Party"] = {abbrev = "", color = "orange", shortname = "",}, ["American Popular Revolutionary Alliance"] = {abbrev = "APRA", color = "#DF0101", shortname = "",}, ["American Reform Party"] = {abbrev = "", color = "#C80000", shortname = "",}, ["American Republican"] = {abbrev = "", color = "#005B96", shortname = "",}, ["American Shopping Party"] = {abbrev = "", color = "#e23292", shortname = "American Shopping",}, ["American Solidarity Party"] = {abbrev = "", color = "#FF7F00", shortname = "American Solidarity",}, ["American Third Position Party"] = {abbrev = "", color = "#0018A8", shortname = "American Third Position",}, ["Americans Coming Together Party"] = {abbrev = "ACT", color = "#890200", shortname = "Americans Coming Together",}, ["Americans Elect"] = {abbrev = "", color = "#FFFF88", shortname = "",}, ["Ames Novo"] = {abbrev = "", color = "#0C8A43", shortname = "",}, ["Amhara Democratic Party"] = {abbrev = "", color = "#597E09", shortname = "",}, ["AMIGO Movement"] = {abbrev = "AMIGO", color = "#000000", shortname = "",}, ["Amma Makkal Munnettra Kazhagam"] = {abbrev = "AMMK", color = "#034F38", shortname = "",}, ["Amplitude (political party)"] = {abbrev = "", color = "#FCE883", shortname = "Amplitude",}, ["Amra Bangali"] = {abbrev = "AMB", color = "#FF66CC", shortname = "",}, ["Amsterdamska Koalicija"] = {abbrev = "", color = "#62ba49", shortname = "",}, ["Amtsakhara"] = {abbrev = "", color = "#FE2726", shortname = "",}, ["An Rabharta Glas"] = {abbrev = "ARG-GL", color = "#488A89", shortname = "An Rabharta Glas",}, ["Anaithindia Dravidar Samudaya Munnetra Kazhagam"] = {abbrev = "ADSMK", color = "peru", shortname = "",}, ["Anaithinthiya Thamizhaga Munnetra Kazhagam"] = {abbrev = "ATMK", color = "gray", shortname = "",}, ["Anakpawis"] = {abbrev = "", color = "#DC143C", shortname = "",}, ["Anarchist Pogo Party of Germany"] = {abbrev = "APPD", color = "#000000", shortname = "",}, ["Anatolia Party"] = {abbrev = "", color = "#1575BF", shortname = "AnaParti",}, ["Anchalik Gana Morcha"] = {abbrev = "AGM", color = "#FD5B78", shortname = "",}, ["Ancestor Alliance"] = {abbrev = "ATA", color = "#373736", shortname = "",}, ["And-Jëf/African Party for Democracy and Socialism"] = {abbrev = "", color = "red", shortname = "",}, ["Andaluces Levantaos"] = {abbrev = "AL", color = "#69C188", shortname = "",}, ["Andalucía por Sí"] = {abbrev = "", color = "#83C141", shortname = "",}, ["Andalusia Assembly"] = {abbrev = "", color = "#088A00", shortname = "",}, ["Andalusian Coalition"] = {abbrev = "", color = "#006633", shortname = "",}, ["Andalusian Convergence"] = {abbrev = "", color = "#5AB600", shortname = "",}, ["Andalusian Democratic Centre"] = {abbrev = "", color = "#0C8902", shortname = "",}, ["Andalusian Federation of Independents"] = {abbrev = "", color = "#138B59", shortname = "",}, ["Andalusian Forum"] = {abbrev = "", color = "#00AA29", shortname = "",}, ["Andalusian Front of Liberation"] = {abbrev = "", color = "#567E64", shortname = "",}, ["Andalusian Horticulture Party"] = {abbrev = "", color = "#314910", shortname = "",}, ["Andalusian Left (2017)"] = {abbrev = "", color = "#86B81C", shortname = "",}, ["Andalusian Left"] = {abbrev = "", color = "#FF0000", shortname = "",}, ["Andalusian Liberation"] = {abbrev = "", color = "#2FB461", shortname = "",}, ["Andalusian Nation"] = {abbrev = "", color = "#008800", shortname = "",}, ["Andalusian Nationalist People"] = {abbrev = "", color = "#00B252", shortname = "",}, ["Andalusian Party"] = {abbrev = "PA", color = "#005931", shortname = "",}, ["Andalusian People's Initiative"] = {abbrev = "", color = "#007735", shortname = "",}, ["Andalusian Popular Unity"] = {abbrev = "", color = "#E20A19", shortname = "",}, ["Andalusian Progress Party"] = {abbrev = "", color = "#4DCA8B", shortname = "",}, ["Andalusian Regional Unity"] = {abbrev = "", color = "#546B23", shortname = "",}, ["Andalusian Social Democratic Party"] = {abbrev = "", color = "#218A31", shortname = "",}, ["Andalusian Social Liberal Party"] = {abbrev = "", color = "#2F7769", shortname = "",}, ["Andalusian Solidary Independent Republican Party"] = {abbrev = "", color = "#6B6918", shortname = "",}, ["Andalusian Spring"] = {abbrev = "", color = "#1EA24B", shortname = "",}, ["Andalusian Unity"] = {abbrev = "", color = "#FEED01", shortname = "",}, ["Andalusian Workers' Group"] = {abbrev = "", color = "#D03634", shortname = "",}, ["Andalusians of Jaén United"] = {abbrev = "", color = "#00AC32", shortname = "",}, ["Andecha Astur"] = {abbrev = "", color = "#A53042", shortname = "",}, ["Anders Lange's Party"] = {abbrev = "", color = "#0047e0", shortname = "Anders Lange's",}, ["Andorra Forward"] = {abbrev = "", color = "#2B2D84", shortname = "Endavant",}, ["Andorra for Change"] = {abbrev = "", color = "#7A7A78", shortname = "",}, ["Andover Alliance"] = {abbrev = "", color = "#bb00bb", shortname = "",}, ["Andriy Baloha's Team"] = {abbrev = "KAB", color = "green", shortname = "",}, ["A New and United Guyana"] = {abbrev = "ANUG", color = "#FFA500", shortname = "",}, ["Ang Kapatiran"] = {abbrev = "", color = "#003C74", shortname = "",}, ["Angkatan Perpaduan Ummah"] = {abbrev = "APU", color = "yellow", shortname = "",}, ["Angolan Democratic Forum"] = {abbrev = "FDA", color = "#7DE8F4", shortname = "",}, ["Angolan National Democratic Party"] = {abbrev = "PNDA", color = "#55FF63", shortname = "",}, ["Angry Victorians Party"] = {abbrev = "AVP", color = "#BDAF77", shortname = "Angry Victorians",}, ["Anguilla Democratic Party"] = {abbrev = "ADP", color = "#ffd700", shortname = "",}, ["Anguilla for Good Government"] = {abbrev = "", color = "orange", shortname = "",}, ["Anguilla National Alliance"] = {abbrev = "ANA", color = "#0087DC", shortname = "",}, ["Anguilla Patriotic Movement"] = {abbrev = "APM", color = "#00008B", shortname = "",}, ["Anguilla Progressive Movement"] = {abbrev = "APM", color = "#96CDEF", shortname = "",}, ["Anguilla Progressive Party"] = {abbrev = "APP", color = "#FF6600", shortname = "",}, ["Anguilla Strategic Alliance"] = {abbrev = "ANSA", color = "#FF1111", shortname = "",}, ["Anguilla United Front (old)"] = {abbrev = "", color = "#095392", shortname = "",}, ["Anguilla United Front"] = {abbrev = "AUF", color = "#ffc614", shortname = "",}, ["Anguilla United Movement"] = {abbrev = "AUM", color = "#008000", shortname = "",}, ["Anguilla United Party"] = {abbrev = "AUP", color = "#39944A", shortname = "",}, ["Angus Independents Representatives"] = {abbrev = "", color = "#DDDDDD", shortname = "Angus Independents",}, ["Anhui clique"] = {abbrev = "", color = "#a52a2a", shortname = "",}, ["Animal Justice Auckland"] = {abbrev = "", color = "#A52A2A", shortname = "",}, ["Animal Justice Party of Finland"] = {abbrev = "EOP", color = "#FCBB01", shortname = "",}, ["Animal Justice Party"] = {abbrev = "", color = "#A52A2A", shortname = "",}, ["Animal Justice Party Aotearoa New Zealand"] = {abbrev = "AJPANZ", color = "#5C558C", shortname = "Animal Justice",}, ["Animal Party Cyprus"] = {abbrev = "", color = "#04d404", shortname = "",}, ["Animal Protection Party of Canada"] = {abbrev = "", color = "#336033", shortname = "Animal Protection",}, ["Animal Protection Party"] = {abbrev = "", color = "#e9e9e9", shortname = "Animal Protection",}, ["Animal Rights Party"] = {abbrev = "TRP", color = "lightgreen", shortname = "",}, ["Animal Welfare Party"] = {abbrev = "", color = "#EE3263", shortname = "Animal Welfare",}, ["Animalist Party Against Mistreatment of Animals"] = {abbrev = "PACMA", color = "#ADBE18", shortname = "",}, ["Animalist Party with the Environment"] = {abbrev = "PACMA", color = "#22D65D", shortname = "",}, ["Animalist Party"] = {abbrev = "PA", color = "#9C0D99", shortname = "",}, ["Animals First"] = {abbrev = "", color = "#FFFF00", shortname = "",}, ["Anna Democratic Human Rights Movement Party of India"] = {abbrev = "", color = "#C0C0C0", shortname = "Anna DHRM",}, ["ANO 2011"] = {abbrev = "ANO", color = "#261060", shortname = "",}, ["Another Democracy is Possible"] = {abbrev = "", color = "#F75921", shortname = "",}, ["Another Sant Cugat–Citizen Platform for Sant Cugat"] = {abbrev = "", color = "#9DC5C2", shortname = "",}, ["Antarsya"] = {abbrev = "", color = "#800000", shortname = "",}, ["Antequera Sí Se Puede"] = {abbrev = "", color = "#77BF59", shortname = "",}, ["Anti Common Market and Free Trade Party"] = {abbrev = "ACMFT", color = "#e6e6fa", shortname = "",}, ["Anti H-Block"] = {abbrev = "AHB", color = "#008800", shortname = "Anti H-Block",}, ["Anti-Administration Party (US)"] = {abbrev = "", color = "#CCFF66", shortname = "Anti-Administration",}, ["Anti-Austerity Alliance–People Before Profit"] = {abbrev = "AAA–PBP", color = "#E5E500", shortname = "",}, ["Anti-Austerity Alliance"] = {abbrev = "AAA", color = "#FFFF00", shortname = "Anti-Austerity Alliance",}, ["Anti-Capitalist Alliance"] = {abbrev = "", color = "#FF0066", shortname = "",}, ["Anti-capitalists"] = {abbrev = "", color = "#62CC62", shortname = "",}, ["Anti-Communist Bolivian Front"] = {abbrev = "", color = "#5866B1", shortname = "",}, ["Anti-Corruption and Justice Party (Spain)"] = {abbrev = "", color = "#F7EA21", shortname = "",}, ["Anti Corruption Dynamic Party"] = {abbrev = "ACDP", color = "#ba0c2f", shortname = "",}, ["Anti-Corruption Foundation"] = {abbrev = "ACF", color = "#CC0000", shortname = "",}, ["Anti-Corruption Ireland"] = {abbrev = "", color = "#00cc00", shortname = "",}, ["Anti-Corruption Party"] = {abbrev = "PAC", color = "#8dade3", shortname = "",}, ["Anti-Fascist People's Freedom League"] = {abbrev = "AFPFL", color = "#DB2916", shortname = "",}, ["Anti-fascist Revolutionary Left"] = {abbrev = "", color = "#AE2D2D", shortname = "",}, ["Anti-Federalist League"] = {abbrev = "", color = "#F6CB2F", shortname = "",}, ["Anti-Imperialist National Democratic Front"] = {abbrev = "", color = "#007FFF", shortname = "",}, ["Anti-Jacksonian Party"] = {abbrev = "", color = "#FFE6B0", shortname = "Anti-Jacksonian",}, ["Anti-Jacksonian Party/Hold"] = {abbrev = "", color = "#FFF5D7", shortname = "",}, ["Anti-Liberal Catholic Alliance"] = {abbrev = "ACA", color = "#34457E", shortname = "",}, ["Anti-Masonic Party"] = {abbrev = "", color = "#FFFF99", shortname = "Anti-Masonic",}, ["Anti-Masonic Party/Hold"] = {abbrev = "", color = "#FFFFE6", shortname = "",}, ["Anti-Ministerialists"] = {abbrev = "", color = "red", shortname = "",}, ["Anti-Monopoly Party (US)"] = {abbrev = "", color = "#66F500", shortname = "Anti-Monopoly",}, ["Anti-Nebraska movement"] = {abbrev = "", color = "#E4D96F", shortname = "Anti-Nebraska",}, ["Anti-PowerPoint Party"] = {abbrev = "", color = "#FF0000", shortname = "",}, ["Antiprohibitionists on Drugs"] = {abbrev = "", color = "gold", shortname = "Antiprohibitionists",}, ["Anti-Revolutionary Party"] = {abbrev = "ARP", color = "#008F90", shortname = "",}, ["Anti-Socialist Party"] = {abbrev = "", color = "#BFFF00", shortname = "Anti-Socialist",}, ["Anti-Trident Party"] = {abbrev = "ATP", color = "#CC0000", shortname = "",}, ["Anti-Waste League"] = {abbrev = "", color = "lightblue", shortname = "",}, ["Antigua and Barbuda Labour Party"] = {abbrev = "ABLP", color = "#EE3422", shortname = "",}, ["Antigua Trades and Labour Union"] = {abbrev = "ATLU", color = "#BC353C", shortname = "",}, ["Antipersonalist Radical Civic Union"] = {abbrev = "", color = "#641C34", shortname = "",}, ["Aontacht Éireann"] = {abbrev = "AÉ", color = "#22FF00", shortname = "Aontacht Éireann",}, ["Aontú"] = {abbrev = "Aon", color = "#44532A", shortname = "Aontú",}, ["Aosta Valley (political coalition)"] = {abbrev = "", color = "#48D1CC", shortname = "Aosta Valley",}, ["Aotearoa Legalise Cannabis Party"] = {abbrev = "", color = "#33CC33", shortname = "Legalise Cannabis",}, ["Apna Dal"] = {abbrev = "AD", color = "#FF33CC", shortname = "",}, ["Apna Dal (Kamerawadi)"] = {abbrev = "AD(K)", color = "#FF33CC", shortname = "",}, ["Apna Dal (Sonelal)"] = {abbrev = "AD(S)", color = "#27176D", shortname = "",}, ["Appointed"] = {abbrev = "", color = "#DDDDDD", shortname = "",}, ["Approval Voting Party"] = {abbrev = "", color = "MidnightBlue", shortname = "Approval Voting",}, ["April Fifth Action"] = {abbrev = "", color = "#FC0000", shortname = "",}, ["Apruebo Dignidad"] = {abbrev = "", color = "#FC415C", shortname = "",}, ["Aq Jol Democratic Party"] = {abbrev = "", color = "#043381", shortname = "Aq Jol",}, ["Ar-Namys"] = {abbrev = "", color = "#0203FE", shortname = "",}, ["Ara Eivissa"] = {abbrev = "", color = "#1FC6BC", shortname = "",}, ["Ara Maó"] = {abbrev = "", color = "#39AFB1", shortname = "",}, ["Ara Més"] = {abbrev = "", color = "#84BC87", shortname = "",}, ["Ara Reus"] = {abbrev = "", color = "#71152C", shortname = "",}, ["Arab Democratic Nasserist Party"] = {abbrev = "", color = "#305E30", shortname = "",}, ["Arab Democratic Party (Israel)"] = {abbrev = "", color = "#009900", shortname = "Mada",}, ["Arab Democratic Party (Lebanon)"] = {abbrev = "", color = "green", shortname = "",}, ["ARAB Europeans for the Canaries"] = {abbrev = "", color = "#8BD4F7", shortname = "",}, ["Arab Liberation Movement"] = {abbrev = "", color = "#CD7F32", shortname = "",}, ["Arab Liberation Party"] = {abbrev = "", color = "#ff0000", shortname = "",}, ["Arab List for Bedouin and Villagers"] = {abbrev = "", color = "#C61318", shortname = "",}, ["Arab Socialist Ba'ath Party – Iraq Region"] = {abbrev = "", color = "#017B48", shortname = "Ba'ath Party",}, ["Arab Socialist Ba'ath Party – Lebanon Region"] = {abbrev = "", color = "#017B48", shortname = "",}, ["Arab Socialist Ba'ath Party – Syria Region"] = {abbrev = "", color = "#017B48", shortname = "Ba'ath Party",}, ["Arab Socialist Ba'ath Party – Yemen Region"] = {abbrev = "", color = "#017B48", shortname = "Ba'ath Party",}, ["Arab Socialist Movement"] = {abbrev = "", color = "red", shortname = "",}, ["Arab Socialist Union (Egypt)"] = {abbrev = "ASU", color = "#F0001C", shortname = "",}, ["Arab Socialist Union (Iraq)"] = {abbrev = "", color = "#F0001C", shortname = "",}, ["Arab Socialist Union (Libya)"] = {abbrev = "", color = "#F0001C", shortname = "",}, ["Arab Socialist Union Party (Syria)"] = {abbrev = "", color = "#F0001C", shortname = "",}, ["Arabic Democratic Union Party"] = {abbrev = "", color = "green", shortname = "",}, ["Aragón Existe"] = {abbrev = "", color = "#008050", shortname = "",}, ["Aragón Sí Puede"] = {abbrev = "", color = "#690194", shortname = "",}, ["Aragon United Citizens Party"] = {abbrev = "", color = "#084108", shortname = "",}, ["Aragonese Autonomist Front"] = {abbrev = "", color = "#F93235", shortname = "",}, ["Aragonese Bloc"] = {abbrev = "", color = "#2BAE20", shortname = "",}, ["Aragonese Candidacy of Democratic Unity"] = {abbrev = "", color = "#473C38", shortname = "",}, ["Aragonese Christian Democracy"] = {abbrev = "", color = "#1E90FF", shortname = "",}, ["Aragonese Initiative"] = {abbrev = "", color = "#FFA500", shortname = "",}, ["Aragonese Land"] = {abbrev = "", color = "#008300", shortname = "",}, ["Aragonese Party"] = {abbrev = "PAR", color = "#FFCC66", shortname = "",}, ["Aragonese Union (1917)"] = {abbrev = "", color = "#E67A4A", shortname = "",}, ["Arakan Front Party"] = {abbrev = "AFP", color = "#FE0000", shortname = "",}, ["Arakan League for Democracy"] = {abbrev = "", color = "#CC0000", shortname = "",}, ["Arakan National Party"] = {abbrev = "ANP", color = "#EB1D27", shortname = "",}, ["Aralar (Basque political party)"] = {abbrev = "", color = "#BD0000", shortname = "Aralar",}, ["Aran Amassa"] = {abbrev = "", color = "#5B1408", shortname = "",}, ["Aranese Democratic Convergence"] = {abbrev = "", color = "#E9960D", shortname = "",}, ["Aranese Democratic Union"] = {abbrev = "", color = "#274737", shortname = "",}, ["Arangkada San Joseño"] = {abbrev = "AR", color = "#FF8000", shortname = "",}, ["Aranzadi"] = {abbrev = "", color = "#E61A74", shortname = "",}, ["Archipelago Tomorrow"] = {abbrev = "", color = "#ED7F10", shortname = "",}, ["Arcos en Común"] = {abbrev = "", color = "#AF084C", shortname = "",}, ["Arganda Sí Puede"] = {abbrev = "", color = "#438D98", shortname = "",}, ["Argentine People's Union"] = {abbrev = "UDELPA", color = "#00708B", shortname = "",}, ["Argentine Socialist Party"] = {abbrev = "PSA", color = "#FF9900", shortname = "",}, ["Arizona Libertarian Party"] = {abbrev = "", color = "#FED105", shortname = "Libertarian",}, ["Arizona Progressive Democratic Party"] = {abbrev = "", color = "#87CEEB", shortname = "",}, ["Armed Forces of Equatorial Guinea"] = {abbrev = "", color = "#C3B091", shortname = "",}, ["Armed Forces Republic of Indonesia"] = {abbrev = "", color = "#FF0000", shortname = "Military",}, ["Armenia Alliance"] = {abbrev = "", color = "#1D2E69", shortname = "",}, ["Armenia is Our Home"] = {abbrev = "", color = "#E40510", shortname = "",}, ["Armenian Communist Party"] = {abbrev = "", color = "red", shortname = "Communist",}, ["Armenian National Congress"] = {abbrev = "ANC", color = "#0033A0", shortname = "",}, ["Armenian Revolutionary Federation"] = {abbrev = "ARF", color = "#AA0000", shortname = "",}, ["Aroha Ngia Tatou"] = {abbrev = "", color = "#FFFFFF", shortname = "",}, ["Arona Independent Electoral Movement"] = {abbrev = "", color = "#3AA346", shortname = "",}, ["Arrow Cross Party"] = {abbrev = "NYKP", color = "#964B00", shortname = "",}, ["Article 45 Concern Group"] = {abbrev = "A45CG", color = "#2906CC", shortname = "",}, ["Article 50 (political party)"] = {abbrev = "", color = "#ffa500", shortname = "",}, ["Article One (political party)"] = {abbrev = "", color = "#D21B30", shortname = "",}, ["Artsakh Freedom Party"] = {abbrev = "", color = "#020041", shortname = "",}, ["Arts Party"] = {abbrev = "", color = "#800080", shortname = "",}, ["Aruban Democratic Party"] = {abbrev = "PDA", color = "#59479C", shortname = "",}, ["Aruban Liberal Organization"] = {abbrev = "OLA", color = "#00BFFF", shortname = "",}, ["Aruban Patriotic Movement"] = {abbrev = "MPA", color = "#F70084", shortname = "",}, ["Aruban Patriotic Party"] = {abbrev = "PPA", color = "#FF8C00", shortname = "",}, ["Aruban People's Party"] = {abbrev = "AVP", color = "#65B22E", shortname = "",}, ["Aruban Sovereignty Movement"] = {abbrev = "MAS", color = "#54C2E3", shortname = "",}, ["Arunachal Congress"] = {abbrev = "", color = "#CCCCFF", shortname = "",}, ["Asankhya Samaj Party"] = {abbrev = "ASP", color = "#D0A9F5", shortname = "",}, ["Asar (political party)"]= {abbrev = "", color = "#FF0000", shortname = "Asar",}, ["Asenso Abrenio"] = {abbrev = "", color = "#ED4B9E", shortname = "",}, ["Asenso Manileño"] = {abbrev = "", color = "#2F358D", shortname = "",}, ["Ashfield Independents"] = {abbrev = "", color = "pink", shortname = "Ashfield Ind.",}, ["Ashford Independents"] = {abbrev = "AI", color = "#BDD005", shortname = "Ashford Ind.",}, ["Ashkali Party for Integration"] = {abbrev = "PAI", color = "black", shortname = "",}, ["Asia Pacific United Party"] = {abbrev = "", color = "#33FF99", shortname = "Asia Pacific",}, ["Askatasuna"] = {abbrev = "", color = "#008229", shortname = "",}, ["Asom Gana Parishad"] = {abbrev = "AGP", color = "#2B3F7B", shortname = "",}, ["Aspire (political party)"] = {abbrev = "", color = "#FF5800", shortname = "Aspire",}, ["Assam Jatiya Parishad"] = {abbrev = "AJP", color = "#0048BA", shortname = "",}, ["Assam United Democratic Front"] = {abbrev = "AUDF", color = "green", shortname = "",}, ["Assembleia do Povo Unido"] = {abbrev = "", color = "#CF1C3A", shortname = "",}, ["Assembly for Asturias"] = {abbrev = "", color = "#A70E25", shortname = "",}, ["Assembly for Cantabria"] = {abbrev = "", color = "#C1272F", shortname = "",}, ["Assembly for Tarragona"] = {abbrev = "", color = "#793C8F", shortname = "",}, ["Assembly for Unity"] = {abbrev = "", color = "#E30614", shortname = "",}, ["Assembly of Alcalá"] = {abbrev = "", color = "#FFBD33", shortname = "",}, ["Assembly of Greeks"] = {abbrev = "ES", color = "#007CC2", shortname = "",}, ["Assembly of Independents"] = {abbrev = "", color = "#E5CC00", shortname = "Independents",}, ["Assembly of People of Kazakhstan"] = {abbrev = "", color = "#1A4C96", shortname = "",}, ["Assembly of the People United"] = {abbrev = "APU", color = "#094779", shortname = "",}, ["Assembly to Energize Japan"] = {abbrev = "", color = "#F36F21", shortname = "",}, ["Association for Somogy"] = {abbrev = "SE", color = "#404040", shortname = "",}, ["Association for the Defense of Macau Interests"] = {abbrev = "ADIM", color = "#000080", shortname = "",}, ["Association for Defence of Revolution Values"] = {abbrev = "ADRV", color = "#FFA500", shortname = "",}, ["Association for Democracy Activism"] = {abbrev = "", color = "yellow", shortname = "",}, ["Association for Democracy and Social Well-Being of Macau"] = {abbrev = "", color = "#FFFACD", shortname = "",}, ["Association for Helping the Community and Engagement with the People"] = {abbrev = "", color = "#000000", shortname = "",}, ["Association for Joint Efforts to Improve the Community"] = {abbrev = "", color = "#64B4B5", shortname = "",}, ["Association for Justice and Equality"] = {abbrev = "", color = "#034626", shortname = "Justice & Equality",}, ["Association for Promoting the Economy of Macau"] = {abbrev = "APPEM", color = "yellow", shortname = "",}, ["Association for Promotion of Civic Rights"] = {abbrev = "", color = "#13241E", shortname = "",}, ["Association for Promotion of Social Services and Education"] = {abbrev = "ARSEM", color = "#4F3286", shortname = "",}, ["Association for Yugoslav Democratic Initiative"] = {abbrev = "UJDI", color = "#08FFFF", shortname = "",}, ["Association for the Advancement of Civil Rights"] = {abbrev = "AACR", color = "#0047AB", shortname = "",}, ["Association for the Promotion of Democracy, Freedom, Human Rights and Rule of Law of Macau (Macau Ideals)"] = {abbrev = "", color = "#822571", shortname = "",}, ["Association for the Rebirth of Madagascar"] = {abbrev = "AREMA", color = "#FF0000", shortname = "",}, ["Association of Candidates"] = {abbrev = "", color = "#FCF318", shortname = "Kattusseqatigiit",}, ["Association of Combatant Clerics"] = {abbrev = "ACC", color = "#098CDC", shortname = "",}, ["Association of Free Democrats"] = {abbrev = "BFD", color = "#FFED00", shortname = "",}, ["Association of Independent Members of Parliament"] = {abbrev = "", color = "#DCDCDC", shortname = "",}, ["Association of Islamic Revolution Loyalists"] = {abbrev = "AIRL", color = "#24b8fe", shortname = "",}, ["Association of Italians of Romania"] = {abbrev = "RO.AS.IT", color = "blue", shortname = "",}, ["Association of Macedonians of Romania"] = {abbrev = "DMR", color = "#660000", shortname = "",}, ["Association of Poles in Lithuania"] = {abbrev = "ZPL", color = "#F23F43", shortname = "",}, ["Association of Timorese Heroes"] = {abbrev = "", color = "#000000", shortname = "",}, ["Associative Movement Italians Abroad"] = {abbrev = "MAIE", color = "#333B8E", shortname = "",}, ["Associative Movement of Italians Abroad"] = {abbrev = "MAIE", color = "#333B8E", shortname = "",}, ["Assyrian Democratic Movement"] = {abbrev = "", color = "#5f21a9", shortname = "",}, ["Asturian Democratic Convergence"] = {abbrev = "", color = "#4ABAB5", shortname = "",}, ["Asturian Left Bloc"] = {abbrev = "", color = "#B60006", shortname = "",}, ["Asturian Left"] = {abbrev = "", color = "#FFCC00", shortname = "",}, ["Asturian Nationalist Council"] = {abbrev = "", color = "#ADD8E6", shortname = "",}, ["Asturian Nationalist Unity"] = {abbrev = "", color = "#0CACAD", shortname = "",}, ["Asturian Renewal Union–Asturianist Party"] = {abbrev = "", color = "#106194", shortname = "",}, ["Asturian Renewal Union"] = {abbrev = "URAS", color = "#155BC2", shortname = "",}, ["Asturias Forum"] = {abbrev = "FAC", color = "#10286B", shortname = "",}, ["Asturias Forum (2021)"] = {abbrev = "", color = "#4AC0FF", shortname = "Foro",}, ["Ata Meken Socialist Party"] = {abbrev = "", color = "#D2161D", shortname = "Ata-Meken",}, ["Ata-Jurt Kyrgyzstan"] = {abbrev = "", color = "#1f247b", shortname = "",}, ["Ata-Zhurt"] = {abbrev = "", color = "#3173C9", shortname = "",}, ["Atarrabia Taldea"] = {abbrev = "", color = "#FFAA01", shortname = "",}, ["Atassut"] = {abbrev = "", color = "#2E2C7B", shortname = "",}, ["Atassut (2019)"] = {abbrev = "", color = "#2B9996", shortname = "",}, ["Atlantica Party"] = {abbrev = "", color = "#5073B8", shortname = "Atlantica",}, ["Attack (political party)"] = {abbrev = "", color = "#344D28", shortname = "Ataka",}, ["Attica Project"] = {abbrev = "", color = "#4BB8B3", shortname = "",}, ["Atulya Bharat Party"] = {abbrev = "ABP", color = "#FEFEFE", shortname = "",}, ["Auckland Future"] = {abbrev = "", color = "#00AEEF", shortname = "",}, ["AUna Comunitat Valenciana"] = {abbrev = "", color = "#FE5D2F", shortname = "",}, ["Auseva Red"] = {abbrev = "", color = "#515151", shortname = "",}, ["Australia First Party"] = {abbrev = "AFP", color = "#5D8AA5", shortname = "Australia First",}, ["Australia Party"] = {abbrev = "", color = "#7F007F", shortname = "Australia",}, ["Australian Citizens Party"] = {abbrev = "", color = "#656600", shortname = "",}, ["Australian Conservatives"] = {abbrev = "", color = "#00B9FB", shortname = "",}, ["Australian Democrats"] = {abbrev = "", color = "#FFCD00", shortname = "Democrats",}, ["Australian Federation Party"] = {abbrev = "", color = "#538a2e", shortname = "",}, ["Australian Greens Victoria"] = {abbrev = "", color = "#10C25B", shortname = "Greens",}, ["Australian Greens"] = {abbrev = "", color = "#00a651", shortname = "Greens",}, ["Australian Labor Party (Australian Capital Territory Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",}, ["Australian Labor Party (New South Wales Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",}, ["Australian Labor Party (Northern Territory Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",}, ["Australian Labor Party (NSW)"] = {abbrev = "", color = "#DE3533", shortname = "Labor (NSW)",}, ["Australian Labor Party (Queensland Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",}, ["Australian Labor Party (South Australian Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",}, ["Australian Labor Party (Tasmanian Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",}, ["Australian Labor Party (Victorian Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",}, ["Australian Labor Party (Western Australian Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",}, ["Australian Labor Party"] = {abbrev = "ALP", color = "#DE3533", shortname = "Labor",}, ["Australian Labour Party (Western Australian Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labour",}, ["Australian Motoring Enthusiast Party"] = {abbrev = "AMEP", color = "#0528B6", shortname = "Motoring Enthusiasts",}, ["Australian Party"] = {abbrev = "", color = "#FB607F", shortname = "",}, ["Australian People's Party"] = {abbrev = "", color = "#800020", shortname = "",}, ["Australian Progressive Coalition"] = {abbrev = "", color = "#ffb400", shortname = "",}, ["Australian Sex Party"] = {abbrev = "", color = "#FFBF00", shortname = "",}, ["Australian Sports Party"] = {abbrev = "ASP", color = "#0000FF", shortname = "Sports",}, ["Australians Against Further Immigration"] = {abbrev = "AAFI", color = "#964B00", shortname = "",}, ["Austraya Political Party"] = {abbrev = "", color = "#0099AA", shortname = "",}, ["Austrian Nazism"] = {abbrev = "DNSAP", color = "#964B00", shortname = "",}, ["Austrian People's Party (2017)"] = {abbrev = "ÖVP", color = "#63C3D0", shortname = "",}, ["Austrian People's Party"] = {abbrev = "ÖVP", color = "#000000", shortname = "",}, ["Authentic Croatian Party of Rights"] = {abbrev = "", color = "#000000", shortname = "",}, ["Authentic Croatian Peasant Party"] = {abbrev = "", color = "darkgreen", shortname = "",}, ["Authentic Democratic Christian Movement"] = {abbrev = "MCDA", color = "darkgreen", shortname = "",}, ["Authentic Integral Development"] = {abbrev = "DIA", color = "#eb3213", shortname = "",}, ["Authentic Liberal Party"] = {abbrev = "PLA", color = "darkred", shortname = "",}, ["Authentic Limonense Party"] = {abbrev = "PAL", color = "#66CC33", shortname = "",}, ["Authentic Party of the Mexican Revolution"] = {abbrev = "PARM", color = "Olive", shortname = "",}, ["Authentic Puntarenense Party"] = {abbrev = "PAP", color = "#F1800E", shortname = "",}, ["Authentic Radical Liberal Party"] = {abbrev = "PLRA", color = "#2E3092", shortname = "",}, ["Authentic Renewal Organization"] = {abbrev = "", color = "#B8FEFC", shortname = "",}, ["Authentic Revolutionary Nationalist Movement"] = {abbrev = "", color = "#8079CE", shortname = "",}, ["Authentic Revolutionary Party (Panama)"] = {abbrev = "", color = "#00A859", shortname = "",}, ["Authentic Revolutionary Party"] = {abbrev = "", color = "#5A4FCF", shortname = "",}, ["Authentic Socialist Party (Argentina)"] = {abbrev = "PSA", color = "#DD2C1A", shortname = "Authentic Socialist Party",}, ["Authentic Socialist Party (Chile)"] = {abbrev = "", color = "darkred", shortname = "",}, ["Authenticity and Modernity Party"] = {abbrev = "PAM", color = "#0047AB", shortname = "",}, ["Authenticity Party"] = {abbrev = "", color = "black", shortname = "",}, ["Autodeterminaziorako Bilgunea"] = {abbrev = "", color = "#B0C50E", shortname = "",}, ["Autonomies for Bolivia"] = {abbrev = "APB", color = "#004D00", shortname = "",}, ["Autonomist Monarchist Federation"] = {abbrev = "", color = "#E4D27A", shortname = "",}, ["Autonomist Party of Corrientes"] = {abbrev = "", color = "#F08080", shortname = "",}, ["Autonomist Party"] = {abbrev = "", color = "#475f8a", shortname = "",}, ["Autonomist Republican Bloc"] = {abbrev = "", color = "#CC734C", shortname = "",}, ["Autonomist Republican Union Party"] = {abbrev = "", color = "#581768", shortname = "",}, ["Autonomist–Liberal Pact"] = {abbrev = "", color = "#40e0d0", shortname = "",}, ["Autonomous Agrarian Union"] = {abbrev = "AZS", color = "#EC5800", shortname = "",}, ["Autonomous Front"] = {abbrev = "", color = "#04AD0F", shortname = "",}, ["Autonomous Galician Republican Organization"] = {abbrev = "", color = "#0A70B8", shortname = "",}, ["Autonomous Manacor People"] = {abbrev = "", color = "#8889B0", shortname = "",}, ["Autonomous Nationalities for Change and Empowerment"] = {abbrev = "NACER", color = "#FFFF00", shortname = "",}, ["Autonomous Nationalities for Change and Revolutionary Empowerment"] = {abbrev = "", color = "#026701", shortname = "",}, ["Autonomous Party of Italy's Pensioners"] = {abbrev = "PAPI", color = "#0050AA", shortname = "",}, ["Autonomous Socialist Party (Ticino)"] = {abbrev = "", color = "#8B1C62", shortname = "Autonomous Socialists",}, ["Autonomous Socialist Party of South Jura"] = {abbrev = "", color = "#9E151C", shortname = "",}, ["Autonomous State Demand Committee (United)"] = {abbrev = "ASDC(U)", color = "grey", shortname = "",}, ["Autonomous State Demand Committee"] = {abbrev = "ASDC", color = "#ff0000", shortname = "",}, ["Autonomy Liberty Democracy"] = {abbrev = "", color = "#E56717", shortname = "",}, ["Autonomy South"] = {abbrev = "", color = "#273BE2", shortname = "",}, ["Auyl People's Democratic Patriotic Party"] = {abbrev = "", color = "#0A5B2D", shortname = "Auyl",}, ["Auzolan"] = {abbrev = "", color = "#F92D36", shortname = "",}, ["Avant"] = {abbrev = "", color = "#211473", shortname = "",}, ["Avante La Laguna"] = {abbrev = "", color = "#B14B7C", shortname = "",}, ["Avante (political party)"] = {abbrev = "", color = "#088F8F", shortname = "Avante",}, ["Avanza (Guatemala)"] = {abbrev = "", color = "#EF018D", shortname = "",}, ["Avanza Libertad"] = {abbrev = "", color = "#3A3F92", shortname = "",}, ["Avanzamos por ti"] = {abbrev = "", color = "#FFC60A", shortname = "",}, ["Awakening (political party)"] = {abbrev = "", color = "#CF1F25", shortname = "",}, ["Awami Jamhuri Ittehad Pakistan"] = {abbrev = "AJIP", color = "#5F9EA0", shortname = "",}, ["Awami League"] = {abbrev = "AL", color = "#006a4e", shortname = "",}, ["Awami Muslim League (Pakistan)"] = {abbrev = "AML", color = "#9ACD32", shortname = "",}, ["Awami Muslim League"] = {abbrev = "", color = "#bcf55c", shortname = "",}, ["Awami National Party"] = {abbrev = "ANP", color = "#c83737", shortname = "",}, ["Awami Party"] = {abbrev = "AWP", color = "#DA81F5", shortname = "",}, ["Awami Raj Party"] = {abbrev = "ARP", color = "#FFFF00", shortname = "",}, ["Awami Vikas Party"] = {abbrev = "", color = "#1f7945", shortname = "",}, ["Awami Workers Party"] = {abbrev = "AWP", color = "#DC143C", shortname = "",}, ["Ayra"] = {abbrev = "", color = "#413B3D", shortname = "",}, ["Azad Hind Fauz (Rajkiya)"] = {abbrev = "AHF", color = "#00FFCC", shortname = "",}, ["Azanian People's Organisation"] = {abbrev = "", color = "#f9a510", shortname = "",}, ["Azerbaijan Communist Party (1993)"] = {abbrev = "AKP", color = "red", shortname = "",}, ["Azerbaijan Democrat Party"] = {abbrev = "", color = "#FBFB07", shortname = "",}, ["Azerbaijan Democratic Enlightenment Party"] = {abbrev = "ADMP", color = "#7C8EBC", shortname = "",}, ["Azerbaijan Liberal Party"] = {abbrev = "", color = "#8B0000", shortname = "",}, ["Azerbaijan National Independence Party"] = {abbrev = "AMİP", color = "#0B94C2", shortname = "",}, ["Azerbaijan Social Prosperity Party"] = {abbrev = "ASRP", color = "#0000CD", shortname = "",}, ["Azerbaijani Popular Front Party"] = {abbrev = "APFP", color = "#5C5858", shortname = "",}, ["Azerbaijani Social Democratic Party"] = {abbrev = "", color = "red", shortname = "",}, ["Azimio la Umoja"] = {abbrev = "", color = "#011FB1", shortname = "Azimio",}, ["Azir Moris"] = {abbrev = "", color = "#000000", shortname = "",}, } return { full = full, alternate = alternate, } 59aafc2e132f244b3642a5ea7bbd2a3030a523c1 Template:Pan-nationalist concepts 10 1110 2419 2023-09-29T21:28:05Z wikipedia>Beshogur 0 this is not nationalism, even against wikitext text/x-wiki {{Navbox |name = Pan-nationalist concepts |title = [[Pan-nationalism|Pan-nationalist concepts]] |listclass = hlist |group1 = Ideas |list1 = *[[Pan-Africanism]] *[[Pan-Americanism]] *[[Pan-Arabism]] *[[Pan-Asianism]] *[[Berberism]] *[[Pan-Caucasianism]] *[[Pan-Celticism]] *[[Czechoslovakism]] *[[Pan-Finnicism]] *[[Pan-Germanism]] *[[Eurasianism]] *[[Pan-European nationalism]] *[[Panhispanism]] *[[Iberian federalism|Pan-Iberism]] *[[Pan-Indianism]] *[[Pan-Iranism]] *[[Pan-Latinism]] *[[Mediterraneanism]] *[[Pan-Mongolism]] *[[Pan-Oceanian|Pan-Oceanianism]] *[[Scandinavism]] *[[Greater Serbia|Pan-Serbism]] *[[Pan-Slavism]] *[[Rattachism]] *{{ill|Pan-Tatarism|ru|Пантатаризм|tt|Пантатаризм}} *[[Turanism]] *[[Pan-Turkism]] *[[Yugoslavism]] |group2 = Territorial<br />concepts |list2 = *[[Greater Albania]] *[[Basque Country (greater region)|Basque Country]] *[[Greater Bosnia]] *[[Unionism in the United Kingdom|British unionism]] *[[Bulgarian irredentism]] *[[Cambodian irredentism|Greater Cambodia]] *[[Greater Antilles|Caribbean Antilles]] *[[Catalan Countries]] *[[Celtic union]] *[[Gran Colombia]] *[[Greater China]] *[[Greater Croatia]] *[[Eritrean nationalism|Eritrean national identity nationalism]] *[[Ethiopian nationalism|Ethiopian national identity nationalism]] *[[Greater Finland]] *''[[Galicia irredenta]]'' *[[Hungarian irredentism|Greater Hungary]] *[[Greater India]] *[[Greater Indonesia]] *[[Greater Iran]] *[[Greater Iraq]] *[[Greater Israel]] *[[Italian imperialism under Fascism|Greater Italy]] *[[Greater Mauritania]] *[[Reconquista (Mexico)|Greater Mexico]] *[[Greater Moldova]] *[[Greater Morocco]] *[[Greater Netherlands]] *[[Greater Norway]] *[[Greater Palestine]] *[[Polish irredentism|Greater Poland]] *{{ill|Portugaliza|lt=Greater Portugal|pt|Portugaliza}} *[[Greater Romania]] *[[Russian irredentism|Greater Russia]] *[[Greater Serbia]] *[[Greater Somalia]] *[[Spanish irredentism|Greater Spain]] *[[Greater Syria]] *[[Ukrainian irredentism|Greater Ukraine]] *[[Vietnamese irredentism|Greater Vietnam]] *[[Yugoslav irredentism|Greater Yugoslavia]] *[[Megali Idea|Megali Idea (Greece)]] *[[Kurdish nationalism|Kurdistan]] *[[Occitan nationalism|Occitania]] *[[Padanian nationalism]] *[[Patria Grande]] *[[Tamazgha]] *[[Misak-ı Millî|Misak-ı Millî (Turkey)]] *[[United Armenia]] *[[United Ireland]] *[[United Macedonia]] *[[Whole Azerbaijan]] *[[Turan]] |group3 = [[Panethnicity|Pan-ethnic]]<br />groups |list3 = *[[Hispanic and Latino Americans|Latinos]], [[Hispanic|Hispanic peoples]] *[[Habesha peoples]] }}<noinclude> {{Documentation|content = This template shows articles about pan-nationalist concepts. ==See also== * [[:Category:Irredentism]] [[Category:Political ideology navigational boxes]] [[Category:Nationalism navigational boxes]] }}</noinclude> b8b566c0a1d134ef4baafdb951998c12e3cb04b2 Template:Script 10 1588 2923 2023-09-30T07:46:51Z w>KLITE789 0 Adding support for Nag Mundari script wikitext text/x-wiki {{#switch:{{{1|}}} <!--scripts with dedicated templates--> <!-- As of 2021-12-03, ISO 15924 and Unicode: 1. This list contains *all* ISO 15924 regular script IDs. By ISO pattern alpha4 = 'Abcd'. 2. Not included: Special codes (ISO number 900-999, e.g. symbols, unk scripts, private scripts): Qaaa..Qabx, Zinh Zmth Zsye Zsym Zxxx Zyyy Zzzz 3. Totals: 204 regular alpha4 script IDs. 4. Depending on font handling, scripts can be commented out, i.e. will use regular fonts. 5. Scripts defined in Unicode: to be documented. 6. Scripts that have lang-specifier like 'fa-Arab': unchanged, not an ISO15924 topic --> |Adlm = {{Script/Adlam|1={{{2}}}}} <!--|Afak = {{Script/Afak|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Aghb = {{Script/Caucasian_Albanian|1={{{2}}}}} |Ahom = {{Script/Ahom|1={{{2}}}}} |Arab|Arabic = {{Script/Arabic|1={{{2}}}}} |fa-Arab|az-Arab = {{Script/Nastaliq|1={{{2}}}|2=fa}} |ps-Arab = {{Script/Nastaliq|1={{{2}}}|2=ps}} |ur-Arab = {{Script/Nastaliq|1={{{2}}}}} |Aran|Nastaliq = {{Script/Nastaliq|1={{{2}}}}} |Armi = {{Script/Aramaic|1={{{2}}}}} <!--|Armn = {{Script/Armenian|1={{{2}}}}} commonly supported, may not need transclusion--> |Avst = {{Script/Avestan|1={{{2}}}}} |Bali = {{Script/Bali|1={{{2}}}}} |Bamu = {{Script/Bamum|1={{{2}}}}} |Bass = {{Script/Bassa Vah|1={{{2}}}}} |Batk = {{Script/Batak|1={{{2}}}}} <!--|Beng = {{Script/Bengali|1={{{2}}}}} commonly supported, may not need transclusion--> |Bhks = {{Script/Bhaiksuki|1={{{2}}}}} <!--|Blis = {{Script/Blissymbols|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> <!--|Bopo = {{Script/Bopomofo|1={{{2}}}}} commonly supported, may not need transclusion--> |Brah = {{Script/Brahmi|1={{{2}}}}} <!--|Brai|Braille = (Feb 2021: ISO 15924 code; in Unicode. Not a {{Script}} option) --> |Bugi = {{Script/Lontara|2={{{2}}}}} |Buhd = {{Script/Buhid|1={{{2}}}}} |Cakm = {{Script/Chakma|1={{{2}}}}} <!--|Cans = {{Script/Unified Canadian Aboriginal Syllabics|1={{{2}}}}} commonly supported, may not need transclusion--> <!--|Cari = {{Script/Carian|1={{{2}}}}} supported with Segoe UI Historic font--> |Cham = {{Script/Cham|1={{{2}}}}} <!--|Cher|Cherokee = (Feb 2021: ISO 15924 code; in Unicode. Not a {{Script}} option) --> |Chrs = {{Script/Chorasmian|1={{{2}}}}} <!--|Cirt = {{Script/Cirth|1={{{2}}}}} supported by CSUR--> |Copt = {{Script/Coptic|1={{{2}}}}} <!--|Cpmn = {{Script/Cypro-Minoan|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> <!--|Cprt = {{Script/Cprt|1={{{2}}}}} see below--> <!--|Cyrl = {{Script/Cyrillic|1={{{2}}}}} commonly supported, may not need transclusion--> |Cyrs = {{Script/Slavonic|1={{{2}}}}} <!--|Deva = {{Script/Devanagari|1={{{2}}}}} commonly supported, may not need transclusion--> <!--|Diak = {{Script/Dives_Akuru|1={{{2}}}}} pending font support--> |Dogr = {{Script/Dogra|1={{{2}}}}} <!--|Dsrt = {{Script/Deseret|1={{{2}}}}} supported with Segoe UI Symbol font--> |Dupl = {{Script/Duployan|1={{{2}}}}} <!--|Egyd = {{Script/Demotic|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> <!--|Egyh = {{Script/Hieratic|1={{{2}}}}} combined with "Egyptian Hieroglyphs"--> <!--|Egyp = {{Script/Egyptian_Hieroglyphs|1={{{2}}}}} supported with Segoe UI Historic font--> |Elba = {{Script/Elbasan|1={{{2}}}}} |Elym = {{Script/Elymaic|1={{{2}}}}} |Ethi = {{Script/Ethiopic|1={{{2}}}}} |Geok = {{Script/Khutsuri|1={{{2}}}}} <!--|Geor = {{Script/Georgian|1={{{2}}}}} commonly supported, may not need transclusion--> |Glag = {{Script/Glagolitic|1={{{2}}}}} |Gong = {{Script/Gunjala Gondi|1={{{2}}}}} |Gonm = {{Script/Masaram Gondi|1={{{2}}}}} |Goth = {{Script/Gothic|1={{{2}}}}} |Gran = {{Script/Grantha|1={{{2}}}}} |Grek|Greek = {{Script/Greek|1={{{2}}}}} <!--|Gujr = {{Script/Gujarati|1={{{2}}}}} commonly supported, may not need transclusion--> <!--|Guru = {{Script/Gurmukhi|1={{{2}}}}} commonly supported, may not need transclusion--> <!--|Hanb = (Hanzi with bopomofo) commonly supported, may not need transclusion--> <!--|Hang = {{Script/Hangul|1={{{2}}}}} commonly supported, may not need transclusion--> <!--|Hani = commonly supported, may not need transclusion--> |Hano|Hanunoo = {{Script/Hanunoo|1={{{2}}}}} <!--|Hans = (Simplified Chinese) commonly supported, may not need transclusion--> <!--|Hant = (Traditional Chinese) commonly supported, may not need transclusion--> |Hatr = {{Script/Hatran|1={{{2}}}}} |Hebr|Hebrew = {{Script/Hebrew|1={{{2}}}}} <!--|Hira = (Japanese hiragana) commonly supported, may not need transclusion--> |Hluw = {{Script/Anatolian Hieroglyphs|1={{{2}}}}} |Hmng = {{Script/Pahawh Hmong|1={{{2}}}}} |Hmnp = {{Script/Nyiakeng Puachue Hmong|1={{{2}}}}} <!--|Hrkt = (Japanese kana) commonly supported, may not need transclusion--> |Hung = {{Script/Old Hungarian|1={{{2}}}}} <!--|Inds = {{Script/Indus|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Ital = {{Script/Old Italic|1={{{2}}}}} <!--|Jamo = under Korean --> |Java = {{Script/Java|1={{{2}}}}} <!--|Jpan = (Japanese) commonly supported, may not need transclusion--> <!--|Jurc = {{Script/Jurchen|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Kali = {{Script/Kayah Li|1={{{2}}}}} <!--|Kana = (Japanese katakana) commonly supported, may not need transclusion--> |Kawi = {{Script/Kawi|1={{{2}}}}} <!--|Khar = {{Script/Kharosthi|1={{{2}}}}} supported with Segoe UI Historic font (RTL)--> |Khmr = {{Script/Khmer|1={{{2}}}}} |Khoj = {{Script/Khojki|1={{{2}}}}} <!--|Kitl = {{Script/Khitan Large Script|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Kits = {{Script/Khitan Small Script|1={{{2}}}}} <!--|Knda = {{Script/Kannada|1={{{2}}}}} commonly supported, may not need transclusion--> |Kore = {{Script/Korean|1={{{2}}}}} <!--|Kpel = {{Script/Kpelle|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Kthi = {{Script/Kaithi|1={{{2}}}}} |Lana = {{Script/Tai Tham|1={{{2}}}}} <!--|Laoo = {{Script/Lao|1={{{2}}}}} commonly supported, but transclusion may be needed to display Pali additional characters--> <!--|Latf = {{Script/Fraktur blackletter|1={{{2}}}}} see below--> <!--|en-Latf = {{Script/Textura blackletter|1={{{2}}}}} see below--> <!--|it-Latf = {{Script/Rotunda blackletter|1={{{2}}}}} see below--> |Latg = {{Script/Gaelic|1={{{2}}}}} |Latn = {{Script/Classical and Medieval Latin|1={{{2}}}}} <!--|Leke = {{Script/Leke|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Lepc = {{Script/Lepcha|1={{{2}}}}} |Limb|Limbu = {{Script/Limbu|1={{{2}}}}} <!--|Lina = {{Script/Linear A|1={{{2}}}}} see below--> <!--|Linb = {{Script/Linear B|1={{{2}}}}} see below--> |Lisu|Fraser = {{Script/Lisu|1={{{2}}}}} <!--|Loma = {{Script/Loma|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Lyci = {{Script/Lycian|1={{{2}}}}} <!--|Lydi = {{Script/Lydian|1={{{2}}}}} supported with Segoe UI Historic font--> |Mahj|Mahajani = {{Script/Mahajani|1={{{2}}}}} |Maka = {{Script/Makasar|1={{{2}}}}} |Mand = {{Script/Mandaic|1={{{2}}}}} |Mani = {{Script/Manichaean|1={{{2}}}}} |Marc = {{Script/Marchen|1={{{2}}}}} <!--|Maya = {{Script/Maya|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Medf = {{Script/Medefaidrin|1={{{2}}}}} |Mend = {{Script/Mende Kikakui|1={{{2}}}}} |Merc = {{Script/Meroitic Cursive|1={{{2}}}}} |Mero = {{Script/Meroitic Hieroglyphs|1={{{2}}}}} <!--|Mlym = {{Script/Malayalam|1={{{2}}}}} commonly supported, may not need transclusion--> |Modi = {{Script/Modi|1={{{2}}}}} <!--|Mong|Mongolian = use Template:MongolUnicode --> <!--|Moon = {{Script/Moon Type|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Mroo|Mru = {{Script/Mro|1={{{2}}}}} |Mtei|Meithei|Meetei Mayek = {{Script/Meetei Mayek|1={{{2}}}}} |Mult = {{Script/Multani|1={{{2}}}}} |Mymr|Myanmar = {{Script/Myanmar|1={{{2}}}}} |Nagm = {{Script/Nag Mundari|1={{{2}}}}} |Nand = {{Script/Nandinagari|1={{{2}}}}} |Narb = {{Script/Old North Arabian|1={{{2}}}}} |Nbat = {{Script/Nabataean|1={{{2}}}}} |Newa = {{Script/Newa|1={{{2}}}}} <!--|Nkdb = {{Script/Naxi Dongba|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> <!--|Nkgb = {{Script/Naxi Geba|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Nkoo|Nko = {{Script/Nko|1={{{2}}}}} |noto = {{Script/Noto|1={{{2}}}}} |Nshu = {{Script/Nushu|1={{{2}}}}} |Ogam = {{Script/Ogam|1={{{2}}}}} <!--|Olck = {{Script/Ol Chiki|1={{{2}}}}} supported with Nirmala UI font--> |Orkh = {{Script/Orkhon|1={{{2}}}}} <!--|Orya = {{Script/Oriya|1={{{2}}}}} commonly supported, may not need transclusion--> |Osge = {{Script/Osage|1={{{2}}}}} <!--supported with latest Gadugi font--> |Osma = {{Script/Osmanya|1={{{2}}}}} <!--|Ougr = (Feb 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option) --> |Palm = {{Script/Palmyrene|1={{{2}}}}} |Pauc = {{Script/Pau Cin Hau|1={{{2}}}}} <!--|Pcun = (Feb 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option) --> <!--|Pelm = (Feb 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option) --> |Perm = {{Script/Old Permic|1={{{2}}}}} <!--|Phag = {{Script/Phags-pa|1={{{2}}}}} supported with Microsoft PhagsPa font--> |Phli = {{Script/Pahlavi|1={{{2}}}}} |Phlp = {{Script/Psalter Pahlavi|1={{{2}}}}} <!--|Phlv = {{Script/Book Pahlavi|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Phnx|Phoenician = {{Script/Phoenician|1={{{2}}}}} |Piqd = {{Script/Klingon|1={{{2}}}}} |Plrd|Pollard = {{Script/Pollard|1={{{2}}}}} |Prti = {{Script/Pahlavi|1={{{2}}}}} <!--|Psin = (Feb 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option) --> <!--|Ranj = (Feb 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option) --> |Rjng|Rejang = {{Script/Rejang|1={{{2}}}}} |Rohg = {{Script/Hanifi Rohingya|1={{{2}}}}} <!--|Roro = {{Script/Rongorongo|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Runr = {{Script/Runic|1={{{2}}}|2={{{3}}}}} |Samr = {{Script/Samaritan|1={{{2}}}}} <!--|Sara = {{Script/Sarati|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> <!--|Sarb = {{Script/Old South Arabian|1={{{2}}}}} supported with Segoe UI Historic font--> |Saur = {{Script/Saurashtra|1={{{2}}}}} |serif = {{Script/Serif|1={{{2}}}}} |Sgnw = {{Script/Sutton SignWriting|1={{{2}}}}} <!--|Shaw = {{Script/Shavian|1={{{2}}}}} supported with Segoe UI Historic font--> |Shrd = {{Script/Sharada|1={{{2}}}}} <!--|Shui|Sui = {{Script/Shuishu|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Sidd = {{Script/Siddham|1={{{2}}}}} |Sind = {{Script/Khudawadi|1={{{2}}}}} <!--|Sinh = {{Script/Sinhala|1={{{2}}}}} commonly supported, may not need transclusion (vertical)--> |Sogd = {{Script/Sogdian|1={{{2}}}}} |Sogo = {{Script/Old Sogdian|1={{{2}}}}} <!--|Sora = {{Script/Sorang Sompeng|1={{{2}}}}} supported with Nirmala UI font --> |Soyo = {{Script/Soyombo|1={{{2}}}}} |Sund|Sunda = {{Script/Sund|1={{{2}}}}} <!--|Sunu = {{Script/Sunuwar|1={{{2}}}}} (Dec 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> |Sylo = {{Script/Syloti|1={{{2}}}}} <!--|Syrc = {{Script/Syriac|1={{{2}}}}} commonly supported, may not need transclusion / ??? --> |Syre = {{Script/Estrangelo Syriac|1={{{2}}}}} |Syrj = {{Script/Western Syriac|1={{{2}}}}} |Syrn = {{Script/Eastern Syriac|1={{{2}}}}} |Tagb = {{Script/Tagbanwa|1={{{2}}}}} |Takr = {{Script/Takri|1={{{2}}}}} <!--|Tale = {{Script/Tai Le|1={{{2}}}}} supported with Microsoft Tai Le font--> |Talu = {{Script/New Tai Lue|1={{{2}}}}} <!--|Taml = {{Script/Tamil|1={{{2}}}}} commonly supported, may not need transclusion--> |Tang = {{Script/Tangut|1={{{2}}}}} |Tavt = {{Script/Tai Viet|1={{{2}}}}} <!--|Telu = {{Script/Telugu|1={{{2}}}}} commonly supported, may not need transclusion--> <!--|Teng = {{Script/Tengwar|1={{{2}}}}} supported by CSUR--> |Tfng = {{Script/Tifinagh|1={{{2}}}}} |Tglg = {{Script/Baybayin|1={{{2}}}}} <!--|Thaa = {{Script/Thaana|1={{{2}}}}} commonly supported, may not need transclusion--> <!--|Thai = {{Script/Thai|1={{{2}}}}} commonly supported, may not need transclusion--> <!--|Tibt|Tibetan = {{Script/Tibetan|1={{{2}}}}} commonly supported, may not need transclusion /(Feb 2021: is ISO 15924 code, in Unicode) --> |Tirh = {{Script/Tirhuta|1={{{2}}}}} <!--|Toto = {{Script/Toto|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> <!--|Ugar = {{Script/Ugaritic|1={{{2}}}}} see below: by class="..." --> |Vaii|Vai = {{Script/Vai|1={{{2}}}}} <!--|Visp = {{Script/Visible Speech|1={{{2}}}}} supported by CSUR--> |Vith = {{Script/Vithkuqi|1={{{2}}}}} |Wara = {{Script/Warang Citi|1={{{2}}}}} |Wcho = {{Script/Wancho|1={{{2}}}}} <!--|Wole = {{Script/Woleai|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)--> <!--|Xpeo = {{Script/Old Persian|1={{{2}}}}} see below: by class="..." --> |Xsux = {{Script/Cuneiform|1={{{2}}}}} |Yezi|Yezidi = {{Script/Yezidi|1={{{2}}}}} |Yiii|Yi = {{Script/Yi|1={{{2}}}}} |Zanb = {{Script/Zanabazar Square|1={{{2}}}}} <!--other scripts use standard language spans--> |#default =<!-- START SWITCH2 (resolving the switch1-#default. switch2 does envelop outer code, templatestyles & span) -->{{{{{|safesubst:}}}ifsubst|1=|2=<templatestyles src="Script/styles.css" />}}<span {{#switch:{{{1}}} <!-- tweaks which should be moved to global CSS classes, with fonts supported in the Universal Language Selector --> |Cprt = class="script-Cprt" <!-- |Hano|Hanunoo = class="script-Hano" Already catched above, uses {{Script/Hanunoo}} --> |Latf|de-Latf = class="script-Latf" |en-Latf = class="script-en-Latf" |it-Latf = class="script-it-Latf" |Lina = class="script-Lina" |Linb = class="script-Linb" |Ugar = class="script-Ugar" |Xpeo = class="script-Xpeo" |#default = class="Unicode"<!-- all-the-rest ends up here. BMP(?), use generic "Unicode" CSS class for all other scripts, including "Latn" for IPA --> }}>{{{2}}}</span><!-- Tail job: analyse & categorise input-1 (script ID) not recognised -->{{#switch:{{{1|}}}|Cprt|Hano|Hanunoo|Latf|de-Latf|en-Latf|it-Latf|Lina|Linb|Ugar|Xpeo=<!-- -->|#default={{Script/doc/id-unk|input1={{{1|<noinclude>Test</noinclude>}}}}}<!-- end Tail job -->}}}}<!-- end switch2, switch1 --><noinclude>{{documentation}}</noinclude> 4bce235b6bfb4fdc94982ee252f126137dbe1b52 Template:Irredentism 10 1109 2417 2023-09-30T12:17:24Z wikipedia>LukeWiller 0 Adding link wikitext text/x-wiki {{Navbox |name = Irredentism |title = [[Irredentism]] |listclass = hlist |group1 = Africa |list1 = * [[Azawagh]] * [[Beninese irredentism|Benin]] * [[Burundian irredentism|Burundi]] * [[Burkinabè irredentism|Burkina Faso]] * [[Cameroonian irredentism|Cameroon]] * [[Chadian irredentism|Chad]] * [[Comorian irredentism|Comoros]] * [[Congolese (Democratic Republic of the Congo) irredentism|Democratic Republic of the Congo]] * [[Djiboutian irredentism|Djibouti]] * [[East African Federation]] * [[Ethiopian irredentism|Ethiopia]] * [[Egyptian irredentism|Egypt]] * [[Equatoguinean irredentism|Equatorial Guinea]] * [[Gabonese irredentism|Gabon]] * [[Guinean irredentism|Guinea]] * [[Bundu dia Kongo|Kongo]] * [[Libyan irredentism|Libya]] * [[Malagasy irredentism|Madagascar]] * [[Malawian irredentism|Malawi]] * [[Greater Mauritania|Mauritania]] * [[Mauritian irredentism|Mauritius]] ** [[Chagos Archipelago sovereignty dispute]] * [[Greater Morocco|Morocco]] ** [[Western Sahara conflict|Western Sahara]] * [[Nigerian irredentism|Nigeria]] * [[Nubia]] * [[Congolese (Republic of the Congo) irredentism|Republic of the Congo]] * [[Rwandan irredentism|Rwanda]] * [[Swazi irredentism|Eswatini]] * [[Seychellois irredentism|Seychelles]] * [[Greater Somalia|Somalia]] * [[Greater South Africa|South Africa]] * [[South Sudanese irredentism|South Sudan]] * [[Sudanese irredentism|Sudan]] * [[Union of Sahel States]] * [[Ugandan irredentism|Uganda]] * [[Zambian irredentism|Zambia]] * [[Zimbabwean irredentism|Zimbabwe]] |group2 = North America |list2 = * [[Proposed Canadian annexation of the Turks and Caicos Islands|Canada]] * [[Belizean–Guatemalan territorial dispute|Guatemala]] * [[Reconquista (Mexico)|Mexico]] ** [[Mexica Movement|Mexica]] * [[Manifest destiny|United States]] ** [[51st state]] ** [[Movements for the annexation of Canada to the United States|movement for the annexation of Canada]] * [[Saint Christopher-Nevis-Anguilla|Saint Kitts and Nevis]] * [[Unification of Saint Martin|Saint Martin]] |group3 = South America |list3 = * [[Argentine irredentism|Argentina]] ** [[United Provinces of the Río de la Plata|Gran La Plata]] * [[Día del Mar|Bolivia]] **[[Bolivian–Peruvian territorial dispute|Acre and Pando]] * [[Chilean expansionism|Chile]] ** [[Tricontinental Chile|Tricontinental]] * [[Gran Colombia|Colombia]] ** [[Colombian–Peruvian territorial dispute|Jaén and Maynas]] * [[Ecuadorian–Peruvian territorial dispute|Ecuador]] * [[Chilean–Peruvian territorial dispute|Peru]] ** [[Peru–Bolivian Confederation|Bolivia]] * [[Borders of Suriname|Suriname]] * [[Guayana Esequiba|Venezuela]] |group4 = Western Asia |list4 = * [[United Armenia|Armenia]] ** [[Miatsum|Artsakh]] ** [[Javakheti]] ** [[Western Armenia]] * [[Assyrian homeland|Assyria]] * [[Whole Azerbaijan|Azerbaijan]] ** [[Western Azerbaijan (irredentist concept)|Western Azerbaijan]] ** [[Southern Azerbaijan National Awakening Movement|Southern Azerbaijan]] * [[Annan Plan|Cyprus]] * [[Kurdistan]] ** [[Iraqi Kurdistan]] ** [[Iranian Kurdistan]] ** [[Turkish Kurdistan]] ** [[Syrian Kurdistan]] * [[Pan-Iranism|Iran]] * [[Iraqi nationalism|Iraq]] ** [[Kuwait Governorate|Kuwait]] * [[Greater Israel|Israel]] * [[Lebanese nationalism|Lebanon]] * [[Greater Palestine|Palestine]] * [[Unification of Saudi Arabia|Saudi Arabia]] * [[Greater Syria|Syria]] ** [[Hatay Province|Hatay]] * [[Misak-ı Millî|Turkey]] ** [[Taksim (politics)|Cyprus]] ** [[Pan-Turkism]] * [[Greater Yemen|Yemen]] |group5 = Southern Asia |list5 = * [[Akhand Bharat|India]] * [[Pashtunistan]] |group6 = Central Asia |list6 = * [[Politics of Tajikistan#Tajiks in Uzbekistan|Tajikistan]] |group7 = Eastern and Southeastern Asia |list7 = * [[Cambodian irredentism|Cambodia]] * [[Chinese irredentism|China]] ** [[Senkaku Islands dispute|Diaoyu]] ** [[Chinese unification|Taiwan]] * [[Korean reunification|Korea]] ** [[Korean claim to Tsushima Island|Daemado]] ** [[Jiandao|Gando]] ** [[Noktundo|Nokdundo]] * [[Greater Indonesia|Indonesia]] * [[Empire of Japan|Japan]] ** [[Kuril Islands dispute|Chishima]] ** [[Greater East Asia Co-Prosperity Sphere]] ** [[Liancourt Rocks dispute|Takeshima]] * [[Pan-Mongolism|Mongolia]] * [[Territories claimed by the Philippines|Philippines]] ** [[North Borneo dispute|Sabah]] * [[Pan-Thaiism|Thailand]] * [[Great Timor|Timor]] * [[Vietnamese irredentism|Vietnam]] |group8 = Central and Eastern Europe |list8 = * [[Belarusian Democratic Republic#Territory|Belarus]] ** [[Belastok Region]] ** [[Vilnius Region#Vilnius dispute|Vilnius Region]] ** [[Smolensk Governorate]] * [[Czechoslovakia]] ** [[Carpathian Ruthenia#Subcarpathian Rus' (1928–1938)|Carpathian Ruthenia]] ** [[Kłodzko Land|Kłodzko]] * [[Hungarian irredentism|Hungary]] * [[Greater Moldova|Moldova]] * [[Ossetia]] ** [[North Ossetia–Alania|North Ossetia]] ** [[South Ossetia]] * [[Polish irredentism|Poland]] ** [[Kresy]] ** [[Trans-Olza]] * [[Greater Romania|Romania]] ** [[Unification of Moldova and Romania|Moldova]] * [[Russian irredentism|Russia]] * [[United Slovenia|Slovenia]] * [[Ukrainian irredentism|Ukraine]] |group9 = Southern Europe |list9 = * [[Greater Albania|Albania]] ** [[Unification of Albania and Kosovo|Kosovo]] ** [[Albanian nationalism in North Macedonia|North Macedonia]] * [[Greater Bosnia|Bosnia and Herzegovina]] * [[Bulgarian irredentism|Bulgaria]] * [[Greater Croatia|Croatia]] ** [[Croatian Republic of Herzeg-Bosnia|Bosnia]] * [[Galicia irredenta|Galicia]] * [[Megali Idea|Greece]] ** [[Enosis|Cyprus]] * [[Italian irredentism|Italy]] ** [[Italian irredentism in Corsica|Corsica]] ** [[Italian irredentism in Dalmatia|Dalmatia]] ** [[Italian irredentism in Istria|Istria]] ** [[Italian irredentism in Switzerland|Italian Grisons]] ** [[Italian irredentism in Malta|Malta]] ** [[Italian irredentism in Nice|Nice]] ** [[Italian irredentism in Savoy|Savoy]] ** [[Italian irredentism in Switzerland|Ticino]] * [[United Macedonia|North Macedonia]] * [[Greater Serbia|Serbia]] ** [[Partition of Kosovo|Kosovo]] ** [[Proposed secession of Republika Srpska|Republika Srpska]] * [[Spanish irredentism|Spain]] ** [[Status of Gibraltar|Gibraltar]] ** [[Iberian federalism|Portugal]] * [[Yugoslav irredentism|Yugoslavia]] |group10 = Northern Europe |list10 = * [[Lands of Denmark|Denmark]] * [[Greater Finland|Finland]] * [[Rockall Bank dispute|Iceland]] * [[Historical Latvian Lands|Latvia]] ** [[Pytalovsky_District#History|Abrene]] ** [[Walk crisis#Runö question|Ruhnu]] * [[Cultural regions of Lithuania|Lithuania]] * [[Greater Norway#Former dependencies and homelands|Norway]] * [[Lands of Sweden#Historical lands|Sweden]] |group11 = Western Europe |list11 = * [[Greater Belgium|Belgium]] * [[Celtic union|Celtics]] * [[South Tyrolean secessionist movement|South Tyrol and Austria]] * [[Natural borders of France|France]] ** [[Rattachism|Wallonia]] * [[Pan-Germanism|Germany]] ** [[German nationalism in Austria|Austria]] *** [[Annexation of Austria]] ** [[Greater Germanic Reich]] ** [[Lebensraum]] * [[United Ireland|Ireland]] * [[Greater Netherlands|Netherlands]] * [[Enlargement of Switzerland|Switzerland]] |group12 = Oceania |list12 = * [[List of proposed states of Australia|Australia]] * [[Gilbert and Ellice Islands|Kiribati]] * [[Papuan unification|Papua New Guinea]] * [[Samoan unification|Samoa]] * [[Matthew Island and Hunter Island|Vanuatu]] |below = ''Related concepts:'' '''''[[List of national border changes since 1914|Border changes since 1914]] · [[Partition (politics)|Partitionism]] · [[Political union|Reunification]] · [[Revanchism]] · [[Revanchism|Revisionism]] · [[Rump state]]''''' }}<noinclude> {{Doc|content= ==See also== * [[:Category:Irredentism]] [[Category:Nationalism navigational boxes]] }}</noinclude> 5723d28ede391007e2d337926eeffd7d136d803a Main Page 0 1 1 2023-09-30T15:43:12Z MediaWiki default 1 Create main page wikitext text/x-wiki __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 21236ac3f8d65e5563b6da6b70815ca6bf1e6616 File:AdamDressler.png 6 2 2 2023-09-30T18:16:33Z Führerredux 2 Portrait of Adam Dressler wikitext text/x-wiki == Summary == Portrait of Adam Dressler f73893125736a7ad4c0d54b57e668b2b500cbffd Das Deutsche Reich 0 3 3 2023-09-30T18:22:53Z Führerredux 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Module:Yesno 828 6 8 7 2023-09-30T18:43:26Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Yesno]] Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Module:Arguments 828 7 10 9 2023-09-30T18:43:26Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Arguments]] Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Template:Tl 10 8 12 11 2023-09-30T18:43:27Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tl]] wikitext text/x-wiki #REDIRECT [[Template:Template link]] {{Redirect category shell| {{R from move}} }} d6593bb3b4a866249f55d0f34b047a71fe1f1529 Template:Template link 10 9 14 13 2023-09-30T18:43:27Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_link]] wikitext text/x-wiki &#123;&#123;[[Template:{{{1}}}|{{{1}}}]]&#125;&#125;<noinclude>{{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> eabbec62efe3044a98ebb3ce9e7d4d43c222351d Module:Message box 828 10 16 15 2023-09-30T18:43:28Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Message_box]] Scribunto text/plain require('strict') local getArgs local yesno = require('Module:Yesno') local lang = mw.language.getContentLanguage() local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image self.typeImageNeedsLink = typeData.imageNeedsLink -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s%s|alt=]]', self.typeImage or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" ) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end -- set templatestyles self.base_templatestyles = cfg.templatestyles self.templatestyles = args.templatestyles end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end local frame = mw.getCurrentFrame() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.base_templatestyles }, }) -- Add support for a single custom templatestyles sheet. Undocumented as -- need should be limited and many templates using mbox are substed; we -- don't want to spread templatestyles sheets around to arbitrary places if self.templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.templatestyles }, }) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('span') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :addClass('mbox-invalid-type') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) f2fb84f7b817d2d88747f57c40902a0d8be8158a Module:Message box/configuration 828 11 18 17 2023-09-30T18:43:29Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Message_box/configuration]] Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix', 'subst'}, removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox-license.svg' }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg', imageNeedsLink = true }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } 27f00af5cf3939613e9156acd5e62a3469d03d81 Template:Yesno 10 12 20 19 2023-09-30T18:43:30Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Yesno]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }} |no |n |f |false |off |0 = {{{no|<!-- null -->}}} | = {{{blank|{{{no|<!-- null -->}}}}}} |¬ = {{{¬|}}} |yes |y |t |true |on |1 = {{{yes|yes}}} |#default = {{{def|{{{yes|yes}}}}}} }}<noinclude> {{Documentation}} </noinclude> 629c2937bc5cf7cfe13cd2a598582af832782399 Template:Main other 10 13 22 21 2023-09-30T18:43:31Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Main_other]] wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:0}} | main | other }} }} | main = {{{1|}}} | other | #default = {{{2|}}} }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 86ad907ffeea3cc545159e00cd1f2d6433946450 Template:Nobold 10 14 24 23 2023-09-30T18:43:31Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Nobold]] wikitext text/x-wiki <templatestyles src="Nobold/styles.css"/><span class="nobold">{{{1}}}</span><noinclude> {{documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 9c92b5951772bb26ca0fbe9256418b65e47700dd Template:Nobold/styles.css 10 15 26 25 2023-09-30T18:43:32Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Nobold/styles.css]] text text/plain /* {{pp-template}} */ /* Styling for Template:Nobold */ .nobold { font-weight: normal; } 83e5f0adacf8c7984251f1fd9d11ed82ebaadf03 Module:Check for unknown parameters 828 16 28 27 2023-09-30T18:43:32Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Check_for_unknown_parameters]] Scribunto text/plain -- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext. local pos, truncated local function truncate(text) if truncated then return '' end if mw.ustring.len(text) > 25 then truncated = true text = mw.ustring.sub(text, 1, 25) .. '...' end return mw.text.nowiki(text) end local parts = {} for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do pos = remainder table.insert(parts, truncate(before) .. '&lt;' .. tag .. '&gt;...&lt;/' .. tag .. '&gt;') end table.insert(parts, truncate(text:sub(pos or 1))) return table.concat(parts) end function p._check(args, pargs) if type(args) ~= "table" or type(pargs) ~= "table" then -- TODO: error handling return end -- create the list of known args, regular expressions, and the return string local knownargs = {} local regexps = {} for k, v in pairs(args) do if type(k) == 'number' then v = trim(v) knownargs[v] = 1 elseif k:find('^regexp[1-9][0-9]*$') then table.insert(regexps, '^' .. v .. '$') end end -- loop over the parent args, and make sure they are on the list local ignoreblank = isnotempty(args['ignoreblank']) local showblankpos = isnotempty(args['showblankpositional']) local values = {} for k, v in pairs(pargs) do if type(k) == 'string' and knownargs[k] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(k, regexp) then knownflag = true break end end if not knownflag and ( not ignoreblank or isnotempty(v) ) then table.insert(values, clean(k)) end elseif type(k) == 'number' and knownargs[tostring(k)] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(tostring(k), regexp) then knownflag = true break end end if not knownflag and ( showblankpos or isnotempty(v) ) then table.insert(values, k .. ' = ' .. clean(v)) end end end -- add results to the output tables local res = {} if #values > 0 then local unknown_text = args['unknown'] or 'Found _VALUE_, ' if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then local preview_text = args['preview'] if isnotempty(preview_text) then preview_text = require('Module:If preview')._warning({preview_text}) elseif preview == nil then preview_text = unknown_text end unknown_text = preview_text end for _, v in pairs(values) do -- Fix odd bug for | = which gets stripped to the empty string and -- breaks category links if v == '' then v = ' ' end -- avoid error with v = 'example%2' ("invalid capture index") local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v}) table.insert(res, r) end end return table.concat(res) end function p.check(frame) local args = frame.args local pargs = frame:getParent().args return p._check(args, pargs) end return p 93db6d115d4328d2a5148bb42959105e367b663e Module:String 828 17 30 29 2023-09-30T18:43:33Z Führerredux 2 1 revision imported from [[:wikipedia:Module:String]] Scribunto text/plain --[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ) local s = new_args['s'] or '' return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The fist index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ) local s = new_args['s'] or '' local i = tonumber( new_args['i'] ) or 1 local j = tonumber( new_args['j'] ) or -1 local len = mw.ustring.len( s ) -- Convert negatives for range checking if i < 0 then i = len + i + 1 end if j < 0 then j = len + j + 1 end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ) end if j < i then return str._error( 'String subset indices out of order' ) end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ _match This function returns a substring from the source string that matches a specified pattern. It is exported for use in other modules Usage: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain_flag, nomatch ) if s == '' then return str._error( 'Target string is empty' ) end if pattern == '' then return str._error( 'Pattern string is empty' ) end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ) end if match_index == 0 then return str._error( 'Match index is out of range' ) end if plain_flag then pattern = str._escapePattern( pattern ) end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ) end local iterator = mw.ustring.gmatch(s, pattern) if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1 if match_index == 0 then result = w break end end else -- Reverse search local result_table = {} local count = 1 for w in iterator do result_table[count] = w count = count + 1 end result = result_table[ count + match_index ] end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ) else return nomatch end else return result end end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} OR {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ) local s = new_args['s'] or '' local start = tonumber( new_args['start'] ) or 1 local plain_flag = str._getBoolean( new_args['plain'] or false ) local pattern = new_args['pattern'] or '' local match_index = math.floor( tonumber(new_args['match']) or 1 ) local nomatch = new_args['nomatch'] return str._match( s, pattern, start, match_index, plain_flag, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ) local target_str = new_args['target'] or '' local pos = tonumber( new_args['pos'] ) or 0 if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ) end return mw.ustring.sub( target_str, pos, pos ) end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ) local source_str = new_args['source'] or '' local target_str = new_args['target'] or '' if target_str == '' then return 1 end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['target'] or '' local start_pos = tonumber(new_args['start']) or 1 local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return 0 end plain = str._getBoolean( plain ) local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['pattern'] or '' local replace = new_args['replace'] or '' local count = tonumber( new_args['count'] ) local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return source_str end plain = str._getBoolean( plain ) if plain then pattern = str._escapePattern( pattern ) replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end local result if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ) else result = mw.ustring.gsub( source_str, pattern, replace ) end return result end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ) end local result = str._escapePattern( pattern_str ) return result end --[[ count This function counts the number of occurrences of one string in another. ]] function str.count(frame) local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = str._getBoolean(args.plain or true) if plain then pattern = str._escapePattern(pattern) end local _, count = mw.ustring.gsub(source, pattern, '') return count end --[[ endswith This function determines whether a string ends with another string. ]] function str.endswith(frame) local args = str._getParameters(frame.args, {'source', 'pattern'}) local source = args.source or '' local pattern = args.pattern or '' if pattern == '' then -- All strings end with the empty string. return "yes" end if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then return "yes" else return "" end end --[[ join Join all non empty arguments together; the first argument is the separator. Usage: {{#invoke:String|join|sep|one|two|three}} ]] function str.join(frame) local args = {} local sep for _, v in ipairs( frame.args ) do if sep then if v ~= '' then table.insert(args, v) end else sep = v end end return table.concat( args, sep or '' ) end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {} local index = 1 local value for _, arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index] index = index + 1 end new_args[arg] = value end return new_args end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame() local error_category = frame.args.error_category or 'Errors reported by Module String' local ignore_errors = frame.args.ignore_errors or false local no_category = frame.args.no_category or false if str._getBoolean(ignore_errors) then return '' end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>' if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str end return error_str end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false else boolean_value = true end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else error( 'No boolean value found' ) end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ) end return str 6df794dd52434e0f6a372c9918f5a9dedd15f579 Module:Infobox 828 18 32 31 2023-09-30T18:43:34Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Infobox]] Scribunto text/plain local p = {} local args = {} local origArgs = {} local root local empty_row_categories = {} local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' local has_rows = false local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = 'Hlist/styles.css' } } local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end local function fixChildBoxes(sval, tt) local function notempty( s ) return s and s:match( '%S' ) end if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval -- start moving templatestyles and categories inside of table rows local slast = '' while slast ~= s do slast = s s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1') end -- end moving templatestyles and categories inside of table rows s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) if s:match(marker) then s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') end if s:match(marker) then local subcells = mw.text.split(s, marker) s = '' for k = 1, #subcells do if k == 1 then s = s .. subcells[k] .. '</' .. tt .. '></tr>' elseif k == #subcells then local rowstyle = ' style="display:none"' if notempty(subcells[k]) then rowstyle = '' end s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] elseif notempty(subcells[k]) then if (k % 2) == 0 then s = s .. subcells[k] else s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' end end end end -- the next two lines add a newline at the end of lists for the PHP parser -- [[Special:Diff/849054481]] -- remove when [[:phab:T191516]] is fixed or OBE s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1') s = mw.ustring.gsub(s, '^(%{%|)', '\n%1') return s else return sval end end -- Cleans empty tables local function cleanInfobox() root = tostring(root) if has_rows == false then root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '') end end -- Returns the union of the values of two tables, as a sequence. local function union(t1, t2) local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix was 'data', and -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local function getArgNums(prefix) local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. local function addRow(rowArgs) if rowArgs.header and rowArgs.header ~= '_BLANK_' then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass }) root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :tag('th') :attr('colspan', '2') :addClass('infobox-header') :addClass(rowArgs.class) :addClass(args.headerclass) -- @deprecated next; target .infobox-<name> .infobox-header :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.header, 'th')) if rowArgs.data then root:wikitext( '[[Category:Pages using infobox templates with ignored data cells]]' ) end elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class }) local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) if rowArgs.label then row :tag('th') :attr('scope', 'row') :addClass('infobox-label') -- @deprecated next; target .infobox-<name> .infobox-label :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :wikitext(rowArgs.label) :done() end local dataCell = row:tag('td') dataCell :attr('colspan', not rowArgs.label and '2' or nil) :addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data') :addClass(rowArgs.class) -- @deprecated next; target .infobox-<name> .infobox(-full)-data :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.data, 'td')) else table.insert(empty_row_categories, rowArgs.data or '') end end local function renderTitle() if not args.title then return end has_rows = true has_list_class({args.titleclass}) root :tag('caption') :addClass('infobox-title') :addClass(args.titleclass) -- @deprecated next; target .infobox-<name> .infobox-title :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end has_rows = true has_list_class({ args.aboveclass }) root :tag('tr') :tag('th') :attr('colspan', '2') :addClass('infobox-above') :addClass(args.aboveclass) -- @deprecated next; target .infobox-<name> .infobox-above :cssText(args.abovestyle) :wikitext(fixChildBoxes(args.above,'th')) end local function renderBelowRow() if not args.below then return end has_rows = true has_list_class({ args.belowclass }) root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-below') :addClass(args.belowclass) -- @deprecated next; target .infobox-<name> .infobox-below :cssText(args.belowstyle) :wikitext(fixChildBoxes(args.below,'td')) end local function addSubheaderRow(subheaderArgs) if subheaderArgs.data and subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ subheaderArgs.rowclass, subheaderArgs.class }) local row = root:tag('tr') row:addClass(subheaderArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-subheader') :addClass(subheaderArgs.class) :cssText(subheaderArgs.datastyle) :cssText(subheaderArgs.rowcellstyle) :wikitext(fixChildBoxes(subheaderArgs.data, 'td')) else table.insert(empty_row_categories, subheaderArgs.data or '') end end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader') for k, num in ipairs(subheadernums) do addSubheaderRow({ data = args['subheader' .. tostring(num)], -- @deprecated next; target .infobox-<name> .infobox-subheader datastyle = args.subheaderstyle, rowcellstyle = args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function addImageRow(imageArgs) if imageArgs.data and imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ imageArgs.rowclass, imageArgs.class }) local row = root:tag('tr') row:addClass(imageArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-image') :addClass(imageArgs.class) :cssText(imageArgs.datastyle) :wikitext(fixChildBoxes(imageArgs.data, 'td')) else table.insert(empty_row_categories, imageArgs.data or '') end end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :addClass('infobox-caption') -- @deprecated next; target .infobox-<name> .infobox-caption :cssText(args.captionstyle) :wikitext(caption) end addImageRow({ data = tostring(data), -- @deprecated next; target .infobox-<name> .infobox-image datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end -- When autoheaders are turned on, preprocesses the rows local function preprocessRows() if not args.autoheaders then return end local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) local lastheader for k, num in ipairs(rownums) do if args['header' .. tostring(num)] then if lastheader then args['header' .. tostring(lastheader)] = nil end lastheader = num elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub( category_in_empty_row_pattern, '' ):match('^%S') then local data = args['data' .. tostring(num)] if data:gsub(category_in_empty_row_pattern, ''):match('%S') then lastheader = nil end end end if lastheader then args['header' .. tostring(lastheader)] = nil end end -- Gets the union of the header and data argument numbers, -- and renders them all in order local function renderRows() local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], rowclass = args['rowclass' .. tostring(num)], -- @deprecated next; target .infobox-<name> rowclass rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)] }) end end local function renderNavBar() if not args.name then return end has_rows = true root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-navbar') :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, }) end local function renderItalicTitle() local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then root:wikitext(require('Module:Italic title')._main({})) end end -- Categories in otherwise empty rows are collected in empty_row_categories. -- This function adds them to the module output. It is not affected by -- args.decat because this module should not prevent module-external categories -- from rendering. local function renderEmptyRowCategories() for _, s in ipairs(empty_row_categories) do root:wikitext(s) end end -- Render tracking categories. args.decat == turns off tracking categories. local function renderTrackingCategories() if args.decat == 'yes' then return end if args.child == 'yes' then if args.title then root:wikitext( '[[Category:Pages using embedded infobox templates with the title parameter]]' ) end elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then root:wikitext('[[Category:Articles using infobox templates with no data rows]]') end end --[=[ Loads the templatestyles for the infobox. TODO: FINISH loading base templatestyles here rather than in MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables. See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :). When we do this we should clean up the inline CSS below too. Will have to do some bizarre conversion category like with sidebar. ]=] local function loadTemplateStyles() local frame = mw.getCurrentFrame() local hlist_templatestyles = '' if lists.hlist_t.found then hlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.hlist_t.styles } } end local plainlist_templatestyles = '' if lists.plainlist_t.found then plainlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.plainlist_t.styles } } end -- See function description local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' } } local templatestyles = '' if args['templatestyles'] then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ -- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering. -- this ordering is not a guarantee because the rows of interest invoking -- each class may not be on a specific page hlist_templatestyles, plainlist_templatestyles, base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles }) end -- common functions between the child and non child cases local function structure_infobox_common() renderSubheaders() renderImages() preprocessRows() renderRows() renderBelowRow() renderNavBar() renderItalicTitle() renderEmptyRowCategories() renderTrackingCategories() cleanInfobox() end -- Specify the overall layout of the infobox, with special settings if the -- infobox is used as a 'child' inside another infobox. local function _infobox() if args.child ~= 'yes' then root = mw.html.create('table') root :addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox') :addClass(args.bodyclass) -- @deprecated next; target .infobox-<name> :cssText(args.bodystyle) has_list_class({ args.bodyclass }) renderTitle() renderAboveRow() else root = mw.html.create() root :wikitext(args.title) end structure_infobox_common() return loadTemplateStyles() .. root end -- If the argument exists and isn't blank, add it to the argument table. -- Blank arguments are treated as nil to match the behaviour of ParserFunctions. local function preprocessSingleArg(argName) if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end -- Assign the parameters with the given prefixes to the args table, in order, in -- batches of the step size specified. This is to prevent references etc. from -- appearing in the wrong order. The prefixTable should be an array containing -- tables, each of which has two possible fields, a "prefix" string and a -- "depend" table. The function always parses parameters containing the "prefix" -- string, but only parses parameters in the "depend" table if the prefix -- parameter is present and non-blank. local function preprocessArgs(prefixTable, step) if type(prefixTable) ~= 'table' then error("Non-table value detected for the prefix table", 2) end if type(step) ~= 'number' then error("Invalid step value detected", 2) end -- Get arguments without a number suffix, and check for bad input. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Invalid input detected to preprocessArgs prefix table', 2) end preprocessSingleArg(v.prefix) -- Only parse the depend parameter if the prefix parameter is present -- and not blank. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Invalid "depend" parameter value detected in preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Get arguments with number suffixes. local a = 1 -- Counter variable. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) if origArgs[prefixArgName] then -- Do another loop if any arguments are found, even blank ones. moreArgumentsExist = true preprocessSingleArg(prefixArgName) end -- Process the depend table if the prefix argument is present -- and not blank, or we are processing "prefix1" and "prefix" is -- present and not blank, and if the depend table is present. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) preprocessSingleArg(dependArgName) end end end end a = a + step end end -- Parse the data parameters in the same order that the old {{infobox}} did, so -- that references etc. will display in the expected places. Parameters that -- depend on another parameter are only processed if that parameter is present, -- to avoid phantom references appearing in article reference lists. local function parseDataParameters() preprocessSingleArg('autoheaders') preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') -- different behaviour for italics if blank or absent args['italic title'] = origArgs['italic title'] preprocessSingleArg('decat') preprocessSingleArg('templatestyles') preprocessSingleArg('child templatestyles') preprocessSingleArg('grandchild templatestyles') end -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. function p.infobox(frame) if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end parseDataParameters() return _infobox() end -- For calling via #invoke within a template function p.infoboxTemplate(frame) origArgs = {} for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end parseDataParameters() return _infobox() end return p 0ddb7e5c8426d67cd589b710efb9912ddfb67fea Module:Infobox/styles.css 828 19 34 33 2023-09-30T18:43:34Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Infobox/styles.css]] text text/plain /* {{pp|small=y}} */ /* * This TemplateStyles sheet deliberately does NOT include the full set of * infobox styles. We are still working to migrate all of the manual * infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]] * DO NOT ADD THEM HERE */ /* * not strictly certain these styles are necessary since the modules now * exclusively output infobox-subbox or infobox, not both * just replicating the module faithfully */ .infobox-subbox { padding: 0; border: none; margin: -3px; width: auto; min-width: 100%; font-size: 100%; clear: none; float: none; background-color: transparent; } .infobox-3cols-child { margin: auto; } .infobox .navbar { font-size: 100%; } /* T281642 */ body.skin-minerva .infobox-header, body.skin-minerva .infobox-subheader, body.skin-minerva .infobox-above, body.skin-minerva .infobox-title, body.skin-minerva .infobox-image, body.skin-minerva .infobox-full-data, body.skin-minerva .infobox-below { text-align: center; } e8de6d96f4fde53afc4a6b0fed534405ab59b0a7 Module:List 828 20 36 35 2023-09-30T18:43:35Z Führerredux 2 1 revision imported from [[:wikipedia:Module:List]] Scribunto text/plain local libUtil = require('libraryUtil') local checkType = libUtil.checkType local mTableTools = require('Module:TableTools') local p = {} local listTypes = { ['bulleted'] = true, ['unbulleted'] = true, ['horizontal'] = true, ['ordered'] = true, ['horizontal_ordered'] = true } function p.makeListData(listType, args) -- Constructs a data table to be passed to p.renderList. local data = {} -- Classes and TemplateStyles data.classes = {} data.templatestyles = '' if listType == 'horizontal' or listType == 'horizontal_ordered' then table.insert(data.classes, 'hlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Hlist/styles.css' } } elseif listType == 'unbulleted' then table.insert(data.classes, 'plainlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Plainlist/styles.css' } } end table.insert(data.classes, args.class) -- Main div style data.style = args.style -- Indent for horizontal lists if listType == 'horizontal' or listType == 'horizontal_ordered' then local indent = tonumber(args.indent) indent = indent and indent * 1.6 or 0 if indent > 0 then data.marginLeft = indent .. 'em' end end -- List style types for ordered lists -- This could be "1, 2, 3", "a, b, c", or a number of others. The list style -- type is either set by the "type" attribute or the "list-style-type" CSS -- property. if listType == 'ordered' or listType == 'horizontal_ordered' then data.listStyleType = args.list_style_type or args['list-style-type'] data.type = args['type'] -- Detect invalid type attributes and attempt to convert them to -- list-style-type CSS properties. if data.type and not data.listStyleType and not tostring(data.type):find('^%s*[1AaIi]%s*$') then data.listStyleType = data.type data.type = nil end end -- List tag type if listType == 'ordered' or listType == 'horizontal_ordered' then data.listTag = 'ol' else data.listTag = 'ul' end -- Start number for ordered lists data.start = args.start if listType == 'horizontal_ordered' then -- Apply fix to get start numbers working with horizontal ordered lists. local startNum = tonumber(data.start) if startNum then data.counterReset = 'listitem ' .. tostring(startNum - 1) end end -- List style -- ul_style and ol_style are included for backwards compatibility. No -- distinction is made for ordered or unordered lists. data.listStyle = args.list_style -- List items -- li_style is included for backwards compatibility. item_style was included -- to be easier to understand for non-coders. data.itemStyle = args.item_style or args.li_style data.items = {} for _, num in ipairs(mTableTools.numKeys(args)) do local item = {} item.content = args[num] item.style = args['item' .. tostring(num) .. '_style'] or args['item_style' .. tostring(num)] item.value = args['item' .. tostring(num) .. '_value'] or args['item_value' .. tostring(num)] table.insert(data.items, item) end return data end function p.renderList(data) -- Renders the list HTML. -- Return the blank string if there are no list items. if type(data.items) ~= 'table' or #data.items < 1 then return '' end -- Render the main div tag. local root = mw.html.create('div') for _, class in ipairs(data.classes or {}) do root:addClass(class) end root:css{['margin-left'] = data.marginLeft} if data.style then root:cssText(data.style) end -- Render the list tag. local list = root:tag(data.listTag or 'ul') list :attr{start = data.start, type = data.type} :css{ ['counter-reset'] = data.counterReset, ['list-style-type'] = data.listStyleType } if data.listStyle then list:cssText(data.listStyle) end -- Render the list items for _, t in ipairs(data.items or {}) do local item = list:tag('li') if data.itemStyle then item:cssText(data.itemStyle) end if t.style then item:cssText(t.style) end item :attr{value = t.value} :wikitext(t.content) end return data.templatestyles .. tostring(root) end function p.renderTrackingCategories(args) local isDeprecated = false -- Tracks deprecated parameters. for k, v in pairs(args) do k = tostring(k) if k:find('^item_style%d+$') or k:find('^item_value%d+$') then isDeprecated = true break end end local ret = '' if isDeprecated then ret = ret .. '[[Category:List templates with deprecated parameters]]' end return ret end function p.makeList(listType, args) if not listType or not listTypes[listType] then error(string.format( "bad argument #1 to 'makeList' ('%s' is not a valid list type)", tostring(listType) ), 2) end checkType('makeList', 2, args, 'table') local data = p.makeListData(listType, args) local list = p.renderList(data) local trackingCategories = p.renderTrackingCategories(args) return list .. trackingCategories end for listType in pairs(listTypes) do p[listType] = function (frame) local mArguments = require('Module:Arguments') local origArgs = mArguments.getArgs(frame, { valueFunc = function (key, value) if not value or not mw.ustring.find(value, '%S') then return nil end if mw.ustring.find(value, '^%s*[%*#;:]') then return value else return value:match('^%s*(.-)%s*$') end return nil end }) -- Copy all the arguments to a new table, for faster indexing. local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.makeList(listType, args) end end return p 7a4f36a6e9cd56370bdd8207d23694124821dc1a Module:TableTools 828 21 38 37 2023-09-30T18:43:35Z Führerredux 2 1 revision imported from [[:wikipedia:Module:TableTools]] Scribunto text/plain ------------------------------------------------------------------------------------ -- TableTools -- -- -- -- This module includes a number of functions for dealing with Lua tables. -- -- It is a meta-module, meant to be called from other Lua modules, and should not -- -- be called directly from #invoke. -- ------------------------------------------------------------------------------------ local libraryUtil = require('libraryUtil') local p = {} -- Define often-used variables and functions. local floor = math.floor local infinity = math.huge local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti ------------------------------------------------------------------------------------ -- isPositiveInteger -- -- This function returns true if the given value is a positive integer, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a given table key is in the array part or the -- hash part of a table. ------------------------------------------------------------------------------------ function p.isPositiveInteger(v) return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity end ------------------------------------------------------------------------------------ -- isNan -- -- This function returns true if the given number is a NaN value, and false if -- not. Although it doesn't operate on tables, it is included here as it is useful -- for determining whether a value can be a valid table key. Lua will generate an -- error if a NaN is used as a table key. ------------------------------------------------------------------------------------ function p.isNan(v) return type(v) == 'number' and v ~= v end ------------------------------------------------------------------------------------ -- shallowClone -- -- This returns a clone of a table. The value returned is a new table, but all -- subtables and functions are shared. Metamethods are respected, but the returned -- table will have no metatable of its own. ------------------------------------------------------------------------------------ function p.shallowClone(t) checkType('shallowClone', 1, t, 'table') local ret = {} for k, v in pairs(t) do ret[k] = v end return ret end ------------------------------------------------------------------------------------ -- removeDuplicates -- -- This removes duplicate values from an array. Non-positive-integer keys are -- ignored. The earliest value is kept, and all subsequent duplicate values are -- removed, but otherwise the array order is unchanged. ------------------------------------------------------------------------------------ function p.removeDuplicates(arr) checkType('removeDuplicates', 1, arr, 'table') local isNan = p.isNan local ret, exists = {}, {} for _, v in ipairs(arr) do if isNan(v) then -- NaNs can't be table keys, and they are also unique, so we don't need to check existence. ret[#ret + 1] = v else if not exists[v] then ret[#ret + 1] = v exists[v] = true end end end return ret end ------------------------------------------------------------------------------------ -- numKeys -- -- This takes a table and returns an array containing the numbers of any numerical -- keys that have non-nil values, sorted in numerical order. ------------------------------------------------------------------------------------ function p.numKeys(t) checkType('numKeys', 1, t, 'table') local isPositiveInteger = p.isPositiveInteger local nums = {} for k in pairs(t) do if isPositiveInteger(k) then nums[#nums + 1] = k end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- affixNums -- -- This takes a table and returns an array containing the numbers of keys with the -- specified prefix and suffix. For example, for the table -- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return -- {1, 3, 6}. ------------------------------------------------------------------------------------ function p.affixNums(t, prefix, suffix) checkType('affixNums', 1, t, 'table') checkType('affixNums', 2, prefix, 'string', true) checkType('affixNums', 3, suffix, 'string', true) local function cleanPattern(s) -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally. return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1') end prefix = prefix or '' suffix = suffix or '' prefix = cleanPattern(prefix) suffix = cleanPattern(suffix) local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' local nums = {} for k in pairs(t) do if type(k) == 'string' then local num = mw.ustring.match(k, pattern) if num then nums[#nums + 1] = tonumber(num) end end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- numData -- -- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table -- of subtables in the format -- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}. -- Keys that don't end with an integer are stored in a subtable named "other". The -- compress option compresses the table so that it can be iterated over with -- ipairs. ------------------------------------------------------------------------------------ function p.numData(t, compress) checkType('numData', 1, t, 'table') checkType('numData', 2, compress, 'boolean', true) local ret = {} for k, v in pairs(t) do local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$') if num then num = tonumber(num) local subtable = ret[num] or {} if prefix == '' then -- Positional parameters match the blank string; put them at the start of the subtable instead. prefix = 1 end subtable[prefix] = v ret[num] = subtable else local subtable = ret.other or {} subtable[k] = v ret.other = subtable end end if compress then local other = ret.other ret = p.compressSparseArray(ret) ret.other = other end return ret end ------------------------------------------------------------------------------------ -- compressSparseArray -- -- This takes an array with one or more nil values, and removes the nil values -- while preserving the order, so that the array can be safely traversed with -- ipairs. ------------------------------------------------------------------------------------ function p.compressSparseArray(t) checkType('compressSparseArray', 1, t, 'table') local ret = {} local nums = p.numKeys(t) for _, num in ipairs(nums) do ret[#ret + 1] = t[num] end return ret end ------------------------------------------------------------------------------------ -- sparseIpairs -- -- This is an iterator for sparse arrays. It can be used like ipairs, but can -- handle nil values. ------------------------------------------------------------------------------------ function p.sparseIpairs(t) checkType('sparseIpairs', 1, t, 'table') local nums = p.numKeys(t) local i = 0 local lim = #nums return function () i = i + 1 if i <= lim then local key = nums[i] return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- size -- -- This returns the size of a key/value pair table. It will also work on arrays, -- but for arrays it is more efficient to use the # operator. ------------------------------------------------------------------------------------ function p.size(t) checkType('size', 1, t, 'table') local i = 0 for _ in pairs(t) do i = i + 1 end return i end local function defaultKeySort(item1, item2) -- "number" < "string", so numbers will be sorted before strings. local type1, type2 = type(item1), type(item2) if type1 ~= type2 then return type1 < type2 elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then return tostring(item1) < tostring(item2) else return item1 < item2 end end ------------------------------------------------------------------------------------ -- keysToList -- -- Returns an array of the keys in a table, sorted using either a default -- comparison function or a custom keySort function. ------------------------------------------------------------------------------------ function p.keysToList(t, keySort, checked) if not checked then checkType('keysToList', 1, t, 'table') checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'}) end local arr = {} local index = 1 for k in pairs(t) do arr[index] = k index = index + 1 end if keySort ~= false then keySort = type(keySort) == 'function' and keySort or defaultKeySort table.sort(arr, keySort) end return arr end ------------------------------------------------------------------------------------ -- sortedPairs -- -- Iterates through a table, with the keys sorted using the keysToList function. -- If there are only numerical keys, sparseIpairs is probably more efficient. ------------------------------------------------------------------------------------ function p.sortedPairs(t, keySort) checkType('sortedPairs', 1, t, 'table') checkType('sortedPairs', 2, keySort, 'function', true) local arr = p.keysToList(t, keySort, true) local i = 0 return function () i = i + 1 local key = arr[i] if key ~= nil then return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- isArray -- -- Returns true if the given value is a table and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArray(v) if type(v) ~= 'table' then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- isArrayLike -- -- Returns true if the given value is iterable and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArrayLike(v) if not pcall(pairs, v) then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- invert -- -- Transposes the keys and values in an array. For example, {"a", "b", "c"} -> -- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to -- the index of the last duplicate) and NaN values are ignored. ------------------------------------------------------------------------------------ function p.invert(arr) checkType("invert", 1, arr, "table") local isNan = p.isNan local map = {} for i, v in ipairs(arr) do if not isNan(v) then map[v] = i end end return map end ------------------------------------------------------------------------------------ -- listToSet -- -- Creates a set from the array part of the table. Indexing the set by any of the -- values of the array returns true. For example, {"a", "b", "c"} -> -- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them -- never equal to any value (including other NaNs or even themselves). ------------------------------------------------------------------------------------ function p.listToSet(arr) checkType("listToSet", 1, arr, "table") local isNan = p.isNan local set = {} for _, v in ipairs(arr) do if not isNan(v) then set[v] = true end end return set end ------------------------------------------------------------------------------------ -- deepCopy -- -- Recursive deep copy function. Preserves identities of subtables. ------------------------------------------------------------------------------------ local function _deepCopy(orig, includeMetatable, already_seen) -- Stores copies of tables indexed by the original table. already_seen = already_seen or {} local copy = already_seen[orig] if copy ~= nil then return copy end if type(orig) == 'table' then copy = {} for orig_key, orig_value in pairs(orig) do copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen) end already_seen[orig] = copy if includeMetatable then local mt = getmetatable(orig) if mt ~= nil then local mt_copy = _deepCopy(mt, includeMetatable, already_seen) setmetatable(copy, mt_copy) already_seen[mt] = mt_copy end end else -- number, string, boolean, etc copy = orig end return copy end function p.deepCopy(orig, noMetatable, already_seen) checkType("deepCopy", 3, already_seen, "table", true) return _deepCopy(orig, not noMetatable, already_seen) end ------------------------------------------------------------------------------------ -- sparseConcat -- -- Concatenates all values in the table that are indexed by a number, in order. -- sparseConcat{a, nil, c, d} => "acd" -- sparseConcat{nil, b, c, d} => "bcd" ------------------------------------------------------------------------------------ function p.sparseConcat(t, sep, i, j) local arr = {} local arr_i = 0 for _, v in p.sparseIpairs(t) do arr_i = arr_i + 1 arr[arr_i] = v end return table.concat(arr, sep, i, j) end ------------------------------------------------------------------------------------ -- length -- -- Finds the length of an array, or of a quasi-array with keys such as "data1", -- "data2", etc., using an exponential search algorithm. It is similar to the -- operator #, but may return a different value when there are gaps in the array -- portion of the table. Intended to be used on data loaded with mw.loadData. For -- other tables, use #. -- Note: #frame.args in frame object always be set to 0, regardless of the number -- of unnamed template parameters, so use this function for frame.args. ------------------------------------------------------------------------------------ function p.length(t, prefix) -- requiring module inline so that [[Module:Exponential search]] which is -- only needed by this one function doesn't get millions of transclusions local expSearch = require("Module:Exponential search") checkType('length', 1, t, 'table') checkType('length', 2, prefix, 'string', true) return expSearch(function (i) local key if prefix then key = prefix .. tostring(i) else key = i end return t[key] ~= nil end) or 0 end ------------------------------------------------------------------------------------ -- inArray -- -- Returns true if valueToFind is a member of the array, and false otherwise. ------------------------------------------------------------------------------------ function p.inArray(arr, valueToFind) checkType("inArray", 1, arr, "table") -- if valueToFind is nil, error? for _, v in ipairs(arr) do if v == valueToFind then return true end end return false end return p 085e7094ac84eb0132ee65822cf3f69cd8ba3d81 Template:Tlx 10 22 40 39 2023-09-30T18:43:36Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tlx]] wikitext text/x-wiki #REDIRECT [[Template:Template link expanded]] {{Redirect category shell| {{R from move}} }} 1fec988ceb46cb324af228aac45d7cd25fcc9008 Template:Template link expanded 10 23 42 41 2023-09-30T18:43:37Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_link_expanded]] wikitext text/x-wiki {{#Invoke:Template link general|main|code=on}}<noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlx}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 6c99696fee02f1da368ed20d2504e19bc15b1c13 Module:Template link general 828 24 44 43 2023-09-30T18:43:38Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Template_link_general]] Scribunto text/plain -- This implements Template:Tlg local getArgs = require('Module:Arguments').getArgs local p = {} -- Is a string non-empty? local function _ne(s) return s ~= nil and s ~= "" end local nw = mw.text.nowiki local function addTemplate(s) local i, _ = s:find(':', 1, true) if i == nil then return 'Template:' .. s end local ns = s:sub(1, i - 1) if ns == '' or mw.site.namespaces[ns] then return s else return 'Template:' .. s end end local function trimTemplate(s) local needle = 'template:' if s:sub(1, needle:len()):lower() == needle then return s:sub(needle:len() + 1) else return s end end local function linkTitle(args) if _ne(args.nolink) then return args['1'] end local titleObj local titlePart = '[[' if args['1'] then -- This handles :Page and other NS titleObj = mw.title.new(args['1'], 'Template') else titleObj = mw.title.getCurrentTitle() end titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or addTemplate(args['1'])) local textPart = args.alttext if not _ne(textPart) then if titleObj ~= nil then textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText else -- redlink textPart = args['1'] end end if _ne(args.subst) then -- HACK: the ns thing above is probably broken textPart = 'subst:' .. textPart end if _ne(args.brace) then textPart = nw('{{') .. textPart .. nw('}}') elseif _ne(args.braceinside) then textPart = nw('{') .. textPart .. nw('}') end titlePart = titlePart .. '|' .. textPart .. ']]' if _ne(args.braceinside) then titlePart = nw('{') .. titlePart .. nw('}') end return titlePart end function p.main(frame) local args = getArgs(frame, { trim = true, removeBlanks = false }) return p._main(args) end function p._main(args) local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname) local italic = _ne(args.italic) or _ne(args.italics) local dontBrace = _ne(args.brace) or _ne(args.braceinside) local code = _ne(args.code) or _ne(args.tt) local show_result = _ne(args._show_result) local expand = _ne(args._expand) -- Build the link part local titlePart = linkTitle(args) if bold then titlePart = "'''" .. titlePart .. "'''" end if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end -- Build the arguments local textPart = "" local textPartBuffer = "&#124;" local codeArguments = {} local codeArgumentsString = "" local i = 2 local j = 1 while args[i] do local val = args[i] if val ~= "" then if _ne(args.nowiki) then -- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will -- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up val = nw(mw.text.unstripNoWiki(val)) end local k, v = string.match(val, "(.*)=(.*)") if not k then codeArguments[j] = val j = j + 1 else codeArguments[k] = v end codeArgumentsString = codeArgumentsString .. textPartBuffer .. val if italic then val = '<span style="font-style:italic;">' .. val .. '</span>' end textPart = textPart .. textPartBuffer .. val end i = i + 1 end -- final wrap local ret = titlePart .. textPart if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end if _ne(args.a) then ret = nw('*') .. '&nbsp;' .. ret end if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end if code then ret = '<code>' .. ret .. '</code>' elseif _ne(args.plaincode) then ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>' end if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end --[[ Wrap as html?? local span = mw.html.create('span') span:wikitext(ret) --]] if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end if show_result then local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments} ret = ret .. " → " .. result end if expand then local query = mw.text.encode('{{' .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, "|") .. '}}') local url = mw.uri.fullUrl('special:ExpandTemplates', 'wpInput=' .. query) mw.log() ret = ret .. " [" .. tostring(url) .. "]" end return ret end return p c7307fa3959d308a2dd7fd2f5009c1ce6db3d122 Template:Template other 10 25 46 45 2023-09-30T18:43:38Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_other]] wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Template}} | template | other }} }} | template = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 06fb13d264df967b5232141067eb7d2b67372d76 Template:Clear 10 26 48 47 2023-09-30T18:43:39Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Clear]] wikitext text/x-wiki <div style="clear:{{{1|both}}};"></div><noinclude> {{documentation}} </noinclude> 38bab3e3d7fbd3d6800d46556e60bc6bac494d72 Template:Distinguish 10 27 50 49 2023-09-30T18:43:40Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Distinguish]] wikitext text/x-wiki {{#invoke:Distinguish|distinguish}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. --> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! --> </noinclude> f949a4cbfd6eb0ab77b832e69059a40a964b1fd8 Template:Sidebar 10 28 52 51 2023-09-30T18:43:41Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Sidebar]] wikitext text/x-wiki {{#invoke:Sidebar|sidebar}}<noinclude> {{documentation}}</noinclude> ab2498000a99daf324f656b0badd187b4a3e2b42 Module:Distinguish 828 29 54 53 2023-09-30T18:43:41Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Distinguish]] Scribunto text/plain local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local mTableTools --initialize lazily local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} function p.distinguish(frame) mArguments = require('Module:Arguments') mTableTools = require('Module:TableTools') local args = mArguments.getArgs(frame) local selfref = args.selfref local text = args.text args = mTableTools.compressSparseArray(args) return p._distinguish(args, text, selfref) end function p._distinguish(args, text, selfref) checkType("_distinguish", 1, args, 'table') if #args == 0 and not text then return '' end local text = string.format( 'Not to be confused with %s.', text or mHatlist.orList(args, true) ) hnOptions = {selfref = selfref} return mHatnote._hatnote(text, hnOptions) end return p 0364d14af01fc656ad1d898c5036fbd12a7ca938 Module:Effective protection expiry 828 30 56 55 2023-09-30T18:43:42Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Effective_protection_expiry]] Scribunto text/plain local p = {} -- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title) return stabilitySettings and stabilitySettings.expiry or 'unknown' elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 ) end local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename) if rawExpiry == 'infinity' then return 'infinity' elseif rawExpiry == '' then return 'unknown' else local year, month, day, hour, minute, second = rawExpiry:match( '^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$' ) if year then return string.format( '%s-%s-%sT%s:%s:%s', year, month, day, hour, minute, second ) else error('internal error in Module:Effective protection expiry; malformed expiry timestamp') end end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p 9a8c58dc2667232ed08a9b206a5d89ca8150312b Module:Effective protection level 828 31 58 57 2023-09-30T18:43:43Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Effective_protection_level]] Scribunto text/plain local p = {} -- Returns the permission required to perform a given action on a given title. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local level = mw.ext.FlaggedRevs.getStabilitySettings(title) level = level and level.autoreview if level == 'review' then return 'reviewer' elseif level ~= '' then return level else return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review end elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 ) end if title.namespace == 8 then -- MediaWiki namespace if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page return 'interfaceadmin' else -- any non-JS/CSS MediaWiki page return 'sysop' end elseif title.namespace == 2 and title.isSubpage then if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page return 'interfaceadmin' elseif title.contentModel == 'json' then -- user JSON page return 'sysop' end end if action == 'undelete' then return 'sysop' end local level = title.protectionLevels[action] and title.protectionLevels[action][1] if level == 'sysop' or level == 'editprotected' then return 'sysop' elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page return 'sysop' elseif level == 'templateeditor' then return 'templateeditor' elseif action == 'move' then local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move. if blacklistentry and not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif title.namespace == 6 then return 'filemover' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end end local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename) if blacklistentry then if not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason return 'autoconfirmed' elseif level then return level elseif action == 'upload' then return 'autoconfirmed' elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts return 'user' else return '*' end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p 70256a489edf6be9808031b14a7e3ef3e025da97 Module:File link 828 32 60 59 2023-09-30T18:43:43Z Führerredux 2 1 revision imported from [[:wikipedia:Module:File_link]] Scribunto text/plain -- This module provides a library for formatting file wikilinks. local yesno = require('Module:Yesno') local checkType = require('libraryUtil').checkType local p = {} function p._main(args) checkType('_main', 1, args, 'table') -- This is basically libraryUtil.checkTypeForNamedArg, but we are rolling our -- own function to get the right error level. local function checkArg(key, val, level) if type(val) ~= 'string' then error(string.format( "type error in '%s' parameter of '_main' (expected string, got %s)", key, type(val) ), level) end end local ret = {} -- Adds a positional parameter to the buffer. local function addPositional(key) local val = args[key] if not val then return nil end checkArg(key, val, 4) ret[#ret + 1] = val end -- Adds a named parameter to the buffer. We assume that the parameter name -- is the same as the argument key. local function addNamed(key) local val = args[key] if not val then return nil end checkArg(key, val, 4) ret[#ret + 1] = key .. '=' .. val end -- Filename checkArg('file', args.file, 3) ret[#ret + 1] = 'File:' .. args.file -- Format if args.format then checkArg('format', args.format) if args.formatfile then checkArg('formatfile', args.formatfile) ret[#ret + 1] = args.format .. '=' .. args.formatfile else ret[#ret + 1] = args.format end end -- Border if yesno(args.border) then ret[#ret + 1] = 'border' end addPositional('location') addPositional('alignment') addPositional('size') addNamed('upright') addNamed('link') addNamed('alt') addNamed('page') addNamed('class') addNamed('lang') addNamed('start') addNamed('end') addNamed('thumbtime') addPositional('caption') return string.format('[[%s]]', table.concat(ret, '|')) end function p.main(frame) local origArgs = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:File link' }) if not origArgs.file then error("'file' parameter missing from [[Template:File link]]", 0) end -- Copy the arguments that were passed to a new table to avoid looking up -- every possible parameter in the frame object. local args = {} for k, v in pairs(origArgs) do -- Make _BLANK a special argument to add a blank parameter. For use in -- conditional templates etc. it is useful for blank arguments to be -- ignored, but we still need a way to specify them so that we can do -- things like [[File:Example.png|link=]]. if v == '_BLANK' then v = '' end args[k] = v end return p._main(args) end return p 66925f088d11530f2482f04181a3baaaa0ad3d0c Module:Format link 828 33 62 61 2023-09-30T18:43:44Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Format_link]] Scribunto text/plain -------------------------------------------------------------------------------- -- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the {{format link}} template. -------------------------------------------------------------------------------- local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local mArguments -- lazily initialise [[Module:Arguments]] local mError -- lazily initialise [[Module:Error]] local yesno -- lazily initialise [[Module:Yesno]] local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end local function maybeItalicize(s, shouldItalicize) -- Italicize s if s is a string and the shouldItalicize parameter is true. if s and shouldItalicize then return '<i>' .. s .. '</i>' else return s end end local function parseLink(link) -- Parse a link and return a table with the link's components. -- These components are: -- - link: the link, stripped of any initial colon (always present) -- - page: the page name (always present) -- - section: the page name (may be nil) -- - display: the display text, if manually entered after a pipe (may be nil) link = removeInitialColon(link) -- Find whether a faux display value has been added with the {{!}} magic -- word. local prePipe, display = link:match('^(.-)|(.*)$') link = prePipe or link -- Find the page, if it exists. -- For links like [[#Bar]], the page will be nil. local preHash, postHash = link:match('^(.-)#(.*)$') local page if not preHash then -- We have a link like [[Foo]]. page = link elseif preHash ~= '' then -- We have a link like [[Foo#Bar]]. page = preHash end -- Find the section, if it exists. local section if postHash and postHash ~= '' then section = postHash end return { link = link, page = page, section = section, display = display, } end local function formatDisplay(parsed, options) -- Formats a display string based on a parsed link table (matching the -- output of parseLink) and an options table (matching the input options for -- _formatLink). local page = maybeItalicize(parsed.page, options.italicizePage) local section = maybeItalicize(parsed.section, options.italicizeSection) if (not section) then return page elseif (not page) then return mw.ustring.format('§&nbsp;%s', section) else return mw.ustring.format('%s §&nbsp;%s', page, section) end end local function missingArgError(target) mError = require('Module:Error') return mError.error{message = 'Error: no link or target specified! ([[' .. target .. '#Errors|help]])' } end -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.formatLink(frame) -- The formatLink export function, for use in templates. yesno = require('Module:Yesno') local args = getArgs(frame) local link = args[1] or args.link local target = args[3] or args.target if not (link or target) then return missingArgError('Template:Format link') end return p._formatLink{ link = link, display = args[2] or args.display, target = target, italicizePage = yesno(args.italicizepage), italicizeSection = yesno(args.italicizesection), categorizeMissing = args.categorizemissing } end function p._formatLink(options) -- The formatLink export function, for use in modules. checkType('_formatLink', 1, options, 'table') local function check(key, expectedType) --for brevity checkTypeForNamedArg( '_formatLink', key, options[key], expectedType or 'string', true ) end check('link') check('display') check('target') check('italicizePage', 'boolean') check('italicizeSection', 'boolean') check('categorizeMissing') -- Normalize link and target and check that at least one is present if options.link == '' then options.link = nil end if options.target == '' then options.target = nil end if not (options.link or options.target) then return missingArgError('Module:Format link') end local parsed = parseLink(options.link) local display = options.display or parsed.display local catMissing = options.categorizeMissing local category = '' -- Find the display text if not display then display = formatDisplay(parsed, options) end -- Handle the target option if present if options.target then local parsedTarget = parseLink(options.target) parsed.link = parsedTarget.link parsed.page = parsedTarget.page end -- Test if page exists if a diagnostic category is specified if catMissing and (mw.ustring.len(catMissing) > 0) then local title = nil if parsed.page then title = mw.title.new(parsed.page) end if title and (not title.isExternal) then local success, exists = pcall(function() return title.exists end) if success and not exists then category = mw.ustring.format('[[Category:%s]]', catMissing) end end end -- Format the result as a link if parsed.link == display then return mw.ustring.format('[[:%s]]%s', parsed.link, category) else return mw.ustring.format('[[:%s|%s]]%s', parsed.link, display, category) end end -------------------------------------------------------------------------------- -- Derived convenience functions -------------------------------------------------------------------------------- function p.formatPages(options, pages) -- Formats an array of pages using formatLink and the given options table, -- and returns it as an array. Nil values are not allowed. local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink{ link = page, categorizeMissing = options.categorizeMissing, italicizePage = options.italicizePage, italicizeSection = options.italicizeSection } end return ret end return p 1253bdd2683ee4badc33856bfd5499b09a7dca1f Module:Hatnote 828 34 64 63 2023-09-30T18:43:44Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Hatnote]] Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the {{hatnote}} and {{format link}} meta-templates and includes -- -- helper functions for other Lua hatnote modules. -- -------------------------------------------------------------------------------- local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local mArguments -- lazily initialise [[Module:Arguments]] local yesno -- lazily initialise [[Module:Yesno]] local formatLink -- lazily initialise [[Module:Format link]] ._formatLink local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end function p.defaultClasses(inline) -- Provides the default hatnote classes as a space-separated string; useful -- for hatnote-manipulation modules like [[Module:Hatnote group]]. return (inline == 1 and 'hatnote-inline' or 'hatnote') .. ' ' .. 'navigation-not-searchable' end function p.disambiguate(page, disambiguator) -- Formats a page title with a disambiguation parenthetical, -- i.e. "Example" → "Example (disambiguation)". checkType('disambiguate', 1, page, 'string') checkType('disambiguate', 2, disambiguator, 'string', true) disambiguator = disambiguator or 'disambiguation' return mw.ustring.format('%s (%s)', page, disambiguator) end function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to false. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end function p.makeWikitextError(msg, helpLink, addTrackingCategory, title) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- [[Module:Yesno]], and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') title = title or mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' ([[' .. helpLink .. '|help]])' else helpText = '' end -- Make the category text. local category if not title.isTalkPage -- Don't categorise talk pages and title.namespace ~= 2 -- Don't categorise userspace and yesno(addTrackingCategory) ~= false -- Allow opting out then category = 'Hatnote templates with errors' category = mw.ustring.format( '[[%s:%s]]', mw.site.namespaces[14].name, category ) else category = '' end return mw.ustring.format( '<strong class="error">Error: %s%s.</strong>%s', msg, helpText, category ) end local curNs = mw.title.getCurrentTitle().namespace p.missingTargetCat = --Default missing target category, exported for use in related modules ((curNs == 0) or (curNs == 14)) and 'Articles with hatnote templates targeting a nonexistent page' or nil function p.quote(title) --Wraps titles in quotation marks. If the title starts/ends with a quotation --mark, kerns that side as with {{-'}} local quotationMarks = { ["'"]=true, ['"']=true, ['“']=true, ["‘"]=true, ['”']=true, ["’"]=true } local quoteLeft, quoteRight = -- Test if start/end are quotation marks quotationMarks[string.sub(title, 1, 1)], quotationMarks[string.sub(title, -1, -1)] if quoteLeft or quoteRight then title = mw.html.create("span"):wikitext(title) end if quoteLeft then title:css("padding-left", "0.15em") end if quoteRight then title:css("padding-right", "0.15em") end return '"' .. tostring(title) .. '"' end -------------------------------------------------------------------------------- -- Hatnote -- -- Produces standard hatnote text. Implements the {{hatnote}} template. -------------------------------------------------------------------------------- function p.hatnote(frame) local args = getArgs(frame) local s = args[1] if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end return p._hatnote(s, { extraclasses = args.extraclasses, selfref = args.selfref }) end function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) options = options or {} local inline = options.inline local hatnote = mw.html.create(inline == 1 and 'span' or 'div') local extraclasses if type(options.extraclasses) == 'string' then extraclasses = options.extraclasses end hatnote :attr('role', 'note') :addClass(p.defaultClasses(inline)) :addClass(extraclasses) :addClass(options.selfref and 'selfref' or nil) :wikitext(s) return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Module:Hatnote/styles.css' } } .. tostring(hatnote) end return p 3ae1ed7094c5005ca0896395ec9a587287a0bef1 Module:Hatnote/styles.css 828 35 66 65 2023-09-30T18:43:45Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Hatnote/styles.css]] text text/plain /* {{pp|small=y}} */ .hatnote { font-style: italic; } /* Limit structure CSS to divs because of [[Module:Hatnote inline]] */ div.hatnote { /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; } .hatnote i { font-style: normal; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .hatnote + link + .hatnote { margin-top: -0.5em; } 44680ffd6e888866df2cdfa0341af9c7b97da94c Module:Hatnote list 828 36 68 67 2023-09-30T18:43:45Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Hatnote_list]] Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote list -- -- -- -- This module produces and formats lists for use in hatnotes. In particular, -- -- it implements the for-see list, i.e. lists of "For X, see Y" statements, -- -- as used in {{about}}, {{redirect}}, and their variants. Also introduced -- -- are andList & orList helpers for formatting lists with those conjunctions. -- -------------------------------------------------------------------------------- local mArguments --initialize lazily local mFormatLink = require('Module:Format link') local mHatnote = require('Module:Hatnote') local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} -------------------------------------------------------------------------------- -- List stringification helper functions -- -- These functions are used for stringifying lists, usually page lists inside -- the "Y" portion of "For X, see Y" for-see items. -------------------------------------------------------------------------------- --default options table used across the list stringification functions local stringifyListDefaultOptions = { conjunction = "and", separator = ",", altSeparator = ";", space = " ", formatted = false } --Searches display text only local function searchDisp(haystack, needle) return string.find( string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle ) end -- Stringifies a list generically; probably shouldn't be used directly local function stringifyList(list, options) -- Type-checks, defaults, and a shortcut checkType("stringifyList", 1, list, "table") if #list == 0 then return nil end checkType("stringifyList", 2, options, "table", true) options = options or {} for k, v in pairs(stringifyListDefaultOptions) do if options[k] == nil then options[k] = v end end local s = options.space -- Format the list if requested if options.formatted then list = mFormatLink.formatPages( {categorizeMissing = mHatnote.missingTargetCat}, list ) end -- Set the separator; if any item contains it, use the alternate separator local separator = options.separator for k, v in pairs(list) do if searchDisp(v, separator) then separator = options.altSeparator break end end -- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§" local conjunction = s .. options.conjunction .. s if #list == 2 and searchDisp(list[1], "§") or #list > 2 then conjunction = separator .. conjunction end -- Return the formatted string return mw.text.listToText(list, separator .. s, conjunction) end --DRY function function p.conjList (conj, list, fmt) return stringifyList(list, {conjunction = conj, formatted = fmt}) end -- Stringifies lists with "and" or "or" function p.andList (...) return p.conjList("and", ...) end function p.orList (...) return p.conjList("or", ...) end -------------------------------------------------------------------------------- -- For see -- -- Makes a "For X, see [[Y]]." list from raw parameters. Intended for the -- {{about}} and {{redirect}} templates and their variants. -------------------------------------------------------------------------------- --default options table used across the forSee family of functions local forSeeDefaultOptions = { andKeyword = 'and', title = mw.title.getCurrentTitle().text, otherText = 'other uses', forSeeForm = 'For %s, see %s.', } --Collapses duplicate punctuation local function punctuationCollapse (text) local replacements = { ["%.%.$"] = ".", ["%?%.$"] = "?", ["%!%.$"] = "!", ["%.%]%]%.$"] = ".]]", ["%?%]%]%.$"] = "?]]", ["%!%]%]%.$"] = "!]]" } for k, v in pairs(replacements) do text = string.gsub(text, k, v) end return text end -- Structures arguments into a table for stringification, & options function p.forSeeArgsToTable (args, from, options) -- Type-checks and defaults checkType("forSeeArgsToTable", 1, args, 'table') checkType("forSeeArgsToTable", 2, from, 'number', true) from = from or 1 checkType("forSeeArgsToTable", 3, options, 'table', true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do if options[k] == nil then options[k] = v end end -- maxArg's gotten manually because getArgs() and table.maxn aren't friends local maxArg = 0 for k, v in pairs(args) do if type(k) == 'number' and k > maxArg then maxArg = k end end -- Structure the data out from the parameter list: -- * forTable is the wrapper table, with forRow rows -- * Rows are tables of a "use" string & a "pages" table of pagename strings -- * Blanks are left empty for defaulting elsewhere, but can terminate list local forTable = {} local i = from local terminated = false -- If there is extra text, and no arguments are given, give nil value -- to not produce default of "For other uses, see foo (disambiguation)" if options.extratext and i > maxArg then return nil end -- Loop to generate rows repeat -- New empty row local forRow = {} -- On blank use, assume list's ended & break at end of this loop forRow.use = args[i] if not args[i] then terminated = true end -- New empty list of pages forRow.pages = {} -- Insert first pages item if present table.insert(forRow.pages, args[i + 1]) -- If the param after next is "and", do inner loop to collect params -- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3} while args[i + 2] == options.andKeyword do if args[i + 3] then table.insert(forRow.pages, args[i + 3]) end -- Increment to next "and" i = i + 2 end -- Increment to next use i = i + 2 -- Append the row table.insert(forTable, forRow) until terminated or i > maxArg return forTable end -- Stringifies a table as formatted by forSeeArgsToTable function p.forSeeTableToString (forSeeTable, options) -- Type-checks and defaults checkType("forSeeTableToString", 1, forSeeTable, "table", true) checkType("forSeeTableToString", 2, options, "table", true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do if options[k] == nil then options[k] = v end end -- Stringify each for-see item into a list local strList = {} if forSeeTable then for k, v in pairs(forSeeTable) do local useStr = v.use or options.otherText local pagesStr = p.andList(v.pages, true) or mFormatLink._formatLink{ categorizeMissing = mHatnote.missingTargetCat, link = mHatnote.disambiguate(options.title) } local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr) forSeeStr = punctuationCollapse(forSeeStr) table.insert(strList, forSeeStr) end end if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end -- Return the concatenated list return table.concat(strList, ' ') end -- Produces a "For X, see [[Y]]" string from arguments. Expects index gaps -- but not blank/whitespace values. Ignores named args and args < "from". function p._forSee (args, from, options) local forSeeTable = p.forSeeArgsToTable(args, from, options) return p.forSeeTableToString(forSeeTable, options) end -- As _forSee, but uses the frame. function p.forSee (frame, from, options) mArguments = require('Module:Arguments') return p._forSee(mArguments.getArgs(frame), from, options) end return p d0828422b1aa0d0d0092d699d059c9e882260398 Module:Navbar 828 37 70 69 2023-09-30T18:43:46Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Navbar]] Scribunto text/plain local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false, false} if template then show[2] = false show[3] = false local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} -- TODO: Consider removing TableTools dependency. for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end local remove_edit_link = args.noedit if remove_edit_link then show[3] = false end return show end local function add_link(link_description, ul, is_mini, font_style) local l if link_description.url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass('nv-' .. link_description.full) :wikitext(l[1] .. link_description.link .. l[2]) :tag(is_mini and 'abbr' or 'span') :attr('title', link_description.html_title) :cssText(font_style) :wikitext(is_mini and link_description.mini or link_description.full) :done() :wikitext(l[3]) :done() end local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style) local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace) if not title then error(cfg.invalid_title .. title_text) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' -- TODO: Get link_descriptions and show into the configuration module. -- link_descriptions should be easier... local link_descriptions = { { ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', ['link'] = title.fullText, ['url'] = false }, { ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', ['link'] = talkpage, ['url'] = false }, { ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', ['link'] = title:fullUrl('action=edit'), ['url'] = true }, { ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template', ['link'] = title:fullUrl('action=history'), ['url'] = true }, { ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template', ['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true }, { ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template', ['link'] = title:fullUrl('action=watch'), ['url'] = true } } local ul = mw.html.create('ul') if has_brackets then ul:addClass(cfg.classes.brackets) :cssText(font_style) end for i, _ in ipairs(displayed_links) do if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end end return ul:done() end function p._navbar(args) -- TODO: We probably don't need both fontstyle and fontcolor... local font_style = args.fontstyle local font_color = args.fontcolor local is_collapsible = args.collapsible local is_mini = args.mini local is_plain = args.plain local collapsible_class = nil if is_collapsible then collapsible_class = cfg.classes.collapsible if not is_plain then is_mini = 1 end if font_color then font_style = (font_style or '') .. '; color: ' .. font_color .. ';' end end local navbar_style = args.style local div = mw.html.create():tag('div') div :addClass(cfg.classes.navbar) :addClass(cfg.classes.plainlinks) :addClass(cfg.classes.horizontal_list) :addClass(collapsible_class) -- we made the determination earlier :cssText(navbar_style) if is_mini then div:addClass(cfg.classes.mini) end local box_text = (args.text or cfg.box_text) .. ' ' -- the concatenated space guarantees the box text is separated if not (is_mini or is_plain) then div :tag('span') :addClass(cfg.classes.box_text) :cssText(font_style) :wikitext(box_text) end local template = args.template local displayed_links = choose_links(template, args) local has_brackets = args.brackets local title_arg = get_title_arg(is_collapsible, template) local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style) div:node(list) if is_collapsible then local title_text_class if is_mini then title_text_class = cfg.classes.collapsible_title_mini else title_text_class = cfg.classes.collapsible_title_full end div:done() :tag('div') :addClass(title_text_class) :cssText(font_style) :wikitext(args[1]) end local frame = mw.getCurrentFrame() -- hlist -> navbar is best-effort to preserve old Common.css ordering. return frame:extensionTag{ name = 'templatestyles', args = { src = cfg.hlist_templatestyles } } .. frame:extensionTag{ name = 'templatestyles', args = { src = cfg.templatestyles } } .. tostring(div:done()) end function p.navbar(frame) return p._navbar(require('Module:Arguments').getArgs(frame)) end return p 79f907e59eaa8bbf8dd50bb751933ebeaaa7eb17 Module:Navbar/configuration 828 38 72 71 2023-09-30T18:43:48Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Navbar/configuration]] Scribunto text/plain return { ['templatestyles'] = 'Module:Navbar/styles.css', ['hlist_templatestyles'] = 'Hlist/styles.css', ['box_text'] = 'This box: ', -- default text box when not plain or mini ['title_namespace'] = 'Template', -- namespace to default to for title ['invalid_title'] = 'Invalid title ', ['classes'] = { -- set a line to nil if you don't want it ['navbar'] = 'navbar', ['plainlinks'] = 'plainlinks', -- plainlinks ['horizontal_list'] = 'hlist', -- horizontal list class ['mini'] = 'navbar-mini', -- class indicating small links in the navbar ['this_box'] = 'navbar-boxtext', ['brackets'] = 'navbar-brackets', -- 'collapsible' is the key for a class to indicate the navbar is -- setting up the collapsible element in addition to the normal -- navbar. ['collapsible'] = 'navbar-collapse', ['collapsible_title_mini'] = 'navbar-ct-mini', ['collapsible_title_full'] = 'navbar-ct-full' } } b007c336b17ec4bcd4d5a9dca9f8cba301662b55 Module:Navbar/styles.css 828 39 74 73 2023-09-30T18:43:49Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Navbar/styles.css]] text text/plain /* {{pp|small=yes}} */ .navbar { display: inline; font-size: 88%; font-weight: normal; } .navbar-collapse { float: left; text-align: left; } .navbar-boxtext { word-spacing: 0; } .navbar ul { display: inline-block; white-space: nowrap; line-height: inherit; } .navbar-brackets::before { margin-right: -0.125em; content: '[ '; } .navbar-brackets::after { margin-left: -0.125em; content: ' ]'; } .navbar li { word-spacing: -0.125em; } .navbar a > span, .navbar a > abbr { text-decoration: inherit; } .navbar-mini abbr { font-variant: small-caps; border-bottom: none; text-decoration: none; cursor: inherit; } .navbar-ct-full { font-size: 114%; margin: 0 7em; } .navbar-ct-mini { font-size: 114%; margin: 0 4em; } 9d4056f949b4f0b159e3d40dfb1a5f01e72f9571 Module:Protection banner 828 40 76 75 2023-09-30T18:43:49Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Protection_banner]] Scribunto text/plain -- This module implements {{pp-meta}} and its daughter templates such as -- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}. -- Initialise necessary modules. require('strict') local makeFileLink = require('Module:File link')._main local effectiveProtectionLevel = require('Module:Effective protection level')._main local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main local yesno = require('Module:Yesno') -- Lazily initialise modules and objects we don't always need. local getArgs, makeMessageBox, lang -- Set constants. local CONFIG_MODULE = 'Module:Protection banner/config' -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function makeCategoryLink(cat, sort) if cat then return string.format( '[[%s:%s|%s]]', mw.site.namespaces[14].name, cat, sort ) end end -- Validation function for the expiry and the protection date local function validateDate(dateString, dateType) if not lang then lang = mw.language.getContentLanguage() end local success, result = pcall(lang.formatDate, lang, 'U', dateString) if success then result = tonumber(result) if result then return result end end error(string.format( 'invalid %s: %s', dateType, tostring(dateString) ), 4) end local function makeFullUrl(page, query, display) return string.format( '[%s %s]', tostring(mw.uri.fullUrl(page, query)), display ) end -- Given a directed graph formatted as node -> table of direct successors, -- get a table of all nodes reachable from a given node (though always -- including the given node). local function getReachableNodes(graph, start) local toWalk, retval = {[start] = true}, {} while true do -- Can't use pairs() since we're adding and removing things as we're iterating local k = next(toWalk) -- This always gets the "first" key if k == nil then return retval end toWalk[k] = nil retval[k] = true for _,v in ipairs(graph[k]) do if not retval[v] then toWalk[v] = true end end end end -------------------------------------------------------------------------------- -- Protection class -------------------------------------------------------------------------------- local Protection = {} Protection.__index = Protection Protection.supportedActions = { edit = true, move = true, autoreview = true, upload = true } Protection.bannerConfigFields = { 'text', 'explanation', 'tooltip', 'alt', 'link', 'image' } function Protection.new(args, cfg, title) local obj = {} obj._cfg = cfg obj.title = title or mw.title.getCurrentTitle() -- Set action if not args.action then obj.action = 'edit' elseif Protection.supportedActions[args.action] then obj.action = args.action else error(string.format( 'invalid action: %s', tostring(args.action) ), 3) end -- Set level obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title) if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then -- Users need to be autoconfirmed to move pages anyway, so treat -- semi-move-protected pages as unprotected. obj.level = '*' end -- Set expiry local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title) if effectiveExpiry == 'infinity' then obj.expiry = 'indef' elseif effectiveExpiry ~= 'unknown' then obj.expiry = validateDate(effectiveExpiry, 'expiry date') end -- Set reason if args[1] then obj.reason = mw.ustring.lower(args[1]) if obj.reason:find('|') then error('reasons cannot contain the pipe character ("|")', 3) end end -- Set protection date if args.date then obj.protectionDate = validateDate(args.date, 'protection date') end -- Set banner config do obj.bannerConfig = {} local configTables = {} if cfg.banners[obj.action] then configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason] end if cfg.defaultBanners[obj.action] then configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level] configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default end configTables[#configTables + 1] = cfg.masterBanner for i, field in ipairs(Protection.bannerConfigFields) do for j, t in ipairs(configTables) do if t[field] then obj.bannerConfig[field] = t[field] break end end end end return setmetatable(obj, Protection) end function Protection:isUserScript() -- Whether the page is a user JavaScript or CSS page. local title = self.title return title.namespace == 2 and ( title.contentModel == 'javascript' or title.contentModel == 'css' ) end function Protection:isProtected() return self.level ~= '*' end function Protection:shouldShowLock() -- Whether we should output a banner/padlock return self:isProtected() and not self:isUserScript() end -- Whether this page needs a protection category. Protection.shouldHaveProtectionCategory = Protection.shouldShowLock function Protection:isTemporary() return type(self.expiry) == 'number' end function Protection:makeProtectionCategory() if not self:shouldHaveProtectionCategory() then return '' end local cfg = self._cfg local title = self.title -- Get the expiry key fragment. local expiryFragment if self.expiry == 'indef' then expiryFragment = self.expiry elseif type(self.expiry) == 'number' then expiryFragment = 'temp' end -- Get the namespace key fragment. local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace] if not namespaceFragment and title.namespace % 2 == 1 then namespaceFragment = 'talk' end -- Define the order that key fragments are tested in. This is done with an -- array of tables containing the value to be tested, along with its -- position in the cfg.protectionCategories table. local order = { {val = expiryFragment, keypos = 1}, {val = namespaceFragment, keypos = 2}, {val = self.reason, keypos = 3}, {val = self.level, keypos = 4}, {val = self.action, keypos = 5} } --[[ -- The old protection templates used an ad-hoc protection category system, -- with some templates prioritising namespaces in their categories, and -- others prioritising the protection reason. To emulate this in this module -- we use the config table cfg.reasonsWithNamespacePriority to set the -- reasons for which namespaces have priority over protection reason. -- If we are dealing with one of those reasons, move the namespace table to -- the end of the order table, i.e. give it highest priority. If not, the -- reason should have highest priority, so move that to the end of the table -- instead. --]] table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3)) --[[ -- Define the attempt order. Inactive subtables (subtables with nil "value" -- fields) are moved to the end, where they will later be given the key -- "all". This is to cut down on the number of table lookups in -- cfg.protectionCategories, which grows exponentially with the number of -- non-nil keys. We keep track of the number of active subtables with the -- noActive parameter. --]] local noActive, attemptOrder do local active, inactive = {}, {} for i, t in ipairs(order) do if t.val then active[#active + 1] = t else inactive[#inactive + 1] = t end end noActive = #active attemptOrder = active for i, t in ipairs(inactive) do attemptOrder[#attemptOrder + 1] = t end end --[[ -- Check increasingly generic key combinations until we find a match. If a -- specific category exists for the combination of key fragments we are -- given, that match will be found first. If not, we keep trying different -- key fragment combinations until we match using the key -- "all-all-all-all-all". -- -- To generate the keys, we index the key subtables using a binary matrix -- with indexes i and j. j is only calculated up to the number of active -- subtables. For example, if there were three active subtables, the matrix -- would look like this, with 0 corresponding to the key fragment "all", and -- 1 corresponding to other key fragments. -- -- j 1 2 3 -- i -- 1 1 1 1 -- 2 0 1 1 -- 3 1 0 1 -- 4 0 0 1 -- 5 1 1 0 -- 6 0 1 0 -- 7 1 0 0 -- 8 0 0 0 -- -- Values of j higher than the number of active subtables are set -- to the string "all". -- -- A key for cfg.protectionCategories is constructed for each value of i. -- The position of the value in the key is determined by the keypos field in -- each subtable. --]] local cats = cfg.protectionCategories for i = 1, 2^noActive do local key = {} for j, t in ipairs(attemptOrder) do if j > noActive then key[t.keypos] = 'all' else local quotient = i / 2 ^ (j - 1) quotient = math.ceil(quotient) if quotient % 2 == 1 then key[t.keypos] = t.val else key[t.keypos] = 'all' end end end key = table.concat(key, '|') local attempt = cats[key] if attempt then return makeCategoryLink(attempt, title.text) end end return '' end function Protection:isIncorrect() local expiry = self.expiry return not self:shouldHaveProtectionCategory() or type(expiry) == 'number' and expiry < os.time() end function Protection:isTemplateProtectedNonTemplate() local action, namespace = self.action, self.title.namespace return self.level == 'templateeditor' and ( (action ~= 'edit' and action ~= 'move') or (namespace ~= 10 and namespace ~= 828) ) end function Protection:makeCategoryLinks() local msg = self._cfg.msg local ret = {self:makeProtectionCategory()} if self:isIncorrect() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-incorrect'], self.title.text ) end if self:isTemplateProtectedNonTemplate() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-template'], self.title.text ) end return table.concat(ret) end -------------------------------------------------------------------------------- -- Blurb class -------------------------------------------------------------------------------- local Blurb = {} Blurb.__index = Blurb Blurb.bannerTextFields = { text = true, explanation = true, tooltip = true, alt = true, link = true } function Blurb.new(protectionObj, args, cfg) return setmetatable({ _cfg = cfg, _protectionObj = protectionObj, _args = args }, Blurb) end -- Private methods -- function Blurb:_formatDate(num) -- Formats a Unix timestamp into dd Month, YYYY format. lang = lang or mw.language.getContentLanguage() local success, date = pcall( lang.formatDate, lang, self._cfg.msg['expiry-date-format'] or 'j F Y', '@' .. tostring(num) ) if success then return date end end function Blurb:_getExpandedMessage(msgKey) return self:_substituteParameters(self._cfg.msg[msgKey]) end function Blurb:_substituteParameters(msg) if not self._params then local parameterFuncs = {} parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter parameterFuncs.EDITREQUEST = self._makeEditRequestParameter parameterFuncs.EXPIRY = self._makeExpiryParameter parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter parameterFuncs.IMAGELINK = self._makeImageLinkParameter parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter parameterFuncs.PAGETYPE = self._makePagetypeParameter parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter parameterFuncs.TALKPAGE = self._makeTalkPageParameter parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter parameterFuncs.VANDAL = self._makeVandalTemplateParameter self._params = setmetatable({}, { __index = function (t, k) local param if parameterFuncs[k] then param = parameterFuncs[k](self) end param = param or '' t[k] = param return param end }) end msg = msg:gsub('${(%u+)}', self._params) return msg end function Blurb:_makeCurrentVersionParameter() -- A link to the page history or the move log, depending on the kind of -- protection. local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'move' then -- We need the move log link. return makeFullUrl( 'Special:Log', {type = 'move', page = pagename}, self:_getExpandedMessage('current-version-move-display') ) else -- We need the history link. return makeFullUrl( pagename, {action = 'history'}, self:_getExpandedMessage('current-version-edit-display') ) end end function Blurb:_makeEditRequestParameter() local mEditRequest = require('Module:Submit an edit request') local action = self._protectionObj.action local level = self._protectionObj.level -- Get the edit request type. local requestType if action == 'edit' then if level == 'autoconfirmed' then requestType = 'semi' elseif level == 'extendedconfirmed' then requestType = 'extended' elseif level == 'templateeditor' then requestType = 'template' end end requestType = requestType or 'full' -- Get the display value. local display = self:_getExpandedMessage('edit-request-display') return mEditRequest._link{type = requestType, display = display} end function Blurb:_makeExpiryParameter() local expiry = self._protectionObj.expiry if type(expiry) == 'number' then return self:_formatDate(expiry) else return expiry end end function Blurb:_makeExplanationBlurbParameter() -- Cover special cases first. if self._protectionObj.title.namespace == 8 then -- MediaWiki namespace return self:_getExpandedMessage('explanation-blurb-nounprotect') end -- Get explanation blurb table keys local action = self._protectionObj.action local level = self._protectionObj.level local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject' -- Find the message in the explanation blurb table and substitute any -- parameters. local explanations = self._cfg.explanationBlurbs local msg if explanations[action][level] and explanations[action][level][talkKey] then msg = explanations[action][level][talkKey] elseif explanations[action][level] and explanations[action][level].default then msg = explanations[action][level].default elseif explanations[action].default and explanations[action].default[talkKey] then msg = explanations[action].default[talkKey] elseif explanations[action].default and explanations[action].default.default then msg = explanations[action].default.default else error(string.format( 'could not find explanation blurb for action "%s", level "%s" and talk key "%s"', action, level, talkKey ), 8) end return self:_substituteParameters(msg) end function Blurb:_makeImageLinkParameter() local imageLinks = self._cfg.imageLinks local action = self._protectionObj.action local level = self._protectionObj.level local msg if imageLinks[action][level] then msg = imageLinks[action][level] elseif imageLinks[action].default then msg = imageLinks[action].default else msg = imageLinks.edit.default end return self:_substituteParameters(msg) end function Blurb:_makeIntroBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-blurb-expiry') else return self:_getExpandedMessage('intro-blurb-noexpiry') end end function Blurb:_makeIntroFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-fragment-expiry') else return self:_getExpandedMessage('intro-fragment-noexpiry') end end function Blurb:_makePagetypeParameter() local pagetypes = self._cfg.pagetypes return pagetypes[self._protectionObj.title.namespace] or pagetypes.default or error('no default pagetype defined', 8) end function Blurb:_makeProtectionBlurbParameter() local protectionBlurbs = self._cfg.protectionBlurbs local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionBlurbs[action][level] then msg = protectionBlurbs[action][level] elseif protectionBlurbs[action].default then msg = protectionBlurbs[action].default elseif protectionBlurbs.edit.default then msg = protectionBlurbs.edit.default else error('no protection blurb defined for protectionBlurbs.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionDateParameter() local protectionDate = self._protectionObj.protectionDate if type(protectionDate) == 'number' then return self:_formatDate(protectionDate) else return protectionDate end end function Blurb:_makeProtectionLevelParameter() local protectionLevels = self._cfg.protectionLevels local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionLevels[action][level] then msg = protectionLevels[action][level] elseif protectionLevels[action].default then msg = protectionLevels[action].default elseif protectionLevels.edit.default then msg = protectionLevels.edit.default else error('no protection level defined for protectionLevels.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionLogParameter() local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'autoreview' then -- We need the pending changes log. return makeFullUrl( 'Special:Log', {type = 'stable', page = pagename}, self:_getExpandedMessage('pc-log-display') ) else -- We need the protection log. return makeFullUrl( 'Special:Log', {type = 'protect', page = pagename}, self:_getExpandedMessage('protection-log-display') ) end end function Blurb:_makeTalkPageParameter() return string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[self._protectionObj.title.namespace].talk.name, self._protectionObj.title.text, self._args.section or 'top', self:_getExpandedMessage('talk-page-link-display') ) end function Blurb:_makeTooltipBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-blurb-expiry') else return self:_getExpandedMessage('tooltip-blurb-noexpiry') end end function Blurb:_makeTooltipFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-fragment-expiry') else return self:_getExpandedMessage('tooltip-fragment-noexpiry') end end function Blurb:_makeVandalTemplateParameter() return mw.getCurrentFrame():expandTemplate{ title="vandal-m", args={self._args.user or self._protectionObj.title.baseText} } end -- Public methods -- function Blurb:makeBannerText(key) -- Validate input. if not key or not Blurb.bannerTextFields[key] then error(string.format( '"%s" is not a valid banner config field', tostring(key) ), 2) end -- Generate the text. local msg = self._protectionObj.bannerConfig[key] if type(msg) == 'string' then return self:_substituteParameters(msg) elseif type(msg) == 'function' then msg = msg(self._protectionObj, self._args) if type(msg) ~= 'string' then error(string.format( 'bad output from banner config function with key "%s"' .. ' (expected string, got %s)', tostring(key), type(msg) ), 4) end return self:_substituteParameters(msg) end end -------------------------------------------------------------------------------- -- BannerTemplate class -------------------------------------------------------------------------------- local BannerTemplate = {} BannerTemplate.__index = BannerTemplate function BannerTemplate.new(protectionObj, cfg) local obj = {} obj._cfg = cfg -- Set the image filename. local imageFilename = protectionObj.bannerConfig.image if imageFilename then obj._imageFilename = imageFilename else -- If an image filename isn't specified explicitly in the banner config, -- generate it from the protection status and the namespace. local action = protectionObj.action local level = protectionObj.level local namespace = protectionObj.title.namespace local reason = protectionObj.reason -- Deal with special cases first. if ( namespace == 10 or namespace == 828 or reason and obj._cfg.indefImageReasons[reason] ) and action == 'edit' and level == 'sysop' and not protectionObj:isTemporary() then -- Fully protected modules and templates get the special red "indef" -- padlock. obj._imageFilename = obj._cfg.msg['image-filename-indef'] else -- Deal with regular protection types. local images = obj._cfg.images if images[action] then if images[action][level] then obj._imageFilename = images[action][level] elseif images[action].default then obj._imageFilename = images[action].default end end end end return setmetatable(obj, BannerTemplate) end function BannerTemplate:renderImage() local filename = self._imageFilename or self._cfg.msg['image-filename-default'] or 'Transparent.gif' return makeFileLink{ file = filename, size = (self.imageWidth or 20) .. 'px', alt = self._imageAlt, link = self._imageLink, caption = self.imageCaption } end -------------------------------------------------------------------------------- -- Banner class -------------------------------------------------------------------------------- local Banner = setmetatable({}, BannerTemplate) Banner.__index = Banner function Banner.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 40 obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip. obj._reasonText = blurbObj:makeBannerText('text') obj._explanationText = blurbObj:makeBannerText('explanation') obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing. return setmetatable(obj, Banner) end function Banner:__tostring() -- Renders the banner. makeMessageBox = makeMessageBox or require('Module:Message box').main local reasonText = self._reasonText or error('no reason text set', 2) local explanationText = self._explanationText local mbargs = { page = self._page, type = 'protection', image = self:renderImage(), text = string.format( "'''%s'''%s", reasonText, explanationText and '<br />' .. explanationText or '' ) } return makeMessageBox('mbox', mbargs) end -------------------------------------------------------------------------------- -- Padlock class -------------------------------------------------------------------------------- local Padlock = setmetatable({}, BannerTemplate) Padlock.__index = Padlock function Padlock.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 20 obj.imageCaption = blurbObj:makeBannerText('tooltip') obj._imageAlt = blurbObj:makeBannerText('alt') obj._imageLink = blurbObj:makeBannerText('link') obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action] or cfg.padlockIndicatorNames.default or 'pp-default' return setmetatable(obj, Padlock) end function Padlock:__tostring() local frame = mw.getCurrentFrame() -- The nowiki tag helps prevent whitespace at the top of articles. return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{ name = 'indicator', args = {name = self._indicatorName}, content = self:renderImage() } end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- This is used for testing purposes. return { Protection = Protection, Blurb = Blurb, BannerTemplate = BannerTemplate, Banner = Banner, Padlock = Padlock, } end function p._main(args, cfg, title) args = args or {} cfg = cfg or require(CONFIG_MODULE) local protectionObj = Protection.new(args, cfg, title) local ret = {} -- If a page's edit protection is equally or more restrictive than its -- protection from some other action, then don't bother displaying anything -- for the other action (except categories). if not yesno(args.catonly) and (protectionObj.action == 'edit' or args.demolevel or not getReachableNodes( cfg.hierarchy, protectionObj.level )[effectiveProtectionLevel('edit', protectionObj.title)]) then -- Initialise the blurb object local blurbObj = Blurb.new(protectionObj, args, cfg) -- Render the banner if protectionObj:shouldShowLock() then ret[#ret + 1] = tostring( (yesno(args.small) and Padlock or Banner) .new(protectionObj, blurbObj, cfg) ) end end -- Render the categories if yesno(args.category) ~= false then ret[#ret + 1] = protectionObj:makeCategoryLinks() end return table.concat(ret) end function p.main(frame, cfg) cfg = cfg or require(CONFIG_MODULE) -- Find default args, if any. local parent = frame.getParent and frame:getParent() local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')] -- Find user args, and use the parent frame if we are being called from a -- wrapper template. getArgs = getArgs or require('Module:Arguments').getArgs local userArgs = getArgs(frame, { parentOnly = defaultArgs, frameOnly = not defaultArgs }) -- Build the args table. User-specified args overwrite default args. local args = {} for k, v in pairs(defaultArgs or {}) do args[k] = v end for k, v in pairs(userArgs) do args[k] = v end return p._main(args, cfg) end return p 894f0884d4c2da1ce19d385b96f59af654b0946a Module:Protection banner/config 828 41 78 77 2023-09-30T18:43:50Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Protection_banner/config]] Scribunto text/plain -- This module provides configuration data for [[Module:Protection banner]]. return { -------------------------------------------------------------------------------- -- -- BANNER DATA -- -------------------------------------------------------------------------------- --[[ -- Banner data consists of six fields: -- * text - the main protection text that appears at the top of protection -- banners. -- * explanation - the text that appears below the main protection text, used -- to explain the details of the protection. -- * tooltip - the tooltip text you see when you move the mouse over a small -- padlock icon. -- * link - the page that the small padlock icon links to. -- * alt - the alt text for the small padlock icon. This is also used as tooltip -- text for the large protection banners. -- * image - the padlock image used in both protection banners and small padlock -- icons. -- -- The module checks in three separate tables to find a value for each field. -- First it checks the banners table, which has values specific to the reason -- for the page being protected. Then the module checks the defaultBanners -- table, which has values specific to each protection level. Finally, the -- module checks the masterBanner table, which holds data for protection -- templates to use if no data has been found in the previous two tables. -- -- The values in the banner data can take parameters. These are specified -- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name -- enclosed in curly braces). -- -- Available parameters: -- -- ${CURRENTVERSION} - a link to the page history or the move log, with the -- display message "current-version-edit-display" or -- "current-version-move-display". -- -- ${EDITREQUEST} - a link to create an edit request for the current page. -- -- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes -- on the talk page; you may submit a request to ask an administrator to make -- an edit if it is minor or supported by consensus." -- -- ${IMAGELINK} - a link to set the image to, depending on the protection -- action and protection level. -- -- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry -- is set. E.g. "Editing of this page by new or unregistered users is currently -- disabled until dd Month YYYY." -- -- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation -- so that it can be used in run-on sentences. -- -- ${PAGETYPE} - the type of the page, e.g. "article" or "template". -- Defined in the cfg.pagetypes table. -- -- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g. -- "Editing of this page by new or unregistered users is currently disabled" -- -- ${PROTECTIONDATE} - the protection date, if it has been supplied to the -- template. -- -- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or -- "semi-protected". -- -- ${PROTECTIONLOG} - a link to the protection log or the pending changes log, -- depending on the protection action. -- -- ${TALKPAGE} - a link to the talk page. If a section is specified, links -- straight to that talk page section. -- -- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to -- create a blurb like "This template is semi-protected", or "This article is -- move-protected until DD Month YYYY". -- -- ${VANDAL} - links for the specified username (or the root page name) -- using Module:Vandal-m. -- -- Functions -- -- For advanced users, it is possible to use Lua functions instead of strings -- in the banner config tables. Using functions gives flexibility that is not -- possible just by using parameters. Functions take two arguments, the -- protection object and the template arguments, and they must output a string. -- -- For example: -- -- text = function (protectionObj, args) -- if protectionObj.level == 'autoconfirmed' then -- return 'foo' -- else -- return 'bar' -- end -- end -- -- Some protection object properties and methods that may be useful: -- protectionObj.action - the protection action -- protectionObj.level - the protection level -- protectionObj.reason - the protection reason -- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set -- to indefinite, and the protection time in unix time if temporary. -- protectionObj.protectionDate - the protection date in unix time, or nil if -- unspecified. -- protectionObj.bannerConfig - the banner config found by the module. Beware -- of editing the config field used by the function, as it could create an -- infinite loop. -- protectionObj:isProtected - returns a boolean showing whether the page is -- protected. -- protectionObj:isTemporary - returns a boolean showing whether the expiry is -- temporary. -- protectionObj:isIncorrect - returns a boolean showing whether the protection -- template is incorrect. --]] -- The master banner data, used if no values have been found in banners or -- defaultBanners. masterBanner = { text = '${INTROBLURB}', explanation = '${EXPLANATIONBLURB}', tooltip = '${TOOLTIPBLURB}', link = '${IMAGELINK}', alt = 'Page ${PROTECTIONLEVEL}' }, -- The default banner data. This holds banner data for different protection -- levels. -- *required* - this table needs edit, move, autoreview and upload subtables. defaultBanners = { edit = {}, move = {}, autoreview = { default = { alt = 'Page protected with pending changes', tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users', image = 'Pending-protection-shackle.svg' } }, upload = {} }, -- The banner data. This holds banner data for different protection reasons. -- In fact, the reasons specified in this table control which reasons are -- valid inputs to the first positional parameter. -- -- There is also a non-standard "description" field that can be used for items -- in this table. This is a description of the protection reason for use in the -- module documentation. -- -- *required* - this table needs edit, move, autoreview and upload subtables. banners = { edit = { blp = { description = 'For pages protected to promote compliance with the' .. ' [[Wikipedia:Biographies of living persons' .. '|biographies of living persons]] policy', text = '${INTROFRAGMENT} to promote compliance with' .. ' [[Wikipedia:Biographies of living persons' .. "|Wikipedia's&nbsp;policy on&nbsp;the&nbsp;biographies" .. ' of&nbsp;living&nbsp;people]].', tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on' .. ' biographies of living persons', }, dmca = { description = 'For pages protected by the Wikimedia Foundation' .. ' due to [[Digital Millennium Copyright Act]] takedown requests', explanation = function (protectionObj, args) local ret = 'Pursuant to a rights owner notice under the Digital' .. ' Millennium Copyright Act (DMCA) regarding some content' .. ' in this article, the Wikimedia Foundation acted under' .. ' applicable law and took down and restricted the content' .. ' in question.' if args.notice then ret = ret .. ' A copy of the received notice can be found here: ' .. args.notice .. '.' end ret = ret .. ' For more information, including websites discussing' .. ' how to file a counter-notice, please see' .. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}." .. "'''Do not remove this template from the article until the" .. " restrictions are withdrawn'''." return ret end, image = 'Office-protection-shackle.svg', }, dispute = { description = 'For pages protected due to editing disputes', text = function (protectionObj, args) -- Find the value of "disputes". local display = 'disputes' local disputes if args.section then disputes = string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[protectionObj.title.namespace].talk.name, protectionObj.title.text, args.section, display ) else disputes = display end -- Make the blurb, depending on the expiry. local msg if type(protectionObj.expiry) == 'number' then msg = '${INTROFRAGMENT} or until editing %s have been resolved.' else msg = '${INTROFRAGMENT} until editing %s have been resolved.' end return string.format(msg, disputes) end, explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', tooltip = '${TOOLTIPFRAGMENT} due to editing disputes', }, ecp = { description = 'For articles in topic areas authorized by' .. ' [[Wikipedia:Arbitration Committee|ArbCom]] or' .. ' meets the criteria for community use', tooltip = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', alt = 'Extended-protected ${PAGETYPE}', }, mainpage = { description = 'For pages protected for being displayed on the [[Main Page]]', text = 'This file is currently' .. ' [[Wikipedia:This page is protected|protected]] from' .. ' editing because it is currently or will soon be displayed' .. ' on the [[Main Page]].', explanation = 'Images on the Main Page are protected due to their high' .. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.' .. '<br /><span style="font-size:90%;">' .. "'''Administrators:''' Once this image is definitely off the Main Page," .. ' please unprotect this file, or reduce to semi-protection,' .. ' as appropriate.</span>', }, office = { description = 'For pages protected by the Wikimedia Foundation', text = function (protectionObj, args) local ret = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.' if protectionObj.protectionDate then ret = ret .. ' It has been protected since ${PROTECTIONDATE}.' end return ret end, explanation = "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not remove protection from this" .. " page unless you are authorized by the Wikimedia Foundation to do" .. " so.'''", image = 'Office-protection-shackle.svg', }, reset = { description = 'For pages protected by the Wikimedia Foundation and' .. ' "reset" to a bare-bones version', text = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.', explanation = function (protectionObj, args) local ret = '' if protectionObj.protectionDate then ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was' else ret = ret .. 'This ${PAGETYPE} has been' end ret = ret .. ' reduced to a' .. ' simplified, "bare bones" version so that it may be completely' .. ' rewritten to ensure it meets the policies of' .. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].' .. ' Standard Wikipedia policies will apply to its rewriting—which' .. ' will eventually be open to all editors—and will be strictly' .. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while' .. ' it is being rebuilt.\n\n' .. 'Any insertion of material directly from' .. ' pre-protection revisions of the ${PAGETYPE} will be removed, as' .. ' will any material added to the ${PAGETYPE} that is not properly' .. ' sourced. The associated talk page(s) were also cleared on the' .. " same date.\n\n" .. "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not override" .. " this action, and do not remove protection from this page," .. " unless you are authorized by the Wikimedia Foundation" .. " to do so. No editor may remove this notice.'''" return ret end, image = 'Office-protection-shackle.svg', }, sock = { description = 'For pages protected due to' .. ' [[Wikipedia:Sock puppetry|sock puppetry]]', text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of' .. ' [[Wikipedia:Blocking policy|blocked]] or' .. ' [[Wikipedia:Banning policy|banned users]]' .. ' from editing it.', tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from' .. ' editing it', }, template = { description = 'For [[Wikipedia:High-risk templates|high-risk]]' .. ' templates and Lua modules', text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},' .. ' as it is [[Wikipedia:High-risk templates|high-risk]].', explanation = 'Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] or' .. ' [[Wikipedia:Template editor|template editor]] to make an edit if' .. ' it is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by' .. ' [[Wikipedia:Consensus|consensus]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}' .. ' to prevent vandalism', alt = 'Permanently protected ${PAGETYPE}', }, usertalk = { description = 'For pages protected against disruptive edits by a' .. ' particular user', text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,' .. ' such as abusing the' .. ' &#123;&#123;[[Template:unblock|unblock]]&#125;&#125; template.', explanation = 'If you cannot edit this user talk page and you need to' .. ' make a change or leave a message, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for edits to a protected page' .. '|request an edit]],' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]],' .. ' [[Special:Userlogin|log in]],' .. ' or [[Special:UserLogin/signup|create an account]].', }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism|vandalism]]', text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].', explanation = function (protectionObj, args) local ret = '' if protectionObj.level == 'sysop' then ret = ret .. "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ' end return ret .. '${EXPLANATIONBLURB}' end, tooltip = '${TOOLTIPFRAGMENT} due to vandalism', } }, move = { dispute = { description = 'For pages protected against page moves due to' .. ' disputes over the page title', explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', image = 'Move-protection-shackle.svg' }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism#Page-move vandalism' .. ' |page-move vandalism]]' } }, autoreview = {}, upload = {} }, -------------------------------------------------------------------------------- -- -- GENERAL DATA TABLES -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Protection blurbs -------------------------------------------------------------------------------- -- This table produces the protection blurbs available with the -- ${PROTECTIONBLURB} parameter. It is sorted by protection action and -- protection level, and is checked by the module in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionBlurbs = { edit = { default = 'This ${PAGETYPE} is currently [[Help:Protection|' .. 'protected]] from editing', autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access' .. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered' .. ' users|unregistered]] users is currently [[Help:Protection|disabled]]', extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection', }, move = { default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]' .. ' from [[Help:Moving a page|page moves]]' }, autoreview = { default = 'All edits made to this ${PAGETYPE} by' .. ' [[Wikipedia:User access levels#New users|new]] or' .. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]' .. ' users are currently' .. ' [[Wikipedia:Pending changes|subject to review]]' }, upload = { default = 'Uploading new versions of this ${PAGETYPE} is currently disabled' } }, -------------------------------------------------------------------------------- -- Explanation blurbs -------------------------------------------------------------------------------- -- This table produces the explanation blurbs available with the -- ${EXPLANATIONBLURB} parameter. It is sorted by protection action, -- protection level, and whether the page is a talk page or not. If the page is -- a talk page it will have a talk key of "talk"; otherwise it will have a talk -- key of "subject". The table is checked in the following order: -- 1. page's protection action, page's protection level, page's talk key -- 2. page's protection action, page's protection level, default talk key -- 3. page's protection action, default protection level, page's talk key -- 4. page's protection action, default protection level, default talk key -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. explanationBlurbs = { edit = { autoconfirmed = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', }, extendedconfirmed = { default = 'Extended confirmed protection prevents edits from all unregistered editors' .. ' and registered users with fewer than 30 days tenure and 500 edits.' .. ' The [[Wikipedia:Protection policy#extended|policy on community use]]' .. ' specifies that extended confirmed protection can be applied to combat' .. ' disruption, if semi-protection has proven to be ineffective.' .. ' Extended confirmed protection may also be applied to enforce' .. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].' .. ' Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask for uncontroversial changes supported by' .. ' [[Wikipedia:Consensus|consensus]].' }, default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]]. You may also [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|request]] that this page be unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' You may [[Wikipedia:Requests for page' .. ' protection#Current requests for edits to a protected page|request an' .. ' edit]] to this page, or [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|ask]] for it to be unprotected.' } }, move = { default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves on the' .. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves at' .. ' [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.' } }, autoreview = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Edits to this ${PAGETYPE} by new and unregistered users' .. ' will not be visible to readers until they are accepted by' .. ' a reviewer. To avoid the need for your edits to be' .. ' reviewed, you may' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].' }, }, upload = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but new versions of the file' .. ' cannot be uploaded until it is unprotected. You can' .. ' request that a new version be uploaded by using a' .. ' [[Wikipedia:Edit requests|protected edit request]], or you' .. ' can [[Wikipedia:Requests for page protection|request]]' .. ' that the file be unprotected.' } } }, -------------------------------------------------------------------------------- -- Protection levels -------------------------------------------------------------------------------- -- This table provides the data for the ${PROTECTIONLEVEL} parameter, which -- produces a short label for different protection levels. It is sorted by -- protection action and protection level, and is checked in the following -- order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionLevels = { edit = { default = 'protected', templateeditor = 'template-protected', extendedconfirmed = 'extended-protected', autoconfirmed = 'semi-protected', }, move = { default = 'move-protected' }, autoreview = { }, upload = { default = 'upload-protected' } }, -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- This table lists different padlock images for each protection action and -- protection level. It is used if an image is not specified in any of the -- banner data tables, and if the page does not satisfy the conditions for using -- the ['image-filename-indef'] image. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level images = { edit = { default = 'Full-protection-shackle.svg', templateeditor = 'Template-protection-shackle.svg', extendedconfirmed = 'Extended-protection-shackle.svg', autoconfirmed = 'Semi-protection-shackle.svg' }, move = { default = 'Move-protection-shackle.svg', }, autoreview = { default = 'Pending-protection-shackle.svg' }, upload = { default = 'Upload-protection-shackle.svg' } }, -- Pages with a reason specified in this table will show the special "indef" -- padlock, defined in the 'image-filename-indef' message, if no expiry is set. indefImageReasons = { template = true }, -------------------------------------------------------------------------------- -- Image links -------------------------------------------------------------------------------- -- This table provides the data for the ${IMAGELINK} parameter, which gets -- the image link for small padlock icons based on the page's protection action -- and protection level. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. imageLinks = { edit = { default = 'Wikipedia:Protection policy#full', templateeditor = 'Wikipedia:Protection policy#template', extendedconfirmed = 'Wikipedia:Protection policy#extended', autoconfirmed = 'Wikipedia:Protection policy#semi' }, move = { default = 'Wikipedia:Protection policy#move' }, autoreview = { default = 'Wikipedia:Protection policy#pending' }, upload = { default = 'Wikipedia:Protection policy#upload' } }, -------------------------------------------------------------------------------- -- Padlock indicator names -------------------------------------------------------------------------------- -- This table provides the "name" attribute for the <indicator> extension tag -- with which small padlock icons are generated. All indicator tags on a page -- are displayed in alphabetical order based on this attribute, and with -- indicator tags with duplicate names, the last tag on the page wins. -- The attribute is chosen based on the protection action; table keys must be a -- protection action name or the string "default". padlockIndicatorNames = { autoreview = 'pp-autoreview', default = 'pp-default' }, -------------------------------------------------------------------------------- -- Protection categories -------------------------------------------------------------------------------- --[[ -- The protection categories are stored in the protectionCategories table. -- Keys to this table are made up of the following strings: -- -- 1. the expiry date -- 2. the namespace -- 3. the protection reason (e.g. "dispute" or "vandalism") -- 4. the protection level (e.g. "sysop" or "autoconfirmed") -- 5. the action (e.g. "edit" or "move") -- -- When the module looks up a category in the table, first it will will check to -- see a key exists that corresponds to all five parameters. For example, a -- user page semi-protected from vandalism for two weeks would have the key -- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module -- changes the first part of the key to "all" and checks the table again. It -- keeps checking increasingly generic key combinations until it finds the -- field, or until it reaches the key "all-all-all-all-all". -- -- The module uses a binary matrix to determine the order in which to search. -- This is best demonstrated by a table. In this table, the "0" values -- represent "all", and the "1" values represent the original data (e.g. -- "indef" or "file" or "vandalism"). -- -- expiry namespace reason level action -- order -- 1 1 1 1 1 1 -- 2 0 1 1 1 1 -- 3 1 0 1 1 1 -- 4 0 0 1 1 1 -- 5 1 1 0 1 1 -- 6 0 1 0 1 1 -- 7 1 0 0 1 1 -- 8 0 0 0 1 1 -- 9 1 1 1 0 1 -- 10 0 1 1 0 1 -- 11 1 0 1 0 1 -- 12 0 0 1 0 1 -- 13 1 1 0 0 1 -- 14 0 1 0 0 1 -- 15 1 0 0 0 1 -- 16 0 0 0 0 1 -- 17 1 1 1 1 0 -- 18 0 1 1 1 0 -- 19 1 0 1 1 0 -- 20 0 0 1 1 0 -- 21 1 1 0 1 0 -- 22 0 1 0 1 0 -- 23 1 0 0 1 0 -- 24 0 0 0 1 0 -- 25 1 1 1 0 0 -- 26 0 1 1 0 0 -- 27 1 0 1 0 0 -- 28 0 0 1 0 0 -- 29 1 1 0 0 0 -- 30 0 1 0 0 0 -- 31 1 0 0 0 0 -- 32 0 0 0 0 0 -- -- In this scheme the action has the highest priority, as it is the last -- to change, and the expiry has the least priority, as it changes the most. -- The priorities of the expiry, the protection level and the action are -- fixed, but the priorities of the reason and the namespace can be swapped -- through the use of the cfg.bannerDataNamespaceHasPriority table. --]] -- If the reason specified to the template is listed in this table, -- namespace data will take priority over reason data in the protectionCategories -- table. reasonsWithNamespacePriority = { vandalism = true, }, -- The string to use as a namespace key for the protectionCategories table for each -- namespace number. categoryNamespaceKeys = { [ 2] = 'user', [ 3] = 'user', [ 4] = 'project', [ 6] = 'file', [ 8] = 'mediawiki', [ 10] = 'template', [ 12] = 'project', [ 14] = 'category', [100] = 'portal', [828] = 'module', }, protectionCategories = { ['all|all|all|all|all'] = 'Wikipedia fully protected pages', ['all|all|office|all|all'] = 'Wikipedia Office-protected pages', ['all|all|reset|all|all'] = 'Wikipedia Office-protected pages', ['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages', ['all|all|mainpage|all|all'] = 'Wikipedia fully protected main page files', ['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|template|all|all|edit'] = 'Wikipedia fully protected templates', ['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages', ['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages', ['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people', ['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people', ['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute', ['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users', ['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism', ['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories', ['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files', ['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals', ['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages', ['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages', ['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates', ['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages', ['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules', ['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates', ['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates ['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people', ['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people', ['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute', ['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users', ['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism', ['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories', ['all|file|all|sysop|edit'] = 'Wikipedia fully protected files', ['all|project|all|sysop|edit'] = 'Wikipedia fully protected project pages', ['all|talk|all|sysop|edit'] = 'Wikipedia fully protected talk pages', ['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates', ['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates', ['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages', ['all|module|all|all|edit'] = 'Wikipedia fully protected modules', ['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules', ['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules', ['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules', ['all|all|all|sysop|move'] = 'Wikipedia move-protected pages', ['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages', ['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute', ['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism', ['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals', ['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages', ['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages', ['all|template|all|sysop|move'] = 'Wikipedia move-protected templates', ['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages', ['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages', ['all|file|all|all|upload'] = 'Wikipedia upload-protected files', }, -------------------------------------------------------------------------------- -- Expiry category config -------------------------------------------------------------------------------- -- This table configures the expiry category behaviour for each protection -- action. -- * If set to true, setting that action will always categorise the page if -- an expiry parameter is not set. -- * If set to false, setting that action will never categorise the page. -- * If set to nil, the module will categorise the page if: -- 1) an expiry parameter is not set, and -- 2) a reason is provided, and -- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck -- table. expiryCheckActions = { edit = nil, move = false, autoreview = true, upload = false }, reasonsWithoutExpiryCheck = { blp = true, template = true, }, -------------------------------------------------------------------------------- -- Pagetypes -------------------------------------------------------------------------------- -- This table produces the page types available with the ${PAGETYPE} parameter. -- Keys are namespace numbers, or the string "default" for the default value. pagetypes = { [0] = 'article', [6] = 'file', [10] = 'template', [14] = 'category', [828] = 'module', default = 'page' }, -------------------------------------------------------------------------------- -- Strings marking indefinite protection -------------------------------------------------------------------------------- -- This table contains values passed to the expiry parameter that mean the page -- is protected indefinitely. indefStrings = { ['indef'] = true, ['indefinite'] = true, ['indefinitely'] = true, ['infinite'] = true, }, -------------------------------------------------------------------------------- -- Group hierarchy -------------------------------------------------------------------------------- -- This table maps each group to all groups that have a superset of the original -- group's page editing permissions. hierarchy = { sysop = {}, reviewer = {'sysop'}, filemover = {'sysop'}, templateeditor = {'sysop'}, extendedconfirmed = {'sysop'}, autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'}, user = {'autoconfirmed'}, ['*'] = {'user'} }, -------------------------------------------------------------------------------- -- Wrapper templates and their default arguments -------------------------------------------------------------------------------- -- This table contains wrapper templates used with the module, and their -- default arguments. Templates specified in this table should contain the -- following invocation, and no other template content: -- -- {{#invoke:Protection banner|main}} -- -- If other content is desired, it can be added between -- <noinclude>...</noinclude> tags. -- -- When a user calls one of these wrapper templates, they will use the -- default arguments automatically. However, users can override any of the -- arguments. wrappers = { ['Template:Pp'] = {}, ['Template:Pp-extended'] = {'ecp'}, ['Template:Pp-blp'] = {'blp'}, -- we don't need Template:Pp-create ['Template:Pp-dispute'] = {'dispute'}, ['Template:Pp-main-page'] = {'mainpage'}, ['Template:Pp-move'] = {action = 'move', catonly = 'yes'}, ['Template:Pp-move-dispute'] = {'dispute', action = 'move', catonly = 'yes'}, -- we don't need Template:Pp-move-indef ['Template:Pp-move-vandalism'] = {'vandalism', action = 'move', catonly = 'yes'}, ['Template:Pp-office'] = {'office'}, ['Template:Pp-office-dmca'] = {'dmca'}, ['Template:Pp-pc'] = {action = 'autoreview', small = true}, ['Template:Pp-pc1'] = {action = 'autoreview', small = true}, ['Template:Pp-reset'] = {'reset'}, ['Template:Pp-semi-indef'] = {small = true}, ['Template:Pp-sock'] = {'sock'}, ['Template:Pp-template'] = {'template', small = true}, ['Template:Pp-upload'] = {action = 'upload'}, ['Template:Pp-usertalk'] = {'usertalk'}, ['Template:Pp-vandalism'] = {'vandalism'}, }, -------------------------------------------------------------------------------- -- -- MESSAGES -- -------------------------------------------------------------------------------- msg = { -------------------------------------------------------------------------------- -- Intro blurb and intro fragment -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${INTROBLURB} and -- ${INTROFRAGMENT} parameters. If the protection is temporary they use the -- intro-blurb-expiry or intro-fragment-expiry, and if not they use -- intro-blurb-noexpiry or intro-fragment-noexpiry. -- It is possible to use banner parameters in these messages. ['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.', ['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.', ['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},', ['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}', -------------------------------------------------------------------------------- -- Tooltip blurb -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${TOOLTIPBLURB} parameter. -- If the protection is temporary the tooltip-blurb-expiry message is used, and -- if not the tooltip-blurb-noexpiry message is used. -- It is possible to use banner parameters in these messages. ['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.', ['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.', ['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},', ['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', -------------------------------------------------------------------------------- -- Special explanation blurb -------------------------------------------------------------------------------- -- An explanation blurb for pages that cannot be unprotected, e.g. for pages -- in the MediaWiki namespace. -- It is possible to use banner parameters in this message. ['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]].', -------------------------------------------------------------------------------- -- Protection log display values -------------------------------------------------------------------------------- -- These messages determine the display values for the protection log link -- or the pending changes log link produced by the ${PROTECTIONLOG} parameter. -- It is possible to use banner parameters in these messages. ['protection-log-display'] = 'protection log', ['pc-log-display'] = 'pending changes log', -------------------------------------------------------------------------------- -- Current version display values -------------------------------------------------------------------------------- -- These messages determine the display values for the page history link -- or the move log link produced by the ${CURRENTVERSION} parameter. -- It is possible to use banner parameters in these messages. ['current-version-move-display'] = 'current title', ['current-version-edit-display'] = 'current version', -------------------------------------------------------------------------------- -- Talk page -------------------------------------------------------------------------------- -- This message determines the display value of the talk page link produced -- with the ${TALKPAGE} parameter. -- It is possible to use banner parameters in this message. ['talk-page-link-display'] = 'talk page', -------------------------------------------------------------------------------- -- Edit requests -------------------------------------------------------------------------------- -- This message determines the display value of the edit request link produced -- with the ${EDITREQUEST} parameter. -- It is possible to use banner parameters in this message. ['edit-request-display'] = 'submit an edit request', -------------------------------------------------------------------------------- -- Expiry date format -------------------------------------------------------------------------------- -- This is the format for the blurb expiry date. It should be valid input for -- the first parameter of the #time parser function. ['expiry-date-format'] = 'F j, Y "at" H:i e', -------------------------------------------------------------------------------- -- Tracking categories -------------------------------------------------------------------------------- -- These messages determine which tracking categories the module outputs. ['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates', ['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules', -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- These are images that are not defined by their protection action and protection level. ['image-filename-indef'] = 'Full-protection-shackle.svg', ['image-filename-default'] = 'Transparent.gif', -------------------------------------------------------------------------------- -- End messages -------------------------------------------------------------------------------- } -------------------------------------------------------------------------------- -- End configuration -------------------------------------------------------------------------------- } a20552ae38cb5253a4fa29aa126abc74215a589f Module:Sidebar 828 42 80 79 2023-09-30T18:43:50Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Sidebar]] Scribunto text/plain require('strict') local cfg = mw.loadData('Module:Sidebar/configuration') local p = {} local getArgs = require('Module:Arguments').getArgs --[[ Categorizes calling templates and modules with a 'style' parameter of any sort for tracking to convert to TemplateStyles. TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module. TODO would probably want to remove /log and /archive as CS1 does ]] local function categorizeTemplatesWithInlineStyles(args) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 and title.namespace ~= 828 then return '' end for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do if title.text:match(pattern) then return '' end end for key, _ in pairs(args) do if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then return cfg.i18n.category.conversion end end end --[[ For compatibility with the original {{sidebar with collapsible lists}} implementation, which passed some parameters through {{#if}} to trim their whitespace. This also triggered the automatic newline behavior. ]] -- See ([[meta:Help:Newlines and spaces#Automatic newline]]) local function trimAndAddAutomaticNewline(s) s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1") if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then return '\n' .. s else return s end end --[[ Finds whether a sidebar has a subgroup sidebar. ]] local function hasSubgroup(s) if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then return true else return false end end local function has_navbar(navbar_mode, sidebar_name) return navbar_mode ~= cfg.i18n.navbar_none and navbar_mode ~= cfg.i18n.navbar_off and ( sidebar_name or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~= cfg.i18n.title_not_to_add_navbar ) end local function has_list_class(args, htmlclass) local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } for arg, value in pairs(args) do if type(arg) == 'string' and mw.ustring.find(arg, 'class') then for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then return true end end end end return false end -- there are a lot of list classes in the wild, so we add their TemplateStyles local function add_list_styles(args) local frame = mw.getCurrentFrame() local function add_list_templatestyles(htmlclass, templatestyles) if has_list_class(args, htmlclass) then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local plainlist_styles = add_list_templatestyles('plainlist', cfg.i18n.plainlist_templatestyles) local hlist_styles = add_list_templatestyles('hlist', cfg.i18n.hlist_templatestyles) -- a second workaround for [[phab:T303378]] -- when that issue is fixed, we can actually use has_navbar not to emit the -- tag here if we want if has_navbar(args.navbar, args.name) and hlist_styles == '' then hlist_styles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.i18n.hlist_templatestyles} } end -- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note] return hlist_styles .. plainlist_styles end -- work around [[phab:T303378]] -- for each arg: find all the templatestyles strip markers, insert them into a -- table. then remove all templatestyles markers from the arg local function move_hiding_templatestyles(args) local gfind = string.gfind local gsub = string.gsub local templatestyles_markers = {} local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)' for k, arg in pairs(args) do for marker in gfind(arg, strip_marker_pattern) do table.insert(templatestyles_markers, marker) end args[k] = gsub(arg, strip_marker_pattern, '') end return templatestyles_markers end --[[ Main sidebar function. Takes the frame, args, and an optional collapsibleClass. The collapsibleClass is and should be used only for sidebars with collapsible lists, as in p.collapsible. ]] function p.sidebar(frame, args, collapsibleClass) if not args then args = getArgs(frame) end local hiding_templatestyles = table.concat(move_hiding_templatestyles(args)) local root = mw.html.create() local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes root = root:tag('table') if not child then root :addClass(cfg.i18n.class.sidebar) -- force collapsibleclass to be sidebar-collapse otherwise output nothing :addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil) :addClass('nomobile') :addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil) :addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil) :addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil) :addClass(args.bodyclass or args.class) :css('width', args.width or nil) :cssText(args.bodystyle or args.style) if args.outertitle then root :tag('caption') :addClass(cfg.i18n.class.outer_title) :addClass(args.outertitleclass) :cssText(args.outertitlestyle) :wikitext(args.outertitle) end if args.topimage then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.top_image) :addClass(args.topimageclass) :cssText(args.topimagestyle) :wikitext(args.topimage) if args.topcaption then imageCell :tag('div') :addClass(cfg.i18n.class.top_caption) :cssText(args.topcaptionstyle) :wikitext(args.topcaption) end end if args.pretitle then root :tag('tr') :tag('td') :addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image or cfg.i18n.class.pretitle) :addClass(args.pretitleclass) :cssText(args.basestyle) :cssText(args.pretitlestyle) :wikitext(args.pretitle) end else root :addClass(cfg.i18n.class.subgroup) :addClass(args.bodyclass or args.class) :cssText(args.bodystyle or args.style) end if args.title then if child then root :wikitext(args.title) else root :tag('tr') :tag('th') :addClass(args.pretitle and cfg.i18n.class.title_with_pretitle or cfg.i18n.class.title) :addClass(args.titleclass) :cssText(args.basestyle) :cssText(args.titlestyle) :wikitext(args.title) end end if args.image then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.image) :addClass(args.imageclass) :cssText(args.imagestyle) :wikitext(args.image) if args.caption then imageCell :tag('div') :addClass(cfg.i18n.class.caption) :cssText(args.captionstyle) :wikitext(args.caption) end end if args.above then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.above) :addClass(args.aboveclass) :cssText(args.abovestyle) :newline() -- newline required for bullet-points to work :wikitext(args.above) end local rowNums = {} for k, v in pairs(args) do k = '' .. k local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$') if num then table.insert(rowNums, tonumber(num)) end end table.sort(rowNums) -- remove duplicates from the list (e.g. 3 will be duplicated if both heading3 -- and content3 are specified) for i = #rowNums, 1, -1 do if rowNums[i] == rowNums[i - 1] then table.remove(rowNums, i) end end for i, num in ipairs(rowNums) do local heading = args['heading' .. num] if heading then root :tag('tr') :tag('th') :addClass(cfg.i18n.class.heading) :addClass(args.headingclass) :addClass(args['heading' .. num .. 'class']) :cssText(args.basestyle) :cssText(args.headingstyle) :cssText(args['heading' .. num .. 'style']) :newline() :wikitext(heading) end local content = args['content' .. num] if content then root :tag('tr') :tag('td') :addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup or cfg.i18n.class.content) :addClass(args.contentclass) :addClass(args['content' .. num .. 'class']) :cssText(args.contentstyle) :cssText(args['content' .. num .. 'style']) :newline() :wikitext(content) :done() -- Without a linebreak after the </td>, a nested list like -- "* {{hlist| ...}}" doesn't parse correctly. :newline() end end if args.below then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.below) :addClass(args.belowclass) :cssText(args.belowstyle) :newline() :wikitext(args.below) end if not child and has_navbar(args.navbar, args.name) then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.navbar) :cssText(args.navbarstyle) :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, fontstyle = args.navbarfontstyle }) end local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.i18n.templatestyles } } local templatestyles = '' if args['templatestyles'] and args['templatestyles'] ~= '' then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] and args['child templatestyles'] ~= '' then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ add_list_styles(args), -- see [hlist_note] above about ordering base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles, hiding_templatestyles, tostring(root), (child and cfg.i18n.category.child or ''), categorizeTemplatesWithInlineStyles(args) }) end local function list_title(args, is_centered_list_titles, num) local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title'] or cfg.i18n.default_list_title) local title if is_centered_list_titles then -- collapsible can be finicky, so provide some CSS/HTML to support title = mw.html.create('div') :addClass(cfg.i18n.class.list_title_centered) :wikitext(title_text) else title = mw.html.create() :wikitext(title_text) end local title_container = mw.html.create('div') :addClass(cfg.i18n.class.list_title) -- don't /need/ a listnumtitleclass because you can do -- .templateclass .listnumclass .sidebar-list-title :addClass(args.listtitleclass) :cssText(args.basestyle) :cssText(args.listtitlestyle) :cssText(args['list' .. num .. 'titlestyle']) :node(title) :done() return title_container end --[[ Main entry point for sidebar with collapsible lists. Does the work of creating the collapsible lists themselves and including them into the args. ]] function p.collapsible(frame) local args = getArgs(frame) if not args.name and frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') == cfg.i18n.collapse_title_not_to_add_navbar then args.navbar = cfg.i18n.navbar_none end local contentArgs = {} local is_centered_list_titles = false if args['centered list titles'] and args['centered list titles'] ~= '' then is_centered_list_titles = true end for k, v in pairs(args) do local num = string.match(k, '^list(%d+)$') if num then local expand = args.expanded and (args.expanded == 'all' or args.expanded == args['list' .. num .. 'name']) local row = mw.html.create('div') row :addClass(cfg.i18n.class.list) :addClass('mw-collapsible') :addClass((not expand) and 'mw-collapsed' or nil) :addClass(args['list' .. num .. 'class']) :cssText(args.listframestyle) :cssText(args['list' .. num .. 'framestyle']) :node(list_title(args, is_centered_list_titles, num)) :tag('div') :addClass(cfg.i18n.class.list_content) :addClass('mw-collapsible-content') -- don't /need/ a listnumstyleclass because you can do -- .templatename .listnumclass .sidebar-list :addClass(args.listclass) :cssText(args.liststyle) :cssText(args['list' .. num .. 'style']) :wikitext(trimAndAddAutomaticNewline(args['list' .. num])) contentArgs['content' .. num] = tostring(row) end end for k, v in pairs(contentArgs) do args[k] = v end return p.sidebar(frame, args, cfg.i18n.class.collapse) end return p 71fe765846593e025ca2f94371315e9dbb5bb4d2 Module:Sidebar/configuration 828 43 82 81 2023-09-30T18:43:51Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Sidebar/configuration]] Scribunto text/plain return { i18n = { child_yes = 'yes', float_none = 'none', float_left = 'left', wrap_true = 'true', navbar_none = 'none', navbar_off = 'off', default_list_title = 'List', title_not_to_add_navbar = 'Template:Sidebar', collapse_title_not_to_add_navbar = 'Template:Sidebar with collapsible lists', templatestyles = 'Module:Sidebar/styles.css', hlist_templatestyles = 'Hlist/styles.css', plainlist_templatestyles = 'Plainlist/styles.css', category = { child = '[[Category:Pages using sidebar with the child parameter]]', conversion = '[[Category:Sidebars with styles needing conversion]]' }, pattern = { collapse_sandbox = '/sandbox$', sandbox = '/sandbox$', subgroup = 'sidebar%-subgroup', style_conversion = 'style$', uncategorized_conversion_titles = { '/[Ss]andbox', '/[Tt]estcases', '/[Dd]oc$' } }, class = { sidebar = 'sidebar', subgroup = 'sidebar-subgroup', collapse = 'sidebar-collapse', float_none = 'sidebar-none', float_left = 'sidebar-left', wraplinks = 'nowraplinks', outer_title = 'sidebar-outer-title', top_image = 'sidebar-top-image', top_caption = 'sidebar-top-caption', pretitle = 'sidebar-pretitle', pretitle_with_top_image = 'sidebar-pretitle-with-top-image', title = 'sidebar-title', title_with_pretitle = 'sidebar-title-with-pretitle', image = 'sidebar-image', caption = 'sidebar-caption', above = 'sidebar-above', heading = 'sidebar-heading', content = 'sidebar-content', content_with_subgroup = 'sidebar-content-with-subgroup', below = 'sidebar-below', navbar = 'sidebar-navbar', list = 'sidebar-list', list_title = 'sidebar-list-title', list_title_centered = 'sidebar-list-title-c', list_content = 'sidebar-list-content' } } } dc2a980ac2162a898f7c21e6d6ba7e994dfeb315 Module:Sidebar/styles.css 828 44 84 83 2023-09-30T18:43:51Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Sidebar/styles.css]] text text/plain /* {{pp-template}} */ /* TODO: Invert width design to be "mobile first" */ .sidebar { /* TODO: Ask if we should have max-width 22em instead */ width: 22em; /* @noflip */ float: right; /* @noflip */ clear: right; /* @noflip */ margin: 0.5em 0 1em 1em; background: #f8f9fa; border: 1px solid #aaa; padding: 0.2em; text-align: center; line-height: 1.4em; font-size: 88%; border-collapse: collapse; /* Timeless has display: none on .nomobile at mobile resolutions, so we * unhide it with display: table and let precedence and proximity win. */ display: table; } /* Unfortunately, so does Minerva desktop, except Minerva drops an * !important on the declaration. So we have to be mean for Minerva users. * Mobile removes the element entirely with `wgMFRemovableClasses` in * https://github.com/wikimedia/operations-mediawiki-config/blob/master/ wmf-config/InitialiseSettings.php#L16992 * which is why displaying it categorically with display: table works. * We don't really want to expose the generic user in the wild on mobile to have * to deal with sidebars. (Maybe the ones with collapsible lists, so that * might be an improvement. That is blocked on [[:phab:T111565]].) */ body.skin-minerva .sidebar { display: table !important; /* also, minerva is way too aggressive about other stylings on tables. * TODO remove when this template gets moved to a div. plans on talk page. * We always float right on Minerva because that's a lot of extra CSS * otherwise. */ float: right !important; margin: 0.5em 0 1em 1em !important; } .sidebar-subgroup { width: 100%; margin: 0; border-spacing: 0; } .sidebar-left { /* @noflip */ float: left; /* @noflip */ clear: left; /* @noflip */ margin: 0.5em 1em 1em 0; } .sidebar-none { float: none; clear: both; /* @noflip */ margin: 0.5em 1em 1em 0; } .sidebar-outer-title { padding: 0 0.4em 0.2em; font-size: 125%; line-height: 1.2em; font-weight: bold; } .sidebar-top-image { padding: 0.4em; } .sidebar-top-caption, .sidebar-pretitle-with-top-image, .sidebar-caption { padding: 0.2em 0.4em 0; line-height: 1.2em; } .sidebar-pretitle { padding: 0.4em 0.4em 0; line-height: 1.2em; } .sidebar-title, .sidebar-title-with-pretitle { padding: 0.2em 0.8em; font-size: 145%; line-height: 1.2em; } .sidebar-title-with-pretitle { padding: 0.1em 0.4em; } .sidebar-image { padding: 0.2em 0.4em 0.4em; } .sidebar-heading { padding: 0.1em 0.4em; } .sidebar-content { padding: 0 0.5em 0.4em; } .sidebar-content-with-subgroup { padding: 0.1em 0.4em 0.2em; } .sidebar-above, .sidebar-below { padding: 0.3em 0.8em; font-weight: bold; } .sidebar-collapse .sidebar-above, .sidebar-collapse .sidebar-below { border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; } .sidebar-navbar { text-align: right; font-size: 115%; padding: 0 0.4em 0.4em; } .sidebar-list-title { padding: 0 0.4em; text-align: left; font-weight: bold; line-height: 1.6em; font-size: 105%; } /* centered text with mw-collapsible headers is finicky */ .sidebar-list-title-c { padding: 0 0.4em; text-align: center; margin: 0 3.3em; } @media (max-width: 720px) { /* users have wide latitude to set arbitrary width and margin :( "Super-specific" selector to prevent overriding this appearance by lower level sidebars too */ body.mediawiki .sidebar { width: 100% !important; clear: both; float: none !important; /* Remove when we div based; Minerva is dumb */ margin-left: 0 !important; margin-right: 0 !important; } /* TODO: We might consider making all links wrap at small resolutions and then * only introduce nowrap at higher resolutions. Do when we invert the media * query. */ } 7d621b35a37807a103b59075851fe36201204ceb Template:Div col 10 45 86 85 2023-09-30T18:43:52Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Div_col]] wikitext text/x-wiki <includeonly><templatestyles src="Div col/styles.css"/><!-- --><div class="div-col {{#ifeq:{{{small|}}}|yes|div-col-small}} {{#ifeq:{{{rules|}}}|yes|div-col-rules}} {{{class|}}}" <!-- -->{{#if:{{{colwidth|}}}{{{gap|}}}{{{style|}}}|<!-- -->style="{{#if:{{{colwidth|}}}|column-width: {{{colwidth}}};}}{{#if:{{{gap|}}}|column-gap: {{{gap}}};}}{{#if:{{{style|}}}|{{{style}}}}}"<!-- -->}}><!-- -->{{#if:{{{content|}}}|{{{content}}}</div>}}<!-- Inventory how many pages use small=yes -->{{#ifeq:{{{small|}}}|yes|[[Category:Pages using div col with small parameter]]}}<!-- --></includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using div col with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Div col]] with unknown parameter "_VALUE_"; use colwidth= to specify column size |ignoreblank=y | class | colwidth | content | gap | rules | small | style }}<noinclude> {{Documentation}} </noinclude> 6e84133dd867d6c701e7b161878cf66665bb7eb7 Template:Div col/styles.css 10 46 88 87 2023-09-30T18:43:53Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Div_col/styles.css]] text text/plain /* {{pp|small=yes}} */ .div-col { margin-top: 0.3em; column-width: 30em; } .div-col-small { font-size: 90%; } .div-col-rules { column-rule: 1px solid #aaa; } /* Reset top margin for lists in div col */ .div-col dl, .div-col ol, .div-col ul { margin-top: 0; } /* Avoid elements breaking between columns See also Template:No col break */ .div-col li, .div-col dd { page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */ break-inside: avoid-column; } /* Unbulleted lists */ .plainlist ol, .plainlist ul { line-height: inherit; list-style: none; margin: 0; } .plainlist ol li, .plainlist ul li { margin-bottom: 0; } 76c2c0a042b9164cff638cd44af5ab129702c141 Template:Div col end 10 47 90 89 2023-09-30T18:43:54Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Div_col_end]] wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{Documentation|Template:Div col/doc}} </noinclude> 78088d41c21d779e3722f220fcc9773dfbbc1e4f Template:Yesno-no 10 48 92 91 2023-09-30T18:43:55Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Yesno-no]] wikitext text/x-wiki {{safesubst:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|no}}}|¬={{{¬|no}}}|def={{{def|no}}}}}<noinclude> {{Documentation|Template:Yesno/doc}} <!--Categories go in the doc page referenced above; interwikis go in Wikidata.--> </noinclude> 1ad7b7800da1b867ead8f6ff8cef76e6201b3b56 Template:Para 10 49 94 93 2023-09-30T18:43:56Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Para]] wikitext text/x-wiki <code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">&#124;{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}&#61;}}{{{2|}}}</code><noinclude> {{Documentation}} <!--Categories and interwikis go near the bottom of the /doc subpage.--> </noinclude> 06006deea2ed5d552aab61b4332321ab749ae7e8 Template:Documentation 10 50 96 95 2023-09-30T18:43:57Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Documentation]] wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude> <!-- Add categories to the /doc subpage --> </noinclude> 9e62b964e96c4e3d478edecbfcb3c0338ae8a276 170 96 2023-09-30T18:46:06Z Führerredux 2 1 revision imported from [[:meta:Template:Documentation]] wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude> <!-- Add categories to the /doc subpage --> </noinclude> 9e62b964e96c4e3d478edecbfcb3c0338ae8a276 Module:Documentation 828 51 98 97 2023-09-30T18:43:57Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Documentation]] Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub local format = mw.ustring.format ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return format('[[%s|%s]]', page, display) else return format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return format( '<span class="%s">(%s)</span>', message('toolbar-class'), table.concat(ret, ' &#124; ') ) end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :wikitext(p._getModuleWikitext(args, env)) :wikitext(p.protectionTemplate(env)) :wikitext(p.sandboxNotice(args, env)) :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.protectionLevels - the protection levels table of the title object. -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.protectionLevels() -- The protection levels table of the title object. return env.title.protectionLevels end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.canonicalUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Auxiliary templates ---------------------------------------------------------------------------- p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') function p._getModuleWikitext(args, env) local currentTitle = mw.title.getCurrentTitle() if currentTitle.contentModel ~= 'Scribunto' then return end pcall(require, currentTitle.prefixedText) -- if it fails, we don't care local moduleWikitext = package.loaded["Module:Module wikitext"] if moduleWikitext then return moduleWikitext.main() end end function p.sandboxNotice(args, env) --[=[ -- Generates a sandbox notice for display above sandbox pages. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' -- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page' -- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page' -- 'sandbox-notice-pagetype-other' --> 'sandbox page' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.' -- 'sandbox-notice-testcases-link-display' --> 'test cases' -- 'sandbox-category' --> 'Template sandboxes' --]=] local title = env.title local sandboxTitle = env.sandboxTitle local templateTitle = env.templateTitle local subjectSpace = env.subjectSpace if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then return nil end -- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text". local omargs = {} omargs.image = message('sandbox-notice-image') -- Get the text. We start with the opening blurb, which is something like -- "This is the template sandbox for [[Template:Foo]] (diff)." local text = '' local pagetype if subjectSpace == 10 then pagetype = message('sandbox-notice-pagetype-template') elseif subjectSpace == 828 then pagetype = message('sandbox-notice-pagetype-module') else pagetype = message('sandbox-notice-pagetype-other') end local templateLink = makeWikilink(templateTitle.prefixedText) local compareUrl = env.compareUrl if compareUrl then local compareDisplay = message('sandbox-notice-compare-link-display') local compareLink = makeUrlLink(compareUrl, compareDisplay) text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) else text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) end -- Get the test cases page blurb if the page exists. This is something like -- "See also the companion subpage for [[Template:Foo/testcases|test cases]]." local testcasesTitle = env.testcasesTitle if testcasesTitle and testcasesTitle.exists then if testcasesTitle.contentModel == "Scribunto" then local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink}) else local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) end end -- Add the sandbox to the sandbox category. omargs.text = text .. makeCategoryLink(message('sandbox-category')) -- 'documentation-clear' return '<div class="' .. message('clear') .. '"></div>' .. require('Module:Message box').main('ombox', omargs) end function p.protectionTemplate(env) -- Generates the padlock icon in the top right. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local protectionLevels = env.protectionLevels if not protectionLevels then return nil end local editProt = protectionLevels.edit and protectionLevels.edit[1] local moveProt = protectionLevels.move and protectionLevels.move[1] if editProt then -- The page is edit-protected. return require('Module:Protection banner')._main{ message('protection-reason-edit'), small = true } elseif moveProt and moveProt ~= 'autoconfirmed' then -- The page is move-protected but not edit-protected. Exclude move -- protection with the level "autoconfirmed", as this is equivalent to -- no move protection at all. return require('Module:Protection banner')._main{ action = 'move', small = true } else return nil end end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end return { title = title, docTitle = docTitle, -- View, display, edit, and purge links if /doc exists. viewLinkDisplay = message('view-link-display'), editLinkDisplay = message('edit-link-display'), historyLinkDisplay = message('history-link-display'), purgeLinkDisplay = message('purge-link-display'), preload = preload, createLinkDisplay = message('create-link-display') } end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local docTitle = data.docTitle -- yes, we do intend to purge the template page on which the documentation appears local purgeLink = makeWikilink("Special:Purge/" .. data.title.prefixedText, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, data.editLinkDisplay) local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, data.historyLinkDisplay) return "&#91;" .. viewLink .. "&#93; &#91;" .. editLink .. "&#93; &#91;" .. historyLink .. "&#93; &#91;" .. purgeLink .. "&#93;" else local createLink = makeUrlLink(docTitle:canonicalUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) return "&#91;" .. createLink .. "&#93; &#91;" .. purgeLink .. "&#93;" end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editDisplay = message('edit-link-display') local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, editDisplay) local historyDisplay = message('history-link-display') local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:canonicalUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeWikilink("Special:EditPage/" .. sandboxPage, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:canonicalUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeWikilink("Special:EditPage/" .. testcasesPage, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:canonicalUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 268dc89480af10873bfbca5439ae8e61b404f770 172 98 2023-09-30T18:46:06Z Führerredux 2 1 revision imported from [[:meta:Module:Documentation]] Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub local format = mw.ustring.format ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return format('[[%s|%s]]', page, display) else return format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return format( '<span class="%s">(%s)</span>', message('toolbar-class'), table.concat(ret, ' &#124; ') ) end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :wikitext(p._getModuleWikitext(args, env)) :wikitext(p.protectionTemplate(env)) :wikitext(p.sandboxNotice(args, env)) :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.protectionLevels - the protection levels table of the title object. -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.protectionLevels() -- The protection levels table of the title object. return env.title.protectionLevels end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.canonicalUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Auxiliary templates ---------------------------------------------------------------------------- p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') function p._getModuleWikitext(args, env) local currentTitle = mw.title.getCurrentTitle() if currentTitle.contentModel ~= 'Scribunto' then return end pcall(require, currentTitle.prefixedText) -- if it fails, we don't care local moduleWikitext = package.loaded["Module:Module wikitext"] if moduleWikitext then return moduleWikitext.main() end end function p.sandboxNotice(args, env) --[=[ -- Generates a sandbox notice for display above sandbox pages. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' -- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page' -- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page' -- 'sandbox-notice-pagetype-other' --> 'sandbox page' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.' -- 'sandbox-notice-testcases-link-display' --> 'test cases' -- 'sandbox-category' --> 'Template sandboxes' --]=] local title = env.title local sandboxTitle = env.sandboxTitle local templateTitle = env.templateTitle local subjectSpace = env.subjectSpace if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then return nil end -- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text". local omargs = {} omargs.image = message('sandbox-notice-image') -- Get the text. We start with the opening blurb, which is something like -- "This is the template sandbox for [[Template:Foo]] (diff)." local text = '' local pagetype if subjectSpace == 10 then pagetype = message('sandbox-notice-pagetype-template') elseif subjectSpace == 828 then pagetype = message('sandbox-notice-pagetype-module') else pagetype = message('sandbox-notice-pagetype-other') end local templateLink = makeWikilink(templateTitle.prefixedText) local compareUrl = env.compareUrl if compareUrl then local compareDisplay = message('sandbox-notice-compare-link-display') local compareLink = makeUrlLink(compareUrl, compareDisplay) text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) else text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) end -- Get the test cases page blurb if the page exists. This is something like -- "See also the companion subpage for [[Template:Foo/testcases|test cases]]." local testcasesTitle = env.testcasesTitle if testcasesTitle and testcasesTitle.exists then if testcasesTitle.contentModel == "Scribunto" then local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink}) else local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) end end -- Add the sandbox to the sandbox category. omargs.text = text .. makeCategoryLink(message('sandbox-category')) -- 'documentation-clear' return '<div class="' .. message('clear') .. '"></div>' .. require('Module:Message box').main('ombox', omargs) end function p.protectionTemplate(env) -- Generates the padlock icon in the top right. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local protectionLevels = env.protectionLevels if not protectionLevels then return nil end local editProt = protectionLevels.edit and protectionLevels.edit[1] local moveProt = protectionLevels.move and protectionLevels.move[1] if editProt then -- The page is edit-protected. return require('Module:Protection banner')._main{ message('protection-reason-edit'), small = true } elseif moveProt and moveProt ~= 'autoconfirmed' then -- The page is move-protected but not edit-protected. Exclude move -- protection with the level "autoconfirmed", as this is equivalent to -- no move protection at all. return require('Module:Protection banner')._main{ action = 'move', small = true } else return nil end end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end return { title = title, docTitle = docTitle, -- View, display, edit, and purge links if /doc exists. viewLinkDisplay = message('view-link-display'), editLinkDisplay = message('edit-link-display'), historyLinkDisplay = message('history-link-display'), purgeLinkDisplay = message('purge-link-display'), preload = preload, createLinkDisplay = message('create-link-display') } end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local docTitle = data.docTitle -- yes, we do intend to purge the template page on which the documentation appears local purgeLink = makeWikilink("Special:Purge/" .. data.title.prefixedText, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, data.editLinkDisplay) local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, data.historyLinkDisplay) return "&#91;" .. viewLink .. "&#93; &#91;" .. editLink .. "&#93; &#91;" .. historyLink .. "&#93; &#91;" .. purgeLink .. "&#93;" else local createLink = makeUrlLink(docTitle:canonicalUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) return "&#91;" .. createLink .. "&#93; &#91;" .. purgeLink .. "&#93;" end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editDisplay = message('edit-link-display') local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, editDisplay) local historyDisplay = message('history-link-display') local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:canonicalUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeWikilink("Special:EditPage/" .. sandboxPage, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:canonicalUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeWikilink("Special:EditPage/" .. testcasesPage, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:canonicalUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 268dc89480af10873bfbca5439ae8e61b404f770 Module:Documentation/config 828 52 100 99 2023-09-30T18:43:58Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Documentation/config]] Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Protection template configuration ---------------------------------------------------------------------------------------------------- -- cfg['protection-reason-edit'] -- The protection reason for edit-protected templates to pass to -- [[Module:Protection banner]]. cfg['protection-reason-edit'] = 'template' --[[ ---------------------------------------------------------------------------------------------------- -- Sandbox notice configuration -- -- On sandbox pages the module can display a template notifying users that the current page is a -- sandbox, and the location of test cases pages, etc. The module decides whether the page is a -- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the -- messages that the notices contains. ---------------------------------------------------------------------------------------------------- --]] -- cfg['sandbox-notice-image'] -- The image displayed in the sandbox notice. cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]' --[[ -- cfg['sandbox-notice-pagetype-template'] -- cfg['sandbox-notice-pagetype-module'] -- cfg['sandbox-notice-pagetype-other'] -- The page type of the sandbox page. The message that is displayed depends on the current subject -- namespace. This message is used in either cfg['sandbox-notice-blurb'] or -- cfg['sandbox-notice-diff-blurb']. --]] cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page' cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page' cfg['sandbox-notice-pagetype-other'] = 'sandbox page' --[[ -- cfg['sandbox-notice-blurb'] -- cfg['sandbox-notice-diff-blurb'] -- cfg['sandbox-notice-diff-display'] -- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence -- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page -- type, which is either cfg['sandbox-notice-pagetype-template'], -- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what -- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between -- the sandbox and the main template. The display value of the diff link is set by -- cfg['sandbox-notice-compare-link-display']. --]] cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.' cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).' cfg['sandbox-notice-compare-link-display'] = 'diff' --[[ -- cfg['sandbox-notice-testcases-blurb'] -- cfg['sandbox-notice-testcases-link-display'] -- cfg['sandbox-notice-testcases-run-blurb'] -- cfg['sandbox-notice-testcases-run-link-display'] -- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit. $1 is a link to the test cases page. -- cfg['sandbox-notice-testcases-link-display'] is the display value for that link. -- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test -- cases page, and $2 is a link to the page to run it. -- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test -- cases. --]] cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.' cfg['sandbox-notice-testcases-link-display'] = 'test cases' cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).' cfg['sandbox-notice-testcases-run-link-display'] = 'run' -- cfg['sandbox-category'] -- A category to add to all template sandboxes. cfg['sandbox-category'] = 'Template sandboxes' ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg 71b68ed73088f1a59d61acf06bbee9fde6677f03 174 100 2023-09-30T18:46:07Z Führerredux 2 1 revision imported from [[:meta:Module:Documentation/config]] Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Protection template configuration ---------------------------------------------------------------------------------------------------- -- cfg['protection-reason-edit'] -- The protection reason for edit-protected templates to pass to -- [[Module:Protection banner]]. cfg['protection-reason-edit'] = 'template' --[[ ---------------------------------------------------------------------------------------------------- -- Sandbox notice configuration -- -- On sandbox pages the module can display a template notifying users that the current page is a -- sandbox, and the location of test cases pages, etc. The module decides whether the page is a -- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the -- messages that the notices contains. ---------------------------------------------------------------------------------------------------- --]] -- cfg['sandbox-notice-image'] -- The image displayed in the sandbox notice. cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]' --[[ -- cfg['sandbox-notice-pagetype-template'] -- cfg['sandbox-notice-pagetype-module'] -- cfg['sandbox-notice-pagetype-other'] -- The page type of the sandbox page. The message that is displayed depends on the current subject -- namespace. This message is used in either cfg['sandbox-notice-blurb'] or -- cfg['sandbox-notice-diff-blurb']. --]] cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page' cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page' cfg['sandbox-notice-pagetype-other'] = 'sandbox page' --[[ -- cfg['sandbox-notice-blurb'] -- cfg['sandbox-notice-diff-blurb'] -- cfg['sandbox-notice-diff-display'] -- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence -- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page -- type, which is either cfg['sandbox-notice-pagetype-template'], -- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what -- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between -- the sandbox and the main template. The display value of the diff link is set by -- cfg['sandbox-notice-compare-link-display']. --]] cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.' cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).' cfg['sandbox-notice-compare-link-display'] = 'diff' --[[ -- cfg['sandbox-notice-testcases-blurb'] -- cfg['sandbox-notice-testcases-link-display'] -- cfg['sandbox-notice-testcases-run-blurb'] -- cfg['sandbox-notice-testcases-run-link-display'] -- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit. $1 is a link to the test cases page. -- cfg['sandbox-notice-testcases-link-display'] is the display value for that link. -- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test -- cases page, and $2 is a link to the page to run it. -- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test -- cases. --]] cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.' cfg['sandbox-notice-testcases-link-display'] = 'test cases' cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).' cfg['sandbox-notice-testcases-run-link-display'] = 'run' -- cfg['sandbox-category'] -- A category to add to all template sandboxes. cfg['sandbox-category'] = 'Template sandboxes' ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg 71b68ed73088f1a59d61acf06bbee9fde6677f03 Module:Documentation/styles.css 828 53 102 101 2023-09-30T18:43:58Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Documentation/styles.css]] text text/plain /* {{pp|small=yes}} */ .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb 180 102 2023-09-30T18:46:08Z Führerredux 2 1 revision imported from [[:meta:Module:Documentation/styles.css]] text text/plain /* {{pp|small=yes}} */ .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb Template:Sandbox other 10 54 104 103 2023-09-30T18:43:59Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Sandbox_other]] wikitext text/x-wiki {{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> 91e4ae891d6b791615152c1fbc971414961ba872 Template:Documentation subpage 10 55 106 105 2023-09-30T18:44:00Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Documentation_subpage]] wikitext text/x-wiki <includeonly><!-- -->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}} | <!--(this template has been transcluded on a /doc or /{{{override}}} page)--> </includeonly><!-- -->{{#ifeq:{{{doc-notice|show}}} |show | {{Mbox | type = notice | style = margin-bottom:1.0em; | image = [[File:Edit-copy green.svg|40px|alt=|link=]] | text = {{strong|This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]]}} for {{terminate sentence|{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}}}<br />It may contain usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}. }} }}<!-- -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!-- -->{{#if:{{{inhibit|}}} |<!--(don't categorize)--> | <includeonly><!-- -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]] | [[Category:Documentation subpages without corresponding pages]] }}<!-- --></includeonly> }}<!-- (completing initial #ifeq: at start of template:) --><includeonly> | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)--> }}<!-- --></includeonly><noinclude>{{Documentation}}</noinclude> 41ca90af0945442788a2dbd08c8c54a61a23c057 182 106 2023-09-30T18:46:08Z Führerredux 2 1 revision imported from [[:meta:Template:Documentation_subpage]] wikitext text/x-wiki <includeonly><!-- -->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}} | <!--(this template has been transcluded on a /doc or /{{{override}}} page)--> </includeonly><!-- -->{{#ifeq:{{{doc-notice|show}}} |show | {{Mbox | type = notice | style = margin-bottom:1.0em; | image = [[File:Edit-copy green.svg|40px|alt=|link=]] | text = {{strong|This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]]}} for {{terminate sentence|{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}}}<br />It may contain usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}. }} }}<!-- -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!-- -->{{#if:{{{inhibit|}}} |<!--(don't categorize)--> | <includeonly><!-- -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]] | [[Category:Documentation subpages without corresponding pages]] }}<!-- --></includeonly> }}<!-- (completing initial #ifeq: at start of template:) --><includeonly> | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)--> }}<!-- --></includeonly><noinclude>{{Documentation}}</noinclude> 41ca90af0945442788a2dbd08c8c54a61a23c057 Template:Template link with link off 10 56 108 107 2023-09-30T18:44:00Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_link_with_link_off]] wikitext text/x-wiki <includeonly>{{#Invoke:Template link general|main|nowrap=yes|nolink=yes}}</includeonly><noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlf}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> b099fea5d1f36b0b4b9cb253ad3a9f4e095f6851 Template:Tlf 10 57 110 109 2023-09-30T18:44:00Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tlf]] wikitext text/x-wiki #REDIRECT [[Template:Template link with link off]] {{Redirect category shell| {{R from move}} }} 52759e1d3f7c9aa4a03d0b7d4f84f4c6adf53edf Template:High-use 10 58 112 111 2023-09-30T18:44:01Z Führerredux 2 1 revision imported from [[:wikipedia:Template:High-use]] wikitext text/x-wiki {{#invoke:High-use|main|1={{{1|}}}|2={{{2|}}}|info={{{info|}}}|demo={{{demo|}}}|form={{{form|}}}|expiry={{{expiry|}}}|system={{{system|}}}}}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage; interwiki links go to Wikidata, thank you! --> </noinclude> a3322d1bd47ac03df14fa2090855cff4fede9bc7 Template:TemplateData header 10 59 114 113 2023-09-30T18:44:02Z Führerredux 2 1 revision imported from [[:wikipedia:Template:TemplateData_header]] wikitext text/x-wiki <div class="templatedata-header">{{#if:{{{noheader|}}}|<!-- noheader: -->{{Template parameter usage|based=y}}|<!-- +header: -->This is the {{#if:{{{nolink|}}}|<!-- +header, nolink TD -->TemplateData|<!-- +header, +link [[TD]]; DEFAULT: -->[[Wikipedia:TemplateData|TemplateData]]}}<!-- e.o. #if:nolink; DEFAULT: --> for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools. {{Template parameter usage|based=y}}<!-- e.o. #if:noheader -->}} '''TemplateData for {{{1|{{BASEPAGENAME}}}}}''' </div><includeonly><!-- check parameters -->{{#invoke:Check for unknown parameters|check |unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}} |template=Template:TemplateData header |1 |nolink |noheader |preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div> }}<!-- -->{{template other|{{sandbox other|| [[Category:Templates using TemplateData]] }}}}</includeonly><!-- --><noinclude>{{Documentation}}</noinclude> ddfbb4ae793846b96d4c06330417fa6ed4da2adc Template:Template parameter usage 10 60 116 115 2023-09-30T18:44:02Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_parameter_usage]] wikitext text/x-wiki {{#switch:{{{label|}}} |=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|C|c}}lick here] to see a monthly parameter usage report for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|this template}} in articles{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}}. |None|none=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report]{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}} |for|For=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|[[Template:{{ROOTPAGENAME}}]]}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}}. |#default=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{{label|}}}]{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}} }}<noinclude> {{documentation}} </noinclude> 10a89e6a4bc63a1427518ea21bf94b8f623a7391 Module:High-use 828 61 118 117 2023-09-30T18:44:03Z Führerredux 2 1 revision imported from [[:wikipedia:Module:High-use]] Scribunto text/plain local p = {} -- _fetch looks at the "demo" argument. local _fetch = require('Module:Transclusion_count').fetch local yesno = require('Module:Yesno') function p.num(frame, count) if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end -- Build output string local return_value = "" if count == nil then if frame.args[1] == "risk" then return_value = "a very large number of" else return_value = "many" end else -- Use 2 significant figures for smaller numbers and 3 for larger ones local sigfig = 2 if count >= 100000 then sigfig = 3 end -- Prepare to round to appropriate number of sigfigs local f = math.floor(math.log10(count)) - sigfig + 1 -- Round and insert "approximately" or "+" when appropriate if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then -- Round down return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) ) else -- Round to nearest return_value = string.format("approximately&#x20;%s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) ) end -- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes if count and count > 250000 and not yesno (frame:getParent().args['no-percent']) then local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5) if percent >= 1 then return_value = string.format("%s&#x20;pages, or roughly %s%% of all", return_value, percent) end end end return return_value end -- Actions if there is a large (greater than or equal to 100,000) transclusion count function p.risk(frame) local return_value = "" if frame.args[1] == "risk" then return_value = "risk" else local count = _fetch(frame) if count and count >= 100000 then return_value = "risk" end end return return_value end function p.text(frame, count) -- Only show the information about how this template gets updated if someone -- is actually editing the page and maybe trying to update the count. local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''Preview message''': Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." or '' if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end local title = mw.title.getCurrentTitle() if title.subpageText == "doc" or title.subpageText == "sandbox" then title = title.basePageTitle end local systemMessages = frame.args['system'] if frame.args['system'] == '' then systemMessages = nil end -- This retrieves the project URL automatically to simplify localiation. local templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format( mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'), mw.uri.encode(title.fullText), p.num(frame, count)) local used_on_text = "'''This " .. (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template") .. ' is used '; if systemMessages then used_on_text = used_on_text .. systemMessages .. ((count and count > 2000) and ("''', and " .. templateCount) or ("'''")) else used_on_text = used_on_text .. templateCount .. "'''" end local sandbox_text = ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format( (mw.title.getCurrentTitle().namespace == 828 and "module" or "template"), title.fullText, title.fullText, mw.title.getCurrentTitle().namespace == 828 and "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage" ) local infoArg = frame.args["info"] ~= "" and frame.args["info"] if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then local info = systemMessages and '.<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or '.' if infoArg then info = info .. "<br />" .. infoArg end sandbox_text = info .. '<br /> To avoid major disruption' .. (count and count >= 100000 and ' and server load' or '') .. ', any changes should be tested in the ' .. sandbox_text .. 'The tested changes can be added to this page in a single edit. ' else sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') .. 'hanges may be widely noticed. Test changes in the ' .. sandbox_text end local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes ' if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"]) else discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText ) end return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_text end function p.main(frame) local count = nil if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]" local type_param = "style" local epilogue = '' if frame.args['system'] and frame.args['system'] ~= '' then image = "[[File:Ambox important.svg|40px|alt=Warning|link=]]" type_param = "content" local nocat = frame:getParent().args['nocat'] or frame.args['nocat'] local categorise = (nocat == '' or not yesno(nocat)) if categorise then epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[Category:Pages used in system messages needing protection]]}}}}') end elseif (frame.args[1] == "risk" or (count and count >= 100000)) then image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]" type_param = "content" end if frame.args["form"] == "editnotice" then return frame:expandTemplate{ title = 'editnotice', args = { ["image"] = image, ["text"] = p.text(frame, count), ["expiry"] = (frame.args["expiry"] or "") } } .. epilogue else return require('Module:Message box').main('ombox', { type = type_param, image = image, text = p.text(frame, count), expiry = (frame.args["expiry"] or "") }) .. epilogue end end return p 134551888e066954a89c109d2faa8af71a4454a4 Module:Transclusion count 828 62 120 119 2023-09-30T18:44:03Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count]] Scribunto text/plain local p = {} function p.fetch(frame) local template = nil local return_value = nil -- Use demo parameter if it exists, otherswise use current template name local namespace = mw.title.getCurrentTitle().namespace if frame.args["demo"] and frame.args["demo"] ~= "" then template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","") elseif namespace == 10 then -- Template namespace template = mw.title.getCurrentTitle().text elseif namespace == 828 then -- Module namespace template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text) end -- If in template or module namespace, look up count in /data if template ~= nil then namespace = mw.title.new(template, "Template").namespace if namespace == 10 or namespace == 828 then template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end local index = mw.ustring.sub(mw.title.new(template).text,1,1) local status, data = pcall(function () return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other"))) end) if status then return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")]) end end end -- If database value doesn't exist, use value passed to template if return_value == nil and frame.args[1] ~= nil then local arg1=mw.ustring.match(frame.args[1], '[%d,]+') if arg1 and arg1 ~= '' then return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R')) end end return return_value end -- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]] function p.tabulate(frame) local list = {} for i = 65, 91 do local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i))) for name, count in pairs(data) do table.insert(list, {mw.title.new(name, "Template").fullText, count}) end end table.sort(list, function(a, b) return (a[2] == b[2]) and (a[1] < b[1]) or (a[2] > b[2]) end) local lang = mw.getContentLanguage(); for i = 1, #list do list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2])) end return table.concat(list) end return p 000ef6bcbf7b66e727870b0c300c4009da300513 Module:Lua banner 828 63 122 121 2023-09-30T18:44:04Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Lua_banner]] Scribunto text/plain -- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = '<strong class="error">Error: no modules specified</strong>' else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) local maybeSandbox = mw.title.new(module .. '/sandbox') if maybeSandbox.exists then moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText) end end local moduleList = mList.makeList('bulleted', moduleLinks) local title = mw.title.getCurrentTitle() if title.subpageText == "doc" then title = title.basePageTitle end if title.contentModel == "Scribunto" then boxArgs.text = 'This module depends on the following other modules:' .. moduleList else boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList end end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]' return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end local cats = {} -- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end -- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle() local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true } if not subpageBlacklist[titleObj.subpageText] then local protCatName if titleObj.namespace == 10 then local category = args.category if not category then local categories = { ['Module:String'] = 'Templates based on the String Lua module', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module' } category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category protCatName = "Templates using under-protected Lua modules" elseif titleObj.namespace == 828 then protCatName = "Modules depending on under-protected modules" end if not args.noprotcat and protCatName then local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } local currentProt if titleObj.id ~= 0 then -- id is 0 (page does not exist) if am previewing before creating a template. currentProt = titleObj.protectionLevels["edit"][1] end if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do if module ~= "WP:libraryUtil" then local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = protCatName break end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p 03ec1b34a40121efc562c0c64a67ebbf57d56dff 190 122 2023-09-30T18:46:10Z Führerredux 2 1 revision imported from [[:meta:Module:Lua_banner]] Scribunto text/plain -- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = '<strong class="error">Error: no modules specified</strong>' else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) local maybeSandbox = mw.title.new(module .. '/sandbox') if maybeSandbox.exists then moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText) end end local moduleList = mList.makeList('bulleted', moduleLinks) local title = mw.title.getCurrentTitle() if title.subpageText == "doc" then title = title.basePageTitle end if title.contentModel == "Scribunto" then boxArgs.text = 'This module depends on the following other modules:' .. moduleList else boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList end end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]' return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end local cats = {} -- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end -- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle() local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true } if not subpageBlacklist[titleObj.subpageText] then local protCatName if titleObj.namespace == 10 then local category = args.category if not category then local categories = { ['Module:String'] = 'Templates based on the String Lua module', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module' } category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category protCatName = "Templates using under-protected Lua modules" elseif titleObj.namespace == 828 then protCatName = "Modules depending on under-protected modules" end if not args.noprotcat and protCatName then local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } local currentProt if titleObj.id ~= 0 then -- id is 0 (page does not exist) if am previewing before creating a template. currentProt = titleObj.protectionLevels["edit"][1] end if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do if module ~= "WP:libraryUtil" then local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = protCatName break end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p 03ec1b34a40121efc562c0c64a67ebbf57d56dff Module:Parameter names example 828 64 124 123 2023-09-30T18:44:04Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Parameter_names_example]] Scribunto text/plain -- This module implements {{parameter names example}}. local p = {} local function makeParam(s) local lb = '&#123;' local rb = '&#125;' return lb:rep(3) .. s .. rb:rep(3) end local function italicize(s) return "''" .. s .. "''" end local function plain(s) return s end function p._main(args, frame) -- Find how we want to format the arguments to the template. local formatFunc if args._display == 'italics' or args._display == 'italic' then formatFunc = italicize elseif args._display == 'plain' then formatFunc = plain else formatFunc = makeParam end -- Build the table of template arguments. local targs = {} for k, v in pairs(args) do if type(k) == 'number' then targs[v] = formatFunc(v) elseif not k:find('^_') then targs[k] = v end end --targs['nocat'] = 'yes'; --targs['categories'] = 'no'; --targs['demo'] = 'yes'; -- Find the template name. local template if args._template then template = args._template else local currentTitle = mw.title.getCurrentTitle() if currentTitle.prefixedText:find('/sandbox$') then template = currentTitle.prefixedText else template = currentTitle.basePageTitle.prefixedText end end -- Call the template with the arguments. frame = frame or mw.getCurrentFrame() local success, result = pcall( frame.expandTemplate, frame, {title = template, args = targs} ) if success then return result else return '' end end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Parameter names example' }) return p._main(args, frame) end return p fdf94fb7a5dc1fabf118d60488a02f1e65b0df24 Template:Lua 10 65 126 125 2023-09-30T18:44:05Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Lua]] wikitext text/x-wiki <includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude> {{Lua|Module:Lua banner}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7 Template:Parameter names example 10 66 128 127 2023-09-30T18:44:06Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Parameter_names_example]] wikitext text/x-wiki <includeonly>{{#invoke:Parameter names example|main}}</includeonly><noinclude> {{Documentation}} </noinclude> de1e29d6ebc113e9d1649ea6a976625885db8a2f Template:Category link with count 10 67 130 129 2023-09-30T18:44:09Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Category_link_with_count]] wikitext text/x-wiki [[:Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|<!-- -->{{#if:{{{name|}}}|{{{name}}}|Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}}}<!-- -->]]&nbsp;({{PAGESINCATEGORY:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|{{{2|all}}}}})<noinclude> {{Documentation}} </noinclude> f93f1540b8c157703bd6d24ae35c35bef745981d Template:Suppress categories 10 68 132 131 2023-09-30T18:44:09Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Suppress_categories]] wikitext text/x-wiki <includeonly>{{{{{|safesubst:}}}#invoke:Suppress categories|main}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 1f9c6065201d31d4c70f982129b5babbb809ae8c Module:Suppress categories 828 69 134 133 2023-09-30T18:44:10Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Suppress_categories]] Scribunto text/plain -- This is a simple module to strip categories from wikitext. It does -- not support nested links or magic words like __TOC__, etc. Even so, -- it should still handle most categories. local p = {} -- Detects if a category link is valid or not. If it is valid, -- the function returns the blank string. If not, the input -- is returned with no changes. local function processCategory( all, submatch ) local beforePipe = mw.ustring.match( submatch, '^(.-)[%s_]*|[%s_]*.-$' ) beforePipe = beforePipe or submatch if mw.ustring.match( beforePipe, '[%[%]<>{}%c\n]' ) then return all else return '' end end -- Preprocess the content if we aren't being called from #invoke, -- and pass it to gsub to remove valid category links. local function suppress( content, isPreprocessed ) if not isPreprocessed then content = mw.getCurrentFrame():preprocess( content ) end content = mw.ustring.gsub( content, '(%[%[[%s_]*[cC][aA][tT][eE][gG][oO][rR][yY][%s_]*:[%s_]*(.-)[%s_]*%]%])', processCategory ) return content end -- Get the content to suppress categories from, and find -- whether the content has already been preprocessed. (If the -- module is called from #invoke, it has been preprocessed already.) function p.main( frame ) local content, isPreprocessed if frame == mw.getCurrentFrame() then content = frame:getParent().args[1] if frame.args[1] then content = frame.args[1] end isPreprocessed = true else content = frame isPreprocessed = false end return suppress( content, isPreprocessed ) end return p 0ec3903841c489357a879434c5dc23c11d182c78 Module:Transclusion count/data/I 828 70 136 135 2023-09-30T18:44:10Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/I]] Scribunto text/plain return { ["IAAF_name"] = 2100, ["IAST"] = 6300, ["IBDB_name"] = 9100, ["ICD10"] = 4700, ["ICD9"] = 4400, ["ICS"] = 2900, ["IDN"] = 3400, ["IMDb_episode"] = 10000, ["IMDb_episodes"] = 2700, ["IMDb_name"] = 153000, ["IMDb_title"] = 189000, ["IMO_Number"] = 4100, ["IMSLP"] = 8200, ["INA"] = 2100, ["IND"] = 7500, ["INR"] = 6500, ["INRConvert"] = 5700, ["INRConvert/CurrentRate"] = 5600, ["INRConvert/USD"] = 5600, ["INRConvert/out"] = 5600, ["IOC_profile"] = 5200, ["IP"] = 2600, ["IPA"] = 142000, ["IPA-de"] = 8100, ["IPA-es"] = 7900, ["IPA-fr"] = 44000, ["IPA-it"] = 6000, ["IPA-nl"] = 3900, ["IPA-pl"] = 4100, ["IPA-pt"] = 3300, ["IPA-ru"] = 2700, ["IPA-sl"] = 6900, ["IPA-th"] = 3000, ["IPA_audio_link"] = 3500, ["IPA_link"] = 3500, ["IPAc-cmn"] = 2300, ["IPAc-en"] = 48000, ["IPAc-pl"] = 51000, ["IPC_athlete"] = 2800, ["IPSummary"] = 78000, ["IP_summary"] = 79000, ["IPtalk"] = 18000, ["IPuser"] = 7000, ["IPvandal"] = 2700, ["IRC"] = 7300, ["IRI"] = 2300, ["IRL"] = 5500, ["IRN"] = 3600, ["ISBN"] = 462000, ["ISBN?"] = 2100, ["ISBNT"] = 39000, ["ISBN_missing"] = 2600, ["ISFDB_name"] = 4100, ["ISFDB_title"] = 4600, ["ISL"] = 2100, ["ISO_15924/script-example-character"] = 2800, ["ISO_15924/wp-article"] = 2800, ["ISO_15924/wp-article/format"] = 2800, ["ISO_15924/wp-article/label"] = 2700, ["ISO_3166_code"] = 518000, ["ISO_3166_name"] = 16000, ["ISO_639_name"] = 8100, ["ISP"] = 5300, ["ISR"] = 4800, ["ISSN"] = 12000, ["ISSN_link"] = 30000, ["ISTAT"] = 8100, ["ISU_figure_skater"] = 2500, ["ITA"] = 17000, ["ITF"] = 6300, ["ITF_profile"] = 9000, ["ITIS"] = 4400, ["ITN_talk"] = 10000, ["ITN_talk/date"] = 10000, ["IUCN_banner"] = 15000, ["I_sup"] = 4600, ["Iaaf_name"] = 7200, ["Ice_hockey"] = 19000, ["Ice_hockey_stats"] = 17000, ["Icehockeystats"] = 12000, ["Icon"] = 581000, ["If"] = 271000, ["If_all"] = 6400, ["If_between"] = 3800, ["If_both"] = 155000, ["If_empty"] = 3660000, ["If_first_display_both"] = 73000, ["If_in_page"] = 9900, ["If_last_display_both"] = 30000, ["If_preview"] = 58000, ["If_then_show"] = 289000, ["Ifempty"] = 4000, ["Ifeq"] = 16000, ["Iferror_then_show"] = 3300, ["Ifexist_not_redirect"] = 1300000, ["Ifnotempty"] = 14000, ["Ifnumber"] = 36000, ["Ifsubst"] = 445000, ["Ih"] = 7500, ["Ill"] = 117000, ["Illm"] = 6700, ["Image_frame"] = 4900, ["Image_label"] = 4500, ["Image_label_begin"] = 3800, ["Image_label_end"] = 3800, ["Image_label_small"] = 2600, ["Image_needed"] = 4500, ["Image_other"] = 272000, ["Image_requested"] = 167000, ["Image_requested/Category_helper"] = 159000, ["Imbox"] = 917000, ["Imdb_name"] = 5400, ["Imdb_title"] = 4000, ["Import_style"] = 11000, ["Import_style/inputbox.css"] = 11000, ["Importance"] = 5620000, ["Importance/colour"] = 5640000, ["Importance_mask"] = 10400000, ["Improve_categories"] = 7100, ["Improve_documentation"] = 2400, ["In_class"] = 5900, ["In_lang"] = 357000, ["In_progress"] = 3200, ["In_string"] = 75000, ["In_title"] = 19000, ["Inactive_WikiProject_banner"] = 206000, ["Inactive_userpage_blanked"] = 4900, ["Include-USGov"] = 29000, ["Incomplete_list"] = 23000, ["Inconclusive"] = 2100, ["Increase"] = 43000, ["Incumbent_pope"] = 4300, ["Indent"] = 4300, ["IndexFungorum"] = 2200, ["Indian_English"] = 4300, ["Indian_Rupee"] = 10000, ["Indian_railway_code"] = 3200, ["Inflation"] = 21000, ["Inflation-fn"] = 5400, ["Inflation-year"] = 4500, ["Inflation/IN/startyear"] = 5600, ["Inflation/UK"] = 4300, ["Inflation/UK/dataset"] = 4300, ["Inflation/UK/startyear"] = 4400, ["Inflation/US"] = 12000, ["Inflation/US-GDP"] = 2400, ["Inflation/US-GDP/dataset"] = 2400, ["Inflation/US-GDP/startyear"] = 2400, ["Inflation/US/dataset"] = 12000, ["Inflation/US/startyear"] = 12000, ["Inflation/fn"] = 6200, ["Inflation/year"] = 25000, ["Info"] = 7300, ["Infobox"] = 3230000, ["Infobox/Columns"] = 2400, ["Infobox/mobileviewfix.css"] = 147000, ["Infobox3cols"] = 17000, ["Infobox_AFL_biography"] = 14000, ["Infobox_Aircraft_Begin"] = 5300, ["Infobox_Aircraft_Type"] = 4700, ["Infobox_Athletics_Championships"] = 2700, ["Infobox_Australian_place"] = 15000, ["Infobox_CFL_biography"] = 2200, ["Infobox_COA_wide"] = 3200, ["Infobox_Canada_electoral_district"] = 2500, ["Infobox_Canadian_Football_League_biography"] = 5700, ["Infobox_Canadian_Football_League_biography/position"] = 5700, ["Infobox_Chinese"] = 20000, ["Infobox_Chinese/Chinese"] = 2700, ["Infobox_Chinese/Footer"] = 8700, ["Infobox_Chinese/Header"] = 8700, ["Infobox_Chinese/Korean"] = 17000, ["Infobox_Christian_leader"] = 18000, ["Infobox_French_commune"] = 38000, ["Infobox_GAA_player"] = 2700, ["Infobox_Gaelic_games_player"] = 5000, ["Infobox_German_location"] = 13000, ["Infobox_German_place"] = 14000, ["Infobox_Grand_Prix_race_report"] = 2000, ["Infobox_Greece_place"] = 2800, ["Infobox_Greek_Dimos"] = 2800, ["Infobox_Hindu_temple"] = 2400, ["Infobox_Indian_constituency"] = 4600, ["Infobox_Indian_constituency/defaultdata"] = 4600, ["Infobox_Italian_comune"] = 8100, ["Infobox_Korean_name"] = 15000, ["Infobox_Korean_name/categories"] = 15000, ["Infobox_MLB_yearly"] = 3100, ["Infobox_NASCAR_race_report"] = 2200, ["Infobox_NCAA_team_season"] = 18000, ["Infobox_NFL_biography"] = 28000, ["Infobox_NFL_player"] = 7700, ["Infobox_NFL_team_season"] = 3900, ["Infobox_NRHP"] = 72000, ["Infobox_NRHP/conv"] = 18000, ["Infobox_NRHP/locmapin2region"] = 66000, ["Infobox_Officeholder"] = 4800, ["Infobox_Olympic_event"] = 7300, ["Infobox_Olympic_event/games_text"] = 7300, ["Infobox_Paralympic_event"] = 2600, ["Infobox_Paralympic_event/games_text"] = 2600, ["Infobox_Politician"] = 2200, ["Infobox_Romanian_subdivision"] = 3200, ["Infobox_Russian_district"] = 2000, ["Infobox_Russian_inhabited_locality"] = 4500, ["Infobox_SCOTUS_case"] = 3700, ["Infobox_Site_of_Special_Scientific_Interest"] = 2000, ["Infobox_Swiss_town"] = 2800, ["Infobox_Switzerland_municipality"] = 2900, ["Infobox_Turkey_place"] = 19000, ["Infobox_U.S._county"] = 3000, ["Infobox_U.S._county/district"] = 3000, ["Infobox_UK_constituency"] = 2100, ["Infobox_UK_constituency/year"] = 2100, ["Infobox_UK_legislation"] = 3300, ["Infobox_UK_place"] = 26000, ["Infobox_UK_place/NoDialCode"] = 8000, ["Infobox_UK_place/NoPostCode"] = 3100, ["Infobox_UK_place/area"] = 2400, ["Infobox_UK_place/dist"] = 2500, ["Infobox_UK_place/local"] = 26000, ["Infobox_UK_place/styles.css"] = 26000, ["Infobox_UN_resolution"] = 2300, ["Infobox_US_Supreme_Court_case"] = 3800, ["Infobox_US_Supreme_Court_case/courts"] = 3800, ["Infobox_Wikipedia_user"] = 9800, ["Infobox_YouTube_personality"] = 2600, ["Infobox_YouTube_personality/styles.css"] = 2600, ["Infobox_academic"] = 14000, ["Infobox_aircraft_begin"] = 14000, ["Infobox_aircraft_occurrence"] = 2300, ["Infobox_aircraft_type"] = 12000, ["Infobox_airline"] = 4600, ["Infobox_airport"] = 15000, ["Infobox_airport/datatable"] = 15000, ["Infobox_album"] = 162000, ["Infobox_album/color"] = 191000, ["Infobox_album/link"] = 162000, ["Infobox_anatomy"] = 4500, ["Infobox_ancient_site"] = 5400, ["Infobox_animanga/Footer"] = 6800, ["Infobox_animanga/Header"] = 6800, ["Infobox_animanga/Print"] = 5500, ["Infobox_animanga/Video"] = 4700, ["Infobox_architect"] = 3700, ["Infobox_artist"] = 28000, ["Infobox_artist_discography"] = 5900, ["Infobox_artwork"] = 11000, ["Infobox_athlete"] = 2800, ["Infobox_automobile"] = 8400, ["Infobox_award"] = 13000, ["Infobox_badminton_player"] = 3200, ["Infobox_baseball_biography"] = 28000, ["Infobox_baseball_biography/style"] = 28000, ["Infobox_baseball_biography/styles.css"] = 28000, ["Infobox_basketball_biography"] = 21000, ["Infobox_basketball_biography/style"] = 21000, ["Infobox_basketball_club"] = 3000, ["Infobox_beauty_pageant"] = 2400, ["Infobox_bilateral_relations"] = 4400, ["Infobox_body_of_water"] = 18000, ["Infobox_book"] = 52000, ["Infobox_boxer"] = 5700, ["Infobox_bridge"] = 6000, ["Infobox_building"] = 27000, ["Infobox_character"] = 7600, ["Infobox_chess_biography"] = 3900, ["Infobox_chess_player"] = 3200, ["Infobox_church"] = 15000, ["Infobox_church/denomination"] = 15000, ["Infobox_church/font_color"] = 15000, ["Infobox_civil_conflict"] = 2400, ["Infobox_civilian_attack"] = 5500, ["Infobox_college_coach"] = 12000, ["Infobox_college_football_game"] = 2100, ["Infobox_college_sports_team_season"] = 40000, ["Infobox_college_sports_team_season/link"] = 40000, ["Infobox_college_sports_team_season/name"] = 40000, ["Infobox_college_sports_team_season/succession"] = 40000, ["Infobox_college_sports_team_season/team"] = 40000, ["Infobox_comic_book_title"] = 3000, ["Infobox_comics_character"] = 3600, ["Infobox_comics_creator"] = 3500, ["Infobox_comics_creator/styles.css"] = 3500, ["Infobox_company"] = 83000, ["Infobox_computing_device"] = 2300, ["Infobox_concert"] = 3300, ["Infobox_constituency"] = 5400, ["Infobox_country"] = 6400, ["Infobox_country/formernext"] = 6000, ["Infobox_country/imagetable"] = 5200, ["Infobox_country/multirow"] = 8300, ["Infobox_country/status_text"] = 2800, ["Infobox_country/styles.css"] = 6400, ["Infobox_country_at_games"] = 15000, ["Infobox_country_at_games/core"] = 15000, ["Infobox_country_at_games/see_also"] = 12000, ["Infobox_court_case"] = 4700, ["Infobox_court_case/images"] = 2400, ["Infobox_cricket_tournament"] = 2300, ["Infobox_cricketer"] = 32000, ["Infobox_cricketer/career"] = 32000, ["Infobox_cricketer/national_side"] = 7500, ["Infobox_criminal"] = 6400, ["Infobox_curler"] = 2600, ["Infobox_cycling_race_report"] = 4500, ["Infobox_cyclist"] = 16000, ["Infobox_dam"] = 5700, ["Infobox_designation_list"] = 19000, ["Infobox_designation_list/entry"] = 17000, ["Infobox_dim"] = 6900, ["Infobox_dim/core"] = 6900, ["Infobox_diocese"] = 3800, ["Infobox_drug"] = 9700, ["Infobox_drug/chemical_formula"] = 9700, ["Infobox_drug/data_page_link"] = 9700, ["Infobox_drug/formatATC"] = 9600, ["Infobox_drug/formatCASnumber"] = 9700, ["Infobox_drug/formatChEBI"] = 9700, ["Infobox_drug/formatChEMBL"] = 9700, ["Infobox_drug/formatChemDBNIAID"] = 9700, ["Infobox_drug/formatChemSpider"] = 9700, ["Infobox_drug/formatCompTox"] = 9700, ["Infobox_drug/formatDrugBank"] = 9700, ["Infobox_drug/formatIUPHARBPS"] = 9700, ["Infobox_drug/formatJmol"] = 9700, ["Infobox_drug/formatKEGG"] = 9700, ["Infobox_drug/formatPDBligand"] = 9100, ["Infobox_drug/formatPubChemCID"] = 9700, ["Infobox_drug/formatPubChemSID"] = 9700, ["Infobox_drug/formatUNII"] = 9700, ["Infobox_drug/legal_status"] = 10000, ["Infobox_drug/licence"] = 9800, ["Infobox_drug/maintenance_categories"] = 9700, ["Infobox_drug/non-ref-space"] = 4200, ["Infobox_drug/pregnancy_category"] = 9800, ["Infobox_drug/title"] = 9700, ["Infobox_election"] = 30000, ["Infobox_election/row"] = 30000, ["Infobox_election/shortname"] = 28000, ["Infobox_enzyme"] = 5100, ["Infobox_ethnic_group"] = 7300, ["Infobox_event"] = 5400, ["Infobox_family"] = 2100, ["Infobox_figure_skater"] = 4200, ["Infobox_film"] = 156000, ["Infobox_film/short_description"] = 152000, ["Infobox_film_awards"] = 2600, ["Infobox_film_awards/link"] = 2600, ["Infobox_film_awards/style"] = 2600, ["Infobox_food"] = 6900, ["Infobox_football_biography"] = 206000, ["Infobox_football_club"] = 27000, ["Infobox_football_club_season"] = 20000, ["Infobox_football_league"] = 2600, ["Infobox_football_league_season"] = 19000, ["Infobox_football_match"] = 5900, ["Infobox_football_tournament_season"] = 8000, ["Infobox_former_subdivision"] = 3300, ["Infobox_former_subdivision/styles.css"] = 3300, ["Infobox_galaxy"] = 2100, ["Infobox_game"] = 2500, ["Infobox_game_score"] = 3400, ["Infobox_gene"] = 13000, ["Infobox_given_name"] = 4000, ["Infobox_golfer"] = 4400, ["Infobox_golfer/highest_ranking"] = 4400, ["Infobox_government_agency"] = 10000, ["Infobox_government_cabinet"] = 2600, ["Infobox_gridiron_football_person"] = 2400, ["Infobox_gridiron_football_person/position"] = 5700, ["Infobox_gymnast"] = 3400, ["Infobox_handball_biography"] = 4900, ["Infobox_historic_site"] = 11000, ["Infobox_horseraces"] = 2600, ["Infobox_hospital"] = 6300, ["Infobox_hospital/care_system"] = 6300, ["Infobox_hospital/lists"] = 6300, ["Infobox_ice_hockey_biography"] = 20000, ["Infobox_ice_hockey_player"] = 19000, ["Infobox_ice_hockey_team"] = 3000, ["Infobox_ice_hockey_team_season"] = 2000, ["Infobox_international_football_competition"] = 5800, ["Infobox_islands"] = 8800, ["Infobox_islands/area"] = 9200, ["Infobox_islands/density"] = 9200, ["Infobox_islands/length"] = 8800, ["Infobox_islands/styles.css"] = 8800, ["Infobox_journal"] = 9700, ["Infobox_journal/Abbreviation_search"] = 9600, ["Infobox_journal/Bluebook_check"] = 9400, ["Infobox_journal/Former_check"] = 9400, ["Infobox_journal/ISO_4_check"] = 9400, ["Infobox_journal/ISSN-eISSN"] = 9500, ["Infobox_journal/Indexing_search"] = 9500, ["Infobox_journal/MathSciNet_check"] = 9400, ["Infobox_journal/NLM_check"] = 9400, ["Infobox_journal/frequency"] = 8600, ["Infobox_lake"] = 4300, ["Infobox_language"] = 9500, ["Infobox_language/family-color"] = 11000, ["Infobox_language/genetic"] = 6500, ["Infobox_language/linguistlist"] = 9500, ["Infobox_language/ref"] = 7100, ["Infobox_legislature"] = 3600, ["Infobox_library"] = 2100, ["Infobox_lighthouse"] = 2600, ["Infobox_lighthouse/light"] = 2600, ["Infobox_locomotive"] = 4900, ["Infobox_magazine"] = 7600, ["Infobox_manner_of_address"] = 3300, ["Infobox_mapframe"] = 80000, ["Infobox_martial_artist"] = 5700, ["Infobox_martial_artist/record"] = 5700, ["Infobox_medal_templates"] = 423000, ["Infobox_medical_condition"] = 10000, ["Infobox_medical_condition_(new)"] = 8200, ["Infobox_medical_details"] = 2000, ["Infobox_military_conflict"] = 22000, ["Infobox_military_installation"] = 9800, ["Infobox_military_person"] = 45000, ["Infobox_military_unit"] = 26000, ["Infobox_mine"] = 2100, ["Infobox_model"] = 2300, ["Infobox_monument"] = 2000, ["Infobox_mountain"] = 28000, ["Infobox_multi-sport_competition_event"] = 2400, ["Infobox_museum"] = 10000, ["Infobox_musical_artist"] = 121000, ["Infobox_musical_artist/color"] = 121000, ["Infobox_musical_artist/hCard_class"] = 313000, ["Infobox_musical_composition"] = 2900, ["Infobox_name"] = 7400, ["Infobox_name_module"] = 7000, ["Infobox_newspaper"] = 9700, ["Infobox_nobility"] = 2500, ["Infobox_noble"] = 7300, ["Infobox_officeholder"] = 219000, ["Infobox_officeholder/office"] = 224000, ["Infobox_official_post"] = 8100, ["Infobox_organization"] = 36000, ["Infobox_pageant_titleholder"] = 2900, ["Infobox_park"] = 7400, ["Infobox_person"] = 473000, ["Infobox_person/Wikidata"] = 4800, ["Infobox_person/height"] = 103000, ["Infobox_person/length"] = 7100, ["Infobox_person/weight"] = 66000, ["Infobox_philosopher"] = 3400, ["Infobox_planet"] = 4700, ["Infobox_play"] = 3900, ["Infobox_political_party"] = 14000, ["Infobox_power_station"] = 3000, ["Infobox_prepared_food"] = 3100, ["Infobox_professional_wrestler"] = 4300, ["Infobox_professional_wrestling_event"] = 2700, ["Infobox_protected_area"] = 14000, ["Infobox_protein_family"] = 2100, ["Infobox_publisher"] = 2400, ["Infobox_racehorse"] = 5500, ["Infobox_racing_driver"] = 3800, ["Infobox_racing_driver_series_section"] = 2000, ["Infobox_radio_station"] = 22000, ["Infobox_rail"] = 2900, ["Infobox_rail_line"] = 7300, ["Infobox_rail_service"] = 2900, ["Infobox_rail_service/doc"] = 2900, ["Infobox_reality_competition_season"] = 3500, ["Infobox_record_label"] = 4000, ["Infobox_recurring_event"] = 6400, ["Infobox_religious_biography"] = 5200, ["Infobox_religious_building"] = 12000, ["Infobox_religious_building/color"] = 17000, ["Infobox_restaurant"] = 2800, ["Infobox_river"] = 30000, ["Infobox_river/calcunit"] = 30000, ["Infobox_river/discharge"] = 30000, ["Infobox_river/row-style"] = 30000, ["Infobox_river/source"] = 30000, ["Infobox_road"] = 24000, ["Infobox_road/meta/mask/category"] = 24000, ["Infobox_road/meta/mask/country"] = 24000, ["Infobox_road/styles.css"] = 25000, ["Infobox_road_small"] = 2300, ["Infobox_rockunit"] = 6400, ["Infobox_royalty"] = 22000, ["Infobox_royalty/short_description"] = 12000, ["Infobox_rugby_biography"] = 16000, ["Infobox_rugby_biography/correct_date"] = 16000, ["Infobox_rugby_biography/depcheck"] = 15000, ["Infobox_rugby_league_biography"] = 9900, ["Infobox_rugby_league_biography/PLAYER"] = 9800, ["Infobox_rugby_team"] = 2600, ["Infobox_sailboat_specifications"] = 2300, ["Infobox_saint"] = 5000, ["Infobox_school"] = 38000, ["Infobox_school/short_description"] = 38000, ["Infobox_school_district"] = 5700, ["Infobox_school_district/styles.css"] = 5700, ["Infobox_scientist"] = 48000, ["Infobox_service_record"] = 2600, ["Infobox_settlement"] = 561000, ["Infobox_settlement/areadisp"] = 235000, ["Infobox_settlement/columns"] = 94000, ["Infobox_settlement/columns/styles.css"] = 94000, ["Infobox_settlement/densdisp"] = 436000, ["Infobox_settlement/impus"] = 81000, ["Infobox_settlement/lengthdisp"] = 169000, ["Infobox_settlement/link"] = 94000, ["Infobox_settlement/metric"] = 209000, ["Infobox_settlement/pref"] = 291000, ["Infobox_settlement/styles.css"] = 561000, ["Infobox_ship_begin"] = 41000, ["Infobox_ship_career"] = 37000, ["Infobox_ship_characteristics"] = 41000, ["Infobox_ship_class_overview"] = 4100, ["Infobox_ship_image"] = 40000, ["Infobox_shopping_mall"] = 3400, ["Infobox_short_story"] = 2400, ["Infobox_skier"] = 2500, ["Infobox_soap_character"] = 2900, ["Infobox_software"] = 14000, ["Infobox_software/simple"] = 14000, ["Infobox_song"] = 76000, ["Infobox_song/color"] = 76000, ["Infobox_song/link"] = 76000, ["Infobox_spaceflight"] = 3600, ["Infobox_spaceflight/styles.css"] = 3600, ["Infobox_sport_event"] = 2100, ["Infobox_sports_competition_event"] = 17000, ["Infobox_sports_competition_event/medalrow"] = 11000, ["Infobox_sports_league"] = 5000, ["Infobox_sports_season"] = 5400, ["Infobox_sports_team"] = 2200, ["Infobox_sportsperson"] = 106000, ["Infobox_stadium"] = 3500, ["Infobox_station"] = 55000, ["Infobox_station/doc"] = 55000, ["Infobox_station/services"] = 55000, ["Infobox_station/styles.css"] = 55000, ["Infobox_street"] = 3400, ["Infobox_swimmer"] = 9400, ["Infobox_television"] = 57000, ["Infobox_television/Short_description"] = 54000, ["Infobox_television_channel"] = 6200, ["Infobox_television_episode"] = 12000, ["Infobox_television_episode/styles.css"] = 12000, ["Infobox_television_season"] = 9500, ["Infobox_television_station"] = 3700, ["Infobox_tennis_biography"] = 10000, ["Infobox_tennis_event"] = 2500, ["Infobox_tennis_tournament_event"] = 19000, ["Infobox_tennis_tournament_year"] = 9200, ["Infobox_tennis_tournament_year/color"] = 28000, ["Infobox_tennis_tournament_year/footer"] = 28000, ["Infobox_train"] = 2300, ["Infobox_union"] = 2100, ["Infobox_university"] = 26000, ["Infobox_user"] = 2700, ["Infobox_venue"] = 18000, ["Infobox_video_game"] = 28000, ["Infobox_video_game/styles.css"] = 28000, ["Infobox_volleyball_biography"] = 5400, ["Infobox_weapon"] = 7300, ["Infobox_website"] = 7700, ["Infobox_writer"] = 39000, ["Information"] = 101000, ["Information/styles.css"] = 101000, ["Inprogress"] = 2400, ["Input_link"] = 32000, ["Instagram"] = 11000, ["Interlanguage_link"] = 155000, ["Interlanguage_link_multi"] = 19000, ["Internet_Archive_author"] = 19000, ["Internet_Archive_film"] = 2500, ["Intitle"] = 12000, ["Invalid_SVG"] = 3600, ["Invalid_SVG/styles.css"] = 3600, ["Iptalk"] = 17000, ["IranCensus2006"] = 47000, ["IranNCSGN"] = 3200, ["Iran_Census_2006"] = 47000, ["Irc"] = 2100, ["Irish_place_name"] = 2600, ["IsIPAddress"] = 38000, ["IsValidPageName"] = 141000, ["Is_country_in_Central_America"] = 13000, ["Is_country_in_the_Caribbean"] = 14000, ["Is_interwiki_link"] = 6100, ["Is_italic_taxon"] = 478000, ["Is_redirect"] = 27000, ["Isbn"] = 7500, ["Isfdb_name"] = 3700, ["Isfdb_title"] = 4400, ["Isnumeric"] = 209000, ["Iso2continent"] = 35000, ["Iso2country"] = 23000, ["Iso2country/article"] = 22000, ["Iso2country/data"] = 23000, ["Iso2nationality"] = 226000, ["Issubst"] = 72000, ["Isu_name"] = 2200, ["Italic_dab2"] = 5200, ["Italic_title"] = 282000, ["Italic_title_prefixed"] = 8700, ["Italics_colon"] = 3800, ["Italictitle"] = 4300, ["Ivm"] = 5700, ["Ivm/styles.css"] = 5700, ["Ivmbox"] = 123000, ["Ivory_messagebox"] = 142000, ["Module:I18n/complex_date"] = 66000, ["Module:IP"] = 131000, ["Module:IPA"] = 142000, ["Module:IPA/data"] = 128000, ["Module:IPA/styles.css"] = 114000, ["Module:IPA_symbol"] = 4800, ["Module:IPA_symbol/data"] = 4800, ["Module:IPAc-en"] = 48000, ["Module:IPAc-en/data"] = 48000, ["Module:IPAc-en/phonemes"] = 48000, ["Module:IPAc-en/pronunciation"] = 48000, ["Module:IPAddress"] = 188000, ["Module:ISO_3166"] = 1030000, ["Module:ISO_3166/data/AT"] = 2500, ["Module:ISO_3166/data/BA"] = 3400, ["Module:ISO_3166/data/CA"] = 2500, ["Module:ISO_3166/data/CN"] = 2100, ["Module:ISO_3166/data/DE"] = 14000, ["Module:ISO_3166/data/ES"] = 3600, ["Module:ISO_3166/data/FR"] = 38000, ["Module:ISO_3166/data/GB"] = 6400, ["Module:ISO_3166/data/GR"] = 3100, ["Module:ISO_3166/data/IN"] = 29000, ["Module:ISO_3166/data/IR"] = 7900, ["Module:ISO_3166/data/National"] = 1030000, ["Module:ISO_3166/data/PL"] = 6700, ["Module:ISO_3166/data/RS"] = 3200, ["Module:ISO_3166/data/RU"] = 25000, ["Module:ISO_3166/data/US"] = 85000, ["Module:ISO_639_name"] = 20000, ["Module:ISOdate"] = 66000, ["Module:Icon"] = 581000, ["Module:Icon/data"] = 581000, ["Module:If_empty"] = 3660000, ["Module:If_in_page"] = 9900, ["Module:If_preview"] = 295000, ["Module:If_preview/configuration"] = 295000, ["Module:If_preview/styles.css"] = 295000, ["Module:Import_style"] = 11000, ["Module:In_lang"] = 357000, ["Module:Indent"] = 4300, ["Module:Infobox"] = 4100000, ["Module:Infobox/dates"] = 69000, ["Module:Infobox/styles.css"] = 4360000, ["Module:Infobox3cols"] = 296000, ["Module:InfoboxImage"] = 4410000, ["Module:Infobox_body_of_water_tracking"] = 18000, ["Module:Infobox_cyclist_tracking"] = 16000, ["Module:Infobox_gene"] = 13000, ["Module:Infobox_mapframe"] = 404000, ["Module:Infobox_military_conflict"] = 22000, ["Module:Infobox_military_conflict/styles.css"] = 22000, ["Module:Infobox_multi-lingual_name"] = 20000, ["Module:Infobox_multi-lingual_name/data"] = 20000, ["Module:Infobox_power_station"] = 3000, ["Module:Infobox_road"] = 25000, ["Module:Infobox_road/browselinks"] = 25000, ["Module:Infobox_road/errors"] = 24000, ["Module:Infobox_road/length"] = 25000, ["Module:Infobox_road/locations"] = 24000, ["Module:Infobox_road/map"] = 25000, ["Module:Infobox_road/route"] = 25000, ["Module:Infobox_road/sections"] = 24000, ["Module:Infobox_television"] = 57000, ["Module:Infobox_television_disambiguation_check"] = 63000, ["Module:Infobox_television_episode"] = 12000, ["Module:Infobox_television_season_disambiguation_check"] = 9000, ["Module:Infobox_television_season_name"] = 9500, ["Module:Internet_Archive"] = 19000, ["Module:IrelandByCountyCatNav"] = 3300, ["Module:Is_infobox_in_lead"] = 377000, ["Module:Is_instance"] = 335000, ["Module:Italic_title"] = 1110000, ["Module:Italic_title2"] = 5200, } 55575e31a45262bbf1b3a26b1bf96c3de6e0cacf Help:Infobox/user style 12 72 140 139 2023-09-30T18:44:13Z Führerredux 2 1 revision imported from [[:wikipedia:Help:Infobox/user_style]] wikitext text/x-wiki {{{heading| ==Infoboxes and user style == }}} Users can have [[WP:User style|user CSS]] that hides<!--, moves, or makes collapsible--> any infoboxes in their own browsers. To hide all infoboxes, add the following to [[Special:MyPage/common.css]] (for all [[WP:Skin|skins]], or [[Special:MyPage/skin.css]] for just the current skin), on a line by itself: <syntaxhighlight lang="css">div.mw-parser-output .infobox { display: none; }</syntaxhighlight> Alternatively, you can add the following code to [[Special:MyPage/common.js|your common.js]] or into a browser user script that is executed by an extension like [[Greasemonkey]]: <syntaxhighlight lang="js">$('.infobox').hide();</syntaxhighlight> Be aware that although{{#if:{{{guideline|}}}||, per [[WP:Manual of Style/Infoboxes]],}} all information in an infobox ideally should also be found in the main body of an article, there isn't perfect compliance with this guideline. For example, the full taxonomic hierarchy in {{tlx|Taxobox}}, and the OMIM and other medical database codes of {{tlx|Infobox disease}} are often not found in the main article content. The infobox is also often the location of the most significant, even only, image in an article. There is a userscript which removes infoboxes but moves the images contained to separate thumbnails: [[User:Maddy from Celeste/disinfobox.js]].<!-- Needs Special:Mypage/common.js options for: * Making infoboxes collapsible ** Making them auto-collapsed * Moving infoboxes to bottom of page --><noinclude> {{Documentation|content= This documentation snippet is transcluded at [[Help:Infobox]], [[Template:Infobox/doc]], [[WP:Customisation#Hiding specific messages]], [[Help:User style]], [[WP:Manual of Style/Infoboxes]], and other places where this information is relevant. As a template, this snippet takes a {{para|heading}} parameter to replace the level-2 <code>==Infoboxes and user style==</code> section heading code, as needed. E.g., for a <code>=== ... ===</code> level-3 heading: <code><nowiki>heading={{=}}{{=}}{{=}}Infoboxes and user style{{=}}{{=}}{{=}}</nowiki></code> }} </noinclude> ba4dac68eb2bdc49a32f2a11b9afd52381bf06b5 Module:Message box/ombox.css 828 73 142 141 2023-09-30T18:44:13Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Message_box/ombox.css]] text text/plain /* {{pp|small=y}} */ .ombox { margin: 4px 0; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } /* For the "small=yes" option. */ .ombox.mbox-small { font-size: 88%; line-height: 1.25em; } .ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ombox-delete { border: 2px solid #b32424; /* Red */ } .ombox-content { border: 1px solid #f28500; /* Orange */ } .ombox-style { border: 1px solid #fc3; /* Yellow */ } .ombox-move { border: 1px solid #9932cc; /* Purple */ } .ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } .ombox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .ombox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .ombox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .ombox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ombox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .ombox { margin: 4px 10%; } .ombox.mbox-small { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; width: 238px; } } 8fe3df4bb607e699eab2dbd23bd4a1a446391002 188 142 2023-09-30T18:46:09Z Führerredux 2 1 revision imported from [[:meta:Module:Message_box/ombox.css]] text text/plain /* {{pp|small=y}} */ .ombox { margin: 4px 0; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } /* For the "small=yes" option. */ .ombox.mbox-small { font-size: 88%; line-height: 1.25em; } .ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ombox-delete { border: 2px solid #b32424; /* Red */ } .ombox-content { border: 1px solid #f28500; /* Orange */ } .ombox-style { border: 1px solid #fc3; /* Yellow */ } .ombox-move { border: 1px solid #9932cc; /* Purple */ } .ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } .ombox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .ombox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .ombox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .ombox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ombox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .ombox { margin: 4px 10%; } .ombox.mbox-small { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; width: 238px; } } 8fe3df4bb607e699eab2dbd23bd4a1a446391002 Template:Hlist/styles.css 10 74 144 143 2023-09-30T18:44:14Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Hlist/styles.css]] text text/plain /* {{pp-protected|reason=match parent|small=yes}} */ /* * hlist styles are defined in core and Minerva and differ in Minerva. The * current definitions here (2023-01-01) are sufficient to override Minerva * without use of the hlist-separated class. The most problematic styles were * related to margin, padding, and the bullet. Check files listed at * [[MediaWiki talk:Common.css/to do#hlist-separated]] */ /* * TODO: When the majority of readership supports it (or some beautiful world * in which grade C support is above the minimum threshold), use :is() */ .hlist dl, .hlist ol, .hlist ul { margin: 0; padding: 0; } /* Display list items inline */ .hlist dd, .hlist dt, .hlist li { /* * don't trust the note that says margin doesn't work with inline * removing margin: 0 makes dds have margins again * We also want to reset margin-right in Minerva */ margin: 0; display: inline; } /* Display requested top-level lists inline */ .hlist.inline, .hlist.inline dl, .hlist.inline ol, .hlist.inline ul, /* Display nested lists inline */ .hlist dl dl, .hlist dl ol, .hlist dl ul, .hlist ol dl, .hlist ol ol, .hlist ol ul, .hlist ul dl, .hlist ul ol, .hlist ul ul { display: inline; } /* Hide empty list items */ .hlist .mw-empty-li { display: none; } /* TODO: :not() can maybe be used here to remove the later rule. naive test * seems to work. more testing needed. like so: *.hlist dt:not(:last-child)::after { * content: ": "; *} *.hlist dd:not(:last-child)::after, *.hlist li:not(:last-child)::after { * content: " · "; * font-weight: bold; *} */ /* Generate interpuncts */ .hlist dt::after { content: ": "; } .hlist dd::after, .hlist li::after { content: " · "; font-weight: bold; } .hlist dd:last-child::after, .hlist dt:last-child::after, .hlist li:last-child::after { content: none; } /* Add parentheses around nested lists */ .hlist dd dd:first-child::before, .hlist dd dt:first-child::before, .hlist dd li:first-child::before, .hlist dt dd:first-child::before, .hlist dt dt:first-child::before, .hlist dt li:first-child::before, .hlist li dd:first-child::before, .hlist li dt:first-child::before, .hlist li li:first-child::before { content: " ("; font-weight: normal; } .hlist dd dd:last-child::after, .hlist dd dt:last-child::after, .hlist dd li:last-child::after, .hlist dt dd:last-child::after, .hlist dt dt:last-child::after, .hlist dt li:last-child::after, .hlist li dd:last-child::after, .hlist li dt:last-child::after, .hlist li li:last-child::after { content: ")"; font-weight: normal; } /* Put ordinals in front of ordered list items */ .hlist ol { counter-reset: listitem; } .hlist ol > li { counter-increment: listitem; } .hlist ol > li::before { content: " " counter(listitem) "\a0"; } .hlist dd ol > li:first-child::before, .hlist dt ol > li:first-child::before, .hlist li ol > li:first-child::before { content: " (" counter(listitem) "\a0"; } 8c9dd9c9c00f30eead17fe10f51d183333e81f33 Module:Yesno 828 6 148 8 2023-09-30T18:46:02Z Führerredux 2 1 revision imported from [[:meta:Module:Yesno]] Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Module:Arguments 828 7 150 10 2023-09-30T18:46:02Z Führerredux 2 1 revision imported from [[:meta:Module:Arguments]] Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Module:Template translation 828 75 152 151 2023-09-30T18:46:03Z Führerredux 2 1 revision imported from [[:meta:Module:Template_translation]] Scribunto text/plain local this = {} function this.checkLanguage(subpage, default) --[[Check first if there's an any invalid character that would cause the mw.language.isKnownLanguageTag function() to throw an exception: - all ASCII controls in [\000-\031\127], - double quote ("), sharp sign (#), ampersand (&), apostrophe ('), - slash (/), colon (:), semicolon (;), lower than (<), greater than (>), - brackets and braces ([, ], {, }), pipe (|), backslash (\\) All other characters are accepted, including space and all non-ASCII characters (including \192, which is invalid in UTF-8). --]] if mw.language.isValidCode(subpage) and mw.language.isKnownLanguageTag(subpage) --[[However "SupportedLanguages" are too restrictive, as they discard many valid BCP47 script variants (only because MediaWiki still does not define automatic transliterators for them, e.g. "en-dsrt" or "fr-brai" for French transliteration in Braille), and country variants, (useful in localized data, even if they are no longer used for translations, such as zh-cn, also useful for legacy codes). We want to avoid matching subpagenames containing any uppercase letter, (even if they are considered valid in BCP 47, in which they are case-insensitive; they are not "SupportedLanguages" for MediaWiki, so they are not "KnownLanguageTags" for MediaWiki). To be more restrictive, we exclude tags * for specific uses in template subpages and unusable as language tags; * that is not ASCII and not a lowercase letter, minus-hyphen, or digit, or does not start by a letter or does not finish by a letter or digit; * or that has subtags with more than 8 characters between hyphens; * or that has two hyphens. --]] or subpage ~= "doc" and subpage ~= "layout" and subpage ~= "button" and subpage ~= "buttons" and subpage ~= "sandbox" and subpage ~= "testcase" and subpage ~= "testcases" and string.find(subpage, "^[%l][%-%d%l]*[%d%l]$") ~= nil and string.find(subpage, "[%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l]") == nil and string.find(subpage, "%-%-") == nil then return subpage end -- Otherwise there's currently no known language subpage return default end --[[Get the last subpage of an arbitrary page if it is a translation. To be used from templates. ]] function this.getLanguageSubpage(frame) local title = frame and frame.args[1] if not title or title == '' then title = mw.title.getCurrentTitle() end return this._getLanguageSubpage(title) end --[[Get the last subpage of an arbitrary page if it is a translation. To be used from Lua. ]] function this._getLanguageSubpage(title) if type(title) == 'string' then title = mw.title.new(title) end if not title then -- invalid title return nil end --[[This code does not work in all namespaces where the Translate tool works. -- It works in the main namespace on Meta because it allows subpages there -- It would not work in the main namespace of English Wikipedia (but the -- articles are monolignual on that wiki). -- On Meta-Wiki the main space uses subpages and its pages are translated. -- The Translate tool allows translatng pages in all namespaces, even if -- the namespace officially does not have subpages. -- On Meta-Wiki the Category namespace still does not have subpages enabled, -- even if they would be very useful for categorizing templates, that DO have -- subpages (for documentatio and tstboxes pages). This is a misconfiguration -- bug of Meta-Wiki. The work-around is to split the full title and then -- get the last titlepart. local subpage = title.subpageText --]] local titleparts = mw.text.split(title.fullText, '/') local subpage = titleparts[#titleparts] return this.checkLanguage(subpage, '') end --[[Get the last subpage of the current page if it is a translation. ]] function this.getCurrentLanguageSubpage() return this._getLanguageSubpage(mw.title.getCurrentTitle()) end --[[Get the first part of the language code of the subpage, before the '-'. --]] function this.getMainLanguageSubpage() parts = mw.text.split(this.getCurrentLanguageSubpage(), '-') return parts[1] end --[[Get the last subpage of the current frame if it is a translation. Not used locally. --]] function this.getFrameLanguageSubpage(frame) return this._getLanguageSubpage(frame:getParent():getTitle()) end --[[Get the language of the current page. Not used locally. --]] function this.getLanguage() local subpage = mw.title.getCurrentTitle().subpageText return this.checkLanguage(subpage, mw.language.getContentLanguage():getCode()) end --[[Get the language of the current frame. Not used locally. --]] function this.getFrameLanguage(frame) local titleparts = mw.text.split(frame:getParent():getTitle(), '/') local subpage = titleparts[#titleparts] return this.checkLanguage(subpage, mw.language.getContentLanguage():getCode()) end function this.title(namespace, basepagename, subpage) local message, title local pagename = basepagename if (subpage or '') ~= '' then pagename = pagename .. '/' .. subpage end local valid, title = xpcall(function() return mw.title.new(pagename, namespace) -- costly end, function(msg) -- catch undocumented exception (!?) -- thrown when namespace does not exist. The doc still -- says it should return a title, even in that case... message = msg end) if valid and title ~= nil and (title.id or 0) ~= 0 then return title end return { -- "pseudo" mw.title object with id = nil in case of error prefixedText = pagename, -- the only property we need below message = message -- only for debugging } end --[[If on a translation subpage (like Foobar/de), this function returns a given template in the same language, if the translation is available. Otherwise, the template is returned in its default language, without modification. This is aimed at replacing the current implementation of Template:TNTN. This version does not expand the returned template name: this solves the problem of self-recursion in TNT when translatable templates need themselves to transclude other translable templates (such as Tnavbar). --]] function this.getTranslatedTemplate(frame, withStatus) local args = frame.args local pagename = args['template'] --[[Check whether the pagename is actually in the Template namespace, or if we're transcluding a main-namespace page. (added for backward compatibility of Template:TNT) ]] local namespace, title = args['tntns'] or '' if namespace ~= '' then -- Checks for tntns parameter for custom ns. title = this.title(namespace, pagename) -- Costly else -- Supposes that set page is in ns10. namespace = 'Template' title = this.title(namespace, pagename) -- Costly if title.id == nil then -- not found in the Template namespace, assume the main namespace (for backward compatibility) namespace = '' title = this.title(namespace, pagename) -- Costly end end -- Get the last subpage and check if it matches a known language code. local subpage = args['uselang'] or '' if subpage == '' then subpage = this.getCurrentLanguageSubpage() end if subpage == '' then -- Check if a translation of the pagename exists in English local newtitle = this.title(namespace, pagename, 'en') -- Costly -- Use the translation when it exists if newtitle.id ~= nil then title = newtitle end else -- Check if a translation of the pagename exists in that language local newtitle = this.title(namespace, pagename, subpage) -- Costly if newtitle.id == nil then -- Check if a translation of the pagename exists in English newtitle = this.title(namespace, pagename, 'en') -- Costly end -- Use the translation when it exists if newtitle.id ~= nil then title = newtitle end end -- At this point the title should exist if withStatus then -- status returned to Lua function below return title.prefixedText, title.id ~= nil else -- returned directly to MediaWiki return title.prefixedText end end --[[If on a translation subpage (like Foobar/de), this function renders a given template in the same language, if the translation is available. Otherwise, the template is rendered in its default language, without modification. This is aimed at replacing the current implementation of Template:TNT. Note that translatable templates cannot transclude themselves other translatable templates, as it will recurse on TNT. Use TNTN instead to return only the effective template name to expand externally, with template parameters also provided externally. --]] function this.renderTranslatedTemplate(frame) local title, found = this.getTranslatedTemplate(frame, true) -- At this point the title should exist prior to performing the expansion -- of the template, otherwise render a red link to the missing page -- (resolved in its assumed namespace). If we don't tet this here, a -- script error would be thrown. Returning a red link is consistant with -- MediaWiki behavior when attempting to transclude inexistant templates. if not found then return '[[' .. title .. ']]' end -- Copy args pseudo-table to a proper table so we can feed it to expandTemplate. -- Then render the pagename. local args = frame.args local pargs = (frame:getParent() or {}).args local arguments = {} if (args['noshift'] or '') == '' then for k, v in pairs(pargs) do local n = tonumber(k) or 0 if n <= 0 then -- unnumbered args arguments[k] = v elseif n >= 2 then -- numbered args >= 2 need to be shifted arguments[n - 1] = v end end else -- special case where TNT is used as autotranslate -- (don't shift again what is shifted in the invokation) for k, v in pairs(pargs) do arguments[k] = v end end arguments['template'] = title -- override the existing parameter of the base template name supplied with the full name of the actual template expanded arguments['tntns'] = nil -- discard the specified namespace override arguments['uselang'] = args['uselang'] -- argument forwarded into parent frame arguments['noshift'] = args['noshift'] -- argument forwarded into parent frame return frame:expandTemplate{title = ':' .. title, args = arguments} end --[[A helper for mocking TNT in Special:TemplateSandbox. TNT breaks TemplateSandbox; mocking it with this method means templates won't be localized but at least TemplateSandbox substitutions will work properly. Won't work with complex uses. --]] function this.mockTNT(frame) local pargs = (frame:getParent() or {}).args local arguments = {} for k, v in pairs(pargs) do local n = tonumber(k) or 0 if n <= 0 then -- unnumbered args arguments[k] = v elseif n >= 2 then -- numbered args >= 2 need to be shifted arguments[n - 1] = v end end if not pargs[1] then return '' end return frame:expandTemplate{title = 'Template:' .. pargs[1], args = arguments} end return this 5d6ccce18a15ce0078fd1918b6afeb5b443f37ee Module:Message box 828 10 154 16 2023-09-30T18:46:03Z Führerredux 2 1 revision imported from [[:meta:Module:Message_box]] Scribunto text/plain require('strict') local getArgs local yesno = require('Module:Yesno') local lang = mw.language.getContentLanguage() local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image self.typeImageNeedsLink = typeData.imageNeedsLink -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s%s|alt=]]', self.typeImage or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" ) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end -- set templatestyles self.base_templatestyles = cfg.templatestyles self.templatestyles = args.templatestyles end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end local frame = mw.getCurrentFrame() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.base_templatestyles }, }) -- Add support for a single custom templatestyles sheet. Undocumented as -- need should be limited and many templates using mbox are substed; we -- don't want to spread templatestyles sheets around to arbitrary places if self.templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.templatestyles }, }) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('span') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :addClass('mbox-invalid-type') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) f2fb84f7b817d2d88747f57c40902a0d8be8158a Module:No globals 828 76 156 155 2023-09-30T18:46:04Z Führerredux 2 1 revision imported from [[:meta:Module:No_globals]] Scribunto text/plain local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then -- perf optimization here and below: do not load Module:TNT unless there is an error error(require('Module:TNT').format('I18n/No globals', 'err-read', tostring(k)), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error(require('Module:TNT').format('I18n/No globals', 'err-write', tostring(k)), 2) end rawset(t, k, v) end setmetatable(_G, mt) efcb47c74e7e2bb9a4ad8764d99a0afce8fed410 Module:Message box/configuration 828 11 158 18 2023-09-30T18:46:04Z Führerredux 2 1 revision imported from [[:meta:Module:Message_box/configuration]] Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix', 'subst'}, removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox-license.svg' }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg', imageNeedsLink = true }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } 27f00af5cf3939613e9156acd5e62a3469d03d81 Module:TableTools 828 21 160 38 2023-09-30T18:46:04Z Führerredux 2 1 revision imported from [[:meta:Module:TableTools]] Scribunto text/plain ------------------------------------------------------------------------------------ -- TableTools -- -- -- -- This module includes a number of functions for dealing with Lua tables. -- -- It is a meta-module, meant to be called from other Lua modules, and should not -- -- be called directly from #invoke. -- ------------------------------------------------------------------------------------ local libraryUtil = require('libraryUtil') local p = {} -- Define often-used variables and functions. local floor = math.floor local infinity = math.huge local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti ------------------------------------------------------------------------------------ -- isPositiveInteger -- -- This function returns true if the given value is a positive integer, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a given table key is in the array part or the -- hash part of a table. ------------------------------------------------------------------------------------ function p.isPositiveInteger(v) return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity end ------------------------------------------------------------------------------------ -- isNan -- -- This function returns true if the given number is a NaN value, and false if -- not. Although it doesn't operate on tables, it is included here as it is useful -- for determining whether a value can be a valid table key. Lua will generate an -- error if a NaN is used as a table key. ------------------------------------------------------------------------------------ function p.isNan(v) return type(v) == 'number' and v ~= v end ------------------------------------------------------------------------------------ -- shallowClone -- -- This returns a clone of a table. The value returned is a new table, but all -- subtables and functions are shared. Metamethods are respected, but the returned -- table will have no metatable of its own. ------------------------------------------------------------------------------------ function p.shallowClone(t) checkType('shallowClone', 1, t, 'table') local ret = {} for k, v in pairs(t) do ret[k] = v end return ret end ------------------------------------------------------------------------------------ -- removeDuplicates -- -- This removes duplicate values from an array. Non-positive-integer keys are -- ignored. The earliest value is kept, and all subsequent duplicate values are -- removed, but otherwise the array order is unchanged. ------------------------------------------------------------------------------------ function p.removeDuplicates(arr) checkType('removeDuplicates', 1, arr, 'table') local isNan = p.isNan local ret, exists = {}, {} for _, v in ipairs(arr) do if isNan(v) then -- NaNs can't be table keys, and they are also unique, so we don't need to check existence. ret[#ret + 1] = v else if not exists[v] then ret[#ret + 1] = v exists[v] = true end end end return ret end ------------------------------------------------------------------------------------ -- numKeys -- -- This takes a table and returns an array containing the numbers of any numerical -- keys that have non-nil values, sorted in numerical order. ------------------------------------------------------------------------------------ function p.numKeys(t) checkType('numKeys', 1, t, 'table') local isPositiveInteger = p.isPositiveInteger local nums = {} for k in pairs(t) do if isPositiveInteger(k) then nums[#nums + 1] = k end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- affixNums -- -- This takes a table and returns an array containing the numbers of keys with the -- specified prefix and suffix. For example, for the table -- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return -- {1, 3, 6}. ------------------------------------------------------------------------------------ function p.affixNums(t, prefix, suffix) checkType('affixNums', 1, t, 'table') checkType('affixNums', 2, prefix, 'string', true) checkType('affixNums', 3, suffix, 'string', true) local function cleanPattern(s) -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally. return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1') end prefix = prefix or '' suffix = suffix or '' prefix = cleanPattern(prefix) suffix = cleanPattern(suffix) local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' local nums = {} for k in pairs(t) do if type(k) == 'string' then local num = mw.ustring.match(k, pattern) if num then nums[#nums + 1] = tonumber(num) end end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- numData -- -- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table -- of subtables in the format -- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}. -- Keys that don't end with an integer are stored in a subtable named "other". The -- compress option compresses the table so that it can be iterated over with -- ipairs. ------------------------------------------------------------------------------------ function p.numData(t, compress) checkType('numData', 1, t, 'table') checkType('numData', 2, compress, 'boolean', true) local ret = {} for k, v in pairs(t) do local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$') if num then num = tonumber(num) local subtable = ret[num] or {} if prefix == '' then -- Positional parameters match the blank string; put them at the start of the subtable instead. prefix = 1 end subtable[prefix] = v ret[num] = subtable else local subtable = ret.other or {} subtable[k] = v ret.other = subtable end end if compress then local other = ret.other ret = p.compressSparseArray(ret) ret.other = other end return ret end ------------------------------------------------------------------------------------ -- compressSparseArray -- -- This takes an array with one or more nil values, and removes the nil values -- while preserving the order, so that the array can be safely traversed with -- ipairs. ------------------------------------------------------------------------------------ function p.compressSparseArray(t) checkType('compressSparseArray', 1, t, 'table') local ret = {} local nums = p.numKeys(t) for _, num in ipairs(nums) do ret[#ret + 1] = t[num] end return ret end ------------------------------------------------------------------------------------ -- sparseIpairs -- -- This is an iterator for sparse arrays. It can be used like ipairs, but can -- handle nil values. ------------------------------------------------------------------------------------ function p.sparseIpairs(t) checkType('sparseIpairs', 1, t, 'table') local nums = p.numKeys(t) local i = 0 local lim = #nums return function () i = i + 1 if i <= lim then local key = nums[i] return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- size -- -- This returns the size of a key/value pair table. It will also work on arrays, -- but for arrays it is more efficient to use the # operator. ------------------------------------------------------------------------------------ function p.size(t) checkType('size', 1, t, 'table') local i = 0 for _ in pairs(t) do i = i + 1 end return i end local function defaultKeySort(item1, item2) -- "number" < "string", so numbers will be sorted before strings. local type1, type2 = type(item1), type(item2) if type1 ~= type2 then return type1 < type2 elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then return tostring(item1) < tostring(item2) else return item1 < item2 end end ------------------------------------------------------------------------------------ -- keysToList -- -- Returns an array of the keys in a table, sorted using either a default -- comparison function or a custom keySort function. ------------------------------------------------------------------------------------ function p.keysToList(t, keySort, checked) if not checked then checkType('keysToList', 1, t, 'table') checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'}) end local arr = {} local index = 1 for k in pairs(t) do arr[index] = k index = index + 1 end if keySort ~= false then keySort = type(keySort) == 'function' and keySort or defaultKeySort table.sort(arr, keySort) end return arr end ------------------------------------------------------------------------------------ -- sortedPairs -- -- Iterates through a table, with the keys sorted using the keysToList function. -- If there are only numerical keys, sparseIpairs is probably more efficient. ------------------------------------------------------------------------------------ function p.sortedPairs(t, keySort) checkType('sortedPairs', 1, t, 'table') checkType('sortedPairs', 2, keySort, 'function', true) local arr = p.keysToList(t, keySort, true) local i = 0 return function () i = i + 1 local key = arr[i] if key ~= nil then return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- isArray -- -- Returns true if the given value is a table and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArray(v) if type(v) ~= 'table' then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- isArrayLike -- -- Returns true if the given value is iterable and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArrayLike(v) if not pcall(pairs, v) then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- invert -- -- Transposes the keys and values in an array. For example, {"a", "b", "c"} -> -- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to -- the index of the last duplicate) and NaN values are ignored. ------------------------------------------------------------------------------------ function p.invert(arr) checkType("invert", 1, arr, "table") local isNan = p.isNan local map = {} for i, v in ipairs(arr) do if not isNan(v) then map[v] = i end end return map end ------------------------------------------------------------------------------------ -- listToSet -- -- Creates a set from the array part of the table. Indexing the set by any of the -- values of the array returns true. For example, {"a", "b", "c"} -> -- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them -- never equal to any value (including other NaNs or even themselves). ------------------------------------------------------------------------------------ function p.listToSet(arr) checkType("listToSet", 1, arr, "table") local isNan = p.isNan local set = {} for _, v in ipairs(arr) do if not isNan(v) then set[v] = true end end return set end ------------------------------------------------------------------------------------ -- deepCopy -- -- Recursive deep copy function. Preserves identities of subtables. ------------------------------------------------------------------------------------ local function _deepCopy(orig, includeMetatable, already_seen) -- Stores copies of tables indexed by the original table. already_seen = already_seen or {} local copy = already_seen[orig] if copy ~= nil then return copy end if type(orig) == 'table' then copy = {} for orig_key, orig_value in pairs(orig) do copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen) end already_seen[orig] = copy if includeMetatable then local mt = getmetatable(orig) if mt ~= nil then local mt_copy = _deepCopy(mt, includeMetatable, already_seen) setmetatable(copy, mt_copy) already_seen[mt] = mt_copy end end else -- number, string, boolean, etc copy = orig end return copy end function p.deepCopy(orig, noMetatable, already_seen) checkType("deepCopy", 3, already_seen, "table", true) return _deepCopy(orig, not noMetatable, already_seen) end ------------------------------------------------------------------------------------ -- sparseConcat -- -- Concatenates all values in the table that are indexed by a number, in order. -- sparseConcat{a, nil, c, d} => "acd" -- sparseConcat{nil, b, c, d} => "bcd" ------------------------------------------------------------------------------------ function p.sparseConcat(t, sep, i, j) local arr = {} local arr_i = 0 for _, v in p.sparseIpairs(t) do arr_i = arr_i + 1 arr[arr_i] = v end return table.concat(arr, sep, i, j) end ------------------------------------------------------------------------------------ -- length -- -- Finds the length of an array, or of a quasi-array with keys such as "data1", -- "data2", etc., using an exponential search algorithm. It is similar to the -- operator #, but may return a different value when there are gaps in the array -- portion of the table. Intended to be used on data loaded with mw.loadData. For -- other tables, use #. -- Note: #frame.args in frame object always be set to 0, regardless of the number -- of unnamed template parameters, so use this function for frame.args. ------------------------------------------------------------------------------------ function p.length(t, prefix) -- requiring module inline so that [[Module:Exponential search]] which is -- only needed by this one function doesn't get millions of transclusions local expSearch = require("Module:Exponential search") checkType('length', 1, t, 'table') checkType('length', 2, prefix, 'string', true) return expSearch(function (i) local key if prefix then key = prefix .. tostring(i) else key = i end return t[key] ~= nil end) or 0 end ------------------------------------------------------------------------------------ -- inArray -- -- Returns true if valueToFind is a member of the array, and false otherwise. ------------------------------------------------------------------------------------ function p.inArray(arr, valueToFind) checkType("inArray", 1, arr, "table") -- if valueToFind is nil, error? for _, v in ipairs(arr) do if v == valueToFind then return true end end return false end return p 085e7094ac84eb0132ee65822cf3f69cd8ba3d81 Module:Infobox 828 18 162 32 2023-09-30T18:46:05Z Führerredux 2 1 revision imported from [[:meta:Module:Infobox]] Scribunto text/plain local p = {} local args = {} local origArgs = {} local root local empty_row_categories = {} local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' local has_rows = false local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = 'Hlist/styles.css' } } local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end local function fixChildBoxes(sval, tt) local function notempty( s ) return s and s:match( '%S' ) end if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval -- start moving templatestyles and categories inside of table rows local slast = '' while slast ~= s do slast = s s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1') end -- end moving templatestyles and categories inside of table rows s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) if s:match(marker) then s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') end if s:match(marker) then local subcells = mw.text.split(s, marker) s = '' for k = 1, #subcells do if k == 1 then s = s .. subcells[k] .. '</' .. tt .. '></tr>' elseif k == #subcells then local rowstyle = ' style="display:none"' if notempty(subcells[k]) then rowstyle = '' end s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] elseif notempty(subcells[k]) then if (k % 2) == 0 then s = s .. subcells[k] else s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' end end end end -- the next two lines add a newline at the end of lists for the PHP parser -- [[Special:Diff/849054481]] -- remove when [[:phab:T191516]] is fixed or OBE s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1') s = mw.ustring.gsub(s, '^(%{%|)', '\n%1') return s else return sval end end -- Cleans empty tables local function cleanInfobox() root = tostring(root) if has_rows == false then root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '') end end -- Returns the union of the values of two tables, as a sequence. local function union(t1, t2) local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix was 'data', and -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local function getArgNums(prefix) local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. local function addRow(rowArgs) if rowArgs.header and rowArgs.header ~= '_BLANK_' then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass }) root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :tag('th') :attr('colspan', '2') :addClass('infobox-header') :addClass(rowArgs.class) :addClass(args.headerclass) -- @deprecated next; target .infobox-<name> .infobox-header :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.header, 'th')) if rowArgs.data then root:wikitext( '[[Category:Pages using infobox templates with ignored data cells]]' ) end elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class }) local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) if rowArgs.label then row :tag('th') :attr('scope', 'row') :addClass('infobox-label') -- @deprecated next; target .infobox-<name> .infobox-label :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :wikitext(rowArgs.label) :done() end local dataCell = row:tag('td') dataCell :attr('colspan', not rowArgs.label and '2' or nil) :addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data') :addClass(rowArgs.class) -- @deprecated next; target .infobox-<name> .infobox(-full)-data :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.data, 'td')) else table.insert(empty_row_categories, rowArgs.data or '') end end local function renderTitle() if not args.title then return end has_rows = true has_list_class({args.titleclass}) root :tag('caption') :addClass('infobox-title') :addClass(args.titleclass) -- @deprecated next; target .infobox-<name> .infobox-title :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end has_rows = true has_list_class({ args.aboveclass }) root :tag('tr') :tag('th') :attr('colspan', '2') :addClass('infobox-above') :addClass(args.aboveclass) -- @deprecated next; target .infobox-<name> .infobox-above :cssText(args.abovestyle) :wikitext(fixChildBoxes(args.above,'th')) end local function renderBelowRow() if not args.below then return end has_rows = true has_list_class({ args.belowclass }) root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-below') :addClass(args.belowclass) -- @deprecated next; target .infobox-<name> .infobox-below :cssText(args.belowstyle) :wikitext(fixChildBoxes(args.below,'td')) end local function addSubheaderRow(subheaderArgs) if subheaderArgs.data and subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ subheaderArgs.rowclass, subheaderArgs.class }) local row = root:tag('tr') row:addClass(subheaderArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-subheader') :addClass(subheaderArgs.class) :cssText(subheaderArgs.datastyle) :cssText(subheaderArgs.rowcellstyle) :wikitext(fixChildBoxes(subheaderArgs.data, 'td')) else table.insert(empty_row_categories, subheaderArgs.data or '') end end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader') for k, num in ipairs(subheadernums) do addSubheaderRow({ data = args['subheader' .. tostring(num)], -- @deprecated next; target .infobox-<name> .infobox-subheader datastyle = args.subheaderstyle, rowcellstyle = args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function addImageRow(imageArgs) if imageArgs.data and imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ imageArgs.rowclass, imageArgs.class }) local row = root:tag('tr') row:addClass(imageArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-image') :addClass(imageArgs.class) :cssText(imageArgs.datastyle) :wikitext(fixChildBoxes(imageArgs.data, 'td')) else table.insert(empty_row_categories, imageArgs.data or '') end end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :addClass('infobox-caption') -- @deprecated next; target .infobox-<name> .infobox-caption :cssText(args.captionstyle) :wikitext(caption) end addImageRow({ data = tostring(data), -- @deprecated next; target .infobox-<name> .infobox-image datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end -- When autoheaders are turned on, preprocesses the rows local function preprocessRows() if not args.autoheaders then return end local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) local lastheader for k, num in ipairs(rownums) do if args['header' .. tostring(num)] then if lastheader then args['header' .. tostring(lastheader)] = nil end lastheader = num elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub( category_in_empty_row_pattern, '' ):match('^%S') then local data = args['data' .. tostring(num)] if data:gsub(category_in_empty_row_pattern, ''):match('%S') then lastheader = nil end end end if lastheader then args['header' .. tostring(lastheader)] = nil end end -- Gets the union of the header and data argument numbers, -- and renders them all in order local function renderRows() local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], rowclass = args['rowclass' .. tostring(num)], -- @deprecated next; target .infobox-<name> rowclass rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)] }) end end local function renderNavBar() if not args.name then return end has_rows = true root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-navbar') :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, }) end local function renderItalicTitle() local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then root:wikitext(require('Module:Italic title')._main({})) end end -- Categories in otherwise empty rows are collected in empty_row_categories. -- This function adds them to the module output. It is not affected by -- args.decat because this module should not prevent module-external categories -- from rendering. local function renderEmptyRowCategories() for _, s in ipairs(empty_row_categories) do root:wikitext(s) end end -- Render tracking categories. args.decat == turns off tracking categories. local function renderTrackingCategories() if args.decat == 'yes' then return end if args.child == 'yes' then if args.title then root:wikitext( '[[Category:Pages using embedded infobox templates with the title parameter]]' ) end elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then root:wikitext('[[Category:Articles using infobox templates with no data rows]]') end end --[=[ Loads the templatestyles for the infobox. TODO: FINISH loading base templatestyles here rather than in MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables. See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :). When we do this we should clean up the inline CSS below too. Will have to do some bizarre conversion category like with sidebar. ]=] local function loadTemplateStyles() local frame = mw.getCurrentFrame() local hlist_templatestyles = '' if lists.hlist_t.found then hlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.hlist_t.styles } } end local plainlist_templatestyles = '' if lists.plainlist_t.found then plainlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.plainlist_t.styles } } end -- See function description local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' } } local templatestyles = '' if args['templatestyles'] then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ -- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering. -- this ordering is not a guarantee because the rows of interest invoking -- each class may not be on a specific page hlist_templatestyles, plainlist_templatestyles, base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles }) end -- common functions between the child and non child cases local function structure_infobox_common() renderSubheaders() renderImages() preprocessRows() renderRows() renderBelowRow() renderNavBar() renderItalicTitle() renderEmptyRowCategories() renderTrackingCategories() cleanInfobox() end -- Specify the overall layout of the infobox, with special settings if the -- infobox is used as a 'child' inside another infobox. local function _infobox() if args.child ~= 'yes' then root = mw.html.create('table') root :addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox') :addClass(args.bodyclass) -- @deprecated next; target .infobox-<name> :cssText(args.bodystyle) has_list_class({ args.bodyclass }) renderTitle() renderAboveRow() else root = mw.html.create() root :wikitext(args.title) end structure_infobox_common() return loadTemplateStyles() .. root end -- If the argument exists and isn't blank, add it to the argument table. -- Blank arguments are treated as nil to match the behaviour of ParserFunctions. local function preprocessSingleArg(argName) if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end -- Assign the parameters with the given prefixes to the args table, in order, in -- batches of the step size specified. This is to prevent references etc. from -- appearing in the wrong order. The prefixTable should be an array containing -- tables, each of which has two possible fields, a "prefix" string and a -- "depend" table. The function always parses parameters containing the "prefix" -- string, but only parses parameters in the "depend" table if the prefix -- parameter is present and non-blank. local function preprocessArgs(prefixTable, step) if type(prefixTable) ~= 'table' then error("Non-table value detected for the prefix table", 2) end if type(step) ~= 'number' then error("Invalid step value detected", 2) end -- Get arguments without a number suffix, and check for bad input. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Invalid input detected to preprocessArgs prefix table', 2) end preprocessSingleArg(v.prefix) -- Only parse the depend parameter if the prefix parameter is present -- and not blank. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Invalid "depend" parameter value detected in preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Get arguments with number suffixes. local a = 1 -- Counter variable. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) if origArgs[prefixArgName] then -- Do another loop if any arguments are found, even blank ones. moreArgumentsExist = true preprocessSingleArg(prefixArgName) end -- Process the depend table if the prefix argument is present -- and not blank, or we are processing "prefix1" and "prefix" is -- present and not blank, and if the depend table is present. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) preprocessSingleArg(dependArgName) end end end end a = a + step end end -- Parse the data parameters in the same order that the old {{infobox}} did, so -- that references etc. will display in the expected places. Parameters that -- depend on another parameter are only processed if that parameter is present, -- to avoid phantom references appearing in article reference lists. local function parseDataParameters() preprocessSingleArg('autoheaders') preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') -- different behaviour for italics if blank or absent args['italic title'] = origArgs['italic title'] preprocessSingleArg('decat') preprocessSingleArg('templatestyles') preprocessSingleArg('child templatestyles') preprocessSingleArg('grandchild templatestyles') end -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. function p.infobox(frame) if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end parseDataParameters() return _infobox() end -- For calling via #invoke within a template function p.infoboxTemplate(frame) origArgs = {} for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end parseDataParameters() return _infobox() end return p 0ddb7e5c8426d67cd589b710efb9912ddfb67fea Module:Navbar 828 37 164 70 2023-09-30T18:46:05Z Führerredux 2 1 revision imported from [[:meta:Module:Navbar]] Scribunto text/plain local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false, false} if template then show[2] = false show[3] = false local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} -- TODO: Consider removing TableTools dependency. for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end local remove_edit_link = args.noedit if remove_edit_link then show[3] = false end return show end local function add_link(link_description, ul, is_mini, font_style) local l if link_description.url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass('nv-' .. link_description.full) :wikitext(l[1] .. link_description.link .. l[2]) :tag(is_mini and 'abbr' or 'span') :attr('title', link_description.html_title) :cssText(font_style) :wikitext(is_mini and link_description.mini or link_description.full) :done() :wikitext(l[3]) :done() end local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style) local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace) if not title then error(cfg.invalid_title .. title_text) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' -- TODO: Get link_descriptions and show into the configuration module. -- link_descriptions should be easier... local link_descriptions = { { ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', ['link'] = title.fullText, ['url'] = false }, { ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', ['link'] = talkpage, ['url'] = false }, { ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', ['link'] = title:fullUrl('action=edit'), ['url'] = true }, { ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template', ['link'] = title:fullUrl('action=history'), ['url'] = true }, { ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template', ['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true }, { ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template', ['link'] = title:fullUrl('action=watch'), ['url'] = true } } local ul = mw.html.create('ul') if has_brackets then ul:addClass(cfg.classes.brackets) :cssText(font_style) end for i, _ in ipairs(displayed_links) do if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end end return ul:done() end function p._navbar(args) -- TODO: We probably don't need both fontstyle and fontcolor... local font_style = args.fontstyle local font_color = args.fontcolor local is_collapsible = args.collapsible local is_mini = args.mini local is_plain = args.plain local collapsible_class = nil if is_collapsible then collapsible_class = cfg.classes.collapsible if not is_plain then is_mini = 1 end if font_color then font_style = (font_style or '') .. '; color: ' .. font_color .. ';' end end local navbar_style = args.style local div = mw.html.create():tag('div') div :addClass(cfg.classes.navbar) :addClass(cfg.classes.plainlinks) :addClass(cfg.classes.horizontal_list) :addClass(collapsible_class) -- we made the determination earlier :cssText(navbar_style) if is_mini then div:addClass(cfg.classes.mini) end local box_text = (args.text or cfg.box_text) .. ' ' -- the concatenated space guarantees the box text is separated if not (is_mini or is_plain) then div :tag('span') :addClass(cfg.classes.box_text) :cssText(font_style) :wikitext(box_text) end local template = args.template local displayed_links = choose_links(template, args) local has_brackets = args.brackets local title_arg = get_title_arg(is_collapsible, template) local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style) div:node(list) if is_collapsible then local title_text_class if is_mini then title_text_class = cfg.classes.collapsible_title_mini else title_text_class = cfg.classes.collapsible_title_full end div:done() :tag('div') :addClass(title_text_class) :cssText(font_style) :wikitext(args[1]) end local frame = mw.getCurrentFrame() -- hlist -> navbar is best-effort to preserve old Common.css ordering. return frame:extensionTag{ name = 'templatestyles', args = { src = cfg.hlist_templatestyles } } .. frame:extensionTag{ name = 'templatestyles', args = { src = cfg.templatestyles } } .. tostring(div:done()) end function p.navbar(frame) return p._navbar(require('Module:Arguments').getArgs(frame)) end return p 79f907e59eaa8bbf8dd50bb751933ebeaaa7eb17 Module:Navbar/configuration 828 38 166 72 2023-09-30T18:46:05Z Führerredux 2 1 revision imported from [[:meta:Module:Navbar/configuration]] Scribunto text/plain return { ['templatestyles'] = 'Module:Navbar/styles.css', ['hlist_templatestyles'] = 'Hlist/styles.css', ['box_text'] = 'This box: ', -- default text box when not plain or mini ['title_namespace'] = 'Template', -- namespace to default to for title ['invalid_title'] = 'Invalid title ', ['classes'] = { -- set a line to nil if you don't want it ['navbar'] = 'navbar', ['plainlinks'] = 'plainlinks', -- plainlinks ['horizontal_list'] = 'hlist', -- horizontal list class ['mini'] = 'navbar-mini', -- class indicating small links in the navbar ['this_box'] = 'navbar-boxtext', ['brackets'] = 'navbar-brackets', -- 'collapsible' is the key for a class to indicate the navbar is -- setting up the collapsible element in addition to the normal -- navbar. ['collapsible'] = 'navbar-collapse', ['collapsible_title_mini'] = 'navbar-ct-mini', ['collapsible_title_full'] = 'navbar-ct-full' } } b007c336b17ec4bcd4d5a9dca9f8cba301662b55 Module:Infobox/styles.css 828 19 168 34 2023-09-30T18:46:05Z Führerredux 2 1 revision imported from [[:meta:Module:Infobox/styles.css]] text text/plain /* {{pp|small=y}} */ /* * This TemplateStyles sheet deliberately does NOT include the full set of * infobox styles. We are still working to migrate all of the manual * infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]] * DO NOT ADD THEM HERE */ /* * not strictly certain these styles are necessary since the modules now * exclusively output infobox-subbox or infobox, not both * just replicating the module faithfully */ .infobox-subbox { padding: 0; border: none; margin: -3px; width: auto; min-width: 100%; font-size: 100%; clear: none; float: none; background-color: transparent; } .infobox-3cols-child { margin: auto; } .infobox .navbar { font-size: 100%; } /* T281642 */ body.skin-minerva .infobox-header, body.skin-minerva .infobox-subheader, body.skin-minerva .infobox-above, body.skin-minerva .infobox-title, body.skin-minerva .infobox-image, body.skin-minerva .infobox-full-data, body.skin-minerva .infobox-below { text-align: center; } e8de6d96f4fde53afc4a6b0fed534405ab59b0a7 Module:TNT 828 77 176 175 2023-09-30T18:46:07Z Führerredux 2 1 revision imported from [[:meta:Module:TNT]] Scribunto text/plain -- -- INTRO: (!!! DO NOT RENAME THIS PAGE !!!) -- This module allows any template or module to be copy/pasted between -- wikis without any translation changes. All translation text is stored -- in the global Data:*.tab pages on Commons, and used everywhere. -- -- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules -- -- ATTENTION: -- Please do NOT rename this module - it has to be identical on all wikis. -- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT -- Please do not modify it anywhere else, as it may get copied and override your changes. -- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT -- -- DESCRIPTION: -- The "msg" function uses a Commons dataset to translate a message -- with a given key (e.g. source-table), plus optional arguments -- to the wiki markup in the current content language. -- Use lang=xx to set language. Example: -- -- {{#invoke:TNT | msg -- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab --> -- | source-table <!-- uses a translation message with id = "source-table" --> -- | param1 }} <!-- optional parameter --> -- -- -- The "doc" function will generate the <templatedata> parameter documentation for templates. -- This way all template parameters can be stored and localized in a single Commons dataset. -- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons. -- -- {{#invoke:TNT | doc | Graph:Lines }} -- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab -- if the current page is Template:Graph:Lines/doc -- local p = {} local i18nDataset = 'I18n/Module:TNT.tab' -- Forward declaration of the local functions local sanitizeDataset, loadData, link, formatMessage function p.msg(frame) local dataset, id local params = {} local lang = nil for k, v in pairs(frame.args) do if k == 1 then dataset = mw.text.trim(v) elseif k == 2 then id = mw.text.trim(v) elseif type(k) == 'number' then params[k - 2] = mw.text.trim(v) elseif k == 'lang' and v ~= '_' then lang = mw.text.trim(v) end end return formatMessage(dataset, id, params, lang) end -- Identical to p.msg() above, but used from other lua modules -- Parameters: name of dataset, message key, optional arguments -- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.format(dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('format', 1, dataset, 'string') checkType('format', 2, key, 'string') return formatMessage(dataset, key, {...}) end -- Identical to p.msg() above, but used from other lua modules with the language param -- Parameters: language code, name of dataset, message key, optional arguments -- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.formatInLanguage(lang, dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('formatInLanguage', 1, lang, 'string') checkType('formatInLanguage', 2, dataset, 'string') checkType('formatInLanguage', 3, key, 'string') return formatMessage(dataset, key, {...}, lang) end -- Obsolete function that adds a 'c:' prefix to the first param. -- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab' function p.link(frame) return link(frame.args[1]) end function p.doc(frame) local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1]) return frame:extensionTag('templatedata', p.getTemplateData(dataset)) .. formatMessage(i18nDataset, 'edit_doc', {link(dataset)}) end function p.getTemplateData(dataset) -- TODO: add '_' parameter once lua starts reindexing properly for "all" languages local data = loadData(dataset) local names = {} for _, field in ipairs(data.schema.fields) do table.insert(names, field.name) end local params = {} local paramOrder = {} for _, row in ipairs(data.data) do local newVal = {} local name = nil for pos, columnName in ipairs(names) do if columnName == 'name' then name = row[pos] else newVal[columnName] = row[pos] end end if name then params[name] = newVal table.insert(paramOrder, name) end end -- Work around json encoding treating {"1":{...}} as an [{...}] params['zzz123']='' local json = mw.text.jsonEncode({ params=params, paramOrder=paramOrder, description=data.description }) json = string.gsub(json,'"zzz123":"",?', "") return json end -- Local functions sanitizeDataset = function(dataset) if not dataset then return nil end dataset = mw.text.trim(dataset) if dataset == '' then return nil elseif string.sub(dataset,-4) ~= '.tab' then return dataset .. '.tab' else return dataset end end loadData = function(dataset, lang) dataset = sanitizeDataset(dataset) if not dataset then error(formatMessage(i18nDataset, 'error_no_dataset', {})) end -- Give helpful error to thirdparties who try and copy this module. if not mw.ext or not mw.ext.data or not mw.ext.data.get then error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset) end local data = mw.ext.data.get(dataset, lang) if data == false then if dataset == i18nDataset then -- Prevent cyclical calls error('Missing Commons dataset ' .. i18nDataset) else error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)})) end end return data end -- Given a dataset name, convert it to a title with the 'commons:data:' prefix link = function(dataset) return 'c:Data:' .. mw.text.trim(dataset or '') end formatMessage = function(dataset, key, params, lang) for _, row in pairs(loadData(dataset, lang).data) do local id, msg = unpack(row) if id == key then local result = mw.message.newRawMessage(msg, unpack(params or {})) return result:plain() end end if dataset == i18nDataset then -- Prevent cyclical calls error('Invalid message key "' .. key .. '"') else error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)})) end end return p 2c570369c78089aef29c72768918373f61b7075d Module:Documentation/i18n 828 78 178 177 2023-09-30T18:46:07Z Führerredux 2 1 revision imported from [[:meta:Module:Documentation/i18n]] Scribunto text/plain local format = require('Module:TNT').format local i18n = {} i18n['cfg-error-msg-type'] = format('I18n/Documentation', 'cfg-error-msg-type') i18n['cfg-error-msg-empty'] = format('I18n/Documentation', 'cfg-error-msg-empty') -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. i18n['template-namespace-heading'] = format('I18n/Documentation', 'template-namespace-heading') -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. i18n['module-namespace-heading'] = format('I18n/Documentation', 'module-namespace-heading') -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. i18n['file-namespace-heading'] = format('I18n/Documentation', 'file-namespace-heading') -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. i18n['other-namespaces-heading'] = format('I18n/Documentation', 'other-namespaces-heading') -- cfg['view-link-display'] -- The text to display for "view" links. i18n['view-link-display'] = format('I18n/Documentation', 'view-link-display') -- cfg['edit-link-display'] -- The text to display for "edit" links. i18n['edit-link-display'] = format('I18n/Documentation', 'edit-link-display') -- cfg['history-link-display'] -- The text to display for "history" links. i18n['history-link-display'] = format('I18n/Documentation', 'history-link-display') -- cfg['purge-link-display'] -- The text to display for "purge" links. i18n['purge-link-display'] = format('I18n/Documentation', 'purge-link-display') -- cfg['create-link-display'] -- The text to display for "create" links. i18n['create-link-display'] = format('I18n/Documentation', 'create-link-display') return i18n 9a9f234b177a424f1fc465eb25c484eff54905c0 Template:IsDocSubpage 10 79 184 183 2023-09-30T18:46:09Z Führerredux 2 1 revision imported from [[:meta:Template:IsDocSubpage]] wikitext text/x-wiki <onlyinclude><includeonly>{{#ifexpr: ( {{#ifeq:{{lc:{{SUBPAGENAME}}}}|{{lc:{{{override|doc}}}}}|1|0}} or ( {{#ifeq:{{lc:{{#titleparts:{{FULLPAGENAME}}|-1|-2}}}}|{{lc:{{{override|doc}}}}}|1|0}} and {{#if:{{#invoke:Template translation|getLanguageSubpage}}|1|0}} ) )<!-- -->|{{{true|1}}}<!-- -->|{{{false|}}}<!-- -->}}</includeonly></onlyinclude> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --> e60f69b26953d441bf5b76229c9222f16c042ae6 Module:List 828 20 186 36 2023-09-30T18:46:09Z Führerredux 2 1 revision imported from [[:meta:Module:List]] Scribunto text/plain local libUtil = require('libraryUtil') local checkType = libUtil.checkType local mTableTools = require('Module:TableTools') local p = {} local listTypes = { ['bulleted'] = true, ['unbulleted'] = true, ['horizontal'] = true, ['ordered'] = true, ['horizontal_ordered'] = true } function p.makeListData(listType, args) -- Constructs a data table to be passed to p.renderList. local data = {} -- Classes and TemplateStyles data.classes = {} data.templatestyles = '' if listType == 'horizontal' or listType == 'horizontal_ordered' then table.insert(data.classes, 'hlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Hlist/styles.css' } } elseif listType == 'unbulleted' then table.insert(data.classes, 'plainlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Plainlist/styles.css' } } end table.insert(data.classes, args.class) -- Main div style data.style = args.style -- Indent for horizontal lists if listType == 'horizontal' or listType == 'horizontal_ordered' then local indent = tonumber(args.indent) indent = indent and indent * 1.6 or 0 if indent > 0 then data.marginLeft = indent .. 'em' end end -- List style types for ordered lists -- This could be "1, 2, 3", "a, b, c", or a number of others. The list style -- type is either set by the "type" attribute or the "list-style-type" CSS -- property. if listType == 'ordered' or listType == 'horizontal_ordered' then data.listStyleType = args.list_style_type or args['list-style-type'] data.type = args['type'] -- Detect invalid type attributes and attempt to convert them to -- list-style-type CSS properties. if data.type and not data.listStyleType and not tostring(data.type):find('^%s*[1AaIi]%s*$') then data.listStyleType = data.type data.type = nil end end -- List tag type if listType == 'ordered' or listType == 'horizontal_ordered' then data.listTag = 'ol' else data.listTag = 'ul' end -- Start number for ordered lists data.start = args.start if listType == 'horizontal_ordered' then -- Apply fix to get start numbers working with horizontal ordered lists. local startNum = tonumber(data.start) if startNum then data.counterReset = 'listitem ' .. tostring(startNum - 1) end end -- List style -- ul_style and ol_style are included for backwards compatibility. No -- distinction is made for ordered or unordered lists. data.listStyle = args.list_style -- List items -- li_style is included for backwards compatibility. item_style was included -- to be easier to understand for non-coders. data.itemStyle = args.item_style or args.li_style data.items = {} for _, num in ipairs(mTableTools.numKeys(args)) do local item = {} item.content = args[num] item.style = args['item' .. tostring(num) .. '_style'] or args['item_style' .. tostring(num)] item.value = args['item' .. tostring(num) .. '_value'] or args['item_value' .. tostring(num)] table.insert(data.items, item) end return data end function p.renderList(data) -- Renders the list HTML. -- Return the blank string if there are no list items. if type(data.items) ~= 'table' or #data.items < 1 then return '' end -- Render the main div tag. local root = mw.html.create('div') for _, class in ipairs(data.classes or {}) do root:addClass(class) end root:css{['margin-left'] = data.marginLeft} if data.style then root:cssText(data.style) end -- Render the list tag. local list = root:tag(data.listTag or 'ul') list :attr{start = data.start, type = data.type} :css{ ['counter-reset'] = data.counterReset, ['list-style-type'] = data.listStyleType } if data.listStyle then list:cssText(data.listStyle) end -- Render the list items for _, t in ipairs(data.items or {}) do local item = list:tag('li') if data.itemStyle then item:cssText(data.itemStyle) end if t.style then item:cssText(t.style) end item :attr{value = t.value} :wikitext(t.content) end return data.templatestyles .. tostring(root) end function p.renderTrackingCategories(args) local isDeprecated = false -- Tracks deprecated parameters. for k, v in pairs(args) do k = tostring(k) if k:find('^item_style%d+$') or k:find('^item_value%d+$') then isDeprecated = true break end end local ret = '' if isDeprecated then ret = ret .. '[[Category:List templates with deprecated parameters]]' end return ret end function p.makeList(listType, args) if not listType or not listTypes[listType] then error(string.format( "bad argument #1 to 'makeList' ('%s' is not a valid list type)", tostring(listType) ), 2) end checkType('makeList', 2, args, 'table') local data = p.makeListData(listType, args) local list = p.renderList(data) local trackingCategories = p.renderTrackingCategories(args) return list .. trackingCategories end for listType in pairs(listTypes) do p[listType] = function (frame) local mArguments = require('Module:Arguments') local origArgs = mArguments.getArgs(frame, { valueFunc = function (key, value) if not value or not mw.ustring.find(value, '%S') then return nil end if mw.ustring.find(value, '^%s*[%*#;:]') then return value else return value:match('^%s*(.-)%s*$') end return nil end }) -- Copy all the arguments to a new table, for faster indexing. local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.makeList(listType, args) end end return p 7a4f36a6e9cd56370bdd8207d23694124821dc1a Module:Lua banner/config 828 80 192 191 2023-09-30T18:46:11Z Führerredux 2 1 revision imported from [[:meta:Module:Lua_banner/config]] Scribunto text/plain local cfg = {} -- Don’t touch this line. -- Subpage blacklist: these subpages will not be categorized (except for the -- error category, which is always added if there is an error). -- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have -- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules, -- so they *will* have categories. All rules should be in the -- ['<subpage name>'] = true, -- format. cfg['subpage_blacklist'] = { ['doc'] = true, ['sandbox'] = true, ['sandbox2'] = true, ['testcases'] = true, } -- Allow wishes: whether wishes for conversion to Lua are allowed. -- If true, calls with zero parameters are valid, and considered to be wishes: -- The box’s text is “This template should use Lua”, and cfg['wish_category'] is -- added. If false, such calls are invalid, an error message appears, and -- cfg['error_category'] is added. cfg['allow_wishes'] = false -- Default category: this category is added if the module call contains errors -- (e.g. no module listed). A category name without namespace, or nil -- to disable categorization (not recommended). cfg['error_category'] = 'Lua templates with errors' -- Wish category: this category is added if no module is listed, and wishes are -- allowed. (Not used if wishes are not allowed.) A category name without -- namespace, or nil to disable categorization. cfg['wish_category'] = nil -- Default category: this category is added if none of the below module_categories -- matches the first module listed. A category name without namespace, or nil -- to disable categorization. cfg['default_category'] = 'Lua-based templates' -- Module categories: one of these categories is added if the first listed module -- is the listed module (e.g. {{Lua|Module:String}} adds -- [[Category:Lua String-based templates]].) Format: -- ['<module name>'] = '<category name>' -- where neither <module name> nor <category name> contains namespace. An empty -- table (i.e. no module-based categorization) will suffice on smaller wikis. cfg['module_categories'] = { ['Citation'] = 'Lua-based citation templates', ['Citation/CS1'] = 'Lua-based citation templates', } return cfg -- Don’t touch this line. 96ff2360e00fa7bf1df8fa9bea988789b8a82cab Template:Lua 10 65 194 126 2023-09-30T18:46:11Z Führerredux 2 1 revision imported from [[:meta:Template:Lua]] wikitext text/x-wiki <includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude> {{Lua|Module:Lua banner}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7 Template:Uses TemplateStyles 10 81 198 197 2023-09-30T18:46:12Z Führerredux 2 1 revision imported from [[:meta:Template:Uses_TemplateStyles]] wikitext text/x-wiki <div style="width:250px;float:right;clear:right;margin:0 0 1em 1em;border:1px solid black;-moz-border-radius:10px;-webkit-border-radius:10px;padding:10px 10px 10px 10px; background:#FFFFFF;"> <p style="margin:0 3% 0 3%;text-align:center;font-size:94%"> [[File:Farm-Fresh css add.svg|left|30px]] '''This template uses [[Help:TemplateStyles|TemplateStyles]]''' <br /> {{{1|}}} </p></div><includeonly>{{#ifeq:{{SUBPAGENAME}}|doc||[[Category:Templates that use TemplateStyles|{{PAGENAME}}]]}}</includeonly><noinclude> {{clr}} {{Documentation}}</noinclude> fed44ca463856190bcf6280438ed7ea020ad82c3 Template:Tlx 10 22 206 40 2023-09-30T18:58:45Z Führerredux 2 1 revision imported from [[:meta:Template:Tlx]] wikitext text/x-wiki #REDIRECT [[Template:Template link expanded]] {{Redirect category shell| {{R from move}} }} 1fec988ceb46cb324af228aac45d7cd25fcc9008 Module:Infobox/doc 828 84 208 207 2023-09-30T18:58:47Z Führerredux 2 1 revision imported from [[:meta:Module:Infobox/doc]] wikitext text/x-wiki {{Lua|Module:Navbar}} {{Uses TemplateStyles|Module:Infobox/styles.css}} Implements {{tlx|Infobox}} eb64e52082cc779b0e3e1c353702e778203cea42 Module:Message box/ombox.css 828 73 209 188 2023-09-30T19:04:14Z Führerredux 2 text text/plain /** * {{ombox}} (other pages message box) styles * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ table.ombox { margin: 4px 10%; border-collapse: collapse; /* Default "notice" gray */ border: 1px solid #a2a9b1; background-color: #f8f9fa; box-sizing: border-box; } /* An empty narrow cell */ .ombox td.mbox-empty-cell { border: none; padding: 0; width: 1px; } /* The message body cell(s) */ .ombox th.mbox-text, .ombox td.mbox-text { border: none; /* 0.9em left/right */ padding: 0.25em 0.9em; /* Make all mboxes the same width regardless of text length */ width: 100%; } /* The left image cell */ .ombox td.mbox-image { border: none; text-align: center; /* 0.9em left, 0px right */ /* @noflip */ padding: 2px 0 2px 0.9em; } /* The right image cell */ .ombox td.mbox-imageright { border: none; text-align: center; /* 0px left, 0.9em right */ /* @noflip */ padding: 2px 0.9em 2px 0; } table.ombox-notice { /* Gray */ border-color: #a2a9b1; } table.ombox-speedy { /* Pink */ background-color: #fee7e6; } table.ombox-speedy, table.ombox-delete { /* Red */ border-color: #b32424; border-width: 2px; } table.ombox-content { /* Orange */ border-color: #f28500; } table.ombox-style { /* Yellow */ border-color: #fc3; } table.ombox-move { /* Purple */ border-color: #9932cc; } table.ombox-protection { /* Gray-gold */ border-color: #a2a9b1; border-width: 2px; } /** * {{ombox|small=1}} styles * * These ".mbox-small" classes must be placed after all other * ".ombox" classes. "html body.mediawiki .ombox" * is so they apply only to other page message boxes. * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ /* For the "small=yes" option. */ html body.mediawiki .ombox.mbox-small { clear: right; float: right; margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } e2c21da9b2e5ea3a68e2f5a7432cbfd3cfce80a8 210 209 2023-09-30T19:06:21Z Führerredux 2 Führerredux changed the content model of the page [[Module:Message box/ombox.css]] from "plain text" to "Sanitized CSS" sanitized-css text/css /** * {{ombox}} (other pages message box) styles * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ table.ombox { margin: 4px 10%; border-collapse: collapse; /* Default "notice" gray */ border: 1px solid #a2a9b1; background-color: #f8f9fa; box-sizing: border-box; } /* An empty narrow cell */ .ombox td.mbox-empty-cell { border: none; padding: 0; width: 1px; } /* The message body cell(s) */ .ombox th.mbox-text, .ombox td.mbox-text { border: none; /* 0.9em left/right */ padding: 0.25em 0.9em; /* Make all mboxes the same width regardless of text length */ width: 100%; } /* The left image cell */ .ombox td.mbox-image { border: none; text-align: center; /* 0.9em left, 0px right */ /* @noflip */ padding: 2px 0 2px 0.9em; } /* The right image cell */ .ombox td.mbox-imageright { border: none; text-align: center; /* 0px left, 0.9em right */ /* @noflip */ padding: 2px 0.9em 2px 0; } table.ombox-notice { /* Gray */ border-color: #a2a9b1; } table.ombox-speedy { /* Pink */ background-color: #fee7e6; } table.ombox-speedy, table.ombox-delete { /* Red */ border-color: #b32424; border-width: 2px; } table.ombox-content { /* Orange */ border-color: #f28500; } table.ombox-style { /* Yellow */ border-color: #fc3; } table.ombox-move { /* Purple */ border-color: #9932cc; } table.ombox-protection { /* Gray-gold */ border-color: #a2a9b1; border-width: 2px; } /** * {{ombox|small=1}} styles * * These ".mbox-small" classes must be placed after all other * ".ombox" classes. "html body.mediawiki .ombox" * is so they apply only to other page message boxes. * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ /* For the "small=yes" option. */ html body.mediawiki .ombox.mbox-small { clear: right; float: right; margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } e2c21da9b2e5ea3a68e2f5a7432cbfd3cfce80a8 Module:Infobox/styles.css 828 19 211 168 2023-09-30T19:10:34Z Führerredux 2 Führerredux changed the content model of the page [[Module:Infobox/styles.css]] from "plain text" to "Sanitized CSS" sanitized-css text/css /* {{pp|small=y}} */ /* * This TemplateStyles sheet deliberately does NOT include the full set of * infobox styles. We are still working to migrate all of the manual * infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]] * DO NOT ADD THEM HERE */ /* * not strictly certain these styles are necessary since the modules now * exclusively output infobox-subbox or infobox, not both * just replicating the module faithfully */ .infobox-subbox { padding: 0; border: none; margin: -3px; width: auto; min-width: 100%; font-size: 100%; clear: none; float: none; background-color: transparent; } .infobox-3cols-child { margin: auto; } .infobox .navbar { font-size: 100%; } /* T281642 */ body.skin-minerva .infobox-header, body.skin-minerva .infobox-subheader, body.skin-minerva .infobox-above, body.skin-minerva .infobox-title, body.skin-minerva .infobox-image, body.skin-minerva .infobox-full-data, body.skin-minerva .infobox-below { text-align: center; } e8de6d96f4fde53afc4a6b0fed534405ab59b0a7 Template:Hlist/styles.css 10 74 212 144 2023-09-30T19:11:04Z Führerredux 2 Führerredux changed the content model of the page [[Template:Hlist/styles.css]] from "plain text" to "Sanitized CSS" sanitized-css text/css /* {{pp-protected|reason=match parent|small=yes}} */ /* * hlist styles are defined in core and Minerva and differ in Minerva. The * current definitions here (2023-01-01) are sufficient to override Minerva * without use of the hlist-separated class. The most problematic styles were * related to margin, padding, and the bullet. Check files listed at * [[MediaWiki talk:Common.css/to do#hlist-separated]] */ /* * TODO: When the majority of readership supports it (or some beautiful world * in which grade C support is above the minimum threshold), use :is() */ .hlist dl, .hlist ol, .hlist ul { margin: 0; padding: 0; } /* Display list items inline */ .hlist dd, .hlist dt, .hlist li { /* * don't trust the note that says margin doesn't work with inline * removing margin: 0 makes dds have margins again * We also want to reset margin-right in Minerva */ margin: 0; display: inline; } /* Display requested top-level lists inline */ .hlist.inline, .hlist.inline dl, .hlist.inline ol, .hlist.inline ul, /* Display nested lists inline */ .hlist dl dl, .hlist dl ol, .hlist dl ul, .hlist ol dl, .hlist ol ol, .hlist ol ul, .hlist ul dl, .hlist ul ol, .hlist ul ul { display: inline; } /* Hide empty list items */ .hlist .mw-empty-li { display: none; } /* TODO: :not() can maybe be used here to remove the later rule. naive test * seems to work. more testing needed. like so: *.hlist dt:not(:last-child)::after { * content: ": "; *} *.hlist dd:not(:last-child)::after, *.hlist li:not(:last-child)::after { * content: " · "; * font-weight: bold; *} */ /* Generate interpuncts */ .hlist dt::after { content: ": "; } .hlist dd::after, .hlist li::after { content: " · "; font-weight: bold; } .hlist dd:last-child::after, .hlist dt:last-child::after, .hlist li:last-child::after { content: none; } /* Add parentheses around nested lists */ .hlist dd dd:first-child::before, .hlist dd dt:first-child::before, .hlist dd li:first-child::before, .hlist dt dd:first-child::before, .hlist dt dt:first-child::before, .hlist dt li:first-child::before, .hlist li dd:first-child::before, .hlist li dt:first-child::before, .hlist li li:first-child::before { content: " ("; font-weight: normal; } .hlist dd dd:last-child::after, .hlist dd dt:last-child::after, .hlist dd li:last-child::after, .hlist dt dd:last-child::after, .hlist dt dt:last-child::after, .hlist dt li:last-child::after, .hlist li dd:last-child::after, .hlist li dt:last-child::after, .hlist li li:last-child::after { content: ")"; font-weight: normal; } /* Put ordinals in front of ordered list items */ .hlist ol { counter-reset: listitem; } .hlist ol > li { counter-increment: listitem; } .hlist ol > li::before { content: " " counter(listitem) "\a0"; } .hlist dd ol > li:first-child::before, .hlist dt ol > li:first-child::before, .hlist li ol > li:first-child::before { content: " (" counter(listitem) "\a0"; } 8c9dd9c9c00f30eead17fe10f51d183333e81f33 Module:Navbar/styles.css 828 39 213 74 2023-09-30T19:11:33Z Führerredux 2 Führerredux changed the content model of the page [[Module:Navbar/styles.css]] from "plain text" to "Sanitized CSS" sanitized-css text/css /* {{pp|small=yes}} */ .navbar { display: inline; font-size: 88%; font-weight: normal; } .navbar-collapse { float: left; text-align: left; } .navbar-boxtext { word-spacing: 0; } .navbar ul { display: inline-block; white-space: nowrap; line-height: inherit; } .navbar-brackets::before { margin-right: -0.125em; content: '[ '; } .navbar-brackets::after { margin-left: -0.125em; content: ' ]'; } .navbar li { word-spacing: -0.125em; } .navbar a > span, .navbar a > abbr { text-decoration: inherit; } .navbar-mini abbr { font-variant: small-caps; border-bottom: none; text-decoration: none; cursor: inherit; } .navbar-ct-full { font-size: 114%; margin: 0 7em; } .navbar-ct-mini { font-size: 114%; margin: 0 4em; } 9d4056f949b4f0b159e3d40dfb1a5f01e72f9571 Template:Extension DPL 10 85 214 2023-09-30T19:18:00Z DynamicPageList3 extension 13 Autogenerated DynamicPageList3's necessary template for content inclusion. wikitext text/x-wiki <noinclude>This page was automatically created. It serves as an anchor page for all '''[[Special:WhatLinksHere/Template:Extension_DPL|invocations]]''' of [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:DynamicPageList3 Extension:DynamicPageList3].</noinclude> 087ffd4625ae7b1fea3436ec3f929e82ee739d29 Template:Infobox 10 86 216 215 2023-09-30T19:24:56Z Führerredux 2 1 revision imported from [[:meta:Template:Infobox]] wikitext text/x-wiki {{#invoke:Infobox|infobox}}<noinclude> {{documentation}} <!-- Categories go in the /doc subpage, and interwikis go in Wikidata. --> </noinclude> adcda4ac544f8af340cf47833dc2960631593988 Module:Documentation/styles.css 828 53 217 180 2023-09-30T19:25:53Z Führerredux 2 Führerredux changed the content model of the page [[Module:Documentation/styles.css]] from "plain text" to "Sanitized CSS" sanitized-css text/css /* {{pp|small=yes}} */ .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb Module:Hatnote/styles.css 828 35 218 66 2023-09-30T19:26:08Z Führerredux 2 Führerredux changed the content model of the page [[Module:Hatnote/styles.css]] from "plain text" to "Sanitized CSS" sanitized-css text/css /* {{pp|small=y}} */ .hatnote { font-style: italic; } /* Limit structure CSS to divs because of [[Module:Hatnote inline]] */ div.hatnote { /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; } .hatnote i { font-style: normal; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .hatnote + link + .hatnote { margin-top: -0.5em; } 44680ffd6e888866df2cdfa0341af9c7b97da94c Template:Nobold/styles.css 10 15 219 26 2023-09-30T19:26:38Z Führerredux 2 Führerredux changed the content model of the page [[Template:Nobold/styles.css]] from "plain text" to "Sanitized CSS" sanitized-css text/css /* {{pp-template}} */ /* Styling for Template:Nobold */ .nobold { font-weight: normal; } 83e5f0adacf8c7984251f1fd9d11ed82ebaadf03 Module:Sidebar/styles.css 828 44 220 84 2023-09-30T19:29:38Z Führerredux 2 Führerredux changed the content model of the page [[Module:Sidebar/styles.css]] from "plain text" to "Sanitized CSS" sanitized-css text/css /* {{pp-template}} */ /* TODO: Invert width design to be "mobile first" */ .sidebar { /* TODO: Ask if we should have max-width 22em instead */ width: 22em; /* @noflip */ float: right; /* @noflip */ clear: right; /* @noflip */ margin: 0.5em 0 1em 1em; background: #f8f9fa; border: 1px solid #aaa; padding: 0.2em; text-align: center; line-height: 1.4em; font-size: 88%; border-collapse: collapse; /* Timeless has display: none on .nomobile at mobile resolutions, so we * unhide it with display: table and let precedence and proximity win. */ display: table; } /* Unfortunately, so does Minerva desktop, except Minerva drops an * !important on the declaration. So we have to be mean for Minerva users. * Mobile removes the element entirely with `wgMFRemovableClasses` in * https://github.com/wikimedia/operations-mediawiki-config/blob/master/ wmf-config/InitialiseSettings.php#L16992 * which is why displaying it categorically with display: table works. * We don't really want to expose the generic user in the wild on mobile to have * to deal with sidebars. (Maybe the ones with collapsible lists, so that * might be an improvement. That is blocked on [[:phab:T111565]].) */ body.skin-minerva .sidebar { display: table !important; /* also, minerva is way too aggressive about other stylings on tables. * TODO remove when this template gets moved to a div. plans on talk page. * We always float right on Minerva because that's a lot of extra CSS * otherwise. */ float: right !important; margin: 0.5em 0 1em 1em !important; } .sidebar-subgroup { width: 100%; margin: 0; border-spacing: 0; } .sidebar-left { /* @noflip */ float: left; /* @noflip */ clear: left; /* @noflip */ margin: 0.5em 1em 1em 0; } .sidebar-none { float: none; clear: both; /* @noflip */ margin: 0.5em 1em 1em 0; } .sidebar-outer-title { padding: 0 0.4em 0.2em; font-size: 125%; line-height: 1.2em; font-weight: bold; } .sidebar-top-image { padding: 0.4em; } .sidebar-top-caption, .sidebar-pretitle-with-top-image, .sidebar-caption { padding: 0.2em 0.4em 0; line-height: 1.2em; } .sidebar-pretitle { padding: 0.4em 0.4em 0; line-height: 1.2em; } .sidebar-title, .sidebar-title-with-pretitle { padding: 0.2em 0.8em; font-size: 145%; line-height: 1.2em; } .sidebar-title-with-pretitle { padding: 0.1em 0.4em; } .sidebar-image { padding: 0.2em 0.4em 0.4em; } .sidebar-heading { padding: 0.1em 0.4em; } .sidebar-content { padding: 0 0.5em 0.4em; } .sidebar-content-with-subgroup { padding: 0.1em 0.4em 0.2em; } .sidebar-above, .sidebar-below { padding: 0.3em 0.8em; font-weight: bold; } .sidebar-collapse .sidebar-above, .sidebar-collapse .sidebar-below { border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; } .sidebar-navbar { text-align: right; font-size: 115%; padding: 0 0.4em 0.4em; } .sidebar-list-title { padding: 0 0.4em; text-align: left; font-weight: bold; line-height: 1.6em; font-size: 105%; } /* centered text with mw-collapsible headers is finicky */ .sidebar-list-title-c { padding: 0 0.4em; text-align: center; margin: 0 3.3em; } @media (max-width: 720px) { /* users have wide latitude to set arbitrary width and margin :( "Super-specific" selector to prevent overriding this appearance by lower level sidebars too */ body.mediawiki .sidebar { width: 100% !important; clear: both; float: none !important; /* Remove when we div based; Minerva is dumb */ margin-left: 0 !important; margin-right: 0 !important; } /* TODO: We might consider making all links wrap at small resolutions and then * only introduce nowrap at higher resolutions. Do when we invert the media * query. */ } 7d621b35a37807a103b59075851fe36201204ceb Category:Infobox templates 14 87 222 221 2023-09-30T19:32:41Z Führerredux 2 1 revision imported from [[:meta:Category:Infobox_templates]] wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Help:Infobox 12 88 224 223 2023-09-30T19:33:58Z Führerredux 2 1 revision imported from [[:wikipedia:Help:Infobox]] wikitext text/x-wiki {{short description|Wikipedia help article}} {{about||a list of infoboxes|Wikipedia:List of infoboxes|and|Category:Infobox templates|the style guide|Wikipedia:Manual of Style/Infoboxes|the project|Wikipedia:WikiProject Infoboxes}} {{Wikipedia how to|H:IB}} [[File:Lundehund.png|thumb|Example of an infobox]] {{WikiProject Infoboxes sidebar}} An [[infobox]] is a fixed-format table usually added to the top right-hand corner of articles to consistently present a summary of some unifying aspect that the articles share and sometimes to improve navigation to other interrelated articles. Many infoboxes also emit structured [[metadata]] which is sourced by [[DBpedia]] and other third party re-users. The generalized infobox feature grew out of the original [[Wikipedia:How to read a taxobox|taxoboxes]] (taxonomy infoboxes) that editors developed to visually express the scientific classification of organisms. The use of infoboxes is neither required nor prohibited for any article. Whether to include an infobox, which infobox to include, and which parts of the infobox to use, is determined through [[Wikipedia:Consensus|discussion and consensus among the editors]] at each individual article. ==What infoboxes do== Infobox templates contain important facts and statistics of a type which are common to related articles. For instance, all animals have a scientific classification (species, family and so on), as well as a conservation status. Adding a {{tlx|taxobox}} to articles on animals therefore makes it easier to quickly find such information and to compare it with that of other articles. Infobox templates are like fact sheets, or sidebars, in magazine articles. They quickly summarize important points in an easy-to-read format. However, they are {{em|not}} "statistics" tables in that they (generally) only summarize material from an article<!--taxoboxes are an obvious exception, and so are element infoboxes -->—the information should still be present in the main text, partly because it may not be possible for some readers to access the contents of the infobox. In particular, if infobox templates hide long columns of data inside collapsing tables, then readers using [[screen reader|assistive technology]] may miss their presence entirely. Many infoboxes also emit metadata such as [[microformat]]s {{crossref|printworthy=y|(see [[WP:WikiProject Microformats]])}}. ==What should an infobox contain?== In general, data in infobox templates should be: * '''Comparable.''' If a lot of different subjects all share a common attribute (for instance, all people have a name and a date of birth), then it is useful to be able to compare these across different pages. This also implies that where possible, material should be presented in a standard format. * '''Concise.''' Infobox templates are "at-a-glance", and used for quickly checking facts. * '''Materially relevant to the subject.''' * '''Already cited elsewhere in the article.''' Infoboxes, like the [[Wikipedia:Manual of Style (lead section)|introduction to the article]], should primarily contain material that is expanded on and supported by citations to reliable sources elsewhere in the article. However, if necessary (e.g., because the article is currently incomplete), it is possible to include [[Wikipedia:Footnotes|footnotes]] in infoboxes. ==What should an infobox not contain?== In general, data in infobox templates should not have: * '''Excessive length.''' Long bodies of text, or very detailed statistics, belong in the article body. * '''Trivial details.''' A common problem is including material in the infobox which is trivial and would not otherwise be included in the article body: for example, a fictional character's [[blood type]] may be referenced in passing in a work, but it is not especially useful to understanding the subject. Infobox templates should not be used for details that are too trivial to include in the article body (there are some exceptions, such as chemical properties). * '''Flags.''' Flag icons should generally [[Wikipedia:Manual of Style/Icons#Avoid flag icons in infoboxes|not be used]] in infoboxes, even when there is a "country", "nationality" or equivalent field: they are unnecessarily distracting and give undue prominence to one field among many. ==Adding an infobox to an article== There are two steps required to add an infobox to an article: #Finding the infobox #Editing the article ===Finding the infobox=== In order to use an infobox in an article, an editor must know its name, parameters, and how those parameters are intended to be used. Because infoboxes are kept in a [[Wikipedia:Namespace|namespace]] separate from articles, it takes some effort to identify an infobox by name. Once the editor has the name, however, it is straightforward to look up the infobox's documentation. There are two ways in which an editor typically locates which infobox they want to use: *By browsing the set of all infoboxes via [[Wikipedia:List of infoboxes]]. *By determining the name of a particular infobox used in a similar article. For example, the article [[D-Terminal]] contains an infobox. To determine which one, simply edit the article: <syntaxhighlight lang="wikitext"> {{Infobox connector ... }} </syntaxhighlight> The "<CODE>{{Infobox connector</CODE>" identifies the markup between the enclosing braces as a use of the "<code>connector</code>" infobox. The editor can look up the documentation for the template, including a list of parameters, in the Template namespace under [[Template:Infobox connector]]. ===Editing the target article=== In accordance with [[WP:LAYOUT|Wikipedia's Manual of Style]], infoboxes should be placed at the top of an article after any [[MOS:DABINT|disambiguation links]] and [[WP:TM/MAIN|maintenance tags]]. The infobox documentation page usually contains a convenient "blank" template that can be copied directly into the target article. The template consists of opening (<CODE>{{</CODE>) and closing (<CODE>}}</CODE>) double braces that contain the name of the infobox and a list of parameters without values. An editor then fills in the value for each of the parameters to the right of the corresponding equals sign. For example: <syntaxhighlight lang="wikitext"> {{Infobox person | name = | image = | caption = ... | website = }} </syntaxhighlight> might be filled out like this: <syntaxhighlight lang="wikitext"> {{Infobox person | name = Casanova | image = Casanova self portrait.jpg | caption = A self-portrait of Casanova ... | website = }} </syntaxhighlight> In this example, the names of the parameters ("<CODE>name</CODE>", "<CODE>image</CODE>", "<CODE>caption</CODE>", "<CODE>website</CODE>") are fixed in the design of the infobox and described in its documentation. A parameter that is misspelled, falsely capitalized, or is not supported by the infobox implementation does not display at all. To find out exactly which parameters are functional, look at the infobox's template page. Anything not listed there will be ignored, even if it works in some other infobox. If you believe that another parameter needs to be added to a given infobox template, then suggest that on the infobox's talk page. The infobox documentation describes which parameters are required and which are optional. Required parameters display between triple braces (for example, <CODE>{{{requiredparametername}}}</CODE>) when previewed or published. Optional parameters may be left empty or omitted entirely. ===Troubleshooting=== If you added an infobox and it didn't display correctly, here are the common errors: * You used a made-up or invalid parameter. You can only use parameters that have been pre-programmed into ''this'' infobox template. * You misspelled the parameter name or omitted necessary punctuation (e.g., leaving out the [[underscore]] in <code>birth_place</code>). * You capitalized the parameter name. Parameters are [[case sensitive]]. Nearly all infoboxes use lowercase parameter labels. * You included the prefix <code>File:</code> before the image name (or you didn't, and it's one of the templates that requires it). * You used the parameter name more than once: only the final instance displays. ==Adding an image to an infobox== {{Main|Help:Infobox picture}} Images are generally specified using the <CODE>image</CODE> and <CODE>caption</CODE> parameters. However, the template may use a different name for this parameter. For example, {{tp|Infobox album}} uses "Cover" instead of "image" and "Caption" instead of "caption". The <CODE>image</CODE> parameter sometimes requires the [[Wikipedia:Extended image syntax]]; other times it requires only the image file name depending on the tastes of the editor who created the infobox. An editor can determine this either by experimenting (using the "preview" function) or by consulting the infobox template documentation. Many images in infoboxes should have a [[WP:ALT|special text alternative]] for people who cannot see the image. ==Combining multiple infoboxes== {{For|detailed guidance on how combine multiple infoboxes|Wikipedia:WikiProject Infoboxes/embed}} If an article requires two or more infoboxes it is often possible to combine them into one, by including the others as a module (or child-, or sub-template) of the first. Alternately, it can be useful to use {{tl|stack}} as a container for them to prevent layout problems with other images and floating elements in the article. ==Designing an infobox== {{for|detailed guidance on how to design infoboxes|Help:Designing infoboxes}} It is a good idea to seek the opinions of other editors before embarking on a design of a new infobox or redesign of an existing one. Most requirements are already met by an existing infobox and most of the remainder can be met with a tweak. Unnecessary duplication leads to clutter and article divergence. Prototype your new design in your own [[WP:USERPAGE|user space]]. Once prototyped, propose the infobox changes to the appropriate [[Wikipedia:WikiProject|WikiProject]] and gain [[Wikipedia:Consensus|consensus]] before deploying your new design in the [[WP:TMP|template namespace]]. ==Deleting an infobox== Requests to delete an infobox should be brought to the attention of [[Wikipedia:Templates for discussion]] and any [[Wikipedia:WikiProject|WikiProject]]s associated with the infobox. The WikiProject associated with the subject can usually be found at the top of the talk page of the article. A template may be merged with another rather than deleted outright. {{Help:Infobox/user style}} ==See also== {{Wikipedia glossary}} *[[Wikipedia:How to read a color infobox]] *[[Wikipedia:How to read a taxobox]] *[[Wikipedia:Help desk]] – to ask questions about using infoboxes in articles if you weren't able to find the information you need on this help page. *[[Wikipedia:Disinfoboxes]] – an essay expressing a particular viewpoint *{{sectionlink|Infobox|Wikipedia}} ---- {{Offer help}} {{Help navigation}} [[Category:Wikipedia editor help]] [[Category:Wikipedia infoboxes| ]] [[Category:Wikipedia template help]] 746ed7695c517ae9f68decf92a18e8f37695ed5e Template:Abbr 10 89 226 225 2023-09-30T19:33:59Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Abbr]] wikitext text/x-wiki <abbr {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|&quot;}}}}">{{{1|}}}</abbr><noinclude>{{Documentation}} </noinclude> 5fd53aa19ba927ce3eea9092a4fa31f881df0a6e Template:Nowrap 10 90 228 227 2023-09-30T19:33:59Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Nowrap]] wikitext text/x-wiki <span class="nowrap">{{{1}}}</span><noinclude> {{documentation}} <!-- Categories go on the /doc page; interwikis go to Wikidata. --> </noinclude> 5d0dc6b6d89b37f4356242404f46138a4017f015 Module:Redirect 828 91 230 229 2023-09-30T19:34:03Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Redirect]] Scribunto text/plain -- This module provides functions for getting the target of a redirect page. local p = {} -- Gets a mw.title object, using pcall to avoid generating script errors if we -- are over the expensive function count limit (among other possible causes). local function getTitle(...) local success, titleObj = pcall(mw.title.new, ...) if success then return titleObj else return nil end end -- Gets the name of a page that a redirect leads to, or nil if it isn't a -- redirect. function p.getTargetFromText(text) local target = string.match( text, "^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)%]%]" ) or string.match( text, "^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]" ) return target and mw.uri.decode(target, 'PATH') end -- Gets the target of a redirect. If the page specified is not a redirect, -- returns nil. function p.getTarget(page, fulltext) -- Get the title object. Both page names and title objects are allowed -- as input. local titleObj if type(page) == 'string' or type(page) == 'number' then titleObj = getTitle(page) elseif type(page) == 'table' and type(page.getContent) == 'function' then titleObj = page else error(string.format( "bad argument #1 to 'getTarget'" .. " (string, number, or title object expected, got %s)", type(page) ), 2) end if not titleObj then return nil end local targetTitle = titleObj.redirectTarget if targetTitle then if fulltext then return targetTitle.fullText else return targetTitle.prefixedText end else return nil end end --[[ -- Given a single page name determines what page it redirects to and returns the -- target page name, or the passed page name when not a redirect. The passed -- page name can be given as plain text or as a page link. -- -- Returns page name as plain text, or when the bracket parameter is given, as a -- page link. Returns an error message when page does not exist or the redirect -- target cannot be determined for some reason. --]] function p.luaMain(rname, bracket, fulltext) if type(rname) ~= "string" or not rname:find("%S") then return nil end bracket = bracket and "[[%s]]" or "%s" rname = rname:match("%[%[(.+)%]%]") or rname local target = p.getTarget(rname, fulltext) local ret = target or rname ret = getTitle(ret) if ret then if fulltext then ret = ret.fullText else ret = ret.prefixedText end return bracket:format(ret) else return nil end end -- Provides access to the luaMain function from wikitext. function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {frameOnly = true}) return p.luaMain(args[1], args.bracket, args.fulltext) or '' end -- Returns true if the specified page is a redirect, and false otherwise. function p.luaIsRedirect(page) local titleObj = getTitle(page) if not titleObj then return false end if titleObj.isRedirect then return true else return false end end -- Provides access to the luaIsRedirect function from wikitext, returning 'yes' -- if the specified page is a redirect, and the blank string otherwise. function p.isRedirect(frame) local args = require('Module:Arguments').getArgs(frame, {frameOnly = true}) if p.luaIsRedirect(args[1]) then return 'yes' else return '' end end return p a224c45940343d66f49a78b0a39b2045e2c45d20 Template:Pagetype 10 92 232 231 2023-09-30T19:34:04Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Pagetype]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:pagetype|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> b8e6aa66678cd57877ea2c607372a45070f030a7 Module:Pagetype 828 93 234 233 2023-09-30T19:34:05Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Pagetype]] Scribunto text/plain -------------------------------------------------------------------------------- -- -- -- PAGETYPE -- -- -- -- This is a meta-module intended to replace {{pagetype}} and similar -- -- templates. It automatically detects namespaces, and allows for a -- -- great deal of customisation. It can easily be ported to other -- -- wikis by changing the values in the [[Module:Pagetype/config]]. -- -- -- -------------------------------------------------------------------------------- -- Load config. local cfg = mw.loadData('Module:Pagetype/config') -- Load required modules. local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local mDisambiguation = require('Module:Disambiguation') local p = {} -- Look up a namespace argument in the args table. local function lookUpNamespaceArg(args, key) local arg = args[key] -- Convert "yes", "1" etc. to true, "no", "0" etc. to false, and leave -- other values the same. return yesno(arg, arg) end -- Append multiple values to an array local function appendMultiple(target, source) for _, value in ipairs(source) do table.insert(target, value) end end -- Get argument keys for a title's namespace local function getNamespaceArgKeys(title, cfg) local nsInfo = mw.site.namespaces[title.namespace] local customAliases = cfg.customNamespaceAliases[title.namespace] or {} local keys = {} if nsInfo.name ~= '' then table.insert(keys, nsInfo.name) end if nsInfo.canonicalName ~= nsInfo.name and nsInfo.canonicalName ~= '' then table.insert(keys, nsInfo.canonicalName) end appendMultiple(keys, nsInfo.aliases) appendMultiple(keys, customAliases) return keys end -- Get the argument for a title's namespace, if it was specified in the args -- table. local function getNamespaceArg(title, args, cfg) if title.isTalkPage then return lookUpNamespaceArg(args, cfg.talk) end for _, key in ipairs(getNamespaceArgKeys(title, cfg)) do local arg = lookUpNamespaceArg(args, mw.ustring.lower(key)) if arg ~= nil then return arg end end return nil end -- Look up a page type specific to the title's namespace local function getExplicitPageType(title, cfg) if title.isTalkPage then return cfg.talkDefault else return cfg.pagetypes[title.namespace] end end -- Get a default page type that is not specific to the title's namespace local function getDefaultPageType(args, cfg) local other = lookUpNamespaceArg(args, cfg.other) if type(other) == 'string' then return other else return cfg.otherDefault end end local function detectRedirects(title, args) local redirect = lookUpNamespaceArg(args, cfg.redirect) if redirect == false then -- Don't detect redirects if they have been specifically disallowed. return nil end -- Allow custom values for redirects. if not title.isRedirect then return nil elseif type(redirect) == 'string' then return redirect else return cfg.redirectDefault end end local function detectDisambiguationPages(title, args, cfg) if title.namespace ~= 0 then -- Only detect disambiguation pages in mainspace return nil end local dab = lookUpNamespaceArg(args, cfg.dab) if dab == false then -- Don't detect disambiguation pages if explicitly disallowed return nil end if not mDisambiguation.isDisambiguation(title:getContent()) then return nil elseif type(dab) == 'string' then return dab else return cfg.dabDefault end end -- Gets the pagetype from a class specified from the first positional -- parameter. local function getPageTypeFromClass(args, class, key, aliasTable, default) local arg = lookUpNamespaceArg(args, key) if arg == false then -- Don't check for this class if it is specifically disallowed. return nil end if aliasTable[class] then if type(arg) == 'string' then return arg else return default end end return nil end -- Get page types for mainspaces pages with an explicit class specified local function getMainNamespaceClassPageType(title, args, cfg) if title.namespace ~= 0 then return nil end local class = args[1] if type(class) == 'string' then -- Put in lower case so e.g. "na" and "NA" will both match. class = mw.ustring.lower(class) end return getPageTypeFromClass( args, class, cfg.na, cfg.naAliases, cfg.naDefault ) end -- Get page type specified by an explicit namespace argument. local function getNamespaceArgPageType(title, args, cfg) local namespaceArg = getNamespaceArg(title, args, cfg) if namespaceArg == true then -- Namespace has been explicitly enabled, so return the default for -- this namespace return getExplicitPageType(title, cfg) elseif namespaceArg == false then -- Namespace has been explicitly disabled return getDefaultPageType(args, cfg) elseif namespaceArg then -- This namespaces uses custom text return namespaceArg else return nil end end -- Whether the title is in the set of default active namespaces which are -- looked up in cfg.pagetypes. local function isInDefaultActiveNamespace(title, args, cfg) local defaultNamespacesKey = args[cfg.defaultns] if defaultNamespacesKey == cfg.defaultnsAll then return true end local defaultNamespaces if defaultNamespacesKey == cfg.defaultnsExtended then defaultNamespaces = cfg.extendedNamespaces elseif defaultNamespacesKey == cfg.defaultnsNone then defaultNamespaces = {} else defaultNamespaces = cfg.defaultNamespaces end return defaultNamespaces[title.namespace] or false end -- Get page type not specified or detected by other means local function getOtherPageType(title, args, cfg) if isInDefaultActiveNamespace(title, args, cfg) then return getExplicitPageType(title, cfg) else return getDefaultPageType(args, cfg) end end local function getPageType(title, args, cfg) return ( detectRedirects(title, args, cfg) or detectDisambiguationPages(title, args, cfg) or getMainNamespaceClassPageType(title, args, cfg) or getNamespaceArgPageType(title, args, cfg) or getOtherPageType(title, args, cfg) ) end local function shouldUseSubjectTitle(args, cfg) return not yesno(args.talk, true) and args[cfg.defaultns] ~= cfg.defaultnsAll end -- Get the Scribunto title object to fetch the page type of local function getTitle(args, cfg) local title if args.page then title = mw.title.new(args.page) if not title then return nil end else title = mw.title.getCurrentTitle() end if shouldUseSubjectTitle(args, cfg) then return title.subjectPageTitle else return title end end local function pluralize(pageType, cfg) if cfg.irregularPlurals[pageType] then return cfg.irregularPlurals[pageType] else return pageType .. cfg.plural -- often 's' end end local function capitalize(pageType) local first = mw.ustring.sub(pageType, 1, 1) local rest = mw.ustring.sub(pageType, 2) return mw.ustring.upper(first) .. rest end function p._main(args) local title = getTitle(args, cfg) local pageType = getPageType(title, args, cfg) if yesno(args.plural, false) then pageType = pluralize(pageType, cfg) end if yesno(args.caps, false) then pageType = capitalize(pageType) end return pageType end function p.main(frame) local args = getArgs(frame) return p._main(args) end return p ab72b17cbd3e423817484aedfd33b480e9ba3611 Module:Pagetype/config 828 94 236 235 2023-09-30T19:34:06Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Pagetype/config]] Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Pagetype configuration data -- -- This page holds localisation and configuration data for Module:Pagetype. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Start configuration data -- -------------------------------------------------------------------------------- -- This table holds the default page types for each namespace. Keys to this -- table should be integers that can be used as keys to mw.site.namespaces. cfg.pagetypes = { [0] = 'article', -- Main namespace [2] = 'user page', [4] = 'project page', [6] = 'file', [8] = 'interface page', -- MediaWiki namespace [10] = 'template', [12] = 'help page', [14] = 'category', [100] = 'portal', [118] = 'draft', [710] = 'Timed Text page', [828] = 'module', [2300] = 'gadget', [2302] = 'gadget definition', [-1] = 'special page', [-2] = 'file', -- Media namespace } -- This table holds the namespaces to be looked up from cfg.pagetypes by -- default. cfg.defaultNamespaces = { [0] = true, -- main [6] = true, -- file [10] = true, -- template [14] = true, -- category [828] = true, -- module } -- This table holds the namespaces to be looked up from cfg.pagetypes if -- cfg.defaultnsExtended is set. cfg.extendedNamespaces = { [0] = true, -- main [2] = true, -- user [4] = true, -- project [6] = true, -- file [8] = true, -- mediawiki [10] = true, -- template [12] = true, -- help [14] = true, -- category [100] = true, -- portal [118] = true, -- draft [828] = true, -- module } -- This table holds custom aliases for each namespace. cfg.customNamespaceAliases = { [0] = {'main'}, } -- The parameter name to set which default namespace values to be looked up from -- cfg.pagetypes. cfg.defaultns = 'defaultns' -- The value of cfg.defaultns to set all namespaces, including talk. cfg.defaultnsAll = 'all' -- The value of cfg.defaultns to set the namespaces listed in -- cfg.extendedNamespaces cfg.defaultnsExtended = 'extended' -- The value of cfg.defaultns to set no default namespaces. cfg.defaultnsNone = 'none' -- The parameter name to use for talk pages. cfg.talk = 'talk' -- The default value for talk pages. cfg.talkDefault = 'talk page' -- The parameter name to use for disambiguation pages page. cfg.dab = 'dab' -- This table holds the different possible aliases for disambiguation-class -- pages. These should be lower-case. cfg.dabAliases = { ['disambiguation'] = true, ['disambig'] = true, ['disamb'] = true, ['dab'] = true, } -- The default value for disambiguation pages. cfg.dabDefault = 'page' -- The parameter name to use for N/A-class page. cfg.na = 'na' -- This table holds the different possible aliases for N/A-class pages. These -- should be lower-case. cfg.naAliases = { ['na'] = true, ['n/a'] = true, } -- The default value for N/A-class pages. cfg.naDefault = 'page' -- The parameter name to use for redirects. cfg.redirect = 'redirect' -- The default value to use for redirects. cfg.redirectDefault = 'redirect' -- The parameter name for undefined namespaces. cfg.other = 'other' -- The value used if the module detects an undefined namespace. cfg.otherDefault = 'page' -- The usual suffix denoting a plural. cfg.plural = 's' -- This table holds plurals not formed by a simple suffix. cfg.irregularPlurals = { ["category"] = "categories" } -------------------------------------------------------------------------------- -- End configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line 5360b93ef5fd7551e38026f1b8df00bed8b34b2d Module:Namespace detect 828 95 238 237 2023-09-30T19:34:07Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Namespace_detect]] Scribunto text/plain --[[ -------------------------------------------------------------------------------- -- -- -- NAMESPACE DETECT -- -- -- -- This module implements the {{namespace detect}} template in Lua, with a -- -- few improvements: all namespaces and all namespace aliases are supported, -- -- and namespace names are detected automatically for the local wiki. The -- -- module can also use the corresponding subject namespace value if it is -- -- used on a talk page. Parameter names can be configured for different wikis -- -- by altering the values in the "cfg" table in -- -- Module:Namespace detect/config. -- -- -- -------------------------------------------------------------------------------- --]] local data = mw.loadData('Module:Namespace detect/data') local argKeys = data.argKeys local cfg = data.cfg local mappings = data.mappings local yesno = require('Module:Yesno') local mArguments -- Lazily initialise Module:Arguments local mTableTools -- Lazily initilalise Module:TableTools local ustringLower = mw.ustring.lower local p = {} local function fetchValue(t1, t2) -- Fetches a value from the table t1 for the first key in array t2 where -- a non-nil value of t1 exists. for i, key in ipairs(t2) do local value = t1[key] if value ~= nil then return value end end return nil end local function equalsArrayValue(t, value) -- Returns true if value equals a value in the array t. Otherwise -- returns false. for i, arrayValue in ipairs(t) do if value == arrayValue then return true end end return false end function p.getPageObject(page) -- Get the page object, passing the function through pcall in case of -- errors, e.g. being over the expensive function count limit. if page then local success, pageObject = pcall(mw.title.new, page) if success then return pageObject else return nil end else return mw.title.getCurrentTitle() end end -- Provided for backward compatibility with other modules function p.getParamMappings() return mappings end local function getNamespace(args) -- This function gets the namespace name from the page object. local page = fetchValue(args, argKeys.demopage) if page == '' then page = nil end local demospace = fetchValue(args, argKeys.demospace) if demospace == '' then demospace = nil end local subjectns = fetchValue(args, argKeys.subjectns) local ret if demospace then -- Handle "demospace = main" properly. if equalsArrayValue(argKeys.main, ustringLower(demospace)) then ret = mw.site.namespaces[0].name else ret = demospace end else local pageObject = p.getPageObject(page) if pageObject then if pageObject.isTalkPage then -- Get the subject namespace if the option is set, -- otherwise use "talk". if yesno(subjectns) then ret = mw.site.namespaces[pageObject.namespace].subject.name else ret = 'talk' end else ret = pageObject.nsText end else return nil -- return nil if the page object doesn't exist. end end ret = ret:gsub('_', ' ') return ustringLower(ret) end function p._main(args) -- Check the parameters stored in the mappings table for any matches. local namespace = getNamespace(args) or 'other' -- "other" avoids nil table keys local params = mappings[namespace] or {} local ret = fetchValue(args, params) --[[ -- If there were no matches, return parameters for other namespaces. -- This happens if there was no text specified for the namespace that -- was detected or if the demospace parameter is not a valid -- namespace. Note that the parameter for the detected namespace must be -- completely absent for this to happen, not merely blank. --]] if ret == nil then ret = fetchValue(args, argKeys.other) end return ret end function p.main(frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame, {removeBlanks = false}) local ret = p._main(args) return ret or '' end function p.table(frame) --[[ -- Create a wikitable of all subject namespace parameters, for -- documentation purposes. The talk parameter is optional, in case it -- needs to be excluded in the documentation. --]] -- Load modules and initialise variables. mTableTools = require('Module:TableTools') local namespaces = mw.site.namespaces local cfg = data.cfg local useTalk = type(frame) == 'table' and type(frame.args) == 'table' and yesno(frame.args.talk) -- Whether to use the talk parameter. -- Get the header names. local function checkValue(value, default) if type(value) == 'string' then return value else return default end end local nsHeader = checkValue(cfg.wikitableNamespaceHeader, 'Namespace') local aliasesHeader = checkValue(cfg.wikitableAliasesHeader, 'Aliases') -- Put the namespaces in order. local mappingsOrdered = {} for nsname, params in pairs(mappings) do if useTalk or nsname ~= 'talk' then local nsid = namespaces[nsname].id -- Add 1, as the array must start with 1; nsid 0 would be lost otherwise. nsid = nsid + 1 mappingsOrdered[nsid] = params end end mappingsOrdered = mTableTools.compressSparseArray(mappingsOrdered) -- Build the table. local ret = '{| class="wikitable"' .. '\n|-' .. '\n! ' .. nsHeader .. '\n! ' .. aliasesHeader for i, params in ipairs(mappingsOrdered) do for j, param in ipairs(params) do if j == 1 then ret = ret .. '\n|-' .. '\n| <code>' .. param .. '</code>' .. '\n| ' elseif j == 2 then ret = ret .. '<code>' .. param .. '</code>' else ret = ret .. ', <code>' .. param .. '</code>' end end end ret = ret .. '\n|-' .. '\n|}' return ret end return p a4757000273064f151f0f22dc0e139092e5ff443 Module:Namespace detect/data 828 96 240 239 2023-09-30T19:34:07Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Namespace_detect/data]] Scribunto text/plain -------------------------------------------------------------------------------- -- Namespace detect data -- -- This module holds data for [[Module:Namespace detect]] to be loaded per -- -- page, rather than per #invoke, for performance reasons. -- -------------------------------------------------------------------------------- local cfg = require('Module:Namespace detect/config') local function addKey(t, key, defaultKey) if key ~= defaultKey then t[#t + 1] = key end end -- Get a table of parameters to query for each default parameter name. -- This allows wikis to customise parameter names in the cfg table while -- ensuring that default parameter names will always work. The cfg table -- values can be added as a string, or as an array of strings. local defaultKeys = { 'main', 'talk', 'other', 'subjectns', 'demospace', 'demopage' } local argKeys = {} for i, defaultKey in ipairs(defaultKeys) do argKeys[defaultKey] = {defaultKey} end for defaultKey, t in pairs(argKeys) do local cfgValue = cfg[defaultKey] local cfgValueType = type(cfgValue) if cfgValueType == 'string' then addKey(t, cfgValue, defaultKey) elseif cfgValueType == 'table' then for i, key in ipairs(cfgValue) do addKey(t, key, defaultKey) end end cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more. end local function getParamMappings() --[[ -- Returns a table of how parameter names map to namespace names. The keys -- are the actual namespace names, in lower case, and the values are the -- possible parameter names for that namespace, also in lower case. The -- table entries are structured like this: -- { -- [''] = {'main'}, -- ['wikipedia'] = {'wikipedia', 'project', 'wp'}, -- ... -- } --]] local mappings = {} local mainNsName = mw.site.subjectNamespaces[0].name mainNsName = mw.ustring.lower(mainNsName) mappings[mainNsName] = mw.clone(argKeys.main) mappings['talk'] = mw.clone(argKeys.talk) for nsid, ns in pairs(mw.site.subjectNamespaces) do if nsid ~= 0 then -- Exclude main namespace. local nsname = mw.ustring.lower(ns.name) local canonicalName = mw.ustring.lower(ns.canonicalName) mappings[nsname] = {nsname} if canonicalName ~= nsname then table.insert(mappings[nsname], canonicalName) end for _, alias in ipairs(ns.aliases) do table.insert(mappings[nsname], mw.ustring.lower(alias)) end end end return mappings end return { argKeys = argKeys, cfg = cfg, mappings = getParamMappings() } d224f42a258bc308ef3ad8cc8686cd7a4f47d005 Module:Namespace detect/config 828 97 242 241 2023-09-30T19:34:08Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Namespace_detect/config]] Scribunto text/plain -------------------------------------------------------------------------------- -- Namespace detect configuration data -- -- -- -- This module stores configuration data for Module:Namespace detect. Here -- -- you can localise the module to your wiki's language. -- -- -- -- To activate a configuration item, you need to uncomment it. This means -- -- that you need to remove the text "-- " at the start of the line. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Parameter names -- -- These configuration items specify custom parameter names. Values added -- -- here will work in addition to the default English parameter names. -- -- To add one extra name, you can use this format: -- -- -- -- cfg.foo = 'parameter name' -- -- -- -- To add multiple names, you can use this format: -- -- -- -- cfg.foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'} -- -------------------------------------------------------------------------------- ---- This parameter displays content for the main namespace: -- cfg.main = 'main' ---- This parameter displays in talk namespaces: -- cfg.talk = 'talk' ---- This parameter displays content for "other" namespaces (namespaces for which ---- parameters have not been specified): -- cfg.other = 'other' ---- This parameter makes talk pages behave as though they are the corresponding ---- subject namespace. Note that this parameter is used with [[Module:Yesno]]. ---- Edit that module to change the default values of "yes", "no", etc. -- cfg.subjectns = 'subjectns' ---- This parameter sets a demonstration namespace: -- cfg.demospace = 'demospace' ---- This parameter sets a specific page to compare: cfg.demopage = 'page' -------------------------------------------------------------------------------- -- Table configuration -- -- These configuration items allow customisation of the "table" function, -- -- used to generate a table of possible parameters in the module -- -- documentation. -- -------------------------------------------------------------------------------- ---- The header for the namespace column in the wikitable containing the list of ---- possible subject-space parameters. -- cfg.wikitableNamespaceHeader = 'Namespace' ---- The header for the wikitable containing the list of possible subject-space ---- parameters. -- cfg.wikitableAliasesHeader = 'Aliases' -------------------------------------------------------------------------------- -- End of configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line. 0e4ff08d13c4b664d66b32c232deb129b77c1a56 Template:Short description 10 98 244 243 2023-09-30T19:34:09Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Short_description]] wikitext text/x-wiki {{#ifeq:{{lc:{{{1|}}}}}|none|<nowiki /><!--Prevents whitespace issues when used with adjacent newlines-->|<div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">{{{1|}}}{{SHORTDESC:{{{1|}}}|{{{2|}}}}}</div>}}<includeonly>{{#ifeq:{{{pagetype}}}|Disambiguation pages||{{#ifeq:{{pagetype |defaultns = all |user=exclude}}|exclude||{{#ifeq:{{#switch: {{NAMESPACENUMBER}} | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 100 | 101 | 118 | 119 | 828 | 829 | = exclude|#default=}}|exclude||[[Category:{{{pagetype|{{pagetype |defaultns = extended |plural=y}}}}} with short description]]}}}}}}</includeonly><!-- Start tracking -->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using short description with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Short description]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | pagetype | bot |plural }}<!-- -->{{#ifexpr: {{#invoke:String|len|{{{1|}}}}}>100 | [[Category:{{{pagetype|{{pagetype |defaultns = extended |plural=y}}}}} with long short description]]}}<!-- --><includeonly>{{#if:{{{1|}}}||[[Category:Pages with empty short description]]}}</includeonly><!-- -->{{Short description/lowercasecheck|{{{1|}}}}}<!-- -->{{Main other |{{SDcat |sd={{{1|}}} }} }}<noinclude> {{Documentation}} </noinclude> f175a6d61b40a87adb43e2dd4f73c7979759b34c Template:Short description/lowercasecheck 10 99 246 245 2023-09-30T19:34:11Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Short_description/lowercasecheck]] wikitext text/x-wiki {{#ifeq:<!--test first character for lower-case letter-->{{#invoke:string|find|1={{{1|}}}|2=^%l|plain=false}}|1 |<!-- first character is a lower case letter; test against whitelist -->{{#switch: {{First word|{{{1|}}}}}<!--begin whitelist--> |c. <!--for circa--> |gTLD |iMac |iOS |iOS, |iPad |iPhone |iTunes |macOS |none |pH |pH-dependent=<!-- end whitelist; short description starts with an allowed lower-case string; whitelist matched; do nothing --> |#default=<!-- apply category to track lower-case short descriptions -->{{main other|[[Category:Pages with lower-case short description|{{trim|{{{1|}}}}}]]}}{{Testcases other|{{red|CATEGORY APPLIED}}}}<!-- end whitelist test -->}} |<!-- short description does not start with lower-case letter; do nothing; end lower-case test --> }}<noinclude> {{documentation}} </noinclude> 9a6d4db14b74614625fd234b4f8ee3c8e1a235c0 Template:Edit 10 100 248 247 2023-09-30T19:34:15Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Edit]] wikitext text/x-wiki <span class="noprint plainlinks" title="{{#if:{{{tooltip|}}}|{{{tooltip}}}|Edit {{{1}}}}}">[{{fullurl:{{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}|action=edit{{#if:{{{section|}}}|&section={{{section}}}}}{{#if:{{{editintro|}}}|&editintro={{urlencode:{{{editintro}}}|wiki}}}}{{#if:{{{preload|}}}|&preload={{urlencode:{{{preload}}}|wiki}}}}{{#if:{{{preloadtitle|}}}|&preloadtitle={{urlencode:{{{preloadtitle}}}}}}}}} {{{2|edit}}}]</span><noinclude> {{documentation}} </noinclude> 20ae9613e64bbdd279f1d1c7a3d2ddf64d1b1b48 Template:Namespace detect 10 101 250 249 2023-09-30T19:34:15Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Namespace_detect]] wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> b4af86f91bea873fdb8145e7809511fed3a610ce Template:Main 10 102 252 251 2023-09-30T19:34:16Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Main]] wikitext text/x-wiki <includeonly>{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 99ebf54e265aa9354bc4861d3b0da913f1441ede Template:Small 10 103 254 253 2023-09-30T19:34:16Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Small]] wikitext text/x-wiki <span style="font-size:85%;">{{{1}}}</span><includeonly>{{SAFESUBST:#if:{{{1|}}}||[[Category:Pages using small with an empty input parameter]]}}</includeonly><noinclude> {{Documentation}}<!--Categories and interwikis go in the /doc sub-page.--> </noinclude> 76d3535c2917cc3bfb1b032506073faa15e1a480 Template:Smaller 10 104 256 255 2023-09-30T19:34:17Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Smaller]] wikitext text/x-wiki #REDIRECT [[Template:Small]] {{r from merge}} 2209ecdc4a987eb3d73f648941a3daaed04cd5d5 Module:Labelled list hatnote 828 105 258 257 2023-09-30T19:34:19Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Labelled_list_hatnote]] Scribunto text/plain -------------------------------------------------------------------------------- -- Labelled list -- -- -- -- This module does the core work of creating a hatnote composed of a list -- -- prefixed by a colon-terminated label, i.e. "LABEL: [andList of pages]", -- -- for {{see also}} and similar templates. -- -------------------------------------------------------------------------------- local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local yesno --initialize lazily local p = {} -- Defaults global to this module local defaults = { label = 'See also', --Final fallback for label argument labelForm = '%s: %s', prefixes = {'label', 'label ', 'l'}, template = 'Module:Labelled list hatnote' } -- Localizable message strings local msg = { errorSuffix = '#Errors', noInputWarning = 'no page names specified', noOutputWarning = "'''[[%s]] — no output: none of the target pages exist.'''" } -- Helper function that pre-combines display parameters into page arguments. -- Also compresses sparse arrays, as a desirable side-effect. function p.preprocessDisplays (args, prefixes) -- Prefixes specify which parameters, in order, to check for display options -- They each have numbers auto-appended, e.g. 'label1', 'label 1', & 'l1' prefixes = prefixes or defaults.prefixes local indices = {} local sparsePages = {} for k, v in pairs(args) do if type(k) == 'number' then indices[#indices + 1] = k local display for i = 1, #prefixes do display = args[prefixes[i] .. k] if display then break end end sparsePages[k] = display and string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v end end table.sort(indices) local pages = {} for k, v in ipairs(indices) do pages[#pages + 1] = sparsePages[v] end return pages end --Helper function to get a page target from a processed page string --e.g. "Page|Label" → "Page" or "Target" → "Target" local function getTarget(pagename) local pipe = string.find(pagename, '|') return string.sub(pagename, 0, pipe and pipe - 1 or nil) end -- Produces a labelled pages-list hatnote. -- The main frame (template definition) takes 1 or 2 arguments, for a singular -- and (optionally) plural label respectively: -- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}} -- The resulting template takes pagename & label parameters normally. function p.labelledList (frame) mArguments = require('Module:Arguments') yesno = require('Module:Yesno') local labels = {frame.args[1] or defaults.label} labels[2] = frame.args[2] or labels[1] labels[3] = frame.args[3] --no defaulting labels[4] = frame.args[4] --no defaulting local template = frame:getParent():getTitle() local args = mArguments.getArgs(frame, {parentOnly = true}) local pages = p.preprocessDisplays(args) local options = { category = yesno(args.category), extraclasses = frame.args.extraclasses, ifexists = yesno(frame.args.ifexists), namespace = frame.args.namespace or args.namespace, selfref = yesno(frame.args.selfref or args.selfref), template = template } return p._labelledList(pages, labels, options) end function p._labelledList (pages, labels, options) if options.ifexists then for k = #pages, 1, -1 do --iterate backwards to allow smooth removals local v = pages[k] local title = mw.title.new(getTarget(v), namespace) if (v == '') or title == nil or not title.exists then table.remove(pages, k) end end end labels = labels or {} label = (#pages == 1 and labels[1] or labels[2]) or defaults.label for k, v in pairs(pages) do if mHatnote.findNamespaceId(v) ~= 0 then label = ( #pages == 1 and (labels[3] or labels[1] or defaults.label) or (labels[4] or labels[2] or defaults.label) ) or defaults.label end end if #pages == 0 then if options.ifexists then mw.addWarning( string.format( msg.noOutputWarning, options.template or defaults.template ) ) return '' else return mHatnote.makeWikitextError( msg.noInputWarning, (options.template or defaults.template) .. msg.errorSuffix, options.category ) end end local text = string.format( options.labelForm or defaults.labelForm, label, mHatlist.andList(pages, true) ) local hnOptions = { extraclasses = options.extraclasses, selfref = options.selfref } return mHatnote._hatnote(text, hnOptions) end return p b7a8ba27cf6195e6427701b94e8d2acad3c40a21 Module:Navbox 828 106 260 259 2023-09-30T19:34:20Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Navbox]] Scribunto text/plain require('strict') local p = {} local navbar = require('Module:Navbar')._navbar local cfg = mw.loadData('Module:Navbox/configuration') local getArgs -- lazily initialized local args local format = string.format local function striped(wikitext, border) -- Return wikitext with markers replaced for odd/even striping. -- Child (subgroup) navboxes are flagged with a category that is removed -- by parent navboxes. The result is that the category shows all pages -- where a child navbox is not contained in a parent navbox. local orphanCat = cfg.category.orphan if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then -- No change; striping occurs in outermost navbox. return wikitext .. orphanCat end local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part if args[cfg.arg.evenodd] then if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then first, second = second, first else first = args[cfg.arg.evenodd] second = first end end local changer if first == second then changer = first else local index = 0 changer = function (code) if code == '0' then -- Current occurrence is for a group before a nested table. -- Set it to first as a valid although pointless class. -- The next occurrence will be the first row after a title -- in a subgroup and will also be first. index = 0 return first end index = index + 1 return index % 2 == 1 and first or second end end local regex = orphanCat:gsub('([%[%]])', '%%%1') return (wikitext:gsub(regex, ''):gsub(cfg.marker.regex, changer)) -- () omits gsub count end local function processItem(item, nowrapitems) if item:sub(1, 2) == '{|' then -- Applying nowrap to lines in a table does not make sense. -- Add newlines to compensate for trim of x in |parm=x in a template. return '\n' .. item ..'\n' end if nowrapitems == cfg.keyword.nowrapitems_yes then local lines = {} for line in (item .. '\n'):gmatch('([^\n]*)\n') do local prefix, content = line:match('^([*:;#]+)%s*(.*)') if prefix and not content:match(cfg.pattern.nowrap) then line = format(cfg.nowrap_item, prefix, content) end table.insert(lines, line) end item = table.concat(lines, '\n') end if item:match('^[*:;#]') then return '\n' .. item ..'\n' end return item end local function has_navbar() return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain and ( args[cfg.arg.name] or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, '') ~= cfg.pattern.navbox ) end local function renderNavBar(titleCell) if has_navbar() then titleCell:wikitext(navbar{ [cfg.navbar.name] = args[cfg.arg.name], [cfg.navbar.mini] = 1, [cfg.navbar.fontstyle] = (args[cfg.arg.basestyle] or '') .. ';' .. (args[cfg.arg.titlestyle] or '') .. ';background:none transparent;border:none;box-shadow:none;padding:0;' }) end end local function renderTitleRow(tbl) if not args[cfg.arg.title] then return end local titleRow = tbl:tag('tr') local titleCell = titleRow:tag('th'):attr('scope', 'col') local titleColspan = 2 if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end if args[cfg.arg.image] then titleColspan = titleColspan + 1 end titleCell :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.titlestyle]) :addClass(cfg.class.navbox_title) :attr('colspan', titleColspan) renderNavBar(titleCell) titleCell :tag('div') -- id for aria-labelledby attribute :attr('id', mw.uri.anchorEncode(args[cfg.arg.title])) :addClass(args[cfg.arg.titleclass]) :css('font-size', '114%') :css('margin', '0 4em') :wikitext(processItem(args[cfg.arg.title])) end local function getAboveBelowColspan() local ret = 2 if args[cfg.arg.imageleft] then ret = ret + 1 end if args[cfg.arg.image] then ret = ret + 1 end return ret end local function renderAboveRow(tbl) if not args[cfg.arg.above] then return end tbl:tag('tr') :tag('td') :addClass(cfg.class.navbox_abovebelow) :addClass(args[cfg.arg.aboveclass]) :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.abovestyle]) :attr('colspan', getAboveBelowColspan()) :tag('div') -- id for aria-labelledby attribute, if no title :attr('id', (not args[cfg.arg.title]) and mw.uri.anchorEncode(args[cfg.arg.above]) or nil) :wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems])) end local function renderBelowRow(tbl) if not args[cfg.arg.below] then return end tbl:tag('tr') :tag('td') :addClass(cfg.class.navbox_abovebelow) :addClass(args[cfg.arg.belowclass]) :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.belowstyle]) :attr('colspan', getAboveBelowColspan()) :tag('div') :wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems])) end local function renderListRow(tbl, index, listnum, listnums_size) local row = tbl:tag('tr') if index == 1 and args[cfg.arg.imageleft] then row :tag('td') :addClass(cfg.class.noviewer) :addClass(cfg.class.navbox_image) :addClass(args[cfg.arg.imageclass]) :css('width', '1px') -- Minimize width :css('padding', '0 2px 0 0') :cssText(args[cfg.arg.imageleftstyle]) :attr('rowspan', listnums_size) :tag('div') :wikitext(processItem(args[cfg.arg.imageleft])) end local group_and_num = format(cfg.arg.group_and_num, listnum) local groupstyle_and_num = format(cfg.arg.groupstyle_and_num, listnum) if args[group_and_num] then local groupCell = row:tag('th') -- id for aria-labelledby attribute, if lone group with no title or above if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then groupCell :attr('id', mw.uri.anchorEncode(args[cfg.arg.group1])) end groupCell :attr('scope', 'row') :addClass(cfg.class.navbox_group) :addClass(args[cfg.arg.groupclass]) :cssText(args[cfg.arg.basestyle]) -- If groupwidth not specified, minimize width :css('width', args[cfg.arg.groupwidth] or '1%') groupCell :cssText(args[cfg.arg.groupstyle]) :cssText(args[groupstyle_and_num]) :wikitext(args[group_and_num]) end local listCell = row:tag('td') if args[group_and_num] then listCell :addClass(cfg.class.navbox_list_with_group) else listCell:attr('colspan', 2) end if not args[cfg.arg.groupwidth] then listCell:css('width', '100%') end local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing if index % 2 == 1 then rowstyle = args[cfg.arg.oddstyle] else rowstyle = args[cfg.arg.evenstyle] end local list_and_num = format(cfg.arg.list_and_num, listnum) local listText = args[list_and_num] local oddEven = cfg.marker.oddeven if listText:sub(1, 12) == '</div><table' then -- Assume list text is for a subgroup navbox so no automatic striping for this row. oddEven = listText:find(cfg.pattern.navbox_title) and cfg.marker.restart or cfg.class.navbox_odd_part end local liststyle_and_num = format(cfg.arg.liststyle_and_num, listnum) local listclass_and_num = format(cfg.arg.listclass_and_num, listnum) listCell :css('padding', '0') :cssText(args[cfg.arg.liststyle]) :cssText(rowstyle) :cssText(args[liststyle_and_num]) :addClass(cfg.class.navbox_list) :addClass(cfg.class.navbox_part .. oddEven) :addClass(args[cfg.arg.listclass]) :addClass(args[listclass_and_num]) :tag('div') :css('padding', (index == 1 and args[cfg.arg.list1padding]) or args[cfg.arg.listpadding] or '0 0.25em' ) :wikitext(processItem(listText, args[cfg.arg.nowrapitems])) if index == 1 and args[cfg.arg.image] then row :tag('td') :addClass(cfg.class.noviewer) :addClass(cfg.class.navbox_image) :addClass(args[cfg.arg.imageclass]) :css('width', '1px') -- Minimize width :css('padding', '0 0 0 2px') :cssText(args[cfg.arg.imagestyle]) :attr('rowspan', listnums_size) :tag('div') :wikitext(processItem(args[cfg.arg.image])) end end local function has_list_class(htmlclass) local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } for arg, _ in pairs(args) do if type(arg) == 'string' and mw.ustring.find(arg, cfg.pattern.class) then for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then return true end end end end return false end -- there are a lot of list classes in the wild, so we add their TemplateStyles local function add_list_styles() local frame = mw.getCurrentFrame() local function add_list_templatestyles(htmlclass, templatestyles) if has_list_class(htmlclass) then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local hlist_styles = add_list_templatestyles('hlist', cfg.hlist_templatestyles) local plainlist_styles = add_list_templatestyles('plainlist', cfg.plainlist_templatestyles) -- a second workaround for [[phab:T303378]] -- when that issue is fixed, we can actually use has_navbar not to emit the -- tag here if we want if has_navbar() and hlist_styles == '' then hlist_styles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.hlist_templatestyles } } end -- hlist -> plainlist is best-effort to preserve old Common.css ordering. -- this ordering is not a guarantee because most navboxes will emit only -- one of these classes [hlist_note] return hlist_styles .. plainlist_styles end local function needsHorizontalLists(border) if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then return false end return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist) end local function hasBackgroundColors() for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle, cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do if tostring(args[key]):find('background', 1, true) then return true end end return false end local function hasBorders() for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do if tostring(args[key]):find('border', 1, true) then return true end end return false end local function isIllegible() local styleratio = require('Module:Color contrast')._styleratio for key, style in pairs(args) do if tostring(key):match(cfg.pattern.style) then if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then return true end end end return false end local function getTrackingCategories(border) local cats = {} if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end if isIllegible() then table.insert(cats, cfg.category.illegible) end if hasBorders() then table.insert(cats, cfg.category.borders) end return cats end local function renderTrackingCategories(builder, border) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 then return end -- not in template space local subpage = title.subpageText if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox or subpage == cfg.keyword.subpage_testcases then return end for _, cat in ipairs(getTrackingCategories(border)) do builder:wikitext('[[Category:' .. cat .. ']]') end end local function renderMainTable(border, listnums) local tbl = mw.html.create('table') :addClass(cfg.class.nowraplinks) :addClass(args[cfg.arg.bodyclass]) local state = args[cfg.arg.state] if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then if state == cfg.keyword.state_collapsed then state = cfg.class.collapsed end tbl :addClass(cfg.class.collapsible) :addClass(state or cfg.class.autocollapse) end tbl:css('border-spacing', 0) if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then tbl :addClass(cfg.class.navbox_subgroup) :cssText(args[cfg.arg.bodystyle]) :cssText(args[cfg.arg.style]) else -- regular navbox - bodystyle and style will be applied to the wrapper table tbl :addClass(cfg.class.navbox_inner) :css('background', 'transparent') :css('color', 'inherit') end tbl:cssText(args[cfg.arg.innerstyle]) renderTitleRow(tbl) renderAboveRow(tbl) local listnums_size = #listnums for i, listnum in ipairs(listnums) do renderListRow(tbl, i, listnum, listnums_size) end renderBelowRow(tbl) return tbl end local function add_navbox_styles(hiding_templatestyles) local frame = mw.getCurrentFrame() -- This is a lambda so that it doesn't need the frame as a parameter local function add_user_styles(templatestyles) if templatestyles and templatestyles ~= '' then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } end return '' end -- get templatestyles. load base from config so that Lua only needs to do -- the work once of parser tag expansion local base_templatestyles = cfg.templatestyles local templatestyles = add_user_styles(args[cfg.arg.templatestyles]) local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles]) -- The 'navbox-styles' div exists to wrap the styles to work around T200206 -- more elegantly. Instead of combinatorial rules, this ends up being linear -- number of CSS rules. return mw.html.create('div') :addClass(cfg.class.navbox_styles) :wikitext( add_list_styles() .. -- see [hlist_note] applied to 'before base_templatestyles' base_templatestyles .. templatestyles .. child_templatestyles .. table.concat(hiding_templatestyles) ) :done() end -- work around [[phab:T303378]] -- for each arg: find all the templatestyles strip markers, insert them into a -- table. then remove all templatestyles markers from the arg local function move_hiding_templatestyles(args) local gfind = string.gfind local gsub = string.gsub local templatestyles_markers = {} local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)' for k, arg in pairs(args) do for marker in gfind(arg, strip_marker_pattern) do table.insert(templatestyles_markers, marker) end args[k] = gsub(arg, strip_marker_pattern, '') end return templatestyles_markers end function p._navbox(navboxArgs) args = navboxArgs local hiding_templatestyles = move_hiding_templatestyles(args) local listnums = {} for k, _ in pairs(args) do if type(k) == 'string' then local listnum = k:match(cfg.pattern.listnum) if listnum then table.insert(listnums, tonumber(listnum)) end end end table.sort(listnums) local border = mw.text.trim(args[cfg.arg.border] or args[1] or '') if border == cfg.keyword.border_child then border = cfg.keyword.border_subgroup end -- render the main body of the navbox local tbl = renderMainTable(border, listnums) local res = mw.html.create() -- render the appropriate wrapper for the navbox, based on the border param if border == cfg.keyword.border_none then res:node(add_navbox_styles(hiding_templatestyles)) local nav = res:tag('div') :attr('role', 'navigation') :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then nav:attr( 'aria-labelledby', mw.uri.anchorEncode( args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1] ) ) else nav:attr('aria-label', cfg.aria_label) end elseif border == cfg.keyword.border_subgroup then -- We assume that this navbox is being rendered in a list cell of a -- parent navbox, and is therefore inside a div with padding:0em 0.25em. -- We start with a </div> to avoid the padding being applied, and at the -- end add a <div> to balance out the parent's </div> res :wikitext('</div>') :node(tbl) :wikitext('<div>') else res:node(add_navbox_styles(hiding_templatestyles)) local nav = res:tag('div') :attr('role', 'navigation') :addClass(cfg.class.navbox) :addClass(args[cfg.arg.navboxclass]) :cssText(args[cfg.arg.bodystyle]) :cssText(args[cfg.arg.style]) :css('padding', '3px') :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then nav:attr( 'aria-labelledby', mw.uri.anchorEncode(args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]) ) else nav:attr('aria-label', cfg.aria_label) end end if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then renderTrackingCategories(res, border) end return striped(tostring(res), border) end function p.navbox(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end args = getArgs(frame, {wrappers = {cfg.pattern.navbox}}) -- Read the arguments in the order they'll be output in, to make references -- number in the right order. local _ _ = args[cfg.arg.title] _ = args[cfg.arg.above] -- Limit this to 20 as covering 'most' cases (that's a SWAG) and because -- iterator approach won't work here for i = 1, 20 do _ = args[format(cfg.arg.group_and_num, i)] _ = args[format(cfg.arg.list_and_num, i)] end _ = args[cfg.arg.below] return p._navbox(args) end return p 05be9a97c035ab3f0fac69423779e261949d473c Module:Navbox/configuration 828 107 262 261 2023-09-30T19:34:20Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Navbox/configuration]] Scribunto text/plain return { aria_label = 'Navbox', nowrap_item = '%s<span class="nowrap">%s</span>', templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Module:Navbox/styles.css' } }, hlist_templatestyles = 'Hlist/styles.css', plainlist_templatestyles = 'Plainlist/styles.css', -- do not localize marker table marker = { oddeven = '\127_ODDEVEN_\127', restart = '\127_ODDEVEN0_\127', regex = '\127_ODDEVEN(%d?)_\127' }, category = { orphan = '[[Category:Navbox orphans]]', horizontal_lists = 'Navigational boxes without horizontal lists', background_colors = 'Navboxes using background colours', illegible = 'Potentially illegible navboxes', borders = 'Navboxes using borders', }, keyword = { border_subgroup = 'subgroup', border_child = 'child', border_none = 'none', evenodd_swap = 'swap', navbar_off = 'off', navbar_plain = 'plain', nocat_false = 'false', nowrapitems_yes = 'yes', orphan_yes = 'yes', state_collapsed = 'collapsed', state_off = 'off', state_plain = 'plain', subpage_doc = 'doc', subpage_sandbox = 'sandbox', subpage_testcases = 'testcases', tracking_no = 'no' }, class = { autocollapse = 'autocollapse', collapsible = 'mw-collapsible', collapsed = 'mw-collapsed', -- Warning navbox = 'navbox', -- WMF currently hides 'navbox' from mobile, -- so you probably shouldn't change the navbox class. navbox_abovebelow = 'navbox-abovebelow', navbox_group = 'navbox-group', navbox_image = 'navbox-image', navbox_inner = 'navbox-inner', navbox_list = 'navbox-list', navbox_list_with_group = 'navbox-list-with-group', navbox_part = 'navbox-', -- do not l10n navbox_styles = 'navbox-styles', navbox_subgroup = 'navbox-subgroup', navbox_title = 'navbox-title', -- l10n only if you change pattern.navbox_title below navbox_odd_part = 'odd', -- do not l10n navbox_even_part = 'even', -- do not l10n nomobile = 'nomobile', nowraplinks = 'nowraplinks', noviewer = 'noviewer' -- used to remove images from MediaViewer }, pattern = { listnum = '^list(%d+)$', class = 'class', sandbox = '/sandbox$', navbox = 'Template:Navbox', nowrap = '^<span class="nowrap">', style = 'style$', navbox_title = '<th[^>]*"navbox%-title"', hlist = 'hlist', plainlist = 'plainlist', }, arg = { above = 'above', aboveclass = 'aboveclass', abovestyle = 'abovestyle', basestyle = 'basestyle', bodyclass = 'bodyclass', bodystyle = 'bodystyle', border = 'border', below = 'below', belowclass = 'belowclass', belowstyle = 'belowstyle', evenodd = 'evenodd', evenstyle = 'evenstyle', group1 = 'group1', group2 = 'group2', group_and_num = 'group%d', groupstyle_and_num = 'group%dstyle', groupclass = 'groupclass', groupstyle = 'groupstyle', groupwidth = 'groupwidth', innerstyle = 'innerstyle', image = 'image', imageclass = 'imageclass', imageleft = 'imageleft', imageleftstyle = 'imageleftstyle', imagesetyle = 'imagestyle', list_and_num = 'list%d', listclass_and_num = 'list%dclass', liststyle_and_num = 'list%dstyle', list1padding = 'list1padding', listclass = 'listclass', listpadding = 'listpadding', liststyle = 'liststyle', name = 'name', navbar = 'navbar', navboxclass = 'navboxclass', nocat = 'nocat', nowrapitems = 'nowrapitems', oddstyle = 'oddstyle', orphan = 'orphan', state = 'state', style = 'style', templatestyles = 'templatestyles', child_templatestyles = 'child templatestyles', title = 'title', titleclass = 'titleclass', titlestyle = 'titlestyle', tracking = 'tracking' }, -- names of navbar arguments navbar = { name = 1, fontstyle = 'fontstyle', mini = 'mini' } } 4148736fd32a93636c0413e73ed38afaef065ec9 Module:Navbox/styles.css 828 108 264 263 2023-09-30T19:34:21Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Navbox/styles.css]] sanitized-css text/css /* {{pp|small=y}} */ .navbox { box-sizing: border-box; border: 1px solid #a2a9b1; width: 100%; clear: both; font-size: 88%; text-align: center; padding: 1px; margin: 1em auto 0; /* Prevent preceding content from clinging to navboxes */ } .navbox .navbox { margin-top: 0; /* No top margin for nested navboxes */ } .navbox + .navbox, /* TODO: remove first line after transclusions have updated */ .navbox + .navbox-styles + .navbox { margin-top: -1px; /* Single pixel border between adjacent navboxes */ } .navbox-inner, .navbox-subgroup { width: 100%; } .navbox-group, .navbox-title, .navbox-abovebelow { padding: 0.25em 1em; line-height: 1.5em; text-align: center; } .navbox-group { white-space: nowrap; /* @noflip */ text-align: right; } .navbox, .navbox-subgroup { background-color: #fdfdfd; } .navbox-list { line-height: 1.5em; border-color: #fdfdfd; /* Must match background color */ } .navbox-list-with-group { text-align: left; border-left-width: 2px; border-left-style: solid; } /* cell spacing for navbox cells */ /* Borders above 2nd, 3rd, etc. rows */ /* TODO: figure out how to replace tr as structure; * with div structure it should be just a matter of first-child */ tr + tr > .navbox-abovebelow, tr + tr > .navbox-group, tr + tr > .navbox-image, tr + tr > .navbox-list { border-top: 2px solid #fdfdfd; /* Must match background color */ } .navbox-title { background-color: #ccf; /* Level 1 color */ } .navbox-abovebelow, .navbox-group, .navbox-subgroup .navbox-title { background-color: #ddf; /* Level 2 color */ } .navbox-subgroup .navbox-group, .navbox-subgroup .navbox-abovebelow { background-color: #e6e6ff; /* Level 3 color */ } .navbox-even { background-color: #f7f7f7; } .navbox-odd { background-color: transparent; } /* TODO: figure out how to remove reliance on td as structure */ .navbox .hlist td dl, .navbox .hlist td ol, .navbox .hlist td ul, .navbox td.hlist dl, .navbox td.hlist ol, .navbox td.hlist ul { padding: 0.125em 0; } .navbox .navbar { display: block; font-size: 100%; } .navbox-title .navbar { /* @noflip */ float: left; /* @noflip */ text-align: left; /* @noflip */ margin-right: 0.5em; } e80b0d7a5770e6e105dab832deb6c37a5245ebc6 Module:Side box 828 109 266 265 2023-09-30T19:34:22Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Side_box]] Scribunto text/plain local yesno = require('Module:Yesno') local p = {} local function makeData(args) local data = {} -- Main table classes data.classes = {} if yesno(args.metadata) ~= false then table.insert(data.classes, 'metadata') end if args.position and args.position:lower() == 'left' then table.insert(data.classes, 'side-box-left') else table.insert(data.classes, 'side-box-right') end if args.collapsible then table.insert(data.classes, 'mw-collapsible') if args.collapsible == "collapsed" then table.insert(data.classes, 'mw-collapsed') end data.collapsible = true end table.insert(data.classes, args.class) -- Image if args.image and args.image ~= 'none' then data.image = args.image end -- we have to check to see if a downstream use has plainlist like -- Template:Sister_project. also it's the default. wikitext is :( if args.textclass == 'plainlist' or not args.textclass then data.textclass = 'plainlist' data.plainlist_templatestyles = 'Plainlist/styles.css' else data.textclass = args.textclass end -- Copy over data that does not need adjusting local argsToCopy = { -- aria qualities 'role', 'labelledby', -- Styles 'style', 'textstyle', 'templatestyles', -- Above row 'above', 'abovestyle', -- Body row 'text', 'imageright', -- Below row 'below', } for i, key in ipairs(argsToCopy) do data[key] = args[key] end return data end local function renderSidebox(data) -- Renders the sidebox HTML. -- Table root local root = mw.html.create('div') root:attr('role', data.role) :attr('aria-labelledby', data.labelledby) :addClass('side-box') for i, class in ipairs(data.classes or {}) do root:addClass(class) end if data.style then root:cssText(data.style) end local frame = mw.getCurrentFrame() if data.plainlist_templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = data.plainlist_templatestyles } }) end -- The "above" row if data.above then local above = root:newline():tag('div') above:addClass('side-box-abovebelow') :newline() :wikitext(data.above) if data.textstyle then above:cssText(data.textstyle) end if data.abovestyle then above:cssText(data.abovestyle) end end -- The body row local body = root:newline():tag('div') body:addClass('side-box-flex') :addClass(data.collapsible and 'mw-collapsible-content') :newline() if data.image then body:tag('div') :addClass('side-box-image') :wikitext(data.image) end local text = body:newline():tag('div') text:addClass('side-box-text') :addClass(data.textclass) if data.textstyle then text:cssText(data.textstyle) end text:wikitext(data.text) if data.imageright then body:newline():tag('div') :addClass('side-box-imageright') :wikitext(data.imageright) end -- The below row if data.below then local below = root:newline():tag('div') below :addClass('side-box-abovebelow') :wikitext(data.below) if data.textstyle then below:cssText(data.textstyle) end end root:newline() local templatestyles = '' if data.templatestyles then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = data.templatestyles } } end return frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Side box/styles.css' } } .. templatestyles .. tostring(root) end function p._main(args) local data = makeData(args) return renderSidebox(data) end function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end return p 096bef4a3721857fc16eb509a4f8d75973484485 Template:About 10 110 268 267 2023-09-30T19:34:24Z Führerredux 2 1 revision imported from [[:wikipedia:Template:About]] wikitext text/x-wiki {{#invoke:about|about}}<noinclude> {{Documentation}} </noinclude> 34b07e47d9b8220bf56dd9882945ad464b21a731 Template:Ombox 10 111 270 269 2023-09-30T19:34:24Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Ombox]] wikitext text/x-wiki {{#invoke:Message box|ombox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 0e54065432d540737b9e56c4e3a8e7f74d4534ea Module:About 828 112 272 271 2023-09-30T19:34:24Z Führerredux 2 1 revision imported from [[:wikipedia:Module:About]] Scribunto text/plain local mArguments --initialize lazily local mHatnote = require('Module:Hatnote') local mHatList = require('Module:Hatnote list') local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} function p.about (frame) -- A passthrough that gets args from the frame and all mArguments = require('Module:Arguments') args = mArguments.getArgs(frame) return p._about(args) end function p._about (args, options) -- Produces "about" hatnote. -- Type checks and defaults checkType('_about', 1, args, 'table', true) args = args or {} checkType('_about', 2, options, 'table', true) options = options or {} local defaultOptions = { aboutForm = 'This %s is about %s. ', PageType = require('Module:Pagetype').main(), otherText = nil, --included for complete list sectionString = 'section' } for k, v in pairs(defaultOptions) do if options[k] == nil then options[k] = v end end -- Set initial "about" string local pageType = (args.section and options.sectionString) or options.PageType local about = '' if args[1] then about = string.format(options.aboutForm, pageType, args[1]) end --Allow passing through certain options local fsOptions = { otherText = options.otherText, extratext = args.text } local hnOptions = { selfref = args.selfref } -- Set for-see list local forSee = mHatList._forSee(args, 2, fsOptions) -- Concatenate and return return mHatnote._hatnote(about .. forSee, hnOptions) end return p 1abb25315b25b63b97d98ecae17733cbea8fcc6a Template:Side box 10 113 274 273 2023-09-30T19:34:25Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Side_box]] wikitext text/x-wiki {{#invoke:Side box|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> f02d48c7bd2f7bc64e2982d16b3578c99137d27e Template:Mbox 10 115 277 276 2023-09-30T19:34:26Z Führerredux 2 1 revision imported from [[:meta:Template:Mbox]] wikitext text/x-wiki <templatestyles src="Template:Mbox/styles.css" /> {{#invoke:Message box|mbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 728fa77a17d75dc95885aca4d53afc6ba121c503 Template:Em 10 114 278 275 2023-09-30T19:34:26Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Em]] wikitext text/x-wiki <em {{#if:{{{role|}}}|role="{{{role}}}"}} {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</em><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> e2fac6fb507a0dd72c4e79d02403049c7d857c8d Template:Mbox/styles.css 10 117 281 280 2023-09-30T19:34:27Z Führerredux 2 1 revision imported from [[:meta:Template:Mbox/styles.css]] sanitized-css text/css /** @source http://en.wikipedia.org/wiki/MediaWiki:Common.css | 2020-02-03 */ /** [[Module:Message box]] */ /* * WARNING * Some wikis use the styles located here in their local CSS with an import * directive. Do not remove classes from this page until those wikis have * transitioned to TemplateStyles. MediaWiki wiki uses TemplateStyles and does * not load this gadget; see Module:Message box for more details. */ /** NOTE: These do not include .messagebox styles, which are long-deprecated. */ /* For old WikiProject banners inside banner shells. */ .mbox-inside .standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; width: 100%; margin: 2px 0; padding: 2px; } /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ th.mbox-text, td.mbox-text { /* The message body cell(s) */ border: none; /* @noflip */ padding: 0.25em 0.9em; /* 0.9em left/right */ width: 100%; /* Make all mboxes the same width regardless of text length */ } td.mbox-image { /* The left image cell */ border: none; /* @noflip */ padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ text-align: center; } td.mbox-imageright { /* The right image cell */ border: none; /* @noflip */ padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ text-align: center; } td.mbox-empty-cell { /* An empty narrow cell */ border: none; padding: 0; width: 1px; } /* Article message box styles */ table.ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } table.ambox + table.ambox { /* Single border between stacked boxes. */ margin-top: -1px; } .ambox th.mbox-text, .ambox td.mbox-text { /* The message body cell(s) */ padding: 0.25em 0.5em; /* 0.5em left/right */ } .ambox td.mbox-image { /* The left image cell */ /* @noflip */ padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ } .ambox td.mbox-imageright { /* The right image cell */ /* @noflip */ padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ } table.ambox-notice { /* @noflip */ border-left: 10px solid #36c; /* Blue */ } table.ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } table.ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } table.ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } table.ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } table.ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } /* Image message box styles */ table.imbox { margin: 4px 10%; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } .imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */ margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ display: block; /* Fix for webkit to force 100% width. */ } .mbox-inside .imbox { /* For imboxes inside other templates. */ margin: 4px; } table.imbox-notice { border: 3px solid #36c; /* Blue */ } table.imbox-speedy { border: 3px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.imbox-delete { border: 3px solid #b32424; /* Red */ } table.imbox-content { border: 3px solid #f28500; /* Orange */ } table.imbox-style { border: 3px solid #fc3; /* Yellow */ } table.imbox-move { border: 3px solid #9932cc; /* Purple */ } table.imbox-protection { border: 3px solid #a2a9b1; /* Gray-gold */ } table.imbox-license { border: 3px solid #88a; /* Dark gray */ background-color: #f7f8ff; /* Light gray */ } table.imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } /* Category message box styles */ table.cmbox { margin: 3px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; background-color: #dfe8ff; /* Default "notice" blue */ box-sizing: border-box; } table.cmbox-notice { background-color: #d8e8ff; /* Blue */ } table.cmbox-speedy { margin-top: 4px; margin-bottom: 4px; border: 4px solid #b32424; /* Red */ background-color: #ffdbdb; /* Pink */ } table.cmbox-delete { background-color: #ffdbdb; /* Pink */ } table.cmbox-content { background-color: #ffe7ce; /* Orange */ } table.cmbox-style { background-color: #fff9db; /* Yellow */ } table.cmbox-move { background-color: #e4d8ff; /* Purple */ } table.cmbox-protection { background-color: #efefe1; /* Gray-gold */ } /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } /* Talk page message box styles */ table.tmbox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background-color: #f8eaba; min-width: 80%; box-sizing: border-box; } .tmbox.mbox-small { min-width: 0; /* reset the min-width of tmbox above */ } .mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */ margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */ width: 100%; /* For Safari and Opera */ } .mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */ line-height: 1.5em; /* also "nested", so reset styles that are */ font-size: 100%; /* set in "mbox-small" above. */ } table.tmbox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.tmbox-delete { border: 2px solid #b32424; /* Red */ } table.tmbox-content { border: 2px solid #f28500; /* Orange */ } table.tmbox-style { border: 2px solid #fc3; /* Yellow */ } table.tmbox-move { border: 2px solid #9932cc; /* Purple */ } table.tmbox-protection, table.tmbox-notice { border: 1px solid #c0c090; /* Gray-brown */ } /* Disambig and set index box styles */ table.dmbox { clear: both; margin: 0.9em 1em; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; background: transparent; } /* Footer and header message box styles */ table.fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: #f8f9fa; /* Default "system" gray */ box-sizing: border-box; } table.fmbox-system { background-color: #f8f9fa; } table.fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } table.fmbox-editnotice { background-color: transparent; } /* Div based "warning" style fmbox messages. */ div.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon, div.titleblacklist-warning, div.locked-warning { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "html body.mediawiki" is so they override "table.ambox + table.ambox" above. */ html body.mediawiki .mbox-small { /* For the "small=yes" option. */ /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } html body.mediawiki .mbox-small-left { /* For the "small=left" option. */ /* @noflip */ margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } /* Style for compact ambox */ /* Hide the images */ .compact-ambox table .mbox-image, .compact-ambox table .mbox-imageright, .compact-ambox table .mbox-empty-cell { display: none; } /* Remove borders, backgrounds, padding, etc. */ .compact-ambox table.ambox { border: none; border-collapse: collapse; background-color: transparent; margin: 0 0 0 1.6em !important; padding: 0 !important; width: auto; display: block; } body.mediawiki .compact-ambox table.mbox-small-left { font-size: 100%; width: auto; margin: 0; } /* Style the text cell as a list item and remove its padding */ .compact-ambox table .mbox-text { padding: 0 !important; margin: 0 !important; } /* Allow for hiding text in compact form */ .compact-ambox .hide-when-compact { display: none; } 70a64e18a5edf35b8f5debf06fbf0ed6bfa91d31 Template:For 10 116 282 279 2023-09-30T19:34:27Z Führerredux 2 1 revision imported from [[:wikipedia:Template:For]] wikitext text/x-wiki <includeonly>{{#invoke:For|For}}</includeonly><noinclude> {{Documentation}} </noinclude> 3f70c0fa7cd736071e7c6e7dcd90ff3704df26bb Template:Resize 10 118 284 283 2023-09-30T19:34:29Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Resize]] wikitext text/x-wiki {{safesubst<noinclude />:#if:{{{2|}}} |<{{#ifeq:{{{div|}}}|yes|div|span}} style="font-size:{{{1|}}};">{{{2|}}}</{{#ifeq:{{{div|}}}|yes|div|span}}> |<{{#ifeq:{{{div|}}}|yes|div|span}} style="font-size:90%;">{{{1}}}</{{#ifeq:{{{div|}}}|yes|div|span}}> }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --> </noinclude> 3df5b1480eb04f48aa1e701ca895121b4cbb4ed3 Module:For 828 119 286 285 2023-09-30T19:34:29Z Führerredux 2 1 revision imported from [[:wikipedia:Module:For]] Scribunto text/plain local mArguments --initialize lazily local mHatlist = require('Module:Hatnote list') local mHatnote = require('Module:Hatnote') local yesNo = require('Module:Yesno') local p = {} --Implements {{For}} from the frame --uses capitalized "For" to avoid collision with Lua reserved word "for" function p.For (frame) mArguments = require('Module:Arguments') return p._For(mArguments.getArgs(frame)) end --Implements {{For}} but takes a manual arguments table function p._For (args) local use = args[1] if (not use) then return mHatnote.makeWikitextError( 'no context parameter provided. Use {{other uses}} for "other uses" hatnotes.', 'Template:For#Errors', args.category ) end local pages = {} function two (a, b) return a, b, 1 end --lets us run ipairs from 2 for k, v in two(ipairs(args)) do table.insert(pages, v) end local title = mw.title.getCurrentTitle() local skipCat = title.isTalkPage or title.namespace == 2 --don't categorise talk pages and userspace local oddCat = skipCat and '' or '[[Category:Hatnote templates using unusual parameters]]' local category = yesNo(args.category) return mHatnote._hatnote( mHatlist.forSeeTableToString({{use = use, pages = pages}}), {selfref = args.selfref} ) .. ( (use == 'other uses') and ((category == true) or (category == nil)) and oddCat or '' ) end return p 2faf1bd8c657f3425af829cbde9733a936d8d4f4 Template:Hatnote 10 120 288 287 2023-09-30T19:34:30Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Hatnote]] wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 4a1d1028d07c9056022807a96051e1c82cf2a1c7 Template:Crossref 10 121 290 289 2023-09-30T19:34:31Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Crossref]] wikitext text/x-wiki #REDIRECT [[Template:Crossreference]] {{Rcat shell| {{R from template shortcut}} }} dc4192593ccb8eaa34c0440c4aa712442a06c329 Template:Tl 10 8 293 12 2023-09-30T19:34:31Z Führerredux 2 1 revision imported from [[:meta:Template:Tl]] wikitext text/x-wiki #REDIRECT [[Template:Template link]] {{Redirect category shell| {{R from move}} }} d6593bb3b4a866249f55d0f34b047a71fe1f1529 Template:Crossreference 10 122 295 291 2023-09-30T19:34:31Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Crossreference]] wikitext text/x-wiki <templatestyles src="Crossreference/styles.css" />{{Hatnote inline |1={{{1|{{{text|{{{content|<noinclude>sample content</noinclude>}}}}}}}}} |extraclasses=crossreference {{{class|{{{extraclasses|}}}}}} |selfref={{#if:{{{selfref|{{{printworthy|{{{unprintworthy|}}}}}}}}}||yes}} |inline={{{inline|true}}} }}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> b8ac8a6a83bb08330ba0b9f31a7fcd8567217d0e Template:Mbox/doc 10 123 297 294 2023-09-30T19:34:31Z Führerredux 2 1 revision imported from [[:meta:Template:Mbox/doc]] wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> This is the {{tl|mbox}} or '''multi namespace message box''' meta-template. This meta-template is used to build message box templates that are used on several types of pages and thus need to change style depending on what page they are used on. Based on page type detected it uses one of {{tl|ambox}}, {{tl|tmbox}}, {{tl|imbox}}, {{tl|cmbox}} and {{tl|ombox}}. Note that this template should only be used for message boxes that really need to adapt their style. Most message boxes do not need this and should use one of {{tl|ambox}}, {{tl|tmbox}}, {{tl|imbox}}, {{tl|cmbox}} or {{tl|ombox}} directly. Using those templates directly means that your template will look the same on its template page and at any other place you show it, which makes it clear on what kind of pages it is supposed to be used. It also gives you access to any extra features those templates offer, and it saves some server load. === Usage === This template takes the same parameters as {{tl|ambox}} and {{tl|imbox}} etc. See full documentation there. Some of the boxes this template calls only handles images of max 52px width, thus that limitation also applies to this template or you will get ugly padding problems. === Demospace === This template optionally takes the "demospace" parameter as described at {{tl|namespace detect}}. That parameter is only for testing and demonstration purposes. If you want to lock your message box to one style then instead use one of the other mboxes directly. Namespace "Image:" was renamed to "File:" on 11 December 2008. This template was updated to understand both names well before that, thus it still works fine. For backwards compatibility it still understands "demospace = image" which means the same thing as "demospace = file". But using "demospace = image" is now deprecated. Namespace "Book:" was added to the English Wikipedia on 28 December 2009. This template uses the {{tl|ombox}} style on "Book:" pages or when "demospace=book". And it uses the {{tl|tmbox}} style on "Book talk:" pages or when "demospace=talk". Note that "demospace=talk" means any talk space, there is no "demospace=book talk". === Parameters === List of all parameters: <pre> {{mbox | demospace = {{{demospace|}}} / main / talk / file / category / other | type = speedy / delete / content / style / notice / move / protection | image = none / [[Image:Some image.svg|40px]] | imageright = [[Image:Some image.svg|40px]] | style = CSS values | textstyle = CSS values | text = The message body text. | small = {{{small|}}} / left / yes | smallimage = none / [[Image:Some image.svg|30px]] | smallimageright = none / [[Image:Some image.svg|30px]] | smalltext = A shorter message body text. }} </pre> Note: The small parameters only have effect when the template is on an article, talk page or an "other" page. For documentation on the small parameters see {{tl|ambox}}, {{tl|tmbox}} and {{tl|ombox}}. Using the small parameters when they are not valid has no effect, but also does no harm. ==== Types ==== ; speedy {{mbox|type=speedy}} ; delete {{mbox|type=delete}} ; content {{mbox|type=content}} ; style {{mbox|type=style}} ; notice {{mbox|type=notice}} ; move {{mbox|type=move}} ; protection {{mbox|type=protection}} 278a7c9c87f273913737e59c5dd76ef6fb086ba8 Template:Crossreference/styles.css 10 124 298 296 2023-09-30T19:34:33Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Crossreference/styles.css]] sanitized-css text/css /* {{pp-template}} */ /* This snippet just undoes the default "padding-left: 1.6em;" imposed by div.hatnote, when Template:Crossreference is used in block (div) mode. Ignore the dumb CSS editor's "Element (div.crossreference) is overqualified" warning. It is wrong. We do not want to apply any CSS intended for block mode when it is not in block mode. While it's unlikely our "padding-left: 0;" does anything wrong in inline (span) mode, we can't guarantee it forever. */ div.crossreference { padding-left: 0; } ae665603577c5dbafbdf190ec9e29f2ed1f7cd77 Template:Hatnote inline 10 125 300 299 2023-09-30T19:34:33Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Hatnote_inline]] wikitext text/x-wiki {{Hatnote inline/invoke |1={{{1|{{{text|{{{content}}}}}}}}} |extraclasses={{{class|{{{extraclasses|}}}}}} |selfref={{#if:{{{printworthy|{{{selfref|}}}}}}||yes}} |category={{{category|}}} |inline={{{inline|true}}} }}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 257f3004ea74817011cab7b3bdfd0c87531d7e35 Template:Hatnote inline/invoke 10 126 302 301 2023-09-30T19:34:34Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Hatnote_inline/invoke]] wikitext text/x-wiki <includeonly>{{#invoke:Hatnote inline|hatnote}}</includeonly><noinclude> {{Documentation|content=This is an includeonly part of [[Template:Hatnote inline]].}}</noinclude> bcceba0d964fb499427b81aef69b70f463221df3 Module:Hatnote inline 828 127 304 303 2023-09-30T19:34:34Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Hatnote_inline]] Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote-inline -- -- -- -- This module produces hatnote-style links, and links to related articles, -- -- but inside a <span>, instead of the <div> used by Module:Hatnote. It -- -- implements the {{hatnote-inline}} meta-template. -- -------------------------------------------------------------------------------- local mHatnote = require('Module:Hatnote') local mArguments = require('Module:Arguments') local yesno = require('Module:Yesno') local p = {} function p.hatnoteInline (frame) local args = mArguments.getArgs(frame) local hatnote = mHatnote.hatnote(frame) if args.inline == nil or yesno(args.inline, true) then local subs = { ['<div'] = '<span', ['</div>$'] = '</span>' } for k, v in pairs(subs) do hatnote = string.gsub(hatnote, k, v, 1) end end return hatnote end p.hatnote = p.hatnoteInline --alias return p b5000cd7910b7eae23206235b64880a775e4209b Template:Section link 10 128 306 305 2023-09-30T19:34:35Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Section_link]] wikitext text/x-wiki {{#invoke:Section link|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 8d047e5845f8a9b74a4655b5dd79ca7595a8f88b Module:Section link 828 129 308 307 2023-09-30T19:34:36Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Section_link]] Scribunto text/plain -- This module implements {{section link}}. require('strict'); local checkType = require('libraryUtil').checkType local p = {} local function makeSectionLink(page, section, display) display = display or section page = page or '' -- MediaWiki doesn't allow these in `page`, so only need to do for `section` if type(section) == 'string' then section = string.gsub(section, "{", "&#x7B;") section = string.gsub(section, "}", "&#x7D;") end return string.format('[[%s#%s|%s]]', page, section, display) end local function normalizeTitle(title) title = mw.ustring.gsub(mw.ustring.gsub(title, "'", ""), '"', '') title = mw.ustring.gsub(title, "%b<>", "") return mw.title.new(title).prefixedText end function p._main(page, sections, options, title) -- Validate input. checkType('_main', 1, page, 'string', true) checkType('_main', 3, options, 'table', true) if sections == nil then sections = {} elseif type(sections) == 'string' then sections = {sections} elseif type(sections) ~= 'table' then error(string.format( "type error in argument #2 to '_main' " .. "(string, table or nil expected, got %s)", type(sections) ), 2) end options = options or {} title = title or mw.title.getCurrentTitle() -- Deal with blank page names elegantly if page and not page:find('%S') then page = nil options.nopage = true end -- Make the link(s). local isShowingPage = not options.nopage if #sections <= 1 then local linkPage = page or '' local section = sections[1] or 'Notes' local display = '§&nbsp;' .. section if isShowingPage then page = page or title.prefixedText if options.display and options.display ~= '' then if normalizeTitle(options.display) == normalizeTitle(page) then display = options.display .. ' ' .. display else error(string.format( 'Display title "%s" was ignored since it is ' .. "not equivalent to the page's actual title", options.display ), 0) end else display = page .. ' ' .. display end end return makeSectionLink(linkPage, section, display) else -- Multiple sections. First, make a list of the links to display. local ret = {} for i, section in ipairs(sections) do ret[i] = makeSectionLink(page, section) end -- Assemble the list of links into a string with mw.text.listToText. -- We use the default separator for mw.text.listToText, but a custom -- conjunction. There is also a special case conjunction if we only -- have two links. local conjunction if #sections == 2 then conjunction = '&#8203; and ' else conjunction = ', and ' end ret = mw.text.listToText(ret, nil, conjunction) -- Add the intro text. local intro = '§§&nbsp;' if isShowingPage then intro = (page or title.prefixedText) .. ' ' .. intro end ret = intro .. ret return ret end end function p.main(frame) local yesno = require('Module:Yesno') local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Section link', valueFunc = function (key, value) value = value:match('^%s*(.-)%s*$') -- Trim whitespace -- Allow blank first parameters, as the wikitext template does this. if value ~= '' or key == 1 then return value end end }) for k, v in pairs(args) do -- replace underscores in the positional parameter values if 'number' == type(k) then if not yesno (args['keep-underscores']) then -- unless |keep-underscores=yes args[k] = mw.uri.decode (v, 'WIKI'); -- percent-decode; replace underscores with space characters else args[k] = mw.uri.decode (v, 'PATH'); -- percent-decode; retain underscores end end end -- Sort the arguments. local page local sections, options = {}, {} for k, v in pairs(args) do if k == 1 then -- Doing this in the loop because of a bug in [[Module:Arguments]] -- when using pairs with deleted arguments. page = mw.text.decode(v, true) elseif type(k) == 'number' then sections[k] = v else options[k] = v end end options.nopage = yesno (options.nopage); -- make boolean -- Extract section from page, if present if page then local p, s = page:match('^(.-)#(.*)$') if p then page, sections[1] = p, s end end -- Compress the sections array. local function compressArray(t) local nums, ret = {}, {} for num in pairs(t) do nums[#nums + 1] = num end table.sort(nums) for i, num in ipairs(nums) do ret[i] = t[num] end return ret end sections = compressArray(sections) return p._main(page, sections, options) end return p 5cc61d43dc601ca43e9472500fc5cd09ca7cea44 Template:No redirect 10 130 310 309 2023-09-30T19:34:36Z Führerredux 2 1 revision imported from [[:wikipedia:Template:No_redirect]] wikitext text/x-wiki {{safesubst:<noinclude/>#if: {{safesubst:<noinclude/>#invoke:Redirect|isRedirect|{{{1}}}}} | <span class="plainlinks">[{{safesubst:<noinclude/>fullurl:{{{1}}}|redirect=no}} {{{2|{{{1}}}}}}]</span> | {{safesubst:<noinclude/>#if:{{{2|}}}|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}|{{{2}}}]]|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}]]}} }}<noinclude> {{documentation}} </noinclude> 1760035b1bed54ee08b810208ed3551b812dfe13 Template:Helpbox 10 131 312 311 2023-09-30T19:34:37Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Helpbox]] wikitext text/x-wiki <includeonly>{{Sidebar | name = {{#if:{{{templatename|}}} |{{{templatename}}} |{{{name|{{PAGENAME}}}}} }} | templatestyles = Template:Helpbox/styles.css | child templatestyles = {{{child templatestyles|}}} | float = {{{float|}}} | class = help-box noprint {{{class|{{{bodyclass|}}}}}} | style = {{{1|}}} | titlestyle = {{{titlestyle|}}} | title = {{{title|{{{name|}}}}}} | headingstyle = {{{headingstyle|}}} | heading1 = {{{group1|}}} | content1 = {{{list1|}}} | heading2 = {{{group2|}}} | content2 = {{{list2|}}} | heading3 = {{{group3|}}} | content3 = {{{list3|}}} | heading4 = {{{group4|}}} | content4 = {{{list4|}}} | heading5 = {{{group5|}}} | content5 = {{{list5|}}} | heading6 = {{{group6|}}} | content6 = {{{list6|}}} | heading7 = {{{group7|}}} | content7 = {{{list7|}}} | heading8 = {{{group8|}}} | content8 = {{{list8|}}} | heading9 = {{{group9|}}} | content9 = {{{list9|}}} | heading10 = {{{group10|}}} | content10 = {{{list10|}}} | heading11 = {{{group11|}}} | content11 = {{{list11|}}} | heading12 = {{{group12|}}} | content12 = {{{list12|}}} | heading13 = {{{group13|}}} | content13 = {{{list13|}}} | heading14 = {{{group14|}}} | content14 = {{{list14|}}} | heading15 = {{{group15|}}} | content15 = {{{list15|}}} | heading16 = {{{group16|}}} | content16 = {{{list16|}}} | heading17 = {{{group17|}}} | content17 = {{{list17|}}} | heading18 = {{{group18|}}} | content18 = {{{list18|}}} | heading19 = {{{group19|}}} | content19 = {{{list19|}}} | heading20 = {{{group20|}}} | content20 = {{{list20|}}} | navbar = {{#if:{{{templatename|}}} | | {{#if:{{{title|}}} |{{#if:{{{name|}}} | |none}} | none }} }} }}</includeonly><noinclude> {{Documentation}} </noinclude> 5509d0ec3a4e28588e980d97b41e6d36f114d139 Template:Helpbox/styles.css 10 132 314 313 2023-09-30T19:34:37Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Helpbox/styles.css]] sanitized-css text/css /* {{pp|small=y}} */ .help-box { background: #f5faff; line-height: 1.6em; } .help-box .sidebar-title { background: #cee0f2; font-size: 130%; padding-left: 0.4em; padding-right: 0.4em; /* gap before first heading/content */ margin-bottom: 6px; } .help-box .sidebar-heading { background: #cee0f2; padding: 0.1em 0.7em 0.15em; } .help-box .sidebar-content, /* conservatively target subgroups since we're working with a metatemplate */ .help-box .sidebar-content-with-subgroup { padding-top: 0.15em; } @media all and (min-width: 720px) { .help-box { width: auto; max-width: 22em; } } e9436864978a21f55d6aa0b3e1fc6670c322c65d Module:Disambiguation 828 133 316 315 2023-09-30T19:34:38Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Disambiguation]] Scribunto text/plain local p = {} local mRedirect = require('Module:Redirect') local disambiguationTemplates = mw.loadData('Module:Disambiguation/templates') local function capitalize(s) -- This function only works on ASCII strings. If your wiki has -- disambiguation templates that use Unicode strings, use the commented-out -- line instead. Enwiki uses ASCII string manipulation only here to improve -- performance. return s:sub(1, 1):upper() .. s:sub(2, -1) -- return mw.ustring.upper(mw.ustring.sub(1, 1)) .. mw.ustring.sub(2, -1) end local function isDisambiguationTemplate(template) return disambiguationTemplates[capitalize(template)] or false end p.isDisambiguation = function(content) -- false if there is no content if content == nil then return false end -- redirects are not disambiguation pages if mRedirect.getTargetFromText(content) ~= nil then return false end -- check for disambiguation templates in the content local templateNames = {} for template in string.gmatch(content, "{{%s*([^|}]-)%s*[|}]") do if isDisambiguationTemplate(template) then return true end end -- check for magic word if string.find(content, "__DISAMBIG__", 1, true) ~= nil then return true end return false end p._isDisambiguationPage = function(page) -- Look "(disambiguation)" in the title if string.find(page, "(disambiguation)",0,true) ~= nil then return true; end -- Look for disamiguation template in page content local title = mw.title.new(page) if not title then return false end local content = title:getContent() return p.isDisambiguation(content) end -- Entry points for templates p.isDisambiguationPage = function(frame) local title = frame.args[1] return p._isDisambiguationPage(title) and "yes" or "" end return p fedda4d3046080cab39fcd65ab9a9318912a8d57 Template:Raise 10 134 318 317 2023-09-30T19:34:38Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Raise]] wikitext text/x-wiki <span style="position:relative; bottom:{{#if:{{{2|}}} |{{{1}}} |0.6em}};">{{{2|{{{1}}}}}}</span><noinclude>{{Documentation}}</noinclude> da747eda753555e094baeeb84eeca1be020ee399 Template:Shortcut 10 135 320 319 2023-09-30T19:34:39Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Shortcut]] wikitext text/x-wiki <includeonly>{{#invoke:Shortcut|main}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 2f2ccc402cde40b1ae056628bffa0852ee01653c Module:Shortcut 828 136 322 321 2023-09-30T19:34:40Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Shortcut]] Scribunto text/plain -- This module implements {{shortcut}}. -- Set constants local CONFIG_MODULE = 'Module:Shortcut/config' -- Load required modules local checkType = require('libraryUtil').checkType local yesno = require('Module:Yesno') local p = {} local function message(msg, ...) return mw.message.newRawMessage(msg, ...):plain() end local function makeCategoryLink(cat) return string.format('[[%s:%s]]', mw.site.namespaces[14].name, cat) end function p._main(shortcuts, options, frame, cfg) checkType('_main', 1, shortcuts, 'table') checkType('_main', 2, options, 'table', true) options = options or {} frame = frame or mw.getCurrentFrame() cfg = cfg or mw.loadData(CONFIG_MODULE) local templateMode = options.template and yesno(options.template) local redirectMode = options.redirect and yesno(options.redirect) local isCategorized = not options.category or yesno(options.category) ~= false -- Validate shortcuts for i, shortcut in ipairs(shortcuts) do if type(shortcut) ~= 'string' or #shortcut < 1 then error(message(cfg['invalid-shortcut-error'], i), 2) end end -- Make the list items. These are the shortcuts plus any extra lines such -- as options.msg. local listItems = {} for i, shortcut in ipairs(shortcuts) do local templatePath, prefix if templateMode then -- Namespace detection local titleObj = mw.title.new(shortcut, 10) if titleObj.namespace == 10 then templatePath = titleObj.fullText else templatePath = shortcut end prefix = options['pre' .. i] or options.pre or '' end if options.target and yesno(options.target) then listItems[i] = templateMode and string.format("&#123;&#123;%s[[%s|%s]]&#125;&#125;", prefix, templatePath, shortcut) or string.format("[[%s]]", shortcut) else listItems[i] = frame:expandTemplate{ title = 'No redirect', args = templateMode and {templatePath, shortcut} or {shortcut, shortcut} } if templateMode then listItems[i] = string.format("&#123;&#123;%s%s&#125;&#125;", prefix, listItems[i]) end end end table.insert(listItems, options.msg) -- Return an error if we have nothing to display if #listItems < 1 then local msg = cfg['no-content-error'] msg = string.format('<strong class="error">%s</strong>', msg) if isCategorized and cfg['no-content-error-category'] then msg = msg .. makeCategoryLink(cfg['no-content-error-category']) end return msg end local root = mw.html.create() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Shortcut/styles.css'} }) -- Anchors local anchorDiv = root :tag('div') :addClass('module-shortcutanchordiv') for i, shortcut in ipairs(shortcuts) do local anchor = mw.uri.anchorEncode(shortcut) anchorDiv:tag('span'):attr('id', anchor) end -- Shortcut heading local shortcutHeading do local nShortcuts = #shortcuts if nShortcuts > 0 then local headingMsg = options['shortcut-heading'] or redirectMode and cfg['redirect-heading'] or cfg['shortcut-heading'] shortcutHeading = message(headingMsg, nShortcuts) shortcutHeading = frame:preprocess(shortcutHeading) end end -- Shortcut box local shortcutList = root :tag('div') :addClass('module-shortcutboxplain noprint') :attr('role', 'note') if options.float and options.float:lower() == 'left' then shortcutList:addClass('module-shortcutboxleft') end if options.clear and options.clear ~= '' then shortcutList:css('clear', options.clear) end if shortcutHeading then shortcutList :tag('div') :addClass('module-shortcutlist') :wikitext(shortcutHeading) end local ubl = require('Module:List').unbulleted(listItems) shortcutList:wikitext(ubl) return tostring(root) end function p.main(frame) local args = require('Module:Arguments').getArgs(frame) -- Separate shortcuts from options local shortcuts, options = {}, {} for k, v in pairs(args) do if type(k) == 'number' then shortcuts[k] = v else options[k] = v end end -- Compress the shortcut array, which may contain nils. local function compressArray(t) local nums, ret = {}, {} for k in pairs(t) do nums[#nums + 1] = k end table.sort(nums) for i, num in ipairs(nums) do ret[i] = t[num] end return ret end shortcuts = compressArray(shortcuts) return p._main(shortcuts, options, frame) end return p 03fd46a265e549852a9ed3d3a9249b247d84cb4f Module:Shortcut/config 828 137 324 323 2023-09-30T19:34:40Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Shortcut/config]] Scribunto text/plain -- This module holds configuration data for [[Module:Shortcut]]. return { -- The heading at the top of the shortcut box. It accepts the following parameter: -- $1 - the total number of shortcuts. (required) ['shortcut-heading'] = '[[Wikipedia:Shortcut|{{PLURAL:$1|Shortcut|Shortcuts}}]]', -- The heading when |redirect=yes is given. It accepts the following parameter: -- $1 - the total number of shortcuts. (required) ['redirect-heading'] = '[[Wikipedia:Redirect|{{PLURAL:$1|Redirect|Redirects}}]]', -- The error message to display when a shortcut is invalid (is not a string, or -- is the blank string). It accepts the following parameter: -- $1 - the number of the shortcut in the argument list. (required) ['invalid-shortcut-error'] = 'shortcut #$1 was invalid (shortcuts must be ' .. 'strings of at least one character in length)', -- The error message to display when no shortcuts or other displayable content -- were specified. (required) ['no-content-error'] = 'Error: no shortcuts were specified and the ' .. mw.text.nowiki('|msg=') .. ' parameter was not set.', -- A category to add when the no-content-error message is displayed. (optional) ['no-content-error-category'] = 'Shortcut templates with missing parameters', } f9d1d94844d5953753eb19e30a3ce389eda3d319 Template:Sectionlink 10 138 326 325 2023-09-30T19:34:41Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Sectionlink]] wikitext text/x-wiki #REDIRECT[[Template:Section link]] b1506aa42c4652e1f14405ccedd78d7061f91540 Template:Define 10 139 328 327 2023-09-30T19:34:41Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Define]] wikitext text/x-wiki #REDIRECT [[Template:Abbr]] {{Rcat shell| {{R related}} {{R tsh}} }} 4ab7bdcf7ba10c7ef8ee30a9bf6600863997473d Template:Tp 10 140 330 329 2023-09-30T19:34:42Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tp]] wikitext text/x-wiki #REDIRECT [[Template:Template link]] {{Rcat shell|{{R from template shortcut}}}} 59847a20c2c64a767694d7612bfc5d1130c96b9a Template:Userbox 10 141 332 331 2023-09-30T19:34:43Z Führerredux 2 1 revision imported from [[:meta:Template:Userbox]] wikitext text/x-wiki {{#invoke:userbox|userbox}}<noinclude> {{documentation}} [[Category:Userboxes]]</noinclude> cef9fe752d7f8791d4317858904bde773db441a6 Module:Userbox 828 142 334 333 2023-09-30T19:34:43Z Führerredux 2 1 revision imported from [[:meta:Module:Userbox]] Scribunto text/plain -- This module implements {{userbox}}. local categoryHandler = require('Module:Category handler').main local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function checkNum(val, default) -- Checks whether a value is a number greater than or equal to zero. If so, -- returns it as a number. If not, returns a default value. val = tonumber(val) if val and val >= 0 then return val else return default end end local function addSuffix(num, suffix) -- Turns a number into a string and adds a suffix. if num then return tostring(num) .. suffix else return nil end end local function checkNumAndAddSuffix(num, default, suffix) -- Checks a value with checkNum and adds a suffix. num = checkNum(num, default) return addSuffix(num, suffix) end local function makeCat(cat, sort) -- Makes a category link. if sort then return mw.ustring.format('[[Category:%s|%s]]', cat, sort) else return mw.ustring.format('[[Category:%s]]', cat) end end -------------------------------------------------------------------------------- -- Argument processing -------------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local origArgs = require('Module:Arguments').getArgs(frame) local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.main(funcName, args) end end p.userbox = makeInvokeFunc('_userbox') p['userbox-2'] = makeInvokeFunc('_userbox-2') p['userbox-r'] = makeInvokeFunc('_userbox-r') -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.main(funcName, args) local userboxData = p[funcName](args) local userbox = p.render(userboxData) local cats = p.categories(args) return userbox .. (cats or '') end function p._userbox(args) -- Does argument processing for {{userbox}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] data.infoClass = args['info-class'] -- Get id values. local id = args.logo or args[3] or args.id data.id = id data.showId = id and true or false data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.idTextAlign = args['id-a'] or 'center' data.idFontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.idOtherParams = args['logo-other-param'] or args['id-op'] data.idClass = args['id-class'] return data end p['_userbox-2'] = function (args) -- Does argument processing for {{userbox-2}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args[9] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args[1] or args['border-c'] or args['id1-c'] or '#999999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args[2] or args['info-c'] or '#eeeeee' -- Get info values. data.info = args[4] or args.info or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') data.infoColor = args[8] or args['info-fc'] or 'black' data.infoPadding = args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-lh'] or '1.25em' data.infoOtherParams = args['info-op'] -- Get id values. data.showId = true data.id = args.logo or args[3] or args.id1 or 'id1' data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') data.idBackgroundColor = args[1] or args['id1-c'] or '#dddddd' data.idTextAlign = 'center' data.idFontSize = checkNumAndAddSuffix(args['id1-s'], 14, 'pt') data.idLineHeight = args['id1-lh'] or '1.25em' data.idColor = args['id1-fc'] or data.infoColor data.idPadding = args['id1-p'] or '0 1px 0 0' data.idOtherParams = args['id1-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[5] or args.id2 or 'id2' data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') data.id2Height = data.idHeight data.id2BackgroundColor = args[7] or args['id2-c'] or args[1] or '#dddddd' data.id2TextAlign = 'center' data.id2FontSize = checkNumAndAddSuffix(args['id2-s'], 14, 'pt') data.id2LineHeight = args['id2-lh'] or '1.25em' data.id2Color = args['id2-fc'] or data.infoColor data.id2Padding = args['id2-p'] or '0 0 0 1px' data.id2OtherParams = args['id2-op'] return data end p['_userbox-r'] = function (args) -- Does argument processing for {{userbox-r}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get id values. data.showId = false -- We only show id2 in userbox-r. -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-align'] or args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[3] or args.id or 'id' data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.id2TextAlign = args['id-a'] or 'center' data.id2FontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.id2OtherParams = args['logo-other-param'] or args['id-op'] return data end function p.render(data) -- Renders the userbox html using the content of the data table. -- Render the div tag html. local root = mw.html.create('div') root :css('float', data.float) :css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or '')) :css('margin', '1px') :css('width', data.width) :addClass('wikipediauserbox') :addClass(data.bodyClass) -- Render the table tag html. local tableroot = root:tag('table') tableroot :css('border-collapse', 'collapse') :css('width', data.width) :css('margin-bottom', '0') :css('margin-top', '0') :css('background', data.backgroundColor) -- Render the id html. local tablerow = tableroot:tag('tr') if data.showId then tablerow:tag('th') :css('border', '0') :css('width', data.idWidth) :css('height', data.idHeight) :css('background', data.idBackgroundColor) :css('text-align', data.idTextAlign) :css('font-size', data.idFontSize) :css('color', data.idColor) :css('padding', data.idPadding) :css('line-height', data.idLineHeight) :css('vertical-align', 'middle') :cssText(data.idOtherParams) :addClass(data.idClass) :wikitext(data.id) end -- Render the info html. tablerow:tag('td') :css('border', '0') :css('text-align', data.infoTextAlign) :css('font-size', data.infoFontSize) :css('padding', data.infoPadding) :css('height', data.infoHeight) :css('line-height', data.infoLineHeight) :css('color', data.infoColor) :css('vertical-align', 'middle') :cssText(data.infoOtherParams) :addClass(data.infoClass) :wikitext(data.info) -- Render the second id html. if data.showId2 then tablerow:tag('th') :css('border', '0') :css('width', data.id2Width) :css('height', data.id2Height) :css('background', data.id2BackgroundColor) :css('text-align', data.id2TextAlign) :css('font-size', data.id2FontSize) :css('color', data.id2Color) :css('padding', data.id2Padding) :css('line-height', data.id2LineHeight) :css('vertical-align', 'middle') :cssText(data.id2OtherParams) :wikitext(data.id2) end local title = mw.title.getCurrentTitle() if (title.namespace == 2) and not title.text:match("/") then return tostring(root) -- regular user page elseif title.namespace == 14 then return tostring(root) -- category elseif title.isTalkPage then return tostring(root) -- talk page end local legible = true local contrast = require('Module:Color contrast')._ratio local function has_text(wikitext) local function get_alt(text) return text:match("|alt=([^|]*)") or "" end wikitext = wikitext:gsub("]]", "|]]") wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", get_alt) wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", get_alt) wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", get_alt) return mw.text.trim(wikitext) ~= "" end if contrast { data.infoColor, data.backgroundColor, error = 0 } < 4.5 then legible = false end if data.showId and contrast { data.idColor, data.idBackgroundColor, error = 0 } < 4.5 then if has_text(data.id or "") then legible = false end end if data.showId2 and contrast { data.id2Color, data.id2BackgroundColor, error = 0 } < 4.5 then if has_text(data.id2 or "") then legible = false end end if not legible then root:wikitext('[[Category:Potentially illegible userboxes]]') end return tostring(root) end function p.categories(args, page) -- Gets categories from [[Module:Category handler]]. -- The page parameter makes the function act as though the module was being called from that page. -- It is included for testing purposes. local cats = {} cats[#cats + 1] = args.usercategory cats[#cats + 1] = args.usercategory2 cats[#cats + 1] = args.usercategory3 if #cats > 0 then -- Get the title object local title if page then title = mw.title.new(page) else title = mw.title.getCurrentTitle() end -- Build category handler arguments. local chargs = {} chargs.page = page chargs.nocat = args.nocat chargs.main = '[[Category:Pages with misplaced templates]]' if args.notcatsubpages then chargs.subpage = 'no' end -- User namespace. local user = '' for i, cat in ipairs(cats) do user = user .. makeCat(cat) end chargs.user = user -- Template namespace. local basepage = title.baseText local template = '' for i, cat in ipairs(cats) do template = template .. makeCat(cat, ' ' .. basepage) end chargs.template = template return categoryHandler(chargs) else return nil end end return p 1a6d5c3f5a72eb494c764796412b42184f714b7b Module:Category handler 828 143 336 335 2023-09-30T19:34:44Z Führerredux 2 1 revision imported from [[:meta:Module:Category_handler]] Scribunto text/plain -------------------------------------------------------------------------------- -- -- -- CATEGORY HANDLER -- -- -- -- This module implements the {{category handler}} template in Lua, -- -- with a few improvements: all namespaces and all namespace aliases -- -- are supported, and namespace names are detected automatically for -- -- the local wiki. This module requires [[Module:Namespace detect]] -- -- and [[Module:Yesno]] to be available on the local wiki. It can be -- -- configured for different wikis by altering the values in -- -- [[Module:Category handler/config]], and pages can be blacklisted -- -- from categorisation by using [[Module:Category handler/blacklist]]. -- -- -- -------------------------------------------------------------------------------- -- Load required modules local yesno = require('Module:Yesno') -- Lazily load things we don't always need local mShared, mappings local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function trimWhitespace(s, removeBlanks) if type(s) ~= 'string' then return s end s = s:match('^%s*(.-)%s*$') if removeBlanks then if s ~= '' then return s else return nil end else return s end end -------------------------------------------------------------------------------- -- CategoryHandler class -------------------------------------------------------------------------------- local CategoryHandler = {} CategoryHandler.__index = CategoryHandler function CategoryHandler.new(data, args) local obj = setmetatable({ _data = data, _args = args }, CategoryHandler) -- Set the title object do local pagename = obj:parameter('demopage') local success, titleObj if pagename then success, titleObj = pcall(mw.title.new, pagename) end if success and titleObj then obj.title = titleObj if titleObj == mw.title.getCurrentTitle() then obj._usesCurrentTitle = true end else obj.title = mw.title.getCurrentTitle() obj._usesCurrentTitle = true end end -- Set suppression parameter values for _, key in ipairs{'nocat', 'categories'} do local value = obj:parameter(key) value = trimWhitespace(value, true) obj['_' .. key] = yesno(value) end do local subpage = obj:parameter('subpage') local category2 = obj:parameter('category2') if type(subpage) == 'string' then subpage = mw.ustring.lower(subpage) end if type(category2) == 'string' then subpage = mw.ustring.lower(category2) end obj._subpage = trimWhitespace(subpage, true) obj._category2 = trimWhitespace(category2) -- don't remove blank values end return obj end function CategoryHandler:parameter(key) local parameterNames = self._data.parameters[key] local pntype = type(parameterNames) if pntype == 'string' or pntype == 'number' then return self._args[parameterNames] elseif pntype == 'table' then for _, name in ipairs(parameterNames) do local value = self._args[name] if value ~= nil then return value end end return nil else error(string.format( 'invalid config key "%s"', tostring(key) ), 2) end end function CategoryHandler:isSuppressedByArguments() return -- See if a category suppression argument has been set. self._nocat == true or self._categories == false or ( self._category2 and self._category2 ~= self._data.category2Yes and self._category2 ~= self._data.category2Negative ) -- Check whether we are on a subpage, and see if categories are -- suppressed based on our subpage status. or self._subpage == self._data.subpageNo and self.title.isSubpage or self._subpage == self._data.subpageOnly and not self.title.isSubpage end function CategoryHandler:shouldSkipBlacklistCheck() -- Check whether the category suppression arguments indicate we -- should skip the blacklist check. return self._nocat == false or self._categories == true or self._category2 == self._data.category2Yes end function CategoryHandler:matchesBlacklist() if self._usesCurrentTitle then return self._data.currentTitleMatchesBlacklist else mShared = mShared or require('Module:Category handler/shared') return mShared.matchesBlacklist( self.title.prefixedText, mw.loadData('Module:Category handler/blacklist') ) end end function CategoryHandler:isSuppressed() -- Find if categories are suppressed by either the arguments or by -- matching the blacklist. return self:isSuppressedByArguments() or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist() end function CategoryHandler:getNamespaceParameters() if self._usesCurrentTitle then return self._data.currentTitleNamespaceParameters else if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end return mShared.getNamespaceParameters( self.title, mappings ) end end function CategoryHandler:namespaceParametersExist() -- Find whether any namespace parameters have been specified. -- We use the order "all" --> namespace params --> "other" as this is what -- the old template did. if self:parameter('all') then return true end if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end for ns, params in pairs(mappings) do for i, param in ipairs(params) do if self._args[param] then return true end end end if self:parameter('other') then return true end return false end function CategoryHandler:getCategories() local params = self:getNamespaceParameters() local nsCategory for i, param in ipairs(params) do local value = self._args[param] if value ~= nil then nsCategory = value break end end if nsCategory ~= nil or self:namespaceParametersExist() then -- Namespace parameters exist - advanced usage. if nsCategory == nil then nsCategory = self:parameter('other') end local ret = {self:parameter('all')} local numParam = tonumber(nsCategory) if numParam and numParam >= 1 and math.floor(numParam) == numParam then -- nsCategory is an integer ret[#ret + 1] = self._args[numParam] else ret[#ret + 1] = nsCategory end if #ret < 1 then return nil else return table.concat(ret) end elseif self._data.defaultNamespaces[self.title.namespace] then -- Namespace parameters don't exist, simple usage. return self._args[1] end return nil end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- Used for testing purposes. return { CategoryHandler = CategoryHandler } end function p._main(args, data) data = data or mw.loadData('Module:Category handler/data') local handler = CategoryHandler.new(data, args) if handler:isSuppressed() then return nil end return handler:getCategories() end function p.main(frame, data) data = data or mw.loadData('Module:Category handler/data') local args = require('Module:Arguments').getArgs(frame, { wrappers = data.wrappers, valueFunc = function (k, v) v = trimWhitespace(v) if type(k) == 'number' then if v ~= '' then return v else return nil end else return v end end }) return p._main(args, data) end return p b74dd63857b24904ac452429b11213f18647471f Template:Offer help 10 144 338 337 2023-09-30T19:34:45Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Offer_help]] wikitext text/x-wiki {{Hatnote|{{smaller|'''Find this page confusing? {{edit|Special:MyTalk|Just use this link to ask for help on your talk page|section=new|preload=Help:Contents/helpmepreload|preloadtitle=Help me!}}; a volunteer will visit you there shortly!'''}}}} <noinclude> [[Category:Hatnote templates]] [[Category:Wikipedia help templates]] </noinclude> 081a2d2e563a98d43f291dc22865004902a44ce0 Template:Wikipedia help pages 10 145 340 339 2023-09-30T19:34:47Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Wikipedia_help_pages]] wikitext text/x-wiki <noinclude>{{Notice |style=margin-bottom:1.5em; |1=<span style="font-size:large;color:purple;">Please do not post your requests or questions on this page. If you have questions about using Wikipedia, please ask at the '''[[Wikipedia:Help desk|Help&nbsp;desk]]''' or the '''[[Wikipedia:Teahouse|Teahouse]]'''. For questions about subjects and topics, please use the '''[[Wikipedia:Reference desk|Reference Desk]]'''. Volunteers at these locations will respond to your questions as soon as possible.</span>}}</noinclude><!-- -->{{#invoke:navbox|navbox | name = Wikipedia help pages | state ={{{state<includeonly>|{{{1|collapsed}}}</includeonly>}}} | bodyclass = hlist | basestyle = text-align:center; | title = [[Help:Directory|Wikipedia help pages]] | above = *'''Visit the ''[[Wikipedia:Teahouse|Teahouse]]'' or the ''[[Wikipedia:Help desk|Help desk]]'' for an interactive {{abbr|Q & A|questions and answers}} forum.''' ---- * '''[[Wikipedia:FAQ|FAQs]]'''&nbsp;'''{{Define|(?)|This is a list of frequently asked questions about using and contributing to Wikipedia.}}''' * '''[[Wikipedia:Reference desk|Reference desks]]'''&nbsp;'''{{Define|(?)|Works like a library reference desk. Ask a question here and Wikipedia volunteers will try to answer it.}}''' * '''[[Wikipedia:Noticeboards|Noticeboards]]'''&nbsp;'''{{Define|(?)|Pages where editors can ask questions and request assistance from people who are familiar with the policies and guidelines covered by each individual board.}}''' * '''[[Help:Cheatsheet|Cheatsheet]]'''&nbsp;'''{{Define|(?)| For a list of the most commonly used Wiki markup and templates.}}''' *''' [[Wikipedia:Directories and indexes|Directories]]'''&nbsp;'''{{Define|(?)|For a list of Wikipedia's directories and indexes.}}''' | group1 = [[Wikipedia:About|About Wikipedia]]&nbsp;{{Define|(?)|Wikipedia's governess and customs}} | list1 = * [[Wikipedia:Administration|Administration]] **[[Wikipedia:Purpose|Purpose]] ** [[Wikipedia:Five pillars|Principles]] * [[Wikipedia:Policies and guidelines|Policies and guidelines]] * [[Wikipedia:What Wikipedia is not|What Wikipedia is not]] * [[Wikipedia:General disclaimer|Disclaimer]]&nbsp;([[Wikipedia:Advice for parents|parental advice]]) * [[Wikipedia:Request directory|Making requests]] * [[Wikipedia:Who writes Wikipedia?|Who writes Wikipedia?]] | group2 = [[Wikipedia:Reader's index to Wikipedia|Help for readers]]&nbsp;{{Define|(?)|Concerns and questions readers may have about Wikipedia}} | list2 = *[[Wikipedia:FAQ/Readers|FAQ]] *[[Wikipedia:Wikipedia book creator status|Books]] * [[Help:Copyright|Copyright]] * [[Help:Glossary|Glossary]] * [[Help:Mobile access|Mobile access]] * [[Help:Navigation|Navigation]] * [[Help:Other languages|Other languages]] * [[Help:Searching|Searching]] * [[Help:Student help|Students]] * [[Help:Viewing media|Viewing media]] | group3 = [[Wikipedia:Contributing to Wikipedia|Contributing<br/>to Wikipedia]]&nbsp;{{Define|(?)|Overviews and resources needed to comprehend, comment on, and edit}} | list3 = * [[Wikipedia:Guidance for younger editors|Advice for young editors]] * [[Wikipedia:Avoiding common mistakes|Avoiding common mistakes]] * [[Wikipedia:Etiquette|Etiquette]] * [[Wikipedia:Simplified Manual of Style|Simplified Manual of Style]] * [[Wikipedia:Simplified ruleset|Simplified rule-set]] ** [[Wikipedia:Ignore all rules|"Ignore all rules"]] ** [[Wikipedia:The rules are principles|"The rules are principles"]] *[[Wikipedia:Styletips|Style-tips]] * [[Wikipedia:Tip of the day|Tip of the day]] * [[Help:Your first article|Your first article]]&nbsp;([[Wikipedia:Article wizard|article wizard]]) | group4 = [[Help:Getting started|Getting started]]&nbsp;{{Define|(?)|Introductions and tutorials}} | list4 = * [[Wikipedia:Why create an account?|Why create an account?]] *[[Help:Introduction|Introductions by topic]] * [[Wikipedia:Graphics tutorials|Graphics tutorials]] ** [[Help:Pictures|Picture tutorial]] ** [[Wikipedia:IRC/Tutorial|IRC {{smaller|(live chat)}} tutorial]] * [[Wikipedia:VisualEditor/User guide|VisualEditor user guide]] | group5 = [[Wikipedia:Dos and don'ts|Dos and don'ts]]&nbsp;{{Define|(?)|Wikipedia policies, guidelines, and formatting standards in bullet points}} | list5 = * [[Wikipedia:Accessibility dos and don'ts|Accessibility]] * [[Wikipedia:Biography dos and don'ts|Biographies]] * [[Wikipedia:Biographies of living persons dos and don'ts|Biographies (living)]] * [[Wikipedia:Categorization dos and don'ts|Categorization]] * [[Wikipedia:Consensus dos and don'ts|Consensus]] * [[Wikipedia:Talk dos and don'ts|Discussions]] * [[Wikipedia:Disambiguation dos and don'ts|Disambiguation]] * [[Wikipedia:Image dos and don'ts|Images]] * [[Wikipedia:Lead dos and don'ts|Leads]] * [[Wikipedia:Linking dos and don'ts|Links]] * [[Wikipedia:List dos and don'ts|Lists]] * [[Wikipedia:References dos and don'ts|References]] * [[Wikipedia:Table dos and don'ts|Tables]] * [[Wikipedia:Article title dos and don'ts|Titles (of articles)]] | group7 = [[:Category:Wikipedia how-to|How-to pages]] and<br/>[[:Category:Wikipedia information pages|information pages]]&nbsp;{{Define|(?)|Topic specific informative and instructional pages}} | list7 = * [[Wikipedia:Guide to appealing blocks|Appealing blocks]] * [[Wikipedia:Guide to deletion|Article deletion]] * [[Help:Category|Categories]] * [[Help:Citations quick reference|Citations/references]] ** [[Help:Referencing for beginners|Referencing for beginners]] ** [[Help:Citation Style 1|Citation Style 1]] ** [[Help:Cite errors|Cite errors]] ** [[Help:References and page numbers|References and page numbers]] * [[Help:Convert|Convert]] * [[Help:Diff|Diff]] * [[Help:Editing|Editing]] ** [[Help:Minor edit|Minor edit]] ** [[Help:Edit toolbar|toolbar]] ** [[Help:Edit conflict|edit conflict]] * [[Help:Find sources|Find sources]] * [[Help:Files|Files]] * [[Help:Footnotes|Footnotes]] * [[Wikipedia:Guide to image deletion|Image deletion]] * [[Help:Infobox|Infoboxes]] * [[Help:Link|Linking]]&nbsp;([[Help:Link color|link color]]) * [[Help:Logging in|Logging in]] * [[Wikipedia:Merging|Merging]] * [[Help:Page name|Page name]] ** [[Help:How to move a page|Renaming pages]] * [[Help:Redirect|Redirect]] * [[Help:Reset password|Passwords]] ** [[Help:Email confirmation|Email confirmation]] * [[Help:Reverting|Reverting]] ** [[Help:Simple guide to vandalism cleanup|Simple vandalism cleanup]] * [[Help:Talk pages|Talk pages]]&nbsp;([[Help:Archiving a talk page|archiving]] *[[Help:Archiving (plain and simple)|simple archiving]]) * [[Help:User contributions|User contributions]] * [[Help:WP search protocol|WP search protocol]] | group8 = [[Wiki markup|Coding]]&nbsp;{{Define|(?)|Wikitext information consists of the syntax used to format a page}} | list8 = * [[Help:Wikitext|Wiki markup]] * [[Help:Barchart|Barchart]]s * [[Help:Calculation|Calculation]]s * [[Help:Special characters|Characters]] * [[Help:Columns|Column]]s * [[Wikipedia:Manual of Style/Hidden text|Hidden text]] * [[Help:HTML in wikitext|HTML]] * [[Help:List|Lists]] * [[Help:Magic words|Magic words]] * [[Help:Musical symbols|Music symbols]] * [[Help:Section|Sections]] * [[Help:Sound file markup|Sounds]] * [[Help:Table|Tables]] * [[Help:Template|Template]]s * [[Wikipedia:Transclusion|Transclusion]] * [[Help:URL|URL]] * [[Help:Visual file markup|Visual files]] | group9 = [[Wikipedia:Directories and indexes|Directories]]&nbsp;{{Define|(?)|Wikipedia's directories and indexes}} | list9 = * [[Wikipedia:Wikipedia abbreviations|Abbreviations]] *[[Wikipedia:Contents|Contents]] <small>(Encyclopedia proper)</small> * [[Wikipedia:Department directory|Departments]] * [[Wikipedia:Editor's index to Wikipedia|Editor's index]] * [[Wikipedia:Essay directory|Essays]] * [[Wikipedia:FAQ/Index|FAQs]] * [[Wikipedia:Glossary|Glossary]] * [[Wikipedia:List of guidelines|Guidelines]] * [[Wikipedia:Manual of Style/Contents|Manual of Style ]] * [[Wikipedia:List of policies|Policies]] *[[Wikipedia:Maintenance|Tasks]] * [[Wikipedia:Tips|Tips]] * [[Wikipedia:Tools|Tools]] | below =''' [[Help: Wikipedia: The Missing Manual|Missing Manual]]''' ---- {{edit|Special:MyTalk|'''Ask for help on your talk page'''|section=new|preload=Help:Contents/helpmepreload|preloadtitle=Help me!}}&nbsp;'''{{Define|(?)| If you need help, you can use this link to ask a question on your talk page; a volunteer will visit you there shortly!}}''' }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --> </noinclude> b936e44c69277aadf07ff0d3d227e49775c7d720 Template:Wikipedia how-to 10 146 342 341 2023-09-30T19:34:48Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Wikipedia_how-to]] wikitext text/x-wiki {{ombox | type = notice | style = {{#if:{{{style|}}} |margin:0 auto;width:80%;{{{style}}} }} | image = [[File:Twemoji 1f527.svg|30x30px]] | imageright = {{#if:{{{shortcut|{{{shortcut1|{{{sc1|{{{1<includeonly>|</includeonly>}}}}}}}}}}}} |{{Shortcut|{{{shortcut|{{{shortcut1|{{{sc1|{{{1}}}}}}}}}}}}|{{{shortcut2|{{{sc2|{{{2|}}}}}}}}}||{{{shortcut3|{{{sc3|{{{3|}}}}}}}}}|{{{shortcut4|{{{sc4|{{{4|}}}}}}}}}||{{{shortcut5|{{{sc5|{{{5|}}}}}}}}}<noinclude>|category=no</noinclude>}} }} | text = <div style="padding-top: 6px; padding-bottom: 5px;">'''This help page is a [[Wikipedia:Project namespace#Wikipedia how-to and information pages|how-to guide]].'''<br><div style="font-size: 90%;">It details processes or procedures of <!-- -->{{#if:{{{page|{{{pages|{{{interprets|}}}}}}}}} | <!--doesn't handle multiple items--> {{#ifexist:{{{page|{{{pages|{{{interprets}}}}}}}}} |[[{{{page|{{{pages|{{{interprets}}}}}}}}}]] |{{{page|{{{pages|{{{interprets}}}}}}}}}}} | some aspect(s) of Wikipedia's norms and practices }}. It is not one of [[Wikipedia:Policies and guidelines|Wikipedia's policies or guidelines]], and may reflect varying levels of [[Wikipedia:Consensus|consensus]] and [[Wikipedia:Consensus#Achieving consensus|vetting]].</div></div> }}{{#if: {{{nocat|{{{demo|}}}}}}||<includeonly>{{Namespace detect | wikipedia = {{{category|[[Category:Wikipedia how-to|{{#if:{{{sort-by|}}}|{{{sort-by}}}|{{PAGENAME}}}}]]}}} | help = {{{category|[[Category:Wikipedia how-to|{{#if:{{{sort-by|}}}|{{{sort-by}}}|{{PAGENAME}}}}]]}}} | user = [[Category:User essays]]{{{category|}}} }} </includeonly>}}<noinclude> {{Documentation|content= {{Information page/doc |howto=y}} }} </noinclude> f95ec6e4a0105cd44573344bb11ca768408c3862 Template:Wikipedia glossary 10 147 344 343 2023-09-30T19:34:48Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Wikipedia_glossary]] wikitext text/x-wiki {{Side box | imageright = [[File:Wiki letter w.svg]] | text = This page is referenced in the {{#if:{{{1|}}} |Wikipedia Glossary, under [[Wikipedia:Glossary#{{{1}}}|{{{1}}}]] |{{nowrap|[[Wikipedia:Glossary|Wikipedia Glossary]]}} }}. | class = plainlinks }}<includeonly>{{#switch:{{NAMESPACE}} |Help|Wikipedia={{#if:{{{nocat|{{{category|}}}}}}||[[Category:Wikipedia glossary items]]}} |User={{#ifeq:{{YesNo-No|{{{category}}}}}|yes|[[Category:Wikipedia glossary items]]}} |#default= }}</includeonly><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 4287695cf50f15b3de9f5acbe926e13d83cb1ef4 Module:Color contrast 828 148 347 345 2023-09-30T19:34:49Z Führerredux 2 1 revision imported from [[:meta:Module:Color_contrast]] Scribunto text/plain -- -- This module implements -- {{Color contrast ratio}} -- {{Greater color contrast ratio}} -- {{ColorToLum}} -- {{RGBColorToLum}} -- local p = {} local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' ) local function sRGB (v) if (v <= 0.03928) then v = v / 12.92 else v = math.pow((v+0.055)/1.055, 2.4) end return v end local function rgbdec2lum(R, G, B) if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255) else return '' end end local function hsl2lum(h, s, l) if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then local c = (1 - math.abs(2*l - 1))*s local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) ) local m = l - c/2 local r, g, b = m, m, m if( 0 <= h and h < 60 ) then r = r + c g = g + x elseif( 60 <= h and h < 120 ) then r = r + x g = g + c elseif( 120 <= h and h < 180 ) then g = g + c b = b + x elseif( 180 <= h and h < 240 ) then g = g + x b = b + c elseif( 240 <= h and h < 300 ) then r = r + x b = b + c elseif( 300 <= h and h < 360 ) then r = r + c b = b + x end return rgbdec2lum(255*r, 255*g, 255*b) else return '' end end local function color2lum(c) if (c == nil) then return '' end -- html '#' entity c = c:gsub("&#35;", "#") -- whitespace c = c:match( '^%s*(.-)[%s;]*$' ) -- unstrip nowiki strip markers c = mw.text.unstripNoWiki(c) -- lowercase c = c:lower() -- first try to look it up local L = HTMLcolor[c] if (L ~= nil) then return L end -- convert from hsl if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100) end -- convert from rgb if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$') return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B)) end -- convert from rgb percent if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100) end -- remove leading # (if there is one) and whitespace c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$') -- split into rgb local cs = mw.text.split(c or '', '') if( #cs == 6 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2]) local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4]) local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6]) return rgbdec2lum(R, G, B) elseif ( #cs == 3 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1]) local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2]) local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3]) return rgbdec2lum(R, G, B) end -- failure, return blank return '' end -- This exports the function for use in other modules. -- The colour is passed as a string. function p._lum(color) return color2lum(color) end function p._greatercontrast(args) local bias = tonumber(args['bias'] or '0') or 0 local css = (args['css'] and args['css'] ~= '') and true or false local v1 = color2lum(args[1] or '') local c2 = args[2] or '#FFFFFF' local v2 = color2lum(c2) local c3 = args[3] or '#000000' local v3 = color2lum(c3) local ratio1 = -1; local ratio2 = -1; if (type(v1) == 'number' and type(v2) == 'number') then ratio1 = (v2 + 0.05)/(v1 + 0.05) ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1 end if (type(v1) == 'number' and type(v3) == 'number') then ratio2 = (v3 + 0.05)/(v1 + 0.05) ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2 end if css then local c1 = args[1] or '' if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c1 = '#' .. c1 end if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c2 = '#' .. c2 end if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c3 = '#' .. c3 end return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';' end return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '' end function p._ratio(args) local v1 = color2lum(args[1]) local v2 = color2lum(args[2]) if (type(v1) == 'number' and type(v2) == 'number') then -- v1 should be the brighter of the two. if v2 > v1 then v1, v2 = v2, v1 end return (v1 + 0.05)/(v2 + 0.05) else return args['error'] or '?' end end function p._styleratio(args) local style = (args[1] or ''):lower() local bg, fg = 'white', 'black' local lum_bg, lum_fg = 1, 0 if args[2] then local lum = color2lum(args[2]) if lum ~= '' then bg, lum_bg = args[2], lum end end if args[3] then local lum = color2lum(args[3]) if lum ~= '' then fg, lum_fg = args[3], lum end end local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '&#35;', '#'), ';') for k = 1,#slist do local s = slist[k] local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' ) k = k or '' v = v or '' if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_bg = v, lum end elseif (k:match('^[%s]*(color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_fg = v, lum end end end if lum_bg > lum_fg then return (lum_bg + 0.05)/(lum_fg + 0.05) else return (lum_fg + 0.05)/(lum_bg + 0.05) end end --[[ Use {{#invoke:Color contrast|somecolor}} directly or {{#invoke:Color contrast}} from a wrapper template. Parameters: -- |1= — required; A color to check. --]] function p.lum(frame) local color = frame.args[1] or frame:getParent().args[1] return p._lum(color) end function p.ratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._ratio(args) end function p.styleratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._styleratio(args) end function p.greatercontrast(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._greatercontrast(args) end return p 1e399769117591366a63f62996c9a407077cc711 Template:Help navigation 10 149 348 346 2023-09-30T19:34:49Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Help_navigation]] wikitext text/x-wiki #REDIRECT [[Template:Wikipedia help pages]] {{R from template shortcut}} {{R from move}} c8dc8546e49bfbe586503ce5abeeee1590843b2d Module:Color contrast/colors 828 150 350 349 2023-09-30T19:34:49Z Führerredux 2 1 revision imported from [[:meta:Module:Color_contrast/colors]] Scribunto text/plain return { aliceblue = 0.92880068253475, antiquewhite = 0.84646951707754, aqua = 0.7874, aquamarine = 0.8078549208338, azure = 0.97265264954166, beige = 0.8988459998705, bisque = 0.80732327372979, black = 0, blanchedalmond = 0.85084439608156, blue = 0.0722, blueviolet = 0.12622014321946, brown = 0.098224287876511, burlywood = 0.51559844533893, cadetblue = 0.29424681085422, chartreuse = 0.76032025902623, chocolate = 0.23898526114557, coral = 0.37017930872924, cornflowerblue = 0.30318641994179, cornsilk = 0.93562110372965, crimson = 0.16042199953026, cyan = 0.7874, darkblue = 0.018640801980939, darkcyan = 0.20329317839046, darkgoldenrod = 0.27264703559993, darkgray = 0.39675523072563, darkgreen = 0.091143429047575, darkgrey = 0.39675523072563, darkkhaki = 0.45747326349994, darkmagenta = 0.07353047651207, darkolivegreen = 0.12651920884889, darkorange = 0.40016167026524, darkorchid = 0.13413142174857, darkred = 0.054889674531132, darksalmon = 0.40541471563381, darkseagreen = 0.43789249325969, darkslateblue = 0.065792846227988, darkslategray = 0.067608151928044, darkslategrey = 0.067608151928044, darkturquoise = 0.4874606277449, darkviolet = 0.10999048339343, deeppink = 0.23866895828276, deepskyblue = 0.44481603395575, dimgray = 0.14126329114027, dimgrey = 0.14126329114027, dodgerblue = 0.27442536991456, firebrick = 0.10724525535015, floralwhite = 0.95922484825004, forestgreen = 0.18920812076002, fuchsia = 0.2848, gainsboro = 0.71569350050648, ghostwhite = 0.94311261886323, gold = 0.69860877428159, goldenrod = 0.41919977809569, gray = 0.2158605001139, green = 0.15438342968146, greenyellow = 0.80609472611453, grey = 0.2158605001139, honeydew = 0.96336535554782, hotpink = 0.34658438169715, indianred = 0.21406134963884, indigo = 0.03107561486337, ivory = 0.99071270600615, khaki = 0.77012343394121, lavender = 0.80318750514521, lavenderblush = 0.90172748631046, lawngreen = 0.73905893124963, lemonchiffon = 0.94038992245622, lightblue = 0.63709141280807, lightcoral = 0.35522120733135, lightcyan = 0.94587293494829, lightgoldenrodyellow = 0.93348351018297, lightgray = 0.65140563741982, lightgreen = 0.69091979956865, lightgrey = 0.65140563741982, lightpink = 0.58566152734898, lightsalmon = 0.4780675225206, lightseagreen = 0.35050145117042, lightskyblue = 0.56195637618331, lightslategray = 0.23830165007287, lightslategrey = 0.23830165007287, lightsteelblue = 0.53983888284666, lightyellow = 0.98161818392882, lime = 0.7152, limegreen = 0.44571042246098, linen = 0.88357340984379, magenta = 0.2848, maroon = 0.045891942324215, mediumaquamarine = 0.49389703310801, mediumblue = 0.044077780212328, mediumorchid = 0.21639251153773, mediumpurple = 0.22905858091648, mediumseagreen = 0.34393112338131, mediumslateblue = 0.20284629471622, mediumspringgreen = 0.70704308194184, mediumturquoise = 0.5133827926448, mediumvioletred = 0.14371899849357, midnightblue = 0.02071786635086, mintcream = 0.97834604947588, mistyrose = 0.82183047859185, moccasin = 0.80083000991567, navajowhite = 0.76519682342785, navy = 0.015585128108224, oldlace = 0.91900633405549, olive = 0.20027537200568, olivedrab = 0.22593150951929, orange = 0.4817026703631, orangered = 0.25516243753416, orchid = 0.31348806761439, palegoldenrod = 0.78792647887614, palegreen = 0.77936759006353, paleturquoise = 0.76436077921714, palevioletred = 0.28754994117889, papayawhip = 0.87797100199835, peachpuff = 0.74905589878251, peru = 0.30113074877936, pink = 0.63271070702466, plum = 0.45734221587969, powderblue = 0.68254586500605, purple = 0.061477070432439, rebeccapurple = 0.07492341159447, red = 0.2126, rosybrown = 0.32319457649407, royalblue = 0.16663210743188, saddlebrown = 0.097922285020521, salmon = 0.36977241527596, sandybrown = 0.46628543696283, seagreen = 0.19734199706275, seashell = 0.92737862206922, sienna = 0.13697631337098, silver = 0.52711512570581, skyblue = 0.55291668518184, slateblue = 0.14784278062136, slategray = 0.20896704076536, slategrey = 0.20896704076536, snow = 0.96533341834849, springgreen = 0.73052306068529, steelblue = 0.20562642207625, tan = 0.48237604163921, teal = 0.16996855778968, thistle = 0.56818401093733, tomato = 0.30638612719415, turquoise = 0.5895536427578, violet = 0.40315452986676, wheat = 0.74909702820482, white = 1, whitesmoke = 0.91309865179342, yellow = 0.9278, yellowgreen = 0.50762957208707, } 6ae47fdb24de4eed5ec26d203faf5341a388987b Template:Wikipedia how to 10 151 352 351 2023-09-30T19:34:50Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Wikipedia_how_to]] wikitext text/x-wiki #REDIRECT [[Template:Wikipedia how-to]] {{redirect category shell|{{R from move}}}} a4dd8999d6f78f4bbc7d6222d0e3036a37cc6074 Module:Side box/styles.css 828 152 354 353 2023-09-30T19:34:51Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Side_box/styles.css]] sanitized-css text/css /* {{pp|small=y}} */ .side-box { margin: 4px 0; box-sizing: border-box; border: 1px solid #aaa; font-size: 88%; line-height: 1.25em; background-color: #f9f9f9; display: flow-root; } .side-box-abovebelow, .side-box-text { padding: 0.25em 0.9em; } .side-box-image { /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .side-box-imageright { /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* roughly the skin's sidebar + size of side box */ @media (min-width: 500px) { .side-box-flex { display: flex; align-items: center; } .side-box-text { flex: 1; } } @media (min-width: 720px) { .side-box { width: 238px; } .side-box-right { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin-left: 1em; } /* derives from mbox classes, which do not float left in mbox-small-left * so far as I can tell, that was a deliberate decision, since only .ambox * supports mbox-left */ .side-box-left { /* @noflip */ margin-right: 1em; } } 5be55dbc33007e62deac23036c134ed064dbe603 Template:WikiProject Infoboxes sidebar 10 153 356 355 2023-09-30T19:34:51Z Führerredux 2 1 revision imported from [[:wikipedia:Template:WikiProject_Infoboxes_sidebar]] wikitext text/x-wiki <includeonly>{{Helpbox | name = WikiProject Infoboxes sidebar | class = plainlist collapsible {{#ifeq:{{{1|}}}|collapsed |collapsed}} | float = {{{float|right}}} | titlestyle = font-size:100%;padding:0.5em; | title = {{resize|130%|[[Wikipedia:WikiProject Infoboxes|WikiProject Infoboxes]]}}<!--(resized here otherwise [show/hide] link also resized)--> | headingstyle = font-size:105%; | list1 = {{raise|0.25em|[[Wikipedia:List of infoboxes|List of infoboxes]]}} | group2 = Style and help | list2 = *[[Wikipedia:Manual of Style/Infoboxes|Manual of Style/Infoboxes]] *[[Help:Infobox]] | group3 = Cleanup | list3 = {{Sidebar |child=yes |navbar=off | heading1 = Talk page | content1 = *{{tl|Cleanup infobox}} *{{tl|New infobox}} *{{tl|Infobox requested}} | heading2 = Article | content2 = *{{tl|Missing-taxobox}} }} | group4 = Building | list4 = *{{tl|Infobox}} *[[Wikipedia:List of infoboxes/Proposed|List of infoboxes/Proposed]] | group5 = To do | list5 = * [[:Category:Wikipedia articles with an infobox request|Add infobox]] * [[:Category:Pages needing an infobox conversion|Change template used]] * [[:Category:Wikipedia infobox cleanup|Cleanup contents]] * [[:Category:Templates suitable for conversion to use Template:Infobox|Convert to use <nowiki>{{</nowiki>Infobox}}]] }}</includeonly><noinclude> {{Documentation}} </noinclude> d2db05e6c97d88a0b4925b16966067694c2e84b8 Template:Plainlist/styles.css 10 154 358 357 2023-09-30T19:34:52Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Plainlist/styles.css]] sanitized-css text/css /* {{pp-template|small=yes}} */ .plainlist ol, .plainlist ul { line-height: inherit; list-style: none; margin: 0; padding: 0; /* Reset Minerva default */ } .plainlist ol li, .plainlist ul li { margin-bottom: 0; } 51706efa229ff8794c0d94f260a208e7c5e6ec30 Module:Shortcut/styles.css 828 155 360 359 2023-09-30T19:34:53Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Shortcut/styles.css]] sanitized-css text/css /* {{pp-template}} */ .module-shortcutboxplain { float: right; margin: 0 0 0 1em; border: 1px solid #aaa; background: #fff; padding: 0.3em 0.6em 0.2em 0.6em; text-align: center; font-size: 85%; } .module-shortcutboxleft { float: left; margin: 0 1em 0 0; } .module-shortcutlist { display: inline-block; border-bottom: 1px solid #aaa; margin-bottom: 0.2em; } .module-shortcutboxplain ul { font-weight: bold; } .module-shortcutanchordiv { position: relative; top: -3em; } li .module-shortcutanchordiv { float: right; /* IE/Edge in list items */ } .mbox-imageright .module-shortcutboxplain { padding: 0.4em 1em 0.4em 1em; line-height: 1.3; margin: 0; } ccf3877e4b14726147d3b1d8a297fbecacdb2cf8 Module:Disambiguation/templates 828 156 362 361 2023-09-30T19:34:53Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Disambiguation/templates]] Scribunto text/plain -- This page contains a table of all disambiguation templates and their -- redirects. Templates names are capitalized, and the Template: prefix is -- removed. Templates are grouped with the main template first, followed by -- its redirects. return { ['Disambiguation'] = true, ['Begriffsklärung'] = true, ['DAB'] = true, ['Dab'] = true, ['Dabpage'] = true, ['Dbig'] = true, ['Dis'] = true, ['Disam'] = true, ['Disamb'] = true, ['Disambig misspelling'] = true, ['Disambig'] = true, ['Disambig-plants'] = true, ['Disambiguation page'] = true, ['Meta disambig'] = true, ['Project disambiguation'] = true, ['Shortcut disambig'] = true, ['WP disambig'] = true, ['WP-disambig'] = true, ['Wikipedia disambiguation'] = true, ['Airport disambiguation'] = true, ['Airport disambig'] = true, ['Biology disambiguation'] = true, ['Call sign disambiguation'] = true, ['Callsigndis'] = true, ['Caselaw disambiguation'] = true, ['Case law disambiguation'] = true, ['Chinese title disambiguation'] = true, ['CJKVdab'] = true, ['Chinese title disambig'] = true, ['Disambig-Chinese-char-title'] = true, ['Disambiguation cleanup'] = true, ['Cleanup disambig'] = true, ['Cleanup disambiguation'] = true, ['CleanupDisambig'] = true, ['Dab cleanup'] = true, ['Dab-cleanup'] = true, ['Dabclean'] = true, ['Disamb-cleanup'] = true, ['Disambcleanup'] = true, ['Disambig cleanup'] = true, ['Disambig-CU'] = true, ['Disambig-cleanup'] = true, ['Disambig-cu'] = true, ['Disambigcleanup'] = true, ['Disambiguate-cleanup'] = true, ['Disambiguation-cleanup'] = true, ['Geodis-cleanup'] = true, ['Genus disambiguation'] = true, ['Genus disambig'] = true, ['Hospital disambiguation'] = true, ['Hospitaldis'] = true, ['Human name disambiguation'] = true, ['Bio-dab'] = true, ['HNDIS'] = true, ['HnDis'] = true, ['Hndab'] = true, ['Hndis'] = true, ['Hndisambig'] = true, ['Human name dab'] = true, ['Personal name disambiguation'] = true, ['Personal name'] = true, ['Human name disambiguation cleanup'] = true, ['Hndis-cleanup'] = true, ['Personal name disambiguation cleanup'] = true, ['Letter–number combination disambiguation'] = true, ['LNCD'] = true, ['Letter-Number Combination Disambiguation'] = true, ['Letter-Number combination disambiguation'] = true, ['Letter-NumberCombDisambig'] = true, ['Letter-NumberCombdisambig'] = true, ['Letter-NumberCombinationDisambiguation'] = true, ['Letter-number combination disambiguation'] = true, ['Mathematical disambiguation'] = true, ['Math dab'] = true, ['Math disambiguation'] = true, ['Mathdab'] = true, ['Mathematics disambiguation'] = true, ['Maths disambiguation'] = true, ['Military unit disambiguation'] = true, ['Mil-unit-dis'] = true, ['Mil-unit-disambig'] = true, ['Music disambiguation'] = true, ['Music disambig'] = true, ['Number disambiguation'] = true, ['Numberdis'] = true, ['Numdab'] = true, ['Numdisambig'] = true, ['Opus number disambiguation'] = true, ['Phonetics disambiguation'] = true, ['Place name disambiguation'] = true, ['DisambigG'] = true, ['DisambigGeo'] = true, ['Disambiggeo'] = true, ['Geo-dis'] = true, ['Geodab'] = true, ['Geodis'] = true, ['Geodisambig'] = true, ['Geographic disambiguation'] = true, ['Portal disambiguation'] = true, ['Portal disambig'] = true, ['Road disambiguation'] = true, ['Roaddis'] = true, ['School disambiguation'] = true, ['School disambig'] = true, ['Schooldab'] = true, ['Schooldis'] = true, ['Species Latin name abbreviation disambiguation'] = true, ['Species Latin name disambiguation'] = true, ['LatinNameDisambig'] = true, ['SpeciesLatinNameDisambig'] = true, ['Station disambiguation'] = true, ['Station dab'] = true, ['Synagogue disambiguation'] = true, ['Taxonomic authority disambiguation'] = true, ['Taxonomic authorities disambiguation'] = true, ['Taxonomy disambiguation'] = true, ['Species disambiguation'] = true, ['Template disambiguation'] = true, ['Template ambiguous'] = true, ['Template dab'] = true, ['Template disambig'] = true, ['WoO number disambiguation'] = true, } 7af08129f9ba1d6305051d78ca21d8cd58a1bea9 Template:Mbox 10 115 366 277 2023-09-30T19:36:35Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Mbox]] wikitext text/x-wiki <templatestyles src="Template:Mbox/styles.css" /> {{#invoke:Message box|mbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 728fa77a17d75dc95885aca4d53afc6ba121c503 Template:Flatlist 10 157 368 367 2023-09-30T19:36:38Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Flatlist]] wikitext text/x-wiki <templatestyles src="Hlist/styles.css"/><div class="hlist {{{class|}}}" {{#if:{{{style|}}}{{{indent|}}}|style="{{#if:{{{indent|}}}|margin-left: {{#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}"}}>{{#if:{{{1|}}}| {{{1}}} </div>}}<noinclude></div> {{documentation}} </noinclude> cf60aa4aef920d48fa394e786f72fe5f6dcd3169 Template:Infobox officeholder/office 10 158 370 369 2023-09-30T19:36:38Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Infobox_officeholder/office]] wikitext text/x-wiki {{#if:{{{speaker|}}}{{{state_legislature|}}}{{{state_assembly|}}}{{{speaker_office|}}}{{{state_delegate|}}}{{{state_house|}}}{{{prior_term|}}}{{{nominee|}}}{{{candidate|}}}{{{termstart|}}}{{{election_date|}}}{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}{{{jr/sr|}}}{{{succeeding|}}}{{{assuming|}}}{{{state|}}}{{{jr/sr and state|}}}{{{state_senate|}}}{{{district|}}}{{{ambassador_from|}}}{{{minister_from|}}}{{{order|}}}{{{office|}}}{{{title|}}}{{{country|}}}{{{constituency_AM|}}}{{{constituency_MP|}}}{{{parliament|}}}{{{assembly|}}}{{{constituency_|}}}{{{riding|}}}{{{term|}}}{{{termend|}}}{{{alongside|}}}{{{co-leader|}}} |{{#invoke:infobox|infoboxTemplate|child=yes|decat=yes | headerstyle = background:{{{color|lavender}}};line-height:normal;padding:0.2em; | datastyle = border-bottom:none <!--------Speaker of the House---------> | header1 = {{#if:{{{speaker|}}}| {{{speaker}}} {{#if:{{{state_legislature|}}} |[[Speaker of the {{{state_legislature}}} Legislature]] |{{#if:{{{state_assembly|}}} |[[Speaker of the {{{state_assembly|}}} {{#ifeq:{{{state_assembly|}}}|Nevada||{{#ifeq:{{{state_assembly|}}}|New Jersey|General|State}}}} Assembly]] |{{#if:{{{speaker_office|}}}|{{{speaker_office}}}|[[Speaker of the {{#if:{{{state_delegate|}}} |{{{state_delegate}}}|{{#if:{{{state_house|}}} |{{{state_house}}}|United States}}}} House of {{#if:{{{state_delegate|}}}|Delegates|Representatives}}|Speaker of the {{#if:{{{state_delegate|}}} |{{{state_delegate}}}|{{#if:{{{state_house|}}} |{{{state_house}}}|U.S.}}}} House of {{#if:{{{state_delegate|}}}|Delegates|Representatives}}]]}} }} }}{{#if:{{{prior_term|}}}| <br />{{{prior_term}}}}} }} <!--------Office---------> | header2 = {{#if:{{{nominee|}}}{{{candidate|}}}| {{#if:{{{party_election|}}}{{{party|}}} |{{#if:{{{party_election|}}}|{{{party_election}}}|{{{party}}}}} {{#if:{{{nominee|}}}|nominee for<br>{{{nominee}}}|candidate for<br>{{{candidate}}}}} |{{#if:{{{nominee|}}}|Nominee for<br>{{{nominee}}}|Candidate for<br>{{{candidate}}}}} }} }} | data3 = {{#if:{{{nominee|}}}{{{candidate|}}}| {{#if:{{{termstart|}}}{{{election_date|}}} | <span class="nowrap">'''Election date'''</span><br />{{#if:{{{election_date|}}}|{{{election_date}}}|{{{termstart}}}}} }} }} | header4 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}|| {{#if:{{{jr/sr|}}}|[[United States Senate|<!--Changed code to eliminate "Junior/Senior" distinction for U.S. Senators per [[Template talk:Infobox Officeholder/Archive 9#Senior/Junior U.S. Senators]]{{{jr/sr}}}-->United States Senator{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}}]]<br />from {{{state}}} }} }} | header5 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}|| {{{jr/sr and state|}}} }} | header6 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}|| {{#if:{{{state_senate|}}}|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_senate}}} Senate]]</span><br />from the {{{district}}} district{{#if:{{{prior_term|}}}| <br />{{{prior_term}}}}} }} }} | header7 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}|| {{#if:{{{state_legislature|}}}|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_legislature}}} Legislature]]</span><br />from the {{{district}}} district }} }} | header8 = {{#if:{{{ambassador_from|}}}{{{minister_from|}}}|| {{#if:{{{order|}}} |{{{order}}}{{#if:{{{office|}}} |&#32;[[{{{office}}}]]}}{{#if:{{{state|}}} |&#32;[[{{{state}}}]]}}{{#if:{{{title|}}} |&#32;{{{title}}}}} |{{{office|}}} }} }} | header9 = {{#if:{{{ambassador_from|}}}{{{minister_from|}}}|| {{#if:{{{order|}}} ||{{{title|}}} }} }} <!--------Ambassador---------> | header10 = {{#if:{{both|{{{ambassador_from|}}}{{{minister_from|}}}|{{{country|}}}}} |{{#if:{{{order|}}}|{{{order}}}}} {{#if:{{{minister_from|}}} |[[{{{minister_from}}} Ambassador to {{CountryPrefixThe|{{{country}}}}}|{{{minister_from}}} Minister to <span class="nowrap">{{CountryPrefixThe|{{{country}}}}}</span>]] |[[{{{ambassador_from}}} Ambassador to {{CountryPrefixThe|{{{country}}}}}|{{{ambassador_from}}} Ambassador to <span class="nowrap">{{CountryPrefixThe|{{{country}}}}}</span>]] }} [[Category:Pages using infobox officeholder with ambassador from or minister from]] }} <!--------MP---------> | header11 = {{#if:{{{constituency_AM|}}}{{{constituency_MP|}}}| {{#switch:{{{parliament|}}} |Australian = Member of the <span style="display: inline-block;">[[Australian House of Representatives|Australian Parliament]]</span> |European = [[Member of the European&nbsp;Parliament]] |Scottish = [[Member of the Scottish&nbsp;Parliament]] |Sri Lanka|Sri Lankan = [[Member of Parliament (Sri Lanka)|Member of Parliament]] |United Kingdom|UK = [[Member of Parliament (United Kingdom)|Member of Parliament]] |#default = {{#if:{{{constituency_AM|}}}|{{#if:{{{assembly|}}}|Member of the <span style="display: inline-block;">[[{{{assembly}}} Assembly]]</span>|Assembly Member}}|Member of {{#if:{{{parliament|}}}|the <span style="display: inline-block;">[[{{{parliament}}} Parliament]]</span>|Parliament}}}}}}<br />for {{#ifeq:{{Title disambig text|{{{constituency_MP|}}}}}|UK Parliament constituency |{{{constituency_MP|}}} |{{#if:{{#switch:{{{parliament|}}} |United Kingdom|UK| = {{Linkless exists|{{delink|{{{constituency_MP|}}}}} (UK Parliament constituency)}} }} |{{#if:{{Constlk|{{delink|{{{constituency_MP|}}}}}}} |{{Constlk|{{delink|{{{constituency_MP|}}}}}}} |{{{constituency_{{#if:{{{constituency_AM|}}}|AM|MP}}}}}}} |{{{constituency_{{#if:{{{constituency_AM|}}}|AM|MP}}}}}}} }}{{#if:{{{prior_term|}}}| <div style="font-weight:normal;">{{{prior_term}}}</div>}} }} | header12 = {{#if:{{{riding|}}}|{{#if:{{{constituency_AM|}}}|{{#if:{{{assembly|}}}|Member of the <span style="display: inline-block;">[[{{{assembly}}} Assembly]]</span>|Assembly Member}}| {{#switch:{{{parliament|}}} |Canadian = [[Member of Parliament (Canada)|Member of Parliament]] |#default = Member of {{#if:{{{parliament|}}}|the <span style="display: inline-block;">[[{{{parliament}}} Parliament]]</span>|Parliament}}}}}}<br />for {{{riding}}} }} <!--------Majority Leader (State Senate)---------> | header13 = {{#if:{{{majority_leader|}}}|{{{majority_leader}}} {{#if:{{{state_senate|}}}|[[Majority Leader of the {{{state_senate}}} Senate]]|[[United States Senate Majority Leader]]}} }} <!--------Majority Floor Leader (State Senate)---------> | header14 = {{#if:{{{majority_floor_leader|}}}|{{{majority_floor_leader}}} [[Majority Floor Leader of the {{{state_senate}}} Senate]] }} <!--------Minority Leader (State Senate)---------> | header15 = {{#if:{{{minority_leader|}}}|{{{minority_leader}}} [[Minority Leader of the {{{state_senate}}} Senate]] }} <!--------Minority Floor Leader (State Senate)---------> | header16 = {{#if:{{{minority_floor_leader|}}}|{{{minority_floor_leader}}} [[Minority Floor Leader of the {{{state_senate}}} Senate]] }} <!--------Congressman---------> | header17 = {{#if:{{{state_legislature|}}}{{{state_senate|}}}{{{jr/sr|}}}{{{jr/sr and state|}}}|| {{#if:{{#if:{{{state|}}}|{{{constituency|}}}}}{{{district|}}}{{{state_house|}}}|{{#if:{{{state_assembly|}}} |Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_assembly|}}} {{#ifeq:{{{state_assembly|}}}|Nevada||{{#ifeq:{{{state_assembly|}}}|New Jersey|General|State}}}} Assembly]]</span><br />from the |Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{#if:{{{state_house|}}} |{{{state_house}}}|{{#if:{{{state_delegate|}}}|{{{state_delegate}}}|United States }}}} {{#if:{{{state_delegate|}}}|House of Delegates|House of Representatives}}|{{#if:{{{state_house|}}} |{{{state_house}}}|{{#if:{{{state_delegate|}}}|{{{state_delegate}}}|U.S.}}}}&#32;{{#if:{{{state_delegate|}}}|House&#32;of&#32;Delegates|{{#if:{{{state_house|}}}| }}House&#32;of&#32;Representatives}}]]</span>{{#if:{{{district|}}}{{{state|}}}{{{state_delegate|}}}{{{state_house|}}}|<br />from {{#if:{{{state_delegate|}}}|the |{{#if:{{{state_house|}}}|{{#if:{{{district|}}}|the|{{{state|}}}}}|{{{state|}}}{{#if:{{{district|}}}|'s}}}}}} }}}} {{#if:{{{district|}}}|{{{district}}} district|{{#if:{{{state_house|}}}|{{{constituency|}}}}}}}{{#if:{{{prior_term|}}}| <br />{{{prior_term}}}}} }} }} <!--------Convocation---------> | header18 = {{#if:{{{convocation|}}}|{{{convocation}}}}} <!--------Term---------> | data19 = {{#if:{{{termend|}}}{{{succeeding|}}}{{{assuming|}}}| {{#if:{{{status|}}} | <div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''{{{status}}}'''</div>|}}| }} | data20 = {{#if:{{{nominee|}}}{{{candidate|}}}|| {{#if:{{{succeeding|}}}{{{assuming|}}} | <span class="nowrap">'''Assuming office'''</span><br />{{{termstart}}}{{#if:{{{term|}}}{{{termend|}}}|[[Category:Pages using infobox officeholder with succeeding and term or termend]]}} | {{#if: {{{term|}}} | <span class="nowrap">'''{{{termlabel|In office}}}'''</span><br />{{{term}}} }} }} }} | data21 = {{#if:{{{nominee|}}}{{{candidate|}}}|| {{#if:{{{succeeding|}}}{{{assuming|}}} | |{{#if:{{{termstart|}}} | {{#if:{{{termend|}}} |<!--then: term has start and end:--><span class="nowrap">'''{{{termlabel|In office}}}'''</span><br />{{en dash range|{{{termstart}}}|{{{termend}}}}}{{#if:{{{alongside|}}}{{{co-leader|}}}|<div style="line-height:normal; padding-top:0.2em; padding-bottom:0.1em">{{#if:{{{alongside|}}}|Serving|Co-leading}}&#32;with&#32;{{#if:{{{alongside|}}}|{{{alongside}}}|{{{co-leader}}}}}</div>}} |{{#if:{{{status|}}}|<div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''{{{status}}}'''</div>|<!--else: term is ongoing--><div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''[[Incumbent]]'''</div>}} }} }} }} }} | data22 = {{#if:{{{nominee|}}}{{{candidate|}}}|| {{#if:{{{succeeding|}}}{{{assuming|}}} | |{{#if:{{{termstart|}}} |{{#if:{{{termend|}}} |<!--then nothing else; term has ended--> |<!--else term is ongoing:--><span class="nowrap">'''{{#if:{{{termlabel|}}}|{{str rep|1={{{termlabel}}}|2=In office|3=Assumed office}}|Assumed office}}'''</span>&#32;<br />{{{termstart}}}{{#if:{{{alongside|}}}{{{co-leader|}}}|<div style="line-height:normal; padding-top:0.2em; padding-bottom:0.1em">{{#if:{{{alongside|}}}|Serving|Co-leader}}&#32;with&#32;{{#if:{{{alongside|}}}|{{{alongside}}}|{{{co-leader}}}}}</div>}} }} }} }} }} }} }}<!-- end infobox1 / start infobox2 -->{{#if:{{{monarch|}}}{{{president|}}}{{{governor-general|}}}{{{governor_general|}}}{{{primeminister|}}}{{{chancellor|}}}{{{minister|}}}{{{taoiseach|}}}{{{firstminister|}}}{{{chiefminister|}}}{{{premier|}}}{{{governor|}}}{{{lieutenant_governor|}}}{{{vicepresident|}}}{{{vicegovernor|}}}{{{viceprimeminister|}}}{{{vicepremier|}}}{{{deputy|}}}{{{leader|}}}{{{lieutenant|}}}{{{nominator|}}}{{{appointer|}}}{{{opponent|}}}{{{incumbent|}}}{{{succeeding|}}}{{{assuming|}}}{{{preceding|}}}{{{predecessor|}}}{{{preceded|}}}{{{successor|}}}{{{succeeded|}}}{{{parliamentarygroup|}}}{{{constituency|}}}{{{majority|}}}{{{suboffice|}}}{{{1namedata|}}}{{{2namedata|}}}{{{3namedata|}}}{{{4namedata|}}}{{{5namedata|}}}{{{runningmate|}}}| {{#invoke:infobox|infoboxTemplate|child=yes | labelstyle = text-align:left | label1 = <span class="nowrap">Nominated by</span> | data1 = {{{nominator|}}} | label2 = <span class="nowrap">Appointed by</span> | data2 = {{{appointer|}}} <!--------President, Prime Minister, Governor---------> | label3 = Monarch{{#if:{{detect singular|{{{monarch|}}}}}||s}} | data3 = {{{monarch|}}} | label4 = President | data4 = {{{president|}}} | label5 = {{#if:{{{governor_general|}}}|Governor{{#if:{{detect singular|{{{governor_general}}}}}||s}} General|Governor{{#if:{{detect singular|{{{governor-general}}}}}||s}}-General}} | data5 = {{#if:{{{governor_general|}}}|{{{governor_general}}}|{{{governor-general|}}}}} | label6 = <span class="nowrap">Prime Minister</span> | data6 = {{{primeminister|}}} | label7 = Chancellor | data7 = {{{chancellor|}}} | label8 = Minister | data8 = {{{minister|}}} | label9 = Taoiseach | data9 = {{{taoiseach|}}} | label10 = <span class="nowrap">First Minister</span> | data10 = {{{firstminister|}}} | label11 = <span class="nowrap">Chief Minister</span> | data11 = {{{chiefminister|}}} | label12 = Premier | data12 = {{{premier|}}} | label13 = Governor | data13 = {{{governor|}}} | label14 = Lieutenant Governor | data14 = {{{lieutenant_governor|}}} <!--------Vice president/s, Vice Prime Minister/s, Deputy/ies, Lieutenant/s---------> | label15 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice President]]|Vice President}}|Vice President}}</span> | data15 = {{{vicepresident|}}} | label16 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice Governor]]|Vice Governor}}|Vice Governor}}</span> | data16 = {{{vicegovernor|}}} | label17 = <span class="nowrap">{{#if:{{{office|}}}|[[Vice {{{office}}}|Vice PM]]|Vice [[Prime Minister|PM]]}}</span> | data17 = {{{viceprimeminister|}}} | label18 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice Premier]]|Vice Premier}}|Vice Premier}}</span> | data18 = {{{vicepremier|}}} | label19 = {{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Deputy {{{office}}}}}|valid|[[Deputy {{{office}}}|Deputy]]|Deputy}}|Deputy}} | data19 = {{{deputy|}}} | label20 = Leader | data20 = {{{leader|}}} | label21 = {{#if:{{{office|}}}|[[Lieutenant {{{office}}}|Lieutenant]]|Lieutenant}} | data21 = {{{lieutenant|}}} | label22 = {{nowrap|{{{subterm|}}}}} | data22 = {{{suboffice|}}} <!--------Blank fields---------> | label23 = {{{1blankname|}}} | data23 = {{{1namedata|}}} | label24 = {{{2blankname|}}} | data24 = {{{2namedata|}}} | label25 = {{{3blankname|}}} | data25 = {{{3namedata|}}} | label26 = {{{4blankname|}}} | data26 = {{{4namedata|}}} | label27 = {{{5blankname|}}} | data27 = {{{5namedata|}}} <!--------Predecessor/successor---------> | label28 = <span class="nowrap">Running mate</span> | data28 = {{{runningmate|}}} | label29 = Opponent{{Pluralize from text|{{{opponent|}}}|likely=(s)|plural=s}} | data29 = {{{opponent|}}} | label30 = Incumbent | data30 = {{{incumbent|}}} | label31 = {{#if:{{{succeeding|}}}|Succeeding|Preceding}} | data31 = {{#if:{{{succeeding|}}}|{{{succeeding|}}}|{{{preceding|}}}}} | label32 = <span class="nowrap">Preceded by</span> | data32 = {{#if:{{{succeeding|}}}||{{#if:{{{predecessor|}}}|{{{predecessor}}}|{{{preceded|}}}}}}} | label33 = <span class="nowrap">Succeeded by</span> | data33 = {{#if:{{{succeeding|}}}||{{#switch:{{#if:{{{successor|}}}|{{{successor}}}|{{{succeeded|}}}}} | Incumbent | '''Incumbent''' | ''Incumbent'' | [[Incumbent]] | incumbent | '''incumbent''' | ''incumbent'' | [[incumbent]] = | #default = {{#if:{{{successor|}}}|{{{successor}}}|{{{succeeded|}}}}} }}}} <!--------Constituency/Majority---------> | label34 = [[Parliamentary group]] | data34 = {{{parliamentarygroup|}}} | label35 = Constituency | data35 = {{#if:{{{state_house|}}}||{{{constituency|}}}}} | label36 = Majority | data36 = {{{majority|}}} }} }}<noinclude>{{documentation}}</noinclude> 78e1d0c6824133f19dbb0aa4c7571c928b233dbc Template:Both 10 159 372 371 2023-09-30T19:36:39Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Both]] wikitext text/x-wiki {{SAFESUBST:<noinclude />#if:{{{1|}}}|{{SAFESUBST:<noinclude />#if:{{{2|}}}|1}}}}<noinclude> {{documentation}} </noinclude> 57c3c0ffa811a7f31c675b2d79aedf4382e9b88d Template:Str rep 10 160 374 373 2023-09-30T19:36:39Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Str_rep]] wikitext text/x-wiki {{#invoke:String|replace|source={{{1}}}|{{{2}}}|{{{3}}}|1}}<noinclude> {{Documentation}}</noinclude> 4706daa3137857f2792cc7109ca24b6d58c78dee Template:Title disambig text 10 161 376 375 2023-09-30T19:36:40Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Title_disambig_text]] wikitext text/x-wiki {{safesubst<noinclude/>:#invoke:String|match|{{{1|{{PAGENAME}}}}}|%s%((.-%)?)%)||-1|ignore_errors=true}}<noinclude> {{Documentation}} </noinclude> 09be4d07c948b00ed15066030e4a7029dd966c0a Template:Br separated entries 10 162 378 377 2023-09-30T19:36:41Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Br_separated_entries]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:Separated entries|br}}<noinclude> {{documentation}} </noinclude> 2019f7fc383259e70d66e43cbd97a43d20889f1b Template:Unbulleted list 10 163 380 379 2023-09-30T19:36:42Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Unbulleted_list]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:list|unbulleted}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 89815a491d3e05b20af446e34cda13f13c25fb4f Module:InfoboxImage 828 164 382 381 2023-09-30T19:36:43Z Führerredux 2 1 revision imported from [[:wikipedia:Module:InfoboxImage]] Scribunto text/plain -- Inputs: -- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link -- page - page to display for multipage images (DjVu) -- size - size to display the image -- maxsize - maximum size for image -- sizedefault - default size to display the image if size param is blank -- alt - alt text for image -- title - title text for image -- border - set to yes if border -- center - set to yes, if the image has to be centered -- upright - upright image param -- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it -- link - page to visit when clicking on image -- class - HTML classes to add to the image -- Outputs: -- Formatted image. -- More details available at the "Module:InfoboxImage/doc" page local i = {}; local placeholder_image = { "Blue - Replace this image female.svg", "Blue - Replace this image male.svg", "Female no free image yet.png", "Flag of None (square).svg", "Flag of None.svg", "Flag of.svg", "Green - Replace this image female.svg", "Green - Replace this image male.svg", "Image is needed female.svg", "Image is needed male.svg", "Location map of None.svg", "Male no free image yet.png", "Missing flag.png", "No flag.svg", "No free portrait.svg", "No portrait (female).svg", "No portrait (male).svg", "Red - Replace this image female.svg", "Red - Replace this image male.svg", "Replace this image female (blue).svg", "Replace this image female.svg", "Replace this image male (blue).svg", "Replace this image male.svg", "Silver - Replace this image female.svg", "Silver - Replace this image male.svg", "Replace this image.svg", "Cricket no pic.png", "CarersLogo.gif", "Diagram Needed.svg", "Example.jpg", "Image placeholder.png", "No male portrait.svg", "Nocover-upload.png", "NoDVDcover copy.png", "Noribbon.svg", "No portrait-BFD-test.svg", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Sin bandera.svg", "Sin escudo.svg", "Replace this image - temple.png", "Replace this image butterfly.png", "Replace this image.svg", "Replace this image1.svg", "Resolution angle.png", "Image-No portrait-text-BFD-test.svg", "Insert image here.svg", "No image available.png", "NO IMAGE YET square.png", "NO IMAGE YET.png", "No Photo Available.svg", "No Screenshot.svg", "No-image-available.jpg", "Null.png", "PictureNeeded.gif", "Place holder.jpg", "Unbenannt.JPG", "UploadACopyrightFreeImage.svg", "UploadAnImage.gif", "UploadAnImage.svg", "UploadAnImageShort.svg", "CarersLogo.gif", "Diagram Needed.svg", "No male portrait.svg", "NoDVDcover copy.png", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Noimage.gif", } function i.IsPlaceholder(image) -- change underscores to spaces image = mw.ustring.gsub(image, "_", " "); assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil') -- if image starts with [[ then remove that and anything after | if mw.ustring.sub(image,1,2) == "[[" then image = mw.ustring.sub(image,3); image = mw.ustring.gsub(image, "([^|]*)|.*", "%1"); assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil') end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil") -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); -- capitalise first letter image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2); for i,j in pairs(placeholder_image) do if image == j then return true end end return false end function i.InfoboxImage(frame) local image = frame.args["image"]; if image == "" or image == nil then return ""; end if image == "&nbsp;" then return image; end if frame.args["suppressplaceholder"] ~= "no" then if i.IsPlaceholder(image) == true then return ""; end end if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then return ""; end if mw.ustring.sub(image,1,2) == "[[" then -- search for thumbnail images and add to tracking cat if found local cat = ""; if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then cat = "[[Category:Pages using infoboxes with thumbnail images]]"; end return image .. cat; elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then return image; elseif mw.ustring.sub(image,1,1) == "<" then return image; elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then -- Found strip marker at begining, so pass don't process at all return image; elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then -- Found strip marker at begining, so pass don't process at all return image; else local result = ""; local page = frame.args["page"]; local size = frame.args["size"]; local maxsize = frame.args["maxsize"]; local sizedefault = frame.args["sizedefault"]; local alt = frame.args["alt"]; local link = frame.args["link"]; local title = frame.args["title"]; local border = frame.args["border"]; local upright = frame.args["upright"] or ""; local thumbtime = frame.args["thumbtime"] or ""; local center = frame.args["center"]; local class = frame.args["class"]; -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end if maxsize ~= "" and maxsize ~= nil then -- if no sizedefault then set to maxsize if sizedefault == "" or sizedefault == nil then sizedefault = maxsize end -- check to see if size bigger than maxsize if size ~= "" and size ~= nil then local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0; local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0; if sizenumber>maxsizenumber and maxsizenumber>0 then size = maxsize; end end end -- add px to size if just a number if (tonumber(size) or 0) > 0 then size = size .. "px"; end -- add px to sizedefault if just a number if (tonumber(sizedefault) or 0) > 0 then sizedefault = sizedefault .. "px"; end result = "[[File:" .. image; if page ~= "" and page ~= nil then result = result .. "|page=" .. page; end if size ~= "" and size ~= nil then result = result .. "|" .. size; elseif sizedefault ~= "" and sizedefault ~= nil then result = result .. "|" .. sizedefault; else result = result .. "|frameless"; end if center == "yes" then result = result .. "|center" end if alt ~= "" and alt ~= nil then result = result .. "|alt=" .. alt; end if link ~= "" and link ~= nil then result = result .. "|link=" .. link; end if border == "yes" then result = result .. "|border"; end if upright == "yes" then result = result .. "|upright"; elseif upright ~= "" then result = result .. "|upright=" .. upright; end if thumbtime ~= "" then result = result .. "|thumbtime=" .. thumbtime; end if class ~= nil and class ~= "" then result = result .. "|class=" .. class; end -- if alt value is a keyword then do not use as a description if alt == "thumbnail" or alt == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then alt = nil; end if title ~= "" and title ~= nil then -- does title param contain any templatestyles? If yes then set to blank. if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then title = nil; end end if title ~= "" and title ~= nil then result = result .. "|" .. title; end result = result .. "]]"; return result; end end return i; 0ee5fe75ba239fc5c9cedc81ca11bdc0be068542 Module:Separated entries 828 165 384 383 2023-09-30T19:36:44Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Separated_entries]] Scribunto text/plain -- This module takes positional parameters as input and concatenates them with -- an optional separator. The final separator (the "conjunction") can be -- specified independently, enabling natural-language lists like -- "foo, bar, baz and qux". The starting parameter can also be specified. local compressSparseArray = require('Module:TableTools').compressSparseArray local p = {} function p._main(args) local separator = args.separator -- Decode (convert to Unicode) HTML escape sequences, such as "&#32;" for space. and mw.text.decode(args.separator) or '' local conjunction = args.conjunction and mw.text.decode(args.conjunction) or separator -- Discard values before the starting parameter. local start = tonumber(args.start) if start then for i = 1, start - 1 do args[i] = nil end end -- Discard named parameters. local values = compressSparseArray(args) return mw.text.listToText(values, separator, conjunction) end local function makeInvokeFunction(separator, conjunction, first) return function (frame) local args = require('Module:Arguments').getArgs(frame) args.separator = separator or args.separator args.conjunction = conjunction or args.conjunction args.first = first or args.first return p._main(args) end end p.main = makeInvokeFunction() p.br = makeInvokeFunction('<br />') p.comma = makeInvokeFunction(mw.message.new('comma-separator'):plain()) return p e80231ff3de01afd7f62a94e0a34dc1e67504085 Template:Delink 10 166 386 385 2023-09-30T19:36:45Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Delink]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:delink|delink}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> ccf86b4255142fffb206ab8240f36ed22e029d6a Module:Delink 828 167 388 387 2023-09-30T19:36:45Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Delink]] Scribunto text/plain -- This module de-links most wikitext. require("strict") local p = {} local getArgs local function delinkReversePipeTrick(s) if s:match("^%[%[|.*[|\n]") then -- Check for newlines or multiple pipes. return s end return s:match("%[%[|(.*)%]%]") end local function delinkPipeTrick(s) -- We need to deal with colons, brackets, and commas, per [[Help:Pipe trick]]. -- First, remove the text before the first colon, if any. if s:match(":") then s = s:match("%[%[.-:(.*)|%]%]") -- If there are no colons, grab all of the text apart from the square brackets and the pipe. else s = s:match("%[%[(.*)|%]%]") end -- Next up, brackets and commas. if s:match("%(.-%)$") then -- Brackets trump commas. s = s:match("(.-) ?%(.-%)$") elseif s:match(",") then -- If there are no brackets, display only the text before the first comma. s = s:match("(.-),.*$") end return s end -- Return wikilink target |wikilinks=target local function getDelinkedTarget(s) local result = s -- Deal with the reverse pipe trick. if result:match("%[%[|") then return delinkReversePipeTrick(result) end result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs. result = mw.text.decode(result, true) -- decode HTML entities. -- Check for bad titles. To do this we need to find the -- title area of the link, i.e. the part before any pipes. local target_area if result:match("|") then -- Find if we're dealing with a piped link. target_area = result:match("^%[%[(.-)|.*%]%]") else target_area = result:match("^%[%[(.-)%]%]") end -- Check for bad characters. if mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") and mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") ~= "?" then return s end return target_area end local function getDelinkedLabel(s) local result = s -- Deal with the reverse pipe trick. if result:match("%[%[|") then return delinkReversePipeTrick(result) end result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs. result = mw.text.decode(result, true) -- decode HTML entities. -- Check for bad titles. To do this we need to find the -- title area of the link, i.e. the part before any pipes. local target_area if result:match("|") then -- Find if we're dealing with a piped link. target_area = result:match("^%[%[(.-)|.*%]%]") else target_area = result:match("^%[%[(.-)%]%]") end -- Check for bad characters. if mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") and mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") ~= "?" then return s end -- Check for categories, interwikis, and files. local colon_prefix = result:match("%[%[(.-):.*%]%]") or "" -- Get the text before the first colon. local ns = mw.site.namespaces[colon_prefix] -- see if this is a known namespace if mw.language.isKnownLanguageTag(colon_prefix) or (ns and (ns.canonicalName == "File" or ns.canonicalName == "Category")) then return "" end -- Remove the colon if the link is using the [[Help:Colon trick]]. if result:match("%[%[:") then result = "[[" .. result:match("%[%[:(.*%]%])") end -- Deal with links using the [[Help:Pipe trick]]. if mw.ustring.match(result, "^%[%[[^|]*|%]%]") then return delinkPipeTrick(result) end -- Find the display area of the wikilink if result:match("|") then -- Find if we're dealing with a piped link. result = result:match("^%[%[.-|(.+)%]%]") -- Remove new lines from the display of multiline piped links, -- where the pipe is before the first new line. result = result:gsub("\n", "") else result = result:match("^%[%[(.-)%]%]") end return result end local function delinkURL(s) -- Assume we have already delinked internal wikilinks, and that -- we have been passed some text between two square brackets [foo]. -- If the text contains a line break it is not formatted as a URL, regardless of other content. if s:match("\n") then return s end -- Check if the text has a valid URL prefix and at least one valid URL character. local valid_url_prefixes = {"//", "http://", "https://", "ftp://", "gopher://", "mailto:", "news:", "irc://"} local url_prefix for _ ,v in ipairs(valid_url_prefixes) do if mw.ustring.match(s, '^%[' .. v ..'[^"%s].*%]' ) then url_prefix = v break end end -- Get display text if not url_prefix then return s end s = s:match("^%[" .. url_prefix .. "(.*)%]") -- Grab all of the text after the URL prefix and before the final square bracket. s = s:match('^.-(["<> ].*)') or "" -- Grab all of the text after the first URL separator character ("<> ). s = mw.ustring.match(s, "^%s*(%S.*)$") or "" -- If the separating character was a space, trim it off. local s_decoded = mw.text.decode(s, true) if mw.ustring.match(s_decoded, "%c") then return s end return s_decoded end local function delinkLinkClass(text, pattern, delinkFunction) if type(text) ~= "string" then error("Attempt to de-link non-string input.", 2) end if type(pattern) ~= "string" or mw.ustring.sub(pattern, 1, 1) ~= "^" then error('Invalid pattern detected. Patterns must begin with "^".', 2) end -- Iterate over the text string, and replace any matched text. using the -- delink function. We need to iterate character by character rather -- than just use gsub, otherwise nested links aren't detected properly. local result = "" while text ~= "" do -- Replace text using one iteration of gsub. text = mw.ustring.gsub(text, pattern, delinkFunction, 1) -- Append the left-most character to the result string. result = result .. mw.ustring.sub(text, 1, 1) text = mw.ustring.sub(text, 2, -1) end return result end function p._delink(args) local text = args[1] or "" if args.refs == "yes" then -- Remove any [[Help:Strip markers]] representing ref tags. In most situations -- this is not a good idea - only use it if you know what you are doing! text = mw.ustring.gsub(text, "UNIQ%w*%-ref%-%d*%-QINU", "") end if args.comments ~= "no" then text = text:gsub("<!%-%-.-%-%->", "") -- Remove html comments. end if args.wikilinks ~= "no" and args.wikilinks ~= "target" then -- De-link wikilinks and return the label portion of the wikilink. text = delinkLinkClass(text, "^%[%[.-%]%]", getDelinkedLabel) elseif args.wikilinks == "target" then -- De-link wikilinks and return the target portions of the wikilink. text = delinkLinkClass(text, "^%[%[.-%]%]", getDelinkedTarget) end if args.urls ~= "no" then text = delinkLinkClass(text, "^%[.-%]", delinkURL) -- De-link URLs. end if args.whitespace ~= "no" then -- Replace single new lines with a single space, but leave double new lines -- and new lines only containing spaces or tabs before a second new line. text = mw.ustring.gsub(text, "([^\n \t][ \t]*)\n([ \t]*[^\n \t])", "%1 %2") text = text:gsub("[ \t]+", " ") -- Remove extra tabs and spaces. end return text end function p.delink(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return p._delink(getArgs(frame, {wrappers = 'Template:Delink'})) end return p 5b8e75ac750b5d3ed76cc4158aefcd1568a6a6fd Template:En dash range 10 168 390 389 2023-09-30T19:36:46Z Führerredux 2 1 revision imported from [[:wikipedia:Template:En_dash_range]] wikitext text/x-wiki {{{1}}}{{#ifeq:{{#invoke:String|find|source={{#invoke:Plain text|main|{{{1}}}{{{2}}}}}|target=[%s–—-]|plain=false}}|0|–|&nbsp;–&#32;}}{{{2}}}<noinclude> {{Documentation}} </noinclude> 4f0bde90a2efc3a10317f528ce19b0e0fd212808 Module:Plain text 828 169 392 391 2023-09-30T19:36:47Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Plain_text]] Scribunto text/plain --converts text with wikilinks to plain text, e.g "[[foo|gah]] is [[bar]]" to "gah is bar" --removes anything enclosed in tags that isn't nested, mediawiki strip markers (references etc), files, italic and bold markup require[[strict]] local p = {} function p.main(frame) local text = frame.args[1] local encode = require('Module:yesno')(frame.args.encode) return p._main(text, encode) end function p._main(text, encode) if not text then return end text = mw.text.killMarkers(text) :gsub('&nbsp;', ' ') --replace nbsp spaces with regular spaces :gsub('<br ?/?>', ', ') --replace br with commas :gsub('<span.->(.-)</span>', '%1') --remove spans while keeping text inside :gsub('<i.->(.-)</i>', '%1') --remove italics while keeping text inside :gsub('<b.->(.-)</b>', '%1') --remove bold while keeping text inside :gsub('<em.->(.-)</em>', '%1') --remove emphasis while keeping text inside :gsub('<strong.->(.-)</strong>', '%1') --remove strong while keeping text inside :gsub('<sub.->(.-)</sub>', '%1') --remove subscript markup; retain contents :gsub('<sup.->(.-)</sup>', '%1') --remove superscript markup; retain contents :gsub('<u.->(.-)</u>', '%1') --remove underline markup; retain contents :gsub('<.->.-<.->', '') --strip out remaining tags and the text inside :gsub('<.->', '') --remove any other tag markup :gsub('%[%[%s*[Ff][Ii][Ll][Ee]%s*:.-%]%]', '') --strip out files :gsub('%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:.-%]%]', '') --strip out use of image: :gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:.-%]%]', '') --strip out categories :gsub('%[%[[^%]]-|', '') --strip out piped link text :gsub('([^%[])%[[^%[%]][^%]]-%s', '%1') --strip out external link text :gsub('^%[[^%[%]][^%]]-%s', '') --strip out external link text :gsub('[%[%]]', '') --then strip out remaining [ and ] :gsub("'''''", "") --strip out bold italic markup :gsub("'''?", "") --not stripping out '''' gives correct output for bolded text in quotes :gsub('----+', '') --remove ---- lines :gsub("^%s+", "") --strip leading :gsub("%s+$", "") --and trailing spaces :gsub("%s+", " ") --strip redundant spaces if encode then return mw.text.encode(text) else return text end end return p 8d406c43e8cf1dadf34be7d3b395f44ba4c48b75 Template:PAGENAMEBASE 10 170 394 393 2023-09-30T19:36:48Z Führerredux 2 1 revision imported from [[:wikipedia:Template:PAGENAMEBASE]] wikitext text/x-wiki {{{{{|safesubst:}}}#Invoke:String|replace|{{{1|{{{{{|safesubst:}}}PAGENAME}}}}}|%s+%b()$||1|false}}<noinclude> {{documentation}} </noinclude> f23a5d434cb5b0baac5e1f58e9ceef9118e6873f Template:Refbegin 10 171 396 395 2023-09-30T19:36:48Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Refbegin]] wikitext text/x-wiki <includeonly><templatestyles src="Refbegin/styles.css" /><!-- --><div class="refbegin <!-- -->{{#if: {{{indent|}}} | refbegin-hanging-indents }} <!-- -->{{#if: {{{1|}}} | refbegin-columns {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} | references-column-width | references-column-count references-column-count-{{#if:1|{{{1}}}}} }} | {{#if: {{{colwidth|}}} | references-column-width }} }}" style="<!-- -->{{#if: {{{1|}}} | {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} | column-width: {{#if:1|{{{1|30em}}}}} | column-count: {{#if:1|{{{1}}}}}; }} | {{#if: {{{colwidth|}}} | column-width: {{{colwidth|30em}}} }} }}"></includeonly><noinclude> {{Documentation}} </noinclude> da42157a5c16164d1de140113dabd9e71ad03401 Template:Refbegin/styles.css 10 172 398 397 2023-09-30T19:36:51Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Refbegin/styles.css]] sanitized-css text/css /* {{pp-template}} */ .refbegin { font-size: 90%; margin-bottom: 0.5em; } .refbegin-hanging-indents > ul { margin-left: 0; } .refbegin-hanging-indents > ul > li { margin-left: 0; padding-left: 3.2em; text-indent: -3.2em; } .refbegin-hanging-indents ul, .refbegin-hanging-indents ul li { list-style: none; } @media (max-width: 720px) { .refbegin-hanging-indents > ul > li { padding-left: 1.6em; text-indent: -1.6em; } } .refbegin-columns { margin-top: 0.3em; } /* Reset top margin for lists embedded in columns */ .refbegin-columns ul { margin-top: 0; } /* Avoid elements breaking between columns */ .refbegin-columns li { page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */ break-inside: avoid-column; } 287ba19370a7bfc842825711a05d34dae68d5f64 Template:Refend 10 173 400 399 2023-09-30T19:36:51Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Refend]] wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{template doc|Template:refbegin/doc}} {{TemplateDataHeader}} <templatedata> { "description": "Ends a reference lists started by {{refbegin}}.", "params": { } } </templatedata> </noinclude> ae41356c6aab3e8901a484fcb46ff4aa314f1bb9 Template:Pluralize from text 10 174 402 401 2023-09-30T19:36:56Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Pluralize_from_text]] wikitext text/x-wiki {{#invoke:Detect singular|pluralize}}<noinclude>{{documentation}}</noinclude> 305f4b531ea5639895c83cecd0fd809f7f5cf845 Module:Detect singular 828 175 404 403 2023-09-30T19:36:57Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Detect_singular]] Scribunto text/plain local p = {} local getArgs = require('Module:Arguments').getArgs local yesNo = require('Module:Yesno') local getPlain = require('Module:Text').Text().getPlain -- function to determine whether "sub" occurs in "s" local function plainFind(s, sub) return mw.ustring.find(s, sub, 1, true) end -- function to count the number of times "pattern" (a regex) occurs in "s" local function countMatches(s, pattern) local _, count = mw.ustring.gsub(s, pattern, '') return count end local singular = 1 local likelyPlural = 2 local plural = 3 -- Determine whether a string is singular or plural (i.e., it represents one -- item or many) -- Arguments: -- origArgs[1]: string to process -- origArgs.no_comma: if false, use commas to detect plural (default false) -- origArgs.parse_links: if false, treat wikilinks as opaque singular objects (default false) -- Returns: -- singular, likelyPlural, or plural (see constants above), or nil for completely unknown function p._main(origArgs) origArgs = type(origArgs) == 'table' and origArgs or {} local args = {} -- canonicalize boolean arguments for key, default in pairs({no_comma=false,parse_links=false,any_comma=false,no_and=false}) do if origArgs[key] == nil then args[key] = default else args[key] = yesNo(origArgs[key],default) end end local checkComma = not args.no_comma local checkAnd = not args.no_and local rewriteLinks = not args.parse_links local anyComma = args.any_comma local s = origArgs[1] -- the input string if not s then return nil -- empty input returns nil end s = tostring(s) s = mw.text.decode(s,true) --- replace HTML entities (to avoid spurious semicolons) if plainFind(s,'data-plural="0"') then -- magic data string to return true return singular end if plainFind(s,'data-plural="1"') then -- magic data string to return false return plural end -- count number of list items local numListItems = countMatches(s,'<%s*li') -- if exactly one, then singular, if more than one, then plural if numListItems == 1 then return singular end if numListItems > 1 then return plural end -- if "list of" occurs inside of wlink, then it's plural if mw.ustring.find(s:lower(), '%[%[[^%]]*list of[^%]]+%]%]') then return plural end -- fix for trailing br tags passed through [[template:marriage]] s = mw.ustring.gsub(s, '<%s*br[^>]*>%s*(</div>)', '%1') -- replace all wikilinks with fixed string if rewriteLinks then s = mw.ustring.gsub(s,'%b[]','WIKILINK') end -- Five conditions: any one of them can make the string a likely plural or plural local hasBreak = mw.ustring.find(s,'<%s*br') -- For the last 4, evaluate on string stripped of wikimarkup s = getPlain(s) local hasBullets = countMatches(s,'%*+') > 1 local multipleQids = mw.ustring.find(s,'Q%d+[%p%s]+Q%d+') -- has multiple QIDs in a row if hasBullets or multipleQids then return plural end local commaPattern = anyComma and '[,;]' or '%D[,;]%D' -- semi-colon similar to comma local hasComma = checkComma and mw.ustring.find(s, commaPattern) local hasAnd = checkAnd and mw.ustring.find(s,'[,%s]and%s') if hasBreak or hasComma or hasAnd then return likelyPlural end return singular end function p._pluralize(args) args = type(args) == 'table' and args or {} local singularForm = args[3] or args.singular or "" local pluralForm = args[4] or args.plural or "" local likelyForm = args.likely or pluralForm local link = args[5] or args.link if link then link = tostring(link) singularForm = '[['..link..'|'..singularForm..']]' pluralForm = '[['..link..'|'..pluralForm..']]' likelyForm = '[['..link..'|'..likelyForm..']]' end if args[2] then return pluralForm end local detect = p._main(args) if detect == nil then return "" -- return blank on complete failure end if detect == singular then return singularForm elseif detect == likelyPlural then return likelyForm else return pluralForm end end function p.main(frame) local args = getArgs(frame) -- For template, return 1 if singular, blank if plural or empty local result = p._main(args) if result == nil then return 1 end return result == singular and 1 or "" end function p.pluralize(frame) local args = getArgs(frame) return p._pluralize(args) end return p 6afb2e8c0bd8ddff094e2861b836521ee4a5a779 Module:Text 828 176 406 405 2023-09-30T19:36:57Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Text]] Scribunto text/plain local yesNo = require("Module:Yesno") local Text = { serial = "2022-07-21", suite = "Text" } --[=[ Text utilities ]=] -- local globals local PatternCJK = false local PatternCombined = false local PatternLatin = false local PatternTerminated = false local QuoteLang = false local QuoteType = false local RangesLatin = false local SeekQuote = false local function initLatinData() if not RangesLatin then RangesLatin = { { 7, 687 }, { 7531, 7578 }, { 7680, 7935 }, { 8194, 8250 } } end if not PatternLatin then local range PatternLatin = "^[" for i = 1, #RangesLatin do range = RangesLatin[ i ] PatternLatin = PatternLatin .. mw.ustring.char( range[ 1 ], 45, range[ 2 ] ) end -- for i PatternLatin = PatternLatin .. "]*$" end end local function initQuoteData() -- Create quote definitions if not QuoteLang then QuoteLang = { af = "bd", ar = "la", be = "labd", bg = "bd", ca = "la", cs = "bd", da = "bd", de = "bd", dsb = "bd", et = "bd", el = "lald", en = "ld", es = "la", eu = "la", -- fa = "la", fi = "rd", fr = "laSPC", ga = "ld", he = "ldla", hr = "bd", hsb = "bd", hu = "bd", hy = "labd", id = "rd", is = "bd", it = "ld", ja = "x300C", ka = "bd", ko = "ld", lt = "bd", lv = "bd", nl = "ld", nn = "la", no = "la", pl = "bdla", pt = "lald", ro = "bdla", ru = "labd", sk = "bd", sl = "bd", sq = "la", sr = "bx", sv = "rd", th = "ld", tr = "ld", uk = "la", zh = "ld", ["de-ch"] = "la", ["en-gb"] = "lsld", ["en-us"] = "ld", ["fr-ch"] = "la", ["it-ch"] = "la", ["pt-br"] = "ldla", ["zh-tw"] = "x300C", ["zh-cn"] = "ld" } end if not QuoteType then QuoteType = { bd = { { 8222, 8220 }, { 8218, 8217 } }, bdla = { { 8222, 8220 }, { 171, 187 } }, bx = { { 8222, 8221 }, { 8218, 8217 } }, la = { { 171, 187 }, { 8249, 8250 } }, laSPC = { { 171, 187 }, { 8249, 8250 }, true }, labd = { { 171, 187 }, { 8222, 8220 } }, lald = { { 171, 187 }, { 8220, 8221 } }, ld = { { 8220, 8221 }, { 8216, 8217 } }, ldla = { { 8220, 8221 }, { 171, 187 } }, lsld = { { 8216, 8217 }, { 8220, 8221 } }, rd = { { 8221, 8221 }, { 8217, 8217 } }, x300C = { { 0x300C, 0x300D }, { 0x300E, 0x300F } } } end end -- initQuoteData() local function fiatQuote( apply, alien, advance ) -- Quote text -- Parameter: -- apply -- string, with text -- alien -- string, with language code -- advance -- number, with level 1 or 2 local r = apply and tostring(apply) or "" alien = alien or "en" advance = tonumber(advance) or 0 local suite initQuoteData() local slang = alien:match( "^(%l+)-" ) suite = QuoteLang[alien] or slang and QuoteLang[slang] or QuoteLang["en"] if suite then local quotes = QuoteType[ suite ] if quotes then local space if quotes[ 3 ] then space = "&#160;" else space = "" end quotes = quotes[ advance ] if quotes then r = mw.ustring.format( "%s%s%s%s%s", mw.ustring.char( quotes[ 1 ] ), space, apply, space, mw.ustring.char( quotes[ 2 ] ) ) end else mw.log( "fiatQuote() " .. suite ) end end return r end -- fiatQuote() Text.char = function ( apply, again, accept ) -- Create string from codepoints -- Parameter: -- apply -- table (sequence) with numerical codepoints, or nil -- again -- number of repetitions, or nil -- accept -- true, if no error messages to be appended -- Returns: string local r = "" apply = type(apply) == "table" and apply or {} again = math.floor(tonumber(again) or 1) if again < 1 then return "" end local bad = { } local codes = { } for _, v in ipairs( apply ) do local n = tonumber(v) if not n or (n < 32 and n ~= 9 and n ~= 10) then table.insert(bad, tostring(v)) else table.insert(codes, math.floor(n)) end end if #bad > 0 then if not accept then r = tostring( mw.html.create( "span" ) :addClass( "error" ) :wikitext( "bad codepoints: " .. table.concat( bad, " " )) ) end return r end if #codes > 0 then r = mw.ustring.char( unpack( codes ) ) if again > 1 then r = r:rep(again) end end return r end -- Text.char() local function trimAndFormat(args, fmt) local result = {} if type(args) ~= 'table' then args = {args} end for _, v in ipairs(args) do v = mw.text.trim(tostring(v)) if v ~= "" then table.insert(result,fmt and mw.ustring.format(fmt, v) or v) end end return result end Text.concatParams = function ( args, apply, adapt ) -- Concat list items into one string -- Parameter: -- args -- table (sequence) with numKey=string -- apply -- string (optional); separator (default: "|") -- adapt -- string (optional); format including "%s" -- Returns: string local collect = { } return table.concat(trimAndFormat(args,adapt), apply or "|") end -- Text.concatParams() Text.containsCJK = function ( s ) -- Is any CJK code within? -- Parameter: -- s -- string -- Returns: true, if CJK detected s = s and tostring(s) or "" if not patternCJK then patternCJK = mw.ustring.char( 91, 4352, 45, 4607, 11904, 45, 42191, 43072, 45, 43135, 44032, 45, 55215, 63744, 45, 64255, 65072, 45, 65103, 65381, 45, 65500, 131072, 45, 196607, 93 ) end return mw.ustring.find( s, patternCJK ) ~= nil end -- Text.containsCJK() Text.removeDelimited = function (s, prefix, suffix) -- Remove all text in s delimited by prefix and suffix (inclusive) -- Arguments: -- s = string to process -- prefix = initial delimiter -- suffix = ending delimiter -- Returns: stripped string s = s and tostring(s) or "" prefix = prefix and tostring(prefix) or "" suffix = suffix and tostring(suffix) or "" local prefixLen = mw.ustring.len(prefix) local suffixLen = mw.ustring.len(suffix) if prefixLen == 0 or suffixLen == 0 then return s end local i = s:find(prefix, 1, true) local r = s local j while i do j = r:find(suffix, i + prefixLen) if j then r = r:sub(1, i - 1)..r:sub(j+suffixLen) else r = r:sub(1, i - 1) end i = r:find(prefix, 1, true) end return r end Text.getPlain = function ( adjust ) -- Remove wikisyntax from string, except templates -- Parameter: -- adjust -- string -- Returns: string local r = Text.removeDelimited(adjust,"<!--","-->") r = r:gsub( "(</?%l[^>]*>)", "" ) :gsub( "'''", "" ) :gsub( "''", "" ) :gsub( "&nbsp;", " " ) return r end -- Text.getPlain() Text.isLatinRange = function (s) -- Are characters expected to be latin or symbols within latin texts? -- Arguments: -- s = string to analyze -- Returns: true, if valid for latin only s = s and tostring(s) or "" --- ensure input is always string initLatinData() return mw.ustring.match(s, PatternLatin) ~= nil end -- Text.isLatinRange() Text.isQuote = function ( s ) -- Is this character any quotation mark? -- Parameter: -- s = single character to analyze -- Returns: true, if s is quotation mark s = s and tostring(s) or "" if s == "" then return false end if not SeekQuote then SeekQuote = mw.ustring.char( 34, -- " 39, -- ' 171, -- laquo 187, -- raquo 8216, -- lsquo 8217, -- rsquo 8218, -- sbquo 8220, -- ldquo 8221, -- rdquo 8222, -- bdquo 8249, -- lsaquo 8250, -- rsaquo 0x300C, -- CJK 0x300D, -- CJK 0x300E, -- CJK 0x300F ) -- CJK end return mw.ustring.find( SeekQuote, s, 1, true ) ~= nil end -- Text.isQuote() Text.listToText = function ( args, adapt ) -- Format list items similar to mw.text.listToText() -- Parameter: -- args -- table (sequence) with numKey=string -- adapt -- string (optional); format including "%s" -- Returns: string return mw.text.listToText(trimAndFormat(args, adapt)) end -- Text.listToText() Text.quote = function ( apply, alien, advance ) -- Quote text -- Parameter: -- apply -- string, with text -- alien -- string, with language code, or nil -- advance -- number, with level 1 or 2, or nil -- Returns: quoted string apply = apply and tostring(apply) or "" local mode, slang if type( alien ) == "string" then slang = mw.text.trim( alien ):lower() else slang = mw.title.getCurrentTitle().pageLanguage if not slang then -- TODO FIXME: Introduction expected 2017-04 slang = mw.language.getContentLanguage():getCode() end end if advance == 2 then mode = 2 else mode = 1 end return fiatQuote( mw.text.trim( apply ), slang, mode ) end -- Text.quote() Text.quoteUnquoted = function ( apply, alien, advance ) -- Quote text, if not yet quoted and not empty -- Parameter: -- apply -- string, with text -- alien -- string, with language code, or nil -- advance -- number, with level 1 or 2, or nil -- Returns: string; possibly quoted local r = mw.text.trim( apply and tostring(apply) or "" ) local s = mw.ustring.sub( r, 1, 1 ) if s ~= "" and not Text.isQuote( s, advance ) then s = mw.ustring.sub( r, -1, 1 ) if not Text.isQuote( s ) then r = Text.quote( r, alien, advance ) end end return r end -- Text.quoteUnquoted() Text.removeDiacritics = function ( adjust ) -- Remove all diacritics -- Parameter: -- adjust -- string -- Returns: string; all latin letters should be ASCII -- or basic greek or cyrillic or symbols etc. local cleanup, decomposed if not PatternCombined then PatternCombined = mw.ustring.char( 91, 0x0300, 45, 0x036F, 0x1AB0, 45, 0x1AFF, 0x1DC0, 45, 0x1DFF, 0xFE20, 45, 0xFE2F, 93 ) end decomposed = mw.ustring.toNFD( adjust and tostring(adjust) or "" ) cleanup = mw.ustring.gsub( decomposed, PatternCombined, "" ) return mw.ustring.toNFC( cleanup ) end -- Text.removeDiacritics() Text.sentenceTerminated = function ( analyse ) -- Is string terminated by dot, question or exclamation mark? -- Quotation, link termination and so on granted -- Parameter: -- analyse -- string -- Returns: true, if sentence terminated local r if not PatternTerminated then PatternTerminated = mw.ustring.char( 91, 12290, 65281, 65294, 65311 ) .. "!%.%?…][\"'%]‹›«»‘’“”]*$" end if mw.ustring.find( analyse, PatternTerminated ) then r = true else r = false end return r end -- Text.sentenceTerminated() Text.ucfirstAll = function ( adjust) -- Capitalize all words -- Arguments: -- adjust = string to adjust -- Returns: string with all first letters in upper case adjust = adjust and tostring(adjust) or "" local r = mw.text.decode(adjust,true) local i = 1 local c, j, m m = (r ~= adjust) r = " "..r while i do i = mw.ustring.find( r, "%W%l", i ) if i then j = i + 1 c = mw.ustring.upper( mw.ustring.sub( r, j, j ) ) r = string.format( "%s%s%s", mw.ustring.sub( r, 1, i ), c, mw.ustring.sub( r, i + 2 ) ) i = j end end -- while i r = r:sub( 2 ) if m then r = mw.text.encode(r) end return r end -- Text.ucfirstAll() Text.uprightNonlatin = function ( adjust ) -- Ensure non-italics for non-latin text parts -- One single greek letter might be granted -- Precondition: -- adjust -- string -- Returns: string with non-latin parts enclosed in <span> local r initLatinData() if mw.ustring.match( adjust, PatternLatin ) then -- latin only, horizontal dashes, quotes r = adjust else local c local j = false local k = 1 local m = false local n = mw.ustring.len( adjust ) local span = "%s%s<span dir='auto' style='font-style:normal'>%s</span>" local flat = function ( a ) -- isLatin local range for i = 1, #RangesLatin do range = RangesLatin[ i ] if a >= range[ 1 ] and a <= range[ 2 ] then return true end end -- for i end -- flat() local focus = function ( a ) -- char is not ambivalent local r = ( a > 64 ) if r then r = ( a < 8192 or a > 8212 ) else r = ( a == 38 or a == 60 ) -- '&' '<' end return r end -- focus() local form = function ( a ) return string.format( span, r, mw.ustring.sub( adjust, k, j - 1 ), mw.ustring.sub( adjust, j, a ) ) end -- form() r = "" for i = 1, n do c = mw.ustring.codepoint( adjust, i, i ) if focus( c ) then if flat( c ) then if j then if m then if i == m then -- single greek letter. j = false end m = false end if j then local nx = i - 1 local s = "" for ix = nx, 1, -1 do c = mw.ustring.sub( adjust, ix, ix ) if c == " " or c == "(" then nx = nx - 1 s = c .. s else break -- for ix end end -- for ix r = form( nx ) .. s j = false k = i end end elseif not j then j = i if c >= 880 and c <= 1023 then -- single greek letter? m = i + 1 else m = false end end elseif m then m = m + 1 end end -- for i if j and ( not m or m < n ) then r = form( n ) else r = r .. mw.ustring.sub( adjust, k ) end end return r end -- Text.uprightNonlatin() Text.test = function ( about ) local r if about == "quote" then initQuoteData() r = { } r.QuoteLang = QuoteLang r.QuoteType = QuoteType end return r end -- Text.test() -- Export local p = { } for _, func in ipairs({'containsCJK','isLatinRange','isQuote','sentenceTerminated'}) do p[func] = function (frame) return Text[func]( frame.args[ 1 ] or "" ) and "1" or "" end end for _, func in ipairs({'getPlain','removeDiacritics','ucfirstAll','uprightNonlatin'}) do p[func] = function (frame) return Text[func]( frame.args[ 1 ] or "" ) end end function p.char( frame ) local params = frame:getParent().args local story = params[ 1 ] local codes, lenient, multiple if not story then params = frame.args story = params[ 1 ] end if story then local items = mw.text.split( mw.text.trim(story), "%s+" ) if #items > 0 then local j lenient = (yesNo(params.errors) == false) codes = { } multiple = tonumber( params[ "*" ] ) for _, v in ipairs( items ) do j = tonumber((v:sub( 1, 1 ) == "x" and "0" or "") .. v) table.insert( codes, j or v ) end end end return Text.char( codes, multiple, lenient ) end function p.concatParams( frame ) local args local template = frame.args.template if type( template ) == "string" then template = mw.text.trim( template ) template = ( template == "1" ) end if template then args = frame:getParent().args else args = frame.args end return Text.concatParams( args, frame.args.separator, frame.args.format ) end function p.listToFormat(frame) local lists = {} local pformat = frame.args["format"] local sep = frame.args["sep"] or ";" -- Parameter parsen: Listen for k, v in pairs(frame.args) do local knum = tonumber(k) if knum then lists[knum] = v end end -- Listen splitten local maxListLen = 0 for i = 1, #lists do lists[i] = mw.text.split(lists[i], sep) if #lists[i] > maxListLen then maxListLen = #lists[i] end end -- Ergebnisstring generieren local result = "" local result_line = "" for i = 1, maxListLen do result_line = pformat for j = 1, #lists do result_line = mw.ustring.gsub(result_line, "%%s", lists[j][i], 1) end result = result .. result_line end return result end function p.listToText( frame ) local args local template = frame.args.template if type( template ) == "string" then template = mw.text.trim( template ) template = ( template == "1" ) end if template then args = frame:getParent().args else args = frame.args end return Text.listToText( args, frame.args.format ) end function p.quote( frame ) local slang = frame.args[2] if type( slang ) == "string" then slang = mw.text.trim( slang ) if slang == "" then slang = false end end return Text.quote( frame.args[ 1 ] or "", slang, tonumber( frame.args[3] ) ) end function p.quoteUnquoted( frame ) local slang = frame.args[2] if type( slang ) == "string" then slang = mw.text.trim( slang ) if slang == "" then slang = false end end return Text.quoteUnquoted( frame.args[ 1 ] or "", slang, tonumber( frame.args[3] ) ) end function p.zip(frame) local lists = {} local seps = {} local defaultsep = frame.args["sep"] or "" local innersep = frame.args["isep"] or "" local outersep = frame.args["osep"] or "" -- Parameter parsen for k, v in pairs(frame.args) do local knum = tonumber(k) if knum then lists[knum] = v else if string.sub(k, 1, 3) == "sep" then local sepnum = tonumber(string.sub(k, 4)) if sepnum then seps[sepnum] = v end end end end -- sofern keine expliziten Separatoren angegeben sind, den Standardseparator verwenden for i = 1, math.max(#seps, #lists) do if not seps[i] then seps[i] = defaultsep end end -- Listen splitten local maxListLen = 0 for i = 1, #lists do lists[i] = mw.text.split(lists[i], seps[i]) if #lists[i] > maxListLen then maxListLen = #lists[i] end end local result = "" for i = 1, maxListLen do if i ~= 1 then result = result .. outersep end for j = 1, #lists do if j ~= 1 then result = result .. innersep end result = result .. (lists[j][i] or "") end end return result end function p.failsafe() return Text.serial end p.Text = function () return Text end -- p.Text return p 07f1fc4d39342fd92bdae1c5463bbfede7eeda1a Template:Infobox person/height 10 177 408 407 2023-09-30T19:36:58Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Infobox_person/height]] wikitext text/x-wiki {{#invoke:person height|main}}<noinclude> {{Documentation}} </noinclude> 7e4749e2788885b5a8760fedb7cc278e9a60a85a Template:IsValidPageName 10 178 410 409 2023-09-30T19:36:58Z Führerredux 2 1 revision imported from [[:wikipedia:Template:IsValidPageName]] wikitext text/x-wiki {{#ifeq:{{{1}}}|-||{{#iferror:{{#invoke:Page|invalid|{{{1}}}}}||valid}}}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> df8eb681019823d4eba2df6f8d521bc95426d54e Module:CallAssert 828 179 412 411 2023-09-30T19:36:59Z Führerredux 2 1 revision imported from [[:wikipedia:Module:CallAssert]] Scribunto text/plain local function pack(...) return {...}, select('#', ...) end local function mapArray(func, array, count) local result = {} for i = 1, count or #array do result[i] = func(array[i]) end return result end local function quote(value) if type(value) == 'string' then return (string.gsub(string.format('%q', value), '\\\n', '\\n')) -- Outer parentheses remove second value returned by gsub end local str = tostring(value) if type(value) == 'table' and str ~= 'table' then return '{' .. str .. '}' end return str end local function callAssert(func, funcName, ...) local result, resultCount = pack(func(...)) if not result[1] then local args, argsCount = pack(...) args = mapArray(quote, args, argsCount) local message = mw.ustring.format( '%s(%s) failed', funcName, table.concat(args, ', ') ) error(message, 2) end return unpack(result, 1, resultCount) end return callAssert 1f6b71105b007b84f1593a11438484f1ad94f68a Module:Page 828 180 414 413 2023-09-30T19:36:59Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Page]] Scribunto text/plain local callAssert = require('Module:CallAssert') local function main(frame, field) local args, pargs = frame.args, ( frame:getParent() or {} ).args or {} local makeTitle=args.makeTitle or pargs.makeTitle local namespace=args.namespace or pargs.namespace or "" local fragment=args.fragment or pargs.fragment or "" local interwiki=args.interwiki or pargs.interwiki or "" local page=args.page or args[1] or pargs.page or pargs[1] or "" local id= tonumber( args.id or pargs.id ) local pn = {} local title -- holds the result of the mw.title.xxx call for i = 1,9 do pn[i] = args['p'..i] or pargs['p'..i] end if not id and not mw.ustring.match( page, '%S' ) then page = nil end if id then title = callAssert(mw.title.new, 'mw.title.new', id) elseif not page then title = callAssert(mw.title.getCurrentTitle, 'getCurrentTitle') elseif makeTitle then title = callAssert(mw.title.makeTitle, 'makeTitle', namespace, page, fragment, interwiki) else title = callAssert(mw.title.new, 'mw.title.new', page, namespace) end local result = title[field] if type(result) == "function" then result = result(title, unpack(pn)) end return tostring(result or "") end -- handle all errors in main main = require('Module:Protect')(main) local p = {} -- main function does all the work local meta = {} function meta.__index(self, key) return function(frame) return main(frame, key) end end setmetatable(p, meta) function p.getContent(frame) local args, pargs = frame.args, ( frame:getParent() or {} ).args or {} local fmt = args.as or pargs.as or "pre" local text = main(frame, "getContent") fmt = mw.text.split( fmt, ", ?" ) for _, how in ipairs( fmt ) do if how == "pre" then text = table.concat{ "<pre>", text, "</pre>" } elseif how == "expand" then text = frame:preprocess(text) elseif how == "nowiki" then text = mw.text.nowiki(text) end end return text end return p 9b70f0ff53b1c20fd8667c9f3d80167653279cc4 Module:Person height 828 181 416 415 2023-09-30T19:37:00Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Person_height]] Scribunto text/plain -- This module implements [[Template:Infobox person/height]] local p = {} local function splitsuffix(s) local suffix = '' if mw.ustring.match(s,'^(.-)(<sup.*)$') then local a = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%1') local b = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%2') s = a suffix = b .. suffix end if mw.ustring.match(s,'^(.-)(%[%[[Cc]ategory:.*)$') then local a = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%1') local b = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%2') s = a suffix = b .. suffix end return s, suffix end local function clean(s) s = mw.ustring.gsub(s, '[Mm]etre', 'm') s = mw.ustring.gsub(s, '([^a])meter', '%1m') -- prevents "parameter" from being changed to "param" s = mw.ustring.gsub(s, '[Cc]enti', 'c') -- changes "centim" to "cm" s = mw.ustring.gsub(s, 'ms', 'm') s = mw.ustring.gsub(s, 'm[%.,]', 'm') s = mw.ustring.gsub(s, '[Ff]eet', 'ft') s = mw.ustring.gsub(s, 'foot', 'ft') s = mw.ustring.gsub(s, 'ft[%.,]', 'ft') s = mw.ustring.gsub(s, '[Ii]nches', 'in') s = mw.ustring.gsub(s, '[Ii]nch', 'in') s = mw.ustring.gsub(s, 'ins', 'in') s = mw.ustring.gsub(s, 'in[%.,]', 'in') s = mw.ustring.gsub(s, '%[%[[Mm]%]%]s', '[[Metre|m]]') s = mw.ustring.gsub(s, '%[%[[Mm]|[Mm]%]%]', '[[Metre|m]]') s = mw.ustring.gsub(s, '%[%[[Cc]m%]%]s', '[[Centimetre|cm]]') s = mw.ustring.gsub(s, '%[%[[Cc]m|[Cc]m%]%]', '[[Centimetre|cm]]') s = mw.ustring.gsub(s, '%[%[[Cc]entim|cm%]%]', '[[Centimetre|cm]]') s = mw.ustring.gsub(s, '%[%[[Ii]n|in%]%]', '[[inch|in]]') s = mw.ustring.gsub(s, '(%d)%s+[Cc][Mm]', '%1&nbsp;cm') s = mw.ustring.gsub(s, '(%d)%s+[Mm]', '%1&nbsp;m') s = mw.ustring.gsub(s, '(%d)%s+[Ff][Tt]', '%1&nbsp;ft') s = mw.ustring.gsub(s, '(%d)%s+[Ii][Nn]', '%1&nbsp;in') s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Cc][Mm]', '%1cm') s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Mm]', '%1m') s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ff][Tt]', '%1ft') s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ii][Nn]', '%1in') s = mw.ustring.gsub(s, '(%d)%s*[′\']%s*([%d]%d*)%s*[\"″]', '%1 ft %2 in') return s end local function isnumber(s) if s then s = mw.ustring.gsub(s, '%+%s*%d+%s*/%s*%d+%s*$', '') s = mw.ustring.gsub(s, '%s*1%s*/%s*2%s*$', '0.5') return tonumber(s) end return nil end local function trimspace(s) if s then s = mw.ustring.gsub(s, '^%s*(.-)%s*$', '%1') end return s end local function force_unit(s, t) s = mw.ustring.gsub(s, '&[Nn][Bb][Ss][Pp];', '★') if (t == 'cm') then s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)m', '%1%2.%3cm') s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2.%3[[centimetre|cm]]') s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)m', '%1%2%3cm') s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2%3[[centimetre|cm]]') s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)m', '%1%20%3cm') s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%20%3[[centimetre|cm]]') s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)m', '%100.%2cm') s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100.%2[[centimetre|cm]]') s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)m', '%100%2cm') s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)m', '%100%2cm') s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]') s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]') s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+cm)', '%1') s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+%[%[[Cc]entimet[re][re]|cm%]%])', '%1') else s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)cm', '%1.%2%3m') s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]') s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)cm', '%1.%2%3m') s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]') s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)cm', '0.%1%2m') s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]') s = mw.ustring.gsub(s, '(%d%d)([★%s]+)cm', '0.%1%2m') s = mw.ustring.gsub(s, '(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]') end s = mw.ustring.gsub(s, '★', '&nbsp;') return s end local function get_convert_args(s, prefer, enforce, ri) local prefer_m = (prefer or '') == 'm' local force_m = (enforce or '') == 'm' local prefer_cm = (prefer or '') == 'cm' local force_cm = (enforce or '') == 'cm' ri = (ri or '') == 'cmin' and 'cmin' or '' unconverted = clean(s or '') -- basic unit cleaning s = mw.ustring.gsub(unconverted, '&[Nn][Bb][Ss][Pp];', ' ') local m = mw.ustring.find(s, 'm') local c = mw.ustring.find(s, 'cm') local f = mw.ustring.find(s, 'ft') local i = mw.ustring.find(s, 'in') if m == nil and f == nil and i == nil then return '', unconverted end local adj = nil if c ~= nil and f == nil and i == nil then local n = mw.ustring.sub(s, 1, c - 1) if isnumber(n) then if force_m then local prec = require("Module:Math")._precision(trimspace(n)) adj = (prec == 1) and 'ri3' or 'ri2' end if ri ~= '' then adj = force_m and 'ri2' or 'ri0' end return force_m and {n/100,'m','ftin',0,['abbr']='on', ['adj']=adj} or {n,'cm','ftin',0,['abbr']='on', ['adj']=adj}, mw.ustring.sub(s, c+2) end return '', unconverted end if m ~= nil and c == nil and f == nil and i == nil then local n = mw.ustring.sub(s, 1, m - 1) if ri ~= '' then adj = force_cm and 'ri0' or 'ri2' end if isnumber(n) then return force_cm and {n*100,'cm','ftin',0,['abbr']='on',['adj']=adj} or {n,'m','ftin',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, m+1) end return '', unconverted end if f ~= nil and i ~=nil and m == nil then local n1 = mw.ustring.sub(s, 1, f - 1) local n2 = mw.ustring.sub(s, f+2, i - 1) if isnumber(n1) and isnumber(n2) then if ri ~= '' then adj = 'ri0' end return (force_m or prefer_m) and {n1,'ft',n2,'in', 'm',2,['abbr']='on',['adj']=adj} or {n1,'ft',n2,'in', 'cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, i+2) end return '', unconverted end if f ~= nil and i == nil and m == nil then local n = mw.ustring.sub(s, 1, f - 1) if isnumber(n) then if ri ~= '' then local n2 = 12*(n - math.floor(n)) adj = 'ri0' return (force_m or prefer_m) and {math.floor(n),'ft',n2, 'in','m',2,['abbr']='on',['adj']=adj} or {math.floor(n),'ft',n2,'in','cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, f+2) end return (force_m or prefer_m) and {n,'ft','m',2,['abbr']='on'} or {n,'ft','cm',0,['abbr']='on'}, mw.ustring.sub(s, f+2) end return '', unconverted end if i ~= nil and f == nil and m == nil then local n = mw.ustring.sub(s, 1, i - 1) if isnumber(n) then if ri ~= '' then adj = 'ri0' end return (force_m or prefer_m) and {n,'in','m',2,['abbr']='on'} or {n,'in','cm',0,['abbr']='on'}, mw.ustring.sub(s, i+2) end return '', unconverted end if force_cm and c == nil then return '', force_unit(unconverted, 'cm') end if force_m and c ~= nil then return '', force_unit(unconverted, 'm') end return '', unconverted end function convert(frame, args) local str, suffix = splitsuffix(args[1] or '') local targs, str = get_convert_args(str, args['prefer'] or '', args['enforce'] or '', args['ri'] or '') str = str .. suffix if type(targs) == 'table' then return frame:expandTemplate{ title = 'convert', args = targs} .. str else return str end end function p.main(frame) return convert(frame, frame.args[1] and frame.args or frame:getParent().args) end return p eae45d697c1881086eab11f622b4400e5c177c63 Module:Protect 828 182 418 417 2023-09-30T19:37:01Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Protect]] Scribunto text/plain local function processResult(options, success, ...) if not success then local message = tostring(... or '(no message)') if options.removeLocation then message = string.gsub(message, '^Module:[^:]+:%d+: ', '', 1) end return string.format(options.errFormat, message) end return ... end local function protect(func, errFormat, options) if type(errFormat) == 'table' then options = options or errFormat errFormat = nil end options = mw.clone(options) or {} options.errFormat = errFormat or options.errFormat or 'Error: %s' if not options.raw then options.errFormat = '<strong class="error">' .. options.errFormat .. '</strong>' end options.removeLocation = options.removeLocation == nil or options.removeLocation return function (...) return processResult(options, pcall(func, ...)) end end return protect b9ef98da3f3df35e58a7136f9a9c73a12aa8b35d Template:Country2nationality 10 183 420 419 2023-09-30T19:37:01Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Country2nationality]] wikitext text/x-wiki <includeonly>{{safesubst<noinclude/>:#ifeq:{{safesubst<noinclude/>:#invoke:String|len|s={{safesubst<noinclude/>:ISO 3166 code|{{{1}}}}}}}|2|{{safesubst<noinclude/>:Iso2nationality| {{safesubst<noinclude/>:ISO 3166 code|{{{1}}}}} }}| {{safesubst<noinclude/>:#if:{{{1|}}}| {{safesubst<noinclude/>:#switch: {{{1}}} | England = English | Scotland = Scottish | Wales = Welsh | Catalonia = Catalan | Kosovo = Kosovan }}}}}}</includeonly><noinclude> {{documentation}} </noinclude> 9c6b20fc59b2033477fb4dea0ffd1984bd673368 Template:ISO 3166 code 10 184 422 421 2023-09-30T19:37:02Z Führerredux 2 1 revision imported from [[:wikipedia:Template:ISO_3166_code]] wikitext text/x-wiki {{safesubst<noinclude/>:#invoke:ISO 3166|code|{{{1}}}|{{{2|}}}}}<noinclude> {{Documentation|content={{ISO 3166 conversion template doc}}}} </noinclude> 06f8325798ef5cb3ed4eb035d562ab9f8656cc6c Template:Div col/styles.css 10 46 424 88 2023-09-30T19:37:02Z Führerredux 2 Führerredux changed the content model of the page [[Template:Div col/styles.css]] from "plain text" to "Sanitized CSS" sanitized-css text/css /* {{pp|small=yes}} */ .div-col { margin-top: 0.3em; column-width: 30em; } .div-col-small { font-size: 90%; } .div-col-rules { column-rule: 1px solid #aaa; } /* Reset top margin for lists in div col */ .div-col dl, .div-col ol, .div-col ul { margin-top: 0; } /* Avoid elements breaking between columns See also Template:No col break */ .div-col li, .div-col dd { page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */ break-inside: avoid-column; } /* Unbulleted lists */ .plainlist ol, .plainlist ul { line-height: inherit; list-style: none; margin: 0; } .plainlist ol li, .plainlist ul li { margin-bottom: 0; } 76c2c0a042b9164cff638cd44af5ab129702c141 Module:ISO 3166 828 185 425 423 2023-09-30T19:37:03Z Führerredux 2 1 revision imported from [[:wikipedia:Module:ISO_3166]] Scribunto text/plain -- to enable us to replicate the current functioning of Country extract, we need to deal with: -- 2 {{<name>}} DONE! -- 3 [[<name>]] DONE! -- 4 [[<name>|<junk>]] DONE! -- 5 [[image:flag of <country>.[svg|gif|png|jpg]|\d+px]] DONE! local p = {} local getArgs = require("Module:Arguments").getArgs local data = mw.loadData("Module:ISO 3166/data/National") --[[----------F I N D N A M E----------]]-- -- Finds the name in the database local function findname(code,cdata,qry) local sqry = p.strip(qry) if cdata["name"] and sqry==p.strip(cdata["name"]) or cdata["isoname"] and sqry==p.strip(cdata["isoname"]) or not cdata["nocode"] and sqry==code or sqry==cdata["alpha3"] or sqry==cdata["numeric"] then return true end for _,tname in pairs(cdata["isonames"] or {}) do if sqry==p.strip(tname) then return true end end for _,tname in pairs(cdata["altnames"] or {}) do if sqry==p.strip(tname) then return true end end return false end --[[----------I S O N A M E----------]]-- -- Find the ISO name of a country/region local function isoname(data,code,lang) if data[code]["isonames"] then local name = data[code]["isodisplaynames"] and data[code]["isodisplaynames"][lang] or data[code]["isonames"][lang] or data[code]["isodisplaynames"] and data[code]["isodisplaynames"][data[code]["defaultlang"] or data["defaultlang"]] or data[code]["isonames"][data[code]["defaultlang"] or data["defaultlang"]] or data[code]["isodisplaynames"] and data[code]["isodisplaynames"]["en"] or data[code]["isonames"]["en"] if name then return name end for _,iname in pairs(data[code]["isonames"]) do return iname end return data[code]["isodisplayname"] or data[code]["isoname"] else return data[code]["isodisplayname"] or data[code]["isoname"] end end --[[----------S T R I P----------]]-- -- Removes junk from the input function p.strip(text) local accents = {["À"]="A",["Á"]="A",["Â"]="A",["Ã"]="A", -- accent list ["Ä"]="A",["Å"]="A",["Ç"]="C",["È"]="E",["É"]="E", ["Ê"]="E",["Ë"]="E",["Ì"]="I",["Í"]="I",["Î"]="I", ["Ï"]="I",["Ñ"]="N",["Ò"]="O",["Ó"]="O",["Ô"]="O", ["Õ"]="O",["Ö"]="O",["Ø"]="O",["Ù"]="U",["Ú"]="U", ["Û"]="U",["Ü"]="U",["Ý"]="Y" } local remove = {"NATION OF","COUNTRY OF","TERRITORY OF", -- text to be removed list "FLAG OF","FLAG","KINGDOM OF","STATE OF"," STATE ", "PROVINCE OF","PROVINCE","TERRITORY" } local patterns = {[".+:"]="",["|.+"]="",["%(.-%)"]="", -- patterns to follow (order may matter) ["%..*"]="",["^THE "]="",["%_"]=" ",["%-"]=" ", ["%d%d?%d?PX"]="", } text = mw.ustring.upper(text) -- Case insensitivity text = mw.ustring.gsub(text,"[À-Ý]",accents) -- Deaccent for pattern,value in pairs(patterns) do -- Follow patterns text = mw.ustring.gsub(text,pattern,value) end for _,words in pairs(remove) do -- Remove unneeded words text = mw.ustring.gsub(text,words,"") end text = mw.ustring.gsub(text,"%W","") -- Remove non alpha-numeric return text end --[[----------P . C A L L S T R I P ---------]]-- -- Calls P.strip but using Module:Arguments function p.callstrip(frame) local args = getArgs(frame) return p.strip(args[1]) or "" end --[[----------P . L U A C O D E---------]]-- -- Makes the ISO code of a country function p.luacode(args) if string.find(args[1] or '',"%-") then args[1], args[2] = string.match(args[1] or '',"^([^%-]*)%-(.*)$") end if args[1] then args[1] = p.strip(args[1]) end if args[2] then args[2] = p.strip(args[2]) end if args["codetype"]=="3" then args["codetype"]="alpha3" end local eot = args.error or "" local catnocountry = (args.nocat and args.nocat == 'true') and '' or '[[Category:Wikipedia page with obscure country]]' local catnosubdivision = (args.nocat and args.nocat == 'true') and '' or '[[Category:Wikipedia page with obscure subdivision]]' if not args[1] then if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end return catnocountry, '<span style="font-size:100%" class="error">"No parameter for the country given"</span>' end if not args[2] then --3166-1 code for alpha2,cdata in pairs(data) do if findname(alpha2,cdata,args[1]) then if args["codetype"]=="numeric" or args["codetype"]=="alpha3" then return cdata[args["codetype"]] else return alpha2 end end end if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end return catnocountry else --3166-2 code for alpha2,cdata in pairs(data) do if findname(alpha2,cdata,args[1]) then if mw.ustring.match(alpha2,"GB") then -- For England, Wales etc. alpha2 = "GB" end local sdata = mw.loadData("Module:ISO 3166/data/"..alpha2) local empty = true for scode,scdata in pairs(sdata) do if type(scdata)=="table" then empty = false if findname(scode,scdata,args[2]) then return alpha2.."-"..scode end end end if mw.title.getCurrentTitle().namespace ~= 0 then catnosubdivision = '' end return catnosubdivision end end if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end return catnocountry end end --[[----------P . C O D E---------]]-- -- Calls P.Luacode but using Module:Arguments function p.code(frame) return p.luacode(getArgs(frame)) or "" end --[[----------P . N U M E R I C---------]]-- -- Calls P.Luacode but using Module:Arguments and setting it to output a numeric value function p.numeric(frame) local args = getArgs(frame) args["codetype"]="numeric" return p.luacode(args) or "" end --[[----------P . L U A N A M E---------]]-- -- Makes the ISO/common name of a country function p.luaname(args) local code1 = p.luacode(args) local code2 = '' if string.find(code1,"%-") then code1, code2 = string.match(code1,"^([^%-]*)%-(.*)$") end if string.find(code1,"^%u%u$") then if code2=="" then --3166-1 alpha-2 code if data[code1] then return (args.isoname or args.lang) and isoname(data,code1,args.lang) or (data[code1]["displayname"] or data[code1]["name"]) else return '[[Category:Wikipedia page with obscure country]]' end else --3166-2 code local sdata if data[code1] then sdata = mw.loadData("Module:ISO 3166/data/"..code1) else return '[[Category:Wikipedia page with obscure country]]' end if sdata[code2] then return (args.isoname or args.lang) and isoname(sdata,code2,args.lang) or (sdata[code2]["displayname"] or sdata[code2]["name"]) else return '[[Category:Wikipedia page with obscure country]]' end end end end --[[----------P . N A M E---------]]-- -- Calls P.Luaname but using Module:Arguments function p.name(frame) return p.luaname(getArgs(frame)) or "" end --[[----------P . G E O C O O R D I N S E R T---------]]-- -- Wrapper for Module:Coordinates.coordinsert function p.geocoordinsert(frame) -- {{#invoke:ISO 3166|geocoordinsert|{{coord|...}} -- |country=..|subdivision1=...|subdivision2=... -- |type=...|scale=...|dim=...|source=...|globe=... -- }} local args = frame.args local subdivisionqueried = false local catnocountry = (args.nocat and args.nocat == 'true') and '' or '[[Category:Wikipedia page with obscure country]]' local catnosubdivision = (args.nocat and args.nocat == 'true') and '' or '[[Category:Wikipedia page with obscure subdivision]]' or '' local tracking = '' local targs = {} targs[1] = args[1] or '' for i, v in pairs(args) do if i == 'country' and not mw.ustring.find(targs[1], 'region:') then local country = v local k, region = 1, '' -- look for a valid subdivision while region == '' and k < 3 do local subdivision = args['subdivision' .. k] or '' if subdivision ~= '' then region = p.luacode({country, subdivision, nocat = 'true'}) subdivisionqueried = true end k = k + 1 end -- subdivision lookup failed or never attempted, try country only if region == '' then region = p.luacode({country, nocat = 'true'}) if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry, catnosubdivision = '', '' end if region == '' then tracking = tracking .. catnocountry elseif subdivisionqueried == true then tracking = tracking .. catnosubdivision end end -- something worked, add it to the targs if region ~= '' then targs[#targs + 1] = 'region:' .. region end elseif i == 'type' or i == 'scale' or i == 'dim' or i == 'source' or i == 'globe' then targs[#targs + 1] = i .. ':' .. v end end -- call Module:Coordinates.coordinsert if there is something to insert if #targs > 1 then local coordinsert = require('Module:Coordinates').coordinsert return coordinsert({args = targs}) .. tracking end -- otherwise, just return the coordinates return targs[1] .. tracking end return p 6bc354f2610f29e712065cbe3ea814144fa3a600 Module:ISO 3166/data/National 828 186 427 426 2023-09-30T19:37:03Z Führerredux 2 1 revision imported from [[:wikipedia:Module:ISO_3166/data/National]] Scribunto text/plain return { ["AD"] = {alpha3="AND",numeric="020",name="Andorra"}, ["AE"] = {alpha3="ARE",numeric="784",name="United Arab Emirates",altnames={"UAE"}}, ["AF"] = {alpha3="AFG",numeric="004",name="Afghanistan"}, ["AG"] = {alpha3="ATG",numeric="028",name="Antigua and Barbuda"}, ["AI"] = {alpha3="AIA",numeric="660",name="Anguilla"}, ["AL"] = {alpha3="ALB",numeric="008",name="Albania"}, ["AM"] = {alpha3="ARM",numeric="051",name="Armenia"}, ["AO"] = {alpha3="AGO",numeric="024",name="Angola"}, ["AQ"] = {alpha3="ATA",numeric="010",name="Antarctica"}, ["AR"] = {alpha3="ARG",numeric="032",name="Argentina"}, ["AS"] = {alpha3="ASM",numeric="016",name="American Samoa"}, ["AT"] = {alpha3="AUT",numeric="040",name="Austria"}, ["AU"] = {alpha3="AUS",numeric="036",name="Australia"}, ["AW"] = {alpha3="ABW",numeric="533",name="Aruba"}, ["AX"] = {alpha3="ALA",numeric="248",name="Åland Islands",altnames={"Aland Islands","Åland","Aland"}}, ["AZ"] = {alpha3="AZE",numeric="031",name="Azerbaijan"}, ["BA"] = {alpha3="BIH",numeric="070",name="Bosnia and Herzegovina",altnames={"Bosnia"}}, ["BB"] = {alpha3="BRB",numeric="052",name="Barbados"}, ["BD"] = {alpha3="BGD",numeric="050",name="Bangladesh"}, ["BE"] = {alpha3="BEL",numeric="056",name="Belgium"}, ["BF"] = {alpha3="BFA",numeric="854",name="Burkina Faso"}, ["BG"] = {alpha3="BGR",numeric="100",name="Bulgaria"}, ["BH"] = {alpha3="BHR",numeric="048",name="Bahrain"}, ["BI"] = {alpha3="BDI",numeric="108",name="Burundi"}, ["BJ"] = {alpha3="BEN",numeric="204",name="Benin"}, ["BL"] = {alpha3="BLM",numeric="652",name="Saint Barthélemy",altnames={"St Barthelemy"}}, ["BM"] = {alpha3="BMU",numeric="060",name="Bermuda"}, ["BN"] = {alpha3="BRN",numeric="096",name="Brunei",isoname="Brunei Darussalam"}, ["BO"] = {alpha3="BOL",numeric="068",name="Bolivia",isoname="Bolivia (Plurinational State of)"}, ["BQ"] = {alpha3="BES",numeric="535",name="Caribbean Netherlands",isoname="Bonaire, Sint Eustatius and Saba"}, ["BR"] = {alpha3="BRA",numeric="076",name="Brazil"}, ["BS"] = {alpha3="BHS",numeric="044",name="Bahamas"}, ["BT"] = {alpha3="BTN",numeric="064",name="Bhutan"}, ["BV"] = {alpha3="BVT",numeric="074",name="Bouvet Island"}, ["BW"] = {alpha3="BWA",numeric="072",name="Botswana"}, ["BY"] = {alpha3="BLR",numeric="112",name="Belarus"}, ["BZ"] = {alpha3="BLZ",numeric="084",name="Belize"}, ["CA"] = {alpha3="CAN",numeric="124",name="Canada"}, ["CC"] = {alpha3="CCK",numeric="166",name="Cocos (Keeling) Islands",altnames={"Cocos Islands","Keeling Islands"}}, ["CD"] = {alpha3="COD",numeric="180",name="Democratic Republic of the Congo",isoname="Congo, Democratic Republic of the",altnames={"Congo-Kinshasa","DRC","DR Congo"}}, ["CF"] = {alpha3="CAF",numeric="140",name="Central African Republic",altnames={"CAR"}}, ["CG"] = {alpha3="COG",numeric="178",name="Republic of the Congo",isoname="Congo",altnames={"Congo-Brazzaville"}}, ["CH"] = {alpha3="CHE",numeric="756",name="Switzerland"}, ["CI"] = {alpha3="CIV",numeric="384",name="Côte d'Ivoire",altnames={"Ivory Coast"}}, ["CK"] = {alpha3="COK",numeric="184",name="Cook Islands"}, ["CL"] = {alpha3="CHL",numeric="152",name="Chile"}, ["CM"] = {alpha3="CMR",numeric="120",name="Cameroon"}, ["CN"] = {alpha3="CHN",numeric="156",name="China",altnames={"People's Republic of China","PRC"}}, ["CO"] = {alpha3="COL",numeric="170",name="Colombia"}, ["CR"] = {alpha3="CRI",numeric="188",name="Costa Rica"}, ["CU"] = {alpha3="CUB",numeric="192",name="Cuba"}, ["CV"] = {alpha3="CPV",numeric="132",name="Cabo Verde",altnames={"Cape Verde"}}, ["CW"] = {alpha3="CUW",numeric="531",name="Curaçao",altnames={"Curacao"}}, ["CX"] = {alpha3="CXR",numeric="162",name="Christmas Island"}, ["CY"] = {alpha3="CYP",numeric="196",name="Cyprus"}, ["CZ"] = {alpha3="CZE",numeric="203",name="Czech Republic",isoname="Czechia"}, ["DE"] = {alpha3="DEU",numeric="276",name="Germany"}, ["DJ"] = {alpha3="DJI",numeric="262",name="Djibouti"}, ["DK"] = {alpha3="DNK",numeric="208",name="Denmark"}, ["DM"] = {alpha3="DMA",numeric="212",name="Dominica"}, ["DO"] = {alpha3="DOM",numeric="214",name="Dominican Republic"}, ["DZ"] = {alpha3="DZA",numeric="012",name="Algeria"}, ["EC"] = {alpha3="ECU",numeric="218",name="Ecuador"}, ["EE"] = {alpha3="EST",numeric="233",name="Estonia"}, ["EG"] = {alpha3="EGY",numeric="818",name="Egypt"}, ["EH"] = {alpha3="ESH",numeric="732",name="Western Sahara"}, ["ER"] = {alpha3="ERI",numeric="232",name="Eritrea"}, ["ES"] = {alpha3="ESP",numeric="724",name="Spain"}, ["ET"] = {alpha3="ETH",numeric="231",name="Ethiopia"}, ["FI"] = {alpha3="FIN",numeric="246",name="Finland"}, ["FJ"] = {alpha3="FJI",numeric="242",name="Fiji"}, ["FK"] = {alpha3="FLK",numeric="238",name="Falkland Islands",isoname="Falkland Islands (Malvinas)",altnames={"Falklands","Islas Malvinas","Malvinas","Malvinas Islands"}}, ["FM"] = {alpha3="FSM",numeric="583",name="Federated States of Micronesia",isoname="Micronesia (Federated States of)",altnames={"Micronesia"}}, ["FO"] = {alpha3="FRO",numeric="234",name="Faroe Islands",altnames={"Faroer","Faeroer"}}, ["FR"] = {alpha3="FRA",numeric="250",name="France"}, ["GA"] = {alpha3="GAB",numeric="266",name="Gabon"}, ["GB"] = {alpha3="GBR",numeric="826",name="United Kingdom",isoname="United Kingdom of Great Britain and Northern Ireland",altnames={"UK","Great Britain"}}, ["GB-ENG"] = {alpha3="ENG",numeric="000",name="England"}, --Considered to be a country ["GB-NIR"] = {alpha3="NIR",numeric="000",name="Northern Ireland"}, --Considered to be a country ["GB-SCT"] = {alpha3="SCT",numeric="000",name="Scotland"}, --Considered to be a country ["GB-WLS"] = {alpha3="WLS",numeric="000",name="Wales"}, --Considered to be a country ["GB-EAW"] = {alpha3="EAW",numeric="000",name="England and Wales"}, --Considered to be a country ["GD"] = {alpha3="GRD",numeric="308",name="Grenada"}, ["GE"] = {alpha3="GEO",numeric="268",name="Georgia"}, ["GF"] = {alpha3="GUF",numeric="254",name="French Guiana"}, ["GG"] = {alpha3="GGY",numeric="831",name="Guernsey"}, ["GH"] = {alpha3="GHA",numeric="288",name="Ghana"}, ["GI"] = {alpha3="GIB",numeric="292",name="Gibraltar"}, ["GL"] = {alpha3="GRL",numeric="304",name="Greenland"}, ["GM"] = {alpha3="GMB",numeric="270",name="Gambia"}, ["GN"] = {alpha3="GIN",numeric="324",name="Guinea"}, ["GP"] = {alpha3="GLP",numeric="312",name="Guadeloupe"}, ["GQ"] = {alpha3="GNQ",numeric="226",name="Equatorial Guinea"}, ["GR"] = {alpha3="GRC",numeric="300",name="Greece"}, ["GS"] = {alpha3="SGS",numeric="239",name="South Georgia and the South Sandwich Islands"}, ["GT"] = {alpha3="GTM",numeric="320",name="Guatemala"}, ["GU"] = {alpha3="GUM",numeric="316",name="Guam"}, ["GW"] = {alpha3="GNB",numeric="624",name="Guinea-Bissau"}, ["GY"] = {alpha3="GUY",numeric="328",name="Guyana"}, ["HK"] = {alpha3="HKG",numeric="344",name="Hong Kong",altnames={"Hong Kong SAR","HKSAR"}}, ["HM"] = {alpha3="HMD",numeric="334",name="Heard Island and McDonald Islands",altnames={"Heard and McDonald Islands"}}, ["HN"] = {alpha3="HND",numeric="340",name="Honduras"}, ["HR"] = {alpha3="HRV",numeric="191",name="Croatia"}, ["HT"] = {alpha3="HTI",numeric="332",name="Haiti"}, ["HU"] = {alpha3="HUN",numeric="348",name="Hungary"}, ["ID"] = {alpha3="IDN",numeric="360",name="Indonesia"}, ["IE"] = {alpha3="IRL",numeric="372",name="Ireland",altnames={"Republic of Ireland"}}, ["IL"] = {alpha3="ISR",numeric="376",name="Israel"}, ["IM"] = {alpha3="IMN",numeric="833",name="Isle of Man"}, ["IN"] = {alpha3="IND",numeric="356",name="India"}, ["IO"] = {alpha3="IOT",numeric="086",name="British Indian Ocean Territory"}, ["IQ"] = {alpha3="IRQ",numeric="368",name="Iraq"}, ["IR"] = {alpha3="IRN",numeric="364",name="Iran",isoname="Iran (Islamic Republic of)"}, ["IS"] = {alpha3="ISL",numeric="352",name="Iceland"}, ["IT"] = {alpha3="ITA",numeric="380",name="Italy"}, ["JE"] = {alpha3="JEY",numeric="832",name="Jersey"}, ["JM"] = {alpha3="JAM",numeric="388",name="Jamaica"}, ["JO"] = {alpha3="JOR",numeric="400",name="Jordan"}, ["JP"] = {alpha3="JPN",numeric="392",name="Japan"}, ["KE"] = {alpha3="KEN",numeric="404",name="Kenya"}, ["KG"] = {alpha3="KGZ",numeric="417",name="Kyrgyzstan"}, ["KH"] = {alpha3="KHM",numeric="116",name="Cambodia"}, ["KI"] = {alpha3="KIR",numeric="296",name="Kiribati"}, ["KM"] = {alpha3="COM",numeric="174",name="Comoros"}, ["KN"] = {alpha3="KNA",numeric="659",name="Saint Kitts and Nevis",altnames={"St Kitts and Nevis"}}, ["KP"] = {alpha3="PRK",numeric="408",name="North Korea",isoname="Korea (Democratic People's Republic of)",altnames={"Democratic People's Republic of Korea"}}, ["KR"] = {alpha3="KOR",numeric="410",name="South Korea",isoname="Korea, Republic of",altnames={"Republic of Korea"}}, ["KW"] = {alpha3="KWT",numeric="414",name="Kuwait"}, ["KY"] = {alpha3="CYM",numeric="136",name="Cayman Islands"}, ["KZ"] = {alpha3="KAZ",numeric="398",name="Kazakhstan"}, ["LA"] = {alpha3="LAO",numeric="418",name="Laos",isoname="Lao People's Democratic Republic"}, ["LB"] = {alpha3="LBN",numeric="422",name="Lebanon"}, ["LC"] = {alpha3="LCA",numeric="662",name="Saint Lucia",altnames={"St Lucia"}}, ["LI"] = {alpha3="LIE",numeric="438",name="Liechtenstein"}, ["LK"] = {alpha3="LKA",numeric="144",name="Sri Lanka"}, ["LR"] = {alpha3="LBR",numeric="430",name="Liberia"}, ["LS"] = {alpha3="LSO",numeric="426",name="Lesotho"}, ["LT"] = {alpha3="LTU",numeric="440",name="Lithuania"}, ["LU"] = {alpha3="LUX",numeric="442",name="Luxembourg"}, ["LV"] = {alpha3="LVA",numeric="428",name="Latvia"}, ["LY"] = {alpha3="LBY",numeric="434",name="Libya"}, ["MA"] = {alpha3="MAR",numeric="504",name="Morocco"}, ["MC"] = {alpha3="MCO",numeric="492",name="Monaco"}, ["MD"] = {alpha3="MDA",numeric="498",name="Moldova",isoname="Moldova, Republic of"}, ["ME"] = {alpha3="MNE",numeric="499",name="Montenegro"}, ["MF"] = {alpha3="MAF",numeric="663",name="Saint-Martin",isoname="Saint Martin (French part)",altnames={"St Martin","St Martin (French part)","Collectivity of Saint Martin","Collectivity of St Martin"}}, ["MG"] = {alpha3="MDG",numeric="450",name="Madagascar"}, ["MH"] = {alpha3="MHL",numeric="584",name="Marshall Islands"}, ["MK"] = {alpha3="MKD",numeric="807",name="North Macedonia",altnames={"Republic of North Macedonia","Macedonia","Republic of Macedonia","Macedonia, the former Yugoslav Republic of"}}, ["ML"] = {alpha3="MLI",numeric="466",name="Mali"}, ["MM"] = {alpha3="MMR",numeric="104",name="Myanmar",altnames={"Burma"}}, ["MN"] = {alpha3="MNG",numeric="496",name="Mongolia"}, ["MO"] = {alpha3="MAC",numeric="446",name="Macau",isoname="Macao",altnames={"Macau SAR","Macao SAR"}}, ["MP"] = {alpha3="MNP",numeric="580",name="Northern Mariana Islands"}, ["MQ"] = {alpha3="MTQ",numeric="474",name="Martinique"}, ["MR"] = {alpha3="MRT",numeric="478",name="Mauritania"}, ["MS"] = {alpha3="MSR",numeric="500",name="Montserrat"}, ["MT"] = {alpha3="MLT",numeric="470",name="Malta"}, ["MU"] = {alpha3="MUS",numeric="480",name="Mauritius"}, ["MV"] = {alpha3="MDV",numeric="462",name="Maldives"}, ["MW"] = {alpha3="MWI",numeric="454",name="Malawi"}, ["MX"] = {alpha3="MEX",numeric="484",name="Mexico"}, ["MY"] = {alpha3="MYS",numeric="458",name="Malaysia"}, ["MZ"] = {alpha3="MOZ",numeric="508",name="Mozambique"}, ["NA"] = {alpha3="NAM",numeric="516",name="Namibia"}, ["NC"] = {alpha3="NCL",numeric="540",name="New Caledonia"}, ["NE"] = {alpha3="NER",numeric="562",name="Niger"}, ["NF"] = {alpha3="NFK",numeric="574",name="Norfolk Island"}, ["NG"] = {alpha3="NGA",numeric="566",name="Nigeria"}, ["NI"] = {alpha3="NIC",numeric="558",name="Nicaragua"}, ["NL"] = {alpha3="NLD",numeric="528",name="Netherlands"}, ["NO"] = {alpha3="NOR",numeric="578",name="Norway"}, ["NP"] = {alpha3="NPL",numeric="524",name="Nepal"}, ["NR"] = {alpha3="NRU",numeric="520",name="Nauru"}, ["NU"] = {alpha3="NIU",numeric="570",name="Niue"}, ["NZ"] = {alpha3="NZL",numeric="554",name="New Zealand",altnames={"Aotearoa"}}, ["OM"] = {alpha3="OMN",numeric="512",name="Oman"}, ["PA"] = {alpha3="PAN",numeric="591",name="Panama"}, ["PE"] = {alpha3="PER",numeric="604",name="Peru"}, ["PF"] = {alpha3="PYF",numeric="258",name="French Polynesia"}, ["PG"] = {alpha3="PNG",numeric="598",name="Papua New Guinea"}, ["PH"] = {alpha3="PHL",numeric="608",name="Philippines"}, ["PK"] = {alpha3="PAK",numeric="586",name="Pakistan"}, ["PL"] = {alpha3="POL",numeric="616",name="Poland"}, ["PM"] = {alpha3="SPM",numeric="666",name="Saint Pierre and Miquelon",altnames={"St Pierre and Miquelon"}}, ["PN"] = {alpha3="PCN",numeric="612",name="Pitcairn"}, ["PR"] = {alpha3="PRI",numeric="630",name="Puerto Rico"}, ["PS"] = {alpha3="PSE",numeric="275",name="Palestine",isoname="Palestine, State of",altnames={"State of Palestine"}}, ["PT"] = {alpha3="PRT",numeric="620",name="Portugal"}, ["PW"] = {alpha3="PLW",numeric="585",name="Palau"}, ["PY"] = {alpha3="PRY",numeric="600",name="Paraguay"}, ["QA"] = {alpha3="QAT",numeric="634",name="Qatar"}, ["RE"] = {alpha3="REU",numeric="638",name="Réunion"}, ["RO"] = {alpha3="ROU",numeric="642",name="Romania"}, ["RS"] = {alpha3="SRB",numeric="688",name="Serbia"}, ["RU"] = {alpha3="RUS",numeric="643",name="Russia",isoname="Russian Federation"}, ["RW"] = {alpha3="RWA",numeric="646",name="Rwanda"}, ["SA"] = {alpha3="SAU",numeric="682",name="Saudi Arabia"}, ["SB"] = {alpha3="SLB",numeric="090",name="Solomon Islands"}, ["SC"] = {alpha3="SYC",numeric="690",name="Seychelles"}, ["SD"] = {alpha3="SDN",numeric="729",name="Sudan"}, ["SE"] = {alpha3="SWE",numeric="752",name="Sweden"}, ["SG"] = {alpha3="SGP",numeric="702",name="Singapore"}, ["SH"] = {alpha3="SHN",numeric="654",name="Saint Helena, Ascension and Tristan da Cunha"}, ["SI"] = {alpha3="SVN",numeric="705",name="Slovenia"}, ["SJ"] = {alpha3="SJM",numeric="744",name="Svalbard and Jan Mayen"}, ["SK"] = {alpha3="SVK",numeric="703",name="Slovakia"}, ["SL"] = {alpha3="SLE",numeric="694",name="Sierra Leone"}, ["SM"] = {alpha3="SMR",numeric="674",name="San Marino"}, ["SN"] = {alpha3="SEN",numeric="686",name="Senegal"}, ["SO"] = {alpha3="SOM",numeric="706",name="Somalia"}, ["SR"] = {alpha3="SUR",numeric="740",name="Suriname"}, ["SS"] = {alpha3="SSD",numeric="728",name="South Sudan"}, ["ST"] = {alpha3="STP",numeric="678",name="São Tomé and Príncipe",isoname="Sao Tome and Principe",altnames={"Democratic Republic of Sao Tome and Principe"}}, ["SV"] = {alpha3="SLV",numeric="222",name="El Salvador"}, ["SX"] = {alpha3="SXM",numeric="534",name="Sint Maarten",isoname="Sint Maarten (Dutch part)",altnames={"St Maarten","Saint Martin (Dutch part)","St Martin (Dutch part)"}}, ["SY"] = {alpha3="SYR",numeric="760",name="Syria",isoname="Syrian Arab Republic"}, ["SZ"] = {alpha3="SWZ",numeric="748",name="Eswatini",altnames={"Swaziland"}}, ["TC"] = {alpha3="TCA",numeric="796",name="Turks and Caicos Islands"}, ["TD"] = {alpha3="TCD",numeric="148",name="Chad"}, ["TF"] = {alpha3="ATF",numeric="260",name="French Southern and Antarctic Lands",isoname="French Southern Territories"}, ["TG"] = {alpha3="TGO",numeric="768",name="Togo"}, ["TH"] = {alpha3="THA",numeric="764",name="Thailand"}, ["TJ"] = {alpha3="TJK",numeric="762",name="Tajikistan"}, ["TK"] = {alpha3="TKL",numeric="772",name="Tokelau"}, ["TL"] = {alpha3="TLS",numeric="626",name="Timor-Leste",altnames={"East Timor"}}, ["TM"] = {alpha3="TKM",numeric="795",name="Turkmenistan"}, ["TN"] = {alpha3="TUN",numeric="788",name="Tunisia"}, ["TO"] = {alpha3="TON",numeric="776",name="Tonga"}, ["TR"] = {alpha3="TUR",numeric="792",name="Turkey",isoname="Türkiye"}, ["TT"] = {alpha3="TTO",numeric="780",name="Trinidad and Tobago"}, ["TV"] = {alpha3="TUV",numeric="798",name="Tuvalu"}, ["TW"] = {alpha3="TWN",numeric="158",name="Taiwan",isoname="Taiwan, Province of China",altnames={"Republic of China"}}, ["TZ"] = {alpha3="TZA",numeric="834",name="Tanzania",isoname="Tanzania, United Republic of"}, ["UA"] = {alpha3="UKR",numeric="804",name="Ukraine"}, ["UG"] = {alpha3="UGA",numeric="800",name="Uganda"}, ["UM"] = {alpha3="UMI",numeric="581",name="United States Minor Outlying Islands"}, ["US"] = {alpha3="USA",numeric="840",name="United States",isoname="United States of America",altnames={"US","USA","U.S."}}, ["UY"] = {alpha3="URY",numeric="858",name="Uruguay"}, ["UZ"] = {alpha3="UZB",numeric="860",name="Uzbekistan"}, ["VA"] = {alpha3="VAT",numeric="336",name="Vatican City",isoname="Holy See",altnames={"Holy See (Vatican City State)","Vatican City State"}}, ["VC"] = {alpha3="VCT",numeric="670",name="Saint Vincent and the Grenadines",altnames={"St Vincent and the Grenadines"}}, ["VE"] = {alpha3="VEN",numeric="862",name="Venezuela",isoname="Venezuela (Bolivarian Republic of)"}, ["VG"] = {alpha3="VGB",numeric="092",name="British Virgin Islands",isoname="Virgin Islands (British)",altnames={"UK Virgin Islands","BVI"}}, ["VI"] = {alpha3="VIR",numeric="850",name="United States Virgin Islands",isoname="Virgin Islands (U.S.)",altnames={"US Virgin Islands","USVI"}}, ["VN"] = {alpha3="VNM",numeric="704",name="Vietnam",isoname="Viet Nam"}, ["VU"] = {alpha3="VUT",numeric="548",name="Vanuatu"}, ["WF"] = {alpha3="WLF",numeric="876",name="Wallis and Futuna"}, ["WS"] = {alpha3="WSM",numeric="882",name="Samoa"}, ["YE"] = {alpha3="YEM",numeric="887",name="Yemen"}, ["YT"] = {alpha3="MYT",numeric="175",name="Mayotte"}, ["ZA"] = {alpha3="ZAF",numeric="710",name="South Africa"}, ["ZM"] = {alpha3="ZMB",numeric="894",name="Zambia"}, ["ZW"] = {alpha3="ZWE",numeric="716",name="Zimbabwe"} } 1ae753fe1fa53ce062b0a008dbc9778d589666f0 Template:Collapse top 10 187 429 428 2023-09-30T19:37:04Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Collapse_top]] wikitext text/x-wiki <div style="margin-left:{{{indent|0}}}"><!-- NOTE: width renders incorrectly if added to main STYLE section --> {| <!-- Template:Collapse top --> class="mw-collapsible mw-archivedtalk {{<includeonly>safesubst:</includeonly>#if:{{{expand|{{{collapse|}}}}}}||mw-collapsed}} {{{class|}}}" style="background: {{{bg1|transparent}}}; text-align: left; border: {{{border|1px}}} solid {{{b-color|Silver}}}; margin: 0.2em auto auto; width:{{<includeonly>safesubst:</includeonly>#if:{{{width|}}}|{{{width}}}|100%}}; clear: {{{clear|both}}}; padding: 1px;" |- ! style="background: {{{bg|#{{main other|F0F2F5|CCFFCC}}}}}; font-size:87%; padding:0.2em 0.3em; text-align:{{<includeonly>safesubst:</includeonly>#if:{{{left|}}}|left|{{<includeonly>safesubst:</includeonly>#if:{{{align|}}}|left|center}}}}; {{<includeonly>safesubst:</includeonly>#if:{{{fc|}}}|color: {{{fc}}};|}}" | <div style="font-size:115%;{{<includeonly>safesubst:</includeonly>#if:{{{left|}}}||margin:0 4em}}">{{{1|{{{title|{{{reason|{{{header|{{{heading|{{{result|Extended content}}}}}}}}}}}}}}}}}}</div> {{<includeonly>safesubst:</includeonly>#if:{{{warning|{{{2|}}}}}} |{{<includeonly>safesubst:</includeonly>!}}- {{<includeonly>safesubst:</includeonly>!}} style="text-align:center; font-style:italic;" {{<includeonly>safesubst:</includeonly>!}} {{{2|The following is a closed discussion. {{strongbad|Please do not modify it.}} }}} }} |- | style="border: solid {{{border2|1px Silver}}}; padding: {{{padding|0.6em}}}; background: {{{bg2|White}}};" {{<includeonly>safesubst:</includeonly>!}}<noinclude> {{lorem ipsum|3}} {{Collapse bottom}} {{Documentation}} </noinclude> 247cc43d5198baf8804d0926529cbbdd7be91113 Template:Collapse bottom 10 188 431 430 2023-09-30T19:37:05Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Collapse_bottom]] wikitext text/x-wiki <includeonly>|}</div></includeonly><noinclude> {{Documentation|Template:Collapse top/doc}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 64b210e8ab0882b262da50e9fbccf2132bc34fab Template:Linkless exists 10 189 433 432 2023-09-30T19:37:05Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Linkless_exists]] wikitext text/x-wiki {{#if:{{PROTECTIONEXPIRY:edit|{{{1|}}}}}|{{{2|true}}}|{{{3|}}}}}<noinclude>{{documentation}}</noinclude> 1aa1e6e4f3589f452babd54a7c0bbc590dc2f96d Template:Notice 10 190 435 434 2023-09-30T19:37:06Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Notice]] wikitext text/x-wiki {{Mbox | name = Notice | demospace = {{{demospace|}}} | style = {{#if:{{{style|}}} |{{{style}}} }} | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = notice | image = {{#if:{{{image|}}} |[[File:{{{image}}}|40px|Notice|alt={{{imagealt|}}}]]}} | small = {{{small|}}} | smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|30px|Notice|alt={{{imagealt|}}}]]}} | imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }} | textstyle = {{{textstyle|text-align: {{#if:{{{center|}}}|center|{{{align|left}}}}};}}} | text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="{{{headstyle|text-align: {{#if:{{{center|}}}|center|left}};}}}">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!-- -->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}} }}<noinclude> {{Documentation}} </noinclude> 2cbdbb721ca517005f6827650eef5b0f17537a43 Module:ParameterCount 828 191 437 436 2023-09-30T19:37:07Z Führerredux 2 1 revision imported from [[:wikipedia:Module:ParameterCount]] Scribunto text/plain -- This module produces a count of all the arguments passed to it. local yesno = require('Module:Yesno') -- Trim a string local function trim(s) return s:match('^%s*(.-)%s*$') end -- Test whether a string is blank local function isBlank(s) return not s:find('%S') end -- Tests whether a string is a valid positional key, and if so, returns it. If -- the key is invalid, this returns nil. local function isPositionalKey(s) s = trim(s) if s:find('^[1-9][0-9]*$') then return tonumber(s) end end -- Return the count of all arguments for which testFunc returns a truthy value. local function count(args, testFunc) local ret = 0 for key, val in pairs(args) do if testFunc(key, val) then ret = ret + 1 end end return ret end -- Check shared arguments and get the parent argument count. local function main(frame, testFunc) local blankifiedTestFunc if yesno(frame.args.checkblanks) ~= false then -- Extend the test function to check for blanks as well. blankifiedTestFunc = function (key, val) if not isBlank(val) then return testFunc(key, val) end end else blankifiedTestFunc = testFunc end return count(frame:getParent().args, blankifiedTestFunc) end return { -- Called with {{#invoke:ParameterCount|all}} -- All specified parameters are counted, even those not supported by the -- template. all = function (frame) return main(frame, function () return true end) end, -- Called with {{#invoke:ParameterCount|main}} -- Users can specify a list of parameters to check, and a list of Lua -- Ustring patterns to check each parameter against. main = function (frame) local args = frame.args local keys, patterns = {}, {} -- Get key list for i, key in ipairs(args) do local positionalKey = isPositionalKey(key) if positionalKey then keys[positionalKey] = true else keys[trim(key)] = true end end -- Get patterns do local function getPattern(i) local pattern = args['pattern' .. tostring(i)] if pattern and pattern ~= '' then return pattern end end local i = 1 local pattern = getPattern(i) while pattern do patterns[i] = pattern i = i + 1 pattern = getPattern(i) end end -- Construct the test function local testFunc = function (key, val) if keys[key] then return true end for i, pattern in ipairs(patterns) do if mw.ustring.find(tostring(key), pattern) then return true end end return false end return main(frame, testFunc) end } 63e3811b7a17825c071b1920ce88af06bc1e778d Template:Count 10 192 439 438 2023-09-30T19:37:10Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Count]] wikitext text/x-wiki {{safesubst<noinclude/>:#ifexpr:{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}>0|{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}|{{{base|0}}}}}<noinclude>{{documentation}}</noinclude> ccdb0aa784669ceae716044a9267ac7c4dea7283 Template:Template link code 10 193 441 440 2023-09-30T19:37:11Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_link_code]] wikitext text/x-wiki <includeonly>{{#Invoke:Template link general|main|nolink=yes|code=yes|nowrap=yes}}</includeonly><noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlc}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 044f00ca1bfc10cb967c32e893043ccc6f739764 Template:Tld 10 194 443 442 2023-09-30T19:37:11Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tld]] wikitext text/x-wiki #REDIRECT [[Template:Template link code]] be5d6275ea41d83224503e05901f3405c82141f7 Template:CountryPrefixThe 10 195 445 444 2023-09-30T19:37:12Z Führerredux 2 1 revision imported from [[:wikipedia:Template:CountryPrefixThe]] wikitext text/x-wiki <includeonly>{{{{{|safesubst:}}}#switch: {{{1|}}} | Austrian Empire | Bahamas | Batavian Republic | Belgian Congo | British Antarctic Territory | British Empire | British Virgin Islands | Bukharan People's Soviet Republic | Cape Colony | Captaincy General of Chile | Caribbean | Cayman Islands | Central African Republic | Channel Islands | Collectivity of Saint Martin | Colony of Natal | Colony of Santiago | Comoros | Congo Free State | Cook Islands | Cossack Hetmanate | Crown Dependencies | Czech Republic | Danish colonial empire | Democratic Republic of the Congo | Dominican Republic | Dominion of Newfoundland | Donetsk People's Republic | Duchy of Nassau | Dutch Caribbean | Dutch East Indies | Dutch Empire | Dutch Republic | Empire of Brazil | Falkland Islands | Falkland Islands Dependencies | Faroe Islands | Federal Republic of Central America | Federated States of Micronesia | Federation of Rhodesia and Nyasaland | French Union | French colonial empire | Gambia | German Empire | German colonial empire | Greater Republic of Central America | Gilbert and Ellice Islands | Grand Duchy of Hesse | Grand Duchy of Tuscany | Habsburg monarchy | Habsburg Netherlands | Hawaiian Kingdom | Holy Roman Empire | Holy See | Inca civilization | Irish Free State | Isle of Man | Italian Empire | Japanese colonial empire | Kazakh Autonomous Socialist Soviet Republic | Kazakh Soviet Socialist Republic | Kingdom of Hanover | Kingdom of Hawaii | Kingdom of Jerusalem | Kingdom of Naples | Kingdom of Sardinia | Kingdom of Sicily | Kingdom of the Two Sicilies | Kirghiz Soviet Socialist Republic | Luhansk People's Republic | Maldives | Mamluk Sultanate | Maratha Empire | Marshall Islands | Moldavian Autonomous Soviet Socialist Republic | Moldavian Soviet Socialist Republic | Mongol Empire | Mughal Empire | Nagorno-Karabakh Republic | Netherlands | Netherlands Antilles | New Hebrides | Northern Mariana Islands | Orange Free State | Ottoman Empire | Palestinian territories | Papal States | Philippines | Pitcairn Islands | Polish–Lithuanian Commonwealth | Portuguese Empire | Province of Quebec (1763–1791) | Republic of Artsakh | Republic of Florence | Republic of Genoa | Republic of Ireland | Republic of Macedonia | Republic of New Granada | Republic of Texas | Republic of the Congo | Republic of Venice | Russian Empire | Sahrawi Arab Democratic Republic | Socialist Republic of Macedonia | Solomon Islands | South African Republic | Southern Nigeria Protectorate | Soviet Union | Spanish East Indies | Spanish Empire | Spanish West Indies | State of Palestine | Straits Settlements | Swedish colonial empire | Territory of Papua | Thirteen Colonies | Trucial States | Trust Territory of the Pacific Islands | Turkmen Soviet Socialist Republic | Turks and Caicos Islands | United Arab Emirates | United Kingdom | United States | United States Virgin Islands | Viceroyalty of New Granada | Viceroyalty of Peru | Viceroyalty of the Río de la Plata | Zulu Kingdom =<!-- -->{{#ifeq: {{Yesno-no|{{{capitalised|{{{capitalized|}}}}}}}}|yes|The|the}} {{#ifeq: {{Yesno-no|{{{onlythe|}}}}}|yes||{{{1|}}}}}<!-- -->|#default={{#ifeq: {{Yesno-no|{{{onlythe|}}}}}|yes||{{{1|}}}}}<!-- -->}}</includeonly><noinclude> {{Documentation}} </noinclude> fed009e885630af9150708cf0df3d0f2e3938c43 Template:Strfind short 10 196 447 446 2023-09-30T19:37:13Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Strfind_short]] wikitext text/x-wiki {{#Invoke:String|find|source={{{1|}}}|{{{2}}}}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> f5475bb1d4bf09dc8dea7613cd4bc79847dafcbc Template:Find country 10 197 449 448 2023-09-30T19:37:13Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Find_country]] wikitext text/x-wiki <includeonly>{{#if: {{{1|}}} | {{#invoke:Find country|main|string={{{1|}}}|match={{{match|}}}|nomatch={{{nomatch|}}}}} }}</includeonly><noinclude>{{Documentation}}</noinclude> 87d8d8e45c6295e043512958d665ffbdf7819cc1 Module:Find country 828 198 451 450 2023-09-30T19:37:14Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Find_country]] Scribunto text/plain --[[ v1.00 Test the string against the list of countries/continents. Return the first word which matches a country/continent name ... unless the "match=" parameter specifies a different match. If there is no match, then return an empty string ... unless the "nomatch" parameter specifies something different ]] local getArgs = require('Module:Arguments').getArgs local p = {} -- config local nomatch = "" local matchnum = 1 local countryList = { 'South Africa', 'the Central African Republic', 'Central African Republic', 'Africa', 'Antarctica', 'Central Asia', 'South Asia', 'South East Asia', 'Southeast Asia', 'Asia', 'the Caribbean', 'Caribbean', 'Eurasia', 'Europe', 'the Middle East', 'Middle East', 'Central America', 'North America', 'South America', 'Oceania', 'the Americas', 'Afghanistan', 'Albania', 'Algeria', 'American Samoa', 'Andorra', 'Angola', 'Anguilla', 'Antigua and Barbuda', 'Argentina', 'Armenia', 'Aruba', 'Australia', 'the Austrian Empire', 'Austrian Empire', 'Austria-Hungary', 'Austria', 'Azerbaijan', 'the Bahamas', 'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bermuda', 'Bhutan', 'Bolivia', 'Bosnia and Herzegovina', 'Botswana', 'Brazil', 'Brunei Darussalam', 'Brunei', 'Bulgaria', 'Burkina Faso', 'Burundi', 'Cambodia', 'Cameroon', 'Canada', 'Cape Verde', 'the Cayman Islands', 'Cayman Islands', 'Chad', 'Chile', "the People's Republic of China", "People's Republic of China", 'China PR', 'PR China', 'China', 'Colombia', 'Comoros', 'the Republic of the Congo', 'the Democratic Republic of the Congo', 'Democratic Republic of the Congo', 'Congo DR', 'DR Congo', 'DRC', 'the Congo', 'Congo', 'Cook Islands', 'Costa Rica', 'Croatia', 'Cuba', 'Curaçao', 'Curacao', 'Cyprus', 'the Czech Republic', 'Czech Republic', 'Czechia', 'Denmark', 'Djibouti', 'the Dominican Republic', 'Dominican Republic', 'Dominica', 'East Timor', 'Timor-Leste', 'Ecuador', 'Egypt', 'El Salvador', 'England', 'Eritrea', 'Estonia', 'Eswatini', 'Ethiopia', 'the Falkland Islands', 'Falkland Islands', 'the Faroe Islands', 'Faroe Islands', 'Fiji', 'Finland', 'France', 'Gabon', 'the Gambia', 'Gambia', 'Georgia', 'Germany', 'Ghana', 'Gibraltar', 'Great Britain', 'Britain', 'Greece', 'Grenada', 'Guam', 'Guatemala', 'Papua New Guinea', 'Equatorial Guinea', 'Guinea-Bissau', 'Guinea', 'Guyana', 'Haiti', 'Honduras', 'Hong Kong', 'Hungary', 'Iceland', 'India', 'Indonesia', 'Iran', 'Iraq', 'Northern Ireland', 'the Republic of Ireland', 'Republic of Ireland', 'Ireland', 'Israel', 'Italy', 'Ivory Coast', "Côte d'Ivoire", 'Jamaica', 'Japan', 'Jordan', 'Kazakhstan', 'Kenya', 'Kiribati', 'Kosovo', 'the Republic of Kosovo', 'Republic of Kosovo', 'Kuwait', 'Kyrgyzstan', 'the Kyrgyz Republic', 'Kyrgyz Republic', "the Lao People's Democratic Republic", "Lao People's Democratic Republic", 'Laos', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 'Libya', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Macau', 'the Republic of Macedonia', 'Republic of Macedonia', 'North Macedonia', 'Macedonia', 'Madagascar', 'Malawi', 'Malaysia', 'the Maldives', 'Maldives', 'Mali', 'Malta', 'the Marshall Islands', 'Marshall Islands', 'Mauritania', 'Mauritius', 'Mexico', 'the Federated States of Micronesia', 'Federated States of Micronesia', 'Micronesia', 'FSM', 'Moldova', 'Monaco', 'Mongolia', 'Montenegro', 'Montserrat', 'Morocco', 'Mozambique', 'Myanmar', 'Namibia', 'Nauru', 'Nepal', 'the Netherlands', 'Netherlands', 'New Caledonia', 'New Zealand', 'Nicaragua', 'Nigeria', 'Niger', 'North Korea', "the People's Democratic Republic of Korea", "the Democratic People's Republic of Korea", "Democratic People's Republic of Korea", "People's Democratic Republic of Korea", 'DPR Korea', 'Korea DPR', 'Norway', 'Oman', 'the Ottoman Empire', 'Ottoman Empire', 'Ottoman Egypt', 'Pakistan', 'Palau', 'Mandatory Palestine', 'Palestine', 'the Palestinian territories', 'Palestinian territories', 'Panama', 'Paraguay', 'Peru', 'the Philippines', 'Philippines', 'Poland', 'Portugal', 'Puerto Rico', 'the Spanish Virgin Islands', 'Spanish Virgin Islands', 'Qatar', 'Romania', 'the Russian Empire', 'Russian Empire', 'the Russian Federation', 'Russian Federation', 'Russia', 'Rwanda', 'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Vincent and the Grenadines', 'Western Samoa', 'Samoa', 'San Marino', 'São Tomé and Príncipe', 'São Tomé and Príncipe', 'Sao Tome and Principe', 'Saudi Arabia', 'Scotland', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapore', 'Slovakia', 'Slovenia', 'the Solomon Islands', 'Solomon Islands', 'Somalia', 'South Korea', 'the Republic of Korea', 'Korea Republic', 'South Sudan', 'Sudan', 'Spain', 'Sri Lanka', 'Suriname', 'Swaziland', 'Sweden', 'Switzerland', 'Syria', 'Tahiti', 'the Republic of China', 'Republic of China', 'Taiwan', 'Tajikistan', 'Tanzania', 'Thailand', 'Togo', 'Tonga', 'Trinidad and Tobago', 'Trinidad', 'Tobago', 'Tunisia', 'Turkey', 'Turkmenistan', 'Turks and Caicos Islands', 'Tuvalu', 'Uganda', 'Ukraine', 'the United Arab Emirates', 'the UAE', 'the U.A.E.', 'United Arab Emirates', 'UAE', 'U.A.E.', 'the United Kingdom', 'United Kingdom', 'the UK', 'the U.K.', 'UK', 'U.K.', 'the United States of America', 'the United States', 'the USA', 'the U.S.A.', 'United States of America', 'United States', 'US', 'U.S.', 'USA', 'U.S.A.', 'America', 'Uruguay', 'Uzbekistan', 'Vanuatu', 'Venezuela', 'Vietnam', 'the British Virgin Islands', 'British Virgin Islands', 'UK Virgin Islands', 'U.K. Virgin Islands', 'the United States Virgin Islands', 'the US Virgin Islands', 'the U.S. Virgin Islands', 'United States Virgin Islands', 'US Virgin Islands', 'U.S. Virgin Islands', 'the Virgin Islands', 'Virgin Islands', 'Wales', 'Yemen', 'Zambia', 'Zimbabwe', 'Find country/testcases' } -- returns the name of a country that is found in the string -- ... or an empty string if there is no match function findcountryinstring(str) nMatches = 0 myMatches ={} str=" " .. str:gsub("^%s*(.-)%s*$", "%1") .. " " -- check agaist each country -- if there is a match, then return that country for i, thiscountry in ipairs(countryList) do if mw.ustring.find(str, thiscountry) then nMatches = nMatches + 1 myMatches[nMatches] = thiscountry end end if (nMatches == 0) then -- none of the title words matches a whole country return nomatch end if ((matchnum >= 1) and (matchnum <= nMatches)) then return myMatches[matchnum] end if (matchnum < 0) then matchnum = matchnum + 1 -- so that -1 is the last match etc if ((matchnum + nMatches) >= 1) then return myMatches[matchnum + nMatches] end end -- if we get here, we have not found a match at the position specified by "matchnum" return nomatch end function p.main(frame) local args = getArgs(frame) return p._main(args) end function p._main(args) if (args['nomatch'] ~= nil) then nomatch = args['nomatch'] end -- by default, we return the first match -- but the optional "C" paarmeter sets the "matchnum" variable, which -- * for a positive matchnum "n", returns the nth match if it exists -- * for a positive matchnum "n", returns (if it exists) the nth match -- counting backwards from the end. -- So "match=-1" returns the last match -- and "match=-3" returns the 3rd-last match if (args['match'] ~= nil) then matchnum = tonumber(args['match']) if ((matchnum == nil) or (matchnum == 0)) then matchnum = 1 end end -- by default, we use the current page -- but if the "string=" parameters is supplied, we use that -- so we try the parameter first thispagename = nil if ((args['string'] ~= nil) and (args['string'] ~= "")) then -- we have a non-empty "string" parameter, so we use it thisstring = args['string'] else -- get the page title thispage = mw.title.getCurrentTitle() thisstring = thispage.text; end -- now check the pagename to try to find a country result = findcountryinstring(thisstring) if (result == "") then return nomatch end return result end return p c15468102dad4b0bd85392d3ecf49bcb6e12c324 Template:Detect singular 10 199 453 452 2023-09-30T19:37:18Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Detect_singular]] wikitext text/x-wiki {{#invoke:Detect singular|main}}<noinclude> {{documentation}} </noinclude> 0dd1507d935296f20a354173ba876d010a9ed72b Template:Clc 10 200 455 454 2023-09-30T19:37:21Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Clc]] wikitext text/x-wiki #REDIRECT [[Template:Category link with count]] 02280e2ab57b544236e11f913e3759c5781ca9d5 Template:Generic template demo 10 201 457 456 2023-09-30T19:37:22Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Generic_template_demo]] wikitext text/x-wiki #REDIRECT [[Template:Parameter names example]] {{R semiprotected}} [[Category:Wikipedia utility templates]] [[Category:Template namespace templates]] [[Category:Documentation assistance templates]] 22f645541f749cfd0eeffdee734b51b284103400 Template:UF-hcard-person 10 202 459 458 2023-09-30T19:37:23Z Führerredux 2 1 revision imported from [[:wikipedia:Template:UF-hcard-person]] wikitext text/x-wiki The HTML markup produced by this template includes an [[HCard|hCard microformat]], which makes the person's details [[Parsing|parsable]] by computers, either acting automatically to catalogue articles across Wikipedia or via a browser tool operated by a reader, to (for example) add the subject to an address book or database. For more information about the use of [[microformat]]s on Wikipedia, please see [[Wikipedia:WikiProject Microformats|the microformat project]]. === Sub-templates === Date-of-birth ("bday") information will only be included in the microformat if {{tl|birth date}}, or {{tl|birth date and age}} are used in the infobox. ([[Wikipedia:WikiProject Microformats/dates|Do not use these if the date is before 1583]]). Be cautious about using these if the person is still living, per [[WP:DOB]]. To include a URL, use {{Tl|URL}}. '''Please do not remove instances of these sub-templates.''' === Classes === hCard uses HTML classes including: {{Flatlist| *adr *agent *bday *birthplace *category *country-name *deathdate *deathplace *extended-address *family-name *fn (required) *given-name *honorific-prefix *honorific-suffix *label *locality *n *nickname *note *org *role *url *vcard }} '''Please do not rename or remove these classes nor collapse nested elements which use them.'''<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCards]]}} }}</includeonly><noinclude> [[Category:Templates generating hCards]] [[Category:Microformat (uF) message templates]] </noinclude> cf7d7c17b9e4a925f11599e609ceb43d23ba29ea Template:Infobox officeholder/doc 10 203 461 460 2023-09-30T19:37:25Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Infobox_officeholder/doc]] wikitext text/x-wiki {{Documentation subpage}} {{Person infobox header}} {{High-use|demo={{ROOTPAGENAME}}}} {{Notice|Please note that in June 2017, the {{para|religion}} parameter was removed from Infobox officeholder as a result of [[Template talk:Infobox officeholder/Archive 21#Religion in officeholder infoboxes|this discussion]].}} {{tl|Infobox officeholder}} is incorporated into the following templates (i.e. all the templates listed <span class="plainlinks">[{{fullurl:Special:WhatLinksHere/Template:Infobox officeholder|namespace=10&limit=1000&hidetrans=1&hidelinks=1}} here]</span>). Please use the most appropriate name when placing this template on a page. {{collapse top |title= List of templates}} {{refbegin|colwidth=20em}} * {{Tld|Infobox AM}} * {{Tld|Infobox Canadian MP}} * {{Tld|Infobox Canadian senator}} * {{Tld|Infobox candidate}} * {{Tld|Infobox civil servant}} * {{Tld|Infobox chancellor}} * {{Tld|Infobox congressional candidate}} * {{Tld|Infobox congressman}} * {{Tld|Infobox defense minister}} * {{Tld|Infobox deputy first minister}} * {{Tld|Infobox deputy prime minister}} * {{Tld|Infobox doge}} * {{Tld|Infobox Eritrea cabinet official}} * {{Tld|Infobox first lady}} * {{Tld|Infobox first minister}} * {{Tld|Infobox governor}} * {{Tld|Infobox governor-elect}} * {{Tld|Infobox governor general}} * {{Tld|Infobox governor-general}} * {{Tld|Infobox Indian politician}} * {{Tld|Infobox judge}} * {{Tld|Infobox lt governor}} * {{Tld|Infobox mayor}} * {{Tld|Infobox MEP}} * {{Tld|Infobox minister}} * {{Tld|Infobox MLA}} * {{Tld|Infobox MP}} * {{Tld|Infobox MSP}} * {{Tld|Infobox PM}} * {{Tld|Infobox politician}} * {{Tld|Infobox politician (general)}} * {{Tld|Infobox premier}} * {{Tld|Infobox president}} * {{Tld|Infobox president-elect}} * {{Tld|Infobox prime minister}} * {{Tld|Infobox prime minister-elect}} * {{Tld|Infobox representative-elect}} * {{Tld|Infobox SCC chief justice}} * {{Tld|Infobox SCC puisne justice}} * {{Tld|Infobox secretary-general}} * {{Tld|Infobox senator}} * {{Tld|Infobox senator-elect}} * {{Tld|Infobox speaker}} * {{Tld|Infobox state representative}} * {{Tld|Infobox state SC associate justice}} * {{Tld|Infobox state SC justice}} * {{Tld|Infobox state senator}} * {{Tld|Infobox US ambassador}} * {{Tld|Infobox US associate justice}} * {{Tld|Infobox US cabinet official}} * {{Tld|Infobox US chief justice}} * {{Tld|Infobox US territorial governor}} * {{Tld|Infobox vice president}} {{refend}} {{collapse bottom}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} ==Usage== {{hatnote|Note: This template is for use on articles about '''individual people'''. For the infobox for use on articles about offices/positions, see [[Template:Infobox official post]].}} Paste the code for the relevant office and then add the [[#Personal data|personal data]] to the bottom. There are no required fields and some fields will not appear when others are in use. For instructions on how to implement multiple terms, see [[Template:Infobox officeholder/example#Multiple terms|this page]]. For advice on alt text, see ''[[Wikipedia:Alternative text for images]]''. The parameter {{para|order}} is used in conjunction with {{para|office}} to state that the officeholder is the ''n''th holder of the office, for example "42nd President of the United States". This should only be used when there is a well established use of such numbering in reliable sources. Do not add numbers simply based on a Wikipedia list of holders of the office, because (1) the list may not be accurate and (2) even with a definite list, different numbering systems could be applied (as to how various categories of "irregular" officeholders should be counted, and as to the counting of those serving for multiple non-consecutive periods) making the numbers arbitrary; and even where such issues are not yet present, they are bound to be in the future, making this unsustainable. Per [[WP:SEAOFBLUE]], it is not recommended to wikilink {{para|order}} to a list of officeholders, even if such a list exists. If {{para|order}} is not specified, the value of {{para|office}} can be [[Help:Link#Wikilinks|wikilinked]] in the usual way, for example, "<code><nowiki>[[Ministry of Defence (Singapore)|Minister for Defence]]</nowiki></code>". However, if {{para|order}} is specified together with {{para|office}}, the value of {{para|office}} is automatically linked to a Wikipedia article of the same name, whether such an article exists or not. Wikilinking cannot be used to redirect the link elsewhere, but a [[Wikipedia:Piped link|piped link]] can be created like this: "<code><nowiki>Ministry of Defence (Singapore){{!}}Minister for Defence</nowiki></code>" (note that the double square brackets have been omitted). When both a start and an end term are given, you can instead specify the complete term using the parameters {{para|term}}, {{para|term2}}, etc. This can be helpful for complicated terms that cannot be given as simple starting or ending dates, or if you prefer something other than the default term separator (an en dash, with spaces around it if the start or end is not a simple integer date). Where a politician was redistricted into a new district, you can use {{para|prior_term}} to indicate which district(s) they were in before. This saves space in the infobox by not generating a completely new office each time redistricting happens. If you do this, it is recommended that you list the person who preceded the subject when the subject first took office and the person who succeeded the subject when the subject last left office. Where the use of "same district number" is used for determining "predecessor" and "successor" in any office, but where the area is so altered as to make such a "predecessor" or "successor" of little or no biographical value, the word "redistricted" should be used rather than using names of officeholders whose connection is accidental by virtue of district number, but unrelated to any election contests between officeholders. Please do not re-purpose any fields to add decorative images, icons or flags. Template:Infobox viceroy styles or the like can be used for this. [[WP:INFOBOXFLAG]] applies here. Per consensus in [[Wikipedia:Village pump (proposals)/Archive 175#RfC: Interim use of successor in Infobox officeholder|this RfC]], the infobox for an incumbent officeholder should not mention an [[-elect|elected or designated]] successor, or the end date of the term, until the successor takes office. ===General office=== {{For|examples of this code in use|Template:Infobox officeholder/example#General office}} {{Generic template demo | honorific_prefix | name<!-- defaults to article title when left blank --> | native_name | native_name_lang | honorific_suffix | image | image_size | image_upright | image name | image_name_alt | smallimage | smallimage_alt | alt | caption | order | office | status<!--If this is specified, overrides Incumbent.--> | term_start | term_end<!-- Add data only when the actual term has ended, not for terms which will end in the future. (Per usage guideline.) --> | subterm | suboffice | alongside | monarch | president | governor_general | primeminister | chancellor | taoiseach | governor | co-leader | vicepresident | viceprimeminister | deputy | lieutenant | parliamentarygroup | constituency | majority | predecessor | successor | prior_term | order2 | office2 | term_start2 | term_end2 | subterm2 | suboffice2 | alongside2 | monarch2 | president2 | governor_general2 | primeminister2 | chancellor2 | taoiseach2 | governor2 | co-leader2 | vicepresident2 | viceprimeminister2 | deputy2 | lieutenant2Z | parliamentarygroup2 | constituency2 | predecessor2 | successor2 | majority2 | prior_term2 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox officeholder | honorific_prefix = | name = <!-- defaults to article title when left blank --> | native_name = <!--The person's name in their own language, if different.--> | native_name_lang = <!--ISO 639-1 code, e.g., "fr" for French. If more than one, use {{lang}} in |native_name= instead.--> | honorific_suffix = | image = | image_size = | image_upright = | smallimage = <!--If this is specified, "image" should not be.--> | smallimage_alt = | alt = | caption = | order = | office = | status = <!--If this is specified, overrides Incumbent.--> | term_start = | term_end = <!-- Add data only when the actual term has ended, not for terms which will end in the future. (Per usage guideline.) --> | subterm = | suboffice = | alongside = <!--For two or more people serving in the same position from the same district. (e.g. United States senators.)--> | monarch = | president = | governor_general = | primeminister = | taoiseach = | chancellor = | governor = | co-leader = | vicepresident = | viceprimeminister = | deputy = | lieutenant = | succeeding = <!--For President-elect or equivalent--> | parliamentarygroup = | constituency = | majority = | predecessor = | successor = <!-- should not be filled until the successor takes office--> | prior_term = | order2 = <!--Can be repeated up to 16 times by changing the number--> | office2 = <!--Can be repeated up to 16 times by changing the number--> | term_start2 = <!--Can be repeated up to 16 times by changing the number--> | term_end2 = <!--Can be repeated up to 16 times by changing the number--> | subterm2 = <!--Can be repeated up to 16 times by changing the number--> | suboffice2 = <!--Can be repeated up to 16 times by changing the number--> | alongside2 = <!--Can be repeated up to 16 times by changing the number--> | monarch2 = <!--Can be repeated up to 16 times by changing the number--> | president2 = <!--Can be repeated up to 16 times by changing the number--> | governor_general2 = <!--Can be repeated up to 16 times by changing the number--> | primeminister2 = <!--Can be repeated up to 16 times by changing the number--> | chancellor2 = <!--Can be repeated up to 16 times by changing the number--> | taoiseach2 = <!--Can be repeated up to 16 times by changing the number--> | governor2 = <!--Can be repeated up to 16 times by changing the number--> | co-leader2 = <!--Can be repeated up to 16 times by changing the number--> | vicepresident2 = <!--Can be repeated up to 16 times by changing the number--> | viceprimeminister2 = <!--Can be repeated up to 16 times by changing the number--> | deputy2 = <!--Can be repeated up to 16 times by changing the number--> | lieutenant2 = <!--Can be repeated up to 16 times by changing the number--> | succeeding2 = <!--Can be repeated up to 16 times by changing the number--> | predecessor2 = <!--Can be repeated up to 16 times by changing the number--> | successor2 = <!--Can be repeated up to 16 times by changing the number--> | parliamentarygroup2= <!--Can be repeated up to 16 times by changing the number--> | constituency2 = <!--Can be repeated up to 16 times by changing the number--> | majority2 = <!--Can be repeated up to 16 times by changing the number--> | prior_term2 = <!--Can be repeated up to 16 times by changing the number--> </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} ===Ambassador=== {{For|examples of this code in use|Template:Infobox officeholder/example#Ambassador}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | order | ambassador_from | country | term_start | term_end | predecessor | successor | president }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox ambassador | honorific_prefix = | name = | honorific_suffix = | image = | alt = | order = <!--Can be repeated up to 16 times by adding a number--> | ambassador_from = <!--Can be repeated up to 16 times by adding a number--> | country = <!--Can be repeated up to 16 times by adding a number--> | term_start = <!--Can be repeated up to 16 times by adding a number--> | term_end = <!--Can be repeated up to 16 times by adding a number--> | predecessor = <!--Can be repeated up to 16 times by adding a number--> | successor = <!--Can be repeated up to 16 times by adding a number--> | president = <!--Can be repeated up to 16 times by adding a number--> </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} ===Assembly member=== {{For|examples of this code in use|Template:Infobox officeholder/example#Assembly Member}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | caption | constituency_AM | assembly | majority | term_start | term_end | predecessor | successor | prior_term }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox AM | honorific_prefix = | name = | honorific_suffix = | image = | alt = | caption = | constituency_AM = <!--Can be repeated up to eight times by adding a number--> | assembly = <!--Can be repeated up to 16 times by adding a number--> | majority = <!--Can be repeated up to 16 times by adding a number--> | term_start = <!--Can be repeated up to 16 times by adding a number--> | term_end = <!--Can be repeated up to 16 times by adding a number--> | predecessor = <!--Can be repeated up to 16 times by adding a number--> | successor = <!--Can be repeated up to 16 times by adding a number--> | prior_term = </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} ===Governor=== {{For|examples of this code in use|Template:Infobox officeholder/example#Governor}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | order | office | term_start | term_end | lieutenant | predecessor | successor }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox governor | honorific_prefix = | name = | honorific_suffix = | image = | alt = | order = <!--Can be repeated up to 16 times by adding a number--> | office = <!--Can be repeated up to 16 times by adding a number--> | term_start = <!--Can be repeated up to 16 times by adding a number--> | term_end = <!--Can be repeated up to 16 times by adding a number--> | lieutenant = <!--Can be repeated up to 16 times by adding a number--> | predecessor = <!--Can be repeated up to 16 times by adding a number--> | successor = <!--Can be repeated up to 16 times by adding a number--> </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} If Governor was appointed by a President, add: {{Generic template demo | president }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | president = <!--name of president--> </syntaxhighlight> {{clear}} If Governor appointed by other, add: {{Generic template demo | appointed }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | appointed = <!--name of appointer--> </syntaxhighlight> {{clear}} ===Judge=== {{For|examples of this code in use|Template:Infobox officeholder/example#Judge}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | caption | office | term_start | term_end | nominator | appointer | predecessor | successor }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox judge | honorific_prefix = | name = | honorific_suffix = | image = | alt = | caption = | office = <!--Can be repeated up to 16 times by changing the number--> | term_start = <!--Can be repeated up to 16 times by changing the number--> | term_end = <!--Can be repeated up to 16 times by changing the number--> | nominator = <!--Can be repeated up to 16 times by changing the number--> | appointer = <!--Can be repeated up to 16 times by changing the number--> | predecessor = <!--Can be repeated up to 16 times by changing the number--> | successor = <!--Can be repeated up to 16 times by changing the number--> </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} ===Member of Parliament=== {{For|examples of this code in use|Template:Infobox officeholder/example#Member of Parliament}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | caption | constituency_MP | parliament | majority | term_start | term_end | predecessor | successor | prior_term }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox MP | honorific_prefix = | name = | honorific_suffix = | image = | alt = | caption = | constituency_MP = <!--Can be repeated up to eight times by adding a number--> | parliament = <!--Can be repeated up to 16 times by adding a number--> | majority = <!--Can be repeated up to 16 times by adding a number--> | term_start = <!--Can be repeated up to 16 times by adding a number--> | term_end = <!--Can be repeated up to 16 times by adding a number--> | predecessor = <!--Can be repeated up to 16 times by adding a number--> | successor = <!--Can be repeated up to 16 times by adding a number--> | prior_term = </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} ===U.S. Representatives=== ====U.S. Congressperson==== {{For|examples of this code in use|Template:Infobox officeholder/example#US Congressperson}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | state | district | term_start | term_end | predecessor | successor | prior_term }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox Congressman | honorific_prefix = | name = | honorific_suffix = | image = | alt = | state = <!--Can be repeated up to 16 times by adding a number, start at 3--> | district = <!--Can be repeated up to 16 times by adding a number, start at 3--> | term_start = <!--Can be repeated up to 16 times by adding a number, start at 3--> | term_end = <!--Can be repeated up to 16 times by adding a number, start at 3--> | predecessor = <!--Can be repeated up to 16 times by adding a number, start at 3--> | successor = <!--Can be repeated up to 16 times by adding a number, start at 3--> | prior_term = </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} If Congressperson served as Speaker of the House add: {{Generic template demo | speaker | term_start2 | term_end2 | predecessor2 | successor2 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | speaker = <!--number of office holder--> | term_start2 = | term_end2 = | predecessor2 = | successor2 = </syntaxhighlight> {{clear}} If Congressman has been elected but not sworn in: {{Generic template demo | succeeding }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | succeeding = <!--the name of the incumbent congressman--> </syntaxhighlight> {{clear}} ====State Representative==== {{For|examples of this code in use|Template:Infobox officeholder/example#State Representative}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | state_house | district | term_start | term_end | predecessor | successor | prior_term }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox state representative | honorific_prefix = | name = | honorific_suffix = | image = | alt = | state_house = <!--Can be repeated up to 16 times by adding a number, start at 3--> | district = <!--Can be repeated up to 16 times by adding a number, start at 3--> | term_start = <!--Can be repeated up to 16 times by adding a number, start at 3--> | term_end = <!--Can be repeated up to 16 times by adding a number, start at 3--> | predecessor = <!--Can be repeated up to 16 times by adding a number, start at 3--> | successor = <!--Can be repeated up to 16 times by adding a number, start at 3--> | prior_term = </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} For Representative from states that have an Assembly, instead of state_house use: {{Generic template demo | state_assembly | district }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | state_assembly = <!--Can be repeated up to 16 times by adding a number, start at 3--> | district = <!--Can be repeated up to 16 times by adding a number, start at 3--> </syntaxhighlight> {{clear}} For Representative from states that have a House of Delegates, instead of state_house use: {{Generic template demo | state_delegate | district }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | state_delegate = <!--Can be repeated up to 16 times by adding a number, start at 3--> | district = <!--Can be repeated up to 16 times by adding a number, start at 3--> </syntaxhighlight> {{clear}} For Representative from states that have a Legislature, instead of state_house use: {{Generic template demo | state_legislature | district }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | state_legislature = <!--Can be repeated up to 16 times by adding a number, start at 3--> | district = <!--Can be repeated up to 16 times by adding a number, start at 3--> </syntaxhighlight> {{clear}} If Representative served as Speaker of the State House add: {{Generic template demo | speaker | state_house | term_start2 | term_end2 | predecessor2 | successor2 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | speaker = <!--number of office holder--> | state_house = | term_start2 = | term_end2 = | predecessor2 = | successor2 = </syntaxhighlight> {{clear}} ===U.S. Senators=== ====U.S. Senator==== {{For|examples of this code in use|Template:Infobox officeholder/example#US Senator}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | image_size | image_upright | alt | jr/sr | state | term_start | term_end | predecessor | successor }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox senator | honorific_prefix = | name = | honorific_suffix = | image = | image_size = | image_upright = | alt = | jr/sr = <!--Can be repeated up to eight times by appending 2, 3, etc--> Set to any value to display the "United States Senator from" header. If this parameter is missing or empty, "United States Senator from" will not be displayed. | state = <!--Can be repeated up to eight times by appending 2, 3, etc--> | term_start = <!--Can be repeated up to eight times by appending 2, 3, etc--> | term_end = <!--Can be repeated up to eight times by appending 2, 3, etc--> | predecessor = <!--Can be repeated up to eight times by appending 2, 3, etc--> | successor = <!--Can be repeated up to eight times by appending 2, 3, etc--> </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} {{Generic template demo | term_start | alongside }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | term_start = | alongside = <!--the name of fellow senator--> </syntaxhighlight> {{clear}} If Senator has just been elected and is a Senator-Elect: {{Generic template demo | succeeding }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | succeeding = <!--the name of the incumbent senator--> </syntaxhighlight> {{clear}} If Senator served as Senate Majority Leader add: {{Generic template demo | majorityleader3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | majorityleader3 = <!--number of office holder--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} If Senator served as Congressman add: {{Generic template demo | state3 | district3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | state3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | district3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} ====State Senator==== {{For|examples of this code in use|Template:Infobox officeholder/example#State Senator}} {{Generic template demo | honorific_prefix | name | honorific_suffix | image | alt | state_senate | district | term_start | term_end | predecessor | successor | prior_term }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox state senator | honorific_prefix = | name = | honorific_suffix = | image = | alt = | state_senate = <!--Can be repeated up to eight times by appending 2, 3, etc--> | district = <!--Can be repeated up to eight times by appending 2, 3, etc--> | term_start = <!--Can be repeated up to eight times by appending 2, 3, etc--> | term_end = <!--Can be repeated up to eight times by appending 2, 3, etc--> | predecessor = <!--Can be repeated up to eight times by appending 2, 3, etc--> | successor = <!--Can be repeated up to eight times by appending 2, 3, etc--> | prior_term = </syntaxhighlight> ''add [[#Personal data|personal data]]'' {{clear}} If State Senator served as Majority Leader of the State Senate add: {{Generic template demo | majority_leader3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | majority_leader3 = <!--number of office holder--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} If State Senator served as Minority Leader of the State Senate add: {{Generic template demo | minority_leader3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | minority_leader3 = <!--number of office holder--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} If State Senator served as Majority Floor Leader of the State Senate add: {{Generic template demo | majority_floor_leader3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | majority_floor_leader3 = <!--number of office holder--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} If State Senator served as Minority Floor Leader of the State Senate add: {{Generic template demo | minority_floor_leader3 | term_start3 | term_end3 | predecessor3 | successor3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | minority_floor_leader3 = <!--number of office holder--> | term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> | successor3 = <!--Can be repeated up to seven times by adding a number, start at 3--> </syntaxhighlight> {{clear}} ===Ukrainian legislative office=== {{For|examples of this code in use|Template:Infobox officeholder/example#Ukrainian legislative office}} {{Generic template demo | name | native_name | native_name_lang | image | caption | office1 | convocation1 | constituency1 | term_start1 | term_end1 | convocation2 | constituency2 | term_start2 | term_end2 | office3 | convocation3 | constituency3 | term_start3 | term_end3 }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox Ukrainian legislative office | name = | native_name = | native_name_lang = | image = | caption = | office1 = | convocation1 = | constituency1 = | term_start1 = | term_end1 = | convocation2 = | constituency2 = | term_start2 = | term_end2 = | office3 = <!--Can be repeated up to 16 times by adding a number--> | convocation3 = <!--Can be repeated up to 16 times by adding a number--> | constituency3 = <!--Can be repeated up to 16 times by adding a number--> | term_start3 = <!--Can be repeated up to 16 times by adding a number--> | term_end3 = <!--Can be repeated up to 16 times by adding a number--> </syntaxhighlight> ==Personal data== Place this underneath the template {{Generic template demo | pronunciation | birth_name <!-- only use if different from name --> | birth_date | birth_place | death_date | death_place | death_cause <!-- should only be included when the cause of death has significance for the subject's notability --> | resting_place | resting_place_coordinates | citizenship <!-- use only when necessary per [[WP:INFONAT]] --> | nationality <!-- use only when necessary per [[WP:INFONAT]] --> | party | otherparty | height | spouse <!--Fill only if notable (reference required) or there is a WP article on this person--> | partner <!--Fill only if notable (reference required) or there is a WP article on this person--> | relations <!--Fill only if notable (reference required) or there is a WP article on this person--> | children <!--Fill only if notable (reference required) or there is a WP article on this person--> | parents <!--Fill only if notable (reference required) or there is a WP article on this person--> | mother <!--Fill only if notable (reference required) or there is a WP article on this person--> | father <!--Fill only if notable (reference required) or there is a WP article on this person--> | relatives <!--Fill only if notable (reference required) or there is a WP article on this person--> | residence | education | alma_mater | occupation | profession | salary | known_for | cabinet | committees | portfolio | awards | blank1 | data1 | blank2 | data2 | blank3 | data3 | blank4 | data4 | blank5 | data5 | signature | signature_alt | website | nickname | allegiance | branch | serviceyears | rank | unit | commands | battles | mawards | military_blank1 | military_data1 | military_blank2 | military_data2 | military_blank3 | military_data3 | military_blank4 | military_data4 | military_blank5 | military_data5 | module | module2 | module3 | module4 | module5 | footnotes }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> | pronunciation = | birth_name = <!-- only use if different from name --> | birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} --> | birth_place = | death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} --> | death_place = | death_cause = <!-- should only be included when the cause of death has significance for the subject's notability --> | resting_place = | resting_place_coordinates = | citizenship = <!-- use only when necessary per [[WP:INFONAT]] --> | nationality = <!-- use only when necessary per [[WP:INFONAT]] --> | party = | otherparty = <!--For additional political affiliations--> | height = <!-- "X cm", "X m" or "X ft Y in" plus optional reference (conversions are automatic) --> | spouse = | partner = <!--For those with a domestic partner and not married--> | relations = | children = | parents = <!-- overrides mother and father parameters --> | mother = <!-- may be used (optionally with father parameter) in place of parents parameter (displays "Parent(s)" as label) --> | father = <!-- may be used (optionally with mother parameter) in place of parents parameter (displays "Parent(s)" as label) --> | relatives = | residence = | education = | alma_mater = | occupation = | profession = | known_for = | salary = | cabinet = | committees = | portfolio = | awards = <!-- For civilian awards - appears as "Awards" if |mawards= is not set --> | blank1 = | data1 = | blank2 = | data2 = | blank3 = | data3 = | blank4 = | data4 = | blank5 = | data5 = | signature = | signature_alt = | signature_size = | website = | nickname = <!--Military service--> | allegiance = | branch = | serviceyears = | rank = | unit = | commands = | battles = | mawards = <!-- for military awards - appears as "Awards" if |awards= is not set --> | military_blank1 = | military_data1 = | military_blank2 = | military_data2 = | military_blank3 = | military_data3 = | military_blank4 = | military_data4 = | military_blank5 = | military_data5 = <!--Embedded templates / Footnotes--> | module = | module2 = | module3 = | module4 = | module5 = | footnotes = }} </syntaxhighlight> {{clear}} <code>nationality</code> is [[Wikipedia:Manual of Style/Infoboxes#Nationality and citizenship|not displayed]] if the corresponding country is mentioned in <code>birth_place</code>, for example <code>|birth_place = Tokyo, Japan |nationality = Japanese</code>. == Embedding other templates == The ''module'' parameters (module, module2, ... module5) may used to embed other templates into this infobox (see [[Wikipedia:Infobox modules]]). <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox officeholder | name = | <!-- etc. --> | module = {{Infobox football biography | embed = yes | <!-- etc. --> }} }} </syntaxhighlight> == Embedding within a different infobox == Many officeholders are known for more than just their appointments (e.g., [[Clint Eastwood]]), and hence it may be desirable to merge this infobox with another one, like {{tl|Infobox person}}. By adding {{para|embed|yes}} to the first line of the infobox code, one can embed this infobox into another, creating the illusion of one continuous infobox. Though the process is a little complicated, it is possible to insert this infobox into most if not all other infoboxes. For {{tl|Infobox person}}, this infobox is passed as a "module" using the {{para|module}} syntax. <syntaxhighlight lang="wikitext" style="overflow: auto"> {{Infobox person | name = John Infobox | image = Example.jpg | caption = John Infobox in 2005 | birth_name = John Officeholder Person Infobox | birth_date = {{Birth date|1950|5|25}} | birth_place = Template City | death_date = {{Death date and age|2010|10|22|1950|5|25}} | occupation = Actor | years_active = 1970–1990 | module = {{Infobox officeholder | embed = yes | office = Mayor of Wikipedia | term_start = 1994 | term_end = 1998 }} | website = {{URL|example.com}} }} </syntaxhighlight> ==Microformat== {{UF-hcard-person}} ==TemplateData== {{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <templatedata> { "description": "An infobox for office holders", "format": "{{_\n| ___________________ = _\n}}\n", "params": { "name": { "label": "Name", "description": "Commonly-known name of person (defaults to article name, without disambiguation)", "type": "line", "default": "PAGENAME" }, "office": { "label": "office", "description": "Office held", "type": "string" }, "order": { "label": "order", "description": "Used in conjunction with 'office' to state that the officeholder is the nth holder of the office", "type": "string" }, "bodyclass": { "label": "bodyclass", "type": "string" }, "mainwidth": { "label": "mainwidth", "default": "22em", "type": "string" }, "native_name": { "label": "Native name", "type": "string", "description": "Name in the person's native language", "example": "Melquíades Rafael Martínez Ruiz" }, "native_name_lang": { "label": "Native name language", "type": "string", "description": "Language in which the person's native name is", "example": "ca" }, "image": { "label": "Image", "description": "Filename for the image (e.g. 'Example.jpg').", "type": "wiki-file-name", "required": false }, "width": { "label": "width", "type": "string", "aliases": [ "imagesize", " image_size" ] }, "alt": { "label": "Alternative text", "description": "Alternative text for the image.", "type": "line" }, "image name": { "label": "image name", "type": "string" }, "smallimage": { "label": "smallimage", "type": "string" }, "caption": { "label": "Image caption", "description": "Caption for the image.", "type": "string", "required": false }, "alongside": { "label": "alongside", "description": "For two or more people serving in the same position from the same district. (e.g. United States senators.)", "type": "string" }, "ambassador_from": { "label": "ambassador from", "type": "string" }, "appointer": { "label": "appointer", "type": "string" }, "assembly": { "label": "assembly", "type": "string" }, "chancellor": { "label": "chancellor", "type": "string" }, "co-leader": { "label": "co-leader", "type": "string" }, "constituency_AM": { "label": "constituency AM", "type": "string" }, "constituency": { "label": "constituency", "type": "string" }, "country": { "label": "country", "type": "string", "example": "Israel" }, "deputy": { "label": "deputy", "type": "string" }, "district": { "label": "district", "type": "string" }, "firstminister": { "label": "first minister", "type": "string" }, "governor-general": { "label": "governor-general", "type": "string" }, "leader": { "label": "leader", "type": "string" }, "legislature": { "label": "legislature", "type": "wiki-page-name", "example": "[[United States House of Representatives]]" }, "lieutenant_governor": { "label": "lieutenant governor", "type": "string" }, "lieutenant": { "label": "lieutenant", "type": "string" }, "majorityleader": { "label": "majority leader", "type": "string" }, "minister": { "label": "minister", "type": "string" }, "minister_from": { "label": "minister from", "type": "string" }, "minority_floor_leader": { "label": "minority floor leader", "type": "string" }, "majority_floor_leader": { "label": "majority floor leader", "type": "string" }, "minorityleader": { "label": "minority leader", "type": "string", "example": "[[Chuck Shumer]]" }, "monarch": { "label": "monarch", "type": "string" }, "nominator": { "label": "nominator", "type": "string" }, "parliament": { "label": "parliament", "type": "string" }, "parliamentarygroup": { "label": "parliamentary group", "type": "string" }, "predecessor": { "label": "predecessor", "type": "string" }, "preceding": { "label": "preceding", "type": "string" }, "preceded": { "label": "preceded", "type": "string" }, "premier": { "label": "premier", "type": "string" }, "president": { "label": "president", "type": "string" }, "primeminister": { "label": "primeminister", "type": "string" }, "riding": { "label": "riding", "type": "string" }, "status": { "label": "status", "description": "If this is specified, overrides Incumbent.", "type": "string" }, "succeeded": { "label": "succeeded", "type": "string" }, "succeeding": { "label": "succeeding", "description": "For President-elect or equivalent.", "type": "string" }, "successor": { "label": "successor", "type": "string" }, "taoiseach": { "label": "taoiseach", "type": "string" }, "term_start": { "label": "term start", "type": "string", "description": "Date of the beginning of the person's term" }, "term_end": { "label": "term end", "type": "string", "description": "Date for the end of the person's term" }, "title": { "label": "title", "type": "string" }, "vicechair": { "label": "vice chair", "type": "string" }, "vicegovernor": { "label": "vice governor", "type": "string" }, "vicepresident": { "label": "vice president", "type": "string" }, "vicepremier": { "label": "vice premier", "type": "string" }, "viceprimeminister": { "label": "vice prime minister", "type": "string" }, "speaker": { "label": "speaker", "type": "string" }, "footnotes": { "label": "footnotes", "type": "string" }, "date": { "label": "date", "type": "string" }, "year": { "label": "year", "type": "string" }, "source": { "label": "source", "type": "string" }, "signature": { "label": "signature", "type": "wiki-file-name" }, "signature_alt": { "label": "signature alt text", "type": "string" }, "appointe": { "label": "appointee", "type": "string" }, "alongside2": { "label": "alongside 2", "type": "string" }, "peerage2": { "label": "peerage 2", "type": "string" }, "ambassador_from2": { "label": "ambassador from 2", "type": "string" }, "appointer2": { "label": "appointer 2", "type": "string" }, "assembly2": { "label": "assembly 2", "type": "string" }, "chancellor2": { "label": "chancellor 2", "type": "string" }, "co-leader2": { "label": "co-leader 2", "type": "string" }, "constituency_AM2": { "label": "constituency AM 2", "type": "string" }, "country2": { "label": "country 2", "type": "string", "example": "Malaya" }, "deputy2": { "label": "deputy 2", "type": "string" }, "district2": { "label": "district 2", "type": "string" }, "firstminister2": { "label": "first minister 2", "type": "string" }, "governor": { "label": "governor", "type": "string" }, "governor-general2": { "label": "governor-general 2", "type": "string" }, "governor2": { "label": "governor 2", "type": "string" }, "leader2": { "label": "leader 2", "type": "string", "example": "Donald Trump" }, "legislature2": { "label": "legislature 2", "type": "wiki-page-name", "example": "[[United States Senate]]" }, "lieutenant_governor2": { "label": "lieutenant governor 2", "type": "string" }, "lieutenant2": { "label": "lieutenant2", "type": "string" }, "majority": { "label": "majority", "type": "string" }, "majorityleader2": { "label": "majority leader 2", "type": "string", "example": "Mitch McConnell" }, "minister_from2": { "label": "minister from 2", "type": "string" }, "minority_floor_leader2": { "label": "minority floor leader 2", "type": "string" }, "majority_floor_leader2": { "label": "majority floor leader 2", "type": "string" }, "majority2": { "label": "majority 2", "type": "string" }, "minister2": { "label": "minister 2", "type": "string" }, "minority": { "label": "minority", "type": "string" }, "minorityleader2": { "label": "minority leader 2", "type": "string", "example": "[[Chuck Shumer]]" }, "monarch2": { "label": "monarch 2", "type": "string" }, "nominator2": { "label": "nominator 2", "type": "string" }, "office2": { "label": "office 2", "type": "string" }, "order2": { "label": "order 2", "type": "string" }, "parliament2": { "label": "parliament2", "type": "string" }, "parliamentarygroup2": { "label": "parliamentary group 2", "type": "string" }, "predecessor2": { "label": "predecessor 2", "type": "string" }, "preceding2": { "label": "preceding 2", "type": "string" }, "preceded2": { "label": "preceded 2", "type": "string" }, "premier2": { "label": "premier 2", "type": "string" }, "president2": { "label": "president 2", "type": "string" }, "primeminister2": { "label": "prime minister 2", "type": "string" }, "riding2": { "label": "riding 2", "type": "string" }, "speaker_office": { "label": "speaker office", "type": "string" }, "state_assembly": { "label": "state assembly", "type": "string" }, "state_delegate": { "label": "state delegate", "type": "string" }, "state_house": { "label": "state house", "type": "string" }, "state_legislature": { "label": "state legislature", "type": "string" }, "state_senate": { "label": "state senate", "type": "string" }, "state": { "label": "state", "type": "string", "description": "The state this officeholder represents or represented", "example": "[[Alabama]]" }, "term": { "label": "term", "type": "string" }, "party": { "label": "party", "type": "string" }, "prior_term": { "label": "prior_term", "description": "Additional fields numbered up to 14", "type": "string" }, "1blankname": { "label": "1blankname", "description": "Additional fields numbered up to 14", "type": "string" }, "1namedata": { "label": "1namedata", "description": "Additional fields numbered up to 14", "type": "string" }, "2blankname": { "label": "2blankname", "description": "Additional fields numbered up to 14", "type": "string" }, "2namedata": { "label": "2namedata", "description": "Additional fields numbered up to 14", "type": "string" }, "3blankname": { "label": "3blankname", "description": "Additional fields numbered up to 14", "type": "string" }, "3namedata": { "label": "3namedata", "description": "Additional fields numbered up to 14", "type": "string" }, "4blankname": { "label": "4blankname", "description": "Additional fields numbered up to 14", "type": "string" }, "4namedata": { "label": "4namedata", "description": "Additional fields numbered up to 14", "type": "string" }, "5blankname": { "label": "5blankname", "description": "Additional fields numbered up to 14", "type": "string" }, "5namedata": { "label": "5namedata", "description": "Additional fields numbered up to 14", "type": "string" }, "1blankname1": { "label": "1blankname1", "description": "Additional fields numbered up to 14", "type": "string" }, "1namedata1": { "label": "1namedata1", "description": "Additional fields numbered up to 14", "type": "string" }, "2blankname1": { "label": "2blankname1", "description": "Additional fields numbered up to 14", "type": "string" }, "2namedata1": { "label": "2namedata1", "description": "Additional fields numbered up to 14", "type": "string" }, "3blankname1": { "label": "3blankname1", "description": "Additional fields numbered up to 14", "type": "string" }, "3namedata1": { "label": "3namedata1", "description": "Additional fields numbered up to 14", "type": "string" }, "4blankname1": { "label": "4blankname1", "description": "Additional fields numbered up to 14", "type": "string" }, "4namedata1": { "label": "4namedata1", "description": "Additional fields numbered up to 14", "type": "string" }, "5blankname1": { "label": "5blankname1", "description": "Additional fields numbered up to 14", "type": "string" }, "5namedata1": { "label": "5namedata1", "description": "Additional fields numbered up to 14", "type": "string" }, "alongside1": { "label": "alongside1", "description": "Additional fields numbered up to 14", "type": "string" }, "ambassador_from1": { "label": "ambassador_from1", "description": "Additional fields numbered up to 14", "type": "string" }, "appointer1": { "label": "appointer1", "description": "Additional fields numbered up to 14", "type": "string" }, "assembly1": { "label": "assembly1", "description": "Additional fields numbered up to 14", "type": "string" }, "chair1": { "label": "chair1", "description": "Additional fields numbered up to 14", "type": "string" }, "chancellor1": { "label": "chancellor1", "description": "Additional fields numbered up to 14", "type": "string" }, "co-leader1": { "label": "co-leader1", "description": "Additional fields numbered up to 14", "type": "string" }, "constituency_AM1": { "label": "constituency_AM1", "description": "Additional fields numbered up to 14", "type": "string" }, "constituency1": { "label": "constituency1", "description": "Additional fields numbered up to 14", "type": "string" }, "country1": { "label": "country1", "description": "Additional fields numbered up to 14", "type": "string" }, "deputy1": { "label": "deputy1", "description": "Additional fields numbered up to 14", "type": "string" }, "district1": { "label": "district1", "description": "Additional fields numbered up to 14", "type": "string" }, "firstminister1": { "label": "firstminister1", "description": "Additional fields numbered up to 14", "type": "string" }, "governor-general1": { "label": "governor-general1", "description": "Additional fields numbered up to 14", "type": "string" }, "governor1": { "label": "governor1", "description": "Additional fields numbered up to 14", "type": "string" }, "leader1": { "label": "leader1", "description": "Additional fields numbered up to 14", "type": "string" }, "legislature1": { "label": "legislature1", "description": "Additional fields numbered up to 14", "type": "string" }, "lieutenant_governor1": { "label": "lieutenant governor 1", "description": "Additional fields numbered up to 14", "type": "string" }, "lieutenant1": { "label": "lieutenant 1", "description": "Additional fields numbered up to 14", "type": "string" }, "minority_floor_leader1": { "label": "minority floor leader 1", "description": "Additional fields numbered up to 14", "type": "string" }, "minister_from1": { "label": "minister from 1", "description": "Additional fields numbered up to 14", "type": "string" }, "majority_floor_leader1": { "label": "majority_floor_leader1", "description": "Additional fields numbered up to 14", "type": "string" }, "majorityleader1": { "label": "majorityleader1", "description": "Additional fields numbered up to 14", "type": "string" }, "majority1": { "label": "majority1", "description": "Additional fields numbered up to 14", "type": "string" }, "minister1": { "label": "minister1", "description": "Additional fields numbered up to 14", "type": "string" }, "minorityleader1": { "label": "minorityleader1", "description": "Additional fields numbered up to 14", "type": "string" }, "monarch1": { "label": "monarch1", "description": "Additional fields numbered up to 14", "type": "string" }, "nominator1": { "label": "nominator1", "description": "Additional fields numbered up to 14", "type": "string" }, "office1": { "label": "office1", "description": "Additional fields numbered up to 14", "type": "string" }, "order1": { "label": "order1", "description": "Additional fields numbered up to 14", "type": "string" }, "parliament1": { "label": "parliament1", "description": "Additional fields numbered up to 14", "type": "string" }, "parliamentarygroup1": { "label": "parliamentary group 1", "description": "Additional fields numbered up to 14", "type": "string" }, "predecessor1": { "label": "predecessor1", "description": "Additional fields numbered up to 14", "type": "string" }, "preceding1": { "label": "preceding1", "description": "Additional fields numbered up to 14", "type": "string" }, "preceded1": { "label": "preceded1", "description": "Additional fields numbered up to 14", "type": "string" }, "premier1": { "label": "premier1", "description": "Additional fields numbered up to 14", "type": "string" }, "president1": { "label": "president1", "description": "Additional fields numbered up to 14", "type": "string" }, "primeminister1": { "label": "primeminister1", "description": "Additional fields numbered up to 14", "type": "string" }, "riding1": { "label": "riding 1", "description": "Additional fields numbered up to 14", "type": "string" }, "state_assembly1": { "label": "state_assembly1", "description": "Additional fields numbered up to 14", "type": "string" }, "state_delegate1": { "label": "state_delegate1", "description": "Additional fields numbered up to 14", "type": "string" }, "state_house1": { "label": "state_house1", "description": "Additional fields numbered up to 14", "type": "string" }, "state_legislature1": { "label": "state_legislature1", "description": "Additional fields numbered up to 14", "type": "string" }, "state_senate1": { "label": "state_senate1", "description": "Additional fields numbered up to 14", "type": "string" }, "state1": { "label": "state1", "description": "Additional fields numbered up to 14", "type": "string" }, "succeeded1": { "label": "succeeded1", "description": "Additional fields numbered up to 14", "type": "string" }, "succeeding1": { "label": "succeeding1", "description": "Additional fields numbered up to 14", "type": "string" }, "successor1": { "label": "successor1", "description": "Additional fields numbered up to 14", "type": "string" }, "taoiseach1": { "label": "taoiseach1", "description": "Additional fields numbered up to 14", "type": "string" }, "termend1": { "label": "termend1", "description": "Additional fields numbered up to 14", "type": "string" }, "termstart1": { "label": "termstart1", "description": "Additional fields numbered up to 14", "type": "string" }, "term1": { "label": "term1", "description": "Additional fields numbered up to 14", "type": "string" }, "title1": { "label": "title1", "description": "Additional fields numbered up to 14", "type": "string" }, "vicechair1": { "label": "vicechair1", "description": "Additional fields numbered up to 14", "type": "string" }, "vicegovernor1": { "label": "vicegovernor1", "description": "Additional fields numbered up to 14", "type": "string" }, "vicepresident1": { "label": "vicepresident1", "description": "Additional fields numbered up to 14", "type": "string" }, "vicepremier1": { "label": "vicepremier1", "description": "Additional fields numbered up to 14", "type": "string" }, "viceprimeminister1": { "label": "viceprimeminister1", "description": "Additional fields numbered up to 14", "type": "string" }, "prior_term1": { "label": "prior term 1", "description": "Additional fields numbered up to 14", "type": "string" }, "termend2": { "label": "term end 2", "type": "string" }, "termstart2": { "label": "term start 2", "type": "string" }, "term2": { "label": "term 2", "type": "string" }, "title2": { "label": "title 2", "type": "string" }, "vicechair2": { "label": "vice chair 2", "type": "string" }, "vicegovernor2": { "label": "vice governor 2", "type": "string" }, "vicepresident2": { "label": "vice president 2", "type": "string" }, "vicepremier2": { "label": "vice premier 2", "type": "string" }, "viceprimeminister2": { "label": "vice prime minister 2", "type": "string" }, "succeeded2": { "label": "succeeded 2", "type": "string" }, "succeeding2": { "label": "succeeding 2", "type": "string" }, "successor2": { "label": "successor 2", "type": "string" }, "taoiseach2": { "label": "taoiseach 2", "type": "string" }, "state_assembly2": { "label": "state assembly2", "description": "Additional fields numbered up to 14", "type": "string" }, "state_delegate2": { "label": "state delegate2", "description": "Additional fields numbered up to 14", "type": "string" }, "state_house2": { "label": "state house 2", "description": "Additional fields numbered up to 14", "type": "string" }, "state_legislature2": { "label": "state legislature 2", "description": "Additional fields numbered up to 14", "type": "string" }, "state_senate2": { "label": "state senate2", "description": "Additional fields numbered up to 14", "type": "string" }, "state 2": { "label": "state 2", "description": "Additional fields numbered up to 14", "type": "string", "example": "[[Georgia (U.S. State)|Georgia]]" }, "prior_term2": { "label": "prior term 2", "description": "Additional fields numbered up to 14", "type": "string" }, "birth_name": { "label": "Birth name", "description": "Name at birth, if different from 'name'.", "type": "string", "required": false, "aliases": [ "birthname" ] }, "birth_date": { "label": "Birth date", "description": "Date of birth. Use {{birth date and age}} (for living people) or {{birth date}} for the deceased.", "type": "line", "required": false }, "birth_place": { "label": "Birth place", "description": "Place of birth.", "type": "line" }, "death_date": { "label": "Death date", "description": "Date of death. Use {{death date and age}}. Use {{death date}} if birth date unknown or incomplete.", "type": "content" }, "death_place": { "label": "Death place", "description": "The person's place of death, if deceased", "type": "line", "required": false, "example": "[[Crown Heights]]" }, "resting_place": { "label": "Resting place", "description": "Person's grave, etc.", "type": "line", "required": false }, "resting_place_coordinates": { "label": "Resting place", "description": "Coordinates of grave, etc. Use {{Coord|LAT|LONG|type:landmark|display=inline}}", "type": "line" }, "citizenship": { "label": "citizenship", "type": "string", "description": "The person's country of citizenship", "example": "[[Germany]]" }, "nationality": { "label": "Nationality", "description": "The person's nationality, use only when necessary per [[WP:INFONAT]]", "type": "line", "example": "Canadian" }, "otherparty": { "label": "other political party", "type": "string" }, "spouse": { "label": "Spouse(s)", "description": "Spouse(s), if notable", "type": "line", "required": false, "aliases": [ "spouses" ] }, "partner": { "label": "Partner(s)", "description": "Domestic partner(s), if notable", "type": "line" }, "relations": { "label": "relations", "type": "string" }, "children": { "label": "children", "type": "string" }, "parents": { "label": "parents", "type": "string" }, "residence": { "label": "Residence", "description": "Where this person lives", "type": "line" }, "alma_mater": { "label": "Alma mater", "description": "The linked name of attended higher education institution(s).", "type": "line" }, "occupation": { "label": "occupation", "description": " Please observe sentence case and capitalise only the first letter of the first item: (i.e. Politician, entrepreneur, businessman)", "type": "string" }, "profession": { "label": "profession", "description": " Please observe sentence case and capitalise only the first letter of the first item: (i.e. Attorney, accountant)", "type": "string" }, "cabinet": { "label": "cabinet", "type": "string" }, "committees": { "label": "committees", "type": "string" }, "portfolio": { "label": "portfolio", "type": "string" }, "blank1": { "label": "blank1", "description": "Also blank2 ... blank5", "type": "string" }, "data1": { "label": "data1", "description": "Also data2 ... data5", "type": "string" }, "website": { "label": "Official website", "description": "Office holder's official website, using {{URL}}.", "type": "line" }, "nickname": { "label": "nickname", "type": "string" }, "allegiance": { "label": "allegiance", "type": "string" }, "branch": { "label": "branch", "type": "string" }, "serviceyears": { "label": "serviceyears", "type": "string" }, "rank": { "label": "rank", "type": "string" }, "unit": { "label": "unit", "type": "string" }, "commands": { "label": "commands", "type": "string" }, "battles": { "label": "battles fought", "type": "string" }, "military_blank1": { "label": "military blank 1", "description": "Also military_blank2 ... military_blank5", "type": "string" }, "military_data1": { "label": "military data 1", "description": "Also military_data2 ... military_data5", "type": "string" }, "1blankname2": { "label": "1blankname2", "type": "string" }, "1namedata2": { "label": "1namedata2", "type": "string" }, "2blankname2": { "label": "2blankname2", "type": "string" }, "2namedata2": { "label": "2namedata2", "type": "string" }, "3blankname2": { "label": "3blankname2", "type": "string" }, "3namedata2": { "label": "3namedata2", "type": "string" }, "4blankname2": { "label": "4blankname2", "type": "string" }, "4namedata2": { "label": "4namedata2", "type": "string" }, "5blankname2": { "label": "5blankname2", "type": "string" }, "5namedata2": { "label": "5namedata2", "type": "string" }, "pronunciation": { "label": "Name pronunciation", "type": "string" }, "honorific_prefix": { "label": "Honorific prefix", "description": "Title such as 'The Honourable'", "type": "wiki-page-name", "required": false, "aliases": [ "honorific prefix" ] }, "honorific_suffix": { "label": "Honorific suffix", "description": "Initials such as 'OBE', 'FRSA'", "type": "wiki-page-name", "required": false, "aliases": [ "honorific suffix" ] }, "image_size": { "label": "Image size", "description": "Size of the image (e.g. '220px').", "type": "line", "default": "varies", "required": false, "aliases": [ "imagesize" ] }, "education": { "label": "Education", "description": "Where or with whom the officeholder trained.", "type": "line", "required": false }, "awards": { "label": "Awards", "description": "Awards won by the officeholder. Consider using {{awd}}.", "type": "line", "required": false }, "image_name_alt": {}, "smallname_alt": {}, "net_worth": { "label": "DEPRECATED: Net worth", "description": "Current estimated net worth, if relevant. Please be sure to support with a citation from a reliable source, in the article body.", "deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered." } } } </templatedata> {{Collapse bottom}} == Tracking categories == ; Hidden tracking/maintenance categories (in main and supporting templates): * {{clc|Biography template using pronunciation}} * {{clc|Pages using infobox officeholder with ambassador from or minister from}} * {{clc|Pages using infobox officeholder with both term and term_start or term_end}} * {{clc|Pages using infobox officeholder with office0}} * {{clc|Pages using infobox officeholder with speaker}} * {{clc|Pages using infobox officeholder with succeeding and term or termend}} * {{clc|Pages using infobox officeholder with unknown parameters}} == See also == * [[Template:S-start]] ([[Wikipedia:WikiProject Succession Box Standardization|succession box standardization]]) ; Supporting templates * [[Template:Infobox officeholder/office]] * <!-- [[Template:Infobox officeholder/Personal data]] --> <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Infobox templates|Officeholder]] [[Category:Politics and government infobox templates|Officeholder]] [[Category:People and person infobox templates|Officeholder]] [[Category:Infobox templates with module parameter|Officeholder]] [[Category:Biographical templates usable as a module|Officeholder]] [[Category:Templates that add a tracking category]] }}</includeonly> 9f0aa9b1712a817a2411b7ffcf199709eb3a1b22 Template:Person infobox header 10 204 463 462 2023-09-30T19:37:25Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Person_infobox_header]] wikitext text/x-wiki {{ombox|type=content|text=The design and content of biographical infoboxes must follow Wikipedia's [[Wikipedia:Verifiability|verifiability policy]], as well as [[Wikipedia:Manual of Style/Infoboxes|infobox]] and [[Wikipedia:Manual of Style/Biography|biographical style guideline]]. All content displayed in this template must adhere to the '''[[Wikipedia:Biographies of living persons|biographies of living persons]]''' policy if applicable. [[Wikipedia:Citing sources|Unsourced or poorly sourced]] contentious material '''must be removed immediately''' from the article and its infobox, especially if potentially [[Wikipedia:Libel|libellous]].}} <noinclude> {{documentation |content= {{no documentation}} {{Uncat}} }} </noinclude> 9f982493e161c304a75d9b6b06d5b730ee1bb282 Template:Navbox 10 205 465 464 2023-09-30T19:38:34Z Führerredux 2 1 revision imported from [[:meta:Template:Navbox]] wikitext text/x-wiki <includeonly>{{#invoke:Navbox|navbox}}</includeonly><noinclude> {{Documentation}} </noinclude> fe9b964401f895918ee4fe078678f1722a3c41ec Template:Ombox 10 111 469 270 2023-09-30T19:40:45Z Führerredux 2 1 revision imported from [[:meta:Template:Ombox]] wikitext text/x-wiki {{#invoke:Message box|ombox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 0e54065432d540737b9e56c4e3a8e7f74d4534ea Template:Infobox/doc 10 207 471 470 2023-09-30T19:41:13Z Führerredux 2 1 revision imported from [[:meta:Template:Infobox/doc]] wikitext text/x-wiki {{Documentation subpage}} {{Lua|Module:Infobox}} {{Uses TemplateStyles|[[Module:Infobox/styles.css]]}} ==Usage== c98286012fccf1f2eab447f27d4e51c9fb5aac2c Template:Strong 10 208 473 472 2023-09-30T19:43:13Z Führerredux 2 1 revision imported from [[:meta:Template:Strong]] wikitext text/x-wiki <strong {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</strong><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> 2b665c5a888ca8f341022ccbca66617352915475 Template:Ping 10 209 475 474 2023-09-30T19:43:14Z Führerredux 2 1 revision imported from [[:meta:Template:Ping]] wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Reply to|replyto|<noinclude>example=Example</noinclude>|max=50}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 2a5b1c2046f67d2edc3c7b2dc5258b61310c2f02 Module:Reply to 828 210 477 476 2023-09-30T19:43:14Z Führerredux 2 1 revision imported from [[:meta:Module:Reply_to]] Scribunto text/plain local p = {} local function makeError(msg) msg ='Error in [[Template:Reply to]]: ' .. msg return mw.text.tag('strong', {['class']='error'}, msg) end function p.replyto(frame) local origArgs = frame:getParent().args local args = {} local maxArg = 1 local usernames = 0 for k, v in pairs(origArgs) do if type(k) == 'number' then if mw.ustring.match(v,'%S') then if k > maxArg then maxArg = k end usernames = usernames + 1 local title = mw.title.new(v) if not title then return makeError('Input contains forbidden characters.') end args[k] = title.rootText end elseif v == '' and k:sub(0,5) == 'label' then args[k] = '&#x200B;' else args[k] = v end end if usernames > (tonumber(frame.args.max) or 50) then return makeError(string.format( 'More than %s names specified.', tostring(frame.args.max or 50) )) else if usernames < 1 then if frame.args.example then args[1] = frame.args.example else return makeError('Username not given.') end end args['label1'] = args['label1'] or args['label'] local isfirst = true local outStr = args['prefix'] or '@' for i = 1, maxArg do if args[i] then if isfirst then isfirst = false else if ( (usernames > 2) or ((usernames == 2) and (args['c'] == '')) ) then outStr = outStr..', ' end if i == maxArg then outStr = outStr..' '..(args['c'] or 'and') .. ' ' end end outStr = string.format( '%s[[User:%s|%s]]', outStr, args[i], args['label'..tostring(i)] or args[i] ) end end outStr = outStr..(args['p'] or ':') return mw.text.tag('span', {['class']='template-ping'}, outStr) end end return p 14f0cd73a8a9f122c0e0e15382219083c602c62a Template:No ping 10 211 479 478 2023-09-30T19:43:16Z Führerredux 2 1 revision imported from [[:meta:Template:No_ping]] wikitext text/x-wiki {{#invoke:No ping|main}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> f562b06355eb8e61bec522fedc6a997feb68d7c8 Module:No ping 828 212 481 480 2023-09-30T19:43:17Z Führerredux 2 1 revision imported from [[:meta:Module:No_ping]] Scribunto text/plain -- This module implements {{noping}}. local p = {} function p.main(frame) local args = frame:getParent().args return p._main(args) end function p._main(args) local ret = {} local fullUrl = mw.uri.fullUrl local format = string.format for i, username in ipairs(args) do local url = fullUrl(mw.site.namespaces.User.name .. ':' .. username) url = tostring(url) local label = args['label' .. tostring(i)] url = format('[%s %s]', url, label or username) ret[#ret + 1] = url end ret = mw.text.listToText(ret) ret = '<span class="plainlinks">' .. ret .. '</span>' return ret end return p 46a1de5db467e72a12dcd8726fa83fe2cc683780 Template:Color 10 213 483 482 2023-09-30T19:43:17Z Führerredux 2 1 revision imported from [[:meta:Template:Color]] wikitext text/x-wiki <span style="color:{{{1|}}}">{{{2|{{{1|}}}}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> fc48e80484b6d4a0cd1821c712d8cbbdfd9a233e Template:Green 10 214 485 484 2023-09-30T19:43:17Z Führerredux 2 1 revision imported from [[:meta:Template:Green]] wikitext text/x-wiki <span style="color: #00BA00;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> b52b710c69a84c2f5afa810e03f1c25ea5b33f78 Template:Template list 10 215 487 486 2023-09-30T19:43:21Z Führerredux 2 1 revision imported from [[:meta:Template:Template_list]] wikitext text/x-wiki __NOTOC__ == Utility templates == : ''Category: [[:Category:Utility templates|Utility templates]]'' <section begin=user-utility-templates/> * {{tl|URL}} <section end=user-utility-templates/> == Archive templates == : ''Category: [[:Category:Archive templates|Archive templates]]'' <section begin=user-archive-templates/> * {{tl|Autoarchive/config}} * {{tl|Archives}} * {{tl|Archive list}} * {{tl|Archive header}} * {{tl|Archive box collapsible}} * {{tl|Archive}} * {{tl|Archive2}} * {{tl|Yearly archive list}} <section end=user-archive-templates/> == Maintenance templates == : ''Category: [[:Category:Maintenance templates|Maintenance templates]]'' <section begin=user-maintenance-templates/> * {{tl|Delete}} * {{tl|Db-spam}} * {{tl|Db-vandalism}} * {{tl|Db-test}} * {{tl|Db-copyvio}} * {{tl|Db-attack}} <section end=user-maintenance-templates/> == User notice templates == : ''Category: [[:Category:User notice templates|User notice templates]]'' <section begin=user-notice-templates/> * {{tl|You've got mail}} * {{tl|Welcome}} * {{tl|Blocked}} * {{tl|Blocked talk-revoked-notice}} * {{tl|Unblocked}} * {{tl|Translationadmin granted}} * {{tl|Patroller granted}} <section end=user-notice-templates/> == User warning templates == : ''Category: [[:Category:User warning templates|User warning templates]]'' <section begin=user-warning-templates/> ;Testing * {{tl|Uw-test1}} * {{tl|Uw-test2}} * {{tl|Uw-test3}} * {{tl|Uw-test4}} ;Promotion * {{tl|Uw-advert1}} * {{tl|Uw-advert2}} * {{tl|Uw-advert3}} * {{tl|Uw-advert4}} ;Creation of off-topic pages * {{tl|Uw-create1}} * {{tl|Uw-create2}} * {{tl|Uw-create3}} * {{tl|Uw-create4}} * {{tl|Uw-create4im}} ;Vandalism * {{tl|Uw-vandalism1}} * {{tl|Uw-vandalism2}} * {{tl|Uw-vandalism3}} * {{tl|Uw-vandalism4}} * {{tl|Uw-vandalism4im}} * {{tl|Vandalism1}} * {{tl|Vandalism2}} * {{tl|Vandalism3}} * {{tl|Uw-npa}} * {{tl|Uw-harass}} * {{tl|Uw-sock}} * <section end=user-warning-templates/> == Character-substitution templates == : ''Category: [[:Category:Character-substitution templates|Character-substitution templates]]'' <section begin=character-substitution-templates/> * {{tl|!((}} - {{!((}} * {{tl|))!}} - {{))!}} * {{tl|!-}} - <nowiki>|-</nowiki> * {{tl|1==}} - <nowiki>=</nowiki> * {{tl|@}} - {{@}} * {{tl|void}} * {{tl|\}} - {{\}} * {{tl|Col-3}} * {{tl|Col-begin}} * {{tl|Col-break}} * {{tl|Col-end}} * {{tl|Center}} * {{tl|Sp}} <section end=character-substitution-templates/> == Utility templates == : ''Category: [[:Category:Utility templates|Utility templates]]'' <section begin=utility-templates/> * {{tl|Lorem ipsum}} * {{tl|Error}} * {{tl|Please leave this line alone (sandbox heading)}} * {{tl|Lua}} * {{tl|Yesno}} * {{tl|Whatisit}} * {{tl|Lua}} * {{tl|Flatlist}} * {{tl|Edit filter warning}} * {{tl|Edit}} * {{tl|Editlink}} * {{tl|Editlinktalk}} <section end=utility-templates/> == Other templates == : ''Category: [[:Category:Other templates|Other templates]]'' <section begin=other-templates/> * {{tl|Server}} <section end=other-templates/> == Userpage header templates == : ''Category: [[:Category:Userpage header templates|Userpage header templates]]'' <section begin=userpage-header-templates/> * {{tl|Globally banned}} * {{tl|Locked}} * {{tl|Bot}} <section end=userpage-header-templates/> == Header templates == : ''Category: [[:Category:Header templates|Header templates]]'' <section begin=header-templates/> * {{tl|Global policy}} * {{tl|Header}} * {{tl|Guideline}} * {{tl|Meta policy}} * {{tl|English notice}} * {{tl|Historical}} * {{tl|Policy draft}} * {{tl|WMFGadgets}} <section end=header-templates/> == Link templates == : ''Category: [[:Category:Link templates|Link templates]]'' <section begin=link-templates/> * {{tl|Libera}} - {{Libera|miraheze}} * {{tl|@}} - {{@|no-reply|google.com}} * {{tl|At}} - {{At}} <section end=link-templates/> == Inline talk templates == : ''Category: [[:Category:Inline talk templates|Inline talk templates]]'' <section begin=inline-talk-templates/> * {{tl|ping}} - {{ping|Example}} * {{tl|No ping}} - {{no ping|Example}} * {{tl|Hidden ping}} * {{tl|Edit conflict}} - {{edit conflict}} * {{tl|Pinged}} - {{pinged}} * {{tl|Talk page stalker}} - {{Talk page stalker}} * {{tl|Talk page watcher}} - {{Talk page watcher}} * {{tl|Responding to ping}} - {{Responding to ping}} * {{tl|To}} - {{To|Example}} * {{tl|Not watching}} - {{Not watching}} * {{tl|Non-admin comment}} - {{NACC}} * {{tl|Non-admin closure}} - {{NAC}} * {{tl|redacted}} - {{redacted}} * {{tl|redacted2}} - {{redacted2}} * {{tl|Code}} - {{code|Example text}} * {{tl|Strong}} - {{Strong|Example text}} * {{tl|Serif}} - {{serif|Example text}} * {{tl|Outdent}} - <span style="color:gray">┌───────┘</span> * {{tl|Clear}} * {{tl|Big}} - {{big|Example text}} * {{tl|Small}} - {{small|Example text}} * {{tl|Red}} - {{red|Example text}} * {{tl|Green}} - {{green|Example text}} * {{tl|Cyan}} - {{cyan|Example text}} * {{tl|Dark cyan}} - {{Dark cyan|Example text}} * {{tl|Maroon}} - {{Maroon|Example text}} * {{tl|Color}} - {{color|red|C}}{{color|orange|o}}{{color|yellow|l}}{{color|lime|o}}{{color|green|r}} {{color|cyan|t}}{{color|blue|e}}{{color|purple|x}}{{color|pink|t}} <section end=inline-talk-templates/> == Resolution templates == : ''Category: [[:Category:Resolution templates|Resolution templates]]'' <section begin=resolution-templates/> * {{tl|done}} - {{done}} * {{tl|partly done}} - {{partly done}} * {{tl|resolved}} - {{resolved}} * {{tl|not done}} - {{not done}} * {{tl|doing}} - {{doing}} * {{tl|comment}} - {{comment}} * {{tl|on hold}} - {{on hold}} * {{tl|agree}} - {{agree}} * {{tl|withdrawn}} - {{withdrawn}} * {{tl|working}} - {{working}} * {{tl|idea}} - {{idea}} * {{tl|reviewing}} - {{reviewing}} * {{tl|note}} - {{note}} * {{tl|question}} - {{question}} * {{tl|high priority}} - {{high priority}} * {{tl|thank you}} - {{thank you}} * {{tl|custom resolution}} - {{custom resolution|Earth Western Hemisphere transparent background.png|What on earth?}} <section end=resolution-templates/> == Voting templates == : ''Category: [[:Category:Voting templates|Voting templates]]'' <section begin=voting-templates/> * {{tl|support}} - {{support}} * {{tl|oppose}} - {{oppose}} * {{tl|abstain}} - {{abstain}} * {{tl|neutral}} - {{neutral}} * {{tl|support if}} - {{Support if}} <section end=voting-templates/> == Userboxes == * {{tl|Userbox}} * {{tl|Userbox-2}} * {{tl|Userbox-level}} * {{tl|Userboxtop}} * {{tl|Userboxbreak}} * {{tl|Userboxbottom}} === Global permissions === : ''Category: [[:Category:Global permissions userboxes|Global permissions userboxes]]'' <section begin=global-permissions-userboxes/> {| class="wikitable" |- <noinclude>! Template !! Result |-</noinclude> | {{tl|User CVT}} || {{User CVT|nocat=yes}} |- | {{tl|User global IP block exemption}} || {{User global IP block exemption|nocat=yes}} |- | {{tl|User global sysop}} || {{User global sysop|nocat=yes}} |- | {{tl|User global rollbacker}} || {{User global rollbacker|nocat=yes}} |- | {{tl|User interwiki administrator}} || {{User interwiki administrator|nocat=yes}} |- | {{tl|User steward}} || {{User steward|nocat=yes}} |- | {{tl|User system administrator}} || {{User system administrator|nocat=yes}} |} <section end=global-permissions-userboxes/> === Meta permissions === : ''Category: [[:Category:Meta permissions userboxes|Meta permissions userboxes]]'' <section begin=meta-permissions-userboxes/> {| class="wikitable" |- <noinclude>! Template !! Result |-</noinclude> | {{tl|User administrator}} || {{User administrator|nocat=yes}} |- | {{tl|User autopatrolled}} || {{User autopatrolled|nocat=yes}} |- | {{tl|User autoconfirmed}} || {{User autoconfirmed|nocat=yes}} |- | {{tl|User confirmed}} || {{User confirmed|nocat=yes}} |- | {{tl|User interface administrator}} || {{User interface administrator|nocat=yes}} |- | {{tl|User translation administrator}} || {{User translation administrator|nocat=yes}} |- | {{tl|User wiki creator}} || {{User wiki creator|nocat=yes}} |- | {{tl|User bureaucrat}} || {{User bureaucrat|nocat=yes}} |- | {{tl|User patroller}} || {{User patroller|nocat=yes}} |- | {{tl|User rollbacker}} || {{User rollbacker|nocat=yes}} |- | {{tl|User central notice}} || {{User central notice|nocat=yes}} |} <section end=meta-permissions-userboxes/> === Social media userboxes === : ''Category: [[:Category:Social media userboxes|Social media userboxes]]'' <section begin=social-media-userboxes/> {| class="wikitable" |- <noinclude>! Template !! Result |-</noinclude> | {{tl|User discord}} || {{User discord|nocat=yes}} |- | {{tl|User github}} || {{User github|nocat=yes}} |- | {{tl|User instagram}} || {{User instagram|nocat=yes}} |- | {{tl|User IRC}} || {{User IRC|nocat=yes}} |- | {{tl|User phabricator}} || {{User phabricator|nocat=yes}} |- | {{tl|User twitter}} || {{User twitter|nocat=yes}} |- | {{tl|User wikimedia}} || {{User wikimedia|nocat=yes}} |} <section end=social-media-userboxes/> === Human life userboxes === : ''Category: [[:Category:Human life userboxes|Human life userboxes]]'' <section begin=human-life-userboxes/> {| class="wikitable" |- <noinclude>! Template !! Result |-</noinclude> | {{tl|User adult}} || {{User adult|nocat=yes}} |- | {{tl|User age}} || {{User age|nocat=yes}} |- | {{tl|User male}} || {{User male|nocat=yes}} |- | {{tl|User female}} || {{User female|nocat=yes}} |- | {{tl|User from}} || {{User from|nocat=yes}} |- | {{tl|User in}} || {{User in|nocat=yes}} |} <section end=human-life-userboxes/> === Other userboxes === : ''Category: [[:Category:Other userboxes|Other userboxes]]'' <section begin=other-userboxes/> {| class="wikitable" |- <noinclude>! Template !! Result |-</noinclude> | {{tl|User likes thank button}} || {{User likes thank button|nocat=yes}} |- |} <section end=other-userboxes/> == Infoboxes == <section start=infoboxes/> * {{tl|infobox}} * {{tl|infobox Miraheze user}} * {{tl|simpleboxtop}} * {{tl|simpleboxdata}} * {{tl|simpleboxsection}} <section end=infoboxes/> fbd7fdcdeb179582d6030802ed6d68b02dfb4cde Template:Red 10 216 489 488 2023-09-30T19:43:22Z Führerredux 2 1 revision imported from [[:meta:Template:Red]] wikitext text/x-wiki <span style="color:red;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> 776e0c4686c43abb83f7da74dfa1def9f58bea72 Template:Edit conflict 10 217 491 490 2023-09-30T19:43:22Z Führerredux 2 1 revision imported from [[:meta:Template:Edit_conflict]] wikitext text/x-wiki <small>([[w:Help:Edit conflict|edit conflict]])</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> eb558263ebad66e81bbdde9479c936ab789b4443 Template:Pinged 10 218 493 492 2023-09-30T19:43:23Z Führerredux 2 1 revision imported from [[:meta:Template:Pinged]] wikitext text/x-wiki <small>([[Wikipedia:Notifications|pinged]])</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> a0c3480990f212de7bdf6319a34ee21eaa63171e Template:Talk page stalker 10 219 495 494 2023-09-30T19:43:23Z Führerredux 2 1 revision imported from [[:meta:Template:Talk_page_stalker]] wikitext text/x-wiki {{safesubst:<noinclude />#ifeq:{{safesubst:<noinclude />Yesno|{{{small|yes}}}}}|yes|<small>}}([[:wikipedia:Wikipedia:Talk page stalker|{{safesubst:<noinclude />#switch:{{lc:{{{1}}}}} |c = Talk page stalker |cw = Talk page watcher |ce = Talk page enjoyer |cg = Talk page gnome |cr = Talk page reader |a = TPS |aw = TPW |ag = TPG |ar = TPR |v = stalking |vw = watching |vg = gnoming |vr = reading |b = by talk page stalker |bw = by talk page watcher |bg = by talk gnome |br = by talk reader |alc = tps |alcw = tpw |alcg = tpg |alcr = tpr |w=talk page watcher |g=talk page gnome |r = talk page reader |#default=talk page stalker }}]]){{safesubst:<noinclude />#ifeq:{{safesubst:<noinclude />Yesno|{{{small|yes}}}}}|yes|</small>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> e674d1371b451e6981f3786ceb6e4c4d2778e633 Template:Yesno 10 12 497 20 2023-09-30T19:43:23Z Führerredux 2 1 revision imported from [[:meta:Template:Yesno]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }} |no |n |f |false |off |0 = {{{no|<!-- null -->}}} | = {{{blank|{{{no|<!-- null -->}}}}}} |¬ = {{{¬|}}} |yes |y |t |true |on |1 = {{{yes|yes}}} |#default = {{{def|{{{yes|yes}}}}}} }}<noinclude> {{Documentation}} </noinclude> 629c2937bc5cf7cfe13cd2a598582af832782399 Template:Talk page watcher 10 220 499 498 2023-09-30T19:43:24Z Führerredux 2 1 revision imported from [[:meta:Template:Talk_page_watcher]] wikitext text/x-wiki {{safesubst:<noinclude />#ifeq:{{{small|}}}|no||<small>}}([[{{safesubst:<noinclude />#ifeq:{{{safe|}}}|yes|Help:Watchlist|wikipedia:Wikipedia:Talk page stalker}}|{{safesubst:<noinclude />#switch:{{safesubst:<noinclude />lc:{{{1}}}}}|c=Talk page watcher|a=TPW|v=watching|b=by talk page watcher|alc=tpw|#default=talk page watcher}}]]){{safesubst:<noinclude />#ifeq:{{{small|}}}|no||</small>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> e3ec255c54f7b6317bc81f5c9180959b494749de Template:Responding to ping 10 221 501 500 2023-09-30T19:43:24Z Führerredux 2 1 revision imported from [[:meta:Template:Responding_to_ping]] wikitext text/x-wiki <small>(<span style="color:#555;">responding to [[Wikipedia:Notifications|ping]]</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 385a033181f51764191d1e0869a00c37e566e037 Template:To 10 222 503 502 2023-09-30T19:43:25Z Führerredux 2 1 revision imported from [[:meta:Template:To]] wikitext text/x-wiki {{SAFESUBST:<noinclude />#if:{{{1|<noinclude>$</noinclude>}}} |<span class="template-ping">'''''<small>To</small>''''' [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{1|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label1|{{{1|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{2|}}} |{{SAFESUBST:<noinclude />#if:{{{3|}}}|,|&nbsp;and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{2|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label2|{{{2|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{3|}}} |{{SAFESUBST:<noinclude />#if:{{{4|}}}|,|&nbsp;and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{3|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label3|{{{3|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{4|}}} |{{SAFESUBST:<noinclude />#if:{{{5|}}}|,|&nbsp;and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{4|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label4|{{{4|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{5|}}} |{{SAFESUBST:<noinclude />#if:{{{6|}}}|,|&nbsp;and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{5|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label5|{{{5|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{6|}}} |{{SAFESUBST:<noinclude />#if:{{{7|}}}|,|&nbsp;and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{6|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label6|{{{6|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{7|}}} |&nbsp;and [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{7|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label7|{{{7|Example}}}}}}}}]] }} }} }} }} }} }}{{{p|:}}}</span> |{{SAFESUBST:<noinclude />Error|Error in [[Template:To]]: Username not given.}} }}<noinclude> {{documentation}} </noinclude> 9c0fea6f23b8ce7384dc9f1dcde0385ac8f6288e Template:Not watching 10 223 505 504 2023-09-30T19:43:25Z Führerredux 2 1 revision imported from [[:meta:Template:Not_watching]] wikitext text/x-wiki <small>(I am not [[mediawikiwiki:Help:Watchlist|watching]] this page, so please [[Template:Ping/doc|ping me]] if you want my attention.)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 8cd9e9cb5cdc0597c26d6b827ad2a764272fc86e Template:NACC 10 224 507 506 2023-09-30T19:43:25Z Führerredux 2 1 revision imported from [[:meta:Template:NACC]] wikitext text/x-wiki #REDIRECT [[Template:Non-admin comment]] [[Category:Template redirects]] 1cd21d3bf7de101beb4306ce2af0275eae30628f Template:Non-admin comment 10 225 509 508 2023-09-30T19:43:26Z Führerredux 2 1 revision imported from [[:meta:Template:Non-admin_comment]] wikitext text/x-wiki <small>(<span style="color:#555;">Non-{{{{{|safesubst:}}}#switch:{{{1}}} |admin |sysop= administrator |crat= bureaucrat |cu= checkuser |steward= steward |sysadmin= system administrator |#default={{{{{|safesubst:}}}#if: {{{1|}}}|{{{1}}}|administrator}}}} comment</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 74955aa8ac53710e3ce1e366be475275521360ac Template:NAC 10 226 511 510 2023-09-30T19:43:26Z Führerredux 2 1 revision imported from [[:meta:Template:NAC]] wikitext text/x-wiki #REDIRECT [[Template:Non-admin closure]] [[Category:Template redirects]] e832ee229612e587cd776e14de78cad816d72d44 Template:Non-admin closure 10 227 513 512 2023-09-30T19:43:26Z Führerredux 2 1 revision imported from [[:meta:Template:Non-admin_closure]] wikitext text/x-wiki <small>(<span style="color:#555;">Non-{{{{{|safesubst:}}}#switch:{{{1}}} |admin |sysop= administrator |crat= bureaucrat |cu= checkuser |steward= steward |sysadmin= system administrator |#default={{{{{|safesubst:}}}#if: {{{1|}}}|{{{1}}}|administrator}}}} closure</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> d22fc6e8966962e37b3af6a3649df85fe7462c5c Template:Redacted 10 228 515 514 2023-09-30T19:43:27Z Führerredux 2 1 revision imported from [[:meta:Template:Redacted]] wikitext text/x-wiki {{safesubst:<noinclude/>#invoke:Unsubst||$B=<span style="text-decoration: line-through; color: #565656; font-style: italic;" title="Content was removed{{#if:{{{1|}}}|&nbsp;for the following reason: {{{1}}} }}">(redacted)</span>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 2ef480268fdd5e2abc658ec6d80527fc6a624c8f Template:Code 10 229 517 516 2023-09-30T19:43:27Z Führerredux 2 1 revision imported from [[:meta:Template:Code]] wikitext text/x-wiki {{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> ec6759b67bec30b7f31c3a0feecdd2a4775ee0cf Template:Serif 10 230 519 518 2023-09-30T19:43:27Z Führerredux 2 1 revision imported from [[:meta:Template:Serif]] wikitext text/x-wiki <span style="font-family: 'Georgia Pro', Georgia, 'DejaVu Serif', Times, 'Times New Roman', serif; {{{style|}}}" {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> 1f36ee4412dd29b6f8065b6a8f4191905763d83e Template:Big 10 231 521 520 2023-09-30T19:43:28Z Führerredux 2 1 revision imported from [[:meta:Template:Big]] wikitext text/x-wiki <span style="font-size: 120%;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> ccacbee62715b1977a9a2534a2cd4761ed5882f1 Template:Small 10 103 523 254 2023-09-30T19:43:28Z Führerredux 2 1 revision imported from [[:meta:Template:Small]] wikitext text/x-wiki <span style="font-size:85%;">{{{1}}}</span><includeonly>{{SAFESUBST:#if:{{{1|}}}||[[Category:Pages using small with an empty input parameter]]}}</includeonly><noinclude> {{Documentation}}<!--Categories and interwikis go in the /doc sub-page.--> </noinclude> 76d3535c2917cc3bfb1b032506073faa15e1a480 Template:Cyan 10 232 525 524 2023-09-30T19:43:28Z Führerredux 2 1 revision imported from [[:meta:Template:Cyan]] wikitext text/x-wiki <span style="color: #00cccc;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> 0e41138de5432d774a72ac7f8607b5c8bb6e9d23 Template:Dark cyan 10 233 527 526 2023-09-30T19:43:31Z Führerredux 2 1 revision imported from [[:meta:Template:Dark_cyan]] wikitext text/x-wiki <span style="color: #008b8b;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> e9c0ab2752c4b605c80909eb5c6dc128971991c4 Template:Maroon 10 234 529 528 2023-09-30T19:43:34Z Führerredux 2 1 revision imported from [[:meta:Template:Maroon]] wikitext text/x-wiki <span style="color: Maroon;">{{{1}}}</span><noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}}</noinclude> ec7268d828ab5a3e2b2aea1613d331ff6ad7375f Module:Unsubst 828 235 531 530 2023-09-30T19:43:34Z Führerredux 2 1 revision imported from [[:meta:Module:Unsubst]] Scribunto text/plain local p = {} local specialParams = { ['$N'] = 'template name', -- Deprecated, but keeping until it is removed from transcluding templates ['$B'] = 'template content', } p[''] = function ( frame ) if not frame:getParent() then error( '{{#invoke:Unsubst|}} makes no sense without a parent frame' ) end if not frame.args['$B'] then error( '{{#invoke:Unsubst|}} requires parameter $B (template content)' ) end if mw.isSubsting() then ---- substing -- Combine passed args with passed defaults local args = {} for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end for k, v in pairs( frame:getParent().args ) do args[k] = v end -- Build an equivalent template invocation -- First, find the title to use local titleobj = mw.title.new(frame:getParent():getTitle()) local title if titleobj.namespace == 10 then -- NS_TEMPLATE title = titleobj.text elseif titleobj.namespace == 0 then -- NS_MAIN title = ':' .. titleobj.text else title = titleobj.prefixedText end -- Build the invocation body with numbered args first, then named local ret = '{{' .. title for k, v in ipairs( args ) do if string.find( v, '=', 1, true ) then -- likely something like 1=foo=bar, we need to do it as a named arg break end ret = ret .. '|' .. v args[k] = nil end for k, v in pairs( args ) do ret = ret .. '|' .. k .. '=' .. v end return ret .. '}}' else ---- Not substing -- Just return the "body" return frame.args['$B'] .. (frame.args['$N'] and frame:getParent():getTitle() == mw.title.getCurrentTitle().prefixedText and '[[Category:Calls to Module:Unsubst that use $N]]' or '') end end return p 83a208bd98f5e78524b299923e5f6e6268a17c53 Template:Strong/doc 10 236 533 532 2023-09-30T19:43:35Z Führerredux 2 1 revision imported from [[:meta:Template:Strong/doc]] wikitext text/x-wiki {{Documentation subpage}} == Usage == {| class="wikitable" !Template !! Result |- |{{tlx|Strong}} || {{strong|Example text}} |} == See also == {{#lst:Template:Template list|inline-talk-templates}} 9f233bad1e32c07e57f879f52cefdf00fbbb245b Template:Redacted2 10 237 535 534 2023-09-30T19:43:35Z Führerredux 2 1 revision imported from [[:meta:Template:Redacted2]] wikitext text/x-wiki {{safesubst:<noinclude/>#invoke:Unsubst||$B=<span style="text-decoration: line-through; text-decoration-style: double; color: #000000; font-style: italic;" title="redacted">(redacted)</span>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> 736f9e35456b9ccf7b7c7b423cb0d9c6b0342f55 Template:Infobox officeholder 10 238 536 2023-09-30T19:57:28Z Führerredux 2 Created page with "{{#invoke:infobox|infoboxTemplate | bodyclass = vcard {{{bodyclass|}}} | bodystyle = {{#if:{{{mainwidth|}}}|width: {{{mainwidth}}}}} | child = {{lc:{{{embed}}}}} | abovestyle = font-size: 100%; | above = {{#if:{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|}}}}}}}}}|<div class="honorific-prefix" style="font-weight: normal;">{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix}}}}}}}}}</div>}}<!-- --><div class="fn" style="font-size:125%;">{{#if:..." wikitext text/x-wiki {{#invoke:infobox|infoboxTemplate | bodyclass = vcard {{{bodyclass|}}} | bodystyle = {{#if:{{{mainwidth|}}}|width: {{{mainwidth}}}}} | child = {{lc:{{{embed}}}}} | abovestyle = font-size: 100%; | above = {{#if:{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|}}}}}}}}}|<div class="honorific-prefix" style="font-weight: normal;">{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix}}}}}}}}}</div>}}<!-- --><div class="fn" style="font-size:125%;">{{#if:{{{name|}}}|{{{name}}}|{{PAGENAMEBASE}}}}</div><!-- -->{{#if:{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix|}}}}}}}}}|<div class="honorific-suffix" style="font-weight: normal;">{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix}}}}}}}}}</div>}} | subheaderstyle = font-size:125%; font-weight:bold; | subheader = {{#ifeq:{{lc:{{{embed}}}}}|yes||{{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name}}}{{#if:{{{native_name_lang|}}}|</div>}}}}}} | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{width|{{{imagesize|{{{image_size|}}}}}}}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{alt|}}}|suppressplaceholder=yes}} | image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image name|}}}|size={{{width|{{{imagesize|{{{image_size|}}}}}}}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{image_name_alt|}}}|suppressplaceholder=yes}} | image3 = {{#invoke:InfoboxImage|InfoboxImage|image={{{smallimage|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{smallimage_alt|}}}|suppressplaceholder=yes}} | captionstyle = line-height:normal;padding-top:0.2em; | caption{{#if:{{{smallimage|}}}|3|{{#if:{{{image name|}}}|2}}}} = {{{caption|}}} | headerstyle = {{#ifeq:{{lc:{{{embed}}}}}|yes|background:#eee|background:lavender}} | data1 = {{#if:{{{speaker|}}}| {{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname2|}}} | 1namedata = {{{1namedata2|}}} | 2blankname = {{{2blankname2|}}} | 2namedata = {{{2namedata2|}}} | 3blankname = {{{3blankname2|}}} | 3namedata = {{{3namedata2|}}} | 4blankname = {{{4blankname2|}}} | 4namedata = {{{4namedata2|}}} | 5blankname = {{{5blankname2|}}} | 5namedata = {{{5namedata2|}}} | alongside = {{{alongside2|}}} | ambassador_from = {{{ambassador_from2|}}} | appointer = {{#if: {{{appointer2|}}} | {{{appointer2}}} | {{{appointed2|}}} }} | assembly = {{{assembly2|}}} | assuming = {{{assuming2|}}} | chancellor = {{{chancellor2|}}} | co-leader = {{{co-leader2|}}} | constituency_{{#if:{{{constituency_AM2|}}}|AM|MP}} = {{#if: {{{constituency_AM2|}}} | {{{constituency_AM2}}} | {{{constituency_MP2|}}} }} | constituency = {{{constituency2|}}} | convocation = {{{convocation2|}}} | country = {{{country2|}}} | deputy = {{{deputy2|}}} | district = {{{district2|}}} | firstminister = {{{firstminister2|}}} | governor-general = {{{governor-general2|}}} | governor_general = {{{governor_general2|}}} | governor = {{{governor2|}}} | jr/sr = {{{jr/sr2|}}} | jr/sr and state = {{{jr/sr and state2|}}} | leader = {{{leader2|}}} | legislature = {{{legislature2|}}} | lieutenant_governor = {{{lieutenant_governor2|}}} | lieutenant = {{{lieutenant2|}}} | majority_leader = {{#if: {{{majorityleader2|}}} | {{{majorityleader2}}} | {{{majority_leader2|}}} }} | minister_from = {{{minister_from2|}}} | minority_floor_leader = {{{minority_floor_leader2|}}} | majority_floor_leader = {{{majority_floor_leader2|}}} | majority = {{{majority2|}}} | minister = {{{minister2|}}} | minority_leader = {{#if: {{{minorityleader2|}}} | {{{minorityleader2}}} | {{{minority_leader2|}}} }} | monarch = {{{monarch2|}}} | nominator = {{{nominator2|}}} | office = {{{office2|}}} | order = {{{order2|}}} | parliament = {{{parliament2|}}} | parliamentarygroup = {{{parliamentarygroup2|}}} | predecessor = {{{predecessor2|}}} | preceding = {{{preceding2|}}} | preceded = {{{preceded2|}}} | premier = {{{premier2|}}} | president = {{{president2|}}} | primeminister = {{{primeminister2|}}} | riding = {{{riding2|}}} | speaker = {{{speaker|}}} | speaker_office = {{{speaker_office|}}} | state_assembly = {{{state_assembly|}}} | state_delegate = {{{state_delegate|}}} | state_house = {{{state_house|}}} | state_legislature = {{{state_legislature|}}} | state_senate = {{{state_senate|}}} | state = {{{state|}}} | subterm = {{nobold|{{{subterm|}}}}} | suboffice = {{{suboffice|}}} | succeeded = {{{succeeded2|}}} | succeeding = {{{succeeding2|}}} | successor = {{{successor2|}}} | taoiseach = {{{taoiseach2|}}} | termlabel = {{{term_label2|{{{termlabel2|In office}}}}}} | termend = {{#if:{{{termend2|}}}|{{{termend2}}}|{{{term_end2|}}}}} | termstart = {{#if:{{{termstart2|}}}|{{{termstart2}}}|{{{term_start2|}}}}} | term = {{{term2|}}} | title = {{{title2|}}} | vicegovernor = {{{vicegovernor2|}}} | vicepresident = {{{vicepresident2|}}} | vicepremier = {{{vicepremier2|}}} | viceprimeminister = {{{viceprimeminister2|}}} | party = {{{party|}}} | prior_term = {{{prior_term|}}} }}}}}}<!-- -->{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname|}}} | 1namedata = {{{1namedata|}}} | 2blankname = {{{2blankname|}}} | 2namedata = {{{2namedata|}}} | 3blankname = {{{3blankname|}}} | 3namedata = {{{3namedata|}}} | 4blankname = {{{4blankname|}}} | 4namedata = {{{4namedata|}}} | 5blankname = {{{5blankname|}}} | 5namedata = {{{5namedata|}}} | alongside = {{{alongside|}}} | ambassador_from = {{{ambassador_from|}}} | appointer = {{#if: {{{appointer|}}} | {{{appointer}}} | {{{appointed|}}} }} | assembly = {{{assembly|}}} | assuming = {{{assuming|}}} | candidate = {{{candidate|}}} | chancellor = {{{chancellor|}}} | co-leader = {{{co-leader|}}} | constituency_{{#if:{{{constituency_AM|}}}|AM|MP}} = {{#if: {{{constituency_AM|}}} | {{{constituency_AM}}} | {{{constituency_MP|}}} }} | constituency = {{{constituency|}}} | convocation = {{{convocation|}}} | country = {{{country|}}} | deputy = {{{deputy|}}} | district = {{{district|}}} | election_date = {{{election_date|}}} | firstminister = {{{firstminister|}}} | governor-general = {{{governor-general|}}} | governor_general = {{{governor_general|}}} | governor = {{{governor|}}} | incumbent = {{{incumbent|}}} | jr/sr = {{{jr/sr|}}} | jr/sr and state = {{{jr/sr and state|}}} | leader = {{{leader|}}} | legislature = {{{legislature|}}} | lieutenant_governor = {{{lieutenant_governor|}}} | lieutenant = {{{lieutenant|}}} | majority_leader = {{#if: {{{majorityleader|}}} | {{{majorityleader}}} | {{{majority_leader|}}} }} | majority = {{{majority|}}} | minister = {{{minister|}}} | minister_from = {{{minister_from|}}} | minority_floor_leader = {{{minority_floor_leader|}}} | majority_floor_leader = {{{majority_floor_leader|}}} | minority_leader = {{#if: {{{minorityleader|}}} | {{{minorityleader}}} | {{{minority_leader|}}} }} | monarch = {{{monarch|}}} | nominator = {{{nominator|}}} | nominee = {{{nominee|}}} | office = {{{office|}}} | opponent = {{{opponent|}}} | order = {{{order|}}} | parliament = {{{parliament|}}} | parliamentarygroup = {{{parliamentarygroup|}}} | party_election = {{{party_election|}}} | predecessor = {{{predecessor|}}} | preceding = {{{preceding|}}} | preceded = {{{preceded|}}} | premier = {{{premier|}}} | president = {{{president|}}} | primeminister = {{{primeminister|}}} | riding = {{{riding|}}} | runningmate = {{{runningmate|}}} | state_assembly = {{{state_assembly|}}} | state_delegate = {{{state_delegate|}}} | state_house = {{{state_house|}}} | state_legislature = {{{state_legislature|}}} | state_senate = {{{state_senate|}}} | state = {{{state|}}} | status = {{{status|}}} | suboffice = {{{suboffice|}}} | subterm = {{nobold|{{{subterm|}}}}} | succeeded = {{{succeeded|}}} | succeeding = {{{succeeding|}}} | successor = {{{successor|}}} | taoiseach = {{{taoiseach|}}} | termlabel = {{{term_label|{{{termlabel|In office}}}}}} | termend = {{#if: {{{termend|}}} | {{{termend}}} | {{{term_end|}}} }} | termstart = {{#if: {{{termstart|}}} | {{{termstart}}} | {{{term_start|}}} }} | term = {{{term|}}} | title = {{{title|}}} | vicegovernor = {{{vicegovernor|}}} | vicepresident = {{{vicepresident|}}} | vicepremier = {{{vicepremier|}}} | viceprimeminister = {{{viceprimeminister|}}} | party = {{{party|}}} | prior_term = {{{prior_term|}}} }}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname1|}}} | 1namedata = {{{1namedata1|}}} | 2blankname = {{{2blankname1|}}} | 2namedata = {{{2namedata1|}}} | 3blankname = {{{3blankname1|}}} | 3namedata = {{{3namedata1|}}} | 4blankname = {{{4blankname1|}}} | 4namedata = {{{4namedata1|}}} | 5blankname = {{{5blankname1|}}} | 5namedata = {{{5namedata1|}}} | alongside = {{{alongside1|}}} | ambassador_from = {{{ambassador_from1|}}} | appointer = {{#if: {{{appointer1|}}} | {{{appointer1}}} | {{{appointed1|}}} }} | assembly = {{{assembly1|}}} | assuming = {{{assuming1|}}} | chancellor = {{{chancellor1|}}} | co-leader = {{{co-leader1|}}} | constituency_{{#if:{{{constituency_AM1|}}}|AM|MP}} = {{#if: {{{constituency_AM1|}}} | {{{constituency_AM1}}} | {{{constituency_MP1|}}} }} | constituency = {{{constituency1|}}} | convocation = {{{convocation1|}}} | country = {{{country1|}}} | deputy = {{{deputy1|}}} | district = {{{district1|}}} | firstminister = {{{firstminister1|}}} | governor-general = {{{governor-general1|}}} | governor_general = {{{governor_general1|}}} | governor = {{{governor1|}}} | jr/sr = {{{jr/sr1|}}} | jr/sr and state = {{{jr/sr and state1|}}} | leader = {{{leader1|}}} | legislature = {{{legislature1|}}} | lieutenant_governor = {{{lieutenant_governor1|}}} | lieutenant = {{{lieutenant1|}}} | minority_floor_leader = {{{minority_floor_leader1|}}} | minister_from = {{{minister_from1|}}} | majority_floor_leader = {{{majority_floor_leader1|}}} | majority_leader = {{#if: {{{majorityleader1|}}} | {{{majorityleader1}}} | {{{majority_leader1|}}} }} | majority = {{{majority1|}}} | minister = {{{minister1|}}} | minority_leader = {{#if: {{{minorityleader1|}}} | {{{minorityleader1}}} | {{{minority_leader1|}}} }} | monarch = {{{monarch1|}}} | nominator = {{{nominator1|}}} | office = {{{office1|}}} | order = {{{order1|}}} | parliament = {{{parliament1|}}} | parliamentarygroup = {{{parliamentarygroup1|}}} | predecessor = {{{predecessor1|}}} | preceding = {{{preceding1|}}} | preceded = {{{preceded1|}}} | premier = {{{premier1|}}} | president = {{{president1|}}} | primeminister = {{{primeminister1|}}} | riding = {{{riding1|}}} | state_assembly = {{{state_assembly1|}}} | state_delegate = {{{state_delegate1|}}} | state_house = {{{state_house1|}}} | state_legislature = {{{state_legislature1|}}} | state_senate = {{{state_senate1|}}} | state = {{{state1|}}} | status = {{{status1|}}} | subterm = {{nobold|{{{subterm1|}}}}} | suboffice = {{{suboffice1|}}} | succeeded = {{{succeeded1|}}} | succeeding = {{{succeeding1|}}} | successor = {{{successor1|}}} | taoiseach = {{{taoiseach1|}}} | termlabel = {{{term_label1|{{{termlabel1|In office}}}}}} | termend = {{#if:{{{termend1|}}}|{{{termend1}}}|{{{term_end1|}}}}} | termstart = {{#if:{{{termstart1|}}}|{{{termstart1}}}|{{{term_start1|}}}}} | term = {{{term1|}}} | title = {{{title1|}}} | vicegovernor = {{{vicegovernor1|}}} | vicepresident = {{{vicepresident1|}}} | vicepremier = {{{vicepremier1|}}} | viceprimeminister = {{{viceprimeminister1|}}} | party = {{{party|}}} | prior_term = {{{prior_term1|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{#if:{{{speaker|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname2|}}} | 1namedata = {{{1namedata2|}}} | 2blankname = {{{2blankname2|}}} | 2namedata = {{{2namedata2|}}} | 3blankname = {{{3blankname2|}}} | 3namedata = {{{3namedata2|}}} | 4blankname = {{{4blankname2|}}} | 4namedata = {{{4namedata2|}}} | 5blankname = {{{5blankname2|}}} | 5namedata = {{{5namedata2|}}} | alongside = {{{alongside2|}}} | ambassador_from = {{{ambassador_from2|}}} | appointer = {{#if: {{{appointer2|}}} | {{{appointer2}}} | {{{appointed2|}}} }} | assembly = {{{assembly2|}}} | assuming = {{{assuming2|}}} | chancellor = {{{chancellor2|}}} | co-leader = {{{co-leader2|}}} | constituency_{{#if:{{{constituency_AM2|}}}|AM|MP}} = {{#if: {{{constituency_AM2|}}} | {{{constituency_AM2}}} | {{{constituency_MP2|}}} }} | constituency = {{{constituency2|}}} | convocation = {{{convocation2|}}} | country = {{{country2|}}} | deputy = {{{deputy2|}}} | district = {{{district2|}}} | firstminister = {{{firstminister2|}}} | governor-general = {{{governor-general2|}}} | governor_general = {{{governor_general2|}}} | governor = {{{governor2|}}} | jr/sr = {{{jr/sr2|}}} | jr/sr and state = {{{jr/sr and state2|}}} | leader = {{{leader2|}}} | legislature = {{{legislature2|}}} | lieutenant_governor = {{{lieutenant_governor2|}}} | lieutenant = {{{lieutenant2|}}} | majority_leader = {{#if: {{{majorityleader2|}}} | {{{majorityleader2}}} | {{{majority_leader2|}}} }} | minister_from = {{{minister_from2|}}} | minority_floor_leader = {{{minority_floor_leader2|}}} | majority_floor_leader = {{{majority_floor_leader2|}}} | majority = {{{majority2|}}} | minister = {{{minister2|}}} | minority_leader = {{#if: {{{minorityleader2|}}} | {{{minorityleader2}}} | {{{minority_leader2|}}} }} | monarch = {{{monarch2|}}} | nominator = {{{nominator2|}}} | office = {{{office2|}}} | order = {{{order2|}}} | parliament = {{{parliament2|}}} | parliamentarygroup = {{{parliamentarygroup2|}}} | predecessor = {{{predecessor2|}}} | preceding = {{{preceding2|}}} | preceded = {{{preceded2|}}} | premier = {{{premier2|}}} | president = {{{president2|}}} | primeminister = {{{primeminister2|}}} | riding = {{{riding2|}}} | state_assembly = {{{state_assembly2|}}} | state_delegate = {{{state_delegate2|}}} | state_house = {{{state_house2|}}} | state_legislature = {{{state_legislature2|}}} | state_senate = {{{state_senate2|}}} | state = {{{state2|}}} | status = {{{status2|}}} | subterm = {{nobold|{{{subterm2|}}}}} | suboffice = {{{suboffice2|}}} | succeeded = {{{succeeded2|}}} | succeeding = {{{succeeding2|}}} | successor = {{{successor2|}}} | taoiseach = {{{taoiseach2|}}} | termlabel = {{{term_label2|{{{termlabel2|In office}}}}}} | termend = {{#if:{{{termend2|}}}|{{{termend2}}}|{{{term_end2|}}}}} | termstart = {{#if:{{{termstart2|}}}|{{{termstart2}}}|{{{term_start2|}}}}} | term = {{{term2|}}} | title = {{{title2|}}} | vicegovernor = {{{vicegovernor2|}}} | vicepresident = {{{vicepresident2|}}} | vicepremier = {{{vicepremier2|}}} | viceprimeminister = {{{viceprimeminister2|}}} | party = {{{party|}}} | prior_term = {{{prior_term2|}}} }}}}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname3|}}} | 1namedata = {{{1namedata3|}}} | 2blankname = {{{2blankname3|}}} | 2namedata = {{{2namedata3|}}} | 3blankname = {{{3blankname3|}}} | 3namedata = {{{3namedata3|}}} | 4blankname = {{{4blankname3|}}} | 4namedata = {{{4namedata3|}}} | 5blankname = {{{5blankname3|}}} | 5namedata = {{{5namedata3|}}} | alongside = {{{alongside3|}}} | ambassador_from = {{{ambassador_from3|}}} | appointer = {{#if: {{{appointer3|}}} | {{{appointer3}}} | {{{appointed3|}}} }} | assembly = {{{assembly3|}}} | assuming = {{{assuming3|}}} | chancellor = {{{chancellor3|}}} | co-leader = {{{co-leader3|}}} | constituency_{{#if:{{{constituency_AM3|}}}|AM|MP}} = {{#if: {{{constituency_AM3|}}} | {{{constituency_AM3}}} | {{{constituency_MP3|}}} }} | constituency = {{{constituency3|}}} | convocation = {{{convocation3|}}} | country = {{{country3|}}} | deputy = {{{deputy3|}}} | district = {{{district3|}}} | firstminister = {{{firstminister3|}}} | governor-general = {{{governor-general3|}}} | governor_general = {{{governor_general3|}}} | governor = {{{governor3|}}} | jr/sr = {{{jr/sr3|}}} | jr/sr and state = {{{jr/sr and state3|}}} | leader = {{{leader3|}}} | legislature = {{{legislature3|}}} | lieutenant_governor = {{{lieutenant_governor3|}}} | lieutenant = {{{lieutenant3|}}} | minority_floor_leader = {{{minority_floor_leader3|}}} | minister_from = {{{minister_from3|}}} | majority_floor_leader = {{{majority_floor_leader3|}}} | majority_leader = {{#if: {{{majorityleader3|}}} | {{{majorityleader3}}} | {{{majority_leader3|}}} }} | majority = {{{majority3|}}} | minister = {{{minister3|}}} | minority_leader = {{#if: {{{minorityleader3|}}} | {{{minorityleader3}}} | {{{minority_leader3|}}} }} | monarch = {{{monarch3|}}} | nominator = {{{nominator3|}}} | office = {{{office3|}}} | order = {{{order3|}}} | parliament = {{{parliament3|}}} | parliamentarygroup = {{{parliamentarygroup3|}}} | predecessor = {{{predecessor3|}}} | preceding = {{{preceding3|}}} | preceded = {{{preceded3|}}} | premier = {{{premier3|}}} | president = {{{president3|}}} | primeminister = {{{primeminister3|}}} | riding = {{{riding3|}}} | state_assembly = {{{state_assembly3|}}} | state_delegate = {{{state_delegate3|}}} | state_house = {{{state_house3|}}} | state_legislature = {{{state_legislature3|}}} | state_senate = {{{state_senate3|}}} | state = {{{state3|}}} | status = {{{status3|}}} | subterm = {{nobold|{{{subterm3|}}}}} | suboffice = {{{suboffice3|}}} | succeeded = {{{succeeded3|}}} | succeeding = {{{succeeding3|}}} | successor = {{{successor3|}}} | taoiseach = {{{taoiseach3|}}} | termlabel = {{{term_label3|{{{termlabel3|In office}}}}}} | termend = {{#if:{{{termend3|}}}|{{{termend3}}}|{{{term_end3|}}}}} | termstart = {{#if:{{{termstart3|}}}|{{{termstart3}}}|{{{term_start3|}}}}} | term = {{{term3|}}} | title = {{{title3|}}} | vicegovernor = {{{vicegovernor3|}}} | vicepresident = {{{vicepresident3|}}} | vicepremier = {{{vicepremier3|}}} | viceprimeminister = {{{viceprimeminister3|}}} | party = {{{party|}}} | prior_term = {{{prior_term3|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname4|}}} | 1namedata = {{{1namedata4|}}} | 2blankname = {{{2blankname4|}}} | 2namedata = {{{2namedata4|}}} | 3blankname = {{{3blankname4|}}} | 3namedata = {{{3namedata4|}}} | 4blankname = {{{4blankname4|}}} | 4namedata = {{{4namedata4|}}} | 5blankname = {{{5blankname4|}}} | 5namedata = {{{5namedata4|}}} | alongside = {{{alongside4|}}} | ambassador_from = {{{ambassador_from4|}}} | appointer = {{#if: {{{appointer4|}}} | {{{appointer4}}} | {{{appointed4|}}} }} | assembly = {{{assembly4|}}} | assuming = {{{assuming4|}}} | chancellor = {{{chancellor4|}}} | co-leader = {{{co-leader4|}}} | constituency_{{#if:{{{constituency_AM4|}}}|AM|MP}} = {{#if: {{{constituency_AM4|}}} | {{{constituency_AM4}}} | {{{constituency_MP4|}}} }} | constituency = {{{constituency4|}}} | convocation = {{{convocation4|}}} | country = {{{country4|}}} | deputy = {{{deputy4|}}} | district = {{{district4|}}} | firstminister = {{{firstminister4|}}} | governor-general = {{{governor-general4|}}} | governor_general = {{{governor_general4|}}} | governor = {{{governor4|}}} | jr/sr = {{{jr/sr4|}}} | jr/sr and state = {{{jr/sr and state4|}}} | leader = {{{leader4|}}} | legislature = {{{legislature4|}}} | lieutenant_governor = {{{lieutenant_governor4|}}} | lieutenant = {{{lieutenant4|}}} | minister_from = {{{minister_from4|}}} | minority_floor_leader = {{{minority_floor_leader4|}}} | majority_floor_leader = {{{majority_floor_leader4|}}} | majority_leader = {{#if: {{{majorityleader4|}}} | {{{majorityleader4}}} | {{{majority_leader4|}}} }} | majority = {{{majority4|}}} | minister = {{{minister4|}}} | minority_leader = {{#if: {{{minorityleader4|}}} | {{{minorityleader4}}} | {{{minority_leader4|}}} }} | monarch = {{{monarch4|}}} | nominator = {{{nominator4|}}} | office = {{{office4|}}} | order = {{{order4|}}} | parliament = {{{parliament4|}}} | parliamentarygroup = {{{parliamentarygroup4|}}} | predecessor = {{{predecessor4|}}} | preceding = {{{preceding4|}}} | preceded = {{{preceded4|}}} | premier = {{{premier4|}}} | president = {{{president4|}}} | primeminister = {{{primeminister4|}}} | riding = {{{riding4|}}} | state_assembly = {{{state_assembly4|}}} | state_delegate = {{{state_delegate4|}}} | state_house = {{{state_house4|}}} | state_legislature = {{{state_legislature4|}}} | state_senate = {{{state_senate4|}}} | state = {{{state4|}}} | status = {{{status4|}}} | subterm = {{nobold|{{{subterm4|}}}}} | suboffice = {{{suboffice4|}}} | succeeded = {{{succeeded4|}}} | succeeding = {{{succeeding4|}}} | successor = {{{successor4|}}} | taoiseach = {{{taoiseach4|}}} | termlabel = {{{term_label4|{{{termlabel4|In office}}}}}} | termend = {{#if:{{{termend4|}}}|{{{termend4}}}|{{{term_end4|}}}}} | termstart = {{#if:{{{termstart4|}}}|{{{termstart4}}}|{{{term_start4|}}}}} | term = {{{term4|}}} | title = {{{title4|}}} | vicegovernor = {{{vicegovernor4|}}} | vicepresident = {{{vicepresident4|}}} | vicepremier = {{{vicepremier4|}}} | viceprimeminister = {{{viceprimeminister4|}}} | party = {{{party|}}} | prior_term = {{{prior_term4|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname5|}}} | 1namedata = {{{1namedata5|}}} | 2blankname = {{{2blankname5|}}} | 2namedata = {{{2namedata5|}}} | 3blankname = {{{3blankname5|}}} | 3namedata = {{{3namedata5|}}} | 4blankname = {{{4blankname5|}}} | 4namedata = {{{4namedata5|}}} | 5blankname = {{{5blankname5|}}} | 5namedata = {{{5namedata5|}}} | alongside = {{{alongside5|}}} | ambassador_from = {{{ambassador_from5|}}} | appointer = {{#if: {{{appointer5|}}} | {{{appointer5}}} | {{{appointed5|}}} }} | assembly = {{{assembly5|}}} | assuming = {{{assuming5|}}} | chancellor = {{{chancellor5|}}} | co-leader = {{{co-leader5|}}} | constituency_{{#if:{{{constituency_AM5|}}}|AM|MP}} = {{#if: {{{constituency_AM5|}}} | {{{constituency_AM5}}} | {{{constituency_MP5|}}} }} | constituency = {{{constituency5|}}} | convocation = {{{convocation5|}}} | country = {{{country5|}}} | deputy = {{{deputy5|}}} | district = {{{district5|}}} | firstminister = {{{firstminister5|}}} | governor-general = {{{governor-general5|}}} | governor_general = {{{governor_general5|}}} | governor = {{{governor5|}}} | jr/sr = {{{jr/sr5|}}} | jr/sr and state = {{{jr/sr and state5|}}} | leader = {{{leader5|}}} | legislature = {{{legislature5|}}} | lieutenant_governor = {{{lieutenant_governor5|}}} | lieutenant = {{{lieutenant5|}}} | minister_from = {{{minister_from5|}}} | minority_floor_leader = {{{minority_floor_leader5|}}} | majority_floor_leader = {{{majority_floor_leader5|}}} | majority_leader = {{#if: {{{majorityleader5|}}} | {{{majorityleader5}}} | {{{majority_leader5|}}} }} | majority = {{{majority5|}}} | minister = {{{minister5|}}} | minority_leader = {{#if: {{{minorityleader5|}}} | {{{minorityleader5}}} | {{{minority_leader5|}}} }} | monarch = {{{monarch5|}}} | nominator = {{{nominator5|}}} | office = {{{office5|}}} | order = {{{order5|}}} | parliament = {{{parliament5|}}} | parliamentarygroup = {{{parliamentarygroup5|}}} | predecessor = {{{predecessor5|}}} | preceding = {{{preceding5|}}} | preceded = {{{preceded5|}}} | premier = {{{premier5|}}} | president = {{{president5|}}} | primeminister = {{{primeminister5|}}} | riding = {{{riding5|}}} | state_assembly = {{{state_assembly5|}}} | state_delegate = {{{state_delegate5|}}} | state_house = {{{state_house5|}}} | state_legislature = {{{state_legislature5|}}} | state_senate = {{{state_senate5|}}} | state = {{{state5|}}} | status = {{{status5|}}} | subterm = {{nobold|{{{subterm5|}}}}} | suboffice = {{{suboffice5|}}} | succeeded = {{{succeeded5|}}} | succeeding = {{{succeeding5|}}} | successor = {{{successor5|}}} | taoiseach = {{{taoiseach5|}}} | termlabel = {{{term_label5|{{{termlabel5|In office}}}}}} | termend = {{#if:{{{termend5|}}}|{{{termend5}}}|{{{term_end5|}}}}} | termstart = {{#if:{{{termstart5|}}}|{{{termstart5}}}|{{{term_start5|}}}}} | term = {{{term5|}}} | title = {{{title5|}}} | vicegovernor = {{{vicegovernor5|}}} | vicepresident = {{{vicepresident5|}}} | vicepremier = {{{vicepremier5|}}} | viceprimeminister = {{{viceprimeminister5|}}} | party = {{{party|}}} | prior_term = {{{prior_term5|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname6|}}} | 1namedata = {{{1namedata6|}}} | 2blankname = {{{2blankname6|}}} | 2namedata = {{{2namedata6|}}} | 3blankname = {{{3blankname6|}}} | 3namedata = {{{3namedata6|}}} | 4blankname = {{{4blankname6|}}} | 4namedata = {{{4namedata6|}}} | 5blankname = {{{5blankname6|}}} | 5namedata = {{{5namedata6|}}} | alongside = {{{alongside6|}}} | ambassador_from = {{{ambassador_from6|}}} | appointer = {{#if: {{{appointer6|}}} | {{{appointer6}}} | {{{appointed6|}}} }} | assembly = {{{assembly6|}}} | assuming = {{{assuming6|}}} | chancellor = {{{chancellor6|}}} | co-leader = {{{co-leader6|}}} | constituency_{{#if:{{{constituency_AM6|}}}|AM|MP}} = {{#if: {{{constituency_AM6|}}} | {{{constituency_AM6}}} | {{{constituency_MP6|}}} }} | constituency = {{{constituency6|}}} | convocation = {{{convocation6|}}} | country = {{{country6|}}} | deputy = {{{deputy6|}}} | district = {{{district6|}}} | firstminister = {{{firstminister6|}}} | governor-general = {{{governor-general6|}}} | governor_general = {{{governor_general6|}}} | governor = {{{governor6|}}} | jr/sr = {{{jr/sr6|}}} | jr/sr and state = {{{jr/sr and state6|}}} | leader = {{{leader6|}}} | legislature = {{{legislature6|}}} | lieutenant_governor = {{{lieutenant_governor6|}}} | lieutenant = {{{lieutenant6|}}} | minority_floor_leader = {{{minority_floor_leader6|}}} | minister_from = {{{minister_from6|}}} | majority_floor_leader = {{{majority_floor_leader6|}}} | majority_leader = {{#if: {{{majorityleader6|}}} | {{{majorityleader6}}} | {{{majority_leader6|}}} }} | majority = {{{majority6|}}} | minister = {{{minister6|}}} | minority_leader = {{#if: {{{minorityleader6|}}} | {{{minorityleader6}}} | {{{minority_leader6|}}} }} | monarch = {{{monarch6|}}} | nominator = {{{nominator6|}}} | office = {{{office6|}}} | order = {{{order6|}}} | parliament = {{{parliament6|}}} | parliamentarygroup = {{{parliamentarygroup6|}}} | predecessor = {{{predecessor6|}}} | preceding = {{{preceding6|}}} | preceded = {{{preceded6|}}} | premier = {{{premier6|}}} | president = {{{president6|}}} | primeminister = {{{primeminister6|}}} | riding = {{{riding6|}}} | state_assembly = {{{state_assembly6|}}} | state_delegate = {{{state_delegate6|}}} | state_house = {{{state_house6|}}} | state_legislature = {{{state_legislature6|}}} | state_senate = {{{state_senate6|}}} | state = {{{state6|}}} | status = {{{status6|}}} | subterm = {{nobold|{{{subterm6|}}}}} | suboffice = {{{suboffice6|}}} | succeeded = {{{succeeded6|}}} | succeeding = {{{succeeding6|}}} | successor = {{{successor6|}}} | taoiseach = {{{taoiseach6|}}} | termlabel = {{{term_label6|{{{termlabel6|In office}}}}}} | termend = {{#if:{{{termend6|}}}|{{{termend6}}}|{{{term_end6|}}}}} | termstart = {{#if:{{{termstart6|}}}|{{{termstart6}}}|{{{term_start6|}}}}} | term = {{{term6|}}} | title = {{{title6|}}} | vicegovernor = {{{vicegovernor6|}}} | vicepresident = {{{vicepresident6|}}} | vicepremier = {{{vicepremier6|}}} | viceprimeminister = {{{viceprimeminister6|}}} | party = {{{party|}}} | prior_term = {{{prior_term6|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname7|}}} | 1namedata = {{{1namedata7|}}} | 2blankname = {{{2blankname7|}}} | 2namedata = {{{2namedata7|}}} | 3blankname = {{{3blankname7|}}} | 3namedata = {{{3namedata7|}}} | 4blankname = {{{4blankname7|}}} | 4namedata = {{{4namedata7|}}} | 5blankname = {{{5blankname7|}}} | 5namedata = {{{5namedata7|}}} | alongside = {{{alongside7|}}} | ambassador_from = {{{ambassador_from7|}}} | appointer = {{#if: {{{appointer7|}}} | {{{appointer7}}} | {{{appointed7|}}} }} | assembly = {{{assembly7|}}} | assuming = {{{assuming7|}}} | chancellor = {{{chancellor7|}}} | co-leader = {{{co-leader7|}}} | constituency_{{#if:{{{constituency_AM7|}}}|AM|MP}} = {{#if: {{{constituency_AM7|}}} | {{{constituency_AM7}}} | {{{constituency_MP7|}}} }} | constituency = {{{constituency7|}}} | convocation = {{{convocation7|}}} | country = {{{country7|}}} | deputy = {{{deputy7|}}} | district = {{{district7|}}} | firstminister = {{{firstminister7|}}} | governor-general = {{{governor-general7|}}} | governor_general = {{{governor_general7|}}} | governor = {{{governor7|}}} | jr/sr = {{{jr/sr7|}}} | jr/sr and state = {{{jr/sr and state7|}}} | leader = {{{leader7|}}} | legislature = {{{legislature7|}}} | lieutenant_governor = {{{lieutenant_governor7|}}} | lieutenant = {{{lieutenant7|}}} | minister_from = {{{minister_from7|}}} | minority_floor_leader = {{{minority_floor_leader7|}}} | majority_floor_leader = {{{majority_floor_leader7|}}} | majority_leader = {{#if: {{{majorityleader7|}}} | {{{majorityleader7}}} | {{{majority_leader7|}}} }} | majority = {{{majority7|}}} | minister = {{{minister7|}}} | minority_leader = {{#if: {{{minorityleader7|}}} | {{{minorityleader7}}} | {{{minority_leader7|}}} }} | monarch = {{{monarch7|}}} | nominator = {{{nominator7|}}} | office = {{{office7|}}} | order = {{{order7|}}} | parliament = {{{parliament7|}}} | parliamentarygroup = {{{parliamentarygroup7|}}} | predecessor = {{{predecessor7|}}} | preceding = {{{preceding7|}}} | preceded = {{{preceded7|}}} | premier = {{{premier7|}}} | president = {{{president7|}}} | primeminister = {{{primeminister7|}}} | riding = {{{riding7|}}} | state_assembly = {{{state_assembly7|}}} | state_delegate = {{{state_delegate7|}}} | state_house = {{{state_house7|}}} | state_legislature = {{{state_legislature7|}}} | state_senate = {{{state_senate7|}}} | state = {{{state7|}}} | status = {{{status7|}}} | subterm = {{nobold|{{{subterm7|}}}}} | suboffice = {{{suboffice7|}}} | succeeded = {{{succeeded7|}}} | succeeding = {{{succeeding7|}}} | successor = {{{successor7|}}} | taoiseach = {{{taoiseach7|}}} | termlabel = {{{term_label7|{{{termlabel7|In office}}}}}} | termend = {{#if:{{{termend7|}}}|{{{termend7}}}|{{{term_end7|}}}}} | termstart = {{#if:{{{termstart7|}}}|{{{termstart7}}}|{{{term_start7|}}}}} | term = {{{term7|}}} | title = {{{title7|}}} | vicegovernor = {{{vicegovernor7|}}} | vicepresident = {{{vicepresident7|}}} | vicepremier = {{{vicepremier7|}}} | viceprimeminister = {{{viceprimeminister7|}}} | party = {{{party|}}} | prior_term = {{{prior_term7|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname8|}}} | 1namedata = {{{1namedata8|}}} | 2blankname = {{{2blankname8|}}} | 2namedata = {{{2namedata8|}}} | 3blankname = {{{3blankname8|}}} | 3namedata = {{{3namedata8|}}} | 4blankname = {{{4blankname8|}}} | 4namedata = {{{4namedata8|}}} | 5blankname = {{{5blankname8|}}} | 5namedata = {{{5namedata8|}}} | alongside = {{{alongside8|}}} | ambassador_from = {{{ambassador_from8|}}} | appointer = {{#if: {{{appointer8|}}} | {{{appointer8}}} | {{{appointed8|}}} }} | assembly = {{{assembly8|}}} | assuming = {{{assuming8|}}} | chancellor = {{{chancellor8|}}} | co-leader = {{{co-leader8|}}} | constituency_{{#if:{{{constituency_AM8|}}}|AM|MP}} = {{#if: {{{constituency_AM8|}}} | {{{constituency_AM8}}} | {{{constituency_MP8|}}} }} | constituency = {{{constituency8|}}} | convocation = {{{convocation8|}}} | country = {{{country8|}}} | deputy = {{{deputy8|}}} | district = {{{district8|}}} | firstminister = {{{firstminister8|}}} | governor-general = {{{governor-general8|}}} | governor_general = {{{governor_general8|}}} | governor = {{{governor8|}}} | jr/sr = {{{jr/sr8|}}} | jr/sr and state = {{{jr/sr and state8|}}} | leader = {{{leader8|}}} | legislature = {{{legislature8|}}} | lieutenant_governor = {{{lieutenant_governor8|}}} | lieutenant = {{{lieutenant8|}}} | minister_from = {{{minister_from8|}}} | minority_floor_leader = {{{minority_floor_leader8|}}} | majority_floor_leader = {{{majority_floor_leader8|}}} | majority_leader = {{#if: {{{majorityleader8|}}} | {{{majorityleader8}}} | {{{majority_leader8|}}} }} | majority = {{{majority8|}}} | minister = {{{minister8|}}} | minority_leader = {{#if: {{{minorityleader8|}}} | {{{minorityleader8}}} | {{{minority_leader8|}}} }} | monarch = {{{monarch8|}}} | nominator = {{{nominator8|}}} | office = {{{office8|}}} | order = {{{order8|}}} | parliament = {{{parliament8|}}} | parliamentarygroup = {{{parliamentarygroup8|}}} | predecessor = {{{predecessor8|}}} | preceding = {{{preceding8|}}} | preceded = {{{preceded8|}}} | premier = {{{premier8|}}} | president = {{{president8|}}} | primeminister = {{{primeminister8|}}} | riding = {{{riding8|}}} | state_assembly = {{{state_assembly8|}}} | state_delegate = {{{state_delegate8|}}} | state_house = {{{state_house8|}}} | state_legislature = {{{state_legislature8|}}} | state_senate = {{{state_senate8|}}} | state = {{{state8|}}} | status = {{{status8|}}} | subterm = {{nobold|{{{subterm8|}}}}} | suboffice = {{{suboffice8|}}} | succeeded = {{{succeeded8|}}} | succeeding = {{{succeeding8|}}} | successor = {{{successor8|}}} | taoiseach = {{{taoiseach8|}}} | termlabel = {{{term_label8|{{{termlabel8|In office}}}}}} | termend = {{#if:{{{termend8|}}}|{{{termend8}}}|{{{term_end8|}}}}} | termstart = {{#if:{{{termstart8|}}}|{{{termstart8}}}|{{{term_start8|}}}}} | term = {{{term8|}}} | title = {{{title8|}}} | vicegovernor = {{{vicegovernor8|}}} | vicepresident = {{{vicepresident8|}}} | vicepremier = {{{vicepremier8|}}} | viceprimeminister = {{{viceprimeminister8|}}} | party = {{{party|}}} | prior_term = {{{prior_term8|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname9|}}} | 1namedata = {{{1namedata9|}}} | 2blankname = {{{2blankname9|}}} | 2namedata = {{{2namedata9|}}} | 3blankname = {{{3blankname9|}}} | 3namedata = {{{3namedata9|}}} | 4blankname = {{{4blankname9|}}} | 4namedata = {{{4namedata9|}}} | 5blankname = {{{5blankname9|}}} | 5namedata = {{{5namedata9|}}} | alongside = {{{alongside9|}}} | ambassador_from = {{{ambassador_from9|}}} | appointer = {{#if: {{{appointer9|}}} | {{{appointer9}}} | {{{appointed9|}}} }} | assembly = {{{assembly9|}}} | assuming = {{{assuming9|}}} | chancellor = {{{chancellor9|}}} | co-leader = {{{co-leader9|}}} | constituency_{{#if:{{{constituency_AM9|}}}|AM|MP}} = {{#if: {{{constituency_AM9|}}} | {{{constituency_AM9}}} | {{{constituency_MP9|}}} }} | constituency = {{{constituency9|}}} | convocation = {{{convocation9|}}} | country = {{{country9|}}} | deputy = {{{deputy9|}}} | district = {{{district9|}}} | firstminister = {{{firstminister9|}}} | governor-general = {{{governor-general9|}}} | governor_general = {{{governor_general9|}}} | governor = {{{governor9|}}} | jr/sr = {{{jr/sr9|}}} | jr/sr and state = {{{jr/sr and state9|}}} | leader = {{{leader9|}}} | legislature = {{{legislature9|}}} | lieutenant_governor = {{{lieutenant_governor9|}}} | lieutenant = {{{lieutenant9|}}} | minister_from = {{{minister_from9|}}} | minority_floor_leader = {{{minority_floor_leader9|}}} | majority_floor_leader = {{{majority_floor_leader9|}}} | majority_leader = {{#if: {{{majorityleader9|}}} | {{{majorityleader9}}} | {{{majority_leader9|}}} }} | majority = {{{majority9|}}} | minister = {{{minister9|}}} | minority_leader = {{#if: {{{minorityleader9|}}} | {{{minorityleader9}}} | {{{minority_leader9|}}} }} | monarch = {{{monarch9|}}} | nominator = {{{nominator9|}}} | office = {{{office9|}}} | order = {{{order9|}}} | parliament = {{{parliament9|}}} | parliamentarygroup = {{{parliamentarygroup9|}}} | predecessor = {{{predecessor9|}}} | preceding = {{{preceding9|}}} | preceded = {{{preceded9|}}} | premier = {{{premier9|}}} | president = {{{president9|}}} | primeminister = {{{primeminister9|}}} | riding = {{{riding9|}}} | state_assembly = {{{state_assembly9|}}} | state_delegate = {{{state_delegate9|}}} | state_house = {{{state_house9|}}} | state_legislature = {{{state_legislature9|}}} | state_senate = {{{state_senate9|}}} | state = {{{state9|}}} | status = {{{status9|}}} | subterm = {{nobold|{{{subterm9|}}}}} | suboffice = {{{suboffice9|}}} | succeeded = {{{succeeded9|}}} | succeeding = {{{succeeding9|}}} | successor = {{{successor9|}}} | taoiseach = {{{taoiseach9|}}} | termlabel = {{{term_label9|{{{termlabel9|In office}}}}}} | termend = {{#if:{{{termend9|}}}|{{{termend9}}}|{{{term_end9|}}}}} | termstart = {{#if:{{{termstart9|}}}|{{{termstart9}}}|{{{term_start9|}}}}} | term = {{{term9|}}} | title = {{{title9|}}} | vicegovernor = {{{vicegovernor9|}}} | vicepresident = {{{vicepresident9|}}} | vicepremier = {{{vicepremier9|}}} | viceprimeminister = {{{viceprimeminister9|}}} | party = {{{party|}}} | prior_term = {{{prior_term9|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname10|}}} | 1namedata = {{{1namedata10|}}} | 2blankname = {{{2blankname10|}}} | 2namedata = {{{2namedata10|}}} | 3blankname = {{{3blankname10|}}} | 3namedata = {{{3namedata10|}}} | 4blankname = {{{4blankname10|}}} | 4namedata = {{{4namedata10|}}} | 5blankname = {{{5blankname10|}}} | 5namedata = {{{5namedata10|}}} | alongside = {{{alongside10|}}} | ambassador_from = {{{ambassador_from10|}}} | appointer = {{#if: {{{appointer10|}}} | {{{appointer10}}} | {{{appointed10|}}} }} | assembly = {{{assembly10|}}} | assuming = {{{assuming10|}}} | chancellor = {{{chancellor10|}}} | co-leader = {{{co-leader10|}}} | constituency_{{#if:{{{constituency_AM10|}}}|AM|MP}} = {{#if: {{{constituency_AM10|}}} | {{{constituency_AM10}}} | {{{constituency_MP10|}}} }} | constituency = {{{constituency10|}}} | convocation = {{{convocation10|}}} | country = {{{country10|}}} | deputy = {{{deputy10|}}} | district = {{{district10|}}} | firstminister = {{{firstminister10|}}} | governor-general = {{{governor-general10|}}} | governor_general = {{{governor_general10|}}} | governor = {{{governor10|}}} | jr/sr = {{{jr/sr10|}}} | jr/sr and state = {{{jr/sr and state10|}}} | leader = {{{leader10|}}} | legislature = {{{legislature10|}}} | lieutenant_governor = {{{lieutenant_governor10|}}} | lieutenant = {{{lieutenant10|}}} | minister_from = {{{minister_from10|}}} | minority_floor_leader = {{{minority_floor_leader10|}}} | majority_floor_leader = {{{majority_floor_leader10|}}} | majority_leader = {{#if: {{{majorityleader10|}}} | {{{majorityleader10}}} | {{{majority_leader10|}}} }} | majority = {{{majority10|}}} | minister = {{{minister10|}}} | minority_leader = {{#if: {{{minorityleader10|}}} | {{{minorityleader10}}} | {{{minority_leader10|}}} }} | monarch = {{{monarch10|}}} | nominator = {{{nominator10|}}} | office = {{{office10|}}} | order = {{{order10|}}} | parliament = {{{parliament10|}}} | parliamentarygroup = {{{parliamentarygroup10|}}} | predecessor = {{{predecessor10|}}} | preceding = {{{preceding10|}}} | preceded = {{{preceded10|}}} | premier = {{{premier10|}}} | president = {{{president10|}}} | primeminister = {{{primeminister10|}}} | riding = {{{riding10|}}} | state_assembly = {{{state_assembly10|}}} | state_delegate = {{{state_delegate10|}}} | state_house = {{{state_house10|}}} | state_legislature = {{{state_legislature10|}}} | state_senate = {{{state_senate10|}}} | state = {{{state10|}}} | status = {{{status10|}}} | subterm = {{nobold|{{{subterm10|}}}}} | suboffice = {{{suboffice10|}}} | succeeded = {{{succeeded10|}}} | succeeding = {{{succeeding10|}}} | successor = {{{successor10|}}} | taoiseach = {{{taoiseach10|}}} | termlabel = {{{term_label10|{{{termlabel10|In office}}}}}} | termend = {{#if:{{{termend10|}}}|{{{termend10}}}|{{{term_end10|}}}}} | termstart = {{#if:{{{termstart10|}}}|{{{termstart10}}}|{{{term_start10|}}}}} | term = {{{term10|}}} | title = {{{title10|}}} | vicegovernor = {{{vicegovernor10|}}} | vicepresident = {{{vicepresident10|}}} | vicepremier = {{{vicepremier10|}}} | viceprimeminister = {{{viceprimeminister10|}}} | party = {{{party|}}} | prior_term = {{{prior_term10|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname11|}}} | 1namedata = {{{1namedata11|}}} | 2blankname = {{{2blankname11|}}} | 2namedata = {{{2namedata11|}}} | 3blankname = {{{3blankname11|}}} | 3namedata = {{{3namedata11|}}} | 4blankname = {{{4blankname11|}}} | 4namedata = {{{4namedata11|}}} | 5blankname = {{{5blankname11|}}} | 5namedata = {{{5namedata11|}}} | alongside = {{{alongside11|}}} | ambassador_from = {{{ambassador_from11|}}} | appointer = {{#if: {{{appointer11|}}} | {{{appointer11}}} | {{{appointed11|}}} }} | assembly = {{{assembly11|}}} | assuming = {{{assuming11|}}} | chancellor = {{{chancellor11|}}} | co-leader = {{{co-leader11|}}} | constituency_{{#if:{{{constituency_AM11|}}}|AM|MP}} = {{#if: {{{constituency_AM11|}}} | {{{constituency_AM11}}} | {{{constituency_MP11|}}} }} | constituency = {{{constituency11|}}} | convocation = {{{convocation11|}}} | country = {{{country11|}}} | deputy = {{{deputy11|}}} | district = {{{district11|}}} | firstminister = {{{firstminister11|}}} | governor-general = {{{governor-general11|}}} | governor_general = {{{governor_general11|}}} | governor = {{{governor11|}}} | jr/sr = {{{jr/sr11|}}} | jr/sr and state = {{{jr/sr and state11|}}} | leader = {{{leader11|}}} | legislature = {{{legislature11|}}} | lieutenant_governor = {{{lieutenant_governor11|}}} | lieutenant = {{{lieutenant11|}}} | minister_from = {{{minister_from11|}}} | minority_floor_leader = {{{minority_floor_leader11|}}} | majority_floor_leader = {{{majority_floor_leader11|}}} | majority_leader = {{#if: {{{majorityleader11|}}} | {{{majorityleader11}}} | {{{majority_leader11|}}} }} | majority = {{{majority11|}}} | minister = {{{minister11|}}} | minority_leader = {{#if: {{{minorityleader11|}}} | {{{minorityleader11}}} | {{{minority_leader11|}}} }} | monarch = {{{monarch11|}}} | nominator = {{{nominator11|}}} | office = {{{office11|}}} | order = {{{order11|}}} | parliament = {{{parliament11|}}} | parliamentarygroup = {{{parliamentarygroup11|}}} | predecessor = {{{predecessor11|}}} | preceding = {{{preceding11|}}} | preceded = {{{preceded11|}}} | premier = {{{premier11|}}} | president = {{{president11|}}} | primeminister = {{{primeminister11|}}} | riding = {{{riding11|}}} | state_assembly = {{{state_assembly11|}}} | state_delegate = {{{state_delegate11|}}} | state_house = {{{state_house11|}}} | state_legislature = {{{state_legislature11|}}} | state_senate = {{{state_senate11|}}} | state = {{{state11|}}} | status = {{{status11|}}} | subterm = {{nobold|{{{subterm11|}}}}} | suboffice = {{{suboffice11|}}} | succeeded = {{{succeeded11|}}} | succeeding = {{{succeeding11|}}} | successor = {{{successor11|}}} | taoiseach = {{{taoiseach11|}}} | termlabel = {{{term_label11|{{{termlabel11|In office}}}}}} | termend = {{#if:{{{termend11|}}}|{{{termend11}}}|{{{term_end11|}}}}} | termstart = {{#if:{{{termstart11|}}}|{{{termstart11}}}|{{{term_start11|}}}}} | term = {{{term11|}}} | title = {{{title11|}}} | vicegovernor = {{{vicegovernor11|}}} | vicepresident = {{{vicepresident11|}}} | vicepremier = {{{vicepremier11|}}} | viceprimeminister = {{{viceprimeminister11|}}} | party = {{{party|}}} | prior_term = {{{prior_term11|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname12|}}} | 1namedata = {{{1namedata12|}}} | 2blankname = {{{2blankname12|}}} | 2namedata = {{{2namedata12|}}} | 3blankname = {{{3blankname12|}}} | 3namedata = {{{3namedata12|}}} | 4blankname = {{{4blankname12|}}} | 4namedata = {{{4namedata12|}}} | 5blankname = {{{5blankname12|}}} | 5namedata = {{{5namedata12|}}} | alongside = {{{alongside12|}}} | ambassador_from = {{{ambassador_from12|}}} | appointer = {{#if: {{{appointer12|}}} | {{{appointer12}}} | {{{appointed12|}}} }} | assembly = {{{assembly12|}}} | assuming = {{{assuming12|}}} | chancellor = {{{chancellor12|}}} | co-leader = {{{co-leader12|}}} | constituency_{{#if:{{{constituency_AM12|}}}|AM|MP}} = {{#if: {{{constituency_AM12|}}} | {{{constituency_AM12}}} | {{{constituency_MP12|}}} }} | constituency = {{{constituency12|}}} | convocation = {{{convocation12|}}} | country = {{{country12|}}} | deputy = {{{deputy12|}}} | district = {{{district12|}}} | firstminister = {{{firstminister12|}}} | governor-general = {{{governor-general12|}}} | governor_general = {{{governor_general12|}}} | governor = {{{governor12|}}} | jr/sr = {{{jr/sr12|}}} | jr/sr and state = {{{jr/sr and state12|}}} | leader = {{{leader12|}}} | legislature = {{{legislature12|}}} | lieutenant_governor = {{{lieutenant_governor12|}}} | lieutenant = {{{lieutenant12|}}} | minister_from = {{{minister_from12|}}} | minority_floor_leader = {{{minority_floor_leader12|}}} | majority_floor_leader = {{{majority_floor_leader12|}}} | majority_leader = {{#if: {{{majorityleader12|}}} | {{{majorityleader12}}} | {{{majority_leader12|}}} }} | majority = {{{majority12|}}} | minister = {{{minister12|}}} | minority_leader = {{#if: {{{minorityleader12|}}} | {{{minorityleader12}}} | {{{minority_leader12|}}} }} | monarch = {{{monarch12|}}} | nominator = {{{nominator12|}}} | office = {{{office12|}}} | order = {{{order12|}}} | parliament = {{{parliament12|}}} | parliamentarygroup = {{{parliamentarygroup12|}}} | predecessor = {{{predecessor12|}}} | preceding = {{{preceding12|}}} | preceded = {{{preceded12|}}} | premier = {{{premier12|}}} | president = {{{president12|}}} | primeminister = {{{primeminister12|}}} | riding = {{{riding12|}}} | state_assembly = {{{state_assembly12|}}} | state_delegate = {{{state_delegate12|}}} | state_house = {{{state_house12|}}} | state_legislature = {{{state_legislature12|}}} | state_senate = {{{state_senate12|}}} | state = {{{state12|}}} | status = {{{status12|}}} | subterm = {{nobold|{{{subterm12|}}}}} | suboffice = {{{suboffice12|}}} | succeeded = {{{succeeded12|}}} | succeeding = {{{succeeding12|}}} | successor = {{{successor12|}}} | taoiseach = {{{taoiseach12|}}} | termlabel = {{{term_label12|{{{termlabel12|In office}}}}}} | termend = {{#if:{{{termend12|}}}|{{{termend12}}}|{{{term_end12|}}}}} | termstart = {{#if:{{{termstart12|}}}|{{{termstart12}}}|{{{term_start12|}}}}} | term = {{{term12|}}} | title = {{{title12|}}} | vicegovernor = {{{vicegovernor12|}}} | vicepresident = {{{vicepresident12|}}} | vicepremier = {{{vicepremier12|}}} | viceprimeminister = {{{viceprimeminister12|}}} | party = {{{party|}}} | prior_term = {{{prior_term12|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname13|}}} | 1namedata = {{{1namedata13|}}} | 2blankname = {{{2blankname13|}}} | 2namedata = {{{2namedata13|}}} | 3blankname = {{{3blankname13|}}} | 3namedata = {{{3namedata13|}}} | 4blankname = {{{4blankname13|}}} | 4namedata = {{{4namedata13|}}} | 5blankname = {{{5blankname13|}}} | 5namedata = {{{5namedata13|}}} | alongside = {{{alongside13|}}} | ambassador_from = {{{ambassador_from13|}}} | appointer = {{#if: {{{appointer13|}}} | {{{appointer13}}} | {{{appointed13|}}} }} | assembly = {{{assembly13|}}} | assuming = {{{assuming13|}}} | chancellor = {{{chancellor13|}}} | co-leader = {{{co-leader13|}}} | constituency_{{#if:{{{constituency_AM13|}}}|AM|MP}} = {{#if: {{{constituency_AM13|}}} | {{{constituency_AM13}}} | {{{constituency_MP13|}}} }} | constituency = {{{constituency13|}}} | convocation = {{{convocation13|}}} | country = {{{country13|}}} | deputy = {{{deputy13|}}} | district = {{{district13|}}} | firstminister = {{{firstminister13|}}} | governor-general = {{{governor-general13|}}} | governor_general = {{{governor_general13|}}} | governor = {{{governor13|}}} | jr/sr = {{{jr/sr13|}}} | jr/sr and state = {{{jr/sr and state13|}}} | leader = {{{leader13|}}} | legislature = {{{legislature13|}}} | lieutenant_governor = {{{lieutenant_governor13|}}} | lieutenant = {{{lieutenant13|}}} | minister_from = {{{minister_from13|}}} | minority_floor_leader = {{{minority_floor_leader13|}}} | majority_floor_leader = {{{majority_floor_leader13|}}} | majority_leader = {{#if: {{{majorityleader13|}}} | {{{majorityleader13}}} | {{{majority_leader13|}}} }} | majority = {{{majority13|}}} | minister = {{{minister13|}}} | minority_leader = {{#if: {{{minorityleader13|}}} | {{{minorityleader13}}} | {{{minority_leader13|}}} }} | monarch = {{{monarch13|}}} | nominator = {{{nominator13|}}} | office = {{{office13|}}} | order = {{{order13|}}} | parliament = {{{parliament13|}}} | parliamentarygroup = {{{parliamentarygroup13|}}} | predecessor = {{{predecessor13|}}} | preceding = {{{preceding13|}}} | preceded = {{{preceded13|}}} | premier = {{{premier13|}}} | president = {{{president13|}}} | primeminister = {{{primeminister13|}}} | riding = {{{riding13|}}} | state_assembly = {{{state_assembly13|}}} | state_delegate = {{{state_delegate13|}}} | state_house = {{{state_house13|}}} | state_legislature = {{{state_legislature13|}}} | state_senate = {{{state_senate13|}}} | state = {{{state13|}}} | status = {{{status13|}}} | subterm = {{nobold|{{{subterm13|}}}}} | suboffice = {{{suboffice13|}}} | succeeded = {{{succeeded13|}}} | succeeding = {{{succeeding13|}}} | successor = {{{successor13|}}} | taoiseach = {{{taoiseach13|}}} | termlabel = {{{term_label13|{{{termlabel13|In office}}}}}} | termend = {{#if:{{{termend13|}}}|{{{termend13}}}|{{{term_end13|}}}}} | termstart = {{#if:{{{termstart13|}}}|{{{termstart13}}}|{{{term_start13|}}}}} | term = {{{term13|}}} | title = {{{title13|}}} | vicegovernor = {{{vicegovernor13|}}} | vicepresident = {{{vicepresident13|}}} | vicepremier = {{{vicepremier13|}}} | viceprimeminister = {{{viceprimeminister13|}}} | party = {{{party|}}} | prior_term = {{{prior_term13|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname14|}}} | 1namedata = {{{1namedata14|}}} | 2blankname = {{{2blankname14|}}} | 2namedata = {{{2namedata14|}}} | 3blankname = {{{3blankname14|}}} | 3namedata = {{{3namedata14|}}} | 4blankname = {{{4blankname14|}}} | 4namedata = {{{4namedata14|}}} | 5blankname = {{{5blankname14|}}} | 5namedata = {{{5namedata14|}}} | alongside = {{{alongside14|}}} | ambassador_from = {{{ambassador_from14|}}} | appointer = {{#if: {{{appointer14|}}} | {{{appointer14}}} | {{{appointed14|}}} }} | assembly = {{{assembly14|}}} | assuming = {{{assuming14|}}} | chancellor = {{{chancellor14|}}} | co-leader = {{{co-leader14|}}} | constituency_{{#if:{{{constituency_AM14|}}}|AM|MP}} = {{#if: {{{constituency_AM14|}}} | {{{constituency_AM14}}} | {{{constituency_MP14|}}} }} | constituency = {{{constituency14|}}} | convocation = {{{convocation14|}}} | country = {{{country14|}}} | deputy = {{{deputy14|}}} | district = {{{district14|}}} | firstminister = {{{firstminister14|}}} | governor-general = {{{governor-general14|}}} | governor_general = {{{governor_general14|}}} | governor = {{{governor14|}}} | jr/sr = {{{jr/sr14|}}} | jr/sr and state = {{{jr/sr and state14|}}} | leader = {{{leader14|}}} | legislature = {{{legislature14|}}} | lieutenant_governor = {{{lieutenant_governor14|}}} | lieutenant = {{{lieutenant14|}}} | minister_from = {{{minister_from14|}}} | minority_floor_leader = {{{minority_floor_leader14|}}} | majority_floor_leader = {{{majority_floor_leader14|}}} | majority_leader = {{#if: {{{majorityleader14|}}} | {{{majorityleader14}}} | {{{majority_leader14|}}} }} | majority = {{{majority14|}}} | minister = {{{minister14|}}} | minority_leader = {{#if: {{{minorityleader14|}}} | {{{minorityleader14}}} | {{{minority_leader14|}}} }} | monarch = {{{monarch14|}}} | nominator = {{{nominator14|}}} | office = {{{office14|}}} | order = {{{order14|}}} | parliament = {{{parliament14|}}} | parliamentarygroup = {{{parliamentarygroup14|}}} | predecessor = {{{predecessor14|}}} | preceding = {{{preceding14|}}} | preceded = {{{preceded14|}}} | premier = {{{premier14|}}} | president = {{{president14|}}} | primeminister = {{{primeminister14|}}} | riding = {{{riding14|}}} | state_assembly = {{{state_assembly14|}}} | state_delegate = {{{state_delegate14|}}} | state_house = {{{state_house14|}}} | state_legislature = {{{state_legislature14|}}} | state_senate = {{{state_senate14|}}} | state = {{{state14|}}} | status = {{{status14|}}} | subterm = {{nobold|{{{subterm14|}}}}} | suboffice = {{{suboffice14|}}} | succeeded = {{{succeeded14|}}} | succeeding = {{{succeeding14|}}} | successor = {{{successor14|}}} | taoiseach = {{{taoiseach14|}}} | termlabel = {{{term_label14|{{{termlabel14|In office}}}}}} | termend = {{#if:{{{termend14|}}}|{{{termend14}}}|{{{term_end14|}}}}} | termstart = {{#if:{{{termstart14|}}}|{{{termstart14}}}|{{{term_start14|}}}}} | term = {{{term14|}}} | title = {{{title14|}}} | vicegovernor = {{{vicegovernor14|}}} | vicepresident = {{{vicepresident14|}}} | vicepremier = {{{vicepremier14|}}} | viceprimeminister = {{{viceprimeminister14|}}} | party = {{{party|}}} | prior_term = {{{prior_term14|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname15|}}} | 1namedata = {{{1namedata15|}}} | 2blankname = {{{2blankname15|}}} | 2namedata = {{{2namedata15|}}} | 3blankname = {{{3blankname15|}}} | 3namedata = {{{3namedata15|}}} | 4blankname = {{{4blankname15|}}} | 4namedata = {{{4namedata15|}}} | 5blankname = {{{5blankname15|}}} | 5namedata = {{{5namedata15|}}} | alongside = {{{alongside15|}}} | ambassador_from = {{{ambassador_from15|}}} | appointer = {{#if: {{{appointer15|}}} | {{{appointer15}}} | {{{appointed15|}}} }} | assembly = {{{assembly15|}}} | assuming = {{{assuming15|}}} | chancellor = {{{chancellor15|}}} | co-leader = {{{co-leader15|}}} | constituency_{{#if:{{{constituency_AM15|}}}|AM|MP}} = {{#if: {{{constituency_AM15|}}} | {{{constituency_AM15}}} | {{{constituency_MP15|}}} }} | constituency = {{{constituency15|}}} | convocation = {{{convocation15|}}} | country = {{{country15|}}} | deputy = {{{deputy15|}}} | district = {{{district15|}}} | firstminister = {{{firstminister15|}}} | governor-general = {{{governor-general15|}}} | governor_general = {{{governor_general15|}}} | governor = {{{governor15|}}} | jr/sr = {{{jr/sr15|}}} | jr/sr and state = {{{jr/sr and state15|}}} | leader = {{{leader15|}}} | legislature = {{{legislature15|}}} | lieutenant_governor = {{{lieutenant_governor15|}}} | lieutenant = {{{lieutenant15|}}} | minister_from = {{{minister_from15|}}} | minority_floor_leader = {{{minority_floor_leader15|}}} | majority_floor_leader = {{{majority_floor_leader15|}}} | majority_leader = {{#if: {{{majorityleader15|}}} | {{{majorityleader15}}} | {{{majority_leader15|}}} }} | majority = {{{majority15|}}} | minister = {{{minister15|}}} | minority_leader = {{#if: {{{minorityleader15|}}} | {{{minorityleader15}}} | {{{minority_leader15|}}} }} | monarch = {{{monarch15|}}} | nominator = {{{nominator15|}}} | office = {{{office15|}}} | order = {{{order15|}}} | parliament = {{{parliament15|}}} | parliamentarygroup = {{{parliamentarygroup15|}}} | predecessor = {{{predecessor15|}}} | preceding = {{{preceding15|}}} | preceded = {{{preceded15|}}} | premier = {{{premier15|}}} | president = {{{president15|}}} | primeminister = {{{primeminister15|}}} | riding = {{{riding15|}}} | state_assembly = {{{state_assembly15|}}} | state_delegate = {{{state_delegate15|}}} | state_house = {{{state_house15|}}} | state_legislature = {{{state_legislature15|}}} | state_senate = {{{state_senate15|}}} | state = {{{state15|}}} | status = {{{status15|}}} | subterm = {{nobold|{{{subterm15|}}}}} | suboffice = {{{suboffice15|}}} | succeeded = {{{succeeded15|}}} | succeeding = {{{succeeding15|}}} | successor = {{{successor15|}}} | taoiseach = {{{taoiseach15|}}} | termlabel = {{{term_label15|{{{termlabel15|In office}}}}}} | termend = {{#if:{{{termend15|}}}|{{{termend15}}}|{{{term_end15|}}}}} | termstart = {{#if:{{{termstart15|}}}|{{{termstart15}}}|{{{term_start15|}}}}} | term = {{{term15|}}} | title = {{{title15|}}} | vicegovernor = {{{vicegovernor15|}}} | vicepresident = {{{vicepresident15|}}} | vicepremier = {{{vicepremier15|}}} | viceprimeminister = {{{viceprimeminister15|}}} | party = {{{party|}}} | prior_term = {{{prior_term15|}}} }}}}<!-- -->{{#if:{{{nominee|}}}{{{candidate|}}}|| {{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}} | 1blankname = {{{1blankname16|}}} | 1namedata = {{{1namedata16|}}} | 2blankname = {{{2blankname16|}}} | 2namedata = {{{2namedata16|}}} | 3blankname = {{{3blankname16|}}} | 3namedata = {{{3namedata16|}}} | 4blankname = {{{4blankname16|}}} | 4namedata = {{{4namedata16|}}} | 5blankname = {{{5blankname16|}}} | 5namedata = {{{5namedata16|}}} | alongside = {{{alongside16|}}} | ambassador_from = {{{ambassador_from16|}}} | appointer = {{#if: {{{appointer16|}}} | {{{appointer16}}} | {{{appointed16|}}} }} | assembly = {{{assembly16|}}} | assuming = {{{assuming16|}}} | chancellor = {{{chancellor16|}}} | co-leader = {{{co-leader16|}}} | constituency_{{#if:{{{constituency_AM16|}}}|AM|MP}} = {{#if: {{{constituency_AM16|}}} | {{{constituency_AM16}}} | {{{constituency_MP16|}}} }} | constituency = {{{constituency16|}}} | convocation = {{{convocation16|}}} | country = {{{country16|}}} | deputy = {{{deputy16|}}} | district = {{{district16|}}} | firstminister = {{{firstminister16|}}} | governor-general = {{{governor-general16|}}} | governor_general = {{{governor_general16|}}} | governor = {{{governor16|}}} | jr/sr = {{{jr/sr16|}}} | jr/sr and state = {{{jr/sr and state16|}}} | leader = {{{leader16|}}} | legislature = {{{legislature16|}}} | lieutenant_governor = {{{lieutenant_governor16|}}} | lieutenant = {{{lieutenant16|}}} | minister_from = {{{minister_from16|}}} | minority_floor_leader = {{{minority_floor_leader16|}}} | majority_floor_leader = {{{majority_floor_leader16|}}} | majority_leader = {{#if: {{{majorityleader16|}}} | {{{majorityleader16}}} | {{{majority_leader16|}}} }} | majority = {{{majority16|}}} | minister = {{{minister16|}}} | minority_leader = {{#if: {{{minorityleader16|}}} | {{{minorityleader16}}} | {{{minority_leader16|}}} }} | monarch = {{{monarch16|}}} | nominator = {{{nominator16|}}} | office = {{{office16|}}} | order = {{{order16|}}} | parliament = {{{parliament16|}}} | parliamentarygroup = {{{parliamentarygroup16|}}} | predecessor = {{{predecessor16|}}} | preceding = {{{preceding16|}}} | preceded = {{{preceded16|}}} | premier = {{{premier16|}}} | president = {{{president16|}}} | primeminister = {{{primeminister16|}}} | riding = {{{riding16|}}} | state_assembly = {{{state_assembly16|}}} | state_delegate = {{{state_delegate16|}}} | state_house = {{{state_house16|}}} | state_legislature = {{{state_legislature16|}}} | state_senate = {{{state_senate16|}}} | state = {{{state16|}}} | status = {{{status16|}}} | subterm = {{nobold|{{{subterm16|}}}}} | suboffice = {{{suboffice16|}}} | succeeded = {{{succeeded16|}}} | succeeding = {{{succeeding16|}}} | successor = {{{successor16|}}} | taoiseach = {{{taoiseach16|}}} | termlabel = {{{term_label16|{{{termlabel16|In office}}}}}} | termend = {{#if:{{{termend16|}}}|{{{termend16}}}|{{{term_end16|}}}}} | termstart = {{#if:{{{termstart16|}}}|{{{termstart16}}}|{{{term_start16|}}}}} | term = {{{term16|}}} | title = {{{title16|}}} | vicegovernor = {{{vicegovernor16|}}} | vicepresident = {{{vicepresident16|}}} | vicepremier = {{{vicepremier16|}}} | viceprimeminister = {{{viceprimeminister16|}}} | party = {{{party|}}} | prior_term = {{{prior_term16|}}} }}}} | data2 = {{{module0|}}} <!----------Personal data----------> | header3 = {{#if:{{{pronunciation|}}}{{{birth_name|{{{birthname|}}}}}}{{{birth_date|}}}{{{birth_place|}}}{{{death_date|}}}{{{death_place|}}}{{{resting_place|{{{restingplace|}}}}}}{{{resting_place_coordinates|{{{restingplacecoordinates|}}}}}}{{{citizenship|}}}{{{nationality|}}}{{{party|}}}{{{otherparty|}}}{{{spouse|}}}{{{spouses|}}}{{{partner|}}}{{{relations|}}}{{{children|}}}{{{parents|}}}{{{mother|}}}{{{father|}}}{{{relatives|}}}{{{residence|}}}{{{education|}}}{{{alma_mater|}}}{{{occupation|}}}{{{profession|}}}{{{known_for|}}}{{{salary|}}}{{{cabinet|}}}{{{committees|}}}{{{portfolio|}}}{{{awards|}}}{{{data1|}}}{{{data2|}}}{{{data3|}}}{{{data4|}}}{{{data5|}}}|Personal details}} | label4 = Pronunciation | data4 = {{{pronunciation|}}} | label5 = Born | data5 = {{br separated entries |1 = {{#if:{{{birth_name|{{{birthname|}}}}}}|<div style="display:inline" class="nickname">{{{birth_name|{{{birthname}}}}}}</div>}} |2 = {{{birth_date|}}} |3 = {{{birth_place|}}} }} | label6 = Died | data6 = {{br separated entries|{{{death_date|}}}|{{{death_place|}}}}} | label7 = {{#ifexpr: {{strfind short| {{{death_cause|}}}|Assassination}} | Manner |{{#if:{{{death_manner|}}}|Manner|Cause}} }}&nbsp;of&nbsp;death | data7 = {{#if:{{{death_manner|}}}|{{{death_manner|}}}|{{{death_cause|}}}}} | label8 = Resting place | class8 = label | data8 = {{br separated entries|{{{resting_place|{{{restingplace|}}}}}}|{{{resting_place_coordinates|{{{restingplacecoordinates|}}}}}}}} | label9 = Citizenship | data9 = {{{citizenship|}}} | label10 = Nationality | data10 = {{#switch:{{Delink|{{{nationality|}}}}} | {{#ifeq:{{Country2nationality|{{Find country|{{Delink|{{{birth_place|}}}}}}}}}|{{Delink|{{{nationality|}}}}}|{{Delink|{{{nationality|}}}}}}} = | {{#ifeq:{{Find country|{{{birth_place|}}}}}|England|British}} = | #default = {{{nationality|}}} }} | label11 = Political party | data11 = {{#switch:{{{party|}}} | = | [[United States Democratic Party|Democrat]] | [[Democratic Party (United States)|Democratic]] | [[Democratic Party (United States)|Democrat]] = [[Democratic Party (United States)|Democratic]] | [[Republican Party (United States)|Republican]] | [[United States Republican Party]] | [[United States Republican Party|Republican]] | [[Republican Party (United States)|Republican Party]] = [[Republican Party (United States)|Republican]] | [[Conservative Party (UK)|Conservative Party]] | [[Conservative Party (UK)|Conservative]] = [[Conservative Party (UK)|Conservative]] | [[Labour Party (UK)|Labour Party]] | [[Labour Party (UK)|Labour]] = [[Labour Party (UK)|Labour]] | [[Conservative Party of Canada|Conservative Party]] | [[Conservative Party of Canada|Conservative]] = [[Conservative Party of Canada|Conservative]] | [[Liberal Party of Canada|Liberal Party]] | [[Liberal Party of Canada|Liberal]] = [[Liberal Party of Canada|Liberal]] | KMT | Kuomintang | [[KMT]] | [[Kuomintang|KMT]] | [[Kuomintang]] | Kuomintang (KMT) | [[Kuomintang]] (KMT) = [[Kuomintang]] | DPP | [[Democratic Progressive Party|DPP]] | [[Democratic Progressive Party]] = [[Democratic Progressive Party]] | #default = {{{party|}}} }} | label12 = Other political<br />affiliations | data12 = {{{otherparty|}}} | label13 = Height | data13 = {{#if:{{{height|}}}|{{infobox person/height|{{{height|}}}}}}} | label14 = Spouse{{#if:{{{spouses|}}}|s|{{Pluralize from text|{{{spouse|{{{spouse(s)|}}}}}}|likely=(s)|plural=s}}}} | data14 = {{{spouse|{{{spouses|{{{spouse(s)|}}}}}}}}} | label15 = Domestic partner{{Pluralize from text|{{{partner|}}}|likely=(s)|plural=s}} | data15 = {{{partner|}}} | label16 = Relations | data16 = {{{relations|}}} | label17 = Children | data17 = {{{children|}}} | label18 = Parent{{#if:{{{parents|}}}|{{Pluralize from text|{{{parents|}}}|likely=(s)|plural=s}}|<!-- -->{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|s}}}} | data18 = {{#if:{{{parents|}}}|{{{parents}}}|{{Unbulleted list|{{#if:{{{father|}}}|{{{father}}} (father)}}|{{#if:{{{mother|}}}|{{{mother}}} (mother)}}}}}} | label19 = Relatives | data19 = {{{relatives|}}} | label20 = Residence{{Pluralize from text|{{{residence|}}}|likely=(s)|plural=s}} | class20 = {{#if:{{{death_date|}}}{{{death_place|}}}||label}} | data20 = {{{residence|}}} | label21 = Education | data21 = {{{education|}}} | label22 = [[Alma mater]] | data22 = {{{alma_mater|}}} | label23 = Occupation | data23 = {{{occupation|}}} | label24 = Profession | data24 = {{{profession|}}} | label25 = Known for | data25 = {{{known_for|}}} | label26 = Salary | data26 = {{{salary|}}} | label27 = Cabinet | data27 = {{{cabinet|}}} | label28 = Committees | data28 = {{{committees|}}} | label29 = Portfolio | data29 = {{{portfolio|}}} | label30 = {{#if:{{{mawards|}}}|Civilian awards|Awards}} | data30 = {{{awards|}}} | label31 = {{{blank1}}} | data31 = {{{data1|}}} | label32 = {{{blank2}}} | data32 = {{{data2|}}} | label33 = {{{blank3}}} | data33 = {{{data3|}}} | label34 = {{{blank4}}} | data34 = {{{data4|}}} | label35 = {{{blank5}}} | data35 = {{{data5|}}} | label36 = Signature | data36 = {{#if:{{{signature|}}}|[[File:{{{signature}}}|{{#if:{{{signature_size|}}}|{{{signature_size}}}|128x80px}}|alt={{{signature_alt|}}}|{{PAGENAME}}'s signature]]}} | label37 = Website | data37 = {{{website|}}} | label38 = Nickname{{Pluralize from text|{{{nickname|}}}|likely=(s)|plural=s}} | data38 = {{{nickname|}}} | header39 = {{#if:{{{allegiance|}}}{{{branch|}}}{{{serviceyears|}}}{{{rank|}}}{{{unit|}}}{{{commands|}}}{{{battles|}}}{{{military_blank1|}}}|Military service}} | label40 = Allegiance | data40 = {{{allegiance|}}} | label41 = {{#if:{{{branch_label|}}}|{{{branch_label|}}}|Branch/service}} | data41 = {{{branch|}}} | label42 = {{#if:{{{serviceyears_label|}}}|{{{serviceyears_label|}}}|Years&nbsp;of service}} | data42 = {{{serviceyears|}}} | label43 = {{#if:{{{rank_label|}}}|{{{rank_label|}}}|Rank}} | data43 = {{{rank|}}} | label44 = {{#if:{{{unit_label|}}}|{{{unit_label|}}}|Unit}} | data44 = {{{unit|}}} | label45 = Commands | data45 = {{{commands|}}} | label46 = {{#if:{{{battles_label|}}}|{{{battles_label|}}}|Battles/wars}} | data46 = {{{battles|}}} | label47 = {{#if:{{{awards|}}}|Military awards|Awards}} | data47 = {{{mawards|}}} | label48 = {{{military_blank1}}} | data48 = {{{military_data1|}}} | label49 = {{{military_blank2}}} | data49 = {{{military_data2|}}} | label50 = {{{military_blank3}}} | data50 = {{{military_data3|}}} | label51 = {{{military_blank4}}} | data51 = {{{military_data4|}}} | label52 = {{{military_blank5}}} | data52 = {{{military_data5|}}} | data53 = {{{module|}}} | data54 = {{{module2|}}} | data55 = {{{module3|}}} | data56 = {{{module4|}}} | data57 = {{{module5|}}} | data58 = {{{footnotes|}}} | belowstyle = border-top: 1px solid right; font-size: 95% | below = <div>{{#if:{{{date|}}}| As of {{{date}}}{{#if:{{{year|}}}|, {{{year}}}}}}}</div>{{#if:{{{source|}}}|Source: [{{{source}}}]}} }}{{#if:{{{pronunciation|}}}|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Biography template using pronunciation]]}} }}{{#if:{{{1blankname0|}}}{{{1namedata0|}}}{{{2blankname0|}}}{{{2namedata0|}}}{{{3blankname0|}}}{{{3namedata0|}}}{{{4blankname0|}}}{{{4namedata0|}}}{{{5blankname0|}}}{{{5namedata0|}}}{{{alongside0|}}}{{{ambassador_from0|}}}{{{appointer0|}}}{{{assembly0|}}}{{{assuming0|}}}{{{chancellor0|}}}{{{co-leader0|}}}{{{constituency_AM0|}}}{{{constituency0|}}}{{{country0|}}}{{{deputy0|}}}{{{district0|}}}{{{firstminister0|}}}{{{governor-general0|}}}{{{governor0|}}}{{{jr/sr0|}}}{{{jr/sr and state0|}}}{{{leader0|}}}{{{legislature0|}}}{{{lieutenant_governor0|}}}{{{lieutenant0|}}}{{{minister_from0|}}}{{{minority_floor_leader0|}}}{{{majority_floor_leader0|}}}{{{majorityleader0|}}}{{{majority0|}}}{{{minister0|}}}{{{minorityleader0|}}}{{{monarch0|}}}{{{nominator0|}}}{{{office0|}}}{{{order0|}}}{{{parliament0|}}}{{{predecessor0|}}}{{{preceding0|}}}{{{preceded0|}}}{{{premier0|}}}{{{president0|}}}{{{primeminister0|}}}{{{riding0|}}}{{{state_assembly0|}}}{{{state_delegate0|}}}{{{state_house0|}}}{{{state_legislature0|}}}{{{state_senate0|}}}{{{state0|}}}{{{suboffice0|}}}{{{subterm0|}}}{{{succeeded0|}}}{{{succeeding0|}}}{{{successor0|}}}{{{taoiseach0|}}}{{{termend0|}}}{{{termstart0|}}}{{{term0|}}}{{{title0|}}}{{{vicegovernor0|}}}{{{vicepresident0|}}}{{{vicepremier0|}}}{{{viceprimeminister0|}}}{{{prior_term0|}}}{{{appointe0|}}}{{{constituency_0|}}}|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with office0]]}} }}{{#if:{{{speaker|}}}|{{#if:{{{nominee|}}}{{{candidate|}}}||{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with speaker]]}}}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with unknown parameters|_VALUE_{{PAGENAME}}]]}}}}|preview=Page using [[Template:Infobox officeholder]] with unknown parameter "_VALUE_"|ignoreblank=y| regexp1 = 1blankname[%d]* | regexp2 = 1namedata[%d]* | regexp3 = 2blankname[%d]* | regexp4 = 2namedata[%d]* | regexp5 = 3blankname[%d]* | regexp6 = 3namedata[%d]* | regexp7 = 4blankname[%d]* | regexp8 = 4namedata[%d]* | regexp9 = 5blankname[%d]* | regexp10 = 5namedata[%d]* | allegiance | alma_mater | regexp11 = alongside[%d]* | alt | regexp12 = ambassador_from[%d]* | regexp13 = appointed[%d]* | regexp14 = appointer[%d]* | regexp15 = assembly[%d]* | awards | battles | battles_label | birth_date | birth_name | birth_place | birthname | regexp16 = blank[%d]* | bodyclass | branch | branch_label | cabinet | candidate | caption | categories | regexp17 = chancellor[%d]* | children | citizenship | regexp18 = co%-leader[%d]* | commands | committees | regexp19 = constituency[%d]* | regexp20 = constituency_AM[%d]* | regexp21 = constituency_MP[%d]* | regexp22 = convocation[%d]* | regexp23 = country[%d]* | regexp24 = data[%d]* | date | death_cause | death_date | death_manner | death_place | demo | regexp25 = deputy[%d]* | regexp26 = district[%d]* | education | election_date | embed | father | regexp28 = firstminister[%d]* | footnotes | regexp29 = governor[%d]* | regexp30 = governor_general[%d]* | regexp31 = governor%-general[%d]* | height | honorific_prefix | honorific-prefix | honorific_suffix | honorific-suffix | image | image name | image_name_alt | image_size | imagesize | image_upright | incumbent | regexp32 = jr/sr[%d]* | regexp33 = jr/sr and state[%d]* | known_for | regexp34 = leader[%d]* | regexp35 = legislature[%d]* | regexp36 = lieutenant[%d]* | regexp37 = lieutenant_governor[%d]* | mainwidth | regexp38 = majority[%d]* | regexp39 = majority_floor_leader[%d]* | regexp40 = majority_leader[%d]* | regexp41 = majorityleader[%d]* | mawards | regexp42 = military_blank[%d]* | regexp43 = military_data[%d]* | regexp44 = minister[%d]* | regexp45 = minister_from[%d]* | regexp46 = minority_floor_leader[%d]* | regexp47 = minority_leader[%d]* | regexp48 = minorityleader[%d]* | regexp49 = module[%d]* | regexp50 = monarch[%d]* | mother | name | nationality | native_name | native_name_lang | nickname | nocat | regexp51 = nominator[%d]* | nominee | occupation | regexp52 = office[%d]* | opponent | regexp53 = order[%d]* | otherparty | parents | regexp54 = parliament[%d]* | regexp55 = parliamentarygroup[%d]* | partner | party | party_election | portfolio | regexp56 = preceded[%d]* | regexp57 = preceding[%d]* | regexp58 = predecessor[%d]* | regexp59 = premier[%d]* | regexp60 = president[%d]* | regexp61 = primeminister[%d]* | regexp62 = prior_term[%d]* | profession | pronunciation | rank | rank_label | relations | relatives | residence | resting_place | resting_place_coordinates | restingplace | restingplacecoordinates | regexp63 = riding[%d]* | runningmate | salary | serviceyears | serviceyears_label | signature | signature_alt | signature_size | smallimage | smallimage_alt | source | speaker | speaker_office | spouse | spouses | regexp64 = state[%d]* | regexp65 = state_assembly[%d]* | regexp66 = state_delegate[%d]* | regexp67 = state_house[%d]* | regexp68 = state_legislature[%d]* | regexp69 = state_senate[%d]* | regexp70 = status[%d]* | regexp71 = suboffice[%d]* | regexp72 = subterm[%d]* | regexp73 = succeeded[%d]* | regexp74 = succeeding[%d]* | regexp75 = successor[%d]* | regexp76 = taoiseach[%d]* | regexp77 = term[%d]* | regexp78 = term_end[%d]* | regexp79 = term_label[%d]* | regexp80 = term_start[%d]* | regexp81 = termend[%d]* | regexp82 = termlabel[%d]* | regexp83 = termstart[%d]* | regexp84 = title[%d]* | unit | unit_label | regexp85 = vicegovernor[%d]* | regexp86 = vicepremier[%d]* | regexp87 = vicepresident[%d]* | regexp88 = viceprimeminister[%d]* | regexp89 = assuming[%d]* | website | width | year }}<noinclude> {{Documentation}} </noinclude> a019277287dbb30717151685a827a955fb3d1c80 Template:Infobox officeholder/example 10 239 537 2023-09-30T19:59:34Z Führerredux 2 Created page with "This page is to aid users in the application of {{tl|Infobox officeholder}}. ==General office== {{Infobox president | honorific-prefix = | name = Harry S. Truman | honorific-suffix = | image = Harry S. Truman.jpg | alt = | order = 33rd | office = President of the United States | election = | term_start = {{Start date|1945|4|12}} | term_end = {{End date|1953|1|20}} | vicepresident = Alb..." wikitext text/x-wiki This page is to aid users in the application of {{tl|Infobox officeholder}}. ==General office== {{Infobox president | honorific-prefix = | name = Harry S. Truman | honorific-suffix = | image = Harry S. Truman.jpg | alt = | order = 33rd | office = President of the United States | election = | term_start = {{Start date|1945|4|12}} | term_end = {{End date|1953|1|20}} | vicepresident = [[Alben W. Barkley]] (1949–53) | predecessor = [[Franklin D. Roosevelt]] | successor = [[Dwight D. Eisenhower]] | birth_date = {{Birth date|1884|5|8}} | birth_place = [[Lamar, Missouri]], U.S. | death_date = {{Death date and age|1972|12|26|1884|5|8}} | death_place = [[Kansas City, Missouri|Kansas City]], U.S. | spouse = [[Bess Truman|Bess Wallace Truman]] | party = [[Democratic Party (United States)|Democratic]] | relations = | children = [[Margaret Truman]] | residence = | alma_mater = | occupation = | profession = | signature = Harry S. Truman signature.png | signature_alt = "Harry S. Truman" signature | website = | footnotes = }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox president | honorific-prefix = | name = Harry S. Truman | honorific-suffix = | image = Harry S. Truman.jpg | alt = | order = 33rd | office = President of the United States | election = | term_start = {{Start date|1945|4|12}} | term_end = {{End date|1953|1|20}} | vicepresident = [[Alben W. Barkley]] (1949–53) | predecessor = [[Franklin D. Roosevelt]] | successor = [[Dwight D. Eisenhower]] | birth_date = {{Birth date|1884|5|8}} | birth_place = [[Lamar, Missouri]], U.S. | death_date = {{Death date and age|1972|12|26|1884|5|8}} | death_place = [[Kansas City, Missouri]], U.S. | spouse = [[Bess Truman|Bess Wallace Truman]] | party = [[Democratic Party (United States)|Democratic]] | relations = | children = [[Margaret Truman]] | residence = | alma_mater = | occupation = | profession = | signature = Harry S. Truman signature.png | signature_alt = "Harry S. Truman" signature | website = | footnotes = }}</syntaxhighlight> {{-}} ==Ambassador== {{Infobox ambassador | honorific-prefix = | name = Whitelaw Reid | honorific-suffix = | image = Whitelaw Reid.jpg | alt = Seated portrait of 60-ish man with beard, mustache, and receding hairline, in circa-1880 formal dress with high collar, with a book in his lap and a watch at the end of a chain suspended from his coat. | order = 28th | ambassador_from = United States | country = France | term_start = {{Start date|1889|3|23}} | term_end = {{End date|1892|3|25}} | predecessor = [[Robert Milligan McLane|Robert M. McLane]] | successor = [[T. Jefferson Coolidge]] | order2 = 35th | ambassador_from2 = United States | country2 = the United Kingdom | term_start2 = {{Start date|1889|3|23}} | term_end2 = {{End date|1912|12|15}} | predecessor2 = [[Joseph Hodges Choate|Joseph H. Choate]] | successor2 = [[Walter Hines Page]] | birth_date = {{Birth date|1837|10|12}} | birth_place = [[Cedarville, Ohio]], United States | death_date = {{Death date and age|1912|12|15|1837|10|12}} | death_place = [[London]], England, United Kingdom | spouse = | party = [[Republican Party (United States)|Republican]] | relations = | children = | residence = | alma_mater = | occupation = | profession = Politician, editor | signature = | signature_alt = | website = | footnotes = }} <syntaxhighlight lang="wikitext">{{Infobox ambassador | honorific-prefix = | name = Whitelaw Reid | honorific-suffix = | image = Whitelaw Reid.jpg | alt = Seated portrait of 60-ish man with beard, mustache, and receding hairline, in circa-1880 formal dress with high collar, with a book in his lap and a watch at the end of a chain suspended from his coat. | order = 28th | ambassador_from = United States | country = France | term_start = {{Start date|1889|3|23}} | term_end = {{Death date|1892|3|25}} | predecessor = [[Robert Milligan McLane|Robert M. McLane]] | successor = [[T. Jefferson Coolidge]] | order2 = 35th | ambassador_from2 = United States | country2 = the United Kingdom | term_start2 = {{Start date|1889|3|23}} | term_end2 = {{Death date|1912|12|15}} | predecessor2 = [[Joseph Hodges Choate|Joseph H. Choate]] | successor2 = [[Walter Hines Page]] | birth_date = {{Birth date|1837|10|12}} | birth_place = [[Cedarville, Ohio]], United States | death_date = {{Death date and age|1912|12|15|1837|10|12}} | death_place = [[London]], England, United Kingdom | spouse = | party = [[Republican Party (United States)|Republican]] | relations = | children = | residence = | alma_mater = | occupation = | profession = Politician, editor | signature = | signature_alt = | website = | footnotes = }}</syntaxhighlight> {{-}} ==Assembly Member== {{Infobox AM | honorific-prefix = | name = Nick Bourne | honorific-suffix = [[Member of the National Assembly for Wales|AM]] | smallimage = | alt = | caption = | constituency_AM = [[Mid and West Wales (National Assembly for Wales electoral region)|Mid and West Wales]] | assembly = Welsh | majority = | term_start = {{start date|1999|5|6|df=yes}} | term_end = | predecessor = ''(new constituency)'' | successor = Incumbent | birth_date = {{birth date and age|1952|1|1}} | birth_place = | death_date = | death_place = | nationality = British | spouse = | party = [[Conservative Party (UK)|Conservative]] | relations = | children = | residence = | alma_mater = [[Aberystwyth University|University of Wales, Aberystwyth]] | occupation = | profession = | signature = | signature_alt = | website = [http://blog.nickbourne.org.uk/ Nick Bourne's Blog] | footnotes = }} <syntaxhighlight lang="wikitext">{{Infobox AM | honorific-prefix = | name = Nick Bourne | honorific-suffix = [[Member of the National Assembly for Wales|AM]] | smallimage = | alt = | caption = | constituency_AM = [[Mid and West Wales (National Assembly for Wales electoral region)|Mid and West Wales]] | assembly = Welsh | majority = | term_start = {{start date|1999|5|6|df=yes}} | term_end = | predecessor = ''(new constituency)'' | successor = Incumbent | birth_date = {{birth date and age|1952|1|1}} | birth_place = | death_date = | death_place = | nationality = British | spouse = | party = [[Conservative Party (UK)|Conservative]] | relations = | children = | residence = | alma_mater = [[Aberystwyth University|University of Wales]], Aberystwyth | occupation = | profession = | signature = | signature_alt = | website = [http://blog.nickbourne.org.uk/ Nick Bourne's Blog] | footnotes = }}</syntaxhighlight> {{-}} ==Governor== {{Infobox governor | honorific-prefix = | name = Gray Davis | honorific-suffix = | image = Gray_Davis.jpg | alt = | caption = | order = 37th | office = Governor of California | term_start = January 4, 1999 | term_end = November 17, 2003 | lieutenant = [[Cruz Bustamante]] | predecessor = [[Pete Wilson]] | successor = [[Arnold Schwarzenegger]] | birth_date = {{birth date and age|1942|12|26}} | birth_place = [[The Bronx]], [[New York (state)|New York]], U.S. | death_date = | death_place = | spouse = Sharon Ryer Davis | party = [[Democratic Party (United States)|Democratic]] | relations = | children = | residence = | alma_mater = | occupation = | profession = Politician | signature = | signature_alt = | website = | footnotes = }} <syntaxhighlight lang="wikitext">{{Infobox governor | honorific-prefix = | name = Gray Davis | honorific-suffix = | image = Gray_Davis.jpg | alt = | caption = | order = 37th | office = Governor of California | term_start = January 4, 1999 | term_end = November 17, 2003 | lieutenant = [[Cruz Bustamante]] | predecessor = [[Pete Wilson]] | successor = [[Arnold Schwarzenegger]] | birth_date = {{birth date and age|1942|12|26}} | birth_place = [[New York City]], New York, U.S. | death_date = | death_place = | spouse = Sharon Ryer Davis | party = [[Democratic Party (United States)|Democratic]] | relations = | children = | residence = | alma_mater = | occupation = | profession = Politician | signature = | signature_alt = | website = | footnotes = }}</syntaxhighlight> {{-}} == Judge == {{Infobox judge | honorific-prefix = | name = William Hubbs Rehnquist | honorific-suffix = | image = William Rehnquist.jpg | alt = Seated portrait, from waist up, of a man in black robes, coat, and tie. He wears glasses and has a receding hairline. His hands are folded. | caption = | order = 16th | office = Chief Justice of the United States | term_start = September 26, 1986 | term_end = September 3, 2005 | nominator = [[Ronald Reagan]] | appointer = | predecessor = [[Warren E. Burger]] | successor = [[John Roberts]] | office2 = [[Associate Justice of the Supreme Court of the United States|Associate Justice of the U.S. Supreme Court]] | term_start2 = January 7, 1972 | term_end2 = September 26, 1986 | nominator2 = [[Richard Nixon]] | appointer2 = | predecessor2 = [[John Marshall Harlan II]] | successor2 = [[Antonin Scalia]] | birth_date = October 1, 1924 | birth_place = [[Milwaukee]], Wisconsin, U.S. | death_date = September 3, 2005, age 80 | death_place = [[Arlington, Virginia|Arlington]], Virginia, U.S. | spouse = | party = | relations = | children = | residence = | alma_mater = | occupation = | profession = | signature = | signature_alt = | website = | footnotes = }} <syntaxhighlight lang="wikitext">{{Infobox judge | honorific-prefix = | name = William Hubbs Rehnquist | honorific-suffix = | image = William Rehnquist.jpg | alt = Seated portrait, from waist up, of a man in black robes, coat, and tie. He wears glasses and has a receding hairline. His hands are folded. | caption = | order = 16th | office = Chief Justice of the United States | term_start = September 26, 1986 | term_end = September 3, 2005 | nominator = [[Ronald Reagan]] | appointer = | predecessor = [[Warren E. Burger]] | successor = [[John Roberts]] | office2 = [[Associate Justice of the Supreme Court of the United States|Associate Justice of the U.S. Supreme Court]] | term_start2 = January 7, 1972 | term_end2 = September 26, 1986 | nominator2 = [[Richard Nixon]] | appointer2 = | predecessor2 = [[John Marshall Harlan II]] | successor2 = [[Antonin Scalia]] | birth_date = October 1, 1924 | birth_place = [[Milwaukee]], Wisconsin, U.S. | death_date = September 3, 2005, age 80 | death_place = [[Arlington, Virginia|Arlington]], Virginia, U.S. | spouse = | party = | relations = | children = | residence = | alma_mater = | occupation = | profession = | signature = | signature_alt = | website = | footnotes = }}</syntaxhighlight> {{-}} ==Member of Parliament== {{Infobox MP | honorific-prefix = | name = Diane Abbott | honorific-suffix = | image = Diane Abbott low quality.jpg | alt = 50ish woman in black, with a bright red scarf, large black-and-white earrings and glasses, smiling and holding a microphone in one hand and a sheet of paper in the other | constituency_MP = [[Hackney North and Stoke Newington]] | parliament = United Kingdom | majority = 7,427 (25%) | predecessor = [[Ernie Roberts]] | successor = | term_start = 11 June 1987 | term_end = | birth_date = {{birth date and age|1953|9|27}} | birth_place = [[Paddington]], London | death_date = | death_place = | spouse = | party = [[Labour Party (UK)|Labour]] | relations = | children = | residence = | alma_mater = [[Newnham College, Cambridge]] | occupation = | profession = | signature = | signature_alt = | website = | footnotes = }} <syntaxhighlight lang="wikitext">{{Infobox MP | honorific-prefix = | name = Diane Abbott | honorific-suffix = | image = Diane Abbott low quality.jpg | alt = 50ish woman in black, with a bright red scarf, large black-and-white earrings and glasses, smiling and holding a microphone in one hand and a sheet of paper in the other | constituency_MP = [[Hackney North and Stoke Newington]] | parliament = United Kingdom | majority = 7,427 (25.3%) | predecessor = [[Ernie Roberts]] | successor = | term_start = 11 June 1987 | term_end = | birth_date = {{birth date and age|1953|9|27|df=y}} | birth_place = [[Paddington]], London | death_date = | death_place = | spouse = | party = [[Labour Party (UK)|Labour]] | relations = | children = | residence = | alma_mater = [[Newnham College, Cambridge]] | occupation = | profession = | signature = | signature_alt = | website = | footnotes = }}</syntaxhighlight> {{-}} ==US Congressperson== {{Infobox congressman | honorific-prefix = | name = Dennis Hastert | honorific-suffix = | image = Dennis Hastert 109th pictorial photo.jpg | alt = Head of a 60sh plump man with gray hair, squinting through eyeglasses | state = Illinois | district = [[Illinois's 14th congressional district|14th]] | term_start = January 6, 1987 | predecessor = [[John E. Grotberg]] | successor = Incumbent | speaker = 59th | term_start2 = January 6, 1999 | term_end2 = January 3, 2007 | predecessor2 = [[Newt Gingrich]] | successor2 = [[Nancy Pelosi]] | birth_date = {{birth date and age|1942|1|2}} | birth_place = [[Aurora, Illinois|Aurora]], Illinois, U.S. | death_date = | death_place = | spouse = Jean Kahl | party = [[Republican Party (United States)|Republican]] | relations = | children = | residence = | alma_mater = | occupation = Mentoring | profession = | signature = | signature_alt = | website = | footnotes = }} <syntaxhighlight lang="wikitext">{{Infobox congressman | honorific-prefix = | name = Dennis Hastert | honorific-suffix = | image = Dennis Hastert 109th pictorial photo.jpg | alt = Head of a 60sh plump man with gray hair, squinting through eyeglasses | state = Illinois | district = [[Illinois's 14th congressional district|14th]] | term_start = January 6, 1987 | predecessor = [[John E. Grotberg]] | successor = Incumbent | speaker = 59th | term_start2 = January 6, 1999 | term_end2 = January 3, 2007 | predecessor2 = [[Newt Gingrich]] | successor2 = [[Nancy Pelosi]] | birth_date = {{birth date and age|1942|1|2}} | birth_place = [[Aurora, Illinois|Aurora]], Illinois, U.S. | death_date = | death_place = | spouse = Jean Kahl | party = [[Republican Party (United States)|Republican]] | relations = | children = | residence = | alma_mater = | occupation = Mentoring | profession = | signature = | signature_alt = | website = | footnotes = }}</syntaxhighlight> {{-}} ==State Representative== {{Infobox state representative | honorific-prefix = | name = Fabian Núñez | honorific-suffix = | image = FabianNunez.jpg | alt = Head and shoulders of a smiling 40ish man with dark hair | state_assembly = California <!--more often use state_house --> | district = [[California's 46th Assembly district|46th]] | term_start = 2002 | term_end = | predecessor = [[Gil Cedillo]] | successor = | speaker = 66th | term_start2 = 2002 | term_end2 = | predecessor2 = [[Herb Wesson]] | successor2 = Termed out (2008) | birth_date = December 22, 1966 | birth_place = [[San Diego]], California, U.S. | death_date = | death_place = | spouse = Maria Robles | party = [[Democratic Party (United States)|Democratic]] | relations = | children = | residence = | alma_mater = | occupation = | profession = Politician | signature = | signature_alt = | website = | footnotes = }} <syntaxhighlight lang="wikitext">{{Infobox state representative | honorific-prefix = | name = Fabian Núñez | honorific-suffix = | image = FabianNunez.jpg | alt = Head and shoulders of a smiling 40ish man with dark hair | state_assembly = California <!--more often use state_house --> | district = [[California's 46th Assembly district|46th]] | term_start = 2002 | term_end = | predecessor = [[Gil Cedillo]] | successor = | speaker = 66th | term_start2 = 2002 | term_end2 = | predecessor2 = [[Herb Wesson]] | successor2 = Termed out (2008) | birth_date = December 22, 1966 | birth_place = [[San Diego]], California, U.S. | death_date = | death_place = | spouse = Maria Robles | party = [[Democratic Party (United States)|Democratic]] | relations = | children = | residence = | alma_mater = | occupation = | profession = Politician | signature = | signature_alt = | website = | footnotes = }}</syntaxhighlight> {{-}} ==US Senator== {{Infobox senator | honorific-prefix = | name = John Sidney McCain III | honorific-suffix = | image = John McCain official photo portrait.JPG | alt = Half-length portrait of 70ish man with receding white hair and a square jaw | jr/sr = Senior Senator | state = [[Arizona]] | alongside = Jon Kyl | term_start = January 3, 1987 | term_end = August 25, 2018 | predecessor = [[Barry Goldwater]] | successor = [[John Kyl]] | state2 = Arizona | district2 = [[Arizona's 1st congressional district|1st]] | term_start2 = 1983 | term_end2 = 1987 | predecessor2 = [[John Jacob Rhodes]] | successor2 = [[John Jacob Rhodes III]] | birth_date = {{birth date and age|1936|08|29}} | birth_place = [[Panama Canal Zone]] (U.S. Territory) | death_date = {{death date and age|2018|8|25|1936|8|29}} | death_place = | party = [[Republican Party (United States)|Republican]] | spouse = (1) Carol Shepp, divorced; (2) [[Cindy Hensley McCain]] | relations = | children = | residence = | alma_mater = | occupation = | profession = [[United States Naval Aviator|Naval Aviator]] | signature = | signature_alt = | website = | footnotes = }} <syntaxhighlight lang="wikitext">{{Infobox senator | honorific-prefix = | name = John Sidney McCain III | honorific-suffix = | image = John McCain official photo portrait.JPG | alt = Half-length portrait of 70ish man with receding white hair and a square jaw | jr/sr = Senior Senator | state = [[Arizona]] | alongside = Jon Kyl | term_start = January 3, 1987 | predecessor = [[Barry Goldwater]] | successor = [[John Kyl]] | state2 = Arizona | district2 = [[Arizona's 1st congressional district|1st]] | term_start2 = 1983 | term_end2 = 1987 | predecessor2 = [[John Jacob Rhodes]] | successor2 = [[John Jacob Rhodes III]] | birth_date = {{birth date and age|1936|08|29}} | birth_place = [[Panama Canal Zone]] (U.S. Territory) | death_date = {{death date and age|2018|8|25|1936|8|29}} | death_place = | party = [[Republican Party (United States)|Republican]] | spouse = (1) Carol Shepp, divorced; (2) [[Cindy Hensley McCain]] | relations = | children = | residence = | alma_mater = | occupation = | profession = [[United States Naval Aviator|Naval Aviator]] | signature = | signature_alt = | website = | footnotes = }}</syntaxhighlight> {{-}} ==State Senator== {{Infobox state senator | honorific-prefix = | name = Michael E. Gronstal | honorific-suffix = | image = Michael E. Gronstal - Official Portrait - 84th GA.jpg | image_size = | alt = | state_senate = Iowa | district = 8th | prior_term = 50th (1985-1993) and (2003-2013)<br>42nd (1993–2003) | term_start = January 8, 1985 | term_end = | predecessor = [[Tom Slater (politician)|Tom Slater]] | successor = | birth_date = {{birth date and age|1950|1|29|mf=y}} | birth_place = [[Council Bluffs, Iowa]], U.S. | death_date = | death_place = | party = [[Iowa Democratic Party|Democrat]] | spouse = Connie Meisenbach | partner = | relations = | children = Kate, Sarah | residence = [[Council Bluffs, Iowa]], U.S. | alma_mater = BA [[Antioch College]]<br>attended [[Loyola University Chicago|Loyola University]] | occupation = | profession = | signature = | signature_alt = | website = [http://www3.legis.state.ia.us/ga/member.do?id=142 Gronstal's website] | footnotes = }} <syntaxhighlight lang="wikitext">{{Infobox state senator | honorific-prefix = | name = Michael E. Gronstal | honorific-suffix = | image = Michael E. Gronstal - Official Portrait - 84th GA.jpg | image_size = | alt = | state_senate = Iowa | district = 8th | prior_term = 50th (1985–1993) and (2003–2013)<br>42nd (1993–2003) | term_start = January 8, 1985 | term_end = | predecessor = [[Tom Slater (politician)|Tom Slater]] | successor = | birth_date = {{birth date and age|1950|1|29|mf=y}} | birth_place = [[Council Bluffs, Iowa]], U.S. | death_date = | death_place = | party = [[Iowa Democratic Party|Democrat]] | spouse = Connie Meisenbach | partner = | relations = | children = Kate, Sarah | residence = [[Council Bluffs, Iowa]], U.S. | alma_mater = BA [[Antioch College]]<br>attended [[Loyola University Chicago|Loyola University]] | occupation = | profession = | signature = | signature_alt = | website = [http://www3.legis.state.ia.us/ga/member.do?id=142 Gronstal's website] | footnotes = }}</syntaxhighlight> {{-}} ==Ukrainian legislative office== {{Infobox Ukrainian legislative office |name = Vitali Klitschko |native_name = Віта́лій Кличко́ |native_name_lang = uk |office = [[Mayor of Kyiv]] |image = Vitali Klitschko September 2014.jpg |predecessor = Halyna Hereha (Acting) |successor = |signature = Vitali Klitschko signature.png |party = [[Ukrainian Democratic Alliance for Reform|Ukrainian Democratic Alliance<br>for Reform]] (2010–2015)<br>[[Petro Poroshenko Bloc "Solidarity"|Petro Poroshenko Bloc]] (2014–present) |office1 = Head of the [[Kyiv City State Administration]] |predecessor1 = [[Volodymyr Bondarenko (politician)|Volodymyr Bondarenko]] |successor1 = |birth_name = Vitali Volodymyrovych Klitschko |birth_date = {{birth date and age|1971|7|19|df=y}} |birth_place = [[Belovodskoye]], [[Kirghiz Soviet Socialist Republic|Kirghiz SSR]], [[Soviet Union]] (now [[Kyrgyzstan]]) |spouse = Natalia Egorova (1996–present) |children = Yegor-Daniel<br>Elizabeth-Victoria<br>Max |alma_mater = Pereiaslav-Khmelnytsky Pedagogical Institute<br>[[Taras Shevchenko National University of Kyiv|Taras Shevchenko National<br>University]]<br>[[National University of Physical Education and Sport of Ukraine]] |website = {{URL|klichko.org|Official website}} |term_start = 5 June 2014 |term_end = |term_start1 = 25 June 2014 |term_end1 = |office2 = [[Kyiv City Council|Deputy of the Kyiv City Council]] |convocation2 = [[Ukrainian local elections, 2006|5th session]] |constituency2 = [[Ukrainian Democratic Alliance for Reform|Klitschko Bloc "PORA–ROP"]] |term_start2 = April 2006 |term_end2 = June 2008 |convocation3 = [[Kyiv local election, 2008|6th session]] |constituency3 = [[Ukrainian Democratic Alliance for Reform|Vitali Klitschko Bloc]] |term_start3 = June 2008 |term_end3 = December 2012 |office4 = [[People's Deputy of Ukraine]] |convocation4 = [[7th Ukrainian Verkhovna Rada|7th convocation]] |constituency4 = [[Ukrainian Democratic Alliance for Reform|UDAR]], No.1<ref>{{cite web |title=People's Deputy of Ukraine of the VII convocation |url=http://gapp.rada.gov.ua/mps/info/expage/15664/8 |website=Official portal |publisher=Verkhovna Rada of Ukraine |access-date=22 December 2014 |language=uk}}</ref> |term_start4 = 12 December 2012 |term_end4 = 5 June 2014 }} <syntaxhighlight lang="wikitext">{{Infobox Ukrainian legislative office |name = Vitali Klitschko |native_name = Віта́лій Кличко́ |native_name_lang = uk |image = Vitali Klitschko September 2014.jpg |office = [[Mayor of Kyiv]] |predecessor = Halyna Hereha (Acting) |successor = |term_start = 5 June 2014 |term_end = |office1 = Head of the [[Kyiv City State Administration]] |predecessor1 = [[Volodymyr Bondarenko (politician)|Volodymyr Bondarenko]] |successor1 = |term_start1 = 25 June 2014 |term_end1 = |office2 = [[Kyiv City Council|Deputy of the Kyiv City Council]] |convocation2 = [[Ukrainian local elections, 2006|5th session]] |constituency2 = [[Ukrainian Democratic Alliance for Reform|Klitschko Bloc "PORA–ROP"]] |term_start2 = April 2006 |term_end2 = June 2008 |convocation3 = [[Kyiv local election, 2008|6th session]] |constituency3 = [[Ukrainian Democratic Alliance for Reform|Vitali Klitschko Bloc]] |term_start3 = June 2008 |term_end3 = December 2012 |office4 = [[People's Deputy of Ukraine]] |convocation4 = [[7th Ukrainian Verkhovna Rada|7th convocation]] |constituency4 = [[Ukrainian Democratic Alliance for Reform|UDAR]], No.1<ref>{{cite web |title=People's Deputy of Ukraine of the VII convocation |url=http://gapp.rada.gov.ua/mps/info/expage/15664/8 |website=Official portal |publisher=Verkhovna Rada of Ukraine |access-date=22 December 2014 |language=uk}}</ref> |term_start4 = 12 December 2012 |term_end4 = 5 June 2014 |party = [[Ukrainian Democratic Alliance for Reform|Ukrainian Democratic Alliance<br>for Reform]] (2010–2015)<br>[[Petro Poroshenko Bloc "Solidarity"|Petro Poroshenko Bloc]] (2014–present) |birth_name = Vitali Volodymyrovych Klitschko |birth_date = {{birth date and age|1971|7|19|df=y}} |birth_place = [[Belovodskoye]], [[Kirghiz Soviet Socialist Republic|Kirghiz SSR]], [[Soviet Union]] (now [[Kyrgyzstan]]) |spouse = Natalia Egorova (1996–present) |children = Yegor-Daniel<br>Elizabeth-Victoria<br>Max |alma_mater = Pereiaslav-Khmelnytsky Pedagogical Institute<br>[[Taras Shevchenko National University of Kyiv|Taras Shevchenko National<br>University]]<br>[[National University of Physical Education and Sport of Ukraine]] |signature = Vitali Klitschko signature.png |website = {{URL|klichko.org|Official website}} }}</syntaxhighlight> {{-}} ==Multiple terms== : Place the most recent terms at the top. When both a start and an end term are given, you can instead specify the complete term using the parameters {{para|term}}, {{para|term2}}, etc., as is done with {{para|term3}} in the example below. This can be helpful with complicated terms that cannot be given as simple starting or ending dates, or if you prefer something other than the default term separator (an en dash, with spaces around it if the start or end is not a simple integer date). Where a politician is redistricted into a new district, use {{para|prior_term}} to indicate the previous district(s). This saves space in the infobox by not generating a completely new office each time redistricting happens. If you do this, it is recommended that you list the predecessor before the subject first took office and the successor after the subject last left office. If more complete documentation of the districts is desired, it can be done with succession boxes at the end of the article. : Where a member has {{Infobox officeholder | name = Samuel Adams | image = J S Copley - Samuel Adams.jpg | alt = A stern middle-aged man with gray hair is wearing a dark red suit. He is standing behind a table, holding a rolled up document in one hand, and pointing with the other hand to a large document on the table. | caption = In this 1772 portrait by [[John Singleton Copley]], Adams points at the [[Massachusetts Charter]], which he viewed as a constitution that protected the people's rights. | order = 4th | office = Governor of Massachusetts | term_start = October 8, 1793 | term_end = June 2, 1797 | lieutenant = [[Moses Gill]] | order2 = 3rd [[Lieutenant Governor of Massachusetts]] | term_start2 = 1789 | term_end2 = 1793 | governor2 = [[John Hancock]] | order3 = [[President of the Massachusetts Senate]] | term3 = 1782–1785<br />1787–1788 | order4 = Delegate from Massachusetts to the [[Continental Congress]] | term_start4 = 1774 | term_end4 = 1781 | order5 = Clerk of the [[Massachusetts House of Representatives]] | term_start5 = 1766 | term_end5 = 1774 | birth_date = {{OldStyleDate|September 27|1722|September 16}} | birth_place = [[Boston, Massachusetts]], U.S. | death_date = {{death date and age|1803|10|2|1722|9|27|}} | death_place = [[Cambridge, Massachusetts]], U.S. | spouse = Elizabeth Checkley,<br />Elizabeth Wells | party = [[Democratic-Republican Party|Democratic-Republican]] (1790s) | signature = Samuel Adams Signature.svg | signature_alt = Handwritten "Saml Adams", with the "l" a raised curlicue }} <syntaxhighlight lang="wikitext">{{Infobox officeholder | name = Samuel Adams | image = J S Copley - Samuel Adams.jpg | alt = A stern middle-aged man with gray hair is wearing a dark red suit. He is standing behind a table, holding a rolled up document in one hand, and pointing with the other hand to a large document on the table. | caption = In this 1772 portrait by [[John Singleton Copley]], Adams points at the [[Massachusetts Charter]], which he viewed as a constitution that protected the people's rights. | order = 4th | office = Governor of Massachusetts | term_start = October 8, 1793 | term_end = June 2, 1797 | lieutenant = [[Moses Gill]] | order2 = 3rd [[Lieutenant Governor of Massachusetts]] | term_start2 = 1789 | term_end2 = 1793 | governor2 = [[John Hancock]] | order3 = [[President of the Massachusetts Senate]] | term3 = 1782–1785<br />1787–1788 | order4 = Delegate from Massachusetts to the [[Continental Congress]] | term_start4 = 1774 | term_end4 = 1781 | order5 = Clerk of the [[Massachusetts House of Representatives]] | term_start5 = 1766 | term_end5 = 1774 | birth_date = {{OldStyleDate|September 27|1722|September 16}} | birth_place = [[Boston, Massachusetts]], U.S. | death_date = {{death date and age|1803|10|2|1722|9|27|}} | death_place = [[Cambridge, Massachusetts]], U.S. | spouse = Elizabeth Checkley,<br />Elizabeth Wells | party = [[Democratic-Republican Party|Democratic-Republican]] (1790s) | signature = Samuel Adams Signature.svg | signature_alt = Handwritten "Saml Adams", with the "l" a raised curlicue }}</syntaxhighlight> {{-}} 59c79e39d226b080a4ca38433fea12ee6b985f3a Das Deutsche Reich 0 3 538 3 2023-09-30T20:10:40Z Führerredux 2 added character wikitext text/x-wiki {{Infobox officeholder | honorific_prefix = Führer | name = Adam Dressler | image = AdamDressler.png | office = [[Führer of Germany]] | allegiance = Germany }} 720da7f1f2c7e1c34447175ff37b3a4a5a6016b8 MediaWiki:Common.css 8 240 539 2023-09-30T20:18:37Z Führerredux 2 Created page with "/* CSS placed here will be applied to all skins */ /* * Styling inside .mw-parser-output should generally use TemplateStyles. */ /* Reset italic styling set by user agent */ cite, dfn { font-style: inherit; } /* Straight quote marks for <q> */ q { quotes: '"' '"' "'" "'"; } /* Avoid collision of blockquote with floating elements by swapping margin and padding */ blockquote { overflow: hidden; margin: 1em 0; padding: 0 40px; } /* Consistent size for <small>, <su..." css text/css /* CSS placed here will be applied to all skins */ /* * Styling inside .mw-parser-output should generally use TemplateStyles. */ /* Reset italic styling set by user agent */ cite, dfn { font-style: inherit; } /* Straight quote marks for <q> */ q { quotes: '"' '"' "'" "'"; } /* Avoid collision of blockquote with floating elements by swapping margin and padding */ blockquote { overflow: hidden; margin: 1em 0; padding: 0 40px; } /* Consistent size for <small>, <sub> and <sup> */ small { font-size: 85%; } .mw-body-content sub, .mw-body-content sup { font-size: 80%; } /* Same spacing for indented and unindented paragraphs on talk pages */ .ns-talk .mw-body-content dd { margin-top: 0.4em; margin-bottom: 0.4em; } /* Reduce page jumps by hiding collapsed/dismissed content */ .client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child), /* Avoid FOUC/reflows on collapsed elements. */ /* This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115). */ /* TODO: Use :is() selector at some reasonable future when support is good for Most Clients */ /* Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75 */ .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ), .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content, /* Hide charinsert base for those not using the gadget */ #editpage-specialchars { display: none; } /* Make the list of references smaller * Keep in sync with Template:Refbegin/styles.css * And Template:Reflist/styles.css */ ol.references { font-size: 90%; margin-bottom: 0.5em; } /* Cite customizations for Parsoid * Once everything uses the one true parser these are just customizations */ span[ rel="mw:referencedBy" ] { counter-reset: mw-ref-linkback 0; } span[ rel='mw:referencedBy' ] > a::before { content: counter( mw-ref-linkback, lower-alpha ); font-size: 80%; font-weight: bold; font-style: italic; } a[ rel="mw:referencedBy" ]::before { font-weight: bold; content: "^"; } span[ rel="mw:referencedBy" ]::before { content: "^ "; } .mw-ref > a[data-mw-group=lower-alpha]::after { content: '[' counter( mw-Ref, lower-alpha ) ']'; } .mw-ref > a[data-mw-group=upper-alpha]::after { content: '[' counter( mw-Ref, upper-alpha ) ']'; } .mw-ref > a[data-mw-group=decimal]::after { content: '[' counter( mw-Ref, decimal ) ']'; } .mw-ref > a[data-mw-group=lower-roman]::after { content: '[' counter( mw-Ref, lower-roman ) ']'; } .mw-ref > a[data-mw-group=upper-roman]::after { content: '[' counter( mw-Ref, upper-roman ) ']'; } .mw-ref > a[data-mw-group=lower-greek]::after { content: '[' counter( mw-Ref, lower-greek ) ']'; } /* Styling for jQuery makeCollapsible, matching that of collapseButton */ .mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) { font-weight: normal; padding-right: 0.2em; padding-left: 0.2em; } .mw-collapsible-leftside-toggle .mw-collapsible-toggle { /* @noflip */ float: left; } /* Lists in wikitable data cells are always left-aligned */ .wikitable td ul, .wikitable td ol, .wikitable td dl { /* @noflip */ text-align: left; } /* Change the external link icon to a PDF icon for all PDF files */ .mw-parser-output a[href$=".pdf"].external, .mw-parser-output a[href*=".pdf?"].external, .mw-parser-output a[href*=".pdf#"].external, .mw-parser-output a[href$=".PDF"].external, .mw-parser-output a[href*=".PDF?"].external, .mw-parser-output a[href*=".PDF#"].external { background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right; /* @noflip */ padding: 8px 18px 8px 0; } /* System messages styled similarly to fmbox */ /* for .mw-warning-with-logexcerpt, behavior of this line differs between * the edit-protected notice and the special:Contribs for blocked users * The latter has specificity of 3 classes so we have to triple up here. */ .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* default colors for partial block message */ /* gotta get over the hump introduced by the triple class above */ .mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt { border-color: #fc3; background-color: #fef6e7; } /* Minimum thumb width */ figure[typeof~='mw:File/Thumb'], figure[typeof~='mw:File/Frame'], .thumbinner { min-width: 100px; } /* Prevent floating boxes from overlapping any category listings, file histories, edit previews, and edit [Show changes] views. */ #mw-subcategories, #mw-pages, #mw-category-media, #filehistory, #wikiPreview, #wikiDiff { clear: both; } /* Styling for tags in changes pages */ .mw-tag-markers { font-style: italic; font-size: 90%; } /* Hide stuff meant for accounts with special permissions. Made visible again in [[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]], [[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]], [[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]], [[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. */ .checkuser-show, .sysop-show, .abusefilter-show, .abusefilter-helper-show, .patroller-show, .templateeditor-show, .extendedmover-show, .extendedconfirmed-show, .autoconfirmed-show, .user-show { display: none; } /* Hide the redlink generated by {{Editnotice}}, this overrides the ".sysop-show { display: none; }" above that applies to the same link as well. See [[phab:T45013]] Hide the images in editnotices to keep them readable in VE view. Long term, editnotices should become a core feature so that they can be designed responsive. */ .ve-ui-mwNoticesPopupTool-item .editnotice-redlink, .ve-ui-mwNoticesPopupTool-item .mbox-image, .ve-ui-mwNoticesPopupTool-item .mbox-imageright { display: none !important; } /* Remove bullets when there are multiple edit page warnings */ ul.permissions-errors { margin: 0; } ul.permissions-errors > li { list-style: none; } /* larger inline math */ span.mwe-math-mathml-inline { font-size: 118%; } /* Make <math display="block"> be left aligned with one space indent for * compatibility with style conventions */ .mwe-math-fallback-image-display, .mwe-math-mathml-display { margin-left: 1.6em !important; margin-top: 0.6em; margin-bottom: 0.6em; } .mwe-math-mathml-display math { display: inline; } @media screen { /* Put a chequered background behind images, only visible if they have transparency, * except on main, user, and portal namespaces */ body:not(.ns-0):not(.ns-2):not(.ns-100) .gallerybox .thumb img { background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat; } /* Display "From Wikipedia, the free encyclopedia" in skins that support it, do not apply to print mode */ #siteSub { display: block; } } /* Hide FlaggedRevs notice UI when there are no pending changes */ .flaggedrevs_draft_synced, .flaggedrevs_stable_synced, /* "Temporary" to remove links in sidebar T255381 */ #t-upload, /* Hide broken download box on Special:Book pending T285400 */ .mw-special-Book #coll-downloadbox { display: none; } /* * BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS; * SEE [[MediaWiki talk:Common.css/to do]] */ /* Infobox template style */ .infobox { border: 1px solid #a2a9b1; border-spacing: 3px; background-color: #f8f9fa; color: black; /* @noflip */ margin: 0.5em 0 0.5em 1em; padding: 0.2em; /* @noflip */ float: right; /* @noflip */ clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .infobox-header, .infobox-label, .infobox-above, .infobox-full-data, .infobox-data, .infobox-below, .infobox-subheader, .infobox-image, .infobox-navbar, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox th, .infobox td { vertical-align: top; } .infobox-label, .infobox-data, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox th, .infobox td { /* @noflip */ text-align: left; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-above, .infobox .infobox-title, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox caption { font-size: 125%; font-weight: bold; text-align: center; } .infobox-title, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox caption { padding: 0.2em; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-header, .infobox .infobox-subheader, .infobox .infobox-image, .infobox .infobox-full-data, .infobox .infobox-below { text-align: center; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-navbar { /* @noflip */ text-align: right; } /* Normal font styling for wikitable row headers with scope="row" tag */ .wikitable.plainrowheaders th[scope=row], .wikitable.plainrowheaders th[scope=rowgroup] { font-weight: normal; /* @noflip */ text-align: left; } /* Remove underlines from certain links */ .nounderlines a, .IPA a:link, .IPA a:visited { text-decoration: none !important; } /* Prevent line breaks in silly places where desired (nowrap) and links when we don't want them to (nowraplinks a) */ .nowrap, .nowraplinks a { white-space: nowrap; } /* But allow wrapping where desired: */ .wrap, .wraplinks a { white-space: normal; } /* texhtml class for inline math (based on generic times-serif class) */ span.texhtml { font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif; font-size: 118%; line-height: 1; white-space: nowrap; /* Force tabular and lining display for texhtml */ font-variant-numeric: lining-nums tabular-nums; font-kerning: none; } span.texhtml span.texhtml { font-size: 100%; } @media screen { .nochecker .gallerybox .thumb img { background-image: none; } } /* Put anything you mean to be a sitewide addition above the TemplateStyles * comment above. */ acdf2322ca41c0260ca6f6177304d46e297d2a8e Template:Infobox country 10 241 540 2023-09-30T20:22:59Z Führerredux 2 Created page with "{{infobox |templatestyles = Template:Infobox country/styles.css | bodyclass = ib-country vcard | aboveclass = adr | above = {{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}} | {{#if:{{{conventional_long_name|}}} |<div class="fn org country-name">{{{conventional_long_name|}}}</div> }}{{#if:{{{native_name|}}}{{{name|}}} |<div class="ib-country-names"><!-- -->{{br separated entries..." wikitext text/x-wiki {{infobox |templatestyles = Template:Infobox country/styles.css | bodyclass = ib-country vcard | aboveclass = adr | above = {{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}} | {{#if:{{{conventional_long_name|}}} |<div class="fn org country-name">{{{conventional_long_name|}}}</div> }}{{#if:{{{native_name|}}}{{{name|}}} |<div class="ib-country-names"><!-- -->{{br separated entries |{{{native_name|}}} |{{#if:{{{name|}}} |<div class="ib-country-name-style fn org country-name">{{{name|}}}</div> }}}}</div> }}<!-- -->{{#ifeq:{{{micronation|}}}|yes |<span class="fn org">[[Micronation]]</span> }} }} | subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }} | image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}} |{{infobox country/imagetable |image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}} |caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }} |image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }} }} }} | data1 = {{#if:{{{national_motto|}}}{{{motto|}}} |'''Motto:&nbsp;'''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!-- -->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }} }} | class2 = anthem | data2 = {{#if:{{{national_anthem|}}}{{{anthem|}}} |'''Anthem:'''&nbsp;{{if empty|{{{national_anthem|}}}|{{{anthem|}}}}} }}{{#if:{{{anthems|}}} |'''Anthems:'''&nbsp;{{{anthems}}} }}{{#if:{{{royal_anthem|}}} | <div class="ib-country-anthem">'''[[Royal anthem]]:'''&nbsp;{{{royal_anthem}}}</div> }}{{#if:{{{flag_anthem|}}} | <div class="ib-country-anthem">'''[[Flag anthem]]:'''&nbsp;{{{flag_anthem}}}</div> }}{{#if:{{{national_march|}}} | <div class="ib-country-anthem">'''National march:'''&nbsp;{{{national_march}}}</div> }}{{#if:{{{territorial_anthem|}}} | <div class="ib-country-anthem">'''Territorial anthem:'''&nbsp;{{{territorial_anthem}}}</div> }}{{#if:{{{regional_anthem|}}} | <div class="ib-country-anthem">'''Regional anthem:'''&nbsp;{{{regional_anthem}}}</div> }}{{#if:{{{state_anthem|}}} | <div class="ib-country-anthem">'''State anthem:'''&nbsp;{{{state_anthem}}}</div> }}{{#if:{{{march|}}} | <div class="ib-country-anthem">'''March:'''&nbsp;{{{march}}}</div> }} | data3 = {{#if:{{{other_symbol|}}}{{{text_symbol|}}} |{{#if:{{{other_symbol_type|}}}{{{text_symbol_type|}}} | '''{{if empty|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}'''<br/>}}<!-- -->{{if empty|{{{other_symbol|}}}|{{{text_symbol|}}}}} }} | data4 = {{#if:{{{image_map|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_width|{{{image_map_size|}}}}}}|upright=1.15|alt={{{alt_map|{{{image_map_alt|}}}}}}|title={{{map_caption|{{{image_map_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption|{{{image_map_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption|{{{image_map_caption|}}}}}}</div>}} }} | data5 = {{#if:{{{image_map2|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map2|}}}|size={{{map2_width|{{{image_map2_size|}}}}}}|upright=1.15|alt={{{alt_map2|{{{image_map2_alt|}}}}}}|title={{{map_caption2|{{{image_map2_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption2|{{{image_map2_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption2|{{{image_map2_caption|}}}}}}</div>}} }} | label6 = Status | data6 = {{#if:{{{status|}}}|{{Infobox country/status text|status={{{status|}}}|status_text={{{status_text|}}}|empire={{{empire|}}}|year_end={{{year_end|}}}|year_exile_start={{{year_exile_start|}}}|year_exile_end={{{year_exile_end|}}} }} }} | label7 = Location | data7 = {{{loctext|}}} | label8 = {{#if:{{{capital_type|}}} | {{{capital_type}}} | Capital }}{{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital |capital<!-- -->|{{#switch:{{{capital}}} | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital | {{{largest_city|}}}{{{largest_settlement|}}} = capital | not capital }}<!-- -->}}|capital <!-- (#ifeq:)-->|<!------------------------------------------ capital is largest_city/_settlement: ------------------------------------------- --><div class="ib-country-largest">and {{{largest_settlement_type|largest city}}}</div> }} | data8 = {{#if:{{{capital|}}}|{{{capital}}}{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} | rowclass9 = {{#if:{{{capital|}}}|mergedrow}} | label9 = Capital-in-exile | data9 = {{#ifexist:{{{capital_exile|}}}|[[{{{capital_exile|}}}]]|{{{capital_exile|}}}}} | rowclass10 = {{#if:{{{capital|}}}|mergedrow}} | label10 = {{#if:{{{admin_center_type|}}}| {{{admin_center_type}}} | Administrative&nbsp;center }} | data10 = {{#switch:{{{admin_center|}}} |capital | = |[[{{{capital|}}}]] = |{{{capital|}}} = |#default = {{{admin_center}}}{{#if:{{{capital|}}}||{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} }} | rowclass11 = {{#if:{{{capital|}}}{{{admin_center|}}}|mergedbottomrow}} | label11 = Largest {{{largest_settlement_type|city}}} | data11 = {{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital |capital<!-- -->|{{#switch:{{{capital}}} | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital | {{{largest_city|}}}{{{largest_settlement|}}} = capital | not capital }}<!-- -->}}|capital <!-- (#ifeq:)-->|<!-- nothing already appears above --> | {{if empty| {{{largest_city|}}} | {{{largest_settlement|}}} }} }} | rowclass12 = mergedtoprow | label12 = Official&nbsp;languages | data12 = {{{official_languages|}}} | rowclass13 = mergedrow | label13 = <span class="ib-country-lang">{{#if:{{{recognized_languages|}}}|Recognized|Recognised}}&nbsp;languages</span> | data13 = {{if empty| {{{recognized_languages|}}} | {{{recognised_languages|}}} }} | rowclass14 = mergedrow | label14 = <span class="ib-country-lang">{{#if:{{{recognized_national_languages|}}}|Recognized|Recognised}} national&nbsp;languages</span> | data14 = {{if empty| {{{recognized_national_languages|}}} | {{{recognised_national_languages|}}} | {{{national_languages|}}} }} | rowclass15 = mergedrow | label15 = <span class="ib-country-lang">{{#if:{{{recognized_regional_languages|}}}|Recognized|Recognised}} regional&nbsp;languages</span> | data15 = {{if empty| {{{recognized_regional_languages|}}} | {{{recognised_regional_languages|}}} | {{{regional_languages|}}} }} | label16 = Common&nbsp;languages | data16 = {{{common_languages|}}} | rowclass17 = {{#ifeq:{{{languages2_sub|}}}|yes |{{#ifeq:{{{languages_sub|}}}|yes |mergedrow}} |{{#ifeq:{{{languages_sub|}}}|yes |mergedbottomrow}} }} | label17 ={{#ifeq:{{{languages_sub|}}}|yes |<div class="ib-country-lang">{{if empty| {{{languages_type|}}} | Other&nbsp;languages }}</div> |{{if empty| {{{languages_type|}}} | Other&nbsp;languages }} }} | data17 = {{{languages|}}} | rowclass18 = {{#ifeq:{{{languages2_sub|}}}|yes |mergedbottomrow}} | label18 = {{#ifeq:{{{languages2_sub|}}}|yes |<div class="ib-country-lang">{{if empty|{{{languages2_type|}}} | Other&nbsp;languages }}</div> |{{if empty|{{{languages2_type|}}} | Other&nbsp;languages }} }} | data18 = {{{languages2|}}} | label19 = [[Ethnic group|Ethnic&nbsp;groups]] <!-- -->{{#if:{{{ethnic_groups_year|}}} |<div class="ib-country-ethnic"> ({{{ethnic_groups_year}}}){{{ethnic_groups_ref|}}}</div>|<div class="ib-country-ethnic">{{{ethnic_groups_ref|}}}</div>}} | data19 = {{{ethnic_groups|}}} | label20 = Religion <!-- -->{{#if:{{{religion_year|}}} |<div class="ib-country-religion"> ({{{religion_year}}}){{{religion_ref|}}}</div>|<div class="ib-country-religion">{{{religion_ref|}}}</div>}} | data20 = {{{religion|}}} | label21 = [[Demonym|Demonym(s)]] | data21 = {{#if:{{{demonym|}}} |{{#ifexist:{{{demonym}}} people | [[{{{demonym}}} people|{{{demonym}}}]] | {{{demonym}}} }} }} | label22 = Type | data22 = {{{org_type|}}} | label23 = {{if empty|{{{membership_type|}}} | Membership }} | data23 = {{{membership|}}} | label24 = {{#if:{{{government_type|}}} | {{#if:{{{politics_link|}}} | [[{{{politics_link}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!-- -->| {{#ifexist:Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!-- -->| {{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}<!-- -->}}<!-- -->}}<!-- -->}} | data24 = {{{government_type|}}} | header25 = {{#if:{{{government_type|}}} || {{#if:{{{leader_title1|}}}{{{leader_name1|}}} | {{#if:{{{name|}}}{{{membership|}}} | <!--template being used for geopolitical org:-->Leaders | <!--template being used for country/territory: -->Government }} }} }} | rowclass26 = mergedrow | data26 = {{#if:{{{leader_name1|}}}|{{Infobox country/multirow|{{{leader_title1|}}} |{{{leader_name1|}}} |{{{leader_title2|}}} |{{{leader_name2|}}} |{{{leader_title3|}}} |{{{leader_name3|}}} |{{{leader_title4|}}} |{{{leader_name4|}}} |{{{leader_title5|}}} |{{{leader_name5|}}} |{{{leader_title6|}}} |{{{leader_name6|}}} |{{{leader_title7|}}} |{{{leader_name7|}}} |{{{leader_title8|}}} |{{{leader_name8|}}} |{{{leader_title9|}}} |{{{leader_name9|}}} |{{{leader_title10|}}} |{{{leader_name10|}}} |{{{leader_title11|}}} |{{{leader_name11|}}} |{{{leader_title12|}}} |{{{leader_name12|}}} |{{{leader_title13|}}} |{{{leader_name13|}}} |{{{leader_title14|}}} |{{{leader_name14|}}} |{{{leader_title15|}}} |{{{leader_name15|}}} }} }} | rowclass27 = mergedrow | label27 = {{#if:{{{title_leader|}}}| {{{title_leader}}} }} | data27 = {{#if:{{{title_leader|}}}|&nbsp;}} | rowclass28 = mergedrow | data28 = {{#if:{{{year_leader1|}}} | {{Infobox country/multirow|{{{year_leader1|}}} |{{{leader1|}}} |{{{year_leader2|}}} |{{{leader2|}}} |{{{year_leader3|}}} |{{{leader3|}}} |{{{year_leader4|}}} |{{{leader4|}}} |{{{year_leader5|}}} |{{{leader5|}}} |{{{year_leader6|}}} |{{{leader6|}}} |{{{year_leader7|}}} |{{{leader7|}}} |{{{year_leader8|}}} |{{{leader8|}}} |{{{year_leader9|}}} |{{{leader9|}}} |{{{year_leader10|}}} |{{{leader10|}}} |{{{year_leader11|}}} |{{{leader11|}}}|{{{year_leader12|}}} |{{{leader12|}}}|{{{year_leader13|}}} |{{{leader13|}}}|{{{year_leader14|}}} |{{{leader14|}}}|{{{year_leader15|}}} |{{{leader15|}}} }} }} | rowclass29 = mergedrow | label29 = {{#if:{{{title_representative|}}}| {{{title_representative}}} }} | data29 = {{#if:{{{title_representative|}}}|&nbsp;}} | rowclass30 = mergedrow | data30 = {{#if:{{{year_representative1|}}}|{{Infobox country/multirow|{{{year_representative1|}}} |{{{representative1|}}} |{{{year_representative2|}}} |{{{representative2|}}} |{{{year_representative3|}}} |{{{representative3|}}} |{{{year_representative4|}}} |{{{representative4|}}} |{{{year_representative5|}}} |{{{representative5|}}}|{{{year_representative6|}}} |{{{representative6|}}}|{{{year_representative7|}}} |{{{representative7|}}}|{{{year_representative8|}}} |{{{representative8|}}} }} }} | rowclass31 = mergedrow | label31 = {{#if:{{{title_deputy|}}}|{{{title_deputy}}} }} | data31 = {{#if:{{{title_deputy|}}}|&nbsp;}} | rowclass32 = mergedrow | data32 = {{#if:{{{year_deputy1|}}}|{{Infobox country/multirow|{{{year_deputy1|}}} |{{{deputy1|}}} |{{{year_deputy2|}}} |{{{deputy2|}}} |{{{year_deputy3|}}} |{{{deputy3|}}} |{{{year_deputy4|}}} |{{{deputy4|}}} |{{{year_deputy5|}}} |{{{deputy5|}}} |{{{year_deputy6|}}} |{{{deputy6|}}}|{{{year_deputy7|}}} |{{{deputy7|}}}|{{{year_deputy8|}}} |{{{deputy8|}}}|{{{year_deputy9|}}} |{{{deputy9|}}}|{{{year_deputy10|}}} |{{{deputy10|}}}|{{{year_deputy11|}}} |{{{deputy11|}}}|{{{year_deputy12|}}} |{{{deputy12|}}}|{{{year_deputy13|}}} |{{{deputy13|}}}|{{{year_deputy14|}}} |{{{deputy14|}}}|{{{year_deputy15|}}} |{{{deputy15|}}} }} }} | label40 = Legislature | data40 = {{{legislature|}}} | rowclass41 = mergedrow | label41 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{type_house1|}}}|{{{type_house1}}}|[[Upper house]]}}</div> | data41 = {{{upper_house|{{{house1|}}}}}} | rowclass42 = mergedbottomrow | label42 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{type_house2|}}}|{{{type_house2}}}|[[Lower house]]}}</div> | data42 = {{{lower_house|{{{house2|}}}}}} | rowclass43 = {{#if:{{{established_event1|}}} |mergedtoprow}} | header43 = {{#if:{{{established_event1|}}}{{{sovereignty_type|}}} |{{#if:{{{sovereignty_type|}}} | {{{sovereignty_type}}}<!-- -->{{#if:{{{sovereignty_note|}}} |&nbsp;<div class="ib-country-sovereignty">{{{sovereignty_note}}}</div>}} | {{#if:{{{established|}}}| | Establishment }} }} }} | label44 = Establishment | data44 = {{#if:{{{sovereignty_type|}}} | |{{{established|}}} }} | label45 = {{#if:{{{era|}}}|Historical era|History}} | data45 = {{#if:{{{era|}}} |{{#ifexist:{{{era|}}}|[[{{{era}}}]]|{{{era}}}}} | {{#if:{{{date_start|}}}{{{year_start|}}}|&nbsp;}}}} | rowclass46 = {{#if:{{{established_event1|}}} |mergedrow |mergedbottomrow}} | data46 = {{#if:{{{established_date1|}}}|{{Infobox country/multirow |{{{established_event1|}}} |{{{established_date1||}}} |{{{established_event2|}}} |{{{established_date2||}}} |{{{established_event3|}}} |{{{established_date3|}}} |{{{established_event4|}}} |{{{established_date4|}}} |{{{established_event5|}}} |{{{established_date5|}}} |{{{established_event6|}}} |{{{established_date6|}}} |{{{established_event7|}}} |{{{established_date7|}}} |{{{established_event8|}}} |{{{established_date8|}}} |{{{established_event9|}}} |{{{established_date9|}}} |{{{established_event10|}}} |{{{established_date10|}}} |{{{established_event11|}}} |{{{established_date11|}}} |{{{established_event12|}}} |{{{established_date12|}}} |{{{established_event13|}}} |{{{established_date13|}}} |{{{established_event14|}}} |{{{established_date14|}}} |{{{established_event15|}}} |{{{established_date15|}}} |{{{established_event16|}}} |{{{established_date16|}}} |{{{established_event17|}}} |{{{established_date17|}}} |{{{established_event18|}}} |{{{established_date18|}}} |{{{established_event19|}}} |{{{established_date19|}}} |{{{established_event20|}}} |{{{established_date20|}}} }} }} | rowclass47 = {{#if:{{{date_start|}}}{{{year_start|}}} |mergedrow |mergedbottomrow}} | data47 = {{#if:{{{date_start|}}}{{{year_start|}}}|{{Infobox country/multirow |{{{event_pre|}}} |{{{date_pre|}}} |{{if empty|{{{event_start|}}}|Established}} |{{{date_start|}}} {{{year_start|}}} |{{{event1|}}} |{{{date_event1|}}} |{{{event2|}}} |{{{date_event2|}}} |{{{event3|}}} |{{{date_event3|}}} |{{{event4|}}} |{{{date_event4|}}} |{{{event5|}}} |{{{date_event5|}}} |{{{event6|}}} |{{{date_event6|}}}|{{{event7|}}} |{{{date_event7|}}}|{{{event8|}}} |{{{date_event8|}}}|{{{event9|}}} |{{{date_event9|}}}|{{{event10|}}} |{{{date_event10|}}} |{{if empty|{{{event_end|}}}|Disestablished}} |{{{date_end|}}} {{{year_end|}}} |{{{event_post|}}} |{{{date_post|}}} }} }} | rowclass60 = mergedtoprow | header60 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}} | {{#if:{{{area_link|}}} | [[{{{area_link}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]] | {{#ifexist:Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]] | Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}<!-- -->}}<!-- -->}} }} | rowclass61 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label61 = <div class="ib-country-fake-li">•&nbsp;{{{area_label|Total}}}{{{FR_foot4|}}}</div> | data61 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}} |{{#if:{{{area_km2|}}}{{{area_sq_mi|}}} |{{convinfobox|{{{area_km2|}}}|km2|{{{area_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_ha|}}}{{{area_acre|}}} |{{convinfobox|{{{area_ha|}}}|ha|{{{area_acre|}}}|acre|abbr=on}} }} }}{{{area_footnote|}}}{{#if:{{{area_rank|}}} |&#32;([[List of countries and dependencies by area|{{{area_rank}}}]]) }} }} | rowclass62 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label62 = <div class="ib-country-fake-li">•&nbsp;Land</div> | data62 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}} |{{#if:{{{area_land_km2|}}}{{{area_land_sq_mi|}}} |{{convinfobox|{{{area_land_km2|}}}|km2|{{{area_land_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_land_ha|}}}{{{area_land_acre|}}} |{{convinfobox|{{{area_land_ha|}}}|ha|{{{area_land_acre|}}}|acre|abbr=on}} }} }}{{{area_land_footnote|}}} }} | rowclass63 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label63 = <div class="ib-country-fake-li">•&nbsp;Water</div> | data63 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}} |{{#if:{{{area_water_km2|}}}{{{area_water_sq_mi|}}} |{{convinfobox|{{{area_water_km2|}}}|km2|{{{area_water_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_water_ha|}}}{{{area_water_acre|}}} |{{convinfobox|{{{area_water_ha|}}}|ha|{{{area_water_acre|}}}|acre|abbr=on}} }} }}{{{area_water_footnote|}}} }} | rowclass64 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label64 = <div class="ib-country-fake-li">•&nbsp;Water&nbsp;(%)</div> | data64 = {{{percent_water|}}} | rowclass65 = {{#if:{{{FR_metropole|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label65 = <div class="ib-country-fake-li">•&nbsp;{{{area_label2|}}}</div> | data65 = {{#if:{{{area_label2|}}}| {{{area_data2|}}} }} | rowclass66 = {{#if:{{{FR_metropole|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label66 = <div class="ib-country-fake-li">•&nbsp;{{{area_label3|}}}</div> | data66 = {{#if:{{{area_label3|}}}| {{{area_data3|}}} }} | rowclass67 = {{#if:{{{FR_metropole|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label67 = {{{stat_year1|}}}{{{ref_area1|}}} | data67 = {{#if: {{{stat_area1|}}} | {{convinfobox|{{{stat_area1|}}}|km2||sqmi}} }} | rowclass68 = {{#if:{{{FR_metropole|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label68 = {{{stat_year2|}}}{{{ref_area2|}}} | data68 = {{#if: {{{stat_area2|}}} | {{convinfobox|{{{stat_area2|}}}|km2||sqmi}} }} | rowclass69 = {{#if:{{{FR_metropole|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label69 = {{{stat_year3|}}}{{{ref_area3|}}} | data69 = {{#if: {{{stat_area3|}}} | {{convinfobox|{{{stat_area3|}}}|km2||sqmi}} }} | rowclass70 = {{#if:{{{FR_metropole|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label70 = {{{stat_year4|}}}{{{ref_area4|}}} | data70 = {{#if: {{{stat_area4|}}} | {{convinfobox|{{{stat_area4|}}}|km2||sqmi}} }} | rowclass71 = {{#if:{{{FR_metropole|}}}|mergedrow|mergedbottomrow}} | label71 = {{{stat_year5|}}}{{{ref_area5|}}} | data71 = {{#if: {{{stat_area5|}}} | {{convinfobox|{{{stat_area5|}}}|km2||sqmi}} }} | rowclass72 = mergedrow | label72 = <div class="ib-country-fake-li">•&nbsp;{{{FR_metropole}}}</div> | data72 = {{#if:{{{FR_metropole|}}}| <nowiki /> }} | rowclass73 = mergedrow | label73 = <div class="ib-country-fake-li2">•&nbsp;[[Institut Géographique National|IGN]]{{{FR_foot2|}}}</div> | data73 = {{#if:{{{FR_metropole|}}} |{{#if:{{{FR_IGN_area_km2|}}}{{{FR_IGN_area_sq_mi|}}} |{{convinfobox|{{{FR_IGN_area_km2|}}}|km2|{{{FR_IGN_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_IGN_area_rank|}}}|&#32;([[List of countries and dependencies by area|{{{FR_IGN_area_rank|}}}]])}} }} }} | rowclass89 = mergedbottomrow | label89 = <div class="ib-country-fake-li2">•&nbsp;[[Cadastre]]{{{FR_foot3|}}}</div> | data89 = {{#if:{{{FR_metropole|}}} |{{#if:{{{FR_cadastre_area_km2|}}}{{{FR_cadastre_area_sq_mi|}}} | {{convinfobox|{{{FR_cadastre_area_km2|}}}|km2|{{{FR_cadastre_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_cadastre_area_rank|}}}|&#32;([[List of countries and dependencies by area|{{{FR_cadastre_area_rank|}}}]])}} }} }} | rowclass90 = mergedtoprow | header90 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}} |{{#if:{{{population_link|}}} | {{#ifeq:{{{population_link}}}|no|Population|[[{{{population_link}}}|Population]]}}<!-- -->| {{#ifexist:Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Population]]<!-- -->| Population<!-- -->}}<!-- -->}} }} | rowclass91 = mergedrow | label91 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{population_estimate_year|}}} |{{{population_estimate_year}}} estimate|Estimate}}</div> | data91 = {{#if:{{{population_estimate|}}} |{{{population_estimate}}}<!-- -->{{#if:{{{population_estimate_rank|}}} |&#32;([[List of countries and dependencies by population|{{{population_estimate_rank}}}]])}} }} | rowclass92 = mergedrow | label92= <div class="ib-country-fake-li">•&nbsp;{{{population_label2|}}}</div> | data92= {{#if:{{{population_label2|}}}|{{{population_data2|}}}}} | rowclass93= mergedrow | label93= <div class="ib-country-fake-li">•&nbsp;{{{population_label3|}}}</div> | data93= {{#if:{{{population_label3|}}}|{{{population_data3|}}}}} | rowclass94= mergedrow | data94= {{#if:{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}|{{infobox country/multirow|{{{stat_year1|}}}{{{ref_pop1|}}} |{{{stat_pop1|}}}|{{{stat_year2|}}}{{{ref_pop2|}}} |{{{stat_pop2|}}}|{{{stat_year3|}}}{{{ref_pop3|}}} |{{{stat_pop3|}}}|{{{stat_year4|}}}{{{ref_pop4|}}} |{{{stat_pop4|}}}|{{{stat_year5|}}}{{{ref_pop5|}}} |{{{stat_pop5|}}} }} }} | rowclass95= mergedrow | label95= <div class="ib-country-fake-li">•&nbsp;{{#if:{{{population_census_year|}}} |{{{population_census_year}}}&nbsp;census|Census}}</div> | data95= {{#if:{{{population_census|}}} |{{{population_census}}}<!-- -->{{#if:{{{population_census_rank|}}} |&#32;([[List of countries and dependencies by population|{{{population_census_rank}}}]])}} }} | rowclass96= mergedrow | label96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|{{nobold|1=&nbsp;({{{FR_total_population_estimate_year}}})}}}}}} | data96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|<nowiki />}}}} | rowclass97 = mergedrow | label97= <div class="ib-country-fake-li">•&nbsp;Total{{{FR_foot|}}}</div> | data97= {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate|}}} |{{{FR_total_population_estimate}}}{{#if:{{{FR_total_population_estimate_rank|}}}|&#32;([[List of countries by population in 2005|{{{FR_total_population_estimate_rank}}}]])}} }} }} | rowclass98 = mergedrow | label98= <div class="ib-country-fake-li">•&nbsp;{{{FR_metropole}}}</div> | data98= {{#if:{{{FR_metropole_population|}}}|{{{FR_metropole_population}}}{{#if:{{{FR_metropole_population_estimate_rank|}}} |&#32;([[List of countries by population in 2005|{{{FR_metropole_population_estimate_rank}}}]])}} }} | rowclass99 = mergedbottomrow | label99= <div class="ib-country-fake-li">•&nbsp;Density{{{FR_foot5|}}}</div> | data99= {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}} | {{convinfobox|{{{population_density_km2|}}}|/km2|{{{population_density_sq_mi|}}}|/sqmi|1|abbr=on}}{{{pop_den_footnote|}}}<!-- -->{{#if:{{{population_density_rank|}}} |&#32;([[List of countries and dependencies by population density|{{{population_density_rank}}}]])}} }} | rowclass100 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}|mergedbottomrow|mergedtoprow}} | label100 = Membership | data100= {{{nummembers|}}} | rowclass101= mergedtoprow | label101= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&nbsp;{{nobold|([[Purchasing power parity|PPP]])}} | data101= {{#if:{{{GDP_PPP|}}}{{{GDP_PPP_per_capita|}}} |{{#if:{{{GDP_PPP_year|}}} |{{{GDP_PPP_year}}}&nbsp;}}estimate }} | rowclass102= mergedrow | label102= <div class="ib-country-fake-li">•&nbsp;Total</div> | data102= {{#if:{{{GDP_PPP|}}} |{{{GDP_PPP}}}<!-- -->{{#if:{{{GDP_PPP_rank|}}} |&#32;([[List of countries by GDP (PPP)|{{{GDP_PPP_rank}}}]])}} }} | rowclass103= mergedbottomrow | label103= <div class="ib-country-fake-li">•&nbsp;Per capita</div> | data103= {{#if:{{{GDP_PPP_per_capita|}}} |{{{GDP_PPP_per_capita}}}<!-- -->{{#if:{{{GDP_PPP_per_capita_rank|}}} |&#32;([[List of countries by GDP (PPP) per capita|{{{GDP_PPP_per_capita_rank}}}]])}} }} | rowclass104= mergedtoprow | label104= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&nbsp;{{nobold|(nominal)}} | data104= {{#if:{{{GDP_nominal|}}}{{{GDP_nominal_per_capita|}}} |{{#if:{{{GDP_nominal_year|}}} |{{{GDP_nominal_year}}}&nbsp;}}estimate }} | rowclass105= mergedrow | label105= <div class="ib-country-fake-li">•&nbsp;Total</div> | data105= {{#if:{{{GDP_nominal|}}} |{{{GDP_nominal}}}<!-- -->{{#if:{{{GDP_nominal_rank|}}} |&#32;([[List of countries by GDP (nominal)|{{{GDP_nominal_rank}}}]])}} }} | rowclass106= mergedbottomrow | label106= <div class="ib-country-fake-li">•&nbsp;Per capita</div> | data106= {{#if:{{{GDP_nominal_per_capita|}}} | {{{GDP_nominal_per_capita}}}<!-- -->{{#if:{{{GDP_nominal_per_capita_rank|}}} |&#32;([[List of countries by GDP (nominal) per capita|{{{GDP_nominal_per_capita_rank}}}]])}} }} | label107= [[Gini_coefficient|Gini]]{{#if:{{{Gini_year|}}} |&nbsp;{{nobold|1=({{{Gini_year}}})}}}} | data107= {{#if:{{{Gini|}}} | {{#switch:{{{Gini_change|}}} |increase = {{increaseNegative}}&nbsp;<!-- -->|decrease = {{decreasePositive}}&nbsp;<!-- -->|steady = {{steady}}&nbsp;<!-- -->}}{{{Gini}}}{{{Gini_ref|}}}<br/><!-- ---------Evaluate and add Gini category:---------- -->{{nowrap|1=<!-- -->{{#iferror:<!-- -->{{#ifexpr:{{{Gini}}}>100 <!-- -->| {{error|Error: Gini value above 100}}<!--Handled by outer #iferror, not visible to users--><!-- -->| {{#ifexpr:{{{Gini}}}>=60 |{{color|red|very high}}<!-- -->| {{#ifexpr:{{{Gini}}}>=46 <!-- -->| {{color|darkred|high}}<!-- -->| {{#ifexpr:{{{Gini}}}>=30 <!-- -->| {{color|orange|medium}}<!-- -->| {{#ifexpr:{{{Gini}}}>=0 <!-- -->| {{color|forestgreen|low}}<!-- -->| {{error|Error:Gini value below 0}}<!--Handled by outer #iferror, not visible to users--><!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->| {{error|Error: Invalid Gini value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!-- -->}}<!-- -->}}<!-- -----------Add Gini_rank (if supplied):---------- -->{{#if:{{{Gini_rank|}}} |&nbsp;·&nbsp;[[List of countries by income equality|{{{Gini_rank}}}]]<!-- -->}}<!-- -->}} | label108= [[Human Development Index|HDI]]{{#if:{{{HDI_year|}}} |&nbsp;{{nobold|1=({{{HDI_year}}})}}}} | data108= {{#if:{{{HDI|}}} | {{#switch:{{{HDI_change|}}} |increase = {{increase}}&nbsp;<!-- -->|decrease = {{decrease}}&nbsp;<!-- -->|steady = {{steady}}&nbsp;<!-- -->}}{{{HDI}}}{{{HDI_ref|}}}<br/><!-- ---------Evaluate and add HDI category:--------- -->{{nowrap|1=<!-- -->{{#iferror:<!-- -->{{#ifexpr:{{{HDI}}}>1 <!-- -->| {{error|Error: HDI value greater than 1}}<!--Handled by outer #iferror, not visible to users--><!-- -->| {{#ifexpr:{{{HDI}}}>0.799 <!-- -->| {{color|darkgreen|very high}}<!-- -->| {{#ifexpr:{{{HDI}}}>0.699 <!-- -->| {{color|forestgreen|high}}<!-- -->| {{#ifexpr:{{{HDI}}}>0.549 <!-- -->| {{color|orange|medium}}<!-- -->| {{#ifexpr:{{{HDI}}}>=0.000<!-- -->| {{color|red|low}}<!-- -->| {{error|Error: HDI value less than 0}}<!--Handled by outer #iferror, not visible to users--><!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->| {{error|Error: Invalid HDI value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!-- -->}}<!-- -->}}<!-- ----------Add HDI_rank (if supplied):----------- -->{{#if:{{{HDI_rank|}}} |&nbsp;·&nbsp;[[List of countries by Human Development Index|{{{HDI_rank}}}]]<!-- -->}}<!-- -->}} | label109= {{#ifeq:{{{micronation|}}}|yes|Purported currency|Currency}} | data109= {{#if:{{{currency|}}} | {{{currency}}} {{#if:{{{currency_code|}}} |([[ISO 4217|{{{currency_code}}}]])}} }} | rowclass119= {{#if:{{{utc_offset_DST|}}}{{{DST_note|}}} |mergedtoprow}} | label119= Time zone | data119= {{#if:{{{utc_offset|}}} |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset}}}}} {{#if:{{{time_zone|}}}|({{{time_zone}}})}} |{{{time_zone|}}} }} | rowclass120= {{#if:{{{DST_note|}}} |mergedrow |mergedbottomrow}} | label120= <div class="ib-country-fake-li">•&nbsp;Summer&nbsp;([[Daylight saving time|DST]])</div> | data120= {{#if:{{{utc_offset_DST|}}} |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset_DST}}}}} {{#if:{{{time_zone_DST|}}}|({{{time_zone_DST}}})|{{#if:{{{DST|}}}|({{{DST}}})}}}} |{{#if:{{{time_zone_DST|}}}|{{{time_zone_DST}}}|{{{DST|}}}}} }} | rowclass121= mergedbottomrow | label121= <nowiki /> | data121= {{{DST_note|}}} | label122 = [[Antipodes]] | data122= {{{antipodes|}}} | label123 = Date format | data123= {{{date_format|}}} | label125= [[Left- and right-hand traffic|Driving side]] | data125= {{#if:{{{drives_on|}}} | {{lcfirst:{{{drives_on}}}}} }} | label126= {{#if:{{{calling_code|}}} |{{#ifexist:Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Calling code]] | Calling code }} }} | data126= {{{calling_code|}}} | label127= [[ISO 3166|ISO 3166 code]] | data127= {{#switch:{{{iso3166code|}}} |omit = <!--(do nothing)--> | = <!--if iso3166code is not supplied: -->{{#if:{{{common_name|}}} | {{#if:{{ISO 3166 code|{{{common_name}}}|nocat=true}} | [[ISO 3166-2:{{ISO 3166 code|{{{common_name}}}}}|{{ISO 3166 code|{{{common_name}}}}}]] }} }} |#default = [[ISO 3166-2:{{uc:{{{iso3166code}}}}}|{{uc:{{{iso3166code}}}}}]] }} | label128= [[Country code top-level domain|Internet TLD]] | data128= {{{cctld|}}} | data129 = {{#if:{{{official_website|}}} |<div class="ib-country-website">'''Website'''<br/>{{{official_website}}}</div> }} | data130= {{#if:{{{image_map3|{{{location_map|}}}}}} | {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map3|{{{location_map|}}}}}}|size={{{map3_width|}}}|upright=1.15|alt={{{alt_map3|}}}|title=Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption3|}}}|<div class="ib-country-map-caption3">{{{map_caption3|}}}</div>}} }} | data134 = {{#if:{{{p1|}}}{{{s1|}}} |{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}}} }} | label135 = Today part of | data135 = {{{today|}}} | data136 = {{#if:{{{footnote_a|}}}{{{footnote_b|}}}{{{footnote_c|}}}{{{footnote_d|}}}{{{footnote_e|}}}{{{footnote_f|}}}{{{footnote_g|}}}{{{footnote_h|}}} |<div class="ib-country-fn"><ol class="ib-country-fn-alpha"> {{#if:{{{footnote_a|}}}|<li value=1>{{{footnote_a|}}}</li> }}{{#if:{{{footnote_b|}}}|<li value=2>{{{footnote_b|}}}</li> }}{{#if:{{{footnote_c|}}}|<li value=3>{{{footnote_c|}}}</li> }}{{#if:{{{footnote_d|}}}|<li value=4>{{{footnote_d|}}}</li> }}{{#if:{{{footnote_e|}}}|<li value=5>{{{footnote_e|}}}</li> }}{{#if:{{{footnote_f|}}}|<li value=6>{{{footnote_f|}}}</li> }}{{#if:{{{footnote_g|}}}|<li value=7>{{{footnote_g|}}}</li> }}{{#if:{{{footnote_h|}}}|<li value=8>{{{footnote_h|}}}</li>}} </ol></div>}} | data137 = {{#if:{{{footnote1|}}}{{{footnote2|}}}{{{footnote3|}}}{{{footnote4|}}}{{{footnote5|}}}{{{footnote6|}}}{{{footnote7|}}}{{{footnote8|}}} |<div class="ib-country-fn"><ol class="ib-country-fn-num"> {{#if:{{{footnote1|}}}|<li value=1>{{{footnote1|}}}</li> }}{{#if:{{{footnote2|}}}|<li value=2>{{{footnote2|}}}</li> }}{{#if:{{{footnote3|}}}|<li value=3>{{{footnote3|}}}</li> }}{{#if:{{{footnote4|}}}|<li value=4>{{{footnote4|}}}</li> }}{{#if:{{{footnote5|}}}|<li value=5>{{{footnote5|}}}</li> }}{{#if:{{{footnote6|}}}|<li value=6>{{{footnote6|}}}</li> }}{{#if:{{{footnote7|}}}|<li value=7>{{{footnote7|}}}</li> }}{{#if:{{{footnote8|}}}|<li value=8>{{{footnote8|}}}</li>}} </ol></div>}} | data138 = {{#if:{{{footnotes|}}}|<div class="ib-country-fn">{{{footnotes}}}{{#if:{{{footnotes2|}}}|<br>{{{footnotes2}}}}}</div>}} | belowclass = mergedtoprow noprint | below = {{#if:{{{navbar|}}}| {{navbar|{{{navbar|}}}}} }} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox country with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox country]] with unknown parameter "_VALUE_"|ignoreblank=y| admin_center_type | admin_center | alt_coat | alt_flag | alt_flag2 | alt_map | alt_map2 | alt_map3 | alt_symbol | anthem | anthems | antipodes | area_acre | area_data2 | area_data3 | area_footnote | area_ha | area_km2 | area_label | area_label2 | area_label3 | area_land_acre | area_land_footnote | area_land_ha | area_land_km2 | area_land_sq_mi | area_link | area_rank | area_sq_mi | area_water_acre | area_water_footnote | area_water_ha | area_water_km2 | area_water_sq_mi | border_p1 | border_p2 | border_p3 | border_p4 | border_p5 | border_p6 | border_p7 | border_p8 | border_p9 | border_p10 | border_p11 | border_p12 | border_p13 | border_p14 | border_p15 | border_p16 | border_p17 | border_p18 | border_p19 | border_p20| border_p21 | border_s1 | border_s2 | border_s3 | border_s4 | border_s5 | border_s6 | border_s7 | border_s8 | border_s9 | border_s10 | border_s11 | border_s12 | border_s13 | border_s14 | border_s15 | border_s16 | border_s17 | border_s18 | border_s19 | border_s20 | border_s21 | calling_code | capital_exile | capital_type | capital | cctld | coa_size | coat_alt | common_languages | common_name | conventional_long_name | coordinates | currency_code | currency | date_end | date_event1 | date_event2 | date_event3 | date_event4 | date_event5 | date_event6 | date_event7 | date_event8 | date_event9 | date_event10 | date_format | date_post | date_pre | date_start | demonym | deputy1 | deputy2 | deputy3 | deputy4 | deputy5 | deputy6 | deputy7 | deputy8 | deputy9 | deputy10 | deputy11 | deputy12 | deputy13 | deputy14 | deputy15 | drives_on | DST_note | DST | empire | englishmotto | era | established_date1 | established_date2 | established_date3 | established_date4 | established_date5 | established_date6 | established_date7 | established_date8 | established_date9 | established_date10 | established_date11 | established_date12 | established_date13 | established_date14 | established_date15 | established_date16 | established_date17 | established_date18 | established_date19 | established_date20 | established_event1 | established_event2 | established_event3 | established_event4 | established_event5 | established_event6 | established_event7 | established_event8 | established_event9 | established_event10 | established_event11 | established_event12 | established_event13 | established_event14 | established_event15 | established_event16 | established_event17 | established_event18 | established_event19 | established_event20 | established | ethnic_groups_ref | ethnic_groups_year | ethnic_groups | event_end | event_post | event_pre | event_start | event1 | event2 | event3 | event4 | event5 | event6 | event7 | event8 | event9 | event10 | flag| flag_alt | flag_alt2 | flag_border | flag_caption | flag_caption | flag_p1 | flag_p2 | flag_p3 | flag_p4 | flag_p5 | flag_p6 | flag_p7 | flag_p8 | flag_p9 | flag_p10 | flag_p11 | flag_p12 | flag_p13 | flag_p14 | flag_p15 | flag_p16 | flag_p17 | flag_p18 | flag_p19 | flag_p20 | flag_p21 | flag_s1 | flag_s2 | flag_s3 | flag_s4 | flag_s5 | flag_s6 | flag_s7 | flag_s8 | flag_s9 | flag_s10 | flag_s11 | flag_s12 | flag_s13 | flag_s14 | flag_s15 | flag_s16 | flag_s17 | flag_s18 | flag_s19 | flag_s20 | flag_s21 | flag_size | flag_type | flag_type_article | flag_width | flag2_border | footnote_a | footnote_a | footnote_b | footnote_b | footnote_c | footnote_c | footnote_d | footnote_d | footnote_e | footnote_e | footnote_f | footnote_f | footnote_g | footnote_g | footnote_h | footnote_h | footnote1 | footnote1 | footnote2 | footnote2 | footnote3 | footnote3 | footnote4 | footnote4 | footnote5 | footnote5 | footnote6 | footnote6 | footnote7 | footnote7 | footnote8 | footnote8 | footnotes | footnotes2 | FR_cadastre_area_km2 | FR_cadastre_area_rank | FR_cadastre_area_sq_mi | FR_foot | FR_foot2 | FR_foot3 | FR_foot4 | FR_foot5 | FR_IGN_area_km2 | FR_IGN_area_rank | FR_IGN_area_sq_mi | FR_metropole_population_estimate_rank | FR_metropole_population | FR_metropole | FR_total_population_estimate_rank | FR_total_population_estimate_year | FR_total_population_estimate | GDP_nominal_per_capita_rank | GDP_nominal_per_capita | GDP_nominal_rank | GDP_nominal_year | GDP_nominal | GDP_PPP_per_capita_rank | GDP_PPP_per_capita | GDP_PPP_rank | GDP_PPP_year | GDP_PPP | Gini_change | Gini_rank | Gini_ref | Gini_year | Gini | government_type | HDI_change | HDI_rank | HDI_ref | HDI_year | HDI | house1 | house2 | image_coat | image_flag | image_flag2 | image_map_alt | image_map_caption | image_map_size | image_map | image_map2_alt | image_map2_caption | image_map2_size | image_map2 | image_map3 | image_p1 | image_p2 | image_p3 | image_p4 | image_p5 | image_p6 | image_p7 | image_p8 | image_p9 | image_p10 | image_p11 | image_p12 | image_p13 | image_p14 | image_p15 | image_p16 | image_p17 | image_p18 | image_p19 | image_p20 | image_p21 | image_s1 | image_s2 | image_s3 | image_s4 | image_s5 | image_s6 | image_s7 | image_s8 | image_s9 | image_s10 | image_s11 | image_s12 | image_s13 | image_s14 | image_s15 | image_s16 | image_s17 | image_s18 | image_s19 | image_s20 | image_s21 | image_symbol | iso3166code | languages_sub | languages_type | languages | languages2_sub | languages2_type | languages2 | largest_city | largest_settlement_type | largest_settlement | leader_name1 | leader_name2 | leader_name3 | leader_name4 | leader_name5 | leader_name6 | leader_name7 | leader_name8 | leader_name9 | leader_name10 | leader_name11 | leader_name12 | leader_name13 | leader_name14 | leader_name15 | leader_title1 | leader_title2 | leader_title3 | leader_title4 | leader_title5 | leader_title6 | leader_title7 | leader_title8 | leader_title9 | leader_title10 | leader_title11 | leader_title12 | leader_title13 | leader_title14 | leader_title15 | leader1 | leader2 | leader3 | leader4 | leader5 | leader6 | leader7 | leader8 | leader9 | leader10 | leader11 | leader12 | leader13 | leader14 | leader15 | legislature | life_span | linking_name | location_map | loctext | lower_house | map_caption | map_caption2 | map_caption3 | map_width | map2_width | map3_width | membership_type | membership | micronation | motto | name | national_anthem | national_languages | national_motto | native_name | navbar | nummembers | official_languages | official_website | org_type | other_symbol_type | other_symbol | p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 | p9 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p20 | p21 | patron_saint | patron_saints | percent_water | politics_link | pop_den_footnote | population_census_rank | population_census_year | population_census | population_data2 | population_data3 | population_density_km2 | population_density_rank | population_density_sq_mi | population_estimate_rank | population_estimate_year | population_estimate | population_label2 | population_label3 | population_link | recognised_languages | recognised_national_languages | recognised_regional_languages | recognized_languages | recognized_national_languages | ref_area1 | ref_area2 | ref_area3 | ref_area4 | ref_area5 | ref_pop1 | ref_pop2 | ref_pop3 | ref_pop4 | ref_pop5 | regional_languages | recognized_regional_languages | religion_ref | religion_year | religion | representative1 | representative2 | representative3 | representative4 | representative5 | representative6 | representative7 | representative8 | royal_anthem | flag_anthem | march | national_march | regional_anthem | territorial_anthem | state_anthem | s1 | s2 | s3 | s4 | s5 | s6 | s7 | s8 | s9 | s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 | s18 | s19 | s20 | s21 | sovereignty_note | sovereignty_type | stat_area1 | stat_area2 | stat_area3 | stat_area4 | stat_area5 | stat_pop1 | stat_pop2 | stat_pop3 | stat_pop4 | stat_pop5 | stat_year1 | stat_year2 | stat_year3 | stat_year4 | stat_year5 | status_text | status | symbol| symbol_type_article | symbol_type | symbol_width | text_symbol_type | text_symbol | time_zone_DST | time_zone | title_deputy | title_leader | title_representative | today | type_house1 | type_house2 | upper_house | utc_offset_DST | utc_offset | year_deputy1 | year_deputy2 | year_deputy3 | year_deputy4 | year_deputy5 | year_deputy6 | year_deputy7 | year_deputy8 | year_deputy9 | year_deputy10 | year_deputy11 | year_deputy12 | year_deputy13 | year_deputy14 | year_deputy15 | year_end | year_exile_end | year_exile_start | year_leader1 | year_leader2 | year_leader3 | year_leader4 | year_leader5 | year_leader6 | year_leader7 | year_leader8 | year_leader9 | year_leader10 | year_leader11 | year_leader12 | year_leader13 | year_leader14 | year_leader15 | year_representative1 | year_representative2 | year_representative3 | year_representative4 | year_representative5 | year_representative6 | year_representative7 | year_representative8 | year_start}}{{main other| {{#if:{{both|{{{image_coat|}}}|{{{image_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|A]] }}{{#if:{{both|{{{alt_coat|}}}|{{{alt_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|B]] }}{{#if:{{both|{{{motto|}}}|{{{national_motto|}}}}}|[[Category:Pages using infobox country with syntax problems|C]] }}{{#if:{{both|{{{national_anthem|}}}|{{{anthem|}}}}}|[[Category:Pages using infobox country with syntax problems|D]] }}{{#if:{{both|{{{other_symbol|}}}|{{{text_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|E]] }}{{#if:{{both|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}|[[Category:Pages using infobox country with syntax problems|F]] }}{{#if:{{both|{{{largest_city|}}}|{{{largest_settlement|}}}}}|[[Category:Pages using infobox country with syntax problems|G]] }}{{#if:{{both|{{{recognized_languages|}}}|{{{recognised_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|H]] }}{{#if:{{both|{{{recognized_national_languages|}}}|{{{recognised_national_languages|}}}}}{{both|{{{recognized_regional_languages|}}}|{{{recognised_regional_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|I]] }}{{#if:{{{official_languages|}}}||{{#if:{{{recognized_languages|}}}{{{recognised_languages|}}}{{{recognized_national_languages|}}}{{{recognised_national_languages|}}}{{{recognized_regional_languages|}}}{{{recognised_regional_languages|}}}|[[Category:Pages using infobox country with syntax problems|J]]}} }}{{#if:{{both|{{{area_km2|}}}|{{{area_ha|}}}}}{{both|{{{area_land_km2|}}}|{{{area_land_ha|}}}}}{{both|{{{area_water_km2|}}}|{{{area_water_ha|}}}}}|[[Category:Pages using infobox country with syntax problems|K]] }}{{#if:{{both|{{{DST|}}}|{{{time_zone_DST|}}}}}|[[Category:Pages using infobox country with syntax problems|L]] }}{{#if:{{{time_zone|}}}{{{utc_offset|}}}||{{#if:{{{time_zone_DST|}}}{{{utc_offset_DST|}}}|[[Category:Pages using infobox country with syntax problems|M]]}} }}{{#if:{{both|{{{sovereignty_type|}}}|{{{established|}}} }}|[[Category:Pages using infobox country with syntax problems|O]] }}{{#if:{{{languages|}}}|{{#if:{{{languages_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}} }}{{#if:{{{languages2|}}}|{{#if:{{{languages2_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}} }}{{#if:{{{flag_type|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|T{{PAGENAME}}]] }}{{#if:{{{flag_caption|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|C{{PAGENAME}}]] }}{{#if:{{{symbol_type|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|T{{PAGENAME}}]] }}{{#if:{{{symbol_caption|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|C{{PAGENAME}}]] }}}}<!-- Tracking categories from merge with {{infobox former country}}. After all cats are empty/have been checked, these can be removed. -->{{#if:{{{status_text|}}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Colony|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Exile|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}}}}} }}<!--End of former country tracking cats--><noinclude> {{documentation}} </noinclude> be47d674190a41bd16abfd73bfb38394b5c704f2 Template:Infobox country/style.css 10 242 541 2023-09-30T20:23:43Z Führerredux 2 Created page with "/* {{pp|small=y}} */ .ib-country { border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-country td, .ib-country th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-country .mergedtoprow .infobox-header, .ib-country .mergedtoprow .infobox-label, .ib-country .mergedtoprow .infobox-data, .ib-country .mergedtoprow .infobox-full-data, .ib-country .mergedtoprow .in..." sanitized-css text/css /* {{pp|small=y}} */ .ib-country { border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-country td, .ib-country th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-country .mergedtoprow .infobox-header, .ib-country .mergedtoprow .infobox-label, .ib-country .mergedtoprow .infobox-data, .ib-country .mergedtoprow .infobox-full-data, .ib-country .mergedtoprow .infobox-below { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.2em 0.6em; } .ib-country .mergedrow .infobox-label, .ib-country .mergedrow .infobox-data, .ib-country .mergedrow .infobox-full-data { border: 0; padding: 0 0.6em 0.2em 0.6em; } .ib-country .mergedbottomrow .infobox-label, .ib-country .mergedbottomrow .infobox-data, .ib-country .mergedbottomrow .infobox-full-data { border-top: 0; border-bottom: 1px solid #a2a9b1; padding: 0 0.6em 0.4em 0.6em; } .ib-country .infobox-header { text-align: left; } .ib-country .infobox-above { font-size: 125%; line-height: 1.2; } .ib-country-names { padding-top: 0.25em; font-weight: normal; } .ib-country-name-style { display: inline; } .ib-country .infobox-image { padding: 0.5em 0; } .ib-country-anthem { border-top: 1px solid #a2a9b1; padding-top: 0.5em; margin-top: 0.5em; } .ib-country-map-caption { position: relative; top: 0.3em; } .ib-country-largest, .ib-country-lang { font-weight: normal; } .ib-country-ethnic, .ib-country-religion, .ib-country-sovereignty { font-weight: normal; display: inline; } .ib-country-fake-li { text-indent: -0.9em; margin-left: 1.2em; font-weight: normal; } .ib-country-fake-li2 { text-indent: 0.5em; margin-left: 1em; font-weight: normal; } .ib-country-website { line-height: 11pt; } .ib-country-map-caption3 { position: relative; top: 0.3em; } .ib-country-fn { text-align: left; margin: 0 auto; } .ib-country-fn-alpha { list-style-type: lower-alpha; margin-left: 1em; } .ib-country-fn-num { margin-left: 1em; } 3112a323cf9739e86afd52812cd38e196abfae7d Greece 0 243 542 2023-09-30T20:24:16Z Führerredux 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Infobox country/styles.css 10 244 543 2023-09-30T20:25:07Z Führerredux 2 Created page with "/* {{pp|small=y}} */ .ib-country { border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-country td, .ib-country th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-country .mergedtoprow .infobox-header, .ib-country .mergedtoprow .infobox-label, .ib-country .mergedtoprow .infobox-data, .ib-country .mergedtoprow .infobox-full-data, .ib-country .mergedtoprow .in..." sanitized-css text/css /* {{pp|small=y}} */ .ib-country { border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-country td, .ib-country th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-country .mergedtoprow .infobox-header, .ib-country .mergedtoprow .infobox-label, .ib-country .mergedtoprow .infobox-data, .ib-country .mergedtoprow .infobox-full-data, .ib-country .mergedtoprow .infobox-below { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.2em 0.6em; } .ib-country .mergedrow .infobox-label, .ib-country .mergedrow .infobox-data, .ib-country .mergedrow .infobox-full-data { border: 0; padding: 0 0.6em 0.2em 0.6em; } .ib-country .mergedbottomrow .infobox-label, .ib-country .mergedbottomrow .infobox-data, .ib-country .mergedbottomrow .infobox-full-data { border-top: 0; border-bottom: 1px solid #a2a9b1; padding: 0 0.6em 0.4em 0.6em; } .ib-country .infobox-header { text-align: left; } .ib-country .infobox-above { font-size: 125%; line-height: 1.2; } .ib-country-names { padding-top: 0.25em; font-weight: normal; } .ib-country-name-style { display: inline; } .ib-country .infobox-image { padding: 0.5em 0; } .ib-country-anthem { border-top: 1px solid #a2a9b1; padding-top: 0.5em; margin-top: 0.5em; } .ib-country-map-caption { position: relative; top: 0.3em; } .ib-country-largest, .ib-country-lang { font-weight: normal; } .ib-country-ethnic, .ib-country-religion, .ib-country-sovereignty { font-weight: normal; display: inline; } .ib-country-fake-li { text-indent: -0.9em; margin-left: 1.2em; font-weight: normal; } .ib-country-fake-li2 { text-indent: 0.5em; margin-left: 1em; font-weight: normal; } .ib-country-website { line-height: 11pt; } .ib-country-map-caption3 { position: relative; top: 0.3em; } .ib-country-fn { text-align: left; margin: 0 auto; } .ib-country-fn-alpha { list-style-type: lower-alpha; margin-left: 1em; } .ib-country-fn-num { margin-left: 1em; } 3112a323cf9739e86afd52812cd38e196abfae7d Template:Infobox country/doc 10 245 544 2023-09-30T20:26:53Z Führerredux 2 Created page with "{{#ifeq:{{{nested|no}}}|no|{{documentation subpage}}{{hatnote|{{tl|Infobox geopolitical organisation}} and {{tl|Infobox former country}} redirect here; related parameters and examples are included below.}}}} {{High-use}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}} {{Uses TemplateStyles|Template:Infobox country/styles.css}} This infobox template is used to generate an infobox for the right-hand side of two specific typ..." wikitext text/x-wiki {{#ifeq:{{{nested|no}}}|no|{{documentation subpage}}{{hatnote|{{tl|Infobox geopolitical organisation}} and {{tl|Infobox former country}} redirect here; related parameters and examples are included below.}}}} {{High-use}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}} {{Uses TemplateStyles|Template:Infobox country/styles.css}} This infobox template is used to generate an infobox for the right-hand side of two specific types of article: on a country or territory, or on a geopolitical organisation. Parameter syntax and examples are detailed in the collapsed sections immediately below. __FORCETOC__ == Syntax == <!---------------------- Country/territory use ----------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox country |micronation = <!--yes if a micronation--> |conventional_long_name = <!--Formal or official full name of the country in English--> |native_name = <!--Country's name (usually full name) in its official/defacto language(s), hence in italics (double quotemarks)--> |common_name = <!--Common name in English (used for wikilinks, captions, and to produce a default iso3166 code)--> |status = <!--Status of country, especially useful for micronations--> |image_flag = <!--e.g. Flag of country.svg--> |alt_flag = <!--alt text for flag (text shown when pointer hovers over flag)--> |flag_border = <!--set to no to disable border around the flag--> |image_flag2 = <!--e.g. Second-flag of country.svg--> |alt_flag2 = <!--alt text for second flag--> |flag2_border = <!--set to no to disable border around the flag--> |image_coat = <!--e.g. Coat of arms of country.svg--> |alt_coat = <!--alt text for coat of arms--> |symbol_type = <!--emblem, seal, etc (if not a coat of arms)--> |national_motto = <!--in inverted commas and wikilinked if link exists--> |englishmotto = <!--English language version of motto--> |national_anthem = <!--in inverted commas and wikilinked if link exists--> |royal_anthem = <!--in inverted commas and wikilinked if link exists--> |other_symbol_type = <!--Use if a further symbol exists, e.g. hymn--> |other_symbol = |image_map = <!--e.g. LocationCountry.svg--> |loctext = <!--text description of location of country--> |alt_map = <!--alt text for map--> |map_caption = <!--Caption to place below map--> |image_map_size = <!--Map size in number of pixels--> |image_map2 = <!--Another map, if required--> |alt_map2 = <!--alt text for second map--> |map_caption2 = <!--Caption to place below second map--> |image_map2_size = <!--Map size in number of pixels--> |capital = <!--Name of country/territory's capital, wikilinked if link exists--> |coordinates = <!-- Coordinates for capital, using {{tl|coord}} --> |largest_city = <!--Name of country/territory's largest city. Use "capital" (without quotation marks) if it's the capital.--> |largest_settlement_type = <!--Type of settlement if largest settlement not a city--> |largest_settlement = <!--Name of largest settlement--> |official_languages = <!--Languages recognised in legislation, constitution, etc--> |national_languages = <!--Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc--> |regional_languages = <!--Languages recognised or associated with particular regions within the country/territory--> |languages_type = <!--Use to specify a further type of language, if not official, national or regional--> |languages = <!--Languages of the further type--> |languages_sub = <!--Is this further type of language a sub-item of the previous non-sub type? ("yes" or "no")--> |languages2_type = <!--Another further type of language--> |languages2 = <!--Languages of this second further type--> |languages2_sub = <!--Is the second alternative type of languages a sub-item of the previous non-sub type? ("yes" or "no")--> |ethnic_groups = <!--List/breakdown of ethnic groups within the country/territory--> |ethnic_groups_year = <!--Year of ethnic groups data (if provided)--> |ethnic_groups_ref = <!--(for any ref/s to associate with ethnic groups data)--> |religion = <!--Religion--> |religion_year = <!--Year of religion data (if provided)--> |religion_ref = <!--(for any ref/s to associate with religion data)--> |demonym = <!--Term/s describing those associated with the country/territory (e.g. "Belgian" for the country Belgium)--> |government_type = <!--Wikilinked if link exists--> |leader_title1 = <!--(for a country, usually the head of state's (wikilinked) title, e.g. "President", "Monarch")--> |leader_name1 = |leader_title2 = <!--(could be "Vice President", otherwise "Prime Minster", etc, etc)--> |leader_name2 = |leader_title14 = <!--(up to 14 distinct leaders may be included)--> |leader_name14 = |legislature = <!--Name of the country/territory's governing body, e.g. "Parliament", "Congress", etc--> |upper_house = <!--Name of governing body's upper house, if given (e.g. "Senate")--> |lower_house = <!--Name of governing body's lower house, if given (e.g. "Chamber of Deputies")--> |sovereignty_type = <!--Brief description of country/territory's status ("Independence [from...]", "Autonomous province [of...]", etc)--> |sovereignty_note = |established_event1 = <!--First key event in history of country/territory's status or formation--> |established_date1 = <!--Date of first key event--> |established_event2 = <!--Second key event--> |established_date2 = <!--Date of second key event--> |established_event13 = <!--(up to 13 distinct events may be included)--> |established_date13 = |area_rank = |area = <!--Major area size (in [[Template:convert]] either km2 or sqmi first)--> |area_km2 = <!--Major area size (in square km)--> |area_sq_mi = <!--Area in square mi (requires area_km2)--> |area_footnote = <!--Optional footnote for area--> |percent_water = |area_label = <!--Label under "Area" (default is "Total")--> |area_label2 = <!--Label below area_label (optional)--> |area_data2 = <!--Text after area_label2 (optional)--> |population_estimate = |population_estimate_rank = |population_estimate_year = |population_census = |population_census_year = |population_density_km2 = |population_density_sq_mi = |population_density_rank = |nummembers = <!--An alternative to population for micronation--> |GDP_PPP = <!--(Gross Domestic Product from Purchasing Power Parity)--> |GDP_PPP_rank = |GDP_PPP_year = |GDP_PPP_per_capita = |GDP_PPP_per_capita_rank = |GDP_nominal = |GDP_nominal_rank = |GDP_nominal_year = |GDP_nominal_per_capita = |GDP_nominal_per_capita_rank = |Gini = <!--(Gini measure of income inequality; input number only; valid values are between 0 and 100)--> |Gini_ref = <!--(for any ref/s to associate with Gini number)--> |Gini_rank = |Gini_year = |HDI_year = <!-- Please use the year to which the data refers, not the publication year--> |HDI = <!--(Human Development Index; input number only; valid values are between 0 and 1)--> |HDI_change = <!--increase/decrease/steady; rank change from previous year--> |HDI_rank = |HDI_ref = <!--(for any ref/s to associate with HDI number)--> |currency = <!--Name/s of currency/ies used in country/territory--> |currency_code = <!--ISO 4217 code/s for currency/ies (each usually three capital letters)--> |time_zone = <!--e.g. GMT, PST, AST, etc, etc (wikilinked if possible)--> |utc_offset = <!--in the form "+N", where N is number of hours offset--> |time_zone_DST = <!--Link to DST (Daylight Saving Time) used, otherwise leave empty--> |utc_offset_DST = <!--in the form "+N", where N is number of hours offset--> |DST_note = <!--Optional note regarding DST use--> |antipodes = <!--Place/s exactly on the opposite side of the world to country/territory--> |date_format = <!--all-numeric date format and era, such as [[Common Era|CE]], [[Anno Domini|AD]], [[Hijri year|AH]], etc.; e.g. {{abbr|yyyy|year}}-{{abbr|mm|month}}-{{abbr|dd|day}} ([[Anno Domini|AD]]) --> |drives_on = <!--"right" or "left" (side of road)--> |cctld = <!--Internet country code top-level domain identifier (e.g. [[.br]], [[.de]], etc)--> |iso3166code = <!--ISO code only; no extra text. Use to override default from common_name parameter above; omit using "omit".--> |calling_code = <!--e.g. [[+1]], [[+531]], [[+44]], etc--> |patron_saint = <!--Use patron_saints for multiple--> |image_map3 = <!--Optional third map position, e.g. for use with reference to footnotes below it--> |alt_map3 = <!--alt text for third map position--> |footnote_a = <!--For any footnote <sup>a</sup> used above--> |footnote_b = <!--For any footnote <sup>b</sup> used above--> |footnote_h = <!--For any footnote <sup>h</sup> used above--> |footnotes = <!--For any generic non-numbered footnotes--> }} </syntaxhighlight> {{hidden end}} {{hidden begin |toggle=left|title=France-specific parameters}}<!--(France-specific parameters)--> Note: Now redundant. <syntaxhighlight lang="wikitext"> |metropole = |metropole_area = |metropole_area_rank = |metropole_area_magnitude = |metropole_areami² = |metropole_population = |metropole_population_estimate_rank = |foot = |foot2 = |foot3 = |foot4 = |foot5 = </syntaxhighlight> <!--(France-specific parameters)--> {{smaller|* If, on a particular page, the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use ''flag_width'' (as % or px) to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included).}} {{hidden end}} <!------------------------- Geopolitical use --------------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox geopolitical organization |name = <!-- (in English) --> |native_name = <!-- Long-form name in native or any/all non-English languages --> |linking_name = <!-- For wikilinks, if diff from name --> |image_flag = <!-- Flag image's filename --> |alt_flag = <!-- alt text for flag--> |flag_border = <!--set to no to disable border around the flag--> |symbol_type = <!-- Symbol, Emblem, Logo, etc. --> |image_symbol = <!-- Symbol image's filename --> |alt_symbol = <!-- alt text for symbol --> |symbol_width = <!-- Symbol image's width (default 85px) --> |motto = <!-- "[motto]" --> |englishmotto = <!--English language version of motto--> |anthem = <!-- ''[anthem name]'' --> |text_symbol_type = <!-- for other types of text symbol --> |text_symbol = <!-- e.g. ''[hymn name]'' --> |image_map = <!-- Map image's filename --> |loctext = <!--text description of location of organization--> |alt_map = <!-- alt text for map image --> |map_width = <!-- Map image's width (default 250px) --> |map_caption = |org_type = <!-- e.g. Trade bloc --> |membership_type = <!-- (default "Membership") --> |membership = <!-- Type/s and/or number/s of members --> |admin_center_type = <!-- e.g. "Administrative center" (default) --> |admin_center = <!-- Location/s of administrative center/s --> |languages_type = <!-- e.g. "[[Official language]]s" (default) --> |languages = |leader_title1 = <!-- e.g. "Chair", "President", etc. --> |leader_name1 = |leader_title2 = <!-- e.g. "Deputy chair", etc. --> |leader_name2 = |leader_title14 = |leader_name14 = |established = <!-- Usually a date, in lieu of event/s hereafter --> |established_event1 = |established_date1 = |established_event2 = |established_date2 = |established_event9 = |established_date9 = |official_website = |area_km2 = <!-- major area size (in sq_km) --> |area_sq_mi = <!-- area in square mi (requires area_km2) --> |area_footnote = <!-- optional footnote for area --> |percent_water = |area_label = <!-- label under "Area" (default is "Total") --> |area_label2 = <!-- label below area_label (optional) --> |area_dabodyalign = <!-- text after area_label2 (optional) --> |population_estimate = |population_estimate_year = |population_density_km2 = |population_density_sq_mi = |GDP_PPP = |GDP_PPP_rank = |GDP_PPP_year = |GDP_PPP_per_capita = |GDP_nominal = |GDP_nominal_year = |GDP_nominal_per_capita = |Gini = <!-- number only, 0-100 --> |Gini_ref = <!-- for any ref/s to associate with Gini number --> |Gini_year = |HDI = <!-- number only, 0-1 --> |HDI_ref = <!-- for any ref/s to associate with HDI number --> |HDI_year = |currency = |currency_code = |time_zone = |utc_offset = <!-- +N, where N is number of hours --> |footnote1 = |footnote2 = |footnote7 = |footnotes = <!-- For generic non-numbered footnotes --> }} </syntaxhighlight> {{hidden end}} <!-------------------- Former country use ----------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox former country |native_name = <!-- Name in a modern syntax of native language(s). Leave blank if name is only in English. Separate with line breaks<br/> or use Template:Plainlist. If language uses Latin characters, place name(s) in italics. --> |conventional_long_name = <!-- Full name in English --> |common_name = <!-- Name to be used in constructing links and category names; not for display --> |iso3166code = omit <!-- For a country or geopolitical version of a country that ceased to exist prior to the introduction of iso3166--> |era = <!-- Use: "Napoleonic Wars", "Cold War", etc. --> |status = <!-- Status: see Category list on template page --> |status_text = <!-- A free text to describe status at the top of the infobox. Use sparingly. --> |empire = <!-- The empire or country to which the entity was in a state of dependency --> |government_type = <!-- To generate categories: "Monarchy", "Republic", etc. to generate categories --> <!-- Rise and fall, events, years and dates --> <!-- only fill in the start/end event entry if a specific article exists. Don't just say "abolition" or "declaration" --> |event_start = <!-- Default: "Established" --> |date_start = <!-- Optional: Date of establishment, in format 1 January (no year) --> |year_start = <!-- Year of establishment --> |event_end = <!-- Default: "Disestablished" --> |date_end = <!-- Optional: Date of disestablishment, in format 1 January (no year) --> |year_end = <!-- Year of disestablishment --> |year_exile_start = <!-- Year of start of exile (if dealing with exiled government: status="Exile") --> |year_exile_end = <!-- Year of end of exile (leave blank if still in exile) --> |event1 = <!-- Optional: other events between "start" and "end" --> |date_event1 = |event2 = |date_event2 = |event3 = |date_event3 = |event4 = |date_event4 = |event5 = |date_event5 = |event6 = |date_event6 = |event_pre = <!-- Optional: A crucial event that took place before "event_start" --> |date_pre = |event_post = <!-- Optional: A crucial event that took place after "event_end" --> |date_post = <!-- Flag navigation: Preceding and succeeding entities p1 to p5 and s1 to s5 --> |p1 = <!-- Name of the article for preceding entity, numbered 1-5 --> |flag_p1 = <!-- Default: "Flag of {{{p1}}}.svg" (size 30) --> |image_p1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] --> |p2 = |flag_p2 = |p3 = |flag_p3 = |p4 = |flag_p4 = |p5 = |flag_p5 = |s1 = <!-- Name of the article for succeeding entity, numbered 1-5 --> |flag_s1 = <!-- Default: "Flag of {{{s1}}}.svg" (size 30) --> |image_s1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] --> |s2 = |flag_s2 = |s3 = |flag_s3 = |s4 = |flag_s4 = |s5 = |flag_s5 = |image_flag = <!-- Default: Flag of {{{common_name}}}.svg --> |flag_alt = <!-- Alt text for flag --> |image_flag2 = <!-- Second flag --> |flag_alt2 = <!-- Alt text for second flag --> |flag = <!-- Link target under flag image. Default: Flag of {{{common_name}}} --> |flag2 = <!-- Link target under flag2 image. Default: Flag of {{{common_name}}} --> |flag_type = <!-- Displayed text for link under flag. Default "Flag" --> |flag2_type = <!-- Displayed text for link under flag2. Default "Flag" --> |image_coat = <!-- Default: Coat of arms of {{{common_name}}}.svg --> |coa_size = <!-- Size of coat of arms --> |coat_alt = <!-- Alt text for coat of arms --> |symbol_type = <!-- Displayed text for link under symbol. Default "Coat of arms" --> |symbol_type_article = <!-- Link target under symbol image. Default: Coat of arms of {{{common_name}}} --> |image_map = |image_map_size = <!--Map size in number of pixels--> |image_map_alt = |image_map_caption = |image_map2 = <!-- If second map is needed; does not appear by default --> |image_map2_size = <!--Map size in number of pixels--> |image_map2_alt = |image_map2_caption = |capital = |capital_exile = <!-- If status="Exile" --> |national_motto = |national_anthem = |common_languages = |religion = |demonym = |currency = <!-- Titles and names of the first and last leaders and their deputies --> |leader1 = <!-- Name of king or president --> |leader2 = |leader3 = |leader4 = |leader21 = <!--(up to 21 distinct leaders may be included)--> |year_leader1 = <!-- Years served --> |year_leader2 = |year_leader3 = |year_leader4 = |year_leader21 = |title_leader = <!-- Default: "King" for monarchy, otherwise "President" --> |representative1 = <!-- Name of representative of head of state (e.g. colonial governor) --> |representative2 = |representative3 = |representative4 = |representative5 = |year_representative1 = <!-- Years served --> |year_representative2 = |year_representative3 = |year_representative4 = |year_representative5 = |title_representative = <!-- Default: "Governor" --> |deputy1 = <!-- Name of prime minister --> |deputy2 = |deputy3 = |deputy4 = |year_deputy1 = <!-- Years served --> |year_deputy2 = |year_deputy3 = |year_deputy4 = |title_deputy = <!-- Default: "Prime minister" --> <!-- Legislature --> |legislature = <!-- Name of legislature --> |house1 = <!-- Name of first chamber --> |type_house1 = <!-- Default: "Upper house" --> |house2 = <!-- Name of second chamber --> |type_house2 = <!-- Default: "Lower house" --> <!-- Area and population of a given year --> |stat_year1 = <!-- year of the statistic, specify either area, population or both --> |stat_area1 = <!-- area in square kilometres (w/o commas or spaces); area in square miles is calculated --> |stat_pop1 = <!-- population (w/o commas or spaces) --> |stat_year2 = |stat_area2 = |stat_pop2 = |stat_year3 = |stat_area3 = |stat_pop3 = |stat_year4 = |stat_area4 = |stat_pop4 = |stat_year5 = |stat_area5 = |stat_pop5 = |today = <!-- Present-day countries that overlap with the territorial extent of the former country. Do not use this parameter if there are more than four such countries. --><!-- Do NOT add flags, per MOS:INFOBOXFLAG --> |footnote_a = <!-- Accepts wikilinks --> |footnote_b = <!-- Accepts wikilinks --> ... |footnote_h = <!-- Accepts wikilinks --> |footnotes = <!-- Accepts wikilinks --> }} </syntaxhighlight> {{hidden end}} == Examples == <!------------------ Country/territory example -------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}} {{Infobox country |conventional_long_name = Republic of Cameroon |native_name = {{lang|fr|République du Cameroun}} |common_name = Cameroon |image_flag = Flag of Cameroon.svg |alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red. |image_coat = Coat of arms of Cameroon.svg |symbol_type = Coat of arms |image_map = Cameroon (orthographic projection).svg |alt_map = Location of Cameroon on the globe. |national_motto = <br/>{{native phrase|fr|"Paix &ndash; Travail &ndash; Patrie"|italics=off}}<br/>{{small|"Peace &ndash; Work &ndash; Fatherland"}} |national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}}&nbsp;{{lower|0.1em|<sup>a</sup>}}}} |official_languages = {{hlist |[[French language|French]] |[[English language|English]]}} |demonym = Cameroonian |ethnic_groups = {{unbulleted list | {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}} | 19% [[Bantu peoples|Equatorial Bantu]] | 11% [[Kirdi]] | 10% [[Fula people|Fulani]] | {{0|0}}8% [[Bantu peoples|Northwestern Bantu]] | {{0|0}}7% Eastern Nigritic | 13% other African | &lt;1% non-African }} |capital = [[Yaoundé]] |coordinates = {{coord|3|52|N|11|31|E}} |largest_city = [[Douala]] |government_type = [[Republic]] |leader_title1 = [[List of heads of state of Cameroon|President]] |leader_name1 = [[Paul Biya]] |leader_title2 = [[Prime Minister of Cameroon|Prime Minister]] |leader_name2 = [[Philémon Yang]] |legislature = [[National Assembly (Cameroon)|National Assembly]] |area_rank = 54th <!--Demographic Yearbook 1.--> |area_km2 = 475,442 |area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 1.3 <!--CIA World Factbook--> |population_estimate = 20,129,878 |population_estimate_rank = 58th <!--UN World Population Prospects--> |population_estimate_year = July 2012 |population_census = 17,463,836 |population_census_year = 2005 |population_density_km2 = 39.7 |population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]--> |population_density_rank = 167th <!--UN World Population Prospects--> |GDP_PPP = $47.251&nbsp;billion |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $2,257 |GDP_PPP_per_capita_rank = |GDP_nominal = $25.759&nbsp;billion |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $1,230 |sovereignty_type = Independence {{nobold|from [[France]]}} |established_event1 = Declared |established_date1 = 1 January 1960 |established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}} |established_date2 = 1 October 1961 |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.482 <!--number only--> |HDI_ref = |HDI_rank = 150th |Gini_year = 2001 |Gini_change = <!--increase/decrease/steady--> |Gini = 44.6 <!--number only--> |Gini_ref = |Gini_rank = |currency = [[Central African CFA franc]] |currency_code = XAF |time_zone = [[West Africa Time|WAT]] |utc_offset = +1 |time_zone_DST = |utc_offset_DST = |drives_on = right |calling_code = [[+237]] |cctld = [[.cm]] |footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61. }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox country |conventional_long_name = Republic of Cameroon |native_name = {{lang|fr|République du Cameroun}} |common_name = Cameroon |image_flag = Flag of Cameroon.svg |alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red. |image_coat = Coat of arms of Cameroon.svg |symbol_type = Coat of arms |image_map = Cameroon (orthographic projection).svg |alt_map = Location of Cameroon on the globe. |national_motto = <br/>{{native phrase|fr|"Paix &ndash; Travail &ndash; Patrie"|italics=off}}<br/>{{small|"Peace &ndash; Work &ndash; Fatherland"}} |national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}}&nbsp;{{lower|0.1em|<sup>a</sup>}}}} |official_languages = {{hlist |[[French language|French]] |[[English language|English]]}} |demonym = Cameroonian |ethnic_groups = {{unbulleted list | {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}} | 19% [[Bantu peoples|Equatorial Bantu]] | 11% [[Kirdi]] | 10% [[Fula people|Fulani]] | {{0|0}}8% [[Bantu peoples|Northwestern Bantu]] | {{0|0}}7% Eastern Nigritic | 13% other African | &lt;1% non-African }} |capital = [[Yaoundé]] |coordinates = {{coord|3|52|N|11|31|E}} |largest_city = [[Douala]] |government_type = [[Republic]] |leader_title1 = [[List of heads of state of Cameroon|President]] |leader_name1 = [[Paul Biya]] |leader_title2 = [[Prime Minister of Cameroon|Prime Minister]] |leader_name2 = [[Philémon Yang]] |legislature = [[National Assembly (Cameroon)|National Assembly]] |area_rank = 54th <!--Demographic Yearbook 1.--> |area_km2 = 475,442 |area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 1.3 <!--CIA World Factbook--> |population_estimate = 20,129,878 |population_estimate_rank = 58th <!--UN World Population Prospects--> |population_estimate_year = July 2012 |population_census = 17,463,836 |population_census_year = 2005 |population_density_km2 = 39.7 |population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]--> |population_density_rank = 167th <!--UN World Population Prospects--> |GDP_PPP = $47.251&nbsp;billion |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $2,257 |GDP_PPP_per_capita_rank = |GDP_nominal = $25.759&nbsp;billion |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $1,230 |sovereignty_type = Independence {{nobold|from [[France]]}} |established_event1 = Declared |established_date1 = 1 January 1960 |established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}} |established_date2 = 1 October 1961 |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.482 <!--number only--> |HDI_ref = |HDI_rank = 150th |Gini_year = 2001 |Gini_change = <!--increase/decrease/steady--> |Gini = 44.6 <!--number only--> |Gini_ref = |Gini_rank = |currency = [[Central African CFA franc]] |currency_code = XAF |time_zone = [[West Africa Time|WAT]] |utc_offset = +1 |time_zone_DST = not observed |utc_offset_DST = +1 |drives_on = right |calling_code = [[+237]] |cctld = [[.cm]] |footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61. }} </syntaxhighlight> {{hidden end}} <!-------------- Geopolitical organization example ---------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}} {{Infobox geopolitical organization |name = {{collapsible list |titlestyle = background:transparent;text-align:center;font-size:85%; |title = {{resize|130%|European Union}} |liststyle = text-align:center; | {{smaller|{{native name|bg|Европейски съюз}}<br/><!-- -->{{native name|hr|Europska unija}}<br/><!-- -->{{native name|cs|Evropská unie}}<br/><!-- -->{{native name|da|Den Europæiske Union}}<br/><!-- -->{{native name|nl|Europese Unie}}<br /><!-- -->{{native name|et|Euroopa Liit}}<br/><!-- -->{{native name|fi|Euroopan unioni}}<br/><!-- -->{{native name|fr|Union européenne}}<br/><!-- -->{{native name|de|Europäische Union}}<br/><!-- -->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!-- -->{{native name|hu|Európai Unió}}<br/><!-- -->{{native name|ga|An tAontas Eorpach}}<br/><!-- -->{{native name|it|Unione europea}}<br/><!-- -->{{native name|lv|Eiropas Savienība}}<br/><!-- -->{{native name|lt|Europos Sąjunga}}<br/><!-- -->{{native name|mt|Unjoni Ewropea}}<br/><!-- -->{{native name|pl|Unia Europejska}}<br/><!-- -->{{native name|pt|União Europeia}}<br/><!-- -->{{native name|ro|Uniunea Europeană}}<br/><!-- -->{{native name|sk|Európska únia}}<br/><!-- -->{{native name|sl|Evropska unija}}<br/><!-- -->{{native name|es|Unión Europea}}<br/><!-- -->{{native name|sv|Europeiska unionen}}<!-- -->}} }} |linking_name = Europe |image_flag = Flag of Europe.svg |alt_flag = Circle of 12 gold stars on a blue background |motto = "[[Motto of the European Union|United in diversity]]" |anthem = <div style="padding-bottom:0.2em;">"[[Anthem of Europe|Ode to Joy]]"&nbsp;&nbsp;{{small|(orchestral)}}</div>[[File:Anthem of Europe (US Navy instrumental short version).ogg|center]] |image_map = EU Globe No Borders.svg |map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green). |map_width = 220px |admin_center_type = Political centres |admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}} |largest_city = [[London]] |official_languages = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = [[Languages of the European Union|24 languages]] | {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}} }} |demonym = [[Citizenship of the European Union|European]] |membership_type = [[Member state of the European Union|Member state]]s |membership = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = 27 states |{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}} |{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}} |{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}} |{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}} |{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}} |{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}} |{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}} |{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}} |{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}} }} |leader_title1 = [[President of the European Council|President of the European Council]] |leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}} |leader_title2 = [[President of the European Commission|President of the Commission]] |leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}} |legislature = [[Legislature of the European Union]] |upper_house = {{nowrap|[[Council of the European Union]]}} |lower_house = [[European Parliament]] |established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]] |established_date1 = 23 July 1952 |established_event2 = [[Treaty of Rome]] |established_date2 = 1 January 1958 |established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}} |established_date3 = 1 November 1993 |official_website = {{URL|europa.eu}} |area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]--> |area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 3.08 |population_estimate = 507,890,191 |population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |population_estimate_year = 2012 |population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)--> |population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)--> |population_density_rank = <!--Calculated by taking out EU members from the list--> <!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011--> |GDP_PPP = $15.821 trillion |GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $31,607<!--same ref as above--> |GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal = $17.577 trillion |GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $35,116 |GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |Gini_year = 2010 |Gini_change = <!--increase/decrease/steady--> |Gini = 30.4 <!--number only--> |Gini_ref = |Gini_rank = |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.876 <!--number only--> |HDI_ref = |HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list--> |currency = {{(!}} cellspacing="0" cellpadding="0" {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}} {{!-}} style="height: 22px;" ! {{flagicon|EU}} ! [[Euro]] ! [[Euro sign|€]] ! [[ISO 4217|EUR]] {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Bulgaria}} {{!}} [[Bulgarian lev|Lev]] {{!}} лв {{!}} [[ISO 4217|BGN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Croatia}} {{!}} [[Croatian kuna|Kuna]] {{!}} kn {{!}} [[ISO 4217|HRK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Czech Republic}} {{!}} [[Czech koruna|Koruna]] {{!}} Kč {{!}} [[ISO 4217|CZK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Denmark}} {{!}} [[Danish krone|Krone]] {{!}} kr {{!}} [[ISO 4217|DKK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Hungary}} {{!}} [[Hungarian forint|Forint]] {{!}} Ft {{!}} [[ISO 4217|HUF]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Latvia}} {{!}} [[Latvian lats|Lats]] {{!}} Ls {{!}} [[ISO 4217|LVL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Lithuania}} {{!}} [[Lithuanian litas|Litas]] {{!}} Lt {{!}} [[ISO 4217|LTL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Poland}} {{!}} [[Polish złoty|Złoty]] {{!}} zł {{!}} [[ISO 4217|PLN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Romania}} {{!}} [[Romanian Leu|Leu]] {{!}} L {{!}} [[ISO 4217|RON]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Sweden}} {{!}} [[Swedish krona|Krona]] {{!}} kr {{!}} [[ISO 4217|SEK]] {{!)}} |time_zone = |utc_offset = +0 to +2 |time_zone_DST = |utc_offset_DST = +1 to +3 |date_format = |cctld = [[.eu]] |calling_code = [[Telephone numbers in the European Union|27 codes]] |footnote_a = If considered as a single entity. }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox geopolitical organization |name = {{collapsible list |titlestyle = background:transparent;text-align:center;font-size:85%; |title = {{resize|130%|European Union}} |liststyle = text-align:center; | {{smaller|{{native name|bg|Европейски съюз}}<br/><!-- -->{{native name|hr|Europska unija}}<br/><!-- -->{{native name|cs|Evropská unie}}<br/><!-- -->{{native name|da|Den Europæiske Union}}<br/><!-- -->{{native name|nl|Europese Unie}}<br /><!-- -->{{native name|et|Euroopa Liit}}<br/><!-- -->{{native name|fi|Euroopan unioni}}<br/><!-- -->{{native name|fr|Union européenne}}<br/><!-- -->{{native name|de|Europäische Union}}<br/><!-- -->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!-- -->{{native name|hu|Európai Unió}}<br/><!-- -->{{native name|ga|An tAontas Eorpach}}<br/><!-- -->{{native name|it|Unione europea}}<br/><!-- -->{{native name|lv|Eiropas Savienība}}<br/><!-- -->{{native name|lt|Europos Sąjunga}}<br/><!-- -->{{native name|mt|Unjoni Ewropea}}<br/><!-- -->{{native name|pl|Unia Europejska}}<br/><!-- -->{{native name|pt|União Europeia}}<br/><!-- -->{{native name|ro|Uniunea Europeană}}<br/><!-- -->{{native name|sk|Európska únia}}<br/><!-- -->{{native name|sl|Evropska unija}}<br/><!-- -->{{native name|es|Unión Europea}}<br/><!-- -->{{native name|sv|Europeiska unionen}}<!-- -->}} }} |linking_name = Europe |image_flag = Flag of Europe.svg |alt_flag = Circle of 12 gold stars on a blue background |motto = "[[Motto of the European Union|United in diversity]]" |anthem = <div style="padding-bottom:0.2em;">''[[Anthem of Europe|Ode to Joy]]''&nbsp;&nbsp;{{small|(orchestral)}}</div>{{center|[[File:Anthem of Europe (US Navy instrumental short version).ogg]]}} |image_map = EU Globe No Borders.svg |map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green). |map_width = 220px |admin_center_type = Political centres |admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}} |largest_city = [[London]] |official_languages = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = [[Languages of the European Union|24 languages]] | {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}} }} |demonym = [[Citizenship of the European Union|European]] |membership_type = [[Member state of the European Union|Member state]]s |membership = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = 27 states |{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}} |{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}} |{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}} |{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}} |{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}} |{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}} |{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}} |{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}} |{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}} }} |leader_title1 = [[President of the European Council|President of the European Council]] |leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}} |leader_title2 = [[President of the European Commission|President of the Commission]] |leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}} |legislature = [[Legislature of the European Union]] |upper_house = {{nowrap|[[Council of the European Union]]}} |lower_house = [[European Parliament]] |established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]] |established_date1 = 23 July 1952 |established_event2 = [[Treaty of Rome]] |established_date2 = 1 January 1958 |established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}} |established_date3 = 1 November 1993 |official_website = {{URL|europa.eu}} |area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]--> |area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 3.08 |population_estimate = 507,890,191 |population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |population_estimate_year = 2012 |population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)--> |population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)--> |population_density_rank = <!--Calculated by taking out EU members from the list--> <!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011--> |GDP_PPP = $15.821 trillion |GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $31,607 |GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal = $17.577 trillion |GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $35,116 |GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |Gini_year = 2010 |Gini_change = <!--increase/decrease/steady--> |Gini = 30.4 <!--number only--> |Gini_ref = |Gini_rank = |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.876 <!--number only--> |HDI_ref = |HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list--> |currency = {{(!}} cellspacing="0" cellpadding="0" {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}} {{!-}} style="height: 22px;" ! {{flagicon|EU}} ! [[Euro]] ! [[Euro sign|€]] ! [[ISO 4217|EUR]] {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Bulgaria}} {{!}} [[Bulgarian lev|Lev]] {{!}} лв {{!}} [[ISO 4217|BGN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Croatia}} {{!}} [[Croatian kuna|Kuna]] {{!}} kn {{!}} [[ISO 4217|HRK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Czech Republic}} {{!}} [[Czech koruna|Koruna]] {{!}} Kč {{!}} [[ISO 4217|CZK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Denmark}} {{!}} [[Danish krone|Krone]] {{!}} kr {{!}} [[ISO 4217|DKK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Hungary}} {{!}} [[Hungarian forint|Forint]] {{!}} Ft {{!}} [[ISO 4217|HUF]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Latvia}} {{!}} [[Latvian lats|Lats]] {{!}} Ls {{!}} [[ISO 4217|LVL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Lithuania}} {{!}} [[Lithuanian litas|Litas]] {{!}} Lt {{!}} [[ISO 4217|LTL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Poland}} {{!}} [[Polish złoty|Złoty]] {{!}} zł {{!}} [[ISO 4217|PLN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Romania}} {{!}} [[Romanian Leu|Leu]] {{!}} L {{!}} [[ISO 4217|RON]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Sweden}} {{!}} [[Swedish krona|Krona]] {{!}} kr {{!}} [[ISO 4217|SEK]] {{!)}} |time_zone = |utc_offset = +0 to +2 |time_zone_DST = |utc_offset_DST = +1 to +3 |date_format = |cctld = [[.eu]] |calling_code = [[Telephone numbers in the European Union|27 codes]] |footnote_a = If considered as a single entity. }} </syntaxhighlight> {{hidden end}} <!------------------ Former country example -------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}} {{Infobox former country |native_name = ''Deutsches Reich'' |conventional_long_name = German Empire |common_name = Germany |iso3166code = omit |status = Empire |era = [[New Imperialism]]/[[World War I|WWI]] |event_start = [[Unification of Germany|Unification]] |date_start = 18 January |year_start = 1871 |event_end = [[German Revolution of 1918–1919|Republic declared]] |date_end = 9 November |year_end = 1918 |event_post = Formal abdication |date_post = 28 November 1918 |p1 = North German Confederation |flag_p1 = Flag of the German Empire.svg |p2 = Kingdom of Bavaria |flag_p2 = Flag of Bavaria (striped).svg |p3 = Kingdom of Württemberg |flag_p3 = Flagge Königreich Württemberg.svg |p4 = Grand Duchy of Baden |flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg |p5 = Grand Duchy of Hesse |flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg |p6 = Alsace-Lorraine |flag_p6 = Flag of France.svg |s1 = Weimar Republic |s2 = Republic of Alsace-Lorraine |s3 = Free City of Danzig |s4 = Second Polish Republic |s5 = Klaipėda Region |s6 = Saar (League of Nations) |s7 = Hlučín Region |s8 = South Jutland County{{!}}Northern Schleswig |s9 = Eupen-Malmedy |flag_s1 = Flag of Germany (3-2 aspect ratio).svg |flag_s2 = Flag of the Republic of Alsace-Lorraine.svg |flag_s3 = Gdansk flag.svg |flag_s4 = Flag of Poland.svg |flag_s5 = Flag of Lithuania 1918-1940.svg |flag_s6 = Flag of Saar 1920-1935.svg |flag_s7 = Flag of Bohemia.svg |flag_s8 = Flag of Denmark.svg |flag_s9 = Flag of Belgium.svg |image_flag = Flag of the German Empire.svg |flag_alt = Horizontal tricolor (black, white, red) |flag_caption = Flag of the German Empire |image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg |symbol_type = Imperial Coat of arms |coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons. |image_map = German Empire, Wilhelminian third version.svg |image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland |image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]] |national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}} |national_anthem = {{plainlist| * ''(none official)'' * "[[Heil dir im Siegerkranz]]" (Imperial) * "[[Deutschlandlied]]" (popular) * "[[Die Wacht am Rhein]]" (unofficial) }} |capital = Berlin |common_languages = ;Official language :[[German language|German]] ;Unofficial minority languages :[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]] ;Colonial languages :[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies) :[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay) :[[Papuan languages]] (German New Guinea) :[[Samoan language|Samoan]] (German Samoa) |government_type = Constitutional monarchy |title_leader = [[German Emperor|Emperor]] |leader1 = [[William I, German Emperor|William I]] |year_leader1 = 1871–1888 |leader2 = [[Frederick III, German Emperor|Frederick III]] |year_leader2 = 1888 |leader3 = [[Wilhelm II, German Emperor|Wilhelm II]] |year_leader3 = 1888–1918 |title_deputy = [[List of Chancellors of Germany|Chancellor]] |deputy1 = [[Otto von Bismarck]] (first) |year_deputy1 = 1871–1890 |deputy2 = [[Friedrich Ebert]] (last) |year_deputy2 = 8–9 Nov 1918 |legislature = [[Reichstag (German Empire)|Reichstag]] |house1 = [[Reichsrat (Germany)|Reichsrat]] |type_house1 = State council |stat_year1 = 1871 |religion = {{plainlist| * [[Lutherans]]~60% * [[Roman Catholics]]~40% }} |stat_pop1 = {{formatnum:41058792}} |stat_year2 = 1890 |stat_pop2 = {{formatnum:49428470}} |stat_year4 = 1910 |stat_pop4 = {{formatnum:64925993}} |stat_area4 = 540857.54 |currency = {{plainlist| * [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}} * [[German gold mark|Goldmark]] {{small|(1873–1914)}} * [[German Papiermark|Papiermark]] {{small|(after 1914)}} }} |footnotes = Area and population not including colonial possessions |today = }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox former country |native_name = ''Deutsches Reich'' |conventional_long_name = German Empire |common_name = Germany |iso3166code = omit |status = Empire |era = [[New Imperialism]]/[[World War I|WWI]] |event_start = [[Unification of Germany|Unification]] |date_start = 18 January |year_start = 1871 |event_end = [[German Revolution of 1918–1919|Republic declared]] |date_end = 9 November |year_end = 1918 |event_post = Formal abdication |date_post = 28 November 1918 |p1 = North German Confederation |flag_p1 = Flag of the German Empire.svg |p2 = Kingdom of Bavaria |flag_p2 = Flag of Bavaria (striped).svg |p3 = Kingdom of Württemberg |flag_p3 = Flagge Königreich Württemberg.svg |p4 = Grand Duchy of Baden |flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg |p5 = Grand Duchy of Hesse |flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg |p6 = Alsace-Lorraine |flag_p6 = Flag of France.svg |s1 = Weimar Republic |s2 = Republic of Alsace-Lorraine |s3 = Free City of Danzig |s4 = Second Polish Republic |s5 = Klaipėda Region |s6 = Saar (League of Nations) |s7 = Hlučín Region |s8 = South Jutland County{{!}}Northern Schleswig |s9 = Eupen-Malmedy |flag_s1 = Flag of Germany (3-2 aspect ratio).svg |flag_s2 = Flag of the Republic of Alsace-Lorraine.svg |flag_s3 = Gdansk flag.svg |flag_s4 = Flag of Poland.svg |flag_s5 = Flag of Lithuania 1918-1940.svg |flag_s6 = Flag of Saar 1920-1935.svg |flag_s7 = Flag of Bohemia.svg |flag_s8 = Flag of Denmark.svg |flag_s9 = Flag of Belgium.svg |image_flag = Flag of the German Empire.svg |flag_alt = Horizontal tricolor (black, white, red) |flag_caption = Flag of the German Empire |image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg |symbol_type = Imperial Coat of arms |coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons. |image_map = German Empire, Wilhelminian third version.svg |image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland |image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]] |national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}} |national_anthem = {{plainlist| * ''(none official)'' * "[[Heil dir im Siegerkranz]]" (Imperial) * "[[Deutschlandlied]]" (popular) * "[[Die Wacht am Rhein]]" (unofficial) }} |capital = Berlin |common_languages = ;Official language :[[German language|German]] ;Unofficial minority languages :[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]] ;Colonial languages :[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies) :[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay) :[[Papuan languages]] (German New Guinea) :[[Samoan language|Samoan]] (German Samoa) |government_type = Constitutional monarchy |title_leader = [[German Emperor|Emperor]] |leader1 = [[William I, German Emperor|William I]] |year_leader1 = 1871–1888 |leader2 = [[Frederick III, German Emperor|Frederick III]] |year_leader2 = 1888 |leader3 = [[Wilhelm II, German Emperor|Wilhelm II]] |year_leader3 = 1888–1918 |title_deputy = [[List of Chancellors of Germany|Chancellor]] |deputy1 = [[Otto von Bismarck]] (first) |year_deputy1 = 1871–1890 |deputy2 = [[Friedrich Ebert]] (last) |year_deputy2 = 8–9 Nov 1918 |legislature = [[Reichstag (German Empire)|Reichstag]] |house1 = [[Reichsrat (Germany)|Reichsrat]] |type_house1 = State council |stat_year1 = 1871 |religion = {{plainlist| * [[Lutherans]]~60% * [[Roman Catholics]]~40% }} |stat_pop1 = {{formatnum:41058792}} |stat_year2 = 1890 |stat_pop2 = {{formatnum:41058792}} |stat_year4 = 1910 |stat_pop4 = {{formatnum:41058792}} |stat_area4 = 540857.54 |currency = {{plainlist| * [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}} * [[German gold mark|Goldmark]] {{small|(1873–1914)}} * [[German Papiermark|Papiermark]] {{small|(after 1914)}} }} |footnotes = Area and population not including colonial possessions |today = }} </syntaxhighlight> {{hidden end}} == Errors == If the template generates errors when calculating data for the Gini or HDI fields, it will add the article to [[:Category:Country articles requiring maintenance]]. This only happens if the page is in the [[WP:MAINSPACE|main article space]], not any other [[WP:NAMESPACE|namespaces]]. == Microformat == {{UF-hcard-place}} == Tracking categories == * {{clc|Country articles requiring maintenance}} * {{clc|Pages using infobox country with unknown parameters}} * {{clc|Pages using infobox country with syntax problems}} * {{clc|Pages using infobox country or infobox former country with the flag caption or type parameters}} * {{clc|Pages using infobox country or infobox former country with the symbol caption or type parameters}} * {{clc|Former country articles using status text with Colony or Exile}} == TemplateData == {{TemplateData header}} {{collapse top|title=TemplateData}} <templatedata> { "description": "This template produces an infobox for countries that covers their major attributes such as their flags, ethnic makeup, and political system.", "format": "{{_\n| ______________________ = _\n}}\n", "params": { "conventional_long_name": { "label": "Conventional long name", "type": "string", "required": false, "description": "Formal or official full name of the country in English. This entry should not be enclosed in brackets.", "example": "The United States of America" }, "common_name": {}, "linking_name": {}, "native_name": { "label": "Native name", "type": "string", "required": false, "example": "{{native name|Bundesrepublik Deutschland}}", "description": "Country's name (usually full name) in its native language, hence in italics (double quotemarks). The template {{native name}} should be used with this parameter to automatically italicize the text." }, "name": { "label": "Geopolitical organisation name", "type": "string", "required": false, "description": "Name of the geopolitical organisation in English." }, "image_flag": { "label": "Flag", "type": "wiki-file-name", "required": false, "example": "Flag of Iceland.svg", "description": "File name of an image file on Wikipedia or on Commons that contains the country's current flag. Do not enclose this entry in double brackets and do not give it a prefix such as File:" }, "flag_width": { "label": "Flag width", "type": "string", "required": false, "description": "If the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use this to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included). Can be done as a % or px." }, "alt_flag": { "label": "Flag alt text", "type": "string", "required": false, "description": "Alternate text for flag (text shown when pointer hovers over flag)." }, "flag_border": { "label": "Flag border", "type": "string", "required": false, "description": "Set to no to disable border around the flag." }, "flag_caption": { "label": "Flag caption", "type": "string", "required": false, "description": "Use this parameter to enter a caption for the flag, if one is necessary. Do not end this entry with a period.", "example": "1992 version of the flag prior to the country's dissolution" }, "image_flag2": { "label": "Second flag", "type": "wiki-file-name", "required": false, "example": "Secondflag of Namibia.svg", "description": "If a country has a second flag— perhaps because of an ongoing civil war or a dispute over sovereignty— you can provide the file name of that second flag in this parameter. Do not include the prefix File:, and do not enclose it in double brackets." }, "alt_flag2": { "label": "Second flag alt text", "type": "string", "required": false, "description": "Alt text for second flag (text shown when pointer hovers over flag)." }, "flag2_border": { "label": "Second flag border", "type": "string", "required": false, "description": "Set to no to disable border around the flag." }, "image_coat": { "label": "Coat of arms", "type": "wiki-file-name", "aliases": [ "image_symbol" ], "example": "Great Seal of the United States (obverse).svg" }, "symbol_width": { "label": "Symbol width", "type": "string", "required": false, "description": "Symbol image's width.", "default": "85px" }, "alt_coat": { "label": "Coat of arms alt text", "type": "string", "aliases": [ "alt_symbol", "coat_alt" ], "required": false, "description": "Alt text for coat of arms." }, "symbol_type": { "label": "Symbol type", "type": "string", "required": false, "description": "If not a coat of arms.", "example": "emblem, seal, etc" }, "symbol_type_article": { "label": "Symbol type article", "type": "string", "description": "An article about the type of symbol of the country" }, "text_symbol": { "label": "Text symbol", "type": "string", "required": false, "description": "For other types of text symbol.", "example": "''[hymn name]''" }, "text_symbol_type": { "label": "Text symbol type", "type": "string", "required": false, "description": "For other types of text symbol." }, "other_symbol": { "label": "Other symbol", "type": "string", "required": false, "description": "Use if a further symbol exists." }, "other_symbol_type": { "label": "Other symbol type", "type": "string", "required": false }, "national_motto": { "label": "National motto", "type": "string", "required": false, "example": "{{lang|de|''{{lang|de|[[Das Lied der Deutschen|Einigkeit und Recht und Freiheit]]}}''}}", "description": "In inverted commas and wikilinked if link exists. Can also be used with the {{lang}} template and correct two-letter language code to designate the language of the motto where not provided in English." }, "motto": { "label": "Motto", "type": "string", "required": false }, "national_anthem": { "label": "National anthem", "type": "string", "required": false, "description": "In inverted commas and wikilinked if link exists." }, "anthem": { "label": "Anthem", "type": "string", "required": false }, "royal_anthem": { "label": "Royal anthem", "type": "string", "required": false, "description": "In inverted commas and wikilinked if link exists." }, "image_map": { "label": "Map", "type": "string", "required": false, "example": "LocationCountry.svg" }, "map_width": { "label": "Map width", "type": "string", "required": false, "description": "Map image's width.", "default": "250px" }, "alt_map": { "label": "Map alt text", "type": "string", "required": false }, "map_caption": { "label": "Map caption", "type": "string", "required": false, "description": "Caption to place below map." }, "image_map2": { "label": "Map 2", "type": "string", "required": false, "description": "Another map, if required." }, "map2_width": { "label": "Map 2 width", "type": "string", "required": false }, "alt_map2": { "label": "Map 2 alt text", "type": "string", "required": false }, "map_caption2": { "label": "Map 2 caption", "type": "string", "required": false, "description": "Caption to place below second map." }, "image_map3": {}, "map3_width": {}, "alt_map3": {}, "map_caption3": {}, "capital": { "label": "Capital", "type": "string", "required": false, "description": "Name of country/territory's capital, wikilinked if link exists." }, "capital_type": { "label": "Capital type", "type": "string", "required": false }, "coordinates": { "label": "Coordinates", "type": "string", "required": false, "description": "The geographic coordinates of the capital." }, "latd": { "label": "Latitude degrees", "type": "string", "required": false, "description": "The degrees of the capital's latitude." }, "latm": { "label": "Latitude minutes", "type": "string", "description": "The minutes of the capital's latitude." }, "latNS": { "label": "Latitude NS", "type": "string", "description": "The direction of the capital's latitude." }, "longd": { "label": "Longitude degrees", "type": "string", "description": "The degrees of the capital's longitude." }, "longm": { "label": "Longitude minutes", "type": "string", "description": "The minutes of the capital's longitude." }, "longEW": { "label": "Longitude EW", "type": "string", "description": "The direction of the capital's longitude." }, "admin_center": { "label": "Administrative center", "type": "string", "required": false, "description": "Location/s of administrative center/s." }, "admin_center_type": { "label": "Administrative center type", "type": "string", "required": false, "default": "Administrative center" }, "capital2": { "label": "Capital 2", "type": "string", "required": false, "description": "Name of country/territory's capital, wikilinked if link exists." }, "capital_type2": { "label": "Capital 2 type", "type": "string", "required": false }, "admin_center2": { "label": "Administrative center 2", "type": "string", "required": false }, "admin_center_type2": { "label": "Administrative center 2 type", "type": "string", "required": false }, "largest_city": { "label": "Largest city", "type": "string", "required": false, "description": "Name of country/territory's largest city. Use \"capital\" (without quotemarks) if it's the capital." }, "largest_settlement": { "label": "Largest settlement", "type": "string", "required": false, "description": "Name of largest settlement if not a city." }, "largest_settlement_type": { "label": "Largest settlement type", "type": "string", "required": false, "description": "Type of settlement if largest settlement not a city." }, "official_languages": { "label": "Official languages", "type": "string", "required": false, "description": "Languages recognised in legislation, constitution, etc." }, "national_languages": { "label": "National languages", "type": "string", "required": false, "description": "Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc." }, "regional_languages": { "label": "Regional languages", "type": "string", "required": false, "description": "Languages recognised or associated with particular regions within the country/territory." }, "languages_type": { "label": "Languages type", "type": "string", "description": "Use to specify a further type of language, if not official, national or regional." }, "languages_sub": { "label": "Languages sub", "type": "string", "required": false, "description": "Is this further type of language a sub-item of the previous non-sub type?", "example": "'yes' or 'no'" }, "languages": { "label": "Languages", "type": "string", "required": false, "description": "Languages of the further type." }, "languages2_type": { "label": "2nd languages type", "type": "string", "description": "Use to specify a 2nd further type of language, if not official, national or regional." }, "languages2_sub": { "label": "Languages 2 sub", "type": "string", "required": false, "description": "Is the second alternative type of languages a sub-item of the previous non-sub type?", "example": "'yes or 'no'" }, "languages2": { "label": "Languages 2", "type": "string", "required": false, "description": "Languages of the second further type." }, "ethnic_groups": { "label": "Ethnic groups", "type": "string", "required": false, "description": "The primary ethnic groups of the country", "example": "{{unbulleted list | 68.8% [[Bumiputera (Malaysia)|Bumiputera]] | 23.2% [[Malaysian Chinese|Chinese]] | &nbsp;7.0% [[Malaysian Indian|Indian]] | &nbsp;1.0% Others }}" }, "ethnic_groups_ref": { "label": "Ethnic groups reference", "type": "string", "required": false, "description": "Reference, in <ref> format, of ethnic composition" }, "ethnic_groups_year": { "label": "Ethnic groups year", "type": "number", "required": false, "description": "Year the ethnic group statistic is from", "example": "2017" }, "religion": { "label": "Religions", "type": "string", "required": false, "description": "List of religious affiliations in {{ublist}} format", "example": "{{ublist|list_style=line-height:1.3em; |class=nowrap | 33.2% [[Buddhism in Singapore|Buddhism]]...}}" }, "religion_ref": { "label": "Religions reference", "type": "string", "required": false, "description": "Reference, in <ref> format, of religious composition" }, "demonym": { "label": "Demonym", "type": "string", "required": false, "description": "Name of residents of this country", "example": "Singaporean", "suggested": true }, "org_type": { "label": "Organization type", "type": "string", "required": false }, "membership": { "label": "membership", "type": "string", "required": false }, "membership_type": { "label": "membership_type", "type": "string", "required": false }, "government_type": { "label": "Type of government", "type": "string", "required": false, "description": "The type of government, e.g. federal republic", "example": "[[Monarchy]]" }, "politics_link": { "label": "Politics link", "type": "string", "required": false }, "leader_title1": { "label": "Leader 1 title", "type": "line", "required": false, "description": "Title of principal leader", "example": "[[President of Singapore|President]]" }, "leader_name1": { "label": "Leader 1 name", "type": "line", "required": false, "description": "Name of principal leader", "example": "[[Halimah Yacob]]" }, "leader_title2": { "label": "Leader 2 title", "type": "line", "required": false, "description": "Title of 2nd leader", "example": "[[Prime Minister of Singapore|Prime Minister]]" }, "leader_name2": { "label": "Leader 2 name", "type": "line", "description": "Name of 2nd leader", "example": "[[Lee Hsien Loong]]" }, "leader_title3": { "label": "Leader 3 title", "type": "line", "required": false, "description": "Title of 3rd leader", "example": "[[Deputy Prime Minister of Singapore|Deputy Prime Ministers]]" }, "leader_name3": { "label": "Leader 3 name", "type": "line", "description": "Name of 3rd leader", "example": "[[Teo Chee Hean]]<br>[[Tharman Shanmugaratnam]]" }, "leader_title4": { "label": "Leader 4 title", "type": "line", "required": false, "description": "Title of the 4th leader", "example": "[[President pro tempore of the United States Senate|President pro tempore]]" }, "leader_name4": { "label": "Leader 4 name", "type": "line", "description": "Name of the 4th leader" }, "leader_title5": { "label": "leader_title5", "type": "string", "required": false }, "leader_name5": { "label": "Leader name 5", "type": "string" }, "leader_title6": { "label": "Leader title 6", "type": "string", "required": false }, "leader_name6": { "label": "Leader name 6", "type": "string" }, "leader_title7": { "label": "Leader title7", "type": "string", "required": false }, "leader_name7": { "label": "Leader name 7", "type": "string" }, "leader_title8": { "label": "Leader title 8", "type": "string", "required": false }, "leader_name8": { "label": "Leader name 8", "type": "string" }, "leader_title9": { "label": "Leader title 9", "type": "string", "required": false }, "leader_name9": { "label": "Leader name 9", "type": "string" }, "leader_title10": { "label": "Leader title 10", "type": "string", "required": false }, "leader_name10": { "label": "Leader name 10", "type": "string" }, "leader_title11": { "label": "Leader title 11", "type": "string", "required": false }, "leader_name11": { "label": "Leader name 11", "type": "string" }, "leader_title12": { "label": "Leader title 12", "type": "string", "required": false }, "leader_name12": { "label": "Leader name 12", "type": "string" }, "leader_title13": { "label": "Leader title 13", "type": "string", "required": false }, "leader_name13": { "label": "Leader name 13", "type": "string" }, "leader_title14": { "label": "Leader title 14", "type": "string", "required": false }, "leader_name14": { "label": "Leader name 14", "type": "string" }, "legislature": { "label": "Legislature", "type": "line", "description": "Name of, and link to, the country's national legislature", "example": "[[Parliament of Singapore|Parliament]]" }, "upper_house": { "description": "Upper house of the country or organization's legislature", "type": "string", "example": "[[United States House of Representatives|House of Representatives]]" }, "lower_house": { "description": "Lower house of the country or organization's legislature", "label": "Lower house", "type": "string", "example": "[[United States House of Representatives|House of Representatives]]" }, "sovereignty_type": { "label": "Sovereignty type", "type": "line", "required": false, "description": "Type of sovereignty this country has", "example": "Independence" }, "sovereignty_note": { "label": "Sovereignty note", "type": "content", "required": false, "description": "Note about this country's sovereignty", "example": "from the [[United Kingdom]]" }, "established": { "label": "established", "type": "string", "required": false }, "established_event1": { "label": "Establishment event 1", "type": "string", "required": false }, "established_date1": { "label": "Establishment date 1", "type": "string", "required": false }, "established_event2": { "label": "Establishment event 2", "type": "string", "required": false }, "established_date2": { "label": "Establishment date 2", "type": "string", "required": false }, "established_event3": { "label": "Establishment event 3", "type": "string", "required": false }, "established_date3": { "label": "Establishment date 3", "type": "string", "required": false }, "established_event4": { "label": "Establishment event 4", "type": "string", "required": false }, "established_date4": { "label": "established_date4", "type": "string", "required": false }, "established_event5": { "label": "Establishment event 5", "type": "string", "required": false }, "established_date5": { "label": "established_date5", "type": "string", "required": false }, "established_event6": { "label": "established_event6", "type": "string", "required": false }, "established_date6": { "label": "established_date6", "type": "string", "required": false }, "established_event7": { "label": "established_event7", "type": "string", "required": false }, "established_date7": { "label": "established_date7", "type": "string", "required": false }, "established_event8": { "label": "established_event8", "type": "string", "required": false }, "established_date8": { "label": "established_date8", "type": "string", "required": false }, "established_event9": { "label": "established_event9", "type": "string", "required": false }, "established_date9": { "label": "established_date9", "type": "string", "required": false }, "established_event10": { "label": "established_event10", "type": "string", "required": false }, "established_date10": { "label": "established_date10", "type": "string", "required": false }, "established_event11": { "label": "established_event11", "type": "string", "required": false }, "established_date11": { "label": "established_date11", "type": "string", "required": false }, "established_event12": { "label": "established_event12", "type": "string", "required": false }, "established_date12": { "label": "established_date12", "type": "string", "required": false }, "area_km2": { "label": "Land area (km²)", "type": "number", "required": false, "description": "Land area of the country in square kilometers", "example": "722.5", "suggested": true }, "area_link": { "label": "area_link", "type": "string", "required": false }, "area_label": { "label": "area_label", "type": "string", "required": false }, "FR_foot4": { "label": "FR_foot4", "type": "string", "required": false, "deprecated": true }, "area_footnote": { "label": "area_footnote", "type": "string", "required": false }, "area_rank": { "label": "Area rank", "type": "string", "required": false, "description": "Rank among countries of land area", "example": "174th", "suggested": true }, "area_sq_mi": { "label": "Land area (mi²)", "type": "number", "required": false, "description": "Land area of the country in square miles", "example": "290" }, "percent_water": { "label": "percent_water", "type": "string", "required": false }, "area_label2": { "label": "area_label2", "type": "string", "required": false }, "area_data2": { "label": "area_data2", "type": "string", "required": false }, "area_label3": { "label": "area_label3", "type": "string", "required": false }, "area_data3": { "label": "area_data3", "type": "string", "required": false }, "FR_metropole": { "label": "FR_metropole", "type": "string", "required": false, "deprecated": true }, "FR_foot2": { "label": "FR_foot2", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_km2": { "label": "FR_IGN_area_km2", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_rank": { "label": "FR_IGN_area_rank", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_sq_mi": { "label": "FR_IGN_area_sq_mi", "type": "string", "required": false, "deprecated": true }, "FR_foot3": { "label": "FR_foot3", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_km2": { "label": "FR_cadastre_area_km2", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_rank": { "label": "FR_cadastre_area_rank", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_sq_mi": { "label": "FR_cadastre_area_sq_mi", "type": "string", "required": false, "deprecated": true }, "population_estimate": { "label": "Population estimate", "type": "number", "required": false, "description": "An estimate of the country's population", "example": "24,000,000" }, "population_census": { "label": "Population census", "type": "string" }, "population_link": { "label": "Population link", "type": "url" }, "population_estimate_year": { "label": "Population estimate year", "type": "number", "description": "The year the population estimate is from", "example": "2018" }, "population_estimate_rank": { "label": "Population estimate rank", "type": "string", "description": "Rank among countries in estimated population", "example": "3rd" }, "population_label2": { "label": "population_label2", "type": "string", "required": false }, "population_data2": { "label": "Population data 2", "type": "string", "required": false }, "population_label3": { "label": "Population label 3", "type": "string", "required": false }, "population_data3": { "label": "Population data 3", "type": "string", "required": false }, "population_census_year": { "label": "Population census year", "type": "number", "required": false, "description": "Year the population census statistics are from", "example": "2010" }, "population_census_rank": { "label": "Population census rank", "type": "string", "description": "Rank among countries in census population", "example": "3rd" }, "population_density_km2": { "label": "Population density per km²", "type": "number", "example": "20,212", "description": "Population density per square kilometer" }, "population_density_sq_mi": { "label": "Population density per mi²", "type": "number", "description": "Population density per square mile", "example": "20,212" }, "pop_den_footnote": { "label": "Population density footnote", "type": "string", "description": "footnote about the population density statistic" }, "population_density_rank": { "label": "Population density rank", "type": "string", "required": false, "description": "Rank among countries in population density", "example": "3rd" }, "FR_metropole_population": { "label": "FR_metropole_population", "type": "string", "required": false, "deprecated": true }, "FR_total_population_estimate_year": { "label": "FR_total_population_estimate_year", "type": "string", "deprecated": true }, "FR_foot": { "label": "FR_foot", "type": "string", "deprecated": true }, "FR_total_population_estimate": { "label": "FR_total_population_estimate", "type": "string", "deprecated": true }, "FR_total_population_estimate_rank": { "label": "FR_total_population_estimate_rank", "type": "string", "deprecated": true }, "FR_metropole_population_estimate_rank": { "label": "FR_metropole_population_estimate_rank", "type": "string", "deprecated": true }, "FR_foot5": { "label": "FR_foot5", "type": "string", "required": false, "deprecated": true }, "GDP_PPP": { "label": "GDP (PPP)", "type": "line", "required": false, "description": "Gross domestic product (purchasing power parity)", "example": "$554.855 billion", "suggested": true }, "GDP_PPP_year": { "label": "GDP (PPP) year cited", "type": "number", "required": false, "description": "Year the GDP (PPP) statistic is cited from", "example": "2018", "suggested": true }, "GDP_PPP_rank": { "label": "GDP (PPP) rank", "type": "string", "required": false, "description": "Rank among countries for GDP PPP", "example": "39th" }, "GDP_PPP_per_capita": { "label": "GDP_PPP_per_capita", "type": "line", "required": false, "description": "Gross domestic product (purchasing power parity) per capita", "example": "$98,014" }, "GDP_PPP_per_capita_rank": { "label": "GDP (PPP) per capita rank", "type": "line", "required": false, "description": "Rank among countries for GDP PPP per capita", "example": "3rd" }, "GDP_nominal": { "label": "GDP (nominal)", "type": "string", "required": false, "description": "Nominal GDP of the country" }, "GDP_nominal_year": { "label": "GDP (nominal) year", "type": "number", "required": false, "description": "Year cited for the country's nominal GDP statistic" }, "GDP_nominal_rank": { "label": "GDP (nominal) rank", "type": "string", "required": false, "description": "Rank among countries for nominal GDP", "example": "41st" }, "GDP_nominal_per_capita": { "label": "GDP (nominal) per capita", "type": "string", "required": false, "description": "Nominal GDP per capita in the country", "example": "$61,766" }, "GDP_nominal_per_capita_rank": { "label": "GDP (nominal) per capita rank", "type": "string", "required": false, "description": "Rank among countries for nominal GDP per capita", "example": "8th" }, "Gini": { "label": "Gini index", "type": "number", "required": false, "description": "Gini index of the country", "example": "46.4" }, "Gini_year": { "label": "Gini index year cited", "type": "number", "required": false, "description": "Year the gini index statistic is cited for", "example": "2014" }, "Gini_change": { "label": "Gini change", "type": "string", "required": false, "description": "\"increase\" or \"decrease\" (over last year)", "example": "increase" }, "Gini_ref": { "label": "Gini index reference", "type": "line", "required": false, "description": "Reference for cited Gini index statistic" }, "Gini_rank": { "label": "Gini rank", "type": "string", "required": false, "description": "Rank of Gini indices", "example": "30th" }, "HDI": { "label": "Human development index", "type": "number", "required": false, "example": "0.932", "suggested": true, "description": "The country's human development index (HDI)" }, "HDI_year": { "label": "Human Development Index year", "type": "number", "required": false, "description": "Year to which the HDI statistic refers", "example": "2017", "suggested": true }, "HDI_change": { "label": "HDI change", "type": "string", "required": false, "description": "\"increase\" or \"decrease\" from previous year", "example": "increase" }, "HDI_ref": { "label": "Human Development Index reference", "type": "line", "required": false, "description": "Reference for HDI statistic" }, "HDI_rank": { "label": "Human development index rank", "type": "string", "required": false, "description": "Rank among countries for HDI score", "example": "9th" }, "currency": { "label": "Currency", "type": "line", "required": false, "description": "National/official currency name and article link", "example": "[[Singapore dollar]]" }, "currency_code": { "label": "Currency code", "type": "line", "required": false, "description": "Currency code of the official currency", "example": "SGD" }, "time_zone": { "label": "Time zone", "type": "line", "required": false, "description": "National time zone(s)", "example": "[[Singapore Standard Time|SST]]" }, "utc_offset": { "label": "UTC offsets", "type": "string", "example": "−4 to −12, +10, +11" }, "utc_offset_DST": { "label": "UTF offsets (DST)", "type": "string", "example": "−4 to −10" }, "DST_note": { "label": "DST note", "type": "string", "example": "{{efn|name=\"time\"}}" }, "time_zone_DST": { "label": "Time zones (DST)", "type": "string", "required": false }, "DST": { "label": "Daylight savings time", "type": "string", "required": false }, "antipodes": { "label": "antipodes", "type": "string", "required": false }, "date_format": { "label": "Date format", "type": "string", "required": false }, "drives_on": { "label": "drives on", "type": "string", "required": false }, "rail gauge": { "label": "Rail gauge", "type": "string", "required": false }, "calling_code": { "label": "Calling code", "type": "string", "example": "+1" }, "patron_saint": { "label": "Patron saint", "aliases": [ "patron_saints" ], "type": "string", "required": false }, "iso3166code": { "label": "ISO 3166 code", "type": "string", "description": "ISO 3166 code for the country", "example": "US" }, "cctld": { "label": "Country code top level domain", "type": "string", "example": ".se" }, "official_website": { "label": "official_website", "type": "string", "required": false, "description": "For geopolitical entities: do not use government website (e.g. usa.gov) for countries (e.g. [[United States]])." }, "footnote_a": { "label": "footnote_a", "type": "string", "required": false }, "footnote_b": { "label": "footnote_b", "type": "string", "required": false }, "footnote_c": { "label": "footnote_c", "type": "string", "required": false }, "footnote_d": { "label": "footnote_d", "type": "string", "required": false }, "footnote_e": { "label": "footnote_e", "type": "string", "required": false }, "footnote_f": { "label": "footnote_f", "type": "string", "required": false }, "footnote_g": { "label": "footnote_g", "type": "string", "required": false }, "footnote_h": { "label": "footnote_h", "type": "string", "required": false }, "footnote1": { "label": "footnote1", "type": "string", "required": false }, "footnote2": { "label": "footnote2", "type": "string", "required": false }, "footnote3": { "label": "footnote3", "type": "string", "required": false }, "footnote4": { "label": "footnote4", "type": "string", "required": false }, "footnote5": { "label": "footnote5", "type": "string", "required": false }, "footnote6": { "label": "footnote6", "type": "string", "required": false }, "footnote7": { "label": "footnote7", "type": "string", "required": false }, "footnote8": { "label": "footnote8", "type": "string", "required": false }, "footnotes": { "label": "footnotes", "type": "string", "required": false }, "navbar": { "label": "navbar", "type": "string", "required": false }, "micronation": {}, "status": { "type": "line" }, "status_text": { "type": "line" }, "empire": {}, "year_end": { "type": "number" }, "year_exile_start": { "type": "number" }, "year_exile_end": { "type": "number" }, "life_span": { "type": "line" }, "year_start": { "type": "number" }, "flag_size": { "type": "line" }, "flag_alt": { "type": "string" }, "flag_alt2": { "type": "string" }, "flag_type": { "type": "string" }, "coa_size": { "type": "line" }, "englishmotto": { "type": "string", "label": "Motto in English", "description": "The country's motto translated into English" }, "image_map_size": { "type": "line" }, "image_map_alt": { "type": "string" }, "image_map_caption": { "type": "content" }, "image_map2_size": { "type": "line" }, "image_map2_alt": { "type": "string" }, "image_map2_caption": { "type": "content" }, "loctext": { "type": "string" }, "capital_exile": { "type": "string" }, "recognized_languages": { "aliases": [ "recognised_languages" ], "type": "content", "label": "Recognized languages", "description": "Recognized languages of the country, possibly in list format" }, "recognized_national_languages": { "aliases": [ "recognised_national_languages" ], "type": "content", "label": "Recognized national languages", "description": "Recognized national languages of the country, possibly in list format" }, "recognized_regional_languages": { "aliases": [ "recognised_regional_languages" ], "type": "content", "label": "Recognized regional languages", "description": "Recognized regional languages of the country, possibly in list format" }, "common_languages": { "type": "content", "label": "Common languages", "description": "Common languages of the country, possibly in list format", "example": "{{ublist|[[English language|English]]|[[Spanish language|Spanish]]|[[Chinese language|Chinese]]}}" }, "religion_year": { "type": "number", "label": "Religion statistic year", "description": "Year the religion statistic is from", "example": "2015" }, "leader_title15": { "type": "line" }, "leader_name15": { "type": "line" }, "title_leader": { "type": "line", "label": "Leader's title", "description": "Title of the country's leader", "example": "[[President of the United States|President]]" }, "year_leader1": { "type": "line", "label": "Leader 1 years", "description": "Years the first leader reigned", "example": "1776-1795" }, "leader1": { "type": "line", "label": "Leader 1", "description": "The first leader of the country", "example": "[[George Washington]]" }, "year_leader2": { "type": "line" }, "leader2": { "type": "line" }, "year_leader3": { "type": "line" }, "leader3": { "type": "line" }, "year_leader4": { "type": "line" }, "leader4": { "type": "line" }, "year_leader5": { "type": "line" }, "leader5": { "type": "line" }, "year_leader6": { "type": "line" }, "leader6": { "type": "line" }, "year_leader7": { "type": "line" }, "leader7": { "type": "line" }, "year_leader8": { "type": "line" }, "leader8": { "type": "line" }, "year_leader9": { "type": "line" }, "leader9": { "type": "line" }, "year_leader10": { "type": "line" }, "leader10": { "type": "line" }, "year_leader11": { "type": "line", "label": "Leader 11 years", "description": "Year of leader 11", "example": "1980-1987" }, "leader11": { "type": "line" }, "title_representative": { "type": "line", "label": "Representative title", "description": "Title of the country's representative", "example": "[[Governor General of Canada|Governor General]]" }, "year_representative1": { "type": "line", "label": "Representative 1 years", "description": "Year of representative 1", "example": "1492-1506" }, "representative1": { "type": "line", "label": "Representative 1", "description": "First representative" }, "year_representative2": { "type": "line", "label": "Representative 2 years", "description": "Year of representative 2", "example": "1552-1580" }, "representative2": { "type": "line" }, "year_representative3": { "type": "line", "label": "Representative 3 years", "description": "Year of representative 3", "example": "1652-1666" }, "representative3": { "type": "line" }, "year_representative4": { "type": "line", "label": "Representative 4 year", "description": "Year of representative 4", "example": "1652-1666" }, "representative4": { "type": "line" }, "year_representative5": { "type": "line", "label": "Representative 5 years", "description": "Year of representative 5", "example": "1652-1666" }, "representative5": { "type": "line" }, "title_deputy": { "type": "line" }, "year_deputy1": { "type": "line", "label": "Deputy 1 years", "description": "Years of the 1st deputy", "example": "2006-2009" }, "deputy1": { "type": "line", "label": "Deputy 1", "description": "First deputy" }, "year_deputy2": { "type": "line", "label": "Deputy 2 years", "description": "Years of the 2nd deputy", "example": "2009-2011" }, "deputy2": { "type": "line" }, "year_deputy3": { "type": "line", "label": "Deputy 3 years", "description": "Years of the 3rd deputy", "example": "2011-2013" }, "deputy3": { "type": "line" }, "year_deputy4": { "type": "line", "label": "Deputy 4 years", "description": "Years of the 4th deputy", "example": "2013-2016" }, "deputy4": { "type": "line" }, "year_deputy5": { "type": "line", "label": "Deputy 5 years", "description": "Years of the 5th deputy", "example": "2016-2018" }, "deputy5": { "type": "line" }, "year_deputy6": { "type": "line", "label": "Deputy 6 years", "description": "Years of the 6th deputy", "example": "2018-" }, "deputy6": { "type": "line" }, "type_house1": { "type": "line" }, "house1": { "type": "line" }, "type_house2": { "type": "line" }, "house2": { "type": "line" }, "event_pre": { "type": "line" }, "established_event13": { "label": "Establishment event 13", "type": "line" }, "established_date13": { "label": "Establishment date 13", "type": "date" }, "established_event14": { "type": "line" }, "established_date14": { "type": "line" }, "established_event15": { "type": "line" }, "established_date15": { "type": "line" }, "event_start": { "label": "Starting event", "description": "The foundational event of the country", "example": "Established", "type": "string" }, "date_pre": {}, "date_start": { "label": "Date established", "description": "Date the country, dynasty or organization was established (date of event_start)", "example": "601 CE", "type": "string" }, "event1": { "label": "Event 1", "description": "First significant event", "example": "Signing of the [[Chanyuan Treaty]] with [[Liao dynasty|Liao]]", "type": "string" }, "date_event1": { "label": "Event 1 date", "description": "Date of the first significant event", "example": "601", "type": "date" }, "event2": { "label": "Event 2", "description": "Second significant event", "example": "[[Alliance Conducted at Sea|Alliance with Jin]]", "type": "string" }, "date_event2": { "label": "Event 2 date", "description": "Date of the second significant event", "type": "string" }, "event3": { "label": "Event 3", "description": "Third significant event", "example": "[[Jingkang Incident]]", "type": "string" }, "date_event3": {}, "event4": { "label": "Event 4", "description": "Fourth significant event", "example": "Beginning of [[Mongol conquest of the Song dynasty|Mongol invasion]]", "type": "string" }, "date_event4": {}, "event5": { "label": "Event 5", "description": "Fifth significant event", "example": "Fall of [[Hangzhou|Lin'an]]", "type": "string" }, "date_event5": {}, "event6": { "label": "Event 6", "description": "Sixth significant event", "example": "[[Krystallnacht]]", "type": "string" }, "date_event6": {}, "event_end": { "label": "Event ending the country", "description": "The event that caused the country to stop existing or transition, if applicable", "example": "[[Battle of Yamen]] (end of dynasty)", "type": "string" }, "date_end": { "label": "End date", "description": "Date the country stopped existing or transitioned, if applicable", "example": "1433", "type": "date" }, "event_post": {}, "date_post": {}, "area_ha": {}, "area_acre": {}, "area_land_km2": {}, "area_land_ha": {}, "area_land_sq_mi": {}, "area_land_acre": {}, "area_water_km2": {}, "area_water_ha": {}, "area_water_sq_mi": {}, "area_water_acre": {}, "stat_area1": {}, "stat_area2": {}, "stat_area3": {}, "stat_area4": {}, "stat_area5": {}, "area_land_footnote": {}, "area_water_footnote": {}, "stat_year1": {}, "ref_area1": {}, "stat_year2": {}, "ref_area2": {}, "stat_year3": {}, "ref_area3": {}, "stat_year4": {}, "ref_area4": {}, "stat_year5": { "label": "Statistic 5 year", "description": "Year of statistic 5", "example": "1933", "type": "number" }, "ref_area5": {}, "stat_pop1": {}, "stat_pop2": {}, "stat_pop3": {}, "stat_pop4": {}, "stat_pop5": {}, "ref_pop1": {}, "ref_pop2": {}, "ref_pop3": {}, "ref_pop4": {}, "ref_pop5": {}, "nummembers": {}, "p1": {}, "s1": {}, "flag_p1": {}, "image_p1": {}, "border_p1": {}, "flag_p2": {}, "image_p2": {}, "p2": {}, "border_p2": {}, "flag_p3": {}, "image_p3": {}, "p3": {}, "border_p3": {}, "flag_p4": {}, "image_p4": {}, "p4": {}, "border_p4": {}, "flag_p5": {}, "image_p5": {}, "p5": {}, "border_p5": {}, "flag_p6": {}, "image_p6": {}, "p6": {}, "border_p6": {}, "flag_p7": {}, "image_p7": {}, "p7": {}, "border_p7": {}, "flag_p8": {}, "image_p8": {}, "p8": {}, "border_p8": {}, "flag_p9": {}, "image_p9": {}, "p9": {}, "border_p9": {}, "flag_p10": {}, "image_p10": {}, "p10": {}, "border_p10": {}, "flag_p11": {}, "image_p11": {}, "p11": {}, "border_p11": {}, "flag_p12": {}, "image_p12": {}, "p12": {}, "border_p12": {}, "flag_p13": {}, "image_p13": {}, "p13": {}, "border_p13": {}, "flag_p14": {}, "image_p14": {}, "p14": {}, "border_p14": {}, "flag_p15": {}, "image_p15": {}, "p15": {}, "border_p15": {}, "flag_s1": {}, "image_s1": {}, "border_s1": {}, "flag_s2": {}, "image_s2": {}, "s2": {}, "border_s2": {}, "flag_s3": {}, "image_s3": {}, "s3": {}, "border_s3": {}, "flag_s4": {}, "image_s4": {}, "s4": {}, "border_s4": {}, "flag_s5": {}, "image_s5": {}, "s5": {}, "border_s5": {}, "flag_s6": {}, "image_s6": {}, "s6": {}, "border_s6": {}, "flag_s7": {}, "image_s7": {}, "s7": {}, "border_s7": {}, "flag_s8": {}, "image_s8": {}, "s8": {}, "border_s8": {}, "flag_s9": {}, "image_s9": {}, "s9": {}, "border_s9": {}, "flag_s10": {}, "image_s10": {}, "s10": {}, "border_s10": {}, "flag_s11": {}, "image_s11": {}, "s11": {}, "border_s11": {}, "flag_s12": {}, "image_s12": {}, "s12": {}, "border_s12": {}, "flag_s13": {}, "image_s13": {}, "s13": {}, "border_s13": {}, "flag_s14": {}, "image_s14": {}, "s14": {}, "border_s14": {}, "flag_s15": {}, "image_s15": {}, "s15": {}, "border_s15": {}, "today": { "label": "Today part of", "description": "For former countries, a list of countries of which the former country's territories are now part, if no more than four.", "example": "{{plainlist| *[[Czech Republic]] *[[Denmark]] *[[France]] *[[Germany]] }}", "type": "content", "suggested": true }, "footnotes2": {}, "symbol_caption": {}, "nested": {} }, "paramOrder": [ "conventional_long_name", "common_name", "linking_name", "native_name", "name", "image_flag", "flag_width", "alt_flag", "flag_border", "flag_caption", "image_flag2", "alt_flag2", "flag2_border", "image_coat", "symbol_width", "alt_coat", "symbol_type", "symbol_type_article", "text_symbol", "text_symbol_type", "other_symbol", "other_symbol_type", "national_motto", "motto", "national_anthem", "anthem", "royal_anthem", "image_map", "map_width", "alt_map", "map_caption", "image_map2", "map2_width", "alt_map2", "map_caption2", "image_map3", "map3_width", "alt_map3", "map_caption3", "capital", "capital_type", "coordinates", "latd", "latm", "latNS", "longd", "longm", "longEW", "admin_center", "admin_center_type", "capital2", "capital_type2", "admin_center2", "admin_center_type2", "largest_city", "largest_settlement", "largest_settlement_type", "official_languages", "national_languages", "regional_languages", "languages_type", "languages_sub", "languages", "languages2_type", "languages2_sub", "languages2", "ethnic_groups", "ethnic_groups_ref", "ethnic_groups_year", "religion", "religion_ref", "demonym", "org_type", "membership", "membership_type", "government_type", "politics_link", "leader_title1", "leader_name1", "leader_title2", "leader_name2", "leader_title3", "leader_name3", "leader_title4", "leader_name4", "leader_title5", "leader_name5", "leader_title6", "leader_name6", "leader_title7", "leader_name7", "leader_title8", "leader_name8", "leader_title9", "leader_name9", "leader_title10", "leader_name10", "leader_title11", "leader_name11", "leader_title12", "leader_name12", "leader_title13", "leader_name13", "leader_title14", "leader_name14", "legislature", "upper_house", "lower_house", "sovereignty_type", "sovereignty_note", "established", "established_event1", "established_date1", "established_event2", "established_date2", "established_event3", "established_date3", "established_event4", "established_date4", "established_event5", "established_date5", "established_event6", "established_date6", "established_event7", "established_date7", "established_event8", "established_date8", "established_event9", "established_date9", "established_event10", "established_date10", "established_event11", "established_date11", "established_event12", "established_date12", "area_km2", "area_link", "area_label", "FR_foot4", "area_footnote", "area_rank", "area_sq_mi", "percent_water", "area_label2", "area_data2", "area_label3", "area_data3", "FR_metropole", "FR_foot2", "FR_IGN_area_km2", "FR_IGN_area_rank", "FR_IGN_area_sq_mi", "FR_foot3", "FR_cadastre_area_km2", "FR_cadastre_area_rank", "FR_cadastre_area_sq_mi", "population_estimate", "population_census", "population_link", "population_estimate_year", "population_estimate_rank", "population_label2", "population_data2", "population_label3", "population_data3", "population_census_year", "population_census_rank", "population_density_km2", "population_density_sq_mi", "pop_den_footnote", "population_density_rank", "FR_metropole_population", "FR_total_population_estimate_year", "FR_foot", "FR_total_population_estimate", "FR_total_population_estimate_rank", "FR_metropole_population_estimate_rank", "FR_foot5", "GDP_PPP", "GDP_PPP_year", "GDP_PPP_rank", "GDP_PPP_per_capita", "GDP_PPP_per_capita_rank", "GDP_nominal", "GDP_nominal_year", "GDP_nominal_rank", "GDP_nominal_per_capita", "GDP_nominal_per_capita_rank", "Gini", "Gini_year", "Gini_change", "Gini_ref", "Gini_rank", "HDI", "HDI_year", "HDI_change", "HDI_ref", "HDI_rank", "currency", "currency_code", "time_zone", "utc_offset", "utc_offset_DST", "DST_note", "time_zone_DST", "DST", "antipodes", "date_format", "drives_on", "rail gauge", "calling_code", "patron_saint", "iso3166code", "cctld", "official_website", "footnote_a", "footnote_b", "footnote_c", "footnote_d", "footnote_e", "footnote_f", "footnote_g", "footnote_h", "footnote1", "footnote2", "footnote3", "footnote4", "footnote5", "footnote6", "footnote7", "footnote8", "footnotes", "navbar", "micronation", "status", "status_text", "empire", "year_end", "year_exile_start", "year_exile_end", "life_span", "year_start", "flag_size", "flag_alt", "flag_alt2", "flag_type", "coa_size", "englishmotto", "image_map_size", "image_map_alt", "image_map_caption", "image_map2_size", "image_map2_alt", "image_map2_caption", "loctext", "capital_exile", "recognized_languages", "recognized_national_languages", "recognized_regional_languages", "common_languages", "religion_year", "leader_title15", "leader_name15", "title_leader", "year_leader1", "leader1", "year_leader2", "leader2", "year_leader3", "leader3", "year_leader4", "leader4", "year_leader5", "leader5", "year_leader6", "leader6", "year_leader7", "leader7", "year_leader8", "leader8", "year_leader9", "leader9", "year_leader10", "leader10", "year_leader11", "leader11", "title_representative", "year_representative1", "representative1", "year_representative2", "representative2", "year_representative3", "representative3", "year_representative4", "representative4", "year_representative5", "representative5", "title_deputy", "year_deputy1", "deputy1", "year_deputy2", "deputy2", "year_deputy3", "deputy3", "year_deputy4", "deputy4", "year_deputy5", "deputy5", "year_deputy6", "deputy6", "type_house1", "house1", "type_house2", "house2", "established_event13", "established_date13", "established_event14", "established_date14", "established_event15", "established_date15", "event_pre", "date_pre", "event_start", "date_start", "event1", "date_event1", "event2", "date_event2", "event3", "date_event3", "event4", "date_event4", "event5", "date_event5", "event6", "date_event6", "event_end", "date_end", "event_post", "date_post", "area_ha", "area_acre", "area_land_km2", "area_land_ha", "area_land_sq_mi", "area_land_acre", "area_water_km2", "area_water_ha", "area_water_sq_mi", "area_water_acre", "stat_area1", "stat_area2", "stat_area3", "stat_area4", "stat_area5", "area_land_footnote", "area_water_footnote", "stat_year1", "ref_area1", "stat_year2", "ref_area2", "stat_year3", "ref_area3", "stat_year4", "ref_area4", "stat_year5", "ref_area5", "stat_pop1", "stat_pop2", "stat_pop3", "stat_pop4", "stat_pop5", "ref_pop1", "ref_pop2", "ref_pop3", "ref_pop4", "ref_pop5", "nummembers", "p1", "s1", "flag_p1", "image_p1", "border_p1", "flag_p2", "image_p2", "p2", "border_p2", "flag_p3", "image_p3", "p3", "border_p3", "flag_p4", "image_p4", "p4", "border_p4", "flag_p5", "image_p5", "p5", "border_p5", "flag_p6", "image_p6", "p6", "border_p6", "flag_p7", "image_p7", "p7", "border_p7", "flag_p8", "image_p8", "p8", "border_p8", "flag_p9", "image_p9", "p9", "border_p9", "flag_p10", "image_p10", "p10", "border_p10", "flag_p11", "image_p11", "p11", "border_p11", "flag_p12", "image_p12", "p12", "border_p12", "flag_p13", "image_p13", "p13", "border_p13", "flag_p14", "image_p14", "p14", "border_p14", "flag_p15", "image_p15", "p15", "border_p15", "flag_s1", "image_s1", "border_s1", "flag_s2", "image_s2", "s2", "border_s2", "flag_s3", "image_s3", "s3", "border_s3", "flag_s4", "image_s4", "s4", "border_s4", "flag_s5", "image_s5", "s5", "border_s5", "flag_s6", "image_s6", "s6", "border_s6", "flag_s7", "image_s7", "s7", "border_s7", "flag_s8", "image_s8", "s8", "border_s8", "flag_s9", "image_s9", "s9", "border_s9", "flag_s10", "image_s10", "s10", "border_s10", "flag_s11", "image_s11", "s11", "border_s11", "flag_s12", "image_s12", "s12", "border_s12", "flag_s13", "image_s13", "s13", "border_s13", "flag_s14", "image_s14", "s14", "border_s14", "flag_s15", "image_s15", "s15", "border_s15", "today", "footnotes2", "symbol_caption", "nested" ] } </templatedata> {{cob}} <includeonly>{{Sandbox other|| <!--Categories below this line, please; interwikis at Wikidata--> [[Category:Country infobox templates| ]] [[Category:Templates that add a tracking category]] }}</includeonly> 965378ebc164be211eeb082cae05a1663a245efc Valkism 0 246 545 2023-09-30T20:30:18Z Führerredux 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Volkism 0 247 546 2023-09-30T20:30:54Z Führerredux 2 Redirected page to [[Valkism]] wikitext text/x-wiki #REDIRECT [[Valkism]] 1683a7c457e8da541c18c42526ce2350d6234bea Main Page 0 1 547 1 2023-09-30T20:31:46Z Führerredux 2 Replaced content with "__NOTOC__ == Welcome to {{SITENAME}}! ==" wikitext text/x-wiki __NOTOC__ == Welcome to {{SITENAME}}! == d2e365b2c1d927ca72b05c874d6ef5c1b7a0bd5e 548 547 2023-09-30T20:31:59Z Führerredux 2 wikitext text/x-wiki __NOTOC__ == Welcome to the {{SITENAME}}! == 333c236e306a4538e312b13d2b5f86f58a3b2d5f Template:Infobox/doc 10 207 549 471 2023-09-30T20:49:50Z Führerredux 2 wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{distinguish|Template:Userbox}} {{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}} {{Lua|Module:Infobox}} {{Parameter names example |name={{PAGENAME}} <!--|child |subbox |decat--> |title |above |subheader |subheader1 |subheader2={{{subheader2}}}<br/>...... |image|caption |image1|caption1 |image2|caption2={{{caption2}}}<br/>...... |header1=<div style="border-top:1px dashed #ccc;">{{{header1}}}<br/>{{nobold|( ''or'' )}}</div> |label2={{{label1}}} |data2={{{data1}}} |data3=( ''or'' ) |data4=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data1}}}</div> |header5={{{header2}}}<br/><div style="padding:0.75em 0 0.5em;">{{nobold|( ''or'' )}}</div> |label6={{{label2}}} |data6={{{data2}}} |data7=( ''or'' ) |data8=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data2}}}</div> |data9=<div style="padding:0.75em 0 0.5em;">( ''etc'' )</div> |below }} This template is intended as a meta template: a template used for constructing other templates. '''Note''': In general, it is not meant for use directly in an article, but can be used on a one-off basis if required. [[Help:Infobox]] contains an introduction about the recommended content and design of infoboxes; [[Wikipedia:Manual of Style/Infoboxes]] contains additional style guidelines. See [[WP:List of infoboxes]] and [[:Category:Infobox templates]] for lists of prepared topic-specific infoboxes. == Usage == {{tlf|Infobox}} is a meta-template: used to organise an actual <nowiki>{{Infobox sometopic}}</nowiki> template (like {{tl|Infobox building}}). For <code><nowiki>[[Template:Infobox sometopic]]</nowiki></code>, template code then looks like this, simplified: <syntaxhighlight lang="wikitext"> {{Infobox | name = {{{name|{{PAGENAME}}}}} | image = {{{image|}}} | caption1 = {{{caption|}}} | label1 = Former names | data1 = {{{former_names|}}} | header2 = General information | label3 = Status | data3 = {{{status|}}} ... <!-- etc. --> }} </syntaxhighlight> == Optional control parameters == ; name : If this parameter is present, "view/talk/edit" links will be added to the bottom of the infobox pointing to the named page, prefixed by <code>Template:</code> if no namespace is specified. You may use the value <nowiki>{{subst:PAGENAME}}</nowiki>; however, this is rarely what you want because it will send users clicking these links in an infobox to the template code rather than the data in the infobox they probably want to change. ; child : See the [[#Embedding|Embedding]] section for details. If this is set to "yes", this child infobox should be titled but have no name parameter. This parameter is empty by default, set it to "yes" to activate it. ; subbox : See the [[#Subboxes|Subboxes]] section for details. If this is set to "yes", this subbox should be titled but have no name parameter. This parameter is empty by default, set to "yes" to activate it. It has no effect if the '''child''' parameter is also set to "yes". ; decat : If this is set to "yes", the current page will not be autocategorized in a maintenance category when the generated infobox has some problems or no visible data section. Leave empty by default or set to "yes" to activate it. ; autoheaders: If this is set to any non-blank value, headers which are not followed by data fields are suppressed. See the "[[#Hiding headers when all its data fields are empty|hiding headers when all its data fields are empty]]" section for more details. == Content parameters == === Title === There are two different ways to put a title on an infobox. One contains the title inside the infobox's border in the uppermost cell of the table, the other puts it as a caption on top of the table. You can use them both together, or just one or the other, or neither (though this is not recommended): ; title : Text to put in the caption over the top of the table (or as section header before the whole content of this table, if this is a child infobox). For [[Wikipedia:Manual of Style/Accessibility#Tables|accessibility reasons]], this is the most recommended alternative. ; above : Text to put within the uppermost cell of the table. ; subheader(n) : additional title fields which fit below {{{title}}} and {{{above}}}, but before images. Examples: {{Infobox | name = Infobox/doc | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} </syntaxhighlight>{{clear}} {{Infobox | name = Infobox/doc | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} </syntaxhighlight>{{clear}} === Illustration images === ; image(n) : images to display at the top of the template. Use full image syntax, for example <nowiki>[[File:example.png|200px|alt=Example alt text]]</nowiki>. Image is centered by default. See [[WP:ALT]] for more on alt text. ; caption(n) : Text to put underneath the images. === Main data === ; header(n) : Text to use as a header in row n. ; label(n) : Text to use as a label in row n. ; data(n) : Text to display as data in row n. Note: for any given value for (n), not all combinations of parameters are permitted. The presence of a {{para|header''(n)''}} will cause the corresponding {{para|data''(n)''}} (and {{para|rowclass''(n)''}} {{para|label''(n)''}}, see below) to be ignored; the absence of a {{para|data''(n)''}} will cause the corresponding {{para|label''(n)''}} to be ignored. Valid combinations for any single row are: * {{para|class''(n)''}} {{para|header''(n)''}} * {{para|rowclass''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}} * {{para|rowclass''(n)''}} {{para|label''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}} See the rendering of header4, label4, and data4 in the [[#Examples|Examples]] section below. ==== Number ranges ==== To allow flexibility when the layout of an infobox is changed, it may be helpful when developing an infobox to use non-contiguous numbers for header and label/data rows. Parameters for new rows can then be inserted in future without having to renumber existing parameters. For example: <syntaxhighlight lang="wikitext" style="overflow:auto"> | header3 = Section 1 | label5 = Label A | data5 = Data A | label7 = Label C | data7 = Data C | header10 = Section 2 | label12 = Label D | data12 = Data D </syntaxhighlight>{{clear}} It is also possible to automatically renumber parameter names by using [[User:Frietjes/infoboxgap.js]] or [[Module:IncrementParams]]. There is no upper limit on numbers but there must be at most 50 between each used number. ==== Making data fields optional ==== A row with a label but no data is not displayed. This allows for the easy creation of optional infobox content rows. To make a row optional use a parameter that defaults to an empty string, like so: <syntaxhighlight lang="wikitext" style="overflow:auto"> | label5 = Population | data5 = {{{population|}}} </syntaxhighlight>{{clear}} This way if an article doesn't define the population parameter in its infobox the row won't be displayed. For more complex fields with pre-formatted contents that would still be present even if the parameter wasn't set, you can wrap it all in an "#if" statement to make the whole thing vanish when the parameter is not used. For instance, the "#if" statement in the following example reads "#if:the parameter ''mass'' has been supplied |then display it, followed by 'kg'": <syntaxhighlight lang="wikitext" style="overflow:auto"> | label6 = Mass | data6 = {{ #if: {{{mass|}}} | {{{mass}}} kg }} </syntaxhighlight>{{clear}} For more on #if, see [[meta:ParserFunctions##if:|here]]. ==== Hiding headers when all its data fields are empty ==== You can also make headers automatically hide when their section is empty (has no data-row showing). Consider this situation: {{Infobox | title = Example: header with & without data | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Example: header with & without data | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} </syntaxhighlight>{{clear}} If you want hide the header when no {{para|data''N''}} values are present, use '''{{para|autoheaders|y}}''': {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} </syntaxhighlight>{{clear}} So, header1 will be shown if any of item1, item2, or item3 is defined. If none of the three parameters are defined the header won't be shown and no empty row appears before the next visible content. Note: if the data has empty css elements, like {{para|data|2=&lt;span style="background:yellow;">&lt;/span>}}, this will be treated as non-empty (having data). If {{para|autoheaders|y}} but there are items that you ''do not'' want to trigger a header, place {{para|headerX|_BLANK_}}. This will serve as an empty header and separate it from the subsequent items. {{Infobox | title = Example: blank header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = _BLANK_ | label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5 }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = _BLANK_ | label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5 }} </syntaxhighlight>{{clear}} === Footer === ; below : Text to put in the bottom cell. The bottom cell is intended for footnotes, see-also, and other such information. == Presentation parameters == === Italic titles === Titles of articles with infoboxes may be made italic, in line with [[WP:ITALICTITLE]], by passing the <code>italic title</code> parameter. * Turn on italic titles by passing {{para|italic title|<nowiki>{{{italic title|}}}</nowiki>}} from the infobox. * Turn off by default (notably because only Latin script may be safely rendered in this style and italic may be needed to distinguish foreign language from local English language only in that script, but would be difficult to read for other scripts) but allow some instances to be made italic by passing {{para|italic title|<nowiki>{{{italic title|no}}}</nowiki>}} * Do not make any titles italic by not passing the parameter at all. === CSS styling === {{div col}} ; bodystyle : Applies to the infobox table as a whole ; titlestyle : Applies only to the title caption. Adding a background color is usually inadvisable since the text is rendered "outside" the infobox. ; abovestyle : Applies only to the "above" cell at the top. The default style has font-size:125%; since this cell is usually used for a title, if you want to use the above cell for regular-sized text include "font-size:100%;" in the abovestyle. ; imagestyle : Applies to the cell the image is in. This includes the text of the image caption, but you should set text properties with captionstyle instead of imagestyle in case the caption is moved out of this cell in the future. ; captionstyle : Applies to the text of the image caption. ; rowstyle(n) : This parameter is inserted into the <code>style</code> attribute for the specified row. ; headerstyle : Applies to all header cells ; subheaderstyle : Applies to all subheader cells ; labelstyle : Applies to all label cells ; datastyle : Applies to all data cells ; belowstyle : Applies only to the below cell {{div col end}} === HTML classes and microformats === {{div col}} ; bodyclass : This parameter is inserted into the <code>class</code> attribute for the infobox as a whole. ; titleclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''title''' caption. <!-- currently not implemented in Lua module ; aboverowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''above''' cell is on. --> ; aboveclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''above''' cell. ; subheaderrowclass(n) : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''subheader''' is on. ; subheaderclass(n) : This parameter is inserted into the <code>class</code> attribute for the infobox's '''subheader'''. ; imagerowclass(n) : These parameters are inserted into the <code>class</code> attribute for the complete table row their respective '''image''' is on. ; imageclass : This parameter is inserted into the <code>class</code> attribute for the '''image'''. ; rowclass(n) : This parameter is inserted into the <code>class</code> attribute for the specified row including the '''label''' and '''data''' cells. ; class(n) : This parameter is inserted into the <code>class</code> attribute for the '''data''' cell of the specified row. If there's no '''data''' cell it has no effect. <!-- currently not implemented in Lua module ; belowrowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''below''' cell is on. --> ; belowclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''below''' cell. {{div col end}} This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. Multiple class names may be specified, separated by spaces, some of them being used as selectors for custom styling according to a project policy or to the skin selected in user preferences, others being used for microformats. To flag an infobox as containing [[hCard]] information, for example, add the following parameter: <syntaxhighlight lang="wikitext" style="overflow:auto"> | bodyclass = vcard </syntaxhighlight>{{clear}} And for each row containing a data cell that's part of the vcard, add a corresponding class parameter: <syntaxhighlight lang="wikitext" style="overflow:auto"> | class1 = fn | class2 = org | class3 = tel </syntaxhighlight>{{clear}} ...and so forth. "above" and "title" can also be given classes, since these are usually used to display the name of the subject of the infobox. See [[Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia, and [[microformat]] for more information on microformats in general. == Examples == Notice how the row doesn't appear in the displayed infobox when a '''label''' is defined without an accompanying '''data''' cell, and how all of them are displayed when a '''header''' is defined on the same row as a '''data''' cell. Also notice that '''subheaders''' are not bold by default like the '''headers''' used to split the main data section, because this role is meant to be for the '''above''' cell : {{Suppress categories| {{Infobox |name = Infobox/doc |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = |image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below File:Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} }} <syntaxhighlight lang="wikitext"> {{Infobox |name = Infobox/doc |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = |image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below File:Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} </syntaxhighlight> For this example, the {{para|bodystyle}} and {{para|labelstyle}} parameters are used to adjust the infobox width and define a default width for the column of labels: {{Infobox |name = Infobox/doc |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} <syntaxhighlight lang="wikitext"> {{Infobox |name = Infobox/doc |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} </syntaxhighlight> == Embedding == <!--Linked from [[Template:Subinfobox bodystyle/doc]]--> One infobox template can be embedded into another using the {{para|child}} parameter. This feature can be used to create a modular infobox, or to create better-defined logical sections. Long ago, it was necessary to use embedding in order to create infoboxes with more than 99 rows; but nowadays there's no limit to the number of rows that can be defined in a single instance of <code><nowiki>{{infobox}}</nowiki></code>. {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </syntaxhighlight>{{clear}} Note, in the examples above, the child infobox is placed in a <code>data</code> field, not a <code>header</code> field. Notice that the section subheadings are not in bold font if bolding is not explicitly specified. To obtain bold section headings, place the child infobox in a '''header''' field (but not in a '''label''' field because it would not be displayed!), either using {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </syntaxhighlight>{{clear}} or, {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </syntaxhighlight>{{clear}} Note that omitting the {{para|title}} parameter, and not including any text preceding the embedded infobox, may result in spurious blank table rows, creating gaps in the visual presentation. The garbage output can be suppressed using {{para|rowstyleN|display: none}}, replacing N with the data/header number. [[Wikipedia:WikiProject Infoboxes/embed]] includes some links to Wikipedia articles which include infoboxes embedded within other infoboxes. == Subboxes == An alternative method for embedding is to use {{para|subbox|yes}}, which removes the outer border from the infobox, but preserves the interior structure. One feature of this approach is that the parent and child boxes need not have the same structure, and the label and data fields are not aligned between the parent and child boxes because they are not in the same parent table. {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} </syntaxhighlight>{{clear}} Similar embedding techniques may be used within content parameters of some other templates generating tables (such as [[:Template:Sidebar|Sidebar]]) : {{Sidebar | navbar = off | headingstyle = background-color:#eee; | heading1 = Heading 1 | heading2 = Heading 2 | content3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | content4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | heading5 = Heading 5 }} <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Sidebar | navbar = off | headingstyle = background-color:#eee; | heading1 = Heading 1 | heading2 = Heading 2 | content3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | content4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | heading5 = Heading 5 }} </syntaxhighlight>{{clear}} Note that the default padding of the parent data cell containing each subbox is still visible, so the subboxes are slightly narrower than the parent box and there's a higher vertical spacing between standard cells of the parent box than between cells of distinct subboxes. == Controlling line-breaking in embedded bulletless lists == Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists embedded in infoboxes (e.g. cast list in {{tlx|Infobox film}}), to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details. == Full blank syntax == (Note: there is no limit to the number of possible rows; only 20 are given below since infoboxes larger than that will be relatively rare. Just extend the numbering as needed. The microformat "class" parameters are also omitted as they are not commonly used.) <syntaxhighlight lang="wikitext" style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | child = {{{child|}}} | subbox = {{{subbox|}}} | italic title = {{{italic title|no}}} | templatestyles = | child templatestyles = | grandchild templatestyles = | bodystyle = | titlestyle = | abovestyle = | subheaderstyle = | title = | above = | subheader = | imagestyle = | captionstyle = | image = | caption = | image2 = | caption2 = | headerstyle = | labelstyle = | datastyle = | header1 = | label1 = | data1 = | header2 = | label2 = | data2 = | header3 = | label3 = | data3 = | header4 = | label4 = | data4 = | header5 = | label5 = | data5 = | header6 = | label6 = | data6 = | header7 = | label7 = | data7 = | header8 = | label8 = | data8 = | header9 = | label9 = | data9 = | header10 = | label10 = | data10 = | header11 = | label11 = | data11 = | header12 = | label12 = | data12 = | header13 = | label13 = | data13 = | header14 = | label14 = | data14 = | header15 = | label15 = | data15 = | header16 = | label16 = | data16 = | header17 = | label17 = | data17 = | header18 = | label18 = | data18 = | header19 = | label19 = | data19 = | header20 = | label20 = | data20 = | belowstyle = | below = }} </syntaxhighlight>{{clear}} {{Help:Infobox/user style}} == Porting to other MediaWikis == The infobox template requires the [[:mw:Extension:Scribunto|Scribunto]] and [[:mw:Extension:TemplateStyles|TemplateStyles]] extensions. [[Wikipedia:WikiProject Transwiki|WikiProject Transwiki]] has a version of this template that has been modified to work on other MediaWikis. == TemplateData == {{TemplateData header}} <templatedata> { "description": "This template is intended as a meta template, a template used for constructing other templates. In general, it is not meant for use directly in an article but can be used on a one-off basis if required.", "format": "{{_\n| ________________ = _\n}}\n", "params": { "title": { "label": "Title", "description": "Title displayed above the infobox", "type": "string", "suggested": true }, "image": { "label": "Image", "description": "Image illustrating the topic. Use full image syntax.", "type": "content", "suggested": true, "example": "[[File:example.png|200px|alt=Example alt text]]" }, "caption": { "label": "Caption", "description": "caption for the image", "type": "content", "suggested": true } }, "paramOrder": [ "title", "image", "caption" ] } </templatedata> ==Tracking categories== * {{Category link with count|Articles with missing Wikidata information}} * {{Category link with count|Articles using infobox templates with no data rows}} * {{Category link with count|Pages using embedded infobox templates with the title parameter}} ==See also== * [[Module:Infobox]], the [[WP:LUA|Lua]] module on which this template is based * [[Module:Check for unknown parameters]] * {{tl|Infobox3cols}} * {{tl|Navbox}} and {{tl|Sidebar}} * [[Wikipedia:List of infoboxes|List of infoboxes]] * [[:Module:InfoboxImage]] <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Infobox templates| ]] [[Category:Wikipedia metatemplates|Infobox]] [[Category:Templates generating microformats]] [[Category:Templates that add a tracking category]] [[Category:Templates based on the Infobox Lua module]] }}</includeonly> b7ba187ea76ee960bbe295ad01c44c646eaedadb Template:Terminate sentence 10 248 550 2023-09-30T20:50:48Z Führerredux 2 Created page with "{{{1}}}{{#if:{{#invoke:text|sentenceTerminated|{{{1|}}}}}||{{{2|.}}}}}<noinclude>{{documentation}}</noinclude>" wikitext text/x-wiki {{{1}}}{{#if:{{#invoke:text|sentenceTerminated|{{{1|}}}}}||{{{2|.}}}}}<noinclude>{{documentation}}</noinclude> e4142b47b3d7959b82f582bab87ca10768d4d93b Template:Terminate sentence/doc 10 249 551 2023-09-30T20:51:04Z Führerredux 2 Created page with "{{Documentation subpage}} {{Lua|Module:Text}} This template returns its first argument, after adding a full stop (or its second argument) if the sentence was not finished. == Usage == * {{#invoke:DemoTemplate|{{BASEPAGENAME}}|The rain in Spain}} * {{#invoke:DemoTemplate|{{BASEPAGENAME}}|falls mainly on the plain.}} * {{#invoke:DemoTemplate|{{BASEPAGENAME}}|BANG|!}} <includeonly>{{sandbox other|| <!-- Categories below this line --> {{uncat}} }}</includeonly>" wikitext text/x-wiki {{Documentation subpage}} {{Lua|Module:Text}} This template returns its first argument, after adding a full stop (or its second argument) if the sentence was not finished. == Usage == * {{#invoke:DemoTemplate|{{BASEPAGENAME}}|The rain in Spain}} * {{#invoke:DemoTemplate|{{BASEPAGENAME}}|falls mainly on the plain.}} * {{#invoke:DemoTemplate|{{BASEPAGENAME}}|BANG|!}} <includeonly>{{sandbox other|| <!-- Categories below this line --> {{uncat}} }}</includeonly> db9d452de3f1bb665d5a8bcc447b1ab341dc711b Template:Infobox 10 86 552 216 2023-09-30T20:52:30Z Führerredux 2 wikitext text/x-wiki {{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude> {{documentation}} <!-- Categories go in the /doc subpage, and interwikis go in Wikidata. --> </noinclude> 817a9f5b6524eced06a57bd1d5fd7179f9369bf2 Template:Hidden begin 10 250 553 2023-09-30T20:55:41Z Führerredux 2 Created page with "<includeonly><templatestyles src="Template:Hidden begin/styles.css"/><div class="hidden-begin mw-collapsible {{#ifeq:{{{showhide|{{{toggle}}}}}}|left|mw-collapsible-leftside-toggle}} {{#if:{{{expanded|}}}||mw-collapsed}} {{{class|}}}" style="{{#if:{{{width|}}}|width:{{{width}}};}} {{#if:{{{border|}}}|border:{{{border}}};}} {{#if:{{{bgcolor|}}}|background-color:{{{bgcolor}}};}} {{{style|}}}"><!-- --><div class="hidden-title" style="{{#if:{{{ta1|}}}|text-align:{{{ta1}}};}}..." wikitext text/x-wiki <includeonly><templatestyles src="Template:Hidden begin/styles.css"/><div class="hidden-begin mw-collapsible {{#ifeq:{{{showhide|{{{toggle}}}}}}|left|mw-collapsible-leftside-toggle}} {{#if:{{{expanded|}}}||mw-collapsed}} {{{class|}}}" style="{{#if:{{{width|}}}|width:{{{width}}};}} {{#if:{{{border|}}}|border:{{{border}}};}} {{#if:{{{bgcolor|}}}|background-color:{{{bgcolor}}};}} {{{style|}}}"><!-- --><div class="hidden-title" style="{{#if:{{{ta1|}}}|text-align:{{{ta1}}};}} {{#if:{{{titlebgcolor|}}}|background-color:{{{titlebgcolor}}};}} {{{titlestyle|}}}">{{{title|{{{header|}}}}}}</div><!-- --><div class="hidden-content mw-collapsible-content" style="{{#if:{{{ta2|}}}|text-align:{{{ta2}}};}} {{#if:{{{contentbgcolor|}}}|background-color:{{{contentbgcolor}}};}} {{{contentstyle|{{{bodystyle|}}}}}}"><!-- Content added after the template --></includeonly><noinclude> {{Documentation}} </noinclude> be0f4e092203b931810fbff9ed6a1b7af51c025f Template:Hidden begin/doc 10 251 554 2023-09-30T20:56:10Z Führerredux 2 Created page with "{{Documentation subpage}} {{Uses TemplateStyles|Template:Hidden begin/styles.css}} <!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{hatnote|This documentation is shared by {{tl|Hidden begin}} and {{tl|Hidden end}}.}} {{Collapse Templates}} {{High-use}} Do not use this template to hide content in articles. This violates the WP:Manual of Style#Scrolling lists and collapsible content|WP:Manual..." wikitext text/x-wiki {{Documentation subpage}} {{Uses TemplateStyles|Template:Hidden begin/styles.css}} <!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{hatnote|This documentation is shared by {{tl|Hidden begin}} and {{tl|Hidden end}}.}} {{Collapse Templates}} {{High-use}} Do not use this template to hide content in articles. This violates the [[WP:Manual of Style#Scrolling lists and collapsible content|WP:Manual of Style § Scrolling lists and collapsible content]] and [[WP:Accessibility]] guidelines. This template is intended for use in pages in [[Wikipedia:Namespaces|namespaces]] other than the article namespace. '''Note''': This template does not hide anything for mobile users ([[phab:T111565]]). ==Syntax== <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Hidden begin | showhide = <!--"left", otherwise omit--> | expanded = <!--"true", "on", yes", etc, otherwise omit--> | class = | width = | border = | bgcolor = <!--background color for both the title and content--> | style = | ta1 = | titlebgcolor = <!--background color for the title--> | titlestyle = | title = | ta2 = | contentbgcolor = <!--background color for the content--> | contentstyle = }} <!----[content to be hidden placed here]----> {{Hidden end}} </syntaxhighlight> ===Template data=== {{TemplateData header}} <templatedata> { "params": { "showhide": { "aliases": [ "toggle" ], "label": "Show / Hide", "description": "Set to \"left\" (without speechmarks) to switch the [show/hide] link's position from the righthand end of the titlebar (default) to the left.", "type": "string", "suggestedvalues": [ "left" ] }, "expanded": { "label": "Expanded", "description": "Set to any value (\"true\", \"yes\", etc.) to switch the hidden section's initial state from collapsed (hidden) to expanded (visible).", "type": "string", "suggestedvalues": [ "yes", "true" ] }, "class": { "label": "Class", "description": "Add additional class attributes affecting the entire template.", "type": "string" }, "width": { "label": "Width", "description": "Specify a width for the template.", "example": "width=20%", "type": "string", "default": "100%" }, "border": { "label": "Border", "description": "Add a border to the template", "example": "1px solid black", "type": "string" }, "bgcolor": { "label": "Background color", "description": "Specify the background color for the template.", "example": "#CCF", "type": "string" }, "style": { "label": "Style", "description": "Add additional style attributes affecting the entire template.", "example": "font-size:110%;", "type": "string" }, "ta1": { "label": "Title text align", "description": "Specify the text-align property for the title.", "example": "center", "type": "string", "suggestedvalues": [ "center", "right", "left" ], "default": "left" }, "titlebgcolor": { "label": "Title background color", "description": "Specify the background color for the title.", "example": "#CCF", "type": "string" }, "titlestyle": { "label": "Title style", "description": "Add additional style attributes affecting the title.", "example": "font-size:110%;", "type": "string" }, "title": { "aliases": [ "header" ], "label": "Title", "description": "Text shown in titlebar.", "type": "string" }, "ta2": { "label": "Content text align", "description": "Specify the text-align property for the content.", "example": "center", "type": "string", "suggestedvalues": [ "center", "right", "left" ], "default": "left" }, "contentbgcolor": { "label": "Content background color", "description": "Specify the background color for the content .", "example": "#CCF", "type": "string" }, "contentstyle": { "aliases": [ "bodystyle" ], "label": "Content style", "description": "Add additional style attributes affecting the content.", "example": "font-size:110%;", "type": "string" } }, "description": "This template creates a dynamic navigation box which is initially collapsed by default.", "format": "inline" } </templatedata> ==Examples== The following are examples with commonly used parameters ===Example 1=== <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Hidden begin|title=Example title}} * Example text 1 * Example text 2 {{Hidden end}} </syntaxhighlight> {{Hidden begin|title=Example title}} * Example text 1 * Example text 2 {{Hidden end}} ===Example 2=== <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Hidden begin|title=Example title|width=50%|border=1px solid black}} * Example text 1 * Example text 2 {{Hidden end}} </syntaxhighlight> {{Hidden begin|title=Example title|width=50%|border=1px solid black}} * Example text 1 * Example text 2 {{Hidden end}} ===Example 3=== <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Hidden begin|title=Example title|bgcolor=pink|titlebgcolor=#CCF|contentbgcolor=skyblue}} * Example text 1 * Example text 2 {{Hidden end}} </syntaxhighlight> {{Hidden begin|title=Example title|bgcolor=pink|titlebgcolor=#CCF|contentbgcolor=skyblue}} * Example text 1 * Example text 2 {{Hidden end}} ===Example 4=== <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Hidden begin|title=Example title|titlebgcolor=pink|ta1=center|ta2=right}} * Example text 1 * Example text 2 {{Hidden end}} </syntaxhighlight> {{Hidden begin|title=Example title|titlebgcolor=pink|ta1=center|ta2=right}} * Example text 1 * Example text 2 {{Hidden end}} ===Example 5=== <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Hidden begin|title=Example title|titlebgcolor=#98FB98|showhide=left}} * Example text 1 * Example text 2 {{Hidden end}} </syntaxhighlight> {{Hidden begin|title=Example title|titlebgcolor=#98FB98|showhide=left}} * Example text 1 * Example text 2 {{Hidden end}} ===Example 6=== <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Hidden begin|title=Example title|titlebgcolor=#FFEBCD|expanded=yes}} * Example text 1 * Example text 2 {{Hidden end}} </syntaxhighlight> {{Hidden begin|title=Example title|titlebgcolor=#FFEBCD|expanded=yes}} * Example text 1 * Example text 2 {{Hidden end}} ==See also== * {{tl|Hidden}} <includeonly>{{basepage subpage | <!-- ADD CATEGORIES BELOW THIS LINE --> [[Category:Collapse templates]] }}</includeonly> 14b2eb2c9e24c4cbb04065cdcd586b5481831469 Template:Collapse Templates 10 252 555 2023-09-30T20:56:41Z Führerredux 2 Created page with "{{Helpbox |templatename = Collapsible templates |name = Collapsible templates |bodyclass = vcard |list1 = {{aligned table|fullwidth=y|rightleft=y|col1style=font-weight:bold; |Help: |[[Help:Collapsing|Collapsing]] |Guideline:|[[MOS:COLLAPSE|Hidden content]] }} |group2 = [[WP:Mainspace|Article namespace]] |list2 = {{plainlist|1= * {{tl|collapse}} * {{tl|collapsible list}} * {{hlist|{{tl|collapse top}}|{{tl|collapse bottom}}}} * {{tl|hidden}} * {{hlist|{..." wikitext text/x-wiki {{Helpbox |templatename = Collapsible templates |name = Collapsible templates |bodyclass = vcard |list1 = {{aligned table|fullwidth=y|rightleft=y|col1style=font-weight:bold; |Help: |[[Help:Collapsing|Collapsing]] |Guideline:|[[MOS:COLLAPSE|Hidden content]] }} |group2 = [[WP:Mainspace|Article namespace]] |list2 = {{plainlist|1= * {{tl|collapse}} * {{tl|collapsible list}} * {{hlist|{{tl|collapse top}}|{{tl|collapse bottom}}}} * {{tl|hidden}} * {{hlist|{{tl|hidden begin}}|{{tl|hidden end}}}} }} |group3 = [[Wikipedia:Infobox|Infoboxes]] |list3 = {{plainlist|1= * {{tl|collapsed infobox section begin}} * {{tl|collapsed infobox section end}} }} |group4 = [[Wikipedia:Navigation template|Navigation templates]] |list4 = {{plainlist|1= * {{tl|sidebar with collapsible lists}} * {{tl|navbox with collapsible groups}} }} |group5 = [[Help:Talk pages|Talk namespace]] |list5 = {{plainlist|1= * {{tl|hidden archive top}} * {{tl|hidden archive bottom}} }} }}<noinclude> [[Category:Collapse templates]] </noinclude> 4b5763564eca710f1e59e1455fc4c236793d1808 Template:Hidden begin/styles.css 10 253 556 2023-09-30T20:57:44Z Führerredux 2 Created page with "/* {{pp-template}} */ .hidden-begin { box-sizing: border-box; width: 100%; padding: 5px; border: none; font-size: 95%; } .hidden-title { font-weight: bold; line-height: 1.6; text-align: left; } .hidden-content { text-align: left; }" sanitized-css text/css /* {{pp-template}} */ .hidden-begin { box-sizing: border-box; width: 100%; padding: 5px; border: none; font-size: 95%; } .hidden-title { font-weight: bold; line-height: 1.6; text-align: left; } .hidden-content { text-align: left; } d4ab5680ca52bee10cfd2992f2adc45452c5ab37 Template:Lua/doc 10 254 557 2023-09-30T21:00:52Z Führerredux 2 Created page with "{{Documentation subpage}} {{Template shortcut|Lua talk}} {{Lua|Module:Lua banner}} <!-- Categories go at the bottom of this page, and interwikis go on Wikidata. --> {{for|template to indicate [[Luba-Kasai language]] words|Template:Lang-lua}} This template is used to indicate that a template uses one or more [[Lua (programming language)|Lua]] modules (pages in the <code>Module:</code> namespace). It is placed at the top of the template's /doc page. It automatically adds a..." wikitext text/x-wiki {{Documentation subpage}} {{Template shortcut|Lua talk}} {{Lua|Module:Lua banner}} <!-- Categories go at the bottom of this page, and interwikis go on Wikidata. --> {{for|template to indicate [[Luba-Kasai language]] words|Template:Lang-lua}} This template is used to indicate that a template uses one or more [[Lua (programming language)|Lua]] modules (pages in the <code>Module:</code> namespace). It is placed at the top of the template's /doc page. It automatically adds a floating right notification box, and it adds the template to [[:Category:Lua-based templates]] or to one of its subcategories. == Usage == ; Basic : {{tlx|Lua|''module name''}} ; All parameters : {{tlx|Lua|''module 1''|''module 2''|''module 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}} The first module name is required. == Examples == * {{tlx|Lua|Module:Example}} {{Lua|Module:Example|nocat=true}} {{clear}} * {{tlx|Lua|Module:Example|Module:Example}} {{Lua|Module:Example|Module:Example|nocat=true}} {{clear}} * {{tlx|Lua}} {{Lua|nocat=true}} {{clear}} == Categorisation == ===Template category=== This template adds pages to [[:Category:Lua-based templates]] if the page is in the template namespace, and it is not on any of the subpages /doc, /sandbox, /sandbox2 or /testcases. You can specify a different category with the {{para|category}} parameter, e.g. {{para|category|Lua String-based templates}}. Some modules have a default category other than [[:Category:Lua-based templates]]: * [[Module:String]] has the default category [[:Category:Templates based on the String Lua module]]. * [[Module:Math]] has the default category [[:Category:Templates based on the Math Lua module]]. * [[Module:BaseConvert]] has the default category [[:Category:Templates based on the BaseConvert Lua module]]. * [[Module:Citation/CS1]] has the default category [[:Category:Templates based on the Citation/CS1 Lua module]]. ===Error category=== If no modules are specified, the transcluded page will be added to [[:Category:Lua templates with errors]]. ===Category suppression=== To suppress all categorisation, use {{para|nocat|true}}. (As well as "true", the values "yes", "y", and "1" will also work.) == TemplateData == {{Format TemplateData|TNT=Lua banner}} == See also == * [[Wikipedia:Lua]] * {{tl|module rating}} * {{tl|Uses TemplateStyles}} <includeonly>{{Sandbox other| | <!-- Categories go here, and interwikis go on Wikidata. --> [[Category:Lua-based templates| ]] [[Category:Template namespace templates]] }}</includeonly> a0a237a34ba98213650e4c11064bd4c8f944fcc6 564 557 2023-09-30T21:14:08Z Führerredux 2 1 revision imported from [[:meta:Template:Lua/doc]] wikitext text/x-wiki {{Documentation subpage}} {{Template shortcut|Lua talk}} {{Lua|Module:Lua banner}} <!-- Categories go at the bottom of this page, and interwikis go on Wikidata. --> {{for|template to indicate [[Luba-Kasai language]] words|Template:Lang-lua}} This template is used to indicate that a template uses one or more [[Lua (programming language)|Lua]] modules (pages in the <code>Module:</code> namespace). It is placed at the top of the template's /doc page. It automatically adds a floating right notification box, and it adds the template to [[:Category:Lua-based templates]] or to one of its subcategories. == Usage == ; Basic : {{tlx|Lua|''module name''}} ; All parameters : {{tlx|Lua|''module 1''|''module 2''|''module 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}} The first module name is required. == Examples == * {{tlx|Lua|Module:Example}} {{Lua|Module:Example|nocat=true}} {{clear}} * {{tlx|Lua|Module:Example|Module:Example}} {{Lua|Module:Example|Module:Example|nocat=true}} {{clear}} * {{tlx|Lua}} {{Lua|nocat=true}} {{clear}} == Categorisation == ===Template category=== This template adds pages to [[:Category:Lua-based templates]] if the page is in the template namespace, and it is not on any of the subpages /doc, /sandbox, /sandbox2 or /testcases. You can specify a different category with the {{para|category}} parameter, e.g. {{para|category|Lua String-based templates}}. Some modules have a default category other than [[:Category:Lua-based templates]]: * [[Module:String]] has the default category [[:Category:Templates based on the String Lua module]]. * [[Module:Math]] has the default category [[:Category:Templates based on the Math Lua module]]. * [[Module:BaseConvert]] has the default category [[:Category:Templates based on the BaseConvert Lua module]]. * [[Module:Citation/CS1]] has the default category [[:Category:Templates based on the Citation/CS1 Lua module]]. ===Error category=== If no modules are specified, the transcluded page will be added to [[:Category:Lua templates with errors]]. ===Category suppression=== To suppress all categorisation, use {{para|nocat|true}}. (As well as "true", the values "yes", "y", and "1" will also work.) == TemplateData == {{Format TemplateData|TNT=Lua banner}} == See also == * [[Wikipedia:Lua]] * {{tl|module rating}} * {{tl|Uses TemplateStyles}} <includeonly>{{Sandbox other| | <!-- Categories go here, and interwikis go on Wikidata. --> [[Category:Lua-based templates| ]] [[Category:Template namespace templates]] }}</includeonly> a0a237a34ba98213650e4c11064bd4c8f944fcc6 Template:Template shortcut 10 255 558 2023-09-30T21:01:31Z Führerredux 2 Created page with "<includeonly>{{#invoke:Shortcut|main|template=yes}}</includeonly><noinclude>{{Documentation}}</noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:Shortcut|main|template=yes}}</includeonly><noinclude>{{Documentation}}</noinclude> bfb2889c4c0ec36294b7b667f5e03350d2df680e Template:Template shortcut/doc 10 256 559 2023-09-30T21:01:47Z Führerredux 2 Created page with "{{Documentation subpage}} {{tlr|clear=right|Template shortcuts|Templateshortcut}}{{tsh|tsh}} {{High-use}} {{lua|Module:Shortcut}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> This template displays one or more of a template's shortcuts (that is, redirects, also known as aliases, as in the box appearing at the right. {{tl|Tsh}} is a shortcut to this template, {{tlf|template shortcut}}, and can be used in its place, as it is in this documentatio..." wikitext text/x-wiki {{Documentation subpage}} {{tlr|clear=right|Template shortcuts|Templateshortcut}}{{tsh|tsh}} {{High-use}} {{lua|Module:Shortcut}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> This template displays one or more of a template's shortcuts (that is, redirects, also known as aliases, as in the box appearing at the right. {{tl|Tsh}} is a shortcut to this template, {{tlf|template shortcut}}, and can be used in its place, as it is in this documentation's [[Wikipedia:View source|source]] [[wikitext]]. == Usage == Place this template and its list of few to one, carefully selected shortcut(s) at the top of the template documentation page's [[Wikipedia:Wikitext|wikitext]], right underneath {{tl|Documentation subpage}}. In the saved, rendered text, those shortcuts will appear in this template's Shortcut(s) box, whose title will reflect the number of list items by automatically being singular or plural in form. === Which ones to display here === Although the template can show up to ten shortcuts, you are ''encouraged to choose well'' which ones to display in this template's box. Even if many redirects exist, ''two or three at the most'' is almost always enough. By keeping the number of redirects presented in the Shortcut box small, it makes it easier to remember them, and the documentation is kept well organized. === Where to list any others === List others in the Redirects section of the [[Wikipedia:Template documentation|template documentation]]. Again, not all of them need to be listed; some shortcuts are there just for historical reasons, and others differ only in minor points such as white spaces or capitalization. Such shortcut-name variations are unnecessary to list at all—just list the standard, most common version of such a variation. === Optional parameters === This template has several optional parameters: * '''float''' – if set to "left", then the box will float to the left of the page, instead of the default float "right". * '''clear''' – if set to "right" (when float also is set to "right"), the box will be pushed to the right margin of the page, and {{clarify|text=prevent it from nest to the left of other right-floating elements.}} Similarly, if set to "left" (when float also is set to "left"), the box will be pushed to the left margin of the page. * '''pre''' – can be used to show some text before the shortcut links, but within the braces. This is mostly used to add the text "subst:". This shows the proper syntax for using the template with [[Wikipedia:Substitution|substitution]]. * '''pre1, pre2 ...''' – like above, but adds the prefix only to the nth shortcut. == Examples of basic code == To display one template shortcut named {{tl|uw-v1}}: {{tlc|template shortcut|uw-v1}} {{template shortcut|uw-v1}} {{clear}} To display three template shortcuts for {{tl|uw-vandalism1}} named {{tl|uw-v1}}, {{tl|uw-vand1}}, and {{tl|uw-vandal1}}: {{tlc|template shortcut|uw-v1|uw-vand1|uw-vandal1}} {{template shortcut|uw-v1|uw-vand1|uw-vandal1}} {{clear}} == Example with the float parameter == Using {{para|float|<var>left</var>}} makes this template flow to the left of the page: <code><nowiki>{{template shortcut|float=left|uw-v1}}</nowiki></code> {{template shortcut|float=left|uw-v1}} {{clear}} == Example with text ("subst:") within the braces == This is mostly used to add text to show how the template could be used with [[Wikipedia:Substitution|substitution]]. Use {{para|pre2|<var>subst:</var>}} and {{para|pre3|<var>subst:</var>}} to show "subst:" before the shortcut links, but within the braces: <code><nowiki>{{template shortcut|uw-v1|pre2=subst:|uw-vand1|pre3=subst:|uw-vandal1}}</nowiki></code> {{template shortcut|uw-v1|pre2=subst:|uw-vand1|pre3=subst:|uw-vandal1}} {{clear}} If you use {{para|pre|<var>subst:</var>}}, it applies to all of the shortcuts: <code><nowiki>{{template shortcut|pre=subst:|uw-v1|uw-vand1|uw-vandal1}}</nowiki></code> {{template shortcut|pre=subst:|uw-v1|uw-vand1|uw-vandal1}} {{clear}} == TemplateData == {{Format TemplateData|<templatedata> { "description": "This template displays one or more of a template's shortcuts.", "format": "inline", "params": { "redirect": { "label": "Redirect?", "description": "Whether to refer to the \"shortcut/s\" as \"redirect/s\" instead.", "default": "0", "type": "boolean" }, "target": { "label": "Target?", "description": "Whether to not add the <code>redirect=no</code> URL parameter.", "default": "0", "type": "boolean" }, "float": { "label": "Float", "description": "The CSS <code>float</code> property value.", "default": "right", "suggestedvalues": [ "left", "right" ], "type": "string" }, "clear": { "label": "Clear", "description": "The CSS <code>clear</code> property value.", "suggestedvalues": [ "left", "right", "both" ], "type": "string" }, "category": { "label": "Categorize", "description": "Whether to add pages to the error category if no alias or <code>msg</code> is specified.", "default": "1", "type": "boolean" }, "msg": { "label": "Message", "description": "An unlinked message that goes after the shortcut links.", "type": "content" }, "pre": { "label": "Default prefix", "description": "The default prefix", "example": "subst:", "type": "string" }, "pre1": { "label": "Prefix 1", "description": "Prefix for template shortcut 1", "example": "subst:", "type": "string" }, "1": { "label": "Shortcut 1", "description": "Template shortcut 1", "required": true, "type": "wiki-template-name" }, "pre2": { "label": "Prefix 2", "description": "Prefix for template shortcut 2", "example": "subst:", "type": "string" }, "2": { "label": "Shortcut 2", "description": "Template shortcut 2", "type": "wiki-template-name" }, "pre3": { "label": "Prefix 3", "description": "Prefix for template shortcut 3", "example": "subst:", "type": "string" }, "3": { "label": "Shortcut 3", "description": "Template shortcut 3", "type": "wiki-template-name" }, "pre4": { "label": "Prefix 4", "description": "Prefix for template shortcut 4", "example": "subst:", "type": "string" }, "4": { "label": "Shortcut 4", "description": "Template shortcut 4", "type": "wiki-template-name" }, "pre5": { "label": "Prefix 5", "description": "Prefix for template shortcut 5", "example": "subst:", "type": "string" }, "5": { "label": "Shortcut 5", "description": "Template shortcut 5", "type": "wiki-template-name" }, "pre6": { "label": "Prefix 6", "description": "Prefix for template shortcut 6", "example": "subst:", "type": "string" }, "6": { "label": "Shortcut 6", "description": "Template shortcut 6", "type": "wiki-template-name" }, "pre7": { "label": "Prefix 7", "description": "Prefix for template shortcut 7", "example": "subst:", "type": "string" }, "7": { "label": "Shortcut 7", "description": "Template shortcut 7", "type": "wiki-template-name" }, "pre8": { "label": "Prefix 8", "description": "Prefix for template shortcut 8", "example": "subst:", "type": "string" }, "8": { "label": "Shortcut 8", "description": "Template shortcut 8", "type": "wiki-template-name" }, "pre9": { "label": "Prefix 9", "description": "Prefix for template shortcut 9", "example": "subst:", "type": "string" }, "9": { "label": "Shortcut 9", "description": "Template shortcut 9", "type": "wiki-template-name" } } } </templatedata>}} == See also == * {{tl|shortcut}}, the standard shortcut notice. * {{tl|policy shortcut}}, for shortcuts to sections of policy pages. * {{tl|R to redirect template}}, the [[WP:RCAT|rcat]] template for redirects to rcat templates * {{tl|template redirect}}, automatically sets <code>redirect=yes</code> <includeonly>{{Sandbox other|| <!----CATEGORIES BELOW THIS LINE, PLEASE:----> [[Category:Shortcut templates]] [[Category:Template documentation]]<!--Yes, this is intended for the template page – this template is used IN template docs.--> }}</includeonly> 938a31a476c2941ffc6d6bc17533443d6d14c7a1 Module:Example 828 257 560 2023-09-30T21:02:53Z Führerredux 2 Created page with "local p = {}; --All Lua modules on Wikipedia must begin by defining a variable --that will hold their externally accessible functions. --Such variables can have whatever name you want and may --also contain various data as well as functions. p.hello = function( frame ) --Add a function to "p". --Such functions are callable in Wikipedia..." Scribunto text/plain local p = {}; --All Lua modules on Wikipedia must begin by defining a variable --that will hold their externally accessible functions. --Such variables can have whatever name you want and may --also contain various data as well as functions. p.hello = function( frame ) --Add a function to "p". --Such functions are callable in Wikipedia --via the #invoke command. --"frame" will contain the data that Wikipedia --sends this function when it runs. -- 'Hello' is a name of your choice. The same name needs to be referred to when the module is used. local str = "Hello World!" --Declare a local variable and set it equal to --"Hello World!". return str --This tells us to quit this function and send the information in --"str" back to Wikipedia. end -- end of the function "hello" function p.hello_to(frame) -- Add another function local name = frame.args[1] -- To access arguments passed to a module, use `frame.args` -- `frame.args[1]` refers to the first unnamed parameter -- given to the module return "Hello, " .. name .. "!" -- `..` concatenates strings. This will return a customized -- greeting depending on the name given, such as "Hello, Fred!" end function p.count_fruit(frame) local num_bananas = tonumber(frame.args.bananas) or 0 -- Named arguments ({{#invoke:Example|count_fruit|foo=bar}}) local num_apples = tonumber(frame.args.apples) or 0 -- are likewise accessed by indexing `frame.args` by name (`frame.args["bananas"]`, -- or equivalently `frame.args.bananas`. local conj_bananas = num_bananas == 1 and 'banana' or 'bananas' local conj_apples = num_apples == 1 and 'apple' or 'apples' -- Ternary operators assign values based on a condition in a compact way. -- Here, `conj_bananas` gets `'banana'` if `num_bananas` is 1, else `'bananas'`. -- Similarly, `conj_apples` gets `'apple'` if `num_apples` is 1, else `'apples'`. return 'I have ' .. num_bananas .. ' ' .. conj_bananas .. ' and ' .. num_apples .. ' ' .. conj_apples -- Like above, concatenate a bunch of strings together to produce -- a sentence based on the arguments given. end local function lucky(a, b) -- One can define custom functions for use. Here we define a function 'lucky' that has two inputs a and b. The names are of your choice. if b == 'yeah' then -- Condition: if b is the string 'yeah'. Strings require quotes. Remember to include 'then'. return a .. ' is my lucky number.' -- Outputs 'a is my lucky number.' if the above condition is met. The string concatenation operator is denoted by 2 dots. else -- If no conditions are met, i.e. if b is anything else, output specified on the next line. 'else' should not have 'then'. return a -- Simply output a. end -- The 'if' section should end with 'end'. end -- As should 'function'. function p.Name2(frame) -- The next five lines are mostly for convenience only and can be used as is for your module. The output conditions start on line 50. local pf = frame:getParent().args -- This line allows template parameters to be used in this code easily. The equal sign is used to define variables. 'pf' can be replaced with a word of your choice. local f = frame.args -- This line allows parameters from {{#invoke:}} to be used easily. 'f' can be replaced with a word of your choice. local M = f[1] or pf[1] -- f[1] and pf[1], which we just defined, refer to the first parameter. This line shortens them as 'M' for convenience. You could use the original variable names. local m = f[2] or pf[2] -- Second shortened as 'm'. local l = f.lucky or pf.lucky -- A named parameter 'lucky' is shortend as l. Note that the syntax is different from unnamed parameters. if m == nil then -- If the second parameter is not used. return 'Lonely' -- Outputs the string 'Lonely' if the first condition is met. elseif M > m then -- If the first condition is not met, this line tests a second condition: if M is greater than m. return lucky(M - m, l) -- If the condition is met, the difference is calculated and passed to the self defined function along with l. The output depends on whether l is set to 'yeah'. else return 'Be positive!' end end return p --All modules end by returning the variable containing their functions to Wikipedia. -- Now we can use this module by calling {{#invoke: Example | hello }}, -- {{#invoke: Example | hello_to | foo }}, or {{#invoke:Example|count_fruit|bananas=5|apples=6}} -- Note that the first part of the invoke is the name of the Module's wikipage, -- and the second part is the name of one of the functions attached to the -- variable that you returned. -- The "print" function is not allowed in Wikipedia. All output is accomplished -- via strings "returned" to Wikipedia. a2009327c9930f7f552da030a5a56abe89631308 Module:Lua banner 828 63 561 190 2023-09-30T21:07:19Z Führerredux 2 Scribunto text/plain -- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) local titleObj = mw.title.getCurrentTitle() local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = '<strong class="error">Error: no modules specified</strong>' else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) local maybeSandbox = mw.title.new(module .. '/sandbox') if maybeSandbox.exists then moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText) end end local moduleList = mList.makeList('bulleted', moduleLinks) local title = mw.title.getCurrentTitle() if title.subpageText == "doc" then title = title.basePageTitle end if title.contentModel == "Scribunto" then boxArgs.text = 'This module depends on the following other modules:' .. moduleList else boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList end end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]' return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end local cats = {} -- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end -- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle() local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true } if not subpageBlacklist[titleObj.subpageText] then local protCatName if titleObj.namespace == 10 then local category = args.category if not category then local categories = { ['Module:String'] = 'Templates based on the String Lua module', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module' } category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category protCatName = "Templates using under-protected Lua modules" elseif titleObj.namespace == 828 then protCatName = "Modules depending on under-protected modules" end if not args.noprotcat and protCatName then local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } local currentProt if titleObj.id ~= 0 then -- id is 0 (page does not exist) if am previewing before creating a template. currentProt = titleObj.protectionLevels["edit"][1] end if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do if module ~= "WP:libraryUtil" then local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = protCatName break end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p e3c39e2809f7555a22433e225094746a93924946 562 561 2023-09-30T21:08:06Z Führerredux 2 Scribunto text/plain -- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = '<strong class="error">Error: no modules specified</strong>' else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) local maybeSandbox = mw.title.new(module .. '/sandbox') if maybeSandbox.exists then moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText) end end local moduleList = mList.makeList('bulleted', moduleLinks) local title = mw.title.getCurrentTitle() if title.subpageText == "doc" then title = title.basePageTitle end if title.contentModel == "Scribunto" then boxArgs.text = 'This module depends on the following other modules:' .. moduleList else boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList end end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]' return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end local cats = {} -- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end -- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle() local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true } if not subpageBlacklist[titleObj.subpageText] then local protCatName if titleObj.namespace == 10 then local category = args.category if not category then local categories = { ['Module:String'] = 'Templates based on the String Lua module', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module' } category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category protCatName = "Templates using under-protected Lua modules" elseif titleObj.namespace == 828 then protCatName = "Modules depending on under-protected modules" end if not args.noprotcat and protCatName then local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } local currentProt if titleObj.id ~= 0 then -- id is 0 (page does not exist) if am previewing before creating a template. currentProt = titleObj.protectionLevels["edit"][1] end if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do if module ~= "WP:libraryUtil" then local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = protCatName break end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p 03ec1b34a40121efc562c0c64a67ebbf57d56dff Greece 0 243 923 542 2023-09-30T21:31:12Z Führerredux 2 wikitext text/x-wiki {{Infobox country | image_flag = File:Flag_of_Greece_(1822-1978).svg | image_coat = Coat of arms of Greece (1924–1935).svg | national_motto = Ἐλευθερία ἢ Θάνατος | motto = | ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }} | demonym = Hellenes | government_type = [[Presidential Republic]] | currency = Drachmae }} 30d6d6dd0d267dd01f45abd470c5ac2d0ce8c89e 931 923 2023-09-30T21:40:34Z Führerredux 2 wikitext text/x-wiki {{Infobox country | coordinates = {{Coord|37|58|N|23|43|E|type:city}} | languages_type = Official language<br />{{nobold|and national language}} | leader_name2 = [[Elefthérios Kyriákou Venizélos]] | leader_name3 = [[Aléxandros Zaímis]] | image_flag = File:Flag_of_Greece_(1822-1978).svg | image_coat = Coat of arms of Greece (1924–1935).svg | national_motto = Ἐλευθερία ἢ Θάνατος | ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }} | demonym = {{hlist|[[Greeks|Greek]]|Hellene}} | government_type = [[Presidential Republic]] | leader_title1 = [[President of Greece|President]] | leader_name1 = <span style=white-space:nowrap;>[[Katerina Sakellaropoulou]]</span> | leader_title2 = [[Prime Minister of Greece|Prime Minister]] | leader_title3 = [[Speaker of the Hellenic Parliament|Parliament Speaker]] | legislature = [[Hellenic Parliament]] | sovereignty_type = [[History of Greece|Establishment history]] | established_event1 = [[Greek War of Independence|Independence declared]] {{nobold|from the [[Ottoman Empire]]}} <!-- PLEASE DO NOT AMEND THE ESTABLISHED EVENTS SECTION WITHOUT OPENING A DISCUSSION ON THE TALK PAGE FIRST --> | established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the [[Greek War of Independence]]), {{nowrap|15 January 1822}} ([[First National Assembly at Epidaurus|official declaration]]) | established_event2 = [[London Protocol (1830)|Recognised]] | established_date2 = {{nowrap|3 February 1830}} | established_event3 = [[Third Hellenic Republic]] | established_date3 = 24 July 1974 | established_event4 = {{nowrap|[[Constitution of Greece|Current constitution]]}} | established_date4 = 11 June 1975 | currency = Drachmae }} fa808759142abea259bc0322b72dcac8d2158f6c 941 931 2023-09-30T21:59:59Z Führerredux 2 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br />{{nobold|and national language}} | leader_name2 = [[Elefthérios Kyriákou Venizélos]] | image_flag = File:Flag_of_Greece_(1822-1978).svg | image_coat = Coat of arms of Greece (1924–1935).svg | coa_size = 90 | common_name = Greece | national_motto = {{lang|el|Ελευθερία ή Θάνατος}}<br />{{transliteration|el|Elefthería í Thánatos}}<br />(English: "[[Eleftheria i thanatos|Freedom or Death]]") | national_anthem = {{lang|el|Ύμνος εις την Ελευθερίαν}}<br />{{transliteration|el|Ímnos is tin Eleftherían}}<br />(English: "[[Hymn to Liberty]]")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:Greece national anthem.ogg]]}}</div> | ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }} | capital = [[Athens]] | largest_city = capital | languages = [[Greek language|Greek]] | demonym = {{hlist|[[Greeks|Greek]]|Hellene}} | government_type = [[Presidential Republic]] | leader_title1 = [[President of Greece|President]] | leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span> | leader_title2 = [[Prime Minister of Greece|Prime Minister]] | legislature = [[Hellenic Parliament]] | currency = Drachmae | sovereignty_type = [[History of Greece|Establishment history]] | established_event1 = [[Greek War of Independence|Independence declared]] {{nobold|from the [[Ottoman Empire]]}} <!-- PLEASE DO NOT AMEND THE ESTABLISHED EVENTS SECTION WITHOUT OPENING A DISCUSSION ON THE TALK PAGE FIRST --> | established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the [[Greek War of Independence]]), {{nowrap|15 January 1822}} ([[First National Assembly at Epidaurus|official declaration]]) | established_event2 = [[London Protocol (1830)|Recognised]] | established_date2 = {{nowrap|3 February 1830}} | established_event3 = Second Hellenic Republic | established_date3 = 25 March 1924 | established_event4 = {{nowrap|[[Constitution of Greece|Current constitution]]}} | established_date4 = 3 June 1927 }} 553feb8e4399e1068fda29e3ae974fc6db832789 944 941 2023-09-30T22:15:45Z Führerredux 2 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br />{{nobold|and national language}} | leader_name2 = [[Elefthérios Kyriákou Venizélos]] | native_name = Η Ελληνική Δημοκρατία | image_flag = File:Flag_of_Greece_(1822-1978).svg | image_coat = Coat of arms of Greece (1924–1935).svg | coa_size = 90 | englishmotto = Freedom or Death | title_leader = President of the Hellenic Republic | conventional_long_name = The Hellenic Republic | common_name = Greece | national_motto = Ελευθερία ή Θάνατος | national_anthem = Ύμνος εις την Ελευθερίαν<br/><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:Greece national anthem.ogg]]}}</div> | ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }} | capital = [[Athens]] | largest_city = capital | languages = [[Greek language|Greek]] | religion = Eastern Orthodox | demonym = {{hlist|[[Greeks|Greek]]|Hellene}} | government_type = [[Presidential Republic]] | leader_title1 = [[President of Greece|President]] | leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span> | leader_title2 = [[Prime Minister of Greece|Prime Minister]] | legislature = [[Hellenic Parliament]] | currency = Drachmae | date_format = DD/MM/YYYY | drives_on = left | calling_code = +30 | iso3166code = GR | sovereignty_type = [[History of Greece|Establishment history]] | established_event1 = [[Greek War of Independence|Independence declared]] {{nobold|from the [[Ottoman Empire]]}} <!-- PLEASE DO NOT AMEND THE ESTABLISHED EVENTS SECTION WITHOUT OPENING A DISCUSSION ON THE TALK PAGE FIRST --> | established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the [[Greek War of Independence]]), {{nowrap|15 January 1822}} ([[First National Assembly at Epidaurus|official declaration]]) | established_event2 = [[London Protocol (1830)|Recognised]] | established_date2 = {{nowrap|3 February 1830}} | established_event3 = Second Hellenic Republic | established_date3 = 25 March 1924 | established_event4 = {{nowrap|[[Constitution of Greece|Current constitution]]}} | established_date4 = 3 June 1927 | population_estimate = 13,000,000 }} 871800b576b77c50fcf7084bafa7690a12d3b7f9 Template:If empty 10 425 925 924 2023-09-30T21:31:58Z Führerredux 2 1 revision imported from [[:meta:Template:If_empty]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:If empty|main}} 0882eceea8d0ea6f2b8509518c8f1dd1779a1bb8 Module:If empty 828 426 927 926 2023-09-30T21:31:59Z Führerredux 2 1 revision imported from [[:meta:Module:If_empty]] Scribunto text/plain local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = '' lowestNil = i end end for k,v in ipairs(args) do if v ~= '' then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', '[[Category:Instances of Template:If_empty missing arguments]]', {group = 'TrackingCategory'}) frame:extensionTag('references', '', {group = 'TrackingCategory'}) end return v end end end return p 39b83f8d043283ec767774d927e2f6f3fb3078b4 Template:Infobox country/imagetable 10 427 928 2023-09-30T21:33:22Z Führerredux 2 Redirected page to [[Template:Infobox country]] wikitext text/x-wiki #REDIRECT [[Template:Infobox_country]] 2cfc6112b68bfa9551e4bc68ea1f415e86c28e96 929 928 2023-09-30T21:34:03Z Führerredux 2 Blanked the page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 930 929 2023-09-30T21:35:31Z Führerredux 2 wikitext text/x-wiki {{#if:{{both|{{{image1a|}}}{{{image1b|}}}|{{{image2|}}}}}| <div class="noresize" style="display:table; width:100%;"> <div style="display:table-cell; vertical-align:middle; padding-left:5px;"> {{#if:{{{image1a|}}}|<div style="padding-bottom:3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="padding: 2px 0px 3px;">{{{image1b|}}}</div>}} <div>{{{caption1|}}}</div> </div> <div style="display:table-cell; vertical-align:middle; padding: 0px 5px;"> <div style="padding-bottom:3px;">{{{image2|}}}</div> <div>{{{caption2|}}}</div> </div> </div> <!--else:-->| {{#if:{{{image1a|}}}{{{image1b|}}}| <div class="noresize" style="display:table; width:100%;"> {{#if:{{{image1a|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px 0px;">{{{image1b|}}}</div>}} </div> <div>{{{caption1}}}</div> }} {{#if:{{{image2|}}}| <div style="padding: 0px 5px;"> <div style="padding-bottom:3px;">{{{image2|}}}</div> <div>{{{caption2}}}</div> </div> }} }}<noinclude> {{documentation|content= This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. }}</noinclude> 4094e7b538bb7456c09fbbfcdf9cf4e30e1b6b5b Template:Infobox country/multirow 10 428 932 2023-09-30T21:40:56Z Führerredux 2 Created page with "{{infobox | child = yes | decat=yes | rowclass25 = mergedrow | label25 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{1|}}}</div> | data25 = {{{2|}}} | rowclass26 = mergedrow | label26 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{3|}}}</div> | data26 = {{{4|}}} | rowclass27 = mergedrow | label27 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{5|}}}</div> | data..." wikitext text/x-wiki {{infobox | child = yes | decat=yes | rowclass25 = mergedrow | label25 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{1|}}}</div> | data25 = {{{2|}}} | rowclass26 = mergedrow | label26 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{3|}}}</div> | data26 = {{{4|}}} | rowclass27 = mergedrow | label27 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{5|}}}</div> | data27 = {{{6|}}} | rowclass28 = mergedrow | label28 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{7|}}}</div> | data28 = {{{8|}}} | rowclass29 = mergedrow | label29 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{9|}}}</div> | data29 = {{{10|}}} | rowclass30 = mergedrow | label30 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{11|}}}</div> | data30 = {{{12|}}} | rowclass31 = mergedrow | label31 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{13|}}}</div> | data31 = {{{14|}}} | rowclass32 = mergedrow | label32 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{15|}}}</div> | data32 = {{{16|}}} | rowclass33 = mergedrow | label33 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{17|}}}</div> | data33 = {{{18|}}} | rowclass34 = mergedrow | label34 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{19|}}}</div> | data34 = {{{20|}}} | rowclass35 = mergedrow | label35 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{21|}}}</div> | data35 = {{{22|}}} | rowclass36 = mergedrow | label36 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{23|}}}</div> | data36 = {{{24|}}} | rowclass37 = mergedrow | label37 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{25|}}}</div> | data37 = {{{26|}}} | rowclass38 = mergedrow | label38 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{27|}}}</div> | data38 = {{{28|}}} | rowclass39 = mergedrow | label39 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{29|}}}</div> | data39 = {{{30|}}} | rowclass40 = mergedrow | label40 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{31|}}}</div> | data40 = {{{32|}}} | rowclass41 = mergedrow | label41 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{33|}}}</div> | data41 = {{{34|}}} | rowclass42 = mergedrow | label42 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{35|}}}</div> | data42 = {{{36|}}} | rowclass43 = mergedrow | label43 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{37|}}}</div> | data43 = {{{38|}}} | rowclass44 = mergedrow | label44 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{39|}}}</div> | data44 = {{{40|}}} }}<noinclude> {{documentation|content= This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. It can currently take up to 20 rows. }}</noinclude> 52b488ce963e6b79723ab148c9a82507ed2b4078 Template:Hlist 10 429 933 2023-09-30T21:41:55Z Führerredux 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 935 933 2023-09-30T21:42:24Z Führerredux 2 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:list|horizontal}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 9e3824c2e3c0e0dbef2f37556ac0b994987fecf9 Template:Hlist/doc 10 430 934 2023-09-30T21:42:06Z Führerredux 2 Created page with "{{Documentation subpage}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> {{used in system|in [[MediaWiki:Citethispage-content]]}} {{Lua|Module:List}} {{Uses TemplateStyles|Template:Hlist/styles.css}} {{tlr|clear=right|Horizontal list|dotlist|hlist1}} This template creates [[WP:HLIST|horizontal lists]]. Each item in the list may be individually styled with [[CSS]]. __TOC__ {{-}} == Usage == '''Basic usage''' {{pre|<nowiki>{{</nowiki>hl..." wikitext text/x-wiki {{Documentation subpage}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> {{used in system|in [[MediaWiki:Citethispage-content]]}} {{Lua|Module:List}} {{Uses TemplateStyles|Template:Hlist/styles.css}} {{tlr|clear=right|Horizontal list|dotlist|hlist1}} This template creates [[WP:HLIST|horizontal lists]]. Each item in the list may be individually styled with [[CSS]]. __TOC__ {{-}} == Usage == '''Basic usage''' {{pre|<nowiki>{{</nowiki>hlist<nowiki>|</nowiki>''first item''<nowiki>|</nowiki>''second item''<nowiki>|</nowiki>''third item''<nowiki>|</nowiki>...<nowiki>}}</nowiki>}} '''All parameters''' {{pre| <nowiki>{{</nowiki>hlist <nowiki>|</nowiki>''first item''<nowiki>|</nowiki>''second item''<nowiki>|</nowiki>''third item''<nowiki>|</nowiki>... <nowiki>|class = </nowiki>''class for div tag'' <nowiki>|style = </nowiki>''style for div tag'' <nowiki>|list_style = </nowiki>''style for ul tag'' <nowiki>|item_style = </nowiki>''style for all li tags'' <nowiki>|item1_style = </nowiki>''style for first li tag'' <nowiki>|item2_style = </nowiki>''style for second li tag'' <nowiki>|</nowiki>... <nowiki>|indent = </nowiki>''the number of tabs to indent'' <nowiki>}}</nowiki> }} == Parameters == * Positional parameters (<code>1</code>, <code>2</code>, <code>3</code>...): these are the list items. If no list items are present, the module will output nothing. * <code>class</code>: a custom class for the {{tag|div}} tags surrounding the list. Set to <code>inline</code> when using {{tlf|hlist}} inside text. * <code>style</code>: a custom CSS style for the {{tag|div}} tags surrounding the list, e.g. <code>font-size: 90%;</code>. * <code>list_style</code>: a custom CSS style for the {{tag|ul}} tags around the list. The format is the same as for the {{para|style}} parameter. * <code>item_style</code>: a custom CSS style for all of the list items (the {{tag|li}} tags). The format is the same as for the {{para|style}} parameter. * <code>item1_style</code>, <code>item2_style</code>, <code>item3_style</code>...: custom CSS styles for each of the list items. The format is the same as for the {{para|style}} parameter. * <code>indent</code>: the number of tabs to indent the list. Default value is 0. == Examples == {{markup | <nowiki>{{hlist|entry1|entry2|entry3|entry4|entry5|entry6|entry7|entry8|entry9}}</nowiki> | {{hlist|entry1|entry2|entry3|entry4|entry5|entry6|entry7|entry8|entry9}} | <nowiki>Giant planets ({{hlist|[[Jupiter|J]]|[[Saturn|S]]|[[Uranus|U]]|[[Neptune|N]]}}).</nowiki> | Giant planets ({{hlist|[[Jupiter|J]]|[[Saturn|S]]|[[Uranus|U]]|[[Neptune|N]]}}). | <nowiki>Giant planets ({{hlist|class=inline|[[Jupiter|J]]|[[Saturn|S]]|[[Uranus|U]]|[[Neptune|N]]}}).</nowiki> | Giant planets ({{hlist|class=inline|[[Jupiter|J]]|[[Saturn|S]]|[[Uranus|U]]|[[Neptune|N]]}}). | <nowiki>{{hlist|Winner|Runner-up|Third place|indent=2}}</nowiki> | {{hlist|Winner|Runner-up|Third place|indent=2}} | <nowiki>{{hlist|Winner|Runner-up|Third place|item_style=color:blue;}}</nowiki> | {{hlist|Winner|Runner-up|Third place|item_style=color:blue;}} | <nowiki>{{hlist|Winner|Runner-up|Third place|item1_style=background-color:yellow;|item2_style=background-color:silver;}}</nowiki> | {{hlist|Winner|Runner-up|Third place|item1_style=background-color:yellow;|item2_style=background-color:silver;}} }} == Avoiding Linter errors == {{tlf|hlist}} will produce [[Wikipedia:Linter|Linter]] [[Special:LintErrors/misc-tidy-replacement-issues|errors]] if placed inside a template that uses {{tag|span}} tags, such as {{tl|small}}, {{tl|larger}}, etc. To avoid this, use the substitutions from the table below: {| {{table}} ! Incorrect markup !! Correct markup |- | <code><nowiki>{{small|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:85%}}</nowiki></code> |- | <code><nowiki>{{resize|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:90%}}</nowiki></code> |- | <code><nowiki>{{midsize|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:92%}}</nowiki></code> |- | <code><nowiki>{{larger|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:110%}}</nowiki></code> |- | <code><nowiki>{{big|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:120%}}</nowiki></code> |- | <code><nowiki>{{large|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:large}}</nowiki></code> |- | <code><nowiki>{{huge|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:180%}}</nowiki></code> |- | <code><nowiki>{{resize|x%|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:x%}}</nowiki></code> |- | <code><nowiki>{{font|size=x%|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:x%}}</nowiki></code> |- | <code><nowiki>{{nowrap|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=white-space: nowrap}}</nowiki></code> |} {{navbox lists}} <includeonly>{{Sandbox other|| <!-- Categories go here, and interwikis go in Wikidata --> [[Category:List formatting and function templates]] }}</includeonly> 53a60ad328f2ec495bd209c2ef35941c2dff2323 Template:Center 10 431 937 936 2023-09-30T21:57:56Z Führerredux 2 1 revision imported from [[:meta:Template:Center]] wikitext text/x-wiki <includeonly><div class="center" style="width:auto; margin-left:auto; margin-right:auto;{{#if: {{{style|}}} | {{{style}}};}}">{{{1}}}</div>{{#if:{{{1|}}}||[[Category:Pages using center with no arguments]]}}</includeonly><noinclude> {{documentation}} </noinclude> 7bbd9f349458b75c72afaefd8f39f80b7903afc7 Template:Lang 10 432 938 2023-09-30T21:58:31Z Führerredux 2 Created page with "<includeonly>{{#invoke:Lang|{{{fn|lang}}}}}</includeonly><noinclude> {{Documentation}} </noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:Lang|{{{fn|lang}}}}}</includeonly><noinclude> {{Documentation}} </noinclude> ed35aafbfe8198c5ad80fd861124244d0c7f2742 Template:Lang/doc 10 433 939 2023-09-30T21:59:01Z Führerredux 2 Created page with "{{High-use}} {{COinS safe|n}} {{Documentation subpage}} {{Lua|Module:Lang}} {{Language templates}} The purpose of this template is to indicate that a span of text belongs to a particular language. It often makes no visible changes to the text but can prompt [[web browsers]] to use a more appropriate font or screen readers to use a particular kind of pronunciation and so on. See {{section link||Rationale}} for more information. == Syntax and usage == {{in5}}{{tlx|lang|..." wikitext text/x-wiki {{High-use}} {{COinS safe|n}} {{Documentation subpage}} {{Lua|Module:Lang}} {{Language templates}} The purpose of this template is to indicate that a span of text belongs to a particular language. It often makes no visible changes to the text but can prompt [[web browsers]] to use a more appropriate font or screen readers to use a particular kind of pronunciation and so on. See {{section link||Rationale}} for more information. == Syntax and usage == {{in5}}{{tlx|lang|{{var|language tag}}|{{var|text}}}} The {{var|language tag}} should consist of an [[ISO-639]] language code. See the [[List of ISO 639-1 codes|list of ISO 639-1 codes]] for two-letter codes; if you don't find the language you seek, then refer to the [[List of ISO 639-3 codes|list of ISO 639-3 codes]]. The template also supports properly formatted [[IETF language tag]]s using subtags that identify the language's script, region, and/or variant. The ISO 639 language code is a two- or three-letter abbreviation, in lowercase, of the language's name. French, for example, has the code <code>fr</code>: * <code><nowiki>She said: "{{lang|fr|Je suis française.}}"</nowiki></code> → She said: "{{lang|fr|Je suis française.}}" Because all languages represented by two-letter codes in [[ISO 639-1]] can also be represented by their three-letter equivalents in [[ISO 639-2]] and above, it is recommended to use the shortest language tag possible that sufficiently describes the target language.<ref>[https://www.w3.org/International/articles/language-tags/index.en "Language tags in HTML and XML"] at [[World Wide Web Consortium]]</ref> So while French could be represented by ISO 639-2's <code>fra</code> code, use the ISO 639-1 code <code>fr</code> instead. Likewise, script, region, and variant information should be included only when they provide a necessary distinction. For an up-to-date list of available language, script, region, and variant codes, please refer to the [[Internet Assigned Numbers Authority|IANA]]'s [http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry language subtag registry]. By default, this template will place articles into the relevant subcategory of {{category link|Articles containing non-English-language text}}. To suppress this – e.g. when using {{tlf|lang}} within a [[Help:Link#Wikilinks|wikilink]] or the ''title'' parameter of a citation – add the parameter {{para|cat|no}}. === Formatting === ==== Automatic italics ==== {{tld|lang}} automatically applies italic styling <span style="font-weight: normal;">when the text in <code><nowiki>{{{2}}}</nowiki></code> is written entirely in the <code>Latn</code> script (the Latin alphabet and its extensions), either when that is the default encoding for the language or when it is triggered by a <code>{{var|xx}}-Latn</code> language code{{colon}}</span> * <code><nowiki>{{lang|fr|Je suis française.}}</nowiki></code> → {{lang|fr|Je suis française.}} * <code><nowiki>''{{lang|fr|Je suis française.}}''</nowiki></code> → ''{{lang|fr|Je suis française.}}'' – external markup is ignored * <code><nowiki>{{lang|he-Latn|la'az}} ({{lang|he|לעז}})</nowiki></code> → {{lang|he-Latn|la'az}} ({{lang|he|לעז}}) * <code><nowiki>''{{lang|he-Latn|la'az}}''</nowiki> ({{!mxt|<nowiki>''{{lang|he|לעז}}''</nowiki>}})</code> → ''{{lang|he-Latn|la'az}}'' ({{!mxt|''{{lang|he|לעז}}''}}) – external markup is ignored around the <code>he-Latn</code> text, but will incorrectly italicize the Hebrew-character material. When <code>Latn</code> script should not be italicized, there are multiple approaches{{colon}} {{para|italic|no}} <span style="font-weight: normal;">– renders <code><nowiki>{{{2}}}</nowiki></code> in upright font; italic markup around the template is ignored; italic markup inside the template causes an error message{{colon}}</span> * <code><nowiki>{{lang|fr|Je suis française.|italic=no}}</nowiki></code> → {{lang|fr|Je suis française.|italic=no}} * <code><nowiki>''{{lang|fr|Je suis française.|italic=no}}''</nowiki></code> → ''{{lang|fr|Je suis française.|italic=no}}'' * <code><nowiki>''{{lang|fr|Je suis ''française''.|italic=no}}''</nowiki></code> → ''{{lang|fr|Je suis ''française''.|italic=no|cat=no}}'' – italic markup in conflict with {{para|italic|no}} {{para|italic|unset}} <span style="font-weight: normal;">– disables template-provided styling; <code><nowiki>{{{2}}}</nowiki></code> is styled according to external or internal wiki markup{{colon}}</span> * <code><nowiki>{{lang|fr|Je suis française.|italic=unset}}</nowiki></code> → {{lang|fr|Je suis française.|italic=unset}} * <code><nowiki>''{{lang|fr|Je suis française.|italic=unset}}''</nowiki></code> → ''{{lang|fr|Je suis française.|italic=unset}}'' * <code><nowiki>{{lang|fr|''Je suis'' English.|italic=unset}}</nowiki></code> → {{lang|fr|''Je suis'' English.|italic=unset}} {{tlx|noitalic}} <span style="font-weight: normal;">can also be used{{colon}}</span> * <code><nowiki>{{lang|fr|Je suis {{noitalic|English}}.}}</nowiki></code> → {{lang|fr|Je suis {{noitalic|English}}.}} {{hatnote|{{crossreference|See table "[[#italic parameter|lang {{!}}italic{{=}} parameter operation]]".}}}} ==== Language-specific templates ==== There are language-specific versions of this template, such as {{tl|lang-fr}} and {{tl|lang-ru}}, which are intended to be used the first time a language appears in an article. These templates will print the language's name and, when appropriate, italicize their content: * <code><nowiki>A '''kremlin''' ({{lang-ru|кремль}}, 'castle') is a major fortified central complex ...</nowiki></code> → A '''kremlin''' ({{lang-ru|кремль}}, 'castle') is a major fortified central complex ... While {{tnull|lang-{{var|xx}}}} templates output text in italics for languages with Latin-based scripts, if plain text is required, such as for proper names, {{para|italic|no}} or {{tlx|noitalic}} may be used: * <code><nowiki>the border town of Ventimiglia ({{lang-fr|Vintimille}})</nowiki></code> → the border town of Ventimiglia ({{lang-fr|Vintimille}}) * <code><nowiki>the border town of Ventimiglia ({{lang-fr|italic=no|Vintimille}})</nowiki></code> → the border town of Ventimiglia ({{lang-fr|italic=no|Vintimille}}) * <code><nowiki>the border town of Ventimiglia ({{lang-fr|{{noitalic|Vintimille}}}})</nowiki></code> → the border town of Ventimiglia ({{lang-fr|{{noitalic|Vintimille}}}}) When formatting foreign-language text to match style guidelines, it is best to exclude the styling markup from the template, so that any extraneous markup which is not from the foreign language does not receive incorrect metadata for that language. This includes: English-language quotation marks around titles of works in languages that use other quotation character glyphs; italicization of titles in languages which do not use that convention; and emphasis that is not found (in one style or another) in the original foreign text; among other cases. If in doubt, put such markup outside the template when possible. {{See also|Wikipedia:Manual of Style/Text formatting#Foreign terms}} === Right-to-left languages === To embed a string of right-to-left text (such as [[Arabic]] or [[Hebrew language|Hebrew]]) within the usual left-to-right context, {{para|rtl|yes}} should be added to correctly communicate writing direction. To markup a whole paragraph of right-to-left text, {{tl|rtl-para}} should be used instead. Any of these approaches will wrap the text in a container with the <code>dir="rtl"</code> attribute. In order to ensure correct rendering in browsers that do not fully support [[HTML5]] [[bidirectional text|bidirectional isolation]], a [[left-to-right mark]] is also added to the end of the text (see the [http://www.w3.org/International/articles/inline-bidi-markup W3C] for details). Note that text direction does not need to be specified when using the {{tnull|lang-{{var|xx}}}} templates, as this is implied by the template's language. == Parameters == {{#lst:Template:Lang-x/doc/parameters|lang_parameters}} ===the function selector parameter=== {{tlx|lang}} uses the Lua function <code>lang()</code> [[Module:Lang]]. That module also supports all of the {{tnull|lang-??}} templates using the Lua functions <code>lang_xx_inherit()</code> and <code>lang_xx_italic()</code>. The module has other functions that may be useful. The function selector parameter {{para|fn}} tells module:lang which function to execute. The available functions are: *<code>is_ietf_tag</code> – returns <code>true</code> if the provided [[IETF language tag]] is valid; nil else **<code><nowiki>{{lang|fn=is_ietf_tag|nv}}</nowiki></code> →{{lang|fn=is_ietf_tag|nv}}← **<code><nowiki>{{lang|fn=is_ietf_tag|xx}}</nowiki></code> →{{lang|fn=is_ietf_tag|xx}}← *<code>is_lang_name</code> – returns <code>true</code> if the provided language name is valid; nil else **<code><nowiki>{{lang|fn=is_lang_name|navajo}}</nowiki></code> →{{lang|fn=is_lang_name|navajo}}← **<code><nowiki>{{lang|fn=is_lang_name|xxxxx}}</nowiki></code> →{{lang|fn=is_lang_name|xxxxx}}← *<code>lang</code> – the function that renders {{tlx|lang}}; listed here for completeness, this particular usage is more-or-less pointless *<code>lang_xx_inherit</code> – the function that renders {{tnull|lang-??}} template where the text is not italicized; can be used when a {{tnull|lang-??}} template, for example {{tlx|lang-aao}}, does not exist for a particular language: **<code><nowiki>{{lang|fn=lang_xx_inherit|code=aao|Algerian Saharan Arabic text}}</nowiki></code> → {{lang|fn=lang_xx_inherit|code=aao|Algerian Saharan Arabic text}} *<code>lang_xx_italic</code> – the function that renders {{tnull|lang-??}} template where the text is italicized; can be used when a {{tnull|lang-??}} template, for example {{tlx|lang-svc}}, does not exist for a particular language: **<code><nowiki>{{lang|fn=lang_xx_italic|code=svc|Vincentian Creole English text}}</nowiki></code> → {{lang|fn=lang_xx_italic|code=svc|Vincentian Creole English text}} *<code>name_from_tag</code> – returns the language name associated with the provided IETF language tag: **<code><nowiki>{{lang|fn=name_from_tag|apa}}</nowiki></code> → {{lang|fn=name_from_tag|apa}} *<code>tag_from_name</code> – returns the ISO 639 language code (sometimes IETF language tag) associated with the provided language name: **<code><nowiki>{{lang|fn=tag_from_name|havasupai}}</nowiki></code> → {{lang|fn=tag_from_name|havasupai}} *<code>transl</code> – the function that renders {{tlx|transl}}; listed here for completeness, this particular usage is more-or-less pointless **<code><nowiki>{{lang|fn=transl|ar|DIN|al-Ḫawārizmī}}</nowiki></code> → {{lang|fn=transl|ar|DIN|al-Ḫawārizmī}} == Indicating writing script == If necessary, an [[List of ISO 15924 codes|ISO 15924]] script code can be appended to a language code to indicate the use of a specific script. For instance, [[Tajik language|Tajik]] (<code>tg</code>) is a language which can be found written in [[Arabic script|Arabic]] (<code>Arab</code>), [[Latin script|Latin]] (<code>Latn</code>), and [[Cyrillic script|Cyrillic]] (<code>Cyrl</code>) scripts, making it necessary to always specify which script is in use. In such a case, taking care to preserve the script code's capitalization, we could end up with the following code (language tags in bold): * <code><nowiki>Tajik ({{lang|</nowiki>'''tg-Arab'''<nowiki>|تاجیکی}}, {{lang|</nowiki>'''tg-Latn'''<nowiki>|toçikī}}, {{lang|</nowiki>'''tg-Cyrl'''<nowiki>|тоҷикӣ}})</nowiki></code> : Tajik ({{lang|tg-Arab|تاجیکی}}, {{lang|tg-Latn|toçikī}}, {{lang|tg-Cyrl|тоҷикӣ}}) Many languages, however, are so commonly written in one particular script that specifying the script is unnecessary. Russian, for instance, is almost exclusively written in Cyrillic, so there is no need to specify <code>ru-Cyrl</code>, just as <code>en-Latn</code> would be unnecessary for English. The [http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry subtag registry] contains up-to-date information on which languages have common script codes that should be "suppressed". === Transliteration === To mark a language which has been [[transliteration|transliterated]] from one script into another, append the new script's code to the code of the original language. So if transliterating from Russian Cyrillic to a Latin script, the language tag on the transliteration would be <code>ru-Latn</code>. If the transliteration scheme is known, and listed as a "variant" in the [http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry subtag registry], it can be appended after any script and region codes. For example, Chinese transliterated into a Latin script using the [[pinyin]] system would be <code>zh-Latn-pinyin</code>. As a convenience for transliterating to Latin scripts, and to work around browser styling issues with some language and script combinations, {{tl|transliteration}} may be used in place of {{tlf|lang}}: * <code><nowiki>Moscow ({{lang|ru|Москва}}, {{transliteration|ru|Moskva}})</nowiki></code> → Moscow ({{lang|ru|Москва}}, {{transliteration|ru|Moskva}}) To specify a transliteration scheme, such as the [[ISO 9|ISO transliteration standard for Cyrillic]], use {{tlc|transliteration|ru|ISO|Moskva}}. === Undetermined language === The {{tlf|lang}} template is not only used to specify the language of foreign words, but can also be used to specify a single symbol or character in a script, unrelated to any specific language. Many times the character or symbol is used in several languages, but when the article refers to the [[grapheme]] itself, the [[ISO 639‑2]] language code <code>und</code>, for Undetermined language, should be used: * <code><nowiki>The {{lang|und-Hani|字}} Han character has 6 strokes.</nowiki></code> : The {{lang|und-Hani|字}} Han character has 6 strokes. Han characters are used in Chinese, Japanese, sometimes Korean, and formerly Vietnamese, and in this case the character is not used for any specific language. Note that the script code used is <code>Hani</code>, which specifies generic Han characters (Hanzi, Kanji, Hanja). Compare {{tl|script}} usage: * <code><nowiki>The {{script|Hani|字}} Han character has 6 strokes.</nowiki></code> : The {{script|Hani|字}} Han character has 6 strokes. === Languages with no code === Use the code "mis" (Miscellaneous) for any language not listed in ISO-639. == Indicating regional variant == When it is necessary to indicate region-specific language, an [[ISO 3166-1 alpha-2]] country code, or [[UN M49]] region code, should be added to the language tag, taking care to preserve capitalization. For example, Portuguese (<code>pt</code>) as used in Brazil (<code>BR</code>) could be represented as <code>pt-BR</code>, and Spanish as used in Latin America as <code>es-419</code>. Additionally, language, script, and region codes can all appear in the same tag. For instance, the code <code>zh-Hant-TW</code> should be used for Chinese text written with [[Traditional Chinese characters|Traditional Han characters]], containing words or expressions specific to [[Taiwan]]: * <code><nowiki>Taiwan ({{lang|zh-Hant-TW|臺灣}}, {{transliteration|zh|Táiwān}})</nowiki></code> : Taiwan ({{lang|zh-Hant-TW|臺灣}}, {{transliteration|zh|Táiwān}}) == Private-use language tags == This template supports various private-use [[IETF language tag]]s. Private-use tags contain the <code>-x-</code> singleton and are used by the template to identify languages that are different, for one reason or another, from the base language identified by the ISO 639 language tag. {{#invoke:Lang/documentor tool|private_tags}} == Links == If the {{tl|lang}} template will have to be combined with links one might be tempted to move the {{tl|lang}} template into the link so that it would only frame the link's text label, not the syntax elements of the links or other stylistic elements of some types of links. However, this does not work. The {{tl|lang}} will have to wrap the entire link, regardless of whether it is an internal or external link, or a link provided through a {{tl|ill}} interwiki link template: Works: * <code><nowiki>{{lang|en|[[Book of hours]]}}</nowiki></code> → {{lang|en|[[Book of hours]]}} * <code><nowiki>{{lang|de|[[Book of hours|Stundenbuch]]}}</nowiki></code> → {{lang|de|[[Book of hours|Stundenbuch]]}} * <code><nowiki>{{lang|he-LA|{{ill|Machsor Lipsiae|de}}}}</nowiki></code> → {{lang|he-LA|{{ill|Machsor Lipsiae|de}}}} Does not work: * <code><nowiki>[[{{lang|en|Book of hours}}]]</nowiki></code> → [[{{lang|en|Book of hours}}]] (never works) * <code><nowiki>[[Book of hours|{{lang|de|Stundenbuch}}]]</nowiki></code> → [[Book of hours|{{lang|de|Stundenbuch}}]] (does not work in article space, works on talk and some other types of pages) * <code><nowiki>{{ill|Machsor Lipsiae|de|lt={{lang|he-LA|Machsor Lipsiae}}}}</nowiki></code> → {{ill|Machsor Lipsiae|de|lt={{lang|he-LA|Machsor Lipsiae}}}} (does not work in article space, works on talk and some other types of pages) == Rationale == {{section link|Wikipedia:Manual of Style/Text formatting|Foreign terms}} requires the use of {{tl|lang}} instead of manual <nowiki>''italics''</nowiki>. This is preferred for the following reasons: * [[WWW|Web]] [[Web browser|browsers]] can use the information in such [[:Category:Wikipedia multilingual support templates|multilingual support templates]] to choose an appropriate font. ** This is great for [[CJK characters|CJK]] where a character can be given its language-specific shape but will fall back to another form if no appropriate font is found or if the preferred font lacks that character, for example because the language does not make use of that character: see {{section link|Han unification|Examples of language-dependent glyphs}} and [[User:Wikipeditor/CJK|these comparison tables with a screenshot]]. * For [[web accessibility|accessibility]] – [[screen reader]]s need language info to speak text in the correct language – and to satisfy [[Wikipedia:Accessibility#Text|Wikipedia accessibility guidelines]].<ref>{{cite web|url=https://developer.yahoo.com/blogs/ydn/yahoo-search-results-now-natural-language-support-7318.html|title=Yahoo! search results now with natural language support|date=13 Mar 2008|first= Chris |last= Heilmann|work=[[Yahoo! Developer Network]] Blog|accessdate=28 Feb 2015|archiveurl=https://web.archive.org/web/20090125024422/http://developer.yahoo.net/blog/archives/2008/03/yahoo_search_re.html|archivedate=25 Jan 2009|url-status=dead}}</ref> * For [[spell checker]]s and grammar checkers, to match the text to the dictionary and syntax of the correct language. * To prevent the page from showing up on the [[Wikipedia:Typo Team/moss/not English]] report, which flags articles needing translation. * To help browsers choose appropriate [[quotation mark]]s,<ref name="qa-lang-why">{{cite web|url=http://www.w3.org/International/questions/qa-lang-why|title=Why use the language attribute?|date=18 November 2014|first= Richard |last= Ishida | publisher=World Wide Web Consortium | issue=Previously by Deborah Cawkwell, BBC World Service|accessdate=1 Mar 2015}}</ref> and make decisions about [[Hyphen|hyphenation]],<ref name="qa-lang-why"/> [[orthographic ligature|ligature]]s,<ref>{{cite web|url=http://www.w3.org/TR/css3-fonts/#font-variant-ligatures-prop|title=6.4 Ligatures: the font-variant-ligatures property|work=CSS Fonts Module Level 3 W3C Candidate Recommendation 3 October 2013}}</ref> and spacing.<ref name="qa-lang-why"/> * Users can apply styles to languages in their [[style sheet (web development)|style sheet]]s (useful for editors). * [[Web search engine|Search engine]]s can use this information when [[search engine indexing|indexing]] text. * Facilitates better data-scraping, parsing and re-use. * Useful for application developers who re-publish Wikipedia (also see {{section link|Wikipedia:Manual of Style/Accessibility|Other languages}}). * Useful for research or compiling statistics about language use in Wikipedia. == Applying styles == Registered users can apply custom [[Cascading Style Sheets|CSS]] styles to articles by placing style declarations in their user style sheet. The user style sheet can be created at [[Special:Mypage/common.css]]. For more information, see [[Help:User style]]. The following examples should work in most [[List of web browsers|modern browsers]]. To apply a specific font to all text marked as Russian of any script or region: <syntaxhighlight lang="css"> [lang|=ru] { font-family: fonteskaya; } /* or */ :lang(ru) { font-family: fonteskaya; } </syntaxhighlight> To apply a specific font to text marked simply as Russian: <syntaxhighlight lang="css"> [lang=ru] { font-family: fonteskaya; } </syntaxhighlight> To apply a color to all text marked with any language: <syntaxhighlight lang="css"> [lang] { color: green; } </syntaxhighlight> If a font name contains characters besides basic Latin letters or hyphens, it is a good idea to enclose it in quotation marks because some such characters have special meanings (the most common case needing quotation marks is a multi-word font name with space characters). Quotation marks are also required for font families containing generic-family keywords ('inherit', 'serif', 'sans-serif', 'monospace', 'fantasy', and 'cursive'). See the [http://www.w3.org/TR/CSS21/fonts.html#font-family-prop W3C] for more details. You can combine this with font imports in your user stylesheet, for example, to show all German text in [[Fraktur]] and all Urdu in [[Noto fonts|Noto]] [[Nastaʿlīq script|Nastaliq]] Urdu Regular: <syntaxhighlight lang="css"> @import url(https://fonts.googleapis.com/css?family=UnifrakturMaguntia); @import url(http://fonts.googleapis.com/earlyaccess/notonastaliqurdudraft.css); :lang(de) { font-family: UnifrakturMaguntia; font-style: normal; font-weight: normal; } :lang(ur) { font-family: "Noto Nastaliq Urdu Regular", "Noto Nastaliq Urdu"; } </syntaxhighlight> then the following wikitext will look like the image below: <pre> Victor jagt zwölf Boxkämpfer quer über den Sylter Deich {{lang|de-Latf|Victor jagt zwölf Boxkämpfer quer über den Sylter Deich}} ٹھنڈ میں، ایک قحط زدہ گاؤں سے گزرتے وقت ایک چڑچڑے، بااثر و فارغ شخص کو بعض جل پری نما اژدہے نظر آئے۔ {{lang|ur|ٹھنڈ میں، ایک قحط زدہ گاؤں سے گزرتے وقت ایک چڑچڑے، بااثر و فارغ شخص کو بعض جل پری نما اژدہے نظر آئے۔}} </pre> {{Wide image|Pangrams in DE and UR in Arial, UnifrakturMaguntia and Noto Nastaliq Urdu.png|1000px}} == Tracking categories == * {{Category link with count|Lang and lang-xx template errors}} * {{Category link with count|Lang and lang-xx code promoted to ISO 639-1}} * {{Category link with count|Lang and lang-xx using deprecated ISO 639 codes}} == TemplateData == {{TemplateData header}} <templatedata> { "description": "Indicate that a given span of text belongs to a particular language. Allows browsers to correctly present and pronounce foreign languages.", "params": { "1": { "label": "Language tag", "description": "A language tag, or an ISO 639 language code.", "type": "string", "required": true, "example": "fr", "aliases": [ "code" ] }, "2": { "label": "Text", "description": "The text belonging to the language specified.", "type": "string", "required": true, "example": "Je suis française.", "aliases": [ "text" ] }, "rtl": { "label": "Right to left", "description": "Indicates that the language should be displayed from right to left.", "example": "yes", "type": "string", "default": "no" }, "italic": { "aliases": [ "italics", "i" ], "label": "Italicize", "description": "Italicizes the text", "default": "yes", "example": "no", "type": "boolean" }, "size": { "label": "Font-size", "description": "sets font-size", "example": "120%, 1.2em" }, "cat": {}, "nocat": {} }, "format": "inline" } </templatedata> == See also == * {{tl|Lang-x}} * {{tl|IPA}} * {{tl|Title language}} * [[:Category:Wikipedia multilingual support templates]] * [[Lists of ISO 639 codes]] (language codes) ** {{tl|ISO 639 name}} * [[List of ISO 15924 codes]] (script codes) * [[List of ISO romanizations|List of ISO transliterations]] (transliteration codes) * {{tl|cleanup lang}} (for articles which should use this template, but do not yet) * {{tl|transliteration}} (for romanisation of languages not natively written in the Latin alphabet) * {{tl|script}} (for specific characters) * {{tl|wikt-lang}} (to simultaneously tag text as a language and link to Wiktionary) * {{tl|in lang}} (for visually marking external links to foreign-language content) * {{tl|mw lang}} (similar to <nowiki>{{ISO 639 name}}</nowiki> for MediaWiki-supported languages) * {{tl|interlanguage link}} == References == {{reflist}} == External links == * [[World Wide Web Consortium|W3C]] ** [http://www.w3.org/International/articles/language-tags/Overview.en.php Language tags in HTML and XML] – Overview ** [https://www.w3.org/International/techniques/authoring-html#language Authoring Web pages] ** [http://www.w3.org/International/articles/bcp47/ Understanding the New Language Tags] ** [http://www.w3.org/International/questions/qa-css-lang FAQ: Styling using the lang attribute] * [[Internet Assigned Numbers Authority|IANA]] ** [http://www.iana.org/assignments/language-subtag-registry IANA Language Subtag Registry] ** [http://www.rfc-editor.org/rfc/rfc4646.txt Tags for Identifying Languages] ({{IETF RFC|4646}}) ** [http://www.rfc-editor.org/rfc/rfc4647.txt Matching of Language Tags] ({{IETF RFC|4647}}) ** [http://www.iana.org/assignments/language-tags Language tags] (obsolete per {{IETF RFC|4646}}) * [[Mozilla Firefox]] ** [https://bugzilla.mozilla.org/show_bug.cgi?id=192636 Bug with script selection] <includeonly>{{Sandbox other|| [[Category:Wikipedia multilingual support templates]] [[Category:Templates that add a tracking category]] [[Category:Language tag handling templates]] }}</includeonly> 83043954ee499b4fcd6cfa80de7793c3e127bb1b Module:Lang 828 434 940 2023-09-30T21:59:44Z Führerredux 2 Created page with "--[=[ Lua support for the {{lang}}, {{lang-xx}}, and {{transliteration}} templates and replacement of various supporting templates. ]=] require('strict'); local getArgs = require ('Module:Arguments').getArgs; local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl() local yesno = require ('Module:Yesno'); local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables local lang_n..." Scribunto text/plain --[=[ Lua support for the {{lang}}, {{lang-xx}}, and {{transliteration}} templates and replacement of various supporting templates. ]=] require('strict'); local getArgs = require ('Module:Arguments').getArgs; local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl() local yesno = require ('Module:Yesno'); local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts local lang_table = lang_data.lang_name_table.lang; local lang_dep_table = lang_data.lang_name_table.lang_dep; local script_table = lang_data.lang_name_table.script; local region_table = lang_data.lang_name_table.region; local variant_table = lang_data.lang_name_table.variant; local suppressed_table = lang_data.lang_name_table.suppressed; local override_table = lang_data.override; local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization local content_lang = mw.language.getContentLanguage(); local this_wiki_lang_tag = content_lang.code; -- get this wiki's language tag local this_wiki_lang_dir = content_lang:getDir(); -- get this wiki's language direction local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic() local maint_cats = {}; -- maintenance categories go here local maint_msgs = {}; -- and their messages go here --[[--------------------------< I S _ S E T >------------------------------------------------------------------ Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string. ]] local function is_set( var ) return not (var == nil or var == ''); end --[[--------------------------< I N V E R T _ I T A L I C S >------------------------------------------------- This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn't become bold markup inadvertently. Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal, replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements. In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns. This function expects that markup in args.text is complete and correct; if it is not, oddness may result. ]] local function invert_italics (source) local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns [""]="\'\'", -- empty string becomes italic markup ["\'\'"]="", -- italic markup becomes empty string ["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic ["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold }; local seg = {}; source = source:gsub ("%f[\']\'%f[^\']", '&#39;'); -- protect single quote marks from being interpreted as bold markup seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text' seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup elseif '' ~= seg[1] then seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup elseif '' ~= seg[3] then seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup else seg[2] = source -- when there is no markup end seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table return table.concat (seg); -- put it all back together and done end --[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------ validates |italic= or |italics= assigned values. When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or, for the special case 'default', return nil. When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message. When both |italic= and |italics= are set, returns nil and a 'conflicting' error message. The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template's defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-xx}} depending on the individual template's requirements, 'italic' for {{transliteration}}) or to the value appropriate to |script=, if set ({{lang}} and {{lang-xx}} only). Accepted values and the values that this function returns are are: nil - when |italic= absent or not set; returns nil default - for completeness, should rarely if ever be used; returns nil yes - force args.text to be rendered in italic font; returns 'italic' no - force args.text to be rendered in normal font; returns 'normal' unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit' invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert' ]] local function validate_italic (args) local properties = {['yes'] = 'italic', ['no'] = 'normal', ['unset'] = 'inherit', ['invert'] = 'invert', ['default'] = nil}; local count = 0 for _, arg in pairs {'italic', 'italics', 'i'} do if args[arg] then count = count + 1 end end if count > 1 then -- return nil and an error message if more than one is set return nil, 'only one of |italic=, |italics=, or |i= can be specified'; end return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message end --[=[--------------------------< V A L I D A T E _ C A T _ A R G S >---------------------------------------------------------- Default behavior of the {{lang}} and {{lang-xx}} templates is to add categorization when the templates are used in mainspace. This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters to control categorization. Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the parameter is treated as if it were not set in the template. Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply. Accepted values for |nocat= are the text strings: 'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else for |cat= 'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else ]=] local function validate_cat_args (args) if not (args.nocat or args.cat) then -- both are nil, so categorize return; end if false == yesno (args.cat) or true == yesno (args.nocat) then args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template) else -- args.nocat is the parameter actually used. args.nocat = nil; end end --[[--------------------------< I N _ A R R A Y >-------------------------------------------------------------- Whether needle is in haystack ]] local function in_array ( needle, haystack ) if needle == nil then return false; end for n,v in ipairs( haystack ) do if v == needle then return n; end end return false; end --[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------ prettify ietf tags to use recommended subtag formats: code: lower case script: sentence case region: upper case variant: lower case private: lower case prefixed with -x- ]] local function format_ietf_tag (code, script, region, variant, private) local out = {}; if is_set (private) then return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored end table.insert (out, code:lower()); if is_set (script) then script = script:lower():gsub ('^%a', string.upper); table.insert (out, script); end if is_set (region) then table.insert (out, region:upper()); end if is_set (variant) then table.insert (out, variant:lower()); end return table.concat (out, '-'); end --[[--------------------------< G E T _ I E T F _ P A R T S >-------------------------------------------------- extracts and returns IETF language tag parts: primary language subtag (required) - 2 or 3 character IANA language code script subtag - four character IANA script code region subtag - two-letter or three digit IANA region code variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag in any one of these forms lang lang-variant lang-script lang-script-variant lang-region lang-region-variant lang-script-region lang-script-region-variant lang-x-private each of lang, script, region, variant, and private, when used, must be valid Languages with both two- and three-character code synonyms are promoted to the two-character synonym because the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding the synonymous three-character codes in the lang= attribute. For {{lang-xx}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}} because those parameters are superfluous to the IETF subtags in |code=) returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil. see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1 ]] local function get_ietf_parts (source, args_script, args_region, args_variant) local code, script, region, variant, private; -- ietf tag parts if not is_set (source) then return nil, nil, nil, nil, nil, 'missing language tag'; end local pattern = { -- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits) {'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits) {'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss {'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR {'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits) {'^(%a%a%a?)$'}, -- 18 - ll {'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters) } local t = {}; -- table of captures; serves as a translator between captured ietf tag parts and named variables for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i]) if c1 then -- c1 always set on match code = c1; -- first capture is always code t = { [pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures [pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures [pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table }; script = t.s or ''; -- translate table contents to named variables; region = t.r or ''; -- absent table entries are nil so set named ietf parts to empty string for concatenation variant= t.v or ''; private = t.p or ''; break; -- and done end end if not code then return nil, nil, nil, nil, nil, table.concat ({'unrecognized language tag: ', source}); -- don't know what we got but it is malformed end code = code:lower(); -- ensure that we use and return lower case version of this if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then return nil, nil, nil, nil, nil, table.concat ({'unrecognized language code: ', code}); -- invalid language code, don't know about the others (don't care?) end if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym table.insert (maint_cats, table.concat ({'Lang and lang-xx code promoted to ISO 639-1|', code})); table.insert (maint_msgs, table.concat ({'code: ', code, ' promoted to code: ', synonym_table[code]})); code = synonym_table[code]; -- use the synonym end if is_set (script) then if is_set (args_script) then return code, nil, nil, nil, nil, 'redundant script tag'; -- both code with script and |script= not allowed end else script = args_script or ''; -- use args.script if provided end if is_set (script) then script = script:lower(); -- ensure that we use and return lower case version of this if not script_table[script] then return code, nil, nil, nil, nil, table.concat ({'unrecognized script: ', script, ' for code: ', code}); -- language code ok, invalid script, don't know about the others (don't care?) end end if suppressed_table[script] then -- ensure that code-script does not use a suppressed script if in_array (code, suppressed_table[script]) then return code, nil, nil, nil, nil, table.concat ({'script: ', script, ' not supported for code: ', code}); -- language code ok, script is suppressed for this code end end if is_set (region) then if is_set (args_region) then return code, nil, nil, nil, nil, 'redundant region tag'; -- both code with region and |region= not allowed end else region = args_region or ''; -- use args.region if provided end if is_set (region) then region = region:lower(); -- ensure that we use and return lower case version of this if not region_table[region] then return code, script, nil, nil, nil, table.concat ({'unrecognized region: ', region, ' for code: ', code}); end end if is_set (variant) then if is_set (args_variant) then return code, nil, nil, nil, nil, 'redundant variant tag'; -- both code with variant and |variant= not allowed end else variant = args_variant or ''; -- use args.variant if provided end if is_set (variant) then variant = variant:lower(); -- ensure that we use and return lower case version of this if not variant_table[variant] then -- make sure variant is valid return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant}); end -- does this duplicate/replace tests in lang() and lang_xx()? if is_set (script) then -- if script set it must be part of the 'prefix' if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-script pair: ', code, '-', script}); end elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound) if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred) if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound) return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-region pair: ', code, '-', region}); end end else -- cheap way to determine if there are prefixes; fonipa and others don't have prefixes; # operator always returns 0 if variant_table[variant]['prefixes'][1] and not in_array (code, variant_table[variant]['prefixes']) then return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code: ', code}); end end end if is_set (private) then private = private:lower(); -- ensure that we use and return lower case version of this if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index return code, script, region, nil, nil, table.concat ({'unrecognized private tag: ', private}); end end return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil end --[[--------------------------< M A K E _ E R R O R _ M S G >-------------------------------------------------- assembles an error message from template name, message text, help link, and error category. ]] local function make_error_msg (msg, args, template) local out = {}; local category; if 'Transliteration' == template then category = 'Transliteration'; else category = 'Lang and lang-xx' end table.insert (out, table.concat ({'[', args.text or 'undefined', '] '})); -- for error messages output args.text if available table.insert (out, table.concat ({'<span style=\"color:#d33\">Error: {{', template, '}}: '})); table.insert (out, msg); table.insert (out, table.concat ({' ([[:Category:', category, ' template errors|help]])'})); table.insert (out, '</span>'); if (0 == namespace or 10 == namespace) and not args.nocat then -- categorize in article space (and template space to take care of broken usages) table.insert (out, table.concat ({'[[Category:', category, ' template errors]]'})); end return table.concat (out); end --[=[-------------------------< M A K E _ W I K I L I N K >---------------------------------------------------- Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an empty string. ]=] local function make_wikilink (link, display) if is_set (link) then if is_set (display) then return table.concat ({'[[', link, '|', display, ']]'}); else return table.concat ({'[[', link, ']]'}); end else return ''; end end --[[--------------------------< D I V _ M A R K U P _ A D D >-------------------------------------------------- adds <i> and </i> tags to list-item text or to implied <p>..</p> text. mixed not supported ]] local function div_markup_add (text, style) local implied_p = {}; if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text if 'italic' == style then return text:gsub ('(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item else return text; end end if text:find ('\n+') then -- look for any number of \n characters in text text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics mediawiki if 'italic' == style then text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each impled p (two or more consecutive '\n\n' sequences) else text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each impled p text = text:gsub ('\n', ''); -- strip newline characters end end return text; end --[[--------------------------< T I T L E _ W R A P P E R _ M A K E >------------------------------------------ makes a <span title="<title text>"><content_text></span> or <div title="<title text>"><content_text></div> where <title text> is in the tool-tip in the wiki's local language and <content_text> is non-local-language text in html markup. This because the lang= attibute applies to the content of its enclosing tag. <tag> holds a string 'div' or 'span' used to choose the correct wrapping tag ]] local function title_wrapper_make (title_text, content_text, tag) local wrapper_t = {}; table.insert (wrapper_t, table.concat ({'<', tag})); -- open opening wrapper tag table.insert (wrapper_t, ' title=\"'); -- begin title attribute table.insert (wrapper_t, title_text); -- add <title_text> table.insert (wrapper_t, '\">'); -- end title attribute and close opening wrapper tag table.insert (wrapper_t, content_text); -- add <content_text> table.insert (wrapper_t, table.concat ({'</', tag, '>'})); -- add closing wrapper tag return table.concat (wrapper_t); -- make a big string and done end --[[--------------------------< M A K E _ T E X T _ H T M L >-------------------------------------------------- Add the html markup to text according to the type of content that it is: <span> or <i> tags for inline content or <div> tags for block content The lang= attribute also applies to the content of the tag where it is placed so this is wrong because 'Spanish language text' is English: <i lang="es" title="Spanish language text">casa</i> should be: <span title="Spanish language text"><i lang="es">casa</i></span> or for <div>...</div>: <div title="Spanish language text"><div lang="es"><spanish-language-text></div></div> ]] local function make_text_html (code, text, tag, rtl, style, size, language) local html_t = {}; local style_added = ''; local wrapper_tag = tag; -- <tag> gets modified so save a copy for use when/if we create a wrapper span or div if text:match ('^%*') then table.insert (html_t, '&#42;'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki text = text:gsub ('^%*', ''); -- remove the splat from the text end if 'span' == tag then -- default html tag for inline content if 'italic' == style then -- but if italic tag = 'i'; -- change to <i> tags end else -- must be div so go text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i> end table.insert (html_t, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> html tag code = code:gsub ('%-x%-.*', ''); -- strip private use subtag from code tag because meaningless outside of wikipedia table.insert (html_t, table.concat ({' lang="', code, '\"'})); -- add language attribute if (rtl or unicode.is_rtl(text)) and ('ltr' == this_wiki_lang_dir) then -- text is right-to-left on a left-to-right wiki table.insert (html_t, ' dir="rtl"'); -- add direction attribute for right-to-left languages elseif not (rtl or unicode.is_rtl(text)) and ('rtl' == this_wiki_lang_dir) then -- text is left-to-right on a right-to-left wiki table.insert (html_t, ' dir="ltr"'); -- add direction attribute for left-to-right languages end if 'normal' == style then -- when |italic=no table.insert (html_t, ' style=\"font-style: normal;'); -- override external markup, if any style_added = '\"'; -- remember that style attribute added and is not yet closed end if is_set (size) then -- when |size=<something> if is_set (style_added) then table.insert (html_t, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted else table.insert (html_t, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute style_added = '\"'; -- remember that style attribute added and is not yet closed end end table.insert (html_t, table.concat ({style_added, '>'})); -- close the opening html tag table.insert (html_t, text); -- insert the text table.insert (html_t, table.concat ({'</', tag, '>'})); -- close the 'text' <i>, <span>, or <div> html tag if is_set (language) then -- create a <title_text> string for the title= attribute in a wrapper span or div local title_text; if 'zxx' == code then -- special case for this tag 'no linguistic content' title_text = table.concat ({language, ' text'}); -- not a language so don't use 'language' in title text elseif mw.ustring.find (language, 'languages', 1, true) then title_text = table.concat ({language, ' collective text'}); -- for collective languages else title_text = table.concat ({language, '-language text'}); -- for individual languages end return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag); else return table.concat (html_t); end end --[=[-------------------------< M A K E _ C A T E G O R Y >---------------------------------------------------- For individual language, <language>, returns: [[Category:Articles containing <language>-language text]] for English: [[Category:Articles containing explicitly cited English-language text]] for ISO 639-2 collective languages (and for 639-1 bh): [[Category:Articles with text in <language> languages]] ]=] local function make_category (code, language_name, nocat, name_get) local cat = {}; local retval; if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space return ''; -- return empty string for concatenation end if mw.ustring.find (language_name, 'languages', 1, true) then return table.concat ({'[[Category:Articles with text in ', language_name, ']]'}); end table.insert (cat, '[[Category:Articles containing '); if this_wiki_lang_tag == code then table.insert (cat, 'explicitly cited ' .. language_name); -- unique category name for the local language else table.insert (cat, language_name); end table.insert (cat, '-language text]]'); return table.concat (cat); end --[[--------------------------< M A K E _ T R A N S L I T >---------------------------------------------------- return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string The value |script= is not used in {{transliteration}} for this purpose; instead it uses |code. Because language scripts are listed in the {{transliteration}} switches they are included in the data tables. The script parameter is introduced at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code. To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed to be |translit-script= (in this function, tscript) This function is used by both lang_xx() and transl() lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style transl() always provides language_name, translit, and one of code or tscript, never both; always provides style For {{transliteration}}, style only applies when a language code is provided ]] local function make_translit (code, language_name, translit, std, tscript, style) local title; local out_t = {}; local title_t = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards local title_text = ''; -- tool tip text for title= attribute std = std and std:lower(); -- lower case for table indexing if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified title_text = language_name; -- write a generic tool tip if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name) title_text = title_text .. '-language'; -- skip this text (individual and macro languages only) end title_text = title_text .. ' romanization'; -- finish the tool tip; use romanization when neither script nor standard supplied elseif is_set (std) and is_set (tscript) then -- when both are specified if title_t[std] then -- and if standard is legitimate if title_t[std][tscript] then -- and if script for that standard is legitimate if script_table[tscript] then title_text = title_text .. table.concat ({title_t[std][tscript:lower()], ' (', script_table[tscript], ' script) transliteration'}); -- add the appropriate text to the tool tip else title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard? end else title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard? end else return ''; -- invalid standard, setup for error message end elseif is_set (std) then -- translit-script not set, use language code if not title_t[std] then return ''; end -- invalid standard, setup for error message if title_t[std][code] then -- if language code is in the table (transl may not provide a language code) title_text = title_text .. table.concat ({title_t[std][code:lower()], ' (', language_name, ' language) transliteration'}); -- add the appropriate text to the tool tip else -- code doesn't match title_text = title_text .. title_t[std]['default']; -- so use the standard's default end else -- here if translit-script set but translit-std not set if title_t['no_std'][tscript] then title_text = title_text .. title_t['no_std'][tscript]; -- use translit-script if set elseif title_t['no_std'][code] then title_text = title_text .. title_t['no_std'][code]; -- use language code else if is_set (tscript) then title_text = title_text .. table.concat ({language_name, '-script transliteration'}); -- write a script tool tip elseif is_set (code) then if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name) title_text = title_text .. '-language'; -- skip this text (individual and macro languages only) end title_text = title_text .. ' transliteration'; -- finish the tool tip else title_text = title_text .. ' transliteration'; -- generic tool tip (can we ever get here?) end end end local close_tag; if is_set (code) then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transliteration}}) code = code:match ('^(%a%a%a?)'); -- strip all subtags leaving only the language subtag if not style then -- nil for the default italic style table.insert (out_t, "<i lang=\""); -- so use <i> tag close_tag = '</i>'; -- tag to be used when closing else table.insert (out_t, table.concat ({'<span style=\"font-style: ', style, '\" lang=\"'})); -- non-standard style, construct a span tag for it close_tag = '</span>'; -- tag to be used when closing end table.insert (out_t, code); table.insert (out_t, "-Latn\">"); -- transliterations are always Latin script else table.insert (out_t, "<span>"); -- when no language code: no lang= attribute, not italic ({{transliteration}} only) close_tag = '</span>'; end table.insert (out_t, translit); -- add the translit text table.insert (out_t, close_tag); -- and add the appropriate </i> or </span> if '' == title_text then -- when there is no need for a tool-tip return table.concat (out_t); -- make a string and done else return title_wrapper_make (title_text, table.concat (out_t), 'span'); -- wrap with a tool-tip span and don end end --[[--------------------------< V A L I D A T E _ T E X T >---------------------------------------------------- This function checks the content of args.text and returns empty string if nothing is amiss else it returns an error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup. Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert. ]] local function validate_text (template, args) if not is_set (args.text) then return make_error_msg ('no text', args, template); end if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes return make_error_msg ('text has malformed markup', args, template); end local style = args.italic; if ('unset' ~= style) and ('invert' ~=style) then if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic return make_error_msg ('text has italic markup', args, template); end end end --[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------ render mainenance messages and categories ]] local function render_maint(nocat) local maint = {}; if 0 < #maint_msgs then -- when there are maintenance messages table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag for _, msg in ipairs (maint_msgs) do table.insert (maint, table.concat ({msg, ' '})); -- add message strings end table.insert (maint, '</span>'); -- close the span end if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only for _, cat in ipairs (maint_cats) do table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories end end return table.concat (maint); end --[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------ for proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we do nothing proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac ]] local function proto_prefix (text, language_name, proto_param) if false == proto_param then -- when forced by |proto=no return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats end return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat end --[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------ looks for a poem strip marker in text; returns true when found; false else auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know the content that will replace the stripmarker. ]] local function has_poem_tag (text) return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false; end --[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------ Inspects content of and selectively trims text. Returns text and the name of an appropriate html tag for text. If text contains: \n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return If text begins with list markup: \n* unordered \n; definition \n: definition \n# ordered trim all leading whitespace except \n and trim all trailing whitespace If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because the stripmarker is replaced with text wrapped in <div>..</div> tags. If the text contains any actual <div>...</div> tags, then it's again returned unmodified and <div>...</div> tags are used to wrap it, to prevent div/span inversion. ]] local function html_tag_select (text) local tag; if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that) tag = 'div'; -- poem replacement is in div tags so lang must use div tags elseif text:find ('<div') then -- reductive; if the text contains a div tag, we must use div tags tag = 'div'; elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags text = mw.text.trim (text); -- trim leading and trailing whitespace characters tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags elseif text:find ('\n[%*:;%#]') then -- if text has list markup text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n' tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki) else text = mw.text.trim (text); -- plain text tag = 'span'; -- so span is fine end return text, tag; end --[[--------------------------< V A L I D A T E _ P R O T O >-------------------------------------------------- validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false, empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of true indicating that some other value has been assigned to |proto= ]] local function validate_proto (proto_param) if 'yes' == proto_param then return true; elseif 'no' == proto_param then return false; elseif is_set (proto_param) then return nil, true; -- |proto= something other than 'yes' or 'no' else return nil; -- missing or empty end end --[[--------------------------< L A N G U A G E _ N A M E _ G E T >-------------------------------------------- common function to return language name from the data set according to IETF tag returns language name if found in data tables; nil else ]] local function language_name_get (ietf, code, cat) ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case local name; -- remains nil if not found if override_table[ietf] then -- look for whole IETF tag in override table name = override_table[ietf]; elseif override_table[code] then -- not there so try basic language tag name = override_table[code]; elseif lang_table[code] then -- shift to iana active tag/name table name = lang_table[code]; elseif lang_dep_table[code] then -- try the iana deprecated tag/name table name = lang_dep_table[code]; end if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code})); table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'})); end return name; -- name from data tables or nil end --[[--------------------------< _ L A N G >-------------------------------------------------------------------- entry point for {{lang}} there should be no reason to set parameters in the {{lang}} {{#invoke:}} <includeonly>{{#invoke:lang|lang}}</includeonly> parameters are received from the template's frame (parent frame) ]] local function _lang (args) local out = {}; local language_name; -- used to make category names local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set local subtags = {}; -- IETF subtags script, region, variant, and private local code; -- the language code local msg; -- for error messages local tag = 'span'; -- initial value for make_text_html() local template = args.template or 'Lang'; maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once maint_msgs = {}; validate_cat_args (args); -- determine if categorization should be suppressed if args[1] and args.code then return make_error_msg ('conflicting: {{{1}}} and |code=', args, template); else args.code = args[1] or args.code; -- prefer args.code end if args[2] and args.text then return make_error_msg ('conflicting: {{{2}}} and |text=', args, template); else args.text = args[2] or args.text; -- prefer args.text end msg = validate_text (template, args); -- ensure that |text= is set if is_set (msg) then -- msg is an already-formatted error message return msg; end args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag if msg then return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template); end code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}}) if msg then return make_error_msg ( msg, args, template); end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, template); end if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls if ('latn' == subtags.script) or -- script is latn (this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and unicode.is_Latin (args.text)) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics) args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic else args.italic = 'inherit'; -- italic not set; script not latn; inherit current style end end if is_set (subtags.script) then -- if script set, override rtl setting if in_array (subtags.script, lang_data.rtl_scripts) then args.rtl = true; -- script is an rtl script else args.rtl = false; -- script is not an rtl script end end args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant if 'invert' == args.italic and 'span' == tag then -- invert only supported for in-line content args.text = invert_italics (args.text) end args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name)); table.insert (out, make_category (code, language_name, args.nocat)); table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories return table.concat (out); -- put it all together and done end --[[--------------------------< L A N G >---------------------------------------------------------------------- entry point for {{lang}} there should be no reason to set parameters in the {{lang}} {{#invoke:}} <includeonly>{{#invoke:lang|lang}}</includeonly> parameters are received from the template's frame (parent frame) ]] local function lang (frame) local args = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text valueFunc = function (key, value) if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space return value; -- return untrimmed 'text' elseif value then -- all other values: if the value is not nil value = mw.text.trim (value); -- trim whitespace if '' ~= value then -- empty string when value was only whitespace return value; end end return nil; -- value was empty or contained only whitespace end -- end of valueFunc }); return _lang (args); end --[[--------------------------< T R A N S L A T I O N _ M A K E >---------------------------------------------- stand-alone function to create literal translation of main text Also used by {{lang-x2}} ]] local function translation_make (args_t) local translation_t = {', '}; -- initialize output if 'none' ~= args_t.label then -- if we want a label table.insert (translation_t, '<small>'); -- open the <small> html tag if 'no' == args_t.link then table.insert (translation_t, '<abbr title="literal translation">lit.</abbr>'); -- unlinked form else table.insert (translation_t, make_wikilink ('Literal translation', 'lit.')); -- linked form end table.insert (translation_t, "&thinsp;</small>"); -- close the <small> html tag end table.insert (translation_t, table.concat ({'&#39;', args_t.translation, '&#39;'})); -- use html entities to avoid wiki markup confusion return table.concat (translation_t); -- make a big string and done end --[[--------------------------< L A N G _ X X >---------------------------------------------------------------- For the {{lang-xx}} templates, the only parameter required to be set in the template is the language code. All other parameters can, usually should, be written in the template call. For {{lang-xx}} templates for languages that can have multiple writing systems, it may be appropriate to set |script= as well. For each {{lang-xx}} template choose the appropriate entry-point function so that this function knows the default styling that should be applied to text. For normal, upright style: <includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly> For italic style: <includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly> All other parameters should be received from the template's frame (parent frame) Supported parameters are: |code = (required) the IANA language code |script = IANA script code; especially for use with languages that use multiple writing systems |region = IANA region code |variant = IANA variant code |text = (required) the displayed text in language specified by code |link = boolean false ('no') does not link code-spcified language name to associated language article |rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language |nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected |cat = boolian false ('no') opposite form of |nocat= |italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state |lit = text that is a literal translation of text |label = 'none' to suppress all labeling (language name, 'translit.', 'lit.') any other text replaces language-name label - automatic wikilinking disabled for those {{lang-xx}} templates that support transliteration (those templates where |text= is not entirely latn script): |translit = text that is a transliteration of text |translit-std = the standard that applies to the transliteration |translit-script = ISO 15924 script name; falls back to code For {{lang-xx}}, the positional parameters are: {{{1}}} text {{{2}}} transliterated text {{{3}}} literal translation text no other positional parameters are allowed ]] local function _lang_xx (args) local out = {}; local language_name; -- used to make display text, article links local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set local subtags = {}; -- IETF subtags script, region, and variant local code; -- the language code local translit_script_name; -- name associated with IANA (ISO 15924) script code local translit; local translit_title; local msg; -- for error messages local tag = 'span'; -- initial value for make_text_html() local template = args.template or 'Lang-xx'; maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once maint_msgs = {}; if args[1] and args.text then return make_error_msg ('conflicting: {{{1}}} and |text=', args, template); else args.text = args[1] or args.text; -- prefer args.text end msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding if is_set (msg) then return msg; end args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly if args[2] and args.translit then return make_error_msg ('conflicting: {{{2}}} and |translit=', args, template); else args.translit = args[2] or args.translit -- prefer args.translit end if args[3] and (args.translation or args.lit) then return make_error_msg ('conflicting: {{{3}}} and |lit= or |translation=', args, template); elseif args.translation and args.lit then return make_error_msg ('conflicting: |lit= and |translation=', args, template); else args.translation = args[3] or args.translation or args.lit; -- prefer args.translation end if args.links and args.link then return make_error_msg ('conflicting: |links= and |link=', args, template); else args.link = args.link or args.links; -- prefer args.link end validate_cat_args (args); -- determine if categorization should be suppressed args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private if msg then -- if an error detected then there is an error message return make_error_msg (msg, args, template); end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, template); end if nil == args.italic then -- args.italic controls if is_set (subtags.script) then if 'latn' == subtags.script then args.italic = 'italic'; -- |script=Latn; set for font-style:italic else args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state> end else args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state> end end if is_set (subtags.script) then -- if script set override rtl setting if in_array (subtags.script, lang_data.rtl_scripts) then args.rtl = true; -- script is an rtl script else args.rtl = false; -- script is not an rtl script end end args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag if msg then return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template); end args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any) language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them if args.label then if 'none' ~= args.label then table.insert (out, table.concat ({args.label, ': '})); -- custom label end else if 'no' == args.link then table.insert (out, language_name); -- language name without wikilink else if mw.ustring.find (language_name, 'languages', 1, true) then table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink elseif lang_data.article_name[code] then table.insert (out, make_wikilink (lang_data.article_name[code], language_name)); -- language name with wikilink from override data else table.insert (out, make_wikilink (language_name .. ' language', language_name)); -- language name with wikilink end end table.insert (out, ': '); -- separator end if 'invert' == args.italic then args.text = invert_italics (args.text) end args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, ('none' == args.label) and language_name or nil)) if is_set (args.translit) and not unicode.is_Latin (args.text) then -- transliteration (not supported in {{lang}}); not supported when args.text is wholly latn text (this is an imperfect test) table.insert (out, ', '); -- comma to separate text from translit if 'none' ~= args.label then table.insert (out, '<small>'); if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name translit_script_name = script_table[args['translit-script']]; else translit_script_name = language_name; -- fall back on language name end translit_title = mw.title.makeTitle (0, table.concat ({'Romanization of ', translit_script_name})); -- make a title object if translit_title.exists and ('no' ~= args.link) then table.insert (out, make_wikilink ('Romanization of ' .. translit_script_name or language_name, 'romanized') .. ':'); -- make a wikilink if there is an article to link to else table.insert (out, 'romanized:'); -- else plain text end table.insert (out, '&nbsp;</small>'); -- close the small tag end translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script']) if is_set (translit) then table.insert (out, translit); else return make_error_msg (table.concat ({'invalid translit-std: \'', args['translit-std'] or '[missing]'}), args, template); end end if is_set (args.translation) then -- translation (not supported in {{lang}}) table.insert (out, translation_make (args)); end table.insert (out, make_category (code, category_name, args.nocat)); table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories return table.concat (out); -- put it all together and done end --[[--------------------------< L A N G _ X X _ A R G S _ G E T >---------------------------------------------- common function to get args table from {{lang-??}} templates returns table of args ]] local function lang_xx_args_get (frame) local args = getArgs(frame, { parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}} valueFunc = function (key, value) if 1 == key then -- the 'text' parameter; do not trim wite space return value; -- return untrimmed 'text' elseif value then -- all other values: if the value is not nil value = mw.text.trim (value); -- trim whitespace if '' ~= value then -- empty string when value was only whitespace return value; end end return nil; -- value was empty or contained only whitespace end -- end of valueFunc }); return args; end --[[--------------------------< L A N G _ X X _ I T A L I C >-------------------------------------------------- Entry point for those {{lang-xx}} templates that call lang_xx_italic(). Sets the initial style state to italic. ]] local function lang_xx_italic (frame) local args = lang_xx_args_get (frame); initial_style_state = 'italic'; return _lang_xx (args); end --[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------ Entry point ffrom another module. Sets the initial style state to italic. ]] local function _lang_xx_italic (args) initial_style_state = 'italic'; return _lang_xx (args); end --[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------ Entry point for those {{lang-xx}} templates that call lang_xx_inherit(). Sets the initial style state to inherit. ]] local function lang_xx_inherit (frame) local args = lang_xx_args_get (frame); initial_style_state = 'inherit'; return _lang_xx (args); end --[[--------------------------< _ L A N G _ X X _ I N H E R I T >---------------------------------------------- Entry point from another module. Sets the initial style state to inherit. ]] local function _lang_xx_inherit (args) initial_style_state = 'inherit'; return _lang_xx (args); end --[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------ Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid. All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Module entry point from another module ]] local function _is_ietf_tag (tag) -- entry point when this module is require()d into another local c, s, r, v, p, err; -- code, script, region, variant, private, error message c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else end --[[--------------------------< I S _ I E T F _ T A G >-------------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function is_ietf_tag (frame) return _is_ietf_tag (getArgs (frame)[1]); -- args[1] is the ietf language tag to be tested; also get parent frame end --[[--------------------------< I S _ I E T F _ T A G _ F R A M E >-------------------------------------------- Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent (template) frame. This function not useful when called by {{lang|fn=is_ietf_tag_frame|<tag>}} because <tag> is in the parent frame. ]] local function is_ietf_tag_frame (frame) return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]); -- args[1] is the ietf language tag to be tested; do not get parent frame end --[[--------------------------< _ N A M E _ F R O M _ T A G >-------------------------------------------------- Returns language name associated with IETF language tag if valid; error message else. All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Set invoke's |link= parameter to yes to get wikilinked version of the language name. Module entry point from another module ]] local function _name_from_tag (args) local subtags = {}; -- IETF subtags script, region, variant, and private local raw_code = args[1]; -- save a copy of the input IETF subtag local link = 'yes' == args['link']; -- make a boolean local label = args.label; local code; -- the language code local msg; -- gets an error message if IETF language tag is malformed or invalid local language_name = ''; code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code); if msg then local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template) return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private language_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them if link then -- when |link=yes, wikilink the language name if mw.ustring.find (language_name, 'languages', 1, true) then language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink elseif lang_data.article_name[code] then language_name = make_wikilink (lang_data.article_name[code], label or language_name); -- language name with wikilink from override data else language_name = make_wikilink (language_name .. ' language', label or language_name); -- language name with wikilink end end return language_name; end --[[--------------------------< N A M E _ F R O M _ T A G >---------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function name_from_tag (frame) -- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}} return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame end --[[--------------------------< _ T A G _ F R O M _ N A M E >-------------------------------------------------- Returns the ietf language tag associated with the language name. Spelling of language name must be correct according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator, that disambiguator must be omitted (they are not present in the data name-to-tag tables). Module entry point from another module ]] local function _tag_from_name (args) -- entry point from another module local msg; if args[1] and '' ~= args[1] then local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct) local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard if tag then return tag, true; -- language name found so return tag and done; second return used by is_lang_name() else msg = 'language: ' .. args[1] .. ' not found' -- language name not found, error message end else msg = 'missing language name' -- language name not provided, error message end local template = ''; if args.template and '' ~= args.template then template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template) end return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end --[[--------------------------< T A G _ F R O M _ N A M E >---------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function tag_from_name (frame) -- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}} local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name() return result; end --[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------ Module entry point from an {{#invoke:}} ]] local function is_lang_name (frame) local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name() return result and true or nil; end --[[--------------------------< _ T R A N S L >---------------------------------------------------------------- Module entry point from another module ]] local function _transl (args) local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards local language_name; -- language name that matches language code; used for tool tip local translit; -- transliterated text to display local script; -- IANA script local msg; -- for when called functions return an error message maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once maint_msgs = {}; if is_set (args[3]) then -- [3] set when {{transliteration|code|standard|text}} args.text = args[3]; -- get the transliterated text args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing if not title_table[args.translit_std] then return make_error_msg (table.concat ({'unrecognized transliteration standard: ', args.translit_std}), args, 'Transliteration'); end else if is_set (args[2]) then -- [2] set when {{transliteration|code|text}} args.text = args[2]; -- get the transliterated text else if args[1] and (args[1]:match ('^%a%a%a?%a?$') or -- args[2] missing; is args[1] a language or script tag or is it the transliterated text? args[1]:match ('^%a%a%a?%-x%-')) then -- or is args[1] a private-use tag return make_error_msg ('no text', args, 'Transliteration'); -- args[1] is a code so we're missing text else args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message return make_error_msg ('missing language / script code', args, 'Transliteration'); end end end if is_set (args[1]) then -- IANA language code used for html lang= attribute; or ISO 15924 script code if args[1]:match ('^%a%a%a?%a?$') or args[1]:match ('^%a%a%a?%-x%-') then -- args[1] has correct form? args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case else return make_error_msg (table.concat ({'unrecognized language / script code: ', args[1]}), args, 'Transliteration'); -- invalid language / script code end else return make_error_msg ('missing language / script code', args, 'Transliteration'); -- missing language / script code so quit end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, 'Transliteration'); end if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default args.italic = nil; -- set to nil; end if override_table[args.code] then -- is code a language code defined in the override table? language_name = override_table[args.code]; args.code = args.code:match ('^%a%a%a?'); -- if private use, strip all but language subtag elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables? language_name = lang_table[args.code]; elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables? language_name = lang_dep_table[args.code]; elseif script_table[args.code] then -- if here, code is not a language code; is it a script code? language_name = script_table[args.code]; script = args.code; -- code was an ISO 15924 script so use that instead args.code = ''; -- unset because not a language code else return make_error_msg (table.concat ({'unrecognized language / script code: ', args.code}), args, 'Transliteration'); -- invalid language / script code end -- here only when all parameters passed to make_translit() are valid return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic); end --[[--------------------------< T R A N S L >------------------------------------------------------------------ Module entry point from an {{#invoke:}} ]] local function transl (frame) return _transl (getArgs(frame)); end --[[--------------------------< C A T E G O R Y _ F R O M _ T A G >-------------------------------------------- Returns category name associated with IETF language tag if valid; error message else All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Module entry point from another module ]] local function _category_from_tag (args_t) local subtags = {}; -- IETF subtags script, region, variant, and private local raw_code = args_t[1]; -- save a copy of the input IETF subtag local link = 'yes' == args_t.link; -- make a boolean local label = args_t.label; local code; -- the language code local msg; -- gets an error message if IETF language tag is malformed or invalid local category_name = ''; code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code); if msg then local template = (args_t.template and table.concat ({'{{', args_t.template, '}}: '})) or ''; -- make template name (if provided by the template) return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private category_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', ''); if link then return table.concat ({'[[:', category_name, ']]'}); else return category_name; end end --[[--------------------------< C A T E G O R Y _ F R O M _ T A G >-------------------------------------------- Module entry point from an {{#invoke:}} ]] local function category_from_tag (frame) -- entry point from an {{#invoke:Lang|category_from_tag|<ietf tag>|template=<template name>}} return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { category_from_tag = category_from_tag, lang = lang, -- entry point for {{lang}} lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}} lang_xx_italic = lang_xx_italic, is_ietf_tag = is_ietf_tag, is_ietf_tag_frame = is_ietf_tag_frame, is_lang_name = is_lang_name, tag_from_name = tag_from_name, -- returns ietf tag associated with language name name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates transl = transl, -- entry point for {{transliteration}} _category_from_tag = _category_from_tag, -- entry points when this module is require()d into other modules _lang = _lang, _lang_xx_inherit = _lang_xx_inherit, _lang_xx_italic = _lang_xx_italic, _is_ietf_tag = _is_ietf_tag, get_ietf_parts = get_ietf_parts, _tag_from_name = _tag_from_name, _name_from_tag = _name_from_tag, _transl = _transl, _translation_make = translation_make, }; b4bf37fa610695625e5f1ff5d33471dfaaf8af34 Template:Transliteration 10 435 942 2023-09-30T22:01:14Z Führerredux 2 Created page with "<includeonly>{{#invoke:Lang|transl}}</includeonly><noinclude> {{documentation}} </noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:Lang|transl}}</includeonly><noinclude> {{documentation}} </noinclude> cf981ec0dfa428550086604e3a81e36da231f3df Template:Transliteration/doc 10 436 943 2023-09-30T22:01:33Z Führerredux 2 Created page with "{{Documentation subpage}} {{Redirect|Template:Transl|the template for translated text|Template:Translation}} {{High use}} {{COinS safe|n}} {{Lua|Module:Lang}} {{Language templates}} This template is used to mark up text '''[[transliteration|transliterated]] or [[romanisation|romanised]]''' from a non-Latin alphabet script to Latin alphabet script. This template should only be used for the transliterations of non-Latin scripts; for non-English language text displayed in..." wikitext text/x-wiki {{Documentation subpage}} {{Redirect|Template:Transl|the template for translated text|Template:Translation}} {{High use}} {{COinS safe|n}} {{Lua|Module:Lang}} {{Language templates}} This template is used to mark up text '''[[transliteration|transliterated]] or [[romanisation|romanised]]''' from a non-Latin alphabet script to Latin alphabet script. This template should only be used for the transliterations of non-Latin scripts; for non-English language text displayed in its native script (such as Greek, Cyrillic and Arabic), {{tl|lang}} should be used, which tags non-transliterated text (written in original script). Transliteration is often used alongside that template, to allow non-readers of the script to interpret the text. This template adds a [[tooltip]] label naming the transliteration scheme, and renders text in [[italics]] by default. This template is important for [[MOS:ACCESSIBILITY]], as it invisibly tags text with the correct language, allowing for screenreaders to use the correct style of pronunciation. It also displays text in an appropriate font; romanisations marked up in {{tl|lang}} may display in fonts designed for that language's native text, whereas the transl template displays text in the same font as the rest of the article. Some languages, such as [[Chinese language|Chinese]], have more than one style of transliteration (such as [[Wade–Giles]], [[pinyin]], etc). This template can be used for these different transliteration schemes, though Wikipedia has a number of [[:Category:Wikipedia multilingual support templates|language-specific templates]], some of which support more than one transliteration styles in their parameters, that may be better suited for marking up transliterations. ==Example== The following code tags a Ukrainian name and its transliteration according to the Ukrainian National scheme. {{markup | <nowiki>{{lang|uk|Ярослав Рудницький}} ({{transliteration|uk|ukrainian|Yaroslav Rudnytskyi}})</nowiki> | {{lang|uk|Ярослав Рудницький}} ({{transliteration|uk|ukrainian|Yaroslav Rudnytskyi}}) }} ==Rationale== This template is intended to unify all "transliteration" templates, such as {{tl|IAST}} and {{tl|ISOtranslit}}. These templates are still usable, but they just transclude or are redirected back to <nowiki>{{transl}}</nowiki>. For example, (e.g. <code><nowiki>{{IAST|saṃskṛtam}}</nowiki></code> is a shortcut for <code><nowiki>{{transliteration|sa|IAST|saṃskṛtam}}</nowiki></code>. Other transliteration templates that once existed, such as {{tl|ArabDIN}}, are now handled natively by this template: <code><nowiki>{{transliteration|ar|DIN|...}}</nowiki></code>). This template is kept separate from {{tl|lang}} to address formatting issues (via CSS classes) and identification of transliteration schemes used. Ultimately, if these concerns are smartly addressed in the CSS file and/or in {{tl|lang}}, using <code><nowiki>{{transliteration|xx|...}}</nowiki></code> should be equivalent to using <code><nowiki>{{lang|xx-Latn|...}}</nowiki></code>. ==Usage== There are two ways of using this template: with or without specifying the [[romanization|transliteration scheme]] used: *two parameters, with [[ISO 639]] language code: <code><nowiki>{{transliteration|ar|al-Khwarizmi}}</nowiki></code> means that "al-Khwarizmi" is a transliteration from the Arabic in a loose or unspecified scheme. *two parameters, with [[ISO 15924]] script code: <code><nowiki>{{transliteration|Ogam|MAQI}}</nowiki></code> means that "MAQI" transliterates an [[Ogham]] inscription without specifying the language. Potentially useful when writing systems themselves are under discussion, e.g. <code><nowiki>{{transliteration|Cyrl|š}}</nowiki></code>, not <code><nowiki>{{transliteration|cu|š}}</nowiki></code> or <code><nowiki>{{transliteration|ru|š}}</nowiki></code> when discussing the letter {{script|Cyrl|[[Ш]]}}. *three parameters, with [[ISO 639]] language code: <code><nowiki>{{transliteration|ar|DIN|al-Ḫawārizmī}} / {{transliteration|ar|ALA|al-Khawārizmī}}</nowiki></code> the second parameter specifies the scheme used (DIN vs. ALA). *three parameters, with [[ISO 15924]] script code: <code><nowiki>{{transliteration|Arab|DIN|Ḫ}} vs {{transliteration|Arab|ALA|Kh}}</nowiki></code> for {{script|Arab|[[ﺥ]]}}. {{para|italic|no}} can be added to suppress the default italicization of Latin scripts; however, proper nouns – the names of people and places – are typically not italicized, and as such, generally do not require the use of a transliteration template. Note that there is no need to add italic markup (<code><nowiki>''</nowiki></code>) to transliteration templates. '''Note''': the language code is ISO 639 or IETF private-use tag (see [[Template:Lang#Private-use language tags]]); other forms of [[IETF BCP 47 language tag]]s are {{em|not}} supported. ===Transliteration scheme codes=== Codes for supported transliteration schemes can be seen by viewing the source of [[:Module:Lang/data]] – the {{code|translit_title_table}} data-structure lists for each such code the corresponding transliteration schemes. These may vary by language – e.g. code "ISO" means scheme [[ISO 233]] for Arabic but [[ISO 11940]] for Thai. ===Examples=== Inputting: *<code><nowiki>{{transliteration|ar|[[al-Khwarizmi]]}} / [[DIN 31635]]: {{transliteration|ar|DIN|al-Ḫawārizmī}} / [[ISO 233]]: {{transliteration|ar|ISO|al-H̱awārizmī}} / [[ALA-LC Romanization|ALA]]: {{transliteration|ar|ALA|al-Khawārizmī}}</nowiki></code> *<code><nowiki>[[Royal Thai General System of Transcription|RTGS]]: {{transliteration|th|phasa thai}} / [[ISO 11940]]: {{transliteration|th|ISO|p̣hās̄ʹāthịy}}</nowiki></code> *<code><nowiki>{{cuneiform|[[Sumerian language|&#x12174;&#x120a0;]]}} {{transliteration|sux|EME.GIR<sub>15</sub>}} / {{cuneiform|6|[[Hittite language|𒉈𒅆𒇷]]}} {{transliteration|hit|ne-ši-li}}</nowiki></code> Results in: *{{transliteration|ar|[[al-Khwarizmi]]}} / [[DIN 31635]]: {{transliteration|ar|DIN|al-Ḫawārizmī}} / [[ISO 233]]: {{transliteration|ar|ISO|al-H̱awārizmī}} / [[ALA-LC Romanization|ALA]]: {{transliteration|ar|ALA|al-Khawārizmī}} * [[Royal Thai General System of Transcription|RTGS]]: {{transliteration|th|phasa thai}} / [[ISO 11940]]: {{transliteration|th|ISO|p̣hās̄ʹāthịy}} *{{cuneiform|[[Sumerian language|&#x12174;&#x120a0;]]}} {{transliteration|sux|EME.GIR<sub>15</sub>}} / {{cuneiform|6|[[Hittite language|𒉈𒅆𒇷]]}} {{transliteration|hit|ne-ši-li}} '''ISO''': *{{lang|ru|[[Russian language|русский]]}} <code><nowiki>{{transliteration|ru|ISO|russkij}}</nowiki></code>: {{transliteration|ru|ISO|russkij}} *{{lang|ab|[[Abkhaz language|Аҧсуа]]}} <code><nowiki>{{transliteration|ab|ISO|aṗsua}}</nowiki></code>: {{transliteration|ab|ISO|aṗsua}} *{{lang|ar|[[Arabic| عربي ]]}} <code><nowiki>{{transliteration|ar|ISO|ʿarabī}}</nowiki></code>: {{transliteration|ar|ISO|ʿarabī}} *: ISO has huge issues transliterating {{transliteration|ar|alif}}, so it's better to use the Library of Congress transliteration, the [[DIN 31635|German Institute for Standardization]] or [[Hans Wehr transliteration]]; see [[Arabic transliteration]] and [[MOS:APOSTROPHE]] *{{lang|ta|[[Tamil language|தமிழ் ]]}} <code><nowiki>{{transliteration|ta|ISO|tamiḻ}}</nowiki></code>: {{transliteration|ta|ISO|tamiḻ}} *{{lang|bn|[[Bengali language|বাংলা ]]}} <code><nowiki>{{transliteration|bn|ISO|baṅla}}</nowiki></code>: {{transliteration|bn|ISO|baṅla}} *{{lang|el|[[Greek language|ελληνικά ]]}} <code><nowiki>{{transliteration|el|ISO|ellēniká}}</nowiki></code>: {{transliteration|el|ISO|ellēniká}} *{{lang|ka|[[Georgian language|ქართული]]}} <code><nowiki>{{transliteration|ka|ISO|k'art'uli}}</nowiki></code>: {{transliteration|ka|ISO|k'art'uli}} *{{lang|zh|[[Pinyin|漢語拼音]]}} <code><nowiki>{{transliteration|zh|ISO|hànyǔ pīnyīn}}</nowiki></code>: {{transliteration|zh|ISO|hànyǔ pīnyīn}} *{{lang|th|[[Thai language|ภาษาไทย]]}} <code><nowiki>{{transliteration|th|ISO|p̣hās̄ʹāthịy}}</nowiki></code>: {{transliteration|th|ISO|p̣hās̄ʹāthịy}} ==CSS== In order to apply a style to all text marked as transliteration, use a CSS selector that chooses all text with <code>transliteration</code> in the title attribute (tooltip). For instance, if you add the following to [[Special:MyPage/common.css|your common.css]], all transliterations will be colored {{color|teal}}: <syntaxhighlight lang="CSS"> [title~=transliteration] { color: teal; } </syntaxhighlight> ==Tracking category== * {{clc|Transliteration template errors}} ==TemplateData== {{templatedata header}} <templatedata> { "description": "Marks a text span transliterated from a particular language or writing system, and, optionally, according to a specific transliteration system.", "params": { "1": { "label": "Language or script code", "description": "ISO 639 language code (e.g., uk) or ISO 15924 script code (e.g., Cyrl)", "required": true, "type": "line" }, "2": { "label": "Text or transliteration scheme", "description": "Latin-alphabet transliterated text, or, optionally, transliteration scheme (e.g., bgn/pcgn)", "required": true, "type": "string" }, "3": { "label": "Text", "description": "Latin-alphabet transliterated text (required if a transliteration scheme is entered above)", "required": false, "suggested": true, "type": "string" } } } </templatedata> ==See also== *{{tl|lang}}, {{tl|language}} *{{tl|script}} * {{tl|trans}}, {{tl|translation}} *[[Romanization]] *[[List of ISO transliterations]] {{ISO 15924 script codes and related Unicode data|state=collapsed}} <includeonly>{{Sandbox other|| [[Category:Wikipedia multilingual support templates]] [[Category:Templates that add a tracking category]] }}</includeonly> 9eff20202df9880064bd01460f3d5f316b52a868 Philippines 0 437 945 2023-09-30T23:07:00Z Führerredux 2 Created page with "{{Infobox country | name = The Commonwealth of the Philippines }}" wikitext text/x-wiki {{Infobox country | name = The Commonwealth of the Philippines }} 96a089340cbe73c958118aa96774129bc53b983f 946 945 2023-09-30T23:12:50Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = The Commonwealth of the Philippines | native_name = Ang Karaniwan ng Pilipinas | capital = [[Manila]] | largest_city = capital | official_languages = Tagalog | demonym = Filipino | government_type = Puppet }} 95cff0b2988c051bc9a28e57f228587fdad9a117 947 946 2023-09-30T23:16:36Z Führerredux 2 Führerredux moved page [[Philipiness]] to [[Philippines]] wikitext text/x-wiki {{Infobox country | conventional_long_name = The Commonwealth of the Philippines | native_name = Ang Karaniwan ng Pilipinas | capital = [[Manila]] | largest_city = capital | official_languages = Tagalog | demonym = Filipino | government_type = Puppet }} 95cff0b2988c051bc9a28e57f228587fdad9a117 949 947 2023-09-30T23:20:17Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = The Commonwealth of the Philippines | native_name = Ang Karaniwan ng Pilipinas | capital = [[Manila]] | largest_city = capital | official_languages = Tagalog | demonym = Filipino | government_type = Puppet | overlord = [[The United States of America]] }} 530b1000281d7cfb6eb9b7b85e1a30c635a29ed3 951 949 2023-10-01T03:51:51Z Dax0102 32 wikitext text/x-wiki {{Infobox country | conventional_long_name = The Commonwealth of the Philippines | native_name = Komonwelt ng Pilipinas | capital = [[Manila]] | largest_city = capital | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Puppet | overlord = [[The United States of America]] }} 403ede7b58a07f14173326c19372a20eab4f09e9 953 951 2023-10-01T03:58:33Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | leader_name2 = [[Manuel Luis Quezon]] | conventional_long_name = The Commonwealth of the Philippines | native_name = Komonwelt ng Pilipinas | capital = [[Manila]] | largest_city = capital | englishmotto = For God, People, Nature, and Country | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Puppet | overlord = [[The United States of America]] }} 989f20870d647c3240d3e1921c226641644f0ea8 954 953 2023-10-01T03:59:10Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | leader_name2 = [[Manuel Luis Quezon]] | conventional_long_name = The Commonwealth of the Philippines | native_name = Komonwelt ng Pilipinas | capital = [[Manila]] | largest_city = capital | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Puppet | overlord = [[The United States of America]] }} b419072aac6fc247aa34d09736302c1409ac2da1 955 954 2023-10-01T04:03:10Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | leader_name2 = [[Manuel Luis Quezon]] | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag of the Philippines.svg | native_name = Komonwelt ng Pilipinas | capital = [[Manila]] | largest_city = [[Balintawak City (Quezon City OTL)]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Puppet | overlord = [[The United States of America]] }} d855b0e95e2d196f50e4746135c4a07150f765c5 957 955 2023-10-01T04:09:15Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | leader_name2 = [[Manuel Luis Quezon]] | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | native_name = Komonwelt ng Pilipinas | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | overlord = [[The United States of America]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} 12162d958ca1400efd3e5f7f664918cd73f01181 958 957 2023-10-01T04:11:29Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | leader_name2 = [[Manuel Luis Quezon]] | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | native_name = Komonwelt ng Pilipinas | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = Lupang Hinirang<br/><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:Philippine_hymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | overlord = [[The United States of America]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} fd8b7da9490b2c652be721983d16b08718a8b639 959 958 2023-10-01T04:11:44Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | leader_name2 = [[Manuel Luis Quezon]] | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | native_name = Komonwelt ng Pilipinas | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = Lupang Hinirang<br/><div style="display:inline-block;margin-top:0.4em;">{{center|[[Media:Philippine_hymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | overlord = [[The United States of America]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} b76598c42043d4566873f528ffdbc35e231a7a5b 960 959 2023-10-01T04:12:27Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | leader_name2 = [[Manuel Luis Quezon]] | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | native_name = Komonwelt ng Pilipinas | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = Lupang Hinirang<br/><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | overlord = [[The United States of America]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} d38a633238b28000811bd95a4902ef557846f639 961 960 2023-10-01T04:13:19Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | leader_name2 = [[Manuel Luis Quezon]] | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | native_name = Komonwelt ng Pilipinas | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<italic>Lupang Hinirang</italic>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | overlord = [[The United States of America]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} 1e551ac2bd300fbe84a6c8fc0bebdd6989a34209 962 961 2023-10-01T04:13:36Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | leader_name2 = [[Manuel Luis Quezon]] | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | native_name = Komonwelt ng Pilipinas | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | overlord = [[The United States of America]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} 666c3419692de86e1f782d8549e1151d003e94df 963 962 2023-10-01T04:14:51Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | leader_name2 = [[Manuel Luis Quezon]] | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | native_name = Komonwelt ng Pilipinas | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | overlord = [[The United States of America]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[High Commissioner of the Philippines]] | leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} 3a431a74dceb56a3785e10d1837b9f7c3841c614 964 963 2023-10-01T04:26:39Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | leader_name2 = [[Manuel Luis Quezon]] | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | native_name = Komonwelt ng Pilipinas | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | overlord = [[The United States of America]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[High Commissioner of the Philippines]] | leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. 86db0ea99db9fd4d1c2a83a460d35b0cb08b3b26 Philipiness 0 438 948 2023-09-30T23:16:36Z Führerredux 2 Führerredux moved page [[Philipiness]] to [[Philippines]] wikitext text/x-wiki #REDIRECT [[Philippines]] d3a2186ad33203913e8f93c11ac0637678b842af Template:Infobox country/doc 10 245 950 544 2023-09-30T23:29:17Z Führerredux 2 wikitext text/x-wiki {{#ifeq:{{{nested|no}}}|no|{{documentation subpage}}{{hatnote|{{tl|Infobox geopolitical organisation}} and {{tl|Infobox former country}} redirect here; related parameters and examples are included below.}}}} {{High-use}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}} {{Uses TemplateStyles|Template:Infobox country/styles.css}} This infobox template is used to generate an infobox for the right-hand side of two specific types of article: on a country or territory, or on a geopolitical organisation. Parameter syntax and examples are detailed in the collapsed sections immediately below. __FORCETOC__ == Syntax == <!---------------------- Country/territory use ----------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox country |micronation = <!--yes if a micronation--> |conventional_long_name = <!--Formal or official full name of the country in English--> |native_name = <!--Country's name (usually full name) in its official/defacto language(s), hence in italics (double quotemarks)--> |common_name = <!--Common name in English (used for wikilinks, captions, and to produce a default iso3166 code)--> |status = <!--Status of country, especially useful for micronations--> |image_flag = <!--e.g. Flag of country.svg--> |alt_flag = <!--alt text for flag (text shown when pointer hovers over flag)--> |flag_border = <!--set to no to disable border around the flag--> |image_flag2 = <!--e.g. Second-flag of country.svg--> |alt_flag2 = <!--alt text for second flag--> |flag2_border = <!--set to no to disable border around the flag--> |image_coat = <!--e.g. Coat of arms of country.svg--> |alt_coat = <!--alt text for coat of arms--> |symbol_type = <!--emblem, seal, etc (if not a coat of arms)--> |national_motto = <!--in inverted commas and wikilinked if link exists--> |englishmotto = <!--English language version of motto--> |national_anthem = <!--in inverted commas and wikilinked if link exists--> |royal_anthem = <!--in inverted commas and wikilinked if link exists--> |other_symbol_type = <!--Use if a further symbol exists, e.g. hymn--> |other_symbol = |image_map = <!--e.g. LocationCountry.svg--> |loctext = <!--text description of location of country--> |alt_map = <!--alt text for map--> |map_caption = <!--Caption to place below map--> |image_map_size = <!--Map size in number of pixels--> |image_map2 = <!--Another map, if required--> |alt_map2 = <!--alt text for second map--> |map_caption2 = <!--Caption to place below second map--> |image_map2_size = <!--Map size in number of pixels--> |capital = <!--Name of country/territory's capital, wikilinked if link exists--> |coordinates = <!-- Coordinates for capital, using {{tl|coord}} --> |largest_city = <!--Name of country/territory's largest city. Use "capital" (without quotation marks) if it's the capital.--> |largest_settlement_type = <!--Type of settlement if largest settlement not a city--> |largest_settlement = <!--Name of largest settlement--> |overlord = <!--Name of Overlord wikilinked--> |official_languages = <!--Languages recognised in legislation, constitution, etc--> |national_languages = <!--Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc--> |regional_languages = <!--Languages recognised or associated with particular regions within the country/territory--> |languages_type = <!--Use to specify a further type of language, if not official, national or regional--> |languages = <!--Languages of the further type--> |languages_sub = <!--Is this further type of language a sub-item of the previous non-sub type? ("yes" or "no")--> |languages2_type = <!--Another further type of language--> |languages2 = <!--Languages of this second further type--> |languages2_sub = <!--Is the second alternative type of languages a sub-item of the previous non-sub type? ("yes" or "no")--> |ethnic_groups = <!--List/breakdown of ethnic groups within the country/territory--> |ethnic_groups_year = <!--Year of ethnic groups data (if provided)--> |ethnic_groups_ref = <!--(for any ref/s to associate with ethnic groups data)--> |religion = <!--Religion--> |religion_year = <!--Year of religion data (if provided)--> |religion_ref = <!--(for any ref/s to associate with religion data)--> |demonym = <!--Term/s describing those associated with the country/territory (e.g. "Belgian" for the country Belgium)--> |government_type = <!--Wikilinked if link exists--> |leader_title1 = <!--(for a country, usually the head of state's (wikilinked) title, e.g. "President", "Monarch")--> |leader_name1 = |leader_title2 = <!--(could be "Vice President", otherwise "Prime Minster", etc, etc)--> |leader_name2 = |leader_title14 = <!--(up to 14 distinct leaders may be included)--> |leader_name14 = |legislature = <!--Name of the country/territory's governing body, e.g. "Parliament", "Congress", etc--> |upper_house = <!--Name of governing body's upper house, if given (e.g. "Senate")--> |lower_house = <!--Name of governing body's lower house, if given (e.g. "Chamber of Deputies")--> |sovereignty_type = <!--Brief description of country/territory's status ("Independence [from...]", "Autonomous province [of...]", etc)--> |sovereignty_note = |established_event1 = <!--First key event in history of country/territory's status or formation--> |established_date1 = <!--Date of first key event--> |established_event2 = <!--Second key event--> |established_date2 = <!--Date of second key event--> |established_event13 = <!--(up to 13 distinct events may be included)--> |established_date13 = |area_rank = |area = <!--Major area size (in [[Template:convert]] either km2 or sqmi first)--> |area_km2 = <!--Major area size (in square km)--> |area_sq_mi = <!--Area in square mi (requires area_km2)--> |area_footnote = <!--Optional footnote for area--> |percent_water = |area_label = <!--Label under "Area" (default is "Total")--> |area_label2 = <!--Label below area_label (optional)--> |area_data2 = <!--Text after area_label2 (optional)--> |population_estimate = |population_estimate_rank = |population_estimate_year = |population_census = |population_census_year = |population_density_km2 = |population_density_sq_mi = |population_density_rank = |nummembers = <!--An alternative to population for micronation--> |GDP_PPP = <!--(Gross Domestic Product from Purchasing Power Parity)--> |GDP_PPP_rank = |GDP_PPP_year = |GDP_PPP_per_capita = |GDP_PPP_per_capita_rank = |GDP_nominal = |GDP_nominal_rank = |GDP_nominal_year = |GDP_nominal_per_capita = |GDP_nominal_per_capita_rank = |Gini = <!--(Gini measure of income inequality; input number only; valid values are between 0 and 100)--> |Gini_ref = <!--(for any ref/s to associate with Gini number)--> |Gini_rank = |Gini_year = |HDI_year = <!-- Please use the year to which the data refers, not the publication year--> |HDI = <!--(Human Development Index; input number only; valid values are between 0 and 1)--> |HDI_change = <!--increase/decrease/steady; rank change from previous year--> |HDI_rank = |HDI_ref = <!--(for any ref/s to associate with HDI number)--> |currency = <!--Name/s of currency/ies used in country/territory--> |currency_code = <!--ISO 4217 code/s for currency/ies (each usually three capital letters)--> |time_zone = <!--e.g. GMT, PST, AST, etc, etc (wikilinked if possible)--> |utc_offset = <!--in the form "+N", where N is number of hours offset--> |time_zone_DST = <!--Link to DST (Daylight Saving Time) used, otherwise leave empty--> |utc_offset_DST = <!--in the form "+N", where N is number of hours offset--> |DST_note = <!--Optional note regarding DST use--> |antipodes = <!--Place/s exactly on the opposite side of the world to country/territory--> |date_format = <!--all-numeric date format and era, such as [[Common Era|CE]], [[Anno Domini|AD]], [[Hijri year|AH]], etc.; e.g. {{abbr|yyyy|year}}-{{abbr|mm|month}}-{{abbr|dd|day}} ([[Anno Domini|AD]]) --> |drives_on = <!--"right" or "left" (side of road)--> |cctld = <!--Internet country code top-level domain identifier (e.g. [[.br]], [[.de]], etc)--> |iso3166code = <!--ISO code only; no extra text. Use to override default from common_name parameter above; omit using "omit".--> |calling_code = <!--e.g. [[+1]], [[+531]], [[+44]], etc--> |patron_saint = <!--Use patron_saints for multiple--> |image_map3 = <!--Optional third map position, e.g. for use with reference to footnotes below it--> |alt_map3 = <!--alt text for third map position--> |footnote_a = <!--For any footnote <sup>a</sup> used above--> |footnote_b = <!--For any footnote <sup>b</sup> used above--> |footnote_h = <!--For any footnote <sup>h</sup> used above--> |footnotes = <!--For any generic non-numbered footnotes--> }} </syntaxhighlight> {{hidden end}} {{hidden begin |toggle=left|title=France-specific parameters}}<!--(France-specific parameters)--> Note: Now redundant. <syntaxhighlight lang="wikitext"> |metropole = |metropole_area = |metropole_area_rank = |metropole_area_magnitude = |metropole_areami² = |metropole_population = |metropole_population_estimate_rank = |foot = |foot2 = |foot3 = |foot4 = |foot5 = </syntaxhighlight> <!--(France-specific parameters)--> {{smaller|* If, on a particular page, the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use ''flag_width'' (as % or px) to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included).}} {{hidden end}} <!------------------------- Geopolitical use --------------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox geopolitical organization |name = <!-- (in English) --> |native_name = <!-- Long-form name in native or any/all non-English languages --> |linking_name = <!-- For wikilinks, if diff from name --> |image_flag = <!-- Flag image's filename --> |alt_flag = <!-- alt text for flag--> |flag_border = <!--set to no to disable border around the flag--> |symbol_type = <!-- Symbol, Emblem, Logo, etc. --> |image_symbol = <!-- Symbol image's filename --> |alt_symbol = <!-- alt text for symbol --> |symbol_width = <!-- Symbol image's width (default 85px) --> |motto = <!-- "[motto]" --> |englishmotto = <!--English language version of motto--> |anthem = <!-- ''[anthem name]'' --> |text_symbol_type = <!-- for other types of text symbol --> |text_symbol = <!-- e.g. ''[hymn name]'' --> |image_map = <!-- Map image's filename --> |loctext = <!--text description of location of organization--> |alt_map = <!-- alt text for map image --> |map_width = <!-- Map image's width (default 250px) --> |map_caption = |org_type = <!-- e.g. Trade bloc --> |membership_type = <!-- (default "Membership") --> |membership = <!-- Type/s and/or number/s of members --> |admin_center_type = <!-- e.g. "Administrative center" (default) --> |admin_center = <!-- Location/s of administrative center/s --> |languages_type = <!-- e.g. "[[Official language]]s" (default) --> |languages = |leader_title1 = <!-- e.g. "Chair", "President", etc. --> |leader_name1 = |leader_title2 = <!-- e.g. "Deputy chair", etc. --> |leader_name2 = |leader_title14 = |leader_name14 = |established = <!-- Usually a date, in lieu of event/s hereafter --> |established_event1 = |established_date1 = |established_event2 = |established_date2 = |established_event9 = |established_date9 = |official_website = |area_km2 = <!-- major area size (in sq_km) --> |area_sq_mi = <!-- area in square mi (requires area_km2) --> |area_footnote = <!-- optional footnote for area --> |percent_water = |area_label = <!-- label under "Area" (default is "Total") --> |area_label2 = <!-- label below area_label (optional) --> |area_dabodyalign = <!-- text after area_label2 (optional) --> |population_estimate = |population_estimate_year = |population_density_km2 = |population_density_sq_mi = |GDP_PPP = |GDP_PPP_rank = |GDP_PPP_year = |GDP_PPP_per_capita = |GDP_nominal = |GDP_nominal_year = |GDP_nominal_per_capita = |Gini = <!-- number only, 0-100 --> |Gini_ref = <!-- for any ref/s to associate with Gini number --> |Gini_year = |HDI = <!-- number only, 0-1 --> |HDI_ref = <!-- for any ref/s to associate with HDI number --> |HDI_year = |currency = |currency_code = |time_zone = |utc_offset = <!-- +N, where N is number of hours --> |footnote1 = |footnote2 = |footnote7 = |footnotes = <!-- For generic non-numbered footnotes --> }} </syntaxhighlight> {{hidden end}} <!-------------------- Former country use ----------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox former country |native_name = <!-- Name in a modern syntax of native language(s). Leave blank if name is only in English. Separate with line breaks<br/> or use Template:Plainlist. If language uses Latin characters, place name(s) in italics. --> |conventional_long_name = <!-- Full name in English --> |common_name = <!-- Name to be used in constructing links and category names; not for display --> |iso3166code = omit <!-- For a country or geopolitical version of a country that ceased to exist prior to the introduction of iso3166--> |era = <!-- Use: "Napoleonic Wars", "Cold War", etc. --> |status = <!-- Status: see Category list on template page --> |status_text = <!-- A free text to describe status at the top of the infobox. Use sparingly. --> |empire = <!-- The empire or country to which the entity was in a state of dependency --> |government_type = <!-- To generate categories: "Monarchy", "Republic", etc. to generate categories --> <!-- Rise and fall, events, years and dates --> <!-- only fill in the start/end event entry if a specific article exists. Don't just say "abolition" or "declaration" --> |event_start = <!-- Default: "Established" --> |date_start = <!-- Optional: Date of establishment, in format 1 January (no year) --> |year_start = <!-- Year of establishment --> |event_end = <!-- Default: "Disestablished" --> |date_end = <!-- Optional: Date of disestablishment, in format 1 January (no year) --> |year_end = <!-- Year of disestablishment --> |year_exile_start = <!-- Year of start of exile (if dealing with exiled government: status="Exile") --> |year_exile_end = <!-- Year of end of exile (leave blank if still in exile) --> |event1 = <!-- Optional: other events between "start" and "end" --> |date_event1 = |event2 = |date_event2 = |event3 = |date_event3 = |event4 = |date_event4 = |event5 = |date_event5 = |event6 = |date_event6 = |event_pre = <!-- Optional: A crucial event that took place before "event_start" --> |date_pre = |event_post = <!-- Optional: A crucial event that took place after "event_end" --> |date_post = <!-- Flag navigation: Preceding and succeeding entities p1 to p5 and s1 to s5 --> |p1 = <!-- Name of the article for preceding entity, numbered 1-5 --> |flag_p1 = <!-- Default: "Flag of {{{p1}}}.svg" (size 30) --> |image_p1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] --> |p2 = |flag_p2 = |p3 = |flag_p3 = |p4 = |flag_p4 = |p5 = |flag_p5 = |s1 = <!-- Name of the article for succeeding entity, numbered 1-5 --> |flag_s1 = <!-- Default: "Flag of {{{s1}}}.svg" (size 30) --> |image_s1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] --> |s2 = |flag_s2 = |s3 = |flag_s3 = |s4 = |flag_s4 = |s5 = |flag_s5 = |image_flag = <!-- Default: Flag of {{{common_name}}}.svg --> |flag_alt = <!-- Alt text for flag --> |image_flag2 = <!-- Second flag --> |flag_alt2 = <!-- Alt text for second flag --> |flag = <!-- Link target under flag image. Default: Flag of {{{common_name}}} --> |flag2 = <!-- Link target under flag2 image. Default: Flag of {{{common_name}}} --> |flag_type = <!-- Displayed text for link under flag. Default "Flag" --> |flag2_type = <!-- Displayed text for link under flag2. Default "Flag" --> |image_coat = <!-- Default: Coat of arms of {{{common_name}}}.svg --> |coa_size = <!-- Size of coat of arms --> |coat_alt = <!-- Alt text for coat of arms --> |symbol_type = <!-- Displayed text for link under symbol. Default "Coat of arms" --> |symbol_type_article = <!-- Link target under symbol image. Default: Coat of arms of {{{common_name}}} --> |image_map = |image_map_size = <!--Map size in number of pixels--> |image_map_alt = |image_map_caption = |image_map2 = <!-- If second map is needed; does not appear by default --> |image_map2_size = <!--Map size in number of pixels--> |image_map2_alt = |image_map2_caption = |capital = |capital_exile = <!-- If status="Exile" --> |national_motto = |national_anthem = |common_languages = |religion = |demonym = |currency = <!-- Titles and names of the first and last leaders and their deputies --> |leader1 = <!-- Name of king or president --> |leader2 = |leader3 = |leader4 = |leader21 = <!--(up to 21 distinct leaders may be included)--> |year_leader1 = <!-- Years served --> |year_leader2 = |year_leader3 = |year_leader4 = |year_leader21 = |title_leader = <!-- Default: "King" for monarchy, otherwise "President" --> |representative1 = <!-- Name of representative of head of state (e.g. colonial governor) --> |representative2 = |representative3 = |representative4 = |representative5 = |year_representative1 = <!-- Years served --> |year_representative2 = |year_representative3 = |year_representative4 = |year_representative5 = |title_representative = <!-- Default: "Governor" --> |deputy1 = <!-- Name of prime minister --> |deputy2 = |deputy3 = |deputy4 = |year_deputy1 = <!-- Years served --> |year_deputy2 = |year_deputy3 = |year_deputy4 = |title_deputy = <!-- Default: "Prime minister" --> <!-- Legislature --> |legislature = <!-- Name of legislature --> |house1 = <!-- Name of first chamber --> |type_house1 = <!-- Default: "Upper house" --> |house2 = <!-- Name of second chamber --> |type_house2 = <!-- Default: "Lower house" --> <!-- Area and population of a given year --> |stat_year1 = <!-- year of the statistic, specify either area, population or both --> |stat_area1 = <!-- area in square kilometres (w/o commas or spaces); area in square miles is calculated --> |stat_pop1 = <!-- population (w/o commas or spaces) --> |stat_year2 = |stat_area2 = |stat_pop2 = |stat_year3 = |stat_area3 = |stat_pop3 = |stat_year4 = |stat_area4 = |stat_pop4 = |stat_year5 = |stat_area5 = |stat_pop5 = |today = <!-- Present-day countries that overlap with the territorial extent of the former country. Do not use this parameter if there are more than four such countries. --><!-- Do NOT add flags, per MOS:INFOBOXFLAG --> |footnote_a = <!-- Accepts wikilinks --> |footnote_b = <!-- Accepts wikilinks --> ... |footnote_h = <!-- Accepts wikilinks --> |footnotes = <!-- Accepts wikilinks --> }} </syntaxhighlight> {{hidden end}} == Examples == <!------------------ Country/territory example -------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}} {{Infobox country |conventional_long_name = Republic of Cameroon |native_name = {{lang|fr|République du Cameroun}} |common_name = Cameroon |image_flag = Flag of Cameroon.svg |alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red. |image_coat = Coat of arms of Cameroon.svg |symbol_type = Coat of arms |image_map = Cameroon (orthographic projection).svg |alt_map = Location of Cameroon on the globe. |national_motto = <br/>{{native phrase|fr|"Paix &ndash; Travail &ndash; Patrie"|italics=off}}<br/>{{small|"Peace &ndash; Work &ndash; Fatherland"}} |national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}}&nbsp;{{lower|0.1em|<sup>a</sup>}}}} |official_languages = {{hlist |[[French language|French]] |[[English language|English]]}} |demonym = Cameroonian |ethnic_groups = {{unbulleted list | {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}} | 19% [[Bantu peoples|Equatorial Bantu]] | 11% [[Kirdi]] | 10% [[Fula people|Fulani]] | {{0|0}}8% [[Bantu peoples|Northwestern Bantu]] | {{0|0}}7% Eastern Nigritic | 13% other African | &lt;1% non-African }} |capital = [[Yaoundé]] |coordinates = {{coord|3|52|N|11|31|E}} |largest_city = [[Douala]] |government_type = [[Republic]] |leader_title1 = [[List of heads of state of Cameroon|President]] |leader_name1 = [[Paul Biya]] |leader_title2 = [[Prime Minister of Cameroon|Prime Minister]] |leader_name2 = [[Philémon Yang]] |legislature = [[National Assembly (Cameroon)|National Assembly]] |area_rank = 54th <!--Demographic Yearbook 1.--> |area_km2 = 475,442 |area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 1.3 <!--CIA World Factbook--> |population_estimate = 20,129,878 |population_estimate_rank = 58th <!--UN World Population Prospects--> |population_estimate_year = July 2012 |population_census = 17,463,836 |population_census_year = 2005 |population_density_km2 = 39.7 |population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]--> |population_density_rank = 167th <!--UN World Population Prospects--> |GDP_PPP = $47.251&nbsp;billion |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $2,257 |GDP_PPP_per_capita_rank = |GDP_nominal = $25.759&nbsp;billion |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $1,230 |sovereignty_type = Independence {{nobold|from [[France]]}} |established_event1 = Declared |established_date1 = 1 January 1960 |established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}} |established_date2 = 1 October 1961 |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.482 <!--number only--> |HDI_ref = |HDI_rank = 150th |Gini_year = 2001 |Gini_change = <!--increase/decrease/steady--> |Gini = 44.6 <!--number only--> |Gini_ref = |Gini_rank = |currency = [[Central African CFA franc]] |currency_code = XAF |time_zone = [[West Africa Time|WAT]] |utc_offset = +1 |time_zone_DST = |utc_offset_DST = |drives_on = right |calling_code = [[+237]] |cctld = [[.cm]] |footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61. }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox country |conventional_long_name = Republic of Cameroon |native_name = {{lang|fr|République du Cameroun}} |common_name = Cameroon |image_flag = Flag of Cameroon.svg |alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red. |image_coat = Coat of arms of Cameroon.svg |symbol_type = Coat of arms |image_map = Cameroon (orthographic projection).svg |alt_map = Location of Cameroon on the globe. |national_motto = <br/>{{native phrase|fr|"Paix &ndash; Travail &ndash; Patrie"|italics=off}}<br/>{{small|"Peace &ndash; Work &ndash; Fatherland"}} |national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}}&nbsp;{{lower|0.1em|<sup>a</sup>}}}} |official_languages = {{hlist |[[French language|French]] |[[English language|English]]}} |demonym = Cameroonian |ethnic_groups = {{unbulleted list | {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}} | 19% [[Bantu peoples|Equatorial Bantu]] | 11% [[Kirdi]] | 10% [[Fula people|Fulani]] | {{0|0}}8% [[Bantu peoples|Northwestern Bantu]] | {{0|0}}7% Eastern Nigritic | 13% other African | &lt;1% non-African }} |capital = [[Yaoundé]] |coordinates = {{coord|3|52|N|11|31|E}} |largest_city = [[Douala]] |government_type = [[Republic]] |leader_title1 = [[List of heads of state of Cameroon|President]] |leader_name1 = [[Paul Biya]] |leader_title2 = [[Prime Minister of Cameroon|Prime Minister]] |leader_name2 = [[Philémon Yang]] |legislature = [[National Assembly (Cameroon)|National Assembly]] |area_rank = 54th <!--Demographic Yearbook 1.--> |area_km2 = 475,442 |area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 1.3 <!--CIA World Factbook--> |population_estimate = 20,129,878 |population_estimate_rank = 58th <!--UN World Population Prospects--> |population_estimate_year = July 2012 |population_census = 17,463,836 |population_census_year = 2005 |population_density_km2 = 39.7 |population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]--> |population_density_rank = 167th <!--UN World Population Prospects--> |GDP_PPP = $47.251&nbsp;billion |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $2,257 |GDP_PPP_per_capita_rank = |GDP_nominal = $25.759&nbsp;billion |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $1,230 |sovereignty_type = Independence {{nobold|from [[France]]}} |established_event1 = Declared |established_date1 = 1 January 1960 |established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}} |established_date2 = 1 October 1961 |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.482 <!--number only--> |HDI_ref = |HDI_rank = 150th |Gini_year = 2001 |Gini_change = <!--increase/decrease/steady--> |Gini = 44.6 <!--number only--> |Gini_ref = |Gini_rank = |currency = [[Central African CFA franc]] |currency_code = XAF |time_zone = [[West Africa Time|WAT]] |utc_offset = +1 |time_zone_DST = not observed |utc_offset_DST = +1 |drives_on = right |calling_code = [[+237]] |cctld = [[.cm]] |footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61. }} </syntaxhighlight> {{hidden end}} <!-------------- Geopolitical organization example ---------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}} {{Infobox geopolitical organization |name = {{collapsible list |titlestyle = background:transparent;text-align:center;font-size:85%; |title = {{resize|130%|European Union}} |liststyle = text-align:center; | {{smaller|{{native name|bg|Европейски съюз}}<br/><!-- -->{{native name|hr|Europska unija}}<br/><!-- -->{{native name|cs|Evropská unie}}<br/><!-- -->{{native name|da|Den Europæiske Union}}<br/><!-- -->{{native name|nl|Europese Unie}}<br /><!-- -->{{native name|et|Euroopa Liit}}<br/><!-- -->{{native name|fi|Euroopan unioni}}<br/><!-- -->{{native name|fr|Union européenne}}<br/><!-- -->{{native name|de|Europäische Union}}<br/><!-- -->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!-- -->{{native name|hu|Európai Unió}}<br/><!-- -->{{native name|ga|An tAontas Eorpach}}<br/><!-- -->{{native name|it|Unione europea}}<br/><!-- -->{{native name|lv|Eiropas Savienība}}<br/><!-- -->{{native name|lt|Europos Sąjunga}}<br/><!-- -->{{native name|mt|Unjoni Ewropea}}<br/><!-- -->{{native name|pl|Unia Europejska}}<br/><!-- -->{{native name|pt|União Europeia}}<br/><!-- -->{{native name|ro|Uniunea Europeană}}<br/><!-- -->{{native name|sk|Európska únia}}<br/><!-- -->{{native name|sl|Evropska unija}}<br/><!-- -->{{native name|es|Unión Europea}}<br/><!-- -->{{native name|sv|Europeiska unionen}}<!-- -->}} }} |linking_name = Europe |image_flag = Flag of Europe.svg |alt_flag = Circle of 12 gold stars on a blue background |motto = "[[Motto of the European Union|United in diversity]]" |anthem = <div style="padding-bottom:0.2em;">"[[Anthem of Europe|Ode to Joy]]"&nbsp;&nbsp;{{small|(orchestral)}}</div>[[File:Anthem of Europe (US Navy instrumental short version).ogg|center]] |image_map = EU Globe No Borders.svg |map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green). |map_width = 220px |admin_center_type = Political centres |admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}} |largest_city = [[London]] |official_languages = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = [[Languages of the European Union|24 languages]] | {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}} }} |demonym = [[Citizenship of the European Union|European]] |membership_type = [[Member state of the European Union|Member state]]s |membership = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = 27 states |{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}} |{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}} |{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}} |{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}} |{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}} |{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}} |{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}} |{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}} |{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}} }} |leader_title1 = [[President of the European Council|President of the European Council]] |leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}} |leader_title2 = [[President of the European Commission|President of the Commission]] |leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}} |legislature = [[Legislature of the European Union]] |upper_house = {{nowrap|[[Council of the European Union]]}} |lower_house = [[European Parliament]] |established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]] |established_date1 = 23 July 1952 |established_event2 = [[Treaty of Rome]] |established_date2 = 1 January 1958 |established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}} |established_date3 = 1 November 1993 |official_website = {{URL|europa.eu}} |area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]--> |area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 3.08 |population_estimate = 507,890,191 |population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |population_estimate_year = 2012 |population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)--> |population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)--> |population_density_rank = <!--Calculated by taking out EU members from the list--> <!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011--> |GDP_PPP = $15.821 trillion |GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $31,607<!--same ref as above--> |GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal = $17.577 trillion |GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $35,116 |GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |Gini_year = 2010 |Gini_change = <!--increase/decrease/steady--> |Gini = 30.4 <!--number only--> |Gini_ref = |Gini_rank = |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.876 <!--number only--> |HDI_ref = |HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list--> |currency = {{(!}} cellspacing="0" cellpadding="0" {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}} {{!-}} style="height: 22px;" ! {{flagicon|EU}} ! [[Euro]] ! [[Euro sign|€]] ! [[ISO 4217|EUR]] {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Bulgaria}} {{!}} [[Bulgarian lev|Lev]] {{!}} лв {{!}} [[ISO 4217|BGN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Croatia}} {{!}} [[Croatian kuna|Kuna]] {{!}} kn {{!}} [[ISO 4217|HRK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Czech Republic}} {{!}} [[Czech koruna|Koruna]] {{!}} Kč {{!}} [[ISO 4217|CZK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Denmark}} {{!}} [[Danish krone|Krone]] {{!}} kr {{!}} [[ISO 4217|DKK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Hungary}} {{!}} [[Hungarian forint|Forint]] {{!}} Ft {{!}} [[ISO 4217|HUF]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Latvia}} {{!}} [[Latvian lats|Lats]] {{!}} Ls {{!}} [[ISO 4217|LVL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Lithuania}} {{!}} [[Lithuanian litas|Litas]] {{!}} Lt {{!}} [[ISO 4217|LTL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Poland}} {{!}} [[Polish złoty|Złoty]] {{!}} zł {{!}} [[ISO 4217|PLN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Romania}} {{!}} [[Romanian Leu|Leu]] {{!}} L {{!}} [[ISO 4217|RON]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Sweden}} {{!}} [[Swedish krona|Krona]] {{!}} kr {{!}} [[ISO 4217|SEK]] {{!)}} |time_zone = |utc_offset = +0 to +2 |time_zone_DST = |utc_offset_DST = +1 to +3 |date_format = |cctld = [[.eu]] |calling_code = [[Telephone numbers in the European Union|27 codes]] |footnote_a = If considered as a single entity. }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox geopolitical organization |name = {{collapsible list |titlestyle = background:transparent;text-align:center;font-size:85%; |title = {{resize|130%|European Union}} |liststyle = text-align:center; | {{smaller|{{native name|bg|Европейски съюз}}<br/><!-- -->{{native name|hr|Europska unija}}<br/><!-- -->{{native name|cs|Evropská unie}}<br/><!-- -->{{native name|da|Den Europæiske Union}}<br/><!-- -->{{native name|nl|Europese Unie}}<br /><!-- -->{{native name|et|Euroopa Liit}}<br/><!-- -->{{native name|fi|Euroopan unioni}}<br/><!-- -->{{native name|fr|Union européenne}}<br/><!-- -->{{native name|de|Europäische Union}}<br/><!-- -->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!-- -->{{native name|hu|Európai Unió}}<br/><!-- -->{{native name|ga|An tAontas Eorpach}}<br/><!-- -->{{native name|it|Unione europea}}<br/><!-- -->{{native name|lv|Eiropas Savienība}}<br/><!-- -->{{native name|lt|Europos Sąjunga}}<br/><!-- -->{{native name|mt|Unjoni Ewropea}}<br/><!-- -->{{native name|pl|Unia Europejska}}<br/><!-- -->{{native name|pt|União Europeia}}<br/><!-- -->{{native name|ro|Uniunea Europeană}}<br/><!-- -->{{native name|sk|Európska únia}}<br/><!-- -->{{native name|sl|Evropska unija}}<br/><!-- -->{{native name|es|Unión Europea}}<br/><!-- -->{{native name|sv|Europeiska unionen}}<!-- -->}} }} |linking_name = Europe |image_flag = Flag of Europe.svg |alt_flag = Circle of 12 gold stars on a blue background |motto = "[[Motto of the European Union|United in diversity]]" |anthem = <div style="padding-bottom:0.2em;">''[[Anthem of Europe|Ode to Joy]]''&nbsp;&nbsp;{{small|(orchestral)}}</div>{{center|[[File:Anthem of Europe (US Navy instrumental short version).ogg]]}} |image_map = EU Globe No Borders.svg |map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green). |map_width = 220px |admin_center_type = Political centres |admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}} |largest_city = [[London]] |official_languages = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = [[Languages of the European Union|24 languages]] | {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}} }} |demonym = [[Citizenship of the European Union|European]] |membership_type = [[Member state of the European Union|Member state]]s |membership = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = 27 states |{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}} |{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}} |{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}} |{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}} |{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}} |{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}} |{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}} |{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}} |{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}} }} |leader_title1 = [[President of the European Council|President of the European Council]] |leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}} |leader_title2 = [[President of the European Commission|President of the Commission]] |leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}} |legislature = [[Legislature of the European Union]] |upper_house = {{nowrap|[[Council of the European Union]]}} |lower_house = [[European Parliament]] |established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]] |established_date1 = 23 July 1952 |established_event2 = [[Treaty of Rome]] |established_date2 = 1 January 1958 |established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}} |established_date3 = 1 November 1993 |official_website = {{URL|europa.eu}} |area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]--> |area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 3.08 |population_estimate = 507,890,191 |population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |population_estimate_year = 2012 |population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)--> |population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)--> |population_density_rank = <!--Calculated by taking out EU members from the list--> <!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011--> |GDP_PPP = $15.821 trillion |GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $31,607 |GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal = $17.577 trillion |GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $35,116 |GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |Gini_year = 2010 |Gini_change = <!--increase/decrease/steady--> |Gini = 30.4 <!--number only--> |Gini_ref = |Gini_rank = |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.876 <!--number only--> |HDI_ref = |HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list--> |currency = {{(!}} cellspacing="0" cellpadding="0" {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}} {{!-}} style="height: 22px;" ! {{flagicon|EU}} ! [[Euro]] ! [[Euro sign|€]] ! [[ISO 4217|EUR]] {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Bulgaria}} {{!}} [[Bulgarian lev|Lev]] {{!}} лв {{!}} [[ISO 4217|BGN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Croatia}} {{!}} [[Croatian kuna|Kuna]] {{!}} kn {{!}} [[ISO 4217|HRK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Czech Republic}} {{!}} [[Czech koruna|Koruna]] {{!}} Kč {{!}} [[ISO 4217|CZK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Denmark}} {{!}} [[Danish krone|Krone]] {{!}} kr {{!}} [[ISO 4217|DKK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Hungary}} {{!}} [[Hungarian forint|Forint]] {{!}} Ft {{!}} [[ISO 4217|HUF]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Latvia}} {{!}} [[Latvian lats|Lats]] {{!}} Ls {{!}} [[ISO 4217|LVL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Lithuania}} {{!}} [[Lithuanian litas|Litas]] {{!}} Lt {{!}} [[ISO 4217|LTL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Poland}} {{!}} [[Polish złoty|Złoty]] {{!}} zł {{!}} [[ISO 4217|PLN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Romania}} {{!}} [[Romanian Leu|Leu]] {{!}} L {{!}} [[ISO 4217|RON]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Sweden}} {{!}} [[Swedish krona|Krona]] {{!}} kr {{!}} [[ISO 4217|SEK]] {{!)}} |time_zone = |utc_offset = +0 to +2 |time_zone_DST = |utc_offset_DST = +1 to +3 |date_format = |cctld = [[.eu]] |calling_code = [[Telephone numbers in the European Union|27 codes]] |footnote_a = If considered as a single entity. }} </syntaxhighlight> {{hidden end}} <!------------------ Former country example -------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}} {{Infobox former country |native_name = ''Deutsches Reich'' |conventional_long_name = German Empire |common_name = Germany |iso3166code = omit |status = Empire |era = [[New Imperialism]]/[[World War I|WWI]] |event_start = [[Unification of Germany|Unification]] |date_start = 18 January |year_start = 1871 |event_end = [[German Revolution of 1918–1919|Republic declared]] |date_end = 9 November |year_end = 1918 |event_post = Formal abdication |date_post = 28 November 1918 |p1 = North German Confederation |flag_p1 = Flag of the German Empire.svg |p2 = Kingdom of Bavaria |flag_p2 = Flag of Bavaria (striped).svg |p3 = Kingdom of Württemberg |flag_p3 = Flagge Königreich Württemberg.svg |p4 = Grand Duchy of Baden |flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg |p5 = Grand Duchy of Hesse |flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg |p6 = Alsace-Lorraine |flag_p6 = Flag of France.svg |s1 = Weimar Republic |s2 = Republic of Alsace-Lorraine |s3 = Free City of Danzig |s4 = Second Polish Republic |s5 = Klaipėda Region |s6 = Saar (League of Nations) |s7 = Hlučín Region |s8 = South Jutland County{{!}}Northern Schleswig |s9 = Eupen-Malmedy |flag_s1 = Flag of Germany (3-2 aspect ratio).svg |flag_s2 = Flag of the Republic of Alsace-Lorraine.svg |flag_s3 = Gdansk flag.svg |flag_s4 = Flag of Poland.svg |flag_s5 = Flag of Lithuania 1918-1940.svg |flag_s6 = Flag of Saar 1920-1935.svg |flag_s7 = Flag of Bohemia.svg |flag_s8 = Flag of Denmark.svg |flag_s9 = Flag of Belgium.svg |image_flag = Flag of the German Empire.svg |flag_alt = Horizontal tricolor (black, white, red) |flag_caption = Flag of the German Empire |image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg |symbol_type = Imperial Coat of arms |coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons. |image_map = German Empire, Wilhelminian third version.svg |image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland |image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]] |national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}} |national_anthem = {{plainlist| * ''(none official)'' * "[[Heil dir im Siegerkranz]]" (Imperial) * "[[Deutschlandlied]]" (popular) * "[[Die Wacht am Rhein]]" (unofficial) }} |capital = Berlin |common_languages = ;Official language :[[German language|German]] ;Unofficial minority languages :[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]] ;Colonial languages :[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies) :[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay) :[[Papuan languages]] (German New Guinea) :[[Samoan language|Samoan]] (German Samoa) |government_type = Constitutional monarchy |title_leader = [[German Emperor|Emperor]] |leader1 = [[William I, German Emperor|William I]] |year_leader1 = 1871–1888 |leader2 = [[Frederick III, German Emperor|Frederick III]] |year_leader2 = 1888 |leader3 = [[Wilhelm II, German Emperor|Wilhelm II]] |year_leader3 = 1888–1918 |title_deputy = [[List of Chancellors of Germany|Chancellor]] |deputy1 = [[Otto von Bismarck]] (first) |year_deputy1 = 1871–1890 |deputy2 = [[Friedrich Ebert]] (last) |year_deputy2 = 8–9 Nov 1918 |legislature = [[Reichstag (German Empire)|Reichstag]] |house1 = [[Reichsrat (Germany)|Reichsrat]] |type_house1 = State council |stat_year1 = 1871 |religion = {{plainlist| * [[Lutherans]]~60% * [[Roman Catholics]]~40% }} |stat_pop1 = {{formatnum:41058792}} |stat_year2 = 1890 |stat_pop2 = {{formatnum:49428470}} |stat_year4 = 1910 |stat_pop4 = {{formatnum:64925993}} |stat_area4 = 540857.54 |currency = {{plainlist| * [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}} * [[German gold mark|Goldmark]] {{small|(1873–1914)}} * [[German Papiermark|Papiermark]] {{small|(after 1914)}} }} |footnotes = Area and population not including colonial possessions |today = }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox former country |native_name = ''Deutsches Reich'' |conventional_long_name = German Empire |common_name = Germany |iso3166code = omit |status = Empire |era = [[New Imperialism]]/[[World War I|WWI]] |event_start = [[Unification of Germany|Unification]] |date_start = 18 January |year_start = 1871 |event_end = [[German Revolution of 1918–1919|Republic declared]] |date_end = 9 November |year_end = 1918 |event_post = Formal abdication |date_post = 28 November 1918 |p1 = North German Confederation |flag_p1 = Flag of the German Empire.svg |p2 = Kingdom of Bavaria |flag_p2 = Flag of Bavaria (striped).svg |p3 = Kingdom of Württemberg |flag_p3 = Flagge Königreich Württemberg.svg |p4 = Grand Duchy of Baden |flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg |p5 = Grand Duchy of Hesse |flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg |p6 = Alsace-Lorraine |flag_p6 = Flag of France.svg |s1 = Weimar Republic |s2 = Republic of Alsace-Lorraine |s3 = Free City of Danzig |s4 = Second Polish Republic |s5 = Klaipėda Region |s6 = Saar (League of Nations) |s7 = Hlučín Region |s8 = South Jutland County{{!}}Northern Schleswig |s9 = Eupen-Malmedy |flag_s1 = Flag of Germany (3-2 aspect ratio).svg |flag_s2 = Flag of the Republic of Alsace-Lorraine.svg |flag_s3 = Gdansk flag.svg |flag_s4 = Flag of Poland.svg |flag_s5 = Flag of Lithuania 1918-1940.svg |flag_s6 = Flag of Saar 1920-1935.svg |flag_s7 = Flag of Bohemia.svg |flag_s8 = Flag of Denmark.svg |flag_s9 = Flag of Belgium.svg |image_flag = Flag of the German Empire.svg |flag_alt = Horizontal tricolor (black, white, red) |flag_caption = Flag of the German Empire |image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg |symbol_type = Imperial Coat of arms |coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons. |image_map = German Empire, Wilhelminian third version.svg |image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland |image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]] |national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}} |national_anthem = {{plainlist| * ''(none official)'' * "[[Heil dir im Siegerkranz]]" (Imperial) * "[[Deutschlandlied]]" (popular) * "[[Die Wacht am Rhein]]" (unofficial) }} |capital = Berlin |common_languages = ;Official language :[[German language|German]] ;Unofficial minority languages :[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]] ;Colonial languages :[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies) :[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay) :[[Papuan languages]] (German New Guinea) :[[Samoan language|Samoan]] (German Samoa) |government_type = Constitutional monarchy |title_leader = [[German Emperor|Emperor]] |leader1 = [[William I, German Emperor|William I]] |year_leader1 = 1871–1888 |leader2 = [[Frederick III, German Emperor|Frederick III]] |year_leader2 = 1888 |leader3 = [[Wilhelm II, German Emperor|Wilhelm II]] |year_leader3 = 1888–1918 |title_deputy = [[List of Chancellors of Germany|Chancellor]] |deputy1 = [[Otto von Bismarck]] (first) |year_deputy1 = 1871–1890 |deputy2 = [[Friedrich Ebert]] (last) |year_deputy2 = 8–9 Nov 1918 |legislature = [[Reichstag (German Empire)|Reichstag]] |house1 = [[Reichsrat (Germany)|Reichsrat]] |type_house1 = State council |stat_year1 = 1871 |religion = {{plainlist| * [[Lutherans]]~60% * [[Roman Catholics]]~40% }} |stat_pop1 = {{formatnum:41058792}} |stat_year2 = 1890 |stat_pop2 = {{formatnum:41058792}} |stat_year4 = 1910 |stat_pop4 = {{formatnum:41058792}} |stat_area4 = 540857.54 |currency = {{plainlist| * [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}} * [[German gold mark|Goldmark]] {{small|(1873–1914)}} * [[German Papiermark|Papiermark]] {{small|(after 1914)}} }} |footnotes = Area and population not including colonial possessions |today = }} </syntaxhighlight> {{hidden end}} == Errors == If the template generates errors when calculating data for the Gini or HDI fields, it will add the article to [[:Category:Country articles requiring maintenance]]. This only happens if the page is in the [[WP:MAINSPACE|main article space]], not any other [[WP:NAMESPACE|namespaces]]. == Microformat == {{UF-hcard-place}} == Tracking categories == * {{clc|Country articles requiring maintenance}} * {{clc|Pages using infobox country with unknown parameters}} * {{clc|Pages using infobox country with syntax problems}} * {{clc|Pages using infobox country or infobox former country with the flag caption or type parameters}} * {{clc|Pages using infobox country or infobox former country with the symbol caption or type parameters}} * {{clc|Former country articles using status text with Colony or Exile}} == TemplateData == {{TemplateData header}} {{collapse top|title=TemplateData}} <templatedata> { "description": "This template produces an infobox for countries that covers their major attributes such as their flags, ethnic makeup, and political system.", "format": "{{_\n| ______________________ = _\n}}\n", "params": { "conventional_long_name": { "label": "Conventional long name", "type": "string", "required": false, "description": "Formal or official full name of the country in English. This entry should not be enclosed in brackets.", "example": "The United States of America" }, "common_name": {}, "linking_name": {}, "native_name": { "label": "Native name", "type": "string", "required": false, "example": "{{native name|Bundesrepublik Deutschland}}", "description": "Country's name (usually full name) in its native language, hence in italics (double quotemarks). The template {{native name}} should be used with this parameter to automatically italicize the text." }, "name": { "label": "Geopolitical organisation name", "type": "string", "required": false, "description": "Name of the geopolitical organisation in English." }, "overlord" : { "label": "Overlord", "type": "string", "required": false, "description": "Name of the Overlord if any, wiki-linked" }, "image_flag": { "label": "Flag", "type": "wiki-file-name", "required": false, "example": "Flag of Iceland.svg", "description": "File name of an image file on Wikipedia or on Commons that contains the country's current flag. Do not enclose this entry in double brackets and do not give it a prefix such as File:" }, "flag_width": { "label": "Flag width", "type": "string", "required": false, "description": "If the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use this to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included). Can be done as a % or px." }, "alt_flag": { "label": "Flag alt text", "type": "string", "required": false, "description": "Alternate text for flag (text shown when pointer hovers over flag)." }, "flag_border": { "label": "Flag border", "type": "string", "required": false, "description": "Set to no to disable border around the flag." }, "flag_caption": { "label": "Flag caption", "type": "string", "required": false, "description": "Use this parameter to enter a caption for the flag, if one is necessary. Do not end this entry with a period.", "example": "1992 version of the flag prior to the country's dissolution" }, "image_flag2": { "label": "Second flag", "type": "wiki-file-name", "required": false, "example": "Secondflag of Namibia.svg", "description": "If a country has a second flag— perhaps because of an ongoing civil war or a dispute over sovereignty— you can provide the file name of that second flag in this parameter. Do not include the prefix File:, and do not enclose it in double brackets." }, "alt_flag2": { "label": "Second flag alt text", "type": "string", "required": false, "description": "Alt text for second flag (text shown when pointer hovers over flag)." }, "flag2_border": { "label": "Second flag border", "type": "string", "required": false, "description": "Set to no to disable border around the flag." }, "image_coat": { "label": "Coat of arms", "type": "wiki-file-name", "aliases": [ "image_symbol" ], "example": "Great Seal of the United States (obverse).svg" }, "symbol_width": { "label": "Symbol width", "type": "string", "required": false, "description": "Symbol image's width.", "default": "85px" }, "alt_coat": { "label": "Coat of arms alt text", "type": "string", "aliases": [ "alt_symbol", "coat_alt" ], "required": false, "description": "Alt text for coat of arms." }, "symbol_type": { "label": "Symbol type", "type": "string", "required": false, "description": "If not a coat of arms.", "example": "emblem, seal, etc" }, "symbol_type_article": { "label": "Symbol type article", "type": "string", "description": "An article about the type of symbol of the country" }, "text_symbol": { "label": "Text symbol", "type": "string", "required": false, "description": "For other types of text symbol.", "example": "''[hymn name]''" }, "text_symbol_type": { "label": "Text symbol type", "type": "string", "required": false, "description": "For other types of text symbol." }, "other_symbol": { "label": "Other symbol", "type": "string", "required": false, "description": "Use if a further symbol exists." }, "other_symbol_type": { "label": "Other symbol type", "type": "string", "required": false }, "national_motto": { "label": "National motto", "type": "string", "required": false, "example": "{{lang|de|''{{lang|de|[[Das Lied der Deutschen|Einigkeit und Recht und Freiheit]]}}''}}", "description": "In inverted commas and wikilinked if link exists. Can also be used with the {{lang}} template and correct two-letter language code to designate the language of the motto where not provided in English." }, "motto": { "label": "Motto", "type": "string", "required": false }, "national_anthem": { "label": "National anthem", "type": "string", "required": false, "description": "In inverted commas and wikilinked if link exists." }, "anthem": { "label": "Anthem", "type": "string", "required": false }, "royal_anthem": { "label": "Royal anthem", "type": "string", "required": false, "description": "In inverted commas and wikilinked if link exists." }, "image_map": { "label": "Map", "type": "string", "required": false, "example": "LocationCountry.svg" }, "map_width": { "label": "Map width", "type": "string", "required": false, "description": "Map image's width.", "default": "250px" }, "alt_map": { "label": "Map alt text", "type": "string", "required": false }, "map_caption": { "label": "Map caption", "type": "string", "required": false, "description": "Caption to place below map." }, "image_map2": { "label": "Map 2", "type": "string", "required": false, "description": "Another map, if required." }, "map2_width": { "label": "Map 2 width", "type": "string", "required": false }, "alt_map2": { "label": "Map 2 alt text", "type": "string", "required": false }, "map_caption2": { "label": "Map 2 caption", "type": "string", "required": false, "description": "Caption to place below second map." }, "image_map3": {}, "map3_width": {}, "alt_map3": {}, "map_caption3": {}, "capital": { "label": "Capital", "type": "string", "required": false, "description": "Name of country/territory's capital, wikilinked if link exists." }, "capital_type": { "label": "Capital type", "type": "string", "required": false }, "coordinates": { "label": "Coordinates", "type": "string", "required": false, "description": "The geographic coordinates of the capital." }, "latd": { "label": "Latitude degrees", "type": "string", "required": false, "description": "The degrees of the capital's latitude." }, "latm": { "label": "Latitude minutes", "type": "string", "description": "The minutes of the capital's latitude." }, "latNS": { "label": "Latitude NS", "type": "string", "description": "The direction of the capital's latitude." }, "longd": { "label": "Longitude degrees", "type": "string", "description": "The degrees of the capital's longitude." }, "longm": { "label": "Longitude minutes", "type": "string", "description": "The minutes of the capital's longitude." }, "longEW": { "label": "Longitude EW", "type": "string", "description": "The direction of the capital's longitude." }, "admin_center": { "label": "Administrative center", "type": "string", "required": false, "description": "Location/s of administrative center/s." }, "admin_center_type": { "label": "Administrative center type", "type": "string", "required": false, "default": "Administrative center" }, "capital2": { "label": "Capital 2", "type": "string", "required": false, "description": "Name of country/territory's capital, wikilinked if link exists." }, "capital_type2": { "label": "Capital 2 type", "type": "string", "required": false }, "admin_center2": { "label": "Administrative center 2", "type": "string", "required": false }, "admin_center_type2": { "label": "Administrative center 2 type", "type": "string", "required": false }, "largest_city": { "label": "Largest city", "type": "string", "required": false, "description": "Name of country/territory's largest city. Use \"capital\" (without quotemarks) if it's the capital." }, "largest_settlement": { "label": "Largest settlement", "type": "string", "required": false, "description": "Name of largest settlement if not a city." }, "largest_settlement_type": { "label": "Largest settlement type", "type": "string", "required": false, "description": "Type of settlement if largest settlement not a city." }, "official_languages": { "label": "Official languages", "type": "string", "required": false, "description": "Languages recognised in legislation, constitution, etc." }, "national_languages": { "label": "National languages", "type": "string", "required": false, "description": "Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc." }, "regional_languages": { "label": "Regional languages", "type": "string", "required": false, "description": "Languages recognised or associated with particular regions within the country/territory." }, "languages_type": { "label": "Languages type", "type": "string", "description": "Use to specify a further type of language, if not official, national or regional." }, "languages_sub": { "label": "Languages sub", "type": "string", "required": false, "description": "Is this further type of language a sub-item of the previous non-sub type?", "example": "'yes' or 'no'" }, "languages": { "label": "Languages", "type": "string", "required": false, "description": "Languages of the further type." }, "languages2_type": { "label": "2nd languages type", "type": "string", "description": "Use to specify a 2nd further type of language, if not official, national or regional." }, "languages2_sub": { "label": "Languages 2 sub", "type": "string", "required": false, "description": "Is the second alternative type of languages a sub-item of the previous non-sub type?", "example": "'yes or 'no'" }, "languages2": { "label": "Languages 2", "type": "string", "required": false, "description": "Languages of the second further type." }, "ethnic_groups": { "label": "Ethnic groups", "type": "string", "required": false, "description": "The primary ethnic groups of the country", "example": "{{unbulleted list | 68.8% [[Bumiputera (Malaysia)|Bumiputera]] | 23.2% [[Malaysian Chinese|Chinese]] | &nbsp;7.0% [[Malaysian Indian|Indian]] | &nbsp;1.0% Others }}" }, "ethnic_groups_ref": { "label": "Ethnic groups reference", "type": "string", "required": false, "description": "Reference, in <ref> format, of ethnic composition" }, "ethnic_groups_year": { "label": "Ethnic groups year", "type": "number", "required": false, "description": "Year the ethnic group statistic is from", "example": "2017" }, "religion": { "label": "Religions", "type": "string", "required": false, "description": "List of religious affiliations in {{ublist}} format", "example": "{{ublist|list_style=line-height:1.3em; |class=nowrap | 33.2% [[Buddhism in Singapore|Buddhism]]...}}" }, "religion_ref": { "label": "Religions reference", "type": "string", "required": false, "description": "Reference, in <ref> format, of religious composition" }, "demonym": { "label": "Demonym", "type": "string", "required": false, "description": "Name of residents of this country", "example": "Singaporean", "suggested": true }, "org_type": { "label": "Organization type", "type": "string", "required": false }, "membership": { "label": "membership", "type": "string", "required": false }, "membership_type": { "label": "membership_type", "type": "string", "required": false }, "government_type": { "label": "Type of government", "type": "string", "required": false, "description": "The type of government, e.g. federal republic", "example": "[[Monarchy]]" }, "politics_link": { "label": "Politics link", "type": "string", "required": false }, "leader_title1": { "label": "Leader 1 title", "type": "line", "required": false, "description": "Title of principal leader", "example": "[[President of Singapore|President]]" }, "leader_name1": { "label": "Leader 1 name", "type": "line", "required": false, "description": "Name of principal leader", "example": "[[Halimah Yacob]]" }, "leader_title2": { "label": "Leader 2 title", "type": "line", "required": false, "description": "Title of 2nd leader", "example": "[[Prime Minister of Singapore|Prime Minister]]" }, "leader_name2": { "label": "Leader 2 name", "type": "line", "description": "Name of 2nd leader", "example": "[[Lee Hsien Loong]]" }, "leader_title3": { "label": "Leader 3 title", "type": "line", "required": false, "description": "Title of 3rd leader", "example": "[[Deputy Prime Minister of Singapore|Deputy Prime Ministers]]" }, "leader_name3": { "label": "Leader 3 name", "type": "line", "description": "Name of 3rd leader", "example": "[[Teo Chee Hean]]<br>[[Tharman Shanmugaratnam]]" }, "leader_title4": { "label": "Leader 4 title", "type": "line", "required": false, "description": "Title of the 4th leader", "example": "[[President pro tempore of the United States Senate|President pro tempore]]" }, "leader_name4": { "label": "Leader 4 name", "type": "line", "description": "Name of the 4th leader" }, "leader_title5": { "label": "leader_title5", "type": "string", "required": false }, "leader_name5": { "label": "Leader name 5", "type": "string" }, "leader_title6": { "label": "Leader title 6", "type": "string", "required": false }, "leader_name6": { "label": "Leader name 6", "type": "string" }, "leader_title7": { "label": "Leader title7", "type": "string", "required": false }, "leader_name7": { "label": "Leader name 7", "type": "string" }, "leader_title8": { "label": "Leader title 8", "type": "string", "required": false }, "leader_name8": { "label": "Leader name 8", "type": "string" }, "leader_title9": { "label": "Leader title 9", "type": "string", "required": false }, "leader_name9": { "label": "Leader name 9", "type": "string" }, "leader_title10": { "label": "Leader title 10", "type": "string", "required": false }, "leader_name10": { "label": "Leader name 10", "type": "string" }, "leader_title11": { "label": "Leader title 11", "type": "string", "required": false }, "leader_name11": { "label": "Leader name 11", "type": "string" }, "leader_title12": { "label": "Leader title 12", "type": "string", "required": false }, "leader_name12": { "label": "Leader name 12", "type": "string" }, "leader_title13": { "label": "Leader title 13", "type": "string", "required": false }, "leader_name13": { "label": "Leader name 13", "type": "string" }, "leader_title14": { "label": "Leader title 14", "type": "string", "required": false }, "leader_name14": { "label": "Leader name 14", "type": "string" }, "legislature": { "label": "Legislature", "type": "line", "description": "Name of, and link to, the country's national legislature", "example": "[[Parliament of Singapore|Parliament]]" }, "upper_house": { "description": "Upper house of the country or organization's legislature", "type": "string", "example": "[[United States House of Representatives|House of Representatives]]" }, "lower_house": { "description": "Lower house of the country or organization's legislature", "label": "Lower house", "type": "string", "example": "[[United States House of Representatives|House of Representatives]]" }, "sovereignty_type": { "label": "Sovereignty type", "type": "line", "required": false, "description": "Type of sovereignty this country has", "example": "Independence" }, "sovereignty_note": { "label": "Sovereignty note", "type": "content", "required": false, "description": "Note about this country's sovereignty", "example": "from the [[United Kingdom]]" }, "established": { "label": "established", "type": "string", "required": false }, "established_event1": { "label": "Establishment event 1", "type": "string", "required": false }, "established_date1": { "label": "Establishment date 1", "type": "string", "required": false }, "established_event2": { "label": "Establishment event 2", "type": "string", "required": false }, "established_date2": { "label": "Establishment date 2", "type": "string", "required": false }, "established_event3": { "label": "Establishment event 3", "type": "string", "required": false }, "established_date3": { "label": "Establishment date 3", "type": "string", "required": false }, "established_event4": { "label": "Establishment event 4", "type": "string", "required": false }, "established_date4": { "label": "established_date4", "type": "string", "required": false }, "established_event5": { "label": "Establishment event 5", "type": "string", "required": false }, "established_date5": { "label": "established_date5", "type": "string", "required": false }, "established_event6": { "label": "established_event6", "type": "string", "required": false }, "established_date6": { "label": "established_date6", "type": "string", "required": false }, "established_event7": { "label": "established_event7", "type": "string", "required": false }, "established_date7": { "label": "established_date7", "type": "string", "required": false }, "established_event8": { "label": "established_event8", "type": "string", "required": false }, "established_date8": { "label": "established_date8", "type": "string", "required": false }, "established_event9": { "label": "established_event9", "type": "string", "required": false }, "established_date9": { "label": "established_date9", "type": "string", "required": false }, "established_event10": { "label": "established_event10", "type": "string", "required": false }, "established_date10": { "label": "established_date10", "type": "string", "required": false }, "established_event11": { "label": "established_event11", "type": "string", "required": false }, "established_date11": { "label": "established_date11", "type": "string", "required": false }, "established_event12": { "label": "established_event12", "type": "string", "required": false }, "established_date12": { "label": "established_date12", "type": "string", "required": false }, "area_km2": { "label": "Land area (km²)", "type": "number", "required": false, "description": "Land area of the country in square kilometers", "example": "722.5", "suggested": true }, "area_link": { "label": "area_link", "type": "string", "required": false }, "area_label": { "label": "area_label", "type": "string", "required": false }, "FR_foot4": { "label": "FR_foot4", "type": "string", "required": false, "deprecated": true }, "area_footnote": { "label": "area_footnote", "type": "string", "required": false }, "area_rank": { "label": "Area rank", "type": "string", "required": false, "description": "Rank among countries of land area", "example": "174th", "suggested": true }, "area_sq_mi": { "label": "Land area (mi²)", "type": "number", "required": false, "description": "Land area of the country in square miles", "example": "290" }, "percent_water": { "label": "percent_water", "type": "string", "required": false }, "area_label2": { "label": "area_label2", "type": "string", "required": false }, "area_data2": { "label": "area_data2", "type": "string", "required": false }, "area_label3": { "label": "area_label3", "type": "string", "required": false }, "area_data3": { "label": "area_data3", "type": "string", "required": false }, "FR_metropole": { "label": "FR_metropole", "type": "string", "required": false, "deprecated": true }, "FR_foot2": { "label": "FR_foot2", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_km2": { "label": "FR_IGN_area_km2", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_rank": { "label": "FR_IGN_area_rank", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_sq_mi": { "label": "FR_IGN_area_sq_mi", "type": "string", "required": false, "deprecated": true }, "FR_foot3": { "label": "FR_foot3", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_km2": { "label": "FR_cadastre_area_km2", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_rank": { "label": "FR_cadastre_area_rank", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_sq_mi": { "label": "FR_cadastre_area_sq_mi", "type": "string", "required": false, "deprecated": true }, "population_estimate": { "label": "Population estimate", "type": "number", "required": false, "description": "An estimate of the country's population", "example": "24,000,000" }, "population_census": { "label": "Population census", "type": "string" }, "population_link": { "label": "Population link", "type": "url" }, "population_estimate_year": { "label": "Population estimate year", "type": "number", "description": "The year the population estimate is from", "example": "2018" }, "population_estimate_rank": { "label": "Population estimate rank", "type": "string", "description": "Rank among countries in estimated population", "example": "3rd" }, "population_label2": { "label": "population_label2", "type": "string", "required": false }, "population_data2": { "label": "Population data 2", "type": "string", "required": false }, "population_label3": { "label": "Population label 3", "type": "string", "required": false }, "population_data3": { "label": "Population data 3", "type": "string", "required": false }, "population_census_year": { "label": "Population census year", "type": "number", "required": false, "description": "Year the population census statistics are from", "example": "2010" }, "population_census_rank": { "label": "Population census rank", "type": "string", "description": "Rank among countries in census population", "example": "3rd" }, "population_density_km2": { "label": "Population density per km²", "type": "number", "example": "20,212", "description": "Population density per square kilometer" }, "population_density_sq_mi": { "label": "Population density per mi²", "type": "number", "description": "Population density per square mile", "example": "20,212" }, "pop_den_footnote": { "label": "Population density footnote", "type": "string", "description": "footnote about the population density statistic" }, "population_density_rank": { "label": "Population density rank", "type": "string", "required": false, "description": "Rank among countries in population density", "example": "3rd" }, "FR_metropole_population": { "label": "FR_metropole_population", "type": "string", "required": false, "deprecated": true }, "FR_total_population_estimate_year": { "label": "FR_total_population_estimate_year", "type": "string", "deprecated": true }, "FR_foot": { "label": "FR_foot", "type": "string", "deprecated": true }, "FR_total_population_estimate": { "label": "FR_total_population_estimate", "type": "string", "deprecated": true }, "FR_total_population_estimate_rank": { "label": "FR_total_population_estimate_rank", "type": "string", "deprecated": true }, "FR_metropole_population_estimate_rank": { "label": "FR_metropole_population_estimate_rank", "type": "string", "deprecated": true }, "FR_foot5": { "label": "FR_foot5", "type": "string", "required": false, "deprecated": true }, "GDP_PPP": { "label": "GDP (PPP)", "type": "line", "required": false, "description": "Gross domestic product (purchasing power parity)", "example": "$554.855 billion", "suggested": true }, "GDP_PPP_year": { "label": "GDP (PPP) year cited", "type": "number", "required": false, "description": "Year the GDP (PPP) statistic is cited from", "example": "2018", "suggested": true }, "GDP_PPP_rank": { "label": "GDP (PPP) rank", "type": "string", "required": false, "description": "Rank among countries for GDP PPP", "example": "39th" }, "GDP_PPP_per_capita": { "label": "GDP_PPP_per_capita", "type": "line", "required": false, "description": "Gross domestic product (purchasing power parity) per capita", "example": "$98,014" }, "GDP_PPP_per_capita_rank": { "label": "GDP (PPP) per capita rank", "type": "line", "required": false, "description": "Rank among countries for GDP PPP per capita", "example": "3rd" }, "GDP_nominal": { "label": "GDP (nominal)", "type": "string", "required": false, "description": "Nominal GDP of the country" }, "GDP_nominal_year": { "label": "GDP (nominal) year", "type": "number", "required": false, "description": "Year cited for the country's nominal GDP statistic" }, "GDP_nominal_rank": { "label": "GDP (nominal) rank", "type": "string", "required": false, "description": "Rank among countries for nominal GDP", "example": "41st" }, "GDP_nominal_per_capita": { "label": "GDP (nominal) per capita", "type": "string", "required": false, "description": "Nominal GDP per capita in the country", "example": "$61,766" }, "GDP_nominal_per_capita_rank": { "label": "GDP (nominal) per capita rank", "type": "string", "required": false, "description": "Rank among countries for nominal GDP per capita", "example": "8th" }, "Gini": { "label": "Gini index", "type": "number", "required": false, "description": "Gini index of the country", "example": "46.4" }, "Gini_year": { "label": "Gini index year cited", "type": "number", "required": false, "description": "Year the gini index statistic is cited for", "example": "2014" }, "Gini_change": { "label": "Gini change", "type": "string", "required": false, "description": "\"increase\" or \"decrease\" (over last year)", "example": "increase" }, "Gini_ref": { "label": "Gini index reference", "type": "line", "required": false, "description": "Reference for cited Gini index statistic" }, "Gini_rank": { "label": "Gini rank", "type": "string", "required": false, "description": "Rank of Gini indices", "example": "30th" }, "HDI": { "label": "Human development index", "type": "number", "required": false, "example": "0.932", "suggested": true, "description": "The country's human development index (HDI)" }, "HDI_year": { "label": "Human Development Index year", "type": "number", "required": false, "description": "Year to which the HDI statistic refers", "example": "2017", "suggested": true }, "HDI_change": { "label": "HDI change", "type": "string", "required": false, "description": "\"increase\" or \"decrease\" from previous year", "example": "increase" }, "HDI_ref": { "label": "Human Development Index reference", "type": "line", "required": false, "description": "Reference for HDI statistic" }, "HDI_rank": { "label": "Human development index rank", "type": "string", "required": false, "description": "Rank among countries for HDI score", "example": "9th" }, "currency": { "label": "Currency", "type": "line", "required": false, "description": "National/official currency name and article link", "example": "[[Singapore dollar]]" }, "currency_code": { "label": "Currency code", "type": "line", "required": false, "description": "Currency code of the official currency", "example": "SGD" }, "time_zone": { "label": "Time zone", "type": "line", "required": false, "description": "National time zone(s)", "example": "[[Singapore Standard Time|SST]]" }, "utc_offset": { "label": "UTC offsets", "type": "string", "example": "−4 to −12, +10, +11" }, "utc_offset_DST": { "label": "UTF offsets (DST)", "type": "string", "example": "−4 to −10" }, "DST_note": { "label": "DST note", "type": "string", "example": "{{efn|name=\"time\"}}" }, "time_zone_DST": { "label": "Time zones (DST)", "type": "string", "required": false }, "DST": { "label": "Daylight savings time", "type": "string", "required": false }, "antipodes": { "label": "antipodes", "type": "string", "required": false }, "date_format": { "label": "Date format", "type": "string", "required": false }, "drives_on": { "label": "drives on", "type": "string", "required": false }, "rail gauge": { "label": "Rail gauge", "type": "string", "required": false }, "calling_code": { "label": "Calling code", "type": "string", "example": "+1" }, "patron_saint": { "label": "Patron saint", "aliases": [ "patron_saints" ], "type": "string", "required": false }, "iso3166code": { "label": "ISO 3166 code", "type": "string", "description": "ISO 3166 code for the country", "example": "US" }, "cctld": { "label": "Country code top level domain", "type": "string", "example": ".se" }, "official_website": { "label": "official_website", "type": "string", "required": false, "description": "For geopolitical entities: do not use government website (e.g. usa.gov) for countries (e.g. [[United States]])." }, "footnote_a": { "label": "footnote_a", "type": "string", "required": false }, "footnote_b": { "label": "footnote_b", "type": "string", "required": false }, "footnote_c": { "label": "footnote_c", "type": "string", "required": false }, "footnote_d": { "label": "footnote_d", "type": "string", "required": false }, "footnote_e": { "label": "footnote_e", "type": "string", "required": false }, "footnote_f": { "label": "footnote_f", "type": "string", "required": false }, "footnote_g": { "label": "footnote_g", "type": "string", "required": false }, "footnote_h": { "label": "footnote_h", "type": "string", "required": false }, "footnote1": { "label": "footnote1", "type": "string", "required": false }, "footnote2": { "label": "footnote2", "type": "string", "required": false }, "footnote3": { "label": "footnote3", "type": "string", "required": false }, "footnote4": { "label": "footnote4", "type": "string", "required": false }, "footnote5": { "label": "footnote5", "type": "string", "required": false }, "footnote6": { "label": "footnote6", "type": "string", "required": false }, "footnote7": { "label": "footnote7", "type": "string", "required": false }, "footnote8": { "label": "footnote8", "type": "string", "required": false }, "footnotes": { "label": "footnotes", "type": "string", "required": false }, "navbar": { "label": "navbar", "type": "string", "required": false }, "micronation": {}, "status": { "type": "line" }, "status_text": { "type": "line" }, "empire": {}, "year_end": { "type": "number" }, "year_exile_start": { "type": "number" }, "year_exile_end": { "type": "number" }, "life_span": { "type": "line" }, "year_start": { "type": "number" }, "flag_size": { "type": "line" }, "flag_alt": { "type": "string" }, "flag_alt2": { "type": "string" }, "flag_type": { "type": "string" }, "coa_size": { "type": "line" }, "englishmotto": { "type": "string", "label": "Motto in English", "description": "The country's motto translated into English" }, "image_map_size": { "type": "line" }, "image_map_alt": { "type": "string" }, "image_map_caption": { "type": "content" }, "image_map2_size": { "type": "line" }, "image_map2_alt": { "type": "string" }, "image_map2_caption": { "type": "content" }, "loctext": { "type": "string" }, "capital_exile": { "type": "string" }, "recognized_languages": { "aliases": [ "recognised_languages" ], "type": "content", "label": "Recognized languages", "description": "Recognized languages of the country, possibly in list format" }, "recognized_national_languages": { "aliases": [ "recognised_national_languages" ], "type": "content", "label": "Recognized national languages", "description": "Recognized national languages of the country, possibly in list format" }, "recognized_regional_languages": { "aliases": [ "recognised_regional_languages" ], "type": "content", "label": "Recognized regional languages", "description": "Recognized regional languages of the country, possibly in list format" }, "common_languages": { "type": "content", "label": "Common languages", "description": "Common languages of the country, possibly in list format", "example": "{{ublist|[[English language|English]]|[[Spanish language|Spanish]]|[[Chinese language|Chinese]]}}" }, "religion_year": { "type": "number", "label": "Religion statistic year", "description": "Year the religion statistic is from", "example": "2015" }, "leader_title15": { "type": "line" }, "leader_name15": { "type": "line" }, "title_leader": { "type": "line", "label": "Leader's title", "description": "Title of the country's leader", "example": "[[President of the United States|President]]" }, "year_leader1": { "type": "line", "label": "Leader 1 years", "description": "Years the first leader reigned", "example": "1776-1795" }, "leader1": { "type": "line", "label": "Leader 1", "description": "The first leader of the country", "example": "[[George Washington]]" }, "year_leader2": { "type": "line" }, "leader2": { "type": "line" }, "year_leader3": { "type": "line" }, "leader3": { "type": "line" }, "year_leader4": { "type": "line" }, "leader4": { "type": "line" }, "year_leader5": { "type": "line" }, "leader5": { "type": "line" }, "year_leader6": { "type": "line" }, "leader6": { "type": "line" }, "year_leader7": { "type": "line" }, "leader7": { "type": "line" }, "year_leader8": { "type": "line" }, "leader8": { "type": "line" }, "year_leader9": { "type": "line" }, "leader9": { "type": "line" }, "year_leader10": { "type": "line" }, "leader10": { "type": "line" }, "year_leader11": { "type": "line", "label": "Leader 11 years", "description": "Year of leader 11", "example": "1980-1987" }, "leader11": { "type": "line" }, "title_representative": { "type": "line", "label": "Representative title", "description": "Title of the country's representative", "example": "[[Governor General of Canada|Governor General]]" }, "year_representative1": { "type": "line", "label": "Representative 1 years", "description": "Year of representative 1", "example": "1492-1506" }, "representative1": { "type": "line", "label": "Representative 1", "description": "First representative" }, "year_representative2": { "type": "line", "label": "Representative 2 years", "description": "Year of representative 2", "example": "1552-1580" }, "representative2": { "type": "line" }, "year_representative3": { "type": "line", "label": "Representative 3 years", "description": "Year of representative 3", "example": "1652-1666" }, "representative3": { "type": "line" }, "year_representative4": { "type": "line", "label": "Representative 4 year", "description": "Year of representative 4", "example": "1652-1666" }, "representative4": { "type": "line" }, "year_representative5": { "type": "line", "label": "Representative 5 years", "description": "Year of representative 5", "example": "1652-1666" }, "representative5": { "type": "line" }, "title_deputy": { "type": "line" }, "year_deputy1": { "type": "line", "label": "Deputy 1 years", "description": "Years of the 1st deputy", "example": "2006-2009" }, "deputy1": { "type": "line", "label": "Deputy 1", "description": "First deputy" }, "year_deputy2": { "type": "line", "label": "Deputy 2 years", "description": "Years of the 2nd deputy", "example": "2009-2011" }, "deputy2": { "type": "line" }, "year_deputy3": { "type": "line", "label": "Deputy 3 years", "description": "Years of the 3rd deputy", "example": "2011-2013" }, "deputy3": { "type": "line" }, "year_deputy4": { "type": "line", "label": "Deputy 4 years", "description": "Years of the 4th deputy", "example": "2013-2016" }, "deputy4": { "type": "line" }, "year_deputy5": { "type": "line", "label": "Deputy 5 years", "description": "Years of the 5th deputy", "example": "2016-2018" }, "deputy5": { "type": "line" }, "year_deputy6": { "type": "line", "label": "Deputy 6 years", "description": "Years of the 6th deputy", "example": "2018-" }, "deputy6": { "type": "line" }, "type_house1": { "type": "line" }, "house1": { "type": "line" }, "type_house2": { "type": "line" }, "house2": { "type": "line" }, "event_pre": { "type": "line" }, "established_event13": { "label": "Establishment event 13", "type": "line" }, "established_date13": { "label": "Establishment date 13", "type": "date" }, "established_event14": { "type": "line" }, "established_date14": { "type": "line" }, "established_event15": { "type": "line" }, "established_date15": { "type": "line" }, "event_start": { "label": "Starting event", "description": "The foundational event of the country", "example": "Established", "type": "string" }, "date_pre": {}, "date_start": { "label": "Date established", "description": "Date the country, dynasty or organization was established (date of event_start)", "example": "601 CE", "type": "string" }, "event1": { "label": "Event 1", "description": "First significant event", "example": "Signing of the [[Chanyuan Treaty]] with [[Liao dynasty|Liao]]", "type": "string" }, "date_event1": { "label": "Event 1 date", "description": "Date of the first significant event", "example": "601", "type": "date" }, "event2": { "label": "Event 2", "description": "Second significant event", "example": "[[Alliance Conducted at Sea|Alliance with Jin]]", "type": "string" }, "date_event2": { "label": "Event 2 date", "description": "Date of the second significant event", "type": "string" }, "event3": { "label": "Event 3", "description": "Third significant event", "example": "[[Jingkang Incident]]", "type": "string" }, "date_event3": {}, "event4": { "label": "Event 4", "description": "Fourth significant event", "example": "Beginning of [[Mongol conquest of the Song dynasty|Mongol invasion]]", "type": "string" }, "date_event4": {}, "event5": { "label": "Event 5", "description": "Fifth significant event", "example": "Fall of [[Hangzhou|Lin'an]]", "type": "string" }, "date_event5": {}, "event6": { "label": "Event 6", "description": "Sixth significant event", "example": "[[Krystallnacht]]", "type": "string" }, "date_event6": {}, "event_end": { "label": "Event ending the country", "description": "The event that caused the country to stop existing or transition, if applicable", "example": "[[Battle of Yamen]] (end of dynasty)", "type": "string" }, "date_end": { "label": "End date", "description": "Date the country stopped existing or transitioned, if applicable", "example": "1433", "type": "date" }, "event_post": {}, "date_post": {}, "area_ha": {}, "area_acre": {}, "area_land_km2": {}, "area_land_ha": {}, "area_land_sq_mi": {}, "area_land_acre": {}, "area_water_km2": {}, "area_water_ha": {}, "area_water_sq_mi": {}, "area_water_acre": {}, "stat_area1": {}, "stat_area2": {}, "stat_area3": {}, "stat_area4": {}, "stat_area5": {}, "area_land_footnote": {}, "area_water_footnote": {}, "stat_year1": {}, "ref_area1": {}, "stat_year2": {}, "ref_area2": {}, "stat_year3": {}, "ref_area3": {}, "stat_year4": {}, "ref_area4": {}, "stat_year5": { "label": "Statistic 5 year", "description": "Year of statistic 5", "example": "1933", "type": "number" }, "ref_area5": {}, "stat_pop1": {}, "stat_pop2": {}, "stat_pop3": {}, "stat_pop4": {}, "stat_pop5": {}, "ref_pop1": {}, "ref_pop2": {}, "ref_pop3": {}, "ref_pop4": {}, "ref_pop5": {}, "nummembers": {}, "p1": {}, "s1": {}, "flag_p1": {}, "image_p1": {}, "border_p1": {}, "flag_p2": {}, "image_p2": {}, "p2": {}, "border_p2": {}, "flag_p3": {}, "image_p3": {}, "p3": {}, "border_p3": {}, "flag_p4": {}, "image_p4": {}, "p4": {}, "border_p4": {}, "flag_p5": {}, "image_p5": {}, "p5": {}, "border_p5": {}, "flag_p6": {}, "image_p6": {}, "p6": {}, "border_p6": {}, "flag_p7": {}, "image_p7": {}, "p7": {}, "border_p7": {}, "flag_p8": {}, "image_p8": {}, "p8": {}, "border_p8": {}, "flag_p9": {}, "image_p9": {}, "p9": {}, "border_p9": {}, "flag_p10": {}, "image_p10": {}, "p10": {}, "border_p10": {}, "flag_p11": {}, "image_p11": {}, "p11": {}, "border_p11": {}, "flag_p12": {}, "image_p12": {}, "p12": {}, "border_p12": {}, "flag_p13": {}, "image_p13": {}, "p13": {}, "border_p13": {}, "flag_p14": {}, "image_p14": {}, "p14": {}, "border_p14": {}, "flag_p15": {}, "image_p15": {}, "p15": {}, "border_p15": {}, "flag_s1": {}, "image_s1": {}, "border_s1": {}, "flag_s2": {}, "image_s2": {}, "s2": {}, "border_s2": {}, "flag_s3": {}, "image_s3": {}, "s3": {}, "border_s3": {}, "flag_s4": {}, "image_s4": {}, "s4": {}, "border_s4": {}, "flag_s5": {}, "image_s5": {}, "s5": {}, "border_s5": {}, "flag_s6": {}, "image_s6": {}, "s6": {}, "border_s6": {}, "flag_s7": {}, "image_s7": {}, "s7": {}, "border_s7": {}, "flag_s8": {}, "image_s8": {}, "s8": {}, "border_s8": {}, "flag_s9": {}, "image_s9": {}, "s9": {}, "border_s9": {}, "flag_s10": {}, "image_s10": {}, "s10": {}, "border_s10": {}, "flag_s11": {}, "image_s11": {}, "s11": {}, "border_s11": {}, "flag_s12": {}, "image_s12": {}, "s12": {}, "border_s12": {}, "flag_s13": {}, "image_s13": {}, "s13": {}, "border_s13": {}, "flag_s14": {}, "image_s14": {}, "s14": {}, "border_s14": {}, "flag_s15": {}, "image_s15": {}, "s15": {}, "border_s15": {}, "today": { "label": "Today part of", "description": "For former countries, a list of countries of which the former country's territories are now part, if no more than four.", "example": "{{plainlist| *[[Czech Republic]] *[[Denmark]] *[[France]] *[[Germany]] }}", "type": "content", "suggested": true }, "footnotes2": {}, "symbol_caption": {}, "nested": {} }, "paramOrder": [ "conventional_long_name", "common_name", "linking_name", "native_name", "name", "image_flag", "flag_width", "alt_flag", "flag_border", "flag_caption", "image_flag2", "alt_flag2", "flag2_border", "image_coat", "symbol_width", "alt_coat", "symbol_type", "symbol_type_article", "text_symbol", "text_symbol_type", "other_symbol", "other_symbol_type", "national_motto", "motto", "national_anthem", "anthem", "royal_anthem", "image_map", "map_width", "alt_map", "map_caption", "image_map2", "map2_width", "alt_map2", "map_caption2", "image_map3", "map3_width", "alt_map3", "map_caption3", "capital", "capital_type", "overlord", "coordinates", "latd", "latm", "latNS", "longd", "longm", "longEW", "admin_center", "admin_center_type", "capital2", "capital_type2", "admin_center2", "admin_center_type2", "largest_city", "largest_settlement", "largest_settlement_type", "official_languages", "national_languages", "regional_languages", "languages_type", "languages_sub", "languages", "languages2_type", "languages2_sub", "languages2", "ethnic_groups", "ethnic_groups_ref", "ethnic_groups_year", "religion", "religion_ref", "demonym", "org_type", "membership", "membership_type", "government_type", "politics_link", "leader_title1", "leader_name1", "leader_title2", "leader_name2", "leader_title3", "leader_name3", "leader_title4", "leader_name4", "leader_title5", "leader_name5", "leader_title6", "leader_name6", "leader_title7", "leader_name7", "leader_title8", "leader_name8", "leader_title9", "leader_name9", "leader_title10", "leader_name10", "leader_title11", "leader_name11", "leader_title12", "leader_name12", "leader_title13", "leader_name13", "leader_title14", "leader_name14", "legislature", "upper_house", "lower_house", "sovereignty_type", "sovereignty_note", "established", "established_event1", "established_date1", "established_event2", "established_date2", "established_event3", "established_date3", "established_event4", "established_date4", "established_event5", "established_date5", "established_event6", "established_date6", "established_event7", "established_date7", "established_event8", "established_date8", "established_event9", "established_date9", "established_event10", "established_date10", "established_event11", "established_date11", "established_event12", "established_date12", "area_km2", "area_link", "area_label", "FR_foot4", "area_footnote", "area_rank", "area_sq_mi", "percent_water", "area_label2", "area_data2", "area_label3", "area_data3", "FR_metropole", "FR_foot2", "FR_IGN_area_km2", "FR_IGN_area_rank", "FR_IGN_area_sq_mi", "FR_foot3", "FR_cadastre_area_km2", "FR_cadastre_area_rank", "FR_cadastre_area_sq_mi", "population_estimate", "population_census", "population_link", "population_estimate_year", "population_estimate_rank", "population_label2", "population_data2", "population_label3", "population_data3", "population_census_year", "population_census_rank", "population_density_km2", "population_density_sq_mi", "pop_den_footnote", "population_density_rank", "FR_metropole_population", "FR_total_population_estimate_year", "FR_foot", "FR_total_population_estimate", "FR_total_population_estimate_rank", "FR_metropole_population_estimate_rank", "FR_foot5", "GDP_PPP", "GDP_PPP_year", "GDP_PPP_rank", "GDP_PPP_per_capita", "GDP_PPP_per_capita_rank", "GDP_nominal", "GDP_nominal_year", "GDP_nominal_rank", "GDP_nominal_per_capita", "GDP_nominal_per_capita_rank", "Gini", "Gini_year", "Gini_change", "Gini_ref", "Gini_rank", "HDI", "HDI_year", "HDI_change", "HDI_ref", "HDI_rank", "currency", "currency_code", "time_zone", "utc_offset", "utc_offset_DST", "DST_note", "time_zone_DST", "DST", "antipodes", "date_format", "drives_on", "rail gauge", "calling_code", "patron_saint", "iso3166code", "cctld", "official_website", "footnote_a", "footnote_b", "footnote_c", "footnote_d", "footnote_e", "footnote_f", "footnote_g", "footnote_h", "footnote1", "footnote2", "footnote3", "footnote4", "footnote5", "footnote6", "footnote7", "footnote8", "footnotes", "navbar", "micronation", "status", "status_text", "empire", "year_end", "year_exile_start", "year_exile_end", "life_span", "year_start", "flag_size", "flag_alt", "flag_alt2", "flag_type", "coa_size", "englishmotto", "image_map_size", "image_map_alt", "image_map_caption", "image_map2_size", "image_map2_alt", "image_map2_caption", "loctext", "capital_exile", "recognized_languages", "recognized_national_languages", "recognized_regional_languages", "common_languages", "religion_year", "leader_title15", "leader_name15", "title_leader", "year_leader1", "leader1", "year_leader2", "leader2", "year_leader3", "leader3", "year_leader4", "leader4", "year_leader5", "leader5", "year_leader6", "leader6", "year_leader7", "leader7", "year_leader8", "leader8", "year_leader9", "leader9", "year_leader10", "leader10", "year_leader11", "leader11", "title_representative", "year_representative1", "representative1", "year_representative2", "representative2", "year_representative3", "representative3", "year_representative4", "representative4", "year_representative5", "representative5", "title_deputy", "year_deputy1", "deputy1", "year_deputy2", "deputy2", "year_deputy3", "deputy3", "year_deputy4", "deputy4", "year_deputy5", "deputy5", "year_deputy6", "deputy6", "type_house1", "house1", "type_house2", "house2", "established_event13", "established_date13", "established_event14", "established_date14", "established_event15", "established_date15", "event_pre", "date_pre", "event_start", "date_start", "event1", "date_event1", "event2", "date_event2", "event3", "date_event3", "event4", "date_event4", "event5", "date_event5", "event6", "date_event6", "event_end", "date_end", "event_post", "date_post", "area_ha", "area_acre", "area_land_km2", "area_land_ha", "area_land_sq_mi", "area_land_acre", "area_water_km2", "area_water_ha", "area_water_sq_mi", "area_water_acre", "stat_area1", "stat_area2", "stat_area3", "stat_area4", "stat_area5", "area_land_footnote", "area_water_footnote", "stat_year1", "ref_area1", "stat_year2", "ref_area2", "stat_year3", "ref_area3", "stat_year4", "ref_area4", "stat_year5", "ref_area5", "stat_pop1", "stat_pop2", "stat_pop3", "stat_pop4", "stat_pop5", "ref_pop1", "ref_pop2", "ref_pop3", "ref_pop4", "ref_pop5", "nummembers", "p1", "s1", "flag_p1", "image_p1", "border_p1", "flag_p2", "image_p2", "p2", "border_p2", "flag_p3", "image_p3", "p3", "border_p3", "flag_p4", "image_p4", "p4", "border_p4", "flag_p5", "image_p5", "p5", "border_p5", "flag_p6", "image_p6", "p6", "border_p6", "flag_p7", "image_p7", "p7", "border_p7", "flag_p8", "image_p8", "p8", "border_p8", "flag_p9", "image_p9", "p9", "border_p9", "flag_p10", "image_p10", "p10", "border_p10", "flag_p11", "image_p11", "p11", "border_p11", "flag_p12", "image_p12", "p12", "border_p12", "flag_p13", "image_p13", "p13", "border_p13", "flag_p14", "image_p14", "p14", "border_p14", "flag_p15", "image_p15", "p15", "border_p15", "flag_s1", "image_s1", "border_s1", "flag_s2", "image_s2", "s2", "border_s2", "flag_s3", "image_s3", "s3", "border_s3", "flag_s4", "image_s4", "s4", "border_s4", "flag_s5", "image_s5", "s5", "border_s5", "flag_s6", "image_s6", "s6", "border_s6", "flag_s7", "image_s7", "s7", "border_s7", "flag_s8", "image_s8", "s8", "border_s8", "flag_s9", "image_s9", "s9", "border_s9", "flag_s10", "image_s10", "s10", "border_s10", "flag_s11", "image_s11", "s11", "border_s11", "flag_s12", "image_s12", "s12", "border_s12", "flag_s13", "image_s13", "s13", "border_s13", "flag_s14", "image_s14", "s14", "border_s14", "flag_s15", "image_s15", "s15", "border_s15", "today", "footnotes2", "symbol_caption", "nested" ] } </templatedata> {{cob}} <includeonly>{{Sandbox other|| <!--Categories below this line, please; interwikis at Wikidata--> [[Category:Country infobox templates| ]] [[Category:Templates that add a tracking category]] }}</includeonly> 6cf8d40662e9a8e4feb40f6ccdc86098e875743c File:Flag of the Philippines (1936–1985, 1986–1998).svg.png 6 439 952 2023-10-01T03:55:59Z Dax0102 32 wikitext text/x-wiki Flag of the Philippines 188cc2a29c8c7032b15bb39308e0ec87cc10151e File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg.png 6 440 956 2023-10-01T04:05:27Z Dax0102 32 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Manuel Luis Quezon.png 6 441 965 2023-10-01T04:28:28Z Dax0102 32 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Manuel Luis Quezon 0 442 966 2023-10-01T04:29:23Z Dax0102 32 Created page with "{{Infobox officeholder | honorific_prefix = His Excellency, | name = Manuel Luis Quezon | image = Manuel Luis Quezon.png | office = [[President of the Philippines]] | allegiance = Philippines }}" wikitext text/x-wiki {{Infobox officeholder | honorific_prefix = His Excellency, | name = Manuel Luis Quezon | image = Manuel Luis Quezon.png | office = [[President of the Philippines]] | allegiance = Philippines }} 99ac37d8542384515a0d6932d49279d858aaa9ae Module:Transclusion count/data/A 828 1073 2344 2023-10-01T05:36:36Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["A-Class"] = 5500, ["AARTalk"] = 8900, ["ACArt"] = 5300, ["AFB_game_box_end"] = 2500, ["AFB_game_box_start"] = 2500, ["AFC_comment"] = 14000, ["AFC_submission"] = 24000, ["AFC_submission_category_header"] = 4600, ["AFD_help"] = 108000, ["AFD_help/styles.css"] = 108000, ["AFI/Picture_box/show_picture"] = 3700, ["AFI_film"] = 8100, ["AFL_Car"] = 2600, ["AFL_Col"] = 2500, ["AFL_Ess"] = 2500, ["AFL_Gee"] = 2500, ["AFL_Haw"] = 2400, ["AFL_Mel"] = 2700, ["AFL_NM"] = 2300, ["AFL_Ric"] = 2400, ["AFL_StK"] = 2900, ["AFL_Tables"] = 12000, ["AFL_Year"] = 2500, ["ALG"] = 2500, ["AMARB"] = 4400, ["AML"] = 4500, ["AMQ"] = 4500, ["AM_station_data"] = 4400, ["ARG"] = 6400, ["ASIN"] = 4600, ["ASN"] = 3400, ["ATP"] = 5000, ["AUS"] = 14000, ["AUT"] = 9500, ["AZE"] = 2600, ["A_note"] = 4300, ["A_or_an"] = 29000, ["Aan"] = 48000, ["Abbr"] = 796000, ["Abbreviation"] = 2300, ["Abbrlink"] = 18000, ["Abot"] = 12000, ["About"] = 152000, ["Absolute_page_title"] = 3900, ["Acad"] = 6500, ["Access_icon"] = 2900, ["According_to_whom"] = 4300, ["AchievementTable"] = 10000, ["Active_politician"] = 20000, ["AdSenseSummary"] = 4100, ["Added"] = 2400, ["Adjacent_communities"] = 26000, ["Adjacent_stations"] = 38000, ["Adjacent_stations/styles.css"] = 38000, ["Adjacent_stations_doc"] = 2000, ["Adjstn"] = 2200, ["Admin"] = 14000, ["Administrator_note"] = 6500, ["Adminnote"] = 3500, ["Advert"] = 18000, ["Aet"] = 5200, ["AfC_age_category"] = 3500, ["AfC_comment"] = 14000, ["AfC_date_category"] = 196000, ["AfC_status/age"] = 3600, ["AfC_status/backlog"] = 4100, ["AfC_submission"] = 37000, ["AfC_submission/comments"] = 23000, ["AfC_submission/declined"] = 23000, ["AfC_submission/declinedivbox"] = 23000, ["AfC_submission/draft"] = 16000, ["AfC_submission/helptools"] = 39000, ["AfC_submission/pending"] = 3500, ["AfC_submission/tools"] = 3600, ["AfC_submission_category_header"] = 5700, ["AfC_submission_category_header/day"] = 5500, ["AfC_submission_category_header/td"] = 5500, ["AfC_talk/C_percentage"] = 3300, ["AfC_topic"] = 25000, ["AfD_categories_horizontal_shortnames"] = 4400, ["AfD_count_link"] = 3800, ["Afd-merged-from"] = 8000, ["AfricaProject"] = 28000, ["Africa_topic"] = 6200, ["After_extra_time"] = 5200, ["Age"] = 37000, ["Age_in_days"] = 4400, ["Age_in_years"] = 3700, ["Age_in_years,_months,_weeks_and_days"] = 4100, ["Age_in_years,_months_and_days"] = 17000, ["Age_in_years_and_days"] = 4000, ["Age_in_years_and_days_nts"] = 3100, ["Agree"] = 2100, ["Ahnentafel"] = 8300, ["Ahnentafel/styles.css"] = 8300, ["Air_Force_Historical_Research_Agency"] = 4300, ["Air_force"] = 5900, ["Air_force/core"] = 5900, ["Aircontent"] = 9400, ["Aircraft_specs"] = 12000, ["Aircraft_specs/convert"] = 12000, ["Aircraft_specs/eng"] = 12000, ["Aircraft_specs/length"] = 12000, ["Aircraft_specs/range"] = 12000, ["Aircraft_specs/speed"] = 12000, ["Airport-dest-list"] = 3600, ["Airport_codes"] = 15000, ["Airport_destination_list"] = 4900, ["Aka"] = 2100, ["Al"] = 66000, ["Album"] = 204000, ["Album_chart"] = 29000, ["Album_chart/chartnote"] = 29000, ["Album_cover_fur"] = 53000, ["Album_label_category"] = 2200, ["Album_label_category/core"] = 2200, ["Album_ratings"] = 76000, ["Album_reviews"] = 5600, ["Albums"] = 7600, ["Albums_category"] = 24000, ["Albums_category/core"] = 24000, ["Albums_category/type/default"] = 24000, ["Align"] = 174000, ["Aligned_table"] = 13000, ["AllIrelandByCountyCatNav"] = 3100, ["AllMovie_name"] = 5800, ["AllMovie_title"] = 28000, ["AllMusic"] = 77000, ["Allcaps"] = 9000, ["Allcaps/styles.css"] = 9000, ["Allmovie"] = 4200, ["Allmovie_title"] = 2200, ["Allmusic"] = 17000, ["Allow_wrap"] = 19000, ["Alumni"] = 2400, ["Always_substitute"] = 8400, ["Ambox"] = 1460000, ["Ambox_globe"] = 36000, ["Ambox_globe_current_red"] = 34000, ["American_English"] = 18000, ["American_football_roster/Footer"] = 3200, ["American_football_roster/Header"] = 3200, ["American_football_roster/Player"] = 3200, ["Americanfootballbox"] = 3300, ["Amg_movie"] = 11000, ["Amg_name"] = 3200, ["Anarchism_announcements"] = 3100, ["Anarchism_announcements/shell"] = 3100, ["Anchor"] = 80000, ["Angbr"] = 2100, ["Angle_bracket"] = 3100, ["Anglican_navbox_titlestyle"] = 14000, ["Anglicise_rank"] = 569000, ["Animal_tasks"] = 19000, ["Anime_News_Network"] = 11000, ["Ann"] = 4700, ["Annotated_link"] = 7900, ["Annual_readership"] = 51000, ["Anonblock"] = 33000, ["Antonym_of_(dis)establish"] = 8700, ["Apostrophe"] = 77000, ["ArbCom_Arab-Israeli_editnotice"] = 2200, ["ArbCom_Arab-Israeli_enforcement"] = 3000, ["Arbitration_Committee_candidate/data"] = 76000, ["Archive"] = 155000, ["Archive-nav"] = 5800, ["Archive_bottom"] = 46000, ["Archive_box"] = 18000, ["Archive_list"] = 73000, ["Archive_navigation"] = 7400, ["Archive_top"] = 28000, ["Archive_top/styles.css"] = 28000, ["Archive_top_green"] = 3000, ["Archivebottom"] = 3600, ["Archivebox"] = 2600, ["Archives"] = 50000, ["Archivetop"] = 3600, ["Army"] = 15000, ["Army/core"] = 15000, ["Art_UK_bio"] = 2400, ["Art_UK_bio/plural"] = 2400, ["Article"] = 2900, ["ArticleHistory"] = 29000, ["Article_alerts_box"] = 3600, ["Article_alerts_box/styles.css"] = 3600, ["Article_for_improvement_banner/Picture_box"] = 3700, ["Article_for_improvement_banner/Picture_box/show_picture"] = 3700, ["Article_history"] = 47000, ["Articles_by_Quality"] = 2300, ["Articles_by_Quality/down"] = 2300, ["Articles_by_Quality/total"] = 2400, ["Articles_by_Quality/up"] = 2300, ["As_of"] = 79000, ["Asbox"] = 2390000, ["Asbox/styles.css"] = 2390000, ["Asia_topic"] = 9900, ["Asof"] = 7200, ["Assessed-Class"] = 18000, ["Assignment"] = 6300, ["Assignment_milestones"] = 5600, ["AstDys"] = 2900, ["Asterisk"] = 2200, ["AthAbbr"] = 4600, ["Atnhead"] = 6000, ["Atop"] = 4700, ["Atopg"] = 2600, ["Attached_KML"] = 14000, ["Au"] = 2500, ["AuEduNewbie"] = 2500, ["Audio"] = 27000, ["Audio_sample"] = 2900, ["AustralianFootball"] = 7400, ["Australian_Dictionary_of_Biography"] = 2400, ["Australian_English"] = 2800, ["Australian_party_style"] = 6000, ["Australian_politics/name"] = 4200, ["Australian_politics/party_colours"] = 6100, ["Austria_metadata_Wikidata"] = 2100, ["Austria_population_Wikidata"] = 2100, ["Aut"] = 8200, ["Authority_control"] = 2020000, ["Authority_control_(arts)"] = 16000, ["Auto_link"] = 79000, ["Autobiography"] = 2100, ["Automated_tools"] = 85000, ["Automated_tools/core"] = 85000, ["Automatic_Taxobox"] = 2500, ["Automatic_archive_navigator"] = 133000, ["Automatic_taxobox"] = 75000, ["Aviation_accidents_and_incidents"] = 2300, ["Awaiting_admin"] = 2600, ["Awaitingadmin"] = 2500, ["Award2"] = 2400, ["Awards"] = 2400, ["Awards_table"] = 5600, ["Awards_table/styles.css"] = 5600, ["Ayd"] = 3000, ["Aye"] = 26000, ["Module:A_or_an"] = 29000, ["Module:A_or_an/words"] = 29000, ["Module:About"] = 153000, ["Module:Adjacent_stations"] = 74000, ["Module:Adjacent_stations/Amtrak"] = 2600, ["Module:Adjacent_stations/Indian_Railways"] = 3200, ["Module:Adjacent_stations/JR_East"] = 2200, ["Module:Adjacent_stations/i18n"] = 74000, ["Module:Administrators'_noticeboard_archives"] = 2000, ["Module:AfC_submission_catcheck"] = 376000, ["Module:AfC_topic"] = 25000, ["Module:Age"] = 1190000, ["Module:Ahnentafel"] = 8300, ["Module:Airport_destination_list"] = 4900, ["Module:Aligned_dates_list"] = 2300, ["Module:Aligned_table"] = 13000, ["Module:Anchor"] = 80000, ["Module:Ancient_Egypt_era"] = 2800, ["Module:Ancient_Egypt_era/data"] = 2800, ["Module:Ancient_Egypt_kings"] = 2800, ["Module:Ancient_Egypt_kings/data"] = 2800, ["Module:Ancient_Olympiads"] = 2800, ["Module:Ancient_Olympiads/data"] = 2800, ["Module:Annotated_link"] = 7900, ["Module:Archive_list"] = 75000, ["Module:Arguments"] = 31900000, ["Module:Armenian"] = 2800, ["Module:Article_history"] = 47000, ["Module:Article_history/Category"] = 47000, ["Module:Article_history/config"] = 47000, ["Module:Article_history/styles.css"] = 47000, ["Module:Asbox"] = 2390000, ["Module:Asbox_stubtree"] = 36000, ["Module:Attached_KML"] = 14000, ["Module:Attached_KML/styles.css"] = 14000, ["Module:Australian_place_map"] = 16000, ["Module:Authority_control"] = 2040000, ["Module:Authority_control/auxiliary"] = 575000, ["Module:Authority_control/config"] = 2040000, ["Module:Automated_taxobox"] = 369000, ["Module:Automatic_archive_navigator"] = 133000, ["Module:Automatic_archive_navigator/config"] = 133000, ["Module:Autotaxobox"] = 569000, } a8ee40712bf0669ff0e9be9f1b4924a5abda651e Module:Transclusion count/data/C 828 595 1338 2023-10-01T05:36:56Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["C"] = 657000, ["C-Class"] = 17000, ["C-SPAN"] = 12000, ["C-cmn"] = 2300, ["C-pl"] = 51000, ["C."] = 4200, ["CAN"] = 20000, ["CANelec"] = 14000, ["CANelec/gain"] = 2600, ["CANelec/hold"] = 4900, ["CANelec/source"] = 7100, ["CANelec/top"] = 6400, ["CANelec/total"] = 6200, ["CAS"] = 3800, ["CBB_Standings_End"] = 15000, ["CBB_Standings_Entry"] = 15000, ["CBB_Standings_Start"] = 15000, ["CBB_Yearly_Record_End"] = 3100, ["CBB_Yearly_Record_Entry"] = 3100, ["CBB_Yearly_Record_Start"] = 3000, ["CBB_Yearly_Record_Subhead"] = 3700, ["CBB_Yearly_Record_Subtotal"] = 2900, ["CBB_roster/Footer"] = 8100, ["CBB_roster/Header"] = 8100, ["CBB_roster/Player"] = 8000, ["CBB_schedule_end"] = 11000, ["CBB_schedule_entry"] = 11000, ["CBB_schedule_start"] = 11000, ["CBB_standings_end"] = 16000, ["CBB_standings_entry"] = 16000, ["CBB_standings_start"] = 16000, ["CBB_yearly_record_end"] = 4100, ["CBB_yearly_record_end/legend"] = 3700, ["CBB_yearly_record_entry"] = 4100, ["CBB_yearly_record_start"] = 4000, ["CBB_yearly_record_subhead"] = 3800, ["CBB_yearly_record_subtotal"] = 3800, ["CBSB_Standings_End"] = 4300, ["CBSB_Standings_Entry"] = 4300, ["CBSB_Standings_Start"] = 4300, ["CBSB_link"] = 3500, ["CBSB_standings_end"] = 4400, ["CBSB_standings_entry"] = 4500, ["CBSB_standings_start"] = 4500, ["CC0"] = 3800, ["CENTURY"] = 16000, ["CFB_Standings_End"] = 34000, ["CFB_Standings_Entry"] = 34000, ["CFB_Standings_Start"] = 34000, ["CFB_Yearly_Record_End"] = 6900, ["CFB_Yearly_Record_End/legend"] = 2400, ["CFB_Yearly_Record_Entry"] = 6900, ["CFB_Yearly_Record_Start"] = 6900, ["CFB_Yearly_Record_Subhead"] = 6900, ["CFB_Yearly_Record_Subtotal"] = 6800, ["CFB_schedule"] = 26000, ["CFB_schedule_entry"] = 19000, ["CFB_standings_end"] = 34000, ["CFB_standings_entry"] = 34000, ["CFB_standings_start"] = 34000, ["CFL_Year"] = 5700, ["CGF_year"] = 2600, ["CHE"] = 10000, ["CHI"] = 2800, ["CHL"] = 3600, ["CHN"] = 11000, ["CN"] = 3400, ["CO2"] = 3300, ["COI"] = 14000, ["COIUL"] = 129000, ["COI_editnotice"] = 6700, ["COL"] = 5000, ["COLON"] = 13000, ["CRI"] = 2200, ["CRO"] = 5600, ["CSK"] = 2800, ["CSS_image_crop"] = 4700, ["CUB"] = 3700, ["CURRENTDATE"] = 3600, ["CURRENTMINUTE"] = 2500, ["CYP"] = 2100, ["CZE"] = 15000, ["Calendar"] = 2400, ["California/color"] = 12000, ["Call_sign_disambiguation"] = 3100, ["Campaignbox"] = 23000, ["CanProvName"] = 14000, ["CanadaByProvinceCatNav"] = 8400, ["CanadaProvinceThe"] = 4000, ["Canadian_English"] = 7000, ["Canadian_Parliament_links"] = 5100, ["Canadian_election_result"] = 14000, ["Canadian_election_result/gain"] = 2700, ["Canadian_election_result/hold"] = 5000, ["Canadian_election_result/source"] = 8200, ["Canadian_election_result/top"] = 14000, ["Canadian_election_result/total"] = 11000, ["Canadian_party_colour"] = 8200, ["Canadian_party_colour/colour"] = 18000, ["Canadian_party_colour/colour/default"] = 18000, ["Canadian_party_colour/name"] = 15000, ["Canadian_party_colour/name/default"] = 6900, ["Canned_search"] = 5800, ["Cascite"] = 15000, ["Caselaw_source"] = 4000, ["Cassini-Ehess"] = 2600, ["Cast_listing"] = 16000, ["Castlist"] = 2500, ["Cat"] = 356000, ["CatAutoTOC"] = 661000, ["CatAutoTOC/core"] = 660000, ["CatRel"] = 3800, ["CatTrack"] = 3100, ["Cat_class"] = 6800, ["Cat_in_use"] = 50000, ["Cat_main"] = 200000, ["Cat_more"] = 102000, ["Cat_more_if_exists"] = 40000, ["Cat_see_also"] = 3500, ["Catalog_lookup_link"] = 516000, ["Category-Class"] = 14000, ["Category-inline"] = 8700, ["Category_TOC"] = 72000, ["Category_TOC/tracking"] = 72000, ["Category_U.S._State_elections_by_year"] = 7300, ["Category_U.S._State_elections_by_year/core"] = 7300, ["Category_class"] = 36000, ["Category_class/column"] = 36000, ["Category_class/second_row_column"] = 36000, ["Category_described_in_year"] = 5700, ["Category_diffuse"] = 7900, ["Category_disambiguation"] = 2400, ["Category_disambiguation/category_link"] = 2400, ["Category_explanation"] = 273000, ["Category_handler"] = 3360000, ["Category_ifexist"] = 5100, ["Category_importance"] = 10000, ["Category_importance/column"] = 10000, ["Category_importance/second_row_column"] = 10000, ["Category_link"] = 136000, ["Category_link_with_count"] = 7000, ["Category_more"] = 112000, ["Category_more_if_exists"] = 40000, ["Category_ordered_by_date"] = 11000, ["Category_other"] = 906000, ["Category_redirect"] = 109000, ["Category_see_also"] = 39000, ["Category_see_also/Category_pair_check"] = 39000, ["Category_see_also_if_exists"] = 73000, ["Category_see_also_if_exists_2"] = 88000, ["Category_title"] = 2400, ["Catexp"] = 7900, ["CathEncy"] = 2200, ["Catholic"] = 4000, ["Catholic_Encyclopedia"] = 5100, ["Catmain"] = 28000, ["Catmore"] = 9400, ["Cbb_link"] = 8700, ["Cbignore"] = 100000, ["Cbsb_link"] = 2100, ["Cc-by-2.5"] = 3700, ["Cc-by-3.0"] = 8500, ["Cc-by-sa-2.5"] = 2500, ["Cc-by-sa-2.5,2.0,1.0"] = 2600, ["Cc-by-sa-3.0"] = 25000, ["Cc-by-sa-3.0,2.5,2.0,1.0"] = 2200, ["Cc-by-sa-3.0-migrated"] = 23000, ["Cc-by-sa-4.0"] = 10000, ["Cc-zero"] = 3700, ["CensusAU"] = 9100, ["Census_2016_AUS"] = 6900, ["Cent"] = 5800, ["Center"] = 288000, ["Centralized_discussion"] = 6100, ["Centralized_discussion/core"] = 6100, ["Centralized_discussion/styles.css"] = 6100, ["Centre"] = 3200, ["Century"] = 2100, ["Century_name_from_decade"] = 2400, ["Century_name_from_decade_or_year"] = 77000, ["Century_name_from_title_decade"] = 7600, ["Century_name_from_title_year"] = 7600, ["Certification_Cite/Title"] = 30000, ["Certification_Cite/URL"] = 34000, ["Certification_Cite/archivedate"] = 6100, ["Certification_Cite/archiveurl"] = 6100, ["Certification_Cite_Ref"] = 30000, ["Certification_Table_Bottom"] = 29000, ["Certification_Table_Entry"] = 30000, ["Certification_Table_Entry/Foot"] = 29000, ["Certification_Table_Entry/Foot/helper"] = 29000, ["Certification_Table_Entry/Region"] = 30000, ["Certification_Table_Entry/Sales"] = 29000, ["Certification_Table_Entry/Sales/AustrianPeriod"] = 2000, ["Certification_Table_Entry/Sales/BelgianPeriod"] = 2100, ["Certification_Table_Entry/Sales/DanishPeriod"] = 3300, ["Certification_Table_Entry/Sales/DanishPeriodHelper1"] = 3300, ["Certification_Table_Entry/Sales/DanishPeriodHelper2"] = 3300, ["Certification_Table_Entry/Sales/GermanPeriod"] = 4000, ["Certification_Table_Entry/Sales/ItalianHelper"] = 3300, ["Certification_Table_Entry/Sales/NewZealandPeriod"] = 2100, ["Certification_Table_Entry/Sales/SwedishPeriod"] = 2100, ["Certification_Table_Separator"] = 2400, ["Certification_Table_Top"] = 30000, ["Cfb_link"] = 24000, ["Cfd_result"] = 2400, ["Cfdend"] = 4000, ["Chart"] = 4600, ["Chart/end"] = 4700, ["Chart/start"] = 4700, ["Chart_bottom"] = 3500, ["Chart_top"] = 3500, ["Check_completeness_of_transclusions"] = 39000, ["Check_talk"] = 31000, ["Check_talk_wp"] = 1420000, ["Check_winner_by_scores"] = 13000, ["CheckedSockpuppet"] = 7200, ["Checked_sockpuppet"] = 18000, ["Checkedsockpuppet"] = 5300, ["Checkip"] = 13000, ["Checkuser"] = 76000, ["Checkuserblock-account"] = 18000, ["Chem"] = 5800, ["Chem/atom"] = 5800, ["Chem/link"] = 5800, ["Chem2"] = 5100, ["Chem_molar_mass"] = 18000, ["Chem_molar_mass/format"] = 18000, ["Chembox"] = 14000, ["Chembox/styles.css"] = 14000, ["Chembox_3DMet"] = 14000, ["Chembox_3DMet/format"] = 14000, ["Chembox_AllOtherNames"] = 13000, ["Chembox_AllOtherNames/format"] = 13000, ["Chembox_Appearance"] = 6100, ["Chembox_BoilingPt"] = 3800, ["Chembox_CASNo"] = 14000, ["Chembox_CASNo/format"] = 14000, ["Chembox_CalcTemperatures"] = 6700, ["Chembox_ChEBI"] = 14000, ["Chembox_ChEBI/format"] = 14000, ["Chembox_ChEMBL"] = 14000, ["Chembox_ChEMBL/format"] = 14000, ["Chembox_ChemSpiderID"] = 14000, ["Chembox_ChemSpiderID/format"] = 14000, ["Chembox_CompTox"] = 14000, ["Chembox_CompTox/format"] = 14000, ["Chembox_Datapage_check"] = 14000, ["Chembox_Density"] = 4900, ["Chembox_DrugBank"] = 14000, ["Chembox_DrugBank/format"] = 14000, ["Chembox_ECHA"] = 7600, ["Chembox_ECNumber"] = 14000, ["Chembox_ECNumber/format"] = 14000, ["Chembox_Elements"] = 14000, ["Chembox_Elements/molecular_formula"] = 18000, ["Chembox_Footer"] = 14000, ["Chembox_Footer/tracking"] = 14000, ["Chembox_GHS_(set)"] = 3500, ["Chembox_Hazards"] = 12000, ["Chembox_IUPHAR_ligand"] = 14000, ["Chembox_IUPHAR_ligand/format"] = 14000, ["Chembox_Identifiers"] = 14000, ["Chembox_InChI"] = 13000, ["Chembox_InChI/format"] = 13000, ["Chembox_Indexlist"] = 14000, ["Chembox_Jmol"] = 14000, ["Chembox_Jmol/format"] = 14000, ["Chembox_KEGG"] = 14000, ["Chembox_KEGG/format"] = 14000, ["Chembox_MeltingPt"] = 5900, ["Chembox_Properties"] = 14000, ["Chembox_PubChem"] = 14000, ["Chembox_PubChem/format"] = 14000, ["Chembox_RTECS"] = 14000, ["Chembox_RTECS/format"] = 14000, ["Chembox_Related"] = 3400, ["Chembox_SMILES"] = 13000, ["Chembox_SMILES/format"] = 13000, ["Chembox_SolubilityInWater"] = 3900, ["Chembox_Structure"] = 2100, ["Chembox_UNII"] = 14000, ["Chembox_UNII/format"] = 14000, ["Chembox_headerbar"] = 14000, ["Chembox_image"] = 13000, ["Chembox_image_cell"] = 12000, ["Chembox_image_sbs"] = 13000, ["Chembox_parametercheck"] = 13000, ["Chembox_setDatarow"] = 4500, ["Chembox_setHeader"] = 4500, ["Chembox_templatePar/formatPreviewMessage"] = 14000, ["Chembox_verification"] = 7100, ["Chemicals"] = 7300, ["Chemistry"] = 3100, ["Chemspidercite"] = 11000, ["Chessgames_player"] = 3700, ["Chinese"] = 7000, ["Chr"] = 9100, ["ChristianityWikiProject"] = 5700, ["Circa"] = 73000, ["Circular_reference"] = 4600, ["Citation"] = 411000, ["Citation/make_link"] = 6100, ["Citation/styles.css"] = 46000, ["Citation_needed"] = 548000, ["Citation_needed_span"] = 3500, ["Citation_style"] = 4200, ["Cite_AV_media"] = 43000, ["Cite_AV_media_notes"] = 26000, ["Cite_Appletons'"] = 2400, ["Cite_Australian_Dictionary_of_Biography"] = 3300, ["Cite_Catholic_Encyclopedia"] = 8300, ["Cite_Colledge2006"] = 3100, ["Cite_DCB"] = 2800, ["Cite_DNB"] = 18000, ["Cite_EB1911"] = 25000, ["Cite_GNIS"] = 2300, ["Cite_Gaia_DR2"] = 2100, ["Cite_Google_Maps"] = 15000, ["Cite_IUCN"] = 58000, ["Cite_Instagram"] = 2200, ["Cite_Jewish_Encyclopedia"] = 3000, ["Cite_NIE"] = 3600, ["Cite_NSW_Parliament"] = 3300, ["Cite_NSW_SHR"] = 2600, ["Cite_ODNB"] = 18000, ["Cite_POWO"] = 2000, ["Cite_Q"] = 48000, ["Cite_QHR"] = 3000, ["Cite_QPN"] = 4000, ["Cite_Rotten_Tomatoes"] = 2000, ["Cite_Rowlett"] = 2500, ["Cite_Russian_law"] = 7800, ["Cite_Ryan"] = 3200, ["Cite_Sports-Reference"] = 54000, ["Cite_USGov"] = 24000, ["Cite_WoRMS"] = 5500, ["Cite_act"] = 2700, ["Cite_arXiv"] = 5000, ["Cite_bcgnis"] = 3200, ["Cite_book"] = 1600000, ["Cite_certification"] = 34000, ["Cite_cgndb"] = 3300, ["Cite_comic"] = 2100, ["Cite_conference"] = 16000, ["Cite_court"] = 5400, ["Cite_court/styles.css"] = 5400, ["Cite_dictionary"] = 3500, ["Cite_encyclopedia"] = 205000, ["Cite_episode"] = 17000, ["Cite_gnis"] = 33000, ["Cite_interview"] = 7900, ["Cite_iucn"] = 58000, ["Cite_journal"] = 965000, ["Cite_magazine"] = 277000, ["Cite_map"] = 41000, ["Cite_news"] = 1520000, ["Cite_newspaper_The_Times"] = 6600, ["Cite_patent"] = 5500, ["Cite_patent/authors"] = 4500, ["Cite_patent/core"] = 5800, ["Cite_peakbagger"] = 4600, ["Cite_podcast"] = 3900, ["Cite_press_release"] = 66000, ["Cite_report"] = 36000, ["Cite_rowlett"] = 2500, ["Cite_simbad"] = 4500, ["Cite_sports-reference"] = 59000, ["Cite_thesis"] = 32000, ["Cite_tweet"] = 37000, ["Cite_video"] = 12000, ["Cite_video_game"] = 3100, ["Cite_web"] = 4600000, ["Cite_wikisource"] = 5700, ["Cite_wikisource/make_link"] = 58000, ["Civil_navigation"] = 2800, ["Cl"] = 134000, ["Clade"] = 7600, ["Clade/styles.css"] = 7700, ["Clarify"] = 41000, ["Class"] = 42000, ["Class/colour"] = 9180000, ["Class/icon"] = 21000, ["Class_mask"] = 6420000, ["Class_mask/b"] = 287000, ["Classical"] = 6900, ["Classicon"] = 4800, ["Clc"] = 6100, ["Cleanup"] = 10000, ["Cleanup_bare_URLs"] = 26000, ["Cleanup_reorganize"] = 2500, ["Cleanup_rewrite"] = 5900, ["Clear"] = 2970000, ["Clear-left"] = 4100, ["Clear_left"] = 31000, ["Clear_right"] = 2600, ["Clerk-Note"] = 9900, ["Clerk_Request"] = 2000, ["Clerknote"] = 7500, ["Clickable_button"] = 17000, ["Clickable_button_2"] = 967000, ["Closed_access"] = 4600, ["Closed_rfc_top"] = 2300, ["Clr"] = 3500, ["Clubplayerscat"] = 8600, ["Cmbox"] = 423000, ["Cn"] = 95000, ["Cnote2"] = 2300, ["Cnote2_Begin"] = 2300, ["Cnote2_End"] = 2300, ["Coat_of_arms"] = 4800, ["Cob"] = 12000, ["Code"] = 51000, ["Col-1-of-2"] = 2400, ["Col-2"] = 171000, ["Col-2-of-2"] = 2300, ["Col-3"] = 10000, ["Col-4"] = 3700, ["Col-begin"] = 214000, ["Col-break"] = 212000, ["Col-end"] = 212000, ["Col-float"] = 2700, ["Col-float-break"] = 2600, ["Col-float-end"] = 2700, ["Col-float/styles.css"] = 2700, ["Col-start"] = 18000, ["Colbegin"] = 21000, ["Colend"] = 23000, ["Collapse"] = 9800, ["Collapse_bottom"] = 51000, ["Collapse_top"] = 51000, ["Collapsebottom"] = 3800, ["Collapsetop"] = 3800, ["Collapsible_list"] = 52000, ["Collapsible_option"] = 135000, ["College"] = 8900, ["CollegePrimaryHeader"] = 6100, ["CollegePrimaryStyle"] = 97000, ["CollegeSecondaryStyle"] = 3700, ["College_Athlete_Recruit_End"] = 2900, ["College_Athlete_Recruit_Entry"] = 3100, ["College_Athlete_Recruit_Start"] = 3000, ["College_athlete_recruit_end"] = 4100, ["College_athlete_recruit_entry"] = 4200, ["College_athlete_recruit_start"] = 4300, ["College_color_list"] = 3900, ["Colon"] = 18000, ["Color"] = 472000, ["Color_box"] = 74000, ["Colorbox"] = 3500, ["Colorbull"] = 4800, ["Colored_link"] = 63000, ["Colors"] = 3800, ["Colour"] = 5800, ["Colour_box"] = 2000, ["Coloured_link"] = 7000, ["Column"] = 2400, ["Column/styles.css"] = 2500, ["Columns-end"] = 2200, ["Columns-list"] = 97000, ["Columns-start"] = 2200, ["Comedy"] = 2600, ["Comic_Book_DB"] = 3500, ["Comicbookdb"] = 3500, ["Comics-replaceability"] = 2900, ["Comics_infobox_sec/creator_nat"] = 2800, ["Comics_infobox_sec/formcat"] = 3300, ["Comics_infobox_sec/genre"] = 4100, ["Comics_infobox_sec/genrecat"] = 3700, ["Comics_infobox_sec/styles.css"] = 8200, ["Comicsproj"] = 28000, ["Comma_separated_entries"] = 432000, ["Comma_separated_values"] = 48000, ["Comment"] = 5200, ["Committed_identity"] = 3000, ["Committed_identity/styles.css"] = 3000, ["Commons"] = 66000, ["Commons-inline"] = 20000, ["Commons_cat"] = 48000, ["Commons_category"] = 847000, ["Commons_category-inline"] = 149000, ["Commons_category_inline"] = 6100, ["Commonscat"] = 64000, ["Commonscat-inline"] = 17000, ["Commonscat_inline"] = 2400, ["Commonscatinline"] = 6800, ["Compact_TOC"] = 7000, ["Compact_ToC"] = 4700, ["Compare"] = 5300, ["Compare_image_with_Wikidata"] = 10000, ["Composition_bar"] = 10000, ["Confirmed"] = 17000, ["Confused"] = 2800, ["Confusing"] = 2300, ["CongBio"] = 9600, ["CongLinks"] = 4600, ["Connected_contributor"] = 18000, ["Connected_contributor_(paid)"] = 6900, ["Constellation_navbox"] = 6800, ["Container"] = 11000, ["Container_cat"] = 7600, ["Container_category"] = 43000, ["Containercat"] = 2600, ["Contains_special_characters"] = 4200, ["Contains_special_characters/core"] = 4200, ["Contains_special_characters/styles.css"] = 4200, ["Content_category"] = 7600, ["Contentious_topics/list"] = 13000, ["Contentious_topics/page_restriction_editnotice_base"] = 2600, ["Contentious_topics/page_restriction_talk_notice_base"] = 3600, ["Contentious_topics/talk_notice"] = 6900, ["Context"] = 2700, ["Continent2continental"] = 16000, ["Continent_adjective_to_noun"] = 2200, ["Controversial"] = 3300, ["Convert"] = 1180000, ["Convinfobox"] = 206000, ["Convinfobox/2"] = 17000, ["Convinfobox/3"] = 119000, ["Convinfobox/pri2"] = 64000, ["Convinfobox/prisec2"] = 3300, ["Convinfobox/prisec3"] = 26000, ["Convinfobox/sec2"] = 9300, ["Coord"] = 1330000, ["Coord_missing"] = 94000, ["Coord_missing/CheckCat"] = 93000, ["Coords"] = 7600, ["Copied"] = 19000, ["Copy_edit"] = 2400, ["Copy_to_Wikimedia_Commons"] = 108000, ["Copyvios"] = 4000, ["Cospar"] = 2600, ["Cot"] = 12000, ["Count"] = 669000, ["Country2continent"] = 36000, ["Country2continental"] = 2400, ["Country2nationality"] = 347000, ["CountryPrefixThe"] = 109000, ["Country_abbreviation"] = 89000, ["Country_alias"] = 16000, ["Country_at_games_navbox"] = 2700, ["Country_at_games_navbox/below"] = 2700, ["Country_data"] = 7200, ["Country_data_AFG"] = 2300, ["Country_data_ALB"] = 6800, ["Country_data_ALG"] = 9600, ["Country_data_AND"] = 3100, ["Country_data_ANG"] = 4000, ["Country_data_ARG"] = 48000, ["Country_data_ARM"] = 7600, ["Country_data_AUS"] = 77000, ["Country_data_AUT"] = 46000, ["Country_data_AZE"] = 9400, ["Country_data_Afghanistan"] = 12000, ["Country_data_Alaska"] = 2100, ["Country_data_Albania"] = 20000, ["Country_data_Alberta"] = 3700, ["Country_data_Algeria"] = 25000, ["Country_data_American_Samoa"] = 2900, ["Country_data_Andorra"] = 8200, ["Country_data_Angola"] = 12000, ["Country_data_Anguilla"] = 2500, ["Country_data_Antigua_and_Barbuda"] = 6200, ["Country_data_Apulia"] = 7900, ["Country_data_Argentina"] = 81000, ["Country_data_Arizona"] = 2300, ["Country_data_Armenia"] = 22000, ["Country_data_Aruba"] = 3700, ["Country_data_Australia"] = 128000, ["Country_data_Austria"] = 79000, ["Country_data_Azerbaijan"] = 28000, ["Country_data_BAH"] = 4100, ["Country_data_BAN"] = 4000, ["Country_data_BAR"] = 2400, ["Country_data_BEL"] = 52000, ["Country_data_BER"] = 2300, ["Country_data_BHR"] = 4800, ["Country_data_BIH"] = 13000, ["Country_data_BLR"] = 24000, ["Country_data_BOL"] = 5900, ["Country_data_BOT"] = 2500, ["Country_data_BRA"] = 58000, ["Country_data_BUL"] = 26000, ["Country_data_Bahamas"] = 9800, ["Country_data_Bahrain"] = 12000, ["Country_data_Bangladesh"] = 19000, ["Country_data_Barbados"] = 8100, ["Country_data_Belarus"] = 44000, ["Country_data_Belgium"] = 90000, ["Country_data_Belize"] = 5300, ["Country_data_Benin"] = 7500, ["Country_data_Bermuda"] = 5800, ["Country_data_Bhutan"] = 4700, ["Country_data_Bolivia"] = 15000, ["Country_data_Bosnia_and_Herzegovina"] = 29000, ["Country_data_Botswana"] = 9400, ["Country_data_Brazil"] = 103000, ["Country_data_British_Columbia"] = 3500, ["Country_data_British_Raj"] = 2300, ["Country_data_British_Virgin_Islands"] = 3300, ["Country_data_Brunei"] = 6400, ["Country_data_Bulgaria"] = 53000, ["Country_data_Burkina_Faso"] = 10000, ["Country_data_Burma"] = 2700, ["Country_data_Burundi"] = 6200, ["Country_data_CAM"] = 2200, ["Country_data_CAN"] = 59000, ["Country_data_CGO"] = 2500, ["Country_data_CHE"] = 4900, ["Country_data_CHI"] = 18000, ["Country_data_CHL"] = 2100, ["Country_data_CHN"] = 42000, ["Country_data_CIV"] = 8300, ["Country_data_CMR"] = 8900, ["Country_data_COD"] = 3300, ["Country_data_COL"] = 25000, ["Country_data_CPV"] = 2100, ["Country_data_CRC"] = 6700, ["Country_data_CRO"] = 34000, ["Country_data_CUB"] = 10000, ["Country_data_CYP"] = 9300, ["Country_data_CZE"] = 47000, ["Country_data_California"] = 5900, ["Country_data_Cambodia"] = 9100, ["Country_data_Cameroon"] = 18000, ["Country_data_Canada"] = 123000, ["Country_data_Cape_Verde"] = 6400, ["Country_data_Castile_and_León"] = 2000, ["Country_data_Catalonia"] = 3100, ["Country_data_Cayman_Islands"] = 4200, ["Country_data_Central_African_Republic"] = 5100, ["Country_data_Chad"] = 5600, ["Country_data_Chile"] = 41000, ["Country_data_China"] = 85000, ["Country_data_Chinese_Taipei"] = 20000, ["Country_data_Colombia"] = 47000, ["Country_data_Colorado"] = 5600, ["Country_data_Comoros"] = 4500, ["Country_data_Confederate_States_of_America"] = 3000, ["Country_data_Connecticut"] = 3200, ["Country_data_Cook_Islands"] = 3900, ["Country_data_Costa_Rica"] = 18000, ["Country_data_Croatia"] = 57000, ["Country_data_Cuba"] = 23000, ["Country_data_Curaçao"] = 3600, ["Country_data_Cyprus"] = 23000, ["Country_data_Czech_Republic"] = 82000, ["Country_data_Czechoslovakia"] = 19000, ["Country_data_DEN"] = 35000, ["Country_data_DEU"] = 8900, ["Country_data_DNK"] = 3700, ["Country_data_DOM"] = 7400, ["Country_data_DRC"] = 2000, ["Country_data_Democratic_Republic_of_the_Congo"] = 13000, ["Country_data_Denmark"] = 70000, ["Country_data_Djibouti"] = 4700, ["Country_data_Dominica"] = 4300, ["Country_data_Dominican_Republic"] = 18000, ["Country_data_ECU"] = 12000, ["Country_data_EGY"] = 14000, ["Country_data_ENG"] = 47000, ["Country_data_ESA"] = 2300, ["Country_data_ESP"] = 74000, ["Country_data_EST"] = 15000, ["Country_data_ETH"] = 3700, ["Country_data_EU"] = 3700, ["Country_data_East_Germany"] = 14000, ["Country_data_East_Timor"] = 5100, ["Country_data_Ecuador"] = 25000, ["Country_data_Egypt"] = 32000, ["Country_data_El_Salvador"] = 13000, ["Country_data_Empire_of_Japan"] = 4000, ["Country_data_England"] = 97000, ["Country_data_Equatorial_Guinea"] = 5200, ["Country_data_Eritrea"] = 5500, ["Country_data_Estonia"] = 35000, ["Country_data_Eswatini"] = 5100, ["Country_data_Ethiopia"] = 13000, ["Country_data_Europe"] = 2400, ["Country_data_European_Union"] = 7400, ["Country_data_FIJ"] = 3900, ["Country_data_FIN"] = 35000, ["Country_data_FRA"] = 100000, ["Country_data_FRG"] = 15000, ["Country_data_FRO"] = 2100, ["Country_data_FR_Yugoslavia"] = 4000, ["Country_data_Faroe_Islands"] = 5500, ["Country_data_Federated_States_of_Micronesia"] = 3100, ["Country_data_Fiji"] = 12000, ["Country_data_Finland"] = 69000, ["Country_data_Florida"] = 6600, ["Country_data_France"] = 195000, ["Country_data_French_Guiana"] = 2100, ["Country_data_French_Polynesia"] = 3800, ["Country_data_GAB"] = 2500, ["Country_data_GAM"] = 2100, ["Country_data_GBR"] = 56000, ["Country_data_GDR"] = 8500, ["Country_data_GEO"] = 14000, ["Country_data_GER"] = 83000, ["Country_data_GHA"] = 10000, ["Country_data_GRE"] = 26000, ["Country_data_GUA"] = 5100, ["Country_data_GUI"] = 3300, ["Country_data_GUY"] = 2300, ["Country_data_Gabon"] = 7700, ["Country_data_Gambia"] = 7000, ["Country_data_Georgia"] = 10000, ["Country_data_Georgia_(U.S._state)"] = 2800, ["Country_data_Georgia_(country)"] = 29000, ["Country_data_German_Empire"] = 5400, ["Country_data_Germany"] = 153000, ["Country_data_Ghana"] = 24000, ["Country_data_Gibraltar"] = 5000, ["Country_data_Great_Britain"] = 75000, ["Country_data_Greece"] = 58000, ["Country_data_Greenland"] = 2900, ["Country_data_Grenada"] = 5400, ["Country_data_Guadeloupe"] = 2800, ["Country_data_Guam"] = 4800, ["Country_data_Guatemala"] = 13000, ["Country_data_Guernsey"] = 2200, ["Country_data_Guinea"] = 8500, ["Country_data_Guinea-Bissau"] = 5100, ["Country_data_Guyana"] = 7500, ["Country_data_HAI"] = 3300, ["Country_data_HKG"] = 13000, ["Country_data_HON"] = 4400, ["Country_data_HUN"] = 38000, ["Country_data_Haiti"] = 8900, ["Country_data_Honduras"] = 12000, ["Country_data_Hong_Kong"] = 26000, ["Country_data_Hungary"] = 71000, ["Country_data_IDN"] = 5100, ["Country_data_INA"] = 11000, ["Country_data_IND"] = 31000, ["Country_data_IRE"] = 11000, ["Country_data_IRI"] = 5600, ["Country_data_IRL"] = 22000, ["Country_data_IRN"] = 6500, ["Country_data_IRQ"] = 4300, ["Country_data_ISL"] = 8800, ["Country_data_ISR"] = 21000, ["Country_data_ITA"] = 87000, ["Country_data_Iceland"] = 23000, ["Country_data_Illinois"] = 4500, ["Country_data_India"] = 110000, ["Country_data_Indiana"] = 2700, ["Country_data_Indonesia"] = 37000, ["Country_data_Iowa"] = 2900, ["Country_data_Iran"] = 92000, ["Country_data_Iraq"] = 14000, ["Country_data_Ireland"] = 35000, ["Country_data_Isle_of_Man"] = 2900, ["Country_data_Israel"] = 46000, ["Country_data_Italy"] = 146000, ["Country_data_Ivory_Coast"] = 18000, ["Country_data_JAM"] = 10000, ["Country_data_JOR"] = 4200, ["Country_data_JP"] = 8200, ["Country_data_JPN"] = 60000, ["Country_data_Jamaica"] = 21000, ["Country_data_Japan"] = 120000, ["Country_data_Jersey"] = 2600, ["Country_data_Jordan"] = 12000, ["Country_data_KAZ"] = 20000, ["Country_data_KEN"] = 7600, ["Country_data_KGZ"] = 3900, ["Country_data_KOR"] = 32000, ["Country_data_KOS"] = 2500, ["Country_data_KSA"] = 6300, ["Country_data_KUW"] = 4200, ["Country_data_Kazakhstan"] = 34000, ["Country_data_Kenya"] = 20000, ["Country_data_Kingdom_of_France"] = 2100, ["Country_data_Kingdom_of_Great_Britain"] = 4800, ["Country_data_Kingdom_of_Italy"] = 4200, ["Country_data_Kiribati"] = 3000, ["Country_data_Kosovo"] = 9100, ["Country_data_Kuwait"] = 11000, ["Country_data_Kyrgyzstan"] = 9600, ["Country_data_LAT"] = 15000, ["Country_data_LBN"] = 2400, ["Country_data_LIB"] = 2600, ["Country_data_LIE"] = 3200, ["Country_data_LIT"] = 3100, ["Country_data_LTU"] = 13000, ["Country_data_LUX"] = 11000, ["Country_data_LVA"] = 2600, ["Country_data_Laos"] = 7600, ["Country_data_Latvia"] = 33000, ["Country_data_Lebanon"] = 15000, ["Country_data_Lesotho"] = 5400, ["Country_data_Liberia"] = 7300, ["Country_data_Libya"] = 8900, ["Country_data_Liechtenstein"] = 7900, ["Country_data_Lithuania"] = 32000, ["Country_data_Luxembourg"] = 24000, ["Country_data_MAC"] = 2500, ["Country_data_MAD"] = 2100, ["Country_data_MAR"] = 12000, ["Country_data_MAS"] = 11000, ["Country_data_MDA"] = 7800, ["Country_data_MEX"] = 31000, ["Country_data_MGL"] = 3000, ["Country_data_MKD"] = 7700, ["Country_data_MLI"] = 4500, ["Country_data_MLT"] = 5700, ["Country_data_MNE"] = 8000, ["Country_data_MON"] = 3800, ["Country_data_MOZ"] = 2300, ["Country_data_MRI"] = 2200, ["Country_data_MYA"] = 3100, ["Country_data_MYS"] = 3800, ["Country_data_Macau"] = 6400, ["Country_data_Macedonia"] = 4900, ["Country_data_Madagascar"] = 9300, ["Country_data_Malawi"] = 5800, ["Country_data_Malaysia"] = 37000, ["Country_data_Maldives"] = 6400, ["Country_data_Mali"] = 13000, ["Country_data_Malta"] = 17000, ["Country_data_Manitoba"] = 2600, ["Country_data_Marshall_Islands"] = 3800, ["Country_data_Martinique"] = 2900, ["Country_data_Maryland"] = 3000, ["Country_data_Massachusetts"] = 3000, ["Country_data_Mauritania"] = 5900, ["Country_data_Mauritius"] = 8200, ["Country_data_Mexico"] = 67000, ["Country_data_Michigan"] = 4300, ["Country_data_Minnesota"] = 3800, ["Country_data_Missouri"] = 2000, ["Country_data_Moldova"] = 19000, ["Country_data_Monaco"] = 10000, ["Country_data_Mongolia"] = 10000, ["Country_data_Montana"] = 2100, ["Country_data_Montenegro"] = 18000, ["Country_data_Montserrat"] = 2500, ["Country_data_Morocco"] = 28000, ["Country_data_Mozambique"] = 7500, ["Country_data_Myanmar"] = 14000, ["Country_data_NAM"] = 3600, ["Country_data_NED"] = 61000, ["Country_data_NEP"] = 2900, ["Country_data_NGA"] = 8400, ["Country_data_NGR"] = 8200, ["Country_data_NIR"] = 10000, ["Country_data_NLD"] = 6300, ["Country_data_NOR"] = 30000, ["Country_data_NZ"] = 3200, ["Country_data_NZL"] = 33000, ["Country_data_Namibia"] = 10000, ["Country_data_Nauru"] = 2500, ["Country_data_Nazi_Germany"] = 9900, ["Country_data_Nepal"] = 17000, ["Country_data_Netherlands"] = 115000, ["Country_data_Netherlands_Antilles"] = 2300, ["Country_data_New_Brunswick"] = 2500, ["Country_data_New_Caledonia"] = 3400, ["Country_data_New_Jersey"] = 4200, ["Country_data_New_South_Wales"] = 5800, ["Country_data_New_York"] = 4900, ["Country_data_New_York_(state)"] = 7000, ["Country_data_New_Zealand"] = 67000, ["Country_data_Newfoundland_and_Labrador"] = 2300, ["Country_data_Nicaragua"] = 8400, ["Country_data_Niger"] = 6000, ["Country_data_Nigeria"] = 33000, ["Country_data_North_Carolina"] = 3500, ["Country_data_North_Korea"] = 14000, ["Country_data_North_Macedonia"] = 18000, ["Country_data_Northern_Ireland"] = 15000, ["Country_data_Northern_Mariana_Islands"] = 2900, ["Country_data_Norway"] = 73000, ["Country_data_Nova_Scotia"] = 2300, ["Country_data_OMA"] = 2800, ["Country_data_Ohio"] = 4800, ["Country_data_Oman"] = 9000, ["Country_data_Ontario"] = 3900, ["Country_data_Ottoman_Empire"] = 2500, ["Country_data_PAK"] = 8100, ["Country_data_PAN"] = 5800, ["Country_data_PAR"] = 10000, ["Country_data_PER"] = 12000, ["Country_data_PHI"] = 12000, ["Country_data_PHL"] = 2600, ["Country_data_PNG"] = 2700, ["Country_data_POL"] = 51000, ["Country_data_POR"] = 32000, ["Country_data_PRC"] = 2200, ["Country_data_PRK"] = 4600, ["Country_data_PRT"] = 2900, ["Country_data_PUR"] = 7400, ["Country_data_Pakistan"] = 29000, ["Country_data_Palau"] = 3000, ["Country_data_Palestine"] = 6900, ["Country_data_Panama"] = 16000, ["Country_data_Papua_New_Guinea"] = 8000, ["Country_data_Paraguay"] = 21000, ["Country_data_Pennsylvania"] = 3700, ["Country_data_People's_Republic_of_China"] = 3200, ["Country_data_Peru"] = 31000, ["Country_data_Philippines"] = 35000, ["Country_data_Poland"] = 151000, ["Country_data_Portugal"] = 69000, ["Country_data_Prussia"] = 2600, ["Country_data_Puerto_Rico"] = 17000, ["Country_data_QAT"] = 8000, ["Country_data_Qatar"] = 18000, ["Country_data_Quebec"] = 4200, ["Country_data_ROM"] = 13000, ["Country_data_ROU"] = 27000, ["Country_data_RSA"] = 32000, ["Country_data_RUS"] = 63000, ["Country_data_RWA"] = 2100, ["Country_data_Republic_of_China"] = 5700, ["Country_data_Republic_of_Ireland"] = 26000, ["Country_data_Republic_of_the_Congo"] = 7800, ["Country_data_Romania"] = 69000, ["Country_data_Russia"] = 115000, ["Country_data_Russian_Empire"] = 4900, ["Country_data_Rwanda"] = 7800, ["Country_data_SAM"] = 3100, ["Country_data_SCG"] = 3100, ["Country_data_SCO"] = 26000, ["Country_data_SEN"] = 8200, ["Country_data_SER"] = 3600, ["Country_data_SGP"] = 2900, ["Country_data_SIN"] = 7000, ["Country_data_SLO"] = 19000, ["Country_data_SLV"] = 3100, ["Country_data_SMR"] = 3200, ["Country_data_SPA"] = 4800, ["Country_data_SRB"] = 27000, ["Country_data_SRI"] = 4800, ["Country_data_SUI"] = 43000, ["Country_data_SUR"] = 2100, ["Country_data_SVK"] = 29000, ["Country_data_SVN"] = 6800, ["Country_data_SWE"] = 57000, ["Country_data_SWI"] = 4800, ["Country_data_SYR"] = 3700, ["Country_data_Saint_Kitts_and_Nevis"] = 4800, ["Country_data_Saint_Lucia"] = 5000, ["Country_data_Saint_Vincent_and_the_Grenadines"] = 4900, ["Country_data_Samoa"] = 7800, ["Country_data_San_Marino"] = 8600, ["Country_data_Saskatchewan"] = 2900, ["Country_data_Saudi_Arabia"] = 20000, ["Country_data_Scotland"] = 52000, ["Country_data_Senegal"] = 18000, ["Country_data_Serbia"] = 55000, ["Country_data_Serbia_and_Montenegro"] = 5100, ["Country_data_Seychelles"] = 5600, ["Country_data_Sierra_Leone"] = 7500, ["Country_data_Singapore"] = 27000, ["Country_data_Slovakia"] = 51000, ["Country_data_Slovenia"] = 43000, ["Country_data_Solomon_Islands"] = 4700, ["Country_data_Somalia"] = 6300, ["Country_data_South_Africa"] = 70000, ["Country_data_South_Carolina"] = 3200, ["Country_data_South_Korea"] = 67000, ["Country_data_South_Sudan"] = 4300, ["Country_data_Soviet_Union"] = 37000, ["Country_data_Spain"] = 134000, ["Country_data_Sri_Lanka"] = 19000, ["Country_data_Sudan"] = 8300, ["Country_data_Suriname"] = 6500, ["Country_data_Sweden"] = 102000, ["Country_data_Switzerland"] = 84000, ["Country_data_Syria"] = 16000, ["Country_data_São_Tomé_and_Príncipe"] = 3400, ["Country_data_TAN"] = 2600, ["Country_data_TCH"] = 11000, ["Country_data_THA"] = 22000, ["Country_data_TJK"] = 2800, ["Country_data_TKM"] = 2900, ["Country_data_TOG"] = 2100, ["Country_data_TPE"] = 16000, ["Country_data_TRI"] = 4800, ["Country_data_TUN"] = 11000, ["Country_data_TUR"] = 28000, ["Country_data_Taiwan"] = 13000, ["Country_data_Tajikistan"] = 9200, ["Country_data_Tanzania"] = 13000, ["Country_data_Texas"] = 5300, ["Country_data_Thailand"] = 45000, ["Country_data_Togo"] = 7100, ["Country_data_Tonga"] = 6500, ["Country_data_Trinidad_and_Tobago"] = 14000, ["Country_data_Tunisia"] = 22000, ["Country_data_Turkey"] = 72000, ["Country_data_Turkmenistan"] = 8100, ["Country_data_Turks_and_Caicos_Islands"] = 2700, ["Country_data_Tuvalu"] = 2900, ["Country_data_U.S."] = 2100, ["Country_data_U.S._Virgin_Islands"] = 4800, ["Country_data_UAE"] = 9500, ["Country_data_UGA"] = 4300, ["Country_data_UK"] = 19000, ["Country_data_UKGBI"] = 3100, ["Country_data_UKR"] = 38000, ["Country_data_URS"] = 14000, ["Country_data_URU"] = 15000, ["Country_data_US"] = 4900, ["Country_data_USA"] = 135000, ["Country_data_USSR"] = 4500, ["Country_data_UZB"] = 12000, ["Country_data_Uganda"] = 13000, ["Country_data_Ukraine"] = 74000, ["Country_data_United_Arab_Emirates"] = 20000, ["Country_data_United_Kingdom"] = 89000, ["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 4400, ["Country_data_United_Nations"] = 4000, ["Country_data_United_States"] = 284000, ["Country_data_United_States_of_America"] = 5000, ["Country_data_Uruguay"] = 29000, ["Country_data_Uzbekistan"] = 21000, ["Country_data_VEN"] = 17000, ["Country_data_VIE"] = 6600, ["Country_data_Vanuatu"] = 5200, ["Country_data_Vatican_City"] = 2300, ["Country_data_Venezuela"] = 33000, ["Country_data_Vietnam"] = 23000, ["Country_data_Virginia"] = 2900, ["Country_data_WAL"] = 17000, ["Country_data_Wales"] = 34000, ["Country_data_Washington"] = 3400, ["Country_data_Washington,_D.C."] = 2200, ["Country_data_Washington_(state)"] = 3600, ["Country_data_West_Germany"] = 24000, ["Country_data_West_Indies"] = 2600, ["Country_data_Wisconsin"] = 5200, ["Country_data_YUG"] = 9900, ["Country_data_Yemen"] = 7900, ["Country_data_Yugoslavia"] = 18000, ["Country_data_ZAF"] = 4700, ["Country_data_ZAM"] = 3400, ["Country_data_ZIM"] = 8300, ["Country_data_Zambia"] = 9800, ["Country_data_Zimbabwe"] = 18000, ["Country_flagbio"] = 28000, ["Country_name"] = 23000, ["Country_showdata"] = 6200, ["Country_topics"] = 22000, ["County"] = 7900, ["County_(judet)_of_Romania"] = 3300, ["Course_assignment"] = 4200, ["Course_details"] = 6400, ["Course_instructor"] = 2500, ["Cquote"] = 37000, ["Cr"] = 4300, ["Cr-rt"] = 2100, ["Create_taxonomy/link"] = 108000, ["Cref2"] = 2300, ["Cricinfo"] = 24000, ["Cricketarchive"] = 3100, ["Crime_opentask"] = 49000, ["Croatian_Census_2021"] = 3600, ["Cross"] = 3100, ["Crossreference"] = 2600, ["Crossreference/styles.css"] = 2600, ["Csv"] = 3000, ["Ct"] = 12000, ["Curlie"] = 6800, ["Currency"] = 3600, ["Current_events"] = 8300, ["Current_events/styles.css"] = 8300, ["Currentdate"] = 23000, ["Cvt"] = 105000, ["Cycling_Archives"] = 4300, ["Cycling_archives"] = 2500, ["Cycling_data_LTD"] = 2100, ["Cycling_data_MOV_men"] = 2000, ["Cycling_data_TJV"] = 2100, ["Cycling_team_link"] = 12000, ["Module:CFB_schedule"] = 26000, ["Module:CallAssert"] = 245000, ["Module:CanadaByProvinceCatNav"] = 8400, ["Module:Cat_main"] = 200000, ["Module:Catalog_lookup_link"] = 516000, ["Module:Category_described_in_year"] = 5700, ["Module:Category_described_in_year/conf"] = 5700, ["Module:Category_handler"] = 4580000, ["Module:Category_handler/blacklist"] = 4580000, ["Module:Category_handler/config"] = 4580000, ["Module:Category_handler/data"] = 4580000, ["Module:Category_handler/shared"] = 4580000, ["Module:Category_more_if_exists"] = 40000, ["Module:Category_pair"] = 6100, ["Module:Category_see_also"] = 39000, ["Module:Celestial_object_quadrangle"] = 2300, ["Module:Check_DYK_hook"] = 115000, ["Module:Check_for_clobbered_parameters"] = 1220000, ["Module:Check_for_deprecated_parameters"] = 60000, ["Module:Check_for_unknown_parameters"] = 19200000, ["Module:Check_isxn"] = 481000, ["Module:Check_winner_by_scores"] = 13000, ["Module:Checkuser"] = 76000, ["Module:Chem2"] = 5100, ["Module:Chem2/styles.css"] = 5100, ["Module:Citation/CS1"] = 5630000, ["Module:Citation/CS1/COinS"] = 5630000, ["Module:Citation/CS1/Configuration"] = 5630000, ["Module:Citation/CS1/Date_validation"] = 5630000, ["Module:Citation/CS1/Identifiers"] = 5630000, ["Module:Citation/CS1/Suggestions"] = 25000, ["Module:Citation/CS1/Utilities"] = 5630000, ["Module:Citation/CS1/Whitelist"] = 5630000, ["Module:Citation/CS1/styles.css"] = 5770000, ["Module:Cite_IUCN"] = 58000, ["Module:Cite_Q"] = 48000, ["Module:Cite_tweet"] = 37000, ["Module:Cite_web"] = 40000, ["Module:Clade"] = 7700, ["Module:Class"] = 10300000, ["Module:Class/definition.json"] = 10300000, ["Module:Class/styles.css"] = 9380000, ["Module:Class_mask"] = 10600000, ["Module:Clickable_button_2"] = 967000, ["Module:Collapsible_list"] = 54000, ["Module:College_color"] = 129000, ["Module:College_color/data"] = 129000, ["Module:Color_contrast"] = 503000, ["Module:Color_contrast/colors"] = 505000, ["Module:Commons_link"] = 259000, ["Module:Complex_date"] = 66000, ["Module:Convert"] = 1240000, ["Module:Convert/data"] = 1240000, ["Module:Convert/helper"] = 8700, ["Module:Convert/text"] = 1240000, ["Module:Convert/wikidata"] = 3300, ["Module:Convert/wikidata/data"] = 3300, ["Module:ConvertNumeric"] = 15000, ["Module:Convert_character_width"] = 2800, ["Module:Convert_character_width/data"] = 2800, ["Module:Coordinates"] = 1340000, ["Module:Coordinates/styles.css"] = 1340000, ["Module:Copied"] = 19000, ["Module:Count_banners"] = 48000, ["Module:CountryAdjectiveDemonym"] = 45000, ["Module:CountryAdjectiveDemonym/Adjectives"] = 45000, ["Module:CountryAdjectiveDemonym/Demonyms"] = 45000, ["Module:CountryAdjectiveDemonym/The"] = 45000, ["Module:CountryData"] = 143000, ["Module:CountryData/cacheA"] = 12000, ["Module:CountryData/cacheB"] = 8400, ["Module:CountryData/cacheC"] = 12000, ["Module:CountryData/cacheD"] = 4600, ["Module:CountryData/cacheE"] = 2800, ["Module:CountryData/cacheF"] = 2600, ["Module:CountryData/cacheG"] = 2700, ["Module:CountryData/summary"] = 143000, ["Module:Country_adjective"] = 4300, ["Module:Country_alias"] = 53000, ["Module:Country_alias/data"] = 53000, ["Module:Currency"] = 3700, ["Module:Currency/Presentation"] = 3700, } aced898b85e10a9ce468c2d9ace38513eb8d4392 Module:Transclusion count/data/D 828 1586 2921 2023-10-01T05:37:06Z w>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["D&D"] = 3900, ["D&D_to-do"] = 5600, ["D-da"] = 2600, ["DANFS"] = 8400, ["DC-Comics-trademark-copyright"] = 2100, ["DCS_Sri_Lanka"] = 2100, ["DDR"] = 2800, ["DEC"] = 8700, ["DECADE"] = 283000, ["DEN"] = 6800, ["DEU"] = 17000, ["DMC"] = 58000, ["DMCA"] = 2350000, ["DNB"] = 8800, ["DNB-Portal"] = 2100, ["DNB_portal"] = 3800, ["DNK"] = 7800, ["DNZB"] = 3600, ["DOM"] = 2100, ["DOWs"] = 2700, ["DRV_links"] = 3600, ["DWT"] = 2300, ["DYKC"] = 6700, ["DYKF"] = 2100, ["DYK_blue"] = 3400, ["DYK_checklist"] = 14000, ["DYK_conditions"] = 67000, ["DYK_files"] = 2100, ["DYK_header"] = 34000, ["DYK_nompage_links"] = 79000, ["DYK_talk"] = 103000, ["DYK_talk/date"] = 103000, ["DYK_tools"] = 52000, ["DYK_tools/styles.css"] = 52000, ["DYKfile"] = 12000, ["DZA"] = 2800, ["Dab"] = 18000, ["Dagger"] = 18000, ["Dashboard.wikiedu.org_assignment"] = 14000, ["Dashboard.wikiedu.org_bibliography/guide"] = 6700, ["Dashboard.wikiedu.org_course_header"] = 6200, ["Dashboard.wikiedu.org_course_header/edit-note"] = 6200, ["Dashboard.wikiedu.org_draft_template/about_this_sandbox"] = 10000, ["Dashboard.wikiedu.org_evaluate_article/guide"] = 8200, ["Dashboard.wikiedu.org_peer_review/guide"] = 12000, ["Dashboard.wikiedu.org_sandbox"] = 96000, ["Dashboard.wikiedu.org_student_editor"] = 84000, ["Dashboard.wikiedu.org_student_program_sandbox"] = 95000, ["Dashboard.wikiedu.org_talk_course_link"] = 85000, ["Dashboard.wikiedu.org_user_talk"] = 2200, ["Date"] = 42000, ["Date-mf"] = 39000, ["Date_table_sorting"] = 39000, ["Dated_maintenance_category"] = 2410000, ["Dated_maintenance_category_(articles)"] = 2350000, ["Dated_maintenance_category_by_type_(articles)"] = 22000, ["Davis_Cup_player"] = 2500, ["Day+1"] = 6900, ["Day-1"] = 8300, ["Dbox"] = 3000, ["Dda"] = 5200, ["Dead_YouTube_link"] = 2700, ["Dead_Youtube_links"] = 2200, ["Dead_link"] = 287000, ["Deadlink"] = 3100, ["Death-date"] = 11000, ["Death-date_and_age"] = 10000, ["Death_date"] = 9200, ["Death_date_and_age"] = 389000, ["Death_date_and_given_age"] = 2700, ["Death_date_text"] = 11000, ["Death_year_and_age"] = 16000, ["Death_year_category_header"] = 2000, ["Decade"] = 2100, ["Decade_link"] = 32000, ["Decimals"] = 3100, ["Decline"] = 2500, ["Declined"] = 3200, ["Decrease"] = 35000, ["Define"] = 4400, ["Deg2DMS"] = 3400, ["Deletion_review_log_header"] = 5700, ["Deletion_review_log_header/Core"] = 5700, ["Delink"] = 1990000, ["Delink_question_hyphen-minus"] = 295000, ["Delrevxfd"] = 3600, ["Democratic_Party_(US)/meta/shading"] = 15000, ["Description_missing"] = 7100, ["Designation/abbreviation"] = 8300, ["Designation/color"] = 76000, ["Designation/colour"] = 79000, ["Designation/colour2"] = 18000, ["Designation/divbox"] = 30000, ["Designation/text"] = 42000, ["Designation_list"] = 5400, ["Details"] = 4500, ["DetailsLink"] = 5900, ["Detect_singular"] = 202000, ["Deutsche_Bahn_station_codes"] = 2200, ["DfE_performance_tables"] = 4500, ["Diff"] = 30000, ["Diff2"] = 12000, ["Digits"] = 21000, ["Directories_box"] = 3200, ["Disamb"] = 2200, ["Disambig"] = 63000, ["Disambig-Class"] = 12000, ["DisambigProj"] = 12000, ["DisambigProject"] = 150000, ["Disambigproject"] = 5800, ["Disambiguation"] = 218000, ["Disambiguation/cat"] = 218000, ["Disambiguation_page_short_description"] = 354000, ["Discogs_artist"] = 17000, ["Discogs_master"] = 12000, ["Discogs_release"] = 3100, ["Discussion_bottom"] = 12000, ["Discussion_top"] = 13000, ["DisestcatCountry"] = 9500, ["DisestcatCountry/core"] = 9500, ["DisestcatCountryDecade"] = 2600, ["DisestcatUSstate"] = 4900, ["DisestcatUSstate/core"] = 4900, ["Disputed"] = 2200, ["Distinguish"] = 98000, ["Disused_Rail_Start"] = 3900, ["Disused_rail_start"] = 4300, ["Disused_style"] = 4700, ["Div_col"] = 400000, ["Div_col/styles.css"] = 401000, ["Div_col_end"] = 302000, ["Div_col_start"] = 2900, ["Div_end"] = 2700, ["Divbox"] = 347000, ["Divbox/styles.css"] = 370000, ["Dividing_line"] = 4000, ["Dmbox"] = 461000, ["Dmbox/styles.css"] = 461000, ["Do_not_move_to_Commons"] = 16000, ["Doc"] = 3600, ["Documentation"] = 121000, ["Documentation_subpage"] = 95000, ["Dog_opentask"] = 3500, ["Doi"] = 26000, ["Doing"] = 3600, ["Don't_edit_this_line"] = 108000, ["Don't_edit_this_line_always_display"] = 479000, ["Don't_edit_this_line_extinct"] = 479000, ["Don't_edit_this_line_link_target"] = 479000, ["Don't_edit_this_line_link_text"] = 479000, ["Don't_edit_this_line_parent"] = 479000, ["Don't_edit_this_line_rank"] = 479000, ["Don't_edit_this_line_refs"] = 108000, ["Don't_edit_this_line_same_as"] = 479000, ["Done"] = 103000, ["Doppelganger"] = 2800, ["Double+single"] = 2800, ["Double-dagger"] = 19000, ["Dr"] = 3400, ["Dr-logno"] = 3400, ["Dr-make"] = 3500, ["Dr-yr"] = 3400, ["Draft"] = 4300, ["Draft_article"] = 6400, ["Draft_article_check"] = 6500, ["Draft_categories"] = 8100, ["Draft_other"] = 112000, ["Draft_topics"] = 24000, ["Drafts_moved_from_mainspace"] = 8700, ["Draw"] = 3900, ["Draw_key"] = 18000, ["Draw_links"] = 13000, ["Drep"] = 3500, ["Drugbankcite"] = 4300, ["Drugbox"] = 7600, ["Drugs.com"] = 3800, ["Ds/talk_notice"] = 6400, ["Dts"] = 38000, ["Dubious"] = 8100, ["Duck"] = 2900, ["Dummytab"] = 5000, ["Duration"] = 38000, ["Dutch_municipality"] = 2700, ["Dyktalk"] = 42000, ["Dynamic_list"] = 10000, ["Module:DYK_checklist"] = 14000, ["Module:DYK_checklist/data"] = 14000, ["Module:DYK_nompage_links"] = 79000, ["Module:Data"] = 149000, ["Module:Date"] = 1380000, ["Module:DateI18n"] = 66000, ["Module:Date_table_sorting"] = 39000, ["Module:DecodeEncode"] = 117000, ["Module:Delink"] = 2080000, ["Module:Detect_singular"] = 1530000, ["Module:Disambiguation"] = 15800000, ["Module:Disambiguation/templates"] = 15400000, ["Module:Distinguish"] = 98000, ["Module:Documentation"] = 167000, ["Module:Documentation/config"] = 167000, ["Module:Documentation/styles.css"] = 167000, ["Module:Draft_topics"] = 24000, ["Module:Duration"] = 238000, } 8f683619a2978bf72bfba8daad66e905645f9921 Module:Transclusion count/data/E 828 585 1318 2023-10-01T05:37:16Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["EB1911"] = 12000, ["EB1911_poster"] = 3500, ["ECU"] = 2300, ["EC_number"] = 4000, ["EGY"] = 3300, ["EHAK"] = 3300, ["ENFA"] = 3600, ["ENG"] = 8600, ["ENGLs"] = 3100, ["EOL"] = 2500, ["ER_to_list_entry"] = 5800, ["ESP"] = 15000, ["ESPNcricinfo"] = 3500, ["EST"] = 4200, ["Earthquake_magnitude"] = 2100, ["Eastern_name_order"] = 4400, ["Ebicite"] = 7100, ["Ec"] = 28000, ["Ed"] = 5900, ["Ed_right"] = 3000, ["Edit"] = 702000, ["EditAtWikidata"] = 763000, ["EditOnWikidata"] = 36000, ["Edit_COI"] = 8100, ["Edit_COI/answered"] = 5100, ["Edit_COI/declined"] = 3200, ["Edit_a_taxon"] = 108000, ["Edit_conflict"] = 31000, ["Edit_count_link"] = 7800, ["Edit_extended-protected"] = 3600, ["Edit_fully-protected"] = 7300, ["Edit_on_Wikidata"] = 41000, ["Edit_protected"] = 3300, ["Edit_semi-protected"] = 35000, ["Edit_summary_field"] = 9900, ["Edit_summary_field/OOUI"] = 11000, ["Edit_taxonomy"] = 371000, ["Edit_template-protected"] = 4100, ["Editcount"] = 3000, ["Editnotice"] = 16000, ["Editnotice/notice"] = 13000, ["Editnotice_for_lists_of_people"] = 2500, ["EduBase"] = 4500, ["Educational_assignment"] = 4000, ["Efn"] = 181000, ["Efn-lr"] = 2600, ["Efn-ua"] = 4300, ["Efs_player"] = 5400, ["Efs_start"] = 5500, ["Election_box_2-party-preferred"] = 2300, ["Election_box_2pp"] = 2300, ["Election_box_begin"] = 31000, ["Election_box_begin_no_change"] = 14000, ["Election_box_candidate"] = 7000, ["Election_box_candidate_AU_party"] = 3500, ["Election_box_candidate_no_change"] = 2700, ["Election_box_candidate_with_party_link"] = 26000, ["Election_box_candidate_with_party_link_no_change"] = 14000, ["Election_box_end"] = 44000, ["Election_box_formal"] = 3500, ["Election_box_gain_with_party_link"] = 11000, ["Election_box_gain_with_party_link_no_swing"] = 2100, ["Election_box_hold_AU_party"] = 2900, ["Election_box_hold_with_party_link"] = 15000, ["Election_box_hold_with_party_link_no_change"] = 4700, ["Election_box_hold_with_party_link_no_swing"] = 4300, ["Election_box_hold_with_party_link_without_swing"] = 2100, ["Election_box_informal"] = 3900, ["Election_box_majority"] = 19000, ["Election_box_new_seat_win"] = 5000, ["Election_box_registered_electors"] = 6100, ["Election_box_total"] = 3200, ["Election_box_total_no_change"] = 12000, ["Election_box_turnout"] = 25000, ["Election_box_turnout_no_change"] = 2200, ["Election_box_winning_candidate_with_party_link"] = 18000, ["Election_box_winning_candidate_with_party_link_no_change"] = 14000, ["Election_results"] = 8000, ["Election_summary_begin"] = 4000, ["Election_summary_party"] = 4000, ["Election_table"] = 2500, ["Election_table/category"] = 2500, ["Elo_ranking"] = 3900, ["Elo_rating"] = 3900, ["Em"] = 1450000, ["Em_dash"] = 13000, ["Emblem_table"] = 3600, ["Emdash"] = 3000, ["Emmy_Awards/color"] = 4300, ["Empty_category"] = 3600, ["Empty_section"] = 30000, ["En"] = 3500, ["En_dash"] = 31000, ["En_dash_range"] = 177000, ["Encodefirst"] = 700000, ["End"] = 107000, ["End_box"] = 14000, ["End_date"] = 82000, ["End_date_and_age"] = 6700, ["End_of_course_week"] = 6300, ["End_of_students_table"] = 5300, ["Endangered_Languages_Project"] = 11000, ["Endash"] = 7600, ["Endflatlist"] = 305000, ["Endorse"] = 5100, ["Endplainlist"] = 34000, ["English_anime_licensee"] = 4200, ["English_football_updater"] = 3200, ["English_manga_publisher"] = 2300, ["Engvar"] = 9500, ["EngvarB"] = 105000, ["Ensure_AAA_contrast_ratio"] = 15000, ["Ensure_AA_contrast_ratio"] = 5000, ["Enum"] = 39000, ["Enzymes"] = 6200, ["Episode_list"] = 20000, ["Episode_list/sublist"] = 5500, ["Episode_table"] = 18000, ["Error"] = 22000, ["Error-small"] = 13000, ["ErrorBar2"] = 4600, ["Esc"] = 2400, ["Esccnty"] = 2700, ["Esoteric_file"] = 3400, ["Essay"] = 5100, ["Essay-like"] = 4500, ["EstcatContinent"] = 3200, ["EstcatContinent/core"] = 3200, ["EstcatCountry"] = 28000, ["EstcatCountry/core"] = 28000, ["EstcatCountryDecade"] = 5500, ["EstcatCountryDecade/core"] = 5500, ["EstcatUSstate"] = 10000, ["EstcatUSstate/core"] = 10000, ["Estonia_To-do"] = 22000, ["Ethnologue18"] = 3800, ["Europe_topic"] = 9900, ["Excerpt"] = 6300, ["Excerpt/styles.css"] = 6300, ["ExistNotRedirect"] = 50000, ["Expand_French"] = 17000, ["Expand_German"] = 16000, ["Expand_Italian"] = 4300, ["Expand_Japanese"] = 3700, ["Expand_Russian"] = 3600, ["Expand_Spanish"] = 7300, ["Expand_language"] = 78000, ["Expand_list"] = 11000, ["Expand_section"] = 38000, ["Expand_wikitext"] = 102000, ["Explain"] = 2700, ["Extended_football_squad_player"] = 6400, ["Extended_football_squad_start"] = 6400, ["External_links"] = 3600, ["External_media"] = 11000, ["External_music_video"] = 23000, ["Extinct"] = 12000, ["Extra_album_cover"] = 8300, ["Extra_chronology"] = 15000, ["Extract"] = 8200, ["Module:EditAtWikidata"] = 1930000, ["Module:Effective_protection_expiry"] = 54000, ["Module:Effective_protection_level"] = 56000, ["Module:Election_results"] = 8000, ["Module:Endangered_Languages_Project"] = 11000, ["Module:English_variant_notice"] = 57000, ["Module:Engvar"] = 11000, ["Module:Episode_list"] = 26000, ["Module:Episode_table"] = 19000, ["Module:Error"] = 40000, ["Module:Escape"] = 11000, ["Module:Excerpt"] = 6300, ["Module:Excerpt/config"] = 6300, ["Module:Excerpt/portals"] = 4600, ["Module:ExistNotRedirect"] = 50000, ["Module:Expand_wikitext"] = 102000, ["Module:Exponential_search"] = 617000, ["Module:External_links"] = 66000, ["Module:External_links/conf"] = 66000, ["Module:External_links/conf/Sports"] = 66000, } bdca9b06054258d1db712dc02d21aa4fa46d74c2 Module:Transclusion count/data/I 828 70 1093 136 2023-10-01T05:37:56Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["IAAF_name"] = 2100, ["IAST"] = 6400, ["IBDB_name"] = 9100, ["ICD10"] = 4700, ["ICD9"] = 4400, ["ICS"] = 2900, ["IDN"] = 3400, ["IMDb_episode"] = 10000, ["IMDb_episodes"] = 2700, ["IMDb_name"] = 154000, ["IMDb_title"] = 189000, ["IMO_Number"] = 4100, ["IMSLP"] = 8300, ["INA"] = 2100, ["IND"] = 7600, ["INR"] = 6500, ["INRConvert"] = 5700, ["INRConvert/CurrentRate"] = 5600, ["INRConvert/USD"] = 5600, ["INRConvert/out"] = 5600, ["IOC_profile"] = 5200, ["IP"] = 2600, ["IPA"] = 142000, ["IPA-de"] = 8100, ["IPA-es"] = 7900, ["IPA-fr"] = 44000, ["IPA-it"] = 6000, ["IPA-nl"] = 3900, ["IPA-pl"] = 4100, ["IPA-pt"] = 3300, ["IPA-ru"] = 2700, ["IPA-sl"] = 6900, ["IPA-th"] = 3000, ["IPA_audio_link"] = 3500, ["IPA_link"] = 3500, ["IPAc-cmn"] = 2300, ["IPAc-en"] = 48000, ["IPAc-pl"] = 51000, ["IPC_athlete"] = 2800, ["IPSummary"] = 78000, ["IP_summary"] = 79000, ["IPtalk"] = 18000, ["IPuser"] = 7100, ["IPvandal"] = 2700, ["IRC"] = 7300, ["IRI"] = 2300, ["IRL"] = 5500, ["IRN"] = 3600, ["ISBN"] = 462000, ["ISBN?"] = 2100, ["ISBNT"] = 39000, ["ISBN_missing"] = 2600, ["ISFDB_name"] = 4100, ["ISFDB_title"] = 4600, ["ISL"] = 2100, ["ISO_15924/script-example-character"] = 2800, ["ISO_15924/wp-article"] = 2800, ["ISO_15924/wp-article/format"] = 2800, ["ISO_15924/wp-article/label"] = 2700, ["ISO_3166_code"] = 519000, ["ISO_3166_name"] = 16000, ["ISO_639_name"] = 8100, ["ISP"] = 5300, ["ISR"] = 4900, ["ISSN"] = 12000, ["ISSN_link"] = 30000, ["ISTAT"] = 8100, ["ISU_figure_skater"] = 2500, ["ITA"] = 17000, ["ITF"] = 6300, ["ITF_profile"] = 9000, ["ITIS"] = 4400, ["ITN_talk"] = 10000, ["ITN_talk/date"] = 10000, ["IUCN_banner"] = 15000, ["I_sup"] = 4600, ["Iaaf_name"] = 7200, ["Ice_hockey"] = 19000, ["Ice_hockey_stats"] = 17000, ["Icehockeystats"] = 12000, ["Icon"] = 581000, ["If"] = 272000, ["If_all"] = 6400, ["If_between"] = 3800, ["If_both"] = 155000, ["If_empty"] = 3660000, ["If_first_display_both"] = 73000, ["If_in_page"] = 10000, ["If_last_display_both"] = 30000, ["If_preview"] = 58000, ["If_then_show"] = 289000, ["Ifempty"] = 4000, ["Ifeq"] = 16000, ["Iferror_then_show"] = 3300, ["Ifexist_not_redirect"] = 1300000, ["Ifnotempty"] = 14000, ["Ifnumber"] = 36000, ["Ifsubst"] = 446000, ["Ih"] = 7500, ["Ill"] = 117000, ["Illm"] = 6700, ["Image_frame"] = 4900, ["Image_label"] = 4500, ["Image_label_begin"] = 3800, ["Image_label_end"] = 3800, ["Image_label_small"] = 2600, ["Image_needed"] = 4500, ["Image_other"] = 272000, ["Image_requested"] = 167000, ["Image_requested/Category_helper"] = 159000, ["Imbox"] = 917000, ["Imdb_name"] = 5400, ["Imdb_title"] = 4000, ["Import_style"] = 11000, ["Import_style/inputbox.css"] = 11000, ["Importance"] = 5640000, ["Importance/colour"] = 5660000, ["Importance_mask"] = 10400000, ["Improve_categories"] = 7000, ["Improve_documentation"] = 2400, ["In_class"] = 5900, ["In_lang"] = 356000, ["In_progress"] = 3200, ["In_string"] = 75000, ["In_title"] = 19000, ["Inactive_WikiProject_banner"] = 205000, ["Inactive_userpage_blanked"] = 4900, ["Include-USGov"] = 29000, ["Incomplete_list"] = 23000, ["Inconclusive"] = 2100, ["Increase"] = 43000, ["Incumbent_pope"] = 4300, ["Indent"] = 4400, ["IndexFungorum"] = 2200, ["Indian_English"] = 4300, ["Indian_Rupee"] = 10000, ["Indian_railway_code"] = 3200, ["Inflation"] = 21000, ["Inflation-fn"] = 5400, ["Inflation-year"] = 4500, ["Inflation/IN/startyear"] = 5600, ["Inflation/UK"] = 4400, ["Inflation/UK/dataset"] = 4400, ["Inflation/UK/startyear"] = 4400, ["Inflation/US"] = 12000, ["Inflation/US-GDP"] = 2400, ["Inflation/US-GDP/dataset"] = 2400, ["Inflation/US-GDP/startyear"] = 2400, ["Inflation/US/dataset"] = 12000, ["Inflation/US/startyear"] = 12000, ["Inflation/fn"] = 6200, ["Inflation/year"] = 25000, ["Info"] = 7300, ["Infobox"] = 3230000, ["Infobox/Columns"] = 2400, ["Infobox/mobileviewfix.css"] = 147000, ["Infobox3cols"] = 17000, ["Infobox_AFL_biography"] = 14000, ["Infobox_Aircraft_Begin"] = 5300, ["Infobox_Aircraft_Type"] = 4700, ["Infobox_Athletics_Championships"] = 2700, ["Infobox_Australian_place"] = 15000, ["Infobox_CFL_biography"] = 2200, ["Infobox_COA_wide"] = 3200, ["Infobox_Canada_electoral_district"] = 2500, ["Infobox_Canadian_Football_League_biography"] = 5700, ["Infobox_Canadian_Football_League_biography/position"] = 5700, ["Infobox_Chinese"] = 20000, ["Infobox_Chinese/Chinese"] = 2700, ["Infobox_Chinese/Footer"] = 8700, ["Infobox_Chinese/Header"] = 8700, ["Infobox_Chinese/Korean"] = 17000, ["Infobox_Christian_leader"] = 18000, ["Infobox_French_commune"] = 38000, ["Infobox_GAA_player"] = 2700, ["Infobox_Gaelic_games_player"] = 5000, ["Infobox_German_location"] = 13000, ["Infobox_German_place"] = 14000, ["Infobox_Grand_Prix_race_report"] = 2000, ["Infobox_Greece_place"] = 2800, ["Infobox_Greek_Dimos"] = 2800, ["Infobox_Hindu_temple"] = 2400, ["Infobox_Indian_constituency"] = 4700, ["Infobox_Indian_constituency/defaultdata"] = 4700, ["Infobox_Italian_comune"] = 8100, ["Infobox_Korean_name"] = 15000, ["Infobox_Korean_name/categories"] = 15000, ["Infobox_MLB_yearly"] = 3100, ["Infobox_NASCAR_race_report"] = 2200, ["Infobox_NCAA_team_season"] = 18000, ["Infobox_NFL_biography"] = 28000, ["Infobox_NFL_player"] = 7700, ["Infobox_NFL_team_season"] = 3900, ["Infobox_NRHP"] = 72000, ["Infobox_NRHP/conv"] = 18000, ["Infobox_NRHP/locmapin2region"] = 66000, ["Infobox_Officeholder"] = 4800, ["Infobox_Olympic_event"] = 7300, ["Infobox_Olympic_event/games_text"] = 7300, ["Infobox_Paralympic_event"] = 2600, ["Infobox_Paralympic_event/games_text"] = 2600, ["Infobox_Politician"] = 2200, ["Infobox_Romanian_subdivision"] = 3200, ["Infobox_Russian_district"] = 2000, ["Infobox_Russian_inhabited_locality"] = 4500, ["Infobox_SCOTUS_case"] = 3700, ["Infobox_Site_of_Special_Scientific_Interest"] = 2000, ["Infobox_Swiss_town"] = 2800, ["Infobox_Switzerland_municipality"] = 2900, ["Infobox_Turkey_place"] = 19000, ["Infobox_U.S._county"] = 3000, ["Infobox_U.S._county/district"] = 3000, ["Infobox_UK_constituency"] = 2100, ["Infobox_UK_constituency/year"] = 2100, ["Infobox_UK_legislation"] = 3300, ["Infobox_UK_place"] = 26000, ["Infobox_UK_place/NoDialCode"] = 8000, ["Infobox_UK_place/NoPostCode"] = 3100, ["Infobox_UK_place/area"] = 2400, ["Infobox_UK_place/dist"] = 2500, ["Infobox_UK_place/local"] = 26000, ["Infobox_UK_place/styles.css"] = 26000, ["Infobox_UN_resolution"] = 2300, ["Infobox_US_Supreme_Court_case"] = 3800, ["Infobox_US_Supreme_Court_case/courts"] = 3800, ["Infobox_Wikipedia_user"] = 9800, ["Infobox_YouTube_personality"] = 2700, ["Infobox_YouTube_personality/styles.css"] = 2700, ["Infobox_academic"] = 14000, ["Infobox_aircraft_begin"] = 14000, ["Infobox_aircraft_occurrence"] = 2300, ["Infobox_aircraft_type"] = 12000, ["Infobox_airline"] = 4600, ["Infobox_airport"] = 15000, ["Infobox_airport/datatable"] = 15000, ["Infobox_album"] = 162000, ["Infobox_album/color"] = 192000, ["Infobox_album/link"] = 162000, ["Infobox_anatomy"] = 4500, ["Infobox_ancient_site"] = 5400, ["Infobox_animanga/Footer"] = 6800, ["Infobox_animanga/Header"] = 6800, ["Infobox_animanga/Print"] = 5500, ["Infobox_animanga/Video"] = 4700, ["Infobox_architect"] = 3700, ["Infobox_artist"] = 28000, ["Infobox_artist_discography"] = 5900, ["Infobox_artwork"] = 11000, ["Infobox_athlete"] = 2800, ["Infobox_automobile"] = 8400, ["Infobox_award"] = 13000, ["Infobox_badminton_player"] = 3200, ["Infobox_baseball_biography"] = 28000, ["Infobox_baseball_biography/style"] = 28000, ["Infobox_baseball_biography/styles.css"] = 28000, ["Infobox_basketball_biography"] = 21000, ["Infobox_basketball_biography/style"] = 21000, ["Infobox_basketball_club"] = 3000, ["Infobox_beauty_pageant"] = 2400, ["Infobox_bilateral_relations"] = 4400, ["Infobox_body_of_water"] = 18000, ["Infobox_book"] = 52000, ["Infobox_boxer"] = 5700, ["Infobox_bridge"] = 6000, ["Infobox_building"] = 27000, ["Infobox_character"] = 7600, ["Infobox_chess_biography"] = 3900, ["Infobox_chess_player"] = 3200, ["Infobox_church"] = 15000, ["Infobox_church/denomination"] = 15000, ["Infobox_church/font_color"] = 15000, ["Infobox_civil_conflict"] = 2400, ["Infobox_civilian_attack"] = 5500, ["Infobox_college_coach"] = 12000, ["Infobox_college_football_game"] = 2100, ["Infobox_college_sports_team_season"] = 40000, ["Infobox_college_sports_team_season/link"] = 40000, ["Infobox_college_sports_team_season/name"] = 40000, ["Infobox_college_sports_team_season/succession"] = 40000, ["Infobox_college_sports_team_season/team"] = 40000, ["Infobox_comic_book_title"] = 3000, ["Infobox_comics_character"] = 3600, ["Infobox_comics_creator"] = 3500, ["Infobox_comics_creator/styles.css"] = 3500, ["Infobox_company"] = 83000, ["Infobox_computing_device"] = 2300, ["Infobox_concert"] = 3300, ["Infobox_constituency"] = 5400, ["Infobox_country"] = 6400, ["Infobox_country/formernext"] = 6000, ["Infobox_country/imagetable"] = 5200, ["Infobox_country/multirow"] = 8300, ["Infobox_country/status_text"] = 2800, ["Infobox_country/styles.css"] = 6500, ["Infobox_country_at_games"] = 15000, ["Infobox_country_at_games/core"] = 15000, ["Infobox_country_at_games/see_also"] = 12000, ["Infobox_court_case"] = 4700, ["Infobox_court_case/images"] = 2400, ["Infobox_cricket_tournament"] = 2300, ["Infobox_cricketer"] = 32000, ["Infobox_cricketer/career"] = 32000, ["Infobox_cricketer/national_side"] = 7500, ["Infobox_criminal"] = 6400, ["Infobox_curler"] = 2600, ["Infobox_cycling_race_report"] = 4500, ["Infobox_cyclist"] = 16000, ["Infobox_dam"] = 5700, ["Infobox_designation_list"] = 20000, ["Infobox_designation_list/entry"] = 17000, ["Infobox_dim"] = 6900, ["Infobox_dim/core"] = 6900, ["Infobox_diocese"] = 3800, ["Infobox_drug"] = 9800, ["Infobox_drug/chemical_formula"] = 9800, ["Infobox_drug/data_page_link"] = 9800, ["Infobox_drug/formatATC"] = 9600, ["Infobox_drug/formatCASnumber"] = 9800, ["Infobox_drug/formatChEBI"] = 9800, ["Infobox_drug/formatChEMBL"] = 9800, ["Infobox_drug/formatChemDBNIAID"] = 9800, ["Infobox_drug/formatChemSpider"] = 9800, ["Infobox_drug/formatCompTox"] = 9800, ["Infobox_drug/formatDrugBank"] = 9800, ["Infobox_drug/formatIUPHARBPS"] = 9800, ["Infobox_drug/formatJmol"] = 9800, ["Infobox_drug/formatKEGG"] = 9800, ["Infobox_drug/formatPDBligand"] = 9100, ["Infobox_drug/formatPubChemCID"] = 9800, ["Infobox_drug/formatPubChemSID"] = 9800, ["Infobox_drug/formatUNII"] = 9800, ["Infobox_drug/legal_status"] = 10000, ["Infobox_drug/licence"] = 9800, ["Infobox_drug/maintenance_categories"] = 9800, ["Infobox_drug/non-ref-space"] = 4200, ["Infobox_drug/pregnancy_category"] = 9800, ["Infobox_drug/title"] = 9800, ["Infobox_election"] = 30000, ["Infobox_election/row"] = 30000, ["Infobox_election/shortname"] = 28000, ["Infobox_enzyme"] = 5100, ["Infobox_ethnic_group"] = 7300, ["Infobox_event"] = 5400, ["Infobox_family"] = 2100, ["Infobox_figure_skater"] = 4200, ["Infobox_film"] = 156000, ["Infobox_film/short_description"] = 152000, ["Infobox_film_awards"] = 2600, ["Infobox_film_awards/link"] = 2600, ["Infobox_film_awards/style"] = 2600, ["Infobox_food"] = 6900, ["Infobox_football_biography"] = 206000, ["Infobox_football_club"] = 27000, ["Infobox_football_club_season"] = 20000, ["Infobox_football_league"] = 2600, ["Infobox_football_league_season"] = 19000, ["Infobox_football_match"] = 5900, ["Infobox_football_tournament_season"] = 8000, ["Infobox_former_subdivision"] = 3300, ["Infobox_former_subdivision/styles.css"] = 3300, ["Infobox_galaxy"] = 2100, ["Infobox_game"] = 2600, ["Infobox_game_score"] = 3400, ["Infobox_gene"] = 13000, ["Infobox_given_name"] = 4000, ["Infobox_golfer"] = 4400, ["Infobox_golfer/highest_ranking"] = 4400, ["Infobox_government_agency"] = 10000, ["Infobox_government_cabinet"] = 2600, ["Infobox_gridiron_football_person"] = 2400, ["Infobox_gridiron_football_person/position"] = 5700, ["Infobox_gymnast"] = 3400, ["Infobox_handball_biography"] = 4900, ["Infobox_historic_site"] = 11000, ["Infobox_horseraces"] = 2600, ["Infobox_hospital"] = 6300, ["Infobox_hospital/care_system"] = 6300, ["Infobox_hospital/lists"] = 6300, ["Infobox_ice_hockey_biography"] = 20000, ["Infobox_ice_hockey_player"] = 19000, ["Infobox_ice_hockey_team"] = 3000, ["Infobox_ice_hockey_team_season"] = 2000, ["Infobox_international_football_competition"] = 5800, ["Infobox_islands"] = 8800, ["Infobox_islands/area"] = 9300, ["Infobox_islands/density"] = 9300, ["Infobox_islands/length"] = 8900, ["Infobox_islands/styles.css"] = 8800, ["Infobox_journal"] = 9700, ["Infobox_journal/Abbreviation_search"] = 9600, ["Infobox_journal/Bluebook_check"] = 9400, ["Infobox_journal/Former_check"] = 9400, ["Infobox_journal/ISO_4_check"] = 9400, ["Infobox_journal/ISSN-eISSN"] = 9500, ["Infobox_journal/Indexing_search"] = 9500, ["Infobox_journal/MathSciNet_check"] = 9400, ["Infobox_journal/NLM_check"] = 9400, ["Infobox_journal/frequency"] = 8600, ["Infobox_lake"] = 4200, ["Infobox_language"] = 9500, ["Infobox_language/family-color"] = 11000, ["Infobox_language/genetic"] = 6500, ["Infobox_language/linguistlist"] = 9500, ["Infobox_language/ref"] = 7100, ["Infobox_legislature"] = 3600, ["Infobox_library"] = 2200, ["Infobox_lighthouse"] = 2600, ["Infobox_lighthouse/light"] = 2600, ["Infobox_locomotive"] = 4900, ["Infobox_magazine"] = 7600, ["Infobox_manner_of_address"] = 3300, ["Infobox_mapframe"] = 80000, ["Infobox_martial_artist"] = 5700, ["Infobox_martial_artist/record"] = 5700, ["Infobox_medal_templates"] = 423000, ["Infobox_medical_condition"] = 10000, ["Infobox_medical_condition_(new)"] = 8200, ["Infobox_medical_details"] = 2000, ["Infobox_military_conflict"] = 22000, ["Infobox_military_installation"] = 9800, ["Infobox_military_person"] = 45000, ["Infobox_military_unit"] = 26000, ["Infobox_mine"] = 2100, ["Infobox_model"] = 2300, ["Infobox_monument"] = 2000, ["Infobox_mountain"] = 28000, ["Infobox_multi-sport_competition_event"] = 2400, ["Infobox_museum"] = 10000, ["Infobox_musical_artist"] = 121000, ["Infobox_musical_artist/color"] = 121000, ["Infobox_musical_artist/hCard_class"] = 313000, ["Infobox_musical_composition"] = 2900, ["Infobox_name"] = 7400, ["Infobox_name_module"] = 7000, ["Infobox_newspaper"] = 9700, ["Infobox_nobility"] = 2500, ["Infobox_noble"] = 7300, ["Infobox_officeholder"] = 219000, ["Infobox_officeholder/office"] = 224000, ["Infobox_official_post"] = 8100, ["Infobox_organization"] = 36000, ["Infobox_pageant_titleholder"] = 2900, ["Infobox_park"] = 7500, ["Infobox_person"] = 474000, ["Infobox_person/Wikidata"] = 4700, ["Infobox_person/height"] = 103000, ["Infobox_person/length"] = 7000, ["Infobox_person/weight"] = 66000, ["Infobox_philosopher"] = 3400, ["Infobox_planet"] = 4700, ["Infobox_play"] = 3900, ["Infobox_political_party"] = 14000, ["Infobox_power_station"] = 3000, ["Infobox_prepared_food"] = 3100, ["Infobox_professional_wrestler"] = 4300, ["Infobox_professional_wrestling_event"] = 2700, ["Infobox_protected_area"] = 14000, ["Infobox_protein_family"] = 2100, ["Infobox_publisher"] = 2400, ["Infobox_racehorse"] = 5500, ["Infobox_racing_driver"] = 3900, ["Infobox_racing_driver_series_section"] = 2000, ["Infobox_radio_station"] = 22000, ["Infobox_rail"] = 2900, ["Infobox_rail_line"] = 7300, ["Infobox_rail_service"] = 2900, ["Infobox_rail_service/doc"] = 2900, ["Infobox_reality_competition_season"] = 3500, ["Infobox_record_label"] = 4000, ["Infobox_recurring_event"] = 6400, ["Infobox_religious_biography"] = 5300, ["Infobox_religious_building"] = 12000, ["Infobox_religious_building/color"] = 17000, ["Infobox_restaurant"] = 2900, ["Infobox_river"] = 30000, ["Infobox_river/calcunit"] = 30000, ["Infobox_river/discharge"] = 30000, ["Infobox_river/row-style"] = 30000, ["Infobox_river/source"] = 30000, ["Infobox_road"] = 24000, ["Infobox_road/meta/mask/category"] = 24000, ["Infobox_road/meta/mask/country"] = 24000, ["Infobox_road/styles.css"] = 25000, ["Infobox_road_small"] = 2300, ["Infobox_rockunit"] = 6400, ["Infobox_royalty"] = 22000, ["Infobox_royalty/short_description"] = 12000, ["Infobox_rugby_biography"] = 16000, ["Infobox_rugby_biography/correct_date"] = 16000, ["Infobox_rugby_biography/depcheck"] = 15000, ["Infobox_rugby_league_biography"] = 9900, ["Infobox_rugby_league_biography/PLAYER"] = 9800, ["Infobox_rugby_team"] = 2600, ["Infobox_sailboat_specifications"] = 2300, ["Infobox_saint"] = 5000, ["Infobox_school"] = 38000, ["Infobox_school/short_description"] = 38000, ["Infobox_school_district"] = 5700, ["Infobox_school_district/styles.css"] = 5700, ["Infobox_scientist"] = 48000, ["Infobox_service_record"] = 2600, ["Infobox_settlement"] = 562000, ["Infobox_settlement/areadisp"] = 238000, ["Infobox_settlement/columns"] = 94000, ["Infobox_settlement/columns/styles.css"] = 94000, ["Infobox_settlement/densdisp"] = 437000, ["Infobox_settlement/impus"] = 82000, ["Infobox_settlement/lengthdisp"] = 169000, ["Infobox_settlement/link"] = 94000, ["Infobox_settlement/metric"] = 210000, ["Infobox_settlement/pref"] = 293000, ["Infobox_settlement/styles.css"] = 562000, ["Infobox_ship_begin"] = 41000, ["Infobox_ship_career"] = 37000, ["Infobox_ship_characteristics"] = 41000, ["Infobox_ship_class_overview"] = 4100, ["Infobox_ship_image"] = 40000, ["Infobox_shopping_mall"] = 3500, ["Infobox_short_story"] = 2400, ["Infobox_skier"] = 2500, ["Infobox_soap_character"] = 2900, ["Infobox_software"] = 14000, ["Infobox_software/simple"] = 14000, ["Infobox_song"] = 76000, ["Infobox_song/color"] = 76000, ["Infobox_song/link"] = 76000, ["Infobox_spaceflight"] = 3600, ["Infobox_spaceflight/styles.css"] = 3600, ["Infobox_sport_event"] = 2200, ["Infobox_sports_competition_event"] = 17000, ["Infobox_sports_competition_event/medalrow"] = 11000, ["Infobox_sports_league"] = 5000, ["Infobox_sports_season"] = 5400, ["Infobox_sports_team"] = 2200, ["Infobox_sportsperson"] = 106000, ["Infobox_stadium"] = 3500, ["Infobox_station"] = 55000, ["Infobox_station/doc"] = 55000, ["Infobox_station/services"] = 55000, ["Infobox_station/styles.css"] = 55000, ["Infobox_street"] = 3400, ["Infobox_swimmer"] = 9400, ["Infobox_television"] = 57000, ["Infobox_television/Short_description"] = 54000, ["Infobox_television_channel"] = 6200, ["Infobox_television_episode"] = 12000, ["Infobox_television_episode/styles.css"] = 12000, ["Infobox_television_season"] = 9500, ["Infobox_television_station"] = 3700, ["Infobox_tennis_biography"] = 10000, ["Infobox_tennis_event"] = 2500, ["Infobox_tennis_tournament_event"] = 19000, ["Infobox_tennis_tournament_year"] = 9200, ["Infobox_tennis_tournament_year/color"] = 28000, ["Infobox_tennis_tournament_year/footer"] = 28000, ["Infobox_train"] = 2300, ["Infobox_union"] = 2100, ["Infobox_university"] = 26000, ["Infobox_user"] = 2700, ["Infobox_venue"] = 18000, ["Infobox_video_game"] = 28000, ["Infobox_video_game/styles.css"] = 28000, ["Infobox_volleyball_biography"] = 5400, ["Infobox_weapon"] = 7300, ["Infobox_website"] = 7700, ["Infobox_writer"] = 39000, ["Information"] = 101000, ["Information/styles.css"] = 101000, ["Inline_block"] = 4500, ["Inprogress"] = 2400, ["Input_link"] = 32000, ["Instagram"] = 11000, ["Interlanguage_link"] = 155000, ["Interlanguage_link_multi"] = 19000, ["Internet_Archive_author"] = 19000, ["Internet_Archive_film"] = 2500, ["Intitle"] = 12000, ["Invalid_SVG"] = 3600, ["Invalid_SVG/styles.css"] = 3600, ["Iptalk"] = 17000, ["IranCensus2006"] = 47000, ["IranNCSGN"] = 3200, ["Iran_Census_2006"] = 47000, ["Irc"] = 2100, ["Irish_place_name"] = 2600, ["IsIPAddress"] = 38000, ["IsValidPageName"] = 142000, ["Is_country_in_Central_America"] = 13000, ["Is_country_in_the_Caribbean"] = 14000, ["Is_interwiki_link"] = 6100, ["Is_italic_taxon"] = 479000, ["Is_redirect"] = 27000, ["Isbn"] = 7500, ["Isfdb_name"] = 3700, ["Isfdb_title"] = 4400, ["Isnumeric"] = 210000, ["Iso2continent"] = 35000, ["Iso2country"] = 23000, ["Iso2country/article"] = 22000, ["Iso2country/data"] = 23000, ["Iso2nationality"] = 227000, ["Issubst"] = 72000, ["Isu_name"] = 2200, ["Italic_dab2"] = 5300, ["Italic_title"] = 285000, ["Italic_title_prefixed"] = 8700, ["Italics_colon"] = 3800, ["Italictitle"] = 4300, ["Ivm"] = 5700, ["Ivm/styles.css"] = 5700, ["Ivmbox"] = 123000, ["Ivory_messagebox"] = 142000, ["Module:I18n/complex_date"] = 66000, ["Module:IP"] = 131000, ["Module:IPA"] = 142000, ["Module:IPA/data"] = 128000, ["Module:IPA/styles.css"] = 114000, ["Module:IPA_symbol"] = 4800, ["Module:IPA_symbol/data"] = 4800, ["Module:IPAc-en"] = 48000, ["Module:IPAc-en/data"] = 48000, ["Module:IPAc-en/phonemes"] = 48000, ["Module:IPAc-en/pronunciation"] = 48000, ["Module:IPAddress"] = 188000, ["Module:ISO_3166"] = 1040000, ["Module:ISO_3166/data/AT"] = 2500, ["Module:ISO_3166/data/BA"] = 3400, ["Module:ISO_3166/data/CA"] = 2500, ["Module:ISO_3166/data/CN"] = 2100, ["Module:ISO_3166/data/DE"] = 14000, ["Module:ISO_3166/data/ES"] = 3600, ["Module:ISO_3166/data/FR"] = 38000, ["Module:ISO_3166/data/GB"] = 6400, ["Module:ISO_3166/data/GR"] = 3100, ["Module:ISO_3166/data/IN"] = 29000, ["Module:ISO_3166/data/IR"] = 8200, ["Module:ISO_3166/data/National"] = 1040000, ["Module:ISO_3166/data/PL"] = 6700, ["Module:ISO_3166/data/RS"] = 3200, ["Module:ISO_3166/data/RU"] = 25000, ["Module:ISO_3166/data/US"] = 85000, ["Module:ISO_639_name"] = 20000, ["Module:ISOdate"] = 66000, ["Module:Icon"] = 581000, ["Module:Icon/data"] = 581000, ["Module:If_empty"] = 3660000, ["Module:If_in_page"] = 10000, ["Module:If_preview"] = 295000, ["Module:If_preview/configuration"] = 295000, ["Module:If_preview/styles.css"] = 295000, ["Module:Import_style"] = 11000, ["Module:In_lang"] = 357000, ["Module:Indent"] = 4400, ["Module:Infobox"] = 4110000, ["Module:Infobox/dates"] = 69000, ["Module:Infobox/styles.css"] = 4360000, ["Module:Infobox3cols"] = 297000, ["Module:InfoboxImage"] = 4420000, ["Module:Infobox_body_of_water_tracking"] = 18000, ["Module:Infobox_cyclist_tracking"] = 16000, ["Module:Infobox_gene"] = 13000, ["Module:Infobox_mapframe"] = 404000, ["Module:Infobox_military_conflict"] = 22000, ["Module:Infobox_military_conflict/styles.css"] = 22000, ["Module:Infobox_multi-lingual_name"] = 20000, ["Module:Infobox_multi-lingual_name/data"] = 20000, ["Module:Infobox_power_station"] = 3000, ["Module:Infobox_road"] = 25000, ["Module:Infobox_road/browselinks"] = 25000, ["Module:Infobox_road/errors"] = 24000, ["Module:Infobox_road/length"] = 25000, ["Module:Infobox_road/locations"] = 24000, ["Module:Infobox_road/map"] = 25000, ["Module:Infobox_road/route"] = 25000, ["Module:Infobox_road/sections"] = 24000, ["Module:Infobox_television"] = 57000, ["Module:Infobox_television_disambiguation_check"] = 63000, ["Module:Infobox_television_episode"] = 12000, ["Module:Infobox_television_season_disambiguation_check"] = 9000, ["Module:Infobox_television_season_name"] = 9500, ["Module:Internet_Archive"] = 19000, ["Module:IrelandByCountyCatNav"] = 3300, ["Module:Is_infobox_in_lead"] = 377000, ["Module:Is_instance"] = 335000, ["Module:Italic_title"] = 1120000, ["Module:Italic_title2"] = 5300, } 96976089c1e9db8d200dbe641eaed9ec564df70a Module:Transclusion count/data/L 828 1008 2212 2023-10-01T05:38:26Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["LASTYEAR"] = 711000, ["LAT"] = 3600, ["LCAuth"] = 3400, ["LDSproject"] = 2800, ["LTU"] = 4300, ["LUX"] = 2300, ["LVA"] = 4200, ["La"] = 453000, ["Label"] = 6300, ["LabourProject"] = 3100, ["Lafc"] = 5500, ["Lake_project"] = 5200, ["Lang"] = 354000, ["Lang-ar"] = 42000, ["Lang-az"] = 4500, ["Lang-ba"] = 3400, ["Lang-be"] = 4300, ["Lang-bg"] = 10000, ["Lang-bn"] = 7600, ["Lang-cs"] = 3600, ["Lang-cy"] = 3800, ["Lang-da"] = 3600, ["Lang-de"] = 41000, ["Lang-el"] = 23000, ["Lang-en"] = 17000, ["Lang-es"] = 19000, ["Lang-et"] = 2200, ["Lang-fa"] = 76000, ["Lang-fi"] = 3000, ["Lang-fr"] = 24000, ["Lang-ga"] = 7600, ["Lang-gd"] = 3800, ["Lang-gr"] = 2700, ["Lang-grc"] = 7300, ["Lang-he"] = 16000, ["Lang-hr"] = 3000, ["Lang-hu"] = 9500, ["Lang-hy"] = 6700, ["Lang-id"] = 2200, ["Lang-it"] = 12000, ["Lang-ja"] = 4500, ["Lang-ka"] = 5400, ["Lang-kk"] = 2600, ["Lang-ko"] = 3700, ["Lang-ku"] = 4200, ["Lang-la"] = 12000, ["Lang-lt"] = 2200, ["Lang-lv"] = 2100, ["Lang-mk"] = 3600, ["Lang-ms"] = 2600, ["Lang-my"] = 4700, ["Lang-ne"] = 3400, ["Lang-nl"] = 4900, ["Lang-no"] = 6100, ["Lang-oc"] = 7100, ["Lang-pl"] = 8600, ["Lang-pt"] = 6800, ["Lang-ro"] = 3800, ["Lang-ru"] = 92000, ["Lang-rus"] = 3100, ["Lang-sa"] = 2300, ["Lang-si"] = 2000, ["Lang-sl"] = 3900, ["Lang-sq"] = 3500, ["Lang-sr"] = 4900, ["Lang-sr-Cyrl"] = 13000, ["Lang-sr-cyr"] = 5400, ["Lang-sr-cyrl"] = 3000, ["Lang-sv"] = 6500, ["Lang-ta"] = 2600, ["Lang-th"] = 11000, ["Lang-tr"] = 7600, ["Lang-uk"] = 19000, ["Lang-ur"] = 9300, ["Lang-zh"] = 72000, ["Lang2iso"] = 5400, ["Language_with_name"] = 9200, ["Languages"] = 2700, ["Large"] = 229000, ["Large_category_TOC"] = 11000, ["Large_category_TOC/tracking"] = 11000, ["Last_edited_by"] = 68000, ["Last_word"] = 20000, ["LaunchesByYear_footer"] = 3300, ["LaunchesByYear_header"] = 3300, ["Lc"] = 8900, ["Lcfirstletter"] = 2500, ["Lead_too_short"] = 8900, ["League_icon"] = 3300, ["Leagueicon"] = 3100, ["Leave_feedback/link"] = 75000, ["Left"] = 8600, ["Legend"] = 31000, ["Legend/styles.css"] = 129000, ["Legend0"] = 8100, ["Legend2"] = 18000, ["Legend_inline"] = 21000, ["LepIndex"] = 12000, ["LepidopteraTalk"] = 56000, ["Letter-NumberCombDisambig"] = 3700, ["Letter–number_combination_disambiguation"] = 4900, ["Libera.Chat"] = 11000, ["Library_link_about"] = 3900, ["Library_resources_box"] = 4000, ["Librivox_author"] = 6700, ["Librivox_book"] = 3600, ["License_migration"] = 52000, ["License_migration_complete"] = 23000, ["License_migration_is_redundant"] = 7600, ["License_migration_not_eligible"] = 6700, ["License_migration_redundant"] = 22000, ["Like"] = 2400, ["Like_resume"] = 3700, ["Likely"] = 4500, ["Line_link"] = 10000, ["Linescore_Amfootball"] = 2300, ["LinkCatIfExists2"] = 58000, ["LinkStatusLocal"] = 44000, ["LinkSummary"] = 241000, ["LinkSummaryLive"] = 8100, ["Link_if_exists"] = 75000, ["Link_note"] = 64000, ["Link_summary"] = 254000, ["Link_target"] = 14000, ["Linkcolor"] = 2300, ["Linkless_exists"] = 15000, ["Linksummarylive"] = 4000, ["Linktext"] = 22000, ["List-Class"] = 16000, ["Listen"] = 14000, ["Listen_live"] = 2300, ["Lists_of_people_editnotice"] = 2600, ["Lit"] = 5000, ["Literal_translation"] = 10000, ["Lnl"] = 8100, ["LoMP"] = 4200, ["Location_map"] = 711000, ["Location_map+"] = 25000, ["Location_map_data_documentation"] = 6400, ["Location_map_many"] = 4100, ["Location_map~"] = 24000, ["Log"] = 3600, ["Logo_fur"] = 30000, ["Logo_requested"] = 3500, ["London_Gazette"] = 33000, ["Long_plot"] = 3900, ["Longitem"] = 660000, ["Longlink"] = 6400, ["Look_from"] = 9300, ["Lookfrom"] = 4900, ["Loop"] = 104000, ["Loss"] = 3000, ["Low-Class"] = 15000, ["Low-importance"] = 15000, ["Lower"] = 8000, ["Lowercase"] = 5200, ["Lowercase_title"] = 15000, ["Lowercasetitle"] = 2400, ["Lt"] = 2400, ["Lua"] = 9800, ["Lx"] = 22000, ["Module:Labelled_list_hatnote"] = 545000, ["Module:Lang"] = 1470000, ["Module:Lang-zh"] = 72000, ["Module:Lang/ISO_639_synonyms"] = 1470000, ["Module:Lang/data"] = 1470000, ["Module:Lang/documentor_tool"] = 3900, ["Module:Lang/tag_from_name"] = 3000, ["Module:Language"] = 2900, ["Module:Language/data"] = 2900, ["Module:Language/data/ISO_639-1"] = 9300, ["Module:Language/data/ISO_639-2"] = 2900, ["Module:Language/data/ISO_639-3_(dep)"] = 20000, ["Module:Language/data/ISO_639_deprecated"] = 20000, ["Module:Language/data/ISO_639_name_to_code"] = 5400, ["Module:Language/data/ISO_639_override"] = 20000, ["Module:Language/data/iana_languages"] = 1470000, ["Module:Language/data/iana_regions"] = 1470000, ["Module:Language/data/iana_scripts"] = 1470000, ["Module:Language/data/iana_suppressed_scripts"] = 1470000, ["Module:Language/data/iana_variants"] = 1470000, ["Module:Large_category_TOC"] = 11000, ["Module:Large_category_TOC/styles.css"] = 11000, ["Module:Latin"] = 8300, ["Module:Librivox_book"] = 3600, ["Module:Lighthouse_tracking"] = 2600, ["Module:List"] = 2140000, ["Module:Listen"] = 14000, ["Module:Listen/styles.css"] = 13000, ["Module:Location_map"] = 745000, ["Module:Location_map/data/Antarctica"] = 2700, ["Module:Location_map/data/Arkansas"] = 3300, ["Module:Location_map/data/Australia"] = 2200, ["Module:Location_map/data/Australia_New_South_Wales"] = 3600, ["Module:Location_map/data/Australia_Queensland"] = 6000, ["Module:Location_map/data/Australia_South_Australia"] = 2400, ["Module:Location_map/data/Austria"] = 3400, ["Module:Location_map/data/Azerbaijan"] = 4900, ["Module:Location_map/data/Bangladesh"] = 2000, ["Module:Location_map/data/Bosnia_and_Herzegovina"] = 5400, ["Module:Location_map/data/Brazil"] = 4800, ["Module:Location_map/data/California"] = 6000, ["Module:Location_map/data/Canada"] = 4600, ["Module:Location_map/data/Canada_Alberta"] = 2400, ["Module:Location_map/data/Canada_British_Columbia"] = 3100, ["Module:Location_map/data/Canada_Ontario"] = 2400, ["Module:Location_map/data/China"] = 2900, ["Module:Location_map/data/Croatia"] = 3500, ["Module:Location_map/data/Czech_Republic"] = 6800, ["Module:Location_map/data/Estonia"] = 3000, ["Module:Location_map/data/Europe"] = 4300, ["Module:Location_map/data/Florida"] = 2600, ["Module:Location_map/data/France"] = 40000, ["Module:Location_map/data/France_Auvergne-Rhône-Alpes"] = 4400, ["Module:Location_map/data/France_Bourgogne-Franche-Comté"] = 3900, ["Module:Location_map/data/France_Grand_Est"] = 5300, ["Module:Location_map/data/France_Hauts-de-France"] = 3900, ["Module:Location_map/data/France_Normandy"] = 3400, ["Module:Location_map/data/France_Nouvelle-Aquitaine"] = 4800, ["Module:Location_map/data/France_Occitanie"] = 4700, ["Module:Location_map/data/Germany"] = 17000, ["Module:Location_map/data/Germany_Bavaria"] = 2900, ["Module:Location_map/data/Germany_Rhineland-Palatinate"] = 2600, ["Module:Location_map/data/Greece"] = 4000, ["Module:Location_map/data/Hungary"] = 2800, ["Module:Location_map/data/Illinois"] = 3400, ["Module:Location_map/data/India"] = 23000, ["Module:Location_map/data/India3"] = 2900, ["Module:Location_map/data/India_Andhra_Pradesh"] = 2500, ["Module:Location_map/data/India_Karnataka"] = 2100, ["Module:Location_map/data/India_Kerala"] = 2700, ["Module:Location_map/data/India_Maharashtra"] = 2700, ["Module:Location_map/data/India_Punjab"] = 2200, ["Module:Location_map/data/India_Tamil_Nadu"] = 3100, ["Module:Location_map/data/India_Uttar_Pradesh"] = 3200, ["Module:Location_map/data/India_West_Bengal"] = 3300, ["Module:Location_map/data/Indiana"] = 3400, ["Module:Location_map/data/Iowa"] = 3000, ["Module:Location_map/data/Iran"] = 50000, ["Module:Location_map/data/Ireland"] = 3600, ["Module:Location_map/data/Italy"] = 12000, ["Module:Location_map/data/Japan"] = 14000, ["Module:Location_map/data/Maine"] = 2000, ["Module:Location_map/data/Massachusetts"] = 4700, ["Module:Location_map/data/Mexico"] = 3400, ["Module:Location_map/data/Michigan"] = 3800, ["Module:Location_map/data/Minnesota"] = 4600, ["Module:Location_map/data/Nepal"] = 4600, ["Module:Location_map/data/Netherlands"] = 3000, ["Module:Location_map/data/New_York"] = 8100, ["Module:Location_map/data/North_Carolina"] = 3500, ["Module:Location_map/data/Norway"] = 4400, ["Module:Location_map/data/Ohio"] = 2200, ["Module:Location_map/data/Pakistan"] = 2800, ["Module:Location_map/data/Pennsylvania"] = 5900, ["Module:Location_map/data/Peru"] = 2900, ["Module:Location_map/data/Philippines"] = 3100, ["Module:Location_map/data/Poland"] = 52000, ["Module:Location_map/data/Queensland"] = 2200, ["Module:Location_map/data/Romania"] = 5900, ["Module:Location_map/data/Russia"] = 26000, ["Module:Location_map/data/Russia_Bashkortostan"] = 4500, ["Module:Location_map/data/Russia_Vladimir_Oblast"] = 2200, ["Module:Location_map/data/Russia_Vologda_Oblast"] = 4800, ["Module:Location_map/data/Serbia"] = 4000, ["Module:Location_map/data/Slovakia"] = 2100, ["Module:Location_map/data/Slovenia"] = 6700, ["Module:Location_map/data/South_Africa"] = 3200, ["Module:Location_map/data/Spain"] = 7700, ["Module:Location_map/data/Sweden"] = 2800, ["Module:Location_map/data/Switzerland"] = 6200, ["Module:Location_map/data/Syria"] = 2200, ["Module:Location_map/data/Texas"] = 3400, ["Module:Location_map/data/Turkey"] = 18000, ["Module:Location_map/data/USA"] = 110000, ["Module:Location_map/data/USA_Alabama"] = 2300, ["Module:Location_map/data/USA_Alaska"] = 2100, ["Module:Location_map/data/USA_Arizona"] = 2100, ["Module:Location_map/data/USA_Arkansas"] = 3500, ["Module:Location_map/data/USA_California"] = 7700, ["Module:Location_map/data/USA_Colorado"] = 2200, ["Module:Location_map/data/USA_Florida"] = 3300, ["Module:Location_map/data/USA_Georgia"] = 2000, ["Module:Location_map/data/USA_Illinois"] = 3700, ["Module:Location_map/data/USA_Indiana"] = 3600, ["Module:Location_map/data/USA_Iowa"] = 3200, ["Module:Location_map/data/USA_Kentucky"] = 3200, ["Module:Location_map/data/USA_Maine"] = 2200, ["Module:Location_map/data/USA_Maryland"] = 2500, ["Module:Location_map/data/USA_Massachusetts"] = 5000, ["Module:Location_map/data/USA_Michigan"] = 4200, ["Module:Location_map/data/USA_Minnesota"] = 5000, ["Module:Location_map/data/USA_Missouri"] = 2100, ["Module:Location_map/data/USA_New_Jersey"] = 2900, ["Module:Location_map/data/USA_New_York"] = 9100, ["Module:Location_map/data/USA_North_Carolina"] = 4300, ["Module:Location_map/data/USA_Ohio"] = 2500, ["Module:Location_map/data/USA_Oregon"] = 2600, ["Module:Location_map/data/USA_Pennsylvania"] = 7000, ["Module:Location_map/data/USA_Texas"] = 3800, ["Module:Location_map/data/USA_Virginia"] = 5100, ["Module:Location_map/data/USA_Washington"] = 2900, ["Module:Location_map/data/USA_West_Virginia"] = 4400, ["Module:Location_map/data/USA_Wisconsin"] = 2700, ["Module:Location_map/data/Ukraine"] = 3200, ["Module:Location_map/data/United_Kingdom_Greater_London"] = 2200, ["Module:Location_map/data/Virginia"] = 4000, ["Module:Location_map/data/Washington"] = 2200, ["Module:Location_map/data/West_Virginia"] = 4100, ["Module:Location_map/data/Wisconsin"] = 2300, ["Module:Location_map/data/doc"] = 6400, ["Module:Location_map/info"] = 6400, ["Module:Location_map/multi"] = 29000, ["Module:Location_map/styles.css"] = 740000, ["Module:London_Gazette_util"] = 33000, ["Module:Lua_banner"] = 9800, } 10610ced68ec302961944d7f5a685ac098e736e5 Module:Transclusion count/data/M 828 991 2178 2023-10-01T05:38:36Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["M"] = 2100, ["MAD"] = 2100, ["MAR"] = 2800, ["MAS"] = 2600, ["MDG"] = 2400, ["MEX"] = 6200, ["MILHIST"] = 13000, ["MINUTE"] = 2300, ["MKD"] = 2300, ["MLB_Farm_System"] = 2100, ["MLB_Year"] = 14000, ["MLB_standings"] = 3700, ["MLBplayer"] = 3900, ["MMA_record_start"] = 3600, ["MMArecordbox"] = 3700, ["MMSI_Number"] = 3100, ["MONTH"] = 13000, ["MONTHNAME"] = 829000, ["MONTHNUMBER"] = 846000, ["MS"] = 5100, ["MV"] = 8900, ["MYS"] = 3700, ["MacTutor"] = 2000, ["Main"] = 341000, ["Main_article"] = 30000, ["Main_other"] = 9560000, ["Main_page_image"] = 26000, ["Main_page_image/DYK"] = 9500, ["Main_page_image/ITN/styles.css"] = 2600, ["Main_page_image/TFA"] = 4800, ["Maintenance_category"] = 39000, ["Malay_name"] = 2300, ["Map_requested"] = 8700, ["Map_requested/Category_helper"] = 8600, ["Maplink"] = 29000, ["Maplink-road"] = 6000, ["Marriage"] = 73000, ["Marriage/doc"] = 72000, ["Marriage/styles.css"] = 73000, ["Math"] = 9600, ["MathGenealogy"] = 7000, ["MathWorld"] = 2400, ["Mathgenealogy"] = 2100, ["Maths_rating"] = 20000, ["Max"] = 248000, ["Maybe_free_media"] = 12000, ["Mbox"] = 2970000, ["Mdash"] = 8800, ["MeSH_name"] = 6100, ["Medal"] = 113000, ["MedalBottom"] = 17000, ["MedalBronze"] = 54000, ["MedalComp"] = 2200, ["MedalCompetition"] = 88000, ["MedalCount"] = 3100, ["MedalCountry"] = 78000, ["MedalGold"] = 53000, ["MedalOlympic"] = 4000, ["MedalOlympics"] = 6100, ["MedalSilver"] = 53000, ["MedalSport"] = 78000, ["MedalTableTop"] = 17000, ["MedalTop"] = 3900, ["MedalWorldChampionships"] = 2100, ["MedalistTable"] = 15000, ["Medals_table"] = 14000, ["Media"] = 2600, ["Medical_resources"] = 6700, ["Merge_done"] = 3500, ["Merged-from"] = 16000, ["Merged-to"] = 18000, ["Merged_to"] = 2200, ["MeshName"] = 5900, ["Metacritic_film"] = 4100, ["Metadata_Population_DE-BY"] = 2100, ["Metadata_Population_DE-RP"] = 2300, ["Mhof"] = 7300, ["Mid-Class"] = 15000, ["Mid-importance"] = 15000, ["Middot"] = 6000, ["Midsize"] = 2100, ["MilHist"] = 4800, ["Military_navigation"] = 83000, ["Min"] = 22000, ["Minor_planet"] = 5000, ["Minor_planet_link"] = 2700, ["Minor_planet_list_link"] = 4200, ["Minor_planets_navigator"] = 3200, ["MirrorH"] = 5400, ["Missing_information"] = 3600, ["Mlby"] = 14000, ["Mobile_IP"] = 8800, ["MobyGames"] = 8900, ["Moby_game"] = 7000, ["Mod"] = 15000, ["Module_other"] = 3600, ["Mojo_title"] = 7800, ["Molecular_formula_index"] = 2300, ["Monday"] = 2700, ["Mono"] = 30000, ["Mono/styles.css"] = 31000, ["MonthCategoryNav"] = 35000, ["MonthlyArchive"] = 3500, ["MonthlyLinks"] = 3600, ["Monthly_archive_list"] = 3600, ["Monthly_clean-up_category"] = 16000, ["Monthly_clean-up_category/core"] = 16000, ["Monthly_clean-up_category/monthname"] = 17000, ["Monthly_clean-up_category/monthno"] = 17000, ["Monthly_clean-up_category/name_part"] = 17000, ["Monthly_clean-up_category/outer_core"] = 16000, ["Monthly_clean-up_category/to_add"] = 2800, ["Monthly_clean_up_category"] = 7200, ["Monthyear"] = 75000, ["Monthyear-1"] = 72000, ["MoreInfo"] = 2000, ["More_citations_needed"] = 367000, ["More_citations_needed_section"] = 16000, ["More_footnotes"] = 35000, ["More_footnotes_needed"] = 53000, ["More_plot"] = 2200, ["More_references"] = 3200, ["Moresources"] = 5900, ["Motorcycle_Hall_of_Fame"] = 7300, ["Motorcycling"] = 3200, ["Motorsport_season"] = 4900, ["Motorsport_season/styles.css"] = 4900, ["Moved_discussion_from"] = 2900, ["Moved_discussion_to"] = 2600, ["Mp"] = 5000, ["Mpl"] = 2700, ["MultiReplace"] = 211000, ["Multiple_image"] = 50000, ["Multiple_image/styles.css"] = 50000, ["Multiple_issues"] = 124000, ["Multiple_issues/styles.css"] = 124000, ["Music"] = 7600, ["MusicBrainz_artist"] = 2200, ["MusicBrainz_meta"] = 5100, ["MusicBrainz_release_group"] = 2200, ["Music_ratings"] = 95000, ["Mvar"] = 6900, ["Mw_lang"] = 79000, ["My"] = 2500, ["My_sandbox"] = 3800, ["Myprefs"] = 11000, ["Module:MLB_standings"] = 3700, ["Module:MLB_standings/data"] = 3700, ["Module:Main_page_image"] = 15000, ["Module:Mapframe"] = 429000, ["Module:Math"] = 1570000, ["Module:Medals_table"] = 14000, ["Module:Message_box"] = 18000000, ["Module:Message_box/ambox.css"] = 3110000, ["Module:Message_box/cmbox.css"] = 424000, ["Module:Message_box/configuration"] = 9500000, ["Module:Message_box/fmbox.css"] = 19000, ["Module:Message_box/imbox.css"] = 924000, ["Module:Message_box/ombox.css"] = 1580000, ["Module:Message_box/tmbox.css"] = 12300000, ["Module:Military_navigation"] = 83000, ["Module:Minor_planet_list_link"] = 4200, ["Module:MultiReplace"] = 1260000, ["Module:Multiple_image"] = 50000, ["Module:Music_ratings"] = 95000, ["Module:Mw_lang"] = 79000, } d6618357c3b12c8b70e8e96c698bc6bb513282ef Module:Transclusion count/data/N 828 1297 2632 2023-10-01T05:38:46Z w>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["N"] = 17000, ["N.b."] = 2200, ["N/A"] = 24000, ["N/a"] = 55000, ["NA-Class"] = 14000, ["NASTRO_comment"] = 30000, ["NBA_Draft_template_list"] = 3400, ["NBA_Year"] = 5700, ["NBA_color"] = 3700, ["NBA_color_cell"] = 4300, ["NBA_color_cell2"] = 3400, ["NBA_player_statistics_legend"] = 4400, ["NBA_player_statistics_start"] = 3800, ["NBbox"] = 3400, ["NCAA_color_cell"] = 10000, ["NCAA_secondary_color_cell"] = 4200, ["NCES_District_ID"] = 2600, ["NED"] = 9700, ["NEXTYEAR"] = 8100, ["NFLAltPrimaryStyle"] = 2200, ["NFLPrimaryStyle"] = 27000, ["NFLSecondaryColor"] = 18000, ["NFL_Roster_navbox_template_list"] = 2500, ["NFL_Year"] = 24000, ["NFL_predraft"] = 6200, ["NFL_predraft/check"] = 6200, ["NFL_predraft/ftin"] = 6200, ["NFLplayer"] = 2100, ["NFT"] = 6800, ["NFT_player"] = 30000, ["NGA"] = 3200, ["NGR"] = 2400, ["NHLE"] = 18000, ["NHLS_url"] = 2200, ["NLD"] = 11000, ["NLM_content"] = 2800, ["NOINDEX"] = 453000, ["NOMIS2011"] = 2300, ["NOR"] = 9400, ["NPG_name"] = 2000, ["NRDB_species"] = 6900, ["NRHP-PA"] = 2600, ["NRHPGoogleMapFootnote"] = 2500, ["NRHP_Focus"] = 76000, ["NRHP_color"] = 3700, ["NRHP_date_for_lists"] = 3100, ["NRHP_date_for_lists/dates"] = 3100, ["NRHP_header"] = 3300, ["NRHP_navigation_box"] = 8300, ["NRHP_row"] = 3400, ["NRHP_style"] = 70000, ["NRHP_url"] = 29000, ["NRHP_url/core"] = 31000, ["NRISref"] = 73000, ["NSWcity"] = 2100, ["NSWcity/core"] = 2100, ["NUMBEROFSECTIONS"] = 3600, ["NYCS_br"] = 2700, ["NYCS_time_2"] = 3100, ["NZL"] = 6800, ["NZ_electorate_link"] = 2300, ["Na"] = 2500, ["Nac"] = 2800, ["Namespace_detect"] = 570000, ["Namespace_detect_showall"] = 10000, ["Nastaliq"] = 11000, ["Nat_fs_end"] = 2500, ["National_Film_Awards/style"] = 2000, ["National_Heritage_List_for_England"] = 22000, ["National_Rail_style"] = 5700, ["National_Register_of_Historic_Places"] = 29000, ["National_Register_of_Historic_Places_in_Massachusetts"] = 4400, ["National_Register_of_Historic_Places_in_New_York"] = 5600, ["National_Register_of_Historic_Places_in_North_Carolina"] = 2900, ["National_Register_of_Historic_Places_in_Pennsylvania"] = 3200, ["National_Register_of_Historic_Places_in_Virginia"] = 3100, ["National_basketball_squad"] = 3300, ["National_field_hockey_squad"] = 4000, ["National_football_squad_end"] = 3000, ["National_football_squad_start/styles.css"] = 2400, ["National_rugby_union_team"] = 3600, ["National_squad"] = 41000, ["National_squad_no_numbers"] = 17000, ["Native_name"] = 18000, ["Native_name_checker"] = 81000, ["Naval"] = 3200, ["Naval/core"] = 3200, ["Navbar"] = 37000, ["Navbar-collapsible"] = 3400, ["Navbar-header"] = 16000, ["Navbar-header/styles.css"] = 16000, ["Navbox"] = 3080000, ["Navbox_GR_munic"] = 3500, ["Navbox_Musical_artist"] = 9800, ["Navbox_bottom"] = 15000, ["Navbox_decade_list"] = 11000, ["Navbox_documentation"] = 32000, ["Navbox_ice_hockey"] = 3100, ["Navbox_musical_artist"] = 222000, ["Navbox_musical_artist/color"] = 222000, ["Navbox_rugby_league_squad"] = 5000, ["Navbox_season_by_team"] = 3100, ["Navbox_top"] = 15000, ["Navbox_with_collapsible_groups"] = 131000, ["Navbox_with_collapsible_sections"] = 2300, ["Navbox_with_columns"] = 25000, ["Navboxes"] = 56000, ["Navboxes_colour"] = 5000, ["Navseasoncats"] = 484000, ["Navseasoncats_with_centuries_below_decade"] = 6700, ["Navseasoncats_with_decades_below_year"] = 18000, ["Navsource"] = 2500, ["Navy"] = 19000, ["Navy/core"] = 19000, ["Nay"] = 20000, ["Nbay"] = 5600, ["Nbsp"] = 490000, ["Nbsp_to_space"] = 20000, ["Ndash"] = 21000, ["Nee"] = 9700, ["NeilBrownPlayers"] = 3100, ["New_user_bar"] = 57000, ["Newbot"] = 4200, ["Next_period"] = 21000, ["Nfly"] = 2200, ["Nihongo"] = 103000, ["Nihongo2"] = 12000, ["Nihongo_foot"] = 2600, ["No"] = 8600, ["No."] = 14000, ["No2"] = 10000, ["NoSpam"] = 3900, ["NoSpamEmail"] = 17000, ["No_col_break"] = 2300, ["No_col_break/styles.css"] = 2300, ["No_documentation"] = 2200, ["No_footnotes"] = 51000, ["No_ping"] = 378000, ["No_plot"] = 6200, ["No_redirect"] = 581000, ["No_spam"] = 309000, ["No_wrap"] = 2400, ["Nobold"] = 388000, ["Nobold/styles.css"] = 389000, ["Nobr"] = 5000, ["Nobreak"] = 655000, ["Nochange"] = 2500, ["Noindex"] = 4800, ["Noitalic"] = 4600, ["Noitalic/styles.css"] = 4600, ["Nom"] = 41000, ["Nominated"] = 7300, ["Non-English-language_text_category"] = 2600, ["Non-admin_closure"] = 3000, ["Non-admin_closure_(requested_moves)"] = 4600, ["Non-admin_comment"] = 2100, ["Non-diffusing_subcategory"] = 15000, ["Non-free_2D_art"] = 7300, ["Non-free_3D_art"] = 2500, ["Non-free_album_cover"] = 207000, ["Non-free_audio_sample"] = 8500, ["Non-free_biog-pic"] = 26000, ["Non-free_book_cover"] = 55000, ["Non-free_character"] = 2300, ["Non-free_comic"] = 11000, ["Non-free_fair_use"] = 17000, ["Non-free_fair_use_in"] = 14000, ["Non-free_film_poster"] = 26000, ["Non-free_film_screenshot"] = 5000, ["Non-free_game_cover"] = 7700, ["Non-free_game_screenshot"] = 4700, ["Non-free_historic_image"] = 16000, ["Non-free_image_data"] = 8600, ["Non-free_image_rationale"] = 9700, ["Non-free_logo"] = 162000, ["Non-free_magazine_cover"] = 7700, ["Non-free_media"] = 740000, ["Non-free_media_data"] = 9800, ["Non-free_media_rationale"] = 11000, ["Non-free_movie_poster"] = 23000, ["Non-free_newspaper_image"] = 2000, ["Non-free_poster"] = 80000, ["Non-free_promotional"] = 8800, ["Non-free_school_logo"] = 2400, ["Non-free_seal"] = 4900, ["Non-free_symbol"] = 6000, ["Non-free_television_screenshot"] = 16000, ["Non-free_title-card"] = 5800, ["Non-free_use_rationale"] = 466000, ["Non-free_use_rationale/styles.css"] = 692000, ["Non-free_use_rationale_2"] = 216000, ["Non-free_use_rationale_album_cover"] = 139000, ["Non-free_use_rationale_biog"] = 2000, ["Non-free_use_rationale_book_cover"] = 19000, ["Non-free_use_rationale_logo"] = 94000, ["Non-free_use_rationale_poster"] = 52000, ["Non-free_use_rationale_title-card"] = 2800, ["Non-free_use_rationale_video_cover"] = 5900, ["Non-free_use_rationale_video_game_cover"] = 10000, ["Non-free_video_cover"] = 16000, ["Non-free_video_game_cover"] = 22000, ["Non-free_video_game_cover/platform"] = 21000, ["Non-free_video_game_screenshot"] = 10000, ["Non-free_video_game_screenshot/platform"] = 9700, ["Non-free_with_NC"] = 2700, ["Non-free_with_permission"] = 2100, ["Nonspecific"] = 2200, ["Nonumtoc"] = 2700, ["Nonumtoc/styles.css"] = 2700, ["Noping"] = 368000, ["Noprint"] = 2900, ["Noredirect"] = 8300, ["Normal"] = 6000, ["Normalwraplink"] = 4100, ["NorthAmNative"] = 2000, ["North_America_topic"] = 3600, ["Nospam"] = 23000, ["Not-PD-US-expired-min-year"] = 26000, ["Not_a_ballot"] = 7800, ["Not_a_forum"] = 7700, ["Not_a_typo"] = 11000, ["Not_around"] = 3100, ["Not_done"] = 20000, ["Notability"] = 62000, ["Notavote"] = 2100, ["Notdone"] = 5500, ["Note"] = 25000, ["NoteFoot"] = 4200, ["NoteTag"] = 4300, ["Note_label"] = 9100, ["Notelist"] = 193000, ["Notelist-lr"] = 3500, ["Notelist-ua"] = 7000, ["Notes"] = 5800, ["Noteslist"] = 3500, ["Notice"] = 114000, ["NovelsWikiProject"] = 19000, ["Nowiki_="] = 2300, ["Nowrap"] = 1470000, ["Np"] = 3100, ["Npby"] = 2500, ["Nq"] = 3800, ["Nrut"] = 3600, ["Ns"] = 2700, ["Ns0"] = 108000, ["Ns_has_subpages"] = 2430000, ["Nts"] = 20000, ["Ntsh"] = 3400, ["Number_of_defined_parameters"] = 5000, ["Number_table_sorting"] = 35000, ["Number_table_sorting_hidden"] = 3400, ["Numero"] = 3600, ["Nutshell"] = 4000, ["Nw="] = 2300, ["Née"] = 2100, ["Module:NUMBEROFSECTIONS"] = 3600, ["Module:Namespace_detect"] = 716000, ["Module:Namespace_detect/config"] = 5000000, ["Module:Namespace_detect/data"] = 5000000, ["Module:National_squad"] = 54000, ["Module:Native_name"] = 94000, ["Module:Navbar"] = 5450000, ["Module:Navbar/configuration"] = 5450000, ["Module:Navbar/styles.css"] = 4810000, ["Module:Navbox"] = 4460000, ["Module:Navbox/configuration"] = 4460000, ["Module:Navbox/styles.css"] = 4460000, ["Module:Navbox_ice_hockey"] = 3100, ["Module:Navbox_top_and_bottom"] = 15000, ["Module:Navbox_with_collapsible_groups"] = 139000, ["Module:Navboxes"] = 57000, ["Module:Navseasoncats"] = 484000, ["Module:Nihongo"] = 105000, ["Module:No_ping"] = 450000, ["Module:Noinclude"] = 3700, ["Module:Ns_has_subpages"] = 2430000, ["Module:Number_table_sorting"] = 38000, } 4a8b1586045a4416c7b3b87b3c63ddc94607eae0 Module:Transclusion count/data/P 828 626 1412 2023-10-01T05:39:06Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["P"] = 6100, ["P-phrases"] = 3300, ["P."] = 3700, ["P1"] = 143000, ["P2"] = 293000, ["PAGENAMEBASE"] = 1570000, ["PAGENAMEU"] = 76000, ["PAK"] = 3000, ["PD-US"] = 11000, ["PD-US-1923"] = 2300, ["PD-US-1923-abroad"] = 5900, ["PD-US-expired"] = 4500, ["PD-US-expired-abroad"] = 7100, ["PD-art"] = 3500, ["PD-ineligible-USonly"] = 5200, ["PD-notice"] = 21000, ["PD-old-100"] = 5000, ["PD-self"] = 36000, ["PD-textlogo"] = 6600, ["PDB_Gallery"] = 2900, ["PDanube"] = 3200, ["PER"] = 3100, ["PHI"] = 2500, ["PHL"] = 3500, ["PLANTS"] = 4000, ["PM20"] = 3300, ["PMID"] = 7000, ["POL"] = 53000, ["POR"] = 4900, ["POTD_default"] = 11000, ["POTD_image"] = 2700, ["POTD_navigation"] = 6800, ["POTDlink"] = 7200, ["POV"] = 7300, ["PR/header"] = 3100, ["PR/heading"] = 7200, ["PRT"] = 5700, ["PR_link"] = 102000, ["PS"] = 2900, ["Pad"] = 55000, ["Page"] = 4100, ["Page_name_sub"] = 46000, ["Page_needed"] = 18000, ["Page_tabs"] = 3500, ["Page_tabs/styles.css"] = 3500, ["Page_views"] = 2300, ["Pagelinks"] = 42000, ["Pagelist"] = 4700, ["Pagetype"] = 12200000, ["Paid"] = 9300, ["Para"] = 2630000, ["Parabr"] = 2700, ["Paragraph_break"] = 1240000, ["Param_value"] = 135000, ["Parameter_names_example"] = 2400, ["ParmPart"] = 13000, ["Partial"] = 2100, ["Partial_minor_planet_designation"] = 5800, ["Partly_done"] = 2600, ["Party_color"] = 73000, ["Party_color_cell"] = 4400, ["Party_name_with_color"] = 7600, ["Party_name_with_colour"] = 3200, ["Party_shading/Democratic"] = 15000, ["Party_shading/Independent"] = 2200, ["Party_shading/Republican"] = 14000, ["Party_stripe"] = 18000, ["Pass"] = 2700, ["Pb"] = 1220000, ["Pbox"] = 3100, ["Pbox/1"] = 3100, ["Peacock"] = 3400, ["Pedigree"] = 3900, ["Peer_review/heading"] = 10000, ["Peer_review_tools"] = 8300, ["Pending"] = 3400, ["Pengoal"] = 9500, ["Penmiss"] = 11000, ["Percentage"] = 13000, ["Performance_key"] = 2500, ["Period_color"] = 23000, ["Period_end"] = 21000, ["Period_id"] = 23000, ["Period_start"] = 23000, ["PeruTasks"] = 16000, ["Phab"] = 5600, ["Phanerozoic_220px"] = 21000, ["PharmNavFootnote"] = 5300, ["Philippine_name"] = 2900, ["Philosophy"] = 3600, ["Photo_montage"] = 4500, ["Photo_requested"] = 104000, ["Photograph_requested"] = 3000, ["Photomontage"] = 4400, ["Physics"] = 9300, ["Picture_of_the_day"] = 7200, ["Pie_chart"] = 5800, ["Pie_chart/slice"] = 5800, ["Ping"] = 229000, ["Pipe"] = 115000, ["Place_name_disambiguation"] = 40000, ["Plain_link"] = 161000, ["Plain_list"] = 13000, ["Plain_text"] = 40000, ["Plainlink"] = 80000, ["Plainlist"] = 347000, ["Plainlist/styles.css"] = 2920000, ["Player"] = 3600, ["Player2"] = 2700, ["Please_check_ISSN"] = 14000, ["Plural"] = 105000, ["Pluralize_from_text"] = 1510000, ["Poem_quote"] = 3000, ["Poemquote"] = 2300, ["Politician_icon"] = 33000, ["Politician_icon2"] = 33000, ["Politics_sidebar_below"] = 19000, ["Politics_sidebar_title"] = 19000, ["Poll_top"] = 2000, ["Polluted_category"] = 2200, ["Polparty"] = 27000, ["Pop_density"] = 9200, ["Population_Germany"] = 14000, ["Portal"] = 9310000, ["Portal-Class"] = 7600, ["Portal-inline"] = 218000, ["Portal_bar"] = 113000, ["Portal_box"] = 2700, ["Portalbar"] = 12000, ["Portuguese_name"] = 8700, ["PosMapFS"] = 4300, ["Possible"] = 3400, ["Possibly_empty_category"] = 69000, ["Post-nominals"] = 51000, ["Post-nominals/AUS"] = 7400, ["Post-nominals/CAN"] = 9100, ["Post-nominals/GBR"] = 27000, ["Post-nominals/NZL"] = 4000, ["Postnominals"] = 9200, ["Pp"] = 14000, ["Pp-book-cover"] = 52000, ["Pp-extended"] = 2200, ["Pp-move"] = 8000, ["Pp-move-indef"] = 3400, ["Pp-pc"] = 3700, ["Pp-pc1"] = 2400, ["Pp-protected"] = 6500, ["Pp-semi-indef"] = 4400, ["Pp-template"] = 2600, ["Pp-vandalism"] = 2500, ["Precision"] = 270000, ["PresFoot"] = 2900, ["PresHead"] = 3300, ["PresRow"] = 3300, ["Press"] = 4700, ["Preview_warning"] = 29000, ["Primary_source_inline"] = 5800, ["Primary_sources"] = 30000, ["Principal_rank"] = 479000, ["Prl"] = 102000, ["Pro-wrestling"] = 5500, ["ProCyclingStats"] = 2500, ["ProQuest"] = 16000, ["Professional_wrestling_profiles"] = 2100, ["Professional_wrestling_results_table"] = 2600, ["Profit"] = 3600, ["Progress_box"] = 17000, ["Project-Class"] = 12000, ["Project_Catholicism"] = 2000, ["Project_other"] = 16000, ["Proper_name"] = 2400, ["Prose"] = 3300, ["Proxy_block"] = 2200, ["Pso"] = 3700, ["Purge"] = 378000, ["Purge_button"] = 17000, ["Module:Page"] = 245000, ["Module:PageLinks"] = 42000, ["Module:Page_tabs"] = 3500, ["Module:Pagelist"] = 4700, ["Module:Pagetype"] = 15900000, ["Module:Pagetype/config"] = 15900000, ["Module:ParameterCount"] = 770000, ["Module:Parameter_names_example"] = 2400, ["Module:Parameter_validation"] = 131000, ["Module:Parameter_validation/default_config"] = 131000, ["Module:Party_name_with_color"] = 8500, ["Module:Percentage"] = 13000, ["Module:Person_height"] = 258000, ["Module:Person_length"] = 7000, ["Module:Person_weight"] = 78000, ["Module:Photo_montage"] = 4500, ["Module:Plain_text"] = 1490000, ["Module:Political_party"] = 114000, ["Module:Political_party/A"] = 20000, ["Module:Political_party/B"] = 15000, ["Module:Political_party/C"] = 39000, ["Module:Political_party/D"] = 48000, ["Module:Political_party/E"] = 5500, ["Module:Political_party/F"] = 11000, ["Module:Political_party/G"] = 16000, ["Module:Political_party/H"] = 4900, ["Module:Political_party/I"] = 48000, ["Module:Political_party/J"] = 6900, ["Module:Political_party/K"] = 3600, ["Module:Political_party/L"] = 37000, ["Module:Political_party/M"] = 11000, ["Module:Political_party/N"] = 29000, ["Module:Political_party/O"] = 5000, ["Module:Political_party/P"] = 25000, ["Module:Political_party/R"] = 46000, ["Module:Political_party/S"] = 28000, ["Module:Political_party/T"] = 10000, ["Module:Political_party/U"] = 17000, ["Module:Political_party/V"] = 7100, ["Module:Political_party/W"] = 11000, ["Module:Pop_density"] = 9200, ["Module:PopulationFromWikidata"] = 6200, ["Module:Portal"] = 9620000, ["Module:Portal-inline"] = 218000, ["Module:Portal/images/a"] = 1620000, ["Module:Portal/images/aliases"] = 170000, ["Module:Portal/images/b"] = 2760000, ["Module:Portal/images/c"] = 1540000, ["Module:Portal/images/d"] = 102000, ["Module:Portal/images/e"] = 403000, ["Module:Portal/images/f"] = 801000, ["Module:Portal/images/g"] = 617000, ["Module:Portal/images/h"] = 422000, ["Module:Portal/images/i"] = 1070000, ["Module:Portal/images/j"] = 264000, ["Module:Portal/images/k"] = 69000, ["Module:Portal/images/l"] = 416000, ["Module:Portal/images/m"] = 619000, ["Module:Portal/images/n"] = 718000, ["Module:Portal/images/o"] = 399000, ["Module:Portal/images/other"] = 124000, ["Module:Portal/images/p"] = 837000, ["Module:Portal/images/q"] = 3000, ["Module:Portal/images/r"] = 366000, ["Module:Portal/images/s"] = 1560000, ["Module:Portal/images/t"] = 614000, ["Module:Portal/images/u"] = 986000, ["Module:Portal/images/v"] = 282000, ["Module:Portal/images/w"] = 166000, ["Module:Portal/images/y"] = 32000, ["Module:Portal/images/z"] = 5300, ["Module:Portal/styles.css"] = 9310000, ["Module:Portal_bar"] = 132000, ["Module:Portal_bar/styles.css"] = 132000, ["Module:Professional_wrestling_profiles"] = 2200, ["Module:Professional_wrestling_results_table"] = 2600, ["Module:Progress_box"] = 17000, ["Module:Progress_box/config"] = 17000, ["Module:Progress_box/styles.css"] = 17000, ["Module:Protect"] = 248000, ["Module:Protected_edit_request"] = 47000, ["Module:Protection_banner"] = 54000, ["Module:Protection_banner/config"] = 54000, ["Module:Purge"] = 397000, } e1e50a2f5ca745d5b0897049a35f3a7e635a999a Module:Transclusion count/data/S 828 759 1693 2023-10-01T05:39:36Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["S"] = 3500, ["S-aca"] = 6400, ["S-ach"] = 16000, ["S-aft"] = 218000, ["S-aft/check"] = 218000, ["S-aft/filter"] = 218000, ["S-bef"] = 223000, ["S-bef/check"] = 223000, ["S-bef/filter"] = 223000, ["S-break"] = 5000, ["S-civ"] = 2600, ["S-dip"] = 5300, ["S-end"] = 246000, ["S-gov"] = 7900, ["S-hon"] = 3800, ["S-hou"] = 9500, ["S-inc"] = 13000, ["S-legal"] = 9400, ["S-mil"] = 12000, ["S-new"] = 16000, ["S-non"] = 10000, ["S-npo"] = 4100, ["S-off"] = 41000, ["S-par"] = 50000, ["S-par/en"] = 3200, ["S-par/gb"] = 3300, ["S-par/uk"] = 12000, ["S-par/us-hs"] = 11000, ["S-par/us-sen"] = 2000, ["S-ppo"] = 13000, ["S-prec"] = 3200, ["S-rail"] = 6400, ["S-rail-start"] = 6200, ["S-rail/lines"] = 6400, ["S-reg"] = 20000, ["S-rel"] = 18000, ["S-roy"] = 2700, ["S-s"] = 3600, ["S-sports"] = 10000, ["S-start"] = 240000, ["S-ttl"] = 230000, ["S-ttl/check"] = 230000, ["S-vac"] = 6500, ["SCO"] = 3700, ["SDcat"] = 5460000, ["SECOND"] = 2300, ["SGP"] = 2600, ["SIA"] = 2600, ["SIPA"] = 2600, ["SLO"] = 4300, ["SMS"] = 7200, ["SMU"] = 2100, ["SPI_archive_notice"] = 71000, ["SPIarchive_notice"] = 71000, ["SPIcat"] = 3800, ["SPIclose"] = 3300, ["SPIpriorcases"] = 65000, ["SR/Olympics_profile"] = 3100, ["SRB"] = 3700, ["SS"] = 20000, ["SSPa"] = 2600, ["STN"] = 13000, ["SUBJECTSPACE_formatted"] = 42000, ["SUI"] = 8500, ["SVG"] = 3200, ["SVG-Logo"] = 17000, ["SVG-Res"] = 15000, ["SVG-logo"] = 2900, ["SVG_logo"] = 2000, ["SVK"] = 5900, ["SVN"] = 5200, ["SWE"] = 12000, ["Sandbox_other"] = 236000, ["Saturday"] = 2700, ["Saved_book"] = 52000, ["Sc"] = 3300, ["Scholia"] = 2700, ["School_block"] = 13000, ["School_disambiguation"] = 3400, ["Schoolblock"] = 6700, ["Schooldis"] = 2700, ["Schoolip"] = 10000, ["Scientist_icon"] = 15000, ["Scientist_icon2"] = 15000, ["Sclass"] = 31000, ["Sclass2"] = 10000, ["Screen_reader-only"] = 61000, ["Screen_reader-only/styles.css"] = 61000, ["Script"] = 5900, ["Script/Arabic"] = 2200, ["Script/Hebrew"] = 4700, ["Script/Nastaliq"] = 14000, ["Script/doc/id-unk"] = 3000, ["Script/doc/id-unk/core"] = 3000, ["Script/doc/id-unk/is-iso-alpha4"] = 2800, ["Script/doc/id-unk/name-to-alpha4"] = 3000, ["Script/styles.css"] = 3100, ["Script/styles_arabic.css"] = 2200, ["Script/styles_hebrew.css"] = 4700, ["Sdash"] = 3100, ["Search_box"] = 52000, ["Search_link"] = 16000, ["Section_link"] = 57000, ["Section_sizes"] = 2500, ["See"] = 10000, ["See_also"] = 184000, ["Seealso"] = 6600, ["Select_skin"] = 4300, ["Selected_article"] = 2700, ["Selected_picture"] = 2500, ["Self"] = 48000, ["Self-published_inline"] = 3900, ["Self-published_source"] = 6600, ["Self-reference"] = 2400, ["Self-reference_tool"] = 5400, ["Self/migration"] = 33000, ["Self2"] = 2100, ["Sent_off"] = 13000, ["Sentoff"] = 4400, ["Separated_entries"] = 181000, ["Sequence"] = 3500, ["Serial_killer_opentask"] = 3600, ["Series_overview"] = 7800, ["Serif"] = 2800, ["Set_category"] = 35000, ["Set_index_article"] = 5800, ["Sets_taxobox_colour"] = 90000, ["Sfn"] = 155000, ["SfnRef"] = 133000, ["Sfnm"] = 3600, ["Sfnp"] = 18000, ["Sfnref"] = 11000, ["Sfrac"] = 4200, ["Sfrac/styles.css"] = 4200, ["SharedIPEDU"] = 3200, ["Shared_IP"] = 11000, ["Shared_IP_advice"] = 16000, ["Shared_IP_corp"] = 5100, ["Shared_IP_edu"] = 131000, ["Shared_IP_gov"] = 3000, ["Sharedip"] = 3300, ["Sharedipedu"] = 3600, ["Sherdog"] = 2600, ["Ship"] = 85000, ["Ship/maintenancecategory"] = 85000, ["Ship_index"] = 7000, ["Shipboxflag"] = 20000, ["Shipboxflag/core"] = 20000, ["Shipwrecks_navbox_footer"] = 10000, ["Shipwrecks_navbox_footer/link"] = 10000, ["Short_description"] = 5570000, ["Short_description/lowercasecheck"] = 5570000, ["Short_pages_monitor"] = 10000, ["Short_pages_monitor/maximum_length"] = 10000, ["Shortcut"] = 20000, ["Should_be_SVG"] = 9000, ["Show_button"] = 2150000, ["Sic"] = 33000, ["Sica"] = 3000, ["Side_box"] = 1130000, ["Sidebar"] = 257000, ["Sidebar_games_events"] = 37000, ["Sidebar_person"] = 2300, ["Sidebar_person/styles.css"] = 2300, ["Sidebar_with_collapsible_lists"] = 93000, ["Sigfig"] = 3800, ["Significant_figures"] = 5100, ["Significant_figures/rnd"] = 4700, ["Signpost-subscription"] = 2100, ["Sildb_prim"] = 2000, ["Silver02"] = 16000, ["Silver2"] = 48000, ["Silver_medal"] = 5600, ["Similar_names"] = 2200, ["Single+double"] = 6900, ["Single+space"] = 14000, ["Single-innings_cricket_match"] = 3200, ["Single_chart"] = 37000, ["Single_chart/chartnote"] = 37000, ["Single_namespace"] = 203000, ["Singlechart"] = 20000, ["Singles"] = 41000, ["Sister-inline"] = 189000, ["Sister_project"] = 1040000, ["Sister_project_links"] = 11000, ["Sisterlinks"] = 2600, ["Skip_to_talk"] = 12000, ["Skip_to_talk/styles.css"] = 12000, ["Sky"] = 2700, ["Sky/styles.css"] = 2700, ["Slink"] = 14000, ["Small"] = 601000, ["Small_Solar_System_bodies"] = 3600, ["Smallcaps"] = 17000, ["Smallcaps/styles.css"] = 17000, ["Smallcaps_all"] = 3400, ["Smalldiv"] = 22000, ["Smaller"] = 73000, ["Smallsup"] = 21000, ["Smiley"] = 44000, ["Snd"] = 167000, ["Snds"] = 6300, ["Soccer_icon"] = 130000, ["Soccer_icon2"] = 130000, ["Soccer_icon4"] = 5100, ["Soccerbase"] = 13000, ["Soccerbase_season"] = 6800, ["Soccerway"] = 76000, ["Sock"] = 47000, ["Sock_list"] = 4300, ["Sockcat"] = 2000, ["Sockmaster"] = 9400, ["Sockpuppet"] = 239000, ["Sockpuppet/altmaster"] = 2100, ["Sockpuppet/categorise"] = 239000, ["SockpuppetCheckuser"] = 5500, ["Sockpuppet_category"] = 46000, ["Sockpuppet_category/confirmed"] = 24000, ["Sockpuppet_category/suspected"] = 22000, ["Sockpuppetcheckuser"] = 3600, ["Sockpuppeteer"] = 25000, ["Soft_redirect"] = 6100, ["Soft_redirect_protection"] = 8200, ["Softredirect"] = 3200, ["Solar_luminosity"] = 4500, ["Solar_mass"] = 5300, ["Solar_radius"] = 4300, ["Soldier_icon"] = 3900, ["Soldier_icon2"] = 3900, ["Song"] = 8300, ["Songs"] = 19000, ["Songs_category"] = 8400, ["Songs_category/core"] = 8400, ["Sort"] = 117000, ["Sortname"] = 53000, ["Source-attribution"] = 28000, ["Source_check"] = 964000, ["Sourcecheck"] = 964000, ["Sources"] = 2500, ["South_America_topic"] = 2500, ["Sp"] = 172000, ["Space"] = 55000, ["Space+double"] = 18000, ["Space+single"] = 13000, ["Spaced_en_dash"] = 199000, ["Spaced_en_dash_space"] = 6400, ["Spaced_ndash"] = 23000, ["Spaces"] = 2710000, ["Spain_metadata_Wikidata"] = 7500, ["Spamlink"] = 13000, ["Species_Latin_name_abbreviation_disambiguation"] = 2200, ["Species_list"] = 15000, ["Speciesbox"] = 292000, ["Speciesbox/getGenus"] = 292000, ["Speciesbox/getSpecies"] = 292000, ["Speciesbox/name"] = 292000, ["Speciesbox/parameterCheck"] = 292000, ["Speciesbox/trim"] = 292000, ["Specieslist"] = 5600, ["Split_article"] = 3600, ["Spnd"] = 4100, ["Spoken_Wikipedia"] = 2200, ["Sport_icon"] = 14000, ["Sport_icon2"] = 15000, ["SportsYearCatUSstate"] = 6500, ["SportsYearCatUSstate/core"] = 6500, ["Sports_links"] = 66000, ["Sports_reference"] = 7300, ["Squad_maintenance"] = 3500, ["Sronly"] = 59000, ["Srt"] = 5300, ["Stack"] = 25000, ["Stack/styles.css"] = 34000, ["Stack_begin"] = 9000, ["Stack_end"] = 9000, ["StaleIP"] = 3200, ["Standings_table_end"] = 54000, ["Standings_table_entry"] = 54000, ["Standings_table_entry/record"] = 54000, ["Standings_table_start"] = 54000, ["Standings_table_start/colheader"] = 54000, ["Standings_table_start/colspan"] = 54000, ["Standings_table_start/styles.css"] = 54000, ["Starbox_astrometry"] = 5100, ["Starbox_begin"] = 5300, ["Starbox_catalog"] = 5200, ["Starbox_character"] = 5100, ["Starbox_detail"] = 5000, ["Starbox_end"] = 5300, ["Starbox_image"] = 2900, ["Starbox_observe"] = 5100, ["Starbox_reference"] = 5200, ["Start-Class"] = 18000, ["Start-date"] = 3700, ["Start_and_end_dates"] = 3800, ["Start_box"] = 8000, ["Start_date"] = 437000, ["Start_date_and_age"] = 140000, ["Start_date_and_years_ago"] = 6500, ["Start_date_text"] = 3800, ["Start_of_course_timeline"] = 6200, ["Start_of_course_week"] = 6300, ["Start_tab"] = 5000, ["Startflatlist"] = 144000, ["Static_IP"] = 6000, ["Station"] = 7700, ["Station_link"] = 16000, ["Stdinchicite"] = 11000, ["Steady"] = 14000, ["Stl"] = 14000, ["Stn"] = 7300, ["Stn_art_lnk"] = 2000, ["Stnlnk"] = 30000, ["Storm_colour"] = 5200, ["Storm_path"] = 2100, ["StoryTeleplay"] = 3500, ["Str_endswith"] = 201000, ["Str_find"] = 115000, ["Str_index"] = 13000, ["Str_left"] = 909000, ["Str_len"] = 19000, ["Str_letter"] = 175000, ["Str_letter/trim"] = 20000, ["Str_number"] = 8000, ["Str_number/trim"] = 170000, ["Str_rep"] = 313000, ["Str_trim"] = 5300, ["Str_≠_len"] = 35000, ["Str_≥_len"] = 73000, ["Strfind_short"] = 226000, ["Strikethrough"] = 16000, ["String_split"] = 2800, ["Strip_tags"] = 38000, ["Strong"] = 862000, ["Structurae"] = 2100, ["Stub-Class"] = 17000, ["Stub_Category"] = 13000, ["Stub_category"] = 18000, ["Stub_documentation"] = 36000, ["Student_editor"] = 27000, ["Student_sandbox"] = 4500, ["Student_table_row"] = 5300, ["Students_table"] = 5300, ["Su"] = 9800, ["Su-census1989"] = 4500, ["Sub"] = 4100, ["Subinfobox_bodystyle"] = 36000, ["Subject_bar"] = 19000, ["Suboff"] = 6200, ["Subon"] = 6300, ["Subpage_other"] = 291000, ["Subscription"] = 4200, ["Subscription_required"] = 34000, ["Subsidebar_bodystyle"] = 6400, ["Subst_only"] = 4600, ["Substituted_comment"] = 19000, ["Succession_box"] = 118000, ["Succession_box/check"] = 118000, ["Succession_links"] = 164000, ["Summer_Olympics_by_year_category_navigation"] = 2400, ["Summer_Olympics_by_year_category_navigation/core"] = 2400, ["Sunday"] = 2700, ["Sup"] = 59000, ["Suppress_categories"] = 5300, ["Surname"] = 66000, ["Swiss_populations"] = 2400, ["Swiss_populations_NC"] = 3000, ["Swiss_populations_YM"] = 2300, ["Swiss_populations_ref"] = 2400, ["Switcher"] = 3000, ["Module:SDcat"] = 5460000, ["Module:SPI_archive_notice"] = 33000, ["Module:Science_redirect"] = 256000, ["Module:Science_redirect/conf"] = 256000, ["Module:Section_link"] = 57000, ["Module:Section_sizes"] = 3600, ["Module:See_also_if_exists"] = 73000, ["Module:Separated_entries"] = 2300000, ["Module:Series_overview"] = 7900, ["Module:Settlement_short_description"] = 712000, ["Module:Shortcut"] = 24000, ["Module:Shortcut/config"] = 24000, ["Module:Shortcut/styles.css"] = 24000, ["Module:Side_box"] = 1160000, ["Module:Side_box/styles.css"] = 1160000, ["Module:Sidebar"] = 339000, ["Module:Sidebar/configuration"] = 339000, ["Module:Sidebar/styles.css"] = 345000, ["Module:Sidebar_games_events"] = 37000, ["Module:Sidebar_games_events/styles.css"] = 37000, ["Module:Singles"] = 41000, ["Module:Sister_project_links"] = 14000, ["Module:Sister_project_links/bar/styles.css"] = 3500, ["Module:Sister_project_links/styles.css"] = 11000, ["Module:Sock_list"] = 4300, ["Module:Sort_title"] = 18000, ["Module:Sortkey"] = 199000, ["Module:Split_article"] = 3600, ["Module:Spoken_Wikipedia"] = 2200, ["Module:Spoken_Wikipedia/configuration"] = 2200, ["Module:Spoken_Wikipedia/styles.css"] = 2200, ["Module:Sports_career"] = 19000, ["Module:Sports_color"] = 68000, ["Module:Sports_color/baseball"] = 34000, ["Module:Sports_color/basketball"] = 22000, ["Module:Sports_color/ice_hockey"] = 3100, ["Module:Sports_rbr_table"] = 12000, ["Module:Sports_rbr_table/styles.css"] = 12000, ["Module:Sports_reference"] = 7300, ["Module:Sports_results"] = 15000, ["Module:Sports_results/styles.css"] = 9500, ["Module:Sports_table"] = 58000, ["Module:Sports_table/WDL"] = 51000, ["Module:Sports_table/WDL_OT"] = 2700, ["Module:Sports_table/WL"] = 4000, ["Module:Sports_table/WL_OT"] = 2000, ["Module:Sports_table/argcheck"] = 58000, ["Module:Sports_table/styles.css"] = 58000, ["Module:Sports_table/sub"] = 58000, ["Module:Sports_table/totalscheck"] = 42000, ["Module:Stock_tickers/NYSE"] = 2100, ["Module:Storm_categories"] = 5200, ["Module:Storm_categories/categories"] = 5200, ["Module:Storm_categories/colors"] = 5200, ["Module:Storm_categories/icons"] = 5200, ["Module:String"] = 11300000, ["Module:String2"] = 2290000, ["Module:Su"] = 12000, ["Module:Subject_bar"] = 19000, ["Module:Suppress_categories"] = 5300, } abf587d8a0323a9d0aca3263b2ad8df6ad840fd9 Module:Transclusion count/data/T 828 1624 2959 2023-10-01T05:39:46Z w>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["T"] = 280000, ["T1"] = 8700, ["T:TDYK"] = 2700, ["TAFI/Picture_box"] = 2800, ["TBA"] = 6000, ["TCH"] = 2400, ["TCMDb_name"] = 2300, ["TCMDb_title"] = 13000, ["TDMCA"] = 22000, ["TFAFULL"] = 12000, ["TFAIMAGE"] = 3000, ["TFAfooter"] = 8700, ["TFArecentlist"] = 4300, ["THA"] = 4100, ["TOC_bottom"] = 77000, ["TOC_left"] = 3200, ["TOC_left/styles.css"] = 3200, ["TOC_limit"] = 22000, ["TOC_limit/styles.css"] = 24000, ["TOC_right"] = 47000, ["TOC_right/styles.css"] = 47000, ["TOC_top"] = 77000, ["TOC_top/styles.css"] = 77000, ["TOClimit"] = 3400, ["TOCright"] = 6400, ["TPE"] = 2100, ["TUN"] = 2100, ["TUR"] = 7200, ["TVDebutsEndingsAntonym"] = 6600, ["TWA/Logo/3"] = 66000, ["TWA/Navigation2"] = 5200, ["TWA_nav_inner_black"] = 33000, ["TWP"] = 4400, ["Tab"] = 5000, ["TableTBA"] = 2200, ["Tag"] = 6000, ["Talk"] = 4400, ["Talk_archive"] = 36000, ["Talk_archive_navigation"] = 19000, ["Talk_header"] = 711000, ["Talk_header/styles.css"] = 711000, ["Talk_other"] = 3020000, ["Talk_page"] = 6900, ["Talk_page_header"] = 3700, ["Talk_page_of_a_redirect"] = 3200, ["Talk_page_of_redirect"] = 22000, ["Talk_page_stalker"] = 12000, ["Talk_page_watcher"] = 2900, ["Talk_quote_block"] = 14000, ["Talk_quote_block/styles.css"] = 14000, ["Talk_quote_inline"] = 114000, ["Talk_quote_inline/styles.css"] = 114000, ["Talkarchive"] = 108000, ["Talkarchivenav"] = 29000, ["Talkback"] = 65000, ["Talkheader"] = 133000, ["Talkpage"] = 6800, ["Talkquote"] = 7800, ["Talkref"] = 2700, ["Talkspace_detect"] = 252000, ["Tallyho"] = 2100, ["Tan"] = 4400, ["Tasks"] = 740000, ["Taxobox"] = 90000, ["Taxobox/Error_colour"] = 461000, ["Taxobox/core"] = 461000, ["Taxobox/species"] = 74000, ["Taxobox_colour"] = 569000, ["Taxobox_name"] = 62000, ["Taxon_info"] = 400000, ["Taxon_italics"] = 292000, ["Taxonbar"] = 457000, ["Taxonbar/candidate"] = 457000, ["Taxonomy"] = 385000, ["Taxonomy/Acalyptratae"] = 5100, ["Taxonomy/Acanthomorpha"] = 16000, ["Taxonomy/Acanthopterygii"] = 15000, ["Taxonomy/Actinobacteria_(phylum)"] = 2300, ["Taxonomy/Actinomycetia"] = 2200, ["Taxonomy/Actinomycetota"] = 2300, ["Taxonomy/Actinopteri"] = 29000, ["Taxonomy/Actinopterygii"] = 29000, ["Taxonomy/Aculeata"] = 3700, ["Taxonomy/Adephaga"] = 11000, ["Taxonomy/Afrophidia"] = 4100, ["Taxonomy/Agaricales"] = 2100, ["Taxonomy/Agaricomycetes"] = 3900, ["Taxonomy/Agaricomycetidae"] = 2600, ["Taxonomy/Agaricomycotina"] = 4100, ["Taxonomy/Alethinophidia"] = 4500, ["Taxonomy/Amastigomycota"] = 12000, ["Taxonomy/Amniota"] = 60000, ["Taxonomy/Amorphea"] = 365000, ["Taxonomy/Amphibia"] = 9200, ["Taxonomy/Amphiesmenoptera"] = 79000, ["Taxonomy/Anartioptera"] = 4900, ["Taxonomy/Angiosperms"] = 93000, ["Taxonomy/Animalia"] = 352000, ["Taxonomy/Anthophila"] = 3400, ["Taxonomy/Anthozoa"] = 2100, ["Taxonomy/Antliophora"] = 19000, ["Taxonomy/Anura"] = 7300, ["Taxonomy/Apocrita"] = 10000, ["Taxonomy/Apoditrysia"] = 72000, ["Taxonomy/Apoidea"] = 4000, ["Taxonomy/Arachnida"] = 20000, ["Taxonomy/Arachnomorpha"] = 20000, ["Taxonomy/Arachnopulmonata"] = 15000, ["Taxonomy/Araneae"] = 15000, ["Taxonomy/Araneoidea"] = 2600, ["Taxonomy/Araneomorphae"] = 13000, ["Taxonomy/Archaeplastida"] = 101000, ["Taxonomy/Archosauria"] = 24000, ["Taxonomy/Archosauria/skip"] = 23000, ["Taxonomy/Arctiinae"] = 6800, ["Taxonomy/Arctiini"] = 4000, ["Taxonomy/Arthropoda"] = 197000, ["Taxonomy/Artiodactyla"] = 2400, ["Taxonomy/Artiofabula"] = 2100, ["Taxonomy/Aschiza"] = 2200, ["Taxonomy/Ascomycota"] = 7800, ["Taxonomy/Asilomorpha"] = 3300, ["Taxonomy/Asparagales"] = 11000, ["Taxonomy/Asteraceae"] = 7800, ["Taxonomy/Asterales"] = 9000, ["Taxonomy/Asterids"] = 28000, ["Taxonomy/Asteroideae"] = 6000, ["Taxonomy/Auchenorrhyncha"] = 2200, ["Taxonomy/Australaves"] = 10000, ["Taxonomy/Avebrevicauda"] = 18000, ["Taxonomy/Avemetatarsalia"] = 23000, ["Taxonomy/Averostra"] = 19000, ["Taxonomy/Aves"] = 18000, ["Taxonomy/Avetheropoda"] = 19000, ["Taxonomy/Avialae"] = 18000, ["Taxonomy/BOP_clade"] = 2000, ["Taxonomy/Bacteria"] = 6300, ["Taxonomy/Basidiomycota"] = 4600, ["Taxonomy/Batrachia"] = 8200, ["Taxonomy/Batrachomorpha"] = 9200, ["Taxonomy/Bilateria"] = 346000, ["Taxonomy/Bivalvia"] = 2500, ["Taxonomy/Bombycoidea"] = 3100, ["Taxonomy/Boreoeutheria"] = 14000, ["Taxonomy/Brachycera"] = 17000, ["Taxonomy/Bromeliaceae"] = 2300, ["Taxonomy/Caenogastropoda"] = 17000, ["Taxonomy/Caenophidia"] = 4100, ["Taxonomy/Caesalpinioideae"] = 2100, ["Taxonomy/Calyptratae"] = 4500, ["Taxonomy/Campanulids"] = 12000, ["Taxonomy/Carabidae"] = 8700, ["Taxonomy/Caraboidea"] = 9400, ["Taxonomy/Caryophyllales"] = 4600, ["Taxonomy/Cephalopoda"] = 3700, ["Taxonomy/Cerambycidae"] = 9100, ["Taxonomy/Chelicerata"] = 20000, ["Taxonomy/Chondrichthyes"] = 2000, ["Taxonomy/Chordata"] = 101000, ["Taxonomy/Chrysomelidae"] = 2900, ["Taxonomy/Chrysomeloidea"] = 12000, ["Taxonomy/Cladotheria"] = 16000, ["Taxonomy/Clupeocephala"] = 9800, ["Taxonomy/Cnidaria"] = 3600, ["Taxonomy/Coelolepida"] = 78000, ["Taxonomy/Coelurosauria"] = 19000, ["Taxonomy/Coleoptera"] = 38000, ["Taxonomy/Colubridae"] = 2700, ["Taxonomy/Colubroidea"] = 2700, ["Taxonomy/Colubroides"] = 4100, ["Taxonomy/Commelinids"] = 11000, ["Taxonomy/Conchifera"] = 4000, ["Taxonomy/Condylognatha"] = 7100, ["Taxonomy/Conoidea"] = 7000, ["Taxonomy/Core_eudicots"] = 62000, ["Taxonomy/Crambidae"] = 8900, ["Taxonomy/Crambinae"] = 2200, ["Taxonomy/Cucujiformia"] = 19000, ["Taxonomy/Curculionidae"] = 2400, ["Taxonomy/Curculionoidea"] = 2900, ["Taxonomy/Cyclorrhapha"] = 9700, ["Taxonomy/Cyperaceae"] = 2200, ["Taxonomy/Cyprinidae"] = 3700, ["Taxonomy/Cypriniformes"] = 4900, ["Taxonomy/Cypriniphysae"] = 4900, ["Taxonomy/Cyprinoidea"] = 3700, ["Taxonomy/Decapoda"] = 2800, ["Taxonomy/Dendrobiinae"] = 2000, ["Taxonomy/Depressariidae"] = 2700, ["Taxonomy/Deuterostomia"] = 103000, ["Taxonomy/Diaphoretickes"] = 101000, ["Taxonomy/Diaphoretickes/displayed"] = 2500, ["Taxonomy/Diapsida"] = 18000, ["Taxonomy/Dicondylia"] = 166000, ["Taxonomy/Dictyoptera"] = 2100, ["Taxonomy/Dikarya"] = 12000, ["Taxonomy/Dinosauria"] = 22000, ["Taxonomy/Dinosauriformes"] = 22000, ["Taxonomy/Dinosauromorpha"] = 22000, ["Taxonomy/Diptera"] = 19000, ["Taxonomy/Ditrysia"] = 76000, ["Taxonomy/Dothideomyceta"] = 5900, ["Taxonomy/Dracohors"] = 22000, ["Taxonomy/Ecdysozoa"] = 199000, ["Taxonomy/Elateriformia"] = 2200, ["Taxonomy/Embryophytes"] = 98000, ["Taxonomy/Embryophytes/Plantae"] = 98000, ["Taxonomy/Endopterygota"] = 148000, ["Taxonomy/Entelegynae"] = 3100, ["Taxonomy/Epidendroideae"] = 5300, ["Taxonomy/Erebidae"] = 10000, ["Taxonomy/Eremoneura"] = 9700, ["Taxonomy/Ericales"] = 3500, ["Taxonomy/Euarchontoglires"] = 5800, ["Taxonomy/Euavialae"] = 18000, ["Taxonomy/Eucarida"] = 2900, ["Taxonomy/Eudicots"] = 66000, ["Taxonomy/Eufalconimorphae"] = 10000, ["Taxonomy/Eugnathostomata"] = 100000, ["Taxonomy/Eukaryota"] = 469000, ["Taxonomy/Eukaryota/displayed"] = 368000, ["Taxonomy/Eulepidoptera"] = 77000, ["Taxonomy/Eumalacostraca"] = 4600, ["Taxonomy/Eumaniraptora"] = 18000, ["Taxonomy/Eumetabola"] = 156000, ["Taxonomy/Eumetazoa"] = 350000, ["Taxonomy/Euornithes"] = 18000, ["Taxonomy/Eupasseres"] = 9500, ["Taxonomy/Eupulmonata"] = 3100, ["Taxonomy/Eureptilia"] = 18000, ["Taxonomy/Eusaurischia"] = 21000, ["Taxonomy/Eutheria"] = 15000, ["Taxonomy/Euthyneura"] = 7900, ["Taxonomy/Euungulata"] = 3500, ["Taxonomy/Fabaceae"] = 5900, ["Taxonomy/Fabales"] = 6200, ["Taxonomy/Fabids"] = 16000, ["Taxonomy/Faboideae"] = 3200, ["Taxonomy/Ferungulata"] = 5500, ["Taxonomy/Filozoa"] = 352000, ["Taxonomy/Formicidae"] = 2300, ["Taxonomy/Formicoidea"] = 2300, ["Taxonomy/Fungi"] = 13000, ["Taxonomy/Gastropoda"] = 30000, ["Taxonomy/Geadephaga"] = 9400, ["Taxonomy/Gekkomorpha"] = 2200, ["Taxonomy/Gekkonoidea"] = 2200, ["Taxonomy/Gekkonomorpha"] = 2600, ["Taxonomy/Gekkota"] = 2600, ["Taxonomy/Gelechiidae"] = 5400, ["Taxonomy/Gelechiinae"] = 2700, ["Taxonomy/Gelechioidea"] = 16000, ["Taxonomy/Gentianales"] = 4400, ["Taxonomy/Geometridae"] = 6100, ["Taxonomy/Geometroidea"] = 6200, ["Taxonomy/Glires"] = 4200, ["Taxonomy/Gliriformes"] = 4200, ["Taxonomy/Glossata"] = 78000, ["Taxonomy/Gnathostomata"] = 101000, ["Taxonomy/Graminid_clade"] = 3600, ["Taxonomy/Helicina_(suborder)"] = 2600, ["Taxonomy/Hemiptera"] = 7100, ["Taxonomy/Heterobranchia"] = 8000, ["Taxonomy/Heteroneura"] = 78000, ["Taxonomy/Heteroptera"] = 4000, ["Taxonomy/Hexapoda"] = 168000, ["Taxonomy/Holodonata"] = 2100, ["Taxonomy/Holomycota"] = 13000, ["Taxonomy/Holozoa"] = 352000, ["Taxonomy/Hyloidea"] = 2500, ["Taxonomy/Hymenoptera"] = 11000, ["Taxonomy/Hymenopterida"] = 11000, ["Taxonomy/Iguania"] = 2500, ["Taxonomy/Iguanomorpha"] = 2500, ["Taxonomy/Insecta"] = 166000, ["Taxonomy/Lamiales"] = 6200, ["Taxonomy/Lamiids"] = 13000, ["Taxonomy/Lamiinae"] = 6100, ["Taxonomy/Larentiinae"] = 3000, ["Taxonomy/Laurasiatheria"] = 8200, ["Taxonomy/Lecanoromycetes"] = 3200, ["Taxonomy/Lecanoromycetidae"] = 2100, ["Taxonomy/Leotiomyceta"] = 7200, ["Taxonomy/Lepidoptera"] = 79000, ["Taxonomy/Lepidosauria"] = 15000, ["Taxonomy/Lepidosauromorpha"] = 15000, ["Taxonomy/Life"] = 478000, ["Taxonomy/Lissamphibia"] = 8500, ["Taxonomy/Littorinimorpha"] = 3400, ["Taxonomy/Lophotrochozoa"] = 41000, ["Taxonomy/Lycaenidae"] = 3000, ["Taxonomy/Macroheterocera"] = 26000, ["Taxonomy/Magnoliids"] = 2400, ["Taxonomy/Malacostraca"] = 4800, ["Taxonomy/Malaxideae"] = 2100, ["Taxonomy/Malpighiales"] = 4500, ["Taxonomy/Malvales"] = 2500, ["Taxonomy/Malvids"] = 12000, ["Taxonomy/Mammalia"] = 17000, ["Taxonomy/Mammalia/skip"] = 17000, ["Taxonomy/Maniraptora"] = 19000, ["Taxonomy/Maniraptoriformes"] = 19000, ["Taxonomy/Maniraptoromorpha"] = 19000, ["Taxonomy/Mesostigmata"] = 2000, ["Taxonomy/Metapterygota"] = 163000, ["Taxonomy/Mollusca"] = 37000, ["Taxonomy/Monocots"] = 24000, ["Taxonomy/Multicrustacea"] = 6100, ["Taxonomy/Muroidea"] = 2500, ["Taxonomy/Muscomorpha"] = 12000, ["Taxonomy/Myoglossata"] = 78000, ["Taxonomy/Myomorpha"] = 2600, ["Taxonomy/Myrtaceae"] = 3000, ["Taxonomy/Myrtales"] = 4400, ["Taxonomy/Myrtoideae"] = 3000, ["Taxonomy/Nematocera"] = 2000, ["Taxonomy/Neoaves"] = 16000, ["Taxonomy/Neobatrachia"] = 5600, ["Taxonomy/Neocoelurosauria"] = 19000, ["Taxonomy/Neodiapsida"] = 18000, ["Taxonomy/Neogastropoda"] = 13000, ["Taxonomy/Neognathae"] = 18000, ["Taxonomy/Neolepidoptera"] = 78000, ["Taxonomy/Neoptera"] = 163000, ["Taxonomy/Neopterygii"] = 29000, ["Taxonomy/Neotheropoda"] = 20000, ["Taxonomy/Nephrozoa"] = 346000, ["Taxonomy/Noctuidae"] = 4100, ["Taxonomy/Noctuoidea"] = 16000, ["Taxonomy/Nymphalidae"] = 3400, ["Taxonomy/Obazoa"] = 365000, ["Taxonomy/Obtectomera"] = 47000, ["Taxonomy/Odonata"] = 2100, ["Taxonomy/Odonatoptera"] = 2200, ["Taxonomy/Oestroidea"] = 4100, ["Taxonomy/Olfactores"] = 101000, ["Taxonomy/Ophidia"] = 4900, ["Taxonomy/Opisthokonta"] = 365000, ["Taxonomy/Opisthothelae"] = 15000, ["Taxonomy/Orchidaceae"] = 7600, ["Taxonomy/Orchidoideae"] = 2100, ["Taxonomy/Orionides"] = 19000, ["Taxonomy/Ornithodira"] = 23000, ["Taxonomy/Ornithothoraces"] = 18000, ["Taxonomy/Ornithurae"] = 18000, ["Taxonomy/Ornithuromorpha"] = 18000, ["Taxonomy/Orthoptera"] = 3800, ["Taxonomy/Orthopterida"] = 4500, ["Taxonomy/Ostariophysi"] = 9400, ["Taxonomy/Osteichthyes"] = 29000, ["Taxonomy/Otocephala"] = 9800, ["Taxonomy/Otophysi"] = 9300, ["Taxonomy/Ovalentaria"] = 4800, ["Taxonomy/Palaeoptera"] = 2700, ["Taxonomy/Pan-Euungulata"] = 3500, ["Taxonomy/Panarthropoda"] = 198000, ["Taxonomy/Pancrustacea"] = 175000, ["Taxonomy/Panorpida"] = 99000, ["Taxonomy/Panorthoptera"] = 3800, ["Taxonomy/Panpulmonata"] = 5300, ["Taxonomy/Pantetrapulmonata"] = 15000, ["Taxonomy/Papilionoidea"] = 10000, ["Taxonomy/ParaHoxozoa"] = 350000, ["Taxonomy/Paraneoptera"] = 8200, ["Taxonomy/Parasitiformes"] = 2200, ["Taxonomy/Paraves"] = 19000, ["Taxonomy/Paraxonia"] = 2400, ["Taxonomy/Passerea"] = 15000, ["Taxonomy/Passeri"] = 7500, ["Taxonomy/Passerida"] = 4500, ["Taxonomy/Passeriformes"] = 9600, ["Taxonomy/Pennaraptora"] = 19000, ["Taxonomy/Perciformes"] = 2500, ["Taxonomy/Percoidei"] = 2100, ["Taxonomy/Percomorpha"] = 13000, ["Taxonomy/Pezizomycotina"] = 7600, ["Taxonomy/Phytophaga"] = 15000, ["Taxonomy/Placentalia"] = 15000, ["Taxonomy/Plantae"] = 99000, ["Taxonomy/Pleocyemata"] = 2700, ["Taxonomy/Poaceae"] = 3600, ["Taxonomy/Poales"] = 8600, ["Taxonomy/Polyneoptera"] = 7300, ["Taxonomy/Polyorthoptera"] = 4500, ["Taxonomy/Polyphaga"] = 27000, ["Taxonomy/Polysporangiophytes"] = 96000, ["Taxonomy/Polysporangiophytes/Plantae"] = 96000, ["Taxonomy/Protostomia"] = 243000, ["Taxonomy/Prototribosphenida"] = 16000, ["Taxonomy/Psittacopasserae"] = 10000, ["Taxonomy/Pterygota"] = 166000, ["Taxonomy/Pygostylia"] = 18000, ["Taxonomy/Pyralidae"] = 2300, ["Taxonomy/Pyraloidea"] = 11000, ["Taxonomy/Pyramidellidae"] = 2200, ["Taxonomy/Pyramidelloidea"] = 2200, ["Taxonomy/Ranoidea"] = 2800, ["Taxonomy/Reptantia"] = 2100, ["Taxonomy/Reptilia"] = 19000, ["Taxonomy/Reptiliomorpha"] = 60000, ["Taxonomy/Rodentia"] = 4000, ["Taxonomy/Romeriida"] = 18000, ["Taxonomy/Rosales"] = 3100, ["Taxonomy/Rosids"] = 28000, ["Taxonomy/Rouphozoa"] = 2100, ["Taxonomy/Rubiaceae"] = 2400, ["Taxonomy/SAR"] = 2400, ["Taxonomy/Saccharomyceta"] = 7700, ["Taxonomy/Salientia"] = 7300, ["Taxonomy/Salticidae"] = 2500, ["Taxonomy/Salticinae"] = 2300, ["Taxonomy/Sapindales"] = 2900, ["Taxonomy/Sauria"] = 18000, ["Taxonomy/Saurischia"] = 21000, ["Taxonomy/Sauropsida"] = 41000, ["Taxonomy/Scarabaeiformia"] = 2200, ["Taxonomy/Scarabaeoidea"] = 2200, ["Taxonomy/Schizophora"] = 9700, ["Taxonomy/Scincidae"] = 2100, ["Taxonomy/Scincogekkonomorpha"] = 2600, ["Taxonomy/Scincoidea"] = 2200, ["Taxonomy/Scincomorpha"] = 2300, ["Taxonomy/Scleroglossa"] = 2600, ["Taxonomy/Scrotifera"] = 7500, ["Taxonomy/Serpentes"] = 4900, ["Taxonomy/Siluriformes"] = 3300, ["Taxonomy/Simplicidentata"] = 4000, ["Taxonomy/Spermatophyta"] = 94000, ["Taxonomy/Spermatophytes/Plantae"] = 94000, ["Taxonomy/Spilomelinae"] = 2900, ["Taxonomy/Spiralia"] = 44000, ["Taxonomy/Squamata"] = 14000, ["Taxonomy/Staphyliniformia"] = 2200, ["Taxonomy/Streptophyta"] = 98000, ["Taxonomy/Stylommatophora"] = 3000, ["Taxonomy/Superasterids"] = 33000, ["Taxonomy/Superrosids"] = 29000, ["Taxonomy/Symbiomycota"] = 12000, ["Taxonomy/TSAR"] = 2400, ["Taxonomy/Tachinidae"] = 3600, ["Taxonomy/Tactopoda"] = 197000, ["Taxonomy/Tectipleura"] = 5500, ["Taxonomy/Teleocephala"] = 9800, ["Taxonomy/Teleostei"] = 28000, ["Taxonomy/Teleostomi"] = 98000, ["Taxonomy/Telluraves"] = 13000, ["Taxonomy/Tenebrionoidea"] = 2700, ["Taxonomy/Tephritidae"] = 2800, ["Taxonomy/Tephritinae"] = 2300, ["Taxonomy/Tephritoidea"] = 3400, ["Taxonomy/Terrabacteria"] = 3500, ["Taxonomy/Tetanurae"] = 19000, ["Taxonomy/Tetrapoda"] = 69000, ["Taxonomy/Tetrapulmonata"] = 15000, ["Taxonomy/Theria"] = 16000, ["Taxonomy/Theriiformes"] = 17000, ["Taxonomy/Theriimorpha"] = 17000, ["Taxonomy/Theropoda"] = 20000, ["Taxonomy/Tortricidae"] = 4600, ["Taxonomy/Tortricinae"] = 3200, ["Taxonomy/Tortricoidea"] = 4600, ["Taxonomy/Toxicofera"] = 8000, ["Taxonomy/Tracheophyta"] = 96000, ["Taxonomy/Tracheophytes/Plantae"] = 96000, ["Taxonomy/Trechnotheria"] = 16000, ["Taxonomy/Tribosphenida"] = 16000, ["Taxonomy/Trochida"] = 2400, ["Taxonomy/Trochoidea"] = 2400, ["Taxonomy/Tyranni"] = 2000, ["Taxonomy/Tyrannoraptora"] = 19000, ["Taxonomy/Unicalcarida"] = 10000, ["Taxonomy/Vertebrata"] = 101000, ["Taxonomy/Vetigastropoda"] = 4100, ["Taxonomy/Virus"] = 2800, ["Taxonomy/Zatheria"] = 16000, ["Taxonomy_key"] = 108000, ["Taxonomy_preload"] = 108000, ["Tb"] = 13000, ["Tcmdb_title"] = 9500, ["Team_roster_navbox"] = 35000, ["Technical"] = 4000, ["Technically_indistinguishable"] = 2200, ["TelevisionWikiProject"] = 4600, ["Television_episode_redirect_handler"] = 5100, ["Television_episode_short_description"] = 11000, ["Template"] = 3800, ["Template-Class"] = 14000, ["TemplateData_header"] = 15000, ["Template_category"] = 32000, ["Template_display"] = 32000, ["Template_for_discussion/dated"] = 3300, ["Template_link"] = 6740000, ["Template_link_code"] = 921000, ["Template_link_expanded"] = 2540000, ["Template_link_expanded_with_subst"] = 4000, ["Template_link_general"] = 20000, ["Template_link_no_redirect"] = 111000, ["Template_link_null"] = 5200, ["Template_link_universal"] = 12000, ["Template_link_with_alternate_text"] = 2200, ["Template_link_with_link_off"] = 10000, ["Template_link_with_linked_braces"] = 8300, ["Template_link_with_parameters"] = 69000, ["Template_link_with_subst"] = 50000, ["Template_other"] = 4240000, ["Template_parameter_usage"] = 16000, ["Template_reference_list"] = 6000, ["Template_shortcut"] = 3600, ["TennisEventInfo"] = 6300, ["TennisEvents"] = 2100, ["Tennis_events"] = 10000, ["Tennis_icon"] = 2700, ["Tennis_icon2"] = 2700, ["Tennis_record"] = 2600, ["Tennis_win_percentage"] = 3200, ["Terminate_sentence"] = 49000, ["Testcases_notice"] = 3900, ["Testcases_other"] = 2200, ["Tfd_links"] = 5800, ["Thank"] = 2200, ["Thank_you"] = 4600, ["The_Africa_Destubathon_banner"] = 2000, ["The_edit-summary_field"] = 9900, ["The_edit-summary_field/OOUI"] = 11000, ["Their"] = 12000, ["They"] = 2300, ["They_have"] = 28000, ["Thin_space"] = 12000, ["Thinsp"] = 10000, ["Third-party"] = 8900, ["Thirteen_Colonies_article_name"] = 2000, ["This_is_a_new_user"] = 6300, ["Thoroughbred_racing"] = 4800, ["Thursday"] = 2700, ["Tick"] = 76000, ["Ticket_confirmation"] = 3200, ["Time/JST_offset"] = 113000, ["Time_ago"] = 166000, ["Time_signature"] = 2100, ["Title_case"] = 5700, ["Title_century"] = 2700, ["Title_country"] = 12000, ["Title_decade"] = 26000, ["Title_disambig_text"] = 233000, ["Title_monthname"] = 14000, ["Title_number"] = 3200, ["Title_without_disambig"] = 3500, ["Title_year"] = 194000, ["Title_year_range"] = 3500, ["Tl"] = 6550000, ["Tl-r"] = 111000, ["Tl2"] = 8300, ["Tlc"] = 809000, ["Tld"] = 113000, ["Tlf"] = 10000, ["Tlg"] = 19000, ["Tlp"] = 69000, ["Tls"] = 43000, ["Tlsc"] = 20000, ["Tlsp"] = 8300, ["Tlu"] = 11000, ["Tlx"] = 2540000, ["Tlxs"] = 2300, ["Tmbox"] = 2440000, ["Tn"] = 8300, ["Tnull"] = 5100, ["To"] = 2600, ["To_do"] = 7700, ["Tocright"] = 7300, ["Todo"] = 2900, ["Tomorrow"] = 5600, ["Tone"] = 8000, ["Tone-cmn"] = 2300, ["Toolbar"] = 320000, ["Tooltip"] = 279000, ["Tooltip/styles.css"] = 279000, ["Top-Class"] = 15000, ["Top-importance"] = 15000, ["Top_25_Report"] = 3100, ["Top_25_report"] = 4400, ["Top_icon"] = 72000, ["Totd"] = 4300, ["Totd_nav"] = 5400, ["Tp"] = 2500, ["Tpr"] = 2100, ["Tps"] = 11000, ["Tpw"] = 2800, ["Tq"] = 111000, ["Tq2"] = 2900, ["Tqq"] = 2500, ["Track_gauge"] = 24000, ["Track_listing"] = 107000, ["Tracking_category"] = 4100, ["Tracklist"] = 30000, ["Trademark"] = 6900, ["Trademarked"] = 4100, ["TrainsWikiProject"] = 34000, ["Trans"] = 2800, ["Transclude"] = 22000, ["Transclude_lead_excerpt"] = 3300, ["Transcluded_section"] = 3900, ["Transclusionless"] = 4100, ["Transl"] = 45000, ["Translated"] = 21000, ["Translated_page"] = 89000, ["Translation"] = 15000, ["Translation/Base"] = 2400, ["Translation/Information"] = 2100, ["Translation/Summary"] = 2100, ["Transliteration"] = 54000, ["Tree_chart"] = 9100, ["Tree_chart/end"] = 9100, ["Tree_chart/start"] = 9100, ["Tree_list"] = 5300, ["Tree_list/end"] = 5300, ["Tree_list/styles.css"] = 5300, ["Trim"] = 1430000, ["Trim_brackets"] = 3100, ["Trim_quotes"] = 24000, ["Tsp"] = 2100, ["Tuesday"] = 2700, ["TuttoCalciatori"] = 2200, ["Twitter"] = 20000, ["Two-digit_year"] = 5500, ["TwoLegResult"] = 5300, ["TwoLegStart"] = 4200, ["TwoLeg_start"] = 5400, ["Two_digit_year"] = 5500, ["Module:TNT"] = 7500, ["Module:TableTools"] = 5770000, ["Module:Table_empty_cell"] = 26000, ["Module:TaxonItalics"] = 570000, ["Module:TaxonList"] = 16000, ["Module:Taxonbar"] = 457000, ["Module:Taxonbar/candidate"] = 457000, ["Module:Taxonbar/conf"] = 457000, ["Module:Taxonbar/exists"] = 457000, ["Module:Taxonbar/whitelist"] = 457000, ["Module:Team_appearances_list"] = 15000, ["Module:Team_appearances_list/data"] = 15000, ["Module:Team_bracket"] = 46000, ["Module:Team_bracket_tracking"] = 2600, ["Module:Team_roster_navbox"] = 35000, ["Module:Television_episode_redirect_handler"] = 5100, ["Module:Television_episode_short_description"] = 16000, ["Module:Television_infoboxes_disambiguation_check"] = 63000, ["Module:TemplatePar"] = 52000, ["Module:Template_invocation"] = 2500, ["Module:Template_link_general"] = 3470000, ["Module:Template_parameter_value"] = 10100000, ["Module:Template_redirect_regex"] = 791000, ["Module:Template_test_case"] = 2500, ["Module:Template_test_case/config"] = 2500, ["Module:Template_test_case/data"] = 2500, ["Module:Template_wrapper"] = 579000, ["Module:Tennis_events_nav"] = 19000, ["Module:Text"] = 1580000, ["Module:Tfd_links"] = 5800, ["Module:Time"] = 2100, ["Module:Time/data"] = 2100, ["Module:Time_ago"] = 166000, ["Module:Title_monthname"] = 14000, ["Module:Toolbar"] = 1220000, ["Module:Top_25_report"] = 4400, ["Module:Track_gauge"] = 24000, ["Module:Track_gauge/data"] = 24000, ["Module:Track_listing"] = 107000, ["Module:Track_listing/configuration"] = 107000, ["Module:Track_listing/styles.css"] = 107000, ["Module:Transcluder"] = 18000, ["Module:Transclusion_count"] = 51000, ["Module:Transclusion_count/data/A"] = 3000, ["Module:Transclusion_count/data/B"] = 2300, ["Module:Transclusion_count/data/C"] = 10000, ["Module:Transclusion_count/data/I"] = 2300, ["Module:Transclusion_count/data/L"] = 2500, ["Module:Transclusion_count/data/M"] = 2600, ["Module:Transclusion_count/data/N"] = 2200, ["Module:Transclusion_count/data/P"] = 2500, ["Module:Transclusion_count/data/S"] = 4000, ["Module:Transclusion_count/data/U"] = 2100, ["Module:Tree_chart"] = 9100, ["Module:Tree_chart/data"] = 9100, ["Module:Trim_quotes"] = 62000, ["Module:TwitterSnowflake"] = 37000, ["Module:Type_in_location"] = 154000, } bb73deb1704e3fd116b40a561b3e6b04a4e980c0 Module:Transclusion count/data/U 828 863 1914 2023-10-01T05:39:56Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["U"] = 233000, ["U.S._Roads_WikiProject"] = 11000, ["UAF_player"] = 2500, ["UEFA_player"] = 5100, ["UK"] = 4400, ["UKR"] = 12000, ["UK_legislation"] = 2300, ["URL"] = 379000, ["URL2"] = 10000, ["URS"] = 7100, ["URY"] = 2100, ["US$"] = 11000, ["US50_Invite"] = 3700, ["USA"] = 41000, ["USBill"] = 2300, ["USCGC"] = 2600, ["USCongRep-end"] = 5000, ["USCongRep-row"] = 5500, ["USCongRep-start"] = 5000, ["USCongressOrdinal"] = 5900, ["USCongressOrdinal/code"] = 5900, ["USD"] = 5100, ["USGS_gazetteer"] = 11000, ["USNS"] = 2800, ["USN_flag"] = 10000, ["USPL"] = 2000, ["USRD"] = 5000, ["USS"] = 36000, ["USSR"] = 2200, ["USStat"] = 2300, ["US_Census_population"] = 38000, ["US_Census_population/styles.css"] = 38000, ["US_House_succession_box"] = 8700, ["US_State_Abbrev"] = 16000, ["US_county_navigation_box"] = 99000, ["US_government_sources"] = 2500, ["US_patent"] = 2700, ["US_state_navigation_box"] = 16000, ["UTRS"] = 7900, ["UTRS-unblock-user"] = 4900, ["UTZ"] = 2600, ["UZB"] = 2400, ["Ubl"] = 136000, ["Ublist"] = 4900, ["Ubx"] = 12000, ["Ucat"] = 38000, ["Ucfirstletter"] = 5100, ["Uir"] = 28000, ["Ukrainian_oblast"] = 2000, ["Ul"] = 5500, ["Ulist"] = 6500, ["Umbox"] = 78000, ["Unassessed-Class"] = 11000, ["Unassessed_class"] = 320000, ["Unblock-auto_reviewed"] = 5300, ["Unblock-spamun_reviewed"] = 2900, ["Unblock-un_reviewed"] = 16000, ["Unblock_reviewed"] = 68000, ["Unbulleted_list"] = 1230000, ["Uncategorized"] = 2700, ["Under_construction"] = 2400, ["Underline"] = 3600, ["Undisclosed_paid"] = 2900, ["Unindent"] = 4300, ["UnitedStatesCode"] = 3400, ["United_States_presidential_election_results_table_footer"] = 2900, ["United_States_presidential_election_results_table_header"] = 3300, ["United_States_presidential_election_results_table_row"] = 3300, ["United_States_topic"] = 5900, ["Unknown"] = 2700, ["Unknown-Class"] = 10000, ["Unlink"] = 21000, ["Unreferenced"] = 162000, ["Unreferenced_section"] = 36000, ["Unreferenced_stub"] = 2100, ["Unrelated"] = 5500, ["Unreliable_source?"] = 11000, ["Unreliable_sources"] = 8100, ["Unsourced"] = 5000, ["Update"] = 30000, ["Update_after"] = 5100, ["Update_inline"] = 5800, ["Update_inline_span"] = 2600, ["Update_section"] = 3900, ["Update_span"] = 2600, ["Updated"] = 57000, ["UploadCampaignLink"] = 2100, ["Uploader_information"] = 222000, ["Url"] = 83000, ["Use_American_English"] = 73000, ["Use_Australian_English"] = 125000, ["Use_Bangladeshi_English"] = 3000, ["Use_British_English"] = 258000, ["Use_Canadian_English"] = 37000, ["Use_Ghanaian_English"] = 2400, ["Use_Hiberno-English"] = 32000, ["Use_Hong_Kong_English"] = 4000, ["Use_Indian_English"] = 158000, ["Use_Irish_English"] = 17000, ["Use_Kenyan_English"] = 2400, ["Use_New_Zealand_English"] = 21000, ["Use_Nigerian_English"] = 4800, ["Use_Oxford_spelling"] = 2400, ["Use_Pakistani_English"] = 5600, ["Use_Philippine_English"] = 9500, ["Use_South_African_English"] = 8700, ["Use_dmy_dates"] = 1670000, ["Use_first_nonempty"] = 16000, ["Use_list-defined_references"] = 4000, ["Use_mdy_dates"] = 552000, ["Use_shortened_footnotes"] = 2300, ["User"] = 557000, ["User-generated_source"] = 5700, ["User-multi"] = 335000, ["User0"] = 18000, ["User19"] = 11000, ["User2"] = 3900, ["User21"] = 53000, ["User3"] = 242000, ["User4"] = 3200, ["User5"] = 7000, ["UserSummary"] = 115000, ["User_American"] = 2300, ["User_COI"] = 28000, ["User_Copy_Edit"] = 2200, ["User_Firefox"] = 5900, ["User_HTML"] = 3000, ["User_OS:Dos/style.css"] = 2100, ["User_QAIbox"] = 5700, ["User_QAIbox/auto"] = 3800, ["User_Translator"] = 2400, ["User_UN"] = 2400, ["User_WP"] = 19000, ["User_WP/switch"] = 19000, ["User_Wikipedia"] = 2300, ["User_Wikipedia_reference"] = 2900, ["User_Wikipedian_For"] = 10000, ["User_Wikipedian_for"] = 15000, ["User_Wikipediholic"] = 2200, ["User_category_header"] = 2200, ["User_committed_identity"] = 2500, ["User_contrib"] = 5100, ["User_current_age"] = 2500, ["User_current_age/days"] = 2500, ["User_current_age/months"] = 2500, ["User_current_age/years"] = 2500, ["User_de"] = 5600, ["User_de-1"] = 7700, ["User_de-2"] = 4400, ["User_de-3"] = 2300, ["User_en"] = 39000, ["User_en-1"] = 2500, ["User_en-2"] = 7700, ["User_en-3"] = 15000, ["User_en-4"] = 8900, ["User_en-5"] = 6500, ["User_en-N"] = 4900, ["User_es"] = 3800, ["User_es-1"] = 7200, ["User_es-2"] = 4700, ["User_es-3"] = 2600, ["User_fr"] = 4000, ["User_fr-1"] = 9100, ["User_fr-2"] = 6500, ["User_fr-3"] = 3800, ["User_html"] = 2700, ["User_in_region"] = 28000, ["User_in_the_United_Kingdom"] = 2000, ["User_in_the_United_States"] = 4200, ["User_infobox"] = 3000, ["User_instrument"] = 2800, ["User_invitation"] = 5800, ["User_iso15924"] = 2400, ["User_iso15924/level-text"] = 2800, ["User_iso15924/user_script_catlink"] = 2700, ["User_it-1"] = 2800, ["User_ja-1"] = 2900, ["User_la-1"] = 2800, ["User_link"] = 238000, ["User_lives_in"] = 7000, ["User_male"] = 2300, ["User_oops"] = 2100, ["User_other"] = 590000, ["User_page"] = 44000, ["User_proud"] = 5100, ["User_rights"] = 5000, ["User_ru"] = 3000, ["User_ru-1"] = 2100, ["User_sandbox"] = 293000, ["User_summary"] = 115000, ["User_talk_other"] = 68000, ["User_time_zone"] = 4100, ["User_visited"] = 6400, ["User_wikipedia"] = 2000, ["User_wikipedia/RC_Patrol"] = 3700, ["User_wikipedia/Rollback"] = 2300, ["User_wikipedia/WikiGnome"] = 2700, ["User_wishes_to_visit"] = 6000, ["User_zh"] = 2200, ["Userbox"] = 301000, ["Userbox-2"] = 33000, ["Userbox-level"] = 102000, ["Userbox-r"] = 6100, ["UserboxCOI"] = 28000, ["Userbox_table_bottom"] = 11000, ["Userbox_table_category"] = 2400, ["Userbox_table_top"] = 11000, ["Userbox_table_userbox"] = 11000, ["Userboxbottom"] = 52000, ["Userboxtop"] = 57000, ["Usercheck-short"] = 3600, ["Userlinks"] = 29000, ["Userpage"] = 30000, ["Userpage_blanked"] = 8400, ["Userspace_draft"] = 41000, ["Usgs-gazetteer"] = 11000, ["Ushr"] = 15000, ["Ussc"] = 5200, ["Usurped"] = 5300, ["Utrs"] = 5200, ["Module:URL"] = 577000, ["Module:Unicode_data"] = 1470000, ["Module:Unicode_data/scripts"] = 486000, ["Module:Unstrip"] = 45000, ["Module:Unsubst"] = 11700000, ["Module:Unsubst-infobox"] = 191000, ["Module:Urldecode"] = 4500, ["Module:User"] = 557000, ["Module:UserLinks"] = 874000, ["Module:UserLinks/config"] = 874000, ["Module:UserLinks/extra"] = 23000, ["Module:UserLinks/shared"] = 874000, ["Module:User_contrib"] = 5100, ["Module:Userbox"] = 307000, ["Module:Uses_Wikidata"] = 3200, ["Module:Ustring"] = 739000, } a2d476eb5b0ea9ca4a67bec8b21989ea55e3530f Philippines 0 437 967 964 2023-10-01T08:15:00Z Führerredux 2 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | native_name = Komonwelt ng Pilipinas | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | overlord = [[The United States of America]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[High Commissioner of the Philippines]] | leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. 914a084e2117770b7778ba421f98e914e7e0ede9 968 967 2023-10-01T08:18:29Z Führerredux 2 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = Komonwelt ng Pilipinas | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[High Commissioner of the Philippines]] | leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. d6379a9da42704eba7e13c6fe21ec48db75350ac 976 968 2023-10-01T08:36:43Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = Komonwelt ng Pilipinas | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | leader_title1 = [[President of the Philippines|President|Head of Government]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[High Commissioner of the Philippines]] | leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. ba5a037dba5134c38b96bfda44bfda2acea53292 977 976 2023-10-01T08:37:10Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = Komonwelt ng Pilipinas | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[High Commissioner of the Philippines]] | leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. d6379a9da42704eba7e13c6fe21ec48db75350ac 978 977 2023-10-01T08:40:10Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = Komonwelt ng Pilipinas | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Trade and Industries Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. 66496340695e4693ed29861fab361bfe0402b8b3 979 978 2023-10-01T08:40:46Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = Komonwelt ng Pilipinas | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | ruling_party = Partido Nacionalista | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. 240219671b91d71563f0a729c5747cc1bedcdb2e 980 979 2023-10-01T08:41:03Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = Komonwelt ng Pilipinas | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | demonym = Filipino | government_type = Devolved presidential constitutional dependency | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. fdb45894b0c0705f2ea2ac2c1dc6640156fa0a87 981 980 2023-10-01T08:41:55Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = Komonwelt ng Pilipinas | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | ethnic_groups = {{#invoke:list|unbulleted | 33.7% [[Visayans|Visayan]] | 24.4% [[Tagalog people|Tagalog]] | 8.4% [[Ilocano people|Ilocano]] | 6.8% [[Bicolano people|Bicolano]] | 26.2% [[Ethnic groups in the Philippines|other]] }} | demonym = [[Filipinos|Filipino]]<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> [[Pinoy]]<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | government_type = Devolved presidential constitutional dependency | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. 3b6d3b5405377d6175972d63ee25c84011c5a74c 982 981 2023-10-01T08:46:33Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = Komonwelt ng Pilipinas | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | ethnic_groups = {{#invoke:list|unbulleted | 33.7% Visayan | 24.4% Tagalog | 8.4% Ilocano | 6.8% Bicolano | 26.2% other }} | demonym = [[Filipinos|Filipino]]<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> [[Pinoy]]<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | government_type = Devolved presidential constitutional dependency | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. 6498ee83613a78ea9a83416d378afe59ef0086cd 983 982 2023-10-01T08:46:53Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = Komonwelt ng Pilipinas | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | ethnic_groups = {{#invoke:list|unbulleted | 33.7% Visayan | 24.4% Tagalog | 8.4% Ilocano | 6.8% Bicolano | 26.2% other }} | demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | government_type = Devolved presidential constitutional dependency | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. 267a3d1eb4b94fd47af182d3db4c025d9b35478a 984 983 2023-10-01T08:56:14Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = Komonwelt ng Pilipinas | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | ethnic_groups = {{#invoke:list|unbulleted | 33.7% Visayan | 24.4% Tagalog | 8.4% Ilocano | 6.8% Bicolano | 26.2% other }} | demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | government_type = Devolved presidential constitutional dependency | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. == History == === Pre-Colonial Period (pre-1521) === The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighboring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas. Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers. === Spanish Colonial Period (1521-1898) === The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world. Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892. The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War. === Filipino-American War and American Colonial Period (1898-1936) === The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao. 7b6ca6875fd3487adfbf1589b40212221cbe9d44 985 984 2023-10-01T08:59:03Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = Komonwelt ng Pilipinas | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | official_languages = Tagalog, Spanish, English | ethnic_groups = {{#invoke:list|unbulleted | 33.7% Visayan | 24.4% Tagalog | 8.4% Ilocano | 6.8% Bicolano | 26.2% other }} | demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | government_type = Devolved presidential constitutional dependency | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. == History == === Pre-Colonial Period (pre-1521) === The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighboring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas. Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers. === Spanish Colonial Period (1521-1898) === The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world. Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892. The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War. === Filipino-American War and American Colonial Period (1898-1936) === The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao. However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner. dda288c8db6cf53e7ff55e2215c2a976db03113f Module:Lang/doc 828 443 969 2023-10-01T08:19:41Z Führerredux 2 Created page with "{{High-use}} {{Language templates}} {{Lua|Module:Lang/data|Module:Lang/ISO 639 synonyms|Module:Lang/tag from name|Module:Unicode data|Module:Yesno|Module:Arguments}} This module exists primarily to provide correct html markup for non–English language text where that text is used in the English Wikipedia. It has a secondary purpose of providing correct visual rendering for this non-English text. The module was developed to consolidate processing for {{tlx|Lang}}, the {..." wikitext text/x-wiki {{High-use}} {{Language templates}} {{Lua|Module:Lang/data|Module:Lang/ISO 639 synonyms|Module:Lang/tag from name|Module:Unicode data|Module:Yesno|Module:Arguments}} This module exists primarily to provide correct html markup for non–English language text where that text is used in the English Wikipedia. It has a secondary purpose of providing correct visual rendering for this non-English text. The module was developed to consolidate processing for {{tlx|Lang}}, the {{cl|Lang-x templates|{{tld|lang-??}}}} (most), and {{tlx|Transl}} templates into a single source and to use a clearly defined data set extracted from international standards. It provides error checking and reporting to ensure that the html rendered is correct for browsers and screen readers. Other templates that get language name support from this module are: * {{tlx|Native name}} ==Data set== The data set is specified in [[Module:Lang/data]] and its included data modules: * language tag-and-name data ** [[Module:Language/data/iana languages]] – from IANA [https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry language-subtag-registry file] * language script data ** [[Module:Language/data/iana scripts]] – from IANA language-subtag-registry file * language region data ** [[Module:Language/data/iana regions]] – from IANA language-subtag-registry file * language variant data ** [[Module:Language/data/iana variants]] – from IANA language-subtag-registry file * suppressed-script data ** [[Module:Language/data/iana suppressed scripts]] – from IANA language-subtag-registry file The data set also includes supplementary data modules: * override and other non-standard data ** [[Module:Lang/ISO 639 synonyms]] – maps three character ISO 639-2, -2T, -3 codes to two character ISO 639-1 codes – from [https://www.loc.gov/standards/iso639-2/php/English_list.php Codes for the Representation of Names of Languages] ** [[Module:Lang/tag from name]] – reversed language tag-and-name data so that the language name is the key and the language tag is the value == Testcases == * [[Module:Lang/testcases]] ([[Module talk:Lang/testcases|run]]) * category_from_tag() ** [[Module:Lang/testcases/ISO 639-1 category from tag]] ([[Module talk:Lang/testcases/ISO 639-1 category from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-1 category from tag]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 category from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-2 category from tag]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 category from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-3 category from tag]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 category from tag|run]]) ** [[Module:Lang/testcases/ISO 639 deprecated and override category from tag]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override category from tag|run]]) * name_from_tag() ** [[Module:Lang/testcases/ISO 639-1 name from tag]] ([[Module talk:Lang/testcases/ISO 639-1 name from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-1 name from tag]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 name from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-2 name from tag]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 name from tag|run]]) ** [[Module:Lang/testcases/ISO 639-3-3 name from tag]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 name from tag|run]]) ** [[Module:Lang/testcases/ISO 639 deprecated and override name from tag]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override name from tag|run]]) * tag_from_name() ** [[Module:Lang/testcases/ISO 639-1 tag from name]] ([[Module talk:Lang/testcases/ISO 639-1 tag from name|run]]) ** [[Module:Lang/testcases/ISO 639-3-1 tag from name]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 tag from name|run]]) ** [[Module:Lang/testcases/ISO 639-3-2 tag from name]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 tag from name|run]]) ** [[Module:Lang/testcases/ISO 639-3-3 tag from name]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 tag from name|run]]) ** [[Module:Lang/testcases/ISO 639 deprecated and override tag from name]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override tag from name|run]]) ==Tracking categories== * {{Category link with count|Lang and lang-xx template errors}} * {{Category link with count|Transliteration template errors}} * {{Category link with count|Lang and lang-xx code promoted to ISO 639-1}} * {{Category link with count|Lang and lang-xx using deprecated ISO 639 codes}} ==See also== MoS on foreign words: * {{Section link|Wikipedia:Manual of Style/Text formatting#Foreign terms}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Language-related modules]] [[Category:Modules that check for strip markers]] }}</includeonly> 86fdcd32c33e0452c7598425e985cf3163a09016 Template:Language templates 10 444 970 2023-10-01T08:20:31Z Führerredux 2 Created page with "{{Sidebar | name = Language templates | width = 238px | bodystyle = border-spacing:0;background:#f7f7f7;padding:2px; | titlestyle = background:#ccccff; | title = Language templates | contentclass = plainlist | contentstyle = padding:0.25em;background:#fdfdfd; | navbarstyle = background:#fdfdfd;padding:0 5px | heading1 = Language names ([[ISO 639]]) | content1 = * {{tl|ISO 639 name}} | heading2 = Interwiki links | content..." wikitext text/x-wiki {{Sidebar | name = Language templates | width = 238px | bodystyle = border-spacing:0;background:#f7f7f7;padding:2px; | titlestyle = background:#ccccff; | title = Language templates | contentclass = plainlist | contentstyle = padding:0.25em;background:#fdfdfd; | navbarstyle = background:#fdfdfd;padding:0 5px | heading1 = Language names ([[ISO 639]]) | content1 = * {{tl|ISO 639 name}} | heading2 = Interwiki links | content2 = * {{tl|Wikt-lang}} * [[Module:Language]] * {{tl|Interlanguage link}} | heading5 = Foreign-language text | content5 = * {{tl|Lang}} * [[Module:Lang]] * {{tl|Transliteration}} * {{tl|Title language}} * {{tl|PIE}} | heading6 = Other | content6 = * {{tl|IPA}} * [[Module:Language/data]] * [[:Category:Wikipedia multilingual support templates]] }}<noinclude> {{Documentation|content= [[WP:SIDEBAR|Sidebar]] listing language [[WP:templates|templates]]. }} [[Category:Documentation see also templates]] </noinclude> f329063cbc1e51e9ff27b6f2cbb366cdee87c7e7 Module:Language 828 445 971 2023-10-01T08:21:58Z Führerredux 2 Created page with "require('strict') local m_data = mw.loadData("Module:Language/data") local langData = m_data.languages or m_data local p = {} local function ifNotEmpty(value) if value == "" then return nil else return value end end local function makeLinkedName(languageCode) local data = langData[languageCode] local article = data["article"] local name = data["Wikipedia_name"] or data["name"] return "[[" .. article .. "|" .. name .. "]]:&nbsp;" end local function makeEntr..." Scribunto text/plain require('strict') local m_data = mw.loadData("Module:Language/data") local langData = m_data.languages or m_data local p = {} local function ifNotEmpty(value) if value == "" then return nil else return value end end local function makeLinkedName(languageCode) local data = langData[languageCode] local article = data["article"] local name = data["Wikipedia_name"] or data["name"] return "[[" .. article .. "|" .. name .. "]]:&nbsp;" end local function makeEntryName(word, languageCode) local data = langData[languageCode] local ugsub = mw.ustring.gsub word = tostring(word) if word == nil then error("The function makeEntryName requires a string argument") elseif word == "" then return "" else -- Remove bold and italics, so that words that contain bolding or emphasis can be linked without piping. word = word:gsub("\'\'\'", "") word = word:gsub("\'\'", "") if data == nil then return word else local replacements = data and data["replacements"] if replacements == nil then return word else -- Decompose so that the diacritics of characters such -- as á can be removed in one go. -- No need to compose at the end, because the MediaWiki software -- will handle that. if replacements.decompose then word = mw.ustring.toNFD(word) for i, from in ipairs(replacements.from) do word = ugsub( word, from, replacements.to and replacements.to[i] or "") end else for regex, replacement in pairs(replacements) do word = ugsub(word, regex, replacement) end end return word end end end end p.makeEntryName = makeEntryName local function fixScriptCode(firstLetter, threeLetters) return string.upper(firstLetter) .. string.lower(threeLetters) end local function getCodes(codes, text) local languageCode, scriptCode, invalidCode local errorText if codes == nil or codes == "" then errorText = 'no language or script code provided' elseif codes:find("^%a%a%a?$") or codes:find("^%a%a%a?%-%a%a%a%a$") then -- A three- or two-letter lowercase sequence at beginning of first parameter languageCode = codes:find("^%a%a%a?") and ( codes:match("^(%l%l%l?)") or codes:match("^(%a%a%a?)") :gsub("(%a%a%a?)", string.lower, 1) ) -- One uppercase and three lowercase letters at the end of the first parameter scriptCode = codes:find("%a%a%a%a$") and ( codes:match("(%u%l%l%l)$") or gsub( codes:match("(%a%a%a%a)$"), "(%a)(%a%a%a)", fixScriptCode, 1 ) ) elseif codes:find("^%a%a%a?%-%a%a%a?$") or codes:find("^%a%a%a%-%a%a%a%-%a%a%a$") then languageCode = codes -- Private-use subtag: x followed by one or more sequences of 1-8 lowercase -- letters separated by hyphens. This only allows for one sequence, as it is -- needed for proto-languages such as ine-x-proto (Proto-Indo-European). elseif codes:find("^%a%a%a?%-x%-%a%a?%a?%a?%a?%a?%a?%a?$") then languageCode, scriptCode = codes:match("^(%a%a%a%-x%-%a%a?%a?%a?%a?%a?%a?%a?)%-?(.*)$") if not languageCode then errorText = '<code>'..codes..'</code> is not a valid language or script code.' elseif scriptCode ~= "" and not scriptCode:find("%a%a%a%a") then errorText = '<code>'..scriptCode..'</code> is not a valid script code.' else scriptCode = scriptCode:gsub( "(%a)(%a%a%a)", fixScriptCode, 1 ) end elseif codes:find("^%a%a%a?") then languageCode, invalidCode = codes:match("^(%a%a%a?)%-?(.*)") languageCode = string.lower(languageCode) errorText = '<code>'..invalidCode..'</code> is not a valid script code.' elseif codes:find("%-?%a%a%a%a$") then invalidCode, scriptCode = codes:match("(.*)%-?(%a%a%a%a)$") scriptCode = gsub( scriptCode, "(%a)(%a%a%a)", fixScriptCode ) errorText = '<code>'..invalidCode..'</code> is not a valid language code.' else errorText = '<code>'..codes..'</code> is not a valid language or script code.' end if not scriptCode or scriptCode == "" then scriptCode = require("Module:Unicode data").is_Latin(text) and "Latn" or "unknown" end if errorText then errorText = ' <span style="font-size: smaller">[' .. errorText .. ']</span>' else errorText = "" end languageCode = m_data.redirects[languageCode] or languageCode return languageCode, scriptCode, errorText end local function tag(text, languageCode, script, italics) local data = langData[languageCode] -- Use Wikipedia code if it has been given: for instance, -- Proto-Indo-European has the Wiktionary code "ine-pro" but the Wikipedia -- code "ine-x-proto". languageCode = data and data.Wikipedia_code or languageCode local italicize = script == "Latn" and italics if not text then text = "[text?]" end local textDirectionMarkers = { "", "", "" } if data and data["direction"] == "rtl" then textDirectionMarkers = { ' dir="rtl"', '&rlm;', '&lrm;' } end local out = { textDirectionMarkers[2] } if italicize then table.insert(out, "<i lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</i>") else table.insert(out, "<span lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</span>") end table.insert(out, textDirectionMarkers[3]) return table.concat(out) end function p.lang(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] and mw.text.trim(args[1]) local text = args[2] or error("Provide text in the second parameter") local languageCode, scriptCode, errorText = getCodes(codes, text) local italics = args.italics or args.i or args.italic italics = not (italics == "n" or italics == "-" or italics == "no") return tag(text, languageCode, scriptCode, italics) .. errorText end local function linkToWiktionary(entry, linkText, languageCode) local data = langData[languageCode] local name if languageCode then if data and data.name then name = data.name else -- On other languages' wikis, use mw.getContentLanguage():getCode(), -- or replace 'en' with that wiki's language code. name = mw.language.fetchLanguageName(languageCode, 'en') if name == "" then error("Name for the language code " .. ("%q"):format(languageCode or nil) .. " could not be retrieved with mw.language.fetchLanguageName, " .. "so it should be added to [[Module:Language/data]]") end end if entry:sub(1, 1) == "*" then if name ~= "" then entry = "Reconstruction:" .. name .. "/" .. entry:sub(2) else error("Language name is empty") end elseif data and data.type == "reconstructed" then mw.log("Reconstructed language without asterisk:", languageCode, name, entry) local frame = mw.getCurrentFrame() -- Track reconstructed entries with no asterisk by transcluding -- a nonexistent template. This technique is used in Wiktionary: -- see [[wikt:Module:debug]]. -- [[Special:WhatLinksHere/tracking/wikt-lang/reconstructed with no asterisk]] pcall(frame.expandTemplate, frame, { title = 'tracking/wikt-lang/reconstructed with no asterisk' }) if name ~= "" then entry = "Reconstruction:" .. name .. "/" .. entry else error("Language name is empty") end elseif data and data.type == "appendix" then if name ~= "" then entry = "Appendix:" .. name .. "/" .. entry else error("Language name is empty") end end if entry and linkText then return "[[wikt:" .. entry .. "#" .. name .. "|" .. linkText .. "]]" else error("linkToWiktionary needs a Wiktionary entry or link text, or both") end else return "[[wikt:" .. entry .. "|" .. linkText .. "]]" end end function p.wiktlang(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] and mw.text.trim(args[1]) local word1 = ifNotEmpty(args[2]) local word2 = ifNotEmpty(args[3]) if not args[2] then error("Parameter 2 is required") end local languageCode, scriptCode, errorText = getCodes(codes, word2 or word1) local italics = args.italics or args.i or args.italic italics = not (italics == "n" or italics == "-" or italics == "no") local entry, linkText if word2 and word1 then entry = makeEntryName(word1, languageCode) linkText = word2 elseif word1 then entry = makeEntryName(word1, languageCode) linkText = word1 end local out if languageCode and entry and linkText then out = tag(linkToWiktionary(entry, linkText, languageCode), languageCode, scriptCode, italics) elseif entry and linkText then out = linkToWiktionary(entry, linkText) else out = '<span style="font-size: smaller;">[text?]</span>' end if out and errorText then return out .. errorText else return errorText or error("The function wiktlang generated nothing") end end function p.wikt(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] and mw.text.trim(args[1]) local word1 = ifNotEmpty(args[2]) local word2 = ifNotEmpty(args[3]) if not word1 then error("Provide a word in parameter 2.") end local languageCode, scriptCode, errorText = getCodes(codes, word1) local entry, linkText if word2 and word1 then entry = makeEntryName(word1, languageCode) linkText = word2 elseif word1 then entry = makeEntryName(word1, languageCode) linkText = word1 end local out if languageCode and entry and linkText then out = linkToWiktionary(entry, linkText, languageCode) elseif entry and linkText then out = linkToWiktionary(entry, linkText) else out = '<span style="font-size: smaller;">[text?]</span>' end if out and errorText then return out and out .. errorText else return errorText or error("The function wikt generated nothing") end end return p 51c30e9deeb315db9939fc27a0cb4cb41cfc1ed6 Module:Language/doc 828 446 972 2023-10-01T08:22:26Z Führerredux 2 Created page with "{{Module rating|beta}} {{Language templates}} {{Lua|Module:Language/data|Module:Unicode data}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> This module is used by {{tlx|wikt-lang}} and {{tlx|wt}}. It is inspired by the templates [[wikt:Template:m|{{((}}m{{))}}]] and [[wikt:Template:l|{{((}}l{{))}}]] and their associated modules on Wiktionary. It has a Wiktionary link function that lin..." wikitext text/x-wiki {{Module rating|beta}} {{Language templates}} {{Lua|Module:Language/data|Module:Unicode data}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> This module is used by {{tlx|wikt-lang}} and {{tlx|wt}}. It is inspired by the templates [[wikt:Template:m|{{((}}m{{))}}]] and [[wikt:Template:l|{{((}}l{{))}}]] and their associated modules on Wiktionary. It has a Wiktionary link function that links to the correct section of the Wiktionary entry, and applies correct language formatting and italics. The language-tagging function does most of what {{t|lang}} does, except that italics can't be customized and categories aren't added. The module uses [[Module:Language/data]] to retrieve the language name for a language code, and to perform the necessary entry-name replacements (for instance, removing macrons from Latin entry names). These are unfortunately not automatically retrieved from Wiktionary's [[wikt:Category:Language data modules|language data modules]]. For language codes that do not have a <code>name</code> value in this module, the language name is fetched with <code>mw.language.fetchLanguage</code>. When <code>mw.language.fetchLanguage</code> does not fetch the correct language name (or any language name at all), please add it to [[Module:language/data]], and similarly when the correct entry name is not generated, please add the entry name replacements to the module. ===Examples=== <pre style="max-width: 30em;"> * {{#invoke:Language|wikt|en|language}} * {{#invoke:Language|wikt|en|language|languages}} * {{#invoke:Language|wikt|fr|bourguignon}} * {{#invoke:Language|wikt|la|homō}} * {{#invoke:Language|wikt|grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|ru|язы́к}} * {{#invoke:Language|wikt|ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|fa|فارسی}} * {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}}</pre> * {{#invoke:Language|wikt|en|language}} * {{#invoke:Language|wikt|en|language|languages}} * {{#invoke:Language|wikt|fr|bourguignon}} * {{#invoke:Language|wikt|la|homō}} * {{#invoke:Language|wikt|grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|ru|язы́к}} * {{#invoke:Language|wikt|ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|fa|فارسی}} * {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}} ====Invalid codes==== <pre style="max-width: 30em;"> * {{#invoke:Language|wikt|EN|language}} * {{#invoke:Language|wikt|En|language|languages}} * {{#invoke:Language|wikt|La|homō}} * {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|Ru|язы́к}} * {{#invoke:Language|wikt|Ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|Fa|فارسی}}</pre> * {{#invoke:Language|wikt|EN|language}} * {{#invoke:Language|wikt|En|language|languages}} * {{#invoke:Language|wikt|La|homō}} * {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|Ru|язы́к}} * {{#invoke:Language|wikt|Ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|Fa|فارسی}} ====Errors==== <pre>* {{#invoke:Language|wikt|en-Latin|language}}</pre> * {{#invoke:Language|wikt|en-Latin|language}} == Tracking categories == * {{Category link with count|Language module errors}} * {{Category link with count|Language module reconstructed with no asterisk}} * {{Category link with count|Language module using redirect code}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Language-related modules]] }}</includeonly> 8f0dd86fbb6403d5bf14443353bfec0c4ccba0b4 Module:Language/data 828 447 973 2023-10-01T08:22:57Z Führerredux 2 Created page with "local U = mw.ustring.char -- Diacritics, from the [[Combining Diacritical Marks]] block. local grave = U(0x300) local acute = U(0x301) local circumflex = U(0x302) local tilde = U(0x303) local macron = U(0x304) local breve = U(0x306) local dot = U(0x307) local diaeresis = U(0x308) local double_acute = U(0x30B) local caron = U(0x30C) local double_grave = U(0x30F) local invbreve = U(0x311) local dot_below = U(0x..." Scribunto text/plain local U = mw.ustring.char -- Diacritics, from the [[Combining Diacritical Marks]] block. local grave = U(0x300) local acute = U(0x301) local circumflex = U(0x302) local tilde = U(0x303) local macron = U(0x304) local breve = U(0x306) local dot = U(0x307) local diaeresis = U(0x308) local double_acute = U(0x30B) local caron = U(0x30C) local double_grave = U(0x30F) local invbreve = U(0x311) local dot_below = U(0x323) local undertie = U(0x35C) --[[ This is a table of Wiktionary language codes with data belonging to them. Name is the "canonical name" used on Wiktionary. Article is the Wikipedia article. Script is the ISO 15924 code. ]] local data = { ["languages"] = { ["aaq"] = { ["name"] = "Penobscot", }, ["ab"] = { ["name"] = "Abkhaz", }, ["abe"] = { ["name"] = "Abenaki", }, ["ang"] = { ["name"] = "Old English", ["article"] = {"Old English"}, -- Remove macrons, acutes, and overdots ["replacements"] = { decompose = true, from = { "[" .. macron .. acute .. dot .. "]" }, }, }, ["ar"] = { ["name"] = "Arabic", ["article"] = "Arabic language", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["ara"] = { ["name"] = "Arabic", ["article"] = "Arabic language", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["arb"] = { ["name"] = "Modern Standard Arabic", ["article"] = "Modern Standard Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["apc"] = { ["name"] = "North Levantine Arabic", ["article"] = "North Levantine Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["ajp"] = { ["name"] = "South Levantine Arabic", ["article"] = "South Levantine Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["arz"] = { ["name"] = "Egyptian Arabic", ["article"] = "Egyptian Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["av"] = { ["name"] = "Avar" }, ["be"] = { ["article"] = "Belarusian language", ["replacements"] = { [acute] = "", }, }, ["bn"] = { ["name"] = "Bengali", ["article"] = "Bengali language", }, ["bua"] = { ["name"] = "Buryat", }, ["cel-pro"] = { -- Incorrect tag ["name"] = "Proto-Celtic", ["Wikipedia_code"] = "cel-x-proto", }, ["cel-x-proto"] = { ["name"] = "Proto-Celtic", }, ["cel-bry-pro"] = { -- Incorrect tag ["name"] = "Proto-Brythonic", ["article"] = "Common Brittonic", ["type"] = "reconstructed", }, ["cu"] = { ["name"] = "Old Church Slavonic", ["article"] = "Old Church Slavonic", }, ["de"] = { ["name"] = "German", ["article"] = "German language", }, ["en"] = { ["name"] = "English", ["article"] = "English language", }, ["es"] = { ["name"] = "Spanish", ["article"] = "Spanish language", }, ["egy"] = { ["name"] = "Egyptian", }, ["evn"] = { ["name"] = "Evenki", ["article"] = "Evenki language", }, ["fr"] = { ["name"] = "French", ["article"] = "French language", }, ["frm"] = { ["name"] = "Middle French", ["article"] = "Middle French", }, ["frp"] = { ["name"] = "Franco-Provençal", }, ["ff"] = { ["name"] = "Fula", }, ["gem-pro"] = { -- Incorrect tag ["name"] = "Proto-Germanic", ["article"] = "Proto-Germanic language", ["type"] = "reconstructed", ["replacements"] = {}, ["Wikipedia_code"] = "gem-x-proto", }, ["gem-x-proto"] = { ["name"] = "Proto-Germanic", ["article"] = "Proto-Germanic language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["gml"] = { ["name"] = "Middle Low German", }, ["gmw-ecg"] = { ["name"] = "East Central German", }, ["gmw-x-proto"] = { ["name"] = "Proto-West Germanic", ["article"] = "Proto-West Germanic language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["gmq-x-gut"] = { ["name"] = "Gutnish", ["article"] = "Gutnish", }, ["goh"] = { ["replacements"] = { decompose = true, from = { "[" .. macron .. circumflex .. diaeresis .. "]", }, }, }, ["got"] = { ["name"] = "Gothic", ["article"] = "Gothic language", ["replacements"] = { -- Latin to Gothic since people will not want to have to copy -- and paste Gothic letters in ["[AÁaáĀā]"] = "𐌰", ["[Bb]"] = "𐌱", ["[Gg]"] = "𐌲", ["[Dd]"] = "𐌳", ["[EeĒē]"] = "𐌴", ["[Qq]"] = "𐌵", ["[Zz]"] = "𐌶", ["[Hh]"] = "𐌷", ["[Þþ]"] = "𐌸", ["[IiÍí]"] = "𐌹", ["[Kk]"] = "𐌺", ["[Ll]"] = "𐌻", ["[Mm]"] = "𐌼", ["[Nn]"] = "𐌽", ["[Jj]"] = "𐌾", ["[UuÚúŪū]"] = "𐌿", ["[Pp]"] = "𐍀", ["[Rr]"] = "𐍂", ["[Ss]"] = "𐍃", ["[Tt]"] = "𐍄", ["[WwYy]"] = "𐍅", ["[Ff]"] = "𐍆", ["[Xx]"] = "𐍇", ["[Ƕƕ]"] = "𐍈", -- Not sure if "hw" and "hv" can safely be converted ["[OoŌō]"] = "𐍉", }, }, ["gsw"] = { ["name"] = "Alemannic German", }, ["grc"] = { ["name"] = "Ancient Greek", ["article"] = "Ancient Greek", ["replacements"] = { decompose = true, from = { -- Replace variant letterforms with standard ones. "ϐ", "ϵ", "ϑ", "ϰ", "ϱ", "ϲ", "ϕ", -- Remove macrons and breves. "[" .. macron .. breve .. undertie .. "]" }, to = { "β", "ε", "θ", "κ", "ρ", "σ", "φ", } }, }, ["grk-pro"] = { -- Incorrect tag ["name"] = "Proto-Hellenic", ["Wikipedia_name"] = "Proto-Greek", ["article"] = "Proto-Greek language", ["type"] = "reconstructed", ["replacements"] = {}, ["Wikipedia_code"] = "gem-x-proto", }, ["grk-x-proto"] = { ["name"] = "Proto-Hellenic", ["Wikipedia_name"] = "Proto-Greek", ["article"] = "Proto-Greek language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["grt"] = { ["name"] = "Garo", }, ["ha"] = { ["name"] = "Hausa", -- remove tilde, grave, acute, macron, circumflex ["replacements"] = { decompose = true, from = { "[" .. grave .. circumflex .. macron .. acute .. tilde .. "]" }, }, }, ["hi"] = { ["name"] = "Hindi", ["article"] = "Hindi", }, ["ine-bsl-pro"] = { ["name"] = "Proto-Balto-Slavic", ["article"] = "Proto-Balto-Slavic language", ["type"] = "reconstructed", }, ["ine-pro"] = { -- Incorrect tag ["name"] = "Proto-Indo-European", ["article"] = "Proto-Indo-European language", ["type"] = "reconstructed", ["replacements"] = {}, ["Wikipedia_code"] = "ine-x-proto", }, ["ine-x-proto"] = { ["name"] = "Proto-Indo-European", ["article"] = "Proto-Indo-European language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["ja"] = { ["name"] = "Japanese", ["article"] = "Japanese language", }, ["jbo"] = { -- Lojban ["type"] = "appendix", }, ["ksk"] = { ["name"] = "Kansa", ["article"] = "Kansa language", }, ["la"] = { ["name"] = "Latin", ["article"] = "Latin", ["replacements"] = { decompose = true, from = { "[" .. macron .. breve .. diaeresis .. "]" }, }, }, ["lt"] = { ["name"] = "Lithuanian", -- remove acute, tilde, grave ["replacements"] = { decompose = true, from = { "[" .. acute .. tilde .. grave .. "]" }, }, }, ["moe"] = { ["name"] = "Cree", }, ["mul"] = { ["name"] = "Translingual", ["article"] = "", }, ["nci"] = { ["name"] = "Classical Nahuatl", ["article"] = "Classical Nahuatl", -- Remove macrons, acutes, circumflexes and graves ["replacements"] = { decompose = true, -- Remove macrons, acutes, circumflexes, graves, and saltillo; -- see [[Saltillo (linguistics)]]. from = { "[" .. grave .. acute .. macron .. circumflex .. "Ꞌꞌʻʼ'ʔ]" }, }, }, ["nds-de"] = { ["name"] = "German Low German", }, ["odt"] = { ["name"] = "Old Dutch", }, ["oge"] = { ["name"] = "Old Georgian", }, ["oj"] = { ["name"] = "Ojibwe", }, ["orv"] = { ["name"] = "Old East Slavic", ["article"] = "Old East Slavic", ["replacements"] = { [U(0x484)] = "", }, }, ["osx"] = { ["name"] = "Old Saxon", }, ["pt"] = { ["name"] = "Portuguese", ["article"] = "Portuguese language", -- ["scripts"] = { "Latn" }, }, ["pa"] = { ["name"] = "Punjabi", ["article"] = "Punjabi language", }, ["pis"] = { ["name"] = "Pijin", ["article"] = "Pijin language", }, ["poz-x-poly-proto"] = { ["name"] = "Proto-Nuclear Polynesian", ["article"] = "Proto-Polynesian language", ["type"] = "reconstructed", }, ["rap"] = { ["name"] = "Rapa Nui", ["article"] = "Rapa Nui language", }, ["ru"] = { ["name"] = "Russian", ["article"] = "Russian language", ["replacements"] = { [acute] = "", }, }, ["rw"] = { ["name"] = "Rwanda-Rundi", }, ["se"] = { ["replacements"] = { ["([đflmnŋrsšŧv])'%1"] = "%1%1", }, }, ["sem-pro"] = { ["name"] = "Proto-Semitic", ["article"] = "Proto-Semitic", ["type"] = "reconstructed", }, ["sh"] = { ["article"] = "Serbo-Croatian language", ["replacements"] = { decompose = true, from = { "([AaEeIiOoUuRrАаЕеИиОоУуРр])[" .. double_grave .. grave .. invbreve .. acute .. macron .. tilde .. "]" }, to = { "%1" }, }, }, ["sl"] = { ["name"] = "Slovene", ["replacements"] = { decompose = true, -- remove tonal orthography from = {"ł", "[" .. grave .. acute .. macron .. double_grave .. invbreve .. circumflex .. dot_below .. "]"}, to = {"l"}, }, }, ["sla-pro"] = { ["name"] = "Proto-Slavic", -- also Common Slavic ["type"] = "reconstructed", ["replacements"] = { ["[ÀÁÃĀȀȂ]"] = "A", ["[àáãāȁȃ]"] = "a", ["[ÈÉẼĒȄȆ]"] = "E", ["[èéẽēȅȇ]"] = "e", ["[ÌÍĨĪȈȊ]"] = "I", ["[ìíĩīȉȋ]"] = "i", ["[ÒÓÕŌȌȎŐ]"] = "O", ["[òóõōȍȏő]"] = "o", ["[ÙÚŨŪȔȖŰ]"] = "U", ["[ùúũūȕȗű]"] = "u", ["[ỲÝỸȲ]"] = "Y", ["[ỳýỹȳ]"] = "y", ["Ǭ"] = "Ǫ", ["ǭ"] = "ǫ", ["[" .. grave .. acute .. double_acute .. tilde .. macron .. double_grave .. invbreve .. "]"] = "", ["ĭ"] = "ь", ["ŭ"] = "ъ", }, }, ["tts"] = { ["name"] = "Isan", -- also "Northeastern Thai" ["article"] = "Isan language", }, ["ug"] = { ["name"] = "Uyghur", --also less commonly "Uighur" ["article"] = "Uyghur language", }, ["uk"] = { ["article"] = "Ukrainian language", ["replacements"] = { [acute] = "", } }, ["ur"] = { ["name"] = "Urdu", ["article"] = "Urdu", }, ["xcl"] = { ["name"] = "Old Armenian", ["article"] = "Classical Armenian", ["replacements"] = { ["[՞՜՛՟]"] = "", ["և"] = "եւ", }, }, ["xgf"] = { ["name"] = "Tongva", -- not ISO name "Gabrielino-Fernandeño" ["article"] = "Tongva language", ["replacements"] = { ["['`ʔ]"] = "ʼ", }, }, ["xlu"] = { ["name"] = "Luwian", -- not ISO name "Cuneiform Luwian" ["article"] = "Cuneiform Luwian" }, ["xpq"] = { ["name"] = "Mohegan-Pequot", }, ["xxt"] = { ["name"] = "Tambora", ["article"] = "Tambora language", }, ["xvn"] = { ["name"] = "Vandalic", ["article"] = "Vandalic language", }, ["yua"] = { ["name"] = "Yucatec Maya", ["article"] = "Yucatec Maya language", }, ["zh"] = { ["name"] = "Chinese", ["article"] = "Chinese language", -- ["scripts"] = { "Hani" }, }, }, -- Here, keys (for example, "gem") are Wikipedia language codes used in -- {{lang}}, and values (for example, "gem-pro") are the equivalent Wiktionary -- code. -- Subtags are not currently supported. ["redirects"] = { ["aae"] = "sq", ["aiq"] = "fa", ["aln"] = "sq", ["als"] = "sq", ["azb"] = "az", ["azj"] = "az", ["bgn"] = "bal", ["bs"] = "sh", ["bxr"] = "bua", ["ciw"] = "oj", ["cnr"] = "sh", ["fil"] = "tl", ["fuf"] = "ff", ["gem"] = "gem-pro", -- Not correct, but is commonly used. ["hak"] = "zh", ["hbo"] = "he", ["hr"] = "sh", ["ine"] = "ine-pro", -- Not correct, but might be commonly used. ["kjv"] = "sh", ["nan"] = "zh", ["prs"] = "fa", ["rn"] = "rw", ["sli"] = "gmw-ecg", ["sr"] = "sh", ["src"] = "sc", ["sro"] = "sc", ["tw"] = "ak", ["wae"] = "gsw", ["wep"] = "nds-de", ["yue"] = "zh", ["xno"] = "fro", }, } return data 3e1cbaa2d45dde581a9e11f0ad142ed7dd116100 Module:Language/data/doc 828 448 974 2023-10-01T08:23:29Z Führerredux 2 Created page with "{{language templates}} The <code>redirects</code> table in [[Module:Language/data]] connects Wikipedia language codes to the corresponding code used on the English Wiktionary. [[wikt:Wiktionary:Language treatment]] records this relationship for ISO codes. For instance, all of <code>bs</code> (Bosnian), <code>hr</code> (Croatian), <code>sr</code> (Serbian), <code>cnr</code> (Montenegrin), <code>kjv</code> (Kajkavian) are placed under the header for <code>sh</code> (Serbo..." wikitext text/x-wiki {{language templates}} The <code>redirects</code> table in [[Module:Language/data]] connects Wikipedia language codes to the corresponding code used on the English Wiktionary. [[wikt:Wiktionary:Language treatment]] records this relationship for ISO codes. For instance, all of <code>bs</code> (Bosnian), <code>hr</code> (Croatian), <code>sr</code> (Serbian), <code>cnr</code> (Montenegrin), <code>kjv</code> (Kajkavian) are placed under the header for <code>sh</code> (Serbo-Croatian) in Wiktionary entries. See for instance [[wikt:kaj#Serbo-Croatian]], the word that Kajkavian is named after. The subsumed codes should still be used in language-tagging on Wikipedia. <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Language-related modules]] }}</includeonly> fc130aa4315edd4bf458ccee9c56720b39a45bf2 Template:More citations needed/doc 10 1043 2284 2023-10-01T08:25:16Z wikipedia>BilCat 0 Reverted edit by [[Special:Contribs/Diktatorship|Diktatorship]] ([[User talk:Diktatorship|talk]]) to last version by DB1729 wikitext text/x-wiki {{Documentation subpage}} {{redirect-distinguish|Template:Additional citations|Template:Additional citation needed}} {{redirect-distinguish|Template:Not verified|Template:Failed verification}} {{redirect|Template:Verify|the template used to request clarification of the preceding sentence|Template:Clarify}} {{redirect-distinguish|Template:Mcn|Template:Medical citation needed}} {{High-use}} {{Twinkle standard installation}} {{AWB standard installation}} {{Template shortcut|rip|mcn|verify}} {{Template redirect|Additional citations|Not verified}} ==Usage== ===When to use=== This [[Wikipedia:Templates|template]] indicates that the article needs additional inline citations. This template should be used only for articles where there are some, but insufficient, inline citations to support the material currently in the article. Don't use this tag for articles that contain no unreferenced material, even if all the material is supported by a single citation. Some editors understand this template to be redundant when it is used on articles clearly marked as [[Wikipedia:Stub|stubs]], since by definition stubs are unlikely to be well referenced. For articles that have no inline citations at all, but contain some sources, use [[:Template:No footnotes]]. Only use [[:Template:Unreferenced]] for articles that have no references at all. * For articles about living persons, the more specific template {{tl|BLP sources}} should be used instead. * For articles containing biomedical information, the more specific template {{tl|More medical citations needed}} should be used instead. * Please consider marking individual unreferenced statements with the {{tl|Citation needed}} inline template, instead of placing this template. * If most of an article is supported by inline citations and a few of those use unreliable sources, use {{tlx|Unreliable source?|date{{=}}{{#time:F Y}}}} and if you are certain, then add the parameters {{tlx|Unreliable source|certain{{=}}y|reason{{=}}{{var|1=your WP:RS-based reason here.}}|date{{=}}{{#time:F Y}}}} '''Placement''' : According to [[MOS:LAYOUT]], maintenance templates, such as this one, should (except when section-specific) be placed after hatnotes, at the start of the article. That placement is supported by consensus obtained in an RfC at {{section link|Template talk:More citations needed/Archive 4|RfC: Location of Tag}}. '''User warning''' : A user warning template, {{tl|uw-refimprove}}, is available to notify contributors that an article they created needs its referencing improved. '''Auto-categorization''' : This template adds the article to [[:Category:Articles needing additional references from {{CURRENTMONTHNAME}} {{CURRENTYEAR}}]], and [[:Category:All articles needing additional references]], both [[Wikipedia:HIDDENCAT|hidden categories]]. == Parameters == There are six parameters, one positional, and five named parameters. All parameters are optional. * {{para|1}}{{snd}}scope of notification (e.g., 'section', 'article') default: 'article'. * {{para|date}}{{snd}}month name and year; e.g. '{{CURRENTMONTHNAME}} {{CURRENTYEAR}}' (no default) * {{para|find}}{{snd}}search keywords for {{tl|find sources}} param 1 (double-quoted search); default: page title. See details [[#Details|below]]. * {{para|find2}}{{snd}}search keywords for {{tl|find sources}} param 2 (unquoted search). Alias: <code>unquoted</code>. See [[#Details|below]]. * {{para|small}}{{snd}}set to <code>left</code> or <code>no</code>; see details at [[Template:Ambox/doc#small|Ambox]]. Default: standard-width banner. * {{para|talk}}{{snd}}title of talk page section where discussion can be found === Details === '''Talk parameter''' : A {{para|talk}} parameter is allowed; setting this to any value will result in the message "See talk page for details." being included in the tag. If the value is a valid anchor on the talk page (e.g., the title of a section or subsection heading), then the talk page link will go directly to that anchor; if not, then to the top of the page. '''Date parameter''' : This template also includes support for using the {{para|date}} parameter. Adding this parameter sorts the article into subcategories of [[:Category:Articles needing additional references]] and out of the parent category, allowing the oldest problems to be identified and dealt with first. A [[Wikipedia:Bot policy|bot]] will add this parameter, if it is omitted. Be careful '''''not''''' to abbreviate the date, because then it will automatically add a redlinked category instead of the correct category. The simplest way to use this parameter manually is <code><nowiki>{{More citations needed|{{subst:DATE}}}}</nowiki></code>, but it can be done more explicitly as <code><nowiki>{{More citations needed|date=</nowiki>{{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}</nowiki></code> (both result in the same output). Do ''not'' use <code><nowiki>{{More citations needed|date={{subst:DATE}}}}</nowiki></code> because <code><nowiki>{{subst:DATE}}</nowiki></code> already includes the leading <code>date=</code> code. '''Find parameters:''' : There are two 'find' parameters available to control the presentation and operation of the {{tl|find sources}} links optionally displayed by the {{tl|Unreferenced}} template. By default, the template displays {{tl|find sources}} with a quoted search query equivalent to the exact article title. Sometimes, especially if the article has a long, [[WP:NDESC|descriptive title]], or if it includes [[WP:PARENDIS|parenthetical disambiguation terms]], this may not give useful results. The find parameters can be used to provide the search keywords of your choice to the {{tl|find sources}} links. Use: :* {{para|find}} to specify keywords for an exact search (double-quoted query); this corresponds to {{tl|find sources}} positional param <code>|1</code>. :* {{para|find2}} to specify keywords for an unquoted search; this corresponds to {{tl|find sources}} param <code>|2</code>. The alias {{para|unquoted}} may be used instead. The value "none" may be passed to 'find' ({{para|find|none}}) to suppress display of ''find sources'' links. (Note that specifying {{para|find|none}} and a nonempty value for {{para|find2}} is not a valid combination.) == Examples == Listed below are several examples of usage: :{{tlc|More citations needed|2=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} or the common redirect: {{tlc|Refimprove|2=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} :{{tlc|More citations needed|2=section|3=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}&nbsp; or use the alternative template: {{tlx|More citations needed section|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} ::The template can be made smaller with {{tlc|More citations needed|section|small{{=}}y}} or use the alternative template {{tlx|More citations needed section|small{{=}}y}} :{{tlc|More citations needed|section|<nowiki>{{subst:DATE}}</nowiki>|talk{{=}}{{var|Talk page section name}}|small{{=}}y}} The optional {{para|find}} parameter is available, for modifying the operation of the {{tl|find sources mainspace}} links displayed by the template: {{tlc|More citations needed|find{{=}}search keyword(s)|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} ==Differences from related templates== ==={{tl|BLP sources}}=== * Use ''BLP sources'' in [[WP:BLP|articles about living persons]] that need additional references. If the article needs additional references but is not about a living or recently deceased subject, then use ''More citations needed''. ==={{Tl|More footnotes needed}}=== * Use ''More footnotes needed'' when the article includes a list of sources, perhaps in a "Bibliography" or "Works" appendix, but its sources remain unclear because there are [[WP:INLINECITE|insufficient inline citations]]. The ''More citations needed'' tag is more specific than ''More footnotes needed'', and should be used preferentially to that template. ==={{Tl|Unreferenced}} and {{Tl|Citation needed}}=== * Use ''Unreferenced'' when there are no citations of any kind in an article. If citations have been added to an article, but they are insufficient, then use ''More citations needed''. * Alternatively, if an article has sufficient inline citations, but lacks citations covering specific information (such as [[WP:PROVEIT|missing a citation on a quotation]]), then use the inline citation template {{Tl|Citation needed}} to indicate more precisely where additional citations are needed. Unlike the inline ''Citation needed'', ''More citations needed'' is placed as a general banner at the top of an article. * The {{Tl|More citations needed section}} and {{tl|Unreferenced section}} templates are available to use for problems that are not article-wide. * If you decide to change a tag from ''Unreferenced'' to ''More citations needed'', don't forget to update the date stamp in the tag, if necessary. ==={{Tl|Primary sources}}=== * If an article has a sufficient amount of inline citations, but the citations are from primary sources (see [[WP:USEPRIMARY]]), then use ''{{tl|Primary sources}}''. ==={{Tl|Third-party}}=== * If an article has sufficient inline citations, but the citations are from sources affiliated with the subject (see [[WP:INDY]]), then use ''{{tl|Third-party}}''. ==={{Tl|One source}}=== * If an article has exactly one source '''and''' that single source is likely to result in bias or other problems in the article (e.g., it cites one fringe-y book instead of a good textbook), then use ''{{tl|One source}}''. ==={{Tl|More medical citations needed}}=== * If the article contains biomedical information, sources must meet the standards of [[WP:MEDRS]] ("it is vital that the biomedical information in articles be based on reliable, third-party, published sources and accurately reflect current medical knowledge"). If there are inline citations for biomedical information, but they do not meet the required standards, then use ''{{Tl|More medical citations needed}}''. ==={{Tl|Citation style}}=== * The ''More citations needed'' template is intended for use in articles that need additional citations, while the ''citation style'' template is used to request consistency within the citations present in an article (see [[WP:CITEVAR]]). For example, use ''citation style'' when there is a mixture of [[WP:CITE#Footnotes|footnotes]] and [[WP:CITE#Parenthetical referencing|parenthetical references]]. ==={{Tl|No footnotes}} and {{Tl|More footnotes needed}}=== * ''More citations needed'' can be used when there are no "References" or "Further reading" sections present in the article. ==={{Tl|Sources exist}}=== * ''Sources exist'' is similar to ''More citations needed'', because both templates indicate the need for more references. However, {{tlx|Sources exist}} indicates that a user has already checked that reliable sources are available to be cited, but has not yet added them to the article. By using this template, the assertion is made that the article is notable, but needs more citations. ==<span id="Template data"></span>TemplateData== {{TemplateData header}} <templatedata> { "description": "This template generates a tag to indicate that the article needs additional inline citations.", "format": "inline", "params": { "1": { "label": "Affected area", "description": "Text to replace the word \"article\", usually \"section\"", "type": "line", "example": "section" }, "date": { "label": "Month and year", "description": "The month and year that the template was placed (in full). \"{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}\" inserts the current month and year automatically.", "type": "line", "autovalue": "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}", "example": "June 2013", "suggested": true }, "talk": { "label": "Talk page section", "description": "Section name on the talk page for further discussion", "type": "line" }, "small": { "label": "Make template small", "description": "Enter any text here to make the template box small and aligned to the left.", "type": "line", "autovalue": "y", "example": "y" }, "find": { "label": "Find", "description": "Search keywords for double-quoted search to pass to 'find sources'.", "type": "line" }, "find2": { "label": "Find2", "aliases": ["Unquoted"], "description": "Search keywords for unquoted search to pass to 'find sources'.", "type": "line" }, "name": {} }, "paramOrder": [ "1", "talk", "small", "find", "find2", "date", "name" ] } </templatedata> ==Redirects== <!-- regex (Ri|RI|tl|Additional|Cite[ _]+sources|Cleanup-cite|Cleanup-verify|Cleanup[ _]+cite|DisputeCheck|Fact-check|Fact[ _]+check|Factual|Few[ _]+references|Fewreferences|Improve-references|Improve-refs|Improve[ _]+references|Improve[ _]+refs|Improvereferences|Improverefs|More[ _]+references|More[ _]+sources|Moreref|Morereferences|Morerefs|Moresources|Not[ _]+verified|Notverified|Ref-improve|Ref[ _]+improve|Reference-improve|Refimprove|Sources|Unreliable|Verification|Verify) --> Include: {{columns-list|colwidth=15em| #{{Tl|+r}} #{{Tl|+R}} #{{tl|Add references}} #{{tl|Additional citations}} #{{Tl|Citations missing}} #{{Tl|Citations needed}} #{{Tl|Cite sources}} #{{Tl|Cleanup-cite}} #{{Tl|Cleanup-verify}} #{{Tl|Few references}} #{{Tl|Few refs}} #{{tl|Few sources}} #{{Tl|Improve-refs}} #{{Tl|Improve references}} #{{tl|Improve sources}} #{{Tl|Missing citations}} #{{tl|More citations}} #{{tl|More cn}} #{{Tl|More references}} #{{tl|More references needed}} #{{tl|More refs}} #{{Tl|More sources}} #{{tl|More sources needed}} #{{tl|Needs additional citations}} #{{tl|Needs more citations}} #{{tl|Needs more references}} #{{tl|Needs more sources}} #{{Tl|Not verified}} #{{Tl|Ref-improve}} #{{Tl|Ref improve}} #{{tl|Reference improve}} #{{tl|Referenced}} #{{Tl|Refimprove}} #{{Tl|Sources}} #{{tl|Sources needed}} #{{Tl|Verification}} #{{Tl|Verify}} }} ==See also== * {{Tl|Refbegin}} * {{Tl|Refend}} * {{Tl|Reflist}} * {{Tl|Verify source}} * [[:Template:Citation needed/doc#Inline templates]] * [[Wikipedia:Template index/Cleanup/Verifiability and sources]] {{Citation and verifiability article maintenance templates}} <includeonly>{{sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Citation and verifiability maintenance templates]] }}</includeonly> 1774ccdf3cf6159e006865ed3f0a94a770bba1f2 MediaWiki:Common.js 8 449 975 2023-10-01T08:31:19Z Führerredux 2 Created page with "/** * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally * loaded for all users on every wiki page. If possible create a gadget that is * enabled by default instead of adding it here (since gadgets are fully * optimized ResourceLoader modules with possibility to add dependencies etc.) * * Since Common.js isn't a gadget, there is no place to declare its * dependencies, so we have to lazy load them with mw.loader.using on demand and * then execu..." javascript text/javascript /** * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally * loaded for all users on every wiki page. If possible create a gadget that is * enabled by default instead of adding it here (since gadgets are fully * optimized ResourceLoader modules with possibility to add dependencies etc.) * * Since Common.js isn't a gadget, there is no place to declare its * dependencies, so we have to lazy load them with mw.loader.using on demand and * then execute the rest in the callback. In most cases these dependencies will * be loaded (or loading) already and the callback will not be delayed. In case a * dependency hasn't arrived yet it'll make sure those are loaded before this. */ /* global mw, $ */ /* jshint strict:false, browser:true */ mw.loader.using( [ 'mediawiki.util' ] ).done( function () { /* Begin of mw.loader.using callback */ /** * Map addPortletLink to mw.util * @deprecated: Use mw.util.addPortletLink instead. */ mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' ); /** * Test if an element has a certain class * @deprecated: Use $(element).hasClass() instead. */ mw.log.deprecate( window, 'hasClass', function ( element, className ) { return $( element ).hasClass( className ); }, 'Use jQuery.hasClass() instead' ); /** * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL * @rev 6 */ var extraCSS = mw.util.getParamValue( 'withCSS' ), extraJS = mw.util.getParamValue( 'withJS' ); if ( extraCSS ) { if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } ); } } if ( extraJS ) { if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } ); } } /** * WikiMiniAtlas * * Description: WikiMiniAtlas is a popup click and drag world map. * This script causes all of our coordinate links to display the WikiMiniAtlas popup button. * The script itself is located on the Meta-Wiki because it is used by many projects. * See [[Meta:WikiMiniAtlas]] for more information. * Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer */ $( function () { var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length; if ( requireWikiminiatlas ) { mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' ); } } ); /** * Collapsible tables; reimplemented with mw-collapsible * Styling is also in place to avoid FOUC * * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]]. * @version 3.0.0 (2018-05-20) * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js * @author [[User:R. Koot]] * @author [[User:Krinkle]] * @author [[User:TheDJ]] * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which * is supported in MediaWiki core. Shimmable since MediaWiki 1.32 * * @param {jQuery} $content */ function makeCollapsibleMwCollapsible( $content ) { var $tables = $content .find( 'table.collapsible:not(.mw-collapsible)' ) .addClass( 'mw-collapsible' ); $.each( $tables, function ( index, table ) { // mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.'); if ( $( table ).hasClass( 'collapsed' ) ) { $( table ).addClass( 'mw-collapsed' ); // mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.'); } } ); if ( $tables.length > 0 ) { mw.loader.using( 'jquery.makeCollapsible' ).then( function () { $tables.makeCollapsible(); } ); } } mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible ); /** * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse * * Maintainers: TheDJ */ function mwCollapsibleSetup( $collapsibleContent ) { var $element, $toggle, autoCollapseThreshold = 2; $.each( $collapsibleContent, function ( index, element ) { $element = $( element ); if ( $element.hasClass( 'collapsible' ) ) { $element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) ); } if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) { $element.data( 'mw-collapsible' ).collapse(); } else if ( $element.hasClass( 'innercollapse' ) ) { if ( $element.parents( '.outercollapse' ).length > 0 ) { $element.data( 'mw-collapsible' ).collapse(); } } // because of colored backgrounds, style the link in the text color // to ensure accessible contrast $toggle = $element.find( '.mw-collapsible-toggle' ); if ( $toggle.length ) { // Make the toggle inherit text color (Updated for T333357 2023-04-29) if ( $toggle.parent()[ 0 ].style.color ) { $toggle.css( 'color', 'inherit' ); $toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' ); } } } ); } mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup ); /** * Magic editintros **************************************************** * * Description: Adds editintros on disambiguation pages and BLP pages. * Maintainers: [[User:RockMFR]] * * @param {string} name */ function addEditIntro( name ) { $( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) { el.href = $( this ).attr( 'href' ) + '&editintro=' + name; } ); } if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) { $( function () { if ( document.getElementById( 'disambigbox' ) ) { addEditIntro( 'Template:Disambig_editintro' ); } } ); $( function () { var cats = mw.config.get( 'wgCategories' ); if ( !cats ) { return; } if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) { addEditIntro( 'Template:BLP_editintro' ); } } ); } /* End of mw.loader.using callback */ } ); /* DO NOT ADD CODE BELOW THIS LINE */ d70a02c105be156bd0815623d6d289069c3e157e Germany 0 450 986 2023-10-01T09:23:40Z Führerredux 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Das Deutsche Reich 0 3 987 538 2023-10-01T09:24:30Z Führerredux 2 Redirected page to [[Germany]] wikitext text/x-wiki #REDIRECT [[Germany]] cca3af3c93a1dec893b3ab38ac1c4d0ef51942fb Valkism 0 246 988 545 2023-10-01T09:29:08Z Führerredux 2 wikitext text/x-wiki == Valkism == ''Valkism''' is a political ideology that emerged in early 20th-century Germany, emphasizing the organic unity of the German people based on shared ethnicity, culture, and history. It incorporates several key concepts and principles, shaping various aspects of German political thought during its time. === Volksgemeinschaft === {{Main article|Volksgemeinschaft}} ''Volksgemeinschaft'' is a central concept in Valkism, denoting the organic union of the German people rooted in romantic ethnic ideals. It emphasizes local community solidarity and cooperation, often at the expense of individualism. This ideology advocates for a collective societal goal and a natural hierarchy, considering individuals valuable only as part of the Volk. === Ständestaat === {{Main article|Ständestaat}} ''Ständestaat'' refers to the organic state structure proposed by Valkism. It is organized into organic corporations within a natural hierarchy, fostering anti-liberal and anti-individualist principles. Social mobility is ensured through a meritocratic system, with people grouped into Stände based on their professions. These Stände are overseen by a Ständeministerium, forming Corporations led by a merit-based elite. === Legalistic Authoritarianism === {{Main article|Legalistic Authoritarianism}} Valkism's approach to governance is characterized by ''Legalistic Authoritarianism.'' This concept emphasizes a formal constitution and strong executive powers, often under a dictator. The leading legal theorist of Valkism, Carl Schmitt, played a significant role in shaping this ideology. The regime aims to prevent party politics and liberalism, focusing on existential distinctions between friends and enemies in political conflicts. === Technophilia === {{Main article|Technophilia}} ''Technophilia'' in Valkism represents the ideology's acceptance of modernism and technology as tools for societal advancement. Valkists view technology as a means to achieve their goals, subordinating it to their ideological objectives. This perspective, sometimes referred to as reactionary modernism, underscores the ideology's adaptability to contemporary technological and social realities. === Trenchocracy === {{Main article|Trenchocracy}} ''Trenchocracy'' is a concept within Valkism, advocating for the empowerment of a young intellectual elite that emerged from the trenches of World War I. This aristocracy of the trenches unites veterans across social classes, fostering a shared nationalist revolutionary spirit and transcending traditional class struggles. === Frontline Socialism/Mixed Economy === {{Main article|Frontline Socialism}} Valkism incorporates elements of ''Frontline Socialism'' or a mixed economy approach, transcending traditional left-right political categories. Rejecting the excesses of capitalism, Valkists seek an ultra-nationalist form of socialism rooted in Völkisch extremism. Egalitarian ideas are rejected, promoting natural hierarchies and corporatist social models within a strong state framework. 95468047e3a02968a1b20ba9547a926aa7b23335 Template:Main 10 102 990 252 2023-10-01T09:31:13Z Führerredux 2 1 revision imported from [[:meta:Template:Main]] wikitext text/x-wiki <includeonly>{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 99ebf54e265aa9354bc4861d3b0da913f1441ede Template:Sandbox other 10 54 992 104 2023-10-01T09:31:17Z Führerredux 2 1 revision imported from [[:meta:Template:Sandbox_other]] wikitext text/x-wiki {{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> 91e4ae891d6b791615152c1fbc971414961ba872 Template:TemplateData header 10 59 994 114 2023-10-01T09:31:18Z Führerredux 2 1 revision imported from [[:meta:Template:TemplateData_header]] wikitext text/x-wiki <div class="templatedata-header">{{#if:{{{noheader|}}}|<!-- noheader: -->{{Template parameter usage|based=y}}|<!-- +header: -->This is the {{#if:{{{nolink|}}}|<!-- +header, nolink TD -->TemplateData|<!-- +header, +link [[TD]]; DEFAULT: -->[[Wikipedia:TemplateData|TemplateData]]}}<!-- e.o. #if:nolink; DEFAULT: --> for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools. {{Template parameter usage|based=y}}<!-- e.o. #if:noheader -->}} '''TemplateData for {{{1|{{BASEPAGENAME}}}}}''' </div><includeonly><!-- check parameters -->{{#invoke:Check for unknown parameters|check |unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}} |template=Template:TemplateData header |1 |nolink |noheader |preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div> }}<!-- -->{{template other|{{sandbox other|| [[Category:Templates using TemplateData]] }}}}</includeonly><!-- --><noinclude>{{Documentation}}</noinclude> ddfbb4ae793846b96d4c06330417fa6ed4da2adc Template:Template other 10 25 996 46 2023-10-01T09:31:18Z Führerredux 2 1 revision imported from [[:meta:Template:Template_other]] wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Template}} | template | other }} }} | template = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 06fb13d264df967b5232141067eb7d2b67372d76 Module:String 828 17 998 30 2023-10-01T09:31:19Z Führerredux 2 1 revision imported from [[:meta:Module:String]] Scribunto text/plain --[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ) local s = new_args['s'] or '' return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The fist index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ) local s = new_args['s'] or '' local i = tonumber( new_args['i'] ) or 1 local j = tonumber( new_args['j'] ) or -1 local len = mw.ustring.len( s ) -- Convert negatives for range checking if i < 0 then i = len + i + 1 end if j < 0 then j = len + j + 1 end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ) end if j < i then return str._error( 'String subset indices out of order' ) end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ _match This function returns a substring from the source string that matches a specified pattern. It is exported for use in other modules Usage: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain_flag, nomatch ) if s == '' then return str._error( 'Target string is empty' ) end if pattern == '' then return str._error( 'Pattern string is empty' ) end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ) end if match_index == 0 then return str._error( 'Match index is out of range' ) end if plain_flag then pattern = str._escapePattern( pattern ) end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ) end local iterator = mw.ustring.gmatch(s, pattern) if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1 if match_index == 0 then result = w break end end else -- Reverse search local result_table = {} local count = 1 for w in iterator do result_table[count] = w count = count + 1 end result = result_table[ count + match_index ] end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ) else return nomatch end else return result end end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} OR {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ) local s = new_args['s'] or '' local start = tonumber( new_args['start'] ) or 1 local plain_flag = str._getBoolean( new_args['plain'] or false ) local pattern = new_args['pattern'] or '' local match_index = math.floor( tonumber(new_args['match']) or 1 ) local nomatch = new_args['nomatch'] return str._match( s, pattern, start, match_index, plain_flag, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ) local target_str = new_args['target'] or '' local pos = tonumber( new_args['pos'] ) or 0 if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ) end return mw.ustring.sub( target_str, pos, pos ) end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ) local source_str = new_args['source'] or '' local target_str = new_args['target'] or '' if target_str == '' then return 1 end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['target'] or '' local start_pos = tonumber(new_args['start']) or 1 local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return 0 end plain = str._getBoolean( plain ) local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['pattern'] or '' local replace = new_args['replace'] or '' local count = tonumber( new_args['count'] ) local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return source_str end plain = str._getBoolean( plain ) if plain then pattern = str._escapePattern( pattern ) replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end local result if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ) else result = mw.ustring.gsub( source_str, pattern, replace ) end return result end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ) end local result = str._escapePattern( pattern_str ) return result end --[[ count This function counts the number of occurrences of one string in another. ]] function str.count(frame) local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = str._getBoolean(args.plain or true) if plain then pattern = str._escapePattern(pattern) end local _, count = mw.ustring.gsub(source, pattern, '') return count end --[[ endswith This function determines whether a string ends with another string. ]] function str.endswith(frame) local args = str._getParameters(frame.args, {'source', 'pattern'}) local source = args.source or '' local pattern = args.pattern or '' if pattern == '' then -- All strings end with the empty string. return "yes" end if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then return "yes" else return "" end end --[[ join Join all non empty arguments together; the first argument is the separator. Usage: {{#invoke:String|join|sep|one|two|three}} ]] function str.join(frame) local args = {} local sep for _, v in ipairs( frame.args ) do if sep then if v ~= '' then table.insert(args, v) end else sep = v end end return table.concat( args, sep or '' ) end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {} local index = 1 local value for _, arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index] index = index + 1 end new_args[arg] = value end return new_args end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame() local error_category = frame.args.error_category or 'Errors reported by Module String' local ignore_errors = frame.args.ignore_errors or false local no_category = frame.args.no_category or false if str._getBoolean(ignore_errors) then return '' end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>' if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str end return error_str end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false else boolean_value = true end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else error( 'No boolean value found' ) end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ) end return str 6df794dd52434e0f6a372c9918f5a9dedd15f579 Module:Check for unknown parameters 828 16 1000 28 2023-10-01T09:31:19Z Führerredux 2 1 revision imported from [[:meta:Module:Check_for_unknown_parameters]] Scribunto text/plain -- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext. local pos, truncated local function truncate(text) if truncated then return '' end if mw.ustring.len(text) > 25 then truncated = true text = mw.ustring.sub(text, 1, 25) .. '...' end return mw.text.nowiki(text) end local parts = {} for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do pos = remainder table.insert(parts, truncate(before) .. '&lt;' .. tag .. '&gt;...&lt;/' .. tag .. '&gt;') end table.insert(parts, truncate(text:sub(pos or 1))) return table.concat(parts) end function p._check(args, pargs) if type(args) ~= "table" or type(pargs) ~= "table" then -- TODO: error handling return end -- create the list of known args, regular expressions, and the return string local knownargs = {} local regexps = {} for k, v in pairs(args) do if type(k) == 'number' then v = trim(v) knownargs[v] = 1 elseif k:find('^regexp[1-9][0-9]*$') then table.insert(regexps, '^' .. v .. '$') end end -- loop over the parent args, and make sure they are on the list local ignoreblank = isnotempty(args['ignoreblank']) local showblankpos = isnotempty(args['showblankpositional']) local values = {} for k, v in pairs(pargs) do if type(k) == 'string' and knownargs[k] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(k, regexp) then knownflag = true break end end if not knownflag and ( not ignoreblank or isnotempty(v) ) then table.insert(values, clean(k)) end elseif type(k) == 'number' and knownargs[tostring(k)] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(tostring(k), regexp) then knownflag = true break end end if not knownflag and ( showblankpos or isnotempty(v) ) then table.insert(values, k .. ' = ' .. clean(v)) end end end -- add results to the output tables local res = {} if #values > 0 then local unknown_text = args['unknown'] or 'Found _VALUE_, ' if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then local preview_text = args['preview'] if isnotempty(preview_text) then preview_text = require('Module:If preview')._warning({preview_text}) elseif preview == nil then preview_text = unknown_text end unknown_text = preview_text end for _, v in pairs(values) do -- Fix odd bug for | = which gets stripped to the empty string and -- breaks category links if v == '' then v = ' ' end -- avoid error with v = 'example%2' ("invalid capture index") local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v}) table.insert(res, r) end end return table.concat(res) end function p.check(frame) local args = frame.args local pargs = frame:getParent().args return p._check(args, pargs) end return p 93db6d115d4328d2a5148bb42959105e367b663e Template:Main/doc 10 451 1002 1001 2023-10-01T09:31:20Z Führerredux 2 1 revision imported from [[:meta:Template:Main/doc]] wikitext text/x-wiki ==Description== This template is used at the start of a section to link to the main article on that subject. ==Syntax== Type {{tlx|main|page name}} anywhere on the page. For example, {{tlx|main|Help:Contents}} gives... :{{main|Help:Contents}} You can add multiple pages, up to a maximum of five. For example, {{tlx|Main|One|Two|Three|Four|Five}} gives... :{{Main|One|Two|Three|Four|Five}} ==Credits== This template's code came from [[wikia:w:c:sims:Template:Main|Template:Main]] on The Sims Wiki. <includeonly>[[Category:Other templates|{{PAGENAME}}]]</includeonly> <noinclude>[[Category:Template documentation pages|{{PAGENAME}}]]</noinclude> ==TemplateData== {{TemplateData header}} <templatedata> { "params": { "1": { "label": "Page 1", "description": "The name of the first page that you want to link to. If this is not specified, the current page name (without the namespace prefix) is used instead.", "type": "string" }, "2": { "label": "Page 2", "description": "The name of the second page you want to link to.", "type": "string" }, "3": { "label": "Page 3", "description": "The name of the third page you want to link to.", "type": "string" }, "4": { "label": "Page 4", "description": "The name of the fourth page you want to link to.", "type": "string" }, "5": { "label": "Page 5", "description": "The name of the fifth page you want to link to.", "type": "string" }, "6": { "label": "Page 6", "description": "The name of the sixth page you want to link to.", "type": "string" } }, "description": "This template is used after the heading of a section, to link to a sub-article (or sub-articles) that is entirely about the topic of the section. The template will display in italics: \"Main article: Article 1, Article 2 and Article 3\".", "paramOrder": [ "1", "2", "3", "4", "5", "6" ] } </templatedata> 06d3a43cfa1555d654afcc6d7860e3f8a1006194 Template:Main article 10 452 1003 2023-10-01T09:32:38Z Führerredux 2 Redirected page to [[Template:Main]] wikitext text/x-wiki #REDIRECT [[Template:Main]] 81c4c9d69c597268c25c0627aa680309ad900ab3 Module:If preview 828 453 1004 2023-10-01T09:34:51Z Führerredux 2 Created page with "local p = {} local cfg = mw.loadData('Module:If preview/configuration') --[[ main This function returns either the first argument or second argument passed to this module, depending on whether the page is being previewed. ]] function p.main(frame) if cfg.preview then return frame.args[1] or '' else return frame.args[2] or '' end end --[[ pmain This function returns either the first argument or second argument passed to this module's parent (i.e. template usi..." Scribunto text/plain local p = {} local cfg = mw.loadData('Module:If preview/configuration') --[[ main This function returns either the first argument or second argument passed to this module, depending on whether the page is being previewed. ]] function p.main(frame) if cfg.preview then return frame.args[1] or '' else return frame.args[2] or '' end end --[[ pmain This function returns either the first argument or second argument passed to this module's parent (i.e. template using this module), depending on whether it is being previewed. ]] function p.pmain(frame) return p.main(frame:getParent()) end local function warning_text(warning) return mw.ustring.format( cfg.warning_infrastructure, cfg.templatestyles, warning ) end function p._warning(args) local warning = args[1] and args[1]:match('^%s*(.-)%s*$') or '' if warning == '' then return warning_text(cfg.missing_warning) end if not cfg.preview then return '' end return warning_text(warning) end --[[ warning This function returns a "preview warning", which is the first argument marked up with HTML and some supporting text, depending on whether the page is being previewed. disabled since we'll implement the template version in general ]] --function p.warning(frame) -- return p._warning(frame.args) --end --[[ warning, but for pass-through templates like {{preview warning}} ]] function p.pwarning(frame) return p._warning(frame:getParent().args) end return p 9a92196d0001b8016f2501aedfadcc3adcb974ef Module:If preview/doc 828 454 1005 2023-10-01T09:35:17Z Führerredux 2 Created page with "{{Module rating|protected}} {{High-use}} {{Lua|Module:If preview/configuration}} {{Uses TemplateStyles|Module:If preview/styles.css}} This module implements {{Tl|If preview}} and {{Tl|Preview warning}}. It helps templates/modules determine if they are being previewed. Prefer implementing the template versions in other templates. In a module to use the <code>main()</code>, you need to pass a frame table with an args table. For the preview warning, use <code>_warning()..." wikitext text/x-wiki {{Module rating|protected}} {{High-use}} {{Lua|Module:If preview/configuration}} {{Uses TemplateStyles|Module:If preview/styles.css}} This module implements {{Tl|If preview}} and {{Tl|Preview warning}}. It helps templates/modules determine if they are being previewed. Prefer implementing the template versions in other templates. In a module to use the <code>main()</code>, you need to pass a frame table with an args table. For the preview warning, use <code>_warning()</code>. <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Please, categories below this line and interwikis at Wikidata --> }}</includeonly><noinclude> [[pt:Módulo:If preview/doc]] </noinclude> 8613bb2e7c8b53a722e4eef105b36b82ab20037d Module:If preview/configuration 828 455 1006 2023-10-01T09:35:46Z Führerredux 2 Created page with "--[[ We perform the actual check for whether this is a preview here since preprocessing is relatively expensive. ]] local frame = mw.getCurrentFrame() local function is_preview() local revision_id = frame:preprocess('{{REVISIONID}}') -- {{REVISIONID}} is usually the empty string when previewed. -- I don't know why we're checking for nil but hey, maybe someday things -- would have broken return revision_id == nil or revision_id == '' end local function templatestyl..." Scribunto text/plain --[[ We perform the actual check for whether this is a preview here since preprocessing is relatively expensive. ]] local frame = mw.getCurrentFrame() local function is_preview() local revision_id = frame:preprocess('{{REVISIONID}}') -- {{REVISIONID}} is usually the empty string when previewed. -- I don't know why we're checking for nil but hey, maybe someday things -- would have broken return revision_id == nil or revision_id == '' end local function templatestyles() return frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:If preview/styles.css' } } end return { preview = is_preview(), templatestyles = templatestyles(), warning_infrastructure = '%s<div class="preview-warning"><strong>Preview warning:</strong> %s</div>', missing_warning = 'The template has no warning text. Please add a warning.' } 3edc8897c51a61b9e710b2a4d9eb657b3c2f1034 Module:If preview/styles.css 828 456 1007 2023-10-01T09:36:04Z Führerredux 2 Created page with "/* {{pp|small=yes}} */ .preview-warning { font-style: italic; /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; color: red; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .preview-warning + link + .preview-warning { margin-top: -0.5em; }" sanitized-css text/css /* {{pp|small=yes}} */ .preview-warning { font-style: italic; /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; color: red; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .preview-warning + link + .preview-warning { margin-top: -0.5em; } 8b79ffc4853d424a805b084de00030e04bbd573e Template:If preview 10 457 1008 2023-10-01T09:36:59Z Führerredux 2 Created page with "{{#invoke:If preview|pmain}}<noinclude> {{documentation}} </noinclude>" wikitext text/x-wiki {{#invoke:If preview|pmain}}<noinclude> {{documentation}} </noinclude> 39c389b968c39be0b920af321b146f212ea3a1c3 Template:If preview/doc 10 458 1009 2023-10-01T09:37:10Z Führerredux 2 Created page with "{{Documentation subpage}} {{High-use}} {{Lua|Module:If preview}} This is a template that helps other templates determine if they are being previewed or not, and do or display different things accordingly. == Usage == <code><nowiki>{{If preview|value if being previewed|value if not being previewed}}</nowiki></code> The first parameter is returned if the page is being previewed, otherwise the second parameter will be returned. Either parameter may be empty. ==Examples=..." wikitext text/x-wiki {{Documentation subpage}} {{High-use}} {{Lua|Module:If preview}} This is a template that helps other templates determine if they are being previewed or not, and do or display different things accordingly. == Usage == <code><nowiki>{{If preview|value if being previewed|value if not being previewed}}</nowiki></code> The first parameter is returned if the page is being previewed, otherwise the second parameter will be returned. Either parameter may be empty. ==Examples== Preview this page to see the effect of previewing on the 'Example' column. {|class=wikitable !Code !Value when previewed !Value when saved !Example |- |<code><nowiki>{{If preview|Yes|No}}</nowiki></code> |Yes |No |{{If preview|Yes|No}} |- |<code><nowiki>{{If preview|Red}}</nowiki></code> |Red | |{{If preview|Red}} |- |<code><nowiki>{{If preview||Blue}}</nowiki></code> | |Blue |{{If preview||Blue}} |} ==See also== * {{Tl|Preview warning}} <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:If-then-else templates]] }}</includeonly><noinclude> [[pt:Predefinição:If preview/doc]] </noinclude> b9ffc1a62b876db536b126e923a82e89dbee8038 Module:Unicode data 828 459 1010 2023-10-01T09:45:47Z Führerredux 2 Created page with "local p = {} local floor = math.floor local function errorf(level, ...) if type(level) == "number" then return error(string.format(...), level + 1) else -- level is actually the format string. return error(string.format(level, ...), 2) end end local function binary_range_search(codepoint, ranges) local low, mid, high low, high = 1, ranges.length or require "Module:TableTools".length(ranges) while low <= high do mid = floor((low + high) / 2) local range =..." Scribunto text/plain local p = {} local floor = math.floor local function errorf(level, ...) if type(level) == "number" then return error(string.format(...), level + 1) else -- level is actually the format string. return error(string.format(level, ...), 2) end end local function binary_range_search(codepoint, ranges) local low, mid, high low, high = 1, ranges.length or require "Module:TableTools".length(ranges) while low <= high do mid = floor((low + high) / 2) local range = ranges[mid] if codepoint < range[1] then high = mid - 1 elseif codepoint <= range[2] then return range, mid else low = mid + 1 end end return nil, mid end p.binary_range_search = binary_range_search --[[ local function linear_range_search(codepoint, ranges) for i, range in ipairs(ranges) do if range[1] <= codepoint and codepoint <= range[2] then return range end end end --]] -- Load a module by indexing "loader" with the name of the module minus the -- "Module:Unicode data/" part. For instance, loader.blocks returns -- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be -- returned. local loader = setmetatable({}, { __index = function (self, key) local success, data = pcall(mw.loadData, "Module:Unicode data/" .. key) if not success then data = false end self[key] = data return data end }) -- For the algorithm used to generate Hangul Syllable names, -- see "Hangul Syllable Name Generation" in section 3.12 of the -- Unicode Specification: -- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf local name_hooks = { { 0x00, 0x1F, "<control-%04X>" }, -- C0 control characters { 0x7F, 0x9F, "<control-%04X>" }, -- DEL and C1 control characters { 0x3400, 0x4DBF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension A { 0x4E00, 0x9FFF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph { 0xAC00, 0xD7A3, function (codepoint) -- Hangul Syllables local Hangul_data = loader.Hangul local syllable_index = codepoint - 0xAC00 return ("HANGUL SYLLABLE %s%s%s"):format( Hangul_data.leads[floor(syllable_index / Hangul_data.final_count)], Hangul_data.vowels[floor((syllable_index % Hangul_data.final_count) / Hangul_data.trail_count)], Hangul_data.trails[syllable_index % Hangul_data.trail_count] ) end }, -- High Surrogates, High Private Use Surrogates, Low Surrogates { 0xD800, 0xDFFF, "<surrogate-%04X>" }, { 0xE000, 0xF8FF, "<private-use-%04X>" }, -- Private Use -- CJK Compatibility Ideographs { 0xF900, 0xFA6D, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0xFA70, 0xFAD9, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0x17000, 0x187F7, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph { 0x18800, 0x18AFF, function (codepoint) return ("TANGUT COMPONENT-%03d"):format(codepoint - 0x187FF) end }, { 0x18D00, 0x18D08, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph Supplement { 0x1B170, 0x1B2FB, "NUSHU CHARACTER-%04X" }, -- Nushu { 0x20000, 0x2A6DF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension B { 0x2A700, 0x2B739, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension C { 0x2B740, 0x2B81D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension D { 0x2B820, 0x2CEA1, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension E { 0x2CEB0, 0x2EBE0, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension F -- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane) { 0x2F800, 0x2FA1D, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0xE0100, 0xE01EF, function (codepoint) -- Variation Selectors Supplement return ("VARIATION SELECTOR-%d"):format(codepoint - 0xE0100 + 17) end}, { 0x30000, 0x3134A, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension G { 0x31350, 0x323AF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension H { 0x2EBF0, 0x2EE5D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension I { 0xF0000, 0xFFFFD, "<private-use-%04X>" }, -- Plane 15 Private Use { 0x100000, 0x10FFFD, "<private-use-%04X>" } -- Plane 16 Private Use } name_hooks.length = #name_hooks local name_range_cache local function generate_name(data, codepoint) if type(data) == "string" then return data:format(codepoint) else return data(codepoint) end end --[[ -- Checks that the code point is a number and in range. -- Does not check whether code point is an integer. -- Not used local function check_codepoint(funcName, argIdx, val) require 'libraryUtil'.checkType(funcName, argIdx, val, 'number') if codepoint < 0 or 0x10FFFF < codepoint then errorf("Codepoint %04X out of range", codepoint) end end --]] -- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8 function p.lookup_name(codepoint) -- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned -- (Cn) and specifically noncharacters: -- https://www.unicode.org/faq/private_use.html#nonchar4 if 0xFDD0 <= codepoint and (codepoint <= 0xFDEF or floor(codepoint % 0x10000) >= 0xFFFE) then return ("<noncharacter-%04X>"):format(codepoint) end if name_range_cache -- Check if previously used "name hook" applies to this code point. and codepoint >= name_range_cache[1] and codepoint <= name_range_cache[2] then return generate_name(name_range_cache[3], codepoint) end local range = binary_range_search(codepoint, name_hooks) if range then name_range_cache = range return generate_name(range[3], codepoint) end local data = loader[('names/%03X'):format(codepoint / 0x1000)] if data and data[codepoint] then return data[codepoint] -- Unassigned (Cn) consists of noncharacters and reserved characters. -- The character has been established not to be a noncharacter, -- and if it were assigned, its name would already been retrieved, -- so it must be reserved. else return ("<reserved-%04X>"):format(codepoint) end end --[[ -- No image data modules on Wikipedia yet. function p.lookup_image(codepoint) local data = loader[('images/%03X'):format(codepoint / 0x1000)] if data then return data[codepoint] end end --]] local planes = { [ 0] = "Basic Multilingual Plane"; [ 1] = "Supplementary Multilingual Plane"; [ 2] = "Supplementary Ideographic Plane"; [ 3] = "Tertiary Ideographic Plane"; [14] = "Supplementary Special-purpose Plane"; [15] = "Supplementary Private Use Area-A"; [16] = "Supplementary Private Use Area-B"; } -- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable. local blocks local function block_iter(blocks, i) i = i + 1 local data = blocks[i] if data then -- Unpack doesn't work on tables loaded with mw.loadData. return i, data[1], data[2], data[3] end end -- An ipairs-type iterator generator for the list of blocks. function p.enum_blocks() local blocks = loader.blocks return block_iter, blocks, 0 end function p.lookup_plane(codepoint) local i = floor(codepoint / 0x10000) return planes[i] or ("Plane %u"):format(i) end function p.lookup_block(codepoint) local blocks = loader.blocks local range = binary_range_search(codepoint, blocks) if range then return range[3] else return "No Block" end end function p.get_block_info(name) for i, block in ipairs(loader.blocks) do if block[3] == name then return block end end end function p.is_valid_pagename(pagename) local has_nonws = false for cp in mw.ustring.gcodepoint(pagename) do if (cp == 0x0023) -- # or (cp == 0x005B) -- [ or (cp == 0x005D) -- ] or (cp == 0x007B) -- { or (cp == 0x007C) -- | or (cp == 0x007D) -- } or (cp == 0x180E) -- MONGOLIAN VOWEL SEPARATOR or ((cp >= 0x2000) and (cp <= 0x200A)) -- spaces in General Punctuation block or (cp == 0xFFFD) -- REPLACEMENT CHARACTER then return false end local printable, result = p.is_printable(cp) if not printable then return false end if result ~= "space-separator" then has_nonws = true end end return has_nonws end local function manual_unpack(what, from) if what[from + 1] == nil then return what[from] end local result = {} from = from or 1 for i, item in ipairs(what) do if i >= from then table.insert(result, item) end end return unpack(result) end local function compare_ranges(range1, range2) return range1[1] < range2[1] end -- Creates a function to look up data in a module that contains "singles" (a -- code point-to-data map) and "ranges" (an array containing arrays that contain -- the low and high code points of a range and the data associated with that -- range). -- "loader" loads and returns the "singles" and "ranges" tables. -- "match_func" is passed the code point and either the data or the "dots", and -- generates the final result of the function. -- The varargs ("dots") describes the default data to be returned if there wasn't -- a match. -- In case the function is used more than once, "cache" saves ranges that have -- already been found to match, or a range whose data is the default if there -- was no match. local function memo_lookup(data_module_subpage, match_func, ...) local dots = { ... } local cache = {} local singles, ranges return function (codepoint) if not singles then local data_module = loader[data_module_subpage] singles, ranges = data_module.singles, data_module.ranges end if singles[codepoint] then return match_func(codepoint, singles[codepoint]) end local range = binary_range_search(codepoint, cache) if range then return match_func(codepoint, manual_unpack(range, 3)) end local range, index = binary_range_search(codepoint, ranges) if range then table.insert(cache, range) table.sort(cache, compare_ranges) return match_func(codepoint, manual_unpack(range, 3)) end if ranges[index] then local dots_range if codepoint > ranges[index][2] then dots_range = { ranges[index][2] + 1, ranges[index + 1] and ranges[index + 1][1] - 1 or 0x10FFFF, unpack(dots) } else -- codepoint < range[index][1] dots_range = { ranges[index - 1] and ranges[index - 1][2] + 1 or 0, ranges[index][1] - 1, unpack(dots) } end table.sort(cache, compare_ranges) end return match_func(codepoint) end end -- Get a code point's combining class value in [[Module:Unicode data/combining]], -- and return whether this value is not zero. Zero is assigned as the default -- if the combining class value is not found in this data module. -- That is, return true if character is combining, or false if it is not. -- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for -- more information. p.is_combining = memo_lookup( "combining", function (codepoint, combining_class) return combining_class and combining_class ~= 0 or false end, 0) function p.add_dotted_circle(str) return (mw.ustring.gsub(str, ".", function(char) if p.is_combining(mw.ustring.codepoint(char)) then return '◌' .. char end end)) end local lookup_control = memo_lookup( "control", function (codepoint, ccc) return ccc or "assigned" end, "assigned") p.lookup_control = lookup_control function p.is_assigned(codepoint) return lookup_control(codepoint) ~= "unassigned" end function p.is_printable(codepoint) local result = lookup_control(codepoint) return (result == "assigned") or (result == "space-separator"), result end function p.is_whitespace(codepoint) local result = lookup_control(codepoint) return (result == "space-separator"), result end p.lookup_category = memo_lookup( "category", function (codepoint, category) return category end, "Cn") local lookup_script = memo_lookup( "scripts", function (codepoint, script_code) return script_code or 'Zzzz' end, "Zzzz") p.lookup_script = lookup_script function p.get_best_script(str) -- Check type of argument, because mw.text.decode coerces numbers to strings! require "libraryUtil".checkType("get_best_script", 1, str, "string") -- Convert HTML character references (including named character references, -- or character entities) to characters. str = mw.text.decode(str, true) local scripts = {} for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) -- Ignore "Inherited", "Undetermined", or "Uncoded" scripts. if not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then scripts[script] = true end end -- If scripts does not contain two or more keys, -- return first and only key (script code) in table. if not next(scripts, next(scripts)) then return next(scripts) end -- else return majority script, or else "Zzzz"? end function p.is_Latin(str) require "libraryUtil".checkType("get_best_script", 1, str, "string") str = mw.text.decode(str, true) -- Search for the leading bytes that introduce the UTF-8 encoding of the -- code points U+0340-U+10FFFF. If they are not found and there is at least -- one Latin-script character, the string counts as Latin, because the rest -- of the characters can only be Zyyy, Zinh, and Zzzz. -- The only scripts found below U+0370 (the first code point of the Greek -- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz. -- See the codepage in the [[UTF-8]] article. if not str:find "[\205-\244]" then for codepoint in mw.ustring.gcodepoint(str) do if lookup_script(codepoint) == "Latn" then return true end end end local Latn = false for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) if script == "Latn" then Latn = true elseif not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then return false end end return Latn end -- Checks that a string contains only characters belonging to right-to-left -- scripts, or characters of ignorable scripts. function p.is_rtl(str) require "libraryUtil".checkType("get_best_script", 1, str, "string") str = mw.text.decode(str, true) -- Search for the leading bytes that introduce the UTF-8 encoding of the -- code points U+0580-U+10FFFF. If they are not found, the string can only -- have characters from a left-to-right script, because the first code point -- in a right-to-left script is U+0591, in the Hebrew block. if not str:find "[\214-\244]" then return false end local result = false local rtl = loader.scripts.rtl for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) if rtl[script] then result = true elseif not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then return false end end return result end --[[--------------------------< I S _ R T L _ F R A M E >------------------------------------------------------ external entry from an {{#invoke:}} to determine if a string of text is rtl. Strips html and html-like tags so that those tags don't corrupt the is-rtl-is-not-rtl determination; this added for the cases where the rtl text has <br /> tags. ]] function p.is_rtl_frame (frame) local str = frame.args[1]; -- get the string from the {{#invoke:}} frame str = str:gsub ('%b<>', ''); -- strip any html and html-like tags return p.is_rtl (str); -- return if whatever remains rtl; false else end local function get_codepoint(args, arg) local codepoint_string = args[arg] or errorf(2, "Parameter %s is required", tostring(arg)) local codepoint = tonumber(codepoint_string, 16) or errorf(2, "Parameter %s is not a code point in hexadecimal base", tostring(arg)) if not (0 <= codepoint and codepoint <= 0x10FFFF) then errorf(2, "code point in parameter %s out of range", tostring(arg)) end return codepoint end local function get_func(args, arg, prefix) local suffix = args[arg] or errorf(2, "Parameter %s is required", tostring(arg)) suffix = mw.text.trim(suffix) local func_name = prefix .. suffix local func = p[func_name] or errorf(2, "There is no function '%s'", func_name) return func end -- This function allows any of the "lookup" functions to be invoked. The first -- parameter is the word after "lookup_"; the second parameter is the code point -- in hexadecimal base. function p.lookup(frame) local func = get_func(frame.args, 1, "lookup_") local codepoint = get_codepoint(frame.args, 2) local result = func(codepoint) if func == p.lookup_name then -- Prevent code point labels such as <control-0000> from being -- interpreted as HTML tags. result = result:gsub("<", "&lt;") end return result end function p.is(frame) local func = get_func(frame.args, 1, "is_") -- is_Latin and is_valid_pagename take strings. if func == p.is_Latin or func == p.is_valid_pagename or func == p.is_rtl then return (func(frame.args[2])) else -- The rest take code points. local codepoint = get_codepoint(frame.args, 2) return (func(codepoint)) -- Adjust to one result. end end return p 898b5f0689e2646f633acbbd08143920c87abef2 Module:Unicode data/doc 828 460 1011 2023-10-01T09:46:12Z Führerredux 2 Created page with "<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{#ifeq: {{SUBPAGENAME}} | sandbox | {{#invoke: Unicode_data/testcases | run_tests}} | {{high risk|952513}} }} == Usage == This module provides functions that access information on Unicode code points. The information is retrieved from data modules generated from the [https://www.unicode.org/Public/UNIDATA/ Unicode Character Database]..." wikitext text/x-wiki <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{#ifeq: {{SUBPAGENAME}} | sandbox | {{#invoke: Unicode_data/testcases | run_tests}} | {{high risk|952513}} }} == Usage == This module provides functions that access information on Unicode code points. The information is retrieved from data modules generated from the [https://www.unicode.org/Public/UNIDATA/ Unicode Character Database], or derived by rules given in the [https://www.unicode.org/versions/Unicode11.0.0/UnicodeStandard-11.0.pdf Unicode Specification]. It and its submodules were copied from English Wiktionary and then modified; see [[wikt:Module:Unicode data|there]] for more information. ==Parameters and functions== ===code point=== The code point is to be entered as '''hexadecimal value'''. For example, {{unichar|A9|COPYRIGHT SIGN}}: :{{mono|1={{!}}A9<sub>hex</sub>}} :{{mono|1={{!}}0xA9<sub>hex</sub>}} :{{mono|1={{!}}0x00A9<sub>hex</sub>}} :{{mono|1={{!}}0x00a9<sub>hex</sub>}} :<code><nowiki>{{#invoke:Unicode data|lookup|name|0x00A9}}</nowiki></code> &rarr; {{#invoke:Unicode data|lookup|name|0x00A9}} Incorrect or unintended results: :{{mono|1=169<sub>dec</sub>}}: <code><nowiki>{{#invoke:Unicode data|lookup|name|169}}</nowiki></code> &rarr; {{#invoke:Unicode data|lookup|name|169}} {{nay}} &mdash;"U+00A9" {{code|1=&copy;}} expected; but is read as {{mono|1=00A9<sub>hex</sub>}}&nbsp;(that is,&nbsp;{{mono|1={{hex2dec|169}}<sub>dec</sub>}} :{{mono|1=U+00A9}} <code><nowiki>{{#invoke:Unicode data|lookup|name|U+00A9}}</nowiki></code> {{nay}} &mdash;do not use "U+" prefix :{{mono|1=غ}} <code><nowiki>{{#invoke:Unicode data|lookup|name|غ}}</nowiki></code> {{nay}} &mdash;cannot enter a character as codepoint ==="{{mono|lookup}}" and "{{mono|1=is}}" functions=== ; {{code|lang=lua|lookup, is}}: Template-invokable functions that allow access to the functions starting with <code>lookup</code> and <code>is</code>.For most of the functions, add the code point in hexadecimal base as the next parameter. For <code>is"{{!}}Latin</code>, <code>is{{!}}rtl</code>, and <code>is{{!}}valid_pagename</code>, add character string. [[HTML character references]] in the text are decoded by the module into code points. :For example, {{tnull|&#35;invoke:Unicode data|is|Latin|àzàhàr̃iyyā̀}} &rarr; {{#invoke:Unicode data|is|Latin|àzàhàr̃iyyā̀}}. :Internally, in modules, these functions are named using underscore: {{code|lang=lua|lookup_name{{!}}code point}} &larr; {{code|lang=lua|lookup_name}} :For <code>&amp;A9;</code> <big>&#xA9;</big>: {{tnull|&#35;invoke:Unicode data|lookup|name|A9}}&nbsp;&rarr; {{#invoke:Unicode data|lookup|name|A9}} ==Functions overview== {{Module:Unicode data/overview/doc}} ==Data modules== The data used by functions in this module is found in [[Special:PrefixIndex/Module:Unicode data/|submodules]]. Some are generated by [[AWK]] scripts shown at [[wikt:User:Kephir/Unicode|User:Kephir/Unicode]] on English Wiktionary, others by Lua scripts on the <code>/make</code> subpages of the submodules. * [[Module:Unicode data/age]]: 'Age' of a character, that is: version introduction number. * [[Module:Unicode data/aliases]]: the formal name aliases for characters (from [https://www.unicode.org/Public/UNIDATA/NameAliases.txt NameAliases.txt]) * [[Module:Unicode data/blocks]]: the list of Unicode blocks (from [https://www.unicode.org/Public/UNIDATA/Blocks.txt Blocks.txt]) * [[Module:Unicode data/category]]: data mapping characters to their General Category (from [https://www.unicode.org/Public/UNIDATA/extracted/DerivedGeneralCategory.txt DerivedGeneralCategory.txt]) * [[Module:Unicode data/combining]]: data mapping characters to their Combining Classes (from [https://www.unicode.org/Public/UNIDATA/extracted/DerivedCombiningClass.txt DerivedCombiningClass.txt]) * [[Module:Unicode data/control]]: data for identifying characters that belong to the General Categories of Separator and Other (from [https://www.unicode.org/Public/UNIDATA/extracted/DerivedGeneralCategory.txt DerivedGeneralCategory.txt]) * [[Module:Unicode data/derived core properties]]: * [[Module:Unicode data/Hangul]]: data used to generate the names of [[Hangul]] syllables (from [https://www.unicode.org/Public/UNIDATA/Jamo.txt Jamo.txt]) * [[Special:PrefixIndex/Module:Unicode data/names|Module:Unicode data/names/<nowiki>*</nowiki>]] ({{mono|000hh, .., 0E0hh}}; eg [[:Module:Unicode data/names/000|../names/000]]): names * [[Module:Unicode data/scripts]]: data mapping characters to their Unicode script properties (from [https://www.unicode.org/Public/UNIDATA/Scripts.txt Scripts.txt]). The name data modules ([[Special:PrefixIndex/Module:Unicode data/names/|Module:Unicode data/names/<var>xxx</var>]]) were compiled from [https://www.unicode.org/Public/UNIDATA/UnicodeData.txt UnicodeData.txt]. Each one contains, at maximum, code points U+xxx000 to U+xxxFFF. {{#invoke:Unicode data/documentation functions|show_modules}} ==Copyright== The Unicode database is released by Unicode Inc. under the following terms: <blockquote> Copyright © 1991-2018 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in https://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. </blockquote> ==Known issues== * Reading data like <code>[[:Module:Unicode data/aliases]]</code> not provided nor documented * Test fail: <code>lookup_category</code> {{mono|U+FFFF}} (&lt;noncharacter-FFFF>) expected: Cn. ::<code><nowiki>{{#invoke:Unicode data|lookup|category|0xFFFF}}</nowiki></code> &rarr; {{#invoke:Unicode data|lookup|category|0xFFFF}} [Nil] ==See also== * '''Named entities''': for example, {{unichar|22C1|N-ARY LOGICAL OR}}: <code><nowiki>{{#</nowiki>invoke:[[:Module:LoadData|LoadData]]|[[:Module:Numcr2namecr|Numcr2namecr]]|0x22C1}}</code> &rarr; {{#invoke:LoadData|Numcr2namecr|0x22C1}} <includeonly>{{sandbox other| | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Unicode character modules|Data]] [[Category:Lua metamodules]] }}</includeonly> 59b6592feea5de24aa4a406900a3f9be340c3c76 Template:Mono 10 461 1012 2023-10-01T09:47:10Z Führerredux 2 Created page with "{{<includeonly>safesubst:</includeonly>ifsubst|1=|2=<templatestyles src="Mono/styles.css" />}}<span class="monospaced">{{{2|{{{1}}}}}}</span><noinclude> {{Documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude>" wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>ifsubst|1=|2=<templatestyles src="Mono/styles.css" />}}<span class="monospaced">{{{2|{{{1}}}}}}</span><noinclude> {{Documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 800f06823c02b03f8b9cf1e245ad8c4829cfe931 Template:Mono/doc 10 462 1013 2023-10-01T09:47:31Z Führerredux 2 Created page with "{{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE --> {{tlr|clear=right|monospace}}{{tsh|clear=right|tt|ttt}} {{high-use}} {{Uses TemplateStyles |Template:Mono/styles.css}} {{COinS safe|n}} {{-}} == Usage == {{tlx|mono|<var>text to format here</var>}} renders as: {{mono|text to format here}} This template is for formatting short bits of content (the only parameter) as monospaced (nonproportional) text. It is simply a quick shorthand for..." wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE --> {{tlr|clear=right|monospace}}{{tsh|clear=right|tt|ttt}} {{high-use}} {{Uses TemplateStyles |Template:Mono/styles.css}} {{COinS safe|n}} {{-}} == Usage == {{tlx|mono|<var>text to format here</var>}} renders as: {{mono|text to format here}} This template is for formatting short bits of content (the only parameter) as monospaced (nonproportional) text. It is simply a quick shorthand for the necessary [[Cascading Style Sheets|CSS]] code. It is a replacement for {{tag|tt}}, which is an obsolete element under HTML5. ([http://www.w3.org/TR/html5/obsolete.html#non-conforming-features Non-conforming features]) This template {{em|should}} be used where the content is being rendered in monospaced text for purely stylistic/display reasons, where this display has no particular semantic significance. It {{em|should not}} be used to indicate information with these semantics: * source code, use {{tl|code}} or {{tag|code}} instead * variables or variable input, use {{tl|var}} or {{tag|var}} instead * keyboard input, use {{tl|kbd}} or {{tag|kbd}} instead * sample output, use {{tl|samp}} or {{tag|samp}} instead It {{em|cannot}} be used to mark up multiple paragraphs, sections or other block elements, as it uses {{tag|span|o}}, which is an inline element. Use {{tl|monodiv}} and {{tl|pre}} for multiple blocks of text, or use multiple instances of {{tl|Mono}} for each individual line. When the content ends with a single closing curly brace (<code><nowiki>}</nowiki></code>), the content should be followed by <code><nowiki>&lt;nowiki/&gt;</nowiki></code>, for example, to mark up <code><nowiki>{foo}</nowiki></code>, use {{tlc|mono|<nowiki>{foo}&lt;nowiki/&gt;</nowiki>}} or {{tlc|mono|<nowiki>&lt;nowiki&gt;{foo}&lt;/nowiki&gt;</nowiki>}}. If the content contains pipe characters (<code>|</code>) not surrounded by {{tag|nowiki}}, they must be escaped with <code>&amp;#124;</code> or <code><nowiki>{{!}}</nowiki></code>. === Parameters === There are two parameters: ;{{para|1}} or unnamed : The content to format as monospaced. If the content contains a <code>=</code> character, the parameter must be numbered or the template will break. (The parameter does not need to be numbered if the <code>=</code> character is surrounded by {{tag|nowiki}}, or if it is escaped as <code>&amp;#61;</code>.) For backward compatibility with an old, merged-in template, this parameter can also be called {{para|2}}. ;{{para|needs_review|yes}} : Used (e.g. by [[WP:Bot|bots]] or [[WP:AWB|AWB]] scripts) to indicate replacement of now-obsolete {{tag|tt}} markup with {{tnull|mono|...}} markup. This template displays nothing and presently does no categorization, though a cleanup category can be created if necessary. It indicates that the markup may need to be changed to something more semantically meaningful, such as {{tag|code}}, {{tag|samp}}, or {{tag|kbd}}. == TemplateData == {{Format TemplateData|<templatedata> { "description": "This template is for formatting short bits of content as monospaced text.", "format": "inline", "params": { "1": { "aliases": [ "2" ], "label": "Content", "description": "The content to format as monospaced.", "required": true, "type": "line" }, "needs_review": { "label": "Needs Review?", "description": "Used (e.g. by [[WP:Bot|bots]] or [[WP:AWB|AWB]] scripts) to indicate replacement of now-obsolete <code><!--nostrip-->&lt;tt&gt;...&lt;/tt&gt;</code><!--nostrip--> markup with <code><!--nostrip-->{{mono|...}}</code><!--nostrip--> markup. This template displays nothing and presently does no categorization, though a cleanup category can be created if necessary. It indicates that the markup may need to be changed to something more semantically meaningful, such as <code><!--nostrip-->&lt;code&gt;...&lt;/code&gt;</code><!--nostrip-->, <code><!--nostrip-->&lt;samp&gt;...&lt;/samp&gt;</code><!--nostrip-->, or&nbsp;<code><!--nostrip-->&lt;kbd&gt;...&lt;/kbd&gt;</code><!--nostrip-->.", "autovalue": "yes", "type": "boolean" } } } </templatedata>}} == See also == * {{tl|pre}} * {{tl|code}} * {{tl|kbd}} * {{tl|syntaxhighlight}} * {{tl|samp}} * {{tl|var}} * {{tl|param value}} {{Semantic markup templates|show}} <includeonly>{{Sandbox other|| <!-- CATEGORIES HERE, THANKS --> [[Category:Typing-aid templates|{{PAGENAME}}]] }}</includeonly> b7b11addf00bef5846e19a048612034ff9df51fc Template:Mono/styles.css 10 463 1014 2023-10-01T09:47:55Z Führerredux 2 Created page with "/* {{pp-template}} */ .monospaced { /* "monospace, monospace" per [[WP:MONO]] */ font-family: monospace, monospace; }" sanitized-css text/css /* {{pp-template}} */ .monospaced { /* "monospace, monospace" per [[WP:MONO]] */ font-family: monospace, monospace; } cadfc2ad2e42cde230abf3e74ad418f7c4c71ab4 Module:Infobox/doc 828 84 1015 208 2023-10-01T09:49:21Z Führerredux 2 wikitext text/x-wiki {{High-use|3308957|all-pages = yes}} {{module rating|protected}} {{Lua|Module:Navbar|Module:Italic title}} {{Uses TemplateStyles|Module:Infobox/styles.css|Template:Hlist/styles.css|Template:Plainlist/styles.css}} '''Module:Infobox''' is a [[WP:Module|module]] that implements the {{tl|Infobox}} template. Please see the template page for usage instructions. == Tracking categories == * {{clc|Pages using infobox templates with ignored data cells}} * {{clc|Articles using infobox templates with no data rows}} * {{clc|Pages using embedded infobox templates with the title parameter}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| [[Category:Modules that add a tracking category]] [[Category:Wikipedia infoboxes]] [[Category:Infobox modules]] [[Category:Modules that check for strip markers]] }}</includeonly> 936ad219eb263a6f3293d62f667bd7b5db1059c1 Adam Dressler 0 464 1016 2023-10-01T09:49:57Z Führerredux 2 Created page with "{{Infobox officeholder | name = Adam Dressler | image = File:AdamDressler.png | office = Führer of Germany | order = 1st | native_name = Adam Dressler | native_name_lang = de | alt = Portrait of Adam Dressler | country = Das Deutsche Reich | party = Valkistische Deutsche Volkspartei | cabinet = [[Dressler's Cabinet]] | allegiance = {{Unbullet..." wikitext text/x-wiki {{Infobox officeholder | name = Adam Dressler | image = File:AdamDressler.png | office = Führer of Germany | order = 1st | native_name = Adam Dressler | native_name_lang = de | alt = Portrait of Adam Dressler | country = Das Deutsche Reich | party = Valkistische Deutsche Volkspartei | cabinet = [[Dressler's Cabinet]] | allegiance = {{Unbulleted list|[[German Empire]]|[[Weimar Republic]]}} | branch_label = Branch | branch = {{Tree list}} * [[Imperial German Army]] ** [[Bavarian Army]] * ''[[Reichswehr]]'' {{Tree list/end}} | serviceyears = 1914–1920 | rank = {{lang|de|[[Gefreiter]]}} | unit = 16th Bavarian Reserve Regiment | battles_label = Wars | battles = {{Tree list}} * [[World War I]] ** [[Western Front (World War I)|Western Front]] *** [[First Battle of Ypres]] *** [[Battle of the Somme]] {{WIA}} *** [[Battle of Arras (1917)|Battle of Arras]] *** [[Battle of Passchendaele]] {{Tree list/end}} | mawards = {{Unbulleted list|[[Iron Cross First Class]]|Iron Cross Second Class|[[Wound Badge]]}} }} 30af05def96ada878a3cff3cb4edcd88d4bdfcea Module:Lang/data 828 465 1017 2023-10-01T09:50:22Z Führerredux 2 Created page with "local lang_obj = mw.language.getContentLanguage(); local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag --[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------ primary table of tables that decode: lang -> language tags and names script -> ISO 15924 script tags region -> ISO 3166 region tags variant -> iana registered variant tags suppressed -> map of scripts tags and their assoc..." Scribunto text/plain local lang_obj = mw.language.getContentLanguage(); local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag --[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------ primary table of tables that decode: lang -> language tags and names script -> ISO 15924 script tags region -> ISO 3166 region tags variant -> iana registered variant tags suppressed -> map of scripts tags and their associated language tags all of these data come from separate modules that are derived from the IANA language-subtag-registry file key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches the first name. ]] local function key_to_lower (module, src_type) local out = {}; local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data if 'var_sup' == src_type then for k, v in pairs (source) do out[k:lower()] = v; -- for variant and suppressed everything is needed end elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active) for k, v in pairs (source.active) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated) for k, v in pairs (source.deprecated) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end else -- here for all other sources for k, v in pairs (source) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end end return out; end local lang_name_table_t = { lang = key_to_lower ('Module:Language/data/iana languages', 'lang'), lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'), script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'), suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower } --[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >-------------------------------- For internationalization; not used at en.wiki The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal. Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki language list for the local language. Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all. When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens add an appropriate entry to the override table below. Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply spelling differences: bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym dv: IANA: Dhivehi MW: Divehi el: IANA: Modern Greek MW: Greek ht: IANA: Haitian MW: Haitian Creole ky: IANA: Kirghiz MW: Kyrgyz li: IANA: Limburgan MW: Limburgish or: IANA: Oriya MW: Odia os: IANA: Ossetian MW: Ossetic "pa: IANA: Panjabi MW: Punjabi "ps: IANA: Pushto MW: Pashto "to: IANA: Tonga MW: Tongan "ug: IANA: Uighur MW: Uyghur use the override table to override language names that are incorrect for your project To see the list of names that MediaWiki has for your language, enter this in the Debug colsole: =mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all')) (replacing <tag> with the language tag for your language) Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true. ]] local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki -- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all if true == media_wiki_override_enable then local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list if lang_name_table_t.lang[tag] then -- if the tag is in the main list lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki end end end --[[--------------------------< O V E R R I D E >-------------------------------------------------------------- Language codes and names in this table override the BCP47 names in lang_name_table. indexes in this table shall always be lower case ]] local override = { ------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------ ["ab"] = "Abkhaz", -- to match en.wiki article name ["ca-valencia"] = "Valencian", ["cu"] = "Church Slavonic", -- 2nd IANA name; ["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names ["de-ch"] = "Swiss Standard German", ["en-au"] = "Australian English", ["en-ca"] = "Canadian English", ["en-emodeng"] = "Early Modern English", ["en-gb"] = "British English", ["en-ie"] = "Irish English", ["en-in"] = "Indian English", ["en-nz"] = "New Zealand English", ["en-us"] = "American English", ["en-za"] = "South African English", ["fy"] = "West Frisian", -- Western Frisian ["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title ["nl-be"] = "Flemish", -- match MediaWiki ["oc-provenc"] = "Provençal", ["ps"] = "Pashto", -- Pushto ["pt-br"] = "Brazilian Portuguese", -- match MediaWiki ["tw-asante"] = "Asante Twi", ["ug"] = "Uyghur", -- 2nd IANA name; to match en.wiki article name -- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["av"] = "Avar", -- Avaric ["bo"] = "Standard Tibetan", -- Tibetan ["el"] = "Greek", -- Modern Greek -- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa ["ff"] = "Fula", -- Fulah ["ht"] = "Haitian Creole", -- Haitian ["hz"] = "Otjiherero", -- Herero ["ii"] = "Yi", -- Sichuan Yi ["ki"] = "Gikuyu", -- Kikuyu ["kl"] = "Greenlandic", -- Kalaallisut ["ky"] = "Kyrgyz", -- Kirghiz ["lg"] = "Luganda", -- Ganda ["li"] = "Limburgish", -- Limburgan ["mi"] = "Māori", -- Maori ["na"] = "Nauruan", -- Nauru ["nb"] = "Bokmål", -- Norwegian Bokmål ["nd"] = "Northern Ndebele", -- North Ndebele ["nn"] = "Nynorsk", -- Norwegian Nynorsk ["nr"] = "Southern Ndebele", -- South Ndebele ["ny"] = "Chichewa", -- Nyanja ["oj"] = "Ojibwe", -- Ojibwa ["or"] = "Odia", -- Oriya ["pa"] = "Punjabi", -- Panjabi ["rn"] = "Kirundi", -- Rundi ["sl"] = "Slovene", -- Slovenian ["ss"] = "Swazi", -- Swati ["st"] = "Sotho", -- Southern Sotho ["to"] = "Tongan", -- Tonga --<end do-not-edit except to comment out>-- ------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >---------------------------------------------- ["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash) ["arc"] = "Imperial Aramaic (700-300 BCE)", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 'preferred' name ["art"] = "constructed", -- to match en.wiki article; lowercase for category name ["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title ["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title ["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration; ["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat ["bxr"] = "Russian Buryat", -- Russia Buriat; ["bxu"] = "Chinese Buryat", -- China Buriat; ["byr"] = "Yipma", -- Baruya, Yipma ["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic ["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title ["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash) ["frr"] = "North Frisian", -- Northern Frisian ["frs"] = "East Frisian Low Saxon", -- Eastern Frisian ["gsw-fr"] = "Alsatian", -- match MediaWiki ["haa"] = "Hän", -- Han; to match en.wiki article title ["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash) ["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title ["jam"] = "Jamaican Patois", -- Jamaican Creole English ["lij-mc"] = "Monégasque", -- Ligurian as spoken in Monaco ["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo ["mhr"] = "Meadow Mari", -- Eastern Mari ["mid"] = "Modern Mandaic", -- Mandaic ['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope; ["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash) ["mla"] = "Tamambo", -- Malo ['mte'] = "Mono-Alu", -- Mono (Solomon Islands) ['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope; ["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title ["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title ["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash) ["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title ["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text ["nrf-gg"] = "Guernésiais", -- match MediaWiki ["nrf-je"] = "Jèrriais", -- match MediaWiki ["nzi"] = "Nzema", -- Nzima; to match en.wiki article title ["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash) ["orv"] = "Old East Slavic", -- Old Russian ["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article ["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article ["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title ["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name() ["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article ["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title ["stq"] = "Saterland Frisian", -- Saterfriesisch ["und"] = "undetermined", -- capitalization to match existing category ["wrg"] = "Warrongo", -- Warungu ["xal-ru"] = "Kalmyk", -- to match en.wiki article title ["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño ["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title ["zxx"] = "no linguistic content", -- capitalization -- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["ace"] = "Acehnese", -- Achinese ["aec"] = "Sa'idi Arabic", -- Saidi Arabic ["akl"] = "Aklan", -- Aklanon ["alt"] = "Altay", -- Southern Altai ["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache ["bal"] = "Balochi", -- Baluchi -- ["bcl"] = "Central Bicolano", -- Central Bikol ["bin"] = "Edo", -- Bini ["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya ["chg"] = "Chagatay", -- Chagatai ["ckb"] = "Sorani Kurdish", -- Central Kurdish ["cnu"] = "Shenwa", -- Chenoua ["coc"] = "Cocopah", -- Cocopa ["diq"] = "Zazaki", -- Dimli ["fit"] = "Meänkieli", -- Tornedalen Finnish ["fkv"] = "Kven", -- Kven Finnish ["frk"] = "Old Frankish", -- Frankish ["gez"] = "Ge'ez", -- Geez ["gju"] = "Gujari", -- Gujari ["gsw"] = "Alemannic German", -- Swiss German ["gul"] = "Gullah", -- Sea Island Creole English ["hak"] = "Hakka", -- Hakka Chinese ["hbo"] = "Biblical Hebrew", -- Ancient Hebrew ["hnd"] = "Hindko", -- Southern Hindko -- ["ikt"] = "Inuvialuk", -- Inuinnaqtun ["kaa"] = "Karakalpak", -- Kara-Kalpak ["khb"] = "Tai Lü", -- Lü ["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish ["kpo"] = "Kposo", -- Ikposo ["krj"] = "Kinaray-a", -- Kinaray-A ["ktz"] = "Juǀ'hoan", -- Juǀʼhoan ["lez"] = "Lezgian", -- Lezghian ["liv"] = "Livonian", -- Liv ["lng"] = "Lombardic", -- Langobardic ["mia"] = "Miami-Illinois", -- Miami ["miq"] = "Miskito", -- Mískito ["mix"] = "Mixtec", -- Mixtepec Mixtec ["mni"] = "Meitei", -- Manipuri ["mrj"] = "Hill Mari", -- Western Mari ["mww"] = "White Hmong", -- Hmong Daw ["nds-nl"] = "Dutch Low Saxon", -- Low German -- ["new"] = "Nepal Bhasa", -- Newari ["nso"] = "Northern Sotho", -- Pedi -- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari ["ood"] = "O'odham", -- Tohono O'odham ["otk"] = "Old Turkic", -- Old Turkish ["pal"] = "Middle Persian", -- Pahlavi ["pam"] = "Kapampangan", -- Pampanga ["phr"] = "Potwari", -- Pahari-Potwari ["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit -- ["pnb"] = "Punjabi", -- Western Panjabi ["psu"] = "Shauraseni", -- Sauraseni Prākrit ["rap"] = "Rapa Nui", -- Rapanui ["rar"] = "Cook Islands Māori", -- Rarotongan ["rmu"] = "Scandoromani", -- Tavringer Romani ["rom"] = "Romani", -- Romany ["rup"] = "Aromanian", -- Macedo-Romanian ["ryu"] = "Okinawan", -- Central Okinawan ["sdc"] = "Sassarese", -- Sassarese Sardinian ["sdn"] = "Gallurese", -- Gallurese Sardinian ["shp"] = "Shipibo", -- Shipibo-Conibo ["src"] = "Logudorese", -- Logudorese Sardinian ["sro"] = "Campidanese", -- Campidanese Sardinian ["tkl"] = "Tokelauan", -- Tokelau ["tvl"] = "Tuvaluan", -- Tuvalu ["tyv"] = "Tuvan", -- Tuvinian ["vls"] = "West Flemish", -- Vlaams ["wep"] = "Westphalian", -- Westphalien ["xal"] = "Oirat", -- Kalmyk ["xcl"] = "Old Armenian", -- Classical Armenian ["yua"] = "Yucatec Maya", -- Yucateco --<end do-not-edit except to comment out>-- ------------------------------< P R I V A T E _ U S E _ T A G S >---------------------------------------------- ["akk-x-latbabyl"] = "Late Babylonian", ["akk-x-midassyr"] = "Middle Assyrian Akkadian", ["akk-x-midbabyl"] = "Middle Babylonian Akkadian", ["akk-x-neoassyr"] = "Neo-Assyrian Akkadian", ["akk-x-neobabyl"] = "Neo-Babylonian Akkadian", ["akk-x-old"] = "Old Akkadian", ["akk-x-oldassyr"] = "Old Assyrian Akkadian", ["akk-x-oldbabyl"] = "Old Babylonian Akkadian", ["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages ["ca-x-old"] = "Old Catalan", ["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages ["egy-x-demotic"] = "Demotic Egyptian", ["egy-x-late"] = "Late Egyptian", ["egy-x-middle"] = "Middle Egyptian", ["egy-x-old"] = "Old Egyptian", ["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages ["gmw-x-ecg"] = "East Central German", ["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre ["grc-x-attic"] = "Attic Greek", ["grc-x-biblical"] = "Biblical Greek", ["grc-x-byzant"] = "Byzantine Greek", ["grc-x-classic"] = "Classical Greek", ["grc-x-doric"] = "Doric Greek", ["grc-x-hellen"] = "Hellenistic Greek", ["grc-x-ionic"] = "Ionic Greek", ["grc-x-koine"] = "Koinē Greek", ["grc-x-medieval"] = "Medieval Greek", ["grc-x-patris"] = "Patristic Greek", ["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages ["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages ["ine-x-proto"] = "Proto-Indo-European", ["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages ["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages ["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there ["la-x-medieval"] = "Medieval Latin", ["la-x-new"] = "New Latin", ["lmo-x-milanese"] = "Milanese", -- lmo in IANA is Lombard; Milanese is a dialect ["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages ["prg-x-old"] = "Old Prussian", ["sem-x-ammonite"] = "Ammonite", ["sem-x-aramaic"] = "Aramaic", ["sem-x-canaan"] = "Canaanite languages", ["sem-x-dumaitic"] = "Dumaitic", ["sem-x-egurage"] = "Eastern Gurage", ["sem-x-hatran"] = "Hatran Aramaic", ["sem-x-oldsoara"] = "Old South Arabian", ["sem-x-palmyren"] = "Palmyrene Aramaic", ["sem-x-proto"] = "Proto-Semitic", ["sem-x-taymanit"] = "Taymanitic", ["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages ["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai ["yuf-x-wal"] = "Walapai", ["yuf-x-yav"] = "Yavapai", } --[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------ for those rare occasions when article titles don't fit with the normal '<language name>-language', this table maps language code to article title. Use of this table should be avoided and the use of redirects preferred as that is the long-standing method of handling article names that don't fit with the normal pattern ]] local article_name = { ['kue'] = "Kuman language (New Guinea)", -- Kuman (Papua New Guinea); to avoid Kuman dab page ["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab ['mbo'] = "Mbo language (Cameroon)", -- Mbo (Cameroon) ['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages ['mnr'] = "Mono language (California)", -- Mono (USA) ['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon) ['qwm'] = "Kuman (Russia)", -- Kuman (Russia); to avoid Kuman dab page ["snq"] = "Sangu language (Gabon)", -- Sangu (Gabon) ["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab ["zmw"] = "Mbo language (Congo)", -- Mbo (Democratic Republic of Congo) } --[=[-------------------------< R T L _ S C R I P T S >-------------------------------------------------------- ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]] last update to this list: 2017-12-24 ]=] local rtl_scripts = { 'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr', 'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb', 'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg', 'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole', }; --[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------ This is a table of tables of transliteration standards and the language codes or language scripts that apply to those standards. This table is used to create the tool-tip text associated with the transliterated text displayed by some of the {{lang-??}} templates. These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for the cases when no |std= parameter value is provided. ]] local translit_title_table = { ['ahl'] = { ['default'] = 'Academy of the Hebrew Language transliteration', }, ['ala'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['ala-lc'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['batr'] = { ['default'] = 'Bikdash Arabic Transliteration Rules', }, ['bgn/pcgn'] = { ['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration', }, ['din'] = { ['ar'] = 'DIN 31635 Arabic', ['fa'] = 'DIN 31635 Arabic', ['ku'] = 'DIN 31635 Arabic', ['ps'] = 'DIN 31635 Arabic', ['tg'] = 'DIN 31635 Arabic', ['ug'] = 'DIN 31635 Arabic', ['ur'] = 'DIN 31635 Arabic', ['arab'] = 'DIN 31635 Arabic', ['default'] = 'DIN transliteration', }, ['eae'] = { ['default'] = 'Encyclopaedia Aethiopica transliteration', }, ['hepburn'] = { ['default'] = 'Hepburn transliteration', }, ['hunterian'] = { ['default'] = 'Hunterian transliteration', }, ['iast'] = { ['default'] = 'International Alphabet of Sanskrit transliteration', }, ['iso'] = { -- when a transliteration standard is supplied ['ab'] = 'ISO 9 Cyrillic', ['ba'] = 'ISO 9 Cyrillic', ['be'] = 'ISO 9 Cyrillic', ['bg'] = 'ISO 9 Cyrillic', ['kk'] = 'ISO 9 Cyrillic', ['ky'] = 'ISO 9 Cyrillic', ['mn'] = 'ISO 9 Cyrillic', ['ru'] = 'ISO 9 Cyrillic', ['tg'] = 'ISO 9 Cyrillic', ['uk'] = 'ISO 9 Cyrillic', ['bua'] = 'ISO 9 Cyrillic', ['sah'] = 'ISO 9 Cyrillic', ['tut'] = 'ISO 9 Cyrillic', ['xal'] = 'ISO 9 Cyrillic', ['cyrl'] = 'ISO 9 Cyrillic', ['ar'] = 'ISO 233 Arabic', ['ku'] = 'ISO 233 Arabic', ['ps'] = 'ISO 233 Arabic', ['ug'] = 'ISO 233 Arabic', ['ur'] = 'ISO 233 Arabic', ['arab'] = 'ISO 233 Arabic', ['he'] = 'ISO 259 Hebrew', ['yi'] = 'ISO 259 Hebrew', ['hebr'] = 'ISO 259 Hebrew', ['el'] = 'ISO 843 Greek', ['grc'] = 'ISO 843 Greek', ['ja'] = 'ISO 3602 Japanese', ['hira'] = 'ISO 3602 Japanese', ['hrkt'] = 'ISO 3602 Japanese', ['jpan'] = 'ISO 3602 Japanese', ['kana'] = 'ISO 3602 Japanese', ['zh'] = 'ISO 7098 Chinese', ['chi'] = 'ISO 7098 Chinese', ['pny'] = 'ISO 7098 Chinese', ['zho'] = 'ISO 7098 Chinese', -- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani? ['hans'] = 'ISO 7098 Chinese', ['hant'] = 'ISO 7098 Chinese', ['ka'] = 'ISO 9984 Georgian', ['kat'] = 'ISO 9984 Georgian', ['arm'] = 'ISO 9985 Armenian', ['hy'] = 'ISO 9985 Armenian', ['th'] = 'ISO 11940 Thai', ['tha'] = 'ISO 11940 Thai', ['ko'] = 'ISO 11941 Korean', ['kor'] = 'ISO 11941 Korean', ['awa'] = 'ISO 15919 Indic', ['bho'] = 'ISO 15919 Indic', ['bn'] = 'ISO 15919 Indic', ['bra'] = 'ISO 15919 Indic', ['doi'] = 'ISO 15919 Indic', ['dra'] = 'ISO 15919 Indic', ['gon'] = 'ISO 15919 Indic', ['gu'] = 'ISO 15919 Indic', ['hi'] = 'ISO 15919 Indic', ['hno'] = 'ISO 15919 Indic', ['inc'] = 'ISO 15919 Indic', ['kn'] = 'ISO 15919 Indic', ['kok'] = 'ISO 15919 Indic', ['ks'] = 'ISO 15919 Indic', ['mag'] = 'ISO 15919 Indic', ['mai'] = 'ISO 15919 Indic', ['ml'] = 'ISO 15919 Indic', ['mr'] = 'ISO 15919 Indic', ['ne'] = 'ISO 15919 Indic', ['new'] = 'ISO 15919 Indic', ['or'] = 'ISO 15919 Indic', ['pa'] = 'ISO 15919 Indic', ['pnb'] = 'ISO 15919 Indic', ['raj'] = 'ISO 15919 Indic', ['sa'] = 'ISO 15919 Indic', ['sat'] = 'ISO 15919 Indic', ['sd'] = 'ISO 15919 Indic', ['si'] = 'ISO 15919 Indic', ['skr'] = 'ISO 15919 Indic', ['ta'] = 'ISO 15919 Indic', ['tcy'] = 'ISO 15919 Indic', ['te'] = 'ISO 15919 Indic', ['beng'] = 'ISO 15919 Indic', ['brah'] = 'ISO 15919 Indic', ['deva'] = 'ISO 15919 Indic', ['gujr'] = 'ISO 15919 Indic', ['guru'] = 'ISO 15919 Indic', ['knda'] = 'ISO 15919 Indic', ['mlym'] = 'ISO 15919 Indic', ['orya'] = 'ISO 15919 Indic', ['sinh'] = 'ISO 15919 Indic', ['taml'] = 'ISO 15919 Indic', ['telu'] = 'ISO 15919 Indic', ['default'] = 'ISO transliteration', }, ['jyutping'] = { ['default'] = 'Jyutping transliteration', }, ['mlcts'] = { ['default'] = 'Myanmar Language Commission Transcription System', }, ['mr'] = { ['default'] = 'McCune–Reischauer transliteration', }, ['nihon-shiki'] = { ['default'] = 'Nihon-shiki transliteration', }, ['no_std'] = { -- when no transliteration standard is supplied ['akk'] = 'Semitic transliteration', ['sem'] = 'Semitic transliteration', ['phnx'] = 'Semitic transliteration', ['xsux'] = 'Cuneiform transliteration', }, ['pinyin'] = { ['default'] = 'Pinyin transliteration', }, ['rr'] = { ['default'] = 'Revised Romanization of Korean transliteration', }, ['rtgs'] = { ['default'] = 'Royal Thai General System of Transcription', }, ['satts'] = { ['default'] = 'Standard Arabic Technical Transliteration System transliteration', }, ['scientific'] = { ['default'] = 'scientific transliteration', }, ['ukrainian'] = { ['default'] = 'Ukrainian National system of romanization', }, ['ungegn'] = { ['default'] = 'United Nations Group of Experts on Geographical Names transliteration', }, ['wadegile'] = { ['default'] = 'Wade–Giles transliteration', }, ['wehr'] = { ['default'] = 'Hans Wehr transliteration', }, }; return { this_wiki_lang_tag = this_wiki_lang_tag, this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction article_name = article_name, lang_name_table = lang_name_table_t, override = override, rtl_scripts = rtl_scripts, special_tags_table = special_tags_table, translit_title_table = translit_title_table, }; 44981b3b66900e816590946e3e049c421ebecc80 Module:Lang/data/doc 828 466 1018 2023-10-01T09:50:42Z Führerredux 2 Created page with "{{High-use}} {{Lua|Module:Language/data/iana languages|Module:Language/data/iana scripts|Module:Language/data/iana regions|Module:Language/data/iana variants|Module:Language/data/iana suppressed scripts}} This module holds various support tables used by [[Module:Lang]] * <code>lang_name_table</code> – this table provides language name data used in the creation of categories and, for the {{tld|lang-??}} templates, the language name annotation * <code>override</code>..." wikitext text/x-wiki {{High-use}} {{Lua|Module:Language/data/iana languages|Module:Language/data/iana scripts|Module:Language/data/iana regions|Module:Language/data/iana variants|Module:Language/data/iana suppressed scripts}} This module holds various support tables used by [[Module:Lang]] * <code>lang_name_table</code> – this table provides language name data used in the creation of categories and, for the {{tld|lang-??}} templates, the language name annotation * <code>override</code> – this table overrides data in <code>lang_name_table</code>; commonly used when an en.wiki article title differs from the name for the standard's language * <code>rtl_scripts</code> – a list of ISO 15924 scripts that are written right-to-left; data taken from the table at [[ISO 15924#List of codes]] * <code>translit_title_table</code> – a table of tables that is used in the creation of the <code>title=</code> attribute of the {{tag|i}} tags that wrap transliterated text; data adapted from {{tlx|transl}} * <code>article_name</code> – this table overrides <code>lang_name_table</code> and <code>override</code> for (typically) disambiguated en.wiki article names <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Language-related modules]] }}</includeonly> 9cb8bc52153d53723d14da46dfed95b6176460ff Module:Lua banner/doc 828 467 1019 2023-10-01T09:51:39Z Führerredux 2 Created page with "{{high use}} {{Lua|Module:Yesno|Module:List|Module:TableTools|Module:Message box}} This module implements the {{tl|lua}} template. == Usage from wikitext == This module cannot be used directly from wikitext. It can only be used through the {{tl|lua}} template. Please see the template page for documentation. == Usage from Lua modules == To use this module from other Lua modules, first load the module. <syntaxhighlight lang="lua"> local mLuaBanner = require('Module:Lu..." wikitext text/x-wiki {{high use}} {{Lua|Module:Yesno|Module:List|Module:TableTools|Module:Message box}} This module implements the {{tl|lua}} template. == Usage from wikitext == This module cannot be used directly from wikitext. It can only be used through the {{tl|lua}} template. Please see the template page for documentation. == Usage from Lua modules == To use this module from other Lua modules, first load the module. <syntaxhighlight lang="lua"> local mLuaBanner = require('Module:Lua banner') </syntaxhighlight> You can then generate a side box using the _main function. <syntaxhighlight lang="lua"> mLuaBanner._main(args) </syntaxhighlight> The <var>args</var> variable should be a table containing the arguments to pass to the module. To see the different arguments that can be specified and how they affect the module output, please refer to the {{tl|lua}} template documentation. == Tracking category == * {{clc|Lua templates with errors}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories go here and interwikis go in Wikidata. --> [[Category:Modules that add a tracking category]] }}</includeonly> 864df985eac89c7dc7d6168d9235ff11b9f13b47 Module:Language/data/iana languages 828 468 1020 2023-10-01T09:54:04Z Führerredux 2 Created page with "-- File-Date: 2023-08-02 local active = { ["aa"] = {"Afar"}, ["ab"] = {"Abkhazian"}, ["ae"] = {"Avestan"}, ["af"] = {"Afrikaans"}, ["ak"] = {"Akan"}, ["am"] = {"Amharic"}, ["an"] = {"Aragonese"}, ["ar"] = {"Arabic"}, ["as"] = {"Assamese"}, ["av"] = {"Avaric"}, ["ay"] = {"Aymara"}, ["az"] = {"Azerbaijani"}, ["ba"] = {"Bashkir"}, ["be"] = {"Belarusian"}, ["bg"] = {"Bulgarian"}, ["bh"] = {"Bihari languages"}, ["bi"] = {"Bislama"}, ["bm"] = {"Bambara"}, ["..." Scribunto text/plain -- File-Date: 2023-08-02 local active = { ["aa"] = {"Afar"}, ["ab"] = {"Abkhazian"}, ["ae"] = {"Avestan"}, ["af"] = {"Afrikaans"}, ["ak"] = {"Akan"}, ["am"] = {"Amharic"}, ["an"] = {"Aragonese"}, ["ar"] = {"Arabic"}, ["as"] = {"Assamese"}, ["av"] = {"Avaric"}, ["ay"] = {"Aymara"}, ["az"] = {"Azerbaijani"}, ["ba"] = {"Bashkir"}, ["be"] = {"Belarusian"}, ["bg"] = {"Bulgarian"}, ["bh"] = {"Bihari languages"}, ["bi"] = {"Bislama"}, ["bm"] = {"Bambara"}, ["bn"] = {"Bengali", "Bangla"}, ["bo"] = {"Tibetan"}, ["br"] = {"Breton"}, ["bs"] = {"Bosnian"}, ["ca"] = {"Catalan", "Valencian"}, ["ce"] = {"Chechen"}, ["ch"] = {"Chamorro"}, ["co"] = {"Corsican"}, ["cr"] = {"Cree"}, ["cs"] = {"Czech"}, ["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"}, ["cv"] = {"Chuvash"}, ["cy"] = {"Welsh"}, ["da"] = {"Danish"}, ["de"] = {"German"}, ["dv"] = {"Dhivehi", "Divehi", "Maldivian"}, ["dz"] = {"Dzongkha"}, ["ee"] = {"Ewe"}, ["el"] = {"Modern Greek (1453-)"}, ["en"] = {"English"}, ["eo"] = {"Esperanto"}, ["es"] = {"Spanish", "Castilian"}, ["et"] = {"Estonian"}, ["eu"] = {"Basque"}, ["fa"] = {"Persian"}, ["ff"] = {"Fulah"}, ["fi"] = {"Finnish"}, ["fj"] = {"Fijian"}, ["fo"] = {"Faroese"}, ["fr"] = {"French"}, ["fy"] = {"Western Frisian"}, ["ga"] = {"Irish"}, ["gd"] = {"Scottish Gaelic", "Gaelic"}, ["gl"] = {"Galician"}, ["gn"] = {"Guarani"}, ["gu"] = {"Gujarati"}, ["gv"] = {"Manx"}, ["ha"] = {"Hausa"}, ["he"] = {"Hebrew"}, ["hi"] = {"Hindi"}, ["ho"] = {"Hiri Motu"}, ["hr"] = {"Croatian"}, ["ht"] = {"Haitian", "Haitian Creole"}, ["hu"] = {"Hungarian"}, ["hy"] = {"Armenian"}, ["hz"] = {"Herero"}, ["ia"] = {"Interlingua (International Auxiliary Language Association)"}, ["id"] = {"Indonesian"}, ["ie"] = {"Interlingue", "Occidental"}, ["ig"] = {"Igbo"}, ["ii"] = {"Sichuan Yi", "Nuosu"}, ["ik"] = {"Inupiaq"}, ["io"] = {"Ido"}, ["is"] = {"Icelandic"}, ["it"] = {"Italian"}, ["iu"] = {"Inuktitut"}, ["ja"] = {"Japanese"}, ["jv"] = {"Javanese"}, ["ka"] = {"Georgian"}, ["kg"] = {"Kongo"}, ["ki"] = {"Kikuyu", "Gikuyu"}, ["kj"] = {"Kuanyama", "Kwanyama"}, ["kk"] = {"Kazakh"}, ["kl"] = {"Kalaallisut", "Greenlandic"}, ["km"] = {"Khmer", "Central Khmer"}, ["kn"] = {"Kannada"}, ["ko"] = {"Korean"}, ["kr"] = {"Kanuri"}, ["ks"] = {"Kashmiri"}, ["ku"] = {"Kurdish"}, ["kv"] = {"Komi"}, ["kw"] = {"Cornish"}, ["ky"] = {"Kirghiz", "Kyrgyz"}, ["la"] = {"Latin"}, ["lb"] = {"Luxembourgish", "Letzeburgesch"}, ["lg"] = {"Ganda", "Luganda"}, ["li"] = {"Limburgan", "Limburger", "Limburgish"}, ["ln"] = {"Lingala"}, ["lo"] = {"Lao"}, ["lt"] = {"Lithuanian"}, ["lu"] = {"Luba-Katanga"}, ["lv"] = {"Latvian"}, ["mg"] = {"Malagasy"}, ["mh"] = {"Marshallese"}, ["mi"] = {"Maori"}, ["mk"] = {"Macedonian"}, ["ml"] = {"Malayalam"}, ["mn"] = {"Mongolian"}, ["mr"] = {"Marathi"}, ["ms"] = {"Malay (macrolanguage)"}, ["mt"] = {"Maltese"}, ["my"] = {"Burmese"}, ["na"] = {"Nauru"}, ["nb"] = {"Norwegian Bokmål"}, ["nd"] = {"North Ndebele"}, ["ne"] = {"Nepali (macrolanguage)"}, ["ng"] = {"Ndonga"}, ["nl"] = {"Dutch", "Flemish"}, ["nn"] = {"Norwegian Nynorsk"}, ["no"] = {"Norwegian"}, ["nr"] = {"South Ndebele"}, ["nv"] = {"Navajo", "Navaho"}, ["ny"] = {"Nyanja", "Chewa", "Chichewa"}, ["oc"] = {"Occitan (post 1500)"}, ["oj"] = {"Ojibwa"}, ["om"] = {"Oromo"}, ["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"}, ["os"] = {"Ossetian", "Ossetic"}, ["pa"] = {"Panjabi", "Punjabi"}, ["pi"] = {"Pali"}, ["pl"] = {"Polish"}, ["ps"] = {"Pushto", "Pashto"}, ["pt"] = {"Portuguese"}, ["qu"] = {"Quechua"}, ["rm"] = {"Romansh"}, ["rn"] = {"Rundi"}, ["ro"] = {"Romanian", "Moldavian", "Moldovan"}, ["ru"] = {"Russian"}, ["rw"] = {"Kinyarwanda"}, ["sa"] = {"Sanskrit"}, ["sc"] = {"Sardinian"}, ["sd"] = {"Sindhi"}, ["se"] = {"Northern Sami"}, ["sg"] = {"Sango"}, ["sh"] = {"Serbo-Croatian"}, ["si"] = {"Sinhala", "Sinhalese"}, ["sk"] = {"Slovak"}, ["sl"] = {"Slovenian"}, ["sm"] = {"Samoan"}, ["sn"] = {"Shona"}, ["so"] = {"Somali"}, ["sq"] = {"Albanian"}, ["sr"] = {"Serbian"}, ["ss"] = {"Swati"}, ["st"] = {"Southern Sotho"}, ["su"] = {"Sundanese"}, ["sv"] = {"Swedish"}, ["sw"] = {"Swahili (macrolanguage)"}, ["ta"] = {"Tamil"}, ["te"] = {"Telugu"}, ["tg"] = {"Tajik"}, ["th"] = {"Thai"}, ["ti"] = {"Tigrinya"}, ["tk"] = {"Turkmen"}, ["tl"] = {"Tagalog"}, ["tn"] = {"Tswana"}, ["to"] = {"Tonga (Tonga Islands)"}, ["tr"] = {"Turkish"}, ["ts"] = {"Tsonga"}, ["tt"] = {"Tatar"}, ["tw"] = {"Twi"}, ["ty"] = {"Tahitian"}, ["ug"] = {"Uighur", "Uyghur"}, ["uk"] = {"Ukrainian"}, ["ur"] = {"Urdu"}, ["uz"] = {"Uzbek"}, ["ve"] = {"Venda"}, ["vi"] = {"Vietnamese"}, ["vo"] = {"Volapük"}, ["wa"] = {"Walloon"}, ["wo"] = {"Wolof"}, ["xh"] = {"Xhosa"}, ["yi"] = {"Yiddish"}, ["yo"] = {"Yoruba"}, ["za"] = {"Zhuang", "Chuang"}, ["zh"] = {"Chinese"}, ["zu"] = {"Zulu"}, ["aaa"] = {"Ghotuo"}, ["aab"] = {"Alumu-Tesu"}, ["aac"] = {"Ari"}, ["aad"] = {"Amal"}, ["aae"] = {"Arbëreshë Albanian"}, ["aaf"] = {"Aranadan"}, ["aag"] = {"Ambrak"}, ["aah"] = {"Abu' Arapesh"}, ["aai"] = {"Arifama-Miniafia"}, ["aak"] = {"Ankave"}, ["aal"] = {"Afade"}, ["aan"] = {"Anambé"}, ["aao"] = {"Algerian Saharan Arabic"}, ["aap"] = {"Pará Arára"}, ["aaq"] = {"Eastern Abnaki"}, ["aas"] = {"Aasáx"}, ["aat"] = {"Arvanitika Albanian"}, ["aau"] = {"Abau"}, ["aav"] = {"Austro-Asiatic languages"}, ["aaw"] = {"Solong"}, ["aax"] = {"Mandobo Atas"}, ["aaz"] = {"Amarasi"}, ["aba"] = {"Abé"}, ["abb"] = {"Bankon"}, ["abc"] = {"Ambala Ayta"}, ["abd"] = {"Manide"}, ["abe"] = {"Western Abnaki"}, ["abf"] = {"Abai Sungai"}, ["abg"] = {"Abaga"}, ["abh"] = {"Tajiki Arabic"}, ["abi"] = {"Abidji"}, ["abj"] = {"Aka-Bea"}, ["abl"] = {"Lampung Nyo"}, ["abm"] = {"Abanyom"}, ["abn"] = {"Abua"}, ["abo"] = {"Abon"}, ["abp"] = {"Abellen Ayta"}, ["abq"] = {"Abaza"}, ["abr"] = {"Abron"}, ["abs"] = {"Ambonese Malay"}, ["abt"] = {"Ambulas"}, ["abu"] = {"Abure"}, ["abv"] = {"Baharna Arabic"}, ["abw"] = {"Pal"}, ["abx"] = {"Inabaknon"}, ["aby"] = {"Aneme Wake"}, ["abz"] = {"Abui"}, ["aca"] = {"Achagua"}, ["acb"] = {"Áncá"}, ["acd"] = {"Gikyode"}, ["ace"] = {"Achinese"}, ["acf"] = {"Saint Lucian Creole French"}, ["ach"] = {"Acoli"}, ["aci"] = {"Aka-Cari"}, ["ack"] = {"Aka-Kora"}, ["acl"] = {"Akar-Bale"}, ["acm"] = {"Mesopotamian Arabic"}, ["acn"] = {"Achang"}, ["acp"] = {"Eastern Acipa"}, ["acq"] = {"Ta'izzi-Adeni Arabic"}, ["acr"] = {"Achi"}, ["acs"] = {"Acroá"}, ["act"] = {"Achterhoeks"}, ["acu"] = {"Achuar-Shiwiar"}, ["acv"] = {"Achumawi"}, ["acw"] = {"Hijazi Arabic"}, ["acx"] = {"Omani Arabic"}, ["acy"] = {"Cypriot Arabic"}, ["acz"] = {"Acheron"}, ["ada"] = {"Adangme"}, ["adb"] = {"Atauran"}, ["add"] = {"Lidzonka", "Dzodinka"}, ["ade"] = {"Adele"}, ["adf"] = {"Dhofari Arabic"}, ["adg"] = {"Andegerebinha"}, ["adh"] = {"Adhola"}, ["adi"] = {"Adi"}, ["adj"] = {"Adioukrou"}, ["adl"] = {"Galo"}, ["adn"] = {"Adang"}, ["ado"] = {"Abu"}, ["adq"] = {"Adangbe"}, ["adr"] = {"Adonara"}, ["ads"] = {"Adamorobe Sign Language"}, ["adt"] = {"Adnyamathanha"}, ["adu"] = {"Aduge"}, ["adw"] = {"Amundava"}, ["adx"] = {"Amdo Tibetan"}, ["ady"] = {"Adyghe", "Adygei"}, ["adz"] = {"Adzera"}, ["aea"] = {"Areba"}, ["aeb"] = {"Tunisian Arabic"}, ["aec"] = {"Saidi Arabic"}, ["aed"] = {"Argentine Sign Language"}, ["aee"] = {"Northeast Pashai", "Northeast Pashayi"}, ["aek"] = {"Haeke"}, ["ael"] = {"Ambele"}, ["aem"] = {"Arem"}, ["aen"] = {"Armenian Sign Language"}, ["aeq"] = {"Aer"}, ["aer"] = {"Eastern Arrernte"}, ["aes"] = {"Alsea"}, ["aeu"] = {"Akeu"}, ["aew"] = {"Ambakich"}, ["aey"] = {"Amele"}, ["aez"] = {"Aeka"}, ["afa"] = {"Afro-Asiatic languages"}, ["afb"] = {"Gulf Arabic"}, ["afd"] = {"Andai"}, ["afe"] = {"Putukwam"}, ["afg"] = {"Afghan Sign Language"}, ["afh"] = {"Afrihili"}, ["afi"] = {"Akrukay", "Chini"}, ["afk"] = {"Nanubae"}, ["afn"] = {"Defaka"}, ["afo"] = {"Eloyi"}, ["afp"] = {"Tapei"}, ["afs"] = {"Afro-Seminole Creole"}, ["aft"] = {"Afitti"}, ["afu"] = {"Awutu"}, ["afz"] = {"Obokuitai"}, ["aga"] = {"Aguano"}, ["agb"] = {"Legbo"}, ["agc"] = {"Agatu"}, ["agd"] = {"Agarabi"}, ["age"] = {"Angal"}, ["agf"] = {"Arguni"}, ["agg"] = {"Angor"}, ["agh"] = {"Ngelima"}, ["agi"] = {"Agariya"}, ["agj"] = {"Argobba"}, ["agk"] = {"Isarog Agta"}, ["agl"] = {"Fembe"}, ["agm"] = {"Angaataha"}, ["agn"] = {"Agutaynen"}, ["ago"] = {"Tainae"}, ["agq"] = {"Aghem"}, ["agr"] = {"Aguaruna"}, ["ags"] = {"Esimbi"}, ["agt"] = {"Central Cagayan Agta"}, ["agu"] = {"Aguacateco"}, ["agv"] = {"Remontado Dumagat"}, ["agw"] = {"Kahua"}, ["agx"] = {"Aghul"}, ["agy"] = {"Southern Alta"}, ["agz"] = {"Mt. Iriga Agta"}, ["aha"] = {"Ahanta"}, ["ahb"] = {"Axamb"}, ["ahg"] = {"Qimant"}, ["ahh"] = {"Aghu"}, ["ahi"] = {"Tiagbamrin Aizi"}, ["ahk"] = {"Akha"}, ["ahl"] = {"Igo"}, ["ahm"] = {"Mobumrin Aizi"}, ["ahn"] = {"Àhàn"}, ["aho"] = {"Ahom"}, ["ahp"] = {"Aproumu Aizi"}, ["ahr"] = {"Ahirani"}, ["ahs"] = {"Ashe"}, ["aht"] = {"Ahtena"}, ["aia"] = {"Arosi"}, ["aib"] = {"Ainu (China)"}, ["aic"] = {"Ainbai"}, ["aid"] = {"Alngith"}, ["aie"] = {"Amara"}, ["aif"] = {"Agi"}, ["aig"] = {"Antigua and Barbuda Creole English"}, ["aih"] = {"Ai-Cham"}, ["aii"] = {"Assyrian Neo-Aramaic"}, ["aij"] = {"Lishanid Noshan"}, ["aik"] = {"Ake"}, ["ail"] = {"Aimele"}, ["aim"] = {"Aimol"}, ["ain"] = {"Ainu (Japan)"}, ["aio"] = {"Aiton"}, ["aip"] = {"Burumakok"}, ["aiq"] = {"Aimaq"}, ["air"] = {"Airoran"}, ["ait"] = {"Arikem"}, ["aiw"] = {"Aari"}, ["aix"] = {"Aighon"}, ["aiy"] = {"Ali"}, ["aja"] = {"Aja (South Sudan)"}, ["ajg"] = {"Aja (Benin)"}, ["aji"] = {"Ajië"}, ["ajn"] = {"Andajin"}, ["ajs"] = {"Algerian Jewish Sign Language"}, ["aju"] = {"Judeo-Moroccan Arabic"}, ["ajw"] = {"Ajawa"}, ["ajz"] = {"Amri Karbi"}, ["akb"] = {"Batak Angkola"}, ["akc"] = {"Mpur"}, ["akd"] = {"Ukpet-Ehom"}, ["ake"] = {"Akawaio"}, ["akf"] = {"Akpa"}, ["akg"] = {"Anakalangu"}, ["akh"] = {"Angal Heneng"}, ["aki"] = {"Aiome"}, ["akj"] = {"Aka-Jeru"}, ["akk"] = {"Akkadian"}, ["akl"] = {"Aklanon"}, ["akm"] = {"Aka-Bo"}, ["ako"] = {"Akurio"}, ["akp"] = {"Siwu"}, ["akq"] = {"Ak"}, ["akr"] = {"Araki"}, ["aks"] = {"Akaselem"}, ["akt"] = {"Akolet"}, ["aku"] = {"Akum"}, ["akv"] = {"Akhvakh"}, ["akw"] = {"Akwa"}, ["akx"] = {"Aka-Kede"}, ["aky"] = {"Aka-Kol"}, ["akz"] = {"Alabama"}, ["ala"] = {"Alago"}, ["alc"] = {"Qawasqar"}, ["ald"] = {"Alladian"}, ["ale"] = {"Aleut"}, ["alf"] = {"Alege"}, ["alg"] = {"Algonquian languages"}, ["alh"] = {"Alawa"}, ["ali"] = {"Amaimon"}, ["alj"] = {"Alangan"}, ["alk"] = {"Alak"}, ["all"] = {"Allar"}, ["alm"] = {"Amblong"}, ["aln"] = {"Gheg Albanian"}, ["alo"] = {"Larike-Wakasihu"}, ["alp"] = {"Alune"}, ["alq"] = {"Algonquin"}, ["alr"] = {"Alutor"}, ["als"] = {"Tosk Albanian"}, ["alt"] = {"Southern Altai"}, ["alu"] = {"'Are'are"}, ["alv"] = {"Atlantic-Congo languages"}, ["alw"] = {"Alaba-K’abeena", "Wanbasana"}, ["alx"] = {"Amol"}, ["aly"] = {"Alyawarr"}, ["alz"] = {"Alur"}, ["ama"] = {"Amanayé"}, ["amb"] = {"Ambo"}, ["amc"] = {"Amahuaca"}, ["ame"] = {"Yanesha'"}, ["amf"] = {"Hamer-Banna"}, ["amg"] = {"Amurdak"}, ["ami"] = {"Amis"}, ["amj"] = {"Amdang"}, ["amk"] = {"Ambai"}, ["aml"] = {"War-Jaintia"}, ["amm"] = {"Ama (Papua New Guinea)"}, ["amn"] = {"Amanab"}, ["amo"] = {"Amo"}, ["amp"] = {"Alamblak"}, ["amq"] = {"Amahai"}, ["amr"] = {"Amarakaeri"}, ["ams"] = {"Southern Amami-Oshima"}, ["amt"] = {"Amto"}, ["amu"] = {"Guerrero Amuzgo"}, ["amv"] = {"Ambelau"}, ["amw"] = {"Western Neo-Aramaic"}, ["amx"] = {"Anmatyerre"}, ["amy"] = {"Ami"}, ["amz"] = {"Atampaya"}, ["ana"] = {"Andaqui"}, ["anb"] = {"Andoa"}, ["anc"] = {"Ngas"}, ["and"] = {"Ansus"}, ["ane"] = {"Xârâcùù"}, ["anf"] = {"Animere"}, ["ang"] = {"Old English (ca. 450-1100)"}, ["anh"] = {"Nend"}, ["ani"] = {"Andi"}, ["anj"] = {"Anor"}, ["ank"] = {"Goemai"}, ["anl"] = {"Anu-Hkongso Chin"}, ["anm"] = {"Anal"}, ["ann"] = {"Obolo"}, ["ano"] = {"Andoque"}, ["anp"] = {"Angika"}, ["anq"] = {"Jarawa (India)"}, ["anr"] = {"Andh"}, ["ans"] = {"Anserma"}, ["ant"] = {"Antakarinya", "Antikarinya"}, ["anu"] = {"Anuak"}, ["anv"] = {"Denya"}, ["anw"] = {"Anaang"}, ["anx"] = {"Andra-Hus"}, ["any"] = {"Anyin"}, ["anz"] = {"Anem"}, ["aoa"] = {"Angolar"}, ["aob"] = {"Abom"}, ["aoc"] = {"Pemon"}, ["aod"] = {"Andarum"}, ["aoe"] = {"Angal Enen"}, ["aof"] = {"Bragat"}, ["aog"] = {"Angoram"}, ["aoi"] = {"Anindilyakwa"}, ["aoj"] = {"Mufian"}, ["aok"] = {"Arhö"}, ["aol"] = {"Alor"}, ["aom"] = {"Ömie"}, ["aon"] = {"Bumbita Arapesh"}, ["aor"] = {"Aore"}, ["aos"] = {"Taikat"}, ["aot"] = {"Atong (India)", "A'tong"}, ["aou"] = {"A'ou"}, ["aox"] = {"Atorada"}, ["aoz"] = {"Uab Meto"}, ["apa"] = {"Apache languages"}, ["apb"] = {"Sa'a"}, ["apc"] = {"Levantine Arabic"}, ["apd"] = {"Sudanese Arabic"}, ["ape"] = {"Bukiyip"}, ["apf"] = {"Pahanan Agta"}, ["apg"] = {"Ampanang"}, ["aph"] = {"Athpariya"}, ["api"] = {"Apiaká"}, ["apj"] = {"Jicarilla Apache"}, ["apk"] = {"Kiowa Apache"}, ["apl"] = {"Lipan Apache"}, ["apm"] = {"Mescalero-Chiricahua Apache"}, ["apn"] = {"Apinayé"}, ["apo"] = {"Ambul"}, ["app"] = {"Apma"}, ["apq"] = {"A-Pucikwar"}, ["apr"] = {"Arop-Lokep"}, ["aps"] = {"Arop-Sissano"}, ["apt"] = {"Apatani"}, ["apu"] = {"Apurinã"}, ["apv"] = {"Alapmunte"}, ["apw"] = {"Western Apache"}, ["apx"] = {"Aputai"}, ["apy"] = {"Apalaí"}, ["apz"] = {"Safeyoka"}, ["aqa"] = {"Alacalufan languages"}, ["aqc"] = {"Archi"}, ["aqd"] = {"Ampari Dogon"}, ["aqg"] = {"Arigidi"}, ["aqk"] = {"Aninka"}, ["aql"] = {"Algic languages"}, ["aqm"] = {"Atohwaim"}, ["aqn"] = {"Northern Alta"}, ["aqp"] = {"Atakapa"}, ["aqr"] = {"Arhâ"}, ["aqt"] = {"Angaité"}, ["aqz"] = {"Akuntsu"}, ["arb"] = {"Standard Arabic"}, ["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"}, ["ard"] = {"Arabana"}, ["are"] = {"Western Arrarnta"}, ["arh"] = {"Arhuaco"}, ["ari"] = {"Arikara"}, ["arj"] = {"Arapaso"}, ["ark"] = {"Arikapú"}, ["arl"] = {"Arabela"}, ["arn"] = {"Mapudungun", "Mapuche"}, ["aro"] = {"Araona"}, ["arp"] = {"Arapaho"}, ["arq"] = {"Algerian Arabic"}, ["arr"] = {"Karo (Brazil)"}, ["ars"] = {"Najdi Arabic"}, ["art"] = {"Artificial languages"}, ["aru"] = {"Aruá (Amazonas State)", "Arawá"}, ["arv"] = {"Arbore"}, ["arw"] = {"Arawak"}, ["arx"] = {"Aruá (Rodonia State)"}, ["ary"] = {"Moroccan Arabic"}, ["arz"] = {"Egyptian Arabic"}, ["asa"] = {"Asu (Tanzania)"}, ["asb"] = {"Assiniboine"}, ["asc"] = {"Casuarina Coast Asmat"}, ["ase"] = {"American Sign Language"}, ["asf"] = {"Auslan", "Australian Sign Language"}, ["asg"] = {"Cishingini"}, ["ash"] = {"Abishira"}, ["asi"] = {"Buruwai"}, ["asj"] = {"Sari"}, ["ask"] = {"Ashkun"}, ["asl"] = {"Asilulu"}, ["asn"] = {"Xingú Asuriní"}, ["aso"] = {"Dano"}, ["asp"] = {"Algerian Sign Language"}, ["asq"] = {"Austrian Sign Language"}, ["asr"] = {"Asuri"}, ["ass"] = {"Ipulo"}, ["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"}, ["asu"] = {"Tocantins Asurini"}, ["asv"] = {"Asoa"}, ["asw"] = {"Australian Aborigines Sign Language"}, ["asx"] = {"Muratayak"}, ["asy"] = {"Yaosakor Asmat"}, ["asz"] = {"As"}, ["ata"] = {"Pele-Ata"}, ["atb"] = {"Zaiwa"}, ["atc"] = {"Atsahuaca"}, ["atd"] = {"Ata Manobo"}, ["ate"] = {"Atemble"}, ["atg"] = {"Ivbie North-Okpela-Arhe"}, ["ath"] = {"Athapascan languages"}, ["ati"] = {"Attié"}, ["atj"] = {"Atikamekw"}, ["atk"] = {"Ati"}, ["atl"] = {"Mt. Iraya Agta"}, ["atm"] = {"Ata"}, ["atn"] = {"Ashtiani"}, ["ato"] = {"Atong (Cameroon)"}, ["atp"] = {"Pudtol Atta"}, ["atq"] = {"Aralle-Tabulahan"}, ["atr"] = {"Waimiri-Atroari"}, ["ats"] = {"Gros Ventre"}, ["att"] = {"Pamplona Atta"}, ["atu"] = {"Reel"}, ["atv"] = {"Northern Altai"}, ["atw"] = {"Atsugewi"}, ["atx"] = {"Arutani"}, ["aty"] = {"Aneityum"}, ["atz"] = {"Arta"}, ["aua"] = {"Asumboa"}, ["aub"] = {"Alugu"}, ["auc"] = {"Waorani"}, ["aud"] = {"Anuta"}, ["auf"] = {"Arauan languages"}, ["aug"] = {"Aguna"}, ["auh"] = {"Aushi"}, ["aui"] = {"Anuki"}, ["auj"] = {"Awjilah"}, ["auk"] = {"Heyo"}, ["aul"] = {"Aulua"}, ["aum"] = {"Asu (Nigeria)"}, ["aun"] = {"Molmo One"}, ["auo"] = {"Auyokawa"}, ["aup"] = {"Makayam"}, ["auq"] = {"Anus", "Korur"}, ["aur"] = {"Aruek"}, ["aus"] = {"Australian languages"}, ["aut"] = {"Austral"}, ["auu"] = {"Auye"}, ["auw"] = {"Awyi"}, ["aux"] = {"Aurá"}, ["auy"] = {"Awiyaana"}, ["auz"] = {"Uzbeki Arabic"}, ["avb"] = {"Avau"}, ["avd"] = {"Alviri-Vidari"}, ["avi"] = {"Avikam"}, ["avk"] = {"Kotava"}, ["avl"] = {"Eastern Egyptian Bedawi Arabic"}, ["avm"] = {"Angkamuthi"}, ["avn"] = {"Avatime"}, ["avo"] = {"Agavotaguerra"}, ["avs"] = {"Aushiri"}, ["avt"] = {"Au"}, ["avu"] = {"Avokaya"}, ["avv"] = {"Avá-Canoeiro"}, ["awa"] = {"Awadhi"}, ["awb"] = {"Awa (Papua New Guinea)"}, ["awc"] = {"Cicipu"}, ["awd"] = {"Arawakan languages"}, ["awe"] = {"Awetí"}, ["awg"] = {"Anguthimri"}, ["awh"] = {"Awbono"}, ["awi"] = {"Aekyom"}, ["awk"] = {"Awabakal"}, ["awm"] = {"Arawum"}, ["awn"] = {"Awngi"}, ["awo"] = {"Awak"}, ["awr"] = {"Awera"}, ["aws"] = {"South Awyu"}, ["awt"] = {"Araweté"}, ["awu"] = {"Central Awyu"}, ["awv"] = {"Jair Awyu"}, ["aww"] = {"Awun"}, ["awx"] = {"Awara"}, ["awy"] = {"Edera Awyu"}, ["axb"] = {"Abipon"}, ["axe"] = {"Ayerrerenge"}, ["axg"] = {"Mato Grosso Arára"}, ["axk"] = {"Yaka (Central African Republic)"}, ["axl"] = {"Lower Southern Aranda"}, ["axm"] = {"Middle Armenian"}, ["axx"] = {"Xârâgurè"}, ["aya"] = {"Awar"}, ["ayb"] = {"Ayizo Gbe"}, ["ayc"] = {"Southern Aymara"}, ["ayd"] = {"Ayabadhu"}, ["aye"] = {"Ayere"}, ["ayg"] = {"Ginyanga"}, ["ayh"] = {"Hadrami Arabic"}, ["ayi"] = {"Leyigha"}, ["ayk"] = {"Akuku"}, ["ayl"] = {"Libyan Arabic"}, ["ayn"] = {"Sanaani Arabic"}, ["ayo"] = {"Ayoreo"}, ["ayp"] = {"North Mesopotamian Arabic"}, ["ayq"] = {"Ayi (Papua New Guinea)"}, ["ayr"] = {"Central Aymara"}, ["ays"] = {"Sorsogon Ayta"}, ["ayt"] = {"Magbukun Ayta"}, ["ayu"] = {"Ayu"}, ["ayz"] = {"Mai Brat"}, ["aza"] = {"Azha"}, ["azb"] = {"South Azerbaijani"}, ["azc"] = {"Uto-Aztecan languages"}, ["azd"] = {"Eastern Durango Nahuatl"}, ["azg"] = {"San Pedro Amuzgos Amuzgo"}, ["azj"] = {"North Azerbaijani"}, ["azm"] = {"Ipalapa Amuzgo"}, ["azn"] = {"Western Durango Nahuatl"}, ["azo"] = {"Awing"}, ["azt"] = {"Faire Atta"}, ["azz"] = {"Highland Puebla Nahuatl"}, ["baa"] = {"Babatana"}, ["bab"] = {"Bainouk-Gunyuño"}, ["bac"] = {"Badui"}, ["bad"] = {"Banda languages"}, ["bae"] = {"Baré"}, ["baf"] = {"Nubaca"}, ["bag"] = {"Tuki"}, ["bah"] = {"Bahamas Creole English"}, ["bai"] = {"Bamileke languages"}, ["baj"] = {"Barakai"}, ["bal"] = {"Baluchi"}, ["ban"] = {"Balinese"}, ["bao"] = {"Waimaha"}, ["bap"] = {"Bantawa"}, ["bar"] = {"Bavarian"}, ["bas"] = {"Basa (Cameroon)"}, ["bat"] = {"Baltic languages"}, ["bau"] = {"Bada (Nigeria)"}, ["bav"] = {"Vengo"}, ["baw"] = {"Bambili-Bambui"}, ["bax"] = {"Bamun"}, ["bay"] = {"Batuley"}, ["bba"] = {"Baatonum"}, ["bbb"] = {"Barai"}, ["bbc"] = {"Batak Toba"}, ["bbd"] = {"Bau"}, ["bbe"] = {"Bangba"}, ["bbf"] = {"Baibai"}, ["bbg"] = {"Barama"}, ["bbh"] = {"Bugan"}, ["bbi"] = {"Barombi"}, ["bbj"] = {"Ghomálá'"}, ["bbk"] = {"Babanki"}, ["bbl"] = {"Bats"}, ["bbm"] = {"Babango"}, ["bbn"] = {"Uneapa"}, ["bbo"] = {"Northern Bobo Madaré", "Konabéré"}, ["bbp"] = {"West Central Banda"}, ["bbq"] = {"Bamali"}, ["bbr"] = {"Girawa"}, ["bbs"] = {"Bakpinka"}, ["bbt"] = {"Mburku"}, ["bbu"] = {"Kulung (Nigeria)"}, ["bbv"] = {"Karnai"}, ["bbw"] = {"Baba"}, ["bbx"] = {"Bubia"}, ["bby"] = {"Befang"}, ["bca"] = {"Central Bai"}, ["bcb"] = {"Bainouk-Samik"}, ["bcc"] = {"Southern Balochi"}, ["bcd"] = {"North Babar"}, ["bce"] = {"Bamenyam"}, ["bcf"] = {"Bamu"}, ["bcg"] = {"Baga Pokur"}, ["bch"] = {"Bariai"}, ["bci"] = {"Baoulé"}, ["bcj"] = {"Bardi"}, ["bck"] = {"Bunuba"}, ["bcl"] = {"Central Bikol"}, ["bcm"] = {"Bannoni"}, ["bcn"] = {"Bali (Nigeria)"}, ["bco"] = {"Kaluli"}, ["bcp"] = {"Bali (Democratic Republic of Congo)"}, ["bcq"] = {"Bench"}, ["bcr"] = {"Babine"}, ["bcs"] = {"Kohumono"}, ["bct"] = {"Bendi"}, ["bcu"] = {"Awad Bing"}, ["bcv"] = {"Shoo-Minda-Nye"}, ["bcw"] = {"Bana"}, ["bcy"] = {"Bacama"}, ["bcz"] = {"Bainouk-Gunyaamolo"}, ["bda"] = {"Bayot"}, ["bdb"] = {"Basap"}, ["bdc"] = {"Emberá-Baudó"}, ["bdd"] = {"Bunama"}, ["bde"] = {"Bade"}, ["bdf"] = {"Biage"}, ["bdg"] = {"Bonggi"}, ["bdh"] = {"Baka (South Sudan)"}, ["bdi"] = {"Burun"}, ["bdj"] = {"Bai (South Sudan)", "Bai"}, ["bdk"] = {"Budukh"}, ["bdl"] = {"Indonesian Bajau"}, ["bdm"] = {"Buduma"}, ["bdn"] = {"Baldemu"}, ["bdo"] = {"Morom"}, ["bdp"] = {"Bende"}, ["bdq"] = {"Bahnar"}, ["bdr"] = {"West Coast Bajau"}, ["bds"] = {"Burunge"}, ["bdt"] = {"Bokoto"}, ["bdu"] = {"Oroko"}, ["bdv"] = {"Bodo Parja"}, ["bdw"] = {"Baham"}, ["bdx"] = {"Budong-Budong"}, ["bdy"] = {"Bandjalang"}, ["bdz"] = {"Badeshi"}, ["bea"] = {"Beaver"}, ["beb"] = {"Bebele"}, ["bec"] = {"Iceve-Maci"}, ["bed"] = {"Bedoanas"}, ["bee"] = {"Byangsi"}, ["bef"] = {"Benabena"}, ["beg"] = {"Belait"}, ["beh"] = {"Biali"}, ["bei"] = {"Bekati'"}, ["bej"] = {"Beja", "Bedawiyet"}, ["bek"] = {"Bebeli"}, ["bem"] = {"Bemba (Zambia)"}, ["beo"] = {"Beami"}, ["bep"] = {"Besoa"}, ["beq"] = {"Beembe"}, ["ber"] = {"Berber languages"}, ["bes"] = {"Besme"}, ["bet"] = {"Guiberoua Béte"}, ["beu"] = {"Blagar"}, ["bev"] = {"Daloa Bété"}, ["bew"] = {"Betawi"}, ["bex"] = {"Jur Modo"}, ["bey"] = {"Beli (Papua New Guinea)"}, ["bez"] = {"Bena (Tanzania)"}, ["bfa"] = {"Bari"}, ["bfb"] = {"Pauri Bareli"}, ["bfc"] = {"Panyi Bai", "Northern Bai"}, ["bfd"] = {"Bafut"}, ["bfe"] = {"Betaf", "Tena"}, ["bff"] = {"Bofi"}, ["bfg"] = {"Busang Kayan"}, ["bfh"] = {"Blafe"}, ["bfi"] = {"British Sign Language"}, ["bfj"] = {"Bafanji"}, ["bfk"] = {"Ban Khor Sign Language"}, ["bfl"] = {"Banda-Ndélé"}, ["bfm"] = {"Mmen"}, ["bfn"] = {"Bunak"}, ["bfo"] = {"Malba Birifor"}, ["bfp"] = {"Beba"}, ["bfq"] = {"Badaga"}, ["bfr"] = {"Bazigar"}, ["bfs"] = {"Southern Bai"}, ["bft"] = {"Balti"}, ["bfu"] = {"Gahri"}, ["bfw"] = {"Bondo"}, ["bfx"] = {"Bantayanon"}, ["bfy"] = {"Bagheli"}, ["bfz"] = {"Mahasu Pahari"}, ["bga"] = {"Gwamhi-Wuri"}, ["bgb"] = {"Bobongko"}, ["bgc"] = {"Haryanvi"}, ["bgd"] = {"Rathwi Bareli"}, ["bge"] = {"Bauria"}, ["bgf"] = {"Bangandu"}, ["bgg"] = {"Bugun"}, ["bgi"] = {"Giangan"}, ["bgj"] = {"Bangolan"}, ["bgk"] = {"Bit", "Buxinhua"}, ["bgl"] = {"Bo (Laos)"}, ["bgn"] = {"Western Balochi"}, ["bgo"] = {"Baga Koga"}, ["bgp"] = {"Eastern Balochi"}, ["bgq"] = {"Bagri"}, ["bgr"] = {"Bawm Chin"}, ["bgs"] = {"Tagabawa"}, ["bgt"] = {"Bughotu"}, ["bgu"] = {"Mbongno"}, ["bgv"] = {"Warkay-Bipim"}, ["bgw"] = {"Bhatri"}, ["bgx"] = {"Balkan Gagauz Turkish"}, ["bgy"] = {"Benggoi"}, ["bgz"] = {"Banggai"}, ["bha"] = {"Bharia"}, ["bhb"] = {"Bhili"}, ["bhc"] = {"Biga"}, ["bhd"] = {"Bhadrawahi"}, ["bhe"] = {"Bhaya"}, ["bhf"] = {"Odiai"}, ["bhg"] = {"Binandere"}, ["bhh"] = {"Bukharic"}, ["bhi"] = {"Bhilali"}, ["bhj"] = {"Bahing"}, ["bhl"] = {"Bimin"}, ["bhm"] = {"Bathari"}, ["bhn"] = {"Bohtan Neo-Aramaic"}, ["bho"] = {"Bhojpuri"}, ["bhp"] = {"Bima"}, ["bhq"] = {"Tukang Besi South"}, ["bhr"] = {"Bara Malagasy"}, ["bhs"] = {"Buwal"}, ["bht"] = {"Bhattiyali"}, ["bhu"] = {"Bhunjia"}, ["bhv"] = {"Bahau"}, ["bhw"] = {"Biak"}, ["bhx"] = {"Bhalay"}, ["bhy"] = {"Bhele"}, ["bhz"] = {"Bada (Indonesia)"}, ["bia"] = {"Badimaya"}, ["bib"] = {"Bissa", "Bisa"}, ["bid"] = {"Bidiyo"}, ["bie"] = {"Bepour"}, ["bif"] = {"Biafada"}, ["big"] = {"Biangai"}, ["bik"] = {"Bikol"}, ["bil"] = {"Bile"}, ["bim"] = {"Bimoba"}, ["bin"] = {"Bini", "Edo"}, ["bio"] = {"Nai"}, ["bip"] = {"Bila"}, ["biq"] = {"Bipi"}, ["bir"] = {"Bisorio"}, ["bit"] = {"Berinomo"}, ["biu"] = {"Biete"}, ["biv"] = {"Southern Birifor"}, ["biw"] = {"Kol (Cameroon)"}, ["bix"] = {"Bijori"}, ["biy"] = {"Birhor"}, ["biz"] = {"Baloi"}, ["bja"] = {"Budza"}, ["bjb"] = {"Banggarla"}, ["bjc"] = {"Bariji"}, ["bje"] = {"Biao-Jiao Mien"}, ["bjf"] = {"Barzani Jewish Neo-Aramaic"}, ["bjg"] = {"Bidyogo"}, ["bjh"] = {"Bahinemo"}, ["bji"] = {"Burji"}, ["bjj"] = {"Kanauji"}, ["bjk"] = {"Barok"}, ["bjl"] = {"Bulu (Papua New Guinea)"}, ["bjm"] = {"Bajelani"}, ["bjn"] = {"Banjar"}, ["bjo"] = {"Mid-Southern Banda"}, ["bjp"] = {"Fanamaket"}, ["bjr"] = {"Binumarien"}, ["bjs"] = {"Bajan"}, ["bjt"] = {"Balanta-Ganja"}, ["bju"] = {"Busuu"}, ["bjv"] = {"Bedjond"}, ["bjw"] = {"Bakwé"}, ["bjx"] = {"Banao Itneg"}, ["bjy"] = {"Bayali"}, ["bjz"] = {"Baruga"}, ["bka"] = {"Kyak"}, ["bkc"] = {"Baka (Cameroon)"}, ["bkd"] = {"Binukid", "Talaandig"}, ["bkf"] = {"Beeke"}, ["bkg"] = {"Buraka"}, ["bkh"] = {"Bakoko"}, ["bki"] = {"Baki"}, ["bkj"] = {"Pande"}, ["bkk"] = {"Brokskat"}, ["bkl"] = {"Berik"}, ["bkm"] = {"Kom (Cameroon)"}, ["bkn"] = {"Bukitan"}, ["bko"] = {"Kwa'"}, ["bkp"] = {"Boko (Democratic Republic of Congo)"}, ["bkq"] = {"Bakairí"}, ["bkr"] = {"Bakumpai"}, ["bks"] = {"Northern Sorsoganon"}, ["bkt"] = {"Boloki"}, ["bku"] = {"Buhid"}, ["bkv"] = {"Bekwarra"}, ["bkw"] = {"Bekwel"}, ["bkx"] = {"Baikeno"}, ["bky"] = {"Bokyi"}, ["bkz"] = {"Bungku"}, ["bla"] = {"Siksika"}, ["blb"] = {"Bilua"}, ["blc"] = {"Bella Coola"}, ["bld"] = {"Bolango"}, ["ble"] = {"Balanta-Kentohe"}, ["blf"] = {"Buol"}, ["blh"] = {"Kuwaa"}, ["bli"] = {"Bolia"}, ["blj"] = {"Bolongan"}, ["blk"] = {"Pa'o Karen", "Pa'O"}, ["bll"] = {"Biloxi"}, ["blm"] = {"Beli (South Sudan)"}, ["bln"] = {"Southern Catanduanes Bikol"}, ["blo"] = {"Anii"}, ["blp"] = {"Blablanga"}, ["blq"] = {"Baluan-Pam"}, ["blr"] = {"Blang"}, ["bls"] = {"Balaesang"}, ["blt"] = {"Tai Dam"}, ["blv"] = {"Kibala", "Bolo"}, ["blw"] = {"Balangao"}, ["blx"] = {"Mag-Indi Ayta"}, ["bly"] = {"Notre"}, ["blz"] = {"Balantak"}, ["bma"] = {"Lame"}, ["bmb"] = {"Bembe"}, ["bmc"] = {"Biem"}, ["bmd"] = {"Baga Manduri"}, ["bme"] = {"Limassa"}, ["bmf"] = {"Bom-Kim"}, ["bmg"] = {"Bamwe"}, ["bmh"] = {"Kein"}, ["bmi"] = {"Bagirmi"}, ["bmj"] = {"Bote-Majhi"}, ["bmk"] = {"Ghayavi"}, ["bml"] = {"Bomboli"}, ["bmm"] = {"Northern Betsimisaraka Malagasy"}, ["bmn"] = {"Bina (Papua New Guinea)"}, ["bmo"] = {"Bambalang"}, ["bmp"] = {"Bulgebi"}, ["bmq"] = {"Bomu"}, ["bmr"] = {"Muinane"}, ["bms"] = {"Bilma Kanuri"}, ["bmt"] = {"Biao Mon"}, ["bmu"] = {"Somba-Siawari"}, ["bmv"] = {"Bum"}, ["bmw"] = {"Bomwali"}, ["bmx"] = {"Baimak"}, ["bmz"] = {"Baramu"}, ["bna"] = {"Bonerate"}, ["bnb"] = {"Bookan"}, ["bnc"] = {"Bontok"}, ["bnd"] = {"Banda (Indonesia)"}, ["bne"] = {"Bintauna"}, ["bnf"] = {"Masiwang"}, ["bng"] = {"Benga"}, ["bni"] = {"Bangi"}, ["bnj"] = {"Eastern Tawbuid"}, ["bnk"] = {"Bierebo"}, ["bnl"] = {"Boon"}, ["bnm"] = {"Batanga"}, ["bnn"] = {"Bunun"}, ["bno"] = {"Bantoanon"}, ["bnp"] = {"Bola"}, ["bnq"] = {"Bantik"}, ["bnr"] = {"Butmas-Tur"}, ["bns"] = {"Bundeli"}, ["bnt"] = {"Bantu languages"}, ["bnu"] = {"Bentong"}, ["bnv"] = {"Bonerif", "Beneraf", "Edwas"}, ["bnw"] = {"Bisis"}, ["bnx"] = {"Bangubangu"}, ["bny"] = {"Bintulu"}, ["bnz"] = {"Beezen"}, ["boa"] = {"Bora"}, ["bob"] = {"Aweer"}, ["boe"] = {"Mundabli"}, ["bof"] = {"Bolon"}, ["bog"] = {"Bamako Sign Language"}, ["boh"] = {"Boma"}, ["boi"] = {"Barbareño"}, ["boj"] = {"Anjam"}, ["bok"] = {"Bonjo"}, ["bol"] = {"Bole"}, ["bom"] = {"Berom"}, ["bon"] = {"Bine"}, ["boo"] = {"Tiemacèwè Bozo"}, ["bop"] = {"Bonkiman"}, ["boq"] = {"Bogaya"}, ["bor"] = {"Borôro"}, ["bot"] = {"Bongo"}, ["bou"] = {"Bondei"}, ["bov"] = {"Tuwuli"}, ["bow"] = {"Rema"}, ["box"] = {"Buamu"}, ["boy"] = {"Bodo (Central African Republic)"}, ["boz"] = {"Tiéyaxo Bozo"}, ["bpa"] = {"Daakaka"}, ["bpc"] = {"Mbuk"}, ["bpd"] = {"Banda-Banda"}, ["bpe"] = {"Bauni"}, ["bpg"] = {"Bonggo"}, ["bph"] = {"Botlikh"}, ["bpi"] = {"Bagupi"}, ["bpj"] = {"Binji"}, ["bpk"] = {"Orowe", "'Ôrôê"}, ["bpl"] = {"Broome Pearling Lugger Pidgin"}, ["bpm"] = {"Biyom"}, ["bpn"] = {"Dzao Min"}, ["bpo"] = {"Anasi"}, ["bpp"] = {"Kaure"}, ["bpq"] = {"Banda Malay"}, ["bpr"] = {"Koronadal Blaan"}, ["bps"] = {"Sarangani Blaan"}, ["bpt"] = {"Barrow Point"}, ["bpu"] = {"Bongu"}, ["bpv"] = {"Bian Marind"}, ["bpw"] = {"Bo (Papua New Guinea)"}, ["bpx"] = {"Palya Bareli"}, ["bpy"] = {"Bishnupriya"}, ["bpz"] = {"Bilba"}, ["bqa"] = {"Tchumbuli"}, ["bqb"] = {"Bagusa"}, ["bqc"] = {"Boko (Benin)", "Boo"}, ["bqd"] = {"Bung"}, ["bqf"] = {"Baga Kaloum"}, ["bqg"] = {"Bago-Kusuntu"}, ["bqh"] = {"Baima"}, ["bqi"] = {"Bakhtiari"}, ["bqj"] = {"Bandial"}, ["bqk"] = {"Banda-Mbrès"}, ["bql"] = {"Bilakura"}, ["bqm"] = {"Wumboko"}, ["bqn"] = {"Bulgarian Sign Language"}, ["bqo"] = {"Balo"}, ["bqp"] = {"Busa"}, ["bqq"] = {"Biritai"}, ["bqr"] = {"Burusu"}, ["bqs"] = {"Bosngun"}, ["bqt"] = {"Bamukumbit"}, ["bqu"] = {"Boguru"}, ["bqv"] = {"Koro Wachi", "Begbere-Ejar"}, ["bqw"] = {"Buru (Nigeria)"}, ["bqx"] = {"Baangi"}, ["bqy"] = {"Bengkala Sign Language"}, ["bqz"] = {"Bakaka"}, ["bra"] = {"Braj"}, ["brb"] = {"Brao", "Lave"}, ["brc"] = {"Berbice Creole Dutch"}, ["brd"] = {"Baraamu"}, ["brf"] = {"Bira"}, ["brg"] = {"Baure"}, ["brh"] = {"Brahui"}, ["bri"] = {"Mokpwe"}, ["brj"] = {"Bieria"}, ["brk"] = {"Birked"}, ["brl"] = {"Birwa"}, ["brm"] = {"Barambu"}, ["brn"] = {"Boruca"}, ["bro"] = {"Brokkat"}, ["brp"] = {"Barapasi"}, ["brq"] = {"Breri"}, ["brr"] = {"Birao"}, ["brs"] = {"Baras"}, ["brt"] = {"Bitare"}, ["bru"] = {"Eastern Bru"}, ["brv"] = {"Western Bru"}, ["brw"] = {"Bellari"}, ["brx"] = {"Bodo (India)"}, ["bry"] = {"Burui"}, ["brz"] = {"Bilbil"}, ["bsa"] = {"Abinomn"}, ["bsb"] = {"Brunei Bisaya"}, ["bsc"] = {"Bassari", "Oniyan"}, ["bse"] = {"Wushi"}, ["bsf"] = {"Bauchi"}, ["bsg"] = {"Bashkardi"}, ["bsh"] = {"Kati"}, ["bsi"] = {"Bassossi"}, ["bsj"] = {"Bangwinji"}, ["bsk"] = {"Burushaski"}, ["bsl"] = {"Basa-Gumna"}, ["bsm"] = {"Busami"}, ["bsn"] = {"Barasana-Eduria"}, ["bso"] = {"Buso"}, ["bsp"] = {"Baga Sitemu"}, ["bsq"] = {"Bassa"}, ["bsr"] = {"Bassa-Kontagora"}, ["bss"] = {"Akoose"}, ["bst"] = {"Basketo"}, ["bsu"] = {"Bahonsuai"}, ["bsv"] = {"Baga Sobané"}, ["bsw"] = {"Baiso"}, ["bsx"] = {"Yangkam"}, ["bsy"] = {"Sabah Bisaya"}, ["bta"] = {"Bata"}, ["btc"] = {"Bati (Cameroon)"}, ["btd"] = {"Batak Dairi"}, ["bte"] = {"Gamo-Ningi"}, ["btf"] = {"Birgit"}, ["btg"] = {"Gagnoa Bété"}, ["bth"] = {"Biatah Bidayuh"}, ["bti"] = {"Burate"}, ["btj"] = {"Bacanese Malay"}, ["btk"] = {"Batak languages"}, ["btm"] = {"Batak Mandailing"}, ["btn"] = {"Ratagnon"}, ["bto"] = {"Rinconada Bikol"}, ["btp"] = {"Budibud"}, ["btq"] = {"Batek"}, ["btr"] = {"Baetora"}, ["bts"] = {"Batak Simalungun"}, ["btt"] = {"Bete-Bendi"}, ["btu"] = {"Batu"}, ["btv"] = {"Bateri"}, ["btw"] = {"Butuanon"}, ["btx"] = {"Batak Karo"}, ["bty"] = {"Bobot"}, ["btz"] = {"Batak Alas-Kluet"}, ["bua"] = {"Buriat"}, ["bub"] = {"Bua"}, ["buc"] = {"Bushi"}, ["bud"] = {"Ntcham"}, ["bue"] = {"Beothuk"}, ["buf"] = {"Bushoong"}, ["bug"] = {"Buginese"}, ["buh"] = {"Younuo Bunu"}, ["bui"] = {"Bongili"}, ["buj"] = {"Basa-Gurmana"}, ["buk"] = {"Bugawac"}, ["bum"] = {"Bulu (Cameroon)"}, ["bun"] = {"Sherbro"}, ["buo"] = {"Terei"}, ["bup"] = {"Busoa"}, ["buq"] = {"Brem"}, ["bus"] = {"Bokobaru"}, ["but"] = {"Bungain"}, ["buu"] = {"Budu"}, ["buv"] = {"Bun"}, ["buw"] = {"Bubi"}, ["bux"] = {"Boghom"}, ["buy"] = {"Bullom So"}, ["buz"] = {"Bukwen"}, ["bva"] = {"Barein"}, ["bvb"] = {"Bube"}, ["bvc"] = {"Baelelea"}, ["bvd"] = {"Baeggu"}, ["bve"] = {"Berau Malay"}, ["bvf"] = {"Boor"}, ["bvg"] = {"Bonkeng"}, ["bvh"] = {"Bure"}, ["bvi"] = {"Belanda Viri"}, ["bvj"] = {"Baan"}, ["bvk"] = {"Bukat"}, ["bvl"] = {"Bolivian Sign Language"}, ["bvm"] = {"Bamunka"}, ["bvn"] = {"Buna"}, ["bvo"] = {"Bolgo"}, ["bvp"] = {"Bumang"}, ["bvq"] = {"Birri"}, ["bvr"] = {"Burarra"}, ["bvt"] = {"Bati (Indonesia)"}, ["bvu"] = {"Bukit Malay"}, ["bvv"] = {"Baniva"}, ["bvw"] = {"Boga"}, ["bvx"] = {"Dibole"}, ["bvy"] = {"Baybayanon"}, ["bvz"] = {"Bauzi"}, ["bwa"] = {"Bwatoo"}, ["bwb"] = {"Namosi-Naitasiri-Serua"}, ["bwc"] = {"Bwile"}, ["bwd"] = {"Bwaidoka"}, ["bwe"] = {"Bwe Karen"}, ["bwf"] = {"Boselewa"}, ["bwg"] = {"Barwe"}, ["bwh"] = {"Bishuo"}, ["bwi"] = {"Baniwa"}, ["bwj"] = {"Láá Láá Bwamu"}, ["bwk"] = {"Bauwaki"}, ["bwl"] = {"Bwela"}, ["bwm"] = {"Biwat"}, ["bwn"] = {"Wunai Bunu"}, ["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"}, ["bwp"] = {"Mandobo Bawah"}, ["bwq"] = {"Southern Bobo Madaré"}, ["bwr"] = {"Bura-Pabir"}, ["bws"] = {"Bomboma"}, ["bwt"] = {"Bafaw-Balong"}, ["bwu"] = {"Buli (Ghana)"}, ["bww"] = {"Bwa"}, ["bwx"] = {"Bu-Nao Bunu"}, ["bwy"] = {"Cwi Bwamu"}, ["bwz"] = {"Bwisi"}, ["bxa"] = {"Tairaha"}, ["bxb"] = {"Belanda Bor"}, ["bxc"] = {"Molengue"}, ["bxd"] = {"Pela"}, ["bxe"] = {"Birale"}, ["bxf"] = {"Bilur", "Minigir"}, ["bxg"] = {"Bangala"}, ["bxh"] = {"Buhutu"}, ["bxi"] = {"Pirlatapa"}, ["bxj"] = {"Bayungu"}, ["bxk"] = {"Bukusu", "Lubukusu"}, ["bxl"] = {"Jalkunan"}, ["bxm"] = {"Mongolia Buriat"}, ["bxn"] = {"Burduna"}, ["bxo"] = {"Barikanchi"}, ["bxp"] = {"Bebil"}, ["bxq"] = {"Beele"}, ["bxr"] = {"Russia Buriat"}, ["bxs"] = {"Busam"}, ["bxu"] = {"China Buriat"}, ["bxv"] = {"Berakou"}, ["bxw"] = {"Bankagooma"}, ["bxz"] = {"Binahari"}, ["bya"] = {"Batak"}, ["byb"] = {"Bikya"}, ["byc"] = {"Ubaghara"}, ["byd"] = {"Benyadu'"}, ["bye"] = {"Pouye"}, ["byf"] = {"Bete"}, ["byg"] = {"Baygo"}, ["byh"] = {"Bhujel"}, ["byi"] = {"Buyu"}, ["byj"] = {"Bina (Nigeria)"}, ["byk"] = {"Biao"}, ["byl"] = {"Bayono"}, ["bym"] = {"Bidjara"}, ["byn"] = {"Bilin", "Blin"}, ["byo"] = {"Biyo"}, ["byp"] = {"Bumaji"}, ["byq"] = {"Basay"}, ["byr"] = {"Baruya", "Yipma"}, ["bys"] = {"Burak"}, ["byt"] = {"Berti"}, ["byv"] = {"Medumba"}, ["byw"] = {"Belhariya"}, ["byx"] = {"Qaqet"}, ["byz"] = {"Banaro"}, ["bza"] = {"Bandi"}, ["bzb"] = {"Andio"}, ["bzc"] = {"Southern Betsimisaraka Malagasy"}, ["bzd"] = {"Bribri"}, ["bze"] = {"Jenaama Bozo"}, ["bzf"] = {"Boikin"}, ["bzg"] = {"Babuza"}, ["bzh"] = {"Mapos Buang"}, ["bzi"] = {"Bisu"}, ["bzj"] = {"Belize Kriol English"}, ["bzk"] = {"Nicaragua Creole English"}, ["bzl"] = {"Boano (Sulawesi)"}, ["bzm"] = {"Bolondo"}, ["bzn"] = {"Boano (Maluku)"}, ["bzo"] = {"Bozaba"}, ["bzp"] = {"Kemberano"}, ["bzq"] = {"Buli (Indonesia)"}, ["bzr"] = {"Biri"}, ["bzs"] = {"Brazilian Sign Language"}, ["bzt"] = {"Brithenig"}, ["bzu"] = {"Burmeso"}, ["bzv"] = {"Naami"}, ["bzw"] = {"Basa (Nigeria)"}, ["bzx"] = {"Kɛlɛngaxo Bozo"}, ["bzy"] = {"Obanliku"}, ["bzz"] = {"Evant"}, ["caa"] = {"Chortí"}, ["cab"] = {"Garifuna"}, ["cac"] = {"Chuj"}, ["cad"] = {"Caddo"}, ["cae"] = {"Lehar", "Laalaa"}, ["caf"] = {"Southern Carrier"}, ["cag"] = {"Nivaclé"}, ["cah"] = {"Cahuarano"}, ["cai"] = {"Central American Indian languages"}, ["caj"] = {"Chané"}, ["cak"] = {"Kaqchikel", "Cakchiquel"}, ["cal"] = {"Carolinian"}, ["cam"] = {"Cemuhî"}, ["can"] = {"Chambri"}, ["cao"] = {"Chácobo"}, ["cap"] = {"Chipaya"}, ["caq"] = {"Car Nicobarese"}, ["car"] = {"Galibi Carib"}, ["cas"] = {"Tsimané"}, ["cau"] = {"Caucasian languages"}, ["cav"] = {"Cavineña"}, ["caw"] = {"Callawalla"}, ["cax"] = {"Chiquitano"}, ["cay"] = {"Cayuga"}, ["caz"] = {"Canichana"}, ["cba"] = {"Chibchan languages"}, ["cbb"] = {"Cabiyarí"}, ["cbc"] = {"Carapana"}, ["cbd"] = {"Carijona"}, ["cbg"] = {"Chimila"}, ["cbi"] = {"Chachi"}, ["cbj"] = {"Ede Cabe"}, ["cbk"] = {"Chavacano"}, ["cbl"] = {"Bualkhaw Chin"}, ["cbn"] = {"Nyahkur"}, ["cbo"] = {"Izora"}, ["cbq"] = {"Tsucuba", "Cuba"}, ["cbr"] = {"Cashibo-Cacataibo"}, ["cbs"] = {"Cashinahua"}, ["cbt"] = {"Chayahuita"}, ["cbu"] = {"Candoshi-Shapra"}, ["cbv"] = {"Cacua"}, ["cbw"] = {"Kinabalian"}, ["cby"] = {"Carabayo"}, ["ccc"] = {"Chamicuro"}, ["ccd"] = {"Cafundo Creole"}, ["cce"] = {"Chopi"}, ["ccg"] = {"Samba Daka"}, ["cch"] = {"Atsam"}, ["ccj"] = {"Kasanga"}, ["ccl"] = {"Cutchi-Swahili"}, ["ccm"] = {"Malaccan Creole Malay"}, ["ccn"] = {"North Caucasian languages"}, ["cco"] = {"Comaltepec Chinantec"}, ["ccp"] = {"Chakma"}, ["ccr"] = {"Cacaopera"}, ["ccs"] = {"South Caucasian languages"}, ["cda"] = {"Choni"}, ["cdc"] = {"Chadic languages"}, ["cdd"] = {"Caddoan languages"}, ["cde"] = {"Chenchu"}, ["cdf"] = {"Chiru"}, ["cdh"] = {"Chambeali"}, ["cdi"] = {"Chodri"}, ["cdj"] = {"Churahi"}, ["cdm"] = {"Chepang"}, ["cdn"] = {"Chaudangsi"}, ["cdo"] = {"Min Dong Chinese"}, ["cdr"] = {"Cinda-Regi-Tiyal"}, ["cds"] = {"Chadian Sign Language"}, ["cdy"] = {"Chadong"}, ["cdz"] = {"Koda"}, ["cea"] = {"Lower Chehalis"}, ["ceb"] = {"Cebuano"}, ["ceg"] = {"Chamacoco"}, ["cek"] = {"Eastern Khumi Chin"}, ["cel"] = {"Celtic languages"}, ["cen"] = {"Cen"}, ["cet"] = {"Centúúm"}, ["cey"] = {"Ekai Chin"}, ["cfa"] = {"Dijim-Bwilim"}, ["cfd"] = {"Cara"}, ["cfg"] = {"Como Karim"}, ["cfm"] = {"Falam Chin"}, ["cga"] = {"Changriwa"}, ["cgc"] = {"Kagayanen"}, ["cgg"] = {"Chiga"}, ["cgk"] = {"Chocangacakha"}, ["chb"] = {"Chibcha"}, ["chc"] = {"Catawba"}, ["chd"] = {"Highland Oaxaca Chontal"}, ["chf"] = {"Tabasco Chontal"}, ["chg"] = {"Chagatai"}, ["chh"] = {"Chinook"}, ["chj"] = {"Ojitlán Chinantec"}, ["chk"] = {"Chuukese"}, ["chl"] = {"Cahuilla"}, ["chm"] = {"Mari (Russia)"}, ["chn"] = {"Chinook jargon"}, ["cho"] = {"Choctaw"}, ["chp"] = {"Chipewyan", "Dene Suline"}, ["chq"] = {"Quiotepec Chinantec"}, ["chr"] = {"Cherokee"}, ["cht"] = {"Cholón"}, ["chw"] = {"Chuwabu"}, ["chx"] = {"Chantyal"}, ["chy"] = {"Cheyenne"}, ["chz"] = {"Ozumacín Chinantec"}, ["cia"] = {"Cia-Cia"}, ["cib"] = {"Ci Gbe"}, ["cic"] = {"Chickasaw"}, ["cid"] = {"Chimariko"}, ["cie"] = {"Cineni"}, ["cih"] = {"Chinali"}, ["cik"] = {"Chitkuli Kinnauri"}, ["cim"] = {"Cimbrian"}, ["cin"] = {"Cinta Larga"}, ["cip"] = {"Chiapanec"}, ["cir"] = {"Tiri", "Haméa", "Méa"}, ["ciw"] = {"Chippewa"}, ["ciy"] = {"Chaima"}, ["cja"] = {"Western Cham"}, ["cje"] = {"Chru"}, ["cjh"] = {"Upper Chehalis"}, ["cji"] = {"Chamalal"}, ["cjk"] = {"Chokwe"}, ["cjm"] = {"Eastern Cham"}, ["cjn"] = {"Chenapian"}, ["cjo"] = {"Ashéninka Pajonal"}, ["cjp"] = {"Cabécar"}, ["cjs"] = {"Shor"}, ["cjv"] = {"Chuave"}, ["cjy"] = {"Jinyu Chinese"}, ["ckb"] = {"Central Kurdish"}, ["ckh"] = {"Chak"}, ["ckl"] = {"Cibak"}, ["ckm"] = {"Chakavian"}, ["ckn"] = {"Kaang Chin"}, ["cko"] = {"Anufo"}, ["ckq"] = {"Kajakse"}, ["ckr"] = {"Kairak"}, ["cks"] = {"Tayo"}, ["ckt"] = {"Chukot"}, ["cku"] = {"Koasati"}, ["ckv"] = {"Kavalan"}, ["ckx"] = {"Caka"}, ["cky"] = {"Cakfem-Mushere"}, ["ckz"] = {"Cakchiquel-Quiché Mixed Language"}, ["cla"] = {"Ron"}, ["clc"] = {"Chilcotin"}, ["cld"] = {"Chaldean Neo-Aramaic"}, ["cle"] = {"Lealao Chinantec"}, ["clh"] = {"Chilisso"}, ["cli"] = {"Chakali"}, ["clj"] = {"Laitu Chin"}, ["clk"] = {"Idu-Mishmi"}, ["cll"] = {"Chala"}, ["clm"] = {"Clallam"}, ["clo"] = {"Lowland Oaxaca Chontal"}, ["clt"] = {"Lautu Chin"}, ["clu"] = {"Caluyanun"}, ["clw"] = {"Chulym"}, ["cly"] = {"Eastern Highland Chatino"}, ["cma"] = {"Maa"}, ["cmc"] = {"Chamic languages"}, ["cme"] = {"Cerma"}, ["cmg"] = {"Classical Mongolian"}, ["cmi"] = {"Emberá-Chamí"}, ["cml"] = {"Campalagian"}, ["cmm"] = {"Michigamea"}, ["cmn"] = {"Mandarin Chinese"}, ["cmo"] = {"Central Mnong"}, ["cmr"] = {"Mro-Khimi Chin"}, ["cms"] = {"Messapic"}, ["cmt"] = {"Camtho"}, ["cna"] = {"Changthang"}, ["cnb"] = {"Chinbon Chin"}, ["cnc"] = {"Côông"}, ["cng"] = {"Northern Qiang"}, ["cnh"] = {"Hakha Chin", "Haka Chin"}, ["cni"] = {"Asháninka"}, ["cnk"] = {"Khumi Chin"}, ["cnl"] = {"Lalana Chinantec"}, ["cno"] = {"Con"}, ["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"}, ["cnq"] = {"Chung"}, ["cnr"] = {"Montenegrin"}, ["cns"] = {"Central Asmat"}, ["cnt"] = {"Tepetotutla Chinantec"}, ["cnu"] = {"Chenoua"}, ["cnw"] = {"Ngawn Chin"}, ["cnx"] = {"Middle Cornish"}, ["coa"] = {"Cocos Islands Malay"}, ["cob"] = {"Chicomuceltec"}, ["coc"] = {"Cocopa"}, ["cod"] = {"Cocama-Cocamilla"}, ["coe"] = {"Koreguaje"}, ["cof"] = {"Colorado"}, ["cog"] = {"Chong"}, ["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"}, ["coj"] = {"Cochimi"}, ["cok"] = {"Santa Teresa Cora"}, ["col"] = {"Columbia-Wenatchi"}, ["com"] = {"Comanche"}, ["con"] = {"Cofán"}, ["coo"] = {"Comox"}, ["cop"] = {"Coptic"}, ["coq"] = {"Coquille"}, ["cot"] = {"Caquinte"}, ["cou"] = {"Wamey"}, ["cov"] = {"Cao Miao"}, ["cow"] = {"Cowlitz"}, ["cox"] = {"Nanti"}, ["coz"] = {"Chochotec"}, ["cpa"] = {"Palantla Chinantec"}, ["cpb"] = {"Ucayali-Yurúa Ashéninka"}, ["cpc"] = {"Ajyíninka Apurucayali"}, ["cpe"] = {"English-based creoles and pidgins"}, ["cpf"] = {"French-based creoles and pidgins"}, ["cpg"] = {"Cappadocian Greek"}, ["cpi"] = {"Chinese Pidgin English"}, ["cpn"] = {"Cherepon"}, ["cpo"] = {"Kpeego"}, ["cpp"] = {"Portuguese-based creoles and pidgins"}, ["cps"] = {"Capiznon"}, ["cpu"] = {"Pichis Ashéninka"}, ["cpx"] = {"Pu-Xian Chinese"}, ["cpy"] = {"South Ucayali Ashéninka"}, ["cqd"] = {"Chuanqiandian Cluster Miao"}, ["cra"] = {"Chara"}, ["crb"] = {"Island Carib"}, ["crc"] = {"Lonwolwol"}, ["crd"] = {"Coeur d'Alene"}, ["crf"] = {"Caramanta"}, ["crg"] = {"Michif"}, ["crh"] = {"Crimean Tatar", "Crimean Turkish"}, ["cri"] = {"Sãotomense"}, ["crj"] = {"Southern East Cree"}, ["crk"] = {"Plains Cree"}, ["crl"] = {"Northern East Cree"}, ["crm"] = {"Moose Cree"}, ["crn"] = {"El Nayar Cora"}, ["cro"] = {"Crow"}, ["crp"] = {"Creoles and pidgins"}, ["crq"] = {"Iyo'wujwa Chorote"}, ["crr"] = {"Carolina Algonquian"}, ["crs"] = {"Seselwa Creole French"}, ["crt"] = {"Iyojwa'ja Chorote"}, ["crv"] = {"Chaura"}, ["crw"] = {"Chrau"}, ["crx"] = {"Carrier"}, ["cry"] = {"Cori"}, ["crz"] = {"Cruzeño"}, ["csa"] = {"Chiltepec Chinantec"}, ["csb"] = {"Kashubian"}, ["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"}, ["csd"] = {"Chiangmai Sign Language"}, ["cse"] = {"Czech Sign Language"}, ["csf"] = {"Cuba Sign Language"}, ["csg"] = {"Chilean Sign Language"}, ["csh"] = {"Asho Chin"}, ["csi"] = {"Coast Miwok"}, ["csj"] = {"Songlai Chin"}, ["csk"] = {"Jola-Kasa"}, ["csl"] = {"Chinese Sign Language"}, ["csm"] = {"Central Sierra Miwok"}, ["csn"] = {"Colombian Sign Language"}, ["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"}, ["csp"] = {"Southern Ping Chinese", "Southern Pinghua"}, ["csq"] = {"Croatia Sign Language"}, ["csr"] = {"Costa Rican Sign Language"}, ["css"] = {"Southern Ohlone"}, ["cst"] = {"Northern Ohlone"}, ["csu"] = {"Central Sudanic languages"}, ["csv"] = {"Sumtu Chin"}, ["csw"] = {"Swampy Cree"}, ["csx"] = {"Cambodian Sign Language"}, ["csy"] = {"Siyin Chin"}, ["csz"] = {"Coos"}, ["cta"] = {"Tataltepec Chatino"}, ["ctc"] = {"Chetco"}, ["ctd"] = {"Tedim Chin"}, ["cte"] = {"Tepinapa Chinantec"}, ["ctg"] = {"Chittagonian"}, ["cth"] = {"Thaiphum Chin"}, ["ctl"] = {"Tlacoatzintepec Chinantec"}, ["ctm"] = {"Chitimacha"}, ["ctn"] = {"Chhintange"}, ["cto"] = {"Emberá-Catío"}, ["ctp"] = {"Western Highland Chatino"}, ["cts"] = {"Northern Catanduanes Bikol"}, ["ctt"] = {"Wayanad Chetti"}, ["ctu"] = {"Chol"}, ["cty"] = {"Moundadan Chetty"}, ["ctz"] = {"Zacatepec Chatino"}, ["cua"] = {"Cua"}, ["cub"] = {"Cubeo"}, ["cuc"] = {"Usila Chinantec"}, ["cuh"] = {"Chuka", "Gichuka"}, ["cui"] = {"Cuiba"}, ["cuj"] = {"Mashco Piro"}, ["cuk"] = {"San Blas Kuna"}, ["cul"] = {"Culina", "Kulina"}, ["cuo"] = {"Cumanagoto"}, ["cup"] = {"Cupeño"}, ["cuq"] = {"Cun"}, ["cur"] = {"Chhulung"}, ["cus"] = {"Cushitic languages"}, ["cut"] = {"Teutila Cuicatec"}, ["cuu"] = {"Tai Ya"}, ["cuv"] = {"Cuvok"}, ["cuw"] = {"Chukwa"}, ["cux"] = {"Tepeuxila Cuicatec"}, ["cuy"] = {"Cuitlatec"}, ["cvg"] = {"Chug"}, ["cvn"] = {"Valle Nacional Chinantec"}, ["cwa"] = {"Kabwa"}, ["cwb"] = {"Maindo"}, ["cwd"] = {"Woods Cree"}, ["cwe"] = {"Kwere"}, ["cwg"] = {"Chewong", "Cheq Wong"}, ["cwt"] = {"Kuwaataay"}, ["cxh"] = {"Cha'ari"}, ["cya"] = {"Nopala Chatino"}, ["cyb"] = {"Cayubaba"}, ["cyo"] = {"Cuyonon"}, ["czh"] = {"Huizhou Chinese"}, ["czk"] = {"Knaanic"}, ["czn"] = {"Zenzontepec Chatino"}, ["czo"] = {"Min Zhong Chinese"}, ["czt"] = {"Zotung Chin"}, ["daa"] = {"Dangaléat"}, ["dac"] = {"Dambi"}, ["dad"] = {"Marik"}, ["dae"] = {"Duupa"}, ["dag"] = {"Dagbani"}, ["dah"] = {"Gwahatike"}, ["dai"] = {"Day"}, ["daj"] = {"Dar Fur Daju"}, ["dak"] = {"Dakota"}, ["dal"] = {"Dahalo"}, ["dam"] = {"Damakawa"}, ["dao"] = {"Daai Chin"}, ["daq"] = {"Dandami Maria"}, ["dar"] = {"Dargwa"}, ["das"] = {"Daho-Doo"}, ["dau"] = {"Dar Sila Daju"}, ["dav"] = {"Taita", "Dawida"}, ["daw"] = {"Davawenyo"}, ["dax"] = {"Dayi"}, ["day"] = {"Land Dayak languages"}, ["daz"] = {"Dao"}, ["dba"] = {"Bangime"}, ["dbb"] = {"Deno"}, ["dbd"] = {"Dadiya"}, ["dbe"] = {"Dabe"}, ["dbf"] = {"Edopi"}, ["dbg"] = {"Dogul Dom Dogon"}, ["dbi"] = {"Doka"}, ["dbj"] = {"Ida'an"}, ["dbl"] = {"Dyirbal"}, ["dbm"] = {"Duguri"}, ["dbn"] = {"Duriankere"}, ["dbo"] = {"Dulbu"}, ["dbp"] = {"Duwai"}, ["dbq"] = {"Daba"}, ["dbr"] = {"Dabarre"}, ["dbt"] = {"Ben Tey Dogon"}, ["dbu"] = {"Bondum Dom Dogon"}, ["dbv"] = {"Dungu"}, ["dbw"] = {"Bankan Tey Dogon"}, ["dby"] = {"Dibiyaso"}, ["dcc"] = {"Deccan"}, ["dcr"] = {"Negerhollands"}, ["dda"] = {"Dadi Dadi"}, ["ddd"] = {"Dongotono"}, ["dde"] = {"Doondo"}, ["ddg"] = {"Fataluku"}, ["ddi"] = {"West Goodenough"}, ["ddj"] = {"Jaru"}, ["ddn"] = {"Dendi (Benin)"}, ["ddo"] = {"Dido"}, ["ddr"] = {"Dhudhuroa"}, ["dds"] = {"Donno So Dogon"}, ["ddw"] = {"Dawera-Daweloor"}, ["dec"] = {"Dagik"}, ["ded"] = {"Dedua"}, ["dee"] = {"Dewoin"}, ["def"] = {"Dezfuli"}, ["deg"] = {"Degema"}, ["deh"] = {"Dehwari"}, ["dei"] = {"Demisa"}, ["dek"] = {"Dek"}, ["del"] = {"Delaware"}, ["dem"] = {"Dem"}, ["den"] = {"Slave (Athapascan)"}, ["dep"] = {"Pidgin Delaware"}, ["deq"] = {"Dendi (Central African Republic)"}, ["der"] = {"Deori"}, ["des"] = {"Desano"}, ["dev"] = {"Domung"}, ["dez"] = {"Dengese"}, ["dga"] = {"Southern Dagaare"}, ["dgb"] = {"Bunoge Dogon"}, ["dgc"] = {"Casiguran Dumagat Agta"}, ["dgd"] = {"Dagaari Dioula"}, ["dge"] = {"Degenan"}, ["dgg"] = {"Doga"}, ["dgh"] = {"Dghwede"}, ["dgi"] = {"Northern Dagara"}, ["dgk"] = {"Dagba"}, ["dgl"] = {"Andaandi", "Dongolawi"}, ["dgn"] = {"Dagoman"}, ["dgo"] = {"Dogri (individual language)"}, ["dgr"] = {"Dogrib", "Tłı̨chǫ"}, ["dgs"] = {"Dogoso"}, ["dgt"] = {"Ndra'ngith"}, ["dgw"] = {"Daungwurrung"}, ["dgx"] = {"Doghoro"}, ["dgz"] = {"Daga"}, ["dhd"] = {"Dhundari"}, ["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"}, ["dhi"] = {"Dhimal"}, ["dhl"] = {"Dhalandji"}, ["dhm"] = {"Zemba"}, ["dhn"] = {"Dhanki"}, ["dho"] = {"Dhodia"}, ["dhr"] = {"Dhargari"}, ["dhs"] = {"Dhaiso"}, ["dhu"] = {"Dhurga"}, ["dhv"] = {"Dehu", "Drehu"}, ["dhw"] = {"Dhanwar (Nepal)"}, ["dhx"] = {"Dhungaloo"}, ["dia"] = {"Dia"}, ["dib"] = {"South Central Dinka"}, ["dic"] = {"Lakota Dida"}, ["did"] = {"Didinga"}, ["dif"] = {"Dieri", "Diyari"}, ["dig"] = {"Digo", "Chidigo"}, ["dih"] = {"Kumiai"}, ["dii"] = {"Dimbong"}, ["dij"] = {"Dai"}, ["dik"] = {"Southwestern Dinka"}, ["dil"] = {"Dilling"}, ["dim"] = {"Dime"}, ["din"] = {"Dinka"}, ["dio"] = {"Dibo"}, ["dip"] = {"Northeastern Dinka"}, ["diq"] = {"Dimli (individual language)"}, ["dir"] = {"Dirim"}, ["dis"] = {"Dimasa"}, ["diu"] = {"Diriku"}, ["diw"] = {"Northwestern Dinka"}, ["dix"] = {"Dixon Reef"}, ["diy"] = {"Diuwe"}, ["diz"] = {"Ding"}, ["dja"] = {"Djadjawurrung"}, ["djb"] = {"Djinba"}, ["djc"] = {"Dar Daju Daju"}, ["djd"] = {"Djamindjung", "Ngaliwurru"}, ["dje"] = {"Zarma"}, ["djf"] = {"Djangun"}, ["dji"] = {"Djinang"}, ["djj"] = {"Djeebbana"}, ["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"}, ["djm"] = {"Jamsay Dogon"}, ["djn"] = {"Jawoyn", "Djauan"}, ["djo"] = {"Jangkang"}, ["djr"] = {"Djambarrpuyngu"}, ["dju"] = {"Kapriman"}, ["djw"] = {"Djawi"}, ["dka"] = {"Dakpakha"}, ["dkg"] = {"Kadung"}, ["dkk"] = {"Dakka"}, ["dkr"] = {"Kuijau"}, ["dks"] = {"Southeastern Dinka"}, ["dkx"] = {"Mazagway"}, ["dlg"] = {"Dolgan"}, ["dlk"] = {"Dahalik"}, ["dlm"] = {"Dalmatian"}, ["dln"] = {"Darlong"}, ["dma"] = {"Duma"}, ["dmb"] = {"Mombo Dogon"}, ["dmc"] = {"Gavak"}, ["dmd"] = {"Madhi Madhi"}, ["dme"] = {"Dugwor"}, ["dmf"] = {"Medefaidrin"}, ["dmg"] = {"Upper Kinabatangan"}, ["dmk"] = {"Domaaki"}, ["dml"] = {"Dameli"}, ["dmm"] = {"Dama"}, ["dmn"] = {"Mande languages"}, ["dmo"] = {"Kemedzung"}, ["dmr"] = {"East Damar"}, ["dms"] = {"Dampelas"}, ["dmu"] = {"Dubu", "Tebi"}, ["dmv"] = {"Dumpas"}, ["dmw"] = {"Mudburra"}, ["dmx"] = {"Dema"}, ["dmy"] = {"Demta", "Sowari"}, ["dna"] = {"Upper Grand Valley Dani"}, ["dnd"] = {"Daonda"}, ["dne"] = {"Ndendeule"}, ["dng"] = {"Dungan"}, ["dni"] = {"Lower Grand Valley Dani"}, ["dnj"] = {"Dan"}, ["dnk"] = {"Dengka"}, ["dnn"] = {"Dzùùngoo"}, ["dno"] = {"Ndrulo", "Northern Lendu"}, ["dnr"] = {"Danaru"}, ["dnt"] = {"Mid Grand Valley Dani"}, ["dnu"] = {"Danau"}, ["dnv"] = {"Danu"}, ["dnw"] = {"Western Dani"}, ["dny"] = {"Dení"}, ["doa"] = {"Dom"}, ["dob"] = {"Dobu"}, ["doc"] = {"Northern Dong"}, ["doe"] = {"Doe"}, ["dof"] = {"Domu"}, ["doh"] = {"Dong"}, ["doi"] = {"Dogri (macrolanguage)"}, ["dok"] = {"Dondo"}, ["dol"] = {"Doso"}, ["don"] = {"Toura (Papua New Guinea)"}, ["doo"] = {"Dongo"}, ["dop"] = {"Lukpa"}, ["doq"] = {"Dominican Sign Language"}, ["dor"] = {"Dori'o"}, ["dos"] = {"Dogosé"}, ["dot"] = {"Dass"}, ["dov"] = {"Dombe"}, ["dow"] = {"Doyayo"}, ["dox"] = {"Bussa"}, ["doy"] = {"Dompo"}, ["doz"] = {"Dorze"}, ["dpp"] = {"Papar"}, ["dra"] = {"Dravidian languages"}, ["drb"] = {"Dair"}, ["drc"] = {"Minderico"}, ["drd"] = {"Darmiya"}, ["dre"] = {"Dolpo"}, ["drg"] = {"Rungus"}, ["dri"] = {"C'Lela"}, ["drl"] = {"Paakantyi"}, ["drn"] = {"West Damar"}, ["dro"] = {"Daro-Matu Melanau"}, ["drq"] = {"Dura"}, ["drs"] = {"Gedeo"}, ["drt"] = {"Drents"}, ["dru"] = {"Rukai"}, ["dry"] = {"Darai"}, ["dsb"] = {"Lower Sorbian"}, ["dse"] = {"Dutch Sign Language"}, ["dsh"] = {"Daasanach"}, ["dsi"] = {"Disa"}, ["dsk"] = {"Dokshi"}, ["dsl"] = {"Danish Sign Language"}, ["dsn"] = {"Dusner"}, ["dso"] = {"Desiya"}, ["dsq"] = {"Tadaksahak"}, ["dsz"] = {"Mardin Sign Language"}, ["dta"] = {"Daur"}, ["dtb"] = {"Labuk-Kinabatangan Kadazan"}, ["dtd"] = {"Ditidaht"}, ["dth"] = {"Adithinngithigh"}, ["dti"] = {"Ana Tinga Dogon"}, ["dtk"] = {"Tene Kan Dogon"}, ["dtm"] = {"Tomo Kan Dogon"}, ["dtn"] = {"Daatsʼíin"}, ["dto"] = {"Tommo So Dogon"}, ["dtp"] = {"Kadazan Dusun", "Central Dusun"}, ["dtr"] = {"Lotud"}, ["dts"] = {"Toro So Dogon"}, ["dtt"] = {"Toro Tegu Dogon"}, ["dtu"] = {"Tebul Ure Dogon"}, ["dty"] = {"Dotyali"}, ["dua"] = {"Duala"}, ["dub"] = {"Dubli"}, ["duc"] = {"Duna"}, ["due"] = {"Umiray Dumaget Agta"}, ["duf"] = {"Dumbea", "Drubea"}, ["dug"] = {"Duruma", "Chiduruma"}, ["duh"] = {"Dungra Bhil"}, ["dui"] = {"Dumun"}, ["duk"] = {"Uyajitaya"}, ["dul"] = {"Alabat Island Agta"}, ["dum"] = {"Middle Dutch (ca. 1050-1350)"}, ["dun"] = {"Dusun Deyah"}, ["duo"] = {"Dupaninan Agta"}, ["dup"] = {"Duano"}, ["duq"] = {"Dusun Malang"}, ["dur"] = {"Dii"}, ["dus"] = {"Dumi"}, ["duu"] = {"Drung"}, ["duv"] = {"Duvle"}, ["duw"] = {"Dusun Witu"}, ["dux"] = {"Duungooma"}, ["duy"] = {"Dicamay Agta"}, ["duz"] = {"Duli-Gey"}, ["dva"] = {"Duau"}, ["dwa"] = {"Diri"}, ["dwk"] = {"Dawik Kui"}, ["dwr"] = {"Dawro"}, ["dws"] = {"Dutton World Speedwords"}, ["dwu"] = {"Dhuwal"}, ["dww"] = {"Dawawa"}, ["dwy"] = {"Dhuwaya"}, ["dwz"] = {"Dewas Rai"}, ["dya"] = {"Dyan"}, ["dyb"] = {"Dyaberdyaber"}, ["dyd"] = {"Dyugun"}, ["dyg"] = {"Villa Viciosa Agta"}, ["dyi"] = {"Djimini Senoufo"}, ["dym"] = {"Yanda Dom Dogon"}, ["dyn"] = {"Dyangadi", "Dhanggatti"}, ["dyo"] = {"Jola-Fonyi"}, ["dyr"] = {"Dyarim"}, ["dyu"] = {"Dyula"}, ["dyy"] = {"Djabugay", "Dyaabugay"}, ["dza"] = {"Tunzu"}, ["dzd"] = {"Daza"}, ["dze"] = {"Djiwarli"}, ["dzg"] = {"Dazaga"}, ["dzl"] = {"Dzalakha"}, ["dzn"] = {"Dzando"}, ["eaa"] = {"Karenggapa"}, ["ebc"] = {"Beginci"}, ["ebg"] = {"Ebughu"}, ["ebk"] = {"Eastern Bontok"}, ["ebo"] = {"Teke-Ebo"}, ["ebr"] = {"Ebrié"}, ["ebu"] = {"Embu", "Kiembu"}, ["ecr"] = {"Eteocretan"}, ["ecs"] = {"Ecuadorian Sign Language"}, ["ecy"] = {"Eteocypriot"}, ["eee"] = {"E"}, ["efa"] = {"Efai"}, ["efe"] = {"Efe"}, ["efi"] = {"Efik"}, ["ega"] = {"Ega"}, ["egl"] = {"Emilian"}, ["egm"] = {"Benamanga"}, ["ego"] = {"Eggon"}, ["egx"] = {"Egyptian languages"}, ["egy"] = {"Egyptian (Ancient)"}, ["ehs"] = {"Miyakubo Sign Language"}, ["ehu"] = {"Ehueun"}, ["eip"] = {"Eipomek"}, ["eit"] = {"Eitiep"}, ["eiv"] = {"Askopan"}, ["eja"] = {"Ejamat"}, ["eka"] = {"Ekajuk"}, ["eke"] = {"Ekit"}, ["ekg"] = {"Ekari"}, ["eki"] = {"Eki"}, ["ekk"] = {"Standard Estonian"}, ["ekl"] = {"Kol (Bangladesh)", "Kol"}, ["ekm"] = {"Elip"}, ["eko"] = {"Koti"}, ["ekp"] = {"Ekpeye"}, ["ekr"] = {"Yace"}, ["eky"] = {"Eastern Kayah"}, ["ele"] = {"Elepi"}, ["elh"] = {"El Hugeirat"}, ["eli"] = {"Nding"}, ["elk"] = {"Elkei"}, ["elm"] = {"Eleme"}, ["elo"] = {"El Molo"}, ["elu"] = {"Elu"}, ["elx"] = {"Elamite"}, ["ema"] = {"Emai-Iuleha-Ora"}, ["emb"] = {"Embaloh"}, ["eme"] = {"Emerillon"}, ["emg"] = {"Eastern Meohang"}, ["emi"] = {"Mussau-Emira"}, ["emk"] = {"Eastern Maninkakan"}, ["emm"] = {"Mamulique"}, ["emn"] = {"Eman"}, ["emp"] = {"Northern Emberá"}, ["emq"] = {"Eastern Minyag"}, ["ems"] = {"Pacific Gulf Yupik"}, ["emu"] = {"Eastern Muria"}, ["emw"] = {"Emplawas"}, ["emx"] = {"Erromintxela"}, ["emy"] = {"Epigraphic Mayan"}, ["emz"] = {"Mbessa"}, ["ena"] = {"Apali"}, ["enb"] = {"Markweeta"}, ["enc"] = {"En"}, ["end"] = {"Ende"}, ["enf"] = {"Forest Enets"}, ["enh"] = {"Tundra Enets"}, ["enl"] = {"Enlhet"}, ["enm"] = {"Middle English (1100-1500)"}, ["enn"] = {"Engenni"}, ["eno"] = {"Enggano"}, ["enq"] = {"Enga"}, ["enr"] = {"Emumu", "Emem"}, ["enu"] = {"Enu"}, ["env"] = {"Enwan (Edo State)"}, ["enw"] = {"Enwan (Akwa Ibom State)"}, ["enx"] = {"Enxet"}, ["eot"] = {"Beti (Côte d'Ivoire)"}, ["epi"] = {"Epie"}, ["era"] = {"Eravallan"}, ["erg"] = {"Sie"}, ["erh"] = {"Eruwa"}, ["eri"] = {"Ogea"}, ["erk"] = {"South Efate"}, ["ero"] = {"Horpa"}, ["err"] = {"Erre"}, ["ers"] = {"Ersu"}, ["ert"] = {"Eritai"}, ["erw"] = {"Erokwanas"}, ["ese"] = {"Ese Ejja"}, ["esg"] = {"Aheri Gondi"}, ["esh"] = {"Eshtehardi"}, ["esi"] = {"North Alaskan Inupiatun"}, ["esk"] = {"Northwest Alaska Inupiatun"}, ["esl"] = {"Egypt Sign Language"}, ["esm"] = {"Esuma"}, ["esn"] = {"Salvadoran Sign Language"}, ["eso"] = {"Estonian Sign Language"}, ["esq"] = {"Esselen"}, ["ess"] = {"Central Siberian Yupik"}, ["esu"] = {"Central Yupik"}, ["esx"] = {"Eskimo-Aleut languages"}, ["esy"] = {"Eskayan"}, ["etb"] = {"Etebi"}, ["etc"] = {"Etchemin"}, ["eth"] = {"Ethiopian Sign Language"}, ["etn"] = {"Eton (Vanuatu)"}, ["eto"] = {"Eton (Cameroon)"}, ["etr"] = {"Edolo"}, ["ets"] = {"Yekhee"}, ["ett"] = {"Etruscan"}, ["etu"] = {"Ejagham"}, ["etx"] = {"Eten"}, ["etz"] = {"Semimi"}, ["eud"] = {"Eudeve"}, ["euq"] = {"Basque (family)"}, ["eve"] = {"Even"}, ["evh"] = {"Uvbie"}, ["evn"] = {"Evenki"}, ["ewo"] = {"Ewondo"}, ["ext"] = {"Extremaduran"}, ["eya"] = {"Eyak"}, ["eyo"] = {"Keiyo"}, ["eza"] = {"Ezaa"}, ["eze"] = {"Uzekwe"}, ["faa"] = {"Fasu"}, ["fab"] = {"Fa d'Ambu"}, ["fad"] = {"Wagi"}, ["faf"] = {"Fagani"}, ["fag"] = {"Finongan"}, ["fah"] = {"Baissa Fali"}, ["fai"] = {"Faiwol"}, ["faj"] = {"Faita"}, ["fak"] = {"Fang (Cameroon)"}, ["fal"] = {"South Fali"}, ["fam"] = {"Fam"}, ["fan"] = {"Fang (Equatorial Guinea)"}, ["fap"] = {"Paloor"}, ["far"] = {"Fataleka"}, ["fat"] = {"Fanti"}, ["fau"] = {"Fayu"}, ["fax"] = {"Fala"}, ["fay"] = {"Southwestern Fars"}, ["faz"] = {"Northwestern Fars"}, ["fbl"] = {"West Albay Bikol"}, ["fcs"] = {"Quebec Sign Language"}, ["fer"] = {"Feroge"}, ["ffi"] = {"Foia Foia"}, ["ffm"] = {"Maasina Fulfulde"}, ["fgr"] = {"Fongoro"}, ["fia"] = {"Nobiin"}, ["fie"] = {"Fyer"}, ["fif"] = {"Faifi"}, ["fil"] = {"Filipino", "Pilipino"}, ["fip"] = {"Fipa"}, ["fir"] = {"Firan"}, ["fit"] = {"Tornedalen Finnish", "Meänkieli"}, ["fiu"] = {"Finno-Ugrian languages"}, ["fiw"] = {"Fiwaga"}, ["fkk"] = {"Kirya-Konzəl"}, ["fkv"] = {"Kven Finnish"}, ["fla"] = {"Kalispel-Pend d'Oreille"}, ["flh"] = {"Foau"}, ["fli"] = {"Fali"}, ["fll"] = {"North Fali"}, ["fln"] = {"Flinders Island"}, ["flr"] = {"Fuliiru"}, ["fly"] = {"Flaaitaal", "Tsotsitaal"}, ["fmp"] = {"Fe'fe'"}, ["fmu"] = {"Far Western Muria"}, ["fnb"] = {"Fanbak"}, ["fng"] = {"Fanagalo"}, ["fni"] = {"Fania"}, ["fod"] = {"Foodo"}, ["foi"] = {"Foi"}, ["fom"] = {"Foma"}, ["fon"] = {"Fon"}, ["for"] = {"Fore"}, ["fos"] = {"Siraya"}, ["fox"] = {"Formosan languages"}, ["fpe"] = {"Fernando Po Creole English"}, ["fqs"] = {"Fas"}, ["frc"] = {"Cajun French"}, ["frd"] = {"Fordata"}, ["frk"] = {"Frankish"}, ["frm"] = {"Middle French (ca. 1400-1600)"}, ["fro"] = {"Old French (842-ca. 1400)"}, ["frp"] = {"Arpitan", "Francoprovençal"}, ["frq"] = {"Forak"}, ["frr"] = {"Northern Frisian"}, ["frs"] = {"Eastern Frisian"}, ["frt"] = {"Fortsenal"}, ["fse"] = {"Finnish Sign Language"}, ["fsl"] = {"French Sign Language"}, ["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"}, ["fub"] = {"Adamawa Fulfulde"}, ["fuc"] = {"Pulaar"}, ["fud"] = {"East Futuna"}, ["fue"] = {"Borgu Fulfulde"}, ["fuf"] = {"Pular"}, ["fuh"] = {"Western Niger Fulfulde"}, ["fui"] = {"Bagirmi Fulfulde"}, ["fuj"] = {"Ko"}, ["fum"] = {"Fum"}, ["fun"] = {"Fulniô"}, ["fuq"] = {"Central-Eastern Niger Fulfulde"}, ["fur"] = {"Friulian"}, ["fut"] = {"Futuna-Aniwa"}, ["fuu"] = {"Furu"}, ["fuv"] = {"Nigerian Fulfulde"}, ["fuy"] = {"Fuyug"}, ["fvr"] = {"Fur"}, ["fwa"] = {"Fwâi"}, ["fwe"] = {"Fwe"}, ["gaa"] = {"Ga"}, ["gab"] = {"Gabri"}, ["gac"] = {"Mixed Great Andamanese"}, ["gad"] = {"Gaddang"}, ["gae"] = {"Guarequena"}, ["gaf"] = {"Gende"}, ["gag"] = {"Gagauz"}, ["gah"] = {"Alekano"}, ["gai"] = {"Borei"}, ["gaj"] = {"Gadsup"}, ["gak"] = {"Gamkonora"}, ["gal"] = {"Galolen"}, ["gam"] = {"Kandawo"}, ["gan"] = {"Gan Chinese"}, ["gao"] = {"Gants"}, ["gap"] = {"Gal"}, ["gaq"] = {"Gata'"}, ["gar"] = {"Galeya"}, ["gas"] = {"Adiwasi Garasia"}, ["gat"] = {"Kenati"}, ["gau"] = {"Mudhili Gadaba"}, ["gaw"] = {"Nobonob"}, ["gax"] = {"Borana-Arsi-Guji Oromo"}, ["gay"] = {"Gayo"}, ["gaz"] = {"West Central Oromo"}, ["gba"] = {"Gbaya (Central African Republic)"}, ["gbb"] = {"Kaytetye"}, ["gbd"] = {"Karajarri"}, ["gbe"] = {"Niksek"}, ["gbf"] = {"Gaikundi"}, ["gbg"] = {"Gbanziri"}, ["gbh"] = {"Defi Gbe"}, ["gbi"] = {"Galela"}, ["gbj"] = {"Bodo Gadaba"}, ["gbk"] = {"Gaddi"}, ["gbl"] = {"Gamit"}, ["gbm"] = {"Garhwali"}, ["gbn"] = {"Mo'da"}, ["gbo"] = {"Northern Grebo"}, ["gbp"] = {"Gbaya-Bossangoa"}, ["gbq"] = {"Gbaya-Bozoum"}, ["gbr"] = {"Gbagyi"}, ["gbs"] = {"Gbesi Gbe"}, ["gbu"] = {"Gagadu"}, ["gbv"] = {"Gbanu"}, ["gbw"] = {"Gabi-Gabi"}, ["gbx"] = {"Eastern Xwla Gbe"}, ["gby"] = {"Gbari"}, ["gbz"] = {"Zoroastrian Dari"}, ["gcc"] = {"Mali"}, ["gcd"] = {"Ganggalida"}, ["gce"] = {"Galice"}, ["gcf"] = {"Guadeloupean Creole French"}, ["gcl"] = {"Grenadian Creole English"}, ["gcn"] = {"Gaina"}, ["gcr"] = {"Guianese Creole French"}, ["gct"] = {"Colonia Tovar German"}, ["gda"] = {"Gade Lohar"}, ["gdb"] = {"Pottangi Ollar Gadaba"}, ["gdc"] = {"Gugu Badhun"}, ["gdd"] = {"Gedaged"}, ["gde"] = {"Gude"}, ["gdf"] = {"Guduf-Gava"}, ["gdg"] = {"Ga'dang"}, ["gdh"] = {"Gadjerawang", "Gajirrabeng"}, ["gdi"] = {"Gundi"}, ["gdj"] = {"Gurdjar"}, ["gdk"] = {"Gadang"}, ["gdl"] = {"Dirasha"}, ["gdm"] = {"Laal"}, ["gdn"] = {"Umanakaina"}, ["gdo"] = {"Ghodoberi"}, ["gdq"] = {"Mehri"}, ["gdr"] = {"Wipi"}, ["gds"] = {"Ghandruk Sign Language"}, ["gdt"] = {"Kungardutyi"}, ["gdu"] = {"Gudu"}, ["gdx"] = {"Godwari"}, ["gea"] = {"Geruma"}, ["geb"] = {"Kire"}, ["gec"] = {"Gboloo Grebo"}, ["ged"] = {"Gade"}, ["gef"] = {"Gerai"}, ["geg"] = {"Gengle"}, ["geh"] = {"Hutterite German", "Hutterisch"}, ["gei"] = {"Gebe"}, ["gej"] = {"Gen"}, ["gek"] = {"Ywom"}, ["gel"] = {"ut-Ma'in"}, ["gem"] = {"Germanic languages"}, ["geq"] = {"Geme"}, ["ges"] = {"Geser-Gorom"}, ["gev"] = {"Eviya"}, ["gew"] = {"Gera"}, ["gex"] = {"Garre"}, ["gey"] = {"Enya"}, ["gez"] = {"Geez"}, ["gfk"] = {"Patpatar"}, ["gft"] = {"Gafat"}, ["gga"] = {"Gao"}, ["ggb"] = {"Gbii"}, ["ggd"] = {"Gugadj"}, ["gge"] = {"Gurr-goni"}, ["ggg"] = {"Gurgula"}, ["ggk"] = {"Kungarakany"}, ["ggl"] = {"Ganglau"}, ["ggt"] = {"Gitua"}, ["ggu"] = {"Gagu", "Gban"}, ["ggw"] = {"Gogodala"}, ["gha"] = {"Ghadamès"}, ["ghc"] = {"Hiberno-Scottish Gaelic"}, ["ghe"] = {"Southern Ghale"}, ["ghh"] = {"Northern Ghale"}, ["ghk"] = {"Geko Karen"}, ["ghl"] = {"Ghulfan"}, ["ghn"] = {"Ghanongga"}, ["gho"] = {"Ghomara"}, ["ghr"] = {"Ghera"}, ["ghs"] = {"Guhu-Samane"}, ["ght"] = {"Kuke", "Kutang Ghale"}, ["gia"] = {"Kija"}, ["gib"] = {"Gibanawa"}, ["gic"] = {"Gail"}, ["gid"] = {"Gidar"}, ["gie"] = {"Gaɓogbo", "Guébie"}, ["gig"] = {"Goaria"}, ["gih"] = {"Githabul"}, ["gii"] = {"Girirra"}, ["gil"] = {"Gilbertese"}, ["gim"] = {"Gimi (Eastern Highlands)"}, ["gin"] = {"Hinukh"}, ["gip"] = {"Gimi (West New Britain)"}, ["giq"] = {"Green Gelao"}, ["gir"] = {"Red Gelao"}, ["gis"] = {"North Giziga"}, ["git"] = {"Gitxsan"}, ["giu"] = {"Mulao"}, ["giw"] = {"White Gelao"}, ["gix"] = {"Gilima"}, ["giy"] = {"Giyug"}, ["giz"] = {"South Giziga"}, ["gjk"] = {"Kachi Koli"}, ["gjm"] = {"Gunditjmara"}, ["gjn"] = {"Gonja"}, ["gjr"] = {"Gurindji Kriol"}, ["gju"] = {"Gujari"}, ["gka"] = {"Guya"}, ["gkd"] = {"Magɨ (Madang Province)"}, ["gke"] = {"Ndai"}, ["gkn"] = {"Gokana"}, ["gko"] = {"Kok-Nar"}, ["gkp"] = {"Guinea Kpelle"}, ["gku"] = {"ǂUngkue"}, ["glb"] = {"Belning"}, ["glc"] = {"Bon Gula"}, ["gld"] = {"Nanai"}, ["glh"] = {"Northwest Pashai", "Northwest Pashayi"}, ["glj"] = {"Gula Iro"}, ["glk"] = {"Gilaki"}, ["gll"] = {"Garlali"}, ["glo"] = {"Galambu"}, ["glr"] = {"Glaro-Twabo"}, ["glu"] = {"Gula (Chad)"}, ["glw"] = {"Glavda"}, ["gly"] = {"Gule"}, ["gma"] = {"Gambera"}, ["gmb"] = {"Gula'alaa"}, ["gmd"] = {"Mághdì"}, ["gme"] = {"East Germanic languages"}, ["gmg"] = {"Magɨyi"}, ["gmh"] = {"Middle High German (ca. 1050-1500)"}, ["gml"] = {"Middle Low German"}, ["gmm"] = {"Gbaya-Mbodomo"}, ["gmn"] = {"Gimnime"}, ["gmq"] = {"North Germanic languages"}, ["gmr"] = {"Mirning", "Mirniny"}, ["gmu"] = {"Gumalu"}, ["gmv"] = {"Gamo"}, ["gmw"] = {"West Germanic languages"}, ["gmx"] = {"Magoma"}, ["gmy"] = {"Mycenaean Greek"}, ["gmz"] = {"Mgbolizhia"}, ["gna"] = {"Kaansa"}, ["gnb"] = {"Gangte"}, ["gnc"] = {"Guanche"}, ["gnd"] = {"Zulgo-Gemzek"}, ["gne"] = {"Ganang"}, ["gng"] = {"Ngangam"}, ["gnh"] = {"Lere"}, ["gni"] = {"Gooniyandi"}, ["gnj"] = {"Ngen"}, ["gnk"] = {"ǁGana"}, ["gnl"] = {"Gangulu"}, ["gnm"] = {"Ginuman"}, ["gnn"] = {"Gumatj"}, ["gno"] = {"Northern Gondi"}, ["gnq"] = {"Gana"}, ["gnr"] = {"Gureng Gureng"}, ["gnt"] = {"Guntai"}, ["gnu"] = {"Gnau"}, ["gnw"] = {"Western Bolivian Guaraní"}, ["gnz"] = {"Ganzi"}, ["goa"] = {"Guro"}, ["gob"] = {"Playero"}, ["goc"] = {"Gorakor"}, ["god"] = {"Godié"}, ["goe"] = {"Gongduk"}, ["gof"] = {"Gofa"}, ["gog"] = {"Gogo"}, ["goh"] = {"Old High German (ca. 750-1050)"}, ["goi"] = {"Gobasi"}, ["goj"] = {"Gowlan"}, ["gok"] = {"Gowli"}, ["gol"] = {"Gola"}, ["gom"] = {"Goan Konkani"}, ["gon"] = {"Gondi"}, ["goo"] = {"Gone Dau"}, ["gop"] = {"Yeretuar"}, ["goq"] = {"Gorap"}, ["gor"] = {"Gorontalo"}, ["gos"] = {"Gronings"}, ["got"] = {"Gothic"}, ["gou"] = {"Gavar"}, ["gov"] = {"Goo"}, ["gow"] = {"Gorowa"}, ["gox"] = {"Gobu"}, ["goy"] = {"Goundo"}, ["goz"] = {"Gozarkhani"}, ["gpa"] = {"Gupa-Abawa"}, ["gpe"] = {"Ghanaian Pidgin English"}, ["gpn"] = {"Taiap"}, ["gqa"] = {"Ga'anda"}, ["gqi"] = {"Guiqiong"}, ["gqn"] = {"Guana (Brazil)"}, ["gqr"] = {"Gor"}, ["gqu"] = {"Qau"}, ["gra"] = {"Rajput Garasia"}, ["grb"] = {"Grebo"}, ["grc"] = {"Ancient Greek (to 1453)"}, ["grd"] = {"Guruntum-Mbaaru"}, ["grg"] = {"Madi"}, ["grh"] = {"Gbiri-Niragu"}, ["gri"] = {"Ghari"}, ["grj"] = {"Southern Grebo"}, ["grk"] = {"Greek languages"}, ["grm"] = {"Kota Marudu Talantang"}, ["gro"] = {"Groma"}, ["grq"] = {"Gorovu"}, ["grr"] = {"Taznatit"}, ["grs"] = {"Gresi"}, ["grt"] = {"Garo"}, ["gru"] = {"Kistane"}, ["grv"] = {"Central Grebo"}, ["grw"] = {"Gweda"}, ["grx"] = {"Guriaso"}, ["gry"] = {"Barclayville Grebo"}, ["grz"] = {"Guramalum"}, ["gse"] = {"Ghanaian Sign Language"}, ["gsg"] = {"German Sign Language"}, ["gsl"] = {"Gusilay"}, ["gsm"] = {"Guatemalan Sign Language"}, ["gsn"] = {"Nema", "Gusan"}, ["gso"] = {"Southwest Gbaya"}, ["gsp"] = {"Wasembo"}, ["gss"] = {"Greek Sign Language"}, ["gsw"] = {"Swiss German", "Alemannic", "Alsatian"}, ["gta"] = {"Guató"}, ["gtu"] = {"Aghu-Tharnggala"}, ["gua"] = {"Shiki"}, ["gub"] = {"Guajajára"}, ["guc"] = {"Wayuu"}, ["gud"] = {"Yocoboué Dida"}, ["gue"] = {"Gurindji"}, ["guf"] = {"Gupapuyngu"}, ["gug"] = {"Paraguayan Guaraní"}, ["guh"] = {"Guahibo"}, ["gui"] = {"Eastern Bolivian Guaraní"}, ["guk"] = {"Gumuz"}, ["gul"] = {"Sea Island Creole English"}, ["gum"] = {"Guambiano"}, ["gun"] = {"Mbyá Guaraní"}, ["guo"] = {"Guayabero"}, ["gup"] = {"Gunwinggu"}, ["guq"] = {"Aché"}, ["gur"] = {"Farefare"}, ["gus"] = {"Guinean Sign Language"}, ["gut"] = {"Maléku Jaíka"}, ["guu"] = {"Yanomamö"}, ["guw"] = {"Gun"}, ["gux"] = {"Gourmanchéma"}, ["guz"] = {"Gusii", "Ekegusii"}, ["gva"] = {"Guana (Paraguay)"}, ["gvc"] = {"Guanano"}, ["gve"] = {"Duwet"}, ["gvf"] = {"Golin"}, ["gvj"] = {"Guajá"}, ["gvl"] = {"Gulay"}, ["gvm"] = {"Gurmana"}, ["gvn"] = {"Kuku-Yalanji"}, ["gvo"] = {"Gavião Do Jiparaná"}, ["gvp"] = {"Pará Gavião"}, ["gvr"] = {"Gurung"}, ["gvs"] = {"Gumawana"}, ["gvy"] = {"Guyani"}, ["gwa"] = {"Mbato"}, ["gwb"] = {"Gwa"}, ["gwc"] = {"Gawri", "Kalami"}, ["gwd"] = {"Gawwada"}, ["gwe"] = {"Gweno"}, ["gwf"] = {"Gowro"}, ["gwg"] = {"Moo"}, ["gwi"] = {"Gwichʼin"}, ["gwj"] = {"ǀGwi"}, ["gwm"] = {"Awngthim"}, ["gwn"] = {"Gwandara"}, ["gwr"] = {"Gwere"}, ["gwt"] = {"Gawar-Bati"}, ["gwu"] = {"Guwamu"}, ["gww"] = {"Kwini"}, ["gwx"] = {"Gua"}, ["gxx"] = {"Wè Southern"}, ["gya"] = {"Northwest Gbaya"}, ["gyb"] = {"Garus"}, ["gyd"] = {"Kayardild"}, ["gye"] = {"Gyem"}, ["gyf"] = {"Gungabula"}, ["gyg"] = {"Gbayi"}, ["gyi"] = {"Gyele"}, ["gyl"] = {"Gayil"}, ["gym"] = {"Ngäbere"}, ["gyn"] = {"Guyanese Creole English"}, ["gyo"] = {"Gyalsumdo"}, ["gyr"] = {"Guarayu"}, ["gyy"] = {"Gunya"}, ["gyz"] = {"Geji", "Gyaazi"}, ["gza"] = {"Ganza"}, ["gzi"] = {"Gazi"}, ["gzn"] = {"Gane"}, ["haa"] = {"Han"}, ["hab"] = {"Hanoi Sign Language"}, ["hac"] = {"Gurani"}, ["had"] = {"Hatam"}, ["hae"] = {"Eastern Oromo"}, ["haf"] = {"Haiphong Sign Language"}, ["hag"] = {"Hanga"}, ["hah"] = {"Hahon"}, ["hai"] = {"Haida"}, ["haj"] = {"Hajong"}, ["hak"] = {"Hakka Chinese"}, ["hal"] = {"Halang"}, ["ham"] = {"Hewa"}, ["han"] = {"Hangaza"}, ["hao"] = {"Hakö"}, ["hap"] = {"Hupla"}, ["haq"] = {"Ha"}, ["har"] = {"Harari"}, ["has"] = {"Haisla"}, ["hav"] = {"Havu"}, ["haw"] = {"Hawaiian"}, ["hax"] = {"Southern Haida"}, ["hay"] = {"Haya"}, ["haz"] = {"Hazaragi"}, ["hba"] = {"Hamba"}, ["hbb"] = {"Huba"}, ["hbn"] = {"Heiban"}, ["hbo"] = {"Ancient Hebrew"}, ["hbu"] = {"Habu"}, ["hca"] = {"Andaman Creole Hindi"}, ["hch"] = {"Huichol"}, ["hdn"] = {"Northern Haida"}, ["hds"] = {"Honduras Sign Language"}, ["hdy"] = {"Hadiyya"}, ["hea"] = {"Northern Qiandong Miao"}, ["hed"] = {"Herdé"}, ["heg"] = {"Helong"}, ["heh"] = {"Hehe"}, ["hei"] = {"Heiltsuk"}, ["hem"] = {"Hemba"}, ["hgm"] = {"Haiǁom"}, ["hgw"] = {"Haigwai"}, ["hhi"] = {"Hoia Hoia"}, ["hhr"] = {"Kerak"}, ["hhy"] = {"Hoyahoya"}, ["hia"] = {"Lamang"}, ["hib"] = {"Hibito"}, ["hid"] = {"Hidatsa"}, ["hif"] = {"Fiji Hindi"}, ["hig"] = {"Kamwe"}, ["hih"] = {"Pamosu"}, ["hii"] = {"Hinduri"}, ["hij"] = {"Hijuk"}, ["hik"] = {"Seit-Kaitetu"}, ["hil"] = {"Hiligaynon"}, ["him"] = {"Himachali languages", "Western Pahari languages"}, ["hio"] = {"Tsoa"}, ["hir"] = {"Himarimã"}, ["hit"] = {"Hittite"}, ["hiw"] = {"Hiw"}, ["hix"] = {"Hixkaryána"}, ["hji"] = {"Haji"}, ["hka"] = {"Kahe"}, ["hke"] = {"Hunde"}, ["hkh"] = {"Khah", "Poguli"}, ["hkk"] = {"Hunjara-Kaina Ke"}, ["hkn"] = {"Mel-Khaonh"}, ["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"}, ["hla"] = {"Halia"}, ["hlb"] = {"Halbi"}, ["hld"] = {"Halang Doan"}, ["hle"] = {"Hlersu"}, ["hlt"] = {"Matu Chin"}, ["hlu"] = {"Hieroglyphic Luwian"}, ["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"}, ["hmb"] = {"Humburi Senni Songhay"}, ["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"}, ["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"}, ["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"}, ["hmf"] = {"Hmong Don"}, ["hmg"] = {"Southwestern Guiyang Hmong"}, ["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"}, ["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"}, ["hmj"] = {"Ge", "Gejia"}, ["hmk"] = {"Maek"}, ["hml"] = {"Luopohe Hmong", "Luopohe Miao"}, ["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"}, ["hmn"] = {"Hmong", "Mong"}, ["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"}, ["hmq"] = {"Eastern Qiandong Miao"}, ["hmr"] = {"Hmar"}, ["hms"] = {"Southern Qiandong Miao"}, ["hmt"] = {"Hamtai"}, ["hmu"] = {"Hamap"}, ["hmv"] = {"Hmong Dô"}, ["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"}, ["hmx"] = {"Hmong-Mien languages"}, ["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"}, ["hmz"] = {"Hmong Shua", "Sinicized Miao"}, ["hna"] = {"Mina (Cameroon)"}, ["hnd"] = {"Southern Hindko"}, ["hne"] = {"Chhattisgarhi"}, ["hng"] = {"Hungu"}, ["hnh"] = {"ǁAni"}, ["hni"] = {"Hani"}, ["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"}, ["hnn"] = {"Hanunoo"}, ["hno"] = {"Northern Hindko"}, ["hns"] = {"Caribbean Hindustani"}, ["hnu"] = {"Hung"}, ["hoa"] = {"Hoava"}, ["hob"] = {"Mari (Madang Province)"}, ["hoc"] = {"Ho"}, ["hod"] = {"Holma"}, ["hoe"] = {"Horom"}, ["hoh"] = {"Hobyót"}, ["hoi"] = {"Holikachuk"}, ["hoj"] = {"Hadothi", "Haroti"}, ["hok"] = {"Hokan languages"}, ["hol"] = {"Holu"}, ["hom"] = {"Homa"}, ["hoo"] = {"Holoholo"}, ["hop"] = {"Hopi"}, ["hor"] = {"Horo"}, ["hos"] = {"Ho Chi Minh City Sign Language"}, ["hot"] = {"Hote", "Malê"}, ["hov"] = {"Hovongan"}, ["how"] = {"Honi"}, ["hoy"] = {"Holiya"}, ["hoz"] = {"Hozo"}, ["hpo"] = {"Hpon"}, ["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"}, ["hra"] = {"Hrangkhol"}, ["hrc"] = {"Niwer Mil"}, ["hre"] = {"Hre"}, ["hrk"] = {"Haruku"}, ["hrm"] = {"Horned Miao"}, ["hro"] = {"Haroi"}, ["hrp"] = {"Nhirrpi"}, ["hrt"] = {"Hértevin"}, ["hru"] = {"Hruso"}, ["hrw"] = {"Warwar Feni"}, ["hrx"] = {"Hunsrik"}, ["hrz"] = {"Harzani"}, ["hsb"] = {"Upper Sorbian"}, ["hsh"] = {"Hungarian Sign Language"}, ["hsl"] = {"Hausa Sign Language"}, ["hsn"] = {"Xiang Chinese"}, ["hss"] = {"Harsusi"}, ["hti"] = {"Hoti"}, ["hto"] = {"Minica Huitoto"}, ["hts"] = {"Hadza"}, ["htu"] = {"Hitu"}, ["htx"] = {"Middle Hittite"}, ["hub"] = {"Huambisa"}, ["huc"] = {"ǂHua", "ǂʼAmkhoe"}, ["hud"] = {"Huaulu"}, ["hue"] = {"San Francisco Del Mar Huave"}, ["huf"] = {"Humene"}, ["hug"] = {"Huachipaeri"}, ["huh"] = {"Huilliche"}, ["hui"] = {"Huli"}, ["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"}, ["huk"] = {"Hulung"}, ["hul"] = {"Hula"}, ["hum"] = {"Hungana"}, ["huo"] = {"Hu"}, ["hup"] = {"Hupa"}, ["huq"] = {"Tsat"}, ["hur"] = {"Halkomelem"}, ["hus"] = {"Huastec"}, ["hut"] = {"Humla"}, ["huu"] = {"Murui Huitoto"}, ["huv"] = {"San Mateo Del Mar Huave"}, ["huw"] = {"Hukumina"}, ["hux"] = {"Nüpode Huitoto"}, ["huy"] = {"Hulaulá"}, ["huz"] = {"Hunzib"}, ["hvc"] = {"Haitian Vodoun Culture Language"}, ["hve"] = {"San Dionisio Del Mar Huave"}, ["hvk"] = {"Haveke"}, ["hvn"] = {"Sabu"}, ["hvv"] = {"Santa María Del Mar Huave"}, ["hwa"] = {"Wané"}, ["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"}, ["hwo"] = {"Hwana"}, ["hya"] = {"Hya"}, ["hyw"] = {"Western Armenian"}, ["hyx"] = {"Armenian (family)"}, ["iai"] = {"Iaai"}, ["ian"] = {"Iatmul"}, ["iar"] = {"Purari"}, ["iba"] = {"Iban"}, ["ibb"] = {"Ibibio"}, ["ibd"] = {"Iwaidja"}, ["ibe"] = {"Akpes"}, ["ibg"] = {"Ibanag"}, ["ibh"] = {"Bih"}, ["ibl"] = {"Ibaloi"}, ["ibm"] = {"Agoi"}, ["ibn"] = {"Ibino"}, ["ibr"] = {"Ibuoro"}, ["ibu"] = {"Ibu"}, ["iby"] = {"Ibani"}, ["ica"] = {"Ede Ica"}, ["ich"] = {"Etkywan"}, ["icl"] = {"Icelandic Sign Language"}, ["icr"] = {"Islander Creole English"}, ["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"}, ["idb"] = {"Indo-Portuguese"}, ["idc"] = {"Idon", "Ajiya"}, ["idd"] = {"Ede Idaca"}, ["ide"] = {"Idere"}, ["idi"] = {"Idi"}, ["idr"] = {"Indri"}, ["ids"] = {"Idesa"}, ["idt"] = {"Idaté"}, ["idu"] = {"Idoma"}, ["ifa"] = {"Amganad Ifugao"}, ["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"}, ["ife"] = {"Ifè"}, ["iff"] = {"Ifo"}, ["ifk"] = {"Tuwali Ifugao"}, ["ifm"] = {"Teke-Fuumu"}, ["ifu"] = {"Mayoyao Ifugao"}, ["ify"] = {"Keley-I Kallahan"}, ["igb"] = {"Ebira"}, ["ige"] = {"Igede"}, ["igg"] = {"Igana"}, ["igl"] = {"Igala"}, ["igm"] = {"Kanggape"}, ["ign"] = {"Ignaciano"}, ["igo"] = {"Isebe"}, ["igs"] = {"Interglossa"}, ["igw"] = {"Igwe"}, ["ihb"] = {"Iha Based Pidgin"}, ["ihi"] = {"Ihievbe"}, ["ihp"] = {"Iha"}, ["ihw"] = {"Bidhawal"}, ["iin"] = {"Thiin"}, ["iir"] = {"Indo-Iranian languages"}, ["ijc"] = {"Izon"}, ["ije"] = {"Biseni"}, ["ijj"] = {"Ede Ije"}, ["ijn"] = {"Kalabari"}, ["ijo"] = {"Ijo languages"}, ["ijs"] = {"Southeast Ijo"}, ["ike"] = {"Eastern Canadian Inuktitut"}, ["ikh"] = {"Ikhin-Arokho"}, ["iki"] = {"Iko"}, ["ikk"] = {"Ika"}, ["ikl"] = {"Ikulu"}, ["iko"] = {"Olulumo-Ikom"}, ["ikp"] = {"Ikpeshi"}, ["ikr"] = {"Ikaranggal"}, ["iks"] = {"Inuit Sign Language"}, ["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"}, ["ikv"] = {"Iku-Gora-Ankwa"}, ["ikw"] = {"Ikwere"}, ["ikx"] = {"Ik"}, ["ikz"] = {"Ikizu"}, ["ila"] = {"Ile Ape"}, ["ilb"] = {"Ila"}, ["ilg"] = {"Garig-Ilgar"}, ["ili"] = {"Ili Turki"}, ["ilk"] = {"Ilongot"}, ["ilm"] = {"Iranun (Malaysia)"}, ["ilo"] = {"Iloko"}, ["ilp"] = {"Iranun (Philippines)"}, ["ils"] = {"International Sign"}, ["ilu"] = {"Ili'uun"}, ["ilv"] = {"Ilue"}, ["ima"] = {"Mala Malasar"}, ["imi"] = {"Anamgura"}, ["iml"] = {"Miluk"}, ["imn"] = {"Imonda"}, ["imo"] = {"Imbongu"}, ["imr"] = {"Imroing"}, ["ims"] = {"Marsian"}, ["imt"] = {"Imotong"}, ["imy"] = {"Milyan"}, ["inb"] = {"Inga"}, ["inc"] = {"Indic languages"}, ["ine"] = {"Indo-European languages"}, ["ing"] = {"Degexit'an"}, ["inh"] = {"Ingush"}, ["inj"] = {"Jungle Inga"}, ["inl"] = {"Indonesian Sign Language"}, ["inm"] = {"Minaean"}, ["inn"] = {"Isinai"}, ["ino"] = {"Inoke-Yate"}, ["inp"] = {"Iñapari"}, ["ins"] = {"Indian Sign Language"}, ["int"] = {"Intha"}, ["inz"] = {"Ineseño"}, ["ior"] = {"Inor"}, ["iou"] = {"Tuma-Irumu"}, ["iow"] = {"Iowa-Oto"}, ["ipi"] = {"Ipili"}, ["ipo"] = {"Ipiko"}, ["iqu"] = {"Iquito"}, ["iqw"] = {"Ikwo"}, ["ira"] = {"Iranian languages"}, ["ire"] = {"Iresim"}, ["irh"] = {"Irarutu"}, ["iri"] = {"Rigwe", "Irigwe"}, ["irk"] = {"Iraqw"}, ["irn"] = {"Irántxe"}, ["iro"] = {"Iroquoian languages"}, ["irr"] = {"Ir"}, ["iru"] = {"Irula"}, ["irx"] = {"Kamberau"}, ["iry"] = {"Iraya"}, ["isa"] = {"Isabi"}, ["isc"] = {"Isconahua"}, ["isd"] = {"Isnag"}, ["ise"] = {"Italian Sign Language"}, ["isg"] = {"Irish Sign Language"}, ["ish"] = {"Esan"}, ["isi"] = {"Nkem-Nkum"}, ["isk"] = {"Ishkashimi"}, ["ism"] = {"Masimasi"}, ["isn"] = {"Isanzu"}, ["iso"] = {"Isoko"}, ["isr"] = {"Israeli Sign Language"}, ["ist"] = {"Istriot"}, ["isu"] = {"Isu (Menchum Division)"}, ["itb"] = {"Binongan Itneg"}, ["itc"] = {"Italic languages"}, ["itd"] = {"Southern Tidung"}, ["ite"] = {"Itene"}, ["iti"] = {"Inlaod Itneg"}, ["itk"] = {"Judeo-Italian"}, ["itl"] = {"Itelmen"}, ["itm"] = {"Itu Mbon Uzo"}, ["ito"] = {"Itonama"}, ["itr"] = {"Iteri"}, ["its"] = {"Isekiri"}, ["itt"] = {"Maeng Itneg"}, ["itv"] = {"Itawit"}, ["itw"] = {"Ito"}, ["itx"] = {"Itik"}, ["ity"] = {"Moyadan Itneg"}, ["itz"] = {"Itzá"}, ["ium"] = {"Iu Mien"}, ["ivb"] = {"Ibatan"}, ["ivv"] = {"Ivatan"}, ["iwk"] = {"I-Wak"}, ["iwm"] = {"Iwam"}, ["iwo"] = {"Iwur"}, ["iws"] = {"Sepik Iwam"}, ["ixc"] = {"Ixcatec"}, ["ixl"] = {"Ixil"}, ["iya"] = {"Iyayu"}, ["iyo"] = {"Mesaka"}, ["iyx"] = {"Yaka (Congo)"}, ["izh"] = {"Ingrian"}, ["izm"] = {"Kizamani"}, ["izr"] = {"Izere"}, ["izz"] = {"Izii"}, ["jaa"] = {"Jamamadí"}, ["jab"] = {"Hyam"}, ["jac"] = {"Popti'", "Jakalteko"}, ["jad"] = {"Jahanka"}, ["jae"] = {"Yabem"}, ["jaf"] = {"Jara"}, ["jah"] = {"Jah Hut"}, ["jaj"] = {"Zazao"}, ["jak"] = {"Jakun"}, ["jal"] = {"Yalahatan"}, ["jam"] = {"Jamaican Creole English"}, ["jan"] = {"Jandai"}, ["jao"] = {"Yanyuwa"}, ["jaq"] = {"Yaqay"}, ["jas"] = {"New Caledonian Javanese"}, ["jat"] = {"Jakati"}, ["jau"] = {"Yaur"}, ["jax"] = {"Jambi Malay"}, ["jay"] = {"Yan-nhangu", "Nhangu"}, ["jaz"] = {"Jawe"}, ["jbe"] = {"Judeo-Berber"}, ["jbi"] = {"Badjiri"}, ["jbj"] = {"Arandai"}, ["jbk"] = {"Barikewa"}, ["jbm"] = {"Bijim"}, ["jbn"] = {"Nafusi"}, ["jbo"] = {"Lojban"}, ["jbr"] = {"Jofotek-Bromnya"}, ["jbt"] = {"Jabutí"}, ["jbu"] = {"Jukun Takum"}, ["jbw"] = {"Yawijibaya"}, ["jcs"] = {"Jamaican Country Sign Language"}, ["jct"] = {"Krymchak"}, ["jda"] = {"Jad"}, ["jdg"] = {"Jadgali"}, ["jdt"] = {"Judeo-Tat"}, ["jeb"] = {"Jebero"}, ["jee"] = {"Jerung"}, ["jeh"] = {"Jeh"}, ["jei"] = {"Yei"}, ["jek"] = {"Jeri Kuo"}, ["jel"] = {"Yelmek"}, ["jen"] = {"Dza"}, ["jer"] = {"Jere"}, ["jet"] = {"Manem"}, ["jeu"] = {"Jonkor Bourmataguil"}, ["jgb"] = {"Ngbee"}, ["jge"] = {"Judeo-Georgian"}, ["jgk"] = {"Gwak"}, ["jgo"] = {"Ngomba"}, ["jhi"] = {"Jehai"}, ["jhs"] = {"Jhankot Sign Language"}, ["jia"] = {"Jina"}, ["jib"] = {"Jibu"}, ["jic"] = {"Tol"}, ["jid"] = {"Bu (Kaduna State)"}, ["jie"] = {"Jilbe"}, ["jig"] = {"Jingulu", "Djingili"}, ["jih"] = {"sTodsde", "Shangzhai"}, ["jii"] = {"Jiiddu"}, ["jil"] = {"Jilim"}, ["jim"] = {"Jimi (Cameroon)"}, ["jio"] = {"Jiamao"}, ["jiq"] = {"Guanyinqiao", "Lavrung"}, ["jit"] = {"Jita"}, ["jiu"] = {"Youle Jinuo"}, ["jiv"] = {"Shuar"}, ["jiy"] = {"Buyuan Jinuo"}, ["jje"] = {"Jejueo"}, ["jjr"] = {"Bankal"}, ["jka"] = {"Kaera"}, ["jkm"] = {"Mobwa Karen"}, ["jko"] = {"Kubo"}, ["jkp"] = {"Paku Karen"}, ["jkr"] = {"Koro (India)"}, ["jks"] = {"Amami Koniya Sign Language"}, ["jku"] = {"Labir"}, ["jle"] = {"Ngile"}, ["jls"] = {"Jamaican Sign Language"}, ["jma"] = {"Dima"}, ["jmb"] = {"Zumbun"}, ["jmc"] = {"Machame"}, ["jmd"] = {"Yamdena"}, ["jmi"] = {"Jimi (Nigeria)"}, ["jml"] = {"Jumli"}, ["jmn"] = {"Makuri Naga"}, ["jmr"] = {"Kamara"}, ["jms"] = {"Mashi (Nigeria)"}, ["jmw"] = {"Mouwase"}, ["jmx"] = {"Western Juxtlahuaca Mixtec"}, ["jna"] = {"Jangshung"}, ["jnd"] = {"Jandavra"}, ["jng"] = {"Yangman"}, ["jni"] = {"Janji"}, ["jnj"] = {"Yemsa"}, ["jnl"] = {"Rawat"}, ["jns"] = {"Jaunsari"}, ["job"] = {"Joba"}, ["jod"] = {"Wojenaka"}, ["jog"] = {"Jogi"}, ["jor"] = {"Jorá"}, ["jos"] = {"Jordanian Sign Language"}, ["jow"] = {"Jowulu"}, ["jpa"] = {"Jewish Palestinian Aramaic"}, ["jpr"] = {"Judeo-Persian"}, ["jpx"] = {"Japanese (family)"}, ["jqr"] = {"Jaqaru"}, ["jra"] = {"Jarai"}, ["jrb"] = {"Judeo-Arabic"}, ["jrr"] = {"Jiru"}, ["jrt"] = {"Jakattoe"}, ["jru"] = {"Japrería"}, ["jsl"] = {"Japanese Sign Language"}, ["jua"] = {"Júma"}, ["jub"] = {"Wannu"}, ["juc"] = {"Jurchen"}, ["jud"] = {"Worodougou"}, ["juh"] = {"Hõne"}, ["jui"] = {"Ngadjuri"}, ["juk"] = {"Wapan"}, ["jul"] = {"Jirel"}, ["jum"] = {"Jumjum"}, ["jun"] = {"Juang"}, ["juo"] = {"Jiba"}, ["jup"] = {"Hupdë"}, ["jur"] = {"Jurúna"}, ["jus"] = {"Jumla Sign Language"}, ["jut"] = {"Jutish"}, ["juu"] = {"Ju"}, ["juw"] = {"Wãpha"}, ["juy"] = {"Juray"}, ["jvd"] = {"Javindo"}, ["jvn"] = {"Caribbean Javanese"}, ["jwi"] = {"Jwira-Pepesa"}, ["jya"] = {"Jiarong"}, ["jye"] = {"Judeo-Yemeni Arabic"}, ["jyy"] = {"Jaya"}, ["kaa"] = {"Kara-Kalpak", "Karakalpak"}, ["kab"] = {"Kabyle"}, ["kac"] = {"Kachin", "Jingpho"}, ["kad"] = {"Adara"}, ["kae"] = {"Ketangalan"}, ["kaf"] = {"Katso"}, ["kag"] = {"Kajaman"}, ["kah"] = {"Kara (Central African Republic)"}, ["kai"] = {"Karekare"}, ["kaj"] = {"Jju"}, ["kak"] = {"Kalanguya", "Kayapa Kallahan"}, ["kam"] = {"Kamba (Kenya)"}, ["kao"] = {"Xaasongaxango"}, ["kap"] = {"Bezhta"}, ["kaq"] = {"Capanahua"}, ["kar"] = {"Karen languages"}, ["kav"] = {"Katukína"}, ["kaw"] = {"Kawi"}, ["kax"] = {"Kao"}, ["kay"] = {"Kamayurá"}, ["kba"] = {"Kalarko"}, ["kbb"] = {"Kaxuiâna"}, ["kbc"] = {"Kadiwéu"}, ["kbd"] = {"Kabardian"}, ["kbe"] = {"Kanju"}, ["kbg"] = {"Khamba"}, ["kbh"] = {"Camsá"}, ["kbi"] = {"Kaptiau"}, ["kbj"] = {"Kari"}, ["kbk"] = {"Grass Koiari"}, ["kbl"] = {"Kanembu"}, ["kbm"] = {"Iwal"}, ["kbn"] = {"Kare (Central African Republic)"}, ["kbo"] = {"Keliko"}, ["kbp"] = {"Kabiyè"}, ["kbq"] = {"Kamano"}, ["kbr"] = {"Kafa"}, ["kbs"] = {"Kande"}, ["kbt"] = {"Abadi"}, ["kbu"] = {"Kabutra"}, ["kbv"] = {"Dera (Indonesia)"}, ["kbw"] = {"Kaiep"}, ["kbx"] = {"Ap Ma"}, ["kby"] = {"Manga Kanuri"}, ["kbz"] = {"Duhwa"}, ["kca"] = {"Khanty"}, ["kcb"] = {"Kawacha"}, ["kcc"] = {"Lubila"}, ["kcd"] = {"Ngkâlmpw Kanum"}, ["kce"] = {"Kaivi"}, ["kcf"] = {"Ukaan"}, ["kcg"] = {"Tyap"}, ["kch"] = {"Vono"}, ["kci"] = {"Kamantan"}, ["kcj"] = {"Kobiana"}, ["kck"] = {"Kalanga"}, ["kcl"] = {"Kela (Papua New Guinea)", "Kala"}, ["kcm"] = {"Gula (Central African Republic)"}, ["kcn"] = {"Nubi"}, ["kco"] = {"Kinalakna"}, ["kcp"] = {"Kanga"}, ["kcq"] = {"Kamo"}, ["kcr"] = {"Katla"}, ["kcs"] = {"Koenoem"}, ["kct"] = {"Kaian"}, ["kcu"] = {"Kami (Tanzania)"}, ["kcv"] = {"Kete"}, ["kcw"] = {"Kabwari"}, ["kcx"] = {"Kachama-Ganjule"}, ["kcy"] = {"Korandje"}, ["kcz"] = {"Konongo"}, ["kda"] = {"Worimi"}, ["kdc"] = {"Kutu"}, ["kdd"] = {"Yankunytjatjara"}, ["kde"] = {"Makonde"}, ["kdf"] = {"Mamusi"}, ["kdg"] = {"Seba"}, ["kdh"] = {"Tem"}, ["kdi"] = {"Kumam"}, ["kdj"] = {"Karamojong"}, ["kdk"] = {"Numèè", "Kwényi"}, ["kdl"] = {"Tsikimba"}, ["kdm"] = {"Kagoma"}, ["kdn"] = {"Kunda"}, ["kdo"] = {"Kordofanian languages"}, ["kdp"] = {"Kaningdon-Nindem"}, ["kdq"] = {"Koch"}, ["kdr"] = {"Karaim"}, ["kdt"] = {"Kuy"}, ["kdu"] = {"Kadaru"}, ["kdw"] = {"Koneraw"}, ["kdx"] = {"Kam"}, ["kdy"] = {"Keder", "Keijar"}, ["kdz"] = {"Kwaja"}, ["kea"] = {"Kabuverdianu"}, ["keb"] = {"Kélé"}, ["kec"] = {"Keiga"}, ["ked"] = {"Kerewe"}, ["kee"] = {"Eastern Keres"}, ["kef"] = {"Kpessi"}, ["keg"] = {"Tese"}, ["keh"] = {"Keak"}, ["kei"] = {"Kei"}, ["kej"] = {"Kadar"}, ["kek"] = {"Kekchí"}, ["kel"] = {"Kela (Democratic Republic of Congo)"}, ["kem"] = {"Kemak"}, ["ken"] = {"Kenyang"}, ["keo"] = {"Kakwa"}, ["kep"] = {"Kaikadi"}, ["keq"] = {"Kamar"}, ["ker"] = {"Kera"}, ["kes"] = {"Kugbo"}, ["ket"] = {"Ket"}, ["keu"] = {"Akebu"}, ["kev"] = {"Kanikkaran"}, ["kew"] = {"West Kewa"}, ["kex"] = {"Kukna"}, ["key"] = {"Kupia"}, ["kez"] = {"Kukele"}, ["kfa"] = {"Kodava"}, ["kfb"] = {"Northwestern Kolami"}, ["kfc"] = {"Konda-Dora"}, ["kfd"] = {"Korra Koraga"}, ["kfe"] = {"Kota (India)"}, ["kff"] = {"Koya"}, ["kfg"] = {"Kudiya"}, ["kfh"] = {"Kurichiya"}, ["kfi"] = {"Kannada Kurumba"}, ["kfj"] = {"Kemiehua"}, ["kfk"] = {"Kinnauri"}, ["kfl"] = {"Kung"}, ["kfm"] = {"Khunsari"}, ["kfn"] = {"Kuk"}, ["kfo"] = {"Koro (Côte d'Ivoire)"}, ["kfp"] = {"Korwa"}, ["kfq"] = {"Korku"}, ["kfr"] = {"Kachhi", "Kutchi"}, ["kfs"] = {"Bilaspuri"}, ["kft"] = {"Kanjari"}, ["kfu"] = {"Katkari"}, ["kfv"] = {"Kurmukar"}, ["kfw"] = {"Kharam Naga"}, ["kfx"] = {"Kullu Pahari"}, ["kfy"] = {"Kumaoni"}, ["kfz"] = {"Koromfé"}, ["kga"] = {"Koyaga"}, ["kgb"] = {"Kawe"}, ["kge"] = {"Komering"}, ["kgf"] = {"Kube"}, ["kgg"] = {"Kusunda"}, ["kgi"] = {"Selangor Sign Language"}, ["kgj"] = {"Gamale Kham"}, ["kgk"] = {"Kaiwá"}, ["kgl"] = {"Kunggari"}, ["kgn"] = {"Karingani"}, ["kgo"] = {"Krongo"}, ["kgp"] = {"Kaingang"}, ["kgq"] = {"Kamoro"}, ["kgr"] = {"Abun"}, ["kgs"] = {"Kumbainggar"}, ["kgt"] = {"Somyev"}, ["kgu"] = {"Kobol"}, ["kgv"] = {"Karas"}, ["kgw"] = {"Karon Dori"}, ["kgx"] = {"Kamaru"}, ["kgy"] = {"Kyerung"}, ["kha"] = {"Khasi"}, ["khb"] = {"Lü"}, ["khc"] = {"Tukang Besi North"}, ["khd"] = {"Bädi Kanum"}, ["khe"] = {"Korowai"}, ["khf"] = {"Khuen"}, ["khg"] = {"Khams Tibetan"}, ["khh"] = {"Kehu"}, ["khi"] = {"Khoisan languages"}, ["khj"] = {"Kuturmi"}, ["khk"] = {"Halh Mongolian"}, ["khl"] = {"Lusi"}, ["khn"] = {"Khandesi"}, ["kho"] = {"Khotanese", "Sakan"}, ["khp"] = {"Kapori", "Kapauri"}, ["khq"] = {"Koyra Chiini Songhay"}, ["khr"] = {"Kharia"}, ["khs"] = {"Kasua"}, ["kht"] = {"Khamti"}, ["khu"] = {"Nkhumbi"}, ["khv"] = {"Khvarshi"}, ["khw"] = {"Khowar"}, ["khx"] = {"Kanu"}, ["khy"] = {"Kele (Democratic Republic of Congo)"}, ["khz"] = {"Keapara"}, ["kia"] = {"Kim"}, ["kib"] = {"Koalib"}, ["kic"] = {"Kickapoo"}, ["kid"] = {"Koshin"}, ["kie"] = {"Kibet"}, ["kif"] = {"Eastern Parbate Kham"}, ["kig"] = {"Kimaama", "Kimaghima"}, ["kih"] = {"Kilmeri"}, ["kii"] = {"Kitsai"}, ["kij"] = {"Kilivila"}, ["kil"] = {"Kariya"}, ["kim"] = {"Karagas"}, ["kio"] = {"Kiowa"}, ["kip"] = {"Sheshi Kham"}, ["kiq"] = {"Kosadle", "Kosare"}, ["kis"] = {"Kis"}, ["kit"] = {"Agob"}, ["kiu"] = {"Kirmanjki (individual language)"}, ["kiv"] = {"Kimbu"}, ["kiw"] = {"Northeast Kiwai"}, ["kix"] = {"Khiamniungan Naga"}, ["kiy"] = {"Kirikiri"}, ["kiz"] = {"Kisi"}, ["kja"] = {"Mlap"}, ["kjb"] = {"Q'anjob'al", "Kanjobal"}, ["kjc"] = {"Coastal Konjo"}, ["kjd"] = {"Southern Kiwai"}, ["kje"] = {"Kisar"}, ["kjg"] = {"Khmu"}, ["kjh"] = {"Khakas"}, ["kji"] = {"Zabana"}, ["kjj"] = {"Khinalugh"}, ["kjk"] = {"Highland Konjo"}, ["kjl"] = {"Western Parbate Kham"}, ["kjm"] = {"Kháng"}, ["kjn"] = {"Kunjen"}, ["kjo"] = {"Harijan Kinnauri"}, ["kjp"] = {"Pwo Eastern Karen"}, ["kjq"] = {"Western Keres"}, ["kjr"] = {"Kurudu"}, ["kjs"] = {"East Kewa"}, ["kjt"] = {"Phrae Pwo Karen"}, ["kju"] = {"Kashaya"}, ["kjv"] = {"Kaikavian Literary Language"}, ["kjx"] = {"Ramopa"}, ["kjy"] = {"Erave"}, ["kjz"] = {"Bumthangkha"}, ["kka"] = {"Kakanda"}, ["kkb"] = {"Kwerisa"}, ["kkc"] = {"Odoodee"}, ["kkd"] = {"Kinuku"}, ["kke"] = {"Kakabe"}, ["kkf"] = {"Kalaktang Monpa"}, ["kkg"] = {"Mabaka Valley Kalinga"}, ["kkh"] = {"Khün"}, ["kki"] = {"Kagulu"}, ["kkj"] = {"Kako"}, ["kkk"] = {"Kokota"}, ["kkl"] = {"Kosarek Yale"}, ["kkm"] = {"Kiong"}, ["kkn"] = {"Kon Keu"}, ["kko"] = {"Karko"}, ["kkp"] = {"Gugubera", "Koko-Bera"}, ["kkq"] = {"Kaeku"}, ["kkr"] = {"Kir-Balar"}, ["kks"] = {"Giiwo"}, ["kkt"] = {"Koi"}, ["kku"] = {"Tumi"}, ["kkv"] = {"Kangean"}, ["kkw"] = {"Teke-Kukuya"}, ["kkx"] = {"Kohin"}, ["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"}, ["kkz"] = {"Kaska"}, ["kla"] = {"Klamath-Modoc"}, ["klb"] = {"Kiliwa"}, ["klc"] = {"Kolbila"}, ["kld"] = {"Gamilaraay"}, ["kle"] = {"Kulung (Nepal)"}, ["klf"] = {"Kendeje"}, ["klg"] = {"Tagakaulo"}, ["klh"] = {"Weliki"}, ["kli"] = {"Kalumpang"}, ["klj"] = {"Khalaj"}, ["klk"] = {"Kono (Nigeria)"}, ["kll"] = {"Kagan Kalagan"}, ["klm"] = {"Migum"}, ["kln"] = {"Kalenjin"}, ["klo"] = {"Kapya"}, ["klp"] = {"Kamasa"}, ["klq"] = {"Rumu"}, ["klr"] = {"Khaling"}, ["kls"] = {"Kalasha"}, ["klt"] = {"Nukna"}, ["klu"] = {"Klao"}, ["klv"] = {"Maskelynes"}, ["klw"] = {"Tado", "Lindu"}, ["klx"] = {"Koluwawa"}, ["kly"] = {"Kalao"}, ["klz"] = {"Kabola"}, ["kma"] = {"Konni"}, ["kmb"] = {"Kimbundu"}, ["kmc"] = {"Southern Dong"}, ["kmd"] = {"Majukayang Kalinga"}, ["kme"] = {"Bakole"}, ["kmf"] = {"Kare (Papua New Guinea)"}, ["kmg"] = {"Kâte"}, ["kmh"] = {"Kalam"}, ["kmi"] = {"Kami (Nigeria)"}, ["kmj"] = {"Kumarbhag Paharia"}, ["kmk"] = {"Limos Kalinga"}, ["kml"] = {"Tanudan Kalinga"}, ["kmm"] = {"Kom (India)"}, ["kmn"] = {"Awtuw"}, ["kmo"] = {"Kwoma"}, ["kmp"] = {"Gimme"}, ["kmq"] = {"Kwama"}, ["kmr"] = {"Northern Kurdish"}, ["kms"] = {"Kamasau"}, ["kmt"] = {"Kemtuik"}, ["kmu"] = {"Kanite"}, ["kmv"] = {"Karipúna Creole French"}, ["kmw"] = {"Komo (Democratic Republic of Congo)"}, ["kmx"] = {"Waboda"}, ["kmy"] = {"Koma"}, ["kmz"] = {"Khorasani Turkish"}, ["kna"] = {"Dera (Nigeria)"}, ["knb"] = {"Lubuagan Kalinga"}, ["knc"] = {"Central Kanuri"}, ["knd"] = {"Konda"}, ["kne"] = {"Kankanaey"}, ["knf"] = {"Mankanya"}, ["kng"] = {"Koongo"}, ["kni"] = {"Kanufi"}, ["knj"] = {"Western Kanjobal"}, ["knk"] = {"Kuranko"}, ["knl"] = {"Keninjal"}, ["knm"] = {"Kanamarí"}, ["knn"] = {"Konkani (individual language)"}, ["kno"] = {"Kono (Sierra Leone)"}, ["knp"] = {"Kwanja"}, ["knq"] = {"Kintaq"}, ["knr"] = {"Kaningra"}, ["kns"] = {"Kensiu"}, ["knt"] = {"Panoan Katukína"}, ["knu"] = {"Kono (Guinea)"}, ["knv"] = {"Tabo"}, ["knw"] = {"Kung-Ekoka"}, ["knx"] = {"Kendayan", "Salako"}, ["kny"] = {"Kanyok"}, ["knz"] = {"Kalamsé"}, ["koa"] = {"Konomala"}, ["koc"] = {"Kpati"}, ["kod"] = {"Kodi"}, ["koe"] = {"Kacipo-Bale Suri"}, ["kof"] = {"Kubi"}, ["kog"] = {"Cogui", "Kogi"}, ["koh"] = {"Koyo"}, ["koi"] = {"Komi-Permyak"}, ["kok"] = {"Konkani (macrolanguage)"}, ["kol"] = {"Kol (Papua New Guinea)"}, ["koo"] = {"Konzo"}, ["kop"] = {"Waube"}, ["koq"] = {"Kota (Gabon)"}, ["kos"] = {"Kosraean"}, ["kot"] = {"Lagwan"}, ["kou"] = {"Koke"}, ["kov"] = {"Kudu-Camo"}, ["kow"] = {"Kugama"}, ["koy"] = {"Koyukon"}, ["koz"] = {"Korak"}, ["kpa"] = {"Kutto"}, ["kpb"] = {"Mullu Kurumba"}, ["kpc"] = {"Curripaco"}, ["kpd"] = {"Koba"}, ["kpe"] = {"Kpelle"}, ["kpf"] = {"Komba"}, ["kpg"] = {"Kapingamarangi"}, ["kph"] = {"Kplang"}, ["kpi"] = {"Kofei"}, ["kpj"] = {"Karajá"}, ["kpk"] = {"Kpan"}, ["kpl"] = {"Kpala"}, ["kpm"] = {"Koho"}, ["kpn"] = {"Kepkiriwát"}, ["kpo"] = {"Ikposo"}, ["kpq"] = {"Korupun-Sela"}, ["kpr"] = {"Korafe-Yegha"}, ["kps"] = {"Tehit"}, ["kpt"] = {"Karata"}, ["kpu"] = {"Kafoa"}, ["kpv"] = {"Komi-Zyrian"}, ["kpw"] = {"Kobon"}, ["kpx"] = {"Mountain Koiali"}, ["kpy"] = {"Koryak"}, ["kpz"] = {"Kupsabiny"}, ["kqa"] = {"Mum"}, ["kqb"] = {"Kovai"}, ["kqc"] = {"Doromu-Koki"}, ["kqd"] = {"Koy Sanjaq Surat"}, ["kqe"] = {"Kalagan"}, ["kqf"] = {"Kakabai"}, ["kqg"] = {"Khe"}, ["kqh"] = {"Kisankasa"}, ["kqi"] = {"Koitabu"}, ["kqj"] = {"Koromira"}, ["kqk"] = {"Kotafon Gbe"}, ["kql"] = {"Kyenele"}, ["kqm"] = {"Khisa"}, ["kqn"] = {"Kaonde"}, ["kqo"] = {"Eastern Krahn"}, ["kqp"] = {"Kimré"}, ["kqq"] = {"Krenak"}, ["kqr"] = {"Kimaragang"}, ["kqs"] = {"Northern Kissi"}, ["kqt"] = {"Klias River Kadazan"}, ["kqu"] = {"Seroa"}, ["kqv"] = {"Okolod"}, ["kqw"] = {"Kandas"}, ["kqx"] = {"Mser"}, ["kqy"] = {"Koorete"}, ["kqz"] = {"Korana"}, ["kra"] = {"Kumhali"}, ["krb"] = {"Karkin"}, ["krc"] = {"Karachay-Balkar"}, ["krd"] = {"Kairui-Midiki"}, ["kre"] = {"Panará"}, ["krf"] = {"Koro (Vanuatu)"}, ["krh"] = {"Kurama"}, ["kri"] = {"Krio"}, ["krj"] = {"Kinaray-A"}, ["krk"] = {"Kerek"}, ["krl"] = {"Karelian"}, ["krn"] = {"Sapo"}, ["kro"] = {"Kru languages"}, ["krp"] = {"Durop"}, ["krr"] = {"Krung"}, ["krs"] = {"Gbaya (Sudan)"}, ["krt"] = {"Tumari Kanuri"}, ["kru"] = {"Kurukh"}, ["krv"] = {"Kavet"}, ["krw"] = {"Western Krahn"}, ["krx"] = {"Karon"}, ["kry"] = {"Kryts"}, ["krz"] = {"Sota Kanum"}, ["ksb"] = {"Shambala"}, ["ksc"] = {"Southern Kalinga"}, ["ksd"] = {"Kuanua"}, ["kse"] = {"Kuni"}, ["ksf"] = {"Bafia"}, ["ksg"] = {"Kusaghe"}, ["ksh"] = {"Kölsch"}, ["ksi"] = {"Krisa", "I'saka"}, ["ksj"] = {"Uare"}, ["ksk"] = {"Kansa"}, ["ksl"] = {"Kumalu"}, ["ksm"] = {"Kumba"}, ["ksn"] = {"Kasiguranin"}, ["kso"] = {"Kofa"}, ["ksp"] = {"Kaba"}, ["ksq"] = {"Kwaami"}, ["ksr"] = {"Borong"}, ["kss"] = {"Southern Kisi"}, ["kst"] = {"Winyé"}, ["ksu"] = {"Khamyang"}, ["ksv"] = {"Kusu"}, ["ksw"] = {"S'gaw Karen"}, ["ksx"] = {"Kedang"}, ["ksy"] = {"Kharia Thar"}, ["ksz"] = {"Kodaku"}, ["kta"] = {"Katua"}, ["ktb"] = {"Kambaata"}, ["ktc"] = {"Kholok"}, ["ktd"] = {"Kokata", "Kukatha"}, ["kte"] = {"Nubri"}, ["ktf"] = {"Kwami"}, ["ktg"] = {"Kalkutung"}, ["kth"] = {"Karanga"}, ["kti"] = {"North Muyu"}, ["ktj"] = {"Plapo Krumen"}, ["ktk"] = {"Kaniet"}, ["ktl"] = {"Koroshi"}, ["ktm"] = {"Kurti"}, ["ktn"] = {"Karitiâna"}, ["kto"] = {"Kuot"}, ["ktp"] = {"Kaduo"}, ["ktq"] = {"Katabaga"}, ["kts"] = {"South Muyu"}, ["ktt"] = {"Ketum"}, ["ktu"] = {"Kituba (Democratic Republic of Congo)"}, ["ktv"] = {"Eastern Katu"}, ["ktw"] = {"Kato"}, ["ktx"] = {"Kaxararí"}, ["kty"] = {"Kango (Bas-Uélé District)"}, ["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"}, ["kub"] = {"Kutep"}, ["kuc"] = {"Kwinsu"}, ["kud"] = {"'Auhelawa"}, ["kue"] = {"Kuman (Papua New Guinea)"}, ["kuf"] = {"Western Katu"}, ["kug"] = {"Kupa"}, ["kuh"] = {"Kushi"}, ["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"}, ["kuj"] = {"Kuria"}, ["kuk"] = {"Kepo'"}, ["kul"] = {"Kulere"}, ["kum"] = {"Kumyk"}, ["kun"] = {"Kunama"}, ["kuo"] = {"Kumukio"}, ["kup"] = {"Kunimaipa"}, ["kuq"] = {"Karipuna"}, ["kus"] = {"Kusaal"}, ["kut"] = {"Kutenai"}, ["kuu"] = {"Upper Kuskokwim"}, ["kuv"] = {"Kur"}, ["kuw"] = {"Kpagua"}, ["kux"] = {"Kukatja"}, ["kuy"] = {"Kuuku-Ya'u"}, ["kuz"] = {"Kunza"}, ["kva"] = {"Bagvalal"}, ["kvb"] = {"Kubu"}, ["kvc"] = {"Kove"}, ["kvd"] = {"Kui (Indonesia)"}, ["kve"] = {"Kalabakan"}, ["kvf"] = {"Kabalai"}, ["kvg"] = {"Kuni-Boazi"}, ["kvh"] = {"Komodo"}, ["kvi"] = {"Kwang"}, ["kvj"] = {"Psikye"}, ["kvk"] = {"Korean Sign Language"}, ["kvl"] = {"Kayaw"}, ["kvm"] = {"Kendem"}, ["kvn"] = {"Border Kuna"}, ["kvo"] = {"Dobel"}, ["kvp"] = {"Kompane"}, ["kvq"] = {"Geba Karen"}, ["kvr"] = {"Kerinci"}, ["kvt"] = {"Lahta Karen", "Lahta"}, ["kvu"] = {"Yinbaw Karen"}, ["kvv"] = {"Kola"}, ["kvw"] = {"Wersing"}, ["kvx"] = {"Parkari Koli"}, ["kvy"] = {"Yintale Karen", "Yintale"}, ["kvz"] = {"Tsakwambo", "Tsaukambo"}, ["kwa"] = {"Dâw"}, ["kwb"] = {"Kwa"}, ["kwc"] = {"Likwala"}, ["kwd"] = {"Kwaio"}, ["kwe"] = {"Kwerba"}, ["kwf"] = {"Kwara'ae"}, ["kwg"] = {"Sara Kaba Deme"}, ["kwh"] = {"Kowiai"}, ["kwi"] = {"Awa-Cuaiquer"}, ["kwj"] = {"Kwanga"}, ["kwk"] = {"Kwakiutl"}, ["kwl"] = {"Kofyar"}, ["kwm"] = {"Kwambi"}, ["kwn"] = {"Kwangali"}, ["kwo"] = {"Kwomtari"}, ["kwp"] = {"Kodia"}, ["kwr"] = {"Kwer"}, ["kws"] = {"Kwese"}, ["kwt"] = {"Kwesten"}, ["kwu"] = {"Kwakum"}, ["kwv"] = {"Sara Kaba Náà"}, ["kww"] = {"Kwinti"}, ["kwx"] = {"Khirwar"}, ["kwy"] = {"San Salvador Kongo"}, ["kwz"] = {"Kwadi"}, ["kxa"] = {"Kairiru"}, ["kxb"] = {"Krobu"}, ["kxc"] = {"Konso", "Khonso"}, ["kxd"] = {"Brunei"}, ["kxf"] = {"Manumanaw Karen", "Manumanaw"}, ["kxh"] = {"Karo (Ethiopia)"}, ["kxi"] = {"Keningau Murut"}, ["kxj"] = {"Kulfa"}, ["kxk"] = {"Zayein Karen"}, ["kxm"] = {"Northern Khmer"}, ["kxn"] = {"Kanowit-Tanjong Melanau"}, ["kxo"] = {"Kanoé"}, ["kxp"] = {"Wadiyara Koli"}, ["kxq"] = {"Smärky Kanum"}, ["kxr"] = {"Koro (Papua New Guinea)"}, ["kxs"] = {"Kangjia"}, ["kxt"] = {"Koiwat"}, ["kxv"] = {"Kuvi"}, ["kxw"] = {"Konai"}, ["kxx"] = {"Likuba"}, ["kxy"] = {"Kayong"}, ["kxz"] = {"Kerewo"}, ["kya"] = {"Kwaya"}, ["kyb"] = {"Butbut Kalinga"}, ["kyc"] = {"Kyaka"}, ["kyd"] = {"Karey"}, ["kye"] = {"Krache"}, ["kyf"] = {"Kouya"}, ["kyg"] = {"Keyagana"}, ["kyh"] = {"Karok"}, ["kyi"] = {"Kiput"}, ["kyj"] = {"Karao"}, ["kyk"] = {"Kamayo"}, ["kyl"] = {"Kalapuya"}, ["kym"] = {"Kpatili"}, ["kyn"] = {"Northern Binukidnon"}, ["kyo"] = {"Kelon"}, ["kyp"] = {"Kang"}, ["kyq"] = {"Kenga"}, ["kyr"] = {"Kuruáya"}, ["kys"] = {"Baram Kayan"}, ["kyt"] = {"Kayagar"}, ["kyu"] = {"Western Kayah"}, ["kyv"] = {"Kayort"}, ["kyw"] = {"Kudmali"}, ["kyx"] = {"Rapoisi"}, ["kyy"] = {"Kambaira"}, ["kyz"] = {"Kayabí"}, ["kza"] = {"Western Karaboro"}, ["kzb"] = {"Kaibobo"}, ["kzc"] = {"Bondoukou Kulango"}, ["kzd"] = {"Kadai"}, ["kze"] = {"Kosena"}, ["kzf"] = {"Da'a Kaili"}, ["kzg"] = {"Kikai"}, ["kzi"] = {"Kelabit"}, ["kzk"] = {"Kazukuru"}, ["kzl"] = {"Kayeli"}, ["kzm"] = {"Kais"}, ["kzn"] = {"Kokola"}, ["kzo"] = {"Kaningi"}, ["kzp"] = {"Kaidipang"}, ["kzq"] = {"Kaike"}, ["kzr"] = {"Karang"}, ["kzs"] = {"Sugut Dusun"}, ["kzu"] = {"Kayupulau"}, ["kzv"] = {"Komyandaret"}, ["kzw"] = {"Karirí-Xocó"}, ["kzx"] = {"Kamarian"}, ["kzy"] = {"Kango (Tshopo District)"}, ["kzz"] = {"Kalabra"}, ["laa"] = {"Southern Subanen"}, ["lab"] = {"Linear A"}, ["lac"] = {"Lacandon"}, ["lad"] = {"Ladino"}, ["lae"] = {"Pattani"}, ["laf"] = {"Lafofa"}, ["lag"] = {"Rangi"}, ["lah"] = {"Lahnda"}, ["lai"] = {"Lambya"}, ["laj"] = {"Lango (Uganda)"}, ["lal"] = {"Lalia"}, ["lam"] = {"Lamba"}, ["lan"] = {"Laru"}, ["lap"] = {"Laka (Chad)"}, ["laq"] = {"Qabiao"}, ["lar"] = {"Larteh"}, ["las"] = {"Lama (Togo)"}, ["lau"] = {"Laba"}, ["law"] = {"Lauje"}, ["lax"] = {"Tiwa"}, ["lay"] = {"Lama Bai"}, ["laz"] = {"Aribwatsa"}, ["lbb"] = {"Label"}, ["lbc"] = {"Lakkia"}, ["lbe"] = {"Lak"}, ["lbf"] = {"Tinani"}, ["lbg"] = {"Laopang"}, ["lbi"] = {"La'bi"}, ["lbj"] = {"Ladakhi"}, ["lbk"] = {"Central Bontok"}, ["lbl"] = {"Libon Bikol"}, ["lbm"] = {"Lodhi"}, ["lbn"] = {"Rmeet"}, ["lbo"] = {"Laven"}, ["lbq"] = {"Wampar"}, ["lbr"] = {"Lohorung"}, ["lbs"] = {"Libyan Sign Language"}, ["lbt"] = {"Lachi"}, ["lbu"] = {"Labu"}, ["lbv"] = {"Lavatbura-Lamusong"}, ["lbw"] = {"Tolaki"}, ["lbx"] = {"Lawangan"}, ["lby"] = {"Lamalama", "Lamu-Lamu"}, ["lbz"] = {"Lardil"}, ["lcc"] = {"Legenyem"}, ["lcd"] = {"Lola"}, ["lce"] = {"Loncong", "Sekak"}, ["lcf"] = {"Lubu"}, ["lch"] = {"Luchazi"}, ["lcl"] = {"Lisela"}, ["lcm"] = {"Tungag"}, ["lcp"] = {"Western Lawa"}, ["lcq"] = {"Luhu"}, ["lcs"] = {"Lisabata-Nuniali"}, ["lda"] = {"Kla-Dan"}, ["ldb"] = {"Dũya"}, ["ldd"] = {"Luri"}, ["ldg"] = {"Lenyima"}, ["ldh"] = {"Lamja-Dengsa-Tola"}, ["ldi"] = {"Laari"}, ["ldj"] = {"Lemoro"}, ["ldk"] = {"Leelau"}, ["ldl"] = {"Kaan"}, ["ldm"] = {"Landoma"}, ["ldn"] = {"Láadan"}, ["ldo"] = {"Loo"}, ["ldp"] = {"Tso"}, ["ldq"] = {"Lufu"}, ["lea"] = {"Lega-Shabunda"}, ["leb"] = {"Lala-Bisa"}, ["lec"] = {"Leco"}, ["led"] = {"Lendu"}, ["lee"] = {"Lyélé"}, ["lef"] = {"Lelemi"}, ["leh"] = {"Lenje"}, ["lei"] = {"Lemio"}, ["lej"] = {"Lengola"}, ["lek"] = {"Leipon"}, ["lel"] = {"Lele (Democratic Republic of Congo)"}, ["lem"] = {"Nomaande"}, ["len"] = {"Lenca"}, ["leo"] = {"Leti (Cameroon)"}, ["lep"] = {"Lepcha"}, ["leq"] = {"Lembena"}, ["ler"] = {"Lenkau"}, ["les"] = {"Lese"}, ["let"] = {"Lesing-Gelimi", "Amio-Gelimi"}, ["leu"] = {"Kara (Papua New Guinea)"}, ["lev"] = {"Lamma"}, ["lew"] = {"Ledo Kaili"}, ["lex"] = {"Luang"}, ["ley"] = {"Lemolang"}, ["lez"] = {"Lezghian"}, ["lfa"] = {"Lefa"}, ["lfn"] = {"Lingua Franca Nova"}, ["lga"] = {"Lungga"}, ["lgb"] = {"Laghu"}, ["lgg"] = {"Lugbara"}, ["lgh"] = {"Laghuu"}, ["lgi"] = {"Lengilu"}, ["lgk"] = {"Lingarak", "Neverver"}, ["lgl"] = {"Wala"}, ["lgm"] = {"Lega-Mwenga"}, ["lgn"] = {"T'apo", "Opuuo"}, ["lgo"] = {"Lango (South Sudan)"}, ["lgq"] = {"Logba"}, ["lgr"] = {"Lengo"}, ["lgs"] = {"Guinea-Bissau Sign Language", "Língua Gestual Guineense"}, ["lgt"] = {"Pahi"}, ["lgu"] = {"Longgu"}, ["lgz"] = {"Ligenza"}, ["lha"] = {"Laha (Viet Nam)"}, ["lhh"] = {"Laha (Indonesia)"}, ["lhi"] = {"Lahu Shi"}, ["lhl"] = {"Lahul Lohar"}, ["lhm"] = {"Lhomi"}, ["lhn"] = {"Lahanan"}, ["lhp"] = {"Lhokpu"}, ["lhs"] = {"Mlahsö"}, ["lht"] = {"Lo-Toga"}, ["lhu"] = {"Lahu"}, ["lia"] = {"West-Central Limba"}, ["lib"] = {"Likum"}, ["lic"] = {"Hlai"}, ["lid"] = {"Nyindrou"}, ["lie"] = {"Likila"}, ["lif"] = {"Limbu"}, ["lig"] = {"Ligbi"}, ["lih"] = {"Lihir"}, ["lij"] = {"Ligurian"}, ["lik"] = {"Lika"}, ["lil"] = {"Lillooet"}, ["lio"] = {"Liki"}, ["lip"] = {"Sekpele"}, ["liq"] = {"Libido"}, ["lir"] = {"Liberian English"}, ["lis"] = {"Lisu"}, ["liu"] = {"Logorik"}, ["liv"] = {"Liv"}, ["liw"] = {"Col"}, ["lix"] = {"Liabuku"}, ["liy"] = {"Banda-Bambari"}, ["liz"] = {"Libinza"}, ["lja"] = {"Golpa"}, ["lje"] = {"Rampi"}, ["lji"] = {"Laiyolo"}, ["ljl"] = {"Li'o"}, ["ljp"] = {"Lampung Api"}, ["ljw"] = {"Yirandali"}, ["ljx"] = {"Yuru"}, ["lka"] = {"Lakalei"}, ["lkb"] = {"Kabras", "Lukabaras"}, ["lkc"] = {"Kucong"}, ["lkd"] = {"Lakondê"}, ["lke"] = {"Kenyi"}, ["lkh"] = {"Lakha"}, ["lki"] = {"Laki"}, ["lkj"] = {"Remun"}, ["lkl"] = {"Laeko-Libuat"}, ["lkm"] = {"Kalaamaya"}, ["lkn"] = {"Lakon", "Vure"}, ["lko"] = {"Khayo", "Olukhayo"}, ["lkr"] = {"Päri"}, ["lks"] = {"Kisa", "Olushisa"}, ["lkt"] = {"Lakota"}, ["lku"] = {"Kungkari"}, ["lky"] = {"Lokoya"}, ["lla"] = {"Lala-Roba"}, ["llb"] = {"Lolo"}, ["llc"] = {"Lele (Guinea)"}, ["lld"] = {"Ladin"}, ["lle"] = {"Lele (Papua New Guinea)"}, ["llf"] = {"Hermit"}, ["llg"] = {"Lole"}, ["llh"] = {"Lamu"}, ["lli"] = {"Teke-Laali"}, ["llj"] = {"Ladji Ladji"}, ["llk"] = {"Lelak"}, ["lll"] = {"Lilau"}, ["llm"] = {"Lasalimu"}, ["lln"] = {"Lele (Chad)"}, ["llp"] = {"North Efate"}, ["llq"] = {"Lolak"}, ["lls"] = {"Lithuanian Sign Language"}, ["llu"] = {"Lau"}, ["llx"] = {"Lauan"}, ["lma"] = {"East Limba"}, ["lmb"] = {"Merei"}, ["lmc"] = {"Limilngan"}, ["lmd"] = {"Lumun"}, ["lme"] = {"Pévé"}, ["lmf"] = {"South Lembata"}, ["lmg"] = {"Lamogai"}, ["lmh"] = {"Lambichhong"}, ["lmi"] = {"Lombi"}, ["lmj"] = {"West Lembata"}, ["lmk"] = {"Lamkang"}, ["lml"] = {"Hano"}, ["lmn"] = {"Lambadi"}, ["lmo"] = {"Lombard"}, ["lmp"] = {"Limbum"}, ["lmq"] = {"Lamatuka"}, ["lmr"] = {"Lamalera"}, ["lmu"] = {"Lamenu"}, ["lmv"] = {"Lomaiviti"}, ["lmw"] = {"Lake Miwok"}, ["lmx"] = {"Laimbue"}, ["lmy"] = {"Lamboya"}, ["lna"] = {"Langbashe"}, ["lnb"] = {"Mbalanhu"}, ["lnd"] = {"Lundayeh", "Lun Bawang"}, ["lng"] = {"Langobardic"}, ["lnh"] = {"Lanoh"}, ["lni"] = {"Daantanai'"}, ["lnj"] = {"Leningitij"}, ["lnl"] = {"South Central Banda"}, ["lnm"] = {"Langam"}, ["lnn"] = {"Lorediakarkar"}, ["lns"] = {"Lamnso'"}, ["lnu"] = {"Longuda"}, ["lnw"] = {"Lanima"}, ["lnz"] = {"Lonzo"}, ["loa"] = {"Loloda"}, ["lob"] = {"Lobi"}, ["loc"] = {"Inonhan"}, ["loe"] = {"Saluan"}, ["lof"] = {"Logol"}, ["log"] = {"Logo"}, ["loh"] = {"Laarim", "Narim"}, ["loi"] = {"Loma (Côte d'Ivoire)"}, ["loj"] = {"Lou"}, ["lok"] = {"Loko"}, ["lol"] = {"Mongo"}, ["lom"] = {"Loma (Liberia)"}, ["lon"] = {"Malawi Lomwe"}, ["loo"] = {"Lombo"}, ["lop"] = {"Lopa"}, ["loq"] = {"Lobala"}, ["lor"] = {"Téén"}, ["los"] = {"Loniu"}, ["lot"] = {"Otuho"}, ["lou"] = {"Louisiana Creole"}, ["lov"] = {"Lopi"}, ["low"] = {"Tampias Lobu"}, ["lox"] = {"Loun"}, ["loy"] = {"Loke"}, ["loz"] = {"Lozi"}, ["lpa"] = {"Lelepa"}, ["lpe"] = {"Lepki"}, ["lpn"] = {"Long Phuri Naga"}, ["lpo"] = {"Lipo"}, ["lpx"] = {"Lopit"}, ["lqr"] = {"Logir"}, ["lra"] = {"Rara Bakati'"}, ["lrc"] = {"Northern Luri"}, ["lre"] = {"Laurentian"}, ["lrg"] = {"Laragia"}, ["lri"] = {"Marachi", "Olumarachi"}, ["lrk"] = {"Loarki"}, ["lrl"] = {"Lari"}, ["lrm"] = {"Marama", "Olumarama"}, ["lrn"] = {"Lorang"}, ["lro"] = {"Laro"}, ["lrr"] = {"Southern Yamphu"}, ["lrt"] = {"Larantuka Malay"}, ["lrv"] = {"Larevat"}, ["lrz"] = {"Lemerig"}, ["lsa"] = {"Lasgerdi"}, ["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"}, ["lsc"] = {"Albarradas Sign Language", "Lengua de señas Albarradas"}, ["lsd"] = {"Lishana Deni"}, ["lse"] = {"Lusengo"}, ["lsh"] = {"Lish"}, ["lsi"] = {"Lashi"}, ["lsl"] = {"Latvian Sign Language"}, ["lsm"] = {"Saamia", "Olusamia"}, ["lsn"] = {"Tibetan Sign Language"}, ["lso"] = {"Laos Sign Language"}, ["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"}, ["lsr"] = {"Aruop"}, ["lss"] = {"Lasi"}, ["lst"] = {"Trinidad and Tobago Sign Language"}, ["lsv"] = {"Sivia Sign Language"}, ["lsw"] = {"Seychelles Sign Language", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"}, ["lsy"] = {"Mauritian Sign Language"}, ["ltc"] = {"Late Middle Chinese"}, ["ltg"] = {"Latgalian"}, ["lth"] = {"Thur"}, ["lti"] = {"Leti (Indonesia)"}, ["ltn"] = {"Latundê"}, ["lto"] = {"Tsotso", "Olutsotso"}, ["lts"] = {"Tachoni", "Lutachoni"}, ["ltu"] = {"Latu"}, ["lua"] = {"Luba-Lulua"}, ["luc"] = {"Aringa"}, ["lud"] = {"Ludian"}, ["lue"] = {"Luvale"}, ["luf"] = {"Laua"}, ["lui"] = {"Luiseno"}, ["luj"] = {"Luna"}, ["luk"] = {"Lunanakha"}, ["lul"] = {"Olu'bo"}, ["lum"] = {"Luimbi"}, ["lun"] = {"Lunda"}, ["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"}, ["lup"] = {"Lumbu"}, ["luq"] = {"Lucumi"}, ["lur"] = {"Laura"}, ["lus"] = {"Lushai"}, ["lut"] = {"Lushootseed"}, ["luu"] = {"Lumba-Yakkha"}, ["luv"] = {"Luwati"}, ["luw"] = {"Luo (Cameroon)"}, ["luy"] = {"Luyia", "Oluluyia"}, ["luz"] = {"Southern Luri"}, ["lva"] = {"Maku'a"}, ["lvi"] = {"Lavi"}, ["lvk"] = {"Lavukaleve"}, ["lvl"] = {"Lwel"}, ["lvs"] = {"Standard Latvian"}, ["lvu"] = {"Levuka"}, ["lwa"] = {"Lwalu"}, ["lwe"] = {"Lewo Eleng"}, ["lwg"] = {"Wanga", "Oluwanga"}, ["lwh"] = {"White Lachi"}, ["lwl"] = {"Eastern Lawa"}, ["lwm"] = {"Laomian"}, ["lwo"] = {"Luwo"}, ["lws"] = {"Malawian Sign Language"}, ["lwt"] = {"Lewotobi"}, ["lwu"] = {"Lawu"}, ["lww"] = {"Lewo"}, ["lxm"] = {"Lakurumau"}, ["lya"] = {"Layakha"}, ["lyg"] = {"Lyngngam"}, ["lyn"] = {"Luyana"}, ["lzh"] = {"Literary Chinese"}, ["lzl"] = {"Litzlitz"}, ["lzn"] = {"Leinong Naga"}, ["lzz"] = {"Laz"}, ["maa"] = {"San Jerónimo Tecóatl Mazatec"}, ["mab"] = {"Yutanduchi Mixtec"}, ["mad"] = {"Madurese"}, ["mae"] = {"Bo-Rukul"}, ["maf"] = {"Mafa"}, ["mag"] = {"Magahi"}, ["mai"] = {"Maithili"}, ["maj"] = {"Jalapa De Díaz Mazatec"}, ["mak"] = {"Makasar"}, ["mam"] = {"Mam"}, ["man"] = {"Mandingo", "Manding"}, ["map"] = {"Austronesian languages"}, ["maq"] = {"Chiquihuitlán Mazatec"}, ["mas"] = {"Masai"}, ["mat"] = {"San Francisco Matlatzinca"}, ["mau"] = {"Huautla Mazatec"}, ["mav"] = {"Sateré-Mawé"}, ["maw"] = {"Mampruli"}, ["max"] = {"North Moluccan Malay"}, ["maz"] = {"Central Mazahua"}, ["mba"] = {"Higaonon"}, ["mbb"] = {"Western Bukidnon Manobo"}, ["mbc"] = {"Macushi"}, ["mbd"] = {"Dibabawon Manobo"}, ["mbe"] = {"Molale"}, ["mbf"] = {"Baba Malay"}, ["mbh"] = {"Mangseng"}, ["mbi"] = {"Ilianen Manobo"}, ["mbj"] = {"Nadëb"}, ["mbk"] = {"Malol"}, ["mbl"] = {"Maxakalí"}, ["mbm"] = {"Ombamba"}, ["mbn"] = {"Macaguán"}, ["mbo"] = {"Mbo (Cameroon)"}, ["mbp"] = {"Malayo"}, ["mbq"] = {"Maisin"}, ["mbr"] = {"Nukak Makú"}, ["mbs"] = {"Sarangani Manobo"}, ["mbt"] = {"Matigsalug Manobo"}, ["mbu"] = {"Mbula-Bwazza"}, ["mbv"] = {"Mbulungish"}, ["mbw"] = {"Maring"}, ["mbx"] = {"Mari (East Sepik Province)"}, ["mby"] = {"Memoni"}, ["mbz"] = {"Amoltepec Mixtec"}, ["mca"] = {"Maca"}, ["mcb"] = {"Machiguenga"}, ["mcc"] = {"Bitur"}, ["mcd"] = {"Sharanahua"}, ["mce"] = {"Itundujia Mixtec"}, ["mcf"] = {"Matsés"}, ["mcg"] = {"Mapoyo"}, ["mch"] = {"Maquiritari"}, ["mci"] = {"Mese"}, ["mcj"] = {"Mvanip"}, ["mck"] = {"Mbunda"}, ["mcl"] = {"Macaguaje"}, ["mcm"] = {"Malaccan Creole Portuguese"}, ["mcn"] = {"Masana"}, ["mco"] = {"Coatlán Mixe"}, ["mcp"] = {"Makaa"}, ["mcq"] = {"Ese"}, ["mcr"] = {"Menya"}, ["mcs"] = {"Mambai"}, ["mct"] = {"Mengisa"}, ["mcu"] = {"Cameroon Mambila"}, ["mcv"] = {"Minanibai"}, ["mcw"] = {"Mawa (Chad)"}, ["mcx"] = {"Mpiemo"}, ["mcy"] = {"South Watut"}, ["mcz"] = {"Mawan"}, ["mda"] = {"Mada (Nigeria)"}, ["mdb"] = {"Morigi"}, ["mdc"] = {"Male (Papua New Guinea)"}, ["mdd"] = {"Mbum"}, ["mde"] = {"Maba (Chad)"}, ["mdf"] = {"Moksha"}, ["mdg"] = {"Massalat"}, ["mdh"] = {"Maguindanaon"}, ["mdi"] = {"Mamvu"}, ["mdj"] = {"Mangbetu"}, ["mdk"] = {"Mangbutu"}, ["mdl"] = {"Maltese Sign Language"}, ["mdm"] = {"Mayogo"}, ["mdn"] = {"Mbati"}, ["mdp"] = {"Mbala"}, ["mdq"] = {"Mbole"}, ["mdr"] = {"Mandar"}, ["mds"] = {"Maria (Papua New Guinea)"}, ["mdt"] = {"Mbere"}, ["mdu"] = {"Mboko"}, ["mdv"] = {"Santa Lucía Monteverde Mixtec"}, ["mdw"] = {"Mbosi"}, ["mdx"] = {"Dizin"}, ["mdy"] = {"Male (Ethiopia)"}, ["mdz"] = {"Suruí Do Pará"}, ["mea"] = {"Menka"}, ["meb"] = {"Ikobi"}, ["mec"] = {"Marra"}, ["med"] = {"Melpa"}, ["mee"] = {"Mengen"}, ["mef"] = {"Megam"}, ["meh"] = {"Southwestern Tlaxiaco Mixtec"}, ["mei"] = {"Midob"}, ["mej"] = {"Meyah"}, ["mek"] = {"Mekeo"}, ["mel"] = {"Central Melanau"}, ["mem"] = {"Mangala"}, ["men"] = {"Mende (Sierra Leone)"}, ["meo"] = {"Kedah Malay"}, ["mep"] = {"Miriwoong"}, ["meq"] = {"Merey"}, ["mer"] = {"Meru"}, ["mes"] = {"Masmaje"}, ["met"] = {"Mato"}, ["meu"] = {"Motu"}, ["mev"] = {"Mano"}, ["mew"] = {"Maaka"}, ["mey"] = {"Hassaniyya"}, ["mez"] = {"Menominee"}, ["mfa"] = {"Pattani Malay"}, ["mfb"] = {"Bangka"}, ["mfc"] = {"Mba"}, ["mfd"] = {"Mendankwe-Nkwen"}, ["mfe"] = {"Morisyen"}, ["mff"] = {"Naki"}, ["mfg"] = {"Mogofin"}, ["mfh"] = {"Matal"}, ["mfi"] = {"Wandala"}, ["mfj"] = {"Mefele"}, ["mfk"] = {"North Mofu"}, ["mfl"] = {"Putai"}, ["mfm"] = {"Marghi South"}, ["mfn"] = {"Cross River Mbembe"}, ["mfo"] = {"Mbe"}, ["mfp"] = {"Makassar Malay"}, ["mfq"] = {"Moba"}, ["mfr"] = {"Marrithiyel"}, ["mfs"] = {"Mexican Sign Language"}, ["mft"] = {"Mokerang"}, ["mfu"] = {"Mbwela"}, ["mfv"] = {"Mandjak"}, ["mfw"] = {"Mulaha"}, ["mfx"] = {"Melo"}, ["mfy"] = {"Mayo"}, ["mfz"] = {"Mabaan"}, ["mga"] = {"Middle Irish (900-1200)"}, ["mgb"] = {"Mararit"}, ["mgc"] = {"Morokodo"}, ["mgd"] = {"Moru"}, ["mge"] = {"Mango"}, ["mgf"] = {"Maklew"}, ["mgg"] = {"Mpumpong"}, ["mgh"] = {"Makhuwa-Meetto"}, ["mgi"] = {"Lijili"}, ["mgj"] = {"Abureni"}, ["mgk"] = {"Mawes"}, ["mgl"] = {"Maleu-Kilenge"}, ["mgm"] = {"Mambae"}, ["mgn"] = {"Mbangi"}, ["mgo"] = {"Meta'"}, ["mgp"] = {"Eastern Magar"}, ["mgq"] = {"Malila"}, ["mgr"] = {"Mambwe-Lungu"}, ["mgs"] = {"Manda (Tanzania)"}, ["mgt"] = {"Mongol"}, ["mgu"] = {"Mailu"}, ["mgv"] = {"Matengo"}, ["mgw"] = {"Matumbi"}, ["mgy"] = {"Mbunga"}, ["mgz"] = {"Mbugwe"}, ["mha"] = {"Manda (India)"}, ["mhb"] = {"Mahongwe"}, ["mhc"] = {"Mocho"}, ["mhd"] = {"Mbugu"}, ["mhe"] = {"Besisi", "Mah Meri"}, ["mhf"] = {"Mamaa"}, ["mhg"] = {"Margu"}, ["mhi"] = {"Ma'di"}, ["mhj"] = {"Mogholi"}, ["mhk"] = {"Mungaka"}, ["mhl"] = {"Mauwake"}, ["mhm"] = {"Makhuwa-Moniga"}, ["mhn"] = {"Mócheno"}, ["mho"] = {"Mashi (Zambia)"}, ["mhp"] = {"Balinese Malay"}, ["mhq"] = {"Mandan"}, ["mhr"] = {"Eastern Mari"}, ["mhs"] = {"Buru (Indonesia)"}, ["mht"] = {"Mandahuaca"}, ["mhu"] = {"Digaro-Mishmi", "Darang Deng"}, ["mhw"] = {"Mbukushu"}, ["mhx"] = {"Maru", "Lhaovo"}, ["mhy"] = {"Ma'anyan"}, ["mhz"] = {"Mor (Mor Islands)"}, ["mia"] = {"Miami"}, ["mib"] = {"Atatláhuca Mixtec"}, ["mic"] = {"Mi'kmaq", "Micmac"}, ["mid"] = {"Mandaic"}, ["mie"] = {"Ocotepec Mixtec"}, ["mif"] = {"Mofu-Gudur"}, ["mig"] = {"San Miguel El Grande Mixtec"}, ["mih"] = {"Chayuco Mixtec"}, ["mii"] = {"Chigmecatitlán Mixtec"}, ["mij"] = {"Abar", "Mungbam"}, ["mik"] = {"Mikasuki"}, ["mil"] = {"Peñoles Mixtec"}, ["mim"] = {"Alacatlatzala Mixtec"}, ["min"] = {"Minangkabau"}, ["mio"] = {"Pinotepa Nacional Mixtec"}, ["mip"] = {"Apasco-Apoala Mixtec"}, ["miq"] = {"Mískito"}, ["mir"] = {"Isthmus Mixe"}, ["mis"] = {"Uncoded languages"}, ["mit"] = {"Southern Puebla Mixtec"}, ["miu"] = {"Cacaloxtepec Mixtec"}, ["miw"] = {"Akoye"}, ["mix"] = {"Mixtepec Mixtec"}, ["miy"] = {"Ayutla Mixtec"}, ["miz"] = {"Coatzospan Mixtec"}, ["mjb"] = {"Makalero"}, ["mjc"] = {"San Juan Colorado Mixtec"}, ["mjd"] = {"Northwest Maidu"}, ["mje"] = {"Muskum"}, ["mjg"] = {"Tu"}, ["mjh"] = {"Mwera (Nyasa)"}, ["mji"] = {"Kim Mun"}, ["mjj"] = {"Mawak"}, ["mjk"] = {"Matukar"}, ["mjl"] = {"Mandeali"}, ["mjm"] = {"Medebur"}, ["mjn"] = {"Ma (Papua New Guinea)"}, ["mjo"] = {"Malankuravan"}, ["mjp"] = {"Malapandaram"}, ["mjq"] = {"Malaryan"}, ["mjr"] = {"Malavedan"}, ["mjs"] = {"Miship"}, ["mjt"] = {"Sauria Paharia"}, ["mju"] = {"Manna-Dora"}, ["mjv"] = {"Mannan"}, ["mjw"] = {"Karbi"}, ["mjx"] = {"Mahali"}, ["mjy"] = {"Mahican"}, ["mjz"] = {"Majhi"}, ["mka"] = {"Mbre"}, ["mkb"] = {"Mal Paharia"}, ["mkc"] = {"Siliput"}, ["mke"] = {"Mawchi"}, ["mkf"] = {"Miya"}, ["mkg"] = {"Mak (China)"}, ["mkh"] = {"Mon-Khmer languages"}, ["mki"] = {"Dhatki"}, ["mkj"] = {"Mokilese"}, ["mkk"] = {"Byep"}, ["mkl"] = {"Mokole"}, ["mkm"] = {"Moklen"}, ["mkn"] = {"Kupang Malay"}, ["mko"] = {"Mingang Doso"}, ["mkp"] = {"Moikodi"}, ["mkq"] = {"Bay Miwok"}, ["mkr"] = {"Malas"}, ["mks"] = {"Silacayoapan Mixtec"}, ["mkt"] = {"Vamale"}, ["mku"] = {"Konyanka Maninka"}, ["mkv"] = {"Mafea"}, ["mkw"] = {"Kituba (Congo)"}, ["mkx"] = {"Kinamiging Manobo"}, ["mky"] = {"East Makian"}, ["mkz"] = {"Makasae"}, ["mla"] = {"Malo"}, ["mlb"] = {"Mbule"}, ["mlc"] = {"Cao Lan"}, ["mle"] = {"Manambu"}, ["mlf"] = {"Mal"}, ["mlh"] = {"Mape"}, ["mli"] = {"Malimpung"}, ["mlj"] = {"Miltu"}, ["mlk"] = {"Ilwana", "Kiwilwana"}, ["mll"] = {"Malua Bay"}, ["mlm"] = {"Mulam"}, ["mln"] = {"Malango"}, ["mlo"] = {"Mlomp"}, ["mlp"] = {"Bargam"}, ["mlq"] = {"Western Maninkakan"}, ["mlr"] = {"Vame"}, ["mls"] = {"Masalit"}, ["mlu"] = {"To'abaita"}, ["mlv"] = {"Motlav", "Mwotlap"}, ["mlw"] = {"Moloko"}, ["mlx"] = {"Malfaxal", "Naha'ai"}, ["mlz"] = {"Malaynon"}, ["mma"] = {"Mama"}, ["mmb"] = {"Momina"}, ["mmc"] = {"Michoacán Mazahua"}, ["mmd"] = {"Maonan"}, ["mme"] = {"Mae"}, ["mmf"] = {"Mundat"}, ["mmg"] = {"North Ambrym"}, ["mmh"] = {"Mehináku"}, ["mmi"] = {"Musar"}, ["mmj"] = {"Majhwar"}, ["mmk"] = {"Mukha-Dora"}, ["mml"] = {"Man Met"}, ["mmm"] = {"Maii"}, ["mmn"] = {"Mamanwa"}, ["mmo"] = {"Mangga Buang"}, ["mmp"] = {"Siawi"}, ["mmq"] = {"Musak"}, ["mmr"] = {"Western Xiangxi Miao"}, ["mmt"] = {"Malalamai"}, ["mmu"] = {"Mmaala"}, ["mmv"] = {"Miriti"}, ["mmw"] = {"Emae"}, ["mmx"] = {"Madak"}, ["mmy"] = {"Migaama"}, ["mmz"] = {"Mabaale"}, ["mna"] = {"Mbula"}, ["mnb"] = {"Muna"}, ["mnc"] = {"Manchu"}, ["mnd"] = {"Mondé"}, ["mne"] = {"Naba"}, ["mnf"] = {"Mundani"}, ["mng"] = {"Eastern Mnong"}, ["mnh"] = {"Mono (Democratic Republic of Congo)"}, ["mni"] = {"Manipuri"}, ["mnj"] = {"Munji"}, ["mnk"] = {"Mandinka"}, ["mnl"] = {"Tiale"}, ["mnm"] = {"Mapena"}, ["mnn"] = {"Southern Mnong"}, ["mno"] = {"Manobo languages"}, ["mnp"] = {"Min Bei Chinese"}, ["mnq"] = {"Minriq"}, ["mnr"] = {"Mono (USA)"}, ["mns"] = {"Mansi"}, ["mnu"] = {"Mer"}, ["mnv"] = {"Rennell-Bellona"}, ["mnw"] = {"Mon"}, ["mnx"] = {"Manikion"}, ["mny"] = {"Manyawa"}, ["mnz"] = {"Moni"}, ["moa"] = {"Mwan"}, ["moc"] = {"Mocoví"}, ["mod"] = {"Mobilian"}, ["moe"] = {"Innu", "Montagnais"}, ["mog"] = {"Mongondow"}, ["moh"] = {"Mohawk"}, ["moi"] = {"Mboi"}, ["moj"] = {"Monzombo"}, ["mok"] = {"Morori"}, ["mom"] = {"Mangue"}, ["moo"] = {"Monom"}, ["mop"] = {"Mopán Maya"}, ["moq"] = {"Mor (Bomberai Peninsula)"}, ["mor"] = {"Moro"}, ["mos"] = {"Mossi"}, ["mot"] = {"Barí"}, ["mou"] = {"Mogum"}, ["mov"] = {"Mohave"}, ["mow"] = {"Moi (Congo)"}, ["mox"] = {"Molima"}, ["moy"] = {"Shekkacho"}, ["moz"] = {"Mukulu", "Gergiko"}, ["mpa"] = {"Mpoto"}, ["mpb"] = {"Malak Malak", "Mullukmulluk"}, ["mpc"] = {"Mangarrayi"}, ["mpd"] = {"Machinere"}, ["mpe"] = {"Majang"}, ["mpg"] = {"Marba"}, ["mph"] = {"Maung"}, ["mpi"] = {"Mpade"}, ["mpj"] = {"Martu Wangka", "Wangkajunga"}, ["mpk"] = {"Mbara (Chad)"}, ["mpl"] = {"Middle Watut"}, ["mpm"] = {"Yosondúa Mixtec"}, ["mpn"] = {"Mindiri"}, ["mpo"] = {"Miu"}, ["mpp"] = {"Migabac"}, ["mpq"] = {"Matís"}, ["mpr"] = {"Vangunu"}, ["mps"] = {"Dadibi"}, ["mpt"] = {"Mian"}, ["mpu"] = {"Makuráp"}, ["mpv"] = {"Mungkip"}, ["mpw"] = {"Mapidian"}, ["mpx"] = {"Misima-Panaeati"}, ["mpy"] = {"Mapia"}, ["mpz"] = {"Mpi"}, ["mqa"] = {"Maba (Indonesia)"}, ["mqb"] = {"Mbuko"}, ["mqc"] = {"Mangole"}, ["mqe"] = {"Matepi"}, ["mqf"] = {"Momuna"}, ["mqg"] = {"Kota Bangun Kutai Malay"}, ["mqh"] = {"Tlazoyaltepec Mixtec"}, ["mqi"] = {"Mariri"}, ["mqj"] = {"Mamasa"}, ["mqk"] = {"Rajah Kabunsuwan Manobo"}, ["mql"] = {"Mbelime"}, ["mqm"] = {"South Marquesan"}, ["mqn"] = {"Moronene"}, ["mqo"] = {"Modole"}, ["mqp"] = {"Manipa"}, ["mqq"] = {"Minokok"}, ["mqr"] = {"Mander"}, ["mqs"] = {"West Makian"}, ["mqt"] = {"Mok"}, ["mqu"] = {"Mandari"}, ["mqv"] = {"Mosimo"}, ["mqw"] = {"Murupi"}, ["mqx"] = {"Mamuju"}, ["mqy"] = {"Manggarai"}, ["mqz"] = {"Pano"}, ["mra"] = {"Mlabri"}, ["mrb"] = {"Marino"}, ["mrc"] = {"Maricopa"}, ["mrd"] = {"Western Magar"}, ["mre"] = {"Martha's Vineyard Sign Language"}, ["mrf"] = {"Elseng"}, ["mrg"] = {"Mising"}, ["mrh"] = {"Mara Chin"}, ["mrj"] = {"Western Mari"}, ["mrk"] = {"Hmwaveke"}, ["mrl"] = {"Mortlockese"}, ["mrm"] = {"Merlav", "Mwerlap"}, ["mrn"] = {"Cheke Holo"}, ["mro"] = {"Mru"}, ["mrp"] = {"Morouas"}, ["mrq"] = {"North Marquesan"}, ["mrr"] = {"Maria (India)"}, ["mrs"] = {"Maragus"}, ["mrt"] = {"Marghi Central"}, ["mru"] = {"Mono (Cameroon)"}, ["mrv"] = {"Mangareva"}, ["mrw"] = {"Maranao"}, ["mrx"] = {"Maremgi", "Dineor"}, ["mry"] = {"Mandaya"}, ["mrz"] = {"Marind"}, ["msb"] = {"Masbatenyo"}, ["msc"] = {"Sankaran Maninka"}, ["msd"] = {"Yucatec Maya Sign Language"}, ["mse"] = {"Musey"}, ["msf"] = {"Mekwei"}, ["msg"] = {"Moraid"}, ["msh"] = {"Masikoro Malagasy"}, ["msi"] = {"Sabah Malay"}, ["msj"] = {"Ma (Democratic Republic of Congo)"}, ["msk"] = {"Mansaka"}, ["msl"] = {"Molof", "Poule"}, ["msm"] = {"Agusan Manobo"}, ["msn"] = {"Vurës"}, ["mso"] = {"Mombum"}, ["msp"] = {"Maritsauá"}, ["msq"] = {"Caac"}, ["msr"] = {"Mongolian Sign Language"}, ["mss"] = {"West Masela"}, ["msu"] = {"Musom"}, ["msv"] = {"Maslam"}, ["msw"] = {"Mansoanka"}, ["msx"] = {"Moresada"}, ["msy"] = {"Aruamu"}, ["msz"] = {"Momare"}, ["mta"] = {"Cotabato Manobo"}, ["mtb"] = {"Anyin Morofo"}, ["mtc"] = {"Munit"}, ["mtd"] = {"Mualang"}, ["mte"] = {"Mono (Solomon Islands)"}, ["mtf"] = {"Murik (Papua New Guinea)"}, ["mtg"] = {"Una"}, ["mth"] = {"Munggui"}, ["mti"] = {"Maiwa (Papua New Guinea)"}, ["mtj"] = {"Moskona"}, ["mtk"] = {"Mbe'"}, ["mtl"] = {"Montol"}, ["mtm"] = {"Mator"}, ["mtn"] = {"Matagalpa"}, ["mto"] = {"Totontepec Mixe"}, ["mtp"] = {"Wichí Lhamtés Nocten"}, ["mtq"] = {"Muong"}, ["mtr"] = {"Mewari"}, ["mts"] = {"Yora"}, ["mtt"] = {"Mota"}, ["mtu"] = {"Tututepec Mixtec"}, ["mtv"] = {"Asaro'o"}, ["mtw"] = {"Southern Binukidnon"}, ["mtx"] = {"Tidaá Mixtec"}, ["mty"] = {"Nabi"}, ["mua"] = {"Mundang"}, ["mub"] = {"Mubi"}, ["muc"] = {"Ajumbu"}, ["mud"] = {"Mednyj Aleut"}, ["mue"] = {"Media Lengua"}, ["mug"] = {"Musgu"}, ["muh"] = {"Mündü"}, ["mui"] = {"Musi"}, ["muj"] = {"Mabire"}, ["muk"] = {"Mugom"}, ["mul"] = {"Multiple languages"}, ["mum"] = {"Maiwala"}, ["mun"] = {"Munda languages"}, ["muo"] = {"Nyong"}, ["mup"] = {"Malvi"}, ["muq"] = {"Eastern Xiangxi Miao"}, ["mur"] = {"Murle"}, ["mus"] = {"Creek"}, ["mut"] = {"Western Muria"}, ["muu"] = {"Yaaku"}, ["muv"] = {"Muthuvan"}, ["mux"] = {"Bo-Ung"}, ["muy"] = {"Muyang"}, ["muz"] = {"Mursi"}, ["mva"] = {"Manam"}, ["mvb"] = {"Mattole"}, ["mvd"] = {"Mamboru"}, ["mve"] = {"Marwari (Pakistan)"}, ["mvf"] = {"Peripheral Mongolian"}, ["mvg"] = {"Yucuañe Mixtec"}, ["mvh"] = {"Mulgi"}, ["mvi"] = {"Miyako"}, ["mvk"] = {"Mekmek"}, ["mvl"] = {"Mbara (Australia)"}, ["mvn"] = {"Minaveha"}, ["mvo"] = {"Marovo"}, ["mvp"] = {"Duri"}, ["mvq"] = {"Moere"}, ["mvr"] = {"Marau"}, ["mvs"] = {"Massep"}, ["mvt"] = {"Mpotovoro"}, ["mvu"] = {"Marfa"}, ["mvv"] = {"Tagal Murut"}, ["mvw"] = {"Machinga"}, ["mvx"] = {"Meoswar"}, ["mvy"] = {"Indus Kohistani"}, ["mvz"] = {"Mesqan"}, ["mwa"] = {"Mwatebu"}, ["mwb"] = {"Juwal"}, ["mwc"] = {"Are"}, ["mwe"] = {"Mwera (Chimwera)"}, ["mwf"] = {"Murrinh-Patha"}, ["mwg"] = {"Aiklep"}, ["mwh"] = {"Mouk-Aria"}, ["mwi"] = {"Labo", "Ninde"}, ["mwk"] = {"Kita Maninkakan"}, ["mwl"] = {"Mirandese"}, ["mwm"] = {"Sar"}, ["mwn"] = {"Nyamwanga"}, ["mwo"] = {"Central Maewo"}, ["mwp"] = {"Kala Lagaw Ya"}, ["mwq"] = {"Mün Chin"}, ["mwr"] = {"Marwari"}, ["mws"] = {"Mwimbi-Muthambi"}, ["mwt"] = {"Moken"}, ["mwu"] = {"Mittu"}, ["mwv"] = {"Mentawai"}, ["mww"] = {"Hmong Daw"}, ["mwz"] = {"Moingi"}, ["mxa"] = {"Northwest Oaxaca Mixtec"}, ["mxb"] = {"Tezoatlán Mixtec"}, ["mxc"] = {"Manyika"}, ["mxd"] = {"Modang"}, ["mxe"] = {"Mele-Fila"}, ["mxf"] = {"Malgbe"}, ["mxg"] = {"Mbangala"}, ["mxh"] = {"Mvuba"}, ["mxi"] = {"Mozarabic"}, ["mxj"] = {"Miju-Mishmi", "Geman Deng"}, ["mxk"] = {"Monumbo"}, ["mxl"] = {"Maxi Gbe"}, ["mxm"] = {"Meramera"}, ["mxn"] = {"Moi (Indonesia)"}, ["mxo"] = {"Mbowe"}, ["mxp"] = {"Tlahuitoltepec Mixe"}, ["mxq"] = {"Juquila Mixe"}, ["mxr"] = {"Murik (Malaysia)"}, ["mxs"] = {"Huitepec Mixtec"}, ["mxt"] = {"Jamiltepec Mixtec"}, ["mxu"] = {"Mada (Cameroon)"}, ["mxv"] = {"Metlatónoc Mixtec"}, ["mxw"] = {"Namo"}, ["mxx"] = {"Mahou", "Mawukakan"}, ["mxy"] = {"Southeastern Nochixtlán Mixtec"}, ["mxz"] = {"Central Masela"}, ["myb"] = {"Mbay"}, ["myc"] = {"Mayeka"}, ["mye"] = {"Myene"}, ["myf"] = {"Bambassi"}, ["myg"] = {"Manta"}, ["myh"] = {"Makah"}, ["myj"] = {"Mangayat"}, ["myk"] = {"Mamara Senoufo"}, ["myl"] = {"Moma"}, ["mym"] = {"Me'en"}, ["myn"] = {"Mayan languages"}, ["myo"] = {"Anfillo"}, ["myp"] = {"Pirahã"}, ["myr"] = {"Muniche"}, ["mys"] = {"Mesmes"}, ["myu"] = {"Mundurukú"}, ["myv"] = {"Erzya"}, ["myw"] = {"Muyuw"}, ["myx"] = {"Masaaba"}, ["myy"] = {"Macuna"}, ["myz"] = {"Classical Mandaic"}, ["mza"] = {"Santa María Zacatepec Mixtec"}, ["mzb"] = {"Tumzabt"}, ["mzc"] = {"Madagascar Sign Language"}, ["mzd"] = {"Malimba"}, ["mze"] = {"Morawa"}, ["mzg"] = {"Monastic Sign Language"}, ["mzh"] = {"Wichí Lhamtés Güisnay"}, ["mzi"] = {"Ixcatlán Mazatec"}, ["mzj"] = {"Manya"}, ["mzk"] = {"Nigeria Mambila"}, ["mzl"] = {"Mazatlán Mixe"}, ["mzm"] = {"Mumuye"}, ["mzn"] = {"Mazanderani"}, ["mzo"] = {"Matipuhy"}, ["mzp"] = {"Movima"}, ["mzq"] = {"Mori Atas"}, ["mzr"] = {"Marúbo"}, ["mzs"] = {"Macanese"}, ["mzt"] = {"Mintil"}, ["mzu"] = {"Inapang"}, ["mzv"] = {"Manza"}, ["mzw"] = {"Deg"}, ["mzx"] = {"Mawayana"}, ["mzy"] = {"Mozambican Sign Language"}, ["mzz"] = {"Maiadomu"}, ["naa"] = {"Namla"}, ["nab"] = {"Southern Nambikuára"}, ["nac"] = {"Narak"}, ["nae"] = {"Naka'ela"}, ["naf"] = {"Nabak"}, ["nag"] = {"Naga Pidgin"}, ["nah"] = {"Nahuatl languages"}, ["nai"] = {"North American Indian languages"}, ["naj"] = {"Nalu"}, ["nak"] = {"Nakanai"}, ["nal"] = {"Nalik"}, ["nam"] = {"Ngan'gityemerri"}, ["nan"] = {"Min Nan Chinese"}, ["nao"] = {"Naaba"}, ["nap"] = {"Neapolitan"}, ["naq"] = {"Khoekhoe", "Nama (Namibia)"}, ["nar"] = {"Iguta"}, ["nas"] = {"Naasioi"}, ["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"}, ["naw"] = {"Nawuri"}, ["nax"] = {"Nakwi"}, ["nay"] = {"Ngarrindjeri"}, ["naz"] = {"Coatepec Nahuatl"}, ["nba"] = {"Nyemba"}, ["nbb"] = {"Ndoe"}, ["nbc"] = {"Chang Naga"}, ["nbd"] = {"Ngbinda"}, ["nbe"] = {"Konyak Naga"}, ["nbg"] = {"Nagarchal"}, ["nbh"] = {"Ngamo"}, ["nbi"] = {"Mao Naga"}, ["nbj"] = {"Ngarinyman"}, ["nbk"] = {"Nake"}, ["nbm"] = {"Ngbaka Ma'bo"}, ["nbn"] = {"Kuri"}, ["nbo"] = {"Nkukoli"}, ["nbp"] = {"Nnam"}, ["nbq"] = {"Nggem"}, ["nbr"] = {"Numana"}, ["nbs"] = {"Namibian Sign Language"}, ["nbt"] = {"Na"}, ["nbu"] = {"Rongmei Naga"}, ["nbv"] = {"Ngamambo"}, ["nbw"] = {"Southern Ngbandi"}, ["nby"] = {"Ningera"}, ["nca"] = {"Iyo"}, ["ncb"] = {"Central Nicobarese"}, ["ncc"] = {"Ponam"}, ["ncd"] = {"Nachering"}, ["nce"] = {"Yale"}, ["ncf"] = {"Notsi"}, ["ncg"] = {"Nisga'a"}, ["nch"] = {"Central Huasteca Nahuatl"}, ["nci"] = {"Classical Nahuatl"}, ["ncj"] = {"Northern Puebla Nahuatl"}, ["nck"] = {"Na-kara"}, ["ncl"] = {"Michoacán Nahuatl"}, ["ncm"] = {"Nambo"}, ["ncn"] = {"Nauna"}, ["nco"] = {"Sibe"}, ["ncq"] = {"Northern Katang"}, ["ncr"] = {"Ncane"}, ["ncs"] = {"Nicaraguan Sign Language"}, ["nct"] = {"Chothe Naga"}, ["ncu"] = {"Chumburung"}, ["ncx"] = {"Central Puebla Nahuatl"}, ["ncz"] = {"Natchez"}, ["nda"] = {"Ndasa"}, ["ndb"] = {"Kenswei Nsei"}, ["ndc"] = {"Ndau"}, ["ndd"] = {"Nde-Nsele-Nta"}, ["ndf"] = {"Nadruvian"}, ["ndg"] = {"Ndengereko"}, ["ndh"] = {"Ndali"}, ["ndi"] = {"Samba Leko"}, ["ndj"] = {"Ndamba"}, ["ndk"] = {"Ndaka"}, ["ndl"] = {"Ndolo"}, ["ndm"] = {"Ndam"}, ["ndn"] = {"Ngundi"}, ["ndp"] = {"Ndo"}, ["ndq"] = {"Ndombe"}, ["ndr"] = {"Ndoola"}, ["nds"] = {"Low German", "Low Saxon"}, ["ndt"] = {"Ndunga"}, ["ndu"] = {"Dugun"}, ["ndv"] = {"Ndut"}, ["ndw"] = {"Ndobo"}, ["ndx"] = {"Nduga"}, ["ndy"] = {"Lutos"}, ["ndz"] = {"Ndogo"}, ["nea"] = {"Eastern Ngad'a"}, ["neb"] = {"Toura (Côte d'Ivoire)"}, ["nec"] = {"Nedebang"}, ["ned"] = {"Nde-Gbite"}, ["nee"] = {"Nêlêmwa-Nixumwak"}, ["nef"] = {"Nefamese"}, ["neg"] = {"Negidal"}, ["neh"] = {"Nyenkha"}, ["nei"] = {"Neo-Hittite"}, ["nej"] = {"Neko"}, ["nek"] = {"Neku"}, ["nem"] = {"Nemi"}, ["nen"] = {"Nengone"}, ["neo"] = {"Ná-Meo"}, ["neq"] = {"North Central Mixe"}, ["ner"] = {"Yahadian"}, ["nes"] = {"Bhoti Kinnauri"}, ["net"] = {"Nete"}, ["neu"] = {"Neo"}, ["nev"] = {"Nyaheun"}, ["new"] = {"Newari", "Nepal Bhasa"}, ["nex"] = {"Neme"}, ["ney"] = {"Neyo"}, ["nez"] = {"Nez Perce"}, ["nfa"] = {"Dhao"}, ["nfd"] = {"Ahwai"}, ["nfl"] = {"Ayiwo", "Äiwoo"}, ["nfr"] = {"Nafaanra"}, ["nfu"] = {"Mfumte"}, ["nga"] = {"Ngbaka"}, ["ngb"] = {"Northern Ngbandi"}, ["ngc"] = {"Ngombe (Democratic Republic of Congo)"}, ["ngd"] = {"Ngando (Central African Republic)"}, ["nge"] = {"Ngemba"}, ["ngf"] = {"Trans-New Guinea languages"}, ["ngg"] = {"Ngbaka Manza"}, ["ngh"] = {"Nǁng"}, ["ngi"] = {"Ngizim"}, ["ngj"] = {"Ngie"}, ["ngk"] = {"Dalabon"}, ["ngl"] = {"Lomwe"}, ["ngm"] = {"Ngatik Men's Creole"}, ["ngn"] = {"Ngwo"}, ["ngp"] = {"Ngulu"}, ["ngq"] = {"Ngurimi", "Ngoreme"}, ["ngr"] = {"Engdewu"}, ["ngs"] = {"Gvoko"}, ["ngt"] = {"Kriang", "Ngeq"}, ["ngu"] = {"Guerrero Nahuatl"}, ["ngv"] = {"Nagumi"}, ["ngw"] = {"Ngwaba"}, ["ngx"] = {"Nggwahyi"}, ["ngy"] = {"Tibea"}, ["ngz"] = {"Ngungwel"}, ["nha"] = {"Nhanda"}, ["nhb"] = {"Beng"}, ["nhc"] = {"Tabasco Nahuatl"}, ["nhd"] = {"Chiripá", "Ava Guaraní"}, ["nhe"] = {"Eastern Huasteca Nahuatl"}, ["nhf"] = {"Nhuwala"}, ["nhg"] = {"Tetelcingo Nahuatl"}, ["nhh"] = {"Nahari"}, ["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"}, ["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"}, ["nhm"] = {"Morelos Nahuatl"}, ["nhn"] = {"Central Nahuatl"}, ["nho"] = {"Takuu"}, ["nhp"] = {"Isthmus-Pajapan Nahuatl"}, ["nhq"] = {"Huaxcaleca Nahuatl"}, ["nhr"] = {"Naro"}, ["nht"] = {"Ometepec Nahuatl"}, ["nhu"] = {"Noone"}, ["nhv"] = {"Temascaltepec Nahuatl"}, ["nhw"] = {"Western Huasteca Nahuatl"}, ["nhx"] = {"Isthmus-Mecayapan Nahuatl"}, ["nhy"] = {"Northern Oaxaca Nahuatl"}, ["nhz"] = {"Santa María La Alta Nahuatl"}, ["nia"] = {"Nias"}, ["nib"] = {"Nakame"}, ["nic"] = {"Niger-Kordofanian languages"}, ["nid"] = {"Ngandi"}, ["nie"] = {"Niellim"}, ["nif"] = {"Nek"}, ["nig"] = {"Ngalakgan"}, ["nih"] = {"Nyiha (Tanzania)"}, ["nii"] = {"Nii"}, ["nij"] = {"Ngaju"}, ["nik"] = {"Southern Nicobarese"}, ["nil"] = {"Nila"}, ["nim"] = {"Nilamba"}, ["nin"] = {"Ninzo"}, ["nio"] = {"Nganasan"}, ["niq"] = {"Nandi"}, ["nir"] = {"Nimboran"}, ["nis"] = {"Nimi"}, ["nit"] = {"Southeastern Kolami"}, ["niu"] = {"Niuean"}, ["niv"] = {"Gilyak"}, ["niw"] = {"Nimo"}, ["nix"] = {"Hema"}, ["niy"] = {"Ngiti"}, ["niz"] = {"Ningil"}, ["nja"] = {"Nzanyi"}, ["njb"] = {"Nocte Naga"}, ["njd"] = {"Ndonde Hamba"}, ["njh"] = {"Lotha Naga"}, ["nji"] = {"Gudanji"}, ["njj"] = {"Njen"}, ["njl"] = {"Njalgulgule"}, ["njm"] = {"Angami Naga"}, ["njn"] = {"Liangmai Naga"}, ["njo"] = {"Ao Naga"}, ["njr"] = {"Njerep"}, ["njs"] = {"Nisa"}, ["njt"] = {"Ndyuka-Trio Pidgin"}, ["nju"] = {"Ngadjunmaya"}, ["njx"] = {"Kunyi"}, ["njy"] = {"Njyem"}, ["njz"] = {"Nyishi"}, ["nka"] = {"Nkoya"}, ["nkb"] = {"Khoibu Naga"}, ["nkc"] = {"Nkongho"}, ["nkd"] = {"Koireng"}, ["nke"] = {"Duke"}, ["nkf"] = {"Inpui Naga"}, ["nkg"] = {"Nekgini"}, ["nkh"] = {"Khezha Naga"}, ["nki"] = {"Thangal Naga"}, ["nkj"] = {"Nakai"}, ["nkk"] = {"Nokuku"}, ["nkm"] = {"Namat"}, ["nkn"] = {"Nkangala"}, ["nko"] = {"Nkonya"}, ["nkp"] = {"Niuatoputapu"}, ["nkq"] = {"Nkami"}, ["nkr"] = {"Nukuoro"}, ["nks"] = {"North Asmat"}, ["nkt"] = {"Nyika (Tanzania)"}, ["nku"] = {"Bouna Kulango"}, ["nkv"] = {"Nyika (Malawi and Zambia)"}, ["nkw"] = {"Nkutu"}, ["nkx"] = {"Nkoroo"}, ["nkz"] = {"Nkari"}, ["nla"] = {"Ngombale"}, ["nlc"] = {"Nalca"}, ["nle"] = {"East Nyala"}, ["nlg"] = {"Gela"}, ["nli"] = {"Grangali"}, ["nlj"] = {"Nyali"}, ["nlk"] = {"Ninia Yali"}, ["nll"] = {"Nihali"}, ["nlm"] = {"Mankiyali"}, ["nlo"] = {"Ngul"}, ["nlq"] = {"Lao Naga"}, ["nlu"] = {"Nchumbulu"}, ["nlv"] = {"Orizaba Nahuatl"}, ["nlw"] = {"Walangama"}, ["nlx"] = {"Nahali"}, ["nly"] = {"Nyamal"}, ["nlz"] = {"Nalögo"}, ["nma"] = {"Maram Naga"}, ["nmb"] = {"Big Nambas", "V'ënen Taut"}, ["nmc"] = {"Ngam"}, ["nmd"] = {"Ndumu"}, ["nme"] = {"Mzieme Naga"}, ["nmf"] = {"Tangkhul Naga (India)"}, ["nmg"] = {"Kwasio"}, ["nmh"] = {"Monsang Naga"}, ["nmi"] = {"Nyam"}, ["nmj"] = {"Ngombe (Central African Republic)"}, ["nmk"] = {"Namakura"}, ["nml"] = {"Ndemli"}, ["nmm"] = {"Manangba"}, ["nmn"] = {"ǃXóõ"}, ["nmo"] = {"Moyon Naga"}, ["nmp"] = {"Nimanbur"}, ["nmq"] = {"Nambya"}, ["nmr"] = {"Nimbari"}, ["nms"] = {"Letemboi"}, ["nmt"] = {"Namonuito"}, ["nmu"] = {"Northeast Maidu"}, ["nmv"] = {"Ngamini"}, ["nmw"] = {"Nimoa", "Rifao"}, ["nmx"] = {"Nama (Papua New Guinea)"}, ["nmy"] = {"Namuyi"}, ["nmz"] = {"Nawdm"}, ["nna"] = {"Nyangumarta"}, ["nnb"] = {"Nande"}, ["nnc"] = {"Nancere"}, ["nnd"] = {"West Ambae"}, ["nne"] = {"Ngandyera"}, ["nnf"] = {"Ngaing"}, ["nng"] = {"Maring Naga"}, ["nnh"] = {"Ngiemboon"}, ["nni"] = {"North Nuaulu"}, ["nnj"] = {"Nyangatom"}, ["nnk"] = {"Nankina"}, ["nnl"] = {"Northern Rengma Naga"}, ["nnm"] = {"Namia"}, ["nnn"] = {"Ngete"}, ["nnp"] = {"Wancho Naga"}, ["nnq"] = {"Ngindo"}, ["nnr"] = {"Narungga"}, ["nnt"] = {"Nanticoke"}, ["nnu"] = {"Dwang"}, ["nnv"] = {"Nugunu (Australia)"}, ["nnw"] = {"Southern Nuni"}, ["nny"] = {"Nyangga"}, ["nnz"] = {"Nda'nda'"}, ["noa"] = {"Woun Meu"}, ["noc"] = {"Nuk"}, ["nod"] = {"Northern Thai"}, ["noe"] = {"Nimadi"}, ["nof"] = {"Nomane"}, ["nog"] = {"Nogai"}, ["noh"] = {"Nomu"}, ["noi"] = {"Noiri"}, ["noj"] = {"Nonuya"}, ["nok"] = {"Nooksack"}, ["nol"] = {"Nomlaki"}, ["non"] = {"Old Norse"}, ["nop"] = {"Numanggang"}, ["noq"] = {"Ngongo"}, ["nos"] = {"Eastern Nisu"}, ["not"] = {"Nomatsiguenga"}, ["nou"] = {"Ewage-Notu"}, ["nov"] = {"Novial"}, ["now"] = {"Nyambo"}, ["noy"] = {"Noy"}, ["noz"] = {"Nayi"}, ["npa"] = {"Nar Phu"}, ["npb"] = {"Nupbikha"}, ["npg"] = {"Ponyo-Gongwang Naga"}, ["nph"] = {"Phom Naga"}, ["npi"] = {"Nepali (individual language)"}, ["npl"] = {"Southeastern Puebla Nahuatl"}, ["npn"] = {"Mondropolon"}, ["npo"] = {"Pochuri Naga"}, ["nps"] = {"Nipsan"}, ["npu"] = {"Puimei Naga"}, ["npx"] = {"Noipx"}, ["npy"] = {"Napu"}, ["nqg"] = {"Southern Nago"}, ["nqk"] = {"Kura Ede Nago"}, ["nql"] = {"Ngendelengo"}, ["nqm"] = {"Ndom"}, ["nqn"] = {"Nen"}, ["nqo"] = {"N'Ko", "N’Ko"}, ["nqq"] = {"Kyan-Karyaw Naga"}, ["nqt"] = {"Nteng"}, ["nqy"] = {"Akyaung Ari Naga"}, ["nra"] = {"Ngom"}, ["nrb"] = {"Nara"}, ["nrc"] = {"Noric"}, ["nre"] = {"Southern Rengma Naga"}, ["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"}, ["nrg"] = {"Narango"}, ["nri"] = {"Chokri Naga"}, ["nrk"] = {"Ngarla"}, ["nrl"] = {"Ngarluma"}, ["nrm"] = {"Narom"}, ["nrn"] = {"Norn"}, ["nrp"] = {"North Picene"}, ["nrr"] = {"Norra", "Nora"}, ["nrt"] = {"Northern Kalapuya"}, ["nru"] = {"Narua"}, ["nrx"] = {"Ngurmbur"}, ["nrz"] = {"Lala"}, ["nsa"] = {"Sangtam Naga"}, ["nsb"] = {"Lower Nossob"}, ["nsc"] = {"Nshi"}, ["nsd"] = {"Southern Nisu"}, ["nse"] = {"Nsenga"}, ["nsf"] = {"Northwestern Nisu"}, ["nsg"] = {"Ngasa"}, ["nsh"] = {"Ngoshie"}, ["nsi"] = {"Nigerian Sign Language"}, ["nsk"] = {"Naskapi"}, ["nsl"] = {"Norwegian Sign Language"}, ["nsm"] = {"Sumi Naga"}, ["nsn"] = {"Nehan"}, ["nso"] = {"Pedi", "Northern Sotho", "Sepedi"}, ["nsp"] = {"Nepalese Sign Language"}, ["nsq"] = {"Northern Sierra Miwok"}, ["nsr"] = {"Maritime Sign Language"}, ["nss"] = {"Nali"}, ["nst"] = {"Tase Naga"}, ["nsu"] = {"Sierra Negra Nahuatl"}, ["nsv"] = {"Southwestern Nisu"}, ["nsw"] = {"Navut"}, ["nsx"] = {"Nsongo"}, ["nsy"] = {"Nasal"}, ["nsz"] = {"Nisenan"}, ["ntd"] = {"Northern Tidung"}, ["nte"] = {"Nathembo"}, ["ntg"] = {"Ngantangarra"}, ["nti"] = {"Natioro"}, ["ntj"] = {"Ngaanyatjarra"}, ["ntk"] = {"Ikoma-Nata-Isenye"}, ["ntm"] = {"Nateni"}, ["nto"] = {"Ntomba"}, ["ntp"] = {"Northern Tepehuan"}, ["ntr"] = {"Delo"}, ["ntu"] = {"Natügu"}, ["ntw"] = {"Nottoway"}, ["ntx"] = {"Tangkhul Naga (Myanmar)"}, ["nty"] = {"Mantsi"}, ["ntz"] = {"Natanzi"}, ["nua"] = {"Yuanga"}, ["nub"] = {"Nubian languages"}, ["nuc"] = {"Nukuini"}, ["nud"] = {"Ngala"}, ["nue"] = {"Ngundu"}, ["nuf"] = {"Nusu"}, ["nug"] = {"Nungali"}, ["nuh"] = {"Ndunda"}, ["nui"] = {"Ngumbi"}, ["nuj"] = {"Nyole"}, ["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"}, ["nul"] = {"Nusa Laut"}, ["num"] = {"Niuafo'ou"}, ["nun"] = {"Anong"}, ["nuo"] = {"Nguôn"}, ["nup"] = {"Nupe-Nupe-Tako"}, ["nuq"] = {"Nukumanu"}, ["nur"] = {"Nukuria"}, ["nus"] = {"Nuer"}, ["nut"] = {"Nung (Viet Nam)"}, ["nuu"] = {"Ngbundu"}, ["nuv"] = {"Northern Nuni"}, ["nuw"] = {"Nguluwan"}, ["nux"] = {"Mehek"}, ["nuy"] = {"Nunggubuyu"}, ["nuz"] = {"Tlamacazapa Nahuatl"}, ["nvh"] = {"Nasarian"}, ["nvm"] = {"Namiae"}, ["nvo"] = {"Nyokon"}, ["nwa"] = {"Nawathinehena"}, ["nwb"] = {"Nyabwa"}, ["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"}, ["nwe"] = {"Ngwe"}, ["nwg"] = {"Ngayawung"}, ["nwi"] = {"Southwest Tanna"}, ["nwm"] = {"Nyamusa-Molo"}, ["nwo"] = {"Nauo"}, ["nwr"] = {"Nawaru"}, ["nww"] = {"Ndwewe"}, ["nwx"] = {"Middle Newar"}, ["nwy"] = {"Nottoway-Meherrin"}, ["nxa"] = {"Nauete"}, ["nxd"] = {"Ngando (Democratic Republic of Congo)"}, ["nxe"] = {"Nage"}, ["nxg"] = {"Ngad'a"}, ["nxi"] = {"Nindi"}, ["nxk"] = {"Koki Naga"}, ["nxl"] = {"South Nuaulu"}, ["nxm"] = {"Numidian"}, ["nxn"] = {"Ngawun"}, ["nxo"] = {"Ndambomo"}, ["nxq"] = {"Naxi"}, ["nxr"] = {"Ninggerum"}, ["nxx"] = {"Nafri"}, ["nyb"] = {"Nyangbo"}, ["nyc"] = {"Nyanga-li"}, ["nyd"] = {"Nyore", "Olunyole"}, ["nye"] = {"Nyengo"}, ["nyf"] = {"Giryama", "Kigiryama"}, ["nyg"] = {"Nyindu"}, ["nyh"] = {"Nyikina"}, ["nyi"] = {"Ama (Sudan)"}, ["nyj"] = {"Nyanga"}, ["nyk"] = {"Nyaneka"}, ["nyl"] = {"Nyeu"}, ["nym"] = {"Nyamwezi"}, ["nyn"] = {"Nyankole"}, ["nyo"] = {"Nyoro"}, ["nyp"] = {"Nyang'i"}, ["nyq"] = {"Nayini"}, ["nyr"] = {"Nyiha (Malawi)"}, ["nys"] = {"Nyungar"}, ["nyt"] = {"Nyawaygi"}, ["nyu"] = {"Nyungwe"}, ["nyv"] = {"Nyulnyul"}, ["nyw"] = {"Nyaw"}, ["nyx"] = {"Nganyaywana"}, ["nyy"] = {"Nyakyusa-Ngonde"}, ["nza"] = {"Tigon Mbembe"}, ["nzb"] = {"Njebi"}, ["nzd"] = {"Nzadi"}, ["nzi"] = {"Nzima"}, ["nzk"] = {"Nzakara"}, ["nzm"] = {"Zeme Naga"}, ["nzr"] = {"Dir-Nyamzak-Mbarimi"}, ["nzs"] = {"New Zealand Sign Language"}, ["nzu"] = {"Teke-Nzikou"}, ["nzy"] = {"Nzakambay"}, ["nzz"] = {"Nanga Dama Dogon"}, ["oaa"] = {"Orok"}, ["oac"] = {"Oroch"}, ["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"}, ["oav"] = {"Old Avar"}, ["obi"] = {"Obispeño"}, ["obk"] = {"Southern Bontok"}, ["obl"] = {"Oblo"}, ["obm"] = {"Moabite"}, ["obo"] = {"Obo Manobo"}, ["obr"] = {"Old Burmese"}, ["obt"] = {"Old Breton"}, ["obu"] = {"Obulom"}, ["oca"] = {"Ocaina"}, ["och"] = {"Old Chinese"}, ["ocm"] = {"Old Cham"}, ["oco"] = {"Old Cornish"}, ["ocu"] = {"Atzingo Matlatzinca"}, ["oda"] = {"Odut"}, ["odk"] = {"Od"}, ["odt"] = {"Old Dutch"}, ["odu"] = {"Odual"}, ["ofo"] = {"Ofo"}, ["ofs"] = {"Old Frisian"}, ["ofu"] = {"Efutop"}, ["ogb"] = {"Ogbia"}, ["ogc"] = {"Ogbah"}, ["oge"] = {"Old Georgian"}, ["ogg"] = {"Ogbogolo"}, ["ogo"] = {"Khana"}, ["ogu"] = {"Ogbronuagum"}, ["oht"] = {"Old Hittite"}, ["ohu"] = {"Old Hungarian"}, ["oia"] = {"Oirata"}, ["oie"] = {"Okolie"}, ["oin"] = {"Inebu One"}, ["ojb"] = {"Northwestern Ojibwa"}, ["ojc"] = {"Central Ojibwa"}, ["ojg"] = {"Eastern Ojibwa"}, ["ojp"] = {"Old Japanese"}, ["ojs"] = {"Severn Ojibwa"}, ["ojv"] = {"Ontong Java"}, ["ojw"] = {"Western Ojibwa"}, ["oka"] = {"Okanagan"}, ["okb"] = {"Okobo"}, ["okc"] = {"Kobo"}, ["okd"] = {"Okodia"}, ["oke"] = {"Okpe (Southwestern Edo)"}, ["okg"] = {"Koko Babangk"}, ["okh"] = {"Koresh-e Rostam"}, ["oki"] = {"Okiek"}, ["okj"] = {"Oko-Juwoi"}, ["okk"] = {"Kwamtim One"}, ["okl"] = {"Old Kentish Sign Language"}, ["okm"] = {"Middle Korean (10th-16th cent.)"}, ["okn"] = {"Oki-No-Erabu"}, ["oko"] = {"Old Korean (3rd-9th cent.)"}, ["okr"] = {"Kirike"}, ["oks"] = {"Oko-Eni-Osayen"}, ["oku"] = {"Oku"}, ["okv"] = {"Orokaiva"}, ["okx"] = {"Okpe (Northwestern Edo)"}, ["okz"] = {"Old Khmer"}, ["ola"] = {"Walungge"}, ["old"] = {"Mochi"}, ["ole"] = {"Olekha"}, ["olk"] = {"Olkol"}, ["olm"] = {"Oloma"}, ["olo"] = {"Livvi"}, ["olr"] = {"Olrat"}, ["olt"] = {"Old Lithuanian"}, ["olu"] = {"Kuvale"}, ["oma"] = {"Omaha-Ponca"}, ["omb"] = {"East Ambae"}, ["omc"] = {"Mochica"}, ["omg"] = {"Omagua"}, ["omi"] = {"Omi"}, ["omk"] = {"Omok"}, ["oml"] = {"Ombo"}, ["omn"] = {"Minoan"}, ["omo"] = {"Utarmbung"}, ["omp"] = {"Old Manipuri"}, ["omq"] = {"Oto-Manguean languages"}, ["omr"] = {"Old Marathi"}, ["omt"] = {"Omotik"}, ["omu"] = {"Omurano"}, ["omv"] = {"Omotic languages"}, ["omw"] = {"South Tairora"}, ["omx"] = {"Old Mon"}, ["omy"] = {"Old Malay"}, ["ona"] = {"Ona"}, ["onb"] = {"Lingao"}, ["one"] = {"Oneida"}, ["ong"] = {"Olo"}, ["oni"] = {"Onin"}, ["onj"] = {"Onjob"}, ["onk"] = {"Kabore One"}, ["onn"] = {"Onobasulu"}, ["ono"] = {"Onondaga"}, ["onp"] = {"Sartang"}, ["onr"] = {"Northern One"}, ["ons"] = {"Ono"}, ["ont"] = {"Ontenu"}, ["onu"] = {"Unua"}, ["onw"] = {"Old Nubian"}, ["onx"] = {"Onin Based Pidgin"}, ["ood"] = {"Tohono O'odham"}, ["oog"] = {"Ong"}, ["oon"] = {"Önge"}, ["oor"] = {"Oorlams"}, ["oos"] = {"Old Ossetic"}, ["opa"] = {"Okpamheri"}, ["opk"] = {"Kopkaka"}, ["opm"] = {"Oksapmin"}, ["opo"] = {"Opao"}, ["opt"] = {"Opata"}, ["opy"] = {"Ofayé"}, ["ora"] = {"Oroha"}, ["orc"] = {"Orma"}, ["ore"] = {"Orejón"}, ["org"] = {"Oring"}, ["orh"] = {"Oroqen"}, ["orn"] = {"Orang Kanaq"}, ["oro"] = {"Orokolo"}, ["orr"] = {"Oruma"}, ["ors"] = {"Orang Seletar"}, ["ort"] = {"Adivasi Oriya"}, ["oru"] = {"Ormuri"}, ["orv"] = {"Old Russian"}, ["orw"] = {"Oro Win"}, ["orx"] = {"Oro"}, ["ory"] = {"Odia (individual language)", "Oriya (individual language)"}, ["orz"] = {"Ormu"}, ["osa"] = {"Osage"}, ["osc"] = {"Oscan"}, ["osi"] = {"Osing"}, ["osn"] = {"Old Sundanese"}, ["oso"] = {"Ososo"}, ["osp"] = {"Old Spanish"}, ["ost"] = {"Osatu"}, ["osu"] = {"Southern One"}, ["osx"] = {"Old Saxon"}, ["ota"] = {"Ottoman Turkish (1500-1928)"}, ["otb"] = {"Old Tibetan"}, ["otd"] = {"Ot Danum"}, ["ote"] = {"Mezquital Otomi"}, ["oti"] = {"Oti"}, ["otk"] = {"Old Turkish"}, ["otl"] = {"Tilapa Otomi"}, ["otm"] = {"Eastern Highland Otomi"}, ["otn"] = {"Tenango Otomi"}, ["oto"] = {"Otomian languages"}, ["otq"] = {"Querétaro Otomi"}, ["otr"] = {"Otoro"}, ["ots"] = {"Estado de México Otomi"}, ["ott"] = {"Temoaya Otomi"}, ["otu"] = {"Otuke"}, ["otw"] = {"Ottawa"}, ["otx"] = {"Texcatepec Otomi"}, ["oty"] = {"Old Tamil"}, ["otz"] = {"Ixtenco Otomi"}, ["oua"] = {"Tagargrent"}, ["oub"] = {"Glio-Oubi"}, ["oue"] = {"Oune"}, ["oui"] = {"Old Uighur"}, ["oum"] = {"Ouma"}, ["ovd"] = {"Elfdalian", "Övdalian"}, ["owi"] = {"Owiniga"}, ["owl"] = {"Old Welsh"}, ["oyb"] = {"Oy"}, ["oyd"] = {"Oyda"}, ["oym"] = {"Wayampi"}, ["oyy"] = {"Oya'oya"}, ["ozm"] = {"Koonzime"}, ["paa"] = {"Papuan languages"}, ["pab"] = {"Parecís"}, ["pac"] = {"Pacoh"}, ["pad"] = {"Paumarí"}, ["pae"] = {"Pagibete"}, ["paf"] = {"Paranawát"}, ["pag"] = {"Pangasinan"}, ["pah"] = {"Tenharim"}, ["pai"] = {"Pe"}, ["pak"] = {"Parakanã"}, ["pal"] = {"Pahlavi"}, ["pam"] = {"Pampanga", "Kapampangan"}, ["pao"] = {"Northern Paiute"}, ["pap"] = {"Papiamento"}, ["paq"] = {"Parya"}, ["par"] = {"Panamint", "Timbisha"}, ["pas"] = {"Papasena"}, ["pau"] = {"Palauan"}, ["pav"] = {"Pakaásnovos"}, ["paw"] = {"Pawnee"}, ["pax"] = {"Pankararé"}, ["pay"] = {"Pech"}, ["paz"] = {"Pankararú"}, ["pbb"] = {"Páez"}, ["pbc"] = {"Patamona"}, ["pbe"] = {"Mezontla Popoloca"}, ["pbf"] = {"Coyotepec Popoloca"}, ["pbg"] = {"Paraujano"}, ["pbh"] = {"E'ñapa Woromaipu"}, ["pbi"] = {"Parkwa"}, ["pbl"] = {"Mak (Nigeria)"}, ["pbm"] = {"Puebla Mazatec"}, ["pbn"] = {"Kpasam"}, ["pbo"] = {"Papel"}, ["pbp"] = {"Badyara"}, ["pbr"] = {"Pangwa"}, ["pbs"] = {"Central Pame"}, ["pbt"] = {"Southern Pashto"}, ["pbu"] = {"Northern Pashto"}, ["pbv"] = {"Pnar"}, ["pby"] = {"Pyu (Papua New Guinea)"}, ["pca"] = {"Santa Inés Ahuatempan Popoloca"}, ["pcb"] = {"Pear"}, ["pcc"] = {"Bouyei"}, ["pcd"] = {"Picard"}, ["pce"] = {"Ruching Palaung"}, ["pcf"] = {"Paliyan"}, ["pcg"] = {"Paniya"}, ["pch"] = {"Pardhan"}, ["pci"] = {"Duruwa"}, ["pcj"] = {"Parenga"}, ["pck"] = {"Paite Chin"}, ["pcl"] = {"Pardhi"}, ["pcm"] = {"Nigerian Pidgin"}, ["pcn"] = {"Piti"}, ["pcp"] = {"Pacahuara"}, ["pcw"] = {"Pyapun"}, ["pda"] = {"Anam"}, ["pdc"] = {"Pennsylvania German"}, ["pdi"] = {"Pa Di"}, ["pdn"] = {"Podena", "Fedan"}, ["pdo"] = {"Padoe"}, ["pdt"] = {"Plautdietsch"}, ["pdu"] = {"Kayan"}, ["pea"] = {"Peranakan Indonesian"}, ["peb"] = {"Eastern Pomo"}, ["ped"] = {"Mala (Papua New Guinea)"}, ["pee"] = {"Taje"}, ["pef"] = {"Northeastern Pomo"}, ["peg"] = {"Pengo"}, ["peh"] = {"Bonan"}, ["pei"] = {"Chichimeca-Jonaz"}, ["pej"] = {"Northern Pomo"}, ["pek"] = {"Penchal"}, ["pel"] = {"Pekal"}, ["pem"] = {"Phende"}, ["peo"] = {"Old Persian (ca. 600-400 B.C.)"}, ["pep"] = {"Kunja"}, ["peq"] = {"Southern Pomo"}, ["pes"] = {"Iranian Persian"}, ["pev"] = {"Pémono"}, ["pex"] = {"Petats"}, ["pey"] = {"Petjo"}, ["pez"] = {"Eastern Penan"}, ["pfa"] = {"Pááfang"}, ["pfe"] = {"Pere"}, ["pfl"] = {"Pfaelzisch"}, ["pga"] = {"Sudanese Creole Arabic"}, ["pgd"] = {"Gāndhārī"}, ["pgg"] = {"Pangwali"}, ["pgi"] = {"Pagi"}, ["pgk"] = {"Rerep"}, ["pgl"] = {"Primitive Irish"}, ["pgn"] = {"Paelignian"}, ["pgs"] = {"Pangseng"}, ["pgu"] = {"Pagu"}, ["pgz"] = {"Papua New Guinean Sign Language"}, ["pha"] = {"Pa-Hng"}, ["phd"] = {"Phudagi"}, ["phg"] = {"Phuong"}, ["phh"] = {"Phukha"}, ["phi"] = {"Philippine languages"}, ["phj"] = {"Pahari"}, ["phk"] = {"Phake"}, ["phl"] = {"Phalura", "Palula"}, ["phm"] = {"Phimbi"}, ["phn"] = {"Phoenician"}, ["pho"] = {"Phunoi"}, ["phq"] = {"Phana'"}, ["phr"] = {"Pahari-Potwari"}, ["pht"] = {"Phu Thai"}, ["phu"] = {"Phuan"}, ["phv"] = {"Pahlavani"}, ["phw"] = {"Phangduwali"}, ["pia"] = {"Pima Bajo"}, ["pib"] = {"Yine"}, ["pic"] = {"Pinji"}, ["pid"] = {"Piaroa"}, ["pie"] = {"Piro"}, ["pif"] = {"Pingelapese"}, ["pig"] = {"Pisabo"}, ["pih"] = {"Pitcairn-Norfolk"}, ["pij"] = {"Pijao"}, ["pil"] = {"Yom"}, ["pim"] = {"Powhatan"}, ["pin"] = {"Piame"}, ["pio"] = {"Piapoco"}, ["pip"] = {"Pero"}, ["pir"] = {"Piratapuyo"}, ["pis"] = {"Pijin"}, ["pit"] = {"Pitta Pitta"}, ["piu"] = {"Pintupi-Luritja"}, ["piv"] = {"Pileni", "Vaeakau-Taumako"}, ["piw"] = {"Pimbwe"}, ["pix"] = {"Piu"}, ["piy"] = {"Piya-Kwonci"}, ["piz"] = {"Pije"}, ["pjt"] = {"Pitjantjatjara"}, ["pka"] = {"Ardhamāgadhī Prākrit"}, ["pkb"] = {"Pokomo", "Kipfokomo"}, ["pkc"] = {"Paekche"}, ["pkg"] = {"Pak-Tong"}, ["pkh"] = {"Pankhu"}, ["pkn"] = {"Pakanha"}, ["pko"] = {"Pökoot"}, ["pkp"] = {"Pukapuka"}, ["pkr"] = {"Attapady Kurumba"}, ["pks"] = {"Pakistan Sign Language"}, ["pkt"] = {"Maleng"}, ["pku"] = {"Paku"}, ["pla"] = {"Miani"}, ["plb"] = {"Polonombauk"}, ["plc"] = {"Central Palawano"}, ["pld"] = {"Polari"}, ["ple"] = {"Palu'e"}, ["plf"] = {"Central Malayo-Polynesian languages"}, ["plg"] = {"Pilagá"}, ["plh"] = {"Paulohi"}, ["plk"] = {"Kohistani Shina"}, ["pll"] = {"Shwe Palaung"}, ["pln"] = {"Palenquero"}, ["plo"] = {"Oluta Popoluca"}, ["plq"] = {"Palaic"}, ["plr"] = {"Palaka Senoufo"}, ["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"}, ["plt"] = {"Plateau Malagasy"}, ["plu"] = {"Palikúr"}, ["plv"] = {"Southwest Palawano"}, ["plw"] = {"Brooke's Point Palawano"}, ["ply"] = {"Bolyu"}, ["plz"] = {"Paluan"}, ["pma"] = {"Paama"}, ["pmb"] = {"Pambia"}, ["pmd"] = {"Pallanganmiddang"}, ["pme"] = {"Pwaamei"}, ["pmf"] = {"Pamona"}, ["pmh"] = {"Māhārāṣṭri Prākrit"}, ["pmi"] = {"Northern Pumi"}, ["pmj"] = {"Southern Pumi"}, ["pml"] = {"Lingua Franca"}, ["pmm"] = {"Pomo"}, ["pmn"] = {"Pam"}, ["pmo"] = {"Pom"}, ["pmq"] = {"Northern Pame"}, ["pmr"] = {"Paynamar"}, ["pms"] = {"Piemontese"}, ["pmt"] = {"Tuamotuan"}, ["pmw"] = {"Plains Miwok"}, ["pmx"] = {"Poumei Naga"}, ["pmy"] = {"Papuan Malay"}, ["pmz"] = {"Southern Pame"}, ["pna"] = {"Punan Bah-Biau"}, ["pnb"] = {"Western Panjabi"}, ["pnc"] = {"Pannei"}, ["pnd"] = {"Mpinda"}, ["pne"] = {"Western Penan"}, ["png"] = {"Pangu", "Pongu"}, ["pnh"] = {"Penrhyn"}, ["pni"] = {"Aoheng"}, ["pnj"] = {"Pinjarup"}, ["pnk"] = {"Paunaka"}, ["pnl"] = {"Paleni"}, ["pnm"] = {"Punan Batu 1"}, ["pnn"] = {"Pinai-Hagahai"}, ["pno"] = {"Panobo"}, ["pnp"] = {"Pancana"}, ["pnq"] = {"Pana (Burkina Faso)"}, ["pnr"] = {"Panim"}, ["pns"] = {"Ponosakan"}, ["pnt"] = {"Pontic"}, ["pnu"] = {"Jiongnai Bunu"}, ["pnv"] = {"Pinigura"}, ["pnw"] = {"Banyjima", "Panytyima"}, ["pnx"] = {"Phong-Kniang"}, ["pny"] = {"Pinyin"}, ["pnz"] = {"Pana (Central African Republic)"}, ["poc"] = {"Poqomam"}, ["poe"] = {"San Juan Atzingo Popoloca"}, ["pof"] = {"Poke"}, ["pog"] = {"Potiguára"}, ["poh"] = {"Poqomchi'"}, ["poi"] = {"Highland Popoluca"}, ["pok"] = {"Pokangá"}, ["pom"] = {"Southeastern Pomo"}, ["pon"] = {"Pohnpeian"}, ["poo"] = {"Central Pomo"}, ["pop"] = {"Pwapwâ"}, ["poq"] = {"Texistepec Popoluca"}, ["pos"] = {"Sayula Popoluca"}, ["pot"] = {"Potawatomi"}, ["pov"] = {"Upper Guinea Crioulo"}, ["pow"] = {"San Felipe Otlaltepec Popoloca"}, ["pox"] = {"Polabian"}, ["poy"] = {"Pogolo"}, ["poz"] = {"Malayo-Polynesian languages"}, ["ppe"] = {"Papi"}, ["ppi"] = {"Paipai"}, ["ppk"] = {"Uma"}, ["ppl"] = {"Pipil", "Nicarao"}, ["ppm"] = {"Papuma"}, ["ppn"] = {"Papapana"}, ["ppo"] = {"Folopa"}, ["ppp"] = {"Pelende"}, ["ppq"] = {"Pei"}, ["pps"] = {"San Luís Temalacayuca Popoloca"}, ["ppt"] = {"Pare"}, ["ppu"] = {"Papora"}, ["pqa"] = {"Pa'a"}, ["pqe"] = {"Eastern Malayo-Polynesian languages"}, ["pqm"] = {"Malecite-Passamaquoddy"}, ["pqw"] = {"Western Malayo-Polynesian languages"}, ["pra"] = {"Prakrit languages"}, ["prc"] = {"Parachi"}, ["prd"] = {"Parsi-Dari"}, ["pre"] = {"Principense"}, ["prf"] = {"Paranan"}, ["prg"] = {"Prussian"}, ["prh"] = {"Porohanon"}, ["pri"] = {"Paicî"}, ["prk"] = {"Parauk"}, ["prl"] = {"Peruvian Sign Language"}, ["prm"] = {"Kibiri"}, ["prn"] = {"Prasuni"}, ["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"}, ["prq"] = {"Ashéninka Perené"}, ["prr"] = {"Puri"}, ["prs"] = {"Dari", "Afghan Persian"}, ["prt"] = {"Phai"}, ["pru"] = {"Puragi"}, ["prw"] = {"Parawen"}, ["prx"] = {"Purik"}, ["prz"] = {"Providencia Sign Language"}, ["psa"] = {"Asue Awyu"}, ["psc"] = {"Iranian Sign Language", "Persian Sign Language"}, ["psd"] = {"Plains Indian Sign Language"}, ["pse"] = {"Central Malay"}, ["psg"] = {"Penang Sign Language"}, ["psh"] = {"Southwest Pashai", "Southwest Pashayi"}, ["psi"] = {"Southeast Pashai", "Southeast Pashayi"}, ["psl"] = {"Puerto Rican Sign Language"}, ["psm"] = {"Pauserna"}, ["psn"] = {"Panasuan"}, ["pso"] = {"Polish Sign Language"}, ["psp"] = {"Philippine Sign Language"}, ["psq"] = {"Pasi"}, ["psr"] = {"Portuguese Sign Language"}, ["pss"] = {"Kaulong"}, ["pst"] = {"Central Pashto"}, ["psu"] = {"Sauraseni Prākrit"}, ["psw"] = {"Port Sandwich"}, ["psy"] = {"Piscataway"}, ["pta"] = {"Pai Tavytera"}, ["pth"] = {"Pataxó Hã-Ha-Hãe"}, ["pti"] = {"Pindiini", "Wangkatha"}, ["ptn"] = {"Patani"}, ["pto"] = {"Zo'é"}, ["ptp"] = {"Patep"}, ["ptq"] = {"Pattapu"}, ["ptr"] = {"Piamatsina"}, ["ptt"] = {"Enrekang"}, ["ptu"] = {"Bambam"}, ["ptv"] = {"Port Vato"}, ["ptw"] = {"Pentlatch"}, ["pty"] = {"Pathiya"}, ["pua"] = {"Western Highland Purepecha"}, ["pub"] = {"Purum"}, ["puc"] = {"Punan Merap"}, ["pud"] = {"Punan Aput"}, ["pue"] = {"Puelche"}, ["puf"] = {"Punan Merah"}, ["pug"] = {"Phuie"}, ["pui"] = {"Puinave"}, ["puj"] = {"Punan Tubu"}, ["pum"] = {"Puma"}, ["puo"] = {"Puoc"}, ["pup"] = {"Pulabu"}, ["puq"] = {"Puquina"}, ["pur"] = {"Puruborá"}, ["put"] = {"Putoh"}, ["puu"] = {"Punu"}, ["puw"] = {"Puluwatese"}, ["pux"] = {"Puare"}, ["puy"] = {"Purisimeño"}, ["pwa"] = {"Pawaia"}, ["pwb"] = {"Panawa"}, ["pwg"] = {"Gapapaiwa"}, ["pwi"] = {"Patwin"}, ["pwm"] = {"Molbog"}, ["pwn"] = {"Paiwan"}, ["pwo"] = {"Pwo Western Karen"}, ["pwr"] = {"Powari"}, ["pww"] = {"Pwo Northern Karen"}, ["pxm"] = {"Quetzaltepec Mixe"}, ["pye"] = {"Pye Krumen"}, ["pym"] = {"Fyam"}, ["pyn"] = {"Poyanáwa"}, ["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"}, ["pyu"] = {"Puyuma"}, ["pyx"] = {"Pyu (Myanmar)"}, ["pyy"] = {"Pyen"}, ["pze"] = {"Pesse"}, ["pzh"] = {"Pazeh"}, ["pzn"] = {"Jejara Naga", "Para Naga"}, ["qua"] = {"Quapaw"}, ["qub"] = {"Huallaga Huánuco Quechua"}, ["quc"] = {"K'iche'", "Quiché"}, ["qud"] = {"Calderón Highland Quichua"}, ["quf"] = {"Lambayeque Quechua"}, ["qug"] = {"Chimborazo Highland Quichua"}, ["quh"] = {"South Bolivian Quechua"}, ["qui"] = {"Quileute"}, ["quk"] = {"Chachapoyas Quechua"}, ["qul"] = {"North Bolivian Quechua"}, ["qum"] = {"Sipacapense"}, ["qun"] = {"Quinault"}, ["qup"] = {"Southern Pastaza Quechua"}, ["quq"] = {"Quinqui"}, ["qur"] = {"Yanahuanca Pasco Quechua"}, ["qus"] = {"Santiago del Estero Quichua"}, ["quv"] = {"Sacapulteco"}, ["quw"] = {"Tena Lowland Quichua"}, ["qux"] = {"Yauyos Quechua"}, ["quy"] = {"Ayacucho Quechua"}, ["quz"] = {"Cusco Quechua"}, ["qva"] = {"Ambo-Pasco Quechua"}, ["qvc"] = {"Cajamarca Quechua"}, ["qve"] = {"Eastern Apurímac Quechua"}, ["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"}, ["qvi"] = {"Imbabura Highland Quichua"}, ["qvj"] = {"Loja Highland Quichua"}, ["qvl"] = {"Cajatambo North Lima Quechua"}, ["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"}, ["qvn"] = {"North Junín Quechua"}, ["qvo"] = {"Napo Lowland Quechua"}, ["qvp"] = {"Pacaraos Quechua"}, ["qvs"] = {"San Martín Quechua"}, ["qvw"] = {"Huaylla Wanca Quechua"}, ["qvy"] = {"Queyu"}, ["qvz"] = {"Northern Pastaza Quichua"}, ["qwa"] = {"Corongo Ancash Quechua"}, ["qwc"] = {"Classical Quechua"}, ["qwe"] = {"Quechuan (family)"}, ["qwh"] = {"Huaylas Ancash Quechua"}, ["qwm"] = {"Kuman (Russia)"}, ["qws"] = {"Sihuas Ancash Quechua"}, ["qwt"] = {"Kwalhioqua-Tlatskanai"}, ["qxa"] = {"Chiquián Ancash Quechua"}, ["qxc"] = {"Chincha Quechua"}, ["qxh"] = {"Panao Huánuco Quechua"}, ["qxl"] = {"Salasaca Highland Quichua"}, ["qxn"] = {"Northern Conchucos Ancash Quechua"}, ["qxo"] = {"Southern Conchucos Ancash Quechua"}, ["qxp"] = {"Puno Quechua"}, ["qxq"] = {"Qashqa'i"}, ["qxr"] = {"Cañar Highland Quichua"}, ["qxs"] = {"Southern Qiang"}, ["qxt"] = {"Santa Ana de Tusi Pasco Quechua"}, ["qxu"] = {"Arequipa-La Unión Quechua"}, ["qxw"] = {"Jauja Wanca Quechua"}, ["qya"] = {"Quenya"}, ["qyp"] = {"Quiripi"}, ["raa"] = {"Dungmali"}, ["rab"] = {"Camling"}, ["rac"] = {"Rasawa"}, ["rad"] = {"Rade"}, ["raf"] = {"Western Meohang"}, ["rag"] = {"Logooli", "Lulogooli"}, ["rah"] = {"Rabha"}, ["rai"] = {"Ramoaaina"}, ["raj"] = {"Rajasthani"}, ["rak"] = {"Tulu-Bohuai"}, ["ral"] = {"Ralte"}, ["ram"] = {"Canela"}, ["ran"] = {"Riantana"}, ["rao"] = {"Rao"}, ["rap"] = {"Rapanui"}, ["raq"] = {"Saam"}, ["rar"] = {"Rarotongan", "Cook Islands Maori"}, ["ras"] = {"Tegali"}, ["rat"] = {"Razajerdi"}, ["rau"] = {"Raute"}, ["rav"] = {"Sampang"}, ["raw"] = {"Rawang"}, ["rax"] = {"Rang"}, ["ray"] = {"Rapa"}, ["raz"] = {"Rahambuu"}, ["rbb"] = {"Rumai Palaung"}, ["rbk"] = {"Northern Bontok"}, ["rbl"] = {"Miraya Bikol"}, ["rbp"] = {"Barababaraba"}, ["rcf"] = {"Réunion Creole French"}, ["rdb"] = {"Rudbari"}, ["rea"] = {"Rerau"}, ["reb"] = {"Rembong"}, ["ree"] = {"Rejang Kayan"}, ["reg"] = {"Kara (Tanzania)"}, ["rei"] = {"Reli"}, ["rej"] = {"Rejang"}, ["rel"] = {"Rendille"}, ["rem"] = {"Remo"}, ["ren"] = {"Rengao"}, ["rer"] = {"Rer Bare"}, ["res"] = {"Reshe"}, ["ret"] = {"Retta"}, ["rey"] = {"Reyesano"}, ["rga"] = {"Roria"}, ["rge"] = {"Romano-Greek"}, ["rgk"] = {"Rangkas"}, ["rgn"] = {"Romagnol"}, ["rgr"] = {"Resígaro"}, ["rgs"] = {"Southern Roglai"}, ["rgu"] = {"Ringgou"}, ["rhg"] = {"Rohingya"}, ["rhp"] = {"Yahang"}, ["ria"] = {"Riang (India)"}, ["rib"] = {"Bribri Sign Language"}, ["rif"] = {"Tarifit"}, ["ril"] = {"Riang Lang", "Riang (Myanmar)"}, ["rim"] = {"Nyaturu"}, ["rin"] = {"Nungu"}, ["rir"] = {"Ribun"}, ["rit"] = {"Ritharrngu"}, ["riu"] = {"Riung"}, ["rjg"] = {"Rajong"}, ["rji"] = {"Raji"}, ["rjs"] = {"Rajbanshi"}, ["rka"] = {"Kraol"}, ["rkb"] = {"Rikbaktsa"}, ["rkh"] = {"Rakahanga-Manihiki"}, ["rki"] = {"Rakhine"}, ["rkm"] = {"Marka"}, ["rkt"] = {"Rangpuri", "Kamta"}, ["rkw"] = {"Arakwal"}, ["rma"] = {"Rama"}, ["rmb"] = {"Rembarrnga"}, ["rmc"] = {"Carpathian Romani"}, ["rmd"] = {"Traveller Danish"}, ["rme"] = {"Angloromani"}, ["rmf"] = {"Kalo Finnish Romani"}, ["rmg"] = {"Traveller Norwegian"}, ["rmh"] = {"Murkim"}, ["rmi"] = {"Lomavren"}, ["rmk"] = {"Romkun"}, ["rml"] = {"Baltic Romani"}, ["rmm"] = {"Roma"}, ["rmn"] = {"Balkan Romani"}, ["rmo"] = {"Sinte Romani"}, ["rmp"] = {"Rempi"}, ["rmq"] = {"Caló"}, ["rms"] = {"Romanian Sign Language"}, ["rmt"] = {"Domari"}, ["rmu"] = {"Tavringer Romani"}, ["rmv"] = {"Romanova"}, ["rmw"] = {"Welsh Romani"}, ["rmx"] = {"Romam"}, ["rmy"] = {"Vlax Romani"}, ["rmz"] = {"Marma"}, ["rnb"] = {"Brunca Sign Language"}, ["rnd"] = {"Ruund"}, ["rng"] = {"Ronga"}, ["rnl"] = {"Ranglong"}, ["rnn"] = {"Roon"}, ["rnp"] = {"Rongpo"}, ["rnr"] = {"Nari Nari"}, ["rnw"] = {"Rungwa"}, ["roa"] = {"Romance languages"}, ["rob"] = {"Tae'"}, ["roc"] = {"Cacgia Roglai"}, ["rod"] = {"Rogo"}, ["roe"] = {"Ronji"}, ["rof"] = {"Rombo"}, ["rog"] = {"Northern Roglai"}, ["rol"] = {"Romblomanon"}, ["rom"] = {"Romany"}, ["roo"] = {"Rotokas"}, ["rop"] = {"Kriol"}, ["ror"] = {"Rongga"}, ["rou"] = {"Runga"}, ["row"] = {"Dela-Oenale"}, ["rpn"] = {"Repanbitip"}, ["rpt"] = {"Rapting"}, ["rri"] = {"Ririo"}, ["rro"] = {"Waima"}, ["rrt"] = {"Arritinngithigh"}, ["rsb"] = {"Romano-Serbian"}, ["rsk"] = {"Ruthenian", "Rusnak"}, ["rsl"] = {"Russian Sign Language"}, ["rsm"] = {"Miriwoong Sign Language"}, ["rsn"] = {"Rwandan Sign Language"}, ["rsw"] = {"Rishiwa"}, ["rtc"] = {"Rungtu Chin"}, ["rth"] = {"Ratahan"}, ["rtm"] = {"Rotuman"}, ["rts"] = {"Yurats"}, ["rtw"] = {"Rathawi"}, ["rub"] = {"Gungu"}, ["ruc"] = {"Ruuli"}, ["rue"] = {"Rusyn"}, ["ruf"] = {"Luguru"}, ["rug"] = {"Roviana"}, ["ruh"] = {"Ruga"}, ["rui"] = {"Rufiji"}, ["ruk"] = {"Che"}, ["ruo"] = {"Istro Romanian"}, ["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"}, ["ruq"] = {"Megleno Romanian"}, ["rut"] = {"Rutul"}, ["ruu"] = {"Lanas Lobu"}, ["ruy"] = {"Mala (Nigeria)"}, ["ruz"] = {"Ruma"}, ["rwa"] = {"Rawo"}, ["rwk"] = {"Rwa"}, ["rwl"] = {"Ruwila"}, ["rwm"] = {"Amba (Uganda)"}, ["rwo"] = {"Rawa"}, ["rwr"] = {"Marwari (India)"}, ["rxd"] = {"Ngardi"}, ["rxw"] = {"Karuwali", "Garuwali"}, ["ryn"] = {"Northern Amami-Oshima"}, ["rys"] = {"Yaeyama"}, ["ryu"] = {"Central Okinawan"}, ["rzh"] = {"Rāziḥī"}, ["saa"] = {"Saba"}, ["sab"] = {"Buglere"}, ["sac"] = {"Meskwaki"}, ["sad"] = {"Sandawe"}, ["sae"] = {"Sabanê"}, ["saf"] = {"Safaliba"}, ["sah"] = {"Yakut"}, ["sai"] = {"South American Indian languages"}, ["saj"] = {"Sahu"}, ["sak"] = {"Sake"}, ["sal"] = {"Salishan languages"}, ["sam"] = {"Samaritan Aramaic"}, ["sao"] = {"Sause"}, ["saq"] = {"Samburu"}, ["sar"] = {"Saraveca"}, ["sas"] = {"Sasak"}, ["sat"] = {"Santali"}, ["sau"] = {"Saleman"}, ["sav"] = {"Saafi-Saafi"}, ["saw"] = {"Sawi"}, ["sax"] = {"Sa"}, ["say"] = {"Saya"}, ["saz"] = {"Saurashtra"}, ["sba"] = {"Ngambay"}, ["sbb"] = {"Simbo"}, ["sbc"] = {"Kele (Papua New Guinea)"}, ["sbd"] = {"Southern Samo"}, ["sbe"] = {"Saliba"}, ["sbf"] = {"Chabu", "Shabo"}, ["sbg"] = {"Seget"}, ["sbh"] = {"Sori-Harengan"}, ["sbi"] = {"Seti"}, ["sbj"] = {"Surbakhal"}, ["sbk"] = {"Safwa"}, ["sbl"] = {"Botolan Sambal"}, ["sbm"] = {"Sagala"}, ["sbn"] = {"Sindhi Bhil"}, ["sbo"] = {"Sabüm"}, ["sbp"] = {"Sangu (Tanzania)"}, ["sbq"] = {"Sileibi"}, ["sbr"] = {"Sembakung Murut"}, ["sbs"] = {"Subiya"}, ["sbt"] = {"Kimki"}, ["sbu"] = {"Stod Bhoti"}, ["sbv"] = {"Sabine"}, ["sbw"] = {"Simba"}, ["sbx"] = {"Seberuang"}, ["sby"] = {"Soli"}, ["sbz"] = {"Sara Kaba"}, ["scb"] = {"Chut"}, ["sce"] = {"Dongxiang"}, ["scf"] = {"San Miguel Creole French"}, ["scg"] = {"Sanggau"}, ["sch"] = {"Sakachep"}, ["sci"] = {"Sri Lankan Creole Malay"}, ["sck"] = {"Sadri"}, ["scl"] = {"Shina"}, ["scn"] = {"Sicilian"}, ["sco"] = {"Scots"}, ["scp"] = {"Hyolmo", "Helambu Sherpa"}, ["scq"] = {"Sa'och"}, ["scs"] = {"North Slavey"}, ["sct"] = {"Southern Katang"}, ["scu"] = {"Shumcho"}, ["scv"] = {"Sheni"}, ["scw"] = {"Sha"}, ["scx"] = {"Sicel"}, ["sda"] = {"Toraja-Sa'dan"}, ["sdb"] = {"Shabak"}, ["sdc"] = {"Sassarese Sardinian"}, ["sde"] = {"Surubu"}, ["sdf"] = {"Sarli"}, ["sdg"] = {"Savi"}, ["sdh"] = {"Southern Kurdish"}, ["sdj"] = {"Suundi"}, ["sdk"] = {"Sos Kundi"}, ["sdl"] = {"Saudi Arabian Sign Language"}, ["sdn"] = {"Gallurese Sardinian"}, ["sdo"] = {"Bukar-Sadung Bidayuh"}, ["sdp"] = {"Sherdukpen"}, ["sdq"] = {"Semandang"}, ["sdr"] = {"Oraon Sadri"}, ["sds"] = {"Sened"}, ["sdt"] = {"Shuadit"}, ["sdu"] = {"Sarudu"}, ["sdv"] = {"Eastern Sudanic languages"}, ["sdx"] = {"Sibu Melanau"}, ["sdz"] = {"Sallands"}, ["sea"] = {"Semai"}, ["seb"] = {"Shempire Senoufo"}, ["sec"] = {"Sechelt"}, ["sed"] = {"Sedang"}, ["see"] = {"Seneca"}, ["sef"] = {"Cebaara Senoufo"}, ["seg"] = {"Segeju"}, ["seh"] = {"Sena"}, ["sei"] = {"Seri"}, ["sej"] = {"Sene"}, ["sek"] = {"Sekani"}, ["sel"] = {"Selkup"}, ["sem"] = {"Semitic languages"}, ["sen"] = {"Nanerigé Sénoufo"}, ["seo"] = {"Suarmin"}, ["sep"] = {"Sìcìté Sénoufo"}, ["seq"] = {"Senara Sénoufo"}, ["ser"] = {"Serrano"}, ["ses"] = {"Koyraboro Senni Songhai"}, ["set"] = {"Sentani"}, ["seu"] = {"Serui-Laut"}, ["sev"] = {"Nyarafolo Senoufo"}, ["sew"] = {"Sewa Bay"}, ["sey"] = {"Secoya"}, ["sez"] = {"Senthang Chin"}, ["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"}, ["sfe"] = {"Eastern Subanen"}, ["sfm"] = {"Small Flowery Miao"}, ["sfs"] = {"South African Sign Language"}, ["sfw"] = {"Sehwi"}, ["sga"] = {"Old Irish (to 900)"}, ["sgb"] = {"Mag-antsi Ayta"}, ["sgc"] = {"Kipsigis"}, ["sgd"] = {"Surigaonon"}, ["sge"] = {"Segai"}, ["sgg"] = {"Swiss-German Sign Language"}, ["sgh"] = {"Shughni"}, ["sgi"] = {"Suga"}, ["sgj"] = {"Surgujia"}, ["sgk"] = {"Sangkong"}, ["sgm"] = {"Singa"}, ["sgn"] = {"Sign languages"}, ["sgp"] = {"Singpho"}, ["sgr"] = {"Sangisari"}, ["sgs"] = {"Samogitian"}, ["sgt"] = {"Brokpake"}, ["sgu"] = {"Salas"}, ["sgw"] = {"Sebat Bet Gurage"}, ["sgx"] = {"Sierra Leone Sign Language"}, ["sgy"] = {"Sanglechi"}, ["sgz"] = {"Sursurunga"}, ["sha"] = {"Shall-Zwall"}, ["shb"] = {"Ninam"}, ["shc"] = {"Sonde"}, ["shd"] = {"Kundal Shahi"}, ["she"] = {"Sheko"}, ["shg"] = {"Shua"}, ["shh"] = {"Shoshoni"}, ["shi"] = {"Tachelhit"}, ["shj"] = {"Shatt"}, ["shk"] = {"Shilluk"}, ["shl"] = {"Shendu"}, ["shm"] = {"Shahrudi"}, ["shn"] = {"Shan"}, ["sho"] = {"Shanga"}, ["shp"] = {"Shipibo-Conibo"}, ["shq"] = {"Sala"}, ["shr"] = {"Shi"}, ["shs"] = {"Shuswap"}, ["sht"] = {"Shasta"}, ["shu"] = {"Chadian Arabic"}, ["shv"] = {"Shehri"}, ["shw"] = {"Shwai"}, ["shx"] = {"She"}, ["shy"] = {"Tachawit"}, ["shz"] = {"Syenara Senoufo"}, ["sia"] = {"Akkala Sami"}, ["sib"] = {"Sebop"}, ["sid"] = {"Sidamo"}, ["sie"] = {"Simaa"}, ["sif"] = {"Siamou"}, ["sig"] = {"Paasaal"}, ["sih"] = {"Zire", "Sîshëë"}, ["sii"] = {"Shom Peng"}, ["sij"] = {"Numbami"}, ["sik"] = {"Sikiana"}, ["sil"] = {"Tumulung Sisaala"}, ["sim"] = {"Mende (Papua New Guinea)"}, ["sio"] = {"Siouan languages"}, ["sip"] = {"Sikkimese"}, ["siq"] = {"Sonia"}, ["sir"] = {"Siri"}, ["sis"] = {"Siuslaw"}, ["sit"] = {"Sino-Tibetan languages"}, ["siu"] = {"Sinagen"}, ["siv"] = {"Sumariup"}, ["siw"] = {"Siwai"}, ["six"] = {"Sumau"}, ["siy"] = {"Sivandi"}, ["siz"] = {"Siwi"}, ["sja"] = {"Epena"}, ["sjb"] = {"Sajau Basap"}, ["sjd"] = {"Kildin Sami"}, ["sje"] = {"Pite Sami"}, ["sjg"] = {"Assangori"}, ["sjk"] = {"Kemi Sami"}, ["sjl"] = {"Sajalong", "Miji"}, ["sjm"] = {"Mapun"}, ["sjn"] = {"Sindarin"}, ["sjo"] = {"Xibe"}, ["sjp"] = {"Surjapuri"}, ["sjr"] = {"Siar-Lak"}, ["sjs"] = {"Senhaja De Srair"}, ["sjt"] = {"Ter Sami"}, ["sju"] = {"Ume Sami"}, ["sjw"] = {"Shawnee"}, ["ska"] = {"Skagit"}, ["skb"] = {"Saek"}, ["skc"] = {"Ma Manda"}, ["skd"] = {"Southern Sierra Miwok"}, ["ske"] = {"Seke (Vanuatu)"}, ["skf"] = {"Sakirabiá"}, ["skg"] = {"Sakalava Malagasy"}, ["skh"] = {"Sikule"}, ["ski"] = {"Sika"}, ["skj"] = {"Seke (Nepal)"}, ["skm"] = {"Kutong"}, ["skn"] = {"Kolibugan Subanon"}, ["sko"] = {"Seko Tengah"}, ["skp"] = {"Sekapan"}, ["skq"] = {"Sininkere"}, ["skr"] = {"Saraiki", "Seraiki"}, ["sks"] = {"Maia"}, ["skt"] = {"Sakata"}, ["sku"] = {"Sakao"}, ["skv"] = {"Skou"}, ["skw"] = {"Skepi Creole Dutch"}, ["skx"] = {"Seko Padang"}, ["sky"] = {"Sikaiana"}, ["skz"] = {"Sekar"}, ["sla"] = {"Slavic languages"}, ["slc"] = {"Sáliba"}, ["sld"] = {"Sissala"}, ["sle"] = {"Sholaga"}, ["slf"] = {"Swiss-Italian Sign Language"}, ["slg"] = {"Selungai Murut"}, ["slh"] = {"Southern Puget Sound Salish"}, ["sli"] = {"Lower Silesian"}, ["slj"] = {"Salumá"}, ["sll"] = {"Salt-Yui"}, ["slm"] = {"Pangutaran Sama"}, ["sln"] = {"Salinan"}, ["slp"] = {"Lamaholot"}, ["slr"] = {"Salar"}, ["sls"] = {"Singapore Sign Language"}, ["slt"] = {"Sila"}, ["slu"] = {"Selaru"}, ["slw"] = {"Sialum"}, ["slx"] = {"Salampasu"}, ["sly"] = {"Selayar"}, ["slz"] = {"Ma'ya"}, ["sma"] = {"Southern Sami"}, ["smb"] = {"Simbari"}, ["smc"] = {"Som"}, ["smf"] = {"Auwe"}, ["smg"] = {"Simbali"}, ["smh"] = {"Samei"}, ["smi"] = {"Sami languages"}, ["smj"] = {"Lule Sami"}, ["smk"] = {"Bolinao"}, ["sml"] = {"Central Sama"}, ["smm"] = {"Musasa"}, ["smn"] = {"Inari Sami"}, ["smp"] = {"Samaritan"}, ["smq"] = {"Samo"}, ["smr"] = {"Simeulue"}, ["sms"] = {"Skolt Sami"}, ["smt"] = {"Simte"}, ["smu"] = {"Somray"}, ["smv"] = {"Samvedi"}, ["smw"] = {"Sumbawa"}, ["smx"] = {"Samba"}, ["smy"] = {"Semnani"}, ["smz"] = {"Simeku"}, ["snc"] = {"Sinaugoro"}, ["sne"] = {"Bau Bidayuh"}, ["snf"] = {"Noon"}, ["sng"] = {"Sanga (Democratic Republic of Congo)"}, ["sni"] = {"Sensi"}, ["snj"] = {"Riverain Sango"}, ["snk"] = {"Soninke"}, ["snl"] = {"Sangil"}, ["snm"] = {"Southern Ma'di"}, ["snn"] = {"Siona"}, ["sno"] = {"Snohomish"}, ["snp"] = {"Siane"}, ["snq"] = {"Sangu (Gabon)"}, ["snr"] = {"Sihan"}, ["sns"] = {"South West Bay", "Nahavaq"}, ["snu"] = {"Senggi", "Viid"}, ["snv"] = {"Sa'ban"}, ["snw"] = {"Selee"}, ["snx"] = {"Sam"}, ["sny"] = {"Saniyo-Hiyewe"}, ["snz"] = {"Kou"}, ["soa"] = {"Thai Song"}, ["sob"] = {"Sobei"}, ["soc"] = {"So (Democratic Republic of Congo)"}, ["sod"] = {"Songoora"}, ["soe"] = {"Songomeno"}, ["sog"] = {"Sogdian"}, ["soh"] = {"Aka"}, ["soi"] = {"Sonha"}, ["soj"] = {"Soi"}, ["sok"] = {"Sokoro"}, ["sol"] = {"Solos"}, ["son"] = {"Songhai languages"}, ["soo"] = {"Songo"}, ["sop"] = {"Songe"}, ["soq"] = {"Kanasi"}, ["sor"] = {"Somrai"}, ["sos"] = {"Seeku"}, ["sou"] = {"Southern Thai"}, ["sov"] = {"Sonsorol"}, ["sow"] = {"Sowanda"}, ["sox"] = {"Swo"}, ["soy"] = {"Miyobe"}, ["soz"] = {"Temi"}, ["spb"] = {"Sepa (Indonesia)"}, ["spc"] = {"Sapé"}, ["spd"] = {"Saep"}, ["spe"] = {"Sepa (Papua New Guinea)"}, ["spg"] = {"Sian"}, ["spi"] = {"Saponi"}, ["spk"] = {"Sengo"}, ["spl"] = {"Selepet"}, ["spm"] = {"Akukem"}, ["spn"] = {"Sanapaná"}, ["spo"] = {"Spokane"}, ["spp"] = {"Supyire Senoufo"}, ["spq"] = {"Loreto-Ucayali Spanish"}, ["spr"] = {"Saparua"}, ["sps"] = {"Saposa"}, ["spt"] = {"Spiti Bhoti"}, ["spu"] = {"Sapuan"}, ["spv"] = {"Sambalpuri", "Kosli"}, ["spx"] = {"South Picene"}, ["spy"] = {"Sabaot"}, ["sqa"] = {"Shama-Sambuga"}, ["sqh"] = {"Shau"}, ["sqj"] = {"Albanian languages"}, ["sqk"] = {"Albanian Sign Language"}, ["sqm"] = {"Suma"}, ["sqn"] = {"Susquehannock"}, ["sqo"] = {"Sorkhei"}, ["sqq"] = {"Sou"}, ["sqr"] = {"Siculo Arabic"}, ["sqs"] = {"Sri Lankan Sign Language"}, ["sqt"] = {"Soqotri"}, ["squ"] = {"Squamish"}, ["sqx"] = {"Kufr Qassem Sign Language (KQSL)"}, ["sra"] = {"Saruga"}, ["srb"] = {"Sora"}, ["src"] = {"Logudorese Sardinian"}, ["sre"] = {"Sara"}, ["srf"] = {"Nafi"}, ["srg"] = {"Sulod"}, ["srh"] = {"Sarikoli"}, ["sri"] = {"Siriano"}, ["srk"] = {"Serudung Murut"}, ["srl"] = {"Isirawa"}, ["srm"] = {"Saramaccan"}, ["srn"] = {"Sranan Tongo"}, ["sro"] = {"Campidanese Sardinian"}, ["srq"] = {"Sirionó"}, ["srr"] = {"Serer"}, ["srs"] = {"Sarsi"}, ["srt"] = {"Sauri"}, ["sru"] = {"Suruí"}, ["srv"] = {"Southern Sorsoganon"}, ["srw"] = {"Serua"}, ["srx"] = {"Sirmauri"}, ["sry"] = {"Sera"}, ["srz"] = {"Shahmirzadi"}, ["ssa"] = {"Nilo-Saharan languages"}, ["ssb"] = {"Southern Sama"}, ["ssc"] = {"Suba-Simbiti"}, ["ssd"] = {"Siroi"}, ["sse"] = {"Balangingi", "Bangingih Sama"}, ["ssf"] = {"Thao"}, ["ssg"] = {"Seimat"}, ["ssh"] = {"Shihhi Arabic"}, ["ssi"] = {"Sansi"}, ["ssj"] = {"Sausi"}, ["ssk"] = {"Sunam"}, ["ssl"] = {"Western Sisaala"}, ["ssm"] = {"Semnam"}, ["ssn"] = {"Waata"}, ["sso"] = {"Sissano"}, ["ssp"] = {"Spanish Sign Language"}, ["ssq"] = {"So'a"}, ["ssr"] = {"Swiss-French Sign Language"}, ["sss"] = {"Sô"}, ["sst"] = {"Sinasina"}, ["ssu"] = {"Susuami"}, ["ssv"] = {"Shark Bay"}, ["ssx"] = {"Samberigi"}, ["ssy"] = {"Saho"}, ["ssz"] = {"Sengseng"}, ["sta"] = {"Settla"}, ["stb"] = {"Northern Subanen"}, ["std"] = {"Sentinel"}, ["ste"] = {"Liana-Seti"}, ["stf"] = {"Seta"}, ["stg"] = {"Trieng"}, ["sth"] = {"Shelta"}, ["sti"] = {"Bulo Stieng"}, ["stj"] = {"Matya Samo"}, ["stk"] = {"Arammba"}, ["stl"] = {"Stellingwerfs"}, ["stm"] = {"Setaman"}, ["stn"] = {"Owa"}, ["sto"] = {"Stoney"}, ["stp"] = {"Southeastern Tepehuan"}, ["stq"] = {"Saterfriesisch"}, ["str"] = {"Straits Salish"}, ["sts"] = {"Shumashti"}, ["stt"] = {"Budeh Stieng"}, ["stu"] = {"Samtao"}, ["stv"] = {"Silt'e"}, ["stw"] = {"Satawalese"}, ["sty"] = {"Siberian Tatar"}, ["sua"] = {"Sulka"}, ["sub"] = {"Suku"}, ["suc"] = {"Western Subanon"}, ["sue"] = {"Suena"}, ["sug"] = {"Suganga"}, ["sui"] = {"Suki"}, ["suj"] = {"Shubi"}, ["suk"] = {"Sukuma"}, ["suo"] = {"Bouni"}, ["suq"] = {"Tirmaga-Chai Suri", "Suri"}, ["sur"] = {"Mwaghavul"}, ["sus"] = {"Susu"}, ["sut"] = {"Subtiaba"}, ["suv"] = {"Puroik"}, ["suw"] = {"Sumbwa"}, ["sux"] = {"Sumerian"}, ["suy"] = {"Suyá"}, ["suz"] = {"Sunwar"}, ["sva"] = {"Svan"}, ["svb"] = {"Ulau-Suain"}, ["svc"] = {"Vincentian Creole English"}, ["sve"] = {"Serili"}, ["svk"] = {"Slovakian Sign Language"}, ["svm"] = {"Slavomolisano"}, ["svs"] = {"Savosavo"}, ["svx"] = {"Skalvian"}, ["swb"] = {"Maore Comorian"}, ["swc"] = {"Congo Swahili"}, ["swf"] = {"Sere"}, ["swg"] = {"Swabian"}, ["swh"] = {"Swahili (individual language)", "Kiswahili"}, ["swi"] = {"Sui"}, ["swj"] = {"Sira"}, ["swk"] = {"Malawi Sena"}, ["swl"] = {"Swedish Sign Language"}, ["swm"] = {"Samosa"}, ["swn"] = {"Sawknah"}, ["swo"] = {"Shanenawa"}, ["swp"] = {"Suau"}, ["swq"] = {"Sharwa"}, ["swr"] = {"Saweru"}, ["sws"] = {"Seluwasan"}, ["swt"] = {"Sawila"}, ["swu"] = {"Suwawa"}, ["swv"] = {"Shekhawati"}, ["sww"] = {"Sowa"}, ["swx"] = {"Suruahá"}, ["swy"] = {"Sarua"}, ["sxb"] = {"Suba"}, ["sxc"] = {"Sicanian"}, ["sxe"] = {"Sighu"}, ["sxg"] = {"Shuhi", "Shixing"}, ["sxk"] = {"Southern Kalapuya"}, ["sxl"] = {"Selian"}, ["sxm"] = {"Samre"}, ["sxn"] = {"Sangir"}, ["sxo"] = {"Sorothaptic"}, ["sxr"] = {"Saaroa"}, ["sxs"] = {"Sasaru"}, ["sxu"] = {"Upper Saxon"}, ["sxw"] = {"Saxwe Gbe"}, ["sya"] = {"Siang"}, ["syb"] = {"Central Subanen"}, ["syc"] = {"Classical Syriac"}, ["syd"] = {"Samoyedic languages"}, ["syi"] = {"Seki"}, ["syk"] = {"Sukur"}, ["syl"] = {"Sylheti"}, ["sym"] = {"Maya Samo"}, ["syn"] = {"Senaya"}, ["syo"] = {"Suoy"}, ["syr"] = {"Syriac"}, ["sys"] = {"Sinyar"}, ["syw"] = {"Kagate"}, ["syx"] = {"Samay"}, ["syy"] = {"Al-Sayyid Bedouin Sign Language"}, ["sza"] = {"Semelai"}, ["szb"] = {"Ngalum"}, ["szc"] = {"Semaq Beri"}, ["sze"] = {"Seze"}, ["szg"] = {"Sengele"}, ["szl"] = {"Silesian"}, ["szn"] = {"Sula"}, ["szp"] = {"Suabo"}, ["szs"] = {"Solomon Islands Sign Language"}, ["szv"] = {"Isu (Fako Division)"}, ["szw"] = {"Sawai"}, ["szy"] = {"Sakizaya"}, ["taa"] = {"Lower Tanana"}, ["tab"] = {"Tabassaran"}, ["tac"] = {"Lowland Tarahumara"}, ["tad"] = {"Tause"}, ["tae"] = {"Tariana"}, ["taf"] = {"Tapirapé"}, ["tag"] = {"Tagoi"}, ["tai"] = {"Tai languages"}, ["taj"] = {"Eastern Tamang"}, ["tak"] = {"Tala"}, ["tal"] = {"Tal"}, ["tan"] = {"Tangale"}, ["tao"] = {"Yami"}, ["tap"] = {"Taabwa"}, ["taq"] = {"Tamasheq"}, ["tar"] = {"Central Tarahumara"}, ["tas"] = {"Tay Boi"}, ["tau"] = {"Upper Tanana"}, ["tav"] = {"Tatuyo"}, ["taw"] = {"Tai"}, ["tax"] = {"Tamki"}, ["tay"] = {"Atayal"}, ["taz"] = {"Tocho"}, ["tba"] = {"Aikanã"}, ["tbc"] = {"Takia"}, ["tbd"] = {"Kaki Ae"}, ["tbe"] = {"Tanimbili"}, ["tbf"] = {"Mandara"}, ["tbg"] = {"North Tairora"}, ["tbh"] = {"Dharawal", "Thurawal"}, ["tbi"] = {"Gaam"}, ["tbj"] = {"Tiang"}, ["tbk"] = {"Calamian Tagbanwa"}, ["tbl"] = {"Tboli"}, ["tbm"] = {"Tagbu"}, ["tbn"] = {"Barro Negro Tunebo"}, ["tbo"] = {"Tawala"}, ["tbp"] = {"Taworta", "Diebroud"}, ["tbq"] = {"Tibeto-Burman languages"}, ["tbr"] = {"Tumtum"}, ["tbs"] = {"Tanguat"}, ["tbt"] = {"Tembo (Kitembo)"}, ["tbu"] = {"Tubar"}, ["tbv"] = {"Tobo"}, ["tbw"] = {"Tagbanwa"}, ["tbx"] = {"Kapin"}, ["tby"] = {"Tabaru"}, ["tbz"] = {"Ditammari"}, ["tca"] = {"Ticuna"}, ["tcb"] = {"Tanacross"}, ["tcc"] = {"Datooga"}, ["tcd"] = {"Tafi"}, ["tce"] = {"Southern Tutchone"}, ["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"}, ["tcg"] = {"Tamagario"}, ["tch"] = {"Turks And Caicos Creole English"}, ["tci"] = {"Wára"}, ["tck"] = {"Tchitchege"}, ["tcl"] = {"Taman (Myanmar)"}, ["tcm"] = {"Tanahmerah"}, ["tcn"] = {"Tichurong"}, ["tco"] = {"Taungyo"}, ["tcp"] = {"Tawr Chin"}, ["tcq"] = {"Kaiy"}, ["tcs"] = {"Torres Strait Creole", "Yumplatok"}, ["tct"] = {"T'en"}, ["tcu"] = {"Southeastern Tarahumara"}, ["tcw"] = {"Tecpatlán Totonac"}, ["tcx"] = {"Toda"}, ["tcy"] = {"Tulu"}, ["tcz"] = {"Thado Chin"}, ["tda"] = {"Tagdal"}, ["tdb"] = {"Panchpargania"}, ["tdc"] = {"Emberá-Tadó"}, ["tdd"] = {"Tai Nüa"}, ["tde"] = {"Tiranige Diga Dogon"}, ["tdf"] = {"Talieng"}, ["tdg"] = {"Western Tamang"}, ["tdh"] = {"Thulung"}, ["tdi"] = {"Tomadino"}, ["tdj"] = {"Tajio"}, ["tdk"] = {"Tambas"}, ["tdl"] = {"Sur"}, ["tdm"] = {"Taruma"}, ["tdn"] = {"Tondano"}, ["tdo"] = {"Teme"}, ["tdq"] = {"Tita"}, ["tdr"] = {"Todrah"}, ["tds"] = {"Doutai"}, ["tdt"] = {"Tetun Dili"}, ["tdv"] = {"Toro"}, ["tdx"] = {"Tandroy-Mahafaly Malagasy"}, ["tdy"] = {"Tadyawan"}, ["tea"] = {"Temiar"}, ["teb"] = {"Tetete"}, ["tec"] = {"Terik"}, ["ted"] = {"Tepo Krumen"}, ["tee"] = {"Huehuetla Tepehua"}, ["tef"] = {"Teressa"}, ["teg"] = {"Teke-Tege"}, ["teh"] = {"Tehuelche"}, ["tei"] = {"Torricelli"}, ["tek"] = {"Ibali Teke"}, ["tem"] = {"Timne"}, ["ten"] = {"Tama (Colombia)"}, ["teo"] = {"Teso"}, ["tep"] = {"Tepecano"}, ["teq"] = {"Temein"}, ["ter"] = {"Tereno"}, ["tes"] = {"Tengger"}, ["tet"] = {"Tetum"}, ["teu"] = {"Soo"}, ["tev"] = {"Teor"}, ["tew"] = {"Tewa (USA)"}, ["tex"] = {"Tennet"}, ["tey"] = {"Tulishi"}, ["tez"] = {"Tetserret"}, ["tfi"] = {"Tofin Gbe"}, ["tfn"] = {"Tanaina"}, ["tfo"] = {"Tefaro"}, ["tfr"] = {"Teribe"}, ["tft"] = {"Ternate"}, ["tga"] = {"Sagalla"}, ["tgb"] = {"Tobilung"}, ["tgc"] = {"Tigak"}, ["tgd"] = {"Ciwogai"}, ["tge"] = {"Eastern Gorkha Tamang"}, ["tgf"] = {"Chalikha"}, ["tgh"] = {"Tobagonian Creole English"}, ["tgi"] = {"Lawunuia"}, ["tgj"] = {"Tagin"}, ["tgn"] = {"Tandaganon"}, ["tgo"] = {"Sudest"}, ["tgp"] = {"Tangoa"}, ["tgq"] = {"Tring"}, ["tgr"] = {"Tareng"}, ["tgs"] = {"Nume"}, ["tgt"] = {"Central Tagbanwa"}, ["tgu"] = {"Tanggu"}, ["tgv"] = {"Tingui-Boto"}, ["tgw"] = {"Tagwana Senoufo"}, ["tgx"] = {"Tagish"}, ["tgy"] = {"Togoyo"}, ["tgz"] = {"Tagalaka"}, ["thd"] = {"Kuuk Thaayorre", "Thayore"}, ["the"] = {"Chitwania Tharu"}, ["thf"] = {"Thangmi"}, ["thh"] = {"Northern Tarahumara"}, ["thi"] = {"Tai Long"}, ["thk"] = {"Tharaka", "Kitharaka"}, ["thl"] = {"Dangaura Tharu"}, ["thm"] = {"Aheu"}, ["thn"] = {"Thachanadan"}, ["thp"] = {"Thompson"}, ["thq"] = {"Kochila Tharu"}, ["thr"] = {"Rana Tharu"}, ["ths"] = {"Thakali"}, ["tht"] = {"Tahltan"}, ["thu"] = {"Thuri"}, ["thv"] = {"Tahaggart Tamahaq"}, ["thy"] = {"Tha"}, ["thz"] = {"Tayart Tamajeq"}, ["tia"] = {"Tidikelt Tamazight"}, ["tic"] = {"Tira"}, ["tif"] = {"Tifal"}, ["tig"] = {"Tigre"}, ["tih"] = {"Timugon Murut"}, ["tii"] = {"Tiene"}, ["tij"] = {"Tilung"}, ["tik"] = {"Tikar"}, ["til"] = {"Tillamook"}, ["tim"] = {"Timbe"}, ["tin"] = {"Tindi"}, ["tio"] = {"Teop"}, ["tip"] = {"Trimuris"}, ["tiq"] = {"Tiéfo"}, ["tis"] = {"Masadiit Itneg"}, ["tit"] = {"Tinigua"}, ["tiu"] = {"Adasen"}, ["tiv"] = {"Tiv"}, ["tiw"] = {"Tiwi"}, ["tix"] = {"Southern Tiwa"}, ["tiy"] = {"Tiruray"}, ["tiz"] = {"Tai Hongjin"}, ["tja"] = {"Tajuasohn"}, ["tjg"] = {"Tunjung"}, ["tji"] = {"Northern Tujia"}, ["tjj"] = {"Tjungundji"}, ["tjl"] = {"Tai Laing"}, ["tjm"] = {"Timucua"}, ["tjn"] = {"Tonjon"}, ["tjo"] = {"Temacine Tamazight"}, ["tjp"] = {"Tjupany"}, ["tjs"] = {"Southern Tujia"}, ["tju"] = {"Tjurruru"}, ["tjw"] = {"Djabwurrung"}, ["tka"] = {"Truká"}, ["tkb"] = {"Buksa"}, ["tkd"] = {"Tukudede"}, ["tke"] = {"Takwane"}, ["tkf"] = {"Tukumanféd"}, ["tkg"] = {"Tesaka Malagasy"}, ["tkl"] = {"Tokelau"}, ["tkm"] = {"Takelma"}, ["tkn"] = {"Toku-No-Shima"}, ["tkp"] = {"Tikopia"}, ["tkq"] = {"Tee"}, ["tkr"] = {"Tsakhur"}, ["tks"] = {"Takestani"}, ["tkt"] = {"Kathoriya Tharu"}, ["tku"] = {"Upper Necaxa Totonac"}, ["tkv"] = {"Mur Pano"}, ["tkw"] = {"Teanu"}, ["tkx"] = {"Tangko"}, ["tkz"] = {"Takua"}, ["tla"] = {"Southwestern Tepehuan"}, ["tlb"] = {"Tobelo"}, ["tlc"] = {"Yecuatla Totonac"}, ["tld"] = {"Talaud"}, ["tlf"] = {"Telefol"}, ["tlg"] = {"Tofanma"}, ["tlh"] = {"Klingon", "tlhIngan Hol"}, ["tli"] = {"Tlingit"}, ["tlj"] = {"Talinga-Bwisi"}, ["tlk"] = {"Taloki"}, ["tll"] = {"Tetela"}, ["tlm"] = {"Tolomako"}, ["tln"] = {"Talondo'"}, ["tlo"] = {"Talodi"}, ["tlp"] = {"Filomena Mata-Coahuitlán Totonac"}, ["tlq"] = {"Tai Loi"}, ["tlr"] = {"Talise"}, ["tls"] = {"Tambotalo"}, ["tlt"] = {"Sou Nama", "Teluti"}, ["tlu"] = {"Tulehu"}, ["tlv"] = {"Taliabu"}, ["tlx"] = {"Khehek"}, ["tly"] = {"Talysh"}, ["tma"] = {"Tama (Chad)"}, ["tmb"] = {"Katbol", "Avava"}, ["tmc"] = {"Tumak"}, ["tmd"] = {"Haruai"}, ["tme"] = {"Tremembé"}, ["tmf"] = {"Toba-Maskoy"}, ["tmg"] = {"Ternateño"}, ["tmh"] = {"Tamashek"}, ["tmi"] = {"Tutuba"}, ["tmj"] = {"Samarokena"}, ["tml"] = {"Tamnim Citak"}, ["tmm"] = {"Tai Thanh"}, ["tmn"] = {"Taman (Indonesia)"}, ["tmo"] = {"Temoq"}, ["tmq"] = {"Tumleo"}, ["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"}, ["tms"] = {"Tima"}, ["tmt"] = {"Tasmate"}, ["tmu"] = {"Iau"}, ["tmv"] = {"Tembo (Motembo)"}, ["tmw"] = {"Temuan"}, ["tmy"] = {"Tami"}, ["tmz"] = {"Tamanaku"}, ["tna"] = {"Tacana"}, ["tnb"] = {"Western Tunebo"}, ["tnc"] = {"Tanimuca-Retuarã"}, ["tnd"] = {"Angosturas Tunebo"}, ["tng"] = {"Tobanga"}, ["tnh"] = {"Maiani"}, ["tni"] = {"Tandia"}, ["tnk"] = {"Kwamera"}, ["tnl"] = {"Lenakel"}, ["tnm"] = {"Tabla"}, ["tnn"] = {"North Tanna"}, ["tno"] = {"Toromono"}, ["tnp"] = {"Whitesands"}, ["tnq"] = {"Taino"}, ["tnr"] = {"Ménik"}, ["tns"] = {"Tenis"}, ["tnt"] = {"Tontemboan"}, ["tnu"] = {"Tay Khang"}, ["tnv"] = {"Tangchangya"}, ["tnw"] = {"Tonsawang"}, ["tnx"] = {"Tanema"}, ["tny"] = {"Tongwe"}, ["tnz"] = {"Ten'edn"}, ["tob"] = {"Toba"}, ["toc"] = {"Coyutla Totonac"}, ["tod"] = {"Toma"}, ["tof"] = {"Gizrra"}, ["tog"] = {"Tonga (Nyasa)"}, ["toh"] = {"Gitonga"}, ["toi"] = {"Tonga (Zambia)"}, ["toj"] = {"Tojolabal"}, ["tok"] = {"Toki Pona"}, ["tol"] = {"Tolowa"}, ["tom"] = {"Tombulu"}, ["too"] = {"Xicotepec De Juárez Totonac"}, ["top"] = {"Papantla Totonac"}, ["toq"] = {"Toposa"}, ["tor"] = {"Togbo-Vara Banda"}, ["tos"] = {"Highland Totonac"}, ["tou"] = {"Tho"}, ["tov"] = {"Upper Taromi"}, ["tow"] = {"Jemez"}, ["tox"] = {"Tobian"}, ["toy"] = {"Topoiyo"}, ["toz"] = {"To"}, ["tpa"] = {"Taupota"}, ["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"}, ["tpe"] = {"Tippera"}, ["tpf"] = {"Tarpia"}, ["tpg"] = {"Kula"}, ["tpi"] = {"Tok Pisin"}, ["tpj"] = {"Tapieté"}, ["tpk"] = {"Tupinikin"}, ["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"}, ["tpm"] = {"Tampulma"}, ["tpn"] = {"Tupinambá"}, ["tpo"] = {"Tai Pao"}, ["tpp"] = {"Pisaflores Tepehua"}, ["tpq"] = {"Tukpa"}, ["tpr"] = {"Tuparí"}, ["tpt"] = {"Tlachichilco Tepehua"}, ["tpu"] = {"Tampuan"}, ["tpv"] = {"Tanapag"}, ["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"}, ["tpy"] = {"Trumai"}, ["tpz"] = {"Tinputz"}, ["tqb"] = {"Tembé"}, ["tql"] = {"Lehali"}, ["tqm"] = {"Turumsa"}, ["tqn"] = {"Tenino"}, ["tqo"] = {"Toaripi"}, ["tqp"] = {"Tomoip"}, ["tqq"] = {"Tunni"}, ["tqr"] = {"Torona"}, ["tqt"] = {"Western Totonac"}, ["tqu"] = {"Touo"}, ["tqw"] = {"Tonkawa"}, ["tra"] = {"Tirahi"}, ["trb"] = {"Terebu"}, ["trc"] = {"Copala Triqui"}, ["trd"] = {"Turi"}, ["tre"] = {"East Tarangan"}, ["trf"] = {"Trinidadian Creole English"}, ["trg"] = {"Lishán Didán"}, ["trh"] = {"Turaka"}, ["tri"] = {"Trió"}, ["trj"] = {"Toram"}, ["trk"] = {"Turkic languages"}, ["trl"] = {"Traveller Scottish"}, ["trm"] = {"Tregami"}, ["trn"] = {"Trinitario"}, ["tro"] = {"Tarao Naga"}, ["trp"] = {"Kok Borok"}, ["trq"] = {"San Martín Itunyoso Triqui"}, ["trr"] = {"Taushiro"}, ["trs"] = {"Chicahuaxtla Triqui"}, ["trt"] = {"Tunggare"}, ["tru"] = {"Turoyo", "Surayt"}, ["trv"] = {"Sediq", "Seediq", "Taroko"}, ["trw"] = {"Torwali"}, ["trx"] = {"Tringgus-Sembaan Bidayuh"}, ["try"] = {"Turung"}, ["trz"] = {"Torá"}, ["tsa"] = {"Tsaangi"}, ["tsb"] = {"Tsamai"}, ["tsc"] = {"Tswa"}, ["tsd"] = {"Tsakonian"}, ["tse"] = {"Tunisian Sign Language"}, ["tsg"] = {"Tausug"}, ["tsh"] = {"Tsuvan"}, ["tsi"] = {"Tsimshian"}, ["tsj"] = {"Tshangla"}, ["tsk"] = {"Tseku"}, ["tsl"] = {"Ts'ün-Lao"}, ["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"}, ["tsp"] = {"Northern Toussian"}, ["tsq"] = {"Thai Sign Language"}, ["tsr"] = {"Akei"}, ["tss"] = {"Taiwan Sign Language"}, ["tst"] = {"Tondi Songway Kiini"}, ["tsu"] = {"Tsou"}, ["tsv"] = {"Tsogo"}, ["tsw"] = {"Tsishingini"}, ["tsx"] = {"Mubami"}, ["tsy"] = {"Tebul Sign Language"}, ["tsz"] = {"Purepecha"}, ["tta"] = {"Tutelo"}, ["ttb"] = {"Gaa"}, ["ttc"] = {"Tektiteko"}, ["ttd"] = {"Tauade"}, ["tte"] = {"Bwanabwana"}, ["ttf"] = {"Tuotomb"}, ["ttg"] = {"Tutong"}, ["tth"] = {"Upper Ta'oih"}, ["tti"] = {"Tobati"}, ["ttj"] = {"Tooro"}, ["ttk"] = {"Totoro"}, ["ttl"] = {"Totela"}, ["ttm"] = {"Northern Tutchone"}, ["ttn"] = {"Towei"}, ["tto"] = {"Lower Ta'oih"}, ["ttp"] = {"Tombelala"}, ["ttq"] = {"Tawallammat Tamajaq"}, ["ttr"] = {"Tera"}, ["tts"] = {"Northeastern Thai"}, ["ttt"] = {"Muslim Tat"}, ["ttu"] = {"Torau"}, ["ttv"] = {"Titan"}, ["ttw"] = {"Long Wat"}, ["tty"] = {"Sikaritai"}, ["ttz"] = {"Tsum"}, ["tua"] = {"Wiarumus"}, ["tub"] = {"Tübatulabal"}, ["tuc"] = {"Mutu"}, ["tud"] = {"Tuxá"}, ["tue"] = {"Tuyuca"}, ["tuf"] = {"Central Tunebo"}, ["tug"] = {"Tunia"}, ["tuh"] = {"Taulil"}, ["tui"] = {"Tupuri"}, ["tuj"] = {"Tugutil"}, ["tul"] = {"Tula"}, ["tum"] = {"Tumbuka"}, ["tun"] = {"Tunica"}, ["tuo"] = {"Tucano"}, ["tup"] = {"Tupi languages"}, ["tuq"] = {"Tedaga"}, ["tus"] = {"Tuscarora"}, ["tut"] = {"Altaic languages"}, ["tuu"] = {"Tututni"}, ["tuv"] = {"Turkana"}, ["tuw"] = {"Tungus languages"}, ["tux"] = {"Tuxináwa"}, ["tuy"] = {"Tugen"}, ["tuz"] = {"Turka"}, ["tva"] = {"Vaghua"}, ["tvd"] = {"Tsuvadi"}, ["tve"] = {"Te'un"}, ["tvi"] = {"Tulai"}, ["tvk"] = {"Southeast Ambrym"}, ["tvl"] = {"Tuvalu"}, ["tvm"] = {"Tela-Masbuar"}, ["tvn"] = {"Tavoyan"}, ["tvo"] = {"Tidore"}, ["tvs"] = {"Taveta"}, ["tvt"] = {"Tutsa Naga"}, ["tvu"] = {"Tunen"}, ["tvw"] = {"Sedoa"}, ["tvx"] = {"Taivoan"}, ["tvy"] = {"Timor Pidgin"}, ["twa"] = {"Twana"}, ["twb"] = {"Western Tawbuid"}, ["twc"] = {"Teshenawa"}, ["twd"] = {"Twents"}, ["twe"] = {"Tewa (Indonesia)"}, ["twf"] = {"Northern Tiwa"}, ["twg"] = {"Tereweng"}, ["twh"] = {"Tai Dón"}, ["twl"] = {"Tawara"}, ["twm"] = {"Tawang Monpa"}, ["twn"] = {"Twendi"}, ["two"] = {"Tswapong"}, ["twp"] = {"Ere"}, ["twq"] = {"Tasawaq"}, ["twr"] = {"Southwestern Tarahumara"}, ["twt"] = {"Turiwára"}, ["twu"] = {"Termanu"}, ["tww"] = {"Tuwari"}, ["twx"] = {"Tewe"}, ["twy"] = {"Tawoyan"}, ["txa"] = {"Tombonuo"}, ["txb"] = {"Tokharian B"}, ["txc"] = {"Tsetsaut"}, ["txe"] = {"Totoli"}, ["txg"] = {"Tangut"}, ["txh"] = {"Thracian"}, ["txi"] = {"Ikpeng"}, ["txj"] = {"Tarjumo"}, ["txm"] = {"Tomini"}, ["txn"] = {"West Tarangan"}, ["txo"] = {"Toto"}, ["txq"] = {"Tii"}, ["txr"] = {"Tartessian"}, ["txs"] = {"Tonsea"}, ["txt"] = {"Citak"}, ["txu"] = {"Kayapó"}, ["txx"] = {"Tatana"}, ["txy"] = {"Tanosy Malagasy"}, ["tya"] = {"Tauya"}, ["tye"] = {"Kyanga"}, ["tyh"] = {"O'du"}, ["tyi"] = {"Teke-Tsaayi"}, ["tyj"] = {"Tai Do", "Tai Yo"}, ["tyl"] = {"Thu Lao"}, ["tyn"] = {"Kombai"}, ["typ"] = {"Thaypan"}, ["tyr"] = {"Tai Daeng"}, ["tys"] = {"Tày Sa Pa"}, ["tyt"] = {"Tày Tac"}, ["tyu"] = {"Kua"}, ["tyv"] = {"Tuvinian"}, ["tyx"] = {"Teke-Tyee"}, ["tyy"] = {"Tiyaa"}, ["tyz"] = {"Tày"}, ["tza"] = {"Tanzanian Sign Language"}, ["tzh"] = {"Tzeltal"}, ["tzj"] = {"Tz'utujil"}, ["tzl"] = {"Talossan"}, ["tzm"] = {"Central Atlas Tamazight"}, ["tzn"] = {"Tugun"}, ["tzo"] = {"Tzotzil"}, ["tzx"] = {"Tabriak"}, ["uam"] = {"Uamué"}, ["uan"] = {"Kuan"}, ["uar"] = {"Tairuma"}, ["uba"] = {"Ubang"}, ["ubi"] = {"Ubi"}, ["ubl"] = {"Buhi'non Bikol"}, ["ubr"] = {"Ubir"}, ["ubu"] = {"Umbu-Ungu"}, ["uby"] = {"Ubykh"}, ["uda"] = {"Uda"}, ["ude"] = {"Udihe"}, ["udg"] = {"Muduga"}, ["udi"] = {"Udi"}, ["udj"] = {"Ujir"}, ["udl"] = {"Wuzlam"}, ["udm"] = {"Udmurt"}, ["udu"] = {"Uduk"}, ["ues"] = {"Kioko"}, ["ufi"] = {"Ufim"}, ["uga"] = {"Ugaritic"}, ["ugb"] = {"Kuku-Ugbanh"}, ["uge"] = {"Ughele"}, ["ugh"] = {"Kubachi"}, ["ugn"] = {"Ugandan Sign Language"}, ["ugo"] = {"Ugong"}, ["ugy"] = {"Uruguayan Sign Language"}, ["uha"] = {"Uhami"}, ["uhn"] = {"Damal"}, ["uis"] = {"Uisai"}, ["uiv"] = {"Iyive"}, ["uji"] = {"Tanjijili"}, ["uka"] = {"Kaburi"}, ["ukg"] = {"Ukuriguma"}, ["ukh"] = {"Ukhwejo"}, ["uki"] = {"Kui (India)"}, ["ukk"] = {"Muak Sa-aak"}, ["ukl"] = {"Ukrainian Sign Language"}, ["ukp"] = {"Ukpe-Bayobiri"}, ["ukq"] = {"Ukwa"}, ["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"}, ["uku"] = {"Ukue"}, ["ukv"] = {"Kuku"}, ["ukw"] = {"Ukwuani-Aboh-Ndoni"}, ["uky"] = {"Kuuk-Yak"}, ["ula"] = {"Fungwa"}, ["ulb"] = {"Ulukwumi"}, ["ulc"] = {"Ulch"}, ["ule"] = {"Lule"}, ["ulf"] = {"Usku", "Afra"}, ["uli"] = {"Ulithian"}, ["ulk"] = {"Meriam Mir"}, ["ull"] = {"Ullatan"}, ["ulm"] = {"Ulumanda'"}, ["uln"] = {"Unserdeutsch"}, ["ulu"] = {"Uma' Lung"}, ["ulw"] = {"Ulwa"}, ["uly"] = {"Buli"}, ["uma"] = {"Umatilla"}, ["umb"] = {"Umbundu"}, ["umc"] = {"Marrucinian"}, ["umd"] = {"Umbindhamu"}, ["umg"] = {"Morrobalama", "Umbuygamu"}, ["umi"] = {"Ukit"}, ["umm"] = {"Umon"}, ["umn"] = {"Makyan Naga"}, ["umo"] = {"Umotína"}, ["ump"] = {"Umpila"}, ["umr"] = {"Umbugarla"}, ["ums"] = {"Pendau"}, ["umu"] = {"Munsee"}, ["una"] = {"North Watut"}, ["und"] = {"Undetermined"}, ["une"] = {"Uneme"}, ["ung"] = {"Ngarinyin"}, ["uni"] = {"Uni"}, ["unk"] = {"Enawené-Nawé"}, ["unm"] = {"Unami"}, ["unn"] = {"Kurnai"}, ["unr"] = {"Mundari"}, ["unu"] = {"Unubahe"}, ["unx"] = {"Munda"}, ["unz"] = {"Unde Kaili"}, ["uon"] = {"Kulon"}, ["upi"] = {"Umeda"}, ["upv"] = {"Uripiv-Wala-Rano-Atchin"}, ["ura"] = {"Urarina"}, ["urb"] = {"Urubú-Kaapor", "Kaapor"}, ["urc"] = {"Urningangg"}, ["ure"] = {"Uru"}, ["urf"] = {"Uradhi"}, ["urg"] = {"Urigina"}, ["urh"] = {"Urhobo"}, ["uri"] = {"Urim"}, ["urj"] = {"Uralic languages"}, ["urk"] = {"Urak Lawoi'"}, ["url"] = {"Urali"}, ["urm"] = {"Urapmin"}, ["urn"] = {"Uruangnirin"}, ["uro"] = {"Ura (Papua New Guinea)"}, ["urp"] = {"Uru-Pa-In"}, ["urr"] = {"Lehalurup", "Löyöp"}, ["urt"] = {"Urat"}, ["uru"] = {"Urumi"}, ["urv"] = {"Uruava"}, ["urw"] = {"Sop"}, ["urx"] = {"Urimo"}, ["ury"] = {"Orya"}, ["urz"] = {"Uru-Eu-Wau-Wau"}, ["usa"] = {"Usarufa"}, ["ush"] = {"Ushojo"}, ["usi"] = {"Usui"}, ["usk"] = {"Usaghade"}, ["usp"] = {"Uspanteco"}, ["uss"] = {"us-Saare"}, ["usu"] = {"Uya"}, ["uta"] = {"Otank"}, ["ute"] = {"Ute-Southern Paiute"}, ["uth"] = {"ut-Hun"}, ["utp"] = {"Amba (Solomon Islands)"}, ["utr"] = {"Etulo"}, ["utu"] = {"Utu"}, ["uum"] = {"Urum"}, ["uur"] = {"Ura (Vanuatu)"}, ["uuu"] = {"U"}, ["uve"] = {"West Uvean", "Fagauvea"}, ["uvh"] = {"Uri"}, ["uvl"] = {"Lote"}, ["uwa"] = {"Kuku-Uwanh"}, ["uya"] = {"Doko-Uyanga"}, ["uzn"] = {"Northern Uzbek"}, ["uzs"] = {"Southern Uzbek"}, ["vaa"] = {"Vaagri Booli"}, ["vae"] = {"Vale"}, ["vaf"] = {"Vafsi"}, ["vag"] = {"Vagla"}, ["vah"] = {"Varhadi-Nagpuri"}, ["vai"] = {"Vai"}, ["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"}, ["val"] = {"Vehes"}, ["vam"] = {"Vanimo"}, ["van"] = {"Valman"}, ["vao"] = {"Vao"}, ["vap"] = {"Vaiphei"}, ["var"] = {"Huarijio"}, ["vas"] = {"Vasavi"}, ["vau"] = {"Vanuma"}, ["vav"] = {"Varli"}, ["vay"] = {"Wayu"}, ["vbb"] = {"Southeast Babar"}, ["vbk"] = {"Southwestern Bontok"}, ["vec"] = {"Venetian"}, ["ved"] = {"Veddah"}, ["vel"] = {"Veluws"}, ["vem"] = {"Vemgo-Mabas"}, ["veo"] = {"Ventureño"}, ["vep"] = {"Veps"}, ["ver"] = {"Mom Jango"}, ["vgr"] = {"Vaghri"}, ["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"}, ["vic"] = {"Virgin Islands Creole English"}, ["vid"] = {"Vidunda"}, ["vif"] = {"Vili"}, ["vig"] = {"Viemo"}, ["vil"] = {"Vilela"}, ["vin"] = {"Vinza"}, ["vis"] = {"Vishavan"}, ["vit"] = {"Viti"}, ["viv"] = {"Iduna"}, ["vjk"] = {"Bajjika"}, ["vka"] = {"Kariyarra"}, ["vkj"] = {"Kujarge"}, ["vkk"] = {"Kaur"}, ["vkl"] = {"Kulisusu"}, ["vkm"] = {"Kamakan"}, ["vkn"] = {"Koro Nulu"}, ["vko"] = {"Kodeoha"}, ["vkp"] = {"Korlai Creole Portuguese"}, ["vkt"] = {"Tenggarong Kutai Malay"}, ["vku"] = {"Kurrama"}, ["vkz"] = {"Koro Zuba"}, ["vlp"] = {"Valpei"}, ["vls"] = {"Vlaams"}, ["vma"] = {"Martuyhunira"}, ["vmb"] = {"Barbaram"}, ["vmc"] = {"Juxtlahuaca Mixtec"}, ["vmd"] = {"Mudu Koraga"}, ["vme"] = {"East Masela"}, ["vmf"] = {"Mainfränkisch"}, ["vmg"] = {"Lungalunga"}, ["vmh"] = {"Maraghei"}, ["vmi"] = {"Miwa"}, ["vmj"] = {"Ixtayutla Mixtec"}, ["vmk"] = {"Makhuwa-Shirima"}, ["vml"] = {"Malgana"}, ["vmm"] = {"Mitlatongo Mixtec"}, ["vmp"] = {"Soyaltepec Mazatec"}, ["vmq"] = {"Soyaltepec Mixtec"}, ["vmr"] = {"Marenje"}, ["vms"] = {"Moksela"}, ["vmu"] = {"Muluridyi"}, ["vmv"] = {"Valley Maidu"}, ["vmw"] = {"Makhuwa"}, ["vmx"] = {"Tamazola Mixtec"}, ["vmy"] = {"Ayautla Mazatec"}, ["vmz"] = {"Mazatlán Mazatec"}, ["vnk"] = {"Vano", "Lovono"}, ["vnm"] = {"Vinmavis", "Neve'ei"}, ["vnp"] = {"Vunapu"}, ["vor"] = {"Voro"}, ["vot"] = {"Votic"}, ["vra"] = {"Vera'a"}, ["vro"] = {"Võro"}, ["vrs"] = {"Varisi"}, ["vrt"] = {"Burmbar", "Banam Bay"}, ["vsi"] = {"Moldova Sign Language"}, ["vsl"] = {"Venezuelan Sign Language"}, ["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"}, ["vto"] = {"Vitou"}, ["vum"] = {"Vumbu"}, ["vun"] = {"Vunjo"}, ["vut"] = {"Vute"}, ["vwa"] = {"Awa (China)"}, ["waa"] = {"Walla Walla"}, ["wab"] = {"Wab"}, ["wac"] = {"Wasco-Wishram"}, ["wad"] = {"Wamesa", "Wondama"}, ["wae"] = {"Walser"}, ["waf"] = {"Wakoná"}, ["wag"] = {"Wa'ema"}, ["wah"] = {"Watubela"}, ["wai"] = {"Wares"}, ["waj"] = {"Waffa"}, ["wak"] = {"Wakashan languages"}, ["wal"] = {"Wolaytta", "Wolaitta"}, ["wam"] = {"Wampanoag"}, ["wan"] = {"Wan"}, ["wao"] = {"Wappo"}, ["wap"] = {"Wapishana"}, ["waq"] = {"Wagiman"}, ["war"] = {"Waray (Philippines)"}, ["was"] = {"Washo"}, ["wat"] = {"Kaninuwa"}, ["wau"] = {"Waurá"}, ["wav"] = {"Waka"}, ["waw"] = {"Waiwai"}, ["wax"] = {"Watam", "Marangis"}, ["way"] = {"Wayana"}, ["waz"] = {"Wampur"}, ["wba"] = {"Warao"}, ["wbb"] = {"Wabo"}, ["wbe"] = {"Waritai"}, ["wbf"] = {"Wara"}, ["wbh"] = {"Wanda"}, ["wbi"] = {"Vwanji"}, ["wbj"] = {"Alagwa"}, ["wbk"] = {"Waigali"}, ["wbl"] = {"Wakhi"}, ["wbm"] = {"Wa"}, ["wbp"] = {"Warlpiri"}, ["wbq"] = {"Waddar"}, ["wbr"] = {"Wagdi"}, ["wbs"] = {"West Bengal Sign Language"}, ["wbt"] = {"Warnman"}, ["wbv"] = {"Wajarri"}, ["wbw"] = {"Woi"}, ["wca"] = {"Yanomámi"}, ["wci"] = {"Waci Gbe"}, ["wdd"] = {"Wandji"}, ["wdg"] = {"Wadaginam"}, ["wdj"] = {"Wadjiginy"}, ["wdk"] = {"Wadikali"}, ["wdt"] = {"Wendat"}, ["wdu"] = {"Wadjigu"}, ["wdy"] = {"Wadjabangayi"}, ["wea"] = {"Wewaw"}, ["wec"] = {"Wè Western"}, ["wed"] = {"Wedau"}, ["weg"] = {"Wergaia"}, ["weh"] = {"Weh"}, ["wei"] = {"Kiunum"}, ["wem"] = {"Weme Gbe"}, ["wen"] = {"Sorbian languages"}, ["weo"] = {"Wemale"}, ["wep"] = {"Westphalien"}, ["wer"] = {"Weri"}, ["wes"] = {"Cameroon Pidgin"}, ["wet"] = {"Perai"}, ["weu"] = {"Rawngtu Chin"}, ["wew"] = {"Wejewa"}, ["wfg"] = {"Yafi", "Zorop"}, ["wga"] = {"Wagaya"}, ["wgb"] = {"Wagawaga"}, ["wgg"] = {"Wangkangurru", "Wangganguru"}, ["wgi"] = {"Wahgi"}, ["wgo"] = {"Waigeo"}, ["wgu"] = {"Wirangu"}, ["wgy"] = {"Warrgamay"}, ["wha"] = {"Sou Upaa", "Manusela"}, ["whg"] = {"North Wahgi"}, ["whk"] = {"Wahau Kenyah"}, ["whu"] = {"Wahau Kayan"}, ["wib"] = {"Southern Toussian"}, ["wic"] = {"Wichita"}, ["wie"] = {"Wik-Epa"}, ["wif"] = {"Wik-Keyangan"}, ["wig"] = {"Wik Ngathan"}, ["wih"] = {"Wik-Me'anha"}, ["wii"] = {"Minidien"}, ["wij"] = {"Wik-Iiyanh"}, ["wik"] = {"Wikalkan"}, ["wil"] = {"Wilawila"}, ["wim"] = {"Wik-Mungkan"}, ["win"] = {"Ho-Chunk"}, ["wir"] = {"Wiraféd"}, ["wiu"] = {"Wiru"}, ["wiv"] = {"Vitu"}, ["wiy"] = {"Wiyot"}, ["wja"] = {"Waja"}, ["wji"] = {"Warji"}, ["wka"] = {"Kw'adza"}, ["wkb"] = {"Kumbaran"}, ["wkd"] = {"Wakde", "Mo"}, ["wkl"] = {"Kalanadi"}, ["wkr"] = {"Keerray-Woorroong"}, ["wku"] = {"Kunduvadi"}, ["wkw"] = {"Wakawaka"}, ["wky"] = {"Wangkayutyuru"}, ["wla"] = {"Walio"}, ["wlc"] = {"Mwali Comorian"}, ["wle"] = {"Wolane"}, ["wlg"] = {"Kunbarlang"}, ["wlh"] = {"Welaun"}, ["wli"] = {"Waioli"}, ["wlk"] = {"Wailaki"}, ["wll"] = {"Wali (Sudan)"}, ["wlm"] = {"Middle Welsh"}, ["wlo"] = {"Wolio"}, ["wlr"] = {"Wailapa"}, ["wls"] = {"Wallisian"}, ["wlu"] = {"Wuliwuli"}, ["wlv"] = {"Wichí Lhamtés Vejoz"}, ["wlw"] = {"Walak"}, ["wlx"] = {"Wali (Ghana)"}, ["wly"] = {"Waling"}, ["wma"] = {"Mawa (Nigeria)"}, ["wmb"] = {"Wambaya"}, ["wmc"] = {"Wamas"}, ["wmd"] = {"Mamaindé"}, ["wme"] = {"Wambule"}, ["wmg"] = {"Western Minyag"}, ["wmh"] = {"Waima'a"}, ["wmi"] = {"Wamin"}, ["wmm"] = {"Maiwa (Indonesia)"}, ["wmn"] = {"Waamwang"}, ["wmo"] = {"Wom (Papua New Guinea)"}, ["wms"] = {"Wambon"}, ["wmt"] = {"Walmajarri"}, ["wmw"] = {"Mwani"}, ["wmx"] = {"Womo"}, ["wnb"] = {"Mokati"}, ["wnc"] = {"Wantoat"}, ["wnd"] = {"Wandarang"}, ["wne"] = {"Waneci"}, ["wng"] = {"Wanggom"}, ["wni"] = {"Ndzwani Comorian"}, ["wnk"] = {"Wanukaka"}, ["wnm"] = {"Wanggamala"}, ["wnn"] = {"Wunumara"}, ["wno"] = {"Wano"}, ["wnp"] = {"Wanap"}, ["wnu"] = {"Usan"}, ["wnw"] = {"Wintu"}, ["wny"] = {"Wanyi", "Waanyi"}, ["woa"] = {"Kuwema", "Tyaraity"}, ["wob"] = {"Wè Northern"}, ["woc"] = {"Wogeo"}, ["wod"] = {"Wolani"}, ["woe"] = {"Woleaian"}, ["wof"] = {"Gambian Wolof"}, ["wog"] = {"Wogamusin"}, ["woi"] = {"Kamang"}, ["wok"] = {"Longto"}, ["wom"] = {"Wom (Nigeria)"}, ["won"] = {"Wongo"}, ["woo"] = {"Manombai"}, ["wor"] = {"Woria"}, ["wos"] = {"Hanga Hundi"}, ["wow"] = {"Wawonii"}, ["woy"] = {"Weyto"}, ["wpc"] = {"Maco"}, ["wrb"] = {"Waluwarra", "Warluwara"}, ["wrg"] = {"Warungu", "Gudjal"}, ["wrh"] = {"Wiradjuri"}, ["wri"] = {"Wariyangga"}, ["wrk"] = {"Garrwa"}, ["wrl"] = {"Warlmanpa"}, ["wrm"] = {"Warumungu"}, ["wrn"] = {"Warnang"}, ["wro"] = {"Worrorra"}, ["wrp"] = {"Waropen"}, ["wrr"] = {"Wardaman"}, ["wrs"] = {"Waris"}, ["wru"] = {"Waru"}, ["wrv"] = {"Waruna"}, ["wrw"] = {"Gugu Warra"}, ["wrx"] = {"Wae Rana"}, ["wry"] = {"Merwari"}, ["wrz"] = {"Waray (Australia)"}, ["wsa"] = {"Warembori"}, ["wsg"] = {"Adilabad Gondi"}, ["wsi"] = {"Wusi"}, ["wsk"] = {"Waskia"}, ["wsr"] = {"Owenia"}, ["wss"] = {"Wasa"}, ["wsu"] = {"Wasu"}, ["wsv"] = {"Wotapuri-Katarqalai"}, ["wtb"] = {"Matambwe"}, ["wtf"] = {"Watiwa"}, ["wth"] = {"Wathawurrung"}, ["wti"] = {"Berta"}, ["wtk"] = {"Watakataui"}, ["wtm"] = {"Mewati"}, ["wtw"] = {"Wotu"}, ["wua"] = {"Wikngenchera"}, ["wub"] = {"Wunambal"}, ["wud"] = {"Wudu"}, ["wuh"] = {"Wutunhua"}, ["wul"] = {"Silimo"}, ["wum"] = {"Wumbvu"}, ["wun"] = {"Bungu"}, ["wur"] = {"Wurrugu"}, ["wut"] = {"Wutung"}, ["wuu"] = {"Wu Chinese"}, ["wuv"] = {"Wuvulu-Aua"}, ["wux"] = {"Wulna"}, ["wuy"] = {"Wauyai"}, ["wwa"] = {"Waama"}, ["wwb"] = {"Wakabunga"}, ["wwo"] = {"Wetamut", "Dorig"}, ["wwr"] = {"Warrwa"}, ["www"] = {"Wawa"}, ["wxa"] = {"Waxianghua"}, ["wxw"] = {"Wardandi"}, ["wyb"] = {"Wangaaybuwan-Ngiyambaa"}, ["wyi"] = {"Woiwurrung"}, ["wym"] = {"Wymysorys"}, ["wyn"] = {"Wyandot"}, ["wyr"] = {"Wayoró"}, ["wyy"] = {"Western Fijian"}, ["xaa"] = {"Andalusian Arabic"}, ["xab"] = {"Sambe"}, ["xac"] = {"Kachari"}, ["xad"] = {"Adai"}, ["xae"] = {"Aequian"}, ["xag"] = {"Aghwan"}, ["xai"] = {"Kaimbé"}, ["xaj"] = {"Ararandewára"}, ["xak"] = {"Máku"}, ["xal"] = {"Kalmyk", "Oirat"}, ["xam"] = {"ǀXam"}, ["xan"] = {"Xamtanga"}, ["xao"] = {"Khao"}, ["xap"] = {"Apalachee"}, ["xaq"] = {"Aquitanian"}, ["xar"] = {"Karami"}, ["xas"] = {"Kamas"}, ["xat"] = {"Katawixi"}, ["xau"] = {"Kauwera"}, ["xav"] = {"Xavánte"}, ["xaw"] = {"Kawaiisu"}, ["xay"] = {"Kayan Mahakam"}, ["xbb"] = {"Lower Burdekin"}, ["xbc"] = {"Bactrian"}, ["xbd"] = {"Bindal"}, ["xbe"] = {"Bigambal"}, ["xbg"] = {"Bunganditj"}, ["xbi"] = {"Kombio"}, ["xbj"] = {"Birrpayi"}, ["xbm"] = {"Middle Breton"}, ["xbn"] = {"Kenaboi"}, ["xbo"] = {"Bolgarian"}, ["xbp"] = {"Bibbulman"}, ["xbr"] = {"Kambera"}, ["xbw"] = {"Kambiwá"}, ["xby"] = {"Batjala", "Batyala"}, ["xcb"] = {"Cumbric"}, ["xcc"] = {"Camunic"}, ["xce"] = {"Celtiberian"}, ["xcg"] = {"Cisalpine Gaulish"}, ["xch"] = {"Chemakum", "Chimakum"}, ["xcl"] = {"Classical Armenian"}, ["xcm"] = {"Comecrudo"}, ["xcn"] = {"Cotoname"}, ["xco"] = {"Chorasmian"}, ["xcr"] = {"Carian"}, ["xct"] = {"Classical Tibetan"}, ["xcu"] = {"Curonian"}, ["xcv"] = {"Chuvantsy"}, ["xcw"] = {"Coahuilteco"}, ["xcy"] = {"Cayuse"}, ["xda"] = {"Darkinyung"}, ["xdc"] = {"Dacian"}, ["xdk"] = {"Dharuk"}, ["xdm"] = {"Edomite"}, ["xdo"] = {"Kwandu"}, ["xdq"] = {"Kaitag"}, ["xdy"] = {"Malayic Dayak"}, ["xeb"] = {"Eblan"}, ["xed"] = {"Hdi"}, ["xeg"] = {"ǁXegwi"}, ["xel"] = {"Kelo"}, ["xem"] = {"Kembayan"}, ["xep"] = {"Epi-Olmec"}, ["xer"] = {"Xerénte"}, ["xes"] = {"Kesawai"}, ["xet"] = {"Xetá"}, ["xeu"] = {"Keoru-Ahia"}, ["xfa"] = {"Faliscan"}, ["xga"] = {"Galatian"}, ["xgb"] = {"Gbin"}, ["xgd"] = {"Gudang"}, ["xgf"] = {"Gabrielino-Fernandeño"}, ["xgg"] = {"Goreng"}, ["xgi"] = {"Garingbal"}, ["xgl"] = {"Galindan"}, ["xgm"] = {"Dharumbal", "Guwinmal"}, ["xgn"] = {"Mongolian languages"}, ["xgr"] = {"Garza"}, ["xgu"] = {"Unggumi"}, ["xgw"] = {"Guwa"}, ["xha"] = {"Harami"}, ["xhc"] = {"Hunnic"}, ["xhd"] = {"Hadrami"}, ["xhe"] = {"Khetrani"}, ["xhm"] = {"Middle Khmer (1400 to 1850 CE)"}, ["xhr"] = {"Hernican"}, ["xht"] = {"Hattic"}, ["xhu"] = {"Hurrian"}, ["xhv"] = {"Khua"}, ["xib"] = {"Iberian"}, ["xii"] = {"Xiri"}, ["xil"] = {"Illyrian"}, ["xin"] = {"Xinca"}, ["xir"] = {"Xiriâna"}, ["xis"] = {"Kisan"}, ["xiv"] = {"Indus Valley Language"}, ["xiy"] = {"Xipaya"}, ["xjb"] = {"Minjungbal"}, ["xjt"] = {"Jaitmatang"}, ["xka"] = {"Kalkoti"}, ["xkb"] = {"Northern Nago"}, ["xkc"] = {"Kho'ini"}, ["xkd"] = {"Mendalam Kayan"}, ["xke"] = {"Kereho"}, ["xkf"] = {"Khengkha"}, ["xkg"] = {"Kagoro"}, ["xki"] = {"Kenyan Sign Language"}, ["xkj"] = {"Kajali"}, ["xkk"] = {"Kachok", "Kaco'"}, ["xkl"] = {"Mainstream Kenyah"}, ["xkn"] = {"Kayan River Kayan"}, ["xko"] = {"Kiorr"}, ["xkp"] = {"Kabatei"}, ["xkq"] = {"Koroni"}, ["xkr"] = {"Xakriabá"}, ["xks"] = {"Kumbewaha"}, ["xkt"] = {"Kantosi"}, ["xku"] = {"Kaamba"}, ["xkv"] = {"Kgalagadi"}, ["xkw"] = {"Kembra"}, ["xkx"] = {"Karore"}, ["xky"] = {"Uma' Lasan"}, ["xkz"] = {"Kurtokha"}, ["xla"] = {"Kamula"}, ["xlb"] = {"Loup B"}, ["xlc"] = {"Lycian"}, ["xld"] = {"Lydian"}, ["xle"] = {"Lemnian"}, ["xlg"] = {"Ligurian (Ancient)"}, ["xli"] = {"Liburnian"}, ["xln"] = {"Alanic"}, ["xlo"] = {"Loup A"}, ["xlp"] = {"Lepontic"}, ["xls"] = {"Lusitanian"}, ["xlu"] = {"Cuneiform Luwian"}, ["xly"] = {"Elymian"}, ["xma"] = {"Mushungulu"}, ["xmb"] = {"Mbonga"}, ["xmc"] = {"Makhuwa-Marrevone"}, ["xmd"] = {"Mbudum"}, ["xme"] = {"Median"}, ["xmf"] = {"Mingrelian"}, ["xmg"] = {"Mengaka"}, ["xmh"] = {"Kugu-Muminh"}, ["xmj"] = {"Majera"}, ["xmk"] = {"Ancient Macedonian"}, ["xml"] = {"Malaysian Sign Language"}, ["xmm"] = {"Manado Malay"}, ["xmn"] = {"Manichaean Middle Persian"}, ["xmo"] = {"Morerebi"}, ["xmp"] = {"Kuku-Mu'inh"}, ["xmq"] = {"Kuku-Mangk"}, ["xmr"] = {"Meroitic"}, ["xms"] = {"Moroccan Sign Language"}, ["xmt"] = {"Matbat"}, ["xmu"] = {"Kamu"}, ["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"}, ["xmw"] = {"Tsimihety Malagasy"}, ["xmx"] = {"Salawati", "Maden"}, ["xmy"] = {"Mayaguduna"}, ["xmz"] = {"Mori Bawah"}, ["xna"] = {"Ancient North Arabian"}, ["xnb"] = {"Kanakanabu"}, ["xnd"] = {"Na-Dene languages"}, ["xng"] = {"Middle Mongolian"}, ["xnh"] = {"Kuanhua"}, ["xni"] = {"Ngarigu"}, ["xnj"] = {"Ngoni (Tanzania)"}, ["xnk"] = {"Nganakarti"}, ["xnm"] = {"Ngumbarl"}, ["xnn"] = {"Northern Kankanay"}, ["xno"] = {"Anglo-Norman"}, ["xnq"] = {"Ngoni (Mozambique)"}, ["xnr"] = {"Kangri"}, ["xns"] = {"Kanashi"}, ["xnt"] = {"Narragansett"}, ["xnu"] = {"Nukunul"}, ["xny"] = {"Nyiyaparli"}, ["xnz"] = {"Kenzi", "Mattoki"}, ["xoc"] = {"O'chi'chi'"}, ["xod"] = {"Kokoda"}, ["xog"] = {"Soga"}, ["xoi"] = {"Kominimung"}, ["xok"] = {"Xokleng"}, ["xom"] = {"Komo (Sudan)"}, ["xon"] = {"Konkomba"}, ["xoo"] = {"Xukurú"}, ["xop"] = {"Kopar"}, ["xor"] = {"Korubo"}, ["xow"] = {"Kowaki"}, ["xpa"] = {"Pirriya"}, ["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"}, ["xpc"] = {"Pecheneg"}, ["xpd"] = {"Oyster Bay Tasmanian"}, ["xpe"] = {"Liberia Kpelle"}, ["xpf"] = {"Southeast Tasmanian", "Nuenonne"}, ["xpg"] = {"Phrygian"}, ["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"}, ["xpi"] = {"Pictish"}, ["xpj"] = {"Mpalitjanh"}, ["xpk"] = {"Kulina Pano"}, ["xpl"] = {"Port Sorell Tasmanian"}, ["xpm"] = {"Pumpokol"}, ["xpn"] = {"Kapinawá"}, ["xpo"] = {"Pochutec"}, ["xpp"] = {"Puyo-Paekche"}, ["xpq"] = {"Mohegan-Pequot"}, ["xpr"] = {"Parthian"}, ["xps"] = {"Pisidian"}, ["xpt"] = {"Punthamara"}, ["xpu"] = {"Punic"}, ["xpv"] = {"Northern Tasmanian", "Tommeginne"}, ["xpw"] = {"Northwestern Tasmanian", "Peerapper"}, ["xpx"] = {"Southwestern Tasmanian", "Toogee"}, ["xpy"] = {"Puyo"}, ["xpz"] = {"Bruny Island Tasmanian"}, ["xqa"] = {"Karakhanid"}, ["xqt"] = {"Qatabanian"}, ["xra"] = {"Krahô"}, ["xrb"] = {"Eastern Karaboro"}, ["xrd"] = {"Gundungurra"}, ["xre"] = {"Kreye"}, ["xrg"] = {"Minang"}, ["xri"] = {"Krikati-Timbira"}, ["xrm"] = {"Armazic"}, ["xrn"] = {"Arin"}, ["xrr"] = {"Raetic"}, ["xrt"] = {"Aranama-Tamique"}, ["xru"] = {"Marriammu"}, ["xrw"] = {"Karawa"}, ["xsa"] = {"Sabaean"}, ["xsb"] = {"Sambal"}, ["xsc"] = {"Scythian"}, ["xsd"] = {"Sidetic"}, ["xse"] = {"Sempan"}, ["xsh"] = {"Shamang"}, ["xsi"] = {"Sio"}, ["xsj"] = {"Subi"}, ["xsl"] = {"South Slavey"}, ["xsm"] = {"Kasem"}, ["xsn"] = {"Sanga (Nigeria)"}, ["xso"] = {"Solano"}, ["xsp"] = {"Silopi"}, ["xsq"] = {"Makhuwa-Saka"}, ["xsr"] = {"Sherpa"}, ["xsu"] = {"Sanumá"}, ["xsv"] = {"Sudovian"}, ["xsy"] = {"Saisiyat"}, ["xta"] = {"Alcozauca Mixtec"}, ["xtb"] = {"Chazumba Mixtec"}, ["xtc"] = {"Katcha-Kadugli-Miri"}, ["xtd"] = {"Diuxi-Tilantongo Mixtec"}, ["xte"] = {"Ketengban"}, ["xtg"] = {"Transalpine Gaulish"}, ["xth"] = {"Yitha Yitha"}, ["xti"] = {"Sinicahua Mixtec"}, ["xtj"] = {"San Juan Teita Mixtec"}, ["xtl"] = {"Tijaltepec Mixtec"}, ["xtm"] = {"Magdalena Peñasco Mixtec"}, ["xtn"] = {"Northern Tlaxiaco Mixtec"}, ["xto"] = {"Tokharian A"}, ["xtp"] = {"San Miguel Piedras Mixtec"}, ["xtq"] = {"Tumshuqese"}, ["xtr"] = {"Early Tripuri"}, ["xts"] = {"Sindihui Mixtec"}, ["xtt"] = {"Tacahua Mixtec"}, ["xtu"] = {"Cuyamecalco Mixtec"}, ["xtv"] = {"Thawa"}, ["xtw"] = {"Tawandê"}, ["xty"] = {"Yoloxochitl Mixtec"}, ["xua"] = {"Alu Kurumba"}, ["xub"] = {"Betta Kurumba"}, ["xud"] = {"Umiida"}, ["xug"] = {"Kunigami"}, ["xuj"] = {"Jennu Kurumba"}, ["xul"] = {"Ngunawal", "Nunukul"}, ["xum"] = {"Umbrian"}, ["xun"] = {"Unggaranggu"}, ["xuo"] = {"Kuo"}, ["xup"] = {"Upper Umpqua"}, ["xur"] = {"Urartian"}, ["xut"] = {"Kuthant"}, ["xuu"] = {"Kxoe", "Khwedam"}, ["xve"] = {"Venetic"}, ["xvi"] = {"Kamviri"}, ["xvn"] = {"Vandalic"}, ["xvo"] = {"Volscian"}, ["xvs"] = {"Vestinian"}, ["xwa"] = {"Kwaza"}, ["xwc"] = {"Woccon"}, ["xwd"] = {"Wadi Wadi"}, ["xwe"] = {"Xwela Gbe"}, ["xwg"] = {"Kwegu"}, ["xwj"] = {"Wajuk"}, ["xwk"] = {"Wangkumara"}, ["xwl"] = {"Western Xwla Gbe"}, ["xwo"] = {"Written Oirat"}, ["xwr"] = {"Kwerba Mamberamo"}, ["xwt"] = {"Wotjobaluk"}, ["xww"] = {"Wemba Wemba"}, ["xxb"] = {"Boro (Ghana)"}, ["xxk"] = {"Ke'o"}, ["xxm"] = {"Minkin"}, ["xxr"] = {"Koropó"}, ["xxt"] = {"Tambora"}, ["xya"] = {"Yaygir"}, ["xyb"] = {"Yandjibara"}, ["xyj"] = {"Mayi-Yapi"}, ["xyk"] = {"Mayi-Kulan"}, ["xyl"] = {"Yalakalore"}, ["xyt"] = {"Mayi-Thakurti"}, ["xyy"] = {"Yorta Yorta"}, ["xzh"] = {"Zhang-Zhung"}, ["xzm"] = {"Zemgalian"}, ["xzp"] = {"Ancient Zapotec"}, ["yaa"] = {"Yaminahua"}, ["yab"] = {"Yuhup"}, ["yac"] = {"Pass Valley Yali"}, ["yad"] = {"Yagua"}, ["yae"] = {"Pumé"}, ["yaf"] = {"Yaka (Democratic Republic of Congo)"}, ["yag"] = {"Yámana"}, ["yah"] = {"Yazgulyam"}, ["yai"] = {"Yagnobi"}, ["yaj"] = {"Banda-Yangere"}, ["yak"] = {"Yakama"}, ["yal"] = {"Yalunka"}, ["yam"] = {"Yamba"}, ["yan"] = {"Mayangna"}, ["yao"] = {"Yao"}, ["yap"] = {"Yapese"}, ["yaq"] = {"Yaqui"}, ["yar"] = {"Yabarana"}, ["yas"] = {"Nugunu (Cameroon)"}, ["yat"] = {"Yambeta"}, ["yau"] = {"Yuwana"}, ["yav"] = {"Yangben"}, ["yaw"] = {"Yawalapití"}, ["yax"] = {"Yauma"}, ["yay"] = {"Agwagwune"}, ["yaz"] = {"Lokaa"}, ["yba"] = {"Yala"}, ["ybb"] = {"Yemba"}, ["ybe"] = {"West Yugur"}, ["ybh"] = {"Yakha"}, ["ybi"] = {"Yamphu"}, ["ybj"] = {"Hasha"}, ["ybk"] = {"Bokha"}, ["ybl"] = {"Yukuben"}, ["ybm"] = {"Yaben"}, ["ybn"] = {"Yabaâna"}, ["ybo"] = {"Yabong"}, ["ybx"] = {"Yawiyo"}, ["yby"] = {"Yaweyuha"}, ["ych"] = {"Chesu"}, ["ycl"] = {"Lolopo"}, ["ycn"] = {"Yucuna"}, ["ycp"] = {"Chepya"}, ["ycr"] = {"Yilan Creole"}, ["yda"] = {"Yanda"}, ["ydd"] = {"Eastern Yiddish"}, ["yde"] = {"Yangum Dey"}, ["ydg"] = {"Yidgha"}, ["ydk"] = {"Yoidik"}, ["yea"] = {"Ravula"}, ["yec"] = {"Yeniche"}, ["yee"] = {"Yimas"}, ["yei"] = {"Yeni"}, ["yej"] = {"Yevanic"}, ["yel"] = {"Yela"}, ["yer"] = {"Tarok"}, ["yes"] = {"Nyankpa"}, ["yet"] = {"Yetfa"}, ["yeu"] = {"Yerukula"}, ["yev"] = {"Yapunda"}, ["yey"] = {"Yeyi"}, ["yga"] = {"Malyangapa"}, ["ygi"] = {"Yiningayi"}, ["ygl"] = {"Yangum Gel"}, ["ygm"] = {"Yagomi"}, ["ygp"] = {"Gepo"}, ["ygr"] = {"Yagaria"}, ["ygs"] = {"Yolŋu Sign Language"}, ["ygu"] = {"Yugul"}, ["ygw"] = {"Yagwoia"}, ["yha"] = {"Baha Buyang"}, ["yhd"] = {"Judeo-Iraqi Arabic"}, ["yhl"] = {"Hlepho Phowa"}, ["yhs"] = {"Yan-nhaŋu Sign Language"}, ["yia"] = {"Yinggarda"}, ["yif"] = {"Ache"}, ["yig"] = {"Wusa Nasu"}, ["yih"] = {"Western Yiddish"}, ["yii"] = {"Yidiny"}, ["yij"] = {"Yindjibarndi"}, ["yik"] = {"Dongshanba Lalo"}, ["yil"] = {"Yindjilandji"}, ["yim"] = {"Yimchungru Naga"}, ["yin"] = {"Riang Lai", "Yinchia"}, ["yip"] = {"Pholo"}, ["yiq"] = {"Miqie"}, ["yir"] = {"North Awyu"}, ["yis"] = {"Yis"}, ["yit"] = {"Eastern Lalu"}, ["yiu"] = {"Awu"}, ["yiv"] = {"Northern Nisu"}, ["yix"] = {"Axi Yi"}, ["yiz"] = {"Azhe"}, ["yka"] = {"Yakan"}, ["ykg"] = {"Northern Yukaghir"}, ["ykh"] = {"Khamnigan Mongol"}, ["yki"] = {"Yoke"}, ["ykk"] = {"Yakaikeke"}, ["ykl"] = {"Khlula"}, ["ykm"] = {"Kap"}, ["ykn"] = {"Kua-nsi"}, ["yko"] = {"Yasa"}, ["ykr"] = {"Yekora"}, ["ykt"] = {"Kathu"}, ["yku"] = {"Kuamasi"}, ["yky"] = {"Yakoma"}, ["yla"] = {"Yaul"}, ["ylb"] = {"Yaleba"}, ["yle"] = {"Yele"}, ["ylg"] = {"Yelogu"}, ["yli"] = {"Angguruk Yali"}, ["yll"] = {"Yil"}, ["ylm"] = {"Limi"}, ["yln"] = {"Langnian Buyang"}, ["ylo"] = {"Naluo Yi"}, ["ylr"] = {"Yalarnnga"}, ["ylu"] = {"Aribwaung"}, ["yly"] = {"Nyâlayu", "Nyelâyu"}, ["ymb"] = {"Yambes"}, ["ymc"] = {"Southern Muji"}, ["ymd"] = {"Muda"}, ["yme"] = {"Yameo"}, ["ymg"] = {"Yamongeri"}, ["ymh"] = {"Mili"}, ["ymi"] = {"Moji"}, ["ymk"] = {"Makwe"}, ["yml"] = {"Iamalele"}, ["ymm"] = {"Maay"}, ["ymn"] = {"Yamna", "Sunum"}, ["ymo"] = {"Yangum Mon"}, ["ymp"] = {"Yamap"}, ["ymq"] = {"Qila Muji"}, ["ymr"] = {"Malasar"}, ["yms"] = {"Mysian"}, ["ymx"] = {"Northern Muji"}, ["ymz"] = {"Muzi"}, ["yna"] = {"Aluo"}, ["ynd"] = {"Yandruwandha"}, ["yne"] = {"Lang'e"}, ["yng"] = {"Yango"}, ["ynk"] = {"Naukan Yupik"}, ["ynl"] = {"Yangulam"}, ["ynn"] = {"Yana"}, ["yno"] = {"Yong"}, ["ynq"] = {"Yendang"}, ["yns"] = {"Yansi"}, ["ynu"] = {"Yahuna"}, ["yob"] = {"Yoba"}, ["yog"] = {"Yogad"}, ["yoi"] = {"Yonaguni"}, ["yok"] = {"Yokuts"}, ["yol"] = {"Yola"}, ["yom"] = {"Yombe"}, ["yon"] = {"Yongkom"}, ["yot"] = {"Yotti"}, ["yox"] = {"Yoron"}, ["yoy"] = {"Yoy"}, ["ypa"] = {"Phala"}, ["ypb"] = {"Labo Phowa"}, ["ypg"] = {"Phola"}, ["yph"] = {"Phupha"}, ["ypk"] = {"Yupik languages"}, ["ypm"] = {"Phuma"}, ["ypn"] = {"Ani Phowa"}, ["ypo"] = {"Alo Phola"}, ["ypp"] = {"Phupa"}, ["ypz"] = {"Phuza"}, ["yra"] = {"Yerakai"}, ["yrb"] = {"Yareba"}, ["yre"] = {"Yaouré"}, ["yrk"] = {"Nenets"}, ["yrl"] = {"Nhengatu"}, ["yrm"] = {"Yirrk-Mel"}, ["yrn"] = {"Yerong"}, ["yro"] = {"Yaroamë"}, ["yrs"] = {"Yarsun"}, ["yrw"] = {"Yarawata"}, ["yry"] = {"Yarluyandi"}, ["ysc"] = {"Yassic"}, ["ysd"] = {"Samatao"}, ["ysg"] = {"Sonaga"}, ["ysl"] = {"Yugoslavian Sign Language"}, ["ysm"] = {"Myanmar Sign Language"}, ["ysn"] = {"Sani"}, ["yso"] = {"Nisi (China)"}, ["ysp"] = {"Southern Lolopo"}, ["ysr"] = {"Sirenik Yupik"}, ["yss"] = {"Yessan-Mayo"}, ["ysy"] = {"Sanie"}, ["yta"] = {"Talu"}, ["ytl"] = {"Tanglang"}, ["ytp"] = {"Thopho"}, ["ytw"] = {"Yout Wam"}, ["yty"] = {"Yatay"}, ["yua"] = {"Yucateco", "Yucatec Maya"}, ["yub"] = {"Yugambal"}, ["yuc"] = {"Yuchi"}, ["yud"] = {"Judeo-Tripolitanian Arabic"}, ["yue"] = {"Yue Chinese", "Cantonese"}, ["yuf"] = {"Havasupai-Walapai-Yavapai"}, ["yug"] = {"Yug"}, ["yui"] = {"Yurutí"}, ["yuj"] = {"Karkar-Yuri"}, ["yuk"] = {"Yuki"}, ["yul"] = {"Yulu"}, ["yum"] = {"Quechan"}, ["yun"] = {"Bena (Nigeria)"}, ["yup"] = {"Yukpa"}, ["yuq"] = {"Yuqui"}, ["yur"] = {"Yurok"}, ["yut"] = {"Yopno"}, ["yuw"] = {"Yau (Morobe Province)"}, ["yux"] = {"Southern Yukaghir"}, ["yuy"] = {"East Yugur"}, ["yuz"] = {"Yuracare"}, ["yva"] = {"Yawa"}, ["yvt"] = {"Yavitero"}, ["ywa"] = {"Kalou"}, ["ywg"] = {"Yinhawangka"}, ["ywl"] = {"Western Lalu"}, ["ywn"] = {"Yawanawa"}, ["ywq"] = {"Wuding-Luquan Yi"}, ["ywr"] = {"Yawuru"}, ["ywt"] = {"Xishanba Lalo", "Central Lalo"}, ["ywu"] = {"Wumeng Nasu"}, ["yww"] = {"Yawarawarga"}, ["yxa"] = {"Mayawali"}, ["yxg"] = {"Yagara"}, ["yxl"] = {"Yardliyawarra"}, ["yxm"] = {"Yinwum"}, ["yxu"] = {"Yuyu"}, ["yxy"] = {"Yabula Yabula"}, ["yyr"] = {"Yir Yoront"}, ["yyu"] = {"Yau (Sandaun Province)"}, ["yyz"] = {"Ayizi"}, ["yzg"] = {"E'ma Buyang"}, ["yzk"] = {"Zokhuo"}, ["zaa"] = {"Sierra de Juárez Zapotec"}, ["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"}, ["zac"] = {"Ocotlán Zapotec"}, ["zad"] = {"Cajonos Zapotec"}, ["zae"] = {"Yareni Zapotec"}, ["zaf"] = {"Ayoquesco Zapotec"}, ["zag"] = {"Zaghawa"}, ["zah"] = {"Zangwal"}, ["zai"] = {"Isthmus Zapotec"}, ["zaj"] = {"Zaramo"}, ["zak"] = {"Zanaki"}, ["zal"] = {"Zauzou"}, ["zam"] = {"Miahuatlán Zapotec"}, ["zao"] = {"Ozolotepec Zapotec"}, ["zap"] = {"Zapotec"}, ["zaq"] = {"Aloápam Zapotec"}, ["zar"] = {"Rincón Zapotec"}, ["zas"] = {"Santo Domingo Albarradas Zapotec"}, ["zat"] = {"Tabaa Zapotec"}, ["zau"] = {"Zangskari"}, ["zav"] = {"Yatzachi Zapotec"}, ["zaw"] = {"Mitla Zapotec"}, ["zax"] = {"Xadani Zapotec"}, ["zay"] = {"Zayse-Zergulla", "Zaysete"}, ["zaz"] = {"Zari"}, ["zba"] = {"Balaibalan"}, ["zbc"] = {"Central Berawan"}, ["zbe"] = {"East Berawan"}, ["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"}, ["zbt"] = {"Batui"}, ["zbu"] = {"Bu (Bauchi State)"}, ["zbw"] = {"West Berawan"}, ["zca"] = {"Coatecas Altas Zapotec"}, ["zcd"] = {"Las Delicias Zapotec"}, ["zch"] = {"Central Hongshuihe Zhuang"}, ["zdj"] = {"Ngazidja Comorian"}, ["zea"] = {"Zeeuws"}, ["zeg"] = {"Zenag"}, ["zeh"] = {"Eastern Hongshuihe Zhuang"}, ["zem"] = {"Zeem"}, ["zen"] = {"Zenaga"}, ["zga"] = {"Kinga"}, ["zgb"] = {"Guibei Zhuang"}, ["zgh"] = {"Standard Moroccan Tamazight"}, ["zgm"] = {"Minz Zhuang"}, ["zgn"] = {"Guibian Zhuang"}, ["zgr"] = {"Magori"}, ["zhb"] = {"Zhaba"}, ["zhd"] = {"Dai Zhuang"}, ["zhi"] = {"Zhire"}, ["zhn"] = {"Nong Zhuang"}, ["zhw"] = {"Zhoa"}, ["zhx"] = {"Chinese (family)"}, ["zia"] = {"Zia"}, ["zib"] = {"Zimbabwe Sign Language"}, ["zik"] = {"Zimakani"}, ["zil"] = {"Zialo"}, ["zim"] = {"Mesme"}, ["zin"] = {"Zinza"}, ["ziw"] = {"Zigula"}, ["ziz"] = {"Zizilivakan"}, ["zka"] = {"Kaimbulawa"}, ["zkd"] = {"Kadu"}, ["zkg"] = {"Koguryo"}, ["zkh"] = {"Khorezmian"}, ["zkk"] = {"Karankawa"}, ["zkn"] = {"Kanan"}, ["zko"] = {"Kott"}, ["zkp"] = {"São Paulo Kaingáng"}, ["zkr"] = {"Zakhring"}, ["zkt"] = {"Kitan"}, ["zku"] = {"Kaurna"}, ["zkv"] = {"Krevinian"}, ["zkz"] = {"Khazar"}, ["zla"] = {"Zula"}, ["zle"] = {"East Slavic languages"}, ["zlj"] = {"Liujiang Zhuang"}, ["zlm"] = {"Malay (individual language)"}, ["zln"] = {"Lianshan Zhuang"}, ["zlq"] = {"Liuqian Zhuang"}, ["zls"] = {"South Slavic languages"}, ["zlu"] = {"Zul"}, ["zlw"] = {"West Slavic languages"}, ["zma"] = {"Manda (Australia)"}, ["zmb"] = {"Zimba"}, ["zmc"] = {"Margany"}, ["zmd"] = {"Maridan"}, ["zme"] = {"Mangerr"}, ["zmf"] = {"Mfinu"}, ["zmg"] = {"Marti Ke"}, ["zmh"] = {"Makolkol"}, ["zmi"] = {"Negeri Sembilan Malay"}, ["zmj"] = {"Maridjabin"}, ["zmk"] = {"Mandandanyi"}, ["zml"] = {"Matngala"}, ["zmm"] = {"Marimanindji", "Marramaninyshi"}, ["zmn"] = {"Mbangwe"}, ["zmo"] = {"Molo"}, ["zmp"] = {"Mpuono"}, ["zmq"] = {"Mituku"}, ["zmr"] = {"Maranunggu"}, ["zms"] = {"Mbesa"}, ["zmt"] = {"Maringarr"}, ["zmu"] = {"Muruwari"}, ["zmv"] = {"Mbariman-Gudhinma"}, ["zmw"] = {"Mbo (Democratic Republic of Congo)"}, ["zmx"] = {"Bomitaba"}, ["zmy"] = {"Mariyedi"}, ["zmz"] = {"Mbandja"}, ["zna"] = {"Zan Gula"}, ["znd"] = {"Zande languages"}, ["zne"] = {"Zande (individual language)"}, ["zng"] = {"Mang"}, ["znk"] = {"Manangkari"}, ["zns"] = {"Mangas"}, ["zoc"] = {"Copainalá Zoque"}, ["zoh"] = {"Chimalapa Zoque"}, ["zom"] = {"Zou"}, ["zoo"] = {"Asunción Mixtepec Zapotec"}, ["zoq"] = {"Tabasco Zoque"}, ["zor"] = {"Rayón Zoque"}, ["zos"] = {"Francisco León Zoque"}, ["zpa"] = {"Lachiguiri Zapotec"}, ["zpb"] = {"Yautepec Zapotec"}, ["zpc"] = {"Choapan Zapotec"}, ["zpd"] = {"Southeastern Ixtlán Zapotec"}, ["zpe"] = {"Petapa Zapotec"}, ["zpf"] = {"San Pedro Quiatoni Zapotec"}, ["zpg"] = {"Guevea De Humboldt Zapotec"}, ["zph"] = {"Totomachapan Zapotec"}, ["zpi"] = {"Santa María Quiegolani Zapotec"}, ["zpj"] = {"Quiavicuzas Zapotec"}, ["zpk"] = {"Tlacolulita Zapotec"}, ["zpl"] = {"Lachixío Zapotec"}, ["zpm"] = {"Mixtepec Zapotec"}, ["zpn"] = {"Santa Inés Yatzechi Zapotec"}, ["zpo"] = {"Amatlán Zapotec"}, ["zpp"] = {"El Alto Zapotec"}, ["zpq"] = {"Zoogocho Zapotec"}, ["zpr"] = {"Santiago Xanica Zapotec"}, ["zps"] = {"Coatlán Zapotec"}, ["zpt"] = {"San Vicente Coatlán Zapotec"}, ["zpu"] = {"Yalálag Zapotec"}, ["zpv"] = {"Chichicapan Zapotec"}, ["zpw"] = {"Zaniza Zapotec"}, ["zpx"] = {"San Baltazar Loxicha Zapotec"}, ["zpy"] = {"Mazaltepec Zapotec"}, ["zpz"] = {"Texmelucan Zapotec"}, ["zqe"] = {"Qiubei Zhuang"}, ["zra"] = {"Kara (Korea)"}, ["zrg"] = {"Mirgan"}, ["zrn"] = {"Zerenkel"}, ["zro"] = {"Záparo"}, ["zrp"] = {"Zarphatic"}, ["zrs"] = {"Mairasi"}, ["zsa"] = {"Sarasira"}, ["zsk"] = {"Kaskean"}, ["zsl"] = {"Zambian Sign Language"}, ["zsm"] = {"Standard Malay"}, ["zsr"] = {"Southern Rincon Zapotec"}, ["zsu"] = {"Sukurum"}, ["zte"] = {"Elotepec Zapotec"}, ["ztg"] = {"Xanaguía Zapotec"}, ["ztl"] = {"Lapaguía-Guivini Zapotec"}, ["ztm"] = {"San Agustín Mixtepec Zapotec"}, ["ztn"] = {"Santa Catarina Albarradas Zapotec"}, ["ztp"] = {"Loxicha Zapotec"}, ["ztq"] = {"Quioquitani-Quierí Zapotec"}, ["zts"] = {"Tilquiapan Zapotec"}, ["ztt"] = {"Tejalapan Zapotec"}, ["ztu"] = {"Güilá Zapotec"}, ["ztx"] = {"Zaachila Zapotec"}, ["zty"] = {"Yatee Zapotec"}, ["zuh"] = {"Tokano"}, ["zum"] = {"Kumzari"}, ["zun"] = {"Zuni"}, ["zuy"] = {"Zumaya"}, ["zwa"] = {"Zay"}, ["zxx"] = {"No linguistic content", "Not applicable"}, ["zyb"] = {"Yongbei Zhuang"}, ["zyg"] = {"Yang Zhuang"}, ["zyj"] = {"Youjiang Zhuang"}, ["zyn"] = {"Yongnan Zhuang"}, ["zyp"] = {"Zyphe Chin"}, ["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"}, ["zzj"] = {"Zuojiang Zhuang"} } local deprecated = { ["in"] = {"Indonesian"}, ["iw"] = {"Hebrew"}, ["ji"] = {"Yiddish"}, ["jw"] = {"Javanese"}, ["mo"] = {"Moldavian", "Moldovan"}, ["aam"] = {"Aramanik"}, ["adp"] = {"Adap"}, ["agp"] = {"Paranan"}, ["ais"] = {"Nataoran Amis"}, ["ajp"] = {"South Levantine Arabic"}, ["ajt"] = {"Judeo-Tunisian Arabic"}, ["aoh"] = {"Arma"}, ["asd"] = {"Asas"}, ["aue"] = {"ǂKxʼauǁʼein"}, ["ayx"] = {"Ayi (China)"}, ["ayy"] = {"Tayabas Ayta"}, ["baz"] = {"Tunen"}, ["bbz"] = {"Babalia Creole Arabic"}, ["bgm"] = {"Baga Mboteni"}, ["bhk"] = {"Albay Bicolano"}, ["bic"] = {"Bikaru"}, ["bij"] = {"Vaghat-Ya-Bijim-Legeri"}, ["bjd"] = {"Bandjigali"}, ["bjq"] = {"Southern Betsimisaraka Malagasy"}, ["bkb"] = {"Finallig"}, ["blg"] = {"Balau"}, ["bmy"] = {"Bemba (Democratic Republic of Congo)"}, ["bpb"] = {"Barbacoas"}, ["btb"] = {"Beti (Cameroon)"}, ["btl"] = {"Bhatola"}, ["bxx"] = {"Borna (Democratic Republic of Congo)"}, ["byy"] = {"Buya"}, ["cbe"] = {"Chipiajes"}, ["cbh"] = {"Cagua"}, ["cca"] = {"Cauca"}, ["ccq"] = {"Chaungtha"}, ["cdg"] = {"Chamari"}, ["cjr"] = {"Chorotega"}, ["cka"] = {"Khumi Awa Chin"}, ["cmk"] = {"Chimakum"}, ["coy"] = {"Coyaima"}, ["cqu"] = {"Chilean Quechua"}, ["cug"] = {"Chungmboko", "Cung"}, ["cum"] = {"Cumeral"}, ["daf"] = {"Dan"}, ["dap"] = {"Nisi (India)"}, ["dgu"] = {"Degaru"}, ["dha"] = {"Dhanwar (India)"}, ["dit"] = {"Dirari"}, ["djl"] = {"Djiwarli"}, ["dkl"] = {"Kolum So Dogon"}, ["drh"] = {"Darkhat"}, ["drr"] = {"Dororo"}, ["drw"] = {"Darwazi"}, ["dud"] = {"Hun-Saare"}, ["duj"] = {"Dhuwal"}, ["dwl"] = {"Walo Kumbe Dogon"}, ["ekc"] = {"Eastern Karnic"}, ["elp"] = {"Elpaputih"}, ["emo"] = {"Emok"}, ["gav"] = {"Gabutamon"}, ["gbc"] = {"Garawa"}, ["gfx"] = {"Mangetti Dune ǃXung"}, ["ggn"] = {"Eastern Gurung"}, ["ggo"] = {"Southern Gondi"}, ["ggr"] = {"Aghu Tharnggalu"}, ["gio"] = {"Gelao"}, ["gji"] = {"Geji"}, ["gli"] = {"Guliguli"}, ["gti"] = {"Gbati-ri"}, ["guv"] = {"Gey"}, ["hrr"] = {"Horuru"}, ["iap"] = {"Iapama"}, ["ibi"] = {"Ibilo"}, ["ill"] = {"Iranun"}, ["ilw"] = {"Talur"}, ["ime"] = {"Imeraguen"}, ["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"}, ["jar"] = {"Jarawa (Nigeria)"}, ["jeg"] = {"Jeng"}, ["kbf"] = {"Kakauhua"}, ["kdv"] = {"Kado"}, ["kgc"] = {"Kasseng"}, ["kgd"] = {"Kataang"}, ["kgh"] = {"Upper Tanudan Kalinga"}, ["kgm"] = {"Karipúna"}, ["kjf"] = {"Khalaj [Indo-Iranian]"}, ["koj"] = {"Sara Dunjo"}, ["kox"] = {"Coxima"}, ["kpp"] = {"Paku Karen"}, ["krm"] = {"Krim"}, ["ksa"] = {"Shuwa-Zamani"}, ["ktr"] = {"Kota Marudu Tinagas"}, ["kvs"] = {"Kunggara"}, ["kwq"] = {"Kwak"}, ["kxe"] = {"Kakihum"}, ["kxl"] = {"Nepali Kurux"}, ["kxu"] = {"Kui (India)"}, ["kzh"] = {"Kenuzi-Dongola"}, ["kzj"] = {"Coastal Kadazan"}, ["kzt"] = {"Tambunan Dusun"}, ["lak"] = {"Laka (Nigeria)"}, ["lba"] = {"Lui"}, ["leg"] = {"Lengua"}, ["lii"] = {"Lingkhim"}, ["llo"] = {"Khlor"}, ["lmm"] = {"Lamam"}, ["lmz"] = {"Lumbee"}, ["lno"] = {"Lango (South Sudan)"}, ["lsg"] = {"Lyons Sign Language"}, ["meg"] = {"Mea"}, ["mgx"] = {"Omati"}, ["mhh"] = {"Maskoy Pidgin"}, ["mja"] = {"Mahei"}, ["mld"] = {"Malakhel"}, ["mnt"] = {"Maykulan"}, ["mof"] = {"Mohegan-Montauk-Narragansett"}, ["mst"] = {"Cataelano Mandaya"}, ["mvm"] = {"Muya"}, ["mwd"] = {"Mudbura"}, ["mwj"] = {"Maligo"}, ["mwx"] = {"Mediak"}, ["mwy"] = {"Mosiro"}, ["myd"] = {"Maramba"}, ["myi"] = {"Mina (India)"}, ["myq"] = {"Forest Maninka"}, ["myt"] = {"Sangab Mandaya"}, ["nad"] = {"Nijadali"}, ["nbf"] = {"Naxi"}, ["nbx"] = {"Ngura"}, ["ncp"] = {"Ndaktup"}, ["ngo"] = {"Ngoni"}, ["nln"] = {"Durango Nahuatl"}, ["nlr"] = {"Ngarla"}, ["nns"] = {"Ningye"}, ["nnx"] = {"Ngong"}, ["nom"] = {"Nocamán"}, ["noo"] = {"Nootka"}, ["nts"] = {"Natagaimas"}, ["nxu"] = {"Narau"}, ["ome"] = {"Omejes"}, ["oun"] = {"ǃOǃung"}, ["pat"] = {"Papitalai"}, ["pbz"] = {"Palu"}, ["pcr"] = {"Panang"}, ["pgy"] = {"Pongyong"}, ["pii"] = {"Pini"}, ["plj"] = {"Polci"}, ["plp"] = {"Palpa"}, ["pmc"] = {"Palumata"}, ["pmk"] = {"Pamlico"}, ["pmu"] = {"Mirpur Panjabi"}, ["pod"] = {"Ponares"}, ["ppa"] = {"Pao"}, ["ppr"] = {"Piru"}, ["prb"] = {"Lua'"}, ["prp"] = {"Parsi"}, ["pry"] = {"Pray 3"}, ["puk"] = {"Pu Ko"}, ["puz"] = {"Purum Naga"}, ["rie"] = {"Rien"}, ["rmr"] = {"Caló"}, ["rna"] = {"Runa"}, ["rsi"] = {"Rennellese Sign Language"}, ["sap"] = {"Sanapaná"}, ["sca"] = {"Sansu"}, ["sdm"] = {"Semandang"}, ["sgl"] = {"Sanglechi-Ishkashimi"}, ["sgo"] = {"Songa"}, ["skk"] = {"Sok"}, ["slq"] = {"Salchuq"}, ["smd"] = {"Sama"}, ["snb"] = {"Sebuyau"}, ["snh"] = {"Shinabo"}, ["sul"] = {"Surigaonon"}, ["sum"] = {"Sumo-Mayangna"}, ["svr"] = {"Savara"}, ["szd"] = {"Seru"}, ["tbb"] = {"Tapeba"}, ["tdu"] = {"Tempasuk Dusun"}, ["tgg"] = {"Tangga"}, ["thc"] = {"Tai Hang Tong"}, ["thw"] = {"Thudam"}, ["thx"] = {"The"}, ["tid"] = {"Tidong"}, ["tie"] = {"Tingal"}, ["tkk"] = {"Takpa"}, ["tlw"] = {"South Wemale"}, ["tmk"] = {"Northwestern Tamang"}, ["tmp"] = {"Tai Mène"}, ["tne"] = {"Tinoc Kallahan"}, ["tnf"] = {"Tangshewi"}, ["toe"] = {"Tomedes"}, ["tpw"] = {"Tupí"}, ["tsf"] = {"Southwestern Tamang"}, ["unp"] = {"Worora"}, ["uok"] = {"Uokha"}, ["uun"] = {"Kulon-Pazeh"}, ["vki"] = {"Ija-Zuba"}, ["wgw"] = {"Wagawaga"}, ["wit"] = {"Wintu"}, ["wiw"] = {"Wirangu"}, ["wra"] = {"Warapu"}, ["wrd"] = {"Warduji"}, ["wya"] = {"Wyandot"}, ["xba"] = {"Kamba (Brazil)"}, ["xbx"] = {"Kabixí"}, ["xia"] = {"Xiandao"}, ["xip"] = {"Xipináwa"}, ["xkh"] = {"Karahawyana"}, ["xrq"] = {"Karranga"}, ["xss"] = {"Assan"}, ["xtz"] = {"Tasmanian"}, ["ybd"] = {"Yangbye"}, ["yds"] = {"Yiddish Sign Language"}, ["yen"] = {"Yendang"}, ["yiy"] = {"Yir Yoront"}, ["yma"] = {"Yamphe"}, ["ymt"] = {"Mator-Taygi-Karagas"}, ["ynh"] = {"Yangho"}, ["yos"] = {"Yos"}, ["yri"] = {"Yarí"}, ["yuu"] = {"Yugh"}, ["zir"] = {"Ziriya"}, ["zkb"] = {"Koibal"}, ["zua"] = {"Zeem"} } return { active = active, deprecated = deprecated, } d2b8387b798a45d93230d1c1b7b22a80714751a1 1036 1020 2023-10-01T09:58:04Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/data/iana_languages]] Scribunto text/plain -- File-Date: 2023-08-02 local active = { ["aa"] = {"Afar"}, ["ab"] = {"Abkhazian"}, ["ae"] = {"Avestan"}, ["af"] = {"Afrikaans"}, ["ak"] = {"Akan"}, ["am"] = {"Amharic"}, ["an"] = {"Aragonese"}, ["ar"] = {"Arabic"}, ["as"] = {"Assamese"}, ["av"] = {"Avaric"}, ["ay"] = {"Aymara"}, ["az"] = {"Azerbaijani"}, ["ba"] = {"Bashkir"}, ["be"] = {"Belarusian"}, ["bg"] = {"Bulgarian"}, ["bh"] = {"Bihari languages"}, ["bi"] = {"Bislama"}, ["bm"] = {"Bambara"}, ["bn"] = {"Bengali", "Bangla"}, ["bo"] = {"Tibetan"}, ["br"] = {"Breton"}, ["bs"] = {"Bosnian"}, ["ca"] = {"Catalan", "Valencian"}, ["ce"] = {"Chechen"}, ["ch"] = {"Chamorro"}, ["co"] = {"Corsican"}, ["cr"] = {"Cree"}, ["cs"] = {"Czech"}, ["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"}, ["cv"] = {"Chuvash"}, ["cy"] = {"Welsh"}, ["da"] = {"Danish"}, ["de"] = {"German"}, ["dv"] = {"Dhivehi", "Divehi", "Maldivian"}, ["dz"] = {"Dzongkha"}, ["ee"] = {"Ewe"}, ["el"] = {"Modern Greek (1453-)"}, ["en"] = {"English"}, ["eo"] = {"Esperanto"}, ["es"] = {"Spanish", "Castilian"}, ["et"] = {"Estonian"}, ["eu"] = {"Basque"}, ["fa"] = {"Persian"}, ["ff"] = {"Fulah"}, ["fi"] = {"Finnish"}, ["fj"] = {"Fijian"}, ["fo"] = {"Faroese"}, ["fr"] = {"French"}, ["fy"] = {"Western Frisian"}, ["ga"] = {"Irish"}, ["gd"] = {"Scottish Gaelic", "Gaelic"}, ["gl"] = {"Galician"}, ["gn"] = {"Guarani"}, ["gu"] = {"Gujarati"}, ["gv"] = {"Manx"}, ["ha"] = {"Hausa"}, ["he"] = {"Hebrew"}, ["hi"] = {"Hindi"}, ["ho"] = {"Hiri Motu"}, ["hr"] = {"Croatian"}, ["ht"] = {"Haitian", "Haitian Creole"}, ["hu"] = {"Hungarian"}, ["hy"] = {"Armenian"}, ["hz"] = {"Herero"}, ["ia"] = {"Interlingua (International Auxiliary Language Association)"}, ["id"] = {"Indonesian"}, ["ie"] = {"Interlingue", "Occidental"}, ["ig"] = {"Igbo"}, ["ii"] = {"Sichuan Yi", "Nuosu"}, ["ik"] = {"Inupiaq"}, ["io"] = {"Ido"}, ["is"] = {"Icelandic"}, ["it"] = {"Italian"}, ["iu"] = {"Inuktitut"}, ["ja"] = {"Japanese"}, ["jv"] = {"Javanese"}, ["ka"] = {"Georgian"}, ["kg"] = {"Kongo"}, ["ki"] = {"Kikuyu", "Gikuyu"}, ["kj"] = {"Kuanyama", "Kwanyama"}, ["kk"] = {"Kazakh"}, ["kl"] = {"Kalaallisut", "Greenlandic"}, ["km"] = {"Khmer", "Central Khmer"}, ["kn"] = {"Kannada"}, ["ko"] = {"Korean"}, ["kr"] = {"Kanuri"}, ["ks"] = {"Kashmiri"}, ["ku"] = {"Kurdish"}, ["kv"] = {"Komi"}, ["kw"] = {"Cornish"}, ["ky"] = {"Kirghiz", "Kyrgyz"}, ["la"] = {"Latin"}, ["lb"] = {"Luxembourgish", "Letzeburgesch"}, ["lg"] = {"Ganda", "Luganda"}, ["li"] = {"Limburgan", "Limburger", "Limburgish"}, ["ln"] = {"Lingala"}, ["lo"] = {"Lao"}, ["lt"] = {"Lithuanian"}, ["lu"] = {"Luba-Katanga"}, ["lv"] = {"Latvian"}, ["mg"] = {"Malagasy"}, ["mh"] = {"Marshallese"}, ["mi"] = {"Maori"}, ["mk"] = {"Macedonian"}, ["ml"] = {"Malayalam"}, ["mn"] = {"Mongolian"}, ["mr"] = {"Marathi"}, ["ms"] = {"Malay (macrolanguage)"}, ["mt"] = {"Maltese"}, ["my"] = {"Burmese"}, ["na"] = {"Nauru"}, ["nb"] = {"Norwegian Bokmål"}, ["nd"] = {"North Ndebele"}, ["ne"] = {"Nepali (macrolanguage)"}, ["ng"] = {"Ndonga"}, ["nl"] = {"Dutch", "Flemish"}, ["nn"] = {"Norwegian Nynorsk"}, ["no"] = {"Norwegian"}, ["nr"] = {"South Ndebele"}, ["nv"] = {"Navajo", "Navaho"}, ["ny"] = {"Nyanja", "Chewa", "Chichewa"}, ["oc"] = {"Occitan (post 1500)"}, ["oj"] = {"Ojibwa"}, ["om"] = {"Oromo"}, ["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"}, ["os"] = {"Ossetian", "Ossetic"}, ["pa"] = {"Panjabi", "Punjabi"}, ["pi"] = {"Pali"}, ["pl"] = {"Polish"}, ["ps"] = {"Pushto", "Pashto"}, ["pt"] = {"Portuguese"}, ["qu"] = {"Quechua"}, ["rm"] = {"Romansh"}, ["rn"] = {"Rundi"}, ["ro"] = {"Romanian", "Moldavian", "Moldovan"}, ["ru"] = {"Russian"}, ["rw"] = {"Kinyarwanda"}, ["sa"] = {"Sanskrit"}, ["sc"] = {"Sardinian"}, ["sd"] = {"Sindhi"}, ["se"] = {"Northern Sami"}, ["sg"] = {"Sango"}, ["sh"] = {"Serbo-Croatian"}, ["si"] = {"Sinhala", "Sinhalese"}, ["sk"] = {"Slovak"}, ["sl"] = {"Slovenian"}, ["sm"] = {"Samoan"}, ["sn"] = {"Shona"}, ["so"] = {"Somali"}, ["sq"] = {"Albanian"}, ["sr"] = {"Serbian"}, ["ss"] = {"Swati"}, ["st"] = {"Southern Sotho"}, ["su"] = {"Sundanese"}, ["sv"] = {"Swedish"}, ["sw"] = {"Swahili (macrolanguage)"}, ["ta"] = {"Tamil"}, ["te"] = {"Telugu"}, ["tg"] = {"Tajik"}, ["th"] = {"Thai"}, ["ti"] = {"Tigrinya"}, ["tk"] = {"Turkmen"}, ["tl"] = {"Tagalog"}, ["tn"] = {"Tswana"}, ["to"] = {"Tonga (Tonga Islands)"}, ["tr"] = {"Turkish"}, ["ts"] = {"Tsonga"}, ["tt"] = {"Tatar"}, ["tw"] = {"Twi"}, ["ty"] = {"Tahitian"}, ["ug"] = {"Uighur", "Uyghur"}, ["uk"] = {"Ukrainian"}, ["ur"] = {"Urdu"}, ["uz"] = {"Uzbek"}, ["ve"] = {"Venda"}, ["vi"] = {"Vietnamese"}, ["vo"] = {"Volapük"}, ["wa"] = {"Walloon"}, ["wo"] = {"Wolof"}, ["xh"] = {"Xhosa"}, ["yi"] = {"Yiddish"}, ["yo"] = {"Yoruba"}, ["za"] = {"Zhuang", "Chuang"}, ["zh"] = {"Chinese"}, ["zu"] = {"Zulu"}, ["aaa"] = {"Ghotuo"}, ["aab"] = {"Alumu-Tesu"}, ["aac"] = {"Ari"}, ["aad"] = {"Amal"}, ["aae"] = {"Arbëreshë Albanian"}, ["aaf"] = {"Aranadan"}, ["aag"] = {"Ambrak"}, ["aah"] = {"Abu' Arapesh"}, ["aai"] = {"Arifama-Miniafia"}, ["aak"] = {"Ankave"}, ["aal"] = {"Afade"}, ["aan"] = {"Anambé"}, ["aao"] = {"Algerian Saharan Arabic"}, ["aap"] = {"Pará Arára"}, ["aaq"] = {"Eastern Abnaki"}, ["aas"] = {"Aasáx"}, ["aat"] = {"Arvanitika Albanian"}, ["aau"] = {"Abau"}, ["aav"] = {"Austro-Asiatic languages"}, ["aaw"] = {"Solong"}, ["aax"] = {"Mandobo Atas"}, ["aaz"] = {"Amarasi"}, ["aba"] = {"Abé"}, ["abb"] = {"Bankon"}, ["abc"] = {"Ambala Ayta"}, ["abd"] = {"Manide"}, ["abe"] = {"Western Abnaki"}, ["abf"] = {"Abai Sungai"}, ["abg"] = {"Abaga"}, ["abh"] = {"Tajiki Arabic"}, ["abi"] = {"Abidji"}, ["abj"] = {"Aka-Bea"}, ["abl"] = {"Lampung Nyo"}, ["abm"] = {"Abanyom"}, ["abn"] = {"Abua"}, ["abo"] = {"Abon"}, ["abp"] = {"Abellen Ayta"}, ["abq"] = {"Abaza"}, ["abr"] = {"Abron"}, ["abs"] = {"Ambonese Malay"}, ["abt"] = {"Ambulas"}, ["abu"] = {"Abure"}, ["abv"] = {"Baharna Arabic"}, ["abw"] = {"Pal"}, ["abx"] = {"Inabaknon"}, ["aby"] = {"Aneme Wake"}, ["abz"] = {"Abui"}, ["aca"] = {"Achagua"}, ["acb"] = {"Áncá"}, ["acd"] = {"Gikyode"}, ["ace"] = {"Achinese"}, ["acf"] = {"Saint Lucian Creole French"}, ["ach"] = {"Acoli"}, ["aci"] = {"Aka-Cari"}, ["ack"] = {"Aka-Kora"}, ["acl"] = {"Akar-Bale"}, ["acm"] = {"Mesopotamian Arabic"}, ["acn"] = {"Achang"}, ["acp"] = {"Eastern Acipa"}, ["acq"] = {"Ta'izzi-Adeni Arabic"}, ["acr"] = {"Achi"}, ["acs"] = {"Acroá"}, ["act"] = {"Achterhoeks"}, ["acu"] = {"Achuar-Shiwiar"}, ["acv"] = {"Achumawi"}, ["acw"] = {"Hijazi Arabic"}, ["acx"] = {"Omani Arabic"}, ["acy"] = {"Cypriot Arabic"}, ["acz"] = {"Acheron"}, ["ada"] = {"Adangme"}, ["adb"] = {"Atauran"}, ["add"] = {"Lidzonka", "Dzodinka"}, ["ade"] = {"Adele"}, ["adf"] = {"Dhofari Arabic"}, ["adg"] = {"Andegerebinha"}, ["adh"] = {"Adhola"}, ["adi"] = {"Adi"}, ["adj"] = {"Adioukrou"}, ["adl"] = {"Galo"}, ["adn"] = {"Adang"}, ["ado"] = {"Abu"}, ["adq"] = {"Adangbe"}, ["adr"] = {"Adonara"}, ["ads"] = {"Adamorobe Sign Language"}, ["adt"] = {"Adnyamathanha"}, ["adu"] = {"Aduge"}, ["adw"] = {"Amundava"}, ["adx"] = {"Amdo Tibetan"}, ["ady"] = {"Adyghe", "Adygei"}, ["adz"] = {"Adzera"}, ["aea"] = {"Areba"}, ["aeb"] = {"Tunisian Arabic"}, ["aec"] = {"Saidi Arabic"}, ["aed"] = {"Argentine Sign Language"}, ["aee"] = {"Northeast Pashai", "Northeast Pashayi"}, ["aek"] = {"Haeke"}, ["ael"] = {"Ambele"}, ["aem"] = {"Arem"}, ["aen"] = {"Armenian Sign Language"}, ["aeq"] = {"Aer"}, ["aer"] = {"Eastern Arrernte"}, ["aes"] = {"Alsea"}, ["aeu"] = {"Akeu"}, ["aew"] = {"Ambakich"}, ["aey"] = {"Amele"}, ["aez"] = {"Aeka"}, ["afa"] = {"Afro-Asiatic languages"}, ["afb"] = {"Gulf Arabic"}, ["afd"] = {"Andai"}, ["afe"] = {"Putukwam"}, ["afg"] = {"Afghan Sign Language"}, ["afh"] = {"Afrihili"}, ["afi"] = {"Akrukay", "Chini"}, ["afk"] = {"Nanubae"}, ["afn"] = {"Defaka"}, ["afo"] = {"Eloyi"}, ["afp"] = {"Tapei"}, ["afs"] = {"Afro-Seminole Creole"}, ["aft"] = {"Afitti"}, ["afu"] = {"Awutu"}, ["afz"] = {"Obokuitai"}, ["aga"] = {"Aguano"}, ["agb"] = {"Legbo"}, ["agc"] = {"Agatu"}, ["agd"] = {"Agarabi"}, ["age"] = {"Angal"}, ["agf"] = {"Arguni"}, ["agg"] = {"Angor"}, ["agh"] = {"Ngelima"}, ["agi"] = {"Agariya"}, ["agj"] = {"Argobba"}, ["agk"] = {"Isarog Agta"}, ["agl"] = {"Fembe"}, ["agm"] = {"Angaataha"}, ["agn"] = {"Agutaynen"}, ["ago"] = {"Tainae"}, ["agq"] = {"Aghem"}, ["agr"] = {"Aguaruna"}, ["ags"] = {"Esimbi"}, ["agt"] = {"Central Cagayan Agta"}, ["agu"] = {"Aguacateco"}, ["agv"] = {"Remontado Dumagat"}, ["agw"] = {"Kahua"}, ["agx"] = {"Aghul"}, ["agy"] = {"Southern Alta"}, ["agz"] = {"Mt. Iriga Agta"}, ["aha"] = {"Ahanta"}, ["ahb"] = {"Axamb"}, ["ahg"] = {"Qimant"}, ["ahh"] = {"Aghu"}, ["ahi"] = {"Tiagbamrin Aizi"}, ["ahk"] = {"Akha"}, ["ahl"] = {"Igo"}, ["ahm"] = {"Mobumrin Aizi"}, ["ahn"] = {"Àhàn"}, ["aho"] = {"Ahom"}, ["ahp"] = {"Aproumu Aizi"}, ["ahr"] = {"Ahirani"}, ["ahs"] = {"Ashe"}, ["aht"] = {"Ahtena"}, ["aia"] = {"Arosi"}, ["aib"] = {"Ainu (China)"}, ["aic"] = {"Ainbai"}, ["aid"] = {"Alngith"}, ["aie"] = {"Amara"}, ["aif"] = {"Agi"}, ["aig"] = {"Antigua and Barbuda Creole English"}, ["aih"] = {"Ai-Cham"}, ["aii"] = {"Assyrian Neo-Aramaic"}, ["aij"] = {"Lishanid Noshan"}, ["aik"] = {"Ake"}, ["ail"] = {"Aimele"}, ["aim"] = {"Aimol"}, ["ain"] = {"Ainu (Japan)"}, ["aio"] = {"Aiton"}, ["aip"] = {"Burumakok"}, ["aiq"] = {"Aimaq"}, ["air"] = {"Airoran"}, ["ait"] = {"Arikem"}, ["aiw"] = {"Aari"}, ["aix"] = {"Aighon"}, ["aiy"] = {"Ali"}, ["aja"] = {"Aja (South Sudan)"}, ["ajg"] = {"Aja (Benin)"}, ["aji"] = {"Ajië"}, ["ajn"] = {"Andajin"}, ["ajs"] = {"Algerian Jewish Sign Language"}, ["aju"] = {"Judeo-Moroccan Arabic"}, ["ajw"] = {"Ajawa"}, ["ajz"] = {"Amri Karbi"}, ["akb"] = {"Batak Angkola"}, ["akc"] = {"Mpur"}, ["akd"] = {"Ukpet-Ehom"}, ["ake"] = {"Akawaio"}, ["akf"] = {"Akpa"}, ["akg"] = {"Anakalangu"}, ["akh"] = {"Angal Heneng"}, ["aki"] = {"Aiome"}, ["akj"] = {"Aka-Jeru"}, ["akk"] = {"Akkadian"}, ["akl"] = {"Aklanon"}, ["akm"] = {"Aka-Bo"}, ["ako"] = {"Akurio"}, ["akp"] = {"Siwu"}, ["akq"] = {"Ak"}, ["akr"] = {"Araki"}, ["aks"] = {"Akaselem"}, ["akt"] = {"Akolet"}, ["aku"] = {"Akum"}, ["akv"] = {"Akhvakh"}, ["akw"] = {"Akwa"}, ["akx"] = {"Aka-Kede"}, ["aky"] = {"Aka-Kol"}, ["akz"] = {"Alabama"}, ["ala"] = {"Alago"}, ["alc"] = {"Qawasqar"}, ["ald"] = {"Alladian"}, ["ale"] = {"Aleut"}, ["alf"] = {"Alege"}, ["alg"] = {"Algonquian languages"}, ["alh"] = {"Alawa"}, ["ali"] = {"Amaimon"}, ["alj"] = {"Alangan"}, ["alk"] = {"Alak"}, ["all"] = {"Allar"}, ["alm"] = {"Amblong"}, ["aln"] = {"Gheg Albanian"}, ["alo"] = {"Larike-Wakasihu"}, ["alp"] = {"Alune"}, ["alq"] = {"Algonquin"}, ["alr"] = {"Alutor"}, ["als"] = {"Tosk Albanian"}, ["alt"] = {"Southern Altai"}, ["alu"] = {"'Are'are"}, ["alv"] = {"Atlantic-Congo languages"}, ["alw"] = {"Alaba-K’abeena", "Wanbasana"}, ["alx"] = {"Amol"}, ["aly"] = {"Alyawarr"}, ["alz"] = {"Alur"}, ["ama"] = {"Amanayé"}, ["amb"] = {"Ambo"}, ["amc"] = {"Amahuaca"}, ["ame"] = {"Yanesha'"}, ["amf"] = {"Hamer-Banna"}, ["amg"] = {"Amurdak"}, ["ami"] = {"Amis"}, ["amj"] = {"Amdang"}, ["amk"] = {"Ambai"}, ["aml"] = {"War-Jaintia"}, ["amm"] = {"Ama (Papua New Guinea)"}, ["amn"] = {"Amanab"}, ["amo"] = {"Amo"}, ["amp"] = {"Alamblak"}, ["amq"] = {"Amahai"}, ["amr"] = {"Amarakaeri"}, ["ams"] = {"Southern Amami-Oshima"}, ["amt"] = {"Amto"}, ["amu"] = {"Guerrero Amuzgo"}, ["amv"] = {"Ambelau"}, ["amw"] = {"Western Neo-Aramaic"}, ["amx"] = {"Anmatyerre"}, ["amy"] = {"Ami"}, ["amz"] = {"Atampaya"}, ["ana"] = {"Andaqui"}, ["anb"] = {"Andoa"}, ["anc"] = {"Ngas"}, ["and"] = {"Ansus"}, ["ane"] = {"Xârâcùù"}, ["anf"] = {"Animere"}, ["ang"] = {"Old English (ca. 450-1100)"}, ["anh"] = {"Nend"}, ["ani"] = {"Andi"}, ["anj"] = {"Anor"}, ["ank"] = {"Goemai"}, ["anl"] = {"Anu-Hkongso Chin"}, ["anm"] = {"Anal"}, ["ann"] = {"Obolo"}, ["ano"] = {"Andoque"}, ["anp"] = {"Angika"}, ["anq"] = {"Jarawa (India)"}, ["anr"] = {"Andh"}, ["ans"] = {"Anserma"}, ["ant"] = {"Antakarinya", "Antikarinya"}, ["anu"] = {"Anuak"}, ["anv"] = {"Denya"}, ["anw"] = {"Anaang"}, ["anx"] = {"Andra-Hus"}, ["any"] = {"Anyin"}, ["anz"] = {"Anem"}, ["aoa"] = {"Angolar"}, ["aob"] = {"Abom"}, ["aoc"] = {"Pemon"}, ["aod"] = {"Andarum"}, ["aoe"] = {"Angal Enen"}, ["aof"] = {"Bragat"}, ["aog"] = {"Angoram"}, ["aoi"] = {"Anindilyakwa"}, ["aoj"] = {"Mufian"}, ["aok"] = {"Arhö"}, ["aol"] = {"Alor"}, ["aom"] = {"Ömie"}, ["aon"] = {"Bumbita Arapesh"}, ["aor"] = {"Aore"}, ["aos"] = {"Taikat"}, ["aot"] = {"Atong (India)", "A'tong"}, ["aou"] = {"A'ou"}, ["aox"] = {"Atorada"}, ["aoz"] = {"Uab Meto"}, ["apa"] = {"Apache languages"}, ["apb"] = {"Sa'a"}, ["apc"] = {"Levantine Arabic"}, ["apd"] = {"Sudanese Arabic"}, ["ape"] = {"Bukiyip"}, ["apf"] = {"Pahanan Agta"}, ["apg"] = {"Ampanang"}, ["aph"] = {"Athpariya"}, ["api"] = {"Apiaká"}, ["apj"] = {"Jicarilla Apache"}, ["apk"] = {"Kiowa Apache"}, ["apl"] = {"Lipan Apache"}, ["apm"] = {"Mescalero-Chiricahua Apache"}, ["apn"] = {"Apinayé"}, ["apo"] = {"Ambul"}, ["app"] = {"Apma"}, ["apq"] = {"A-Pucikwar"}, ["apr"] = {"Arop-Lokep"}, ["aps"] = {"Arop-Sissano"}, ["apt"] = {"Apatani"}, ["apu"] = {"Apurinã"}, ["apv"] = {"Alapmunte"}, ["apw"] = {"Western Apache"}, ["apx"] = {"Aputai"}, ["apy"] = {"Apalaí"}, ["apz"] = {"Safeyoka"}, ["aqa"] = {"Alacalufan languages"}, ["aqc"] = {"Archi"}, ["aqd"] = {"Ampari Dogon"}, ["aqg"] = {"Arigidi"}, ["aqk"] = {"Aninka"}, ["aql"] = {"Algic languages"}, ["aqm"] = {"Atohwaim"}, ["aqn"] = {"Northern Alta"}, ["aqp"] = {"Atakapa"}, ["aqr"] = {"Arhâ"}, ["aqt"] = {"Angaité"}, ["aqz"] = {"Akuntsu"}, ["arb"] = {"Standard Arabic"}, ["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"}, ["ard"] = {"Arabana"}, ["are"] = {"Western Arrarnta"}, ["arh"] = {"Arhuaco"}, ["ari"] = {"Arikara"}, ["arj"] = {"Arapaso"}, ["ark"] = {"Arikapú"}, ["arl"] = {"Arabela"}, ["arn"] = {"Mapudungun", "Mapuche"}, ["aro"] = {"Araona"}, ["arp"] = {"Arapaho"}, ["arq"] = {"Algerian Arabic"}, ["arr"] = {"Karo (Brazil)"}, ["ars"] = {"Najdi Arabic"}, ["art"] = {"Artificial languages"}, ["aru"] = {"Aruá (Amazonas State)", "Arawá"}, ["arv"] = {"Arbore"}, ["arw"] = {"Arawak"}, ["arx"] = {"Aruá (Rodonia State)"}, ["ary"] = {"Moroccan Arabic"}, ["arz"] = {"Egyptian Arabic"}, ["asa"] = {"Asu (Tanzania)"}, ["asb"] = {"Assiniboine"}, ["asc"] = {"Casuarina Coast Asmat"}, ["ase"] = {"American Sign Language"}, ["asf"] = {"Auslan", "Australian Sign Language"}, ["asg"] = {"Cishingini"}, ["ash"] = {"Abishira"}, ["asi"] = {"Buruwai"}, ["asj"] = {"Sari"}, ["ask"] = {"Ashkun"}, ["asl"] = {"Asilulu"}, ["asn"] = {"Xingú Asuriní"}, ["aso"] = {"Dano"}, ["asp"] = {"Algerian Sign Language"}, ["asq"] = {"Austrian Sign Language"}, ["asr"] = {"Asuri"}, ["ass"] = {"Ipulo"}, ["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"}, ["asu"] = {"Tocantins Asurini"}, ["asv"] = {"Asoa"}, ["asw"] = {"Australian Aborigines Sign Language"}, ["asx"] = {"Muratayak"}, ["asy"] = {"Yaosakor Asmat"}, ["asz"] = {"As"}, ["ata"] = {"Pele-Ata"}, ["atb"] = {"Zaiwa"}, ["atc"] = {"Atsahuaca"}, ["atd"] = {"Ata Manobo"}, ["ate"] = {"Atemble"}, ["atg"] = {"Ivbie North-Okpela-Arhe"}, ["ath"] = {"Athapascan languages"}, ["ati"] = {"Attié"}, ["atj"] = {"Atikamekw"}, ["atk"] = {"Ati"}, ["atl"] = {"Mt. Iraya Agta"}, ["atm"] = {"Ata"}, ["atn"] = {"Ashtiani"}, ["ato"] = {"Atong (Cameroon)"}, ["atp"] = {"Pudtol Atta"}, ["atq"] = {"Aralle-Tabulahan"}, ["atr"] = {"Waimiri-Atroari"}, ["ats"] = {"Gros Ventre"}, ["att"] = {"Pamplona Atta"}, ["atu"] = {"Reel"}, ["atv"] = {"Northern Altai"}, ["atw"] = {"Atsugewi"}, ["atx"] = {"Arutani"}, ["aty"] = {"Aneityum"}, ["atz"] = {"Arta"}, ["aua"] = {"Asumboa"}, ["aub"] = {"Alugu"}, ["auc"] = {"Waorani"}, ["aud"] = {"Anuta"}, ["auf"] = {"Arauan languages"}, ["aug"] = {"Aguna"}, ["auh"] = {"Aushi"}, ["aui"] = {"Anuki"}, ["auj"] = {"Awjilah"}, ["auk"] = {"Heyo"}, ["aul"] = {"Aulua"}, ["aum"] = {"Asu (Nigeria)"}, ["aun"] = {"Molmo One"}, ["auo"] = {"Auyokawa"}, ["aup"] = {"Makayam"}, ["auq"] = {"Anus", "Korur"}, ["aur"] = {"Aruek"}, ["aus"] = {"Australian languages"}, ["aut"] = {"Austral"}, ["auu"] = {"Auye"}, ["auw"] = {"Awyi"}, ["aux"] = {"Aurá"}, ["auy"] = {"Awiyaana"}, ["auz"] = {"Uzbeki Arabic"}, ["avb"] = {"Avau"}, ["avd"] = {"Alviri-Vidari"}, ["avi"] = {"Avikam"}, ["avk"] = {"Kotava"}, ["avl"] = {"Eastern Egyptian Bedawi Arabic"}, ["avm"] = {"Angkamuthi"}, ["avn"] = {"Avatime"}, ["avo"] = {"Agavotaguerra"}, ["avs"] = {"Aushiri"}, ["avt"] = {"Au"}, ["avu"] = {"Avokaya"}, ["avv"] = {"Avá-Canoeiro"}, ["awa"] = {"Awadhi"}, ["awb"] = {"Awa (Papua New Guinea)"}, ["awc"] = {"Cicipu"}, ["awd"] = {"Arawakan languages"}, ["awe"] = {"Awetí"}, ["awg"] = {"Anguthimri"}, ["awh"] = {"Awbono"}, ["awi"] = {"Aekyom"}, ["awk"] = {"Awabakal"}, ["awm"] = {"Arawum"}, ["awn"] = {"Awngi"}, ["awo"] = {"Awak"}, ["awr"] = {"Awera"}, ["aws"] = {"South Awyu"}, ["awt"] = {"Araweté"}, ["awu"] = {"Central Awyu"}, ["awv"] = {"Jair Awyu"}, ["aww"] = {"Awun"}, ["awx"] = {"Awara"}, ["awy"] = {"Edera Awyu"}, ["axb"] = {"Abipon"}, ["axe"] = {"Ayerrerenge"}, ["axg"] = {"Mato Grosso Arára"}, ["axk"] = {"Yaka (Central African Republic)"}, ["axl"] = {"Lower Southern Aranda"}, ["axm"] = {"Middle Armenian"}, ["axx"] = {"Xârâgurè"}, ["aya"] = {"Awar"}, ["ayb"] = {"Ayizo Gbe"}, ["ayc"] = {"Southern Aymara"}, ["ayd"] = {"Ayabadhu"}, ["aye"] = {"Ayere"}, ["ayg"] = {"Ginyanga"}, ["ayh"] = {"Hadrami Arabic"}, ["ayi"] = {"Leyigha"}, ["ayk"] = {"Akuku"}, ["ayl"] = {"Libyan Arabic"}, ["ayn"] = {"Sanaani Arabic"}, ["ayo"] = {"Ayoreo"}, ["ayp"] = {"North Mesopotamian Arabic"}, ["ayq"] = {"Ayi (Papua New Guinea)"}, ["ayr"] = {"Central Aymara"}, ["ays"] = {"Sorsogon Ayta"}, ["ayt"] = {"Magbukun Ayta"}, ["ayu"] = {"Ayu"}, ["ayz"] = {"Mai Brat"}, ["aza"] = {"Azha"}, ["azb"] = {"South Azerbaijani"}, ["azc"] = {"Uto-Aztecan languages"}, ["azd"] = {"Eastern Durango Nahuatl"}, ["azg"] = {"San Pedro Amuzgos Amuzgo"}, ["azj"] = {"North Azerbaijani"}, ["azm"] = {"Ipalapa Amuzgo"}, ["azn"] = {"Western Durango Nahuatl"}, ["azo"] = {"Awing"}, ["azt"] = {"Faire Atta"}, ["azz"] = {"Highland Puebla Nahuatl"}, ["baa"] = {"Babatana"}, ["bab"] = {"Bainouk-Gunyuño"}, ["bac"] = {"Badui"}, ["bad"] = {"Banda languages"}, ["bae"] = {"Baré"}, ["baf"] = {"Nubaca"}, ["bag"] = {"Tuki"}, ["bah"] = {"Bahamas Creole English"}, ["bai"] = {"Bamileke languages"}, ["baj"] = {"Barakai"}, ["bal"] = {"Baluchi"}, ["ban"] = {"Balinese"}, ["bao"] = {"Waimaha"}, ["bap"] = {"Bantawa"}, ["bar"] = {"Bavarian"}, ["bas"] = {"Basa (Cameroon)"}, ["bat"] = {"Baltic languages"}, ["bau"] = {"Bada (Nigeria)"}, ["bav"] = {"Vengo"}, ["baw"] = {"Bambili-Bambui"}, ["bax"] = {"Bamun"}, ["bay"] = {"Batuley"}, ["bba"] = {"Baatonum"}, ["bbb"] = {"Barai"}, ["bbc"] = {"Batak Toba"}, ["bbd"] = {"Bau"}, ["bbe"] = {"Bangba"}, ["bbf"] = {"Baibai"}, ["bbg"] = {"Barama"}, ["bbh"] = {"Bugan"}, ["bbi"] = {"Barombi"}, ["bbj"] = {"Ghomálá'"}, ["bbk"] = {"Babanki"}, ["bbl"] = {"Bats"}, ["bbm"] = {"Babango"}, ["bbn"] = {"Uneapa"}, ["bbo"] = {"Northern Bobo Madaré", "Konabéré"}, ["bbp"] = {"West Central Banda"}, ["bbq"] = {"Bamali"}, ["bbr"] = {"Girawa"}, ["bbs"] = {"Bakpinka"}, ["bbt"] = {"Mburku"}, ["bbu"] = {"Kulung (Nigeria)"}, ["bbv"] = {"Karnai"}, ["bbw"] = {"Baba"}, ["bbx"] = {"Bubia"}, ["bby"] = {"Befang"}, ["bca"] = {"Central Bai"}, ["bcb"] = {"Bainouk-Samik"}, ["bcc"] = {"Southern Balochi"}, ["bcd"] = {"North Babar"}, ["bce"] = {"Bamenyam"}, ["bcf"] = {"Bamu"}, ["bcg"] = {"Baga Pokur"}, ["bch"] = {"Bariai"}, ["bci"] = {"Baoulé"}, ["bcj"] = {"Bardi"}, ["bck"] = {"Bunuba"}, ["bcl"] = {"Central Bikol"}, ["bcm"] = {"Bannoni"}, ["bcn"] = {"Bali (Nigeria)"}, ["bco"] = {"Kaluli"}, ["bcp"] = {"Bali (Democratic Republic of Congo)"}, ["bcq"] = {"Bench"}, ["bcr"] = {"Babine"}, ["bcs"] = {"Kohumono"}, ["bct"] = {"Bendi"}, ["bcu"] = {"Awad Bing"}, ["bcv"] = {"Shoo-Minda-Nye"}, ["bcw"] = {"Bana"}, ["bcy"] = {"Bacama"}, ["bcz"] = {"Bainouk-Gunyaamolo"}, ["bda"] = {"Bayot"}, ["bdb"] = {"Basap"}, ["bdc"] = {"Emberá-Baudó"}, ["bdd"] = {"Bunama"}, ["bde"] = {"Bade"}, ["bdf"] = {"Biage"}, ["bdg"] = {"Bonggi"}, ["bdh"] = {"Baka (South Sudan)"}, ["bdi"] = {"Burun"}, ["bdj"] = {"Bai (South Sudan)", "Bai"}, ["bdk"] = {"Budukh"}, ["bdl"] = {"Indonesian Bajau"}, ["bdm"] = {"Buduma"}, ["bdn"] = {"Baldemu"}, ["bdo"] = {"Morom"}, ["bdp"] = {"Bende"}, ["bdq"] = {"Bahnar"}, ["bdr"] = {"West Coast Bajau"}, ["bds"] = {"Burunge"}, ["bdt"] = {"Bokoto"}, ["bdu"] = {"Oroko"}, ["bdv"] = {"Bodo Parja"}, ["bdw"] = {"Baham"}, ["bdx"] = {"Budong-Budong"}, ["bdy"] = {"Bandjalang"}, ["bdz"] = {"Badeshi"}, ["bea"] = {"Beaver"}, ["beb"] = {"Bebele"}, ["bec"] = {"Iceve-Maci"}, ["bed"] = {"Bedoanas"}, ["bee"] = {"Byangsi"}, ["bef"] = {"Benabena"}, ["beg"] = {"Belait"}, ["beh"] = {"Biali"}, ["bei"] = {"Bekati'"}, ["bej"] = {"Beja", "Bedawiyet"}, ["bek"] = {"Bebeli"}, ["bem"] = {"Bemba (Zambia)"}, ["beo"] = {"Beami"}, ["bep"] = {"Besoa"}, ["beq"] = {"Beembe"}, ["ber"] = {"Berber languages"}, ["bes"] = {"Besme"}, ["bet"] = {"Guiberoua Béte"}, ["beu"] = {"Blagar"}, ["bev"] = {"Daloa Bété"}, ["bew"] = {"Betawi"}, ["bex"] = {"Jur Modo"}, ["bey"] = {"Beli (Papua New Guinea)"}, ["bez"] = {"Bena (Tanzania)"}, ["bfa"] = {"Bari"}, ["bfb"] = {"Pauri Bareli"}, ["bfc"] = {"Panyi Bai", "Northern Bai"}, ["bfd"] = {"Bafut"}, ["bfe"] = {"Betaf", "Tena"}, ["bff"] = {"Bofi"}, ["bfg"] = {"Busang Kayan"}, ["bfh"] = {"Blafe"}, ["bfi"] = {"British Sign Language"}, ["bfj"] = {"Bafanji"}, ["bfk"] = {"Ban Khor Sign Language"}, ["bfl"] = {"Banda-Ndélé"}, ["bfm"] = {"Mmen"}, ["bfn"] = {"Bunak"}, ["bfo"] = {"Malba Birifor"}, ["bfp"] = {"Beba"}, ["bfq"] = {"Badaga"}, ["bfr"] = {"Bazigar"}, ["bfs"] = {"Southern Bai"}, ["bft"] = {"Balti"}, ["bfu"] = {"Gahri"}, ["bfw"] = {"Bondo"}, ["bfx"] = {"Bantayanon"}, ["bfy"] = {"Bagheli"}, ["bfz"] = {"Mahasu Pahari"}, ["bga"] = {"Gwamhi-Wuri"}, ["bgb"] = {"Bobongko"}, ["bgc"] = {"Haryanvi"}, ["bgd"] = {"Rathwi Bareli"}, ["bge"] = {"Bauria"}, ["bgf"] = {"Bangandu"}, ["bgg"] = {"Bugun"}, ["bgi"] = {"Giangan"}, ["bgj"] = {"Bangolan"}, ["bgk"] = {"Bit", "Buxinhua"}, ["bgl"] = {"Bo (Laos)"}, ["bgn"] = {"Western Balochi"}, ["bgo"] = {"Baga Koga"}, ["bgp"] = {"Eastern Balochi"}, ["bgq"] = {"Bagri"}, ["bgr"] = {"Bawm Chin"}, ["bgs"] = {"Tagabawa"}, ["bgt"] = {"Bughotu"}, ["bgu"] = {"Mbongno"}, ["bgv"] = {"Warkay-Bipim"}, ["bgw"] = {"Bhatri"}, ["bgx"] = {"Balkan Gagauz Turkish"}, ["bgy"] = {"Benggoi"}, ["bgz"] = {"Banggai"}, ["bha"] = {"Bharia"}, ["bhb"] = {"Bhili"}, ["bhc"] = {"Biga"}, ["bhd"] = {"Bhadrawahi"}, ["bhe"] = {"Bhaya"}, ["bhf"] = {"Odiai"}, ["bhg"] = {"Binandere"}, ["bhh"] = {"Bukharic"}, ["bhi"] = {"Bhilali"}, ["bhj"] = {"Bahing"}, ["bhl"] = {"Bimin"}, ["bhm"] = {"Bathari"}, ["bhn"] = {"Bohtan Neo-Aramaic"}, ["bho"] = {"Bhojpuri"}, ["bhp"] = {"Bima"}, ["bhq"] = {"Tukang Besi South"}, ["bhr"] = {"Bara Malagasy"}, ["bhs"] = {"Buwal"}, ["bht"] = {"Bhattiyali"}, ["bhu"] = {"Bhunjia"}, ["bhv"] = {"Bahau"}, ["bhw"] = {"Biak"}, ["bhx"] = {"Bhalay"}, ["bhy"] = {"Bhele"}, ["bhz"] = {"Bada (Indonesia)"}, ["bia"] = {"Badimaya"}, ["bib"] = {"Bissa", "Bisa"}, ["bid"] = {"Bidiyo"}, ["bie"] = {"Bepour"}, ["bif"] = {"Biafada"}, ["big"] = {"Biangai"}, ["bik"] = {"Bikol"}, ["bil"] = {"Bile"}, ["bim"] = {"Bimoba"}, ["bin"] = {"Bini", "Edo"}, ["bio"] = {"Nai"}, ["bip"] = {"Bila"}, ["biq"] = {"Bipi"}, ["bir"] = {"Bisorio"}, ["bit"] = {"Berinomo"}, ["biu"] = {"Biete"}, ["biv"] = {"Southern Birifor"}, ["biw"] = {"Kol (Cameroon)"}, ["bix"] = {"Bijori"}, ["biy"] = {"Birhor"}, ["biz"] = {"Baloi"}, ["bja"] = {"Budza"}, ["bjb"] = {"Banggarla"}, ["bjc"] = {"Bariji"}, ["bje"] = {"Biao-Jiao Mien"}, ["bjf"] = {"Barzani Jewish Neo-Aramaic"}, ["bjg"] = {"Bidyogo"}, ["bjh"] = {"Bahinemo"}, ["bji"] = {"Burji"}, ["bjj"] = {"Kanauji"}, ["bjk"] = {"Barok"}, ["bjl"] = {"Bulu (Papua New Guinea)"}, ["bjm"] = {"Bajelani"}, ["bjn"] = {"Banjar"}, ["bjo"] = {"Mid-Southern Banda"}, ["bjp"] = {"Fanamaket"}, ["bjr"] = {"Binumarien"}, ["bjs"] = {"Bajan"}, ["bjt"] = {"Balanta-Ganja"}, ["bju"] = {"Busuu"}, ["bjv"] = {"Bedjond"}, ["bjw"] = {"Bakwé"}, ["bjx"] = {"Banao Itneg"}, ["bjy"] = {"Bayali"}, ["bjz"] = {"Baruga"}, ["bka"] = {"Kyak"}, ["bkc"] = {"Baka (Cameroon)"}, ["bkd"] = {"Binukid", "Talaandig"}, ["bkf"] = {"Beeke"}, ["bkg"] = {"Buraka"}, ["bkh"] = {"Bakoko"}, ["bki"] = {"Baki"}, ["bkj"] = {"Pande"}, ["bkk"] = {"Brokskat"}, ["bkl"] = {"Berik"}, ["bkm"] = {"Kom (Cameroon)"}, ["bkn"] = {"Bukitan"}, ["bko"] = {"Kwa'"}, ["bkp"] = {"Boko (Democratic Republic of Congo)"}, ["bkq"] = {"Bakairí"}, ["bkr"] = {"Bakumpai"}, ["bks"] = {"Northern Sorsoganon"}, ["bkt"] = {"Boloki"}, ["bku"] = {"Buhid"}, ["bkv"] = {"Bekwarra"}, ["bkw"] = {"Bekwel"}, ["bkx"] = {"Baikeno"}, ["bky"] = {"Bokyi"}, ["bkz"] = {"Bungku"}, ["bla"] = {"Siksika"}, ["blb"] = {"Bilua"}, ["blc"] = {"Bella Coola"}, ["bld"] = {"Bolango"}, ["ble"] = {"Balanta-Kentohe"}, ["blf"] = {"Buol"}, ["blh"] = {"Kuwaa"}, ["bli"] = {"Bolia"}, ["blj"] = {"Bolongan"}, ["blk"] = {"Pa'o Karen", "Pa'O"}, ["bll"] = {"Biloxi"}, ["blm"] = {"Beli (South Sudan)"}, ["bln"] = {"Southern Catanduanes Bikol"}, ["blo"] = {"Anii"}, ["blp"] = {"Blablanga"}, ["blq"] = {"Baluan-Pam"}, ["blr"] = {"Blang"}, ["bls"] = {"Balaesang"}, ["blt"] = {"Tai Dam"}, ["blv"] = {"Kibala", "Bolo"}, ["blw"] = {"Balangao"}, ["blx"] = {"Mag-Indi Ayta"}, ["bly"] = {"Notre"}, ["blz"] = {"Balantak"}, ["bma"] = {"Lame"}, ["bmb"] = {"Bembe"}, ["bmc"] = {"Biem"}, ["bmd"] = {"Baga Manduri"}, ["bme"] = {"Limassa"}, ["bmf"] = {"Bom-Kim"}, ["bmg"] = {"Bamwe"}, ["bmh"] = {"Kein"}, ["bmi"] = {"Bagirmi"}, ["bmj"] = {"Bote-Majhi"}, ["bmk"] = {"Ghayavi"}, ["bml"] = {"Bomboli"}, ["bmm"] = {"Northern Betsimisaraka Malagasy"}, ["bmn"] = {"Bina (Papua New Guinea)"}, ["bmo"] = {"Bambalang"}, ["bmp"] = {"Bulgebi"}, ["bmq"] = {"Bomu"}, ["bmr"] = {"Muinane"}, ["bms"] = {"Bilma Kanuri"}, ["bmt"] = {"Biao Mon"}, ["bmu"] = {"Somba-Siawari"}, ["bmv"] = {"Bum"}, ["bmw"] = {"Bomwali"}, ["bmx"] = {"Baimak"}, ["bmz"] = {"Baramu"}, ["bna"] = {"Bonerate"}, ["bnb"] = {"Bookan"}, ["bnc"] = {"Bontok"}, ["bnd"] = {"Banda (Indonesia)"}, ["bne"] = {"Bintauna"}, ["bnf"] = {"Masiwang"}, ["bng"] = {"Benga"}, ["bni"] = {"Bangi"}, ["bnj"] = {"Eastern Tawbuid"}, ["bnk"] = {"Bierebo"}, ["bnl"] = {"Boon"}, ["bnm"] = {"Batanga"}, ["bnn"] = {"Bunun"}, ["bno"] = {"Bantoanon"}, ["bnp"] = {"Bola"}, ["bnq"] = {"Bantik"}, ["bnr"] = {"Butmas-Tur"}, ["bns"] = {"Bundeli"}, ["bnt"] = {"Bantu languages"}, ["bnu"] = {"Bentong"}, ["bnv"] = {"Bonerif", "Beneraf", "Edwas"}, ["bnw"] = {"Bisis"}, ["bnx"] = {"Bangubangu"}, ["bny"] = {"Bintulu"}, ["bnz"] = {"Beezen"}, ["boa"] = {"Bora"}, ["bob"] = {"Aweer"}, ["boe"] = {"Mundabli"}, ["bof"] = {"Bolon"}, ["bog"] = {"Bamako Sign Language"}, ["boh"] = {"Boma"}, ["boi"] = {"Barbareño"}, ["boj"] = {"Anjam"}, ["bok"] = {"Bonjo"}, ["bol"] = {"Bole"}, ["bom"] = {"Berom"}, ["bon"] = {"Bine"}, ["boo"] = {"Tiemacèwè Bozo"}, ["bop"] = {"Bonkiman"}, ["boq"] = {"Bogaya"}, ["bor"] = {"Borôro"}, ["bot"] = {"Bongo"}, ["bou"] = {"Bondei"}, ["bov"] = {"Tuwuli"}, ["bow"] = {"Rema"}, ["box"] = {"Buamu"}, ["boy"] = {"Bodo (Central African Republic)"}, ["boz"] = {"Tiéyaxo Bozo"}, ["bpa"] = {"Daakaka"}, ["bpc"] = {"Mbuk"}, ["bpd"] = {"Banda-Banda"}, ["bpe"] = {"Bauni"}, ["bpg"] = {"Bonggo"}, ["bph"] = {"Botlikh"}, ["bpi"] = {"Bagupi"}, ["bpj"] = {"Binji"}, ["bpk"] = {"Orowe", "'Ôrôê"}, ["bpl"] = {"Broome Pearling Lugger Pidgin"}, ["bpm"] = {"Biyom"}, ["bpn"] = {"Dzao Min"}, ["bpo"] = {"Anasi"}, ["bpp"] = {"Kaure"}, ["bpq"] = {"Banda Malay"}, ["bpr"] = {"Koronadal Blaan"}, ["bps"] = {"Sarangani Blaan"}, ["bpt"] = {"Barrow Point"}, ["bpu"] = {"Bongu"}, ["bpv"] = {"Bian Marind"}, ["bpw"] = {"Bo (Papua New Guinea)"}, ["bpx"] = {"Palya Bareli"}, ["bpy"] = {"Bishnupriya"}, ["bpz"] = {"Bilba"}, ["bqa"] = {"Tchumbuli"}, ["bqb"] = {"Bagusa"}, ["bqc"] = {"Boko (Benin)", "Boo"}, ["bqd"] = {"Bung"}, ["bqf"] = {"Baga Kaloum"}, ["bqg"] = {"Bago-Kusuntu"}, ["bqh"] = {"Baima"}, ["bqi"] = {"Bakhtiari"}, ["bqj"] = {"Bandial"}, ["bqk"] = {"Banda-Mbrès"}, ["bql"] = {"Bilakura"}, ["bqm"] = {"Wumboko"}, ["bqn"] = {"Bulgarian Sign Language"}, ["bqo"] = {"Balo"}, ["bqp"] = {"Busa"}, ["bqq"] = {"Biritai"}, ["bqr"] = {"Burusu"}, ["bqs"] = {"Bosngun"}, ["bqt"] = {"Bamukumbit"}, ["bqu"] = {"Boguru"}, ["bqv"] = {"Koro Wachi", "Begbere-Ejar"}, ["bqw"] = {"Buru (Nigeria)"}, ["bqx"] = {"Baangi"}, ["bqy"] = {"Bengkala Sign Language"}, ["bqz"] = {"Bakaka"}, ["bra"] = {"Braj"}, ["brb"] = {"Brao", "Lave"}, ["brc"] = {"Berbice Creole Dutch"}, ["brd"] = {"Baraamu"}, ["brf"] = {"Bira"}, ["brg"] = {"Baure"}, ["brh"] = {"Brahui"}, ["bri"] = {"Mokpwe"}, ["brj"] = {"Bieria"}, ["brk"] = {"Birked"}, ["brl"] = {"Birwa"}, ["brm"] = {"Barambu"}, ["brn"] = {"Boruca"}, ["bro"] = {"Brokkat"}, ["brp"] = {"Barapasi"}, ["brq"] = {"Breri"}, ["brr"] = {"Birao"}, ["brs"] = {"Baras"}, ["brt"] = {"Bitare"}, ["bru"] = {"Eastern Bru"}, ["brv"] = {"Western Bru"}, ["brw"] = {"Bellari"}, ["brx"] = {"Bodo (India)"}, ["bry"] = {"Burui"}, ["brz"] = {"Bilbil"}, ["bsa"] = {"Abinomn"}, ["bsb"] = {"Brunei Bisaya"}, ["bsc"] = {"Bassari", "Oniyan"}, ["bse"] = {"Wushi"}, ["bsf"] = {"Bauchi"}, ["bsg"] = {"Bashkardi"}, ["bsh"] = {"Kati"}, ["bsi"] = {"Bassossi"}, ["bsj"] = {"Bangwinji"}, ["bsk"] = {"Burushaski"}, ["bsl"] = {"Basa-Gumna"}, ["bsm"] = {"Busami"}, ["bsn"] = {"Barasana-Eduria"}, ["bso"] = {"Buso"}, ["bsp"] = {"Baga Sitemu"}, ["bsq"] = {"Bassa"}, ["bsr"] = {"Bassa-Kontagora"}, ["bss"] = {"Akoose"}, ["bst"] = {"Basketo"}, ["bsu"] = {"Bahonsuai"}, ["bsv"] = {"Baga Sobané"}, ["bsw"] = {"Baiso"}, ["bsx"] = {"Yangkam"}, ["bsy"] = {"Sabah Bisaya"}, ["bta"] = {"Bata"}, ["btc"] = {"Bati (Cameroon)"}, ["btd"] = {"Batak Dairi"}, ["bte"] = {"Gamo-Ningi"}, ["btf"] = {"Birgit"}, ["btg"] = {"Gagnoa Bété"}, ["bth"] = {"Biatah Bidayuh"}, ["bti"] = {"Burate"}, ["btj"] = {"Bacanese Malay"}, ["btk"] = {"Batak languages"}, ["btm"] = {"Batak Mandailing"}, ["btn"] = {"Ratagnon"}, ["bto"] = {"Rinconada Bikol"}, ["btp"] = {"Budibud"}, ["btq"] = {"Batek"}, ["btr"] = {"Baetora"}, ["bts"] = {"Batak Simalungun"}, ["btt"] = {"Bete-Bendi"}, ["btu"] = {"Batu"}, ["btv"] = {"Bateri"}, ["btw"] = {"Butuanon"}, ["btx"] = {"Batak Karo"}, ["bty"] = {"Bobot"}, ["btz"] = {"Batak Alas-Kluet"}, ["bua"] = {"Buriat"}, ["bub"] = {"Bua"}, ["buc"] = {"Bushi"}, ["bud"] = {"Ntcham"}, ["bue"] = {"Beothuk"}, ["buf"] = {"Bushoong"}, ["bug"] = {"Buginese"}, ["buh"] = {"Younuo Bunu"}, ["bui"] = {"Bongili"}, ["buj"] = {"Basa-Gurmana"}, ["buk"] = {"Bugawac"}, ["bum"] = {"Bulu (Cameroon)"}, ["bun"] = {"Sherbro"}, ["buo"] = {"Terei"}, ["bup"] = {"Busoa"}, ["buq"] = {"Brem"}, ["bus"] = {"Bokobaru"}, ["but"] = {"Bungain"}, ["buu"] = {"Budu"}, ["buv"] = {"Bun"}, ["buw"] = {"Bubi"}, ["bux"] = {"Boghom"}, ["buy"] = {"Bullom So"}, ["buz"] = {"Bukwen"}, ["bva"] = {"Barein"}, ["bvb"] = {"Bube"}, ["bvc"] = {"Baelelea"}, ["bvd"] = {"Baeggu"}, ["bve"] = {"Berau Malay"}, ["bvf"] = {"Boor"}, ["bvg"] = {"Bonkeng"}, ["bvh"] = {"Bure"}, ["bvi"] = {"Belanda Viri"}, ["bvj"] = {"Baan"}, ["bvk"] = {"Bukat"}, ["bvl"] = {"Bolivian Sign Language"}, ["bvm"] = {"Bamunka"}, ["bvn"] = {"Buna"}, ["bvo"] = {"Bolgo"}, ["bvp"] = {"Bumang"}, ["bvq"] = {"Birri"}, ["bvr"] = {"Burarra"}, ["bvt"] = {"Bati (Indonesia)"}, ["bvu"] = {"Bukit Malay"}, ["bvv"] = {"Baniva"}, ["bvw"] = {"Boga"}, ["bvx"] = {"Dibole"}, ["bvy"] = {"Baybayanon"}, ["bvz"] = {"Bauzi"}, ["bwa"] = {"Bwatoo"}, ["bwb"] = {"Namosi-Naitasiri-Serua"}, ["bwc"] = {"Bwile"}, ["bwd"] = {"Bwaidoka"}, ["bwe"] = {"Bwe Karen"}, ["bwf"] = {"Boselewa"}, ["bwg"] = {"Barwe"}, ["bwh"] = {"Bishuo"}, ["bwi"] = {"Baniwa"}, ["bwj"] = {"Láá Láá Bwamu"}, ["bwk"] = {"Bauwaki"}, ["bwl"] = {"Bwela"}, ["bwm"] = {"Biwat"}, ["bwn"] = {"Wunai Bunu"}, ["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"}, ["bwp"] = {"Mandobo Bawah"}, ["bwq"] = {"Southern Bobo Madaré"}, ["bwr"] = {"Bura-Pabir"}, ["bws"] = {"Bomboma"}, ["bwt"] = {"Bafaw-Balong"}, ["bwu"] = {"Buli (Ghana)"}, ["bww"] = {"Bwa"}, ["bwx"] = {"Bu-Nao Bunu"}, ["bwy"] = {"Cwi Bwamu"}, ["bwz"] = {"Bwisi"}, ["bxa"] = {"Tairaha"}, ["bxb"] = {"Belanda Bor"}, ["bxc"] = {"Molengue"}, ["bxd"] = {"Pela"}, ["bxe"] = {"Birale"}, ["bxf"] = {"Bilur", "Minigir"}, ["bxg"] = {"Bangala"}, ["bxh"] = {"Buhutu"}, ["bxi"] = {"Pirlatapa"}, ["bxj"] = {"Bayungu"}, ["bxk"] = {"Bukusu", "Lubukusu"}, ["bxl"] = {"Jalkunan"}, ["bxm"] = {"Mongolia Buriat"}, ["bxn"] = {"Burduna"}, ["bxo"] = {"Barikanchi"}, ["bxp"] = {"Bebil"}, ["bxq"] = {"Beele"}, ["bxr"] = {"Russia Buriat"}, ["bxs"] = {"Busam"}, ["bxu"] = {"China Buriat"}, ["bxv"] = {"Berakou"}, ["bxw"] = {"Bankagooma"}, ["bxz"] = {"Binahari"}, ["bya"] = {"Batak"}, ["byb"] = {"Bikya"}, ["byc"] = {"Ubaghara"}, ["byd"] = {"Benyadu'"}, ["bye"] = {"Pouye"}, ["byf"] = {"Bete"}, ["byg"] = {"Baygo"}, ["byh"] = {"Bhujel"}, ["byi"] = {"Buyu"}, ["byj"] = {"Bina (Nigeria)"}, ["byk"] = {"Biao"}, ["byl"] = {"Bayono"}, ["bym"] = {"Bidjara"}, ["byn"] = {"Bilin", "Blin"}, ["byo"] = {"Biyo"}, ["byp"] = {"Bumaji"}, ["byq"] = {"Basay"}, ["byr"] = {"Baruya", "Yipma"}, ["bys"] = {"Burak"}, ["byt"] = {"Berti"}, ["byv"] = {"Medumba"}, ["byw"] = {"Belhariya"}, ["byx"] = {"Qaqet"}, ["byz"] = {"Banaro"}, ["bza"] = {"Bandi"}, ["bzb"] = {"Andio"}, ["bzc"] = {"Southern Betsimisaraka Malagasy"}, ["bzd"] = {"Bribri"}, ["bze"] = {"Jenaama Bozo"}, ["bzf"] = {"Boikin"}, ["bzg"] = {"Babuza"}, ["bzh"] = {"Mapos Buang"}, ["bzi"] = {"Bisu"}, ["bzj"] = {"Belize Kriol English"}, ["bzk"] = {"Nicaragua Creole English"}, ["bzl"] = {"Boano (Sulawesi)"}, ["bzm"] = {"Bolondo"}, ["bzn"] = {"Boano (Maluku)"}, ["bzo"] = {"Bozaba"}, ["bzp"] = {"Kemberano"}, ["bzq"] = {"Buli (Indonesia)"}, ["bzr"] = {"Biri"}, ["bzs"] = {"Brazilian Sign Language"}, ["bzt"] = {"Brithenig"}, ["bzu"] = {"Burmeso"}, ["bzv"] = {"Naami"}, ["bzw"] = {"Basa (Nigeria)"}, ["bzx"] = {"Kɛlɛngaxo Bozo"}, ["bzy"] = {"Obanliku"}, ["bzz"] = {"Evant"}, ["caa"] = {"Chortí"}, ["cab"] = {"Garifuna"}, ["cac"] = {"Chuj"}, ["cad"] = {"Caddo"}, ["cae"] = {"Lehar", "Laalaa"}, ["caf"] = {"Southern Carrier"}, ["cag"] = {"Nivaclé"}, ["cah"] = {"Cahuarano"}, ["cai"] = {"Central American Indian languages"}, ["caj"] = {"Chané"}, ["cak"] = {"Kaqchikel", "Cakchiquel"}, ["cal"] = {"Carolinian"}, ["cam"] = {"Cemuhî"}, ["can"] = {"Chambri"}, ["cao"] = {"Chácobo"}, ["cap"] = {"Chipaya"}, ["caq"] = {"Car Nicobarese"}, ["car"] = {"Galibi Carib"}, ["cas"] = {"Tsimané"}, ["cau"] = {"Caucasian languages"}, ["cav"] = {"Cavineña"}, ["caw"] = {"Callawalla"}, ["cax"] = {"Chiquitano"}, ["cay"] = {"Cayuga"}, ["caz"] = {"Canichana"}, ["cba"] = {"Chibchan languages"}, ["cbb"] = {"Cabiyarí"}, ["cbc"] = {"Carapana"}, ["cbd"] = {"Carijona"}, ["cbg"] = {"Chimila"}, ["cbi"] = {"Chachi"}, ["cbj"] = {"Ede Cabe"}, ["cbk"] = {"Chavacano"}, ["cbl"] = {"Bualkhaw Chin"}, ["cbn"] = {"Nyahkur"}, ["cbo"] = {"Izora"}, ["cbq"] = {"Tsucuba", "Cuba"}, ["cbr"] = {"Cashibo-Cacataibo"}, ["cbs"] = {"Cashinahua"}, ["cbt"] = {"Chayahuita"}, ["cbu"] = {"Candoshi-Shapra"}, ["cbv"] = {"Cacua"}, ["cbw"] = {"Kinabalian"}, ["cby"] = {"Carabayo"}, ["ccc"] = {"Chamicuro"}, ["ccd"] = {"Cafundo Creole"}, ["cce"] = {"Chopi"}, ["ccg"] = {"Samba Daka"}, ["cch"] = {"Atsam"}, ["ccj"] = {"Kasanga"}, ["ccl"] = {"Cutchi-Swahili"}, ["ccm"] = {"Malaccan Creole Malay"}, ["ccn"] = {"North Caucasian languages"}, ["cco"] = {"Comaltepec Chinantec"}, ["ccp"] = {"Chakma"}, ["ccr"] = {"Cacaopera"}, ["ccs"] = {"South Caucasian languages"}, ["cda"] = {"Choni"}, ["cdc"] = {"Chadic languages"}, ["cdd"] = {"Caddoan languages"}, ["cde"] = {"Chenchu"}, ["cdf"] = {"Chiru"}, ["cdh"] = {"Chambeali"}, ["cdi"] = {"Chodri"}, ["cdj"] = {"Churahi"}, ["cdm"] = {"Chepang"}, ["cdn"] = {"Chaudangsi"}, ["cdo"] = {"Min Dong Chinese"}, ["cdr"] = {"Cinda-Regi-Tiyal"}, ["cds"] = {"Chadian Sign Language"}, ["cdy"] = {"Chadong"}, ["cdz"] = {"Koda"}, ["cea"] = {"Lower Chehalis"}, ["ceb"] = {"Cebuano"}, ["ceg"] = {"Chamacoco"}, ["cek"] = {"Eastern Khumi Chin"}, ["cel"] = {"Celtic languages"}, ["cen"] = {"Cen"}, ["cet"] = {"Centúúm"}, ["cey"] = {"Ekai Chin"}, ["cfa"] = {"Dijim-Bwilim"}, ["cfd"] = {"Cara"}, ["cfg"] = {"Como Karim"}, ["cfm"] = {"Falam Chin"}, ["cga"] = {"Changriwa"}, ["cgc"] = {"Kagayanen"}, ["cgg"] = {"Chiga"}, ["cgk"] = {"Chocangacakha"}, ["chb"] = {"Chibcha"}, ["chc"] = {"Catawba"}, ["chd"] = {"Highland Oaxaca Chontal"}, ["chf"] = {"Tabasco Chontal"}, ["chg"] = {"Chagatai"}, ["chh"] = {"Chinook"}, ["chj"] = {"Ojitlán Chinantec"}, ["chk"] = {"Chuukese"}, ["chl"] = {"Cahuilla"}, ["chm"] = {"Mari (Russia)"}, ["chn"] = {"Chinook jargon"}, ["cho"] = {"Choctaw"}, ["chp"] = {"Chipewyan", "Dene Suline"}, ["chq"] = {"Quiotepec Chinantec"}, ["chr"] = {"Cherokee"}, ["cht"] = {"Cholón"}, ["chw"] = {"Chuwabu"}, ["chx"] = {"Chantyal"}, ["chy"] = {"Cheyenne"}, ["chz"] = {"Ozumacín Chinantec"}, ["cia"] = {"Cia-Cia"}, ["cib"] = {"Ci Gbe"}, ["cic"] = {"Chickasaw"}, ["cid"] = {"Chimariko"}, ["cie"] = {"Cineni"}, ["cih"] = {"Chinali"}, ["cik"] = {"Chitkuli Kinnauri"}, ["cim"] = {"Cimbrian"}, ["cin"] = {"Cinta Larga"}, ["cip"] = {"Chiapanec"}, ["cir"] = {"Tiri", "Haméa", "Méa"}, ["ciw"] = {"Chippewa"}, ["ciy"] = {"Chaima"}, ["cja"] = {"Western Cham"}, ["cje"] = {"Chru"}, ["cjh"] = {"Upper Chehalis"}, ["cji"] = {"Chamalal"}, ["cjk"] = {"Chokwe"}, ["cjm"] = {"Eastern Cham"}, ["cjn"] = {"Chenapian"}, ["cjo"] = {"Ashéninka Pajonal"}, ["cjp"] = {"Cabécar"}, ["cjs"] = {"Shor"}, ["cjv"] = {"Chuave"}, ["cjy"] = {"Jinyu Chinese"}, ["ckb"] = {"Central Kurdish"}, ["ckh"] = {"Chak"}, ["ckl"] = {"Cibak"}, ["ckm"] = {"Chakavian"}, ["ckn"] = {"Kaang Chin"}, ["cko"] = {"Anufo"}, ["ckq"] = {"Kajakse"}, ["ckr"] = {"Kairak"}, ["cks"] = {"Tayo"}, ["ckt"] = {"Chukot"}, ["cku"] = {"Koasati"}, ["ckv"] = {"Kavalan"}, ["ckx"] = {"Caka"}, ["cky"] = {"Cakfem-Mushere"}, ["ckz"] = {"Cakchiquel-Quiché Mixed Language"}, ["cla"] = {"Ron"}, ["clc"] = {"Chilcotin"}, ["cld"] = {"Chaldean Neo-Aramaic"}, ["cle"] = {"Lealao Chinantec"}, ["clh"] = {"Chilisso"}, ["cli"] = {"Chakali"}, ["clj"] = {"Laitu Chin"}, ["clk"] = {"Idu-Mishmi"}, ["cll"] = {"Chala"}, ["clm"] = {"Clallam"}, ["clo"] = {"Lowland Oaxaca Chontal"}, ["clt"] = {"Lautu Chin"}, ["clu"] = {"Caluyanun"}, ["clw"] = {"Chulym"}, ["cly"] = {"Eastern Highland Chatino"}, ["cma"] = {"Maa"}, ["cmc"] = {"Chamic languages"}, ["cme"] = {"Cerma"}, ["cmg"] = {"Classical Mongolian"}, ["cmi"] = {"Emberá-Chamí"}, ["cml"] = {"Campalagian"}, ["cmm"] = {"Michigamea"}, ["cmn"] = {"Mandarin Chinese"}, ["cmo"] = {"Central Mnong"}, ["cmr"] = {"Mro-Khimi Chin"}, ["cms"] = {"Messapic"}, ["cmt"] = {"Camtho"}, ["cna"] = {"Changthang"}, ["cnb"] = {"Chinbon Chin"}, ["cnc"] = {"Côông"}, ["cng"] = {"Northern Qiang"}, ["cnh"] = {"Hakha Chin", "Haka Chin"}, ["cni"] = {"Asháninka"}, ["cnk"] = {"Khumi Chin"}, ["cnl"] = {"Lalana Chinantec"}, ["cno"] = {"Con"}, ["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"}, ["cnq"] = {"Chung"}, ["cnr"] = {"Montenegrin"}, ["cns"] = {"Central Asmat"}, ["cnt"] = {"Tepetotutla Chinantec"}, ["cnu"] = {"Chenoua"}, ["cnw"] = {"Ngawn Chin"}, ["cnx"] = {"Middle Cornish"}, ["coa"] = {"Cocos Islands Malay"}, ["cob"] = {"Chicomuceltec"}, ["coc"] = {"Cocopa"}, ["cod"] = {"Cocama-Cocamilla"}, ["coe"] = {"Koreguaje"}, ["cof"] = {"Colorado"}, ["cog"] = {"Chong"}, ["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"}, ["coj"] = {"Cochimi"}, ["cok"] = {"Santa Teresa Cora"}, ["col"] = {"Columbia-Wenatchi"}, ["com"] = {"Comanche"}, ["con"] = {"Cofán"}, ["coo"] = {"Comox"}, ["cop"] = {"Coptic"}, ["coq"] = {"Coquille"}, ["cot"] = {"Caquinte"}, ["cou"] = {"Wamey"}, ["cov"] = {"Cao Miao"}, ["cow"] = {"Cowlitz"}, ["cox"] = {"Nanti"}, ["coz"] = {"Chochotec"}, ["cpa"] = {"Palantla Chinantec"}, ["cpb"] = {"Ucayali-Yurúa Ashéninka"}, ["cpc"] = {"Ajyíninka Apurucayali"}, ["cpe"] = {"English-based creoles and pidgins"}, ["cpf"] = {"French-based creoles and pidgins"}, ["cpg"] = {"Cappadocian Greek"}, ["cpi"] = {"Chinese Pidgin English"}, ["cpn"] = {"Cherepon"}, ["cpo"] = {"Kpeego"}, ["cpp"] = {"Portuguese-based creoles and pidgins"}, ["cps"] = {"Capiznon"}, ["cpu"] = {"Pichis Ashéninka"}, ["cpx"] = {"Pu-Xian Chinese"}, ["cpy"] = {"South Ucayali Ashéninka"}, ["cqd"] = {"Chuanqiandian Cluster Miao"}, ["cra"] = {"Chara"}, ["crb"] = {"Island Carib"}, ["crc"] = {"Lonwolwol"}, ["crd"] = {"Coeur d'Alene"}, ["crf"] = {"Caramanta"}, ["crg"] = {"Michif"}, ["crh"] = {"Crimean Tatar", "Crimean Turkish"}, ["cri"] = {"Sãotomense"}, ["crj"] = {"Southern East Cree"}, ["crk"] = {"Plains Cree"}, ["crl"] = {"Northern East Cree"}, ["crm"] = {"Moose Cree"}, ["crn"] = {"El Nayar Cora"}, ["cro"] = {"Crow"}, ["crp"] = {"Creoles and pidgins"}, ["crq"] = {"Iyo'wujwa Chorote"}, ["crr"] = {"Carolina Algonquian"}, ["crs"] = {"Seselwa Creole French"}, ["crt"] = {"Iyojwa'ja Chorote"}, ["crv"] = {"Chaura"}, ["crw"] = {"Chrau"}, ["crx"] = {"Carrier"}, ["cry"] = {"Cori"}, ["crz"] = {"Cruzeño"}, ["csa"] = {"Chiltepec Chinantec"}, ["csb"] = {"Kashubian"}, ["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"}, ["csd"] = {"Chiangmai Sign Language"}, ["cse"] = {"Czech Sign Language"}, ["csf"] = {"Cuba Sign Language"}, ["csg"] = {"Chilean Sign Language"}, ["csh"] = {"Asho Chin"}, ["csi"] = {"Coast Miwok"}, ["csj"] = {"Songlai Chin"}, ["csk"] = {"Jola-Kasa"}, ["csl"] = {"Chinese Sign Language"}, ["csm"] = {"Central Sierra Miwok"}, ["csn"] = {"Colombian Sign Language"}, ["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"}, ["csp"] = {"Southern Ping Chinese", "Southern Pinghua"}, ["csq"] = {"Croatia Sign Language"}, ["csr"] = {"Costa Rican Sign Language"}, ["css"] = {"Southern Ohlone"}, ["cst"] = {"Northern Ohlone"}, ["csu"] = {"Central Sudanic languages"}, ["csv"] = {"Sumtu Chin"}, ["csw"] = {"Swampy Cree"}, ["csx"] = {"Cambodian Sign Language"}, ["csy"] = {"Siyin Chin"}, ["csz"] = {"Coos"}, ["cta"] = {"Tataltepec Chatino"}, ["ctc"] = {"Chetco"}, ["ctd"] = {"Tedim Chin"}, ["cte"] = {"Tepinapa Chinantec"}, ["ctg"] = {"Chittagonian"}, ["cth"] = {"Thaiphum Chin"}, ["ctl"] = {"Tlacoatzintepec Chinantec"}, ["ctm"] = {"Chitimacha"}, ["ctn"] = {"Chhintange"}, ["cto"] = {"Emberá-Catío"}, ["ctp"] = {"Western Highland Chatino"}, ["cts"] = {"Northern Catanduanes Bikol"}, ["ctt"] = {"Wayanad Chetti"}, ["ctu"] = {"Chol"}, ["cty"] = {"Moundadan Chetty"}, ["ctz"] = {"Zacatepec Chatino"}, ["cua"] = {"Cua"}, ["cub"] = {"Cubeo"}, ["cuc"] = {"Usila Chinantec"}, ["cuh"] = {"Chuka", "Gichuka"}, ["cui"] = {"Cuiba"}, ["cuj"] = {"Mashco Piro"}, ["cuk"] = {"San Blas Kuna"}, ["cul"] = {"Culina", "Kulina"}, ["cuo"] = {"Cumanagoto"}, ["cup"] = {"Cupeño"}, ["cuq"] = {"Cun"}, ["cur"] = {"Chhulung"}, ["cus"] = {"Cushitic languages"}, ["cut"] = {"Teutila Cuicatec"}, ["cuu"] = {"Tai Ya"}, ["cuv"] = {"Cuvok"}, ["cuw"] = {"Chukwa"}, ["cux"] = {"Tepeuxila Cuicatec"}, ["cuy"] = {"Cuitlatec"}, ["cvg"] = {"Chug"}, ["cvn"] = {"Valle Nacional Chinantec"}, ["cwa"] = {"Kabwa"}, ["cwb"] = {"Maindo"}, ["cwd"] = {"Woods Cree"}, ["cwe"] = {"Kwere"}, ["cwg"] = {"Chewong", "Cheq Wong"}, ["cwt"] = {"Kuwaataay"}, ["cxh"] = {"Cha'ari"}, ["cya"] = {"Nopala Chatino"}, ["cyb"] = {"Cayubaba"}, ["cyo"] = {"Cuyonon"}, ["czh"] = {"Huizhou Chinese"}, ["czk"] = {"Knaanic"}, ["czn"] = {"Zenzontepec Chatino"}, ["czo"] = {"Min Zhong Chinese"}, ["czt"] = {"Zotung Chin"}, ["daa"] = {"Dangaléat"}, ["dac"] = {"Dambi"}, ["dad"] = {"Marik"}, ["dae"] = {"Duupa"}, ["dag"] = {"Dagbani"}, ["dah"] = {"Gwahatike"}, ["dai"] = {"Day"}, ["daj"] = {"Dar Fur Daju"}, ["dak"] = {"Dakota"}, ["dal"] = {"Dahalo"}, ["dam"] = {"Damakawa"}, ["dao"] = {"Daai Chin"}, ["daq"] = {"Dandami Maria"}, ["dar"] = {"Dargwa"}, ["das"] = {"Daho-Doo"}, ["dau"] = {"Dar Sila Daju"}, ["dav"] = {"Taita", "Dawida"}, ["daw"] = {"Davawenyo"}, ["dax"] = {"Dayi"}, ["day"] = {"Land Dayak languages"}, ["daz"] = {"Dao"}, ["dba"] = {"Bangime"}, ["dbb"] = {"Deno"}, ["dbd"] = {"Dadiya"}, ["dbe"] = {"Dabe"}, ["dbf"] = {"Edopi"}, ["dbg"] = {"Dogul Dom Dogon"}, ["dbi"] = {"Doka"}, ["dbj"] = {"Ida'an"}, ["dbl"] = {"Dyirbal"}, ["dbm"] = {"Duguri"}, ["dbn"] = {"Duriankere"}, ["dbo"] = {"Dulbu"}, ["dbp"] = {"Duwai"}, ["dbq"] = {"Daba"}, ["dbr"] = {"Dabarre"}, ["dbt"] = {"Ben Tey Dogon"}, ["dbu"] = {"Bondum Dom Dogon"}, ["dbv"] = {"Dungu"}, ["dbw"] = {"Bankan Tey Dogon"}, ["dby"] = {"Dibiyaso"}, ["dcc"] = {"Deccan"}, ["dcr"] = {"Negerhollands"}, ["dda"] = {"Dadi Dadi"}, ["ddd"] = {"Dongotono"}, ["dde"] = {"Doondo"}, ["ddg"] = {"Fataluku"}, ["ddi"] = {"West Goodenough"}, ["ddj"] = {"Jaru"}, ["ddn"] = {"Dendi (Benin)"}, ["ddo"] = {"Dido"}, ["ddr"] = {"Dhudhuroa"}, ["dds"] = {"Donno So Dogon"}, ["ddw"] = {"Dawera-Daweloor"}, ["dec"] = {"Dagik"}, ["ded"] = {"Dedua"}, ["dee"] = {"Dewoin"}, ["def"] = {"Dezfuli"}, ["deg"] = {"Degema"}, ["deh"] = {"Dehwari"}, ["dei"] = {"Demisa"}, ["dek"] = {"Dek"}, ["del"] = {"Delaware"}, ["dem"] = {"Dem"}, ["den"] = {"Slave (Athapascan)"}, ["dep"] = {"Pidgin Delaware"}, ["deq"] = {"Dendi (Central African Republic)"}, ["der"] = {"Deori"}, ["des"] = {"Desano"}, ["dev"] = {"Domung"}, ["dez"] = {"Dengese"}, ["dga"] = {"Southern Dagaare"}, ["dgb"] = {"Bunoge Dogon"}, ["dgc"] = {"Casiguran Dumagat Agta"}, ["dgd"] = {"Dagaari Dioula"}, ["dge"] = {"Degenan"}, ["dgg"] = {"Doga"}, ["dgh"] = {"Dghwede"}, ["dgi"] = {"Northern Dagara"}, ["dgk"] = {"Dagba"}, ["dgl"] = {"Andaandi", "Dongolawi"}, ["dgn"] = {"Dagoman"}, ["dgo"] = {"Dogri (individual language)"}, ["dgr"] = {"Dogrib", "Tłı̨chǫ"}, ["dgs"] = {"Dogoso"}, ["dgt"] = {"Ndra'ngith"}, ["dgw"] = {"Daungwurrung"}, ["dgx"] = {"Doghoro"}, ["dgz"] = {"Daga"}, ["dhd"] = {"Dhundari"}, ["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"}, ["dhi"] = {"Dhimal"}, ["dhl"] = {"Dhalandji"}, ["dhm"] = {"Zemba"}, ["dhn"] = {"Dhanki"}, ["dho"] = {"Dhodia"}, ["dhr"] = {"Dhargari"}, ["dhs"] = {"Dhaiso"}, ["dhu"] = {"Dhurga"}, ["dhv"] = {"Dehu", "Drehu"}, ["dhw"] = {"Dhanwar (Nepal)"}, ["dhx"] = {"Dhungaloo"}, ["dia"] = {"Dia"}, ["dib"] = {"South Central Dinka"}, ["dic"] = {"Lakota Dida"}, ["did"] = {"Didinga"}, ["dif"] = {"Dieri", "Diyari"}, ["dig"] = {"Digo", "Chidigo"}, ["dih"] = {"Kumiai"}, ["dii"] = {"Dimbong"}, ["dij"] = {"Dai"}, ["dik"] = {"Southwestern Dinka"}, ["dil"] = {"Dilling"}, ["dim"] = {"Dime"}, ["din"] = {"Dinka"}, ["dio"] = {"Dibo"}, ["dip"] = {"Northeastern Dinka"}, ["diq"] = {"Dimli (individual language)"}, ["dir"] = {"Dirim"}, ["dis"] = {"Dimasa"}, ["diu"] = {"Diriku"}, ["diw"] = {"Northwestern Dinka"}, ["dix"] = {"Dixon Reef"}, ["diy"] = {"Diuwe"}, ["diz"] = {"Ding"}, ["dja"] = {"Djadjawurrung"}, ["djb"] = {"Djinba"}, ["djc"] = {"Dar Daju Daju"}, ["djd"] = {"Djamindjung", "Ngaliwurru"}, ["dje"] = {"Zarma"}, ["djf"] = {"Djangun"}, ["dji"] = {"Djinang"}, ["djj"] = {"Djeebbana"}, ["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"}, ["djm"] = {"Jamsay Dogon"}, ["djn"] = {"Jawoyn", "Djauan"}, ["djo"] = {"Jangkang"}, ["djr"] = {"Djambarrpuyngu"}, ["dju"] = {"Kapriman"}, ["djw"] = {"Djawi"}, ["dka"] = {"Dakpakha"}, ["dkg"] = {"Kadung"}, ["dkk"] = {"Dakka"}, ["dkr"] = {"Kuijau"}, ["dks"] = {"Southeastern Dinka"}, ["dkx"] = {"Mazagway"}, ["dlg"] = {"Dolgan"}, ["dlk"] = {"Dahalik"}, ["dlm"] = {"Dalmatian"}, ["dln"] = {"Darlong"}, ["dma"] = {"Duma"}, ["dmb"] = {"Mombo Dogon"}, ["dmc"] = {"Gavak"}, ["dmd"] = {"Madhi Madhi"}, ["dme"] = {"Dugwor"}, ["dmf"] = {"Medefaidrin"}, ["dmg"] = {"Upper Kinabatangan"}, ["dmk"] = {"Domaaki"}, ["dml"] = {"Dameli"}, ["dmm"] = {"Dama"}, ["dmn"] = {"Mande languages"}, ["dmo"] = {"Kemedzung"}, ["dmr"] = {"East Damar"}, ["dms"] = {"Dampelas"}, ["dmu"] = {"Dubu", "Tebi"}, ["dmv"] = {"Dumpas"}, ["dmw"] = {"Mudburra"}, ["dmx"] = {"Dema"}, ["dmy"] = {"Demta", "Sowari"}, ["dna"] = {"Upper Grand Valley Dani"}, ["dnd"] = {"Daonda"}, ["dne"] = {"Ndendeule"}, ["dng"] = {"Dungan"}, ["dni"] = {"Lower Grand Valley Dani"}, ["dnj"] = {"Dan"}, ["dnk"] = {"Dengka"}, ["dnn"] = {"Dzùùngoo"}, ["dno"] = {"Ndrulo", "Northern Lendu"}, ["dnr"] = {"Danaru"}, ["dnt"] = {"Mid Grand Valley Dani"}, ["dnu"] = {"Danau"}, ["dnv"] = {"Danu"}, ["dnw"] = {"Western Dani"}, ["dny"] = {"Dení"}, ["doa"] = {"Dom"}, ["dob"] = {"Dobu"}, ["doc"] = {"Northern Dong"}, ["doe"] = {"Doe"}, ["dof"] = {"Domu"}, ["doh"] = {"Dong"}, ["doi"] = {"Dogri (macrolanguage)"}, ["dok"] = {"Dondo"}, ["dol"] = {"Doso"}, ["don"] = {"Toura (Papua New Guinea)"}, ["doo"] = {"Dongo"}, ["dop"] = {"Lukpa"}, ["doq"] = {"Dominican Sign Language"}, ["dor"] = {"Dori'o"}, ["dos"] = {"Dogosé"}, ["dot"] = {"Dass"}, ["dov"] = {"Dombe"}, ["dow"] = {"Doyayo"}, ["dox"] = {"Bussa"}, ["doy"] = {"Dompo"}, ["doz"] = {"Dorze"}, ["dpp"] = {"Papar"}, ["dra"] = {"Dravidian languages"}, ["drb"] = {"Dair"}, ["drc"] = {"Minderico"}, ["drd"] = {"Darmiya"}, ["dre"] = {"Dolpo"}, ["drg"] = {"Rungus"}, ["dri"] = {"C'Lela"}, ["drl"] = {"Paakantyi"}, ["drn"] = {"West Damar"}, ["dro"] = {"Daro-Matu Melanau"}, ["drq"] = {"Dura"}, ["drs"] = {"Gedeo"}, ["drt"] = {"Drents"}, ["dru"] = {"Rukai"}, ["dry"] = {"Darai"}, ["dsb"] = {"Lower Sorbian"}, ["dse"] = {"Dutch Sign Language"}, ["dsh"] = {"Daasanach"}, ["dsi"] = {"Disa"}, ["dsk"] = {"Dokshi"}, ["dsl"] = {"Danish Sign Language"}, ["dsn"] = {"Dusner"}, ["dso"] = {"Desiya"}, ["dsq"] = {"Tadaksahak"}, ["dsz"] = {"Mardin Sign Language"}, ["dta"] = {"Daur"}, ["dtb"] = {"Labuk-Kinabatangan Kadazan"}, ["dtd"] = {"Ditidaht"}, ["dth"] = {"Adithinngithigh"}, ["dti"] = {"Ana Tinga Dogon"}, ["dtk"] = {"Tene Kan Dogon"}, ["dtm"] = {"Tomo Kan Dogon"}, ["dtn"] = {"Daatsʼíin"}, ["dto"] = {"Tommo So Dogon"}, ["dtp"] = {"Kadazan Dusun", "Central Dusun"}, ["dtr"] = {"Lotud"}, ["dts"] = {"Toro So Dogon"}, ["dtt"] = {"Toro Tegu Dogon"}, ["dtu"] = {"Tebul Ure Dogon"}, ["dty"] = {"Dotyali"}, ["dua"] = {"Duala"}, ["dub"] = {"Dubli"}, ["duc"] = {"Duna"}, ["due"] = {"Umiray Dumaget Agta"}, ["duf"] = {"Dumbea", "Drubea"}, ["dug"] = {"Duruma", "Chiduruma"}, ["duh"] = {"Dungra Bhil"}, ["dui"] = {"Dumun"}, ["duk"] = {"Uyajitaya"}, ["dul"] = {"Alabat Island Agta"}, ["dum"] = {"Middle Dutch (ca. 1050-1350)"}, ["dun"] = {"Dusun Deyah"}, ["duo"] = {"Dupaninan Agta"}, ["dup"] = {"Duano"}, ["duq"] = {"Dusun Malang"}, ["dur"] = {"Dii"}, ["dus"] = {"Dumi"}, ["duu"] = {"Drung"}, ["duv"] = {"Duvle"}, ["duw"] = {"Dusun Witu"}, ["dux"] = {"Duungooma"}, ["duy"] = {"Dicamay Agta"}, ["duz"] = {"Duli-Gey"}, ["dva"] = {"Duau"}, ["dwa"] = {"Diri"}, ["dwk"] = {"Dawik Kui"}, ["dwr"] = {"Dawro"}, ["dws"] = {"Dutton World Speedwords"}, ["dwu"] = {"Dhuwal"}, ["dww"] = {"Dawawa"}, ["dwy"] = {"Dhuwaya"}, ["dwz"] = {"Dewas Rai"}, ["dya"] = {"Dyan"}, ["dyb"] = {"Dyaberdyaber"}, ["dyd"] = {"Dyugun"}, ["dyg"] = {"Villa Viciosa Agta"}, ["dyi"] = {"Djimini Senoufo"}, ["dym"] = {"Yanda Dom Dogon"}, ["dyn"] = {"Dyangadi", "Dhanggatti"}, ["dyo"] = {"Jola-Fonyi"}, ["dyr"] = {"Dyarim"}, ["dyu"] = {"Dyula"}, ["dyy"] = {"Djabugay", "Dyaabugay"}, ["dza"] = {"Tunzu"}, ["dzd"] = {"Daza"}, ["dze"] = {"Djiwarli"}, ["dzg"] = {"Dazaga"}, ["dzl"] = {"Dzalakha"}, ["dzn"] = {"Dzando"}, ["eaa"] = {"Karenggapa"}, ["ebc"] = {"Beginci"}, ["ebg"] = {"Ebughu"}, ["ebk"] = {"Eastern Bontok"}, ["ebo"] = {"Teke-Ebo"}, ["ebr"] = {"Ebrié"}, ["ebu"] = {"Embu", "Kiembu"}, ["ecr"] = {"Eteocretan"}, ["ecs"] = {"Ecuadorian Sign Language"}, ["ecy"] = {"Eteocypriot"}, ["eee"] = {"E"}, ["efa"] = {"Efai"}, ["efe"] = {"Efe"}, ["efi"] = {"Efik"}, ["ega"] = {"Ega"}, ["egl"] = {"Emilian"}, ["egm"] = {"Benamanga"}, ["ego"] = {"Eggon"}, ["egx"] = {"Egyptian languages"}, ["egy"] = {"Egyptian (Ancient)"}, ["ehs"] = {"Miyakubo Sign Language"}, ["ehu"] = {"Ehueun"}, ["eip"] = {"Eipomek"}, ["eit"] = {"Eitiep"}, ["eiv"] = {"Askopan"}, ["eja"] = {"Ejamat"}, ["eka"] = {"Ekajuk"}, ["eke"] = {"Ekit"}, ["ekg"] = {"Ekari"}, ["eki"] = {"Eki"}, ["ekk"] = {"Standard Estonian"}, ["ekl"] = {"Kol (Bangladesh)", "Kol"}, ["ekm"] = {"Elip"}, ["eko"] = {"Koti"}, ["ekp"] = {"Ekpeye"}, ["ekr"] = {"Yace"}, ["eky"] = {"Eastern Kayah"}, ["ele"] = {"Elepi"}, ["elh"] = {"El Hugeirat"}, ["eli"] = {"Nding"}, ["elk"] = {"Elkei"}, ["elm"] = {"Eleme"}, ["elo"] = {"El Molo"}, ["elu"] = {"Elu"}, ["elx"] = {"Elamite"}, ["ema"] = {"Emai-Iuleha-Ora"}, ["emb"] = {"Embaloh"}, ["eme"] = {"Emerillon"}, ["emg"] = {"Eastern Meohang"}, ["emi"] = {"Mussau-Emira"}, ["emk"] = {"Eastern Maninkakan"}, ["emm"] = {"Mamulique"}, ["emn"] = {"Eman"}, ["emp"] = {"Northern Emberá"}, ["emq"] = {"Eastern Minyag"}, ["ems"] = {"Pacific Gulf Yupik"}, ["emu"] = {"Eastern Muria"}, ["emw"] = {"Emplawas"}, ["emx"] = {"Erromintxela"}, ["emy"] = {"Epigraphic Mayan"}, ["emz"] = {"Mbessa"}, ["ena"] = {"Apali"}, ["enb"] = {"Markweeta"}, ["enc"] = {"En"}, ["end"] = {"Ende"}, ["enf"] = {"Forest Enets"}, ["enh"] = {"Tundra Enets"}, ["enl"] = {"Enlhet"}, ["enm"] = {"Middle English (1100-1500)"}, ["enn"] = {"Engenni"}, ["eno"] = {"Enggano"}, ["enq"] = {"Enga"}, ["enr"] = {"Emumu", "Emem"}, ["enu"] = {"Enu"}, ["env"] = {"Enwan (Edo State)"}, ["enw"] = {"Enwan (Akwa Ibom State)"}, ["enx"] = {"Enxet"}, ["eot"] = {"Beti (Côte d'Ivoire)"}, ["epi"] = {"Epie"}, ["era"] = {"Eravallan"}, ["erg"] = {"Sie"}, ["erh"] = {"Eruwa"}, ["eri"] = {"Ogea"}, ["erk"] = {"South Efate"}, ["ero"] = {"Horpa"}, ["err"] = {"Erre"}, ["ers"] = {"Ersu"}, ["ert"] = {"Eritai"}, ["erw"] = {"Erokwanas"}, ["ese"] = {"Ese Ejja"}, ["esg"] = {"Aheri Gondi"}, ["esh"] = {"Eshtehardi"}, ["esi"] = {"North Alaskan Inupiatun"}, ["esk"] = {"Northwest Alaska Inupiatun"}, ["esl"] = {"Egypt Sign Language"}, ["esm"] = {"Esuma"}, ["esn"] = {"Salvadoran Sign Language"}, ["eso"] = {"Estonian Sign Language"}, ["esq"] = {"Esselen"}, ["ess"] = {"Central Siberian Yupik"}, ["esu"] = {"Central Yupik"}, ["esx"] = {"Eskimo-Aleut languages"}, ["esy"] = {"Eskayan"}, ["etb"] = {"Etebi"}, ["etc"] = {"Etchemin"}, ["eth"] = {"Ethiopian Sign Language"}, ["etn"] = {"Eton (Vanuatu)"}, ["eto"] = {"Eton (Cameroon)"}, ["etr"] = {"Edolo"}, ["ets"] = {"Yekhee"}, ["ett"] = {"Etruscan"}, ["etu"] = {"Ejagham"}, ["etx"] = {"Eten"}, ["etz"] = {"Semimi"}, ["eud"] = {"Eudeve"}, ["euq"] = {"Basque (family)"}, ["eve"] = {"Even"}, ["evh"] = {"Uvbie"}, ["evn"] = {"Evenki"}, ["ewo"] = {"Ewondo"}, ["ext"] = {"Extremaduran"}, ["eya"] = {"Eyak"}, ["eyo"] = {"Keiyo"}, ["eza"] = {"Ezaa"}, ["eze"] = {"Uzekwe"}, ["faa"] = {"Fasu"}, ["fab"] = {"Fa d'Ambu"}, ["fad"] = {"Wagi"}, ["faf"] = {"Fagani"}, ["fag"] = {"Finongan"}, ["fah"] = {"Baissa Fali"}, ["fai"] = {"Faiwol"}, ["faj"] = {"Faita"}, ["fak"] = {"Fang (Cameroon)"}, ["fal"] = {"South Fali"}, ["fam"] = {"Fam"}, ["fan"] = {"Fang (Equatorial Guinea)"}, ["fap"] = {"Paloor"}, ["far"] = {"Fataleka"}, ["fat"] = {"Fanti"}, ["fau"] = {"Fayu"}, ["fax"] = {"Fala"}, ["fay"] = {"Southwestern Fars"}, ["faz"] = {"Northwestern Fars"}, ["fbl"] = {"West Albay Bikol"}, ["fcs"] = {"Quebec Sign Language"}, ["fer"] = {"Feroge"}, ["ffi"] = {"Foia Foia"}, ["ffm"] = {"Maasina Fulfulde"}, ["fgr"] = {"Fongoro"}, ["fia"] = {"Nobiin"}, ["fie"] = {"Fyer"}, ["fif"] = {"Faifi"}, ["fil"] = {"Filipino", "Pilipino"}, ["fip"] = {"Fipa"}, ["fir"] = {"Firan"}, ["fit"] = {"Tornedalen Finnish", "Meänkieli"}, ["fiu"] = {"Finno-Ugrian languages"}, ["fiw"] = {"Fiwaga"}, ["fkk"] = {"Kirya-Konzəl"}, ["fkv"] = {"Kven Finnish"}, ["fla"] = {"Kalispel-Pend d'Oreille"}, ["flh"] = {"Foau"}, ["fli"] = {"Fali"}, ["fll"] = {"North Fali"}, ["fln"] = {"Flinders Island"}, ["flr"] = {"Fuliiru"}, ["fly"] = {"Flaaitaal", "Tsotsitaal"}, ["fmp"] = {"Fe'fe'"}, ["fmu"] = {"Far Western Muria"}, ["fnb"] = {"Fanbak"}, ["fng"] = {"Fanagalo"}, ["fni"] = {"Fania"}, ["fod"] = {"Foodo"}, ["foi"] = {"Foi"}, ["fom"] = {"Foma"}, ["fon"] = {"Fon"}, ["for"] = {"Fore"}, ["fos"] = {"Siraya"}, ["fox"] = {"Formosan languages"}, ["fpe"] = {"Fernando Po Creole English"}, ["fqs"] = {"Fas"}, ["frc"] = {"Cajun French"}, ["frd"] = {"Fordata"}, ["frk"] = {"Frankish"}, ["frm"] = {"Middle French (ca. 1400-1600)"}, ["fro"] = {"Old French (842-ca. 1400)"}, ["frp"] = {"Arpitan", "Francoprovençal"}, ["frq"] = {"Forak"}, ["frr"] = {"Northern Frisian"}, ["frs"] = {"Eastern Frisian"}, ["frt"] = {"Fortsenal"}, ["fse"] = {"Finnish Sign Language"}, ["fsl"] = {"French Sign Language"}, ["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"}, ["fub"] = {"Adamawa Fulfulde"}, ["fuc"] = {"Pulaar"}, ["fud"] = {"East Futuna"}, ["fue"] = {"Borgu Fulfulde"}, ["fuf"] = {"Pular"}, ["fuh"] = {"Western Niger Fulfulde"}, ["fui"] = {"Bagirmi Fulfulde"}, ["fuj"] = {"Ko"}, ["fum"] = {"Fum"}, ["fun"] = {"Fulniô"}, ["fuq"] = {"Central-Eastern Niger Fulfulde"}, ["fur"] = {"Friulian"}, ["fut"] = {"Futuna-Aniwa"}, ["fuu"] = {"Furu"}, ["fuv"] = {"Nigerian Fulfulde"}, ["fuy"] = {"Fuyug"}, ["fvr"] = {"Fur"}, ["fwa"] = {"Fwâi"}, ["fwe"] = {"Fwe"}, ["gaa"] = {"Ga"}, ["gab"] = {"Gabri"}, ["gac"] = {"Mixed Great Andamanese"}, ["gad"] = {"Gaddang"}, ["gae"] = {"Guarequena"}, ["gaf"] = {"Gende"}, ["gag"] = {"Gagauz"}, ["gah"] = {"Alekano"}, ["gai"] = {"Borei"}, ["gaj"] = {"Gadsup"}, ["gak"] = {"Gamkonora"}, ["gal"] = {"Galolen"}, ["gam"] = {"Kandawo"}, ["gan"] = {"Gan Chinese"}, ["gao"] = {"Gants"}, ["gap"] = {"Gal"}, ["gaq"] = {"Gata'"}, ["gar"] = {"Galeya"}, ["gas"] = {"Adiwasi Garasia"}, ["gat"] = {"Kenati"}, ["gau"] = {"Mudhili Gadaba"}, ["gaw"] = {"Nobonob"}, ["gax"] = {"Borana-Arsi-Guji Oromo"}, ["gay"] = {"Gayo"}, ["gaz"] = {"West Central Oromo"}, ["gba"] = {"Gbaya (Central African Republic)"}, ["gbb"] = {"Kaytetye"}, ["gbd"] = {"Karajarri"}, ["gbe"] = {"Niksek"}, ["gbf"] = {"Gaikundi"}, ["gbg"] = {"Gbanziri"}, ["gbh"] = {"Defi Gbe"}, ["gbi"] = {"Galela"}, ["gbj"] = {"Bodo Gadaba"}, ["gbk"] = {"Gaddi"}, ["gbl"] = {"Gamit"}, ["gbm"] = {"Garhwali"}, ["gbn"] = {"Mo'da"}, ["gbo"] = {"Northern Grebo"}, ["gbp"] = {"Gbaya-Bossangoa"}, ["gbq"] = {"Gbaya-Bozoum"}, ["gbr"] = {"Gbagyi"}, ["gbs"] = {"Gbesi Gbe"}, ["gbu"] = {"Gagadu"}, ["gbv"] = {"Gbanu"}, ["gbw"] = {"Gabi-Gabi"}, ["gbx"] = {"Eastern Xwla Gbe"}, ["gby"] = {"Gbari"}, ["gbz"] = {"Zoroastrian Dari"}, ["gcc"] = {"Mali"}, ["gcd"] = {"Ganggalida"}, ["gce"] = {"Galice"}, ["gcf"] = {"Guadeloupean Creole French"}, ["gcl"] = {"Grenadian Creole English"}, ["gcn"] = {"Gaina"}, ["gcr"] = {"Guianese Creole French"}, ["gct"] = {"Colonia Tovar German"}, ["gda"] = {"Gade Lohar"}, ["gdb"] = {"Pottangi Ollar Gadaba"}, ["gdc"] = {"Gugu Badhun"}, ["gdd"] = {"Gedaged"}, ["gde"] = {"Gude"}, ["gdf"] = {"Guduf-Gava"}, ["gdg"] = {"Ga'dang"}, ["gdh"] = {"Gadjerawang", "Gajirrabeng"}, ["gdi"] = {"Gundi"}, ["gdj"] = {"Gurdjar"}, ["gdk"] = {"Gadang"}, ["gdl"] = {"Dirasha"}, ["gdm"] = {"Laal"}, ["gdn"] = {"Umanakaina"}, ["gdo"] = {"Ghodoberi"}, ["gdq"] = {"Mehri"}, ["gdr"] = {"Wipi"}, ["gds"] = {"Ghandruk Sign Language"}, ["gdt"] = {"Kungardutyi"}, ["gdu"] = {"Gudu"}, ["gdx"] = {"Godwari"}, ["gea"] = {"Geruma"}, ["geb"] = {"Kire"}, ["gec"] = {"Gboloo Grebo"}, ["ged"] = {"Gade"}, ["gef"] = {"Gerai"}, ["geg"] = {"Gengle"}, ["geh"] = {"Hutterite German", "Hutterisch"}, ["gei"] = {"Gebe"}, ["gej"] = {"Gen"}, ["gek"] = {"Ywom"}, ["gel"] = {"ut-Ma'in"}, ["gem"] = {"Germanic languages"}, ["geq"] = {"Geme"}, ["ges"] = {"Geser-Gorom"}, ["gev"] = {"Eviya"}, ["gew"] = {"Gera"}, ["gex"] = {"Garre"}, ["gey"] = {"Enya"}, ["gez"] = {"Geez"}, ["gfk"] = {"Patpatar"}, ["gft"] = {"Gafat"}, ["gga"] = {"Gao"}, ["ggb"] = {"Gbii"}, ["ggd"] = {"Gugadj"}, ["gge"] = {"Gurr-goni"}, ["ggg"] = {"Gurgula"}, ["ggk"] = {"Kungarakany"}, ["ggl"] = {"Ganglau"}, ["ggt"] = {"Gitua"}, ["ggu"] = {"Gagu", "Gban"}, ["ggw"] = {"Gogodala"}, ["gha"] = {"Ghadamès"}, ["ghc"] = {"Hiberno-Scottish Gaelic"}, ["ghe"] = {"Southern Ghale"}, ["ghh"] = {"Northern Ghale"}, ["ghk"] = {"Geko Karen"}, ["ghl"] = {"Ghulfan"}, ["ghn"] = {"Ghanongga"}, ["gho"] = {"Ghomara"}, ["ghr"] = {"Ghera"}, ["ghs"] = {"Guhu-Samane"}, ["ght"] = {"Kuke", "Kutang Ghale"}, ["gia"] = {"Kija"}, ["gib"] = {"Gibanawa"}, ["gic"] = {"Gail"}, ["gid"] = {"Gidar"}, ["gie"] = {"Gaɓogbo", "Guébie"}, ["gig"] = {"Goaria"}, ["gih"] = {"Githabul"}, ["gii"] = {"Girirra"}, ["gil"] = {"Gilbertese"}, ["gim"] = {"Gimi (Eastern Highlands)"}, ["gin"] = {"Hinukh"}, ["gip"] = {"Gimi (West New Britain)"}, ["giq"] = {"Green Gelao"}, ["gir"] = {"Red Gelao"}, ["gis"] = {"North Giziga"}, ["git"] = {"Gitxsan"}, ["giu"] = {"Mulao"}, ["giw"] = {"White Gelao"}, ["gix"] = {"Gilima"}, ["giy"] = {"Giyug"}, ["giz"] = {"South Giziga"}, ["gjk"] = {"Kachi Koli"}, ["gjm"] = {"Gunditjmara"}, ["gjn"] = {"Gonja"}, ["gjr"] = {"Gurindji Kriol"}, ["gju"] = {"Gujari"}, ["gka"] = {"Guya"}, ["gkd"] = {"Magɨ (Madang Province)"}, ["gke"] = {"Ndai"}, ["gkn"] = {"Gokana"}, ["gko"] = {"Kok-Nar"}, ["gkp"] = {"Guinea Kpelle"}, ["gku"] = {"ǂUngkue"}, ["glb"] = {"Belning"}, ["glc"] = {"Bon Gula"}, ["gld"] = {"Nanai"}, ["glh"] = {"Northwest Pashai", "Northwest Pashayi"}, ["glj"] = {"Gula Iro"}, ["glk"] = {"Gilaki"}, ["gll"] = {"Garlali"}, ["glo"] = {"Galambu"}, ["glr"] = {"Glaro-Twabo"}, ["glu"] = {"Gula (Chad)"}, ["glw"] = {"Glavda"}, ["gly"] = {"Gule"}, ["gma"] = {"Gambera"}, ["gmb"] = {"Gula'alaa"}, ["gmd"] = {"Mághdì"}, ["gme"] = {"East Germanic languages"}, ["gmg"] = {"Magɨyi"}, ["gmh"] = {"Middle High German (ca. 1050-1500)"}, ["gml"] = {"Middle Low German"}, ["gmm"] = {"Gbaya-Mbodomo"}, ["gmn"] = {"Gimnime"}, ["gmq"] = {"North Germanic languages"}, ["gmr"] = {"Mirning", "Mirniny"}, ["gmu"] = {"Gumalu"}, ["gmv"] = {"Gamo"}, ["gmw"] = {"West Germanic languages"}, ["gmx"] = {"Magoma"}, ["gmy"] = {"Mycenaean Greek"}, ["gmz"] = {"Mgbolizhia"}, ["gna"] = {"Kaansa"}, ["gnb"] = {"Gangte"}, ["gnc"] = {"Guanche"}, ["gnd"] = {"Zulgo-Gemzek"}, ["gne"] = {"Ganang"}, ["gng"] = {"Ngangam"}, ["gnh"] = {"Lere"}, ["gni"] = {"Gooniyandi"}, ["gnj"] = {"Ngen"}, ["gnk"] = {"ǁGana"}, ["gnl"] = {"Gangulu"}, ["gnm"] = {"Ginuman"}, ["gnn"] = {"Gumatj"}, ["gno"] = {"Northern Gondi"}, ["gnq"] = {"Gana"}, ["gnr"] = {"Gureng Gureng"}, ["gnt"] = {"Guntai"}, ["gnu"] = {"Gnau"}, ["gnw"] = {"Western Bolivian Guaraní"}, ["gnz"] = {"Ganzi"}, ["goa"] = {"Guro"}, ["gob"] = {"Playero"}, ["goc"] = {"Gorakor"}, ["god"] = {"Godié"}, ["goe"] = {"Gongduk"}, ["gof"] = {"Gofa"}, ["gog"] = {"Gogo"}, ["goh"] = {"Old High German (ca. 750-1050)"}, ["goi"] = {"Gobasi"}, ["goj"] = {"Gowlan"}, ["gok"] = {"Gowli"}, ["gol"] = {"Gola"}, ["gom"] = {"Goan Konkani"}, ["gon"] = {"Gondi"}, ["goo"] = {"Gone Dau"}, ["gop"] = {"Yeretuar"}, ["goq"] = {"Gorap"}, ["gor"] = {"Gorontalo"}, ["gos"] = {"Gronings"}, ["got"] = {"Gothic"}, ["gou"] = {"Gavar"}, ["gov"] = {"Goo"}, ["gow"] = {"Gorowa"}, ["gox"] = {"Gobu"}, ["goy"] = {"Goundo"}, ["goz"] = {"Gozarkhani"}, ["gpa"] = {"Gupa-Abawa"}, ["gpe"] = {"Ghanaian Pidgin English"}, ["gpn"] = {"Taiap"}, ["gqa"] = {"Ga'anda"}, ["gqi"] = {"Guiqiong"}, ["gqn"] = {"Guana (Brazil)"}, ["gqr"] = {"Gor"}, ["gqu"] = {"Qau"}, ["gra"] = {"Rajput Garasia"}, ["grb"] = {"Grebo"}, ["grc"] = {"Ancient Greek (to 1453)"}, ["grd"] = {"Guruntum-Mbaaru"}, ["grg"] = {"Madi"}, ["grh"] = {"Gbiri-Niragu"}, ["gri"] = {"Ghari"}, ["grj"] = {"Southern Grebo"}, ["grk"] = {"Greek languages"}, ["grm"] = {"Kota Marudu Talantang"}, ["gro"] = {"Groma"}, ["grq"] = {"Gorovu"}, ["grr"] = {"Taznatit"}, ["grs"] = {"Gresi"}, ["grt"] = {"Garo"}, ["gru"] = {"Kistane"}, ["grv"] = {"Central Grebo"}, ["grw"] = {"Gweda"}, ["grx"] = {"Guriaso"}, ["gry"] = {"Barclayville Grebo"}, ["grz"] = {"Guramalum"}, ["gse"] = {"Ghanaian Sign Language"}, ["gsg"] = {"German Sign Language"}, ["gsl"] = {"Gusilay"}, ["gsm"] = {"Guatemalan Sign Language"}, ["gsn"] = {"Nema", "Gusan"}, ["gso"] = {"Southwest Gbaya"}, ["gsp"] = {"Wasembo"}, ["gss"] = {"Greek Sign Language"}, ["gsw"] = {"Swiss German", "Alemannic", "Alsatian"}, ["gta"] = {"Guató"}, ["gtu"] = {"Aghu-Tharnggala"}, ["gua"] = {"Shiki"}, ["gub"] = {"Guajajára"}, ["guc"] = {"Wayuu"}, ["gud"] = {"Yocoboué Dida"}, ["gue"] = {"Gurindji"}, ["guf"] = {"Gupapuyngu"}, ["gug"] = {"Paraguayan Guaraní"}, ["guh"] = {"Guahibo"}, ["gui"] = {"Eastern Bolivian Guaraní"}, ["guk"] = {"Gumuz"}, ["gul"] = {"Sea Island Creole English"}, ["gum"] = {"Guambiano"}, ["gun"] = {"Mbyá Guaraní"}, ["guo"] = {"Guayabero"}, ["gup"] = {"Gunwinggu"}, ["guq"] = {"Aché"}, ["gur"] = {"Farefare"}, ["gus"] = {"Guinean Sign Language"}, ["gut"] = {"Maléku Jaíka"}, ["guu"] = {"Yanomamö"}, ["guw"] = {"Gun"}, ["gux"] = {"Gourmanchéma"}, ["guz"] = {"Gusii", "Ekegusii"}, ["gva"] = {"Guana (Paraguay)"}, ["gvc"] = {"Guanano"}, ["gve"] = {"Duwet"}, ["gvf"] = {"Golin"}, ["gvj"] = {"Guajá"}, ["gvl"] = {"Gulay"}, ["gvm"] = {"Gurmana"}, ["gvn"] = {"Kuku-Yalanji"}, ["gvo"] = {"Gavião Do Jiparaná"}, ["gvp"] = {"Pará Gavião"}, ["gvr"] = {"Gurung"}, ["gvs"] = {"Gumawana"}, ["gvy"] = {"Guyani"}, ["gwa"] = {"Mbato"}, ["gwb"] = {"Gwa"}, ["gwc"] = {"Gawri", "Kalami"}, ["gwd"] = {"Gawwada"}, ["gwe"] = {"Gweno"}, ["gwf"] = {"Gowro"}, ["gwg"] = {"Moo"}, ["gwi"] = {"Gwichʼin"}, ["gwj"] = {"ǀGwi"}, ["gwm"] = {"Awngthim"}, ["gwn"] = {"Gwandara"}, ["gwr"] = {"Gwere"}, ["gwt"] = {"Gawar-Bati"}, ["gwu"] = {"Guwamu"}, ["gww"] = {"Kwini"}, ["gwx"] = {"Gua"}, ["gxx"] = {"Wè Southern"}, ["gya"] = {"Northwest Gbaya"}, ["gyb"] = {"Garus"}, ["gyd"] = {"Kayardild"}, ["gye"] = {"Gyem"}, ["gyf"] = {"Gungabula"}, ["gyg"] = {"Gbayi"}, ["gyi"] = {"Gyele"}, ["gyl"] = {"Gayil"}, ["gym"] = {"Ngäbere"}, ["gyn"] = {"Guyanese Creole English"}, ["gyo"] = {"Gyalsumdo"}, ["gyr"] = {"Guarayu"}, ["gyy"] = {"Gunya"}, ["gyz"] = {"Geji", "Gyaazi"}, ["gza"] = {"Ganza"}, ["gzi"] = {"Gazi"}, ["gzn"] = {"Gane"}, ["haa"] = {"Han"}, ["hab"] = {"Hanoi Sign Language"}, ["hac"] = {"Gurani"}, ["had"] = {"Hatam"}, ["hae"] = {"Eastern Oromo"}, ["haf"] = {"Haiphong Sign Language"}, ["hag"] = {"Hanga"}, ["hah"] = {"Hahon"}, ["hai"] = {"Haida"}, ["haj"] = {"Hajong"}, ["hak"] = {"Hakka Chinese"}, ["hal"] = {"Halang"}, ["ham"] = {"Hewa"}, ["han"] = {"Hangaza"}, ["hao"] = {"Hakö"}, ["hap"] = {"Hupla"}, ["haq"] = {"Ha"}, ["har"] = {"Harari"}, ["has"] = {"Haisla"}, ["hav"] = {"Havu"}, ["haw"] = {"Hawaiian"}, ["hax"] = {"Southern Haida"}, ["hay"] = {"Haya"}, ["haz"] = {"Hazaragi"}, ["hba"] = {"Hamba"}, ["hbb"] = {"Huba"}, ["hbn"] = {"Heiban"}, ["hbo"] = {"Ancient Hebrew"}, ["hbu"] = {"Habu"}, ["hca"] = {"Andaman Creole Hindi"}, ["hch"] = {"Huichol"}, ["hdn"] = {"Northern Haida"}, ["hds"] = {"Honduras Sign Language"}, ["hdy"] = {"Hadiyya"}, ["hea"] = {"Northern Qiandong Miao"}, ["hed"] = {"Herdé"}, ["heg"] = {"Helong"}, ["heh"] = {"Hehe"}, ["hei"] = {"Heiltsuk"}, ["hem"] = {"Hemba"}, ["hgm"] = {"Haiǁom"}, ["hgw"] = {"Haigwai"}, ["hhi"] = {"Hoia Hoia"}, ["hhr"] = {"Kerak"}, ["hhy"] = {"Hoyahoya"}, ["hia"] = {"Lamang"}, ["hib"] = {"Hibito"}, ["hid"] = {"Hidatsa"}, ["hif"] = {"Fiji Hindi"}, ["hig"] = {"Kamwe"}, ["hih"] = {"Pamosu"}, ["hii"] = {"Hinduri"}, ["hij"] = {"Hijuk"}, ["hik"] = {"Seit-Kaitetu"}, ["hil"] = {"Hiligaynon"}, ["him"] = {"Himachali languages", "Western Pahari languages"}, ["hio"] = {"Tsoa"}, ["hir"] = {"Himarimã"}, ["hit"] = {"Hittite"}, ["hiw"] = {"Hiw"}, ["hix"] = {"Hixkaryána"}, ["hji"] = {"Haji"}, ["hka"] = {"Kahe"}, ["hke"] = {"Hunde"}, ["hkh"] = {"Khah", "Poguli"}, ["hkk"] = {"Hunjara-Kaina Ke"}, ["hkn"] = {"Mel-Khaonh"}, ["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"}, ["hla"] = {"Halia"}, ["hlb"] = {"Halbi"}, ["hld"] = {"Halang Doan"}, ["hle"] = {"Hlersu"}, ["hlt"] = {"Matu Chin"}, ["hlu"] = {"Hieroglyphic Luwian"}, ["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"}, ["hmb"] = {"Humburi Senni Songhay"}, ["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"}, ["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"}, ["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"}, ["hmf"] = {"Hmong Don"}, ["hmg"] = {"Southwestern Guiyang Hmong"}, ["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"}, ["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"}, ["hmj"] = {"Ge", "Gejia"}, ["hmk"] = {"Maek"}, ["hml"] = {"Luopohe Hmong", "Luopohe Miao"}, ["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"}, ["hmn"] = {"Hmong", "Mong"}, ["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"}, ["hmq"] = {"Eastern Qiandong Miao"}, ["hmr"] = {"Hmar"}, ["hms"] = {"Southern Qiandong Miao"}, ["hmt"] = {"Hamtai"}, ["hmu"] = {"Hamap"}, ["hmv"] = {"Hmong Dô"}, ["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"}, ["hmx"] = {"Hmong-Mien languages"}, ["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"}, ["hmz"] = {"Hmong Shua", "Sinicized Miao"}, ["hna"] = {"Mina (Cameroon)"}, ["hnd"] = {"Southern Hindko"}, ["hne"] = {"Chhattisgarhi"}, ["hng"] = {"Hungu"}, ["hnh"] = {"ǁAni"}, ["hni"] = {"Hani"}, ["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"}, ["hnn"] = {"Hanunoo"}, ["hno"] = {"Northern Hindko"}, ["hns"] = {"Caribbean Hindustani"}, ["hnu"] = {"Hung"}, ["hoa"] = {"Hoava"}, ["hob"] = {"Mari (Madang Province)"}, ["hoc"] = {"Ho"}, ["hod"] = {"Holma"}, ["hoe"] = {"Horom"}, ["hoh"] = {"Hobyót"}, ["hoi"] = {"Holikachuk"}, ["hoj"] = {"Hadothi", "Haroti"}, ["hok"] = {"Hokan languages"}, ["hol"] = {"Holu"}, ["hom"] = {"Homa"}, ["hoo"] = {"Holoholo"}, ["hop"] = {"Hopi"}, ["hor"] = {"Horo"}, ["hos"] = {"Ho Chi Minh City Sign Language"}, ["hot"] = {"Hote", "Malê"}, ["hov"] = {"Hovongan"}, ["how"] = {"Honi"}, ["hoy"] = {"Holiya"}, ["hoz"] = {"Hozo"}, ["hpo"] = {"Hpon"}, ["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"}, ["hra"] = {"Hrangkhol"}, ["hrc"] = {"Niwer Mil"}, ["hre"] = {"Hre"}, ["hrk"] = {"Haruku"}, ["hrm"] = {"Horned Miao"}, ["hro"] = {"Haroi"}, ["hrp"] = {"Nhirrpi"}, ["hrt"] = {"Hértevin"}, ["hru"] = {"Hruso"}, ["hrw"] = {"Warwar Feni"}, ["hrx"] = {"Hunsrik"}, ["hrz"] = {"Harzani"}, ["hsb"] = {"Upper Sorbian"}, ["hsh"] = {"Hungarian Sign Language"}, ["hsl"] = {"Hausa Sign Language"}, ["hsn"] = {"Xiang Chinese"}, ["hss"] = {"Harsusi"}, ["hti"] = {"Hoti"}, ["hto"] = {"Minica Huitoto"}, ["hts"] = {"Hadza"}, ["htu"] = {"Hitu"}, ["htx"] = {"Middle Hittite"}, ["hub"] = {"Huambisa"}, ["huc"] = {"ǂHua", "ǂʼAmkhoe"}, ["hud"] = {"Huaulu"}, ["hue"] = {"San Francisco Del Mar Huave"}, ["huf"] = {"Humene"}, ["hug"] = {"Huachipaeri"}, ["huh"] = {"Huilliche"}, ["hui"] = {"Huli"}, ["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"}, ["huk"] = {"Hulung"}, ["hul"] = {"Hula"}, ["hum"] = {"Hungana"}, ["huo"] = {"Hu"}, ["hup"] = {"Hupa"}, ["huq"] = {"Tsat"}, ["hur"] = {"Halkomelem"}, ["hus"] = {"Huastec"}, ["hut"] = {"Humla"}, ["huu"] = {"Murui Huitoto"}, ["huv"] = {"San Mateo Del Mar Huave"}, ["huw"] = {"Hukumina"}, ["hux"] = {"Nüpode Huitoto"}, ["huy"] = {"Hulaulá"}, ["huz"] = {"Hunzib"}, ["hvc"] = {"Haitian Vodoun Culture Language"}, ["hve"] = {"San Dionisio Del Mar Huave"}, ["hvk"] = {"Haveke"}, ["hvn"] = {"Sabu"}, ["hvv"] = {"Santa María Del Mar Huave"}, ["hwa"] = {"Wané"}, ["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"}, ["hwo"] = {"Hwana"}, ["hya"] = {"Hya"}, ["hyw"] = {"Western Armenian"}, ["hyx"] = {"Armenian (family)"}, ["iai"] = {"Iaai"}, ["ian"] = {"Iatmul"}, ["iar"] = {"Purari"}, ["iba"] = {"Iban"}, ["ibb"] = {"Ibibio"}, ["ibd"] = {"Iwaidja"}, ["ibe"] = {"Akpes"}, ["ibg"] = {"Ibanag"}, ["ibh"] = {"Bih"}, ["ibl"] = {"Ibaloi"}, ["ibm"] = {"Agoi"}, ["ibn"] = {"Ibino"}, ["ibr"] = {"Ibuoro"}, ["ibu"] = {"Ibu"}, ["iby"] = {"Ibani"}, ["ica"] = {"Ede Ica"}, ["ich"] = {"Etkywan"}, ["icl"] = {"Icelandic Sign Language"}, ["icr"] = {"Islander Creole English"}, ["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"}, ["idb"] = {"Indo-Portuguese"}, ["idc"] = {"Idon", "Ajiya"}, ["idd"] = {"Ede Idaca"}, ["ide"] = {"Idere"}, ["idi"] = {"Idi"}, ["idr"] = {"Indri"}, ["ids"] = {"Idesa"}, ["idt"] = {"Idaté"}, ["idu"] = {"Idoma"}, ["ifa"] = {"Amganad Ifugao"}, ["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"}, ["ife"] = {"Ifè"}, ["iff"] = {"Ifo"}, ["ifk"] = {"Tuwali Ifugao"}, ["ifm"] = {"Teke-Fuumu"}, ["ifu"] = {"Mayoyao Ifugao"}, ["ify"] = {"Keley-I Kallahan"}, ["igb"] = {"Ebira"}, ["ige"] = {"Igede"}, ["igg"] = {"Igana"}, ["igl"] = {"Igala"}, ["igm"] = {"Kanggape"}, ["ign"] = {"Ignaciano"}, ["igo"] = {"Isebe"}, ["igs"] = {"Interglossa"}, ["igw"] = {"Igwe"}, ["ihb"] = {"Iha Based Pidgin"}, ["ihi"] = {"Ihievbe"}, ["ihp"] = {"Iha"}, ["ihw"] = {"Bidhawal"}, ["iin"] = {"Thiin"}, ["iir"] = {"Indo-Iranian languages"}, ["ijc"] = {"Izon"}, ["ije"] = {"Biseni"}, ["ijj"] = {"Ede Ije"}, ["ijn"] = {"Kalabari"}, ["ijo"] = {"Ijo languages"}, ["ijs"] = {"Southeast Ijo"}, ["ike"] = {"Eastern Canadian Inuktitut"}, ["ikh"] = {"Ikhin-Arokho"}, ["iki"] = {"Iko"}, ["ikk"] = {"Ika"}, ["ikl"] = {"Ikulu"}, ["iko"] = {"Olulumo-Ikom"}, ["ikp"] = {"Ikpeshi"}, ["ikr"] = {"Ikaranggal"}, ["iks"] = {"Inuit Sign Language"}, ["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"}, ["ikv"] = {"Iku-Gora-Ankwa"}, ["ikw"] = {"Ikwere"}, ["ikx"] = {"Ik"}, ["ikz"] = {"Ikizu"}, ["ila"] = {"Ile Ape"}, ["ilb"] = {"Ila"}, ["ilg"] = {"Garig-Ilgar"}, ["ili"] = {"Ili Turki"}, ["ilk"] = {"Ilongot"}, ["ilm"] = {"Iranun (Malaysia)"}, ["ilo"] = {"Iloko"}, ["ilp"] = {"Iranun (Philippines)"}, ["ils"] = {"International Sign"}, ["ilu"] = {"Ili'uun"}, ["ilv"] = {"Ilue"}, ["ima"] = {"Mala Malasar"}, ["imi"] = {"Anamgura"}, ["iml"] = {"Miluk"}, ["imn"] = {"Imonda"}, ["imo"] = {"Imbongu"}, ["imr"] = {"Imroing"}, ["ims"] = {"Marsian"}, ["imt"] = {"Imotong"}, ["imy"] = {"Milyan"}, ["inb"] = {"Inga"}, ["inc"] = {"Indic languages"}, ["ine"] = {"Indo-European languages"}, ["ing"] = {"Degexit'an"}, ["inh"] = {"Ingush"}, ["inj"] = {"Jungle Inga"}, ["inl"] = {"Indonesian Sign Language"}, ["inm"] = {"Minaean"}, ["inn"] = {"Isinai"}, ["ino"] = {"Inoke-Yate"}, ["inp"] = {"Iñapari"}, ["ins"] = {"Indian Sign Language"}, ["int"] = {"Intha"}, ["inz"] = {"Ineseño"}, ["ior"] = {"Inor"}, ["iou"] = {"Tuma-Irumu"}, ["iow"] = {"Iowa-Oto"}, ["ipi"] = {"Ipili"}, ["ipo"] = {"Ipiko"}, ["iqu"] = {"Iquito"}, ["iqw"] = {"Ikwo"}, ["ira"] = {"Iranian languages"}, ["ire"] = {"Iresim"}, ["irh"] = {"Irarutu"}, ["iri"] = {"Rigwe", "Irigwe"}, ["irk"] = {"Iraqw"}, ["irn"] = {"Irántxe"}, ["iro"] = {"Iroquoian languages"}, ["irr"] = {"Ir"}, ["iru"] = {"Irula"}, ["irx"] = {"Kamberau"}, ["iry"] = {"Iraya"}, ["isa"] = {"Isabi"}, ["isc"] = {"Isconahua"}, ["isd"] = {"Isnag"}, ["ise"] = {"Italian Sign Language"}, ["isg"] = {"Irish Sign Language"}, ["ish"] = {"Esan"}, ["isi"] = {"Nkem-Nkum"}, ["isk"] = {"Ishkashimi"}, ["ism"] = {"Masimasi"}, ["isn"] = {"Isanzu"}, ["iso"] = {"Isoko"}, ["isr"] = {"Israeli Sign Language"}, ["ist"] = {"Istriot"}, ["isu"] = {"Isu (Menchum Division)"}, ["itb"] = {"Binongan Itneg"}, ["itc"] = {"Italic languages"}, ["itd"] = {"Southern Tidung"}, ["ite"] = {"Itene"}, ["iti"] = {"Inlaod Itneg"}, ["itk"] = {"Judeo-Italian"}, ["itl"] = {"Itelmen"}, ["itm"] = {"Itu Mbon Uzo"}, ["ito"] = {"Itonama"}, ["itr"] = {"Iteri"}, ["its"] = {"Isekiri"}, ["itt"] = {"Maeng Itneg"}, ["itv"] = {"Itawit"}, ["itw"] = {"Ito"}, ["itx"] = {"Itik"}, ["ity"] = {"Moyadan Itneg"}, ["itz"] = {"Itzá"}, ["ium"] = {"Iu Mien"}, ["ivb"] = {"Ibatan"}, ["ivv"] = {"Ivatan"}, ["iwk"] = {"I-Wak"}, ["iwm"] = {"Iwam"}, ["iwo"] = {"Iwur"}, ["iws"] = {"Sepik Iwam"}, ["ixc"] = {"Ixcatec"}, ["ixl"] = {"Ixil"}, ["iya"] = {"Iyayu"}, ["iyo"] = {"Mesaka"}, ["iyx"] = {"Yaka (Congo)"}, ["izh"] = {"Ingrian"}, ["izm"] = {"Kizamani"}, ["izr"] = {"Izere"}, ["izz"] = {"Izii"}, ["jaa"] = {"Jamamadí"}, ["jab"] = {"Hyam"}, ["jac"] = {"Popti'", "Jakalteko"}, ["jad"] = {"Jahanka"}, ["jae"] = {"Yabem"}, ["jaf"] = {"Jara"}, ["jah"] = {"Jah Hut"}, ["jaj"] = {"Zazao"}, ["jak"] = {"Jakun"}, ["jal"] = {"Yalahatan"}, ["jam"] = {"Jamaican Creole English"}, ["jan"] = {"Jandai"}, ["jao"] = {"Yanyuwa"}, ["jaq"] = {"Yaqay"}, ["jas"] = {"New Caledonian Javanese"}, ["jat"] = {"Jakati"}, ["jau"] = {"Yaur"}, ["jax"] = {"Jambi Malay"}, ["jay"] = {"Yan-nhangu", "Nhangu"}, ["jaz"] = {"Jawe"}, ["jbe"] = {"Judeo-Berber"}, ["jbi"] = {"Badjiri"}, ["jbj"] = {"Arandai"}, ["jbk"] = {"Barikewa"}, ["jbm"] = {"Bijim"}, ["jbn"] = {"Nafusi"}, ["jbo"] = {"Lojban"}, ["jbr"] = {"Jofotek-Bromnya"}, ["jbt"] = {"Jabutí"}, ["jbu"] = {"Jukun Takum"}, ["jbw"] = {"Yawijibaya"}, ["jcs"] = {"Jamaican Country Sign Language"}, ["jct"] = {"Krymchak"}, ["jda"] = {"Jad"}, ["jdg"] = {"Jadgali"}, ["jdt"] = {"Judeo-Tat"}, ["jeb"] = {"Jebero"}, ["jee"] = {"Jerung"}, ["jeh"] = {"Jeh"}, ["jei"] = {"Yei"}, ["jek"] = {"Jeri Kuo"}, ["jel"] = {"Yelmek"}, ["jen"] = {"Dza"}, ["jer"] = {"Jere"}, ["jet"] = {"Manem"}, ["jeu"] = {"Jonkor Bourmataguil"}, ["jgb"] = {"Ngbee"}, ["jge"] = {"Judeo-Georgian"}, ["jgk"] = {"Gwak"}, ["jgo"] = {"Ngomba"}, ["jhi"] = {"Jehai"}, ["jhs"] = {"Jhankot Sign Language"}, ["jia"] = {"Jina"}, ["jib"] = {"Jibu"}, ["jic"] = {"Tol"}, ["jid"] = {"Bu (Kaduna State)"}, ["jie"] = {"Jilbe"}, ["jig"] = {"Jingulu", "Djingili"}, ["jih"] = {"sTodsde", "Shangzhai"}, ["jii"] = {"Jiiddu"}, ["jil"] = {"Jilim"}, ["jim"] = {"Jimi (Cameroon)"}, ["jio"] = {"Jiamao"}, ["jiq"] = {"Guanyinqiao", "Lavrung"}, ["jit"] = {"Jita"}, ["jiu"] = {"Youle Jinuo"}, ["jiv"] = {"Shuar"}, ["jiy"] = {"Buyuan Jinuo"}, ["jje"] = {"Jejueo"}, ["jjr"] = {"Bankal"}, ["jka"] = {"Kaera"}, ["jkm"] = {"Mobwa Karen"}, ["jko"] = {"Kubo"}, ["jkp"] = {"Paku Karen"}, ["jkr"] = {"Koro (India)"}, ["jks"] = {"Amami Koniya Sign Language"}, ["jku"] = {"Labir"}, ["jle"] = {"Ngile"}, ["jls"] = {"Jamaican Sign Language"}, ["jma"] = {"Dima"}, ["jmb"] = {"Zumbun"}, ["jmc"] = {"Machame"}, ["jmd"] = {"Yamdena"}, ["jmi"] = {"Jimi (Nigeria)"}, ["jml"] = {"Jumli"}, ["jmn"] = {"Makuri Naga"}, ["jmr"] = {"Kamara"}, ["jms"] = {"Mashi (Nigeria)"}, ["jmw"] = {"Mouwase"}, ["jmx"] = {"Western Juxtlahuaca Mixtec"}, ["jna"] = {"Jangshung"}, ["jnd"] = {"Jandavra"}, ["jng"] = {"Yangman"}, ["jni"] = {"Janji"}, ["jnj"] = {"Yemsa"}, ["jnl"] = {"Rawat"}, ["jns"] = {"Jaunsari"}, ["job"] = {"Joba"}, ["jod"] = {"Wojenaka"}, ["jog"] = {"Jogi"}, ["jor"] = {"Jorá"}, ["jos"] = {"Jordanian Sign Language"}, ["jow"] = {"Jowulu"}, ["jpa"] = {"Jewish Palestinian Aramaic"}, ["jpr"] = {"Judeo-Persian"}, ["jpx"] = {"Japanese (family)"}, ["jqr"] = {"Jaqaru"}, ["jra"] = {"Jarai"}, ["jrb"] = {"Judeo-Arabic"}, ["jrr"] = {"Jiru"}, ["jrt"] = {"Jakattoe"}, ["jru"] = {"Japrería"}, ["jsl"] = {"Japanese Sign Language"}, ["jua"] = {"Júma"}, ["jub"] = {"Wannu"}, ["juc"] = {"Jurchen"}, ["jud"] = {"Worodougou"}, ["juh"] = {"Hõne"}, ["jui"] = {"Ngadjuri"}, ["juk"] = {"Wapan"}, ["jul"] = {"Jirel"}, ["jum"] = {"Jumjum"}, ["jun"] = {"Juang"}, ["juo"] = {"Jiba"}, ["jup"] = {"Hupdë"}, ["jur"] = {"Jurúna"}, ["jus"] = {"Jumla Sign Language"}, ["jut"] = {"Jutish"}, ["juu"] = {"Ju"}, ["juw"] = {"Wãpha"}, ["juy"] = {"Juray"}, ["jvd"] = {"Javindo"}, ["jvn"] = {"Caribbean Javanese"}, ["jwi"] = {"Jwira-Pepesa"}, ["jya"] = {"Jiarong"}, ["jye"] = {"Judeo-Yemeni Arabic"}, ["jyy"] = {"Jaya"}, ["kaa"] = {"Kara-Kalpak", "Karakalpak"}, ["kab"] = {"Kabyle"}, ["kac"] = {"Kachin", "Jingpho"}, ["kad"] = {"Adara"}, ["kae"] = {"Ketangalan"}, ["kaf"] = {"Katso"}, ["kag"] = {"Kajaman"}, ["kah"] = {"Kara (Central African Republic)"}, ["kai"] = {"Karekare"}, ["kaj"] = {"Jju"}, ["kak"] = {"Kalanguya", "Kayapa Kallahan"}, ["kam"] = {"Kamba (Kenya)"}, ["kao"] = {"Xaasongaxango"}, ["kap"] = {"Bezhta"}, ["kaq"] = {"Capanahua"}, ["kar"] = {"Karen languages"}, ["kav"] = {"Katukína"}, ["kaw"] = {"Kawi"}, ["kax"] = {"Kao"}, ["kay"] = {"Kamayurá"}, ["kba"] = {"Kalarko"}, ["kbb"] = {"Kaxuiâna"}, ["kbc"] = {"Kadiwéu"}, ["kbd"] = {"Kabardian"}, ["kbe"] = {"Kanju"}, ["kbg"] = {"Khamba"}, ["kbh"] = {"Camsá"}, ["kbi"] = {"Kaptiau"}, ["kbj"] = {"Kari"}, ["kbk"] = {"Grass Koiari"}, ["kbl"] = {"Kanembu"}, ["kbm"] = {"Iwal"}, ["kbn"] = {"Kare (Central African Republic)"}, ["kbo"] = {"Keliko"}, ["kbp"] = {"Kabiyè"}, ["kbq"] = {"Kamano"}, ["kbr"] = {"Kafa"}, ["kbs"] = {"Kande"}, ["kbt"] = {"Abadi"}, ["kbu"] = {"Kabutra"}, ["kbv"] = {"Dera (Indonesia)"}, ["kbw"] = {"Kaiep"}, ["kbx"] = {"Ap Ma"}, ["kby"] = {"Manga Kanuri"}, ["kbz"] = {"Duhwa"}, ["kca"] = {"Khanty"}, ["kcb"] = {"Kawacha"}, ["kcc"] = {"Lubila"}, ["kcd"] = {"Ngkâlmpw Kanum"}, ["kce"] = {"Kaivi"}, ["kcf"] = {"Ukaan"}, ["kcg"] = {"Tyap"}, ["kch"] = {"Vono"}, ["kci"] = {"Kamantan"}, ["kcj"] = {"Kobiana"}, ["kck"] = {"Kalanga"}, ["kcl"] = {"Kela (Papua New Guinea)", "Kala"}, ["kcm"] = {"Gula (Central African Republic)"}, ["kcn"] = {"Nubi"}, ["kco"] = {"Kinalakna"}, ["kcp"] = {"Kanga"}, ["kcq"] = {"Kamo"}, ["kcr"] = {"Katla"}, ["kcs"] = {"Koenoem"}, ["kct"] = {"Kaian"}, ["kcu"] = {"Kami (Tanzania)"}, ["kcv"] = {"Kete"}, ["kcw"] = {"Kabwari"}, ["kcx"] = {"Kachama-Ganjule"}, ["kcy"] = {"Korandje"}, ["kcz"] = {"Konongo"}, ["kda"] = {"Worimi"}, ["kdc"] = {"Kutu"}, ["kdd"] = {"Yankunytjatjara"}, ["kde"] = {"Makonde"}, ["kdf"] = {"Mamusi"}, ["kdg"] = {"Seba"}, ["kdh"] = {"Tem"}, ["kdi"] = {"Kumam"}, ["kdj"] = {"Karamojong"}, ["kdk"] = {"Numèè", "Kwényi"}, ["kdl"] = {"Tsikimba"}, ["kdm"] = {"Kagoma"}, ["kdn"] = {"Kunda"}, ["kdo"] = {"Kordofanian languages"}, ["kdp"] = {"Kaningdon-Nindem"}, ["kdq"] = {"Koch"}, ["kdr"] = {"Karaim"}, ["kdt"] = {"Kuy"}, ["kdu"] = {"Kadaru"}, ["kdw"] = {"Koneraw"}, ["kdx"] = {"Kam"}, ["kdy"] = {"Keder", "Keijar"}, ["kdz"] = {"Kwaja"}, ["kea"] = {"Kabuverdianu"}, ["keb"] = {"Kélé"}, ["kec"] = {"Keiga"}, ["ked"] = {"Kerewe"}, ["kee"] = {"Eastern Keres"}, ["kef"] = {"Kpessi"}, ["keg"] = {"Tese"}, ["keh"] = {"Keak"}, ["kei"] = {"Kei"}, ["kej"] = {"Kadar"}, ["kek"] = {"Kekchí"}, ["kel"] = {"Kela (Democratic Republic of Congo)"}, ["kem"] = {"Kemak"}, ["ken"] = {"Kenyang"}, ["keo"] = {"Kakwa"}, ["kep"] = {"Kaikadi"}, ["keq"] = {"Kamar"}, ["ker"] = {"Kera"}, ["kes"] = {"Kugbo"}, ["ket"] = {"Ket"}, ["keu"] = {"Akebu"}, ["kev"] = {"Kanikkaran"}, ["kew"] = {"West Kewa"}, ["kex"] = {"Kukna"}, ["key"] = {"Kupia"}, ["kez"] = {"Kukele"}, ["kfa"] = {"Kodava"}, ["kfb"] = {"Northwestern Kolami"}, ["kfc"] = {"Konda-Dora"}, ["kfd"] = {"Korra Koraga"}, ["kfe"] = {"Kota (India)"}, ["kff"] = {"Koya"}, ["kfg"] = {"Kudiya"}, ["kfh"] = {"Kurichiya"}, ["kfi"] = {"Kannada Kurumba"}, ["kfj"] = {"Kemiehua"}, ["kfk"] = {"Kinnauri"}, ["kfl"] = {"Kung"}, ["kfm"] = {"Khunsari"}, ["kfn"] = {"Kuk"}, ["kfo"] = {"Koro (Côte d'Ivoire)"}, ["kfp"] = {"Korwa"}, ["kfq"] = {"Korku"}, ["kfr"] = {"Kachhi", "Kutchi"}, ["kfs"] = {"Bilaspuri"}, ["kft"] = {"Kanjari"}, ["kfu"] = {"Katkari"}, ["kfv"] = {"Kurmukar"}, ["kfw"] = {"Kharam Naga"}, ["kfx"] = {"Kullu Pahari"}, ["kfy"] = {"Kumaoni"}, ["kfz"] = {"Koromfé"}, ["kga"] = {"Koyaga"}, ["kgb"] = {"Kawe"}, ["kge"] = {"Komering"}, ["kgf"] = {"Kube"}, ["kgg"] = {"Kusunda"}, ["kgi"] = {"Selangor Sign Language"}, ["kgj"] = {"Gamale Kham"}, ["kgk"] = {"Kaiwá"}, ["kgl"] = {"Kunggari"}, ["kgn"] = {"Karingani"}, ["kgo"] = {"Krongo"}, ["kgp"] = {"Kaingang"}, ["kgq"] = {"Kamoro"}, ["kgr"] = {"Abun"}, ["kgs"] = {"Kumbainggar"}, ["kgt"] = {"Somyev"}, ["kgu"] = {"Kobol"}, ["kgv"] = {"Karas"}, ["kgw"] = {"Karon Dori"}, ["kgx"] = {"Kamaru"}, ["kgy"] = {"Kyerung"}, ["kha"] = {"Khasi"}, ["khb"] = {"Lü"}, ["khc"] = {"Tukang Besi North"}, ["khd"] = {"Bädi Kanum"}, ["khe"] = {"Korowai"}, ["khf"] = {"Khuen"}, ["khg"] = {"Khams Tibetan"}, ["khh"] = {"Kehu"}, ["khi"] = {"Khoisan languages"}, ["khj"] = {"Kuturmi"}, ["khk"] = {"Halh Mongolian"}, ["khl"] = {"Lusi"}, ["khn"] = {"Khandesi"}, ["kho"] = {"Khotanese", "Sakan"}, ["khp"] = {"Kapori", "Kapauri"}, ["khq"] = {"Koyra Chiini Songhay"}, ["khr"] = {"Kharia"}, ["khs"] = {"Kasua"}, ["kht"] = {"Khamti"}, ["khu"] = {"Nkhumbi"}, ["khv"] = {"Khvarshi"}, ["khw"] = {"Khowar"}, ["khx"] = {"Kanu"}, ["khy"] = {"Kele (Democratic Republic of Congo)"}, ["khz"] = {"Keapara"}, ["kia"] = {"Kim"}, ["kib"] = {"Koalib"}, ["kic"] = {"Kickapoo"}, ["kid"] = {"Koshin"}, ["kie"] = {"Kibet"}, ["kif"] = {"Eastern Parbate Kham"}, ["kig"] = {"Kimaama", "Kimaghima"}, ["kih"] = {"Kilmeri"}, ["kii"] = {"Kitsai"}, ["kij"] = {"Kilivila"}, ["kil"] = {"Kariya"}, ["kim"] = {"Karagas"}, ["kio"] = {"Kiowa"}, ["kip"] = {"Sheshi Kham"}, ["kiq"] = {"Kosadle", "Kosare"}, ["kis"] = {"Kis"}, ["kit"] = {"Agob"}, ["kiu"] = {"Kirmanjki (individual language)"}, ["kiv"] = {"Kimbu"}, ["kiw"] = {"Northeast Kiwai"}, ["kix"] = {"Khiamniungan Naga"}, ["kiy"] = {"Kirikiri"}, ["kiz"] = {"Kisi"}, ["kja"] = {"Mlap"}, ["kjb"] = {"Q'anjob'al", "Kanjobal"}, ["kjc"] = {"Coastal Konjo"}, ["kjd"] = {"Southern Kiwai"}, ["kje"] = {"Kisar"}, ["kjg"] = {"Khmu"}, ["kjh"] = {"Khakas"}, ["kji"] = {"Zabana"}, ["kjj"] = {"Khinalugh"}, ["kjk"] = {"Highland Konjo"}, ["kjl"] = {"Western Parbate Kham"}, ["kjm"] = {"Kháng"}, ["kjn"] = {"Kunjen"}, ["kjo"] = {"Harijan Kinnauri"}, ["kjp"] = {"Pwo Eastern Karen"}, ["kjq"] = {"Western Keres"}, ["kjr"] = {"Kurudu"}, ["kjs"] = {"East Kewa"}, ["kjt"] = {"Phrae Pwo Karen"}, ["kju"] = {"Kashaya"}, ["kjv"] = {"Kaikavian Literary Language"}, ["kjx"] = {"Ramopa"}, ["kjy"] = {"Erave"}, ["kjz"] = {"Bumthangkha"}, ["kka"] = {"Kakanda"}, ["kkb"] = {"Kwerisa"}, ["kkc"] = {"Odoodee"}, ["kkd"] = {"Kinuku"}, ["kke"] = {"Kakabe"}, ["kkf"] = {"Kalaktang Monpa"}, ["kkg"] = {"Mabaka Valley Kalinga"}, ["kkh"] = {"Khün"}, ["kki"] = {"Kagulu"}, ["kkj"] = {"Kako"}, ["kkk"] = {"Kokota"}, ["kkl"] = {"Kosarek Yale"}, ["kkm"] = {"Kiong"}, ["kkn"] = {"Kon Keu"}, ["kko"] = {"Karko"}, ["kkp"] = {"Gugubera", "Koko-Bera"}, ["kkq"] = {"Kaeku"}, ["kkr"] = {"Kir-Balar"}, ["kks"] = {"Giiwo"}, ["kkt"] = {"Koi"}, ["kku"] = {"Tumi"}, ["kkv"] = {"Kangean"}, ["kkw"] = {"Teke-Kukuya"}, ["kkx"] = {"Kohin"}, ["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"}, ["kkz"] = {"Kaska"}, ["kla"] = {"Klamath-Modoc"}, ["klb"] = {"Kiliwa"}, ["klc"] = {"Kolbila"}, ["kld"] = {"Gamilaraay"}, ["kle"] = {"Kulung (Nepal)"}, ["klf"] = {"Kendeje"}, ["klg"] = {"Tagakaulo"}, ["klh"] = {"Weliki"}, ["kli"] = {"Kalumpang"}, ["klj"] = {"Khalaj"}, ["klk"] = {"Kono (Nigeria)"}, ["kll"] = {"Kagan Kalagan"}, ["klm"] = {"Migum"}, ["kln"] = {"Kalenjin"}, ["klo"] = {"Kapya"}, ["klp"] = {"Kamasa"}, ["klq"] = {"Rumu"}, ["klr"] = {"Khaling"}, ["kls"] = {"Kalasha"}, ["klt"] = {"Nukna"}, ["klu"] = {"Klao"}, ["klv"] = {"Maskelynes"}, ["klw"] = {"Tado", "Lindu"}, ["klx"] = {"Koluwawa"}, ["kly"] = {"Kalao"}, ["klz"] = {"Kabola"}, ["kma"] = {"Konni"}, ["kmb"] = {"Kimbundu"}, ["kmc"] = {"Southern Dong"}, ["kmd"] = {"Majukayang Kalinga"}, ["kme"] = {"Bakole"}, ["kmf"] = {"Kare (Papua New Guinea)"}, ["kmg"] = {"Kâte"}, ["kmh"] = {"Kalam"}, ["kmi"] = {"Kami (Nigeria)"}, ["kmj"] = {"Kumarbhag Paharia"}, ["kmk"] = {"Limos Kalinga"}, ["kml"] = {"Tanudan Kalinga"}, ["kmm"] = {"Kom (India)"}, ["kmn"] = {"Awtuw"}, ["kmo"] = {"Kwoma"}, ["kmp"] = {"Gimme"}, ["kmq"] = {"Kwama"}, ["kmr"] = {"Northern Kurdish"}, ["kms"] = {"Kamasau"}, ["kmt"] = {"Kemtuik"}, ["kmu"] = {"Kanite"}, ["kmv"] = {"Karipúna Creole French"}, ["kmw"] = {"Komo (Democratic Republic of Congo)"}, ["kmx"] = {"Waboda"}, ["kmy"] = {"Koma"}, ["kmz"] = {"Khorasani Turkish"}, ["kna"] = {"Dera (Nigeria)"}, ["knb"] = {"Lubuagan Kalinga"}, ["knc"] = {"Central Kanuri"}, ["knd"] = {"Konda"}, ["kne"] = {"Kankanaey"}, ["knf"] = {"Mankanya"}, ["kng"] = {"Koongo"}, ["kni"] = {"Kanufi"}, ["knj"] = {"Western Kanjobal"}, ["knk"] = {"Kuranko"}, ["knl"] = {"Keninjal"}, ["knm"] = {"Kanamarí"}, ["knn"] = {"Konkani (individual language)"}, ["kno"] = {"Kono (Sierra Leone)"}, ["knp"] = {"Kwanja"}, ["knq"] = {"Kintaq"}, ["knr"] = {"Kaningra"}, ["kns"] = {"Kensiu"}, ["knt"] = {"Panoan Katukína"}, ["knu"] = {"Kono (Guinea)"}, ["knv"] = {"Tabo"}, ["knw"] = {"Kung-Ekoka"}, ["knx"] = {"Kendayan", "Salako"}, ["kny"] = {"Kanyok"}, ["knz"] = {"Kalamsé"}, ["koa"] = {"Konomala"}, ["koc"] = {"Kpati"}, ["kod"] = {"Kodi"}, ["koe"] = {"Kacipo-Bale Suri"}, ["kof"] = {"Kubi"}, ["kog"] = {"Cogui", "Kogi"}, ["koh"] = {"Koyo"}, ["koi"] = {"Komi-Permyak"}, ["kok"] = {"Konkani (macrolanguage)"}, ["kol"] = {"Kol (Papua New Guinea)"}, ["koo"] = {"Konzo"}, ["kop"] = {"Waube"}, ["koq"] = {"Kota (Gabon)"}, ["kos"] = {"Kosraean"}, ["kot"] = {"Lagwan"}, ["kou"] = {"Koke"}, ["kov"] = {"Kudu-Camo"}, ["kow"] = {"Kugama"}, ["koy"] = {"Koyukon"}, ["koz"] = {"Korak"}, ["kpa"] = {"Kutto"}, ["kpb"] = {"Mullu Kurumba"}, ["kpc"] = {"Curripaco"}, ["kpd"] = {"Koba"}, ["kpe"] = {"Kpelle"}, ["kpf"] = {"Komba"}, ["kpg"] = {"Kapingamarangi"}, ["kph"] = {"Kplang"}, ["kpi"] = {"Kofei"}, ["kpj"] = {"Karajá"}, ["kpk"] = {"Kpan"}, ["kpl"] = {"Kpala"}, ["kpm"] = {"Koho"}, ["kpn"] = {"Kepkiriwát"}, ["kpo"] = {"Ikposo"}, ["kpq"] = {"Korupun-Sela"}, ["kpr"] = {"Korafe-Yegha"}, ["kps"] = {"Tehit"}, ["kpt"] = {"Karata"}, ["kpu"] = {"Kafoa"}, ["kpv"] = {"Komi-Zyrian"}, ["kpw"] = {"Kobon"}, ["kpx"] = {"Mountain Koiali"}, ["kpy"] = {"Koryak"}, ["kpz"] = {"Kupsabiny"}, ["kqa"] = {"Mum"}, ["kqb"] = {"Kovai"}, ["kqc"] = {"Doromu-Koki"}, ["kqd"] = {"Koy Sanjaq Surat"}, ["kqe"] = {"Kalagan"}, ["kqf"] = {"Kakabai"}, ["kqg"] = {"Khe"}, ["kqh"] = {"Kisankasa"}, ["kqi"] = {"Koitabu"}, ["kqj"] = {"Koromira"}, ["kqk"] = {"Kotafon Gbe"}, ["kql"] = {"Kyenele"}, ["kqm"] = {"Khisa"}, ["kqn"] = {"Kaonde"}, ["kqo"] = {"Eastern Krahn"}, ["kqp"] = {"Kimré"}, ["kqq"] = {"Krenak"}, ["kqr"] = {"Kimaragang"}, ["kqs"] = {"Northern Kissi"}, ["kqt"] = {"Klias River Kadazan"}, ["kqu"] = {"Seroa"}, ["kqv"] = {"Okolod"}, ["kqw"] = {"Kandas"}, ["kqx"] = {"Mser"}, ["kqy"] = {"Koorete"}, ["kqz"] = {"Korana"}, ["kra"] = {"Kumhali"}, ["krb"] = {"Karkin"}, ["krc"] = {"Karachay-Balkar"}, ["krd"] = {"Kairui-Midiki"}, ["kre"] = {"Panará"}, ["krf"] = {"Koro (Vanuatu)"}, ["krh"] = {"Kurama"}, ["kri"] = {"Krio"}, ["krj"] = {"Kinaray-A"}, ["krk"] = {"Kerek"}, ["krl"] = {"Karelian"}, ["krn"] = {"Sapo"}, ["kro"] = {"Kru languages"}, ["krp"] = {"Durop"}, ["krr"] = {"Krung"}, ["krs"] = {"Gbaya (Sudan)"}, ["krt"] = {"Tumari Kanuri"}, ["kru"] = {"Kurukh"}, ["krv"] = {"Kavet"}, ["krw"] = {"Western Krahn"}, ["krx"] = {"Karon"}, ["kry"] = {"Kryts"}, ["krz"] = {"Sota Kanum"}, ["ksb"] = {"Shambala"}, ["ksc"] = {"Southern Kalinga"}, ["ksd"] = {"Kuanua"}, ["kse"] = {"Kuni"}, ["ksf"] = {"Bafia"}, ["ksg"] = {"Kusaghe"}, ["ksh"] = {"Kölsch"}, ["ksi"] = {"Krisa", "I'saka"}, ["ksj"] = {"Uare"}, ["ksk"] = {"Kansa"}, ["ksl"] = {"Kumalu"}, ["ksm"] = {"Kumba"}, ["ksn"] = {"Kasiguranin"}, ["kso"] = {"Kofa"}, ["ksp"] = {"Kaba"}, ["ksq"] = {"Kwaami"}, ["ksr"] = {"Borong"}, ["kss"] = {"Southern Kisi"}, ["kst"] = {"Winyé"}, ["ksu"] = {"Khamyang"}, ["ksv"] = {"Kusu"}, ["ksw"] = {"S'gaw Karen"}, ["ksx"] = {"Kedang"}, ["ksy"] = {"Kharia Thar"}, ["ksz"] = {"Kodaku"}, ["kta"] = {"Katua"}, ["ktb"] = {"Kambaata"}, ["ktc"] = {"Kholok"}, ["ktd"] = {"Kokata", "Kukatha"}, ["kte"] = {"Nubri"}, ["ktf"] = {"Kwami"}, ["ktg"] = {"Kalkutung"}, ["kth"] = {"Karanga"}, ["kti"] = {"North Muyu"}, ["ktj"] = {"Plapo Krumen"}, ["ktk"] = {"Kaniet"}, ["ktl"] = {"Koroshi"}, ["ktm"] = {"Kurti"}, ["ktn"] = {"Karitiâna"}, ["kto"] = {"Kuot"}, ["ktp"] = {"Kaduo"}, ["ktq"] = {"Katabaga"}, ["kts"] = {"South Muyu"}, ["ktt"] = {"Ketum"}, ["ktu"] = {"Kituba (Democratic Republic of Congo)"}, ["ktv"] = {"Eastern Katu"}, ["ktw"] = {"Kato"}, ["ktx"] = {"Kaxararí"}, ["kty"] = {"Kango (Bas-Uélé District)"}, ["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"}, ["kub"] = {"Kutep"}, ["kuc"] = {"Kwinsu"}, ["kud"] = {"'Auhelawa"}, ["kue"] = {"Kuman (Papua New Guinea)"}, ["kuf"] = {"Western Katu"}, ["kug"] = {"Kupa"}, ["kuh"] = {"Kushi"}, ["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"}, ["kuj"] = {"Kuria"}, ["kuk"] = {"Kepo'"}, ["kul"] = {"Kulere"}, ["kum"] = {"Kumyk"}, ["kun"] = {"Kunama"}, ["kuo"] = {"Kumukio"}, ["kup"] = {"Kunimaipa"}, ["kuq"] = {"Karipuna"}, ["kus"] = {"Kusaal"}, ["kut"] = {"Kutenai"}, ["kuu"] = {"Upper Kuskokwim"}, ["kuv"] = {"Kur"}, ["kuw"] = {"Kpagua"}, ["kux"] = {"Kukatja"}, ["kuy"] = {"Kuuku-Ya'u"}, ["kuz"] = {"Kunza"}, ["kva"] = {"Bagvalal"}, ["kvb"] = {"Kubu"}, ["kvc"] = {"Kove"}, ["kvd"] = {"Kui (Indonesia)"}, ["kve"] = {"Kalabakan"}, ["kvf"] = {"Kabalai"}, ["kvg"] = {"Kuni-Boazi"}, ["kvh"] = {"Komodo"}, ["kvi"] = {"Kwang"}, ["kvj"] = {"Psikye"}, ["kvk"] = {"Korean Sign Language"}, ["kvl"] = {"Kayaw"}, ["kvm"] = {"Kendem"}, ["kvn"] = {"Border Kuna"}, ["kvo"] = {"Dobel"}, ["kvp"] = {"Kompane"}, ["kvq"] = {"Geba Karen"}, ["kvr"] = {"Kerinci"}, ["kvt"] = {"Lahta Karen", "Lahta"}, ["kvu"] = {"Yinbaw Karen"}, ["kvv"] = {"Kola"}, ["kvw"] = {"Wersing"}, ["kvx"] = {"Parkari Koli"}, ["kvy"] = {"Yintale Karen", "Yintale"}, ["kvz"] = {"Tsakwambo", "Tsaukambo"}, ["kwa"] = {"Dâw"}, ["kwb"] = {"Kwa"}, ["kwc"] = {"Likwala"}, ["kwd"] = {"Kwaio"}, ["kwe"] = {"Kwerba"}, ["kwf"] = {"Kwara'ae"}, ["kwg"] = {"Sara Kaba Deme"}, ["kwh"] = {"Kowiai"}, ["kwi"] = {"Awa-Cuaiquer"}, ["kwj"] = {"Kwanga"}, ["kwk"] = {"Kwakiutl"}, ["kwl"] = {"Kofyar"}, ["kwm"] = {"Kwambi"}, ["kwn"] = {"Kwangali"}, ["kwo"] = {"Kwomtari"}, ["kwp"] = {"Kodia"}, ["kwr"] = {"Kwer"}, ["kws"] = {"Kwese"}, ["kwt"] = {"Kwesten"}, ["kwu"] = {"Kwakum"}, ["kwv"] = {"Sara Kaba Náà"}, ["kww"] = {"Kwinti"}, ["kwx"] = {"Khirwar"}, ["kwy"] = {"San Salvador Kongo"}, ["kwz"] = {"Kwadi"}, ["kxa"] = {"Kairiru"}, ["kxb"] = {"Krobu"}, ["kxc"] = {"Konso", "Khonso"}, ["kxd"] = {"Brunei"}, ["kxf"] = {"Manumanaw Karen", "Manumanaw"}, ["kxh"] = {"Karo (Ethiopia)"}, ["kxi"] = {"Keningau Murut"}, ["kxj"] = {"Kulfa"}, ["kxk"] = {"Zayein Karen"}, ["kxm"] = {"Northern Khmer"}, ["kxn"] = {"Kanowit-Tanjong Melanau"}, ["kxo"] = {"Kanoé"}, ["kxp"] = {"Wadiyara Koli"}, ["kxq"] = {"Smärky Kanum"}, ["kxr"] = {"Koro (Papua New Guinea)"}, ["kxs"] = {"Kangjia"}, ["kxt"] = {"Koiwat"}, ["kxv"] = {"Kuvi"}, ["kxw"] = {"Konai"}, ["kxx"] = {"Likuba"}, ["kxy"] = {"Kayong"}, ["kxz"] = {"Kerewo"}, ["kya"] = {"Kwaya"}, ["kyb"] = {"Butbut Kalinga"}, ["kyc"] = {"Kyaka"}, ["kyd"] = {"Karey"}, ["kye"] = {"Krache"}, ["kyf"] = {"Kouya"}, ["kyg"] = {"Keyagana"}, ["kyh"] = {"Karok"}, ["kyi"] = {"Kiput"}, ["kyj"] = {"Karao"}, ["kyk"] = {"Kamayo"}, ["kyl"] = {"Kalapuya"}, ["kym"] = {"Kpatili"}, ["kyn"] = {"Northern Binukidnon"}, ["kyo"] = {"Kelon"}, ["kyp"] = {"Kang"}, ["kyq"] = {"Kenga"}, ["kyr"] = {"Kuruáya"}, ["kys"] = {"Baram Kayan"}, ["kyt"] = {"Kayagar"}, ["kyu"] = {"Western Kayah"}, ["kyv"] = {"Kayort"}, ["kyw"] = {"Kudmali"}, ["kyx"] = {"Rapoisi"}, ["kyy"] = {"Kambaira"}, ["kyz"] = {"Kayabí"}, ["kza"] = {"Western Karaboro"}, ["kzb"] = {"Kaibobo"}, ["kzc"] = {"Bondoukou Kulango"}, ["kzd"] = {"Kadai"}, ["kze"] = {"Kosena"}, ["kzf"] = {"Da'a Kaili"}, ["kzg"] = {"Kikai"}, ["kzi"] = {"Kelabit"}, ["kzk"] = {"Kazukuru"}, ["kzl"] = {"Kayeli"}, ["kzm"] = {"Kais"}, ["kzn"] = {"Kokola"}, ["kzo"] = {"Kaningi"}, ["kzp"] = {"Kaidipang"}, ["kzq"] = {"Kaike"}, ["kzr"] = {"Karang"}, ["kzs"] = {"Sugut Dusun"}, ["kzu"] = {"Kayupulau"}, ["kzv"] = {"Komyandaret"}, ["kzw"] = {"Karirí-Xocó"}, ["kzx"] = {"Kamarian"}, ["kzy"] = {"Kango (Tshopo District)"}, ["kzz"] = {"Kalabra"}, ["laa"] = {"Southern Subanen"}, ["lab"] = {"Linear A"}, ["lac"] = {"Lacandon"}, ["lad"] = {"Ladino"}, ["lae"] = {"Pattani"}, ["laf"] = {"Lafofa"}, ["lag"] = {"Rangi"}, ["lah"] = {"Lahnda"}, ["lai"] = {"Lambya"}, ["laj"] = {"Lango (Uganda)"}, ["lal"] = {"Lalia"}, ["lam"] = {"Lamba"}, ["lan"] = {"Laru"}, ["lap"] = {"Laka (Chad)"}, ["laq"] = {"Qabiao"}, ["lar"] = {"Larteh"}, ["las"] = {"Lama (Togo)"}, ["lau"] = {"Laba"}, ["law"] = {"Lauje"}, ["lax"] = {"Tiwa"}, ["lay"] = {"Lama Bai"}, ["laz"] = {"Aribwatsa"}, ["lbb"] = {"Label"}, ["lbc"] = {"Lakkia"}, ["lbe"] = {"Lak"}, ["lbf"] = {"Tinani"}, ["lbg"] = {"Laopang"}, ["lbi"] = {"La'bi"}, ["lbj"] = {"Ladakhi"}, ["lbk"] = {"Central Bontok"}, ["lbl"] = {"Libon Bikol"}, ["lbm"] = {"Lodhi"}, ["lbn"] = {"Rmeet"}, ["lbo"] = {"Laven"}, ["lbq"] = {"Wampar"}, ["lbr"] = {"Lohorung"}, ["lbs"] = {"Libyan Sign Language"}, ["lbt"] = {"Lachi"}, ["lbu"] = {"Labu"}, ["lbv"] = {"Lavatbura-Lamusong"}, ["lbw"] = {"Tolaki"}, ["lbx"] = {"Lawangan"}, ["lby"] = {"Lamalama", "Lamu-Lamu"}, ["lbz"] = {"Lardil"}, ["lcc"] = {"Legenyem"}, ["lcd"] = {"Lola"}, ["lce"] = {"Loncong", "Sekak"}, ["lcf"] = {"Lubu"}, ["lch"] = {"Luchazi"}, ["lcl"] = {"Lisela"}, ["lcm"] = {"Tungag"}, ["lcp"] = {"Western Lawa"}, ["lcq"] = {"Luhu"}, ["lcs"] = {"Lisabata-Nuniali"}, ["lda"] = {"Kla-Dan"}, ["ldb"] = {"Dũya"}, ["ldd"] = {"Luri"}, ["ldg"] = {"Lenyima"}, ["ldh"] = {"Lamja-Dengsa-Tola"}, ["ldi"] = {"Laari"}, ["ldj"] = {"Lemoro"}, ["ldk"] = {"Leelau"}, ["ldl"] = {"Kaan"}, ["ldm"] = {"Landoma"}, ["ldn"] = {"Láadan"}, ["ldo"] = {"Loo"}, ["ldp"] = {"Tso"}, ["ldq"] = {"Lufu"}, ["lea"] = {"Lega-Shabunda"}, ["leb"] = {"Lala-Bisa"}, ["lec"] = {"Leco"}, ["led"] = {"Lendu"}, ["lee"] = {"Lyélé"}, ["lef"] = {"Lelemi"}, ["leh"] = {"Lenje"}, ["lei"] = {"Lemio"}, ["lej"] = {"Lengola"}, ["lek"] = {"Leipon"}, ["lel"] = {"Lele (Democratic Republic of Congo)"}, ["lem"] = {"Nomaande"}, ["len"] = {"Lenca"}, ["leo"] = {"Leti (Cameroon)"}, ["lep"] = {"Lepcha"}, ["leq"] = {"Lembena"}, ["ler"] = {"Lenkau"}, ["les"] = {"Lese"}, ["let"] = {"Lesing-Gelimi", "Amio-Gelimi"}, ["leu"] = {"Kara (Papua New Guinea)"}, ["lev"] = {"Lamma"}, ["lew"] = {"Ledo Kaili"}, ["lex"] = {"Luang"}, ["ley"] = {"Lemolang"}, ["lez"] = {"Lezghian"}, ["lfa"] = {"Lefa"}, ["lfn"] = {"Lingua Franca Nova"}, ["lga"] = {"Lungga"}, ["lgb"] = {"Laghu"}, ["lgg"] = {"Lugbara"}, ["lgh"] = {"Laghuu"}, ["lgi"] = {"Lengilu"}, ["lgk"] = {"Lingarak", "Neverver"}, ["lgl"] = {"Wala"}, ["lgm"] = {"Lega-Mwenga"}, ["lgn"] = {"T'apo", "Opuuo"}, ["lgo"] = {"Lango (South Sudan)"}, ["lgq"] = {"Logba"}, ["lgr"] = {"Lengo"}, ["lgs"] = {"Guinea-Bissau Sign Language", "Língua Gestual Guineense"}, ["lgt"] = {"Pahi"}, ["lgu"] = {"Longgu"}, ["lgz"] = {"Ligenza"}, ["lha"] = {"Laha (Viet Nam)"}, ["lhh"] = {"Laha (Indonesia)"}, ["lhi"] = {"Lahu Shi"}, ["lhl"] = {"Lahul Lohar"}, ["lhm"] = {"Lhomi"}, ["lhn"] = {"Lahanan"}, ["lhp"] = {"Lhokpu"}, ["lhs"] = {"Mlahsö"}, ["lht"] = {"Lo-Toga"}, ["lhu"] = {"Lahu"}, ["lia"] = {"West-Central Limba"}, ["lib"] = {"Likum"}, ["lic"] = {"Hlai"}, ["lid"] = {"Nyindrou"}, ["lie"] = {"Likila"}, ["lif"] = {"Limbu"}, ["lig"] = {"Ligbi"}, ["lih"] = {"Lihir"}, ["lij"] = {"Ligurian"}, ["lik"] = {"Lika"}, ["lil"] = {"Lillooet"}, ["lio"] = {"Liki"}, ["lip"] = {"Sekpele"}, ["liq"] = {"Libido"}, ["lir"] = {"Liberian English"}, ["lis"] = {"Lisu"}, ["liu"] = {"Logorik"}, ["liv"] = {"Liv"}, ["liw"] = {"Col"}, ["lix"] = {"Liabuku"}, ["liy"] = {"Banda-Bambari"}, ["liz"] = {"Libinza"}, ["lja"] = {"Golpa"}, ["lje"] = {"Rampi"}, ["lji"] = {"Laiyolo"}, ["ljl"] = {"Li'o"}, ["ljp"] = {"Lampung Api"}, ["ljw"] = {"Yirandali"}, ["ljx"] = {"Yuru"}, ["lka"] = {"Lakalei"}, ["lkb"] = {"Kabras", "Lukabaras"}, ["lkc"] = {"Kucong"}, ["lkd"] = {"Lakondê"}, ["lke"] = {"Kenyi"}, ["lkh"] = {"Lakha"}, ["lki"] = {"Laki"}, ["lkj"] = {"Remun"}, ["lkl"] = {"Laeko-Libuat"}, ["lkm"] = {"Kalaamaya"}, ["lkn"] = {"Lakon", "Vure"}, ["lko"] = {"Khayo", "Olukhayo"}, ["lkr"] = {"Päri"}, ["lks"] = {"Kisa", "Olushisa"}, ["lkt"] = {"Lakota"}, ["lku"] = {"Kungkari"}, ["lky"] = {"Lokoya"}, ["lla"] = {"Lala-Roba"}, ["llb"] = {"Lolo"}, ["llc"] = {"Lele (Guinea)"}, ["lld"] = {"Ladin"}, ["lle"] = {"Lele (Papua New Guinea)"}, ["llf"] = {"Hermit"}, ["llg"] = {"Lole"}, ["llh"] = {"Lamu"}, ["lli"] = {"Teke-Laali"}, ["llj"] = {"Ladji Ladji"}, ["llk"] = {"Lelak"}, ["lll"] = {"Lilau"}, ["llm"] = {"Lasalimu"}, ["lln"] = {"Lele (Chad)"}, ["llp"] = {"North Efate"}, ["llq"] = {"Lolak"}, ["lls"] = {"Lithuanian Sign Language"}, ["llu"] = {"Lau"}, ["llx"] = {"Lauan"}, ["lma"] = {"East Limba"}, ["lmb"] = {"Merei"}, ["lmc"] = {"Limilngan"}, ["lmd"] = {"Lumun"}, ["lme"] = {"Pévé"}, ["lmf"] = {"South Lembata"}, ["lmg"] = {"Lamogai"}, ["lmh"] = {"Lambichhong"}, ["lmi"] = {"Lombi"}, ["lmj"] = {"West Lembata"}, ["lmk"] = {"Lamkang"}, ["lml"] = {"Hano"}, ["lmn"] = {"Lambadi"}, ["lmo"] = {"Lombard"}, ["lmp"] = {"Limbum"}, ["lmq"] = {"Lamatuka"}, ["lmr"] = {"Lamalera"}, ["lmu"] = {"Lamenu"}, ["lmv"] = {"Lomaiviti"}, ["lmw"] = {"Lake Miwok"}, ["lmx"] = {"Laimbue"}, ["lmy"] = {"Lamboya"}, ["lna"] = {"Langbashe"}, ["lnb"] = {"Mbalanhu"}, ["lnd"] = {"Lundayeh", "Lun Bawang"}, ["lng"] = {"Langobardic"}, ["lnh"] = {"Lanoh"}, ["lni"] = {"Daantanai'"}, ["lnj"] = {"Leningitij"}, ["lnl"] = {"South Central Banda"}, ["lnm"] = {"Langam"}, ["lnn"] = {"Lorediakarkar"}, ["lns"] = {"Lamnso'"}, ["lnu"] = {"Longuda"}, ["lnw"] = {"Lanima"}, ["lnz"] = {"Lonzo"}, ["loa"] = {"Loloda"}, ["lob"] = {"Lobi"}, ["loc"] = {"Inonhan"}, ["loe"] = {"Saluan"}, ["lof"] = {"Logol"}, ["log"] = {"Logo"}, ["loh"] = {"Laarim", "Narim"}, ["loi"] = {"Loma (Côte d'Ivoire)"}, ["loj"] = {"Lou"}, ["lok"] = {"Loko"}, ["lol"] = {"Mongo"}, ["lom"] = {"Loma (Liberia)"}, ["lon"] = {"Malawi Lomwe"}, ["loo"] = {"Lombo"}, ["lop"] = {"Lopa"}, ["loq"] = {"Lobala"}, ["lor"] = {"Téén"}, ["los"] = {"Loniu"}, ["lot"] = {"Otuho"}, ["lou"] = {"Louisiana Creole"}, ["lov"] = {"Lopi"}, ["low"] = {"Tampias Lobu"}, ["lox"] = {"Loun"}, ["loy"] = {"Loke"}, ["loz"] = {"Lozi"}, ["lpa"] = {"Lelepa"}, ["lpe"] = {"Lepki"}, ["lpn"] = {"Long Phuri Naga"}, ["lpo"] = {"Lipo"}, ["lpx"] = {"Lopit"}, ["lqr"] = {"Logir"}, ["lra"] = {"Rara Bakati'"}, ["lrc"] = {"Northern Luri"}, ["lre"] = {"Laurentian"}, ["lrg"] = {"Laragia"}, ["lri"] = {"Marachi", "Olumarachi"}, ["lrk"] = {"Loarki"}, ["lrl"] = {"Lari"}, ["lrm"] = {"Marama", "Olumarama"}, ["lrn"] = {"Lorang"}, ["lro"] = {"Laro"}, ["lrr"] = {"Southern Yamphu"}, ["lrt"] = {"Larantuka Malay"}, ["lrv"] = {"Larevat"}, ["lrz"] = {"Lemerig"}, ["lsa"] = {"Lasgerdi"}, ["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"}, ["lsc"] = {"Albarradas Sign Language", "Lengua de señas Albarradas"}, ["lsd"] = {"Lishana Deni"}, ["lse"] = {"Lusengo"}, ["lsh"] = {"Lish"}, ["lsi"] = {"Lashi"}, ["lsl"] = {"Latvian Sign Language"}, ["lsm"] = {"Saamia", "Olusamia"}, ["lsn"] = {"Tibetan Sign Language"}, ["lso"] = {"Laos Sign Language"}, ["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"}, ["lsr"] = {"Aruop"}, ["lss"] = {"Lasi"}, ["lst"] = {"Trinidad and Tobago Sign Language"}, ["lsv"] = {"Sivia Sign Language"}, ["lsw"] = {"Seychelles Sign Language", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"}, ["lsy"] = {"Mauritian Sign Language"}, ["ltc"] = {"Late Middle Chinese"}, ["ltg"] = {"Latgalian"}, ["lth"] = {"Thur"}, ["lti"] = {"Leti (Indonesia)"}, ["ltn"] = {"Latundê"}, ["lto"] = {"Tsotso", "Olutsotso"}, ["lts"] = {"Tachoni", "Lutachoni"}, ["ltu"] = {"Latu"}, ["lua"] = {"Luba-Lulua"}, ["luc"] = {"Aringa"}, ["lud"] = {"Ludian"}, ["lue"] = {"Luvale"}, ["luf"] = {"Laua"}, ["lui"] = {"Luiseno"}, ["luj"] = {"Luna"}, ["luk"] = {"Lunanakha"}, ["lul"] = {"Olu'bo"}, ["lum"] = {"Luimbi"}, ["lun"] = {"Lunda"}, ["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"}, ["lup"] = {"Lumbu"}, ["luq"] = {"Lucumi"}, ["lur"] = {"Laura"}, ["lus"] = {"Lushai"}, ["lut"] = {"Lushootseed"}, ["luu"] = {"Lumba-Yakkha"}, ["luv"] = {"Luwati"}, ["luw"] = {"Luo (Cameroon)"}, ["luy"] = {"Luyia", "Oluluyia"}, ["luz"] = {"Southern Luri"}, ["lva"] = {"Maku'a"}, ["lvi"] = {"Lavi"}, ["lvk"] = {"Lavukaleve"}, ["lvl"] = {"Lwel"}, ["lvs"] = {"Standard Latvian"}, ["lvu"] = {"Levuka"}, ["lwa"] = {"Lwalu"}, ["lwe"] = {"Lewo Eleng"}, ["lwg"] = {"Wanga", "Oluwanga"}, ["lwh"] = {"White Lachi"}, ["lwl"] = {"Eastern Lawa"}, ["lwm"] = {"Laomian"}, ["lwo"] = {"Luwo"}, ["lws"] = {"Malawian Sign Language"}, ["lwt"] = {"Lewotobi"}, ["lwu"] = {"Lawu"}, ["lww"] = {"Lewo"}, ["lxm"] = {"Lakurumau"}, ["lya"] = {"Layakha"}, ["lyg"] = {"Lyngngam"}, ["lyn"] = {"Luyana"}, ["lzh"] = {"Literary Chinese"}, ["lzl"] = {"Litzlitz"}, ["lzn"] = {"Leinong Naga"}, ["lzz"] = {"Laz"}, ["maa"] = {"San Jerónimo Tecóatl Mazatec"}, ["mab"] = {"Yutanduchi Mixtec"}, ["mad"] = {"Madurese"}, ["mae"] = {"Bo-Rukul"}, ["maf"] = {"Mafa"}, ["mag"] = {"Magahi"}, ["mai"] = {"Maithili"}, ["maj"] = {"Jalapa De Díaz Mazatec"}, ["mak"] = {"Makasar"}, ["mam"] = {"Mam"}, ["man"] = {"Mandingo", "Manding"}, ["map"] = {"Austronesian languages"}, ["maq"] = {"Chiquihuitlán Mazatec"}, ["mas"] = {"Masai"}, ["mat"] = {"San Francisco Matlatzinca"}, ["mau"] = {"Huautla Mazatec"}, ["mav"] = {"Sateré-Mawé"}, ["maw"] = {"Mampruli"}, ["max"] = {"North Moluccan Malay"}, ["maz"] = {"Central Mazahua"}, ["mba"] = {"Higaonon"}, ["mbb"] = {"Western Bukidnon Manobo"}, ["mbc"] = {"Macushi"}, ["mbd"] = {"Dibabawon Manobo"}, ["mbe"] = {"Molale"}, ["mbf"] = {"Baba Malay"}, ["mbh"] = {"Mangseng"}, ["mbi"] = {"Ilianen Manobo"}, ["mbj"] = {"Nadëb"}, ["mbk"] = {"Malol"}, ["mbl"] = {"Maxakalí"}, ["mbm"] = {"Ombamba"}, ["mbn"] = {"Macaguán"}, ["mbo"] = {"Mbo (Cameroon)"}, ["mbp"] = {"Malayo"}, ["mbq"] = {"Maisin"}, ["mbr"] = {"Nukak Makú"}, ["mbs"] = {"Sarangani Manobo"}, ["mbt"] = {"Matigsalug Manobo"}, ["mbu"] = {"Mbula-Bwazza"}, ["mbv"] = {"Mbulungish"}, ["mbw"] = {"Maring"}, ["mbx"] = {"Mari (East Sepik Province)"}, ["mby"] = {"Memoni"}, ["mbz"] = {"Amoltepec Mixtec"}, ["mca"] = {"Maca"}, ["mcb"] = {"Machiguenga"}, ["mcc"] = {"Bitur"}, ["mcd"] = {"Sharanahua"}, ["mce"] = {"Itundujia Mixtec"}, ["mcf"] = {"Matsés"}, ["mcg"] = {"Mapoyo"}, ["mch"] = {"Maquiritari"}, ["mci"] = {"Mese"}, ["mcj"] = {"Mvanip"}, ["mck"] = {"Mbunda"}, ["mcl"] = {"Macaguaje"}, ["mcm"] = {"Malaccan Creole Portuguese"}, ["mcn"] = {"Masana"}, ["mco"] = {"Coatlán Mixe"}, ["mcp"] = {"Makaa"}, ["mcq"] = {"Ese"}, ["mcr"] = {"Menya"}, ["mcs"] = {"Mambai"}, ["mct"] = {"Mengisa"}, ["mcu"] = {"Cameroon Mambila"}, ["mcv"] = {"Minanibai"}, ["mcw"] = {"Mawa (Chad)"}, ["mcx"] = {"Mpiemo"}, ["mcy"] = {"South Watut"}, ["mcz"] = {"Mawan"}, ["mda"] = {"Mada (Nigeria)"}, ["mdb"] = {"Morigi"}, ["mdc"] = {"Male (Papua New Guinea)"}, ["mdd"] = {"Mbum"}, ["mde"] = {"Maba (Chad)"}, ["mdf"] = {"Moksha"}, ["mdg"] = {"Massalat"}, ["mdh"] = {"Maguindanaon"}, ["mdi"] = {"Mamvu"}, ["mdj"] = {"Mangbetu"}, ["mdk"] = {"Mangbutu"}, ["mdl"] = {"Maltese Sign Language"}, ["mdm"] = {"Mayogo"}, ["mdn"] = {"Mbati"}, ["mdp"] = {"Mbala"}, ["mdq"] = {"Mbole"}, ["mdr"] = {"Mandar"}, ["mds"] = {"Maria (Papua New Guinea)"}, ["mdt"] = {"Mbere"}, ["mdu"] = {"Mboko"}, ["mdv"] = {"Santa Lucía Monteverde Mixtec"}, ["mdw"] = {"Mbosi"}, ["mdx"] = {"Dizin"}, ["mdy"] = {"Male (Ethiopia)"}, ["mdz"] = {"Suruí Do Pará"}, ["mea"] = {"Menka"}, ["meb"] = {"Ikobi"}, ["mec"] = {"Marra"}, ["med"] = {"Melpa"}, ["mee"] = {"Mengen"}, ["mef"] = {"Megam"}, ["meh"] = {"Southwestern Tlaxiaco Mixtec"}, ["mei"] = {"Midob"}, ["mej"] = {"Meyah"}, ["mek"] = {"Mekeo"}, ["mel"] = {"Central Melanau"}, ["mem"] = {"Mangala"}, ["men"] = {"Mende (Sierra Leone)"}, ["meo"] = {"Kedah Malay"}, ["mep"] = {"Miriwoong"}, ["meq"] = {"Merey"}, ["mer"] = {"Meru"}, ["mes"] = {"Masmaje"}, ["met"] = {"Mato"}, ["meu"] = {"Motu"}, ["mev"] = {"Mano"}, ["mew"] = {"Maaka"}, ["mey"] = {"Hassaniyya"}, ["mez"] = {"Menominee"}, ["mfa"] = {"Pattani Malay"}, ["mfb"] = {"Bangka"}, ["mfc"] = {"Mba"}, ["mfd"] = {"Mendankwe-Nkwen"}, ["mfe"] = {"Morisyen"}, ["mff"] = {"Naki"}, ["mfg"] = {"Mogofin"}, ["mfh"] = {"Matal"}, ["mfi"] = {"Wandala"}, ["mfj"] = {"Mefele"}, ["mfk"] = {"North Mofu"}, ["mfl"] = {"Putai"}, ["mfm"] = {"Marghi South"}, ["mfn"] = {"Cross River Mbembe"}, ["mfo"] = {"Mbe"}, ["mfp"] = {"Makassar Malay"}, ["mfq"] = {"Moba"}, ["mfr"] = {"Marrithiyel"}, ["mfs"] = {"Mexican Sign Language"}, ["mft"] = {"Mokerang"}, ["mfu"] = {"Mbwela"}, ["mfv"] = {"Mandjak"}, ["mfw"] = {"Mulaha"}, ["mfx"] = {"Melo"}, ["mfy"] = {"Mayo"}, ["mfz"] = {"Mabaan"}, ["mga"] = {"Middle Irish (900-1200)"}, ["mgb"] = {"Mararit"}, ["mgc"] = {"Morokodo"}, ["mgd"] = {"Moru"}, ["mge"] = {"Mango"}, ["mgf"] = {"Maklew"}, ["mgg"] = {"Mpumpong"}, ["mgh"] = {"Makhuwa-Meetto"}, ["mgi"] = {"Lijili"}, ["mgj"] = {"Abureni"}, ["mgk"] = {"Mawes"}, ["mgl"] = {"Maleu-Kilenge"}, ["mgm"] = {"Mambae"}, ["mgn"] = {"Mbangi"}, ["mgo"] = {"Meta'"}, ["mgp"] = {"Eastern Magar"}, ["mgq"] = {"Malila"}, ["mgr"] = {"Mambwe-Lungu"}, ["mgs"] = {"Manda (Tanzania)"}, ["mgt"] = {"Mongol"}, ["mgu"] = {"Mailu"}, ["mgv"] = {"Matengo"}, ["mgw"] = {"Matumbi"}, ["mgy"] = {"Mbunga"}, ["mgz"] = {"Mbugwe"}, ["mha"] = {"Manda (India)"}, ["mhb"] = {"Mahongwe"}, ["mhc"] = {"Mocho"}, ["mhd"] = {"Mbugu"}, ["mhe"] = {"Besisi", "Mah Meri"}, ["mhf"] = {"Mamaa"}, ["mhg"] = {"Margu"}, ["mhi"] = {"Ma'di"}, ["mhj"] = {"Mogholi"}, ["mhk"] = {"Mungaka"}, ["mhl"] = {"Mauwake"}, ["mhm"] = {"Makhuwa-Moniga"}, ["mhn"] = {"Mócheno"}, ["mho"] = {"Mashi (Zambia)"}, ["mhp"] = {"Balinese Malay"}, ["mhq"] = {"Mandan"}, ["mhr"] = {"Eastern Mari"}, ["mhs"] = {"Buru (Indonesia)"}, ["mht"] = {"Mandahuaca"}, ["mhu"] = {"Digaro-Mishmi", "Darang Deng"}, ["mhw"] = {"Mbukushu"}, ["mhx"] = {"Maru", "Lhaovo"}, ["mhy"] = {"Ma'anyan"}, ["mhz"] = {"Mor (Mor Islands)"}, ["mia"] = {"Miami"}, ["mib"] = {"Atatláhuca Mixtec"}, ["mic"] = {"Mi'kmaq", "Micmac"}, ["mid"] = {"Mandaic"}, ["mie"] = {"Ocotepec Mixtec"}, ["mif"] = {"Mofu-Gudur"}, ["mig"] = {"San Miguel El Grande Mixtec"}, ["mih"] = {"Chayuco Mixtec"}, ["mii"] = {"Chigmecatitlán Mixtec"}, ["mij"] = {"Abar", "Mungbam"}, ["mik"] = {"Mikasuki"}, ["mil"] = {"Peñoles Mixtec"}, ["mim"] = {"Alacatlatzala Mixtec"}, ["min"] = {"Minangkabau"}, ["mio"] = {"Pinotepa Nacional Mixtec"}, ["mip"] = {"Apasco-Apoala Mixtec"}, ["miq"] = {"Mískito"}, ["mir"] = {"Isthmus Mixe"}, ["mis"] = {"Uncoded languages"}, ["mit"] = {"Southern Puebla Mixtec"}, ["miu"] = {"Cacaloxtepec Mixtec"}, ["miw"] = {"Akoye"}, ["mix"] = {"Mixtepec Mixtec"}, ["miy"] = {"Ayutla Mixtec"}, ["miz"] = {"Coatzospan Mixtec"}, ["mjb"] = {"Makalero"}, ["mjc"] = {"San Juan Colorado Mixtec"}, ["mjd"] = {"Northwest Maidu"}, ["mje"] = {"Muskum"}, ["mjg"] = {"Tu"}, ["mjh"] = {"Mwera (Nyasa)"}, ["mji"] = {"Kim Mun"}, ["mjj"] = {"Mawak"}, ["mjk"] = {"Matukar"}, ["mjl"] = {"Mandeali"}, ["mjm"] = {"Medebur"}, ["mjn"] = {"Ma (Papua New Guinea)"}, ["mjo"] = {"Malankuravan"}, ["mjp"] = {"Malapandaram"}, ["mjq"] = {"Malaryan"}, ["mjr"] = {"Malavedan"}, ["mjs"] = {"Miship"}, ["mjt"] = {"Sauria Paharia"}, ["mju"] = {"Manna-Dora"}, ["mjv"] = {"Mannan"}, ["mjw"] = {"Karbi"}, ["mjx"] = {"Mahali"}, ["mjy"] = {"Mahican"}, ["mjz"] = {"Majhi"}, ["mka"] = {"Mbre"}, ["mkb"] = {"Mal Paharia"}, ["mkc"] = {"Siliput"}, ["mke"] = {"Mawchi"}, ["mkf"] = {"Miya"}, ["mkg"] = {"Mak (China)"}, ["mkh"] = {"Mon-Khmer languages"}, ["mki"] = {"Dhatki"}, ["mkj"] = {"Mokilese"}, ["mkk"] = {"Byep"}, ["mkl"] = {"Mokole"}, ["mkm"] = {"Moklen"}, ["mkn"] = {"Kupang Malay"}, ["mko"] = {"Mingang Doso"}, ["mkp"] = {"Moikodi"}, ["mkq"] = {"Bay Miwok"}, ["mkr"] = {"Malas"}, ["mks"] = {"Silacayoapan Mixtec"}, ["mkt"] = {"Vamale"}, ["mku"] = {"Konyanka Maninka"}, ["mkv"] = {"Mafea"}, ["mkw"] = {"Kituba (Congo)"}, ["mkx"] = {"Kinamiging Manobo"}, ["mky"] = {"East Makian"}, ["mkz"] = {"Makasae"}, ["mla"] = {"Malo"}, ["mlb"] = {"Mbule"}, ["mlc"] = {"Cao Lan"}, ["mle"] = {"Manambu"}, ["mlf"] = {"Mal"}, ["mlh"] = {"Mape"}, ["mli"] = {"Malimpung"}, ["mlj"] = {"Miltu"}, ["mlk"] = {"Ilwana", "Kiwilwana"}, ["mll"] = {"Malua Bay"}, ["mlm"] = {"Mulam"}, ["mln"] = {"Malango"}, ["mlo"] = {"Mlomp"}, ["mlp"] = {"Bargam"}, ["mlq"] = {"Western Maninkakan"}, ["mlr"] = {"Vame"}, ["mls"] = {"Masalit"}, ["mlu"] = {"To'abaita"}, ["mlv"] = {"Motlav", "Mwotlap"}, ["mlw"] = {"Moloko"}, ["mlx"] = {"Malfaxal", "Naha'ai"}, ["mlz"] = {"Malaynon"}, ["mma"] = {"Mama"}, ["mmb"] = {"Momina"}, ["mmc"] = {"Michoacán Mazahua"}, ["mmd"] = {"Maonan"}, ["mme"] = {"Mae"}, ["mmf"] = {"Mundat"}, ["mmg"] = {"North Ambrym"}, ["mmh"] = {"Mehináku"}, ["mmi"] = {"Musar"}, ["mmj"] = {"Majhwar"}, ["mmk"] = {"Mukha-Dora"}, ["mml"] = {"Man Met"}, ["mmm"] = {"Maii"}, ["mmn"] = {"Mamanwa"}, ["mmo"] = {"Mangga Buang"}, ["mmp"] = {"Siawi"}, ["mmq"] = {"Musak"}, ["mmr"] = {"Western Xiangxi Miao"}, ["mmt"] = {"Malalamai"}, ["mmu"] = {"Mmaala"}, ["mmv"] = {"Miriti"}, ["mmw"] = {"Emae"}, ["mmx"] = {"Madak"}, ["mmy"] = {"Migaama"}, ["mmz"] = {"Mabaale"}, ["mna"] = {"Mbula"}, ["mnb"] = {"Muna"}, ["mnc"] = {"Manchu"}, ["mnd"] = {"Mondé"}, ["mne"] = {"Naba"}, ["mnf"] = {"Mundani"}, ["mng"] = {"Eastern Mnong"}, ["mnh"] = {"Mono (Democratic Republic of Congo)"}, ["mni"] = {"Manipuri"}, ["mnj"] = {"Munji"}, ["mnk"] = {"Mandinka"}, ["mnl"] = {"Tiale"}, ["mnm"] = {"Mapena"}, ["mnn"] = {"Southern Mnong"}, ["mno"] = {"Manobo languages"}, ["mnp"] = {"Min Bei Chinese"}, ["mnq"] = {"Minriq"}, ["mnr"] = {"Mono (USA)"}, ["mns"] = {"Mansi"}, ["mnu"] = {"Mer"}, ["mnv"] = {"Rennell-Bellona"}, ["mnw"] = {"Mon"}, ["mnx"] = {"Manikion"}, ["mny"] = {"Manyawa"}, ["mnz"] = {"Moni"}, ["moa"] = {"Mwan"}, ["moc"] = {"Mocoví"}, ["mod"] = {"Mobilian"}, ["moe"] = {"Innu", "Montagnais"}, ["mog"] = {"Mongondow"}, ["moh"] = {"Mohawk"}, ["moi"] = {"Mboi"}, ["moj"] = {"Monzombo"}, ["mok"] = {"Morori"}, ["mom"] = {"Mangue"}, ["moo"] = {"Monom"}, ["mop"] = {"Mopán Maya"}, ["moq"] = {"Mor (Bomberai Peninsula)"}, ["mor"] = {"Moro"}, ["mos"] = {"Mossi"}, ["mot"] = {"Barí"}, ["mou"] = {"Mogum"}, ["mov"] = {"Mohave"}, ["mow"] = {"Moi (Congo)"}, ["mox"] = {"Molima"}, ["moy"] = {"Shekkacho"}, ["moz"] = {"Mukulu", "Gergiko"}, ["mpa"] = {"Mpoto"}, ["mpb"] = {"Malak Malak", "Mullukmulluk"}, ["mpc"] = {"Mangarrayi"}, ["mpd"] = {"Machinere"}, ["mpe"] = {"Majang"}, ["mpg"] = {"Marba"}, ["mph"] = {"Maung"}, ["mpi"] = {"Mpade"}, ["mpj"] = {"Martu Wangka", "Wangkajunga"}, ["mpk"] = {"Mbara (Chad)"}, ["mpl"] = {"Middle Watut"}, ["mpm"] = {"Yosondúa Mixtec"}, ["mpn"] = {"Mindiri"}, ["mpo"] = {"Miu"}, ["mpp"] = {"Migabac"}, ["mpq"] = {"Matís"}, ["mpr"] = {"Vangunu"}, ["mps"] = {"Dadibi"}, ["mpt"] = {"Mian"}, ["mpu"] = {"Makuráp"}, ["mpv"] = {"Mungkip"}, ["mpw"] = {"Mapidian"}, ["mpx"] = {"Misima-Panaeati"}, ["mpy"] = {"Mapia"}, ["mpz"] = {"Mpi"}, ["mqa"] = {"Maba (Indonesia)"}, ["mqb"] = {"Mbuko"}, ["mqc"] = {"Mangole"}, ["mqe"] = {"Matepi"}, ["mqf"] = {"Momuna"}, ["mqg"] = {"Kota Bangun Kutai Malay"}, ["mqh"] = {"Tlazoyaltepec Mixtec"}, ["mqi"] = {"Mariri"}, ["mqj"] = {"Mamasa"}, ["mqk"] = {"Rajah Kabunsuwan Manobo"}, ["mql"] = {"Mbelime"}, ["mqm"] = {"South Marquesan"}, ["mqn"] = {"Moronene"}, ["mqo"] = {"Modole"}, ["mqp"] = {"Manipa"}, ["mqq"] = {"Minokok"}, ["mqr"] = {"Mander"}, ["mqs"] = {"West Makian"}, ["mqt"] = {"Mok"}, ["mqu"] = {"Mandari"}, ["mqv"] = {"Mosimo"}, ["mqw"] = {"Murupi"}, ["mqx"] = {"Mamuju"}, ["mqy"] = {"Manggarai"}, ["mqz"] = {"Pano"}, ["mra"] = {"Mlabri"}, ["mrb"] = {"Marino"}, ["mrc"] = {"Maricopa"}, ["mrd"] = {"Western Magar"}, ["mre"] = {"Martha's Vineyard Sign Language"}, ["mrf"] = {"Elseng"}, ["mrg"] = {"Mising"}, ["mrh"] = {"Mara Chin"}, ["mrj"] = {"Western Mari"}, ["mrk"] = {"Hmwaveke"}, ["mrl"] = {"Mortlockese"}, ["mrm"] = {"Merlav", "Mwerlap"}, ["mrn"] = {"Cheke Holo"}, ["mro"] = {"Mru"}, ["mrp"] = {"Morouas"}, ["mrq"] = {"North Marquesan"}, ["mrr"] = {"Maria (India)"}, ["mrs"] = {"Maragus"}, ["mrt"] = {"Marghi Central"}, ["mru"] = {"Mono (Cameroon)"}, ["mrv"] = {"Mangareva"}, ["mrw"] = {"Maranao"}, ["mrx"] = {"Maremgi", "Dineor"}, ["mry"] = {"Mandaya"}, ["mrz"] = {"Marind"}, ["msb"] = {"Masbatenyo"}, ["msc"] = {"Sankaran Maninka"}, ["msd"] = {"Yucatec Maya Sign Language"}, ["mse"] = {"Musey"}, ["msf"] = {"Mekwei"}, ["msg"] = {"Moraid"}, ["msh"] = {"Masikoro Malagasy"}, ["msi"] = {"Sabah Malay"}, ["msj"] = {"Ma (Democratic Republic of Congo)"}, ["msk"] = {"Mansaka"}, ["msl"] = {"Molof", "Poule"}, ["msm"] = {"Agusan Manobo"}, ["msn"] = {"Vurës"}, ["mso"] = {"Mombum"}, ["msp"] = {"Maritsauá"}, ["msq"] = {"Caac"}, ["msr"] = {"Mongolian Sign Language"}, ["mss"] = {"West Masela"}, ["msu"] = {"Musom"}, ["msv"] = {"Maslam"}, ["msw"] = {"Mansoanka"}, ["msx"] = {"Moresada"}, ["msy"] = {"Aruamu"}, ["msz"] = {"Momare"}, ["mta"] = {"Cotabato Manobo"}, ["mtb"] = {"Anyin Morofo"}, ["mtc"] = {"Munit"}, ["mtd"] = {"Mualang"}, ["mte"] = {"Mono (Solomon Islands)"}, ["mtf"] = {"Murik (Papua New Guinea)"}, ["mtg"] = {"Una"}, ["mth"] = {"Munggui"}, ["mti"] = {"Maiwa (Papua New Guinea)"}, ["mtj"] = {"Moskona"}, ["mtk"] = {"Mbe'"}, ["mtl"] = {"Montol"}, ["mtm"] = {"Mator"}, ["mtn"] = {"Matagalpa"}, ["mto"] = {"Totontepec Mixe"}, ["mtp"] = {"Wichí Lhamtés Nocten"}, ["mtq"] = {"Muong"}, ["mtr"] = {"Mewari"}, ["mts"] = {"Yora"}, ["mtt"] = {"Mota"}, ["mtu"] = {"Tututepec Mixtec"}, ["mtv"] = {"Asaro'o"}, ["mtw"] = {"Southern Binukidnon"}, ["mtx"] = {"Tidaá Mixtec"}, ["mty"] = {"Nabi"}, ["mua"] = {"Mundang"}, ["mub"] = {"Mubi"}, ["muc"] = {"Ajumbu"}, ["mud"] = {"Mednyj Aleut"}, ["mue"] = {"Media Lengua"}, ["mug"] = {"Musgu"}, ["muh"] = {"Mündü"}, ["mui"] = {"Musi"}, ["muj"] = {"Mabire"}, ["muk"] = {"Mugom"}, ["mul"] = {"Multiple languages"}, ["mum"] = {"Maiwala"}, ["mun"] = {"Munda languages"}, ["muo"] = {"Nyong"}, ["mup"] = {"Malvi"}, ["muq"] = {"Eastern Xiangxi Miao"}, ["mur"] = {"Murle"}, ["mus"] = {"Creek"}, ["mut"] = {"Western Muria"}, ["muu"] = {"Yaaku"}, ["muv"] = {"Muthuvan"}, ["mux"] = {"Bo-Ung"}, ["muy"] = {"Muyang"}, ["muz"] = {"Mursi"}, ["mva"] = {"Manam"}, ["mvb"] = {"Mattole"}, ["mvd"] = {"Mamboru"}, ["mve"] = {"Marwari (Pakistan)"}, ["mvf"] = {"Peripheral Mongolian"}, ["mvg"] = {"Yucuañe Mixtec"}, ["mvh"] = {"Mulgi"}, ["mvi"] = {"Miyako"}, ["mvk"] = {"Mekmek"}, ["mvl"] = {"Mbara (Australia)"}, ["mvn"] = {"Minaveha"}, ["mvo"] = {"Marovo"}, ["mvp"] = {"Duri"}, ["mvq"] = {"Moere"}, ["mvr"] = {"Marau"}, ["mvs"] = {"Massep"}, ["mvt"] = {"Mpotovoro"}, ["mvu"] = {"Marfa"}, ["mvv"] = {"Tagal Murut"}, ["mvw"] = {"Machinga"}, ["mvx"] = {"Meoswar"}, ["mvy"] = {"Indus Kohistani"}, ["mvz"] = {"Mesqan"}, ["mwa"] = {"Mwatebu"}, ["mwb"] = {"Juwal"}, ["mwc"] = {"Are"}, ["mwe"] = {"Mwera (Chimwera)"}, ["mwf"] = {"Murrinh-Patha"}, ["mwg"] = {"Aiklep"}, ["mwh"] = {"Mouk-Aria"}, ["mwi"] = {"Labo", "Ninde"}, ["mwk"] = {"Kita Maninkakan"}, ["mwl"] = {"Mirandese"}, ["mwm"] = {"Sar"}, ["mwn"] = {"Nyamwanga"}, ["mwo"] = {"Central Maewo"}, ["mwp"] = {"Kala Lagaw Ya"}, ["mwq"] = {"Mün Chin"}, ["mwr"] = {"Marwari"}, ["mws"] = {"Mwimbi-Muthambi"}, ["mwt"] = {"Moken"}, ["mwu"] = {"Mittu"}, ["mwv"] = {"Mentawai"}, ["mww"] = {"Hmong Daw"}, ["mwz"] = {"Moingi"}, ["mxa"] = {"Northwest Oaxaca Mixtec"}, ["mxb"] = {"Tezoatlán Mixtec"}, ["mxc"] = {"Manyika"}, ["mxd"] = {"Modang"}, ["mxe"] = {"Mele-Fila"}, ["mxf"] = {"Malgbe"}, ["mxg"] = {"Mbangala"}, ["mxh"] = {"Mvuba"}, ["mxi"] = {"Mozarabic"}, ["mxj"] = {"Miju-Mishmi", "Geman Deng"}, ["mxk"] = {"Monumbo"}, ["mxl"] = {"Maxi Gbe"}, ["mxm"] = {"Meramera"}, ["mxn"] = {"Moi (Indonesia)"}, ["mxo"] = {"Mbowe"}, ["mxp"] = {"Tlahuitoltepec Mixe"}, ["mxq"] = {"Juquila Mixe"}, ["mxr"] = {"Murik (Malaysia)"}, ["mxs"] = {"Huitepec Mixtec"}, ["mxt"] = {"Jamiltepec Mixtec"}, ["mxu"] = {"Mada (Cameroon)"}, ["mxv"] = {"Metlatónoc Mixtec"}, ["mxw"] = {"Namo"}, ["mxx"] = {"Mahou", "Mawukakan"}, ["mxy"] = {"Southeastern Nochixtlán Mixtec"}, ["mxz"] = {"Central Masela"}, ["myb"] = {"Mbay"}, ["myc"] = {"Mayeka"}, ["mye"] = {"Myene"}, ["myf"] = {"Bambassi"}, ["myg"] = {"Manta"}, ["myh"] = {"Makah"}, ["myj"] = {"Mangayat"}, ["myk"] = {"Mamara Senoufo"}, ["myl"] = {"Moma"}, ["mym"] = {"Me'en"}, ["myn"] = {"Mayan languages"}, ["myo"] = {"Anfillo"}, ["myp"] = {"Pirahã"}, ["myr"] = {"Muniche"}, ["mys"] = {"Mesmes"}, ["myu"] = {"Mundurukú"}, ["myv"] = {"Erzya"}, ["myw"] = {"Muyuw"}, ["myx"] = {"Masaaba"}, ["myy"] = {"Macuna"}, ["myz"] = {"Classical Mandaic"}, ["mza"] = {"Santa María Zacatepec Mixtec"}, ["mzb"] = {"Tumzabt"}, ["mzc"] = {"Madagascar Sign Language"}, ["mzd"] = {"Malimba"}, ["mze"] = {"Morawa"}, ["mzg"] = {"Monastic Sign Language"}, ["mzh"] = {"Wichí Lhamtés Güisnay"}, ["mzi"] = {"Ixcatlán Mazatec"}, ["mzj"] = {"Manya"}, ["mzk"] = {"Nigeria Mambila"}, ["mzl"] = {"Mazatlán Mixe"}, ["mzm"] = {"Mumuye"}, ["mzn"] = {"Mazanderani"}, ["mzo"] = {"Matipuhy"}, ["mzp"] = {"Movima"}, ["mzq"] = {"Mori Atas"}, ["mzr"] = {"Marúbo"}, ["mzs"] = {"Macanese"}, ["mzt"] = {"Mintil"}, ["mzu"] = {"Inapang"}, ["mzv"] = {"Manza"}, ["mzw"] = {"Deg"}, ["mzx"] = {"Mawayana"}, ["mzy"] = {"Mozambican Sign Language"}, ["mzz"] = {"Maiadomu"}, ["naa"] = {"Namla"}, ["nab"] = {"Southern Nambikuára"}, ["nac"] = {"Narak"}, ["nae"] = {"Naka'ela"}, ["naf"] = {"Nabak"}, ["nag"] = {"Naga Pidgin"}, ["nah"] = {"Nahuatl languages"}, ["nai"] = {"North American Indian languages"}, ["naj"] = {"Nalu"}, ["nak"] = {"Nakanai"}, ["nal"] = {"Nalik"}, ["nam"] = {"Ngan'gityemerri"}, ["nan"] = {"Min Nan Chinese"}, ["nao"] = {"Naaba"}, ["nap"] = {"Neapolitan"}, ["naq"] = {"Khoekhoe", "Nama (Namibia)"}, ["nar"] = {"Iguta"}, ["nas"] = {"Naasioi"}, ["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"}, ["naw"] = {"Nawuri"}, ["nax"] = {"Nakwi"}, ["nay"] = {"Ngarrindjeri"}, ["naz"] = {"Coatepec Nahuatl"}, ["nba"] = {"Nyemba"}, ["nbb"] = {"Ndoe"}, ["nbc"] = {"Chang Naga"}, ["nbd"] = {"Ngbinda"}, ["nbe"] = {"Konyak Naga"}, ["nbg"] = {"Nagarchal"}, ["nbh"] = {"Ngamo"}, ["nbi"] = {"Mao Naga"}, ["nbj"] = {"Ngarinyman"}, ["nbk"] = {"Nake"}, ["nbm"] = {"Ngbaka Ma'bo"}, ["nbn"] = {"Kuri"}, ["nbo"] = {"Nkukoli"}, ["nbp"] = {"Nnam"}, ["nbq"] = {"Nggem"}, ["nbr"] = {"Numana"}, ["nbs"] = {"Namibian Sign Language"}, ["nbt"] = {"Na"}, ["nbu"] = {"Rongmei Naga"}, ["nbv"] = {"Ngamambo"}, ["nbw"] = {"Southern Ngbandi"}, ["nby"] = {"Ningera"}, ["nca"] = {"Iyo"}, ["ncb"] = {"Central Nicobarese"}, ["ncc"] = {"Ponam"}, ["ncd"] = {"Nachering"}, ["nce"] = {"Yale"}, ["ncf"] = {"Notsi"}, ["ncg"] = {"Nisga'a"}, ["nch"] = {"Central Huasteca Nahuatl"}, ["nci"] = {"Classical Nahuatl"}, ["ncj"] = {"Northern Puebla Nahuatl"}, ["nck"] = {"Na-kara"}, ["ncl"] = {"Michoacán Nahuatl"}, ["ncm"] = {"Nambo"}, ["ncn"] = {"Nauna"}, ["nco"] = {"Sibe"}, ["ncq"] = {"Northern Katang"}, ["ncr"] = {"Ncane"}, ["ncs"] = {"Nicaraguan Sign Language"}, ["nct"] = {"Chothe Naga"}, ["ncu"] = {"Chumburung"}, ["ncx"] = {"Central Puebla Nahuatl"}, ["ncz"] = {"Natchez"}, ["nda"] = {"Ndasa"}, ["ndb"] = {"Kenswei Nsei"}, ["ndc"] = {"Ndau"}, ["ndd"] = {"Nde-Nsele-Nta"}, ["ndf"] = {"Nadruvian"}, ["ndg"] = {"Ndengereko"}, ["ndh"] = {"Ndali"}, ["ndi"] = {"Samba Leko"}, ["ndj"] = {"Ndamba"}, ["ndk"] = {"Ndaka"}, ["ndl"] = {"Ndolo"}, ["ndm"] = {"Ndam"}, ["ndn"] = {"Ngundi"}, ["ndp"] = {"Ndo"}, ["ndq"] = {"Ndombe"}, ["ndr"] = {"Ndoola"}, ["nds"] = {"Low German", "Low Saxon"}, ["ndt"] = {"Ndunga"}, ["ndu"] = {"Dugun"}, ["ndv"] = {"Ndut"}, ["ndw"] = {"Ndobo"}, ["ndx"] = {"Nduga"}, ["ndy"] = {"Lutos"}, ["ndz"] = {"Ndogo"}, ["nea"] = {"Eastern Ngad'a"}, ["neb"] = {"Toura (Côte d'Ivoire)"}, ["nec"] = {"Nedebang"}, ["ned"] = {"Nde-Gbite"}, ["nee"] = {"Nêlêmwa-Nixumwak"}, ["nef"] = {"Nefamese"}, ["neg"] = {"Negidal"}, ["neh"] = {"Nyenkha"}, ["nei"] = {"Neo-Hittite"}, ["nej"] = {"Neko"}, ["nek"] = {"Neku"}, ["nem"] = {"Nemi"}, ["nen"] = {"Nengone"}, ["neo"] = {"Ná-Meo"}, ["neq"] = {"North Central Mixe"}, ["ner"] = {"Yahadian"}, ["nes"] = {"Bhoti Kinnauri"}, ["net"] = {"Nete"}, ["neu"] = {"Neo"}, ["nev"] = {"Nyaheun"}, ["new"] = {"Newari", "Nepal Bhasa"}, ["nex"] = {"Neme"}, ["ney"] = {"Neyo"}, ["nez"] = {"Nez Perce"}, ["nfa"] = {"Dhao"}, ["nfd"] = {"Ahwai"}, ["nfl"] = {"Ayiwo", "Äiwoo"}, ["nfr"] = {"Nafaanra"}, ["nfu"] = {"Mfumte"}, ["nga"] = {"Ngbaka"}, ["ngb"] = {"Northern Ngbandi"}, ["ngc"] = {"Ngombe (Democratic Republic of Congo)"}, ["ngd"] = {"Ngando (Central African Republic)"}, ["nge"] = {"Ngemba"}, ["ngf"] = {"Trans-New Guinea languages"}, ["ngg"] = {"Ngbaka Manza"}, ["ngh"] = {"Nǁng"}, ["ngi"] = {"Ngizim"}, ["ngj"] = {"Ngie"}, ["ngk"] = {"Dalabon"}, ["ngl"] = {"Lomwe"}, ["ngm"] = {"Ngatik Men's Creole"}, ["ngn"] = {"Ngwo"}, ["ngp"] = {"Ngulu"}, ["ngq"] = {"Ngurimi", "Ngoreme"}, ["ngr"] = {"Engdewu"}, ["ngs"] = {"Gvoko"}, ["ngt"] = {"Kriang", "Ngeq"}, ["ngu"] = {"Guerrero Nahuatl"}, ["ngv"] = {"Nagumi"}, ["ngw"] = {"Ngwaba"}, ["ngx"] = {"Nggwahyi"}, ["ngy"] = {"Tibea"}, ["ngz"] = {"Ngungwel"}, ["nha"] = {"Nhanda"}, ["nhb"] = {"Beng"}, ["nhc"] = {"Tabasco Nahuatl"}, ["nhd"] = {"Chiripá", "Ava Guaraní"}, ["nhe"] = {"Eastern Huasteca Nahuatl"}, ["nhf"] = {"Nhuwala"}, ["nhg"] = {"Tetelcingo Nahuatl"}, ["nhh"] = {"Nahari"}, ["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"}, ["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"}, ["nhm"] = {"Morelos Nahuatl"}, ["nhn"] = {"Central Nahuatl"}, ["nho"] = {"Takuu"}, ["nhp"] = {"Isthmus-Pajapan Nahuatl"}, ["nhq"] = {"Huaxcaleca Nahuatl"}, ["nhr"] = {"Naro"}, ["nht"] = {"Ometepec Nahuatl"}, ["nhu"] = {"Noone"}, ["nhv"] = {"Temascaltepec Nahuatl"}, ["nhw"] = {"Western Huasteca Nahuatl"}, ["nhx"] = {"Isthmus-Mecayapan Nahuatl"}, ["nhy"] = {"Northern Oaxaca Nahuatl"}, ["nhz"] = {"Santa María La Alta Nahuatl"}, ["nia"] = {"Nias"}, ["nib"] = {"Nakame"}, ["nic"] = {"Niger-Kordofanian languages"}, ["nid"] = {"Ngandi"}, ["nie"] = {"Niellim"}, ["nif"] = {"Nek"}, ["nig"] = {"Ngalakgan"}, ["nih"] = {"Nyiha (Tanzania)"}, ["nii"] = {"Nii"}, ["nij"] = {"Ngaju"}, ["nik"] = {"Southern Nicobarese"}, ["nil"] = {"Nila"}, ["nim"] = {"Nilamba"}, ["nin"] = {"Ninzo"}, ["nio"] = {"Nganasan"}, ["niq"] = {"Nandi"}, ["nir"] = {"Nimboran"}, ["nis"] = {"Nimi"}, ["nit"] = {"Southeastern Kolami"}, ["niu"] = {"Niuean"}, ["niv"] = {"Gilyak"}, ["niw"] = {"Nimo"}, ["nix"] = {"Hema"}, ["niy"] = {"Ngiti"}, ["niz"] = {"Ningil"}, ["nja"] = {"Nzanyi"}, ["njb"] = {"Nocte Naga"}, ["njd"] = {"Ndonde Hamba"}, ["njh"] = {"Lotha Naga"}, ["nji"] = {"Gudanji"}, ["njj"] = {"Njen"}, ["njl"] = {"Njalgulgule"}, ["njm"] = {"Angami Naga"}, ["njn"] = {"Liangmai Naga"}, ["njo"] = {"Ao Naga"}, ["njr"] = {"Njerep"}, ["njs"] = {"Nisa"}, ["njt"] = {"Ndyuka-Trio Pidgin"}, ["nju"] = {"Ngadjunmaya"}, ["njx"] = {"Kunyi"}, ["njy"] = {"Njyem"}, ["njz"] = {"Nyishi"}, ["nka"] = {"Nkoya"}, ["nkb"] = {"Khoibu Naga"}, ["nkc"] = {"Nkongho"}, ["nkd"] = {"Koireng"}, ["nke"] = {"Duke"}, ["nkf"] = {"Inpui Naga"}, ["nkg"] = {"Nekgini"}, ["nkh"] = {"Khezha Naga"}, ["nki"] = {"Thangal Naga"}, ["nkj"] = {"Nakai"}, ["nkk"] = {"Nokuku"}, ["nkm"] = {"Namat"}, ["nkn"] = {"Nkangala"}, ["nko"] = {"Nkonya"}, ["nkp"] = {"Niuatoputapu"}, ["nkq"] = {"Nkami"}, ["nkr"] = {"Nukuoro"}, ["nks"] = {"North Asmat"}, ["nkt"] = {"Nyika (Tanzania)"}, ["nku"] = {"Bouna Kulango"}, ["nkv"] = {"Nyika (Malawi and Zambia)"}, ["nkw"] = {"Nkutu"}, ["nkx"] = {"Nkoroo"}, ["nkz"] = {"Nkari"}, ["nla"] = {"Ngombale"}, ["nlc"] = {"Nalca"}, ["nle"] = {"East Nyala"}, ["nlg"] = {"Gela"}, ["nli"] = {"Grangali"}, ["nlj"] = {"Nyali"}, ["nlk"] = {"Ninia Yali"}, ["nll"] = {"Nihali"}, ["nlm"] = {"Mankiyali"}, ["nlo"] = {"Ngul"}, ["nlq"] = {"Lao Naga"}, ["nlu"] = {"Nchumbulu"}, ["nlv"] = {"Orizaba Nahuatl"}, ["nlw"] = {"Walangama"}, ["nlx"] = {"Nahali"}, ["nly"] = {"Nyamal"}, ["nlz"] = {"Nalögo"}, ["nma"] = {"Maram Naga"}, ["nmb"] = {"Big Nambas", "V'ënen Taut"}, ["nmc"] = {"Ngam"}, ["nmd"] = {"Ndumu"}, ["nme"] = {"Mzieme Naga"}, ["nmf"] = {"Tangkhul Naga (India)"}, ["nmg"] = {"Kwasio"}, ["nmh"] = {"Monsang Naga"}, ["nmi"] = {"Nyam"}, ["nmj"] = {"Ngombe (Central African Republic)"}, ["nmk"] = {"Namakura"}, ["nml"] = {"Ndemli"}, ["nmm"] = {"Manangba"}, ["nmn"] = {"ǃXóõ"}, ["nmo"] = {"Moyon Naga"}, ["nmp"] = {"Nimanbur"}, ["nmq"] = {"Nambya"}, ["nmr"] = {"Nimbari"}, ["nms"] = {"Letemboi"}, ["nmt"] = {"Namonuito"}, ["nmu"] = {"Northeast Maidu"}, ["nmv"] = {"Ngamini"}, ["nmw"] = {"Nimoa", "Rifao"}, ["nmx"] = {"Nama (Papua New Guinea)"}, ["nmy"] = {"Namuyi"}, ["nmz"] = {"Nawdm"}, ["nna"] = {"Nyangumarta"}, ["nnb"] = {"Nande"}, ["nnc"] = {"Nancere"}, ["nnd"] = {"West Ambae"}, ["nne"] = {"Ngandyera"}, ["nnf"] = {"Ngaing"}, ["nng"] = {"Maring Naga"}, ["nnh"] = {"Ngiemboon"}, ["nni"] = {"North Nuaulu"}, ["nnj"] = {"Nyangatom"}, ["nnk"] = {"Nankina"}, ["nnl"] = {"Northern Rengma Naga"}, ["nnm"] = {"Namia"}, ["nnn"] = {"Ngete"}, ["nnp"] = {"Wancho Naga"}, ["nnq"] = {"Ngindo"}, ["nnr"] = {"Narungga"}, ["nnt"] = {"Nanticoke"}, ["nnu"] = {"Dwang"}, ["nnv"] = {"Nugunu (Australia)"}, ["nnw"] = {"Southern Nuni"}, ["nny"] = {"Nyangga"}, ["nnz"] = {"Nda'nda'"}, ["noa"] = {"Woun Meu"}, ["noc"] = {"Nuk"}, ["nod"] = {"Northern Thai"}, ["noe"] = {"Nimadi"}, ["nof"] = {"Nomane"}, ["nog"] = {"Nogai"}, ["noh"] = {"Nomu"}, ["noi"] = {"Noiri"}, ["noj"] = {"Nonuya"}, ["nok"] = {"Nooksack"}, ["nol"] = {"Nomlaki"}, ["non"] = {"Old Norse"}, ["nop"] = {"Numanggang"}, ["noq"] = {"Ngongo"}, ["nos"] = {"Eastern Nisu"}, ["not"] = {"Nomatsiguenga"}, ["nou"] = {"Ewage-Notu"}, ["nov"] = {"Novial"}, ["now"] = {"Nyambo"}, ["noy"] = {"Noy"}, ["noz"] = {"Nayi"}, ["npa"] = {"Nar Phu"}, ["npb"] = {"Nupbikha"}, ["npg"] = {"Ponyo-Gongwang Naga"}, ["nph"] = {"Phom Naga"}, ["npi"] = {"Nepali (individual language)"}, ["npl"] = {"Southeastern Puebla Nahuatl"}, ["npn"] = {"Mondropolon"}, ["npo"] = {"Pochuri Naga"}, ["nps"] = {"Nipsan"}, ["npu"] = {"Puimei Naga"}, ["npx"] = {"Noipx"}, ["npy"] = {"Napu"}, ["nqg"] = {"Southern Nago"}, ["nqk"] = {"Kura Ede Nago"}, ["nql"] = {"Ngendelengo"}, ["nqm"] = {"Ndom"}, ["nqn"] = {"Nen"}, ["nqo"] = {"N'Ko", "N’Ko"}, ["nqq"] = {"Kyan-Karyaw Naga"}, ["nqt"] = {"Nteng"}, ["nqy"] = {"Akyaung Ari Naga"}, ["nra"] = {"Ngom"}, ["nrb"] = {"Nara"}, ["nrc"] = {"Noric"}, ["nre"] = {"Southern Rengma Naga"}, ["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"}, ["nrg"] = {"Narango"}, ["nri"] = {"Chokri Naga"}, ["nrk"] = {"Ngarla"}, ["nrl"] = {"Ngarluma"}, ["nrm"] = {"Narom"}, ["nrn"] = {"Norn"}, ["nrp"] = {"North Picene"}, ["nrr"] = {"Norra", "Nora"}, ["nrt"] = {"Northern Kalapuya"}, ["nru"] = {"Narua"}, ["nrx"] = {"Ngurmbur"}, ["nrz"] = {"Lala"}, ["nsa"] = {"Sangtam Naga"}, ["nsb"] = {"Lower Nossob"}, ["nsc"] = {"Nshi"}, ["nsd"] = {"Southern Nisu"}, ["nse"] = {"Nsenga"}, ["nsf"] = {"Northwestern Nisu"}, ["nsg"] = {"Ngasa"}, ["nsh"] = {"Ngoshie"}, ["nsi"] = {"Nigerian Sign Language"}, ["nsk"] = {"Naskapi"}, ["nsl"] = {"Norwegian Sign Language"}, ["nsm"] = {"Sumi Naga"}, ["nsn"] = {"Nehan"}, ["nso"] = {"Pedi", "Northern Sotho", "Sepedi"}, ["nsp"] = {"Nepalese Sign Language"}, ["nsq"] = {"Northern Sierra Miwok"}, ["nsr"] = {"Maritime Sign Language"}, ["nss"] = {"Nali"}, ["nst"] = {"Tase Naga"}, ["nsu"] = {"Sierra Negra Nahuatl"}, ["nsv"] = {"Southwestern Nisu"}, ["nsw"] = {"Navut"}, ["nsx"] = {"Nsongo"}, ["nsy"] = {"Nasal"}, ["nsz"] = {"Nisenan"}, ["ntd"] = {"Northern Tidung"}, ["nte"] = {"Nathembo"}, ["ntg"] = {"Ngantangarra"}, ["nti"] = {"Natioro"}, ["ntj"] = {"Ngaanyatjarra"}, ["ntk"] = {"Ikoma-Nata-Isenye"}, ["ntm"] = {"Nateni"}, ["nto"] = {"Ntomba"}, ["ntp"] = {"Northern Tepehuan"}, ["ntr"] = {"Delo"}, ["ntu"] = {"Natügu"}, ["ntw"] = {"Nottoway"}, ["ntx"] = {"Tangkhul Naga (Myanmar)"}, ["nty"] = {"Mantsi"}, ["ntz"] = {"Natanzi"}, ["nua"] = {"Yuanga"}, ["nub"] = {"Nubian languages"}, ["nuc"] = {"Nukuini"}, ["nud"] = {"Ngala"}, ["nue"] = {"Ngundu"}, ["nuf"] = {"Nusu"}, ["nug"] = {"Nungali"}, ["nuh"] = {"Ndunda"}, ["nui"] = {"Ngumbi"}, ["nuj"] = {"Nyole"}, ["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"}, ["nul"] = {"Nusa Laut"}, ["num"] = {"Niuafo'ou"}, ["nun"] = {"Anong"}, ["nuo"] = {"Nguôn"}, ["nup"] = {"Nupe-Nupe-Tako"}, ["nuq"] = {"Nukumanu"}, ["nur"] = {"Nukuria"}, ["nus"] = {"Nuer"}, ["nut"] = {"Nung (Viet Nam)"}, ["nuu"] = {"Ngbundu"}, ["nuv"] = {"Northern Nuni"}, ["nuw"] = {"Nguluwan"}, ["nux"] = {"Mehek"}, ["nuy"] = {"Nunggubuyu"}, ["nuz"] = {"Tlamacazapa Nahuatl"}, ["nvh"] = {"Nasarian"}, ["nvm"] = {"Namiae"}, ["nvo"] = {"Nyokon"}, ["nwa"] = {"Nawathinehena"}, ["nwb"] = {"Nyabwa"}, ["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"}, ["nwe"] = {"Ngwe"}, ["nwg"] = {"Ngayawung"}, ["nwi"] = {"Southwest Tanna"}, ["nwm"] = {"Nyamusa-Molo"}, ["nwo"] = {"Nauo"}, ["nwr"] = {"Nawaru"}, ["nww"] = {"Ndwewe"}, ["nwx"] = {"Middle Newar"}, ["nwy"] = {"Nottoway-Meherrin"}, ["nxa"] = {"Nauete"}, ["nxd"] = {"Ngando (Democratic Republic of Congo)"}, ["nxe"] = {"Nage"}, ["nxg"] = {"Ngad'a"}, ["nxi"] = {"Nindi"}, ["nxk"] = {"Koki Naga"}, ["nxl"] = {"South Nuaulu"}, ["nxm"] = {"Numidian"}, ["nxn"] = {"Ngawun"}, ["nxo"] = {"Ndambomo"}, ["nxq"] = {"Naxi"}, ["nxr"] = {"Ninggerum"}, ["nxx"] = {"Nafri"}, ["nyb"] = {"Nyangbo"}, ["nyc"] = {"Nyanga-li"}, ["nyd"] = {"Nyore", "Olunyole"}, ["nye"] = {"Nyengo"}, ["nyf"] = {"Giryama", "Kigiryama"}, ["nyg"] = {"Nyindu"}, ["nyh"] = {"Nyikina"}, ["nyi"] = {"Ama (Sudan)"}, ["nyj"] = {"Nyanga"}, ["nyk"] = {"Nyaneka"}, ["nyl"] = {"Nyeu"}, ["nym"] = {"Nyamwezi"}, ["nyn"] = {"Nyankole"}, ["nyo"] = {"Nyoro"}, ["nyp"] = {"Nyang'i"}, ["nyq"] = {"Nayini"}, ["nyr"] = {"Nyiha (Malawi)"}, ["nys"] = {"Nyungar"}, ["nyt"] = {"Nyawaygi"}, ["nyu"] = {"Nyungwe"}, ["nyv"] = {"Nyulnyul"}, ["nyw"] = {"Nyaw"}, ["nyx"] = {"Nganyaywana"}, ["nyy"] = {"Nyakyusa-Ngonde"}, ["nza"] = {"Tigon Mbembe"}, ["nzb"] = {"Njebi"}, ["nzd"] = {"Nzadi"}, ["nzi"] = {"Nzima"}, ["nzk"] = {"Nzakara"}, ["nzm"] = {"Zeme Naga"}, ["nzr"] = {"Dir-Nyamzak-Mbarimi"}, ["nzs"] = {"New Zealand Sign Language"}, ["nzu"] = {"Teke-Nzikou"}, ["nzy"] = {"Nzakambay"}, ["nzz"] = {"Nanga Dama Dogon"}, ["oaa"] = {"Orok"}, ["oac"] = {"Oroch"}, ["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"}, ["oav"] = {"Old Avar"}, ["obi"] = {"Obispeño"}, ["obk"] = {"Southern Bontok"}, ["obl"] = {"Oblo"}, ["obm"] = {"Moabite"}, ["obo"] = {"Obo Manobo"}, ["obr"] = {"Old Burmese"}, ["obt"] = {"Old Breton"}, ["obu"] = {"Obulom"}, ["oca"] = {"Ocaina"}, ["och"] = {"Old Chinese"}, ["ocm"] = {"Old Cham"}, ["oco"] = {"Old Cornish"}, ["ocu"] = {"Atzingo Matlatzinca"}, ["oda"] = {"Odut"}, ["odk"] = {"Od"}, ["odt"] = {"Old Dutch"}, ["odu"] = {"Odual"}, ["ofo"] = {"Ofo"}, ["ofs"] = {"Old Frisian"}, ["ofu"] = {"Efutop"}, ["ogb"] = {"Ogbia"}, ["ogc"] = {"Ogbah"}, ["oge"] = {"Old Georgian"}, ["ogg"] = {"Ogbogolo"}, ["ogo"] = {"Khana"}, ["ogu"] = {"Ogbronuagum"}, ["oht"] = {"Old Hittite"}, ["ohu"] = {"Old Hungarian"}, ["oia"] = {"Oirata"}, ["oie"] = {"Okolie"}, ["oin"] = {"Inebu One"}, ["ojb"] = {"Northwestern Ojibwa"}, ["ojc"] = {"Central Ojibwa"}, ["ojg"] = {"Eastern Ojibwa"}, ["ojp"] = {"Old Japanese"}, ["ojs"] = {"Severn Ojibwa"}, ["ojv"] = {"Ontong Java"}, ["ojw"] = {"Western Ojibwa"}, ["oka"] = {"Okanagan"}, ["okb"] = {"Okobo"}, ["okc"] = {"Kobo"}, ["okd"] = {"Okodia"}, ["oke"] = {"Okpe (Southwestern Edo)"}, ["okg"] = {"Koko Babangk"}, ["okh"] = {"Koresh-e Rostam"}, ["oki"] = {"Okiek"}, ["okj"] = {"Oko-Juwoi"}, ["okk"] = {"Kwamtim One"}, ["okl"] = {"Old Kentish Sign Language"}, ["okm"] = {"Middle Korean (10th-16th cent.)"}, ["okn"] = {"Oki-No-Erabu"}, ["oko"] = {"Old Korean (3rd-9th cent.)"}, ["okr"] = {"Kirike"}, ["oks"] = {"Oko-Eni-Osayen"}, ["oku"] = {"Oku"}, ["okv"] = {"Orokaiva"}, ["okx"] = {"Okpe (Northwestern Edo)"}, ["okz"] = {"Old Khmer"}, ["ola"] = {"Walungge"}, ["old"] = {"Mochi"}, ["ole"] = {"Olekha"}, ["olk"] = {"Olkol"}, ["olm"] = {"Oloma"}, ["olo"] = {"Livvi"}, ["olr"] = {"Olrat"}, ["olt"] = {"Old Lithuanian"}, ["olu"] = {"Kuvale"}, ["oma"] = {"Omaha-Ponca"}, ["omb"] = {"East Ambae"}, ["omc"] = {"Mochica"}, ["omg"] = {"Omagua"}, ["omi"] = {"Omi"}, ["omk"] = {"Omok"}, ["oml"] = {"Ombo"}, ["omn"] = {"Minoan"}, ["omo"] = {"Utarmbung"}, ["omp"] = {"Old Manipuri"}, ["omq"] = {"Oto-Manguean languages"}, ["omr"] = {"Old Marathi"}, ["omt"] = {"Omotik"}, ["omu"] = {"Omurano"}, ["omv"] = {"Omotic languages"}, ["omw"] = {"South Tairora"}, ["omx"] = {"Old Mon"}, ["omy"] = {"Old Malay"}, ["ona"] = {"Ona"}, ["onb"] = {"Lingao"}, ["one"] = {"Oneida"}, ["ong"] = {"Olo"}, ["oni"] = {"Onin"}, ["onj"] = {"Onjob"}, ["onk"] = {"Kabore One"}, ["onn"] = {"Onobasulu"}, ["ono"] = {"Onondaga"}, ["onp"] = {"Sartang"}, ["onr"] = {"Northern One"}, ["ons"] = {"Ono"}, ["ont"] = {"Ontenu"}, ["onu"] = {"Unua"}, ["onw"] = {"Old Nubian"}, ["onx"] = {"Onin Based Pidgin"}, ["ood"] = {"Tohono O'odham"}, ["oog"] = {"Ong"}, ["oon"] = {"Önge"}, ["oor"] = {"Oorlams"}, ["oos"] = {"Old Ossetic"}, ["opa"] = {"Okpamheri"}, ["opk"] = {"Kopkaka"}, ["opm"] = {"Oksapmin"}, ["opo"] = {"Opao"}, ["opt"] = {"Opata"}, ["opy"] = {"Ofayé"}, ["ora"] = {"Oroha"}, ["orc"] = {"Orma"}, ["ore"] = {"Orejón"}, ["org"] = {"Oring"}, ["orh"] = {"Oroqen"}, ["orn"] = {"Orang Kanaq"}, ["oro"] = {"Orokolo"}, ["orr"] = {"Oruma"}, ["ors"] = {"Orang Seletar"}, ["ort"] = {"Adivasi Oriya"}, ["oru"] = {"Ormuri"}, ["orv"] = {"Old Russian"}, ["orw"] = {"Oro Win"}, ["orx"] = {"Oro"}, ["ory"] = {"Odia (individual language)", "Oriya (individual language)"}, ["orz"] = {"Ormu"}, ["osa"] = {"Osage"}, ["osc"] = {"Oscan"}, ["osi"] = {"Osing"}, ["osn"] = {"Old Sundanese"}, ["oso"] = {"Ososo"}, ["osp"] = {"Old Spanish"}, ["ost"] = {"Osatu"}, ["osu"] = {"Southern One"}, ["osx"] = {"Old Saxon"}, ["ota"] = {"Ottoman Turkish (1500-1928)"}, ["otb"] = {"Old Tibetan"}, ["otd"] = {"Ot Danum"}, ["ote"] = {"Mezquital Otomi"}, ["oti"] = {"Oti"}, ["otk"] = {"Old Turkish"}, ["otl"] = {"Tilapa Otomi"}, ["otm"] = {"Eastern Highland Otomi"}, ["otn"] = {"Tenango Otomi"}, ["oto"] = {"Otomian languages"}, ["otq"] = {"Querétaro Otomi"}, ["otr"] = {"Otoro"}, ["ots"] = {"Estado de México Otomi"}, ["ott"] = {"Temoaya Otomi"}, ["otu"] = {"Otuke"}, ["otw"] = {"Ottawa"}, ["otx"] = {"Texcatepec Otomi"}, ["oty"] = {"Old Tamil"}, ["otz"] = {"Ixtenco Otomi"}, ["oua"] = {"Tagargrent"}, ["oub"] = {"Glio-Oubi"}, ["oue"] = {"Oune"}, ["oui"] = {"Old Uighur"}, ["oum"] = {"Ouma"}, ["ovd"] = {"Elfdalian", "Övdalian"}, ["owi"] = {"Owiniga"}, ["owl"] = {"Old Welsh"}, ["oyb"] = {"Oy"}, ["oyd"] = {"Oyda"}, ["oym"] = {"Wayampi"}, ["oyy"] = {"Oya'oya"}, ["ozm"] = {"Koonzime"}, ["paa"] = {"Papuan languages"}, ["pab"] = {"Parecís"}, ["pac"] = {"Pacoh"}, ["pad"] = {"Paumarí"}, ["pae"] = {"Pagibete"}, ["paf"] = {"Paranawát"}, ["pag"] = {"Pangasinan"}, ["pah"] = {"Tenharim"}, ["pai"] = {"Pe"}, ["pak"] = {"Parakanã"}, ["pal"] = {"Pahlavi"}, ["pam"] = {"Pampanga", "Kapampangan"}, ["pao"] = {"Northern Paiute"}, ["pap"] = {"Papiamento"}, ["paq"] = {"Parya"}, ["par"] = {"Panamint", "Timbisha"}, ["pas"] = {"Papasena"}, ["pau"] = {"Palauan"}, ["pav"] = {"Pakaásnovos"}, ["paw"] = {"Pawnee"}, ["pax"] = {"Pankararé"}, ["pay"] = {"Pech"}, ["paz"] = {"Pankararú"}, ["pbb"] = {"Páez"}, ["pbc"] = {"Patamona"}, ["pbe"] = {"Mezontla Popoloca"}, ["pbf"] = {"Coyotepec Popoloca"}, ["pbg"] = {"Paraujano"}, ["pbh"] = {"E'ñapa Woromaipu"}, ["pbi"] = {"Parkwa"}, ["pbl"] = {"Mak (Nigeria)"}, ["pbm"] = {"Puebla Mazatec"}, ["pbn"] = {"Kpasam"}, ["pbo"] = {"Papel"}, ["pbp"] = {"Badyara"}, ["pbr"] = {"Pangwa"}, ["pbs"] = {"Central Pame"}, ["pbt"] = {"Southern Pashto"}, ["pbu"] = {"Northern Pashto"}, ["pbv"] = {"Pnar"}, ["pby"] = {"Pyu (Papua New Guinea)"}, ["pca"] = {"Santa Inés Ahuatempan Popoloca"}, ["pcb"] = {"Pear"}, ["pcc"] = {"Bouyei"}, ["pcd"] = {"Picard"}, ["pce"] = {"Ruching Palaung"}, ["pcf"] = {"Paliyan"}, ["pcg"] = {"Paniya"}, ["pch"] = {"Pardhan"}, ["pci"] = {"Duruwa"}, ["pcj"] = {"Parenga"}, ["pck"] = {"Paite Chin"}, ["pcl"] = {"Pardhi"}, ["pcm"] = {"Nigerian Pidgin"}, ["pcn"] = {"Piti"}, ["pcp"] = {"Pacahuara"}, ["pcw"] = {"Pyapun"}, ["pda"] = {"Anam"}, ["pdc"] = {"Pennsylvania German"}, ["pdi"] = {"Pa Di"}, ["pdn"] = {"Podena", "Fedan"}, ["pdo"] = {"Padoe"}, ["pdt"] = {"Plautdietsch"}, ["pdu"] = {"Kayan"}, ["pea"] = {"Peranakan Indonesian"}, ["peb"] = {"Eastern Pomo"}, ["ped"] = {"Mala (Papua New Guinea)"}, ["pee"] = {"Taje"}, ["pef"] = {"Northeastern Pomo"}, ["peg"] = {"Pengo"}, ["peh"] = {"Bonan"}, ["pei"] = {"Chichimeca-Jonaz"}, ["pej"] = {"Northern Pomo"}, ["pek"] = {"Penchal"}, ["pel"] = {"Pekal"}, ["pem"] = {"Phende"}, ["peo"] = {"Old Persian (ca. 600-400 B.C.)"}, ["pep"] = {"Kunja"}, ["peq"] = {"Southern Pomo"}, ["pes"] = {"Iranian Persian"}, ["pev"] = {"Pémono"}, ["pex"] = {"Petats"}, ["pey"] = {"Petjo"}, ["pez"] = {"Eastern Penan"}, ["pfa"] = {"Pááfang"}, ["pfe"] = {"Pere"}, ["pfl"] = {"Pfaelzisch"}, ["pga"] = {"Sudanese Creole Arabic"}, ["pgd"] = {"Gāndhārī"}, ["pgg"] = {"Pangwali"}, ["pgi"] = {"Pagi"}, ["pgk"] = {"Rerep"}, ["pgl"] = {"Primitive Irish"}, ["pgn"] = {"Paelignian"}, ["pgs"] = {"Pangseng"}, ["pgu"] = {"Pagu"}, ["pgz"] = {"Papua New Guinean Sign Language"}, ["pha"] = {"Pa-Hng"}, ["phd"] = {"Phudagi"}, ["phg"] = {"Phuong"}, ["phh"] = {"Phukha"}, ["phi"] = {"Philippine languages"}, ["phj"] = {"Pahari"}, ["phk"] = {"Phake"}, ["phl"] = {"Phalura", "Palula"}, ["phm"] = {"Phimbi"}, ["phn"] = {"Phoenician"}, ["pho"] = {"Phunoi"}, ["phq"] = {"Phana'"}, ["phr"] = {"Pahari-Potwari"}, ["pht"] = {"Phu Thai"}, ["phu"] = {"Phuan"}, ["phv"] = {"Pahlavani"}, ["phw"] = {"Phangduwali"}, ["pia"] = {"Pima Bajo"}, ["pib"] = {"Yine"}, ["pic"] = {"Pinji"}, ["pid"] = {"Piaroa"}, ["pie"] = {"Piro"}, ["pif"] = {"Pingelapese"}, ["pig"] = {"Pisabo"}, ["pih"] = {"Pitcairn-Norfolk"}, ["pij"] = {"Pijao"}, ["pil"] = {"Yom"}, ["pim"] = {"Powhatan"}, ["pin"] = {"Piame"}, ["pio"] = {"Piapoco"}, ["pip"] = {"Pero"}, ["pir"] = {"Piratapuyo"}, ["pis"] = {"Pijin"}, ["pit"] = {"Pitta Pitta"}, ["piu"] = {"Pintupi-Luritja"}, ["piv"] = {"Pileni", "Vaeakau-Taumako"}, ["piw"] = {"Pimbwe"}, ["pix"] = {"Piu"}, ["piy"] = {"Piya-Kwonci"}, ["piz"] = {"Pije"}, ["pjt"] = {"Pitjantjatjara"}, ["pka"] = {"Ardhamāgadhī Prākrit"}, ["pkb"] = {"Pokomo", "Kipfokomo"}, ["pkc"] = {"Paekche"}, ["pkg"] = {"Pak-Tong"}, ["pkh"] = {"Pankhu"}, ["pkn"] = {"Pakanha"}, ["pko"] = {"Pökoot"}, ["pkp"] = {"Pukapuka"}, ["pkr"] = {"Attapady Kurumba"}, ["pks"] = {"Pakistan Sign Language"}, ["pkt"] = {"Maleng"}, ["pku"] = {"Paku"}, ["pla"] = {"Miani"}, ["plb"] = {"Polonombauk"}, ["plc"] = {"Central Palawano"}, ["pld"] = {"Polari"}, ["ple"] = {"Palu'e"}, ["plf"] = {"Central Malayo-Polynesian languages"}, ["plg"] = {"Pilagá"}, ["plh"] = {"Paulohi"}, ["plk"] = {"Kohistani Shina"}, ["pll"] = {"Shwe Palaung"}, ["pln"] = {"Palenquero"}, ["plo"] = {"Oluta Popoluca"}, ["plq"] = {"Palaic"}, ["plr"] = {"Palaka Senoufo"}, ["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"}, ["plt"] = {"Plateau Malagasy"}, ["plu"] = {"Palikúr"}, ["plv"] = {"Southwest Palawano"}, ["plw"] = {"Brooke's Point Palawano"}, ["ply"] = {"Bolyu"}, ["plz"] = {"Paluan"}, ["pma"] = {"Paama"}, ["pmb"] = {"Pambia"}, ["pmd"] = {"Pallanganmiddang"}, ["pme"] = {"Pwaamei"}, ["pmf"] = {"Pamona"}, ["pmh"] = {"Māhārāṣṭri Prākrit"}, ["pmi"] = {"Northern Pumi"}, ["pmj"] = {"Southern Pumi"}, ["pml"] = {"Lingua Franca"}, ["pmm"] = {"Pomo"}, ["pmn"] = {"Pam"}, ["pmo"] = {"Pom"}, ["pmq"] = {"Northern Pame"}, ["pmr"] = {"Paynamar"}, ["pms"] = {"Piemontese"}, ["pmt"] = {"Tuamotuan"}, ["pmw"] = {"Plains Miwok"}, ["pmx"] = {"Poumei Naga"}, ["pmy"] = {"Papuan Malay"}, ["pmz"] = {"Southern Pame"}, ["pna"] = {"Punan Bah-Biau"}, ["pnb"] = {"Western Panjabi"}, ["pnc"] = {"Pannei"}, ["pnd"] = {"Mpinda"}, ["pne"] = {"Western Penan"}, ["png"] = {"Pangu", "Pongu"}, ["pnh"] = {"Penrhyn"}, ["pni"] = {"Aoheng"}, ["pnj"] = {"Pinjarup"}, ["pnk"] = {"Paunaka"}, ["pnl"] = {"Paleni"}, ["pnm"] = {"Punan Batu 1"}, ["pnn"] = {"Pinai-Hagahai"}, ["pno"] = {"Panobo"}, ["pnp"] = {"Pancana"}, ["pnq"] = {"Pana (Burkina Faso)"}, ["pnr"] = {"Panim"}, ["pns"] = {"Ponosakan"}, ["pnt"] = {"Pontic"}, ["pnu"] = {"Jiongnai Bunu"}, ["pnv"] = {"Pinigura"}, ["pnw"] = {"Banyjima", "Panytyima"}, ["pnx"] = {"Phong-Kniang"}, ["pny"] = {"Pinyin"}, ["pnz"] = {"Pana (Central African Republic)"}, ["poc"] = {"Poqomam"}, ["poe"] = {"San Juan Atzingo Popoloca"}, ["pof"] = {"Poke"}, ["pog"] = {"Potiguára"}, ["poh"] = {"Poqomchi'"}, ["poi"] = {"Highland Popoluca"}, ["pok"] = {"Pokangá"}, ["pom"] = {"Southeastern Pomo"}, ["pon"] = {"Pohnpeian"}, ["poo"] = {"Central Pomo"}, ["pop"] = {"Pwapwâ"}, ["poq"] = {"Texistepec Popoluca"}, ["pos"] = {"Sayula Popoluca"}, ["pot"] = {"Potawatomi"}, ["pov"] = {"Upper Guinea Crioulo"}, ["pow"] = {"San Felipe Otlaltepec Popoloca"}, ["pox"] = {"Polabian"}, ["poy"] = {"Pogolo"}, ["poz"] = {"Malayo-Polynesian languages"}, ["ppe"] = {"Papi"}, ["ppi"] = {"Paipai"}, ["ppk"] = {"Uma"}, ["ppl"] = {"Pipil", "Nicarao"}, ["ppm"] = {"Papuma"}, ["ppn"] = {"Papapana"}, ["ppo"] = {"Folopa"}, ["ppp"] = {"Pelende"}, ["ppq"] = {"Pei"}, ["pps"] = {"San Luís Temalacayuca Popoloca"}, ["ppt"] = {"Pare"}, ["ppu"] = {"Papora"}, ["pqa"] = {"Pa'a"}, ["pqe"] = {"Eastern Malayo-Polynesian languages"}, ["pqm"] = {"Malecite-Passamaquoddy"}, ["pqw"] = {"Western Malayo-Polynesian languages"}, ["pra"] = {"Prakrit languages"}, ["prc"] = {"Parachi"}, ["prd"] = {"Parsi-Dari"}, ["pre"] = {"Principense"}, ["prf"] = {"Paranan"}, ["prg"] = {"Prussian"}, ["prh"] = {"Porohanon"}, ["pri"] = {"Paicî"}, ["prk"] = {"Parauk"}, ["prl"] = {"Peruvian Sign Language"}, ["prm"] = {"Kibiri"}, ["prn"] = {"Prasuni"}, ["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"}, ["prq"] = {"Ashéninka Perené"}, ["prr"] = {"Puri"}, ["prs"] = {"Dari", "Afghan Persian"}, ["prt"] = {"Phai"}, ["pru"] = {"Puragi"}, ["prw"] = {"Parawen"}, ["prx"] = {"Purik"}, ["prz"] = {"Providencia Sign Language"}, ["psa"] = {"Asue Awyu"}, ["psc"] = {"Iranian Sign Language", "Persian Sign Language"}, ["psd"] = {"Plains Indian Sign Language"}, ["pse"] = {"Central Malay"}, ["psg"] = {"Penang Sign Language"}, ["psh"] = {"Southwest Pashai", "Southwest Pashayi"}, ["psi"] = {"Southeast Pashai", "Southeast Pashayi"}, ["psl"] = {"Puerto Rican Sign Language"}, ["psm"] = {"Pauserna"}, ["psn"] = {"Panasuan"}, ["pso"] = {"Polish Sign Language"}, ["psp"] = {"Philippine Sign Language"}, ["psq"] = {"Pasi"}, ["psr"] = {"Portuguese Sign Language"}, ["pss"] = {"Kaulong"}, ["pst"] = {"Central Pashto"}, ["psu"] = {"Sauraseni Prākrit"}, ["psw"] = {"Port Sandwich"}, ["psy"] = {"Piscataway"}, ["pta"] = {"Pai Tavytera"}, ["pth"] = {"Pataxó Hã-Ha-Hãe"}, ["pti"] = {"Pindiini", "Wangkatha"}, ["ptn"] = {"Patani"}, ["pto"] = {"Zo'é"}, ["ptp"] = {"Patep"}, ["ptq"] = {"Pattapu"}, ["ptr"] = {"Piamatsina"}, ["ptt"] = {"Enrekang"}, ["ptu"] = {"Bambam"}, ["ptv"] = {"Port Vato"}, ["ptw"] = {"Pentlatch"}, ["pty"] = {"Pathiya"}, ["pua"] = {"Western Highland Purepecha"}, ["pub"] = {"Purum"}, ["puc"] = {"Punan Merap"}, ["pud"] = {"Punan Aput"}, ["pue"] = {"Puelche"}, ["puf"] = {"Punan Merah"}, ["pug"] = {"Phuie"}, ["pui"] = {"Puinave"}, ["puj"] = {"Punan Tubu"}, ["pum"] = {"Puma"}, ["puo"] = {"Puoc"}, ["pup"] = {"Pulabu"}, ["puq"] = {"Puquina"}, ["pur"] = {"Puruborá"}, ["put"] = {"Putoh"}, ["puu"] = {"Punu"}, ["puw"] = {"Puluwatese"}, ["pux"] = {"Puare"}, ["puy"] = {"Purisimeño"}, ["pwa"] = {"Pawaia"}, ["pwb"] = {"Panawa"}, ["pwg"] = {"Gapapaiwa"}, ["pwi"] = {"Patwin"}, ["pwm"] = {"Molbog"}, ["pwn"] = {"Paiwan"}, ["pwo"] = {"Pwo Western Karen"}, ["pwr"] = {"Powari"}, ["pww"] = {"Pwo Northern Karen"}, ["pxm"] = {"Quetzaltepec Mixe"}, ["pye"] = {"Pye Krumen"}, ["pym"] = {"Fyam"}, ["pyn"] = {"Poyanáwa"}, ["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"}, ["pyu"] = {"Puyuma"}, ["pyx"] = {"Pyu (Myanmar)"}, ["pyy"] = {"Pyen"}, ["pze"] = {"Pesse"}, ["pzh"] = {"Pazeh"}, ["pzn"] = {"Jejara Naga", "Para Naga"}, ["qua"] = {"Quapaw"}, ["qub"] = {"Huallaga Huánuco Quechua"}, ["quc"] = {"K'iche'", "Quiché"}, ["qud"] = {"Calderón Highland Quichua"}, ["quf"] = {"Lambayeque Quechua"}, ["qug"] = {"Chimborazo Highland Quichua"}, ["quh"] = {"South Bolivian Quechua"}, ["qui"] = {"Quileute"}, ["quk"] = {"Chachapoyas Quechua"}, ["qul"] = {"North Bolivian Quechua"}, ["qum"] = {"Sipacapense"}, ["qun"] = {"Quinault"}, ["qup"] = {"Southern Pastaza Quechua"}, ["quq"] = {"Quinqui"}, ["qur"] = {"Yanahuanca Pasco Quechua"}, ["qus"] = {"Santiago del Estero Quichua"}, ["quv"] = {"Sacapulteco"}, ["quw"] = {"Tena Lowland Quichua"}, ["qux"] = {"Yauyos Quechua"}, ["quy"] = {"Ayacucho Quechua"}, ["quz"] = {"Cusco Quechua"}, ["qva"] = {"Ambo-Pasco Quechua"}, ["qvc"] = {"Cajamarca Quechua"}, ["qve"] = {"Eastern Apurímac Quechua"}, ["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"}, ["qvi"] = {"Imbabura Highland Quichua"}, ["qvj"] = {"Loja Highland Quichua"}, ["qvl"] = {"Cajatambo North Lima Quechua"}, ["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"}, ["qvn"] = {"North Junín Quechua"}, ["qvo"] = {"Napo Lowland Quechua"}, ["qvp"] = {"Pacaraos Quechua"}, ["qvs"] = {"San Martín Quechua"}, ["qvw"] = {"Huaylla Wanca Quechua"}, ["qvy"] = {"Queyu"}, ["qvz"] = {"Northern Pastaza Quichua"}, ["qwa"] = {"Corongo Ancash Quechua"}, ["qwc"] = {"Classical Quechua"}, ["qwe"] = {"Quechuan (family)"}, ["qwh"] = {"Huaylas Ancash Quechua"}, ["qwm"] = {"Kuman (Russia)"}, ["qws"] = {"Sihuas Ancash Quechua"}, ["qwt"] = {"Kwalhioqua-Tlatskanai"}, ["qxa"] = {"Chiquián Ancash Quechua"}, ["qxc"] = {"Chincha Quechua"}, ["qxh"] = {"Panao Huánuco Quechua"}, ["qxl"] = {"Salasaca Highland Quichua"}, ["qxn"] = {"Northern Conchucos Ancash Quechua"}, ["qxo"] = {"Southern Conchucos Ancash Quechua"}, ["qxp"] = {"Puno Quechua"}, ["qxq"] = {"Qashqa'i"}, ["qxr"] = {"Cañar Highland Quichua"}, ["qxs"] = {"Southern Qiang"}, ["qxt"] = {"Santa Ana de Tusi Pasco Quechua"}, ["qxu"] = {"Arequipa-La Unión Quechua"}, ["qxw"] = {"Jauja Wanca Quechua"}, ["qya"] = {"Quenya"}, ["qyp"] = {"Quiripi"}, ["raa"] = {"Dungmali"}, ["rab"] = {"Camling"}, ["rac"] = {"Rasawa"}, ["rad"] = {"Rade"}, ["raf"] = {"Western Meohang"}, ["rag"] = {"Logooli", "Lulogooli"}, ["rah"] = {"Rabha"}, ["rai"] = {"Ramoaaina"}, ["raj"] = {"Rajasthani"}, ["rak"] = {"Tulu-Bohuai"}, ["ral"] = {"Ralte"}, ["ram"] = {"Canela"}, ["ran"] = {"Riantana"}, ["rao"] = {"Rao"}, ["rap"] = {"Rapanui"}, ["raq"] = {"Saam"}, ["rar"] = {"Rarotongan", "Cook Islands Maori"}, ["ras"] = {"Tegali"}, ["rat"] = {"Razajerdi"}, ["rau"] = {"Raute"}, ["rav"] = {"Sampang"}, ["raw"] = {"Rawang"}, ["rax"] = {"Rang"}, ["ray"] = {"Rapa"}, ["raz"] = {"Rahambuu"}, ["rbb"] = {"Rumai Palaung"}, ["rbk"] = {"Northern Bontok"}, ["rbl"] = {"Miraya Bikol"}, ["rbp"] = {"Barababaraba"}, ["rcf"] = {"Réunion Creole French"}, ["rdb"] = {"Rudbari"}, ["rea"] = {"Rerau"}, ["reb"] = {"Rembong"}, ["ree"] = {"Rejang Kayan"}, ["reg"] = {"Kara (Tanzania)"}, ["rei"] = {"Reli"}, ["rej"] = {"Rejang"}, ["rel"] = {"Rendille"}, ["rem"] = {"Remo"}, ["ren"] = {"Rengao"}, ["rer"] = {"Rer Bare"}, ["res"] = {"Reshe"}, ["ret"] = {"Retta"}, ["rey"] = {"Reyesano"}, ["rga"] = {"Roria"}, ["rge"] = {"Romano-Greek"}, ["rgk"] = {"Rangkas"}, ["rgn"] = {"Romagnol"}, ["rgr"] = {"Resígaro"}, ["rgs"] = {"Southern Roglai"}, ["rgu"] = {"Ringgou"}, ["rhg"] = {"Rohingya"}, ["rhp"] = {"Yahang"}, ["ria"] = {"Riang (India)"}, ["rib"] = {"Bribri Sign Language"}, ["rif"] = {"Tarifit"}, ["ril"] = {"Riang Lang", "Riang (Myanmar)"}, ["rim"] = {"Nyaturu"}, ["rin"] = {"Nungu"}, ["rir"] = {"Ribun"}, ["rit"] = {"Ritharrngu"}, ["riu"] = {"Riung"}, ["rjg"] = {"Rajong"}, ["rji"] = {"Raji"}, ["rjs"] = {"Rajbanshi"}, ["rka"] = {"Kraol"}, ["rkb"] = {"Rikbaktsa"}, ["rkh"] = {"Rakahanga-Manihiki"}, ["rki"] = {"Rakhine"}, ["rkm"] = {"Marka"}, ["rkt"] = {"Rangpuri", "Kamta"}, ["rkw"] = {"Arakwal"}, ["rma"] = {"Rama"}, ["rmb"] = {"Rembarrnga"}, ["rmc"] = {"Carpathian Romani"}, ["rmd"] = {"Traveller Danish"}, ["rme"] = {"Angloromani"}, ["rmf"] = {"Kalo Finnish Romani"}, ["rmg"] = {"Traveller Norwegian"}, ["rmh"] = {"Murkim"}, ["rmi"] = {"Lomavren"}, ["rmk"] = {"Romkun"}, ["rml"] = {"Baltic Romani"}, ["rmm"] = {"Roma"}, ["rmn"] = {"Balkan Romani"}, ["rmo"] = {"Sinte Romani"}, ["rmp"] = {"Rempi"}, ["rmq"] = {"Caló"}, ["rms"] = {"Romanian Sign Language"}, ["rmt"] = {"Domari"}, ["rmu"] = {"Tavringer Romani"}, ["rmv"] = {"Romanova"}, ["rmw"] = {"Welsh Romani"}, ["rmx"] = {"Romam"}, ["rmy"] = {"Vlax Romani"}, ["rmz"] = {"Marma"}, ["rnb"] = {"Brunca Sign Language"}, ["rnd"] = {"Ruund"}, ["rng"] = {"Ronga"}, ["rnl"] = {"Ranglong"}, ["rnn"] = {"Roon"}, ["rnp"] = {"Rongpo"}, ["rnr"] = {"Nari Nari"}, ["rnw"] = {"Rungwa"}, ["roa"] = {"Romance languages"}, ["rob"] = {"Tae'"}, ["roc"] = {"Cacgia Roglai"}, ["rod"] = {"Rogo"}, ["roe"] = {"Ronji"}, ["rof"] = {"Rombo"}, ["rog"] = {"Northern Roglai"}, ["rol"] = {"Romblomanon"}, ["rom"] = {"Romany"}, ["roo"] = {"Rotokas"}, ["rop"] = {"Kriol"}, ["ror"] = {"Rongga"}, ["rou"] = {"Runga"}, ["row"] = {"Dela-Oenale"}, ["rpn"] = {"Repanbitip"}, ["rpt"] = {"Rapting"}, ["rri"] = {"Ririo"}, ["rro"] = {"Waima"}, ["rrt"] = {"Arritinngithigh"}, ["rsb"] = {"Romano-Serbian"}, ["rsk"] = {"Ruthenian", "Rusnak"}, ["rsl"] = {"Russian Sign Language"}, ["rsm"] = {"Miriwoong Sign Language"}, ["rsn"] = {"Rwandan Sign Language"}, ["rsw"] = {"Rishiwa"}, ["rtc"] = {"Rungtu Chin"}, ["rth"] = {"Ratahan"}, ["rtm"] = {"Rotuman"}, ["rts"] = {"Yurats"}, ["rtw"] = {"Rathawi"}, ["rub"] = {"Gungu"}, ["ruc"] = {"Ruuli"}, ["rue"] = {"Rusyn"}, ["ruf"] = {"Luguru"}, ["rug"] = {"Roviana"}, ["ruh"] = {"Ruga"}, ["rui"] = {"Rufiji"}, ["ruk"] = {"Che"}, ["ruo"] = {"Istro Romanian"}, ["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"}, ["ruq"] = {"Megleno Romanian"}, ["rut"] = {"Rutul"}, ["ruu"] = {"Lanas Lobu"}, ["ruy"] = {"Mala (Nigeria)"}, ["ruz"] = {"Ruma"}, ["rwa"] = {"Rawo"}, ["rwk"] = {"Rwa"}, ["rwl"] = {"Ruwila"}, ["rwm"] = {"Amba (Uganda)"}, ["rwo"] = {"Rawa"}, ["rwr"] = {"Marwari (India)"}, ["rxd"] = {"Ngardi"}, ["rxw"] = {"Karuwali", "Garuwali"}, ["ryn"] = {"Northern Amami-Oshima"}, ["rys"] = {"Yaeyama"}, ["ryu"] = {"Central Okinawan"}, ["rzh"] = {"Rāziḥī"}, ["saa"] = {"Saba"}, ["sab"] = {"Buglere"}, ["sac"] = {"Meskwaki"}, ["sad"] = {"Sandawe"}, ["sae"] = {"Sabanê"}, ["saf"] = {"Safaliba"}, ["sah"] = {"Yakut"}, ["sai"] = {"South American Indian languages"}, ["saj"] = {"Sahu"}, ["sak"] = {"Sake"}, ["sal"] = {"Salishan languages"}, ["sam"] = {"Samaritan Aramaic"}, ["sao"] = {"Sause"}, ["saq"] = {"Samburu"}, ["sar"] = {"Saraveca"}, ["sas"] = {"Sasak"}, ["sat"] = {"Santali"}, ["sau"] = {"Saleman"}, ["sav"] = {"Saafi-Saafi"}, ["saw"] = {"Sawi"}, ["sax"] = {"Sa"}, ["say"] = {"Saya"}, ["saz"] = {"Saurashtra"}, ["sba"] = {"Ngambay"}, ["sbb"] = {"Simbo"}, ["sbc"] = {"Kele (Papua New Guinea)"}, ["sbd"] = {"Southern Samo"}, ["sbe"] = {"Saliba"}, ["sbf"] = {"Chabu", "Shabo"}, ["sbg"] = {"Seget"}, ["sbh"] = {"Sori-Harengan"}, ["sbi"] = {"Seti"}, ["sbj"] = {"Surbakhal"}, ["sbk"] = {"Safwa"}, ["sbl"] = {"Botolan Sambal"}, ["sbm"] = {"Sagala"}, ["sbn"] = {"Sindhi Bhil"}, ["sbo"] = {"Sabüm"}, ["sbp"] = {"Sangu (Tanzania)"}, ["sbq"] = {"Sileibi"}, ["sbr"] = {"Sembakung Murut"}, ["sbs"] = {"Subiya"}, ["sbt"] = {"Kimki"}, ["sbu"] = {"Stod Bhoti"}, ["sbv"] = {"Sabine"}, ["sbw"] = {"Simba"}, ["sbx"] = {"Seberuang"}, ["sby"] = {"Soli"}, ["sbz"] = {"Sara Kaba"}, ["scb"] = {"Chut"}, ["sce"] = {"Dongxiang"}, ["scf"] = {"San Miguel Creole French"}, ["scg"] = {"Sanggau"}, ["sch"] = {"Sakachep"}, ["sci"] = {"Sri Lankan Creole Malay"}, ["sck"] = {"Sadri"}, ["scl"] = {"Shina"}, ["scn"] = {"Sicilian"}, ["sco"] = {"Scots"}, ["scp"] = {"Hyolmo", "Helambu Sherpa"}, ["scq"] = {"Sa'och"}, ["scs"] = {"North Slavey"}, ["sct"] = {"Southern Katang"}, ["scu"] = {"Shumcho"}, ["scv"] = {"Sheni"}, ["scw"] = {"Sha"}, ["scx"] = {"Sicel"}, ["sda"] = {"Toraja-Sa'dan"}, ["sdb"] = {"Shabak"}, ["sdc"] = {"Sassarese Sardinian"}, ["sde"] = {"Surubu"}, ["sdf"] = {"Sarli"}, ["sdg"] = {"Savi"}, ["sdh"] = {"Southern Kurdish"}, ["sdj"] = {"Suundi"}, ["sdk"] = {"Sos Kundi"}, ["sdl"] = {"Saudi Arabian Sign Language"}, ["sdn"] = {"Gallurese Sardinian"}, ["sdo"] = {"Bukar-Sadung Bidayuh"}, ["sdp"] = {"Sherdukpen"}, ["sdq"] = {"Semandang"}, ["sdr"] = {"Oraon Sadri"}, ["sds"] = {"Sened"}, ["sdt"] = {"Shuadit"}, ["sdu"] = {"Sarudu"}, ["sdv"] = {"Eastern Sudanic languages"}, ["sdx"] = {"Sibu Melanau"}, ["sdz"] = {"Sallands"}, ["sea"] = {"Semai"}, ["seb"] = {"Shempire Senoufo"}, ["sec"] = {"Sechelt"}, ["sed"] = {"Sedang"}, ["see"] = {"Seneca"}, ["sef"] = {"Cebaara Senoufo"}, ["seg"] = {"Segeju"}, ["seh"] = {"Sena"}, ["sei"] = {"Seri"}, ["sej"] = {"Sene"}, ["sek"] = {"Sekani"}, ["sel"] = {"Selkup"}, ["sem"] = {"Semitic languages"}, ["sen"] = {"Nanerigé Sénoufo"}, ["seo"] = {"Suarmin"}, ["sep"] = {"Sìcìté Sénoufo"}, ["seq"] = {"Senara Sénoufo"}, ["ser"] = {"Serrano"}, ["ses"] = {"Koyraboro Senni Songhai"}, ["set"] = {"Sentani"}, ["seu"] = {"Serui-Laut"}, ["sev"] = {"Nyarafolo Senoufo"}, ["sew"] = {"Sewa Bay"}, ["sey"] = {"Secoya"}, ["sez"] = {"Senthang Chin"}, ["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"}, ["sfe"] = {"Eastern Subanen"}, ["sfm"] = {"Small Flowery Miao"}, ["sfs"] = {"South African Sign Language"}, ["sfw"] = {"Sehwi"}, ["sga"] = {"Old Irish (to 900)"}, ["sgb"] = {"Mag-antsi Ayta"}, ["sgc"] = {"Kipsigis"}, ["sgd"] = {"Surigaonon"}, ["sge"] = {"Segai"}, ["sgg"] = {"Swiss-German Sign Language"}, ["sgh"] = {"Shughni"}, ["sgi"] = {"Suga"}, ["sgj"] = {"Surgujia"}, ["sgk"] = {"Sangkong"}, ["sgm"] = {"Singa"}, ["sgn"] = {"Sign languages"}, ["sgp"] = {"Singpho"}, ["sgr"] = {"Sangisari"}, ["sgs"] = {"Samogitian"}, ["sgt"] = {"Brokpake"}, ["sgu"] = {"Salas"}, ["sgw"] = {"Sebat Bet Gurage"}, ["sgx"] = {"Sierra Leone Sign Language"}, ["sgy"] = {"Sanglechi"}, ["sgz"] = {"Sursurunga"}, ["sha"] = {"Shall-Zwall"}, ["shb"] = {"Ninam"}, ["shc"] = {"Sonde"}, ["shd"] = {"Kundal Shahi"}, ["she"] = {"Sheko"}, ["shg"] = {"Shua"}, ["shh"] = {"Shoshoni"}, ["shi"] = {"Tachelhit"}, ["shj"] = {"Shatt"}, ["shk"] = {"Shilluk"}, ["shl"] = {"Shendu"}, ["shm"] = {"Shahrudi"}, ["shn"] = {"Shan"}, ["sho"] = {"Shanga"}, ["shp"] = {"Shipibo-Conibo"}, ["shq"] = {"Sala"}, ["shr"] = {"Shi"}, ["shs"] = {"Shuswap"}, ["sht"] = {"Shasta"}, ["shu"] = {"Chadian Arabic"}, ["shv"] = {"Shehri"}, ["shw"] = {"Shwai"}, ["shx"] = {"She"}, ["shy"] = {"Tachawit"}, ["shz"] = {"Syenara Senoufo"}, ["sia"] = {"Akkala Sami"}, ["sib"] = {"Sebop"}, ["sid"] = {"Sidamo"}, ["sie"] = {"Simaa"}, ["sif"] = {"Siamou"}, ["sig"] = {"Paasaal"}, ["sih"] = {"Zire", "Sîshëë"}, ["sii"] = {"Shom Peng"}, ["sij"] = {"Numbami"}, ["sik"] = {"Sikiana"}, ["sil"] = {"Tumulung Sisaala"}, ["sim"] = {"Mende (Papua New Guinea)"}, ["sio"] = {"Siouan languages"}, ["sip"] = {"Sikkimese"}, ["siq"] = {"Sonia"}, ["sir"] = {"Siri"}, ["sis"] = {"Siuslaw"}, ["sit"] = {"Sino-Tibetan languages"}, ["siu"] = {"Sinagen"}, ["siv"] = {"Sumariup"}, ["siw"] = {"Siwai"}, ["six"] = {"Sumau"}, ["siy"] = {"Sivandi"}, ["siz"] = {"Siwi"}, ["sja"] = {"Epena"}, ["sjb"] = {"Sajau Basap"}, ["sjd"] = {"Kildin Sami"}, ["sje"] = {"Pite Sami"}, ["sjg"] = {"Assangori"}, ["sjk"] = {"Kemi Sami"}, ["sjl"] = {"Sajalong", "Miji"}, ["sjm"] = {"Mapun"}, ["sjn"] = {"Sindarin"}, ["sjo"] = {"Xibe"}, ["sjp"] = {"Surjapuri"}, ["sjr"] = {"Siar-Lak"}, ["sjs"] = {"Senhaja De Srair"}, ["sjt"] = {"Ter Sami"}, ["sju"] = {"Ume Sami"}, ["sjw"] = {"Shawnee"}, ["ska"] = {"Skagit"}, ["skb"] = {"Saek"}, ["skc"] = {"Ma Manda"}, ["skd"] = {"Southern Sierra Miwok"}, ["ske"] = {"Seke (Vanuatu)"}, ["skf"] = {"Sakirabiá"}, ["skg"] = {"Sakalava Malagasy"}, ["skh"] = {"Sikule"}, ["ski"] = {"Sika"}, ["skj"] = {"Seke (Nepal)"}, ["skm"] = {"Kutong"}, ["skn"] = {"Kolibugan Subanon"}, ["sko"] = {"Seko Tengah"}, ["skp"] = {"Sekapan"}, ["skq"] = {"Sininkere"}, ["skr"] = {"Saraiki", "Seraiki"}, ["sks"] = {"Maia"}, ["skt"] = {"Sakata"}, ["sku"] = {"Sakao"}, ["skv"] = {"Skou"}, ["skw"] = {"Skepi Creole Dutch"}, ["skx"] = {"Seko Padang"}, ["sky"] = {"Sikaiana"}, ["skz"] = {"Sekar"}, ["sla"] = {"Slavic languages"}, ["slc"] = {"Sáliba"}, ["sld"] = {"Sissala"}, ["sle"] = {"Sholaga"}, ["slf"] = {"Swiss-Italian Sign Language"}, ["slg"] = {"Selungai Murut"}, ["slh"] = {"Southern Puget Sound Salish"}, ["sli"] = {"Lower Silesian"}, ["slj"] = {"Salumá"}, ["sll"] = {"Salt-Yui"}, ["slm"] = {"Pangutaran Sama"}, ["sln"] = {"Salinan"}, ["slp"] = {"Lamaholot"}, ["slr"] = {"Salar"}, ["sls"] = {"Singapore Sign Language"}, ["slt"] = {"Sila"}, ["slu"] = {"Selaru"}, ["slw"] = {"Sialum"}, ["slx"] = {"Salampasu"}, ["sly"] = {"Selayar"}, ["slz"] = {"Ma'ya"}, ["sma"] = {"Southern Sami"}, ["smb"] = {"Simbari"}, ["smc"] = {"Som"}, ["smf"] = {"Auwe"}, ["smg"] = {"Simbali"}, ["smh"] = {"Samei"}, ["smi"] = {"Sami languages"}, ["smj"] = {"Lule Sami"}, ["smk"] = {"Bolinao"}, ["sml"] = {"Central Sama"}, ["smm"] = {"Musasa"}, ["smn"] = {"Inari Sami"}, ["smp"] = {"Samaritan"}, ["smq"] = {"Samo"}, ["smr"] = {"Simeulue"}, ["sms"] = {"Skolt Sami"}, ["smt"] = {"Simte"}, ["smu"] = {"Somray"}, ["smv"] = {"Samvedi"}, ["smw"] = {"Sumbawa"}, ["smx"] = {"Samba"}, ["smy"] = {"Semnani"}, ["smz"] = {"Simeku"}, ["snc"] = {"Sinaugoro"}, ["sne"] = {"Bau Bidayuh"}, ["snf"] = {"Noon"}, ["sng"] = {"Sanga (Democratic Republic of Congo)"}, ["sni"] = {"Sensi"}, ["snj"] = {"Riverain Sango"}, ["snk"] = {"Soninke"}, ["snl"] = {"Sangil"}, ["snm"] = {"Southern Ma'di"}, ["snn"] = {"Siona"}, ["sno"] = {"Snohomish"}, ["snp"] = {"Siane"}, ["snq"] = {"Sangu (Gabon)"}, ["snr"] = {"Sihan"}, ["sns"] = {"South West Bay", "Nahavaq"}, ["snu"] = {"Senggi", "Viid"}, ["snv"] = {"Sa'ban"}, ["snw"] = {"Selee"}, ["snx"] = {"Sam"}, ["sny"] = {"Saniyo-Hiyewe"}, ["snz"] = {"Kou"}, ["soa"] = {"Thai Song"}, ["sob"] = {"Sobei"}, ["soc"] = {"So (Democratic Republic of Congo)"}, ["sod"] = {"Songoora"}, ["soe"] = {"Songomeno"}, ["sog"] = {"Sogdian"}, ["soh"] = {"Aka"}, ["soi"] = {"Sonha"}, ["soj"] = {"Soi"}, ["sok"] = {"Sokoro"}, ["sol"] = {"Solos"}, ["son"] = {"Songhai languages"}, ["soo"] = {"Songo"}, ["sop"] = {"Songe"}, ["soq"] = {"Kanasi"}, ["sor"] = {"Somrai"}, ["sos"] = {"Seeku"}, ["sou"] = {"Southern Thai"}, ["sov"] = {"Sonsorol"}, ["sow"] = {"Sowanda"}, ["sox"] = {"Swo"}, ["soy"] = {"Miyobe"}, ["soz"] = {"Temi"}, ["spb"] = {"Sepa (Indonesia)"}, ["spc"] = {"Sapé"}, ["spd"] = {"Saep"}, ["spe"] = {"Sepa (Papua New Guinea)"}, ["spg"] = {"Sian"}, ["spi"] = {"Saponi"}, ["spk"] = {"Sengo"}, ["spl"] = {"Selepet"}, ["spm"] = {"Akukem"}, ["spn"] = {"Sanapaná"}, ["spo"] = {"Spokane"}, ["spp"] = {"Supyire Senoufo"}, ["spq"] = {"Loreto-Ucayali Spanish"}, ["spr"] = {"Saparua"}, ["sps"] = {"Saposa"}, ["spt"] = {"Spiti Bhoti"}, ["spu"] = {"Sapuan"}, ["spv"] = {"Sambalpuri", "Kosli"}, ["spx"] = {"South Picene"}, ["spy"] = {"Sabaot"}, ["sqa"] = {"Shama-Sambuga"}, ["sqh"] = {"Shau"}, ["sqj"] = {"Albanian languages"}, ["sqk"] = {"Albanian Sign Language"}, ["sqm"] = {"Suma"}, ["sqn"] = {"Susquehannock"}, ["sqo"] = {"Sorkhei"}, ["sqq"] = {"Sou"}, ["sqr"] = {"Siculo Arabic"}, ["sqs"] = {"Sri Lankan Sign Language"}, ["sqt"] = {"Soqotri"}, ["squ"] = {"Squamish"}, ["sqx"] = {"Kufr Qassem Sign Language (KQSL)"}, ["sra"] = {"Saruga"}, ["srb"] = {"Sora"}, ["src"] = {"Logudorese Sardinian"}, ["sre"] = {"Sara"}, ["srf"] = {"Nafi"}, ["srg"] = {"Sulod"}, ["srh"] = {"Sarikoli"}, ["sri"] = {"Siriano"}, ["srk"] = {"Serudung Murut"}, ["srl"] = {"Isirawa"}, ["srm"] = {"Saramaccan"}, ["srn"] = {"Sranan Tongo"}, ["sro"] = {"Campidanese Sardinian"}, ["srq"] = {"Sirionó"}, ["srr"] = {"Serer"}, ["srs"] = {"Sarsi"}, ["srt"] = {"Sauri"}, ["sru"] = {"Suruí"}, ["srv"] = {"Southern Sorsoganon"}, ["srw"] = {"Serua"}, ["srx"] = {"Sirmauri"}, ["sry"] = {"Sera"}, ["srz"] = {"Shahmirzadi"}, ["ssa"] = {"Nilo-Saharan languages"}, ["ssb"] = {"Southern Sama"}, ["ssc"] = {"Suba-Simbiti"}, ["ssd"] = {"Siroi"}, ["sse"] = {"Balangingi", "Bangingih Sama"}, ["ssf"] = {"Thao"}, ["ssg"] = {"Seimat"}, ["ssh"] = {"Shihhi Arabic"}, ["ssi"] = {"Sansi"}, ["ssj"] = {"Sausi"}, ["ssk"] = {"Sunam"}, ["ssl"] = {"Western Sisaala"}, ["ssm"] = {"Semnam"}, ["ssn"] = {"Waata"}, ["sso"] = {"Sissano"}, ["ssp"] = {"Spanish Sign Language"}, ["ssq"] = {"So'a"}, ["ssr"] = {"Swiss-French Sign Language"}, ["sss"] = {"Sô"}, ["sst"] = {"Sinasina"}, ["ssu"] = {"Susuami"}, ["ssv"] = {"Shark Bay"}, ["ssx"] = {"Samberigi"}, ["ssy"] = {"Saho"}, ["ssz"] = {"Sengseng"}, ["sta"] = {"Settla"}, ["stb"] = {"Northern Subanen"}, ["std"] = {"Sentinel"}, ["ste"] = {"Liana-Seti"}, ["stf"] = {"Seta"}, ["stg"] = {"Trieng"}, ["sth"] = {"Shelta"}, ["sti"] = {"Bulo Stieng"}, ["stj"] = {"Matya Samo"}, ["stk"] = {"Arammba"}, ["stl"] = {"Stellingwerfs"}, ["stm"] = {"Setaman"}, ["stn"] = {"Owa"}, ["sto"] = {"Stoney"}, ["stp"] = {"Southeastern Tepehuan"}, ["stq"] = {"Saterfriesisch"}, ["str"] = {"Straits Salish"}, ["sts"] = {"Shumashti"}, ["stt"] = {"Budeh Stieng"}, ["stu"] = {"Samtao"}, ["stv"] = {"Silt'e"}, ["stw"] = {"Satawalese"}, ["sty"] = {"Siberian Tatar"}, ["sua"] = {"Sulka"}, ["sub"] = {"Suku"}, ["suc"] = {"Western Subanon"}, ["sue"] = {"Suena"}, ["sug"] = {"Suganga"}, ["sui"] = {"Suki"}, ["suj"] = {"Shubi"}, ["suk"] = {"Sukuma"}, ["suo"] = {"Bouni"}, ["suq"] = {"Tirmaga-Chai Suri", "Suri"}, ["sur"] = {"Mwaghavul"}, ["sus"] = {"Susu"}, ["sut"] = {"Subtiaba"}, ["suv"] = {"Puroik"}, ["suw"] = {"Sumbwa"}, ["sux"] = {"Sumerian"}, ["suy"] = {"Suyá"}, ["suz"] = {"Sunwar"}, ["sva"] = {"Svan"}, ["svb"] = {"Ulau-Suain"}, ["svc"] = {"Vincentian Creole English"}, ["sve"] = {"Serili"}, ["svk"] = {"Slovakian Sign Language"}, ["svm"] = {"Slavomolisano"}, ["svs"] = {"Savosavo"}, ["svx"] = {"Skalvian"}, ["swb"] = {"Maore Comorian"}, ["swc"] = {"Congo Swahili"}, ["swf"] = {"Sere"}, ["swg"] = {"Swabian"}, ["swh"] = {"Swahili (individual language)", "Kiswahili"}, ["swi"] = {"Sui"}, ["swj"] = {"Sira"}, ["swk"] = {"Malawi Sena"}, ["swl"] = {"Swedish Sign Language"}, ["swm"] = {"Samosa"}, ["swn"] = {"Sawknah"}, ["swo"] = {"Shanenawa"}, ["swp"] = {"Suau"}, ["swq"] = {"Sharwa"}, ["swr"] = {"Saweru"}, ["sws"] = {"Seluwasan"}, ["swt"] = {"Sawila"}, ["swu"] = {"Suwawa"}, ["swv"] = {"Shekhawati"}, ["sww"] = {"Sowa"}, ["swx"] = {"Suruahá"}, ["swy"] = {"Sarua"}, ["sxb"] = {"Suba"}, ["sxc"] = {"Sicanian"}, ["sxe"] = {"Sighu"}, ["sxg"] = {"Shuhi", "Shixing"}, ["sxk"] = {"Southern Kalapuya"}, ["sxl"] = {"Selian"}, ["sxm"] = {"Samre"}, ["sxn"] = {"Sangir"}, ["sxo"] = {"Sorothaptic"}, ["sxr"] = {"Saaroa"}, ["sxs"] = {"Sasaru"}, ["sxu"] = {"Upper Saxon"}, ["sxw"] = {"Saxwe Gbe"}, ["sya"] = {"Siang"}, ["syb"] = {"Central Subanen"}, ["syc"] = {"Classical Syriac"}, ["syd"] = {"Samoyedic languages"}, ["syi"] = {"Seki"}, ["syk"] = {"Sukur"}, ["syl"] = {"Sylheti"}, ["sym"] = {"Maya Samo"}, ["syn"] = {"Senaya"}, ["syo"] = {"Suoy"}, ["syr"] = {"Syriac"}, ["sys"] = {"Sinyar"}, ["syw"] = {"Kagate"}, ["syx"] = {"Samay"}, ["syy"] = {"Al-Sayyid Bedouin Sign Language"}, ["sza"] = {"Semelai"}, ["szb"] = {"Ngalum"}, ["szc"] = {"Semaq Beri"}, ["sze"] = {"Seze"}, ["szg"] = {"Sengele"}, ["szl"] = {"Silesian"}, ["szn"] = {"Sula"}, ["szp"] = {"Suabo"}, ["szs"] = {"Solomon Islands Sign Language"}, ["szv"] = {"Isu (Fako Division)"}, ["szw"] = {"Sawai"}, ["szy"] = {"Sakizaya"}, ["taa"] = {"Lower Tanana"}, ["tab"] = {"Tabassaran"}, ["tac"] = {"Lowland Tarahumara"}, ["tad"] = {"Tause"}, ["tae"] = {"Tariana"}, ["taf"] = {"Tapirapé"}, ["tag"] = {"Tagoi"}, ["tai"] = {"Tai languages"}, ["taj"] = {"Eastern Tamang"}, ["tak"] = {"Tala"}, ["tal"] = {"Tal"}, ["tan"] = {"Tangale"}, ["tao"] = {"Yami"}, ["tap"] = {"Taabwa"}, ["taq"] = {"Tamasheq"}, ["tar"] = {"Central Tarahumara"}, ["tas"] = {"Tay Boi"}, ["tau"] = {"Upper Tanana"}, ["tav"] = {"Tatuyo"}, ["taw"] = {"Tai"}, ["tax"] = {"Tamki"}, ["tay"] = {"Atayal"}, ["taz"] = {"Tocho"}, ["tba"] = {"Aikanã"}, ["tbc"] = {"Takia"}, ["tbd"] = {"Kaki Ae"}, ["tbe"] = {"Tanimbili"}, ["tbf"] = {"Mandara"}, ["tbg"] = {"North Tairora"}, ["tbh"] = {"Dharawal", "Thurawal"}, ["tbi"] = {"Gaam"}, ["tbj"] = {"Tiang"}, ["tbk"] = {"Calamian Tagbanwa"}, ["tbl"] = {"Tboli"}, ["tbm"] = {"Tagbu"}, ["tbn"] = {"Barro Negro Tunebo"}, ["tbo"] = {"Tawala"}, ["tbp"] = {"Taworta", "Diebroud"}, ["tbq"] = {"Tibeto-Burman languages"}, ["tbr"] = {"Tumtum"}, ["tbs"] = {"Tanguat"}, ["tbt"] = {"Tembo (Kitembo)"}, ["tbu"] = {"Tubar"}, ["tbv"] = {"Tobo"}, ["tbw"] = {"Tagbanwa"}, ["tbx"] = {"Kapin"}, ["tby"] = {"Tabaru"}, ["tbz"] = {"Ditammari"}, ["tca"] = {"Ticuna"}, ["tcb"] = {"Tanacross"}, ["tcc"] = {"Datooga"}, ["tcd"] = {"Tafi"}, ["tce"] = {"Southern Tutchone"}, ["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"}, ["tcg"] = {"Tamagario"}, ["tch"] = {"Turks And Caicos Creole English"}, ["tci"] = {"Wára"}, ["tck"] = {"Tchitchege"}, ["tcl"] = {"Taman (Myanmar)"}, ["tcm"] = {"Tanahmerah"}, ["tcn"] = {"Tichurong"}, ["tco"] = {"Taungyo"}, ["tcp"] = {"Tawr Chin"}, ["tcq"] = {"Kaiy"}, ["tcs"] = {"Torres Strait Creole", "Yumplatok"}, ["tct"] = {"T'en"}, ["tcu"] = {"Southeastern Tarahumara"}, ["tcw"] = {"Tecpatlán Totonac"}, ["tcx"] = {"Toda"}, ["tcy"] = {"Tulu"}, ["tcz"] = {"Thado Chin"}, ["tda"] = {"Tagdal"}, ["tdb"] = {"Panchpargania"}, ["tdc"] = {"Emberá-Tadó"}, ["tdd"] = {"Tai Nüa"}, ["tde"] = {"Tiranige Diga Dogon"}, ["tdf"] = {"Talieng"}, ["tdg"] = {"Western Tamang"}, ["tdh"] = {"Thulung"}, ["tdi"] = {"Tomadino"}, ["tdj"] = {"Tajio"}, ["tdk"] = {"Tambas"}, ["tdl"] = {"Sur"}, ["tdm"] = {"Taruma"}, ["tdn"] = {"Tondano"}, ["tdo"] = {"Teme"}, ["tdq"] = {"Tita"}, ["tdr"] = {"Todrah"}, ["tds"] = {"Doutai"}, ["tdt"] = {"Tetun Dili"}, ["tdv"] = {"Toro"}, ["tdx"] = {"Tandroy-Mahafaly Malagasy"}, ["tdy"] = {"Tadyawan"}, ["tea"] = {"Temiar"}, ["teb"] = {"Tetete"}, ["tec"] = {"Terik"}, ["ted"] = {"Tepo Krumen"}, ["tee"] = {"Huehuetla Tepehua"}, ["tef"] = {"Teressa"}, ["teg"] = {"Teke-Tege"}, ["teh"] = {"Tehuelche"}, ["tei"] = {"Torricelli"}, ["tek"] = {"Ibali Teke"}, ["tem"] = {"Timne"}, ["ten"] = {"Tama (Colombia)"}, ["teo"] = {"Teso"}, ["tep"] = {"Tepecano"}, ["teq"] = {"Temein"}, ["ter"] = {"Tereno"}, ["tes"] = {"Tengger"}, ["tet"] = {"Tetum"}, ["teu"] = {"Soo"}, ["tev"] = {"Teor"}, ["tew"] = {"Tewa (USA)"}, ["tex"] = {"Tennet"}, ["tey"] = {"Tulishi"}, ["tez"] = {"Tetserret"}, ["tfi"] = {"Tofin Gbe"}, ["tfn"] = {"Tanaina"}, ["tfo"] = {"Tefaro"}, ["tfr"] = {"Teribe"}, ["tft"] = {"Ternate"}, ["tga"] = {"Sagalla"}, ["tgb"] = {"Tobilung"}, ["tgc"] = {"Tigak"}, ["tgd"] = {"Ciwogai"}, ["tge"] = {"Eastern Gorkha Tamang"}, ["tgf"] = {"Chalikha"}, ["tgh"] = {"Tobagonian Creole English"}, ["tgi"] = {"Lawunuia"}, ["tgj"] = {"Tagin"}, ["tgn"] = {"Tandaganon"}, ["tgo"] = {"Sudest"}, ["tgp"] = {"Tangoa"}, ["tgq"] = {"Tring"}, ["tgr"] = {"Tareng"}, ["tgs"] = {"Nume"}, ["tgt"] = {"Central Tagbanwa"}, ["tgu"] = {"Tanggu"}, ["tgv"] = {"Tingui-Boto"}, ["tgw"] = {"Tagwana Senoufo"}, ["tgx"] = {"Tagish"}, ["tgy"] = {"Togoyo"}, ["tgz"] = {"Tagalaka"}, ["thd"] = {"Kuuk Thaayorre", "Thayore"}, ["the"] = {"Chitwania Tharu"}, ["thf"] = {"Thangmi"}, ["thh"] = {"Northern Tarahumara"}, ["thi"] = {"Tai Long"}, ["thk"] = {"Tharaka", "Kitharaka"}, ["thl"] = {"Dangaura Tharu"}, ["thm"] = {"Aheu"}, ["thn"] = {"Thachanadan"}, ["thp"] = {"Thompson"}, ["thq"] = {"Kochila Tharu"}, ["thr"] = {"Rana Tharu"}, ["ths"] = {"Thakali"}, ["tht"] = {"Tahltan"}, ["thu"] = {"Thuri"}, ["thv"] = {"Tahaggart Tamahaq"}, ["thy"] = {"Tha"}, ["thz"] = {"Tayart Tamajeq"}, ["tia"] = {"Tidikelt Tamazight"}, ["tic"] = {"Tira"}, ["tif"] = {"Tifal"}, ["tig"] = {"Tigre"}, ["tih"] = {"Timugon Murut"}, ["tii"] = {"Tiene"}, ["tij"] = {"Tilung"}, ["tik"] = {"Tikar"}, ["til"] = {"Tillamook"}, ["tim"] = {"Timbe"}, ["tin"] = {"Tindi"}, ["tio"] = {"Teop"}, ["tip"] = {"Trimuris"}, ["tiq"] = {"Tiéfo"}, ["tis"] = {"Masadiit Itneg"}, ["tit"] = {"Tinigua"}, ["tiu"] = {"Adasen"}, ["tiv"] = {"Tiv"}, ["tiw"] = {"Tiwi"}, ["tix"] = {"Southern Tiwa"}, ["tiy"] = {"Tiruray"}, ["tiz"] = {"Tai Hongjin"}, ["tja"] = {"Tajuasohn"}, ["tjg"] = {"Tunjung"}, ["tji"] = {"Northern Tujia"}, ["tjj"] = {"Tjungundji"}, ["tjl"] = {"Tai Laing"}, ["tjm"] = {"Timucua"}, ["tjn"] = {"Tonjon"}, ["tjo"] = {"Temacine Tamazight"}, ["tjp"] = {"Tjupany"}, ["tjs"] = {"Southern Tujia"}, ["tju"] = {"Tjurruru"}, ["tjw"] = {"Djabwurrung"}, ["tka"] = {"Truká"}, ["tkb"] = {"Buksa"}, ["tkd"] = {"Tukudede"}, ["tke"] = {"Takwane"}, ["tkf"] = {"Tukumanféd"}, ["tkg"] = {"Tesaka Malagasy"}, ["tkl"] = {"Tokelau"}, ["tkm"] = {"Takelma"}, ["tkn"] = {"Toku-No-Shima"}, ["tkp"] = {"Tikopia"}, ["tkq"] = {"Tee"}, ["tkr"] = {"Tsakhur"}, ["tks"] = {"Takestani"}, ["tkt"] = {"Kathoriya Tharu"}, ["tku"] = {"Upper Necaxa Totonac"}, ["tkv"] = {"Mur Pano"}, ["tkw"] = {"Teanu"}, ["tkx"] = {"Tangko"}, ["tkz"] = {"Takua"}, ["tla"] = {"Southwestern Tepehuan"}, ["tlb"] = {"Tobelo"}, ["tlc"] = {"Yecuatla Totonac"}, ["tld"] = {"Talaud"}, ["tlf"] = {"Telefol"}, ["tlg"] = {"Tofanma"}, ["tlh"] = {"Klingon", "tlhIngan Hol"}, ["tli"] = {"Tlingit"}, ["tlj"] = {"Talinga-Bwisi"}, ["tlk"] = {"Taloki"}, ["tll"] = {"Tetela"}, ["tlm"] = {"Tolomako"}, ["tln"] = {"Talondo'"}, ["tlo"] = {"Talodi"}, ["tlp"] = {"Filomena Mata-Coahuitlán Totonac"}, ["tlq"] = {"Tai Loi"}, ["tlr"] = {"Talise"}, ["tls"] = {"Tambotalo"}, ["tlt"] = {"Sou Nama", "Teluti"}, ["tlu"] = {"Tulehu"}, ["tlv"] = {"Taliabu"}, ["tlx"] = {"Khehek"}, ["tly"] = {"Talysh"}, ["tma"] = {"Tama (Chad)"}, ["tmb"] = {"Katbol", "Avava"}, ["tmc"] = {"Tumak"}, ["tmd"] = {"Haruai"}, ["tme"] = {"Tremembé"}, ["tmf"] = {"Toba-Maskoy"}, ["tmg"] = {"Ternateño"}, ["tmh"] = {"Tamashek"}, ["tmi"] = {"Tutuba"}, ["tmj"] = {"Samarokena"}, ["tml"] = {"Tamnim Citak"}, ["tmm"] = {"Tai Thanh"}, ["tmn"] = {"Taman (Indonesia)"}, ["tmo"] = {"Temoq"}, ["tmq"] = {"Tumleo"}, ["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"}, ["tms"] = {"Tima"}, ["tmt"] = {"Tasmate"}, ["tmu"] = {"Iau"}, ["tmv"] = {"Tembo (Motembo)"}, ["tmw"] = {"Temuan"}, ["tmy"] = {"Tami"}, ["tmz"] = {"Tamanaku"}, ["tna"] = {"Tacana"}, ["tnb"] = {"Western Tunebo"}, ["tnc"] = {"Tanimuca-Retuarã"}, ["tnd"] = {"Angosturas Tunebo"}, ["tng"] = {"Tobanga"}, ["tnh"] = {"Maiani"}, ["tni"] = {"Tandia"}, ["tnk"] = {"Kwamera"}, ["tnl"] = {"Lenakel"}, ["tnm"] = {"Tabla"}, ["tnn"] = {"North Tanna"}, ["tno"] = {"Toromono"}, ["tnp"] = {"Whitesands"}, ["tnq"] = {"Taino"}, ["tnr"] = {"Ménik"}, ["tns"] = {"Tenis"}, ["tnt"] = {"Tontemboan"}, ["tnu"] = {"Tay Khang"}, ["tnv"] = {"Tangchangya"}, ["tnw"] = {"Tonsawang"}, ["tnx"] = {"Tanema"}, ["tny"] = {"Tongwe"}, ["tnz"] = {"Ten'edn"}, ["tob"] = {"Toba"}, ["toc"] = {"Coyutla Totonac"}, ["tod"] = {"Toma"}, ["tof"] = {"Gizrra"}, ["tog"] = {"Tonga (Nyasa)"}, ["toh"] = {"Gitonga"}, ["toi"] = {"Tonga (Zambia)"}, ["toj"] = {"Tojolabal"}, ["tok"] = {"Toki Pona"}, ["tol"] = {"Tolowa"}, ["tom"] = {"Tombulu"}, ["too"] = {"Xicotepec De Juárez Totonac"}, ["top"] = {"Papantla Totonac"}, ["toq"] = {"Toposa"}, ["tor"] = {"Togbo-Vara Banda"}, ["tos"] = {"Highland Totonac"}, ["tou"] = {"Tho"}, ["tov"] = {"Upper Taromi"}, ["tow"] = {"Jemez"}, ["tox"] = {"Tobian"}, ["toy"] = {"Topoiyo"}, ["toz"] = {"To"}, ["tpa"] = {"Taupota"}, ["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"}, ["tpe"] = {"Tippera"}, ["tpf"] = {"Tarpia"}, ["tpg"] = {"Kula"}, ["tpi"] = {"Tok Pisin"}, ["tpj"] = {"Tapieté"}, ["tpk"] = {"Tupinikin"}, ["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"}, ["tpm"] = {"Tampulma"}, ["tpn"] = {"Tupinambá"}, ["tpo"] = {"Tai Pao"}, ["tpp"] = {"Pisaflores Tepehua"}, ["tpq"] = {"Tukpa"}, ["tpr"] = {"Tuparí"}, ["tpt"] = {"Tlachichilco Tepehua"}, ["tpu"] = {"Tampuan"}, ["tpv"] = {"Tanapag"}, ["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"}, ["tpy"] = {"Trumai"}, ["tpz"] = {"Tinputz"}, ["tqb"] = {"Tembé"}, ["tql"] = {"Lehali"}, ["tqm"] = {"Turumsa"}, ["tqn"] = {"Tenino"}, ["tqo"] = {"Toaripi"}, ["tqp"] = {"Tomoip"}, ["tqq"] = {"Tunni"}, ["tqr"] = {"Torona"}, ["tqt"] = {"Western Totonac"}, ["tqu"] = {"Touo"}, ["tqw"] = {"Tonkawa"}, ["tra"] = {"Tirahi"}, ["trb"] = {"Terebu"}, ["trc"] = {"Copala Triqui"}, ["trd"] = {"Turi"}, ["tre"] = {"East Tarangan"}, ["trf"] = {"Trinidadian Creole English"}, ["trg"] = {"Lishán Didán"}, ["trh"] = {"Turaka"}, ["tri"] = {"Trió"}, ["trj"] = {"Toram"}, ["trk"] = {"Turkic languages"}, ["trl"] = {"Traveller Scottish"}, ["trm"] = {"Tregami"}, ["trn"] = {"Trinitario"}, ["tro"] = {"Tarao Naga"}, ["trp"] = {"Kok Borok"}, ["trq"] = {"San Martín Itunyoso Triqui"}, ["trr"] = {"Taushiro"}, ["trs"] = {"Chicahuaxtla Triqui"}, ["trt"] = {"Tunggare"}, ["tru"] = {"Turoyo", "Surayt"}, ["trv"] = {"Sediq", "Seediq", "Taroko"}, ["trw"] = {"Torwali"}, ["trx"] = {"Tringgus-Sembaan Bidayuh"}, ["try"] = {"Turung"}, ["trz"] = {"Torá"}, ["tsa"] = {"Tsaangi"}, ["tsb"] = {"Tsamai"}, ["tsc"] = {"Tswa"}, ["tsd"] = {"Tsakonian"}, ["tse"] = {"Tunisian Sign Language"}, ["tsg"] = {"Tausug"}, ["tsh"] = {"Tsuvan"}, ["tsi"] = {"Tsimshian"}, ["tsj"] = {"Tshangla"}, ["tsk"] = {"Tseku"}, ["tsl"] = {"Ts'ün-Lao"}, ["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"}, ["tsp"] = {"Northern Toussian"}, ["tsq"] = {"Thai Sign Language"}, ["tsr"] = {"Akei"}, ["tss"] = {"Taiwan Sign Language"}, ["tst"] = {"Tondi Songway Kiini"}, ["tsu"] = {"Tsou"}, ["tsv"] = {"Tsogo"}, ["tsw"] = {"Tsishingini"}, ["tsx"] = {"Mubami"}, ["tsy"] = {"Tebul Sign Language"}, ["tsz"] = {"Purepecha"}, ["tta"] = {"Tutelo"}, ["ttb"] = {"Gaa"}, ["ttc"] = {"Tektiteko"}, ["ttd"] = {"Tauade"}, ["tte"] = {"Bwanabwana"}, ["ttf"] = {"Tuotomb"}, ["ttg"] = {"Tutong"}, ["tth"] = {"Upper Ta'oih"}, ["tti"] = {"Tobati"}, ["ttj"] = {"Tooro"}, ["ttk"] = {"Totoro"}, ["ttl"] = {"Totela"}, ["ttm"] = {"Northern Tutchone"}, ["ttn"] = {"Towei"}, ["tto"] = {"Lower Ta'oih"}, ["ttp"] = {"Tombelala"}, ["ttq"] = {"Tawallammat Tamajaq"}, ["ttr"] = {"Tera"}, ["tts"] = {"Northeastern Thai"}, ["ttt"] = {"Muslim Tat"}, ["ttu"] = {"Torau"}, ["ttv"] = {"Titan"}, ["ttw"] = {"Long Wat"}, ["tty"] = {"Sikaritai"}, ["ttz"] = {"Tsum"}, ["tua"] = {"Wiarumus"}, ["tub"] = {"Tübatulabal"}, ["tuc"] = {"Mutu"}, ["tud"] = {"Tuxá"}, ["tue"] = {"Tuyuca"}, ["tuf"] = {"Central Tunebo"}, ["tug"] = {"Tunia"}, ["tuh"] = {"Taulil"}, ["tui"] = {"Tupuri"}, ["tuj"] = {"Tugutil"}, ["tul"] = {"Tula"}, ["tum"] = {"Tumbuka"}, ["tun"] = {"Tunica"}, ["tuo"] = {"Tucano"}, ["tup"] = {"Tupi languages"}, ["tuq"] = {"Tedaga"}, ["tus"] = {"Tuscarora"}, ["tut"] = {"Altaic languages"}, ["tuu"] = {"Tututni"}, ["tuv"] = {"Turkana"}, ["tuw"] = {"Tungus languages"}, ["tux"] = {"Tuxináwa"}, ["tuy"] = {"Tugen"}, ["tuz"] = {"Turka"}, ["tva"] = {"Vaghua"}, ["tvd"] = {"Tsuvadi"}, ["tve"] = {"Te'un"}, ["tvi"] = {"Tulai"}, ["tvk"] = {"Southeast Ambrym"}, ["tvl"] = {"Tuvalu"}, ["tvm"] = {"Tela-Masbuar"}, ["tvn"] = {"Tavoyan"}, ["tvo"] = {"Tidore"}, ["tvs"] = {"Taveta"}, ["tvt"] = {"Tutsa Naga"}, ["tvu"] = {"Tunen"}, ["tvw"] = {"Sedoa"}, ["tvx"] = {"Taivoan"}, ["tvy"] = {"Timor Pidgin"}, ["twa"] = {"Twana"}, ["twb"] = {"Western Tawbuid"}, ["twc"] = {"Teshenawa"}, ["twd"] = {"Twents"}, ["twe"] = {"Tewa (Indonesia)"}, ["twf"] = {"Northern Tiwa"}, ["twg"] = {"Tereweng"}, ["twh"] = {"Tai Dón"}, ["twl"] = {"Tawara"}, ["twm"] = {"Tawang Monpa"}, ["twn"] = {"Twendi"}, ["two"] = {"Tswapong"}, ["twp"] = {"Ere"}, ["twq"] = {"Tasawaq"}, ["twr"] = {"Southwestern Tarahumara"}, ["twt"] = {"Turiwára"}, ["twu"] = {"Termanu"}, ["tww"] = {"Tuwari"}, ["twx"] = {"Tewe"}, ["twy"] = {"Tawoyan"}, ["txa"] = {"Tombonuo"}, ["txb"] = {"Tokharian B"}, ["txc"] = {"Tsetsaut"}, ["txe"] = {"Totoli"}, ["txg"] = {"Tangut"}, ["txh"] = {"Thracian"}, ["txi"] = {"Ikpeng"}, ["txj"] = {"Tarjumo"}, ["txm"] = {"Tomini"}, ["txn"] = {"West Tarangan"}, ["txo"] = {"Toto"}, ["txq"] = {"Tii"}, ["txr"] = {"Tartessian"}, ["txs"] = {"Tonsea"}, ["txt"] = {"Citak"}, ["txu"] = {"Kayapó"}, ["txx"] = {"Tatana"}, ["txy"] = {"Tanosy Malagasy"}, ["tya"] = {"Tauya"}, ["tye"] = {"Kyanga"}, ["tyh"] = {"O'du"}, ["tyi"] = {"Teke-Tsaayi"}, ["tyj"] = {"Tai Do", "Tai Yo"}, ["tyl"] = {"Thu Lao"}, ["tyn"] = {"Kombai"}, ["typ"] = {"Thaypan"}, ["tyr"] = {"Tai Daeng"}, ["tys"] = {"Tày Sa Pa"}, ["tyt"] = {"Tày Tac"}, ["tyu"] = {"Kua"}, ["tyv"] = {"Tuvinian"}, ["tyx"] = {"Teke-Tyee"}, ["tyy"] = {"Tiyaa"}, ["tyz"] = {"Tày"}, ["tza"] = {"Tanzanian Sign Language"}, ["tzh"] = {"Tzeltal"}, ["tzj"] = {"Tz'utujil"}, ["tzl"] = {"Talossan"}, ["tzm"] = {"Central Atlas Tamazight"}, ["tzn"] = {"Tugun"}, ["tzo"] = {"Tzotzil"}, ["tzx"] = {"Tabriak"}, ["uam"] = {"Uamué"}, ["uan"] = {"Kuan"}, ["uar"] = {"Tairuma"}, ["uba"] = {"Ubang"}, ["ubi"] = {"Ubi"}, ["ubl"] = {"Buhi'non Bikol"}, ["ubr"] = {"Ubir"}, ["ubu"] = {"Umbu-Ungu"}, ["uby"] = {"Ubykh"}, ["uda"] = {"Uda"}, ["ude"] = {"Udihe"}, ["udg"] = {"Muduga"}, ["udi"] = {"Udi"}, ["udj"] = {"Ujir"}, ["udl"] = {"Wuzlam"}, ["udm"] = {"Udmurt"}, ["udu"] = {"Uduk"}, ["ues"] = {"Kioko"}, ["ufi"] = {"Ufim"}, ["uga"] = {"Ugaritic"}, ["ugb"] = {"Kuku-Ugbanh"}, ["uge"] = {"Ughele"}, ["ugh"] = {"Kubachi"}, ["ugn"] = {"Ugandan Sign Language"}, ["ugo"] = {"Ugong"}, ["ugy"] = {"Uruguayan Sign Language"}, ["uha"] = {"Uhami"}, ["uhn"] = {"Damal"}, ["uis"] = {"Uisai"}, ["uiv"] = {"Iyive"}, ["uji"] = {"Tanjijili"}, ["uka"] = {"Kaburi"}, ["ukg"] = {"Ukuriguma"}, ["ukh"] = {"Ukhwejo"}, ["uki"] = {"Kui (India)"}, ["ukk"] = {"Muak Sa-aak"}, ["ukl"] = {"Ukrainian Sign Language"}, ["ukp"] = {"Ukpe-Bayobiri"}, ["ukq"] = {"Ukwa"}, ["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"}, ["uku"] = {"Ukue"}, ["ukv"] = {"Kuku"}, ["ukw"] = {"Ukwuani-Aboh-Ndoni"}, ["uky"] = {"Kuuk-Yak"}, ["ula"] = {"Fungwa"}, ["ulb"] = {"Ulukwumi"}, ["ulc"] = {"Ulch"}, ["ule"] = {"Lule"}, ["ulf"] = {"Usku", "Afra"}, ["uli"] = {"Ulithian"}, ["ulk"] = {"Meriam Mir"}, ["ull"] = {"Ullatan"}, ["ulm"] = {"Ulumanda'"}, ["uln"] = {"Unserdeutsch"}, ["ulu"] = {"Uma' Lung"}, ["ulw"] = {"Ulwa"}, ["uly"] = {"Buli"}, ["uma"] = {"Umatilla"}, ["umb"] = {"Umbundu"}, ["umc"] = {"Marrucinian"}, ["umd"] = {"Umbindhamu"}, ["umg"] = {"Morrobalama", "Umbuygamu"}, ["umi"] = {"Ukit"}, ["umm"] = {"Umon"}, ["umn"] = {"Makyan Naga"}, ["umo"] = {"Umotína"}, ["ump"] = {"Umpila"}, ["umr"] = {"Umbugarla"}, ["ums"] = {"Pendau"}, ["umu"] = {"Munsee"}, ["una"] = {"North Watut"}, ["und"] = {"Undetermined"}, ["une"] = {"Uneme"}, ["ung"] = {"Ngarinyin"}, ["uni"] = {"Uni"}, ["unk"] = {"Enawené-Nawé"}, ["unm"] = {"Unami"}, ["unn"] = {"Kurnai"}, ["unr"] = {"Mundari"}, ["unu"] = {"Unubahe"}, ["unx"] = {"Munda"}, ["unz"] = {"Unde Kaili"}, ["uon"] = {"Kulon"}, ["upi"] = {"Umeda"}, ["upv"] = {"Uripiv-Wala-Rano-Atchin"}, ["ura"] = {"Urarina"}, ["urb"] = {"Urubú-Kaapor", "Kaapor"}, ["urc"] = {"Urningangg"}, ["ure"] = {"Uru"}, ["urf"] = {"Uradhi"}, ["urg"] = {"Urigina"}, ["urh"] = {"Urhobo"}, ["uri"] = {"Urim"}, ["urj"] = {"Uralic languages"}, ["urk"] = {"Urak Lawoi'"}, ["url"] = {"Urali"}, ["urm"] = {"Urapmin"}, ["urn"] = {"Uruangnirin"}, ["uro"] = {"Ura (Papua New Guinea)"}, ["urp"] = {"Uru-Pa-In"}, ["urr"] = {"Lehalurup", "Löyöp"}, ["urt"] = {"Urat"}, ["uru"] = {"Urumi"}, ["urv"] = {"Uruava"}, ["urw"] = {"Sop"}, ["urx"] = {"Urimo"}, ["ury"] = {"Orya"}, ["urz"] = {"Uru-Eu-Wau-Wau"}, ["usa"] = {"Usarufa"}, ["ush"] = {"Ushojo"}, ["usi"] = {"Usui"}, ["usk"] = {"Usaghade"}, ["usp"] = {"Uspanteco"}, ["uss"] = {"us-Saare"}, ["usu"] = {"Uya"}, ["uta"] = {"Otank"}, ["ute"] = {"Ute-Southern Paiute"}, ["uth"] = {"ut-Hun"}, ["utp"] = {"Amba (Solomon Islands)"}, ["utr"] = {"Etulo"}, ["utu"] = {"Utu"}, ["uum"] = {"Urum"}, ["uur"] = {"Ura (Vanuatu)"}, ["uuu"] = {"U"}, ["uve"] = {"West Uvean", "Fagauvea"}, ["uvh"] = {"Uri"}, ["uvl"] = {"Lote"}, ["uwa"] = {"Kuku-Uwanh"}, ["uya"] = {"Doko-Uyanga"}, ["uzn"] = {"Northern Uzbek"}, ["uzs"] = {"Southern Uzbek"}, ["vaa"] = {"Vaagri Booli"}, ["vae"] = {"Vale"}, ["vaf"] = {"Vafsi"}, ["vag"] = {"Vagla"}, ["vah"] = {"Varhadi-Nagpuri"}, ["vai"] = {"Vai"}, ["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"}, ["val"] = {"Vehes"}, ["vam"] = {"Vanimo"}, ["van"] = {"Valman"}, ["vao"] = {"Vao"}, ["vap"] = {"Vaiphei"}, ["var"] = {"Huarijio"}, ["vas"] = {"Vasavi"}, ["vau"] = {"Vanuma"}, ["vav"] = {"Varli"}, ["vay"] = {"Wayu"}, ["vbb"] = {"Southeast Babar"}, ["vbk"] = {"Southwestern Bontok"}, ["vec"] = {"Venetian"}, ["ved"] = {"Veddah"}, ["vel"] = {"Veluws"}, ["vem"] = {"Vemgo-Mabas"}, ["veo"] = {"Ventureño"}, ["vep"] = {"Veps"}, ["ver"] = {"Mom Jango"}, ["vgr"] = {"Vaghri"}, ["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"}, ["vic"] = {"Virgin Islands Creole English"}, ["vid"] = {"Vidunda"}, ["vif"] = {"Vili"}, ["vig"] = {"Viemo"}, ["vil"] = {"Vilela"}, ["vin"] = {"Vinza"}, ["vis"] = {"Vishavan"}, ["vit"] = {"Viti"}, ["viv"] = {"Iduna"}, ["vjk"] = {"Bajjika"}, ["vka"] = {"Kariyarra"}, ["vkj"] = {"Kujarge"}, ["vkk"] = {"Kaur"}, ["vkl"] = {"Kulisusu"}, ["vkm"] = {"Kamakan"}, ["vkn"] = {"Koro Nulu"}, ["vko"] = {"Kodeoha"}, ["vkp"] = {"Korlai Creole Portuguese"}, ["vkt"] = {"Tenggarong Kutai Malay"}, ["vku"] = {"Kurrama"}, ["vkz"] = {"Koro Zuba"}, ["vlp"] = {"Valpei"}, ["vls"] = {"Vlaams"}, ["vma"] = {"Martuyhunira"}, ["vmb"] = {"Barbaram"}, ["vmc"] = {"Juxtlahuaca Mixtec"}, ["vmd"] = {"Mudu Koraga"}, ["vme"] = {"East Masela"}, ["vmf"] = {"Mainfränkisch"}, ["vmg"] = {"Lungalunga"}, ["vmh"] = {"Maraghei"}, ["vmi"] = {"Miwa"}, ["vmj"] = {"Ixtayutla Mixtec"}, ["vmk"] = {"Makhuwa-Shirima"}, ["vml"] = {"Malgana"}, ["vmm"] = {"Mitlatongo Mixtec"}, ["vmp"] = {"Soyaltepec Mazatec"}, ["vmq"] = {"Soyaltepec Mixtec"}, ["vmr"] = {"Marenje"}, ["vms"] = {"Moksela"}, ["vmu"] = {"Muluridyi"}, ["vmv"] = {"Valley Maidu"}, ["vmw"] = {"Makhuwa"}, ["vmx"] = {"Tamazola Mixtec"}, ["vmy"] = {"Ayautla Mazatec"}, ["vmz"] = {"Mazatlán Mazatec"}, ["vnk"] = {"Vano", "Lovono"}, ["vnm"] = {"Vinmavis", "Neve'ei"}, ["vnp"] = {"Vunapu"}, ["vor"] = {"Voro"}, ["vot"] = {"Votic"}, ["vra"] = {"Vera'a"}, ["vro"] = {"Võro"}, ["vrs"] = {"Varisi"}, ["vrt"] = {"Burmbar", "Banam Bay"}, ["vsi"] = {"Moldova Sign Language"}, ["vsl"] = {"Venezuelan Sign Language"}, ["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"}, ["vto"] = {"Vitou"}, ["vum"] = {"Vumbu"}, ["vun"] = {"Vunjo"}, ["vut"] = {"Vute"}, ["vwa"] = {"Awa (China)"}, ["waa"] = {"Walla Walla"}, ["wab"] = {"Wab"}, ["wac"] = {"Wasco-Wishram"}, ["wad"] = {"Wamesa", "Wondama"}, ["wae"] = {"Walser"}, ["waf"] = {"Wakoná"}, ["wag"] = {"Wa'ema"}, ["wah"] = {"Watubela"}, ["wai"] = {"Wares"}, ["waj"] = {"Waffa"}, ["wak"] = {"Wakashan languages"}, ["wal"] = {"Wolaytta", "Wolaitta"}, ["wam"] = {"Wampanoag"}, ["wan"] = {"Wan"}, ["wao"] = {"Wappo"}, ["wap"] = {"Wapishana"}, ["waq"] = {"Wagiman"}, ["war"] = {"Waray (Philippines)"}, ["was"] = {"Washo"}, ["wat"] = {"Kaninuwa"}, ["wau"] = {"Waurá"}, ["wav"] = {"Waka"}, ["waw"] = {"Waiwai"}, ["wax"] = {"Watam", "Marangis"}, ["way"] = {"Wayana"}, ["waz"] = {"Wampur"}, ["wba"] = {"Warao"}, ["wbb"] = {"Wabo"}, ["wbe"] = {"Waritai"}, ["wbf"] = {"Wara"}, ["wbh"] = {"Wanda"}, ["wbi"] = {"Vwanji"}, ["wbj"] = {"Alagwa"}, ["wbk"] = {"Waigali"}, ["wbl"] = {"Wakhi"}, ["wbm"] = {"Wa"}, ["wbp"] = {"Warlpiri"}, ["wbq"] = {"Waddar"}, ["wbr"] = {"Wagdi"}, ["wbs"] = {"West Bengal Sign Language"}, ["wbt"] = {"Warnman"}, ["wbv"] = {"Wajarri"}, ["wbw"] = {"Woi"}, ["wca"] = {"Yanomámi"}, ["wci"] = {"Waci Gbe"}, ["wdd"] = {"Wandji"}, ["wdg"] = {"Wadaginam"}, ["wdj"] = {"Wadjiginy"}, ["wdk"] = {"Wadikali"}, ["wdt"] = {"Wendat"}, ["wdu"] = {"Wadjigu"}, ["wdy"] = {"Wadjabangayi"}, ["wea"] = {"Wewaw"}, ["wec"] = {"Wè Western"}, ["wed"] = {"Wedau"}, ["weg"] = {"Wergaia"}, ["weh"] = {"Weh"}, ["wei"] = {"Kiunum"}, ["wem"] = {"Weme Gbe"}, ["wen"] = {"Sorbian languages"}, ["weo"] = {"Wemale"}, ["wep"] = {"Westphalien"}, ["wer"] = {"Weri"}, ["wes"] = {"Cameroon Pidgin"}, ["wet"] = {"Perai"}, ["weu"] = {"Rawngtu Chin"}, ["wew"] = {"Wejewa"}, ["wfg"] = {"Yafi", "Zorop"}, ["wga"] = {"Wagaya"}, ["wgb"] = {"Wagawaga"}, ["wgg"] = {"Wangkangurru", "Wangganguru"}, ["wgi"] = {"Wahgi"}, ["wgo"] = {"Waigeo"}, ["wgu"] = {"Wirangu"}, ["wgy"] = {"Warrgamay"}, ["wha"] = {"Sou Upaa", "Manusela"}, ["whg"] = {"North Wahgi"}, ["whk"] = {"Wahau Kenyah"}, ["whu"] = {"Wahau Kayan"}, ["wib"] = {"Southern Toussian"}, ["wic"] = {"Wichita"}, ["wie"] = {"Wik-Epa"}, ["wif"] = {"Wik-Keyangan"}, ["wig"] = {"Wik Ngathan"}, ["wih"] = {"Wik-Me'anha"}, ["wii"] = {"Minidien"}, ["wij"] = {"Wik-Iiyanh"}, ["wik"] = {"Wikalkan"}, ["wil"] = {"Wilawila"}, ["wim"] = {"Wik-Mungkan"}, ["win"] = {"Ho-Chunk"}, ["wir"] = {"Wiraféd"}, ["wiu"] = {"Wiru"}, ["wiv"] = {"Vitu"}, ["wiy"] = {"Wiyot"}, ["wja"] = {"Waja"}, ["wji"] = {"Warji"}, ["wka"] = {"Kw'adza"}, ["wkb"] = {"Kumbaran"}, ["wkd"] = {"Wakde", "Mo"}, ["wkl"] = {"Kalanadi"}, ["wkr"] = {"Keerray-Woorroong"}, ["wku"] = {"Kunduvadi"}, ["wkw"] = {"Wakawaka"}, ["wky"] = {"Wangkayutyuru"}, ["wla"] = {"Walio"}, ["wlc"] = {"Mwali Comorian"}, ["wle"] = {"Wolane"}, ["wlg"] = {"Kunbarlang"}, ["wlh"] = {"Welaun"}, ["wli"] = {"Waioli"}, ["wlk"] = {"Wailaki"}, ["wll"] = {"Wali (Sudan)"}, ["wlm"] = {"Middle Welsh"}, ["wlo"] = {"Wolio"}, ["wlr"] = {"Wailapa"}, ["wls"] = {"Wallisian"}, ["wlu"] = {"Wuliwuli"}, ["wlv"] = {"Wichí Lhamtés Vejoz"}, ["wlw"] = {"Walak"}, ["wlx"] = {"Wali (Ghana)"}, ["wly"] = {"Waling"}, ["wma"] = {"Mawa (Nigeria)"}, ["wmb"] = {"Wambaya"}, ["wmc"] = {"Wamas"}, ["wmd"] = {"Mamaindé"}, ["wme"] = {"Wambule"}, ["wmg"] = {"Western Minyag"}, ["wmh"] = {"Waima'a"}, ["wmi"] = {"Wamin"}, ["wmm"] = {"Maiwa (Indonesia)"}, ["wmn"] = {"Waamwang"}, ["wmo"] = {"Wom (Papua New Guinea)"}, ["wms"] = {"Wambon"}, ["wmt"] = {"Walmajarri"}, ["wmw"] = {"Mwani"}, ["wmx"] = {"Womo"}, ["wnb"] = {"Mokati"}, ["wnc"] = {"Wantoat"}, ["wnd"] = {"Wandarang"}, ["wne"] = {"Waneci"}, ["wng"] = {"Wanggom"}, ["wni"] = {"Ndzwani Comorian"}, ["wnk"] = {"Wanukaka"}, ["wnm"] = {"Wanggamala"}, ["wnn"] = {"Wunumara"}, ["wno"] = {"Wano"}, ["wnp"] = {"Wanap"}, ["wnu"] = {"Usan"}, ["wnw"] = {"Wintu"}, ["wny"] = {"Wanyi", "Waanyi"}, ["woa"] = {"Kuwema", "Tyaraity"}, ["wob"] = {"Wè Northern"}, ["woc"] = {"Wogeo"}, ["wod"] = {"Wolani"}, ["woe"] = {"Woleaian"}, ["wof"] = {"Gambian Wolof"}, ["wog"] = {"Wogamusin"}, ["woi"] = {"Kamang"}, ["wok"] = {"Longto"}, ["wom"] = {"Wom (Nigeria)"}, ["won"] = {"Wongo"}, ["woo"] = {"Manombai"}, ["wor"] = {"Woria"}, ["wos"] = {"Hanga Hundi"}, ["wow"] = {"Wawonii"}, ["woy"] = {"Weyto"}, ["wpc"] = {"Maco"}, ["wrb"] = {"Waluwarra", "Warluwara"}, ["wrg"] = {"Warungu", "Gudjal"}, ["wrh"] = {"Wiradjuri"}, ["wri"] = {"Wariyangga"}, ["wrk"] = {"Garrwa"}, ["wrl"] = {"Warlmanpa"}, ["wrm"] = {"Warumungu"}, ["wrn"] = {"Warnang"}, ["wro"] = {"Worrorra"}, ["wrp"] = {"Waropen"}, ["wrr"] = {"Wardaman"}, ["wrs"] = {"Waris"}, ["wru"] = {"Waru"}, ["wrv"] = {"Waruna"}, ["wrw"] = {"Gugu Warra"}, ["wrx"] = {"Wae Rana"}, ["wry"] = {"Merwari"}, ["wrz"] = {"Waray (Australia)"}, ["wsa"] = {"Warembori"}, ["wsg"] = {"Adilabad Gondi"}, ["wsi"] = {"Wusi"}, ["wsk"] = {"Waskia"}, ["wsr"] = {"Owenia"}, ["wss"] = {"Wasa"}, ["wsu"] = {"Wasu"}, ["wsv"] = {"Wotapuri-Katarqalai"}, ["wtb"] = {"Matambwe"}, ["wtf"] = {"Watiwa"}, ["wth"] = {"Wathawurrung"}, ["wti"] = {"Berta"}, ["wtk"] = {"Watakataui"}, ["wtm"] = {"Mewati"}, ["wtw"] = {"Wotu"}, ["wua"] = {"Wikngenchera"}, ["wub"] = {"Wunambal"}, ["wud"] = {"Wudu"}, ["wuh"] = {"Wutunhua"}, ["wul"] = {"Silimo"}, ["wum"] = {"Wumbvu"}, ["wun"] = {"Bungu"}, ["wur"] = {"Wurrugu"}, ["wut"] = {"Wutung"}, ["wuu"] = {"Wu Chinese"}, ["wuv"] = {"Wuvulu-Aua"}, ["wux"] = {"Wulna"}, ["wuy"] = {"Wauyai"}, ["wwa"] = {"Waama"}, ["wwb"] = {"Wakabunga"}, ["wwo"] = {"Wetamut", "Dorig"}, ["wwr"] = {"Warrwa"}, ["www"] = {"Wawa"}, ["wxa"] = {"Waxianghua"}, ["wxw"] = {"Wardandi"}, ["wyb"] = {"Wangaaybuwan-Ngiyambaa"}, ["wyi"] = {"Woiwurrung"}, ["wym"] = {"Wymysorys"}, ["wyn"] = {"Wyandot"}, ["wyr"] = {"Wayoró"}, ["wyy"] = {"Western Fijian"}, ["xaa"] = {"Andalusian Arabic"}, ["xab"] = {"Sambe"}, ["xac"] = {"Kachari"}, ["xad"] = {"Adai"}, ["xae"] = {"Aequian"}, ["xag"] = {"Aghwan"}, ["xai"] = {"Kaimbé"}, ["xaj"] = {"Ararandewára"}, ["xak"] = {"Máku"}, ["xal"] = {"Kalmyk", "Oirat"}, ["xam"] = {"ǀXam"}, ["xan"] = {"Xamtanga"}, ["xao"] = {"Khao"}, ["xap"] = {"Apalachee"}, ["xaq"] = {"Aquitanian"}, ["xar"] = {"Karami"}, ["xas"] = {"Kamas"}, ["xat"] = {"Katawixi"}, ["xau"] = {"Kauwera"}, ["xav"] = {"Xavánte"}, ["xaw"] = {"Kawaiisu"}, ["xay"] = {"Kayan Mahakam"}, ["xbb"] = {"Lower Burdekin"}, ["xbc"] = {"Bactrian"}, ["xbd"] = {"Bindal"}, ["xbe"] = {"Bigambal"}, ["xbg"] = {"Bunganditj"}, ["xbi"] = {"Kombio"}, ["xbj"] = {"Birrpayi"}, ["xbm"] = {"Middle Breton"}, ["xbn"] = {"Kenaboi"}, ["xbo"] = {"Bolgarian"}, ["xbp"] = {"Bibbulman"}, ["xbr"] = {"Kambera"}, ["xbw"] = {"Kambiwá"}, ["xby"] = {"Batjala", "Batyala"}, ["xcb"] = {"Cumbric"}, ["xcc"] = {"Camunic"}, ["xce"] = {"Celtiberian"}, ["xcg"] = {"Cisalpine Gaulish"}, ["xch"] = {"Chemakum", "Chimakum"}, ["xcl"] = {"Classical Armenian"}, ["xcm"] = {"Comecrudo"}, ["xcn"] = {"Cotoname"}, ["xco"] = {"Chorasmian"}, ["xcr"] = {"Carian"}, ["xct"] = {"Classical Tibetan"}, ["xcu"] = {"Curonian"}, ["xcv"] = {"Chuvantsy"}, ["xcw"] = {"Coahuilteco"}, ["xcy"] = {"Cayuse"}, ["xda"] = {"Darkinyung"}, ["xdc"] = {"Dacian"}, ["xdk"] = {"Dharuk"}, ["xdm"] = {"Edomite"}, ["xdo"] = {"Kwandu"}, ["xdq"] = {"Kaitag"}, ["xdy"] = {"Malayic Dayak"}, ["xeb"] = {"Eblan"}, ["xed"] = {"Hdi"}, ["xeg"] = {"ǁXegwi"}, ["xel"] = {"Kelo"}, ["xem"] = {"Kembayan"}, ["xep"] = {"Epi-Olmec"}, ["xer"] = {"Xerénte"}, ["xes"] = {"Kesawai"}, ["xet"] = {"Xetá"}, ["xeu"] = {"Keoru-Ahia"}, ["xfa"] = {"Faliscan"}, ["xga"] = {"Galatian"}, ["xgb"] = {"Gbin"}, ["xgd"] = {"Gudang"}, ["xgf"] = {"Gabrielino-Fernandeño"}, ["xgg"] = {"Goreng"}, ["xgi"] = {"Garingbal"}, ["xgl"] = {"Galindan"}, ["xgm"] = {"Dharumbal", "Guwinmal"}, ["xgn"] = {"Mongolian languages"}, ["xgr"] = {"Garza"}, ["xgu"] = {"Unggumi"}, ["xgw"] = {"Guwa"}, ["xha"] = {"Harami"}, ["xhc"] = {"Hunnic"}, ["xhd"] = {"Hadrami"}, ["xhe"] = {"Khetrani"}, ["xhm"] = {"Middle Khmer (1400 to 1850 CE)"}, ["xhr"] = {"Hernican"}, ["xht"] = {"Hattic"}, ["xhu"] = {"Hurrian"}, ["xhv"] = {"Khua"}, ["xib"] = {"Iberian"}, ["xii"] = {"Xiri"}, ["xil"] = {"Illyrian"}, ["xin"] = {"Xinca"}, ["xir"] = {"Xiriâna"}, ["xis"] = {"Kisan"}, ["xiv"] = {"Indus Valley Language"}, ["xiy"] = {"Xipaya"}, ["xjb"] = {"Minjungbal"}, ["xjt"] = {"Jaitmatang"}, ["xka"] = {"Kalkoti"}, ["xkb"] = {"Northern Nago"}, ["xkc"] = {"Kho'ini"}, ["xkd"] = {"Mendalam Kayan"}, ["xke"] = {"Kereho"}, ["xkf"] = {"Khengkha"}, ["xkg"] = {"Kagoro"}, ["xki"] = {"Kenyan Sign Language"}, ["xkj"] = {"Kajali"}, ["xkk"] = {"Kachok", "Kaco'"}, ["xkl"] = {"Mainstream Kenyah"}, ["xkn"] = {"Kayan River Kayan"}, ["xko"] = {"Kiorr"}, ["xkp"] = {"Kabatei"}, ["xkq"] = {"Koroni"}, ["xkr"] = {"Xakriabá"}, ["xks"] = {"Kumbewaha"}, ["xkt"] = {"Kantosi"}, ["xku"] = {"Kaamba"}, ["xkv"] = {"Kgalagadi"}, ["xkw"] = {"Kembra"}, ["xkx"] = {"Karore"}, ["xky"] = {"Uma' Lasan"}, ["xkz"] = {"Kurtokha"}, ["xla"] = {"Kamula"}, ["xlb"] = {"Loup B"}, ["xlc"] = {"Lycian"}, ["xld"] = {"Lydian"}, ["xle"] = {"Lemnian"}, ["xlg"] = {"Ligurian (Ancient)"}, ["xli"] = {"Liburnian"}, ["xln"] = {"Alanic"}, ["xlo"] = {"Loup A"}, ["xlp"] = {"Lepontic"}, ["xls"] = {"Lusitanian"}, ["xlu"] = {"Cuneiform Luwian"}, ["xly"] = {"Elymian"}, ["xma"] = {"Mushungulu"}, ["xmb"] = {"Mbonga"}, ["xmc"] = {"Makhuwa-Marrevone"}, ["xmd"] = {"Mbudum"}, ["xme"] = {"Median"}, ["xmf"] = {"Mingrelian"}, ["xmg"] = {"Mengaka"}, ["xmh"] = {"Kugu-Muminh"}, ["xmj"] = {"Majera"}, ["xmk"] = {"Ancient Macedonian"}, ["xml"] = {"Malaysian Sign Language"}, ["xmm"] = {"Manado Malay"}, ["xmn"] = {"Manichaean Middle Persian"}, ["xmo"] = {"Morerebi"}, ["xmp"] = {"Kuku-Mu'inh"}, ["xmq"] = {"Kuku-Mangk"}, ["xmr"] = {"Meroitic"}, ["xms"] = {"Moroccan Sign Language"}, ["xmt"] = {"Matbat"}, ["xmu"] = {"Kamu"}, ["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"}, ["xmw"] = {"Tsimihety Malagasy"}, ["xmx"] = {"Salawati", "Maden"}, ["xmy"] = {"Mayaguduna"}, ["xmz"] = {"Mori Bawah"}, ["xna"] = {"Ancient North Arabian"}, ["xnb"] = {"Kanakanabu"}, ["xnd"] = {"Na-Dene languages"}, ["xng"] = {"Middle Mongolian"}, ["xnh"] = {"Kuanhua"}, ["xni"] = {"Ngarigu"}, ["xnj"] = {"Ngoni (Tanzania)"}, ["xnk"] = {"Nganakarti"}, ["xnm"] = {"Ngumbarl"}, ["xnn"] = {"Northern Kankanay"}, ["xno"] = {"Anglo-Norman"}, ["xnq"] = {"Ngoni (Mozambique)"}, ["xnr"] = {"Kangri"}, ["xns"] = {"Kanashi"}, ["xnt"] = {"Narragansett"}, ["xnu"] = {"Nukunul"}, ["xny"] = {"Nyiyaparli"}, ["xnz"] = {"Kenzi", "Mattoki"}, ["xoc"] = {"O'chi'chi'"}, ["xod"] = {"Kokoda"}, ["xog"] = {"Soga"}, ["xoi"] = {"Kominimung"}, ["xok"] = {"Xokleng"}, ["xom"] = {"Komo (Sudan)"}, ["xon"] = {"Konkomba"}, ["xoo"] = {"Xukurú"}, ["xop"] = {"Kopar"}, ["xor"] = {"Korubo"}, ["xow"] = {"Kowaki"}, ["xpa"] = {"Pirriya"}, ["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"}, ["xpc"] = {"Pecheneg"}, ["xpd"] = {"Oyster Bay Tasmanian"}, ["xpe"] = {"Liberia Kpelle"}, ["xpf"] = {"Southeast Tasmanian", "Nuenonne"}, ["xpg"] = {"Phrygian"}, ["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"}, ["xpi"] = {"Pictish"}, ["xpj"] = {"Mpalitjanh"}, ["xpk"] = {"Kulina Pano"}, ["xpl"] = {"Port Sorell Tasmanian"}, ["xpm"] = {"Pumpokol"}, ["xpn"] = {"Kapinawá"}, ["xpo"] = {"Pochutec"}, ["xpp"] = {"Puyo-Paekche"}, ["xpq"] = {"Mohegan-Pequot"}, ["xpr"] = {"Parthian"}, ["xps"] = {"Pisidian"}, ["xpt"] = {"Punthamara"}, ["xpu"] = {"Punic"}, ["xpv"] = {"Northern Tasmanian", "Tommeginne"}, ["xpw"] = {"Northwestern Tasmanian", "Peerapper"}, ["xpx"] = {"Southwestern Tasmanian", "Toogee"}, ["xpy"] = {"Puyo"}, ["xpz"] = {"Bruny Island Tasmanian"}, ["xqa"] = {"Karakhanid"}, ["xqt"] = {"Qatabanian"}, ["xra"] = {"Krahô"}, ["xrb"] = {"Eastern Karaboro"}, ["xrd"] = {"Gundungurra"}, ["xre"] = {"Kreye"}, ["xrg"] = {"Minang"}, ["xri"] = {"Krikati-Timbira"}, ["xrm"] = {"Armazic"}, ["xrn"] = {"Arin"}, ["xrr"] = {"Raetic"}, ["xrt"] = {"Aranama-Tamique"}, ["xru"] = {"Marriammu"}, ["xrw"] = {"Karawa"}, ["xsa"] = {"Sabaean"}, ["xsb"] = {"Sambal"}, ["xsc"] = {"Scythian"}, ["xsd"] = {"Sidetic"}, ["xse"] = {"Sempan"}, ["xsh"] = {"Shamang"}, ["xsi"] = {"Sio"}, ["xsj"] = {"Subi"}, ["xsl"] = {"South Slavey"}, ["xsm"] = {"Kasem"}, ["xsn"] = {"Sanga (Nigeria)"}, ["xso"] = {"Solano"}, ["xsp"] = {"Silopi"}, ["xsq"] = {"Makhuwa-Saka"}, ["xsr"] = {"Sherpa"}, ["xsu"] = {"Sanumá"}, ["xsv"] = {"Sudovian"}, ["xsy"] = {"Saisiyat"}, ["xta"] = {"Alcozauca Mixtec"}, ["xtb"] = {"Chazumba Mixtec"}, ["xtc"] = {"Katcha-Kadugli-Miri"}, ["xtd"] = {"Diuxi-Tilantongo Mixtec"}, ["xte"] = {"Ketengban"}, ["xtg"] = {"Transalpine Gaulish"}, ["xth"] = {"Yitha Yitha"}, ["xti"] = {"Sinicahua Mixtec"}, ["xtj"] = {"San Juan Teita Mixtec"}, ["xtl"] = {"Tijaltepec Mixtec"}, ["xtm"] = {"Magdalena Peñasco Mixtec"}, ["xtn"] = {"Northern Tlaxiaco Mixtec"}, ["xto"] = {"Tokharian A"}, ["xtp"] = {"San Miguel Piedras Mixtec"}, ["xtq"] = {"Tumshuqese"}, ["xtr"] = {"Early Tripuri"}, ["xts"] = {"Sindihui Mixtec"}, ["xtt"] = {"Tacahua Mixtec"}, ["xtu"] = {"Cuyamecalco Mixtec"}, ["xtv"] = {"Thawa"}, ["xtw"] = {"Tawandê"}, ["xty"] = {"Yoloxochitl Mixtec"}, ["xua"] = {"Alu Kurumba"}, ["xub"] = {"Betta Kurumba"}, ["xud"] = {"Umiida"}, ["xug"] = {"Kunigami"}, ["xuj"] = {"Jennu Kurumba"}, ["xul"] = {"Ngunawal", "Nunukul"}, ["xum"] = {"Umbrian"}, ["xun"] = {"Unggaranggu"}, ["xuo"] = {"Kuo"}, ["xup"] = {"Upper Umpqua"}, ["xur"] = {"Urartian"}, ["xut"] = {"Kuthant"}, ["xuu"] = {"Kxoe", "Khwedam"}, ["xve"] = {"Venetic"}, ["xvi"] = {"Kamviri"}, ["xvn"] = {"Vandalic"}, ["xvo"] = {"Volscian"}, ["xvs"] = {"Vestinian"}, ["xwa"] = {"Kwaza"}, ["xwc"] = {"Woccon"}, ["xwd"] = {"Wadi Wadi"}, ["xwe"] = {"Xwela Gbe"}, ["xwg"] = {"Kwegu"}, ["xwj"] = {"Wajuk"}, ["xwk"] = {"Wangkumara"}, ["xwl"] = {"Western Xwla Gbe"}, ["xwo"] = {"Written Oirat"}, ["xwr"] = {"Kwerba Mamberamo"}, ["xwt"] = {"Wotjobaluk"}, ["xww"] = {"Wemba Wemba"}, ["xxb"] = {"Boro (Ghana)"}, ["xxk"] = {"Ke'o"}, ["xxm"] = {"Minkin"}, ["xxr"] = {"Koropó"}, ["xxt"] = {"Tambora"}, ["xya"] = {"Yaygir"}, ["xyb"] = {"Yandjibara"}, ["xyj"] = {"Mayi-Yapi"}, ["xyk"] = {"Mayi-Kulan"}, ["xyl"] = {"Yalakalore"}, ["xyt"] = {"Mayi-Thakurti"}, ["xyy"] = {"Yorta Yorta"}, ["xzh"] = {"Zhang-Zhung"}, ["xzm"] = {"Zemgalian"}, ["xzp"] = {"Ancient Zapotec"}, ["yaa"] = {"Yaminahua"}, ["yab"] = {"Yuhup"}, ["yac"] = {"Pass Valley Yali"}, ["yad"] = {"Yagua"}, ["yae"] = {"Pumé"}, ["yaf"] = {"Yaka (Democratic Republic of Congo)"}, ["yag"] = {"Yámana"}, ["yah"] = {"Yazgulyam"}, ["yai"] = {"Yagnobi"}, ["yaj"] = {"Banda-Yangere"}, ["yak"] = {"Yakama"}, ["yal"] = {"Yalunka"}, ["yam"] = {"Yamba"}, ["yan"] = {"Mayangna"}, ["yao"] = {"Yao"}, ["yap"] = {"Yapese"}, ["yaq"] = {"Yaqui"}, ["yar"] = {"Yabarana"}, ["yas"] = {"Nugunu (Cameroon)"}, ["yat"] = {"Yambeta"}, ["yau"] = {"Yuwana"}, ["yav"] = {"Yangben"}, ["yaw"] = {"Yawalapití"}, ["yax"] = {"Yauma"}, ["yay"] = {"Agwagwune"}, ["yaz"] = {"Lokaa"}, ["yba"] = {"Yala"}, ["ybb"] = {"Yemba"}, ["ybe"] = {"West Yugur"}, ["ybh"] = {"Yakha"}, ["ybi"] = {"Yamphu"}, ["ybj"] = {"Hasha"}, ["ybk"] = {"Bokha"}, ["ybl"] = {"Yukuben"}, ["ybm"] = {"Yaben"}, ["ybn"] = {"Yabaâna"}, ["ybo"] = {"Yabong"}, ["ybx"] = {"Yawiyo"}, ["yby"] = {"Yaweyuha"}, ["ych"] = {"Chesu"}, ["ycl"] = {"Lolopo"}, ["ycn"] = {"Yucuna"}, ["ycp"] = {"Chepya"}, ["ycr"] = {"Yilan Creole"}, ["yda"] = {"Yanda"}, ["ydd"] = {"Eastern Yiddish"}, ["yde"] = {"Yangum Dey"}, ["ydg"] = {"Yidgha"}, ["ydk"] = {"Yoidik"}, ["yea"] = {"Ravula"}, ["yec"] = {"Yeniche"}, ["yee"] = {"Yimas"}, ["yei"] = {"Yeni"}, ["yej"] = {"Yevanic"}, ["yel"] = {"Yela"}, ["yer"] = {"Tarok"}, ["yes"] = {"Nyankpa"}, ["yet"] = {"Yetfa"}, ["yeu"] = {"Yerukula"}, ["yev"] = {"Yapunda"}, ["yey"] = {"Yeyi"}, ["yga"] = {"Malyangapa"}, ["ygi"] = {"Yiningayi"}, ["ygl"] = {"Yangum Gel"}, ["ygm"] = {"Yagomi"}, ["ygp"] = {"Gepo"}, ["ygr"] = {"Yagaria"}, ["ygs"] = {"Yolŋu Sign Language"}, ["ygu"] = {"Yugul"}, ["ygw"] = {"Yagwoia"}, ["yha"] = {"Baha Buyang"}, ["yhd"] = {"Judeo-Iraqi Arabic"}, ["yhl"] = {"Hlepho Phowa"}, ["yhs"] = {"Yan-nhaŋu Sign Language"}, ["yia"] = {"Yinggarda"}, ["yif"] = {"Ache"}, ["yig"] = {"Wusa Nasu"}, ["yih"] = {"Western Yiddish"}, ["yii"] = {"Yidiny"}, ["yij"] = {"Yindjibarndi"}, ["yik"] = {"Dongshanba Lalo"}, ["yil"] = {"Yindjilandji"}, ["yim"] = {"Yimchungru Naga"}, ["yin"] = {"Riang Lai", "Yinchia"}, ["yip"] = {"Pholo"}, ["yiq"] = {"Miqie"}, ["yir"] = {"North Awyu"}, ["yis"] = {"Yis"}, ["yit"] = {"Eastern Lalu"}, ["yiu"] = {"Awu"}, ["yiv"] = {"Northern Nisu"}, ["yix"] = {"Axi Yi"}, ["yiz"] = {"Azhe"}, ["yka"] = {"Yakan"}, ["ykg"] = {"Northern Yukaghir"}, ["ykh"] = {"Khamnigan Mongol"}, ["yki"] = {"Yoke"}, ["ykk"] = {"Yakaikeke"}, ["ykl"] = {"Khlula"}, ["ykm"] = {"Kap"}, ["ykn"] = {"Kua-nsi"}, ["yko"] = {"Yasa"}, ["ykr"] = {"Yekora"}, ["ykt"] = {"Kathu"}, ["yku"] = {"Kuamasi"}, ["yky"] = {"Yakoma"}, ["yla"] = {"Yaul"}, ["ylb"] = {"Yaleba"}, ["yle"] = {"Yele"}, ["ylg"] = {"Yelogu"}, ["yli"] = {"Angguruk Yali"}, ["yll"] = {"Yil"}, ["ylm"] = {"Limi"}, ["yln"] = {"Langnian Buyang"}, ["ylo"] = {"Naluo Yi"}, ["ylr"] = {"Yalarnnga"}, ["ylu"] = {"Aribwaung"}, ["yly"] = {"Nyâlayu", "Nyelâyu"}, ["ymb"] = {"Yambes"}, ["ymc"] = {"Southern Muji"}, ["ymd"] = {"Muda"}, ["yme"] = {"Yameo"}, ["ymg"] = {"Yamongeri"}, ["ymh"] = {"Mili"}, ["ymi"] = {"Moji"}, ["ymk"] = {"Makwe"}, ["yml"] = {"Iamalele"}, ["ymm"] = {"Maay"}, ["ymn"] = {"Yamna", "Sunum"}, ["ymo"] = {"Yangum Mon"}, ["ymp"] = {"Yamap"}, ["ymq"] = {"Qila Muji"}, ["ymr"] = {"Malasar"}, ["yms"] = {"Mysian"}, ["ymx"] = {"Northern Muji"}, ["ymz"] = {"Muzi"}, ["yna"] = {"Aluo"}, ["ynd"] = {"Yandruwandha"}, ["yne"] = {"Lang'e"}, ["yng"] = {"Yango"}, ["ynk"] = {"Naukan Yupik"}, ["ynl"] = {"Yangulam"}, ["ynn"] = {"Yana"}, ["yno"] = {"Yong"}, ["ynq"] = {"Yendang"}, ["yns"] = {"Yansi"}, ["ynu"] = {"Yahuna"}, ["yob"] = {"Yoba"}, ["yog"] = {"Yogad"}, ["yoi"] = {"Yonaguni"}, ["yok"] = {"Yokuts"}, ["yol"] = {"Yola"}, ["yom"] = {"Yombe"}, ["yon"] = {"Yongkom"}, ["yot"] = {"Yotti"}, ["yox"] = {"Yoron"}, ["yoy"] = {"Yoy"}, ["ypa"] = {"Phala"}, ["ypb"] = {"Labo Phowa"}, ["ypg"] = {"Phola"}, ["yph"] = {"Phupha"}, ["ypk"] = {"Yupik languages"}, ["ypm"] = {"Phuma"}, ["ypn"] = {"Ani Phowa"}, ["ypo"] = {"Alo Phola"}, ["ypp"] = {"Phupa"}, ["ypz"] = {"Phuza"}, ["yra"] = {"Yerakai"}, ["yrb"] = {"Yareba"}, ["yre"] = {"Yaouré"}, ["yrk"] = {"Nenets"}, ["yrl"] = {"Nhengatu"}, ["yrm"] = {"Yirrk-Mel"}, ["yrn"] = {"Yerong"}, ["yro"] = {"Yaroamë"}, ["yrs"] = {"Yarsun"}, ["yrw"] = {"Yarawata"}, ["yry"] = {"Yarluyandi"}, ["ysc"] = {"Yassic"}, ["ysd"] = {"Samatao"}, ["ysg"] = {"Sonaga"}, ["ysl"] = {"Yugoslavian Sign Language"}, ["ysm"] = {"Myanmar Sign Language"}, ["ysn"] = {"Sani"}, ["yso"] = {"Nisi (China)"}, ["ysp"] = {"Southern Lolopo"}, ["ysr"] = {"Sirenik Yupik"}, ["yss"] = {"Yessan-Mayo"}, ["ysy"] = {"Sanie"}, ["yta"] = {"Talu"}, ["ytl"] = {"Tanglang"}, ["ytp"] = {"Thopho"}, ["ytw"] = {"Yout Wam"}, ["yty"] = {"Yatay"}, ["yua"] = {"Yucateco", "Yucatec Maya"}, ["yub"] = {"Yugambal"}, ["yuc"] = {"Yuchi"}, ["yud"] = {"Judeo-Tripolitanian Arabic"}, ["yue"] = {"Yue Chinese", "Cantonese"}, ["yuf"] = {"Havasupai-Walapai-Yavapai"}, ["yug"] = {"Yug"}, ["yui"] = {"Yurutí"}, ["yuj"] = {"Karkar-Yuri"}, ["yuk"] = {"Yuki"}, ["yul"] = {"Yulu"}, ["yum"] = {"Quechan"}, ["yun"] = {"Bena (Nigeria)"}, ["yup"] = {"Yukpa"}, ["yuq"] = {"Yuqui"}, ["yur"] = {"Yurok"}, ["yut"] = {"Yopno"}, ["yuw"] = {"Yau (Morobe Province)"}, ["yux"] = {"Southern Yukaghir"}, ["yuy"] = {"East Yugur"}, ["yuz"] = {"Yuracare"}, ["yva"] = {"Yawa"}, ["yvt"] = {"Yavitero"}, ["ywa"] = {"Kalou"}, ["ywg"] = {"Yinhawangka"}, ["ywl"] = {"Western Lalu"}, ["ywn"] = {"Yawanawa"}, ["ywq"] = {"Wuding-Luquan Yi"}, ["ywr"] = {"Yawuru"}, ["ywt"] = {"Xishanba Lalo", "Central Lalo"}, ["ywu"] = {"Wumeng Nasu"}, ["yww"] = {"Yawarawarga"}, ["yxa"] = {"Mayawali"}, ["yxg"] = {"Yagara"}, ["yxl"] = {"Yardliyawarra"}, ["yxm"] = {"Yinwum"}, ["yxu"] = {"Yuyu"}, ["yxy"] = {"Yabula Yabula"}, ["yyr"] = {"Yir Yoront"}, ["yyu"] = {"Yau (Sandaun Province)"}, ["yyz"] = {"Ayizi"}, ["yzg"] = {"E'ma Buyang"}, ["yzk"] = {"Zokhuo"}, ["zaa"] = {"Sierra de Juárez Zapotec"}, ["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"}, ["zac"] = {"Ocotlán Zapotec"}, ["zad"] = {"Cajonos Zapotec"}, ["zae"] = {"Yareni Zapotec"}, ["zaf"] = {"Ayoquesco Zapotec"}, ["zag"] = {"Zaghawa"}, ["zah"] = {"Zangwal"}, ["zai"] = {"Isthmus Zapotec"}, ["zaj"] = {"Zaramo"}, ["zak"] = {"Zanaki"}, ["zal"] = {"Zauzou"}, ["zam"] = {"Miahuatlán Zapotec"}, ["zao"] = {"Ozolotepec Zapotec"}, ["zap"] = {"Zapotec"}, ["zaq"] = {"Aloápam Zapotec"}, ["zar"] = {"Rincón Zapotec"}, ["zas"] = {"Santo Domingo Albarradas Zapotec"}, ["zat"] = {"Tabaa Zapotec"}, ["zau"] = {"Zangskari"}, ["zav"] = {"Yatzachi Zapotec"}, ["zaw"] = {"Mitla Zapotec"}, ["zax"] = {"Xadani Zapotec"}, ["zay"] = {"Zayse-Zergulla", "Zaysete"}, ["zaz"] = {"Zari"}, ["zba"] = {"Balaibalan"}, ["zbc"] = {"Central Berawan"}, ["zbe"] = {"East Berawan"}, ["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"}, ["zbt"] = {"Batui"}, ["zbu"] = {"Bu (Bauchi State)"}, ["zbw"] = {"West Berawan"}, ["zca"] = {"Coatecas Altas Zapotec"}, ["zcd"] = {"Las Delicias Zapotec"}, ["zch"] = {"Central Hongshuihe Zhuang"}, ["zdj"] = {"Ngazidja Comorian"}, ["zea"] = {"Zeeuws"}, ["zeg"] = {"Zenag"}, ["zeh"] = {"Eastern Hongshuihe Zhuang"}, ["zem"] = {"Zeem"}, ["zen"] = {"Zenaga"}, ["zga"] = {"Kinga"}, ["zgb"] = {"Guibei Zhuang"}, ["zgh"] = {"Standard Moroccan Tamazight"}, ["zgm"] = {"Minz Zhuang"}, ["zgn"] = {"Guibian Zhuang"}, ["zgr"] = {"Magori"}, ["zhb"] = {"Zhaba"}, ["zhd"] = {"Dai Zhuang"}, ["zhi"] = {"Zhire"}, ["zhn"] = {"Nong Zhuang"}, ["zhw"] = {"Zhoa"}, ["zhx"] = {"Chinese (family)"}, ["zia"] = {"Zia"}, ["zib"] = {"Zimbabwe Sign Language"}, ["zik"] = {"Zimakani"}, ["zil"] = {"Zialo"}, ["zim"] = {"Mesme"}, ["zin"] = {"Zinza"}, ["ziw"] = {"Zigula"}, ["ziz"] = {"Zizilivakan"}, ["zka"] = {"Kaimbulawa"}, ["zkd"] = {"Kadu"}, ["zkg"] = {"Koguryo"}, ["zkh"] = {"Khorezmian"}, ["zkk"] = {"Karankawa"}, ["zkn"] = {"Kanan"}, ["zko"] = {"Kott"}, ["zkp"] = {"São Paulo Kaingáng"}, ["zkr"] = {"Zakhring"}, ["zkt"] = {"Kitan"}, ["zku"] = {"Kaurna"}, ["zkv"] = {"Krevinian"}, ["zkz"] = {"Khazar"}, ["zla"] = {"Zula"}, ["zle"] = {"East Slavic languages"}, ["zlj"] = {"Liujiang Zhuang"}, ["zlm"] = {"Malay (individual language)"}, ["zln"] = {"Lianshan Zhuang"}, ["zlq"] = {"Liuqian Zhuang"}, ["zls"] = {"South Slavic languages"}, ["zlu"] = {"Zul"}, ["zlw"] = {"West Slavic languages"}, ["zma"] = {"Manda (Australia)"}, ["zmb"] = {"Zimba"}, ["zmc"] = {"Margany"}, ["zmd"] = {"Maridan"}, ["zme"] = {"Mangerr"}, ["zmf"] = {"Mfinu"}, ["zmg"] = {"Marti Ke"}, ["zmh"] = {"Makolkol"}, ["zmi"] = {"Negeri Sembilan Malay"}, ["zmj"] = {"Maridjabin"}, ["zmk"] = {"Mandandanyi"}, ["zml"] = {"Matngala"}, ["zmm"] = {"Marimanindji", "Marramaninyshi"}, ["zmn"] = {"Mbangwe"}, ["zmo"] = {"Molo"}, ["zmp"] = {"Mpuono"}, ["zmq"] = {"Mituku"}, ["zmr"] = {"Maranunggu"}, ["zms"] = {"Mbesa"}, ["zmt"] = {"Maringarr"}, ["zmu"] = {"Muruwari"}, ["zmv"] = {"Mbariman-Gudhinma"}, ["zmw"] = {"Mbo (Democratic Republic of Congo)"}, ["zmx"] = {"Bomitaba"}, ["zmy"] = {"Mariyedi"}, ["zmz"] = {"Mbandja"}, ["zna"] = {"Zan Gula"}, ["znd"] = {"Zande languages"}, ["zne"] = {"Zande (individual language)"}, ["zng"] = {"Mang"}, ["znk"] = {"Manangkari"}, ["zns"] = {"Mangas"}, ["zoc"] = {"Copainalá Zoque"}, ["zoh"] = {"Chimalapa Zoque"}, ["zom"] = {"Zou"}, ["zoo"] = {"Asunción Mixtepec Zapotec"}, ["zoq"] = {"Tabasco Zoque"}, ["zor"] = {"Rayón Zoque"}, ["zos"] = {"Francisco León Zoque"}, ["zpa"] = {"Lachiguiri Zapotec"}, ["zpb"] = {"Yautepec Zapotec"}, ["zpc"] = {"Choapan Zapotec"}, ["zpd"] = {"Southeastern Ixtlán Zapotec"}, ["zpe"] = {"Petapa Zapotec"}, ["zpf"] = {"San Pedro Quiatoni Zapotec"}, ["zpg"] = {"Guevea De Humboldt Zapotec"}, ["zph"] = {"Totomachapan Zapotec"}, ["zpi"] = {"Santa María Quiegolani Zapotec"}, ["zpj"] = {"Quiavicuzas Zapotec"}, ["zpk"] = {"Tlacolulita Zapotec"}, ["zpl"] = {"Lachixío Zapotec"}, ["zpm"] = {"Mixtepec Zapotec"}, ["zpn"] = {"Santa Inés Yatzechi Zapotec"}, ["zpo"] = {"Amatlán Zapotec"}, ["zpp"] = {"El Alto Zapotec"}, ["zpq"] = {"Zoogocho Zapotec"}, ["zpr"] = {"Santiago Xanica Zapotec"}, ["zps"] = {"Coatlán Zapotec"}, ["zpt"] = {"San Vicente Coatlán Zapotec"}, ["zpu"] = {"Yalálag Zapotec"}, ["zpv"] = {"Chichicapan Zapotec"}, ["zpw"] = {"Zaniza Zapotec"}, ["zpx"] = {"San Baltazar Loxicha Zapotec"}, ["zpy"] = {"Mazaltepec Zapotec"}, ["zpz"] = {"Texmelucan Zapotec"}, ["zqe"] = {"Qiubei Zhuang"}, ["zra"] = {"Kara (Korea)"}, ["zrg"] = {"Mirgan"}, ["zrn"] = {"Zerenkel"}, ["zro"] = {"Záparo"}, ["zrp"] = {"Zarphatic"}, ["zrs"] = {"Mairasi"}, ["zsa"] = {"Sarasira"}, ["zsk"] = {"Kaskean"}, ["zsl"] = {"Zambian Sign Language"}, ["zsm"] = {"Standard Malay"}, ["zsr"] = {"Southern Rincon Zapotec"}, ["zsu"] = {"Sukurum"}, ["zte"] = {"Elotepec Zapotec"}, ["ztg"] = {"Xanaguía Zapotec"}, ["ztl"] = {"Lapaguía-Guivini Zapotec"}, ["ztm"] = {"San Agustín Mixtepec Zapotec"}, ["ztn"] = {"Santa Catarina Albarradas Zapotec"}, ["ztp"] = {"Loxicha Zapotec"}, ["ztq"] = {"Quioquitani-Quierí Zapotec"}, ["zts"] = {"Tilquiapan Zapotec"}, ["ztt"] = {"Tejalapan Zapotec"}, ["ztu"] = {"Güilá Zapotec"}, ["ztx"] = {"Zaachila Zapotec"}, ["zty"] = {"Yatee Zapotec"}, ["zuh"] = {"Tokano"}, ["zum"] = {"Kumzari"}, ["zun"] = {"Zuni"}, ["zuy"] = {"Zumaya"}, ["zwa"] = {"Zay"}, ["zxx"] = {"No linguistic content", "Not applicable"}, ["zyb"] = {"Yongbei Zhuang"}, ["zyg"] = {"Yang Zhuang"}, ["zyj"] = {"Youjiang Zhuang"}, ["zyn"] = {"Yongnan Zhuang"}, ["zyp"] = {"Zyphe Chin"}, ["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"}, ["zzj"] = {"Zuojiang Zhuang"} } local deprecated = { ["in"] = {"Indonesian"}, ["iw"] = {"Hebrew"}, ["ji"] = {"Yiddish"}, ["jw"] = {"Javanese"}, ["mo"] = {"Moldavian", "Moldovan"}, ["aam"] = {"Aramanik"}, ["adp"] = {"Adap"}, ["agp"] = {"Paranan"}, ["ais"] = {"Nataoran Amis"}, ["ajp"] = {"South Levantine Arabic"}, ["ajt"] = {"Judeo-Tunisian Arabic"}, ["aoh"] = {"Arma"}, ["asd"] = {"Asas"}, ["aue"] = {"ǂKxʼauǁʼein"}, ["ayx"] = {"Ayi (China)"}, ["ayy"] = {"Tayabas Ayta"}, ["baz"] = {"Tunen"}, ["bbz"] = {"Babalia Creole Arabic"}, ["bgm"] = {"Baga Mboteni"}, ["bhk"] = {"Albay Bicolano"}, ["bic"] = {"Bikaru"}, ["bij"] = {"Vaghat-Ya-Bijim-Legeri"}, ["bjd"] = {"Bandjigali"}, ["bjq"] = {"Southern Betsimisaraka Malagasy"}, ["bkb"] = {"Finallig"}, ["blg"] = {"Balau"}, ["bmy"] = {"Bemba (Democratic Republic of Congo)"}, ["bpb"] = {"Barbacoas"}, ["btb"] = {"Beti (Cameroon)"}, ["btl"] = {"Bhatola"}, ["bxx"] = {"Borna (Democratic Republic of Congo)"}, ["byy"] = {"Buya"}, ["cbe"] = {"Chipiajes"}, ["cbh"] = {"Cagua"}, ["cca"] = {"Cauca"}, ["ccq"] = {"Chaungtha"}, ["cdg"] = {"Chamari"}, ["cjr"] = {"Chorotega"}, ["cka"] = {"Khumi Awa Chin"}, ["cmk"] = {"Chimakum"}, ["coy"] = {"Coyaima"}, ["cqu"] = {"Chilean Quechua"}, ["cug"] = {"Chungmboko", "Cung"}, ["cum"] = {"Cumeral"}, ["daf"] = {"Dan"}, ["dap"] = {"Nisi (India)"}, ["dgu"] = {"Degaru"}, ["dha"] = {"Dhanwar (India)"}, ["dit"] = {"Dirari"}, ["djl"] = {"Djiwarli"}, ["dkl"] = {"Kolum So Dogon"}, ["drh"] = {"Darkhat"}, ["drr"] = {"Dororo"}, ["drw"] = {"Darwazi"}, ["dud"] = {"Hun-Saare"}, ["duj"] = {"Dhuwal"}, ["dwl"] = {"Walo Kumbe Dogon"}, ["ekc"] = {"Eastern Karnic"}, ["elp"] = {"Elpaputih"}, ["emo"] = {"Emok"}, ["gav"] = {"Gabutamon"}, ["gbc"] = {"Garawa"}, ["gfx"] = {"Mangetti Dune ǃXung"}, ["ggn"] = {"Eastern Gurung"}, ["ggo"] = {"Southern Gondi"}, ["ggr"] = {"Aghu Tharnggalu"}, ["gio"] = {"Gelao"}, ["gji"] = {"Geji"}, ["gli"] = {"Guliguli"}, ["gti"] = {"Gbati-ri"}, ["guv"] = {"Gey"}, ["hrr"] = {"Horuru"}, ["iap"] = {"Iapama"}, ["ibi"] = {"Ibilo"}, ["ill"] = {"Iranun"}, ["ilw"] = {"Talur"}, ["ime"] = {"Imeraguen"}, ["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"}, ["jar"] = {"Jarawa (Nigeria)"}, ["jeg"] = {"Jeng"}, ["kbf"] = {"Kakauhua"}, ["kdv"] = {"Kado"}, ["kgc"] = {"Kasseng"}, ["kgd"] = {"Kataang"}, ["kgh"] = {"Upper Tanudan Kalinga"}, ["kgm"] = {"Karipúna"}, ["kjf"] = {"Khalaj [Indo-Iranian]"}, ["koj"] = {"Sara Dunjo"}, ["kox"] = {"Coxima"}, ["kpp"] = {"Paku Karen"}, ["krm"] = {"Krim"}, ["ksa"] = {"Shuwa-Zamani"}, ["ktr"] = {"Kota Marudu Tinagas"}, ["kvs"] = {"Kunggara"}, ["kwq"] = {"Kwak"}, ["kxe"] = {"Kakihum"}, ["kxl"] = {"Nepali Kurux"}, ["kxu"] = {"Kui (India)"}, ["kzh"] = {"Kenuzi-Dongola"}, ["kzj"] = {"Coastal Kadazan"}, ["kzt"] = {"Tambunan Dusun"}, ["lak"] = {"Laka (Nigeria)"}, ["lba"] = {"Lui"}, ["leg"] = {"Lengua"}, ["lii"] = {"Lingkhim"}, ["llo"] = {"Khlor"}, ["lmm"] = {"Lamam"}, ["lmz"] = {"Lumbee"}, ["lno"] = {"Lango (South Sudan)"}, ["lsg"] = {"Lyons Sign Language"}, ["meg"] = {"Mea"}, ["mgx"] = {"Omati"}, ["mhh"] = {"Maskoy Pidgin"}, ["mja"] = {"Mahei"}, ["mld"] = {"Malakhel"}, ["mnt"] = {"Maykulan"}, ["mof"] = {"Mohegan-Montauk-Narragansett"}, ["mst"] = {"Cataelano Mandaya"}, ["mvm"] = {"Muya"}, ["mwd"] = {"Mudbura"}, ["mwj"] = {"Maligo"}, ["mwx"] = {"Mediak"}, ["mwy"] = {"Mosiro"}, ["myd"] = {"Maramba"}, ["myi"] = {"Mina (India)"}, ["myq"] = {"Forest Maninka"}, ["myt"] = {"Sangab Mandaya"}, ["nad"] = {"Nijadali"}, ["nbf"] = {"Naxi"}, ["nbx"] = {"Ngura"}, ["ncp"] = {"Ndaktup"}, ["ngo"] = {"Ngoni"}, ["nln"] = {"Durango Nahuatl"}, ["nlr"] = {"Ngarla"}, ["nns"] = {"Ningye"}, ["nnx"] = {"Ngong"}, ["nom"] = {"Nocamán"}, ["noo"] = {"Nootka"}, ["nts"] = {"Natagaimas"}, ["nxu"] = {"Narau"}, ["ome"] = {"Omejes"}, ["oun"] = {"ǃOǃung"}, ["pat"] = {"Papitalai"}, ["pbz"] = {"Palu"}, ["pcr"] = {"Panang"}, ["pgy"] = {"Pongyong"}, ["pii"] = {"Pini"}, ["plj"] = {"Polci"}, ["plp"] = {"Palpa"}, ["pmc"] = {"Palumata"}, ["pmk"] = {"Pamlico"}, ["pmu"] = {"Mirpur Panjabi"}, ["pod"] = {"Ponares"}, ["ppa"] = {"Pao"}, ["ppr"] = {"Piru"}, ["prb"] = {"Lua'"}, ["prp"] = {"Parsi"}, ["pry"] = {"Pray 3"}, ["puk"] = {"Pu Ko"}, ["puz"] = {"Purum Naga"}, ["rie"] = {"Rien"}, ["rmr"] = {"Caló"}, ["rna"] = {"Runa"}, ["rsi"] = {"Rennellese Sign Language"}, ["sap"] = {"Sanapaná"}, ["sca"] = {"Sansu"}, ["sdm"] = {"Semandang"}, ["sgl"] = {"Sanglechi-Ishkashimi"}, ["sgo"] = {"Songa"}, ["skk"] = {"Sok"}, ["slq"] = {"Salchuq"}, ["smd"] = {"Sama"}, ["snb"] = {"Sebuyau"}, ["snh"] = {"Shinabo"}, ["sul"] = {"Surigaonon"}, ["sum"] = {"Sumo-Mayangna"}, ["svr"] = {"Savara"}, ["szd"] = {"Seru"}, ["tbb"] = {"Tapeba"}, ["tdu"] = {"Tempasuk Dusun"}, ["tgg"] = {"Tangga"}, ["thc"] = {"Tai Hang Tong"}, ["thw"] = {"Thudam"}, ["thx"] = {"The"}, ["tid"] = {"Tidong"}, ["tie"] = {"Tingal"}, ["tkk"] = {"Takpa"}, ["tlw"] = {"South Wemale"}, ["tmk"] = {"Northwestern Tamang"}, ["tmp"] = {"Tai Mène"}, ["tne"] = {"Tinoc Kallahan"}, ["tnf"] = {"Tangshewi"}, ["toe"] = {"Tomedes"}, ["tpw"] = {"Tupí"}, ["tsf"] = {"Southwestern Tamang"}, ["unp"] = {"Worora"}, ["uok"] = {"Uokha"}, ["uun"] = {"Kulon-Pazeh"}, ["vki"] = {"Ija-Zuba"}, ["wgw"] = {"Wagawaga"}, ["wit"] = {"Wintu"}, ["wiw"] = {"Wirangu"}, ["wra"] = {"Warapu"}, ["wrd"] = {"Warduji"}, ["wya"] = {"Wyandot"}, ["xba"] = {"Kamba (Brazil)"}, ["xbx"] = {"Kabixí"}, ["xia"] = {"Xiandao"}, ["xip"] = {"Xipináwa"}, ["xkh"] = {"Karahawyana"}, ["xrq"] = {"Karranga"}, ["xss"] = {"Assan"}, ["xtz"] = {"Tasmanian"}, ["ybd"] = {"Yangbye"}, ["yds"] = {"Yiddish Sign Language"}, ["yen"] = {"Yendang"}, ["yiy"] = {"Yir Yoront"}, ["yma"] = {"Yamphe"}, ["ymt"] = {"Mator-Taygi-Karagas"}, ["ynh"] = {"Yangho"}, ["yos"] = {"Yos"}, ["yri"] = {"Yarí"}, ["yuu"] = {"Yugh"}, ["zir"] = {"Ziriya"}, ["zkb"] = {"Koibal"}, ["zua"] = {"Zeem"} } return { active = active, deprecated = deprecated, } d2b8387b798a45d93230d1c1b7b22a80714751a1 Module:Language/data/iana languages/doc 828 469 1021 2023-10-01T09:54:19Z Führerredux 2 Created page with "{{High-use}} This module contains data taken directly from a local copy of an IANA [https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry language-subtag-registry file]. The table in this module was created using the awb script at [[User:Trappist_the_monk/IANA_subtag_registry_file_update|IANA subtag registry file update]] or by [[Module:Language/data/iana languages/make]]. There should be no need to hand edit this table, so please do not d..." wikitext text/x-wiki {{High-use}} This module contains data taken directly from a local copy of an IANA [https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry language-subtag-registry file]. The table in this module was created using the awb script at [[User:Trappist_the_monk/IANA_subtag_registry_file_update|IANA subtag registry file update]] or by [[Module:Language/data/iana languages/make]]. There should be no need to hand edit this table, so please do not do so except to reflect changes that are actually present in the source (in which case it is probably better to re-run one of the tools on a new data file). The data in this table come from records that are not 'Deprecated', do not have a 'Preferred-Value', and are not 'Private use'. <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Language-related modules]] }}</includeonly> 27c2fc0deab1aa916963bd078ff2af934a9d7ecd Module:Language/data/iana scripts 828 470 1022 2023-10-01T09:54:55Z Führerredux 2 Created page with "-- File-Date: 2023-08-02 return { ["Adlm"] = {"Adlam"}, ["Afak"] = {"Afaka"}, ["Aghb"] = {"Caucasian Albanian"}, ["Ahom"] = {"Ahom", "Tai Ahom"}, ["Arab"] = {"Arabic"}, ["Aran"] = {"Arabic (Nastaliq variant)"}, ["Armi"] = {"Imperial Aramaic"}, ["Armn"] = {"Armenian"}, ["Avst"] = {"Avestan"}, ["Bali"] = {"Balinese"}, ["Bamu"] = {"Bamum"}, ["Bass"] = {"Bassa Vah"}, ["Batk"] = {"Batak"}, ["Beng"] = {"Bengali", "Bangla"}, ["Bhks"] = {"Bhaiksuki"}, ["Blis"] =..." Scribunto text/plain -- File-Date: 2023-08-02 return { ["Adlm"] = {"Adlam"}, ["Afak"] = {"Afaka"}, ["Aghb"] = {"Caucasian Albanian"}, ["Ahom"] = {"Ahom", "Tai Ahom"}, ["Arab"] = {"Arabic"}, ["Aran"] = {"Arabic (Nastaliq variant)"}, ["Armi"] = {"Imperial Aramaic"}, ["Armn"] = {"Armenian"}, ["Avst"] = {"Avestan"}, ["Bali"] = {"Balinese"}, ["Bamu"] = {"Bamum"}, ["Bass"] = {"Bassa Vah"}, ["Batk"] = {"Batak"}, ["Beng"] = {"Bengali", "Bangla"}, ["Bhks"] = {"Bhaiksuki"}, ["Blis"] = {"Blissymbols"}, ["Bopo"] = {"Bopomofo"}, ["Brah"] = {"Brahmi"}, ["Brai"] = {"Braille"}, ["Bugi"] = {"Buginese"}, ["Buhd"] = {"Buhid"}, ["Cakm"] = {"Chakma"}, ["Cans"] = {"Unified Canadian Aboriginal Syllabics"}, ["Cari"] = {"Carian"}, ["Cham"] = {"Cham"}, ["Cher"] = {"Cherokee"}, ["Chrs"] = {"Chorasmian"}, ["Cirt"] = {"Cirth"}, ["Copt"] = {"Coptic"}, ["Cpmn"] = {"Cypro-Minoan"}, ["Cprt"] = {"Cypriot syllabary"}, ["Cyrl"] = {"Cyrillic"}, ["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"}, ["Deva"] = {"Devanagari", "Nagari"}, ["Diak"] = {"Dives Akuru"}, ["Dogr"] = {"Dogra"}, ["Dsrt"] = {"Deseret", "Mormon"}, ["Dupl"] = {"Duployan shorthand", "Duployan stenography"}, ["Egyd"] = {"Egyptian demotic"}, ["Egyh"] = {"Egyptian hieratic"}, ["Egyp"] = {"Egyptian hieroglyphs"}, ["Elba"] = {"Elbasan"}, ["Elym"] = {"Elymaic"}, ["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"}, ["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"}, ["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"}, ["Glag"] = {"Glagolitic"}, ["Gong"] = {"Gunjala Gondi"}, ["Gonm"] = {"Masaram Gondi"}, ["Goth"] = {"Gothic"}, ["Gran"] = {"Grantha"}, ["Grek"] = {"Greek"}, ["Gujr"] = {"Gujarati"}, ["Guru"] = {"Gurmukhi"}, ["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"}, ["Hang"] = {"Hangul", "Hangŭl", "Hangeul"}, ["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"}, ["Hano"] = {"Hanunoo", "Hanunóo"}, ["Hans"] = {"Han (Simplified variant)"}, ["Hant"] = {"Han (Traditional variant)"}, ["Hatr"] = {"Hatran"}, ["Hebr"] = {"Hebrew"}, ["Hira"] = {"Hiragana"}, ["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"}, ["Hmng"] = {"Pahawh Hmong"}, ["Hmnp"] = {"Nyiakeng Puachue Hmong"}, ["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"}, ["Hung"] = {"Old Hungarian", "Hungarian Runic"}, ["Inds"] = {"Indus", "Harappan"}, ["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"}, ["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"}, ["Java"] = {"Javanese"}, ["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"}, ["Jurc"] = {"Jurchen"}, ["Kali"] = {"Kayah Li"}, ["Kana"] = {"Katakana"}, ["Kawi"] = {"Kawi"}, ["Khar"] = {"Kharoshthi"}, ["Khmr"] = {"Khmer"}, ["Khoj"] = {"Khojki"}, ["Kitl"] = {"Khitan large script"}, ["Kits"] = {"Khitan small script"}, ["Knda"] = {"Kannada"}, ["Kore"] = {"Korean (alias for Hangul + Han)"}, ["Kpel"] = {"Kpelle"}, ["Kthi"] = {"Kaithi"}, ["Lana"] = {"Tai Tham", "Lanna"}, ["Laoo"] = {"Lao"}, ["Latf"] = {"Latin (Fraktur variant)"}, ["Latg"] = {"Latin (Gaelic variant)"}, ["Latn"] = {"Latin"}, ["Leke"] = {"Leke"}, ["Lepc"] = {"Lepcha", "Róng"}, ["Limb"] = {"Limbu"}, ["Lina"] = {"Linear A"}, ["Linb"] = {"Linear B"}, ["Lisu"] = {"Lisu", "Fraser"}, ["Loma"] = {"Loma"}, ["Lyci"] = {"Lycian"}, ["Lydi"] = {"Lydian"}, ["Mahj"] = {"Mahajani"}, ["Maka"] = {"Makasar"}, ["Mand"] = {"Mandaic", "Mandaean"}, ["Mani"] = {"Manichaean"}, ["Marc"] = {"Marchen"}, ["Maya"] = {"Mayan hieroglyphs"}, ["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"}, ["Mend"] = {"Mende Kikakui"}, ["Merc"] = {"Meroitic Cursive"}, ["Mero"] = {"Meroitic Hieroglyphs"}, ["Mlym"] = {"Malayalam"}, ["Modi"] = {"Modi", "Moḍī"}, ["Mong"] = {"Mongolian"}, ["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"}, ["Mroo"] = {"Mro", "Mru"}, ["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"}, ["Mult"] = {"Multani"}, ["Mymr"] = {"Myanmar", "Burmese"}, ["Nagm"] = {"Nag Mundari"}, ["Nand"] = {"Nandinagari"}, ["Narb"] = {"Old North Arabian", "Ancient North Arabian"}, ["Nbat"] = {"Nabataean"}, ["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"}, ["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"}, ["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"}, ["Nkoo"] = {"N’Ko", "N'Ko"}, ["Nshu"] = {"Nüshu"}, ["Ogam"] = {"Ogham"}, ["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"}, ["Orkh"] = {"Old Turkic", "Orkhon Runic"}, ["Orya"] = {"Oriya", "Odia"}, ["Osge"] = {"Osage"}, ["Osma"] = {"Osmanya"}, ["Ougr"] = {"Old Uyghur"}, ["Palm"] = {"Palmyrene"}, ["Pauc"] = {"Pau Cin Hau"}, ["Pcun"] = {"Proto-Cuneiform"}, ["Pelm"] = {"Proto-Elamite"}, ["Perm"] = {"Old Permic"}, ["Phag"] = {"Phags-pa"}, ["Phli"] = {"Inscriptional Pahlavi"}, ["Phlp"] = {"Psalter Pahlavi"}, ["Phlv"] = {"Book Pahlavi"}, ["Phnx"] = {"Phoenician"}, ["Piqd"] = {"Klingon (KLI pIqaD)"}, ["Plrd"] = {"Miao", "Pollard"}, ["Prti"] = {"Inscriptional Parthian"}, ["Psin"] = {"Proto-Sinaitic"}, ["Ranj"] = {"Ranjana"}, ["Rjng"] = {"Rejang", "Redjang", "Kaganga"}, ["Rohg"] = {"Hanifi Rohingya"}, ["Roro"] = {"Rongorongo"}, ["Runr"] = {"Runic"}, ["Samr"] = {"Samaritan"}, ["Sara"] = {"Sarati"}, ["Sarb"] = {"Old South Arabian"}, ["Saur"] = {"Saurashtra"}, ["Sgnw"] = {"SignWriting"}, ["Shaw"] = {"Shavian", "Shaw"}, ["Shrd"] = {"Sharada", "Śāradā"}, ["Shui"] = {"Shuishu"}, ["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"}, ["Sind"] = {"Khudawadi", "Sindhi"}, ["Sinh"] = {"Sinhala"}, ["Sogd"] = {"Sogdian"}, ["Sogo"] = {"Old Sogdian"}, ["Sora"] = {"Sora Sompeng"}, ["Soyo"] = {"Soyombo"}, ["Sund"] = {"Sundanese"}, ["Sunu"] = {"Sunuwar"}, ["Sylo"] = {"Syloti Nagri"}, ["Syrc"] = {"Syriac"}, ["Syre"] = {"Syriac (Estrangelo variant)"}, ["Syrj"] = {"Syriac (Western variant)"}, ["Syrn"] = {"Syriac (Eastern variant)"}, ["Tagb"] = {"Tagbanwa"}, ["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"}, ["Tale"] = {"Tai Le"}, ["Talu"] = {"New Tai Lue"}, ["Taml"] = {"Tamil"}, ["Tang"] = {"Tangut"}, ["Tavt"] = {"Tai Viet"}, ["Telu"] = {"Telugu"}, ["Teng"] = {"Tengwar"}, ["Tfng"] = {"Tifinagh", "Berber"}, ["Tglg"] = {"Tagalog", "Baybayin", "Alibata"}, ["Thaa"] = {"Thaana"}, ["Thai"] = {"Thai"}, ["Tibt"] = {"Tibetan"}, ["Tirh"] = {"Tirhuta"}, ["Tnsa"] = {"Tangsa"}, ["Toto"] = {"Toto"}, ["Ugar"] = {"Ugaritic"}, ["Vaii"] = {"Vai"}, ["Visp"] = {"Visible Speech"}, ["Vith"] = {"Vithkuqi"}, ["Wara"] = {"Warang Citi", "Varang Kshiti"}, ["Wcho"] = {"Wancho"}, ["Wole"] = {"Woleai"}, ["Xpeo"] = {"Old Persian"}, ["Xsux"] = {"Sumero-Akkadian cuneiform"}, ["Yezi"] = {"Yezidi"}, ["Yiii"] = {"Yi"}, ["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"}, ["Zinh"] = {"Code for inherited script"}, ["Zmth"] = {"Mathematical notation"}, ["Zsye"] = {"Symbols (Emoji variant)"}, ["Zsym"] = {"Symbols"}, ["Zxxx"] = {"Code for unwritten documents"}, ["Zyyy"] = {"Code for undetermined script"}, ["Zzzz"] = {"Code for uncoded script"} } 441e9d6e54b88bea137b8945819732a90106bd4d 1038 1022 2023-10-01T09:58:05Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/data/iana_scripts]] Scribunto text/plain -- File-Date: 2023-08-02 return { ["Adlm"] = {"Adlam"}, ["Afak"] = {"Afaka"}, ["Aghb"] = {"Caucasian Albanian"}, ["Ahom"] = {"Ahom", "Tai Ahom"}, ["Arab"] = {"Arabic"}, ["Aran"] = {"Arabic (Nastaliq variant)"}, ["Armi"] = {"Imperial Aramaic"}, ["Armn"] = {"Armenian"}, ["Avst"] = {"Avestan"}, ["Bali"] = {"Balinese"}, ["Bamu"] = {"Bamum"}, ["Bass"] = {"Bassa Vah"}, ["Batk"] = {"Batak"}, ["Beng"] = {"Bengali", "Bangla"}, ["Bhks"] = {"Bhaiksuki"}, ["Blis"] = {"Blissymbols"}, ["Bopo"] = {"Bopomofo"}, ["Brah"] = {"Brahmi"}, ["Brai"] = {"Braille"}, ["Bugi"] = {"Buginese"}, ["Buhd"] = {"Buhid"}, ["Cakm"] = {"Chakma"}, ["Cans"] = {"Unified Canadian Aboriginal Syllabics"}, ["Cari"] = {"Carian"}, ["Cham"] = {"Cham"}, ["Cher"] = {"Cherokee"}, ["Chrs"] = {"Chorasmian"}, ["Cirt"] = {"Cirth"}, ["Copt"] = {"Coptic"}, ["Cpmn"] = {"Cypro-Minoan"}, ["Cprt"] = {"Cypriot syllabary"}, ["Cyrl"] = {"Cyrillic"}, ["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"}, ["Deva"] = {"Devanagari", "Nagari"}, ["Diak"] = {"Dives Akuru"}, ["Dogr"] = {"Dogra"}, ["Dsrt"] = {"Deseret", "Mormon"}, ["Dupl"] = {"Duployan shorthand", "Duployan stenography"}, ["Egyd"] = {"Egyptian demotic"}, ["Egyh"] = {"Egyptian hieratic"}, ["Egyp"] = {"Egyptian hieroglyphs"}, ["Elba"] = {"Elbasan"}, ["Elym"] = {"Elymaic"}, ["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"}, ["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"}, ["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"}, ["Glag"] = {"Glagolitic"}, ["Gong"] = {"Gunjala Gondi"}, ["Gonm"] = {"Masaram Gondi"}, ["Goth"] = {"Gothic"}, ["Gran"] = {"Grantha"}, ["Grek"] = {"Greek"}, ["Gujr"] = {"Gujarati"}, ["Guru"] = {"Gurmukhi"}, ["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"}, ["Hang"] = {"Hangul", "Hangŭl", "Hangeul"}, ["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"}, ["Hano"] = {"Hanunoo", "Hanunóo"}, ["Hans"] = {"Han (Simplified variant)"}, ["Hant"] = {"Han (Traditional variant)"}, ["Hatr"] = {"Hatran"}, ["Hebr"] = {"Hebrew"}, ["Hira"] = {"Hiragana"}, ["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"}, ["Hmng"] = {"Pahawh Hmong"}, ["Hmnp"] = {"Nyiakeng Puachue Hmong"}, ["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"}, ["Hung"] = {"Old Hungarian", "Hungarian Runic"}, ["Inds"] = {"Indus", "Harappan"}, ["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"}, ["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"}, ["Java"] = {"Javanese"}, ["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"}, ["Jurc"] = {"Jurchen"}, ["Kali"] = {"Kayah Li"}, ["Kana"] = {"Katakana"}, ["Kawi"] = {"Kawi"}, ["Khar"] = {"Kharoshthi"}, ["Khmr"] = {"Khmer"}, ["Khoj"] = {"Khojki"}, ["Kitl"] = {"Khitan large script"}, ["Kits"] = {"Khitan small script"}, ["Knda"] = {"Kannada"}, ["Kore"] = {"Korean (alias for Hangul + Han)"}, ["Kpel"] = {"Kpelle"}, ["Kthi"] = {"Kaithi"}, ["Lana"] = {"Tai Tham", "Lanna"}, ["Laoo"] = {"Lao"}, ["Latf"] = {"Latin (Fraktur variant)"}, ["Latg"] = {"Latin (Gaelic variant)"}, ["Latn"] = {"Latin"}, ["Leke"] = {"Leke"}, ["Lepc"] = {"Lepcha", "Róng"}, ["Limb"] = {"Limbu"}, ["Lina"] = {"Linear A"}, ["Linb"] = {"Linear B"}, ["Lisu"] = {"Lisu", "Fraser"}, ["Loma"] = {"Loma"}, ["Lyci"] = {"Lycian"}, ["Lydi"] = {"Lydian"}, ["Mahj"] = {"Mahajani"}, ["Maka"] = {"Makasar"}, ["Mand"] = {"Mandaic", "Mandaean"}, ["Mani"] = {"Manichaean"}, ["Marc"] = {"Marchen"}, ["Maya"] = {"Mayan hieroglyphs"}, ["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"}, ["Mend"] = {"Mende Kikakui"}, ["Merc"] = {"Meroitic Cursive"}, ["Mero"] = {"Meroitic Hieroglyphs"}, ["Mlym"] = {"Malayalam"}, ["Modi"] = {"Modi", "Moḍī"}, ["Mong"] = {"Mongolian"}, ["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"}, ["Mroo"] = {"Mro", "Mru"}, ["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"}, ["Mult"] = {"Multani"}, ["Mymr"] = {"Myanmar", "Burmese"}, ["Nagm"] = {"Nag Mundari"}, ["Nand"] = {"Nandinagari"}, ["Narb"] = {"Old North Arabian", "Ancient North Arabian"}, ["Nbat"] = {"Nabataean"}, ["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"}, ["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"}, ["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"}, ["Nkoo"] = {"N’Ko", "N'Ko"}, ["Nshu"] = {"Nüshu"}, ["Ogam"] = {"Ogham"}, ["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"}, ["Orkh"] = {"Old Turkic", "Orkhon Runic"}, ["Orya"] = {"Oriya", "Odia"}, ["Osge"] = {"Osage"}, ["Osma"] = {"Osmanya"}, ["Ougr"] = {"Old Uyghur"}, ["Palm"] = {"Palmyrene"}, ["Pauc"] = {"Pau Cin Hau"}, ["Pcun"] = {"Proto-Cuneiform"}, ["Pelm"] = {"Proto-Elamite"}, ["Perm"] = {"Old Permic"}, ["Phag"] = {"Phags-pa"}, ["Phli"] = {"Inscriptional Pahlavi"}, ["Phlp"] = {"Psalter Pahlavi"}, ["Phlv"] = {"Book Pahlavi"}, ["Phnx"] = {"Phoenician"}, ["Piqd"] = {"Klingon (KLI pIqaD)"}, ["Plrd"] = {"Miao", "Pollard"}, ["Prti"] = {"Inscriptional Parthian"}, ["Psin"] = {"Proto-Sinaitic"}, ["Ranj"] = {"Ranjana"}, ["Rjng"] = {"Rejang", "Redjang", "Kaganga"}, ["Rohg"] = {"Hanifi Rohingya"}, ["Roro"] = {"Rongorongo"}, ["Runr"] = {"Runic"}, ["Samr"] = {"Samaritan"}, ["Sara"] = {"Sarati"}, ["Sarb"] = {"Old South Arabian"}, ["Saur"] = {"Saurashtra"}, ["Sgnw"] = {"SignWriting"}, ["Shaw"] = {"Shavian", "Shaw"}, ["Shrd"] = {"Sharada", "Śāradā"}, ["Shui"] = {"Shuishu"}, ["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"}, ["Sind"] = {"Khudawadi", "Sindhi"}, ["Sinh"] = {"Sinhala"}, ["Sogd"] = {"Sogdian"}, ["Sogo"] = {"Old Sogdian"}, ["Sora"] = {"Sora Sompeng"}, ["Soyo"] = {"Soyombo"}, ["Sund"] = {"Sundanese"}, ["Sunu"] = {"Sunuwar"}, ["Sylo"] = {"Syloti Nagri"}, ["Syrc"] = {"Syriac"}, ["Syre"] = {"Syriac (Estrangelo variant)"}, ["Syrj"] = {"Syriac (Western variant)"}, ["Syrn"] = {"Syriac (Eastern variant)"}, ["Tagb"] = {"Tagbanwa"}, ["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"}, ["Tale"] = {"Tai Le"}, ["Talu"] = {"New Tai Lue"}, ["Taml"] = {"Tamil"}, ["Tang"] = {"Tangut"}, ["Tavt"] = {"Tai Viet"}, ["Telu"] = {"Telugu"}, ["Teng"] = {"Tengwar"}, ["Tfng"] = {"Tifinagh", "Berber"}, ["Tglg"] = {"Tagalog", "Baybayin", "Alibata"}, ["Thaa"] = {"Thaana"}, ["Thai"] = {"Thai"}, ["Tibt"] = {"Tibetan"}, ["Tirh"] = {"Tirhuta"}, ["Tnsa"] = {"Tangsa"}, ["Toto"] = {"Toto"}, ["Ugar"] = {"Ugaritic"}, ["Vaii"] = {"Vai"}, ["Visp"] = {"Visible Speech"}, ["Vith"] = {"Vithkuqi"}, ["Wara"] = {"Warang Citi", "Varang Kshiti"}, ["Wcho"] = {"Wancho"}, ["Wole"] = {"Woleai"}, ["Xpeo"] = {"Old Persian"}, ["Xsux"] = {"Sumero-Akkadian cuneiform"}, ["Yezi"] = {"Yezidi"}, ["Yiii"] = {"Yi"}, ["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"}, ["Zinh"] = {"Code for inherited script"}, ["Zmth"] = {"Mathematical notation"}, ["Zsye"] = {"Symbols (Emoji variant)"}, ["Zsym"] = {"Symbols"}, ["Zxxx"] = {"Code for unwritten documents"}, ["Zyyy"] = {"Code for undetermined script"}, ["Zzzz"] = {"Code for uncoded script"} } 441e9d6e54b88bea137b8945819732a90106bd4d Module:Language/data/iana scripts/doc 828 471 1023 2023-10-01T09:55:12Z Führerredux 2 Redirected page to [[Module:Language/data/iana languages/doc]] wikitext text/x-wiki #REDIRECT [[Module:Language/data/iana languages/doc]] 13159077b79f554e092c40048ba1263e0508cdd9 Module:Language/data/iana regions 828 472 1024 2023-10-01T09:55:43Z Führerredux 2 Created page with "-- File-Date: 2023-08-02 return { ["AC"] = {"Ascension Island"}, ["AD"] = {"Andorra"}, ["AE"] = {"United Arab Emirates"}, ["AF"] = {"Afghanistan"}, ["AG"] = {"Antigua and Barbuda"}, ["AI"] = {"Anguilla"}, ["AL"] = {"Albania"}, ["AM"] = {"Armenia"}, ["AO"] = {"Angola"}, ["AQ"] = {"Antarctica"}, ["AR"] = {"Argentina"}, ["AS"] = {"American Samoa"}, ["AT"] = {"Austria"}, ["AU"] = {"Australia"}, ["AW"] = {"Aruba"}, ["AX"] = {"Åland Islands"}, ["AZ"] = {"Azer..." Scribunto text/plain -- File-Date: 2023-08-02 return { ["AC"] = {"Ascension Island"}, ["AD"] = {"Andorra"}, ["AE"] = {"United Arab Emirates"}, ["AF"] = {"Afghanistan"}, ["AG"] = {"Antigua and Barbuda"}, ["AI"] = {"Anguilla"}, ["AL"] = {"Albania"}, ["AM"] = {"Armenia"}, ["AO"] = {"Angola"}, ["AQ"] = {"Antarctica"}, ["AR"] = {"Argentina"}, ["AS"] = {"American Samoa"}, ["AT"] = {"Austria"}, ["AU"] = {"Australia"}, ["AW"] = {"Aruba"}, ["AX"] = {"Åland Islands"}, ["AZ"] = {"Azerbaijan"}, ["BA"] = {"Bosnia and Herzegovina"}, ["BB"] = {"Barbados"}, ["BD"] = {"Bangladesh"}, ["BE"] = {"Belgium"}, ["BF"] = {"Burkina Faso"}, ["BG"] = {"Bulgaria"}, ["BH"] = {"Bahrain"}, ["BI"] = {"Burundi"}, ["BJ"] = {"Benin"}, ["BL"] = {"Saint Barthélemy"}, ["BM"] = {"Bermuda"}, ["BN"] = {"Brunei Darussalam"}, ["BO"] = {"Bolivia"}, ["BQ"] = {"Bonaire, Sint Eustatius and Saba"}, ["BR"] = {"Brazil"}, ["BS"] = {"Bahamas"}, ["BT"] = {"Bhutan"}, ["BV"] = {"Bouvet Island"}, ["BW"] = {"Botswana"}, ["BY"] = {"Belarus"}, ["BZ"] = {"Belize"}, ["CA"] = {"Canada"}, ["CC"] = {"Cocos (Keeling) Islands"}, ["CD"] = {"The Democratic Republic of the Congo"}, ["CF"] = {"Central African Republic"}, ["CG"] = {"Congo"}, ["CH"] = {"Switzerland"}, ["CI"] = {"Côte d'Ivoire"}, ["CK"] = {"Cook Islands"}, ["CL"] = {"Chile"}, ["CM"] = {"Cameroon"}, ["CN"] = {"China"}, ["CO"] = {"Colombia"}, ["CP"] = {"Clipperton Island"}, ["CQ"] = {"Sark"}, ["CR"] = {"Costa Rica"}, ["CU"] = {"Cuba"}, ["CV"] = {"Cabo Verde", "Cape Verde"}, ["CW"] = {"Curaçao"}, ["CX"] = {"Christmas Island"}, ["CY"] = {"Cyprus"}, ["CZ"] = {"Czechia", "Czech Republic"}, ["DE"] = {"Germany"}, ["DG"] = {"Diego Garcia"}, ["DJ"] = {"Djibouti"}, ["DK"] = {"Denmark"}, ["DM"] = {"Dominica"}, ["DO"] = {"Dominican Republic"}, ["DZ"] = {"Algeria"}, ["EA"] = {"Ceuta, Melilla"}, ["EC"] = {"Ecuador"}, ["EE"] = {"Estonia"}, ["EG"] = {"Egypt"}, ["EH"] = {"Western Sahara"}, ["ER"] = {"Eritrea"}, ["ES"] = {"Spain"}, ["ET"] = {"Ethiopia"}, ["EU"] = {"European Union"}, ["EZ"] = {"Eurozone"}, ["FI"] = {"Finland"}, ["FJ"] = {"Fiji"}, ["FK"] = {"Falkland Islands (Malvinas)"}, ["FM"] = {"Federated States of Micronesia"}, ["FO"] = {"Faroe Islands"}, ["FR"] = {"France"}, ["GA"] = {"Gabon"}, ["GB"] = {"United Kingdom"}, ["GD"] = {"Grenada"}, ["GE"] = {"Georgia"}, ["GF"] = {"French Guiana"}, ["GG"] = {"Guernsey"}, ["GH"] = {"Ghana"}, ["GI"] = {"Gibraltar"}, ["GL"] = {"Greenland"}, ["GM"] = {"Gambia"}, ["GN"] = {"Guinea"}, ["GP"] = {"Guadeloupe"}, ["GQ"] = {"Equatorial Guinea"}, ["GR"] = {"Greece"}, ["GS"] = {"South Georgia and the South Sandwich Islands"}, ["GT"] = {"Guatemala"}, ["GU"] = {"Guam"}, ["GW"] = {"Guinea-Bissau"}, ["GY"] = {"Guyana"}, ["HK"] = {"Hong Kong"}, ["HM"] = {"Heard Island and McDonald Islands"}, ["HN"] = {"Honduras"}, ["HR"] = {"Croatia"}, ["HT"] = {"Haiti"}, ["HU"] = {"Hungary"}, ["IC"] = {"Canary Islands"}, ["ID"] = {"Indonesia"}, ["IE"] = {"Ireland"}, ["IL"] = {"Israel"}, ["IM"] = {"Isle of Man"}, ["IN"] = {"India"}, ["IO"] = {"British Indian Ocean Territory"}, ["IQ"] = {"Iraq"}, ["IR"] = {"Islamic Republic of Iran"}, ["IS"] = {"Iceland"}, ["IT"] = {"Italy"}, ["JE"] = {"Jersey"}, ["JM"] = {"Jamaica"}, ["JO"] = {"Jordan"}, ["JP"] = {"Japan"}, ["KE"] = {"Kenya"}, ["KG"] = {"Kyrgyzstan"}, ["KH"] = {"Cambodia"}, ["KI"] = {"Kiribati"}, ["KM"] = {"Comoros"}, ["KN"] = {"Saint Kitts and Nevis"}, ["KP"] = {"Democratic People's Republic of Korea"}, ["KR"] = {"Republic of Korea"}, ["KW"] = {"Kuwait"}, ["KY"] = {"Cayman Islands"}, ["KZ"] = {"Kazakhstan"}, ["LA"] = {"Lao People's Democratic Republic"}, ["LB"] = {"Lebanon"}, ["LC"] = {"Saint Lucia"}, ["LI"] = {"Liechtenstein"}, ["LK"] = {"Sri Lanka"}, ["LR"] = {"Liberia"}, ["LS"] = {"Lesotho"}, ["LT"] = {"Lithuania"}, ["LU"] = {"Luxembourg"}, ["LV"] = {"Latvia"}, ["LY"] = {"Libya"}, ["MA"] = {"Morocco"}, ["MC"] = {"Monaco"}, ["MD"] = {"Moldova"}, ["ME"] = {"Montenegro"}, ["MF"] = {"Saint Martin (French part)"}, ["MG"] = {"Madagascar"}, ["MH"] = {"Marshall Islands"}, ["MK"] = {"North Macedonia"}, ["ML"] = {"Mali"}, ["MM"] = {"Myanmar"}, ["MN"] = {"Mongolia"}, ["MO"] = {"Macao"}, ["MP"] = {"Northern Mariana Islands"}, ["MQ"] = {"Martinique"}, ["MR"] = {"Mauritania"}, ["MS"] = {"Montserrat"}, ["MT"] = {"Malta"}, ["MU"] = {"Mauritius"}, ["MV"] = {"Maldives"}, ["MW"] = {"Malawi"}, ["MX"] = {"Mexico"}, ["MY"] = {"Malaysia"}, ["MZ"] = {"Mozambique"}, ["NA"] = {"Namibia"}, ["NC"] = {"New Caledonia"}, ["NE"] = {"Niger"}, ["NF"] = {"Norfolk Island"}, ["NG"] = {"Nigeria"}, ["NI"] = {"Nicaragua"}, ["NL"] = {"Netherlands"}, ["NO"] = {"Norway"}, ["NP"] = {"Nepal"}, ["NR"] = {"Nauru"}, ["NU"] = {"Niue"}, ["NZ"] = {"New Zealand"}, ["OM"] = {"Oman"}, ["PA"] = {"Panama"}, ["PE"] = {"Peru"}, ["PF"] = {"French Polynesia"}, ["PG"] = {"Papua New Guinea"}, ["PH"] = {"Philippines"}, ["PK"] = {"Pakistan"}, ["PL"] = {"Poland"}, ["PM"] = {"Saint Pierre and Miquelon"}, ["PN"] = {"Pitcairn"}, ["PR"] = {"Puerto Rico"}, ["PS"] = {"State of Palestine"}, ["PT"] = {"Portugal"}, ["PW"] = {"Palau"}, ["PY"] = {"Paraguay"}, ["QA"] = {"Qatar"}, ["RE"] = {"Réunion"}, ["RO"] = {"Romania"}, ["RS"] = {"Serbia"}, ["RU"] = {"Russian Federation"}, ["RW"] = {"Rwanda"}, ["SA"] = {"Saudi Arabia"}, ["SB"] = {"Solomon Islands"}, ["SC"] = {"Seychelles"}, ["SD"] = {"Sudan"}, ["SE"] = {"Sweden"}, ["SG"] = {"Singapore"}, ["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"}, ["SI"] = {"Slovenia"}, ["SJ"] = {"Svalbard and Jan Mayen"}, ["SK"] = {"Slovakia"}, ["SL"] = {"Sierra Leone"}, ["SM"] = {"San Marino"}, ["SN"] = {"Senegal"}, ["SO"] = {"Somalia"}, ["SR"] = {"Suriname"}, ["SS"] = {"South Sudan"}, ["ST"] = {"Sao Tome and Principe"}, ["SV"] = {"El Salvador"}, ["SX"] = {"Sint Maarten (Dutch part)"}, ["SY"] = {"Syrian Arab Republic"}, ["SZ"] = {"Eswatini", "eSwatini", "Swaziland"}, ["TA"] = {"Tristan da Cunha"}, ["TC"] = {"Turks and Caicos Islands"}, ["TD"] = {"Chad"}, ["TF"] = {"French Southern Territories"}, ["TG"] = {"Togo"}, ["TH"] = {"Thailand"}, ["TJ"] = {"Tajikistan"}, ["TK"] = {"Tokelau"}, ["TL"] = {"Timor-Leste"}, ["TM"] = {"Turkmenistan"}, ["TN"] = {"Tunisia"}, ["TO"] = {"Tonga"}, ["TR"] = {"Türkiye", "Turkey"}, ["TT"] = {"Trinidad and Tobago"}, ["TV"] = {"Tuvalu"}, ["TW"] = {"Taiwan, Province of China"}, ["TZ"] = {"United Republic of Tanzania"}, ["UA"] = {"Ukraine"}, ["UG"] = {"Uganda"}, ["UM"] = {"United States Minor Outlying Islands"}, ["UN"] = {"United Nations"}, ["US"] = {"United States"}, ["UY"] = {"Uruguay"}, ["UZ"] = {"Uzbekistan"}, ["VA"] = {"Holy See (Vatican City State)"}, ["VC"] = {"Saint Vincent and the Grenadines"}, ["VE"] = {"Venezuela"}, ["VG"] = {"British Virgin Islands"}, ["VI"] = {"U.S. Virgin Islands"}, ["VN"] = {"Viet Nam"}, ["VU"] = {"Vanuatu"}, ["WF"] = {"Wallis and Futuna"}, ["WS"] = {"Samoa"}, ["YE"] = {"Yemen"}, ["YT"] = {"Mayotte"}, ["ZA"] = {"South Africa"}, ["ZM"] = {"Zambia"}, ["ZW"] = {"Zimbabwe"}, ["001"] = {"World"}, ["002"] = {"Africa"}, ["003"] = {"North America"}, ["005"] = {"South America"}, ["009"] = {"Oceania"}, ["011"] = {"Western Africa"}, ["013"] = {"Central America"}, ["014"] = {"Eastern Africa"}, ["015"] = {"Northern Africa"}, ["017"] = {"Middle Africa"}, ["018"] = {"Southern Africa"}, ["019"] = {"Americas"}, ["021"] = {"Northern America"}, ["029"] = {"Caribbean"}, ["030"] = {"Eastern Asia"}, ["034"] = {"Southern Asia"}, ["035"] = {"South-Eastern Asia"}, ["039"] = {"Southern Europe"}, ["053"] = {"Australia and New Zealand"}, ["054"] = {"Melanesia"}, ["057"] = {"Micronesia"}, ["061"] = {"Polynesia"}, ["142"] = {"Asia"}, ["143"] = {"Central Asia"}, ["145"] = {"Western Asia"}, ["150"] = {"Europe"}, ["151"] = {"Eastern Europe"}, ["154"] = {"Northern Europe"}, ["155"] = {"Western Europe"}, ["202"] = {"Sub-Saharan Africa"}, ["419"] = {"Latin America and the Caribbean"} } 08de6963e81994fd00a9f7b5a76b5ed63c543989 1040 1024 2023-10-01T09:58:05Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/data/iana_regions]] Scribunto text/plain -- File-Date: 2023-08-02 return { ["AC"] = {"Ascension Island"}, ["AD"] = {"Andorra"}, ["AE"] = {"United Arab Emirates"}, ["AF"] = {"Afghanistan"}, ["AG"] = {"Antigua and Barbuda"}, ["AI"] = {"Anguilla"}, ["AL"] = {"Albania"}, ["AM"] = {"Armenia"}, ["AO"] = {"Angola"}, ["AQ"] = {"Antarctica"}, ["AR"] = {"Argentina"}, ["AS"] = {"American Samoa"}, ["AT"] = {"Austria"}, ["AU"] = {"Australia"}, ["AW"] = {"Aruba"}, ["AX"] = {"Åland Islands"}, ["AZ"] = {"Azerbaijan"}, ["BA"] = {"Bosnia and Herzegovina"}, ["BB"] = {"Barbados"}, ["BD"] = {"Bangladesh"}, ["BE"] = {"Belgium"}, ["BF"] = {"Burkina Faso"}, ["BG"] = {"Bulgaria"}, ["BH"] = {"Bahrain"}, ["BI"] = {"Burundi"}, ["BJ"] = {"Benin"}, ["BL"] = {"Saint Barthélemy"}, ["BM"] = {"Bermuda"}, ["BN"] = {"Brunei Darussalam"}, ["BO"] = {"Bolivia"}, ["BQ"] = {"Bonaire, Sint Eustatius and Saba"}, ["BR"] = {"Brazil"}, ["BS"] = {"Bahamas"}, ["BT"] = {"Bhutan"}, ["BV"] = {"Bouvet Island"}, ["BW"] = {"Botswana"}, ["BY"] = {"Belarus"}, ["BZ"] = {"Belize"}, ["CA"] = {"Canada"}, ["CC"] = {"Cocos (Keeling) Islands"}, ["CD"] = {"The Democratic Republic of the Congo"}, ["CF"] = {"Central African Republic"}, ["CG"] = {"Congo"}, ["CH"] = {"Switzerland"}, ["CI"] = {"Côte d'Ivoire"}, ["CK"] = {"Cook Islands"}, ["CL"] = {"Chile"}, ["CM"] = {"Cameroon"}, ["CN"] = {"China"}, ["CO"] = {"Colombia"}, ["CP"] = {"Clipperton Island"}, ["CQ"] = {"Sark"}, ["CR"] = {"Costa Rica"}, ["CU"] = {"Cuba"}, ["CV"] = {"Cabo Verde", "Cape Verde"}, ["CW"] = {"Curaçao"}, ["CX"] = {"Christmas Island"}, ["CY"] = {"Cyprus"}, ["CZ"] = {"Czechia", "Czech Republic"}, ["DE"] = {"Germany"}, ["DG"] = {"Diego Garcia"}, ["DJ"] = {"Djibouti"}, ["DK"] = {"Denmark"}, ["DM"] = {"Dominica"}, ["DO"] = {"Dominican Republic"}, ["DZ"] = {"Algeria"}, ["EA"] = {"Ceuta, Melilla"}, ["EC"] = {"Ecuador"}, ["EE"] = {"Estonia"}, ["EG"] = {"Egypt"}, ["EH"] = {"Western Sahara"}, ["ER"] = {"Eritrea"}, ["ES"] = {"Spain"}, ["ET"] = {"Ethiopia"}, ["EU"] = {"European Union"}, ["EZ"] = {"Eurozone"}, ["FI"] = {"Finland"}, ["FJ"] = {"Fiji"}, ["FK"] = {"Falkland Islands (Malvinas)"}, ["FM"] = {"Federated States of Micronesia"}, ["FO"] = {"Faroe Islands"}, ["FR"] = {"France"}, ["GA"] = {"Gabon"}, ["GB"] = {"United Kingdom"}, ["GD"] = {"Grenada"}, ["GE"] = {"Georgia"}, ["GF"] = {"French Guiana"}, ["GG"] = {"Guernsey"}, ["GH"] = {"Ghana"}, ["GI"] = {"Gibraltar"}, ["GL"] = {"Greenland"}, ["GM"] = {"Gambia"}, ["GN"] = {"Guinea"}, ["GP"] = {"Guadeloupe"}, ["GQ"] = {"Equatorial Guinea"}, ["GR"] = {"Greece"}, ["GS"] = {"South Georgia and the South Sandwich Islands"}, ["GT"] = {"Guatemala"}, ["GU"] = {"Guam"}, ["GW"] = {"Guinea-Bissau"}, ["GY"] = {"Guyana"}, ["HK"] = {"Hong Kong"}, ["HM"] = {"Heard Island and McDonald Islands"}, ["HN"] = {"Honduras"}, ["HR"] = {"Croatia"}, ["HT"] = {"Haiti"}, ["HU"] = {"Hungary"}, ["IC"] = {"Canary Islands"}, ["ID"] = {"Indonesia"}, ["IE"] = {"Ireland"}, ["IL"] = {"Israel"}, ["IM"] = {"Isle of Man"}, ["IN"] = {"India"}, ["IO"] = {"British Indian Ocean Territory"}, ["IQ"] = {"Iraq"}, ["IR"] = {"Islamic Republic of Iran"}, ["IS"] = {"Iceland"}, ["IT"] = {"Italy"}, ["JE"] = {"Jersey"}, ["JM"] = {"Jamaica"}, ["JO"] = {"Jordan"}, ["JP"] = {"Japan"}, ["KE"] = {"Kenya"}, ["KG"] = {"Kyrgyzstan"}, ["KH"] = {"Cambodia"}, ["KI"] = {"Kiribati"}, ["KM"] = {"Comoros"}, ["KN"] = {"Saint Kitts and Nevis"}, ["KP"] = {"Democratic People's Republic of Korea"}, ["KR"] = {"Republic of Korea"}, ["KW"] = {"Kuwait"}, ["KY"] = {"Cayman Islands"}, ["KZ"] = {"Kazakhstan"}, ["LA"] = {"Lao People's Democratic Republic"}, ["LB"] = {"Lebanon"}, ["LC"] = {"Saint Lucia"}, ["LI"] = {"Liechtenstein"}, ["LK"] = {"Sri Lanka"}, ["LR"] = {"Liberia"}, ["LS"] = {"Lesotho"}, ["LT"] = {"Lithuania"}, ["LU"] = {"Luxembourg"}, ["LV"] = {"Latvia"}, ["LY"] = {"Libya"}, ["MA"] = {"Morocco"}, ["MC"] = {"Monaco"}, ["MD"] = {"Moldova"}, ["ME"] = {"Montenegro"}, ["MF"] = {"Saint Martin (French part)"}, ["MG"] = {"Madagascar"}, ["MH"] = {"Marshall Islands"}, ["MK"] = {"North Macedonia"}, ["ML"] = {"Mali"}, ["MM"] = {"Myanmar"}, ["MN"] = {"Mongolia"}, ["MO"] = {"Macao"}, ["MP"] = {"Northern Mariana Islands"}, ["MQ"] = {"Martinique"}, ["MR"] = {"Mauritania"}, ["MS"] = {"Montserrat"}, ["MT"] = {"Malta"}, ["MU"] = {"Mauritius"}, ["MV"] = {"Maldives"}, ["MW"] = {"Malawi"}, ["MX"] = {"Mexico"}, ["MY"] = {"Malaysia"}, ["MZ"] = {"Mozambique"}, ["NA"] = {"Namibia"}, ["NC"] = {"New Caledonia"}, ["NE"] = {"Niger"}, ["NF"] = {"Norfolk Island"}, ["NG"] = {"Nigeria"}, ["NI"] = {"Nicaragua"}, ["NL"] = {"Netherlands"}, ["NO"] = {"Norway"}, ["NP"] = {"Nepal"}, ["NR"] = {"Nauru"}, ["NU"] = {"Niue"}, ["NZ"] = {"New Zealand"}, ["OM"] = {"Oman"}, ["PA"] = {"Panama"}, ["PE"] = {"Peru"}, ["PF"] = {"French Polynesia"}, ["PG"] = {"Papua New Guinea"}, ["PH"] = {"Philippines"}, ["PK"] = {"Pakistan"}, ["PL"] = {"Poland"}, ["PM"] = {"Saint Pierre and Miquelon"}, ["PN"] = {"Pitcairn"}, ["PR"] = {"Puerto Rico"}, ["PS"] = {"State of Palestine"}, ["PT"] = {"Portugal"}, ["PW"] = {"Palau"}, ["PY"] = {"Paraguay"}, ["QA"] = {"Qatar"}, ["RE"] = {"Réunion"}, ["RO"] = {"Romania"}, ["RS"] = {"Serbia"}, ["RU"] = {"Russian Federation"}, ["RW"] = {"Rwanda"}, ["SA"] = {"Saudi Arabia"}, ["SB"] = {"Solomon Islands"}, ["SC"] = {"Seychelles"}, ["SD"] = {"Sudan"}, ["SE"] = {"Sweden"}, ["SG"] = {"Singapore"}, ["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"}, ["SI"] = {"Slovenia"}, ["SJ"] = {"Svalbard and Jan Mayen"}, ["SK"] = {"Slovakia"}, ["SL"] = {"Sierra Leone"}, ["SM"] = {"San Marino"}, ["SN"] = {"Senegal"}, ["SO"] = {"Somalia"}, ["SR"] = {"Suriname"}, ["SS"] = {"South Sudan"}, ["ST"] = {"Sao Tome and Principe"}, ["SV"] = {"El Salvador"}, ["SX"] = {"Sint Maarten (Dutch part)"}, ["SY"] = {"Syrian Arab Republic"}, ["SZ"] = {"Eswatini", "eSwatini", "Swaziland"}, ["TA"] = {"Tristan da Cunha"}, ["TC"] = {"Turks and Caicos Islands"}, ["TD"] = {"Chad"}, ["TF"] = {"French Southern Territories"}, ["TG"] = {"Togo"}, ["TH"] = {"Thailand"}, ["TJ"] = {"Tajikistan"}, ["TK"] = {"Tokelau"}, ["TL"] = {"Timor-Leste"}, ["TM"] = {"Turkmenistan"}, ["TN"] = {"Tunisia"}, ["TO"] = {"Tonga"}, ["TR"] = {"Türkiye", "Turkey"}, ["TT"] = {"Trinidad and Tobago"}, ["TV"] = {"Tuvalu"}, ["TW"] = {"Taiwan, Province of China"}, ["TZ"] = {"United Republic of Tanzania"}, ["UA"] = {"Ukraine"}, ["UG"] = {"Uganda"}, ["UM"] = {"United States Minor Outlying Islands"}, ["UN"] = {"United Nations"}, ["US"] = {"United States"}, ["UY"] = {"Uruguay"}, ["UZ"] = {"Uzbekistan"}, ["VA"] = {"Holy See (Vatican City State)"}, ["VC"] = {"Saint Vincent and the Grenadines"}, ["VE"] = {"Venezuela"}, ["VG"] = {"British Virgin Islands"}, ["VI"] = {"U.S. Virgin Islands"}, ["VN"] = {"Viet Nam"}, ["VU"] = {"Vanuatu"}, ["WF"] = {"Wallis and Futuna"}, ["WS"] = {"Samoa"}, ["YE"] = {"Yemen"}, ["YT"] = {"Mayotte"}, ["ZA"] = {"South Africa"}, ["ZM"] = {"Zambia"}, ["ZW"] = {"Zimbabwe"}, ["001"] = {"World"}, ["002"] = {"Africa"}, ["003"] = {"North America"}, ["005"] = {"South America"}, ["009"] = {"Oceania"}, ["011"] = {"Western Africa"}, ["013"] = {"Central America"}, ["014"] = {"Eastern Africa"}, ["015"] = {"Northern Africa"}, ["017"] = {"Middle Africa"}, ["018"] = {"Southern Africa"}, ["019"] = {"Americas"}, ["021"] = {"Northern America"}, ["029"] = {"Caribbean"}, ["030"] = {"Eastern Asia"}, ["034"] = {"Southern Asia"}, ["035"] = {"South-Eastern Asia"}, ["039"] = {"Southern Europe"}, ["053"] = {"Australia and New Zealand"}, ["054"] = {"Melanesia"}, ["057"] = {"Micronesia"}, ["061"] = {"Polynesia"}, ["142"] = {"Asia"}, ["143"] = {"Central Asia"}, ["145"] = {"Western Asia"}, ["150"] = {"Europe"}, ["151"] = {"Eastern Europe"}, ["154"] = {"Northern Europe"}, ["155"] = {"Western Europe"}, ["202"] = {"Sub-Saharan Africa"}, ["419"] = {"Latin America and the Caribbean"} } 08de6963e81994fd00a9f7b5a76b5ed63c543989 Module:Language/data/iana variants 828 473 1025 2023-10-01T09:56:07Z Führerredux 2 Created page with "-- File-Date: 2023-08-02 return { ["1606nict"] = { ["descriptions"] = {"Late Middle French (to 1606)"}, ["prefixes"] = {"frm"}, }, ["1694acad"] = { ["descriptions"] = {"Early Modern French"}, ["prefixes"] = {"fr"}, }, ["1901"] = { ["descriptions"] = {"Traditional German orthography"}, ["prefixes"] = {"de"}, }, ["1959acad"] = { ["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"}, ["prefixes"] = {"be"},..." Scribunto text/plain -- File-Date: 2023-08-02 return { ["1606nict"] = { ["descriptions"] = {"Late Middle French (to 1606)"}, ["prefixes"] = {"frm"}, }, ["1694acad"] = { ["descriptions"] = {"Early Modern French"}, ["prefixes"] = {"fr"}, }, ["1901"] = { ["descriptions"] = {"Traditional German orthography"}, ["prefixes"] = {"de"}, }, ["1959acad"] = { ["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"}, ["prefixes"] = {"be"}, }, ["1994"] = { ["descriptions"] = {"Standardized Resian orthography"}, ["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"}, }, ["1996"] = { ["descriptions"] = {"German orthography of 1996"}, ["prefixes"] = {"de"}, }, ["abl1943"] = { ["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"}, ["prefixes"] = {"pt-br"}, }, ["akuapem"] = { ["descriptions"] = {"Akuapem Twi"}, ["prefixes"] = {"tw"}, }, ["alalc97"] = { ["descriptions"] = {"ALA-LC Romanization, 1997 edition"}, ["prefixes"] = {}, }, ["aluku"] = { ["descriptions"] = {"Aluku dialect", "Boni dialect"}, ["prefixes"] = {"djk"}, }, ["ao1990"] = { ["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"}, ["prefixes"] = {"pt", "gl"}, }, ["aranes"] = { ["descriptions"] = {"Aranese"}, ["prefixes"] = {"oc"}, }, ["arkaika"] = { ["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"}, ["prefixes"] = {"eo"}, }, ["asante"] = { ["descriptions"] = {"Asante Twi", "Ashanti Twi"}, ["prefixes"] = {"tw"}, }, ["auvern"] = { ["descriptions"] = {"Auvergnat"}, ["prefixes"] = {"oc"}, }, ["baku1926"] = { ["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"}, ["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"}, }, ["balanka"] = { ["descriptions"] = {"The Balanka dialect of Anii"}, ["prefixes"] = {"blo"}, }, ["barla"] = { ["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["basiceng"] = { ["descriptions"] = {"Basic English"}, ["prefixes"] = {"en"}, }, ["bauddha"] = { ["descriptions"] = {"Buddhist Hybrid Sanskrit"}, ["prefixes"] = {"sa"}, }, ["bciav"] = { ["descriptions"] = {"BCI Blissymbolics AV"}, ["prefixes"] = {"zbl"}, }, ["bcizbl"] = { ["descriptions"] = {"BCI Blissymbolics"}, ["prefixes"] = {"zbl"}, }, ["biscayan"] = { ["descriptions"] = {"Biscayan dialect of Basque"}, ["prefixes"] = {"eu"}, }, ["biske"] = { ["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["blasl"] = { ["descriptions"] = {"Black American Sign Language dialect"}, ["prefixes"] = {"ase", "sgn-ase"}, }, ["bohoric"] = { ["descriptions"] = {"Slovene in Bohorič alphabet"}, ["prefixes"] = {"sl"}, }, ["boont"] = { ["descriptions"] = {"Boontling"}, ["prefixes"] = {"en"}, }, ["bornholm"] = { ["descriptions"] = {"Bornholmsk"}, ["prefixes"] = {"da"}, }, ["cisaup"] = { ["descriptions"] = {"Cisalpine"}, ["prefixes"] = {"oc"}, }, ["colb1945"] = { ["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"}, ["prefixes"] = {"pt"}, }, ["cornu"] = { ["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"}, ["prefixes"] = {"en"}, }, ["creiss"] = { ["descriptions"] = {"Occitan variants of the Croissant area"}, ["prefixes"] = {"oc"}, }, ["dajnko"] = { ["descriptions"] = {"Slovene in Dajnko alphabet"}, ["prefixes"] = {"sl"}, }, ["ekavsk"] = { ["descriptions"] = {"Serbian with Ekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["emodeng"] = { ["descriptions"] = {"Early Modern English (1500-1700)"}, ["prefixes"] = {"en"}, }, ["fonipa"] = { ["descriptions"] = {"International Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonkirsh"] = { ["descriptions"] = {"Kirshenbaum Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonnapa"] = { ["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"}, ["prefixes"] = {}, }, ["fonupa"] = { ["descriptions"] = {"Uralic Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonxsamp"] = { ["descriptions"] = {"X-SAMPA transcription"}, ["prefixes"] = {}, }, ["gallo"] = { ["descriptions"] = {"Gallo"}, ["prefixes"] = {"fr"}, }, ["gascon"] = { ["descriptions"] = {"Gascon"}, ["prefixes"] = {"oc"}, }, ["grclass"] = { ["descriptions"] = {"Classical Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["grital"] = { ["descriptions"] = {"Italian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"}, }, ["grmistr"] = { ["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["hepburn"] = { ["descriptions"] = {"Hepburn romanization"}, ["prefixes"] = {"ja-latn"}, }, ["hognorsk"] = { ["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"}, ["prefixes"] = {"nn"}, }, ["hsistemo"] = { ["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, }, ["ijekavsk"] = { ["descriptions"] = {"Serbian with Ijekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["itihasa"] = { ["descriptions"] = {"Epic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["ivanchov"] = { ["descriptions"] = {"Bulgarian in 1899 orthography"}, ["prefixes"] = {"bg"}, }, ["jauer"] = { ["descriptions"] = {"Jauer dialect of Romansh"}, ["prefixes"] = {"rm"}, }, ["jyutping"] = { ["descriptions"] = {"Jyutping Cantonese Romanization"}, ["prefixes"] = {"yue"}, }, ["kkcor"] = { ["descriptions"] = {"Common Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["kociewie"] = { ["descriptions"] = {"The Kociewie dialect of Polish"}, ["prefixes"] = {"pl"}, }, ["kscor"] = { ["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"}, ["prefixes"] = {"kw"}, }, ["laukika"] = { ["descriptions"] = {"Classical Sanskrit"}, ["prefixes"] = {"sa"}, }, ["lemosin"] = { ["descriptions"] = {"Limousin"}, ["prefixes"] = {"oc"}, }, ["lengadoc"] = { ["descriptions"] = {"Languedocien"}, ["prefixes"] = {"oc"}, }, ["lipaw"] = { ["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["ltg1929"] = { ["descriptions"] = {"The Latgalian language orthography codified in 1929"}, ["prefixes"] = {"ltg"}, }, ["ltg2007"] = { ["descriptions"] = {"The Latgalian language orthography codified in the language law in 2007"}, ["prefixes"] = {"ltg"}, }, ["luna1918"] = { ["descriptions"] = {"Post-1917 Russian orthography"}, ["prefixes"] = {"ru"}, }, ["metelko"] = { ["descriptions"] = {"Slovene in Metelko alphabet"}, ["prefixes"] = {"sl"}, }, ["monoton"] = { ["descriptions"] = {"Monotonic Greek"}, ["prefixes"] = {"el"}, }, ["ndyuka"] = { ["descriptions"] = {"Ndyuka dialect", "Aukan dialect"}, ["prefixes"] = {"djk"}, }, ["nedis"] = { ["descriptions"] = {"Natisone dialect", "Nadiza dialect"}, ["prefixes"] = {"sl"}, }, ["newfound"] = { ["descriptions"] = {"Newfoundland English"}, ["prefixes"] = {"en-ca"}, }, ["nicard"] = { ["descriptions"] = {"Niçard"}, ["prefixes"] = {"oc"}, }, ["njiva"] = { ["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["nulik"] = { ["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"}, ["prefixes"] = {"vo"}, }, ["osojs"] = { ["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["oxendict"] = { ["descriptions"] = {"Oxford English Dictionary spelling"}, ["prefixes"] = {"en"}, }, ["pahawh2"] = { ["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh3"] = { ["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh4"] = { ["descriptions"] = {"Pahawh Hmong Final Version orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pamaka"] = { ["descriptions"] = {"Pamaka dialect"}, ["prefixes"] = {"djk"}, }, ["peano"] = { ["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"}, ["prefixes"] = {"la"}, }, ["petr1708"] = { ["descriptions"] = {"Petrine orthography"}, ["prefixes"] = {"ru"}, }, ["pinyin"] = { ["descriptions"] = {"Pinyin romanization"}, ["prefixes"] = {"zh-latn", "bo-latn"}, }, ["polyton"] = { ["descriptions"] = {"Polytonic Greek"}, ["prefixes"] = {"el"}, }, ["provenc"] = { ["descriptions"] = {"Provençal"}, ["prefixes"] = {"oc"}, }, ["puter"] = { ["descriptions"] = {"Puter idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["rigik"] = { ["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"}, ["prefixes"] = {"vo"}, }, ["rozaj"] = { ["descriptions"] = {"Resian", "Resianic", "Rezijan"}, ["prefixes"] = {"sl"}, }, ["rumgr"] = { ["descriptions"] = {"Rumantsch Grischun"}, ["prefixes"] = {"rm"}, }, ["scotland"] = { ["descriptions"] = {"Scottish Standard English"}, ["prefixes"] = {"en"}, }, ["scouse"] = { ["descriptions"] = {"Scouse"}, ["prefixes"] = {"en"}, }, ["simple"] = { ["descriptions"] = {"Simplified form"}, ["prefixes"] = {}, }, ["solba"] = { ["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["sotav"] = { ["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["spanglis"] = { ["descriptions"] = {"Spanglish"}, ["prefixes"] = {"en", "es"}, }, ["surmiran"] = { ["descriptions"] = {"Surmiran idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sursilv"] = { ["descriptions"] = {"Sursilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sutsilv"] = { ["descriptions"] = {"Sutsilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["synnejyl"] = { ["descriptions"] = {"Synnejysk", "South Jutish"}, ["prefixes"] = {"da"}, }, ["tarask"] = { ["descriptions"] = {"Belarusian in Taraskievica orthography"}, ["prefixes"] = {"be"}, }, ["tongyong"] = { ["descriptions"] = {"Tongyong Pinyin romanization"}, ["prefixes"] = {"zh-latn"}, }, ["tunumiit"] = { ["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"}, ["prefixes"] = {"kl"}, }, ["uccor"] = { ["descriptions"] = {"Unified Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ucrcor"] = { ["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ulster"] = { ["descriptions"] = {"Ulster dialect of Scots"}, ["prefixes"] = {"sco"}, }, ["unifon"] = { ["descriptions"] = {"Unifon phonetic alphabet"}, ["prefixes"] = {"en", "hup", "kyh", "tol", "yur"}, }, ["vaidika"] = { ["descriptions"] = {"Vedic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["valencia"] = { ["descriptions"] = {"Valencian"}, ["prefixes"] = {"ca"}, }, ["vallader"] = { ["descriptions"] = {"Vallader idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["vecdruka"] = { ["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"}, ["prefixes"] = {"lv"}, }, ["vivaraup"] = { ["descriptions"] = {"Vivaro-Alpine"}, ["prefixes"] = {"oc"}, }, ["wadegile"] = { ["descriptions"] = {"Wade-Giles romanization"}, ["prefixes"] = {"zh-latn"}, }, ["xsistemo"] = { ["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, } } 36f89cd82969f3b0f948034eba0fa2c149ee65c2 1042 1025 2023-10-01T09:58:05Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/data/iana_variants]] Scribunto text/plain -- File-Date: 2023-08-02 return { ["1606nict"] = { ["descriptions"] = {"Late Middle French (to 1606)"}, ["prefixes"] = {"frm"}, }, ["1694acad"] = { ["descriptions"] = {"Early Modern French"}, ["prefixes"] = {"fr"}, }, ["1901"] = { ["descriptions"] = {"Traditional German orthography"}, ["prefixes"] = {"de"}, }, ["1959acad"] = { ["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"}, ["prefixes"] = {"be"}, }, ["1994"] = { ["descriptions"] = {"Standardized Resian orthography"}, ["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"}, }, ["1996"] = { ["descriptions"] = {"German orthography of 1996"}, ["prefixes"] = {"de"}, }, ["abl1943"] = { ["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"}, ["prefixes"] = {"pt-br"}, }, ["akuapem"] = { ["descriptions"] = {"Akuapem Twi"}, ["prefixes"] = {"tw"}, }, ["alalc97"] = { ["descriptions"] = {"ALA-LC Romanization, 1997 edition"}, ["prefixes"] = {}, }, ["aluku"] = { ["descriptions"] = {"Aluku dialect", "Boni dialect"}, ["prefixes"] = {"djk"}, }, ["ao1990"] = { ["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"}, ["prefixes"] = {"pt", "gl"}, }, ["aranes"] = { ["descriptions"] = {"Aranese"}, ["prefixes"] = {"oc"}, }, ["arkaika"] = { ["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"}, ["prefixes"] = {"eo"}, }, ["asante"] = { ["descriptions"] = {"Asante Twi", "Ashanti Twi"}, ["prefixes"] = {"tw"}, }, ["auvern"] = { ["descriptions"] = {"Auvergnat"}, ["prefixes"] = {"oc"}, }, ["baku1926"] = { ["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"}, ["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"}, }, ["balanka"] = { ["descriptions"] = {"The Balanka dialect of Anii"}, ["prefixes"] = {"blo"}, }, ["barla"] = { ["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["basiceng"] = { ["descriptions"] = {"Basic English"}, ["prefixes"] = {"en"}, }, ["bauddha"] = { ["descriptions"] = {"Buddhist Hybrid Sanskrit"}, ["prefixes"] = {"sa"}, }, ["bciav"] = { ["descriptions"] = {"BCI Blissymbolics AV"}, ["prefixes"] = {"zbl"}, }, ["bcizbl"] = { ["descriptions"] = {"BCI Blissymbolics"}, ["prefixes"] = {"zbl"}, }, ["biscayan"] = { ["descriptions"] = {"Biscayan dialect of Basque"}, ["prefixes"] = {"eu"}, }, ["biske"] = { ["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["blasl"] = { ["descriptions"] = {"Black American Sign Language dialect"}, ["prefixes"] = {"ase", "sgn-ase"}, }, ["bohoric"] = { ["descriptions"] = {"Slovene in Bohorič alphabet"}, ["prefixes"] = {"sl"}, }, ["boont"] = { ["descriptions"] = {"Boontling"}, ["prefixes"] = {"en"}, }, ["bornholm"] = { ["descriptions"] = {"Bornholmsk"}, ["prefixes"] = {"da"}, }, ["cisaup"] = { ["descriptions"] = {"Cisalpine"}, ["prefixes"] = {"oc"}, }, ["colb1945"] = { ["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"}, ["prefixes"] = {"pt"}, }, ["cornu"] = { ["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"}, ["prefixes"] = {"en"}, }, ["creiss"] = { ["descriptions"] = {"Occitan variants of the Croissant area"}, ["prefixes"] = {"oc"}, }, ["dajnko"] = { ["descriptions"] = {"Slovene in Dajnko alphabet"}, ["prefixes"] = {"sl"}, }, ["ekavsk"] = { ["descriptions"] = {"Serbian with Ekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["emodeng"] = { ["descriptions"] = {"Early Modern English (1500-1700)"}, ["prefixes"] = {"en"}, }, ["fonipa"] = { ["descriptions"] = {"International Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonkirsh"] = { ["descriptions"] = {"Kirshenbaum Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonnapa"] = { ["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"}, ["prefixes"] = {}, }, ["fonupa"] = { ["descriptions"] = {"Uralic Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonxsamp"] = { ["descriptions"] = {"X-SAMPA transcription"}, ["prefixes"] = {}, }, ["gallo"] = { ["descriptions"] = {"Gallo"}, ["prefixes"] = {"fr"}, }, ["gascon"] = { ["descriptions"] = {"Gascon"}, ["prefixes"] = {"oc"}, }, ["grclass"] = { ["descriptions"] = {"Classical Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["grital"] = { ["descriptions"] = {"Italian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"}, }, ["grmistr"] = { ["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["hepburn"] = { ["descriptions"] = {"Hepburn romanization"}, ["prefixes"] = {"ja-latn"}, }, ["hognorsk"] = { ["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"}, ["prefixes"] = {"nn"}, }, ["hsistemo"] = { ["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, }, ["ijekavsk"] = { ["descriptions"] = {"Serbian with Ijekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["itihasa"] = { ["descriptions"] = {"Epic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["ivanchov"] = { ["descriptions"] = {"Bulgarian in 1899 orthography"}, ["prefixes"] = {"bg"}, }, ["jauer"] = { ["descriptions"] = {"Jauer dialect of Romansh"}, ["prefixes"] = {"rm"}, }, ["jyutping"] = { ["descriptions"] = {"Jyutping Cantonese Romanization"}, ["prefixes"] = {"yue"}, }, ["kkcor"] = { ["descriptions"] = {"Common Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["kociewie"] = { ["descriptions"] = {"The Kociewie dialect of Polish"}, ["prefixes"] = {"pl"}, }, ["kscor"] = { ["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"}, ["prefixes"] = {"kw"}, }, ["laukika"] = { ["descriptions"] = {"Classical Sanskrit"}, ["prefixes"] = {"sa"}, }, ["lemosin"] = { ["descriptions"] = {"Limousin"}, ["prefixes"] = {"oc"}, }, ["lengadoc"] = { ["descriptions"] = {"Languedocien"}, ["prefixes"] = {"oc"}, }, ["lipaw"] = { ["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["ltg1929"] = { ["descriptions"] = {"The Latgalian language orthography codified in 1929"}, ["prefixes"] = {"ltg"}, }, ["ltg2007"] = { ["descriptions"] = {"The Latgalian language orthography codified in the language law in 2007"}, ["prefixes"] = {"ltg"}, }, ["luna1918"] = { ["descriptions"] = {"Post-1917 Russian orthography"}, ["prefixes"] = {"ru"}, }, ["metelko"] = { ["descriptions"] = {"Slovene in Metelko alphabet"}, ["prefixes"] = {"sl"}, }, ["monoton"] = { ["descriptions"] = {"Monotonic Greek"}, ["prefixes"] = {"el"}, }, ["ndyuka"] = { ["descriptions"] = {"Ndyuka dialect", "Aukan dialect"}, ["prefixes"] = {"djk"}, }, ["nedis"] = { ["descriptions"] = {"Natisone dialect", "Nadiza dialect"}, ["prefixes"] = {"sl"}, }, ["newfound"] = { ["descriptions"] = {"Newfoundland English"}, ["prefixes"] = {"en-ca"}, }, ["nicard"] = { ["descriptions"] = {"Niçard"}, ["prefixes"] = {"oc"}, }, ["njiva"] = { ["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["nulik"] = { ["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"}, ["prefixes"] = {"vo"}, }, ["osojs"] = { ["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["oxendict"] = { ["descriptions"] = {"Oxford English Dictionary spelling"}, ["prefixes"] = {"en"}, }, ["pahawh2"] = { ["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh3"] = { ["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh4"] = { ["descriptions"] = {"Pahawh Hmong Final Version orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pamaka"] = { ["descriptions"] = {"Pamaka dialect"}, ["prefixes"] = {"djk"}, }, ["peano"] = { ["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"}, ["prefixes"] = {"la"}, }, ["petr1708"] = { ["descriptions"] = {"Petrine orthography"}, ["prefixes"] = {"ru"}, }, ["pinyin"] = { ["descriptions"] = {"Pinyin romanization"}, ["prefixes"] = {"zh-latn", "bo-latn"}, }, ["polyton"] = { ["descriptions"] = {"Polytonic Greek"}, ["prefixes"] = {"el"}, }, ["provenc"] = { ["descriptions"] = {"Provençal"}, ["prefixes"] = {"oc"}, }, ["puter"] = { ["descriptions"] = {"Puter idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["rigik"] = { ["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"}, ["prefixes"] = {"vo"}, }, ["rozaj"] = { ["descriptions"] = {"Resian", "Resianic", "Rezijan"}, ["prefixes"] = {"sl"}, }, ["rumgr"] = { ["descriptions"] = {"Rumantsch Grischun"}, ["prefixes"] = {"rm"}, }, ["scotland"] = { ["descriptions"] = {"Scottish Standard English"}, ["prefixes"] = {"en"}, }, ["scouse"] = { ["descriptions"] = {"Scouse"}, ["prefixes"] = {"en"}, }, ["simple"] = { ["descriptions"] = {"Simplified form"}, ["prefixes"] = {}, }, ["solba"] = { ["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["sotav"] = { ["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["spanglis"] = { ["descriptions"] = {"Spanglish"}, ["prefixes"] = {"en", "es"}, }, ["surmiran"] = { ["descriptions"] = {"Surmiran idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sursilv"] = { ["descriptions"] = {"Sursilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sutsilv"] = { ["descriptions"] = {"Sutsilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["synnejyl"] = { ["descriptions"] = {"Synnejysk", "South Jutish"}, ["prefixes"] = {"da"}, }, ["tarask"] = { ["descriptions"] = {"Belarusian in Taraskievica orthography"}, ["prefixes"] = {"be"}, }, ["tongyong"] = { ["descriptions"] = {"Tongyong Pinyin romanization"}, ["prefixes"] = {"zh-latn"}, }, ["tunumiit"] = { ["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"}, ["prefixes"] = {"kl"}, }, ["uccor"] = { ["descriptions"] = {"Unified Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ucrcor"] = { ["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ulster"] = { ["descriptions"] = {"Ulster dialect of Scots"}, ["prefixes"] = {"sco"}, }, ["unifon"] = { ["descriptions"] = {"Unifon phonetic alphabet"}, ["prefixes"] = {"en", "hup", "kyh", "tol", "yur"}, }, ["vaidika"] = { ["descriptions"] = {"Vedic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["valencia"] = { ["descriptions"] = {"Valencian"}, ["prefixes"] = {"ca"}, }, ["vallader"] = { ["descriptions"] = {"Vallader idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["vecdruka"] = { ["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"}, ["prefixes"] = {"lv"}, }, ["vivaraup"] = { ["descriptions"] = {"Vivaro-Alpine"}, ["prefixes"] = {"oc"}, }, ["wadegile"] = { ["descriptions"] = {"Wade-Giles romanization"}, ["prefixes"] = {"zh-latn"}, }, ["xsistemo"] = { ["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, } } 36f89cd82969f3b0f948034eba0fa2c149ee65c2 Module:Language/data/iana suppressed scripts 828 474 1026 2023-10-01T09:56:38Z Führerredux 2 Created page with "-- File-Date: 2023-08-02 return { ["Arab"] = {"ar", "fa", "ps", "ur"}, ["Armn"] = {"hy"}, ["Beng"] = {"as", "bn"}, ["Blis"] = {"zbl"}, ["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"}, ["Deva"] = {"hi", "mr", "ne", "kok", "mai"}, ["Ethi"] = {"am", "ti"}, ["Geor"] = {"ka"}, ["Grek"] = {"el"}, ["Gujr"] = {"gu"}, ["Guru"] = {"pa"}, ["Hebr"] = {"he", "iw", "yi"}, ["Jpan"] = {"ja"}, ["Khmr"] = {"km"}, ["Knda"] = {"kn"}, ["Kore"] = {"ko"}, ["Laoo"] = {"lo..." Scribunto text/plain -- File-Date: 2023-08-02 return { ["Arab"] = {"ar", "fa", "ps", "ur"}, ["Armn"] = {"hy"}, ["Beng"] = {"as", "bn"}, ["Blis"] = {"zbl"}, ["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"}, ["Deva"] = {"hi", "mr", "ne", "kok", "mai"}, ["Ethi"] = {"am", "ti"}, ["Geor"] = {"ka"}, ["Grek"] = {"el"}, ["Gujr"] = {"gu"}, ["Guru"] = {"pa"}, ["Hebr"] = {"he", "iw", "yi"}, ["Jpan"] = {"ja"}, ["Khmr"] = {"km"}, ["Knda"] = {"kn"}, ["Kore"] = {"ko"}, ["Laoo"] = {"lo"}, ["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo", "es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn", "gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb", "ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd", "nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn", "ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv", "sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb", "frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh", "tpi", "tvl"}, ["Mlym"] = {"ml"}, ["Mymr"] = {"my"}, ["Nkoo"] = {"nqo"}, ["Orya"] = {"or"}, ["Sinh"] = {"si"}, ["Taml"] = {"ta"}, ["Telu"] = {"te"}, ["Thaa"] = {"dv"}, ["Thai"] = {"th"}, ["Tibt"] = {"dz"} } e2c364560ccc050dacdd276ebab1758584b937ad 1044 1026 2023-10-01T09:58:06Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/data/iana_suppressed_scripts]] Scribunto text/plain -- File-Date: 2023-08-02 return { ["Arab"] = {"ar", "fa", "ps", "ur"}, ["Armn"] = {"hy"}, ["Beng"] = {"as", "bn"}, ["Blis"] = {"zbl"}, ["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"}, ["Deva"] = {"hi", "mr", "ne", "kok", "mai"}, ["Ethi"] = {"am", "ti"}, ["Geor"] = {"ka"}, ["Grek"] = {"el"}, ["Gujr"] = {"gu"}, ["Guru"] = {"pa"}, ["Hebr"] = {"he", "iw", "yi"}, ["Jpan"] = {"ja"}, ["Khmr"] = {"km"}, ["Knda"] = {"kn"}, ["Kore"] = {"ko"}, ["Laoo"] = {"lo"}, ["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo", "es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn", "gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb", "ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd", "nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn", "ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv", "sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb", "frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh", "tpi", "tvl"}, ["Mlym"] = {"ml"}, ["Mymr"] = {"my"}, ["Nkoo"] = {"nqo"}, ["Orya"] = {"or"}, ["Sinh"] = {"si"}, ["Taml"] = {"ta"}, ["Telu"] = {"te"}, ["Thaa"] = {"dv"}, ["Thai"] = {"th"}, ["Tibt"] = {"dz"} } e2c364560ccc050dacdd276ebab1758584b937ad Module:Lang/ISO 639 synonyms 828 475 1028 1027 2023-10-01T09:57:28Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Lang/ISO_639_synonyms]] Scribunto text/plain -- File-Date: 2013-01-11 return { ["aar"] = "aa", ["abk"] = "ab", ["afr"] = "af", ["aka"] = "ak", ["amh"] = "am", ["ara"] = "ar", ["arg"] = "an", ["asm"] = "as", ["ava"] = "av", ["ave"] = "ae", ["aym"] = "ay", ["aze"] = "az", ["bak"] = "ba", ["bam"] = "bm", ["bel"] = "be", ["ben"] = "bn", ["bih"] = "bh", ["bis"] = "bi", ["bod"] = "bo", ["bos"] = "bs", ["bre"] = "br", ["bul"] = "bg", ["cat"] = "ca", ["ces"] = "cs", ["cha"] = "ch", ["che"] = "ce", ["chu"] = "cu", ["chv"] = "cv", ["cor"] = "kw", ["cos"] = "co", ["cre"] = "cr", ["cym"] = "cy", ["dan"] = "da", ["deu"] = "de", ["div"] = "dv", ["dzo"] = "dz", ["ell"] = "el", ["eng"] = "en", ["epo"] = "eo", ["est"] = "et", ["eus"] = "eu", ["ewe"] = "ee", ["fao"] = "fo", ["fas"] = "fa", ["fij"] = "fj", ["fin"] = "fi", ["fra"] = "fr", ["fry"] = "fy", ["ful"] = "ff", ["gla"] = "gd", ["gle"] = "ga", ["glg"] = "gl", ["glv"] = "gv", ["grn"] = "gn", ["guj"] = "gu", ["hat"] = "ht", ["hau"] = "ha", ["heb"] = "he", ["her"] = "hz", ["hin"] = "hi", ["hmo"] = "ho", ["hrv"] = "hr", ["hun"] = "hu", ["hye"] = "hy", ["ibo"] = "ig", ["ido"] = "io", ["iii"] = "ii", ["iku"] = "iu", ["ile"] = "ie", ["ina"] = "ia", ["ind"] = "id", ["ipk"] = "ik", ["isl"] = "is", ["ita"] = "it", ["jav"] = "jv", ["jpn"] = "ja", ["kal"] = "kl", ["kan"] = "kn", ["kas"] = "ks", ["kat"] = "ka", ["kau"] = "kr", ["kaz"] = "kk", ["khm"] = "km", ["kik"] = "ki", ["kin"] = "rw", ["kir"] = "ky", ["kom"] = "kv", ["kon"] = "kg", ["kor"] = "ko", ["kua"] = "kj", ["kur"] = "ku", ["lao"] = "lo", ["lat"] = "la", ["lav"] = "lv", ["lim"] = "li", ["lin"] = "ln", ["lit"] = "lt", ["ltz"] = "lb", ["lub"] = "lu", ["lug"] = "lg", ["mah"] = "mh", ["mal"] = "ml", ["mar"] = "mr", ["mkd"] = "mk", ["mlg"] = "mg", ["mlt"] = "mt", ["mon"] = "mn", ["mri"] = "mi", ["msa"] = "ms", ["mya"] = "my", ["nau"] = "na", ["nav"] = "nv", ["nbl"] = "nr", ["nde"] = "nd", ["ndo"] = "ng", ["nep"] = "ne", ["nld"] = "nl", ["nno"] = "nn", ["nob"] = "nb", ["nor"] = "no", ["nya"] = "ny", ["oci"] = "oc", ["oji"] = "oj", ["ori"] = "or", ["orm"] = "om", ["oss"] = "os", ["pan"] = "pa", ["pli"] = "pi", ["pol"] = "pl", ["por"] = "pt", ["pus"] = "ps", ["que"] = "qu", ["roh"] = "rm", ["ron"] = "ro", ["run"] = "rn", ["rus"] = "ru", ["sag"] = "sg", ["san"] = "sa", ["sin"] = "si", ["slk"] = "sk", ["slv"] = "sl", ["sme"] = "se", ["smo"] = "sm", ["sna"] = "sn", ["snd"] = "sd", ["som"] = "so", ["sot"] = "st", ["spa"] = "es", ["sqi"] = "sq", ["srd"] = "sc", ["srp"] = "sr", ["ssw"] = "ss", ["sun"] = "su", ["swa"] = "sw", ["swe"] = "sv", ["tah"] = "ty", ["tam"] = "ta", ["tat"] = "tt", ["tel"] = "te", ["tgk"] = "tg", ["tgl"] = "tl", ["tha"] = "th", ["tir"] = "ti", ["ton"] = "to", ["tsn"] = "tn", ["tso"] = "ts", ["tuk"] = "tk", ["tur"] = "tr", ["twi"] = "tw", ["uig"] = "ug", ["ukr"] = "uk", ["urd"] = "ur", ["uzb"] = "uz", ["ven"] = "ve", ["vie"] = "vi", ["vol"] = "vo", ["wln"] = "wa", ["wol"] = "wo", ["xho"] = "xh", ["yid"] = "yi", ["yor"] = "yo", ["zha"] = "za", ["zho"] = "zh", ["zul"] = "zu" } f3fb5374c9e0fdef6ce6ea22736b79468358ca19 Module:Language 828 445 1030 971 2023-10-01T09:57:53Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language]] Scribunto text/plain require('strict') local m_data = mw.loadData("Module:Language/data") local langData = m_data.languages or m_data local p = {} local function ifNotEmpty(value) if value == "" then return nil else return value end end local function makeLinkedName(languageCode) local data = langData[languageCode] local article = data["article"] local name = data["Wikipedia_name"] or data["name"] return "[[" .. article .. "|" .. name .. "]]:&nbsp;" end local function makeEntryName(word, languageCode) local data = langData[languageCode] local ugsub = mw.ustring.gsub word = tostring(word) if word == nil then error("The function makeEntryName requires a string argument") elseif word == "" then return "" else -- Remove bold and italics, so that words that contain bolding or emphasis can be linked without piping. word = word:gsub("\'\'\'", "") word = word:gsub("\'\'", "") if data == nil then return word else local replacements = data and data["replacements"] if replacements == nil then return word else -- Decompose so that the diacritics of characters such -- as á can be removed in one go. -- No need to compose at the end, because the MediaWiki software -- will handle that. if replacements.decompose then word = mw.ustring.toNFD(word) for i, from in ipairs(replacements.from) do word = ugsub( word, from, replacements.to and replacements.to[i] or "") end else for regex, replacement in pairs(replacements) do word = ugsub(word, regex, replacement) end end return word end end end end p.makeEntryName = makeEntryName local function fixScriptCode(firstLetter, threeLetters) return string.upper(firstLetter) .. string.lower(threeLetters) end local function getCodes(codes, text) local languageCode, scriptCode, invalidCode local errorText if codes == nil or codes == "" then errorText = 'no language or script code provided' elseif codes:find("^%a%a%a?$") or codes:find("^%a%a%a?%-%a%a%a%a$") then -- A three- or two-letter lowercase sequence at beginning of first parameter languageCode = codes:find("^%a%a%a?") and ( codes:match("^(%l%l%l?)") or codes:match("^(%a%a%a?)") :gsub("(%a%a%a?)", string.lower, 1) ) -- One uppercase and three lowercase letters at the end of the first parameter scriptCode = codes:find("%a%a%a%a$") and ( codes:match("(%u%l%l%l)$") or gsub( codes:match("(%a%a%a%a)$"), "(%a)(%a%a%a)", fixScriptCode, 1 ) ) elseif codes:find("^%a%a%a?%-%a%a%a?$") or codes:find("^%a%a%a%-%a%a%a%-%a%a%a$") then languageCode = codes -- Private-use subtag: x followed by one or more sequences of 1-8 lowercase -- letters separated by hyphens. This only allows for one sequence, as it is -- needed for proto-languages such as ine-x-proto (Proto-Indo-European). elseif codes:find("^%a%a%a?%-x%-%a%a?%a?%a?%a?%a?%a?%a?$") then languageCode, scriptCode = codes:match("^(%a%a%a%-x%-%a%a?%a?%a?%a?%a?%a?%a?)%-?(.*)$") if not languageCode then errorText = '<code>'..codes..'</code> is not a valid language or script code.' elseif scriptCode ~= "" and not scriptCode:find("%a%a%a%a") then errorText = '<code>'..scriptCode..'</code> is not a valid script code.' else scriptCode = scriptCode:gsub( "(%a)(%a%a%a)", fixScriptCode, 1 ) end elseif codes:find("^%a%a%a?") then languageCode, invalidCode = codes:match("^(%a%a%a?)%-?(.*)") languageCode = string.lower(languageCode) errorText = '<code>'..invalidCode..'</code> is not a valid script code.' elseif codes:find("%-?%a%a%a%a$") then invalidCode, scriptCode = codes:match("(.*)%-?(%a%a%a%a)$") scriptCode = gsub( scriptCode, "(%a)(%a%a%a)", fixScriptCode ) errorText = '<code>'..invalidCode..'</code> is not a valid language code.' else errorText = '<code>'..codes..'</code> is not a valid language or script code.' end if not scriptCode or scriptCode == "" then scriptCode = require("Module:Unicode data").is_Latin(text) and "Latn" or "unknown" end if errorText then errorText = ' <span style="font-size: smaller">[' .. errorText .. ']</span>' else errorText = "" end languageCode = m_data.redirects[languageCode] or languageCode return languageCode, scriptCode, errorText end local function tag(text, languageCode, script, italics) local data = langData[languageCode] -- Use Wikipedia code if it has been given: for instance, -- Proto-Indo-European has the Wiktionary code "ine-pro" but the Wikipedia -- code "ine-x-proto". languageCode = data and data.Wikipedia_code or languageCode local italicize = script == "Latn" and italics if not text then text = "[text?]" end local textDirectionMarkers = { "", "", "" } if data and data["direction"] == "rtl" then textDirectionMarkers = { ' dir="rtl"', '&rlm;', '&lrm;' } end local out = { textDirectionMarkers[2] } if italicize then table.insert(out, "<i lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</i>") else table.insert(out, "<span lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</span>") end table.insert(out, textDirectionMarkers[3]) return table.concat(out) end function p.lang(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] and mw.text.trim(args[1]) local text = args[2] or error("Provide text in the second parameter") local languageCode, scriptCode, errorText = getCodes(codes, text) local italics = args.italics or args.i or args.italic italics = not (italics == "n" or italics == "-" or italics == "no") return tag(text, languageCode, scriptCode, italics) .. errorText end local function linkToWiktionary(entry, linkText, languageCode) local data = langData[languageCode] local name if languageCode then if data and data.name then name = data.name else -- On other languages' wikis, use mw.getContentLanguage():getCode(), -- or replace 'en' with that wiki's language code. name = mw.language.fetchLanguageName(languageCode, 'en') if name == "" then error("Name for the language code " .. ("%q"):format(languageCode or nil) .. " could not be retrieved with mw.language.fetchLanguageName, " .. "so it should be added to [[Module:Language/data]]") end end if entry:sub(1, 1) == "*" then if name ~= "" then entry = "Reconstruction:" .. name .. "/" .. entry:sub(2) else error("Language name is empty") end elseif data and data.type == "reconstructed" then mw.log("Reconstructed language without asterisk:", languageCode, name, entry) local frame = mw.getCurrentFrame() -- Track reconstructed entries with no asterisk by transcluding -- a nonexistent template. This technique is used in Wiktionary: -- see [[wikt:Module:debug]]. -- [[Special:WhatLinksHere/tracking/wikt-lang/reconstructed with no asterisk]] pcall(frame.expandTemplate, frame, { title = 'tracking/wikt-lang/reconstructed with no asterisk' }) if name ~= "" then entry = "Reconstruction:" .. name .. "/" .. entry else error("Language name is empty") end elseif data and data.type == "appendix" then if name ~= "" then entry = "Appendix:" .. name .. "/" .. entry else error("Language name is empty") end end if entry and linkText then return "[[wikt:" .. entry .. "#" .. name .. "|" .. linkText .. "]]" else error("linkToWiktionary needs a Wiktionary entry or link text, or both") end else return "[[wikt:" .. entry .. "|" .. linkText .. "]]" end end function p.wiktlang(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] and mw.text.trim(args[1]) local word1 = ifNotEmpty(args[2]) local word2 = ifNotEmpty(args[3]) if not args[2] then error("Parameter 2 is required") end local languageCode, scriptCode, errorText = getCodes(codes, word2 or word1) local italics = args.italics or args.i or args.italic italics = not (italics == "n" or italics == "-" or italics == "no") local entry, linkText if word2 and word1 then entry = makeEntryName(word1, languageCode) linkText = word2 elseif word1 then entry = makeEntryName(word1, languageCode) linkText = word1 end local out if languageCode and entry and linkText then out = tag(linkToWiktionary(entry, linkText, languageCode), languageCode, scriptCode, italics) elseif entry and linkText then out = linkToWiktionary(entry, linkText) else out = '<span style="font-size: smaller;">[text?]</span>' end if out and errorText then return out .. errorText else return errorText or error("The function wiktlang generated nothing") end end function p.wikt(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] and mw.text.trim(args[1]) local word1 = ifNotEmpty(args[2]) local word2 = ifNotEmpty(args[3]) if not word1 then error("Provide a word in parameter 2.") end local languageCode, scriptCode, errorText = getCodes(codes, word1) local entry, linkText if word2 and word1 then entry = makeEntryName(word1, languageCode) linkText = word2 elseif word1 then entry = makeEntryName(word1, languageCode) linkText = word1 end local out if languageCode and entry and linkText then out = linkToWiktionary(entry, linkText, languageCode) elseif entry and linkText then out = linkToWiktionary(entry, linkText) else out = '<span style="font-size: smaller;">[text?]</span>' end if out and errorText then return out and out .. errorText else return errorText or error("The function wikt generated nothing") end end return p 51c30e9deeb315db9939fc27a0cb4cb41cfc1ed6 Module:Unicode data 828 459 1032 1010 2023-10-01T09:58:03Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Unicode_data]] Scribunto text/plain local p = {} local floor = math.floor local function errorf(level, ...) if type(level) == "number" then return error(string.format(...), level + 1) else -- level is actually the format string. return error(string.format(level, ...), 2) end end local function binary_range_search(codepoint, ranges) local low, mid, high low, high = 1, ranges.length or require "Module:TableTools".length(ranges) while low <= high do mid = floor((low + high) / 2) local range = ranges[mid] if codepoint < range[1] then high = mid - 1 elseif codepoint <= range[2] then return range, mid else low = mid + 1 end end return nil, mid end p.binary_range_search = binary_range_search --[[ local function linear_range_search(codepoint, ranges) for i, range in ipairs(ranges) do if range[1] <= codepoint and codepoint <= range[2] then return range end end end --]] -- Load a module by indexing "loader" with the name of the module minus the -- "Module:Unicode data/" part. For instance, loader.blocks returns -- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be -- returned. local loader = setmetatable({}, { __index = function (self, key) local success, data = pcall(mw.loadData, "Module:Unicode data/" .. key) if not success then data = false end self[key] = data return data end }) -- For the algorithm used to generate Hangul Syllable names, -- see "Hangul Syllable Name Generation" in section 3.12 of the -- Unicode Specification: -- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf local name_hooks = { { 0x00, 0x1F, "<control-%04X>" }, -- C0 control characters { 0x7F, 0x9F, "<control-%04X>" }, -- DEL and C1 control characters { 0x3400, 0x4DBF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension A { 0x4E00, 0x9FFF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph { 0xAC00, 0xD7A3, function (codepoint) -- Hangul Syllables local Hangul_data = loader.Hangul local syllable_index = codepoint - 0xAC00 return ("HANGUL SYLLABLE %s%s%s"):format( Hangul_data.leads[floor(syllable_index / Hangul_data.final_count)], Hangul_data.vowels[floor((syllable_index % Hangul_data.final_count) / Hangul_data.trail_count)], Hangul_data.trails[syllable_index % Hangul_data.trail_count] ) end }, -- High Surrogates, High Private Use Surrogates, Low Surrogates { 0xD800, 0xDFFF, "<surrogate-%04X>" }, { 0xE000, 0xF8FF, "<private-use-%04X>" }, -- Private Use -- CJK Compatibility Ideographs { 0xF900, 0xFA6D, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0xFA70, 0xFAD9, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0x17000, 0x187F7, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph { 0x18800, 0x18AFF, function (codepoint) return ("TANGUT COMPONENT-%03d"):format(codepoint - 0x187FF) end }, { 0x18D00, 0x18D08, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph Supplement { 0x1B170, 0x1B2FB, "NUSHU CHARACTER-%04X" }, -- Nushu { 0x20000, 0x2A6DF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension B { 0x2A700, 0x2B739, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension C { 0x2B740, 0x2B81D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension D { 0x2B820, 0x2CEA1, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension E { 0x2CEB0, 0x2EBE0, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension F -- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane) { 0x2F800, 0x2FA1D, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0xE0100, 0xE01EF, function (codepoint) -- Variation Selectors Supplement return ("VARIATION SELECTOR-%d"):format(codepoint - 0xE0100 + 17) end}, { 0x30000, 0x3134A, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension G { 0x31350, 0x323AF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension H { 0x2EBF0, 0x2EE5D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension I { 0xF0000, 0xFFFFD, "<private-use-%04X>" }, -- Plane 15 Private Use { 0x100000, 0x10FFFD, "<private-use-%04X>" } -- Plane 16 Private Use } name_hooks.length = #name_hooks local name_range_cache local function generate_name(data, codepoint) if type(data) == "string" then return data:format(codepoint) else return data(codepoint) end end --[[ -- Checks that the code point is a number and in range. -- Does not check whether code point is an integer. -- Not used local function check_codepoint(funcName, argIdx, val) require 'libraryUtil'.checkType(funcName, argIdx, val, 'number') if codepoint < 0 or 0x10FFFF < codepoint then errorf("Codepoint %04X out of range", codepoint) end end --]] -- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8 function p.lookup_name(codepoint) -- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned -- (Cn) and specifically noncharacters: -- https://www.unicode.org/faq/private_use.html#nonchar4 if 0xFDD0 <= codepoint and (codepoint <= 0xFDEF or floor(codepoint % 0x10000) >= 0xFFFE) then return ("<noncharacter-%04X>"):format(codepoint) end if name_range_cache -- Check if previously used "name hook" applies to this code point. and codepoint >= name_range_cache[1] and codepoint <= name_range_cache[2] then return generate_name(name_range_cache[3], codepoint) end local range = binary_range_search(codepoint, name_hooks) if range then name_range_cache = range return generate_name(range[3], codepoint) end local data = loader[('names/%03X'):format(codepoint / 0x1000)] if data and data[codepoint] then return data[codepoint] -- Unassigned (Cn) consists of noncharacters and reserved characters. -- The character has been established not to be a noncharacter, -- and if it were assigned, its name would already been retrieved, -- so it must be reserved. else return ("<reserved-%04X>"):format(codepoint) end end --[[ -- No image data modules on Wikipedia yet. function p.lookup_image(codepoint) local data = loader[('images/%03X'):format(codepoint / 0x1000)] if data then return data[codepoint] end end --]] local planes = { [ 0] = "Basic Multilingual Plane"; [ 1] = "Supplementary Multilingual Plane"; [ 2] = "Supplementary Ideographic Plane"; [ 3] = "Tertiary Ideographic Plane"; [14] = "Supplementary Special-purpose Plane"; [15] = "Supplementary Private Use Area-A"; [16] = "Supplementary Private Use Area-B"; } -- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable. local blocks local function block_iter(blocks, i) i = i + 1 local data = blocks[i] if data then -- Unpack doesn't work on tables loaded with mw.loadData. return i, data[1], data[2], data[3] end end -- An ipairs-type iterator generator for the list of blocks. function p.enum_blocks() local blocks = loader.blocks return block_iter, blocks, 0 end function p.lookup_plane(codepoint) local i = floor(codepoint / 0x10000) return planes[i] or ("Plane %u"):format(i) end function p.lookup_block(codepoint) local blocks = loader.blocks local range = binary_range_search(codepoint, blocks) if range then return range[3] else return "No Block" end end function p.get_block_info(name) for i, block in ipairs(loader.blocks) do if block[3] == name then return block end end end function p.is_valid_pagename(pagename) local has_nonws = false for cp in mw.ustring.gcodepoint(pagename) do if (cp == 0x0023) -- # or (cp == 0x005B) -- [ or (cp == 0x005D) -- ] or (cp == 0x007B) -- { or (cp == 0x007C) -- | or (cp == 0x007D) -- } or (cp == 0x180E) -- MONGOLIAN VOWEL SEPARATOR or ((cp >= 0x2000) and (cp <= 0x200A)) -- spaces in General Punctuation block or (cp == 0xFFFD) -- REPLACEMENT CHARACTER then return false end local printable, result = p.is_printable(cp) if not printable then return false end if result ~= "space-separator" then has_nonws = true end end return has_nonws end local function manual_unpack(what, from) if what[from + 1] == nil then return what[from] end local result = {} from = from or 1 for i, item in ipairs(what) do if i >= from then table.insert(result, item) end end return unpack(result) end local function compare_ranges(range1, range2) return range1[1] < range2[1] end -- Creates a function to look up data in a module that contains "singles" (a -- code point-to-data map) and "ranges" (an array containing arrays that contain -- the low and high code points of a range and the data associated with that -- range). -- "loader" loads and returns the "singles" and "ranges" tables. -- "match_func" is passed the code point and either the data or the "dots", and -- generates the final result of the function. -- The varargs ("dots") describes the default data to be returned if there wasn't -- a match. -- In case the function is used more than once, "cache" saves ranges that have -- already been found to match, or a range whose data is the default if there -- was no match. local function memo_lookup(data_module_subpage, match_func, ...) local dots = { ... } local cache = {} local singles, ranges return function (codepoint) if not singles then local data_module = loader[data_module_subpage] singles, ranges = data_module.singles, data_module.ranges end if singles[codepoint] then return match_func(codepoint, singles[codepoint]) end local range = binary_range_search(codepoint, cache) if range then return match_func(codepoint, manual_unpack(range, 3)) end local range, index = binary_range_search(codepoint, ranges) if range then table.insert(cache, range) table.sort(cache, compare_ranges) return match_func(codepoint, manual_unpack(range, 3)) end if ranges[index] then local dots_range if codepoint > ranges[index][2] then dots_range = { ranges[index][2] + 1, ranges[index + 1] and ranges[index + 1][1] - 1 or 0x10FFFF, unpack(dots) } else -- codepoint < range[index][1] dots_range = { ranges[index - 1] and ranges[index - 1][2] + 1 or 0, ranges[index][1] - 1, unpack(dots) } end table.sort(cache, compare_ranges) end return match_func(codepoint) end end -- Get a code point's combining class value in [[Module:Unicode data/combining]], -- and return whether this value is not zero. Zero is assigned as the default -- if the combining class value is not found in this data module. -- That is, return true if character is combining, or false if it is not. -- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for -- more information. p.is_combining = memo_lookup( "combining", function (codepoint, combining_class) return combining_class and combining_class ~= 0 or false end, 0) function p.add_dotted_circle(str) return (mw.ustring.gsub(str, ".", function(char) if p.is_combining(mw.ustring.codepoint(char)) then return '◌' .. char end end)) end local lookup_control = memo_lookup( "control", function (codepoint, ccc) return ccc or "assigned" end, "assigned") p.lookup_control = lookup_control function p.is_assigned(codepoint) return lookup_control(codepoint) ~= "unassigned" end function p.is_printable(codepoint) local result = lookup_control(codepoint) return (result == "assigned") or (result == "space-separator"), result end function p.is_whitespace(codepoint) local result = lookup_control(codepoint) return (result == "space-separator"), result end p.lookup_category = memo_lookup( "category", function (codepoint, category) return category end, "Cn") local lookup_script = memo_lookup( "scripts", function (codepoint, script_code) return script_code or 'Zzzz' end, "Zzzz") p.lookup_script = lookup_script function p.get_best_script(str) -- Check type of argument, because mw.text.decode coerces numbers to strings! require "libraryUtil".checkType("get_best_script", 1, str, "string") -- Convert HTML character references (including named character references, -- or character entities) to characters. str = mw.text.decode(str, true) local scripts = {} for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) -- Ignore "Inherited", "Undetermined", or "Uncoded" scripts. if not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then scripts[script] = true end end -- If scripts does not contain two or more keys, -- return first and only key (script code) in table. if not next(scripts, next(scripts)) then return next(scripts) end -- else return majority script, or else "Zzzz"? end function p.is_Latin(str) require "libraryUtil".checkType("get_best_script", 1, str, "string") str = mw.text.decode(str, true) -- Search for the leading bytes that introduce the UTF-8 encoding of the -- code points U+0340-U+10FFFF. If they are not found and there is at least -- one Latin-script character, the string counts as Latin, because the rest -- of the characters can only be Zyyy, Zinh, and Zzzz. -- The only scripts found below U+0370 (the first code point of the Greek -- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz. -- See the codepage in the [[UTF-8]] article. if not str:find "[\205-\244]" then for codepoint in mw.ustring.gcodepoint(str) do if lookup_script(codepoint) == "Latn" then return true end end end local Latn = false for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) if script == "Latn" then Latn = true elseif not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then return false end end return Latn end -- Checks that a string contains only characters belonging to right-to-left -- scripts, or characters of ignorable scripts. function p.is_rtl(str) require "libraryUtil".checkType("get_best_script", 1, str, "string") str = mw.text.decode(str, true) -- Search for the leading bytes that introduce the UTF-8 encoding of the -- code points U+0580-U+10FFFF. If they are not found, the string can only -- have characters from a left-to-right script, because the first code point -- in a right-to-left script is U+0591, in the Hebrew block. if not str:find "[\214-\244]" then return false end local result = false local rtl = loader.scripts.rtl for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) if rtl[script] then result = true elseif not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then return false end end return result end --[[--------------------------< I S _ R T L _ F R A M E >------------------------------------------------------ external entry from an {{#invoke:}} to determine if a string of text is rtl. Strips html and html-like tags so that those tags don't corrupt the is-rtl-is-not-rtl determination; this added for the cases where the rtl text has <br /> tags. ]] function p.is_rtl_frame (frame) local str = frame.args[1]; -- get the string from the {{#invoke:}} frame str = str:gsub ('%b<>', ''); -- strip any html and html-like tags return p.is_rtl (str); -- return if whatever remains rtl; false else end local function get_codepoint(args, arg) local codepoint_string = args[arg] or errorf(2, "Parameter %s is required", tostring(arg)) local codepoint = tonumber(codepoint_string, 16) or errorf(2, "Parameter %s is not a code point in hexadecimal base", tostring(arg)) if not (0 <= codepoint and codepoint <= 0x10FFFF) then errorf(2, "code point in parameter %s out of range", tostring(arg)) end return codepoint end local function get_func(args, arg, prefix) local suffix = args[arg] or errorf(2, "Parameter %s is required", tostring(arg)) suffix = mw.text.trim(suffix) local func_name = prefix .. suffix local func = p[func_name] or errorf(2, "There is no function '%s'", func_name) return func end -- This function allows any of the "lookup" functions to be invoked. The first -- parameter is the word after "lookup_"; the second parameter is the code point -- in hexadecimal base. function p.lookup(frame) local func = get_func(frame.args, 1, "lookup_") local codepoint = get_codepoint(frame.args, 2) local result = func(codepoint) if func == p.lookup_name then -- Prevent code point labels such as <control-0000> from being -- interpreted as HTML tags. result = result:gsub("<", "&lt;") end return result end function p.is(frame) local func = get_func(frame.args, 1, "is_") -- is_Latin and is_valid_pagename take strings. if func == p.is_Latin or func == p.is_valid_pagename or func == p.is_rtl then return (func(frame.args[2])) else -- The rest take code points. local codepoint = get_codepoint(frame.args, 2) return (func(codepoint)) -- Adjust to one result. end end return p 898b5f0689e2646f633acbbd08143920c87abef2 Module:Lang/data 828 465 1034 1017 2023-10-01T09:58:04Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Lang/data]] Scribunto text/plain local lang_obj = mw.language.getContentLanguage(); local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag --[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------ primary table of tables that decode: lang -> language tags and names script -> ISO 15924 script tags region -> ISO 3166 region tags variant -> iana registered variant tags suppressed -> map of scripts tags and their associated language tags all of these data come from separate modules that are derived from the IANA language-subtag-registry file key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches the first name. ]] local function key_to_lower (module, src_type) local out = {}; local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data if 'var_sup' == src_type then for k, v in pairs (source) do out[k:lower()] = v; -- for variant and suppressed everything is needed end elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active) for k, v in pairs (source.active) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated) for k, v in pairs (source.deprecated) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end else -- here for all other sources for k, v in pairs (source) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end end return out; end local lang_name_table_t = { lang = key_to_lower ('Module:Language/data/iana languages', 'lang'), lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'), script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'), suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower } --[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >-------------------------------- For internationalization; not used at en.wiki The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal. Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki language list for the local language. Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all. When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens add an appropriate entry to the override table below. Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply spelling differences: bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym dv: IANA: Dhivehi MW: Divehi el: IANA: Modern Greek MW: Greek ht: IANA: Haitian MW: Haitian Creole ky: IANA: Kirghiz MW: Kyrgyz li: IANA: Limburgan MW: Limburgish or: IANA: Oriya MW: Odia os: IANA: Ossetian MW: Ossetic "pa: IANA: Panjabi MW: Punjabi "ps: IANA: Pushto MW: Pashto "to: IANA: Tonga MW: Tongan "ug: IANA: Uighur MW: Uyghur use the override table to override language names that are incorrect for your project To see the list of names that MediaWiki has for your language, enter this in the Debug colsole: =mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all')) (replacing <tag> with the language tag for your language) Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true. ]] local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki -- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all if true == media_wiki_override_enable then local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list if lang_name_table_t.lang[tag] then -- if the tag is in the main list lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki end end end --[[--------------------------< O V E R R I D E >-------------------------------------------------------------- Language codes and names in this table override the BCP47 names in lang_name_table. indexes in this table shall always be lower case ]] local override = { ------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------ ["ab"] = "Abkhaz", -- to match en.wiki article name ["ca-valencia"] = "Valencian", ["cu"] = "Church Slavonic", -- 2nd IANA name; ["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names ["de-ch"] = "Swiss Standard German", ["en-au"] = "Australian English", ["en-ca"] = "Canadian English", ["en-emodeng"] = "Early Modern English", ["en-gb"] = "British English", ["en-ie"] = "Irish English", ["en-in"] = "Indian English", ["en-nz"] = "New Zealand English", ["en-us"] = "American English", ["en-za"] = "South African English", ["fy"] = "West Frisian", -- Western Frisian ["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title ["nl-be"] = "Flemish", -- match MediaWiki ["oc-provenc"] = "Provençal", ["ps"] = "Pashto", -- Pushto ["pt-br"] = "Brazilian Portuguese", -- match MediaWiki ["tw-asante"] = "Asante Twi", ["ug"] = "Uyghur", -- 2nd IANA name; to match en.wiki article name -- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["av"] = "Avar", -- Avaric ["bo"] = "Standard Tibetan", -- Tibetan ["el"] = "Greek", -- Modern Greek -- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa ["ff"] = "Fula", -- Fulah ["ht"] = "Haitian Creole", -- Haitian ["hz"] = "Otjiherero", -- Herero ["ii"] = "Yi", -- Sichuan Yi ["ki"] = "Gikuyu", -- Kikuyu ["kl"] = "Greenlandic", -- Kalaallisut ["ky"] = "Kyrgyz", -- Kirghiz ["lg"] = "Luganda", -- Ganda ["li"] = "Limburgish", -- Limburgan ["mi"] = "Māori", -- Maori ["na"] = "Nauruan", -- Nauru ["nb"] = "Bokmål", -- Norwegian Bokmål ["nd"] = "Northern Ndebele", -- North Ndebele ["nn"] = "Nynorsk", -- Norwegian Nynorsk ["nr"] = "Southern Ndebele", -- South Ndebele ["ny"] = "Chichewa", -- Nyanja ["oj"] = "Ojibwe", -- Ojibwa ["or"] = "Odia", -- Oriya ["pa"] = "Punjabi", -- Panjabi ["rn"] = "Kirundi", -- Rundi ["sl"] = "Slovene", -- Slovenian ["ss"] = "Swazi", -- Swati ["st"] = "Sotho", -- Southern Sotho ["to"] = "Tongan", -- Tonga --<end do-not-edit except to comment out>-- ------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >---------------------------------------------- ["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash) ["arc"] = "Imperial Aramaic (700-300 BCE)", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 'preferred' name ["art"] = "constructed", -- to match en.wiki article; lowercase for category name ["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title ["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title ["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration; ["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat ["bxr"] = "Russian Buryat", -- Russia Buriat; ["bxu"] = "Chinese Buryat", -- China Buriat; ["byr"] = "Yipma", -- Baruya, Yipma ["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic ["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title ["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash) ["frr"] = "North Frisian", -- Northern Frisian ["frs"] = "East Frisian Low Saxon", -- Eastern Frisian ["gsw-fr"] = "Alsatian", -- match MediaWiki ["haa"] = "Hän", -- Han; to match en.wiki article title ["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash) ["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title ["jam"] = "Jamaican Patois", -- Jamaican Creole English ["lij-mc"] = "Monégasque", -- Ligurian as spoken in Monaco ["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo ["mhr"] = "Meadow Mari", -- Eastern Mari ["mid"] = "Modern Mandaic", -- Mandaic ['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope; ["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash) ["mla"] = "Tamambo", -- Malo ['mte'] = "Mono-Alu", -- Mono (Solomon Islands) ['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope; ["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title ["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title ["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash) ["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title ["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text ["nrf-gg"] = "Guernésiais", -- match MediaWiki ["nrf-je"] = "Jèrriais", -- match MediaWiki ["nzi"] = "Nzema", -- Nzima; to match en.wiki article title ["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash) ["orv"] = "Old East Slavic", -- Old Russian ["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article ["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article ["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title ["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name() ["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article ["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title ["stq"] = "Saterland Frisian", -- Saterfriesisch ["und"] = "undetermined", -- capitalization to match existing category ["wrg"] = "Warrongo", -- Warungu ["xal-ru"] = "Kalmyk", -- to match en.wiki article title ["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño ["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title ["zxx"] = "no linguistic content", -- capitalization -- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["ace"] = "Acehnese", -- Achinese ["aec"] = "Sa'idi Arabic", -- Saidi Arabic ["akl"] = "Aklan", -- Aklanon ["alt"] = "Altay", -- Southern Altai ["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache ["bal"] = "Balochi", -- Baluchi -- ["bcl"] = "Central Bicolano", -- Central Bikol ["bin"] = "Edo", -- Bini ["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya ["chg"] = "Chagatay", -- Chagatai ["ckb"] = "Sorani Kurdish", -- Central Kurdish ["cnu"] = "Shenwa", -- Chenoua ["coc"] = "Cocopah", -- Cocopa ["diq"] = "Zazaki", -- Dimli ["fit"] = "Meänkieli", -- Tornedalen Finnish ["fkv"] = "Kven", -- Kven Finnish ["frk"] = "Old Frankish", -- Frankish ["gez"] = "Ge'ez", -- Geez ["gju"] = "Gujari", -- Gujari ["gsw"] = "Alemannic German", -- Swiss German ["gul"] = "Gullah", -- Sea Island Creole English ["hak"] = "Hakka", -- Hakka Chinese ["hbo"] = "Biblical Hebrew", -- Ancient Hebrew ["hnd"] = "Hindko", -- Southern Hindko -- ["ikt"] = "Inuvialuk", -- Inuinnaqtun ["kaa"] = "Karakalpak", -- Kara-Kalpak ["khb"] = "Tai Lü", -- Lü ["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish ["kpo"] = "Kposo", -- Ikposo ["krj"] = "Kinaray-a", -- Kinaray-A ["ktz"] = "Juǀ'hoan", -- Juǀʼhoan ["lez"] = "Lezgian", -- Lezghian ["liv"] = "Livonian", -- Liv ["lng"] = "Lombardic", -- Langobardic ["mia"] = "Miami-Illinois", -- Miami ["miq"] = "Miskito", -- Mískito ["mix"] = "Mixtec", -- Mixtepec Mixtec ["mni"] = "Meitei", -- Manipuri ["mrj"] = "Hill Mari", -- Western Mari ["mww"] = "White Hmong", -- Hmong Daw ["nds-nl"] = "Dutch Low Saxon", -- Low German -- ["new"] = "Nepal Bhasa", -- Newari ["nso"] = "Northern Sotho", -- Pedi -- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari ["ood"] = "O'odham", -- Tohono O'odham ["otk"] = "Old Turkic", -- Old Turkish ["pal"] = "Middle Persian", -- Pahlavi ["pam"] = "Kapampangan", -- Pampanga ["phr"] = "Potwari", -- Pahari-Potwari ["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit -- ["pnb"] = "Punjabi", -- Western Panjabi ["psu"] = "Shauraseni", -- Sauraseni Prākrit ["rap"] = "Rapa Nui", -- Rapanui ["rar"] = "Cook Islands Māori", -- Rarotongan ["rmu"] = "Scandoromani", -- Tavringer Romani ["rom"] = "Romani", -- Romany ["rup"] = "Aromanian", -- Macedo-Romanian ["ryu"] = "Okinawan", -- Central Okinawan ["sdc"] = "Sassarese", -- Sassarese Sardinian ["sdn"] = "Gallurese", -- Gallurese Sardinian ["shp"] = "Shipibo", -- Shipibo-Conibo ["src"] = "Logudorese", -- Logudorese Sardinian ["sro"] = "Campidanese", -- Campidanese Sardinian ["tkl"] = "Tokelauan", -- Tokelau ["tvl"] = "Tuvaluan", -- Tuvalu ["tyv"] = "Tuvan", -- Tuvinian ["vls"] = "West Flemish", -- Vlaams ["wep"] = "Westphalian", -- Westphalien ["xal"] = "Oirat", -- Kalmyk ["xcl"] = "Old Armenian", -- Classical Armenian ["yua"] = "Yucatec Maya", -- Yucateco --<end do-not-edit except to comment out>-- ------------------------------< P R I V A T E _ U S E _ T A G S >---------------------------------------------- ["akk-x-latbabyl"] = "Late Babylonian", ["akk-x-midassyr"] = "Middle Assyrian Akkadian", ["akk-x-midbabyl"] = "Middle Babylonian Akkadian", ["akk-x-neoassyr"] = "Neo-Assyrian Akkadian", ["akk-x-neobabyl"] = "Neo-Babylonian Akkadian", ["akk-x-old"] = "Old Akkadian", ["akk-x-oldassyr"] = "Old Assyrian Akkadian", ["akk-x-oldbabyl"] = "Old Babylonian Akkadian", ["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages ["ca-x-old"] = "Old Catalan", ["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages ["egy-x-demotic"] = "Demotic Egyptian", ["egy-x-late"] = "Late Egyptian", ["egy-x-middle"] = "Middle Egyptian", ["egy-x-old"] = "Old Egyptian", ["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages ["gmw-x-ecg"] = "East Central German", ["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre ["grc-x-attic"] = "Attic Greek", ["grc-x-biblical"] = "Biblical Greek", ["grc-x-byzant"] = "Byzantine Greek", ["grc-x-classic"] = "Classical Greek", ["grc-x-doric"] = "Doric Greek", ["grc-x-hellen"] = "Hellenistic Greek", ["grc-x-ionic"] = "Ionic Greek", ["grc-x-koine"] = "Koinē Greek", ["grc-x-medieval"] = "Medieval Greek", ["grc-x-patris"] = "Patristic Greek", ["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages ["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages ["ine-x-proto"] = "Proto-Indo-European", ["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages ["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages ["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there ["la-x-medieval"] = "Medieval Latin", ["la-x-new"] = "New Latin", ["lmo-x-milanese"] = "Milanese", -- lmo in IANA is Lombard; Milanese is a dialect ["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages ["prg-x-old"] = "Old Prussian", ["sem-x-ammonite"] = "Ammonite", ["sem-x-aramaic"] = "Aramaic", ["sem-x-canaan"] = "Canaanite languages", ["sem-x-dumaitic"] = "Dumaitic", ["sem-x-egurage"] = "Eastern Gurage", ["sem-x-hatran"] = "Hatran Aramaic", ["sem-x-oldsoara"] = "Old South Arabian", ["sem-x-palmyren"] = "Palmyrene Aramaic", ["sem-x-proto"] = "Proto-Semitic", ["sem-x-taymanit"] = "Taymanitic", ["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages ["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai ["yuf-x-wal"] = "Walapai", ["yuf-x-yav"] = "Yavapai", } --[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------ for those rare occasions when article titles don't fit with the normal '<language name>-language', this table maps language code to article title. Use of this table should be avoided and the use of redirects preferred as that is the long-standing method of handling article names that don't fit with the normal pattern ]] local article_name = { ['kue'] = "Kuman language (New Guinea)", -- Kuman (Papua New Guinea); to avoid Kuman dab page ["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab ['mbo'] = "Mbo language (Cameroon)", -- Mbo (Cameroon) ['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages ['mnr'] = "Mono language (California)", -- Mono (USA) ['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon) ['qwm'] = "Kuman (Russia)", -- Kuman (Russia); to avoid Kuman dab page ["snq"] = "Sangu language (Gabon)", -- Sangu (Gabon) ["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab ["zmw"] = "Mbo language (Congo)", -- Mbo (Democratic Republic of Congo) } --[=[-------------------------< R T L _ S C R I P T S >-------------------------------------------------------- ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]] last update to this list: 2017-12-24 ]=] local rtl_scripts = { 'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr', 'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb', 'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg', 'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole', }; --[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------ This is a table of tables of transliteration standards and the language codes or language scripts that apply to those standards. This table is used to create the tool-tip text associated with the transliterated text displayed by some of the {{lang-??}} templates. These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for the cases when no |std= parameter value is provided. ]] local translit_title_table = { ['ahl'] = { ['default'] = 'Academy of the Hebrew Language transliteration', }, ['ala'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['ala-lc'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['batr'] = { ['default'] = 'Bikdash Arabic Transliteration Rules', }, ['bgn/pcgn'] = { ['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration', }, ['din'] = { ['ar'] = 'DIN 31635 Arabic', ['fa'] = 'DIN 31635 Arabic', ['ku'] = 'DIN 31635 Arabic', ['ps'] = 'DIN 31635 Arabic', ['tg'] = 'DIN 31635 Arabic', ['ug'] = 'DIN 31635 Arabic', ['ur'] = 'DIN 31635 Arabic', ['arab'] = 'DIN 31635 Arabic', ['default'] = 'DIN transliteration', }, ['eae'] = { ['default'] = 'Encyclopaedia Aethiopica transliteration', }, ['hepburn'] = { ['default'] = 'Hepburn transliteration', }, ['hunterian'] = { ['default'] = 'Hunterian transliteration', }, ['iast'] = { ['default'] = 'International Alphabet of Sanskrit transliteration', }, ['iso'] = { -- when a transliteration standard is supplied ['ab'] = 'ISO 9 Cyrillic', ['ba'] = 'ISO 9 Cyrillic', ['be'] = 'ISO 9 Cyrillic', ['bg'] = 'ISO 9 Cyrillic', ['kk'] = 'ISO 9 Cyrillic', ['ky'] = 'ISO 9 Cyrillic', ['mn'] = 'ISO 9 Cyrillic', ['ru'] = 'ISO 9 Cyrillic', ['tg'] = 'ISO 9 Cyrillic', ['uk'] = 'ISO 9 Cyrillic', ['bua'] = 'ISO 9 Cyrillic', ['sah'] = 'ISO 9 Cyrillic', ['tut'] = 'ISO 9 Cyrillic', ['xal'] = 'ISO 9 Cyrillic', ['cyrl'] = 'ISO 9 Cyrillic', ['ar'] = 'ISO 233 Arabic', ['ku'] = 'ISO 233 Arabic', ['ps'] = 'ISO 233 Arabic', ['ug'] = 'ISO 233 Arabic', ['ur'] = 'ISO 233 Arabic', ['arab'] = 'ISO 233 Arabic', ['he'] = 'ISO 259 Hebrew', ['yi'] = 'ISO 259 Hebrew', ['hebr'] = 'ISO 259 Hebrew', ['el'] = 'ISO 843 Greek', ['grc'] = 'ISO 843 Greek', ['ja'] = 'ISO 3602 Japanese', ['hira'] = 'ISO 3602 Japanese', ['hrkt'] = 'ISO 3602 Japanese', ['jpan'] = 'ISO 3602 Japanese', ['kana'] = 'ISO 3602 Japanese', ['zh'] = 'ISO 7098 Chinese', ['chi'] = 'ISO 7098 Chinese', ['pny'] = 'ISO 7098 Chinese', ['zho'] = 'ISO 7098 Chinese', -- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani? ['hans'] = 'ISO 7098 Chinese', ['hant'] = 'ISO 7098 Chinese', ['ka'] = 'ISO 9984 Georgian', ['kat'] = 'ISO 9984 Georgian', ['arm'] = 'ISO 9985 Armenian', ['hy'] = 'ISO 9985 Armenian', ['th'] = 'ISO 11940 Thai', ['tha'] = 'ISO 11940 Thai', ['ko'] = 'ISO 11941 Korean', ['kor'] = 'ISO 11941 Korean', ['awa'] = 'ISO 15919 Indic', ['bho'] = 'ISO 15919 Indic', ['bn'] = 'ISO 15919 Indic', ['bra'] = 'ISO 15919 Indic', ['doi'] = 'ISO 15919 Indic', ['dra'] = 'ISO 15919 Indic', ['gon'] = 'ISO 15919 Indic', ['gu'] = 'ISO 15919 Indic', ['hi'] = 'ISO 15919 Indic', ['hno'] = 'ISO 15919 Indic', ['inc'] = 'ISO 15919 Indic', ['kn'] = 'ISO 15919 Indic', ['kok'] = 'ISO 15919 Indic', ['ks'] = 'ISO 15919 Indic', ['mag'] = 'ISO 15919 Indic', ['mai'] = 'ISO 15919 Indic', ['ml'] = 'ISO 15919 Indic', ['mr'] = 'ISO 15919 Indic', ['ne'] = 'ISO 15919 Indic', ['new'] = 'ISO 15919 Indic', ['or'] = 'ISO 15919 Indic', ['pa'] = 'ISO 15919 Indic', ['pnb'] = 'ISO 15919 Indic', ['raj'] = 'ISO 15919 Indic', ['sa'] = 'ISO 15919 Indic', ['sat'] = 'ISO 15919 Indic', ['sd'] = 'ISO 15919 Indic', ['si'] = 'ISO 15919 Indic', ['skr'] = 'ISO 15919 Indic', ['ta'] = 'ISO 15919 Indic', ['tcy'] = 'ISO 15919 Indic', ['te'] = 'ISO 15919 Indic', ['beng'] = 'ISO 15919 Indic', ['brah'] = 'ISO 15919 Indic', ['deva'] = 'ISO 15919 Indic', ['gujr'] = 'ISO 15919 Indic', ['guru'] = 'ISO 15919 Indic', ['knda'] = 'ISO 15919 Indic', ['mlym'] = 'ISO 15919 Indic', ['orya'] = 'ISO 15919 Indic', ['sinh'] = 'ISO 15919 Indic', ['taml'] = 'ISO 15919 Indic', ['telu'] = 'ISO 15919 Indic', ['default'] = 'ISO transliteration', }, ['jyutping'] = { ['default'] = 'Jyutping transliteration', }, ['mlcts'] = { ['default'] = 'Myanmar Language Commission Transcription System', }, ['mr'] = { ['default'] = 'McCune–Reischauer transliteration', }, ['nihon-shiki'] = { ['default'] = 'Nihon-shiki transliteration', }, ['no_std'] = { -- when no transliteration standard is supplied ['akk'] = 'Semitic transliteration', ['sem'] = 'Semitic transliteration', ['phnx'] = 'Semitic transliteration', ['xsux'] = 'Cuneiform transliteration', }, ['pinyin'] = { ['default'] = 'Pinyin transliteration', }, ['rr'] = { ['default'] = 'Revised Romanization of Korean transliteration', }, ['rtgs'] = { ['default'] = 'Royal Thai General System of Transcription', }, ['satts'] = { ['default'] = 'Standard Arabic Technical Transliteration System transliteration', }, ['scientific'] = { ['default'] = 'scientific transliteration', }, ['ukrainian'] = { ['default'] = 'Ukrainian National system of romanization', }, ['ungegn'] = { ['default'] = 'United Nations Group of Experts on Geographical Names transliteration', }, ['wadegile'] = { ['default'] = 'Wade–Giles transliteration', }, ['wehr'] = { ['default'] = 'Hans Wehr transliteration', }, }; return { this_wiki_lang_tag = this_wiki_lang_tag, this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction article_name = article_name, lang_name_table = lang_name_table_t, override = override, rtl_scripts = rtl_scripts, special_tags_table = special_tags_table, translit_title_table = translit_title_table, }; 44981b3b66900e816590946e3e049c421ebecc80 Module:Exponential search 828 476 1046 1045 2023-10-01T09:58:11Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Exponential_search]] Scribunto text/plain -- This module provides a generic exponential search algorithm. require[[strict]] local checkType = require('libraryUtil').checkType local floor = math.floor local function midPoint(lower, upper) return floor(lower + (upper - lower) / 2) end local function search(testFunc, i, lower, upper) if testFunc(i) then if i + 1 == upper then return i end lower = i if upper then i = midPoint(lower, upper) else i = i * 2 end return search(testFunc, i, lower, upper) else upper = i i = midPoint(lower, upper) return search(testFunc, i, lower, upper) end end return function (testFunc, init) checkType('Exponential search', 1, testFunc, 'function') checkType('Exponential search', 2, init, 'number', true) if init and (init < 1 or init ~= floor(init) or init == math.huge) then error(string.format( "invalid init value '%s' detected in argument #2 to " .. "'Exponential search' (init value must be a positive integer)", tostring(init) ), 2) end init = init or 2 if not testFunc(1) then return nil end return search(testFunc, init, 1, nil) end a9037be0c44536be79b2d7a26155bfb907368ae7 Module:Unicode data/scripts 828 477 1048 1047 2023-10-01T09:58:14Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Unicode_data/scripts]] Scribunto text/plain --[=[ -- Official Unicode script values for individual codepoints and ranges of -- codepoints. -- https://www.unicode.org/Public/UNIDATA/Scripts.txt provided -- the script names, and https://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt -- provided script codes corresponding to the names (see [[Script (Unicode)]]). --]=] local data = { singles = { [0x000AA] = "Latn", [0x000BA] = "Latn", [0x000D7] = "Zyyy", [0x000F7] = "Zyyy", [0x00374] = "Zyyy", [0x0037E] = "Zyyy", [0x0037F] = "Grek", [0x00384] = "Grek", [0x00385] = "Zyyy", [0x00386] = "Grek", [0x00387] = "Zyyy", [0x0038C] = "Grek", [0x00605] = "Zyyy", [0x0060C] = "Zyyy", [0x0061B] = "Zyyy", [0x0061F] = "Zyyy", [0x00640] = "Zyyy", [0x00670] = "Zinh", [0x006DD] = "Zyyy", [0x0085E] = "Mand", [0x008E2] = "Zyyy", [0x009B2] = "Beng", [0x009D7] = "Beng", [0x00A3C] = "Guru", [0x00A51] = "Guru", [0x00A5E] = "Guru", [0x00AD0] = "Gujr", [0x00B9C] = "Taml", [0x00BD0] = "Taml", [0x00BD7] = "Taml", [0x00C5D] = "Telu", [0x00DBD] = "Sinh", [0x00DCA] = "Sinh", [0x00DD6] = "Sinh", [0x00E3F] = "Zyyy", [0x00E84] = "Laoo", [0x00EA5] = "Laoo", [0x00EC6] = "Laoo", [0x010C7] = "Geor", [0x010CD] = "Geor", [0x010FB] = "Zyyy", [0x01258] = "Ethi", [0x012C0] = "Ethi", [0x0171F] = "Tglg", [0x01804] = "Mong", [0x01805] = "Zyyy", [0x01940] = "Limb", [0x01CD3] = "Zyyy", [0x01CE1] = "Zyyy", [0x01CED] = "Zinh", [0x01CF4] = "Zinh", [0x01CFA] = "Zyyy", [0x01D2B] = "Cyrl", [0x01D78] = "Cyrl", [0x01DBF] = "Grek", [0x01F59] = "Grek", [0x01F5B] = "Grek", [0x01F5D] = "Grek", [0x02071] = "Latn", [0x0207F] = "Latn", [0x02126] = "Grek", [0x02132] = "Latn", [0x0214E] = "Latn", [0x02D27] = "Geor", [0x02D2D] = "Geor", [0x02D7F] = "Tfng", [0x03005] = "Hani", [0x03006] = "Zyyy", [0x03007] = "Hani", [0x030A0] = "Zyyy", [0x031EF] = "Zyyy", [0x032FF] = "Zyyy", [0x0A7D3] = "Latn", [0x0A92E] = "Zyyy", [0x0A92F] = "Kali", [0x0A95F] = "Rjng", [0x0A9CF] = "Zyyy", [0x0AB5B] = "Zyyy", [0x0AB65] = "Grek", [0x0FB3E] = "Hebr", [0x0FDCF] = "Arab", [0x0FEFF] = "Zyyy", [0x0FF70] = "Zyyy", [0x101A0] = "Grek", [0x101FD] = "Zinh", [0x102E0] = "Zinh", [0x1039F] = "Ugar", [0x1056F] = "Aghb", [0x10808] = "Cprt", [0x1083C] = "Cprt", [0x1083F] = "Cprt", [0x1091F] = "Phnx", [0x1093F] = "Lydi", [0x1107F] = "Brah", [0x110CD] = "Kthi", [0x11288] = "Mult", [0x1133B] = "Zinh", [0x11350] = "Gran", [0x11357] = "Gran", [0x118FF] = "Wara", [0x11909] = "Diak", [0x11D3A] = "Gonm", [0x11FB0] = "Lisu", [0x11FFF] = "Taml", [0x16FE0] = "Tang", [0x16FE1] = "Nshu", [0x16FE4] = "Kits", [0x1B000] = "Kana", [0x1B132] = "Hira", [0x1B155] = "Kana", [0x1D4A2] = "Zyyy", [0x1D4BB] = "Zyyy", [0x1D546] = "Zyyy", [0x1E08F] = "Cyrl", [0x1E2FF] = "Wcho", [0x1EE24] = "Arab", [0x1EE27] = "Arab", [0x1EE39] = "Arab", [0x1EE3B] = "Arab", [0x1EE42] = "Arab", [0x1EE47] = "Arab", [0x1EE49] = "Arab", [0x1EE4B] = "Arab", [0x1EE54] = "Arab", [0x1EE57] = "Arab", [0x1EE59] = "Arab", [0x1EE5B] = "Arab", [0x1EE5D] = "Arab", [0x1EE5F] = "Arab", [0x1EE64] = "Arab", [0x1EE7E] = "Arab", [0x1F200] = "Hira", [0x1F7F0] = "Zyyy", [0xE0001] = "Zyyy", }, ranges = { { 0x00000, 0x00040, "Zyyy" }, { 0x00041, 0x0005A, "Latn" }, { 0x0005B, 0x00060, "Zyyy" }, { 0x00061, 0x0007A, "Latn" }, { 0x0007B, 0x000A9, "Zyyy" }, { 0x000AB, 0x000B9, "Zyyy" }, { 0x000BB, 0x000BF, "Zyyy" }, { 0x000C0, 0x000D6, "Latn" }, { 0x000D8, 0x000F6, "Latn" }, { 0x000F8, 0x002B8, "Latn" }, { 0x002B9, 0x002DF, "Zyyy" }, { 0x002E0, 0x002E4, "Latn" }, { 0x002E5, 0x002E9, "Zyyy" }, { 0x002EA, 0x002EB, "Bopo" }, { 0x002EC, 0x002FF, "Zyyy" }, { 0x00300, 0x0036F, "Zinh" }, { 0x00370, 0x00373, "Grek" }, { 0x00375, 0x00377, "Grek" }, { 0x0037A, 0x0037D, "Grek" }, { 0x00388, 0x0038A, "Grek" }, { 0x0038E, 0x003A1, "Grek" }, { 0x003A3, 0x003E1, "Grek" }, { 0x003E2, 0x003EF, "Copt" }, { 0x003F0, 0x003FF, "Grek" }, { 0x00400, 0x00484, "Cyrl" }, { 0x00485, 0x00486, "Zinh" }, { 0x00487, 0x0052F, "Cyrl" }, { 0x00531, 0x00556, "Armn" }, { 0x00559, 0x0058A, "Armn" }, { 0x0058D, 0x0058F, "Armn" }, { 0x00591, 0x005C7, "Hebr" }, { 0x005D0, 0x005EA, "Hebr" }, { 0x005EF, 0x005F4, "Hebr" }, { 0x00600, 0x00604, "Arab" }, { 0x00606, 0x0060B, "Arab" }, { 0x0060D, 0x0061A, "Arab" }, { 0x0061C, 0x0061E, "Arab" }, { 0x00620, 0x0063F, "Arab" }, { 0x00641, 0x0064A, "Arab" }, { 0x0064B, 0x00655, "Zinh" }, { 0x00656, 0x0066F, "Arab" }, { 0x00671, 0x006DC, "Arab" }, { 0x006DE, 0x006FF, "Arab" }, { 0x00700, 0x0070D, "Syrc" }, { 0x0070F, 0x0074A, "Syrc" }, { 0x0074D, 0x0074F, "Syrc" }, { 0x00750, 0x0077F, "Arab" }, { 0x00780, 0x007B1, "Thaa" }, { 0x007C0, 0x007FA, "Nkoo" }, { 0x007FD, 0x007FF, "Nkoo" }, { 0x00800, 0x0082D, "Samr" }, { 0x00830, 0x0083E, "Samr" }, { 0x00840, 0x0085B, "Mand" }, { 0x00860, 0x0086A, "Syrc" }, { 0x00870, 0x0088E, "Arab" }, { 0x00890, 0x00891, "Arab" }, { 0x00898, 0x008E1, "Arab" }, { 0x008E3, 0x008FF, "Arab" }, { 0x00900, 0x00950, "Deva" }, { 0x00951, 0x00954, "Zinh" }, { 0x00955, 0x00963, "Deva" }, { 0x00964, 0x00965, "Zyyy" }, { 0x00966, 0x0097F, "Deva" }, { 0x00980, 0x00983, "Beng" }, { 0x00985, 0x0098C, "Beng" }, { 0x0098F, 0x00990, "Beng" }, { 0x00993, 0x009A8, "Beng" }, { 0x009AA, 0x009B0, "Beng" }, { 0x009B6, 0x009B9, "Beng" }, { 0x009BC, 0x009C4, "Beng" }, { 0x009C7, 0x009C8, "Beng" }, { 0x009CB, 0x009CE, "Beng" }, { 0x009DC, 0x009DD, "Beng" }, { 0x009DF, 0x009E3, "Beng" }, { 0x009E6, 0x009FE, "Beng" }, { 0x00A01, 0x00A03, "Guru" }, { 0x00A05, 0x00A0A, "Guru" }, { 0x00A0F, 0x00A10, "Guru" }, { 0x00A13, 0x00A28, "Guru" }, { 0x00A2A, 0x00A30, "Guru" }, { 0x00A32, 0x00A33, "Guru" }, { 0x00A35, 0x00A36, "Guru" }, { 0x00A38, 0x00A39, "Guru" }, { 0x00A3E, 0x00A42, "Guru" }, { 0x00A47, 0x00A48, "Guru" }, { 0x00A4B, 0x00A4D, "Guru" }, { 0x00A59, 0x00A5C, "Guru" }, { 0x00A66, 0x00A76, "Guru" }, { 0x00A81, 0x00A83, "Gujr" }, { 0x00A85, 0x00A8D, "Gujr" }, { 0x00A8F, 0x00A91, "Gujr" }, { 0x00A93, 0x00AA8, "Gujr" }, { 0x00AAA, 0x00AB0, "Gujr" }, { 0x00AB2, 0x00AB3, "Gujr" }, { 0x00AB5, 0x00AB9, "Gujr" }, { 0x00ABC, 0x00AC5, "Gujr" }, { 0x00AC7, 0x00AC9, "Gujr" }, { 0x00ACB, 0x00ACD, "Gujr" }, { 0x00AE0, 0x00AE3, "Gujr" }, { 0x00AE6, 0x00AF1, "Gujr" }, { 0x00AF9, 0x00AFF, "Gujr" }, { 0x00B01, 0x00B03, "Orya" }, { 0x00B05, 0x00B0C, "Orya" }, { 0x00B0F, 0x00B10, "Orya" }, { 0x00B13, 0x00B28, "Orya" }, { 0x00B2A, 0x00B30, "Orya" }, { 0x00B32, 0x00B33, "Orya" }, { 0x00B35, 0x00B39, "Orya" }, { 0x00B3C, 0x00B44, "Orya" }, { 0x00B47, 0x00B48, "Orya" }, { 0x00B4B, 0x00B4D, "Orya" }, { 0x00B55, 0x00B57, "Orya" }, { 0x00B5C, 0x00B5D, "Orya" }, { 0x00B5F, 0x00B63, "Orya" }, { 0x00B66, 0x00B77, "Orya" }, { 0x00B82, 0x00B83, "Taml" }, { 0x00B85, 0x00B8A, "Taml" }, { 0x00B8E, 0x00B90, "Taml" }, { 0x00B92, 0x00B95, "Taml" }, { 0x00B99, 0x00B9A, "Taml" }, { 0x00B9E, 0x00B9F, "Taml" }, { 0x00BA3, 0x00BA4, "Taml" }, { 0x00BA8, 0x00BAA, "Taml" }, { 0x00BAE, 0x00BB9, "Taml" }, { 0x00BBE, 0x00BC2, "Taml" }, { 0x00BC6, 0x00BC8, "Taml" }, { 0x00BCA, 0x00BCD, "Taml" }, { 0x00BE6, 0x00BFA, "Taml" }, { 0x00C00, 0x00C0C, "Telu" }, { 0x00C0E, 0x00C10, "Telu" }, { 0x00C12, 0x00C28, "Telu" }, { 0x00C2A, 0x00C39, "Telu" }, { 0x00C3C, 0x00C44, "Telu" }, { 0x00C46, 0x00C48, "Telu" }, { 0x00C4A, 0x00C4D, "Telu" }, { 0x00C55, 0x00C56, "Telu" }, { 0x00C58, 0x00C5A, "Telu" }, { 0x00C60, 0x00C63, "Telu" }, { 0x00C66, 0x00C6F, "Telu" }, { 0x00C77, 0x00C7F, "Telu" }, { 0x00C80, 0x00C8C, "Knda" }, { 0x00C8E, 0x00C90, "Knda" }, { 0x00C92, 0x00CA8, "Knda" }, { 0x00CAA, 0x00CB3, "Knda" }, { 0x00CB5, 0x00CB9, "Knda" }, { 0x00CBC, 0x00CC4, "Knda" }, { 0x00CC6, 0x00CC8, "Knda" }, { 0x00CCA, 0x00CCD, "Knda" }, { 0x00CD5, 0x00CD6, "Knda" }, { 0x00CDD, 0x00CDE, "Knda" }, { 0x00CE0, 0x00CE3, "Knda" }, { 0x00CE6, 0x00CEF, "Knda" }, { 0x00CF1, 0x00CF3, "Knda" }, { 0x00D00, 0x00D0C, "Mlym" }, { 0x00D0E, 0x00D10, "Mlym" }, { 0x00D12, 0x00D44, "Mlym" }, { 0x00D46, 0x00D48, "Mlym" }, { 0x00D4A, 0x00D4F, "Mlym" }, { 0x00D54, 0x00D63, "Mlym" }, { 0x00D66, 0x00D7F, "Mlym" }, { 0x00D81, 0x00D83, "Sinh" }, { 0x00D85, 0x00D96, "Sinh" }, { 0x00D9A, 0x00DB1, "Sinh" }, { 0x00DB3, 0x00DBB, "Sinh" }, { 0x00DC0, 0x00DC6, "Sinh" }, { 0x00DCF, 0x00DD4, "Sinh" }, { 0x00DD8, 0x00DDF, "Sinh" }, { 0x00DE6, 0x00DEF, "Sinh" }, { 0x00DF2, 0x00DF4, "Sinh" }, { 0x00E01, 0x00E3A, "Thai" }, { 0x00E40, 0x00E5B, "Thai" }, { 0x00E81, 0x00E82, "Laoo" }, { 0x00E86, 0x00E8A, "Laoo" }, { 0x00E8C, 0x00EA3, "Laoo" }, { 0x00EA7, 0x00EBD, "Laoo" }, { 0x00EC0, 0x00EC4, "Laoo" }, { 0x00EC8, 0x00ECE, "Laoo" }, { 0x00ED0, 0x00ED9, "Laoo" }, { 0x00EDC, 0x00EDF, "Laoo" }, { 0x00F00, 0x00F47, "Tibt" }, { 0x00F49, 0x00F6C, "Tibt" }, { 0x00F71, 0x00F97, "Tibt" }, { 0x00F99, 0x00FBC, "Tibt" }, { 0x00FBE, 0x00FCC, "Tibt" }, { 0x00FCE, 0x00FD4, "Tibt" }, { 0x00FD5, 0x00FD8, "Zyyy" }, { 0x00FD9, 0x00FDA, "Tibt" }, { 0x01000, 0x0109F, "Mymr" }, { 0x010A0, 0x010C5, "Geor" }, { 0x010D0, 0x010FA, "Geor" }, { 0x010FC, 0x010FF, "Geor" }, { 0x01100, 0x011FF, "Hang" }, { 0x01200, 0x01248, "Ethi" }, { 0x0124A, 0x0124D, "Ethi" }, { 0x01250, 0x01256, "Ethi" }, { 0x0125A, 0x0125D, "Ethi" }, { 0x01260, 0x01288, "Ethi" }, { 0x0128A, 0x0128D, "Ethi" }, { 0x01290, 0x012B0, "Ethi" }, { 0x012B2, 0x012B5, "Ethi" }, { 0x012B8, 0x012BE, "Ethi" }, { 0x012C2, 0x012C5, "Ethi" }, { 0x012C8, 0x012D6, "Ethi" }, { 0x012D8, 0x01310, "Ethi" }, { 0x01312, 0x01315, "Ethi" }, { 0x01318, 0x0135A, "Ethi" }, { 0x0135D, 0x0137C, "Ethi" }, { 0x01380, 0x01399, "Ethi" }, { 0x013A0, 0x013F5, "Cher" }, { 0x013F8, 0x013FD, "Cher" }, { 0x01400, 0x0167F, "Cans" }, { 0x01680, 0x0169C, "Ogam" }, { 0x016A0, 0x016EA, "Runr" }, { 0x016EB, 0x016ED, "Zyyy" }, { 0x016EE, 0x016F8, "Runr" }, { 0x01700, 0x01715, "Tglg" }, { 0x01720, 0x01734, "Hano" }, { 0x01735, 0x01736, "Zyyy" }, { 0x01740, 0x01753, "Buhd" }, { 0x01760, 0x0176C, "Tagb" }, { 0x0176E, 0x01770, "Tagb" }, { 0x01772, 0x01773, "Tagb" }, { 0x01780, 0x017DD, "Khmr" }, { 0x017E0, 0x017E9, "Khmr" }, { 0x017F0, 0x017F9, "Khmr" }, { 0x01800, 0x01801, "Mong" }, { 0x01802, 0x01803, "Zyyy" }, { 0x01806, 0x01819, "Mong" }, { 0x01820, 0x01878, "Mong" }, { 0x01880, 0x018AA, "Mong" }, { 0x018B0, 0x018F5, "Cans" }, { 0x01900, 0x0191E, "Limb" }, { 0x01920, 0x0192B, "Limb" }, { 0x01930, 0x0193B, "Limb" }, { 0x01944, 0x0194F, "Limb" }, { 0x01950, 0x0196D, "Tale" }, { 0x01970, 0x01974, "Tale" }, { 0x01980, 0x019AB, "Talu" }, { 0x019B0, 0x019C9, "Talu" }, { 0x019D0, 0x019DA, "Talu" }, { 0x019DE, 0x019DF, "Talu" }, { 0x019E0, 0x019FF, "Khmr" }, { 0x01A00, 0x01A1B, "Bugi" }, { 0x01A1E, 0x01A1F, "Bugi" }, { 0x01A20, 0x01A5E, "Lana" }, { 0x01A60, 0x01A7C, "Lana" }, { 0x01A7F, 0x01A89, "Lana" }, { 0x01A90, 0x01A99, "Lana" }, { 0x01AA0, 0x01AAD, "Lana" }, { 0x01AB0, 0x01ACE, "Zinh" }, { 0x01B00, 0x01B4C, "Bali" }, { 0x01B50, 0x01B7E, "Bali" }, { 0x01B80, 0x01BBF, "Sund" }, { 0x01BC0, 0x01BF3, "Batk" }, { 0x01BFC, 0x01BFF, "Batk" }, { 0x01C00, 0x01C37, "Lepc" }, { 0x01C3B, 0x01C49, "Lepc" }, { 0x01C4D, 0x01C4F, "Lepc" }, { 0x01C50, 0x01C7F, "Olck" }, { 0x01C80, 0x01C88, "Cyrl" }, { 0x01C90, 0x01CBA, "Geor" }, { 0x01CBD, 0x01CBF, "Geor" }, { 0x01CC0, 0x01CC7, "Sund" }, { 0x01CD0, 0x01CD2, "Zinh" }, { 0x01CD4, 0x01CE0, "Zinh" }, { 0x01CE2, 0x01CE8, "Zinh" }, { 0x01CE9, 0x01CEC, "Zyyy" }, { 0x01CEE, 0x01CF3, "Zyyy" }, { 0x01CF5, 0x01CF7, "Zyyy" }, { 0x01CF8, 0x01CF9, "Zinh" }, { 0x01D00, 0x01D25, "Latn" }, { 0x01D26, 0x01D2A, "Grek" }, { 0x01D2C, 0x01D5C, "Latn" }, { 0x01D5D, 0x01D61, "Grek" }, { 0x01D62, 0x01D65, "Latn" }, { 0x01D66, 0x01D6A, "Grek" }, { 0x01D6B, 0x01D77, "Latn" }, { 0x01D79, 0x01DBE, "Latn" }, { 0x01DC0, 0x01DFF, "Zinh" }, { 0x01E00, 0x01EFF, "Latn" }, { 0x01F00, 0x01F15, "Grek" }, { 0x01F18, 0x01F1D, "Grek" }, { 0x01F20, 0x01F45, "Grek" }, { 0x01F48, 0x01F4D, "Grek" }, { 0x01F50, 0x01F57, "Grek" }, { 0x01F5F, 0x01F7D, "Grek" }, { 0x01F80, 0x01FB4, "Grek" }, { 0x01FB6, 0x01FC4, "Grek" }, { 0x01FC6, 0x01FD3, "Grek" }, { 0x01FD6, 0x01FDB, "Grek" }, { 0x01FDD, 0x01FEF, "Grek" }, { 0x01FF2, 0x01FF4, "Grek" }, { 0x01FF6, 0x01FFE, "Grek" }, { 0x02000, 0x0200B, "Zyyy" }, { 0x0200C, 0x0200D, "Zinh" }, { 0x0200E, 0x02064, "Zyyy" }, { 0x02066, 0x02070, "Zyyy" }, { 0x02074, 0x0207E, "Zyyy" }, { 0x02080, 0x0208E, "Zyyy" }, { 0x02090, 0x0209C, "Latn" }, { 0x020A0, 0x020C0, "Zyyy" }, { 0x020D0, 0x020F0, "Zinh" }, { 0x02100, 0x02125, "Zyyy" }, { 0x02127, 0x02129, "Zyyy" }, { 0x0212A, 0x0212B, "Latn" }, { 0x0212C, 0x02131, "Zyyy" }, { 0x02133, 0x0214D, "Zyyy" }, { 0x0214F, 0x0215F, "Zyyy" }, { 0x02160, 0x02188, "Latn" }, { 0x02189, 0x0218B, "Zyyy" }, { 0x02190, 0x02426, "Zyyy" }, { 0x02440, 0x0244A, "Zyyy" }, { 0x02460, 0x027FF, "Zyyy" }, { 0x02800, 0x028FF, "Brai" }, { 0x02900, 0x02B73, "Zyyy" }, { 0x02B76, 0x02B95, "Zyyy" }, { 0x02B97, 0x02BFF, "Zyyy" }, { 0x02C00, 0x02C5F, "Glag" }, { 0x02C60, 0x02C7F, "Latn" }, { 0x02C80, 0x02CF3, "Copt" }, { 0x02CF9, 0x02CFF, "Copt" }, { 0x02D00, 0x02D25, "Geor" }, { 0x02D30, 0x02D67, "Tfng" }, { 0x02D6F, 0x02D70, "Tfng" }, { 0x02D80, 0x02D96, "Ethi" }, { 0x02DA0, 0x02DA6, "Ethi" }, { 0x02DA8, 0x02DAE, "Ethi" }, { 0x02DB0, 0x02DB6, "Ethi" }, { 0x02DB8, 0x02DBE, "Ethi" }, { 0x02DC0, 0x02DC6, "Ethi" }, { 0x02DC8, 0x02DCE, "Ethi" }, { 0x02DD0, 0x02DD6, "Ethi" }, { 0x02DD8, 0x02DDE, "Ethi" }, { 0x02DE0, 0x02DFF, "Cyrl" }, { 0x02E00, 0x02E5D, "Zyyy" }, { 0x02E80, 0x02E99, "Hani" }, { 0x02E9B, 0x02EF3, "Hani" }, { 0x02F00, 0x02FD5, "Hani" }, { 0x02FF0, 0x03004, "Zyyy" }, { 0x03008, 0x03020, "Zyyy" }, { 0x03021, 0x03029, "Hani" }, { 0x0302A, 0x0302D, "Zinh" }, { 0x0302E, 0x0302F, "Hang" }, { 0x03030, 0x03037, "Zyyy" }, { 0x03038, 0x0303B, "Hani" }, { 0x0303C, 0x0303F, "Zyyy" }, { 0x03041, 0x03096, "Hira" }, { 0x03099, 0x0309A, "Zinh" }, { 0x0309B, 0x0309C, "Zyyy" }, { 0x0309D, 0x0309F, "Hira" }, { 0x030A1, 0x030FA, "Kana" }, { 0x030FB, 0x030FC, "Zyyy" }, { 0x030FD, 0x030FF, "Kana" }, { 0x03105, 0x0312F, "Bopo" }, { 0x03131, 0x0318E, "Hang" }, { 0x03190, 0x0319F, "Zyyy" }, { 0x031A0, 0x031BF, "Bopo" }, { 0x031C0, 0x031E3, "Zyyy" }, { 0x031F0, 0x031FF, "Kana" }, { 0x03200, 0x0321E, "Hang" }, { 0x03220, 0x0325F, "Zyyy" }, { 0x03260, 0x0327E, "Hang" }, { 0x0327F, 0x032CF, "Zyyy" }, { 0x032D0, 0x032FE, "Kana" }, { 0x03300, 0x03357, "Kana" }, { 0x03358, 0x033FF, "Zyyy" }, { 0x03400, 0x04DBF, "Hani" }, { 0x04DC0, 0x04DFF, "Zyyy" }, { 0x04E00, 0x09FFF, "Hani" }, { 0x0A000, 0x0A48C, "Yiii" }, { 0x0A490, 0x0A4C6, "Yiii" }, { 0x0A4D0, 0x0A4FF, "Lisu" }, { 0x0A500, 0x0A62B, "Vaii" }, { 0x0A640, 0x0A69F, "Cyrl" }, { 0x0A6A0, 0x0A6F7, "Bamu" }, { 0x0A700, 0x0A721, "Zyyy" }, { 0x0A722, 0x0A787, "Latn" }, { 0x0A788, 0x0A78A, "Zyyy" }, { 0x0A78B, 0x0A7CA, "Latn" }, { 0x0A7D0, 0x0A7D1, "Latn" }, { 0x0A7D5, 0x0A7D9, "Latn" }, { 0x0A7F2, 0x0A7FF, "Latn" }, { 0x0A800, 0x0A82C, "Sylo" }, { 0x0A830, 0x0A839, "Zyyy" }, { 0x0A840, 0x0A877, "Phag" }, { 0x0A880, 0x0A8C5, "Saur" }, { 0x0A8CE, 0x0A8D9, "Saur" }, { 0x0A8E0, 0x0A8FF, "Deva" }, { 0x0A900, 0x0A92D, "Kali" }, { 0x0A930, 0x0A953, "Rjng" }, { 0x0A960, 0x0A97C, "Hang" }, { 0x0A980, 0x0A9CD, "Java" }, { 0x0A9D0, 0x0A9D9, "Java" }, { 0x0A9DE, 0x0A9DF, "Java" }, { 0x0A9E0, 0x0A9FE, "Mymr" }, { 0x0AA00, 0x0AA36, "Cham" }, { 0x0AA40, 0x0AA4D, "Cham" }, { 0x0AA50, 0x0AA59, "Cham" }, { 0x0AA5C, 0x0AA5F, "Cham" }, { 0x0AA60, 0x0AA7F, "Mymr" }, { 0x0AA80, 0x0AAC2, "Tavt" }, { 0x0AADB, 0x0AADF, "Tavt" }, { 0x0AAE0, 0x0AAF6, "Mtei" }, { 0x0AB01, 0x0AB06, "Ethi" }, { 0x0AB09, 0x0AB0E, "Ethi" }, { 0x0AB11, 0x0AB16, "Ethi" }, { 0x0AB20, 0x0AB26, "Ethi" }, { 0x0AB28, 0x0AB2E, "Ethi" }, { 0x0AB30, 0x0AB5A, "Latn" }, { 0x0AB5C, 0x0AB64, "Latn" }, { 0x0AB66, 0x0AB69, "Latn" }, { 0x0AB6A, 0x0AB6B, "Zyyy" }, { 0x0AB70, 0x0ABBF, "Cher" }, { 0x0ABC0, 0x0ABED, "Mtei" }, { 0x0ABF0, 0x0ABF9, "Mtei" }, { 0x0AC00, 0x0D7A3, "Hang" }, { 0x0D7B0, 0x0D7C6, "Hang" }, { 0x0D7CB, 0x0D7FB, "Hang" }, { 0x0F900, 0x0FA6D, "Hani" }, { 0x0FA70, 0x0FAD9, "Hani" }, { 0x0FB00, 0x0FB06, "Latn" }, { 0x0FB13, 0x0FB17, "Armn" }, { 0x0FB1D, 0x0FB36, "Hebr" }, { 0x0FB38, 0x0FB3C, "Hebr" }, { 0x0FB40, 0x0FB41, "Hebr" }, { 0x0FB43, 0x0FB44, "Hebr" }, { 0x0FB46, 0x0FB4F, "Hebr" }, { 0x0FB50, 0x0FBC2, "Arab" }, { 0x0FBD3, 0x0FD3D, "Arab" }, { 0x0FD3E, 0x0FD3F, "Zyyy" }, { 0x0FD40, 0x0FD8F, "Arab" }, { 0x0FD92, 0x0FDC7, "Arab" }, { 0x0FDF0, 0x0FDFF, "Arab" }, { 0x0FE00, 0x0FE0F, "Zinh" }, { 0x0FE10, 0x0FE19, "Zyyy" }, { 0x0FE20, 0x0FE2D, "Zinh" }, { 0x0FE2E, 0x0FE2F, "Cyrl" }, { 0x0FE30, 0x0FE52, "Zyyy" }, { 0x0FE54, 0x0FE66, "Zyyy" }, { 0x0FE68, 0x0FE6B, "Zyyy" }, { 0x0FE70, 0x0FE74, "Arab" }, { 0x0FE76, 0x0FEFC, "Arab" }, { 0x0FF01, 0x0FF20, "Zyyy" }, { 0x0FF21, 0x0FF3A, "Latn" }, { 0x0FF3B, 0x0FF40, "Zyyy" }, { 0x0FF41, 0x0FF5A, "Latn" }, { 0x0FF5B, 0x0FF65, "Zyyy" }, { 0x0FF66, 0x0FF6F, "Kana" }, { 0x0FF71, 0x0FF9D, "Kana" }, { 0x0FF9E, 0x0FF9F, "Zyyy" }, { 0x0FFA0, 0x0FFBE, "Hang" }, { 0x0FFC2, 0x0FFC7, "Hang" }, { 0x0FFCA, 0x0FFCF, "Hang" }, { 0x0FFD2, 0x0FFD7, "Hang" }, { 0x0FFDA, 0x0FFDC, "Hang" }, { 0x0FFE0, 0x0FFE6, "Zyyy" }, { 0x0FFE8, 0x0FFEE, "Zyyy" }, { 0x0FFF9, 0x0FFFD, "Zyyy" }, { 0x10000, 0x1000B, "Linb" }, { 0x1000D, 0x10026, "Linb" }, { 0x10028, 0x1003A, "Linb" }, { 0x1003C, 0x1003D, "Linb" }, { 0x1003F, 0x1004D, "Linb" }, { 0x10050, 0x1005D, "Linb" }, { 0x10080, 0x100FA, "Linb" }, { 0x10100, 0x10102, "Zyyy" }, { 0x10107, 0x10133, "Zyyy" }, { 0x10137, 0x1013F, "Zyyy" }, { 0x10140, 0x1018E, "Grek" }, { 0x10190, 0x1019C, "Zyyy" }, { 0x101D0, 0x101FC, "Zyyy" }, { 0x10280, 0x1029C, "Lyci" }, { 0x102A0, 0x102D0, "Cari" }, { 0x102E1, 0x102FB, "Zyyy" }, { 0x10300, 0x10323, "Ital" }, { 0x1032D, 0x1032F, "Ital" }, { 0x10330, 0x1034A, "Goth" }, { 0x10350, 0x1037A, "Perm" }, { 0x10380, 0x1039D, "Ugar" }, { 0x103A0, 0x103C3, "Xpeo" }, { 0x103C8, 0x103D5, "Xpeo" }, { 0x10400, 0x1044F, "Dsrt" }, { 0x10450, 0x1047F, "Shaw" }, { 0x10480, 0x1049D, "Osma" }, { 0x104A0, 0x104A9, "Osma" }, { 0x104B0, 0x104D3, "Osge" }, { 0x104D8, 0x104FB, "Osge" }, { 0x10500, 0x10527, "Elba" }, { 0x10530, 0x10563, "Aghb" }, { 0x10570, 0x1057A, "Vith" }, { 0x1057C, 0x1058A, "Vith" }, { 0x1058C, 0x10592, "Vith" }, { 0x10594, 0x10595, "Vith" }, { 0x10597, 0x105A1, "Vith" }, { 0x105A3, 0x105B1, "Vith" }, { 0x105B3, 0x105B9, "Vith" }, { 0x105BB, 0x105BC, "Vith" }, { 0x10600, 0x10736, "Lina" }, { 0x10740, 0x10755, "Lina" }, { 0x10760, 0x10767, "Lina" }, { 0x10780, 0x10785, "Latn" }, { 0x10787, 0x107B0, "Latn" }, { 0x107B2, 0x107BA, "Latn" }, { 0x10800, 0x10805, "Cprt" }, { 0x1080A, 0x10835, "Cprt" }, { 0x10837, 0x10838, "Cprt" }, { 0x10840, 0x10855, "Armi" }, { 0x10857, 0x1085F, "Armi" }, { 0x10860, 0x1087F, "Palm" }, { 0x10880, 0x1089E, "Nbat" }, { 0x108A7, 0x108AF, "Nbat" }, { 0x108E0, 0x108F2, "Hatr" }, { 0x108F4, 0x108F5, "Hatr" }, { 0x108FB, 0x108FF, "Hatr" }, { 0x10900, 0x1091B, "Phnx" }, { 0x10920, 0x10939, "Lydi" }, { 0x10980, 0x1099F, "Mero" }, { 0x109A0, 0x109B7, "Merc" }, { 0x109BC, 0x109CF, "Merc" }, { 0x109D2, 0x109FF, "Merc" }, { 0x10A00, 0x10A03, "Khar" }, { 0x10A05, 0x10A06, "Khar" }, { 0x10A0C, 0x10A13, "Khar" }, { 0x10A15, 0x10A17, "Khar" }, { 0x10A19, 0x10A35, "Khar" }, { 0x10A38, 0x10A3A, "Khar" }, { 0x10A3F, 0x10A48, "Khar" }, { 0x10A50, 0x10A58, "Khar" }, { 0x10A60, 0x10A7F, "Sarb" }, { 0x10A80, 0x10A9F, "Narb" }, { 0x10AC0, 0x10AE6, "Mani" }, { 0x10AEB, 0x10AF6, "Mani" }, { 0x10B00, 0x10B35, "Avst" }, { 0x10B39, 0x10B3F, "Avst" }, { 0x10B40, 0x10B55, "Prti" }, { 0x10B58, 0x10B5F, "Prti" }, { 0x10B60, 0x10B72, "Phli" }, { 0x10B78, 0x10B7F, "Phli" }, { 0x10B80, 0x10B91, "Phlp" }, { 0x10B99, 0x10B9C, "Phlp" }, { 0x10BA9, 0x10BAF, "Phlp" }, { 0x10C00, 0x10C48, "Orkh" }, { 0x10C80, 0x10CB2, "Hung" }, { 0x10CC0, 0x10CF2, "Hung" }, { 0x10CFA, 0x10CFF, "Hung" }, { 0x10D00, 0x10D27, "Rohg" }, { 0x10D30, 0x10D39, "Rohg" }, { 0x10E60, 0x10E7E, "Arab" }, { 0x10E80, 0x10EA9, "Yezi" }, { 0x10EAB, 0x10EAD, "Yezi" }, { 0x10EB0, 0x10EB1, "Yezi" }, { 0x10EFD, 0x10EFF, "Arab" }, { 0x10F00, 0x10F27, "Sogo" }, { 0x10F30, 0x10F59, "Sogd" }, { 0x10F70, 0x10F89, "Ougr" }, { 0x10FB0, 0x10FCB, "Chrs" }, { 0x10FE0, 0x10FF6, "Elym" }, { 0x11000, 0x1104D, "Brah" }, { 0x11052, 0x11075, "Brah" }, { 0x11080, 0x110C2, "Kthi" }, { 0x110D0, 0x110E8, "Sora" }, { 0x110F0, 0x110F9, "Sora" }, { 0x11100, 0x11134, "Cakm" }, { 0x11136, 0x11147, "Cakm" }, { 0x11150, 0x11176, "Mahj" }, { 0x11180, 0x111DF, "Shrd" }, { 0x111E1, 0x111F4, "Sinh" }, { 0x11200, 0x11211, "Khoj" }, { 0x11213, 0x11241, "Khoj" }, { 0x11280, 0x11286, "Mult" }, { 0x1128A, 0x1128D, "Mult" }, { 0x1128F, 0x1129D, "Mult" }, { 0x1129F, 0x112A9, "Mult" }, { 0x112B0, 0x112EA, "Sind" }, { 0x112F0, 0x112F9, "Sind" }, { 0x11300, 0x11303, "Gran" }, { 0x11305, 0x1130C, "Gran" }, { 0x1130F, 0x11310, "Gran" }, { 0x11313, 0x11328, "Gran" }, { 0x1132A, 0x11330, "Gran" }, { 0x11332, 0x11333, "Gran" }, { 0x11335, 0x11339, "Gran" }, { 0x1133C, 0x11344, "Gran" }, { 0x11347, 0x11348, "Gran" }, { 0x1134B, 0x1134D, "Gran" }, { 0x1135D, 0x11363, "Gran" }, { 0x11366, 0x1136C, "Gran" }, { 0x11370, 0x11374, "Gran" }, { 0x11400, 0x1145B, "Newa" }, { 0x1145D, 0x11461, "Newa" }, { 0x11480, 0x114C7, "Tirh" }, { 0x114D0, 0x114D9, "Tirh" }, { 0x11580, 0x115B5, "Sidd" }, { 0x115B8, 0x115DD, "Sidd" }, { 0x11600, 0x11644, "Modi" }, { 0x11650, 0x11659, "Modi" }, { 0x11660, 0x1166C, "Mong" }, { 0x11680, 0x116B9, "Takr" }, { 0x116C0, 0x116C9, "Takr" }, { 0x11700, 0x1171A, "Ahom" }, { 0x1171D, 0x1172B, "Ahom" }, { 0x11730, 0x11746, "Ahom" }, { 0x11800, 0x1183B, "Dogr" }, { 0x118A0, 0x118F2, "Wara" }, { 0x11900, 0x11906, "Diak" }, { 0x1190C, 0x11913, "Diak" }, { 0x11915, 0x11916, "Diak" }, { 0x11918, 0x11935, "Diak" }, { 0x11937, 0x11938, "Diak" }, { 0x1193B, 0x11946, "Diak" }, { 0x11950, 0x11959, "Diak" }, { 0x119A0, 0x119A7, "Nand" }, { 0x119AA, 0x119D7, "Nand" }, { 0x119DA, 0x119E4, "Nand" }, { 0x11A00, 0x11A47, "Zanb" }, { 0x11A50, 0x11AA2, "Soyo" }, { 0x11AB0, 0x11ABF, "Cans" }, { 0x11AC0, 0x11AF8, "Pauc" }, { 0x11B00, 0x11B09, "Deva" }, { 0x11C00, 0x11C08, "Bhks" }, { 0x11C0A, 0x11C36, "Bhks" }, { 0x11C38, 0x11C45, "Bhks" }, { 0x11C50, 0x11C6C, "Bhks" }, { 0x11C70, 0x11C8F, "Marc" }, { 0x11C92, 0x11CA7, "Marc" }, { 0x11CA9, 0x11CB6, "Marc" }, { 0x11D00, 0x11D06, "Gonm" }, { 0x11D08, 0x11D09, "Gonm" }, { 0x11D0B, 0x11D36, "Gonm" }, { 0x11D3C, 0x11D3D, "Gonm" }, { 0x11D3F, 0x11D47, "Gonm" }, { 0x11D50, 0x11D59, "Gonm" }, { 0x11D60, 0x11D65, "Gong" }, { 0x11D67, 0x11D68, "Gong" }, { 0x11D6A, 0x11D8E, "Gong" }, { 0x11D90, 0x11D91, "Gong" }, { 0x11D93, 0x11D98, "Gong" }, { 0x11DA0, 0x11DA9, "Gong" }, { 0x11EE0, 0x11EF8, "Maka" }, { 0x11F00, 0x11F10, "Kawi" }, { 0x11F12, 0x11F3A, "Kawi" }, { 0x11F3E, 0x11F59, "Kawi" }, { 0x11FC0, 0x11FF1, "Taml" }, { 0x12000, 0x12399, "Xsux" }, { 0x12400, 0x1246E, "Xsux" }, { 0x12470, 0x12474, "Xsux" }, { 0x12480, 0x12543, "Xsux" }, { 0x12F90, 0x12FF2, "Cpmn" }, { 0x13000, 0x13455, "Egyp" }, { 0x14400, 0x14646, "Hluw" }, { 0x16800, 0x16A38, "Bamu" }, { 0x16A40, 0x16A5E, "Mroo" }, { 0x16A60, 0x16A69, "Mroo" }, { 0x16A6E, 0x16A6F, "Mroo" }, { 0x16A70, 0x16ABE, "Tnsa" }, { 0x16AC0, 0x16AC9, "Tnsa" }, { 0x16AD0, 0x16AED, "Bass" }, { 0x16AF0, 0x16AF5, "Bass" }, { 0x16B00, 0x16B45, "Hmng" }, { 0x16B50, 0x16B59, "Hmng" }, { 0x16B5B, 0x16B61, "Hmng" }, { 0x16B63, 0x16B77, "Hmng" }, { 0x16B7D, 0x16B8F, "Hmng" }, { 0x16E40, 0x16E9A, "Medf" }, { 0x16F00, 0x16F4A, "Plrd" }, { 0x16F4F, 0x16F87, "Plrd" }, { 0x16F8F, 0x16F9F, "Plrd" }, { 0x16FE2, 0x16FE3, "Hani" }, { 0x16FF0, 0x16FF1, "Hani" }, { 0x17000, 0x187F7, "Tang" }, { 0x18800, 0x18AFF, "Tang" }, { 0x18B00, 0x18CD5, "Kits" }, { 0x18D00, 0x18D08, "Tang" }, { 0x1AFF0, 0x1AFF3, "Kana" }, { 0x1AFF5, 0x1AFFB, "Kana" }, { 0x1AFFD, 0x1AFFE, "Kana" }, { 0x1B001, 0x1B11F, "Hira" }, { 0x1B120, 0x1B122, "Kana" }, { 0x1B150, 0x1B152, "Hira" }, { 0x1B164, 0x1B167, "Kana" }, { 0x1B170, 0x1B2FB, "Nshu" }, { 0x1BC00, 0x1BC6A, "Dupl" }, { 0x1BC70, 0x1BC7C, "Dupl" }, { 0x1BC80, 0x1BC88, "Dupl" }, { 0x1BC90, 0x1BC99, "Dupl" }, { 0x1BC9C, 0x1BC9F, "Dupl" }, { 0x1BCA0, 0x1BCA3, "Zyyy" }, { 0x1CF00, 0x1CF2D, "Zinh" }, { 0x1CF30, 0x1CF46, "Zinh" }, { 0x1CF50, 0x1CFC3, "Zyyy" }, { 0x1D000, 0x1D0F5, "Zyyy" }, { 0x1D100, 0x1D126, "Zyyy" }, { 0x1D129, 0x1D166, "Zyyy" }, { 0x1D167, 0x1D169, "Zinh" }, { 0x1D16A, 0x1D17A, "Zyyy" }, { 0x1D17B, 0x1D182, "Zinh" }, { 0x1D183, 0x1D184, "Zyyy" }, { 0x1D185, 0x1D18B, "Zinh" }, { 0x1D18C, 0x1D1A9, "Zyyy" }, { 0x1D1AA, 0x1D1AD, "Zinh" }, { 0x1D1AE, 0x1D1EA, "Zyyy" }, { 0x1D200, 0x1D245, "Grek" }, { 0x1D2C0, 0x1D2D3, "Zyyy" }, { 0x1D2E0, 0x1D2F3, "Zyyy" }, { 0x1D300, 0x1D356, "Zyyy" }, { 0x1D360, 0x1D378, "Zyyy" }, { 0x1D400, 0x1D454, "Zyyy" }, { 0x1D456, 0x1D49C, "Zyyy" }, { 0x1D49E, 0x1D49F, "Zyyy" }, { 0x1D4A5, 0x1D4A6, "Zyyy" }, { 0x1D4A9, 0x1D4AC, "Zyyy" }, { 0x1D4AE, 0x1D4B9, "Zyyy" }, { 0x1D4BD, 0x1D4C3, "Zyyy" }, { 0x1D4C5, 0x1D505, "Zyyy" }, { 0x1D507, 0x1D50A, "Zyyy" }, { 0x1D50D, 0x1D514, "Zyyy" }, { 0x1D516, 0x1D51C, "Zyyy" }, { 0x1D51E, 0x1D539, "Zyyy" }, { 0x1D53B, 0x1D53E, "Zyyy" }, { 0x1D540, 0x1D544, "Zyyy" }, { 0x1D54A, 0x1D550, "Zyyy" }, { 0x1D552, 0x1D6A5, "Zyyy" }, { 0x1D6A8, 0x1D7CB, "Zyyy" }, { 0x1D7CE, 0x1D7FF, "Zyyy" }, { 0x1D800, 0x1DA8B, "Sgnw" }, { 0x1DA9B, 0x1DA9F, "Sgnw" }, { 0x1DAA1, 0x1DAAF, "Sgnw" }, { 0x1DF00, 0x1DF1E, "Latn" }, { 0x1DF25, 0x1DF2A, "Latn" }, { 0x1E000, 0x1E006, "Glag" }, { 0x1E008, 0x1E018, "Glag" }, { 0x1E01B, 0x1E021, "Glag" }, { 0x1E023, 0x1E024, "Glag" }, { 0x1E026, 0x1E02A, "Glag" }, { 0x1E030, 0x1E06D, "Cyrl" }, { 0x1E100, 0x1E12C, "Hmnp" }, { 0x1E130, 0x1E13D, "Hmnp" }, { 0x1E140, 0x1E149, "Hmnp" }, { 0x1E14E, 0x1E14F, "Hmnp" }, { 0x1E290, 0x1E2AE, "Toto" }, { 0x1E2C0, 0x1E2F9, "Wcho" }, { 0x1E4D0, 0x1E4F9, "Nagm" }, { 0x1E7E0, 0x1E7E6, "Ethi" }, { 0x1E7E8, 0x1E7EB, "Ethi" }, { 0x1E7ED, 0x1E7EE, "Ethi" }, { 0x1E7F0, 0x1E7FE, "Ethi" }, { 0x1E800, 0x1E8C4, "Mend" }, { 0x1E8C7, 0x1E8D6, "Mend" }, { 0x1E900, 0x1E94B, "Adlm" }, { 0x1E950, 0x1E959, "Adlm" }, { 0x1E95E, 0x1E95F, "Adlm" }, { 0x1EC71, 0x1ECB4, "Zyyy" }, { 0x1ED01, 0x1ED3D, "Zyyy" }, { 0x1EE00, 0x1EE03, "Arab" }, { 0x1EE05, 0x1EE1F, "Arab" }, { 0x1EE21, 0x1EE22, "Arab" }, { 0x1EE29, 0x1EE32, "Arab" }, { 0x1EE34, 0x1EE37, "Arab" }, { 0x1EE4D, 0x1EE4F, "Arab" }, { 0x1EE51, 0x1EE52, "Arab" }, { 0x1EE61, 0x1EE62, "Arab" }, { 0x1EE67, 0x1EE6A, "Arab" }, { 0x1EE6C, 0x1EE72, "Arab" }, { 0x1EE74, 0x1EE77, "Arab" }, { 0x1EE79, 0x1EE7C, "Arab" }, { 0x1EE80, 0x1EE89, "Arab" }, { 0x1EE8B, 0x1EE9B, "Arab" }, { 0x1EEA1, 0x1EEA3, "Arab" }, { 0x1EEA5, 0x1EEA9, "Arab" }, { 0x1EEAB, 0x1EEBB, "Arab" }, { 0x1EEF0, 0x1EEF1, "Arab" }, { 0x1F000, 0x1F02B, "Zyyy" }, { 0x1F030, 0x1F093, "Zyyy" }, { 0x1F0A0, 0x1F0AE, "Zyyy" }, { 0x1F0B1, 0x1F0BF, "Zyyy" }, { 0x1F0C1, 0x1F0CF, "Zyyy" }, { 0x1F0D1, 0x1F0F5, "Zyyy" }, { 0x1F100, 0x1F1AD, "Zyyy" }, { 0x1F1E6, 0x1F1FF, "Zyyy" }, { 0x1F201, 0x1F202, "Zyyy" }, { 0x1F210, 0x1F23B, "Zyyy" }, { 0x1F240, 0x1F248, "Zyyy" }, { 0x1F250, 0x1F251, "Zyyy" }, { 0x1F260, 0x1F265, "Zyyy" }, { 0x1F300, 0x1F6D7, "Zyyy" }, { 0x1F6DC, 0x1F6EC, "Zyyy" }, { 0x1F6F0, 0x1F6FC, "Zyyy" }, { 0x1F700, 0x1F776, "Zyyy" }, { 0x1F77B, 0x1F7D9, "Zyyy" }, { 0x1F7E0, 0x1F7EB, "Zyyy" }, { 0x1F800, 0x1F80B, "Zyyy" }, { 0x1F810, 0x1F847, "Zyyy" }, { 0x1F850, 0x1F859, "Zyyy" }, { 0x1F860, 0x1F887, "Zyyy" }, { 0x1F890, 0x1F8AD, "Zyyy" }, { 0x1F8B0, 0x1F8B1, "Zyyy" }, { 0x1F900, 0x1FA53, "Zyyy" }, { 0x1FA60, 0x1FA6D, "Zyyy" }, { 0x1FA70, 0x1FA7C, "Zyyy" }, { 0x1FA80, 0x1FA88, "Zyyy" }, { 0x1FA90, 0x1FABD, "Zyyy" }, { 0x1FABF, 0x1FAC5, "Zyyy" }, { 0x1FACE, 0x1FADB, "Zyyy" }, { 0x1FAE0, 0x1FAE8, "Zyyy" }, { 0x1FAF0, 0x1FAF8, "Zyyy" }, { 0x1FB00, 0x1FB92, "Zyyy" }, { 0x1FB94, 0x1FBCA, "Zyyy" }, { 0x1FBF0, 0x1FBF9, "Zyyy" }, { 0x20000, 0x2A6DF, "Hani" }, { 0x2A700, 0x2B739, "Hani" }, { 0x2B740, 0x2B81D, "Hani" }, { 0x2B820, 0x2CEA1, "Hani" }, { 0x2CEB0, 0x2EBE0, "Hani" }, { 0x2EBF0, 0x2EE5D, "Hani" }, { 0x2F800, 0x2FA1D, "Hani" }, { 0x30000, 0x3134A, "Hani" }, { 0x31350, 0x323AF, "Hani" }, { 0xE0020, 0xE007F, "Zyyy" }, { 0xE0100, 0xE01EF, "Zinh" }, }, -- Scripts.txt gives full names; here we consider them aliases to save space. aliases = { Adlm = "Adlam", Aghb = "Caucasian Albanian", Ahom = "Ahom", Arab = "Arabic", Armi = "Imperial Aramaic", Armn = "Armenian", Avst = "Avestan", Bali = "Balinese", Bamu = "Bamum", Bass = "Bassa Vah", Batk = "Batak", Beng = "Bengali", Bhks = "Bhaiksuki", Bopo = "Bopomofo", Brah = "Brahmi", Brai = "Braille", Bugi = "Buginese", Buhd = "Buhid", Cakm = "Chakma", Cans = "Canadian Aboriginal", Cari = "Carian", Cham = "Cham", Cher = "Cherokee", Chrs = "Chorasmian", Copt = "Coptic", Cpmn = "Cypro Minoan", Cprt = "Cypriot", Cyrl = "Cyrillic", Deva = "Devanagari", Diak = "Dives Akuru", Dogr = "Dogra", Dsrt = "Deseret", Dupl = "Duployan", Egyp = "Egyptian Hieroglyphs", Elba = "Elbasan", Elym = "Elymaic", Ethi = "Ethiopic", Geor = "Georgian", Glag = "Glagolitic", Gong = "Gunjala Gondi", Gonm = "Masaram Gondi", Goth = "Gothic", Gran = "Grantha", Grek = "Greek", Gujr = "Gujarati", Guru = "Gurmukhi", Hang = "Hangul", Hani = "Han", Hano = "Hanunoo", Hatr = "Hatran", Hebr = "Hebrew", Hira = "Hiragana", Hluw = "Anatolian Hieroglyphs", Hmng = "Pahawh Hmong", Hmnp = "Nyiakeng Puachue Hmong", Hrkt = "Katakana Or Hiragana", Hung = "Old Hungarian", Ital = "Old Italic", Java = "Javanese", Kali = "Kayah Li", Kana = "Katakana", Kawi = "Kawi", Khar = "Kharoshthi", Khmr = "Khmer", Khoj = "Khojki", Kits = "Khitan Small Script", Knda = "Kannada", Kthi = "Kaithi", Lana = "Tai Tham", Laoo = "Lao", Latn = "Latin", Lepc = "Lepcha", Limb = "Limbu", Lina = "Linear A", Linb = "Linear B", Lisu = "Lisu", Lyci = "Lycian", Lydi = "Lydian", Mahj = "Mahajani", Maka = "Makasar", Mand = "Mandaic", Mani = "Manichaean", Marc = "Marchen", Medf = "Medefaidrin", Mend = "Mende Kikakui", Merc = "Meroitic Cursive", Mero = "Meroitic Hieroglyphs", Mlym = "Malayalam", Modi = "Modi", Mong = "Mongolian", Mroo = "Mro", Mtei = "Meetei Mayek", Mult = "Multani", Mymr = "Myanmar", Nagm = "Nag Mundari", Nand = "Nandinagari", Narb = "Old North Arabian", Nbat = "Nabataean", Newa = "Newa", Nkoo = "NKo", Nshu = "Nushu", Ogam = "Ogham", Olck = "Ol Chiki", Orkh = "Old Turkic", Orya = "Oriya", Osge = "Osage", Osma = "Osmanya", Ougr = "Old Uyghur", Palm = "Palmyrene", Pauc = "Pau Cin Hau", Perm = "Old Permic", Phag = "Phags Pa", Phli = "Inscriptional Pahlavi", Phlp = "Psalter Pahlavi", Phnx = "Phoenician", Plrd = "Miao", Prti = "Inscriptional Parthian", Rjng = "Rejang", Rohg = "Hanifi Rohingya", Runr = "Runic", Samr = "Samaritan", Sarb = "Old South Arabian", Saur = "Saurashtra", Sgnw = "SignWriting", Shaw = "Shavian", Shrd = "Sharada", Sidd = "Siddham", Sind = "Khudawadi", Sinh = "Sinhala", Sogd = "Sogdian", Sogo = "Old Sogdian", Sora = "Sora Sompeng", Soyo = "Soyombo", Sund = "Sundanese", Sylo = "Syloti Nagri", Syrc = "Syriac", Tagb = "Tagbanwa", Takr = "Takri", Tale = "Tai Le", Talu = "New Tai Lue", Taml = "Tamil", Tang = "Tangut", Tavt = "Tai Viet", Telu = "Telugu", Tfng = "Tifinagh", Tglg = "Tagalog", Thaa = "Thaana", Thai = "Thai", Tibt = "Tibetan", Tirh = "Tirhuta", Tnsa = "Tangsa", Toto = "Toto", Ugar = "Ugaritic", Vaii = "Vai", Vith = "Vithkuqi", Wara = "Warang Citi", Wcho = "Wancho", Xpeo = "Old Persian", Xsux = "Cuneiform", Yezi = "Yezidi", Yiii = "Yi", Zanb = "Zanabazar Square", Zinh = "Inherited", Zyyy = "Common", Zzzz = "Unknown", }, } -- Required for binary search function in [[Module:Language/scripts]]. -- Cannot get length of module loaded with mw.loadData. data.ranges.length = #data.ranges data.rtl = {} for _, script in ipairs(mw.loadData "Module:Lang/data".rtl_scripts) do -- [[Module:Lang/data]] has script codes in lowercase; -- this module has script codes with the first letter capitalized. data.rtl[script:gsub("^%a", string.upper)] = true end return data 6afbaa9e21efd3898f0ff056b5456c0cd5813400 Module:Language/data 828 447 1050 973 2023-10-01T09:58:15Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/data]] Scribunto text/plain local U = mw.ustring.char -- Diacritics, from the [[Combining Diacritical Marks]] block. local grave = U(0x300) local acute = U(0x301) local circumflex = U(0x302) local tilde = U(0x303) local macron = U(0x304) local breve = U(0x306) local dot = U(0x307) local diaeresis = U(0x308) local double_acute = U(0x30B) local caron = U(0x30C) local double_grave = U(0x30F) local invbreve = U(0x311) local dot_below = U(0x323) local undertie = U(0x35C) --[[ This is a table of Wiktionary language codes with data belonging to them. Name is the "canonical name" used on Wiktionary. Article is the Wikipedia article. Script is the ISO 15924 code. ]] local data = { ["languages"] = { ["aaq"] = { ["name"] = "Penobscot", }, ["ab"] = { ["name"] = "Abkhaz", }, ["abe"] = { ["name"] = "Abenaki", }, ["ang"] = { ["name"] = "Old English", ["article"] = {"Old English"}, -- Remove macrons, acutes, and overdots ["replacements"] = { decompose = true, from = { "[" .. macron .. acute .. dot .. "]" }, }, }, ["ar"] = { ["name"] = "Arabic", ["article"] = "Arabic language", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["ara"] = { ["name"] = "Arabic", ["article"] = "Arabic language", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["arb"] = { ["name"] = "Modern Standard Arabic", ["article"] = "Modern Standard Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["apc"] = { ["name"] = "North Levantine Arabic", ["article"] = "North Levantine Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["ajp"] = { ["name"] = "South Levantine Arabic", ["article"] = "South Levantine Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["arz"] = { ["name"] = "Egyptian Arabic", ["article"] = "Egyptian Arabic", ["direction"] = "rtl", -- Should be in the script data module. ["replacements"] = { -- ālif with wasla is replaced by ālif; [U(0x0671)] = U(0x0627), -- taṭwīl, fatḥatan, ḍammatan, kasratan, -- fatḥa, ḍamma, kasra, -- shadda, sukūn, and superscript (dagger) ālif are removed. ["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D) ..U(0x064E)..U(0x064F)..U(0x0650) ..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "", }, }, ["av"] = { ["name"] = "Avar" }, ["be"] = { ["article"] = "Belarusian language", ["replacements"] = { [acute] = "", }, }, ["bn"] = { ["name"] = "Bengali", ["article"] = "Bengali language", }, ["bua"] = { ["name"] = "Buryat", }, ["cel-pro"] = { -- Incorrect tag ["name"] = "Proto-Celtic", ["Wikipedia_code"] = "cel-x-proto", }, ["cel-x-proto"] = { ["name"] = "Proto-Celtic", }, ["cel-bry-pro"] = { -- Incorrect tag ["name"] = "Proto-Brythonic", ["article"] = "Common Brittonic", ["type"] = "reconstructed", }, ["cu"] = { ["name"] = "Old Church Slavonic", ["article"] = "Old Church Slavonic", }, ["de"] = { ["name"] = "German", ["article"] = "German language", }, ["en"] = { ["name"] = "English", ["article"] = "English language", }, ["es"] = { ["name"] = "Spanish", ["article"] = "Spanish language", }, ["egy"] = { ["name"] = "Egyptian", }, ["evn"] = { ["name"] = "Evenki", ["article"] = "Evenki language", }, ["fr"] = { ["name"] = "French", ["article"] = "French language", }, ["frm"] = { ["name"] = "Middle French", ["article"] = "Middle French", }, ["frp"] = { ["name"] = "Franco-Provençal", }, ["ff"] = { ["name"] = "Fula", }, ["gem-pro"] = { -- Incorrect tag ["name"] = "Proto-Germanic", ["article"] = "Proto-Germanic language", ["type"] = "reconstructed", ["replacements"] = {}, ["Wikipedia_code"] = "gem-x-proto", }, ["gem-x-proto"] = { ["name"] = "Proto-Germanic", ["article"] = "Proto-Germanic language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["gml"] = { ["name"] = "Middle Low German", }, ["gmw-ecg"] = { ["name"] = "East Central German", }, ["gmw-x-proto"] = { ["name"] = "Proto-West Germanic", ["article"] = "Proto-West Germanic language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["gmq-x-gut"] = { ["name"] = "Gutnish", ["article"] = "Gutnish", }, ["goh"] = { ["replacements"] = { decompose = true, from = { "[" .. macron .. circumflex .. diaeresis .. "]", }, }, }, ["got"] = { ["name"] = "Gothic", ["article"] = "Gothic language", ["replacements"] = { -- Latin to Gothic since people will not want to have to copy -- and paste Gothic letters in ["[AÁaáĀā]"] = "𐌰", ["[Bb]"] = "𐌱", ["[Gg]"] = "𐌲", ["[Dd]"] = "𐌳", ["[EeĒē]"] = "𐌴", ["[Qq]"] = "𐌵", ["[Zz]"] = "𐌶", ["[Hh]"] = "𐌷", ["[Þþ]"] = "𐌸", ["[IiÍí]"] = "𐌹", ["[Kk]"] = "𐌺", ["[Ll]"] = "𐌻", ["[Mm]"] = "𐌼", ["[Nn]"] = "𐌽", ["[Jj]"] = "𐌾", ["[UuÚúŪū]"] = "𐌿", ["[Pp]"] = "𐍀", ["[Rr]"] = "𐍂", ["[Ss]"] = "𐍃", ["[Tt]"] = "𐍄", ["[WwYy]"] = "𐍅", ["[Ff]"] = "𐍆", ["[Xx]"] = "𐍇", ["[Ƕƕ]"] = "𐍈", -- Not sure if "hw" and "hv" can safely be converted ["[OoŌō]"] = "𐍉", }, }, ["gsw"] = { ["name"] = "Alemannic German", }, ["grc"] = { ["name"] = "Ancient Greek", ["article"] = "Ancient Greek", ["replacements"] = { decompose = true, from = { -- Replace variant letterforms with standard ones. "ϐ", "ϵ", "ϑ", "ϰ", "ϱ", "ϲ", "ϕ", -- Remove macrons and breves. "[" .. macron .. breve .. undertie .. "]" }, to = { "β", "ε", "θ", "κ", "ρ", "σ", "φ", } }, }, ["grk-pro"] = { -- Incorrect tag ["name"] = "Proto-Hellenic", ["Wikipedia_name"] = "Proto-Greek", ["article"] = "Proto-Greek language", ["type"] = "reconstructed", ["replacements"] = {}, ["Wikipedia_code"] = "gem-x-proto", }, ["grk-x-proto"] = { ["name"] = "Proto-Hellenic", ["Wikipedia_name"] = "Proto-Greek", ["article"] = "Proto-Greek language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["grt"] = { ["name"] = "Garo", }, ["ha"] = { ["name"] = "Hausa", -- remove tilde, grave, acute, macron, circumflex ["replacements"] = { decompose = true, from = { "[" .. grave .. circumflex .. macron .. acute .. tilde .. "]" }, }, }, ["hi"] = { ["name"] = "Hindi", ["article"] = "Hindi", }, ["ine-bsl-pro"] = { ["name"] = "Proto-Balto-Slavic", ["article"] = "Proto-Balto-Slavic language", ["type"] = "reconstructed", }, ["ine-pro"] = { -- Incorrect tag ["name"] = "Proto-Indo-European", ["article"] = "Proto-Indo-European language", ["type"] = "reconstructed", ["replacements"] = {}, ["Wikipedia_code"] = "ine-x-proto", }, ["ine-x-proto"] = { ["name"] = "Proto-Indo-European", ["article"] = "Proto-Indo-European language", ["type"] = "reconstructed", ["replacements"] = {}, }, ["ja"] = { ["name"] = "Japanese", ["article"] = "Japanese language", }, ["jbo"] = { -- Lojban ["type"] = "appendix", }, ["ksk"] = { ["name"] = "Kansa", ["article"] = "Kansa language", }, ["la"] = { ["name"] = "Latin", ["article"] = "Latin", ["replacements"] = { decompose = true, from = { "[" .. macron .. breve .. diaeresis .. "]" }, }, }, ["lt"] = { ["name"] = "Lithuanian", -- remove acute, tilde, grave ["replacements"] = { decompose = true, from = { "[" .. acute .. tilde .. grave .. "]" }, }, }, ["moe"] = { ["name"] = "Cree", }, ["mul"] = { ["name"] = "Translingual", ["article"] = "", }, ["nci"] = { ["name"] = "Classical Nahuatl", ["article"] = "Classical Nahuatl", -- Remove macrons, acutes, circumflexes and graves ["replacements"] = { decompose = true, -- Remove macrons, acutes, circumflexes, graves, and saltillo; -- see [[Saltillo (linguistics)]]. from = { "[" .. grave .. acute .. macron .. circumflex .. "Ꞌꞌʻʼ'ʔ]" }, }, }, ["nds-de"] = { ["name"] = "German Low German", }, ["odt"] = { ["name"] = "Old Dutch", }, ["oge"] = { ["name"] = "Old Georgian", }, ["oj"] = { ["name"] = "Ojibwe", }, ["orv"] = { ["name"] = "Old East Slavic", ["article"] = "Old East Slavic", ["replacements"] = { [U(0x484)] = "", }, }, ["osx"] = { ["name"] = "Old Saxon", }, ["pt"] = { ["name"] = "Portuguese", ["article"] = "Portuguese language", -- ["scripts"] = { "Latn" }, }, ["pa"] = { ["name"] = "Punjabi", ["article"] = "Punjabi language", }, ["pis"] = { ["name"] = "Pijin", ["article"] = "Pijin language", }, ["poz-x-poly-proto"] = { ["name"] = "Proto-Nuclear Polynesian", ["article"] = "Proto-Polynesian language", ["type"] = "reconstructed", }, ["rap"] = { ["name"] = "Rapa Nui", ["article"] = "Rapa Nui language", }, ["ru"] = { ["name"] = "Russian", ["article"] = "Russian language", ["replacements"] = { [acute] = "", }, }, ["rw"] = { ["name"] = "Rwanda-Rundi", }, ["se"] = { ["replacements"] = { ["([đflmnŋrsšŧv])'%1"] = "%1%1", }, }, ["sem-pro"] = { ["name"] = "Proto-Semitic", ["article"] = "Proto-Semitic", ["type"] = "reconstructed", }, ["sh"] = { ["article"] = "Serbo-Croatian language", ["replacements"] = { decompose = true, from = { "([AaEeIiOoUuRrАаЕеИиОоУуРр])[" .. double_grave .. grave .. invbreve .. acute .. macron .. tilde .. "]" }, to = { "%1" }, }, }, ["sl"] = { ["name"] = "Slovene", ["replacements"] = { decompose = true, -- remove tonal orthography from = {"ł", "[" .. grave .. acute .. macron .. double_grave .. invbreve .. circumflex .. dot_below .. "]"}, to = {"l"}, }, }, ["sla-pro"] = { ["name"] = "Proto-Slavic", -- also Common Slavic ["type"] = "reconstructed", ["replacements"] = { ["[ÀÁÃĀȀȂ]"] = "A", ["[àáãāȁȃ]"] = "a", ["[ÈÉẼĒȄȆ]"] = "E", ["[èéẽēȅȇ]"] = "e", ["[ÌÍĨĪȈȊ]"] = "I", ["[ìíĩīȉȋ]"] = "i", ["[ÒÓÕŌȌȎŐ]"] = "O", ["[òóõōȍȏő]"] = "o", ["[ÙÚŨŪȔȖŰ]"] = "U", ["[ùúũūȕȗű]"] = "u", ["[ỲÝỸȲ]"] = "Y", ["[ỳýỹȳ]"] = "y", ["Ǭ"] = "Ǫ", ["ǭ"] = "ǫ", ["[" .. grave .. acute .. double_acute .. tilde .. macron .. double_grave .. invbreve .. "]"] = "", ["ĭ"] = "ь", ["ŭ"] = "ъ", }, }, ["tts"] = { ["name"] = "Isan", -- also "Northeastern Thai" ["article"] = "Isan language", }, ["ug"] = { ["name"] = "Uyghur", --also less commonly "Uighur" ["article"] = "Uyghur language", }, ["uk"] = { ["article"] = "Ukrainian language", ["replacements"] = { [acute] = "", } }, ["ur"] = { ["name"] = "Urdu", ["article"] = "Urdu", }, ["xcl"] = { ["name"] = "Old Armenian", ["article"] = "Classical Armenian", ["replacements"] = { ["[՞՜՛՟]"] = "", ["և"] = "եւ", }, }, ["xgf"] = { ["name"] = "Tongva", -- not ISO name "Gabrielino-Fernandeño" ["article"] = "Tongva language", ["replacements"] = { ["['`ʔ]"] = "ʼ", }, }, ["xlu"] = { ["name"] = "Luwian", -- not ISO name "Cuneiform Luwian" ["article"] = "Cuneiform Luwian" }, ["xpq"] = { ["name"] = "Mohegan-Pequot", }, ["xxt"] = { ["name"] = "Tambora", ["article"] = "Tambora language", }, ["xvn"] = { ["name"] = "Vandalic", ["article"] = "Vandalic language", }, ["yua"] = { ["name"] = "Yucatec Maya", ["article"] = "Yucatec Maya language", }, ["zh"] = { ["name"] = "Chinese", ["article"] = "Chinese language", -- ["scripts"] = { "Hani" }, }, }, -- Here, keys (for example, "gem") are Wikipedia language codes used in -- {{lang}}, and values (for example, "gem-pro") are the equivalent Wiktionary -- code. -- Subtags are not currently supported. ["redirects"] = { ["aae"] = "sq", ["aiq"] = "fa", ["aln"] = "sq", ["als"] = "sq", ["azb"] = "az", ["azj"] = "az", ["bgn"] = "bal", ["bs"] = "sh", ["bxr"] = "bua", ["ciw"] = "oj", ["cnr"] = "sh", ["fil"] = "tl", ["fuf"] = "ff", ["gem"] = "gem-pro", -- Not correct, but is commonly used. ["hak"] = "zh", ["hbo"] = "he", ["hr"] = "sh", ["ine"] = "ine-pro", -- Not correct, but might be commonly used. ["kjv"] = "sh", ["nan"] = "zh", ["prs"] = "fa", ["rn"] = "rw", ["sli"] = "gmw-ecg", ["sr"] = "sh", ["src"] = "sc", ["sro"] = "sc", ["tw"] = "ak", ["wae"] = "gsw", ["wep"] = "nds-de", ["yue"] = "zh", ["xno"] = "fro", }, } return data 3e1cbaa2d45dde581a9e11f0ad142ed7dd116100 Template:T 10 478 1052 1051 2023-10-01T09:58:16Z Führerredux 2 1 revision imported from [[:wikipedia:Template:T]] wikitext text/x-wiki #REDIRECT [[Template:Template link]] {{Rcat shell| {{R from template shortcut}} }} <!-- Used as Template:tl throughout English Wikipedia; demo template referenced only on meta --> bb10dbc83695404528dbc095ea267429142c7f05 Template:(( 10 479 1054 1053 2023-10-01T09:58:16Z Führerredux 2 1 revision imported from [[:wikipedia:Template:((]] wikitext text/x-wiki {{<noinclude> {{documentation}} </noinclude> 3f1af626705a06bc9cdea766736e292d321af5a3 Template:)) 10 480 1056 1055 2023-10-01T09:58:17Z Führerredux 2 1 revision imported from [[:wikipedia:Template:))]] wikitext text/x-wiki }}<noinclude> {{documentation}} </noinclude> 85ca77d4d6ff71d8e6396ebd798f87fa7f45dc02 Template:Module other 10 481 1058 1057 2023-10-01T09:58:18Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Module_other]] wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Module}} | module | other }} }} | module = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 503694836c1b07142e63fd35d8be69ec8bb9ffe7 Template:Module rating 10 482 1060 1059 2023-10-01T09:58:18Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Module_rating]] wikitext text/x-wiki <includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox | type = notice | image = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]] | alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]] | beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]] | release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]] | protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]] | semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]] }} | style = | textstyle = | text = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }} }} | alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }} }} | beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }} }} | release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }} }} | protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | #default = {{error|Module rating is invalid or not specified.}} }} }}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}}}</includeonly><noinclude> {{module rating|release|nocat=true|demospace=module}} {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go in Wikidata. --> </noinclude> bbd244b3ea2e13ec4c1c810ae44f2f3789a93efc Template:Language templates 10 444 1062 970 2023-10-01T09:58:19Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Language_templates]] wikitext text/x-wiki {{Sidebar | name = Language templates | width = 238px | bodystyle = border-spacing:0;background:#f7f7f7;padding:2px; | titlestyle = background:#ccccff; | title = Language templates | contentclass = plainlist | contentstyle = padding:0.25em;background:#fdfdfd; | navbarstyle = background:#fdfdfd;padding:0 5px | heading1 = Language names ([[ISO 639]]) | content1 = * {{tl|ISO 639 name}} | heading2 = Interwiki links | content2 = * {{tl|Wikt-lang}} * [[Module:Language]] * {{tl|Interlanguage link}} | heading5 = Foreign-language text | content5 = * {{tl|Lang}} * [[Module:Lang]] * {{tl|Transliteration}} * {{tl|Title language}} * {{tl|PIE}} | heading6 = Other | content6 = * {{tl|IPA}} * [[Module:Language/data]] * [[:Category:Wikipedia multilingual support templates]] }}<noinclude> {{Documentation|content= [[WP:SIDEBAR|Sidebar]] listing language [[WP:templates|templates]]. }} [[Category:Documentation see also templates]] </noinclude> f329063cbc1e51e9ff27b6f2cbb366cdee87c7e7 Module:Language/doc 828 446 1064 972 2023-10-01T09:58:19Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/doc]] wikitext text/x-wiki {{Module rating|beta}} {{Language templates}} {{Lua|Module:Language/data|Module:Unicode data}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> This module is used by {{tlx|wikt-lang}} and {{tlx|wt}}. It is inspired by the templates [[wikt:Template:m|{{((}}m{{))}}]] and [[wikt:Template:l|{{((}}l{{))}}]] and their associated modules on Wiktionary. It has a Wiktionary link function that links to the correct section of the Wiktionary entry, and applies correct language formatting and italics. The language-tagging function does most of what {{t|lang}} does, except that italics can't be customized and categories aren't added. The module uses [[Module:Language/data]] to retrieve the language name for a language code, and to perform the necessary entry-name replacements (for instance, removing macrons from Latin entry names). These are unfortunately not automatically retrieved from Wiktionary's [[wikt:Category:Language data modules|language data modules]]. For language codes that do not have a <code>name</code> value in this module, the language name is fetched with <code>mw.language.fetchLanguage</code>. When <code>mw.language.fetchLanguage</code> does not fetch the correct language name (or any language name at all), please add it to [[Module:language/data]], and similarly when the correct entry name is not generated, please add the entry name replacements to the module. ===Examples=== <pre style="max-width: 30em;"> * {{#invoke:Language|wikt|en|language}} * {{#invoke:Language|wikt|en|language|languages}} * {{#invoke:Language|wikt|fr|bourguignon}} * {{#invoke:Language|wikt|la|homō}} * {{#invoke:Language|wikt|grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|ru|язы́к}} * {{#invoke:Language|wikt|ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|fa|فارسی}} * {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}}</pre> * {{#invoke:Language|wikt|en|language}} * {{#invoke:Language|wikt|en|language|languages}} * {{#invoke:Language|wikt|fr|bourguignon}} * {{#invoke:Language|wikt|la|homō}} * {{#invoke:Language|wikt|grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|ru|язы́к}} * {{#invoke:Language|wikt|ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|fa|فارسی}} * {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}} ====Invalid codes==== <pre style="max-width: 30em;"> * {{#invoke:Language|wikt|EN|language}} * {{#invoke:Language|wikt|En|language|languages}} * {{#invoke:Language|wikt|La|homō}} * {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|Ru|язы́к}} * {{#invoke:Language|wikt|Ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|Fa|فارسی}}</pre> * {{#invoke:Language|wikt|EN|language}} * {{#invoke:Language|wikt|En|language|languages}} * {{#invoke:Language|wikt|La|homō}} * {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}} * {{#invoke:Language|wikt|Ru|язы́к}} * {{#invoke:Language|wikt|Ar|العَرَبِيَّة}} * {{#invoke:Language|wikt|Fa|فارسی}} ====Errors==== <pre>* {{#invoke:Language|wikt|en-Latin|language}}</pre> * {{#invoke:Language|wikt|en-Latin|language}} == Tracking categories == * {{Category link with count|Language module errors}} * {{Category link with count|Language module reconstructed with no asterisk}} * {{Category link with count|Language module using redirect code}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Language-related modules]] }}</includeonly> 8f0dd86fbb6403d5bf14443353bfec0c4ccba0b4 Template:Tree list 10 483 1066 1065 2023-10-01T10:00:46Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tree_list]] wikitext text/x-wiki <templatestyles src="Tree list/styles.css" /><!-- --><div class="treeview"><noinclude> </div> {{Documentation}} </noinclude> 3c3df2fc2f0185fa60fd2fdde34e5b13181ff42f Template:Tree list/styles.css 10 484 1068 1067 2023-10-01T10:00:53Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tree_list/styles.css]] sanitized-css text/css /* {{pp-template}} */ .treeview ul { padding: 0; margin: 0; } .treeview li { padding: 0; margin: 0; list-style-type: none; list-style-image: none; } .treeview li li { background: url("https://upload.wikimedia.org/wikipedia/commons/f/f2/Treeview-grey-line.png") no-repeat 0 -2981px; /* @noflip */ padding-left: 21px; text-indent: 0.3em; } .treeview li li:last-child { background-position: 0 -5971px } /* first line here deals with new situation after RemexHTML switch, * where emptyline cause the first child to become the 2nd child. Such a mess */ .treeview li.emptyline > ul > .mw-empty-elt:first-child + .emptyline, .treeview li.emptyline > ul > li:first-child { background-position: 0 9px } a033cdb57b07f78781a6c065fa37884bfe489045 Template:Hidden begin 10 250 1070 553 2023-10-01T10:00:54Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Hidden_begin]] wikitext text/x-wiki <includeonly><templatestyles src="Template:Hidden begin/styles.css"/><div class="hidden-begin mw-collapsible {{#ifeq:{{{showhide|{{{toggle}}}}}}|left|mw-collapsible-leftside-toggle}} {{#if:{{{expanded|}}}||mw-collapsed}} {{{class|}}}" style="{{#if:{{{width|}}}|width:{{{width}}};}} {{#if:{{{border|}}}|border:{{{border}}};}} {{#if:{{{bgcolor|}}}|background-color:{{{bgcolor}}};}} {{{style|}}}"><!-- --><div class="hidden-title" style="{{#if:{{{ta1|}}}|text-align:{{{ta1}}};}} {{#if:{{{titlebgcolor|}}}|background-color:{{{titlebgcolor}}};}} {{{titlestyle|}}}">{{{title|{{{header|}}}}}}</div><!-- --><div class="hidden-content mw-collapsible-content" style="{{#if:{{{ta2|}}}|text-align:{{{ta2}}};}} {{#if:{{{contentbgcolor|}}}|background-color:{{{contentbgcolor}}};}} {{{contentstyle|{{{bodystyle|}}}}}}"><!-- Content added after the template --></includeonly><noinclude> {{Documentation}} </noinclude> be0f4e092203b931810fbff9ed6a1b7af51c025f Template:Hidden end 10 485 1072 1071 2023-10-01T10:00:54Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Hidden_end]] wikitext text/x-wiki <includeonly></div></div></includeonly><noinclude> {{hatnote|Templates {{noredirect|Template:End hidden|End hidden}} and {{noredirect|Template:End hidden section|End hidden section}} redirect here.}} {{Documentation|Template:Hidden begin/doc}} </noinclude> 6cc7eb4776ef10092d5f7d48da123117e7b430b2 Module:TNT 828 77 1074 176 2023-10-01T10:00:55Z Führerredux 2 1 revision imported from [[:wikipedia:Module:TNT]] Scribunto text/plain -- -- INTRO: (!!! DO NOT RENAME THIS PAGE !!!) -- This module allows any template or module to be copy/pasted between -- wikis without any translation changes. All translation text is stored -- in the global Data:*.tab pages on Commons, and used everywhere. -- -- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules -- -- ATTENTION: -- Please do NOT rename this module - it has to be identical on all wikis. -- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT -- Please do not modify it anywhere else, as it may get copied and override your changes. -- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT -- -- DESCRIPTION: -- The "msg" function uses a Commons dataset to translate a message -- with a given key (e.g. source-table), plus optional arguments -- to the wiki markup in the current content language. -- Use lang=xx to set language. Example: -- -- {{#invoke:TNT | msg -- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab --> -- | source-table <!-- uses a translation message with id = "source-table" --> -- | param1 }} <!-- optional parameter --> -- -- -- The "doc" function will generate the <templatedata> parameter documentation for templates. -- This way all template parameters can be stored and localized in a single Commons dataset. -- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons. -- -- {{#invoke:TNT | doc | Graph:Lines }} -- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab -- if the current page is Template:Graph:Lines/doc -- local p = {} local i18nDataset = 'I18n/Module:TNT.tab' -- Forward declaration of the local functions local sanitizeDataset, loadData, link, formatMessage function p.msg(frame) local dataset, id local params = {} local lang = nil for k, v in pairs(frame.args) do if k == 1 then dataset = mw.text.trim(v) elseif k == 2 then id = mw.text.trim(v) elseif type(k) == 'number' then params[k - 2] = mw.text.trim(v) elseif k == 'lang' and v ~= '_' then lang = mw.text.trim(v) end end return formatMessage(dataset, id, params, lang) end -- Identical to p.msg() above, but used from other lua modules -- Parameters: name of dataset, message key, optional arguments -- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.format(dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('format', 1, dataset, 'string') checkType('format', 2, key, 'string') return formatMessage(dataset, key, {...}) end -- Identical to p.msg() above, but used from other lua modules with the language param -- Parameters: language code, name of dataset, message key, optional arguments -- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.formatInLanguage(lang, dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('formatInLanguage', 1, lang, 'string') checkType('formatInLanguage', 2, dataset, 'string') checkType('formatInLanguage', 3, key, 'string') return formatMessage(dataset, key, {...}, lang) end -- Obsolete function that adds a 'c:' prefix to the first param. -- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab' function p.link(frame) return link(frame.args[1]) end function p.doc(frame) local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1]) return frame:extensionTag('templatedata', p.getTemplateData(dataset)) .. formatMessage(i18nDataset, 'edit_doc', {link(dataset)}) end function p.getTemplateData(dataset) -- TODO: add '_' parameter once lua starts reindexing properly for "all" languages local data = loadData(dataset) local names = {} for _, field in ipairs(data.schema.fields) do table.insert(names, field.name) end local params = {} local paramOrder = {} for _, row in ipairs(data.data) do local newVal = {} local name = nil for pos, columnName in ipairs(names) do if columnName == 'name' then name = row[pos] else newVal[columnName] = row[pos] end end if name then params[name] = newVal table.insert(paramOrder, name) end end -- Work around json encoding treating {"1":{...}} as an [{...}] params['zzz123']='' local json = mw.text.jsonEncode({ params=params, paramOrder=paramOrder, description=data.description }) json = string.gsub(json,'"zzz123":"",?', "") return json end -- Local functions sanitizeDataset = function(dataset) if not dataset then return nil end dataset = mw.text.trim(dataset) if dataset == '' then return nil elseif string.sub(dataset,-4) ~= '.tab' then return dataset .. '.tab' else return dataset end end loadData = function(dataset, lang) dataset = sanitizeDataset(dataset) if not dataset then error(formatMessage(i18nDataset, 'error_no_dataset', {})) end -- Give helpful error to thirdparties who try and copy this module. if not mw.ext or not mw.ext.data or not mw.ext.data.get then error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset) end local data = mw.ext.data.get(dataset, lang) if data == false then if dataset == i18nDataset then -- Prevent cyclical calls error('Missing Commons dataset ' .. i18nDataset) else error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)})) end end return data end -- Given a dataset name, convert it to a title with the 'commons:data:' prefix link = function(dataset) return 'c:Data:' .. mw.text.trim(dataset or '') end formatMessage = function(dataset, key, params, lang) for _, row in pairs(loadData(dataset, lang).data) do local id, msg = unpack(row) if id == key then local result = mw.message.newRawMessage(msg, unpack(params or {})) return result:plain() end end if dataset == i18nDataset then -- Prevent cyclical calls error('Invalid message key "' .. key .. '"') else error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)})) end end return p 2c570369c78089aef29c72768918373f61b7075d Template:Tree list/end 10 486 1076 1075 2023-10-01T10:00:58Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tree_list/end]] wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{Documentation|Template:Tree list/doc}} </noinclude> cdcda060fe4563745fb7a50f1c335c9abe5e2b08 Template:Tree list/branching 10 487 1078 1077 2023-10-01T10:00:58Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tree_list/branching]] wikitext text/x-wiki <includeonly><li class="emptyline"></includeonly><noinclude> {{Documentation|Template:Tree list/doc}} </noinclude> 530e32b7119fdb2a9fcb93fdecf211a365e6541f Template:Uses TemplateStyles 10 81 1080 198 2023-10-01T10:00:58Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Uses_TemplateStyles]] wikitext text/x-wiki <div style="width:250px;float:right;clear:right;margin:0 0 1em 1em;border:1px solid black;-moz-border-radius:10px;-webkit-border-radius:10px;padding:10px 10px 10px 10px; background:#FFFFFF;"> <p style="margin:0 3% 0 3%;text-align:center;font-size:94%"> [[File:Farm-Fresh css add.svg|left|30px]] '''This template uses [[Help:TemplateStyles|TemplateStyles]]''' <br /> {{{1|}}} </p></div><includeonly>{{#ifeq:{{SUBPAGENAME}}|doc||[[Category:Templates that use TemplateStyles|{{PAGENAME}}]]}}</includeonly><noinclude> {{clr}} {{Documentation}}</noinclude> fed44ca463856190bcf6280438ed7ea020ad82c3 Module:Uses TemplateStyles 828 488 1082 1081 2023-10-01T10:00:59Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Uses_TemplateStyles]] Scribunto text/plain local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local TNT = require('Module:TNT') local p = {} local function format(msg, ...) return TNT.format('I18n/Uses TemplateStyles', msg, ...) end local function getConfig() return mw.loadData('Module:Uses TemplateStyles/config') end local function renderBox(tStyles) local boxArgs = { type = 'notice', small = true, image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt')) } if #tStyles < 1 then boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist')) else local cfg = getConfig() local tStylesLinks = {} for i, ts in ipairs(tStyles) do local link = string.format('[[:%s]]', ts) local sandboxLink = nil local tsTitle = mw.title.new(ts) if tsTitle and cfg['sandbox_title'] then local tsSandboxTitle = mw.title.new(string.format( '%s:%s/%s/%s', tsTitle.nsText, tsTitle.baseText, cfg['sandbox_title'], tsTitle.subpageText)) if tsSandboxTitle and tsSandboxTitle.exists then sandboxLink = format('sandboxlink', link, ':' .. tsSandboxTitle.prefixedText) end end tStylesLinks[i] = sandboxLink or link end local tStylesList = mList.makeList('bulleted', tStylesLinks) boxArgs.text = format( mw.title.getCurrentTitle():inNamespaces(828,829) and 'header-module' or 'header-template') .. '\n' .. tStylesList end return mMessageBox.main('mbox', boxArgs) end local function renderTrackingCategories(args, tStyles, titleObj) if yesno(args.nocat) then return '' end local cfg = getConfig() local cats = {} -- Error category if #tStyles < 1 and cfg['error_category'] then cats[#cats + 1] = cfg['error_category'] end -- TemplateStyles category titleObj = titleObj or mw.title.getCurrentTitle() if (titleObj.namespace == 10 or titleObj.namespace == 828) and not cfg['subpage_blacklist'][titleObj.subpageText] then local category = args.category or cfg['default_category'] if category then cats[#cats + 1] = category end if not yesno(args.noprotcat) and (cfg['protection_conflict_category'] or cfg['padlock_pattern']) then local currentProt = titleObj.protectionLevels["edit"] and titleObj.protectionLevels["edit"][1] or nil local addedLevelCat = false local addedPadlockCat = false for i, ts in ipairs(tStyles) do local tsTitleObj = mw.title.new(ts) local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then local content = tsTitleObj:getContent() if not content:find(cfg['padlock_pattern']) then cats[#cats + 1] = cfg['missing_padlock_category'] addedPadlockCat = true end end if cfg['protection_conflict_category'] and currentProt and tsProt ~= currentProt and not addedLevelCat then currentProt = cfg['protection_hierarchy'][currentProt] or 0 tsProt = cfg['protection_hierarchy'][tsProt] or 0 if tsProt < currentProt then addedLevelCat = true cats[#cats + 1] = cfg['protection_conflict_category'] end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end function p._main(args, cfg) local tStyles = mTableTools.compressSparseArray(args) local box = renderBox(tStyles) local trackingCategories = renderTrackingCategories(args, tStyles) return box .. trackingCategories end function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end return p 71ca57c37849f38e3c5ee30061bdae730963e48e Module:Uses TemplateStyles/config 828 489 1084 1083 2023-10-01T10:00:59Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Uses_TemplateStyles/config]] Scribunto text/plain local cfg = {} -- Don’t touch this line. -- Subpage blacklist: these subpages will not be categorized (except for the -- error category, which is always added if there is an error). -- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have -- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules, -- so they *will* have categories. All rules should be in the -- ['<subpage name>'] = true, -- format. cfg['subpage_blacklist'] = { ['doc'] = true, ['sandbox'] = true, ['sandbox2'] = true, ['testcases'] = true, } -- Sandbox title: if the stylesheet’s title is <template>/<stylesheet>.css, the -- stylesheet’s sandbox is expected to be at <template>/<sandbox_title>/<stylesheet>.css -- Set to nil to disable sandbox links. cfg['sandbox_title'] = 'sandbox' -- Error category: this category is added if the module call contains errors -- (e.g. no stylesheet listed). A category name without namespace, or nil -- to disable categorization (not recommended). cfg['error_category'] = 'Uses TemplateStyles templates with errors' -- Default category: this category is added if no custom category is specified -- in module/template call. A category name without namespace, or nil -- to disable categorization. cfg['default_category'] = 'Templates using TemplateStyles' -- Protection conflict category: this category is added if the protection level -- of any stylesheet is lower than the protection level of the template. A category name -- without namespace, or nil to disable categorization (not recommended). cfg['protection_conflict_category'] = 'Templates using TemplateStyles with a different protection level' -- Hierarchy of protection levels, used to determine whether one protection level is lower -- than another and thus should populate protection_conflict_category. No protection is treated as zero cfg['protection_hierarchy'] = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } -- Padlock pattern: Lua pattern to search on protected stylesheets for, or nil -- to disable padlock check. cfg['padlock_pattern'] = '{{pp-' -- Missing padlock category: this category is added if a protected stylesheet -- doesn’t contain any padlock template (specified by the above Lua pattern). -- A category name without namespace (no nil allowed) if the pattern is not nil, -- unused (and thus may be nil) otherwise. cfg['missing_padlock_category'] = 'Templates using TemplateStyles without padlocks' return cfg -- Don’t touch this line. 58e7a37c44f6ea3f6b8af54a559d696cc7256493 Template:When on basepage 10 490 1086 1085 2023-10-01T10:01:00Z Führerredux 2 1 revision imported from [[:wikipedia:Template:When_on_basepage]] wikitext text/x-wiki {{#switch: <!--If no or empty "page" parameter then detect basepage/subpage/subsubpage--> {{#if:{{{page|}}} | {{#if:{{#titleparts:{{{page}}}|0|3}} | subsubpage <!--Subsubpage or lower--> | {{#if:{{#titleparts:{{{page}}}|0|2}} | subpage | basepage }} }} | {{#if:{{#titleparts:{{FULLPAGENAME}}|0|3}} | subsubpage <!--Subsubpage or lower--> | {{#if:{{#titleparts:{{FULLPAGENAME}}|0|2}} | subpage | basepage }} }} }} | basepage = {{{1|}}} | subpage = {{{2|}}} | subsubpage = {{{3| {{{2|}}} }}} <!--Respecting empty parameter on purpose--> }}<!--End switch--><noinclude> {{Documentation}} </noinclude> cf4dc92df647a26ab0ce149772a1fe3ac6c3dfc0 Template:Doc subpage 10 491 1088 1087 2023-10-01T10:01:01Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Doc_subpage]] wikitext text/x-wiki #redirect[[Template:Documentation subpage]] 3aaef8c38750fcf2836627f907d6456f297f493d Template:Tree list/doc 10 492 1090 1089 2023-10-01T10:01:03Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tree_list/doc]] wikitext text/x-wiki {{doc subpage}} {{When on basepage|{{Uses TemplateStyles|Template:Tree list/styles.css}}}} This family of templates can be used to create a properly structured and accessible tree. This can be used to display family trees, succession to thrones, etc. They comprise: {{Tree list}} * {{tl|Tree list}} ** {{tl|Tree list/end}} ** {{tl|Tree list/branching}} {{Tree list/end}} == Syntax == === Start and finish of the tree === The tree must include a start and finish, using the templates {{tl|Tree list}} and {{tl|Tree list/end}} respectively. The tree is essentially a series of nested lists built with the asterisk *. <syntaxhighlight lang="wikitext"> {{Tree list}} * Here goes the content of the tree using asterisks. {{Tree list/end}} </syntaxhighlight> === The branches of the tree === Each branch of the tree is built using nested lists: <syntaxhighlight lang="wikitext"> {{Tree list}} * A first level branch ** A second level branch *** A third level branch {{Tree list/end}} </syntaxhighlight> produces {{Tree list}} * A first level branch ** A second level branch *** A third level branch {{Tree list/end}} === Unlabelled branches === An unlabelled branch may be formed by using the {{tl|Tree list/branching}} template. <syntaxhighlight lang="wikitext">{{Tree list}} * A first level branch ** {{Tree list/branching}} *** A third level branch *** Another third level branch *** The final third level branch ** A second level branch ** {{Tree list/branching}} <!--- This branch ends the second level ---> *** A third level branch *** The final third level branch {{Tree list/end}}</syntaxhighlight> produces the following: {{Tree list}} * A first level branch ** {{Tree list/branching}} *** A third level branch *** Another third level branch *** The final third level branch ** A second level branch ** {{Tree list/branching}} *** A third level branch *** The final third level branch {{Tree list/end}} ==Collapse== To collapse a tree place {{tlx|Hidden begin}} before {{tlx|Tree list}} and enclose {{tlx|Tree list/end}} with {{tlx|Hidden end}}. {{tlx|Hidden begin}} default to just a show link on the right, but it takes a number of parameters see the template's documentation. In this case: |border=1px #aaa solid — a solid border around the tree |title=Demonstration tree — a suitable name for the tree |ta1=center – center the title= name <syntaxhighlight lang="wikitext"> {{hidden begin|border=1px #aaa solid|title=Demonstration tree|ta1=center}} {{Tree list}} * A first level branch ** {{Tree list/branching}} *** A third level branch *** Another third level branch *** The final third level branch ** A second level branch ** {{Tree list/branching}} <!--- This branch ends the second level ---> *** A third level branch *** The final third level branch {{Tree list/end}} {{Hidden end}} </syntaxhighlight> {{hidden begin|border=1px #aaa solid|ta1=center||title=Demonstration tree}} {{Tree list}} * A first level branch ** {{Tree list/branching}} *** A third level branch *** Another third level branch *** The final third level branch ** A second level branch ** {{Tree list/branching}} <!--- This branch ends the second level ---> *** A third level branch *** The final third level branch {{Tree list/end}} {{Hidden end}} If the parameter <code>|expanded=on</code> is added to {{tlx|hidden begin}} then the box will be drawn expanded rather than the default, which is to collapse the tree. == Examples == ===A family tree === '''Code :''' <syntaxhighlight lang="wikitext"> {{hidden begin|border=1px #aaa solid|title=A family tree (descendants of Henry VII of England)|ta1=center|expanded=on}} {{Tree list}} *[[Image:Simple gold crown.svg|15px]] '''(1)''' [[Henry VII of England|Henry VII]] (1457 - 1509) **[[Arthur, Prince of Wales]] (1486 - 1502) **[[Margaret Tudor|Margaret, Queen of Scots]] (1489 - 1541) ***[[James, Duke of Rothesay]] (1507 - 1508) ***[[Arthur, Duke of Rothesay]] (1509 - 1510) ***[[Image:Simple silver crown.svg|15px]] [[James V of Scotland]] (1512 - 1542) ****[[Image:Simple silver crown.svg|15px]] [[Mary, Queen of Scots]] (1542 - 1587) *****[[Image:Simple silver crown.svg|15px]] [[Image:Simple gold crown.svg|15px]] '''(7)''' [[James VI and I|James VI of Scotland and I of England]] (1566 - 1625) ******''From whom succeeding English, Scottish and British monarchs are descended.'' ***[[Alexander Stewart, Duke of Ross]] (1514 - 1515) ***[[Margaret Douglas|Margaret Douglas, Countess of Lennox]] (1515 - 1578) **[[Image:Simple gold crown.svg|15px]] '''(2)''' [[Henry VIII of England]] (1491 - 1547) ***[[Henry, Duke of Cornwall]] (1511 - 1511) ***[[Image:Simple gold crown.svg|15px]] '''(5)''' [[Mary I of England]] (1516 - 1558) ***[[Image:Simple gold crown.svg|15px]] '''(6)''' [[Elizabeth I of England]] (1533 - 1603) ***[[Image:Simple gold crown.svg|15px]] '''(3)''' [[Edward VI of England]] **[[Elizabeth Tudor (daughter of Henry VII)|Elizabeth Tudor]] (1492 - 1495) **[[Mary Tudor (queen consort of France)|Mary, Queen of France]] (1496 - 1533) ***Henry Brandon (1516 - 1522) ***[[Frances Grey, Duchess of Suffolk]] (1517 - 1547) ****[[Image:Simple gold crown.svg|15px]] '''(4)''' [[Lady Jane Grey]] (1536 - 1553) ****[[Lady Catherine Grey|Catherine Seymour, Countess of Hertford]] (1540 - 1568) ****[[Lady Mary Grey|Lady Mary Keyes]] (1545 - 1578) ****Elizabeth Stokes (1555 - 1556) ***[[Eleanor Clifford, Countess of Cumberland]] (1519 - 1547) ****''From whom are descended the [[Earl of Derby|Earls of Derby]]'' ***[[Henry Brandon, 1st Earl of Lincoln]] (1523 - 1534) **[[Edmund Tudor, Duke of Somerset]] (1499 - 1500) **[[Katherine Tudor (1503)|Katherine Tudor]] (1503 - 1503) {{Tree list/end}} {{hidden end}} </syntaxhighlight> which gives {{hidden begin|border=1px #aaa solid|title=A family tree (descendants of Henry VII of England) |ta1=center|expanded=on}} {{Tree list}} *[[Image:Simple gold crown.svg|15px]] '''(1)''' [[Henry VII of England|Henry VII]] (1457 - 1509) **[[Arthur, Prince of Wales]] (1486 - 1502) **[[Margaret Tudor|Margaret, Queen of Scots]] (1489 - 1541) ***[[James, Duke of Rothesay]] (1507 - 1508) ***[[Arthur, Duke of Rothesay]] (1509 - 1510) ***[[Image:Simple silver crown.svg|15px]] [[James V of Scotland]] (1512 - 1542) ****[[Image:Simple silver crown.svg|15px]] [[Mary, Queen of Scots]] (1542 - 1587) *****[[Image:Simple silver crown.svg|15px]] [[Image:Simple gold crown.svg|15px]] '''(7)''' [[James VI and I|James VI of Scotland and I of England]] (1566 - 1625) ******''From whom succeeding English, Scottish and British monarchs are descended.'' ***[[Alexander Stewart, Duke of Ross]] (1514 - 1515) ***[[Margaret Douglas|Margaret Douglas, Countess of Lennox]] (1515 - 1578) **[[Image:Simple gold crown.svg|15px]] '''(2)''' [[Henry VIII of England]] (1491 - 1547) ***[[Henry, Duke of Cornwall]] (1511 - 1511) ***[[Image:Simple gold crown.svg|15px]] '''(5)''' [[Mary I of England]] (1516 - 1558) ***[[Image:Simple gold crown.svg|15px]] '''(6)''' [[Elizabeth I of England]] (1533 - 1603) ***[[Image:Simple gold crown.svg|15px]] '''(3)''' [[Edward VI of England]] **[[Elizabeth Tudor (daughter of Henry VII)|Elizabeth Tudor]] (1492 - 1495) **[[Mary Tudor (queen consort of France)|Mary, Queen of France]] (1496 - 1533) ***Henry Brandon (1516 - 1522) ***[[Frances Grey, Duchess of Suffolk]] (1517 - 1547) ****[[Image:Simple gold crown.svg|15px]] '''(4)''' [[Lady Jane Grey]] (1536 - 1553) ****[[Lady Catherine Grey|Catherine Seymour, Countess of Hertford]] (1540 - 1568) ****[[Lady Mary Grey|Lady Mary Keyes]] (1545 - 1578) ****Elizabeth Stokes (1555 - 1556) ***[[Eleanor Clifford, Countess of Cumberland]] (1519 - 1547) ****''From whom are descended the [[Earl of Derby|Earls of Derby]]'' ***[[Henry Brandon, 1st Earl of Lincoln]] (1523 - 1534) **[[Edmund Tudor, Duke of Somerset]] (1499 - 1500) **[[Katherine Tudor (1503)|Katherine Tudor]] (1503 - 1503) {{Tree list/end}} {{hidden end}} ===An ancestry tree=== [[Ahnentafel]] style trees can be can be displayed using this template, but usually for less than 6 generations the customised Ahnentafel templates are clearer (see [[Template:Ahnentafel/doc]]). There is also an ahnentafel template ({{tl|Ahnentafel-tree}}), that is based on this one, that makes construction this tree simpler. <syntaxhighlight lang="wikitext"> {{hidden begin|border=1px #aaa solid|title=Ancestry tree of Prince William, Duke of Cambridge|ta1=center|expanded=on}} {{Tree list}} *1. '''[[William, Prince of Wales]]''' (born 21 June 1982) **2. [[Charles III|Charles III of the United Kingdom]] (born 14 November 1948) ***4. [[Prince Philip, Duke of Edinburgh|Prince Philip of Greece and Denmark]] (10 June 1921 – 9 April 2021) ****8. [[Prince Andrew of Greece and Denmark]] (20 January 1882 – 3 December 1944) ****9. [[Princess Alice of Battenberg]] (25 February 1885 – 5 December 1969) ***5. [[Elizabeth II|Elizabeth II of the United Kingdom]] (21 April 1926 – 8 September 2022) ****10. [[George VI|George VI of the United Kingdom]] (14 December 1895 – 6 February 1952) ****11. [[Queen Elizabeth The Queen Mother|Lady Elizabeth Bowes-Lyon]] (4 August 1900 – 30 March 2002) **3. [[Diana, Princess of Wales|Lady Diana Spencer]] (1 July 1961 – 31 August 1997) ***6. [[John Spencer, 8th Earl Spencer]] (21 April 1926 – 29 March 1992) ****12. [[Albert Spencer, 7th Earl Spencer]] (23 May 1892 – 9 June 1975) ****13. [[Cynthia Spencer, Countess Spencer|Lady Cynthia Hamilton]] (16 August 1897 – 4 December 1972) ***7. [[Frances Shand Kydd|The Honourable Frances Roche]] (20 January 1936 – 3 June 2004) ****14. [[Maurice Roche, 4th Baron Fermoy]] (15 May 1885 – 8 July 1955) ****15. [[Ruth Roche, Baroness Fermoy|Ruth Gill]] (2 October 1908 – 6 July 1993) {{Tree list/end}} {{hidden end}} </syntaxhighlight> {{hidden begin|border=1px #aaa solid|title=Ancestry tree of Prince William, Duke of Cambridge|ta1=center|expanded=on}} {{Tree list}} *1. '''[[William, Prince of Wales]]''' (born 21 June 1982) **2. [[Charles III|Charles III of the United Kingdom]] (born 14 November 1948) ***4. [[Prince Philip, Duke of Edinburgh|Prince Philip of Greece and Denmark]] (10 June 1921 – 9 April 2021) ****8. [[Prince Andrew of Greece and Denmark]] (20 January 1882 – 3 December 1944) ****9. [[Princess Alice of Battenberg]] (25 February 1885 – 5 December 1969) ***5. [[Elizabeth II|Elizabeth II of the United Kingdom]] (21 April 1926 – 8 September 2022) ****10. [[George VI|George VI of the United Kingdom]] (14 December 1895 – 6 February 1952) ****11. [[Queen Elizabeth The Queen Mother|Lady Elizabeth Bowes-Lyon]] (4 August 1900 – 30 March 2002) **3. [[Diana, Princess of Wales|Lady Diana Spencer]] (1 July 1961 – 31 August 1997) ***6. [[John Spencer, 8th Earl Spencer]] (21 April 1926 – 29 March 1992) ****12. [[Albert Spencer, 7th Earl Spencer]] (23 May 1892 – 9 June 1975) ****13. [[Cynthia Spencer, Countess Spencer|Lady Cynthia Hamilton]] (16 August 1897 – 4 December 1972) ***7. [[Frances Shand Kydd|The Honourable Frances Roche]] (20 January 1936 – 3 June 2004) ****14. [[Maurice Roche, 4th Baron Fermoy]] (15 May 1885 – 8 July 1955) ****15. [[Ruth Roche, Baroness Fermoy|Ruth Gill]] (2 October 1908 – 6 July 1993) {{Tree list/end}} {{hidden end}} === A cladogram === <syntaxhighlight lang="wikitext"> {{hidden begin|border=1px #aaa solid|title=A cladogram|ta1=center|expanded=on}} {{Tree list}} *[[Tetrapoda]] ** {{Tree list/branching}} *** Many extinct groups such as the ''[[Eucritta]]'' *** '''[[Lissamphibia]]''' Whose ancestors of the current amphibians ** {{Tree list/branching}} *** Many extinct groups reminiscent of amphibians with more or less pronounced reptilian characteristics such as [[Eoherpetontidae]], the [[Embolomeri]], the [[Tokosauridae]], [[Chroniosuchidae]], [[Gephyrostegidae]], [[Solenodonsauridae]], [[Seymouriamorpha]], [[Westlothiana]], [[Lepospondyli]] *** [[Cotylosauria]] **** [[Amniota]], Originally all "Reptilian" **** Other extinct sibling taxa like [[Diadectomorpha]] or [[Tseajaiidae]] are close enough to reptiles {{Tree list/end}} {{hidden end}} </syntaxhighlight> {{hidden begin|border=1px #aaa solid|title=A cladogram|ta1=center|expanded=on}} {{Tree list}} *[[Tetrapoda]] ** {{Tree list/branching}} *** Many extinct groups such as the ''[[Eucritta]]'' *** '''[[Lissamphibia]]''' Whose ancestors of the current amphibians ** {{Tree list/branching}} *** Many extinct groups reminiscent of amphibians with more or less pronounced reptilian characteristics such as [[Eoherpetontidae]], the [[Embolomeri]], the [[Tokosauridae]], [[Chroniosuchidae]], [[Gephyrostegidae]], [[Solenodonsauridae]], [[Seymouriamorpha]], [[Westlothiana]], [[Lepospondyli]] *** [[Cotylosauria]] **** [[Amniota]], Originally all "Reptilian" **** Other extinct sibling taxa like [[Diadectomorpha]] or [[Tseajaiidae]] are close enough to reptiles {{Tree list/end}} {{hidden end}} ==See also== *[[Wikipedia:Family trees]] *{{tlx|Chart}} — This template produces one row in a "family tree"-like chart consisting of boxes and connecting lines *{{tlx|Ahnentafel}} — This template takes genealogical data in the form of an [[ahnentafel]] and presents it as a graphical ancestry tree *{{tlx|ahnentafel-tree}} uses {{tlx|Tree list}} and will handle up to an ahnentafel of 511 places (9 generations), but will also display as little as one generation. <includeonly>{{Sandbox other|| [[Category:List formatting and function templates]] [[Category:Genealogy formatting templates]] }}</includeonly> e198bd2ed42427a385cca605488247032f83e579 Template:Hidden begin/styles.css 10 253 1092 556 2023-10-01T10:01:03Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Hidden_begin/styles.css]] sanitized-css text/css /* {{pp-template}} */ .hidden-begin { box-sizing: border-box; width: 100%; padding: 5px; border: none; font-size: 95%; } .hidden-title { font-weight: bold; line-height: 1.6; text-align: left; } .hidden-content { text-align: left; } d4ab5680ca52bee10cfd2992f2adc45452c5ab37 Module:Transclusion count/data/I 828 70 1094 1093 2023-10-01T10:01:57Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/I]] Scribunto text/plain return { ["IAAF_name"] = 2100, ["IAST"] = 6400, ["IBDB_name"] = 9100, ["ICD10"] = 4700, ["ICD9"] = 4400, ["ICS"] = 2900, ["IDN"] = 3400, ["IMDb_episode"] = 10000, ["IMDb_episodes"] = 2700, ["IMDb_name"] = 154000, ["IMDb_title"] = 189000, ["IMO_Number"] = 4100, ["IMSLP"] = 8300, ["INA"] = 2100, ["IND"] = 7600, ["INR"] = 6500, ["INRConvert"] = 5700, ["INRConvert/CurrentRate"] = 5600, ["INRConvert/USD"] = 5600, ["INRConvert/out"] = 5600, ["IOC_profile"] = 5200, ["IP"] = 2600, ["IPA"] = 142000, ["IPA-de"] = 8100, ["IPA-es"] = 7900, ["IPA-fr"] = 44000, ["IPA-it"] = 6000, ["IPA-nl"] = 3900, ["IPA-pl"] = 4100, ["IPA-pt"] = 3300, ["IPA-ru"] = 2700, ["IPA-sl"] = 6900, ["IPA-th"] = 3000, ["IPA_audio_link"] = 3500, ["IPA_link"] = 3500, ["IPAc-cmn"] = 2300, ["IPAc-en"] = 48000, ["IPAc-pl"] = 51000, ["IPC_athlete"] = 2800, ["IPSummary"] = 78000, ["IP_summary"] = 79000, ["IPtalk"] = 18000, ["IPuser"] = 7100, ["IPvandal"] = 2700, ["IRC"] = 7300, ["IRI"] = 2300, ["IRL"] = 5500, ["IRN"] = 3600, ["ISBN"] = 462000, ["ISBN?"] = 2100, ["ISBNT"] = 39000, ["ISBN_missing"] = 2600, ["ISFDB_name"] = 4100, ["ISFDB_title"] = 4600, ["ISL"] = 2100, ["ISO_15924/script-example-character"] = 2800, ["ISO_15924/wp-article"] = 2800, ["ISO_15924/wp-article/format"] = 2800, ["ISO_15924/wp-article/label"] = 2700, ["ISO_3166_code"] = 519000, ["ISO_3166_name"] = 16000, ["ISO_639_name"] = 8100, ["ISP"] = 5300, ["ISR"] = 4900, ["ISSN"] = 12000, ["ISSN_link"] = 30000, ["ISTAT"] = 8100, ["ISU_figure_skater"] = 2500, ["ITA"] = 17000, ["ITF"] = 6300, ["ITF_profile"] = 9000, ["ITIS"] = 4400, ["ITN_talk"] = 10000, ["ITN_talk/date"] = 10000, ["IUCN_banner"] = 15000, ["I_sup"] = 4600, ["Iaaf_name"] = 7200, ["Ice_hockey"] = 19000, ["Ice_hockey_stats"] = 17000, ["Icehockeystats"] = 12000, ["Icon"] = 581000, ["If"] = 272000, ["If_all"] = 6400, ["If_between"] = 3800, ["If_both"] = 155000, ["If_empty"] = 3660000, ["If_first_display_both"] = 73000, ["If_in_page"] = 10000, ["If_last_display_both"] = 30000, ["If_preview"] = 58000, ["If_then_show"] = 289000, ["Ifempty"] = 4000, ["Ifeq"] = 16000, ["Iferror_then_show"] = 3300, ["Ifexist_not_redirect"] = 1300000, ["Ifnotempty"] = 14000, ["Ifnumber"] = 36000, ["Ifsubst"] = 446000, ["Ih"] = 7500, ["Ill"] = 117000, ["Illm"] = 6700, ["Image_frame"] = 4900, ["Image_label"] = 4500, ["Image_label_begin"] = 3800, ["Image_label_end"] = 3800, ["Image_label_small"] = 2600, ["Image_needed"] = 4500, ["Image_other"] = 272000, ["Image_requested"] = 167000, ["Image_requested/Category_helper"] = 159000, ["Imbox"] = 917000, ["Imdb_name"] = 5400, ["Imdb_title"] = 4000, ["Import_style"] = 11000, ["Import_style/inputbox.css"] = 11000, ["Importance"] = 5640000, ["Importance/colour"] = 5660000, ["Importance_mask"] = 10400000, ["Improve_categories"] = 7000, ["Improve_documentation"] = 2400, ["In_class"] = 5900, ["In_lang"] = 356000, ["In_progress"] = 3200, ["In_string"] = 75000, ["In_title"] = 19000, ["Inactive_WikiProject_banner"] = 205000, ["Inactive_userpage_blanked"] = 4900, ["Include-USGov"] = 29000, ["Incomplete_list"] = 23000, ["Inconclusive"] = 2100, ["Increase"] = 43000, ["Incumbent_pope"] = 4300, ["Indent"] = 4400, ["IndexFungorum"] = 2200, ["Indian_English"] = 4300, ["Indian_Rupee"] = 10000, ["Indian_railway_code"] = 3200, ["Inflation"] = 21000, ["Inflation-fn"] = 5400, ["Inflation-year"] = 4500, ["Inflation/IN/startyear"] = 5600, ["Inflation/UK"] = 4400, ["Inflation/UK/dataset"] = 4400, ["Inflation/UK/startyear"] = 4400, ["Inflation/US"] = 12000, ["Inflation/US-GDP"] = 2400, ["Inflation/US-GDP/dataset"] = 2400, ["Inflation/US-GDP/startyear"] = 2400, ["Inflation/US/dataset"] = 12000, ["Inflation/US/startyear"] = 12000, ["Inflation/fn"] = 6200, ["Inflation/year"] = 25000, ["Info"] = 7300, ["Infobox"] = 3230000, ["Infobox/Columns"] = 2400, ["Infobox/mobileviewfix.css"] = 147000, ["Infobox3cols"] = 17000, ["Infobox_AFL_biography"] = 14000, ["Infobox_Aircraft_Begin"] = 5300, ["Infobox_Aircraft_Type"] = 4700, ["Infobox_Athletics_Championships"] = 2700, ["Infobox_Australian_place"] = 15000, ["Infobox_CFL_biography"] = 2200, ["Infobox_COA_wide"] = 3200, ["Infobox_Canada_electoral_district"] = 2500, ["Infobox_Canadian_Football_League_biography"] = 5700, ["Infobox_Canadian_Football_League_biography/position"] = 5700, ["Infobox_Chinese"] = 20000, ["Infobox_Chinese/Chinese"] = 2700, ["Infobox_Chinese/Footer"] = 8700, ["Infobox_Chinese/Header"] = 8700, ["Infobox_Chinese/Korean"] = 17000, ["Infobox_Christian_leader"] = 18000, ["Infobox_French_commune"] = 38000, ["Infobox_GAA_player"] = 2700, ["Infobox_Gaelic_games_player"] = 5000, ["Infobox_German_location"] = 13000, ["Infobox_German_place"] = 14000, ["Infobox_Grand_Prix_race_report"] = 2000, ["Infobox_Greece_place"] = 2800, ["Infobox_Greek_Dimos"] = 2800, ["Infobox_Hindu_temple"] = 2400, ["Infobox_Indian_constituency"] = 4700, ["Infobox_Indian_constituency/defaultdata"] = 4700, ["Infobox_Italian_comune"] = 8100, ["Infobox_Korean_name"] = 15000, ["Infobox_Korean_name/categories"] = 15000, ["Infobox_MLB_yearly"] = 3100, ["Infobox_NASCAR_race_report"] = 2200, ["Infobox_NCAA_team_season"] = 18000, ["Infobox_NFL_biography"] = 28000, ["Infobox_NFL_player"] = 7700, ["Infobox_NFL_team_season"] = 3900, ["Infobox_NRHP"] = 72000, ["Infobox_NRHP/conv"] = 18000, ["Infobox_NRHP/locmapin2region"] = 66000, ["Infobox_Officeholder"] = 4800, ["Infobox_Olympic_event"] = 7300, ["Infobox_Olympic_event/games_text"] = 7300, ["Infobox_Paralympic_event"] = 2600, ["Infobox_Paralympic_event/games_text"] = 2600, ["Infobox_Politician"] = 2200, ["Infobox_Romanian_subdivision"] = 3200, ["Infobox_Russian_district"] = 2000, ["Infobox_Russian_inhabited_locality"] = 4500, ["Infobox_SCOTUS_case"] = 3700, ["Infobox_Site_of_Special_Scientific_Interest"] = 2000, ["Infobox_Swiss_town"] = 2800, ["Infobox_Switzerland_municipality"] = 2900, ["Infobox_Turkey_place"] = 19000, ["Infobox_U.S._county"] = 3000, ["Infobox_U.S._county/district"] = 3000, ["Infobox_UK_constituency"] = 2100, ["Infobox_UK_constituency/year"] = 2100, ["Infobox_UK_legislation"] = 3300, ["Infobox_UK_place"] = 26000, ["Infobox_UK_place/NoDialCode"] = 8000, ["Infobox_UK_place/NoPostCode"] = 3100, ["Infobox_UK_place/area"] = 2400, ["Infobox_UK_place/dist"] = 2500, ["Infobox_UK_place/local"] = 26000, ["Infobox_UK_place/styles.css"] = 26000, ["Infobox_UN_resolution"] = 2300, ["Infobox_US_Supreme_Court_case"] = 3800, ["Infobox_US_Supreme_Court_case/courts"] = 3800, ["Infobox_Wikipedia_user"] = 9800, ["Infobox_YouTube_personality"] = 2700, ["Infobox_YouTube_personality/styles.css"] = 2700, ["Infobox_academic"] = 14000, ["Infobox_aircraft_begin"] = 14000, ["Infobox_aircraft_occurrence"] = 2300, ["Infobox_aircraft_type"] = 12000, ["Infobox_airline"] = 4600, ["Infobox_airport"] = 15000, ["Infobox_airport/datatable"] = 15000, ["Infobox_album"] = 162000, ["Infobox_album/color"] = 192000, ["Infobox_album/link"] = 162000, ["Infobox_anatomy"] = 4500, ["Infobox_ancient_site"] = 5400, ["Infobox_animanga/Footer"] = 6800, ["Infobox_animanga/Header"] = 6800, ["Infobox_animanga/Print"] = 5500, ["Infobox_animanga/Video"] = 4700, ["Infobox_architect"] = 3700, ["Infobox_artist"] = 28000, ["Infobox_artist_discography"] = 5900, ["Infobox_artwork"] = 11000, ["Infobox_athlete"] = 2800, ["Infobox_automobile"] = 8400, ["Infobox_award"] = 13000, ["Infobox_badminton_player"] = 3200, ["Infobox_baseball_biography"] = 28000, ["Infobox_baseball_biography/style"] = 28000, ["Infobox_baseball_biography/styles.css"] = 28000, ["Infobox_basketball_biography"] = 21000, ["Infobox_basketball_biography/style"] = 21000, ["Infobox_basketball_club"] = 3000, ["Infobox_beauty_pageant"] = 2400, ["Infobox_bilateral_relations"] = 4400, ["Infobox_body_of_water"] = 18000, ["Infobox_book"] = 52000, ["Infobox_boxer"] = 5700, ["Infobox_bridge"] = 6000, ["Infobox_building"] = 27000, ["Infobox_character"] = 7600, ["Infobox_chess_biography"] = 3900, ["Infobox_chess_player"] = 3200, ["Infobox_church"] = 15000, ["Infobox_church/denomination"] = 15000, ["Infobox_church/font_color"] = 15000, ["Infobox_civil_conflict"] = 2400, ["Infobox_civilian_attack"] = 5500, ["Infobox_college_coach"] = 12000, ["Infobox_college_football_game"] = 2100, ["Infobox_college_sports_team_season"] = 40000, ["Infobox_college_sports_team_season/link"] = 40000, ["Infobox_college_sports_team_season/name"] = 40000, ["Infobox_college_sports_team_season/succession"] = 40000, ["Infobox_college_sports_team_season/team"] = 40000, ["Infobox_comic_book_title"] = 3000, ["Infobox_comics_character"] = 3600, ["Infobox_comics_creator"] = 3500, ["Infobox_comics_creator/styles.css"] = 3500, ["Infobox_company"] = 83000, ["Infobox_computing_device"] = 2300, ["Infobox_concert"] = 3300, ["Infobox_constituency"] = 5400, ["Infobox_country"] = 6400, ["Infobox_country/formernext"] = 6000, ["Infobox_country/imagetable"] = 5200, ["Infobox_country/multirow"] = 8300, ["Infobox_country/status_text"] = 2800, ["Infobox_country/styles.css"] = 6500, ["Infobox_country_at_games"] = 15000, ["Infobox_country_at_games/core"] = 15000, ["Infobox_country_at_games/see_also"] = 12000, ["Infobox_court_case"] = 4700, ["Infobox_court_case/images"] = 2400, ["Infobox_cricket_tournament"] = 2300, ["Infobox_cricketer"] = 32000, ["Infobox_cricketer/career"] = 32000, ["Infobox_cricketer/national_side"] = 7500, ["Infobox_criminal"] = 6400, ["Infobox_curler"] = 2600, ["Infobox_cycling_race_report"] = 4500, ["Infobox_cyclist"] = 16000, ["Infobox_dam"] = 5700, ["Infobox_designation_list"] = 20000, ["Infobox_designation_list/entry"] = 17000, ["Infobox_dim"] = 6900, ["Infobox_dim/core"] = 6900, ["Infobox_diocese"] = 3800, ["Infobox_drug"] = 9800, ["Infobox_drug/chemical_formula"] = 9800, ["Infobox_drug/data_page_link"] = 9800, ["Infobox_drug/formatATC"] = 9600, ["Infobox_drug/formatCASnumber"] = 9800, ["Infobox_drug/formatChEBI"] = 9800, ["Infobox_drug/formatChEMBL"] = 9800, ["Infobox_drug/formatChemDBNIAID"] = 9800, ["Infobox_drug/formatChemSpider"] = 9800, ["Infobox_drug/formatCompTox"] = 9800, ["Infobox_drug/formatDrugBank"] = 9800, ["Infobox_drug/formatIUPHARBPS"] = 9800, ["Infobox_drug/formatJmol"] = 9800, ["Infobox_drug/formatKEGG"] = 9800, ["Infobox_drug/formatPDBligand"] = 9100, ["Infobox_drug/formatPubChemCID"] = 9800, ["Infobox_drug/formatPubChemSID"] = 9800, ["Infobox_drug/formatUNII"] = 9800, ["Infobox_drug/legal_status"] = 10000, ["Infobox_drug/licence"] = 9800, ["Infobox_drug/maintenance_categories"] = 9800, ["Infobox_drug/non-ref-space"] = 4200, ["Infobox_drug/pregnancy_category"] = 9800, ["Infobox_drug/title"] = 9800, ["Infobox_election"] = 30000, ["Infobox_election/row"] = 30000, ["Infobox_election/shortname"] = 28000, ["Infobox_enzyme"] = 5100, ["Infobox_ethnic_group"] = 7300, ["Infobox_event"] = 5400, ["Infobox_family"] = 2100, ["Infobox_figure_skater"] = 4200, ["Infobox_film"] = 156000, ["Infobox_film/short_description"] = 152000, ["Infobox_film_awards"] = 2600, ["Infobox_film_awards/link"] = 2600, ["Infobox_film_awards/style"] = 2600, ["Infobox_food"] = 6900, ["Infobox_football_biography"] = 206000, ["Infobox_football_club"] = 27000, ["Infobox_football_club_season"] = 20000, ["Infobox_football_league"] = 2600, ["Infobox_football_league_season"] = 19000, ["Infobox_football_match"] = 5900, ["Infobox_football_tournament_season"] = 8000, ["Infobox_former_subdivision"] = 3300, ["Infobox_former_subdivision/styles.css"] = 3300, ["Infobox_galaxy"] = 2100, ["Infobox_game"] = 2600, ["Infobox_game_score"] = 3400, ["Infobox_gene"] = 13000, ["Infobox_given_name"] = 4000, ["Infobox_golfer"] = 4400, ["Infobox_golfer/highest_ranking"] = 4400, ["Infobox_government_agency"] = 10000, ["Infobox_government_cabinet"] = 2600, ["Infobox_gridiron_football_person"] = 2400, ["Infobox_gridiron_football_person/position"] = 5700, ["Infobox_gymnast"] = 3400, ["Infobox_handball_biography"] = 4900, ["Infobox_historic_site"] = 11000, ["Infobox_horseraces"] = 2600, ["Infobox_hospital"] = 6300, ["Infobox_hospital/care_system"] = 6300, ["Infobox_hospital/lists"] = 6300, ["Infobox_ice_hockey_biography"] = 20000, ["Infobox_ice_hockey_player"] = 19000, ["Infobox_ice_hockey_team"] = 3000, ["Infobox_ice_hockey_team_season"] = 2000, ["Infobox_international_football_competition"] = 5800, ["Infobox_islands"] = 8800, ["Infobox_islands/area"] = 9300, ["Infobox_islands/density"] = 9300, ["Infobox_islands/length"] = 8900, ["Infobox_islands/styles.css"] = 8800, ["Infobox_journal"] = 9700, ["Infobox_journal/Abbreviation_search"] = 9600, ["Infobox_journal/Bluebook_check"] = 9400, ["Infobox_journal/Former_check"] = 9400, ["Infobox_journal/ISO_4_check"] = 9400, ["Infobox_journal/ISSN-eISSN"] = 9500, ["Infobox_journal/Indexing_search"] = 9500, ["Infobox_journal/MathSciNet_check"] = 9400, ["Infobox_journal/NLM_check"] = 9400, ["Infobox_journal/frequency"] = 8600, ["Infobox_lake"] = 4200, ["Infobox_language"] = 9500, ["Infobox_language/family-color"] = 11000, ["Infobox_language/genetic"] = 6500, ["Infobox_language/linguistlist"] = 9500, ["Infobox_language/ref"] = 7100, ["Infobox_legislature"] = 3600, ["Infobox_library"] = 2200, ["Infobox_lighthouse"] = 2600, ["Infobox_lighthouse/light"] = 2600, ["Infobox_locomotive"] = 4900, ["Infobox_magazine"] = 7600, ["Infobox_manner_of_address"] = 3300, ["Infobox_mapframe"] = 80000, ["Infobox_martial_artist"] = 5700, ["Infobox_martial_artist/record"] = 5700, ["Infobox_medal_templates"] = 423000, ["Infobox_medical_condition"] = 10000, ["Infobox_medical_condition_(new)"] = 8200, ["Infobox_medical_details"] = 2000, ["Infobox_military_conflict"] = 22000, ["Infobox_military_installation"] = 9800, ["Infobox_military_person"] = 45000, ["Infobox_military_unit"] = 26000, ["Infobox_mine"] = 2100, ["Infobox_model"] = 2300, ["Infobox_monument"] = 2000, ["Infobox_mountain"] = 28000, ["Infobox_multi-sport_competition_event"] = 2400, ["Infobox_museum"] = 10000, ["Infobox_musical_artist"] = 121000, ["Infobox_musical_artist/color"] = 121000, ["Infobox_musical_artist/hCard_class"] = 313000, ["Infobox_musical_composition"] = 2900, ["Infobox_name"] = 7400, ["Infobox_name_module"] = 7000, ["Infobox_newspaper"] = 9700, ["Infobox_nobility"] = 2500, ["Infobox_noble"] = 7300, ["Infobox_officeholder"] = 219000, ["Infobox_officeholder/office"] = 224000, ["Infobox_official_post"] = 8100, ["Infobox_organization"] = 36000, ["Infobox_pageant_titleholder"] = 2900, ["Infobox_park"] = 7500, ["Infobox_person"] = 474000, ["Infobox_person/Wikidata"] = 4700, ["Infobox_person/height"] = 103000, ["Infobox_person/length"] = 7000, ["Infobox_person/weight"] = 66000, ["Infobox_philosopher"] = 3400, ["Infobox_planet"] = 4700, ["Infobox_play"] = 3900, ["Infobox_political_party"] = 14000, ["Infobox_power_station"] = 3000, ["Infobox_prepared_food"] = 3100, ["Infobox_professional_wrestler"] = 4300, ["Infobox_professional_wrestling_event"] = 2700, ["Infobox_protected_area"] = 14000, ["Infobox_protein_family"] = 2100, ["Infobox_publisher"] = 2400, ["Infobox_racehorse"] = 5500, ["Infobox_racing_driver"] = 3900, ["Infobox_racing_driver_series_section"] = 2000, ["Infobox_radio_station"] = 22000, ["Infobox_rail"] = 2900, ["Infobox_rail_line"] = 7300, ["Infobox_rail_service"] = 2900, ["Infobox_rail_service/doc"] = 2900, ["Infobox_reality_competition_season"] = 3500, ["Infobox_record_label"] = 4000, ["Infobox_recurring_event"] = 6400, ["Infobox_religious_biography"] = 5300, ["Infobox_religious_building"] = 12000, ["Infobox_religious_building/color"] = 17000, ["Infobox_restaurant"] = 2900, ["Infobox_river"] = 30000, ["Infobox_river/calcunit"] = 30000, ["Infobox_river/discharge"] = 30000, ["Infobox_river/row-style"] = 30000, ["Infobox_river/source"] = 30000, ["Infobox_road"] = 24000, ["Infobox_road/meta/mask/category"] = 24000, ["Infobox_road/meta/mask/country"] = 24000, ["Infobox_road/styles.css"] = 25000, ["Infobox_road_small"] = 2300, ["Infobox_rockunit"] = 6400, ["Infobox_royalty"] = 22000, ["Infobox_royalty/short_description"] = 12000, ["Infobox_rugby_biography"] = 16000, ["Infobox_rugby_biography/correct_date"] = 16000, ["Infobox_rugby_biography/depcheck"] = 15000, ["Infobox_rugby_league_biography"] = 9900, ["Infobox_rugby_league_biography/PLAYER"] = 9800, ["Infobox_rugby_team"] = 2600, ["Infobox_sailboat_specifications"] = 2300, ["Infobox_saint"] = 5000, ["Infobox_school"] = 38000, ["Infobox_school/short_description"] = 38000, ["Infobox_school_district"] = 5700, ["Infobox_school_district/styles.css"] = 5700, ["Infobox_scientist"] = 48000, ["Infobox_service_record"] = 2600, ["Infobox_settlement"] = 562000, ["Infobox_settlement/areadisp"] = 238000, ["Infobox_settlement/columns"] = 94000, ["Infobox_settlement/columns/styles.css"] = 94000, ["Infobox_settlement/densdisp"] = 437000, ["Infobox_settlement/impus"] = 82000, ["Infobox_settlement/lengthdisp"] = 169000, ["Infobox_settlement/link"] = 94000, ["Infobox_settlement/metric"] = 210000, ["Infobox_settlement/pref"] = 293000, ["Infobox_settlement/styles.css"] = 562000, ["Infobox_ship_begin"] = 41000, ["Infobox_ship_career"] = 37000, ["Infobox_ship_characteristics"] = 41000, ["Infobox_ship_class_overview"] = 4100, ["Infobox_ship_image"] = 40000, ["Infobox_shopping_mall"] = 3500, ["Infobox_short_story"] = 2400, ["Infobox_skier"] = 2500, ["Infobox_soap_character"] = 2900, ["Infobox_software"] = 14000, ["Infobox_software/simple"] = 14000, ["Infobox_song"] = 76000, ["Infobox_song/color"] = 76000, ["Infobox_song/link"] = 76000, ["Infobox_spaceflight"] = 3600, ["Infobox_spaceflight/styles.css"] = 3600, ["Infobox_sport_event"] = 2200, ["Infobox_sports_competition_event"] = 17000, ["Infobox_sports_competition_event/medalrow"] = 11000, ["Infobox_sports_league"] = 5000, ["Infobox_sports_season"] = 5400, ["Infobox_sports_team"] = 2200, ["Infobox_sportsperson"] = 106000, ["Infobox_stadium"] = 3500, ["Infobox_station"] = 55000, ["Infobox_station/doc"] = 55000, ["Infobox_station/services"] = 55000, ["Infobox_station/styles.css"] = 55000, ["Infobox_street"] = 3400, ["Infobox_swimmer"] = 9400, ["Infobox_television"] = 57000, ["Infobox_television/Short_description"] = 54000, ["Infobox_television_channel"] = 6200, ["Infobox_television_episode"] = 12000, ["Infobox_television_episode/styles.css"] = 12000, ["Infobox_television_season"] = 9500, ["Infobox_television_station"] = 3700, ["Infobox_tennis_biography"] = 10000, ["Infobox_tennis_event"] = 2500, ["Infobox_tennis_tournament_event"] = 19000, ["Infobox_tennis_tournament_year"] = 9200, ["Infobox_tennis_tournament_year/color"] = 28000, ["Infobox_tennis_tournament_year/footer"] = 28000, ["Infobox_train"] = 2300, ["Infobox_union"] = 2100, ["Infobox_university"] = 26000, ["Infobox_user"] = 2700, ["Infobox_venue"] = 18000, ["Infobox_video_game"] = 28000, ["Infobox_video_game/styles.css"] = 28000, ["Infobox_volleyball_biography"] = 5400, ["Infobox_weapon"] = 7300, ["Infobox_website"] = 7700, ["Infobox_writer"] = 39000, ["Information"] = 101000, ["Information/styles.css"] = 101000, ["Inline_block"] = 4500, ["Inprogress"] = 2400, ["Input_link"] = 32000, ["Instagram"] = 11000, ["Interlanguage_link"] = 155000, ["Interlanguage_link_multi"] = 19000, ["Internet_Archive_author"] = 19000, ["Internet_Archive_film"] = 2500, ["Intitle"] = 12000, ["Invalid_SVG"] = 3600, ["Invalid_SVG/styles.css"] = 3600, ["Iptalk"] = 17000, ["IranCensus2006"] = 47000, ["IranNCSGN"] = 3200, ["Iran_Census_2006"] = 47000, ["Irc"] = 2100, ["Irish_place_name"] = 2600, ["IsIPAddress"] = 38000, ["IsValidPageName"] = 142000, ["Is_country_in_Central_America"] = 13000, ["Is_country_in_the_Caribbean"] = 14000, ["Is_interwiki_link"] = 6100, ["Is_italic_taxon"] = 479000, ["Is_redirect"] = 27000, ["Isbn"] = 7500, ["Isfdb_name"] = 3700, ["Isfdb_title"] = 4400, ["Isnumeric"] = 210000, ["Iso2continent"] = 35000, ["Iso2country"] = 23000, ["Iso2country/article"] = 22000, ["Iso2country/data"] = 23000, ["Iso2nationality"] = 227000, ["Issubst"] = 72000, ["Isu_name"] = 2200, ["Italic_dab2"] = 5300, ["Italic_title"] = 285000, ["Italic_title_prefixed"] = 8700, ["Italics_colon"] = 3800, ["Italictitle"] = 4300, ["Ivm"] = 5700, ["Ivm/styles.css"] = 5700, ["Ivmbox"] = 123000, ["Ivory_messagebox"] = 142000, ["Module:I18n/complex_date"] = 66000, ["Module:IP"] = 131000, ["Module:IPA"] = 142000, ["Module:IPA/data"] = 128000, ["Module:IPA/styles.css"] = 114000, ["Module:IPA_symbol"] = 4800, ["Module:IPA_symbol/data"] = 4800, ["Module:IPAc-en"] = 48000, ["Module:IPAc-en/data"] = 48000, ["Module:IPAc-en/phonemes"] = 48000, ["Module:IPAc-en/pronunciation"] = 48000, ["Module:IPAddress"] = 188000, ["Module:ISO_3166"] = 1040000, ["Module:ISO_3166/data/AT"] = 2500, ["Module:ISO_3166/data/BA"] = 3400, ["Module:ISO_3166/data/CA"] = 2500, ["Module:ISO_3166/data/CN"] = 2100, ["Module:ISO_3166/data/DE"] = 14000, ["Module:ISO_3166/data/ES"] = 3600, ["Module:ISO_3166/data/FR"] = 38000, ["Module:ISO_3166/data/GB"] = 6400, ["Module:ISO_3166/data/GR"] = 3100, ["Module:ISO_3166/data/IN"] = 29000, ["Module:ISO_3166/data/IR"] = 8200, ["Module:ISO_3166/data/National"] = 1040000, ["Module:ISO_3166/data/PL"] = 6700, ["Module:ISO_3166/data/RS"] = 3200, ["Module:ISO_3166/data/RU"] = 25000, ["Module:ISO_3166/data/US"] = 85000, ["Module:ISO_639_name"] = 20000, ["Module:ISOdate"] = 66000, ["Module:Icon"] = 581000, ["Module:Icon/data"] = 581000, ["Module:If_empty"] = 3660000, ["Module:If_in_page"] = 10000, ["Module:If_preview"] = 295000, ["Module:If_preview/configuration"] = 295000, ["Module:If_preview/styles.css"] = 295000, ["Module:Import_style"] = 11000, ["Module:In_lang"] = 357000, ["Module:Indent"] = 4400, ["Module:Infobox"] = 4110000, ["Module:Infobox/dates"] = 69000, ["Module:Infobox/styles.css"] = 4360000, ["Module:Infobox3cols"] = 297000, ["Module:InfoboxImage"] = 4420000, ["Module:Infobox_body_of_water_tracking"] = 18000, ["Module:Infobox_cyclist_tracking"] = 16000, ["Module:Infobox_gene"] = 13000, ["Module:Infobox_mapframe"] = 404000, ["Module:Infobox_military_conflict"] = 22000, ["Module:Infobox_military_conflict/styles.css"] = 22000, ["Module:Infobox_multi-lingual_name"] = 20000, ["Module:Infobox_multi-lingual_name/data"] = 20000, ["Module:Infobox_power_station"] = 3000, ["Module:Infobox_road"] = 25000, ["Module:Infobox_road/browselinks"] = 25000, ["Module:Infobox_road/errors"] = 24000, ["Module:Infobox_road/length"] = 25000, ["Module:Infobox_road/locations"] = 24000, ["Module:Infobox_road/map"] = 25000, ["Module:Infobox_road/route"] = 25000, ["Module:Infobox_road/sections"] = 24000, ["Module:Infobox_television"] = 57000, ["Module:Infobox_television_disambiguation_check"] = 63000, ["Module:Infobox_television_episode"] = 12000, ["Module:Infobox_television_season_disambiguation_check"] = 9000, ["Module:Infobox_television_season_name"] = 9500, ["Module:Internet_Archive"] = 19000, ["Module:IrelandByCountyCatNav"] = 3300, ["Module:Is_infobox_in_lead"] = 377000, ["Module:Is_instance"] = 335000, ["Module:Italic_title"] = 1120000, ["Module:Italic_title2"] = 5300, } 96976089c1e9db8d200dbe641eaed9ec564df70a Module:Infobox/doc 828 84 1096 1015 2023-10-01T10:01:58Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Infobox/doc]] wikitext text/x-wiki {{High-use|3308957|all-pages = yes}} {{module rating|protected}} {{Lua|Module:Navbar|Module:Italic title}} {{Uses TemplateStyles|Module:Infobox/styles.css|Template:Hlist/styles.css|Template:Plainlist/styles.css}} '''Module:Infobox''' is a [[WP:Module|module]] that implements the {{tl|Infobox}} template. Please see the template page for usage instructions. == Tracking categories == * {{clc|Pages using infobox templates with ignored data cells}} * {{clc|Articles using infobox templates with no data rows}} * {{clc|Pages using embedded infobox templates with the title parameter}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| [[Category:Modules that add a tracking category]] [[Category:Wikipedia infoboxes]] [[Category:Infobox modules]] [[Category:Modules that check for strip markers]] }}</includeonly> 936ad219eb263a6f3293d62f667bd7b5db1059c1 Template:Infobox country 10 241 1254 540 2023-10-01T10:03:32Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Infobox_country]] wikitext text/x-wiki {{infobox |templatestyles = Template:Infobox country/styles.css | bodyclass = ib-country vcard | aboveclass = adr | above = {{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}} | {{#if:{{{conventional_long_name|}}} |<div class="fn org country-name">{{{conventional_long_name|}}}</div> }}{{#if:{{{native_name|}}}{{{name|}}} |<div class="ib-country-names"><!-- -->{{br separated entries |{{{native_name|}}} |{{#if:{{{name|}}} |<div class="ib-country-name-style fn org country-name">{{{name|}}}</div> }}}}</div> }}<!-- -->{{#ifeq:{{{micronation|}}}|yes |<span class="fn org">[[Micronation]]</span> }} }} | subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }} | image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}} |{{infobox country/imagetable |image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}} |caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }} |image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }} }} }} | data1 = {{#if:{{{national_motto|}}}{{{motto|}}} |'''Motto:&nbsp;'''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!-- -->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }} }} | class2 = anthem | data2 = {{#if:{{{national_anthem|}}}{{{anthem|}}} |'''Anthem:'''&nbsp;{{if empty|{{{national_anthem|}}}|{{{anthem|}}}}} }}{{#if:{{{anthems|}}} |'''Anthems:'''&nbsp;{{{anthems}}} }}{{#if:{{{royal_anthem|}}} | <div class="ib-country-anthem">'''[[Royal anthem]]:'''&nbsp;{{{royal_anthem}}}</div> }}{{#if:{{{flag_anthem|}}} | <div class="ib-country-anthem">'''[[Flag anthem]]:'''&nbsp;{{{flag_anthem}}}</div> }}{{#if:{{{national_march|}}} | <div class="ib-country-anthem">'''National march:'''&nbsp;{{{national_march}}}</div> }}{{#if:{{{territorial_anthem|}}} | <div class="ib-country-anthem">'''Territorial anthem:'''&nbsp;{{{territorial_anthem}}}</div> }}{{#if:{{{regional_anthem|}}} | <div class="ib-country-anthem">'''Regional anthem:'''&nbsp;{{{regional_anthem}}}</div> }}{{#if:{{{state_anthem|}}} | <div class="ib-country-anthem">'''State anthem:'''&nbsp;{{{state_anthem}}}</div> }}{{#if:{{{march|}}} | <div class="ib-country-anthem">'''March:'''&nbsp;{{{march}}}</div> }} | data3 = {{#if:{{{other_symbol|}}}{{{text_symbol|}}} |{{#if:{{{other_symbol_type|}}}{{{text_symbol_type|}}} | '''{{if empty|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}'''<br/>}}<!-- -->{{if empty|{{{other_symbol|}}}|{{{text_symbol|}}}}} }} | data4 = {{#if:{{{image_map|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_width|{{{image_map_size|}}}}}}|upright=1.15|alt={{{alt_map|{{{image_map_alt|}}}}}}|title={{{map_caption|{{{image_map_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption|{{{image_map_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption|{{{image_map_caption|}}}}}}</div>}} }} | data5 = {{#if:{{{image_map2|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map2|}}}|size={{{map2_width|{{{image_map2_size|}}}}}}|upright=1.15|alt={{{alt_map2|{{{image_map2_alt|}}}}}}|title={{{map_caption2|{{{image_map2_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption2|{{{image_map2_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption2|{{{image_map2_caption|}}}}}}</div>}} }} | label6 = Status | data6 = {{#if:{{{status|}}}|{{Infobox country/status text|status={{{status|}}}|status_text={{{status_text|}}}|empire={{{empire|}}}|year_end={{{year_end|}}}|year_exile_start={{{year_exile_start|}}}|year_exile_end={{{year_exile_end|}}} }} }} | label7 = Location | data7 = {{{loctext|}}} | label8 = {{#if:{{{capital_type|}}} | {{{capital_type}}} | Capital }}{{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital |capital<!-- -->|{{#switch:{{{capital}}} | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital | {{{largest_city|}}}{{{largest_settlement|}}} = capital | not capital }}<!-- -->}}|capital <!-- (#ifeq:)-->|<!------------------------------------------ capital is largest_city/_settlement: ------------------------------------------- --><div class="ib-country-largest">and {{{largest_settlement_type|largest city}}}</div> }} | data8 = {{#if:{{{capital|}}}|{{{capital}}}{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} | rowclass9 = {{#if:{{{capital|}}}|mergedrow}} | label9 = Capital-in-exile | data9 = {{#ifexist:{{{capital_exile|}}}|[[{{{capital_exile|}}}]]|{{{capital_exile|}}}}} | rowclass10 = {{#if:{{{capital|}}}|mergedrow}} | label10 = {{#if:{{{admin_center_type|}}}| {{{admin_center_type}}} | Administrative&nbsp;center }} | data10 = {{#switch:{{{admin_center|}}} |capital | = |[[{{{capital|}}}]] = |{{{capital|}}} = |#default = {{{admin_center}}}{{#if:{{{capital|}}}||{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} }} | rowclass11 = {{#if:{{{capital|}}}{{{admin_center|}}}|mergedbottomrow}} | label11 = Largest {{{largest_settlement_type|city}}} | data11 = {{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital |capital<!-- -->|{{#switch:{{{capital}}} | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital | {{{largest_city|}}}{{{largest_settlement|}}} = capital | not capital }}<!-- -->}}|capital <!-- (#ifeq:)-->|<!-- nothing already appears above --> | {{if empty| {{{largest_city|}}} | {{{largest_settlement|}}} }} }} | rowclass12 = mergedtoprow | label12 = Official&nbsp;languages | data12 = {{{official_languages|}}} | rowclass13 = mergedrow | label13 = <span class="ib-country-lang">{{#if:{{{recognized_languages|}}}|Recognized|Recognised}}&nbsp;languages</span> | data13 = {{if empty| {{{recognized_languages|}}} | {{{recognised_languages|}}} }} | rowclass14 = mergedrow | label14 = <span class="ib-country-lang">{{#if:{{{recognized_national_languages|}}}|Recognized|Recognised}} national&nbsp;languages</span> | data14 = {{if empty| {{{recognized_national_languages|}}} | {{{recognised_national_languages|}}} | {{{national_languages|}}} }} | rowclass15 = mergedrow | label15 = <span class="ib-country-lang">{{#if:{{{recognized_regional_languages|}}}|Recognized|Recognised}} regional&nbsp;languages</span> | data15 = {{if empty| {{{recognized_regional_languages|}}} | {{{recognised_regional_languages|}}} | {{{regional_languages|}}} }} | label16 = Common&nbsp;languages | data16 = {{{common_languages|}}} | rowclass17 = {{#ifeq:{{{languages2_sub|}}}|yes |{{#ifeq:{{{languages_sub|}}}|yes |mergedrow}} |{{#ifeq:{{{languages_sub|}}}|yes |mergedbottomrow}} }} | label17 ={{#ifeq:{{{languages_sub|}}}|yes |<div class="ib-country-lang">{{if empty| {{{languages_type|}}} | Other&nbsp;languages }}</div> |{{if empty| {{{languages_type|}}} | Other&nbsp;languages }} }} | data17 = {{{languages|}}} | rowclass18 = {{#ifeq:{{{languages2_sub|}}}|yes |mergedbottomrow}} | label18 = {{#ifeq:{{{languages2_sub|}}}|yes |<div class="ib-country-lang">{{if empty|{{{languages2_type|}}} | Other&nbsp;languages }}</div> |{{if empty|{{{languages2_type|}}} | Other&nbsp;languages }} }} | data18 = {{{languages2|}}} | label19 = [[Ethnic group|Ethnic&nbsp;groups]] <!-- -->{{#if:{{{ethnic_groups_year|}}} |<div class="ib-country-ethnic"> ({{{ethnic_groups_year}}}){{{ethnic_groups_ref|}}}</div>|<div class="ib-country-ethnic">{{{ethnic_groups_ref|}}}</div>}} | data19 = {{{ethnic_groups|}}} | label20 = Religion <!-- -->{{#if:{{{religion_year|}}} |<div class="ib-country-religion"> ({{{religion_year}}}){{{religion_ref|}}}</div>|<div class="ib-country-religion">{{{religion_ref|}}}</div>}} | data20 = {{{religion|}}} | label21 = [[Demonym|Demonym(s)]] | data21 = {{#if:{{{demonym|}}} |{{#ifexist:{{{demonym}}} people | [[{{{demonym}}} people|{{{demonym}}}]] | {{{demonym}}} }} }} | label22 = Type | data22 = {{{org_type|}}} | label23 = {{if empty|{{{membership_type|}}} | Membership }} | data23 = {{{membership|}}} | label24 = {{#if:{{{government_type|}}} | {{#if:{{{politics_link|}}} | [[{{{politics_link}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!-- -->| {{#ifexist:Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!-- -->| {{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}<!-- -->}}<!-- -->}}<!-- -->}} | data24 = {{{government_type|}}} | header25 = {{#if:{{{government_type|}}} || {{#if:{{{leader_title1|}}}{{{leader_name1|}}} | {{#if:{{{name|}}}{{{membership|}}} | <!--template being used for geopolitical org:-->Leaders | <!--template being used for country/territory: -->Government }} }} }} | rowclass26 = mergedrow | data26 = {{#if:{{{leader_name1|}}}|{{Infobox country/multirow|{{{leader_title1|}}} |{{{leader_name1|}}} |{{{leader_title2|}}} |{{{leader_name2|}}} |{{{leader_title3|}}} |{{{leader_name3|}}} |{{{leader_title4|}}} |{{{leader_name4|}}} |{{{leader_title5|}}} |{{{leader_name5|}}} |{{{leader_title6|}}} |{{{leader_name6|}}} |{{{leader_title7|}}} |{{{leader_name7|}}} |{{{leader_title8|}}} |{{{leader_name8|}}} |{{{leader_title9|}}} |{{{leader_name9|}}} |{{{leader_title10|}}} |{{{leader_name10|}}} |{{{leader_title11|}}} |{{{leader_name11|}}} |{{{leader_title12|}}} |{{{leader_name12|}}} |{{{leader_title13|}}} |{{{leader_name13|}}} |{{{leader_title14|}}} |{{{leader_name14|}}} |{{{leader_title15|}}} |{{{leader_name15|}}} }} }} | rowclass27 = mergedrow | label27 = {{#if:{{{title_leader|}}}| {{{title_leader}}} }} | data27 = {{#if:{{{title_leader|}}}|&nbsp;}} | rowclass28 = mergedrow | data28 = {{#if:{{{year_leader1|}}} | {{Infobox country/multirow|{{{year_leader1|}}} |{{{leader1|}}} |{{{year_leader2|}}} |{{{leader2|}}} |{{{year_leader3|}}} |{{{leader3|}}} |{{{year_leader4|}}} |{{{leader4|}}} |{{{year_leader5|}}} |{{{leader5|}}} |{{{year_leader6|}}} |{{{leader6|}}} |{{{year_leader7|}}} |{{{leader7|}}} |{{{year_leader8|}}} |{{{leader8|}}} |{{{year_leader9|}}} |{{{leader9|}}} |{{{year_leader10|}}} |{{{leader10|}}} |{{{year_leader11|}}} |{{{leader11|}}}|{{{year_leader12|}}} |{{{leader12|}}}|{{{year_leader13|}}} |{{{leader13|}}}|{{{year_leader14|}}} |{{{leader14|}}}|{{{year_leader15|}}} |{{{leader15|}}} }} }} | rowclass29 = mergedrow | label29 = {{#if:{{{title_representative|}}}| {{{title_representative}}} }} | data29 = {{#if:{{{title_representative|}}}|&nbsp;}} | rowclass30 = mergedrow | data30 = {{#if:{{{year_representative1|}}}|{{Infobox country/multirow|{{{year_representative1|}}} |{{{representative1|}}} |{{{year_representative2|}}} |{{{representative2|}}} |{{{year_representative3|}}} |{{{representative3|}}} |{{{year_representative4|}}} |{{{representative4|}}} |{{{year_representative5|}}} |{{{representative5|}}}|{{{year_representative6|}}} |{{{representative6|}}}|{{{year_representative7|}}} |{{{representative7|}}}|{{{year_representative8|}}} |{{{representative8|}}} }} }} | rowclass31 = mergedrow | label31 = {{#if:{{{title_deputy|}}}|{{{title_deputy}}} }} | data31 = {{#if:{{{title_deputy|}}}|&nbsp;}} | rowclass32 = mergedrow | data32 = {{#if:{{{year_deputy1|}}}|{{Infobox country/multirow|{{{year_deputy1|}}} |{{{deputy1|}}} |{{{year_deputy2|}}} |{{{deputy2|}}} |{{{year_deputy3|}}} |{{{deputy3|}}} |{{{year_deputy4|}}} |{{{deputy4|}}} |{{{year_deputy5|}}} |{{{deputy5|}}} |{{{year_deputy6|}}} |{{{deputy6|}}}|{{{year_deputy7|}}} |{{{deputy7|}}}|{{{year_deputy8|}}} |{{{deputy8|}}}|{{{year_deputy9|}}} |{{{deputy9|}}}|{{{year_deputy10|}}} |{{{deputy10|}}}|{{{year_deputy11|}}} |{{{deputy11|}}}|{{{year_deputy12|}}} |{{{deputy12|}}}|{{{year_deputy13|}}} |{{{deputy13|}}}|{{{year_deputy14|}}} |{{{deputy14|}}}|{{{year_deputy15|}}} |{{{deputy15|}}} }} }} | label40 = Legislature | data40 = {{{legislature|}}} | rowclass41 = mergedrow | label41 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{type_house1|}}}|{{{type_house1}}}|[[Upper house]]}}</div> | data41 = {{{upper_house|{{{house1|}}}}}} | rowclass42 = mergedbottomrow | label42 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{type_house2|}}}|{{{type_house2}}}|[[Lower house]]}}</div> | data42 = {{{lower_house|{{{house2|}}}}}} | rowclass43 = {{#if:{{{established_event1|}}} |mergedtoprow}} | header43 = {{#if:{{{established_event1|}}}{{{sovereignty_type|}}} |{{#if:{{{sovereignty_type|}}} | {{{sovereignty_type}}}<!-- -->{{#if:{{{sovereignty_note|}}} |&nbsp;<div class="ib-country-sovereignty">{{{sovereignty_note}}}</div>}} | {{#if:{{{established|}}}| | Establishment }} }} }} | label44 = Establishment | data44 = {{#if:{{{sovereignty_type|}}} | |{{{established|}}} }} | label45 = {{#if:{{{era|}}}|Historical era|History}} | data45 = {{#if:{{{era|}}} |{{#ifexist:{{{era|}}}|[[{{{era}}}]]|{{{era}}}}} | {{#if:{{{date_start|}}}{{{year_start|}}}|&nbsp;}}}} | rowclass46 = {{#if:{{{established_event1|}}} |mergedrow |mergedbottomrow}} | data46 = {{#if:{{{established_date1|}}}|{{Infobox country/multirow |{{{established_event1|}}} |{{{established_date1||}}} |{{{established_event2|}}} |{{{established_date2||}}} |{{{established_event3|}}} |{{{established_date3|}}} |{{{established_event4|}}} |{{{established_date4|}}} |{{{established_event5|}}} |{{{established_date5|}}} |{{{established_event6|}}} |{{{established_date6|}}} |{{{established_event7|}}} |{{{established_date7|}}} |{{{established_event8|}}} |{{{established_date8|}}} |{{{established_event9|}}} |{{{established_date9|}}} |{{{established_event10|}}} |{{{established_date10|}}} |{{{established_event11|}}} |{{{established_date11|}}} |{{{established_event12|}}} |{{{established_date12|}}} |{{{established_event13|}}} |{{{established_date13|}}} |{{{established_event14|}}} |{{{established_date14|}}} |{{{established_event15|}}} |{{{established_date15|}}} |{{{established_event16|}}} |{{{established_date16|}}} |{{{established_event17|}}} |{{{established_date17|}}} |{{{established_event18|}}} |{{{established_date18|}}} |{{{established_event19|}}} |{{{established_date19|}}} |{{{established_event20|}}} |{{{established_date20|}}} }} }} | rowclass47 = {{#if:{{{date_start|}}}{{{year_start|}}} |mergedrow |mergedbottomrow}} | data47 = {{#if:{{{date_start|}}}{{{year_start|}}}|{{Infobox country/multirow |{{{event_pre|}}} |{{{date_pre|}}} |{{if empty|{{{event_start|}}}|Established}} |{{{date_start|}}} {{{year_start|}}} |{{{event1|}}} |{{{date_event1|}}} |{{{event2|}}} |{{{date_event2|}}} |{{{event3|}}} |{{{date_event3|}}} |{{{event4|}}} |{{{date_event4|}}} |{{{event5|}}} |{{{date_event5|}}} |{{{event6|}}} |{{{date_event6|}}}|{{{event7|}}} |{{{date_event7|}}}|{{{event8|}}} |{{{date_event8|}}}|{{{event9|}}} |{{{date_event9|}}}|{{{event10|}}} |{{{date_event10|}}} |{{if empty|{{{event_end|}}}|Disestablished}} |{{{date_end|}}} {{{year_end|}}} |{{{event_post|}}} |{{{date_post|}}} }} }} | rowclass60 = mergedtoprow | header60 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}} | {{#if:{{{area_link|}}} | [[{{{area_link}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]] | {{#ifexist:Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]] | Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}<!-- -->}}<!-- -->}} }} | rowclass61 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label61 = <div class="ib-country-fake-li">•&nbsp;{{{area_label|Total}}}{{{FR_foot4|}}}</div> | data61 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}} |{{#if:{{{area_km2|}}}{{{area_sq_mi|}}} |{{convinfobox|{{{area_km2|}}}|km2|{{{area_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_ha|}}}{{{area_acre|}}} |{{convinfobox|{{{area_ha|}}}|ha|{{{area_acre|}}}|acre|abbr=on}} }} }}{{{area_footnote|}}}{{#if:{{{area_rank|}}} |&#32;([[List of countries and dependencies by area|{{{area_rank}}}]]) }} }} | rowclass62 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label62 = <div class="ib-country-fake-li">•&nbsp;Land</div> | data62 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}} |{{#if:{{{area_land_km2|}}}{{{area_land_sq_mi|}}} |{{convinfobox|{{{area_land_km2|}}}|km2|{{{area_land_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_land_ha|}}}{{{area_land_acre|}}} |{{convinfobox|{{{area_land_ha|}}}|ha|{{{area_land_acre|}}}|acre|abbr=on}} }} }}{{{area_land_footnote|}}} }} | rowclass63 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label63 = <div class="ib-country-fake-li">•&nbsp;Water</div> | data63 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}} |{{#if:{{{area_water_km2|}}}{{{area_water_sq_mi|}}} |{{convinfobox|{{{area_water_km2|}}}|km2|{{{area_water_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_water_ha|}}}{{{area_water_acre|}}} |{{convinfobox|{{{area_water_ha|}}}|ha|{{{area_water_acre|}}}|acre|abbr=on}} }} }}{{{area_water_footnote|}}} }} | rowclass64 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label64 = <div class="ib-country-fake-li">•&nbsp;Water&nbsp;(%)</div> | data64 = {{{percent_water|}}} | rowclass65 = {{#if:{{{FR_metropole|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label65 = <div class="ib-country-fake-li">•&nbsp;{{{area_label2|}}}</div> | data65 = {{#if:{{{area_label2|}}}| {{{area_data2|}}} }} | rowclass66 = {{#if:{{{FR_metropole|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label66 = <div class="ib-country-fake-li">•&nbsp;{{{area_label3|}}}</div> | data66 = {{#if:{{{area_label3|}}}| {{{area_data3|}}} }} | rowclass67 = {{#if:{{{FR_metropole|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label67 = {{{stat_year1|}}}{{{ref_area1|}}} | data67 = {{#if: {{{stat_area1|}}} | {{convinfobox|{{{stat_area1|}}}|km2||sqmi}} }} | rowclass68 = {{#if:{{{FR_metropole|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label68 = {{{stat_year2|}}}{{{ref_area2|}}} | data68 = {{#if: {{{stat_area2|}}} | {{convinfobox|{{{stat_area2|}}}|km2||sqmi}} }} | rowclass69 = {{#if:{{{FR_metropole|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label69 = {{{stat_year3|}}}{{{ref_area3|}}} | data69 = {{#if: {{{stat_area3|}}} | {{convinfobox|{{{stat_area3|}}}|km2||sqmi}} }} | rowclass70 = {{#if:{{{FR_metropole|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label70 = {{{stat_year4|}}}{{{ref_area4|}}} | data70 = {{#if: {{{stat_area4|}}} | {{convinfobox|{{{stat_area4|}}}|km2||sqmi}} }} | rowclass71 = {{#if:{{{FR_metropole|}}}|mergedrow|mergedbottomrow}} | label71 = {{{stat_year5|}}}{{{ref_area5|}}} | data71 = {{#if: {{{stat_area5|}}} | {{convinfobox|{{{stat_area5|}}}|km2||sqmi}} }} | rowclass72 = mergedrow | label72 = <div class="ib-country-fake-li">•&nbsp;{{{FR_metropole}}}</div> | data72 = {{#if:{{{FR_metropole|}}}| <nowiki /> }} | rowclass73 = mergedrow | label73 = <div class="ib-country-fake-li2">•&nbsp;[[Institut Géographique National|IGN]]{{{FR_foot2|}}}</div> | data73 = {{#if:{{{FR_metropole|}}} |{{#if:{{{FR_IGN_area_km2|}}}{{{FR_IGN_area_sq_mi|}}} |{{convinfobox|{{{FR_IGN_area_km2|}}}|km2|{{{FR_IGN_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_IGN_area_rank|}}}|&#32;([[List of countries and dependencies by area|{{{FR_IGN_area_rank|}}}]])}} }} }} | rowclass89 = mergedbottomrow | label89 = <div class="ib-country-fake-li2">•&nbsp;[[Cadastre]]{{{FR_foot3|}}}</div> | data89 = {{#if:{{{FR_metropole|}}} |{{#if:{{{FR_cadastre_area_km2|}}}{{{FR_cadastre_area_sq_mi|}}} | {{convinfobox|{{{FR_cadastre_area_km2|}}}|km2|{{{FR_cadastre_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_cadastre_area_rank|}}}|&#32;([[List of countries and dependencies by area|{{{FR_cadastre_area_rank|}}}]])}} }} }} | rowclass90 = mergedtoprow | header90 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}} |{{#if:{{{population_link|}}} | {{#ifeq:{{{population_link}}}|no|Population|[[{{{population_link}}}|Population]]}}<!-- -->| {{#ifexist:Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Population]]<!-- -->| Population<!-- -->}}<!-- -->}} }} | rowclass91 = mergedrow | label91 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{population_estimate_year|}}} |{{{population_estimate_year}}} estimate|Estimate}}</div> | data91 = {{#if:{{{population_estimate|}}} |{{{population_estimate}}}<!-- -->{{#if:{{{population_estimate_rank|}}} |&#32;([[List of countries and dependencies by population|{{{population_estimate_rank}}}]])}} }} | rowclass92 = mergedrow | label92= <div class="ib-country-fake-li">•&nbsp;{{{population_label2|}}}</div> | data92= {{#if:{{{population_label2|}}}|{{{population_data2|}}}}} | rowclass93= mergedrow | label93= <div class="ib-country-fake-li">•&nbsp;{{{population_label3|}}}</div> | data93= {{#if:{{{population_label3|}}}|{{{population_data3|}}}}} | rowclass94= mergedrow | data94= {{#if:{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}|{{infobox country/multirow|{{{stat_year1|}}}{{{ref_pop1|}}} |{{{stat_pop1|}}}|{{{stat_year2|}}}{{{ref_pop2|}}} |{{{stat_pop2|}}}|{{{stat_year3|}}}{{{ref_pop3|}}} |{{{stat_pop3|}}}|{{{stat_year4|}}}{{{ref_pop4|}}} |{{{stat_pop4|}}}|{{{stat_year5|}}}{{{ref_pop5|}}} |{{{stat_pop5|}}} }} }} | rowclass95= mergedrow | label95= <div class="ib-country-fake-li">•&nbsp;{{#if:{{{population_census_year|}}} |{{{population_census_year}}}&nbsp;census|Census}}</div> | data95= {{#if:{{{population_census|}}} |{{{population_census}}}<!-- -->{{#if:{{{population_census_rank|}}} |&#32;([[List of countries and dependencies by population|{{{population_census_rank}}}]])}} }} | rowclass96= mergedrow | label96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|{{nobold|1=&nbsp;({{{FR_total_population_estimate_year}}})}}}}}} | data96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|<nowiki />}}}} | rowclass97 = mergedrow | label97= <div class="ib-country-fake-li">•&nbsp;Total{{{FR_foot|}}}</div> | data97= {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate|}}} |{{{FR_total_population_estimate}}}{{#if:{{{FR_total_population_estimate_rank|}}}|&#32;([[List of countries by population in 2005|{{{FR_total_population_estimate_rank}}}]])}} }} }} | rowclass98 = mergedrow | label98= <div class="ib-country-fake-li">•&nbsp;{{{FR_metropole}}}</div> | data98= {{#if:{{{FR_metropole_population|}}}|{{{FR_metropole_population}}}{{#if:{{{FR_metropole_population_estimate_rank|}}} |&#32;([[List of countries by population in 2005|{{{FR_metropole_population_estimate_rank}}}]])}} }} | rowclass99 = mergedbottomrow | label99= <div class="ib-country-fake-li">•&nbsp;Density{{{FR_foot5|}}}</div> | data99= {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}} | {{convinfobox|{{{population_density_km2|}}}|/km2|{{{population_density_sq_mi|}}}|/sqmi|1|abbr=on}}{{{pop_den_footnote|}}}<!-- -->{{#if:{{{population_density_rank|}}} |&#32;([[List of countries and dependencies by population density|{{{population_density_rank}}}]])}} }} | rowclass100 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}|mergedbottomrow|mergedtoprow}} | label100 = Membership | data100= {{{nummembers|}}} | rowclass101= mergedtoprow | label101= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&nbsp;{{nobold|([[Purchasing power parity|PPP]])}} | data101= {{#if:{{{GDP_PPP|}}}{{{GDP_PPP_per_capita|}}} |{{#if:{{{GDP_PPP_year|}}} |{{{GDP_PPP_year}}}&nbsp;}}estimate }} | rowclass102= mergedrow | label102= <div class="ib-country-fake-li">•&nbsp;Total</div> | data102= {{#if:{{{GDP_PPP|}}} |{{{GDP_PPP}}}<!-- -->{{#if:{{{GDP_PPP_rank|}}} |&#32;([[List of countries by GDP (PPP)|{{{GDP_PPP_rank}}}]])}} }} | rowclass103= mergedbottomrow | label103= <div class="ib-country-fake-li">•&nbsp;Per capita</div> | data103= {{#if:{{{GDP_PPP_per_capita|}}} |{{{GDP_PPP_per_capita}}}<!-- -->{{#if:{{{GDP_PPP_per_capita_rank|}}} |&#32;([[List of countries by GDP (PPP) per capita|{{{GDP_PPP_per_capita_rank}}}]])}} }} | rowclass104= mergedtoprow | label104= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&nbsp;{{nobold|(nominal)}} | data104= {{#if:{{{GDP_nominal|}}}{{{GDP_nominal_per_capita|}}} |{{#if:{{{GDP_nominal_year|}}} |{{{GDP_nominal_year}}}&nbsp;}}estimate }} | rowclass105= mergedrow | label105= <div class="ib-country-fake-li">•&nbsp;Total</div> | data105= {{#if:{{{GDP_nominal|}}} |{{{GDP_nominal}}}<!-- -->{{#if:{{{GDP_nominal_rank|}}} |&#32;([[List of countries by GDP (nominal)|{{{GDP_nominal_rank}}}]])}} }} | rowclass106= mergedbottomrow | label106= <div class="ib-country-fake-li">•&nbsp;Per capita</div> | data106= {{#if:{{{GDP_nominal_per_capita|}}} | {{{GDP_nominal_per_capita}}}<!-- -->{{#if:{{{GDP_nominal_per_capita_rank|}}} |&#32;([[List of countries by GDP (nominal) per capita|{{{GDP_nominal_per_capita_rank}}}]])}} }} | label107= [[Gini_coefficient|Gini]]{{#if:{{{Gini_year|}}} |&nbsp;{{nobold|1=({{{Gini_year}}})}}}} | data107= {{#if:{{{Gini|}}} | {{#switch:{{{Gini_change|}}} |increase = {{increaseNegative}}&nbsp;<!-- -->|decrease = {{decreasePositive}}&nbsp;<!-- -->|steady = {{steady}}&nbsp;<!-- -->}}{{{Gini}}}{{{Gini_ref|}}}<br/><!-- ---------Evaluate and add Gini category:---------- -->{{nowrap|1=<!-- -->{{#iferror:<!-- -->{{#ifexpr:{{{Gini}}}>100 <!-- -->| {{error|Error: Gini value above 100}}<!--Handled by outer #iferror, not visible to users--><!-- -->| {{#ifexpr:{{{Gini}}}>=60 |{{color|red|very high}}<!-- -->| {{#ifexpr:{{{Gini}}}>=46 <!-- -->| {{color|darkred|high}}<!-- -->| {{#ifexpr:{{{Gini}}}>=30 <!-- -->| {{color|orange|medium}}<!-- -->| {{#ifexpr:{{{Gini}}}>=0 <!-- -->| {{color|forestgreen|low}}<!-- -->| {{error|Error:Gini value below 0}}<!--Handled by outer #iferror, not visible to users--><!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->| {{error|Error: Invalid Gini value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!-- -->}}<!-- -->}}<!-- -----------Add Gini_rank (if supplied):---------- -->{{#if:{{{Gini_rank|}}} |&nbsp;·&nbsp;[[List of countries by income equality|{{{Gini_rank}}}]]<!-- -->}}<!-- -->}} | label108= [[Human Development Index|HDI]]{{#if:{{{HDI_year|}}} |&nbsp;{{nobold|1=({{{HDI_year}}})}}}} | data108= {{#if:{{{HDI|}}} | {{#switch:{{{HDI_change|}}} |increase = {{increase}}&nbsp;<!-- -->|decrease = {{decrease}}&nbsp;<!-- -->|steady = {{steady}}&nbsp;<!-- -->}}{{{HDI}}}{{{HDI_ref|}}}<br/><!-- ---------Evaluate and add HDI category:--------- -->{{nowrap|1=<!-- -->{{#iferror:<!-- -->{{#ifexpr:{{{HDI}}}>1 <!-- -->| {{error|Error: HDI value greater than 1}}<!--Handled by outer #iferror, not visible to users--><!-- -->| {{#ifexpr:{{{HDI}}}>0.799 <!-- -->| {{color|darkgreen|very high}}<!-- -->| {{#ifexpr:{{{HDI}}}>0.699 <!-- -->| {{color|forestgreen|high}}<!-- -->| {{#ifexpr:{{{HDI}}}>0.549 <!-- -->| {{color|orange|medium}}<!-- -->| {{#ifexpr:{{{HDI}}}>=0.000<!-- -->| {{color|red|low}}<!-- -->| {{error|Error: HDI value less than 0}}<!--Handled by outer #iferror, not visible to users--><!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->| {{error|Error: Invalid HDI value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!-- -->}}<!-- -->}}<!-- ----------Add HDI_rank (if supplied):----------- -->{{#if:{{{HDI_rank|}}} |&nbsp;·&nbsp;[[List of countries by Human Development Index|{{{HDI_rank}}}]]<!-- -->}}<!-- -->}} | label109= {{#ifeq:{{{micronation|}}}|yes|Purported currency|Currency}} | data109= {{#if:{{{currency|}}} | {{{currency}}} {{#if:{{{currency_code|}}} |([[ISO 4217|{{{currency_code}}}]])}} }} | rowclass119= {{#if:{{{utc_offset_DST|}}}{{{DST_note|}}} |mergedtoprow}} | label119= Time zone | data119= {{#if:{{{utc_offset|}}} |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset}}}}} {{#if:{{{time_zone|}}}|({{{time_zone}}})}} |{{{time_zone|}}} }} | rowclass120= {{#if:{{{DST_note|}}} |mergedrow |mergedbottomrow}} | label120= <div class="ib-country-fake-li">•&nbsp;Summer&nbsp;([[Daylight saving time|DST]])</div> | data120= {{#if:{{{utc_offset_DST|}}} |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset_DST}}}}} {{#if:{{{time_zone_DST|}}}|({{{time_zone_DST}}})|{{#if:{{{DST|}}}|({{{DST}}})}}}} |{{#if:{{{time_zone_DST|}}}|{{{time_zone_DST}}}|{{{DST|}}}}} }} | rowclass121= mergedbottomrow | label121= <nowiki /> | data121= {{{DST_note|}}} | label122 = [[Antipodes]] | data122= {{{antipodes|}}} | label123 = Date format | data123= {{{date_format|}}} | label125= [[Left- and right-hand traffic|Driving side]] | data125= {{#if:{{{drives_on|}}} | {{lcfirst:{{{drives_on}}}}} }} | label126= {{#if:{{{calling_code|}}} |{{#ifexist:Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Calling code]] | Calling code }} }} | data126= {{{calling_code|}}} | label127= [[ISO 3166|ISO 3166 code]] | data127= {{#switch:{{{iso3166code|}}} |omit = <!--(do nothing)--> | = <!--if iso3166code is not supplied: -->{{#if:{{{common_name|}}} | {{#if:{{ISO 3166 code|{{{common_name}}}|nocat=true}} | [[ISO 3166-2:{{ISO 3166 code|{{{common_name}}}}}|{{ISO 3166 code|{{{common_name}}}}}]] }} }} |#default = [[ISO 3166-2:{{uc:{{{iso3166code}}}}}|{{uc:{{{iso3166code}}}}}]] }} | label128= [[Country code top-level domain|Internet TLD]] | data128= {{{cctld|}}} | data129 = {{#if:{{{official_website|}}} |<div class="ib-country-website">'''Website'''<br/>{{{official_website}}}</div> }} | data130= {{#if:{{{image_map3|{{{location_map|}}}}}} | {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map3|{{{location_map|}}}}}}|size={{{map3_width|}}}|upright=1.15|alt={{{alt_map3|}}}|title=Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption3|}}}|<div class="ib-country-map-caption3">{{{map_caption3|}}}</div>}} }} | data134 = {{#if:{{{p1|}}}{{{s1|}}} |{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}}} }} | label135 = Today part of | data135 = {{{today|}}} | data136 = {{#if:{{{footnote_a|}}}{{{footnote_b|}}}{{{footnote_c|}}}{{{footnote_d|}}}{{{footnote_e|}}}{{{footnote_f|}}}{{{footnote_g|}}}{{{footnote_h|}}} |<div class="ib-country-fn"><ol class="ib-country-fn-alpha"> {{#if:{{{footnote_a|}}}|<li value=1>{{{footnote_a|}}}</li> }}{{#if:{{{footnote_b|}}}|<li value=2>{{{footnote_b|}}}</li> }}{{#if:{{{footnote_c|}}}|<li value=3>{{{footnote_c|}}}</li> }}{{#if:{{{footnote_d|}}}|<li value=4>{{{footnote_d|}}}</li> }}{{#if:{{{footnote_e|}}}|<li value=5>{{{footnote_e|}}}</li> }}{{#if:{{{footnote_f|}}}|<li value=6>{{{footnote_f|}}}</li> }}{{#if:{{{footnote_g|}}}|<li value=7>{{{footnote_g|}}}</li> }}{{#if:{{{footnote_h|}}}|<li value=8>{{{footnote_h|}}}</li>}} </ol></div>}} | data137 = {{#if:{{{footnote1|}}}{{{footnote2|}}}{{{footnote3|}}}{{{footnote4|}}}{{{footnote5|}}}{{{footnote6|}}}{{{footnote7|}}}{{{footnote8|}}} |<div class="ib-country-fn"><ol class="ib-country-fn-num"> {{#if:{{{footnote1|}}}|<li value=1>{{{footnote1|}}}</li> }}{{#if:{{{footnote2|}}}|<li value=2>{{{footnote2|}}}</li> }}{{#if:{{{footnote3|}}}|<li value=3>{{{footnote3|}}}</li> }}{{#if:{{{footnote4|}}}|<li value=4>{{{footnote4|}}}</li> }}{{#if:{{{footnote5|}}}|<li value=5>{{{footnote5|}}}</li> }}{{#if:{{{footnote6|}}}|<li value=6>{{{footnote6|}}}</li> }}{{#if:{{{footnote7|}}}|<li value=7>{{{footnote7|}}}</li> }}{{#if:{{{footnote8|}}}|<li value=8>{{{footnote8|}}}</li>}} </ol></div>}} | data138 = {{#if:{{{footnotes|}}}|<div class="ib-country-fn">{{{footnotes}}}{{#if:{{{footnotes2|}}}|<br>{{{footnotes2}}}}}</div>}} | belowclass = mergedtoprow noprint | below = {{#if:{{{navbar|}}}| {{navbar|{{{navbar|}}}}} }} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox country with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox country]] with unknown parameter "_VALUE_"|ignoreblank=y| admin_center_type | admin_center | alt_coat | alt_flag | alt_flag2 | alt_map | alt_map2 | alt_map3 | alt_symbol | anthem | anthems | antipodes | area_acre | area_data2 | area_data3 | area_footnote | area_ha | area_km2 | area_label | area_label2 | area_label3 | area_land_acre | area_land_footnote | area_land_ha | area_land_km2 | area_land_sq_mi | area_link | area_rank | area_sq_mi | area_water_acre | area_water_footnote | area_water_ha | area_water_km2 | area_water_sq_mi | border_p1 | border_p2 | border_p3 | border_p4 | border_p5 | border_p6 | border_p7 | border_p8 | border_p9 | border_p10 | border_p11 | border_p12 | border_p13 | border_p14 | border_p15 | border_p16 | border_p17 | border_p18 | border_p19 | border_p20| border_p21 | border_s1 | border_s2 | border_s3 | border_s4 | border_s5 | border_s6 | border_s7 | border_s8 | border_s9 | border_s10 | border_s11 | border_s12 | border_s13 | border_s14 | border_s15 | border_s16 | border_s17 | border_s18 | border_s19 | border_s20 | border_s21 | calling_code | capital_exile | capital_type | capital | cctld | coa_size | coat_alt | common_languages | common_name | conventional_long_name | coordinates | currency_code | currency | date_end | date_event1 | date_event2 | date_event3 | date_event4 | date_event5 | date_event6 | date_event7 | date_event8 | date_event9 | date_event10 | date_format | date_post | date_pre | date_start | demonym | deputy1 | deputy2 | deputy3 | deputy4 | deputy5 | deputy6 | deputy7 | deputy8 | deputy9 | deputy10 | deputy11 | deputy12 | deputy13 | deputy14 | deputy15 | drives_on | DST_note | DST | empire | englishmotto | era | established_date1 | established_date2 | established_date3 | established_date4 | established_date5 | established_date6 | established_date7 | established_date8 | established_date9 | established_date10 | established_date11 | established_date12 | established_date13 | established_date14 | established_date15 | established_date16 | established_date17 | established_date18 | established_date19 | established_date20 | established_event1 | established_event2 | established_event3 | established_event4 | established_event5 | established_event6 | established_event7 | established_event8 | established_event9 | established_event10 | established_event11 | established_event12 | established_event13 | established_event14 | established_event15 | established_event16 | established_event17 | established_event18 | established_event19 | established_event20 | established | ethnic_groups_ref | ethnic_groups_year | ethnic_groups | event_end | event_post | event_pre | event_start | event1 | event2 | event3 | event4 | event5 | event6 | event7 | event8 | event9 | event10 | flag| flag_alt | flag_alt2 | flag_border | flag_caption | flag_caption | flag_p1 | flag_p2 | flag_p3 | flag_p4 | flag_p5 | flag_p6 | flag_p7 | flag_p8 | flag_p9 | flag_p10 | flag_p11 | flag_p12 | flag_p13 | flag_p14 | flag_p15 | flag_p16 | flag_p17 | flag_p18 | flag_p19 | flag_p20 | flag_p21 | flag_s1 | flag_s2 | flag_s3 | flag_s4 | flag_s5 | flag_s6 | flag_s7 | flag_s8 | flag_s9 | flag_s10 | flag_s11 | flag_s12 | flag_s13 | flag_s14 | flag_s15 | flag_s16 | flag_s17 | flag_s18 | flag_s19 | flag_s20 | flag_s21 | flag_size | flag_type | flag_type_article | flag_width | flag2_border | footnote_a | footnote_a | footnote_b | footnote_b | footnote_c | footnote_c | footnote_d | footnote_d | footnote_e | footnote_e | footnote_f | footnote_f | footnote_g | footnote_g | footnote_h | footnote_h | footnote1 | footnote1 | footnote2 | footnote2 | footnote3 | footnote3 | footnote4 | footnote4 | footnote5 | footnote5 | footnote6 | footnote6 | footnote7 | footnote7 | footnote8 | footnote8 | footnotes | footnotes2 | FR_cadastre_area_km2 | FR_cadastre_area_rank | FR_cadastre_area_sq_mi | FR_foot | FR_foot2 | FR_foot3 | FR_foot4 | FR_foot5 | FR_IGN_area_km2 | FR_IGN_area_rank | FR_IGN_area_sq_mi | FR_metropole_population_estimate_rank | FR_metropole_population | FR_metropole | FR_total_population_estimate_rank | FR_total_population_estimate_year | FR_total_population_estimate | GDP_nominal_per_capita_rank | GDP_nominal_per_capita | GDP_nominal_rank | GDP_nominal_year | GDP_nominal | GDP_PPP_per_capita_rank | GDP_PPP_per_capita | GDP_PPP_rank | GDP_PPP_year | GDP_PPP | Gini_change | Gini_rank | Gini_ref | Gini_year | Gini | government_type | HDI_change | HDI_rank | HDI_ref | HDI_year | HDI | house1 | house2 | image_coat | image_flag | image_flag2 | image_map_alt | image_map_caption | image_map_size | image_map | image_map2_alt | image_map2_caption | image_map2_size | image_map2 | image_map3 | image_p1 | image_p2 | image_p3 | image_p4 | image_p5 | image_p6 | image_p7 | image_p8 | image_p9 | image_p10 | image_p11 | image_p12 | image_p13 | image_p14 | image_p15 | image_p16 | image_p17 | image_p18 | image_p19 | image_p20 | image_p21 | image_s1 | image_s2 | image_s3 | image_s4 | image_s5 | image_s6 | image_s7 | image_s8 | image_s9 | image_s10 | image_s11 | image_s12 | image_s13 | image_s14 | image_s15 | image_s16 | image_s17 | image_s18 | image_s19 | image_s20 | image_s21 | image_symbol | iso3166code | languages_sub | languages_type | languages | languages2_sub | languages2_type | languages2 | largest_city | largest_settlement_type | largest_settlement | leader_name1 | leader_name2 | leader_name3 | leader_name4 | leader_name5 | leader_name6 | leader_name7 | leader_name8 | leader_name9 | leader_name10 | leader_name11 | leader_name12 | leader_name13 | leader_name14 | leader_name15 | leader_title1 | leader_title2 | leader_title3 | leader_title4 | leader_title5 | leader_title6 | leader_title7 | leader_title8 | leader_title9 | leader_title10 | leader_title11 | leader_title12 | leader_title13 | leader_title14 | leader_title15 | leader1 | leader2 | leader3 | leader4 | leader5 | leader6 | leader7 | leader8 | leader9 | leader10 | leader11 | leader12 | leader13 | leader14 | leader15 | legislature | life_span | linking_name | location_map | loctext | lower_house | map_caption | map_caption2 | map_caption3 | map_width | map2_width | map3_width | membership_type | membership | micronation | motto | name | national_anthem | national_languages | national_motto | native_name | navbar | nummembers | official_languages | official_website | org_type | other_symbol_type | other_symbol | p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 | p9 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p20 | p21 | patron_saint | patron_saints | percent_water | politics_link | pop_den_footnote | population_census_rank | population_census_year | population_census | population_data2 | population_data3 | population_density_km2 | population_density_rank | population_density_sq_mi | population_estimate_rank | population_estimate_year | population_estimate | population_label2 | population_label3 | population_link | recognised_languages | recognised_national_languages | recognised_regional_languages | recognized_languages | recognized_national_languages | ref_area1 | ref_area2 | ref_area3 | ref_area4 | ref_area5 | ref_pop1 | ref_pop2 | ref_pop3 | ref_pop4 | ref_pop5 | regional_languages | recognized_regional_languages | religion_ref | religion_year | religion | representative1 | representative2 | representative3 | representative4 | representative5 | representative6 | representative7 | representative8 | royal_anthem | flag_anthem | march | national_march | regional_anthem | territorial_anthem | state_anthem | s1 | s2 | s3 | s4 | s5 | s6 | s7 | s8 | s9 | s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 | s18 | s19 | s20 | s21 | sovereignty_note | sovereignty_type | stat_area1 | stat_area2 | stat_area3 | stat_area4 | stat_area5 | stat_pop1 | stat_pop2 | stat_pop3 | stat_pop4 | stat_pop5 | stat_year1 | stat_year2 | stat_year3 | stat_year4 | stat_year5 | status_text | status | symbol| symbol_type_article | symbol_type | symbol_width | text_symbol_type | text_symbol | time_zone_DST | time_zone | title_deputy | title_leader | title_representative | today | type_house1 | type_house2 | upper_house | utc_offset_DST | utc_offset | year_deputy1 | year_deputy2 | year_deputy3 | year_deputy4 | year_deputy5 | year_deputy6 | year_deputy7 | year_deputy8 | year_deputy9 | year_deputy10 | year_deputy11 | year_deputy12 | year_deputy13 | year_deputy14 | year_deputy15 | year_end | year_exile_end | year_exile_start | year_leader1 | year_leader2 | year_leader3 | year_leader4 | year_leader5 | year_leader6 | year_leader7 | year_leader8 | year_leader9 | year_leader10 | year_leader11 | year_leader12 | year_leader13 | year_leader14 | year_leader15 | year_representative1 | year_representative2 | year_representative3 | year_representative4 | year_representative5 | year_representative6 | year_representative7 | year_representative8 | year_start}}{{main other| {{#if:{{both|{{{image_coat|}}}|{{{image_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|A]] }}{{#if:{{both|{{{alt_coat|}}}|{{{alt_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|B]] }}{{#if:{{both|{{{motto|}}}|{{{national_motto|}}}}}|[[Category:Pages using infobox country with syntax problems|C]] }}{{#if:{{both|{{{national_anthem|}}}|{{{anthem|}}}}}|[[Category:Pages using infobox country with syntax problems|D]] }}{{#if:{{both|{{{other_symbol|}}}|{{{text_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|E]] }}{{#if:{{both|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}|[[Category:Pages using infobox country with syntax problems|F]] }}{{#if:{{both|{{{largest_city|}}}|{{{largest_settlement|}}}}}|[[Category:Pages using infobox country with syntax problems|G]] }}{{#if:{{both|{{{recognized_languages|}}}|{{{recognised_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|H]] }}{{#if:{{both|{{{recognized_national_languages|}}}|{{{recognised_national_languages|}}}}}{{both|{{{recognized_regional_languages|}}}|{{{recognised_regional_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|I]] }}{{#if:{{{official_languages|}}}||{{#if:{{{recognized_languages|}}}{{{recognised_languages|}}}{{{recognized_national_languages|}}}{{{recognised_national_languages|}}}{{{recognized_regional_languages|}}}{{{recognised_regional_languages|}}}|[[Category:Pages using infobox country with syntax problems|J]]}} }}{{#if:{{both|{{{area_km2|}}}|{{{area_ha|}}}}}{{both|{{{area_land_km2|}}}|{{{area_land_ha|}}}}}{{both|{{{area_water_km2|}}}|{{{area_water_ha|}}}}}|[[Category:Pages using infobox country with syntax problems|K]] }}{{#if:{{both|{{{DST|}}}|{{{time_zone_DST|}}}}}|[[Category:Pages using infobox country with syntax problems|L]] }}{{#if:{{{time_zone|}}}{{{utc_offset|}}}||{{#if:{{{time_zone_DST|}}}{{{utc_offset_DST|}}}|[[Category:Pages using infobox country with syntax problems|M]]}} }}{{#if:{{both|{{{sovereignty_type|}}}|{{{established|}}} }}|[[Category:Pages using infobox country with syntax problems|O]] }}{{#if:{{{languages|}}}|{{#if:{{{languages_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}} }}{{#if:{{{languages2|}}}|{{#if:{{{languages2_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}} }}{{#if:{{{flag_type|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|T{{PAGENAME}}]] }}{{#if:{{{flag_caption|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|C{{PAGENAME}}]] }}{{#if:{{{symbol_type|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|T{{PAGENAME}}]] }}{{#if:{{{symbol_caption|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|C{{PAGENAME}}]] }}}}<!-- Tracking categories from merge with {{infobox former country}}. After all cats are empty/have been checked, these can be removed. -->{{#if:{{{status_text|}}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Colony|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Exile|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}}}}} }}<!--End of former country tracking cats--><noinclude> {{documentation}} </noinclude> be47d674190a41bd16abfd73bfb38394b5c704f2 Template:Infobox country/formernext 10 560 1256 1255 2023-10-01T10:04:15Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Infobox_country/formernext]] wikitext text/x-wiki {| style="width:95%; background: transparent; text-align:center; margin:0 auto; display:inline-table;" |- | style="text-align:center; border:0; padding-bottom:0"|<div id="before-after"></div> {{#if:{{{p1|}}}|'''Preceded by'''}} || style="text-align:center;border:0; padding-bottom:0;"| {{#if:{{{s1|}}}|'''Succeeded by'''}} |- | style="vertical-align:top; text-align:center; border:0;"| {{#if:{{{p1|}}} | <!--start subtable:-->{{{!}} style="width:100%; background: transparent; text-align:center; margin:0 auto; border:0;" {{!}}- {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p1|}}}|[[File:{{{flag_p1}}}|20px{{#ifeq:{{{border_p1}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p1|}}}|{{{image_p1}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p1}}}]] {{!}}- {{#if:{{{p2|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p2|}}}|[[File:{{{flag_p2}}}|20px{{#ifeq:{{{border_p2}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p2|}}}|{{{image_p2}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p2}}}]]}} {{!}}- {{#if:{{{p3|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p3|}}}|[[File:{{{flag_p3}}}|20px{{#ifeq:{{{border_p3}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p3|}}}|{{{image_p3}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p3}}}]]}} {{!}}- {{#if:{{{p4|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p4|}}}|[[File:{{{flag_p4}}}|20px{{#ifeq:{{{border_p4}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p4|}}}|{{{image_p4}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p4}}}]]}} {{!}}- {{#if:{{{p5|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p5|}}}|[[File:{{{flag_p5}}}|20px{{#ifeq:{{{border_p5}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p5|}}}|{{{image_p5}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p5}}}]]}} {{!}}- {{#if:{{{p6|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p6|}}}|[[File:{{{flag_p6}}}|20px{{#ifeq:{{{border_p6}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p6|}}}|{{{image_p6}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p6}}}]]}} {{!}}- {{#if:{{{p7|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p7|}}}|[[File:{{{flag_p7}}}|20px{{#ifeq:{{{border_p7}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p7|}}}|{{{image_p7}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p7}}}]]}} {{!}}- {{#if:{{{p8|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p8|}}}|[[File:{{{flag_p8}}}|20px{{#ifeq:{{{border_p8}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p8|}}}|{{{image_p8}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p8}}}]]}} {{!}}- {{#if:{{{p9|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p9|}}}|[[File:{{{flag_p9}}}|20px{{#ifeq:{{{border_p9}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p9|}}}|{{{image_p9}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p9}}}]]}} {{!}}- {{#if:{{{p10|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p10|}}}|[[File:{{{flag_p10}}}|20px{{#ifeq:{{{border_p10}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p10|}}}|{{{image_p10}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p10}}}]]}} {{!}}- {{#if:{{{p11|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p11|}}}|[[File:{{{flag_p11}}}|20px{{#ifeq:{{{border_p11}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p11|}}}|{{{image_p11}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p11}}}]]}} {{!}}- {{#if:{{{p12|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p12|}}}|[[File:{{{flag_p12}}}|20px{{#ifeq:{{{border_p12}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p12|}}}|{{{image_p12}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p12}}}]]}} {{!}}- {{#if:{{{p13|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p13|}}}|[[File:{{{flag_p13}}}|20px{{#ifeq:{{{border_p13}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p13|}}}|{{{image_p13}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p13}}}]]}} {{!}}- {{#if:{{{p14|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p14|}}}|[[File:{{{flag_p14}}}|20px{{#ifeq:{{{border_p14}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p14|}}}|{{{image_p14}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p14}}}]]}} {{!}}- {{#if:{{{p15|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p15|}}}|[[File:{{{flag_p15}}}|20px{{#ifeq:{{{border_p15}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p15|}}}|{{{image_p15}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p15}}}]]}} {{!}}- {{#if:{{{p16|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p16|}}}|[[File:{{{flag_p16}}}|20px{{#ifeq:{{{border_p16}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p16|}}}|{{{image_p16}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p16}}}]]}} {{!}}- {{#if:{{{p17|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p17|}}}|[[File:{{{flag_p17}}}|20px{{#ifeq:{{{border_p17}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p17|}}}|{{{image_p17}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p17}}}]]}} {{!}}- {{#if:{{{p18|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p18|}}}|[[File:{{{flag_p18}}}|20px{{#ifeq:{{{border_p18}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p18|}}}|{{{image_p18}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p18}}}]]}} {{!}}- {{#if:{{{p19|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p19|}}}|[[File:{{{flag_p19}}}|20px{{#ifeq:{{{border_p19}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p19|}}}|{{{image_p19}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p19}}}]]}} {{!}}- {{#if:{{{p20|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p20|}}}|[[File:{{{flag_p20}}}|20px{{#ifeq:{{{border_p20}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p20|}}}|{{{image_p20}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p20}}}]]}} {{!}}- {{#if:{{{p21|}}} | {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p21|}}}|[[File:{{{flag_p21}}}|20px{{#ifeq:{{{border_p21}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p21|}}}|{{{image_p21}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p21}}}]]}} <!--end subtable:--> {{!}}} }} | style="vertical-align:top; text-align:center;border:0;"| {{#if:{{{s1|}}} | <!--start subtable:-->{{{!}} style="width:92%; background:transparent; text-align:center; margin:0 auto; border:0;" {{!}}- {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s1}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s1|}}}|[[File:{{{flag_s1}}}|20px{{#ifeq:{{{border_s1}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s1|}}}|{{{image_s1}}}|[[File:Blank.png|22px|link=|alt=]]}}}} {{!}}- {{#if:{{{s2|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s2}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s2|}}}|[[File:{{{flag_s2}}}|20px{{#ifeq:{{{border_s2}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s2|}}}|{{{image_s2}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s3|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s3}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s3|}}}|[[File:{{{flag_s3}}}|20px{{#ifeq:{{{border_s3}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s3|}}}|{{{image_s3}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s4|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s4}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s4|}}}|[[File:{{{flag_s4}}}|20px{{#ifeq:{{{border_s4}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s4|}}}|{{{image_s4}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s5|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s5}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s5|}}}|[[File:{{{flag_s5}}}|20px{{#ifeq:{{{border_s5}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s5|}}}|{{{image_s5}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s6|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s6}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s6|}}}|[[File:{{{flag_s6}}}|20px{{#ifeq:{{{border_s6}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s6|}}}|{{{image_s6}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s7|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s7}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s7|}}}|[[File:{{{flag_s7}}}|20px{{#ifeq:{{{border_s7}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s7|}}}|{{{image_s7}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s8|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s8}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s8|}}}|[[File:{{{flag_s8}}}|20px{{#ifeq:{{{border_s8}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s8|}}}|{{{image_s8}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s9|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s9}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s9|}}}|[[File:{{{flag_s9}}}|20px{{#ifeq:{{{border_s9}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s9|}}}|{{{image_s9}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s10|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s10}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s10|}}}|[[File:{{{flag_s10}}}|20px{{#ifeq:{{{border_s10}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s10|}}}|{{{image_s10}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s11|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s11}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s11|}}}|[[File:{{{flag_s11}}}|20px{{#ifeq:{{{border_s11}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s11|}}}|{{{image_s11}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s12|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s12}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s12|}}}|[[File:{{{flag_s12}}}|20px{{#ifeq:{{{border_s12}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s12|}}}|{{{image_s12}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s13|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s13}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s13|}}}|[[File:{{{flag_s13}}}|20px{{#ifeq:{{{border_s13}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s13|}}}|{{{image_s13}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s14|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s14}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s14|}}}|[[File:{{{flag_s14}}}|20px{{#ifeq:{{{border_s14}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s14|}}}|{{{image_s14}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s15|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s15}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s15|}}}|[[File:{{{flag_s15}}}|20px{{#ifeq:{{{border_s15}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s15|}}}|{{{image_s15}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s16|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s16}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s16|}}}|[[File:{{{flag_s16}}}|20px{{#ifeq:{{{border_s16}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s16|}}}|{{{image_s16}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s17|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s17}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s17|}}}|[[File:{{{flag_s17}}}|20px{{#ifeq:{{{border_s17}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s17|}}}|{{{image_s17}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s18|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s18}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s18|}}}|[[File:{{{flag_s18}}}|20px{{#ifeq:{{{border_s18}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s18|}}}|{{{image_s18}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s19|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s19}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s19|}}}|[[File:{{{flag_s19}}}|20px{{#ifeq:{{{border_s19}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s19|}}}|{{{image_s19}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s20|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s20}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s20|}}}|[[File:{{{flag_s20}}}|20px{{#ifeq:{{{border_s20}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s20|}}}|{{{image_s20}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} {{!}}- {{#if:{{{s21|}}} | {{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s21}}}]] {{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s21|}}}|[[File:{{{flag_s21}}}|20px{{#ifeq:{{{border_s21}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s21|}}}|{{{image_s21}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}} <!--end subtable:--> <!--end subtable:--> {{!}}} }} <!--end subtable:--> {{!}}}<noinclude> {{documentation|content= This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. It can currently handle up to 21 flags. }}</noinclude> 05a74d48da51cce78e3518579c2af4cd1e699e4a Template:Infobox country/formernext/styles.css 10 561 1258 1257 2023-10-01T10:04:24Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Infobox_country/formernext/styles.css]] sanitized-css text/css .ib-country-formernext { width: 95%; margin: 0 auto; display: flex; justify-content: center; } .ib-country-formernext > div { min-width: 50%; flex-grow: 1; } .ib-country-formernext table { width: 100%; } /* .ib-country-formernext caption { font-weight: bold; text-align: center; } */ @media all and (max-width: 720px) { body.skin-minerva .ib-country-formernext table { display: table; } } a0cc4f82f1cfcb3da5919ad63b7e9fc65b113823 Template:Infobox country/imagetable 10 427 1260 930 2023-10-01T10:04:36Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Infobox_country/imagetable]] wikitext text/x-wiki {{#if:{{both|{{{image1a|}}}{{{image1b|}}}|{{{image2|}}}}}| <div class="noresize" style="display:table; width:100%;"> <div style="display:table-cell; vertical-align:middle; padding-left:5px;"> {{#if:{{{image1a|}}}|<div style="padding-bottom:3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="padding: 2px 0px 3px;">{{{image1b|}}}</div>}} <div>{{{caption1|}}}</div> </div> <div style="display:table-cell; vertical-align:middle; padding: 0px 5px;"> <div style="padding-bottom:3px;">{{{image2|}}}</div> <div>{{{caption2|}}}</div> </div> </div> <!--else:-->| {{#if:{{{image1a|}}}{{{image1b|}}}| <div class="noresize" style="display:table; width:100%;"> {{#if:{{{image1a|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px 0px;">{{{image1b|}}}</div>}} </div> <div>{{{caption1}}}</div> }} {{#if:{{{image2|}}}| <div style="padding: 0px 5px;"> <div style="padding-bottom:3px;">{{{image2|}}}</div> <div>{{{caption2}}}</div> </div> }} }}<noinclude> {{documentation|content= This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. }}</noinclude> 4094e7b538bb7456c09fbbfcdf9cf4e30e1b6b5b Template:Infobox country/multirow 10 428 1262 932 2023-10-01T10:04:44Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Infobox_country/multirow]] wikitext text/x-wiki {{infobox | child = yes | decat=yes | rowclass25 = mergedrow | label25 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{1|}}}</div> | data25 = {{{2|}}} | rowclass26 = mergedrow | label26 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{3|}}}</div> | data26 = {{{4|}}} | rowclass27 = mergedrow | label27 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{5|}}}</div> | data27 = {{{6|}}} | rowclass28 = mergedrow | label28 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{7|}}}</div> | data28 = {{{8|}}} | rowclass29 = mergedrow | label29 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{9|}}}</div> | data29 = {{{10|}}} | rowclass30 = mergedrow | label30 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{11|}}}</div> | data30 = {{{12|}}} | rowclass31 = mergedrow | label31 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{13|}}}</div> | data31 = {{{14|}}} | rowclass32 = mergedrow | label32 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{15|}}}</div> | data32 = {{{16|}}} | rowclass33 = mergedrow | label33 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{17|}}}</div> | data33 = {{{18|}}} | rowclass34 = mergedrow | label34 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{19|}}}</div> | data34 = {{{20|}}} | rowclass35 = mergedrow | label35 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{21|}}}</div> | data35 = {{{22|}}} | rowclass36 = mergedrow | label36 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{23|}}}</div> | data36 = {{{24|}}} | rowclass37 = mergedrow | label37 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{25|}}}</div> | data37 = {{{26|}}} | rowclass38 = mergedrow | label38 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{27|}}}</div> | data38 = {{{28|}}} | rowclass39 = mergedrow | label39 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{29|}}}</div> | data39 = {{{30|}}} | rowclass40 = mergedrow | label40 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{31|}}}</div> | data40 = {{{32|}}} | rowclass41 = mergedrow | label41 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{33|}}}</div> | data41 = {{{34|}}} | rowclass42 = mergedrow | label42 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{35|}}}</div> | data42 = {{{36|}}} | rowclass43 = mergedrow | label43 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{37|}}}</div> | data43 = {{{38|}}} | rowclass44 = mergedrow | label44 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{39|}}}</div> | data44 = {{{40|}}} }}<noinclude> {{documentation|content= This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. It can currently take up to 20 rows. }}</noinclude> 52b488ce963e6b79723ab148c9a82507ed2b4078 Template:Infobox country/status text 10 562 1264 1263 2023-10-01T10:04:51Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Infobox_country/status_text]] wikitext text/x-wiki {{#if:{{{status_text|}}} |{{{status_text}}} |{{#switch:{{ucfirst:{{{status|}}}}} |Empire=<!--Empire--> |Nomadic empire|Nomadic Empire=[[Nomadic empire]] |Ancient Chinese state |Ancient Chinese State=[[Ancient Chinese state]] |Federation |Federal=<!--Federation--> |Confederation=<!--Confederation--> |State union |State Union |Union=<!--State union--> |Special |Special territory=<!--Special territory--> |Unrecognized state |Unrecognised state |Unrecognized State |Unrecognised State |Unrecognized |Unrecognised=[[List of states with limited recognition|Unrecognized state]] |City-state |City-State |City state |City State |City={{#if:{{{empire|}}} | {{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[Free Imperial City]] of the [[Holy Roman Empire]] {{#if:{{{year_end|}}}|{{#ifexpr:{{{year_end}}}>1806|<br/>(until 1806)}}|}} |#default=City-state {{#if:{{{empire|}}}|of [[{{{empire}}}]]|}} }} |<!--City-state--> }} |Commonwealth realm |Commonwealth Realm=[[Commonwealth Realm]] |League of Nations Mandate |League of Nations |Mandate={{#if:{{{empire|}}} | [[League of Nations mandate|Mandate]] of&nbsp;{{#switch:{{{empire}}} |United Kingdom |UK=the [[United Kingdom]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }} | [[League of Nations mandate]] }} |United Nations Trust Territory| UN Trust Territory |Trust Territory=[[United Nations Trust Territories|Trust Territory]]<!-- -->{{#if:{{{empire|}}} |&nbsp;of&nbsp;{{#switch:{{{empire}}} |United Kingdom |UK=the [[United Kingdom]] |United States |US |USA=the [[United States]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }} }} |Protectorate=Protectorate of&nbsp;<!-- -->{{#if:{{{empire|}}} |{{#switch:{{{empire}}} |United Kingdom |UK=the [[United Kingdom]] |United States |US |USA=the [[United States]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }} |whom? {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}} }} |Client |Client state |Client State |Puppet |Puppet-state |Puppet state={{#if:{{{empire|}}} | {{#switch:{{{empire}}} |First French Empire |France=[[French client republic|Client]] of the [[First French Empire]] |#default=[[Puppet state]] of {{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }} | Puppet state ''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}} }} |Vassal={{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[States of the Holy Roman Empire|State]] of the [[Holy Roman Empire]] {{#if:{{{year_end|}}}|{{#ifexpr:{{{year_end}}}>1806|(until 1806)}}|}} |#default=Vassal{{#if:{{{empire|}}}|&nbsp;of&nbsp;{{{empire}}}|&nbsp;''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }} |Fief={{#switch:{{{empire|}}} |#default=Fief{{#if:{{{empire|}}}|&nbsp;of&nbsp;{{{empire}}}|&nbsp;''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }} |Abbey={{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[Imperial Abbey]] of the [[Holy Roman Empire]] {{Main other|[[Category:Imperial abbeys|{{{common_name}}}]]}} |#default=Abbey{{#if:{{{empire|}}}|&nbsp;of&nbsp;{{{empire}}}|&nbsp;''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }} |Satellite state |Satellite State |Satellite= Satellite state of the [[Soviet Union]] |Colony={{#switch:{{ucfirst:{{{empire}}}}} |United Kingdom |UK |British Empire |Britain=[[Territorial evolution of the British Empire|British colony]] |England=[[English overseas possessions|English colony]] |France |First French Empire| French Empire=[[French colonial empire|French colony]] |NL |Netherlands |The Netherlands=[[Dutch Empire|Dutch colony]] |Belgium=[[Belgian colonial empire|Belgian colony]] |Spain |Spanish Empire=[[Spanish Empire|Spanish colony]] |Portugal=[[Portuguese Empire|Portuguese colony]] |Germany |German Empire=[[German colonial empire|German colony]] |Italy=[[Italian Empire|Italian colony]] |Sweden=[[Swedish overseas colonies|Swedish colony]] |Denmark=[[Danish colonial empire|Danish colony]] |Norway=[[Norwegian Empire|Norwegian colony]] |Russia=[[Russian Empire|Russian colony]] |Japan=[[Empire of Japan|Japanese colony]] |#default=Colony ({{#if:{{{empire|}}} |{{{empire}}}) |''of whom?'') {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}} }} }} |Provisional Government |Provisional government |Provisional=[[Provisional government]] |Exiled Government |Exiled government |Exile={{#if:{{{year_exile_start|}}} | [[Government in exile|In exile]] {{#if:{{{year_exile_end|}}} |({{{year_exile_start}}}{{spaced ndash}}{{{year_exile_end}}}) |since {{{year_exile_start}}} }} | [[Government in exile]] }} |#default={{{status}}} }} }}<noinclude> {{documentation|content= This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. }}</noinclude> 4f904d43bb6c4d628d19a39a391cc105027b09bf Template:Infobox country/styles.css 10 244 1266 543 2023-10-01T10:05:05Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Infobox_country/styles.css]] sanitized-css text/css /* {{pp|small=y}} */ .ib-country { border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-country td, .ib-country th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-country .mergedtoprow .infobox-header, .ib-country .mergedtoprow .infobox-label, .ib-country .mergedtoprow .infobox-data, .ib-country .mergedtoprow .infobox-full-data, .ib-country .mergedtoprow .infobox-below { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.2em 0.6em; } .ib-country .mergedrow .infobox-label, .ib-country .mergedrow .infobox-data, .ib-country .mergedrow .infobox-full-data { border: 0; padding: 0 0.6em 0.2em 0.6em; } .ib-country .mergedbottomrow .infobox-label, .ib-country .mergedbottomrow .infobox-data, .ib-country .mergedbottomrow .infobox-full-data { border-top: 0; border-bottom: 1px solid #a2a9b1; padding: 0 0.6em 0.4em 0.6em; } .ib-country .infobox-header { text-align: left; } .ib-country .infobox-above { font-size: 125%; line-height: 1.2; } .ib-country-names { padding-top: 0.25em; font-weight: normal; } .ib-country-name-style { display: inline; } .ib-country .infobox-image { padding: 0.5em 0; } .ib-country-anthem { border-top: 1px solid #a2a9b1; padding-top: 0.5em; margin-top: 0.5em; } .ib-country-map-caption { position: relative; top: 0.3em; } .ib-country-largest, .ib-country-lang { font-weight: normal; } .ib-country-ethnic, .ib-country-religion, .ib-country-sovereignty { font-weight: normal; display: inline; } .ib-country-fake-li { text-indent: -0.9em; margin-left: 1.2em; font-weight: normal; } .ib-country-fake-li2 { text-indent: 0.5em; margin-left: 1em; font-weight: normal; } .ib-country-website { line-height: 11pt; } .ib-country-map-caption3 { position: relative; top: 0.3em; } .ib-country-fn { text-align: left; margin: 0 auto; } .ib-country-fn-alpha { list-style-type: lower-alpha; margin-left: 1em; } .ib-country-fn-num { margin-left: 1em; } 3112a323cf9739e86afd52812cd38e196abfae7d Template:Lua/doc 10 254 1268 564 2023-10-01T10:05:37Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Lua/doc]] wikitext text/x-wiki {{Documentation subpage}} {{Template shortcut|Lua talk}} {{Lua|Module:Lua banner}} <!-- Categories go at the bottom of this page, and interwikis go on Wikidata. --> {{for|template to indicate [[Luba-Kasai language]] words|Template:Lang-lua}} This template is used to indicate that a template uses one or more [[Lua (programming language)|Lua]] modules (pages in the <code>Module:</code> namespace). It is placed at the top of the template's /doc page. It automatically adds a floating right notification box, and it adds the template to [[:Category:Lua-based templates]] or to one of its subcategories. == Usage == ; Basic : {{tlx|Lua|''module name''}} ; All parameters : {{tlx|Lua|''module 1''|''module 2''|''module 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}} The first module name is required. == Examples == * {{tlx|Lua|Module:Example}} {{Lua|Module:Example|nocat=true}} {{clear}} * {{tlx|Lua|Module:Example|Module:Example}} {{Lua|Module:Example|Module:Example|nocat=true}} {{clear}} * {{tlx|Lua}} {{Lua|nocat=true}} {{clear}} == Categorisation == ===Template category=== This template adds pages to [[:Category:Lua-based templates]] if the page is in the template namespace, and it is not on any of the subpages /doc, /sandbox, /sandbox2 or /testcases. You can specify a different category with the {{para|category}} parameter, e.g. {{para|category|Lua String-based templates}}. Some modules have a default category other than [[:Category:Lua-based templates]]: * [[Module:String]] has the default category [[:Category:Templates based on the String Lua module]]. * [[Module:Math]] has the default category [[:Category:Templates based on the Math Lua module]]. * [[Module:BaseConvert]] has the default category [[:Category:Templates based on the BaseConvert Lua module]]. * [[Module:Citation/CS1]] has the default category [[:Category:Templates based on the Citation/CS1 Lua module]]. ===Error category=== If no modules are specified, the transcluded page will be added to [[:Category:Lua templates with errors]]. ===Category suppression=== To suppress all categorisation, use {{para|nocat|true}}. (As well as "true", the values "yes", "y", and "1" will also work.) == TemplateData == {{Format TemplateData|TNT=Lua banner}} == See also == * [[Wikipedia:Lua]] * {{tl|module rating}} * {{tl|Uses TemplateStyles}} <includeonly>{{Sandbox other| | <!-- Categories go here, and interwikis go on Wikidata. --> [[Category:Lua-based templates| ]] [[Category:Template namespace templates]] }}</includeonly> a0a237a34ba98213650e4c11064bd4c8f944fcc6 Module:Lua banner/doc 828 467 1270 1019 2023-10-01T10:06:12Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Lua_banner/doc]] wikitext text/x-wiki {{high use}} {{Lua|Module:Yesno|Module:List|Module:TableTools|Module:Message box}} This module implements the {{tl|lua}} template. == Usage from wikitext == This module cannot be used directly from wikitext. It can only be used through the {{tl|lua}} template. Please see the template page for documentation. == Usage from Lua modules == To use this module from other Lua modules, first load the module. <syntaxhighlight lang="lua"> local mLuaBanner = require('Module:Lua banner') </syntaxhighlight> You can then generate a side box using the _main function. <syntaxhighlight lang="lua"> mLuaBanner._main(args) </syntaxhighlight> The <var>args</var> variable should be a table containing the arguments to pass to the module. To see the different arguments that can be specified and how they affect the module output, please refer to the {{tl|lua}} template documentation. == Tracking category == * {{clc|Lua templates with errors}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories go here and interwikis go in Wikidata. --> [[Category:Modules that add a tracking category]] }}</includeonly> 864df985eac89c7dc7d6168d9235ff11b9f13b47 Philippines 0 437 1271 985 2023-10-01T10:07:31Z Führerredux 2 wikitext text/x-wiki {{Infobox country | languages_type = Official language<br/>{{nobold|and national language}} | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div> | life_span = 1935–1942<br />1942–1945: [[Government in exile of the Commonwealth of the Philippines|Government-in-exile]]<br />1945–1946 | official_languages = Tagalog, Spanish, English | ethnic_groups = {{#invoke:list|unbulleted | 33.7% Visayan | 24.4% Tagalog | 8.4% Ilocano | 6.8% Bicolano | 26.2% other }} | demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | government_type = Devolved presidential constitutional dependency | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | legislature = National Assembly | currency = Philippine Peso | date_format = MM/DD/YYYY | drives_on = left | calling_code = +63 | iso3166 = PH }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. ==History== ===Pre-Colonial Period (pre-1521)=== The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighboring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas. Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers. === Spanish Colonial Period (1521-1898)=== The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world. Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892. The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War. ===Filipino-American War and American Colonial Period (1898-1936)=== The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao. However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner. fa2aeed5405960a8add00381e9ca3f5ab24a7c59 Template:Efn 10 563 1273 1272 2023-10-01T10:10:27Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Efn]] wikitext text/x-wiki <includeonly>{{#if:{{{name|}}} |{{#tag:ref|{{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}|name={{{name|}}}|group={{#switch: {{{group|}}} | note | upper-alpha | upper-roman | lower-alpha | lower-greek | lower-roman = {{{group|}}} | #default = lower-alpha }} }} |{{#tag:ref|{{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}|group={{#switch: {{{group|}}} | note | upper-alpha | upper-roman | lower-alpha | lower-greek | lower-roman = {{{group|}}} | #default = lower-alpha }} }} }}</includeonly><noinclude> {{documentation}} </noinclude> 6ed4e5c148014b92a23bd51d16f3180881bb876c Template:Reflist 10 564 1275 1274 2023-10-01T10:10:31Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Reflist]] wikitext text/x-wiki <templatestyles src="Reflist/styles.css" /><div class="reflist <!-- -->{{#if:{{{1|}}}{{{colwidth|}}}|reflist-columns references-column-width}} <!-- -->{{#switch:{{{liststyle|{{{group|}}}}}}|upper-alpha|upper-roman|lower-alpha|lower-greek|lower-roman=reflist-{{{liststyle|{{{group}}}}}}}} <!-- -->{{#if:{{{1|}}}|{{#iferror:{{#ifexpr: {{{1|1}}} > 1 }}||{{#switch:{{{1|}}}|1=|2=reflist-columns-2|#default=reflist-columns-3}} }}}}" <!-- end class -->{{#if: {{{1|}}}<!-- start style --> | {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} |style="column-width: {{{1}}};"}} | {{#if: {{{colwidth|}}}|style="column-width: {{{colwidth}}};"}} }}> {{#tag:references|{{{refs|}}}|group={{{group|}}}|responsive={{#if:{{{1|}}}{{{colwidth|}}}|0|1}}}}</div>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using reflist with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Reflist]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | colwidth | group | liststyle | refs }}<noinclude> {{Documentation}} </noinclude> 8c65cc88272db6c0f5cf2b49f84d3e460e60ee5f Template:Reflist/styles.css 10 565 1277 1276 2023-10-01T10:10:32Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Reflist/styles.css]] sanitized-css text/css /* {{pp|small=yes}} */ /* can we remove the font size declarations? .references gets a font-size in * common.css that is always 90, and there is nothing else in reflist out in * the wild. May affect column sizes. */ .reflist { font-size: 90%; /* Default font-size */ margin-bottom: 0.5em; list-style-type: decimal; } .reflist .references { font-size: 100%; /* Reset font-size when nested in div.reflist */ margin-bottom: 0; /* Avoid double margin when nested in div.reflist */ list-style-type: inherit; /* Enable custom list style types */ } /* columns-2 and columns-3 are legacy for "2 or more" column view from when the * template was implemented with column-count. */ .reflist-columns-2 { column-width: 30em; } .reflist-columns-3 { column-width: 25em; } /* Reset top margin for lists embedded in columns */ .reflist-columns { margin-top: 0.3em; } .reflist-columns ol { margin-top: 0; } /* Avoid elements breaking between columns */ .reflist-columns li { page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */ break-inside: avoid-column; } .reflist-upper-alpha { list-style-type: upper-alpha; } .reflist-upper-roman { list-style-type: upper-roman; } .reflist-lower-alpha { list-style-type: lower-alpha; } .reflist-lower-greek { list-style-type: lower-greek; } .reflist-lower-roman { list-style-type: lower-roman; } 531a26d48f0e7826c61f764cfb7d5fb200032c34 Template:Anchor 10 566 1279 1278 2023-10-01T10:10:34Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Anchor]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:anchor|main}}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 7d65122552007ac959072bddfa6f723296c81998 Module:Anchor 828 567 1281 1280 2023-10-01T10:10:35Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Anchor]] Scribunto text/plain -- This module implements {{anchor}}. local getArgs = require('Module:Arguments').getArgs local tableTools = require('Module:TableTools') local p = {} function p.main(frame) -- Get the positional arguments from #invoke, remove any nil values, -- and pass them to p._main. local args = getArgs(frame) local argArray = tableTools.compressSparseArray(args) return p._main(unpack(argArray)) end function p._main(...) -- Generate the list of anchors. local anchors = {...} local ret = {} for _, anchor in ipairs(anchors) do ret[#ret + 1] = '<span class="anchor" id="' .. anchor .. '"></span>' end return table.concat(ret) end return p e41d3f5d2f2840528aebb9bac719873540fcb3b8 Template:Code 10 229 1283 517 2023-10-01T10:10:35Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Code]] wikitext text/x-wiki {{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> ec6759b67bec30b7f31c3a0feecdd2a4775ee0cf Template:For loop 10 568 1285 1284 2023-10-01T10:10:36Z Führerredux 2 1 revision imported from [[:wikipedia:Template:For_loop]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:For loop|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 12b7b7010fe32f888e21bcdfa6a904fc8a925437 Module:For loop 828 569 1287 1286 2023-10-01T10:10:36Z Führerredux 2 1 revision imported from [[:wikipedia:Module:For_loop]] Scribunto text/plain -- This module implements {{for loop}}. local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local p = {} function p.main(frame) local args = getArgs(frame, { trim = false, removeBlanks = false }) return p._main(args) end function p._main(args) local template = args['call'] or 'void' local calltemplates = yesno(args.substall or "", true) or not mw.isSubsting() local variableParam = args.pv variableParam = tonumber(variableParam) or variableParam or 1 -- fix for positional parameters local variableValPrefix = args.prefix or '' local variableValPostfix = args.postfix or '' local sep = args[1] or '' local constantArgs = p.getConstants(args) local variableVals = p.getVariableVals(args) local result = '' local addSeparator = false; for _, v in ipairs(variableVals) do v = mw.text.trim(v) if #v > 0 or not yesno(args.skipBlanks) then if addSeparator then result = result .. sep end addSeparator = true; local targs = constantArgs targs[variableParam] = variableValPrefix .. v .. variableValPostfix if calltemplates then local output = p.callTemplate(template, targs) if #mw.text.trim(output) == 0 then addSeparator = false end result = result .. output else local makeTemplate = require('Module:Template invocation').invocation result = result .. makeTemplate(template, targs) end end end return result end function p.getConstants(args) local constantArgNums = p.getArgNums(args, 'pc', 'n') local constantArgs = {} for _, num in ipairs(constantArgNums) do local keyArg = 'pc' .. tostring(num) .. 'n' local valArg = 'pc' .. tostring(num) .. 'v' local key = args[keyArg] key = tonumber(key) or key local value = args[valArg] constantArgs[key] = value end return constantArgs end function p.getVariableVals(args) local variableVals = {} if args.start or args.stop or args.by then if args[2] then error("Both start/stop/by and numbered parameters specified") end local start = tonumber(args.start or 1) local stop = tonumber(args.stop or 1) local by = tonumber(args.by or 1) for i = start, stop, by do variableVals [#variableVals + 1] = i end else for i, v in ipairs(args) do if i ~= 1 then variableVals[i - 1] = v end end end return variableVals end function p.getArgNums(args, prefix, suffix) -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix and suffix. local nums = {} local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' for k, _ in pairs(args) do local num = tostring(k):match(pattern) if num then nums[#nums + 1] = tonumber(num) end end table.sort(nums) return nums end function p.callTemplate(template, targs) return mw.getCurrentFrame():expandTemplate{title = template, args = targs} end return p 4ed4682b1fd3fbf2bf0836b46dd19bc0363d40e2 Template:Notelist 10 570 1289 1288 2023-10-01T10:10:37Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Notelist]] wikitext text/x-wiki {{reflist|{{{1|{{{colwidth|}}}}}}|refs={{{refs|{{{notes|}}}}}}|group={{#switch: {{{group|}}} | note | upper-alpha | upper-roman | lower-alpha | lower-greek | lower-roman = {{{group|}}} | #default = lower-alpha }}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using notelist with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Notelist]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | colwidth | group | notes | refs }}<noinclude> {{documentation}}</noinclude> 093e937792d01a5dfc9dd3b5e5deda6b48d0f2be Template:!- 10 571 1291 1290 2023-10-01T10:10:37Z Führerredux 2 1 revision imported from [[:wikipedia:Template:!-]] wikitext text/x-wiki |-<noinclude> {{documentation}} </noinclude> 19a1b27b5273caa6fd83a1208fb704afa9ee7c04 Template:!! 10 572 1293 1292 2023-10-01T10:10:38Z Führerredux 2 1 revision imported from [[:wikipedia:Template:!!]] wikitext text/x-wiki ||<noinclude> {{documentation}} </noinclude> cfbaaca3cb3edae590f75b87fb775d1be21774a4 Template:Tag 10 573 1295 1294 2023-10-01T10:10:40Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tag]] wikitext text/x-wiki <code class="{{#ifeq:{{{wrap|}}}|yes|wrap|nowrap}}" style="{{#ifeq:{{{style|}}}|plain|border:none;background:transparent;|{{{style|}}}}}"><!-- Opening tag -->{{#switch:{{{2|pair}}} |c|close = |e|empty|s|single|v|void |o|open |p|pair = &lt;{{#if:{{{link|}}}|[[HTML element#{{{1|tag}}}|{{{1|tag}}}]]|{{{1|tag}}}}}{{#if:{{{params|{{{attribs|}}}}}}|&#32;{{{params|{{{attribs}}}}}}}} }}<!-- Content between tags -->{{#switch:{{{2|pair}}} |c|close = {{{content|}}} |e|empty|s|single|v|void = &#32;&#47;&gt; |o|open = &gt;{{{content|}}} |p|pair = {{#ifeq:{{{1|tag}}}|!--||&gt;}}{{{content|...}}} }}<!-- Closing tag -->{{#switch:{{{2|pair}}} |e|empty|s|single|v|void |o|open = |c|close |p|pair = {{#ifeq:{{{1|tag}}}|!--|--&gt;|&lt;&#47;{{{1|tag}}}&gt;}} }}<!-- --></code><noinclude> {{Documentation}} </noinclude> eae208bc1612c834de697fa3ee9b343966cf8602 Template:Efn-lr 10 574 1297 1296 2023-10-01T10:10:41Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Efn-lr]] wikitext text/x-wiki <includeonly>{{efn|name={{{name|}}}|group=lower-roman|reference={{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}}}</includeonly><noinclude> {{documentation}} </noinclude> a84a2c4c65dd07813f0d83c1e99364ae256e13d3 Template:Notelist-lr 10 575 1299 1298 2023-10-01T10:10:41Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Notelist-lr]] wikitext text/x-wiki <includeonly>{{notelist|colwidth={{{1|{{{colwidth|}}}}}}|refs={{{refs|{{{notes|}}}}}}|group=lower-roman}}</includeonly><noinclude> {{documentation}} </noinclude> 4f00350b2a4eb03726e2440b940be93d06bec3be Template:Dummy reference 10 576 1301 1300 2023-10-01T10:10:42Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Dummy_reference]] wikitext text/x-wiki <sup class="reference nowrap ltr" style="color:#002bb8;">[{{#ifeq:{{yes/no|{{{txtital|}}}}}|yes|<span style="font-style:italic">}}{{#if:{{{txtcol|}}}|<span style="color:{{{txtcol|}}}">}}{{{1|1}}}{{#if:{{{txtcol|}}}|</span>}}{{#ifeq:{{yes/no|{{{txtital|}}}}}|yes|</span>}}]</sup><noinclude> {{documentation}} </noinclude> 7be6798eb28af3f887fa775b50dc87e0c575cde9 Template:Yes/no 10 577 1303 1302 2023-10-01T10:10:42Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Yes/no]] wikitext text/x-wiki #REDIRECT [[Template:Yesno]] 80e458cd4d851471d13896c26ecf96ce6dcdd579 Template:Aka 10 578 1305 1304 2023-10-01T10:10:45Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Aka]] wikitext text/x-wiki <abbr title="also known as">{{#if:{{{AKA|}}}{{{uc|}}}|AKA|a.k.a.}}</abbr><noinclude> {{documentation}} </noinclude> 78a22d82a9beabc017751e258efef369bd2bf13f Template:Format item 10 579 1307 1306 2023-10-01T10:10:46Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Format_item]] wikitext text/x-wiki <includeonly>{{#invoke:Item|format}}</includeonly><noinclude> {{doc}} </noinclude> 0de34fe93b7513b034123ce1c532fd0f2df896dc Template:Item 10 580 1309 1308 2023-10-01T10:10:46Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Item]] wikitext text/x-wiki <includeonly>{{#invoke:Item|pack}}</includeonly><noinclude> {{doc}} </noinclude> 2a8d49a45be839260ad83d33fa73c804d0a39e55 Template:Markup 10 581 1311 1310 2023-10-01T10:10:47Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Markup]] wikitext text/x-wiki <includeonly>{| style="{{#if:{{{width|}}}|width:{{{width}}};}} margin-top:0;margin-left:{{{margin-left|{{{margin|0}}}}}}; border-width:medium; padding:0; {{{style|}}}" {{#if:{{{title|}}} |{{!}}+ '''{{{title}}}'''}} {{#if:{{{noheaders|}}}{{{notitle|}}} | |! scope="col" style="width:50%;{{{colheaderstyle|}}}{{{col1headerstyle|}}}"{{!}} {{{col1|{{{t1|Markup}}}}}} {{!!}}<!-- -->scope="col" style="width:50%;{{{colheaderstyle|}}}{{{col2headerstyle|}}}"{{!}} {{{col2|{{{t2|Renders as}}}}}} }}<!-- -->{{For loop||call=format item|pc1n=template|pc1v=Markup/row|pc2n=c1style|pc2v={{{col1style|{{{codestyle|{{{markupstyle|}}}}}}}}}|pc3n=c2style|pc3v={{{col2style|{{{outputstyle|}}}}}}|pv=item|{{item|c1={{{1|}}}|c2={{{2|}}}}}|{{item|c1={{{3|}}}|c2={{{4|}}}}}|{{item|c1={{{5|}}}|c2={{{6|}}}}}|{{item|c1={{{7|}}}|c2={{{8|}}}}}|{{item|c1={{{9|}}}|c2={{{10|}}}}}|{{item|c1={{{11|}}}|c2={{{12|}}}}}|{{item|c1={{{13|}}}|c2={{{14|}}}}}|{{item|c1={{{15|}}}|c2={{{16|}}}}}|{{item|c1={{{17|}}}|c2={{{18|}}}}}|{{item|c1={{{19|}}}|c2={{{20|}}}}}|{{item|c1={{{21|}}}|c2={{{22|}}}}}|{{item|c1={{{23|}}}|c2={{{24|}}}}}|{{item|c1={{{25|}}}|c2={{{26|}}}}}|{{item|c1={{{27|}}}|c2={{{28|}}}}}|{{item|c1={{{29|}}}|c2={{{30|}}}}}|{{item|c1={{{31|}}}|c2={{{32|}}}}}|{{item|c1={{{33|}}}|c2={{{34|}}}}}|{{item|c1={{{35|}}}|c2={{{36|}}}}}|{{item|c1={{{37|}}}|c2={{{38|}}}}}|{{item|c1={{{39|}}}|c2={{{40|}}}}}}} |- |style="border-width:1px;border-style: none none none;border-color:#ddd; padding:5px; vertical-align:top;"| |style="border-width:1px;border-style: none none none;border-color:#ddd; padding:5px; vertical-align:top;"| |}</includeonly><noinclude> {{Documentation}} </noinclude> 8f9e78df3cd9801aa6cb36c463195df132394e9a Template:Markup/row 10 582 1313 1312 2023-10-01T10:10:47Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Markup/row]] wikitext text/x-wiki <noinclude>{| style="border-width:medium;"</noinclude><includeonly>{{#if:{{{c1|value}}}|&#32; {{!-}} {{!}}style{{=}}"background:#f8f9fa ; border:1px solid #eaecf0 ; padding:9px 5px 5px; vertical-align:top;"{{!}} <!-- -->{{#tag:pre |{{{c1|[markup]}}}|style="margin:0;border:none;padding:0; word-wrap:break-word; white-space:-moz-pre-wrap;white-space:-o-pre-wrap;white-space:-pre-wrap;white-space:pre-wrap; {{{c1style|}}}"}} {{!}}style{{=}}"background:#f8f9fa ; border:1px solid #eaecf0 ; padding:5px; vertical-align:top;"{{!}} <!-- --><div style="{{{c2style|}}}"> {{{c2|[''rendering'']}}} </div> }}</includeonly><!-- --><noinclude> |- |style="border-width:1px;border-style:solid none none none;border-color:#ddd; padding:5px; vertical-align:text-top;"| |style="border-width:1px;border-style:solid none none none;border-color:#ddd; padding:5px; vertical-align:text-top;"| |- |}</noinclude> 2636425c7478cebf61528d5eb4cab52b8e695ec9 Module:Item 828 583 1315 1314 2023-10-01T10:10:48Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Item]] Scribunto text/plain local p = {} local function escape(str) return str:gsub("[|\\]", function (c) return string.format("\\%03d", c:byte()) end) end local function unescape(str) return str:gsub("\\(%d%d%d)", function (d) return string.char(d) end) end -- Implements [[Template:Item]] function p.pack(frame) local parent = frame:getParent() local result = '' for key, value in pairs(parent.args) do result = result .. "|" .. escape(tostring(key)) .. "|" .. escape(value) end return result .. "|"; end local function unpack(str) local result = { } for key, value in str:gfind("|([^|]*)|([^|]*)") do result[unescape(key)] = unescape(value) end return result end -- Implements [[Template:Component]] function p.component(frame) return unpack(frame.args[1])[frame.args[2]] end local function getItems(frame) return frame:getParent().args end local function invert(tbl) local result = { } for key, value in pairs(tbl) do result[value] = key end return result end -- Add args into item as appropriate (see [[Template:Format item]]) local function addArgs( item, -- unpacked item to modify args, -- arguments for adding into item ignore, -- pass in invert{keys to ignore} shift -- for numbered arguments, args[key+shift] is assigned to item[key] -- returns: item ) for key, value in pairs(args) do if not ignore[key] then local _, _, paramKey = string.find(key, "^param (.*)") local _, _, importantKey = string.find(key, "^important (.*)") paramKey = paramKey or importantKey or key if shift and type(paramKey) == "number" then paramKey = paramKey - shift if paramKey < 1 then paramKey = nil end end if paramKey and (importantKey or item[paramKey] == nil) then item[paramKey] = value end end end return item end -- Implements [[Template:Format item]] function p.format(frame) local args = frame:getParent().args local ignore = invert{ "template", "item" } local templateArgs = addArgs(unpack(args.item), args, ignore) return frame:expandTemplate{ title = args.template, args = templateArgs } end -- See [[Template:Item#Format each item using a template]] function p.each(frame) local args = frame.args local items = getItems(frame) local separator = args[1] or "" local prepend = args[2] or "" local append = args[3] or "" local ignore = invert{ "template" } local shift = 3 local result = "" for i, item in ipairs(items) do local templateArgs = addArgs(unpack(item), args, ignore, shift) result = result .. prepend .. frame:expandTemplate{ title = args.template, args = templateArgs } .. append if items[i + 1] then result = result .. separator end end return result end -- See [[Template:Item#Gather given parameter from all items]] function p.gather(frame) local args = frame.args local items = getItems(frame) local parameter = args.parameter or "1" local templateArgs = { } for i, item in ipairs(items) do templateArgs[i] = unpack(item)[parameter] end return frame:expandTemplate{ title = args.template, args = templateArgs } end return p 46e61b1549d18c301bcc79ecd120a0aa790f8894 Template:Dummy ref 10 584 1317 1316 2023-10-01T10:10:49Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Dummy_ref]] wikitext text/x-wiki #REDIRECT [[Template:Dummy reference]] {{Redirect category shell|{{R from short name}}}} 51e7e4d220e438d9b8e1e1ee2c7b8d4f91fb7569 Module:Transclusion count/data/E 828 585 1319 1318 2023-10-01T10:10:51Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/E]] Scribunto text/plain return { ["EB1911"] = 12000, ["EB1911_poster"] = 3500, ["ECU"] = 2300, ["EC_number"] = 4000, ["EGY"] = 3300, ["EHAK"] = 3300, ["ENFA"] = 3600, ["ENG"] = 8600, ["ENGLs"] = 3100, ["EOL"] = 2500, ["ER_to_list_entry"] = 5800, ["ESP"] = 15000, ["ESPNcricinfo"] = 3500, ["EST"] = 4200, ["Earthquake_magnitude"] = 2100, ["Eastern_name_order"] = 4400, ["Ebicite"] = 7100, ["Ec"] = 28000, ["Ed"] = 5900, ["Ed_right"] = 3000, ["Edit"] = 702000, ["EditAtWikidata"] = 763000, ["EditOnWikidata"] = 36000, ["Edit_COI"] = 8100, ["Edit_COI/answered"] = 5100, ["Edit_COI/declined"] = 3200, ["Edit_a_taxon"] = 108000, ["Edit_conflict"] = 31000, ["Edit_count_link"] = 7800, ["Edit_extended-protected"] = 3600, ["Edit_fully-protected"] = 7300, ["Edit_on_Wikidata"] = 41000, ["Edit_protected"] = 3300, ["Edit_semi-protected"] = 35000, ["Edit_summary_field"] = 9900, ["Edit_summary_field/OOUI"] = 11000, ["Edit_taxonomy"] = 371000, ["Edit_template-protected"] = 4100, ["Editcount"] = 3000, ["Editnotice"] = 16000, ["Editnotice/notice"] = 13000, ["Editnotice_for_lists_of_people"] = 2500, ["EduBase"] = 4500, ["Educational_assignment"] = 4000, ["Efn"] = 181000, ["Efn-lr"] = 2600, ["Efn-ua"] = 4300, ["Efs_player"] = 5400, ["Efs_start"] = 5500, ["Election_box_2-party-preferred"] = 2300, ["Election_box_2pp"] = 2300, ["Election_box_begin"] = 31000, ["Election_box_begin_no_change"] = 14000, ["Election_box_candidate"] = 7000, ["Election_box_candidate_AU_party"] = 3500, ["Election_box_candidate_no_change"] = 2700, ["Election_box_candidate_with_party_link"] = 26000, ["Election_box_candidate_with_party_link_no_change"] = 14000, ["Election_box_end"] = 44000, ["Election_box_formal"] = 3500, ["Election_box_gain_with_party_link"] = 11000, ["Election_box_gain_with_party_link_no_swing"] = 2100, ["Election_box_hold_AU_party"] = 2900, ["Election_box_hold_with_party_link"] = 15000, ["Election_box_hold_with_party_link_no_change"] = 4700, ["Election_box_hold_with_party_link_no_swing"] = 4300, ["Election_box_hold_with_party_link_without_swing"] = 2100, ["Election_box_informal"] = 3900, ["Election_box_majority"] = 19000, ["Election_box_new_seat_win"] = 5000, ["Election_box_registered_electors"] = 6100, ["Election_box_total"] = 3200, ["Election_box_total_no_change"] = 12000, ["Election_box_turnout"] = 25000, ["Election_box_turnout_no_change"] = 2200, ["Election_box_winning_candidate_with_party_link"] = 18000, ["Election_box_winning_candidate_with_party_link_no_change"] = 14000, ["Election_results"] = 8000, ["Election_summary_begin"] = 4000, ["Election_summary_party"] = 4000, ["Election_table"] = 2500, ["Election_table/category"] = 2500, ["Elo_ranking"] = 3900, ["Elo_rating"] = 3900, ["Em"] = 1450000, ["Em_dash"] = 13000, ["Emblem_table"] = 3600, ["Emdash"] = 3000, ["Emmy_Awards/color"] = 4300, ["Empty_category"] = 3600, ["Empty_section"] = 30000, ["En"] = 3500, ["En_dash"] = 31000, ["En_dash_range"] = 177000, ["Encodefirst"] = 700000, ["End"] = 107000, ["End_box"] = 14000, ["End_date"] = 82000, ["End_date_and_age"] = 6700, ["End_of_course_week"] = 6300, ["End_of_students_table"] = 5300, ["Endangered_Languages_Project"] = 11000, ["Endash"] = 7600, ["Endflatlist"] = 305000, ["Endorse"] = 5100, ["Endplainlist"] = 34000, ["English_anime_licensee"] = 4200, ["English_football_updater"] = 3200, ["English_manga_publisher"] = 2300, ["Engvar"] = 9500, ["EngvarB"] = 105000, ["Ensure_AAA_contrast_ratio"] = 15000, ["Ensure_AA_contrast_ratio"] = 5000, ["Enum"] = 39000, ["Enzymes"] = 6200, ["Episode_list"] = 20000, ["Episode_list/sublist"] = 5500, ["Episode_table"] = 18000, ["Error"] = 22000, ["Error-small"] = 13000, ["ErrorBar2"] = 4600, ["Esc"] = 2400, ["Esccnty"] = 2700, ["Esoteric_file"] = 3400, ["Essay"] = 5100, ["Essay-like"] = 4500, ["EstcatContinent"] = 3200, ["EstcatContinent/core"] = 3200, ["EstcatCountry"] = 28000, ["EstcatCountry/core"] = 28000, ["EstcatCountryDecade"] = 5500, ["EstcatCountryDecade/core"] = 5500, ["EstcatUSstate"] = 10000, ["EstcatUSstate/core"] = 10000, ["Estonia_To-do"] = 22000, ["Ethnologue18"] = 3800, ["Europe_topic"] = 9900, ["Excerpt"] = 6300, ["Excerpt/styles.css"] = 6300, ["ExistNotRedirect"] = 50000, ["Expand_French"] = 17000, ["Expand_German"] = 16000, ["Expand_Italian"] = 4300, ["Expand_Japanese"] = 3700, ["Expand_Russian"] = 3600, ["Expand_Spanish"] = 7300, ["Expand_language"] = 78000, ["Expand_list"] = 11000, ["Expand_section"] = 38000, ["Expand_wikitext"] = 102000, ["Explain"] = 2700, ["Extended_football_squad_player"] = 6400, ["Extended_football_squad_start"] = 6400, ["External_links"] = 3600, ["External_media"] = 11000, ["External_music_video"] = 23000, ["Extinct"] = 12000, ["Extra_album_cover"] = 8300, ["Extra_chronology"] = 15000, ["Extract"] = 8200, ["Module:EditAtWikidata"] = 1930000, ["Module:Effective_protection_expiry"] = 54000, ["Module:Effective_protection_level"] = 56000, ["Module:Election_results"] = 8000, ["Module:Endangered_Languages_Project"] = 11000, ["Module:English_variant_notice"] = 57000, ["Module:Engvar"] = 11000, ["Module:Episode_list"] = 26000, ["Module:Episode_table"] = 19000, ["Module:Error"] = 40000, ["Module:Escape"] = 11000, ["Module:Excerpt"] = 6300, ["Module:Excerpt/config"] = 6300, ["Module:Excerpt/portals"] = 4600, ["Module:ExistNotRedirect"] = 50000, ["Module:Expand_wikitext"] = 102000, ["Module:Exponential_search"] = 617000, ["Module:External_links"] = 66000, ["Module:External_links/conf"] = 66000, ["Module:External_links/conf/Sports"] = 66000, } bdca9b06054258d1db712dc02d21aa4fa46d74c2 Help:Footnotes 12 586 1321 1320 2023-10-01T10:10:56Z Führerredux 2 1 revision imported from [[:wikipedia:Help:Footnotes]] wikitext text/x-wiki <noinclude>{{pp-semi-indef}}</noinclude>{{short description|Wikipedia help article}} {{For|the official guideline on citing sources|Wikipedia:Citing sources}} {{For|help with citation templates|Help:Citation Style 1}} {{Redirect|WP:FN|the fringe theories noticeboard|Wikipedia:Fringe theories/Noticeboard}} {{Redirect|WP:NOTES|hatnotes|Wikipedia:Hatnote|article layout of footnotes|MOS:NOTES|musical notes|Wikipedia:Manual of Style/Music#Images and notation}} {{Wikipedia how to|H:FOOT|WP:FOOTNOTES|H:FN}} This page explains how to create the '''Footnotes''' section for Wikipedia articles. In this context, the word "Footnotes" refers to the Wikipedia-specific manner of documenting an article's sources and providing tangential information, and should not be confused with the general concept of [[Note (typography)|footnotes]]. This how-to does not cover the formatting of citations within the Footnotes section, which is reviewed in [[Wikipedia:Citing sources|Citing sources]]. Footnotes are used most commonly to provide: * [[Wikipedia:Citing sources|references (bibliographic citations) to reliable sources]], * [[Help:explanatory notes|explanatory information]], or * source information for tables and other elements. Footnotes or [[Help:Shortened footnotes|shortened footnotes]] may be used at the editor's discretion in accordance with the guideline on [[WP:CITEVAR|Variation in citation methods]]. Only certain types of material on the English Wikipedia are required to have an inline citation. There is [[Wikipedia:Inline citation#Citation density|no requirement to provide a citation for every sentence]], because multiple sentences may be supported by the same footnote. For advice on which material should be cited, see the guidelines on [[WP:MINREF|When you must use inline citations]], the [[Wikipedia:Good article criteria|Good article criteria]] and [[Wikipedia:when to cite|When to cite]]. For advice on how to organize and format bibliographic citations, see the guideline on [[Wikipedia:Citing sources|Citing sources]] and examples of [[Wikipedia:Citation templates#Examples|Citation templates]]. Footnotes are created using the {{cite.php}} software extension. This extension adds the HTML-like elements {{tag|ref}}, {{tag|references|s}} and {{tag|references}}. The elements are also used in a number of templates; for example, it is becoming more common to use {{tl|reflist}} rather than {{tag|references|s}} as it can style the reference list. ==Overview== {{VE documentation|style=width: 25%; font-size: 87%; float:right}}<!--This is because the visual editor is even more limited than the standard Wikitext editor--> The Footnotes system shows two elements on the page: * A '''Footnote marker''' is displayed in the article's content as a bracketed, superscripted number, letter, or word. Examples shown respectively are: {{dummy ref}}{{dummy ref|a}}{{dummy ref|Note 1}}. This footnote label is linked to the full footnote. Clicking on the footnote marker jumps the page down to the footnote and highlights the citation. If you are using the desktop site and have Javascript enabled, then hovering your cursor over a footnote marker (or touching it on touch devices) will show a pop-up box containing the footnote. * A '''Footnote''' displays the full citation for the source. Together the footnotes are displayed in an ordered list wherever the reference list markup {{tl|reflist}} is placed. Each entry begins with the footnote label in plain text. The entire reference list is formatted in a slightly smaller font. :Each successive footnote label is automatically incremented. Thus the first footnote marker would be {{dummy ref}}, the second would be {{dummy ref|2}} and so on. Custom labels are also incremented: {{dummy ref|a}}{{dummy ref|b}}{{dummy ref|c}}, {{dummy ref|Note 1}} {{dummy ref|Note 2}} {{dummy ref|Note 3}}. :For a single use footnote, the label is followed by a caret (^) that is a backlink to the matching footnote marker. For example: {{dummy footnote|margin=5em}} :If a named footnote is used in the text multiple times, then the footnote has multiple backlinks shown as letters: {{dummy footnote|2|a b c|margin=5em}} :Clicking on the backlink or pressing {{keypress|Alt|←}} returns to the footnote marker. ===Footnotes in action=== The superscript numeral "1" in square brackets at the end of this sentence is an example of a footnote marker.<ref>This is a footnote that contains a citation or note.</ref> {{reflist}} {{anchor|Footnote markers: the basics}} ==Footnotes: the basics== {{See also|Help:Reftags}} To create the footnote marker, determine the point in the page content where the marker is desired and enter the markup with the citation or note inside the {{tag|ref}} tags. For example: {{markup |<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}}</nowiki> |This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}} }} The {{tl|reflist}} template will be explained in the next section. The content inside the {{tag|ref}} will show in the reference list. The ref tags can be added anywhere a citation or note is needed. There must be content inside the tags, else an error will show. ===Where to place ref tags=== Ref tags should follow any punctuation (usually a period), not precede it; see [[WP:REFPUNC]]. There should be no space between the punctuation and the tag: {{markup |<nowiki>...text.<ref>Content of the reference</ref> {{reflist}}</nowiki> |...text.<ref>Content of the reference</ref> &nbsp; &nbsp; {{xt|Right}} {{reflist}} |<nowiki>...text<ref>Content of the reference</ref>. {{reflist}}</nowiki> |...text<ref>Content of the reference</ref>. &nbsp; &nbsp; {{!xt|Wrong (tag before punctuation)}} {{reflist}} |<nowiki>...text. <ref>Content of the reference</ref> {{reflist}}</nowiki> |...text. <ref>Content of the reference</ref> &nbsp; &nbsp; {{!xt|Wrong (space before tag)}} {{reflist}} }} ===Formatting ref tags=== The content of the ref tags can be formatted using most wiki markup or HTML markup, although techniques such as the [[Help:Pipe trick|pipe trick]] and [[Help:Substitution|template substitution]] will not work in footnotes. For example: {{markup |<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}}</nowiki> |This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}} }} The ref tag content may also contain an internal or external link: {{markup |<nowiki>This is page content.<ref>''[http://www.example.org LibreOffice For Starters]'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}}</nowiki> |This is page content.<ref>''[http://www.example.org LibreOffice For Starters]'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{reflist}} }} {{MediaWiki URL rules}} ==Reference lists: the basics== Once any number of footnotes have been inserted into the content, the reference list must be generated. For the basic reference list, add {{tl|reflist}} wherever the list is desired. Once the page is published and viewed, the footnotes will be automatically generated and numbered and the reference list will be generated. The main reference list is placed in a separate section, usually titled "References", "Notes" or the like. {{markup |<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> ==References== {{reflist}}</nowiki> |This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> {{fake heading|sub=2|References}} {{reflist}} }} '''Notes''' {{shortcut|HELP:MULTIREF}} * In some cases, a page has more than one reference list. Until 2014, multiple uses of {{tl|reflist}} on the same page required use of a {{para|close}} parameter; that bug has been fixed and the{{para|close}} parameter may safely be removed. *When editing, {{tag|references|s}} may be seen instead of {{tl|reflist}}. This will automatically display the references in multiple columns, but {{tag|references|s}} does not offer the other advanced features of {{tl|reflist}}. {{anchor|Naming a ref tag so it can be used more than once|Footnote markers: using a source more than once}} ==Footnotes: using a source more than once== {{Shortcut|WP:REFNAME|WP:NAMEDREFS}} {{Anchor|Reference name (naming a ref tag so it can be used more than once)}} {{Anchor|WP:NAMEDREF}} <!-- from WP:NAMEDREFS redirect --> {{See also|Wikipedia:Citing sources#Citing multiple pages of the same source}} You can cite the same source more than once on a page by using '''named references''', also called named footnotes. The syntax to define a named footnote is: :{{tag|ref|params=name="<var>name</var>"|content=<var>content</var>}} To invoke the named footnote: :{{tag|ref|s|params=name="<var>name</var>"}} {{refname rules}} Note that the colon-followed-by-numeral names, like <code>":0"</code>, are currently [[Wikipedia:Village_pump_(technical)/Archive_173#VisualEditor_creating_bad_ref_names|generated by default]] in [[WP:VE|VisualEditor]]. {{markup |<nowiki>This is page content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is more content.<ref name="manchester2002" /> {{reflist}}</nowiki> |This is page content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is more content.<ref name="manchester2002" /> {{reflist}} }} The actual name used can be almost anything, but it is recommended that it have a connection to the citation or note. A common practice is to use the author-year or publisher-year for the reference name. This helps editors remember the name, by associating it with the information that is visible to the reader. Note that the footnote labels are incremented in the order they are used, and that they use the same label when reused, thus the labels can seem out of order: {{markup |<nowiki>This is starter content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is expert content.<ref name="lexington2004">{{cite book|title=OpenOffice for Experts|publisher=Lexington|year=2004|p=18}}</ref> And more starter content.<ref name="manchester2002" /> And more expert content.<ref name="lexington2004" /> {{reflist}}</nowiki> |This is starter content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is expert content.<ref name="lexington2004">{{cite book|title=OpenOffice for Experts|publisher=Lexington|year=2004|p=18}}</ref> And more starter content.<ref name="manchester2002" /> And more expert content.<ref name="lexington2004" /> {{reflist}} }} When using both names and [[#Footnotes:_groups|groups]], the syntax is: :{{tag|ref|params=group="<var>groupname</var>" name="<var>name</var>"|content=Content}} Care should be taken when deleting references to avoid creating a cite error. See [[Wikipedia:Avoiding common mistakes#Deleting...|Avoiding common mistakes]]. ==Reference lists: columns== {{shortcut|H:REFCOLS}} {{hatnote|Columns are not supported by Internet Explorer 9 and below; see {{tl|reflist}} for technical details}} When using {{tag|references|s}} or {{tl|reflist}}, the list can be split into columns. The {{tag|references|s}} tag provides a default column width of 30 [[em (typography)|em]]. {{tl|Reflist}} can be used to set a different column width: :{{tlx|reflist|<var>xx</var>em}}, where <var>xx</var> is the column width in em. The number of columns will automatically be adjusted to the width of the display. It should be used only when necessary, as both the tag and the template have built-in auto-formatting capabilities providing a useful default display in most scenarios. The [[Template:Reflist#Columns|set columns feature]] is now [[deprecated]] in favor of the option described above, which is better suited to flexible formatting for a variety of display screen sizes, ranging from mobile phones and tablets to wide-screen "cinema" displays. Forcing a fixed number of columns has been disabled in mobile view. The number of columns to use is up to the editor, but some major practices include: * {{tlx|Reflist|30em}}: Where there are many footnotes plus a page-width Bibliography subsection: see {{oldid|Ebola virus disease|561190497#References|Ebola virus disease (06:28, 23 June 2013)}} * {{tlx|Reflist|20em}}: Where {{sfnote}} are used; see {{oldid|NBR 224 and 420 Classes|442508215#Notes|NBR 224 and 420 Classes (13:32, 1 August 2011)}}. For example: Using {{tlx|Reflist|30em}} will create columns with a minimum width of 30 em, {{markup|title=30em wide columns |<nowiki>Lorem ipsum.<ref>Source name, access date, etc.</ref> Lorem ipsum dolor sit amet.<ref>Source name, access date, etc.</ref> ==References== {{Reflist|30em}}</nowiki> |Lorem ipsum.<ref>Source name, access date, etc.</ref> Lorem ipsum dolor sit amet.<ref>Source name, access date, etc.</ref> {{fake heading|sub=3|References}} {{Reflist|30em}} }} ==List-defined references== {{shortcut|WP:LDR}} {{main|Help:List-defined references}} Some or all of the footnotes can also be defined within the reference section/list, and invoked in the page content. This keeps those citations in one central location for easier maintenance and avoids cluttering the text. This is purely a source code change{{snd}}the actual display of the citation in the text to a reader is unaffected. For a more detailed evaluation of this method, see [[WP:LDRHOW]]. The syntax is: <syntaxhighlight lang="xml"> {{reflist|refs= <ref name="name1">Content</ref> <ref name="name2">Content</ref> <ref name="name...n">Content</ref> }} </syntaxhighlight> or, alternatively, <syntaxhighlight lang="xml"> <references> <ref name="name1">Content</ref> <ref name="name2">Content</ref> <ref name="name...n">Content</ref> </references> </syntaxhighlight> The footnote markers are included as usual for a named footnote. For example: {{markup |<nowiki>The quick brown fox jumps over the lazy dog.<ref name="LazyDog"/> Amazingly few discotheques provide jukeboxes.<ref name="Jukeboxes"/> How razorback-jumping frogs can level six piqued gymnasts.<ref name="JumpingFrogs"/> ==References== {{reflist|refs= <ref name="Jukeboxes">This is the jukeboxes reference.</ref> <ref name="LazyDog">This is the lazy dog reference.</ref> <ref name="JumpingFrogs">This is the jumping frogs reference.</ref> }}</nowiki> |The quick brown fox jumps over the lazy dog.<ref name="LazyDog"/> Amazingly few discotheques provide jukeboxes.<ref name="Jukeboxes"/> How razorback-jumping frogs can level six piqued gymnasts.<ref name="JumpingFrogs"/> {{fake heading|sub=3|References}} {{reflist|refs= <ref name="LazyDog">This is the lazy dog reference.</ref> <ref name="Jukeboxes">This is the jukeboxes reference.</ref> <ref name="JumpingFrogs">This is the jumping frogs reference.</ref> }}}} The references will be numbered, and appear in the output, ''in the order that they are first referred to in the content,'' regardless of their order within the list. All references in reference list must be referenced in the content, otherwise an error message will be shown. Note that when you use the visual editor, you will not be able to add, remove, or change list-defined references. {{anchor|Embedding references within footnotes}} ==Footnotes: embedding references== {{shortcut|WP:REFNEST}} {{See also|WP:Nesting footnotes}} [[Help:Explanatory notes|Explanatory notes]] may need to be referenced. Because of limitations in the {{cite.php}} software, reference tags cannot be nested; that is, a set of {{tag|ref}} tags cannot be placed inside another pair of {{tag|ref}} tags. Attempting to do so will result in a cite error. The templates {{tl|r}} and {{tl|refn}} can be used to nest references. The markup is: :{{tlx|refn|2=group=''group''|3=name=''name''|4=''content''}} or :{{tlx|r|2=group=''group''|3=name=''name''|4=refn=''content''}} or :{{tlx|r|2=g=''group''|3=n=''name''|4=r=''content''}} (shorter) ''name'' and ''group'' being optional parameters. The ''content'' may include {{tag|ref|o}} tags or another {{tl|r}} template. The other templates listed below in [[#Footnotes: predefined groups|Predefined groups]] are variants of {{tl|refn}} that include a styled group and have a matching styled reference list template. Examples: ===Using {{tl|refn}}=== {{markup |<nowiki>The quick brown fox jumps over the lazy dog.{{refn|group=nb|A footnote.<ref>A reference for the footnote.</ref>}} ==Notes== {{reflist|group=nb}} ==References== {{reflist}} </nowiki> |The quick brown fox jumps over the lazy dog.{{refn|group=nb|A footnote.<ref>A reference for the footnote.</ref>}} {{fake heading|sub=3|Notes}} {{reflist|group=nb}} {{fake heading|sub=3|References}} {{reflist}} }} ===Using {{tl|r}}=== {{markup |<nowiki>The quick brown fox jumps over the lazy dog.{{r|g=nb|r=A footnote.{{r|r=A reference for the footnote.}}}} ==Notes== {{reflist|group=nb}} ==References== {{reflist}} </nowiki> |The quick brown fox jumps over the lazy dog.{{r|g=nb|r=A footnote.{{r|r=A reference for the footnote.}}}} {{fake heading|sub=3|Notes}} {{reflist|group=nb}} {{fake heading|sub=3|References}} {{reflist}} }} The use of the magic word <code>#tag:ref</code> is valid, but the sequence of parameters is invariant and nonintuitive. {{tl|r}} as well as {{tl|refn}} and its variants use this markup internally. :<code>&#123;&#123;#tag:ref|<var>refcontent</var>|group=<var>groupname</var>|name=<var>name</var>}}</code> {{anchor|Grouping footnotes}} ==Footnotes: groups== {{shortcut|WP:REFGROUP|WP:CITELABEL}} Sometimes it is useful to group the footnotes into separate lists, for example to separate explanatory notes from references, or to list references for tables, image captions, infoboxes and navboxes. The sequence of footnote labels is independent in each group. The syntax to define a footnote with a group is: :{{tag|ref|params=group=<var>groupname</var>|content=Content}} The footnote marker group name ''must'' be enclosed in quotes if the group name includes a space, else a cite error will occur, otherwise quotes are optional. The syntax for the reference list with a group is: :{{tlx|reflist|2=group=<var>groupname</var>}} The reference list group name does not need to be enclosed in quotes. Example: {{markup |<nowiki>This part of the text requires clarification,<ref group=note>Listed separately from the citation</ref> whereas the entire text is cited.<ref>Citation.</ref> And this needs even more clarification.<ref group=note>Another note</ref> ==Notes== {{reflist|group=note}} ==References== {{reflist}}</nowiki> |This part of the text requires clarification,<ref group=note>Listed separately from the citation</ref> whereas the entire text is cited.<ref>Citation</ref> And this needs even more clarification.<ref group=note>Another note</ref> {{fake heading|sub=3|Notes}} {{reflist|group=note}} {{fake heading|sub=3|References}} {{reflist}} }} Note that the footnote labels in the reference list show only the numbers and not the group name. When using both names and groups, the syntax is: :{{tag|ref|params=group="<var>groupname</var>" name="<var>name</var>"|content=Content}} For the repeated note: :{{tag|ref|s|params=group="<var>groupname</var>" name="<var>name</var>"}} ==Footnotes: predefined groups== {{shortcut|H:PREGROUP|WP:EXPLNOTE}} {{for|technical details|Help:Cite link labels}} {{for|Shortened footnotes with explanatory footnotes|Help:Shortened footnotes#Explanatory notes}} {{See also|Wikipedia:Citing sources#Variation in citation methods|Wikipedia:Manual of Style/Layout#Notes and references}} <section begin=pregroup /><!--this section is used as the documentation for the efn/notelist templates-->{{anchor|footnotes_predefined_groups}} There are several predefined groups that can have a reference list styled so that the label (a superscripted character within square brackets, e.g., {{dummy ref|1}}) of an [[Help:Explanatory notes|explanatory note]] or citation ({{aka}} footnote, reference) matches and links to the note marker label located in the main text and the label in front of the note's text in the appropriate group's list. There can be [[Wikipedia:Citing sources#Separating citations from explanatory footnotes|more than one of these groups' lists]] in the Notes, References and other similarly purposed sections. These predefined note and citation groups have templates that make the [[wikitext]] markup simpler. These templates also allow a standard reference to be inserted, so that an explanatory note can have a reference, or citations can be nested. '''Note:''' If the note's text has a reference name that is used more than once, the labels will still match, but the clickable alpha characters that toggle the note's display will be ''next to'' the note's label, with links to the multiple locations of its marker in the main text. See [[Help:Footnotes#Footnotes: using a source more than once|WP:REFNAME]] and the first point below in [[#Issues|§&nbsp;Issues]]. ===Template use by reference group type=== <section begin=pregrouptable /> {| class="wikitable" |- style="vertical-align:top;" ! Group type !! Footnote marker template<br/>or markup !! Reference list<br/> template !! Sample labels |- |rowspan=3|''none by default, but optionally any'' || {{tag|ref}} |rowspan=3| {{tlx|reflist}} |rowspan=3| 1 2 3 4 5 6 7 8 9 10 |- | {{tlx|r}} (for nested references) |- | {{tlx|refn}} (for nested references) |- | lower-alpha || {{tlx|efn}}<br />{{tlx|efn-la}} || {{tlx|notelist}}<br />{{tlx|notelist-la}} || a b c d e f g h i j |- | upper-alpha || {{tlx|efn-ua}} || {{tlx|notelist-ua}} || A B C D E F G H I J |- | lower-roman || {{tlx|efn-lr}} || {{tlx|notelist-lr}} || i ii iii iv v vi vii viii ix x |- | upper-roman || {{tlx|efn-ur}} || {{tlx|notelist-ur}} || I II III IV V VI VII VIII IX X |- | lower-greek || {{tlx|efn-lg}} || {{tlx|notelist-lg}} || α β γ δ ε ζ η θ ι κ |- |note || {{tlx|NoteTag}} || {{tlx|NoteFoot}} || note 1 note 2 note 3 |}<section end=pregrouptable /> * {{tlx|efn}} supports {{para|name}} and {{para|group}}, which work the same as the parameters in {{tag|ref|o}} (see, for instance, the 3rd and 4th examples below). Do not enclose values in quotes. * {{tlx|notelist}} supports the {{para|colwidth}}, {{para|refs}}, and {{para|group}} parameters, which work the same as the parameters in {{tlx|reflist}}. Do not enclose values in quotes. In these examples, the footnote labels match between the footnote marker and the reference list: {{markup|title=With lower-alpha labels |<nowiki>Lorem ipsum dolor sit amet.{{efn|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|Footnote 3}} {{notelist}} </nowiki> |Lorem ipsum dolor sit amet.{{efn|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|Footnote 3}} {{notelist}} }} {{markup|title=With lower-roman labels |<nowiki>Lorem ipsum dolor sit amet.{{efn-lr|Footnote 1}} Consectetur adipisicing elit.{{efn-lr|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn-lr|Footnote 3}} {{notelist-lr}} </nowiki> |Lorem ipsum dolor sit amet.{{efn-lr|Footnote 1}} Consectetur adipisicing elit.{{efn-lr|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn-lr|Footnote 3}} {{notelist-lr}} }} {{markup|title=With named references |<nowiki>Lorem ipsum dolor sit amet.{{efn|name=fn1|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}} {{notelist}} </nowiki> |Lorem ipsum dolor sit amet.{{efn|name=fn1|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}} {{notelist}} }} Note: With named references you only need to add the details once. For each use after the first you just need to re-use the reference name. Doing this will not cause the inline superscript to display a custom name. {{markup|title=Named references can also be defined in the notelist |<nowiki>Lorem ipsum dolor sit amet.{{efn|name=fn1}} Consectetur adipisicing elit.{{efn|name=fn2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}} {{notelist|refs= {{efn|name=fn1|Very long footnote 1}} {{efn|name=fn2|Very long footnote 2}} }} </nowiki> |Lorem ipsum dolor sit amet.{{efn|name=fn1}} Consectetur adipisicing elit.{{efn|name=fn2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}} {{notelist|refs= {{efn|name=fn1|Very long footnote 1}} {{efn|name=fn2|Very long footnote 2}} }} }} '''Note''': Due to limitations in the MediaWiki software, do not use list defined footnotes that contain references. ===Issues=== * Multiple backlink labels (see [[WP:REFNAME]]) are always styled as lower-alpha. This can be confusing when {{tlx|efn}} is used. See the note in the introduction of [[#footnotes_predefined_groups|this section]], above. * The entries in the reference list will show the default decimal styling if: ** The value for {{para|group}} in {{tlx|reflist}} or {{tag|references|s}} does not exactly match one of the predefined values; use {{tlx|efn}} or variant as {{para|group}} will not be needed. ** The value for {{para|group}} in {{tlx|reflist}} or {{tag|references|s}} is enclosed by quotes; use {{tlx|efn}} or variant as {{para|group}} will not be needed. ** {{tlx|reflist}} is indented with the {{code|:}} markup. ** {{tag|references|s}} is used instead of {{tlx|reflist}} * The entries in the reference list will have no styling if: ** A reference is included in {{tlx|navbox}} or one of the variants and the style is set to <code>bodyclass=hlist</code>; to resolve this, replace the style with <code>listclass=hlist</code>.<section end=pregroup /> * If the note text contains an "=" sign, precede the note text with {{para|1}}, like this: <code><nowiki>{{efn|name=fn1|1=Very long footnote with an equation, 2+2=4}}</nowiki></code> ==Reference lists: automatically generated== {{main|Help:Automatically generated reference list}} A page with {{tag|ref|o}} tags but no reference list markup used to display an error, except on talk and user pages. In recent versions of Wikipedia, the error no longer appears; instead an automatically generated reference list (AGRL) is displayed at the bottom of the page. Compared to the reference lists on properly formatted pages, an AGRL can be confusing to both readers and editors. But it is easily corrected by adding reference list markup such as the following. Add it at the position where the reference list would normally appear. <syntaxhighlight lang="wikitext" style="width: 10.6em;"> ==References== {{reflist}} </syntaxhighlight> On talk pages, the {{tl|reflist-talk}} template can be used to add a reference list to a specific discussion. {{anchor|Citing one book repeatedly with different page numbers}} ==Footnotes: page numbers== {{main|Help:References and page numbers}} Suppose you would like to cite one book, but different facts appear on different pages. You would like to cite the book again and again, but point each fact to the proper page. Suppose one fact is on page 8, a different fact on page 12, a third fact on page 18, a fourth fact on page 241. You could put a line in the "pages" parameter saying "see pages 8, 12, 18, 241" but a fact-checker might have to check all of them before figuring out the right one. Or, you could duplicate the entire citation for the book in each instance, but that would be redundant. One common approach is to use [[Help:Shortened footnotes|shortened citations]]. The long citation to support the shortened citations can either be placed as a bullet point in a separate ''References section'' after the ''Footnotes section''; or it can be placed in the first footnote to cite the source (with the initial relevant page number[s]). The remaining footnotes will use shortened citations (these usually contain the author's last name, the date of publication, and the relevant page number[s]). A less common approach is to attach a {{tlx|rp|8}} right after the footnote marker and replace the "8" with the appropriate page number. For example: {{markup |<nowiki>Schudson said the Constitution shaped citizenship in fundamental ways.<ref name="Schudson">{{Cite book |last=Schudson |first=Michael |title=The Good Citizen: A Brief History of American Civic Life |publisher=Simon & Schuster |date=1998 |url=https://books.google.com/books?id=aawMAQAAMAAJ |isbn=0-684-82729-8}}</ref>{{rp|8}} But elections in early American politics did not generate much interest<ref name="Schudson"/>{{rp|12}} while "open discussion of differences" was generally avoided.<ref name="Schudson"/>{{rp|18}} Citizenship later shifted to a polity of essentially "self-absorbed citizens", according to his analysis.<ref name="Schudson"/>{{rp|241}}</nowiki> |Schudson said the Constitution shaped citizenship in fundamental ways.<ref name="Schudson">{{Cite book |last=Schudson |first=Michael |title=The Good Citizen: A Brief History of American Civic Life |publisher=Simon & Schuster |date=1998 |url=https://books.google.com/books?id=aawMAQAAMAAJ |isbn=0-684-82729-8}}</ref>{{rp|8}} But elections in early American politics did not generate much interest<ref name="Schudson"/>{{rp|12}} while "open discussion of differences" was generally avoided.<ref name="Schudson"/>{{rp|18}} Citizenship later shifted to a polity of essentially "self-absorbed citizens", according to his analysis.<ref name="Schudson"/>{{rp|241}} {{fake heading|sub=3|References}} {{reflist}} }} {{tlx|r}} compactly combines the functions of <code><nowiki><ref></nowiki></code> and {{t|rp}}: <code><nowiki>{{r|Schudson}}</nowiki></code> is equivalent to <code><nowiki><ref name="Schudson"/></nowiki></code> and <code><nowiki>{{r|Schudson|p=241}}</nowiki></code> is equivalent to <code><nowiki><ref name="Schudson"/>{{rp|241}}</nowiki></code>. ==Previewing edits== When you [[Help:Section#Section editing|edit a single section]] of a page, the footnotes list will be visible when you [[Help:Show preview|preview your edits]] under the heading "Preview of references", although you will still not be able to see named references whose definition is outside the section you are editing. Tools that can be used are the [[user:js/ajaxPreview]] or [[User:Anomie/ajaxpreview.js]] scripts or the [[User:Cacycle/wikEd|wikEd]] gadget. ==RefToolbar== {{main|Wikipedia:RefToolbar/2.0}} [[File:Cite web named ref 01.png|thumb|400px|Using the citation toolbar to name the first reference.]] [[File:Citation toolbar named ref.png|thumb|400px|Using the citation toolbar to insert additional references to the first source.]] You can use the citation toolbar to name references. When you first create a reference, you can enter a value in the "Ref name" box. When you want to reuse this reference, click the "Named references" button on the citation toolbar and choose which reference you would like to insert. {{clear}} ==Issues and limitations== * {{cite.php|bug}} * [[Help:Substitution|subst:]] does not work within {{tag|ref|o}} tags. {{phab|T4700}} * The [[Help:Pipe trick|pipe trick]] does not work within {{tag|ref|o}} tags. {{phab|T4700}} == Flagging inadequate referencing == {{See also | Template: Unreferenced/doc#Usage|Template:Citation style}} * The template {{Tlx|Refimprove}} should be added to articles where there are '''some, but insufficient, inline citations to support the material''' currently in the article. For [[WP:BLP|biographies of living persons]], use {{tlx|BLP sources}} instead. * The template {{Tlx|Unreferenced}} should be added to articles with '''no references at all'''. For biographies of living persons, use {{tlx|BLP unsourced}} instead. * The template {{Tlx|Unreferenced section}} is for '''individual sections that have no citations''' in articles that have at least one citation somewhere else. For biographies of living persons, use {{tlx|BLP unsourced section}} instead. * The template {{Tlx|Medref}} is specifically for articles '''needing additional ''medical'' references'''. ==See also== * [[Template:Harvard citation#Using CITEREF directly]] and {{tl|sfnref}} * [[Wikipedia:Citing sources/Further considerations]]—a how-to article with some additional considerations for citing sources * [[Wikipedia:Help desk]]—to ask questions about using footnotes in articles if you were not able to find the information you need on this help page. *[[Template:Editor tools]]—{{tl|Editor tools}} {{Wikipedia referencing}} {{Help navigation}} [[Category:Wikipedia editor help]] [[Category:Wikipedia citation administration]] 5da4bd8b070c8a7aaa5dac9fc84a9f447a9061cd Template:Transwiki guide 10 587 1323 1322 2023-10-01T10:10:57Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Transwiki_guide]] wikitext text/x-wiki {{ombox |style=border:#38C400 1px solid; |image=[[File:Edit-copy purple-wikit.svg|48px|alt=|link=]] |text={{{text|This project or template has a [[Help:Transwiki guide|transwiki guide]] to help editors adapt it to a remote wiki when this cannot be done by simply copying the codes of one single template.<br/>See {{#if:{{{1|}}}|[[{{{1}}}]]|[[{{FULLPAGENAME}}/Transwiki guide]]}} for instructions.}}} |small={{{small|}}} }}<includeonly>[[Category:Transwiki guide|{{{2|{{PAGENAME}}}}}]]</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> c25c9124a8e52dcec5a026adb2cc071776579ab7 Template:Efn/doc 10 588 1325 1324 2023-10-01T10:10:59Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Efn/doc]] wikitext text/x-wiki {{Documentation subpage}} {{Transwiki guide |small=yes |text=See [[Template:Reflist/Transwiki guide|'''this information''']] on copying this template and modifying it for use on another wiki.}} <!-- Categories and interwikis go at the bottom of this page. --> {{High-use}} '''Explanatory footnotes''' or '''Efn''' are footnotes which provide something other than, or more than, a reference to a [[WP:Reliable sources|source]] that supports the accompanying text. The first unnamed parameter is displayed as the content of the footnote. Note that if the note's content contains an "=" character, a reference error will be displayed; precede the content with {{para|1}} (or one of its aliases, {{para|text}}, {{para|reference}}, or {{para|content}}) to fix the error. The following explanation is transcluded from [[Help:Footnotes#Footnotes: predefined groups]]. {{#section:Help:footnotes|pregroup}} ==Example articles== * [[Logic Theorist]] (a short article showing basic usage) * [[Chinese room]] (a long and complex article which uses all the features: named footnotes, list defined notes, etc.) * [[Empire of Brazil]] * [[John Diefenbaker]] (with name= and notes in <nowiki>{{notes}}</nowiki>) * [[USS Monitor|USS ''Monitor'']] <includeonly>{{sandbox other|| <!-- Categories and interwikis go here: --> [[Category:Explanatory footnote templates]] [[Category:Templates that generate named references]] }}</includeonly> == Template data == Description: <templatedata> { "description": "Inserts an explanatory footnote. Notes can be named and grouped.", "params": { "1": { "aliases": [ "reference", "text", "content" ], "label": "Note", "description": "Text of the note", "type": "content", "suggested": true }, "name": { "label": "Ref. name", "description": "Reference name of the note", "type": "string", "suggested": true }, "group": { "label": "Reference group", "description": "Styled group to which the note belongs", "type": "string", "suggested": true, "suggestedvalues": [ "upper-alpha", "lower-greek", "note", "lower-roman", "upper-roman" ] } } } </templatedata> 425513f20ca710aa83ef00ed07b04319a3d1cef9 Module:Coordinates 828 589 1327 1326 2023-10-01T10:12:22Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Coordinates]] Scribunto text/plain --[[ This module is intended to replace the functionality of {{Coord}} and related templates. It provides several methods, including {{#invoke:Coordinates | coord }} : General function formatting and displaying coordinate values. {{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal degree values to DMS format. {{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format to decimal degree format. {{#invoke:Coordinates | link }} : Export the link used to reach the tools ]] require('strict') local math_mod = require("Module:Math") local coordinates = {}; local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true); local current_page = mw.title.getCurrentTitle() local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' ); local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '&params=' --[[ Helper function, replacement for {{coord/display/title}} ]] local function displaytitle(coords) return mw.getCurrentFrame():extensionTag{ name = 'indicator', args = { name = 'coordinates' }, content = '<span id="coordinates">[[Geographic coordinate system|Coordinates]]: ' .. coords .. '</span>' } end --[[ Helper function, used in detecting DMS formatting ]] local function dmsTest(first, second) if type(first) ~= 'string' or type(second) ~= 'string' then return nil end local s = (first .. second):upper() return s:find('^[NS][EW]$') or s:find('^[EW][NS]$') end --[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]] local function makeInvokeFunc(funcName) return function (frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Coord' }) return coordinates[funcName](args, frame) end end --[[ Helper function, handle optional args. ]] local function optionalArg(arg, supplement) return arg and arg .. supplement or '' end --[[ Formats any error messages generated for display ]] local function errorPrinter(errors) local result = "" for i,v in ipairs(errors) do result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />' end return result end --[[ Determine the required CSS class to display coordinates Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself default is the mode as specificied by the user when calling the {{coord}} template mode is the display mode (dec or dms) that we will need to determine the css class for ]] local function displayDefault(default, mode) if default == "" then default = "dec" end if default == mode then return "geo-default" else return "geo-nondefault" end end --[[ specPrinter Output formatter. Takes the structure generated by either parseDec or parseDMS and formats it for inclusion on Wikipedia. ]] local function specPrinter(args, coordinateSpec) local uriComponents = coordinateSpec["param"] if uriComponents == "" then -- RETURN error, should never be empty or nil return "ERROR param was empty" end if args["name"] then uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"]) end local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">' .. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> ' .. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>' .. '</span>' local lat = tonumber( coordinateSpec["dec-lat"] ) or 0 local geodeclat if lat < 0 then -- FIXME this breaks the pre-existing precision geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S" else geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N" end local long = tonumber( coordinateSpec["dec-long"] ) or 0 local geodeclong if long < 0 then -- FIXME does not handle unicode minus geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W" else geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E" end local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">' .. geodeclat .. ' ' .. geodeclong .. '</span>' local geonumhtml = '<span class="geo">' .. coordinateSpec["dec-lat"] .. '; ' .. coordinateSpec["dec-long"] .. '</span>' local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>' .. '<span class="geo-multi-punct">&#xfeff; / &#xfeff;</span>' .. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">'; if not args["name"] then inner = inner .. geodechtml .. '<span style="display:none">&#xfeff; / ' .. geonumhtml .. '</span></span>' else inner = inner .. '<span class="vcard">' .. geodechtml .. '<span style="display:none">&#xfeff; / ' .. geonumhtml .. '</span>' .. '<span style="display:none">&#xfeff; (<span class="fn org">' .. args["name"] .. '</span>)</span></span></span>' end local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css' return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = stylesheetLink } } .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents .. ' ' .. inner .. ']</span>' end --[[ Helper function, convert decimal to degrees ]] local function convert_dec2dms_d(coordinate) local d = math_mod._round( coordinate, 0 ) .. "°" return d .. "" end --[[ Helper function, convert decimal to degrees and minutes ]] local function convert_dec2dms_dm(coordinate) coordinate = math_mod._round( coordinate * 60, 0 ); local m = coordinate % 60; coordinate = math.floor( (coordinate - m) / 60 ); local d = coordinate % 360 .."°" return d .. string.format( "%02d′", m ) end --[[ Helper function, convert decimal to degrees, minutes, and seconds ]] local function convert_dec2dms_dms(coordinate) coordinate = math_mod._round( coordinate * 60 * 60, 0 ); local s = coordinate % 60 coordinate = math.floor( (coordinate - s) / 60 ); local m = coordinate % 60 coordinate = math.floor( (coordinate - m) / 60 ); local d = coordinate % 360 .."°" return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s ) end --[[ Helper function, convert decimal latitude or longitude to degrees, minutes, and seconds format based on the specified precision. ]] local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) local coord = tonumber(coordinate) local postfix if coord >= 0 then postfix = firstPostfix else postfix = secondPostfix end precision = precision:lower(); if precision == "dms" then return convert_dec2dms_dms( math.abs( coord ) ) .. postfix; elseif precision == "dm" then return convert_dec2dms_dm( math.abs( coord ) ) .. postfix; elseif precision == "d" then return convert_dec2dms_d( math.abs( coord ) ) .. postfix; end end --[[ Convert DMS format into a N or E decimal coordinate ]] local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str) local degrees = tonumber(degrees_str) local minutes = tonumber(minutes_str) or 0 local seconds = tonumber(seconds_str) or 0 local factor = 1 if direction == "S" or direction == "W" then factor = -1 end local precision = 0 if seconds_str then precision = 5 + math.max( math_mod._precision(seconds_str), 0 ); elseif minutes_str and minutes_str ~= '' then precision = 3 + math.max( math_mod._precision(minutes_str), 0 ); else precision = math.max( math_mod._precision(degrees_str), 0 ); end local decimal = factor * (degrees+(minutes+seconds/60)/60) return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based. end --[[ Checks input values to for out of range errors. ]] local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong ) local errors = {}; lat_d = tonumber( lat_d ) or 0; lat_m = tonumber( lat_m ) or 0; lat_s = tonumber( lat_s ) or 0; long_d = tonumber( long_d ) or 0; long_m = tonumber( long_m ) or 0; long_s = tonumber( long_s ) or 0; if strong then if lat_d < 0 then table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"}) end if long_d < 0 then table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"}) end --[[ #coordinates is inconsistent about whether this is an error. If globe: is specified, it won't error on this condition, but otherwise it will. For not simply disable this check. if long_d > 180 then table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"}) end ]] end if lat_d > 90 then table.insert(errors, {source, "latitude degrees > 90"}) end if lat_d < -90 then table.insert(errors, {source, "latitude degrees < -90"}) end if lat_m >= 60 then table.insert(errors, {source, "latitude minutes >= 60"}) end if lat_m < 0 then table.insert(errors, {source, "latitude minutes < 0"}) end if lat_s >= 60 then table.insert(errors, {source, "latitude seconds >= 60"}) end if lat_s < 0 then table.insert(errors, {source, "latitude seconds < 0"}) end if long_d >= 360 then table.insert(errors, {source, "longitude degrees >= 360"}) end if long_d <= -360 then table.insert(errors, {source, "longitude degrees <= -360"}) end if long_m >= 60 then table.insert(errors, {source, "longitude minutes >= 60"}) end if long_m < 0 then table.insert(errors, {source, "longitude minutes < 0"}) end if long_s >= 60 then table.insert(errors, {source, "longitude seconds >= 60"}) end if long_s < 0 then table.insert(errors, {source, "longitude seconds < 0"}) end return errors; end --[[ parseDec Transforms decimal format latitude and longitude into the structure to be used in displaying coordinates ]] local function parseDec( lat, long, format ) local coordinateSpec = {} local errors = {} if not long then return nil, {{"parseDec", "Missing longitude"}} elseif not tonumber(long) then return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}} end errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false ); coordinateSpec["dec-lat"] = lat; coordinateSpec["dec-long"] = long; local mode = coordinates.determineMode( lat, long ); coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} if format then coordinateSpec.default = format else coordinateSpec.default = "dec" end return coordinateSpec, errors end --[[ parseDMS Transforms degrees, minutes, seconds format latitude and longitude into the a structure to be used in displaying coordinates ]] local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format ) local coordinateSpec, errors, backward = {}, {} lat_f = lat_f:upper(); long_f = long_f:upper(); -- Check if specified backward if lat_f == 'E' or lat_f == 'W' then lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true; end errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true ); if not long_d then return nil, {{"parseDMS", "Missing longitude" }} elseif not tonumber(long_d) then return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }} end if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then if lat_f:upper() == 'S' then lat_d = '-' .. lat_d; end if long_f:upper() == 'W' then long_d = '-' .. long_d; end return parseDec( lat_d, long_d, format ); end end coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}} coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}} if format then coordinateSpec.default = format else coordinateSpec.default = "dms" end return coordinateSpec, errors, backward end --[[ Check the input arguments for coord to determine the kind of data being provided and then make the necessary processing. ]] local function formatTest(args) local result, errors local backward, primary = false, false local function getParam(args, lim) local ret = {} for i = 1, lim do ret[i] = args[i] or '' end return table.concat(ret, '_') end if not args[1] then -- no lat logic return errorPrinter( {{"formatTest", "Missing latitude"}} ) elseif not tonumber(args[1]) then -- bad lat logic return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} ) elseif not args[4] and not args[5] and not args[6] then -- dec logic result, errors = parseDec(args[1], args[2], args.format) if not result then return errorPrinter(errors); end -- formatting for geohack: geohack expects D_N_D_E notation or D;D notation -- wikiminiatlas doesn't support D;D notation -- #coordinates parserfunction doesn't support negative decimals with NSWE result.param = table.concat({ math.abs(tonumber(args[1])), ((tonumber(args[1]) or 0) < 0) and 'S' or 'N', math.abs(tonumber(args[2])), ((tonumber(args[2]) or 0) < 0) and 'W' or 'E', args[3] or ''}, '_') elseif dmsTest(args[4], args[8]) then -- dms logic result, errors, backward = parseDMS(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args.format) if args[10] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 9) elseif dmsTest(args[3], args[6]) then -- dm logic result, errors, backward = parseDMS(args[1], args[2], nil, args[3], args[4], args[5], nil, args[6], args['format']) if args[8] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 7) elseif dmsTest(args[2], args[4]) then -- d logic result, errors, backward = parseDMS(args[1], nil, nil, args[2], args[3], nil, nil, args[4], args.format) if args[6] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 5) else -- Error return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]' end result.name = args.name local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'} for _, v in ipairs(extra_param) do if args[v] then table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' }) end end local ret = specPrinter(args, result) if #errors > 0 then ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]' end return ret, backward end --[[ Generate Wikidata tracking categories. ]] local function makeWikidataCategories(qid) local ret local qid = qid or mw.wikibase.getEntityIdForCurrentPage() if mw.wikibase and current_page.namespace == 0 then if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype if snaktype == 'value' then -- coordinates exist both here and on Wikidata, and can be compared. ret = 'Coordinates on Wikidata' elseif snaktype == 'somevalue' then ret = 'Coordinates on Wikidata set to unknown value' elseif snaktype == 'novalue' then ret = 'Coordinates on Wikidata set to no value' end else -- We have to either import the coordinates to Wikidata or remove them here. ret = 'Coordinates not on Wikidata' end end if ret then return string.format('[[Category:%s]]', ret) else return '' end end --[[ link Simple function to export the coordinates link for other uses. Usage: {{#invoke:Coordinates | link }} ]] function coordinates.link(frame) return coord_link; end --[[ dec2dms Wrapper to allow templates to call dec2dms directly. Usage: {{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix | negative_suffix | precision }} decimal_coordinate is converted to DMS format. If positive, the positive_suffix is appended (typical N or E), if negative, the negative suffix is appended. The specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail to use. ]] coordinates.dec2dms = makeInvokeFunc('_dec2dms') function coordinates._dec2dms(args) local coordinate = args[1] local firstPostfix = args[2] or '' local secondPostfix = args[3] or '' local precision = args[4] or '' return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) end --[[ Helper function to determine whether to use D, DM, or DMS format depending on the precision of the decimal input. ]] function coordinates.determineMode( value1, value2 ) local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) ); if precision <= 0 then return 'd' elseif precision <= 2 then return 'dm'; else return 'dms'; end end --[[ dms2dec Wrapper to allow templates to call dms2dec directly. Usage: {{#invoke:Coordinates | dms2dec | direction_flag | degrees | minutes | seconds }} Converts DMS values specified as degrees, minutes, seconds too decimal format. direction_flag is one of N, S, E, W, and determines whether the output is positive (i.e. N and E) or negative (i.e. S and W). ]] coordinates.dms2dec = makeInvokeFunc('_dms2dec') function coordinates._dms2dec(args) local direction = args[1] local degrees = args[2] local minutes = args[3] local seconds = args[4] return convert_dms2dec(direction, degrees, minutes, seconds) end --[[ coord Main entry point for Lua function to replace {{coord}} Usage: {{#invoke:Coordinates | coord }} {{#invoke:Coordinates | coord | lat | long }} {{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }} ... Refer to {{coord}} documentation page for many additional parameters and configuration options. Note: This function provides the visual display elements of {{coord}}. In order to load coordinates into the database, the {{#coordinates:}} parser function must also be called, this is done automatically in the Lua version of {{coord}}. ]] coordinates.coord = makeInvokeFunc('_coord') function coordinates._coord(args) if not tonumber(args[1]) and not args[2] then args[3] = args[1]; args[1] = nil local entity = mw.wikibase.getEntityObject(args.qid) if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude if precision then precision = -math_mod._round(math.log(precision)/math.log(10),0) args[1] = math_mod._round(args[1],precision) args[2] = math_mod._round(args[2],precision) end end end local contents, backward = formatTest(args) local Notes = args.notes or '' local Display = args.display and args.display:lower() or 'inline' -- it and ti are short for inline,title and title,inline local function isInline(s) -- Finds whether coordinates are displayed inline. return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti' end local function isInTitle(s) -- Finds whether coordinates are displayed in the title. return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti' end local function coord_wrapper(in_args) -- Calls the parser function {{#coordinates:}}. return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or '' end local text = '' if isInline(Display) then text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>' end if isInTitle(Display) then -- Add to output since indicator content is invisible to Lua later on if not isInline(Display) then text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>' end text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid) end if not args.nosave then local page_title, count = mw.title.getCurrentTitle(), 1 if backward then local tmp = {} while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end tmp.count = count; count = 2*(count-1) while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end for i, v in ipairs(tmp) do args[i] = v end else while count <= 9 do args[count] = (args[count] or ''); count = count+1 end end if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end args.notes, args.format, args.display = nil text = text .. coord_wrapper(args) end return text end --[[ coord2text Extracts a single value from a transclusion of {{Coord}}. IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED. Usage: {{#invoke:Coordinates | coord2text | {{Coord}} | parameter }} Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source ]] function coordinates._coord2text(coord,type) if coord == '' or type == '' or not type then return nil end type = mw.text.trim(type) if type == 'lat' or type == 'long' then local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ') if type == 'lat' then result, negative = result[1], 'S' else result, negative = result[2], 'W' end result = mw.text.split(result, '°') if result[2] == negative then result[1] = '-'..result[1] end return result[1] else return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]') end end function coordinates.coord2text(frame) return coordinates._coord2text(frame.args[1],frame.args[2]) end --[[ coordinsert Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}. IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED. Usage: {{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }} Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation. ]] function coordinates.coordinsert(frame) -- for the 2nd or later integer parameter (the first is the coord template, as above) for i, v in ipairs(frame.args) do if i ~= 1 then -- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then -- find from the params= up to the first possibly-present underscore -- and append the i_th coordinsert parameter and a space -- IDK why we're adding a space but it does seem somewhat convenient frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ') end end end if frame.args.name then -- if we can't find the vcard class if not mw.ustring.find(frame.args[1], '<span class="vcard">') then -- take something that looks like a coord template and add the vcard span with class and fn org class local namestr = frame.args.name frame.args[1] = mw.ustring.gsub( frame.args[1], '(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)', '%1<span class="vcard">%2<span style="display:none">&#xfeff; (<span class="fn org">' .. namestr .. '</span>)</span></span>%3' ) -- then find anything from coordinates parameters to the 'end' and attach the title parameter frame.args[1] = mw.ustring.gsub( frame.args[1], '(&params=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ' ) end end -- replace the existing indicator with a new indicator using the modified content frame.args[1] = mw.ustring.gsub( frame.args[1], '(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127', function (inline, coord) return inline .. displaytitle(coord) end ) return frame.args[1] end return coordinates 6162d7e98fcf6faab5809049e0a48bb3e67d88e3 Template:Sister project 10 590 1329 1328 2023-10-01T10:12:28Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Sister_project]] wikitext text/x-wiki {{Side box | metadata=no | position = {{{position|}}} | image = {{#switch: {{{image|}}} | none = <!-- "image=none", do nothing --> | = <!-- No image fed, select an image --> [[File:{{#switch: {{lc: {{{project|}}} }} | commons|c = Commons-logo.svg | meta|metawiki|m = Wikimedia Community Logo.svg | wikibooks|wbk|wb|b = Wikibooks-logo-en-noslogan.svg | wikidata|data = Wikidata-logo.svg | wikiquote|quote|wqt|q = Wikiquote-logo.svg | wikipedia|wp|w|iw = Wikipedia-logo-v2.svg | wikisource|source|ws|s = Wikisource-logo.svg | wiktionary|wikt|wkt|wdy|d = Wiktionary-logo-en-v2.svg | wikinews|news|wnw|n = Wikinews-logo.svg | wikispecies|species = Wikispecies-logo.svg | wikiversity|wvy|v = Wikiversity logo 2017.svg | wikivoyage|voyage|voy = Wikivoyage-Logo-v3-icon.svg | mediawiki|mw = MediaWiki-2020-icon.svg | outreachwiki|outreach = Wikimedia Outreach.png | incubator = Incubator-notext.svg | #default = Wikimedia-logo.svg }}|40x40px|class=noviewer|alt=|link= ]] | #default = {{{image|}}} }} | textclass = {{{textclass|plainlist}}} | textstyle = {{{textstyle|}}} | text = {{{text}}} | below = {{{below|}}} | imageright = {{{imageright|}}} | class = plainlinks sistersitebox }}<noinclude>{{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> 0929197ea6267d9d63d80f9f8432fe1cfbe7ace8 Template:Coord 10 591 1331 1330 2023-10-01T10:12:28Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Coord]] wikitext text/x-wiki <includeonly>{{#invoke:Coordinates|coord}}</includeonly><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 05c1e2a95ff86fa91442c704f36a9f125b603492 Module:Coordinates/styles.css 828 592 1333 1332 2023-10-01T10:12:29Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Coordinates/styles.css]] sanitized-css text/css /* {{pp-template}} */ /* Geographical coordinates defaults. The classes "geo", "longitude", and "latitude" are used by the [[Geo microformat]]. */ .geo-default, .geo-dms, .geo-dec { display: inline; } .geo-nondefault, .geo-multi-punct, .geo-inline-hidden { display: none; } .longitude, .latitude { white-space: nowrap; } 1b5d036501a9f6bc9dcf3c9117e8d6bc97507290 Module:Math 828 593 1335 1334 2023-10-01T10:12:29Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Math]] Scribunto text/plain --[[ This module provides a number of basic mathematical operations. ]] local yesno, getArgs -- lazily initialized local p = {} -- Holds functions to be returned from #invoke, and functions to make available to other Lua modules. local wrap = {} -- Holds wrapper functions that process arguments from #invoke. These act as intemediary between functions meant for #invoke and functions meant for Lua. --[[ Helper functions used to avoid redundant code. ]] local function err(msg) -- Generates wikitext error messages. return mw.ustring.format('<strong class="error">Formatting error: %s</strong>', msg) end local function unpackNumberArgs(args) -- Returns an unpacked list of arguments specified with numerical keys. local ret = {} for k, v in pairs(args) do if type(k) == 'number' then table.insert(ret, v) end end return unpack(ret) end local function makeArgArray(...) -- Makes an array of arguments from a list of arguments that might include nils. local args = {...} -- Table of arguments. It might contain nils or non-number values, so we can't use ipairs. local nums = {} -- Stores the numbers of valid numerical arguments. local ret = {} for k, v in pairs(args) do v = p._cleanNumber(v) if v then nums[#nums + 1] = k args[k] = v end end table.sort(nums) for i, num in ipairs(nums) do ret[#ret + 1] = args[num] end return ret end local function fold(func, ...) -- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters, -- and must return a number as an output. This number is then supplied as input to the next function call. local vals = makeArgArray(...) local count = #vals -- The number of valid arguments if count == 0 then return -- Exit if we have no valid args, otherwise removing the first arg would cause an error. nil, 0 end local ret = table.remove(vals, 1) for _, val in ipairs(vals) do ret = func(ret, val) end return ret, count end --[[ Fold arguments by selectively choosing values (func should return when to choose the current "dominant" value). ]] local function binary_fold(func, ...) local value = fold((function(a, b) if func(a, b) then return a else return b end end), ...) return value end --[[ random Generate a random number Usage: {{#invoke: Math | random }} {{#invoke: Math | random | maximum value }} {{#invoke: Math | random | minimum value | maximum value }} ]] function wrap.random(args) local first = p._cleanNumber(args[1]) local second = p._cleanNumber(args[2]) return p._random(first, second) end function p._random(first, second) math.randomseed(mw.site.stats.edits + mw.site.stats.pages + os.time() + math.floor(os.clock() * 1000000000)) -- math.random will throw an error if given an explicit nil parameter, so we need to use if statements to check the params. if first and second then if first <= second then -- math.random doesn't allow the first number to be greater than the second. return math.random(first, second) end elseif first then return math.random(first) else return math.random() end end --[[ order Determine order of magnitude of a number Usage: {{#invoke: Math | order | value }} ]] function wrap.order(args) local input_string = (args[1] or args.x or '0'); local input_number = p._cleanNumber(input_string); if input_number == nil then return err('order of magnitude input appears non-numeric') else return p._order(input_number) end end function p._order(x) if x == 0 then return 0 end return math.floor(math.log10(math.abs(x))) end --[[ precision Detemines the precision of a number using the string representation Usage: {{ #invoke: Math | precision | value }} ]] function wrap.precision(args) local input_string = (args[1] or args.x or '0'); local trap_fraction = args.check_fraction; local input_number; if not yesno then yesno = require('Module:Yesno') end if yesno(trap_fraction, true) then -- Returns true for all input except nil, false, "no", "n", "0" and a few others. See [[Module:Yesno]]. local pos = string.find(input_string, '/', 1, true); if pos ~= nil then if string.find(input_string, '/', pos + 1, true) == nil then local denominator = string.sub(input_string, pos+1, -1); local denom_value = tonumber(denominator); if denom_value ~= nil then return math.log10(denom_value); end end end end input_number, input_string = p._cleanNumber(input_string); if input_string == nil then return err('precision input appears non-numeric') else return p._precision(input_string) end end function p._precision(x) if type(x) == 'number' then x = tostring(x) end x = string.upper(x) local decimal = x:find('%.') local exponent_pos = x:find('E') local result = 0; if exponent_pos ~= nil then local exponent = string.sub(x, exponent_pos + 1) x = string.sub(x, 1, exponent_pos - 1) result = result - tonumber(exponent) end if decimal ~= nil then result = result + string.len(x) - decimal return result end local pos = string.len(x); while x:byte(pos) == string.byte('0') do pos = pos - 1 result = result - 1 if pos <= 0 then return 0 end end return result end --[[ max Finds the maximum argument Usage: {{#invoke:Math| max | value1 | value2 | ... }} Note, any values that do not evaluate to numbers are ignored. ]] function wrap.max(args) return p._max(unpackNumberArgs(args)) end function p._max(...) local max_value = binary_fold((function(a, b) return a > b end), ...) if max_value then return max_value end end --[[ median Find the median of set of numbers Usage: {{#invoke:Math | median | number1 | number2 | ...}} OR {{#invoke:Math | median }} ]] function wrap.median(args) return p._median(unpackNumberArgs(args)) end function p._median(...) local vals = makeArgArray(...) local count = #vals table.sort(vals) if count == 0 then return 0 end if p._mod(count, 2) == 0 then return (vals[count/2] + vals[count/2+1])/2 else return vals[math.ceil(count/2)] end end --[[ min Finds the minimum argument Usage: {{#invoke:Math| min | value1 | value2 | ... }} OR {{#invoke:Math| min }} When used with no arguments, it takes its input from the parent frame. Note, any values that do not evaluate to numbers are ignored. ]] function wrap.min(args) return p._min(unpackNumberArgs(args)) end function p._min(...) local min_value = binary_fold((function(a, b) return a < b end), ...) if min_value then return min_value end end --[[ sum Finds the sum Usage: {{#invoke:Math| sum | value1 | value2 | ... }} OR {{#invoke:Math| sum }} Note, any values that do not evaluate to numbers are ignored. ]] function wrap.sum(args) return p._sum(unpackNumberArgs(args)) end function p._sum(...) local sums, count = fold((function(a, b) return a + b end), ...) if not sums then return 0 else return sums end end --[[ average Finds the average Usage: {{#invoke:Math| average | value1 | value2 | ... }} OR {{#invoke:Math| average }} Note, any values that do not evaluate to numbers are ignored. ]] function wrap.average(args) return p._average(unpackNumberArgs(args)) end function p._average(...) local sum, count = fold((function(a, b) return a + b end), ...) if not sum then return 0 else return sum / count end end --[[ round Rounds a number to specified precision Usage: {{#invoke:Math | round | value | precision }} --]] function wrap.round(args) local value = p._cleanNumber(args[1] or args.value or 0) local precision = p._cleanNumber(args[2] or args.precision or 0) if value == nil or precision == nil then return err('round input appears non-numeric') else return p._round(value, precision) end end function p._round(value, precision) local rescale = math.pow(10, precision or 0); return math.floor(value * rescale + 0.5) / rescale; end --[[ log10 returns the log (base 10) of a number Usage: {{#invoke:Math | log10 | x }} ]] function wrap.log10(args) return math.log10(args[1]) end --[[ mod Implements the modulo operator Usage: {{#invoke:Math | mod | x | y }} --]] function wrap.mod(args) local x = p._cleanNumber(args[1]) local y = p._cleanNumber(args[2]) if not x then return err('first argument to mod appears non-numeric') elseif not y then return err('second argument to mod appears non-numeric') else return p._mod(x, y) end end function p._mod(x, y) local ret = x % y if not (0 <= ret and ret < y) then ret = 0 end return ret end --[[ gcd Calculates the greatest common divisor of multiple numbers Usage: {{#invoke:Math | gcd | value 1 | value 2 | value 3 | ... }} --]] function wrap.gcd(args) return p._gcd(unpackNumberArgs(args)) end function p._gcd(...) local function findGcd(a, b) local r = b local oldr = a while r ~= 0 do local quotient = math.floor(oldr / r) oldr, r = r, oldr - quotient * r end if oldr < 0 then oldr = oldr * -1 end return oldr end local result, count = fold(findGcd, ...) return result end --[[ precision_format Rounds a number to the specified precision and formats according to rules originally used for {{template:Rnd}}. Output is a string. Usage: {{#invoke: Math | precision_format | number | precision }} ]] function wrap.precision_format(args) local value_string = args[1] or 0 local precision = args[2] or 0 return p._precision_format(value_string, precision) end function p._precision_format(value_string, precision) -- For access to Mediawiki built-in formatter. local lang = mw.getContentLanguage(); local value value, value_string = p._cleanNumber(value_string) precision = p._cleanNumber(precision) -- Check for non-numeric input if value == nil or precision == nil then return err('invalid input when rounding') end local current_precision = p._precision(value) local order = p._order(value) -- Due to round-off effects it is neccesary to limit the returned precision under -- some circumstances because the terminal digits will be inaccurately reported. if order + precision >= 14 then if order + p._precision(value_string) >= 14 then precision = 13 - order; end end -- If rounding off, truncate extra digits if precision < current_precision then value = p._round(value, precision) current_precision = p._precision(value) end local formatted_num = lang:formatNum(math.abs(value)) local sign -- Use proper unary minus sign rather than ASCII default if value < 0 then sign = '−' else sign = '' end -- Handle cases requiring scientific notation if string.find(formatted_num, 'E', 1, true) ~= nil or math.abs(order) >= 9 then value = value * math.pow(10, -order) current_precision = current_precision + order precision = precision + order formatted_num = lang:formatNum(math.abs(value)) else order = 0; end formatted_num = sign .. formatted_num -- Pad with zeros, if needed if current_precision < precision then local padding if current_precision <= 0 then if precision > 0 then local zero_sep = lang:formatNum(1.1) formatted_num = formatted_num .. zero_sep:sub(2,2) padding = precision if padding > 20 then padding = 20 end formatted_num = formatted_num .. string.rep('0', padding) end else padding = precision - current_precision if padding > 20 then padding = 20 end formatted_num = formatted_num .. string.rep('0', padding) end end -- Add exponential notation, if necessary. if order ~= 0 then -- Use proper unary minus sign rather than ASCII default if order < 0 then order = '−' .. lang:formatNum(math.abs(order)) else order = lang:formatNum(order) end formatted_num = formatted_num .. '<span style="margin:0 .15em 0 .25em">×</span>10<sup>' .. order .. '</sup>' end return formatted_num end --[[ divide Implements the division operator Usage: {{#invoke:Math | divide | x | y | round= | precision= }} --]] function wrap.divide(args) local x = args[1] local y = args[2] local round = args.round local precision = args.precision if not yesno then yesno = require('Module:Yesno') end return p._divide(x, y, yesno(round), precision) end function p._divide(x, y, round, precision) if y == nil or y == "" then return err("Empty divisor") elseif not tonumber(y) then if type(y) == 'string' and string.sub(y, 1, 1) == '<' then return y else return err("Not a number: " .. y) end elseif x == nil or x == "" then return err("Empty dividend") elseif not tonumber(x) then if type(x) == 'string' and string.sub(x, 1, 1) == '<' then return x else return err("Not a number: " .. x) end else local z = x / y if round then return p._round(z, 0) elseif precision then return p._round(z, precision) else return z end end end --[[ Helper function that interprets the input numerically. If the input does not appear to be a number, attempts evaluating it as a parser functions expression. ]] function p._cleanNumber(number_string) if type(number_string) == 'number' then -- We were passed a number, so we don't need to do any processing. return number_string, tostring(number_string) elseif type(number_string) ~= 'string' or not number_string:find('%S') then -- We were passed a non-string or a blank string, so exit. return nil, nil; end -- Attempt basic conversion local number = tonumber(number_string) -- If failed, attempt to evaluate input as an expression if number == nil then local success, result = pcall(mw.ext.ParserFunctions.expr, number_string) if success then number = tonumber(result) number_string = tostring(number) else number = nil number_string = nil end else number_string = number_string:match("^%s*(.-)%s*$") -- String is valid but may contain padding, clean it. number_string = number_string:match("^%+(.*)$") or number_string -- Trim any leading + signs. if number_string:find('^%-?0[xX]') then -- Number is using 0xnnn notation to indicate base 16; use the number that Lua detected instead. number_string = tostring(number) end end return number, number_string end --[[ Wrapper function that does basic argument processing. This ensures that all functions from #invoke can use either the current frame or the parent frame, and it also trims whitespace for all arguments and removes blank arguments. ]] local mt = { __index = function(t, k) return function(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return wrap[k](getArgs(frame)) -- Argument processing is left to Module:Arguments. Whitespace is trimmed and blank arguments are removed. end end } return setmetatable(p, mt) 2bbe734d898299f65412963a3c1782e9fcc4d9ca Module:Uses Wikidata 828 594 1337 1336 2023-10-01T10:12:31Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Uses_Wikidata]] Scribunto text/plain local p = {} function p.usesProperty(frame) local args = frame.getParent(frame).args or nil if mw.text.trim(args[1] or '') == '' then args = frame.args end local result = '<ul>' local ii = 1 while true do local p_num = mw.text.trim(args[ii] or '') if p_num ~= '' then local label = mw.wikibase.getLabel(p_num) or "NO LABEL" result = result .. "<li>[[File:Disc Plain blue dark.svg|middle|4px|link=|alt=]] <b><i>[[d:Property talk:" .. p_num .. "|" .. label .. " (" .. string.upper(p_num) .. ")]]</i></b> (see <span class='plainlinks'>[https://query.wikidata.org/embed.html#SELECT%20%3FWikidata_item_%20%3FWikidata_item_Label%20%3Fvalue%20%3FvalueLabel%20%3FEnglish_Wikipedia_article%20%23Show%20data%20in%20this%20order%0A%7B%0A%09%3FWikidata_item_%20wdt%3A" .. p_num .. "%20%3Fvalue%20.%20%23Collecting%20all%20items%20which%20have%20" .. p_num .. "%20data%2C%20from%20whole%20Wikidata%20item%20pages%0A%09OPTIONAL%20%7B%3FEnglish_Wikipedia_article%20schema%3Aabout%20%3FWikidata_item_%3B%20schema%3AisPartOf%20%3Chttps%3A%2F%2Fen.wikipedia.org%2F%3E%20.%7D%20%23If%20collected%20item%20has%20link%20to%20English%20Wikipedia%2C%20show%20that%0A%09SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20%20%7D%20%23Show%20label%20in%20this%20language.%20%22en%22%20is%20English.%20%20%20%0A%7D%0ALIMIT%201000 uses]</span>)</li>" ii = ii + 1 else break end end result = result.."</ul>" return result end function p.tuProperty(frame) local parent = frame.getParent(frame) local result = '<ul>' local ii = 1 while true do local p_num = mw.text.trim(parent.args[ii] or '') if p_num ~= '' then local label = mw.wikibase.getLabel(p_num) or "NO LABEL" result = result .. "<li><span style='font-size:90%;line-height:1;'>●</span>&nbsp;&nbsp;<b>[[d:Property:" .. p_num .. "|" .. label .. "]]</b> <span style='font-size:90%;'>([[d:Property talk:" .. string.upper(p_num) .. "|" .. p_num .. "]])</span></li>" ii = ii + 1 else break end end result = result.."</ul>" return result end return p 8b704fdbc00fb94538c56f18c5c01f1e72963ea9 Module:Transclusion count/data/C 828 595 1339 1338 2023-10-01T10:12:34Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/C]] Scribunto text/plain return { ["C"] = 657000, ["C-Class"] = 17000, ["C-SPAN"] = 12000, ["C-cmn"] = 2300, ["C-pl"] = 51000, ["C."] = 4200, ["CAN"] = 20000, ["CANelec"] = 14000, ["CANelec/gain"] = 2600, ["CANelec/hold"] = 4900, ["CANelec/source"] = 7100, ["CANelec/top"] = 6400, ["CANelec/total"] = 6200, ["CAS"] = 3800, ["CBB_Standings_End"] = 15000, ["CBB_Standings_Entry"] = 15000, ["CBB_Standings_Start"] = 15000, ["CBB_Yearly_Record_End"] = 3100, ["CBB_Yearly_Record_Entry"] = 3100, ["CBB_Yearly_Record_Start"] = 3000, ["CBB_Yearly_Record_Subhead"] = 3700, ["CBB_Yearly_Record_Subtotal"] = 2900, ["CBB_roster/Footer"] = 8100, ["CBB_roster/Header"] = 8100, ["CBB_roster/Player"] = 8000, ["CBB_schedule_end"] = 11000, ["CBB_schedule_entry"] = 11000, ["CBB_schedule_start"] = 11000, ["CBB_standings_end"] = 16000, ["CBB_standings_entry"] = 16000, ["CBB_standings_start"] = 16000, ["CBB_yearly_record_end"] = 4100, ["CBB_yearly_record_end/legend"] = 3700, ["CBB_yearly_record_entry"] = 4100, ["CBB_yearly_record_start"] = 4000, ["CBB_yearly_record_subhead"] = 3800, ["CBB_yearly_record_subtotal"] = 3800, ["CBSB_Standings_End"] = 4300, ["CBSB_Standings_Entry"] = 4300, ["CBSB_Standings_Start"] = 4300, ["CBSB_link"] = 3500, ["CBSB_standings_end"] = 4400, ["CBSB_standings_entry"] = 4500, ["CBSB_standings_start"] = 4500, ["CC0"] = 3800, ["CENTURY"] = 16000, ["CFB_Standings_End"] = 34000, ["CFB_Standings_Entry"] = 34000, ["CFB_Standings_Start"] = 34000, ["CFB_Yearly_Record_End"] = 6900, ["CFB_Yearly_Record_End/legend"] = 2400, ["CFB_Yearly_Record_Entry"] = 6900, ["CFB_Yearly_Record_Start"] = 6900, ["CFB_Yearly_Record_Subhead"] = 6900, ["CFB_Yearly_Record_Subtotal"] = 6800, ["CFB_schedule"] = 26000, ["CFB_schedule_entry"] = 19000, ["CFB_standings_end"] = 34000, ["CFB_standings_entry"] = 34000, ["CFB_standings_start"] = 34000, ["CFL_Year"] = 5700, ["CGF_year"] = 2600, ["CHE"] = 10000, ["CHI"] = 2800, ["CHL"] = 3600, ["CHN"] = 11000, ["CN"] = 3400, ["CO2"] = 3300, ["COI"] = 14000, ["COIUL"] = 129000, ["COI_editnotice"] = 6700, ["COL"] = 5000, ["COLON"] = 13000, ["CRI"] = 2200, ["CRO"] = 5600, ["CSK"] = 2800, ["CSS_image_crop"] = 4700, ["CUB"] = 3700, ["CURRENTDATE"] = 3600, ["CURRENTMINUTE"] = 2500, ["CYP"] = 2100, ["CZE"] = 15000, ["Calendar"] = 2400, ["California/color"] = 12000, ["Call_sign_disambiguation"] = 3100, ["Campaignbox"] = 23000, ["CanProvName"] = 14000, ["CanadaByProvinceCatNav"] = 8400, ["CanadaProvinceThe"] = 4000, ["Canadian_English"] = 7000, ["Canadian_Parliament_links"] = 5100, ["Canadian_election_result"] = 14000, ["Canadian_election_result/gain"] = 2700, ["Canadian_election_result/hold"] = 5000, ["Canadian_election_result/source"] = 8200, ["Canadian_election_result/top"] = 14000, ["Canadian_election_result/total"] = 11000, ["Canadian_party_colour"] = 8200, ["Canadian_party_colour/colour"] = 18000, ["Canadian_party_colour/colour/default"] = 18000, ["Canadian_party_colour/name"] = 15000, ["Canadian_party_colour/name/default"] = 6900, ["Canned_search"] = 5800, ["Cascite"] = 15000, ["Caselaw_source"] = 4000, ["Cassini-Ehess"] = 2600, ["Cast_listing"] = 16000, ["Castlist"] = 2500, ["Cat"] = 356000, ["CatAutoTOC"] = 661000, ["CatAutoTOC/core"] = 660000, ["CatRel"] = 3800, ["CatTrack"] = 3100, ["Cat_class"] = 6800, ["Cat_in_use"] = 50000, ["Cat_main"] = 200000, ["Cat_more"] = 102000, ["Cat_more_if_exists"] = 40000, ["Cat_see_also"] = 3500, ["Catalog_lookup_link"] = 516000, ["Category-Class"] = 14000, ["Category-inline"] = 8700, ["Category_TOC"] = 72000, ["Category_TOC/tracking"] = 72000, ["Category_U.S._State_elections_by_year"] = 7300, ["Category_U.S._State_elections_by_year/core"] = 7300, ["Category_class"] = 36000, ["Category_class/column"] = 36000, ["Category_class/second_row_column"] = 36000, ["Category_described_in_year"] = 5700, ["Category_diffuse"] = 7900, ["Category_disambiguation"] = 2400, ["Category_disambiguation/category_link"] = 2400, ["Category_explanation"] = 273000, ["Category_handler"] = 3360000, ["Category_ifexist"] = 5100, ["Category_importance"] = 10000, ["Category_importance/column"] = 10000, ["Category_importance/second_row_column"] = 10000, ["Category_link"] = 136000, ["Category_link_with_count"] = 7000, ["Category_more"] = 112000, ["Category_more_if_exists"] = 40000, ["Category_ordered_by_date"] = 11000, ["Category_other"] = 906000, ["Category_redirect"] = 109000, ["Category_see_also"] = 39000, ["Category_see_also/Category_pair_check"] = 39000, ["Category_see_also_if_exists"] = 73000, ["Category_see_also_if_exists_2"] = 88000, ["Category_title"] = 2400, ["Catexp"] = 7900, ["CathEncy"] = 2200, ["Catholic"] = 4000, ["Catholic_Encyclopedia"] = 5100, ["Catmain"] = 28000, ["Catmore"] = 9400, ["Cbb_link"] = 8700, ["Cbignore"] = 100000, ["Cbsb_link"] = 2100, ["Cc-by-2.5"] = 3700, ["Cc-by-3.0"] = 8500, ["Cc-by-sa-2.5"] = 2500, ["Cc-by-sa-2.5,2.0,1.0"] = 2600, ["Cc-by-sa-3.0"] = 25000, ["Cc-by-sa-3.0,2.5,2.0,1.0"] = 2200, ["Cc-by-sa-3.0-migrated"] = 23000, ["Cc-by-sa-4.0"] = 10000, ["Cc-zero"] = 3700, ["CensusAU"] = 9100, ["Census_2016_AUS"] = 6900, ["Cent"] = 5800, ["Center"] = 288000, ["Centralized_discussion"] = 6100, ["Centralized_discussion/core"] = 6100, ["Centralized_discussion/styles.css"] = 6100, ["Centre"] = 3200, ["Century"] = 2100, ["Century_name_from_decade"] = 2400, ["Century_name_from_decade_or_year"] = 77000, ["Century_name_from_title_decade"] = 7600, ["Century_name_from_title_year"] = 7600, ["Certification_Cite/Title"] = 30000, ["Certification_Cite/URL"] = 34000, ["Certification_Cite/archivedate"] = 6100, ["Certification_Cite/archiveurl"] = 6100, ["Certification_Cite_Ref"] = 30000, ["Certification_Table_Bottom"] = 29000, ["Certification_Table_Entry"] = 30000, ["Certification_Table_Entry/Foot"] = 29000, ["Certification_Table_Entry/Foot/helper"] = 29000, ["Certification_Table_Entry/Region"] = 30000, ["Certification_Table_Entry/Sales"] = 29000, ["Certification_Table_Entry/Sales/AustrianPeriod"] = 2000, ["Certification_Table_Entry/Sales/BelgianPeriod"] = 2100, ["Certification_Table_Entry/Sales/DanishPeriod"] = 3300, ["Certification_Table_Entry/Sales/DanishPeriodHelper1"] = 3300, ["Certification_Table_Entry/Sales/DanishPeriodHelper2"] = 3300, ["Certification_Table_Entry/Sales/GermanPeriod"] = 4000, ["Certification_Table_Entry/Sales/ItalianHelper"] = 3300, ["Certification_Table_Entry/Sales/NewZealandPeriod"] = 2100, ["Certification_Table_Entry/Sales/SwedishPeriod"] = 2100, ["Certification_Table_Separator"] = 2400, ["Certification_Table_Top"] = 30000, ["Cfb_link"] = 24000, ["Cfd_result"] = 2400, ["Cfdend"] = 4000, ["Chart"] = 4600, ["Chart/end"] = 4700, ["Chart/start"] = 4700, ["Chart_bottom"] = 3500, ["Chart_top"] = 3500, ["Check_completeness_of_transclusions"] = 39000, ["Check_talk"] = 31000, ["Check_talk_wp"] = 1420000, ["Check_winner_by_scores"] = 13000, ["CheckedSockpuppet"] = 7200, ["Checked_sockpuppet"] = 18000, ["Checkedsockpuppet"] = 5300, ["Checkip"] = 13000, ["Checkuser"] = 76000, ["Checkuserblock-account"] = 18000, ["Chem"] = 5800, ["Chem/atom"] = 5800, ["Chem/link"] = 5800, ["Chem2"] = 5100, ["Chem_molar_mass"] = 18000, ["Chem_molar_mass/format"] = 18000, ["Chembox"] = 14000, ["Chembox/styles.css"] = 14000, ["Chembox_3DMet"] = 14000, ["Chembox_3DMet/format"] = 14000, ["Chembox_AllOtherNames"] = 13000, ["Chembox_AllOtherNames/format"] = 13000, ["Chembox_Appearance"] = 6100, ["Chembox_BoilingPt"] = 3800, ["Chembox_CASNo"] = 14000, ["Chembox_CASNo/format"] = 14000, ["Chembox_CalcTemperatures"] = 6700, ["Chembox_ChEBI"] = 14000, ["Chembox_ChEBI/format"] = 14000, ["Chembox_ChEMBL"] = 14000, ["Chembox_ChEMBL/format"] = 14000, ["Chembox_ChemSpiderID"] = 14000, ["Chembox_ChemSpiderID/format"] = 14000, ["Chembox_CompTox"] = 14000, ["Chembox_CompTox/format"] = 14000, ["Chembox_Datapage_check"] = 14000, ["Chembox_Density"] = 4900, ["Chembox_DrugBank"] = 14000, ["Chembox_DrugBank/format"] = 14000, ["Chembox_ECHA"] = 7600, ["Chembox_ECNumber"] = 14000, ["Chembox_ECNumber/format"] = 14000, ["Chembox_Elements"] = 14000, ["Chembox_Elements/molecular_formula"] = 18000, ["Chembox_Footer"] = 14000, ["Chembox_Footer/tracking"] = 14000, ["Chembox_GHS_(set)"] = 3500, ["Chembox_Hazards"] = 12000, ["Chembox_IUPHAR_ligand"] = 14000, ["Chembox_IUPHAR_ligand/format"] = 14000, ["Chembox_Identifiers"] = 14000, ["Chembox_InChI"] = 13000, ["Chembox_InChI/format"] = 13000, ["Chembox_Indexlist"] = 14000, ["Chembox_Jmol"] = 14000, ["Chembox_Jmol/format"] = 14000, ["Chembox_KEGG"] = 14000, ["Chembox_KEGG/format"] = 14000, ["Chembox_MeltingPt"] = 5900, ["Chembox_Properties"] = 14000, ["Chembox_PubChem"] = 14000, ["Chembox_PubChem/format"] = 14000, ["Chembox_RTECS"] = 14000, ["Chembox_RTECS/format"] = 14000, ["Chembox_Related"] = 3400, ["Chembox_SMILES"] = 13000, ["Chembox_SMILES/format"] = 13000, ["Chembox_SolubilityInWater"] = 3900, ["Chembox_Structure"] = 2100, ["Chembox_UNII"] = 14000, ["Chembox_UNII/format"] = 14000, ["Chembox_headerbar"] = 14000, ["Chembox_image"] = 13000, ["Chembox_image_cell"] = 12000, ["Chembox_image_sbs"] = 13000, ["Chembox_parametercheck"] = 13000, ["Chembox_setDatarow"] = 4500, ["Chembox_setHeader"] = 4500, ["Chembox_templatePar/formatPreviewMessage"] = 14000, ["Chembox_verification"] = 7100, ["Chemicals"] = 7300, ["Chemistry"] = 3100, ["Chemspidercite"] = 11000, ["Chessgames_player"] = 3700, ["Chinese"] = 7000, ["Chr"] = 9100, ["ChristianityWikiProject"] = 5700, ["Circa"] = 73000, ["Circular_reference"] = 4600, ["Citation"] = 411000, ["Citation/make_link"] = 6100, ["Citation/styles.css"] = 46000, ["Citation_needed"] = 548000, ["Citation_needed_span"] = 3500, ["Citation_style"] = 4200, ["Cite_AV_media"] = 43000, ["Cite_AV_media_notes"] = 26000, ["Cite_Appletons'"] = 2400, ["Cite_Australian_Dictionary_of_Biography"] = 3300, ["Cite_Catholic_Encyclopedia"] = 8300, ["Cite_Colledge2006"] = 3100, ["Cite_DCB"] = 2800, ["Cite_DNB"] = 18000, ["Cite_EB1911"] = 25000, ["Cite_GNIS"] = 2300, ["Cite_Gaia_DR2"] = 2100, ["Cite_Google_Maps"] = 15000, ["Cite_IUCN"] = 58000, ["Cite_Instagram"] = 2200, ["Cite_Jewish_Encyclopedia"] = 3000, ["Cite_NIE"] = 3600, ["Cite_NSW_Parliament"] = 3300, ["Cite_NSW_SHR"] = 2600, ["Cite_ODNB"] = 18000, ["Cite_POWO"] = 2000, ["Cite_Q"] = 48000, ["Cite_QHR"] = 3000, ["Cite_QPN"] = 4000, ["Cite_Rotten_Tomatoes"] = 2000, ["Cite_Rowlett"] = 2500, ["Cite_Russian_law"] = 7800, ["Cite_Ryan"] = 3200, ["Cite_Sports-Reference"] = 54000, ["Cite_USGov"] = 24000, ["Cite_WoRMS"] = 5500, ["Cite_act"] = 2700, ["Cite_arXiv"] = 5000, ["Cite_bcgnis"] = 3200, ["Cite_book"] = 1600000, ["Cite_certification"] = 34000, ["Cite_cgndb"] = 3300, ["Cite_comic"] = 2100, ["Cite_conference"] = 16000, ["Cite_court"] = 5400, ["Cite_court/styles.css"] = 5400, ["Cite_dictionary"] = 3500, ["Cite_encyclopedia"] = 205000, ["Cite_episode"] = 17000, ["Cite_gnis"] = 33000, ["Cite_interview"] = 7900, ["Cite_iucn"] = 58000, ["Cite_journal"] = 965000, ["Cite_magazine"] = 277000, ["Cite_map"] = 41000, ["Cite_news"] = 1520000, ["Cite_newspaper_The_Times"] = 6600, ["Cite_patent"] = 5500, ["Cite_patent/authors"] = 4500, ["Cite_patent/core"] = 5800, ["Cite_peakbagger"] = 4600, ["Cite_podcast"] = 3900, ["Cite_press_release"] = 66000, ["Cite_report"] = 36000, ["Cite_rowlett"] = 2500, ["Cite_simbad"] = 4500, ["Cite_sports-reference"] = 59000, ["Cite_thesis"] = 32000, ["Cite_tweet"] = 37000, ["Cite_video"] = 12000, ["Cite_video_game"] = 3100, ["Cite_web"] = 4600000, ["Cite_wikisource"] = 5700, ["Cite_wikisource/make_link"] = 58000, ["Civil_navigation"] = 2800, ["Cl"] = 134000, ["Clade"] = 7600, ["Clade/styles.css"] = 7700, ["Clarify"] = 41000, ["Class"] = 42000, ["Class/colour"] = 9180000, ["Class/icon"] = 21000, ["Class_mask"] = 6420000, ["Class_mask/b"] = 287000, ["Classical"] = 6900, ["Classicon"] = 4800, ["Clc"] = 6100, ["Cleanup"] = 10000, ["Cleanup_bare_URLs"] = 26000, ["Cleanup_reorganize"] = 2500, ["Cleanup_rewrite"] = 5900, ["Clear"] = 2970000, ["Clear-left"] = 4100, ["Clear_left"] = 31000, ["Clear_right"] = 2600, ["Clerk-Note"] = 9900, ["Clerk_Request"] = 2000, ["Clerknote"] = 7500, ["Clickable_button"] = 17000, ["Clickable_button_2"] = 967000, ["Closed_access"] = 4600, ["Closed_rfc_top"] = 2300, ["Clr"] = 3500, ["Clubplayerscat"] = 8600, ["Cmbox"] = 423000, ["Cn"] = 95000, ["Cnote2"] = 2300, ["Cnote2_Begin"] = 2300, ["Cnote2_End"] = 2300, ["Coat_of_arms"] = 4800, ["Cob"] = 12000, ["Code"] = 51000, ["Col-1-of-2"] = 2400, ["Col-2"] = 171000, ["Col-2-of-2"] = 2300, ["Col-3"] = 10000, ["Col-4"] = 3700, ["Col-begin"] = 214000, ["Col-break"] = 212000, ["Col-end"] = 212000, ["Col-float"] = 2700, ["Col-float-break"] = 2600, ["Col-float-end"] = 2700, ["Col-float/styles.css"] = 2700, ["Col-start"] = 18000, ["Colbegin"] = 21000, ["Colend"] = 23000, ["Collapse"] = 9800, ["Collapse_bottom"] = 51000, ["Collapse_top"] = 51000, ["Collapsebottom"] = 3800, ["Collapsetop"] = 3800, ["Collapsible_list"] = 52000, ["Collapsible_option"] = 135000, ["College"] = 8900, ["CollegePrimaryHeader"] = 6100, ["CollegePrimaryStyle"] = 97000, ["CollegeSecondaryStyle"] = 3700, ["College_Athlete_Recruit_End"] = 2900, ["College_Athlete_Recruit_Entry"] = 3100, ["College_Athlete_Recruit_Start"] = 3000, ["College_athlete_recruit_end"] = 4100, ["College_athlete_recruit_entry"] = 4200, ["College_athlete_recruit_start"] = 4300, ["College_color_list"] = 3900, ["Colon"] = 18000, ["Color"] = 472000, ["Color_box"] = 74000, ["Colorbox"] = 3500, ["Colorbull"] = 4800, ["Colored_link"] = 63000, ["Colors"] = 3800, ["Colour"] = 5800, ["Colour_box"] = 2000, ["Coloured_link"] = 7000, ["Column"] = 2400, ["Column/styles.css"] = 2500, ["Columns-end"] = 2200, ["Columns-list"] = 97000, ["Columns-start"] = 2200, ["Comedy"] = 2600, ["Comic_Book_DB"] = 3500, ["Comicbookdb"] = 3500, ["Comics-replaceability"] = 2900, ["Comics_infobox_sec/creator_nat"] = 2800, ["Comics_infobox_sec/formcat"] = 3300, ["Comics_infobox_sec/genre"] = 4100, ["Comics_infobox_sec/genrecat"] = 3700, ["Comics_infobox_sec/styles.css"] = 8200, ["Comicsproj"] = 28000, ["Comma_separated_entries"] = 432000, ["Comma_separated_values"] = 48000, ["Comment"] = 5200, ["Committed_identity"] = 3000, ["Committed_identity/styles.css"] = 3000, ["Commons"] = 66000, ["Commons-inline"] = 20000, ["Commons_cat"] = 48000, ["Commons_category"] = 847000, ["Commons_category-inline"] = 149000, ["Commons_category_inline"] = 6100, ["Commonscat"] = 64000, ["Commonscat-inline"] = 17000, ["Commonscat_inline"] = 2400, ["Commonscatinline"] = 6800, ["Compact_TOC"] = 7000, ["Compact_ToC"] = 4700, ["Compare"] = 5300, ["Compare_image_with_Wikidata"] = 10000, ["Composition_bar"] = 10000, ["Confirmed"] = 17000, ["Confused"] = 2800, ["Confusing"] = 2300, ["CongBio"] = 9600, ["CongLinks"] = 4600, ["Connected_contributor"] = 18000, ["Connected_contributor_(paid)"] = 6900, ["Constellation_navbox"] = 6800, ["Container"] = 11000, ["Container_cat"] = 7600, ["Container_category"] = 43000, ["Containercat"] = 2600, ["Contains_special_characters"] = 4200, ["Contains_special_characters/core"] = 4200, ["Contains_special_characters/styles.css"] = 4200, ["Content_category"] = 7600, ["Contentious_topics/list"] = 13000, ["Contentious_topics/page_restriction_editnotice_base"] = 2600, ["Contentious_topics/page_restriction_talk_notice_base"] = 3600, ["Contentious_topics/talk_notice"] = 6900, ["Context"] = 2700, ["Continent2continental"] = 16000, ["Continent_adjective_to_noun"] = 2200, ["Controversial"] = 3300, ["Convert"] = 1180000, ["Convinfobox"] = 206000, ["Convinfobox/2"] = 17000, ["Convinfobox/3"] = 119000, ["Convinfobox/pri2"] = 64000, ["Convinfobox/prisec2"] = 3300, ["Convinfobox/prisec3"] = 26000, ["Convinfobox/sec2"] = 9300, ["Coord"] = 1330000, ["Coord_missing"] = 94000, ["Coord_missing/CheckCat"] = 93000, ["Coords"] = 7600, ["Copied"] = 19000, ["Copy_edit"] = 2400, ["Copy_to_Wikimedia_Commons"] = 108000, ["Copyvios"] = 4000, ["Cospar"] = 2600, ["Cot"] = 12000, ["Count"] = 669000, ["Country2continent"] = 36000, ["Country2continental"] = 2400, ["Country2nationality"] = 347000, ["CountryPrefixThe"] = 109000, ["Country_abbreviation"] = 89000, ["Country_alias"] = 16000, ["Country_at_games_navbox"] = 2700, ["Country_at_games_navbox/below"] = 2700, ["Country_data"] = 7200, ["Country_data_AFG"] = 2300, ["Country_data_ALB"] = 6800, ["Country_data_ALG"] = 9600, ["Country_data_AND"] = 3100, ["Country_data_ANG"] = 4000, ["Country_data_ARG"] = 48000, ["Country_data_ARM"] = 7600, ["Country_data_AUS"] = 77000, ["Country_data_AUT"] = 46000, ["Country_data_AZE"] = 9400, ["Country_data_Afghanistan"] = 12000, ["Country_data_Alaska"] = 2100, ["Country_data_Albania"] = 20000, ["Country_data_Alberta"] = 3700, ["Country_data_Algeria"] = 25000, ["Country_data_American_Samoa"] = 2900, ["Country_data_Andorra"] = 8200, ["Country_data_Angola"] = 12000, ["Country_data_Anguilla"] = 2500, ["Country_data_Antigua_and_Barbuda"] = 6200, ["Country_data_Apulia"] = 7900, ["Country_data_Argentina"] = 81000, ["Country_data_Arizona"] = 2300, ["Country_data_Armenia"] = 22000, ["Country_data_Aruba"] = 3700, ["Country_data_Australia"] = 128000, ["Country_data_Austria"] = 79000, ["Country_data_Azerbaijan"] = 28000, ["Country_data_BAH"] = 4100, ["Country_data_BAN"] = 4000, ["Country_data_BAR"] = 2400, ["Country_data_BEL"] = 52000, ["Country_data_BER"] = 2300, ["Country_data_BHR"] = 4800, ["Country_data_BIH"] = 13000, ["Country_data_BLR"] = 24000, ["Country_data_BOL"] = 5900, ["Country_data_BOT"] = 2500, ["Country_data_BRA"] = 58000, ["Country_data_BUL"] = 26000, ["Country_data_Bahamas"] = 9800, ["Country_data_Bahrain"] = 12000, ["Country_data_Bangladesh"] = 19000, ["Country_data_Barbados"] = 8100, ["Country_data_Belarus"] = 44000, ["Country_data_Belgium"] = 90000, ["Country_data_Belize"] = 5300, ["Country_data_Benin"] = 7500, ["Country_data_Bermuda"] = 5800, ["Country_data_Bhutan"] = 4700, ["Country_data_Bolivia"] = 15000, ["Country_data_Bosnia_and_Herzegovina"] = 29000, ["Country_data_Botswana"] = 9400, ["Country_data_Brazil"] = 103000, ["Country_data_British_Columbia"] = 3500, ["Country_data_British_Raj"] = 2300, ["Country_data_British_Virgin_Islands"] = 3300, ["Country_data_Brunei"] = 6400, ["Country_data_Bulgaria"] = 53000, ["Country_data_Burkina_Faso"] = 10000, ["Country_data_Burma"] = 2700, ["Country_data_Burundi"] = 6200, ["Country_data_CAM"] = 2200, ["Country_data_CAN"] = 59000, ["Country_data_CGO"] = 2500, ["Country_data_CHE"] = 4900, ["Country_data_CHI"] = 18000, ["Country_data_CHL"] = 2100, ["Country_data_CHN"] = 42000, ["Country_data_CIV"] = 8300, ["Country_data_CMR"] = 8900, ["Country_data_COD"] = 3300, ["Country_data_COL"] = 25000, ["Country_data_CPV"] = 2100, ["Country_data_CRC"] = 6700, ["Country_data_CRO"] = 34000, ["Country_data_CUB"] = 10000, ["Country_data_CYP"] = 9300, ["Country_data_CZE"] = 47000, ["Country_data_California"] = 5900, ["Country_data_Cambodia"] = 9100, ["Country_data_Cameroon"] = 18000, ["Country_data_Canada"] = 123000, ["Country_data_Cape_Verde"] = 6400, ["Country_data_Castile_and_León"] = 2000, ["Country_data_Catalonia"] = 3100, ["Country_data_Cayman_Islands"] = 4200, ["Country_data_Central_African_Republic"] = 5100, ["Country_data_Chad"] = 5600, ["Country_data_Chile"] = 41000, ["Country_data_China"] = 85000, ["Country_data_Chinese_Taipei"] = 20000, ["Country_data_Colombia"] = 47000, ["Country_data_Colorado"] = 5600, ["Country_data_Comoros"] = 4500, ["Country_data_Confederate_States_of_America"] = 3000, ["Country_data_Connecticut"] = 3200, ["Country_data_Cook_Islands"] = 3900, ["Country_data_Costa_Rica"] = 18000, ["Country_data_Croatia"] = 57000, ["Country_data_Cuba"] = 23000, ["Country_data_Curaçao"] = 3600, ["Country_data_Cyprus"] = 23000, ["Country_data_Czech_Republic"] = 82000, ["Country_data_Czechoslovakia"] = 19000, ["Country_data_DEN"] = 35000, ["Country_data_DEU"] = 8900, ["Country_data_DNK"] = 3700, ["Country_data_DOM"] = 7400, ["Country_data_DRC"] = 2000, ["Country_data_Democratic_Republic_of_the_Congo"] = 13000, ["Country_data_Denmark"] = 70000, ["Country_data_Djibouti"] = 4700, ["Country_data_Dominica"] = 4300, ["Country_data_Dominican_Republic"] = 18000, ["Country_data_ECU"] = 12000, ["Country_data_EGY"] = 14000, ["Country_data_ENG"] = 47000, ["Country_data_ESA"] = 2300, ["Country_data_ESP"] = 74000, ["Country_data_EST"] = 15000, ["Country_data_ETH"] = 3700, ["Country_data_EU"] = 3700, ["Country_data_East_Germany"] = 14000, ["Country_data_East_Timor"] = 5100, ["Country_data_Ecuador"] = 25000, ["Country_data_Egypt"] = 32000, ["Country_data_El_Salvador"] = 13000, ["Country_data_Empire_of_Japan"] = 4000, ["Country_data_England"] = 97000, ["Country_data_Equatorial_Guinea"] = 5200, ["Country_data_Eritrea"] = 5500, ["Country_data_Estonia"] = 35000, ["Country_data_Eswatini"] = 5100, ["Country_data_Ethiopia"] = 13000, ["Country_data_Europe"] = 2400, ["Country_data_European_Union"] = 7400, ["Country_data_FIJ"] = 3900, ["Country_data_FIN"] = 35000, ["Country_data_FRA"] = 100000, ["Country_data_FRG"] = 15000, ["Country_data_FRO"] = 2100, ["Country_data_FR_Yugoslavia"] = 4000, ["Country_data_Faroe_Islands"] = 5500, ["Country_data_Federated_States_of_Micronesia"] = 3100, ["Country_data_Fiji"] = 12000, ["Country_data_Finland"] = 69000, ["Country_data_Florida"] = 6600, ["Country_data_France"] = 195000, ["Country_data_French_Guiana"] = 2100, ["Country_data_French_Polynesia"] = 3800, ["Country_data_GAB"] = 2500, ["Country_data_GAM"] = 2100, ["Country_data_GBR"] = 56000, ["Country_data_GDR"] = 8500, ["Country_data_GEO"] = 14000, ["Country_data_GER"] = 83000, ["Country_data_GHA"] = 10000, ["Country_data_GRE"] = 26000, ["Country_data_GUA"] = 5100, ["Country_data_GUI"] = 3300, ["Country_data_GUY"] = 2300, ["Country_data_Gabon"] = 7700, ["Country_data_Gambia"] = 7000, ["Country_data_Georgia"] = 10000, ["Country_data_Georgia_(U.S._state)"] = 2800, ["Country_data_Georgia_(country)"] = 29000, ["Country_data_German_Empire"] = 5400, ["Country_data_Germany"] = 153000, ["Country_data_Ghana"] = 24000, ["Country_data_Gibraltar"] = 5000, ["Country_data_Great_Britain"] = 75000, ["Country_data_Greece"] = 58000, ["Country_data_Greenland"] = 2900, ["Country_data_Grenada"] = 5400, ["Country_data_Guadeloupe"] = 2800, ["Country_data_Guam"] = 4800, ["Country_data_Guatemala"] = 13000, ["Country_data_Guernsey"] = 2200, ["Country_data_Guinea"] = 8500, ["Country_data_Guinea-Bissau"] = 5100, ["Country_data_Guyana"] = 7500, ["Country_data_HAI"] = 3300, ["Country_data_HKG"] = 13000, ["Country_data_HON"] = 4400, ["Country_data_HUN"] = 38000, ["Country_data_Haiti"] = 8900, ["Country_data_Honduras"] = 12000, ["Country_data_Hong_Kong"] = 26000, ["Country_data_Hungary"] = 71000, ["Country_data_IDN"] = 5100, ["Country_data_INA"] = 11000, ["Country_data_IND"] = 31000, ["Country_data_IRE"] = 11000, ["Country_data_IRI"] = 5600, ["Country_data_IRL"] = 22000, ["Country_data_IRN"] = 6500, ["Country_data_IRQ"] = 4300, ["Country_data_ISL"] = 8800, ["Country_data_ISR"] = 21000, ["Country_data_ITA"] = 87000, ["Country_data_Iceland"] = 23000, ["Country_data_Illinois"] = 4500, ["Country_data_India"] = 110000, ["Country_data_Indiana"] = 2700, ["Country_data_Indonesia"] = 37000, ["Country_data_Iowa"] = 2900, ["Country_data_Iran"] = 92000, ["Country_data_Iraq"] = 14000, ["Country_data_Ireland"] = 35000, ["Country_data_Isle_of_Man"] = 2900, ["Country_data_Israel"] = 46000, ["Country_data_Italy"] = 146000, ["Country_data_Ivory_Coast"] = 18000, ["Country_data_JAM"] = 10000, ["Country_data_JOR"] = 4200, ["Country_data_JP"] = 8200, ["Country_data_JPN"] = 60000, ["Country_data_Jamaica"] = 21000, ["Country_data_Japan"] = 120000, ["Country_data_Jersey"] = 2600, ["Country_data_Jordan"] = 12000, ["Country_data_KAZ"] = 20000, ["Country_data_KEN"] = 7600, ["Country_data_KGZ"] = 3900, ["Country_data_KOR"] = 32000, ["Country_data_KOS"] = 2500, ["Country_data_KSA"] = 6300, ["Country_data_KUW"] = 4200, ["Country_data_Kazakhstan"] = 34000, ["Country_data_Kenya"] = 20000, ["Country_data_Kingdom_of_France"] = 2100, ["Country_data_Kingdom_of_Great_Britain"] = 4800, ["Country_data_Kingdom_of_Italy"] = 4200, ["Country_data_Kiribati"] = 3000, ["Country_data_Kosovo"] = 9100, ["Country_data_Kuwait"] = 11000, ["Country_data_Kyrgyzstan"] = 9600, ["Country_data_LAT"] = 15000, ["Country_data_LBN"] = 2400, ["Country_data_LIB"] = 2600, ["Country_data_LIE"] = 3200, ["Country_data_LIT"] = 3100, ["Country_data_LTU"] = 13000, ["Country_data_LUX"] = 11000, ["Country_data_LVA"] = 2600, ["Country_data_Laos"] = 7600, ["Country_data_Latvia"] = 33000, ["Country_data_Lebanon"] = 15000, ["Country_data_Lesotho"] = 5400, ["Country_data_Liberia"] = 7300, ["Country_data_Libya"] = 8900, ["Country_data_Liechtenstein"] = 7900, ["Country_data_Lithuania"] = 32000, ["Country_data_Luxembourg"] = 24000, ["Country_data_MAC"] = 2500, ["Country_data_MAD"] = 2100, ["Country_data_MAR"] = 12000, ["Country_data_MAS"] = 11000, ["Country_data_MDA"] = 7800, ["Country_data_MEX"] = 31000, ["Country_data_MGL"] = 3000, ["Country_data_MKD"] = 7700, ["Country_data_MLI"] = 4500, ["Country_data_MLT"] = 5700, ["Country_data_MNE"] = 8000, ["Country_data_MON"] = 3800, ["Country_data_MOZ"] = 2300, ["Country_data_MRI"] = 2200, ["Country_data_MYA"] = 3100, ["Country_data_MYS"] = 3800, ["Country_data_Macau"] = 6400, ["Country_data_Macedonia"] = 4900, ["Country_data_Madagascar"] = 9300, ["Country_data_Malawi"] = 5800, ["Country_data_Malaysia"] = 37000, ["Country_data_Maldives"] = 6400, ["Country_data_Mali"] = 13000, ["Country_data_Malta"] = 17000, ["Country_data_Manitoba"] = 2600, ["Country_data_Marshall_Islands"] = 3800, ["Country_data_Martinique"] = 2900, ["Country_data_Maryland"] = 3000, ["Country_data_Massachusetts"] = 3000, ["Country_data_Mauritania"] = 5900, ["Country_data_Mauritius"] = 8200, ["Country_data_Mexico"] = 67000, ["Country_data_Michigan"] = 4300, ["Country_data_Minnesota"] = 3800, ["Country_data_Missouri"] = 2000, ["Country_data_Moldova"] = 19000, ["Country_data_Monaco"] = 10000, ["Country_data_Mongolia"] = 10000, ["Country_data_Montana"] = 2100, ["Country_data_Montenegro"] = 18000, ["Country_data_Montserrat"] = 2500, ["Country_data_Morocco"] = 28000, ["Country_data_Mozambique"] = 7500, ["Country_data_Myanmar"] = 14000, ["Country_data_NAM"] = 3600, ["Country_data_NED"] = 61000, ["Country_data_NEP"] = 2900, ["Country_data_NGA"] = 8400, ["Country_data_NGR"] = 8200, ["Country_data_NIR"] = 10000, ["Country_data_NLD"] = 6300, ["Country_data_NOR"] = 30000, ["Country_data_NZ"] = 3200, ["Country_data_NZL"] = 33000, ["Country_data_Namibia"] = 10000, ["Country_data_Nauru"] = 2500, ["Country_data_Nazi_Germany"] = 9900, ["Country_data_Nepal"] = 17000, ["Country_data_Netherlands"] = 115000, ["Country_data_Netherlands_Antilles"] = 2300, ["Country_data_New_Brunswick"] = 2500, ["Country_data_New_Caledonia"] = 3400, ["Country_data_New_Jersey"] = 4200, ["Country_data_New_South_Wales"] = 5800, ["Country_data_New_York"] = 4900, ["Country_data_New_York_(state)"] = 7000, ["Country_data_New_Zealand"] = 67000, ["Country_data_Newfoundland_and_Labrador"] = 2300, ["Country_data_Nicaragua"] = 8400, ["Country_data_Niger"] = 6000, ["Country_data_Nigeria"] = 33000, ["Country_data_North_Carolina"] = 3500, ["Country_data_North_Korea"] = 14000, ["Country_data_North_Macedonia"] = 18000, ["Country_data_Northern_Ireland"] = 15000, ["Country_data_Northern_Mariana_Islands"] = 2900, ["Country_data_Norway"] = 73000, ["Country_data_Nova_Scotia"] = 2300, ["Country_data_OMA"] = 2800, ["Country_data_Ohio"] = 4800, ["Country_data_Oman"] = 9000, ["Country_data_Ontario"] = 3900, ["Country_data_Ottoman_Empire"] = 2500, ["Country_data_PAK"] = 8100, ["Country_data_PAN"] = 5800, ["Country_data_PAR"] = 10000, ["Country_data_PER"] = 12000, ["Country_data_PHI"] = 12000, ["Country_data_PHL"] = 2600, ["Country_data_PNG"] = 2700, ["Country_data_POL"] = 51000, ["Country_data_POR"] = 32000, ["Country_data_PRC"] = 2200, ["Country_data_PRK"] = 4600, ["Country_data_PRT"] = 2900, ["Country_data_PUR"] = 7400, ["Country_data_Pakistan"] = 29000, ["Country_data_Palau"] = 3000, ["Country_data_Palestine"] = 6900, ["Country_data_Panama"] = 16000, ["Country_data_Papua_New_Guinea"] = 8000, ["Country_data_Paraguay"] = 21000, ["Country_data_Pennsylvania"] = 3700, ["Country_data_People's_Republic_of_China"] = 3200, ["Country_data_Peru"] = 31000, ["Country_data_Philippines"] = 35000, ["Country_data_Poland"] = 151000, ["Country_data_Portugal"] = 69000, ["Country_data_Prussia"] = 2600, ["Country_data_Puerto_Rico"] = 17000, ["Country_data_QAT"] = 8000, ["Country_data_Qatar"] = 18000, ["Country_data_Quebec"] = 4200, ["Country_data_ROM"] = 13000, ["Country_data_ROU"] = 27000, ["Country_data_RSA"] = 32000, ["Country_data_RUS"] = 63000, ["Country_data_RWA"] = 2100, ["Country_data_Republic_of_China"] = 5700, ["Country_data_Republic_of_Ireland"] = 26000, ["Country_data_Republic_of_the_Congo"] = 7800, ["Country_data_Romania"] = 69000, ["Country_data_Russia"] = 115000, ["Country_data_Russian_Empire"] = 4900, ["Country_data_Rwanda"] = 7800, ["Country_data_SAM"] = 3100, ["Country_data_SCG"] = 3100, ["Country_data_SCO"] = 26000, ["Country_data_SEN"] = 8200, ["Country_data_SER"] = 3600, ["Country_data_SGP"] = 2900, ["Country_data_SIN"] = 7000, ["Country_data_SLO"] = 19000, ["Country_data_SLV"] = 3100, ["Country_data_SMR"] = 3200, ["Country_data_SPA"] = 4800, ["Country_data_SRB"] = 27000, ["Country_data_SRI"] = 4800, ["Country_data_SUI"] = 43000, ["Country_data_SUR"] = 2100, ["Country_data_SVK"] = 29000, ["Country_data_SVN"] = 6800, ["Country_data_SWE"] = 57000, ["Country_data_SWI"] = 4800, ["Country_data_SYR"] = 3700, ["Country_data_Saint_Kitts_and_Nevis"] = 4800, ["Country_data_Saint_Lucia"] = 5000, ["Country_data_Saint_Vincent_and_the_Grenadines"] = 4900, ["Country_data_Samoa"] = 7800, ["Country_data_San_Marino"] = 8600, ["Country_data_Saskatchewan"] = 2900, ["Country_data_Saudi_Arabia"] = 20000, ["Country_data_Scotland"] = 52000, ["Country_data_Senegal"] = 18000, ["Country_data_Serbia"] = 55000, ["Country_data_Serbia_and_Montenegro"] = 5100, ["Country_data_Seychelles"] = 5600, ["Country_data_Sierra_Leone"] = 7500, ["Country_data_Singapore"] = 27000, ["Country_data_Slovakia"] = 51000, ["Country_data_Slovenia"] = 43000, ["Country_data_Solomon_Islands"] = 4700, ["Country_data_Somalia"] = 6300, ["Country_data_South_Africa"] = 70000, ["Country_data_South_Carolina"] = 3200, ["Country_data_South_Korea"] = 67000, ["Country_data_South_Sudan"] = 4300, ["Country_data_Soviet_Union"] = 37000, ["Country_data_Spain"] = 134000, ["Country_data_Sri_Lanka"] = 19000, ["Country_data_Sudan"] = 8300, ["Country_data_Suriname"] = 6500, ["Country_data_Sweden"] = 102000, ["Country_data_Switzerland"] = 84000, ["Country_data_Syria"] = 16000, ["Country_data_São_Tomé_and_Príncipe"] = 3400, ["Country_data_TAN"] = 2600, ["Country_data_TCH"] = 11000, ["Country_data_THA"] = 22000, ["Country_data_TJK"] = 2800, ["Country_data_TKM"] = 2900, ["Country_data_TOG"] = 2100, ["Country_data_TPE"] = 16000, ["Country_data_TRI"] = 4800, ["Country_data_TUN"] = 11000, ["Country_data_TUR"] = 28000, ["Country_data_Taiwan"] = 13000, ["Country_data_Tajikistan"] = 9200, ["Country_data_Tanzania"] = 13000, ["Country_data_Texas"] = 5300, ["Country_data_Thailand"] = 45000, ["Country_data_Togo"] = 7100, ["Country_data_Tonga"] = 6500, ["Country_data_Trinidad_and_Tobago"] = 14000, ["Country_data_Tunisia"] = 22000, ["Country_data_Turkey"] = 72000, ["Country_data_Turkmenistan"] = 8100, ["Country_data_Turks_and_Caicos_Islands"] = 2700, ["Country_data_Tuvalu"] = 2900, ["Country_data_U.S."] = 2100, ["Country_data_U.S._Virgin_Islands"] = 4800, ["Country_data_UAE"] = 9500, ["Country_data_UGA"] = 4300, ["Country_data_UK"] = 19000, ["Country_data_UKGBI"] = 3100, ["Country_data_UKR"] = 38000, ["Country_data_URS"] = 14000, ["Country_data_URU"] = 15000, ["Country_data_US"] = 4900, ["Country_data_USA"] = 135000, ["Country_data_USSR"] = 4500, ["Country_data_UZB"] = 12000, ["Country_data_Uganda"] = 13000, ["Country_data_Ukraine"] = 74000, ["Country_data_United_Arab_Emirates"] = 20000, ["Country_data_United_Kingdom"] = 89000, ["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 4400, ["Country_data_United_Nations"] = 4000, ["Country_data_United_States"] = 284000, ["Country_data_United_States_of_America"] = 5000, ["Country_data_Uruguay"] = 29000, ["Country_data_Uzbekistan"] = 21000, ["Country_data_VEN"] = 17000, ["Country_data_VIE"] = 6600, ["Country_data_Vanuatu"] = 5200, ["Country_data_Vatican_City"] = 2300, ["Country_data_Venezuela"] = 33000, ["Country_data_Vietnam"] = 23000, ["Country_data_Virginia"] = 2900, ["Country_data_WAL"] = 17000, ["Country_data_Wales"] = 34000, ["Country_data_Washington"] = 3400, ["Country_data_Washington,_D.C."] = 2200, ["Country_data_Washington_(state)"] = 3600, ["Country_data_West_Germany"] = 24000, ["Country_data_West_Indies"] = 2600, ["Country_data_Wisconsin"] = 5200, ["Country_data_YUG"] = 9900, ["Country_data_Yemen"] = 7900, ["Country_data_Yugoslavia"] = 18000, ["Country_data_ZAF"] = 4700, ["Country_data_ZAM"] = 3400, ["Country_data_ZIM"] = 8300, ["Country_data_Zambia"] = 9800, ["Country_data_Zimbabwe"] = 18000, ["Country_flagbio"] = 28000, ["Country_name"] = 23000, ["Country_showdata"] = 6200, ["Country_topics"] = 22000, ["County"] = 7900, ["County_(judet)_of_Romania"] = 3300, ["Course_assignment"] = 4200, ["Course_details"] = 6400, ["Course_instructor"] = 2500, ["Cquote"] = 37000, ["Cr"] = 4300, ["Cr-rt"] = 2100, ["Create_taxonomy/link"] = 108000, ["Cref2"] = 2300, ["Cricinfo"] = 24000, ["Cricketarchive"] = 3100, ["Crime_opentask"] = 49000, ["Croatian_Census_2021"] = 3600, ["Cross"] = 3100, ["Crossreference"] = 2600, ["Crossreference/styles.css"] = 2600, ["Csv"] = 3000, ["Ct"] = 12000, ["Curlie"] = 6800, ["Currency"] = 3600, ["Current_events"] = 8300, ["Current_events/styles.css"] = 8300, ["Currentdate"] = 23000, ["Cvt"] = 105000, ["Cycling_Archives"] = 4300, ["Cycling_archives"] = 2500, ["Cycling_data_LTD"] = 2100, ["Cycling_data_MOV_men"] = 2000, ["Cycling_data_TJV"] = 2100, ["Cycling_team_link"] = 12000, ["Module:CFB_schedule"] = 26000, ["Module:CallAssert"] = 245000, ["Module:CanadaByProvinceCatNav"] = 8400, ["Module:Cat_main"] = 200000, ["Module:Catalog_lookup_link"] = 516000, ["Module:Category_described_in_year"] = 5700, ["Module:Category_described_in_year/conf"] = 5700, ["Module:Category_handler"] = 4580000, ["Module:Category_handler/blacklist"] = 4580000, ["Module:Category_handler/config"] = 4580000, ["Module:Category_handler/data"] = 4580000, ["Module:Category_handler/shared"] = 4580000, ["Module:Category_more_if_exists"] = 40000, ["Module:Category_pair"] = 6100, ["Module:Category_see_also"] = 39000, ["Module:Celestial_object_quadrangle"] = 2300, ["Module:Check_DYK_hook"] = 115000, ["Module:Check_for_clobbered_parameters"] = 1220000, ["Module:Check_for_deprecated_parameters"] = 60000, ["Module:Check_for_unknown_parameters"] = 19200000, ["Module:Check_isxn"] = 481000, ["Module:Check_winner_by_scores"] = 13000, ["Module:Checkuser"] = 76000, ["Module:Chem2"] = 5100, ["Module:Chem2/styles.css"] = 5100, ["Module:Citation/CS1"] = 5630000, ["Module:Citation/CS1/COinS"] = 5630000, ["Module:Citation/CS1/Configuration"] = 5630000, ["Module:Citation/CS1/Date_validation"] = 5630000, ["Module:Citation/CS1/Identifiers"] = 5630000, ["Module:Citation/CS1/Suggestions"] = 25000, ["Module:Citation/CS1/Utilities"] = 5630000, ["Module:Citation/CS1/Whitelist"] = 5630000, ["Module:Citation/CS1/styles.css"] = 5770000, ["Module:Cite_IUCN"] = 58000, ["Module:Cite_Q"] = 48000, ["Module:Cite_tweet"] = 37000, ["Module:Cite_web"] = 40000, ["Module:Clade"] = 7700, ["Module:Class"] = 10300000, ["Module:Class/definition.json"] = 10300000, ["Module:Class/styles.css"] = 9380000, ["Module:Class_mask"] = 10600000, ["Module:Clickable_button_2"] = 967000, ["Module:Collapsible_list"] = 54000, ["Module:College_color"] = 129000, ["Module:College_color/data"] = 129000, ["Module:Color_contrast"] = 503000, ["Module:Color_contrast/colors"] = 505000, ["Module:Commons_link"] = 259000, ["Module:Complex_date"] = 66000, ["Module:Convert"] = 1240000, ["Module:Convert/data"] = 1240000, ["Module:Convert/helper"] = 8700, ["Module:Convert/text"] = 1240000, ["Module:Convert/wikidata"] = 3300, ["Module:Convert/wikidata/data"] = 3300, ["Module:ConvertNumeric"] = 15000, ["Module:Convert_character_width"] = 2800, ["Module:Convert_character_width/data"] = 2800, ["Module:Coordinates"] = 1340000, ["Module:Coordinates/styles.css"] = 1340000, ["Module:Copied"] = 19000, ["Module:Count_banners"] = 48000, ["Module:CountryAdjectiveDemonym"] = 45000, ["Module:CountryAdjectiveDemonym/Adjectives"] = 45000, ["Module:CountryAdjectiveDemonym/Demonyms"] = 45000, ["Module:CountryAdjectiveDemonym/The"] = 45000, ["Module:CountryData"] = 143000, ["Module:CountryData/cacheA"] = 12000, ["Module:CountryData/cacheB"] = 8400, ["Module:CountryData/cacheC"] = 12000, ["Module:CountryData/cacheD"] = 4600, ["Module:CountryData/cacheE"] = 2800, ["Module:CountryData/cacheF"] = 2600, ["Module:CountryData/cacheG"] = 2700, ["Module:CountryData/summary"] = 143000, ["Module:Country_adjective"] = 4300, ["Module:Country_alias"] = 53000, ["Module:Country_alias/data"] = 53000, ["Module:Currency"] = 3700, ["Module:Currency/Presentation"] = 3700, } aced898b85e10a9ce468c2d9ace38513eb8d4392 Template:High-risk 10 596 1341 1340 2023-10-01T10:12:35Z Führerredux 2 1 revision imported from [[:wikipedia:Template:High-risk]] wikitext text/x-wiki #REDIRECT [[Template:High-use]] {{Rcat shell| {{R with Wikidata item}} {{R from merge}} {{R from template shortcut}} }} 52c9a8c75748fd2b20183ed6c60e1f3c3a435cc9 Template:Tracks and uses Wikidata 10 597 1343 1342 2023-10-01T10:12:36Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tracks_and_uses_Wikidata]] wikitext text/x-wiki <onlyinclude><includeonly>{{sister project |position = {{{position|}}} |image = [[File:Wikidata-logo-without-paddings.svg|30px|class=noviewer|alt=|link=]] |text = This {{module other|module|template}} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] and uses<!-- --> {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see [[#{{{section}}}|§&nbsp;{{{section}}}]] for details.<!-- --> | [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}: {{#invoke:Uses Wikidata|tuProperty}} }} }}{{#switch:{{SUBPAGENAME}}|sandbox|testcases|doc=<!--nocat-->|#default={{#ifeq:{{PAGENAME}}|Uses Wikidata|<!-- -->|{{module other|[[Category:Modules using data from Wikidata]] [[Category:Modules tracking Wikidata]]<!-- -->|{{template other|[[Category:Templates using data from Wikidata]] [[Category:Templates tracking Wikidata]]}} }} }} }}</includeonly></onlyinclude> {{Documentation}} a14be63ad2ca80e80789fd88e86e1340f7e5ef00 Module:Coordinates/doc 828 598 1345 1344 2023-10-01T10:12:38Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Coordinates/doc]] wikitext text/x-wiki {{High-risk}} {{Module rating|protected}} {{Tracks and uses Wikidata|P625}} {{Lua|Module:Math|Module:Arguments}} {{Uses TemplateStyles|Module:Coordinates/styles.css}} '''Note:''' The code which this module's main function (<code>coord</code>) outputs is directly parsed and/or manipulated by [[Module:Location map]] and other functions of this module itself (<code>coord2text</code> and <code>coordinsert</code>). If the structure of the output changes (for example, to use [[:mw:Help:Extension:Kartographer|the <code><nowiki><mapframe></nowiki></code> and <code><nowiki><maplink></nowiki></code> tags]]), please update the aforementioned scripts as well. ==Using the module with coordinsert== When using the {{tl|Coord}} template inside another template, like an infobox, there may be parameters (like <code><var>type</var>:<var>airport</var></code>) which should be added automatically. To do so, do something like this: <code>&#123;&#123;#if:&#123;&#123;&#123;coordinates&#124;&#125;&#125;&#125;&#124;&#123;&#123;#invoke:Coordinates&#124;coordinsert&#124;&#123;&#123;&#123;coordinates&#124;&#125;&#125;&#125;&#124;<var>parameter1:value1&#124;parameter2:value2&#124;parameter3:value3…</var>&#125;&#125;&#124;</code> Do not add more vertical bars <code>&#124;</code> than necessary. ==Using the module with coord2text to extract latitude or longitude== Developers maintaining legacy code may need to extract latitude or longitude to use a parameters in other code, or a mathematical expression. The module's "coord2text" function can be used to extract data from the {{tl|Coord}} template. To extract the latitude from a Coord template, use: <code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}</nowiki></code> &rarr; {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}} To extract the longitude, use: <code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}</nowiki></code> &rarr; {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}} == Modules using this module directly == * [[Module:HS listed building row]] == Tracking categories == * {{clc|Pages with malformed coordinate tags}} * {{clc|Coordinates not on Wikidata‎}} * {{clc|Coordinates on Wikidata‎}} * {{clc|Coordinates on Wikidata set to no value‎}} * {{clc|Coordinates on Wikidata set to unknown value‎}} <includeonly>{{#switch:{{SUBPAGENAME}}|sandbox2|sandbox=| [[Category:Modules that add a tracking category]] }}</includeonly> 174a46bca3b8e3d6b54c213ded0b947107295f97 Template:Plainlist 10 599 1347 1346 2023-10-01T10:16:31Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Plainlist]] wikitext text/x-wiki <templatestyles src="Plainlist/styles.css"/><div class="plainlist {{{class|}}}" {{#if:{{{style|}}}{{{indent|}}}|style="{{#if:{{{indent|}}}|margin-left: {{#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}"}}>{{#if:{{{1|}}}| {{{1}}} </div>}}<noinclude></div> {{documentation}} </noinclude> 582fe7098c25c1ecfc0ad32f62ecd674ebe2bdf0 Template:Mono 10 461 1349 1012 2023-10-01T10:16:33Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Mono]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>ifsubst|1=|2=<templatestyles src="Mono/styles.css" />}}<span class="monospaced">{{{2|{{{1}}}}}}</span><noinclude> {{Documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 800f06823c02b03f8b9cf1e245ad8c4829cfe931 Template:Ifsubst 10 600 1351 1350 2023-10-01T10:16:33Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Ifsubst]] wikitext text/x-wiki {{ safesubst:<noinclude/>#if:{{{demo|}}} |{{ safesubst:<noinclude/>#ifeq:{{{demo}}} |no |{{{no|{{{2|}}}}}} |{{{yes|{{{1|}}}}}} }} |{{ safesubst:<noinclude/>#ifeq:{{ safesubst:<noinclude/>NAMESPACE}}|{{NAMESPACE}} |{{{no|{{{2|}}}}}} |{{{yes|{{{1|}}}}}} }}}}<noinclude> {{Documentation}} </noinclude> 38e667b5df326086489bf557a5f7c4e43393af78 Template:Mono/styles.css 10 463 1353 1014 2023-10-01T10:16:34Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Mono/styles.css]] sanitized-css text/css /* {{pp-template}} */ .monospaced { /* "monospace, monospace" per [[WP:MONO]] */ font-family: monospace, monospace; } cadfc2ad2e42cde230abf3e74ad418f7c4c71ab4 Template:Yesno-yes 10 601 1355 1354 2023-10-01T10:16:34Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Yesno-yes]] wikitext text/x-wiki {{SAFESUBST:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|yes}}}|¬={{{¬|yes}}}|def={{{def|yes}}}}}<noinclude> {{Documentation|Template:Yesno/doc}} <!--Categories go in the doc page referenced above; interwikis go in Wikidata.--> </noinclude> 1644b79058ef2cece539a411edc164d98bb11ebe Template:Hlist 10 429 1357 935 2023-10-01T10:16:35Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Hlist]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:list|horizontal}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 9e3824c2e3c0e0dbef2f37556ac0b994987fecf9 Module:Template wrapper 828 602 1359 1358 2023-10-01T10:16:44Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Template_wrapper]] Scribunto text/plain require('strict'); local error_msg = '<span style=\"font-size:100%\" class=\"error\"><code style=\"color:inherit; border:inherit; padding:inherit;\">&#124;_template=</code> missing or empty</span>'; --[[--------------------------< I S _ I N _ T A B L E >-------------------------------------------------------- scan through tbl looking for value; return true if found, false else ]] local function is_in_table (tbl, value) for k, v in pairs (tbl) do if v == value then return true end end return false; end --[[--------------------------< A D D _ P A R A M E T E R >---------------------------------------------------- adds parameter name and its value to args table according to the state of boolean list argument; kv pair for template execution; k=v string for template listing. ]] local function add_parameter (k, v, args, list) if list then table.insert( args, table.concat ({k, '=', v})); -- write parameter names and values to args table as string else args[k] = v; -- copy parameters to args table end end --[[--------------------------< A L I A S _ M A P _ G E T >---------------------------------------------------- returns a table of local template (parent frame) parameter names and the target template names that match where in [key]=<value> pairs where: [key] is local template parameter name (an alias) <value> is target template parameter name (the canonical parameter name used in the working template) The parameter |_alias-map= has the form: |_alias-map=<list> where <list> is a comma-separated list of alias / canonical parameter name pairs in the form <from> : <to> where: <from> is the local template's parameter name (alias) <to> is the target template's parameter name (canonical) for enumerated parameters place an octothorp (#) where the enumerator digits are placed in the parameter names: <from#> : <to#> ]] local function alias_map_get (_alias_map) local T = mw.text.split (_alias_map, '%s*,%s*'); -- convert the comma-separated list into a table of alias pairs local mapped_aliases = {}; -- mapped aliases will go here local l_name, t_name; -- parameter names for _, alias_pair in ipairs (T) do -- loop through the table of alias pairs l_name, t_name = alias_pair:match ('(.-)%s*:%s*(.+)'); -- from each pair, get local and target parameter names if l_name and t_name then -- if both are set if tonumber (l_name) then l_name = tonumber (l_name); -- convert number-as-text to a number end mapped_aliases[l_name] = t_name; -- add them to the map table end end return mapped_aliases; end --[[--------------------------< F R A M E _ A R G S _ G E T >-------------------------------------------------- Fetch the wrapper template's 'default' and control parameters; adds default parameters to args returns content of |_template= parameter (name of the working template); nil else ]] local function frame_args_get (frame_args, args, list) local template; for k, v in pairs (frame_args) do -- here we get the wrapper template's 'default' parameters if 'string' == type (k) and (v and ('' ~= v)) then -- do not pass along positional or empty parameters if '_template' == k then template = v; -- save the name of template that we are wrapping elseif '_exclude' ~= k and '_reuse' ~= k and '_include-positional' ~= k and '_alias-map' ~= k then -- these already handled so ignore here; add_parameter (k, v, args, list); -- add all other parameters to args in the style dictated by list end end end return template; -- return contents of |_template= parameter end --[=[--------------------------< P F R A M E _ A R G S _ G E T >------------------------------------------------ Fetches the wrapper template's 'live' parameters; adds live parameters that aren't members of the exclude table to args table; positional parameters may not be excluded no return value ]=] local function pframe_args_get (pframe_args, args, exclude, _include_positional, list) for k, v in pairs (pframe_args) do if 'string' == type (k) and not is_in_table (exclude, k) then -- do not pass along excluded parameters if v and ('' ~= v) then -- pass along only those parameters that have assigned values if 'unset' == v:lower() then -- special keyword to unset 'default' parameters set in the wrapper template v = ''; -- unset the value in the args table end add_parameter (k, v, args, list) -- add all other parameters to args in the style dictated by list; alias map only supported for local-template parameters end end end if _include_positional then for i, v in ipairs (pframe_args) do -- pass along positional parameters if 'unset' == v:lower() then -- special keyword to unset 'default' parameters set in the wrapper template v = ''; -- unset the value in the args table end add_parameter (i, v, args, list); end end end --[[--------------------------< _ M A I N >-------------------------------------------------------------------- Collect the various default and live parameters into args styled according to boolean list. returns name of the working or listed template or nil for an error message ]] local function _main (frame, args, list) local template; local exclude = {}; -- table of parameter names for parameters that are not passed to the working template local reuse_list = {}; -- table of pframe parameter names whose values are modified before they are passed to the working template as the same name local alias_map = {}; -- table that maps parameter aliases to working template canonical parameter names local _include_positional; if frame.args._exclude and ('' ~= frame.args._exclude) then -- if there is |_exclude= and it's not empty exclude = mw.text.split (frame.args._exclude, "%s*,%s*"); -- make a table from its contents end -- TODO: |_reuse= needs a better name (|_reuse=) if frame.args._reuse and ('' ~= frame.args._reuse) then -- if there is |_reuse= and it's not empty reuse_list = mw.text.split (frame.args._reuse, "%s*,%s*"); -- make a table from its contents end if frame.args['_alias-map'] and ('' ~= frame.args['_alias-map']) then -- if there is |_alias-map= and it's not empty alias_map = alias_map_get (frame.args['_alias-map']); -- make a table from its contents end template = frame_args_get (frame.args, args, list); -- get parameters provided in the {{#invoke:template wrapper|...|...}} if nil == template or '' == template then -- this is the one parameter that is required by this module return nil; -- not present, tell calling function to emit an error message end _include_positional = 'yes' == frame.args['_include-positional']; -- when true pass all positional parameters along with non-excluded named parameters to ... -- ... the working template; positional parameters are not excludable local _pframe_args = frame:getParent().args; -- here we get the wrapper template's 'live' parameters from pframe.args local pframe_args = {}; -- a local table that we can modify for k, v in pairs (_pframe_args) do -- make a copy that we can modify pframe_args[k] = v; end -- here we look for pframe parameters that are aliases of canonical parameter names; when found -- we replace the alias with the canonical. We do this here because the reuse_list works on -- canonical parameter names so first we convert alias parameter names to canonical names and then -- we remove those canonical names from the pframe table that are reused (provided to the working -- template through the frame args table) for k, v in pairs (alias_map) do -- k is alias name, v is canonical name if pframe_args[k] then -- if pframe_args has parameter with alias name pframe_args[v] = _pframe_args[k]; -- create new canonical name with alias' value pframe_args[k] = nil; -- unset the alias end end for k, v in pairs (pframe_args) do -- do enumerated parameter alias -> canonical translation if 'string' == type (k) then -- only named parameters can be enumerated if alias_map[k..'#'] then -- non-enumerated alias matches enumerated parameter pattern? enumerator at end only pframe_args[alias_map[k..'#']:gsub('#', '')] = v; -- remove '#' and copy parameter to pframe_args table pframe_args[k] = nil; -- unset the alias elseif k:match ('%d+') then -- if this parameter name contains digits local temp = k:gsub ('%d+', '#'); -- make a copy; digits replaced with single '#' local enum = k:match ('%d+'); -- get the enumerator if alias_map[temp] then -- if this parameter is a recognized enumerated alias pframe_args[alias_map[temp]:gsub('#', enum)] = v; -- use canonical name and replace '#' with enumerator and add to pframe_args pframe_args[k] = nil; -- unset the alias end end end end -- pframe parameters that are _reused are 'reused' have the form something like this: -- |chapter=[[wikisource:{{{chapter}}}|{{{chapter}}}]] -- where a parameter in the wrapping template is modified and then passed to the working template -- using the same parameter name (in this example |chapter=) -- remove parameters that will be reused for k, v in ipairs (reuse_list) do -- k is numerical index, v is canonical parameter name to ignore if pframe_args[v] then -- if pframe_args has parameter that should be ignored pframe_args[v] = nil; -- unset the ignored parameter end end pframe_args_get (pframe_args, args, exclude, _include_positional, list); -- add parameters and values to args that are not listed in the exclude table return template; -- args now has all default and live parameters, return working template name end --[[--------------------------< W R A P >---------------------------------------------------------------------- Template entry point. Call this function to 'execute' the working template ]] local function wrap (frame) local args = {}; -- table of default and live parameters and their values to be passed to the wrapped template local template; -- the name of the working template template = _main (frame, args, false); -- get default and live parameters and the name of the working template if not template then -- template name is required return error_msg; -- emit error message and abandon if template name not present end return frame:expandTemplate {title=template, args=args}; -- render the working template end --[[--------------------------< L I S T >---------------------------------------------------------------------- Template entry point. Call this function to 'display' the source for the working template. This function added as a result of a TfD here: Wikipedia:Templates_for_discussion/Log/2018_April_28#Module:PassArguments This function replaces a similarly named function which was used in {{cite compare}} and {{cite compare2}} Values in the args table are numerically indexed strings in the form 'name=value' ]] local function list(frame, do_link) local args = {}; -- table of default and live parameters and their values to be passed to the listed template local template; -- the name of the listed template template = _main (frame, args, true); -- get default and live parameters and the name of the listed template if not template then -- template name is required return error_msg; -- emit error message and abandon if template name not present end if do_link then template = ('[[%s|%s]]'):format(frame:expandTemplate{ title='Transclude', args = {template} }, template) end table.sort(args) for i = 1, #args do local stripped = args[i]:match('^' .. i .. '=([^=]*)$') if stripped then args[i] = stripped else break end end return frame:preprocess(table.concat({ '<code style="color:inherit; background:inherit; border:none;">&#123;&#123;', template, ('<wbr><nowiki>|%s</nowiki>'):rep(#args):format(unpack(args)), '&#125;&#125;</code>'})); -- render the template end local function link (frame) return list(frame, true) end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { link = link, list = list, wrap = wrap, }; 5e3d3ed3f3988725fb0fef6b44479bacc4210f37 Module:Color contrast 828 148 1361 347 2023-10-01T10:16:44Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Color_contrast]] Scribunto text/plain -- -- This module implements -- {{Color contrast ratio}} -- {{Greater color contrast ratio}} -- {{ColorToLum}} -- {{RGBColorToLum}} -- local p = {} local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' ) local function sRGB (v) if (v <= 0.03928) then v = v / 12.92 else v = math.pow((v+0.055)/1.055, 2.4) end return v end local function rgbdec2lum(R, G, B) if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255) else return '' end end local function hsl2lum(h, s, l) if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then local c = (1 - math.abs(2*l - 1))*s local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) ) local m = l - c/2 local r, g, b = m, m, m if( 0 <= h and h < 60 ) then r = r + c g = g + x elseif( 60 <= h and h < 120 ) then r = r + x g = g + c elseif( 120 <= h and h < 180 ) then g = g + c b = b + x elseif( 180 <= h and h < 240 ) then g = g + x b = b + c elseif( 240 <= h and h < 300 ) then r = r + x b = b + c elseif( 300 <= h and h < 360 ) then r = r + c b = b + x end return rgbdec2lum(255*r, 255*g, 255*b) else return '' end end local function color2lum(c) if (c == nil) then return '' end -- html '#' entity c = c:gsub("&#35;", "#") -- whitespace c = c:match( '^%s*(.-)[%s;]*$' ) -- unstrip nowiki strip markers c = mw.text.unstripNoWiki(c) -- lowercase c = c:lower() -- first try to look it up local L = HTMLcolor[c] if (L ~= nil) then return L end -- convert from hsl if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100) end -- convert from rgb if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$') return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B)) end -- convert from rgb percent if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100) end -- remove leading # (if there is one) and whitespace c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$') -- split into rgb local cs = mw.text.split(c or '', '') if( #cs == 6 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2]) local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4]) local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6]) return rgbdec2lum(R, G, B) elseif ( #cs == 3 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1]) local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2]) local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3]) return rgbdec2lum(R, G, B) end -- failure, return blank return '' end -- This exports the function for use in other modules. -- The colour is passed as a string. function p._lum(color) return color2lum(color) end function p._greatercontrast(args) local bias = tonumber(args['bias'] or '0') or 0 local css = (args['css'] and args['css'] ~= '') and true or false local v1 = color2lum(args[1] or '') local c2 = args[2] or '#FFFFFF' local v2 = color2lum(c2) local c3 = args[3] or '#000000' local v3 = color2lum(c3) local ratio1 = -1; local ratio2 = -1; if (type(v1) == 'number' and type(v2) == 'number') then ratio1 = (v2 + 0.05)/(v1 + 0.05) ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1 end if (type(v1) == 'number' and type(v3) == 'number') then ratio2 = (v3 + 0.05)/(v1 + 0.05) ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2 end if css then local c1 = args[1] or '' if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c1 = '#' .. c1 end if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c2 = '#' .. c2 end if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c3 = '#' .. c3 end return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';' end return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '' end function p._ratio(args) local v1 = color2lum(args[1]) local v2 = color2lum(args[2]) if (type(v1) == 'number' and type(v2) == 'number') then -- v1 should be the brighter of the two. if v2 > v1 then v1, v2 = v2, v1 end return (v1 + 0.05)/(v2 + 0.05) else return args['error'] or '?' end end function p._styleratio(args) local style = (args[1] or ''):lower() local bg, fg = 'white', 'black' local lum_bg, lum_fg = 1, 0 if args[2] then local lum = color2lum(args[2]) if lum ~= '' then bg, lum_bg = args[2], lum end end if args[3] then local lum = color2lum(args[3]) if lum ~= '' then fg, lum_fg = args[3], lum end end local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '&#35;', '#'), ';') for k = 1,#slist do local s = slist[k] local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' ) k = k or '' v = v or '' if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_bg = v, lum end elseif (k:match('^[%s]*(color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_fg = v, lum end end end if lum_bg > lum_fg then return (lum_bg + 0.05)/(lum_fg + 0.05) else return (lum_fg + 0.05)/(lum_bg + 0.05) end end --[[ Use {{#invoke:Color contrast|somecolor}} directly or {{#invoke:Color contrast}} from a wrapper template. Parameters: -- |1= — required; A color to check. --]] function p.lum(frame) local color = frame.args[1] or frame:getParent().args[1] return p._lum(color) end function p.ratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._ratio(args) end function p.styleratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._styleratio(args) end function p.greatercontrast(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._greatercontrast(args) end return p 1e399769117591366a63f62996c9a407077cc711 Module:Color contrast/colors 828 150 1363 350 2023-10-01T10:16:44Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Color_contrast/colors]] Scribunto text/plain return { aliceblue = 0.92880068253475, antiquewhite = 0.84646951707754, aqua = 0.7874, aquamarine = 0.8078549208338, azure = 0.97265264954166, beige = 0.8988459998705, bisque = 0.80732327372979, black = 0, blanchedalmond = 0.85084439608156, blue = 0.0722, blueviolet = 0.12622014321946, brown = 0.098224287876511, burlywood = 0.51559844533893, cadetblue = 0.29424681085422, chartreuse = 0.76032025902623, chocolate = 0.23898526114557, coral = 0.37017930872924, cornflowerblue = 0.30318641994179, cornsilk = 0.93562110372965, crimson = 0.16042199953026, cyan = 0.7874, darkblue = 0.018640801980939, darkcyan = 0.20329317839046, darkgoldenrod = 0.27264703559993, darkgray = 0.39675523072563, darkgreen = 0.091143429047575, darkgrey = 0.39675523072563, darkkhaki = 0.45747326349994, darkmagenta = 0.07353047651207, darkolivegreen = 0.12651920884889, darkorange = 0.40016167026524, darkorchid = 0.13413142174857, darkred = 0.054889674531132, darksalmon = 0.40541471563381, darkseagreen = 0.43789249325969, darkslateblue = 0.065792846227988, darkslategray = 0.067608151928044, darkslategrey = 0.067608151928044, darkturquoise = 0.4874606277449, darkviolet = 0.10999048339343, deeppink = 0.23866895828276, deepskyblue = 0.44481603395575, dimgray = 0.14126329114027, dimgrey = 0.14126329114027, dodgerblue = 0.27442536991456, firebrick = 0.10724525535015, floralwhite = 0.95922484825004, forestgreen = 0.18920812076002, fuchsia = 0.2848, gainsboro = 0.71569350050648, ghostwhite = 0.94311261886323, gold = 0.69860877428159, goldenrod = 0.41919977809569, gray = 0.2158605001139, green = 0.15438342968146, greenyellow = 0.80609472611453, grey = 0.2158605001139, honeydew = 0.96336535554782, hotpink = 0.34658438169715, indianred = 0.21406134963884, indigo = 0.03107561486337, ivory = 0.99071270600615, khaki = 0.77012343394121, lavender = 0.80318750514521, lavenderblush = 0.90172748631046, lawngreen = 0.73905893124963, lemonchiffon = 0.94038992245622, lightblue = 0.63709141280807, lightcoral = 0.35522120733135, lightcyan = 0.94587293494829, lightgoldenrodyellow = 0.93348351018297, lightgray = 0.65140563741982, lightgreen = 0.69091979956865, lightgrey = 0.65140563741982, lightpink = 0.58566152734898, lightsalmon = 0.4780675225206, lightseagreen = 0.35050145117042, lightskyblue = 0.56195637618331, lightslategray = 0.23830165007287, lightslategrey = 0.23830165007287, lightsteelblue = 0.53983888284666, lightyellow = 0.98161818392882, lime = 0.7152, limegreen = 0.44571042246098, linen = 0.88357340984379, magenta = 0.2848, maroon = 0.045891942324215, mediumaquamarine = 0.49389703310801, mediumblue = 0.044077780212328, mediumorchid = 0.21639251153773, mediumpurple = 0.22905858091648, mediumseagreen = 0.34393112338131, mediumslateblue = 0.20284629471622, mediumspringgreen = 0.70704308194184, mediumturquoise = 0.5133827926448, mediumvioletred = 0.14371899849357, midnightblue = 0.02071786635086, mintcream = 0.97834604947588, mistyrose = 0.82183047859185, moccasin = 0.80083000991567, navajowhite = 0.76519682342785, navy = 0.015585128108224, oldlace = 0.91900633405549, olive = 0.20027537200568, olivedrab = 0.22593150951929, orange = 0.4817026703631, orangered = 0.25516243753416, orchid = 0.31348806761439, palegoldenrod = 0.78792647887614, palegreen = 0.77936759006353, paleturquoise = 0.76436077921714, palevioletred = 0.28754994117889, papayawhip = 0.87797100199835, peachpuff = 0.74905589878251, peru = 0.30113074877936, pink = 0.63271070702466, plum = 0.45734221587969, powderblue = 0.68254586500605, purple = 0.061477070432439, rebeccapurple = 0.07492341159447, red = 0.2126, rosybrown = 0.32319457649407, royalblue = 0.16663210743188, saddlebrown = 0.097922285020521, salmon = 0.36977241527596, sandybrown = 0.46628543696283, seagreen = 0.19734199706275, seashell = 0.92737862206922, sienna = 0.13697631337098, silver = 0.52711512570581, skyblue = 0.55291668518184, slateblue = 0.14784278062136, slategray = 0.20896704076536, slategrey = 0.20896704076536, snow = 0.96533341834849, springgreen = 0.73052306068529, steelblue = 0.20562642207625, tan = 0.48237604163921, teal = 0.16996855778968, thistle = 0.56818401093733, tomato = 0.30638612719415, turquoise = 0.5895536427578, violet = 0.40315452986676, wheat = 0.74909702820482, white = 1, whitesmoke = 0.91309865179342, yellow = 0.9278, yellowgreen = 0.50762957208707, } 6ae47fdb24de4eed5ec26d203faf5341a388987b Template:Navbox bottom 10 603 1365 1364 2023-10-01T10:16:46Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Navbox_bottom]] wikitext text/x-wiki <includeonly>{{#invoke:navbox top and bottom|bottom}}</includeonly><noinclude> {{documentation|Template:Navbox top/doc}}</noinclude> 65e502a67d1bc2bba488cdada997a395b417883c Template:Navbox top 10 604 1367 1366 2023-10-01T10:16:47Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Navbox_top]] wikitext text/x-wiki <includeonly>{{#invoke:navbox top and bottom|top}}</includeonly><noinclude> {{documentation}} </noinclude> d92793ae2725f6cbd0007a404bcce9a530d30349 Module:Navbox top and bottom 828 605 1369 1368 2023-10-01T10:16:48Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Navbox_top_and_bottom]] Scribunto text/plain -- This implements {{navbox top}} and {{navbox bottom}} local p = {} local function build_navbox(parentArgs, list) local args = {} for argName, value in pairs(parentArgs) do if value ~= '' then if type(argName) == 'string' then args[argName] = value end end end args['bodystyle'] = 'display:table;' .. (args['bodystyle'] or '') args['list1padding'] = '0' args['list1style'] = 'border-width:0;' args['list1'] = list -- Note Navbox.navbox() has a kludge to order the parent frame's args -- into a specific order. For now, this is omitted from this module. local Navbox = require('Module:Navbox') return Navbox._navbox(args) end function p.top(frame) local args = frame:getParent().args local parts = mw.text.split(build_navbox(args, '<ADD LIST HERE>'), '<ADD LIST HERE>') return parts[1] end function p.bottom(frame) local args = frame:getParent().args local parts = mw.text.split(build_navbox(args, '<ADD LIST HERE>'), '<ADD LIST HERE>') return parts[2] end return p ac5dfc18e5611b01115dbf9818d1cf54ee5156d2 Template:Bulleted list 10 606 1371 1370 2023-10-01T10:16:48Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Bulleted_list]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:list|bulleted}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 37ac60a83d34c2df10fb601002557ad1b55919bb Template:Ordered list 10 607 1373 1372 2023-10-01T10:16:49Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Ordered_list]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:list|ordered}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> c74568f5fac4f743ef2e52f830e220d8cdbc3ae1 Template:Columns-list 10 608 1375 1374 2023-10-01T10:16:50Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Columns-list]] wikitext text/x-wiki <includeonly>{{#if:{{{1|}}}|{{{{{|safesubst:}}}#invoke:Template wrapper|wrap|_template=div col|_alias-map=1:content|colwidth=30em}}}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using columns-list with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Columns-list]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | class | content | colwidth | gap | rules | small | style }}<noinclude> {{documentation}} </noinclude> af8bdb75f288fe4d8e225dee6d1fe7cfad8e6a7e Template:Category link 10 609 1377 1376 2023-10-01T10:16:51Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Category_link]] wikitext text/x-wiki {{#ifeq:{{#titleparts:{{PAGENAME}}|1}}|Stub types for deletion |[[:Category:{{{1}}}|Cat:{{{1}}}]] | [[:Category:{{{1}}}|{{{2|Category:{{{1}}}}}}]]{{#ifeq:{{Yesno|{{{count|no}}}}}|yes|<small> {{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|<span style="font-weight: bold; color: #DD0000;">}}(&thinsp;{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}}}&thinsp;){{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|</span>}}</small>}}}}<noinclude> {{Documentation}} </noinclude> cb0fcaeb8242d1d37c27a8dcb57f76fe5b5faa36 Template:Cl 10 610 1379 1378 2023-10-01T10:16:51Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cl]] wikitext text/x-wiki #REDIRECT [[Template:Category link]] {{R from move}} f79fddc38797fc163b6e6ddeb4377afbea7d0cfc Template:Endplainlist 10 611 1381 1380 2023-10-01T10:16:53Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Endplainlist]] wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{documentation|Template:Plainlist/doc}} </noinclude> d545c41582328dd4f197e2b1848c8ad7392b92e0 Template:Cslist 10 612 1383 1382 2023-10-01T10:16:54Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cslist]] wikitext text/x-wiki <templatestyles src="Cslist/styles.css" />{{#invoke:Cslist |makelist}}<noinclude> {{documentation}} </noinclude> 8de0ef2dc8a52f1f2d050ca747d583cd776a0b84 Template:Cslist/styles.css 10 613 1385 1384 2023-10-01T10:16:55Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cslist/styles.css]] sanitized-css text/css /* {{pp-template}} */ /* make an inline list with either comma or semicolon separators */ ul.cslist, ul.sslist { margin: 0; padding: 0; display: inline-block; list-style: none; } ul.cslist-embedded { display: inline; } .cslist li, .sslist li { margin: 0; padding: 0 0.25em 0 0; display: inline-block; } .cslist li:after { content: ", "; } .sslist li:after { content: "; "; } .cslist li:last-child:after, .sslist li:last-child:after { content: none; } b7fc7c7a6f4e14d23d0a7483f5727aec838c7a21 Module:Cslist 828 614 1387 1386 2023-10-01T10:16:55Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Cslist]] Scribunto text/plain p = {} p.makelist = function(frame) local args = frame.args if not args[1] then args = frame:getParent().args if not args[1] then return end end local semi = (args.semi or ""):sub(1,1):lower() semi = (semi == "t") or (semi == "y") local embedded = (args.embedded or ""):sub(1,1):lower() embedded = (embedded == "y") local out = "" for k, v in ipairs(args) do v = mw.text.trim(v) if v ~= "" then out = out .. "<li>" .. v .. "</li>" end end local listclass = "" if semi then listclass = listclass .. "sslist" else listclass = listclass .. "cslist" end if embedded then listclass = listclass .. " cslist-embedded" end if out ~= "" then return '<ul class="'.. listclass ..'">' .. out .. '</ul>' end end return p 82fa872fef0f065ea5b7e6639e4390c93142fac9 Module:WLink 828 615 1389 1388 2023-10-01T10:16:56Z Führerredux 2 1 revision imported from [[:wikipedia:Module:WLink]] Scribunto text/plain local WLink = { suite = "WLink", serial = "2016-10-05" }; --[=[ ansiPercent() formatURL() getArticleBase() getBaseTitle() getEscapedTitle() getExtension() getFile() getFragment() getLanguage() getNamespace() getPlain() getProject() getTarget() getTargetPage() getTitle() getWeblink() isBracketedLink() isBracketedURL() isCategorization() isExternalLink() isInterlanguage() isInterwiki() isMedia() isTitledLink() isValidLink() isWikilink() wikilink() failsafe() ]=] -- local globals local URLutil = false; local utilURL = function () -- Attach URLutil library module -- Postcondition: -- Returns table, with URLutil library -- Throws error, if not available if not URLutil then local lucky, util = pcall( require, "Module:URLutil" ); if lucky then if type( util ) == "table" then URLutil = util.URLutil(); end util = "library URLutil invalid"; end if type( URLutil ) ~= "table" then error( util, 0 ); end end return URLutil; end -- utilURL() local contentExtlink = function ( attempt ) -- Retrieve span of external link between brackets -- Precondition: -- attempt -- string, with presumable link -- the first char is expected to be "[" -- Postcondition: -- Returns string, number, number -- string including whitespace -- number with index of relevant "[" -- number with index after relevant "]" -- false if nothing found local r1 = false; local r2 = false; local r3 = attempt:find( "]", 2, true ); if r3 then local s = attempt:sub( 2, r3 - 1 ); local i = s:find( "[", 1, true ); if i then r1 = s:sub( i + 1 ); r2 = i; else r1 = s; r2 = 1; end else r3 = false; end return r1, r2, r3; end -- contentExtlink() local contentWikilink = function ( attempt ) -- Retrieve span of wikilink between brackets -- Precondition: -- attempt -- string, with presumable link -- the first two chars are expected to be "[[" -- Postcondition: -- Returns string, number, number -- string including whitespace -- number with index of relevant "[[" -- number with index after relevant "]]" -- false if nothing found local r1 = false; local r2 = false; local r3 = attempt:find( "]]", 3, true ); if r3 then local s = attempt:sub( 3, r3 - 1 ); local i = s:find( "[[", 1, true ); if i then r1 = s:sub( i + 2 ); r2 = i; else r1 = s; r2 = 1; end end return r1, r2, r3; end -- contentWikilink() local extractExtlink = function ( attempt ) -- Retrieve external link -- Precondition: -- attempt -- string, with presumable link -- the first char is expected to be "[" -- Postcondition: -- Returns string, string -- first with target and title -- second result false if not titled -- false if nothing found local r1 = false; local r2 = false; local s = contentExtlink( attempt ); if s then local i = s:find( "%s", 1 ); if i then r1 = s:sub( 1, i - 1 ); r2 = mw.text.trim( s:sub( i + 1 ) ); if r2 == "" then r2 = false; end else r1 = s; end if r1 then r1 = mw.text.trim( r1 ); if r1 == "" or not utilURL().isResourceURL( r1 ) then r1 = false; end end if not r1 then r2 = false; end end return r1, r2; end -- extractExtlink() local extractWikilink = function ( attempt ) -- Retrieve wikilink -- Precondition: -- attempt -- string, with presumable link -- the first two chars are expected to be "[[" -- Postcondition: -- Returns string, string -- first with target -- second result title, or false if not piped -- false if nothing found local r1 = false; local r2 = false; local s = contentWikilink( attempt ); if s then local i = s:find( "|", 1, true ); if i then r1 = s:sub( 1, i - 1 ); r2 = s:sub( i + 1 ); else r1 = s; end r1 = mw.text.trim( r1 ); if r1 == "" then r1 = false; else r1 = r1:gsub( "_", " " ) :gsub( "&nbsp;", " " ) :gsub( "&thinsp;", " " ) :gsub( "&#160;", " " ) :gsub( "&#8239;", " " ) :gsub( " +", " " ); r1 = mw.text.decode( r1 ); end end return r1, r2; end -- extractWikilink() local prefix = function ( ask, ahead ) -- Interprete prefix of language or project type -- Precondition: -- ask -- string, with presumable prefix -- ahead -- true, if first segment -- Postcondition: -- Returns string,string or nil -- first string one of "lead", "lang", "project" -- second string is formatted value -- type is one of "lead", "lang", "project" -- nil if nothing found local r1, r2; local prefixes = { b = true, c = "commons", d = true, commons = true, m = "meta", mediawiki = "mw", mw = true, meta = true, n = true, q = true, s = true, simple = false, v = true, voy = true, w = true, wikibooks = "b", wikidata = "d", wikinews = "n", wikipedia = "w", wikiquote = "q", wikisource = "s", wikiversity = "v", wikivoyage = "voy", wikt = true, wiktionary = "wikt" }; local s = mw.text.trim( ask ); if s == "" then if ahead then r1 = "lead"; r2 = true; end else local p; s = s:lower(); p = prefixes[ s ]; if p == true then r1 = "project"; r2 = s; elseif p then r1 = "project"; r2 = p; elseif p == false then r1 = "lang"; r2 = s; elseif s:match( "^%l%l%l?$" ) and mw.language.isSupportedLanguage( s ) then r1 = "lang"; r2 = s; end end return r1, r2; end -- prefix() local target = function ( attempt, lonely ) -- Retrieve first target (wikilink or URL), or entire string -- Precondition: -- attempt -- string, with presumable link somewhere -- lonely -- remove fragment, if true -- Postcondition: -- Returns string, number -- string, with detected link target, or entire -- number, with number of brackets, if found, or 2 local r1, r2 = WLink.getTarget( attempt ); if not r1 then r1 = mw.text.trim( attempt ); r2 = 2; end if lonely then local i = r1:find( "#", 1, true ); if i == 1 then r1 = ""; elseif i then r1 = r1:sub( 1, i - 1 ); end end return r1, r2; end -- target() function WLink.ansiPercent( attempt, alter ) -- Convert string by ANSI encoding rather than UTF-8 encoding -- Precondition: -- attempt -- string, with presumable ANSI characters -- alter -- string or nil, to use for spaces instead of %20 -- Postcondition: -- Returns string, encoded local k, s; local r = attempt; if alter then r = r:gsub( " ", alter ); end for i = mw.ustring.len( r ), 1, -1 do k = mw.ustring.codepoint( r, i, i ); if k <= 32 or k > 126 then if k > 255 then s = mw.ustring.sub( r, i, i ); if k > 2047 then s = string.format( "%%%2X%%%2X%%%2X", s:byte( 1, 1 ), s:byte( 2, 2 ), s:byte( 3, 3 ) ); else s = string.format( "%%%2X%%%2X", s:byte( 1, 1 ), s:byte( 2, 2 ) ); end else s = string.format( "%%%2X", k ); end r = string.format( "%s%s%s", mw.ustring.sub( r, 1, i - 1 ), s, mw.ustring.sub( r, i + 1 ) ); end end -- for --i r = mw.ustring.gsub(r, '^%*', '%%2A') return r; end -- WLink.ansiPercent() function WLink.formatURL( adjust ) -- Create bracketed link, if not yet -- Precondition: -- adjust -- string, with URL or domain/path or bracketed link -- Postcondition: -- Returns string, with bracketed link -- false on invalid format local r; if type( adjust ) == "string" then if WLink.isBracketedLink( adjust ) then r = adjust; else local url = mw.text.trim( adjust ); local host; utilURL(); host = URLutil.getHost( adjust ); if not host then url = "http://" .. adjust; host = URLutil.getHost( url ); end if host then local path = URLutil.getRelativePath( url ); local show; if path == "/" then if not url:match( "/$" ) then url = url .. "/"; end show = host; else local i = path:find( "#" ); if i then path = path:sub( 1, i - 1 ); end show = host .. path; end r = string.format( "[%s %s]", url, show ); else r = adjust; end end else r = false; end return r; end -- WLink.formatURL() function WLink.getArticleBase( attempt ) -- Retrieve generic article title, no fragment nor brackets -- Precondition: -- attempt -- string, with wikilink or page title -- current page title, if missing -- Postcondition: -- Returns string, with identified lemma, or all -- false on invalid format local r; if attempt then local m; r, m = target( attempt, true ); if m ~= 2 then r = false; end else r = mw.title.getCurrentTitle().text; end if r then local sub = r:match( "^(.*%S) *%(.+%)$" ); if sub then r = sub; end end return r; end -- WLink.getArticleBase() function WLink.getBaseTitle( attempt ) -- Retrieve last segment in subpage, no fragment -- Precondition: -- attempt -- string, with wikilink or page title -- Postcondition: -- Returns string, with identified segment, or all local r; local s, m = target( attempt, true ); if m == 2 then local sub = s:match( "/([^/]+)$" ); if sub then r = sub; else r = s; end else r = false; end return r; end -- WLink.getBaseTitle() function WLink.getEscapedTitle( attempt ) -- Retrieve escaped link title -- Precondition: -- attempt -- string, with presumable link title -- Postcondition: -- Returns string, with suitable link title local s = mw.text.trim( attempt ); return s:gsub( "\n", " " ) :gsub( "%[", "&#91;" ) :gsub( "%]", "&#93;" ) :gsub( "|", "&#124;" ); end -- WLink.getEscapedTitle() function WLink.getExtension( attempt ) -- Retrieve media extension -- Precondition: -- attempt -- string, with wikilink (media link) or page title -- if URL, PDF may be detected -- Postcondition: -- Returns string, with detected downcased media type -- false if no extension found local r = false; local s, m = target( attempt ); if m == 2 then s = s:match( "%.(%a+)$" ); if s then r = s:lower(); end elseif s:upper():match( "[%./](PDF)%W?" ) then r = "pdf"; end return r; end -- WLink.getExtension() function WLink.getFile( attempt ) -- Retrieve media page identifier -- Precondition: -- attempt -- string, with wikilink (media link) or page title -- Postcondition: -- Returns string, with detected file title -- no namespace nor project -- false if no file found local r = false; local s, m = target( attempt ); if m == 2 then local slow = ":" .. s:lower(); local find = function ( a ) local seek = string.format( ":%s:().+%%.%%a+$", a:lower() ); local join = slow:find( seek ); local ret; if join then ret = s:sub( join + #a + 1 ); end return ret; end; r = find( "file" ); if not r then local trsl = mw.site.namespaces[6]; r = find( trsl.name ); if not r then trsl = trsl.aliases; for k, v in pairs( trsl ) do r = find( v ); if r then break; -- for k, v end end -- for k, v end end end return r; end -- WLink.getFile() function WLink.getFragment( attempt ) -- Retrieve fragment -- Precondition: -- attempt -- string, with presumable fragment -- Postcondition: -- Returns string, with detected fragment -- false if no address found local r = false; local s, m = target( attempt ); if s then local i = s:find( "#", 1, true ); if i then if i > 1 then s = s:sub( i - 1 ); i = 2; end if s:find( "&#", 1, true ) then s = mw.text.decode( s ); i = s:find( "#", 1, true ); if not i then s = ""; i = 0; end end s = s:sub( i + 1 ); r = mw.text.trim( s ); if r == "" then r = false; elseif m == 2 then r = r:gsub( "%.(%x%x)", "%%%1" ) :gsub( "_", " " ); r = mw.uri.decode( r, "PATH" ); end end end return r; end -- WLink.getFragment() function WLink.getLanguage( attempt ) -- Retrieve language project identifier -- Precondition: -- attempt -- string, with wikilink or page title -- Postcondition: -- Returns string, with detected downcased language identifier -- false if no project language found local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and w.lang then r = w.lang; end end return r; end -- WLink.getLanguage() function WLink.getNamespace( attempt ) -- Retrieve namespace number -- Precondition: -- attempt -- string, with wikilink or page title -- Postcondition: -- Returns number, of detected namespace -- false if no namespace found local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and not w.lang and not w.project and w.ns then r = w.ns; end end return r; end -- WLink.getNamespace() function WLink.getPlain( attempt ) -- Retrieve text with all links replaced by link titles -- Precondition: -- attempt -- string, with wikitext -- Postcondition: -- Returns string, with modified wikitext without links local r = attempt; local i = 1; local j, k, n, lean, s, shift, space, suffix; while ( true ) do j = r:find( "[", i, true ); if j then suffix = r:sub( j ); i = j + 1; lean = ( r:byte( i, i ) == 91 ); if lean then s, k, n = contentWikilink( suffix ); else s, k, n = contentExtlink( suffix ); end if s then if k > 1 then n = n - k; i = j + k; j = i - 1; suffix = r:sub( j ); end if lean then s, shift = extractWikilink( suffix ); if s then space = s:match( "^([^:]+):" ); if space then space = mw.site.namespaces[ space ]; if space then space = space.id; end end if space == 6 or space == 14 then shift = ""; elseif not shift then shift = s; end else s = ""; shift = ""; end else s, shift = extractExtlink( suffix ); if not s then s = ""; end if not shift then shift = ""; end i = i - 1; end if j > 1 then s = r:sub( 1, j - 1 ); else s = ""; end r = string.format( "%s%s%s", s, shift, r:sub( n + i ) ); i = i + #shift; else break; -- while true end else break; -- while true end end -- while true return r; end -- WLink.getPlain() function WLink.getProject( attempt ) -- Retrieve wikifarm project identifier -- Precondition: -- attempt -- string, with wikilink or page title -- Postcondition: -- Returns string, with detected downcased project identifier -- false if no project identifier found local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and w.project then r = w.project; end end return r; end -- WLink.getProject() function WLink.getTarget( attempt ) -- Retrieve first target (wikilink or URL) -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns string, number -- string, with first detected link target -- number, with number of brackets, if found -- false if nothing found local r1 = false; local r2 = false; local i = attempt:find( "[", 1, true ); if i then local m; r1 = attempt:sub( i ); if r1:byte( 2, 2 ) == 91 then m = 2; r1 = extractWikilink( r1 ); else m = 1; r1 = extractExtlink( r1 ); end if r1 then r2 = m; end else r1 = attempt:match( "%A?([hf]t?tps?://%S+)%s?" ); if r1 then if utilURL().isResourceURL( r1 ) then r2 = 0; else r1 = false; end else r1 = false; end end return r1, r2; end -- WLink.getTarget() function WLink.getTargetPage( attempt ) -- Retrieve first target page (page name or URL of page) -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns string, with first detected linked page -- false if nothing found local r1, r2 = WLink.getTarget( attempt ); if r1 then local i = r1:find( "#", 1, true ); if i then if i == 1 then r1 = false; else r1 = mw.text.trim( r1:sub( 1, i - 1 ) ); end end end return r1, r2; end -- WLink.getTargetPage() function WLink.getTitle( attempt ) -- Retrieve first link title (wikilink or URL), or wikilink target -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns string, with first detected link target -- false if nothing found local r = false; local i = attempt:find( "[", 1, true ); if i then local s1, s2; r = attempt:sub( i ); if r:byte( 2, 2 ) == 91 then s1, s2 = extractWikilink( r ); if s2 then r = s2; else r = s1; end else s1, r = extractExtlink( r ); end end return r; end -- WLink.getTitle() function WLink.getWeblink( attempt, anURLutil ) -- Retrieve bracketed link from resource URL -- Precondition: -- attempt -- string, with URL, or something different -- anURLutil -- library module object, or nil -- Postcondition: -- Returns string, with first detected link target -- false if nothing found local second = ".ac.co.go.gv.or."; local r; if type( anURLutil ) == "table" then URLutil = anURLutil; else utilURL(); end if URLutil.isResourceURL( attempt ) then local site = URLutil.getAuthority( attempt ); local show; if #attempt == #site then site = site .. "/"; end show = URLutil.getTop3domain( "//" .. site ); if show then local scan = "[%./](%a+)(%.%l%l%.)(%a+)$"; local search = "." .. show; local s1, s2, s3 = search:match( scan ); if s2 then if not second:find( s2, 1, true ) then show = string.format( "%s.%s", s2, s3 ); end else show = false; end end if not show then show = URLutil.getTop2domain( "//" .. site ); if not show then show = URLutil.getHost( "//" .. site ); end end r = string.format( "[%s %s]", attempt, show ); else r = attempt; end return r; end -- WLink.getWeblink() function WLink.isBracketedLink( attempt ) -- Does attempt match a bracketed link? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local i = attempt:find( "[", 1, true ); if i then local s = attempt:sub( i ); if s:byte( 2, 2 ) == 91 then s = extractWikilink( s ); else s = extractExtlink( s ); end if s then r = true; end end return r; end -- WLink.isBracketedLink() function WLink.isBracketedURL( attempt ) -- Does attempt match a bracketed URL? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local s, r = WLink.getTarget( attempt ); return ( r == 1 ); end -- WLink.isBracketedURL() function WLink.isCategorization( attempt ) -- Does attempt match a categorization? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and w.ns == 14 and not ( w.lead or w.lang or w.project ) and w.title ~= "" then r = true; end end return r; end -- WLink.isCategorization() function WLink.isExternalLink( attempt ) -- Does attempt match an external link? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local s, r = WLink.getTarget( attempt ); if r then r = ( r < 2 ); end return r; end -- WLink.isExternalLink() function WLink.isInterlanguage( attempt ) -- Does attempt match an interlanguage link? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and w.lang and not w.project and not w.lead and w.title ~= "" then r = true; end end return r; end -- WLink.isInterlanguage() function WLink.isInterwiki( attempt ) -- Does attempt match an interwiki link within wikifarm? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and ( w.lang or w.project ) and w.title ~= "" then r = true; end end return r; end -- WLink.isInterwiki() function WLink.isMedia( attempt ) -- Does attempt match a media translusion? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local s, m = WLink.getTarget( attempt ); if m == 2 then local w = WLink.wikilink( s ); if w and w.ns == 6 and not ( w.lead or w.lang or w.project ) and w.title ~= "" and WLink.getExtension( w.title ) then r = true; end end return r; end -- WLink.isMedia() function WLink.isTitledLink( attempt ) -- Does attempt match a titled link? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local r = false; local i = attempt:find( "[", 1, true ); if i then local c, n; local s = attempt:sub( i ); if s:byte( 2, 2 ) == 91 then n = s:find( "%]%]", 5 ); c = "|"; else n = s:find( "%]", 8 ); c = "%s%S"; end if n then local m = s:find( c, 2 ); if m and m + 1 < n and WLink.getTarget( attempt ) then r = true; end end end return r; end -- WLink.isTitledLink() function WLink.isValidLink( attempt ) -- Does attempt match a link? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local s, r = WLink.getTarget( attempt ); if r then r = true; end return r; end -- WLink.isValidLink() function WLink.isWikilink( attempt ) -- Does attempt match a wikilink? -- Precondition: -- attempt -- string, with presumable link somewhere -- Postcondition: -- Returns boolean local s, m = WLink.getTarget( attempt ); return ( m == 2 ); end -- WLink.isWikilink() function WLink.wikilink( attempt ) -- Retrieve wikilink components -- Precondition: -- attempt -- string, with presumable link -- expected to be enclosed in "[[" "]]" -- else wikilink -- Postcondition: -- Returns table or false -- table of assignments with { type, value} -- type is one of "lead", -- "project", "lang", -- "ns", "space", "title" -- false if nothing found local s = contentWikilink( attempt ); local got, n, r; if not s then s = attempt; end i = s:find( "|", 1, true ); if i then s = s:sub( 1, i - 1 ); end got = mw.text.split( s, ":" ); n = table.maxn( got ); if n == 1 then r = { title = mw.text.trim( s ) }; else local j, k, o, v; r = { title = "" }; if n > 4 then k = 4; else k = n - 1; end j = k; for i = 1, j do s = mw.text.trim( got[ i ] ); if s ~= "" then o = mw.site.namespaces[ mw.text.trim( got[ i ] ) ]; if o then r.ns = o.id; r.space = o.name; k = i + 1; j = i - 1; break; -- for i end end end -- for i for i = 1, j do o, v = prefix( got[ i ], ( i == 1 ) ); if o then if r[ o ] then k = i; break; -- for i else r[ o ] = v; end else k = i; break; -- for i end end -- for i for i = k, n do r.title = r.title .. got[ i ]; if i < n then r.title = r.title .. ":"; end end -- for i end if r.lead and ( r.project or not r.title or ( not r.lang and r.ns ~= 6 and r.ns ~= 14 ) ) then r.lead = false; end return r; end -- WLink.wikilink() function WLink.failsafe( assert ) -- Retrieve versioning and check for compliance -- Precondition: -- assert -- string, with required version, or false -- Postcondition: -- Returns string with appropriate version, or false local r; if assert and assert > WLink.serial then r = false; else r = WLink.serial; end return r end -- WLink.failsafe() local function Template( frame, action, leave, lone ) -- Run actual code from template transclusion -- Precondition: -- frame -- object -- action -- string, with function name -- leave -- true: keep whitespace around -- lone -- true: permit call without parameters -- Postcondition: -- Return string; might be error message local lucky = true; local s = false; local r = false; local space; for k, v in pairs( frame.args ) do if k == 1 then if leave then s = v; else s = mw.text.trim( v ); end elseif action == "ansiPercent" and k == "space" then if v ~= "" then space = v; end elseif k ~= "template" then lucky = false; if r then r = r .. "|"; else r = "Unknown parameter: "; end r = string.format( "%s%s=", r, k ); end end -- for k, v if lucky then if s or lone then lucky, r = pcall( WLink[ action ], s, space ); else r = "Parameter missing"; lucky = false; end end if lucky then if type( r ) == "boolean" then if r then r = "1"; else r = ""; end end else r = string.format( "<span class=\"error\">%s</span>", r ); end return r; end -- Template() -- Export local p = { }; p.ansiPercent = function ( frame ) return Template( frame, "ansiPercent" ); end p.formatURL = function ( frame ) return Template( frame, "formatURL" ); end p.getArticleBase = function ( frame ) return Template( frame, "getArticleBase", false, true ); end p.getBaseTitle = function ( frame ) return Template( frame, "getBaseTitle" ); end p.getEscapedTitle = function ( frame ) return Template( frame, "getEscapedTitle" ); end p.getExtension = function ( frame ) return Template( frame, "getExtension" ); end p.getFile = function ( frame ) return Template( frame, "getFile" ); end p.getFragment = function ( frame ) return Template( frame, "getFragment" ); end p.getInterwiki = function ( frame ) return Template( frame, "getInterwiki" ); end p.getLanguage = function ( frame ) return Template( frame, "getLanguage" ); end p.getNamespace = function ( frame ) return tostring( Template( frame, "getNamespace" ) ); end p.getPlain = function ( frame ) return Template( frame, "getPlain" ); end p.getProject = function ( frame ) return Template( frame, "getProject" ); end p.getTarget = function ( frame ) return Template( frame, "getTarget" ); end p.getTargetPage = function ( frame ) return Template( frame, "getTargetPage" ); end p.getTitle = function ( frame ) return Template( frame, "getTitle" ); end p.getWeblink = function ( frame ) return Template( frame, "getWeblink" ); end p.isBracketedLink = function ( frame ) return Template( frame, "isBracketedLink" ); end p.isBracketedURL = function ( frame ) return Template( frame, "isBracketedURL" ); end p.isCategorization = function ( frame ) return Template( frame, "isCategorization" ); end p.isExternalLink = function ( frame ) return Template( frame, "isExternalLink" ); end p.isInterlanguage = function ( frame ) return Template( frame, "isInterlanguage" ); end p.isInterwiki = function ( frame ) return Template( frame, "isInterwiki" ); end p.isMedia = function ( frame ) return Template( frame, "isMedia" ); end p.isTitledLink = function ( frame ) return Template( frame, "isTitledLink" ); end p.isValidLink = function ( frame ) return Template( frame, "isValidLink" ); end p.isWeblink = function ( frame ) return Template( frame, "isWeblink" ); end p.isWikilink = function ( frame ) return Template( frame, "isWikilink" ); end p.failsafe = function ( frame ) local since = frame.args[ 1 ]; if since then since = mw.text.trim( since ); if since == "" then since = false; end end return WLink.failsafe( since ) or ""; end p.WLink = function () return WLink; end return p; af57214e9ddc77f93c9fcb1dd97b58d8180700d4 Template:Tnull 10 616 1391 1390 2023-10-01T10:16:57Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tnull]] wikitext text/x-wiki #REDIRECT [[Template:Template link null]] {{Redirect category shell| {{R from move}} }} b22d666a4b16808dc3becc2403546fb9ab5dea7e Template:Template link null 10 617 1393 1392 2023-10-01T10:16:57Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_link_null]] wikitext text/x-wiki <includeonly>{{#Invoke:Template link general|main|nolink=yes|code=yes}}</includeonly><noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tnull}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 2167c503e001d24d870ef82a9de0aaa9832404cb Template:Flowlist 10 618 1395 1394 2023-10-01T10:16:57Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Flowlist]] wikitext text/x-wiki <templatestyles src="Flowlist/styles.css" /><div class="flowlist {{{class|}}}" {{#if: {{{style|}}}|style="{{{style}}}"}}>{{#if:{{{1|}}}| {{{1}}} </div>}}<noinclude></div> {{documentation}} </noinclude> 8fab8f03d7353b9e7ebe1b375ebbfc6801f60bdb Template:Flowlist/styles.css 10 619 1397 1396 2023-10-01T10:16:58Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Flowlist/styles.css]] sanitized-css text/css .flowlist ul { overflow-x: hidden; margin-left: 0; padding-left: 1.6em; } .flowlist ol { overflow-x: hidden; margin-left: 0; padding-left: 3.2em; } .flowlist dl { overflow-x: hidden; } 9e1541baa2f3cc3d7b4d7ac39f073f3a43a91c06 Template:Defn 10 620 1399 1398 2023-10-01T10:16:58Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Defn]] wikitext text/x-wiki <dd class="glossary {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"|{{#if:{{{term|}}}|id="{{{term}}}-defn{{{2|{{{no|1}}}}}}"|}}|}} {{#if:{{{style|}}}|style="{{{style}}}"|}}>{{#if:{{{2|{{{no|}}}}}}|{{{2|{{{no}}}}}}.&nbsp;&nbsp;|}}{{{defn|{{{1|{{{content}}}}}}}}}</dd><noinclude> {{Documentation}}<!--Categories go in the /doc subpage.--> </noinclude> 7364e2a37ab009857bdee7a77e7e297830fc560b Template:Glossary 10 621 1401 1400 2023-10-01T10:16:59Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Glossary]] wikitext text/x-wiki <dl class="glossary {{{class|}}}" {{#if:{{{style|}}}|style="{{{style}}}"|}} {{#if:{{{id|}}}|id="{{{id}}}"|}}><noinclude>{{glossary end}} <!--Categories and interwikis go on the /doc page.--> {{Documentation}} </noinclude> afaf333b451c8bb5f581afb121ef9c3c5f8b7be8 Template:Glossary end 10 622 1403 1402 2023-10-01T10:16:59Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Glossary_end]] wikitext text/x-wiki <noinclude><dl></noinclude></dl><!--end glossary--><noinclude> {{Documentation|Template:Glossary/doc}}<!--Categories go in the /doc subpage.--> </noinclude> ed16ee7194c9e6e05c38ab0d43496928c52bc915 Template:Term 10 623 1405 1404 2023-10-01T10:17:00Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Term]] wikitext text/x-wiki <dt class="glossary {{{class|}}}" {{#if: {{{noid|}}}||id="{{#invoke:delink|delink|{{#invoke:String|replace|source={{lc:{{{id|{{{term|{{{1}}}}}}}}}}}|"|<!--blank to strip out double quote mark-->}}}}"}} style="{{#if:{{{multi|}}}|margin-top: -0.2em;|margin-top: 0.4em; {{{style|}}}}}">{{#if:{{{nondefining|}}}||<dfn class="glossary">}}{{{content|{{{2|{{{term|{{{1}}}}}}}}}}}}{{#if:{{{nondefining|}}}||</dfn>}}</dt><noinclude> {{Documentation}} </noinclude> c13cf2ed1b2adb71abf978313b6bfe8f1e58d7ef Template:Template shortcut 10 255 1407 558 2023-10-01T10:17:03Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_shortcut]] wikitext text/x-wiki <includeonly>{{#invoke:Shortcut|main|template=yes}}</includeonly><noinclude>{{Documentation}}</noinclude> bfb2889c4c0ec36294b7b667f5e03350d2df680e Template:Format TemplateData 10 624 1409 1408 2023-10-01T10:17:05Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Format_TemplateData]] wikitext text/x-wiki <includeonly>{{#ifeq:{{yesno-yes|{{{header}}}}}|yes|{{TemplateData header}} }}{{#invoke:Format TemplateData| f |classNoNumTOC=nonumtoc |cssParams=border:#B3B7FF 1px solid;|docpageCreate=%s/doc |docpageDetect=/doc$ |msgDescMiss=Missing description |cat=Templates with TemplateData errors}}</includeonly><noinclude> {{Documentation}} </noinclude> 9f91faf4253ddd2a7da1f06be8940e26509a0cd6 Module:Format TemplateData 828 625 1411 1410 2023-10-01T10:17:05Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Format_TemplateData]] Scribunto text/plain local TemplateData = { suite = "TemplateData", serial = "2022-03-10", item = 46997995 } --[==[ improve template:TemplateData ]==] local Failsafe = TemplateData local Config = { -- multiple option names mapped into unique internal fields basicCnf = { catProblem = "strange", classMultiColumns = "selMultClm", classNoNumTOC = "suppressTOCnum", classTable = "classTable", cssParWrap = "cssTabWrap", cssParams = "cssTable", docpageCreate = "suffix", docpageDetect = "subpage", helpBoolean = "support4boolean", helpContent = "support4content", helpDate = "support4date", helpFile = "support4wiki-file-name", helpFormat = "supportFormat", helpLine = "support4line", helpNumber = "support4number", helpPage = "support4wiki-page-name", helpString = "support4string", helpTemplate = "support4wiki-template-name", helpURL = "support4url", helpUser = "support4wiki-user-name", msgDescMiss = "solo", tStylesTOCnum = "stylesTOCnum", tStylesMultiColumns = "stylesMultClm" }, classTable = { "wikitable" }, -- classes for params table debugmultilang = "C0C0C0", loudly = false, -- show exported element, etc. solo = false, -- complaint on missing description strange = false, -- title of maintenance category cssTable = false, -- styles for params table cssTabWrap = false, -- styles for params table wrapper debug = false, subpage = false, -- pattern to identify subpage suffix = false, -- subpage creation scheme suppressTOCnum = false, -- class for TOC number suppression jsonDebug = "json-code-lint" -- class for jsonDebug tool } local Data = { div = false, -- <div class="mw-templatedata-doc-wrap"> got = false, -- table, initial templatedata object heirs = false, -- table, params that are inherited jump = false, -- source position at end of "params" less = false, -- main description missing lasting = false, -- old syntax encountered lazy = false, -- doc mode; do not generate effective <templatedata> leading = false, -- show TOC -- low = false, -- 1= mode order = false, -- parameter sequence params = false, -- table, exported parameters scream = false, -- error messages sibling = false, -- TOC juxtaposed slang = nil, -- project/user language code slim = false, -- JSON reduced to plain source = false, -- JSON input strip = false, -- <templatedata> evaluation tag = false, -- table, exported root element title = false, -- page tree = false -- table, rewritten templatedata object } local Permit = { builder = { after = "block", align = "block", block = "block", compressed = "block", dense = "block", grouped = "inline", half = "inline", indent = "block", inline = "inline", last = "block", lead = "block", newlines = "*", spaced = "inline" }, colors = { bg = "FFFFFF", fg = "000000", tableheadbg = "B3B7FF", required = "EAF3FF", suggested = "FFFFFF", optional = "EAECF0", deprecated = "FFCBCB" }, params = { aliases = "table", autovalue = "string", default = "string table I18N nowiki", deprecated = "boolean string I18N", description = "string table I18N", example = "string table I18N nowiki", label = "string table I18N", inherits = "string", required = "boolean", style = "string table", suggested = "boolean", suggestedvalues = "string table number boolean", type = "string" }, root = { description = "string table I18N", format = "string", maps = "table", params = "table", paramOrder = "table", sets = "table" }, search = "[{,]%%s*(['\"])%s%%1%%s*:%%s*%%{", types = { boolean = true, content = true, date = true, line = true, number = true, string = true, unknown = true, url = true, ["wiki-file-name"] = true, ["wiki-page-name"] = true, ["wiki-template-name"] = true, ["wiki-user-name"] = true, ["unbalanced-wikitext"] = true, ["string/line"] = "line", ["string/wiki-page-name"] = "wiki-page-name", ["string/wiki-user-name"] = "wiki-user-name" } } local function Fault( alert ) -- Memorize error message -- Parameter: -- alert -- string, error message if Data.scream then Data.scream = string.format( "%s *** %s", Data.scream, alert ) else Data.scream = alert end end -- Fault() local function Fetch( ask, allow ) -- Fetch module -- Parameter: -- ask -- string, with name -- "/global" -- "Multilingual" -- "Text" -- "WLink" -- allow -- true: no error if unavailable -- Returns table of module -- error: Module not available local sign = ask local r, stem if sign:sub( 1, 1 ) == "/" then sign = TemplateData.frame:getTitle() .. sign else stem = sign sign = "Module:" .. stem end if TemplateData.extern then r = TemplateData.extern[ sign ] else TemplateData.extern = { } end if not r then local lucky, g = pcall( require, sign ) if type( g ) == "table" then if stem and type( g[ stem ] ) == "function" then r = g[ stem ]() else r = g end TemplateData.extern[ sign ] = r elseif not allow then error( string.format( "Fetch(%s) %s", sign, g ), 0 ) end end return r end -- Fetch() local function Foreign() -- Guess human language -- Returns slang, or not if type( Data.slang ) == "nil" then local Multilingual = Fetch( "Multilingual", true ) if Multilingual and type( Multilingual.userLangCode ) == "function" then Data.slang = Multilingual.userLangCode() else Data.slang = mw.language.getContentLanguage():getCode() :lower() end end if Data.slang and mw.ustring.codepoint( Data.slang, 1, 1 ) > 122 then Data.slang = false end return Data.slang end -- Foreign() local function facet( ask, at ) -- Find physical position of parameter definition in JSON -- Parameter: -- ask -- string, parameter name -- at -- number, physical position within definition -- Returns number, or nil local seek = string.format( Permit.search, ask:gsub( "%%", "%%%%" ) :gsub( "([%-.()+*?^$%[%]])", "%%%1" ) ) local i, k, r, slice, source if not Data.jump then Data.jump = Data.source:find( "params", 2 ) if Data.jump then Data.jump = Data.jump + 7 else Data.jump = 1 end end i, k = Data.source:find( seek, at + Data.jump ) while i and not r do source = Data.source:sub( k + 1 ) slice = source:match( "^%s*\"([^\"]+)\"s*:" ) if not slice then slice = source:match( "^%s*'([^']+)'%s*:" ) end if ( slice and Permit.params[ slice ] ) or source:match( "^%s*%}" ) then r = k else i, k = Data.source:find( seek, k ) end end -- while i return r end -- facet() local function facilities( apply ) -- Retrieve details of suggestedvalues -- Parameter: -- apply -- table, with plain or enhanced values -- .suggestedvalues -- table|string|number, or more -- Returns -- 1 -- table, with suggestedvalues -- 2 -- table, with CSS map, or not -- 3 -- string, with class, or not -- 4 -- string, with templatestyles, or not local elements = apply.suggestedvalues local s = type( elements ) local r1, r2, r3, r4 if s == "table" then local values = elements.values if type( values ) == "table" then r1 = values if type( elements.scroll ) == "string" then r2 = r2 or { } r2.height = apply.scroll r2.overflow = "auto" end if type( elements.minwidth ) == "string" then local s = type( elements.maxcolumns ) r2 = r2 or { } r2["column-width"] = elements.minwidth if s == "string" or s == "number" then s = tostring( elements.maxcolumns ) r2["column-count"] = s end if type( Config.selMultClm ) == "string" then r3 = Config.selMultClm end if type( Config.stylesMultClm ) == "string" then local src = Config.stylesMultClm .. "/styles.css" r4 = TemplateData.frame :extensionTag( "templatestyles", nil, { src = src } ) end end elseif elements and elements ~= "" then r1 = elements end elseif s == "string" then s = mw.text.trim( about ) if s ~= "" then r1 = { } table.insert( r1, { code = s } ) end elseif s == "number" then r1 = { } table.insert( r1, { code = tostring( elements ) } ) end return r1, r2, r3, r4 end -- facilities() local function factory( adapt ) -- Retrieve localized text from system message -- Parameter: -- adapt -- string, message ID after "templatedata-" -- Returns string, with localized text local o = mw.message.new( "templatedata-" .. adapt ) if Foreign() then o:inLanguage( Data.slang ) end return o:plain() end -- factory() local function faculty( adjust ) -- Test template arg for boolean -- adjust -- string or nil -- Returns boolean local s = type( adjust ) local r if s == "string" then r = mw.text.trim( adjust ) r = ( r ~= "" and r ~= "0" ) elseif s == "boolean" then r = adjust else r = false end return r end -- faculty() local function failures() -- Retrieve error collection and category -- Returns string local r if Data.scream then local e = mw.html.create( "span" ) :addClass( "error" ) :wikitext( Data.scream ) r = tostring( e ) mw.addWarning( "'''TemplateData'''<br />" .. Data.scream ) if Config.strange then r = string.format( "%s[[category:%s]]", r, Config.strange ) end else r = "" end return r end -- failures() local function fair( adjust ) -- Reduce text to one line of plain text, or noexport wikitext blocks -- adjust -- string -- Returns string, with adjusted text local f = function ( a ) return a:gsub( "%s*\n%s*", " " ) :gsub( "%s%s+", " " ) end local tags = { { start = "<noexport>", stop = "</noexport>" }, { start = "<exportonly>", stop = "</exportonly>", l = false } } local r = adjust local i, j, k, s, tag for m = 1, 2 do tag = tags[ m ] if r:find( tag.start, 1, true ) then s = r r = "" i = 1 tag.l = true j, k = s:find( tag.start, i, true ) while j do if j > 1 then r = r .. f( s:sub( i, j - 1 ) ) end i = k + 1 j, k = s:find( tag.stop, i, true ) if j then if m == 1 then r = r .. s:sub( i, j - 1 ) end i = k + 1 j, k = s:find( tag.start, i, true ) else Fault( "missing " .. tag.stop ) end end -- while j r = r .. s:sub( i ) elseif m == 1 then r = f( r ) end end -- for m if tags[ 2 ].l then r = r:gsub( "<exportonly>.*</exportonly>", "" ) end return r end -- fair() local function fancy( advance, alert ) -- Present JSON source -- Parameter: -- advance -- true, for nice -- alert -- true, for visible -- Returns string local r if Data.source then local support = Config.jsonDebug local css if advance then css = { height = "6em", resize = "vertical" } r = { [ 1 ] = "syntaxhighlight", [ 2 ] = Data.source, lang = "json", style = table.concat( css, ";" ) } if alert then r.class( support ) end r = TemplateData.frame:callParserFunction( "#tag", r ) else css = { [ "font-size" ] = "77%", [ "line-height" ] = "1.35" } if alert then css.resize = "vertical" else css.display = "none" end r = mw.html.create( "pre" ) :addClass( support ) :css( css ) :wikitext( mw.text.encode( Data.source ) ) r = tostring( r ) end r = "\n".. r else r = "" end return r end -- fancy() local function faraway( alternatives ) -- Retrieve best language version from multilingual text -- Parameter: -- alternatives -- table, to be evaluated -- Returns -- 1 -- string, with best match -- 2 -- table of other versions, if any local n = 0 local variants = { } local r1, r2 for k, v in pairs( alternatives ) do if type( v ) == "string" then v = mw.text.trim( v ) if v ~= "" and type( k ) == "string" then k = k:lower() variants[ k ] = v n = n + 1 end end end -- for k, v if n > 0 then local Multilingual = Fetch( "Multilingual", true ) if Multilingual and type( Multilingual.i18n ) == "function" then local show, slang = Multilingual.i18n( variants ) if show then r1 = show variants[ slang ] = nil r2 = variants end end if not r1 then Foreign() for k, v in pairs( variants ) do if n == 1 then r1 = v elseif Data.slang == k then variants[ k ] = nil r1 = v r2 = variants end end -- for k, v end if r2 and Multilingual then for k, v in pairs( r2 ) do if v and not Multilingual.isLang( k, true ) then Fault( string.format( "%s <code>lang=%s</code>", "Invalid", k ) ) end end -- for k, v end end return r1, r2 end -- faraway() local function fashioned( about, asked, assign ) -- Create description head -- Parameter: -- about -- table, supposed to contain description -- asked -- true, if mandatory description -- assign -- <block>, if to be equipped -- Returns <block>, with head, or nil local para = assign or mw.html.create( "div" ) local plus, r if about and about.description then if type( about.description ) == "string" then para:wikitext( about.description ) else para:wikitext( about.description[ 1 ] ) plus = mw.html.create( "ul" ) plus:css( "text-align", "left" ) for k, v in pairs( about.description[ 2 ] ) do plus:node( mw.html.create( "li" ) :node( mw.html.create( "code" ) :wikitext( k ) ) :node( mw.html.create( "br" ) ) :wikitext( fair( v ) ) ) end -- for k, v if Config.loudly then plus = mw.html.create( "div" ) :css( "background-color", "#" .. Config.debugmultilang ) :node( plus ) else plus:addClass( "templatedata-maintain" ) :css( "display", "none" ) end end elseif Config.solo and asked then para:addClass( "error" ) :wikitext( Config.solo ) Data.less = true else para = false end if para then if plus then r = mw.html.create( "div" ) :node( para ) :node( plus ) else r = para end end return r end -- fashioned() local function fatten( access ) -- Create table row for sub-headline -- Parameter: -- access -- string, with name -- Returns <tr> local param = Data.tree.params[ access ] local sub, sort = access:match( "(=+)%s*(%S.*)$" ) local headline = mw.html.create( string.format( "h%d", #sub ) ) local r = mw.html.create( "tr" ) local td = mw.html.create( "td" ) :attr( "colspan", "5" ) :attr( "data-sort-value", "!" .. sort ) local s if param.style then s = type( param.style ) if s == "table" then td:css( param.style ) elseif s == "string" then td:cssText( param.style ) end end s = fashioned( param, false, headline ) if s then headline = s else headline:wikitext( sort ) end td:node( headline ) r:node( td ) return r end -- fatten() local function fathers() -- Merge params with inherited values local n = 0 local p = Data.params local t = Data.tree.params local p2, t2 for k, v in pairs( Data.heirs ) do n = n + 1 end -- for k, v for i = 1, n do if Data.heirs then for k, v in pairs( Data.heirs ) do if v and not Data.heirs[ v ] then n = n - 1 t[ k ].inherits = nil Data.heirs[ k ] = nil p2 = { } t2 = { } if p[ v ] then for k2, v2 in pairs( p[ v ] ) do p2[ k2 ] = v2 end -- for k2, v2 if p[ k ] then for k2, v2 in pairs( p[ k ] ) do if type( v2 ) ~= "nil" then p2[ k2 ] = v2 end end -- for k2, v2 end p[ k ] = p2 for k2, v2 in pairs( t[ v ] ) do t2[ k2 ] = v2 end -- for k2, v2 for k2, v2 in pairs( t[ k ] ) do if type( v2 ) ~= "nil" then t2[ k2 ] = v2 end end -- for k2, v2 t[ k ] = t2 else Fault( "No params[] inherits " .. v ) end end end -- for k, v end end -- i = 1, n if n > 0 then local s for k, v in pairs( Data.heirs ) do if v then if s then s = string.format( "%s &#124; %s", s, k ) else s = "Circular inherits: " .. k end end end -- for k, v Fault( s ) end end -- fathers() local function favorize() -- Local customization issues local boole = { ["font-size"] = "125%" } local l, cx = pcall( mw.loadData, TemplateData.frame:getTitle() .. "/config" ) local scripting, style TemplateData.ltr = not mw.language.getContentLanguage():isRTL() if TemplateData.ltr then scripting = "left" else scripting = "right" end boole[ "margin-" .. scripting ] = "3em" Permit.boole = { [false] = { css = boole, lead = true, show = "&#x2610;" }, [true] = { css = boole, lead = true, show = "&#x2611;" } } Permit.css = { } for k, v in pairs( Permit.colors ) do if k == "tableheadbg" then k = "tablehead" end if k == "fg" then style = "color" else style = "background-color" end Permit.css[ k ] = { } Permit.css[ k ][ style ] = "#" .. v end -- for k, v if type( cx ) == "table" then local c, s if type( cx.permit ) == "table" then if type( cx.permit.boole ) == "table" then if type( cx.permit.boole[ true ] ) == "table" then Permit.boole[ false ] = cx.permit.boole[ false ] end if type( cx.permit.boole[ true ] ) == "table" then Permit.boole[ true ] = cx.permit.boole[ true ] end end if type( cx.permit.css ) == "table" then for k, v in pairs( cx.permit.css ) do if type( v ) == "table" then Permit.css[ k ] = v end end -- for k, v end end for k, v in pairs( Config.basicCnf ) do s = type( cx[ k ] ) if s == "string" or s == "table" then Config[ v ] = cx[ k ] end end -- for k, v end if type( Config.subpage ) ~= "string" or type( Config.suffix ) ~= "string" then local got = mw.message.new( "templatedata-doc-subpage" ) local suffix if got:isDisabled() then suffix = "doc" else suffix = got:plain() end if type( Config.subpage ) ~= "string" then Config.subpage = string.format( "/%s$", suffix ) end if type( Config.suffix ) ~= "string" then Config.suffix = string.format( "%%s/%s", suffix ) end end end -- favorize() local function feasible( all, at, about ) -- Deal with suggestedvalues within parameter -- Parameter: -- all -- parameter details -- .default -- .type -- at -- string, with parameter name -- about -- suggestedvalues -- table, -- value and possibly description -- table may have elements: -- .code -- mandatory -- .label -- table|string -- .support -- table|string -- .icon -- string -- .class -- table|string -- .css -- table -- .style -- string -- .less -- true: suppress code -- Returns -- 1: mw.html object <ul> -- 2: sequence table with values, or nil local h = { } local e, r1, r2, s, v if #about > 0 then for i = 1, #about do e = about[ i ] s = type( e ) if s == "table" then if type( e.code ) == "string" then s = mw.text.trim( e.code ) if s == "" then e = nil else e.code = s end else e = nil s = string.format( "params.%s.%s[%d] %s", at, "suggestedvalues", i, "MISSING 'code:'" ) end elseif s == "string" then s = mw.text.trim( e ) if s == "" then e = nil s = string.format( "params.%s.%s[%d] EMPTY", at, "suggestedvalues", i ) Fault( s ) else e = { code = s } end elseif s == "number" then e = { code = tostring( e ) } else s = string.format( "params.%s.%s[%d] INVALID", at, "suggestedvalues", i ) Fault( s ) e = false end if e then v = v or { } table.insert( v, e ) if h[ e.code ] then s = string.format( "params.%s.%s REPEATED %s", at, "suggestedvalues", e.code ) Fault( s ) else h[ e.code ] = true end end end -- for i else Fault( string.format( "params.%s.suggestedvalues %s", at, "NOT AN ARRAY" ) ) end if v then local code, d, k, less, story, swift, t, u r1 = mw.html.create( "ul" ) r2 = { } for i = 1, #v do u = mw.html.create( "li" ) e = v[ i ] table.insert( r2, e.code ) story = false less = ( e.less == true ) if not less then swift = e.code if e.support then local scream, support s = type( e.support ) if s == "string" then support = e.support elseif s == "table" then support = faraway( e.support ) else scream = "INVALID" end if support then s = mw.text.trim( support ) if s == "" then scream = "EMPTY" elseif s:find( "[%[%]|%<%>]" ) then scream = "BAD PAGE" else support = s end end if scream then s = string.format( "params.%s.%s[%d].support %s", at, "suggestedvalues", i, scream ) Fault( s ) else swift = string.format( "[[:%s|%s]]", support, swift ) end end if all.type:sub( 1, 5 ) == "wiki-" and swift == e.code then local rooms = { file = 6, temp = 10, user = 2 } local ns = rooms[ all.type:sub( 6, 9 ) ] or 0 t = mw.title.makeTitle( ns, swift ) if t and t.exists then swift = string.format( "[[:%s|%s]]", t.prefixedText, swift ) end end if e.code == all.default then k = 800 else k = 300 end code = mw.html.create( "code" ) :css( "font-weight", tostring( k ) ) :css( "white-space", "nowrap" ) :wikitext( swift ) u:node( code ) end if e.class then s = type( e.class ) if s == "string" then u:addClass( e.class ) elseif s == "table" then for k, s in pairs( e.class ) do u:addClass( s ) end -- for k, s else s = string.format( "params.%s.%s[%d].class INVALID", at, "suggestedvalues", i ) Fault( s ) end end if e.css then if type( e.css ) == "table" then u:css( e.css ) else s = string.format( "params.%s.%s[%d].css INVALID", at, "suggestedvalues", i ) Fault( s ) end end if e.style then if type( e.style ) == "string" then u:cssText( e.style ) else s = string.format( "params.%s.%s[%d].style INVALID", at, "suggestedvalues", i ) Fault( s ) end end if all.type == "wiki-file-name" and not e.icon then e.icon = e.code end if e.label then s = type( e.label ) if s == "string" then s = mw.text.trim( e.label ) if s == "" then s = string.format( "params.%s.%s[%d].label %s", at, "suggestedvalues", i, "EMPTY" ) Fault( s ) else story = s end elseif s == "table" then story = faraway( e.label ) else s = string.format( "params.%s.%s[%d].label INVALID", at, "suggestedvalues", i ) Fault( s ) end end s = false if type( e.icon ) == "string" then t = mw.title.makeTitle( 6, e.icon ) if t and t.file.exists then local g = mw.html.create( "span" ) s = string.format( "[[%s|16px]]", t.prefixedText ) g:attr( "role", "presentation" ) :wikitext( s ) s = tostring( g ) end end if not s and not less and e.label then s = mw.ustring.char( 0x2013 ) end if s then d = mw.html.create( "span" ) :wikitext( s ) if TemplateData.ltr then if not less then d:css( "margin-left", "0.5em" ) end if story then d:css( "margin-right", "0.5em" ) end else if not less then d:css( "margin-right", "0.5em" ) end if story then d:css( "margin-left", "0.5em" ) end end u:node( d ) end if story then u:wikitext( story ) end r1:newline() :node( u ) end -- for i end if not r1 and v ~= false then Fault( string.format( "params.%s.suggestedvalues INVALID", at ) ) r1 = mw.html.create( "code" ) :addClass( "error" ) :wikitext( "INVALID" ) end return r1, r2 end -- feasible() local function feat() -- Check and store parameter sequence if Data.source then local i = 0 local s for k, v in pairs( Data.tree.params ) do if i == 0 then Data.order = { } i = 1 s = k else i = 2 break -- for k, v end end -- for k, v if i > 1 then local pointers = { } local points = { } local given = { } for k, v in pairs( Data.tree.params ) do i = facet( k, 1 ) if type( v ) == "table" then if type( v.label ) == "string" then s = mw.text.trim( v.label ) if s == "" then s = k end else s = k end if given[ s ] then if given[ s ] == 1 then local scream = "Parameter label '%s' detected multiple times" Fault( string.format( scream, s ) ) given[ s ] = 2 end else given[ s ] = 1 end end if i then table.insert( points, i ) pointers[ i ] = k i = facet( k, i ) if i then s = "Parameter '%s' detected twice" Fault( string.format( s, k ) ) end else s = "Parameter '%s' not detected" Fault( string.format( s, k ) ) end end -- for k, v table.sort( points ) for i = 1, #points do table.insert( Data.order, pointers[ points[ i ] ] ) end -- i = 1, #points elseif s then table.insert( Data.order, s ) end end end -- feat() local function feature( access ) -- Create table row for parameter, check and display violations -- Parameter: -- access -- string, with name -- Returns <tr> local mode, s, status local fine = function ( a ) s = mw.text.trim( a ) return a == s and a ~= "" and not a:find( "%|=\n" ) and not a:find( "%s%s" ) end local begin = mw.html.create( "td" ) local code = mw.html.create( "code" ) local desc = mw.html.create( "td" ) local eager = mw.html.create( "td" ) local legal = true local param = Data.tree.params[ access ] local ranking = { "required", "suggested", "optional", "deprecated" } local r = mw.html.create( "tr" ) local styles = "mw-templatedata-doc-param-" local sort, typed for k, v in pairs( param ) do if v == "" then param[ k ] = false end end -- for k, v -- label sort = param.label or access if sort:match( "^%d+$" ) then begin:attr( "data-sort-value", string.format( "%05d", tonumber( sort ) ) ) end begin:css( "font-weight", "bold" ) :wikitext( sort ) -- name and aliases code:css( "font-size", "92%" ) :css( "white-space", "nowrap" ) :wikitext( access ) if not fine( access ) then code:addClass( "error" ) Fault( string.format( "Bad ID params.<code>%s</code>", access ) ) legal = false begin:attr( "data-sort-value", " " .. sort ) end code = mw.html.create( "td" ) :addClass( styles .. "name" ) :node( code ) if access:match( "^%d+$" ) then code:attr( "data-sort-value", string.format( "%05d", tonumber( access ) ) ) end if type( param.aliases ) == "table" then local lapsus, syn for k, v in pairs( param.aliases ) do code:tag( "br" ) if type( v ) == "string" then if not fine( v ) then lapsus = true code:node( mw.html.create( "span" ) :addClass( "error" ) :css( "font-style", "italic" ) :wikitext( "string" ) ) :wikitext( s ) else syn = mw.html.create( "span" ) :addClass( styles .. "alias" ) :css( "white-space", "nowrap" ) :wikitext( s ) code:node( syn ) end else lapsus = true code:node( mw.html.create( "code" ) :addClass( "error" ) :wikitext( type( v ) ) ) end end -- for k, v if lapsus then s = string.format( "params.<code>%s</code>.aliases", access ) Fault( factory( "invalid-value" ):gsub( "$1", s ) ) legal = false end end -- description etc. s = fashioned( param ) if s then desc:node( s ) end if param.style then s = type( param.style ) if s == "table" then desc:css( param.style ) elseif s == "string" then desc:cssText( param.style ) end end if param.suggestedvalues or param.default or param.example or param.autovalue then local details = { "suggestedvalues", "default", "example", "autovalue" } local dl = mw.html.create( "dl" ) local dd, section, show for i = 1, #details do s = details[ i ] show = param[ s ] if show then dd = mw.html.create( "dd" ) section = factory( "doc-param-" .. s ) if param.type == "boolean" and ( show == "0" or show == "1" ) then local boole = Permit.boole[ ( show == "1" ) ] if boole.lead == true then dd:node( mw.html.create( "code" ) :wikitext( show ) ) :wikitext( " " ) end if type( boole.show ) == "string" then local v = mw.html.create( "span" ) :attr( "aria-hidden", "true" ) :wikitext( boole.show ) if boole.css then v:css( boole.css ) end dd:node( v ) end if type( boole.suffix ) == "string" then dd:wikitext( boole.suffix ) end if boole.lead == false then dd:wikitext( " " ) :node( mw.html.create( "code" ) :wikitext( show ) ) end elseif s == "suggestedvalues" then local v, css, class, ts = facilities( param ) if v then local ul ul, v = feasible( param, access, v ) if v then dd:newline() :node( ul ) if css then dd:css( css ) if class then dd:addClass( class ) end if ts then dd:newline() dd:node( ts ) end end Data.params[ access ].suggestedvalues = v end end else dd:wikitext( show ) end dl:node( mw.html.create( "dt" ) :wikitext( section ) ) :node( dd ) end end -- i = 1, #details desc:node( dl ) end -- type if type( param.type ) == "string" then param.type = mw.text.trim( param.type ) if param.type == "" then param.type = false end end if param.type then s = Permit.types[ param.type ] typed = mw.html.create( "td" ) :addClass( styles .. "type" ) if s then if s == "string" then Data.params[ access ].type = s typed:wikitext( factory( "doc-param-type-" .. s ) ) :tag( "br" ) typed:node( mw.html.create( "span" ) :addClass( "error" ) :wikitext( param.type ) ) Data.lasting = true else local support = Config[ "support4" .. param.type ] s = factory( "doc-param-type-" .. param.type ) if support then s = string.format( "[[%s|%s]]", support, s ) end typed:wikitext( s ) end else Data.params[ access ].type = "unknown" typed:addClass( "error" ) :wikitext( "INVALID" ) s = string.format( "params.<code>%s</code>.type", access ) Fault( factory( "invalid-value" ):gsub( "$1", s ) ) legal = false end else typed = mw.html.create( "td" ) :wikitext( factory( "doc-param-type-unknown" ) ) Data.params[ access ].type = "unknown" if param.default then Data.params[ access ].default = nil Fault( "Default value requires <code>type</code>" ) legal = false end end typed:addClass( "navigation-not-searchable" ) -- status if param.required then mode = 1 if param.autovalue then Fault( string.format( "autovalued <code>%s</code> required", access ) ) legal = false end if param.default then Fault( string.format( "Defaulted <code>%s</code> required", access ) ) legal = false end if param.deprecated then Fault( string.format( "Required deprecated <code>%s</code>", access ) ) legal = false end elseif param.deprecated then mode = 4 elseif param.suggested then mode = 2 else mode = 3 end status = ranking[ mode ] ranking = factory( "doc-param-status-" .. status ) if mode == 1 or mode == 4 then ranking = mw.html.create( "span" ) :css( "font-weight", "bold" ) :wikitext( ranking ) if type( param.deprecated ) == "string" then ranking:tag( "br" ) ranking:wikitext( param.deprecated ) end if param.suggested and mode == 4 then s = string.format( "Suggesting deprecated <code>%s</code>", access ) Fault( s ) legal = false end end eager:attr( "data-sort-value", tostring( mode ) ) :node( ranking ) :addClass( string.format( "%sstatus-%s %s", styles, status, "navigation-not-searchable" ) ) -- <tr> r:attr( "id", "templatedata:" .. mw.uri.anchorEncode( access ) ) :css( Permit.css[ status ] ) :addClass( styles .. status ) :node( begin ) :node( code ) :node( desc ) :node( typed ) :node( eager ) :newline() if not legal then r:css( "border", "#FF0000 3px solid" ) end return r end -- feature() local function features() -- Create <table> for parameters -- Returns <table>, or nil local r if Data.tree and Data.tree.params then local tbl = mw.html.create( "table" ) local tr = mw.html.create( "tr" ) feat() if Data.order and #Data.order > 1 then tbl:addClass( "sortable" ) end if type( Config.classTable ) == "table" then for k, v in pairs( Config.classTable ) do tbl:addClass( v ) end -- for k, v end if type( Config.cssTable ) == "table" then tbl:css( Config.cssTable ) end tr:addClass( "navigation-not-searchable" ) :node( mw.html.create( "th" ) :attr( "colspan", "2" ) :css( Permit.css.tablehead ) :wikitext( factory( "doc-param-name" ) ) ) :node( mw.html.create( "th" ) :css( Permit.css.tablehead ) :wikitext( factory( "doc-param-desc" ) ) ) :node( mw.html.create( "th" ) :css( Permit.css.tablehead ) :wikitext( factory( "doc-param-type" ) ) ) :node( mw.html.create( "th" ) :css( Permit.css.tablehead ) :wikitext( factory( "doc-param-status" ) ) ) tbl:newline() -- :node( mw.html.create( "thead" ) :node( tr ) -- ) :newline() if Data.order then local leave, s for i = 1, #Data.order do s = Data.order[ i ] if s:sub( 1, 1 ) == "=" then leave = true tbl:node( fatten( s ) ) Data.order[ i ] = false elseif s:match( "[=|]" ) then Fault( string.format( "Bad param <code>%s</code>", s ) ) else tbl:node( feature( s ) ) end end -- for i = 1, #Data.order if leave then for i = #Data.order, 1, -1 do if not Data.order[ i ] then table.remove( Data.order, i ) end end -- for i = #Data.order, 1, -1 end Data.tag.paramOrder = Data.order end if Config.cssTabWrap or Data.scroll then r = mw.html.create( "div" ) if type( Config.cssTabWrap ) == "table" then r:css( Config.cssTabWrap ) elseif type( Config.cssTabWrap ) == "string" then -- deprecated r:cssText( Config.cssTabWrap ) end if Data.scroll then r:css( "height", Data.scroll ) :css( "overflow", "auto" ) end r:node( tbl ) else r = tbl end end return r end -- features() local function fellow( any, assigned, at ) -- Check sets[] parameter and issue error message, if necessary -- Parameter: -- any -- should be number -- assigned -- parameter name -- at -- number, of set local s if type( any ) ~= "number" then s = "<code>sets[%d].params[%s]</code>??" Fault( string.format( s, at, mw.text.nowiki( tostring( any ) ) ) ) elseif type( assigned ) == "string" then if not Data.got.params[ assigned ] then s = "<code>sets[%d].params %s</code> is undefined" Fault( string.format( s, at, assigned ) ) end else s = "<code>sets[%d].params[%d] = %s</code>??" Fault( string.format( s, k, type( assigned ) ) ) end end -- fellow() local function fellows() -- Check sets[] and issue error message, if necessary local s if type( Data.got.sets ) == "table" then if type( Data.got.params ) == "table" then for k, v in pairs( Data.got.sets ) do if type( k ) == "number" then if type( v ) == "table" then for ek, ev in pairs( v ) do if ek == "label" then s = type( ev ) if s ~= "string" and s ~= "table" then s = "<code>sets[%d].label</code>??" Fault( string.format( s, k ) ) end elseif ek == "params" and type( ev ) == "table" then for pk, pv in pairs( ev ) do fellow( pk, pv, k ) end -- for pk, pv else ek = mw.text.nowiki( tostring( ek ) ) s = "<code>sets[%d][%s]</code>??" Fault( string.format( s, k, ek ) ) end end -- for ek, ev else k = mw.text.nowiki( tostring( k ) ) v = mw.text.nowiki( tostring( v ) ) s = string.format( "<code>sets[%s][%s]</code>??", k, v ) Fault( s ) end else k = mw.text.nowiki( tostring( k ) ) s = string.format( "<code>sets[%s]</code> ?????", k ) Fault( s ) end end -- for k, v else s = "<code>params</code> required for <code>sets</code>" Fault( s ) end else s = "<code>sets</code> needs to be of <code>object</code> type" Fault( s ) end end -- fellows() local function finalize( advance ) -- Wrap presentation into frame -- Parameter: -- advance -- true, for nice -- Returns string local r, lapsus if Data.div then r = tostring( Data.div ) elseif Data.strip then r = Data.strip else lapsus = true r = "" end r = r .. failures() if Data.source then local live = ( advance or lapsus ) if not live then live = TemplateData.frame:preprocess( "{{REVISIONID}}" ) live = ( live == "" ) end if live then r = r .. fancy( advance, lapsus ) end end return r end -- finalize() local function find() -- Find JSON data within page source (title) -- Returns string, or nil local s = Data.title:getContent() local i, j = s:find( "<templatedata>", 1, true ) local r if i then local k = s:find( "</templatedata>", j, true ) if k then r = mw.text.trim( s:sub( j + 1, k - 1 ) ) end end return r end -- find() local function flat( adjust ) -- Remove formatting from text string for VE -- Parameter: -- arglist -- string, to be stripped, or nil -- Returns string, or nil local r if adjust then r = adjust:gsub( "\n", " " ) if r:find( "<noexport>", 1, true ) then r = r:gsub( "<noexport>.*</noexport>", "" ) end if r:find( "<exportonly>", 1, true ) then r = r:gsub( "</?exportonly>", "" ) end if r:find( "''", 1, true ) then r = r:gsub( "'''", "" ):gsub( "''", "" ) end if r:find( "<", 1, true ) then local Text = Fetch( "Text" ) r = Text.getPlain( r:gsub( "<br */?>", "\r\n" ) ) end if r:find( "[", 1, true ) then local WLink = Fetch( "WLink" ) if WLink.isBracketedURL( r ) then r = r:gsub( "%[([hf]tt?ps?://%S+) [^%]]+%]", "%1" ) end r = WLink.getPlain( r ) end if r:find( "&", 1, true ) then r = mw.text.decode( r ) if r:find( "&shy;", 1, true ) then r = r:gsub( "&shy;", "" ) end end end return r end -- flat() local function flush() -- JSON encode narrowed input; obey unnamed (numerical) parameters -- Returns <templatedata> JSON string local r if Data.tag then r = mw.text.jsonEncode( Data.tag ):gsub( "%}$", "," ) else r = "{" end r = r .. "\n\"params\":{" if Data.order then local sep = "" local s for i = 1, #Data.order do s = Data.order[ i ] r = string.format( "%s%s\n%s:%s", r, sep, mw.text.jsonEncode( s ), mw.text.jsonEncode( Data.params[ s ] ) ) sep = ",\n" end -- for i = 1, #Data.order end r = r .. "\n}\n}" return r end -- flush() local function focus( access ) -- Check components; focus multilingual description, build trees -- Parameter: -- access -- string, name of parameter, nil for root local f = function ( a, at ) local r if at then r = string.format( "<code>params.%s</code>", at ) else r = "''root''" end if a then r = string.format( "%s<code>.%s</code>", r, a ) end return r end local parent if access then parent = Data.got.params[ access ] else parent = Data.got end if type( parent ) == "table" then local elem, got, permit, s, scope, slot, tag, target if access then permit = Permit.params if type( access ) == "number" then slot = tostring( access ) else slot = access end else permit = Permit.root end for k, v in pairs( parent ) do scope = permit[ k ] if scope then s = type( v ) if s == "string" and k ~= "format" then v = mw.text.trim( v ) end if scope:find( s, 1, true ) then if scope:find( "I18N", 1, true ) then if s == "string" then elem = fair( v ) elseif s == "table" then local translated v, translated = faraway( v ) if v then if translated and k == "description" then elem = { [ 1 ] = fair( v ), [ 2 ] = translated } else elem = fair( v ) end else elem = false end end if type( v ) == "string" then if k == "deprecated" then if v == "1" then v = true elseif v == "0" then v = false end elem = v elseif scope:find( "nowiki", 1, true ) then elem = mw.text.nowiki( v ) elem = elem:gsub( "&#13;\n", "<br>" ) v = v:gsub( string.char( 13 ), "" ) else v = flat( v ) end elseif s == "boolean" then if scope:find( "boolean", 1, true ) then elem = v else s = "Type <code>boolean</code> bad for " .. f( k, slot ) Fault( s ) end end else if k == "params" and not access then v = nil elem = nil elseif k == "format" and not access then elem = mw.text.decode( v ) v = nil elseif k == "inherits" then elem = v if not Data.heirs then Data.heirs = { } end Data.heirs[ slot ] = v v = nil elseif k == "style" then elem = v v = nil elseif s == "string" then v = mw.text.nowiki( v ) elem = v else elem = v end end if type( elem ) ~= "nil" then if not target then if access then if not Data.tree.params then Data.tree.params = { } end Data.tree.params[ slot ] = { } target = Data.tree.params[ slot ] else Data.tree = { } target = Data.tree end end target[ k ] = elem elem = false end if type( v ) ~= "nil" then if not tag then if access then if type( v ) == "string" and v.sub( 1, 1 ) == "=" then v = nil else if not Data.params then Data.params = { } end Data.params[ slot ] = { } tag = Data.params[ slot ] end else Data.tag = { } tag = Data.tag end end if type( v ) ~= "nil" and k ~= "suggestedvalues" then tag[ k ] = v end end else s = string.format( "Type <code>%s</code> bad for %s", scope, f( k, slot ) ) Fault( s ) end else Fault( "Unknown component " .. f( k, slot ) ) end end -- for k, v if not access and Data.got.sets then fellows() end else Fault( f() .. " needs to be of <code>object</code> type" ) end end -- focus() local function format() -- Build formatted element -- Returns <inline> local source = Data.tree.format:lower() local r, s if source == "inline" or source == "block" then r = mw.html.create( "i" ) :wikitext( source ) else local code if source:find( "|", 1, true ) then local scan = "^[\n ]*%{%{[\n _]*|[\n _]*=[\n _]*%}%}[\n ]*$" if source:match( scan ) then code = source:gsub( "\n", "N" ) else s = mw.text.nowiki( source ):gsub( "\n", "&#92;n" ) s = tostring( mw.html.create( "code" ) :wikitext( s ) ) Fault( "Invalid format " .. s ) source = false end else local words = mw.text.split( source, "%s+" ) local show, start, support, unknown for i = 1, #words do s = words[ i ] if i == 1 then start = s end support = Permit.builder[ s ] if support == start or support == "*" then Permit.builder[ s ] = true elseif s:match( "^[1-9]%d?" ) and Permit.builder.align then Permit.builder.align = tonumber( s ) else if unknown then unknown = string.format( "%s %s", unknown, s ) else unknown = s end end end -- i = 1, #words if unknown then s = tostring( mw.html.create( "code" ) :css( "white-space", "nowrap" ) :wikitext( s ) ) Fault( "Unknown/misplaced format keyword " .. s ) source = false start = false end if start == "inline" then if Permit.builder.half == true then show = "inline half" code = "{{_ |_=_}}" elseif Permit.builder.grouped == true then show = "inline grouped" code = "{{_ | _=_}}" elseif Permit.builder.spaced == true then show = "inline spaced" code = "{{_ | _ = _ }}" end if Permit.builder.newlines == true then show = show or "inline" code = code or "{{_|_=_}}" show = show .. " newlines" code = string.format( "N%sN", code ) end elseif start == "block" then local space = "" -- amid "|" and name local spaced = " " -- preceding "=" local spacer = " " -- following "=" local suffix = "N" -- closing "}}" on new line show = "block" if Permit.builder.indent == true then start = " " show = "block indent" else start = "" end if Permit.builder.compressed == true then spaced = "" spacer = "" show = show .. " compressed" if Permit.builder.last == true then show = show .. " last" else suffix = "" end else if Permit.builder.lead == true then show = show .. " lead" space = " " end if type( Permit.builder.align ) ~= "string" then local n s = " align" if Permit.builder.align == true then n = 0 if type( Data.got ) == "table" and type( Data.got.params ) == "table" then for k, v in pairs( Data.got.params ) do if type( v ) == "table" and not v.deprecated and type( k ) == "string" then k = mw.ustring.len( k ) if k > n then n = k end end end -- for k, v end else n = Permit.builder.align if type( n ) == "number" and n > 1 then s = string.format( "%s %d", s, n ) else n = 0 -- How comes? end end if n > 1 then spaced = string.rep( "_", n - 1 ) .. " " end show = show .. s elseif Permit.builder.after == true then spaced = "" show = show .. " after" elseif Permit.builder.dense == true then spaced = "" spacer = "" show = show .. " dense" end if Permit.builder.last == true then suffix = spacer show = show .. " last" end end code = string.format( "N{{_N%s|%s_%s=%s_%s}}N", start, space, spaced, spacer, suffix ) if show == "block" then show = "block newlines" end end if show then r = mw.html.create( "span" ) :wikitext( show ) end end if code then source = code:gsub( "N", "\n" ) code = mw.text.nowiki( code ):gsub( "N", "&#92;n" ) code = mw.html.create( "code" ) :css( "margin-left", "1em" ) :css( "margin-right", "1em" ) :wikitext( code ) if r then r = mw.html.create( "span" ) :node( r ) :node( code ) else r = code end end end if source and Data.tag then Data.tag.format = source end return r end -- format() local function formatter() -- Build presented documentation -- Returns <div> local r = mw.html.create( "div" ) local x = fashioned( Data.tree, true, r ) local s if x then r = x end if Data.leading then local toc = mw.html.create( "div" ) local shift if Config.suppressTOCnum then toc:addClass( Config.suppressTOCnum ) if type( Config.stylesTOCnum ) == "string" then local src = Config.stylesTOCnum .. "/styles.css" s = TemplateData.frame:extensionTag( "templatestyles", nil, { src = src } ) r:newline() :node( s ) end end toc:addClass( "navigation-not-searchable" ) :css( "margin-top", "0.5em" ) :wikitext( "__TOC__" ) if Data.sibling then local block = mw.html.create( "div" ) if TemplateData.ltr then shift = "right" else shift = "left" end block:css( "float", shift ) :wikitext( Data.sibling ) r:newline() :node( block ) :newline() end r:newline() :node( toc ) :newline() if shift then r:node( mw.html.create( "div" ) :css( "clear", shift ) ) :newline() end end s = features() if s then if Data.leading then r:node( mw.html.create( "h" .. Config.nested ) :wikitext( factory( "doc-params" ) ) ) :newline() end r:node( s ) end if Data.shared then local global = mw.html.create( "div" ) :attr( "id", "templatedata-global" ) local shift if TemplateData.ltr then shift = "right" else shift = "left" end global:css( "float", shift ) :wikitext( string.format( "[[%s|%s]]", Data.shared, "Global" ) ) r:newline() :node( global ) end if Data.tree and Data.tree.format then local e = format() if e then local show = "Format" if Config.supportFormat then show = string.format( "[[%s|%s]]", Config.supportFormat, show ) end r:node( mw.html.create( "p" ) :addClass( "navigation-not-searchable" ) :wikitext( show .. ": " ) :node( e ) ) end end return r end -- formatter() local function free() -- Remove JSON comment lines if Data.source:find( "//", 1, true ) then Data.source:gsub( "([{,\"'])(%s*\n%s*//.*\n%s*)([{},\"'])", "%1%3" ) end end -- free() local function full() -- Build survey table from JSON data, append invisible <templatedata> Data.div = mw.html.create( "div" ) :addClass( "mw-templatedata-doc-wrap" ) if Permit.css.bg then Data.div:css( Permit.css.bg ) end if Permit.css.fg then Data.div:css( Permit.css.fg ) end focus() if Data.tag then if type( Data.got.params ) == "table" then for k, v in pairs( Data.got.params ) do focus( k ) end -- for k, v if Data.heirs then fathers() end end end Data.div:node( formatter() ) if not Data.lazy then Data.slim = flush() if TemplateData.frame then local div = mw.html.create( "div" ) local tdata = { [ 1 ] = "templatedata", [ 2 ] = Data.slim } Data.strip = TemplateData.frame:callParserFunction( "#tag", tdata ) div:wikitext( Data.strip ) if Config.loudly then Data.div:node( mw.html.create( "hr" ) :css( { height = "7ex" } ) ) else div:css( "display", "none" ) end Data.div:node( div ) end end if Data.lasting then Fault( "deprecated type syntax" ) end if Data.less then Fault( Config.solo ) end end -- full() local function furnish( adapt, arglist ) -- Analyze transclusion -- Parameter: -- adapt -- table, #invoke parameters -- arglist -- table, template parameters -- Returns string local source favorize() -- deprecated: for k, v in pairs( Config.basicCnf ) do if adapt[ k ] and adapt[ k ] ~= "" then Config[ v ] = adapt[ k ] end end -- for k, v if arglist.heading and arglist.heading:match( "^[3-6]$" ) then Config.nested = arglist.heading else Config.nested = "2" end Config.loudly = faculty( arglist.debug or adapt.debug ) Data.lazy = faculty( arglist.lazy ) and not Config.loudly Data.leading = faculty( arglist.TOC ) if Data.leading and arglist.TOCsibling then Data.sibling = mw.text.trim( arglist.TOCsibling ) end if arglist.lang then Data.slang = arglist.lang:lower() elseif adapt.lang then Data.slang = adapt.lang:lower() end if arglist.JSON then source = arglist.JSON elseif arglist.Global then source = TemplateData.getGlobalJSON( arglist.Global, arglist.Local ) elseif arglist[ 1 ] then local s = mw.text.trim( arglist[ 1 ] ) local start = s:sub( 1, 1 ) if start == "<" then Data.strip = s elseif start == "{" then source = s elseif mw.ustring.sub( s, 1, 8 ) == mw.ustring.char( 127, 39, 34, 96, 85, 78, 73, 81 ) then Data.strip = s end end if type( arglist.vertical ) == "string" and arglist.vertical:match( "^%d*%.?%d+[emprx]+$" ) then Data.scroll = arglist.vertical end if not source then Data.title = mw.title.getCurrentTitle() source = find() if not source and not Data.title.text:match( Config.subpage ) then local s = string.format( Config.suffix, Data.title.prefixedText ) Data.title = mw.title.new( s ) if Data.title.exists then source = find() end end end if not Data.lazy then if not Data.title then Data.title = mw.title.getCurrentTitle() end Data.lazy = Data.title.text:match( Config.subpage ) end if type( source ) == "string" then TemplateData.getPlainJSON( source ) end return finalize( faculty( arglist.source ) ) end -- furnish() Failsafe.failsafe = function ( atleast ) -- Retrieve versioning and check for compliance -- Precondition: -- atleast -- string, with required version -- or wikidata|item|~|@ or false -- Postcondition: -- Returns string -- with queried version/item, also if problem -- false -- if appropriate -- 2020-08-17 local since = atleast local last = ( since == "~" ) local linked = ( since == "@" ) local link = ( since == "item" ) local r if last or link or linked or since == "wikidata" then local item = Failsafe.item since = false if type( item ) == "number" and item > 0 then local suited = string.format( "Q%d", item ) if link then r = suited else local entity = mw.wikibase.getEntity( suited ) if type( entity ) == "table" then local seek = Failsafe.serialProperty or "P348" local vsn = entity:formatPropertyValues( seek ) if type( vsn ) == "table" and type( vsn.value ) == "string" and vsn.value ~= "" then if last and vsn.value == Failsafe.serial then r = false elseif linked then if mw.title.getCurrentTitle().prefixedText == mw.wikibase.getSitelink( suited ) then r = false else r = suited end else r = vsn.value end end end end end end if type( r ) == "nil" then if not since or since <= Failsafe.serial then r = Failsafe.serial else r = false end end return r end -- Failsafe.failsafe() TemplateData.getGlobalJSON = function ( access, adapt ) -- Retrieve TemplateData from a global repository (JSON) -- Parameter: -- access -- string, with page specifier (on WikiMedia Commons) -- adapt -- JSON string or table with local overrides -- Returns true, if succeeded local plugin = Fetch( "/global" ) local r if type( plugin ) == "table" and type( plugin.fetch ) == "function" then local s, got = plugin.fetch( access, adapt ) if got then Data.got = got Data.order = got.paramOrder Data.shared = s r = true full() else Fault( s ) end end return r end -- TemplateData.getGlobalJSON() TemplateData.getPlainJSON = function ( adapt ) -- Reduce enhanced JSON data to plain text localized JSON -- Parameter: -- adapt -- string, with enhanced JSON -- Returns string, or not if type( adapt ) == "string" then Data.source = adapt free() local lucky lucky, Data.got = pcall( mw.text.jsonDecode, Data.source ) if type( Data.got ) == "table" then full() elseif not Data.strip then local scream = type( Data.got ) if scream == "string" then scream = Data.got else scream = "Data.got: " .. scream end Fault( "fatal JSON error: " .. scream ) end end return Data.slim end -- TemplateData.getPlainJSON() TemplateData.test = function ( adapt, arglist ) TemplateData.frame = mw.getCurrentFrame() return furnish( adapt, arglist ) end -- TemplateData.test() -- Export local p = { } p.f = function ( frame ) -- Template call local lucky, r TemplateData.frame = frame lucky, r = pcall( furnish, frame.args, frame:getParent().args ) if not lucky then Fault( "INTERNAL: " .. r ) r = failures() end return r end -- p.f p.failsafe = function ( frame ) -- Versioning interface local s = type( frame ) local since if s == "table" then since = frame.args[ 1 ] elseif s == "string" then since = frame end if since then since = mw.text.trim( since ) if since == "" then since = false end end return Failsafe.failsafe( since ) or "" end -- p.failsafe p.TemplateData = function () -- Module interface return TemplateData end return p a0976bcf0e87d0e519ff239bd6aec0b63b6f40c6 Module:Transclusion count/data/P 828 626 1413 1412 2023-10-01T10:17:06Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/P]] Scribunto text/plain return { ["P"] = 6100, ["P-phrases"] = 3300, ["P."] = 3700, ["P1"] = 143000, ["P2"] = 293000, ["PAGENAMEBASE"] = 1570000, ["PAGENAMEU"] = 76000, ["PAK"] = 3000, ["PD-US"] = 11000, ["PD-US-1923"] = 2300, ["PD-US-1923-abroad"] = 5900, ["PD-US-expired"] = 4500, ["PD-US-expired-abroad"] = 7100, ["PD-art"] = 3500, ["PD-ineligible-USonly"] = 5200, ["PD-notice"] = 21000, ["PD-old-100"] = 5000, ["PD-self"] = 36000, ["PD-textlogo"] = 6600, ["PDB_Gallery"] = 2900, ["PDanube"] = 3200, ["PER"] = 3100, ["PHI"] = 2500, ["PHL"] = 3500, ["PLANTS"] = 4000, ["PM20"] = 3300, ["PMID"] = 7000, ["POL"] = 53000, ["POR"] = 4900, ["POTD_default"] = 11000, ["POTD_image"] = 2700, ["POTD_navigation"] = 6800, ["POTDlink"] = 7200, ["POV"] = 7300, ["PR/header"] = 3100, ["PR/heading"] = 7200, ["PRT"] = 5700, ["PR_link"] = 102000, ["PS"] = 2900, ["Pad"] = 55000, ["Page"] = 4100, ["Page_name_sub"] = 46000, ["Page_needed"] = 18000, ["Page_tabs"] = 3500, ["Page_tabs/styles.css"] = 3500, ["Page_views"] = 2300, ["Pagelinks"] = 42000, ["Pagelist"] = 4700, ["Pagetype"] = 12200000, ["Paid"] = 9300, ["Para"] = 2630000, ["Parabr"] = 2700, ["Paragraph_break"] = 1240000, ["Param_value"] = 135000, ["Parameter_names_example"] = 2400, ["ParmPart"] = 13000, ["Partial"] = 2100, ["Partial_minor_planet_designation"] = 5800, ["Partly_done"] = 2600, ["Party_color"] = 73000, ["Party_color_cell"] = 4400, ["Party_name_with_color"] = 7600, ["Party_name_with_colour"] = 3200, ["Party_shading/Democratic"] = 15000, ["Party_shading/Independent"] = 2200, ["Party_shading/Republican"] = 14000, ["Party_stripe"] = 18000, ["Pass"] = 2700, ["Pb"] = 1220000, ["Pbox"] = 3100, ["Pbox/1"] = 3100, ["Peacock"] = 3400, ["Pedigree"] = 3900, ["Peer_review/heading"] = 10000, ["Peer_review_tools"] = 8300, ["Pending"] = 3400, ["Pengoal"] = 9500, ["Penmiss"] = 11000, ["Percentage"] = 13000, ["Performance_key"] = 2500, ["Period_color"] = 23000, ["Period_end"] = 21000, ["Period_id"] = 23000, ["Period_start"] = 23000, ["PeruTasks"] = 16000, ["Phab"] = 5600, ["Phanerozoic_220px"] = 21000, ["PharmNavFootnote"] = 5300, ["Philippine_name"] = 2900, ["Philosophy"] = 3600, ["Photo_montage"] = 4500, ["Photo_requested"] = 104000, ["Photograph_requested"] = 3000, ["Photomontage"] = 4400, ["Physics"] = 9300, ["Picture_of_the_day"] = 7200, ["Pie_chart"] = 5800, ["Pie_chart/slice"] = 5800, ["Ping"] = 229000, ["Pipe"] = 115000, ["Place_name_disambiguation"] = 40000, ["Plain_link"] = 161000, ["Plain_list"] = 13000, ["Plain_text"] = 40000, ["Plainlink"] = 80000, ["Plainlist"] = 347000, ["Plainlist/styles.css"] = 2920000, ["Player"] = 3600, ["Player2"] = 2700, ["Please_check_ISSN"] = 14000, ["Plural"] = 105000, ["Pluralize_from_text"] = 1510000, ["Poem_quote"] = 3000, ["Poemquote"] = 2300, ["Politician_icon"] = 33000, ["Politician_icon2"] = 33000, ["Politics_sidebar_below"] = 19000, ["Politics_sidebar_title"] = 19000, ["Poll_top"] = 2000, ["Polluted_category"] = 2200, ["Polparty"] = 27000, ["Pop_density"] = 9200, ["Population_Germany"] = 14000, ["Portal"] = 9310000, ["Portal-Class"] = 7600, ["Portal-inline"] = 218000, ["Portal_bar"] = 113000, ["Portal_box"] = 2700, ["Portalbar"] = 12000, ["Portuguese_name"] = 8700, ["PosMapFS"] = 4300, ["Possible"] = 3400, ["Possibly_empty_category"] = 69000, ["Post-nominals"] = 51000, ["Post-nominals/AUS"] = 7400, ["Post-nominals/CAN"] = 9100, ["Post-nominals/GBR"] = 27000, ["Post-nominals/NZL"] = 4000, ["Postnominals"] = 9200, ["Pp"] = 14000, ["Pp-book-cover"] = 52000, ["Pp-extended"] = 2200, ["Pp-move"] = 8000, ["Pp-move-indef"] = 3400, ["Pp-pc"] = 3700, ["Pp-pc1"] = 2400, ["Pp-protected"] = 6500, ["Pp-semi-indef"] = 4400, ["Pp-template"] = 2600, ["Pp-vandalism"] = 2500, ["Precision"] = 270000, ["PresFoot"] = 2900, ["PresHead"] = 3300, ["PresRow"] = 3300, ["Press"] = 4700, ["Preview_warning"] = 29000, ["Primary_source_inline"] = 5800, ["Primary_sources"] = 30000, ["Principal_rank"] = 479000, ["Prl"] = 102000, ["Pro-wrestling"] = 5500, ["ProCyclingStats"] = 2500, ["ProQuest"] = 16000, ["Professional_wrestling_profiles"] = 2100, ["Professional_wrestling_results_table"] = 2600, ["Profit"] = 3600, ["Progress_box"] = 17000, ["Project-Class"] = 12000, ["Project_Catholicism"] = 2000, ["Project_other"] = 16000, ["Proper_name"] = 2400, ["Prose"] = 3300, ["Proxy_block"] = 2200, ["Pso"] = 3700, ["Purge"] = 378000, ["Purge_button"] = 17000, ["Module:Page"] = 245000, ["Module:PageLinks"] = 42000, ["Module:Page_tabs"] = 3500, ["Module:Pagelist"] = 4700, ["Module:Pagetype"] = 15900000, ["Module:Pagetype/config"] = 15900000, ["Module:ParameterCount"] = 770000, ["Module:Parameter_names_example"] = 2400, ["Module:Parameter_validation"] = 131000, ["Module:Parameter_validation/default_config"] = 131000, ["Module:Party_name_with_color"] = 8500, ["Module:Percentage"] = 13000, ["Module:Person_height"] = 258000, ["Module:Person_length"] = 7000, ["Module:Person_weight"] = 78000, ["Module:Photo_montage"] = 4500, ["Module:Plain_text"] = 1490000, ["Module:Political_party"] = 114000, ["Module:Political_party/A"] = 20000, ["Module:Political_party/B"] = 15000, ["Module:Political_party/C"] = 39000, ["Module:Political_party/D"] = 48000, ["Module:Political_party/E"] = 5500, ["Module:Political_party/F"] = 11000, ["Module:Political_party/G"] = 16000, ["Module:Political_party/H"] = 4900, ["Module:Political_party/I"] = 48000, ["Module:Political_party/J"] = 6900, ["Module:Political_party/K"] = 3600, ["Module:Political_party/L"] = 37000, ["Module:Political_party/M"] = 11000, ["Module:Political_party/N"] = 29000, ["Module:Political_party/O"] = 5000, ["Module:Political_party/P"] = 25000, ["Module:Political_party/R"] = 46000, ["Module:Political_party/S"] = 28000, ["Module:Political_party/T"] = 10000, ["Module:Political_party/U"] = 17000, ["Module:Political_party/V"] = 7100, ["Module:Political_party/W"] = 11000, ["Module:Pop_density"] = 9200, ["Module:PopulationFromWikidata"] = 6200, ["Module:Portal"] = 9620000, ["Module:Portal-inline"] = 218000, ["Module:Portal/images/a"] = 1620000, ["Module:Portal/images/aliases"] = 170000, ["Module:Portal/images/b"] = 2760000, ["Module:Portal/images/c"] = 1540000, ["Module:Portal/images/d"] = 102000, ["Module:Portal/images/e"] = 403000, ["Module:Portal/images/f"] = 801000, ["Module:Portal/images/g"] = 617000, ["Module:Portal/images/h"] = 422000, ["Module:Portal/images/i"] = 1070000, ["Module:Portal/images/j"] = 264000, ["Module:Portal/images/k"] = 69000, ["Module:Portal/images/l"] = 416000, ["Module:Portal/images/m"] = 619000, ["Module:Portal/images/n"] = 718000, ["Module:Portal/images/o"] = 399000, ["Module:Portal/images/other"] = 124000, ["Module:Portal/images/p"] = 837000, ["Module:Portal/images/q"] = 3000, ["Module:Portal/images/r"] = 366000, ["Module:Portal/images/s"] = 1560000, ["Module:Portal/images/t"] = 614000, ["Module:Portal/images/u"] = 986000, ["Module:Portal/images/v"] = 282000, ["Module:Portal/images/w"] = 166000, ["Module:Portal/images/y"] = 32000, ["Module:Portal/images/z"] = 5300, ["Module:Portal/styles.css"] = 9310000, ["Module:Portal_bar"] = 132000, ["Module:Portal_bar/styles.css"] = 132000, ["Module:Professional_wrestling_profiles"] = 2200, ["Module:Professional_wrestling_results_table"] = 2600, ["Module:Progress_box"] = 17000, ["Module:Progress_box/config"] = 17000, ["Module:Progress_box/styles.css"] = 17000, ["Module:Protect"] = 248000, ["Module:Protected_edit_request"] = 47000, ["Module:Protection_banner"] = 54000, ["Module:Protection_banner/config"] = 54000, ["Module:Purge"] = 397000, } e1e50a2f5ca745d5b0897049a35f3a7e635a999a Template:Bold list 10 627 1415 1414 2023-10-01T10:17:07Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Bold_list]] wikitext text/x-wiki <includeonly>{{{{{|safesubst:}}}#invoke:Bold list|main|conj={{{conj|or}}}}}</includeonly><noinclude>{{{{BASEPAGENAME}}|A|B|C}} {{Documentation}}</noinclude> 2a2ac83abf84eb3db2c1d0b15b6c66cf88f18e99 Template:HTML lists 10 628 1417 1416 2023-10-01T10:17:10Z Führerredux 2 1 revision imported from [[:wikipedia:Template:HTML_lists]] wikitext text/x-wiki {{navbox top |name= HTML lists |title=HTML lists |state=<includeonly>collapsed</includeonly> |above = More information: {{hlist | [[Help:List]] | [[WP:List dos and don'ts]] | [[WP:Manual of Style/Embedded lists]] | {{section link|WP:Manual of Style/Accessibility#Lists}} | [[WP:WikiProject Lists]] }} }} {|style="width:100%" | style="vertical-align:top; width:32%" | {| class="wikitable" style="width:100%" |- ! Horizontal list |- | {{mono|{{tl|hlist}}}} |- | {{tlx|hlist |item1&nbsp;|item2&nbsp;|...}} |- | {{hlist |item1 |item2 |...}} |} | rowspan=4 style="width:2%"| | style="vertical-align:top; width:32%"| {| class="wikitable" style="width:100%" |- ! Horizontal list |- | {{mono|{{tl|flatlist}}}} |- | {{tlx|flatlist|<br />* item1<br />* item2<br />* ...}} |- | {{flatlist| * item1 * item2 * ... }} |} | rowspan=4 style="width:2%" | | style="vertical-align:top; width:32%"| {| class="wikitable" style="width:100%" |- ! Horizontal list |- | {{mono|{{tl|cslist}}}} |- | {{tlx|cslist |item1&nbsp;|item2&nbsp;|...}} |- | {{cslist |item1 |item2 |...}} |- !style="font-weight: normal; text-align:center;" | {{mono|{{tl|bold list}}}} |- | {{tlx|bold list |item1&nbsp;|item2&nbsp;|...}} |- | {{bold list |item1 |item2 |...}} |} |- | style="vertical-align:top;"| {| class="wikitable" style="width:100%" |- ! Bulleted list |- | {{mono|{{tl|bulleted list}}}} |- | {{tlx|bulleted list |item1&nbsp;|item2&nbsp;|...}} |- | {{bulleted list |item1 |item2 |...}} |} | style="vertical-align:top;"| {| class="wikitable" style="width:100%" |- ! Numeric ordered list |- | {{mono|{{tl|ordered list}}}} |- | {{tlx|Ordered list |first&nbsp;|second&nbsp;|...}} |- | {{Ordered list |first |second |...}} |} | style="vertical-align:top;"| {| class="wikitable" style="width:100%" |- ! Alphabetic ordered list |- | {{mono|{{tl|ordered list}}}} |- | {{tlx|Ordered list |list_style_type{{=}}lower-alpha&nbsp;|first&nbsp;|second&nbsp;|...}} |- | {{Ordered list |list_style_type=lower-alpha |first |second |...}} |} |- | style="vertical-align:top"| {| class="wikitable" style="width:100%" |- ! Unbulleted list |- | {{mono|{{tl|unbulleted list}}}} |- | {{tlx|unbulleted list |item1&nbsp;|item2&nbsp;|...}} |- | {{unbulleted list|item1|item2|...}} |} | style="vertical-align:top"| {| class="wikitable" style="width:100%" |- ! Unbulleted list |- | {{mono|{{tl|plainlist}}}} |- | {{tlx|plainlist|<br />* item1<br />* item2<br />* ...}} |- | {{plainlist| * item1 * item2 * ... }} |} | style="vertical-align:top" rowspan=2| {| class="wikitable" style="width:100%" |- ! Glossary or definition list |- | {{mono|{{tl|glossary}}}}<br />([[Wikipedia:Manual of Style/Glossaries|glossary]], description, definition, association) |- | {{tlx|glossary}}<br /> {{tlx|term|first term}}{{tlx|defn|first description}}<br /> {{tnull|term|second term}}{{tnull|defn|second description}}<br /> {{tnull|term|...}}{{tnull|defn|....}}<br /> {{mono|{{tl|glossary end}}}} |- | {{glossary}} {{term|first term}}{{defn|first description}} {{term|second term}}{{defn|second description}} {{term|...}}{{defn|....}} {{glossary end}} |} |- | style="vertical-align:top"| {| class="wikitable" style="width:100%" |- ! Bulleted list to flow around an image |- | {{mono|{{tl|flowlist}}}} |- | <code><nowiki>[[File:Bad Title Example.png|left|thumb|100px]]</nowiki></code><br /> {{tlx|flowlist|<br />*item1<br />*item2<br />*...}} |- | [[File:Bad Title Example.png|left|thumb|100px]] {{flowlist| *item1 *item2 *... }} |} | style="vertical-align:top"| {| class="wikitable" style="width:100%" |- ! Ordered list in columns |- | {{mono|{{tl|columns-list}}}} |- | {{tlx|columns-list|colwidth{{=}}5em|<br /># first<br /># second<br /># third<br /># ...}} |- | {{columns-list|colwidth=5em| # first # second # third # ... }} |} | style="vertical-align:top"| |} {{navbox bottom |below = {{cl|List formatting and function templates‎}} }}<noinclude> {{documentation}} <!-- Please add categories to the /doc subpage; interwikis go to Wikidata --> </noinclude> bc8771283bcdc7d736cca9716beebac6300dd812 Template:Nowiki2 10 629 1419 1418 2023-10-01T10:17:10Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Nowiki2]] wikitext text/x-wiki {{#if: {{{tag|}}} | {{#if: {{{style|}}} | <{{{tag}}} style="{{{style}}}"> | <{{{tag}}}> }} }}{{#invoke:LuaCall | call | mw.text.nowiki |\{{{1|}}}<!-- -->}}{{#if: {{{tag|}}} | </{{{tag}}}> }}<noinclude> {{Documentation}} </noinclude> 2712eeff2099493a4151603b9ed4ea74e51fa6ed Module:Bold list 828 630 1421 1420 2023-10-01T10:17:10Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Bold_list]] Scribunto text/plain -- Written by User:Ahecht in response to a thread at [[WP:VPI]] return { main = function(frame) args = {} for i, v in ipairs(frame:getParent().args) do table.insert(args, v) end conj = "'''" .. (#args > 2 and ", " or " ") .. (frame.args.conj or "or") .. " '''" return "'''"..mw.text.listToText(args, "''', '''", conj).."'''" end } 48d1ae74e90832a1b3366b51745334f53a668249 Module:LuaCall 828 631 1423 1422 2023-10-01T10:17:11Z Führerredux 2 1 revision imported from [[:wikipedia:Module:LuaCall]] Scribunto text/plain local p={} function p.main(frame) local parent = frame.getParent(frame) or {} local reserved_value = {} local reserved_function, reserved_contents for k, v in pairs(parent.args or {}) do _G[k] = tonumber(v) or v -- transfer every parameter directly to the global variable table end for k, v in pairs(frame.args or {}) do _G[k] = tonumber(v) or v -- transfer every parameter directly to the global variable table end --- Alas Scribunto does NOT implement coroutines, according to --- http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#string.format --- this will not stop us from trying to implement one single lousy function call if _G[1] then reserved_function, reserved_contents = mw.ustring.match(_G[1], "^%s*(%a[^%s%(]*)%(([^%)]*)%)%s*$") end if reserved_contents then local reserved_counter = 0 repeat reserved_counter = reserved_counter + 1 reserved_value[reserved_counter] = _G[mw.ustring.match(reserved_contents, "([^%,]+)")] reserved_contents = mw.ustring.match(reserved_contents, "[^%,]+,(.*)$") until not reserved_contents end local reserved_arraypart = _G while mw.ustring.match(reserved_function, "%.") do reserved_functionpart, reserved_function = mw.ustring.match(reserved_function, "^(%a[^%.]*)%.(.*)$") reserved_arraypart = reserved_arraypart[reserved_functionpart] end local reserved_call = reserved_arraypart[reserved_function] if type(reserved_call) ~= "function" then return tostring(reserved_call) else reserved_output = {reserved_call(unpack(reserved_value))} return reserved_output[reserved_return or 1] end end local function tonumberOrString(v) return tonumber(v) or v:gsub("^\\", "", 1) end local function callWithTonumberOrStringOnPairs(f, ...) local args = {} for _, v in ... do table.insert(args, tonumberOrString(v)) end return (f(unpack(args))) end --[[ ------------------------------------------------------------------------------------ -- ipairsAtOffset -- This is an iterator for arrays. It can be used like ipairs, but with -- specified i as first index to iterate. i is an offset from 1 -- ------------------------------------------------------------------------------------ --]] local function ipairsAtOffset(t, i) local f, s, i0 = ipairs(t) return f, s, i0+i end local function get(s) local G = _G; for _ in mw.text.gsplit( mw.text.trim(s, '%s'), '%s*%.%s*' ) do G = G[_] end return G end --[[ ------------------------------------------------------------------------------------ -- call -- -- This function is usually useful for debugging template parameters. -- Prefix parameter with backslash (\) to force interpreting parameter as string. -- The leading backslash will be removed before passed to Lua function. -- -- Example: -- {{#invoke:LuaCall|call|mw.log|a|1|2|3}} will return results of mw.log('a', 1, 2, 3) -- {{#invoke:LuaCall|call|mw.logObject|\a|321|\321| \321 }} will return results of mw.logObject('a', 321, '321', ' \\321 ') -- -- This example show the debugging to see which Unicode characters are allowed in template parameters, -- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0061}}}} return 97 -- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0000}}}} return 65533 -- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0001}}}} return 65533 -- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0002}}}}}} return 0xfffd -- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007e}}}}}} return 0x007e -- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007f}}}}}} return 0x007f -- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0080}}}}}} return 0x0080 -- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x00a0}}}}}} return 0x00a0 -- ------------------------------------------------------------------------------------ --]] function p.call(frame) return callWithTonumberOrStringOnPairs(get(frame.args[1]), ipairsAtOffset(frame.args, 1) ) end --local TableTools = require('Module:TableTools') --[[ ------------------------------------------------------------------------------------ -- get -- -- Example: -- {{#invoke:LuaCall|get| math.pi }} will return value of math.pi -- {{#invoke:LuaCall|get|math|pi}} will return value of math.pi -- {{#invoke:LuaCall|get| math |pi}} will return value of _G[' math '].pi -- {{#invoke:LuaCall|get|_G| math.pi }} will return value of _G[' math.pi '] -- {{#invoke:LuaCall|get|obj.a.5.c}} will return value of obj.a['5'].c -- {{#invoke:LuaCall|get|obj|a|5|c}} will return value of obj.a[5].c -- ------------------------------------------------------------------------------------ --]] function p.get(frame) -- #frame.args always return 0, regardless of number of unnamed -- template parameters, so check manually instead if frame.args[2] == nil then -- not do tonumber() for this args style, -- always treat it as string, -- so 'obj.1' will mean obj['1'] rather obj[1] return get(frame.args[1]) else local G = _G for _, v in ipairs(frame.args) do G = G[tonumberOrString(v)] end return G end end --[[ ------------------------------------------------------------------------------------ -- invoke -- -- This function is used by Template:Invoke -- ------------------------------------------------------------------------------------ --]] function p.invoke(frame) local pframe, usedpargs = frame:getParent(), {} -- get module and function names from parent args if not provided local pfargs = setmetatable({frame.args[1], frame.args[2]}, {__index = table}) if not pfargs[1] then pfargs[1], usedpargs[1] = pframe.args[1], true if not pfargs[2] then pfargs[2], usedpargs[2] = pframe.args[2], true end elseif not pfargs[2] then pfargs[2], usedpargs[1] = pframe.args[1], true end -- repack sequential args for i, v in ipairs(pframe.args) do if not usedpargs[i] then pfargs:insert(v) usedpargs[i] = true end end -- copy other args for k, v in pairs(pframe.args) do if not pfargs[k] and not usedpargs[k] then pfargs[k], usedpargs[k] = v, true end end -- #invoke off parent frame so the new frame has the same parent return pframe:callParserFunction{name = '#invoke', args = pfargs} end return p d6ec342627682bf90e61bbad921fcc6190f2e090 Template:Navbox lists 10 632 1425 1424 2023-10-01T10:17:11Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Navbox_lists]] wikitext text/x-wiki #REDIRECT [[Template:HTML lists]] {{R from move}} 8b26162bd61fb3a71c7bbf97d6b1aff6ba54020e Module:Format TemplateData/config 828 633 1427 1426 2023-10-01T10:17:12Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Format_TemplateData/config]] Scribunto text/plain local Serial = "2022-03-20" --[=[ enwiki configuration {{TemplateData}} mw.loadData() ]=] return { catProblem = false, classMultiColumns = "column-multiple", classNoNumTOC = "nonumtoc", classTable = { "wikitable", "templatedata-params" }, cssParams = { ["border"] = "#B3B7FF 1px solid" }, docpageCreate = "%s/doc", docpageDetect = "/doc", helpBoolean = false, helpContent = false, helpDate = false, helpFile = false, helpFormat = false, helpLine = false, helpNumber = false, helpPage = false, helpString = false, helpTemplate = false, helpURL = false, helpUser = false, msgDescMiss = "missing <code>description</code>", permit = { boole = { [true] = { css = { ["color"] = "#050", ["font-weight"] = "bold" }, lead = false, show = "True" }, [false] = { css = { ["color"] = "#610", ["font-weight"] = "bold" }, lead = false, show = "False" } }, css = { tableheadbg = { ["background-color"] = "#B3B7FF" }, bg = { ["bg"] = "none" }, required = { ["border-left"] = "3px solid black" }, suggested = { ["border-left"] = "3px solid #888" }, optional = { ["border-left"] = "3px solid #CCC" }, deprecated = { ["background-color"] = "#FDD", ["border-left"] = "3px dotted red" } } }, tStylesTOCnum = "TOC nonum", tStylesMultiColumns = "column-multiple", serial = Serial } ce8c2e3e08b7c06d862b014b7affdebda341027a Module:Multilingual 828 634 1429 1428 2023-10-01T10:17:13Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Multilingual]] Scribunto text/plain local Multilingual = { suite = "Multilingual", serial = "2020-12-10", item = 47541920, globals = { ISO15924 = 71584769, WLink = 19363224 } } --[=[ Utilities for multilingual texts and ISO 639 (BCP47) issues etc. * fair() * fallback() * findCode() * fix() * format() * getBase() * getLang() * getName() * i18n() * int() * isLang() * isLangWiki() * isMinusculable() * isRTL() * message() * sitelink() * tabData() * userLang() * userLangCode() * wikibase() * failsafe() loadData: Multilingual/config Multilingual/names ]=] local Failsafe = Multilingual local GlobalMod = Multilingual local GlobalData = Multilingual local User = { sniffer = "showpreview" } Multilingual.globals.Multilingual = Multilingual.item Multilingual.exotic = { simple = true, no = true } Multilingual.prefer = { cs = true, de = true, en = true, es = true, fr = true, it = true, nl = true, pt = true, ru = true, sv = true } local foreignModule = function ( access, advanced, append, alt, alert ) -- Fetch global module -- Precondition: -- access -- string, with name of base module -- advanced -- true, for require(); else mw.loadData() -- append -- string, with subpage part, if any; or false -- alt -- number, of wikidata item of root; or false -- alert -- true, for throwing error on data problem -- Postcondition: -- Returns whatever, probably table -- 2020-01-01 local storage = access local finer = function () if append then storage = string.format( "%s/%s", storage, append ) end end local fun, lucky, r, suited if advanced then fun = require else fun = mw.loadData end GlobalMod.globalModules = GlobalMod.globalModules or { } suited = GlobalMod.globalModules[ access ] if not suited then finer() lucky, r = pcall( fun, "Module:" .. storage ) end if not lucky then if not suited and type( alt ) == "number" and alt > 0 then suited = string.format( "Q%d", alt ) suited = mw.wikibase.getSitelink( suited ) GlobalMod.globalModules[ access ] = suited or true end if type( suited ) == "string" then storage = suited finer() lucky, r = pcall( fun, storage ) end if not lucky and alert then error( "Missing or invalid page: " .. storage ) end end return r end -- foreignModule() local fetchData = function ( access ) -- Retrieve translated keyword from commons:Data:****.tab -- Precondition: -- access -- string, with page identification on Commons -- Returns table, with data, or string, with error message -- 2019-12-05 local storage = access local r if type( storage ) == "string" then local s storage = mw.text.trim( storage ) s = storage:lower() if s:sub( 1, 2 ) == "c:" then storage = mw.text.trim( storage:sub( 3 ) ) s = storage:lower() elseif s:sub( 1, 8 ) == "commons:" then storage = mw.text.trim( storage:sub( 9 ) ) s = storage:lower() end if s:sub( 1, 5 ) == "data:" then storage = mw.text.trim( storage:sub( 6 ) ) s = storage:lower() end if s == "" or s == ".tab" then storage = false elseif s:sub( -4 ) == ".tab" then storage = storage:sub( 1, -5 ) .. ".tab" else storage = storage .. ".tab" end end if type( storage ) == "string" then local data if type( GlobalData.TabDATA ) ~= "table" then GlobalData.TabDATA = { } end data = GlobalData.TabDATA[ storage ] if data then r = data else local lucky lucky, data = pcall( mw.ext.data.get, storage, "_" ) if type( data ) == "table" then data = data.data if type( data ) == "table" then GlobalData.TabDATA[ storage ] = data else r = string.format( "%s [[%s%s]]", "INVALID Data:*.tab", "commons:Data:", storage ) end else r = "BAD PAGE Data:*.tab &#8211; commons:" .. storage end if r then GlobalData.TabDATA[ storage ] = r data = false else r = data end end else r = "BAD PAGE commons:Data:*.tab" end return r end -- fetchData() local favorites = function () -- Provide fallback codes -- Postcondition: -- Returns table with sequence of preferred languages -- * ahead elements -- * user (not yet accessible) -- * page content language (not yet accessible) -- * page name subpage -- * project -- * en local r = Multilingual.polyglott if not r then local self = mw.language.getContentLanguage():getCode():lower() local sub = mw.title.getCurrentTitle().subpageText local f = function ( add ) local s = add for i = 1, #r do if r[ i ] == s then s = false break -- for i end end -- for i if s then table.insert( r, s ) end end r = { } if sub:find( "/", 2, true ) then sub = sub:match( "/(%l%l%l?)$" ) if sub then table.insert( r, sub ) end elseif sub:find( "^%l%l%l?%-?%a?%a?%a?%a?$" ) and mw.language.isSupportedLanguage( sub ) then table.insert( r, sub ) end f( self ) f( "en" ) Multilingual.polyglott = r end return r end -- favorites() local feasible = function ( ask, accept ) -- Is ask to be supported by application? -- Precondition: -- ask -- lowercase code -- accept -- sequence table, with offered lowercase codes -- Postcondition: -- nil, or true local r for i = 1, #accept do if accept[ i ] == ask then r = true break -- for i end end -- for i return r end -- feasible() local fetch = function ( access, append ) -- Attach config or library module -- Precondition: -- access -- module title -- append -- string, with subpage part of this; or false -- Postcondition: -- Returns: table, with library, or false local got, sign if append then sign = string.format( "%s/%s", access, append ) else sign = access end if type( Multilingual.ext ) ~= "table" then Multilingual.ext = { } end got = Multilingual.ext[ sign ] if not got and got ~= false then local global = Multilingual.globals[ access ] local lib = ( not append or append == "config" ) got = foreignModule( access, lib, append, global ) if type( got ) == "table" then if lib then local startup = got[ access ] if type( startup ) == "function" then got = startup() end end else got = false end Multilingual.ext[ sign ] = got end return got end -- fetch() local fetchISO639 = function ( access ) -- Retrieve table from commons:Data:ISO639/***.tab -- Precondition: -- access -- string, with subpage identification -- Postcondition: -- Returns table, with data, even empty local r if type( Multilingual.iso639 ) ~= "table" then Multilingual.iso639 = { } end r = Multilingual.iso639[ access ] if type( r ) == "nil" then local raw = fetchData( "ISO639/" .. access ) if type( raw ) == "table" then local t r = { } for i = 1, #raw do t = raw[ i ] if type( t ) == "table" and type( t[ 1 ] ) == "string" and type( t[ 2 ] ) == "string" then r[ t[ 1 ] ] = t[ 2 ] else break -- for i end end -- for i else r = false end Multilingual.iso639[ access ] = r end return r or { } end -- fetchISO639() local fill = function ( access, alien, frame ) -- Expand language name template -- Precondition: -- access -- string, with language code -- alien -- language code for which to be generated -- frame -- frame, if available -- Postcondition: -- Returns string local template = Multilingual.tmplLang local r if type( template ) ~= "table" then local cnf = fetch( "Multilingual", "config" ) if cnf then template = cnf.tmplLang end end if type( template ) == "table" then local source = template.title local f, lucky, s Multilingual.tmplLang = template if type( source ) ~= "string" and type( template.namePat ) == "string" and template.namePat:find( "%s", 1, true ) then source = string.format( template.namePat, access ) end if type( source ) == "string" then if not Multilingual.frame then if frame then Multilingual.frame = frame else Multilingual.frame = mw.getCurrentFrame() end end f = function ( a ) return Multilingual.frame:expandTemplate{ title = a } end lucky, s = pcall( f, source ) if lucky then r = s end end end return r end -- fill() local find = function ( ask, alien ) -- Derive language code from name -- Precondition: -- ask -- language name, downcased -- alien -- language code of ask -- Postcondition: -- nil, or string local codes = mw.language.fetchLanguageNames( alien, "all" ) local r for k, v in pairs( codes ) do if mw.ustring.lower( v ) == ask then r = k break -- for k, v end end -- for k, v if not r then r = Multilingual.fair( ask ) end return r end -- find() local fold = function ( frame ) -- Merge template and #invoke arglist -- Precondition: -- frame -- template frame -- Postcondition: -- table, with combined arglist local r = { } local f = function ( apply ) if type( apply ) == "table" and type( apply.args ) == "table" then for k, v in pairs( apply.args ) do v = mw.text.trim( v ) if v ~= "" then r[ tostring( k ) ] = v end end -- for k, v end end -- f() f( frame:getParent() ) f( frame ) return r end -- fold() User.favorize = function ( accept, frame ) -- Guess user language -- Precondition: -- accept -- sequence table, with offered ISO 639 etc. codes -- frame -- frame, if available -- Postcondition: -- Returns string with best code, or nil if not ( User.self or User.langs ) then if not User.trials then User.tell = mw.message.new( User.sniffer ) if User.tell:exists() then User.trials = { } if not Multilingual.frame then if frame then Multilingual.frame = frame else Multilingual.frame = mw.getCurrentFrame() end end User.sin = Multilingual.frame:callParserFunction( "int", User.sniffer ) else User.langs = true end end if User.sin then local order = { } local post = { } local three = { } local unfold = { } local s, sin for i = 1, #accept do s = accept[ i ] if not User.trials[ s ] then if #s > 2 then if s:find( "-", 3, true ) then table.insert( unfold, s ) else table.insert( three, s ) end else if Multilingual.prefer[ s ] then table.insert( order, s ) else table.insert( post, s ) end end end end -- for i for i = 1, #post do table.insert( order, post[ i ] ) end -- for i for i = 1, #three do table.insert( order, three[ i ] ) end -- for i for i = 1, #unfold do table.insert( order, unfold[ i ] ) end -- for i for i = 1, #order do s = order[ i ] sin = User.tell:inLanguage( s ):plain() if sin == User.sin then User.self = s break -- for i else User.trials[ s ] = true end end -- for i end end return User.self end -- User.favorize() Multilingual.fair = function ( ask ) -- Format language specification according to RFC 5646 etc. -- Precondition: -- ask -- string or table, as created by .getLang() -- Postcondition: -- Returns string, or false local s = type( ask ) local q, r if s == "table" then q = ask elseif s == "string" then q = Multilingual.getLang( ask ) end if q and q.legal and mw.language.isKnownLanguageTag( q.base ) then r = q.base if q.n > 1 then local order = { "extlang", "script", "region", "other", "extension" } for i = 1, #order do s = q[ order[ i ] ] if s then r = string.format( "%s-%s", r, s ) end end -- for i end end return r or false end -- Multilingual.fair() Multilingual.fallback = function ( able, another ) -- Is another language suitable as replacement? -- Precondition: -- able -- language version specifier to be supported -- another -- language specifier of a possible replacement, -- or not to retrieve a fallback table -- Postcondition: -- Returns boolean, or table with fallback codes local r if type( able ) == "string" and #able > 0 then if type( another ) == "string" and #another > 0 then if able == another then r = true else local s = Multilingual.getBase( able ) if s == another then r = true else local others = mw.language.getFallbacksFor( s ) r = feasible( another, others ) end end else local s = Multilingual.getBase( able ) if s then r = mw.language.getFallbacksFor( s ) if r[ 1 ] == "en" then local d = fetchISO639( "fallback" ) if type( d ) == "table" and type( d[ s ] ) == "string" then r = mw.text.split( d[ s ], "|" ) table.insert( r, "en" ) end end end end end return r or false end -- Multilingual.fallback() Multilingual.findCode = function ( ask ) -- Retrieve code of local (current project or English) language name -- Precondition: -- ask -- string, with presumable language name -- A code itself will be identified, too. -- Postcondition: -- Returns string, or false local seek = mw.text.trim( ask ) local r = false if #seek > 1 then if seek:find( "[", 1, true ) then local wlink = fetch( "WLink" ) if wlink and type( wlink.getPlain ) == "function" then seek = wlink.getPlain( seek ) end end seek = mw.ustring.lower( seek ) if Multilingual.isLang( seek ) then r = Multilingual.fair( seek ) else local collection = favorites() for i = 1, #collection do r = find( seek, collection[ i ] ) if r then break -- for i end end -- for i end end return r end -- Multilingual.findCode() Multilingual.fix = function ( attempt ) -- Fix frequently mistaken language code -- Precondition: -- attempt -- string, with presumable language code -- Postcondition: -- Returns string with correction, or false if no problem known local r = fetchISO639( "correction" )[ attempt:lower() ] return r or false end -- Multilingual.fix() Multilingual.format = function ( apply, alien, alter, active, alert, frame, assembly, adjacent, ahead ) -- Format one or more languages -- Precondition: -- apply -- string with language list or item -- alien -- language of the answer -- -- nil, false, "*": native -- -- "!": current project -- -- "#": code, downcased, space separated -- -- "-": code, mixcase, space separated -- -- any valid code -- alter -- capitalize, if "c"; downcase all, if "d" -- capitalize first item only, if "f" -- downcase every first word only, if "m" -- active -- link items, if true -- alert -- string with category title in case of error -- frame -- if available -- assembly -- string with split pattern, if list expected -- adjacent -- string with list separator, else assembly -- ahead -- string to prepend first element, if any -- Postcondition: -- Returns string, or false if apply empty local r = false if apply then local slang if assembly then local bucket = mw.text.split( apply, assembly ) local shift = alter local separator if adjacent then separator = adjacent elseif alien == "#" or alien == "-" then separator = " " else separator = assembly end for k, v in pairs( bucket ) do slang = Multilingual.format( v, alien, shift, active, alert ) if slang then if r then r = string.format( "%s%s%s", r, separator, slang ) else r = slang if shift == "f" then shift = "d" end end end end -- for k, v if r and ahead then r = ahead .. r end else local single = mw.text.trim( apply ) if single == "" then r = false else local lapsus, slot slang = Multilingual.findCode( single ) if slang then if alien == "-" then r = slang elseif alien == "#" then r = slang:lower() else r = Multilingual.getName( slang, alien ) if active then slot = fill( slang, false, frame ) if slot then local wlink = fetch( "WLink" ) if wlink and type( wlink.getTarget ) == "function" then slot = wlink.getTarget( slot ) end else lapsus = alert end end end else r = single if active then local title = mw.title.makeTitle( 0, single ) if title.exists then slot = single end end lapsus = alert end if not r then r = single elseif alter == "c" or alter == "f" then r = mw.ustring.upper( mw.ustring.sub( r, 1, 1 ) ) .. mw.ustring.sub( r, 2 ) elseif alter == "d" then if Multilingual.isMinusculable( slang, r ) then r = mw.ustring.lower( r ) end elseif alter == "m" then if Multilingual.isMinusculable( slang, r ) then r = mw.ustring.lower( mw.ustring.sub( r, 1, 1 ) ) .. mw.ustring.sub( r, 2 ) end end if slot then if r == slot then r = string.format( "[[%s]]", r ) else r = string.format( "[[%s|%s]]", slot, r ) end end if lapsus and alert then r = string.format( "%s[[Category:%s]]", r, alert ) end end end end return r end -- Multilingual.format() Multilingual.getBase = function ( ask ) -- Retrieve base language from possibly combined ISO language code -- Precondition: -- ask -- language code -- Postcondition: -- Returns string, or false local r if ask then local slang = ask:match( "^%s*(%a%a%a?)-?%a*%s*$" ) if slang then r = slang:lower() else r = false end else r = false end return r end -- Multilingual.getBase() Multilingual.getLang = function ( ask ) -- Retrieve components of a RFC 5646 language code -- Precondition: -- ask -- language code with subtags -- Postcondition: -- Returns table with formatted subtags -- .base -- .region -- .script -- .suggest -- .year -- .extension -- .other -- .n local tags = mw.text.split( ask, "-" ) local s = tags[ 1 ] local r if s:match( "^%a%a%a?$" ) then r = { base = s:lower(), legal = true, n = #tags } for i = 2, r.n do s = tags[ i ] if #s == 2 then if r.region or not s:match( "%a%a" ) then r.legal = false else r.region = s:upper() end elseif #s == 4 then if s:match( "%a%a%a%a" ) then r.legal = ( not r.script ) r.script = s:sub( 1, 1 ):upper() .. s:sub( 2 ):lower() elseif s:match( "20%d%d" ) or s:match( "1%d%d%d" ) then r.legal = ( not r.year ) r.year = s else r.legal = false end elseif #s == 3 then if r.extlang or not s:match( "%a%a%a" ) then r.legal = false else r.extlang = s:lower() end elseif #s == 1 then s = s:lower() if s:match( "[tux]" ) then r.extension = s for k = i + 1, r.n do s = tags[ k ] if s:match( "^%w+$" ) then r.extension = string.format( "%s-%s", r.extension, s ) else r.legal = false end end -- for k else r.legal = false end break -- for i else r.legal = ( not r.other ) and s:match( "%a%a%a" ) r.other = s:lower() end if not r.legal then break -- for i end end -- for i if r.legal then r.suggest = Multilingual.fix( r.base ) if r.suggest then r.legal = false end end else r = { legal = false } end if not r.legal then local cnf = fetch( "Multilingual", "config" ) if cnf and type( cnf.scream ) == "string" then r.scream = cnf.scream end end return r end -- Multilingual.getLang() Multilingual.getName = function ( ask, alien ) -- Which name is assigned to this language code? -- Precondition: -- ask -- language code -- alien -- language of the answer -- -- nil, false, "*": native -- -- "!": current project -- -- any valid code -- Postcondition: -- Returns string, or false local r if ask then local slang = alien local tLang if slang then if slang == "*" then slang = Multilingual.fair( ask ) elseif slang == "!" then slang = favorites()[ 1 ] else slang = Multilingual.fair( slang ) end else slang = Multilingual.fair( ask ) end if not slang then slang = ask or "?????" end slang = slang:lower() tLang = fetch( "Multilingual", "names" ) if tLang then tLang = tLang[ slang ] if tLang then r = tLang[ ask ] end end if not r then if not Multilingual.ext.tMW then Multilingual.ext.tMW = { } end tLang = Multilingual.ext.tMW[ slang ] if tLang == nil then tLang = mw.language.fetchLanguageNames( slang ) if tLang then Multilingual.ext.tMW[ slang ] = tLang else Multilingual.ext.tMW[ slang ] = false end end if tLang then r = tLang[ ask ] end end if not r then r = mw.language.fetchLanguageName( ask:lower(), slang ) if r == "" then r = false end end else r = false end return r end -- Multilingual.getName() Multilingual.i18n = function ( available, alt, frame ) -- Select translatable message -- Precondition: -- available -- table, with mapping language code ./. text -- alt -- string|nil|false, with fallback text -- frame -- frame, if available -- Returns -- 1. string|nil|false, with selected message -- 2. string|nil|false, with language code local r1, r2 if type( available ) == "table" then local codes = { } local trsl = { } local slang for k, v in pairs( available ) do if type( k ) == "string" and type( v ) == "string" then slang = mw.text.trim( k:lower() ) table.insert( codes, slang ) trsl[ slang ] = v end end -- for k, v slang = Multilingual.userLang( codes, frame ) if slang and trsl[ slang ] then r1 = mw.text.trim( trsl[ slang ] ) if r1 == "" then r1 = false else r2 = slang end end end if not r1 and type( alt ) == "string" then r1 = mw.text.trim( alt ) if r1 == "" then r1 = false end end return r1, r2 end -- Multilingual.i18n() Multilingual.int = function ( access, alien, apply ) -- Translated system message -- Precondition: -- access -- message ID -- alien -- language code -- apply -- nil, or sequence table with parameters $1, $2, ... -- Postcondition: -- Returns string, or false local o = mw.message.new( access ) local r if o:exists() then if type( alien ) == "string" then o:inLanguage( alien:lower() ) end if type( apply ) == "table" then o:params( apply ) end r = o:plain() end return r or false end -- Multilingual.int() Multilingual.isLang = function ( ask, additional ) -- Could this be an ISO language code? -- Precondition: -- ask -- language code -- additional -- true, if Wiki codes like "simple" permitted -- Postcondition: -- Returns boolean local r, s if additional then s = ask else s = Multilingual.getBase( ask ) end if s then r = mw.language.isKnownLanguageTag( s ) if r then r = not Multilingual.fix( s ) elseif additional then r = Multilingual.exotic[ s ] or false end else r = false end return r end -- Multilingual.isLang() Multilingual.isLangWiki = function ( ask ) -- Could this be a Wiki language version? -- Precondition: -- ask -- language version specifier -- Postcondition: -- Returns boolean local r local s = Multilingual.getBase( ask ) if s then r = mw.language.isSupportedLanguage( s ) or Multilingual.exotic[ ask ] else r = false end return r end -- Multilingual.isLangWiki() Multilingual.isMinusculable = function ( ask, assigned ) -- Could this language name become downcased? -- Precondition: -- ask -- language code, or nil -- assigned -- language name, or nil -- Postcondition: -- Returns boolean local r = true if ask then local cnf = fetch( "Multilingual", "config" ) if cnf then local s = string.format( " %s ", ask:lower() ) if type( cnf.stopMinusculization ) == "string" and cnf.stopMinusculization:find( s, 1, true ) then r = false end if r and assigned and type( cnf.seekMinusculization ) == "string" and cnf.seekMinusculization:find( s, 1, true ) and type( cnf.scanMinusculization ) == "string" then local scan = assigned:gsub( "[%(%)]", " " ) .. " " if not scan:find( cnf.scanMinusculization ) then r = false end end end end return r end -- Multilingual.isMinusculable() Multilingual.isRTL = function ( ask ) -- Check whether language is written right-to-left -- Precondition: -- ask -- string, with language (or script) code -- Returns true, if right-to-left local r Multilingual.rtl = Multilingual.rtl or { } r = Multilingual.rtl[ ask ] if type( r ) ~= "boolean" then local bib = fetch( "ISO15924" ) if type( bib ) == "table" and type( bib.isRTL ) == "function" then r = bib.isRTL( ask ) else r = mw.language.new( ask ):isRTL() end Multilingual.rtl[ ask ] = r end return r end -- Multilingual.isRTL() Multilingual.message = function ( arglist, frame ) -- Show text in best match of user language like system message -- Precondition: -- arglist -- template arguments -- frame -- frame, if available -- Postcondition: -- Returns string with appropriate text local r if type( arglist ) == "table" then local t = { } local m, p, save for k, v in pairs( arglist ) do if type( k ) == "string" and type( v ) == "string" then v = mw.text.trim( v ) if v ~= "" then if k:match( "^%l%l" ) then t[ k ] = v elseif k:match( "^%$%d$" ) and k ~= "$0" then p = p or { } k = tonumber( k:match( "^%$(%d)$" ) ) p[ k ] = v if not m or k > m then m = k end end end end end -- for k, v if type( arglist[ "-" ] ) == "string" then save = arglist[ arglist[ "-" ] ] end r = Multilingual.i18n( t, save, frame ) if p and r and r:find( "$", 1, true ) then t = { } for i = 1, m do t[ i ] = p[ i ] or "" end -- for i r = mw.message.newRawMessage( r, t ):plain() end end return r or "" end -- Multilingual.message() Multilingual.sitelink = function ( all, frame ) -- Make link at local or other site with optimal linktext translation -- Precondition: -- all -- string or table or number, item ID or entity -- frame -- frame, if available -- Postcondition: -- Returns string with any helpful internal link, or plain text local s = type( all ) local object, r if s == "table" then object = all elseif s == "string" then object = mw.wikibase.getEntity( all ) elseif s == "number" then object = mw.wikibase.getEntity( string.format( "Q%d", all ) ) end if type( object ) == "table" then local collection = object.sitelinks local entry s = false if type( collection ) == "table" then Multilingual.site = Multilingual.site or mw.wikibase.getGlobalSiteId() entry = collection[ Multilingual.site ] if entry then s = ":" .. entry.title elseif collection.enwiki then s = "w:en:" .. collection.enwiki.title end end r = Multilingual.wikibase( object, "labels", frame ) if s then if s == ":" .. r then r = string.format( "[[%s]]", s ) else r = string.format( "[[%s|%s]]", s, r ) end end end return r or "" end -- Multilingual.sitelink() Multilingual.tabData = function ( access, at, alt, frame ) -- Retrieve translated keyword from commons:Data:****.tab -- Precondition: -- access -- string, with page identification on Commons -- at -- string, with keyword -- alt -- string|nil|false, with fallback text -- frame -- frame, if available -- Returns -- 1. string|nil|false, with selected message -- 2. language code, or "error" local data = fetchData( access ) local r1, r2 if type( data ) == "table" then if type( at ) == "string" then local seek = mw.text.trim( at ) if seek == "" then r1 = "EMPTY Multilingual.tabData key" else local e, poly for i = 1, #data do e = data[ i ] if type( e ) == "table" then if e[ 1 ] == seek then if type( e[ 2 ] ) == "table" then poly = e[ 2 ] else r1 = "INVALID Multilingual.tabData bad #" .. tostring( i ) end break -- for i end else break -- for i end end -- for i if poly then data = poly else r1 = "UNKNOWN Multilingual.tabData key: " .. seek end end else r1 = "INVALID Multilingual.tabData key" end else r1 = data end if r1 then r2 = "error" elseif data then r1, r2 = Multilingual.i18n( data, alt, frame ) r2 = r2 or "error" end return r1, r2 end -- Multilingual.tabData() Multilingual.userLang = function ( accept, frame ) -- Try to support user language by application -- Precondition: -- accept -- string or table -- space separated list of available ISO 639 codes -- Default: project language, or English -- frame -- frame, if available -- Postcondition: -- Returns string with appropriate code local s = type( accept ) local codes, r, slang if s == "string" then codes = mw.text.split( accept:lower(), "%s+" ) elseif s == "table" then codes = { } for i = 1, #accept do s = accept[ i ] if type( s ) == "string" and s ~= "" then table.insert( codes, s:lower() ) end end -- for i end slang = User.favorize( codes, frame ) if slang then if feasible( slang, codes ) then r = slang elseif slang:find( "-", 1, true ) then slang = Multilingual.getBase( slang ) if feasible( slang, codes ) then r = slang end end if not r then local others = mw.language.getFallbacksFor( slang ) for i = 1, #others do slang = others[ i ] if feasible( slang, codes ) then r = slang break -- for i end end -- for i end end if not r then local back = favorites() for i = 1, #back do slang = back[ i ] if feasible( slang, codes ) then r = slang break -- for i end end -- for i if not r and codes[ 1 ] then r = codes[ 1 ] end end return r or favorites()[ 1 ] end -- Multilingual.userLang() Multilingual.userLangCode = function () -- Guess a user language code -- Postcondition: -- Returns code of current best guess return User.self or favorites()[ 1 ] end -- Multilingual.userLangCode() Multilingual.wikibase = function ( all, about, attempt, frame ) -- Optimal translation of wikibase component -- Precondition: -- all -- string or table, object ID or entity -- about -- boolean, true "descriptions" or false "labels" -- attempt -- string or not, code of preferred language -- frame -- frame, if available -- Postcondition: -- Returns -- 1. string, with selected message -- 2. string, with language code, or not local s = type( all ) local object, r, r2 if s == "table" then object = all elseif s == "string" then object = mw.wikibase.getEntity( all ) end if type( object ) == "table" then if about and about ~= "labels" then s = "descriptions" else s = "labels" end object = object[ s ] if type( object ) == "table" then if object[ attempt ] then r = object[ attempt ].value r2 = attempt else local poly for k, v in pairs( object ) do poly = poly or { } poly[ k ] = v.value end -- for k, v if poly then r, r2 = Multilingual.i18n( poly, nil, frame ) end end end end return r or "", r2 end -- Multilingual.wikibase() Failsafe.failsafe = function ( atleast ) -- Retrieve versioning and check for compliance -- Precondition: -- atleast -- string, with required version -- or wikidata|item|~|@ or false -- Postcondition: -- Returns string -- with queried version/item, also if problem -- false -- if appropriate -- 2020-08-17 local since = atleast local last = ( since == "~" ) local linked = ( since == "@" ) local link = ( since == "item" ) local r if last or link or linked or since == "wikidata" then local item = Failsafe.item since = false if type( item ) == "number" and item > 0 then local suited = string.format( "Q%d", item ) if link then r = suited else local entity = mw.wikibase.getEntity( suited ) if type( entity ) == "table" then local seek = Failsafe.serialProperty or "P348" local vsn = entity:formatPropertyValues( seek ) if type( vsn ) == "table" and type( vsn.value ) == "string" and vsn.value ~= "" then if last and vsn.value == Failsafe.serial then r = false elseif linked then if mw.title.getCurrentTitle().prefixedText == mw.wikibase.getSitelink( suited ) then r = false else r = suited end else r = vsn.value end end end end end end if type( r ) == "nil" then if not since or since <= Failsafe.serial then r = Failsafe.serial else r = false end end return r end -- Failsafe.failsafe() -- Export local p = { } p.fair = function ( frame ) -- Format language code -- 1 -- language code local s = mw.text.trim( frame.args[ 1 ] or "" ) return Multilingual.fair( s ) or "" end -- p.fair p.fallback = function ( frame ) -- Is another language suitable as replacement? -- 1 -- language version specifier to be supported -- 2 -- language specifier of a possible replacement local s1 = mw.text.trim( frame.args[ 1 ] or "" ) local s2 = mw.text.trim( frame.args[ 2 ] or "" ) local r = Multilingual.fallback( s1, s2 ) if type( r ) == "table" then r = r[ 1 ] else r = r and "1" or "" end return r end -- p.fallback p.findCode = function ( frame ) -- Retrieve language code from language name -- 1 -- name in current project language local s = mw.text.trim( frame.args[ 1 ] or "" ) return Multilingual.findCode( s ) or "" end -- p.findCode p.fix = function ( frame ) local r = frame.args[ 1 ] if r then r = Multilingual.fix( mw.text.trim( r ) ) end return r or "" end -- p.fix p.format = function ( frame ) -- Format one or more languages -- 1 -- language list or item -- slang -- language of the answer, if not native -- * -- native -- ! -- current project -- any valid code -- shift -- capitalize, if "c"; downcase, if "d" -- capitalize first item only, if "f" -- link -- 1 -- link items -- scream -- category title in case of error -- split -- split pattern, if list expected -- separator -- list separator, else split -- start -- prepend first element, if any local r local link if frame.args.link == "1" then link = true end r = Multilingual.format( frame.args[ 1 ], frame.args.slang, frame.args.shift, link, frame.args.scream, frame, frame.args.split, frame.args.separator, frame.args.start ) return r or "" end -- p.format p.getBase = function ( frame ) -- Retrieve base language from possibly combined ISO language code -- 1 -- code local s = mw.text.trim( frame.args[ 1 ] or "" ) return Multilingual.getBase( s ) or "" end -- p.getBase p.getName = function ( frame ) -- Retrieve language name from ISO language code -- 1 -- code -- 2 -- language to be used for the answer, if not native -- ! -- current project -- * -- native -- any valid code local s = mw.text.trim( frame.args[ 1 ] or "" ) local slang = frame.args[ 2 ] local r Multilingual.frame = frame if slang then slang = mw.text.trim( slang ) end r = Multilingual.getName( s, slang ) return r or "" end -- p.getName p.int = function ( frame ) -- Translated system message -- 1 -- message ID -- lang -- language code -- $1, $2, ... -- parameters local sysMsg = frame.args[ 1 ] local r if sysMsg then sysMsg = mw.text.trim( sysMsg ) if sysMsg ~= "" then local n = 0 local slang = frame.args.lang local i, params, s if slang == "" then slang = false end for k, v in pairs( frame.args ) do if type( k ) == "string" then s = k:match( "^%$(%d+)$" ) if s then i = tonumber( s ) if i > n then n = i end end end end -- for k, v if n > 0 then local s params = { } for i = 1, n do s = frame.args[ "$" .. tostring( i ) ] or "" table.insert( params, s ) end -- for i end r = Multilingual.int( sysMsg, slang, params ) end end return r or "" end -- p.int p.isLang = function ( frame ) -- Could this be an ISO language code? -- 1 -- code local s = mw.text.trim( frame.args[ 1 ] or "" ) local lucky, r = pcall( Multilingual.isLang, s ) return r and "1" or "" end -- p.isLang p.isLangWiki = function ( frame ) -- Could this be a Wiki language version? -- 1 -- code -- Returns non-empty, if possibly language version local s = mw.text.trim( frame.args[ 1 ] or "" ) local lucky, r = pcall( Multilingual.isLangWiki, s ) return r and "1" or "" end -- p.isLangWiki p.isRTL = function ( frame ) -- Check whether language is written right-to-left -- 1 -- string, with language code -- Returns non-empty, if right-to-left local s = mw.text.trim( frame.args[ 1 ] or "" ) return Multilingual.isRTL( s ) and "1" or "" end -- p.isRTL() p.message = function ( frame ) -- Translation of text element return Multilingual.message( fold( frame ), frame ) end -- p.message p.sitelink = function ( frame ) -- Make link at local or other site with optimal linktext translation -- 1 -- item ID local s = mw.text.trim( frame.args[ 1 ] or "" ) local r if s:match( "^%d+$") then r = tonumber( s ) elseif s:match( "^Q%d+$") then r = s end if r then r = Multilingual.sitelink( r, frame ) end return r or s end -- p.sitelink p.tabData = function ( frame ) -- Retrieve best message text from Commons Data -- 1 -- page identification on Commons -- 2 -- keyword -- alt -- fallback text local suite = frame.args[ 1 ] local seek = frame.args[ 2 ] local salt = frame.args.alt local r = Multilingual.tabData( suite, seek, salt, frame ) return r end -- p.tabData p.userLang = function ( frame ) -- Which language does the current user prefer? -- 1 -- space separated list of available ISO 639 codes local s = mw.text.trim( frame.args[ 1 ] or "" ) return Multilingual.userLang( s, frame ) end -- p.userLang p.wikibase = function ( frame ) -- Optimal translation of wikibase component -- 1 -- object ID -- 2 -- 1 for "descriptions", 0 for "labels". -- or either "descriptions" or "labels" local r local s = mw.text.trim( frame.args[ 1 ] or "" ) if s ~= "" then local s2 = mw.text.trim( frame.args[ 2 ] or "0" ) local slang = mw.text.trim( frame.args.lang or "" ) local large = ( s2 ~= "" and s2 ~= "0" ) if slang == "" then slang = false end r = Multilingual.wikibase( s, large, slang, frame ) end return r or "" end -- p.wikibase p.failsafe = function ( frame ) -- Versioning interface local s = type( frame ) local since if s == "table" then since = frame.args[ 1 ] elseif s == "string" then since = frame end if since then since = mw.text.trim( since ) if since == "" then since = false end end return Failsafe.failsafe( since ) or "" end -- p.failsafe() p.Multilingual = function () return Multilingual end -- p.Multilingual return p 6fc38809302c05872fef2c1602e2d4a3be5143ec Template:Plainlist/doc 10 635 1431 1430 2023-10-01T10:17:15Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Plainlist/doc]] wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE --> {{High-use}} {{Template shortcut|PL}} {{Uses TemplateStyles|Template:Plainlist/styles.css}} This template provides a [[Web Content Accessibility Guidelines|WCAG]]/ISO-standards-compliant accessible alternative to <code><nowiki><br /></nowiki></code> separated lists, per [[WP:UBLIST]] and [[WP:PLIST]] == Usage == {{tl|plainlist}} starts a plain (i.e. unbulleted) list, such as: {{plainlist| * [[cat]] * [[dog]] * [[horse]] * [[cow]] * [[sheep]] * [[pig]] }} It uses proper HTML list markup, which is more standards-compliant and more accessible than separating list items with {{tag|br|s}}. Detailed reasons for using this template can be found at [[WP:UBLIST]]. This template can be used with or without {{tl|endplainlist}}. It is an alternative to {{tl|unbulleted list}}, which performs the same function in a more concise but less wiki-style manner. Note that {{tl|unbulleted list}} will work inside image captions, whereas {{tl|plainlist}} does not. == Examples == {{Markup |<nowiki> {{plainlist| * [[cat]] * [[dog]] * [[horse]] * [[cow]] * [[sheep]] * [[pig]] }} </nowiki> | {{plainlist| * [[cat]] * [[dog]] * [[horse]] * [[cow]] * [[sheep]] * [[pig]] }} }} === Alternative syntax === {{Markup |<nowiki> {{plainlist}} * [[cat]] * [[dog]] * [[horse]] * [[cow]] * [[sheep]] * [[pig]] {{endplainlist}} </nowiki> | {{plainlist}} * [[cat]] * [[dog]] * [[horse]] * [[cow]] * [[sheep]] * [[pig]] {{endplainlist}} }} == Parameters == {{Format TemplateData|JSON= { "params": { "1": { "label": "List content", "description": "If supplied, the list, as a normal bulleted list. (Every line should start with an asterisk. No blank lines between lines.) See template page for how this works otherwise.", "type": "content", "suggested": true }, "class": { "label": "CSS classes", "description": "Adds a CSS class to the containing div.", "type": "string", "default": "The class \"plainlist\" is always applied." }, "style": { "label": "Custom CSS", "description": "Adds CSS style options. Complex styles should not be used in articles (per [[WP:Deviations]]) but may be acceptable on user, project, and talk pages.", "type": "string", "example": "border:solid 1px silver; background:lightyellow" }, "indent": { "label": "Indent level", "description": "Indents the list by a number of standard indents (one indent being 1.6em), particularly handy for inclusion in an indented discussion thread.", "type": "number", "example": "2" } }, "description": "This template provides a WCAG/ISO-standards-compliant accessible alternative to &lt;br /&gt; separated lists, per [[WP:UBLIST]] and [[WP:PLIST]]. It uses proper HTML list markup, which is more standards-compliant and more accessible than separating list items with &lt;br /&gt;. Detailed reasons for using this template can be found at WP:UBLIST." } }} === Controlling line-breaking === Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists, to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details. == Technical details == {{tl|Plainlist}} works by constructing a [[span and div|div]] with the [[Cascading Style Sheets|CSS]] class "plainlist" which has the styles listed in [[Template:Plainlist/styles.css]]. {| class="wikitable" ! Wikitext ! Expanded template ! HTML |- style="vertical-align:top;" | class="nowrap" | <pre> {{Plainlist| * Example 1 * Example 2 * Example 3 }} </pre> | class="nowrap" | {{nowiki2|tag=pre| {{Plainlist| * Example 1 * Example 2 * Example 3 }} }} | <syntaxhighlight lang="html"> <div class="plainlist"> <ul> <li>Example 1</li> <li>Example 2</li> <li>Example 3</li> </ul> </div> </syntaxhighlight> |} == Redirects == * {{tl|Startplainlist}} == See also == * {{tl|unbulleted list}} – essentially the same but uses <code><nowiki>| ... | ... | ...</nowiki></code> instead of <code><nowiki>|* ... * ... * ...</nowiki></code> * {{tl|flatlist}} and {{tl|hlist}} (replacements for comma- or dash-separated lists) * {{tl|bulleted list}} * {{tl|indented plainlist}} * {{tl|ordered list}} * {{section link|Template:Infobox person#Inline lists}} for more information on creating lists within the Infobox family of templates, with examples in the following {{section link|Template:Infobox person#Examples|nopage=y}} {{navbox lists}} <includeonly>{{Sandbox other|| <!-- CATEGORIES HERE, THANKS --> [[Category:List formatting and function templates|Plainlist]] [[Category:Semantic markup templates]] [[Category:Typing-aid templates|Plainlist]] }}</includeonly> 3e643450c27b6fb02ce218d36c67d391a6e20482 Philippines 0 437 1432 1271 2023-10-01T10:21:56Z Führerredux 2 wikitext text/x-wiki {{Infobox country | languages_type = National language | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_flag2 = Flag of the United States (1912-1959).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}} | image_map = PHL orthographic.svg | image_map_caption = Location of the Philippines in [[Southeast Asia]] | status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] (1935–1946){{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}}<br />[[Government in exile of the Commonwealth of the Philippines|Government-in-exile]] (1942–1945) </div> | life_span = 1935–1942<br />1942–1945: [[Government in exile of the Commonwealth of the Philippines|Government-in-exile]]<br />1945–1946 | p1 = Insular Government of the Philippine Islands{{!}}'''1935:'''<br />Insular Government of the Philippine Islands | flag_p1 = Flag of the Philippines (1919-1936).svg | p2 = Second Philippine Republic{{!}}'''1945:'''<br />Second Philippine Republic | flag_p2 = Flag of the Philippines (1943-1945).svg | s1 = Philippine Executive Commission{{!}}'''1942:'''<br />Philippine Executive Commission | flag_s1 = Flag of Japan (1870-1999).svg | s2 = Third Philippine Republic{{!}}'''1946:'''<br />{{nowrap|Third Philippine}}<br />Republic | flag_s2 = Flag of the Philippines (1936–1985, 1986–1998).svg | official_languages = {{plainlist| * [[English language|English]] * [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref> }} | ethnic_groups = {{#invoke:list|unbulleted | 33.7% Visayan | 24.4% Tagalog | 8.4% Ilocano | 6.8% Bicolano | 26.2% other }} | demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | languages_sub = no | religion = [[Separation of church and state|None official]] | government_type = Devolved presidential constitutional dependency | legislature = National Assembly | upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946) | lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946) | era = [[Interwar period|Interwar]], [[World War II]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | currency = Philippine Peso | drives_on = left | calling_code = +63 | iso3166 = PH | time_zone = [[Philippine Standard Time|PST]] | utc_offset = +08:00 | date_format = {{plainlist| * {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}} * {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}} }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. == History== ===Pre-Colonial Period (pre-1521)=== {{Main article|Philippine Pre-Colonial History}} The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas. Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers. ===Spanish Colonial Period (1521-1898)=== {{Main article|Philippine Spanish Colonial History}} The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world. Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892. The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War. ===Filipino-American War and American Colonial Period (1898-1936)=== {{Main article|Filipino-American War}} The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. {{Main article|Philippine American Colony}} After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao. However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner. <references group="lower-alpha" /> <references /> 2085475ca0bd8cf6480cec3f6a8d2d4ecff1bbbe Template:Cite book 10 690 1549 1548 2023-10-01T10:23:34Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_book]] wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=book }}</includeonly><noinclude> {{documentation}} {{collapse top|TemplateData}} {{Cite book/TemplateData}} {{collapse bottom}} </noinclude> c474cbe5d051e08f516083d594207d449245c717 Template:Cite book/doc 10 691 1551 1550 2023-10-01T10:24:30Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_book/doc]] wikitext text/x-wiki {{high-risk}} <noinclude>{{pp-protected|reason=Persistent [[WP:Disruptive editing|disruptive editing]] Protecting high visibility template.|small=yes}}</noinclude>{{Documentation subpage}} <!-- Categories go where indicated at the bottom of this page, please; interwikis go to Wikidata (see also: [[Wikipedia:Wikidata]]). --> {{csdoc|lua}} {{csdoc|cs1}} {{csdoc|lead|books}} When citing an article in a periodical, use {{tl|cite journal}} or {{tl|cite magazine}}. For conference papers, use {{tl|cite conference}}. For edited collections, use {{tl|cite encyclopedia}}. For theses, use {{tl|cite thesis}}. ==Usage== {{csdoc|usage}} {{csdoc|usage common}} ; To cite a book with a credited author : <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |author-link= |date= |title= |url= |location= |publisher= |page= |isbn=}}</syntaxhighlight> ; To cite a book with no credited author : <syntaxhighlight lang="wikitext" inline>{{cite book |author=<!--Staff writer(s); no by-line.--> |date= |title= |url= |location= |publisher= |page= |isbn=}}</syntaxhighlight> ; To cite an online book that has been archived : <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |date= |title= |url= |url-status= |location= |publisher= |isbn= |archive-url= |archive-date=}}</syntaxhighlight> ; To cite a book written in a foreign language : <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |date= |title= |trans-title= |url= |language= |location= |publisher= |isbn=}}</syntaxhighlight> ; To cite and quote an archived, two-author, foreign language book re-published as a PDF on an information aggregation service requiring a subscription : <syntaxhighlight lang="wikitext" inline>{{cite book |last1= |first1= |last2= |first2= |date= |title= |trans-title= |url= |url-status= |url-access= |format= |language= |location= |publisher= |isbn= |archive-url= |archive-date= |via= |quote=}}</syntaxhighlight> {{end}} {{csdoc|usage vertical common}} <syntaxhighlight lang="wikitext"> {{cite book | last = | first = | author-link = | date = | title = | url = | location = | publisher = | page = <!-- or pages: --> | isbn = }} </syntaxhighlight> {{end}} {{csdoc|usage full}} <syntaxhighlight lang="wikitext" inline>{{cite book |last1= |first1= |author-link1= |last2= |first2= |author-link2= |last3= |first3= |author-link3= |last4= |first4= |author-link4= |last5= |first5= |author-link5= |display-authors= |author-mask1= |author-mask2= |author-mask3= |author-mask4= |author-mask5= |editor-last1= |editor-first1= |editor-link1= |editor-last2= |editor-first2= |editor-link2= |editor-last3= |editor-first3= |editor-link3= |editor-last4= |editor-first4= |editor-link4= |editor-last5= |editor-first5= |editor-link5= |display-editors= |editor-mask1= |editor-mask2= |editor-mask3= |editor-mask4= |editor-mask5= |translator-last1= |translator-first1= |translator-link1= |translator-last2= |translator-first2= |translator-link2= |translator-last3= |translator-first3= |translator-link3= |translator-last4= |translator-first4= |translator-link4= |translator-last5= |translator-first5= |translator-link5= |display-translators= |translator-mask1= |translator-mask2= |translator-mask3= |translator-mask4= |translator-mask5= |others= |name-list-style= |date= |year= |orig-date= |chapter= |script-chapter= |trans-chapter= |chapter-url= |chapter-url-access= |chapter-format= |title= |script-title= |trans-title= |title-link= |url= |url-status= |url-access= |format= |type= |series= |language= |volume= |edition= |publication-place= |location= |publisher= |publication-date= |page= |pages= |at= |no-pp= |arxiv= |asin= |asin-tld= |bibcode= |bibcode-access= |biorxiv= |citeseerx= |doi= |doi-access= |doi-broken-date= |eissn= |hdl= |hdl-access= |isbn= |ismn= |issn= |jfm= |jstor= |jstor-access= |lccn= |mr= |oclc= |ol= |ol-access= |osti= |osti-access= |pmc= |pmc-embargo-date= |pmid= |rfc= |sbn= |ssrn= |s2cid= |s2cid-access= |zbl= |id= |archive-url= |archive-date= |access-date= |via= |quote= |script-quote= |trans-quote= |quote-page= |quote-pages= |mode= |postscript= |ref=}}</syntaxhighlight> {{end}} {| class="wikitable" |+Full parameter set in vertical format ! Parameters !! Prerequisites !! Brief instructions / notes !! Vertical list |- | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | | Author's last name or single name author. Don't link. | rowspan="111" style="vertical-align:top;" | <pre style="margin:0px; border:none;"> {{cite book &nbsp;|last1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= |first1 = |author-link1 = |last2 = |first2 = |author-link2 = |last3 = |first3 = |author-link3 = |last4 = |first4 = |author-link4 = |last5 = |first5 = |author-link5 = |display-authors = |author-mask1 = |author-mask2 = |author-mask3 = |author-mask4 = |author-mask5 = |editor-last1 = |editor-first1 = |editor-link1 = |editor-last2 = |editor-first2 = |editor-link2 = |editor-last3 = |editor-first3 = |editor-link3 = |editor-last4 = |editor-first4 = |editor-link4 = |editor-last5 = |editor-first5 = |editor-link5 = |display-editors = |editor-mask1 = |editor-mask2 = |editor-mask3 = |editor-mask4 = |editor-mask5 = |translator-last1 = |translator-first1 = |translator-link1 = |translator-last2 = |translator-first2 = |translator-link2 = |translator-last3 = |translator-first3 = |translator-link3 = |translator-last4 = |translator-first4 = |translator-link4 = |translator-last5 = |translator-first5 = |translator-link5 = |display-translators = |translator-mask1 = |translator-mask2 = |translator-mask3 = |translator-mask4 = |translator-mask5 = |others = |name-list-style = |date = |year = |orig-date = |chapter = |script-chapter = |trans-chapter = |chapter-url = |chapter-url-access = |chapter-format = |title = |script-title = |trans-title = |title-link = |url = |url-status = |url-access = |format = |type = |series = |language = |volume = |edition = |publication-place = |location = |publisher = |publication-date = |page = |pages = |at = |no-pp = |arxiv = |asin = |asin-tld = |bibcode = |bibcode-access = |biorxiv = |citeseerx = |doi = |doi-access = |doi-broken-date = |eissn = |hdl = |hdl-access = |isbn = |ismn = |issn = |jfm = |jstor = |jstor-access = |lccn = |mr = |oclc = |ol = |ol-access = |osti = |osti-access = |pmc = |pmc-embargo-date = |pmid = |rfc = |sbn = |ssrn = |s2cid = |s2cid-access = |zbl = |id = |archive-url = |archive-date = |access-date = |via = |quote = |script-quote = |trans-quote = |quote-page = |quote-pages = |mode = |postscript = |ref = }} </pre> |- | {{tooltip|2=or any of its aliases, including: first; given1; given; author-first1; author-first; (etc.)|first1}} | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | Author's first name. Don't link. |- | {{tooltip|2=or any of its aliases, including: author-link; author-link1; subject-link1; subject-link; (etc.)|author-link1}} | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | Title of Wikipedia article about the first author. Don't link. |- | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | Like <code>last1</code>, but for 2nd author. |- | {{tooltip|2=or any of its aliases, including: given2; author-first2; (etc.)|first2}} | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} | Like <code>first1</code>, but for 2nd author. |- | {{tooltip|2=or any of its aliases, including: subject-link2; (etc.)|author-link2}} | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} | Like <code>author-link1</code>, but for 2nd author. |- | {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}} | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} | Like <code>last1</code>, but for 3rd author. |- | {{tooltip|2=or any of its aliases, including: given3; author-first3; (etc.)|first3}} | {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}} | Like <code>first1</code>, but for 3rd author. |- | {{tooltip|2=or any of its aliases, including: subject-link3; (etc.)|author-link3}} | {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}} | Like <code>author-link1</code>, but for 3rd author. |- | {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}} | {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}} | Like <code>last1</code>, but for 4th author. |- | {{tooltip|2=or any of its aliases, including: given4; author-first4; (etc.)|first4}} | {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}} | Like <code>first1</code>, but for 4th author. |- | {{tooltip|2=or any of its aliases, including: subject-link4; (etc.)|author-link4}} | {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}} | Like <code>author-link1</code>, but for 4th author. |- | {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}} | {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}} | Like <code>last1</code>, but for 5th author. Similar: last6, etc. |- | {{tooltip|2=or any of its aliases, including: given5; author-first5; (etc.)|first5}} | {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}} | Like <code>first1</code>, but for 5th author. Similar: first6, etc. |- | {{tooltip|2=or any of its aliases, including: subject-link5; (etc.)|author-link5}} | {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}} | Like <code>author-link1</code>, but for 5th author. Similar: author-link6, etc. |- | {{tooltip|2=or alias displayauthors|display-authors}} | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | Number (number of authors displayed) or <code>etal</code> (more authors) |- | {{tooltip|2=or any of its aliases, including: author-mask; author1-mask; (etc.)|author-mask1}} | {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}} | rowspan="5" | See [[#Display options|Display options]] below; not for lists of cited works |- | {{tooltip|2=or any of its aliases, including: author2-mask; (etc.)|author-mask2}} | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} |- | {{tooltip|2=or any of its aliases, including: author3-mask; (etc.)|author-mask3}} | {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}} |- | {{tooltip|2=or any of its aliases, including: author4-mask; (etc.)|author-mask4}} | {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}} |- | {{tooltip|2=or any of its aliases, including: author5-mask; (etc.)|author-mask5}} | {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}} |- || editor-last1 || || may also use "editor-last" |- || editor-first1 || editor-last1 || may also use "editor-first" |- || editor-link1 || editor-last1 || may also use "editor-link" |- || editor-mask1 || editor-last1 || |- || display-editors || || |- | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | | Like <code>last1</code>, but for translator |- | {{tooltip|2=or any of its aliases, including: translator-first; translator-given1; translator-given; (etc.)|translator-first1}} | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | Like <code>first1</code>, but for translator |- | {{tooltip|2=or any of its aliases, including: translator-link; (etc.)|translator-link1}} | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | Like <code>author-link1</code>, but for translator |- | {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}} | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | Like <code>last1</code>, but for 2nd translator. Similar: translator-last3, etc. |- | {{tooltip|2=or any of its aliases, including: translator2-first; translator-given2; (etc.)|translator-first2}} | {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}} | Like <code>first1</code>, but for 2nd translator. Similar: translator-first3, etc. |- | {{tooltip|2=or alias translator2-link|translator-link2}} | {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}} | Like <code>author-link1</code>, but for 2nd transl. Similar: translator-link3, ... |- | {{nowrap|display-translators}} | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | Like <code>display-authors</code>, but for translators |- | {{tooltip|2=or any of its aliases, including: translator-mask; (etc.)|translator-mask1}} | {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}} | rowspan="2" | See [[#Display options|Display options]] below; not for lists of cited works |- | {{tooltip|2=or alias translator2-mask|translator-mask2}} | {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}} |- | name-list-style | {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}} | Set to <code>amp</code> or <code>ampersand</code> to separate the last author with {{nowrap|"<code> & </code>"}}; set to <code>and</code> to separate with {{nowrap|"<code> and </code>"}} |- || others || || |- || date || || |- || year || || |- || orig-date || date or year || |- || chapter || || This should be the title of the chapter cited. Do not wikilink "chapter" if "chapter-url" is provided |- || script-chapter || || |- || trans-chapter || chapter or script-chapter || |- || chapter-url || chapter or script-chapter || |- || chapter-format || chapter-url || |- || title || || |- || script-title || || |- || trans-title || title or script-title || |- || title-link || title or script-title || Name of a Wikipedia article about the work. Do not use if "url" is provided |- || url || title or script-title || Do not use if "title-link" is provided |- || url-status || archive-url || |- || url-access || url || |- || format || url || |- || type || || |- || series || || |- || language || || |- || volume || || |- || edition || || |- || publication-place || publisher || |- || location || publisher || can be used for written-at location when "publication-place" is used for publication place |- || publisher || || |- || publication-date || || |- || page || || choose one: "page", "pages", or "at" |- || pages || || choose one: "page", "pages", or "at". Use when content on multiple pages supports the article text. |- || at || || choose one: "page", "pages", or "at" |- || no-pp || page or pages || set no-pp to "yes" to suppress the "p." or "pp." before page numbers |- || arxiv || || |- || asin || || |- || asin-tld || asin || |- || bibcode || || |- || biorxiv || || |- || citeseerx || || |- || doi || || |- || doi-broken-date || doi || |- || eissn || || |- || hdl || || |- || isbn || || '''always include ISBN''', if one has been assigned |- || issn || || |- || ismn || || |- || jfm || || |- || jstor || || |- || lccn || || |- || mr || || |- || oclc || || |- || ol || || |- || osti || || |- || pmc || || |- || pmc-embargo-date || pmc || |- || pmid || || |- || rfc || || |- || sbn || || |- || ssrn || || |- || s2cid || || |- || zbl || || |- || id || || |- || archive-url || archive-date, url || |- || archive-date || archive-url || |- || access-date || url || |- || via || || |- || quote || || |- || script-quote || || |- || trans-quote || || |- || quote-page || || choose one: "quote-page", "quote-pages" |- || quote-pages || || choose one: "quote-page", "quote-pages". Use when quote contains contents from multiple pages. |- || mode || || <code>cs1</code> or <code>cs2</code> |- || postscript || || |- || ref || || |- | colspan="4" style="text-align: center" | If a field name is listed in the '''Prerequisites''' column, it is a prerequisite for the field to the left. |} ==Examples== {{markup2|t=Title |m=<syntaxhighlight lang="wikitext" inline>{{cite book |title=Mysterious Book}}</syntaxhighlight> |r={{cite book |title=Mysterious Book}} }} {{markup2|t=Title and year |m=<syntaxhighlight lang="wikitext" inline>{{cite book |title=Mysterious Book |date=1901}}</syntaxhighlight> |r={{cite book |title=Mysterious Book |date=1901}} }} {{markup2|t=Basic usage (single author) |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs}}</syntaxhighlight> |r={{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs}} }} {{markup2|t=Basic usage (two authors) |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Bloggs |first2=Fred |author-link2=Fred Bloggs |date=1974 |title=Book of Bloggs}}</syntaxhighlight> |r={{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Bloggs |first2=Fred |author-link2=Fred Bloggs |date=1974 |title=Book of Bloggs}} }} {{markup2|t=Basic usage with url (and access-date) and edition |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs |edition=1st |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}</syntaxhighlight> |r={{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs |edition=1st |url=https://en.wikipedia.org/ |access-date=February 17, 2006}} }}{{anchor|different authors}} {{markup2|t=Citing a chapter in a book with different authors for different chapters and an editor |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Compilation Book with Many Chapters and Distinct Chapter Authors |publisher=Book Publishers |pages=100–110 |chapter=Chapter 2: The History of the Bloggs Family |isbn=}}</syntaxhighlight> |r={{cite book |last=Bloggs |first=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Compilation Book with Many Chapters and Distinct Chapter Authors |publisher=Book Publishers |pages=100–110 |chapter=Chapter 2: The History of the Bloggs Family |isbn=}} }} {{markup2|t=Citing a chapter in a book with two joint authors and an editor |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |last2=Egg |first2=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Book with Many Chapters and Two Co-authors |publisher=Book Publishers |orig-date=1st pub. 1986 |pages=100–110 |chapter=Chapter 6: Getting There |chapter-url=https://en.wikipedia.org/ |isbn= |name-list-style=amp}}</syntaxhighlight> |r={{cite book |last1=Bloggs |first1=Joe |last2=Egg |first2=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Book with Many Chapters and Two Co-authors |publisher=Book Publishers |orig-date=1st pub. 1986 |pages=100–110 |chapter=Chapter 6: Getting There |chapter-url=https://en.wikipedia.org/ |isbn= |name-list-style=amp}} }} {{markup2|t=Three authors, title with a differently-named title link, edition |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Smith |first2=John |last3=Smythe |first3=Jim |title=1000 Acres |title-link=A Thousand Acres |edition=2nd}}</syntaxhighlight> |r={{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Smith |first2=John |last3=Smythe |first3=Jim |title=1000 Acres |title-link=A Thousand Acres |edition=2nd}} }} {{markup2|t=Complex usage showing effect of using volume parameter and lastauthoramp parameter (without volume and lastauthoramp) |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East. Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3}}</syntaxhighlight> |r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East. Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3}} }} {{markup2|t=Complex usage showing effect of using volume parameter and lastauthoramp parameter (with volume and lastauthoramp) |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East |volume=I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}</syntaxhighlight> |r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East |volume=I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}} }} {{markup2|t=Date without day, wikilinked title, publisher, pages, edition, location |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Cordell |first1=Bruce R. |last2=Grubb |first2=Jeff |last3=Noonan |first3=David |date=September 2001 |title=Manual of the Planes |title-link=Manual of the Planes |edition=3rd |publisher=Wizards of the Coast |location=Renton, Washington |isbn=0-7869-1850-0 |pages=134–137}}</syntaxhighlight> |r={{cite book |last1=Cordell |first1=Bruce R. |last2=Grubb |first2=Jeff |last3=Noonan |first3=David |date=September 2001 |title=Manual of the Planes |title-link=Manual of the Planes |edition=3rd |publisher=Wizards of the Coast |location=Renton, Washington |isbn=0-7869-1850-0 |pages=134–137}} }} {{markup2|t=Other language |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Jean |date=1974 |title=Livre de Bloggs |edition=1st |language=French |trans-title=Book of Bloggs |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}</syntaxhighlight> |r={{cite book |last=Bloggs |first=Jean |date=1974 |title=Livre de Bloggs |edition=1st |language=French |trans-title=Book of Bloggs |url=https://en.wikipedia.org/ |access-date=February 17, 2006}} }} {{markup2|t=Using a [[Digital object identifier|DOI]] |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Mumford |first=David |author-link=David Mumford |date=1999 |title=The Red Book of Varieties and Schemes: Includes the Michigan Lectures (1974) on Curves and Their Jacobians |edition=2nd |publisher=Springer-Verlag |doi=10.1007/b62130 |isbn=354063293X}}</syntaxhighlight> |r={{cite book |last=Mumford |first=David |author-link=David Mumford |date=1999 |title=The Red Book of Varieties and Schemes: Includes the Michigan Lectures (1974) on Curves and Their Jacobians |edition=2nd |publisher=Springer-Verlag |doi=10.1007/b62130 |isbn=354063293X}} }} {{markup2|t=Using author-mask parameter |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}</syntaxhighlight> |m2=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume II: The Germans Come to the Help of Their Ally (1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-66-1 |name-list-style=amp |author-mask=2}}</syntaxhighlight> |m3=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Gleave |first4=T. P. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=Sir James |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume III: British Fortunes Reach Their Lowest Ebb (September 1941 to September 1942) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-67-X |name-list-style=amp |author-mask=2}}</syntaxhighlight> |r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}} |r2={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume II: The Germans Come to the Help of Their Ally (1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-66-1 |name-list-style=amp |author-mask=2}} |r3={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Gleave |first4=T. P. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=Sir James |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume III: British Fortunes Reach Their Lowest Ebb (September 1941 to September 1942) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-67-X |name-list-style=amp |author-mask=2}} }} {{markup2|t=Using display-authors parameter |m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |display-authors=1}}</syntaxhighlight> |r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |display-authors=1}} }} ==Parameters== ===Syntax=== {{csdoc|syntax}} ===COinS=== {{csdoc|coins}} ===What's new=== {{csdoc|whats new}} ===Deprecated=== {{csdoc|deprecated}} ===Description=== ====Authors==== {{csdoc|author|contributor=yes|others=yes}} ====Date==== {{csdoc|date}} ====Title==== {{csdoc|title|title_format=italics}} {{csdoc|type}} {{csdoc|chapter}} {{csdoc|language}} ====Publisher==== {{csdoc|publisher}} ====Edition, series, volume==== {{csdoc|edition}} {{csdoc|series}} {{csdoc|volume}} ====In-source locations==== {{csdoc|pages}} ===={{Anchor|url}}URL==== {{csdoc|url}} ====Chapter URL==== {{csdoc|chapterurl}} ====Anchor==== {{distinguish|#Identifiers}} {{csdoc|ref}} ====Identifiers==== {{distinguish|#Anchor}} {{csdoc|id1}} {{csdoc|id2}} ====Quote==== {{csdoc|quote}} ====Editors==== {{csdoc|editor}} ====Lay summary==== {{csdoc|lay}} ====Display options==== {{csdoc|display}} ====Subscription or registration required==== {{csdoc|registration}} ==TemplateData== See [[Template:Cite book/TemplateData]]. == Citation tools== {{main|Help:Citation tools}} *'''[https://citer.toolforge.org/ Citer]''': A web tool that converts a DOI, ISBN, PMID, PMCID, [[OCLC]], or [[Google Books]] URL into a citation and [[Help:Shortened footnotes|shortened footnote]]. * '''[https://alyw234237.github.io/wiki-doi-gbooks-citation-maker/ DOI and Google Books Citation Maker]''': A web tool for generating filled citation templates via DOIs and Google Books URLs. {{Citation Style 1}} {{Wikipedia referencing}} {{UF-COinS}} <includeonly>{{Sandbox other|| <!-- Categories go below this line, please; interwikis go to Wikidata, thank you! --> [[Category:Citation Style 1 templates|B]] [[Category:Book citation templates| ]] [[Category:Book templates]] }}</includeonly> 4035f77bf4e9982c578739e7272d6d3b11242c31 Template:Cite book/lua 10 692 1553 1552 2023-10-01T10:25:32Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_book/lua]] wikitext text/x-wiki #redirect [[Template:Cite book]] 598ed4dfc9eb5f2d9778d19c1e673eca6ae6aeb4 Template:Cite book/new 10 693 1555 1554 2023-10-01T10:25:42Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_book/new]] wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1/sandbox|citation |CitationClass=book |SandboxPath=/sandbox }}</includeonly><noinclude> {{documentation|content= The '''Template:Cite_book/new''' uses the [[Lua script]] interface with [[Module:Citation/CS1/sandbox]] to format book cites using the [[wp:CS1|Citation Style 1]] for cite parameters. }} [[Category:Lua-based templates]] </noinclude> 67558f4bbe6d0235534f2800b4363bf48fafef92 Template:Stub 10 754 1684 1683 2023-10-01T10:29:17Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Stub]] wikitext text/x-wiki {{asbox | image = | pix = | subject = | article = article | qualifier = | category = Stubs | tempsort = no | lowercase = y | name = Template:Stub }} c8372a9cd3ab0d8ef30c901442b93e0675510604 Template:Asbox 10 755 1686 1685 2023-10-01T10:29:22Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Asbox]] wikitext text/x-wiki <includeonly>{{#invoke:Asbox|main}}</includeonly><noinclude> {{documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata. --> </noinclude> b20553d60f223a0f36a3089524989e235d379b74 Template:Asbox/styles.css 10 756 1688 1687 2023-10-01T10:29:23Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Asbox/styles.css]] sanitized-css text/css /* {{pp-template}} */ /* Article stub message box styles */ .asbox { position: relative; overflow:hidden; } .asbox table { background: transparent; } .asbox p { margin: 0; } .asbox p + p { margin-top: 0.25em; } .asbox-body { font-style: italic; } .asbox-note { font-size: smaller; } .asbox .navbar { position: absolute; top: -0.75em; right: 1em; display: none; } 9f0904fdac11fd6eebd84c73d5680f09d19c9b5a Module:Asbox 828 757 1690 1689 2023-10-01T10:29:23Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Asbox]] Scribunto text/plain --[[ This module was created by User:CodeHydro (Alexander Zhikun He). User:Jackmcbarn and User:Mr._Stradivarius provided a great deal of assistance in writting p.main() p.main() draw heavily from the following version of Template:Asbox of the English Wikipedia, authored primarily by User:Rich_Farmbrough https://en.wikipedia.org/w/index.php?title=Template:Asbox&oldid=619510287 p.templatepage() is derived from the following revision of Template:Asbox/templatepage, authored primarily by User:MSGJ https://en.wikipedia.org/w/index.php?title=Template:Asbox/templatepage&oldid=632914791 Both templates had significant contributions from numerous others listed in the revision history tab of their respective pages. --]] local WRAPPER_TEMPLATE, args = 'Template:Asbox' local templatestyles = 'Asbox/styles.css' local p, Buffer, stubCats = { --Prevents dupli-cats... get it? Maybe not? cats = setmetatable({}, {__newindex = function(t, i, v) if not rawget(t, i) then rawset(t, i, v) table.insert(t, i) end end}), --initializes variables required by both p.main and p.templatepage init = function(self, frame, page) args, page = args or require('Module:Arguments').getArgs(frame, { wrappers = WRAPPER_TEMPLATE }), page or mw.title.getCurrentTitle() --Ensures demo parameter will never affect category() output for articles self.demo = self.demo or page.namespace ~= 0 and args.demo return args, page end }, require('Module:Buffer') --[[ Formats category links. Stores them until called with cat.done=true Takes multiple or single categories in the form of 'cat' or a table of strings and/or tables containing parts. (See below) ]] local attention, catTag, catKey = Buffer'Stub message templates needing attention', '[[Category:%s]]', '%s|%s%s' local function category(cat) for _, v in ipairs((tostring(cat) == cat or cat.t) and {cat} or cat) do --[[ If v is a table: [1] = full category name; defaults to local attention if blank k = Category sort key. Prefix before v.t t = page.text or args.tempsort#; appended after k (or in its place if omitted). Required if v is not a string Basically the same as v = (v[1] or attention) .. ' | ' .. (v.k or '') .. v.t ]] if v and v ~= true then--reject v = nil, false, or true p.cats[catTag:format(tostring(v) == v and v or (v[1] and Buffer(v[1]) or attention):_in(v.k):_(v.t):_str(2, nil, nil, '|') )] = true end end return cat.done and table.concat(p.cats, p.demo and ' | ' or nil) or '' end --[[ Makes an ombox warning; Takes table {ifNot = Boolean, text, {cat. sort key, cat. sort name}} Will return an empty string instead when ifNot evaluates to true ]] local function ombox(v) if v.ifNot then return end p.ombox = p.ombox or require('Module:Message box').ombox category{v[2]} return p.ombox{ type = 'content', text = v[1] } end --[[ Unlike original template, module now takes unlimited cats! This function also performs most stub category error checks except for the ombox for when main |category= is omitted (See p.template()) ]] local function catStub(page, pageDoc) stubCats = {missing = {}, v = {}} -- zwj and zwnj have semantical use in other other wikis, don't remove them local zwj = '\226\128\141' -- U+200D, E2 80 8D local zwnj = '\226\128\140' -- U+200C, E2 80 8C local disallowedUnicodeChars = '[^%w%p%s' .. zwj .. zwnj .. ']' -- for i18n we make this a separate string local code for k, _ in pairs(args) do --Find category parameters and store the number (main cat = '') table.insert(stubCats, string.match(k, '^category(%d*)$')) end table.sort(stubCats) for k, v in ipairs(stubCats) do --Get category names and, if called by p.templatepage, the optional sort key local tsort, cat = args['tempsort' .. v], mw.ustring.gsub(args['category' .. v], disallowedUnicodeChars, '')--remove all hidden unicode chars --Do not place template in main category if |tempsort = 'no'. However, DO place articles of that template in the main category. table.insert(stubCats.v, page and (--p.templatepage passes page; p.main does not, i.e. articles are categorized without sort keys. v=='' and tsort == 'no'--if true, inserts 'true' in table, which category() will reject or tsort and {cat, k = ' ', t = tsort} or {cat, k = ' *', t = page.text}--note space in front of sort key ) or cat ) --Check category existance only if on the template page (i.e. stub documentation) if page then if not mw.title.new('Category:' .. cat).exists then code = code or mw.html.create'code':wikitext'|category' table.insert(stubCats.missing, tostring(mw.clone(code):wikitext(v))) end --[[ Checks non-demo stub template for documentation and flags if doc is present. All stub cats names are checked and flagged if it does not match 'Category: [] stub'. The main stub cat is exempt from the name check if the stub template has its own doc (presumably, this doc would have an explanation as to why the main stub cat is non-conforming). ]] table.insert(stubCats.v, v == '' and not p.demo and pageDoc.exists and 'Stub message templates with documentation subpages' or not cat:match' stubs$' and {k = 'S', t = page.text} ) end end --Add category names after loop is completed category(stubCats.v) return #stubCats.missing > 0 and ombox{ --Changed, original msg: --One or more of the stub categories defined in this template do not seem to exist! --Please double-check the parameters {{para|category}}, {{para|category1}} and {{para|category2}}. 'The following parameter' .. (#stubCats.missing == 1 and ' defines a stub category that does' or 's define stub categories that do') .. ' not exist: ' .. mw.text.listToText(stubCats.missing), {k = 'N', t = page.text} } end --Shows population of categories found by catStub(). Outputs demo values if none local function population() local wikitext, base = {}, '* [[:Category:%s]] (population: %s)\n' if not args.category and stubCats[1] ~= false then table.insert(stubCats, 1, false) end for _, v in ipairs(stubCats) do table.insert(wikitext, base:format( v and args['category' .. v] or '{{{category}}}', v and mw.site.stats.pagesInCategory(args['category' .. v], 'all') or 0 )) end return table.concat(wikitext) end --Includes standard stub documention and flags stub templates with bad parameter values. function p.templatepage(frame, page) args, page = p:init(frame, page) local tStubDoc = mw.title.new'Template:Stub documentation' local pageDoc = page:subPageTitle('doc') --Reorganization note: Original Asbox alternates between outputting categories and checking on params |category#=. --Rather than checking multiple times and switching tasks, all stub category param operations have been rolled into catStub() return Buffer( ombox{--Show ombox warnings for missing args. ifNot = args.category, 'The <code>|category</code> parameter is not set. Please add an appropriate stub category.', {k = 'C', t = page.text} }) :_(ombox{ ifNot = args.subject or args.article or args.qualifier, 'This stub template contains no description! At least one of the parameters <code>|subject</code>, <code>|article</code> or <code>|qualifier</code> must be defined.', {k = 'D', t = page.text} }) :_(catStub(page, pageDoc))--catStub() may also return an ombox if there are non-existing categories :_(category{ done = p.demo ~= 'doc',--Outputs categories if not doc demo 'Stub message templates', args.icon and 'Stub message templates using icon parameter' or args.image and ( mw.title.new('Media:' .. mw.text.split(args.image, '|')[1]).exists--do nothing if exists. category() will reject true or {k = 'B', t = page.text} ) or 'Stub message templates without images', args.imagealt and {k = 'I', t = page.text}, }) :_((not p.demo or p.demo == 'doc') and--Add standard stub template documentation require('Module:Documentation').main{ content = Buffer(page.text ~= 'Stub' and--This comparison performed in {{Asbox/stubtree}} before it invokes Module:Asbox stubtree require('Module:Asbox stubtree').subtree{args = {pagename = page.text}} ) :_in'\n== About this template ==\nThis template is used to identify a':_(args.subject):_'stub':_(args.qualifier):_out' '--space :_'. It uses {{[[Template:Asbox|asbox]]}}, which is a meta-template designed to ease the process of creating and maintaining stub templates.\n=== Usage ===\nTyping ' :_(mw.html.create'code' :wikitext('{{', page.text == 'Stub' and 'stub' or page.text, '}}') ) :_' produces the message shown at the beginning, and adds the article to the following categor' :_(#stubCats > 1 and 'ies' or 'y') :_':\n' :_(population()) :_(pageDoc.exists and--transclusion of /doc if it exists frame:expandTemplate{title = pageDoc.text} ) :_'\n== General information ==\n' :_(frame:expandTemplate{title = tStubDoc.text}) :_'\n\n'(), ['link box'] = Buffer'This documentation is automatically generated by [[Module:Asbox]].' :_in'The general information is transcluded from [[Template:Stub documentation]]. ' :_(mw.html.create'span' :cssText'font-size:smaller;font-style:normal;line-height:130%' :node(('([%s edit] | [%s history])'):format( tStubDoc:fullUrl('action=edit', 'relative'), tStubDoc:fullUrl('action=history', 'relative') )) ) :_out() :_(page.protectionLevels.edit and page.protectionLevels.edit[1] == 'sysop' and "This template is [[WP:PROTECT|fully protected]] and any [[WP:CAT|categories]] should be added to the template's [" .. pageDoc:fullUrl('action=edit&preload=Template:Category_interwiki/preload', 'relative') .. '| /doc] subpage, which is not protected.' )' <br/>' } )() end function p.main(frame, page) args, page = p:init(frame, page) local output = mw.html.create'div' :attr{role = 'note'} :addClass'metadata plainlinks asbox stub' :tag'table' :attr{role = 'presentation'} :tag'tr' :addClass'noresize' :node((args.icon or args.image) and mw.html.create'td' :wikitext(args.icon or ('[[File:%s|%spx|alt=%s]]'):format( args.image or '', args.pix or '40x30', args.imagealt or 'Stub icon' )) ) :tag'td' :tag'p' :addClass'asbox-body' :wikitext( Buffer'This':_(args.subject):_(args.article or 'article'):_(args.qualifier)' ',--space ' is a [[Wikipedia:stub|stub]]. You can help Wikipedia by [', page:fullUrl('action=edit', 'relative'), ' expanding it].' ) :done() :node(args.note and mw.html.create() :tag'p' :addClass'asbox-note' :wikitext(args.note) :done() ) :allDone() :node(args.name and require'Module:Navbar'._navbar{ args.name, mini = 'yes', } ) --[[ Stub categories for templates include a sort key; this ensures that all stub tags appear at the beginning of their respective categories. Articles using the template do not need a sort key since they have unique names. When p.demo equals 'doc', the demo stub categories will appear as those for a stub template. Otherwise, any non-nil p.demo will emulate article space categories (plus any error cats unless set to 'art') ]] if page.namespace == 0 then -- Main namespace category'All stub articles' catStub() elseif p.demo then if p.demo ~= 'doc' then catStub() end --Unless p.demo is set to 'art', it will also include error categories normally only shown on --the template but not in the article. The elseif after namespace == 0 means demo cats will never show in article space. p.demodoc = p.demo ~= 'art' and p.templatepage(frame, page) output = mw.html.create() :node(output) :tag'small':wikitext( 'Demo categories: ', (category{done = true}:gsub('(%[%[)(Category:)([^|%]]-)(%|)', '%1%2%3|%2%3%4'):gsub('(%[%[)(Category:)', '%1:%2')) ):done() :wikitext(p.demo == 'doc' and p.demodoc or nil) else --Checks for valid name; emulates original template's check using {{FULLPAGENAME:{{{name|}}}}} local normalizedName = mw.title.new(args.name or '') if normalizedName and normalizedName.fullText == page.fullText then output = mw.html.create():node(output):wikitext(p.templatepage(frame, page)) elseif not page.isSubpage and page.namespace == 10 then-- Template namespace and not a subpage category{{k = args.name and 'E' or 'W', t = page.text}} end end return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(output:wikitext(not p.demo and category{done = true} or nil)) end return p 0a9850f35fe9b15eaadd5d693d751ca62ddb60cf Module:Buffer 828 758 1692 1691 2023-10-01T10:29:24Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Buffer]] Scribunto text/plain --[[============================= This Module was written by Alexander Zhikun He, also known as, User:Codehydro on the English Wikipedia All methods were developed independently and any resemblance to other string buffer libraries would be coincidental. Furthermore, many methods will not work when compiled by standard Lua libraries as they depend on behaviors unique to the MediaMiki Scribunto mod, which, for example, has a getmetatable() method that always returns nil on non-tables. https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual Source code comments may be thin at some points because they are intended to be supplemented by the documentation page: https://en.wikipedia.org/wiki/Module:Buffer/doc Licensed under Creative Commons Attribution-ShareAlike 3.0 Unported License https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License https://en.wikipedia.org/wiki/Module:Buffer https://en.wikipedia.org/wiki/User:Codehydro =============================--]] local function Valid(v)--type validation if v and v~=true then--reject nil/boolean; faster than 2 type() comparisons local str = tostring(v)--functions not filtered since unlikely passed by accident (Scribunto does not have userdata/thread types) if str~=v and str=='table' then return rawget(v, 1) and table.concat(v) end--tostring(string-type) returns same ref; same refs compare faster than type() if str~='' then return str end--numbers are coerced to string per table.concat op; appending in string form saves ops on repeat concat end end local noOp, MBpairs = function()end do local iMap, vMap, oMap, pIter, pOther, pFast, Next--Map local function init()--init = noOp after first run function Next(t) return next, t end--slightly faster to do this than to use select() function pIter(t, k) k = (iMap[t] or MBpairs(t, true) and iMap[t])[not k and 1 or vMap[t][k]] return k, t[k] end--don't use rawget; accepting unmapped tables does not measurably affect performance. function pOther(t, k) k = (oMap[t] or MBpairs(t, true) and oMap[t])[nil==k and 1 or vMap[t][k]] return k, t[k] end--comparison to nil because false is a valid key function pFast(t, k) k = not k and 1 or k < (vMap[t] or #t) and k + 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached --k and k < (vMap[t] or #t) and k + 1 or not k and 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached local mk = {__mode = 'k'}--use mode 'k'; found that mode 'kv' sometimes garbage collects maps mid-loop (may not error because iterators auto re-map, but that's expensive) init, iMap, vMap, oMap = noOp, setmetatable({}, mk), setmetatable({}, mk), setmetatable({}, mk)--iMap is numeric keys, oMap is non-numeric keys, and vMap points to next key end function MBpairs(t, ...)--pairs always iterates in order local iter, ex = ... iter = iter==init()--nil if iter and not oMap[t] and ex==nil and rawget(t, 1)~=nil and next(t, #t)==nil then--while possible to miss keys, more thorough check would negate the benefit of pFast vMap[t] = #t return pFast, t, nil elseif ... or not vMap[t] or select('#', ...)~=1 then local ti, tn, to, n = {}, {}, {}, #t--reduces table lookups iMap[t], vMap[t], oMap[t] = ti, tn, to for k = 1, n do ti[k], tn[k] = k, k + 1 end--stage one avoids number type checking op in stage two for most numeric keys for k in (ex or Next)(t) do if not tn[k] then table.insert(tonumber(k)~=k and to or ti, k) end end if #ti~=n then table.sort(ti) for k = 1, #ti do tn[ti[k]] = k + 1 end--somewhat wasteful, but trying to avoid overwriting can be even more expensive end for k = 1, #to do tn[to[k]] = k + 1 end end return iter and pIter or oMap[t] and pOther or noOp, t--noOp for mapless end end local parent, rawkey, spec do--new scope for variables not reused outside (reduces number of var names that need to checked outside of scope) local mkv = {__mode='kv', __call=function(t,k,v)t[k]=v return k end}--shared meta for Buffer parent property, raw mode, and specialized functions parent, rawkey, spec = setmetatable({}, mkv), setmetatable({}, mkv), setmetatable({}, mkv)--shared meta less memory end local MB, MBi, MBmix, buffHTML, gfuncs, noCache, Element do--minimize number of locals per scope to reduce time spent sifting through irrelevant variable names local _stream do local stream--keep stream near top of scope local function init(f)--init = noOp after first run local function each(self, ...) for k = 1, select('#', ...) do k = Valid(select(k, ...))--slightly faster than table.insert(self, (Valid(select(k, ...)))) if k then table.insert(self, k) end end return self end init, stream, _stream = noOp, { __call = function(t, v) v = v and Valid(v) return v and table.insert(t, v) or t end,--last_concat cleared before entering stream mode __index = function(t, i) return i=='each' and each or MB.__index(t, i) and setmetatable(t, MB)[i] end,--no table look up minimizes resources to retrieve the only stream function __tostring = function(t) return setmetatable(t, MB)() end } for k, v in next, MB do stream[k] = stream[k] or v end setmetatable(stream, getmetatable(MB)) end function _stream(self, ...) self.last_concat = init() return setmetatable(self, stream):each(...) end end local function isMBfunc(Buffer, s, ...)--helper for :getParent()-like methods (including getBuffer which does not return a parent) return s and (select('#', ...)==0 and--eventually should figure out to make this work for :getHTML which is very similar (not rawkey[s] and tostring(s):match'^_.*' and MB.__index(Buffer, s) and MB.__index(Buffer, s)(Buffer) or MBmix(Buffer, s))--unprefixed function names append as a string or assert(MB.__index(Buffer, s), ('" %s " does not match any available Module:Buffer function'):format(s))(Buffer, ...)--getParent is a one-way trip so one-time assert not expensive ) or Buffer end local function MBselect(n, ...)--helper for :_out and :_str local n, seps = n - 1, {select(2, ...)} if type(seps[n])=='table' then if buffHTML and rawget(seps[n], buffHTML) then return ... end setmetatable(seps, {__index = setmetatable(seps[n], {__index = function(t) return rawget(t, 1) end})})[n] = nil end return ..., seps end local _inHTML do local lastBuffer, lastHTML local function init(...)--init replaced and new version called on return local create, mwFunc = mw.html.create do local mwHTMLmeta = getmetatable(create()) buffHTML, mwFunc, _inHTML = setmetatable(mw.clone(mwHTMLmeta), getmetatable(MB)), mwHTMLmeta.__index--buffHTML declared near top of module; remove _inHTML from outer scope function init(nodes, ...) local name, args, tag = select(... and type(...)=='table' and 1 or 2, nil, ...) tag = create(Valid(name), args) if nodes then table.insert(nodes, tag.parent and tag or rawset(tag, 'parent', parent[nodes])) end if args then local a, b = args.selfClosing, args.parent args.selfClosing, args.parent = nil if next(args) then Element._add(parent(tag.nodes, tag), args) end args.selfClosing, args.parent = a, b--in case args is reused end return tag end for k, v in next, {[mw] = mwHTMLmeta, __call = function(h, v) return MBmix(spec[h.nodes] and h.nodes or spec(setmetatable(parent(h.nodes, h), MB), Element), v) end, __concat = false,--false means take from MB __eq = false } do buffHTML[k] = v or MB[k] end end local nonSelf, BHi = {tag=true,done=true,allDone=true}, buffHTML.__index do local g g = {__index = function(t, i) if gfuncs and gfuncs[i] then g.__index, gfuncs = gfuncs return g.__index[i] end end} setmetatable(nonSelf, g) setmetatable(BHi, g) end for k in next, nonSelf do--any HTML objects returned by these funcs will be granted Module:Buffer enhancements local func = mwFunc[k] BHi[k] = function(t, ...) local HTML = func(t, ...) return parent[HTML] and HTML or setmetatable(parent(HTML, t), buffHTML) end end do local function joinNode(HTML, sep) local nodes, join = HTML.nodes if noCache and rawkey[sep] or Valid(sep) then join, HTML.nodes = tostring(rawset(HTML, 'nodes', {MB.__call(nodes, sep)})), nodes end return join or tostring(HTML) end for k, v in next, { getParent = function(HTML, ...) lastHTML = HTML return MBi.getParent(HTML:allDone(), ...) end,--return to Buffer that created the HTML tree getBuffer = function(HTML, ...) lastHTML = HTML return isMBfunc(lastBuffer, ...) end,--return to last used killParent = function(HTML, ...) MBi.killParent(HTML:allDone(), ...) return HTML end, _out = function(HTML, ...) if ...==0 then MBi._out(HTML.nodes, ...) return HTML end lastHTML, HTML = HTML, HTML:allDone() local n, ops, seps = select('#', ...) if n > 1 then local ops, seps = MBselect(n, ...) return parent[HTML]:_in(joinNode(HTML, rawget(seps, 0))):_out(ops, rawset(seps, buffHTML, true)) end return parent[HTML]:_(joinNode(HTML, ...)) end, _str = function(HTML, ...)--does not set lastHTML if ...==0 then return joinNode(HTML, select(2, ...)) end--passing 0 strings without calling allDone() local HTML, n = HTML:allDone(), select('#', ...) if n > 1 then local ops, seps = MBselect(n, ...) return parent[HTML]:_in(joinNode(HTML, rawget(seps, 1))):_str(ops, rawset(seps, buffHTML, true)) end return joinNode(HTML, ...) end, _parent = function(HTML, ...) table.insert(HTML.nodes, parent[HTML:allDone()]:_str(...)) return HTML end } do BHi[k] = v end end do local htmlArg, skip, outFuncs = {parent=true,selfClosing=true,tagName=true}, {} do local out local function func(nodes, ...) return out(parent[nodes], ...) end outFuncs = setmetatable({ tag = function(nodes, ...) return parent(setmetatable(init(nodes, ...), buffHTML), parent[nodes]) end, done = function(b, ops) b = parent[b] while b.parent and ops~=0 do b, ops = b.parent, ops and ops - 1 or 0 end return b end }, {__index = function(nodes, i) if rawget(BHi, i) then out = BHi[i] return func end--rawget to exclude globals end}) end Element = { _add = function(nodes, t) for k, v in MBpairs(t), t, skip[t] do (v~=true and MBmix or noOp)(nodes, v) end local HTML = parent[nodes] for k, v in MBpairs(t, false) do if htmlArg[k] then HTML[k] = v elseif v and v~=true then if nonSelf[k] then if k=='tag' then if type(v)=='table' then skip[v], k = 1, rawset(create(Valid(v[1])), 'parent', HTML) Element._add(spec(parent(k.nodes, k, table.insert(nodes, k)), Element), v) if k.selfClosing then k.nodes = nil else spec[k.nodes], parent[k.nodes] = nil end--free memory/reduce clutter; parent ref will auto-unset when k.nodes is nil if not k.tagName then k.styles, k.attributes = nil end else table.insert(nodes, create(v)) end elseif mwFunc[k] then if k=='done' and tonumber(v)~=v and v[1] and tonumber(v[1])==v[1] then skip[v] = 1 end MBmix(outFuncs[k](nodes, skip[v] and v[1]).nodes, v) elseif v[1] or v[2] then k = MBi[k](nodes, unpack(v, 1, rawset(skip, v, k=='_B' and 1 or 2)[v])) Element._add(getmetatable(k) and rawget(k, 'nodes') or k, v)--if k is not a table, then v should not contain any extra keys or this may error. else MBi[k](nodes, v) end--k probably == '_G' or '_R' elseif mwFunc[k] then if type(v)~='table' or rawget(v, 'nodes') then mwFunc[k](HTML, v) else local css = k=='css' for x, y in MBpairs(v, true) do (y and y~=true and mwFunc[k] or noOp)(HTML, css and x:gsub('_', '-') or x, y) end--iterate non-numbers first for _, y in MBpairs(v, nil) do (y and y~=true and mwFunc[k] or noOp)(HTML, y) end--don't bother with gsub since text must be quoted anyhow end elseif rawget(Element, k) or rawget(MBi, k) then if tonumber(v)==v or v[1]==nil or getmetatable(v) then (Element[k] or MBi[k])(nodes, v)--v is probably string-able object, or a table to be handled by :_all else (Element[k] or MBi[k])(nodes, unpack(v, 1, table.maxn(v))) end--v is definately a table else mwFunc.css(HTML, k:gsub('_', '-', 1), tostring(v)) end--oddly enough, :_add clocked its fastest runtime after adding auto-gsub as a feature skip[v] = nil end end return nodes end } local tempMeta = {mode='v', copy={styles=true,attributes=true}} function tempMeta.__index(t, i) return tempMeta.copy[i] and rawset(t, i, MBi._cc(false, 0, t.orig[i]))[i] or t.orig[i] end rawkey[setmetatable(Element, {__index = outFuncs, __concat=function(Element, v) return setmetatable({nodes=spec({}, Element),orig=parent[v]}, tempMeta) end})] = math.huge end function MBi:getHTML(...) lastBuffer = self if ... then if select('#', ...)==1 then return not rawkey[s] and tostring(...):match'^_' and BHi[...] and BHi[...](lastHTML) or lastHTML(...) else return assert(BHi[...], ('" %s " does not match any mw.html or Buffer-mw.html function'):format(tostring(...)))(lastHTML, select(2, ...)) end end return lastHTML end function MBi:_html(...) return MBi._(self, lastHTML, select(spec[self]==Element and select('#', ...)==0 and 1 or 2, true, ...)) end return init(...) end function _inHTML(self, ...) local HTML = init(nil, ...) if HTML.selfClosing and spec[self]==Element then self.last_concat = table.insert(self, HTML) return self end lastBuffer, lastHTML = self, setmetatable(parent(HTML, self), buffHTML)--set after 'args' table processed by :_add return HTML end end local _var, unbuild do local prev, rebuild local function init(...)--init replaced before return local function pick(b, v) return b and table.insert(b, v) or v end local function c(a, num) return rawset(a.a or a, 0, a[0] and a[0] + a.c or num and a[1] or a[1]:byte())[0] end local same, build, alt = {__tostring = function(a, b) return a.a[0] and pick(b, a.a.string and string.char(a.a[0]) or a.a.table and a.a[1][a.a[0]] or a.a[0]) end}, { __index = {c = 1}, __tostring = function(t) return t:_build() end, table = function(a, b) local i = next(a[1], a[0]) or a[0]==#a[1] and next(a[1]) return pick(b, rawset(a.a or a, 0, i)[1][i]) end,--change rate (a.c) ignored since users control the table's contents number = function(a, b) return pick(b, c(a, true)) end, string = function(a, b) return pick(b, string.char(c(a))) end }, {__index = function(a, i) return a.a[i] end, __tostring = function(a, b) return (rawget(a, 0) and a[0]==tostring(a[0]) and rawset(a, 0, a[0]:byte()) or a).a._build(a, b) end} local function shift(t, c) t[0] = t[0] and t[0] + c or t:_build() and t[0] - t.c + c if t.table then t[0] = (t[0] - 1) % #t[1] + 1 end end function rebuild(...) local v, c = ... if v or select('#', ...)==0 then if v and not c then return prev end local meta, c = select(v and 1 or 3, alt, c, same, 0) return setmetatable({a = prev, _build = meta.__tostring, c = c}, meta) elseif v==nil then--no-op elseif c then shift(prev, c)--v == false else prev:_build() end end init, noCache = function(v, c) prev = setmetatable({v, c = c, _build = build[type(v)] or v, [type(v)] = true, alt = {}}, build) return prev end, true return init(...) end function unbuild(sep) for k, v in MBpairs(sep, nil) do k = getmetatable(v) if k and (k==build or k==alt) then shift(v.a or v, -v.c) end end end function _var(self, ...) local obj if ... and ...~=true then obj = init(...) elseif prev then if ...~=false then obj = rebuild(...) else rebuild(...) end end return obj and MBi._(self, obj, nil, true) or self end end local lib; MBi = setmetatable({stream = _stream, _inHTML = _inHTML, _var = _var, _ = function(self, v, ...) local at, raw = select(select('#', ...)==1 and ...==true and 1 or 2, nil, ...) if raw then rawkey[self] = math.huge else v = Valid(v) end if v or raw then if at or rawkey[self] then raw = #self end--if length increases by more than one after table.insert, then set rawkey[self] = math.huge; rawkey[self] may be equal to a previous 'at' at, self.last_concat = at and (tonumber(at)~=at and raw + at or at) table.insert(self, select(at and 1 or 2, at, v)) if at and at < 0 or raw and #self - raw > 1 then rawkey[self] = math.huge elseif at and #self==raw then rawkey[self] = rawkey[self] and math.max(rawkey[self], at) or at end end--above line looks bizarre because one table.insert op may make length jump from 0 to 8: local wtf={[2]=2,[4]=4,[8]=8}mw.log(#wtf,table.insert(wtf,1),#wtf) return self end, _nil = function(self, at, ...) if ...~=true and ...~=false then--faster than type(...) ~= 'boolean' if not at or at=='0' then self[#self] = ... if ... then rawkey[self] = math.huge end else local n, v = tonumber(at), ... if n~=at then if n then n = #self + at elseif at~=true and select('#', ...)==0 then v, n = at, #self end end if n then if v==nil and n > 0 then table.remove(self, n) else self[math.floor(n)], rawkey[self] = v, math.huge end--floor position for consistency with Table library end end self.last_concat = nil end return self end, _all = function(self, t, valKey) for k, v in MBpairs(t) do MBmix(self, v, valKey) end for k, v in valKey and MBpairs(t, false) or noOp, t do if tonumber(v) then MBi._(self, k, v)--self not always a buffer elseif rawget(MBi, k) and v and v~=true then if v[1]==nil or getmetatable(v) then MBi[k](self, v) else MBi[k](self, unpack(v, 1, table.maxn(v))) end end end return self end, _str = function(t, ...) local n = select('#', ...) if n > 1 then local k, ops, seps, r = 2, MBselect(n, ...) r = MB(t(seps[1])) while parent[t] and ops > 1 and r:_(parent[t](seps[k]), 1) do t, k, ops = parent[t], k + 1, ops - 1 end return table.concat(r, seps[k] or nil) end return MB.__call(t, ...) end, _in = function (self, ...) return parent(MB(...), self) end, _out = function(t, ...) if ...==0 then return parent(t, parent[t], MBi._cc(t, t, MB.__call(t, (select(2, ...))), getmetatable(t))) end--love how :_cc needed nothing new to implement this *self pat on back* local n = select('#', ...) if n > 1 then local k, ops, seps = 1, MBselect(n, ...) while parent[t] and ops > 0 do t, k, ops = parent[t]:_(t(seps[k])), k + 1, ops - 1 end elseif parent[t] then return parent[t]:_(t(...)) end return t end, _cc = function(self, clear, copy, meta) if clear then if rawequal(clear, copy) then return self, spec[MBi._cc] and setmetatable(spec[MBi._cc], MB)--rawequal to avoid re-string via __eq in case both are different Buffer objects elseif copy==true then copy = self end if clear~=0 then assert(type(clear)=='table', debug.traceback('Buffer:_cc can only "clear" tables. Did you forget to call with a colon?', 2))--errors can be hard to trace without this for k in self and next or noOp, clear do rawset(clear, k, nil) end else return MBi._cc(false, {unpack(copy)}, copy) end--copy length w/o empty strings; recursion to avoid self = false causing garbage collection (non-weak child may exist) if self==false or copy and type(copy)=='table' then--self==false means copy is a table (saves a type op for recursive calls) meta = meta or getmetatable(copy) if self and #copy > 1 then--preserves length with empty strings; developed from studying http://www.lua.org/source/5.1/ltable.c.html local n, null, i, e = #copy, {}, math.ldexp(2, select(2, math.frexp(#copy)) - 2) e, spec[MBi._cc], parent[null] = i - 1, null, clear for k = 1, e do table.insert(clear, false) end while i<=n do table.insert(clear, i, '') i, null[i] = i + math.ldexp(2, select(2, math.frexp(n - i)) - 2), '' end for k = 1, e do rawset(clear, k, nil) end end for k, v in next, copy do rawset(clear, k, type(v)=='table' and MBi._cc(false, 0, v) or v) end elseif copy then rawset(clear, 1, (Valid(copy))) end rawkey[setmetatable(clear, meta)], parent[clear] = rawkey[copy], parent[copy] end return self and rawset(self, 'last_concat', nil) or clear end, _parent = function(self, ...) return parent[self] and MBi._(self, parent[self]:_str(...)) or self end, getParent = function(self, ...) return isMBfunc(parent[self] or parent[parent(self, setmetatable({}, MB))], ...) end, killParent = function(self, ...) return parent[self] and isMBfunc(parent[self], ...) and parent(self) or self end, _build = function(self, t) table.insert(t, self()) end,--for compatibility with mw.html:node() last_concat = false--prevent library check }, {__index = function(t, i)--import string, mw.text, and mw.ustring libraries on an as-needed basis local func = string[i] or mw.text[i] or mw.ustring[i] or type(i)=='string' and mw.ustring[i:match'^u(.+)'] if func then lib = lib or function (s, f, ...) if parent[s] and next(s)==nil then return s:_((f(tostring(parent[Element and (spec[s]==Element and s:allDone() or spec[parent[s]]==Element and parent[s]) or s]), ...))) end return f(tostring(s), ...)--not using ternary/logical operators here to allow multiple return values end return rawset(t, i, i:match'^u?gsub' and function(self, p, r, ...)return lib(self, func, p, r or '', ...)end--Why are ugsub/gsub special? because empty strings are against my religion! or function(self, ...)return lib(self, func, ...)end)[i] end end}) end function MBmix(t, v, ...) return v and ((type(v)~='table' or getmetatable(v)) and MBi._(t, v) or (select('#', ...)==0 and spec[t] and spec[t]._add or MBi._all)(t, v, ...)) or t end--:_all always passes two args local _G, new_G = _G--localize _G for console testing (console _G ~= module _G) return setmetatable({__index = function(t, i) return spec[t] and spec[t][i] or MBi[i] end, __call = function(t, ...) local rawsep, sep, i, j, raw = noCache and rawkey[...] and ..., ... if i or j or rawsep or Valid(sep) then raw, sep, i, j = rawkey[spec[t]] or rawkey[t], rawsep or Valid(sep), i and (i~=tonumber(i) and i + #t or i), j and (j~=tonumber(j) and j + #t or j) if rawsep or raw and (raw>=(j or #t) or i < 1) then raw, i, j = {}, i and math.floor(i), j and math.floor(j)--floor for consistency with table.concat(t, sep, i, j), which ignores decimals raw.lc, t.last_concat = t.last_concat--temporarily unset last_concat to prevent disqualification from mapless iteration for k, v in MBpairs(t) do if raw[1] or not i or k>=i then if j and k > j then break end if raw.s then raw.s = table.insert(raw, tostring(sep)) end--if sep contains v and v is a Buffer-variable, sep must be strung before v k = Valid(v) if k then raw.s = rawsep or sep and raw[1] and table.insert(raw, sep) table.insert(raw, k) end end end if rawsep and not raw.s then raw[#raw] = unbuild(sep) end--unbuild rawsep if final index in t was invalid t.last_concat = raw.lc return table.concat(raw) end return table.concat(t, sep, i and math.max(i, 1), j and math.min(j, #t)) end return MB.__tostring(t) end, __tostring = function(t) if t.last_concat then return t.last_concat end local r = rawkey[spec[t]] or rawkey[t] r = table.concat(r and r>=#t and MBi._all({}, t) or t) return (noCache or rawset(t, 'last_concat', r)) and r end, __concat = function(a, b) if buffHTML then for k = 1, 2 do local v = select(k, a, b)--faster than for k, v in pairs{a, b} do if v and spec[v] and spec[v]==Element then if parent[v].selfClosing then if rawequal(a, b) then return (not noCache or parent[v].tagName) and v:_str(0):rep(2) or v:_str(0)..v:_str(0) end--rawequal avoids premature tostring of Buffer:_var objects; b, a = select(k, b, parent[v], a) else local temp = Element .. v --helper method; returns a mirror of parent[v] MBmix(MBmix(parent(temp.nodes, temp), a), k==1 and spec[b]==Element and parent[b] or b) return buffHTML.__tostring(setmetatable(temp, {__index=parent[v], __mode='v'}))--switch from tempMeta to avoid MBi._cc op of styles/attributes end end end end return table.concat(MBmix(MBmix({}, a), b)) end, __pairs = MBpairs, __ipairs = MBpairs, __eq = function(a, b) return tostring(a)==tostring(b) end--avoid a==b in this module; use rawequal(a,b) when they may be different Buffers (premature tostring waste ops and is bad for Buffer:_var) }, {__tostring = function()return''end, __call = function(self, ...) MB = MB or self if new_G then if ... and _G and ...==_G then new_G = ... end elseif ... and (...==_G or type(...)=='table' and (...)._G==...) then local Nil, mG = {}, (...):getmetatable() or (...):setmetatable{}:getmetatable() new_G, _G, gfuncs = ..., ..., {--gfuncs stored for Buffer:_inHTML; new_G is a is a Module:Buffer local declared just before the final return statement. _G = function(self, i, ...) local X, save = rawget(new_G, i), select('#', ...)==0 and self or ... if i and i~=true and not (X and save and rawequal(X, save)) and rawset(new_G, i, save) and (X~=nil or save==nil and new_G[i]~=nil) then--rawequal in case X is another buffer local mG = getmetatable(new_G) or {__call=mG.__call} if mG.__index then pcall(rawset, mG.__index, i, X) else mG.__index = setmetatable(new_G, mG) and {[i] = X} end end return self, ...--avoiding __eq with rawequal(self,save) is overkill since buffers can self-save without being passed as save end, _R = function(self, i, v, m) if i~='new_G' then if i and i~=true then rawset(new_G, i , v) end elseif not v or v==true or v._G~=_G then new_G = setmetatable(v~=true and v or {}, {__call = mG.__call, __index = v~=true and m~=true and (m or new_G) or nil}) else new_G, (not m and (m~=nil or v==new_G) and Nil or getmetatable(v)).__index = v, m~=true and (m or new_G) or nil end--setting Nil.__index is noOp return self end, _2 = function(self, ...) if new_G[...]~=nil then return new_G[...] end--higher priority so Buffer:_G('new_G', ...) can prevent an overwrite if ...=='new_G' then return rawset((select('#', ...)~=1 and MBi._R(new_G, ...) or new_G), '_G', _G) end return select(select('#', ...)==1 and 1 or 2, self:_G(...))--return only one value; 'return select(2, self:_G(...)) or self' doesn't work for returning nil end, _B = function(self, v) return v or v==nil and Nil end } for k, v in next, gfuncs do MBi[k] = v end setmetatable(Nil,{__concat=MB.__concat,__newindex=noOp,__call=noOp,__tostring=noOp,__metatable=MB,__index=setmetatable({_B=MBi._B,_=function()return Nil end,last_concat=''}, {__index=function(t,i)return (MBi[i] or i and not tonumber(i)) and t._ or nil end})}) function mG.__call(G, k, ...) return (k._G or G.type(k)=='table') and (G.select('#', ...)~=1 and G.rawset(k, ...) or G:rawset(..., k) and k) or G:rawset(k, (...)) and ... end end local new = setmetatable({}, self) if ... and (...)==new_G then return select(2, ...) and MBmix(new:_G((select(2, ...))), select(3, ...)) or new end return ... and MBi._(new, ...) or new end, __index = function(t, i) MB = MB or t return MBi[i] and function(...) return MBi[i](setmetatable({}, t), select(...==t and 2 or 1,...)) end end }) a531c35e1366f84755b75caab181cd45e5330bbe Module:Transclusion count/data/S 828 759 1694 1693 2023-10-01T10:29:26Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/S]] Scribunto text/plain return { ["S"] = 3500, ["S-aca"] = 6400, ["S-ach"] = 16000, ["S-aft"] = 218000, ["S-aft/check"] = 218000, ["S-aft/filter"] = 218000, ["S-bef"] = 223000, ["S-bef/check"] = 223000, ["S-bef/filter"] = 223000, ["S-break"] = 5000, ["S-civ"] = 2600, ["S-dip"] = 5300, ["S-end"] = 246000, ["S-gov"] = 7900, ["S-hon"] = 3800, ["S-hou"] = 9500, ["S-inc"] = 13000, ["S-legal"] = 9400, ["S-mil"] = 12000, ["S-new"] = 16000, ["S-non"] = 10000, ["S-npo"] = 4100, ["S-off"] = 41000, ["S-par"] = 50000, ["S-par/en"] = 3200, ["S-par/gb"] = 3300, ["S-par/uk"] = 12000, ["S-par/us-hs"] = 11000, ["S-par/us-sen"] = 2000, ["S-ppo"] = 13000, ["S-prec"] = 3200, ["S-rail"] = 6400, ["S-rail-start"] = 6200, ["S-rail/lines"] = 6400, ["S-reg"] = 20000, ["S-rel"] = 18000, ["S-roy"] = 2700, ["S-s"] = 3600, ["S-sports"] = 10000, ["S-start"] = 240000, ["S-ttl"] = 230000, ["S-ttl/check"] = 230000, ["S-vac"] = 6500, ["SCO"] = 3700, ["SDcat"] = 5460000, ["SECOND"] = 2300, ["SGP"] = 2600, ["SIA"] = 2600, ["SIPA"] = 2600, ["SLO"] = 4300, ["SMS"] = 7200, ["SMU"] = 2100, ["SPI_archive_notice"] = 71000, ["SPIarchive_notice"] = 71000, ["SPIcat"] = 3800, ["SPIclose"] = 3300, ["SPIpriorcases"] = 65000, ["SR/Olympics_profile"] = 3100, ["SRB"] = 3700, ["SS"] = 20000, ["SSPa"] = 2600, ["STN"] = 13000, ["SUBJECTSPACE_formatted"] = 42000, ["SUI"] = 8500, ["SVG"] = 3200, ["SVG-Logo"] = 17000, ["SVG-Res"] = 15000, ["SVG-logo"] = 2900, ["SVG_logo"] = 2000, ["SVK"] = 5900, ["SVN"] = 5200, ["SWE"] = 12000, ["Sandbox_other"] = 236000, ["Saturday"] = 2700, ["Saved_book"] = 52000, ["Sc"] = 3300, ["Scholia"] = 2700, ["School_block"] = 13000, ["School_disambiguation"] = 3400, ["Schoolblock"] = 6700, ["Schooldis"] = 2700, ["Schoolip"] = 10000, ["Scientist_icon"] = 15000, ["Scientist_icon2"] = 15000, ["Sclass"] = 31000, ["Sclass2"] = 10000, ["Screen_reader-only"] = 61000, ["Screen_reader-only/styles.css"] = 61000, ["Script"] = 5900, ["Script/Arabic"] = 2200, ["Script/Hebrew"] = 4700, ["Script/Nastaliq"] = 14000, ["Script/doc/id-unk"] = 3000, ["Script/doc/id-unk/core"] = 3000, ["Script/doc/id-unk/is-iso-alpha4"] = 2800, ["Script/doc/id-unk/name-to-alpha4"] = 3000, ["Script/styles.css"] = 3100, ["Script/styles_arabic.css"] = 2200, ["Script/styles_hebrew.css"] = 4700, ["Sdash"] = 3100, ["Search_box"] = 52000, ["Search_link"] = 16000, ["Section_link"] = 57000, ["Section_sizes"] = 2500, ["See"] = 10000, ["See_also"] = 184000, ["Seealso"] = 6600, ["Select_skin"] = 4300, ["Selected_article"] = 2700, ["Selected_picture"] = 2500, ["Self"] = 48000, ["Self-published_inline"] = 3900, ["Self-published_source"] = 6600, ["Self-reference"] = 2400, ["Self-reference_tool"] = 5400, ["Self/migration"] = 33000, ["Self2"] = 2100, ["Sent_off"] = 13000, ["Sentoff"] = 4400, ["Separated_entries"] = 181000, ["Sequence"] = 3500, ["Serial_killer_opentask"] = 3600, ["Series_overview"] = 7800, ["Serif"] = 2800, ["Set_category"] = 35000, ["Set_index_article"] = 5800, ["Sets_taxobox_colour"] = 90000, ["Sfn"] = 155000, ["SfnRef"] = 133000, ["Sfnm"] = 3600, ["Sfnp"] = 18000, ["Sfnref"] = 11000, ["Sfrac"] = 4200, ["Sfrac/styles.css"] = 4200, ["SharedIPEDU"] = 3200, ["Shared_IP"] = 11000, ["Shared_IP_advice"] = 16000, ["Shared_IP_corp"] = 5100, ["Shared_IP_edu"] = 131000, ["Shared_IP_gov"] = 3000, ["Sharedip"] = 3300, ["Sharedipedu"] = 3600, ["Sherdog"] = 2600, ["Ship"] = 85000, ["Ship/maintenancecategory"] = 85000, ["Ship_index"] = 7000, ["Shipboxflag"] = 20000, ["Shipboxflag/core"] = 20000, ["Shipwrecks_navbox_footer"] = 10000, ["Shipwrecks_navbox_footer/link"] = 10000, ["Short_description"] = 5570000, ["Short_description/lowercasecheck"] = 5570000, ["Short_pages_monitor"] = 10000, ["Short_pages_monitor/maximum_length"] = 10000, ["Shortcut"] = 20000, ["Should_be_SVG"] = 9000, ["Show_button"] = 2150000, ["Sic"] = 33000, ["Sica"] = 3000, ["Side_box"] = 1130000, ["Sidebar"] = 257000, ["Sidebar_games_events"] = 37000, ["Sidebar_person"] = 2300, ["Sidebar_person/styles.css"] = 2300, ["Sidebar_with_collapsible_lists"] = 93000, ["Sigfig"] = 3800, ["Significant_figures"] = 5100, ["Significant_figures/rnd"] = 4700, ["Signpost-subscription"] = 2100, ["Sildb_prim"] = 2000, ["Silver02"] = 16000, ["Silver2"] = 48000, ["Silver_medal"] = 5600, ["Similar_names"] = 2200, ["Single+double"] = 6900, ["Single+space"] = 14000, ["Single-innings_cricket_match"] = 3200, ["Single_chart"] = 37000, ["Single_chart/chartnote"] = 37000, ["Single_namespace"] = 203000, ["Singlechart"] = 20000, ["Singles"] = 41000, ["Sister-inline"] = 189000, ["Sister_project"] = 1040000, ["Sister_project_links"] = 11000, ["Sisterlinks"] = 2600, ["Skip_to_talk"] = 12000, ["Skip_to_talk/styles.css"] = 12000, ["Sky"] = 2700, ["Sky/styles.css"] = 2700, ["Slink"] = 14000, ["Small"] = 601000, ["Small_Solar_System_bodies"] = 3600, ["Smallcaps"] = 17000, ["Smallcaps/styles.css"] = 17000, ["Smallcaps_all"] = 3400, ["Smalldiv"] = 22000, ["Smaller"] = 73000, ["Smallsup"] = 21000, ["Smiley"] = 44000, ["Snd"] = 167000, ["Snds"] = 6300, ["Soccer_icon"] = 130000, ["Soccer_icon2"] = 130000, ["Soccer_icon4"] = 5100, ["Soccerbase"] = 13000, ["Soccerbase_season"] = 6800, ["Soccerway"] = 76000, ["Sock"] = 47000, ["Sock_list"] = 4300, ["Sockcat"] = 2000, ["Sockmaster"] = 9400, ["Sockpuppet"] = 239000, ["Sockpuppet/altmaster"] = 2100, ["Sockpuppet/categorise"] = 239000, ["SockpuppetCheckuser"] = 5500, ["Sockpuppet_category"] = 46000, ["Sockpuppet_category/confirmed"] = 24000, ["Sockpuppet_category/suspected"] = 22000, ["Sockpuppetcheckuser"] = 3600, ["Sockpuppeteer"] = 25000, ["Soft_redirect"] = 6100, ["Soft_redirect_protection"] = 8200, ["Softredirect"] = 3200, ["Solar_luminosity"] = 4500, ["Solar_mass"] = 5300, ["Solar_radius"] = 4300, ["Soldier_icon"] = 3900, ["Soldier_icon2"] = 3900, ["Song"] = 8300, ["Songs"] = 19000, ["Songs_category"] = 8400, ["Songs_category/core"] = 8400, ["Sort"] = 117000, ["Sortname"] = 53000, ["Source-attribution"] = 28000, ["Source_check"] = 964000, ["Sourcecheck"] = 964000, ["Sources"] = 2500, ["South_America_topic"] = 2500, ["Sp"] = 172000, ["Space"] = 55000, ["Space+double"] = 18000, ["Space+single"] = 13000, ["Spaced_en_dash"] = 199000, ["Spaced_en_dash_space"] = 6400, ["Spaced_ndash"] = 23000, ["Spaces"] = 2710000, ["Spain_metadata_Wikidata"] = 7500, ["Spamlink"] = 13000, ["Species_Latin_name_abbreviation_disambiguation"] = 2200, ["Species_list"] = 15000, ["Speciesbox"] = 292000, ["Speciesbox/getGenus"] = 292000, ["Speciesbox/getSpecies"] = 292000, ["Speciesbox/name"] = 292000, ["Speciesbox/parameterCheck"] = 292000, ["Speciesbox/trim"] = 292000, ["Specieslist"] = 5600, ["Split_article"] = 3600, ["Spnd"] = 4100, ["Spoken_Wikipedia"] = 2200, ["Sport_icon"] = 14000, ["Sport_icon2"] = 15000, ["SportsYearCatUSstate"] = 6500, ["SportsYearCatUSstate/core"] = 6500, ["Sports_links"] = 66000, ["Sports_reference"] = 7300, ["Squad_maintenance"] = 3500, ["Sronly"] = 59000, ["Srt"] = 5300, ["Stack"] = 25000, ["Stack/styles.css"] = 34000, ["Stack_begin"] = 9000, ["Stack_end"] = 9000, ["StaleIP"] = 3200, ["Standings_table_end"] = 54000, ["Standings_table_entry"] = 54000, ["Standings_table_entry/record"] = 54000, ["Standings_table_start"] = 54000, ["Standings_table_start/colheader"] = 54000, ["Standings_table_start/colspan"] = 54000, ["Standings_table_start/styles.css"] = 54000, ["Starbox_astrometry"] = 5100, ["Starbox_begin"] = 5300, ["Starbox_catalog"] = 5200, ["Starbox_character"] = 5100, ["Starbox_detail"] = 5000, ["Starbox_end"] = 5300, ["Starbox_image"] = 2900, ["Starbox_observe"] = 5100, ["Starbox_reference"] = 5200, ["Start-Class"] = 18000, ["Start-date"] = 3700, ["Start_and_end_dates"] = 3800, ["Start_box"] = 8000, ["Start_date"] = 437000, ["Start_date_and_age"] = 140000, ["Start_date_and_years_ago"] = 6500, ["Start_date_text"] = 3800, ["Start_of_course_timeline"] = 6200, ["Start_of_course_week"] = 6300, ["Start_tab"] = 5000, ["Startflatlist"] = 144000, ["Static_IP"] = 6000, ["Station"] = 7700, ["Station_link"] = 16000, ["Stdinchicite"] = 11000, ["Steady"] = 14000, ["Stl"] = 14000, ["Stn"] = 7300, ["Stn_art_lnk"] = 2000, ["Stnlnk"] = 30000, ["Storm_colour"] = 5200, ["Storm_path"] = 2100, ["StoryTeleplay"] = 3500, ["Str_endswith"] = 201000, ["Str_find"] = 115000, ["Str_index"] = 13000, ["Str_left"] = 909000, ["Str_len"] = 19000, ["Str_letter"] = 175000, ["Str_letter/trim"] = 20000, ["Str_number"] = 8000, ["Str_number/trim"] = 170000, ["Str_rep"] = 313000, ["Str_trim"] = 5300, ["Str_≠_len"] = 35000, ["Str_≥_len"] = 73000, ["Strfind_short"] = 226000, ["Strikethrough"] = 16000, ["String_split"] = 2800, ["Strip_tags"] = 38000, ["Strong"] = 862000, ["Structurae"] = 2100, ["Stub-Class"] = 17000, ["Stub_Category"] = 13000, ["Stub_category"] = 18000, ["Stub_documentation"] = 36000, ["Student_editor"] = 27000, ["Student_sandbox"] = 4500, ["Student_table_row"] = 5300, ["Students_table"] = 5300, ["Su"] = 9800, ["Su-census1989"] = 4500, ["Sub"] = 4100, ["Subinfobox_bodystyle"] = 36000, ["Subject_bar"] = 19000, ["Suboff"] = 6200, ["Subon"] = 6300, ["Subpage_other"] = 291000, ["Subscription"] = 4200, ["Subscription_required"] = 34000, ["Subsidebar_bodystyle"] = 6400, ["Subst_only"] = 4600, ["Substituted_comment"] = 19000, ["Succession_box"] = 118000, ["Succession_box/check"] = 118000, ["Succession_links"] = 164000, ["Summer_Olympics_by_year_category_navigation"] = 2400, ["Summer_Olympics_by_year_category_navigation/core"] = 2400, ["Sunday"] = 2700, ["Sup"] = 59000, ["Suppress_categories"] = 5300, ["Surname"] = 66000, ["Swiss_populations"] = 2400, ["Swiss_populations_NC"] = 3000, ["Swiss_populations_YM"] = 2300, ["Swiss_populations_ref"] = 2400, ["Switcher"] = 3000, ["Module:SDcat"] = 5460000, ["Module:SPI_archive_notice"] = 33000, ["Module:Science_redirect"] = 256000, ["Module:Science_redirect/conf"] = 256000, ["Module:Section_link"] = 57000, ["Module:Section_sizes"] = 3600, ["Module:See_also_if_exists"] = 73000, ["Module:Separated_entries"] = 2300000, ["Module:Series_overview"] = 7900, ["Module:Settlement_short_description"] = 712000, ["Module:Shortcut"] = 24000, ["Module:Shortcut/config"] = 24000, ["Module:Shortcut/styles.css"] = 24000, ["Module:Side_box"] = 1160000, ["Module:Side_box/styles.css"] = 1160000, ["Module:Sidebar"] = 339000, ["Module:Sidebar/configuration"] = 339000, ["Module:Sidebar/styles.css"] = 345000, ["Module:Sidebar_games_events"] = 37000, ["Module:Sidebar_games_events/styles.css"] = 37000, ["Module:Singles"] = 41000, ["Module:Sister_project_links"] = 14000, ["Module:Sister_project_links/bar/styles.css"] = 3500, ["Module:Sister_project_links/styles.css"] = 11000, ["Module:Sock_list"] = 4300, ["Module:Sort_title"] = 18000, ["Module:Sortkey"] = 199000, ["Module:Split_article"] = 3600, ["Module:Spoken_Wikipedia"] = 2200, ["Module:Spoken_Wikipedia/configuration"] = 2200, ["Module:Spoken_Wikipedia/styles.css"] = 2200, ["Module:Sports_career"] = 19000, ["Module:Sports_color"] = 68000, ["Module:Sports_color/baseball"] = 34000, ["Module:Sports_color/basketball"] = 22000, ["Module:Sports_color/ice_hockey"] = 3100, ["Module:Sports_rbr_table"] = 12000, ["Module:Sports_rbr_table/styles.css"] = 12000, ["Module:Sports_reference"] = 7300, ["Module:Sports_results"] = 15000, ["Module:Sports_results/styles.css"] = 9500, ["Module:Sports_table"] = 58000, ["Module:Sports_table/WDL"] = 51000, ["Module:Sports_table/WDL_OT"] = 2700, ["Module:Sports_table/WL"] = 4000, ["Module:Sports_table/WL_OT"] = 2000, ["Module:Sports_table/argcheck"] = 58000, ["Module:Sports_table/styles.css"] = 58000, ["Module:Sports_table/sub"] = 58000, ["Module:Sports_table/totalscheck"] = 42000, ["Module:Stock_tickers/NYSE"] = 2100, ["Module:Storm_categories"] = 5200, ["Module:Storm_categories/categories"] = 5200, ["Module:Storm_categories/colors"] = 5200, ["Module:Storm_categories/icons"] = 5200, ["Module:String"] = 11300000, ["Module:String2"] = 2290000, ["Module:Su"] = 12000, ["Module:Subject_bar"] = 19000, ["Module:Suppress_categories"] = 5300, } abf587d8a0323a9d0aca3263b2ad8df6ad840fd9 Template:Stub/doc 10 760 1696 1695 2023-10-01T10:29:27Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Stub/doc]] wikitext text/x-wiki {{documentation subpage}} <!-- Intentionally blank: interlanguage links for [[Template:Stub]] are now held at [[d:Special:ItemByTitle/enwiki/Template:Stub]]. --> ===TemplateData=== {{TemplateData header}} <templatedata> { "description": "Standard template used for sorting articles into stubs.", "params": {}, "format": "inline" } </templatedata> 4e08e86ecdef137b8a8a26bf6766217f8fc8e0ce Template:Stub documentation 10 761 1698 1697 2023-10-01T10:29:28Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Stub_documentation]] wikitext text/x-wiki {{#ifeq:{{#invoke:High-use|num|x}}|many||{{High-use}}}} This is a '''stub template'''. A brief explanation of these templates follows; for full details please consult [[Wikipedia:Stub]]. === What is a stub? === A stub is an article containing only a few sentences of text which is too short to provide encyclopedic coverage of a subject. === How is a stub identified? === * If possible, try to find the most appropriate stub template for the article. A full list can be found at [[Wikipedia:WikiProject Stub sorting/List of stubs]]. * More than one stub template may be used, if necessary, though no more than four should be used on any article. * Place a stub template ''[[Wikipedia:Manual of Style/Layout#Order of article elements|at the very end]]'' of the article, after the "External links" section, any navigation templates, and the category tags. As usual, templates are added by including their name inside double braces, e.g. <code><nowiki>{{stub}}</nowiki></code>. === Further information === Further information can be found at: * [[Wikipedia:Stub]] * [[Wikipedia:WikiProject Stub sorting]] New stub templates and categories (collectively "stub types") should not be created without prior proposal at [[Wikipedia:WikiProject Stub sorting/Proposals]]. This allows for the proper coordination of all stub types across Wikipedia, and for the checking of any new stub type for possible problems prior to its creation. === See also === * [[Template:Empty section]] – To flag an empty section as a '''stub section''' * [[Template:Expand section]] – To flag sections selectively as incomplete * [[Template:Data missing]] – To flag missing information or other data * [[Wikipedia:Content assessment]]<!-- --><noinclude> {{documentation}} [[Category:Template documentation]] </noinclude> 5e5f29f413afaf1f92838315049bbcf2056e4cdd Template:SDcat 10 762 1700 1699 2023-10-01T10:34:49Z Führerredux 2 1 revision imported from [[:wikipedia:Template:SDcat]] wikitext text/x-wiki <includeonly>{{#invoke:SDcat |setCat}}</includeonly><noinclude> {{documentation}} </noinclude> 8c6e8783ddb0dc699d6fb60370db97b73725b9a6 Template:High risk 10 763 1702 1701 2023-10-01T10:35:04Z Führerredux 2 1 revision imported from [[:wikipedia:Template:High_risk]] wikitext text/x-wiki #REDIRECT [[Template:High-use]] {{Redirect category shell| {{R avoided double redirect|1=Template:High-risk}} {{R from alternative hyphenation|'''{{-r|Template:High-risk}}'''}}{{R from template shortcut}} }} ce1776d54ed01e65417b2a4ed18778e32694aa48 Template:SDcat/doc 10 764 1704 1703 2023-10-01T10:35:04Z Führerredux 2 1 revision imported from [[:wikipedia:Template:SDcat/doc]] wikitext text/x-wiki {{Documentation subpage}} {{High risk}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{lua|Module:SDcat}} This template is merely a wrapper for [[Module:SDcat]], which adds tracking categories to articles depending on whether their [[WP:short description|short description]] matches the associated description field on Wikidata. Complete documentation is available at [[Module:SDcat]]. == Usage == <code><nowiki>{{SDcat |sd={{{shortdescription|}}} }}</nowiki></code> === For testing === <code><nowiki>{{SDcat |sd=short description |qid=Wikidata entity ID |lp=link prefix (usually ":") }}</nowiki></code> <includeonly>{{sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:WikiProject Short descriptions]] }}</includeonly> 2a2e572b915cc316e39d344979cbca621b80c828 Module:SDcat 828 765 1706 1705 2023-10-01T10:35:22Z Führerredux 2 1 revision imported from [[:wikipedia:Module:SDcat]] Scribunto text/plain --[[ SDcat Module to check whether local short description matches that on Wikidata --]] local p = {} ------------------------------------------------------------------------------- --[[ setCat has the qid of a Wikidata entity passed as |qid= (it defaults to the associated qid of the current article if omitted) and the local short description passed as |sd= It returns a category if there is an associated Wikidata entity. It returns one of the following tracking categories, as appropriate: * Category:Short description matches Wikidata (case-insensitive) * Category:Short description is different from Wikidata * Category:Short description with empty Wikidata description For testing purposes, a link prefix |lp= may be set to ":" to make the categories visible. --]] -- function exported for use in other modules -- (local short description, Wikidata entity-ID, link prefix) p._setCat = function(sdesc, itemID, lp) if not mw.wikibase then return nil end if itemID == "" then itemID = nil end -- Wikidata description field local wdesc = (mw.wikibase.getDescription(itemID) or ""):lower() if wdesc == "" then return "[[" .. lp .. "Category:Short description with empty Wikidata description]]" elseif wdesc == sdesc then return "[[" .. lp .. "Category:Short description matches Wikidata]]" else return "[[" .. lp .. "Category:Short description is different from Wikidata]]" end end -- function exported for call from #invoke p.setCat = function(frame) local args if frame.args.sd then args = frame.args else args = frame:getParent().args end -- local short description local sdesc = mw.text.trim(args.sd or ""):lower() -- Wikidata entity-ID local itemID = mw.text.trim(args.qid or "") -- link prefix, strip quotes local lp = mw.text.trim(args.lp or ""):gsub('"', '') return p._setCat(sdesc, itemID, lp) end return p 6c19ac0f72c79a618eb105808f74701376bb2b38 Module:SDcat/doc 828 766 1708 1707 2023-10-01T10:35:30Z Führerredux 2 1 revision imported from [[:wikipedia:Module:SDcat/doc]] wikitext text/x-wiki <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{High risk}} Module to check whether local short description matches that on Wikidata setCat has the qid of a Wikidata entity passed as |qid= (it defaults to the associated qid of the current article if omitted) and the local short description passed as |sd= It returns a category if there is an associated Wikidata entity. It returns one of the following tracking categories, as appropriate: * Category:Short description matches Wikidata (case-insensitive) * Category:Short description is different from Wikidata * Category:Short description with empty Wikidata description For testing purposes, a link prefix |lp= may be set to ":" to make the categories visible. == Usage == ; From within a template : <code><nowiki>{{SDcat |sd={{{shortdescription|}}} }}</nowiki></code> : or : <code><nowiki>{{#invoke:SDcat |setCat |sd={{{shortdescription|}}} }}</nowiki></code> [[Template:SDcat]] is a wrapper for this module. ; From another module : <code>sdcat = require("Module:SDcat")._setCat</code> : <code>local tracking_cat = sdcat(shortdesc, itemID)</code> === For testing === <code><nowiki>{{#invoke:SDcat |setCat |qid={{get QID|Douglas Adams}}|sd=English author and humorist (1952–2001) |lp=":"}}</nowiki></code> A few examples of tests are at [[Module talk:SDcat]] <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> }}</includeonly> 21f47b1966831d0fef3720fba993cebeffaddb00 Module:Citation/CS1 828 827 1845 1844 2023-10-01T10:38:26Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1]] Scribunto text/plain require ('strict'); --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- each of these counts against the Lua upvalue limit ]] local validation; -- functions in Module:Citation/CS1/Date_validation local utilities; -- functions in Module:Citation/CS1/Utilities local z = {}; -- table of tables in Module:Citation/CS1/Utilities local identifiers; -- functions and tables in Module:Citation/CS1/Identifiers local metadata; -- functions in Module:Citation/CS1/COinS local cfg = {}; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration local whitelist = {}; -- table of tables listing valid template parameter names; defined in Module:Citation/CS1/Whitelist --[[------------------< P A G E S C O P E V A R I A B L E S >--------------- declare variables here that have page-wide scope that are not brought in from other modules; that are created here and used here ]] local added_deprecated_cat; -- Boolean flag so that the category is added only once local added_vanc_errs; -- Boolean flag so we only emit one Vancouver error / category local added_generic_name_errs; -- Boolean flag so we only emit one generic name error / category and stop testing names once an error is encountered local Frame; -- holds the module's frame table local is_preview_mode; -- true when article is in preview mode; false when using 'Preview page with this template' (previewing the module) local is_sandbox; -- true when using sandbox modules to render citation --[[--------------------------< F I R S T _ S E T >------------------------------------------------------------ Locates and returns the first set value in a table of values where the order established in the table, left-to-right (or top-to-bottom), is the order in which the values are evaluated. Returns nil if none are set. This version replaces the original 'for _, val in pairs do' and a similar version that used ipairs. With the pairs version the order of evaluation could not be guaranteed. With the ipairs version, a nil value would terminate the for-loop before it reached the actual end of the list. ]] local function first_set (list, count) local i = 1; while i <= count do -- loop through all items in list if utilities.is_set( list[i] ) then return list[i]; -- return the first set list member end i = i + 1; -- point to next end end --[[--------------------------< A D D _ V A N C _ E R R O R >---------------------------------------------------- Adds a single Vancouver system error message to the template's output regardless of how many error actually exist. To prevent duplication, added_vanc_errs is nil until an error message is emitted. added_vanc_errs is a Boolean declared in page scope variables above ]] local function add_vanc_error (source, position) if added_vanc_errs then return end added_vanc_errs = true; -- note that we've added this category utilities.set_message ('err_vancouver', {source, position}); end --[[--------------------------< I S _ S C H E M E >------------------------------------------------------------ does this thing that purports to be a URI scheme seem to be a valid scheme? The scheme is checked to see if it is in agreement with http://tools.ietf.org/html/std66#section-3.1 which says: Scheme names consist of a sequence of characters beginning with a letter and followed by any combination of letters, digits, plus ("+"), period ("."), or hyphen ("-"). returns true if it does, else false ]] local function is_scheme (scheme) return scheme and scheme:match ('^%a[%a%d%+%.%-]*:'); -- true if scheme is set and matches the pattern end --[=[-------------------------< I S _ D O M A I N _ N A M E >-------------------------------------------------- Does this thing that purports to be a domain name seem to be a valid domain name? Syntax defined here: http://tools.ietf.org/html/rfc1034#section-3.5 BNF defined here: https://tools.ietf.org/html/rfc4234 Single character names are generally reserved; see https://tools.ietf.org/html/draft-ietf-dnsind-iana-dns-01#page-15; see also [[Single-letter second-level domain]] list of TLDs: https://www.iana.org/domains/root/db RFC 952 (modified by RFC 1123) requires the first and last character of a hostname to be a letter or a digit. Between the first and last characters the name may use letters, digits, and the hyphen. Also allowed are IPv4 addresses. IPv6 not supported domain is expected to be stripped of any path so that the last character in the last character of the TLD. tld is two or more alpha characters. Any preceding '//' (from splitting a URL with a scheme) will be stripped here. Perhaps not necessary but retained in case it is necessary for IPv4 dot decimal. There are several tests: the first character of the whole domain name including subdomains must be a letter or a digit internationalized domain name (ASCII characters with .xn-- ASCII Compatible Encoding (ACE) prefix xn-- in the TLD) see https://tools.ietf.org/html/rfc3490 single-letter/digit second-level domains in the .org, .cash, and .today TLDs q, x, and z SL domains in the .com TLD i and q SL domains in the .net TLD single-letter SL domains in the ccTLDs (where the ccTLD is two letters) two-character SL domains in gTLDs (where the gTLD is two or more letters) three-plus-character SL domains in gTLDs (where the gTLD is two or more letters) IPv4 dot-decimal address format; TLD not allowed returns true if domain appears to be a proper name and TLD or IPv4 address, else false ]=] local function is_domain_name (domain) if not domain then return false; -- if not set, abandon end domain = domain:gsub ('^//', ''); -- strip '//' from domain name if present; done here so we only have to do it once if not domain:match ('^[%w]') then -- first character must be letter or digit return false; end if domain:match ('^%a+:') then -- hack to detect things that look like s:Page:Title where Page: is namespace at Wikisource return false; end local patterns = { -- patterns that look like URLs '%f[%w][%w][%w%-]+[%w]%.%a%a+$', -- three or more character hostname.hostname or hostname.tld '%f[%w][%w][%w%-]+[%w]%.xn%-%-[%w]+$', -- internationalized domain name with ACE prefix '%f[%a][qxz]%.com$', -- assigned one character .com hostname (x.com times out 2015-12-10) '%f[%a][iq]%.net$', -- assigned one character .net hostname (q.net registered but not active 2015-12-10) '%f[%w][%w]%.%a%a$', -- one character hostname and ccTLD (2 chars) '%f[%w][%w][%w]%.%a%a+$', -- two character hostname and TLD '^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?', -- IPv4 address } for _, pattern in ipairs (patterns) do -- loop through the patterns list if domain:match (pattern) then return true; -- if a match then we think that this thing that purports to be a URL is a URL end end for _, d in ipairs (cfg.single_letter_2nd_lvl_domains_t) do -- look for single letter second level domain names for these top level domains if domain:match ('%f[%w][%w]%.' .. d) then return true end end return false; -- no matches, we don't know what this thing is end --[[--------------------------< I S _ U R L >------------------------------------------------------------------ returns true if the scheme and domain parts of a URL appear to be a valid URL; else false. This function is the last step in the validation process. This function is separate because there are cases that are not covered by split_url(), for example is_parameter_ext_wikilink() which is looking for bracketted external wikilinks. ]] local function is_url (scheme, domain) if utilities.is_set (scheme) then -- if scheme is set check it and domain return is_scheme (scheme) and is_domain_name (domain); else return is_domain_name (domain); -- scheme not set when URL is protocol-relative end end --[[--------------------------< S P L I T _ U R L >------------------------------------------------------------ Split a URL into a scheme, authority indicator, and domain. First remove Fully Qualified Domain Name terminator (a dot following TLD) (if any) and any path(/), query(?) or fragment(#). If protocol-relative URL, return nil scheme and domain else return nil for both scheme and domain. When not protocol-relative, get scheme, authority indicator, and domain. If there is an authority indicator (one or more '/' characters immediately following the scheme's colon), make sure that there are only 2. Any URL that does not have news: scheme must have authority indicator (//). TODO: are there other common schemes like news: that don't use authority indicator? Strip off any port and path; ]] local function split_url (url_str) local scheme, authority, domain; url_str = url_str:gsub ('([%a%d])%.?[/%?#].*$', '%1'); -- strip FQDN terminator and path(/), query(?), fragment (#) (the capture prevents false replacement of '//') if url_str:match ('^//%S*') then -- if there is what appears to be a protocol-relative URL domain = url_str:match ('^//(%S*)') elseif url_str:match ('%S-:/*%S+') then -- if there is what appears to be a scheme, optional authority indicator, and domain name scheme, authority, domain = url_str:match ('(%S-:)(/*)(%S+)'); -- extract the scheme, authority indicator, and domain portions if utilities.is_set (authority) then authority = authority:gsub ('//', '', 1); -- replace place 1 pair of '/' with nothing; if utilities.is_set(authority) then -- if anything left (1 or 3+ '/' where authority should be) then return scheme; -- return scheme only making domain nil which will cause an error message end else if not scheme:match ('^news:') then -- except for news:..., MediaWiki won't link URLs that do not have authority indicator; TODO: a better way to do this test? return scheme; -- return scheme only making domain nil which will cause an error message end end domain = domain:gsub ('(%a):%d+', '%1'); -- strip port number if present end return scheme, domain; end --[[--------------------------< L I N K _ P A R A M _ O K >--------------------------------------------------- checks the content of |title-link=, |series-link=, |author-link=, etc. for properly formatted content: no wikilinks, no URLs Link parameters are to hold the title of a Wikipedia article, so none of the WP:TITLESPECIALCHARACTERS are allowed: # < > [ ] | { } _ except the underscore which is used as a space in wiki URLs and # which is used for section links returns false when the value contains any of these characters. When there are no illegal characters, this function returns TRUE if value DOES NOT appear to be a valid URL (the |<param>-link= parameter is ok); else false when value appears to be a valid URL (the |<param>-link= parameter is NOT ok). ]] local function link_param_ok (value) local scheme, domain; if value:find ('[<>%[%]|{}]') then -- if any prohibited characters return false; end scheme, domain = split_url (value); -- get scheme or nil and domain or nil from URL; return not is_url (scheme, domain); -- return true if value DOES NOT appear to be a valid URL end --[[--------------------------< L I N K _ T I T L E _ O K >--------------------------------------------------- Use link_param_ok() to validate |<param>-link= value and its matching |<title>= value. |<title>= may be wiki-linked but not when |<param>-link= has a value. This function emits an error message when that condition exists check <link> for inter-language interwiki-link prefix. prefix must be a MediaWiki-recognized language code and must begin with a colon. ]] local function link_title_ok (link, lorig, title, torig) local orig; if utilities.is_set (link) then -- don't bother if <param>-link doesn't have a value if not link_param_ok (link) then -- check |<param>-link= markup orig = lorig; -- identify the failing link parameter elseif title:find ('%[%[') then -- check |title= for wikilink markup orig = torig; -- identify the failing |title= parameter elseif link:match ('^%a+:') then -- if the link is what looks like an interwiki local prefix = link:match ('^(%a+):'):lower(); -- get the interwiki prefix if cfg.inter_wiki_map[prefix] then -- if prefix is in the map, must have preceding colon orig = lorig; -- flag as error end end end if utilities.is_set (orig) then link = ''; -- unset utilities.set_message ('err_bad_paramlink', orig); -- URL or wikilink in |title= with |title-link=; end return link; -- link if ok, empty string else end --[[--------------------------< C H E C K _ U R L >------------------------------------------------------------ Determines whether a URL string appears to be valid. First we test for space characters. If any are found, return false. Then split the URL into scheme and domain portions, or for protocol-relative (//example.com) URLs, just the domain. Use is_url() to validate the two portions of the URL. If both are valid, or for protocol-relative if domain is valid, return true, else false. Because it is different from a standard URL, and because this module used external_link() to make external links that work for standard and news: links, we validate newsgroup names here. The specification for a newsgroup name is at https://tools.ietf.org/html/rfc5536#section-3.1.4 ]] local function check_url( url_str ) if nil == url_str:match ("^%S+$") then -- if there are any spaces in |url=value it can't be a proper URL return false; end local scheme, domain; scheme, domain = split_url (url_str); -- get scheme or nil and domain or nil from URL; if 'news:' == scheme then -- special case for newsgroups return domain:match('^[%a%d%+%-_]+%.[%a%d%+%-_%.]*[%a%d%+%-_]$'); end return is_url (scheme, domain); -- return true if value appears to be a valid URL end --[=[-------------------------< I S _ P A R A M E T E R _ E X T _ W I K I L I N K >---------------------------- Return true if a parameter value has a string that begins and ends with square brackets [ and ] and the first non-space characters following the opening bracket appear to be a URL. The test will also find external wikilinks that use protocol-relative URLs. Also finds bare URLs. The frontier pattern prevents a match on interwiki-links which are similar to scheme:path URLs. The tests that find bracketed URLs are required because the parameters that call this test (currently |title=, |chapter=, |work=, and |publisher=) may have wikilinks and there are articles or redirects like '//Hus' so, while uncommon, |title=[[//Hus]] is possible as might be [[en://Hus]]. ]=] local function is_parameter_ext_wikilink (value) local scheme, domain; if value:match ('%f[%[]%[%a%S*:%S+.*%]') then -- if ext. wikilink with scheme and domain: [xxxx://yyyyy.zzz] scheme, domain = split_url (value:match ('%f[%[]%[(%a%S*:%S+).*%]')); elseif value:match ('%f[%[]%[//%S+.*%]') then -- if protocol-relative ext. wikilink: [//yyyyy.zzz] scheme, domain = split_url (value:match ('%f[%[]%[(//%S+).*%]')); elseif value:match ('%a%S*:%S+') then -- if bare URL with scheme; may have leading or trailing plain text scheme, domain = split_url (value:match ('(%a%S*:%S+)')); elseif value:match ('//%S+') then -- if protocol-relative bare URL: //yyyyy.zzz; may have leading or trailing plain text scheme, domain = split_url (value:match ('(//%S+)')); -- what is left should be the domain else return false; -- didn't find anything that is obviously a URL end return is_url (scheme, domain); -- return true if value appears to be a valid URL end --[[-------------------------< C H E C K _ F O R _ U R L >----------------------------------------------------- loop through a list of parameters and their values. Look at the value and if it has an external link, emit an error message. ]] local function check_for_url (parameter_list, error_list) for k, v in pairs (parameter_list) do -- for each parameter in the list if is_parameter_ext_wikilink (v) then -- look at the value; if there is a URL add an error message table.insert (error_list, utilities.wrap_style ('parameter', k)); end end end --[[--------------------------< S A F E _ F O R _ U R L >------------------------------------------------------ Escape sequences for content that will be used for URL descriptions ]] local function safe_for_url( str ) if str:match( "%[%[.-%]%]" ) ~= nil then utilities.set_message ('err_wikilink_in_url', {}); end return str:gsub( '[%[%]\n]', { ['['] = '&#91;', [']'] = '&#93;', ['\n'] = ' ' } ); end --[[--------------------------< E X T E R N A L _ L I N K >---------------------------------------------------- Format an external link with error checking ]] local function external_link (URL, label, source, access) local err_msg = ''; local domain; local path; local base_url; if not utilities.is_set (label) then label = URL; if utilities.is_set (source) then utilities.set_message ('err_bare_url_missing_title', {utilities.wrap_style ('parameter', source)}); else error (cfg.messages["bare_url_no_origin"]); -- programmer error; valid parameter name does not have matching meta-parameter end end if not check_url (URL) then utilities.set_message ('err_bad_url', {utilities.wrap_style ('parameter', source)}); end domain, path = URL:match ('^([/%.%-%+:%a%d]+)([/%?#].*)$'); -- split the URL into scheme plus domain and path if path then -- if there is a path portion path = path:gsub ('[%[%]]', {['['] = '%5b', [']'] = '%5d'}); -- replace '[' and ']' with their percent-encoded values URL = table.concat ({domain, path}); -- and reassemble end base_url = table.concat ({ "[", URL, " ", safe_for_url (label), "]" }); -- assemble a wiki-markup URL if utilities.is_set (access) then -- access level (subscription, registration, limited) base_url = utilities.substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[access].class, cfg.presentation[access].title, base_url}); -- add the appropriate icon end return base_url; end --[[--------------------------< D E P R E C A T E D _ P A R A M E T E R >-------------------------------------- Categorize and emit an error message when the citation contains one or more deprecated parameters. The function includes the offending parameter name to the error message. Only one error message is emitted regardless of the number of deprecated parameters in the citation. added_deprecated_cat is a Boolean declared in page scope variables above ]] local function deprecated_parameter(name) if not added_deprecated_cat then added_deprecated_cat = true; -- note that we've added this category utilities.set_message ('err_deprecated_params', {name}); -- add error message end end --[=[-------------------------< K E R N _ Q U O T E S >-------------------------------------------------------- Apply kerning to open the space between the quote mark provided by the module and a leading or trailing quote mark contained in a |title= or |chapter= parameter's value. This function will positive kern either single or double quotes: "'Unkerned title with leading and trailing single quote marks'" " 'Kerned title with leading and trailing single quote marks' " (in real life the kerning isn't as wide as this example) Double single quotes (italic or bold wiki-markup) are not kerned. Replaces Unicode quote marks in plain text or in the label portion of a [[L|D]] style wikilink with typewriter quote marks regardless of the need for kerning. Unicode quote marks are not replaced in simple [[D]] wikilinks. Call this function for chapter titles, for website titles, etc.; not for book titles. ]=] local function kern_quotes (str) local cap = ''; local wl_type, label, link; wl_type, label, link = utilities.is_wikilink (str); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]] if 1 == wl_type then -- [[D]] simple wikilink with or without quote marks if mw.ustring.match (str, '%[%[[\"“”\'‘’].+[\"“”\'‘’]%]%]') then -- leading and trailing quote marks str = utilities.substitute (cfg.presentation['kern-left'], str); str = utilities.substitute (cfg.presentation['kern-right'], str); elseif mw.ustring.match (str, '%[%[[\"“”\'‘’].+%]%]') then -- leading quote marks str = utilities.substitute (cfg.presentation['kern-left'], str); elseif mw.ustring.match (str, '%[%[.+[\"“”\'‘’]%]%]') then -- trailing quote marks str = utilities.substitute (cfg.presentation['kern-right'], str); end else -- plain text or [[L|D]]; text in label variable label = mw.ustring.gsub (label, '[“”]', '\"'); -- replace “” (U+201C & U+201D) with " (typewriter double quote mark) label = mw.ustring.gsub (label, '[‘’]', '\''); -- replace ‘’ (U+2018 & U+2019) with ' (typewriter single quote mark) cap = mw.ustring.match (label, "^([\"\'][^\'].+)"); -- match leading double or single quote but not doubled single quotes (italic markup) if utilities.is_set (cap) then label = utilities.substitute (cfg.presentation['kern-left'], cap); end cap = mw.ustring.match (label, "^(.+[^\'][\"\'])$") -- match trailing double or single quote but not doubled single quotes (italic markup) if utilities.is_set (cap) then label = utilities.substitute (cfg.presentation['kern-right'], cap); end if 2 == wl_type then str = utilities.make_wikilink (link, label); -- reassemble the wikilink else str = label; end end return str; end --[[--------------------------< F O R M A T _ S C R I P T _ V A L U E >---------------------------------------- |script-title= holds title parameters that are not written in Latin-based scripts: Chinese, Japanese, Arabic, Hebrew, etc. These scripts should not be italicized and may be written right-to-left. The value supplied by |script-title= is concatenated onto Title after Title has been wrapped in italic markup. Regardless of language, all values provided by |script-title= are wrapped in <bdi>...</bdi> tags to isolate RTL languages from the English left to right. |script-title= provides a unique feature. The value in |script-title= may be prefixed with a two-character ISO 639-1 language code and a colon: |script-title=ja:*** *** (where * represents a Japanese character) Spaces between the two-character code and the colon and the colon and the first script character are allowed: |script-title=ja : *** *** |script-title=ja: *** *** |script-title=ja :*** *** Spaces preceding the prefix are allowed: |script-title = ja:*** *** The prefix is checked for validity. If it is a valid ISO 639-1 language code, the lang attribute (lang="ja") is added to the <bdi> tag so that browsers can know the language the tag contains. This may help the browser render the script more correctly. If the prefix is invalid, the lang attribute is not added. At this time there is no error message for this condition. Supports |script-title=, |script-chapter=, |script-<periodical>= ]] local function format_script_value (script_value, script_param) local lang=''; -- initialize to empty string local name; if script_value:match('^%l%l%l?%s*:') then -- if first 3 or 4 non-space characters are script language prefix lang = script_value:match('^(%l%l%l?)%s*:%s*%S.*'); -- get the language prefix or nil if there is no script if not utilities.is_set (lang) then utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing title part']}); -- prefix without 'title'; add error message return ''; -- script_value was just the prefix so return empty string end -- if we get this far we have prefix and script name = cfg.lang_tag_remap[lang] or mw.language.fetchLanguageName( lang, cfg.this_wiki_code ); -- get language name so that we can use it to categorize if utilities.is_set (name) then -- is prefix a proper ISO 639-1 language code? script_value = script_value:gsub ('^%l+%s*:%s*', ''); -- strip prefix from script -- is prefix one of these language codes? if utilities.in_array (lang, cfg.script_lang_codes) then utilities.add_prop_cat ('script', {name, lang}) else utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['unknown language code']}); -- unknown script-language; add error message end lang = ' lang="' .. lang .. '" '; -- convert prefix into a lang attribute else utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['invalid language code']}); -- invalid language code; add error message lang = ''; -- invalid so set lang to empty string end else utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing prefix']}); -- no language code prefix; add error message end script_value = utilities.substitute (cfg.presentation['bdi'], {lang, script_value}); -- isolate in case script is RTL return script_value; end --[[--------------------------< S C R I P T _ C O N C A T E N A T E >------------------------------------------ Initially for |title= and |script-title=, this function concatenates those two parameter values after the script value has been wrapped in <bdi> tags. ]] local function script_concatenate (title, script, script_param) if utilities.is_set (script) then script = format_script_value (script, script_param); -- <bdi> tags, lang attribute, categorization, etc.; returns empty string on error if utilities.is_set (script) then title = title .. ' ' .. script; -- concatenate title and script title end end return title; end --[[--------------------------< W R A P _ M S G >-------------------------------------------------------------- Applies additional message text to various parameter values. Supplied string is wrapped using a message_list configuration taking one argument. Supports lower case text for {{citation}} templates. Additional text taken from citation_config.messages - the reason this function is similar to but separate from wrap_style(). ]] local function wrap_msg (key, str, lower) if not utilities.is_set ( str ) then return ""; end if true == lower then local msg; msg = cfg.messages[key]:lower(); -- set the message to lower case before return utilities.substitute ( msg, str ); -- including template text else return utilities.substitute ( cfg.messages[key], str ); end end --[[----------------< W I K I S O U R C E _ U R L _ M A K E >------------------- Makes a Wikisource URL from Wikisource interwiki-link. Returns the URL and appropriate label; nil else. str is the value assigned to |chapter= (or aliases) or |title= or |title-link= ]] local function wikisource_url_make (str) local wl_type, D, L; local ws_url, ws_label; local wikisource_prefix = table.concat ({'https://', cfg.this_wiki_code, '.wikisource.org/wiki/'}); wl_type, D, L = utilities.is_wikilink (str); -- wl_type is 0 (not a wikilink), 1 (simple wikilink), 2 (complex wikilink) if 0 == wl_type then -- not a wikilink; might be from |title-link= str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace if utilities.is_set (str) then ws_url = table.concat ({ -- build a Wikisource URL wikisource_prefix, -- prefix str, -- article title }); ws_label = str; -- label for the URL end elseif 1 == wl_type then -- simple wikilink: [[Wikisource:ws article]] str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace if utilities.is_set (str) then ws_url = table.concat ({ -- build a Wikisource URL wikisource_prefix, -- prefix str, -- article title }); ws_label = str; -- label for the URL end elseif 2 == wl_type then -- non-so-simple wikilink: [[Wikisource:ws article|displayed text]] ([[L|D]]) str = L:match ('^[Ww]ikisource:(.+)') or L:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace if utilities.is_set (str) then ws_label = D; -- get ws article name from display portion of interwiki link ws_url = table.concat ({ -- build a Wikisource URL wikisource_prefix, -- prefix str, -- article title without namespace from link portion of wikilink }); end end if ws_url then ws_url = mw.uri.encode (ws_url, 'WIKI'); -- make a usable URL ws_url = ws_url:gsub ('%%23', '#'); -- undo percent-encoding of fragment marker end return ws_url, ws_label, L or D; -- return proper URL or nil and a label or nil end --[[----------------< F O R M A T _ P E R I O D I C A L >----------------------- Format the three periodical parameters: |script-<periodical>=, |<periodical>=, and |trans-<periodical>= into a single Periodical meta-parameter. ]] local function format_periodical (script_periodical, script_periodical_source, periodical, trans_periodical) if not utilities.is_set (periodical) then periodical = ''; -- to be safe for concatenation else periodical = utilities.wrap_style ('italic-title', periodical); -- style end periodical = script_concatenate (periodical, script_periodical, script_periodical_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped if utilities.is_set (trans_periodical) then trans_periodical = utilities.wrap_style ('trans-italic-title', trans_periodical); if utilities.is_set (periodical) then periodical = periodical .. ' ' .. trans_periodical; else -- here when trans-periodical without periodical or script-periodical periodical = trans_periodical; utilities.set_message ('err_trans_missing_title', {'periodical'}); end end return periodical; end --[[------------------< F O R M A T _ C H A P T E R _ T I T L E >--------------- Format the four chapter parameters: |script-chapter=, |chapter=, |trans-chapter=, and |chapter-url= into a single chapter meta- parameter (chapter_url_source used for error messages). ]] local function format_chapter_title (script_chapter, script_chapter_source, chapter, chapter_source, trans_chapter, trans_chapter_source, chapter_url, chapter_url_source, no_quotes, access) local ws_url, ws_label, L = wikisource_url_make (chapter); -- make a wikisource URL and label from a wikisource interwiki link if ws_url then ws_label = ws_label:gsub ('_', ' '); -- replace underscore separators with space characters chapter = ws_label; end if not utilities.is_set (chapter) then chapter = ''; -- to be safe for concatenation else if false == no_quotes then chapter = kern_quotes (chapter); -- if necessary, separate chapter title's leading and trailing quote marks from module provided quote marks chapter = utilities.wrap_style ('quoted-title', chapter); end end chapter = script_concatenate (chapter, script_chapter, script_chapter_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped if utilities.is_set (chapter_url) then chapter = external_link (chapter_url, chapter, chapter_url_source, access); -- adds bare_url_missing_title error if appropriate elseif ws_url then chapter = external_link (ws_url, chapter .. '&nbsp;', 'ws link in chapter'); -- adds bare_url_missing_title error if appropriate; space char to move icon away from chap text; TODO: better way to do this? chapter = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, chapter}); end if utilities.is_set (trans_chapter) then trans_chapter = utilities.wrap_style ('trans-quoted-title', trans_chapter); if utilities.is_set (chapter) then chapter = chapter .. ' ' .. trans_chapter; else -- here when trans_chapter without chapter or script-chapter chapter = trans_chapter; chapter_source = trans_chapter_source:match ('trans%-?(.+)'); -- when no chapter, get matching name from trans-<param> utilities.set_message ('err_trans_missing_title', {chapter_source}); end end return chapter; end --[[----------------< H A S _ I N V I S I B L E _ C H A R S >------------------- This function searches a parameter's value for non-printable or invisible characters. The search stops at the first match. This function will detect the visible replacement character when it is part of the Wikisource. Detects but ignores nowiki and math stripmarkers. Also detects other named stripmarkers (gallery, math, pre, ref) and identifies them with a slightly different error message. See also coins_cleanup(). Output of this function is an error message that identifies the character or the Unicode group, or the stripmarker that was detected along with its position (or, for multi-byte characters, the position of its first byte) in the parameter value. ]] local function has_invisible_chars (param, v) local position = ''; -- position of invisible char or starting position of stripmarker local capture; -- used by stripmarker detection to hold name of the stripmarker local stripmarker; -- boolean set true when a stripmarker is found capture = string.match (v, '[%w%p ]*'); -- test for values that are simple ASCII text and bypass other tests if true if capture == v then -- if same there are no Unicode characters return; end for _, invisible_char in ipairs (cfg.invisible_chars) do local char_name = invisible_char[1]; -- the character or group name local pattern = invisible_char[2]; -- the pattern used to find it position, _, capture = mw.ustring.find (v, pattern); -- see if the parameter value contains characters that match the pattern if position and (cfg.invisible_defs.zwj == capture) then -- if we found a zero-width joiner character if mw.ustring.find (v, cfg.indic_script) then -- it's ok if one of the Indic scripts position = nil; -- unset position elseif cfg.emoji_t[mw.ustring.codepoint (v, position+1)] then -- is zwj followed by a character listed in emoji{}? position = nil; -- unset position end end if position then if 'nowiki' == capture or 'math' == capture or -- nowiki and math stripmarkers (not an error condition) ('templatestyles' == capture and utilities.in_array (param, {'id', 'quote'})) then -- templatestyles stripmarker allowed in these parameters stripmarker = true; -- set a flag elseif true == stripmarker and cfg.invisible_defs.del == capture then -- because stripmakers begin and end with the delete char, assume that we've found one end of a stripmarker position = nil; -- unset else local err_msg; if capture and not (cfg.invisible_defs.del == capture or cfg.invisible_defs.zwj == capture) then err_msg = capture .. ' ' .. char_name; else err_msg = char_name .. ' ' .. 'character'; end utilities.set_message ('err_invisible_char', {err_msg, utilities.wrap_style ('parameter', param), position}); -- add error message return; -- and done with this parameter end end end end --[[-------------------< A R G U M E N T _ W R A P P E R >---------------------- Argument wrapper. This function provides support for argument mapping defined in the configuration file so that multiple names can be transparently aliased to single internal variable. ]] local function argument_wrapper ( args ) local origin = {}; return setmetatable({ ORIGIN = function ( self, k ) local dummy = self[k]; -- force the variable to be loaded. return origin[k]; end }, { __index = function ( tbl, k ) if origin[k] ~= nil then return nil; end local args, list, v = args, cfg.aliases[k]; if type( list ) == 'table' then v, origin[k] = utilities.select_one ( args, list, 'err_redundant_parameters' ); if origin[k] == nil then origin[k] = ''; -- Empty string, not nil end elseif list ~= nil then v, origin[k] = args[list], list; else -- maybe let through instead of raising an error? -- v, origin[k] = args[k], k; error( cfg.messages['unknown_argument_map'] .. ': ' .. k); end -- Empty strings, not nil; if v == nil then v = ''; origin[k] = ''; end tbl = rawset( tbl, k, v ); return v; end, }); end --[[--------------------------< N O W R A P _ D A T E >------------------------- When date is YYYY-MM-DD format wrap in nowrap span: <span ...>YYYY-MM-DD</span>. When date is DD MMMM YYYY or is MMMM DD, YYYY then wrap in nowrap span: <span ...>DD MMMM</span> YYYY or <span ...>MMMM DD,</span> YYYY DOES NOT yet support MMMM YYYY or any of the date ranges. ]] local function nowrap_date (date) local cap = ''; local cap2 = ''; if date:match("^%d%d%d%d%-%d%d%-%d%d$") then date = utilities.substitute (cfg.presentation['nowrap1'], date); elseif date:match("^%a+%s*%d%d?,%s+%d%d%d%d$") or date:match ("^%d%d?%s*%a+%s+%d%d%d%d$") then cap, cap2 = string.match (date, "^(.*)%s+(%d%d%d%d)$"); date = utilities.substitute (cfg.presentation['nowrap2'], {cap, cap2}); end return date; end --[[--------------------------< S E T _ T I T L E T Y P E >--------------------- This function sets default title types (equivalent to the citation including |type=<default value>) for those templates that have defaults. Also handles the special case where it is desirable to omit the title type from the rendered citation (|type=none). ]] local function set_titletype (cite_class, title_type) if utilities.is_set (title_type) then if 'none' == cfg.keywords_xlate[title_type] then title_type = ''; -- if |type=none then type parameter not displayed end return title_type; -- if |type= has been set to any other value use that value end return cfg.title_types [cite_class] or ''; -- set template's default title type; else empty string for concatenation end --[[--------------------------< S A F E _ J O I N >----------------------------- Joins a sequence of strings together while checking for duplicate separation characters. ]] local function safe_join( tbl, duplicate_char ) local f = {}; -- create a function table appropriate to type of 'duplicate character' if 1 == #duplicate_char then -- for single byte ASCII characters use the string library functions f.gsub = string.gsub f.match = string.match f.sub = string.sub else -- for multi-byte characters use the ustring library functions f.gsub = mw.ustring.gsub f.match = mw.ustring.match f.sub = mw.ustring.sub end local str = ''; -- the output string local comp = ''; -- what does 'comp' mean? local end_chr = ''; local trim; for _, value in ipairs( tbl ) do if value == nil then value = ''; end if str == '' then -- if output string is empty str = value; -- assign value to it (first time through the loop) elseif value ~= '' then if value:sub(1, 1) == '<' then -- special case of values enclosed in spans and other markup. comp = value:gsub( "%b<>", "" ); -- remove HTML markup (<span>string</span> -> string) else comp = value; end -- typically duplicate_char is sepc if f.sub(comp, 1, 1) == duplicate_char then -- is first character same as duplicate_char? why test first character? -- Because individual string segments often (always?) begin with terminal punct for the -- preceding segment: 'First element' .. 'sepc next element' .. etc.? trim = false; end_chr = f.sub(str, -1, -1); -- get the last character of the output string -- str = str .. "<HERE(enchr=" .. end_chr .. ")" -- debug stuff? if end_chr == duplicate_char then -- if same as separator str = f.sub(str, 1, -2); -- remove it elseif end_chr == "'" then -- if it might be wiki-markup if f.sub(str, -3, -1) == duplicate_char .. "''" then -- if last three chars of str are sepc'' str = f.sub(str, 1, -4) .. "''"; -- remove them and add back '' elseif f.sub(str, -5, -1) == duplicate_char .. "]]''" then -- if last five chars of str are sepc]]'' trim = true; -- why? why do this and next differently from previous? elseif f.sub(str, -4, -1) == duplicate_char .. "]''" then -- if last four chars of str are sepc]'' trim = true; -- same question end elseif end_chr == "]" then -- if it might be wiki-markup if f.sub(str, -3, -1) == duplicate_char .. "]]" then -- if last three chars of str are sepc]] wikilink trim = true; elseif f.sub(str, -3, -1) == duplicate_char .. '"]' then -- if last three chars of str are sepc"] quoted external link trim = true; elseif f.sub(str, -2, -1) == duplicate_char .. "]" then -- if last two chars of str are sepc] external link trim = true; elseif f.sub(str, -4, -1) == duplicate_char .. "'']" then -- normal case when |url=something & |title=Title. trim = true; end elseif end_chr == " " then -- if last char of output string is a space if f.sub(str, -2, -1) == duplicate_char .. " " then -- if last two chars of str are <sepc><space> str = f.sub(str, 1, -3); -- remove them both end end if trim then if value ~= comp then -- value does not equal comp when value contains HTML markup local dup2 = duplicate_char; if f.match(dup2, "%A" ) then dup2 = "%" .. dup2; end -- if duplicate_char not a letter then escape it value = f.gsub(value, "(%b<>)" .. dup2, "%1", 1 ) -- remove duplicate_char if it follows HTML markup else value = f.sub(value, 2, -1 ); -- remove duplicate_char when it is first character end end end str = str .. value; -- add it to the output string end end return str; end --[[--------------------------< I S _ S U F F I X >----------------------------- returns true if suffix is properly formed Jr, Sr, or ordinal in the range 1–9. Puncutation not allowed. ]] local function is_suffix (suffix) if utilities.in_array (suffix, {'Jr', 'Sr', 'Jnr', 'Snr', '1st', '2nd', '3rd'}) or suffix:match ('^%dth$') then return true; end return false; end --[[--------------------< I S _ G O O D _ V A N C _ N A M E >------------------- For Vancouver style, author/editor names are supposed to be rendered in Latin (read ASCII) characters. When a name uses characters that contain diacritical marks, those characters are to be converted to the corresponding Latin character. When a name is written using a non-Latin alphabet or logogram, that name is to be transliterated into Latin characters. The module doesn't do this so editors may/must. This test allows |first= and |last= names to contain any of the letters defined in the four Unicode Latin character sets [http://www.unicode.org/charts/PDF/U0000.pdf C0 Controls and Basic Latin] 0041–005A, 0061–007A [http://www.unicode.org/charts/PDF/U0080.pdf C1 Controls and Latin-1 Supplement] 00C0–00D6, 00D8–00F6, 00F8–00FF [http://www.unicode.org/charts/PDF/U0100.pdf Latin Extended-A] 0100–017F [http://www.unicode.org/charts/PDF/U0180.pdf Latin Extended-B] 0180–01BF, 01C4–024F |lastn= also allowed to contain hyphens, spaces, and apostrophes. (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/) |firstn= also allowed to contain hyphens, spaces, apostrophes, and periods This original test: if nil == mw.ustring.find (last, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%']*$") or nil == mw.ustring.find (first, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%'%.]+[2-6%a]*$") then was written outside of the code editor and pasted here because the code editor gets confused between character insertion point and cursor position. The test has been rewritten to use decimal character escape sequence for the individual bytes of the Unicode characters so that it is not necessary to use an external editor to maintain this code. \195\128-\195\150 – À-Ö (U+00C0–U+00D6 – C0 controls) \195\152-\195\182 – Ø-ö (U+00D8-U+00F6 – C0 controls) \195\184-\198\191 – ø-ƿ (U+00F8-U+01BF – C0 controls, Latin extended A & B) \199\132-\201\143 – DŽ-ɏ (U+01C4-U+024F – Latin extended B) ]] local function is_good_vanc_name (last, first, suffix, position) if not suffix then if first:find ('[,%s]') then -- when there is a space or comma, might be first name/initials + generational suffix first = first:match ('(.-)[,%s]+'); -- get name/initials suffix = first:match ('[,%s]+(.+)$'); -- get generational suffix end end if utilities.is_set (suffix) then if not is_suffix (suffix) then add_vanc_error (cfg.err_msg_supl.suffix, position); return false; -- not a name with an appropriate suffix end end if nil == mw.ustring.find (last, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%']*$") or nil == mw.ustring.find (first, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%'%.]*$") then add_vanc_error (cfg.err_msg_supl['non-Latin char'], position); return false; -- not a string of Latin characters; Vancouver requires Romanization end; return true; end --[[--------------------------< R E D U C E _ T O _ I N I T I A L S >------------------------------------------ Attempts to convert names to initials in support of |name-list-style=vanc. Names in |firstn= may be separated by spaces or hyphens, or for initials, a period. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35062/. Vancouver style requires family rank designations (Jr, II, III, etc.) to be rendered as Jr, 2nd, 3rd, etc. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35085/. This code only accepts and understands generational suffix in the Vancouver format because Roman numerals look like, and can be mistaken for, initials. This function uses ustring functions because firstname initials may be any of the Unicode Latin characters accepted by is_good_vanc_name (). ]] local function reduce_to_initials(first, position) local name, suffix = mw.ustring.match(first, "^(%u+) ([%dJS][%drndth]+)$"); if not name then -- if not initials and a suffix name = mw.ustring.match(first, "^(%u+)$"); -- is it just initials? end if name then -- if first is initials with or without suffix if 3 > mw.ustring.len (name) then -- if one or two initials if suffix then -- if there is a suffix if is_suffix (suffix) then -- is it legitimate? return first; -- one or two initials and a valid suffix so nothing to do else add_vanc_error (cfg.err_msg_supl.suffix, position); -- one or two initials with invalid suffix so error message return first; -- and return first unmolested end else return first; -- one or two initials without suffix; nothing to do end end end -- if here then name has 3 or more uppercase letters so treat them as a word local initials, names = {}, {}; -- tables to hold name parts and initials local i = 1; -- counter for number of initials names = mw.text.split (first, '[%s,]+'); -- split into a table of names and possible suffix while names[i] do -- loop through the table if 1 < i and names[i]:match ('[%dJS][%drndth]+%.?$') then -- if not the first name, and looks like a suffix (may have trailing dot) names[i] = names[i]:gsub ('%.', ''); -- remove terminal dot if present if is_suffix (names[i]) then -- if a legitimate suffix table.insert (initials, ' ' .. names[i]); -- add a separator space, insert at end of initials table break; -- and done because suffix must fall at the end of a name end -- no error message if not a suffix; possibly because of Romanization end if 3 > i then table.insert (initials, mw.ustring.sub(names[i], 1, 1)); -- insert the initial at end of initials table end i = i + 1; -- bump the counter end return table.concat(initials) -- Vancouver format does not include spaces. end --[[--------------------------< I N T E R W I K I _ P R E F I X E N _ G E T >---------------------------------- extract interwiki prefixen from <value>. Returns two one or two values: false – no prefixen nil – prefix exists but not recognized project prefix, language prefix – when value has either of: :<project>:<language>:<article> :<language>:<project>:<article> project prefix, nil – when <value> has only a known single-letter prefix nil, language prefix – when <value> has only a known language prefix accepts single-letter project prefixen: 'd' (wikidata), 's' (wikisource), and 'w' (wikipedia) prefixes; at this writing, the other single-letter prefixen (b (wikibook), c (commons), m (meta), n (wikinews), q (wikiquote), and v (wikiversity)) are not supported. ]] local function interwiki_prefixen_get (value, is_link) if not value:find (':%l+:') then -- if no prefix return false; -- abandon; boolean here to distinguish from nil fail returns later end local prefix_patterns_linked_t = { -- sequence of valid interwiki and inter project prefixen '^%[%[:([dsw]):(%l%l+):', -- wikilinked; project and language prefixes '^%[%[:(%l%l+):([dsw]):', -- wikilinked; language and project prefixes '^%[%[:([dsw]):', -- wikilinked; project prefix '^%[%[:(%l%l+):', -- wikilinked; language prefix } local prefix_patterns_unlinked_t = { -- sequence of valid interwiki and inter project prefixen '^:([dsw]):(%l%l+):', -- project and language prefixes '^:(%l%l+):([dsw]):', -- language and project prefixes '^:([dsw]):', -- project prefix '^:(%l%l+):', -- language prefix } local cap1, cap2; for _, pattern in ipairs ((is_link and prefix_patterns_linked_t) or prefix_patterns_unlinked_t) do cap1, cap2 = value:match (pattern); if cap1 then break; -- found a match so stop looking end end if cap1 and cap2 then -- when both then :project:language: or :language:project: (both forms allowed) if 1 == #cap1 then -- length == 1 then :project:language: if cfg.inter_wiki_map[cap2] then -- is language prefix in the interwiki map? return cap1, cap2; -- return interwiki project and interwiki language end else -- here when :language:project: if cfg.inter_wiki_map[cap1] then -- is language prefix in the interwiki map? return cap2, cap1; -- return interwiki project and interwiki language end end return nil; -- unknown interwiki language elseif not (cap1 or cap2) then -- both are nil? return nil; -- we got something that looks like a project prefix but isn't; return fail elseif 1 == #cap1 then -- here when one capture return cap1, nil; -- length is 1 so return project, nil language else -- here when one capture and its length it more than 1 if cfg.inter_wiki_map[cap1] then -- is language prefix in the interwiki map? return nil, cap1; -- return nil project, language end end end --[[--------------------------< L I S T _ P E O P L E >-------------------------- Formats a list of people (authors, contributors, editors, interviewers, translators) names in the list will be linked when |<name>-link= has a value |<name>-mask- does NOT have a value; masked names are presumed to have been rendered previously so should have been linked there when |<name>-mask=0, the associated name is not rendered ]] local function list_people (control, people, etal) local sep; local namesep; local format = control.format; local maximum = control.maximum; local name_list = {}; if 'vanc' == format then -- Vancouver-like name styling? sep = cfg.presentation['sep_nl_vanc']; -- name-list separator between names is a comma namesep = cfg.presentation['sep_name_vanc']; -- last/first separator is a space else sep = cfg.presentation['sep_nl']; -- name-list separator between names is a semicolon namesep = cfg.presentation['sep_name']; -- last/first separator is <comma><space> end if sep:sub (-1, -1) ~= " " then sep = sep .. " " end if utilities.is_set (maximum) and maximum < 1 then return "", 0; end -- returned 0 is for EditorCount; not used for other names for i, person in ipairs (people) do if utilities.is_set (person.last) then local mask = person.mask; local one; local sep_one = sep; if utilities.is_set (maximum) and i > maximum then etal = true; break; end if mask then local n = tonumber (mask); -- convert to a number if it can be converted; nil else if n then one = 0 ~= n and string.rep("&mdash;", n) or nil; -- make a string of (n > 0) mdashes, nil else, to replace name person.link = nil; -- don't create link to name if name is replaces with mdash string or has been set nil else one = mask; -- replace name with mask text (must include name-list separator) sep_one = " "; -- modify name-list separator end else one = person.last; -- get surname local first = person.first -- get given name if utilities.is_set (first) then if ("vanc" == format) then -- if Vancouver format one = one:gsub ('%.', ''); -- remove periods from surnames (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/) if not person.corporate and is_good_vanc_name (one, first, nil, i) then -- and name is all Latin characters; corporate authors not tested first = reduce_to_initials (first, i); -- attempt to convert first name(s) to initials end end one = one .. namesep .. first; end end if utilities.is_set (person.link) then one = utilities.make_wikilink (person.link, one); -- link author/editor end if one then -- if <one> has a value (name, mdash replacement, or mask text replacement) local proj, tag = interwiki_prefixen_get (one, true); -- get the interwiki prefixen if present if 'w' == proj and ('Wikipedia' == mw.site.namespaces.Project['name']) then proj = nil; -- for stuff like :w:de:<article>, :w is unnecessary TODO: maint cat? end if proj then proj = ({['d'] = 'Wikidata', ['s'] = 'Wikisource', ['w'] = 'Wikipedia'})[proj]; -- :w (wikipedia) for linking from a non-wikipedia project if proj then one = one .. utilities.wrap_style ('interproj', proj); -- add resized leading space, brackets, static text, language name tag = nil; -- unset; don't do both project and language end end if tag == cfg.this_wiki_code then tag = nil; -- stuff like :en:<article> at en.wiki is pointless TODO: maint cat? end if tag then local lang = cfg.lang_tag_remap[tag] or cfg.mw_languages_by_tag_t[tag]; if lang then -- error messaging done in extract_names() where we know parameter names one = one .. utilities.wrap_style ('interwiki', lang); -- add resized leading space, brackets, static text, language name end end table.insert (name_list, one); -- add it to the list of names table.insert (name_list, sep_one); -- add the proper name-list separator end end end local count = #name_list / 2; -- (number of names + number of separators) divided by 2 if 0 < count then if 1 < count and not etal then if 'amp' == format then name_list[#name_list-2] = " & "; -- replace last separator with ampersand text elseif 'and' == format then if 2 == count then name_list[#name_list-2] = cfg.presentation.sep_nl_and; -- replace last separator with 'and' text else name_list[#name_list-2] = cfg.presentation.sep_nl_end; -- replace last separator with '(sep) and' text end end end name_list[#name_list] = nil; -- erase the last separator end local result = table.concat (name_list); -- construct list if etal and utilities.is_set (result) then -- etal may be set by |display-authors=etal but we might not have a last-first list result = result .. sep .. cfg.messages['et al']; -- we've got a last-first list and etal so add et al. end return result, count; -- return name-list string and count of number of names (count used for editor names only) end --[[--------------------< M A K E _ C I T E R E F _ I D >----------------------- Generates a CITEREF anchor ID if we have at least one name or a date. Otherwise returns an empty string. namelist is one of the contributor-, author-, or editor-name lists chosen in that order. year is Year or anchor_year. ]] local function make_citeref_id (namelist, year) local names={}; -- a table for the one to four names and year for i,v in ipairs (namelist) do -- loop through the list and take up to the first four last names names[i] = v.last if i == 4 then break end -- if four then done end table.insert (names, year); -- add the year at the end local id = table.concat(names); -- concatenate names and year for CITEREF id if utilities.is_set (id) then -- if concatenation is not an empty string return "CITEREF" .. id; -- add the CITEREF portion else return ''; -- return an empty string; no reason to include CITEREF id in this citation end end --[[--------------------------< C I T E _ C L A S S _A T T R I B U T E _M A K E >------------------------------ construct <cite> tag class attribute for this citation. <cite_class> – config.CitationClass from calling template <mode> – value from |mode= parameter ]] local function cite_class_attribute_make (cite_class, mode) local class_t = {}; table.insert (class_t, 'citation'); -- required for blue highlight if 'citation' ~= cite_class then table.insert (class_t, cite_class); -- identify this template for user css table.insert (class_t, utilities.is_set (mode) and mode or 'cs1'); -- identify the citation style for user css or javascript else table.insert (class_t, utilities.is_set (mode) and mode or 'cs2'); -- identify the citation style for user css or javascript end for _, prop_key in ipairs (z.prop_keys_t) do table.insert (class_t, prop_key); -- identify various properties for user css or javascript end return table.concat (class_t, ' '); -- make a big string and done end --[[---------------------< N A M E _ H A S _ E T A L >-------------------------- Evaluates the content of name parameters (author, editor, etc.) for variations on the theme of et al. If found, the et al. is removed, a flag is set to true and the function returns the modified name and the flag. This function never sets the flag to false but returns its previous state because it may have been set by previous passes through this function or by the associated |display-<names>=etal parameter ]] local function name_has_etal (name, etal, nocat, param) if utilities.is_set (name) then -- name can be nil in which case just return local patterns = cfg.et_al_patterns; -- get patterns from configuration for _, pattern in ipairs (patterns) do -- loop through all of the patterns if name:match (pattern) then -- if this 'et al' pattern is found in name name = name:gsub (pattern, ''); -- remove the offending text etal = true; -- set flag (may have been set previously here or by |display-<names>=etal) if not nocat then -- no categorization for |vauthors= utilities.set_message ('err_etal', {param}); -- and set an error if not added end end end end return name, etal; end --[[---------------------< N A M E _ I S _ N U M E R I C >---------------------- Add maint cat when name parameter value does not contain letters. Does not catch mixed alphanumeric names so |last=A. Green (1922-1987) does not get caught in the current version of this test but |first=(1888) is caught. returns nothing ]] local function name_is_numeric (name, list_name) if utilities.is_set (name) then if mw.ustring.match (name, '^[%A]+$') then -- when name does not contain any letters utilities.set_message ('maint_numeric_names', cfg.special_case_translation [list_name]); -- add a maint cat for this template end end end --[[-----------------< N A M E _ H A S _ M U L T _ N A M E S >------------------ Evaluates the content of last/surname (authors etc.) parameters for multiple names. Multiple names are indicated if there is more than one comma or any "unescaped" semicolons. Escaped semicolons are ones used as part of selected HTML entities. If the condition is met, the function adds the multiple name maintenance category. Same test for first except that commas should not appear in given names (MOS:JR says that the generational suffix does not take a separator character). Titles, degrees, postnominals, affiliations, all normally comma separated don't belong in a citation. <name> – name parameter value <list_name> – AuthorList, EditorList, etc <limit> – number of allowed commas; 1 (default) for surnames; 0 for given names returns nothing ]] local function name_has_mult_names (name, list_name, limit) local _, commas, semicolons, nbsps; limit = limit and limit or 1; if utilities.is_set (name) then _, commas = name:gsub (',', ''); -- count the number of commas _, semicolons = name:gsub (';', ''); -- count the number of semicolons -- nbsps probably should be its own separate count rather than merged in -- some way with semicolons because Lua patterns do not support the -- grouping operator that regex does, which means there is no way to add -- more entities to escape except by adding more counts with the new -- entities _, nbsps = name:gsub ('&nbsp;',''); -- count nbsps -- There is exactly 1 semicolon per &nbsp; entity, so subtract nbsps -- from semicolons to 'escape' them. If additional entities are added, -- they also can be subtracted. if limit < commas or 0 < (semicolons - nbsps) then utilities.set_message ('maint_mult_names', cfg.special_case_translation [list_name]); -- add a maint message end end end --[=[-------------------------< I S _ G E N E R I C >---------------------------------------------------------- Compares values assigned to various parameters according to the string provided as <item> in the function call. <item> can have on of two values: 'generic_names' – for name-holding parameters: |last=, |first=, |editor-last=, etc 'generic_titles' – for |title= There are two types of generic tests. The 'accept' tests look for a pattern that should not be rejected by the 'reject' test. For example, |author=[[John Smith (author)|Smith, John]] would be rejected by the 'author' reject test. But piped wikilinks with 'author' disambiguation should not be rejected so the 'accept' test prevents that from happening. Accept tests are always performed before reject tests. Each of the 'accept' and 'reject' sequence tables hold tables for en.wiki (['en']) and local.wiki (['local']) that each can hold a test sequence table The sequence table holds, at index [1], a test pattern, and, at index [2], a boolean control value. The control value tells string.find() or mw.ustring.find() to do plain-text search (true) or a pattern search (false). The intent of all this complexity is to make these searches as fast as possible so that we don't run out of processing time on very large articles. Returns true when a reject test finds the pattern or string false when an accept test finds the pattern or string nil else ]=] local function is_generic (item, value, wiki) local test_val; local str_lower = { -- use string.lower() for en.wiki (['en']) and use mw.ustring.lower() or local.wiki (['local']) ['en'] = string.lower, ['local'] = mw.ustring.lower, } local str_find = { -- use string.find() for en.wiki (['en']) and use mw.ustring.find() or local.wiki (['local']) ['en'] = string.find, ['local'] = mw.ustring.find, } local function test (val, test_t, wiki) -- local function to do the testing; <wiki> selects lower() and find() functions val = test_t[2] and str_lower[wiki](value) or val; -- when <test_t[2]> set to 'true', plaintext search using lowercase value return str_find[wiki] (val, test_t[1], 1, test_t[2]); -- return nil when not found or matched end local test_types_t = {'accept', 'reject'}; -- test accept patterns first, then reject patterns local wikis_t = {'en', 'local'}; -- do tests for each of these keys; en.wiki first, local.wiki second for _, test_type in ipairs (test_types_t) do -- for each test type for _, generic_value in pairs (cfg.special_case_translation[item][test_type]) do -- spin through the list of generic value fragments to accept or reject for _, wiki in ipairs (wikis_t) do if generic_value[wiki] then if test (value, generic_value[wiki], wiki) then -- go do the test return ('reject' == test_type); -- param value rejected, return true; false else end end end end end end --[[--------------------------< N A M E _ I S _ G E N E R I C >------------------------------------------------ calls is_generic() to determine if <name> is a 'generic name' listed in cfg.generic_names; <name_alias> is the parameter name used in error messaging ]] local function name_is_generic (name, name_alias) if not added_generic_name_errs and is_generic ('generic_names', name) then utilities.set_message ('err_generic_name', name_alias); -- set an error message added_generic_name_errs = true; end end --[[--------------------------< N A M E _ C H E C K S >-------------------------------------------------------- This function calls various name checking functions used to validate the content of the various name-holding parameters. ]] local function name_checks (last, first, list_name, last_alias, first_alias) local accept_name; if utilities.is_set (last) then last, accept_name = utilities.has_accept_as_written (last); -- remove accept-this-as-written markup when it wraps all of <last> if not accept_name then -- <last> not wrapped in accept-as-written markup name_has_mult_names (last, list_name); -- check for multiple names in the parameter name_is_numeric (last, list_name); -- check for names that are composed of digits and punctuation name_is_generic (last, last_alias); -- check for names found in the generic names list end end if utilities.is_set (first) then first, accept_name = utilities.has_accept_as_written (first); -- remove accept-this-as-written markup when it wraps all of <first> if not accept_name then -- <first> not wrapped in accept-as-written markup name_has_mult_names (first, list_name, 0); -- check for multiple names in the parameter; 0 is number of allowed commas in a given name name_is_numeric (first, list_name); -- check for names that are composed of digits and punctuation name_is_generic (first, first_alias); -- check for names found in the generic names list end local wl_type, D = utilities.is_wikilink (first); if 0 ~= wl_type then first = D; utilities.set_message ('err_bad_paramlink', first_alias); end end return last, first; -- done end --[[----------------------< E X T R A C T _ N A M E S >------------------------- Gets name list from the input arguments Searches through args in sequential order to find |lastn= and |firstn= parameters (or their aliases), and their matching link and mask parameters. Stops searching when both |lastn= and |firstn= are not found in args after two sequential attempts: found |last1=, |last2=, and |last3= but doesn't find |last4= and |last5= then the search is done. This function emits an error message when there is a |firstn= without a matching |lastn=. When there are 'holes' in the list of last names, |last1= and |last3= are present but |last2= is missing, an error message is emitted. |lastn= is not required to have a matching |firstn=. When an author or editor parameter contains some form of 'et al.', the 'et al.' is stripped from the parameter and a flag (etal) returned that will cause list_people() to add the static 'et al.' text from Module:Citation/CS1/Configuration. This keeps 'et al.' out of the template's metadata. When this occurs, an error is emitted. ]] local function extract_names(args, list_name) local names = {}; -- table of names local last; -- individual name components local first; local link; local mask; local i = 1; -- loop counter/indexer local n = 1; -- output table indexer local count = 0; -- used to count the number of times we haven't found a |last= (or alias for authors, |editor-last or alias for editors) local etal = false; -- return value set to true when we find some form of et al. in an author parameter local last_alias, first_alias, link_alias; -- selected parameter aliases used in error messaging while true do last, last_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'err_redundant_parameters', i ); -- search through args for name components beginning at 1 first, first_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'err_redundant_parameters', i ); link, link_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i ); mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i ); if last then -- error check |lastn= alias for unknown interwiki link prefix; done here because this is where we have the parameter name local project, language = interwiki_prefixen_get (last, true); -- true because we expect interwiki links in |lastn= to be wikilinked if nil == project and nil == language then -- when both are nil utilities.set_message ('err_bad_paramlink', last_alias); -- not known, emit an error message -- TODO: err_bad_interwiki? last = utilities.remove_wiki_link (last); -- remove wikilink markup; show display value only end end if link then -- error check |linkn= alias for unknown interwiki link prefix local project, language = interwiki_prefixen_get (link, false); -- false because wiki links in |author-linkn= is an error if nil == project and nil == language then -- when both are nil utilities.set_message ('err_bad_paramlink', link_alias); -- not known, emit an error message -- TODO: err_bad_interwiki? link = nil; -- unset so we don't link link_alias = nil; end end last, etal = name_has_etal (last, etal, false, last_alias); -- find and remove variations on et al. first, etal = name_has_etal (first, etal, false, first_alias); -- find and remove variations on et al. last, first = name_checks (last, first, list_name, last_alias, first_alias); -- multiple names, extraneous annotation, etc. checks if first and not last then -- if there is a firstn without a matching lastn local alias = first_alias:find ('given', 1, true) and 'given' or 'first'; -- get first or given form of the alias utilities.set_message ('err_first_missing_last', { first_alias, -- param name of alias missing its mate first_alias:gsub (alias, {['first'] = 'last', ['given'] = 'surname'}), -- make param name appropriate to the alias form }); -- add this error message elseif not first and not last then -- if both firstn and lastn aren't found, are we done? count = count + 1; -- number of times we haven't found last and first if 2 <= count then -- two missing names and we give up break; -- normal exit or there is a two-name hole in the list; can't tell which end else -- we have last with or without a first local result; link = link_title_ok (link, link_alias, last, last_alias); -- check for improper wiki-markup if first then link = link_title_ok (link, link_alias, first, first_alias); -- check for improper wiki-markup end names[n] = {last = last, first = first, link = link, mask = mask, corporate = false}; -- add this name to our names list (corporate for |vauthors= only) n = n + 1; -- point to next location in the names table if 1 == count then -- if the previous name was missing utilities.set_message ('err_missing_name', {list_name:match ("(%w+)List"):lower(), i - 1}); -- add this error message end count = 0; -- reset the counter, we're looking for two consecutive missing names end i = i + 1; -- point to next args location end return names, etal; -- all done, return our list of names and the etal flag end --[[--------------------------< N A M E _ T A G _ G E T >------------------------------------------------------ attempt to decode |language=<lang_param> and return language name and matching tag; nil else. This function looks for: <lang_param> as a tag in cfg.lang_tag_remap{} <lang_param> as a name in cfg.lang_name_remap{} <lang_param> as a name in cfg.mw_languages_by_name_t <lang_param> as a tag in cfg.mw_languages_by_tag_t when those fail, presume that <lang_param> is an IETF-like tag that MediaWiki does not recognize. Strip all script, region, variant, whatever subtags from <lang_param> to leave just a two or three character language tag and look for the new <lang_param> in cfg.mw_languages_by_tag_t{} on success, returns name (in properly capitalized form) and matching tag (in lowercase); on failure returns nil ]] local function name_tag_get (lang_param) local lang_param_lc = mw.ustring.lower (lang_param); -- use lowercase as an index into the various tables local name; local tag; name = cfg.lang_tag_remap[lang_param_lc]; -- assume <lang_param_lc> is a tag; attempt to get remapped language name if name then -- when <name>, <lang_param> is a tag for a remapped language name return name, lang_param_lc; -- so return <name> from remap and <lang_param_lc> end tag = lang_param_lc:match ('^(%a%a%a?)%-.*'); -- still assuming that <lang_param_lc> is a tag; strip script, region, variant subtags name = cfg.lang_tag_remap[tag]; -- attempt to get remapped language name with language subtag only if name then -- when <name>, <tag> is a tag for a remapped language name return name, tag; -- so return <name> from remap and <tag> end if cfg.lang_name_remap[lang_param_lc] then -- not a tag, assume <lang_param_lc> is a name; attempt to get remapped language tag return cfg.lang_name_remap[lang_param_lc][1], cfg.lang_name_remap[lang_param_lc][2]; -- for this <lang_param_lc>, return a (possibly) new name and appropriate tag end tag = cfg.mw_languages_by_name_t[lang_param_lc]; -- assume that <lang_param_lc> is a language name; attempt to get its matching tag if tag then return cfg.mw_languages_by_tag_t[tag], tag; -- <lang_param_lc> is a name so return the name from the table and <tag> end name = cfg.mw_languages_by_tag_t[lang_param_lc]; -- assume that <lang_param_lc> is a tag; attempt to get its matching language name if name then return name, lang_param_lc; -- <lang_param_lc> is a tag so return it and <name> end tag = lang_param_lc:match ('^(%a%a%a?)%-.*'); -- is <lang_param_lc> an IETF-like tag that MediaWiki doesn't recognize? <tag> gets the language subtag; nil else if tag then name = cfg.mw_languages_by_tag_t[tag]; -- attempt to get a language name using the shortened <tag> if name then return name, tag; -- <lang_param_lc> is an unrecognized IETF-like tag so return <name> and language subtag end end end --[[-------------------< L A N G U A G E _ P A R A M E T E R >------------------ Gets language name from a provided two- or three-character ISO 639 code. If a code is recognized by MediaWiki, use the returned name; if not, then use the value that was provided with the language parameter. When |language= contains a recognized language (either code or name), the page is assigned to the category for that code: Category:Norwegian-language sources (no). For valid three-character code languages, the page is assigned to the single category for '639-2' codes: Category:CS1 ISO 639-2 language sources. Languages that are the same as the local wiki are not categorized. MediaWiki does not recognize three-character equivalents of two-character codes: code 'ar' is recognized but code 'ara' is not. This function supports multiple languages in the form |language=nb, French, th where the language names or codes are separated from each other by commas with optional space characters. ]] local function language_parameter (lang) local tag; -- some form of IETF-like language tag; language subtag with optional region, sript, vatiant, etc subtags local lang_subtag; -- ve populates |language= with mostly unecessary region subtags the MediaWiki does not recognize; this is the base language subtag local name; -- the language name local language_list = {}; -- table of language names to be rendered local names_t = {}; -- table made from the value assigned to |language= local this_wiki_name = mw.language.fetchLanguageName (cfg.this_wiki_code, cfg.this_wiki_code); -- get this wiki's language name names_t = mw.text.split (lang, '%s*,%s*'); -- names should be a comma separated list for _, lang in ipairs (names_t) do -- reuse lang here because we don't yet know if lang is a language name or a language tag name, tag = name_tag_get (lang); -- attempt to get name/tag pair for <lang>; <name> has proper capitalization; <tag> is lowercase if utilities.is_set (tag) then lang_subtag = tag:gsub ('^(%a%a%a?)%-.*', '%1'); -- for categorization, strip any IETF-like tags from language tag if cfg.this_wiki_code ~= lang_subtag then -- when the language is not the same as this wiki's language if 2 == lang_subtag:len() then -- and is a two-character tag utilities.add_prop_cat ('foreign-lang-source', {name, tag}, lang_subtag); -- categorize it; tag appended to allow for multiple language categorization else -- or is a recognized language (but has a three-character tag) utilities.add_prop_cat ('foreign-lang-source-2', {lang_subtag}, lang_subtag); -- categorize it differently TODO: support multiple three-character tag categories per cs1|2 template? end elseif cfg.local_lang_cat_enable then -- when the language and this wiki's language are the same and categorization is enabled utilities.add_prop_cat ('local-lang-source', {name, lang_subtag}); -- categorize it end else name = lang; -- return whatever <lang> has so that we show something utilities.set_message ('maint_unknown_lang'); -- add maint category if not already added end table.insert (language_list, name); name = ''; -- so we can reuse it end name = utilities.make_sep_list (#language_list, language_list); if (1 == #language_list) and (lang_subtag == cfg.this_wiki_code) then -- when only one language, find lang name in this wiki lang name; for |language=en-us, 'English' in 'American English' return ''; -- if one language and that language is this wiki's return an empty string (no annotation) end return (" " .. wrap_msg ('language', name)); -- otherwise wrap with '(in ...)' --[[ TODO: should only return blank or name rather than full list so we can clean up the bunched parenthetical elements Language, Type, Format ]] end --[[-----------------------< S E T _ C S _ S T Y L E >-------------------------- Gets the default CS style configuration for the given mode. Returns default separator and either postscript as passed in or the default. In CS1, the default postscript and separator are '.'. In CS2, the default postscript is the empty string and the default separator is ','. ]] local function set_cs_style (postscript, mode) if utilities.is_set(postscript) then -- emit a maintenance message if user postscript is the default cs1 postscript -- we catch the opposite case for cs2 in set_style if mode == 'cs1' and postscript == cfg.presentation['ps_' .. mode] then utilities.set_message ('maint_postscript'); end else postscript = cfg.presentation['ps_' .. mode]; end return cfg.presentation['sep_' .. mode], postscript; end --[[--------------------------< S E T _ S T Y L E >----------------------------- Sets the separator and postscript styles. Checks the |mode= first and the #invoke CitationClass second. Removes the postscript if postscript == none. ]] local function set_style (mode, postscript, cite_class) local sep; if 'cs2' == mode then sep, postscript = set_cs_style (postscript, 'cs2'); elseif 'cs1' == mode then sep, postscript = set_cs_style (postscript, 'cs1'); elseif 'citation' == cite_class then sep, postscript = set_cs_style (postscript, 'cs2'); else sep, postscript = set_cs_style (postscript, 'cs1'); end if cfg.keywords_xlate[postscript:lower()] == 'none' then -- emit a maintenance message if user postscript is the default cs2 postscript -- we catch the opposite case for cs1 in set_cs_style if 'cs2' == mode or 'citation' == cite_class then utilities.set_message ('maint_postscript'); end postscript = ''; end return sep, postscript end --[=[-------------------------< I S _ P D F >----------------------------------- Determines if a URL has the file extension that is one of the PDF file extensions used by [[MediaWiki:Common.css]] when applying the PDF icon to external links. returns true if file extension is one of the recognized extensions, else false ]=] local function is_pdf (url) return url:match ('%.pdf$') or url:match ('%.PDF$') or url:match ('%.pdf[%?#]') or url:match ('%.PDF[%?#]') or url:match ('%.PDF&#035') or url:match ('%.pdf&#035'); end --[[--------------------------< S T Y L E _ F O R M A T >----------------------- Applies CSS style to |format=, |chapter-format=, etc. Also emits an error message if the format parameter does not have a matching URL parameter. If the format parameter is not set and the URL contains a file extension that is recognized as a PDF document by MediaWiki's commons.css, this code will set the format parameter to (PDF) with the appropriate styling. ]] local function style_format (format, url, fmt_param, url_param) if utilities.is_set (format) then format = utilities.wrap_style ('format', format); -- add leading space, parentheses, resize if not utilities.is_set (url) then utilities.set_message ('err_format_missing_url', {fmt_param, url_param}); -- add an error message end elseif is_pdf (url) then -- format is not set so if URL is a PDF file then format = utilities.wrap_style ('format', 'PDF'); -- set format to PDF else format = ''; -- empty string for concatenation end return format; end --[[---------------------< G E T _ D I S P L A Y _ N A M E S >------------------ Returns a number that defines the number of names displayed for author and editor name lists and a Boolean flag to indicate when et al. should be appended to the name list. When the value assigned to |display-xxxxors= is a number greater than or equal to zero, return the number and the previous state of the 'etal' flag (false by default but may have been set to true if the name list contains some variant of the text 'et al.'). When the value assigned to |display-xxxxors= is the keyword 'etal', return a number that is one greater than the number of authors in the list and set the 'etal' flag true. This will cause the list_people() to display all of the names in the name list followed by 'et al.' In all other cases, returns nil and the previous state of the 'etal' flag. inputs: max: A['DisplayAuthors'] or A['DisplayEditors'], etc; a number or some flavor of etal count: #a or #e list_name: 'authors' or 'editors' etal: author_etal or editor_etal This function sets an error message when |display-xxxxors= value greater than or equal to number of names but not when <max> comes from {{cs1 config}} global settings. When using global settings, <param> is set to the keyword 'cs1 config' which is used to supress the normal error. Error is suppressed because it is to be expected that some citations in an article will have the same or fewer names that the limit specified in {{cs1 config}}. ]] local function get_display_names (max, count, list_name, etal, param) if utilities.is_set (max) then if 'etal' == max:lower():gsub("[ '%.]", '') then -- the :gsub() portion makes 'etal' from a variety of 'et al.' spellings and stylings max = count + 1; -- number of authors + 1 so display all author name plus et al. etal = true; -- overrides value set by extract_names() elseif max:match ('^%d+$') then -- if is a string of numbers max = tonumber (max); -- make it a number if (max >= count) and ('cs1 config' ~= param) then -- error when local |display-xxxxors= value greater than or equal to number of names; not an error when using global setting utilities.set_message ('err_disp_name', {param, max}); -- add error message max = nil; end else -- not a valid keyword or number utilities.set_message ('err_disp_name', {param, max}); -- add error message max = nil; -- unset; as if |display-xxxxors= had not been set end end return max, etal; end --[[----------< E X T R A _ T E X T _ I N _ P A G E _ C H E C K >--------------- Adds error if |page=, |pages=, |quote-page=, |quote-pages= has what appears to be some form of p. or pp. abbreviation in the first characters of the parameter content. check page for extraneous p, p., pp, pp., pg, pg. at start of parameter value: good pattern: '^P[^%.P%l]' matches when page begins PX or P# but not Px where x and X are letters and # is a digit bad pattern: '^[Pp][PpGg]' matches when page begins pp, pP, Pp, PP, pg, pG, Pg, PG ]] local function extra_text_in_page_check (val, name) if not val:match (cfg.vol_iss_pg_patterns.good_ppattern) then for _, pattern in ipairs (cfg.vol_iss_pg_patterns.bad_ppatterns) do -- spin through the selected sequence table of patterns if val:match (pattern) then -- when a match, error so utilities.set_message ('err_extra_text_pages', name); -- add error message return; -- and done end end end end --[[--------------------------< E X T R A _ T E X T _ I N _ V O L _ I S S _ C H E C K >------------------------ Adds error if |volume= or |issue= has what appears to be some form of redundant 'type' indicator. For |volume=: 'V.', or 'Vol.' (with or without the dot) abbreviations or 'Volume' in the first characters of the parameter content (all case insensitive). 'V' and 'v' (without the dot) are presumed to be roman numerals so are allowed. For |issue=: 'No.', 'I.', 'Iss.' (with or without the dot) abbreviations, or 'Issue' in the first characters of the parameter content (all case insensitive). Single character values ('v', 'i', 'n') allowed when not followed by separator character ('.', ':', '=', or whitespace character) – param values are trimmed of whitespace by MediaWiki before delivered to the module. <val> is |volume= or |issue= parameter value <name> is |volume= or |issue= parameter name for error message <selector> is 'v' for |volume=, 'i' for |issue= sets error message on failure; returns nothing ]] local function extra_text_in_vol_iss_check (val, name, selector) if not utilities.is_set (val) then return; end local patterns = 'v' == selector and cfg.vol_iss_pg_patterns.vpatterns or cfg.vol_iss_pg_patterns.ipatterns; local handler = 'v' == selector and 'err_extra_text_volume' or 'err_extra_text_issue'; val = val:lower(); -- force parameter value to lower case for _, pattern in ipairs (patterns) do -- spin through the selected sequence table of patterns if val:match (pattern) then -- when a match, error so utilities.set_message (handler, name); -- add error message return; -- and done end end end --[=[-------------------------< G E T _ V _ N A M E _ T A B L E >---------------------------------------------- split apart a |vauthors= or |veditors= parameter. This function allows for corporate names, wrapped in doubled parentheses to also have commas; in the old version of the code, the doubled parentheses were included in the rendered citation and in the metadata. Individual author names may be wikilinked |vauthors=Jones AB, [[E. B. White|White EB]], ((Black, Brown, and Co.)) ]=] local function get_v_name_table (vparam, output_table, output_link_table) local name_table = mw.text.split(vparam, "%s*,%s*"); -- names are separated by commas local wl_type, label, link; -- wl_type not used here; just a placeholder local i = 1; while name_table[i] do if name_table[i]:match ('^%(%(.*[^%)][^%)]$') then -- first segment of corporate with one or more commas; this segment has the opening doubled parentheses local name = name_table[i]; i = i + 1; -- bump indexer to next segment while name_table[i] do name = name .. ', ' .. name_table[i]; -- concatenate with previous segments if name_table[i]:match ('^.*%)%)$') then -- if this table member has the closing doubled parentheses break; -- and done reassembling so end i = i + 1; -- bump indexer end table.insert (output_table, name); -- and add corporate name to the output table table.insert (output_link_table, ''); -- no wikilink else wl_type, label, link = utilities.is_wikilink (name_table[i]); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]] table.insert (output_table, label); -- add this name if 1 == wl_type then table.insert (output_link_table, label); -- simple wikilink [[D]] else table.insert (output_link_table, link); -- no wikilink or [[L|D]]; add this link if there is one, else empty string end end i = i + 1; end return output_table; end --[[--------------------------< P A R S E _ V A U T H O R S _ V E D I T O R S >-------------------------------- This function extracts author / editor names from |vauthors= or |veditors= and finds matching |xxxxor-maskn= and |xxxxor-linkn= in args. It then returns a table of assembled names just as extract_names() does. Author / editor names in |vauthors= or |veditors= must be in Vancouver system style. Corporate or institutional names may sometimes be required and because such names will often fail the is_good_vanc_name() and other format compliance tests, are wrapped in doubled parentheses ((corporate name)) to suppress the format tests. Supports generational suffixes Jr, 2nd, 3rd, 4th–6th. This function sets the Vancouver error when a required comma is missing and when there is a space between an author's initials. ]] local function parse_vauthors_veditors (args, vparam, list_name) local names = {}; -- table of names assembled from |vauthors=, |author-maskn=, |author-linkn= local v_name_table = {}; local v_link_table = {}; -- when name is wikilinked, targets go in this table local etal = false; -- return value set to true when we find some form of et al. vauthors parameter local last, first, link, mask, suffix; local corporate = false; vparam, etal = name_has_etal (vparam, etal, true); -- find and remove variations on et al. do not categorize (do it here because et al. might have a period) v_name_table = get_v_name_table (vparam, v_name_table, v_link_table); -- names are separated by commas for i, v_name in ipairs(v_name_table) do first = ''; -- set to empty string for concatenation and because it may have been set for previous author/editor local accept_name; v_name, accept_name = utilities.has_accept_as_written (v_name); -- remove accept-this-as-written markup when it wraps all of <v_name> if accept_name then last = v_name; corporate = true; -- flag used in list_people() elseif string.find(v_name, "%s") then if v_name:find('[;%.]') then -- look for commonly occurring punctuation characters; add_vanc_error (cfg.err_msg_supl.punctuation, i); end local lastfirstTable = {} lastfirstTable = mw.text.split(v_name, "%s+") first = table.remove(lastfirstTable); -- removes and returns value of last element in table which should be initials or generational suffix if not mw.ustring.match (first, '^%u+$') then -- mw.ustring here so that later we will catch non-Latin characters suffix = first; -- not initials so assume that whatever we got is a generational suffix first = table.remove(lastfirstTable); -- get what should be the initials from the table end last = table.concat(lastfirstTable, ' ') -- returns a string that is the concatenation of all other names that are not initials and generational suffix if not utilities.is_set (last) then first = ''; -- unset last = v_name; -- last empty because something wrong with first add_vanc_error (cfg.err_msg_supl.name, i); end if mw.ustring.match (last, '%a+%s+%u+%s+%a+') then add_vanc_error (cfg.err_msg_supl['missing comma'], i); -- matches last II last; the case when a comma is missing end if mw.ustring.match (v_name, ' %u %u$') then -- this test is in the wrong place TODO: move or replace with a more appropriate test add_vanc_error (cfg.err_msg_supl.initials, i); -- matches a space between two initials end else last = v_name; -- last name or single corporate name? Doesn't support multiword corporate names? do we need this? end if utilities.is_set (first) then if not mw.ustring.match (first, "^%u?%u$") then -- first shall contain one or two upper-case letters, nothing else add_vanc_error (cfg.err_msg_supl.initials, i); -- too many initials; mixed case initials (which may be ok Romanization); hyphenated initials end is_good_vanc_name (last, first, suffix, i); -- check first and last before restoring the suffix which may have a non-Latin digit if utilities.is_set (suffix) then first = first .. ' ' .. suffix; -- if there was a suffix concatenate with the initials suffix = ''; -- unset so we don't add this suffix to all subsequent names end else if not corporate then is_good_vanc_name (last, '', nil, i); end end link = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i ) or v_link_table[i]; mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i ); names[i] = {last = last, first = first, link = link, mask = mask, corporate = corporate}; -- add this assembled name to our names list end return names, etal; -- all done, return our list of names end --[[--------------------------< S E L E C T _ A U T H O R _ E D I T O R _ S O U R C E >------------------------ Select one of |authors=, |authorn= / |lastn / firstn=, or |vauthors= as the source of the author name list or select one of |editorn= / editor-lastn= / |editor-firstn= or |veditors= as the source of the editor name list. Only one of these appropriate three will be used. The hierarchy is: |authorn= (and aliases) highest and |authors= lowest; |editorn= (and aliases) highest and |veditors= lowest (support for |editors= withdrawn) When looking for |authorn= / |editorn= parameters, test |xxxxor1= and |xxxxor2= (and all of their aliases); stops after the second test which mimicks the test used in extract_names() when looking for a hole in the author name list. There may be a better way to do this, I just haven't discovered what that way is. Emits an error message when more than one xxxxor name source is provided. In this function, vxxxxors = vauthors or veditors; xxxxors = authors as appropriate. ]] local function select_author_editor_source (vxxxxors, xxxxors, args, list_name) local lastfirst = false; if utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 1 ) or -- do this twice in case we have a |first1= without a |last1=; this ... utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 1 ) or -- ... also catches the case where |first= is used with |vauthors= utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 2 ) or utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 2 ) then lastfirst = true; end if (utilities.is_set (vxxxxors) and true == lastfirst) or -- these are the three error conditions (utilities.is_set (vxxxxors) and utilities.is_set (xxxxors)) or (true == lastfirst and utilities.is_set (xxxxors)) then local err_name; if 'AuthorList' == list_name then -- figure out which name should be used in error message err_name = 'author'; else err_name = 'editor'; end utilities.set_message ('err_redundant_parameters', err_name .. '-name-list parameters'); -- add error message end if true == lastfirst then return 1 end; -- return a number indicating which author name source to use if utilities.is_set (vxxxxors) then return 2 end; if utilities.is_set (xxxxors) then return 3 end; return 1; -- no authors so return 1; this allows missing author name test to run in case there is a first without last end --[[--------------------------< I S _ V A L I D _ P A R A M E T E R _ V A L U E >------------------------------ This function is used to validate a parameter's assigned value for those parameters that have only a limited number of allowable values (yes, y, true, live, dead, etc.). When the parameter value has not been assigned a value (missing or empty in the source template) the function returns the value specified by ret_val. If the parameter value is one of the list of allowed values returns the translated value; else, emits an error message and returns the value specified by ret_val. TODO: explain <invert> ]] local function is_valid_parameter_value (value, name, possible, ret_val, invert) if not utilities.is_set (value) then return ret_val; -- an empty parameter is ok end if (not invert and utilities.in_array (value, possible)) then -- normal; <value> is in <possible> table return cfg.keywords_xlate[value]; -- return translation of parameter keyword elseif invert and not utilities.in_array (value, possible) then -- invert; <value> is not in <possible> table return value; -- return <value> as it is else utilities.set_message ('err_invalid_param_val', {name, value}); -- not an allowed value so add error message return ret_val; end end --[[--------------------------< T E R M I N A T E _ N A M E _ L I S T >---------------------------------------- This function terminates a name list (author, contributor, editor) with a separator character (sepc) and a space when the last character is not a sepc character or when the last three characters are not sepc followed by two closing square brackets (close of a wikilink). When either of these is true, the name_list is terminated with a single space character. ]] local function terminate_name_list (name_list, sepc) if (string.sub (name_list, -3, -1) == sepc .. '. ') then -- if already properly terminated return name_list; -- just return the name list elseif (string.sub (name_list, -1, -1) == sepc) or (string.sub (name_list, -3, -1) == sepc .. ']]') then -- if last name in list ends with sepc char return name_list .. " "; -- don't add another else return name_list .. sepc .. ' '; -- otherwise terminate the name list end end --[[-------------------------< F O R M A T _ V O L U M E _ I S S U E >----------------------------------------- returns the concatenation of the formatted volume and issue (or journal article number) parameters as a single string; or formatted volume or formatted issue, or an empty string if neither are set. ]] local function format_volume_issue (volume, issue, article, cite_class, origin, sepc, lower) if not utilities.is_set (volume) and not utilities.is_set (issue) and not utilities.is_set (article) then return ''; end -- same condition as in format_pages_sheets() local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin); local is_numeric_vol = volume and (volume:match ('^[MDCLXVI]+$') or volume:match ('^%d+$')); -- is only uppercase roman numerals or only digits? local is_long_vol = volume and (4 < mw.ustring.len(volume)); -- is |volume= value longer than 4 characters? if volume and (not is_numeric_vol and is_long_vol) then -- when not all digits or Roman numerals, is |volume= longer than 4 characters? utilities.add_prop_cat ('long-vol'); -- yes, add properties cat end if is_journal then -- journal-style formatting local vol = ''; if utilities.is_set (volume) then if is_numeric_vol then -- |volume= value all digits or all uppercase Roman numerals? vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, volume}); -- render in bold face elseif is_long_vol then -- not all digits or Roman numerals; longer than 4 characters? vol = utilities.substitute (cfg.messages['j-vol'], {sepc, utilities.hyphen_to_dash (volume)}); -- not bold else -- four or fewer characters vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, utilities.hyphen_to_dash (volume)}); -- bold end end vol = vol .. (utilities.is_set (issue) and utilities.substitute (cfg.messages['j-issue'], issue) or '') vol = vol .. (utilities.is_set (article) and utilities.substitute (cfg.messages['j-article-num'], article) or '') return vol; end if 'podcast' == cite_class and utilities.is_set (issue) then return wrap_msg ('issue', {sepc, issue}, lower); end if 'conference' == cite_class and utilities.is_set (article) then -- |article-number= supported only in journal and conference cites if utilities.is_set (volume) and utilities.is_set (article) then -- both volume and article number return wrap_msg ('vol-art', {sepc, utilities.hyphen_to_dash (volume), article}, lower); elseif utilities.is_set (article) then -- article number alone; when volume alone, handled below return wrap_msg ('art', {sepc, article}, lower); end end -- all other types of citation if utilities.is_set (volume) and utilities.is_set (issue) then return wrap_msg ('vol-no', {sepc, utilities.hyphen_to_dash (volume), issue}, lower); elseif utilities.is_set (volume) then return wrap_msg ('vol', {sepc, utilities.hyphen_to_dash (volume)}, lower); else return wrap_msg ('issue', {sepc, issue}, lower); end end --[[-------------------------< F O R M A T _ P A G E S _ S H E E T S >----------------------------------------- adds static text to one of |page(s)= or |sheet(s)= values and returns it with all of the others set to empty strings. The return order is: page, pages, sheet, sheets Singular has priority over plural when both are provided. ]] local function format_pages_sheets (page, pages, sheet, sheets, cite_class, origin, sepc, nopp, lower) if 'map' == cite_class then -- only cite map supports sheet(s) as in-source locators if utilities.is_set (sheet) then if 'journal' == origin then return '', '', wrap_msg ('j-sheet', sheet, lower), ''; else return '', '', wrap_msg ('sheet', {sepc, sheet}, lower), ''; end elseif utilities.is_set (sheets) then if 'journal' == origin then return '', '', '', wrap_msg ('j-sheets', sheets, lower); else return '', '', '', wrap_msg ('sheets', {sepc, sheets}, lower); end end end local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin); if utilities.is_set (page) then if is_journal then return utilities.substitute (cfg.messages['j-page(s)'], page), '', '', ''; elseif not nopp then return utilities.substitute (cfg.messages['p-prefix'], {sepc, page}), '', '', ''; else return utilities.substitute (cfg.messages['nopp'], {sepc, page}), '', '', ''; end elseif utilities.is_set (pages) then if is_journal then return utilities.substitute (cfg.messages['j-page(s)'], pages), '', '', ''; elseif tonumber(pages) ~= nil and not nopp then -- if pages is only digits, assume a single page number return '', utilities.substitute (cfg.messages['p-prefix'], {sepc, pages}), '', ''; elseif not nopp then return '', utilities.substitute (cfg.messages['pp-prefix'], {sepc, pages}), '', ''; else return '', utilities.substitute (cfg.messages['nopp'], {sepc, pages}), '', ''; end end return '', '', '', ''; -- return empty strings end --[[--------------------------< I N S O U R C E _ L O C _ G E T >---------------------------------------------- returns one of the in-source locators: page, pages, or at. If any of these are interwiki links to Wikisource, returns the label portion of the interwiki-link as plain text for use in COinS. This COinS thing is done because here we convert an interwiki-link to an external link and add an icon span around that; get_coins_pages() doesn't know about the span. TODO: should it? TODO: add support for sheet and sheets?; streamline; TODO: make it so that this function returns only one of the three as the single in-source (the return value assigned to a new name)? ]] local function insource_loc_get (page, page_orig, pages, pages_orig, at) local ws_url, ws_label, coins_pages, L; -- for Wikisource interwiki-links; TODO: this corrupts page metadata (span remains in place after cleanup; fix there?) if utilities.is_set (page) then if utilities.is_set (pages) or utilities.is_set (at) then pages = ''; -- unset the others at = ''; end extra_text_in_page_check (page, page_orig); -- emit error message when |page= value begins with what looks like p., pp., etc. ws_url, ws_label, L = wikisource_url_make (page); -- make ws URL from |page= interwiki link; link portion L becomes tooltip label if ws_url then page = external_link (ws_url, ws_label .. '&nbsp;', 'ws link in page'); -- space char after label to move icon away from in-source text; TODO: a better way to do this? page = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, page}); coins_pages = ws_label; end elseif utilities.is_set (pages) then if utilities.is_set (at) then at = ''; -- unset end extra_text_in_page_check (pages, pages_orig); -- emit error message when |page= value begins with what looks like p., pp., etc. ws_url, ws_label, L = wikisource_url_make (pages); -- make ws URL from |pages= interwiki link; link portion L becomes tooltip label if ws_url then pages = external_link (ws_url, ws_label .. '&nbsp;', 'ws link in pages'); -- space char after label to move icon away from in-source text; TODO: a better way to do this? pages = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, pages}); coins_pages = ws_label; end elseif utilities.is_set (at) then ws_url, ws_label, L = wikisource_url_make (at); -- make ws URL from |at= interwiki link; link portion L becomes tooltip label if ws_url then at = external_link (ws_url, ws_label .. '&nbsp;', 'ws link in at'); -- space char after label to move icon away from in-source text; TODO: a better way to do this? at = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, at}); coins_pages = ws_label; end end return page, pages, at, coins_pages; end --[[--------------------------< I S _ U N I Q U E _ A R C H I V E _ U R L >------------------------------------ add error message when |archive-url= value is same as |url= or chapter-url= (or alias...) value ]] local function is_unique_archive_url (archive, url, c_url, source, date) if utilities.is_set (archive) then if archive == url or archive == c_url then utilities.set_message ('err_bad_url', {utilities.wrap_style ('parameter', source)}); -- add error message return '', ''; -- unset |archive-url= and |archive-date= because same as |url= or |chapter-url= end end return archive, date; end --[=[-------------------------< A R C H I V E _ U R L _ C H E C K >-------------------------------------------- Check archive.org URLs to make sure they at least look like they are pointing at valid archives and not to the save snapshot URL or to calendar pages. When the archive URL is 'https://web.archive.org/save/' (or http://...) archive.org saves a snapshot of the target page in the URL. That is something that Wikipedia should not allow unwitting readers to do. When the archive.org URL does not have a complete timestamp, archive.org chooses a snapshot according to its own algorithm or provides a calendar 'search' result. [[WP:ELNO]] discourages links to search results. This function looks at the value assigned to |archive-url= and returns empty strings for |archive-url= and |archive-date= and an error message when: |archive-url= holds an archive.org save command URL |archive-url= is an archive.org URL that does not have a complete timestamp (YYYYMMDDhhmmss 14 digits) in the correct place otherwise returns |archive-url= and |archive-date= There are two mostly compatible archive.org URLs: //web.archive.org/<timestamp>... -- the old form //web.archive.org/web/<timestamp>... -- the new form The old form does not support or map to the new form when it contains a display flag. There are four identified flags ('id_', 'js_', 'cs_', 'im_') but since archive.org ignores others following the same form (two letters and an underscore) we don't check for these specific flags but we do check the form. This function supports a preview mode. When the article is rendered in preview mode, this function may return a modified archive URL: for save command errors, return undated wildcard (/*/) for timestamp errors when the timestamp has a wildcard, return the URL unmodified for timestamp errors when the timestamp does not have a wildcard, return with timestamp limited to six digits plus wildcard (/yyyymm*/) A secondary function is to return an archive-url timestamp from those urls that have them (archive.org and archive.today). The timestamp is used by validation.archive_date_check() to see if the value in |archive-date= matches the timestamp in the archive url. ]=] local function archive_url_check (url, date) local err_msg = ''; -- start with the error message empty local path, timestamp, flag; -- portions of the archive.org URL timestamp = url:match ('//archive.today/(%d%d%d%d%d%d%d%d%d%d%d%d%d%d)/'); -- get timestamp from archive.today urls if timestamp then -- if this was an archive.today url ... return url, date, timestamp; -- return ArchiveURL, ArchiveDate, and timestamp from |archive-url=, and done end -- here for archive.org urls if (not url:match('//web%.archive%.org/')) and (not url:match('//liveweb%.archive%.org/')) then -- also deprecated liveweb Wayback machine URL return url, date; -- not an archive.org archive, return ArchiveURL and ArchiveDate end if url:match('//web%.archive%.org/save/') then -- if a save command URL, we don't want to allow saving of the target page err_msg = cfg.err_msg_supl.save; url = url:gsub ('(//web%.archive%.org)/save/', '%1/*/', 1); -- for preview mode: modify ArchiveURL elseif url:match('//liveweb%.archive%.org/') then err_msg = cfg.err_msg_supl.liveweb; else path, timestamp, flag = url:match('//web%.archive%.org/([^%d]*)(%d+)([^/]*)/'); -- split out some of the URL parts for evaluation if not path then -- malformed in some way; pattern did not match err_msg = cfg.err_msg_supl.timestamp; elseif 14 ~= timestamp:len() then -- path and flag optional, must have 14-digit timestamp here err_msg = cfg.err_msg_supl.timestamp; if '*' ~= flag then local replacement = timestamp:match ('^%d%d%d%d%d%d') or timestamp:match ('^%d%d%d%d'); -- get the first 6 (YYYYMM) or first 4 digits (YYYY) if replacement then -- nil if there aren't at least 4 digits (year) replacement = replacement .. string.rep ('0', 14 - replacement:len()); -- year or yearmo (4 or 6 digits) zero-fill to make 14-digit timestamp url=url:gsub ('(//web%.archive%.org/[^%d]*)%d[^/]*', '%1' .. replacement .. '*', 1) -- for preview, modify ts to 14 digits plus splat for calendar display end end elseif utilities.is_set (path) and 'web/' ~= path then -- older archive URLs do not have the extra 'web/' path element err_msg = cfg.err_msg_supl.path; elseif utilities.is_set (flag) and not utilities.is_set (path) then -- flag not allowed with the old form URL (without the 'web/' path element) err_msg = cfg.err_msg_supl.flag; elseif utilities.is_set (flag) and not flag:match ('%a%a_') then -- flag if present must be two alpha characters and underscore (requires 'web/' path element) err_msg = cfg.err_msg_supl.flag; else return url, date, timestamp; -- return ArchiveURL, ArchiveDate, and timestamp from |archive-url= end end -- if here, something not right so utilities.set_message ('err_archive_url', {err_msg}); -- add error message and if is_preview_mode then return url, date, timestamp; -- preview mode so return ArchiveURL, ArchiveDate, and timestamp from |archive-url= else return '', ''; -- return empty strings for ArchiveURL and ArchiveDate end end --[[--------------------------< P L A C E _ C H E C K >-------------------------------------------------------- check |place=, |publication-place=, |location= to see if these params include digits. This function added because many editors misuse location to specify the in-source location (|page(s)= and |at= are supposed to do that) returns the original parameter value without modification; added maint cat when parameter value contains digits ]] local function place_check (param_val) if not utilities.is_set (param_val) then -- parameter empty or omitted return param_val; -- return that empty state end if mw.ustring.find (param_val, '%d') then -- not empty, are there digits in the parameter value utilities.set_message ('maint_location'); -- yep, add maint cat end return param_val; -- and done end --[[--------------------------< I S _ A R C H I V E D _ C O P Y >---------------------------------------------- compares |title= to 'Archived copy' (placeholder added by bots that can't find proper title); if matches, return true; nil else ]] local function is_archived_copy (title) title = mw.ustring.lower(title); -- switch title to lower case if title:find (cfg.special_case_translation.archived_copy.en) then -- if title is 'Archived copy' return true; elseif cfg.special_case_translation.archived_copy['local'] then if mw.ustring.find (title, cfg.special_case_translation.archived_copy['local']) then -- mw.ustring() because might not be Latin script return true; end end end --[[--------------------------< C I T A T I O N 0 >------------------------------------------------------------ This is the main function doing the majority of the citation formatting. ]] local function citation0( config, args ) --[[ Load Input Parameters The argument_wrapper facilitates the mapping of multiple aliases to single internal variable. ]] local A = argument_wrapper ( args ); local i -- Pick out the relevant fields from the arguments. Different citation templates -- define different field names for the same underlying things. local author_etal; local a = {}; -- authors list from |lastn= / |firstn= pairs or |vauthors= local Authors; local NameListStyle; if cfg.global_cs1_config_t['NameListStyle'] then -- global setting in {{cs1 config}} overrides local |name-list-style= parameter value; nil when empty or assigned value invalid NameListStyle = is_valid_parameter_value (cfg.global_cs1_config_t['NameListStyle'], 'cs1 config: name-list-style', cfg.keywords_lists['name-list-style'], ''); -- error messaging 'param' here is a hoax else NameListStyle = is_valid_parameter_value (A['NameListStyle'], A:ORIGIN('NameListStyle'), cfg.keywords_lists['name-list-style'], ''); end if cfg.global_cs1_config_t['NameListStyle'] and utilities.is_set (A['NameListStyle']) then -- when template has |name-list-style=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end local Collaboration = A['Collaboration']; do -- to limit scope of selected local selected = select_author_editor_source (A['Vauthors'], A['Authors'], args, 'AuthorList'); if 1 == selected then a, author_etal = extract_names (args, 'AuthorList'); -- fetch author list from |authorn= / |lastn= / |firstn=, |author-linkn=, and |author-maskn= elseif 2 == selected then NameListStyle = 'vanc'; -- override whatever |name-list-style= might be a, author_etal = parse_vauthors_veditors (args, A['Vauthors'], 'AuthorList'); -- fetch author list from |vauthors=, |author-linkn=, and |author-maskn= elseif 3 == selected then Authors = A['Authors']; -- use content of |authors= if 'authors' == A:ORIGIN('Authors') then -- but add a maint cat if the parameter is |authors= utilities.set_message ('maint_authors'); -- because use of this parameter is discouraged; what to do about the aliases is a TODO: end end if utilities.is_set (Collaboration) then author_etal = true; -- so that |display-authors=etal not required end end local editor_etal; local e = {}; -- editors list from |editor-lastn= / |editor-firstn= pairs or |veditors= do -- to limit scope of selected local selected = select_author_editor_source (A['Veditors'], nil, args, 'EditorList'); -- support for |editors= withdrawn if 1 == selected then e, editor_etal = extract_names (args, 'EditorList'); -- fetch editor list from |editorn= / |editor-lastn= / |editor-firstn=, |editor-linkn=, and |editor-maskn= elseif 2 == selected then NameListStyle = 'vanc'; -- override whatever |name-list-style= might be e, editor_etal = parse_vauthors_veditors (args, args.veditors, 'EditorList'); -- fetch editor list from |veditors=, |editor-linkn=, and |editor-maskn= end end local Chapter = A['Chapter']; -- done here so that we have access to |contribution= from |chapter= aliases local Chapter_origin = A:ORIGIN ('Chapter'); local Contribution; -- because contribution is required for contributor(s) if 'contribution' == Chapter_origin then Contribution = Chapter; -- get the name of the contribution end local c = {}; -- contributors list from |contributor-lastn= / contributor-firstn= pairs if utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (A['Periodical']) then -- |contributor= and |contribution= only supported in book cites c = extract_names (args, 'ContributorList'); -- fetch contributor list from |contributorn= / |contributor-lastn=, -firstn=, -linkn=, -maskn= if 0 < #c then if not utilities.is_set (Contribution) then -- |contributor= requires |contribution= utilities.set_message ('err_contributor_missing_required_param', 'contribution'); -- add missing contribution error message c = {}; -- blank the contributors' table; it is used as a flag later end if 0 == #a then -- |contributor= requires |author= utilities.set_message ('err_contributor_missing_required_param', 'author'); -- add missing author error message c = {}; -- blank the contributors' table; it is used as a flag later end end else -- if not a book cite if utilities.select_one (args, cfg.aliases['ContributorList-Last'], 'err_redundant_parameters', 1 ) then -- are there contributor name list parameters? utilities.set_message ('err_contributor_ignored'); -- add contributor ignored error message end Contribution = nil; -- unset end local Title = A['Title']; local TitleLink = A['TitleLink']; local auto_select = ''; -- default is auto local accept_link; TitleLink, accept_link = utilities.has_accept_as_written (TitleLink, true); -- test for accept-this-as-written markup if (not accept_link) and utilities.in_array (TitleLink, {'none', 'pmc', 'doi'}) then -- check for special keywords auto_select = TitleLink; -- remember selection for later TitleLink = ''; -- treat as if |title-link= would have been empty end TitleLink = link_title_ok (TitleLink, A:ORIGIN ('TitleLink'), Title, 'title'); -- check for wiki-markup in |title-link= or wiki-markup in |title= when |title-link= is set local Section = ''; -- {{cite map}} only; preset to empty string for concatenation if not used if 'map' == config.CitationClass and 'section' == Chapter_origin then Section = A['Chapter']; -- get |section= from |chapter= alias list; |chapter= and the other aliases not supported in {{cite map}} Chapter = ''; -- unset for now; will be reset later from |map= if present end local Periodical = A['Periodical']; local Periodical_origin = A:ORIGIN('Periodical'); local ScriptPeriodical = A['ScriptPeriodical']; local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical'); local TransPeriodical = A['TransPeriodical']; local TransPeriodical_origin = A:ORIGIN ('TransPeriodical'); if (utilities.in_array (config.CitationClass, {'book', 'encyclopaedia'}) and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (ScriptPeriodical))) then local param; if utilities.is_set (Periodical) then -- get a parameter name from one of these periodical related meta-parameters Periodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters param = Periodical_origin -- get parameter name for error messaging elseif utilities.is_set (TransPeriodical) then TransPeriodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters param = TransPeriodical_origin; -- get parameter name for error messaging elseif utilities.is_set (ScriptPeriodical) then ScriptPeriodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters param = ScriptPeriodical_origin; -- get parameter name for error messaging end if utilities.is_set (param) then -- if we found one utilities.set_message ('err_periodical_ignored', {param}); -- emit an error message end end if utilities.is_set (Periodical) then local i; Periodical, i = utilities.strip_apostrophe_markup (Periodical); -- strip apostrophe markup so that metadata isn't contaminated if i then -- non-zero when markup was stripped so emit an error message utilities.set_message ('err_apostrophe_markup', {Periodical_origin}); end end if 'mailinglist' == config.CitationClass then -- special case for {{cite mailing list}} if utilities.is_set (Periodical) and utilities.is_set (A ['MailingList']) then -- both set emit an error TODO: make a function for this and similar? utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', Periodical_origin) .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'mailinglist')}); end Periodical = A ['MailingList']; -- error or no, set Periodical to |mailinglist= value because this template is {{cite mailing list}} Periodical_origin = A:ORIGIN('MailingList'); end -- web and news not tested for now because of -- Wikipedia:Administrators%27_noticeboard#Is_there_a_semi-automated_tool_that_could_fix_these_annoying_"Cite_Web"_errors? if not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) then -- 'periodical' templates require periodical parameter -- local p = {['journal'] = 'journal', ['magazine'] = 'magazine', ['news'] = 'newspaper', ['web'] = 'website'}; -- for error message local p = {['journal'] = 'journal', ['magazine'] = 'magazine'}; -- for error message if p[config.CitationClass] then utilities.set_message ('err_missing_periodical', {config.CitationClass, p[config.CitationClass]}); end end local Volume; -- local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical'); if 'citation' == config.CitationClass then if utilities.is_set (Periodical) then if not utilities.in_array (Periodical_origin, cfg.citation_no_volume_t) then -- {{citation}} does not render |volume= when these parameters are used Volume = A['Volume']; -- but does for all other 'periodicals' end elseif utilities.is_set (ScriptPeriodical) then if 'script-website' ~= ScriptPeriodical_origin then -- {{citation}} does not render volume for |script-website= Volume = A['Volume']; -- but does for all other 'periodicals' end else Volume = A['Volume']; -- and does for non-'periodical' cites end elseif utilities.in_array (config.CitationClass, cfg.templates_using_volume) then -- render |volume= for cs1 according to the configuration settings Volume = A['Volume']; end extra_text_in_vol_iss_check (Volume, A:ORIGIN ('Volume'), 'v'); local Issue; if 'citation' == config.CitationClass then if utilities.is_set (Periodical) and utilities.in_array (Periodical_origin, cfg.citation_issue_t) then -- {{citation}} may render |issue= when these parameters are used Issue = utilities.hyphen_to_dash (A['Issue']); end elseif utilities.in_array (config.CitationClass, cfg.templates_using_issue) then -- conference & map books do not support issue; {{citation}} listed here because included in settings table if not (utilities.in_array (config.CitationClass, {'conference', 'map', 'citation'}) and not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical))) then Issue = utilities.hyphen_to_dash (A['Issue']); end end local ArticleNumber; if utilities.in_array (config.CitationClass, {'journal', 'conference'}) or ('citation' == config.CitationClass and utilities.is_set (Periodical) and 'journal' == Periodical_origin) then ArticleNumber = A['ArticleNumber']; end extra_text_in_vol_iss_check (Issue, A:ORIGIN ('Issue'), 'i'); local Page; local Pages; local At; local QuotePage; local QuotePages; if not utilities.in_array (config.CitationClass, cfg.templates_not_using_page) then -- TODO: rewrite to emit ignored parameter error message? Page = A['Page']; Pages = utilities.hyphen_to_dash (A['Pages']); At = A['At']; QuotePage = A['QuotePage']; QuotePages = utilities.hyphen_to_dash (A['QuotePages']); end local Edition = A['Edition']; local PublicationPlace = place_check (A['PublicationPlace'], A:ORIGIN('PublicationPlace')); local Place = place_check (A['Place'], A:ORIGIN('Place')); local PublisherName = A['PublisherName']; local PublisherName_origin = A:ORIGIN('PublisherName'); if utilities.is_set (PublisherName) and (cfg.keywords_xlate['none'] ~= PublisherName) then local i = 0; PublisherName, i = utilities.strip_apostrophe_markup (PublisherName); -- strip apostrophe markup so that metadata isn't contaminated; publisher is never italicized if i and (0 < i) then -- non-zero when markup was stripped so emit an error message utilities.set_message ('err_apostrophe_markup', {PublisherName_origin}); end end if ('document' == config.CitationClass) and not utilities.is_set (PublisherName) then utilities.set_message ('err_missing_publisher', {config.CitationClass, 'publisher'}); end local Newsgroup = A['Newsgroup']; -- TODO: strip apostrophe markup? local Newsgroup_origin = A:ORIGIN('Newsgroup'); if 'newsgroup' == config.CitationClass then if utilities.is_set (PublisherName) and (cfg.keywords_xlate['none'] ~= PublisherName) then -- general use parameter |publisher= not allowed in cite newsgroup utilities.set_message ('err_parameter_ignored', {PublisherName_origin}); end PublisherName = nil; -- ensure that this parameter is unset for the time being; will be used again after COinS end local URL = A['URL']; -- TODO: better way to do this for URL, ChapterURL, and MapURL? local UrlAccess = is_valid_parameter_value (A['UrlAccess'], A:ORIGIN('UrlAccess'), cfg.keywords_lists['url-access'], nil); if not utilities.is_set (URL) and utilities.is_set (UrlAccess) then UrlAccess = nil; utilities.set_message ('err_param_access_requires_param', 'url'); end local ChapterURL = A['ChapterURL']; local ChapterUrlAccess = is_valid_parameter_value (A['ChapterUrlAccess'], A:ORIGIN('ChapterUrlAccess'), cfg.keywords_lists['url-access'], nil); if not utilities.is_set (ChapterURL) and utilities.is_set (ChapterUrlAccess) then ChapterUrlAccess = nil; utilities.set_message ('err_param_access_requires_param', {A:ORIGIN('ChapterUrlAccess'):gsub ('%-access', '')}); end local MapUrlAccess = is_valid_parameter_value (A['MapUrlAccess'], A:ORIGIN('MapUrlAccess'), cfg.keywords_lists['url-access'], nil); if not utilities.is_set (A['MapURL']) and utilities.is_set (MapUrlAccess) then MapUrlAccess = nil; utilities.set_message ('err_param_access_requires_param', {'map-url'}); end local this_page = mw.title.getCurrentTitle(); -- also used for COinS and for language local no_tracking_cats = is_valid_parameter_value (A['NoTracking'], A:ORIGIN('NoTracking'), cfg.keywords_lists['yes_true_y'], nil); -- check this page to see if it is in one of the namespaces that cs1 is not supposed to add to the error categories if not utilities.is_set (no_tracking_cats) then -- ignore if we are already not going to categorize this page if cfg.uncategorized_namespaces[this_page.namespace] then -- is this page's namespace id one of the uncategorized namespace ids? no_tracking_cats = "true"; -- set no_tracking_cats end for _, v in ipairs (cfg.uncategorized_subpages) do -- cycle through page name patterns if this_page.text:match (v) then -- test page name against each pattern no_tracking_cats = "true"; -- set no_tracking_cats break; -- bail out if one is found end end end -- check for extra |page=, |pages= or |at= parameters. (also sheet and sheets while we're at it) utilities.select_one (args, {'page', 'p', 'pp', 'pages', 'at', 'sheet', 'sheets'}, 'err_redundant_parameters'); -- this is a dummy call simply to get the error message and category local coins_pages; Page, Pages, At, coins_pages = insource_loc_get (Page, A:ORIGIN('Page'), Pages, A:ORIGIN('Pages'), At); local NoPP = is_valid_parameter_value (A['NoPP'], A:ORIGIN('NoPP'), cfg.keywords_lists['yes_true_y'], nil); if utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- both |publication-place= and |place= (|location=) allowed if different utilities.add_prop_cat ('location-test'); -- add property cat to evaluate how often PublicationPlace and Place are used together if PublicationPlace == Place then Place = ''; -- unset; don't need both if they are the same end elseif not utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- when only |place= (|location=) is set ... PublicationPlace = Place; -- promote |place= (|location=) to |publication-place end if PublicationPlace == Place then Place = ''; end -- don't need both if they are the same local URL_origin = A:ORIGIN('URL'); -- get name of parameter that holds URL local ChapterURL_origin = A:ORIGIN('ChapterURL'); -- get name of parameter that holds ChapterURL local ScriptChapter = A['ScriptChapter']; local ScriptChapter_origin = A:ORIGIN ('ScriptChapter'); local Format = A['Format']; local ChapterFormat = A['ChapterFormat']; local TransChapter = A['TransChapter']; local TransChapter_origin = A:ORIGIN ('TransChapter'); local TransTitle = A['TransTitle']; local ScriptTitle = A['ScriptTitle']; --[[ Parameter remapping for cite encyclopedia: When the citation has these parameters: |encyclopedia= and |title= then map |title= to |article= and |encyclopedia= to |title= for rendering |encyclopedia= and |article= then map |encyclopedia= to |title= for rendering |trans-title= maps to |trans-chapter= when |title= is re-mapped |url= maps to |chapter-url= when |title= is remapped All other combinations of |encyclopedia=, |title=, and |article= are not modified ]] local Encyclopedia = A['Encyclopedia']; -- used as a flag by this module and by ~/COinS if utilities.is_set (Encyclopedia) then -- emit error message when Encyclopedia set but template is other than {{cite encyclopedia}} or {{citation}} if 'encyclopaedia' ~= config.CitationClass and 'citation' ~= config.CitationClass then utilities.set_message ('err_parameter_ignored', {A:ORIGIN ('Encyclopedia')}); Encyclopedia = nil; -- unset because not supported by this template end end if ('encyclopaedia' == config.CitationClass) or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then if utilities.is_set (Periodical) and utilities.is_set (Encyclopedia) then -- when both parameters set emit an error message; {{citation}} only; Periodical not allowed in {{cite encyclopedia}} utilities.set_message ('err_periodical_ignored', {Periodical_origin}); end if utilities.is_set (Encyclopedia) then Periodical = Encyclopedia; -- error or no, set Periodical to Encyclopedia for rendering; {{citation}} could (not legitimately) have both; use Encyclopedia Periodical_origin = A:ORIGIN ('Encyclopedia'); if utilities.is_set (Title) or utilities.is_set (ScriptTitle) then if not utilities.is_set (Chapter) then Chapter = Title; -- |encyclopedia= and |title= are set so map |title= to |article= and |encyclopedia= to |title= for rendering ScriptChapter = ScriptTitle; ScriptChapter_origin = A:ORIGIN('ScriptTitle') TransChapter = TransTitle; ChapterURL = URL; ChapterURL_origin = URL_origin; ChapterUrlAccess = UrlAccess; if not utilities.is_set (ChapterURL) and utilities.is_set (TitleLink) then Chapter = utilities.make_wikilink (TitleLink, Chapter); end Title = Periodical; ChapterFormat = Format; Periodical = ''; -- redundant so unset TransTitle = ''; URL = ''; Format = ''; TitleLink = ''; ScriptTitle = ''; end elseif utilities.is_set (Chapter) or utilities.is_set (ScriptChapter) then -- |title= not set Title = Periodical; -- |encyclopedia= set and |article= set so map |encyclopedia= to |title= for rendering Periodical = ''; -- redundant so unset end end end -- special case for cite techreport. local ID = A['ID']; if (config.CitationClass == "techreport") then -- special case for cite techreport if utilities.is_set (A['Number']) then -- cite techreport uses 'number', which other citations alias to 'issue' if not utilities.is_set (ID) then -- can we use ID for the "number"? ID = A['Number']; -- yes, use it else -- ID has a value so emit error message utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'id') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'number')}); end end end -- Account for the oddity that is {{cite conference}}, before generation of COinS data. local ChapterLink -- = A['ChapterLink']; -- deprecated as a parameter but still used internally by cite episode local Conference = A['Conference']; local BookTitle = A['BookTitle']; local TransTitle_origin = A:ORIGIN ('TransTitle'); if 'conference' == config.CitationClass then if utilities.is_set (BookTitle) then Chapter = Title; Chapter_origin = 'title'; -- ChapterLink = TitleLink; -- |chapter-link= is deprecated ChapterURL = URL; ChapterUrlAccess = UrlAccess; ChapterURL_origin = URL_origin; URL_origin = ''; ChapterFormat = Format; TransChapter = TransTitle; TransChapter_origin = TransTitle_origin; Title = BookTitle; Format = ''; -- TitleLink = ''; TransTitle = ''; URL = ''; end elseif 'speech' ~= config.CitationClass then Conference = ''; -- not cite conference or cite speech so make sure this is empty string end -- CS1/2 mode local Mode; if cfg.global_cs1_config_t['Mode'] then -- global setting in {{cs1 config}} overrides local |mode= parameter value; nil when empty or assigned value invalid Mode = is_valid_parameter_value (cfg.global_cs1_config_t['Mode'], 'cs1 config: mode', cfg.keywords_lists['mode'], ''); -- error messaging 'param' here is a hoax else Mode = is_valid_parameter_value (A['Mode'], A:ORIGIN('Mode'), cfg.keywords_lists['mode'], ''); end if cfg.global_cs1_config_t['Mode'] and utilities.is_set (A['Mode']) then -- when template has |mode=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end -- separator character and postscript local sepc, PostScript = set_style (Mode:lower(), A['PostScript'], config.CitationClass); -- controls capitalization of certain static text local use_lowercase = ( sepc == ',' ); -- cite map oddities local Cartography = ""; local Scale = ""; local Sheet = A['Sheet'] or ''; local Sheets = A['Sheets'] or ''; if config.CitationClass == "map" then if utilities.is_set (Chapter) then --TODO: make a function for this and similar? utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'map') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', Chapter_origin)}); -- add error message end Chapter = A['Map']; Chapter_origin = A:ORIGIN('Map'); ChapterURL = A['MapURL']; ChapterURL_origin = A:ORIGIN('MapURL'); TransChapter = A['TransMap']; ScriptChapter = A['ScriptMap'] ScriptChapter_origin = A:ORIGIN('ScriptMap') ChapterUrlAccess = MapUrlAccess; ChapterFormat = A['MapFormat']; Cartography = A['Cartography']; if utilities.is_set ( Cartography ) then Cartography = sepc .. " " .. wrap_msg ('cartography', Cartography, use_lowercase); end Scale = A['Scale']; if utilities.is_set ( Scale ) then Scale = sepc .. " " .. Scale; end end -- Account for the oddities that are {{cite episode}} and {{cite serial}}, before generation of COinS data. local Series = A['Series']; if 'episode' == config.CitationClass or 'serial' == config.CitationClass then local SeriesLink = A['SeriesLink']; SeriesLink = link_title_ok (SeriesLink, A:ORIGIN ('SeriesLink'), Series, 'series'); -- check for wiki-markup in |series-link= or wiki-markup in |series= when |series-link= is set local Network = A['Network']; local Station = A['Station']; local s, n = {}, {}; -- do common parameters first if utilities.is_set (Network) then table.insert(n, Network); end if utilities.is_set (Station) then table.insert(n, Station); end ID = table.concat(n, sepc .. ' '); if 'episode' == config.CitationClass then -- handle the oddities that are strictly {{cite episode}} local Season = A['Season']; local SeriesNumber = A['SeriesNumber']; if utilities.is_set (Season) and utilities.is_set (SeriesNumber) then -- these are mutually exclusive so if both are set TODO: make a function for this and similar? utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'season') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'seriesno')}); -- add error message SeriesNumber = ''; -- unset; prefer |season= over |seriesno= end -- assemble a table of parts concatenated later into Series if utilities.is_set (Season) then table.insert(s, wrap_msg ('season', Season, use_lowercase)); end if utilities.is_set (SeriesNumber) then table.insert(s, wrap_msg ('seriesnum', SeriesNumber, use_lowercase)); end if utilities.is_set (Issue) then table.insert(s, wrap_msg ('episode', Issue, use_lowercase)); end Issue = ''; -- unset because this is not a unique parameter Chapter = Title; -- promote title parameters to chapter ScriptChapter = ScriptTitle; ScriptChapter_origin = A:ORIGIN('ScriptTitle'); ChapterLink = TitleLink; -- alias |episode-link= TransChapter = TransTitle; ChapterURL = URL; ChapterUrlAccess = UrlAccess; ChapterURL_origin = URL_origin; ChapterFormat = Format; Title = Series; -- promote series to title TitleLink = SeriesLink; Series = table.concat(s, sepc .. ' '); -- this is concatenation of season, seriesno, episode number if utilities.is_set (ChapterLink) and not utilities.is_set (ChapterURL) then -- link but not URL Chapter = utilities.make_wikilink (ChapterLink, Chapter); elseif utilities.is_set (ChapterLink) and utilities.is_set (ChapterURL) then -- if both are set, URL links episode; Series = utilities.make_wikilink (ChapterLink, Series); end URL = ''; -- unset TransTitle = ''; ScriptTitle = ''; Format = ''; else -- now oddities that are cite serial Issue = ''; -- unset because this parameter no longer supported by the citation/core version of cite serial Chapter = A['Episode']; -- TODO: make |episode= available to cite episode someday? if utilities.is_set (Series) and utilities.is_set (SeriesLink) then Series = utilities.make_wikilink (SeriesLink, Series); end Series = utilities.wrap_style ('italic-title', Series); -- series is italicized end end -- end of {{cite episode}} stuff -- handle type parameter for those CS1 citations that have default values local TitleType = A['TitleType']; local Degree = A['Degree']; if utilities.in_array (config.CitationClass, {'AV-media-notes', 'document', 'interview', 'mailinglist', 'map', 'podcast', 'pressrelease', 'report', 'speech', 'techreport', 'thesis'}) then TitleType = set_titletype (config.CitationClass, TitleType); if utilities.is_set (Degree) and "Thesis" == TitleType then -- special case for cite thesis TitleType = Degree .. ' ' .. cfg.title_types ['thesis']:lower(); end end if utilities.is_set (TitleType) then -- if type parameter is specified TitleType = utilities.substitute ( cfg.messages['type'], TitleType); -- display it in parentheses -- TODO: Hack on TitleType to fix bunched parentheses problem end -- legacy: promote PublicationDate to Date if neither Date nor Year are set. local Date = A['Date']; local Date_origin; -- to hold the name of parameter promoted to Date; required for date error messaging local PublicationDate = A['PublicationDate']; local Year = A['Year']; if not utilities.is_set (Date) then Date = Year; -- promote Year to Date Year = nil; -- make nil so Year as empty string isn't used for CITEREF if not utilities.is_set (Date) and utilities.is_set (PublicationDate) then -- use PublicationDate when |date= and |year= are not set Date = PublicationDate; -- promote PublicationDate to Date PublicationDate = ''; -- unset, no longer needed Date_origin = A:ORIGIN('PublicationDate'); -- save the name of the promoted parameter else Date_origin = A:ORIGIN('Year'); -- save the name of the promoted parameter end else Date_origin = A:ORIGIN('Date'); -- not a promotion; name required for error messaging end if PublicationDate == Date then PublicationDate = ''; end -- if PublicationDate is same as Date, don't display in rendered citation --[[ Go test all of the date-holding parameters for valid MOS:DATE format and make sure that dates are real dates. This must be done before we do COinS because here is where we get the date used in the metadata. Date validation supporting code is in Module:Citation/CS1/Date_validation ]] local DF = is_valid_parameter_value (A['DF'], A:ORIGIN('DF'), cfg.keywords_lists['df'], ''); if not utilities.is_set (DF) then DF = cfg.global_df; -- local |df= if present overrides global df set by {{use xxx date}} template end local ArchiveURL; local ArchiveDate; local ArchiveFormat = A['ArchiveFormat']; local archive_url_timestamp; -- timestamp from wayback machine url ArchiveURL, ArchiveDate, archive_url_timestamp = archive_url_check (A['ArchiveURL'], A['ArchiveDate']) ArchiveFormat = style_format (ArchiveFormat, ArchiveURL, 'archive-format', 'archive-url'); ArchiveURL, ArchiveDate = is_unique_archive_url (ArchiveURL, URL, ChapterURL, A:ORIGIN('ArchiveURL'), ArchiveDate); -- add error message when URL or ChapterURL == ArchiveURL local AccessDate = A['AccessDate']; -- local LayDate = A['LayDate']; local COinS_date = {}; -- holds date info extracted from |date= for the COinS metadata by Module:Date verification local DoiBroken = A['DoiBroken']; local Embargo = A['Embargo']; local anchor_year; -- used in the CITEREF identifier do -- create defined block to contain local variables error_message, date_parameters_list, mismatch local error_message = ''; -- AirDate has been promoted to Date so not necessary to check it local date_parameters_list = { ['access-date'] = {val = AccessDate, name = A:ORIGIN ('AccessDate')}, ['archive-date'] = {val = ArchiveDate, name = A:ORIGIN ('ArchiveDate')}, ['date'] = {val = Date, name = Date_origin}, ['doi-broken-date'] = {val = DoiBroken, name = A:ORIGIN ('DoiBroken')}, ['pmc-embargo-date'] = {val = Embargo, name = A:ORIGIN ('Embargo')}, -- ['lay-date'] = {val = LayDate, name = A:ORIGIN ('LayDate')}, ['publication-date'] = {val = PublicationDate, name = A:ORIGIN ('PublicationDate')}, ['year'] = {val = Year, name = A:ORIGIN ('Year')}, }; local error_list = {}; anchor_year, Embargo = validation.dates(date_parameters_list, COinS_date, error_list); -- start temporary Julian / Gregorian calendar uncertainty categorization if COinS_date.inter_cal_cat then utilities.add_prop_cat ('jul-greg-uncertainty'); end -- end temporary Julian / Gregorian calendar uncertainty categorization if utilities.is_set (Year) and utilities.is_set (Date) then -- both |date= and |year= not normally needed; validation.year_date_check (Year, A:ORIGIN ('Year'), Date, A:ORIGIN ('Date'), error_list); end if 0 == #error_list then -- error free dates only; 0 when error_list is empty local modified = false; -- flag if utilities.is_set (DF) then -- if we need to reformat dates modified = validation.reformat_dates (date_parameters_list, DF); -- reformat to DF format, use long month names if appropriate end if true == validation.date_hyphen_to_dash (date_parameters_list) then -- convert hyphens to dashes where appropriate modified = true; utilities.set_message ('maint_date_format'); -- hyphens were converted so add maint category end -- for those wikis that can and want to have English date names translated to the local language; not supported at en.wiki if cfg.date_name_auto_xlate_enable and validation.date_name_xlate (date_parameters_list, cfg.date_digit_auto_xlate_enable ) then utilities.set_message ('maint_date_auto_xlated'); -- add maint cat modified = true; end if modified then -- if the date_parameters_list values were modified AccessDate = date_parameters_list['access-date'].val; -- overwrite date holding parameters with modified values ArchiveDate = date_parameters_list['archive-date'].val; Date = date_parameters_list['date'].val; DoiBroken = date_parameters_list['doi-broken-date'].val; -- LayDate = date_parameters_list['lay-date'].val; PublicationDate = date_parameters_list['publication-date'].val; end if archive_url_timestamp and utilities.is_set (ArchiveDate) then validation.archive_date_check (ArchiveDate, archive_url_timestamp); -- does YYYYMMDD in archive_url_timestamp match date in ArchiveDate end else utilities.set_message ('err_bad_date', {utilities.make_sep_list (#error_list, error_list)}); -- add this error message end end -- end of do if utilities.in_array (config.CitationClass, {'book', 'encyclopaedia'}) or -- {{cite book}}, {{cite encyclopedia}}; TODO: {{cite conference}} and others? ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) or -- {{citation}} as an encylopedia citation ('citation' == config.CitationClass and not utilities.is_set (Periodical)) then -- {{citation}} as a book citation if utilities.is_set (PublicationPlace) then if not utilities.is_set (PublisherName) then local date = COinS_date.rftdate and tonumber (COinS_date.rftdate:match ('%d%d%d%d')); -- get year portion of COinS date (because in Arabic numerals); convert string to number if date and (1850 <= date) then -- location has no publisher; if date is 1850 or later utilities.set_message ('maint_location_no_publisher'); -- add maint cat end else -- PublisherName has a value if cfg.keywords_xlate['none'] == PublisherName then -- if that value is 'none' (only for book and encyclopedia citations) PublisherName = ''; -- unset end end end end local ID_list = {}; -- sequence table of rendered identifiers local ID_list_coins = {}; -- table of identifiers and their values from args; key is same as cfg.id_handlers's key local Class = A['Class']; -- arxiv class identifier local ID_support = { {A['ASINTLD'], 'ASIN', 'err_asintld_missing_asin', A:ORIGIN ('ASINTLD')}, {DoiBroken, 'DOI', 'err_doibroken_missing_doi', A:ORIGIN ('DoiBroken')}, {Embargo, 'PMC', 'err_embargo_missing_pmc', A:ORIGIN ('Embargo')}, } ID_list, ID_list_coins = identifiers.identifier_lists_get (args, {DoiBroken = DoiBroken, ASINTLD = A['ASINTLD'], Embargo = Embargo, Class = Class}, ID_support); -- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite medrxiv}}, {{cite ssrn}}, before generation of COinS data. if utilities.in_array (config.CitationClass, whitelist.preprint_template_list_t) then -- |arxiv= or |eprint= required for cite arxiv; |biorxiv=, |citeseerx=, |medrxiv=, |ssrn= required for their templates if not (args[cfg.id_handlers[config.CitationClass:upper()].parameters[1]] or -- can't use ID_list_coins k/v table here because invalid parameters omitted args[cfg.id_handlers[config.CitationClass:upper()].parameters[2]]) then -- which causes unexpected parameter missing error message utilities.set_message ('err_' .. config.CitationClass .. '_missing'); -- add error message end Periodical = ({['arxiv'] = 'arXiv', ['biorxiv'] = 'bioRxiv', ['citeseerx'] = 'CiteSeerX', ['medrxiv'] = 'medRxiv', ['ssrn'] = 'Social Science Research Network'})[config.CitationClass]; end -- Link the title of the work if no |url= was provided, but we have a |pmc= or a |doi= with |doi-access=free if config.CitationClass == "journal" and not utilities.is_set (URL) and not utilities.is_set (TitleLink) and not utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) then -- TODO: remove 'none' once existing citations have been switched to 'off', so 'none' can be used as token for "no title" instead if 'none' ~= cfg.keywords_xlate[auto_select] then -- if auto-linking not disabled if identifiers.auto_link_urls[auto_select] then -- manual selection URL = identifiers.auto_link_urls[auto_select]; -- set URL to be the same as identifier's external link URL_origin = cfg.id_handlers[auto_select:upper()].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title= elseif identifiers.auto_link_urls['pmc'] then -- auto-select PMC URL = identifiers.auto_link_urls['pmc']; -- set URL to be the same as the PMC external link if not embargoed URL_origin = cfg.id_handlers['PMC'].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title= elseif identifiers.auto_link_urls['doi'] then -- auto-select DOI URL = identifiers.auto_link_urls['doi']; URL_origin = cfg.id_handlers['DOI'].parameters[1]; end end if utilities.is_set (URL) then -- set when using an identifier-created URL if utilities.is_set (AccessDate) then -- |access-date= requires |url=; identifier-created URL is not |url= utilities.set_message ('err_accessdate_missing_url'); -- add an error message AccessDate = ''; -- unset end if utilities.is_set (ArchiveURL) then -- |archive-url= requires |url=; identifier-created URL is not |url= utilities.set_message ('err_archive_missing_url'); -- add an error message ArchiveURL = ''; -- unset end end end -- At this point fields may be nil if they weren't specified in the template use. We can use that fact. -- Test if citation has no title if not utilities.is_set (Title) and not utilities.is_set (TransTitle) and not utilities.is_set (ScriptTitle) then -- has special case for cite episode utilities.set_message ('err_citation_missing_title', {'episode' == config.CitationClass and 'series' or 'title'}); end if utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) and utilities.in_array (config.CitationClass, {'journal', 'citation'}) and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and ('journal' == Periodical_origin or 'script-journal' == ScriptPeriodical_origin) then -- special case for journal cites Title = ''; -- set title to empty string utilities.set_message ('maint_untitled'); -- add maint cat end -- COinS metadata (see <http://ocoins.info/>) for automated parsing of citation information. -- handle the oddity that is cite encyclopedia and {{citation |encyclopedia=something}}. Here we presume that -- when Periodical, Title, and Chapter are all set, then Periodical is the book (encyclopedia) title, Title -- is the article title, and Chapter is a section within the article. So, we remap local coins_chapter = Chapter; -- default assuming that remapping not required local coins_title = Title; -- et tu if 'encyclopaedia' == config.CitationClass or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then if utilities.is_set (Chapter) and utilities.is_set (Title) and utilities.is_set (Periodical) then -- if all are used then coins_chapter = Title; -- remap coins_title = Periodical; end end local coins_author = a; -- default for coins rft.au if 0 < #c then -- but if contributor list coins_author = c; -- use that instead end -- this is the function call to COinS() local OCinSoutput = metadata.COinS({ ['Periodical'] = utilities.strip_apostrophe_markup (Periodical), -- no markup in the metadata ['Encyclopedia'] = Encyclopedia, -- just a flag; content ignored by ~/COinS ['Chapter'] = metadata.make_coins_title (coins_chapter, ScriptChapter), -- Chapter and ScriptChapter stripped of bold / italic / accept-as-written markup ['Degree'] = Degree; -- cite thesis only ['Title'] = metadata.make_coins_title (coins_title, ScriptTitle), -- Title and ScriptTitle stripped of bold / italic / accept-as-written markup ['PublicationPlace'] = PublicationPlace, ['Date'] = COinS_date.rftdate, -- COinS_date.* has correctly formatted date values if Date is valid; ['Season'] = COinS_date.rftssn, ['Quarter'] = COinS_date.rftquarter, ['Chron'] = COinS_date.rftchron, ['Series'] = Series, ['Volume'] = Volume, ['Issue'] = Issue, ['ArticleNumber'] = ArticleNumber, ['Pages'] = coins_pages or metadata.get_coins_pages (first_set ({Sheet, Sheets, Page, Pages, At, QuotePage, QuotePages}, 7)), -- pages stripped of external links ['Edition'] = Edition, ['PublisherName'] = PublisherName or Newsgroup, -- any apostrophe markup already removed from PublisherName ['URL'] = first_set ({ChapterURL, URL}, 2), ['Authors'] = coins_author, ['ID_list'] = ID_list_coins, ['RawPage'] = this_page.prefixedText, }, config.CitationClass); -- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite medrxiv}}, and {{cite ssrn}} AFTER generation of COinS data. if utilities.in_array (config.CitationClass, whitelist.preprint_template_list_t) then -- we have set rft.jtitle in COinS to arXiv, bioRxiv, CiteSeerX, medRxiv, or ssrn now unset so it isn't displayed Periodical = ''; -- periodical not allowed in these templates; if article has been published, use cite journal end -- special case for cite newsgroup. Do this after COinS because we are modifying Publishername to include some static text if 'newsgroup' == config.CitationClass and utilities.is_set (Newsgroup) then PublisherName = utilities.substitute (cfg.messages['newsgroup'], external_link( 'news:' .. Newsgroup, Newsgroup, Newsgroup_origin, nil )); end local Editors; local EditorCount; -- used only for choosing {ed.) or (eds.) annotation at end of editor name-list local Contributors; -- assembled contributors name list local contributor_etal; local Translators; -- assembled translators name list local translator_etal; local t = {}; -- translators list from |translator-lastn= / translator-firstn= pairs t = extract_names (args, 'TranslatorList'); -- fetch translator list from |translatorn= / |translator-lastn=, -firstn=, -linkn=, -maskn= local Interviewers; local interviewers_list = {}; interviewers_list = extract_names (args, 'InterviewerList'); -- process preferred interviewers parameters local interviewer_etal; -- Now perform various field substitutions. -- We also add leading spaces and surrounding markup and punctuation to the -- various parts of the citation, but only when they are non-nil. do local last_first_list; local control = { format = NameListStyle, -- empty string, '&', 'amp', 'and', or 'vanc' maximum = nil, -- as if display-authors or display-editors not set mode = Mode }; do -- do editor name list first because the now unsupported coauthors used to modify control table if cfg.global_cs1_config_t['DisplayEditors'] then -- global setting from {{cs1 config}} overrides local setting control.maximum , editor_etal = get_display_names (cfg.global_cs1_config_t['DisplayEditors'], #e, 'editors', editor_etal, 'cs1 config'); else control.maximum , editor_etal = get_display_names (A['DisplayEditors'], #e, 'editors', editor_etal, A:ORIGIN ('DisplayEditors')); end if cfg.global_cs1_config_t['DisplayEditors'] and utilities.is_set (A['DisplayEditors']) then -- when template has |display-editors=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end Editors, EditorCount = list_people (control, e, editor_etal); if 1 == EditorCount and (true == editor_etal or 1 < #e) then -- only one editor displayed but includes etal then EditorCount = 2; -- spoof to display (eds.) annotation end end do -- now do interviewers if cfg.global_cs1_config_t['DisplayInterviewers'] then -- global setting from {{cs1 config}} overrides local setting control.maximum, interviewer_etal = get_display_names (cfg.global_cs1_config_t['DisplayInterviewers'], #interviewers_list, 'interviewers', interviewer_etal, 'cs1 config'); else control.maximum, interviewer_etal = get_display_names (A['DisplayInterviewers'], #interviewers_list, 'interviewers', interviewer_etal, A:ORIGIN ('DisplayInterviewers')); end if cfg.global_cs1_config_t['DisplayInterviewers'] and utilities.is_set (A['DisplayInterviewers']) then -- when template has |display-interviewers=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end Interviewers = list_people (control, interviewers_list, interviewer_etal); end do -- now do translators if cfg.global_cs1_config_t['DisplayTranslators'] then -- global setting from {{cs1 config}} overrides local setting control.maximum, translator_etal = get_display_names (cfg.global_cs1_config_t['DisplayTranslators'], #t, 'translators', translator_etal, 'cs1 config'); else control.maximum, translator_etal = get_display_names (A['DisplayTranslators'], #t, 'translators', translator_etal, A:ORIGIN ('DisplayTranslators')); end if cfg.global_cs1_config_t['DisplayTranslators'] and utilities.is_set (A['DisplayTranslators']) then -- when template has |display-translators=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end Translators = list_people (control, t, translator_etal); end do -- now do contributors if cfg.global_cs1_config_t['DisplayContributors'] then -- global setting from {{cs1 config}} overrides local setting control.maximum, contributor_etal = get_display_names (cfg.global_cs1_config_t['DisplayContributors'], #c, 'contributors', contributor_etal, 'cs1 config'); else control.maximum, contributor_etal = get_display_names (A['DisplayContributors'], #c, 'contributors', contributor_etal, A:ORIGIN ('DisplayContributors')); end if cfg.global_cs1_config_t['DisplayContributors'] and utilities.is_set (A['DisplayContributors']) then -- when template has |display-contributors=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end Contributors = list_people (control, c, contributor_etal); end do -- now do authors if cfg.global_cs1_config_t['DisplayAuthors'] then -- global setting from {{cs1 config}} overrides local setting control.maximum, author_etal = get_display_names (cfg.global_cs1_config_t['DisplayAuthors'], #a, 'authors', author_etal, 'cs1 config'); else control.maximum, author_etal = get_display_names (A['DisplayAuthors'], #a, 'authors', author_etal, A:ORIGIN ('DisplayAuthors')); end if cfg.global_cs1_config_t['DisplayAuthors'] and utilities.is_set (A['DisplayAuthors']) then -- when template has |display-authors=<something> which global setting has overridden utilities.set_message ('maint_overridden_setting'); -- set a maint message end last_first_list = list_people (control, a, author_etal); if utilities.is_set (Authors) then Authors, author_etal = name_has_etal (Authors, author_etal, false, 'authors'); -- find and remove variations on et al. if author_etal then Authors = Authors .. ' ' .. cfg.messages['et al']; -- add et al. to authors parameter end else Authors = last_first_list; -- either an author name list or an empty string end end -- end of do if utilities.is_set (Authors) and utilities.is_set (Collaboration) then Authors = Authors .. ' (' .. Collaboration .. ')'; -- add collaboration after et al. end end local ConferenceFormat = A['ConferenceFormat']; local ConferenceURL = A['ConferenceURL']; ConferenceFormat = style_format (ConferenceFormat, ConferenceURL, 'conference-format', 'conference-url'); Format = style_format (Format, URL, 'format', 'url'); -- special case for chapter format so no error message or cat when chapter not supported if not (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or ('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia))) then ChapterFormat = style_format (ChapterFormat, ChapterURL, 'chapter-format', 'chapter-url'); end if not utilities.is_set (URL) then if utilities.in_array (config.CitationClass, {"web", "podcast", "mailinglist"}) or -- |url= required for cite web, cite podcast, and cite mailinglist ('citation' == config.CitationClass and ('website' == Periodical_origin or 'script-website' == ScriptPeriodical_origin)) then -- and required for {{citation}} with |website= or |script-website= utilities.set_message ('err_cite_web_url'); end -- do we have |accessdate= without either |url= or |chapter-url=? if utilities.is_set (AccessDate) and not utilities.is_set (ChapterURL) then -- ChapterURL may be set when URL is not set; utilities.set_message ('err_accessdate_missing_url'); AccessDate = ''; end end local UrlStatus = is_valid_parameter_value (A['UrlStatus'], A:ORIGIN('UrlStatus'), cfg.keywords_lists['url-status'], ''); local OriginalURL local OriginalURL_origin local OriginalFormat local OriginalAccess; UrlStatus = UrlStatus:lower(); -- used later when assembling archived text if utilities.is_set ( ArchiveURL ) then if utilities.is_set (ChapterURL) then -- if chapter-url= is set apply archive url to it OriginalURL = ChapterURL; -- save copy of source chapter's url for archive text OriginalURL_origin = ChapterURL_origin; -- name of |chapter-url= parameter for error messages OriginalFormat = ChapterFormat; -- and original |chapter-format= if 'live' ~= UrlStatus then ChapterURL = ArchiveURL -- swap-in the archive's URL ChapterURL_origin = A:ORIGIN('ArchiveURL') -- name of |archive-url= parameter for error messages ChapterFormat = ArchiveFormat or ''; -- swap in archive's format ChapterUrlAccess = nil; -- restricted access levels do not make sense for archived URLs end elseif utilities.is_set (URL) then OriginalURL = URL; -- save copy of original source URL OriginalURL_origin = URL_origin; -- name of URL parameter for error messages OriginalFormat = Format; -- and original |format= OriginalAccess = UrlAccess; if 'live' ~= UrlStatus then -- if URL set then |archive-url= applies to it URL = ArchiveURL -- swap-in the archive's URL URL_origin = A:ORIGIN('ArchiveURL') -- name of archive URL parameter for error messages Format = ArchiveFormat or ''; -- swap in archive's format UrlAccess = nil; -- restricted access levels do not make sense for archived URLs end end elseif utilities.is_set (UrlStatus) then -- if |url-status= is set when |archive-url= is not set utilities.set_message ('maint_url_status'); -- add maint cat end if utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or -- if any of the 'periodical' cites except encyclopedia ('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) then local chap_param; if utilities.is_set (Chapter) then -- get a parameter name from one of these chapter related meta-parameters chap_param = A:ORIGIN ('Chapter') elseif utilities.is_set (TransChapter) then chap_param = A:ORIGIN ('TransChapter') elseif utilities.is_set (ChapterURL) then chap_param = A:ORIGIN ('ChapterURL') elseif utilities.is_set (ScriptChapter) then chap_param = ScriptChapter_origin; else utilities.is_set (ChapterFormat) chap_param = A:ORIGIN ('ChapterFormat') end if utilities.is_set (chap_param) then -- if we found one utilities.set_message ('err_chapter_ignored', {chap_param}); -- add error message Chapter = ''; -- and set them to empty string to be safe with concatenation TransChapter = ''; ChapterURL = ''; ScriptChapter = ''; ChapterFormat = ''; end else -- otherwise, format chapter / article title local no_quotes = false; -- default assume that we will be quoting the chapter parameter value if utilities.is_set (Contribution) and 0 < #c then -- if this is a contribution with contributor(s) if utilities.in_array (Contribution:lower(), cfg.keywords_lists.contribution) then -- and a generic contribution title no_quotes = true; -- then render it unquoted end end Chapter = format_chapter_title (ScriptChapter, ScriptChapter_origin, Chapter, Chapter_origin, TransChapter, TransChapter_origin, ChapterURL, ChapterURL_origin, no_quotes, ChapterUrlAccess); -- Contribution is also in Chapter if utilities.is_set (Chapter) then Chapter = Chapter .. ChapterFormat ; if 'map' == config.CitationClass and utilities.is_set (TitleType) then Chapter = Chapter .. ' ' .. TitleType; -- map annotation here; not after title end Chapter = Chapter .. sepc .. ' '; elseif utilities.is_set (ChapterFormat) then -- |chapter= not set but |chapter-format= is so ... Chapter = ChapterFormat .. sepc .. ' '; -- ... ChapterFormat has error message, we want to see it end end -- Format main title local plain_title = false; local accept_title; Title, accept_title = utilities.has_accept_as_written (Title, true); -- remove accept-this-as-written markup when it wraps all of <Title> if accept_title and ('' == Title) then -- only support forced empty for now "(())" Title = cfg.messages['notitle']; -- replace by predefined "No title" message -- TODO: utilities.set_message ( 'err_redundant_parameters', ...); -- issue proper error message instead of muting ScriptTitle = ''; -- just mute for now TransTitle = ''; -- just mute for now plain_title = true; -- suppress text decoration for descriptive title utilities.set_message ('maint_untitled'); -- add maint cat end if not accept_title then -- <Title> not wrapped in accept-as-written markup if '...' == Title:sub (-3) then -- if ellipsis is the last three characters of |title= Title = Title:gsub ('(%.%.%.)%.+$', '%1'); -- limit the number of dots to three elseif not mw.ustring.find (Title, '%.%s*%a%.$') and -- end of title is not a 'dot-(optional space-)letter-dot' initialism ... not mw.ustring.find (Title, '%s+%a%.$') then -- ...and not a 'space-letter-dot' initial (''Allium canadense'' L.) Title = mw.ustring.gsub(Title, '%' .. sepc .. '$', ''); -- remove any trailing separator character; sepc and ms.ustring() here for languages that use multibyte separator characters end if utilities.is_set (ArchiveURL) and is_archived_copy (Title) then utilities.set_message ('maint_archived_copy'); -- add maintenance category before we modify the content of Title end if is_generic ('generic_titles', Title) then utilities.set_message ('err_generic_title'); -- set an error message end end if (not plain_title) and (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'document', 'pressrelease', 'podcast', 'newsgroup', 'mailinglist', 'interview', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or ('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) or ('map' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)))) then -- special case for cite map when the map is in a periodical treat as an article Title = kern_quotes (Title); -- if necessary, separate title's leading and trailing quote marks from module provided quote marks Title = utilities.wrap_style ('quoted-title', Title); Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle ); elseif plain_title or ('report' == config.CitationClass) then -- no styling for cite report and descriptive titles (otherwise same as above) Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle ); -- for cite report, use this form for trans-title else Title = utilities.wrap_style ('italic-title', Title); Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped TransTitle = utilities.wrap_style ('trans-italic-title', TransTitle); end if utilities.is_set (TransTitle) then if utilities.is_set (Title) then TransTitle = " " .. TransTitle; else utilities.set_message ('err_trans_missing_title', {'title'}); end end if utilities.is_set (Title) then -- TODO: is this the right place to be making Wikisource URLs? if utilities.is_set (TitleLink) and utilities.is_set (URL) then utilities.set_message ('err_wikilink_in_url'); -- set an error message because we can't have both TitleLink = ''; -- unset end if not utilities.is_set (TitleLink) and utilities.is_set (URL) then Title = external_link (URL, Title, URL_origin, UrlAccess) .. TransTitle .. Format; URL = ''; -- unset these because no longer needed Format = ""; elseif utilities.is_set (TitleLink) and not utilities.is_set (URL) then local ws_url; ws_url = wikisource_url_make (TitleLink); -- ignore ws_label return; not used here if ws_url then Title = external_link (ws_url, Title .. '&nbsp;', 'ws link in title-link'); -- space char after Title to move icon away from italic text; TODO: a better way to do this? Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], TitleLink, Title}); Title = Title .. TransTitle; else Title = utilities.make_wikilink (TitleLink, Title) .. TransTitle; end else local ws_url, ws_label, L; -- Title has italic or quote markup by the time we get here which causes is_wikilink() to return 0 (not a wikilink) ws_url, ws_label, L = wikisource_url_make (Title:gsub('^[\'"]*(.-)[\'"]*$', '%1')); -- make ws URL from |title= interwiki link (strip italic or quote markup); link portion L becomes tooltip label if ws_url then Title = Title:gsub ('%b[]', ws_label); -- replace interwiki link with ws_label to retain markup Title = external_link (ws_url, Title .. '&nbsp;', 'ws link in title'); -- space char after Title to move icon away from italic text; TODO: a better way to do this? Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, Title}); Title = Title .. TransTitle; else Title = Title .. TransTitle; end end else Title = TransTitle; end if utilities.is_set (Place) then Place = " " .. wrap_msg ('written', Place, use_lowercase) .. sepc .. " "; end local ConferenceURL_origin = A:ORIGIN('ConferenceURL'); -- get name of parameter that holds ConferenceURL if utilities.is_set (Conference) then if utilities.is_set (ConferenceURL) then Conference = external_link( ConferenceURL, Conference, ConferenceURL_origin, nil ); end Conference = sepc .. " " .. Conference .. ConferenceFormat; elseif utilities.is_set (ConferenceURL) then Conference = sepc .. " " .. external_link( ConferenceURL, nil, ConferenceURL_origin, nil ); end local Position = ''; if not utilities.is_set (Position) then local Minutes = A['Minutes']; local Time = A['Time']; if utilities.is_set (Minutes) then if utilities.is_set (Time) then --TODO: make a function for this and similar? utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'minutes') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'time')}); end Position = " " .. Minutes .. " " .. cfg.messages['minutes']; else if utilities.is_set (Time) then local TimeCaption = A['TimeCaption'] if not utilities.is_set (TimeCaption) then TimeCaption = cfg.messages['event']; if sepc ~= '.' then TimeCaption = TimeCaption:lower(); end end Position = " " .. TimeCaption .. " " .. Time; end end else Position = " " .. Position; At = ''; end Page, Pages, Sheet, Sheets = format_pages_sheets (Page, Pages, Sheet, Sheets, config.CitationClass, Periodical_origin, sepc, NoPP, use_lowercase); At = utilities.is_set (At) and (sepc .. " " .. At) or ""; Position = utilities.is_set (Position) and (sepc .. " " .. Position) or ""; if config.CitationClass == 'map' then local Sections = A['Sections']; -- Section (singular) is an alias of Chapter so set earlier local Inset = A['Inset']; if utilities.is_set ( Inset ) then Inset = sepc .. " " .. wrap_msg ('inset', Inset, use_lowercase); end if utilities.is_set ( Sections ) then Section = sepc .. " " .. wrap_msg ('sections', Sections, use_lowercase); elseif utilities.is_set ( Section ) then Section = sepc .. " " .. wrap_msg ('section', Section, use_lowercase); end At = At .. Inset .. Section; end local Others = A['Others']; if utilities.is_set (Others) and 0 == #a and 0 == #e then -- add maint cat when |others= has value and used without |author=, |editor= if config.CitationClass == "AV-media-notes" or config.CitationClass == "audio-visual" then -- special maint for AV/M which has a lot of 'false' positives right now utilities.set_message ('maint_others_avm') else utilities.set_message ('maint_others'); end end Others = utilities.is_set (Others) and (sepc .. " " .. Others) or ""; if utilities.is_set (Translators) then Others = safe_join ({sepc .. ' ', wrap_msg ('translated', Translators, use_lowercase), Others}, sepc); end if utilities.is_set (Interviewers) then Others = safe_join ({sepc .. ' ', wrap_msg ('interview', Interviewers, use_lowercase), Others}, sepc); end local TitleNote = A['TitleNote']; TitleNote = utilities.is_set (TitleNote) and (sepc .. " " .. TitleNote) or ""; if utilities.is_set (Edition) then if Edition:match ('%f[%a][Ee]d%n?%.?$') or Edition:match ('%f[%a][Ee]dition$') then -- Ed, ed, Ed., ed., Edn, edn, Edn., edn. utilities.set_message ('err_extra_text_edition'); -- add error message end Edition = " " .. wrap_msg ('edition', Edition); else Edition = ''; end Series = utilities.is_set (Series) and wrap_msg ('series', {sepc, Series}) or ""; -- not the same as SeriesNum local Agency = A['Agency']; Agency = utilities.is_set (Agency) and wrap_msg ('agency', {sepc, Agency}) or ""; Volume = format_volume_issue (Volume, Issue, ArticleNumber, config.CitationClass, Periodical_origin, sepc, use_lowercase); if utilities.is_set (AccessDate) then local retrv_text = " " .. cfg.messages['retrieved'] AccessDate = nowrap_date (AccessDate); -- wrap in nowrap span if date in appropriate format if (sepc ~= ".") then retrv_text = retrv_text:lower() end -- if mode is cs2, lower case AccessDate = utilities.substitute (retrv_text, AccessDate); -- add retrieved text AccessDate = utilities.substitute (cfg.presentation['accessdate'], {sepc, AccessDate}); -- allow editors to hide accessdates end if utilities.is_set (ID) then ID = sepc .. " " .. ID; end local Docket = A['Docket']; if "thesis" == config.CitationClass and utilities.is_set (Docket) then ID = sepc .. " Docket " .. Docket .. ID; end if "report" == config.CitationClass and utilities.is_set (Docket) then -- for cite report when |docket= is set ID = sepc .. ' ' .. Docket; -- overwrite ID even if |id= is set end if utilities.is_set (URL) then URL = " " .. external_link( URL, nil, URL_origin, UrlAccess ); end local Quote = A['Quote']; local TransQuote = A['TransQuote']; local ScriptQuote = A['ScriptQuote']; if utilities.is_set (Quote) or utilities.is_set (TransQuote) or utilities.is_set (ScriptQuote) then if utilities.is_set (Quote) then if Quote:sub(1, 1) == '"' and Quote:sub(-1, -1) == '"' then -- if first and last characters of quote are quote marks Quote = Quote:sub(2, -2); -- strip them off end end Quote = kern_quotes (Quote); -- kern if needed Quote = utilities.wrap_style ('quoted-text', Quote ); -- wrap in <q>...</q> tags if utilities.is_set (ScriptQuote) then Quote = script_concatenate (Quote, ScriptQuote, 'script-quote'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after quote is wrapped end if utilities.is_set (TransQuote) then if TransQuote:sub(1, 1) == '"' and TransQuote:sub(-1, -1) == '"' then -- if first and last characters of |trans-quote are quote marks TransQuote = TransQuote:sub(2, -2); -- strip them off end Quote = Quote .. " " .. utilities.wrap_style ('trans-quoted-title', TransQuote ); end if utilities.is_set (QuotePage) or utilities.is_set (QuotePages) then -- add page prefix local quote_prefix = ''; if utilities.is_set (QuotePage) then extra_text_in_page_check (QuotePage, 'quote-page'); -- add to maint cat if |quote-page= value begins with what looks like p., pp., etc. if not NoPP then quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePage}), '', '', ''; else quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePage}), '', '', ''; end elseif utilities.is_set (QuotePages) then extra_text_in_page_check (QuotePages, 'quote-pages'); -- add to maint cat if |quote-pages= value begins with what looks like p., pp., etc. if tonumber(QuotePages) ~= nil and not NoPP then -- if only digits, assume single page quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePages}), '', ''; elseif not NoPP then quote_prefix = utilities.substitute (cfg.messages['pp-prefix'], {sepc, QuotePages}), '', ''; else quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePages}), '', ''; end end Quote = quote_prefix .. ": " .. Quote; else Quote = sepc .. " " .. Quote; end PostScript = ""; -- cs1|2 does not supply terminal punctuation when |quote= is set end -- We check length of PostScript here because it will have been nuked by -- the quote parameters. We'd otherwise emit a message even if there wasn't -- a displayed postscript. -- TODO: Should the max size (1) be configurable? -- TODO: Should we check a specific pattern? if utilities.is_set(PostScript) and mw.ustring.len(PostScript) > 1 then utilities.set_message ('maint_postscript') end local Archived; if utilities.is_set (ArchiveURL) then if not utilities.is_set (ArchiveDate) then -- ArchiveURL set but ArchiveDate not set utilities.set_message ('err_archive_missing_date'); -- emit an error message ArchiveURL = ''; -- empty string for concatenation ArchiveDate = ''; -- empty string for concatenation end else if utilities.is_set (ArchiveDate) then -- ArchiveURL not set but ArchiveDate is set utilities.set_message ('err_archive_date_missing_url'); -- emit an error message ArchiveURL = ''; -- empty string for concatenation ArchiveDate = ''; -- empty string for concatenation end end if utilities.is_set (ArchiveURL) then local arch_text; -- if not utilities.is_set (ArchiveDate) then -- utilities.set_message ('err_archive_missing_date'); -- ArchiveDate = ''; -- empty string for concatenation -- end if "live" == UrlStatus then arch_text = cfg.messages['archived']; if sepc ~= "." then arch_text = arch_text:lower() end if utilities.is_set (ArchiveDate) then Archived = sepc .. ' ' .. utilities.substitute ( cfg.messages['archived-live'], {external_link( ArchiveURL, arch_text, A:ORIGIN('ArchiveURL'), nil) .. ArchiveFormat, ArchiveDate } ); else Archived = ''; end if not utilities.is_set (OriginalURL) then utilities.set_message ('err_archive_missing_url'); Archived = ''; -- empty string for concatenation end elseif utilities.is_set (OriginalURL) then -- UrlStatus is empty, 'dead', 'unfit', 'usurped', 'bot: unknown' if utilities.in_array (UrlStatus, {'unfit', 'usurped', 'bot: unknown'}) then arch_text = cfg.messages['archived-unfit']; if sepc ~= "." then arch_text = arch_text:lower() end Archived = sepc .. ' ' .. arch_text .. ArchiveDate; -- format already styled if 'bot: unknown' == UrlStatus then utilities.set_message ('maint_bot_unknown'); -- and add a category if not already added else utilities.set_message ('maint_unfit'); -- and add a category if not already added end else -- UrlStatus is empty, 'dead' arch_text = cfg.messages['archived-dead']; if sepc ~= "." then arch_text = arch_text:lower() end if utilities.is_set (ArchiveDate) then Archived = sepc .. " " .. utilities.substitute ( arch_text, { external_link( OriginalURL, cfg.messages['original'], OriginalURL_origin, OriginalAccess ) .. OriginalFormat, ArchiveDate } ); -- format already styled else Archived = ''; -- unset for concatenation end end else -- OriginalUrl not set utilities.set_message ('err_archive_missing_url'); Archived = ''; -- empty string for concatenation end elseif utilities.is_set (ArchiveFormat) then Archived = ArchiveFormat; -- if set and ArchiveURL not set ArchiveFormat has error message else Archived = ''; end -- local Lay = ''; -- local LaySource = A['LaySource']; -- local LayURL = A['LayURL']; -- local LayFormat = A['LayFormat']; -- LayFormat = style_format (LayFormat, LayURL, 'lay-format', 'lay-url'); -- if utilities.is_set (LayURL) then -- if utilities.is_set (LayDate) then LayDate = " (" .. LayDate .. ")" end -- if utilities.is_set (LaySource) then -- LaySource = " &ndash; ''" .. utilities.safe_for_italics (LaySource) .. "''"; -- else -- LaySource = ""; -- end -- if sepc == '.' then -- Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary'], A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate -- else -- Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary']:lower(), A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate -- end -- elseif utilities.is_set (LayFormat) then -- Test if |lay-format= is given without giving a |lay-url= -- Lay = sepc .. LayFormat; -- if set and LayURL not set, then LayFormat has error message -- end local TranscriptURL = A['TranscriptURL'] local TranscriptFormat = A['TranscriptFormat']; TranscriptFormat = style_format (TranscriptFormat, TranscriptURL, 'transcript-format', 'transcripturl'); local Transcript = A['Transcript']; local TranscriptURL_origin = A:ORIGIN('TranscriptURL'); -- get name of parameter that holds TranscriptURL if utilities.is_set (Transcript) then if utilities.is_set (TranscriptURL) then Transcript = external_link( TranscriptURL, Transcript, TranscriptURL_origin, nil ); end Transcript = sepc .. ' ' .. Transcript .. TranscriptFormat; elseif utilities.is_set (TranscriptURL) then Transcript = external_link( TranscriptURL, nil, TranscriptURL_origin, nil ); end local Publisher; if utilities.is_set (PublicationDate) then PublicationDate = wrap_msg ('published', PublicationDate); end if utilities.is_set (PublisherName) then if utilities.is_set (PublicationPlace) then Publisher = sepc .. " " .. PublicationPlace .. ": " .. PublisherName .. PublicationDate; else Publisher = sepc .. " " .. PublisherName .. PublicationDate; end elseif utilities.is_set (PublicationPlace) then Publisher= sepc .. " " .. PublicationPlace .. PublicationDate; else Publisher = PublicationDate; end -- Several of the above rely upon detecting this as nil, so do it last. if (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (TransPeriodical)) then if utilities.is_set (Title) or utilities.is_set (TitleNote) then Periodical = sepc .. " " .. format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin); else Periodical = format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin); end end local Language = A['Language']; if utilities.is_set (Language) then Language = language_parameter (Language); -- format, categories, name from ISO639-1, etc. else Language=''; -- language not specified so make sure this is an empty string; --[[ TODO: need to extract the wrap_msg from language_parameter so that we can solve parentheses bunching problem with Format/Language/TitleType ]] end --[[ Handle the oddity that is cite speech. This code overrides whatever may be the value assigned to TitleNote (through |department=) and forces it to be " (Speech)" so that the annotation directly follows the |title= parameter value in the citation rather than the |event= parameter value (if provided). ]] if "speech" == config.CitationClass then -- cite speech only TitleNote = TitleType; -- move TitleType to TitleNote so that it renders ahead of |event= TitleType = ''; -- and unset if utilities.is_set (Periodical) then -- if Periodical, perhaps because of an included |website= or |journal= parameter if utilities.is_set (Conference) then -- and if |event= is set Conference = Conference .. sepc .. " "; -- then add appropriate punctuation to the end of the Conference variable before rendering end end end -- Piece all bits together at last. Here, all should be non-nil. -- We build things this way because it is more efficient in LUA -- not to keep reassigning to the same string variable over and over. local tcommon; local tcommon2; -- used for book cite when |contributor= is set if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then if not (utilities.is_set (Authors) or utilities.is_set (Editors)) then Others = Others:gsub ('^' .. sepc .. ' ', ''); -- when no authors and no editors, strip leading sepc and space end if utilities.is_set (Others) then Others = safe_join ({Others, sepc .. " "}, sepc) end -- add terminal punctuation & space; check for dup sepc; TODO why do we need to do this here? tcommon = safe_join( {Others, Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Edition, Publisher, Agency, Volume}, sepc ); elseif utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (Periodical) then -- special cases for book cites if utilities.is_set (Contributors) then -- when we are citing foreword, preface, introduction, etc. tcommon = safe_join( {Title, TitleNote}, sepc ); -- author and other stuff will come after this and before tcommon2 tcommon2 = safe_join( {Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc ); else tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc ); end elseif 'map' == config.CitationClass then -- special cases for cite map if utilities.is_set (Chapter) then -- map in a book; TitleType is part of Chapter tcommon = safe_join( {Title, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc ); elseif utilities.is_set (Periodical) then -- map in a periodical tcommon = safe_join( {Title, TitleType, Format, Periodical, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc ); else -- a sheet or stand-alone map tcommon = safe_join( {Title, TitleType, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher}, sepc ); end elseif 'episode' == config.CitationClass then -- special case for cite episode tcommon = safe_join( {Title, TitleNote, TitleType, Series, Language, Edition, Publisher}, sepc ); else -- all other CS1 templates tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc ); end if #ID_list > 0 then ID_list = safe_join( { sepc .. " ", table.concat( ID_list, sepc .. " " ), ID }, sepc ); else ID_list = ID; end local Via = A['Via']; Via = utilities.is_set (Via) and wrap_msg ('via', Via) or ''; local idcommon; if 'audio-visual' == config.CitationClass or 'episode' == config.CitationClass then -- special case for cite AV media & cite episode position transcript -- idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, Lay, Quote }, sepc ); idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, Quote }, sepc ); else -- idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, Lay, Quote }, sepc ); idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, Quote }, sepc ); end local text; local pgtext = Position .. Sheet .. Sheets .. Page .. Pages .. At; local OrigDate = A['OrigDate']; OrigDate = utilities.is_set (OrigDate) and wrap_msg ('origdate', OrigDate) or ''; if utilities.is_set (Date) then if utilities.is_set (Authors) or utilities.is_set (Editors) then -- date follows authors or editors when authors not set Date = " (" .. Date .. ")" .. OrigDate .. sepc .. " "; -- in parentheses else -- neither of authors and editors set if (string.sub(tcommon, -1, -1) == sepc) then -- if the last character of tcommon is sepc Date = " " .. Date .. OrigDate; -- Date does not begin with sepc else Date = sepc .. " " .. Date .. OrigDate; -- Date begins with sepc end end end if utilities.is_set (Authors) then if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Authors termination Authors = terminate_name_list (Authors, sepc); -- when no date, terminate with 0 or 1 sepc and a space end if utilities.is_set (Editors) then local in_text = ''; local post_text = ''; if utilities.is_set (Chapter) and 0 == #c then in_text = cfg.messages['in'] .. ' '; if (sepc ~= '.') then in_text = in_text:lower(); -- lowercase for cs2 end end if EditorCount <= 1 then post_text = ' (' .. cfg.messages['editor'] .. ')'; -- be consistent with no-author, no-date case else post_text = ' (' .. cfg.messages['editors'] .. ')'; end Editors = terminate_name_list (in_text .. Editors .. post_text, sepc); -- terminate with 0 or 1 sepc and a space end if utilities.is_set (Contributors) then -- book cite and we're citing the intro, preface, etc. local by_text = sepc .. ' ' .. cfg.messages['by'] .. ' '; if (sepc ~= '.') then by_text = by_text:lower() end -- lowercase for cs2 Authors = by_text .. Authors; -- author follows title so tweak it here if utilities.is_set (Editors) and utilities.is_set (Date) then -- when Editors make sure that Authors gets terminated Authors = terminate_name_list (Authors, sepc); -- terminate with 0 or 1 sepc and a space end if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Contributors termination Contributors = terminate_name_list (Contributors, sepc); -- terminate with 0 or 1 sepc and a space end text = safe_join( {Contributors, Date, Chapter, tcommon, Authors, Place, Editors, tcommon2, pgtext, idcommon }, sepc ); else text = safe_join( {Authors, Date, Chapter, Place, Editors, tcommon, pgtext, idcommon }, sepc ); end elseif utilities.is_set (Editors) then if utilities.is_set (Date) then if EditorCount <= 1 then Editors = Editors .. cfg.presentation['sep_name'] .. cfg.messages['editor']; else Editors = Editors .. cfg.presentation['sep_name'] .. cfg.messages['editors']; end else if EditorCount <= 1 then Editors = Editors .. " (" .. cfg.messages['editor'] .. ")" .. sepc .. " " else Editors = Editors .. " (" .. cfg.messages['editors'] .. ")" .. sepc .. " " end end text = safe_join( {Editors, Date, Chapter, Place, tcommon, pgtext, idcommon}, sepc ); else if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then text = safe_join( {Chapter, Place, tcommon, pgtext, Date, idcommon}, sepc ); else text = safe_join( {Chapter, Place, tcommon, Date, pgtext, idcommon}, sepc ); end end if utilities.is_set (PostScript) and PostScript ~= sepc then text = safe_join( {text, sepc}, sepc ); -- Deals with italics, spaces, etc. text = text:sub(1, -sepc:len() - 1); end text = safe_join( {text, PostScript}, sepc ); -- Now enclose the whole thing in a <cite> element local options_t = {}; options_t.class = cite_class_attribute_make (config.CitationClass, Mode); local Ref = is_valid_parameter_value (A['Ref'], A:ORIGIN('Ref'), cfg.keywords_lists['ref'], nil, true); -- nil when |ref=harv; A['Ref'] else if 'none' ~= cfg.keywords_xlate[(Ref and Ref:lower()) or ''] then local namelist_t = {}; -- holds selected contributor, author, editor name list local year = first_set ({Year, anchor_year}, 2); -- Year first for legacy citations and for YMD dates that require disambiguation if #c > 0 then -- if there is a contributor list namelist_t = c; -- select it elseif #a > 0 then -- or an author list namelist_t = a; elseif #e > 0 then -- or an editor list namelist_t = e; end local citeref_id; if #namelist_t > 0 then -- if there are names in namelist_t citeref_id = make_citeref_id (namelist_t, year); -- go make the CITEREF anchor if mw.uri.anchorEncode (citeref_id) == ((Ref and mw.uri.anchorEncode (Ref)) or '') then -- Ref may already be encoded (by {{sfnref}}) so citeref_id must be encoded before comparison utilities.set_message ('maint_ref_duplicates_default'); end else citeref_id = ''; -- unset end options_t.id = Ref or citeref_id; end if string.len (text:gsub('%b<>', '')) <= 2 then -- remove html and html-like tags; then get length of what remains; z.error_cats_t = {}; -- blank the categories list z.error_msgs_t = {}; -- blank the error messages list OCinSoutput = nil; -- blank the metadata string text = ''; -- blank the the citation utilities.set_message ('err_empty_citation'); -- set empty citation message and category end local render_t = {}; -- here we collect the final bits for concatenation into the rendered citation if utilities.is_set (options_t.id) then -- here we wrap the rendered citation in <cite ...>...</cite> tags table.insert (render_t, utilities.substitute (cfg.presentation['cite-id'], {mw.uri.anchorEncode(options_t.id), mw.text.nowiki(options_t.class), text})); -- when |ref= is set or when there is a namelist else table.insert (render_t, utilities.substitute (cfg.presentation['cite'], {mw.text.nowiki(options_t.class), text})); -- when |ref=none or when namelist_t empty and |ref= is missing or is empty end if OCinSoutput then -- blanked when citation is 'empty' so don't bother to add boilerplate metadata span table.insert (render_t, utilities.substitute (cfg.presentation['ocins'], OCinSoutput)); -- format and append metadata to the citation end local template_name = ('citation' == config.CitationClass) and 'citation' or 'cite ' .. (cfg.citation_class_map_t[config.CitationClass] or config.CitationClass); local template_link = '[[Template:' .. template_name .. '|' .. template_name .. ']]'; local msg_prefix = '<code class="cs1-code">{{' .. template_link .. '}}</code>: '; if 0 ~= #z.error_msgs_t then mw.addWarning (utilities.substitute (cfg.messages.warning_msg_e, template_link)); table.insert (render_t, ' '); -- insert a space between citation and its error messages table.sort (z.error_msgs_t); -- sort the error messages list; sorting includes wrapping <span> and <code> tags; hidden-error sorts ahead of visible-error local hidden = true; -- presume that the only error messages emited by this template are hidden for _, v in ipairs (z.error_msgs_t) do -- spin through the list of error messages if v:find ('cs1-visible-error', 1, true) then -- look for the visible error class name hidden = false; -- found one; so don't hide the error message prefix break; -- and done because no need to look further end end z.error_msgs_t[1] = table.concat ({utilities.error_comment (msg_prefix, hidden), z.error_msgs_t[1]}); -- add error message prefix to first error message to prevent extraneous punctuation table.insert (render_t, table.concat (z.error_msgs_t, '; ')); -- make a big string of error messages and add it to the rendering end if 0 ~= #z.maint_cats_t then mw.addWarning (utilities.substitute (cfg.messages.warning_msg_m, template_link)); table.sort (z.maint_cats_t); -- sort the maintenance messages list local maint_msgs_t = {}; -- here we collect all of the maint messages if 0 == #z.error_msgs_t then -- if no error messages table.insert (maint_msgs_t, msg_prefix); -- insert message prefix in maint message livery end for _, v in ipairs( z.maint_cats_t ) do -- append maintenance categories table.insert (maint_msgs_t, -- assemble new maint message and add it to the maint_msgs_t table table.concat ({v, ' (', utilities.substitute (cfg.messages[':cat wikilink'], v), ')'}) ); end table.insert (render_t, utilities.substitute (cfg.presentation['hidden-maint'], table.concat (maint_msgs_t, ' '))); -- wrap the group of maint messages with proper presentation and save end if not no_tracking_cats then for _, v in ipairs (z.error_cats_t) do -- append error categories table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v)); end for _, v in ipairs (z.maint_cats_t) do -- append maintenance categories table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v)); end for _, v in ipairs (z.prop_cats_t) do -- append properties categories table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v)); end end return table.concat (render_t); -- make a big string and done end --[[--------------------------< V A L I D A T E >-------------------------------------------------------------- Looks for a parameter's name in one of several whitelists. Parameters in the whitelist can have three values: true - active, supported parameters false - deprecated, supported parameters nil - unsupported parameters ]] local function validate (name, cite_class, empty) local name = tostring (name); local enum_name; -- parameter name with enumerator (if any) replaced with '#' local state; local function state_test (state, name) -- local function to do testing of state values if true == state then return true; end -- valid actively supported parameter if false == state then if empty then return nil; end -- empty deprecated parameters are treated as unknowns deprecated_parameter (name); -- parameter is deprecated but still supported return true; end if 'tracked' == state then local base_name = name:gsub ('%d', ''); -- strip enumerators from parameter names that have them to get the base name utilities.add_prop_cat ('tracked-param', {base_name}, base_name); -- add a properties category; <base_name> modifies <key> return true; end return nil; end if name:find ('#') then -- # is a cs1|2 reserved character so parameters with # not permitted return nil; end -- replace wnumerator digit(s) with # (|last25= becomes |last#=) (mw.ustring because non-Western 'local' digits) enum_name = mw.ustring.gsub (name, '%d+$', '#'); -- where enumerator is last charaters in parameter name (these to protect |s2cid=) enum_name = mw.ustring.gsub (enum_name, '%d+([%-l])', '#%1'); -- where enumerator is in the middle of the parameter name; |author#link= is the oddity if 'document' == cite_class then -- special case for {{cite document}} state = whitelist.document_parameters_t[enum_name]; -- this list holds enumerated and nonenumerated parameters if true == state_test (state, name) then return true; end return false; end if utilities.in_array (cite_class, whitelist.preprint_template_list_t) then -- limited parameter sets allowed for these templates state = whitelist.limited_parameters_t[enum_name]; -- this list holds enumerated and nonenumerated parameters if true == state_test (state, name) then return true; end state = whitelist.preprint_arguments_t[cite_class][name]; -- look in the parameter-list for the template identified by cite_class if true == state_test (state, name) then return true; end return false; -- not supported because not found or name is set to nil end -- end limited parameter-set templates if utilities.in_array (cite_class, whitelist.unique_param_template_list_t) then -- template-specific parameters for templates that accept parameters from the basic argument list state = whitelist.unique_arguments_t[cite_class][name]; -- look in the template-specific parameter-lists for the template identified by cite_class if true == state_test (state, name) then return true; end end -- if here, fall into general validation state = whitelist.common_parameters_t[enum_name]; -- all other templates; all normal parameters allowed; this list holds enumerated and nonenumerated parameters if true == state_test (state, name) then return true; end return false; -- not supported because not found or name is set to nil end --[=[-------------------------< I N T E R _ W I K I _ C H E C K >---------------------------------------------- check <value> for inter-language interwiki-link markup. <prefix> must be a MediaWiki-recognized language code. when these values have the form (without leading colon): [[<prefix>:link|label]] return label as plain-text [[<prefix>:link]] return <prefix>:link as plain-text return value as is else ]=] local function inter_wiki_check (parameter, value) local prefix = value:match ('%[%[(%a+):'); -- get an interwiki prefix if one exists local _; if prefix and cfg.inter_wiki_map[prefix:lower()] then -- if prefix is in the map, needs preceding colon so utilities.set_message ('err_bad_paramlink', parameter); -- emit an error message _, value, _ = utilities.is_wikilink (value); -- extract label portion from wikilink end return value; end --[[--------------------------< M I S S I N G _ P I P E _ C H E C K >------------------------------------------ Look at the contents of a parameter. If the content has a string of characters and digits followed by an equal sign, compare the alphanumeric string to the list of cs1|2 parameters. If found, then the string is possibly a parameter that is missing its pipe. There are two tests made: {{cite ... |title=Title access-date=2016-03-17}} -- the first parameter has a value and whitespace separates that value from the missing pipe parameter name {{cite ... |title=access-date=2016-03-17}} -- the first parameter has no value (whitespace after the first = is trimmed by MediaWiki) cs1|2 shares some parameter names with XML/HTML attributes: class=, title=, etc. To prevent false positives XML/HTML tags are removed before the search. If a missing pipe is detected, this function adds the missing pipe maintenance category. ]] local function missing_pipe_check (parameter, value) local capture; value = value:gsub ('%b<>', ''); -- remove XML/HTML tags because attributes: class=, title=, etc. capture = value:match ('%s+(%a[%w%-]+)%s*=') or value:match ('^(%a[%w%-]+)%s*='); -- find and categorize parameters with possible missing pipes if capture and validate (capture) then -- if the capture is a valid parameter name utilities.set_message ('err_missing_pipe', parameter); end end --[[--------------------------< H A S _ E X T R A N E O U S _ P U N C T >-------------------------------------- look for extraneous terminal punctuation in most parameter values; parameters listed in skip table are not checked ]] local function has_extraneous_punc (param, value) if 'number' == type (param) then return; end param = param:gsub ('%d+', '#'); -- enumerated name-list mask params allow terminal punct; normalize if cfg.punct_skip[param] then return; -- parameter name found in the skip table so done end if value:match ('[,;:]$') then utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat end if value:match ('^=') then -- sometimes an extraneous '=' character appears ... utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat end end --[[--------------------------< H A S _ E X T R A N E O U S _ U R L >------------------------------------------ look for extraneous url parameter values; parameters listed in skip table are not checked ]] local function has_extraneous_url (url_param_t) local url_error_t = {}; check_for_url (url_param_t, url_error_t); -- extraneous url check if 0 ~= #url_error_t then -- non-zero when there are errors table.sort (url_error_t); utilities.set_message ('err_param_has_ext_link', {utilities.make_sep_list (#url_error_t, url_error_t)}); -- add this error message end end --[[--------------------------< C I T A T I O N >-------------------------------------------------------------- This is used by templates such as {{cite book}} to create the actual citation text. ]] local function citation(frame) Frame = frame; -- save a copy in case we need to display an error message in preview mode local config = {}; -- table to store parameters from the module {{#invoke:}} for k, v in pairs( frame.args ) do -- get parameters from the {{#invoke}} frame config[k] = v; -- args[k] = v; -- crude debug support that allows us to render a citation from module {{#invoke:}}; skips parameter validation; TODO: keep? end -- i18n: set the name that your wiki uses to identify sandbox subpages from sandbox template invoke (or can be set here) local sandbox = ((config.SandboxPath and '' ~= config.SandboxPath) and config.SandboxPath) or '/sandbox'; -- sandbox path from {{#invoke:Citation/CS1/sandbox|citation|SandboxPath=/...}} is_sandbox = nil ~= string.find (frame:getTitle(), sandbox, 1, true); -- is this invoke the sandbox module? sandbox = is_sandbox and sandbox or ''; -- use i18n sandbox to load sandbox modules when this module is the sandox; live modules else local pframe = frame:getParent() local styles; cfg = mw.loadData ('Module:Citation/CS1/Configuration' .. sandbox); -- load sandbox versions of support modules when {{#invoke:Citation/CS1/sandbox|...}}; live modules else whitelist = mw.loadData ('Module:Citation/CS1/Whitelist' .. sandbox); utilities = require ('Module:Citation/CS1/Utilities' .. sandbox); validation = require ('Module:Citation/CS1/Date_validation' .. sandbox); identifiers = require ('Module:Citation/CS1/Identifiers' .. sandbox); metadata = require ('Module:Citation/CS1/COinS' .. sandbox); styles = 'Module:Citation/CS1' .. sandbox .. '/styles.css'; utilities.set_selected_modules (cfg); -- so that functions in Utilities can see the selected cfg tables identifiers.set_selected_modules (cfg, utilities); -- so that functions in Identifiers can see the selected cfg tables and selected Utilities module validation.set_selected_modules (cfg, utilities); -- so that functions in Date validataion can see selected cfg tables and the selected Utilities module metadata.set_selected_modules (cfg, utilities); -- so that functions in COinS can see the selected cfg tables and selected Utilities module z = utilities.z; -- table of error and category tables in Module:Citation/CS1/Utilities is_preview_mode = not utilities.is_set (frame:preprocess ('{{REVISIONID}}')); local args = {}; -- table where we store all of the template's arguments local suggestions = {}; -- table where we store suggestions if we need to loadData them local error_text; -- used as a flag local capture; -- the single supported capture when matching unknown parameters using patterns local empty_unknowns = {}; -- sequence table to hold empty unknown params for error message listing for k, v in pairs( pframe.args ) do -- get parameters from the parent (template) frame v = mw.ustring.gsub (v, '^%s*(.-)%s*$', '%1'); -- trim leading/trailing whitespace; when v is only whitespace, becomes empty string if v ~= '' then if ('string' == type (k)) then k = mw.ustring.gsub (k, '%d', cfg.date_names.local_digits); -- for enumerated parameters, translate 'local' digits to Western 0-9 end if not validate( k, config.CitationClass ) then if type (k) ~= 'string' then -- exclude empty numbered parameters if v:match("%S+") ~= nil then error_text = utilities.set_message ('err_text_ignored', {v}); end elseif validate (k:lower(), config.CitationClass) then error_text = utilities.set_message ('err_parameter_ignored_suggest', {k, k:lower()}); -- suggest the lowercase version of the parameter else if nil == suggestions.suggestions then -- if this table is nil then we need to load it suggestions = mw.loadData ('Module:Citation/CS1/Suggestions' .. sandbox); --load sandbox version of suggestion module when {{#invoke:Citation/CS1/sandbox|...}}; live module else end for pattern, param in pairs (suggestions.patterns) do -- loop through the patterns to see if we can suggest a proper parameter capture = k:match (pattern); -- the whole match if no capture in pattern else the capture if a match if capture then -- if the pattern matches param = utilities.substitute (param, capture); -- add the capture to the suggested parameter (typically the enumerator) if validate (param, config.CitationClass) then -- validate the suggestion to make sure that the suggestion is supported by this template (necessary for limited parameter lists) error_text = utilities.set_message ('err_parameter_ignored_suggest', {k, param}); -- set the suggestion error message else error_text = utilities.set_message ('err_parameter_ignored', {k}); -- suggested param not supported by this template v = ''; -- unset end end end if not utilities.is_set (error_text) then -- couldn't match with a pattern, is there an explicit suggestion? if (suggestions.suggestions[ k:lower() ] ~= nil) and validate (suggestions.suggestions[ k:lower() ], config.CitationClass) then utilities.set_message ('err_parameter_ignored_suggest', {k, suggestions.suggestions[ k:lower() ]}); else utilities.set_message ('err_parameter_ignored', {k}); v = ''; -- unset value assigned to unrecognized parameters (this for the limited parameter lists) end end end end args[k] = v; -- save this parameter and its value elseif not utilities.is_set (v) then -- for empty parameters if not validate (k, config.CitationClass, true) then -- is this empty parameter a valid parameter k = ('' == k) and '(empty string)' or k; -- when k is empty string (or was space(s) trimmed to empty string), replace with descriptive text table.insert (empty_unknowns, utilities.wrap_style ('parameter', k)); -- format for error message and add to the list end -- crude debug support that allows us to render a citation from module {{#invoke:}} TODO: keep? -- elseif args[k] ~= nil or (k == 'postscript') then -- when args[k] has a value from {{#invoke}} frame (we don't normally do that) -- args[k] = v; -- overwrite args[k] with empty string from pframe.args[k] (template frame); v is empty string here end -- not sure about the postscript bit; that gets handled in parameter validation; historical artifact? end if 0 ~= #empty_unknowns then -- create empty unknown error message utilities.set_message ('err_param_unknown_empty', { 1 == #empty_unknowns and '' or 's', utilities.make_sep_list (#empty_unknowns, empty_unknowns) }); end local url_param_t = {}; for k, v in pairs( args ) do if 'string' == type (k) then -- don't evaluate positional parameters has_invisible_chars (k, v); -- look for invisible characters end has_extraneous_punc (k, v); -- look for extraneous terminal punctuation in parameter values missing_pipe_check (k, v); -- do we think that there is a parameter that is missing a pipe? args[k] = inter_wiki_check (k, v); -- when language interwiki-linked parameter missing leading colon replace with wiki-link label if 'string' == type (k) and not cfg.url_skip[k] then -- when parameter k is not positional and not in url skip table url_param_t[k] = v; -- make a parameter/value list for extraneous url check end end has_extraneous_url (url_param_t); -- look for url in parameter values where a url does not belong return table.concat ({ frame:extensionTag ('templatestyles', '', {src=styles}), citation0( config, args) }); end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return {citation = citation}; 03d0c65e9544044eef296e124f940c7cc9319972 Module:Citation/CS1/styles.css 828 832 1847 1846 2023-10-01T10:38:27Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/styles.css]] sanitized-css text/css /* Protection icon the following line controls the page-protection icon in the upper right corner it must remain within this comment {{sandbox other||{{pp-template}}}} */ /* Overrides Some wikis do not override user agent default styles for HTML <cite> and <q>, unlike en.wp. On en.wp, keep these the same as [[MediaWiki:Common.css]]. The word-wrap and :target styles were moved here from Common.css. On en.wp, keep these the same as [[Template:Citation/styles.css]]. */ cite.citation { font-style: inherit; /* Remove italics for <cite> */ /* Break long urls, etc., rather than overflowing box */ word-wrap: break-word; } .citation q { quotes: '"' '"' "'" "'"; /* Straight quote marks for <q> */ } /* Highlight linked elements (such as clicked references) in blue */ .citation:target { /* ignore the linter - all browsers of interest implement this */ background-color: rgba(0, 127, 255, 0.133); } /* ID and URL access Both core and Common.css have selector .mw-parser-output a[href$=".pdf"].external for PDF pages. All TemplateStyles pages are hoisted to .mw-parser-output. We need to have specificity equal to a[href$=".pdf"].external for locks to override PDF icon. That's essentially 2 classes and 1 element. the .id-lock-... selectors are for use by non-citation templates like {{Catalog lookup link}} which do not have to handle PDF links */ .id-lock-free a, .citation .cs1-lock-free a { background: url(//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg) right 0.1em center/9px no-repeat; } .id-lock-limited a, .id-lock-registration a, .citation .cs1-lock-limited a, .citation .cs1-lock-registration a { background: url(//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg) right 0.1em center/9px no-repeat; } .id-lock-subscription a, .citation .cs1-lock-subscription a { background: url(//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg) right 0.1em center/9px no-repeat; } /* Wikisource Wikisource icon when |chapter= or |title= is wikilinked to Wikisource as in cite wikisource */ .cs1-ws-icon a { background: url(//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg) right 0.1em center/12px no-repeat; } /* Errors and maintenance */ .cs1-code { /* <code>...</code> style override: mediawiki's css definition is specified here: https://git.wikimedia.org/blob/mediawiki%2Fcore.git/ 69cd73811f7aadd093050dbf20ed70ef0b42a713/skins%2Fcommon%2FcommonElements.css#L199 */ color: inherit; background: inherit; border: none; padding: inherit; } .cs1-hidden-error { display: none; color: #d33; } .cs1-visible-error { color: #d33; } .cs1-maint { display: none; color: #3a3; margin-left: 0.3em; } /* Small text size Set small text size in one place. 0.95 (here) * 0.9 (from references list) is ~0.85, which is the lower bound for size for accessibility. Old styling for this was just 0.85. We could write the rule so that when this template is inside references/reflist, only then does it multiply by 0.95; else multiply by 0.85 */ .cs1-format { font-size: 95%; } /* kerning */ .cs1-kern-left { padding-left: 0.2em; } .cs1-kern-right { padding-right: 0.2em; } /* selflinks – avoid bold font style when cs1|2 template links to the current page */ .citation .mw-selflink { font-weight: inherit; } 7c96feb084b1883e7b6522660da6a14bdcc94752 Template:Plain link 10 833 1849 1848 2023-10-01T10:38:29Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Plain_link]] wikitext text/x-wiki <span class="plainlinks">{{SAFESUBST:<noinclude />#if:{{{2|{{{NAME|{{{name|}}}}}}}}} |[{{{1|{{{URL|{{{url}}}}}}}}} {{{2|{{{NAME|{{{name|}}}}}}}}}] |[{{{1|{{{URL|{{{url}}}}}}}}}] }}</span><noinclude> {{documentation}} </noinclude> 2730384491e116ee2f16e9ceed1cb23b7bb148a0 Template:Pipe 10 834 1851 1850 2023-10-01T10:38:30Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Pipe]] wikitext text/x-wiki &#124;<noinclude> {{documentation}} <!-- Add categories to the /doc subpage --> </noinclude> 2e39a107f660e0f346b655cc3cb1a4a6be07247d Template:Cs1 10 835 1853 1852 2023-10-01T10:38:33Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cs1]] wikitext text/x-wiki [[Help:Citation Style 1|Citation Style 1]]<noinclude> [[Category:Documentation assistance templates]] </noinclude> 1da8ad17d867e11fdecfe858aa0b0e5a632bb6e8 Template:Cs2 10 836 1855 1854 2023-10-01T10:38:33Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cs2]] wikitext text/x-wiki [[Help:Citation Style 2|Citation Style 2]]<noinclude> [[Category:Documentation assistance templates]] </noinclude> 858b36b946491e8f374a732e2a72589c9d6f7f00 Module:Citation/CS1/doc 828 837 1857 1856 2023-10-01T10:38:36Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/doc]] wikitext text/x-wiki <section begin=header /> {{sandbox other|| {{#switch:{{FULLPAGENAME}} |Module:Citation/CS1={{high-risk |article-space=yes |no-percent=yes}} {{Uses TemplateStyles|Module:Citation/CS1/styles.css}} |Module:Citation/CS1/Configuration={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/Whitelist={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/Date validation={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/Identifiers={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/Utilities={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/COinS={{high-risk |article-space=yes |no-percent=yes}} |Module:Citation/CS1/Suggestions={{high-use |article-space=yes |no-percent=yes}} }} {{Module rating|p}}}}<!-- if pagename does not contain sandbox --> <section end=header /> This module and associated sub-modules support the {{cs1}} and {{cs2}} citation templates. In general, it is not intended to be called directly, but is called by one of the core CS1 and CS2 templates. <section begin=module_components_table /> These files comprise the module support for CS1|2 citation templates: {| class="wikitable" style="margin: 1em auto 1em auto;" |+CS1 {{pipe}} CS2 modules |- !colspan="2"|live!!colspan="2"|sandbox!!diff!!description |- | rowspan="8"| [[File:Full-protection-shackle.svg|20px|alt=Gold padlock|link=|sysop]] || [[Module:Citation/CS1]] || [[Module:Citation/CS1/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1&rev1=&page2=Module%3ACitation%2FCS1%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Rendering and support functions |- | [[Module:Citation/CS1/Configuration]] || [[Module:Citation/CS1/Configuration/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Configuration/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FConfiguration&rev1=&page2=Module%3ACitation%2FCS1%2FConfiguration%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Translation tables; error and identifier handlers |- | [[Module:Citation/CS1/Whitelist]] || [[Module:Citation/CS1/Whitelist/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Whitelist/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FWhitelist&rev1=&page2=Module%3ACitation%2FCS1%2FWhitelist%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| List of active and deprecated CS1{{pipe}}2 parameters |- | [[Module:Citation/CS1/Date validation]] || [[Module:Citation/CS1/Date validation/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Date_validation/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FDate+validation&rev1=&page2=Module%3ACitation%2FCS1%2FDate+validation%2Fsandbox&rev2=&action=&diffonly=&unhide= diff] || Date format validation functions |- | [[Module:Citation/CS1/Identifiers]] || [[Module:Citation/CS1/Identifiers/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Identifiers/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FIdentifiers&rev1=&page2=Module%3ACitation%2FCS1%2FIdentifiers%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Functions that support the named identifiers (ISBN, DOI, PMID, etc.) |- | [[Module:Citation/CS1/Utilities]] || [[Module:Citation/CS1/Utilities/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Utilities/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FUtilities&rev1=&page2=Module%3ACitation%2FCS1%2FUtilities%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Common functions and tables |- | [[Module:Citation/CS1/COinS]] || [[Module:Citation/CS1/COinS/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/COinS/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FCOinS&rev1=&page2=Module%3ACitation%2FCS1%2FCOinS%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Functions that render a CS1{{pipe}}2 template's metadata |- | [[Module:Citation/CS1/styles.css]] || [[Module:Citation/CS1/sandbox/styles.css]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/sandbox/styles.css&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2Fstyles.css&rev1=&page2=Module%3ACitation%2FCS1%2Fsandbox%2Fstyles.css&rev2=&action=&diffonly=&unhide= diff]|| [[CSS]] styles applied to the CS1{{pipe}}2 templates |- | [[File:Template-protection-shackle.svg|20px|alt=Silver padlock|link=|auto confirmed]] || [[Module:Citation/CS1/Suggestions]] || [[Module:Citation/CS1/Suggestions/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Suggestions/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FSuggestions&rev1=&page2=Module%3ACitation%2FCS1%2FSuggestions%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| List that maps common erroneous parameter names to valid parameter names |} <section end=module_components_table /> Other documentation: * [[Module talk:Citation/CS1/Feature requests]] * [[Module talk:Citation/CS1/COinS]] * [[Module:Cs1 documentation support]] – a set of functions (some experimental) that extract information from the module suite for the purpose of documenting CS1|2 ** [[Module:Citation/CS1/doc/Category list]] – lists of category names taken directly from [[Module:Citation/CS1/Configuration]] and [[Module:Citation/CS1/Configuration/sandbox]] testcases *[[Module:Citation/CS1/testcases]] ([[Module talk:Citation/CS1/testcases|run]]) *[[Module:Citation/CS1/testcases/errors]] ([[Module talk:Citation/CS1/testcases/errors|run]]) – error and maintenance messaging *[[Module:Citation/CS1/testcases/dates]] ([[Module talk:Citation/CS1/testcases/dates|run]]) – date validation *[[Module:Citation/CS1/testcases/identifiers]] ([[Module talk:Citation/CS1/testcases/identifiers|run]]) – identifiers *[[Module:Citation/CS1/testcases/anchor]] ([[Module talk:Citation/CS1/testcases/anchor|run]]) – CITEREF anchors <includeonly>{{sandbox other|| [[Category:Modules that add a tracking category]] {{#ifeq:{{SUBPAGENAME}}|Identifiers|[[Category:Modules using data from Wikidata]]}} }}</includeonly> 56cf87a73a7f0f558be8d5697e91dcbcb2fdb3b6 Template:Social democracy sidebar 10 838 1859 1858 2023-10-01T10:39:03Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Social_democracy_sidebar]] wikitext text/x-wiki <noinclude>{{pp-template|small=yes}}</noinclude><includeonly>{{Sidebar with collapsible lists | name = Social democracy sidebar | pretitle = Part of [[:Category:Social democracy|a series]] on | title = [[Social democracy]] | imagestyle = padding:0.65em; | image = [[File:Red rose 02.svg|75px|link=Rose (symbolism)#Socialism and social democracy]] | listtitlestyle = border-top:1px solid #B60202;background:transparent;padding-left:0.3em;text-align:center;color:black; | listclass = hlist | liststyle = margin-top:0;padding:0 0.6em 0.6em; | expanded = {{{expanded|{{{selected|{{{1|}}}}}}}}} | list1name = history | list1title = [[History of social democracy|History]] | list1 = * [[Age of Enlightenment]] * [[Frankfurt Declaration]] * [[French Revolution]] * [[Godesberg Program]] * [[Humanism]] * [[Internationalist–defencist schism]] * [[Keynesian economics|Keynesianism]] * [[Labour movement|Labor movement]] * [[Marxism]] ** [[Orthodox Marxism|Orthodox]] ** [[Revisionism (Marxism)|Revisionist]] * [[Nordic model]] * [[Social democracy#Second International era and reform or revolution dispute (1889–1914)|Reformist–revolutionary dispute]] * [[History of socialism|Socialism]] * [[Revolutions of 1848]] * [[Utopian socialism]] * [[Welfare capitalism]] | list2name = concepts | list2title = Concepts | list2 = * [[Civil liberties]] * [[Democracy]] ** [[Economic democracy|Economic]] ** [[Industrial democracy|Industrial]] ** [[Representative democracy|Representative]] * [[Dirigisme]] * [[Environmentalism]] * [[Environmental protection]] * [[Fair trade]] * [[Gradualism]] * [[Internationalism (politics)#Socialism|Internationalism]] * [[Land reform]] * [[Labor rights]] * [[Left-wing nationalism]] * [[Mixed economy]] * [[Nationalization|Nationali{{#ifeq:{{{sp}}}|uk|s|z}}ation]] * [[Negative and positive rights]] * [[Progressivism]] * [[Reformism]] ** [[Reformist Left|Left]] ** [[Reformism|Socialism]] * [[Revolutionary socialism]] * [[Secularism]] * [[Social corporatism]] * [[Social justice]] * [[Social market economy]] * [[Socialist state]] ** [[State capitalism|Capitalism]] ** [[State socialism|Socialism]] * [[Trade union]] * [[Tripartism]] * [[Welfare]] * [[Welfare state]] | list3name = variants | list3title = Variants | list3 = * [[Democratic socialism]] * [[Ethical socialism]] * [[Eduard Bernstein#Opinions|Evolutionary socialism]] * [[Liberal socialism]] * [[Socialism of the 21st century]] * [[Third Way]] | list4name = people | list4title = [[List of social democrats|People]] | list4 = <!-- Alphabetical by surname. --> * [[B. R. Ambedkar|Ambedkar]] * [[Salvador Allende|Allende]] * [[Jacinda Ardern|Ardern]] * [[Clement Attlee|Attlee]] * [[Obafemi Awolowo|Awolowo]] * [[José Batlle y Ordóñez|Batlle y Ordóñez]] * [[August Bebel|Bebel]] * [[David Ben-Gurion|Ben-Gurion]] * [[Eduard Bernstein|Bernstein]] * [[Rómulo Betancourt|Betancourt]] * [[Zulfikar Ali Bhutto|Bhutto]] * [[Tony Blair|Blair]] * [[Louis Blanc|Blanc]] * [[Willy Brandt|Brandt]] * [[Hjalmar Branting|Branting]] * [[Gordon Brown|Brown]] * [[James Callaghan|Callaghan]] * [[Lázaro Cárdenas|Cárdenas]] * [[Helen Clark|Clark]] * [[Bettino Craxi|Craxi]] * [[Anthony Crosland|Crosland]] * [[Jeremy Corbyn|Corbyn]] * [[John Curtin|Curtin]] * [[Ignacy Daszyński|Daszyński]] * [[Eugene V. Debs|Debs]] * [[Tommy Douglas|Douglas]] * [[Willem Drees|Drees]] * [[Friedrich Ebert|Ebert]] * [[Bülent Ecevit|Ecevit]] * [[Friedrich Engels|Engels]] * [[Peter Fraser|Fraser]] * [[Hugh Gaitskell|Gaitskell]] * [[Indira Gandhi|Gandhi]] * [[Felipe González|González]] * [[João Goulart|Goulart]] * [[Keir Hardie|Hardie]] * [[Rudolf Hilferding|Hilferding]] * [[Erdal İnönü|İnönü]] * [[Jean Jaurès|Jaurès]] * [[Roy Jenkins|Jenkins]] * [[Kamal Jumblatt|Jumblatt]] * [[Carsun Chang|Junmai]] * [[Tetsu Katayama|Katayama]] * [[Karl Kautsky|Kautsky]] * [[Alexander Kerensky|Kerensky]] * [[Anna Kéthly|Kéthly]] * [[Norman Kirk|Kirk]] * [[Ricardo Lagos|Lagos]] * [[Ferdinand Lassalle|Lassalle]] * [[Jack Layton|Layton]] * [[Vladimir Lenin|Lenin]] * [[René Lévesque|Lévesque]] * [[Wilhelm Liebknecht|Liebknecht (father)]] * [[Karl Liebknecht|Liebknecht (son)]] * [[Rosa Luxemburg|Luxemburg]] * [[Ramsay MacDonald|MacDonald]] * [[Nelson Mandela|Mandela]] * [[Karl Marx|Marx]] * [[Alva Myrdal|Myrdal]] * [[Jawaharlal Nehru|Nehru]] * [[Olof Palme|Palme]] * [[Georgi Plekhanov|Plekhanov]] * [[Romano Prodi|Prodi]] * [[Bertrand Russell|Russell]] * [[Bernie Sanders|Sanders]] * [[Michael Joseph Savage|Savage]] * [[Thorvald Stauning|Stauning]] * [[Norman Thomas|Thomas]] * [[Joop den Uyl|Den Uyl]] * [[Sidney Webb, 1st Baron Passfield|Webb]] * [[Gough Whitlam|Whitlam]] * [[Harold Wilson|Wilson]] * [[Noe Zhordania|Zhordania]] | list5name = orgs | list5title = [[List of social democratic parties|Organi{{#ifeq:{{{sp}}}|uk|s|z}}ations]] | list5 = * [[International Trade Union Confederation]] * [[International Union of Socialist Youth]] * [[Party of European Socialists]] * [[Progressive Alliance]] * [[Socialist International]] * [[Young European Socialists]] | list6name = by region | list6title = By region | list6 = * [[History of the Social Democratic Party of Austria|Austria]] * [[History of the Social Democratic Party of Germany|Germany]] * [[Social democracy in the United States|United States]] | list7name = related | list7title = Related | list7 = * [[Communism]] * "[[The Internationale]]" * [[Socialism]] * [[Types of socialism]] | navbarstyle = border-top:1px solid #B60202; | belowstyle = font-weight:normal; border-top:1px solid #B60202; border-bottom:none; | belowclass = plainlist | below = * '''{{portal-inline|Economics|size=tiny}}''' * '''{{portal-inline|Politics|size=tiny}}''' * '''{{portal-inline|Socialism|size=tiny}}''' }}</includeonly><noinclude> {{Documentation}} </noinclude> 3b9093241143a86276aa4d5cef6bf1192d07fb7c Module:Portal 828 839 1861 1860 2023-10-01T10:39:06Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Portal]] Scribunto text/plain --[==[ This module is a Lua implementation of the old {{Portal}} template. As of February 2019 it is used on nearly 7,900,000 articles. -- Please take care when updating it! It outputs two functions: p.portal, which generates a list of portals, and p.image, which -- produces the image name for an individual portal. -- The portal image data is kept in submodules of [[Module:Portal/images]], listed below: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- -- The images data pages are separated by the first letter to reduce server load when images are added, changed, or removed. -- Previously all the images were on one data page at [[Module:Portal/images]], but this had the disadvantage that all -- 5,000,000 pages using this module needed to be refreshed every time an image was added or removed. ]==] local p = {} -- determine whether we're being called from a sandbox local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) local sandbox = isSandbox and '/sandbox' or '' local function sandboxVersion(s) return isSandbox and s..'-sand' or s end local templatestyles = 'Module:Portal'..sandbox..'/styles.css' local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') -- List of non-talk namespaces which should not be tracked (Talk pages are never tracked) local badNamespaces = {'user','template','draft','wikipedia'} -- Check whether to do tracking in this namespace -- Returns true unless the page is one of the banned namespaces local function checkTracking(title) local thisPage = title or mw.title.getCurrentTitle() if thisPage.isTalkPage then return false end local ns = thisPage.nsText:lower() for _, v in ipairs(badNamespaces) do if ns == v then return false end end return true end local function matchImagePage(s) -- Finds the appropriate image subpage given a lower-case -- portal name plus the first letter of that portal name. if type(s) ~= 'string' or #s < 1 then return end local firstLetter = mw.ustring.sub(s, 1, 1) local imagePage if mw.ustring.find(firstLetter, '^[a-z]') then imagePage = 'Module:Portal/images/' .. firstLetter .. sandbox else imagePage = 'Module:Portal/images/other' .. sandbox end return mw.loadData(imagePage)[s] end local function getAlias(s) -- Gets an alias from the image alias data page. local aliasData = mw.loadData('Module:Portal/images/aliases'..sandbox) for portal, aliases in pairs(aliasData) do for _, alias in ipairs(aliases) do if alias == s then return portal end end end end local defaultImage = 'Portal-puzzle.svg|link=|alt=' local function getImageName(s) -- Gets the image name for a given string. if type(s) ~= 'string' or #s < 1 then return defaultImage end s = mw.ustring.lower(s) return matchImagePage(s) or matchImagePage(getAlias(s)) or defaultImage end -- Function to check argument portals for errors, generate tracking categories if needed -- Function first checks for too few/many portals provided -- Then checks the portal list to purge any portals that don't exist -- Arguments: -- portals: raw list of portals -- args.tracking: is tracking requested? (will not track on bad titles or namespaces) -- args.redlinks: should redlinks be displayed? -- args.minPortals: minimum number of portal arguments -- args.maxPortals: maximum number of portal arguments -- Returns: -- portals = list of portals, with redlinks purged (if args.redlinks=false) -- trackingCat = possible tracking category -- errorMsg = error message function p._checkPortals(portals, args) local trackingCat = '' local errMsg = nil -- Tracking is on by default. -- It is disabled if any of the following is true -- 1/ the parameter "tracking" is set to 'no, 'n', or 'false' -- 2/ the current page fails the namespace or pagename tests local trackingEnabled = args.tracking and checkTracking() args.minPortals = args.minPortals or 1 args.maxPortals = args.maxPortals or -1 -- check for too few portals if #portals < args.minPortals then errMsg = 'please specify at least '..args.minPortals..' portal'..(args.minPortals > 1 and 's' or '') trackingCat = (trackingEnabled and '[[Category:Portal templates with too few portals]]' or '') return portals, trackingCat, errMsg end -- check for too many portals if args.maxPortals >= 0 and #portals > args.maxPortals then errMsg = 'too many portals (maximum = '..args.maxPortals..')' trackingCat = (trackingEnabled and '[[Category:Portal templates with too many portals]]' or '') return portals, trackingCat, errMsg end if not args.redlinks or trackingEnabled then -- make new list of portals that exist local existingPortals = {} for _, portal in ipairs(portals) do local portalTitle = mw.title.new(portal,"Portal") -- if portal exists, put it into list if portalTitle and portalTitle.exists then table.insert(existingPortals,portal) -- otherwise set tracking cat elseif trackingEnabled then trackingCat = "[[Category:Portal templates with redlinked portals]]" end end -- If redlinks is off, use portal list purged of redlinks portals = args.redlinks and portals or existingPortals -- if nothing left after purge, set tracking cat if #portals == 0 and trackingEnabled then trackingCat = trackingCat.."[[Category:Pages with empty portal template]]" end end return portals, trackingCat, errMsg end local function portalBox(args) return mw.html.create('ul') :attr('role', 'navigation') :attr('aria-label', 'Portals') :addClass('noprint') :addClass(args.error and '' or sandboxVersion('portalbox')) :addClass(args.border and sandboxVersion('portalborder') or '') :addClass(sandboxVersion(args.left and 'portalleft' or 'portalright')) :css('margin', args.margin or nil) :newline() end local function fillBox(root, contents) for _, item in ipairs(contents) do local entry = root:tag('li') entry:addClass(sandboxVersion('portalbox-entry')) local image = entry:tag('span') image:addClass(sandboxVersion('portalbox-image')) image:wikitext(item[1]) local link = entry:tag('span') link:addClass(sandboxVersion('portalbox-link')) link:wikitext(item[2]) end return root end function p._portal(portals, args) -- This function builds the portal box used by the {{portal}} template. -- Normalize all arguments if args.redlinks == 'include' then args.redlinks = true end args.addBreak = args['break'] for key, default in pairs({left=false,tracking=true,nominimum=false, redlinks=false,addBreak=false,border=true}) do if args[key] == nil then args[key] = default end args[key] = yesno(args[key], default) end local root = portalBox(args) local trackingCat = '' local errMsg = nil args.minPortals = args.nominimum and 0 or 1 args.maxPortals = -1 portals, trackingCat, errMsg = p._checkPortals(portals, args) root:wikitext(trackingCat) -- if error message, put it in the box and return if errMsg then if args.border then -- suppress error message when border=no args.error = true -- recreate box without fancy formatting root = portalBox(args) root:wikitext(trackingCat) local errTag = root:tag('strong') errTag:addClass('error') errTag:css('padding','0.2em') errTag:wikitext('Error: '..errMsg) end return tostring(root) end -- if no portals (and no error), just return tracking category if #portals == 0 then return trackingCat end local contents = {} -- Display the portals specified in the positional arguments. local defaultUsed = nil for _, portal in ipairs(portals) do local portalImage = getImageName(portal) if portalImage == defaultImage then defaultUsed = portal end local image = string.format('[[File:%s|32x28px|class=noviewer]]', portalImage) local link = string.format('[[Portal:%s|%s%sportal]]', portal, portal, args.addBreak and '<br />' or ' ') table.insert(contents, {image, link}) end if defaultUsed and checkTracking() then local cat = string.format('[[Category:Portal templates with default image|%s]]', defaultUsed) root:wikitext(cat) end return tostring(fillBox(root, contents)) end function p._demo(imageList, args) for key, default in pairs({left=false,border=true}) do if args[key] == nil then args[key] = default end args[key] = yesno(args[key], default) end local root = portalBox(args) local contents = {} -- Display the portals specified in the positional arguments. for _, fn in ipairs(imageList) do local image = string.format('[[File:%s|32x28px|class=noviewer]]',fn) local link = string.format('[[:File:%s|%s]]',fn,fn) table.insert(contents,{image,link}) end return tostring(fillBox(root,contents)) end function p._image(portal,keep) -- Wrapper function to allow getImageName() to be accessed through #invoke. -- backward compatibility: if table passed, take first element if type(portal) == 'table' then portal = portal[1] end local name = getImageName(portal) -- If keep is yes (or equivalent), then allow all metadata (like image borders) to be returned local keepargs = yesno(keep) local args = mw.text.split(name, "|", true) local result = {args[1]} -- the filename always comes first local category = '' -- parse name, looking for category arguments for i = 2,#args do local m = mw.ustring.match(args[i], "^%s*category%s*=") if keepargs or m then table.insert(result, args[i]) end end -- reassemble arguments return table.concat(result,"|") end local function getAllImageTable() -- Returns an array containing all image subpages (minus aliases) as loaded by mw.loadData. local images = {} for i, subpage in ipairs{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'other'} do local imageTable = mw.loadData('Module:Portal/images/' .. subpage .. sandbox) for portal, image in pairs(imageTable) do local args = mw.text.split(image,"|") images[portal] = args[1] -- just use image filename end end return images end function p._displayAll(portals, args) -- This function displays all portals that have portal images. This function is for maintenance purposes and should not be used in -- articles, for two reasons: 1) there are over 1500 portals with portal images, and 2) the module doesn't record how the portal -- names are capitalized, so the portal links may be broken. local lang = mw.language.getContentLanguage() portals = portals or {} for portal in pairs(getAllImageTable()) do table.insert(portals,lang:ucfirst(portal)) end table.sort(portals) args.redlinks = args.redlinks or "yes" return p._portal(portals, args) end function p._imageDupes() -- This function searches the image subpages to find duplicate images. If duplicate images exist, it is not necessarily a bad thing, -- as different portals might just happen to choose the same image. However, this function is helpful in identifying images that -- should be moved to a portal alias for ease of maintenance. local exists, dupes = {}, {} for portal, image in pairs(getAllImageTable()) do if not exists[image] then exists[image] = portal else table.insert(dupes, string.format('The image "[[:File:%s|%s]]" is used for both portals "%s" and "%s".', image, image, exists[image], portal)) end end if #dupes < 1 then return 'No duplicate images found.' else return 'The following duplicate images were found:\n* ' .. table.concat(dupes, '\n* ') end end local function processPortalArgs(args) -- This function processes a table of arguments and returns two tables: an array of portal names for processing by ipairs, and a table of -- the named arguments that specify style options, etc. We need to use ipairs because we want to list all the portals in the order -- they were passed to the template, but we also want to be able to deal with positional arguments passed explicitly, for example -- {{portal|2=Politics}}. The behaviour of ipairs is undefined if nil values are present, so we need to make sure they are all removed. args = type(args) == 'table' and args or {} local portals = {} local namedArgs = {} for k, v in pairs(args) do if type(k) == 'number' and type(v) == 'string' then -- Make sure we have no non-string portal names. table.insert(portals, k) elseif type(k) ~= 'number' then namedArgs[k] = v end end table.sort(portals) for i, v in ipairs(portals) do portals[i] = args[v] end return portals, namedArgs end -- Entry point for sorting portals from other named arguments function p._processPortalArgs(args) return processPortalArgs(args) end function p.image(frame) local origArgs = getArgs(frame) local portals, args = processPortalArgs(origArgs) return p._image(portals[1],args.border) end function p.demo(frame) local args = getArgs(frame) local styles = frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } return styles..p._demo(args,args) end local function makeWrapper(funcName) -- Processes external arguments and sends them to the other functions. return function (frame) -- If called via #invoke, use the args passed into the invoking -- template, or the args passed to #invoke if any exist. Otherwise -- assume args are being passed directly in from the debug console -- or from another Lua module. -- Also: trim whitespace and remove blank arguments local origArgs = getArgs(frame) -- create two tables to pass to func: an array of portal names, and a table of named arguments. local portals, args = processPortalArgs(origArgs) local results = '' if funcName == '_portal' or funcName == '_displayAll' then results = frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } end return results .. p[funcName](portals, args) end end for _, funcName in ipairs{'portal', 'imageDupes', 'displayAll'} do p[funcName] = makeWrapper('_' .. funcName) end return p 2c16356f0d15e035f16db3c400c43813fbecaced Template:Spaces 10 840 1863 1862 2023-10-01T10:39:08Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Spaces]] wikitext text/x-wiki <span class="nowrap">{{#iferror:{{#expr:{{{1|1}}}}} |{{#switch:{{{1}}} |fig=&#8199; |en=&ensp; |em=&emsp; |thin=&thinsp; |hair=&#8202; |&nbsp; }} |{{#invoke:String|rep|{{#switch:{{{2}}} |fig=&#8199; |en=&ensp; |em=&emsp; |thin=&thinsp; |hair=&#8202; |&nbsp; }}|{{{1|1}}}}} }}</span><noinclude> {{documentation}} </noinclude> a9ed762825e7579f15dcb9b171b0c1c3bf524b3f Module:Portal/images/b 828 841 1865 1864 2023-10-01T10:39:09Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Portal/images/b]] Scribunto text/plain --[==[ This is the "B" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "B". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be -- omitted. ]==] return { ["babism"] = "Haykal2.gif|link=|alt=", ["baden-württemberg"] = "Flag of Baden-Württemberg.svg|border|link=|alt=flag", ["badminton"] = "Badminton racquet.svg|link=|alt=", ["bahrain"] = "Flag of Bahrain.svg|border|link=|alt=flag", ["bailiwick of guernsey"] = "Flag of Guernsey.svg|border|link=|alt=flag", ["bailiwick of jersey"] = "Flag of Jersey.svg|border|link=|alt=flag", ["balochistan, pakistan"] = "Flag of Balochistan.svg|border|link=|alt=", ["baltic states"] = "Subdivisions of baltic states.svg|link=|alt=map", ["baltimore"] = "Seal of Baltimore, Maryland.png|link=|alt=seal", ["bangalore"] = "Bangalore Palace.jpg|alt=icon", ["bangladesh"] = "Flag of Bangladesh.svg|border|link=|alt=flag", ["banks"] = "All-currency-symbol.svg|link=|alt=icon", ["barbados"] = "Flag of Barbados.svg|border|link=|alt=flag", ["baseball"] = "Baseball.svg|link=|alt=icon", ["basketball"] = "Basketball Clipart.svg|link=|alt=icon", ["battleships"] = "BS Bismarck.png|alt=icon", ["bavaria"] = "Flag of Bavaria (lozengy).svg|border|link=|alt=flag", ["bbc"] = "BBC Logo 2021.svg|link=|alt=", ["beer"] = "Projet bière logo v2.png|alt=icon", ["belarus"] = "Flag of Belarus.svg|border|link=|alt=flag", ["belgium"] = "Flag of Belgium.svg|border|link=|alt=flag", ["belize"] = "Flag of Belize.svg|border|link=|alt=flag", ["benin"] = "Flag of Benin.svg|border|link=|alt=flag", ["berkshire"] = "Flag of Berkshire.svg|link=|alt=flag", ["berlin"] = "Flag of Berlin (state).svg|border|link=|alt=flag", ["bermuda"] = "Flag of Bermuda.svg|border|link=|alt=flag", ["bhutan"] = "Flag of Bhutan.svg|border|link=|alt=flag", ["bible"] = "Bible.malmesbury.arp.jpg|link=|alt=", ["bihar"] = "Seal of Bihar.jpg|link=|alt=", ["biography"] = "P vip.svg|link=|alt=", ["biology"] = "Issoria lathonia.jpg|alt=icon", ["birds"] = "Eagle 01.svg|link=|alt=", ["blues"] = "Guit Blues.JPG|link=|alt=", ["bohemia"] = "Flag of Bohemia.svg|border|link=|alt=flag", ["bolivia"] = "Flag of Bolivia.svg|border|link=|alt=flag", ["bollywood"] = "Indiafilm.svg|alt=icon", ["bonaire"] = "Flag of Bonaire.svg|border|link=|alt=flag", ["books"] = "Nuvola apps bookcase.svg|alt=icon", ["bosnia and herzegovina"] = "Flag of Bosnia and Herzegovina.svg|border|link=|alt=flag", ["botany"] = "Rosa villosa.jpg|alt=icon", ["botswana"] = "Flag of Botswana.svg|border|link=|alt=flag", ["brandenburg"] = "Flag of Brandenburg.svg|border|link=|alt=flag", ["brazil"] = "Flag of Brazil.svg|border|link=|alt=flag", ["brigham young university"] = "Brigham Young University medallion.svg|link=|alt=seal", ["bristol"] = "Bristol arms cropped.jpg|alt=icon", ["british columbia"] = "Flag of British Columbia.svg|border|link=|alt=flag", ["british empire"] = "British Empire 1897.jpg|link=|alt=", ["british indian ocean territory"] = "Flag of the British Indian Ocean Territory.svg|border|link=|alt=flag", ["british virgin islands"] = "Flag of the British Virgin Islands.svg|border|link=|alt=flag", ["brunei"] = "Flag of Brunei.svg|border|link=|alt=flag", ["buddhism"] = "Dharma Wheel.svg|alt=icon", ["bulgaria"] = "Flag of Bulgaria.svg|border|link=|alt=flag", ["burkina faso"] = "Flag of Burkina Faso.svg|border|link=|alt=flag", ["burundi"] = "Flag of Burundi.svg|border|link=|alt=flag", ["buses"] = "BSicon BUS.svg|link=|alt=", ["business and economics"] = "Emblem-money.svg|alt=icon", ["byzantine empire"] = "Flag of Palaeologus Dynasty.svg|border|link=|alt=flag" } 478b01f3f226cf941e2988888a0337f360ba173f Module:Portal/images/s 828 842 1867 1866 2023-10-01T10:39:10Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Portal/images/s]] Scribunto text/plain --[==[ This is the "S" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "S". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be omitted. ]==] return { ["saba"] = "Flag of Saba.svg|border|link=|alt=flag", ["saint barthelemy"] = "Flag of Saint Barthelemy (local).svg|border|link=|alt=flag", ["saint helena, ascension and tristan da cunha"] = "Flag of Saint Helena.svg|border|link=|alt=flag", ["saint kitts and nevis"] = "Flag of Saint Kitts and Nevis.svg|border|link=|alt=flag", ["saint lucia"] = "Flag of Saint Lucia.svg|border|link=|alt=flag", ["saint martin"] = "Flag of Saint Martin.png|border|link=|alt=flag", ["saint pierre and miquelon"] = "Flag of Saint-Pierre and Miquelon.svg|border|link=|alt=flag", ["saint vincent and the grenadines"] = "Flag of Saint Vincent and the Grenadines.svg|border|link=|alt=flag", ["saints"] = "Gloriole blur.svg|link=|alt=", ["samoa"] = "Flag of Samoa.svg|border|link=|alt=flag", ["san antonio"] = "Coat of arms of San Antonio.svg|link=|alt=arms", ["san diego"] = "San Diego,California,USA. - panoramio (139).jpg|link=|alt=photo", ["san francisco bay area"] = "SF From Marin Highlands3.jpg|border|link=|alt=", ["san marino"] = "Flag of San Marino.svg|border|link=|alt=flag", ["são tomé and príncipe"] = "Flag of São Tomé and Príncipe.svg|border|link=|alt=flag", ["saskatchewan"] = "Flag of Saskatchewan.svg|border|link=|alt=flag", ["saudi arabia"] = "Flag of Saudi Arabia.svg|border|link=|alt=flag", ["saxony"] = "Flag of Saxony.svg|border|link=|alt=flag", ["schleswig-holstein"] = "Flag of Schleswig-Holstein (state).svg|border|link=|alt=flag", ["schools"] = "School.svg|link=|alt=icon", ["science"] = "Nuvola apps kalzium.svg|alt=icon", ["science and academia"] = "Rachel Carson w (cropped).jpg|link=|alt=photo", ["science fiction"] = "Sf-userbox.png|alt=icon", ["scotland"] = "Flag of Scotland.svg|border|link=|alt=flag", ["scottish islands"] = "ScottishIsles.jpg|link=|alt=map", ["scouting"] = "WikiProject Scouting fleur-de-lis dark.svg|alt=icon", ["seamounts"] = "Seamount.svg|link=|alt=", ["seattle"] = "SpaceNeedleTopClose.jpg|alt=icon", ["senegal"] = "Flag of Senegal.svg|border|link=|alt=flag", ["september 11 attacks"] = "Y24-Wtc-september-5.jpg|alt=icon", ["serbia"] = "Flag of Serbia.svg|border|link=|alt=flag", ["seton hall university"] = "Shu logo.png|link=|alt=logo", ["severe weather"] = "Marquette, Kansas EF4 tornado on April 14, 2012.png|link=|alt=icon", ["sexuality"] = "Bisexuality symbol (bold, color).svg|alt=icon", ["sex work"] = "Umbrella-159361.svg|link=|alt=", ["seychelles"] = "Flag of Seychelles.svg|border|link=|alt=flag", ["sf"] = "Dragon-149393.svg|alt=icon", ["sharjah"] = "Flag of Sharjah.svg|border|link=|alt=flag", ["sharks"] = "Greyreefsharksmall2.jpg|alt=icon", ["shia islam"] = "Ghadir logo.png|alt=icon", ["siberia"] = "Kuznetsk Alatau 3.jpg|border|link=|alt=", ["sierra leone"] = "Flag of Sierra Leone.svg|border|link=|alt=flag", ["sikhism"] = "Khanda emblem.svg|link=|alt=", ["sikkim"] = "Seal of Sikkim color.png|link=|alt=seal", ["sindh"] = "Flag of Sindh.svg|border|link=|alt=flag", ["singapore"] = "Flag of Singapore.svg|border|link=|alt=flag", ["sint eustatius"] = "Flag of Sint Eustatius.svg|border|link=|alt=flag", ["sint maarten"] = "Flag of Sint Maarten.svg|border|link=|alt=flag", ["slovakia"] = "Flag of Slovakia.svg|border|link=|alt=flag", ["slovenia"] = "Flag of Slovenia.svg|border|link=|alt=flag", ["snakes"] = "Snake icon.svg|link=|alt=", ["snooker"] = "Snooker balls triangled.png|alt=icon", ["social movements"] = "Peace sign.svg|link=|alt=", ["social science"] = "P social sciences-lightblue.png|link=|alt=icon", ["social sciences"] = "DrustveneNauke.png|alt=icon", ["socialism"] = "Red flag II.svg|alt=icon", ["society"] = "Social sciences.svg|alt=icon", ["software"] = "Crystal Clear device cdrom unmount.png|alt=icon", ["solar system"] = "Solar system.jpg|link=|alt=", ["solomon islands"] = "Flag of Solomon Islands.svg|border|link=|alt=flag", ["somalia"] = "Flag of Somalia.svg|border|link=|alt=flag", ["somaliland"] = "Flag of Somaliland.svg|border|link=|alt=flag", ["somerset"] = "Somerset shield.png|alt=icon", ["south africa"] = "Flag of South Africa.svg|border|link=|alt=flag", ["south america"] = "South America (orthographic projection).svg|link=|alt=map", ["south asia"] = "India 78.40398E 20.74980N.jpg|link=|alt=", ["south australia"] = "Flag of South Australia.svg|border|link=|alt=flag", ["south carolina"] = "Flag of South Carolina.svg|border|link=|alt=flag", ["south dakota"] = "Flag of South Dakota.svg|border|link=|alt=flag", ["south east england"] = "EnglandSouthEast.png|alt=icon", ["south georgia and the south sandwich islands"] = "Flag of South Georgia and the South Sandwich Islands.svg|border|link=|alt=flag", ["south korea"] = "Flag of South Korea.svg|border|link=|alt=flag", ["south sudan"] = "Flag of South Sudan.svg|border|link=|alt=flag", ["southeast asia"] = "Location Southeast Asia.svg|link=|alt=", ["southern california"] = "USA California Southern location map.svg|link=|alt=map", ["soviet union"] = "Flag of the Soviet Union.svg|border|link=|alt=flag", ["space"] = "Earth-moon.jpg|link=|alt=", ["spaceflight"] = "RocketSunIcon.svg|link=|alt=", ["spain"] = "Flag of Spain.svg|border|link=|alt=flag", ["speculative fiction"] = "Dragon-149393.svg|alt=icon", ["speculative fiction/fantasy"] = "Masked man.svg|link=|alt=icon", ["speculative fiction/horror"] = "Vampire Smiley.png|alt=icon", ["sports"] = "Sports icon.png|link=|alt=", ["sports and games"] = "Sports and games.png|alt=icon", ["sport of athletics"] = "Roman bronze copy of Myron’s Discobolos, 2nd century CE (Glyptothek Munich).jpg|link=|alt=", ["sri lanka"] = "Flag of Sri Lanka.svg|border|link=|alt=flag", ["staffordshire"] = "Staffordshire Flag.svg|border|link=|alt=flag", ["stamford"] = "Stamford town crest.png|link=|alt=crest", ["stanford university"] = "Stanford logo.png|link=|alt=logo", ["star"] = "He1523a.jpg|alt=icon", ["stars"] = "He1523a.jpg|alt=icon", ["state of georgia"] = "Flag of Georgia (U.S. state).svg|border|link=|alt=flag", ["statistics"] = "Fisher iris versicolor sepalwidth.svg|alt=icon", ["sudan"] = "Flag of Sudan.svg|border|link=|alt=flag", ["superfunds"] = "Superfund sites.svg|link=|alt=map", ["supermarket"] = "ShoppingCart.svg|link=|alt=", ["supermarkets"] = "ShoppingCart.svg|link=|alt=", ["suriname"] = "Flag of Suriname.svg|border|link=|alt=flag", ["surrey"] = "EnglandSurrey.png|alt=icon", ["sweden"] = "Flag of Sweden.svg|border|link=|alt=flag", ["switzerland"] = "Flag of Switzerland.svg|border|link=|alt=flag", ["sydney"] = "Sydney COA.gif|alt=icon", ["syria"] = "Flag of Syria.svg|border|link=|alt=flag", ["systems engineering initiative"] = "Systems Engineering Process II.gif|link=|alt=diagram", ["systems science"] = "Complex-adaptive-system.jpg|link=|alt=diagram" } 6352d6d2cc43aecf731427b7234d275ddf514e29 Module:Portal/images/p 828 843 1869 1868 2023-10-01T10:39:11Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Portal/images/p]] Scribunto text/plain --[==[ This is the "P" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "P". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be omitted. ]==] return { ["pacific northwest"] = "Abies lasiocarpa 0775.JPG|link=|alt=", ["painting"] = "600-artist-palette.svg|link=|alt=artist's palette", ["pakistan"] = "Flag of Pakistan.svg|border|link=|alt=flag", ["palaeontology"] = "Allosaurus Jardin des Plantes.png|link=|alt=icon", ["palau"] = "Flag of Palau.svg|border|link=|alt=flag", ["paleontology"] = "Allosaurus Jardin des Plantes.png|link=|alt=icon", ["paleozoic"] = "Tiktaalik BW flopped.jpg|alt=icon", ["palestine"] = "Flag of Palestine.svg|border|link=|alt=flag", ["palestinian territories"] = "Flag of Palestine.svg|border|link=|alt=flag", ["pan-africanism"] = "Flag of the UNIA.svg", ["panama"] = "Flag of Panama.svg|border|link=|alt=flag", ["pandemics"] = "Protokol Kesehatan.jpg|link=|alt=", ["papua new guinea"] = "Flag of Papua New Guinea.svg|border|link=|alt=flag", ["paraguay"] = "Flag of Paraguay.svg|border|link=|alt=flag", ["patna"] = "Golghar, Patna, 1888.jpg|link=|alt=", ["peer review"] = "PR icon.png|alt=icon", ["pennsylvania"] = "Flag of Pennsylvania.svg|border|link=|alt=flag", ["people's republic of china"] = "Flag of the People's Republic of China.svg|border|link=|alt=flag", ["peru"] = "Flag of Peru.svg|border|link=|alt=flag", ["philadelphia"] = "Libertybell alone small.jpg|link=|alt=", ["philately"] = "Stamp UK Penny Red pl148.jpg|link=|alt=", ["philippines"] = "Flag of the Philippines.svg|border|link=|alt=flag", ["philosophy"] = "Socrates.png|link=|alt=", ["phoenicia"] = "Phoenician aleph.svg|alt=Black on white image of the Phoenician letter Aleph", ["photography"] = "Camera-871052.svg|link=|alt=", ["physics"] = "Stylised atom with three Bohr model orbits and stylised nucleus.svg|alt=icon", ["piracy"] = "Skull and crossbones.svg|link=|alt=", ["pitcairn islands"] = "Flag of the Pitcairn Islands.svg|border|link=|alt=flag", ["pittsburgh"] = "Coat of arms of Pittsburgh, Pennsylvania.svg|link=|alt=", ["plants"] = "Leaf 1 web.jpg|alt=icon", ["poetry"] = "Quill and ink.svg|alt=icon", ["pokémon"] = "Wikiball.svg|alt=icon", ["poland"] = "Flag of Poland.svg|border|link=|alt=flag", ["political science"] = "Plato-raphael.jpg|link=|alt=", ["politics"] = "A coloured voting box.svg|border|alt=icon", ["polyhedra"] = "Small snub icosicosidodecahedron.png|link=|alt=icon", ["polynesia"] = "Polynesia.png|link=|alt=map", ["pollution"] = "Benxi Steel Industries.jpg|link=|alt=photo", ["pop music"] = "Audio-input-microphone.png|alt=icon", ["portal"] = "PorcheCentralNordCathedraleChartre041130-.jpg|alt=icon", ["portugal"] = "Flag of Portugal.svg|border|link=|alt=flag", ["prehistoric mammals"] = "Smilodon Knight.jpg|link=|alt=", ["primates"] = "Man of the woods.JPG|alt=icon", ["prince edward island"] = "Flag of Prince Edward Island.svg|border|link=|alt=flag", ["probability"] = "Nuvola apps atlantik.png|link=|alt=icon", ["prostitution"] = "Bombilla roja - red Edison lamp.svg|link=alt=icon", ["protected areas of india"] = "Nagzira Tiger By Vijay Phulwadhawa.jpg|link=|alt=photo", ["prussia"] = "Flag of Prussia (1892-1918).svg|link=|alt=photo", ["psychiatry"] = "American Lady Against The Sky.jpg|alt=icon", ["psychology"] = "Psi2.svg|link=|alt=", ["puducherry"] = "Seal of Puducherry (cropped).svg|link=|alt=", ["puerto rico"] = "Flag of Puerto Rico.svg|border|link=|alt=flag", ["punjab"] = "Golden Temple (Harmandir Sahib) in Amritsar, India.jpg|border|link=|alt=image", ["punjab, india"] = "Seal of Punjab.gif|link=|alt=icon", ["punjab, pakistan"] = "Flag of Punjab.svg|border|link=|alt=flag", } f0317bea96bbb5170b149cd1fd81695e9a105b56 Template:Portal-inline 10 844 1871 1870 2023-10-01T10:39:12Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Portal-inline]] wikitext text/x-wiki <includeonly>{{#invoke:portal-inline|main}}</includeonly><noinclude> {{documentation}} </noinclude> 2d1d12ec317da6ccc5d28b1be3105d68b53ff0be Template:Sidebar with collapsible lists 10 845 1873 1872 2023-10-01T10:39:12Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Sidebar_with_collapsible_lists]] wikitext text/x-wiki {{#invoke: Sidebar | collapsible }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 4bd1f39f9101790ed6e315752e377a8ac7a95869 Module:Portal-inline 828 846 1875 1874 2023-10-01T10:39:14Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Portal-inline]] Scribunto text/plain -- determine whether we're being called from a sandbox local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) local sandbox = isSandbox and '/sandbox' or '' local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local portalModule = require('Module:Portal'..sandbox) local getImageName = portalModule._image local checkPortals = portalModule._checkPortals local processPortalArgs = portalModule._processPortalArgs local p = {} -- Function to format error message and tracking category -- Arguments: -- errMsg: string, or nil/false if no error -- trackingCat: string for tracking category (or empty string) local function formatError(errMsg, trackingCat) local result = trackingCat or '' if errMsg then local errTag = mw.html.create('span') errTag:addClass("error") errTag:css("font-size",'100%') errTag:wikitext("Error: "..errMsg) result = tostring(errTag)..result end return result end local function image(portal, args) local size = args.size == "tiny" and "16x16px" or "32x28px" return string.format('[[File:%s|class=noviewer|%s]]',getImageName(portal,true), size) end local function link(portal, args) local displayName = "" if not (args.text == "" or args.text == nil) then displayName = args.text elseif args.short then displayName = portal else displayName = portal .. "&#32;portal" end return string.format('[[Portal:%s|%s]]',portal,displayName) end function p._main(portals, args) mw.logObject(args) -- Normalize all arguments if args.redlinks == 'include' then args.redlinks = true end for key, default in pairs({tracking=true,redlinks=false,short=false}) do if args[key] == nil then args[key] = default end args[key] = yesno(args[key], default) end local trackingCat = '' local errMsg = nil -- Check for existing categories, drop if not. -- Possible generate tracking category & error message if needed args.minPortals = args.minPortals or 1 args.maxPortals = args.maxPortals or 1 portals, trackingCat, errMsg = checkPortals(portals,args) -- use more specific tracking cat for inline portal trackingCat = mw.ustring.gsub(trackingCat,"Portal templates","Portal-inline template") -- either too many/few portals, or no portals left after filtering, then return if errMsg or #portals == 0 then return formatError(errMsg, trackingCat) end return image(portals[1],args)..'&nbsp;'..link(portals[1],args)..(trackingCat or '') end function p.main(frame) local origArgs = getArgs(frame) local portals, args = processPortalArgs(origArgs) return p._main(portals, args) end return p 7e394801df5882169db7a3b64af605c5acded536 Module:Portal/images/aliases 828 847 1877 1876 2023-10-01T10:39:17Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Portal/images/aliases]] Scribunto text/plain --[==[ This is the "aliases" list of portal image names. It contains a list of portal image aliases for use with [[Module:Portal]]. -- The aliases can be used to point to an existing portal image entry. For portals who do not yet have a portal image entry, please -- use the appropriate page from the following list instead: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- When adding entries, please use alphabetical order. The format of the alias table entries is as follows: -- ["portal name"] = {"alias 1", "alias 2", "alias 3"}, -- Both the portal name and the alias names should be in lower case, and the "Portal:" namespace prefix -- should be omitted. For example, if you wanted "UK" to be an alias for "Portal:United Kingdom", then the -- alias name would be "uk" and the portal name would be "united kingdom". ]==] return { ["1990s"] = {"1990's"}, ["2000s"] = {"2000's"}, ["ac/dc"] = {"ac dc"}, ["academy award"] = {"academy awards"}, ["africa"] = {"african"}, ["african american"] = {"african-american", "african-americans", "african americans"}, ["african union"] = {"au"}, ["agriculture"] = {"agriculture and agronomy", "farming"}, ["american civil war"] = {"acw"}, ["american revolutionary war"] = {"american revolution"}, ["amphibians"] = {"amphibian"}, ["aviation"] = {"airplanes"}, ["åland"] = {"åland islands", "aland islands", "aland", "ax", "ala"}, ["albania"] = {"albanian", "al", "alb"}, ["alpine rhine"] = {"alpine rhine valley"}, ["american football"] = {"college football", "arena football league"}, ["ancient rome"] = {"roman empire"}, ["android (operating system)"] = {"android", "android os"}, ["animals"] = {"animal", "zoology"}, ["anime and manga"] = {"anime", "manga"}, ["apple inc."] = {"apple", "apple inc"}, ["arabic language"] = {"arabic"}, ["archaeology"] = {"archeology"}, ["argentina"] = {"argentine"}, ["arizona"] = {"phoenix, arizona"}, ["asian americans"] = {"asian american"}, ["association football"] = {"soccer", "football (soccer)"}, ["assyrians"] = {"assyria"}, ["atlas"] = {"cartography"}, ["atmospheric science"] = {"atmosphere","atmospheric sciences"}, ["australia"] = {"australian", "aus"}, ["australian capital territory"] = {"canberra"}, ["banks"] = {"bank", "banking"}, ["baseball"] = {"college baseball", "little league"}, ["basketball"] = {"national basketball league of canada", "wnba"}, ["biography"] = {"people", "biographies"}, ["birds"] = {"bird"}, ["björk"] = {"bjork"}, ["books"] = {"book"}, ["brunei"] = {"brunei darussalam", "bn", "brn"}, ["business and economics"] = {"advertising", "business", "economics", "economy", "marketing"}, ["buses"] = {"bus"}, ["california roads"] = {"roads in california"}, ["california state polytechnic university, pomona"] = {"cal poly pomona"}, ["canada"] = {"canadian", "ca", "can"}, ["canadian armed forces"] = {"canadian forces", "military history of canada"}, ["canary islands"] = {"spanish africa"}, ["caribbean"] = {"caribbean sea", "the caribbean", "west indies"}, ["cars"] = {"car", "automobile"}, ["cartoon"] = {"cartoons"}, ["catalan-speaking countries"] = {"catalan", "catalonia"}, ["catholic church"] = {"catholic", "catholicism"}, ["cats"] = {"cat"}, ["celtic studies"] = {"celts"}, ["cetaceans"] = {"cetacea"}, ["chemistry"] = {"chemical"}, ["children's literature"] = {"children's and young adult literature", "children and young adult literature"}, ["china"] = {"chinese", "cn", "chn"}, ["christiantiy"] = {"christ", "christian"}, ["christianity in india"] = {"indian christianity"}, ["classical civilisation"] = {"classical civilization", "classics"}, ["cleveland"] = {"cleveland, ohio"}, ["coconuts"] = {"coconut"}, ["color"] = {"colour"}, ["comedy"] = {"humour", "humor"}, ["commonwealth realms"] = {"commonwealth"}, ["communism"] = {"marxism"}, ["compact disc"] = {"cd", "compact disk"}, ["companies"] = {"company"}, ["computer-generated imagery"] = {"computer generated imagery"}, ["computer programming"] = {"programming"}, ["countries"] = {"country"}, ["county kilkenny"] = {"kilkenny"}, ["criminal justice"] = {"crime"}, ["current events"] = {"events", "news"}, ["czech republic"] = {"czechia", "czech", "the czech republic"}, ["dallas – fort worth metroplex"] = {"dallas", "dallas-fort worth", "dallas - fort worth metroplex"}, ["democratic republic of the congo"] = {"zaire", "zaïre", "cod", "drc", "the democratic republic of the congo"}, ["denmark"] = {"kingdom of denmark", "danish", "dk", "dnk"}, ["disasters"] = {"disaster"}, ["dravidian languages"] = {"dravidian", "dravidia", "dravidian peoples", "dravidian civilization"}, ["drink"] = {"drinks"}, ["dominican republic"] = {"the dominican republic"}, ["durham, north carolina"] = {"durham nc"}, ["dungeons & dragons"] = {"d&d"}, ["earth sciences"] = {"earth science"}, ["east timor"] = {"timor leste", "tl"}, ["electromagnetism"] = {"em"}, ["energy"] = {"electricity"}, ["english football"] = {"football in england"}, ["english language"] = {"english"}, ["erotica and pornography"] = {"porn", "pornography"}, ["european military history"] = {"military history of europe"}, ["european union"] = {"eu"}, ["evolutionary biology"] = {"evolution"}, ["extinct and endangered species"] = {"extinction", "endangered species"}, ["falkland islands"] = {"falkland", "malvinas", "fk", "flk"}, ["faroe islands"] = {"the faroe islands"}, ["federated states of micronesia"] = {"fm", "fsm"}, ["film"] = {"cinema", "films", "movie"}, ["fish"] = {"fishes"}, ["food"] = {"eating", "nutrition"}, ["football"] = {"association football", "soccer", "soccer ball"}, ["formula one"] = {"f1", "formula 1"}, ["france"] = {"overseas france"}, ["free and open-source software"] = {"floss", "foss", "free and open source software", "free software", "freeware", "open source", "open source software", "open-source software", "oss"}, ["freedom of speech"] = {"censorship", "free speech"}, ["french and francophone literature"] = {"french literature"}, ["french politics"] = {"politics of france"}, ["fungi"] = {"mycology"}, ["gardening"] = {"garden", "gardens", "gardening and horticulture"}, ["gemology and jewelry"] = {"gemmology and jewellery", "gemmology and jewelry", "gemology and jewellery"}, ["georgia (country)"] = {"georgia", "republic of georgia", "ge", "geo"}, ["georgia (u.s. state)"] = {"georgia (state)"}, ["globalization"] = {"globalisation"}, ["greater manchester"] = {"manchester"}, ["gullah"] = {"gullah people"}, ["hawaii"] = {"hawaiian kingdom", "hawai'i", "hawaiʻi", "us-hi"}, ["hazardous materials"] = {"dangerous goods"}, ["health and fitness"] = {"health"}, ["himalayas"] = {"himalaya region"}, ["hindustani"] = {"hindustani language", "hindustani and allied languages"}, ["hip hop"] = {"hip-hop"}, ["hispanic and latino americans"] = {"hispanic and latino american", "latino and hispanic americans", "latino and hispanic american"}, ["history"] = {"victorian era"}, ["horror fiction"] = {"horror"}, ["horticulture and gardening"] = {"horticulture"}, ["housing"] = {"houses"}, ["hunger relief"] = {"hunger"}, ["ice hockey"] = {"hockey"}, ["india"] = {"indian", "in", "ind", "republic of india"}, ["indian women"] = {"women of india", "indian women and gender issues"}, ["indiana"] = {"hoosier", "us-in"}, ["indigenous peoples of north america"] = {"indigenous people of north america"}, ["information technology"] = {"computing", "computer science", "it"}, ["insects"] = {"insect"}, ["internet"] = {"web"}, ["ireland"] = {"irish"}, ["islam"] = {"muslim history"}, ["islamic state of iraq and the levant"] = {"daesh", "isil", "isis"}, ["islands"] = {"island"}, ["italy"] = {"italian", "ita", "papal states"}, ["jacksonville, florida"] = {"jacksonville"}, ["judaism"] = {"jewish"}, ["kazi nazrul islam"] = {"nazrul"}, ["kurdistan"] = {"iraqi kurdistan"}, ["latter day saint movement"] = {"latter-day saints", "lds"}, ["lemony snicket"] = {"a series of unfortunate events"}, ["lists"] = {"list"}, ["lgbt"] = {"lgbt studies", "lgbtq", "lgbtqa"}, ["library and information science"] = {"information science"}, ["linguistics"] = {"linguistic"}, ["madonna (entertainer)"] = {"madonna"}, ["mammals"] = {"mammal"}, ["marine life"] = {"marine biology"}, ["mathematics"] = {"math", "maths"}, ["medicine"] = {"health care", "public health", "medical"}, ["mediterranean"] = {"mediterranean sea"}, ["metro detroit"] = {"detroit"}, ["mexico"] = {"méxico", "mx", "mex"}, ["middle tennessee state university"] = {"mtsu"}, ["michigan highways"] = {"highways in michigan"}, ["military history of australia"] = {"royal australian air force"}, ["modern history"] = {"2020s"}, ["molecular and cell biology"] = {"molecular and cellular biology"}, ["moldova"] = {"republic of moldova"}, ["mongolia"] = {"mongols"}, ["mountains"] = {"mountain"}, ["music of australia"] = {"australian music"}, ["myanmar"] = {"burma", "burmese", "mm", "mmr"}, ["national register of historic places"] = {"nrhp"}, ["native americans"] = {"american indians"}, ["nazism"] = {"nazi germany"}, ["netherlands"] = {"kingdom of the netherlands", "nl", 'nld', 'caribbean netherlands', 'the netherlands', 'dutch empire', 'the dutch empire', 'dutch republic'}, ["new guinea"] = {"western new guinea"}, ["new south wales"] = {"nsw"}, ["new york"] = {"new york state", "new york (state)", "us-ny"}, ["new york city"] = {"nyc"}, ["new zealand"] = {"nz", "nzl"}, ["north korea"] = {"dprk", "democratic people's republic of korea"}, ["north macedonia"] = {"republic of north macedonia", "mk", "mkd"}, ["north rhine-westphalia"] = {"nrw"}, ["north west england"] = {"liverpool"}, ["novels"] = {"novel"}, ["oceans"] = {"ocean", "world ocean"}, ["odisha"] = {"orissa"}, ["opera"] = {"operas"}, ["organized labour"] = {"labor", "organised labour", "organized labor", "trade unionism"}, ["pakistan"] = {"pakistani", "pk", "pak"}, ["paleontology"] = {"palaeontology", "prehistoric life"}, ["palestine"] = {"gaza strip", "the state of palestine","state of palestine"}, ["paralympic games"] = {"paralympics"}, ["pan-africanism"] = {"pan-african"}, ["pandemics"] = {"pandemic"}, ["people's republic of china"] = {"prc"}, ["pharmacy and pharmacology"] = {"pharmacy"}, ["philippines"] = {"the philippines"}, ["pitcairn islands"] = {"pitcairn, henderson, ducie and oeno islands"}, ["politics"] = {"government"}, ["portugal"] = {"portuguese empire"}, ["prince edward island"] = {"pei", "ca-pe"}, ["protected areas of india"] = {"biodiversity, protected areas & environment of india", "biodiversity of india", "environment of india"}, ["puducherry"] = {"pondicherry", "in-py"}, ["punjab, india"] = {"punjab (india)", "in-pb"}, ["punjab, pakistan"] = {"punjab (pakistan)", "western punjab", "pk-pb"}, ["python programming"] = {"python"}, ["quebec"] = {"québec", "ca-qc"}, ["religion"] = {"religions", "religious", "theology"}, ["republic of ireland"] = {"éire", "ie", "irl", "irish republicanism"}, ["republic of north macedonia"] = {"north macedonia", "mk", "mkd", "the republic of macedonia", "republic of macedonia"}, ["republic of the congo"] = {"the republic of the congo", "republic of congo", "french congo"}, ["roads"] = {"road"}, ["roads of canada"] = {"canada roads"}, ["romani people"] = {"roma", "romani"}, ["saint barthelemy"] = {"saint-barthélemy", "saint barthélemy"}, ["saint helena, ascension and tristan da cunha"] = {"saint helena"}, ["salad dressing"] = {"salad dressings"}, ["san francisco bay area"] = {"bay area", "san francisco"}, ["sandwich"] = {"sandwiches"}, ["schools"] = {"school"}, ["serer people"] = {"serer"}, ["september 11 attacks"] = {"september 11, 2001"}, ["sexuality"] = {"sex"}, ["shia islam"] = {"shia"}, ["spain"] = {"castile"}, ["spaceflight"] = {"space flight"}, ["sri lanka"] = {"sri lankan"}, ["systems science"] = {"system science"}, ["soap operas and telenovelas"] = {"soap operas", "telenovelas"}, ["south africa"] = {"za", "zaf"}, ["south georgia and the south sandwich islands"] = {"south georgia", "south sandwich islands", "gs", "sgs"}, ["soviet union"] = {"ussr", "soviet", "the soviet union"}, ["space"] = {"outer space"}, ["spices"] = {"herbs and spices"}, ["sports in canada"] = {"canadian sports", "canadian sport", "sports of canada", "sport in canada"}, ["sports"] = {"sport"}, ["st. john's, newfoundland and labrador"] = {"st. john's"}, ["state of georgia"] = {"georgia (u.s. state)", "georgia usa", "us-ga"}, ["state of mexico"] = {"mexico (state)", "mx-mex"}, ["state university of new york"] = {"suny"}, ["taiwan"] = {"republic of china", "roc", "tw", "twn"}, ["tamils"] = {"tamil","tamil people"}, ["tanks"] = {"tank"}, ["telecommunication"] = {"telecommunications", "telecoms", "telecomms", "telecomm", "telecom"}, ["telephones"] = {"telephone"}, ["television"] = {"tv"}, ["texas"] = {"republic of texas"}, ["texas a&m university"] = {"texas a&m"}, ["texas tech university"] = {"texas tech"}, ["thailand"] = {"siam"}, ["theatre"] = {"theater"}, ["the bahamas"] = {"bahamas", "bs", "bhs"}, ["the gambia"] = {"gambia", "gm", "gmb"}, ["the legend of zelda"] = {"legend of zelda"}, ["tiruchirappalli"] = {"trichy", "tiruchi"}, ["trains"] = {"rail", "rail transport"}, ["transportation"] = {"transport"}, ["trauma and orthopaedics"] = {"trauma & orthopaedics"}, ["trinidad and tobago"] = {"trinidad"}, ["tropical cyclones"] = {"hurricanes", "tropical cyclone"}, ["turkey"] = {"anatolia"}, ["united arab emirates"] = {"emirates", "ae", "uae", "emirati", "the united arab emirates"}, ["united kingdom"] = {"the united kingdom", "uk", "gb", "gbr", "britain", "british", "british overseas territories"}, ["united nations"] = {"un"}, ["united states"] = {"us", "usa", "u.s.", "united states armed forces", "american", "territories of the united states"}, ["united states arms"] = {"united states armed forces", "united states military", "united states military history", "u.s. armed forces", "u.s. military"}, ["united states congress"] = {"u.s. congress"}, ["united states counties"] = {"u.s. counties"}, ["united states presidents"] = {"u.s. presidents"}, ["united states roads"] = {"u.s. roads"}, ["united states state legislatures"] = {"u.s. state legislatures", "us state legislatures"}, ["united states streets"] = {"u.s. streets"}, ["united states supreme court"] = {"u.s. supreme court cases"}, ["united states territories"] = {"territories of the united states"}, ["university of missouri"] = {"mizzou"}, ["university of notre dame"] = {"notre dame"}, ["university of pittsburgh"] = {"pitt"}, ["vatican city"] = {"vatican"}, ["video games"] = {"vg", "video game"}, ["vietnam"] = {"south vietnam"}, ["war"] = {"military"}, ["washington (state)"] = {"washington", "us-wa"}, ["washington, d.c."] = {"district of columbia", "dc", "washington dc", "us-dc"}, ["western asia"] = {"west asia"}, ["western sahara"] = {"sahrawi arab democratic republic", "eh", "esh", "the sahrawi arab democratic republic"}, ["wind power"] = {"windmills"}, ["world war i"] = {"first world war", "wwi"}, ["world war ii"] = {"second world war", "world war 2", "wwii"}, ["zoos"] = {"zoo"} } fc71e0a63efd359c69c5660deabe9f1ca67e454d Module:Portal/images/e 828 848 1879 1878 2023-10-01T10:39:18Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Portal/images/e]] Scribunto text/plain --[==[ This is the "E" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "E". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be omitted. ]==] return { ["earth"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=", ["earth sciences"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=", ["earthquakes"] = "Good Friday Earthquake at Turnagain Arm.jpg|link=|alt=image", ["east asia"] = "East Asia Cutout Projection.png|border|link=|alt=map", ["east germany"] = "Flag of East Germany.svg|border|link=|alt=flag", ["east sussex"] = "Arms of the East Sussex County Council.svg|link=|alt=", ["east timor"] = "Flag of East Timor.svg|border|link=|alt=flag", ["eastern europe"] = "Eastern Europe (Robinson projection).png|border|link=|alt=map", ["ecology"] = "Earth Day Flag.png|border|link=|alt=icon", ["ecuador"] = "Flag of Ecuador.svg|border|link=|alt=flag", ["ed, edd n eddy"] = "Ed, Edd n Eddy logo.png|link=|alt=", ["edinburgh"] = "Flag of Edinburgh.svg|alt=flag", ["education"] = "Diploma icon.png|alt=icon", ["education in india"] = "Nalanda University India ruins.jpg|link=|alt=photo", ["egypt"] = "Flag of Egypt.svg|border|link=|alt=flag", ["eifel"] = "Geobox Mountain Range.svg|link=|alt=icon", ["el salvador"] = "Flag of El Salvador.svg|border|link=|alt=flag", ["electoral districts in canada"] = "Canpoligeoicon.png|link=|alt=", ["electronics"] = "Nuvola apps ksim.png|alt=icon", ["energy"] = "Crystal energy.svg|alt=icon", ["engineering"] = "Nuvola apps kcmsystem.svg|alt=icon", ["england"] = "Flag of England.svg|border|link=|alt=flag", ["english football"] = "Soccerball England.svg|link=|alt=", ["english language"] = "Shakespeare2.jpg|link=|alt=painting", ["english law"] = "Scale of justice 2 new.jpeg|alt=icon", ["entomology"] = "Orapia rayneri.svg|link=|alt=image", ["environment"] = "Aegopodium podagraria1 ies.jpg|alt=icon", ["equatorial guinea"] = "Flag of Equatorial Guinea.svg|border|link=|alt=flag", ["eritrea"] = "Flag of Eritrea.svg|border|link=|alt=flag", ["erotica and pornography"] = "Pornproject logo.svg|alt=icon", ["estonia"] = "Flag of Estonia.svg|border|link=|alt=flag", ["eswatini"] = "Flag of Eswatini.svg|border|link=|alt=flag", ["ethiopia"] = "Flag of Ethiopia.svg|border|link=|alt=flag", ["eurasia"] = "Eurasia (orthographic projection).svg|link=|alt=map", ["europe"] = "Europe (orthographic projection).svg|link=|alt=map", ["european military history"] = "Cartography of Europe (blue).svg|link=|alt=", ["european union"] = "Flag of Europe.svg|border|link=|alt=flag", ["eurovision song contest"] = "Wiki Eurovision Heart (Infobox).svg|border|link=|alt=icon", ["evangelical christianity"] = "ChristianitySymbolWhite.PNG|link=|alt=", ["evangelion"] = "Tree of life kircher plain.png|link=|alt=", ["evolutionary biology"] = "Tree of life.svg|alt=icon", ["extinct and endangered species"] = "ExtinctDodoBird.jpeg|link=|alt=", ["extraterrestrial"] = "Galaxy blue.jpg|link=|alt=photo", } 94070388d2b90fdc5d9bac8bcf57cd60115a825f Template:Pad 10 849 1881 1880 2023-10-01T10:39:18Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Pad]] wikitext text/x-wiki <includeonly><span style="padding-left:{{{1|1.0em}}};{{{css|}}}">&nbsp;</span></includeonly><noinclude>{{Documentation}}</noinclude> bdda233a3029c939fb85aee8b2e129f795d1a4e3 Template:Blue 10 850 1883 1882 2023-10-01T10:39:20Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Blue]] wikitext text/x-wiki <span style="color:blue">{{{1}}}</span><noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}}</noinclude> 89f3353953a76d63c4ba5cd23af400b64ef178f4 Template:Caution 10 851 1885 1884 2023-10-01T10:39:21Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Caution]] wikitext text/x-wiki {{Mbox | name = Caution | demospace = {{{demospace|}}} | style = {{{style|}}} | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | image = {{#if:{{{image|}}} |[[File:{{{image}}}|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]]}} | small = {{{small|}}} | smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|30px|Caution|link={{{imagelink|}}}]]}} | imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }} | textstyle = {{{textstyle|{{{align|text-align: {{#if:{{{center|}}}|center|left}};}}}}}} | text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="text-align:{{#if:{{{center|}}}|center|left}};">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!-- -->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}} }}<noinclude>{{Documentation}}</noinclude> 0bd33bad5503b4d0395069f422d3a4af8f5253b9 Template:Pp-template 10 852 1887 1886 2023-10-01T10:39:22Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Pp-template]] wikitext text/x-wiki <includeonly>{{#invoke:Protection banner|main}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 31be6fc5b968e0deb5100a35b856393cdeb35b90 Template:Braces 10 853 1889 1888 2023-10-01T10:39:22Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Braces]] wikitext text/x-wiki {{#if:{{{code|{{{tt|}}}}}}|<code>}}<!-- -->{{((}}{{{1|{{thin space}}}}}<!-- -->{{#if:{{{2|}}} |{{thin space}}{{!}}{{thin space}}{{{2}}}}}<!-- -->{{#if:{{{3|}}} |{{thin space}}{{!}}{{thin space}}{{{3}}}}}<!-- -->{{#if:{{{4|}}} |{{thin space}}{{!}}{{thin space}}{{{4}}}}}<!-- -->{{#if:{{{5|}}} |{{thin space}}{{!}}{{thin space}}{{{5}}}}}<!-- -->{{#if:{{{6|}}} |{{thin space}}{{!}}{{thin space}}{{{6}}}}}<!-- -->{{#if:{{{7|}}} |{{thin space}}{{!}}{{thin space}}{{{7}}}}}<!-- -->{{#if:{{{8|}}} |{{thin space}}{{!}}{{thin space}}{{{8}}}}}<!-- -->{{#if:{{{9|}}} |{{thin space}}{{!}}{{thin space}}{{{9}}}}}<!-- -->{{))}}<!-- -->{{#if:{{{code|{{{tt|}}}}}}|</code>}}<noinclude>{{Documentation}}</noinclude> 74380d03f02b9bc8e318779cf6ef320eec5c3e56 Template:Collapsible lists option 10 854 1891 1890 2023-10-01T10:39:23Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Collapsible_lists_option]] wikitext text/x-wiki <div style="padding-right:3.6em<!--i.e. around three times Wikipedia's standard indent width, to keep the following away from e.g. template/s on righthand side of page-->;"> This template includes collapsible lists. <!------------ (to show all lists) --------------> : {{Unbulleted list |style=padding-bottom:0.3em; |list_style=line-height:1.5em; | 1 = {{blue|•}} To set it to display all lists when it appears (i.e. all lists expanded), use: | 2 = <span class="nowrap">{{pad|1.2em}}<code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}all}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}all}}</code></span>{{spaces|2}}(i.e. omitting "<code>expanded{{=}}</code>"). }} <!------------ (to show one list) ---------------> : {{Unbulleted list |style=padding-bottom:0.3em; |list_style=line-height:1.5em; | 1 = {{blue|•}} To set it to display one particular list while keeping the remainder collapsed (i.e. hidden apart from their headings), use: | 2 = <span class="nowrap">{{pad|1.2em}}<code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}''listname''}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}''listname''}}</code></span> | 3 = …where ''listname'' is one of the following (do not include any quotemarks): |item4_style=;padding:0.2em 0 0.3em 1.4em; | 4 = <kbd style="border: none; background: transparent;">{{{listnames<includeonly>|{{color|red|''Required parameter "listnames" missing!''}}</includeonly>}}} </kbd> | 5 = {{#if:{{{example<includeonly>|</includeonly>}}} <!--------(optional example)---------> | <noinclude>{{small|[''optional:''{{thinsp}}]}}<br /></noinclude><!-- -->For example, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}{{{example}}}}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}{{{example}}}}}</code></span> }} }}<!-- <!------------ (optional default) ---------------> {{#if:{{{default<includeonly>|</includeonly>}}} | * {{#ifeq:{{{default}}}|all |All lists have | <noinclude>{{small|[''optional:''{{thinsp}}]}}&nbsp; [All lists have]{{\}}[The list named '''''default''''' has]</noinclude><!-- --><includeonly>The list named '''<code>{{{default}}}</code>''' has</includeonly>}} been set to be shown when the template appears. }} </div><noinclude>{{Documentation}}</noinclude> 637dd404169257c607f658e1515b2824edef2441 Template:Social democracy sidebar/doc 10 855 1893 1892 2023-10-01T10:39:25Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Social_democracy_sidebar/doc]] wikitext text/x-wiki {{Documentation subpage}} {{Social democracy sidebar}} {{caution|{{tl|Social democracy}} exists as an alternate version of this template. Any content changes made here should be made there as well.}} {{collapsible lists option|listnames={{hlist|history|concepts|variants|people|orgs|by region|related}}}} * For Commonwealth spelling ("organisations" as opposed to "organizations") use <code>sp=uk</code>. <includeonly>{{Sandbox other|| <!-- Categories below this line --> [[Category:Socialism sidebar templates]] }}</includeonly> b2065e61a30b381a4ecc5c86c22ec9654a3d0250 Template:Use dmy dates 10 856 1895 1894 2023-10-01T10:39:57Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Use_dmy_dates]] wikitext text/x-wiki {{ <includeonly>safesubst:</includeonly>#invoke:Unsubst||date=__DATE__ |$B= {{DMCA|Use dmy dates|from|{{{date|}}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Use dmy dates template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Use dmy dates]] with unknown parameter "_VALUE_"|ignoreblank=y| cs1-dates | date }}}}<noinclude>{{documentation}}</noinclude> 3a087cd27e88fd70a0765c62d5ab506c3b73c9e7 Module:Lang 828 434 1897 940 2023-10-01T10:39:58Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Lang]] Scribunto text/plain --[=[ Lua support for the {{lang}}, {{lang-xx}}, and {{transliteration}} templates and replacement of various supporting templates. ]=] require('strict'); local getArgs = require ('Module:Arguments').getArgs; local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl() local yesno = require ('Module:Yesno'); local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts local lang_table = lang_data.lang_name_table.lang; local lang_dep_table = lang_data.lang_name_table.lang_dep; local script_table = lang_data.lang_name_table.script; local region_table = lang_data.lang_name_table.region; local variant_table = lang_data.lang_name_table.variant; local suppressed_table = lang_data.lang_name_table.suppressed; local override_table = lang_data.override; local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization local content_lang = mw.language.getContentLanguage(); local this_wiki_lang_tag = content_lang.code; -- get this wiki's language tag local this_wiki_lang_dir = content_lang:getDir(); -- get this wiki's language direction local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic() local maint_cats = {}; -- maintenance categories go here local maint_msgs = {}; -- and their messages go here --[[--------------------------< I S _ S E T >------------------------------------------------------------------ Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string. ]] local function is_set( var ) return not (var == nil or var == ''); end --[[--------------------------< I N V E R T _ I T A L I C S >------------------------------------------------- This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn't become bold markup inadvertently. Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal, replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements. In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns. This function expects that markup in args.text is complete and correct; if it is not, oddness may result. ]] local function invert_italics (source) local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns [""]="\'\'", -- empty string becomes italic markup ["\'\'"]="", -- italic markup becomes empty string ["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic ["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold }; local seg = {}; source = source:gsub ("%f[\']\'%f[^\']", '&#39;'); -- protect single quote marks from being interpreted as bold markup seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text' seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup elseif '' ~= seg[1] then seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup elseif '' ~= seg[3] then seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup else seg[2] = source -- when there is no markup end seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table return table.concat (seg); -- put it all back together and done end --[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------ validates |italic= or |italics= assigned values. When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or, for the special case 'default', return nil. When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message. When both |italic= and |italics= are set, returns nil and a 'conflicting' error message. The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template's defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-xx}} depending on the individual template's requirements, 'italic' for {{transliteration}}) or to the value appropriate to |script=, if set ({{lang}} and {{lang-xx}} only). Accepted values and the values that this function returns are are: nil - when |italic= absent or not set; returns nil default - for completeness, should rarely if ever be used; returns nil yes - force args.text to be rendered in italic font; returns 'italic' no - force args.text to be rendered in normal font; returns 'normal' unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit' invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert' ]] local function validate_italic (args) local properties = {['yes'] = 'italic', ['no'] = 'normal', ['unset'] = 'inherit', ['invert'] = 'invert', ['default'] = nil}; local count = 0 for _, arg in pairs {'italic', 'italics', 'i'} do if args[arg] then count = count + 1 end end if count > 1 then -- return nil and an error message if more than one is set return nil, 'only one of |italic=, |italics=, or |i= can be specified'; end return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message end --[=[--------------------------< V A L I D A T E _ C A T _ A R G S >---------------------------------------------------------- Default behavior of the {{lang}} and {{lang-xx}} templates is to add categorization when the templates are used in mainspace. This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters to control categorization. Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the parameter is treated as if it were not set in the template. Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply. Accepted values for |nocat= are the text strings: 'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else for |cat= 'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else ]=] local function validate_cat_args (args) if not (args.nocat or args.cat) then -- both are nil, so categorize return; end if false == yesno (args.cat) or true == yesno (args.nocat) then args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template) else -- args.nocat is the parameter actually used. args.nocat = nil; end end --[[--------------------------< I N _ A R R A Y >-------------------------------------------------------------- Whether needle is in haystack ]] local function in_array ( needle, haystack ) if needle == nil then return false; end for n,v in ipairs( haystack ) do if v == needle then return n; end end return false; end --[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------ prettify ietf tags to use recommended subtag formats: code: lower case script: sentence case region: upper case variant: lower case private: lower case prefixed with -x- ]] local function format_ietf_tag (code, script, region, variant, private) local out = {}; if is_set (private) then return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored end table.insert (out, code:lower()); if is_set (script) then script = script:lower():gsub ('^%a', string.upper); table.insert (out, script); end if is_set (region) then table.insert (out, region:upper()); end if is_set (variant) then table.insert (out, variant:lower()); end return table.concat (out, '-'); end --[[--------------------------< G E T _ I E T F _ P A R T S >-------------------------------------------------- extracts and returns IETF language tag parts: primary language subtag (required) - 2 or 3 character IANA language code script subtag - four character IANA script code region subtag - two-letter or three digit IANA region code variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag in any one of these forms lang lang-variant lang-script lang-script-variant lang-region lang-region-variant lang-script-region lang-script-region-variant lang-x-private each of lang, script, region, variant, and private, when used, must be valid Languages with both two- and three-character code synonyms are promoted to the two-character synonym because the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding the synonymous three-character codes in the lang= attribute. For {{lang-xx}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}} because those parameters are superfluous to the IETF subtags in |code=) returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil. see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1 ]] local function get_ietf_parts (source, args_script, args_region, args_variant) local code, script, region, variant, private; -- ietf tag parts if not is_set (source) then return nil, nil, nil, nil, nil, 'missing language tag'; end local pattern = { -- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits) {'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits) {'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss {'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR {'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits) {'^(%a%a%a?)$'}, -- 18 - ll {'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters) } local t = {}; -- table of captures; serves as a translator between captured ietf tag parts and named variables for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i]) if c1 then -- c1 always set on match code = c1; -- first capture is always code t = { [pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures [pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures [pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table }; script = t.s or ''; -- translate table contents to named variables; region = t.r or ''; -- absent table entries are nil so set named ietf parts to empty string for concatenation variant= t.v or ''; private = t.p or ''; break; -- and done end end if not code then return nil, nil, nil, nil, nil, table.concat ({'unrecognized language tag: ', source}); -- don't know what we got but it is malformed end code = code:lower(); -- ensure that we use and return lower case version of this if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then return nil, nil, nil, nil, nil, table.concat ({'unrecognized language code: ', code}); -- invalid language code, don't know about the others (don't care?) end if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym table.insert (maint_cats, table.concat ({'Lang and lang-xx code promoted to ISO 639-1|', code})); table.insert (maint_msgs, table.concat ({'code: ', code, ' promoted to code: ', synonym_table[code]})); code = synonym_table[code]; -- use the synonym end if is_set (script) then if is_set (args_script) then return code, nil, nil, nil, nil, 'redundant script tag'; -- both code with script and |script= not allowed end else script = args_script or ''; -- use args.script if provided end if is_set (script) then script = script:lower(); -- ensure that we use and return lower case version of this if not script_table[script] then return code, nil, nil, nil, nil, table.concat ({'unrecognized script: ', script, ' for code: ', code}); -- language code ok, invalid script, don't know about the others (don't care?) end end if suppressed_table[script] then -- ensure that code-script does not use a suppressed script if in_array (code, suppressed_table[script]) then return code, nil, nil, nil, nil, table.concat ({'script: ', script, ' not supported for code: ', code}); -- language code ok, script is suppressed for this code end end if is_set (region) then if is_set (args_region) then return code, nil, nil, nil, nil, 'redundant region tag'; -- both code with region and |region= not allowed end else region = args_region or ''; -- use args.region if provided end if is_set (region) then region = region:lower(); -- ensure that we use and return lower case version of this if not region_table[region] then return code, script, nil, nil, nil, table.concat ({'unrecognized region: ', region, ' for code: ', code}); end end if is_set (variant) then if is_set (args_variant) then return code, nil, nil, nil, nil, 'redundant variant tag'; -- both code with variant and |variant= not allowed end else variant = args_variant or ''; -- use args.variant if provided end if is_set (variant) then variant = variant:lower(); -- ensure that we use and return lower case version of this if not variant_table[variant] then -- make sure variant is valid return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant}); end -- does this duplicate/replace tests in lang() and lang_xx()? if is_set (script) then -- if script set it must be part of the 'prefix' if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-script pair: ', code, '-', script}); end elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound) if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred) if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound) return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-region pair: ', code, '-', region}); end end else -- cheap way to determine if there are prefixes; fonipa and others don't have prefixes; # operator always returns 0 if variant_table[variant]['prefixes'][1] and not in_array (code, variant_table[variant]['prefixes']) then return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code: ', code}); end end end if is_set (private) then private = private:lower(); -- ensure that we use and return lower case version of this if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index return code, script, region, nil, nil, table.concat ({'unrecognized private tag: ', private}); end end return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil end --[[--------------------------< M A K E _ E R R O R _ M S G >-------------------------------------------------- assembles an error message from template name, message text, help link, and error category. ]] local function make_error_msg (msg, args, template) local out = {}; local category; if 'Transliteration' == template then category = 'Transliteration'; else category = 'Lang and lang-xx' end table.insert (out, table.concat ({'[', args.text or 'undefined', '] '})); -- for error messages output args.text if available table.insert (out, table.concat ({'<span style=\"color:#d33\">Error: {{', template, '}}: '})); table.insert (out, msg); table.insert (out, table.concat ({' ([[:Category:', category, ' template errors|help]])'})); table.insert (out, '</span>'); if (0 == namespace or 10 == namespace) and not args.nocat then -- categorize in article space (and template space to take care of broken usages) table.insert (out, table.concat ({'[[Category:', category, ' template errors]]'})); end return table.concat (out); end --[=[-------------------------< M A K E _ W I K I L I N K >---------------------------------------------------- Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an empty string. ]=] local function make_wikilink (link, display) if is_set (link) then if is_set (display) then return table.concat ({'[[', link, '|', display, ']]'}); else return table.concat ({'[[', link, ']]'}); end else return ''; end end --[[--------------------------< D I V _ M A R K U P _ A D D >-------------------------------------------------- adds <i> and </i> tags to list-item text or to implied <p>..</p> text. mixed not supported ]] local function div_markup_add (text, style) local implied_p = {}; if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text if 'italic' == style then return text:gsub ('(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item else return text; end end if text:find ('\n+') then -- look for any number of \n characters in text text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics mediawiki if 'italic' == style then text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each impled p (two or more consecutive '\n\n' sequences) else text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each impled p text = text:gsub ('\n', ''); -- strip newline characters end end return text; end --[[--------------------------< T I T L E _ W R A P P E R _ M A K E >------------------------------------------ makes a <span title="<title text>"><content_text></span> or <div title="<title text>"><content_text></div> where <title text> is in the tool-tip in the wiki's local language and <content_text> is non-local-language text in html markup. This because the lang= attibute applies to the content of its enclosing tag. <tag> holds a string 'div' or 'span' used to choose the correct wrapping tag ]] local function title_wrapper_make (title_text, content_text, tag) local wrapper_t = {}; table.insert (wrapper_t, table.concat ({'<', tag})); -- open opening wrapper tag table.insert (wrapper_t, ' title=\"'); -- begin title attribute table.insert (wrapper_t, title_text); -- add <title_text> table.insert (wrapper_t, '\">'); -- end title attribute and close opening wrapper tag table.insert (wrapper_t, content_text); -- add <content_text> table.insert (wrapper_t, table.concat ({'</', tag, '>'})); -- add closing wrapper tag return table.concat (wrapper_t); -- make a big string and done end --[[--------------------------< M A K E _ T E X T _ H T M L >-------------------------------------------------- Add the html markup to text according to the type of content that it is: <span> or <i> tags for inline content or <div> tags for block content The lang= attribute also applies to the content of the tag where it is placed so this is wrong because 'Spanish language text' is English: <i lang="es" title="Spanish language text">casa</i> should be: <span title="Spanish language text"><i lang="es">casa</i></span> or for <div>...</div>: <div title="Spanish language text"><div lang="es"><spanish-language-text></div></div> ]] local function make_text_html (code, text, tag, rtl, style, size, language) local html_t = {}; local style_added = ''; local wrapper_tag = tag; -- <tag> gets modified so save a copy for use when/if we create a wrapper span or div if text:match ('^%*') then table.insert (html_t, '&#42;'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki text = text:gsub ('^%*', ''); -- remove the splat from the text end if 'span' == tag then -- default html tag for inline content if 'italic' == style then -- but if italic tag = 'i'; -- change to <i> tags end else -- must be div so go text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i> end table.insert (html_t, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> html tag code = code:gsub ('%-x%-.*', ''); -- strip private use subtag from code tag because meaningless outside of wikipedia table.insert (html_t, table.concat ({' lang="', code, '\"'})); -- add language attribute if (rtl or unicode.is_rtl(text)) and ('ltr' == this_wiki_lang_dir) then -- text is right-to-left on a left-to-right wiki table.insert (html_t, ' dir="rtl"'); -- add direction attribute for right-to-left languages elseif not (rtl or unicode.is_rtl(text)) and ('rtl' == this_wiki_lang_dir) then -- text is left-to-right on a right-to-left wiki table.insert (html_t, ' dir="ltr"'); -- add direction attribute for left-to-right languages end if 'normal' == style then -- when |italic=no table.insert (html_t, ' style=\"font-style: normal;'); -- override external markup, if any style_added = '\"'; -- remember that style attribute added and is not yet closed end if is_set (size) then -- when |size=<something> if is_set (style_added) then table.insert (html_t, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted else table.insert (html_t, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute style_added = '\"'; -- remember that style attribute added and is not yet closed end end table.insert (html_t, table.concat ({style_added, '>'})); -- close the opening html tag table.insert (html_t, text); -- insert the text table.insert (html_t, table.concat ({'</', tag, '>'})); -- close the 'text' <i>, <span>, or <div> html tag if is_set (language) then -- create a <title_text> string for the title= attribute in a wrapper span or div local title_text; if 'zxx' == code then -- special case for this tag 'no linguistic content' title_text = table.concat ({language, ' text'}); -- not a language so don't use 'language' in title text elseif mw.ustring.find (language, 'languages', 1, true) then title_text = table.concat ({language, ' collective text'}); -- for collective languages else title_text = table.concat ({language, '-language text'}); -- for individual languages end return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag); else return table.concat (html_t); end end --[=[-------------------------< M A K E _ C A T E G O R Y >---------------------------------------------------- For individual language, <language>, returns: [[Category:Articles containing <language>-language text]] for English: [[Category:Articles containing explicitly cited English-language text]] for ISO 639-2 collective languages (and for 639-1 bh): [[Category:Articles with text in <language> languages]] ]=] local function make_category (code, language_name, nocat, name_get) local cat = {}; local retval; if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space return ''; -- return empty string for concatenation end if mw.ustring.find (language_name, 'languages', 1, true) then return table.concat ({'[[Category:Articles with text in ', language_name, ']]'}); end table.insert (cat, '[[Category:Articles containing '); if this_wiki_lang_tag == code then table.insert (cat, 'explicitly cited ' .. language_name); -- unique category name for the local language else table.insert (cat, language_name); end table.insert (cat, '-language text]]'); return table.concat (cat); end --[[--------------------------< M A K E _ T R A N S L I T >---------------------------------------------------- return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string The value |script= is not used in {{transliteration}} for this purpose; instead it uses |code. Because language scripts are listed in the {{transliteration}} switches they are included in the data tables. The script parameter is introduced at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code. To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed to be |translit-script= (in this function, tscript) This function is used by both lang_xx() and transl() lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style transl() always provides language_name, translit, and one of code or tscript, never both; always provides style For {{transliteration}}, style only applies when a language code is provided ]] local function make_translit (code, language_name, translit, std, tscript, style) local title; local out_t = {}; local title_t = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards local title_text = ''; -- tool tip text for title= attribute std = std and std:lower(); -- lower case for table indexing if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified title_text = language_name; -- write a generic tool tip if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name) title_text = title_text .. '-language'; -- skip this text (individual and macro languages only) end title_text = title_text .. ' romanization'; -- finish the tool tip; use romanization when neither script nor standard supplied elseif is_set (std) and is_set (tscript) then -- when both are specified if title_t[std] then -- and if standard is legitimate if title_t[std][tscript] then -- and if script for that standard is legitimate if script_table[tscript] then title_text = title_text .. table.concat ({title_t[std][tscript:lower()], ' (', script_table[tscript], ' script) transliteration'}); -- add the appropriate text to the tool tip else title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard? end else title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard? end else return ''; -- invalid standard, setup for error message end elseif is_set (std) then -- translit-script not set, use language code if not title_t[std] then return ''; end -- invalid standard, setup for error message if title_t[std][code] then -- if language code is in the table (transl may not provide a language code) title_text = title_text .. table.concat ({title_t[std][code:lower()], ' (', language_name, ' language) transliteration'}); -- add the appropriate text to the tool tip else -- code doesn't match title_text = title_text .. title_t[std]['default']; -- so use the standard's default end else -- here if translit-script set but translit-std not set if title_t['no_std'][tscript] then title_text = title_text .. title_t['no_std'][tscript]; -- use translit-script if set elseif title_t['no_std'][code] then title_text = title_text .. title_t['no_std'][code]; -- use language code else if is_set (tscript) then title_text = title_text .. table.concat ({language_name, '-script transliteration'}); -- write a script tool tip elseif is_set (code) then if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name) title_text = title_text .. '-language'; -- skip this text (individual and macro languages only) end title_text = title_text .. ' transliteration'; -- finish the tool tip else title_text = title_text .. ' transliteration'; -- generic tool tip (can we ever get here?) end end end local close_tag; if is_set (code) then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transliteration}}) code = code:match ('^(%a%a%a?)'); -- strip all subtags leaving only the language subtag if not style then -- nil for the default italic style table.insert (out_t, "<i lang=\""); -- so use <i> tag close_tag = '</i>'; -- tag to be used when closing else table.insert (out_t, table.concat ({'<span style=\"font-style: ', style, '\" lang=\"'})); -- non-standard style, construct a span tag for it close_tag = '</span>'; -- tag to be used when closing end table.insert (out_t, code); table.insert (out_t, "-Latn\">"); -- transliterations are always Latin script else table.insert (out_t, "<span>"); -- when no language code: no lang= attribute, not italic ({{transliteration}} only) close_tag = '</span>'; end table.insert (out_t, translit); -- add the translit text table.insert (out_t, close_tag); -- and add the appropriate </i> or </span> if '' == title_text then -- when there is no need for a tool-tip return table.concat (out_t); -- make a string and done else return title_wrapper_make (title_text, table.concat (out_t), 'span'); -- wrap with a tool-tip span and don end end --[[--------------------------< V A L I D A T E _ T E X T >---------------------------------------------------- This function checks the content of args.text and returns empty string if nothing is amiss else it returns an error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup. Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert. ]] local function validate_text (template, args) if not is_set (args.text) then return make_error_msg ('no text', args, template); end if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes return make_error_msg ('text has malformed markup', args, template); end local style = args.italic; if ('unset' ~= style) and ('invert' ~=style) then if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic return make_error_msg ('text has italic markup', args, template); end end end --[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------ render mainenance messages and categories ]] local function render_maint(nocat) local maint = {}; if 0 < #maint_msgs then -- when there are maintenance messages table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag for _, msg in ipairs (maint_msgs) do table.insert (maint, table.concat ({msg, ' '})); -- add message strings end table.insert (maint, '</span>'); -- close the span end if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only for _, cat in ipairs (maint_cats) do table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories end end return table.concat (maint); end --[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------ for proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we do nothing proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac ]] local function proto_prefix (text, language_name, proto_param) if false == proto_param then -- when forced by |proto=no return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats end return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat end --[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------ looks for a poem strip marker in text; returns true when found; false else auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know the content that will replace the stripmarker. ]] local function has_poem_tag (text) return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false; end --[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------ Inspects content of and selectively trims text. Returns text and the name of an appropriate html tag for text. If text contains: \n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return If text begins with list markup: \n* unordered \n; definition \n: definition \n# ordered trim all leading whitespace except \n and trim all trailing whitespace If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because the stripmarker is replaced with text wrapped in <div>..</div> tags. If the text contains any actual <div>...</div> tags, then it's again returned unmodified and <div>...</div> tags are used to wrap it, to prevent div/span inversion. ]] local function html_tag_select (text) local tag; if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that) tag = 'div'; -- poem replacement is in div tags so lang must use div tags elseif text:find ('<div') then -- reductive; if the text contains a div tag, we must use div tags tag = 'div'; elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags text = mw.text.trim (text); -- trim leading and trailing whitespace characters tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags elseif text:find ('\n[%*:;%#]') then -- if text has list markup text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n' tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki) else text = mw.text.trim (text); -- plain text tag = 'span'; -- so span is fine end return text, tag; end --[[--------------------------< V A L I D A T E _ P R O T O >-------------------------------------------------- validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false, empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of true indicating that some other value has been assigned to |proto= ]] local function validate_proto (proto_param) if 'yes' == proto_param then return true; elseif 'no' == proto_param then return false; elseif is_set (proto_param) then return nil, true; -- |proto= something other than 'yes' or 'no' else return nil; -- missing or empty end end --[[--------------------------< L A N G U A G E _ N A M E _ G E T >-------------------------------------------- common function to return language name from the data set according to IETF tag returns language name if found in data tables; nil else ]] local function language_name_get (ietf, code, cat) ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case local name; -- remains nil if not found if override_table[ietf] then -- look for whole IETF tag in override table name = override_table[ietf]; elseif override_table[code] then -- not there so try basic language tag name = override_table[code]; elseif lang_table[code] then -- shift to iana active tag/name table name = lang_table[code]; elseif lang_dep_table[code] then -- try the iana deprecated tag/name table name = lang_dep_table[code]; end if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code})); table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'})); end return name; -- name from data tables or nil end --[[--------------------------< _ L A N G >-------------------------------------------------------------------- entry point for {{lang}} there should be no reason to set parameters in the {{lang}} {{#invoke:}} <includeonly>{{#invoke:lang|lang}}</includeonly> parameters are received from the template's frame (parent frame) ]] local function _lang (args) local out = {}; local language_name; -- used to make category names local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set local subtags = {}; -- IETF subtags script, region, variant, and private local code; -- the language code local msg; -- for error messages local tag = 'span'; -- initial value for make_text_html() local template = args.template or 'Lang'; maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once maint_msgs = {}; validate_cat_args (args); -- determine if categorization should be suppressed if args[1] and args.code then return make_error_msg ('conflicting: {{{1}}} and |code=', args, template); else args.code = args[1] or args.code; -- prefer args.code end if args[2] and args.text then return make_error_msg ('conflicting: {{{2}}} and |text=', args, template); else args.text = args[2] or args.text; -- prefer args.text end msg = validate_text (template, args); -- ensure that |text= is set if is_set (msg) then -- msg is an already-formatted error message return msg; end args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag if msg then return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template); end code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}}) if msg then return make_error_msg ( msg, args, template); end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, template); end if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls if ('latn' == subtags.script) or -- script is latn (this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and unicode.is_Latin (args.text)) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics) args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic else args.italic = 'inherit'; -- italic not set; script not latn; inherit current style end end if is_set (subtags.script) then -- if script set, override rtl setting if in_array (subtags.script, lang_data.rtl_scripts) then args.rtl = true; -- script is an rtl script else args.rtl = false; -- script is not an rtl script end end args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant if 'invert' == args.italic and 'span' == tag then -- invert only supported for in-line content args.text = invert_italics (args.text) end args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name)); table.insert (out, make_category (code, language_name, args.nocat)); table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories return table.concat (out); -- put it all together and done end --[[--------------------------< L A N G >---------------------------------------------------------------------- entry point for {{lang}} there should be no reason to set parameters in the {{lang}} {{#invoke:}} <includeonly>{{#invoke:lang|lang}}</includeonly> parameters are received from the template's frame (parent frame) ]] local function lang (frame) local args = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text valueFunc = function (key, value) if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space return value; -- return untrimmed 'text' elseif value then -- all other values: if the value is not nil value = mw.text.trim (value); -- trim whitespace if '' ~= value then -- empty string when value was only whitespace return value; end end return nil; -- value was empty or contained only whitespace end -- end of valueFunc }); return _lang (args); end --[[--------------------------< T R A N S L A T I O N _ M A K E >---------------------------------------------- stand-alone function to create literal translation of main text Also used by {{lang-x2}} ]] local function translation_make (args_t) local translation_t = {', '}; -- initialize output if 'none' ~= args_t.label then -- if we want a label table.insert (translation_t, '<small>'); -- open the <small> html tag if 'no' == args_t.link then table.insert (translation_t, '<abbr title="literal translation">lit.</abbr>'); -- unlinked form else table.insert (translation_t, make_wikilink ('Literal translation', 'lit.')); -- linked form end table.insert (translation_t, "&thinsp;</small>"); -- close the <small> html tag end table.insert (translation_t, table.concat ({'&#39;', args_t.translation, '&#39;'})); -- use html entities to avoid wiki markup confusion return table.concat (translation_t); -- make a big string and done end --[[--------------------------< L A N G _ X X >---------------------------------------------------------------- For the {{lang-xx}} templates, the only parameter required to be set in the template is the language code. All other parameters can, usually should, be written in the template call. For {{lang-xx}} templates for languages that can have multiple writing systems, it may be appropriate to set |script= as well. For each {{lang-xx}} template choose the appropriate entry-point function so that this function knows the default styling that should be applied to text. For normal, upright style: <includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly> For italic style: <includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly> All other parameters should be received from the template's frame (parent frame) Supported parameters are: |code = (required) the IANA language code |script = IANA script code; especially for use with languages that use multiple writing systems |region = IANA region code |variant = IANA variant code |text = (required) the displayed text in language specified by code |link = boolean false ('no') does not link code-spcified language name to associated language article |rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language |nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected |cat = boolian false ('no') opposite form of |nocat= |italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state |lit = text that is a literal translation of text |label = 'none' to suppress all labeling (language name, 'translit.', 'lit.') any other text replaces language-name label - automatic wikilinking disabled for those {{lang-xx}} templates that support transliteration (those templates where |text= is not entirely latn script): |translit = text that is a transliteration of text |translit-std = the standard that applies to the transliteration |translit-script = ISO 15924 script name; falls back to code For {{lang-xx}}, the positional parameters are: {{{1}}} text {{{2}}} transliterated text {{{3}}} literal translation text no other positional parameters are allowed ]] local function _lang_xx (args) local out = {}; local language_name; -- used to make display text, article links local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set local subtags = {}; -- IETF subtags script, region, and variant local code; -- the language code local translit_script_name; -- name associated with IANA (ISO 15924) script code local translit; local translit_title; local msg; -- for error messages local tag = 'span'; -- initial value for make_text_html() local template = args.template or 'Lang-xx'; maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once maint_msgs = {}; if args[1] and args.text then return make_error_msg ('conflicting: {{{1}}} and |text=', args, template); else args.text = args[1] or args.text; -- prefer args.text end msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding if is_set (msg) then return msg; end args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly if args[2] and args.translit then return make_error_msg ('conflicting: {{{2}}} and |translit=', args, template); else args.translit = args[2] or args.translit -- prefer args.translit end if args[3] and (args.translation or args.lit) then return make_error_msg ('conflicting: {{{3}}} and |lit= or |translation=', args, template); elseif args.translation and args.lit then return make_error_msg ('conflicting: |lit= and |translation=', args, template); else args.translation = args[3] or args.translation or args.lit; -- prefer args.translation end if args.links and args.link then return make_error_msg ('conflicting: |links= and |link=', args, template); else args.link = args.link or args.links; -- prefer args.link end validate_cat_args (args); -- determine if categorization should be suppressed args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private if msg then -- if an error detected then there is an error message return make_error_msg (msg, args, template); end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, template); end if nil == args.italic then -- args.italic controls if is_set (subtags.script) then if 'latn' == subtags.script then args.italic = 'italic'; -- |script=Latn; set for font-style:italic else args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state> end else args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state> end end if is_set (subtags.script) then -- if script set override rtl setting if in_array (subtags.script, lang_data.rtl_scripts) then args.rtl = true; -- script is an rtl script else args.rtl = false; -- script is not an rtl script end end args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag if msg then return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template); end args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any) language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them if args.label then if 'none' ~= args.label then table.insert (out, table.concat ({args.label, ': '})); -- custom label end else if 'no' == args.link then table.insert (out, language_name); -- language name without wikilink else if mw.ustring.find (language_name, 'languages', 1, true) then table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink elseif lang_data.article_name[code] then table.insert (out, make_wikilink (lang_data.article_name[code], language_name)); -- language name with wikilink from override data else table.insert (out, make_wikilink (language_name .. ' language', language_name)); -- language name with wikilink end end table.insert (out, ': '); -- separator end if 'invert' == args.italic then args.text = invert_italics (args.text) end args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, ('none' == args.label) and language_name or nil)) if is_set (args.translit) and not unicode.is_Latin (args.text) then -- transliteration (not supported in {{lang}}); not supported when args.text is wholly latn text (this is an imperfect test) table.insert (out, ', '); -- comma to separate text from translit if 'none' ~= args.label then table.insert (out, '<small>'); if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name translit_script_name = script_table[args['translit-script']]; else translit_script_name = language_name; -- fall back on language name end translit_title = mw.title.makeTitle (0, table.concat ({'Romanization of ', translit_script_name})); -- make a title object if translit_title.exists and ('no' ~= args.link) then table.insert (out, make_wikilink ('Romanization of ' .. translit_script_name or language_name, 'romanized') .. ':'); -- make a wikilink if there is an article to link to else table.insert (out, 'romanized:'); -- else plain text end table.insert (out, '&nbsp;</small>'); -- close the small tag end translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script']) if is_set (translit) then table.insert (out, translit); else return make_error_msg (table.concat ({'invalid translit-std: \'', args['translit-std'] or '[missing]'}), args, template); end end if is_set (args.translation) then -- translation (not supported in {{lang}}) table.insert (out, translation_make (args)); end table.insert (out, make_category (code, category_name, args.nocat)); table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories return table.concat (out); -- put it all together and done end --[[--------------------------< L A N G _ X X _ A R G S _ G E T >---------------------------------------------- common function to get args table from {{lang-??}} templates returns table of args ]] local function lang_xx_args_get (frame) local args = getArgs(frame, { parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}} valueFunc = function (key, value) if 1 == key then -- the 'text' parameter; do not trim wite space return value; -- return untrimmed 'text' elseif value then -- all other values: if the value is not nil value = mw.text.trim (value); -- trim whitespace if '' ~= value then -- empty string when value was only whitespace return value; end end return nil; -- value was empty or contained only whitespace end -- end of valueFunc }); return args; end --[[--------------------------< L A N G _ X X _ I T A L I C >-------------------------------------------------- Entry point for those {{lang-xx}} templates that call lang_xx_italic(). Sets the initial style state to italic. ]] local function lang_xx_italic (frame) local args = lang_xx_args_get (frame); initial_style_state = 'italic'; return _lang_xx (args); end --[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------ Entry point ffrom another module. Sets the initial style state to italic. ]] local function _lang_xx_italic (args) initial_style_state = 'italic'; return _lang_xx (args); end --[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------ Entry point for those {{lang-xx}} templates that call lang_xx_inherit(). Sets the initial style state to inherit. ]] local function lang_xx_inherit (frame) local args = lang_xx_args_get (frame); initial_style_state = 'inherit'; return _lang_xx (args); end --[[--------------------------< _ L A N G _ X X _ I N H E R I T >---------------------------------------------- Entry point from another module. Sets the initial style state to inherit. ]] local function _lang_xx_inherit (args) initial_style_state = 'inherit'; return _lang_xx (args); end --[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------ Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid. All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Module entry point from another module ]] local function _is_ietf_tag (tag) -- entry point when this module is require()d into another local c, s, r, v, p, err; -- code, script, region, variant, private, error message c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else end --[[--------------------------< I S _ I E T F _ T A G >-------------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function is_ietf_tag (frame) return _is_ietf_tag (getArgs (frame)[1]); -- args[1] is the ietf language tag to be tested; also get parent frame end --[[--------------------------< I S _ I E T F _ T A G _ F R A M E >-------------------------------------------- Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent (template) frame. This function not useful when called by {{lang|fn=is_ietf_tag_frame|<tag>}} because <tag> is in the parent frame. ]] local function is_ietf_tag_frame (frame) return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]); -- args[1] is the ietf language tag to be tested; do not get parent frame end --[[--------------------------< _ N A M E _ F R O M _ T A G >-------------------------------------------------- Returns language name associated with IETF language tag if valid; error message else. All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Set invoke's |link= parameter to yes to get wikilinked version of the language name. Module entry point from another module ]] local function _name_from_tag (args) local subtags = {}; -- IETF subtags script, region, variant, and private local raw_code = args[1]; -- save a copy of the input IETF subtag local link = 'yes' == args['link']; -- make a boolean local label = args.label; local code; -- the language code local msg; -- gets an error message if IETF language tag is malformed or invalid local language_name = ''; code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code); if msg then local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template) return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private language_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them if link then -- when |link=yes, wikilink the language name if mw.ustring.find (language_name, 'languages', 1, true) then language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink elseif lang_data.article_name[code] then language_name = make_wikilink (lang_data.article_name[code], label or language_name); -- language name with wikilink from override data else language_name = make_wikilink (language_name .. ' language', label or language_name); -- language name with wikilink end end return language_name; end --[[--------------------------< N A M E _ F R O M _ T A G >---------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function name_from_tag (frame) -- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}} return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame end --[[--------------------------< _ T A G _ F R O M _ N A M E >-------------------------------------------------- Returns the ietf language tag associated with the language name. Spelling of language name must be correct according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator, that disambiguator must be omitted (they are not present in the data name-to-tag tables). Module entry point from another module ]] local function _tag_from_name (args) -- entry point from another module local msg; if args[1] and '' ~= args[1] then local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct) local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard if tag then return tag, true; -- language name found so return tag and done; second return used by is_lang_name() else msg = 'language: ' .. args[1] .. ' not found' -- language name not found, error message end else msg = 'missing language name' -- language name not provided, error message end local template = ''; if args.template and '' ~= args.template then template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template) end return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end --[[--------------------------< T A G _ F R O M _ N A M E >---------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function tag_from_name (frame) -- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}} local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name() return result; end --[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------ Module entry point from an {{#invoke:}} ]] local function is_lang_name (frame) local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name() return result and true or nil; end --[[--------------------------< _ T R A N S L >---------------------------------------------------------------- Module entry point from another module ]] local function _transl (args) local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards local language_name; -- language name that matches language code; used for tool tip local translit; -- transliterated text to display local script; -- IANA script local msg; -- for when called functions return an error message maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once maint_msgs = {}; if is_set (args[3]) then -- [3] set when {{transliteration|code|standard|text}} args.text = args[3]; -- get the transliterated text args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing if not title_table[args.translit_std] then return make_error_msg (table.concat ({'unrecognized transliteration standard: ', args.translit_std}), args, 'Transliteration'); end else if is_set (args[2]) then -- [2] set when {{transliteration|code|text}} args.text = args[2]; -- get the transliterated text else if args[1] and (args[1]:match ('^%a%a%a?%a?$') or -- args[2] missing; is args[1] a language or script tag or is it the transliterated text? args[1]:match ('^%a%a%a?%-x%-')) then -- or is args[1] a private-use tag return make_error_msg ('no text', args, 'Transliteration'); -- args[1] is a code so we're missing text else args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message return make_error_msg ('missing language / script code', args, 'Transliteration'); end end end if is_set (args[1]) then -- IANA language code used for html lang= attribute; or ISO 15924 script code if args[1]:match ('^%a%a%a?%a?$') or args[1]:match ('^%a%a%a?%-x%-') then -- args[1] has correct form? args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case else return make_error_msg (table.concat ({'unrecognized language / script code: ', args[1]}), args, 'Transliteration'); -- invalid language / script code end else return make_error_msg ('missing language / script code', args, 'Transliteration'); -- missing language / script code so quit end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, 'Transliteration'); end if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default args.italic = nil; -- set to nil; end if override_table[args.code] then -- is code a language code defined in the override table? language_name = override_table[args.code]; args.code = args.code:match ('^%a%a%a?'); -- if private use, strip all but language subtag elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables? language_name = lang_table[args.code]; elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables? language_name = lang_dep_table[args.code]; elseif script_table[args.code] then -- if here, code is not a language code; is it a script code? language_name = script_table[args.code]; script = args.code; -- code was an ISO 15924 script so use that instead args.code = ''; -- unset because not a language code else return make_error_msg (table.concat ({'unrecognized language / script code: ', args.code}), args, 'Transliteration'); -- invalid language / script code end -- here only when all parameters passed to make_translit() are valid return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic); end --[[--------------------------< T R A N S L >------------------------------------------------------------------ Module entry point from an {{#invoke:}} ]] local function transl (frame) return _transl (getArgs(frame)); end --[[--------------------------< C A T E G O R Y _ F R O M _ T A G >-------------------------------------------- Returns category name associated with IETF language tag if valid; error message else All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Module entry point from another module ]] local function _category_from_tag (args_t) local subtags = {}; -- IETF subtags script, region, variant, and private local raw_code = args_t[1]; -- save a copy of the input IETF subtag local link = 'yes' == args_t.link; -- make a boolean local label = args_t.label; local code; -- the language code local msg; -- gets an error message if IETF language tag is malformed or invalid local category_name = ''; code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code); if msg then local template = (args_t.template and table.concat ({'{{', args_t.template, '}}: '})) or ''; -- make template name (if provided by the template) return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private category_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', ''); if link then return table.concat ({'[[:', category_name, ']]'}); else return category_name; end end --[[--------------------------< C A T E G O R Y _ F R O M _ T A G >-------------------------------------------- Module entry point from an {{#invoke:}} ]] local function category_from_tag (frame) -- entry point from an {{#invoke:Lang|category_from_tag|<ietf tag>|template=<template name>}} return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { category_from_tag = category_from_tag, lang = lang, -- entry point for {{lang}} lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}} lang_xx_italic = lang_xx_italic, is_ietf_tag = is_ietf_tag, is_ietf_tag_frame = is_ietf_tag_frame, is_lang_name = is_lang_name, tag_from_name = tag_from_name, -- returns ietf tag associated with language name name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates transl = transl, -- entry point for {{transliteration}} _category_from_tag = _category_from_tag, -- entry points when this module is require()d into other modules _lang = _lang, _lang_xx_inherit = _lang_xx_inherit, _lang_xx_italic = _lang_xx_italic, _is_ietf_tag = _is_ietf_tag, get_ietf_parts = get_ietf_parts, _tag_from_name = _tag_from_name, _name_from_tag = _name_from_tag, _transl = _transl, _translation_make = translation_make, }; b4bf37fa610695625e5f1ff5d33471dfaaf8af34 Template:DMCA 10 857 1899 1898 2023-10-01T10:40:02Z Führerredux 2 1 revision imported from [[:wikipedia:Template:DMCA]] wikitext text/x-wiki #REDIRECT [[Template:Dated maintenance category (articles)]] {{Redirect category shell| {{R from move}} {{R from modification}} {{R from template shortcut}} }} 711d3f1c53fa704297f675a8dcf1a56719c5b654 Template:Dated maintenance category 10 858 1901 1900 2023-10-01T10:40:03Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Dated_maintenance_category]] wikitext text/x-wiki <nowiki/><!--This nowiki helps to prevent whitespace at the top of articles-->{{#ifeq:{{FULLROOTPAGENAME}}|Wikipedia:Template messages|<!--Do not categorize-->|<!-- -->{{#ifexpr:{{#if:{{NAMESPACE}}|0|1}}+{{#ifeq:{{{onlyarticles|no}}}|yes|0|1}} |{{#if:{{{3|}}} |[[Category:{{{1}}} {{{2}}} {{{3}}}]]<!-- -->{{#ifexist:Category:{{{1}}} {{{2}}} {{{3}}} |<!-- -->|[[Category:Articles with invalid date parameter in template]]<!-- -->}} |[[Category:{{#if:{{{5|}}} |{{{5}}}<!-- -->|{{{1}}}<!-- -->}}]]<!-- -->}}{{#if:{{{4|}}} |[[Category:{{{4}}}]]}}<!-- -->}}<!-- -->}}<noinclude> {{documentation}} </noinclude> 41e7d4000124d4f718ddf222af0b72825048c4c4 Template:FULLROOTPAGENAME 10 859 1903 1902 2023-10-01T10:40:03Z Führerredux 2 1 revision imported from [[:wikipedia:Template:FULLROOTPAGENAME]] wikitext text/x-wiki {{ safesubst:<noinclude/>#if: {{ safesubst:<noinclude/>Ns has subpages | {{ safesubst:<noinclude/>#if:{{{1|}}}|{{ safesubst:<noinclude/>NAMESPACE:{{{1}}}}}|{{ safesubst:<noinclude/>NAMESPACE}}}} }} | {{ safesubst:<noinclude/>#titleparts:{{ safesubst:<noinclude/>#if:{{{1|}}}|{{{1}}}|{{ safesubst:<noinclude/>FULLPAGENAME}}}}|1}} | {{ safesubst:<noinclude/>#if:{{{1|}}}|{{{1}}}|{{ safesubst:<noinclude/>FULLPAGENAME}}}} }}<noinclude> {{documentation}} </noinclude> fd0c4e7050dded2d50e5df405e6e5e31dd0d46ac Template:Ns has subpages 10 860 1905 1904 2023-10-01T10:40:03Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Ns_has_subpages]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:Ns has subpages|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 060d2d01af26cb67fd90a7c346a0d2d5e450a040 Module:Unsubst 828 235 1907 531 2023-10-01T10:40:04Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Unsubst]] Scribunto text/plain local p = {} local specialParams = { ['$N'] = 'template name', -- Deprecated, but keeping until it is removed from transcluding templates ['$B'] = 'template content', } p[''] = function ( frame ) if not frame:getParent() then error( '{{#invoke:Unsubst|}} makes no sense without a parent frame' ) end if not frame.args['$B'] then error( '{{#invoke:Unsubst|}} requires parameter $B (template content)' ) end if mw.isSubsting() then ---- substing -- Combine passed args with passed defaults local args = {} for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end for k, v in pairs( frame:getParent().args ) do args[k] = v end -- Build an equivalent template invocation -- First, find the title to use local titleobj = mw.title.new(frame:getParent():getTitle()) local title if titleobj.namespace == 10 then -- NS_TEMPLATE title = titleobj.text elseif titleobj.namespace == 0 then -- NS_MAIN title = ':' .. titleobj.text else title = titleobj.prefixedText end -- Build the invocation body with numbered args first, then named local ret = '{{' .. title for k, v in ipairs( args ) do if string.find( v, '=', 1, true ) then -- likely something like 1=foo=bar, we need to do it as a named arg break end ret = ret .. '|' .. v args[k] = nil end for k, v in pairs( args ) do ret = ret .. '|' .. k .. '=' .. v end return ret .. '}}' else ---- Not substing -- Just return the "body" return frame.args['$B'] .. (frame.args['$N'] and frame:getParent():getTitle() == mw.title.getCurrentTitle().prefixedText and '[[Category:Calls to Module:Unsubst that use $N]]' or '') end end return p 83a208bd98f5e78524b299923e5f6e6268a17c53 Module:Ns has subpages 828 861 1909 1908 2023-10-01T10:40:04Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Ns_has_subpages]] Scribunto text/plain -- This module implements [[Template:Ns has subpages]]. -- While the template is fairly simple, this information is made available to -- Lua directly, so using a module means that we don't have to update the -- template as new namespaces are added. local p = {} function p._main(ns, frame) -- Get the current namespace if we were not passed one. if not ns then ns = mw.title.getCurrentTitle().namespace end -- Look up the namespace table from mw.site.namespaces. This should work -- for a majority of cases. local nsTable = mw.site.namespaces[ns] -- Try using string matching to get the namespace from page names. -- Do a quick and dirty bad title check to try and make sure we do the same -- thing as {{NAMESPACE}} in most cases. if not nsTable and type(ns) == 'string' and not ns:find('[<>|%[%]{}]') then local nsStripped = ns:gsub('^[_%s]*:', '') nsStripped = nsStripped:gsub(':.*$', '') nsTable = mw.site.namespaces[nsStripped] end -- If we still have no match then try the {{NAMESPACE}} parser function, -- which should catch the remainder of cases. Don't use a mw.title object, -- as this would increment the expensive function count for each new page -- tested. if not nsTable then frame = frame or mw.getCurrentFrame() local nsProcessed = frame:callParserFunction('NAMESPACE', ns) nsTable = nsProcessed and mw.site.namespaces[nsProcessed] end return nsTable and nsTable.hasSubpages end function p.main(frame) local ns = frame:getParent().args[1] if ns then ns = ns:match('^%s*(.-)%s*$') -- trim whitespace ns = tonumber(ns) or ns end local hasSubpages = p._main(ns, frame) return hasSubpages and 'yes' or '' end return p e133068ba73738b16e1e3eba47735516a461eb5b Template:Lang 10 432 1911 938 2023-10-01T10:40:07Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Lang]] wikitext text/x-wiki <includeonly>{{#invoke:Lang|{{{fn|lang}}}}}</includeonly><noinclude> {{Documentation}} </noinclude> ed35aafbfe8198c5ad80fd861124244d0c7f2742 Template:Var 10 862 1913 1912 2023-10-01T10:40:12Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Var]] wikitext text/x-wiki <var {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} style="padding-right: 1px;{{{style|}}}" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</var><noinclude> <!--Categories and interwikis go near the bottom of the /doc page.--> {{Documentation}} </noinclude> 0e9e47694c01ca4c7b29566a1cb11a117dfbf2c0 Module:Transclusion count/data/U 828 863 1915 1914 2023-10-01T10:40:16Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/U]] Scribunto text/plain return { ["U"] = 233000, ["U.S._Roads_WikiProject"] = 11000, ["UAF_player"] = 2500, ["UEFA_player"] = 5100, ["UK"] = 4400, ["UKR"] = 12000, ["UK_legislation"] = 2300, ["URL"] = 379000, ["URL2"] = 10000, ["URS"] = 7100, ["URY"] = 2100, ["US$"] = 11000, ["US50_Invite"] = 3700, ["USA"] = 41000, ["USBill"] = 2300, ["USCGC"] = 2600, ["USCongRep-end"] = 5000, ["USCongRep-row"] = 5500, ["USCongRep-start"] = 5000, ["USCongressOrdinal"] = 5900, ["USCongressOrdinal/code"] = 5900, ["USD"] = 5100, ["USGS_gazetteer"] = 11000, ["USNS"] = 2800, ["USN_flag"] = 10000, ["USPL"] = 2000, ["USRD"] = 5000, ["USS"] = 36000, ["USSR"] = 2200, ["USStat"] = 2300, ["US_Census_population"] = 38000, ["US_Census_population/styles.css"] = 38000, ["US_House_succession_box"] = 8700, ["US_State_Abbrev"] = 16000, ["US_county_navigation_box"] = 99000, ["US_government_sources"] = 2500, ["US_patent"] = 2700, ["US_state_navigation_box"] = 16000, ["UTRS"] = 7900, ["UTRS-unblock-user"] = 4900, ["UTZ"] = 2600, ["UZB"] = 2400, ["Ubl"] = 136000, ["Ublist"] = 4900, ["Ubx"] = 12000, ["Ucat"] = 38000, ["Ucfirstletter"] = 5100, ["Uir"] = 28000, ["Ukrainian_oblast"] = 2000, ["Ul"] = 5500, ["Ulist"] = 6500, ["Umbox"] = 78000, ["Unassessed-Class"] = 11000, ["Unassessed_class"] = 320000, ["Unblock-auto_reviewed"] = 5300, ["Unblock-spamun_reviewed"] = 2900, ["Unblock-un_reviewed"] = 16000, ["Unblock_reviewed"] = 68000, ["Unbulleted_list"] = 1230000, ["Uncategorized"] = 2700, ["Under_construction"] = 2400, ["Underline"] = 3600, ["Undisclosed_paid"] = 2900, ["Unindent"] = 4300, ["UnitedStatesCode"] = 3400, ["United_States_presidential_election_results_table_footer"] = 2900, ["United_States_presidential_election_results_table_header"] = 3300, ["United_States_presidential_election_results_table_row"] = 3300, ["United_States_topic"] = 5900, ["Unknown"] = 2700, ["Unknown-Class"] = 10000, ["Unlink"] = 21000, ["Unreferenced"] = 162000, ["Unreferenced_section"] = 36000, ["Unreferenced_stub"] = 2100, ["Unrelated"] = 5500, ["Unreliable_source?"] = 11000, ["Unreliable_sources"] = 8100, ["Unsourced"] = 5000, ["Update"] = 30000, ["Update_after"] = 5100, ["Update_inline"] = 5800, ["Update_inline_span"] = 2600, ["Update_section"] = 3900, ["Update_span"] = 2600, ["Updated"] = 57000, ["UploadCampaignLink"] = 2100, ["Uploader_information"] = 222000, ["Url"] = 83000, ["Use_American_English"] = 73000, ["Use_Australian_English"] = 125000, ["Use_Bangladeshi_English"] = 3000, ["Use_British_English"] = 258000, ["Use_Canadian_English"] = 37000, ["Use_Ghanaian_English"] = 2400, ["Use_Hiberno-English"] = 32000, ["Use_Hong_Kong_English"] = 4000, ["Use_Indian_English"] = 158000, ["Use_Irish_English"] = 17000, ["Use_Kenyan_English"] = 2400, ["Use_New_Zealand_English"] = 21000, ["Use_Nigerian_English"] = 4800, ["Use_Oxford_spelling"] = 2400, ["Use_Pakistani_English"] = 5600, ["Use_Philippine_English"] = 9500, ["Use_South_African_English"] = 8700, ["Use_dmy_dates"] = 1670000, ["Use_first_nonempty"] = 16000, ["Use_list-defined_references"] = 4000, ["Use_mdy_dates"] = 552000, ["Use_shortened_footnotes"] = 2300, ["User"] = 557000, ["User-generated_source"] = 5700, ["User-multi"] = 335000, ["User0"] = 18000, ["User19"] = 11000, ["User2"] = 3900, ["User21"] = 53000, ["User3"] = 242000, ["User4"] = 3200, ["User5"] = 7000, ["UserSummary"] = 115000, ["User_American"] = 2300, ["User_COI"] = 28000, ["User_Copy_Edit"] = 2200, ["User_Firefox"] = 5900, ["User_HTML"] = 3000, ["User_OS:Dos/style.css"] = 2100, ["User_QAIbox"] = 5700, ["User_QAIbox/auto"] = 3800, ["User_Translator"] = 2400, ["User_UN"] = 2400, ["User_WP"] = 19000, ["User_WP/switch"] = 19000, ["User_Wikipedia"] = 2300, ["User_Wikipedia_reference"] = 2900, ["User_Wikipedian_For"] = 10000, ["User_Wikipedian_for"] = 15000, ["User_Wikipediholic"] = 2200, ["User_category_header"] = 2200, ["User_committed_identity"] = 2500, ["User_contrib"] = 5100, ["User_current_age"] = 2500, ["User_current_age/days"] = 2500, ["User_current_age/months"] = 2500, ["User_current_age/years"] = 2500, ["User_de"] = 5600, ["User_de-1"] = 7700, ["User_de-2"] = 4400, ["User_de-3"] = 2300, ["User_en"] = 39000, ["User_en-1"] = 2500, ["User_en-2"] = 7700, ["User_en-3"] = 15000, ["User_en-4"] = 8900, ["User_en-5"] = 6500, ["User_en-N"] = 4900, ["User_es"] = 3800, ["User_es-1"] = 7200, ["User_es-2"] = 4700, ["User_es-3"] = 2600, ["User_fr"] = 4000, ["User_fr-1"] = 9100, ["User_fr-2"] = 6500, ["User_fr-3"] = 3800, ["User_html"] = 2700, ["User_in_region"] = 28000, ["User_in_the_United_Kingdom"] = 2000, ["User_in_the_United_States"] = 4200, ["User_infobox"] = 3000, ["User_instrument"] = 2800, ["User_invitation"] = 5800, ["User_iso15924"] = 2400, ["User_iso15924/level-text"] = 2800, ["User_iso15924/user_script_catlink"] = 2700, ["User_it-1"] = 2800, ["User_ja-1"] = 2900, ["User_la-1"] = 2800, ["User_link"] = 238000, ["User_lives_in"] = 7000, ["User_male"] = 2300, ["User_oops"] = 2100, ["User_other"] = 590000, ["User_page"] = 44000, ["User_proud"] = 5100, ["User_rights"] = 5000, ["User_ru"] = 3000, ["User_ru-1"] = 2100, ["User_sandbox"] = 293000, ["User_summary"] = 115000, ["User_talk_other"] = 68000, ["User_time_zone"] = 4100, ["User_visited"] = 6400, ["User_wikipedia"] = 2000, ["User_wikipedia/RC_Patrol"] = 3700, ["User_wikipedia/Rollback"] = 2300, ["User_wikipedia/WikiGnome"] = 2700, ["User_wishes_to_visit"] = 6000, ["User_zh"] = 2200, ["Userbox"] = 301000, ["Userbox-2"] = 33000, ["Userbox-level"] = 102000, ["Userbox-r"] = 6100, ["UserboxCOI"] = 28000, ["Userbox_table_bottom"] = 11000, ["Userbox_table_category"] = 2400, ["Userbox_table_top"] = 11000, ["Userbox_table_userbox"] = 11000, ["Userboxbottom"] = 52000, ["Userboxtop"] = 57000, ["Usercheck-short"] = 3600, ["Userlinks"] = 29000, ["Userpage"] = 30000, ["Userpage_blanked"] = 8400, ["Userspace_draft"] = 41000, ["Usgs-gazetteer"] = 11000, ["Ushr"] = 15000, ["Ussc"] = 5200, ["Usurped"] = 5300, ["Utrs"] = 5200, ["Module:URL"] = 577000, ["Module:Unicode_data"] = 1470000, ["Module:Unicode_data/scripts"] = 486000, ["Module:Unstrip"] = 45000, ["Module:Unsubst"] = 11700000, ["Module:Unsubst-infobox"] = 191000, ["Module:Urldecode"] = 4500, ["Module:User"] = 557000, ["Module:UserLinks"] = 874000, ["Module:UserLinks/config"] = 874000, ["Module:UserLinks/extra"] = 23000, ["Module:UserLinks/shared"] = 874000, ["Module:User_contrib"] = 5100, ["Module:Userbox"] = 307000, ["Module:Uses_Wikidata"] = 3200, ["Module:Ustring"] = 739000, } a2d476eb5b0ea9ca4a67bec8b21989ea55e3530f Template:High use 10 864 1917 1916 2023-10-01T10:40:16Z Führerredux 2 1 revision imported from [[:wikipedia:Template:High_use]] wikitext text/x-wiki #Redirect [[Template:High-use]] {{Redirect category shell|{{R from modification}}{{R from template shortcut}}}} 65ce33c8f2d9659b46256ceb1f7fe57859f66fb2 Help:Citation Style 1 12 865 1919 1918 2023-10-01T10:40:19Z Führerredux 2 1 revision imported from [[:wikipedia:Help:Citation_Style_1]] wikitext text/x-wiki {{Short description|Help page for citation templates}} {{Wikipedia how to|WP:CS1|HELP:CS1}} {{Nutshell|This is an introductory how-to for Wikipedia's most frequently used citation style. It does not cover every option of every citation template. See individual templates' documentation (e.g. at [[Template:Cite journal]]) for details beyond this basic cheatsheet.}} {{notice|image=Gnome-applications-science.svg|This help page has {{subpages|testcases|Help:Citation Style 1}} demonstrating various uses.}} '''Citation Style 1''' ('''CS1''') is a collection of [[Wikipedia:Citing sources|reference citation]] [[Help:Template|templates]] that can be modified to create different styles for different referenced materials. Its purpose is to provide a set of default formats for references on Wikipedia. It includes a series of templates that in turn use [[Module:Citation/CS1]]. The use of CS1 or of templates is not compulsory; per [[WP:CITESTYLE]]: <blockquote>Wikipedia does not have a single [[style guide|house style]]. Editors may choose any option they want; one article need not match what is done in other articles or what is done in professional publications or recommended by academic [[style guide]]s. However, citations ''within a given article'' should follow a consistent style.</blockquote> [[WP:CITEVAR]] additionally states: {{quote|If the article you are editing is already using a particular citation style, you should follow it; if you believe it is inappropriate for the needs of the article, seek consensus for a change on the talk page.}} CS1 uses (in addition to Wikipedia's own [[WP:Manual of Style|Manual of Style]]) elements of ''[[The Chicago Manual of Style]]'' and the ''[[Publication Manual of the American Psychological Association]]'', with significant adaptations. ==Style== There are a number of templates that use a name starting with ''cite''; many were developed independently of CS1 and are not compliant with the CS1 style. There are also a number of templates that use one of the general use templates as a meta-template to cite a specific source. To be compliant with CS1, a template must: * Use [[Module:Citation/CS1]] or one of the templates listed below. * Use a period as a punctuation mark to separate fields and end the citation. * Use a semicolon as a punctuation mark to separate authors and editors. * Format the title of longer works in italics. * Format the title of short works such as chapters in quotes. ==Templates== ===General use=== The following is a list of templates that implement Citation Style 1 for one or more types of citations but are not restricted to any specific source. {| class="wikitable" style="max-width:55em;" !scope="row" {{Yes}} | Indicates that the corresponding tool or gadget can generate the template anytime user wishes. However, this does not mean that the tool or gadget fully supports all parameters or provides an interface for them. In fact, none of the mentioned items do so. |- !scope="row" {{Partial|Sometimes}} | Indicates that the corresponding tool or gadget may or may not generate the corresponding template. For more information, see associated footnote. |} {| class="wikitable" style="text-align:center;" |+ General-use CS1 templates !scope="col"| Template !scope="col"| Use !scope="col"| [[Wikipedia:The Wikipedia Library/Citoid|Citoid]] !scope="col"| [[WP:Citation expander|Citation expander]] !scope="col"| [[WP:RefToolbar/2.0|RefToolbar 2.0]] !scope="col"| [[Wikipedia:ProveIt|ProveIt]] !scope="col"| [[User:Odie5533/SnipManager|SnipManager]] |- !scope="row"| {{tl|Cite arXiv}} | [[arXiv]] preprints || || || || || |- !scope="row"| {{tl|Cite AV media}} | audio and visual sources || || || || {{Yes}} || {{Yes}} |- !scope="row"| {{tl|Cite AV media notes}} | liner notes from albums, DVDs, CDs and similar audio-visual media || || || || || |- !scope="row"| {{tl|Cite book}} | books || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} |- !scope="row"| {{tl|Cite conference}} | conference papers || || || || {{Yes}} || |- !scope="row"| {{tl|Cite encyclopedia}} | edited collections || || || || {{Yes}} || |- !scope="row"| {{tl|Cite episode}} | television or radio programs and episodes || || || || {{Yes}} || |- !scope="row"| {{tl|Cite interview}} | interviews || || || || || |- !scope="row"| {{tl|Cite journal}} | academic and scientific papers published in journals || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} |- !scope="row"| {{tl|Cite magazine}} | magazines and newsletters || || || || {{Yes}} || |- !scope="row"| {{tl|Cite mailing list}} | archived public mailing lists || || || || || |- !scope="row"| {{tl|Cite map}} | maps || || || || || |- !scope="row"| {{tl|Cite news}} | news articles in print, video, audio or web || {{Yes}} || {{Partial|Sometimes}}{{efn|Citation expander will only attempt to tidy up the citation and will not add new content}} || {{Yes}} || {{Yes}} || {{Yes}} |- !scope="row"| {{tl|Cite newsgroup}} | online newsgroups || || || || || |- !scope="row"| {{tl|Cite podcast}} | audio or video [[podcast]] || || || || || |- !scope="row"| {{tl|Cite press release}} | press releases || || || || {{Yes}} || |- !scope="row"| {{tl|Cite report}} | reports by government departments, instrumentalities, operated companies, etc. || || || || {{Yes}} || |- !scope="row"| {{tl|Cite serial}} | audio or video serials || || || || || |- !scope="row"| {{tl|Cite sign}} | signs, plaques and other visual sources || || || || {{Yes}} || |- !scope="row"| {{tl|Cite speech}} | speeches || || || || || |- !scope="row"| {{tl|Cite tech report}} | technical reports || || || || || |- !scope="row"| {{tl|Cite thesis}} | theses || {{Yes}} || || || {{Yes}} || |- !scope="row"| {{tl|Cite web}} | web sources not characterized by another template || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} |} {{notelist}} ===Specific source=== There are a number of templates that are CS1 compliant, because they use a CS1 template as a base, but are tied to a specific source; these are listed in [[:Category:Citation Style 1 specific-source templates]]. ==How the templates work== CS1 uses a series of templates that provide a consistent output. The main difference is in parameters optimized for the subject. For example, {{tl|cite book}} has fields for title and chapter, whereas {{tl|cite journal}} has fields for journal and title. This help page uses the names most commonly used across the templates series; see each template's documentation for details. CS1 templates present a citation generally as: * With author: :{{Cite journal |last=((Author)) |date=n.d. |title=Title |work=Work |publisher=Publisher |id=Identifiers |no-tracking=yes}} * Without author: :{{Cite journal |date=n.d. |title=Title |work=Work |publisher=Publisher |id=Identifiers |no-tracking=yes}} (where "n.d." could also be any other valid date formatted per the MOS) ===Authors=== An author may be cited using separate parameters for the author's surname and given name by using {{para|last}} and {{para|first}} respectively. If a cited source has multiple authors, subsequent authors can be listed in the citation using {{para|last2}} and {{para|first2}}, {{para|last3}} and {{para|first3}}, etc.<ref group="Note" name="NB_Unlimited">The number of authors that can be listed in the citation and displayed when published is unlimited.</ref> For symmetry with the other numbered parameters, {{para|last1}} and {{para|first1}} are available as well, as shown in the following example: :<code><nowiki>{{cite book |last1=Hawking |first1=Stephen |last2=Hawking |first2=Lucy |title=George's Secret Key to the Universe}}</nowiki></code> :{{cite book |last1=Hawking |first1=Stephen |last2=Hawking |first2=Lucy |title=George's Secret Key to the Universe}} For symmetry with similar parameters for editors and other contributors (discussed further below), longer parameter forms are also available for authors: {{para|author-last}} and {{para|author-first}}, as well as numbered variants like {{para|author-last{{var|n}}}} and {{para|author-first{{var|n}}}} or {{para|author{{var|n}}-last}} and {{para|author{{var|n}}-first}} (with {{var|n}} referring to this author's number in the list). Because the shorthand parameters might erroneously have been used also for editors and other types of contributors by some Wikipedians in the past, please make sure that the parameters actually refer to authors when expanding {{para|last}} and {{para|first}} parameters to their longer equivalents (equivalent parameters for editors etc. exist as well, see [[#Editors|below]]). If a cited source has a large number of authors, one can limit the number of authors displayed when the citation is published by using the {{para|display-authors}} parameter as described in detail in the [[Help:Citation Style 1#Display options|Display options]] section of this help page. If a cited author is notable and the author has a Wikipedia article, the author's name can be linked with {{para|author-link}}.<ref group="Note" name="NB_Prefix">If the English Wikipedia does not have an article about the author, but an article is available in another language entity of Wikipedia or if a [[Wikidata]] node for this author exists already, you can prefix the link using that Wikipedia's [[Help:Interlanguage links|language prefix]] (similar to <code>:en:</code> for the English Wikipedia) in order to create an [[Help:Interlanguage links|interwiki link]]. The [[Help:Interwiki linking#Prefix codes for linking to Wikimedia sister projects|prefix]] for Wikidata nodes is <code>:d:</code> (or <code>:wikidata:</code>) to be followed by the Q''&lt;id>'' number of the corresponding entry. (<!-- Put in brackets because this seldomly applies to authors: -->Similar, [[Wikisource]] uses <code>:s:</code> (or <code>:wikisource:</code>), [[Wiktionary]] <code>:wikt:</code> (or <code>:wiktionary:</code>) and [[Wikimedia Commons|Commons]] <code>:c:</code> (or <code>:commons:</code>), followed by the corresponding article name.) Alternatively, if a suitable [[:m:Interwiki map|custom interwiki prefix]] is defined for another authority control repository, this can be used as well. For example, to link to an author's [[VIAF]] entry (with code <code>''&lt;id>''</code>), <code>:VIAF:''&lt;id>''</code> can be used, even if this would resolve to an independent external site. In the absence of a local article such links can help to at least establish a connection to a particular author and, if an article gets created in the English Wikipedia as well in the future, these links can be fixed up by bots to point to the local article instead.</ref> If a citation includes multiple notable authors, one may use {{para|author-link{{var|n}}}} or {{para|author{{var|n}}-link}}, etc. This method is used because the {{para|last}}- and {{para|first}}-type parameters do not allow wikilinking. However, {{para|author-link}} cannot be used to link to an external website; the external link will not render correctly.<ref group="Note" name="NB_Prefix"/> Below is an example of a wikilinked author credit: :<code><nowiki>{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe}}</nowiki></code> :{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe}} When an author is cited, the date of the cited work is displayed after the author's name, as shown in the example below: :<code><nowiki>{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe |date=2007}}</nowiki></code> :{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe |date=2007}} If no author is cited, the date appears after the title, as shown in the example below: :<code><nowiki>{{cite book |title=George's Secret Key to the Universe |date=2007}}</nowiki></code> :{{cite book |title=George's Secret Key to the Universe |date=2007}} If the cited source does not credit an author, as is common with newswire reports, press releases or company websites use: :{{para|author|<nowiki><!--Not stated--></nowiki>}} This HTML comment alerts fact-checking and citation-fixing editors, and potentially bots, that the cited source did not name an author—the author was not overlooked. Without this entry editors and bots would waste time researching cited sources for a non-existent author credit. When using {{para|author}} avoid citations like <code><nowiki>{{cite news |work=Weekday Times |author=''Weekday Times'' editors |title=...}}</nowiki></code>, unless the article is on a field in which the majority of professional journals covering that field use such a citation style. Editors should use an {{para|author}} organizational citation when the cited source, such as a committee report, specifically names an official body or a sub-unit of the publisher as the collective author of the work, e.g. {{para|author|Commission on Headphone Safety}} or {{para|author|Rules Sub-committee}}. Do not use {{para|author}} to assert what you think was probably the collective author when the source itself does not specifically specify a collective author; doing so is [[WP:NOR|original research]] and falsification of [[WP:V|source verifiability]] and [[WP:RS|reliability]]. {{para|author}} should never hold the name of more than one author. Separate individual authors into enumerated individual {{para|author{{var|n}}}} parameters. ===Editors=== An editor may be cited using separate parameters for the editor's last and first name. A single or first editor would use {{para|editor-last}} and {{para|editor-first}}; subsequent editors would use {{para|editor2-last}} and {{para|editor2-first}}, {{para|editor3-last}} and {{para|editor3-first}}, etc. If an editor has a Wikipedia article, you may wikilink to that Wikipedia article using {{para|editor-link}}.<ref group="Note" name="NB_Prefix"/> If a cited work has multiple editors, you may use {{para|editor2-link}}, {{para|editor3-link}}, etc. to wikilink to each editor's Wikipedia article. This method is used because {{para|editor-last}} and {{para|editor-first}} do not allow wikilinking. {{para|editor-link}} cannot be used to link to an external website. If a cited source has a large number of editors, one can limit the number of editors displayed when the citation is published using the {{para|display-editors}} parameter as described in detail in the [[Help:Citation Style 1#Display options|Display options]] section of this help page. === Translators === A translator may be cited using separate parameters for the translator's last and first name. A single or first translator would use {{para|translator-last}} and {{para|translator-first}}; subsequent translators would use {{para|translator2-last}} and {{para|translator2-first}}, {{para|translator3-last}} and {{para|translator3-first}}, etc. If a translator has a Wikipedia article, you may wikilink to that Wikipedia article using {{para|translator-link}}.<ref group="Note" name="NB_Prefix"/> If a cited work has multiple translators, you may use {{para|translator2-link}}, {{para|translator3-link}}, etc. to wikilink to each translator's Wikipedia article. This method is used because {{para|translator-last}} and {{para|translator-first}} do not allow wikilinking. {{para|translator-link}} cannot be used to link to an external website. ===Others=== * '''others''': This parameter is used to credit contributors other than an author or an editor, such as an illustrator. You should include both the type of contribution and the name of the contributor, for example {{para|others|Illustrated by John Smith}}.<ref group="Note" name="NB_Prefix"/> ===Dates=== Dates are indicated by these parameters: * '''date''': Full date of publication edition being referenced, in the same format as other dates in citations in the same article. Must not be wikilinked. ** or: '''year''': Year of publication edition being referenced. Discouraged in favor of '''date''', except in the rare case that {{em|all}} of the following conditions are met: **#the publication-date format in the template is YYYY-MM-DD **#the citation requires a <code>[[Wikipedia:Citation templates and reference anchors|CITEREF]]</code> [[Template:Sfn#More than one work in a year|disambiguator]] * '''orig-date''': Original publication date or year, for display (in square brackets) after the '''date''' (or '''year'''). For clarity, please supply specifics, for instance <code>|orig-date=first published 1859</code> or <code>|orig-date=composed 1904</code>. This parameter displays only if there is a value for '''date''' (or '''year'''). Alias: '''origyear'''. When a source does not have a publication date, use {{para|date|n.d.}} or {{para|date|nd}} Acceptable date formats are shown in the "Acceptable date formats" table of the {{section link|Manual of Style/Dates and numbers|Dates, months and years}}. Further points: * Prescriptions about date formats only apply when the date is expressed in terms of Julian or Gregorian dates, or which use one of the seasons (spring, summer, autumn or fall, winter). Sources are at liberty to use other ways of expressing dates, such as "spring/summer" or a date in a religious calendar; editors should report the date as expressed by the source. [[WP:SEASON|Although the seasons are not normally capitalized]], they are capitalized when used as dates in CS1 templates, and the capitalization of the season stated by the source may be altered to follow this convention. In cases where the date as expressed in the source is not compatible with the template software, the citation should be created without using a template. * Do not wikilink. * Access and archive dates in references should be in either the format used for [[MOS:DATEUNIFY|publication dates]], or YYYY-MM-DD. ====Date format compliance with Wikipedia's Manual of Style==== CS1 uses {{section link|Wikipedia:Manual of Style/Dates and numbers|Dates, months, and years}} ([[MOS:DATEFORMAT]]) as the reference for all date format checking performed by [[Module:Citation/CS1]]. For various reasons, CS1 is not fully compliant with MOS:DATEFORMAT. This table indicates CS1 compliance with the listed sections of MOS:DATEFORMAT. {|class="wikitable plainrowheaders" style="margin: 1em auto 1em auto;" |+CS1 compliance with [[Wikipedia:Manual of Style/Dates and numbers]] !scope="col"| Section !scope="col"| Compliant !scope="col"| Comment |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Acceptable date formats|Acceptable date formats table]] | yes | Exceptions: linked dates not supported;<br />sortable dates not supported ({{tlx|dts}} etc.);<br />proper name dates not supported with the exception of 'Easter YYYY' and 'Christmas YYYY';<br />shortened month names longer than three characters or with terminating periods not supported;<br />quarterly dates supported in the form 'First Quarter 2020' |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Unacceptable date formats|Unacceptable date formats table]] | yes | |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Consistency|Consistency]] | yes<sup>{{dagger}}</sup> |rowspan="3"| Article-level restrictions are beyond the scope of CS1<br /><sup>{{dagger}}</sup>CS1/CS2 templates follow the format specified by the article's {{tlx|use dmy dates}} or {{tlx|use mdy dates}} templates; see [[#Auto-formatting citation template dates|Auto-formatting citation template dates]] |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Strong national ties to a topic|Strong national ties to a topic]] | no |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Retaining existing format|Retaining existing format]] | no |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Era style|Era style]] | no |Dates earlier than 100 not supported. Wikipedia [[Wikipedia:Citing sources#Say where you read it|editors seldom read ancient manuscripts directly]]; the specific, modern, published edition read by the editor is what goes in the source citation. Thus, the date of the source actually consulted should be provided in {{para|date}}, and the date of the ancient source may be provided in {{para|orig-date}}; the format of the orig-date value is not checked for errors. |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Julian and Gregorian calendars|Julian and Gregorian calendars]] | limited | Julian prior to 1582; Gregorian from 1582; assumes Gregorian in the overlap period of 1582 – c. 1923 |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Ranges|Ranges]] | yes | Exceptions: does not support the use of <code>&amp;ndash;</code> or <code>&amp;nbsp;</code><br />does not support dates prior to 100;<br />does not support solidus separator (/)<br />does not support " to " as a date separator<br />does not support YYYY–YY where the two-digit year is less than 13 (change to YYYY–YYYY to eliminate the error message) |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Uncertain, incomplete, or approximate dates|Uncertain, incomplete, or approximate dates]] | yes | Exceptions: does not support {{tlx|circa}} or {{tlx|floruit}};<br />does not support dates prior to 100;<br />Supports <code>c. </code> only with a single year value (no ranges or day/month combinations). |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Days of the week|Days of the week]] | no | |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Seasons|Seasons]] | limited | CS1 capitalizes seasons used as dates in citations, in line with external style guides |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Decades|Decades]] | no | |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Centuries and millennia|Centuries and millennia]] | no | |- !scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Abbreviations for long periods of time|Abbreviations for long periods of time]] | no | |} ====Date range, multiple sources in same year==== If dates are used, the year range is 100 to present without era indication (AD, BC, CE, BCE). In the case where the same author has written more than one work in the same year, a lower-case letter may be appended to the year in the date parameter ({{xt|{{!}}date&#61;July 4, 1997b}}) or the year parameter ({{xt|{{!}}year&#61;1997b}}). ====Auto-formatting citation template dates==== {{use dmy dates|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=y}} [[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|2]] templates automatically render dates ({{para|date}}, {{para|access-date}}, {{para|archive-date}}, etc.) in the style specified by the article's {{tlx|use dmy dates}} or {{tlx|use mdy dates}} template. Editors may also choose how CS1/CS2 templates render dates by the use of {{para|cs1-dates|&lt;{{var|keyword}}>}} in the article's {{tld|use xxx dates}} template.<section begin="auto_date_format_table" /> {| class="wikitable" |+Acceptable <code>{{pipe}}cs1-dates=</code> keywords !scope="col"| Keyword !scope="col"| Definition |- !scope="row"| <code>l</code> |rowspan="2"| long-form publication and access- / archive-dates;<br />this is the default case when {{para|cs1-dates|plain=yes}} is omitted or empty |- !scope="row"| <code>ll</code> |- !scope="row"| <code>ls</code> | long-form publication dates; abbreviated access- / archive-dates |- !scope="row"| <code>ly</code> | long-form publication dates; year-initial numeric access- / archive-dates (ymd) |- !scope="row"| <code>s</code> |rowspan="2"| abbreviated publication and access- / archive-dates |- !scope="row"| <code>ss</code> |- !scope="row"| <code>sy</code> | abbreviated publication dates; year-initial numeric access- / archive-dates (ymd) |- !scope="row"| <code>y</code> |rowspan="2"| year-initial numeric publication, access- and archive-dates (ymd);<br />cs1|2 cannot reformat Month YYYY, Season YYYY, date-ranges of any form, or [[Julian calendar]] dates into ymd format |- !scope="row"| <code>yy</code> |}<section end="auto_date_format_table" /> Example: to have the CS1/CS2 templates in an article render their publication dates in the long form (fully spelled-out month names) with access-/archive-dates rendered in short form (abbreviated month names), write: :{{tlx|use dmy dates|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates{{=}}ls}} This documentation page has <code><nowiki>{</nowiki>{use dmy dates|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=y}}</code> at the top of this section so this cs1 template will render with ymd dates: :<code><nowiki>{{</nowiki>cite web |title=Example Webpage |url=https://example.com |website=Example |date=31 October 2017 |access-date=Dec 5, 2017}}</code> ::{{cite web |title=Example Webpage |url=https://example.com |website=Example |date=31 October 2017 |access-date=Dec 5, 2017}} This global setting may be overridden in individual CS1/CS2 templates by use of {{para|df}}; abbreviated date forms are not supported by {{para|df}}. {{lang|la|Nota bene}}: CS1/CS2 auto-date formatting does not apply when previewing an article section that does not contain a {{tld|use xxx dates}} template. ===Titles and chapters=== * '''title''': The title of the cited source. Titles are displayed in italics, except for short works such as a {{txl|cite press release}} and cited articles in {{tlx|cite news}}, {{tlx|cite journal}}, {{tlx|cite magazine}}, {{tlx|cite web}}, {{tlx|cite conference}}, and {{tlx|cite podcast}}, where the title is shown in quotation marks. For templates like these that show the title in quotation marks, any double quotation marks inside the title should be [[MOS:QINQ|converted]] to single quotation marks. Use [[MOS:CT|title case]] unless the cited source covers a scientific, legal or other technical topic and sentence case is the predominant style in journals on that topic. Use either title case or sentence case consistently throughout the article. Do not omit a leading "The" from the title. Subtitles are typically separated from titles with ": " though " – " is also used. [[MOS:TM|As with trademarks]], Wikipedia {{em|does not}} attempt to emulate any stylistic flourishes used by the cited source's publisher, such as ALL-CAPS, all-lower-case, {{sm|Small Caps}}, etc.; use either standard title case or sentence case consistently. If the cited source is itself notable and has a Wikipedia article, the title can be wikilinked. Wikilinking the title will make it impossible to use the "url" parameter to link to an external copy of the cited source, so only do this when citing works that do not need to be externally linked. A link to the actual source is preferred to a link to a Wikipedia article about the source. * '''script-title''': Languages that do not use a Latin-based alphabet, Arabic, Chinese, Cyrillic, Greek, Hebrew, Japanese, Korean, etc., should not be italicized and may also read [[right-to-left]] (RTL). To include titles in these languages, use '''script-title'''. Titles in '''script-title''' are wrapped in special HTML markup to isolate RTL script from adjacent left-to-right text. Part of that special markup is a language attribute that browsers can use to assist in the proper display of the script. Editors must add a prefix to the script that will identify the language. The prefix is one of the [[Help:Citation Style 1#&#124;script-&lt;param>&#x3D; language codes|supported language codes]] followed by a colon: {{para|script-title|ar:<bdi>العربية</bdi>}}. Unrecognized codes are ignored and will display in the rendered citation. * '''trans-title''': If the cited source is in a foreign language, an English translation of the title can be given here. This field will be displayed in square brackets after the title and will be linked to {{para|url}} if used. * '''chapter''': The title of the cited chapter from the source, written in full. Displayed in quotes before the title. For websites arranged in sections the "at" parameter serves a similar function: {{para|at|Featured News}} * '''script-chapter''': Languages that do not use a Latin-based alphabet, Arabic, Chinese, Cyrillic, Greek, Hebrew, Japanese, Korean, etc., may possibly read [[right-to-left]] (RTL). To include chapter titles in these languages, use '''script-chapter'''. Chapter titles in '''script-chapter''' are wrapped in special HTML markup to isolate RTL script from adjacent left-to-right text. Part of that special markup is a language attribute that browsers can use to assist in the proper display of the script. Editors must add a prefix to the script that will identify the language. The prefix is one of the [[Help:Citation Style 1#&#124;script-&lt;param>&#x3D; language codes|supported language codes]] followed by a colon: {{para|script-chapter|ar:<bdi>العربية</bdi>}}. Unrecognized codes are ignored and will display in the rendered citation. This field will be displayed following the transliterated title. * '''trans-chapter''': If the cited source is in a foreign language, an English translation of the cited chapter title can be given here. This field will be displayed in square brackets within the quotation marks which enclose the chapter field. Titles containing certain characters will both display and link incorrectly unless those characters are replaced or encoded like this: {| class="wikitable" style="text-align:center;" |- !scope="col"| Character !scope="col"| Must be replaced with |- !scope="row"| newline | space |- !scope="row"| [ | &amp;#91; |- !scope="row"| ] | &amp;#93; |- !scope="row"| <nowiki>|</nowiki> | &amp;#124; |} ====|script-&lt;<var>param</var>>= language codes==== Language codes known to cs1|2 for languages that do not use a Latin script are: {{#invoke:Cs1 documentation support|script_lang_lister}}<!-- makes a language code: name list from the master list in [[Module:Citation/CS1/Configuration]] --> ===Type=== * '''type''': Specifies the type of work cited. Appears in parentheses immediately after the title. Some templates use a default that can be overridden; example: {{tl|cite press release}} will show "(Press release)" by default. Other useful values are: Review, Systemic review, Report, Abstract, Meta-analysis, Original article, Oral history<!-- supported as "Oral History" by Dublin Core/Zotero -->, Email<!-- supported by Dublin Core/Zotero -->, Website<!-- supported by Dublin Core/Zotero -->, Text<!-- supported by Dublin Core/Zotero -->, Document<!-- supported by Dublin Core/Zotero -->. Alias: '''medium''', in {{tl|cite AV media}}, where typical values are: Motion picture, Moving image<!-- supported as "Moving Image" by Dublin Core/Zotero -->, Television production, Videotape, DVD, Blu-ray, Trailer, CD, Radio broadcast, Podcast, Sound<!-- supported by Dublin Core/Zotero -->. ===Language=== {{csdoc|language}} ===Work and publisher=== {{see|WP:CITEHOW}} * '''work''': Used by some templates such as {{tl|cite web}} (where it is aliased to '''website'''), {{tl|cite news}} (aliased to '''newspaper'''), {{tl|cite magazine}} (aliased to '''magazine'''), {{tl|cite journal}} (aliased to '''journal'''), and others where the citation is usually to a specific item (given in the "title" parameter) found in a larger work (this "work" parameter), most commonly an article in a website or print periodical, or an episode in a TV series. {{em|Do not confuse this with the "publisher" parameter}}, which is for the publishing company. If the work is notable and has an article in Wikipedia, it should be wiki-linked at first appearance in citations in the article. If the "title" is already linked-to externally, do not externally link to the "work". If the work title as given by the site/publication would be exactly or substantially the same as the name of the publisher, do not use the "publisher" parameter (see below for more detail). :On websites, in most cases "work" is the name of the website (as usually given in the logo/banner area of the site, and/or appearing in the {{tag|title|o}} of the homepage, which may appear as the page title in your browser tab, depending on browser). Do not append ".com" or the like if the site's actual title does not include it (thus {{para|work|<nowiki>[[Salon (magazine)|Salon]]</nowiki>}}, not <code>Salon.com</code>). If no clear title can be identified, or the title explicitly is the domain name, then use the site's domain name. Do not falsify the work's name by adding descriptive verbiage like "Website of [Publisher]" or "[Publisher]'s Homepage". Capitalize for reading clarity, and omit "www.", e.g. convert "www.veterinaryresourcesuk.com" to "VeterinaryResourcesUK.com". :Many journals use highly abbreviated titles when citing other journals (e.g. ''J Am Vet Med'' for ''[[Journal of the American Veterinary Medical Association]]'') because specialists in the field the journal covers usually already know what these abbreviations mean. Our readers usually do not, so these abbreviations should always be expanded. :If the titled item being cited is part of some other larger work, as in a book in a series, a special issue of a periodical, or a sub-site at a domain (e.g., you are citing the law school's section of a university's website system), it is usually better to use the name of that more specific work than just that of the entire larger work. Various citation templates provide separate fields for such information, e.g. {{para|chapter}}{{para|title}}{{para|volume}}{{para|series}} in {{tlx|Cite book}}. If the nature of the work and its relation to the site, book, or other context in which it is found is complicated or confusing, simply explain the situation after the citation template and before the {{xtag|ref|c}} that closes the citation. * '''publisher''': the name of the organization that actually published the source. The field should not include the corporate designation such as "Ltd" or "Inc.", unless some ambiguity would result or the organization is usually known with that designation even in everyday use (e.g. [[Apple Inc.]], which otherwise might be confused with [[Apple Records]] and other publishers). "Publisher", "Publishing" and "Publications" can be abbreviated "Pubr.", "Pubg." and "Pubs." respectively, but some templates in this series include a period (full-stop) immediately after this parameter, so the period may have to be omitted; check the output if you abbreviate here. They are usually safe to omit, but are usefully included where the publisher's name might be confusing without it. This is most often the case when the publisher's name is something like "Joshua Martin Publications", which without the designation might be mistaken for a co-author/editor. A leading "The" can generally be omitted, again unless confusion might result (e.g., for [[The International Cat Association]], "The" is part of their official acronym, TICA). If the publisher is notable and has an article independent of the "work", the "publisher" parameter can include a wiki-link to that article, but should never externally link to the publisher's website. Whether the publisher needs to be included depends to an extent on the type of work and sometimes on its recognizability. [[WP:Citing sources]], and most off-Wikipedia citation guides, suggest that it should be used for books (even famous ones), but not necessarily other works. The "publisher" parameter should not be included for widely-known mainstream news sources, for major academic journals, or where it would be the same or mostly the same as the work. For example, the "publisher" parameter should be omitted in these examples: *:{{para|work|<nowiki>[[Amazon.&#8288;com]]</nowiki>}}{{para|publisher|Amazon Inc.|!mxt=y}} *:{{para|newspaper|The Aberdeen Times}}{{para|publisher|The Aberdeen Times|!mxt=y}}<!--A genuine Idaho newspaper: http://www.smalltownpapers.com/newspapers/newspaper.php?id=1 --> *:{{para|newspaper|<nowiki>[[The New York Times]]</nowiki>}}{{para|publisher|The New York Times Company|!mxt=y}} *:{{para|newspaper|<nowiki>[[USA Today]]</nowiki>}}{{para|publisher|<nowiki>[[Gannett Company]]</nowiki>|!mxt=y}} *:{{para|journal|<nowiki>[[Nature (journal)|Nature]]</nowiki>}}{{para|publisher|<nowiki>[[Nature Research]]</nowiki>|!mxt=y}} :If the work is self-published, [[WP:SELFPUB|this is a very important fact]] about [[WP:RS|potential reliability of the source]], and needs to be specified; no consensus exists for the exact value of {{para|publisher}} in such a case, but some printed style guides suggest "author", while many Wikipedia editors have used "self-published" for increased clarity. When an exhaustive attempt to discover the name of the publisher (try [[whois]] for websites, and [[WorldCat]] for books, etc.) fails, use {{para|publisher|<nowiki><!--Unspecified by source.--></nowiki>}} to explicitly indicate that this was checked, so other editors do not waste time duplicating your fruitless efforts. Do not guess at the publisher when this information is not clear. See next entry for co-published works and how to specify multiple publishers and their locations. * '''location''' (alias {{para|publication-place}}): Geographical place of publication ({{em|not}} where you found your copy, nor location of material in the source). This is usually {{var|City, Country}}, or {{var|City, US State}}. The city name by itself can be used for world-recognized cities like New York, London (except in articles about [[London, Ontario|Canadian]] topics), Paris, Tokyo. Simply having a unique name does not mean it is globally recognizable; e.g., many people do not know where [[Mumbai]] is, especially if they are old enough that it was called [[Bombay]] for much of their lives. If in doubt, be more not less specific, since "Toronto, Canada" and "San Francisco, California" do not actually hurt anything. Be more specific when a {{var|City, Country}} would be ambiguous, e.g. {{para|location|Hanley, Staffordshire, UK}}, versus {{para|location|Hanley, Worcestershire, UK}}. Do not use sub-national postal abbreviations ("DE", "Wilts", etc.), per [[MOS:POSTABBR]].{{disputed inline|Postal abbreviations}} The location parameter should be omitted when it is implied by the name of the work, e.g. ''The Sydney Morning Herald''. The location parameter should be used when the location is part of a common appellation of but not the actual title of a periodical. For example, the newspaper sometimes called the ''New York Daily News'' is actually [[Daily News (New York)|''Daily News'']] and can be entered with {{para|newspaper|Daily News}} {{para|location|New York}}, which yields: ''Daily News''. New York. A similar example is ''[[The Times]]'' of London (contrast ''[[The New York Times]]''). Per [[WP:SAYWHEREYOUGOTIT]], provide the location of the edition you are using (e.g., if a publisher has operations in both New York and London and you have the London-published edition, use {{para|location|London}}, even if the publisher's corporate HQ is in New York). If your edition specifically gives multiple locations, this can be indicated with, e.g., {{para|location|New York / London}}. This same technique can be used for co-published works, e.g.: {{para|location|Oakbrook Terrace, Illinois / Los Angeles}}{{para|publisher|<nowiki>[[Council of Science Editors]]</nowiki> / <nowiki>[[Loyola Marymount University]]</nowiki> Press}}; just get them in corresponding order in both parameters. The templates do {{em|not}} have separate {{para|location1|!mxt=y}}, {{para|publisher1|!mxt=y}}, etc., parameters. For historical publications that are still worth citing and still findable (e.g. via book digitizers – see the "via" parameter below), do not confuse the {{em|printer}} (printing press owner-operator) with the {{em|publisher}} (organization or person that sponsored the work); an edition may have a printer's name in larger type than the publisher, but for citation purposes we care about the publisher. If the distinction cannot be determined for certain in a particular case, list both. While some off-site publishers lean toward omitting publishing locations, they can serve more than purely bibliographical purposes on Wikipedia (e.g. an overabundance of material published in one place in an article about another place may reveal an editorial bias). * '''publication-date''': Date of publication when different from the date the work was written. Displays only if date or year are defined and only if different, else publication-date is used and displayed as date. Use the same format as other dates in the article; do not wikilink. Follows publisher; if work is not defined, then publication-date is preceded by "published" and enclosed in parenthesis. * '''via''' (optional): Name of the content deliverer (when they are {{em|not}} the publisher). "via" is not a replacement for "publisher", but provides additional detail. It may be used when the content deliverer presents the source in a format other than the original, or when the URL provided does not make clear the identity of the deliverer, or as suggested in [[WP:The Wikipedia Library]], e.g. [[WP:Credo accounts/Citations]]. See also {{section link||Registration or subscription required}}. Typical uses of this parameter are identification of a book-scanning and -databasing project such as those provided by the [[Internet Archive]], [[Project Gutenberg]], and [[Google Books]]; journal indexing and search services through which we commonly find academic articles, e.g. [[PubMed Central]], [[Paperity]], and [[JSTOR]]; and other aggregators or indexers of previously-published content, such as [[Dictionary.com]]. Use via only when a standard identifier cannot be used (see {{section link||Identifiers}}). Example: <code><nowiki>{{Cite dictionary |entry=skeptic |entry-url=https://www.dictionary.com/browse/skeptic?s=t#collins-section |title=[[Collins English Dictionary]] |edition=Complete & Unabridged Digital |date=2012 |location=London |publisher=[[HarperCollins]] |via=[[Dictionary.com]] |access-date=</nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}</nowiki></code> ===Pages=== {| class="wikitable plainrowheaders sortable" style="float:right; margin-left:1em;" |+CS1/CS2 template support for<br /><code>{{pipe}}volume=</code>, <code>{{pipe}}issue=</code>, <code>{{pipe}}page(s)=</code> |- !scope="col"| Template !scope="col"| {{pipe}}volume= !scope="col"| {{pipe}}issue= !scope="col"| {{pipe}}page(s)= !scope="col"| {{pipe}}quote-page(s)= |- !scope="row"| {{tlx|citation}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite arXiv}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite AV media}} | {{yes}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite AV media notes}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite bioRxiv}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite book}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite citeseerx}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{plainlist| *{{tlx|cite conference}} *(as a book)}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{plainlist| *{{tlx|cite conference}} *(as a journal)}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite encyclopedia}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite episode}} | {{no}} || {{yes}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite interview}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite journal}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite magazine}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite mailing list}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{plainlist| *{{tlx|cite map}} *(as book)}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{plainlist| *{{tlx|cite map}} *(as journal or magazine)}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite news}} | {{yes}} || {{yes}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite newsgroup}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite podcast}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite press release}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite report}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite serial}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite sign}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite speech}} | {{no}} || {{no}} || {{no}} || {{no}} |- !scope="row"| {{tlx|cite ssrn}} | {{no}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite tech report}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite thesis}} | {{yes}} || {{no}} || {{yes}} || {{yes}} |- !scope="row"| {{tlx|cite web}} | {{no}} || {{no}} || {{yes}} || {{yes}} |} An editor may use any <u>one</u> of the following parameters in a given citation to refer to the specific page(s) or place in a cited source that contains the information that supports the article text. If more than one of the following parameters are used in the same citation, the error message <span style="color:red">Extra <code>|pages=</code> or <code>|at=</code> (</span>[[Help:CS1 errors#extra pages|help]]<span style="color:red">)</span> will display in the published citation. When more than one of the following parameters is used in error, {{para|page}} overrides both {{para|pages}} and {{para|at}}; {{para|pages}} overrides {{para|at}}. To resolve the error, remove extra parameters of this type until only one remains in the affected citation. * '''page''': page in the cited source containing the information that supports the article text, for example {{para|page|52}}. **{{anchor|pagehyphen}}'''Note:''' For a hyphenated page, use {{para|page|<nowiki>12{{hyphen}}34</nowiki>}}. This will not only properly display a hyphen, but also reduce the likelihood that an editor/bot will convert this to {{para|pages|<nowiki>12{{endash}}34</nowiki>}} by mistake. * {{anchor|csdoc_pages<!-- for as long as we don't pull "pages" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_pages" -->}}'''pages''': pages in the cited source containing the information that supports the article text. Separate page ranges with an [[En dash#En dash|en dash]]: – , for example {{para|pages|236–239}}. Separate non-sequential pages either with commas or semicolons, for example {{para|pages|157, 159}}. The form {{para|pages|461, 466–467}} is used when you are citing both non-contiguous and sequential pages. For page numbers higher than 999, either do not use thousands separators or enclose the page number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators, e.g. {{para|pages|<nowiki>((1,234{{endash}}1,235))</nowiki>}}. For multiple hyphenated pages, use the [[Help:Citation Style 1#Accept-this-as-written markup|accept-this-as-written markup]] to avoid the hyphens being converted to dashes, e.g. {{para|pages|<nowiki>((1{{hyphen}}2)), ((3{{hyphen}}4))</nowiki>}}. **'''Note:''' CS1 citations do not record the total number of pages in a cited source; do not use this parameter for that purpose. * '''at''': place in the cited source containing the information that supports the article text when a page number is not given, is inappropriate or is insufficient. Common examples include column or col., paragraph or para. and section or sec. Depending on the source being cited, other indicators may be appropriate to use with the {{para|at}} parameter including, but not limited to, track, hours, minutes and seconds, act, scene, canto, book, part, folio, stanza, back cover, liner notes, indicia, colophon, dust jacket, etc. Examples include {{para|at|Column 2}} or {{para|at|Paragraph 5}} or {{para|at|Back cover}} or {{para|at|Act III, Scene 2}}. * <b>quote-page</b>: The number of a single page quoted in {{para|quote}}. Use either {{para|quote-page}} or {{para|quote-pages}}, but not both. Should be a subset of the page(s) specified in {{para|page}}, {{para|pages}} or {{para|at}}. Displays preceded by {{code|p.}} unless {{para|no-pp|yes}}. If hyphenated, use {{tl|hyphen}} to indicate this is intentional (e.g. {{para|quote-page|<nowiki>3{{hyphen}}12</nowiki>}}). Alias: none. * OR: <b>quote-pages</b>: A list or range of pages quoted in {{para|quote}}. Use either {{para|quote-page}} or {{para|quote-pages}}, but not both. Should be a subset of the pages specified in {{para|pages}} or {{para|at}}. Separate using an en dash (–); separate non-sequential pages with a comma (,). Displays preceded by {{code|pp.}} unless {{para|no-pp|yes}} is defined. Hyphens are automatically converted to en dashes; if hyphens are appropriate because individual page numbers contain hyphens, for example: pp. 3-1–3-15, use [[Help:Citation_Style_1#Accept-this-as-written_markup|double parentheses]] to tell the template to display the value of {{para|quote-pages}} without processing it, and use {{tl|hyphen}} to indicate to editors that a hyphen is really intended: {{para|quote-pages|<nowiki>((3{{hyphen}}1{{ndash}}3{{hyphen}}15))</nowiki>}}. Alias: none. If the same source is reused with different pages, separate citations must be created. A way around this problem is to use a short citation {{tlx|sfn}}, or {{tlx|rp}} to provide linked page number citations. ===Edition identifiers=== * '''edition''': Identifies the particular edition of a cited source when the source has more than one edition, such as "2nd", "Revised", etc. Note that this parameter automatically displays " ed." after your entry. For example, {{para|edition|Revised third}} displays as: Revised third ed. The edition parameter can be omitted if there is no content difference between two editions of the same work; e.g. if a book was identically published in the UK and the US except, for example, ISBN number and cover art, it is not necessary to indicate either "UK" or "US" edition; or if citing minute:seconds of a film available in both a regular edition and a "Special Limited Collector's Edition", if the running time and cut are the same, it is not necessary to cite the particular edition. * '''series''': When the source is part of a series, such as a book series or a journal where the issue numbering has restarted. For journal series, {{para|series}} should be limited to {{code|Original/New Series}}, {{code|First/Second/Third/... Series}}, or similar.{{refn|name="c17_14.126"|group="Note"|"Some numbered series have gone on so long that, as with certain long-lived journals, numbering has started over again, preceded by n.s. (new series), 2nd ser. (second series), or some similar notation, usually enclosed in commas. (A change of publisher may also be the occasion for a change in series designation.) Books in the old series may be identified by o.s., 1st ser., or whatever complements the notation for the new series."<ref>{{cite book |author=University of Chicago |title=The Chicago Manual of Style |edition=17th |year= 2017 |publisher=University of Chicago Press |page=14.126|location=Chicago |language= |isbn=978-0226104201}}</ref> <p>For instance the journal ''[[Physical Review]]'', was numbered volumes 1–35 from 1893 to 1912 (the first series). From 1913 to 1969, the volume numbering restarted at 1 and went up to 188 (the second series). In 1970, ''Physical Review'' split into different parts, ''Physical Review A'', ''Physical Review B'', ''Physical Review C'', and ''Physical Review D'', where volumes again restarted at 1 (the third series). Since there are two publications identified as ''Physical Review, Volume 1'', there is a need to distinguish which is which by use of {{para|series|First Series}} or {{para|series|Second Series}}. While ''Physical Review A'' is in the third series of the ''Physical Review'' [[media franchise]], it is the first series of the publication known as ''Physical Review A''. Since there is no confusion about what ''Physical Review A, Volume 1'' could be referring to, there is no need to clarify to which numbering series the journal belong.</p> <p>In particular, note that the {{para|series}} parameter is not to be used to distinguish the different parts of a [[media franchise]], like ''[[Physical Review A]]'', ''[[Acta Crystallographica Section A]]'', ''[[Journal of the Royal Statistical Society, Series B]]''.</p>}} * {{anchor|csdoc_volume<!-- for as long as we don't pull "volume" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_volume" -->}}'''volume''': For a source published in several volumes. This field is displayed in bold after the title and series parameters. An alternative is to include the volume information in the title parameter after the main title. Separate volume ranges with an [[En dash#En dash|en dash]]: – , for example {{para|volume|I–IV}}. Separate non-sequential volumes either with commas or semicolons, for example {{para|volume|I, III}}. The form {{para|volume|I, III–V}} is used when you are citing both non-contiguous and sequential volumes. For volume numbers higher than 999, either do not use thousands separators or enclose the volume number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators. * {{anchor|csdoc_issue<!-- for as long as we don't pull "journal" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_issue" -->}}'''issue''': When the source is part of a series that is published periodically. Alias: '''number'''. When the issue has a special title of its own, this may be given, in italics, along with the issue number, e.g. {{para|issue|2, <nowiki>''</nowiki>Modern Canadian Literature<nowiki>''</nowiki>}}. Please choose either {{para|issue}} or {{para|number}} depending on what nomenclature is actually used in a publication. If a publication carries both, issue and number designations (typically one being a year-relative and the other an absolute value), provide them both, for example {{para|issue|2 #143}}. Separate ranges with an [[En dash#En dash|en dash]]: – , and non-sequential numbers either with commas or semicolons. For numbers higher than 999, either do not use thousands separators or enclose the number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators. ===External links=== * '''url''': Adds a link to the title * '''chapter-url''': Adds a link to the chapter. * '''format''': Format of the document at its URL (e.g., PDF, XLS, etc.). Do not specify for HTML as it is implied as the default. Do not use this parameter for completely different purposes, with annotations such as "fee required" or "reprint"; its intent is to notify readers what the file format is (e.g. in case some browsers might have trouble with it, or some might prefer to save the link to disk rather than open it in the browser). Access restrictions can be shown using the appropriate {{para|url-access}} parameter, see [[#Registration or subscription required|Registration or subscription required]]. Other notes about reprintings, etc., should be placed after the template, and before {{tag|ref|c}}. ====Using |format= ==== When MediaWiki encounters an external link URL with a '.pdf' or '.PDF' [[filename extension|extension]], it renders the external link with a [https://example.com/document.pdf PDF icon] in place of the usual [https://example.com/document external-link icon]. To make rendered cs1|2 citations that link to PDF documents somewhat more accessible, cs1|2 automatically adds a parenthetical PDF annotation so that those readers using screen-reader technology can know the type of the linked file. This is imperfect because some on-line sources redirect .pdf URLs to .html landing pages (this is common for PDF documents behind paywalls or registration barriers). Because the parenthetical PDF annotation happens automatically, editors are not required to set {{para|format|PDF}}, though doing so causes no harm. The {{para|format|PDF}} parameter may be deleted as part of a more substantial edit but editors should consider that many cs1|2 templates are copied from en.Wikipedia to other-language Wikipedias when articles here are translated to that other language. Do not assume that other-language Wikipedias use up-to-date cs1|2 templates; many do not, so removing {{para|format|PDF}} here can affect readers/translators at other Wikipedias. ====Online sources==== {{main|Wikipedia:External links|Wikipedia:Citing sources}} Links to sources are regarded as conveniences and are not required, except when citing Web-only sources. There are many digital libraries with works that may be used as sources. * Links should be to full versions of the source. * Online sources that require payment or subscription may be included per [[Wikipedia:Verifiability]]. Do not link to: * Sites that do not have permission to republish the work or which otherwise violate copyright. * Commercial sites such as Amazon, unless no alternative exists. * Reviews of the work. * Very short extracts such as Google Books snippet view where there is not enough context to verify the content, unless the entire work is also freely available there. (See [[WP:BOOKLINKS]]) ====Link formats==== Links should be kept as simple as possible. For example, when performing a search for a Google Book, the link for ''Monty Python and Philosophy'' would look like: : https://books.google.com/books?id=NPDgD546-doC&pg=PP1#v=onepage&q&f=false But can be trimmed to: : https://books.google.com/?id=NPDgD546-doC&pg=PP1#v=onepage&q&f=false or: : https://books.google.com/?id=NPDgD546-doC&printsec=frontcover or: : https://books.google.com/?id=NPDgD546-doC (if Google Books does not provide the cover page). ====Pages==== A direct link to a specific page may be used if supported by the host. For example, the link to page 172 of ''Monty Python and Philosophy'' on Google Books: : https://books.google.com/?id=NPDgD546-doC&pg=PA172 like so: : <code><nowiki>|page=[https://books.google.com/?id=wPQelKFNA5MC&pg=PA172 172]</nowiki></code> ====Special characters==== {{MediaWiki URL rules}} ====Access date==== * '''access-date''': The full date when the content pointed to by '''url''' was last verified to support the text in the article; do not wikilink; requires '''url'''; use the same format as other access and archive dates in the article's citations. It is ''not required for linked documents that do not change.'' For example, '''access-date''' is not required for links to copies of published research papers accessed via DOI or a published book, but should be used for links to news articles on commercial websites (these can change from time to time, even if they are also published in a physical medium). Note that '''access-date''' is the date that the URL was checked to not just be working, but to support the assertion being cited (which the current version of the page may not do). Can be [[Help:Citation Style 1/accessdate|hidden or styled]] by registered editors. Alias: '''accessdate'''. ===Web archives=== {{see|Wikipedia:Link rot}} * '''archive-url'''. Alias: '''archiveurl'''. * '''archive-date'''. Alias: '''archivedate'''. The original link may become unavailable. When an archived version is located, the original URL is retained and {{para|archive-url}} is added with a link to an archived copy of a web page, usually from services like WebCite and the Internet Archive. {{para|archive-date}} must be added to show the date the page was archived, not the date the link was added. When {{para|archive-url}} is used, {{para|url}} and {{para|archive-date}} are required, else an error will show. When an archived link is used, the citation displays with the title linked to the archive and the original link at the end: {{cite book |title=Monty Python and Philosophy |url=https://books.google.com/books?id=wPQelKFNA5MC |archive-url=https://web.archive.org/web/20130501102912/http://books.google.com/books?id=wPQelKFNA5MC |archive-date=May 1, 2013}} * '''url-status''': To change the order with the title retaining the original link and the archive linked at the end, set {{para|url-status|live}}: :{{cite book|title=Monty Python and Philosophy |url=https://books.google.com/books?id=wPQelKFNA5MC |archive-url=https://web.archive.org/web/20130501102912/http://books.google.com/books?id=wPQelKFNA5MC |archive-date=May 1, 2013 |url-status=live}} When the original URL has been usurped for the purposes of spam, advertising, or is otherwise unsuitable, setting {{para|url-status|unfit}} or {{para|url-status|usurped}} suppresses display of the original URL (but {{para|url}} and {{para|archive-url}} are still required). ===Identifiers=== {{csdoc|id2}} A custom identifier can be specified through {{csdoc|id1}} ===Registration or subscription required=== {{csdoc|registration}} ===Quote=== {{csdoc|quote|unpaginated=yes}} ===Anchors=== The module creates HTML IDs by default suitable for use with [[WP:CITESHORT|shortened footnotes]] using the [[Template:Harvard citation documentation|Harv- and sfn-family templates]]. These styles use in-text cites with a link that will jump to the ID created by the CS1 template. The ID is created from up to four author last names and the year, of the format <code>CITEREF''lastname(s)year''</code>. '''{{para|ref|<var>ID</var>}}''': Creates a custom ID equivalent to the value <var>ID</var>. This is useful where the author and/or date is unknown. The {{tlx|harvid}} template may be used here to create an ID for the Harv- and sfn-family templates. {| class="wikitable plainrowheaders" |+ Examples of anchors |- !scope="col"| Kind !scope="col"| Wikitext !scope="col"| ID created !scope="col"| Targetable by |- !scope="row"| Default, one name | <code><nowiki>{{cite book |first=Gary L. |last=Hardcastle |title=Monty Python and Philosophy |date=2006}}</nowiki></code> | <code>CITEREFHardcastle2006</code> | {{tlx|harv|Hardcastle|2006|4=pp=12-34}} |- !scope="row"| Default, two names | <code><nowiki>{{cite book |first=Gary L. |last=Hardcastle |first2=George A. |last2=Reisch |title=Monty Python and Philosophy |date=2006}}</nowiki></code> | <code>CITEREFHardcastleReisch2006</code> | {{tlx|harv|Hardcastle|Reisch|2006|5=pp=12-34}} |- !scope="row"| {{para|ref}} using {{tl|harvid}} | <code><nowiki>|ref={{harvid|Monty Python and Philosophy|2006}}</nowiki></code> | <code>{{harvid|Monty Python and Philosophy|2006}}</code> | {{tlx|harv|Monty Python and Philosophy|2006|4=pp=12-34}} |} ===Display options=== These features are not often used, but can customize the display for use with other styles. {{csdoc|display|lua=yes}} ====et al.==== et al. is the abbreviation of the Latin {{lang|la|et alii}} ('and others'). It is used to complete a list of authors of a published work, where the complete list is considered overly long. The abbreviation is widely used in English, thus it is not italicized per [[MOS:FOREIGN]]. ===Accept-this-as-written markup=== There are occasions where [[Module:Citation/CS1]] emits error or maintenance messages because of, or makes changes to, the values assigned to a select set of parameters. Special markup can be used to enforce that a value will nonetheless be accepted as written. The markup for this is <code>(({{var|value}}))</code>, i.e., wrap the entire parameter value in two sets of parentheses. Parameters that support this markup are: {| class="wikitable plainrowheaders" |+ Parameters that support accept-this-as-written markup !scope="col"| Parameter !scope="col"| Notes |- !scope="row"| {{para|author{{var|n}}}} |rowspan="6"| The various {{var|name}} parameters (including their enumerated variants) are checked for extra comma and semicolon separator characters which may indicate that the parameter is holding more than one name. If so, the list of names should be split up over multiple {{var|n}}-enumerated parameters. Corporate names, however, are sometimes comma-separated lists of names as well and so are erroneously flagged as a multiple-name error; markup can be used to indicate this.<br /><br />Legitimate names may be caught by the [[Help:CS1_errors#generic_name|generic-name test]]. This markup can prevent legitimate names from being flagged as generic. |- !scope="row"| {{para|contributor{{var|n}}}} |- !scope="row"| {{para|editor{{var|n}}}} |- !scope="row"| {{para|interviewer{{var|n}}}} |- !scope="row"| {{para|subject{{var|n}}}} |- !scope="row"| {{para|translator{{var|n}}}} |- !scope="row"| [[#csdoc_doi|{{para|doi}}]] |rowspan="5"| Identifiers are checked for validity to the extent possible. In rare cases, identifiers actually used in published works deviate from the checked standard format but are nonetheless valid. If the problem is down to a mere typographical error in a third-party source, correct the identifier instead of overriding the error message. |- !scope="row"| [[#csdoc issue|{{para|eissn}}]] |- !scope="row"| [[#csdoc issue|{{para|isbn}}]] |- !scope="row"| [[#csdoc_issn|{{para|issn}}]] |- !scope="row"| [[#csdoc_sbn|{{para|sbn}}]] |- !scope="row"| [[#csdoc_issue|{{para|issue}}]] |rowspan="2"|Spaces are inserted between commas and succeeding characters in comma-separated lists of issues, a hyphen is converted to an ndash in issue ranges, etc. A hyphenated issue number and an issue range cannot be distinguished, nor can a four-or-more-digit number with a thousands-separator from a comma-separated list of two or more issues. Markup can be applied to the entry as a whole or to individual list entries. |- !scope="row"| [[#csdoc_issue|{{para|number}}]] |- !scope="row"| [[#csdoc_volume|{{para|volume}}]] | Spaces are inserted between commas and succeeding characters in comma-separated lists of volumes, a hyphen is converted to an ndash in volume ranges, etc. A hyphenated volume and an volume range cannot be distinguished, nor can a four-or-more-digit volume with a thousands-separator from a comma-separated list of two or more volumes. Markup can be applied to the entry as a whole or to individual list entries. |- !scope="row"| [[#csdoc_pages|{{para|pages}}]] |rowspan="3"| Spaces are inserted between commas and succeeding characters in comma-separated lists of pages, a hyphen is converted to an ndash in page ranges, etc. A hyphenated page number and a page range cannot be distinguished, nor can a four-or-more-digit number with a thousands-separator from a comma-separated list of two or more pages. Markup can be applied to the entry as a whole or to individual list entries; does not apply to {{para|page}}, {{para|p}}, or {{para|quote-page}}. (This special markup is also supported by the plural page parameters {{para|pages}}, {{para|pp}} and {{para|quote-pages}} (as well as other aliases) of the {{tl|r}}, {{tl|rp}} and {{tl|ran}} citation templates. The family of {{tl|sfn}}- and {{tl|harv}}-style templates supports it as well in conjunction with {{para|pages}} and {{para|pp}}.) |- !scope="row"| [[#csdoc_pages|{{para|pp}}]] |- !scope="row"| [[#Quote|{{para|quote-pages}}]] |- !scope="row"| {{para|title}} | Trailing dots are normally removed from the value assigned to {{para|title}} as being redundant. There are cases where trailing dots are not redundant but are part of the title proper so should be retained. <!-- At present, the following applies only to {{cite journal}}: -->The parameter may also accept a number of special keywords (<code>none</code>, etc.<!-- don't document "off" for now as it may change again with the next update -->) taking precedence over free text input to specify a title; if a value also matching a keyword is meant as actual title text, markup can be used to indicate this. |- !scope="row"| {{para|title-link}} | <!-- At present, the following applies only to {{cite journal}}: -->The parameter may also accept a number of special keywords (<code>none</code>, <code>doi</code>, <code>pmc</code>) taking precedence over free text input to specify a link target; if a value also matching a keyword is meant as actual link target, markup can be used to indicate this. |- !scope="row"| [[#Authors|{{para|vauthors}}]] |rowspan="2"| Markup to suppress error messages and automatic Vancouver reformatting of allowed corporate names. |- !scope="row"| [[#Editors|{{para|veditors}}]] |} ==Printing== When viewing the page, CS1 templates render the URL to the title to create a link; when printing, the URL is printed. [[Help:External link icons|External link icons]] are not printed. ==Elements not included== Not all factually accurate pieces of information about a source are used in a Citation Style 1 citation. Examples of information not included: * The total number of pages in a cited source * The name of the library that provided access to an electronic copy of a cited source * The name of the library that owns a physical copy of a cited work * The library record or shelf location of a physical copy of a cited work ==Tools== {{main|Help:Citation tools}} '''CS1 templates may be inserted manually or by use of tools:''' * [[Wikipedia:TWL/Citoid|Citoid]], a tool built into [[WP:Visual Editor|Visual Editor]] that attempts to build a full citation based on a URL. See [[Wikipedia:VisualEditor/User guide#Using Citoid|user guide]]. * [[Wikipedia:RefToolbar|RefToolbar]] is part of the editing tool bar. Version 2.0 does not yet support all templates supported by version 1.0. * [[User:ProveIt GT|ProveIt]] provides a graphical interface for editing, adding, and citing references. It may be enabled per the documentation. * [https://alyw234237.github.io/wiki-doi-gbooks-citation-maker/ Wikipedia DOI and Google Books Citation Maker] * [https://tools.wmflabs.org/dispenser/view/Reflinks Reflinks] Adds references to templates while updating/filling-in title/dates/publisher/accessdates etc. * [https://tools.wmflabs.org/refill/ reFill] open source version of Reflinks * [[Zotero]] can export citations in Wikipedia-ready format. * [http://tools.wmflabs.org/citer/ Citer] – generates shortened footnote or named reference for a given Google Books URL, ISBN, or DOI. Also supports some major news websites. '''{{anchor|Error checking}}Error checking [[Wikipedia:User scripts|scripts]]:''' * [[User:Svick/HarvErrors]] is a script that may be enabled to display errors when using [[WP:CITESHORT|Shortened footnotes]] or [[WP:PAREN|parenthetical referencing]]. It does not warn when a long citation has been added but not a short one (using {{tl|sfn}} or {{tl|harvnb}}). * [[User:Trappist the monk/HarvErrors]] is very similar, but also contains additional warnings for potential issues. * [[User:BrandonXLF/CitationStyleMarker]] highlights inconsistent (CS1 vs CS2) citation styles used in the same article. Only works with templated citations. '''{{anchor|Reliability}}Reliability scripts:''' * [[User:Headbomb/unreliable]] color codes URLs and DOIs in gray/red/pink/yellow depending on their broad reliability ==TemplateData== This section documents interactions between [[WP:TemplateData]] and tools which use that data to edit Wikipedia such as [[VisualEditor]] and bots. Before making changes to the TemplateData be aware of these interactions. ===[[User:InternetArchiveBot]]=== *If an argument is set to "required" the argument will be added to all templates edited by IABot. This including adding empty arguments. For example, when {{para|website}} is "required" IABot makes the following edit: [https://en.wikipedia.org/w/index.php?title=2017%E2%80%9318_British_and_Irish_Cup&diff=prev&oldid=914629379]. ==Common issues== {{shortcut|Help:CS1PROBS}} ; {{para|access-date}} does not show. : If {{para|url}} is not supplied, then {{para|access-date}} does not show; by design. ; The bare URL shows before the title. : If the {{para|title}} field includes a newline or an invalid character then the link will be malformed; see [[#Web links|Web links]]. ; The title appears in red. : If URL is supplied, then the title cannot be wikilinked. ; The URL is not linked and shows in brackets. : The URL must include the [[URI scheme]] in order for MediaWiki to recognize it as a link. For example: <code>www.example.org</code> vs. <code>http://www.example.org</code>. ; A field is truncated. : A pipe (<code>|</code>) in the value will truncate it. Use {{tlx|!}} instead. ; The template markup shows. : Double open brackets &#91;&#91; are used in a field without closing double brackets &#93;&#93;. ; The author shows in brackets with an external link icon. : The use of an URL in {{para|author-link}} will break the link; this field is for the name of the Wikipedia article about the author, not a website. ; Multiple author or editor names are defined and one or more does not show : The parameters must be used in sequence, i.e. if {{para|last}} or {{para|last1}} is not defined, then {{para|last2}} will not show. By design. ; {{para|page}}, {{para|pages}} or {{para|at}} do not show. : These parameters are mutually exclusive, and only one will show; by design. == See also == * [[Help:Citation Style 2]] * [[Help:CS1 errors]] ==Notes== {{reflist|group="Note"}} ==References== {{reflist}} {{Wikipedia referencing}} {{Citation Style 1}} {{Help navigation}} [[Category:Citation Style 1 templates|*]] [[Category:Wikipedia citation administration]] 163131d4cbdf81900cb0d4974c4b0d845e7b20b7 Template:Use dmy dates/doc 10 866 1921 1920 2023-10-01T10:40:21Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Use_dmy_dates/doc]] wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{high use |no-percent=yes}} {{Template shortcut|dmy|DMY}} === Usage === To promote consistent date formatting, place this template with other maintenance tags near the top of articles that use the <code>d&nbsp;mmmm&nbsp;yyyy</code> [[date format]] (below hatnotes, but above infoboxes, as per the [[Wikipedia:Manual of Style/Lead section#Elements|Manual of Style]]). Use the parameter <code>|date=</code> for the month and year that an editor or [[WP:bot|bot]] last checked the article for inconsistent date formatting and fixed any found. Wikipedia articles that use <code>d&nbsp;mmmm&nbsp;yyyy</code> dates, either because of the [[MOS:DATERET|first main contributor]] rule or [[WP:TIES|close national ties]] (see [[Wikipedia:MOSNUM|MOSNUM]]), are systematically tagged with {{Tl|Use dmy dates}} over time. The template is invisible except in edit mode. The template is useful to the editors to quickly know which date format is to be used when adding new dates into an article. It also facilitates article maintenance by enabling [[WP:bots|bots]] to recognise use of this format, and by adding the article to the [[WP:hidden category|hidden category]] [[:Category:Use dmy dates|Use dmy dates]]. '''Use of this template is part of a continuing effort to monitor the date formats used in articles, to assist in maintaining consistent formatting within an article. It is ''not'' a temporary "cleanup" template. Therefore, do not remove the template without valid reason, such as a determination the article uses or should use a different date format.''' After being tagged, and bearing in mind article evolution, periodic script or bot runs clean up formats, correcting any new introductions since its last visit, and '''updating the visit date''' on the {{Tl|Use dmy dates}} template. The dmy and mdy templates have almost always been used to indicate date styles in the body of the articles; although it ''may'' also indicate the flavour of dates in reference sections or parts thereof. Therefore, this template notice ought to be read in conjunction with the blurb at [[Wikipedia:Date formattings]]. [[User:Ohconfucius/script/MOSNUM dates|MOSNUM script documentation]] may also be relevant to those interested. When a citation style does not expect differing date formats, it is permissible to normalize publication dates to the article body text date format, and access/archive dates to either, with date consistency being preferred (see [[MOS:DATEUNIFY]]). This template is intended for use in articles. It can be used on a template page in order to format citation dates on the template page itself, but it must be enclosed in {{tag|noinclude}} tags so that it is not transcluded into articles or other pages. ===Auto-formatting citation template dates=== [[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|2]] (collectively cs1|2) templates automatically render dates ({{para|date}}, {{para|access-date}}, {{para|archive-date}}, etc) in the style specified by this template. Because it is allowed by [[WP:MOSDATES]], the cs1|2 templates can automatically format dates in a variety of styles. Editors may choose how cs1|2 templates render dates by the use of {{para|cs1-dates|&lt;{{var|keyword}}>}}. {{#lst:Help:Citation Style 1|auto_date_format_table}} An example is given at {{section link|Help:Citation Style 1#Auto-formatting citation template dates}}. <!-- An example cannot be given here because [[Module:Citation/CS1/Configuration]] gets the template's page name when this documentation page is transcluded. That means that the module reads the template code but does not read the template documentation. --> {{lang|la|Nota bene}}: cs1|2 auto-date formatting does not apply when previewing an article section that does not contain a {{tld|use xxx dates}} template. When editing with the visual editor, changes to this template do not take effect until the page is saved. === Syntax === {{Tlx|Use dmy dates|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=}} '''Notes''': * The template should be inserted in one of the first few lines of code of an article (to improve performance). * Do not use redirects of this template, because otherwise its presence in an article may not be recognized by date formatting templates and bots. (There are a number of "legacy redirects" which are still supported at least by CS1/CS2 citation templates, but they should be changed to direct invocations of this template, also for performance reasons.) === TemplateData === {{TemplateData header}} <templatedata> { "format": "inline", "description": "This template should be placed near the top of articles that use the d mmmm yyyy date format.", "params": { "date": { "label": "Month and year", "description": "The month and year that the template was placed or the article was last checked or cleaned (in full). \"{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}\" inserts the current month and year automatically.", "type": "string", "autovalue": "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}", "example": "April 2022", "suggested": true }, "cs1-dates": { "description": "How dates should be formatted in CS1 citations", "suggestedvalues": [ "l", "ll", "ls", "ly", "s", "ss", "sy", "y", "yy" ] } } } </templatedata> === Wrongly tagged? === If, for example, you determine that an article has a template that is inappropriate for [[WP:TIES|its nationality]], you should replace it with the appropriate template to avoid scripts or bots reapplying the "wrong" format in the course of maintenance. === Maintenance category === * {{category link with count|Pages using Use dmy dates template with unknown parameters}} === See also === * {{Tl|Use mdy dates}}, for the <code>mmmm&nbsp;d,&nbsp;yyyy</code> format * {{tl|Date}}, which can alter the format of an inputted date <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Templates with no visible output]] [[Category:Time and date maintenance templates]] [[Category:Templates that add a tracking category]] }}</includeonly> 485b538ed8b955718e17cb6b05ad2cec1af2a6a1 Template:Dated maintenance category (articles) 10 867 1923 1922 2023-10-01T10:40:22Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Dated_maintenance_category_(articles)]] wikitext text/x-wiki {{Dated maintenance category |onlyarticles=yes |1={{{1|}}} |2={{{2|}}} |3={{{3|}}} |4={{{4|}}} |5={{{5|}}} }}<noinclude> {{documentation|Template:Dated maintenance category/doc}} </noinclude> 6bbc57c75cc28708a0e71dd658224d5945d80d68 Template:Portal 10 868 1925 1924 2023-10-01T10:40:51Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Portal]] wikitext text/x-wiki <includeonly>{{#invoke:Portal|portal}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata --> </noinclude> 7efcc8b88b0b619f32db09d73f4574b044b6bf29 Module:Portal/styles.css 828 869 1927 1926 2023-10-01T10:40:56Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Portal/styles.css]] sanitized-css text/css /* {{pp-template}} */ .portalbox { padding: 0; /* Timeless adds padding */ margin: 0.5em 0; display: table; box-sizing: border-box; max-width: 175px; list-style: none; } .portalborder { border: solid #aaa 1px; padding: 0.1em; background: #f9f9f9; } .portalbox-entry { display: table-row; font-size: 85%; line-height: 110%; height: 1.9em; /* sets min height */ font-style: italic; font-weight: bold; } .portalbox-image { display: table-cell; padding: 0.2em; vertical-align: middle; text-align: center; } .portalbox-link { display: table-cell; padding: 0.2em 0.2em 0.2em 0.3em; vertical-align: middle; } @media (min-width: 720px) { .portalleft { clear: left; float: left; margin: 0.5em 1em 0.5em 0 } .portalright { clear: right; float: right; margin: 0.5em 0 0.5em 1em } } 067e70fa96d875eaf837d6db94c6d16281c088b6 Module:Portal/images/h 828 870 1929 1928 2023-10-01T10:40:57Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Portal/images/h]] Scribunto text/plain --[==[ This is the "H" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "H". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be omitted. ]==] return { ["haiti"] = "Flag of Haiti.svg|border|link=|alt=flag", ["hamburg"] = "Flag of Hamburg.svg|border|link=|alt=flag", ["hampshire"] = "EnglandHampshire.svg|link=|alt=", ["haryana"] = "YamunaRiver.jpg|alt=icon", ["harz"] = "DennertFirTree.svg|alt=icon", ["hawaii"] = "Flag of Hawaii.svg|border|link=|alt=flag", ["help"] = "Wikipedia help.png|alt=icon", ["heraldry"] = "Azure, a bend Or.svg|link=|alt=", ["heraldry and vexillology"] = "En-wikipedia arms 9.svg|alt=icon", ["hertfordshire"] = "Hertsflag.jpg|link=|alt=", ["himachal pradesh"] = "Kinnaur Kailash.jpg|link=|alt=", ["hillary clinton"] = "Hillary Rodham Clinton.jpg|link=|alt=", ["hindi cinema"] = "Indiafilm.svg|alt=icon", ["hinduism"] = "Aum Om red.svg|link=|alt=", ["hindustani"] = "Hindustani.svg|link=|alt=script", ["hip hop"] = "Loudspeaker-crystal-theme.svg|alt=icon", ["hisar"] = "Fort of Firoz Shah Tughlaq at Hisar.jpg|link=|alt=photo", ["hispanic and latino americans"] = "Flag of the Hispanicity.svg|link=|alt=icon", ["history"] = "P history.svg|link=|alt=", ["history of science"] = "Newton's reflecting telescope.jpg|link=|alt=image", ["history of the latter day saint movement"] = "Joseph Smith receiving golden plates.jpg|border|link=|alt=", ["hitchhiker's"] = "Answer to Life.png|link=|alt=icon", ["hitchhiker's guide to the galaxy"] = "Answer to Life.png|link=|alt=icon", ["holidays"] = "Calendar icon.svg|alt=icon", ["holy roman empire"] = "Reichskrone.jpg|link=|alt=image", ["honduras"] = "Flag of Honduras.svg|border|link=|alt=flag", ["hong kong"] = "Flag of Hong Kong.svg|border|link=|alt=flag", ["horror fiction"] = "Vampire Smiley.png|alt=icon", ["horses"] = "Finnhorse stallion.jpg|alt=icon", ["hotels"] = "Map Icon - Hotel.png|link=|alt=", ["housing"] = "Big single-family home 2.jpg|link=|alt=", ["hudson valley"] = "Hudson river from bear mountain bridge.jpg|alt=icon", ["human–computer interaction"] = "Mouse icon vector.png|link=|alt=icon", ["human rights"] = "HumanRightsLogo.svg|link=|alt=", ["human sexuality"] = "Bisexuality symbol (bold, color).svg|alt=icon", ["hungary"] = "Flag of Hungary.svg|border|link=|alt=flag", ["hyderabad"] = "Charminar Hyderabad 1.jpg|alt=icon", } 78dcf7d45caaedc14a5dc36ef2370fa0e910f229 Template:Navbox 10 205 1931 465 2023-10-01T10:41:01Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Navbox]] wikitext text/x-wiki <includeonly>{{#invoke:Navbox|navbox}}</includeonly><noinclude> {{Documentation}} </noinclude> fe9b964401f895918ee4fe078678f1722a3c41ec Module:Portal/images/c 828 871 1933 1932 2023-10-01T10:41:05Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Portal/images/c]] Scribunto text/plain --[==[ This is the "C" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "C". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/g]] - for portal names beginning with "G". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be -- omitted. ]==] local ambox_globe = "Ambox globe.svg" local hour=tonumber(os.date("%k")) if hour >= 22 or hour < 6 then ambox_globe = "Ambox globe Asia Australia.svg" else if hour >= 14 and hour < 22 then ambox_globe = "Ambox globe Americas.svg" end end return { ["cabo verde"] = "Flag of Cape Verde.svg|border|link=|alt=flag", ["california"] = "Flag of California.svg|border|link=|alt=flag", ["california delta"] = "California SD-03 (2011).svg|link=|alt=map", ["california roads"] = "California 1.svg|link=|alt=sign", ["california state university"] = "Flag of California.svg|border|link=|alt=flag", ["calvinism"] = "Kreuz-hugenotten.svg|alt=icon", ["cambodia"] = "Flag of Cambodia.svg|border|link=|alt=flag", ["cameroon"] = "Flag of Cameroon.svg|border|link=|alt=flag", ["canada"] = "Maple Leaf (from roundel).svg|link=|alt=flag", ["canadian communities"] = "Map Canada political-geo.png|link=|alt=", ["canadian football"] = "Canadian football.png|alt=icon", ["canadian law"] = "Supreme Court of Canada.jpg|link=|alt=", ["canadian territories"] = "Northern Canada.svg|alt=icon", ["canary islands"] = "Flag of the Canary Islands.svg|border|link=|alt=flag", ["cannabis"] = "Cannabis leaf.svg|alt=icon", ["cape cod and the islands"] = "Nobska Lighthouse 1.jpg|alt=icon", ["cape verde"] = "Flag of Cape Verde.svg|border|link=|alt=flag", ["capital district"] = "Empire State Plaza symbol 2.svg|link=|alt=", ["capitalism"] = "Capitalismlogo.svg|alt=icon", ["caribbean"] = "Relief Map of Caribbean.png|link=|alt=map", ["caribbean community"] = "Flag of CARICOM.svg|border|link=|alt=flag", ["cars"] = "Sportcar sergio luiz ara 01.svg|link=|alt=", ["cartoon network"] = "Cartoon Network.svg|border|link=|alt=", ["cartoon"] = "Mad scientist.svg|alt=icon", ["catalan-speaking countries"] = "Siñal d'Aragón.svg|border|alt=icon", ["catholic church"] = "046CupolaSPietro.jpg|border|alt=icon", ["cats"] = "Cat03.jpg|alt=icon", ["cayman islands"] = "Flag of the Cayman Islands.svg|border|link=|alt=flag", ["central african republic"] = "Flag of the Central African Republic.svg|border|link=|alt=flag", ["central america"] = "Age of Consent - Central America.svg|alt=icon", ["central asia"] = "Central Asian Games participating countries.PNG|alt=icon", ["cetaceans"] = "Sperm whale fluke.jpg|link=|alt=", ["chad"] = "Flag of Chad.svg|border|link=|alt=flag", ["chandigarh"] = "Gandhi Bhawan at Punjab University.jpg|alt=icon", ["channel islands"] = "Flag of Sark.svg|border|link=|alt=flag", ["chemistry"] = "Papapishu-Lab-icon-6.svg|link=|alt=", ["chennai"] = "Chennai High Court 1200x800.jpg|alt=icon", ["cheshire"] = "Cheshire Flag.svg|border|alt=icon", ["chess"] = "Chess.svg|alt=icon", ["chhattisgarh"] = "India Chhattisgarh locator map.svg|border|link=|alt=map", ["chicago"] = "Seal of Chicago, Illinois.svg|link=|alt=", ["children's literature"] = "Tom Sawyer 1876 frontispiece.jpg|link=|alt=", ["chile"] = "Flag of Chile.svg|border|link=|alt=flag", ["china"] = "Flag of the People's Republic of China.svg|border|link=|alt=flag", ["christianity"] = "P christianity.svg|alt=icon", ["christianity in india"] = "India with cross.svg|alt=icon", ["christmas"] = "Xmas tree.svg|link=|alt=", ["christmas island"] = "Flag of Christmas Island.svg|link=|alt=flag", ["civilizations"] = "Lascar Avenue of the Dead and the Pyramid of the Sun in the background (4566574277).jpg|border|link=|alt=", ["civil rights movement"] = "Logo SNCC.svg|link=WP:ACRM|alt=", ["cities"] = "COL-city icon.png|link=|alt=", ["clans of scotland"] = "Scottish clan map.png|link=|alt=map", ["classical music"] = "Audio a.svg|link=|alt=", ["classical tamil"] = "Word_Tamil.svg|link=|alt=word", ["climate"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=icon", ["climate change"] = "Climate change icon.png|link=|alt=icon", ["climbing"] = "Pictograms-nps-land-technical_rock_climbing.svg|link=|alt=icon", ["clothing"] = "Emojione 1F458.svg|alt=icon", ["cocos (keeling) islands"] = "Flag of the Cocos (Keeling) Islands.svg|border|link=|alt=flag", ["coffee"] = "Emblem-relax.svg|alt=icon", ["college basketball"] = "Basketball.png|link=|alt=", ["college football"] = "NCAAFootball transparent.png|alt=icon", ["colombia"] = "Flag of Colombia.svg|border|link=|alt=flag", ["colorado"] = "Flag of Colorado.svg|border|link=|alt=flag", ["comedy"] = "SMirC-laugh.svg|alt=icon", ["comics"] = "Wikipetan-manga.png|alt=icon", ["communism"] = "Symbol-hammer-and-sickle.svg|link=|alt=", ["community"] = "P globe blue.png|alt=icon", ["comoros"] = "Flag of the Comoros.svg|border|link=|alt=flag", ["companies"] = "Industry5.svg|link=|alt=", ["computer programming"] = "Octicons-terminal.svg|alt=icon", ["computer science"] = "Internet map 1024.jpg|alt=icon", ["connecticut"] = "Flag of Connecticut.svg|border|link=|alt=flag", ["conservatism"] = "DodgerBlue flag waving.svg|link=|alt=", ["constructed languages"] = "Design conlang.png|alt=icon", ["contents"] = "Wikipedia's W.svg|link=|alt=", ["contents/indexes"] = "Pointing-right.svg|link=|alt=icon", ["contents/lists"] = "Liste.svg|link=|alt=icon", ["contents/outlines"] = "Pointing-left.svg|link=|alt=icon", ["cooking"] = "One chef's hat.png|link=|alt=", ["cook islands"] = "Flag of the Cook Islands.svg|border|link=|alt=flag", ["cornwall"] = "Flag of Cornwall.svg|border|link=|alt=flag", ["coronavirus disease 2019"] = "SARS-CoV-2 (Wikimedia colors).svg|alt=virus icon", ["cosmology"] = "Ilc 9yr moll4096.png|link=|alt=", ["costa rica"] = "Flag of Costa Rica.svg|border|link=|alt=flag", ["côte d'ivoire"] = "Flag of Côte d'Ivoire.svg|border|link=|alt=flag", ["countries"] = "P countries-vector.svg|alt=icon", ["county kilkenny"] = "County Kilkenny arms.svg|alt=coat of arms", ["covid-19"] = "SARS-CoV-2 (Wikimedia colors).svg|alt=virus icon", ["cretaceous"] = "Shantungosaurus-v4.jpg|alt=", ["cricket"] = "Cricketball.png|link=|alt=", ["criminal justice"] = "Scale of justice 2.svg|link=|alt=", ["croatia"] = "Flag of Croatia.svg|border|link=|alt=flag", ["crustaceans"] = "Charybdis japonica.jpg|alt=icon", ["cuba"] = "Flag of Cuba.svg|border|link=|alt=flag", ["cumbria"] = "Herdwick sheep crop.jpg|alt=icon", ["curaçao"] = "Flag of Curaçao.svg|border|link=|alt=flag", ["cue sports"] = "Eight Ball Rack 2005 SeanMcClean.jpg|link=|alt=", ["current events"] = ambox_globe .. "|link=|alt=", ["current events/turkey"] = "Wikinews-logo.png|link=|alt=", ["cyprus"] = "Flag of Cyprus.svg|border|link=|alt=flag", ["czech republic"] = "Flag of the Czech Republic.svg|border|link=|alt=flag", ["czechia"] = "Flag of the Czech Republic.svg|border|link=|alt=flag", } 12569afcf6d5bfd01b853e6f6bca13f71c151050 Template:Blockquote 10 872 1935 1934 2023-10-01T10:41:06Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Blockquote]] wikitext text/x-wiki <templatestyles src="Template:Blockquote/styles.css" /><!-- --><blockquote class="templatequote {{{class|}}}" {{#if:{{{style|}}}|style="{{{style}}}"}}>{{{text|{{{content|{{{quotetext|{{{quote|{{{1|<includeonly>{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}{{main other|[[Category:Pages incorrectly using the quote template]]}}</includeonly><noinclude>{{lorem ipsum}}</noinclude>}}}}}}}}}}}}}}}{{#if:{{{sign|}}}{{{cite|}}}{{{author|}}}{{{by|}}}{{{personquoted|}}}{{{source|}}}{{{ts|}}}{{{title|}}}{{{publication|}}}{{{quotesource|}}}{{{char|}}}{{{character|}}}{{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}|{{#if:{{{multiline|}}}|<nowiki />}} <div class="templatequotecite">—&#8202;<cite>{{#if:{{{char|{{{character|{{{5|}}}}}}}}}|{{{char|{{{character|{{{5|}}}}}}}}}, in&#32;}}{{Comma separated entries | {{if empty|{{{sign|}}}|{{{cite|}}}|{{{author|}}}|{{{by|}}}|{{{personquoted|}}}|{{{2|}}}}} | {{if empty|{{{title|}}}|{{{publication|}}}|{{{ts|}}}|{{{quotesource|}}}|{{{3|}}}}} | {{if empty|{{{source|}}}|{{{4|}}}}} }}</cite></div> }}</blockquote>{{#if:{{{id|}}}{{{diff|}}}{{{4|}}}{{{5|}}}|{{main other|[[Category:Pages incorrectly using the Blockquote template]]}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Blockquote template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Blockquote]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | author | by | char | character | cite | class | content | diff | id | multiline | personquoted | publication | quote | quotesource | quotetext | sign | source | style | text | title | ts }}<noinclude> {{documentation}}<!-- Add categories to the /doc subpage, not here! --> </noinclude> c632821e7bef1789e3468f7b0c68e29a93f72a62 Template:Blockquote/styles.css 10 873 1937 1936 2023-10-01T10:41:07Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Blockquote/styles.css]] sanitized-css text/css /* {{pp-template}} */ .templatequote { overflow: hidden; margin: 1em 0; padding: 0 40px; } .templatequote .templatequotecite { line-height: 1.5em; /* @noflip */ text-align: left; /* @noflip */ padding-left: 1.6em; margin-top: 0; } 2f501be7e53e631123db261484f3ef52d1d0e909 Template:Navbar 10 874 1939 1938 2023-10-01T10:41:09Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Navbar]] wikitext text/x-wiki <includeonly>{{#invoke:Navbar|navbar}}</includeonly><noinclude> {{documentation}} </noinclude> 868e3566b7e8a9a5a7f3dac75cac429c47de10d3 Template:Quotation 10 875 1941 1940 2023-10-01T10:41:10Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Quotation]] wikitext text/x-wiki #REDIRECT [[Template:Blockquote]] 945d9b4f4764cef422ae81b16bb6713645f92824 Template:Purge page 10 876 1943 1942 2023-10-01T10:41:15Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Purge_page]] wikitext text/x-wiki <i class="noprint">[[Special:Purge/{{FULLPAGENAME}}|<small {{#if:{{{color|}}}|style="color:{{{color}}}"}}>{{{1|Purge server cache}}}</small>]]</i><noinclude>{{Documentation}}</noinclude> 2b1975cb149a2921ef0b42dc0a85a8d2b12e9fde Template:Portal templates navbox 10 877 1945 1944 2023-10-01T10:41:17Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Portal_templates_navbox]] wikitext text/x-wiki {{Navbox | name = Portal templates navbox | title = [[Wikipedia:Portal|Portal]] templates | listclass = hlist | state = {{{state|}}} | image = [[File:Portal.svg|50px]] | above = '''[[Wikipedia:WikiProject Portals/Components|Visual overview of template usage]]''' | group1 = Layout and formatting | list1 = * {{tl|Box portal skeleton}} * {{tl|Box-header}} ** [[Template:Box-header#Box-header_color_palettes|color palettes]] ** [[Template:Box-header-plain|plain]] ** [[Template:Box-header-round|round]] ** [[Template:Box-header-square|square]] ** [[Template:Box-header-watch|watch]] *{{tl|Box-header colour}}<sup>1</sup> *{{tl|Box-footer}} *{{tl|Flex columns}} *{{tl|Plain navboxes}} | group2 = Content transclusion | list2 = * {{tl|Transclude lead excerpt}}<sup>2</sup> * {{tl|Transclude linked excerpt}}<sup>2</sup> * {{tl|Transclude list item excerpt}}<sup>2</sup> * {{tl|Transclude random excerpt}}<sup>2</sup> * {{tl|Transclude selected excerpt}}<sup>2</sup> * {{tl|Excerpt}} * {{tl|Transclude DYK}}<sup>9</sup> * {{tl|Transclude selected current events}}<sup>3</sup> * {{tl|Transclude selected recent additions}}<sup>4</sup> | group3 = Content slideshows | list3 = * {{tl|Random slideshow}}<sup>5</sup> * {{tl|Transclude files as random slideshow}}<sup>5</sup> * {{tl|Transclude excerpts as random slideshow}}<sup>6</sup> * {{tl|Transclude linked excerpts as random slideshow}}<sup>6</sup> * {{tl|Transclude list item excerpts as random slideshow}}<sup>6</sup> | group4 = Content randomisation | list4 = * {{tl|Random portal component}}<sup>7</sup> * {{tl|Random quotation}} * {{tl|Random subpage}} | group5 = General | list5 = * {{tl|Portals}} * {{tl|Portals browsebar}} * {{tl|Portal description}} * {{tl|Portal information sidebar}} * {{tl|Portal navbar no header2}} * {{tl|Purge link portals}} * {{tl|Wikimedia for portals}} | group6 = Linking templates | list6 = * {{tl|Portal}} * {{tl|Portal bar}} * {{tl|Portal-inline}}<sup>11</sup> * {{tl|Pbox}} * {{tl|Related portals2}} | group7 = Talk pages / Maintenance | list7 = * {{tl|Portal talk}} * {{tl|Portal maintenance status}}<sup>8</sup> * {{tl|Portal suggestions}} * {{tl|Portal toolbox}} * {{tl|WikiProject Portals}}<sup>8</sup> | group8 = Images | list8= * {{tl|Portal dynamic image}} * {{tl|Portal image banner}}<sup>10</sup> * {{tl|Portal pictures}}<sup>12</sup> * {{tl|Portal POTD}} | group9 = Modules | list9 = * <sup>1</sup>&thinsp;[[Module:Box-header]] * <sup>2</sup>&thinsp;[[Module:Excerpt/portals]] * <sup>3</sup>&thinsp;[[Module:Selected current events]] * <sup>4</sup>&thinsp;[[Module:Selected recent additions]] * <sup>5</sup>&thinsp;[[Module:Random slideshow]] * <sup>6</sup>&thinsp;[[Module:Excerpt slideshow]] * <sup>7</sup>&thinsp;[[Module:Random portal component]] * <sup>8</sup>&thinsp;[[Module:Portal maintenance status]] * <sup>9</sup>&thinsp;[[Module:Transclude DYK]] * <sup>10</sup>&thinsp;[[Module:Portal image banner]] * <sup>11</sup>&thinsp;[[Module:Portal-inline]] * <sup>12</sup>&thinsp;[[Module:Portal pictures]] | group10 = Usage | list10 = * [[Wikipedia:Portal]] * [[Wikipedia:WikiProject Portals]] | below = ''For more information, see: {{cl|Template-Class Portal pages}} and {{cl|Wikipedia Portal templates}}'' }}<noinclude> {{documentation|content={{Collapsible option}} [[Category:Wikipedia Portal templates| ]] [[Category:Documentation see also templates]] }}</noinclude> ce81e0e88e4b3ebef2ae1365a5dd97095f35e9f9 Template:Portal template list 10 878 1947 1946 2023-10-01T10:41:18Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Portal_template_list]] wikitext text/x-wiki {{navbar|Portal template list|style=float:right}} '''Portal content templates''' * To display "selected content" on the portal main page ** {{tl|Transclude list item excerpts as random slideshow}}—transcludes excerpts from [[WP:RECOG|recognized content lists]], which are populated by a bot. ** {{tl|Transclude random subpage}}—transcludes random portal subpage. ** {{tl|Random portal component}}—transcludes random portal subpage. ** {{tl|Random subpage}}—transcludes random portal subpages. ** {{tl|Portal pictures}}—transcludes a slideshow of pictures, utilizing a single-page gallery. * To organize "selected content" on subpages ** {{tl|Numbered subpages}}—outputs an automatic index, transcluding numbered subpages. ** {{tl|Portal subpage}}—outputs a box linking to and transcluding a single subpage. ** {{tl|Portal subpage inline}}—outputs an unordered list item linking to and transcluding a single subpage. '''Main portal page formatting templates''' {{Div col|colwidth=20em}} * {{tl|Box-header}} * {{tl|Box-header-plain}} * {{tl|Box-header-round}} * {{tl|Box-header-square}} * {{tl|Box-header-watch}} * {{tl|Box-footer}} {{Div col end}} '''Templates that configure links''' {{Div col|colwidth=20em}} * {{tl|Portal}} * {{tl|Portal bar}} * {{tl|Portal-inline}} * {{tl|Pbox}} * {{tl|Portals}} * {{tl|Portals browsebar}} * {{tl|Related portals}} * {{tl|Wikimedia for portals}} {{Div col end}} '''Selected page templates, used on subpages of older portals''' {{Div col|colwidth=20em}} * {{tl|Selected article}} * {{tl|Selected biography}} * {{tl|Selected business}} * {{tl|Selected DYK}} * {{tl|Selected ingredient}} * {{tl|Selected location}} * {{tl|Selected picture}} * {{tl|Selected product}} * {{tl|Selected publication}} * {{tl|Selected quote}} * {{tl|Selected recipe}} * {{tl|Selected X}} {{Div col end}} '''Related templates''' * {{tl|Project template list}} {{Portal templates navbox}}<noinclude> [[Category:Wikipedia Portal templates| ]] [[Category:Documentation see also templates]] </noinclude> fc2451e4103312ad0baf2194d4436a1ad71a7dbe Template:Portal/doc 10 879 1949 1948 2023-10-01T10:41:20Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Portal/doc]] wikitext text/x-wiki {{#ifeq: {{{type|}}} | module ||<!-- section not transcluded if type = module --> {{documentation subpage}} {{high-use}} {{lua|Module:Portal}} <!---PLEASE ADD METADATA TO THE <includeonly> SECTION AT THE BOTTOM OF THIS PAGE.---> This {{{type|template}}} produces a box with links to a [[Portal:Contents/Portals|portal]] or to multiple portals. It is most often used in the "See also" section of an article. '''If a portal does not exist, then it will not be displayed'''. As of December 11, 2021 (UTC), this portal template is now mobile-friendly, meaning that the portal links will appear on mobile devices. }}<!-- end of section not transcluded if type = module --> == Usage == {{Portal |Canada | Biography |History |Science}} '''Basic usage''' <div style="overflow:auto"> &#123;&#123;{{#ifeq: {{{type|}}} | module | &#35;invoke:Portal&#124;portal | Portal }} |''Portal 1'' |''Portal 2'' |''Portal 3'' |... &#125;&#125; </div> == Location == Within articles, {{#ifeq: {{{type|}}} | module | the output of the portal function | this template }} is meant to be placed at the top of the article's ''See also'' section. If there is no ''See also'' section, you may put it in the ''External links'' section instead; there is no need to create a new section just to house this template. If there is no ''External links'' section either, just put it below the article text in the place that seems most appropriate. There are no particular rules about the placement of portals on other kinds of pages. == Image == The portal image names are stored in subpages of [[Module:Portal/images]], organised by the first letter of the portal name. For example, the first letter of [[Portal:Feminism]] is "F", so the image name is stored at [[Module:Portal/images/f]]. If there is an entry for a portal on the correct page then the corresponding image will be shown next to the portal link. If no image is found then [[:File:Portal-puzzle.svg]] will be shown instead. It is also possible to specify aliases for portal images. For example, the code {{tlx|Portal|Detroit}} produces the same image as the code {{tlx|Portal|Metro Detroit}}. The "Detroit" alias is found on the page [[Module:Portal/images/aliases]]. The image-detection algorithm is case-insensitive. For example, the code {{tlx|Portal|Detroit}} will produce the same image as the code {{tlx|Portal|detroit}} (although the portal links will be different). Portal names are stored in lower case in the image subpages, and input is converted to lower case before being checked. To add new images to the list, please <span class="plainlinks">[https://en.wikipedia.org/w/index.php?title=Template_talk:Portal&action=edit&preload=Template:Edit_protected/preload&preloadparams%5b%5d=edit%20template-protected&preloadparams%5b%5d=&editintro=Template:Edit_protected/editintro&preloadtitle=Image+edit+request+on+{{CURRENTDAY}}+{{CURRENTMONTHNAME}}+{{CURRENTYEAR}}&section=new make a protected edit request at Template talk:Portal]</span> to get an administrator to edit the correct subpage for you. Portal images must be either in the public domain or available under a [[WP:ICTIC|free license]] that allows commercial reuse and derivative works; [[Wikipedia:Non-free content|fair-use]] images are not acceptable. The template {{tl|Portal icon demonstration}} may be of use when deciding whether an image is suitable for use as a portal icon; it formats an image using the same size and style that the {{tl|Portal}} template uses by default. A list of portals and aliases of portals without icons can be found at [[User:Dreamy Jazz Bot/Portals needing icons]]. It is updated infrequently, so ping the [[User:Dreamy Jazz|bot owner]] to update the list. {{Collapse top|List of image subpages}} {| class="wikitable" |- ! Page !! Description |- | [[Module:Portal/images/a]] || For portal names starting with "A". |- | [[Module:Portal/images/b]] || For portal names starting with "B". |- | [[Module:Portal/images/c]] || For portal names starting with "C". |- | [[Module:Portal/images/d]] || For portal names starting with "D". |- | [[Module:Portal/images/e]] || For portal names starting with "E". |- | [[Module:Portal/images/f]] || For portal names starting with "F". |- | [[Module:Portal/images/g]] || For portal names starting with "G". |- | [[Module:Portal/images/h]] || For portal names starting with "H". |- | [[Module:Portal/images/i]] || For portal names starting with "I". |- | [[Module:Portal/images/j]] || For portal names starting with "J". |- | [[Module:Portal/images/k]] || For portal names starting with "K". |- | [[Module:Portal/images/l]] || For portal names starting with "L". |- | [[Module:Portal/images/m]] || For portal names starting with "M". |- | [[Module:Portal/images/n]] || For portal names starting with "N". |- | [[Module:Portal/images/o]] || For portal names starting with "O". |- | [[Module:Portal/images/p]] || For portal names starting with "P". |- | [[Module:Portal/images/q]] || For portal names starting with "Q". |- | [[Module:Portal/images/r]] || For portal names starting with "R". |- | [[Module:Portal/images/s]] || For portal names starting with "S". |- | [[Module:Portal/images/t]] || For portal names starting with "T". |- | [[Module:Portal/images/u]] || For portal names starting with "U". |- | [[Module:Portal/images/v]] || For portal names starting with "V". |- | [[Module:Portal/images/w]] || For portal names starting with "W". |- | [[Module:Portal/images/x]] || For portal names starting with "X". |- | [[Module:Portal/images/y]] || For portal names starting with "Y". |- | [[Module:Portal/images/z]] || For portal names starting with "Z". |- | [[Module:Portal/images/other]] || For portal names starting with any other letters. This includes numbers, letters with diacritics, and letters in non-Latin alphabets. |- | [[Module:Portal/images/aliases]] || For adding aliases for existing portal names. Use this page for variations in spelling and diacritics, etc., no matter what letter the portal begins with. |} {{Collapse bottom}} == Example == {| style="background:transparent;" |- ! Code !! Result |- | <span style="font-size: 90%;">&#123;&#123;{{#ifeq: {{{type|}}} | module | &#35;invoke:Portal&#124;portal | Portal }}|Science&#125;&#125;</span> | {{Portal|Science}} |} == Parameters == {| class="wikitable" |- ! Name !! Value !! Description |- | <code>'''1'''</code>, <code>'''2'''</code>, <code>'''3'''</code> ... || The portal name, e.g. <code>Literature</code> || The positional parameters specify the portals to be displayed. |- | <code>'''left'''</code> || <code>yes</code> || If set to <code>yes</code>, the portal appears on the left side of the page instead of the right. |- | <code>'''margin'''</code> || CSS margin value, e.g. <code>1.2em 3em 0.5em 1em</code> || This allows you to set a custom margin. All valid CSS margin values are accepted. |- | <code>'''break'''</code> || <code>yes</code> || If set to <code>yes</code>, a line break is inserted after the portal name and before the word ''portal''. |- | <code>'''redlinks'''</code> || Any of the following values: <code>yes</code>, <code>y</code>, <code>true</code>, or <code>include</code> || Redlinks will be displayed. The default is to suppress redlinks. |- | <code>'''nominimum'''</code> || Any of the following values: <code>yes</code>, <code>y</code>, or <code>true</code> || Suppresses the warning if no parameters are supplied. This can be useful when Template:Portal is called by another template. |- | <code>'''border'''</code> || Any of the following values: <code>no</code>, <code>n</code>, or <code>false</code> || Turn off border and background |- | <code>'''tracking'''</code> || Any of the following values: <code>no</code>, <code>n</code>, <code>false</code> || Tracking categories will be suppressed. The default is to use tracking categories, except on certain namespaces and on pagenames which contain "/archive", "/doc" or "/test". |} == Error tracking == If the {{{type|template}}} is used incorrectly, the page will be added to a tracking category. The tracking categories are not applied if any of the following is true: # Tracking is specially disabled for that usage. This is done by setting the optional parameter {{para|tracking}} to any the following values: <code><nowiki>no</nowiki></code>, <code><nowiki>n</nowiki></code>, <code><nowiki>false</nowiki></code> # the template is used on a page in any of these namespaces: Talk, User, User talk, Wikipedia talk, File talk, Template talk, Category talk, Portal talk, Draft, Draft talk, Module talk # The title page on which the template is used includes any of the following case-insensitive strings: "/archive", "/doc", "/test" * {{clc|Portal templates with too few portals}} * {{clc|Portal templates with too many portals}} * {{clc|Portal templates with redlinked portals}} * {{clc|Pages with empty portal template}} * {{clc|Portal templates with default image}} :{{Purge page|''Purge page to update totals''}} {{#ifeq: {{{type|}}} | module ||<!-- section not transcluded if type = module --> == Other mobile-friendly versions== For versions that are visible in print and mobile versions of Wikipedia pages see: * {{tl|Portal-inline}} * {{tl|Portal bar}} {{Quotation | *<small>Mobile version of '''{{Plain link|url=https://{{CONTENTLANG}}.m.{{SITENAME}}.org/wiki/{{urlencode:{{{1|{{FULLPAGENAME}}}}}|WIKI}}|name={{{1|{{FULLPAGENAME}}}}}}}'''</small> *<small>Desktop version of '''{{Plain link|url=https://{{CONTENTLANG}}.{{SITENAME}}.org/wiki/{{urlencode:{{{1|{{FULLPAGENAME}}}}}|WIKI}}|name={{{1|{{FULLPAGENAME}}}}}}}'''</small>}} == See also == * {{Tl|Subject bar}} {{Portal template list}} ==TemplateData== {{Collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <TemplateData> { "description": "A template to create a list of portals", "params": { "1": { "label": "Portal (1)", "description": "Inserts the portal image and text. Further portals can be added to the template by increasing the number", "type": "string", "required": true }, "2": { "label": "Portal (2)", "description": "Inserts the portal image and text", "type": "string" }, "3": { "label": "Portal (3)", "inherits": "2" }, "4": { "label": "Portal (4)", "inherits": "3" }, "5": { "label": "Portal (5)", "inherits": "4" }, "6": { "label": "Portal (6)", "inherits": "5" }, "left": { "label": "Side", "description": "If set to yes, the portal appears on the left side of the page instead of the right.", "type": "string", "default": "no" }, "margin": { "label": "Margin size", "description": "Alters the margin size. Any valid CSS margin is accepted", "type": "number" }, "break": { "label": "Line break", "description": "If set to yes, a line break is inserted after the portal name and before the word portal", "type": "string" }, "redlink": { "description": "Allow links to non-existent portals", "type": "string", "default": "false" }, "nominimum": { "description": "Do not check for at least one portal", "type": "string", "default": "false" }, "border": { "description": "Put border around portal links", "type": "string", "default": "true" }, "tracking": { "description": "In case of warning, add to tracking category", "type": "string", "default": "true" }, "type": {} }, "format": "block" } </TemplateData> {{Collapse bottom}} <includeonly>{{Sandbox other|| <!--Categories below this line, please; interwikis at Wikidata--> [[Category:Internal link templates]] [[Category:Wikipedia Portal navflags]] }}</includeonly> <noinclude> [[Category:Record production portal|Templates]]</noinclude> }}<!-- end of section not transcluded if type = module --> 12237d8da876a83e3d771aeccf9b8f19101fdbe8 Module:Citation/CS1/Configuration 828 880 1951 1950 2023-10-01T10:41:58Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/Configuration]] Scribunto text/plain local lang_obj = mw.language.getContentLanguage(); -- make a language object for the local language; used here for languages and dates --[[--------------------------< S E T T I N G S >-------------------------------------------------------------- boolean settings used to control various things. these setting located here to make them easy to find ]] -- these settings local to this module only local local_digits_from_mediawiki = false; -- for i18n; when true, module fills date_names['local_digits'] from MediaWiki; manual fill required else; always false at en.wiki local local_date_names_from_mediawiki = false; -- for i18n; when true, module fills date_names['local']['long'] and date_names['local']['short'] from MediaWiki; -- manual translation required else; ; always false at en.wiki -- these settings exported to other modules local use_identifier_redirects = true; -- when true use redirect name for identifier label links; always true at en.wiki local local_lang_cat_enable = false; -- when true categorizes pages where |language=<local wiki's language>; always false at en.wiki local date_name_auto_xlate_enable = false; -- when true translates English month-names to the local-wiki's language month names; always false at en.wiki local date_digit_auto_xlate_enable = false; -- when true translates Western date digit to the local-wiki's language digits (date_names['local_digits']); always false at en.wiki --[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------ List of namespaces identifiers for namespaces that will not be included in citation error categories. Same as setting notracking = true by default. For wikis that have a current version of Module:cs1 documentation support, this #invoke will return an unordered list of namespace names and their associated identifiers: {{#invoke:cs1 documentation support|uncategorized_namespace_lister|all=<anything>}} ]] uncategorized_namespaces_t = {[2]=true}; -- init with user namespace id for k, _ in pairs (mw.site.talkNamespaces) do -- add all talk namespace ids uncategorized_namespaces_t[k] = true; end local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases', '/[^/]*[Ll]og', '/[Aa]rchive'}; -- list of Lua patterns found in page names of pages we should not categorize --[[--------------------------< M E S S A G E S >-------------------------------------------------------------- Translation table The following contains fixed text that may be output as part of a citation. This is separated from the main body to aid in future translations of this module. ]] local messages = { ['agency'] = '$1 $2', -- $1 is sepc, $2 is agency ['archived-dead'] = 'Archived from $1 on $2', ['archived-live'] = '$1 from the original on $2', ['archived-unfit'] = 'Archived from the original on ', ['archived'] = 'Archived', ['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword ['cartography'] = 'Cartography by $1', ['editor'] = 'ed.', ['editors'] = 'eds.', ['edition'] = '($1&nbsp;ed.)', ['episode'] = 'Episode $1', ['et al'] = 'et&nbsp;al.', ['in'] = 'In', -- edited works ['inactive'] = 'inactive', ['inset'] = '$1 inset', ['interview'] = 'Interviewed by $1', ['mismatch'] = '<code class="cs1-code">&#124;$1=</code> / <code class="cs1-code">&#124;$2=</code> mismatch', -- $1 is year param name; $2 is date param name ['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]:&nbsp;$1', ['notitle'] = 'No title', -- for |title=(()) and (in the future) |title=none ['original'] = 'the original', ['origdate'] = ' [$1]', ['published'] = ' (published $1)', ['retrieved'] = 'Retrieved $1', ['season'] = 'Season $1', ['section'] = '§&nbsp;$1', ['sections'] = '§§&nbsp;$1', ['series'] = '$1 $2', -- $1 is sepc, $2 is series ['seriesnum'] = 'Series $1', ['translated'] = 'Translated by $1', ['type'] = ' ($1)', -- for titletype ['written'] = 'Written at $1', ['vol'] = '$1 Vol.&nbsp;$2', -- $1 is sepc; bold journal style volume is in presentation{} ['vol-no'] = '$1 Vol.&nbsp;$2, no.&nbsp;$3', -- sepc, volume, issue (alternatively insert $1 after $2, but then we'd also have to change capitalization) ['issue'] = '$1 No.&nbsp;$2', -- $1 is sepc ['art'] = '$1 Art.&nbsp;$2', -- $1 is sepc; for {{cite conference}} only ['vol-art'] = '$1 Vol.&nbsp;$2, art.&nbsp;$3', -- sepc, volume, article-number; for {{cite conference}} only ['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{} ['j-issue'] = ' ($1)', ['j-article-num'] = ' $1', -- TODO: any punctuation here? static text? ['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc ['p-prefix'] = "$1 p.&nbsp;$2", -- $1 is sepc ['pp-prefix'] = "$1 pp.&nbsp;$2", -- $1 is sepc ['j-page(s)'] = ': $1', -- same for page and pages ['sheet'] = '$1 Sheet&nbsp;$2', -- $1 is sepc ['sheets'] = '$1 Sheets&nbsp;$2', -- $1 is sepc ['j-sheet'] = ': Sheet&nbsp;$1', ['j-sheets'] = ': Sheets&nbsp;$1', ['language'] = '(in $1)', ['via'] = " &ndash; via $1", ['event'] = 'Event occurs at', ['minutes'] = 'minutes in', -- Determines the location of the help page ['help page link'] = 'Help:CS1 errors', ['help page label'] = 'help', -- categories ['cat wikilink'] = '[[Category:$1]]', -- $1 is the category name [':cat wikilink'] = '[[:Category:$1|link]]', -- category name as maintenance message wikilink; $1 is the category name -- Internal errors (should only occur if configuration is bad) ['undefined_error'] = 'Called with an undefined error condition', ['unknown_ID_key'] = 'Unrecognized ID key: ', -- an ID key in id_handlers not found in ~/Identifiers func_map{} ['unknown_ID_access'] = 'Unrecognized ID access keyword: ', -- an ID access keyword in id_handlers not found in keywords_lists['id-access']{} ['unknown_argument_map'] = 'Argument map not defined for this variable', ['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty', ['warning_msg_e'] = '<span style="color:#d33">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">&#123;{$1}}</code> templates have errors</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link ['warning_msg_m'] = '<span style="color:#3a3">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">&#123;{$1}}</code> templates have maintenance messages</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link } --[[--------------------------< C I T A T I O N _ C L A S S _ M A P >------------------------------------------ this table maps the value assigned to |CitationClass= in the cs1|2 templates to the canonical template name when the value assigned to |CitationClass= is different from the canonical template name. |CitationClass= values are used as class attributes in the <cite> tag that encloses the citation so these names may not contain spaces while the canonical template name may. These names are used in warning_msg_e and warning_msg_m to create links to the template's documentation when an article is displayed in preview mode. Most cs1|2 template |CitationClass= values at en.wiki match their canonical template names so are not listed here. ]] local citation_class_map_t = { -- TODO: if kept, these and all other config.CitationClass 'names' require some sort of i18n ['arxiv'] = 'arXiv', ['audio-visual'] = 'AV media', ['AV-media-notes'] = 'AV media notes', ['biorxiv'] = 'bioRxiv', ['citeseerx'] = 'CiteSeerX', ['encyclopaedia'] = 'encyclopedia', ['mailinglist'] = 'mailing list', ['medrxiv'] = 'medRxiv', ['pressrelease'] = 'press release', ['ssrn'] = 'SSRN', ['techreport'] = 'tech report', } --[=[-------------------------< E T _ A L _ P A T T E R N S >-------------------------------------------------- This table provides Lua patterns for the phrase "et al" and variants in name text (author, editor, etc.). The main module uses these to identify and emit the 'etal' message. ]=] local et_al_patterns = { "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.;,\"']*$", -- variations on the 'et al' theme "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][AaIi][Ee]?[%.;,\"']*$", -- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match) "[;,]? *%f[%a]and [Oo]thers", -- an alternative to et al. "%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form "%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax) "[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form } --[[--------------------------< P R E S E N T A T I O N >------------------------ Fixed presentation markup. Originally part of citation_config.messages it has been moved into its own, more semantically correct place. ]] local presentation = { -- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display ['hidden-error'] = '<span class="cs1-hidden-error citation-comment">$1</span>', ['visible-error'] = '<span class="cs1-visible-error citation-comment">$1</span>', ['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>', ['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal CSS ['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like ['cite'] = '<cite class="$1">$2</cite>'; -- for use when citation does not have a namelist and |ref= not set so no id="..." attribute ['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when when |ref= is set or when citation has a namelist ['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc. ['interwiki'] = ' <span class="cs1-format">[in $1]</span>', -- for interwiki-language-linked author, editor, etc ['interproj'] = ' <span class="cs1-format">[at $1]</span>', -- for interwiki-project-linked author, editor, etc (:d: and :s: supported; :w: ignored) -- various access levels, for |access=, |doi-access=, |arxiv=, ... -- narrow no-break space &#8239; may work better than nowrap CSS. Or not? Browser support? ['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon ['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css ['registration'] = {class='cs1-lock-registration', title='Free registration required'}, ['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'}, ['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'}, ['interwiki-icon'] = '<span class="$1" title="$2">$3</span>', ['class-wikisource'] = 'cs1-ws-icon', ['italic-title'] = "''$1''", ['kern-left'] = '<span class="cs1-kern-left"></span>$1', -- spacing to use when title contains leading single or double quote mark ['kern-right'] = '$1<span class="cs1-kern-right"></span>', -- spacing to use when title contains trailing single or double quote mark ['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span> ['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space) ['ocins'] = '<span title="$1" class="Z3988"></span>', ['parameter'] = '<code class="cs1-code">&#124;$1=</code>', ['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character ['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string) ['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content ['quoted-title'] = '"$1"', ['sep_cs1'] = '.', -- CS1 element separator ['sep_cs2'] = ',', -- CS2 separator ['sep_nl'] = ';', -- CS1|2 style name-list separator between names is a semicolon ['sep_nl_and'] = ' and ', -- used as last nl sep when |name-list-style=and and list has 2 items ['sep_nl_end'] = '; and ', -- used as last nl sep when |name-list-style=and and list has 3+ names ['sep_name'] = ', ', -- CS1|2 style last/first separator is <comma><space> ['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma ['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space ['sep_list'] = ', ', -- used for |language= when list has 3+ items except for last sep which uses sep_list_end ['sep_list_pair'] = ' and ', -- used for |language= when list has 2 items ['sep_list_end'] = ', and ', -- used as last list sep for |language= when list has 3+ items ['trans-italic-title'] = "&#91;''$1''&#93;", ['trans-quoted-title'] = "&#91;$1&#93;", -- for |trans-title= and |trans-quote= ['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{} } --[[--------------------------< A L I A S E S >--------------------------------- Aliases table for commonly passed parameters. Parameter names on the right side in the assignments in this table must have been defined in the Whitelist before they will be recognized as valid parameter names ]] local aliases = { ['AccessDate'] = {'access-date', 'accessdate'}, -- Used by InternetArchiveBot ['Agency'] = 'agency', ['ArchiveDate'] = {'archive-date', 'archivedate'}, -- Used by InternetArchiveBot ['ArchiveFormat'] = 'archive-format', ['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- Used by InternetArchiveBot ['ArticleNumber'] = 'article-number', ['ASINTLD'] = 'asin-tld', ['At'] = 'at', -- Used by InternetArchiveBot ['Authors'] = {'authors', 'people', 'credits'}, ['BookTitle'] = {'book-title', 'booktitle'}, ['Cartography'] = 'cartography', ['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'}, ['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format', 'article-format', 'section-format'}; ['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl'}, -- Used by InternetArchiveBot ['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access', 'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot ['Class'] = 'class', -- cite arxiv and arxiv identifier ['Collaboration'] = 'collaboration', ['Conference'] = {'conference', 'event'}, ['ConferenceFormat'] = 'conference-format', ['ConferenceURL'] = 'conference-url', -- Used by InternetArchiveBot ['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only ['Degree'] = 'degree', ['DF'] = 'df', ['DisplayAuthors'] = {'display-authors', 'display-subjects'}, ['DisplayContributors'] = 'display-contributors', ['DisplayEditors'] = 'display-editors', ['DisplayInterviewers'] = 'display-interviewers', ['DisplayTranslators'] = 'display-translators', ['Docket'] = 'docket', ['DoiBroken'] = 'doi-broken-date', ['Edition'] = 'edition', ['Embargo'] = 'pmc-embargo-date', ['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only ['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode? ['Format'] = 'format', ['ID'] = {'id', 'ID'}, ['Inset'] = 'inset', ['Issue'] = {'issue', 'number'}, ['Language'] = {'language', 'lang'}, ['MailingList'] = {'mailing-list', 'mailinglist'}, -- cite mailing list only ['Map'] = 'map', -- cite map only ['MapFormat'] = 'map-format', -- cite map only ['MapURL'] = {'map-url', 'mapurl'}, -- cite map only -- Used by InternetArchiveBot ['MapUrlAccess'] = 'map-url-access', -- cite map only -- Used by InternetArchiveBot ['Minutes'] = 'minutes', ['Mode'] = 'mode', ['NameListStyle'] = 'name-list-style', ['Network'] = 'network', ['Newsgroup'] = 'newsgroup', -- cite newsgroup only ['NoPP'] = {'no-pp', 'nopp'}, ['NoTracking'] = {'no-tracking', 'template-doc-demo'}, ['Number'] = 'number', -- this case only for cite techreport ['OrigDate'] = {'orig-date', 'orig-year', 'origyear'}, ['Others'] = 'others', ['Page'] = {'page', 'p'}, -- Used by InternetArchiveBot ['Pages'] = {'pages', 'pp'}, -- Used by InternetArchiveBot ['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work'}, ['Place'] = {'place', 'location'}, ['PostScript'] = 'postscript', ['PublicationDate'] = {'publication-date', 'publicationdate'}, ['PublicationPlace'] = {'publication-place', 'publicationplace'}, ['PublisherName'] = {'publisher', 'institution'}, ['Quote'] = {'quote', 'quotation'}, ['QuotePage'] = 'quote-page', ['QuotePages'] = 'quote-pages', ['Ref'] = 'ref', ['Scale'] = 'scale', ['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry', 'script-article', 'script-section'}, ['ScriptMap'] = 'script-map', ['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-website', 'script-work'}, ['ScriptQuote'] = 'script-quote', ['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot ['Season'] = 'season', ['Sections'] = 'sections', -- cite map only ['Series'] = {'series', 'version'}, ['SeriesLink'] = {'series-link', 'serieslink'}, ['SeriesNumber'] = {'series-number', 'series-no'}, ['Sheet'] = 'sheet', -- cite map only ['Sheets'] = 'sheets', -- cite map only ['Station'] = 'station', ['Time'] = 'time', ['TimeCaption'] = 'time-caption', ['Title'] = 'title', -- Used by InternetArchiveBot ['TitleLink'] = {'title-link', 'episode-link', 'episodelink'}, -- Used by InternetArchiveBot ['TitleNote'] = {'title-note', 'department'}, ['TitleType'] = {'type', 'medium'}, ['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution', 'trans-entry', 'trans-section'}, ['Transcript'] = 'transcript', ['TranscriptFormat'] = 'transcript-format', ['TranscriptURL'] = 'transcript-url', -- Used by InternetArchiveBot ['TransMap'] = 'trans-map', -- cite map only ['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper', 'trans-periodical', 'trans-website', 'trans-work'}, ['TransQuote'] = 'trans-quote', ['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot ['URL'] = {'url', 'URL'}, -- Used by InternetArchiveBot ['UrlAccess'] = 'url-access', -- Used by InternetArchiveBot ['UrlStatus'] = 'url-status', -- Used by InternetArchiveBot ['Vauthors'] = 'vauthors', ['Veditors'] = 'veditors', ['Via'] = 'via', ['Volume'] = 'volume', ['Year'] = 'year', ['AuthorList-First'] = {"first#", "author-first#", "author#-first", "author-given#", "author#-given", "subject-first#", "subject#-first", "subject-given#", "subject#-given", "given#"}, ['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "author-surname#", "author#-surname", "subject-last#", "subject#-last", "subject-surname#", "subject#-surname", "author#", 'host#', "subject#", "surname#"}, ['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#", "subject#-link", "authorlink#", "author#link"}, ['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask"}, ['ContributorList-First'] = {'contributor-first#', 'contributor#-first', 'contributor-given#', 'contributor#-given'}, ['ContributorList-Last'] = {'contributor-last#', 'contributor#-last', 'contributor-surname#', 'contributor#-surname', 'contributor#'}, ['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'}, ['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'}, ['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"}, ['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#", "editor#-surname", "editor#"}, ['EditorList-Link'] = {"editor-link#", "editor#-link"}, ['EditorList-Mask'] = {"editor-mask#", "editor#-mask"}, ['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first', 'interviewer-given#', 'interviewer#-given'}, ['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last', 'interviewer-surname#', 'interviewer#-surname', 'interviewer#'}, ['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'}, ['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'}, ['TranslatorList-First'] = {'translator-first#', 'translator#-first', 'translator-given#', 'translator#-given'}, ['TranslatorList-Last'] = {'translator-last#', 'translator#-last', 'translator-surname#', 'translator#-surname', 'translator#'}, ['TranslatorList-Link'] = {'translator-link#', 'translator#-link'}, ['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'}, } --[[--------------------------< P U N C T _ S K I P >--------------------------- builds a table of parameter names that the extraneous terminal punctuation check should not check. ]] local punct_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value 'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters 'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators 'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous 'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'MapURL', 'TranscriptURL', 'URL', -- URL-holding parameters } local url_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value 'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'ID', 'MapURL', 'TranscriptURL', 'URL', -- parameters allowed to hold urls 'Page', 'Pages', 'At', 'QuotePage', 'QuotePages', -- insource locators allowed to hold urls } local function build_skip_table (skip_t, meta_params) for _, meta_param in ipairs (meta_params) do -- for each meta parameter key local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name if 'string' == type (params) then skip_t[params] = 1; -- just a single parameter else for _, param in ipairs (params) do -- get the parameter name skip_t[param] = 1; -- add the parameter name to the skip table local count; param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters if 0 ~= count then -- if removed skip_t[param] = 1; -- add param name without enumerator marker end end end end return skip_t; end local punct_skip = {}; local url_skip = {}; --[[--------------------------< S I N G L E - L E T T E R S E C O N D - L E V E L D O M A I N S >---------- this is a list of tlds that are known to have single-letter second-level domain names. This list does not include ccTLDs which are accepted in is_domain_name(). ]] local single_letter_2nd_lvl_domains_t = {'cash', 'company', 'foundation', 'org', 'today'}; --[[-----------< S P E C I A L C A S E T R A N S L A T I O N S >------------ This table is primarily here to support internationalization. Translations in this table are used, for example, when an error message, category name, etc., is extracted from the English alias key. There may be other cases where this translation table may be useful. ]] local is_Latn = 'A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143'; local special_case_translation = { ['AuthorList'] = 'authors list', -- used to assemble maintenance category names ['ContributorList'] = 'contributors list', -- translation of these names plus translation of the base maintenance category names in maint_cats{} table below ['EditorList'] = 'editors list', -- must match the names of the actual categories ['InterviewerList'] = 'interviewers list', -- this group or translations used by name_has_ed_markup() and name_has_mult_names() ['TranslatorList'] = 'translators list', -- Lua patterns to match pseudo-titles used by InternetArchiveBot and others as placeholder for unknown |title= value ['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title ['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki ['local'] = nil, -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language }, -- Lua patterns to match generic titles; usually created by bots or reference filling tools -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language -- generic titles and patterns in this table should be lowercase only -- leave ['local'] nil except when there is a matching generic title in your language -- boolean 'true' for plain-text searches; 'false' for pattern searches ['generic_titles'] = { ['accept'] = { }, ['reject'] = { {['en'] = {'^wayback%s+machine$', false}, ['local'] = nil}, {['en'] = {'are you a robot', true}, ['local'] = nil}, {['en'] = {'hugedomains.com', true}, ['local'] = nil}, {['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil}, {['en'] = {'page not found', true}, ['local'] = nil}, {['en'] = {'subscribe to read', true}, ['local'] = nil}, {['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil}, {['en'] = {'website is for sale', true}, ['local'] = nil}, {['en'] = {'^404', false}, ['local'] = nil}, {['en'] = {'internet archive wayback machine', true}, ['local'] = nil}, {['en'] = {'log into facebook', true}, ['local'] = nil}, {['en'] = {'login • instagram', true}, ['local'] = nil}, {['en'] = {'redirecting...', true}, ['local'] = nil}, {['en'] = {'usurped title', true}, ['local'] = nil}, -- added by a GreenC bot {['en'] = {'webcite query result', true}, ['local'] = nil}, {['en'] = {'wikiwix\'s cache', true}, ['local'] = nil}, } }, -- boolean 'true' for plain-text searches, search string must be lowercase only -- boolean 'false' for pattern searches -- leave ['local'] nil except when there is a matching generic name in your language ['generic_names'] = { ['accept'] = { {['en'] = {'%[%[[^|]*%(author%) *|[^%]]*%]%]', false}, ['local'] = nil}, }, ['reject'] = { {['en'] = {'about us', true}, ['local'] = nil}, {['en'] = {'%f[%a][Aa]dvisor%f[%A]', false}, ['local'] = nil}, {['en'] = {'allmusic', true}, ['local'] = nil}, {['en'] = {'%f[%a][Aa]uthor%f[%A]', false}, ['local'] = nil}, {['en'] = {'business', true}, ['local'] = nil}, {['en'] = {'cnn', true}, ['local'] = nil}, {['en'] = {'collaborator', true}, ['local'] = nil}, {['en'] = {'contributor', true}, ['local'] = nil}, {['en'] = {'contact us', true}, ['local'] = nil}, {['en'] = {'directory', true}, ['local'] = nil}, {['en'] = {'%f[%(%[][%(%[]%s*eds?%.?%s*[%)%]]?$', false}, ['local'] = nil}, {['en'] = {'[,%.%s]%f[e]eds?%.?$', false}, ['local'] = nil}, {['en'] = {'^eds?[%.,;]', false}, ['local'] = nil}, {['en'] = {'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', false}, ['local'] = nil}, {['en'] = {'%f[%a][Ee]dited%f[%A]', false}, ['local'] = nil}, {['en'] = {'%f[%a][Ee]ditors?%f[%A]', false}, ['local'] = nil}, {['en'] = {'%f[%a]]Ee]mail%f[%A]', false}, ['local'] = nil}, {['en'] = {'facebook', true}, ['local'] = nil}, {['en'] = {'google', true}, ['local'] = nil}, {['en'] = {'home page', true}, ['local'] = nil}, {['en'] = {'^[Ii]nc%.?$', false}, ['local'] = nil}, {['en'] = {'instagram', true}, ['local'] = nil}, {['en'] = {'interviewer', true}, ['local'] = nil}, {['en'] = {'linkedIn', true}, ['local'] = nil}, {['en'] = {'^[Nn]ews$', false}, ['local'] = nil}, {['en'] = {'pinterest', true}, ['local'] = nil}, {['en'] = {'policy', true}, ['local'] = nil}, {['en'] = {'privacy', true}, ['local'] = nil}, {['en'] = {'reuters', true}, ['local'] = nil}, {['en'] = {'translator', true}, ['local'] = nil}, {['en'] = {'tumblr', true}, ['local'] = nil}, {['en'] = {'twitter', true}, ['local'] = nil}, {['en'] = {'site name', true}, ['local'] = nil}, {['en'] = {'statement', true}, ['local'] = nil}, {['en'] = {'submitted', true}, ['local'] = nil}, {['en'] = {'super.?user', false}, ['local'] = nil}, {['en'] = {'%f['..is_Latn..'][Uu]ser%f[^'..is_Latn..']', false}, ['local'] = nil}, {['en'] = {'verfasser', true}, ['local'] = nil}, } } } --[[--------------------------< D A T E _ N A M E S >---------------------------------------------------------- This table of tables lists local language date names and fallback English date names. The code in Date_validation will look first in the local table for valid date names. If date names are not found in the local table, the code will look in the English table. Because citations can be copied to the local wiki from en.wiki, the English is required when the date-name translation function date_name_xlate() is used. In these tables, season numbering is defined by Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. CS1|2 only supports generic seasons. EDTF does support the distinction between north and south hemisphere seasons but CS1|2 has no way to make that distinction. 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) The standard does not address 'named' dates so, for the purposes of CS1|2, Easter and Christmas are defined here as 98 and 99, which should be out of the ISO 8601 (EDTF) range of uses for a while. local_date_names_from_mediawiki is a boolean. When set to: true – module will fetch local month names from MediaWiki for both date_names['local']['long'] and date_names['local']['short'] false – module will *not* fetch local month names from MediaWiki Caveat lector: There is no guarantee that MediaWiki will provide short month names. At your wiki you can test the results of the MediaWiki fetch in the debug console with this command (the result is alpha sorted): =mw.dumpObject (p.date_names['local']) While the module can fetch month names from MediaWiki, it cannot fetch the quarter, season, and named date names from MediaWiki. Those must be translated manually. ]] local local_date_names_from_mediawiki = true; -- when false, manual translation required for date_names['local']['long'] and date_names['local']['short'] -- when true, module fetches long and short month names from MediaWiki local date_names = { ['en'] = { -- English ['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12}, ['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12}, ['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36}, ['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23}, ['named'] = {['Easter'] = 98, ['Christmas'] = 99}, }, -- when local_date_names_from_mediawiki = false ['local'] = { -- replace these English date names with the local language equivalents ['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12}, ['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12}, ['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36}, ['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23}, ['named'] = {['Easter'] = 98, ['Christmas'] = 99}, }, ['inv_local_long'] = {}, -- used in date reformatting & translation; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc. ['inv_local_short'] = {}, -- used in date reformatting & translation; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc. ['inv_local_quarter'] = {}, -- used in date translation; copy of date_names['local'].quarter where k/v are inverted: [1]='<local name>' etc. ['inv_local_season'] = {}, -- used in date translation; copy of date_names['local'].season where k/v are inverted: [1]='<local name>' etc. ['inv_local_named'] = {}, -- used in date translation; copy of date_names['local'].named where k/v are inverted: [1]='<local name>' etc. ['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9 ['xlate_digits'] = {}, } if local_date_names_from_mediawiki then -- if fetching local month names from MediaWiki is enabled local long_t = {}; local short_t = {}; for i=1, 12 do -- loop 12x and local name = lang_obj:formatDate('F', '2022-' .. i .. '-1'); -- get long month name for each i long_t[name] = i; -- save it name = lang_obj:formatDate('M', '2022-' .. i .. '-1'); -- get short month name for each i short_t[name] = i; -- save it end date_names['local']['long'] = long_t; -- write the long table – overwrites manual translation date_names['local']['short'] = short_t; -- write the short table – overwrites manual translation end -- create inverted date-name tables for reformatting and/or translation for _, invert_t in pairs {{'long', 'inv_local_long'}, {'short', 'inv_local_short'}, {'quarter', 'inv_local_quarter'}, {'season', 'inv_local_season'}, {'named', 'inv_local_named'}} do for name, i in pairs (date_names['local'][invert_t[1]]) do -- this table is ['name'] = i date_names[invert_t[2]][i] = name; -- invert to get [i] = 'name' for conversions from ymd end end if local_digits_from_mediawiki then -- if fetching local digits from MediaWiki is enabled local digits_t = {}; for i=0, 9 do -- loop 10x and digits_t [lang_obj:formatNum (i)] = tostring (i); -- format the loop indexer as local lang table index and assign loop indexer (a string) as the value end date_names['local_digits'] = digits_t; end for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value end local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}} '{{ *[Uu]se +(dmy) +dates *[|}]', -- 1159k -- sorted by approximate transclusion count '{{ *[Uu]se +(mdy) +dates *[|}]', -- 212k '{{ *[Uu]se +(MDY) +dates *[|}]', -- 788 '{{ *[Uu]se +(DMY) +dates *[|}]', -- 343 '{{ *([Mm]dy) *[|}]', -- 176 '{{ *[Uu]se *(dmy) *[|}]', -- 156 + 18 '{{ *[Uu]se *(mdy) *[|}]', -- 149 + 11 '{{ *([Dd]my) *[|}]', -- 56 '{{ *[Uu]se +(MDY) *[|}]', -- 5 '{{ *([Dd]MY) *[|}]', -- 3 '{{ *[Uu]se(mdy)dates *[|}]', -- 1 '{{ *[Uu]se +(DMY) *[|}]', -- 0 '{{ *([Mm]DY) *[|}]', -- 0 } local title_object = mw.title.getCurrentTitle(); local content; -- done this way so that unused templates appear in unused-template-reports; self-transcluded makes them look like they are used if 10 ~= title_object.namespace then -- all namespaces except Template content = title_object:getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625 end local function get_date_format () -- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports; if not content then -- nil content when we're in template return nil; -- auto-formatting does not work in Template space so don't set global_df end for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format if match then local use_dates_template = content:match ('%b{}', start); -- get the whole template if use_dates_template:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length return match:lower() .. '-' .. use_dates_template:match ('| *cs1%-dates *= *([lsy][sy]?)'); else return match:lower() .. '-all'; -- no |cs1-dates= k/v pair; return value appropriate for use in |df= end end end end local global_df; -- TODO: add this to <global_cs1_config_t>? --[[-----------------< V O L U M E , I S S U E , P A G E S >------------------ These tables hold cite class values (from the template invocation) and identify those templates that support |volume=, |issue=, and |page(s)= parameters. Cite conference and cite map require further qualification which is handled in the main module. ]] local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'} local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'} local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'} --[[ These tables control when it is appropriate for {{citation}} to render |volume= and/or |issue=. The parameter names in the tables constrain {{citation}} so that its renderings match the renderings of the equivalent cs1 templates. For example, {{cite web}} does not support |volume= so the equivalent {{citation |website=...}} must not support |volume=. ]] local citation_no_volume_t = { -- {{citation}} does not render |volume= when these parameters are used 'website', 'mailinglist', 'script-website', } local citation_issue_t = { -- {{citation}} may render |issue= when these parameters are used 'journal', 'magazine', 'newspaper', 'periodical', 'work', 'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work', } --[[ Patterns for finding extra text in |volume=, |issue=, |page=, |pages= ]] local vol_iss_pg_patterns = { good_ppattern = '^P[^%.PpGg]', -- OK to begin with uppercase P: P7 (page 7 of section P), but not p123 (page 123); TODO: this allows 'Pages' which it should not bad_ppatterns = { -- patterns for |page= and |pages= '^[Pp][PpGg]?%.?[ %d]', '^[Pp][Pp]?%.&nbsp;', -- from {{p.}} and {{pp.}} templates '^[Pp]ages?', '^[Pp]gs.?', }, vpatterns = { -- patterns for |volume= '^volumes?', '^vols?[%.:=]?' }, ipatterns = { -- patterns for |issue= '^issues?', '^iss[%.:=]?', '^numbers?', '^nos?%A', -- don't match 'november' or 'nostradamus' '^nr[%.:=]?', '^n[%.:= ]' -- might be a valid issue without separator (space char is sep char here) } } --[[--------------------------< K E Y W O R D S >------------------------------- These tables hold keywords for those parameters that have defined sets of acceptable keywords. ]] --[[-------------------< K E Y W O R D S T A B L E >-------------------------- this is a list of keywords; each key in the list is associated with a table of synonymous keywords possibly from different languages. for I18N: add local-language keywords to value table; do not change the key. For example, adding the German keyword 'ja': ['affirmative'] = {'yes', 'true', 'y', 'ja'}, Because CS1|2 templates from en.wiki articles are often copied to other local wikis, it is recommended that the English keywords remain in these tables. ]] local keywords = { ['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style= ['and'] = {'and', 'serial'}, -- |name-list-style= ['affirmative'] = {'yes', 'true', 'y'}, -- |no-tracking=, |no-pp= -- Used by InternetArchiveBot ['afterword'] = {'afterword'}, -- |contribution= ['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot ['cs1'] = {'cs1'}, -- |mode= ['cs2'] = {'cs2'}, -- |mode= ['dead'] = {'dead', 'deviated'}, -- |url-status= -- Used by InternetArchiveBot ['dmy'] = {'dmy'}, -- |df= ['dmy-all'] = {'dmy-all'}, -- |df= ['foreword'] = {'foreword'}, -- |contribution= ['free'] = {'free'}, -- |<id>-access= -- Used by InternetArchiveBot ['harv'] = {'harv'}, -- |ref=; this no longer supported; is_valid_parameter_value() called with <invert> = true ['introduction'] = {'introduction'}, -- |contribution= ['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot ['live'] = {'live'}, -- |url-status= -- Used by InternetArchiveBot ['mdy'] = {'mdy'}, -- |df= ['mdy-all'] = {'mdy-all'}, -- |df= ['none'] = {'none'}, -- |postscript=, |ref=, |title=, |type= -- Used by InternetArchiveBot ['off'] = {'off'}, -- |title= (potentially also: |title-link=, |postscript=, |ref=, |type=) ['preface'] = {'preface'}, -- |contribution= ['registration'] = {'registration'}, -- |url-access= -- Used by InternetArchiveBot ['subscription'] = {'subscription'}, -- |url-access= -- Used by InternetArchiveBot ['unfit'] = {'unfit'}, -- |url-status= -- Used by InternetArchiveBot ['usurped'] = {'usurped'}, -- |url-status= -- Used by InternetArchiveBot ['vanc'] = {'vanc'}, -- |name-list-style= ['ymd'] = {'ymd'}, -- |df= ['ymd-all'] = {'ymd-all'}, -- |df= -- ['yMd'] = {'yMd'}, -- |df=; not supported at en.wiki -- ['yMd-all'] = {'yMd-all'}, -- |df=; not supported at en.wiki } --[[------------------------< X L A T E _ K E Y W O R D S >--------------------- this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{} become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}: ['affirmative'] = {'yes', 'true', 'y'}, -- in keywords{} becomes ['yes'] = 'affirmative', -- in keywords_xlate{} ['true'] = 'affirmative', ['y'] = 'affirmative', the purpose of this function is to act as a translator between a non-English keyword and its English equivalent that may be used in other modules of this suite ]] local function xlate_keywords () local out_table = {}; -- output goes here for k, keywords_t in pairs (keywords) do -- spin through the keywords table for _, keyword in ipairs (keywords_t) do -- for each keyword out_table[keyword] = k; -- create an entry in the output table where keyword is the key end end return out_table; end local keywords_xlate = xlate_keywords (); -- the list of translated keywords --[[----------------< M A K E _ K E Y W O R D S _ L I S T >--------------------- this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter. keywords_lists{}, is a table of tables from keywords{} ]] local function make_keywords_list (keywords_lists) local out_table = {}; -- output goes here for _, keyword_list in ipairs (keywords_lists) do -- spin through keywords_lists{} and get a table of keywords for _, keyword in ipairs (keyword_list) do -- spin through keyword_list{} and add each keyword, ... table.insert (out_table, keyword); -- ... as plain text, to the output list end end return out_table; end --[[----------------< K E Y W O R D S _ L I S T S >----------------------------- this is a list of lists of valid keywords for the various parameters in [key]. Generally the keys in this table are the canonical en.wiki parameter names though some are contrived because of use in multiple differently named parameters: ['yes_true_y'], ['id-access']. The function make_keywords_list() extracts the individual keywords from the appropriate list in keywords{}. The lists in this table are used to validate the keyword assignment for the parameters named in this table's keys. ]] local keywords_lists = { ['yes_true_y'] = make_keywords_list ({keywords.affirmative}), ['contribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}), ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all']}), -- ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all'], keywords.yMd, keywords['yMd-all']}), -- not supported at en.wiki ['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}), ['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}), ['ref'] = make_keywords_list ({keywords.harv}), -- inverted check; |ref=harv no longer supported ['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}), ['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}), ['id-access'] = make_keywords_list ({keywords.free}), } --[[--------------------------< C S 1 _ C O N F I G _ G E T >-------------------------------------------------- fetch and validate values from {{cs1 config}} template to fill <global_cs1_config_t> no error messages; when errors are detected, the parameter value from {{cs1 config}} is blanked. Supports all parameters and aliases associated with the metaparameters: DisplayAuthors, DisplayContributors, DisplayEditors, DisplayInterviewers, DisplayTranslators, NameListStyle, and Mode. The DisplayWhatever metaparameters accept numeric values only (|display-authors=etal and the like is not supported). ]] local global_cs1_config_t = {}; -- TODO: add value returned from get_date_format() to this table? local function get_cs1_config () -- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports; if not content then -- nil content when we're in template return nil; -- auto-formatting does not work in Template space so don't set global_df end local start = content:find('{{ *[Cc][Ss]1 config *[|}]'); -- <start> is offset into <content> when {{cs1 config}} found; nil else if start then local cs1_config_template = content:match ('%b{}', start); -- get the whole template if not cs1_config_template then return nil; end local params_t = mw.text.split (cs1_config_template:gsub ('^{{%s*', ''):gsub ('%s*}}$', ''), '%s*|%s*'); -- remove '{{' and '}}'; make a sequence of parameter/value pairs (split on the pipe) table.remove (params_t, 1); -- remove the template name because it isn't a parameter/value pair local config_meta_params_t = {'DisplayAuthors', 'DisplayContributors', 'DisplayEditors', 'DisplayInterviewers', 'DisplayTranslators', 'NameListStyle', 'Mode'}; local meta_param_map_t = {}; -- list of accepted parameter names usable in {{cs1 config}} goes here for _, meta_param in ipairs (config_meta_params_t) do -- for i18n using <config_meta_params_t>, map template parameter names to their metaparameter equivalents if 'table' == type (aliases[meta_param]) then -- if <meta_param> is a sequence, for _, param in ipairs (aliases[meta_param]) do -- extract its contents meta_param_map_t[param] = meta_param; -- and add to <meta_param_map_t> end else meta_param_map_t[aliases[meta_param]] = meta_param; -- not a sequence so just add the parameter to <meta_param_map_t> end end local keywords_t = {}; -- map valid keywords to their associate metaparameter; reverse form of <keyword_lists[key] for these metaparameters for _, metaparam_t in ipairs ({{'NameListStyle', 'name-list-style'}, {'Mode', 'mode'}}) do -- only these metaparameter / keywords_lists key pairs for _, keyword in ipairs (keywords_lists[metaparam_t[2]]) do -- spin through the list of keywords keywords_t[keyword] = metaparam_t[1]; -- add [keyword] = metaparameter to the map end end for _, param in ipairs (params_t) do -- spin through the {{cs1 config}} parameters and fill <global_cs1_config_t> local k, v = param:match ('([^=]-)%s*=%s*(.+)'); -- <k> is the parameter name; <v> is parameter's assigned value if k then if k:find ('^display') then -- if <k> is one of the |display-<namelist>= parameters if v:match ('%d+') then -- the assigned value must be digits; doesn't accept 'etal' global_cs1_config_t[meta_param_map_t[k]]=v; -- add the display param and its value to globals table end else if keywords_t[v] == meta_param_map_t[k] then -- keywords_t[v] returns nil or the metaparam name; these must be the same global_cs1_config_t[meta_param_map_t[k]]=v; -- add the parameter and its value to globals table end end end end end end get_cs1_config (); -- fill <global_cs1_config_t> --[[---------------------< S T R I P M A R K E R S >---------------------------- Common pattern definition location for stripmarkers so that we don't have to go hunting for them if (when) MediaWiki changes their form. ]] local stripmarkers = { ['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker ['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker() } --[[------------< I N V I S I B L E _ C H A R A C T E R S >--------------------- This table holds non-printing or invisible characters indexed either by name or by Unicode group. Values are decimal representations of UTF-8 codes. The table is organized as a table of tables because the Lua pairs keyword returns table data in an arbitrary order. Here, we want to process the table from top to bottom because the entries at the top of the table are also found in the ranges specified by the entries at the bottom of the table. Also here is a pattern that recognizes stripmarkers that begin and end with the delete characters. The nowiki stripmarker is not an error but some others are because the parameter values that include them become part of the template's metadata before stripmarker replacement. ]] local invisible_defs = { del = '\127', -- used to distinguish between stripmarker and del char zwj = '\226\128\141', -- used with capture because zwj may be allowed } local invisible_chars = { {'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD {'zero width joiner', '('.. invisible_defs.zwj .. ')'}, -- U+200D, E2 80 8D; capture because zwj may be allowed {'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B {'hair space', '\226\128\138'}, -- U+200A, E2 80 8A {'soft hyphen', '\194\173'}, -- U+00AD, C2 AD {'horizontal tab', '\009'}, -- U+0009 (HT), 09 {'line feed', '\010'}, -- U+000A (LF), 0A {'no-break space', '\194\160'}, -- U+00A0 (NBSP), C2 A0 {'carriage return', '\013'}, -- U+000D (CR), 0D {'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type {'delete', '('.. invisible_defs.del .. ')'}, -- U+007F (DEL), 7F; must be done after stripmarker test; capture to distinguish isolated del chars not part of stripmarker {'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D)) {'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F -- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF -- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF -- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD -- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD } --[[ Indic script makes use of zero width joiner as a character modifier so zwj characters must be left in. This pattern covers all of the unicode characters for these languages: Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf plus the not-necessarily Indic scripts for Sinhala and Burmese: Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf the pattern is used by has_invisible_chars() and coins_cleanup() ]] local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]'; -- list of emoji that use a zwj character (U+200D) to combine with another emoji -- from: https://unicode.org/Public/emoji/15.0/emoji-zwj-sequences.txt; version: 15.0; 2022-05-06 -- table created by: [[:en:Module:Make emoji zwj table]] local emoji_t = { -- indexes are decimal forms of the hex values in U+xxxx [9760] = true, -- U+2620 ☠ skull and crossbones [9792] = true, -- U+2640 ♀ female sign [9794] = true, -- U+2642 ♂ male sign [9877] = true, -- U+2695 ⚕ staff of aesculapius [9878] = true, -- U+2696 ⚖ scales [9895] = true, -- U+26A7 ⚧ male with stroke and male and female sign [9992] = true, -- U+2708 ✈ airplane [10052] = true, -- U+2744 ❄ snowflake [10084] = true, -- U+2764 ❤ heavy black heart [11035] = true, -- U+2B1B ⬛ black large square [127752] = true, -- U+1F308 🌈 rainbow [127787] = true, -- U+1F32B 🌫 fog [127806] = true, -- U+1F33E 🌾 ear of rice [127859] = true, -- U+1F373 🍳 cooking [127868] = true, -- U+1F37C 🍼 baby bottle [127876] = true, -- U+1F384 🎄 christmas tree [127891] = true, -- U+1F393 🎓 graduation cap [127908] = true, -- U+1F3A4 🎤 microphone [127912] = true, -- U+1F3A8 🎨 artist palette [127979] = true, -- U+1F3EB 🏫 school [127981] = true, -- U+1F3ED 🏭 factory [128102] = true, -- U+1F466 👦 boy [128103] = true, -- U+1F467 👧 girl [128104] = true, -- U+1F468 👨 man [128105] = true, -- U+1F469 👩 woman [128139] = true, -- U+1F48B 💋 kiss mark [128168] = true, -- U+1F4A8 💨 dash symbol [128171] = true, -- U+1F4AB 💫 dizzy symbol [128187] = true, -- U+1F4BB 💻 personal computer [128188] = true, -- U+1F4BC 💼 brief case [128293] = true, -- U+1F525 🔥 fire [128295] = true, -- U+1F527 🔧 wrench [128300] = true, -- U+1F52C 🔬 microscope [128488] = true, -- U+1F5E8 🗨 left speech bubble [128640] = true, -- U+1F680 🚀 rocket [128658] = true, -- U+1F692 🚒 fire engine [129309] = true, -- U+1F91D 🤝 handshake [129455] = true, -- U+1F9AF 🦯 probing cane [129456] = true, -- U+1F9B0 🦰 emoji component red hair [129457] = true, -- U+1F9B1 🦱 emoji component curly hair [129458] = true, -- U+1F9B2 🦲 emoji component bald [129459] = true, -- U+1F9B3 🦳 emoji component white hair [129466] = true, -- U+1F9BA 🦺 safety vest [129468] = true, -- U+1F9BC 🦼 motorized wheelchair [129469] = true, -- U+1F9BD 🦽 manual wheelchair [129489] = true, -- U+1F9D1 🧑 adult [129657] = true, -- U+1FA79 🩹 adhesive bandage [129778] = true, -- U+1FAF2 🫲 leftwards hand } --[[----------------------< L A N G U A G E S U P P O R T >------------------- These tables and constants support various language-specific functionality. ]] --local this_wiki_code = mw.getContentLanguage():getCode(); -- get this wiki's language code local this_wiki_code = lang_obj:getCode(); -- get this wiki's language code if string.match (mw.site.server, 'wikidata') then this_wiki_code = mw.getCurrentFrame():callParserFunction('int', {'lang'}); -- on Wikidata so use interface language setting instead end local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a table of language tag/name pairs known to Wikimedia; used for interwiki tests local mw_languages_by_name_t = {}; for k, v in pairs (mw_languages_by_tag_t) do -- build a 'reversed' table name/tag language pairs know to MediaWiki; used for |language= v = mw.ustring.lower (v); -- lowercase for tag fetch; get name's proper case from mw_languages_by_tag_t[<tag>] if mw_languages_by_name_t[v] then -- when name already in the table if 2 == #k or 3 == #k then -- if tag does not have subtags mw_languages_by_name_t[v] = k; -- prefer the shortest tag for this name end else -- here when name not in the table mw_languages_by_name_t[v] = k; -- so add name and matching tag end end local inter_wiki_map = {}; -- map of interwiki prefixes that are language-code prefixes for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base interwiki map (limited to local) if mw_languages_by_tag_t[v["prefix"]] then -- if the prefix matches a known language tag inter_wiki_map[v["prefix"]] = true; -- add it to our local map end end --[[--------------------< S C R I P T _ L A N G _ C O D E S >------------------- This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character language codes that apply only to |script-title= and |script-chapter= ]] local script_lang_codes = { 'ab', 'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu', 'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo', 'mk', 'ml', 'mn', 'mni', 'mr', 'my', 'ne', 'or', 'ota', 'pa', 'ps', 'ru', 'sd', 'si', 'sr', 'syc', 'ta', 'te', 'tg', 'th', 'ti', 'tt', 'ug', 'uk', 'ur', 'uz', 'yi', 'yue', 'zh' }; --[[---------------< L A N G U A G E R E M A P P I N G >---------------------- These tables hold language information that is different (correct) from MediaWiki's definitions For each ['<tag>'] = 'language name' in lang_code_remap{} there must be a matching ['language name'] = {'language name', '<tag>'} in lang_name_remap{} lang_tag_remap{}: key is always lowercase ISO 639-1, -2, -3 language tag or a valid lowercase IETF language tag value is properly spelled and capitalized language name associated with <tag> only one language name per <tag>; key/value pair must have matching entry in lang_name_remap{} lang_name_remap{}: key is always lowercase language name value is a table the holds correctly spelled and capitalized language name [1] and associated tag [2] (tag must match a tag key in lang_tag_remap{}) may have multiple keys referring to a common preferred name and tag; For example: ['kolsch'] and ['kölsch'] both refer to 'Kölsch' and 'ksh' ]] local lang_tag_remap = { -- used for |language= and |script-title= / |script-chapter= ['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch ['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org ['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name ['bn'] = 'Bengali', -- MediaWiki returns Bangla ['ca-valencia'] = 'Valencian', -- IETF variant of Catalan ['fkv'] = 'Kven', -- MediaWiki returns Kvensk ['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name ['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name ['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data ['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data ['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name } local lang_name_remap = { -- used for |language=; names require proper capitalization; tags must be lowercase ['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org ['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap ['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code ['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org ['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found ['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name ['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh ['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name ['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö) ['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name ['kven'] = {'Kven', 'fkv'}, -- Unicode CLDR have decided not to support English language name for these two... ['kvensk'] = {'Kven', 'fkv'}, -- ...they say to refer to IANA registry for English names ['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639 ['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-tw'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese ['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found ['valencian'] = {'Valencian', 'ca-valencia'}, -- variant of Catalan; categorizes as Valencian } --[[---------------< P R O P E R T I E S _ C A T E G O R I E S >---------------- Properties categories. These are used for investigating qualities of citations. ]] local prop_cats = { ['foreign-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code ['foreign-lang-source-2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key ['jul-greg-uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926 ['local-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false ['location-test'] = 'CS1 location test', ['long-vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 characters ['script'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code ['tracked-param'] = 'CS1 tracked parameter: $1', -- $1 is base (enumerators removed) parameter name ['year-range-abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form } --[[-------------------< T I T L E _ T Y P E S >-------------------------------- Here we map a template's CitationClass to TitleType (default values for |type= parameter) ]] local title_types = { ['AV-media-notes'] = 'Media notes', ['document'] = 'Document', ['interview'] = 'Interview', ['mailinglist'] = 'Mailing list', ['map'] = 'Map', ['podcast'] = 'Podcast', ['pressrelease'] = 'Press release', ['report'] = 'Report', ['speech'] = 'Speech', ['techreport'] = 'Technical report', ['thesis'] = 'Thesis', } --[[===================<< E R R O R M E S S A G I N G >>====================== ]] --[[----------< E R R O R M E S S A G E S U P P L I M E N T S >------------- I18N for those messages that are supplemented with additional specific text that describes the reason for the error TODO: merge this with special_case_translations{}? ]] local err_msg_supl = { ['char'] = 'invalid character', -- |isbn=, |sbn= ['check'] = 'checksum', -- |isbn=, |sbn= ['flag'] = 'flag', -- |archive-url= ['form'] = 'invalid form', -- |isbn=, |sbn= ['group'] = 'invalid group id', -- |isbn= ['initials'] = 'initials', -- Vancouver ['invalid language code'] = 'invalid language code', -- |script-<param>= ['journal'] = 'journal', -- |bibcode= ['length'] = 'length', -- |isbn=, |bibcode=, |sbn= ['liveweb'] = 'liveweb', -- |archive-url= ['missing comma'] = 'missing comma', -- Vancouver ['missing prefix'] = 'missing prefix', -- |script-<param>= ['missing title part'] = 'missing title part', -- |script-<param>= ['name'] = 'name', -- Vancouver ['non-Latin char'] = 'non-Latin character', -- Vancouver ['path'] = 'path', -- |archive-url= ['prefix'] = 'invalid prefix', -- |isbn= ['punctuation'] = 'punctuation', -- Vancouver ['save'] = 'save command', -- |archive-url= ['suffix'] = 'suffix', -- Vancouver ['timestamp'] = 'timestamp', -- |archive-url= ['unknown language code'] = 'unknown language code', -- |script-<param>= ['value'] = 'value', -- |bibcode= ['year'] = 'year', -- |bibcode= } --[[--------------< E R R O R _ C O N D I T I O N S >--------------------------- Error condition table. This table has two sections: errors at the top, maintenance at the bottom. Maint 'messaging' does not have a 'message' (message=nil) The following contains a list of IDs for various error conditions defined in the code. For each ID, we specify a text message to display, an error category to include, and whether the error message should be wrapped as a hidden comment. Anchor changes require identical changes to matching anchor in Help:CS1 errors TODO: rename error_conditions{} to something more generic; create separate error and maint tables inside that? ]] local error_conditions = { err_accessdate_missing_url = { message = '<code class="cs1-code">&#124;access-date=</code> requires <code class="cs1-code">&#124;url=</code>', anchor = 'accessdate_missing_url', category = 'CS1 errors: access-date without URL', hidden = false }, err_apostrophe_markup = { message = 'Italic or bold markup not allowed in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'apostrophe_markup', category = 'CS1 errors: markup', hidden = false }, err_archive_date_missing_url = { message = '<code class="cs1-code">&#124;archive-date=</code> requires <code class="cs1-code">&#124;archive-url=</code>', anchor = 'archive_date_missing_url', category = 'CS1 errors: archive-url', hidden = false }, err_archive_date_url_ts_mismatch = { message = '<code class="cs1-code">&#124;archive-date=</code> / <code class="cs1-code">&#124;archive-url=</code> timestamp mismatch', anchor = 'archive_date_url_ts_mismatch', category = 'CS1 errors: archive-url', hidden = false }, err_archive_missing_date = { message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;archive-date=</code>', anchor = 'archive_missing_date', category = 'CS1 errors: archive-url', hidden = false }, err_archive_missing_url = { message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;url=</code>', anchor = 'archive_missing_url', category = 'CS1 errors: archive-url', hidden = false }, err_archive_url = { message = '<code class="cs1-code">&#124;archive-url=</code> is malformed: $1', -- $1 is error message detail anchor = 'archive_url', category = 'CS1 errors: archive-url', hidden = false }, err_arxiv_missing = { message = '<code class="cs1-code">&#124;arxiv=</code> required', anchor = 'arxiv_missing', category = 'CS1 errors: arXiv', -- same as bad arxiv hidden = false }, err_asintld_missing_asin = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;asin=</code>', -- $1 is parameter name anchor = 'asintld_missing_asin', category = 'CS1 errors: ASIN TLD', hidden = false }, err_bad_arxiv = { message = 'Check <code class="cs1-code">&#124;arxiv=</code> value', anchor = 'bad_arxiv', category = 'CS1 errors: arXiv', hidden = false }, err_bad_asin = { message = 'Check <code class="cs1-code">&#124;asin=</code> value', anchor = 'bad_asin', category ='CS1 errors: ASIN', hidden = false }, err_bad_asin_tld = { message = 'Check <code class="cs1-code">&#124;asin-tld=</code> value', anchor = 'bad_asin_tld', category ='CS1 errors: ASIN TLD', hidden = false }, err_bad_bibcode = { message = 'Check <code class="cs1-code">&#124;bibcode=</code> $1', -- $1 is error message detail anchor = 'bad_bibcode', category = 'CS1 errors: bibcode', hidden = false }, err_bad_biorxiv = { message = 'Check <code class="cs1-code">&#124;biorxiv=</code> value', anchor = 'bad_biorxiv', category = 'CS1 errors: bioRxiv', hidden = false }, err_bad_citeseerx = { message = 'Check <code class="cs1-code">&#124;citeseerx=</code> value', anchor = 'bad_citeseerx', category = 'CS1 errors: citeseerx', hidden = false }, err_bad_date = { message = 'Check date values in: $1', -- $1 is a parameter name list anchor = 'bad_date', category = 'CS1 errors: dates', hidden = false }, err_bad_doi = { message = 'Check <code class="cs1-code">&#124;doi=</code> value', anchor = 'bad_doi', category = 'CS1 errors: DOI', hidden = false }, err_bad_hdl = { message = 'Check <code class="cs1-code">&#124;hdl=</code> value', anchor = 'bad_hdl', category = 'CS1 errors: HDL', hidden = false }, err_bad_isbn = { message = 'Check <code class="cs1-code">&#124;isbn=</code> value: $1', -- $1 is error message detail anchor = 'bad_isbn', category = 'CS1 errors: ISBN', hidden = false }, err_bad_ismn = { message = 'Check <code class="cs1-code">&#124;ismn=</code> value', anchor = 'bad_ismn', category = 'CS1 errors: ISMN', hidden = false }, err_bad_issn = { message = 'Check <code class="cs1-code">&#124;$1issn=</code> value', -- $1 is 'e' or '' for eissn or issn anchor = 'bad_issn', category = 'CS1 errors: ISSN', hidden = false }, err_bad_jfm = { message = 'Check <code class="cs1-code">&#124;jfm=</code> value', anchor = 'bad_jfm', category = 'CS1 errors: JFM', hidden = false }, err_bad_jstor = { message = 'Check <code class="cs1-code">&#124;jstor=</code> value', anchor = 'bad_jstor', category = 'CS1 errors: JSTOR', hidden = false }, err_bad_lccn = { message = 'Check <code class="cs1-code">&#124;lccn=</code> value', anchor = 'bad_lccn', category = 'CS1 errors: LCCN', hidden = false }, err_bad_medrxiv = { message = 'Check <code class="cs1-code">&#124;medrxiv=</code> value', anchor = 'bad_medrxiv', category = 'CS1 errors: medRxiv', hidden = false }, err_bad_mr = { message = 'Check <code class="cs1-code">&#124;mr=</code> value', anchor = 'bad_mr', category = 'CS1 errors: MR', hidden = false }, err_bad_oclc = { message = 'Check <code class="cs1-code">&#124;oclc=</code> value', anchor = 'bad_oclc', category = 'CS1 errors: OCLC', hidden = false }, err_bad_ol = { message = 'Check <code class="cs1-code">&#124;ol=</code> value', anchor = 'bad_ol', category = 'CS1 errors: OL', hidden = false }, err_bad_osti = { message = 'Check <code class="cs1-code">&#124;osti=</code> value', anchor = 'bad_osti', category = 'CS1 errors: OSTI', hidden = false }, err_bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link= message = 'Check <code class="cs1-code">&#124;$1=</code> value', -- $1 is parameter name anchor = 'bad_paramlink', category = 'CS1 errors: parameter link', hidden = false }, err_bad_pmc = { message = 'Check <code class="cs1-code">&#124;pmc=</code> value', anchor = 'bad_pmc', category = 'CS1 errors: PMC', hidden = false }, err_bad_pmid = { message = 'Check <code class="cs1-code">&#124;pmid=</code> value', anchor = 'bad_pmid', category = 'CS1 errors: PMID', hidden = false }, err_bad_rfc = { message = 'Check <code class="cs1-code">&#124;rfc=</code> value', anchor = 'bad_rfc', category = 'CS1 errors: RFC', hidden = false }, err_bad_s2cid = { message = 'Check <code class="cs1-code">&#124;s2cid=</code> value', anchor = 'bad_s2cid', category = 'CS1 errors: S2CID', hidden = false }, err_bad_sbn = { message = 'Check <code class="cs1-code">&#124;sbn=</code> value: $1', -- $1 is error message detail anchor = 'bad_sbn', category = 'CS1 errors: SBN', hidden = false }, err_bad_ssrn = { message = 'Check <code class="cs1-code">&#124;ssrn=</code> value', anchor = 'bad_ssrn', category = 'CS1 errors: SSRN', hidden = false }, err_bad_url = { message = 'Check $1 value', -- $1 is parameter name anchor = 'bad_url', category = 'CS1 errors: URL', hidden = false }, err_bad_usenet_id = { message = 'Check <code class="cs1-code">&#124;message-id=</code> value', anchor = 'bad_message_id', category = 'CS1 errors: message-id', hidden = false }, err_bad_zbl = { message = 'Check <code class="cs1-code">&#124;zbl=</code> value', anchor = 'bad_zbl', category = 'CS1 errors: Zbl', hidden = false }, err_bare_url_missing_title = { message = '$1 missing title', -- $1 is parameter name anchor = 'bare_url_missing_title', category = 'CS1 errors: bare URL', hidden = false }, err_biorxiv_missing = { message = '<code class="cs1-code">&#124;biorxiv=</code> required', anchor = 'biorxiv_missing', category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv hidden = false }, err_chapter_ignored = { message = '<code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'chapter_ignored', category = 'CS1 errors: chapter ignored', hidden = false }, err_citation_missing_title = { message = 'Missing or empty <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'citation_missing_title', category = 'CS1 errors: missing title', hidden = false }, err_citeseerx_missing = { message = '<code class="cs1-code">&#124;citeseerx=</code> required', anchor = 'citeseerx_missing', category = 'CS1 errors: citeseerx', -- same as bad citeseerx hidden = false }, err_cite_web_url = { -- this error applies to cite web and to cite podcast message = 'Missing or empty <code class="cs1-code">&#124;url=</code>', anchor = 'cite_web_url', category = 'CS1 errors: requires URL', hidden = false }, err_class_ignored = { message = '<code class="cs1-code">&#124;class=</code> ignored', anchor = 'class_ignored', category = 'CS1 errors: class', hidden = false }, err_contributor_ignored = { message = '<code class="cs1-code">&#124;contributor=</code> ignored', anchor = 'contributor_ignored', category = 'CS1 errors: contributor', hidden = false }, err_contributor_missing_required_param = { message = '<code class="cs1-code">&#124;contributor=</code> requires <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'contributor_missing_required_param', category = 'CS1 errors: contributor', hidden = false }, err_deprecated_params = { message = 'Cite uses deprecated parameter <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'deprecated_params', category = 'CS1 errors: deprecated parameters', hidden = false }, err_disp_name = { message = 'Invalid <code class="cs1-code">&#124;$1=$2</code>', -- $1 is parameter name; $2 is the assigned value anchor = 'disp_name', category = 'CS1 errors: display-names', hidden = false, }, err_doibroken_missing_doi = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;doi=</code>', -- $1 is parameter name anchor = 'doibroken_missing_doi', category = 'CS1 errors: DOI', hidden = false }, err_embargo_missing_pmc = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;pmc=</code>', -- $1 is parameter name anchor = 'embargo_missing_pmc', category = 'CS1 errors: PMC embargo', hidden = false }, err_empty_citation = { message = 'Empty citation', anchor = 'empty_citation', category = 'CS1 errors: empty citation', hidden = false }, err_etal = { message = 'Explicit use of et al. in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'explicit_et_al', category = 'CS1 errors: explicit use of et al.', hidden = false }, err_extra_text_edition = { message = '<code class="cs1-code">&#124;edition=</code> has extra text', anchor = 'extra_text_edition', category = 'CS1 errors: extra text: edition', hidden = false, }, err_extra_text_issue = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_issue', category = 'CS1 errors: extra text: issue', hidden = false, }, err_extra_text_pages = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_pages', category = 'CS1 errors: extra text: pages', hidden = false, }, err_extra_text_volume = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_volume', category = 'CS1 errors: extra text: volume', hidden = true, }, err_first_missing_last = { message = '<code class="cs1-code">&#124;$1=</code> missing <code class="cs1-code">&#124;$2=</code>', -- $1 is first alias, $2 is matching last alias anchor = 'first_missing_last', category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator hidden = false }, err_format_missing_url = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;$2=</code>', -- $1 is format parameter $2 is url parameter anchor = 'format_missing_url', category = 'CS1 errors: format without URL', hidden = false }, err_generic_name = { message = '<code class="cs1-code">&#124;$1=</code> has generic name', -- $1 is parameter name anchor = 'generic_name', category = 'CS1 errors: generic name', hidden = false, }, err_generic_title = { message = 'Cite uses generic title', anchor = 'generic_title', category = 'CS1 errors: generic title', hidden = false, }, err_invalid_param_val = { message = 'Invalid <code class="cs1-code">&#124;$1=$2</code>', -- $1 is parameter name $2 is parameter value anchor = 'invalid_param_val', category = 'CS1 errors: invalid parameter value', hidden = false }, err_invisible_char = { message = '$1 in $2 at position $3', -- $1 is invisible char $2 is parameter name $3 is position number anchor = 'invisible_char', category = 'CS1 errors: invisible characters', hidden = false }, err_medrxiv_missing = { message = '<code class="cs1-code">&#124;medrxiv=</code> required', anchor = 'medrxiv_missing', category = 'CS1 errors: medRxiv', -- same as bad medRxiv hidden = false }, err_missing_name = { message = 'Missing <code class="cs1-code">&#124;$1$2=</code>', -- $1 is modified NameList; $2 is enumerator anchor = 'missing_name', category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator hidden = false }, err_missing_periodical = { message = 'Cite $1 requires <code class="cs1-code">&#124;$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1 anchor = 'missing_periodical', category = 'CS1 errors: missing periodical', hidden = true }, err_missing_pipe = { message = 'Missing pipe in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'missing_pipe', category = 'CS1 errors: missing pipe', hidden = false }, err_missing_publisher = { message = 'Cite $1 requires <code class="cs1-code">&#124;$2=</code>', -- $1 is cs1 template name; $2 is canonical publisher parameter name for cite $1 anchor = 'missing_publisher', category = 'CS1 errors: missing publisher', hidden = false }, err_param_access_requires_param = { message = '<code class="cs1-code">&#124;$1-access=</code> requires <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'param_access_requires_param', category = 'CS1 errors: param-access', hidden = false }, err_param_has_ext_link = { message = 'External link in <code class="cs1-code">$1</code>', -- $1 is parameter name anchor = 'param_has_ext_link', category = 'CS1 errors: external links', hidden = false }, err_parameter_ignored = { message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'parameter_ignored', category = 'CS1 errors: unsupported parameter', hidden = false }, err_parameter_ignored_suggest = { message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored (<code class="cs1-code">&#124;$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name anchor = 'parameter_ignored_suggest', category = 'CS1 errors: unsupported parameter', hidden = false }, err_periodical_ignored = { message = '<code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'periodical_ignored', category = 'CS1 errors: periodical ignored', hidden = false }, err_redundant_parameters = { message = 'More than one of $1 specified', -- $1 is error message detail anchor = 'redundant_parameters', category = 'CS1 errors: redundant parameter', hidden = false }, err_script_parameter = { message = 'Invalid <code class="cs1-code">&#124;$1=</code>: $2', -- $1 is parameter name $2 is script language code or error detail anchor = 'script_parameter', category = 'CS1 errors: script parameters', hidden = false }, err_ssrn_missing = { message = '<code class="cs1-code">&#124;ssrn=</code> required', anchor = 'ssrn_missing', category = 'CS1 errors: SSRN', hidden = false }, err_text_ignored = { message = 'Text "$1" ignored', -- $1 is ignored text anchor = 'text_ignored', category = 'CS1 errors: unrecognized parameter', hidden = false }, err_trans_missing_title = { message = '<code class="cs1-code">&#124;trans-$1=</code> requires <code class="cs1-code">&#124;$1=</code> or <code class="cs1-code">&#124;script-$1=</code>', -- $1 is base parameter name anchor = 'trans_missing_title', category = 'CS1 errors: translated title', hidden = false }, err_param_unknown_empty = { message = 'Cite has empty unknown parameter$1: $2', -- $1 is 's' or empty space; $2 is emty unknown param list anchor = 'param_unknown_empty', category = 'CS1 errors: empty unknown parameters', hidden = false }, err_vancouver = { message = 'Vancouver style error: $1 in name $2', -- $1 is error detail, $2 is the nth name anchor = 'vancouver', category = 'CS1 errors: Vancouver style', hidden = false }, err_wikilink_in_url = { message = 'URL–wikilink conflict', -- uses ndash anchor = 'wikilink_in_url', category = 'CS1 errors: URL–wikilink conflict', -- uses ndash hidden = false }, --[[--------------------------< M A I N T >------------------------------------- maint messages do not have a message (message = nil); otherwise the structure is the same as error messages ]] maint_archived_copy = { message = nil, anchor = 'archived_copy', category = 'CS1 maint: archived copy as title', hidden = true, }, maint_authors = { message = nil, anchor = 'authors', category = 'CS1 maint: uses authors parameter', hidden = true, }, maint_bibcode = { message = nil, anchor = 'bibcode', category = 'CS1 maint: bibcode', hidden = true, }, maint_location_no_publisher = { -- cite book, conference, encyclopedia; citation as book cite or encyclopedia cite message = nil, anchor = 'location_no_publisher', category = 'CS1 maint: location missing publisher', hidden = true, }, maint_bot_unknown = { message = nil, anchor = 'bot:_unknown', category = 'CS1 maint: bot: original URL status unknown', hidden = true, }, maint_date_auto_xlated = { -- date auto-translation not supported by en.wiki message = nil, anchor = 'date_auto_xlated', category = 'CS1 maint: date auto-translated', hidden = true, }, maint_date_format = { message = nil, anchor = 'date_format', category = 'CS1 maint: date format', hidden = true, }, maint_date_year = { message = nil, anchor = 'date_year', category = 'CS1 maint: date and year', hidden = true, }, maint_doi_ignore = { message = nil, anchor = 'doi_ignore', category = 'CS1 maint: ignored DOI errors', hidden = true, }, maint_doi_inactive = { message = nil, anchor = 'doi_inactive', category = 'CS1 maint: DOI inactive', hidden = true, }, maint_doi_inactive_dated = { message = nil, anchor = 'doi_inactive_dated', category = 'CS1 maint: DOI inactive as of $2$3$1', -- $1 is year, $2 is month-name or empty string, $3 is space or empty string hidden = true, }, maint_extra_punct = { message = nil, anchor = 'extra_punct', category = 'CS1 maint: extra punctuation', hidden = true, }, maint_isbn_ignore = { message = nil, anchor = 'ignore_isbn_err', category = 'CS1 maint: ignored ISBN errors', hidden = true, }, maint_issn_ignore = { message = nil, anchor = 'ignore_issn', category = 'CS1 maint: ignored ISSN errors', hidden = true, }, maint_jfm_format = { message = nil, anchor = 'jfm_format', category = 'CS1 maint: JFM format', hidden = true, }, maint_location = { message = nil, anchor = 'location', category = 'CS1 maint: location', hidden = true, }, maint_mr_format = { message = nil, anchor = 'mr_format', category = 'CS1 maint: MR format', hidden = true, }, maint_mult_names = { message = nil, anchor = 'mult_names', category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table hidden = true, }, maint_numeric_names = { message = nil, anchor = 'numeric_names', category = 'CS1 maint: numeric names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table hidden = true, }, maint_others = { message = nil, anchor = 'others', category = 'CS1 maint: others', hidden = true, }, maint_others_avm = { message = nil, anchor = 'others_avm', category = 'CS1 maint: others in cite AV media (notes)', hidden = true, }, maint_overridden_setting = { message = nil, anchor = 'overridden', category = 'CS1 maint: overridden setting', hidden = true, }, maint_pmc_embargo = { message = nil, anchor = 'embargo', category = 'CS1 maint: PMC embargo expired', hidden = true, }, maint_pmc_format = { message = nil, anchor = 'pmc_format', category = 'CS1 maint: PMC format', hidden = true, }, maint_postscript = { message = nil, anchor = 'postscript', category = 'CS1 maint: postscript', hidden = true, }, maint_ref_duplicates_default = { message = nil, anchor = 'ref_default', category = 'CS1 maint: ref duplicates default', hidden = true, }, maint_unfit = { message = nil, anchor = 'unfit', category = 'CS1 maint: unfit URL', hidden = true, }, maint_unknown_lang = { message = nil, anchor = 'unknown_lang', category = 'CS1 maint: unrecognized language', hidden = true, }, maint_untitled = { message = nil, anchor = 'untitled', category = 'CS1 maint: untitled periodical', hidden = true, }, maint_url_status = { message = nil, anchor = 'url_status', category = 'CS1 maint: url-status', hidden = true, }, maint_zbl = { message = nil, anchor = 'zbl', category = 'CS1 maint: Zbl', hidden = true, }, } --[[--------------------------< I D _ H A N D L E R S >-------------------------------------------------------- The following contains a list of values for various defined identifiers. For each identifier we specify a variety of information necessary to properly render the identifier in the citation. parameters: a list of parameter aliases for this identifier; first in the list is the canonical form link: Wikipedia article name redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number' q: Wikidata q number for the identifier label: the label preceding the identifier; label is linked to a Wikipedia article (in this order): redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true Wikidata-supplied article name for the local wiki from id_handlers['<id>'].q local article name from id_handlers['<id>'].link prefix: the first part of a URL that will be concatenated with a second part which usually contains the identifier suffix: optional third part to be added after the identifier encode: true if URI should be percent-encoded; otherwise false COinS: identifier link or keyword for use in COinS: for identifiers registered at info-uri.info use: info:.... where '...' is the appropriate identifier label for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn for |asin= and |ol=, which require assembly, use the keyword: url for others make a URL using the value in prefix/suffix and #label, use the keyword: pre (not checked; any text other than 'info', 'rft', or 'url' works here) set to nil to leave the identifier out of the COinS separator: character or text between label and the identifier in the rendered citation id_limit: for those identifiers with established limits, this property holds the upper limit access: use this parameter to set the access level for all instances of this identifier. the value must be a valid access level for an identifier (see ['id-access'] in this file). custom_access: to enable custom access level for an identifier, set this parameter to the parameter that should control it (normally 'id-access') ]] local id_handlers = { ['ARXIV'] = { parameters = {'arxiv', 'eprint'}, link = 'arXiv', redirect = 'arXiv (identifier)', q = 'Q118398', label = 'arXiv', prefix = 'https://arxiv.org/abs/', encode = false, COinS = 'info:arxiv', separator = ':', access = 'free', -- free to read }, ['ASIN'] = { parameters = { 'asin', 'ASIN' }, link = 'Amazon Standard Identification Number', redirect = 'ASIN (identifier)', q = 'Q1753278', label = 'ASIN', prefix = 'https://www.amazon.', COinS = 'url', separator = '&nbsp;', encode = false; }, ['BIBCODE'] = { parameters = {'bibcode'}, link = 'Bibcode', redirect = 'Bibcode (identifier)', q = 'Q25754', label = 'Bibcode', prefix = 'https://ui.adsabs.harvard.edu/abs/', encode = false, COinS = 'info:bibcode', separator = ':', custom_access = 'bibcode-access', }, ['BIORXIV'] = { parameters = {'biorxiv'}, link = 'bioRxiv', redirect = 'bioRxiv (identifier)', q = 'Q19835482', label = 'bioRxiv', prefix = 'https://doi.org/', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = true, separator = '&nbsp;', }, ['CITESEERX'] = { parameters = {'citeseerx'}, link = 'CiteSeerX', redirect = 'CiteSeerX (identifier)', q = 'Q2715061', label = 'CiteSeerX', prefix = 'https://citeseerx.ist.psu.edu/viewdoc/summary?doi=', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = true, separator = '&nbsp;', }, ['DOI'] = { -- Used by InternetArchiveBot parameters = { 'doi', 'DOI'}, link = 'Digital object identifier', redirect = 'doi (identifier)', q = 'Q25670', label = 'doi', prefix = 'https://doi.org/', COinS = 'info:doi', separator = ':', encode = true, custom_access = 'doi-access', }, ['EISSN'] = { parameters = {'eissn', 'EISSN'}, link = 'International Standard Serial Number#Electronic ISSN', redirect = 'eISSN (identifier)', q = 'Q46339674', label = 'eISSN', prefix = 'https://www.worldcat.org/issn/', COinS = 'rft.eissn', encode = false, separator = '&nbsp;', }, ['HDL'] = { parameters = { 'hdl', 'HDL' }, link = 'Handle System', redirect = 'hdl (identifier)', q = 'Q3126718', label = 'hdl', prefix = 'https://hdl.handle.net/', COinS = 'info:hdl', separator = ':', encode = true, custom_access = 'hdl-access', }, ['ISBN'] = { -- Used by InternetArchiveBot parameters = {'isbn', 'ISBN'}, link = 'International Standard Book Number', redirect = 'ISBN (identifier)', q = 'Q33057', label = 'ISBN', prefix = 'Special:BookSources/', COinS = 'rft.isbn', separator = '&nbsp;', }, ['ISMN'] = { parameters = {'ismn', 'ISMN'}, link = 'International Standard Music Number', redirect = 'ISMN (identifier)', q = 'Q1666938', label = 'ISMN', prefix = '', -- not currently used; COinS = nil, -- nil because we can't use pre or rft or info: separator = '&nbsp;', }, ['ISSN'] = { parameters = {'issn', 'ISSN'}, link = 'International Standard Serial Number', redirect = 'ISSN (identifier)', q = 'Q131276', label = 'ISSN', prefix = 'https://www.worldcat.org/issn/', COinS = 'rft.issn', encode = false, separator = '&nbsp;', }, ['JFM'] = { parameters = {'jfm', 'JFM'}, link = 'Jahrbuch über die Fortschritte der Mathematik', redirect = 'JFM (identifier)', q = '', label = 'JFM', prefix = 'https://zbmath.org/?format=complete&q=an:', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, ['JSTOR'] = { parameters = {'jstor', 'JSTOR'}, link = 'JSTOR', redirect = 'JSTOR (identifier)', q = 'Q1420342', label = 'JSTOR', prefix = 'https://www.jstor.org/stable/', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', custom_access = 'jstor-access', }, ['LCCN'] = { parameters = {'lccn', 'LCCN'}, link = 'Library of Congress Control Number', redirect = 'LCCN (identifier)', q = 'Q620946', label = 'LCCN', prefix = 'https://lccn.loc.gov/', COinS = 'info:lccn', encode = false, separator = '&nbsp;', }, ['MEDRXIV'] = { parameters = {'medrxiv'}, link = 'medRxiv', redirect = 'medRxiv (identifier)', q = 'Q58465838', label = 'medRxiv', prefix = 'https://www.medrxiv.org/content/', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = false, separator = '&nbsp;', }, ['MR'] = { parameters = {'mr', 'MR'}, link = 'Mathematical Reviews', redirect = 'MR (identifier)', q = 'Q211172', label = 'MR', prefix = 'https://mathscinet.ams.org/mathscinet-getitem?mr=', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, ['OCLC'] = { parameters = {'oclc', 'OCLC'}, link = 'OCLC', redirect = 'OCLC (identifier)', q = 'Q190593', label = 'OCLC', prefix = 'https://www.worldcat.org/oclc/', COinS = 'info:oclcnum', encode = true, separator = '&nbsp;', id_limit = 10005000000, }, ['OL'] = { parameters = { 'ol', 'OL' }, link = 'Open Library', redirect = 'OL (identifier)', q = 'Q1201876', label = 'OL', prefix = 'https://openlibrary.org/', COinS = 'url', separator = '&nbsp;', encode = true, custom_access = 'ol-access', }, ['OSTI'] = { parameters = {'osti', 'OSTI'}, link = 'Office of Scientific and Technical Information', redirect = 'OSTI (identifier)', q = 'Q2015776', label = 'OSTI', prefix = 'https://www.osti.gov/biblio/', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 23010000, custom_access = 'osti-access', }, ['PMC'] = { parameters = {'pmc', 'PMC'}, link = 'PubMed Central', redirect = 'PMC (identifier)', q = 'Q229883', label = 'PMC', prefix = 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC', suffix = '', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 10700000, access = 'free', -- free to read }, ['PMID'] = { parameters = {'pmid', 'PMID'}, link = 'PubMed Identifier', redirect = 'PMID (identifier)', q = 'Q2082879', label = 'PMID', prefix = 'https://pubmed.ncbi.nlm.nih.gov/', COinS = 'info:pmid', encode = false, separator = '&nbsp;', id_limit = 37900000, }, ['RFC'] = { parameters = {'rfc', 'RFC'}, link = 'Request for Comments', redirect = 'RFC (identifier)', q = 'Q212971', label = 'RFC', prefix = 'https://tools.ietf.org/html/rfc', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', id_limit = 9300, access = 'free', -- free to read }, ['SBN'] = { parameters = {'sbn', 'SBN'}, link = 'Standard Book Number', -- redirect to International_Standard_Book_Number#History redirect = 'SBN (identifier)', label = 'SBN', prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn COinS = nil, -- nil because we can't use pre or rft or info: separator = '&nbsp;', }, ['SSRN'] = { parameters = {'ssrn', 'SSRN'}, link = 'Social Science Research Network', redirect = 'SSRN (identifier)', q = 'Q7550801', label = 'SSRN', prefix = 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 4600000, custom_access = 'ssrn-access', }, ['S2CID'] = { parameters = {'s2cid', 'S2CID'}, link = 'Semantic Scholar', redirect = 'S2CID (identifier)', q = 'Q22908627', label = 'S2CID', prefix = 'https://api.semanticscholar.org/CorpusID:', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', id_limit = 264000000, custom_access = 's2cid-access', }, ['USENETID'] = { parameters = {'message-id'}, link = 'Usenet', redirect = 'Usenet (identifier)', q = 'Q193162', label = 'Usenet:', prefix = 'news:', encode = false, COinS = 'pre', -- use prefix value separator = '&nbsp;', }, ['ZBL'] = { parameters = {'zbl', 'ZBL' }, link = 'Zentralblatt MATH', redirect = 'Zbl (identifier)', q = 'Q190269', label = 'Zbl', prefix = 'https://zbmath.org/?format=complete&q=an:', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, } --[[--------------------------< E X P O R T S >--------------------------------- ]] return { use_identifier_redirects = use_identifier_redirects, -- booleans defined in the settings at the top of this module local_lang_cat_enable = local_lang_cat_enable, date_name_auto_xlate_enable = date_name_auto_xlate_enable, date_digit_auto_xlate_enable = date_digit_auto_xlate_enable, -- tables and variables created when this module is loaded global_df = get_date_format (), -- this line can be replaced with "global_df = 'dmy-all'," to have all dates auto translated to dmy format. global_cs1_config_t = global_cs1_config_t, -- global settings from {{cs1 config}} punct_skip = build_skip_table (punct_skip, punct_meta_params), url_skip = build_skip_table (url_skip, url_meta_params), aliases = aliases, special_case_translation = special_case_translation, date_names = date_names, err_msg_supl = err_msg_supl, error_conditions = error_conditions, editor_markup_patterns = editor_markup_patterns, et_al_patterns = et_al_patterns, id_handlers = id_handlers, keywords_lists = keywords_lists, keywords_xlate = keywords_xlate, stripmarkers = stripmarkers, invisible_chars = invisible_chars, invisible_defs = invisible_defs, indic_script = indic_script, emoji_t = emoji_t, maint_cats = maint_cats, messages = messages, presentation = presentation, prop_cats = prop_cats, script_lang_codes = script_lang_codes, lang_tag_remap = lang_tag_remap, lang_name_remap = lang_name_remap, this_wiki_code = this_wiki_code, title_types = title_types, uncategorized_namespaces = uncategorized_namespaces_t, uncategorized_subpages = uncategorized_subpages, templates_using_volume = templates_using_volume, templates_using_issue = templates_using_issue, templates_not_using_page = templates_not_using_page, vol_iss_pg_patterns = vol_iss_pg_patterns, single_letter_2nd_lvl_domains_t = single_letter_2nd_lvl_domains_t, inter_wiki_map = inter_wiki_map, mw_languages_by_tag_t = mw_languages_by_tag_t, mw_languages_by_name_t = mw_languages_by_name_t, citation_class_map_t = citation_class_map_t, citation_issue_t = citation_issue_t, citation_no_volume_t = citation_no_volume_t, } 46fa8aad81f28bb571f448d36acfddc95d791bf5 Module:Citation/CS1/Configuration/doc 828 881 1953 1952 2023-10-01T10:42:07Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/Configuration/doc]] wikitext text/x-wiki {{#lst:Module:Citation/CS1/doc|header}} This configuration file contains various data that controls the functioning of [[Module:Citation/CS1]] and hence the way that Lua-based citations are generated. It has several sections among which are: # translation tables that contain most of the literal strings that may be included in Lua-based citation. If editors are copying this Module to another wiki using a language other than English, then they should translate each of these values into that language. # a list of error conditions specifying what text to display, what category to include (if any), and what help page section to refer to when errors are detected # a list of ID handlers specifying the recognized document IDs, such as ISBN, DOI, etc., and how to format them. {{#lst:Module:Citation/CS1/doc|module_components_table}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Modules that check for strip markers]] }}</includeonly> 629c7396ecd08be19b2d8d920f688c1644f989b6 Template:Party politics 10 882 1955 1954 2023-10-01T10:42:36Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Party_politics]] wikitext text/x-wiki {{Politics series sidebar | name = Party politics | bodystyle = | pretitle = Part of the [[:Category:Politics|Politics series]] | title = [[Political party|Party politics]] | titlestyle = padding-bottom:3; background:; | expanded = {{{expanded|{{{selected|{{{1|}}}}}}}}} | list1name = political spectrum | contentstyle = text-align:center; | list1title = [[Political spectrum]] | list1 = {{Sidebar |bodystyle={{subsidebar bodystyle}} |navbar=off |contentstyle=padding-top:0;padding-bottom:0.1em; | heading1 = [[Left-wing politics|Left-wing]] | content1 = {{hlist | [[Far-left politics|Far-left]] | [[Centre-left politics|Centre-left]]}} | heading2 = [[Centrism|Centre]] | content2 = {{hlist | [[Centre-left politics|Centre-left]] | [[Radical centrism|Radical centre]] | [[Centre-right politics|Centre-right]]}} | heading3 = [[Right-wing politics|Right-wing]] | content3 = {{hlist | [[Centre-right politics|Centre-right]]| [[Far-right politics|Far-right]]}} }} | list2name = platform | list2title = [[Party platform|Platform]]s/[[Ideological politics|Ideologies]] | list2 = {{flatlist| * [[Anarchism|Anarchist]] * [[Christian democracy|Christian democratic]] * [[Communism|Communist]] * [[Conservatism|Conservative]] * [[Democracy|Democratic]] * [[Environmentalism|Environmentalist]] * [[Fascism|Fascist]] * [[Fundamentalism|Fundamentalist]] * [[Globalism|Globalist]] * [[Green politics|Green]] * [[Internationalism (politics)|Internationalist]] * [[Liberalism|Liberal]] * [[Libertarianism|Libertarian]] * [[Nationalism|Nationalist]] * [[Pirate Party|Pirate Party]] * [[Populism|Populist]] * [[Progressivism|Progressive]] * [[Classical radicalism|Radical]] * [[Regionalism (politics)|Regionalist]] * [[Republicanism|Republican]] * [[Social democracy|Social democratic]] * [[Socialism|Socialist]] * [[Syncretic politics|Syncretic]]}} | list3name = types | list3title = Types | list3 = {{flatlist| * [[Elite party]] * [[Cartel party theory|Cartel party]] * [[Big tent|Catch-all party]] * [[Business-firm party|Entrepreneurial party]] * [[Mass politics|Mass party]] * [[Ruling party]] * [[Opposition (politics)|Opposition party]] * [[Parliamentary opposition]] * [[Official party status]] * [[Single-issue politics#Single-issue parties|Single-issue party]]}} | list4name = organization | list4title = Leaders and organization | list4 = {{flatlist| * [[Backbencher]] * [[Caucus]] * [[Caucus chair]] * [[Floor leader]] * [[Frontbencher]] * [[Lead candidate]] * [[Leader of the Opposition]] * [[Majority leader]] * [[Minority leader]] * [[Political faction]] * [[Parliamentary leader]] * [[Party chair]] * [[Party leader]] * [[Party spokesperson]] * [[Secretary (title)|Secretary]] * [[Shadow cabinet]] * [[Whip (politics)|Whip]]}} | list5name = Internal elections | list5title = Internal elections | list5 = {{flatlist| * [[Primary election]] * [[Leadership election]] * [[Open list]] * [[Party conference|Party convention/conference]] * [[Leadership convention]] }} | list6name = party discipline | list6title = [[Party discipline]] | list6 = {{flatlist| * [[Conscience vote]] * [[Crossing the floor]] * [[Party discipline]] * [[Party line (politics)|Party line]] * [[Party-line vote]] * [[Party switching]] }} | list7name = party systems | list7title = [[Party system]]s | list7 = {{Sidebar |bodystyle={{subsidebar bodystyle}} |navbar=off |contentstyle=padding-top:0;padding-bottom:0em; | heading1 = | content1 = {{hlist |[[One-party state|One-party]]}} {{hlist |[[Dominant-party system|Dominant-party]] |[[Two-party system|Two-party]] |[[Multi-party system|Multi-party]]}} {{hlist |[[Non-partisan democracy|Non-partisan]]}} }} | list8name = coalition | list8title= [[Coalition]]s between parties | list8 = {{flatlist| * [[Parliamentary group]] * [[Divided government]] * [[Coalition government]] * [[Confidence and supply]] * [[Consensus government]] * [[Grand coalition]] * [[Hung parliament]] * [[Majority government]] * [[Minority government]] * [[National unity government]] * [[Rotation government]]}} | list9name = lists | list9title = [[Lists of political parties]] | list9 = {{flatlist| * [[List of ruling political parties by country|Ruling parties by country]] * [[List of political parties by region|Political parties by region]] * [[List of political ideologies|Political ideologies]] * [[List of banned political parties|Banned political parties]]}} | belowclass = plainlist | belowstyle = text-align:center; font-weight:normal; border-top:1px solid; border-bottom:1px solid; | below = * {{portal-inline|Politics|size=tiny}} }}<noinclude> {{collapsible lists option|listnames="Political spectrum", "Platform", "Types", "Organization", "Internal democracy", "Party system", "Coalition", "Lists"|example=platform}} [[Category:Political party sidebar templates| ]] [[Category:Politics series sidebar templates]] </noinclude> c2ac6c0fa425d9c83eb53a72a2822ff1a654352a Template:Politics series sidebar 10 883 1957 1956 2023-10-01T10:42:41Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Politics_series_sidebar]] wikitext text/x-wiki {{Sidebar with collapsible lists | name = {{{name|{{PAGENAME}}}}} | class = {{{class|}}} {{{bodyclass|}}} | pretitle = Part of the [[:Category:Politics|Politics series]] | title = {{{title<includeonly>|</includeonly>}}} | titleclass = {{{titleclass|}}} | titlestyle = border-top:1px #fafafa solid; border-bottom:1px #fafafa solid; background:#efefef;padding:0.2em; | headingclass = {{{headingclass|}}} | headingstyle = background:#efefef;{{{headingstyle|}}} | listtitlestyle = background:#efefef; border-top:1px solid; {{{listtitlestyle|}}} | centered list titles = {{{centered list titles|}}} | contentclass = {{{contentclass|}}} | contentstyle = text-align:left;{{{contentstyle|}}} | image = {{{image|}}} | caption = {{{caption|}}} | expanded = {{{expanded|}}} | abovestyle = display:block; margin-bottom:0.5em; background:transparent; | above = {{{above|}}} | list1name = {{{list1name|}}} | list1title = {{{list1title|}}} | list1 = {{{list1<includeonly>|</includeonly>}}} | list1class = {{{list1class|}}} | list2name = {{{list2name|}}} | list2title = {{{list2title|}}} | list2 = {{{list2<includeonly>|</includeonly>}}} | list2class = {{{list2class|}}} | list3name = {{{list3name|}}} | list3title = {{{list3title|}}} | list3 = {{{list3<includeonly>|</includeonly>}}} | list3class = {{{list3class|}}} | list4name = {{{list4name|}}} | list4title = {{{list4title|}}} | list4 = {{{list4<includeonly>|</includeonly>}}} | list4class = {{{list4class|}}} | list5name = {{{list5name|}}} | list5title = {{{list5title|}}} | list5 = {{{list5<includeonly>|</includeonly>}}} | list5class = {{{list5class|}}} | list6name = {{{list6name|}}} | list6title = {{{list6title|}}} | list6 = {{{list6<includeonly>|</includeonly>}}} | list6class = {{{list6class|}}} | list7name = {{{list7name|}}} | list7title = {{{list7title|}}} | list7 = {{{list7<includeonly>|</includeonly>}}} | list7class = {{{list7class|}}} | list8name = {{{list8name|}}} | list8title = {{{list8title|}}} | list8 = {{{list8<includeonly>|</includeonly>}}} | list8class = {{{list8class|}}} | list9name = {{{list9name|}}} | list9title = {{{list9title|}}} | list9 = {{{list9<includeonly>|</includeonly>}}} | list9class = {{{list9class|}}} | list10name = {{{list10name|}}} | list10title = {{{list10title|}}} | list10 = {{{list10<includeonly>|</includeonly>}}} | list10class = {{{list10class|}}} | belowstyle = background:#efefef; | below = {{portal-inline|Politics|size=tiny}} }}<noinclude> {{documentation}} [[Category:Politics series sidebar templates| ]] </noinclude> 616b256f4c1c4adf99b4cd0aebb986edc4817116 Template:Subinfobox bodystyle 10 884 1959 1958 2023-10-01T10:42:42Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Subinfobox_bodystyle]] wikitext text/x-wiki background-color: transparent; border-collapse:collapse; border-spacing:0px; border:none; width:100%; margin:0px; font-size:100%; clear:none; float:none<noinclude> {{documentation}} </noinclude> 284ca3e8ef640a5762c6cd04c574077c4ec182bb Template:Subsidebar bodystyle 10 885 1961 1960 2023-10-01T10:42:43Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Subsidebar_bodystyle]] wikitext text/x-wiki #redirect [[Template:Subinfobox bodystyle]] 09334898141c9cd97ab7e7c9226a3424a88c0cd7 Module:Citation/CS1/Whitelist 828 886 1963 1962 2023-10-01T10:43:44Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/Whitelist]] Scribunto text/plain --[[--------------------------< S U P P O R T E D P A R A M E T E R S >-------------------------------------- Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values: true - these parameters are valid and supported parameters false - these parameters are deprecated but still supported tracked - these parameters are valid and supported parameters tracked in an eponymous properties category nil - these parameters are no longer supported. remove entirely ]] local basic_arguments_t = { ['accessdate'] = true, ['access-date'] = true, ['agency'] = true, ['archivedate'] = true, ['archive-date'] = true, ['archive-format'] = true, ['archiveurl'] = true, ['archive-url'] = true, ['article'] = true, ['article-format'] = true, ['article-number'] = true, -- {{cite journal}}, {{cite conference}}; {{citation}} when |journal= has a value ['article-url'] = true, ['article-url-access'] = true, ['arxiv'] = true, -- cite arxiv; here because allowed in cite ... as identifier ['asin'] = true, ['ASIN'] = true, ['asin-tld'] = true, ['at'] = true, ['author'] = true, ['author-first'] = true, ['author-given'] = true, ['author-last'] = true, ['author-surname'] = true, ['authorlink'] = true, ['author-link'] = true, ['author-mask'] = true, ['authors'] = true, ['bibcode'] = true, ['bibcode-access'] = true, ['biorxiv'] = true, -- cite biorxiv; here because allowed in cite ... as identifier ['chapter'] = true, ['chapter-format'] = true, ['chapter-url'] = true, ['chapter-url-access'] = true, ['citeseerx'] = true, -- cite citeseerx; here because allowed in cite ... as identifier ['collaboration'] = true, ['contribution'] = true, ['contribution-format'] = true, ['contribution-url'] = true, ['contribution-url-access'] = true, ['contributor'] = true, ['contributor-first'] = true, ['contributor-given'] = true, ['contributor-last'] = true, ['contributor-surname'] = true, ['contributor-link'] = true, ['contributor-mask'] = true, ['date'] = true, ['department'] = true, ['df'] = true, ['dictionary'] = true, ['display-authors'] = true, ['display-contributors'] = true, ['display-editors'] = true, ['display-interviewers'] = true, ['display-subjects'] = true, ['display-translators'] = true, ['doi'] = true, ['DOI'] = true, ['doi-access'] = true, ['doi-broken-date'] = true, ['edition'] = true, ['editor'] = true, ['editor-first'] = true, ['editor-given'] = true, ['editor-last'] = true, ['editor-surname'] = true, ['editor-link'] = true, ['editor-mask'] = true, ['eissn'] = true, ['EISSN'] = true, ['encyclopaedia'] = true, ['encyclopedia'] = true, ['entry'] = true, ['entry-format'] = true, ['entry-url'] = true, ['entry-url-access'] = true, ['eprint'] = true, -- cite arxiv; here because allowed in cite ... as identifier ['first'] = true, ['format'] = true, ['given'] = true, ['hdl'] = true, ['HDL'] = true, ['hdl-access'] = true, ['host'] = true, -- unique to certain templates? ['id'] = true, ['ID'] = true, ['institution'] = true, -- constrain to cite thesis? ['interviewer'] = true, ['interviewer-first'] = true, ['interviewer-given'] = true, ['interviewer-last'] = true, ['interviewer-surname'] = true, ['interviewer-link'] = true, ['interviewer-mask'] = true, ['isbn'] = true, ['ISBN'] = true, ['ismn'] = true, ['ISMN'] = true, ['issn'] = true, ['ISSN'] = true, ['issue'] = true, ['jfm'] = true, ['JFM'] = true, ['journal'] = true, ['jstor'] = true, ['JSTOR'] = true, ['jstor-access'] = true, ['lang'] = true, ['language'] = true, ['last'] = true, ['lccn'] = true, ['LCCN'] = true, ['location'] = true, ['magazine'] = true, ['medium'] = true, ['medrxiv'] = true, -- cite medrxiv; here because allowed in cite ... as identifier ['minutes'] = true, -- constrain to cite AV media and podcast? ['mode'] = true, ['mr'] = true, ['MR'] = true, ['name-list-style'] = true, ['newspaper'] = true, ['no-pp'] = true, ['no-tracking'] = true, ['number'] = true, ['oclc'] = true, ['OCLC'] = true, ['ol'] = true, ['OL'] = true, ['ol-access'] = true, ['orig-date'] = true, ['origyear'] = true, ['orig-year'] = true, ['osti'] = true, ['OSTI'] = true, ['osti-access'] = true, ['others'] = true, ['p'] = true, ['page'] = true, ['pages'] = true, ['people'] = true, ['periodical'] = true, ['place'] = true, ['pmc'] = true, ['PMC'] = true, ['pmc-embargo-date'] = true, ['pmid'] = true, ['PMID'] = true, ['postscript'] = true, ['pp'] = true, ['publication-date'] = true, ['publication-place'] = true, ['publisher'] = true, ['quotation'] = true, ['quote'] = true, ['quote-page'] = true, ['quote-pages'] = true, ['ref'] = true, ['rfc'] = true, ['RFC'] = true, ['sbn'] = true, ['SBN'] = true, ['scale'] = true, ['script-article'] = true, ['script-chapter'] = true, ['script-contribution'] = true, ['script-entry'] = true, ['script-journal'] = true, ['script-magazine'] = true, ['script-newspaper'] = true, ['script-periodical'] = true, ['script-quote'] = true, ['script-section'] = true, ['script-title'] = true, ['script-website'] = true, ['script-work'] = true, ['section'] = true, ['section-format'] = true, ['section-url'] = true, ['section-url-access'] = true, ['series'] = true, ['ssrn'] = true, -- cite ssrn; these three here because allowed in cite ... as identifier ['SSRN'] = true, ['ssrn-access'] = true, ['subject'] = true, ['subject-first'] = true, ['subject-given'] = true, ['subject-last'] = true, ['subject-link'] = true, ['subject-mask'] = true, ['subject-surname'] = true, ['surname'] = true, ['s2cid'] = true, ['S2CID'] = true, ['s2cid-access'] = true, ['template-doc-demo'] = true, ['time'] = true, -- constrain to cite av media and podcast? ['time-caption'] = true, -- constrain to cite av media and podcast? ['title'] = true, ['title-link'] = true, ['title-note'] = true, ['translator'] = true, ['translator-first'] = true, ['translator-given'] = true, ['translator-last'] = true, ['translator-surname'] = true, ['translator-link'] = true, ['translator-mask'] = true, ['trans-article'] = true, ['trans-chapter'] = true, ['trans-contribution'] = true, ['trans-entry'] = true, ['trans-journal'] = true, ['trans-magazine'] = true, ['trans-newspaper'] = true, ['trans-periodical'] = true, ['trans-quote'] = true, ['trans-section'] = true, ['trans-title'] = true, ['trans-website'] = true, ['trans-work'] = true, ['type'] = true, ['url'] = true, ['URL'] = true, ['url-access'] = true, ['url-status'] = true, ['vauthors'] = true, ['veditors'] = true, ['version'] = true, ['via'] = true, ['volume'] = true, ['website'] = true, ['work'] = true, ['year'] = true, ['zbl'] = true, ['ZBL'] = true, } local numbered_arguments_t = { ['author#'] = true, ['author-first#'] = true, ['author#-first'] = true, ['author-given#'] = true, ['author#-given'] = true, ['author-last#'] = true, ['author#-last'] = true, ['author-surname#'] = true, ['author#-surname'] = true, ['author-link#'] = true, ['author#-link'] = true, ['authorlink#'] = true, ['author#link'] = true, ['author-mask#'] = true, ['author#-mask'] = true, ['contributor#'] = true, ['contributor-first#'] = true, ['contributor#-first'] = true, ['contributor-given#'] = true, ['contributor#-given'] = true, ['contributor-last#'] = true, ['contributor#-last'] = true, ['contributor-surname#'] = true, ['contributor#-surname'] = true, ['contributor-link#'] = true, ['contributor#-link'] = true, ['contributor-mask#'] = true, ['contributor#-mask'] = true, ['editor#'] = true, ['editor-first#'] = true, ['editor#-first'] = true, ['editor-given#'] = true, ['editor#-given'] = true, ['editor-last#'] = true, ['editor#-last'] = true, ['editor-surname#'] = true, ['editor#-surname'] = true, ['editor-link#'] = true, ['editor#-link'] = true, ['editor-mask#'] = true, ['editor#-mask'] = true, ['first#'] = true, ['given#'] = true, ['host#'] = true, ['interviewer#'] = true, ['interviewer-first#'] = true, ['interviewer#-first'] = true, ['interviewer-given#'] = true, ['interviewer#-given'] = true, ['interviewer-last#'] = true, ['interviewer#-last'] = true, ['interviewer-surname#'] = true, ['interviewer#-surname'] = true, ['interviewer-link#'] = true, ['interviewer#-link'] = true, ['interviewer-mask#'] = true, ['interviewer#-mask'] = true, ['last#'] = true, ['subject#'] = true, ['subject-first#'] = true, ['subject#-first'] = true, ['subject-given#'] = true, ['subject#-given'] = true, ['subject-last#'] = true, ['subject#-last'] = true, ['subject-link#'] = true, ['subject#-link'] = true, ['subject-mask#'] = true, ['subject#-mask'] = true, ['subject-surname#'] = true, ['subject#-surname'] = true, ['surname#'] = true, ['translator#'] = true, ['translator-first#'] = true, ['translator#-first'] = true, ['translator-given#'] = true, ['translator#-given'] = true, ['translator-last#'] = true, ['translator#-last'] = true, ['translator-surname#'] = true, ['translator#-surname'] = true, ['translator-link#'] = true, ['translator#-link'] = true, ['translator-mask#'] = true, ['translator#-mask'] = true, } --[[--------------------------< P R E P R I N T S U P P O R T E D P A R A M E T E R S >-------------------- Cite arXiv, cite biorxiv, cite citeseerx, cite medrxiv, and cite ssrn are preprint templates that use the limited set of parameters defined in the limited_basic_arguments and limited_numbered_arguments tables. Those lists are supplemented with a template-specific list of parameters that are required by the particular template and may be exclusive to one of the preprint templates. Some of these parameters may also be available to the general cs1|2 templates. Same conventions for true/false/tracked/nil as above. ]] local preprint_arguments_t = { arxiv = { ['arxiv'] = true, -- cite arxiv and arxiv identifiers ['class'] = true, ['eprint'] = true, -- cite arxiv and arxiv identifiers }, biorxiv = { ['biorxiv'] = true, }, citeseerx = { ['citeseerx'] = true, }, medrxiv = { ['medrxiv'] = true, }, ssrn = { ['ssrn'] = true, ['SSRN'] = true, ['ssrn-access'] = true, }, } --[[--------------------------< L I M I T E D S U P P O R T E D P A R A M E T E R S >---------------------- cite arxiv, cite biorxiv, cite citeseerx, cite medrxiv, and cite ssrn templates are preprint templates so are allowed only a limited subset of parameters allowed to all other cs1|2 templates. The limited subset is defined here. This list of parameters also used by {{cite document}} Same conventions for true/false/tracked/nil as above. ]] local limited_basic_arguments_t = { ['at'] = true, ['author'] = true, ['author-first'] = true, ['author-given'] = true, ['author-last'] = true, ['author-surname'] = true, ['author-link'] = true, ['authorlink'] = true, ['author-mask'] = true, ['authors'] = true, ['collaboration'] = true, ['date'] = true, ['df'] = true, ['display-authors'] = true, ['first'] = true, ['given'] = true, ['language'] = true, ['last'] = true, ['mode'] = true, ['name-list-style'] = true, ['no-tracking'] = true, ['p'] = true, ['page'] = true, ['pages'] = true, ['postscript'] = true, ['pp'] = true, ['quotation'] = true, ['quote'] = true, ['ref'] = true, ['surname'] = true, ['template-doc-demo'] = true, ['title'] = true, ['trans-title'] = true, ['vauthors'] = true, ['year'] = true, } local limited_numbered_arguments_t = { ['author#'] = true, ['author-first#'] = true, ['author#-first'] = true, ['author-given#'] = true, ['author#-given'] = true, ['author-last#'] = true, ['author#-last'] = true, ['author-surname#'] = true, ['author#-surname'] = true, ['author-link#'] = true, ['author#-link'] = true, ['authorlink#'] = true, ['author#link'] = true, ['author-mask#'] = true, ['author#-mask'] = true, ['first#'] = true, ['given#'] = true, ['last#'] = true, ['surname#'] = true, } --[[--------------------------< U N I Q U E _ A R G U M E N T S >---------------------------------------------- Some templates have unique parameters. Those templates and their unique parameters are listed here. Keys in this table are the template's CitationClass parameter value Same conventions for true/false/tracked/nil as above. ]] local unique_arguments_t = { ['audio-visual'] = { ['transcript'] = true, ['transcript-format'] = true, ['transcript-url'] = true, }, conference = { ['book-title'] = true, ['conference'] = true, ['conference-format'] = true, ['conference-url'] = true, ['event'] = true, }, episode = { ['airdate'] = true, ['air-date'] = true, ['credits'] = true, ['episode-link'] = true, -- alias of |title-link= ['network'] = true, ['season'] = true, ['series-link'] = true, ['series-no'] = true, ['series-number'] = true, ['station'] = true, ['transcript'] = true, ['transcript-format'] = true, ['transcript-url'] = true, }, mailinglist = { ['mailing-list'] = true, }, map = { ['cartography'] = true, ['inset'] = true, ['map'] = true, ['map-format'] = true, ['map-url'] = true, ['map-url-access'] = true, ['script-map'] = true, ['sections'] = true, ['sheet'] = true, ['sheets'] = true, ['trans-map'] = true, }, newsgroup = { ['message-id'] = true, ['newsgroup'] = true, }, report = { ['docket'] = true, }, serial = { ['airdate'] = true, ['air-date'] = true, ['credits'] = true, ['episode'] = true, -- cite serial only TODO: make available to cite episode? ['episode-link'] = true, -- alias of |title-link= ['network'] = true, ['series-link'] = true, ['station'] = true, }, speech = { ['conference'] = true, ['conference-format'] = true, ['conference-url'] = true, ['event'] = true, }, thesis = { ['degree'] = true, ['docket'] = true, }, } --[[--------------------------< C I T E _ D O C U M E N T >---------------------------------------------------- Special case for cite document. This template takes the limited basic and limited enumerated parameters plus others that are apply only to standalone published sources that cannot be cited any other way; no url, book, periodical, etc parameters; limited support for name lists and named identifiers. when validating parameters in {{cite document}} templates, the basic and ]] local document_arguments_t = { ['bibcode'] = true, ['bibcode-access'] = true, ['doi'] = true, ['DOI'] = true, ['doi-access'] = true, ['doi-broken-date'] = true, ['hdl'] = true, ['HDL'] = true, ['hdl-access'] = true, ['id'] = true, ['ID'] = true, ['jfm'] = true, ['JFM'] = true, ['lang'] = true, ['location'] = true, ['mr'] = true, ['MR'] = true, ['no-pp'] = true, ['orig-date'] = true, ['origyear'] = true, ['orig-year'] = true, ['osti'] = true, ['OSTI'] = true, ['osti-access'] = true, ['place'] = true, ['publisher'] = true, ['quote-page'] = true, ['quote-pages'] = true, ['script-quote'] = true, ['script-title'] = true, ['title-link'] = true, ['translator'] = true, ['translator-first'] = true, ['translator-given'] = true, ['translator-last'] = true, ['translator-surname'] = true, ['translator-link'] = true, ['translator-mask'] = true, ['trans-quote'] = true, ['type'] = true, ['zbl'] = true, ['ZBL'] = true, } local document_numbered_arguments_t = { ['translator#'] = true, ['translator-first#'] = true, ['translator#-first'] = true, ['translator-given#'] = true, ['translator#-given'] = true, ['translator-last#'] = true, ['translator#-last'] = true, ['translator-surname#'] = true, ['translator#-surname'] = true, ['translator-link#'] = true, ['translator#-link'] = true, ['translator-mask#'] = true, ['translator#-mask'] = true, } --[[--------------------------< L I S T _ C O M B I N E >------------------------------------------------------ makes one table from a list of tables. <lists_t> is a sequence of tables to be combined ]] local function list_combine (lists_t) local out_t = {}; for _, list_t in ipairs (lists_t) do -- for each list in <lists_t> for k, v in pairs (list_t) do -- extract each k/v pair out_t[k] = v; -- add to <out_t> end end return out_t; -- and done end --[[--------------------------< T E M P L A T E _ L I S T _ G E T >-------------------------------------------- gets a list of the templates from table t ]] local function template_list_get (t) local out_t = {}; -- a table for output for k, _ in pairs (t) do -- spin through the table and collect the keys table.insert (out_t, k) -- add each key to the output table end return out_t; -- and done end --[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------ ]] return { preprint_arguments_t = preprint_arguments_t, preprint_template_list_t = template_list_get (preprint_arguments_t), -- make a template list from preprint_arguments{} table unique_arguments_t = unique_arguments_t, unique_param_template_list_t = template_list_get (unique_arguments_t), -- make a template list from unique_arguments{} table document_parameters_t = list_combine ({limited_basic_arguments_t, limited_numbered_arguments_t, document_arguments_t, document_numbered_arguments_t}); common_parameters_t = list_combine ({basic_arguments_t, numbered_arguments_t}); limited_parameters_t = list_combine ({limited_basic_arguments_t, limited_numbered_arguments_t}); }; bd347271e3380cb17f22c0e3924982798e9adc07 Template:' 10 887 1965 1964 2023-10-01T10:43:47Z Führerredux 2 1 revision imported from [[:wikipedia:Template:']] wikitext text/x-wiki #REDIRECT [[Template:Apostrophe]] {{Redirect category shell| {{R from move}} }} eec747ee088b154d601ca1ea8201cf3e92fc33c4 Template:Apostrophe 10 888 1967 1966 2023-10-01T10:43:51Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Apostrophe]] wikitext text/x-wiki <span class="nowrap" style="padding-left:0.1em;">&#39;</span><noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 7ffcfc167bac0db92bf907ef65b839f48971bdb4 Module:Citation/CS1/Whitelist/doc 828 889 1969 1968 2023-10-01T10:43:53Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/Whitelist/doc]] wikitext text/x-wiki {{#lst:Module:Citation/CS1/doc|header}} This module contains a list of all parameters that [[Module:Citation/CS1]] knows about. Each parameter is assigned a state. * '''true''': These parameters are valid and supported parameters * '''false''': These parameters are deprecated but still supported * '''{{'}}tracked{{'}}''': These parameters are valid and supported parameters tracked in an eponymous properties category. * '''nil''': Parameters not present are not supported, or no longer supported. The <code>basic_arguments</code> table is supported by all templates. {{#lst:Module:Citation/CS1/doc|module_components_table}} f600e3ad575307e19afcbe7dc3e978954fa94a9f Template:Sfnm 10 890 1971 1970 2023-10-01T10:44:05Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Sfnm]] wikitext text/x-wiki <includeonly>{{#invoke:Footnotes|sfnm|template=sfnm}}</includeonly><noinclude> {{Documentation}} </noinclude> 19c7cdc6dc3804ba6e3901ed90cd2817f9956898 Template:Cite journal 10 891 1973 1972 2023-10-01T10:44:06Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_journal]] wikitext text/x-wiki <includeonly>{{#invoke:Citation/CS1|citation |CitationClass=journal }}</includeonly><noinclude> {{documentation}} </noinclude> 50b33a0bde8c0dc83f3753f7873bcb448b565944 Module:Citation/CS1/Utilities 828 892 1975 1974 2023-10-01T10:44:07Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/Utilities]] Scribunto text/plain local z = { error_cats_t = {}; -- for categorizing citations that contain errors error_ids_t = {}; -- list of error identifiers; used to prevent duplication of certain errors; local to this module error_msgs_t = {}; -- sequence table of error messages maint_cats_t = {}; -- for categorizing citations that aren't erroneous per se, but could use a little work prop_cats_t = {}; -- for categorizing citations based on certain properties, language of source for instance prop_keys_t = {}; -- for adding classes to the citation's <cite> tag }; --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration --[[--------------------------< I S _ S E T >------------------------------------------------------------------ Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string. ]] local function is_set (var) return not (var == nil or var == ''); end --[[--------------------------< I N _ A R R A Y >-------------------------------------------------------------- Whether needle is in haystack ]] local function in_array (needle, haystack) if needle == nil then return false; end for n, v in ipairs (haystack) do if v == needle then return n; end end return false; end --[[--------------------------< H A S _ A C C E P T _ A S _ W R I T T E N >------------------------------------ When <str> is wholly wrapped in accept-as-written markup, return <str> without markup and true; return <str> and false else with allow_empty = false, <str> must have at least one character inside the markup with allow_empty = true, <str> the markup frame can be empty like (()) to distinguish an empty template parameter from the specific condition "has no applicable value" in citation-context. After further evaluation the two cases might be merged at a later stage, but should be kept separated for now. ]] local function has_accept_as_written (str, allow_empty) if not is_set (str) then return str, false; end local count; if true == allow_empty then str, count = str:gsub ('^%(%((.*)%)%)$', '%1'); -- allows (()) to be an empty set else str, count = str:gsub ('^%(%((.+)%)%)$', '%1'); end return str, 0 ~= count; end --[[--------------------------< S U B S T I T U T E >---------------------------------------------------------- Populates numbered arguments in a message string using an argument table. <args> may be a single string or a sequence table of multiple strings. ]] local function substitute (msg, args) return args and mw.message.newRawMessage (msg, args):plain() or msg; end --[[--------------------------< E R R O R _ C O M M E N T >---------------------------------------------------- Wraps error messages with CSS markup according to the state of hidden. <content> may be a single string or a sequence table of multiple strings. ]] local function error_comment (content, hidden) return substitute (hidden and cfg.presentation['hidden-error'] or cfg.presentation['visible-error'], content); end --[[--------------------------< H Y P H E N _ T O _ D A S H >-------------------------------------------------- Converts a hyphen to a dash under certain conditions. The hyphen must separate like items; unlike items are returned unmodified. These forms are modified: letter - letter (A - B) digit - digit (4-5) digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5) letterdigit - letterdigit (A1-A5) (an optional separator between letter and digit is supported – a.1-a.5 or a-1-a-5) digitletter - digitletter (5a - 5d) (an optional separator between letter and digit is supported – 5.a-5.d or 5-a-5-d) any other forms are returned unmodified. str may be a comma- or semicolon-separated list ]] local function hyphen_to_dash (str) if not is_set (str) then return str; end local accept; -- boolean str = str:gsub ("(%(%(.-%)%))", function(m) return m:gsub(",", ","):gsub(";", ";") end) -- replace commas and semicolons in accept-as-written markup with similar unicode characters so they'll be ignored during the split str = str:gsub ('&[nm]dash;', {['&ndash;'] = '–', ['&mdash;'] = '—'}); -- replace &mdash; and &ndash; entities with their characters; semicolon mucks up the text.split str = str:gsub ('&#45;', '-'); -- replace HTML numeric entity with hyphen character str = str:gsub ('&nbsp;', ' '); -- replace &nbsp; entity with generic keyboard space character local out = {}; local list = mw.text.split (str, '%s*[,;]%s*'); -- split str at comma or semicolon separators if there are any for _, item in ipairs (list) do -- for each item in the list item, accept = has_accept_as_written (item); -- remove accept-this-as-written markup when it wraps all of item if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit) item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter) item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2'); -- replace hyphen, remove extraneous space characters else item = mw.ustring.gsub (item, '%s*[–—]%s*', '–'); -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace end end table.insert (out, item); -- add the (possibly modified) item to the output table end local temp_str = ''; -- concatenate the output table into a comma separated string temp_str, accept = has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out if accept then temp_str = has_accept_as_written (str); -- when global markup removed, return original str; do it this way to suppress boolean second return value return temp_str:gsub(",", ","):gsub(";", ";"); else return temp_str:gsub(",", ","):gsub(";", ";"); -- else, return assembled temp_str end end --[=[-------------------------< M A K E _ W I K I L I N K >---------------------------------------------------- Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only link is provided (or link and display are the same), returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an empty string. ]=] local function make_wikilink (link, display) if not is_set (link) then return '' end if is_set (display) and link ~= display then return table.concat ({'[[', link, '|', display, ']]'}); else return table.concat ({'[[', link, ']]'}); end end --[[--------------------------< S E T _ M E S S A G E >---------------------------------------------------------- Sets an error message using the ~/Configuration error_conditions{} table along with arguments supplied in the function call, inserts the resulting message in z.error_msgs_t{} sequence table, and returns the error message. <error_id> – key value for appropriate error handler in ~/Configuration error_conditions{} table <arguments> – may be a single string or a sequence table of multiple strings to be subsititued into error_conditions[error_id].message <raw> – boolean true – causes this function to return the error message not wrapped in visible-error, hidden-error span tag; returns error_conditions[error_id].hidden as a second return value does not add message to z.error_msgs_t sequence table false, nil – adds message wrapped in visible-error, hidden-error span tag to z.error_msgs_t returns the error message wrapped in visible-error, hidden-error span tag; there is no second return value <prefix> – string to be prepended to <message> -- TODO: remove support for these unused(?) arguments? <suffix> – string to be appended to <message> TODO: change z.error_cats_t and z.maint_cats_t to have the form cat_name = true? this to avoid dups without having to have an extra table ]] local added_maint_cats = {} -- list of maintenance categories that have been added to z.maint_cats_t; TODO: figure out how to delete this table local function set_message (error_id, arguments, raw, prefix, suffix) local error_state = cfg.error_conditions[error_id]; prefix = prefix or ''; suffix = suffix or ''; if error_state == nil then error (cfg.messages['undefined_error'] .. ': ' .. error_id); -- because missing error handler in Module:Citation/CS1/Configuration elseif is_set (error_state.category) then if error_state.message then -- when error_state.message defined, this is an error message table.insert (z.error_cats_t, error_state.category); else if not added_maint_cats[error_id] then added_maint_cats[error_id] = true; -- note that we've added this category table.insert (z.maint_cats_t, substitute (error_state.category, arguments)); -- make cat name then add to table end return; -- because no message, nothing more to do end end local message = substitute (error_state.message, arguments); message = table.concat ( { message, ' (', make_wikilink ( table.concat ( { cfg.messages['help page link'], '#', error_state.anchor }), cfg.messages['help page label']), ')' }); z.error_ids_t[error_id] = true; if z.error_ids_t['err_citation_missing_title'] and -- if missing-title error already noted in_array (error_id, {'err_bare_url_missing_title', 'err_trans_missing_title'}) then -- and this error is one of these return '', false; -- don't bother because one flavor of missing title is sufficient end message = table.concat ({prefix, message, suffix}); if true == raw then return message, error_state.hidden; -- return message not wrapped in visible-error, hidden-error span tag end message = error_comment (message, error_state.hidden); -- wrap message in visible-error, hidden-error span tag table.insert (z.error_msgs_t, message); -- add it to the messages sequence table return message; -- and done; return value generally not used but is used as a flag in various functions of ~/Identifiers end --[[-------------------------< I S _ A L I A S _ U S E D >----------------------------------------------------- This function is used by select_one() to determine if one of a list of alias parameters is in the argument list provided by the template. Input: args – pointer to the arguments table from calling template alias – one of the list of possible aliases in the aliases lists from Module:Citation/CS1/Configuration index – for enumerated parameters, identifies which one enumerated – true/false flag used to choose how enumerated aliases are examined value – value associated with an alias that has previously been selected; nil if not yet selected selected – the alias that has previously been selected; nil if not yet selected error_list – list of aliases that are duplicates of the alias already selected Returns: value – value associated with alias we selected or that was previously selected or nil if an alias not yet selected selected – the alias we selected or the alias that was previously selected or nil if an alias not yet selected ]] local function is_alias_used (args, alias, index, enumerated, value, selected, error_list) if enumerated then -- is this a test for an enumerated parameters? alias = alias:gsub ('#', index); -- replace '#' with the value in index else alias = alias:gsub ('#', ''); -- remove '#' if it exists end if is_set (args[alias]) then -- alias is in the template's argument list if value ~= nil and selected ~= alias then -- if we have already selected one of the aliases local skip; for _, v in ipairs (error_list) do -- spin through the error list to see if we've added this alias if v == alias then skip = true; break; -- has been added so stop looking end end if not skip then -- has not been added so table.insert (error_list, alias); -- add error alias to the error list end else value = args[alias]; -- not yet selected an alias, so select this one selected = alias; end end return value, selected; -- return newly selected alias, or previously selected alias end --[[--------------------------< A D D _ M A I N T _ C A T >------------------------------------------------------ Adds a category to z.maint_cats_t using names from the configuration file with additional text if any. To prevent duplication, the added_maint_cats table lists the categories by key that have been added to z.maint_cats_t. ]] local function add_maint_cat (key, arguments) if not added_maint_cats [key] then added_maint_cats [key] = true; -- note that we've added this category table.insert (z.maint_cats_t, substitute (cfg.maint_cats [key], arguments)); -- make name then add to table end end --[[--------------------------< A D D _ P R O P _ C A T >-------------------------------------------------------- Adds a category to z.prop_cats_t using names from the configuration file with additional text if any. foreign_lang_source and foreign_lang_source_2 keys have a language code appended to them so that multiple languages may be categorized but multiples of the same language are not categorized. added_prop_cats is a table declared in page scope variables above ]] local added_prop_cats = {}; -- list of property categories that have been added to z.prop_cats_t local function add_prop_cat (key, arguments, key_modifier) local key_modified = key .. ((key_modifier and key_modifier) or ''); -- modify <key> with <key_modifier> if present and not nil if not added_prop_cats [key_modified] then added_prop_cats [key_modified] = true; -- note that we've added this category table.insert (z.prop_cats_t, substitute (cfg.prop_cats [key], arguments)); -- make name then add to table table.insert (z.prop_keys_t, 'cs1-prop-' .. key); -- convert key to class for use in the citation's <cite> tag end end --[[--------------------------< S A F E _ F O R _ I T A L I C S >---------------------------------------------- Protects a string that will be wrapped in wiki italic markup '' ... '' Note: We cannot use <i> for italics, as the expected behavior for italics specified by ''...'' in the title is that they will be inverted (i.e. unitalicized) in the resulting references. In addition, <i> and '' tend to interact poorly under Mediawiki's HTML tidy. ]] local function safe_for_italics (str) if not is_set (str) then return str end if str:sub (1, 1) == "'" then str = "<span></span>" .. str; end if str:sub (-1, -1) == "'" then str = str .. "<span></span>"; end return str:gsub ('\n', ' '); -- Remove newlines as they break italics. end --[[--------------------------< W R A P _ S T Y L E >---------------------------------------------------------- Applies styling to various parameters. Supplied string is wrapped using a message_list configuration taking one argument; protects italic styled parameters. Additional text taken from citation_config.presentation - the reason this function is similar to but separate from wrap_msg(). ]] local function wrap_style (key, str) if not is_set (str) then return ""; elseif in_array (key, {'italic-title', 'trans-italic-title'}) then str = safe_for_italics (str); end return substitute (cfg.presentation[key], {str}); end --[[--------------------------< M A K E _ S E P _ L I S T >------------------------------------------------------------ make a separated list of items using provided separators. <sep_list> - typically '<comma><space>' <sep_list_pair> - typically '<space>and<space>' <sep_list_end> - typically '<comma><space>and<space>' or '<comma><space>&<space>' defaults to cfg.presentation['sep_list'], cfg.presentation['sep_list_pair'], and cfg.presentation['sep_list_end'] if <sep_list_end> is specified, <sep_list> and <sep_list_pair> must also be supplied ]] local function make_sep_list (count, list_seq, sep_list, sep_list_pair, sep_list_end) local list = ''; if not sep_list then -- set the defaults sep_list = cfg.presentation['sep_list']; sep_list_pair = cfg.presentation['sep_list_pair']; sep_list_end = cfg.presentation['sep_list_end']; end if 2 >= count then list = table.concat (list_seq, sep_list_pair); -- insert separator between two items; returns list_seq[1] then only one item elseif 2 < count then list = table.concat (list_seq, sep_list, 1, count - 1); -- concatenate all but last item with plain list separator list = table.concat ({list, list_seq[count]}, sep_list_end); -- concatenate last item onto end of <list> with final separator end return list; end --[[--------------------------< S E L E C T _ O N E >---------------------------------------------------------- Chooses one matching parameter from a list of parameters to consider. The list of parameters to consider is just names. For parameters that may be enumerated, the position of the numerator in the parameter name is identified by the '#' so |author-last1= and |author1-last= are represented as 'author-last#' and 'author#-last'. Because enumerated parameter |<param>1= is an alias of |<param>= we must test for both possibilities. Generates an error if more than one match is present. ]] local function select_one (args, aliases_list, error_condition, index) local value = nil; -- the value assigned to the selected parameter local selected = ''; -- the name of the parameter we have chosen local error_list = {}; if index ~= nil then index = tostring(index); end for _, alias in ipairs (aliases_list) do -- for each alias in the aliases list if alias:match ('#') then -- if this alias can be enumerated if '1' == index then -- when index is 1 test for enumerated and non-enumerated aliases value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); -- first test for non-enumerated alias end value, selected = is_alias_used (args, alias, index, true, value, selected, error_list); -- test for enumerated alias else value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); -- test for non-enumerated alias end end if #error_list > 0 and 'none' ~= error_condition then -- for cases where this code is used outside of extract_names() for i, v in ipairs (error_list) do error_list[i] = wrap_style ('parameter', v); end table.insert (error_list, wrap_style ('parameter', selected)); set_message (error_condition, {make_sep_list (#error_list, error_list)}); end return value, selected; end --[=[-------------------------< R E M O V E _ W I K I _ L I N K >---------------------------------------------- Gets the display text from a wikilink like [[A|B]] or [[B]] gives B The str:gsub() returns either A|B froma [[A|B]] or B from [[B]] or B from B (no wikilink markup). In l(), l:gsub() removes the link and pipe (if they exist); the second :gsub() trims whitespace from the label if str was wrapped in wikilink markup. Presumably, this is because without wikimarkup in str, there is no match in the initial gsub, the replacement function l() doesn't get called. ]=] local function remove_wiki_link (str) return (str:gsub ("%[%[([^%[%]]*)%]%]", function(l) return l:gsub ("^[^|]*|(.*)$", "%1" ):gsub ("^%s*(.-)%s*$", "%1"); end)); end --[=[-------------------------< I S _ W I K I L I N K >-------------------------------------------------------- Determines if str is a wikilink, extracts, and returns the wikilink type, link text, and display text parts. If str is a complex wikilink ([[L|D]]): returns wl_type 2 and D and L from [[L|D]]; if str is a simple wikilink ([[D]]) returns wl_type 1 and D from [[D]] and L as empty string; if not a wikilink: returns wl_type 0, str as D, and L as empty string. trims leading and trailing whitespace and pipes from L and D ([[L|]] and [[|D]] are accepted by MediaWiki and treated like [[D]]; while [[|D|]] is not accepted by MediaWiki, here, we accept it and return D without the pipes). ]=] local function is_wikilink (str) local D, L local wl_type = 2; -- assume that str is a complex wikilink [[L|D]] if not str:match ('^%[%[[^%]]+%]%]$') then -- is str some sort of a wikilink (must have some sort of content) return 0, str, ''; -- not a wikilink; return wl_type as 0, str as D, and empty string as L end L, D = str:match ('^%[%[([^|]+)|([^%]]+)%]%]$'); -- get L and D from [[L|D]] if not is_set (D) then -- if no separate display D = str:match ('^%[%[([^%]]*)|*%]%]$'); -- get D from [[D]] or [[D|]] wl_type = 1; end D = mw.text.trim (D, '%s|'); -- trim white space and pipe characters return wl_type, D, L or ''; end --[[--------------------------< S T R I P _ A P O S T R O P H E _ M A R K U P >-------------------------------- Strip wiki italic and bold markup from argument so that it doesn't contaminate COinS metadata. This function strips common patterns of apostrophe markup. We presume that editors who have taken the time to markup a title have, as a result, provided valid markup. When they don't, some single apostrophes are left behind. Returns the argument without wiki markup and a number; the number is more-or-less meaningless except as a flag to indicate that markup was replaced; do not rely on it as an indicator of how many of any kind of markup was removed; returns the argument and nil when no markup removed ]] local function strip_apostrophe_markup (argument) if not is_set (argument) then return argument, nil; -- no argument, nothing to do end if nil == argument:find ( "''", 1, true ) then -- Is there at least one double apostrophe? If not, exit. return argument, nil; end local flag; while true do if argument:find ("'''''", 1, true) then -- bold italic (5) argument, flag = argument:gsub ("%'%'%'%'%'", ""); -- remove all instances of it elseif argument:find ("''''", 1, true) then -- italic start and end without content (4) argument, flag=argument:gsub ("%'%'%'%'", ""); elseif argument:find ("'''", 1, true) then -- bold (3) argument, flag=argument:gsub ("%'%'%'", ""); elseif argument:find ("''", 1, true) then -- italic (2) argument, flag = argument:gsub ("%'%'", ""); else break; end end return argument, flag; -- done end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local cfg table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr) cfg = cfg_table_ptr; end --[[--------------------------< E X P O R T S >---------------------------------------------------------------- ]] return { add_maint_cat = add_maint_cat, -- exported functions add_prop_cat = add_prop_cat, error_comment = error_comment, has_accept_as_written = has_accept_as_written, hyphen_to_dash = hyphen_to_dash, in_array = in_array, is_set = is_set, is_wikilink = is_wikilink, make_sep_list = make_sep_list, make_wikilink = make_wikilink, remove_wiki_link = remove_wiki_link, safe_for_italics = safe_for_italics, select_one = select_one, set_message = set_message, set_selected_modules = set_selected_modules, strip_apostrophe_markup = strip_apostrophe_markup, substitute = substitute, wrap_style = wrap_style, z = z, -- exported table } b006801b48981b2987f20fc09cbe0dfda525e044 Module:Citation/CS1/Date validation 828 893 1977 1976 2023-10-01T10:44:08Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/Date_validation]] Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local add_prop_cat, is_set, in_array, set_message, substitute, wrap_style; -- imported functions from selected Module:Citation/CS1/Utilities local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration --[[--------------------------< F I L E - S C O P E D E C L A R A T I O N S >-------------------------------- File-scope variables are declared here ]] local lang_object = mw.getContentLanguage(); -- used by is_valid_accessdate(), is_valid_year(), date_name_xlate(); TODO: move to ~/Configuration? local year_limit; -- used by is_valid_year() --[=[-------------------------< I S _ V A L I D _ A C C E S S D A T E >---------------------------------------- returns true if: Wikipedia start date <= accessdate < today + 2 days Wikipedia start date is 2001-01-15T00:00:00 UTC which is 979516800 seconds after 1970-01-01T00:00:00 UTC (the start of Unix time) accessdate is the date provided in |access-date= at time 00:00:00 UTC today is the current date at time 00:00:00 UTC plus 48 hours if today is 2015-01-01T00:00:00 then adding 24 hours gives 2015-01-02T00:00:00 – one second more than today adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow This function does not work if it is fed month names for languages other than English. Wikimedia #time: parser apparently doesn't understand non-English date month names. This function will always return false when the date contains a non-English month name because good1 is false after the call to lang.formatDate(). To get around that call this function with YYYY-MM-DD format dates. ]=] local function is_valid_accessdate (accessdate) local good1, good2; local access_ts, tomorrow_ts; -- to hold Unix time stamps representing the dates good1, access_ts = pcall (lang_object.formatDate, lang_object, 'U', accessdate ); -- convert accessdate value to Unix timestamp good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which which tonumber() may not understand access_ts = tonumber (access_ts) or lang_object:parseFormattedNumber (access_ts); -- convert to numbers for the comparison; tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts); else return false; -- one or both failed to convert to Unix time stamp end if 979516800 <= access_ts and access_ts < tomorrow_ts then -- Wikipedia start date <= accessdate < tomorrow's date return true; else return false; -- accessdate out of range end end --[[--------------------------< G E T _ M O N T H _ N U M B E R >---------------------------------------------- returns a number according to the month in a date: 1 for January, etc. Capitalization and spelling must be correct. If not a valid month, returns 0 ]] local function get_month_number (month) return cfg.date_names['local'].long[month] or cfg.date_names['local'].short[month] or -- look for local names first cfg.date_names['en'].long[month] or cfg.date_names['en'].short[month] or -- failing that, look for English names 0; -- not a recognized month name end --[[--------------------------< G E T _ S E A S O N _ N U M B E R >-------------------------------------------- returns a number according to the sequence of seasons in a year: 21 for Spring, etc. Capitalization and spelling must be correct. If not a valid season, returns 0. 21-24 = Spring, Summer, Autumn, Winter, independent of “Hemisphere” returns 0 when <param> is not |date= Season numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons. EDTF does support the distinction between north and south hemisphere seasons but cs1|2 has no way to make that distinction. These additional divisions not currently supported: 25-28 = Spring - Northern Hemisphere, Summer- Northern Hemisphere, Autumn - Northern Hemisphere, Winter - Northern Hemisphere 29-32 = Spring – Southern Hemisphere, Summer– Southern Hemisphere, Autumn – Southern Hemisphere, Winter - Southern Hemisphere 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_season_number (season, param) if 'date' ~= param then return 0; -- season dates only supported by |date= end return cfg.date_names['local'].season[season] or -- look for local names first cfg.date_names['en'].season[season] or -- failing that, look for English names 0; -- not a recognized season name end --[[--------------------------< G E T _ Q U A R T E R _ N U M B E R >------------------------------------------ returns a number according to the sequence of quarters in a year: 33 for first quarter, etc. Capitalization and spelling must be correct. If not a valid quarter, returns 0. 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) returns 0 when <param> is not |date= Quarter numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons and quarters. These additional divisions not currently supported: 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_quarter_number (quarter, param) if 'date' ~= param then return 0; -- quarter dates only supported by |date= end quarter = mw.ustring.gsub (quarter, ' +', ' '); -- special case replace multiple space chars with a single space char return cfg.date_names['local'].quarter[quarter] or -- look for local names first cfg.date_names['en'].quarter[quarter] or -- failing that, look for English names 0; -- not a recognized quarter name end --[[--------------------------< G E T _ P R O P E R _ N A M E _ N U M B E R >---------------------------------- returns a non-zero number if date contains a recognized proper-name. Capitalization and spelling must be correct. returns 0 when <param> is not |date= ]] local function get_proper_name_number (name, param) if 'date' ~= param then return 0; -- proper-name dates only supported by |date= end return cfg.date_names['local'].named[name] or -- look for local names dates first cfg.date_names['en'].named[name] or -- failing that, look for English names 0; -- not a recognized named date end --[[--------------------------< G E T _ E L E M E N T _ N U M B E R <------------------------------------------ returns true if month or season or quarter or proper name is valid (properly spelled, capitalized, abbreviated) ]] local function get_element_number (element, param) local num; local funcs = {get_month_number, get_season_number, get_quarter_number, get_proper_name_number}; -- list of functions to execute in order for _, func in ipairs (funcs) do -- spin through the function list num = func (element, param); -- call the function and get the returned number if 0 ~= num then -- non-zero when valid month season quarter return num; -- return that number end end return nil; -- not valid end --[[--------------------------< I S _ V A L I D _ Y E A R >---------------------------------------------------- Function gets current year from the server and compares it to year from a citation parameter. Years more than one year in the future are not acceptable. Special case for |pmc-embargo-date=: years more than two years in the future are not acceptable ]] local function is_valid_year (year, param) if not is_set (year_limit) then year_limit = tonumber(os.date("%Y"))+1; -- global variable so we only have to fetch it once end year = tonumber (year) or lang_object:parseFormattedNumber (year); -- convert to number for the comparison if year and (100 > year) then -- years less than 100 not supported return false; end if 'pmc-embargo-date' == param then -- special case for |pmc-embargo-date= return year and (year <= tonumber(os.date("%Y"))+2) or false; -- years more than two years in the future are not accepted end return year and (year <= year_limit) or false; end --[[--------------------------< I S _ V A L I D _ D A T E >---------------------------------------------------- Returns true if day is less than or equal to the number of days in month and year is no farther into the future than next year; else returns false. Assumes Julian calendar prior to year 1582 and Gregorian calendar thereafter. Accounts for Julian calendar leap years before 1582 and Gregorian leap years after 1582. Where the two calendars overlap (1582 to approximately 1923) dates are assumed to be Gregorian. ]] local function is_valid_date (year, month, day, param) local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; local month_length; if not is_valid_year (year, param) then -- no farther into the future than next year except |pmc-embargo-date= no more than two years in the future return false; end month = tonumber (month); -- required for YYYY-MM-DD dates if (2 == month) then -- if February month_length = 28; -- then 28 days unless if 1582 > tonumber(year) then -- Julian calendar if 0 == (year%4) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end else -- Gregorian calendar if (0 == (year%4) and (0 ~= (year%100) or 0 == (year%400))) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end end else month_length = days_in_month[month]; end if tonumber (day) > month_length then return false; end return true; end --[[--------------------------< I S _ V A L I D _ M O N T H _ R A N G E _ S T Y L E >-------------------------- Months in a range are expected to have the same style: Jan–Mar or October–December but not February–Mar or Jul–August. This function looks in cfg.date_names{} to see if both month names are listed in the long subtable or both are listed in the short subtable. When both have the same style (both are listed in the same table), returns true; false else ]] local function is_valid_month_range_style (month1, month2) if (cfg.date_names.en.long[month1] and cfg.date_names.en.long[month2]) or -- are both English names listed in the long subtable? (cfg.date_names.en.short[month1] and cfg.date_names.en.short[month2]) or -- are both English names listed in the short subtable? (cfg.date_names['local'].long[month1] and cfg.date_names['local'].long[month2]) or -- are both local names listed in the long subtable? (cfg.date_names['local'].short[month1] and cfg.date_names['local'].short[month2]) then -- are both local names listed in the short subtable? return true; end return false; -- names are mixed end --[[--------------------------< I S _ V A L I D _ M O N T H _ S E A S O N _ R A N G E >------------------------ Check a pair of months or seasons to see if both are valid members of a month or season pair. Month pairs are expected to be left to right, earliest to latest in time. All season ranges are accepted as valid because there are publishers out there who have published a Summer–Spring YYYY issue, hence treat as ok ]] local function is_valid_month_season_range(range_start, range_end, param) local range_start_number = get_month_number (range_start); local range_end_number; if 0 == range_start_number then -- is this a month range? range_start_number = get_season_number (range_start, param); -- not a month; is it a season? get start season number range_end_number = get_season_number (range_end, param); -- get end season number if (0 ~= range_start_number) and (0 ~= range_end_number) and (range_start_number ~= range_end_number) then return true; -- any season pairing is accepted except when both are the same end return false; -- range_start and/or range_end is not a season end -- here when range_start is a month range_end_number = get_month_number (range_end); -- get end month number if range_start_number < range_end_number and -- range_start is a month; does range_start precede range_end? is_valid_month_range_style (range_start, range_end) then -- do months have the same style? return true; -- proper order and same style end return false; -- range_start month number is greater than or equal to range end number; or range end isn't a month end --[[--------------------------< M A K E _ C O I N S _ D A T E >------------------------------------------------ This function receives a table of date parts for one or two dates and an empty table reference declared in Module:Citation/CS1. The function is called only for |date= parameters and only if the |date=<value> is determined to be a valid date format. The question of what to do with invalid date formats is not answered here. The date parts in the input table are converted to an ISO 8601 conforming date string: single whole dates: yyyy-mm-dd month and year dates: yyyy-mm year dates: yyyy ranges: yyyy-mm-dd/yyyy-mm-dd yyyy-mm/yyyy-mm yyyy/yyyy Dates in the Julian calendar are reduced to year or year/year so that we don't have to do calendar conversion from Julian to Proleptic Gregorian. The input table has: year, year2 – always present; if before 1582, ignore months and days if present month, month2 – 0 if not provided, 1-12 for months, 21-24 for seasons; 99 Christmas day, day2 – 0 if not provided, 1-31 for days the output table receives: rftdate: an ISO 8601 formatted date rftchron: a free-form version of the date, usually without year which is in rftdate (season ranges and proper-name dates) rftssn: one of four season keywords: winter, spring, summer, fall (lowercase) rftquarter: one of four values: 1, 2, 3, 4 ]] local function make_COinS_date (input, tCOinS_date) local date; -- one date or first date in a range local date2 = ''; -- end of range date input.year = tonumber (input.year) or lang_object:parseFormattedNumber (input.year); -- language-aware tonumber() input.year2 = tonumber (input.year2) or lang_object:parseFormattedNumber (input.year2); -- COinS dates are pseudo-ISO 8601 so convert to Arabic numerals -- start temporary Julian / Gregorian calendar uncertainty detection local year = input.year; -- this temporary code to determine the extent of sources dated to the Julian/Gregorian local month = tonumber(input.month); -- interstice 1 October 1582 – 1 January 1926 local day = tonumber (input.day); if (0 ~= day) and -- day must have a value for this to be a whole date (((1582 == year) and (10 <= month) and (12 >= month)) or -- any whole 1582 date from 1 October to 31 December or ((1926 == year) and (1 == month) and (1 == input.day)) or -- 1 January 1926 or ((1582 < year) and (1925 >= year))) then -- any date 1 January 1583 – 31 December 1925 tCOinS_date.inter_cal_cat = true; -- set category flag true end -- end temporary Julian / Gregorian calendar uncertainty detection if ((1582 == year) and (10 > month)) or (1582 > year) then -- if a Julian calendar date tCOinS_date.rftdate = tostring (input.year); -- &rft.date gets year only return; -- done end -- here for all forms of Gregorian dates if 20 < tonumber (input.month) then -- if season, quarter, or proper-name date date = input.year; -- &rft.date gets year only if 0 ~= input.year2 and input.year ~= input.year2 then -- if a range, only the second year portion when not the same as range start year date = string.format ('%.4d/%.4d', input.year, input.year2) -- assemble the date range end local season = {[24] = 'winter', [21] = 'spring', [22] = 'summer', [23] = 'fall', [33] = '1', [34] = '2', [35] = '3', [36] = '4', [98] = 'Easter', [99] = 'Christmas'}; -- seasons lowercase, no autumn; proper-names use title case if 0 == input.month2 then -- single season, quarter, or proper-name date if 40 < tonumber(input.month) then tCOinS_date.rftchron = season[input.month]; -- proper-name date; used in journal metadata only elseif 30 < tonumber(input.month) then tCOinS_date.rftquarter = season[input.month]; -- quarter date; used in journal metadata only else tCOinS_date.rftssn = season[input.month]; -- season date; used in journal metadata only end else -- season ranges are lumped into &rft.chron; &rft.ssn and &rft.quarter are left blank if input.year ~= input.year2 then -- season year – season year range or season year–year if 0 ~= input.month2 then tCOinS_date.rftchron = string.format ('%s %s – %s %s', season[input.month], input.year, season[input.month2], input.year2); -- used in journal metadata only end else -- season–season year range tCOinS_date.rftchron = season[input.month] .. '–' .. season[input.month2]; -- season–season year range; used in journal metadata only end end tCOinS_date.rftdate = tostring (date); return; -- done end -- here for gregorian calendar dates if 0 ~= input.day then date = string.format ('%s-%.2d-%.2d', input.year, tonumber(input.month), tonumber(input.day)); -- whole date elseif 0 ~= input.month then date = string.format ('%s-%.2d', input.year, tonumber(input.month)); -- year and month else date = string.format ('%s', input.year); -- just year end if 0 ~= input.year2 then if 0 ~= input.day2 then date2 = string.format ('/%s-%.2d-%.2d', input.year2, tonumber(input.month2), tonumber(input.day2)); -- whole date elseif 0 ~= input.month2 then date2 = string.format ('/%s-%.2d', input.year2, tonumber(input.month2)); -- year and month else date2 = string.format ('/%s', input.year2); -- just year end end tCOinS_date.rftdate = date .. date2; -- date2 has the '/' separator return; end --[[--------------------------< P A T T E R N S >-------------------------------------------------------------- this is the list of patterns for date formats that this module recognizes. Approximately the first half of these patterns represent formats that might be reformatted into another format. Those that might be reformatted have 'indicator' letters that identify the content of the matching capture: 'd' (day), 'm' (month), 'a' (anchor year), 'y' (year); second day, month, year have a '2' suffix. These patterns are used for both date validation and for reformatting. This table should not be moved to ~/Configuration because changes to this table require changes to check_date() and to reformatter() and reformat_date() ]] local patterns = { -- year-initial numerical year-month-day ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, -- month-initial: month day, year ['Mdy'] = {'^(%D-) +([1-9]%d?), +((%d%d%d%d?)%a?)$', 'm', 'd', 'a', 'y'}, -- month-initial day range: month day–day, year; days are separated by endash ['Md-dy'] = {'^(%D-) +([1-9]%d?)[%-–]([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'd2', 'a', 'y'}, -- day-initial: day month year ['dMy'] = {'^([1-9]%d?) +(%D-) +((%d%d%d%d?)%a?)$', 'd', 'm', 'a', 'y'}, -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed; not supported at en.wiki -- ['yMd'] = {'^((%d%d%d%d?)%a?) +(%D-) +(%d%d?)$', 'a', 'y', 'm', 'd'}, -- day-range-initial: day–day month year; days are separated by endash ['d-dMy'] = {'^([1-9]%d?)[%-–]([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'd2', 'm', 'a', 'y'}, -- day initial month-day-range: day month - day month year; uses spaced endash ['dM-dMy'] = {'^([1-9]%d?) +(%D-) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'd2', 'm2', 'a', 'y'}, -- month initial month-day-range: month day – month day, year; uses spaced endash ['Md-Mdy'] = {'^(%D-) +([1-9]%d?) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$','m', 'd', 'm2', 'd2', 'a', 'y'}, -- day initial month-day-year-range: day month year - day month year; uses spaced endash ['dMy-dMy'] = {'^([1-9]%d?) +(%D-) +(%d%d%d%d) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'y', 'd2', 'm2', 'a', 'y2'}, -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash ['Mdy-Mdy'] = {'^(%D-) +([1-9]%d?), +(%d%d%d%d) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'y', 'm2', 'd2', 'a', 'y2'}, -- these date formats cannot be converted, per se, but month name can be rendered short or long -- month/season year - month/season year; separated by spaced endash ['My-My'] = {'^(%D-) +(%d%d%d%d) +[%-–] +(%D-) +((%d%d%d%d)%a?)$', 'm', 'y', 'm2', 'a', 'y2'}, -- month/season range year; months separated by endash ['M-My'] = {'^(%D-)[%-–](%D-) +((%d%d%d%d)%a?)$', 'm', 'm2', 'a', 'y'}, -- month/season year or proper-name year; quarter year when First Quarter YYYY etc. ['My'] = {'^([^%d–]-) +((%d%d%d%d)%a?)$', 'm', 'a', 'y'}, -- this way because endash is a member of %D; %D- will match January–March 2019 when it shouldn't -- these date formats cannot be converted ['Sy4-y2'] = {'^(%D-) +((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash ['Sy-y'] = {'^(%D-) +(%d%d%d%d)[%-–]((%d%d%d%d)%a?)$'}, -- special case Winter/Summer year-year; year separated with unspaced endash ['y-y'] = {'^(%d%d%d%d?)[%-–]((%d%d%d%d?)%a?)$'}, -- year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 ['y4-y2'] = {'^((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- year range: YYYY–YY; separated by unspaced endash ['y'] = {'^((%d%d%d%d?)%a?)$'}, -- year; here accept either YYY or YYYY } --[[--------------------------< I S _ V A L I D _ E M B A R G O _ D A T E >------------------------------------ returns true and date value if that value has proper dmy, mdy, ymd format. returns false and 9999 (embargoed forever) when date value is not proper format; assumes that when |pmc-embargo-date= is set, the editor intended to embargo a PMC but |pmc-embargo-date= does not hold a single date. ]] local function is_valid_embargo_date (v) if v:match (patterns['ymd'][1]) or -- ymd v:match (patterns['Mdy'][1]) or -- dmy v:match (patterns['dMy'][1]) then -- mdy return true, v; end return false, '9999'; -- if here not good date so return false and set embargo date to long time in future end --[[--------------------------< C H E C K _ D A T E >---------------------------------------------------------- Check date format to see that it is one of the formats approved by WP:DATESNO or WP:DATERANGE. Exception: only allowed range separator is endash. Additionally, check the date to see that it is a real date: no 31 in 30-day months; no 29 February when not a leap year. Months, both long-form and three character abbreviations, and seasons must be spelled correctly. Future years beyond next year are not allowed. If the date fails the format tests, this function returns false and does not return values for anchor_year and COinS_date. When this happens, the date parameter is (DEBUG: not?) used in the COinS metadata and the CITEREF identifier gets its year from the year parameter if present otherwise CITEREF does not get a date value. Inputs: date_string - date string from date-holding parameters (date, year, publication-date, access-date, pmc-embargo-date, archive-date, lay-date) Returns: false if date string is not a real date; else true, anchor_year, COinS_date anchor_year can be used in CITEREF anchors COinS_date is ISO 8601 format date; see make_COInS_date() ]] local function check_date (date_string, param, tCOinS_date) local year; -- assume that year2, months, and days are not used; local year2 = 0; -- second year in a year range local month = 0; local month2 = 0; -- second month in a month range local day = 0; local day2 = 0; -- second day in a day range local anchor_year; local coins_date; if date_string:match (patterns['ymd'][1]) then -- year-initial numerical year month day format year, month, day = date_string:match (patterns['ymd'][1]); if 12 < tonumber(month) or 1 > tonumber(month) or 1582 > tonumber(year) or 0 == tonumber(day) then return false; end -- month or day number not valid or not Gregorian calendar anchor_year = year; elseif mw.ustring.match(date_string, patterns['Mdy'][1]) then -- month-initial: month day, year month, day, anchor_year, year = mw.ustring.match(date_string, patterns['Mdy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months elseif mw.ustring.match(date_string, patterns['Md-dy'][1]) then -- month-initial day range: month day–day, year; days are separated by endash month, day, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-dy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2=month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dMy'][1]) then -- day-initial: day month year day, month, anchor_year, year = mw.ustring.match(date_string, patterns['dMy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months --[[ NOT supported at en.wiki elseif mw.ustring.match(date_string, patterns['yMd'][1]) then -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed anchor_year, year, month, day = mw.ustring.match(date_string, patterns['yMd'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months -- end NOT supported at en.wiki ]] elseif mw.ustring.match(date_string, patterns['d-dMy'][1]) then -- day-range-initial: day–day month year; days are separated by endash day, day2, month, anchor_year, year = mw.ustring.match(date_string, patterns['d-dMy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2 = month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dM-dMy'][1]) then -- day initial month-day-range: day month - day month year; uses spaced endash day, month, day2, month2, anchor_year, year = mw.ustring.match(date_string, patterns['dM-dMy'][1]); if (not is_valid_month_season_range(month, month2)) or not is_valid_year(year) then return false; end -- date range order is left to right: earlier to later; month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['Md-Mdy'][1]) then -- month initial month-day-range: month day – month day, year; uses spaced endash month, day, month2, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-Mdy'][1]); if (not is_valid_month_season_range(month, month2, param)) or not is_valid_year(year) then return false; end month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['dMy-dMy'][1]) then -- day initial month-day-year-range: day month year - day month year; uses spaced endash day, month, year, day2, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['dMy-dMy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number (month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]) then -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash month, day, year, month2, day2, anchor_year, year2 = mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Sy4-y2'][1]) then -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash local century; month, year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy4-y2'][1]); if 'Winter' ~= month and 'Summer' ~= month then return false end; -- 'month' can only be Winter or Summer anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years year2 = century..year2; -- add the century to year2 for comparisons if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year month = get_season_number(month, param); elseif mw.ustring.match(date_string, patterns['Sy-y'][1]) then -- special case Winter/Summer year-year; year separated with unspaced endash month, year, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy-y'][1]); month = get_season_number (month, param); -- <month> can only be winter or summer; also for metadata if (month ~= cfg.date_names['en'].season['Winter']) and (month ~= cfg.date_names['en'].season['Summer']) then return false; -- not Summer or Winter; abandon end anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['My-My'][1]) then -- month/season year - month/season year; separated by spaced endash month, year, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['My-My'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year if 0 ~= get_month_number(month) and 0 ~= get_month_number(month2) and is_valid_month_range_style(month, month2) then -- both must be month year, same month style month = get_month_number(month); month2 = get_month_number(month2); elseif 0 ~= get_season_number(month, param) and 0 ~= get_season_number(month2, param) then -- both must be season year, not mixed month = get_season_number(month, param); month2 = get_season_number(month2, param); else return false; end elseif mw.ustring.match(date_string, patterns['M-My'][1]) then -- month/season range year; months separated by endash month, month2, anchor_year, year = mw.ustring.match(date_string, patterns['M-My'][1]); if (not is_valid_month_season_range(month, month2, param)) or (not is_valid_year(year)) then return false; end if 0 ~= get_month_number(month) then -- determined to be a valid range so just check this one to know if month or season month = get_month_number(month); month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end else month = get_season_number(month, param); month2 = get_season_number(month2, param); end year2 = year; elseif mw.ustring.match(date_string, patterns['My'][1]) then -- month/season/quarter/proper-name year month, anchor_year, year = mw.ustring.match(date_string, patterns['My'][1]); if not is_valid_year(year) then return false; end month = get_element_number(month, param); -- get month season quarter proper-name number or nil if not month then return false; end -- not valid whatever it is elseif mw.ustring.match(date_string, patterns['y-y'][1]) then -- Year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 year, anchor_year, year2 = mw.ustring.match(date_string, patterns['y-y'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['y4-y2'][1]) then -- Year range: YYYY–YY; separated by unspaced endash local century; year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['y4-y2'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if 13 > tonumber(year2) then return false; end -- don't allow 2003-05 which might be May 2003 year2 = century .. year2; -- add the century to year2 for comparisons if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year if in_array (param, {'date', 'publication-date', 'year'}) then -- here when 'valid' abbreviated year range; if one of these parameters add_prop_cat ('year-range-abbreviated'); -- add properties cat end elseif mw.ustring.match(date_string, patterns['y'][1]) then -- year; here accept either YYY or YYYY anchor_year, year = mw.ustring.match(date_string, patterns['y'][1]); if false == is_valid_year(year) then return false; end else return false; -- date format not one of the MOS:DATE approved formats end if param ~= 'date' then -- CITEREF disambiguation only allowed in |date=; |year= & |publication-date= promote to date if anchor_year:match ('%l$') then return false; end end if 'access-date' == param then -- test access-date here because we have numerical date parts if 0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required 0 == year2 and 0 == month2 and 0 == day2 then -- none of these; access-date must not be a range if not is_valid_accessdate(year .. '-' .. month .. '-' .. day) then return false; -- return false when access-date out of bounds end else return false; -- return false when access-date is a range of two dates end end if 'archive-date' == param then -- test archive-date here because we have numerical date parts if not (0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required 0 == year2 and 0 == month2 and 0 == day2) then -- none of these; archive-date must not be a range return false; -- return false when archive-date is a range of two dates end end local result=true; -- check whole dates for validity; assume true because not all dates will go through this test if 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 == day2 then -- YMD (simple whole date) result = is_valid_date (year, month, day, param); -- <param> for |pmc-embargo-date= elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 ~= day2 then -- YMD-d (day range) result = is_valid_date (year, month, day); result = result and is_valid_date (year, month, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-md (day month range) result = is_valid_date (year, month, day); result = result and is_valid_date (year, month2, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 ~= year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-ymd (day month year range) result = is_valid_date(year, month, day); result = result and is_valid_date(year2, month2, day2); end if false == result then return false; end if nil ~= tCOinS_date then -- this table only passed into this function when testing |date= parameter values make_COinS_date ({year = year, month = month, day = day, year2 = year2, month2 = month2, day2 = day2}, tCOinS_date); -- make an ISO 8601 date string for COinS end return true, anchor_year; -- format is good and date string represents a real date end --[[--------------------------< D A T E S >-------------------------------------------------------------------- Cycle the date-holding parameters in passed table date_parameters_list through check_date() to check compliance with MOS:DATE. For all valid dates, check_date() returns true. The |date= parameter test is unique, it is the only date holding parameter from which values for anchor_year (used in CITEREF identifiers) and COinS_date (used in the COinS metadata) are derived. The |date= parameter is the only date-holding parameter that is allowed to contain the no-date keywords "n.d." or "nd" (without quotes). Unlike most error messages created in this module, only one error message is created by this function. Because all of the date holding parameters are processed serially, parameters with errors are added to the <error_list> sequence table as the dates are tested. ]] local function dates(date_parameters_list, tCOinS_date, error_list) local anchor_year; -- will return as nil if the date being tested is not |date= local COinS_date; -- will return as nil if the date being tested is not |date= local embargo_date; -- if embargo date is a good dmy, mdy, ymd date then holds original value else reset to 9999 local good_date = false; for k, v in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(v.val) then -- if the parameter has a value v.val = mw.ustring.gsub(v.val, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9 if v.val:match("^c%. [1-9]%d%d%d?%a?$") then -- special case for c. year or with or without CITEREF disambiguator - only |date= and |year= local year = v.val:match("c%. ([1-9]%d%d%d?)%a?"); -- get the year portion so it can be tested if 'date' == k then anchor_year, COinS_date = v.val:match("((c%. [1-9]%d%d%d?)%a?)"); -- anchor year and COinS_date only from |date= parameter good_date = is_valid_year(year); elseif 'year' == k then good_date = is_valid_year(year); end elseif 'date' == k then -- if the parameter is |date= if v.val:match("^n%.d%.%a?$") then -- ToDo: I18N -- if |date=n.d. with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((n%.d%.)%a?)"); -- ToDo: I18N -- "n.d."; no error when date parameter is set to no date elseif v.val:match("^nd%a?$") then -- ToDo: I18N -- if |date=nd with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((nd)%a?)"); -- ToDo: I18N -- "nd"; no error when date parameter is set to no date else good_date, anchor_year, COinS_date = check_date (v.val, k, tCOinS_date); -- go test the date end elseif 'year' == k then -- if the parameter is |year= it should hold only a year value if v.val:match("^[1-9]%d%d%d?%a?$") then -- if |year = 3 or 4 digits only with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((%d+)%a?)"); end elseif 'pmc-embargo-date' == k then -- if the parameter is |pmc-embargo-date= good_date = check_date (v.val, k); -- go test the date if true == good_date then -- if the date is a valid date good_date, embargo_date = is_valid_embargo_date (v.val); -- is |pmc-embargo-date= date a single dmy, mdy, or ymd formatted date? yes: returns embargo date; no: returns 9999 end else -- any other date-holding parameter good_date = check_date (v.val, k); -- go test the date end if false == good_date then -- assemble one error message so we don't add the tracking category multiple times table.insert (error_list, wrap_style ('parameter', v.name)); -- make parameter name suitable for error message list end end end return anchor_year, embargo_date; -- and done end --[[--------------------------< Y E A R _ D A T E _ C H E C K >------------------------------------------------ Compare the value provided in |year= with the year value(s) provided in |date=. This function sets a local numeric value: 0 - year value does not match the year value in date 1 - (default) year value matches the year value in date or one of the year values when date contains two years 2 - year value matches the year value in date when date is in the form YYYY-MM-DD and year is disambiguated (|year=YYYYx) the numeric value in <result> determines the 'output' if any from this function: 0 – adds error message to error_list sequence table 1 – adds maint cat 2 – does nothing ]] local function year_date_check (year_string, year_origin, date_string, date_origin, error_list) local year; local date1; local date2; local result = 1; -- result of the test; assume that the test passes year = year_string:match ('(%d%d%d%d?)'); if date_string:match ('%d%d%d%d%-%d%d%-%d%d') and year_string:match ('%d%d%d%d%a') then --special case where both date and year are required YYYY-MM-DD and YYYYx date1 = date_string:match ('(%d%d%d%d)'); year = year_string:match ('(%d%d%d%d)'); if year ~= date1 then result = 0; -- years don't match else result = 2; -- years match; but because disambiguated, don't add to maint cat end elseif date_string:match ("%d%d%d%d?.-%d%d%d%d?") then -- any of the standard range formats of date with two three- or four-digit years date1, date2 = date_string:match ("(%d%d%d%d?).-(%d%d%d%d?)"); if year ~= date1 and year ~= date2 then result = 0; end elseif mw.ustring.match(date_string, "%d%d%d%d[%-–]%d%d") then -- YYYY-YY date ranges local century; date1, century, date2 = mw.ustring.match(date_string, "((%d%d)%d%d)[%-–]+(%d%d)"); date2 = century..date2; -- convert YY to YYYY if year ~= date1 and year ~= date2 then result = 0; end elseif date_string:match ("%d%d%d%d?") then -- any of the standard formats of date with one year date1 = date_string:match ("(%d%d%d%d?)"); if year ~= date1 then result = 0; end else -- should never get here; this function called only when no other date errors result = 0; -- no recognizable year in date end if 0 == result then -- year / date mismatch table.insert (error_list, substitute (cfg.messages['mismatch'], {year_origin, date_origin})); -- add error message to error_list sequence table elseif 1 == result then -- redundant year / date set_message ('maint_date_year'); -- add a maint cat end end --[[--------------------------< R E F O R M A T T E R >-------------------------------------------------------- reformat 'date' into new format specified by format_param if pattern_idx (the current format of 'date') can be reformatted. Does the grunt work for reformat_dates(). The table re_formats maps pattern_idx (current format) and format_param (desired format) to a table that holds: format string used by string.format() identifier letters ('d', 'm', 'y', 'd2', 'm2', 'y2') that serve as indexes into a table t{} that holds captures from mw.ustring.match() for the various date parts specified by patterns[pattern_idx][1] Items in patterns{} have the general form: ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, where: ['ymd'] is pattern_idx patterns['ymd'][1] is the match pattern with captures for mw.ustring.match() patterns['ymd'][2] is an indicator letter identifying the content of the first capture patterns['ymd'][3] ... the second capture etc. when a pattern matches a date, the captures are loaded into table t{} in capture order using the idemtifier characters as indexes into t{} For the above, a ymd date is in t{} as: t.y = first capture (year), t.m = second capture (month), t.d = third capture (day) To reformat, this function is called with the pattern_idx that matches the current format of the date and with format_param set to the desired format. This function loads table t{} as described and then calls string.format() with the format string specified by re_format[pattern_idx][format_param][1] using values taken from t{} according to the capture identifier letters specified by patterns[pattern_idx][format_param][n] where n is 2.. ]] local re_formats = { ['ymd'] = { -- date format is ymd; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Mdy'] = { -- date format is Mdy; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['dMy'] = { -- date format is dMy; reformat to: ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Md-dy'] = { -- date format is Md-dy; reformat to: ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- |df=dmy -> d-dMy }, ['d-dMy'] = { -- date format is d-d>y; reformat to: ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- |df=mdy -> Md-dy }, ['dM-dMy'] = { -- date format is dM-dMy; reformat to: ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- |df=mdy -> Md-Mdy }, ['Md-Mdy'] = { -- date format is Md-Mdy; reformat to: ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- |df=dmy -> dM-dMy }, ['dMy-dMy'] = { -- date format is dMy-dMy; reformat to: ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- |df=mdy -> Mdy-Mdy }, ['Mdy-Mdy'] = { -- date format is Mdy-Mdy; reformat to: ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- for long/short reformatting ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- |df=dmy -> dMy-dMy }, ['My-My'] = { -- these for long/short reformatting ['any'] = {'%s %s – %s %s', 'm', 'y', 'm2', 'y2'}, -- dmy/mdy agnostic }, ['M-My'] = { -- these for long/short reformatting ['any'] = {'%s–%s %s', 'm', 'm2', 'y'}, -- dmy/mdy agnostic }, ['My'] = { -- these for long/short reformatting ['any'] = {'%s %s', 'm', 'y'}, -- dmy/mdy agnostic }, -- ['yMd'] = { -- not supported at en.wiki -- ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy -- ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- }, } local function reformatter (date, pattern_idx, format_param, mon_len) if not in_array (pattern_idx, {'ymd', 'Mdy', 'Md-dy', 'dMy', 'yMd', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- not in this set of date format patterns then not a reformattable date end if 'ymd' == format_param and in_array (pattern_idx, {'ymd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- ymd date ranges not supported at en.wiki; no point in reformatting ymd to ymd end if in_array (pattern_idx, {'My', 'M-My', 'My-My'}) then -- these are not dmy/mdy so can't be 'reformatted' into either format_param = 'any'; -- so format-agnostic end -- yMd is not supported at en.wiki; when yMd is supported at your wiki, uncomment the next line -- if 'yMd' == format_param and in_array (pattern_idx, {'yMd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy'}) then -- these formats not convertable; yMd not supported at en.wiki if 'yMd' == format_param then -- yMd not supported at en.wiki; when yMd is supported at your wiki, remove or comment-out this line return; -- not a reformattable date end local c1, c2, c3, c4, c5, c6, c7; -- these hold the captures specified in patterns[pattern_idx][1] c1, c2, c3, c4, c5, c6, c7 = mw.ustring.match (date, patterns[pattern_idx][1]); -- get the captures local t = { -- table that holds k/v pairs of date parts from the captures and patterns[pattern_idx][2..] [patterns[pattern_idx][2]] = c1; -- at minimum there is always one capture with a matching indicator letter [patterns[pattern_idx][3] or 'x'] = c2; -- patterns can have a variable number of captures; each capture requires an indicator letter; [patterns[pattern_idx][4] or 'x'] = c3; -- where there is no capture, there is no indicator letter so n in patterns[pattern_idx][n] will be nil; [patterns[pattern_idx][5] or 'x'] = c4; -- the 'x' here spoofs an indicator letter to prevent 'table index is nil' error [patterns[pattern_idx][6] or 'x'] = c5; [patterns[pattern_idx][7] or 'x'] = c6; [patterns[pattern_idx][8] or 'x'] = c7; }; if t.a then -- if this date has an anchor year capture (all convertable date formats except ymd) if t.y2 then -- for year range date formats t.y2 = t.a; -- use the anchor year capture when reassembling the date else -- here for single date formats (except ymd) t.y = t.a; -- use the anchor year capture when reassembling the date end end if tonumber(t.m) then -- if raw month is a number (converting from ymd) if 's' == mon_len then -- if we are to use abbreviated month names t.m = cfg.date_names['inv_local_short'][tonumber(t.m)]; -- convert it to a month name else t.m = cfg.date_names['inv_local_long'][tonumber(t.m)]; -- convert it to a month name end t.d = t.d:gsub ('0(%d)', '%1'); -- strip leading '0' from day if present elseif 'ymd' == format_param then -- when converting to ymd t.y = t.y:gsub ('%a', ''); -- strip CITREF disambiguator if present; anchor year already known so process can proceed; TODO: maint message? if 1582 > tonumber (t.y) then -- ymd format dates not allowed before 1582 return; end t.m = string.format ('%02d', get_month_number (t.m)); -- make sure that month and day are two digits t.d = string.format ('%02d', t.d); elseif mon_len then -- if mon_len is set to either 'short' or 'long' for _, mon in ipairs ({'m', 'm2'}) do -- because there can be two month names, check both if t[mon] then t[mon] = get_month_number (t[mon]); -- get the month number for this month (is length agnostic) if 0 == t[mon] then return; end -- seasons and named dates can't be converted t[mon] = (('s' == mon_len) and cfg.date_names['inv_local_short'][t[mon]]) or cfg.date_names['inv_local_long'][t[mon]]; -- fetch month name according to length end end end local new_date = string.format (re_formats[pattern_idx][format_param][1], -- format string t[re_formats[pattern_idx][format_param][2]], -- named captures from t{} t[re_formats[pattern_idx][format_param][3]], t[re_formats[pattern_idx][format_param][4]], t[re_formats[pattern_idx][format_param][5]], t[re_formats[pattern_idx][format_param][6]], t[re_formats[pattern_idx][format_param][7]], t[re_formats[pattern_idx][format_param][8]] ); return new_date; end --[[-------------------------< R E F O R M A T _ D A T E S >-------------------------------------------------- Reformats existing dates into the format specified by format. format is one of several manual keywords: dmy, dmy-all, mdy, mdy-all, ymd, ymd-all. The -all version includes access- and archive-dates; otherwise these dates are not reformatted. This function allows automatic date formatting. In ~/Configuration, the article source is searched for one of the {{use xxx dates}} templates. If found, xxx becomes the global date format as xxx-all. If |cs1-dates= in {{use xxx dates}} has legitimate value then that value determines how cs1|2 dates will be rendered. Legitimate values for |cs1-dates= are: l - all dates are rendered with long month names ls - publication dates use long month names; access-/archive-dates use abbreviated month names ly - publication dates use long month names; access-/archive-dates rendered in ymd format s - all dates are rendered with abbreviated (short) month names sy - publication dates use abbreviated month names; access-/archive-dates rendered in ymd format y - all dates are rendered in ymd format the format argument for automatic date formatting will be the format specified by {{use xxx dates}} with the value supplied by |cs1-dates so one of: xxx-l, xxx-ls, xxx-ly, xxx-s, xxx-sy, xxx-y, or simply xxx (|cs1-dates= empty, omitted, or invalid) where xxx shall be either of dmy or mdy. dates are extracted from date_parameters_list, reformatted (if appropriate), and then written back into the list in the new format. Dates in date_parameters_list are presumed here to be valid (no errors). This function returns true when a date has been reformatted, false else. Actual reformatting is done by reformatter(). ]] local function reformat_dates (date_parameters_list, format) local all = false; -- set to false to skip access- and archive-dates local len_p = 'l'; -- default publication date length shall be long local len_a = 'l'; -- default access-/archive-date length shall be long local result = false; local new_date; if format:match('%a+%-all') then -- manual df keyword; auto df keyword when length not specified in {{use xxx dates}}; format = format:match('(%a+)%-all'); -- extract the format all = true; -- all dates are long format dates because this keyword doesn't specify length elseif format:match('%a+%-[lsy][sy]?') then -- auto df keywords; internal only all = true; -- auto df applies to all dates; use length specified by capture len_p for all dates format, len_p, len_a = format:match('(%a+)%-([lsy])([sy]?)'); -- extract the format and length keywords if 'y' == len_p then -- because allowed by MOS:DATEUNIFY (sort of) range dates and My dates not reformatted format = 'ymd'; -- override {{use xxx dates}} elseif (not is_set(len_a)) or (len_p == len_a) then -- no access-/archive-date length specified or same length as publication dates then len_a = len_p; -- in case len_a not set end end -- else only publication dates and they are long for param_name, param_val in pairs (date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) then -- if the parameter has a value if not (not all and in_array (param_name, {'access-date', 'archive-date'})) then -- skip access- or archive-date unless format is xxx-all; yeah, ugly; TODO: find a better way for pattern_idx, pattern in pairs (patterns) do if mw.ustring.match (param_val.val, pattern[1]) then if all and in_array (param_name, {'access-date', 'archive-date'}) then -- if this date is an access- or archive-date new_date = reformatter (param_val.val, pattern_idx, (('y' == len_a) and 'ymd') or format, len_a); -- choose ymd or dmy/mdy according to len_a setting else -- all other dates new_date = reformatter (param_val.val, pattern_idx, format, len_p); end if new_date then -- set when date was reformatted date_parameters_list[param_name].val = new_date; -- update date in date list result = true; -- and announce that changes have been made break; end end -- if end -- for end -- if end -- if end -- for return result; -- declare boolean result and done end --[[--------------------------< D A T E _ H Y P H E N _ T O _ D A S H >---------------------------------------- Loops through the list of date-holding parameters and converts any hyphen to an ndash. Not called if the cs1|2 template has any date errors. Modifies the date_parameters_list and returns true if hyphens are replaced, else returns false. ]] local function date_hyphen_to_dash (date_parameters_list) local result = false; local n; for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) and not mw.ustring.match (param_val.val, patterns.ymd[1]) then -- for those that are not ymd dates (ustring because here digits may not be Western) param_val.val, n = param_val.val:gsub ('%-', '–'); -- replace any hyphen with ndash if 0 ~= n then date_parameters_list[param_name].val = param_val.val; -- update the list result = true; end end end return result; -- so we know if any hyphens were replaced end --[[-------------------------< D A T E _ N A M E _ X L A T E >------------------------------------------------ Attempts to translate English date names to local-language date names using names supplied by MediaWiki's date parser function. This is simple name-for-name replacement and may not work for all languages. if xlat_dig is true, this function will also translate Western (English) digits to the local language's digits. This will also translate ymd dates. ]] local function date_name_xlate (date_parameters_list, xlt_dig) local xlate; local mode; -- long or short month names local modified = false; local date; local sources_t = { {cfg.date_names.en.long, cfg.date_names.inv_local_long}, -- for translating long English month names to long local month names {cfg.date_names.en.short, cfg.date_names.inv_local_short}, -- short month names {cfg.date_names.en.quarter, cfg.date_names.inv_local_quarter}, -- quarter date names {cfg.date_names.en.season, cfg.date_names.inv_local_season}, -- season date nam {cfg.date_names.en.named, cfg.date_names.inv_local_named}, -- named dates } local function is_xlateable (month) -- local function to get local date name that replaces existing English-language date name for _, date_names_t in ipairs (sources_t) do -- for each sequence table in date_names_t if date_names_t[1][month] then -- if date name is English month (long or short), quarter, season or named and if date_names_t[2][date_names_t[1][month]] then -- if there is a matching local date name return date_names_t[2][date_names_t[1][month]]; -- return the local date name end end end end for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(param_val.val) then -- if the parameter has a value date = param_val.val; for month in mw.ustring.gmatch (date, '[%a ]+') do -- iterate through all date names in the date (single date or date range) month = mw.text.trim (month); -- this because quarterly dates contain whitespace xlate = is_xlateable (month); -- get translate <month>; returns translation or nil if xlate then date = mw.ustring.gsub (date, month, xlate); -- replace the English with the translation date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end if xlt_dig then -- shall we also translate digits? date = date:gsub ('%d', cfg.date_names.xlate_digits); -- translate digits from Western to 'local digits' date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end end return modified; end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) add_prop_cat = utilities_page_ptr.add_prop_cat ; -- import functions from selected Module:Citation/CS1/Utilities module is_set = utilities_page_ptr.is_set; in_array = utilities_page_ptr.in_array; set_message = utilities_page_ptr.set_message; substitute = utilities_page_ptr.substitute; wrap_style = utilities_page_ptr.wrap_style; cfg = cfg_table_ptr; -- import tables from selected Module:Citation/CS1/Configuration end --[[--------------------------< A R C H I V E _ D A T E _ C H E C K >------------------------------------------ Compare value in |archive-date= with the timestamp in Wayback machine urls. Emits an error message when |archive-date= does not match the timestamp. ]] local function archive_date_check (archive_date, archive_url_timestamp) local good, archive_date_ts = pcall (lang_object.formatDate, lang_object, 'Ymd', archive_date); -- |archive-date= value to YYYYMMDD format -- local archive_date_ts = lang_object:formatDate ('Ymd', archive_date); -- |archive-date= value to YYYYMMDD format if good then if not archive_url_timestamp:find (archive_date_ts, 1, true) then -- plain text find; begin search at position 1 set_message ('err_archive_date_url_ts_mismatch'); -- emit an error message end end end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { -- return exported functions archive_date_check = archive_date_check, date_hyphen_to_dash = date_hyphen_to_dash, date_name_xlate = date_name_xlate, dates = dates, reformat_dates = reformat_dates, set_selected_modules = set_selected_modules, year_date_check = year_date_check, } 91dea3f3d4d1691cec7700aac0057c873554b8c1 Module:Citation/CS1/Identifiers 828 894 1979 1978 2023-10-01T10:44:08Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/Identifiers]] Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local has_accept_as_written, is_set, in_array, set_message, select_one, -- functions in Module:Citation/CS1/Utilities substitute, make_wikilink; local z; -- table of tables defined in Module:Citation/CS1/Utilities local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration --[[--------------------------< P A G E S C O P E V A R I A B L E S >-------------------------------------- declare variables here that have page-wide scope that are not brought in from other modules; that are created here and used here ]] local auto_link_urls = {}; -- holds identifier URLs for those identifiers that can auto-link |title= --============================<< H E L P E R F U N C T I O N S >>============================================ --[[--------------------------< W I K I D A T A _ A R T I C L E _ N A M E _ G E T >---------------------------- as an aid to internationalizing identifier-label wikilinks, gets identifier article names from Wikidata. returns :<lang code>:<article title> when <q> has an <article title> for <lang code>; nil else for identifiers that do not have q, returns nil for wikis that do not have mw.wikibase installed, returns nil ]] local function wikidata_article_name_get (q) if not is_set (q) or (q and not mw.wikibase) then -- when no q number or when a q number but mw.wikibase not installed on this wiki return nil; -- abandon end local wd_article; local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org wd_article = mw.wikibase.getSitelink (q, this_wiki_code .. 'wiki'); -- fetch article title from WD; nil when no title available at this wiki if wd_article then wd_article = table.concat ({':', this_wiki_code, ':', wd_article}); -- interwiki-style link without brackets if taken from WD; leading colon required end return wd_article; -- article title from WD; nil else end --[[--------------------------< L I N K _ L A B E L _ M A K E >------------------------------------------------ common function to create identifier link label from handler table or from Wikidata returns the first available of 1. redirect from local wiki's handler table (if enabled) 2. Wikidata (if there is a Wikidata entry for this identifier in the local wiki's language) 3. label specified in the local wiki's handler table ]] local function link_label_make (handler) local wd_article; if not (cfg.use_identifier_redirects and is_set (handler.redirect)) then -- redirect has priority so if enabled and available don't fetch from Wikidata because expensive wd_article = wikidata_article_name_get (handler.q); -- if Wikidata has an article title for this wiki, get it; end return (cfg.use_identifier_redirects and is_set (handler.redirect) and handler.redirect) or wd_article or handler.link; end --[[--------------------------< E X T E R N A L _ L I N K _ I D >---------------------------------------------- Formats a wiki-style external link ]] local function external_link_id (options) local url_string = options.id; local ext_link; local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org local wd_article; -- article title from Wikidata if options.encode == true or options.encode == nil then url_string = mw.uri.encode (url_string, 'PATH'); end if options.auto_link and is_set (options.access) then auto_link_urls[options.auto_link] = table.concat ({options.prefix, url_string, options.suffix}); end ext_link = mw.ustring.format ('[%s%s%s %s]', options.prefix, url_string, options.suffix or "", mw.text.nowiki (options.id)); if is_set (options.access) then ext_link = substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[options.access].class, cfg.presentation[options.access].title, ext_link}); -- add the free-to-read / paywall lock end return table.concat ({ make_wikilink (link_label_make (options), options.label), -- redirect, Wikidata link, or locally specified link (in that order) options.separator or '&nbsp;', ext_link }); end --[[--------------------------< I N T E R N A L _ L I N K _ I D >---------------------------------------------- Formats a wiki-style internal link TODO: Does not currently need to support options.access, options.encode, auto-linking and COinS (as in external_link_id), but may be needed in the future for :m:Interwiki_map custom-prefixes like :arxiv:, :bibcode:, :DOI:, :hdl:, :ISSN:, :JSTOR:, :Openlibrary:, :PMID:, :RFC:. ]] local function internal_link_id (options) local id = mw.ustring.gsub (options.id, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9 return table.concat ( { make_wikilink (link_label_make (options), options.label), -- wiki-link the identifier label options.separator or '&nbsp;', -- add the separator make_wikilink ( table.concat ( { options.prefix, id, -- translated to Western digits options.suffix or '' }), substitute (cfg.presentation['bdi'], {'', mw.text.nowiki (options.id)}) -- bdi tags to prevent Latin script identifiers from being reversed at RTL language wikis ); -- nowiki because MediaWiki still has magic links for ISBN and the like; TODO: is it really required? }); end --[[--------------------------< I S _ E M B A R G O E D >------------------------------------------------------ Determines if a PMC identifier's online version is embargoed. Compares the date in |pmc-embargo-date= against today's date. If embargo date is in the future, returns the content of |pmc-embargo-date=; otherwise, returns an empty string because the embargo has expired or because |pmc-embargo-date= was not set in this cite. ]] local function is_embargoed (embargo) if is_set (embargo) then local lang = mw.getContentLanguage(); local good1, embargo_date, todays_date; good1, embargo_date = pcall (lang.formatDate, lang, 'U', embargo); todays_date = lang:formatDate ('U'); if good1 then -- if embargo date is a good date if tonumber (embargo_date) >= tonumber (todays_date) then -- is embargo date is in the future? return embargo; -- still embargoed else set_message ('maint_pmc_embargo'); -- embargo has expired; add main cat return ''; -- unset because embargo has expired end end end return ''; -- |pmc-embargo-date= not set return empty string end --[=[-------------------------< I S _ V A L I D _ R X I V _ D A T E >------------------------------------------ for biorxiv, returns true if: 2019-12-11T00:00Z <= biorxiv_date < today + 2 days for medrxiv, returns true if: 2020-01-01T00:00Z <= medrxiv_date < today + 2 days The dated form of biorxiv identifier has a start date of 2019-12-11. The Unix timestamp for that date is {{#time:U|2019-12-11}} = 1576022400 The medrxiv identifier has a start date of 2020-01-01. The Unix timestamp for that date is {{#time:U|2020-01-01}} = 1577836800 <rxiv_date> is the date provided in those |biorxiv= parameter values that are dated and in |medrxiv= parameter values at time 00:00:00 UTC <today> is the current date at time 00:00:00 UTC plus 48 hours if today's date is 2023-01-01T00:00:00 then adding 24 hours gives 2023-01-02T00:00:00 – one second more than today adding 24 hours gives 2023-01-03T00:00:00 – one second more than tomorrow inputs: <y>, <m>, <d> – year, month, day parts of the date from the birxiv or medrxiv identifier <select> 'b' for biorxiv, 'm' for medrxiv; defaults to 'b' ]=] local function is_valid_rxiv_date (y, m, d, select) if 0 == tonumber (m) and 12 < tonumber (m) then -- <m> must be a number 1–12 return false; end if 0 == tonumber (d) and 31 < tonumber (d) then -- <d> must be a number 1–31; TODO: account for month length and leap yer? return false; end local rxiv_date = table.concat ({y, m, d}, '-'); -- make ymd date string local good1, good2; local rxiv_ts, tomorrow_ts; -- to hold Unix timestamps representing the dates local lang_object = mw.getContentLanguage(); good1, rxiv_ts = pcall (lang_object.formatDate, lang_object, 'U', rxiv_date); -- convert rxiv_date value to Unix timestamp good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which tonumber() may not understand rxiv_ts = tonumber (rxiv_ts) or lang_object:parseFormattedNumber (rxiv_ts); -- convert to numbers for the comparison; tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts); else return false; -- one or both failed to convert to Unix timestamp end local limit_ts = ((select and ('m' == select)) and 1577836800) or 1576022400; -- choose the appropriate limit timesatmp return ((limit_ts <= rxiv_ts) and (rxiv_ts < tomorrow_ts)) -- limit_ts <= rxiv_date < tomorrow's date end --[[--------------------------< IS _ V A L I D _ I S X N >----------------------------------------------------- ISBN-10 and ISSN validator code calculates checksum across all ISBN/ISSN digits including the check digit. ISBN-13 is checked in isbn(). If the number is valid the result will be 0. Before calling this function, ISBN/ISSN must be checked for length and stripped of dashes, spaces and other non-ISxN characters. ]] local function is_valid_isxn (isxn_str, len) local temp = 0; isxn_str = { isxn_str:byte(1, len) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39, 'X' → 0x58 len = len + 1; -- adjust to be a loop counter for i, v in ipairs (isxn_str) do -- loop through all of the bytes and calculate the checksum if v == string.byte ("X" ) then -- if checkdigit is X (compares the byte value of 'X' which is 0x58) temp = temp + 10 * (len - i); -- it represents 10 decimal else temp = temp + tonumber (string.char (v) )*(len-i); end end return temp % 11 == 0; -- returns true if calculation result is zero end --[[--------------------------< IS _ V A L I D _ I S X N _ 1 3 >----------------------------------------------- ISBN-13 and ISMN validator code calculates checksum across all 13 ISBN/ISMN digits including the check digit. If the number is valid, the result will be 0. Before calling this function, ISBN-13/ISMN must be checked for length and stripped of dashes, spaces and other non-ISxN-13 characters. ]] local function is_valid_isxn_13 (isxn_str) local temp=0; isxn_str = { isxn_str:byte(1, 13) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39 for i, v in ipairs (isxn_str) do temp = temp + (3 - 2*(i % 2)) * tonumber (string.char (v) ); -- multiply odd index digits by 1, even index digits by 3 and sum; includes check digit end return temp % 10 == 0; -- sum modulo 10 is zero when ISBN-13/ISMN is correct end --[[--------------------------< N O R M A L I Z E _ L C C N >-------------------------------------------------- LCCN normalization (https://www.loc.gov/marc/lccn-namespace.html#normalization) 1. Remove all blanks. 2. If there is a forward slash (/) in the string, remove it, and remove all characters to the right of the forward slash. 3. If there is a hyphen in the string: a. Remove it. b. Inspect the substring following (to the right of) the (removed) hyphen. Then (and assuming that steps 1 and 2 have been carried out): 1. All these characters should be digits, and there should be six or less. (not done in this function) 2. If the length of the substring is less than 6, left-fill the substring with zeroes until the length is six. Returns a normalized LCCN for lccn() to validate. There is no error checking (step 3.b.1) performed in this function. ]] local function normalize_lccn (lccn) lccn = lccn:gsub ("%s", ""); -- 1. strip whitespace if nil ~= string.find (lccn, '/') then lccn = lccn:match ("(.-)/"); -- 2. remove forward slash and all character to the right of it end local prefix local suffix prefix, suffix = lccn:match ("(.+)%-(.+)"); -- 3.a remove hyphen by splitting the string into prefix and suffix if nil ~= suffix then -- if there was a hyphen suffix = string.rep("0", 6-string.len (suffix)) .. suffix; -- 3.b.2 left fill the suffix with 0s if suffix length less than 6 lccn = prefix..suffix; -- reassemble the LCCN end return lccn; end --============================<< I D E N T I F I E R F U N C T I O N S >>==================================== --[[--------------------------< A R X I V >-------------------------------------------------------------------- See: https://arxiv.org/help/arxiv_identifier format and error check arXiv identifier. There are three valid forms of the identifier: the first form, valid only between date codes 9107 and 0703, is: arXiv:<archive>.<class>/<date code><number><version> where: <archive> is a string of alpha characters - may be hyphenated; no other punctuation <class> is a string of alpha characters - may be hyphenated; no other punctuation; not the same as |class= parameter which is not supported in this form <date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01 first digit of YY for this form can only 9 and 0 <number> is a three-digit number <version> is a 1 or more digit number preceded with a lowercase v; no spaces (undocumented) the second form, valid from April 2007 through December 2014 is: arXiv:<date code>.<number><version> where: <date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01 <number> is a four-digit number <version> is a 1 or more digit number preceded with a lowercase v; no spaces the third form, valid from January 2015 is: arXiv:<date code>.<number><version> where: <date code> and <version> are as defined for 0704-1412 <number> is a five-digit number ]] local function arxiv (options) local id = options.id; local class = options.Class; -- TODO: lowercase? local handler = options.handler; local year, month, version; local err_msg = false; -- assume no error message local text; -- output text if id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%d$") or id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%dv%d+$") then -- test for the 9107-0703 format with or without version year, month = id:match("^%a[%a%.%-]+/([90]%d)([01]%d)%d%d%d[v%d]*$"); year = tonumber (year); month = tonumber (month); if ((not (90 < year or 8 > year)) or (1 > month or 12 < month)) or -- if invalid year or invalid month ((91 == year and 7 > month) or (7 == year and 3 < month)) then -- if years ok, are starting and ending months ok? err_msg = true; -- flag for error message end elseif id:match("^%d%d[01]%d%.%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%dv%d+$") then -- test for the 0704-1412 with or without version year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d[v%d]*$"); year = tonumber (year); month = tonumber (month); if ((7 > year) or (14 < year) or (1 > month or 12 < month)) or -- is year invalid or is month invalid? (doesn't test for future years) ((7 == year) and (4 > month)) then -- when year is 07, is month invalid (before April)? err_msg = true; -- flag for error message end elseif id:match("^%d%d[01]%d%.%d%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%d%dv%d+$") then -- test for the 1501- format with or without version year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d%d[v%d]*$"); year = tonumber (year); month = tonumber (month); if ((15 > year) or (1 > month or 12 < month)) then -- is year invalid or is month invalid? (doesn't test for future years) err_msg = true; -- flag for error message end else err_msg = true; -- not a recognized format; flag for error message end if err_msg then options.coins_list_t['ARXIV'] = nil; -- when error, unset so not included in COinS end local err_msg_t = {}; if err_msg then set_message ('err_bad_arxiv'); end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}); if is_set (class) then if id:match ('^%d+') then text = table.concat ({text, ' [[https://arxiv.org/archive/', class, ' ', class, ']]'}); -- external link within square brackets, not wikilink else set_message ('err_class_ignored'); end end return text; end --[[--------------------------< B I B C O D E >-------------------------------------------------------------------- Validates (sort of) and formats a bibcode ID. Format for bibcodes is specified here: https://adsabs.harvard.edu/abs_doc/help_pages/data.html#bibcodes But, this: 2015arXiv151206696F is apparently valid so apparently, the only things that really matter are length, 19 characters and first four digits must be a year. This function makes these tests: length must be 19 characters characters in position 1–4 must be digits and must represent a year in the range of 1000 – next year 5 must be a letter 6–8 must be letter, digit, ampersand, or dot (ampersand cannot directly precede a dot; &. ) 9–18 must be letter, digit, or dot 19 must be a letter or dot ]] local function bibcode (options) local id = options.id; local access = options.access; local handler = options.handler; local ignore_invalid = options.accept; local err_type; local err_msg = ''; local year; local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access}); if 19 ~= id:len() then err_type = cfg.err_msg_supl.length; else year = id:match ("^(%d%d%d%d)[%a][%w&%.][%w&%.][%w&%.][%w.]+[%a%.]$"); if not year then -- if nil then no pattern match err_type = cfg.err_msg_supl.value; -- so value error else local next_year = tonumber (os.date ('%Y')) + 1; -- get the current year as a number and add one for next year year = tonumber (year); -- convert year portion of bibcode to a number if (1000 > year) or (year > next_year) then err_type = cfg.err_msg_supl.year; -- year out of bounds end if id:find('&%.') then err_type = cfg.err_msg_supl.journal; -- journal abbreviation must not have '&.' (if it does it's missing a letter) end if id:match ('.........%.tmp%.') then -- temporary bibcodes when positions 10–14 are '.tmp.' set_message ('maint_bibcode'); end end end if is_set (err_type) and not ignore_invalid then -- if there was an error detected and accept-as-written markup not used set_message ('err_bad_bibcode', {err_type}); options.coins_list_t['BIBCODE'] = nil; -- when error, unset so not included in COinS end return text; end --[[--------------------------< B I O R X I V >----------------------------------------------------------------- Format bioRxiv ID and do simple error checking. Before 2019-12-11, biorXiv IDs were 10.1101/ followed by exactly 6 digits. After 2019-12-11, biorXiv IDs retained the six-digit identifier but prefixed that with a yyyy.mm.dd. date and suffixed with an optional version identifier. The bioRxiv ID is the string of characters: https://doi.org/10.1101/078733 -> 10.1101/078733 or a date followed by a six-digit number followed by an optional version indicator 'v' and one or more digits: https://www.biorxiv.org/content/10.1101/2019.12.11.123456v2 -> 10.1101/2019.12.11.123456v2 see https://www.biorxiv.org/about-biorxiv ]] local function biorxiv (options) local id = options.id; local handler = options.handler; local err_msg = true; -- flag; assume that there will be an error local patterns = { '^10%.1101/%d%d%d%d%d%d$', -- simple 6-digit identifier (before 2019-12-11) '^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%dv%d+$', -- y.m.d. date + 6-digit identifier + version (after 2019-12-11) '^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d$', -- y.m.d. date + 6-digit identifier (after 2019-12-11) } for _, pattern in ipairs (patterns) do -- spin through the patterns looking for a match if id:match (pattern) then local y, m, d = id:match (pattern); -- found a match, attempt to get year, month and date from the identifier if m then -- m is nil when id is the six-digit form if not is_valid_rxiv_date (y, m, d, 'b') then -- validate the encoded date; 'b' for biorxiv limit break; -- date fail; break out early so we don't unset the error message end end err_msg = nil; -- we found a match so unset the error message break; -- and done end end -- err_cat remains set here when no match if err_msg then options.coins_list_t['BIORXIV'] = nil; -- when error, unset so not included in COinS set_message ('err_bad_biorxiv'); -- and set the error message end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}); end --[[--------------------------< C I T E S E E R X >------------------------------------------------------------ CiteSeerX use their own notion of "doi" (not to be confused with the identifiers resolved via doi.org). The description of the structure of this identifier can be found at Help_talk:Citation_Style_1/Archive_26#CiteSeerX_id_structure ]] local function citeseerx (options) local id = options.id; local handler = options.handler; local matched; local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}); matched = id:match ("^10%.1%.1%.[1-9]%d?%d?%d?%.[1-9]%d?%d?%d?$"); if not matched then set_message ('err_bad_citeseerx' ); options.coins_list_t['CITESEERX'] = nil; -- when error, unset so not included in COinS end return text; end --[[--------------------------< D O I >------------------------------------------------------------------------ Formats a DOI and checks for DOI errors. DOI names contain two parts: prefix and suffix separated by a forward slash. Prefix: directory indicator '10.' followed by a registrant code Suffix: character string of any length chosen by the registrant This function checks a DOI name for: prefix/suffix. If the DOI name contains spaces or endashes, or, if it ends with a period or a comma, this function will emit a bad_doi error message. DOI names are case-insensitive and can incorporate any printable Unicode characters so the test for spaces, endash, and terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely if ever used in DOI names. https://www.doi.org/doi_handbook/2_Numbering.html -- 2.2 Syntax of a DOI name https://www.doi.org/doi_handbook/2_Numbering.html#2.2.2 -- 2.2.2 DOI prefix ]] local function doi (options) local id = options.id; local inactive = options.DoiBroken local access = options.access; local ignore_invalid = options.accept; local handler = options.handler; local err_flag; local text; if is_set (inactive) then local inactive_year = inactive:match("%d%d%d%d"); -- try to get the year portion from the inactive date local inactive_month, good; if is_set (inactive_year) then if 4 < inactive:len() then -- inactive date has more than just a year (could be anything) local lang_obj = mw.getContentLanguage(); -- get a language object for this wiki good, inactive_month = pcall (lang_obj.formatDate, lang_obj, 'F', inactive); -- try to get the month name from the inactive date if not good then inactive_month = nil; -- something went wrong so make sure this is unset end end end -- otherwise, |doi-broken-date= has something but it isn't a date if is_set (inactive_year) and is_set (inactive_month) then set_message ('maint_doi_inactive_dated', {inactive_year, inactive_month, ' '}); elseif is_set (inactive_year) then set_message ('maint_doi_inactive_dated', {inactive_year, '', ''}); else set_message ('maint_doi_inactive'); end inactive = " (" .. cfg.messages['inactive'] .. ' ' .. inactive .. ')'; end local registrant = mw.ustring.match (id, '^10%.([^/]+)/[^%s–]-[^%.,]$'); -- registrant set when DOI has the proper basic form local registrant_err_patterns = { -- these patterns are for code ranges that are not supported '^[^1-3]%d%d%d%d%.%d+$', -- 5 digits with subcode (0xxxx, 40000+); accepts: 10000–39999 '^[^1-6]%d%d%d%d$', -- 5 digits without subcode (0xxxx, 60000+); accepts: 10000–69999 '^[^1-9]%d%d%d%.%d+$', -- 4 digits with subcode (0xxx); accepts: 1000–9999 '^[^1-9]%d%d%d$', -- 4 digits without subcode (0xxx); accepts: 1000–9999 '^%d%d%d%d%d%d+', -- 6 or more digits '^%d%d?%d?$', -- less than 4 digits without subcode (3 digits with subcode is legitimate) '^%d%d?%.[%d%.]+', -- 1 or 2 digits with subcode '^5555$', -- test registrant will never resolve '[^%d%.]', -- any character that isn't a digit or a dot } if not ignore_invalid then if registrant then -- when DOI has proper form for i, pattern in ipairs (registrant_err_patterns) do -- spin through error patterns if registrant:match (pattern) then -- to validate registrant codes err_flag = set_message ('err_bad_doi'); -- when found, mark this DOI as bad break; -- and done end end else err_flag = set_message ('err_bad_doi'); -- invalid directory or malformed end else set_message ('maint_doi_ignore'); end if err_flag then options.coins_list_t['DOI'] = nil; -- when error, unset so not included in COinS end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access, auto_link = not (err_flag or is_set (inactive) or ignore_invalid) and 'doi' or nil -- do not auto-link when |doi-broken-date= has a value or when there is a DOI error or (to play it safe, after all, auto-linking is not essential) when invalid DOIs are ignored }) .. (inactive or ''); return text; end --[[--------------------------< H D L >------------------------------------------------------------------------ Formats an HDL with minor error checking. HDL names contain two parts: prefix and suffix separated by a forward slash. Prefix: character string using any character in the UCS-2 character set except '/' Suffix: character string of any length using any character in the UCS-2 character set chosen by the registrant This function checks a HDL name for: prefix/suffix. If the HDL name contains spaces, endashes, or, if it ends with a period or a comma, this function will emit a bad_hdl error message. HDL names are case-insensitive and can incorporate any printable Unicode characters so the test for endashes and terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely if ever used in HDLs. Query string parameters are named here: https://www.handle.net/proxy_servlet.html. query strings are not displayed but since '?' is an allowed character in an HDL, '?' followed by one of the query parameters is the only way we have to detect the query string so that it isn't URL-encoded with the rest of the identifier. ]] local function hdl (options) local id = options.id; local access = options.access; local handler = options.handler; local query_params = { -- list of known query parameters from https://www.handle.net/proxy_servlet.html 'noredirect', 'ignore_aliases', 'auth', 'cert', 'index', 'type', 'urlappend', 'locatt', 'action', } local hdl, suffix, param = id:match ('(.-)(%?(%a+).+)$'); -- look for query string local found; if hdl then -- when there are query strings, this is the handle identifier portion for _, q in ipairs (query_params) do -- spin through the list of query parameters if param:match ('^' .. q) then -- if the query string begins with one of the parameters found = true; -- announce a find break; -- and stop looking end end end if found then id = hdl; -- found so replace id with the handle portion; this will be URL-encoded, suffix will not else suffix = ''; -- make sure suffix is empty string for concatenation else end local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, suffix = suffix, separator = handler.separator, encode = handler.encode, access = access}) if nil == id:match("^[^%s–]-/[^%s–]-[^%.,]$") then -- HDL must contain a forward slash, must not contain spaces, endashes, and must not end with period or comma set_message ('err_bad_hdl' ); options.coins_list_t['HDL'] = nil; -- when error, unset so not included in COinS end return text; end --[[--------------------------< I S B N >---------------------------------------------------------------------- Determines whether an ISBN string is valid ]] local function isbn (options) local isbn_str = options.id; local ignore_invalid = options.accept; local handler = options.handler; local function return_result (check, err_type) -- local function to handle the various returns local ISBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect, prefix = handler.prefix, id = isbn_str, separator = handler.separator}); if ignore_invalid then -- if ignoring ISBN errors set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error else -- here when not ignoring if not check then -- and there is an error options.coins_list_t['ISBN'] = nil; -- when error, unset so not included in COinS set_message ('err_bad_isbn', err_type); -- set an error message return ISBN; -- return id text end end return ISBN; -- return id text end if nil ~= isbn_str:match ('[^%s-0-9X]') then return return_result (false, cfg.err_msg_supl.char); -- fail if isbn_str contains anything but digits, hyphens, or the uppercase X end local id = isbn_str:gsub ('[%s-]', ''); -- remove hyphens and whitespace local len = id:len(); if len ~= 10 and len ~= 13 then return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length end if len == 10 then if id:match ('^%d*X?$') == nil then -- fail if isbn_str has 'X' anywhere but last position return return_result (false, cfg.err_msg_supl.form); end if not is_valid_isxn (id, 10) then -- test isbn-10 for numerical validity return return_result (false, cfg.err_msg_supl.check); -- fail if isbn-10 is not numerically valid end if id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not valid isbn group ids but are used by amazon as numeric identifiers (asin) return return_result (false, cfg.err_msg_supl.group); -- fail if isbn-10 begins with 630/1 end return return_result (true, cfg.err_msg_supl.check); -- pass if isbn-10 is numerically valid else if id:match ('^%d+$') == nil then return return_result (false, cfg.err_msg_supl.char); -- fail if ISBN-13 is not all digits end if id:match ('^97[89]%d*$') == nil then return return_result (false, cfg.err_msg_supl.prefix); -- fail when ISBN-13 does not begin with 978 or 979 end if id:match ('^9790') then return return_result (false, cfg.err_msg_supl.group); -- group identifier '0' is reserved to ISMN end return return_result (is_valid_isxn_13 (id), cfg.err_msg_supl.check); end end --[[--------------------------< A S I N >---------------------------------------------------------------------- Formats a link to Amazon. Do simple error checking: ASIN must be mix of 10 numeric or uppercase alpha characters. If a mix, first character must be uppercase alpha; if all numeric, ASINs must be 10-digit ISBN. If 10-digit ISBN, add a maintenance category so a bot or AWB script can replace |asin= with |isbn=. Error message if not 10 characters, if not ISBN-10, if mixed and first character is a digit. |asin=630....... and |asin=631....... are (apparently) not a legitimate ISBN though it checksums as one; these do not cause this function to emit the maint_asin message This function is positioned here because it calls isbn() ]] local function asin (options) local id = options.id; local domain = options.ASINTLD; local err_flag; if not id:match("^[%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u]$") then err_flag = set_message ('err_bad_asin'); -- ASIN is not a mix of 10 uppercase alpha and numeric characters else if id:match("^%d%d%d%d%d%d%d%d%d[%dX]$") then -- if 10-digit numeric (or 9 digits with terminal X) if is_valid_isxn (id, 10) then -- see if ASIN value is or validates as ISBN-10 if not id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not a valid isbn prefixes but are used by amazon as a numeric identifier err_flag = set_message ('err_bad_asin'); -- ASIN has ISBN-10 form but begins with something other than 630/1 so probably an isbn end elseif not is_set (err_flag) then err_flag = set_message ('err_bad_asin'); -- ASIN is not ISBN-10 end elseif not id:match("^%u[%d%u]+$") then err_flag = set_message ('err_bad_asin'); -- asin doesn't begin with uppercase alpha end end if (not is_set (domain)) or in_array (domain, {'us'}) then -- default: United States domain = "com"; elseif in_array (domain, {'jp', 'uk'}) then -- Japan, United Kingdom domain = "co." .. domain; elseif in_array (domain, {'z.cn'}) then -- China domain = "cn"; elseif in_array (domain, {'au', 'br', 'mx', 'sg', 'tr'}) then -- Australia, Brazil, Mexico, Singapore, Turkey domain = "com." .. domain; elseif not in_array (domain, {'ae', 'ca', 'cn', 'de', 'es', 'fr', 'in', 'it', 'nl', 'pl', 'sa', 'se', 'co.jp', 'co.uk', 'com', 'com.au', 'com.br', 'com.mx', 'com.sg', 'com.tr'}) then -- Arabic Emirates, Canada, China, Germany, Spain, France, Indonesia, Italy, Netherlands, Poland, Saudi Arabia, Sweden (as of 2021-03 Austria (.at), Liechtenstein (.li) and Switzerland (.ch) still redirect to the German site (.de) with special settings, so don't maintain local ASINs for them) err_flag = set_message ('err_bad_asin_tld'); -- unsupported asin-tld value end local handler = options.handler; if not is_set (err_flag) then options.coins_list_t['ASIN'] = handler.prefix .. domain .. "/dp/" .. id; -- asin for coins else options.coins_list_t['ASIN'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix .. domain .. "/dp/", id = id, encode = handler.encode, separator = handler.separator}) end --[[--------------------------< I S M N >---------------------------------------------------------------------- Determines whether an ISMN string is valid. Similar to ISBN-13, ISMN is 13 digits beginning 979-0-... and uses the same check digit calculations. See https://www.ismn-international.org/download/Web_ISMN_Users_Manual_2008-6.pdf section 2, pages 9–12. ismn value not made part of COinS metadata because we don't have a url or isn't a COinS-defined identifier (rft.xxx) or an identifier registered at info-uri.info (info:) ]] local function ismn (options) local id = options.id; local handler = options.handler; local text; local valid_ismn = true; local id_copy; id_copy = id; -- save a copy because this testing is destructive id = id:gsub ('[%s-]', ''); -- remove hyphens and white space if 13 ~= id:len() or id:match ("^9790%d*$" ) == nil then -- ISMN must be 13 digits and begin with 9790 valid_ismn = false; else valid_ismn=is_valid_isxn_13 (id); -- validate ISMN end -- text = internal_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- use this (or external version) when there is some place to link to -- prefix = handler.prefix, id = id_copy, separator = handler.separator, encode = handler.encode}) text = table.concat ( -- because no place to link to yet { make_wikilink (link_label_make (handler), handler.label), handler.separator, id_copy }); if false == valid_ismn then options.coins_list_t['ISMN'] = nil; -- when error, unset so not included in COinS; not really necessary here because ismn not made part of COinS set_message ('err_bad_ismn'); -- create an error message if the ISMN is invalid end return text; end --[[--------------------------< I S S N >---------------------------------------------------------------------- Validate and format an ISSN. This code fixes the case where an editor has included an ISSN in the citation but has separated the two groups of four digits with a space. When that condition occurred, the resulting link looked like this: |issn=0819 4327 gives: [https://www.worldcat.org/issn/0819 4327 0819 4327] -- can't have spaces in an external link This code now prevents that by inserting a hyphen at the ISSN midpoint. It also validates the ISSN for length and makes sure that the checkdigit agrees with the calculated value. Incorrect length (8 digits), characters other than 0-9 and X, or checkdigit / calculated value mismatch will all cause a check ISSN error message. The ISSN is always displayed with a hyphen, even if the ISSN was given as a single group of 8 digits. ]] local function issn (options) local id = options.id; local handler = options.handler; local ignore_invalid = options.accept; local issn_copy = id; -- save a copy of unadulterated ISSN; use this version for display if ISSN does not validate local text; local valid_issn = true; id = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace if 8 ~= id:len() or nil == id:match ("^%d*X?$" ) then -- validate the ISSN: 8 digits long, containing only 0-9 or X in the last position valid_issn = false; -- wrong length or improper character else valid_issn = is_valid_isxn (id, 8); -- validate ISSN end if true == valid_issn then id = string.sub (id, 1, 4 ) .. "-" .. string.sub (id, 5 ); -- if valid, display correctly formatted version else id = issn_copy; -- if not valid, show the invalid ISSN with error message end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) if ignore_invalid then set_message ('maint_issn_ignore'); else if false == valid_issn then options.coins_list_t['ISSN'] = nil; -- when error, unset so not included in COinS set_message ('err_bad_issn', (options.hkey == 'EISSN') and 'e' or ''); -- create an error message if the ISSN is invalid end end return text; end --[[--------------------------< J F M >----------------------------------------------------------------------- A numerical identifier in the form nn.nnnn.nn ]] local function jfm (options) local id = options.id; local handler = options.handler; local id_num; id_num = id:match ('^[Jj][Ff][Mm](.*)$'); -- identifier with jfm prefix; extract identifier if is_set (id_num) then set_message ('maint_jfm_format'); else -- plain number without JFM prefix id_num = id; -- if here id does not have prefix end if id_num and id_num:match('^%d%d%.%d%d%d%d%.%d%d$') then id = id_num; -- jfm matches pattern else set_message ('err_bad_jfm' ); -- set an error message options.coins_list_t['JFM'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}); end --[[--------------------------< J S T O R >-------------------------------------------------------------------- Format a JSTOR with some error checking ]] local function jstor (options) local id = options.id; local access = options.access; local handler = options.handler; if id:find ('[Jj][Ss][Tt][Oo][Rr]') or id:find ('^https?://') or id:find ('%s') then set_message ('err_bad_jstor'); -- set an error message options.coins_list_t['JSTOR'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access}); end --[[--------------------------< L C C N >---------------------------------------------------------------------- Format LCCN link and do simple error checking. LCCN is a character string 8-12 characters long. The length of the LCCN dictates the character type of the first 1-3 characters; the rightmost eight are always digits. https://oclc-research.github.io/infoURI-Frozen/info-uri.info/info:lccn/reg.html length = 8 then all digits length = 9 then lccn[1] is lowercase alpha length = 10 then lccn[1] and lccn[2] are both lowercase alpha or both digits length = 11 then lccn[1] is lower case alpha, lccn[2] and lccn[3] are both lowercase alpha or both digits length = 12 then lccn[1] and lccn[2] are both lowercase alpha ]] local function lccn (options) local lccn = options.id; local handler = options.handler; local err_flag; -- presume that LCCN is valid local id = lccn; -- local copy of the LCCN id = normalize_lccn (id); -- get canonical form (no whitespace, hyphens, forward slashes) local len = id:len(); -- get the length of the LCCN if 8 == len then if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits) err_flag = set_message ('err_bad_lccn'); -- set an error message end elseif 9 == len then -- LCCN should be adddddddd if nil == id:match("%l%d%d%d%d%d%d%d%d") then -- does it match our pattern? err_flag = set_message ('err_bad_lccn'); -- set an error message end elseif 10 == len then -- LCCN should be aadddddddd or dddddddddd if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits) ... if nil == id:match("^%l%l%d%d%d%d%d%d%d%d") then -- ... see if it matches our pattern err_flag = set_message ('err_bad_lccn'); -- no match, set an error message end end elseif 11 == len then -- LCCN should be aaadddddddd or adddddddddd if not (id:match("^%l%l%l%d%d%d%d%d%d%d%d") or id:match("^%l%d%d%d%d%d%d%d%d%d%d")) then -- see if it matches one of our patterns err_flag = set_message ('err_bad_lccn'); -- no match, set an error message end elseif 12 == len then -- LCCN should be aadddddddddd if not id:match("^%l%l%d%d%d%d%d%d%d%d%d%d") then -- see if it matches our pattern err_flag = set_message ('err_bad_lccn'); -- no match, set an error message end else err_flag = set_message ('err_bad_lccn'); -- wrong length, set an error message end if not is_set (err_flag) and nil ~= lccn:find ('%s') then err_flag = set_message ('err_bad_lccn'); -- lccn contains a space, set an error message end if is_set (err_flag) then options.coins_list_t['LCCN'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = lccn, separator = handler.separator, encode = handler.encode}); end --[[--------------------------< M E D R X I V >----------------------------------------------------------------- Format medRxiv ID and do simple error checking. Similar to later bioRxiv IDs, medRxiv IDs are prefixed with a yyyy.mm.dd. date and suffixed with an optional version identifier. Ealiest date accepted is 2020.01.01 The medRxiv ID is a date followed by an eight-digit number followed by an optional version indicator 'v' and one or more digits: https://www.medrxiv.org/content/10.1101/2020.11.16.20232009v2 -> 10.1101/2020.11.16.20232009v2 ]] local function medrxiv (options) local id = options.id; local handler = options.handler; local err_msg_flag = true; -- flag; assume that there will be an error local patterns = { '%d%d%d%d%d%d%d%d$', -- simple 8-digit identifier; these should be relatively rare '^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d%d%dv%d+$', -- y.m.d. date + 8-digit identifier + version (2020-01-01 and later) '^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d%d%d$', -- y.m.d. date + 8-digit identifier (2020-01-01 and later) } for _, pattern in ipairs (patterns) do -- spin through the patterns looking for a match if id:match (pattern) then local y, m, d = id:match (pattern); -- found a match, attempt to get year, month and date from the identifier if m then -- m is nil when id is the 8-digit form if not is_valid_rxiv_date (y, m, d, 'b') then -- validate the encoded date; 'b' for medrxiv limit break; -- date fail; break out early so we don't unset the error message end end err_msg_flag = nil; -- we found a match so unset the error message break; -- and done end end -- <err_msg_flag> remains set here when no match if err_msg_flag then options.coins_list_t['MEDRXIV'] = nil; -- when error, unset so not included in COinS set_message ('err_bad_medrxiv'); -- and set the error message end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}); end --[[--------------------------< M R >-------------------------------------------------------------------------- A seven digit number; if not seven digits, zero-fill leading digits to make seven digits. ]] local function mr (options) local id = options.id; local handler = options.handler; local id_num; local id_len; id_num = id:match ('^[Mm][Rr](%d+)$'); -- identifier with mr prefix if is_set (id_num) then set_message ('maint_mr_format'); -- add maint cat else -- plain number without mr prefix id_num = id:match ('^%d+$'); -- if here id is all digits end id_len = id_num and id_num:len() or 0; if (7 >= id_len) and (0 ~= id_len) then id = string.rep ('0', 7-id_len) .. id_num; -- zero-fill leading digits else set_message ('err_bad_mr'); -- set an error message options.coins_list_t['MR'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}); end --[[--------------------------< O C L C >---------------------------------------------------------------------- Validate and format an OCLC ID. https://www.oclc.org/batchload/controlnumber.en.html {{dead link}} archived at: https://web.archive.org/web/20161228233804/https://www.oclc.org/batchload/controlnumber.en.html ]] local function oclc (options) local id = options.id; local handler = options.handler; local number; if id:match('^ocm%d%d%d%d%d%d%d%d$') then -- ocm prefix and 8 digits; 001 field (12 characters) number = id:match('ocm(%d+)'); -- get the number elseif id:match('^ocn%d%d%d%d%d%d%d%d%d$') then -- ocn prefix and 9 digits; 001 field (12 characters) number = id:match('ocn(%d+)'); -- get the number elseif id:match('^on%d%d%d%d%d%d%d%d%d%d+$') then -- on prefix and 10 or more digits; 001 field (12 characters) number = id:match('^on(%d%d%d%d%d%d%d%d%d%d+)$'); -- get the number elseif id:match('^%(OCoLC%)[1-9]%d*$') then -- (OCoLC) prefix and variable number digits; no leading zeros; 035 field number = id:match('%(OCoLC%)([1-9]%d*)'); -- get the number if 9 < number:len() then number = nil; -- constrain to 1 to 9 digits; change this when OCLC issues 10-digit numbers end elseif id:match('^%d+$') then -- no prefix number = id; -- get the number if tonumber (id) > handler.id_limit then number = nil; -- unset when id value exceeds the limit end end if number then -- proper format id = number; -- exclude prefix, if any, from external link else set_message ('err_bad_oclc') -- add an error message if the id is malformed options.coins_list_t['OCLC'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}); end --[[--------------------------< O P E N L I B R A R Y >-------------------------------------------------------- Formats an OpenLibrary link, and checks for associated errors. ]] local function openlibrary (options) local id = options.id; local access = options.access; local handler = options.handler; local ident, code = id:gsub('^OL', ''):match("^(%d+([AMW]))$"); -- strip optional OL prefix followed immediately by digits followed by 'A', 'M', or 'W'; local err_flag; local prefix = { -- these are appended to the handler.prefix according to code ['A']='authors/OL', ['M']='books/OL', ['W']='works/OL', ['X']='OL' -- not a code; spoof when 'code' in id is invalid }; if not ident then code = 'X'; -- no code or id completely invalid ident = id; -- copy id to ident so that we display the flawed identifier err_flag = set_message ('err_bad_ol'); end if not is_set (err_flag) then options.coins_list_t['OL'] = handler.prefix .. prefix[code] .. ident; -- experiment for ol coins else options.coins_list_t['OL'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix .. prefix[code], id = ident, separator = handler.separator, encode = handler.encode, access = access}); end --[[--------------------------< O S T I >---------------------------------------------------------------------- Format OSTI and do simple error checking. OSTIs are sequential numbers beginning at 1 and counting up. This code checks the OSTI to see that it contains only digits and is less than test_limit specified in the configuration; the value in test_limit will need to be updated periodically as more OSTIs are issued. NB. 1018 is the lowest OSTI number found in the wild (so far) and resolving OK on the OSTI site ]] local function osti (options) local id = options.id; local access = options.access; local handler = options.handler; if id:match("[^%d]") then -- if OSTI has anything but digits set_message ('err_bad_osti'); -- set an error message options.coins_list_t['OSTI'] = nil; -- when error, unset so not included in COinS else -- OSTI is only digits local id_num = tonumber (id); -- convert id to a number for range testing if 1018 > id_num or handler.id_limit < id_num then -- if OSTI is outside test limit boundaries set_message ('err_bad_osti'); -- set an error message options.coins_list_t['OSTI'] = nil; -- when error, unset so not included in COinS end end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access}); end --[[--------------------------< P M C >------------------------------------------------------------------------ Format a PMC, do simple error checking, and check for embargoed articles. The embargo parameter takes a date for a value. If the embargo date is in the future the PMC identifier will not be linked to the article. If the embargo date is today or in the past, or if it is empty or omitted, then the PMC identifier is linked to the article through the link at cfg.id_handlers['PMC'].prefix. PMC embargo date testing is done in function is_embargoed () which is called earlier because when the citation has |pmc=<value> but does not have a |url= then |title= is linked with the PMC link. Function is_embargoed () returns the embargo date if the PMC article is still embargoed, otherwise it returns an empty string. PMCs are sequential numbers beginning at 1 and counting up. This code checks the PMC to see that it contains only digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically as more PMCs are issued. ]] local function pmc (options) local id = options.id; local embargo = options.Embargo; -- TODO: lowercase? local handler = options.handler; local err_flag; local id_num; local text; id_num = id:match ('^[Pp][Mm][Cc](%d+)$'); -- identifier with PMC prefix if is_set (id_num) then set_message ('maint_pmc_format'); else -- plain number without PMC prefix id_num = id:match ('^%d+$'); -- if here id is all digits end if is_set (id_num) then -- id_num has a value so test it id_num = tonumber (id_num); -- convert id_num to a number for range testing if 1 > id_num or handler.id_limit < id_num then -- if PMC is outside test limit boundaries err_flag = set_message ('err_bad_pmc'); -- set an error message else id = tostring (id_num); -- make sure id is a string end else -- when id format incorrect err_flag = set_message ('err_bad_pmc'); -- set an error message end if is_set (embargo) and is_set (is_embargoed (embargo)) then -- is PMC is still embargoed? text = table.concat ( -- still embargoed so no external link { make_wikilink (link_label_make (handler), handler.label), handler.separator, id, }); else text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- no embargo date or embargo has expired, ok to link to article prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access, auto_link = not err_flag and 'pmc' or nil -- do not auto-link when PMC has error }); end if err_flag then options.coins_list_t['PMC'] = nil; -- when error, unset so not included in COinS end return text; end --[[--------------------------< P M I D >---------------------------------------------------------------------- Format PMID and do simple error checking. PMIDs are sequential numbers beginning at 1 and counting up. This code checks the PMID to see that it contains only digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically as more PMIDs are issued. ]] local function pmid (options) local id = options.id; local handler = options.handler; if id:match("[^%d]") then -- if PMID has anything but digits set_message ('err_bad_pmid'); -- set an error message options.coins_list_t['PMID'] = nil; -- when error, unset so not included in COinS else -- PMID is only digits local id_num = tonumber (id); -- convert id to a number for range testing if 1 > id_num or handler.id_limit < id_num then -- if PMID is outside test limit boundaries set_message ('err_bad_pmid'); -- set an error message options.coins_list_t['PMID'] = nil; -- when error, unset so not included in COinS end end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}); end --[[--------------------------< R F C >------------------------------------------------------------------------ Format RFC and do simple error checking. RFCs are sequential numbers beginning at 1 and counting up. This code checks the RFC to see that it contains only digits and is less than test_limit specified in the configuration; the value in test_limit will need to be updated periodically as more RFCs are issued. An index of all RFCs is here: https://tools.ietf.org/rfc/ ]] local function rfc (options) local id = options.id; local handler = options.handler; if id:match("[^%d]") then -- if RFC has anything but digits set_message ('err_bad_rfc'); -- set an error message options.coins_list_t['RFC'] = nil; -- when error, unset so not included in COinS else -- RFC is only digits local id_num = tonumber (id); -- convert id to a number for range testing if 1 > id_num or handler.id_limit < id_num then -- if RFC is outside test limit boundaries set_message ('err_bad_rfc'); -- set an error message options.coins_list_t['RFC'] = nil; -- when error, unset so not included in COinS end end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}); end --[[--------------------------< S 2 C I D >-------------------------------------------------------------------- Format an S2CID, do simple error checking S2CIDs are sequential numbers beginning at 1 and counting up. This code checks the S2CID to see that it is only digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically as more S2CIDs are issued. ]] local function s2cid (options) local id = options.id; local access = options.access; local handler = options.handler; local id_num; local text; id_num = id:match ('^[1-9]%d*$'); -- id must be all digits; must not begin with 0; no open access flag if is_set (id_num) then -- id_num has a value so test it id_num = tonumber (id_num); -- convert id_num to a number for range testing if handler.id_limit < id_num then -- if S2CID is outside test limit boundaries set_message ('err_bad_s2cid'); -- set an error message options.coins_list_t['S2CID'] = nil; -- when error, unset so not included in COinS end else -- when id format incorrect set_message ('err_bad_s2cid'); -- set an error message options.coins_list_t['S2CID'] = nil; -- when error, unset so not included in COinS end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access}); return text; end --[[--------------------------< S B N >------------------------------------------------------------------------ 9-digit form of ISBN-10; uses same check-digit validation when SBN is prefixed with an additional '0' to make 10 digits sbn value not made part of COinS metadata because we don't have a url or isn't a COinS-defined identifier (rft.xxx) or an identifier registered at info-uri.info (info:) ]] local function sbn (options) local id = options.id; local ignore_invalid = options.accept; local handler = options.handler; local function return_result (check, err_type) -- local function to handle the various returns local SBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator}); if not ignore_invalid then -- if not ignoring SBN errors if not check then options.coins_list_t['SBN'] = nil; -- when error, unset so not included in COinS; not really necessary here because sbn not made part of COinS set_message ('err_bad_sbn', {err_type}); -- display an error message return SBN; end else set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error (ToDo: Possibly switch to separate message for SBNs only) end return SBN; end if id:match ('[^%s-0-9X]') then return return_result (false, cfg.err_msg_supl.char); -- fail if SBN contains anything but digits, hyphens, or the uppercase X end local ident = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace; they interfere with the rest of the tests if 9 ~= ident:len() then return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length end if ident:match ('^%d*X?$') == nil then return return_result (false, cfg.err_msg_supl.form); -- fail if SBN has 'X' anywhere but last position end return return_result (is_valid_isxn ('0' .. ident, 10), cfg.err_msg_supl.check); end --[[--------------------------< S S R N >---------------------------------------------------------------------- Format an SSRN, do simple error checking SSRNs are sequential numbers beginning at 100? and counting up. This code checks the SSRN to see that it is only digits and is greater than 99 and less than test_limit; the value in local variable test_limit will need to be updated periodically as more SSRNs are issued. ]] local function ssrn (options) local id = options.id; local handler = options.handler; local id_num; local text; id_num = id:match ('^%d+$'); -- id must be all digits if is_set (id_num) then -- id_num has a value so test it id_num = tonumber (id_num); -- convert id_num to a number for range testing if 100 > id_num or handler.id_limit < id_num then -- if SSRN is outside test limit boundaries set_message ('err_bad_ssrn'); -- set an error message options.coins_list_t['SSRN'] = nil; -- when error, unset so not included in COinS end else -- when id format incorrect set_message ('err_bad_ssrn'); -- set an error message options.coins_list_t['SSRN'] = nil; -- when error, unset so not included in COinS end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = options.access}); return text; end --[[--------------------------< U S E N E T _ I D >------------------------------------------------------------ Validate and format a usenet message id. Simple error checking, looks for 'id-left@id-right' not enclosed in '<' and/or '>' angle brackets. ]] local function usenet_id (options) local id = options.id; local handler = options.handler; local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) if not id:match('^.+@.+$') or not id:match('^[^<].*[^>]$') then -- doesn't have '@' or has one or first or last character is '< or '>' set_message ('err_bad_usenet_id') -- add an error message if the message id is invalid options.coins_list_t['USENETID'] = nil; -- when error, unset so not included in COinS end return text; end --[[--------------------------< Z B L >----------------------------------------------------------------------- A numerical identifier in the form nnnn.nnnnn - leading zeros in the first quartet optional format described here: http://emis.mi.sanu.ac.rs/ZMATH/zmath/en/help/search/ temporary format is apparently eight digits. Anything else is an error ]] local function zbl (options) local id = options.id; local handler = options.handler; if id:match('^%d%d%d%d%d%d%d%d$') then -- is this identifier using temporary format? set_message ('maint_zbl'); -- yes, add maint cat elseif not id:match('^%d?%d?%d?%d%.%d%d%d%d%d$') then -- not temporary, is it normal format? set_message ('err_bad_zbl'); -- no, set an error message options.coins_list_t['ZBL'] = nil; -- when error, unset so not included in COinS end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}); end --============================<< I N T E R F A C E F U N C T I O N S >>========================================== --[[--------------------------< E X T R A C T _ I D S >------------------------------------------------------------ Populates ID table from arguments using configuration settings. Loops through cfg.id_handlers and searches args for any of the parameters listed in each cfg.id_handlers['...'].parameters. If found, adds the parameter and value to the identifier list. Emits redundant error message if more than one alias exists in args ]] local function extract_ids (args) local id_list = {}; -- list of identifiers found in args for k, v in pairs (cfg.id_handlers) do -- k is uppercase identifier name as index to cfg.id_handlers; e.g. cfg.id_handlers['ISBN'], v is a table v = select_one (args, v.parameters, 'err_redundant_parameters' ); -- v.parameters is a table of aliases for k; here we pick one from args if present if is_set (v) then id_list[k] = v; end -- if found in args, add identifier to our list end return id_list; end --[[--------------------------< E X T R A C T _ I D _ A C C E S S _ L E V E L S >-------------------------------------- Fetches custom id access levels from arguments using configuration settings. Parameters which have a predefined access level (e.g. arxiv) do not use this function as they are directly rendered as free without using an additional parameter. returns a table of k/v pairs where k is same as the identifier's key in cfg.id_handlers and v is the assigned (valid) keyword access-level values must match the case used in cfg.keywords_lists['id-access'] (lowercase unless there is some special reason for something else) ]] local function extract_id_access_levels (args, id_list) local id_accesses_list = {}; for k, v in pairs (cfg.id_handlers) do local access_param = v.custom_access; -- name of identifier's access-level parameter if is_set (access_param) then local access_level = args[access_param]; -- get the assigned value if there is one if is_set (access_level) then if not in_array (access_level, cfg.keywords_lists['id-access']) then -- exact match required set_message ('err_invalid_param_val', {access_param, access_level}); access_level = nil; -- invalid so unset end if not is_set (id_list[k]) then -- identifier access-level must have a matching identifier set_message ('err_param_access_requires_param', {k:lower()}); -- parameter name is uppercase in cfg.id_handlers (k); lowercase for error message end id_accesses_list[k] = cfg.keywords_xlate[access_level]; -- get translated keyword end end end return id_accesses_list; end --[[--------------------------< B U I L D _ I D _ L I S T >---------------------------------------------------- render the identifiers into a sorted sequence table <ID_list_coins_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value <options_t> is a table of various k/v option pairs provided in the call to new_build_id_list(); modified by this function and passed to all identifier rendering functions <access_levels_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value (if valid) returns a sequence table of sorted (by hkey - 'handler' key) rendered identifier strings ]] local function build_id_list (ID_list_coins_t, options_t, access_levels_t) local ID_list_t = {}; local accept; local func_map = { --function map points to functions associated with hkey identifier ['ARXIV'] = arxiv, ['ASIN'] = asin, ['BIBCODE'] = bibcode, ['BIORXIV'] = biorxiv, ['CITESEERX'] = citeseerx, ['DOI'] = doi, ['EISSN'] = issn, ['HDL'] = hdl, ['ISBN'] = isbn, ['ISMN'] = ismn, ['ISSN'] = issn, ['JFM'] = jfm, ['JSTOR'] = jstor, ['LCCN'] = lccn, ['MEDRXIV'] = medrxiv, ['MR'] = mr, ['OCLC'] = oclc, ['OL'] = openlibrary, ['OSTI'] = osti, ['PMC'] = pmc, ['PMID'] = pmid, ['RFC'] = rfc, ['S2CID'] = s2cid, ['SBN'] = sbn, ['SSRN'] = ssrn, ['USENETID'] = usenet_id, ['ZBL'] = zbl, } for hkey, v in pairs (ID_list_coins_t) do v, accept = has_accept_as_written (v); -- remove accept-as-written markup if present; accept is boolean true when markup removed; false else -- every function gets the options table with value v and accept boolean options_t.hkey = hkey; -- ~/Configuration handler key options_t.id = v; -- add that identifier value to the options table options_t.accept = accept; -- add the accept boolean flag options_t.access = access_levels_t[hkey]; -- add the access level for those that have an |<identifier-access= parameter options_t.handler = cfg.id_handlers[hkey]; options_t.coins_list_t = ID_list_coins_t; -- pointer to ID_list_coins_t; for |asin= and |ol=; also to keep erroneous values out of the citation's metadata options_t.coins_list_t[hkey] = v; -- id value without accept-as-written markup for metadata if options_t.handler.access and not in_array (options_t.handler.access, cfg.keywords_lists['id-access']) then error (cfg.messages['unknown_ID_access'] .. options_t.handler.access); -- here when handler access key set to a value not listed in list of allowed id access keywords end if func_map[hkey] then local id_text = func_map[hkey] (options_t); -- call the function to get identifier text and any error message table.insert (ID_list_t, {hkey, id_text}); -- add identifier text to the output sequence table else error (cfg.messages['unknown_ID_key'] .. hkey); -- here when func_map doesn't have a function for hkey end end local function comp (a, b) -- used by following table.sort() return a[1]:lower() < b[1]:lower(); -- sort by hkey end table.sort (ID_list_t, comp); -- sequence table of tables sort for k, v in ipairs (ID_list_t) do -- convert sequence table of tables to simple sequence table of strings ID_list_t[k] = v[2]; -- v[2] is the identifier rendering from the call to the various functions in func_map{} end return ID_list_t; end --[[--------------------------< O P T I O N S _ C H E C K >---------------------------------------------------- check that certain option parameters have their associated identifier parameters with values <ID_list_coins_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value <ID_support_t> is a sequence table of tables created in citation0() where each subtable has four elements: [1] is the support parameter's assigned value; empty string if not set [2] is a text string same as key in cfg.id_handlers [3] is cfg.error_conditions key used to create error message [4] is original ID support parameter name used to create error message returns nothing; on error emits an appropriate error message ]] local function options_check (ID_list_coins_t, ID_support_t) for _, v in ipairs (ID_support_t) do if is_set (v[1]) and not ID_list_coins_t[v[2]] then -- when support parameter has a value but matching identifier parameter is missing or empty set_message (v[3], (v[4])); -- emit the appropriate error message end end end --[[--------------------------< I D E N T I F I E R _ L I S T S _ G E T >-------------------------------------- Creates two identifier lists: a k/v table of identifiers and their values to be used locally and for use in the COinS metadata, and a sequence table of the rendered identifier strings that will be included in the rendered citation. ]] local function identifier_lists_get (args_t, options_t, ID_support_t) local ID_list_coins_t = extract_ids (args_t); -- get a table of identifiers and their values for use locally and for use in COinS options_check (ID_list_coins_t, ID_support_t); -- ID support parameters must have matching identifier parameters local ID_access_levels_t = extract_id_access_levels (args_t, ID_list_coins_t); -- get a table of identifier access levels local ID_list_t = build_id_list (ID_list_coins_t, options_t, ID_access_levels_t); -- get a sequence table of rendered identifier strings return ID_list_t, ID_list_coins_t; -- return the tables end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) cfg = cfg_table_ptr; has_accept_as_written = utilities_page_ptr.has_accept_as_written; -- import functions from select Module:Citation/CS1/Utilities module is_set = utilities_page_ptr.is_set; in_array = utilities_page_ptr.in_array; set_message = utilities_page_ptr.set_message; select_one = utilities_page_ptr.select_one; substitute = utilities_page_ptr.substitute; make_wikilink = utilities_page_ptr.make_wikilink; z = utilities_page_ptr.z; -- table of tables in Module:Citation/CS1/Utilities end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { auto_link_urls = auto_link_urls, -- table of identifier URLs to be used when auto-linking |title= identifier_lists_get = identifier_lists_get, -- experiment to replace individual calls to build_id_list(), extract_ids, extract_id_access_levels is_embargoed = is_embargoed; set_selected_modules = set_selected_modules; } 3cd8b5ef8d199885cc0c92aabeb5bc338fa6f42c Module:Citation/CS1/COinS 828 895 1981 1980 2023-10-01T10:44:08Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/COinS]] Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local has_accept_as_written, is_set, in_array, remove_wiki_link, strip_apostrophe_markup; -- functions in Module:Citation/CS1/Utilities local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration --[[--------------------------< M A K E _ C O I N S _ T I T L E >---------------------------------------------- Makes a title for COinS from Title and / or ScriptTitle (or any other name-script pairs) Apostrophe markup (bold, italics) is stripped from each value so that the COinS metadata isn't corrupted with strings of %27%27... ]] local function make_coins_title (title, script) title = has_accept_as_written (title); if is_set (title) then title = strip_apostrophe_markup (title); -- strip any apostrophe markup else title = ''; -- if not set, make sure title is an empty string end if is_set (script) then script = script:gsub ('^%l%l%s*:%s*', ''); -- remove language prefix if present (script value may now be empty string) script = strip_apostrophe_markup (script); -- strip any apostrophe markup else script = ''; -- if not set, make sure script is an empty string end if is_set (title) and is_set (script) then script = ' ' .. script; -- add a space before we concatenate end return title .. script; -- return the concatenation end --[[--------------------------< E S C A P E _ L U A _ M A G I C _ C H A R S >---------------------------------- Returns a string where all of Lua's magic characters have been escaped. This is important because functions like string.gsub() treat their pattern and replace strings as patterns, not literal strings. ]] local function escape_lua_magic_chars (argument) argument = argument:gsub("%%", "%%%%"); -- replace % with %% argument = argument:gsub("([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1"); -- replace all other Lua magic pattern characters return argument; end --[[--------------------------< G E T _ C O I N S _ P A G E S >------------------------------------------------ Extract page numbers from external wikilinks in any of the |page=, |pages=, or |at= parameters for use in COinS. ]] local function get_coins_pages (pages) local pattern; if not is_set (pages) then return pages; end -- if no page numbers then we're done while true do pattern = pages:match("%[(%w*:?//[^ ]+%s+)[%w%d].*%]"); -- pattern is the opening bracket, the URL and following space(s): "[url " if nil == pattern then break; end -- no more URLs pattern = escape_lua_magic_chars (pattern); -- pattern is not a literal string; escape Lua's magic pattern characters pages = pages:gsub(pattern, ""); -- remove as many instances of pattern as possible end pages = pages:gsub("[%[%]]", ""); -- remove the brackets pages = pages:gsub("–", "-" ); -- replace endashes with hyphens pages = pages:gsub("&%w+;", "-" ); -- and replace HTML entities (&ndash; etc.) with hyphens; do we need to replace numerical entities like &#32; and the like? return pages; end --[=[-------------------------< C O I N S _ R E P L A C E _ M A T H _ S T R I P M A R K E R >------------------ There are three options for math markup rendering that depend on the editor's math preference settings. These settings are at [[Special:Preferences#mw-prefsection-rendering]] and are PNG images TeX source MathML with SVG or PNG fallback All three are heavy with HTML and CSS which doesn't belong in the metadata. Without this function, the metadata saved in the raw wikitext contained the rendering determined by the settings of the last editor to save the page. This function gets the rendered form of an equation according to the editor's preference before the page is saved. It then searches the rendering for the text equivalent of the rendered equation and replaces the rendering with that so that the page is saved without extraneous HTML/CSS markup and with a reasonably readable text form of the equation. When a replacement is made, this function returns true and the value with replacement; otherwise false and the initial value. To replace multipe equations it is necessary to call this function from within a loop. ]=] local function coins_replace_math_stripmarker (value) local stripmarker = cfg.stripmarkers['math']; local rendering = value:match (stripmarker); -- is there a math stripmarker if not rendering then -- when value doesn't have a math stripmarker, abandon this test return false, value; end rendering = mw.text.unstripNoWiki (rendering); -- convert stripmarker into rendered value (or nil? ''? when math render error) if rendering:match ('alt="[^"]+"') then -- if PNG math option rendering = rendering:match ('alt="([^"]+)"'); -- extract just the math text elseif rendering:match ('$%s+.+%s+%$') then -- if TeX math option; $ is legit character that is escapes as \$ rendering = rendering:match ('$%s+(.+)%s+%$') -- extract just the math text elseif rendering:match ('<annotation[^>]+>.+</annotation>') then -- if MathML math option rendering = rendering:match ('<annotation[^>]+>(.+)</annotation>') -- extract just the math text else return false, value; -- had math stripmarker but not one of the three defined forms end return true, value:gsub (stripmarker, rendering, 1); end --[[--------------------------< C O I N S _ C L E A N U P >---------------------------------------------------- Cleanup parameter values for the metadata by removing or replacing invisible characters and certain HTML entities. 2015-12-10: there is a bug in mw.text.unstripNoWiki (). It replaces math stripmarkers with the appropriate content when it shouldn't. See https://phabricator.wikimedia.org/T121085 and Wikipedia_talk:Lua#stripmarkers_and_mw.text.unstripNoWiki.28.29 TODO: move the replacement patterns and replacement values into a table in /Configuration similar to the invisible characters table? ]] local function coins_cleanup (value) local replaced = true; -- default state to get the do loop running while replaced do -- loop until all math stripmarkers replaced replaced, value = coins_replace_math_stripmarker (value); -- replace math stripmarker with text representation of the equation end value = value:gsub (cfg.stripmarkers['math'], "MATH RENDER ERROR"); -- one or more couldn't be replaced; insert vague error message value = mw.text.unstripNoWiki (value); -- replace nowiki stripmarkers with their content value = value:gsub ('<span class="nowrap" style="padding%-left:0%.1em;">&#39;(s?)</span>', "'%1"); -- replace {{'}} or {{'s}} with simple apostrophe or apostrophe-s value = value:gsub ('&nbsp;', ' '); -- replace &nbsp; entity with plain space value = value:gsub ('\226\128\138', ' '); -- replace hair space with plain space if not mw.ustring.find (value, cfg.indic_script) then -- don't remove zero-width joiner characters from indic script value = value:gsub ('&zwj;', ''); -- remove &zwj; entities value = mw.ustring.gsub (value, '[\226\128\141\226\128\139\194\173]', ''); -- remove zero-width joiner, zero-width space, soft hyphen end value = value:gsub ('[\009\010\013 ]+', ' '); -- replace horizontal tab, line feed, carriage return with plain space return value; end --[[--------------------------< C O I N S >-------------------------------------------------------------------- COinS metadata (see <http://ocoins.info/>) allows automated tools to parse the citation information. ]] local function COinS(data, class) if 'table' ~= type(data) or nil == next(data) then return ''; end for k, v in pairs (data) do -- spin through all of the metadata parameter values if 'ID_list' ~= k and 'Authors' ~= k then -- except the ID_list and Author tables (author nowiki stripmarker done when Author table processed) data[k] = coins_cleanup (v); end end local ctx_ver = "Z39.88-2004"; -- treat table strictly as an array with only set values. local OCinSoutput = setmetatable( {}, { __newindex = function(self, key, value) if is_set(value) then rawset( self, #self+1, table.concat{ key, '=', mw.uri.encode( remove_wiki_link( value ) ) } ); end end }); if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn', 'journal', 'news', 'magazine'}) or (in_array (class, {'conference', 'interview', 'map', 'press release', 'web'}) and is_set(data.Periodical)) or ('citation' == class and is_set(data.Periodical) and not is_set (data.Encyclopedia)) then OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:journal"; -- journal metadata identifier if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) then -- set genre according to the type of citation template we are rendering OCinSoutput["rft.genre"] = "preprint"; -- cite arxiv, cite biorxiv, cite citeseerx, cite medrxiv, cite ssrn elseif 'conference' == class then OCinSoutput["rft.genre"] = "conference"; -- cite conference (when Periodical set) elseif 'web' == class then OCinSoutput["rft.genre"] = "unknown"; -- cite web (when Periodical set) else OCinSoutput["rft.genre"] = "article"; -- journal and other 'periodical' articles end OCinSoutput["rft.jtitle"] = data.Periodical; -- journal only OCinSoutput["rft.atitle"] = data.Title; -- 'periodical' article titles -- these used only for periodicals OCinSoutput["rft.ssn"] = data.Season; -- keywords: winter, spring, summer, fall OCinSoutput["rft.quarter"] = data.Quarter; -- single digits 1->first quarter, etc. OCinSoutput["rft.chron"] = data.Chron; -- free-form date components OCinSoutput["rft.volume"] = data.Volume; -- does not apply to books OCinSoutput["rft.issue"] = data.Issue; OCinSoutput['rft.artnum'] = data.ArticleNumber; -- {{cite journal}} only OCinSoutput["rft.pages"] = data.Pages; -- also used in book metadata elseif 'thesis' ~= class then -- all others except cite thesis are treated as 'book' metadata; genre distinguishes OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:book"; -- book metadata identifier if 'report' == class or 'techreport' == class then -- cite report and cite techreport OCinSoutput["rft.genre"] = "report"; elseif 'conference' == class then -- cite conference when Periodical not set OCinSoutput["rft.genre"] = "conference"; OCinSoutput["rft.atitle"] = data.Chapter; -- conference paper as chapter in proceedings (book) elseif in_array (class, {'book', 'citation', 'encyclopaedia', 'interview', 'map'}) then if is_set (data.Chapter) then OCinSoutput["rft.genre"] = "bookitem"; OCinSoutput["rft.atitle"] = data.Chapter; -- book chapter, encyclopedia article, interview in a book, or map title else if 'map' == class or 'interview' == class then OCinSoutput["rft.genre"] = 'unknown'; -- standalone map or interview else OCinSoutput["rft.genre"] = 'book'; -- book and encyclopedia end end else -- {'audio-visual', 'AV-media-notes', 'DVD-notes', 'episode', 'interview', 'mailinglist', 'map', 'newsgroup', 'podcast', 'press release', 'serial', 'sign', 'speech', 'web'} OCinSoutput["rft.genre"] = "unknown"; end OCinSoutput["rft.btitle"] = data.Title; -- book only OCinSoutput["rft.place"] = data.PublicationPlace; -- book only OCinSoutput["rft.series"] = data.Series; -- book only OCinSoutput["rft.pages"] = data.Pages; -- book, journal OCinSoutput["rft.edition"] = data.Edition; -- book only OCinSoutput["rft.pub"] = data.PublisherName; -- book and dissertation else -- cite thesis OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:dissertation"; -- dissertation metadata identifier OCinSoutput["rft.title"] = data.Title; -- dissertation (also patent but that is not yet supported) OCinSoutput["rft.degree"] = data.Degree; -- dissertation only OCinSoutput['rft.inst'] = data.PublisherName; -- book and dissertation end -- NB. Not currently supported are "info:ofi/fmt:kev:mtx:patent", "info:ofi/fmt:kev:mtx:dc", "info:ofi/fmt:kev:mtx:sch_svc", "info:ofi/fmt:kev:mtx:ctx" -- and now common parameters (as much as possible) OCinSoutput["rft.date"] = data.Date; -- book, journal, dissertation for k, v in pairs( data.ID_list ) do -- what to do about these? For now assume that they are common to all? if k == 'ISBN' then v = v:gsub( "[^-0-9X]", "" ); end local id = cfg.id_handlers[k].COinS; if string.sub( id or "", 1, 4 ) == 'info' then -- for ids that are in the info:registry OCinSoutput["rft_id"] = table.concat{ id, "/", v }; elseif string.sub (id or "", 1, 3 ) == 'rft' then -- for isbn, issn, eissn, etc. that have defined COinS keywords OCinSoutput[ id ] = v; elseif 'url' == id then -- for urls that are assembled in ~/Identifiers; |asin= and |ol= OCinSoutput["rft_id"] = table.concat ({data.ID_list[k], "#id-name=", cfg.id_handlers[k].label}); elseif id then -- when cfg.id_handlers[k].COinS is not nil so urls created here OCinSoutput["rft_id"] = table.concat{ cfg.id_handlers[k].prefix, v, cfg.id_handlers[k].suffix or '', "#id-name=", cfg.id_handlers[k].label }; -- others; provide a URL and indicate identifier name as #fragment (human-readable, but transparent to browsers) end end local last, first; for k, v in ipairs( data.Authors ) do last, first = coins_cleanup (v.last), coins_cleanup (v.first or ''); -- replace any nowiki stripmarkers, non-printing or invisible characters if k == 1 then -- for the first author name only if is_set(last) and is_set(first) then -- set these COinS values if |first= and |last= specify the first author name OCinSoutput["rft.aulast"] = last; -- book, journal, dissertation OCinSoutput["rft.aufirst"] = first; -- book, journal, dissertation elseif is_set(last) then OCinSoutput["rft.au"] = last; -- book, journal, dissertation -- otherwise use this form for the first name end else -- for all other authors if is_set(last) and is_set(first) then OCinSoutput["rft.au"] = table.concat{ last, ", ", first }; -- book, journal, dissertation elseif is_set(last) then OCinSoutput["rft.au"] = last; -- book, journal, dissertation end -- TODO: At present we do not report "et al.". Add anything special if this condition applies? end end OCinSoutput.rft_id = data.URL; OCinSoutput.rfr_id = table.concat{ "info:sid/", mw.site.server:match( "[^/]*$" ), ":", data.RawPage }; -- TODO: Add optional extra info: -- rfr_dat=#REVISION<version> (referrer private data) -- ctx_id=<data.RawPage>#<ref> (identifier for the context object) -- ctx_tim=<ts> (timestamp in format yyyy-mm-ddThh:mm:ssTZD or yyyy-mm-dd) -- ctx_enc=info:ofi/enc:UTF-8 (character encoding) OCinSoutput = setmetatable( OCinSoutput, nil ); -- sort with version string always first, and combine. -- table.sort( OCinSoutput ); table.insert( OCinSoutput, 1, "ctx_ver=" .. ctx_ver ); -- such as "Z39.88-2004" return table.concat(OCinSoutput, "&"); end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) cfg = cfg_table_ptr; has_accept_as_written = utilities_page_ptr.has_accept_as_written; -- import functions from selected Module:Citation/CS1/Utilities module is_set = utilities_page_ptr.is_set; in_array = utilities_page_ptr.in_array; remove_wiki_link = utilities_page_ptr.remove_wiki_link; strip_apostrophe_markup = utilities_page_ptr.strip_apostrophe_markup; end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { make_coins_title = make_coins_title, get_coins_pages = get_coins_pages, COinS = COinS, set_selected_modules = set_selected_modules, } 4fe549c532af319223cc4d9da2c6d33a786131c1 Module:Footnotes 828 896 1983 1982 2023-10-01T10:44:13Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Footnotes]] Scribunto text/plain require('strict'); local getArgs = require ('Module:Arguments').getArgs; --[[--------------------------< A R G S _ D E F A U L T >------------------------------------------------------ a table to specify initial values. ]] local args_default = { bracket_left = '', bracket_right = '', bracket_year_left = '', bracket_year_right = '', postscript = '', page = '', pages = '', location = '', page_sep = ", p.&nbsp;", pages_sep = ", pp.&nbsp;", ref = '', template = 'harv', -- if template name not provided in {{#invoke:}} use this }; --[[--------------------------< T A R G E T _ C H E C K >------------------------------------------------------ look for anchor_id (CITEREF name-list and year or text from |ref=) in anchor_id_list the 'no target' error may be suppressed with |ignore-err=yes when target cannot be found because target is inside a template that wraps another template; 'multiple targets' error may not be suppressed ]] local function target_check (anchor_id, args) local namespace = mw.title.getCurrentTitle().namespace; local anchor_id_list_module = mw.loadData ('Module:Footnotes/anchor_id_list'); local anchor_id_list = anchor_id_list_module.anchor_id_list; local article_whitelist = anchor_id_list_module.article_whitelist; local template_list = anchor_id_list_module.template_list; local whitelist_module = mw.loadData ('Module:Footnotes/whitelist'); local whitelist = whitelist_module.whitelist; local special_patterns = whitelist_module.special_patterns; local DNB_special_patterns = whitelist_module.DNB_special_patterns; local DNB_template_names = whitelist_module.DNB_template_names; if 10 == namespace then return ''; -- automatic form of |no-tracking=yes; TODO: is this too broad? end local tally = anchor_id_list[anchor_id]; -- nil when anchor_id not in list; else a tally local msg; local category; if not tally then if args.ignore then return ''; -- if ignore is true then no message, no category end if article_whitelist and article_whitelist[anchor_id] then -- if an article-local whitelist and anchor ID is in it return ''; -- done end local wl_anchor_id = anchor_id; -- copy to be modified to index into the whitelist if args.year then -- for anchor IDs created by this template (not in |ref=) that have a date if args.year:match ('%d%l$') or -- use the date value to determine if we should remove the disambiguator args.year:match ('n%.d%.%l$') or args.year:match ('nd%l$') then wl_anchor_id = wl_anchor_id:gsub ('%l$', ''); -- remove the disambiguator end end local t_tbl = whitelist[wl_anchor_id]; -- get list of templates associated with this anchor ID if t_tbl then -- when anchor ID not whitelisted t_tbl is nil for _, t in ipairs (t_tbl) do -- spin through the list of templates associated with this anchor ID if template_list[t] then -- if associated template is found in the list of templates in the article return ''; -- anchor ID is whitlisted and article has matching template so no error end end end for _, pattern in ipairs (special_patterns) do -- spin through the spcial patterns and try to match if anchor_id:match (pattern) then return ''; end end for _, dnb_t in ipairs (DNB_template_names or {}) do -- getting desparate now, are there any DNB templates? DNB_template_names may be nil; empty table prevents script error if template_list[dnb_t] then -- if the article has this DNB template for _, pattern in ipairs (DNB_special_patterns) do -- spin through the DNB-specifiec wildcard patterns if anchor_id:match (pattern) then -- and attempt a match return ''; -- found a match end end end end msg = 'no target: ' .. anchor_id; -- anchor_id not found category = '[[Category:Harv and Sfn no-target errors]]'; elseif 1 < tally then msg = 'multiple targets (' .. tally .. '×): ' .. anchor_id; -- more than one anchor_id in this article category = 0 == namespace and '[[Category:Harv and Sfn multiple-target errors]]' or ''; -- only categorize in article space return '<span class="error harv-error" style="display: inline; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category; end -- category = 0 == namespace and '[[Category:Harv and Sfn template errors]]' or ''; -- only categorize in article space category = 0 == namespace and category or ''; -- only categorize in article space --use this version to show error messages -- return msg and '<span class="error harv-error" style="display: inline; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category or ''; --use this version to hide error messages return msg and '<span class="error harv-error" style="display: none; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category or ''; end --[[--------------------------< I S _ Y E A R >---------------------------------------------------------------- evaluates param to see if it is one of these forms with or without lowercase letter disambiguator: YYYY n.d. nd c. YYYY YYYY–YYYY (separator is endash) YYYY–YY (separator is endash) return true when param has a recognized form; false else ]] local patterns_date= { '^%d%d%d%d?%l?$', '^n%.d%.%l?$', '^nd%l?$', '^c%. %d%d%d%d?%l?$', '^%d%d%d%d–%d%d%d%d%l?$', '^%d%d%d%d–%d%d%l?$', } local function is_year (param, args) args.year = ''; -- used for harv error; for _, pattern in ipairs (patterns_date) do if mw.ustring.match (param, pattern) then args.year = param; -- used for harv error; return true; end end end --[[--------------------------< C O R E >---------------------------------------------------------------------- returns an anchor link (CITEREF) formed from one to four author names, year, and insource location (|p=, |pp=, loc=) ]] local function core( args ) local result; local err_msg = '' if args.P5 ~= '' then if is_year (args.P5, args) then result = table.concat ({args.P1, ' et al. ', args.bracket_year_left, args.P5, args.bracket_year_right}); else args.P5 = ''; -- when P5 not a year don't include in anchor result = table.concat ({args.P1, ' et al.'}); -- and don't render it end elseif args.P4 ~= '' then if is_year (args.P4, args) then result = table.concat ({args.P1, ', ', args.P2, ' &amp; ', args.P3, ' ', args.bracket_year_left, args.P4, args.bracket_year_right}); -- three names and a year else result = table.concat ({args.P1, ' et al.'}); -- four names end elseif args.P3 ~= '' then if is_year (args.P3, args) then result = table.concat ({args.P1, ' &amp; ', args.P2, ' ', args.bracket_year_left, args.P3, args.bracket_year_right}); -- two names and a year else result = table.concat ({args.P1, ', ', args.P2, ' ', ' &amp; ', args.P3}); -- three names end elseif args.P2 ~= '' then if is_year (args.P2, args) then result = table.concat ({args.P1, ' ', args.bracket_year_left, args.P2, args.bracket_year_right}); -- one name and year else result = table.concat ({args.P1, ' &amp; ', args.P2}); -- two names end else result = args.P1; -- one name end -- when author-date result ends with a dot (typically when the last positional parameter holds 'n.d.') -- and when no in-source location (no |p=, |pp=, or |loc=) -- and when the first or only character in args.postscript is a dot -- remove the author-date result trailing dot -- the author-date result trailing dot will be replaced later with the content of args.postscript (usually a dot) if ('.' == result:sub(-1)) and ('.' == args.postscript:sub(1)) and ('' == args.page) and ('' == args.pages) and ('' == args.location) then result = result:gsub ('%.$', ''); end if args.ref ~= 'none' then local anchor_id; if args.ref ~= '' then anchor_id = mw.uri.anchorEncode (args.ref); err_msg = target_check (anchor_id, args); result = table.concat ({'[[#', anchor_id, '|', result, ']]'}); else anchor_id = mw.uri.anchorEncode (table.concat ({'CITEREF', args.P1, args.P2, args.P3, args.P4, args.P5})); err_msg = target_check (anchor_id, args); result = table.concat ({'[[#', anchor_id, '|', result, ']]'}); end end if args.page ~= '' then result = table.concat ({result, args.page_sep, args.page}); elseif args.pages ~= ''then result = table.concat ({result, args.pages_sep, args.pages}); end if args.location ~= '' then result = table.concat ({result, ', ', args.location}); end result = table.concat ({args.bracket_left, result, args.bracket_right, args.postscript}):gsub ('%s+', ' '); -- strip redundant spaces return result .. err_msg; end --[[--------------------------< H Y P H E N _ T O _ D A S H >-------------------------------------------------- Converts a hyphen to a dash under certain conditions. The hyphen must separate like items; unlike items are returned unmodified. These forms are modified: letter - letter (A - B) digit - digit (4-5) digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5) letterdigit - letterdigit (A1-A5) (an optional separator between letter and digit is supported – a.1-a.5 or a-1-a-5) digitletter - digitletter (5a - 5d) (an optional separator between letter and digit is supported – 5.a-5.d or 5-a-5-d) any other forms are returned unmodified. str may be a comma- or semicolon-separated list This code copied from Module:Citation/CS1. The only modification is to require Module:Citation/CS1/Utilities so that it has access to the functions is_set() and has_accept_as_written() ]] local function hyphen_to_dash( str ) local utilities = require ('Module:Citation/CS1/Utilities'); -- only modification so that this function has access to is_set() and has_accept_as_written() if not utilities.is_set (str) then return str; end local accept; -- Boolean str = str:gsub ('&[nm]dash;', {['&ndash;'] = '–', ['&mdash;'] = '—'}); -- replace &mdash; and &ndash; entities with their characters; semicolon mucks up the text.split str = str:gsub ('&#45;', '-'); -- replace HTML numeric entity with hyphen character str = str:gsub ('&nbsp;', ' '); -- replace &nbsp; entity with generic keyboard space character local out = {}; local list = mw.text.split (str, '%s*[,;]%s*'); -- split str at comma or semicolon separators if there are any for _, item in ipairs (list) do -- for each item in the list item, accept = utilities.has_accept_as_written (item); -- remove accept-this-as-written markup when it wraps all of item if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit) item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter) item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2'); -- replace hyphen, remove extraneous space characters else item = mw.ustring.gsub (item, '%s*[–—]%s*', '–'); -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace end end table.insert (out, item); -- add the (possibly modified) item to the output table end local temp_str = ''; -- concatenate the output table into a comma separated string temp_str, accept = utilities.has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out if accept then temp_str = utilities.has_accept_as_written (str); -- when global markup removed, return original str; do it this way to suppress boolean second return value return temp_str; else return temp_str; -- else, return assembled temp_str end end --[[--------------------------< A R G S _ F E T C H >--------------------------------------------------------- Because all of the templates share a common set of parameters, a single common function to fetch those parameters from frame and parent frame. ]] local function args_fetch (frame, ps) local args = args_default; -- create a copy of the default table local pframe = frame:getParent(); -- point to the template's parameter table for k, v in pairs (frame.args) do -- override defaults with values provided in the #invoke: if any args[k] = v; end args.postscript = pframe.args.postscript or pframe.args.ps or ps; if 'none' == args.postscript then args.postscript = ''; end args.page = pframe.args.p or pframe.args.page or ''; args.pages = pframe.args.pp or pframe.args.pages or ''; args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or ''; args.location = pframe.args.loc or ''; args.ref = pframe.args.ref or pframe.args.Ref or ''; args.ignore = ('yes' == pframe.args['ignore-false-positive']) or ('yes' == pframe.args['ignore-err']); for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- loop through the five positional parameters and trim if set else empty string args[v] = (pframe.args[i] and mw.text.trim (pframe.args[i])) or ''; end if args.P5 and not is_year (args.P5, args) then local i = 6; -- initialize the indexer to the sixth positional parameter while pframe.args[i] do -- in case there are too many authors loop through the authors looking for a year local v = mw.text.trim (pframe.args[i]); -- trim if is_year (v, args) then -- if a year args.P5 = v; -- overwrite whatever was in args.P5 with year break; -- and abandon the search end i = i + 1; -- bump the indexer end end return args; end --[[--------------------------< H A R V A R D _ C I T A T I O N >---------------------------------------------- common entry point for: {{harvard citation}} aka {{harv}} {{Harvard citation no brackets}} aka {{harvnb}} {{harvcol}} {{harvcolnb}} {{harvcoltxt}} {{Harvard citation text}} aka {{harvtxt}} {{Harvp}} Distinguishing features (brackets and page separators) are specified in this module's {{#invoke}} in the respective templates. ]] local function harvard_citation (frame) local args = args_fetch (frame, ''); -- get the template and invoke parameters; default postscript is empty string return core (args); end --[[--------------------------< S T R I P _ U R L >------------------------------------------------------------ used by sfn() and sfnm(). This function fixes an issue with reference tooltip gadget where the tooltip is not displayed when an insource locator (|p=, |pp=, |loc=) has an external wikilink that contains a # character strip uri-reserved characters from urls in |p=, |pp-, and |loc= parameters The researved characters are: !#$&'()*+,/:;=?@[] ]] local function strip_url (pages) local escaped_uri; if not pages or ('' == pages) then return pages; end for uri in pages:gmatch ('%[(%a[%w%+%.%-]*://%S+)') do -- for each external link get the uri escaped_uri = uri:gsub ("([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ); -- save a copy with lua pattern characters escaped uri = uri:gsub ("[!#%$&'%(%)%*%+,/:;=%?@%[%]%.%%]", ''); -- remove reserved characters and '%' because '%20' (space character) is a lua 'invalid capture index' pages = pages:gsub (escaped_uri, uri, 1); -- replace original uri with the stripped version end return pages; end --[[--------------------------< S F N >------------------------------------------------------------------------ entry point for {{sfn}} and {{sfnp}} ]] local function sfn (frame) local args = args_fetch (frame, '.'); -- get the template and invoke parameters; default postscript is a dot local result = core (args); -- go make a CITEREF anchor -- put it all together and then strip redundant spaces local name = table.concat ({'FOOTNOTE', args.P1, args.P2, args.P3, args.P4, args.P5, strip_url (args.page), strip_url (args.pages), strip_url (args.location)}):gsub ('%s+', ' '); return frame:extensionTag ({name='ref', args={name=name}, content=result}); end --[[--------------------------< S F N M >---------------------------------------------------------------------- common entry point for {{sfnm}} and {{sfnmp}} Distinguishing features (brackets) are specified in this module's {{#invoke}} in the respective templates. ]] local function sfnm (frame) local args = args_default; -- create a copy of the default table local pframe = frame:getParent(); -- point to the template's parameter table local n = 1; -- index of source; this is the 'n' in na1, ny, etc local first_pnum = 1; -- first of a pair of positional parameters local second_pnum = 2; -- second of a pair of positional parameters local last_ps = 0; -- index of the last source with |nps= set local last_index = 0; -- index of the last source; these used to determine which of |ps= or |nps= will terminate the whole rendering local out = {}; -- table to hold rendered sources local footnote = {'FOOTNOTE'}; -- all author, date, insource location stuff becomes part of the reference's footnote id; added as we go for k, v in pairs (frame.args) do -- override defaults with values provided in the #invoke: if any args[k] = v; end while true do if not pframe.args[table.concat ({n, 'a1'})] and not pframe.args[first_pnum] then break; -- no na1 or matching positional parameter so done end if pframe.args[table.concat ({n, 'a1'})] then -- does this source use named parameters? for _, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- initialize for this source args[v] = ''; end for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- extract author and year parameters for this source args[v] = pframe.args[table.concat ({n, 'a', i})] or ''; -- attempt to assign author name if '' == args[v] then -- when there wasn't an author name args[v] = pframe.args[table.concat ({n, 'y'})] or ''; -- attempt to assign year break; -- done with author/date for this source end end else -- this source uses positional parameters args.P1 = mw.text.trim (pframe.args[first_pnum]); -- yes, only one author supported args.P2 = (pframe.args[second_pnum] and mw.text.trim (pframe.args[second_pnum])) or ''; -- when positional author, year must also be positional for _, v in ipairs ({'P3', 'P4', 'P5'}) do -- blank the rest of these for this source args[v] = ''; end first_pnum = first_pnum + 2; -- source must use positional author and positional year second_pnum = first_pnum + 1; -- bump these for possible next positional source end args.postscript = pframe.args[table.concat ({n, 'ps'})] or ''; if 'none' == args.postscript then -- this for compatibility with other footnote templates; does nothing args.postscript = ''; end args.ref = pframe.args[table.concat ({n, 'ref'})] or ''; -- alternate reference for this source args.page = pframe.args[table.concat ({n, 'p'})] or ''; -- insource locations for this source args.pages = pframe.args[table.concat ({n, 'pp'})] or ''; args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or ''; args.location = pframe.args[table.concat ({n, 'loc'})] or ''; args.ignore = ('yes' == pframe.args[table.concat ({n, 'ignore-false-positive'})]) or ('yes' == pframe.args[table.concat ({n, 'ignore-err'})]); table.insert (out, core (args)); -- save the rendering of this source for k, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- create the FOOTNOTE id if '' ~= args[v] then table.insert (footnote, args[v]); end end for k, v in ipairs ({'page', 'pages', 'location'}) do -- these done separately so that we can strip uri-reserved characters from extlinked page numbers if '' ~= args[v] then table.insert (footnote, strip_url (args[v])) end end last_index = n; -- flags used to select terminal postscript from nps or from end_ps if '' ~= args.postscript then last_ps = n; end n = n+1; -- bump for the next one end local name = table.concat (footnote):gsub ('%s+', ' '); -- put the footnote together and strip redundant space args.end_ps = pframe.args.postscript or pframe.args.ps or '.'; -- this is the postscript for the whole not for the individual sources if 'none' == args.end_ps then -- not an original sfnm parameter value; added for compatibility with other footnote templates args.end_ps = ''; end local result = table.concat ({table.concat (out, '; '), (last_index == last_ps) and '' or args.end_ps}); return frame:extensionTag ({name='ref', args={name=name}, content=result}); end --[[--------------------------< S F N R E F >------------------------------------------------------------------ implements {{sfnref}} ]] local function sfnref (frame) local args = getArgs (frame); local out = {}; for i=1, 5 do -- get the first five args if there are five args if args[i] then out[i] = args[i]; else break; -- less than 5 args break out end end if 5 == #out then -- when we have seen five args there may bemore local i = 6; -- initialize the indexer to the sixth positional parameter while args[i] do -- in case there are too many authors loop through the authors looking for a year if is_year (args[i], args) then -- if a year out[5] = args[i]; -- overwrite whatever was in args[5] with year break; -- and abandon the search end i = i + 1; -- bump the indexer end end return mw.uri.anchorEncode ('CITEREF' .. table.concat (out)); end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { harvard_citation = harvard_citation, sfn = sfn, sfnm = sfnm, sfnref = sfnref, }; 6e6f14a1fb0053e5aed88c564fc13d570e2d5a03 Module:Footnotes/anchor id list 828 897 1985 1984 2023-10-01T10:44:13Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Footnotes/anchor_id_list]] Scribunto text/plain require('strict'); local data = mw.loadData ('Module:Footnotes/anchor id list/data'); local whitelist = mw.loadData ('Module:Footnotes/whitelist'); local Lang_obj = mw.language.getContentLanguage(); -- used by template_list_add() to uppercase first letter of template name TODO: better way to do that? local redirects_date = { ['date'] = true, ['datetomos'] = true, ['formatdate'] = true, ['isotodmymdy'] = true, ['isotomos'] = true, } local redirects_patent = { -- special case cs1-like templates because uses different parameters for name and date in anchor ID ['Cite patent'] = true, ['Citeref patent'] = true, ['Ref patent'] = true, } local redirects_sfnref = { ['sfnref'] = true, ['harvid'] = true, } local aliases_author = { -- these use pseudo-patterns in the same way as cs1|2; '#' represents 1 or more enumerator digits 'last#', 'author#', 'surname#', 'author-last#', 'author#-last', 'subject#', 'host#', } local aliases_contributor = { 'contributor#', 'contributor-last#', 'contributor#-last', 'contributor-surname#', 'contributor#-surname', } local aliases_editor = { 'editor#', 'editor-last#', 'editor#-last', 'editor-surname#', 'editor#-surname', } local aliases_harvc_author = { 'last#', 'author#', } local aliases_inventor = { -- cite patent 'inventor#', 'inventor-last#', 'inventor#-last', 'inventor-surname#', 'inventor#-surname', 'invent#', 'invent-#', } local alias_patterns_date = { -- normal lua patterns for most cs1|2-like templates '|%s*year%s*=%s*', '|%s*date%s*=%s*', '|%s*publication%-?date%s*=%s*', '|%s*air%-?date%s*=%s*', } local alias_patterns_harvc_date = { -- normal lua patterns for harvc template '|%s*anchor%-year%s*=%s*', '|%s*year%s*=%s*', } local alias_patterns_patent_date = { -- normal lua patterns for cite patent templates '|%s*issue%-date%s*=%s*', '|%s*gdate%s*=%s*', '|%s*publication%-date%s*=%s*', '|%s*pubdate%s*=%s*', } local patterns_date = { -- normal lua patterns -- '(%d%d%d%d–%d%d%d%d%l?)$', -- YYYY–YYYY four-digit year range at end (Season YYYY–YYYY); with or without dab '(%d%d%d%d)%D+(%d%d%d%d%l?)$', -- any range with four-digit years; with or without dab; not two captures '^(%d%d%d%d–%d%d%l?)$', -- YYYY–YY two-digit year range; with or without dab '^(c%. %d%d%d%d?%l?)$', -- three- or four-digit circa year; with or without dab '(%d%d%d%d?%l?)$', -- three- or four-digit year at end of date (dmy or mdy); with or without dab '^(%d%d%d%d?%l?)', -- three- or four-digit year at beginning of date (ymd or YYYY); with or without dab '^(n%.d%.%l?)$', -- 'no date' with dots; with or without dab '^(nd%l?)$', -- 'no date' without dots; with or without dab } local patterns_tags = { '<nowiki>.-</nowiki>', '<!%-%-.-%-%->', '<pre>.-</pre>', '<syntaxhighlight.->.-</syntaxhighlight>', '<source.->.-</source>', -- deprecated alias of syntaxhighlight tag } local template_skip = { -- templates to be skipped for whatever reason; mostly because they resemble cs1-like templates ['Citation-attribution'] = true, } local Article_content; local anchor_id_list = {}; -- exported tables local template_list = {}; local article_whitelist = {}; --[[--------------------------< A R T I C L E _ C O N T E N T _ G E T >---------------------------------------- get article content, remove certain html-like tags and their content so that this code doesn't include any citation templates inside the tags as valid tagets; they are not. ]] local function article_content_get () if not Article_content then Article_content = mw.title.getCurrentTitle():getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625 for _, tag in ipairs (patterns_tags) do Article_content = Article_content:gsub (tag, ''); -- remove certain html-like tags and their content end end end --[[--------------------------< S F N R E F _ G E T >---------------------------------------------------------- make an anchor id from the contents of {{sfnref}} or {{harvid}}. this function assumes that {{sfnref}} and {{harvid}} are correctly formed. ]] local function sfnref_get (template) template = template:gsub ('{{%s*(.-)%s*}}', '%1'); -- strip bounding template markup and trim local parts = mw.text.split (template, '%s*|%s*'); -- split at the pipe and remove extraneous space characters local anchor_id = {}; if redirects_sfnref[parts[1]:lower()] then anchor_id[1] = 'CITEREF'; else return nil; -- not an sfnref or harvid template end local i = 2; -- indexer into parts{} table local j = 2; -- indexer into anchor_id{} table which already has 'CITEREF' at [1] while parts[i] and 7 > j do -- loop through what should be just positional parameters for names and year (2-6 four names and a date) if not parts[i]:find ('=') then -- look for equal sign (named paraneter in a template that doesn't support named parameters) anchor_id[j] = parts[i]; -- positional parameters are saved j = j+1; -- bump the anchor_id{} indexer end i = i+ 1; -- bump the parts{} indexer end return table.concat (anchor_id, ''); end --[[--------------------------< D A T E _ G E T >-------------------------------------------------------------- extract year from one of |year=, |date=, |publicationdate=, or |publication-date in that order. Does not error check (that is left to the cs1|2 templates to do) also gets date from |<date alias>={{date|...}} ]] local function date_get (template, aliases) local rvalue; for _, pattern in ipairs (aliases) do -- spin through the date alias patterns rvalue = tostring(template):match (pattern); -- is this |<date alias>= used (tostring() because something makes match() think template is a table) if rvalue then rvalue = tostring(template):match (pattern .. '(%b{})'); -- is rvalue a template? if rvalue then rvalue = rvalue:gsub ('{{%s*(.-)%s*}}', '%1'); -- strip bounding template markup and trim local parts = mw.text.split (rvalue, '%s*|%s*'); -- split at the pipe and remove extraneous space characters if redirects_date[parts[1]:lower()] then -- if parts[1] names {{date}} or redirect rvalue = parts[2]; -- assume that date template is properly formed, first positional parameter is the date else return ''; -- |date= holds some other template than {{date}} or redirect end else rvalue = template:match (pattern .. '([^|}]+)'); if rvalue then -- if rvalue is something rvalue = mw.text.trim (rvalue); -- trim it end if not rvalue or '' == rvalue then -- if rvale was nothing or trimed to nothing rvalue = nil; -- ensure that it is unset so we can try the next parameter in the list end end if rvalue then for _, pattern in ipairs (patterns_date) do -- spin through the recognized date formats -- date = rvalue:match (pattern); -- attempt to extract year portion according to the pattern local date, date2 = rvalue:match (pattern); -- attempt to extract year portion according to the pattern; <date2> gets second year in any range if date then if date2 then -- when a second year date = table.concat ({date, '–', date2}); -- build a date range end return date; -- matched so return; end end break; -- found a date but it was malformed so abandon end end end return ''; -- no date param or date param doesn't hold a recognized date; empty string for concatenation end --[[--------------------------< V N A M E S _ G E T >---------------------------------------------------------- extract names from |vauthors= or |veditors=; there is no |vcontributors= parameter. splits the v parameter value at the comma; correctly handles accept-as-witten markup when used to wrap a comma- separated names (corporate) ]] local function vnames_get (params, vparam) local vnames = {}; -- first four author or editor names go here local split = {}; -- temp table to assist in decoding accept-as-witten-markup if params[vparam] then -- test for |vauthors= or |veditor= split = mw.text.split (params[vparam], '%s*,%s*'); -- this will separate portions of ((Black, Brown, White, an Co.)) local i = 1; -- an indexer while split[i] do if split[i]:match ('^%(%(.*[^%)][^%)]$') then -- first segment of comma-separated accept-as-witten; this segment has the opening doubled parens local name = split[i]; i=i+1; -- bump indexer to next segment while split[i] do name = name .. ', ' .. split[i]; -- concatenate with previous segments if split[i]:match ('^.*%)%)$') then -- if this table member has the closing doubled parens break; -- and done reassembling so end i=i+1; -- bump indexer end table.insert (vnames, name); -- and add accept-as-witten name to the vnames table else table.insert (vnames, split[i]); -- and add name to the vnames table end i=i+1; -- bump indexer if 5 == i then break; end -- limit to four names end for i, vname in ipairs (vnames) do if not vname:match ('%(%(.-%)%)') then -- without accept-this-value-as-written markup vnames[i] = vname:gsub ('(.-)%s+%u+$', '%1'); -- extract and save surname(s) end end for i, vname in ipairs (vnames) do -- repeat, this time for accept-this-value-as-written markup vnames[i] = vname:gsub ('%(%((.-)%)%)', '%1'); -- remove markup if present and save the whole name end end return 0 ~= #vnames and table.concat (vnames) or nil -- return a concatenation of the vnames; nil else end --[[--------------------------< N A M E S _ G E T >------------------------------------------------------------ cs1|2 makes anchor id from contributor, author, or editor name-lists in that order get the names from the cs1|2 template; if there are no contributor names, try author names, then try editor names. returns concatenated names in enumeration order when successful; nil else empty name (nameholding parameter n is present without value) and missing name (nameholding parameter n is not present) are included as empty string with all other names ]] local function names_get (params, aliases_list) local names = {}; -- first four author or editor names go here local enum_alias; -- alias with '#' replaced with a digit for enum=1, 4 do -- four names only for i, alias in ipairs (aliases_list) do if not names[enum] then -- hanven't found a previous alias with this [enum]? see if we can find this alias with this enum enum_alias = alias:gsub ('#', enum); -- replace '#' to make 'lastn' if 1 == enum then -- because |last= and last1= are exact aliases if params[enum_alias] then -- test |last1= first names[enum] = params[enum_alias]; -- found so save the value assigned to |last1= break; -- next enum else enum_alias = alias:gsub ('#', ''); -- replace '#' to make 'last' if params[enum_alias] then names[enum] = params[enum_alias]; -- found so save the value assigned to |last= break; -- next enum end end else -- here for enum 2, 3, 4 if params[enum_alias] then names[enum] = params[enum_alias]; -- found so save the value assigned to |lastn= break; -- next enum end end end end end for enum=1, 4 do -- spin through the names table and local name = names[enum]; if not name then -- when nameholding parameter n is not present (nil) name = ''; -- convert to empty string for concatenation end name = name:gsub('%(%((.-)%)%)', '%1'); -- remove accept-as-written markup if present names[enum] = name; -- save the modified name end local name_str = table.concat (names); -- concatenate the names return '' ~= name_str and name_str or nil; -- return the concatenation if not empty string; nil else end --[[--------------------------< T E M P L A T E _ S T R I P >-------------------------------------------------- removes the citation or havrc template's {{ and }} markup then removes, in whole, any templates found inside the citation or harvc template. Templates are not allowed in parameters that are made part of COinS metadata; yet, they will appear. cs1|2 does not see the template markup but instead sees the result of the template as html. cs1|2 strips the html which leaves the displayed value for the anchor id. We can't do that here so, because templates aren't allowed in parameters, we simply discard any templates found in the cs1|2 template. this may leave a |lastn= parameter empty which will be treated as if it were really empty as cs1|2 do (three authors, |last2= empty -> CITEREFLast1Last3YYYY (the harv and sfn render: 'Last1, & Last3 YYYY' with CITEREFLast1Last3YYYY). ]] local function template_strip (template) template = template:gsub ('^{{%s*', ''):gsub ('%s*}}$', '', 1); -- remove outer {{ and }} (cs1|2 template delimiters with trailing/leading whitespace) template = template:gsub ('%b{}', ''); -- remove any templates from the cs1|2 template return template; end --[[--------------------------< E S C A P E _ L U A _ M A G I C _ C H A R S >---------------------------------- Returns a string where all of lua's magic characters have been escaped. This is important because functions like string.gsub() treat their pattern and replace strings as patterns, not literal strings. ]] local function escape_lua_magic_chars (argument) argument = argument:gsub("%%", "%%%%"); -- replace % with %% argument = argument:gsub("([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1"); -- replace all other lua magic pattern characters return argument; end --[=[-------------------------< W I K I L I N K _ S T R I P >-------------------------------------------------- Wikilink markup does not belong in an anchor id and can / does confuse the code that parses apart citation and harvc templates so here we remove any wiki markup: [[link|label]] -> label [[link]] -> link ]=] local function wikilink_strip (template) for wikilink in template:gmatch ('%[%b[]%]') do -- get a wikilink template = template:gsub ('%[%b[]%]', '__57r1P__', 1); -- install a marker if wikilink:match ('%[%[.-|(.-)%]%]') then wikilink = wikilink:match ('%[%[.-|(.-)%]%]'); -- extract label from complex [[link|label]] wikilink else wikilink = wikilink:match ('%[%[(.-)%]%]'); -- extract link from simple [[link]] wikilinks end wikilink = escape_lua_magic_chars (wikilink); -- in case there are lua magic characters in wikilink template = template:gsub ('__57r1P__', wikilink, 1); -- replace the marker with the appropriate text end return template; end --[[--------------------------< T E M P L A T E _ N A M E _ G E T >-------------------------------------------- return the citation or harvc template's name; convert to lower case and trim leading and trailing whitespace; when the template is a sandbox the subpage portion of the template name is omitted from the returned template name {{Cite book/new |...}} returns cite book ]] local function template_name_get (template) local template_name = template:match ('^{{%s*([^/|}]+)'); -- get template name; ignore subpages ~/new, ~/sandbox; parser functions if not template_name or template_name:match ('^#') then -- parser functions, magic words don't count as templates return nil; -- could not get template name from (possibly corrupt) template; extraneous opening { mid template can cause this; end; template_name = template_name:gsub ('%s*$', ''); -- trim trailing whitespace; leading whitespace already removed return Lang_obj:ucfirst (template_name); -- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this? end --[[--------------------------< T E M P L A T E _ P A R A M S _ G E T >---------------------------------------- parse apart a template's parameters and store in the params table where key is the parameter's name and value is the parameter's value; empty parameters are not saved ]] local function template_params_get (template, params_t) template = wikilink_strip (template); -- because piped wikilinks confuse code that builds params_t{} and because wikilinks not allowed in an anchor id -- strip templates after getting |ref= value because |ref={{sfnref}} and |ref={{harvid}} are allowed template = template_strip (template); -- because template markup can confuse code that builds params_t{} and because templates in name parameters are not allowed local temp_t = mw.text.split (template, '%s*|%s*'); --split on the pipe for _, param in ipairs (temp_t) do if param:find ('=', 1, true) then -- a named parameter? local k, v = param:match ('%s*([^=]-)%s*=%s*([^|}]+)'); if v then -- there must be a value if '' ~= v and not v:match ('^%s$') then -- skip when value is empty string or only whitespace params_t[k] = mw.text.trim (v); -- add trimmed value else end end end end end --[[--------------------------< C I T E R E F _ M A K E _ H A R V C >------------------------------------------ makes anchor_id from {{harvc}} or redirects ]] local function anchor_id_make_harvc (template) local date = date_get (template, alias_patterns_harvc_date); -- get date; done here because might be in {{date}}; return date if valid; empty string else local anchor_id; local params = {}; -- table of harvc parameters local id; -- custom anchor id for this {{harvc}} template id = template:match ('|%s*id%s*=%s*(%b{})'); -- in case |id={{sfnref}}; done here because templates will be stripped template_params_get (template, params); -- build a table of template parameters and their values; this strips wikilinks and templates if id then -- when set is {{sfnref}} or {{harvid}} template return sfnref_get (id); -- returns content of {{sfnref}} or {{harvid}}; nil else end if params.id then -- custom anchor for this {{harvc}} template (text) return params.id; -- |id= value as written end anchor_id = names_get (params, aliases_harvc_author); -- get the harvc contributor names if anchor_id then -- if names were gotten return 'CITEREF' .. anchor_id .. date; end return nil; -- no names; no anchor_id end --[[--------------------------< A N C H O R _ I D _ M A K E _ W R A P P E R >---------------------------------- for wrapper templates inspect externally visible |ref= to decide what to do: |ref= - empty or missing: get names and date from whitelist defaults; override defaults from externally visible template parameters |ref=harv - same as empty or missing |ref={{SfnRef|name|name|name|name|year}} - assemble an anchor id from {{sfnref}} positional parameters |ref={{Harvid|name|name|name|name|year}} - assemble an anchor id from {{harvid}} positional parameters |ref=none - skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'? |ref=<text> - save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter ]] local function anchor_id_make_wrapper (template) local ref; -- content of |ref= local template_name; -- name of the template local anchor_id; -- the assembled anchor id from this template local date; local name_default; local date_default; local vol; local params = {}; -- table of template parameters template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox if not template_name or template_skip[template_name] then return nil; -- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this) end date = date_get (template, alias_patterns_date); -- get date; done here because might be in {{date}} -- if '' == date then -- date = whitelist.wrapper_templates[template_name][2] or ''; -- no externally visible date so get default date -- end ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the wrapper template if not ref then if template:match ('|%s*ref%s*=([^|}]+)') then -- |ref={{template}} not found; if there is a |ref= param with an assigned value ref = template:match ('|%s*ref%s*=([^|}]+)'); -- get the value; whitespace is a 'value' if ref then -- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace) ref = mw.text.trim (ref); -- something, could be just whitespace, so trim leading / trailing whitespace if '' == ref then -- trimming a string of whitespace makes an empty string ref = nil; -- make empty ref same as missing ref end end end end template_params_get (template, params); -- build a table of template parameters and their values if whitelist.wrapper_templates[template_name][1] then -- is this wrapper a simple-default wrapper? name_default = whitelist.wrapper_templates[template_name][1]; -- get the default names date_default = whitelist.wrapper_templates[template_name][2]; -- get the default date else vol = params['volume'] or 'default'; if not whitelist.wrapper_templates[template_name][vol] then -- make sure this volume exists vol = 'default'; -- doesn't exist, use default volume end name_default = whitelist.wrapper_templates[template_name][vol][1]; -- get the default names date_default = whitelist.wrapper_templates[template_name][vol][2]; -- get the default date end if 'harv' == ref or not ref then -- |ref=harv specified or |ref= missing or empty anchor_id = names_get (params, aliases_contributor) or -- get contributor, author, or editor names names_get (params, aliases_author) or vnames_get (params, 'vauthors') or -- |vauthors= names_get (params, aliases_editor) or vnames_get (params, 'veditors') or -- |veditors= name_default; -- default names from whitelist -- whitelist.wrapper_templates[template_name][1]; -- default names from whitelist if '' == date then -- if date not provided in the template date = date_default; -- use the default date from whitelist end if anchor_id then -- if names were gotten anchor_id = 'CITEREF' .. anchor_id .. date; end elseif ref:match ('%b{}') then -- ref holds a template anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else elseif 'none' == ref then -- |ref=none return nil; -- anchor id expicitly suppressed else anchor_id = ref; -- |ref=<text> may match an anchor id override value in {{harv}} template |ref= parameter end return anchor_id; -- anchor_id text; nil else end --[[--------------------------< A N C H O R _ I D _ M A K E _ C S 1 2 >---------------------------------------- for cs1|2 template and cs1-like templates inspect |ref= to decide what to do: |ref= - empty or missing: get names and date from template parameters; all cs1|2 create CITEREF anchor IDs |ref=harv - get names and date from template parameters |ref={{SfnRef|name|name|name|name|year}} - assemble an anchor id from {{sfnref}} positional parameters |ref={{Harvid|name|name|name|name|year}} - assemble an anchor id from {{harvid}} positional parameters |ref=none - skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'? |ref=<text> - save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter ]] local function anchor_id_make_cs12 (template) local ref; -- content of |ref= local template_name; -- name of the template local anchor_id; -- the assembled anchor id from this template local date; local params = {}; -- table of template parameters template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox if not template_name or template_skip[template_name] then return nil; -- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this) end if redirects_patent[template_name] then date = date_get (template, alias_patterns_patent_date); -- get date; done here because might be in {{date}} else date = date_get (template, alias_patterns_date); end ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the cs1|2 template if not ref then if template:match ('|%s*ref%s*=([^|}]+)') then -- |ref={{template}} not found; if there is a |ref= param with an assigned value ref = template:match ('|%s*ref%s*=([^|}]+)'); -- get the value; whitespace is a 'value' if ref then -- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace) ref = mw.text.trim (ref); -- something, could be just whitespace, so trim leading / trailing whitespace if '' == ref then -- trimming a string of whitespace makes an empty string ref = nil; -- make empty ref same as missing ref end end end end template_params_get (template, params); -- build a table of template parameters and their values if not ref then -- |ref= not set, might be cite LSA which doesn't support |ref= if 'cite lsa' == template_name then return 'CITEREF' .. (params.last or '') .. (params.year or ''); -- cite LSA always creates an anchor id using only |last= and |year= (no aliases) end end if 'harv' == ref or not ref then -- |ref=harv specified or |ref= missing or empty if redirects_patent[template_name] then -- if this is a cite patent template anchor_id = names_get (params, aliases_inventor); -- inventor names only else -- cs1|2 template anchor_id = names_get (params, aliases_contributor) or -- get contributor, author, or editor names names_get (params, aliases_author) or vnames_get (params, 'vauthors') or -- |vauthors= names_get (params, aliases_editor) or vnames_get (params, 'veditors'); -- |veditors= end if anchor_id then -- if names were gotten anchor_id = 'CITEREF' .. anchor_id .. date; end elseif ref:match ('%b{}') then -- ref holds a template anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else elseif 'none' == ref and not redirects_patent[template_name] then -- |ref=none; not supported by cite patent return nil; -- anchor id expicitly suppressed else anchor_id = ref; -- |ref=<text> may match an anchor id override value in {{harv}} template |ref= parameter end return anchor_id; -- anchor_id text; nil else end --[[--------------------------< L I S T _ A D D >-------------------------------------------------------------- adds an <item> to <list> table; for anchor IDs, the boolean <encode> argument must be set true; no return value ]] local function list_add (item, list, encode) if item then -- if there was an item if encode then -- for anchor IDs ... item = mw.uri.anchorEncode (item); -- encode to remove wikimarkup, convert spaces to underscores etc end if not list[item] then -- if not already saved list[item] = 1; -- save it else -- here when this item already saved list[item] = list[item] + 1; -- to indicate that there are multiple items end end end --[[--------------------------< A N C H O R _ I D _ M A K E _ A N C H O R >------------------------------------ make anchor IDs from {{anchor}}; there may be more than one because {{anchor}} is not limited to the number of anchors it may hold. ]] local function anchor_id_make_anchor (template, anchor_id_list) template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1); -- remove outer {{ and }} and template name template = wikilink_strip (template); -- strip any wikilink markup (there shouldn't be any but just in case) local params = {}; local anchor_id; for param in template:gmatch ('%b{}') do -- loop through the template; remove and save templates (presumed to be sfnref or harvid) table.insert (params, param); -- save it template = template:gsub ('%b{}', '', 1); -- remove it from source template end for _, t in ipairs (params) do -- spin through the templates in params anchor_id = sfnref_get (t); -- attempt to decode {{sfnref}} and {{harvid}} if anchor_id then -- nil when not {{sfnref}} or {{harvid}} list_add (anchor_id, anchor_id_list, true); -- add anchor ID to the list end end template = template:gsub ('|%s*|', '|'); -- when pipe follows pipe with or without white space, remove extraneous pipe template = template:gsub ('^|', ''):gsub('|$', ''); -- remove extraneous leading and trailing pipes params = mw.text.split (template, '%s*|%s*'); -- split at the pipe and remove extraneous space characters for _, t in ipairs (params) do -- spin through the anchor IDs anchor_id = mw.text.trim (t); -- trim white space if '' ~= anchor_id then -- should always have something list_add (anchor_id, anchor_id_list, true); -- add anchor ID to the list end end end --[[--------------------------< T E M P L A T E _ L I S T _ A D D >-------------------------------------------- makes a list of templates use in the article. ]] local function template_list_add (template) local template = template:match ('{{%s*(.-)[|}]'); -- keep the case of the template - this is different from template_name_get() if template and not template:match ('^#') then -- found a template or magic word; ignore magic words template=mw.text.trim (template); -- trim whitespace template = Lang_obj:ucfirst (template); -- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this? list_add (template, template_list); -- add to list with (unused) tally end end --[[--------------------------< A N C H O R _ I D _ L I S T _ M A K E >---------------------------------------- makes a list of anchor ids from cs1|2, cs1|2-like, vcite xxx, harvc, anchor, wikicite templates Because cs1|2 wrapper templates can, and often do, hide the author and date parameters inside the wrapper, these parameters are not available in the article's wikisource so {{harv}}, {{sfn}}, and {{harvc}} templates that link correctly to those wrapper templates will incorrectly show error messages. Use |ignore-err=yes in the {{harv}}, {{sfn}}, and {{harvc}} templates to supress the error message. creates a list of templates used in the article for use with the whitelist creates a list of article-local whitelisted anchor IDs from {{sfn whitelist}} ]] local function anchor_id_list_make () article_content_get (); -- attempt to get this article's content if '' == Article_content then -- when there is no article content return ''; -- no point in continuing end local template; -- place to hold the template that we found local template_name; local anchor_id; -- place to hold an anchor id as it is extracted / decoded local find_pattern = '%f[{]{{[^{]'; local tstart, tend = Article_content:find (find_pattern); -- find the first template; do not find template variables: {{{template var|}}} while tstart do template = Article_content:match ('%b{}', tstart); -- get the whole template if not template then break; -- template is nil for some reason (last template missing closing }} for example) so declare ourselves done end template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox template_list_add (template); -- add this template's name to the list if data.known_templates_cs12 [template_name] then anchor_id = anchor_id_make_cs12 (template); -- extract an anchor id from this template list_add (anchor_id, anchor_id_list, true) elseif data.known_templates_vcite [template_name] then local ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the vcite template if ref then -- |ref={{template}} anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else list_add (anchor_id, anchor_id_list, true); else local params = {}; template_params_get (template, params); -- build a table of template parameters and their values anchor_id = params['ref']; -- when both set, vcite uses value from |ref= if not anchor_id and params['harvid'] then anchor_id = 'CITEREF' .. params['harvid']; -- in vcite, |harvid= auto-adds 'CITEREF' prefix to the value in |harvid= end list_add (anchor_id, anchor_id_list, true); end elseif data.known_templates_harvc [template_name] then anchor_id = anchor_id_make_harvc (template); -- extract an anchor id from this template list_add (anchor_id, anchor_id_list, true); elseif data.known_templates_wikicite [template_name] then local ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} if ref then anchor_id = sfnref_get (ref); elseif template:match ('|%s*ref%s*=([^|}]+)') then anchor_id = template:match ('|%s*ref%s*=([^|}]+)'); -- plain-text elseif template:match ('|%s*id%s*=%s*(%b{})') then ref = template:match ('|%s*id%s*=%s*(%b{})'); anchor_id = 'Reference-' .. sfnref_get (ref); elseif template:match ('|%s*id%s*=([^|}]+)') then anchor_id = 'Reference-' .. template:match ('|%s*id%s*=([^|}]+)'); -- plain-text else anchor_id = nil; -- no matches, ensure that anchor_id has no value end if anchor_id then list_add (anchor_id, anchor_id_list, true); end elseif data.known_templates_anchor [template_name] then anchor_id_make_anchor (template, anchor_id_list); -- extract anchor ids from this template if any elseif data.known_templates_sfn_whitelist [template_name] then template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1); -- remove outer {{ and }} and template name template = mw.text.trim (template, '%s|'); -- trim leading trailing white space and pipes template = mw.text.split (template, '%s*|%s*'); -- make a table of the template's parameters for _, anchor_id in ipairs (template) do -- spin through this template's parameter if '' ~= anchor_id and not article_whitelist[anchor_id] then anchor_id = mw.uri.anchorEncode (anchor_id) article_whitelist[anchor_id] = 1; -- add to the whitelist end end elseif template_name and whitelist.wrapper_templates[template_name] then anchor_id = anchor_id_make_wrapper (template); -- extract an anchor id from this template if possible list_add (anchor_id, anchor_id_list, true); elseif template_name and template_name:match ('^Cit[ea]') then -- not known, not known wrapper; last gasp, try as cs1-like anchor_id = anchor_id_make_cs12 (template); -- extract an anchor id from this template if possible list_add (anchor_id, anchor_id_list, true); end tstart, tend = Article_content:find (find_pattern, tend); -- search for another template; begin at end of last search end mw.logObject (anchor_id_list, 'anchor_id_list'); mw.logObject (template_list, 'template_list'); mw.logObject (article_whitelist, 'article_whitelist'); return anchor_id_list; end --[[--------------------------< E X P O R T E D _ T A B L E S >------------------------------------------------ ]] return { anchor_id_list = anchor_id_list_make(), -- table of anchor ids available in this article article_whitelist = article_whitelist, -- table of anchor ids with false-positive error message to be suppressed template_list = template_list, -- table of templates used in this article } a827820b3af4a53f9ce6c4a2293bd7f418785903 Module:Footnotes/anchor id list/data 828 898 1987 1986 2023-10-01T10:44:14Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Footnotes/anchor_id_list/data]] Scribunto text/plain -- copied from Module:Ref info/data - maybe overkill here? -- for this application make lists from the redirect lists and force all template names first character uppercase require('strict'); --[[--------------------------< C S 1 _ T E M P L A T E _ P A T T E R N S >------------------------------------ These are patterns for cs1 templates and their redirects. These patterns exclude redirects that are vcite-like which redirects should be deleted because vcite is not cs1. ]] local cs1_template_patterns = { -- lua patterns of the cannonical names and redirects '[Cc]ite ar[Xx]iv', -- arXiv is the canonical name '[Cc]ite ArXiv', '[Cc]ite AV media', -- canonical '[Cc]ite audio', '[Cc]ite AV', '[Cc]ite AV ?Media', '[Cc]ite av media', '[Cc]ite cd', '[Cc]ite DVD', '[Cc]ite dvd', '[Cc]ite film', '[Cc]ite image', '[Cc]ite media', '[Cc]ite movie', '[Cc]ite music video', '[Cc]ite radio', '[Cc]ite song', '[Cc]ite ?video', '[Cc]ite visual', '[Cc]ite You[Tt]ube', '[Cc]ita vídeo', -- non-English redirect; TODO: tally separately? '[Cc]ite AV media notes', -- canonical '[Cc]ite album[ %-]notes', '[Cc]ite av media notes', '[Cc]ite DVD[ %-]notes', '[Cc]ite dvd%-notes', '[Cc]ite liner notes', '[Cc]ite music release notes', '[Ll]iner notes', '[Cc]ite bio[Rr]xiv', -- bioRxiv is the canonical form '[Cc]ite [Bb]ook', -- book is the canonical form '[Bb]ook cite', '[Bb]ook reference', '[Bb]ook reference url', '[Cc] book', '[Cc]it book', '[Cc]ite books', '[Cc]ite chapter', '[Cc]ite ebook', '[Cc]ite manual', '[Cc]ite page', '[Cc]ite publication', '[Cc]ite score', '[Cc]ite work', '[Cc]ite%-?book', '[Bb]okref', '[Cc]itace monografie', '[Cc]itar livro', -- non-English redirects; TODO: tally separately? '[Cc]iteer boek', '[Oo]uvrage', '[Rr]ef%-llibre', '서적 인용', '[Cc]ite citeseerx', -- canonical '[Cc]ite conference', -- canonical '[Cc]ita conferenza', '[Cc]ite proceedings', '[Cc]onference reference', -- cita conferenza is non-English; TODO: tally separately? '[Cc]ite ?encyclopedia', -- cite encyclopedia is the canonical name '[Cc]ite contribution', '[Cc]ite dic', '[Cc]ite dictionary', '[Cc]ite encyclopaedia', '[Cc]ite encyclopædia', '[Ee]ncyclopedia', '[Cc]ite [Ee]pisode', -- episode is the canonical form '[Cc]ite show', '[Cc]ite interview', -- canonical '[Cc]ite ?journal', -- cite journal is the canonical form '[Cc] journal', '[Cc]itation journal', '[Cc]ite abstract', '[Cc]ite document', '[Cc]ite Journal', '[Cc]ite journal zh', '[Cc]ite ?paper', '[Vv]cite2 journal', '[Cc]ita pubblicazione', '[Cc]itace periodika', '[Cc]itar jornal', -- non-English redirects; TODO: tally separately? '[Cc]itar publicació', '[Cc]ytuj pismo', '[Tt]idskriftsref', 'Навод из стручног часописа', '저널 인용', '[Cc]ite [Mm]agazine', -- magazine is the canonical form '[Cc]ite mag', '[Cc]ite magazine article', '[Cc]ite newsletter', '[Cc]ite periodical', '[Cc]ite mailing ?list', -- mailing list is the canonical form '[Cc]ite list', '[Cc]ite maps?', -- map is the canonical form '[Cc]ite[ %-]?news', -- cite news is the canonical form '[Cc] news', '[Cc]it news', '[Cc]itation news', '[Cc]ite article', '[Cc]ite n', '[Cc]ite new', '[Cc]ite newspaper', '[Cc]ite News', '[Cc]ite news%-q', '[Cc]ite news2', '[Cc]itenewsauthor', '[Cc]ute news', '[Cc]itar notícia', '[Hh]aber kaynağı', '[Tt]idningsref', 'استشهاد بخبر', -- non-English redirects; TODO: tally separately? '뉴스 인용', '[Cc]ite newsgroup', -- canonical '[Cc]ite usenet', '[Cc]ite podcast', -- canonical '[Cc]ite [Pp]ress release', -- press release is the canonical form '[Cc]ite media release', '[Cc]ite news release', '[Cc]ite pr', '[Cc]ite press', '[Cc]ite press release\.', '[Cc]ite press[%-]?release', '[Cc]ite report', -- canonical '[Cc]ite serial', -- canonical '[Cc]ite sign', -- canonical '[Cc]ite plaque', '[Cc]ite speech', -- canonical '[Cc]ite ssrn', -- canonical '[Cc]ite SSRN', '[Cc]ite tech ?report', -- techreport is the canonical form '[Cc]ite standard', '[Cc]ite technical report', '[Tt]echrep reference', '[Cc]ite thesis', -- canonical '[Cc]ite dissertation', '[Cc]itar tese', -- non-English redirect; TODO: tally separately? '[Cc]ite [Ww]eb', -- web is the canonical form '[Cc] web', '[Cc]it web', '[Cc]ite blog', '[Cc]ite URL', '[Cc]ite url', '[Cc]ite w', '[Cc]ite wb', '[Cc]ite we', '[Cc]ite web\.', '[Cc]ite webpage', '[Cc]ite website', '[Cc]ite website article', '[Cc]ite%-?web', '[Cc]itweb', '[Cc]w', '[Rr]ef web', '[Ww]eb citation', '[Ww]eb cite', '[Ww]eb link', '[Ww]eb[ %-]reference', '[Ww]eblink', '[Cc]hú thích web', '[Cc]ita web', '[Cc]itace elektronické monografie', -- non-English redirects; TODO: tally separately? '[Cc]itat web', 'مرجع ويب', 'یادکرد وب', '웹 인용', } --[[--------------------------< C S 2 _ T E M P L A T E _ P A T T E R N S >------------------------------------ These are patterns for cs2 templates redirects. ]] local cs2_template_patterns = { -- lua patterns of the cannonical names and redirects '[Cc]itation', '[Cc]ite', '[Cc]ite citation', '[Cc]ite study', '[Cc]ite [Tt]echnical standard', } --[[--------------------------< V C I T E _ T E M P L A T E _ P A T T E R N S >-------------------------------- These are patterns for Vcite-family templates and their redirects. ]] local vcite_template_patterns = { '[Vv]cite book', -- canonical '[Vv]ancite book', '[Vv]ancite report', '[Vv]cite encyclopedia', '[Vv]cite report', '[Vv]cite journal', -- canonical '[Cc]it journal', '[Cc]it paper', '[Vv]ancite journal', '[Vv]cite paper', '[Vv]cite news', -- canonical '[Vv]ancite news', '[Vv]cite web', -- canonical '[Vv]ancite web', } --[[--------------------------< H A R V C _ T E M P L A T E _ P A T T E R N S >-------------------------------- These are patterns for the harvc template and its redirects. ]] local harvc_template_patterns = { '[Hh]arvc', -- canonical '[Cc]itec', } --[[--------------------------< C S 1 _ L I K E _ T E M P L A T E _ P A T T E R N S >-------------------------- These are patterns for miscellaneous templates and their redirects that 'look like' cs1 templates (begin with cite ...) Because they 'look like' cs1 templates they are handled as if they were cs1 templates. These templates are NOT wrapper templates; names and dates are always to be extracted from the article instantiation of the template. ]] local cs1_like_template_patterns = { '[Cc]ite LSA', -- canonical } --[[--------------------------< W I K I C I T E _ T E M P L A T E _ P A T T E R N S >-------------------------- These are patterns for the wikicite template and its redirects. ]] local wikicite_template_patterns = { '[Ww]ikicite', -- canonical } --[[--------------------------< A N C H O R _ T E M P L A T E _ P A T T E R N S >------------------------------ These are patterns for the anchor template and its redirects. ]] local anchor_template_patterns = { '[Aa]nchors?', -- anchor is canonical form '[Aa]nchor for redirect', '[Aa]nchro', '[Aa]ncor', } --[[--------------------------< S F N _ W H I T E L I S T _ P A T T E R N S >---------------------------------- These are patterns for the anchor template and its redirects. ]] local sfn_whitelist_patterns = { '[Ss]fn whitelist', -- canonical '[Hh]arv whitelist', } --[[--------------------------< K N O W N _ T E M P L A T E S >------------------------------------------------ These tables are created from the *_template_patterns tables. To make these tables, entries in the source tables are evaluated to replace lua patterns with the appropriate characters to create names for the output tables. First charqacter is always uppercase For example: [Cc]ite ar[Xx]iv becomes Cite arXiv Cite arxiv ]] local known_templates_cs12 = {}; -- the exported tables local known_templates_vcite = {}; local known_templates_harvc = {}; local known_templates_wikicite = {}; local known_templates_anchor = {}; local known_templates_sfn_whitelist = {}; local function add_stripped (list, name) if not list[name] then list[name] = true; end end local function pattern_convert (pattern, list) local lead, tail, c, l, name; local first_char_patterns = { '^%[(%a)%a%]', -- leading character (usually uppercase) '^%[%a(%a)%]', -- leading character (usually lowercase) } c = tostring (pattern:match ('%u')); -- tostring() required because I don't know why; lua chokes complaining that c is not a string name = pattern:gsub ('^%[%a%a%]', c); -- replace bracketed first character [Xx] with selected character from the match if name:match ('(.-)%[(%a)(%a)%](.*)') then -- mixed case optional letters lead, c, l, tail = name:match ('(.-)%[(%a)(%a)%](.*)'); add_stripped (list, lead .. c .. tail); -- uppercase add_stripped (list, lead .. l .. tail); -- lowercase elseif name:match ('^([^%[]+)(%[ %%%-%]%?)(.+)$') then -- [ %-]? lead, c, tail = name:match ('^([^%[]+)(%[ %%%-%]%?)(.+)$'); add_stripped (list, lead .. tail); -- neither char add_stripped (list, lead .. ' ' .. tail); -- space add_stripped (list, lead .. '-' .. tail); -- hyphen elseif name:match ('^([^%[]+)(%[%%%-%]%?)(.+)$') then -- [%-]? lead, c, tail = name:match ('^([^%[]+)(%[%%%-%]%?)(.+)$'); add_stripped (list, lead .. tail); -- no hyphen add_stripped (list, lead .. '-' .. tail); -- hyphen elseif name:match ('^([^%[]+)(%[ %%%-%])(.+)$') then -- [ %-] lead, c, tail = name:match ('^([^%[]+)(%[ %%%-%])(.+)$'); add_stripped (list, lead .. ' ' .. tail); -- space add_stripped (list, lead .. '-' .. tail); -- hyphen elseif name:match ('^([^%?]+)(%%%-%?)(.+)$') then -- %-? lead, c, tail = name:match ('^([^%?]+)(%%%-%?)(.+)$'); add_stripped (list, lead .. tail); -- no hyphen add_stripped (list, lead .. '-' .. tail); -- hyphen elseif name:match ('^(.-)(%%%-)(.+)$') then -- %- lead, c, tail = name:match ('^(.-)(%%%-)(.+)$'); add_stripped (list, lead .. '-' .. tail); -- hyphen elseif name:match ('^(.-)(.)%?(.*)$') then -- .? lead, c, tail = name:match ('^(.-)(.)%?(.*)$'); add_stripped (list, lead .. tail); -- no character add_stripped (list, lead .. c .. tail); -- character else add_stripped (list, name); -- no patterns so save as is end end for _, t in ipairs ({ {cs1_template_patterns, known_templates_cs12}, {cs2_template_patterns, known_templates_cs12}, {cs1_like_template_patterns, known_templates_cs12}, {vcite_template_patterns, known_templates_vcite}, {harvc_template_patterns, known_templates_harvc}, {wikicite_template_patterns, known_templates_wikicite}, {anchor_template_patterns, known_templates_anchor}, {sfn_whitelist_patterns, known_templates_sfn_whitelist}, }) do for _, pattern in ipairs (t[1]) do -- for each patern in *_template_patterns pattern_convert (pattern, t[2]) -- convert and store in known_templates_* end end --[[--------------------------< E X P O R T S >---------------------------------------------------------------- ]] return { known_templates_anchor = known_templates_anchor, known_templates_cs12 = known_templates_cs12, known_templates_harvc = known_templates_harvc, known_templates_vcite = known_templates_vcite, known_templates_wikicite = known_templates_wikicite, known_templates_sfn_whitelist = known_templates_sfn_whitelist, } 29b949b2a7e0e2aedfb7399749d699512125a378 Module:Footnotes/whitelist 828 899 1989 1988 2023-10-01T10:44:14Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Footnotes/whitelist]] Scribunto text/plain --[[--------------------------< W R A P P E R _ T E M P L A T E _ D E F A U L T S >---------------------------- A list of wrapper templates by their canonical names – spelling and capitalization is important. Each wrapper template has a table of two values: [1] is the wrapper's default name-list as it is used in an anchor ID; [2] is the default year. This table is indexed indirectly through the wrapper_templates table. This table is not available externally. ]] local wrapper_template_defaults = { -- keys are canonical template names ['Americana'] = {'Rines', '1920'}, -- tables with default name and default year ['Cite EB1911'] = {'Chisholm', '1911'}, -- tables with default name and default year ['EB1911'] = {'Chisholm', '1911'}, ['EI3'] = {'FleetKrämerMatringeNawas', ''}, ['ODNB'] = {'', ''}, -- there is no default anchor ID; this forces evaluation of {{cite ODNB}} redirects } --[[--------------------------< W R A P P E R _ T E M P L A T E _ D E F A U L T S _ V O L >-------------------- For wrapper templates that use |volume= to specify default name (often editor names) and year. Wrapper templates are indexed by their canonical names – spelling and capitalization is important. Each wrapper template has a table of values for every volume. Volumes may be indexed by Arabic or Roman numerals. Each volume index has a table of twp values" [1] is the wrapper's default name-list as it is used in an anchor ID; [2] is the default year. Each wrapper template in this table must have a ['default'] key for those occasions when |volume= is omitted or empty. This table is indexed indirectly through the wrapper_templates table. This table is not available externally. ]] local wrapper_template_defaults_vol = { -- primary keys are canonical template names; TODO: do these keys have to be canonical template names? ['Cite Catholic Encyclopedia'] = { -- secondary keys are volume ['1'] = {'Herbermann', '1907'}, ['2'] = {'Herbermann', '1907'}, ['3'] = {'Herbermann', '1908'}, ['4'] = {'Herbermann', '1908'}, ['5'] = {'Herbermann', '1909'}, ['6'] = {'Herbermann', '1909'}, ['7'] = {'Herbermann', '1910'}, ['8'] = {'Herbermann', '1910'}, ['9'] = {'Herbermann', '1910'}, ['10'] = {'Herbermann', '1911'}, ['11'] = {'Herbermann', '1911'}, ['12'] = {'Herbermann', '1911'}, ['13'] = {'Herbermann', '1912'}, ['14'] = {'Herbermann', '1912'}, ['15'] = {'Herbermann', '1912'}, ['default'] = {'Herbermann', '1913'}, }, ['Cite EB9'] = { ['1'] = {'Baynes', '1878'}, ['I'] = {'Baynes', '1878'}, ['2'] = {'Baynes', '1878'}, ['II'] = {'Baynes', '1878'}, ['3'] = {'Baynes', '1878'}, ['III'] = {'Baynes', '1878'}, ['4'] = {'Baynes', '1878'}, ['IV'] = {'Baynes', '1878'}, ['5'] = {'Baynes', '1878'}, ['V'] = {'Baynes', '1878'}, ['6'] = {'Baynes', '1878'}, ['VI'] = {'Baynes', '1878'}, ['7'] = {'Baynes', '1878'}, ['VII'] = {'Baynes', '1878'}, ['8'] = {'Baynes', '1878'}, ['VIII'] = {'Baynes', '1878'}, ['9'] = {'Baynes', '1879'}, ['IX'] = {'Baynes', '1879'}, ['10'] = {'Baynes', '1879'}, ['X'] = {'Baynes', '1879'}, ['11'] = {'BaynesSmith', '1880'}, ['XI'] = {'BaynesSmith', '1880'}, ['12'] = {'BaynesSmith', '1881'}, ['XII'] = {'BaynesSmith', '1881'}, ['13'] = {'BaynesSmith', '1881'}, ['XIII'] = {'BaynesSmith', '1881'}, ['14'] = {'BaynesSmith', '1882'}, ['XIV'] = {'BaynesSmith', '1882'}, ['15'] = {'BaynesSmith', '1883'}, ['XV'] = {'BaynesSmith', '1883'}, ['16'] = {'BaynesSmith', '1883'}, ['XVI'] = {'BaynesSmith', '1883'}, ['17'] = {'BaynesSmith', '1884'}, ['XVII'] = {'BaynesSmith', '1884'}, ['18'] = {'BaynesSmith', '1885'}, ['XVIII'] = {'BaynesSmith', '1885'}, ['19'] = {'BaynesSmith', '1885'}, ['XIX'] = {'BaynesSmith', '1885'}, ['20'] = {'BaynesSmith', '1886'}, ['XX'] = {'BaynesSmith', '1886'}, ['21'] = {'BaynesSmith', '1886'}, ['XXI'] = {'BaynesSmith', '1886'}, ['22'] = {'BaynesSmith', '1887'}, ['XXII'] = {'BaynesSmith', '1887'}, ['23'] = {'BaynesSmith', '1888'}, ['XXIII'] = {'BaynesSmith', '1888'}, ['24'] = {'BaynesSmith', '1888'}, ['XXIV'] = {'BaynesSmith', '1888'}, ['default'] = {'Baynes', '1875–1889'}, }, ['Encyclopaedia of Islam, New Edition'] = { ['1'] = {'GibbKramersLévi-ProvençalSchacht', '1960'}, ['2'] = {'LewisPellatSchacht', '1965'}, ['3'] = {'LewisMénagePellatSchacht', '1971'}, ['4'] = {'van_DonzelLewisPellatBosworth', '1978'}, ['5'] = {'Bosworthvan_DonzelLewisPellat', '1986'}, ['6'] = {'Bosworthvan_DonzelPellat', '1991'}, ['7'] = {'Bosworthvan_DonzelHeinrichsPellat', '1993'}, ['8'] = {'Bosworthvan_DonzelHeinrichsLecomte', '1995'}, ['9'] = {'Bosworthvan_DonzelHeinrichsLecomte', '1997'}, ['10'] = {'BearmanBianquisBosworthvan_Donzel', '2000'}, ['11'] = {'BearmanBianquisBosworthvan_Donzel', '2002'}, ['12'] = {'BearmanBianquisBosworthvan_Donzel', '2004'}, ['atlas'] = {'Brice', '1981'}, ['abridged'] = {'van_Donzel', '1994'}, ['default'] = {'BearmanBianquisBosworthvan_Donzel', '1960–2005'}, }, ['New Cambridge Medieval History'] = { ['1'] = {'Fouracre', '2005'}, ['2'] = {'McKitterick', '1995'}, ['3'] = {'Reuter', '2000'}, ['4a'] = {'LuscombeRiley-Smith', '2004'}, ['4b'] = {'LuscombeRiley-Smith', '2004'}, ['5'] = {'Abulafia', '1999'}, ['6'] = {'Jones', '2000'}, ['7'] = {'Allmand', '1998'}, ['default'] = {'', '1995–2005'}, }, ['The History of al-Tabari'] = { ['1'] = {'Rosenthal', '1989'}, ['2'] = {'Brinner', '1986'}, ['3'] = {'Brinner', '1991'}, ['4'] = {'Perlmann', '1987'}, ['5'] = {'Bosworth', '1999'}, ['6'] = {'WattMcDonald', '1989'}, ['7'] = {'McDonald', '1987'}, ['8'] = {'Fishbein', '1997'}, ['9'] = {'Poonawala', '1990'}, ['10'] = {'Donner', '1993'}, ['11'] = {'Blankinship', '1993'}, ['12'] = {'Friedmann', '1992'}, ['13'] = {'Juynboll', '1989'}, ['14'] = {'Smith', '1994'}, ['15'] = {'Humphreys', '1990'}, ['16'] = {'Brockett', '1997'}, ['17'] = {'Hawting', '1996'}, ['18'] = {'Morony', '1987'}, ['19'] = {'Howard', '1990'}, ['20'] = {'Hawting', '1989'}, ['21'] = {'Fishbein', '1990'}, ['22'] = {'Rowson', '1989'}, ['23'] = {'Hinds', '1990'}, ['24'] = {'Powers', '1989'}, ['25'] = {'Blankinship', '1989'}, ['26'] = {'Hillenbrand', '1989'}, ['27'] = {'Williams', '1985'}, ['28'] = {'McAuliffe', '1995'}, ['29'] = {'Kennedy', '1990'}, ['30'] = {'Bosworth', '1989'}, ['31'] = {'Fishbein', '1992'}, ['32'] = {'Bosworth', '1987'}, ['33'] = {'Bosworth', '1991'}, ['34'] = {'Kraemer', '1989'}, ['35'] = {'Saliba', '1985'}, ['36'] = {'Waines', '1992'}, ['37'] = {'Fields', '1987'}, ['38'] = {'Rosenthal', '1985'}, ['39'] = {'Landau-Tasseron', '1998'}, ['40'] = {'Popovkin', '2007'}, ['default'] = {'Yarshater', '1985–2007'}, }, } --[[--------------------------< W R A P P E R _ T E M P L A T E S >-------------------------------------------- A list of wrapper templates and their redirects – spelling and capitalization is important; first character is always uppercase. Each wrapper template gets its value from a k/v pair in the wrapper_template_defaults table. article reader queries this table to see if template_name is a wrapper template ]] local wrapper_templates = { -- keys are names of wrapper templates and their redirects ['Americana'] = wrapper_template_defaults['Americana'], -- canonical name; this template calls Cite Americana ['Catholic Encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['1913Catholic'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Catholic'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Catholic encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['CatholicEncyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['CE13'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['CE1913'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Cite Americana'] = wrapper_template_defaults['Americana'], -- canonical name ['Cite Catholic Encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['CathEncy'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Cite Catholic Encyclopædia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Cite CE1913'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'], ['Cite EB1911'] = wrapper_template_defaults['Cite EB1911'], -- canonical name ['1911EB'] = wrapper_template_defaults['Cite EB1911'], -- redirects ['EB1911 cite'] = wrapper_template_defaults['Cite EB1911'], ['Wikisource1911Enc Citation'] = wrapper_template_defaults['Cite EB1911'], ['Wikisource1911Enc citation'] = wrapper_template_defaults['Cite EB1911'], ['Cite EB9'] = wrapper_template_defaults_vol['Cite EB9'], -- canonical ['Eb9'] = wrapper_template_defaults_vol['Cite EB9'], ['Cite ODNB'] = wrapper_template_defaults['ODNB'], -- canonical ['Cite odnb'] = wrapper_template_defaults['ODNB'], ['DNBweb'] = wrapper_template_defaults['ODNB'], ['OBDNweb'] = wrapper_template_defaults['ODNB'], ['ODNB'] = wrapper_template_defaults['ODNB'], ['ODNBref'] = wrapper_template_defaults['ODNB'], ['ODNBweb'] = wrapper_template_defaults['ODNB'], ['EB1911'] = wrapper_template_defaults['EB1911'], -- canonical name; this template calls Cite EB1911 ['1911'] = wrapper_template_defaults['EB1911'], -- redirects ['1911s'] = wrapper_template_defaults['EB1911'], ['Britannica 1911'] = wrapper_template_defaults['EB1911'], ['Encyclopedia Britannica 1911'] = wrapper_template_defaults['EB1911'], ['Encyclopædia Britannica 1911'] = wrapper_template_defaults['EB1911'], ['EB9'] = wrapper_template_defaults_vol['Cite EB9'], -- canonical; this template calls Cite EB9 ['Encyclopaedia of Islam, New Edition'] = wrapper_template_defaults_vol['Encyclopaedia of Islam, New Edition'], -- canonical ['EI2'] = wrapper_template_defaults_vol['Encyclopaedia of Islam, New Edition'], ['Encyclopaedia of Islam, THREE'] = wrapper_template_defaults['EI3'], -- canonical ['EI3'] = wrapper_template_defaults['EI3'], ['New Cambridge Medieval History'] = wrapper_template_defaults_vol['New Cambridge Medieval History'], -- canonical ['The History of al-Tabari'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- canonical ['The History of Al-Tabari'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- redirects ['The History of al-Ṭabarī'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- redirects } --[[--------------------------< T E M P L A T E _ N A M E S >-------------------------------------------------- This table holds the names of templates and the names of their redirects. Template names must be written exactly as they are named at their templatespace page. This same also applies to redirects. The indexes in this table are not critical but should be short and concise. ]] local template_names = { ['ADB'] = {'Allgemeine Deutsche Biographie', 'Cite ADB'}, ['Butt_Stations'] = {'Butt-Stations', 'Butt-stations'}, ['Cam_Hist_Iran'] = {'Cambridge History of Iran', 'The Cambridge History of Iran'}, ['DNB'] = {'Cite DNB', 'DNB', 'DNB Cite', 'Cite DNBSupp', 'DNBSupp', 'Cite DNB12', 'Cite DNBIE', 'DNB12', 'DNBIE', 'DNBfirst'}, ['ME-ref'] = {'ME-ref', 'Me-ref'}, ['ODB'] = {'ODB', 'Oxford Dictionary of Byzantium'}, ['ODLA'] = {'ODLA', 'Oxford Dictionary of Late Antiquity'}, ['NDB'] = {'Cite NDB', 'NDB'}, ['Iranica'] = {'Encyclopædia Iranica Online', 'Encyclopædia Iranica', 'Encyclopaedia Iranica', 'Cite Encyclopædia Iranica Online'}, } --[[--------------------------< S P E C I A L _ P A T T E R N S >---------------------------------------------- Lua patterns. These are scanned sequentially which costs time and processing far and above the time and processing needed to index into whitelist{}. Do not create a pattern here if a normal whitelist entry or entries can be created. ]] local special_patterns = { 'CITEREFACAD%u%u%u?%u?%d+%u%u?', -- {{Acad}} ID appears to be 2-4 letters, then 3 numbers, then 1-2 letters 'CITEREFAHD%d+', -- {{Cite AHD}} 'CITEREFHistoric_England%d+', -- {{National Heritage List for England}} & {{PastScape}} 'CITEREFHistoric_Environment_Scotland%u%u%u?%u?%d', -- {{Historic Environment Scotland}} %u can be BTL, GLD, HMPA, LB, SM 'CITEREFQHR%d+', -- {{Cite QHR}} 'CITEREF[%d%a_%pöüäß→]+_at_Bach_Digital', -- {{BDh}} 'CITEREF[BR]GBl_[12]%d%d%d%-?I?I?%/%d+', -- {{Cite Austrian gazette}} 'CITEREFStGBl_[12]%d%d%d%/%d+', -- {{Cite Austrian gazette}} 'CITEREFGBlÖ_[12]%d%d%d%/%d+', -- {{Cite Austrian gazette}} } --[[--------------------------< D N B _ S P E C I A L _ P A T T E R N S >-------------------------------------- Lua patterns. Note at special_patterns applies. These for the DNB templates only; these will be tried only when there is a DNB template in the article. Pretty much any author name during the period 1885–1901 inclusive, and 1912. The DNBIE was published in 1903, and Template:DNBIE says that its use is deprecated, but we do not fight that battle here. ]] local DNB_special_patterns = { 'CITEREF%a[%a%-_\']*188[5-9]', -- 1885–1889 'CITEREF%a[%a%-_\']*189%d', -- 1890–1899 'CITEREF%a[%a%-_\']*190[0-1]', -- 1900–1901 'CITEREF%a[%a%-_\']*1903', -- 1903 IE 'CITEREF%a[%a%-_\']*1912', -- 1912 supplement } --[[--------------------------< W H I T E L I S T >------------------------------------------------------------ This is a list of anchor IDs known to be associated with specific wrapper templates. The anchor ID serves as an index into the table. The assigned value is another table that lists the associated template and any redirects. Except for year disambiguators, anchor IDs must have the same form as the anchor creator makes; must be the anchor-encoded form. Remove the year disambiguator. Template names must be written exactly as they are named at their templatespace page. This same also applies to redirects. Module:Footnotes reads the template names left to right so most-commonly-used template or redirect name should appear first. When there are more than one name and when those templates have various anchor IDs the template namelist should be added to the template_names{} table. Note that references to Template:EB1911 are listed under "E" in the alphabetical list below to keep them organized. ]] local whitelist = { ----------< # >---------- ['CITEREF2013_Statistical_Yearbook_of_the_Republic_of_Croatia'] = {'Croatia Yearbook 2013'}, ----------< A >---------- ['CITEREFAGA_1884–1897'] = {'Schubert\'s compositions (references)'}, ['CITEREFATOC2009'] = {'ATOCConnectingCommunitiesReportS10'}, ['CITEREFAbaevBailey1985'] = template_names['Iranica'], ['CITEREFAbbas1988'] = template_names['Iranica'], ['CITEREFAbbas1989'] = template_names['Iranica'], ['CITEREFAbramowitzStegun1983'] = {'Abramowitz Stegun ref'}, ['CITEREFActa_Lipsiensium1723'] = {'Bach\'s compositions (sources)'}, ['CITEREFAdamsFranzosa2009'] = {'Adams Franzosa Introduction to Topology Pure and Applied'}, ['CITEREFAdaschErnstKeim1978'] = {'Adasch Topological Vector Spaces'}, ['CITEREFAffleck1978'] = {'Affleck-On Track'}, ['CITEREFAhlgrimm1969'] = {'Bach\'s compositions (sources)'}, ['CITEREFAhmadiNegahban2013'] = {'Encyclopaedia Islamica'}, ['CITEREFAhrons1927'] = {'Book-Ahrons-British Steam Railway Locomotive'}, ['CITEREFAl-Kindi1912'] = {'The Governors and Judges of Egypt'}, ['CITEREFAlbert_Schumann1886'] = {'Cite ADB'}, ['CITEREFAlden1916'] = {'Shakespeare sonnets bibliography'}, ['CITEREFAldrich1969'] = {'Aldrich-LocosGER7'}, ['CITEREFAleksidze2018'] = template_names['ODLA'], ['CITEREFAlexiou2010'] = {'Cite flatiron'}, ['CITEREFAlgar1983'] = template_names['Iranica'], ['CITEREFAlgar1989'] = template_names['Iranica'], ['CITEREFAlgar1990'] = template_names['Iranica'], ['CITEREFAlgar2003'] = template_names['Iranica'], ['CITEREFAlizadeh1990'] = template_names['Iranica'], ['CITEREFAllamaniPanagiotopoulou1978'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFAllcockDaviesle_FlemingMaskelyne1968'] = {'RCTS-LocosGWR-1'}, ['CITEREFAllenBoddyBrownFry1970'] = {'RCTS-LocosLNER-8A', 'RCTS-LocosLNER'}, ['CITEREFAllenBoddyBrownFry1971'] = {'RCTS-LocosLNER-8B', 'RCTS-LocosLNER'}, ['CITEREFAllenBoddyBrownFry1983'] = {'RCTS-LocosLNER-8A', 'RCTS-LocosLNER'}, ['CITEREFAmanat1998'] = template_names['Iranica'], ['CITEREFAmanat1999'] = template_names['Iranica'], ['CITEREFAmbartsumian2014'] = template_names['Iranica'], ['CITEREFAmerican_Railway_Association1922'] = {'1922 Locomotive Cyclopedia'}, ['CITEREFAnderson1952'] = {'Naval Wars in the Levant 1559–1853'}, ['CITEREFAndo2000'] = template_names['Iranica'], ['CITEREFAngelov2018'] = template_names['ODLA'], ['CITEREFAnwārEIr1985'] = template_names['Iranica'], ['CITEREFArkhangel&#039;skiiPonomarev1984'] = {'Arkhangel\'skii Ponomarev Fundamentals of General Topology Problems and Exercises'}, ['CITEREFArrey_von_Dommer1875'] = {'Cite ADB'}, ['CITEREFAshraf2006'] = template_names['Iranica'], ['CITEREFAslanianBerberian2009'] = template_names['Iranica'], ['CITEREFAsmus1966'] = template_names['NDB'], ['CITEREFAsmussen1985'] = template_names['Iranica'], ['CITEREFAspreas1929'] = {'Great Military and Naval Encyclopaedia'}, ['CITEREFAtkins2007'] = {'Shakespeare sonnets bibliography'}, ['CITEREFAube2011'] = template_names['Iranica'], ['CITEREFAudiKondevWangHuang2017'] = {'NUBASE2016'}, ['CITEREFAvdoyan2018'] = template_names['ODLA'], ['CITEREFAwdry1990'] = {'Awdry-RailCo', 'Carnarvonshire Railway'}, ['CITEREFAzarnoosh2021'] = template_names['Iranica'], ['CITEREFRamelli2018'] = {'Oxford Dictionary of Late Antiquity'},['CITEREFA_History_of_the_Crusades'] = {'Setton-A History of the Crusades'}, ----------< B >---------- ['CITEREFBabinger1962'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFBabinger1978'] = {'Mehmed the Conqueror and His Time'}, ['CITEREFBabinger1992'] = {'Mehmed the Conqueror and His Time'}, ['CITEREFBachAgricola1754'] = {'Bach\'s compositions (sources)'}, ['CITEREFBadura-SkodaBranscombe2008'] = {'Schubert\'s compositions (references)'}, ['CITEREFBagley1999'] = {'Cite Cambridge History of China'}, ['CITEREFBahramianHirtensteinGholami2013'] = {'Encyclopaedia Islamica'}, ['CITEREFBalcer1990'] = template_names['Iranica'], ['CITEREFBaldwin1969'] = {'Setton-A History of the Crusades'}, ['CITEREFBaldwin1985'] = {'Setton-A History of the Crusades'}, ['CITEREFBaldwinKazhdan1991'] = template_names['ODB'], ['CITEREFBaldwinTalbot1991'] = template_names['ODB'], ['CITEREFBaltzer1916'] = {'Baltzer-Kolonialbahnen'}, ['CITEREFBanach1932'] = {'Banach Théorie des Opérations Linéaires'}, ['CITEREFBandy2021'] = template_names['Iranica'], ['CITEREFBartusis1991'] = template_names['ODB'], ['CITEREFBaxter1971'] = {'Baxter-BritishLocoCat1'}, ['CITEREFBaxter1977'] = {'Baxter-BritishLocoCat1'}, ['CITEREFBaxter1978'] = {'Baxter-BritishLocoCat2A'}, ['CITEREFBaxter1979'] = {'Baxter-BritishLocoCat2B'}, ['CITEREFBaxter1982'] = {'Baxter-BritishLocoCat3A', 'Baxter-BritishLocoCat3B'}, ['CITEREFBaxter1984'] = {'Baxter-BritishLocoCat4'}, ['CITEREFBaxter1986'] = {'Baxter-BritishLocoCat5A'}, ['CITEREFBaxter1988'] = {'Baxter-BritishLocoCat5B'}, ['CITEREFBaxter2012'] = {'Baxter-BritishLocoCat6'}, ['CITEREFBeattie1986'] = template_names['Iranica'], ['CITEREFBeißwenger1991'] = {'Bach\'s compositions (sources)'}, ['CITEREFBek2001'] = {'Cite Grove'}, ['CITEREFBelke1996'] = {'Tabula Imperii Byzantini'}, ['CITEREFBelkeMersisch1990'] = {'Tabula Imperii Byzantini'}, ['CITEREFBelkeRestle1984'] = {'Tabula Imperii Byzantini'}, ['CITEREFBellini2008'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFBernardini2003'] = template_names['Iranica'], ['CITEREFBernhard_von_Poten1889'] = template_names['ADB'], ['CITEREFBernhard_von_Poten1898'] = template_names['ADB'], ['CITEREFBernjian2008'] = {'Encyclopaedia Islamica'}, ['CITEREFBezilla1980'] = {'Bezilla-PRR-Electric-Traction'}, ['CITEREFBianquis1998'] = {'The Cambridge History of Egypt', 'Cambridge History of Egypt'}, ['CITEREFBickerman1983'] = template_names['Cam_Hist_Iran'], ['CITEREFBierstedt1988'] = {'Bierstedt An Introduction to Locally Convex Inductive Limits'}, ['CITEREFBiran2009'] = template_names['Iranica'], ['CITEREFBirken1976'] = {'Die Provinzen des Osmanischen Reiches'}, ['CITEREFBivar1983'] = template_names['Cam_Hist_Iran'], ['CITEREFBivar2003'] = template_names['Iranica'], ['CITEREFBlair2002'] = template_names['Iranica'], ['CITEREFBlair2021'] = template_names['Iranica'], ['CITEREFBlake1966'] = {'DisraeliRef'}, ['CITEREFBlanken2019'] = {'Bach\'s compositions (sources)'}, ['CITEREFBlankinship1994'] = {'The End of the Jihâd State', 'The End of the Jihad State'}, ['CITEREFBlautSchulze2008'] = {'Bach\'s compositions (sources)'}, ['CITEREFBloom2007'] = {'Cite Routledge Broadway', 'Cite Broadway Routledge', 'Cite Routledge Guide to Broadway', 'Routledge Guide to Broadway'}, ['CITEREFBock1978'] = {'Audie-bock-directors'}, ['CITEREFBodde1986'] = {'Cite Cambridge History of China'}, ['CITEREFBoddyBrownFryHennigan1968'] = {'RCTS-LocosLNER-4', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownFryHennigan1975'] = {'RCTS-LocosLNER-2B', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownFryHennigan1977'] = {'RCTS-LocosLNER-9A', 'RCTS-LocosLNER-9B', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownFryHennigan1979'] = {'RCTS-LocosLNER-3A', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownHenniganHoole1984'] = {'RCTS-LocosLNER-6C', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownHenniganNeve1981'] = {'RCTS-LocosLNER-3B', 'RCTS-LocosLNER'}, ['CITEREFBoddyBrownNeveYeadon1983'] = {'RCTS-LocosLNER-6B', 'RCTS-LocosLNER'}, ['CITEREFBoddyFryHenniganHoole1990'] = {'RCTS-LocosLNER-10B', 'RCTS-LocosLNER'}, ['CITEREFBoddyFryHenniganProud1963'] = {'RCTS-LocosLNER-1', 'RCTS-LocosLNER'}, ['CITEREFBoddyNeveTeeYeadon1982'] = {'RCTS-LocosLNER-6A', 'RCTS-LocosLNER'}, ['CITEREFBoddyNeveYeadon1973'] = {'RCTS-LocosLNER-2A', 'RCTS-LocosLNER'}, ['CITEREFBody1989'] = {'Body-Railways-Vol2'}, ['CITEREFBon1969'] = {'La Morée franque'}, ['CITEREFBonebakker1997'] = template_names['Iranica'], ['CITEREFBonner2010'] = {'New Cambridge History of Islam'}, ['CITEREFBonnett2005'] = {'Bonnett Practical Rail Engineering'}, ['CITEREFBonporti1712'] = {'Bach\'s compositions (sources)'}, ['CITEREFBooth2000'] = {'Shakespeare sonnets bibliography'}, ['CITEREFBorsari1964'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFBossert1914'] = {'Schaff-Herzog'}, ['CITEREFBosworth1968'] = template_names['Cam_Hist_Iran'], ['CITEREFBosworth1975'] = template_names['Cam_Hist_Iran'], ['CITEREFBosworth1983'] = template_names['Iranica'], ['CITEREFBosworth1984'] = template_names['Iranica'], ['CITEREFBosworth1987'] = template_names['Iranica'], ['CITEREFBosworth1988'] = template_names['Iranica'], ['CITEREFBosworth1989'] = template_names['Iranica'], ['CITEREFBosworth1994'] = template_names['Iranica'], ['CITEREFBosworth1995'] = template_names['Iranica'], ['CITEREFBosworth1997'] = template_names['Iranica'], ['CITEREFBosworth1998'] = template_names['Iranica'], ['CITEREFBosworth2000'] = template_names['Iranica'], ['CITEREFBosworth2001'] = template_names['Iranica'], ['CITEREFBosworth2002'] = template_names['Iranica'], ['CITEREFBosworth2003'] = template_names['Iranica'], ['CITEREFBosworth2008'] = template_names['Iranica'], ['CITEREFBosworth2009'] = template_names['Iranica'], ['CITEREFBosworth2010'] = template_names['Iranica'], ['CITEREFBosworth2011'] = template_names['Iranica'], ['CITEREFBosworthCrane1984'] = template_names['Iranica'], ['CITEREFBottoMitchell2002'] = {'Cite ATT Broadway', 'Cite At This Theatre Broadway', 'Cite Broadway At This Theatre', 'Cite Broadway ATT'}, ['CITEREFBourbaki1987'] = {'Bourbaki Topological Vector Spaces', 'Bourbaki Topological Vector Spaces Part 1 Chapters 1–5'}, ['CITEREFBourbaki1989'] = {'Bourbaki General Topology Part I Chapters 1-4', 'Bourbaki General Topology Part II Chapters 5-10', 'Bourbaki Algebra I Chapters 1-3 Springer'}, ['CITEREFBourbaki1994'] = {'Bourbaki EHM'}, ['CITEREFBowen1928'] = {'The Life and Times of Ali ibn Isa'}, ['CITEREFBowmanCameronGarnsey2005'] = {'Cambridge Ancient History'}, ['CITEREFBoyce1983'] = template_names['Iranica'], ['CITEREFBoyce1986'] = template_names['Iranica'], ['CITEREFBoyce1989'] = template_names['Iranica'], ['CITEREFBoyce2000'] = template_names['Iranica'], ['CITEREFBoyce2009'] = template_names['Iranica'], ['CITEREFBoyd1970'] = {'Boyd-MidWales'}, ['CITEREFBoyd1975'] = {'Boyd-FR1'}, ['CITEREFBoyd1985'] = {'Boyd-NCaerns2Penrhyn'}, ['CITEREFBoyd1986'] = {'Boyd-NCaerns3Dinorwic'}, ['CITEREFBoyd1988'] = {'Boyd-SCaerns1'}, ['CITEREFBoyd1989'] = {'Boyd-SCaerns2'}, ['CITEREFBoyd1990'] = {'Boyd-NCaerns1'}, ['CITEREFBradshaw1968'] = {'Bradshaw-1910April'}, ['CITEREFBradshaw1985'] = {'Bradshaw-1922July'}, ['CITEREFBradshaw2011'] = {'Bradshaw-1895December'}, ['CITEREFBradshaw2012'] = {'Bradshaw-1850March'}, ['CITEREFBrand1968'] = {'Byzantium Confronts the West'}, ['CITEREFBrand1991'] = {'DBI', 'ODB', 'Oxford Dictionary of Byzantium'}, ['CITEREFBray2010'] = {'Bray-SDJR'}, ['CITEREFBrett2010'] = {'New Cambridge History of Islam'}, ['CITEREFBriant1985'] = template_names['Iranica'], ['CITEREFBrosius2000'] = template_names['Iranica'], ['CITEREFBrown2000'] = template_names['Iranica'], ['CITEREFBrown2008'] = {'The Cambridge History of the Byzantine Empire'}, ['CITEREFBrown2021'] = {'Cite Gaia EDR3'}, ['CITEREFBrunner1975'] = template_names['Cam_Hist_Iran'], ['CITEREFBrunner1983'] = template_names['Cam_Hist_Iran'], ['CITEREFBrunner1984'] = template_names['Iranica'], ['CITEREFBrunner1986'] = template_names['Iranica'], ['CITEREFBryan1886'] = {'Bryan (3rd edition)'}, ['CITEREFBryan1889'] = {'Bryan (3rd edition)'}, ['CITEREFBuhle1909'] = {'Bach\'s compositions (sources)'}, ['CITEREFBulliet1984'] = template_names['Iranica'], ['CITEREFBulookbashiNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFBunbury1857'] = {'DGRG'}, ['CITEREFBurant1987'] = {'Cite DCB'}, ['CITEREFBurch1911'] = {'Burch Electric Traction'}, ['CITEREFBurke1866'] = {'O\'Donnell family tree'}, ['CITEREFBurn1985'] = template_names['Cam_Hist_Iran'], ['CITEREFBurrowsWallace1999'] = {'Cite gotham'}, ['CITEREFBury1911'] = {'The Imperial Administrative System of the Ninth Century'}, ['CITEREFBusse1975'] = template_names['Cam_Hist_Iran'], ['CITEREFBusse1982'] = template_names['Iranica'], ['CITEREFButcherNicholson2018'] = template_names['ODLA'], ['CITEREFButt1995'] = template_names['Butt_Stations'], ['CITEREFBöwering1995'] = template_names['Iranica'], ['CITEREFBürgelMottahedeh1988'] = template_names['Iranica'], ----------< C >---------- ['CITEREFCIC1983'] = {'CIC1983bib'}, ['CITEREFCalifornia1988'] = {'CA-Rail Passenger Development Plan-1988'}, ['CITEREFCalmard1988'] = template_names['Iranica'], ['CITEREFCalmard1999'] = template_names['Iranica'], ['CITEREFCaltrans1984'] = {'Countrystudy'}, ['CITEREFCameronWard-PerkinsWhitby2000'] = {'Cambridge Ancient History'}, ['CITEREFCanepa2018'] = template_names['ODLA'], ['CITEREFCanny2008'] = {'O\'Donnell family tree'}, ['CITEREFCappelCutlerKazhdan1991'] = template_names['ODB'], ['CITEREFCarl_von_Prantl1879'] = {'Cite ADB'}, ['CITEREFCarlson2010'] = {'Dlmf'}, ['CITEREFCaro1974'] = {'Cite Power Broker'}, ['CITEREFCarpenter1977'] = template_names['ME-ref'], ['CITEREFCarpenter1981'] = template_names['ME-ref'], ['CITEREFCarra_de_VauxHodgson1965'] = {'EI2'}, ['CITEREFCarter2006'] = {'Carter-RailwaysMotivePowerArgentina'}, ['CITEREFCasserley1968'] = {'Casserley-joint'}, ['CITEREFCasserleyJohnston1966'] = {'Casserley-LocoGrouping3'}, ['CITEREFCasserleyJohnston1974'] = {'Casserley-LocoGrouping3', 'Casserley-LocoGrouping2', '0-7110-0554-0'}, ['CITEREFCasway1984'] = {'O\'Donnell family tree'}, ['CITEREFCavanna_Ciappina2001'] = {'DBI'}, ['CITEREFCawley2001'] = {'Medieval Lands by Charles Cawley', 'MLCC'}, ['CITEREFCawley2001'] = {'Medieval Lands by Charles Cawley'}, ['CITEREFCawley2010'] = {'MLCC'}, ['CITEREFCawley2011'] = {'MLCC'}, ['CITEREFChaléardChanson-JabeurBéranger2006'] = {'Chaléard-Le cdf en Afrique'}, ['CITEREFChambers1728'] = {'Cyclopaedia 1728'}, ['CITEREFChasiotis1975'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFChaumont1985'] = template_names['Iranica'], ['CITEREFChaumont1986'] = template_names['Iranica'], ['CITEREFChaumont1987'] = template_names['Iranica'], ['CITEREFChaumont1990'] = template_names['Iranica'], ['CITEREFChaumontSchippmann1988'] = template_names['Iranica'], ['CITEREFCheyneBlack1899'] = {'Biblica', 'Cite Biblica'}, ['CITEREFCheyneBlack1899–1903'] = {'Cite Biblica'}, ['CITEREFCheyneBlack1901'] = {'Cite Biblica'}, ['CITEREFCheyneBlack1902'] = {'Cite Biblica'}, ['CITEREFCheyneBlack1903'] = {'Cite Biblica'}, ['CITEREFChisholm1922'] = {'EB1922', 'Cite EB1922'}, ['CITEREFChittick1997'] = template_names['Iranica'], ['CITEREFChkeidze2001'] = template_names['Iranica'], ['CITEREFChoniates1984'] = {'O City of Byzantium'}, ['CITEREFChrista_Jost1999'] = template_names['NDB'], ['CITEREFChung1994'] = {'Country study'}, ['CITEREFChurchmanHurst2001'] = {'Churchman & Hurst Railways of New Zealand'}, ['CITEREFChurchman_&amp;_Hurst2001'] = {'Churchman & Hurst Railways of New Zealand'}, ['CITEREFChurella2013'] = {'Churella-PRR-1'}, ['CITEREFClementsMcMahon2008'] = {'ClementsMcMahon-GSR Locomotives'}, ['CITEREFClinker1978'] = {'Clinker-Stations'}, ['CITEREFClinker1988'] = {'Clinker-Stations'}, ['CITEREFCoates1990'] = {'Coates-Reading'}, ['CITEREFColbyWilliams1916'] = {'New International Encyclopedia', 'NIE'}, ['CITEREFColledgeWarlow2006'] = {'Colledge', 'Cite Colledge2006'}, ['CITEREFColledgeWarlow2010'] = {'Cite Colledge2010'}, ['CITEREFCollins2016'] = {'Cite Collins 2016'}, ['CITEREFConolly1998'] = {'IanAllan-PreGroup-Atlas1998'}, ['CITEREFConway1990'] = {'Conway A Course in Functional Analysis'}, ['CITEREFCosentino2008'] = {'DBI'}, ['CITEREFCoulthard-Clark2002'] = {'Australian Dictionary of Biography'}, ['CITEREFCousin1910'] = {'A Short Biographical Dictionary of English Literature', 'Cite SBDEL'}, ['CITEREFCox1967'] = {'Cox-Upper Darby'}, ['CITEREFCox2011'] = {'Cox-Dixie'}, ['CITEREFCrevier1993'] = {'Crevier 1993'}, ['CITEREFCrockett2007'] = {'Australian Dictionary of Biography'}, ['CITEREFCroke2018'] = template_names['ODLA'], ['CITEREFCrone1980'] = {'Slaves on Horses'}, ['CITEREFCronin2011'] = template_names['Iranica'], ['CITEREFCroughtonKidnerYoung1982'] = {'Croughton-PrivateStations'}, ['CITEREFCruickshanks1970'] = {'HistoryofParliament'}, ['CITEREFCudahy2002'] = {'Cudahy-Hudson'}, ['CITEREFCudahy2003'] = {'Cudahy-Subways'}, ['CITEREFCurta2006'] = {'Southeastern Europe in the Middle Ages, 500–1250'}, ----------< D >---------- ['CITEREFDBI'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFDZS2015'] = {'Croatia Yearbook 2015'}, ['CITEREFDadelsen1957'] = {'Bach\'s compositions (sources)'}, ['CITEREFDaftary1990'] = {'Daftary-The Ismailis'}, ['CITEREFDaftary2003'] = template_names['Iranica'], ['CITEREFDaftary2007'] = {'Daftary-The Ismailis'}, ['CITEREFDaftary2015'] = template_names['Iranica'], ['CITEREFDaiber1988'] = template_names['Iranica'], ['CITEREFDandamayevShahbaziLecoq1986'] = template_names['Iranica'], ['CITEREFDaniel2000'] = template_names['Iranica'], ['CITEREFDaniel2010'] = {'New Cambridge History of Islam'}, ['CITEREFDanielsDench1963'] = {'Daniels-NoMore'}, ['CITEREFDanielsDench1973'] = {'Daniels-NoMore'}, ['CITEREFDanner1975'] = template_names['Cam_Hist_Iran'], ['CITEREFDarleyCanepa2018'] = {'Oxford Dictionary of Late Antiquity'}, ['CITEREFDaryaee2009'] = template_names['Iranica'], ['CITEREFDaryaee2018'] = template_names['ODLA'], ['CITEREFDaryaeeCanepa2018'] = template_names['ODLA'], ['CITEREFDavid1961'] = {'Bach\'s compositions (sources)'}, ['CITEREFDavidson2010'] = {'HistoryofParliament'}, ['CITEREFDavidsonThrush2010'] = {'HistoryofParliament'}, ['CITEREFDavies1996'] = {'Davies-PLMLocoList'}, ['CITEREFDavies1997'] = {'Davies-NordLocoList'}, ['CITEREFDavies2001'] = {'Davies-EstLocoList3', 'Davies-ÉtatLocoList'}, ['CITEREFDavies2003'] = {'Davies-SNCFLocoList'}, ['CITEREFDaviesFirthLuckingThomas1966'] = {'RCTS-LocosGWR-10'}, ['CITEREFDavud2018'] = {'Encyclopaedia Islamica'}, ['CITEREFDavudNazerian2008'] = {'Encyclopaedia Islamica'}, ['CITEREFDe_Negri1997'] = {'DBI'}, ['CITEREFDemircan2010'] = {'TDV Encyclopedia of Islam'}, ['CITEREFDeutsch1951'] = {'Schubert\'s compositions (references)'}, ['CITEREFDeutsch1978'] = {'Schubert\'s compositions (references)'}, ['CITEREFDeutsche_Autos,_Band_2,2001'] = {'Deutsche Autos-2'}, ['CITEREFDeutsche_Autos,_Band_3,2001'] = {'Deutsche Autos-3'}, ['CITEREFDeutsche_Autos,_Band_4,2001'] = {'Deutsche Autos-4'}, ['CITEREFDeutsche_Autos,_Band_5,2001'] = {'Deutsche Autos-5'}, ['CITEREFDeutsche_Autos,_Band_6,2001'] = {'Deutsche Autos-6'}, ['CITEREFDewick2005'] = {'Dewick-Atlas'}, ['CITEREFDiamonstein-Spielvogel2011'] = {'Cite landmarks'}, ['CITEREFDickens2018'] = template_names['ODLA'], ['CITEREFDirksen1998'] = {'Bach\'s compositions (sources)'}, ['CITEREFDirksen2010'] = {'Bach\'s compositions (sources)'}, ['CITEREFDirksen2016'] = {'Bach\'s compositions (sources)'}, ['CITEREFDixmier1984'] = {'Dixmier General Topology'}, ['CITEREFDoerfer1989'] = template_names['Iranica'], ['CITEREFDoganis1930'] = {'Great Military and Naval Encyclopaedia'}, ['CITEREFDoleckiMynard2016'] = {'Dolecki Mynard Convergence Foundations Of Topology'}, ['CITEREFDolkart1998'] = {'Cite morningside'}, ['CITEREFDonner1995'] = template_names['Iranica'], ['CITEREFDonohue2003'] = {'The Buwayhid Dynasty in Iraq'}, ['CITEREFDorin1972'] = {'Dorin-North Western'}, ['CITEREFDow1962'] = {'Dow-GC2'}, ['CITEREFDow1965'] = {'Dow-GC3'}, ['CITEREFDow1985'] = {'Dow-GC1'}, ['CITEREFDowney2007'] = {'Downey-Chicago'}, ['CITEREFDrechsler2005'] = template_names['Iranica'], ['CITEREFDrummond1964'] = {'HistoryofParliament'}, ['CITEREFDrury1985'] = {'Drury Historical Guide 1985'}, ['CITEREFDrury1993'] = {'Drury-North American Steam'}, ['CITEREFDuchesne-Guillemin1994'] = template_names['Iranica'], ['CITEREFDugundji1966'] = {'Dugundji Topology'}, ['CITEREFDuke1995'] = {'Duke-Santa Fe-1'}, ['CITEREFDukeKeilty1990'] = {'Duke-RDC'}, ['CITEREFDumbarton_Oaks_Hagiography_Database'] = {'Dumbarton Oaks Hagiography Database'}, ['CITEREFDunbar1969'] = {'Dunbar-Railroads'}, ['CITEREFDuncan-Jones2010'] = {'Shakespeare sonnets bibliography'}, ['CITEREFDunlop1895'] = {'O\'Donnell family tree'}, ['CITEREFDunlop1985'] = template_names['Iranica'], ['CITEREFDunn2013'] = {'Dunn-Comeng-5'}, ['CITEREFDurand-Guédy2008'] = template_names['Iranica'], ['CITEREFDurand-Guédy2010'] = template_names['Iranica'], ['CITEREFDurand-Guédy2013'] = {'Encyclopaedia Islamica'}, ['CITEREFDurham1998'] = {'California\'s Geographic Names'}, ['CITEREFDurrant1972'] = {'Durrant-Steam Locos Eastern Europe'}, ['CITEREFDurrant1981'] = {'Durrant-Garratt-Rev'}, ['CITEREFDurrantLewisJorgensen1981'] = {'Durrant-SteamAfrica'}, ['CITEREFDömlingKohlhase1971'] = {'Bach\'s compositions (sources)'}, ['CITEREFDürr1952'] = {'Bach\'s compositions (sources)'}, ['CITEREFDürr1954'] = {'Bach\'s compositions (sources)'}, ['CITEREFDürr1987'] = {'Bach\'s compositions (sources)'}, ['CITEREFDürrJones2006'] = {'Bach\'s compositions (sources)'}, ['CITEREFDürrKobayashi1998'] = {'Bach\'s compositions (sources)'}, ['CITEREFde_Blois2000'] = template_names['Iranica'], ['CITEREFde_Planhol1987'] = template_names['Iranica'], ['CITEREFde_Planhol1988'] = template_names['Iranica'], ----------< E >---------- ['CITEREFEIr.1994'] = template_names['Iranica'], ['CITEREFEarle2018'] = {'Gymnosperm Database'}, ['CITEREFEbata2019'] = {'BDh'}, ['CITEREFEbata2020'] = {'BDh'}, ['CITEREFEbrahimKhodaverdian2018'] = {'Encyclopaedia Islamica'}, ['CITEREFEdwards1995'] = {'Edwards Functional Analysis Theory and Applications'}, ['CITEREFEichberg1976'] = {'Bach\'s compositions (sources)'}, ['CITEREFEilers1983'] = template_names ['Cam_Hist_Iran'], ['CITEREFEkbal1991'] = template_names['Iranica'], ['CITEREFEl-Hibri2010'] = {'New Cambridge History of Islam'}, ['CITEREFEldredgeHorenstein2014'] = {'Cite concrete'}, ['CITEREFElsholz1982'] = {'Schubert\'s compositions (references)'}, ['CITEREFElwell-Sutton1984'] = template_names['Iranica'], ['CITEREFEppstein1966'] = {'Bach\'s compositions (sources)'}, ['CITEREFEppstein1982'] = {'Bach\'s compositions (sources)'}, ['CITEREFEquasis'] = {'Csr', 'Cite ship register'}, ['CITEREFEuDaly2009'] = {'Complete Book of North American Railroading'}, ['CITEREFEuDalySchaferJessupBoyd2009'] = {'Complete Book of North American Railroading'}, ----------< F >---------- ['CITEREFFacella2021'] = template_names['Iranica'], ['CITEREFFang1943'] = {'Cite ECCP'}, ['CITEREFFarinella2001'] = {'DBI'}, ['CITEREFFatehi-NezhadAzarnooshNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFFatehi-nezhadRahimi2008'] = {'Encyclopaedia Islamica'}, ['CITEREFFeder1958'] = {'Bach\'s compositions (sources)'}, ['CITEREFFederal_Writers&#039;_Project1939'] = {'Cite fednyc'}, ['CITEREFFelixMadelung1995'] = template_names['Iranica'], ['CITEREFFernandez1983'] = {'Fernandez1983'}, ['CITEREFFerneyhough1980'] = {'Ferneyhough-LMR'}, ['CITEREFFesharaki2015'] = {'Encyclopaedia Islamica'}, ['CITEREFFiaccadori1991'] = template_names['ODB'], ['CITEREFFikratUmar2008'] = template_names['Iranica'], ['CITEREFFine1991'] = {'The Early Medieval Balkans'}, ['CITEREFFine1994'] = {'The Late Medieval Balkans'}, ['CITEREFFletcher,_Great_Tank_Scandal'] = {'Book-Fletcher-Great Tank Scandal'}, ['CITEREFFletcher,_Universal_Tank'] = {'Book-Fletcher-Universal Tank'}, ['CITEREFFloor1992'] = template_names['Iranica'], ['CITEREFFloor2005'] = template_names['Iranica'], ['CITEREFFlora_of_North_America'] = {'EFloras'}, ['CITEREFFlora_of_North_America2009'] = {'EFloras'}, ['CITEREFFluckMarshallWilson1996'] = {'FluMarWil-LocRailCR'}, ['CITEREFFonstad1991'] = template_names['ME-ref'], ['CITEREFForkelTerry1920'] = {'Bach\'s compositions (sources)'}, ['CITEREFFornaçon,_Siegfried1957'] = template_names['NDB'], ['CITEREFForrestal1999'] = {'Forrestal-Wineries'}, ['CITEREFForster1990'] = {'Cite DCB'}, ['CITEREFFoss1991'] = template_names['ODB'], ['CITEREFFoster1971'] = template_names['ME-ref'], ['CITEREFFoster1996'] = {'Foster-Field Guide'}, ['CITEREFFrailey2010'] = {'Frailey-Twilight'}, ['CITEREFFranke1994'] = {'Cite Cambridge History of China'}, ['CITEREFFranz_Schnorr_von_Carolsfeld1883'] = {'Cite ADB'}, ['CITEREFFriedrich_Wilhelm_Bautz1975'] = {'BBKL'}, ['CITEREFFriedrich_Wilhelm_Bautz1990'] = {'BBKL'}, ['CITEREFFry1964'] = {'RCTS-LocosLNER-7', 'RCTS-LocosLNER'}, ['CITEREFFry1966'] = {'RCTS-LocosLNER-5', 'RCTS-LocosLNER'}, ['CITEREFFrye1975'] = template_names['Cam_Hist_Iran'], ['CITEREFFrye1983'] = template_names['Cam_Hist_Iran'], ['CITEREFFrye2004'] = template_names['Iranica'], ['CITEREFFubini2012'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFFudenbergTirole1991'] = {'Cite Fudenberg Tirole 1991'}, ['CITEREFFultonHarris1991'] = {'Fulton-Harris'}, ----------< G >---------- ['CITEREFGarakaniBrown2013'] = {'Encyclopaedia Islamica'}, ['CITEREFGardner2005'] = {'MSW3 Microbiotheria'}, ['CITEREFGardoni2015'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFGareyJohnson1979'] = {'Garey-Johnson'}, ['CITEREFGarsoian2000'] = template_names['Iranica'], ['CITEREFGarsoian2004'] = template_names['Iranica'], ['CITEREFGarsoian2005'] = template_names['Iranica'], ['CITEREFGarth2003'] = template_names['ME-ref'], ['CITEREFGazette34205'] = {'London Gazette'}, ['CITEREFGazette34339'] = {'London Gazette'}, ['CITEREFGazette34390'] = {'London Gazette'}, ['CITEREFGazette34427'] = {'London Gazette'}, ['CITEREFGazette34558'] = {'London Gazette'}, ['CITEREFGazette34870'] = {'London Gazette'}, ['CITEREFGazette34978'] = {'London Gazette'}, ['CITEREFGazette34989'] = {'London Gazette'}, ['CITEREFGazette35037'] = {'London Gazette'}, ['CITEREFGazette35107'] = {'London Gazette'}, ['CITEREFGazette35134'] = {'London Gazette'}, ['CITEREFGazette35284'] = {'London Gazette'}, ['CITEREFGazette37560'] = {'London Gazette'}, ['CITEREFGazette37590'] = {'London Gazette'}, ['CITEREFGazette37598'] = {'London Gazette'}, ['CITEREFGazette37610'] = {'London Gazette'}, ['CITEREFGazette38020'] = {'London Gazette'}, ['CITEREFGazette38611'] = {'London Gazette'}, ['CITEREFGeanakoplos1959'] = {'Emperor Michael Palaeologus and the West'}, ['CITEREFGeorg_von_Dadelsen1953'] = template_names['NDB'], ['CITEREFGhanoonparvar1989'] = template_names['Iranica'], ['CITEREFGhereghlou2009'] = template_names['Iranica'], ['CITEREFGhereghlou2016'] = template_names['Iranica'], ['CITEREFGhulamiyan2015'] = template_names['Iranica'], ['CITEREFGhulamiyan2015'] = {'Encyclopaedia Islamica'}, ['CITEREFGiannasi1975'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFGibb1923'] = {'The Arab Conquests in Central Asia'}, ['CITEREFGignoux1983'] = template_names['Iranica'], ['CITEREFGignoux1994'] = template_names['Iranica'], ['CITEREFGil1997'] = {'A History of Palestine, 634-1099', 'A History of Palestine, 634–1099'}, ['CITEREFGillham2001'] = {'Gillham-Waterloo-City'}, ['CITEREFGilliland1969'] = {'Gilliland'}, ['CITEREFGilliland1994'] = {'Pop Chronicles 40s'}, ['CITEREFGilliverMarshallWeiner2006'] = template_names['ME-ref'], ['CITEREFGilmanPeckColby1905'] = {'Cite NIE', 'New International Encyclopedia', 'NIE'}, ['CITEREFGilmanPeckColby1916'] = {'New International Encyclopedia', 'NIE'}, ['CITEREFGiunashvili2016'] = template_names['Iranica'], ['CITEREFGleaves1921'] = {'Gleaves'}, ['CITEREFGlischinski1997'] = {'Glischinski-Santa Fe'}, ['CITEREFGlöckner1983'] = {'Bach\'s compositions (sources)'}, ['CITEREFGoldberg1981'] = {'Goldberg-Amtrak'}, ['CITEREFGordon2001'] = {'Gordon-The Breaking of a Thousand Swords'}, ['CITEREFGraham1974'] = {'Cite DCB'}, ['CITEREFGrant1994'] = {'Grant-Death'}, ['CITEREFGrant2010'] = {'Grant-Twilight'}, ['CITEREFGrant2017'] = {'Grant-RailCo'}, ['CITEREFGrassi2018'] = template_names['Iranica'], ['CITEREFGray1986'] = template_names['Cam_Hist_Iran'], ['CITEREFGreenlaw2007'] = {'Greenlaw-Via Rail'}, ['CITEREFGregory1991'] = template_names['ODB'], ['CITEREFGregoryŠevčenko1991'] = template_names['ODB'], ['CITEREFGrete_Schemann1957'] = template_names['NDB'], ['CITEREFGrey2002'] = {'Australian Dictionary of Biography'}, ['CITEREFGrierson1903'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'}, ['CITEREFGrierson1908'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'}, ['CITEREFGrierson1919'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'}, ['CITEREFGrierson1967'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'}, ['CITEREFGriffith1991'] = template_names['ODB'], ['CITEREFGriffithsSmith1999'] = {'Griffiths-Sheds1'}, ['CITEREFGriffithsSmith2000'] = {'Griffiths-Sheds2'}, ['CITEREFGrothendieck1955'] = {'Grothendieck Produits Tensoriels Topologiques et Espaces Nucléaires'}, ['CITEREFGrothendieck1973'] = {'Grothendieck Topological Vector Spaces'}, ['CITEREFGrothendieckDieudonné1960'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1961'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1963'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1964'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1965'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1966'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1967'] = {'EGA'}, ['CITEREFGrothendieckDieudonné1971'] = {'EGA'}, ['CITEREFGroves2005'] = {'MSW3 Primates', 'MSW3 Groves'}, ['CITEREFGrubb2005'] = {'MSW3 Artiodactyla'}, ['CITEREFGuilland1967'] = {'Recherches sur les institutions byzantines'}, ['CITEREFGulino2005'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFGunzburg1984'] = {'Gunzburg-History WAGR Steam'}, ['CITEREFGurneyNabavi1993'] = template_names['Iranica'], ['CITEREFGutas1987'] = template_names['Iranica'], ['CITEREFGvakharia2001'] = template_names['Iranica'], ['CITEREFGüner1997'] = {'TDV Encyclopedia of Islam'}, ----------< H >---------- ['CITEREFHaarer2018'] = template_names['ODLA'], ['CITEREFHabibi2021'] = template_names['Iranica'], ['CITEREFHadidi2000'] = template_names['Iranica'], ['CITEREFHaji2008'] = template_names['Iranica'], ['CITEREFHaldon1999'] = {'Warfare, State and Society in the Byzantine World, 565–1204'}, ['CITEREFHalliday1985'] = {'Halliday-AustWineCompend'}, ['CITEREFHalliday2008'] = {'Halliday-JHWAtlasAust2008'}, ['CITEREFHalliday2009'] = {'Halliday-AustWineEncyc'}, ['CITEREFHalm1998'] = template_names['Iranica'], ['CITEREFHalpenny1990'] = {'Canadabio'}, ['CITEREFHambly1990'] = template_names['Cam_Hist_Iran'], ['CITEREFHambly1991'] = template_names['Cam_Hist_Iran'], ['CITEREFHammondAnderson1993'] = template_names['ME-ref'], ['CITEREFHammondScull1995'] = template_names['ME-ref'], ['CITEREFHammondScull2005'] = template_names['ME-ref'], ['CITEREFHammondScull2006'] = template_names['ME-ref'], ['CITEREFHanaway1988'] = template_names['Iranica'], ['CITEREFHanaway1989'] = template_names['Iranica'], ['CITEREFHanawayLewisohn2004'] = template_names['Iranica'], ['CITEREFHans_Heinrich_Borcherdt1955'] = template_names['NDB'], ['CITEREFHans_Knudsen1972'] = template_names['NDB'], ['CITEREFHansen1988'] = {'Book-Hansen-US Nuclear Weapons'}, ['CITEREFHansman1991'] = template_names['Iranica'], ['CITEREFHartshorne1977'] = {'Hartshorne AG'}, ['CITEREFHassanpour1989'] = template_names['Iranica'], ['CITEREFHassanpour1995'] = template_names['Iranica'], ['CITEREFHasumi2003'] = {'Hasumi-shiguehiko-ozu-2003'}, ['CITEREFHaswell-Smith2004'] = {'Haswell-Smith'}, ['CITEREFHaugic1908'] = {'Schaff-Herzog'}, ['CITEREFHawting1987'] = {'The First Dynasty of Islam'}, ['CITEREFHawting2000'] = {'The First Dynasty of Islam'}, ['CITEREFHaynes2011'] = {'RubberBible92nd'}, ['CITEREFHeinichen1728'] = {'Bach\'s compositions (sources)'}, ['CITEREFHeinrich_Welti1890'] = {'Cite ADB'}, ['CITEREFHelgen2005'] = {'MSW3 Scandentia'}, ['CITEREFHellmann1965'] = {'Bach\'s compositions (sources)'}, ['CITEREFHenrici1725'] = {'Bach\'s compositions (sources)'}, ['CITEREFHenryOrsmond1928'] = {'Raiatea family tree'}, ['CITEREFHermann_Palm1876'] = {'Cite ADB'}, ['CITEREFHerr2000'] = {'Herr-LN'}, ['CITEREFHeschel2007'] = {'Encyclopaedia Judaica', 'Cite EJ', 'Cite Encyclopaedia Judaica'}, ['CITEREFHewsen1988'] = template_names['Iranica'], ['CITEREFHidyHidyScottHofsummer2004'] = {'Hidy-Great Northern'}, ['CITEREFHildHellenkemper1990'] = {'Tabula Imperii Byzantini'}, ['CITEREFHildHellenkemper1994'] = {'Tabula Imperii Byzantini'}, ['CITEREFHildRestle1981'] = {'Tabula Imperii Byzantini'}, ['CITEREFHillenbrand1986'] = template_names['Iranica'], ['CITEREFHills,_Power_from_Steam'] = {'Book-Hills-Power from Steam'}, ['CITEREFHills1989'] = {'Book-Hills-Power from Steam'}, ['CITEREFHilmarJestremski2004'] = {'Schubert\'s compositions (references)'}, ['CITEREFHilton1980'] = {'Hilton-Amtrak'}, ['CITEREFHilton1990'] = {'Hilton Narrow Gauge'}, ['CITEREFHiltonDue1960'] = {'Hilton-Interurban'}, ['CITEREFHinton1986'] = {'HistoryofParliament'}, ['CITEREFHirsch1906'] = {'Cite JE1906'}, ['CITEREFHistoric_Environment_Scotland'] = {'Canmore'}, ['CITEREFHistoric_Environment_Scotland1972'] = {'Historic Environment Scotland'}, ['CITEREFHistoric_Environment_Scotland1976'] = {'Historic Environment Scotland'}, ['CITEREFHistoric_Environment_Scotland2020'] = {'Historic Environment Scotland'}, ['CITEREFHistoric_Environment_Scotland:_Rusco_Tower2020'] = {'Historic Environment Scotland'}, ['CITEREFHistoric_Environment_ScotlandLB33744'] = {'Historic Environment Scotland'}, ['CITEREFHistoric_Environment_ScotlandLB50114'] = {'Historic Environment Scotland'}, ['CITEREFHob.'] = {'Schubert\'s compositions (references)'}, ['CITEREFHoffmanSmith2005'] = {'MSW3 Lagomorpha'}, ['CITEREFHoffmann1738'] = {'Bach\'s compositions (sources)'}, ['CITEREFHofmann1983'] = {'Bach\'s compositions (sources)'}, ['CITEREFHofmann1987'] = {'Bach\'s compositions (sources)'}, ['CITEREFHofmann1999'] = {'Bach\'s compositions (sources)'}, ['CITEREFHolland1972'] = {'Holland-Vol 2'}, ['CITEREFHolland1988'] = {'Cite DCB'}, ['CITEREFHolland2001'] = {'Holland-Classic'}, ['CITEREFHollingsworth1980'] = {'Hollingsworth-Atlas-Rigby'}, ['CITEREFHollingsworth1991'] = template_names['ODB'], ['CITEREFHollingsworthCutler1991'] = template_names['ODB'], ['CITEREFHolmgren2003'] = {'EFloras'}, ['CITEREFHoltBiddle1986'] = {'Holt-NorthWest'}, ['CITEREFHolton1989'] = {'Holton-Reading-1'}, ['CITEREFHonigmann1935'] = {'Byzance et les Arabes'}, ['CITEREFHopley1983'] = {'Australian Dictionary of Biography'}, ['CITEREFHort1911'] = {'DCBL'}, ['CITEREFHorváth1966'] = {'Horváth Topological Vector Spaces and Distributions Volume 1 1966'}, ['CITEREFHosseini2017'] = template_names['Iranica'], ['CITEREFHounshell1984'] = {'Hounshell1984'}, ['CITEREFHudson1997'] = {'Country study'}, ['CITEREFHughes1990'] = {'Hughes-IndianLocos1'}, ['CITEREFHughes1992'] = {'Hughes-IndianLocos2'}, ['CITEREFHughes1994'] = {'Hughes-IndianLocos3'}, ['CITEREFHughes1996'] = {'Hughes-IndianLocos4'}, ['CITEREFHummel1943'] = {'Cite ECCP'}, ['CITEREFHumphreys2018'] = template_names['ODLA'], ['CITEREFHunter-Crawley2018'] = template_names['ODLA'], ['CITEREFHunter2008'] = {'Country study'}, ['CITEREFHutter2009'] = template_names['Iranica'], ['CITEREFHutterer2005'] = {'MSW3 Soricomorpha'}, ['CITEREFHütter2012'] = {'Hütter-50bis53'}, ['CITEREFHütter2015'] = {'Hütter-54bis59'}, ['CITEREFHütter2021'] = {'Hütter-60bis91'}, ----------< I >---------- ['CITEREFIbn_Khallikan1843'] = {'Ibn Khallikan\'s Biographical Dictionary'}, ['CITEREFImber2002'] = {'Imber-The Ottoman Empire, 1300–1650'}, ['CITEREFInalcik1989'] = {'Setton-A History of the Crusades'}, ['CITEREFIranica:_Bahrām'] = template_names['Iranica'], ['CITEREFIrvine2006'] = template_names['Iranica'], ['CITEREFIshino1998'] = {'Teishajo'}, ['CITEREFIshkevariNejad2008'] = {'Encyclopaedia Islamica'}, ['CITEREFIvey1919'] = {'Ivey-Marquette'}, ----------< J >---------- ['CITEREFJackson1908'] = {'Schaff-Herzog'}, ['CITEREFJackson1988'] = template_names['Iranica'], ['CITEREFJackson1989'] = template_names['Iranica'], ['CITEREFJackson1995'] = {'Cite enc-nyc'}, ['CITEREFJackson2010'] = {'Cite enc-nyc2'}, ['CITEREFJacksonMelville2001'] = template_names['Iranica'], ['CITEREFJacobs1904'] = {'Cite Jewish Encyclopedia'}, ['CITEREFJarchow1981'] = {'Jarchow Locally Convex Spaces'}, ['CITEREFJavadiBurrill1988'] = template_names['Iranica'], ['CITEREFJohn_O&#039;Donovan1856'] = {'Cite AFM'}, ['CITEREFJohnstonWelshSchafer2001'] = {'Johnston-Streamliner'}, ['CITEREFJones2011'] = {'Cite EPD'}, ['CITEREFJordan2002'] = {'Jordan-WineWABest'}, ['CITEREFJoshi1983'] = {'Joshi Introduction to General Topology'}, ['CITEREFJoslen2003'] = {'Joslen-OOB'}, ['CITEREFJowett1867'] = {'DGRBM', 'Cite DGRBM'}, ['CITEREFJowett1989'] = {'Jowett-Atlas', 'Carnarvonshire Railway'}, ['CITEREFJowett2000'] = {'Jowett-Nationalised'}, ['CITEREFJullien2018'] = template_names['ODLA'], ['CITEREFJupp1986'] = {'HistoryofParliament'}, ----------< K >---------- ['CITEREFK.'] = {'Schubert\'s compositions (references)'}, ['CITEREFKadinsky2016'] = {'Cite Hidden Waters NYC'}, ['CITEREFKaegi1991'] = template_names['ODB'], ['CITEREFKamaly2006'] = template_names['Iranica'], ['CITEREFKamp1981'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFKang2008'] = {'Country study'}, ['CITEREFKaramatiMelvin-Koushki2021'] = template_names['Iranica'], ['CITEREFKaramatiMelvin-Koushki2021'] = {'Encyclopaedia Islamica'}, ['CITEREFKarimi-Hakkak1997'] = template_names['Iranica'], ['CITEREFKarimiMaghsoodi2013'] = {'Encyclopaedia Islamica'}, ['CITEREFKarl_Frohnmeyer1953'] = template_names['NDB'], ['CITEREFKarnow1989'] = {'Cite-Karnow'}, ['CITEREFKasheff2001'] = template_names['Iranica'], ['CITEREFKayvaniGholami2008'] = {'Encyclopaedia Islamica'}, ['CITEREFKazhdan1991'] = template_names['ODB'], ['CITEREFKazhdanCutler1991'] = template_names['ODB'], ['CITEREFKazhdanJeffreys1991'] = template_names['ODB'], ['CITEREFKazhdanŠevčenko1991'] = template_names['ODB'], ['CITEREFKeall1987'] = template_names['Iranica'], ['CITEREFKeefe2006'] = {'Schubert\'s compositions (references)'}, ['CITEREFKeightley1999'] = {'Cite Cambridge History of China'}, ['CITEREFKeller1937'] = {'Bach\'s compositions (sources)'}, ['CITEREFKelly1988'] = {'Cite GEIL'}, ['CITEREFKellyBurrage1920'] = {'Cite AMB1920'}, ['CITEREFKennedy1998'] = {'The Cambridge History of Egypt', 'Cite Kennedy 1998', 'Cambridge History of Egypt'}, ['CITEREFKennedy2001'] = {'Kennedy-The Armies of the Caliphs'}, ['CITEREFKennedy2004'] = {'The Prophet and the Age of the Caliphates'}, ['CITEREFKennedy2007'] = {'Kennedy-The Great Arab Conquests'}, ['CITEREFKennedy2016'] = {'The Prophet and the Age of the Caliphates'}, ['CITEREFKenyon2011'] = {'Bach\'s compositions (sources)'}, ['CITEREFKerrigan1995'] = {'Shakespeare sonnets bibliography'}, ['CITEREFKettenhofen1995'] = template_names['Iranica'], ['CITEREFKettenhofen2001'] = template_names['Iranica'], ['CITEREFKettenhofenBournoutianHewsen1998'] = template_names['Iranica'], ['CITEREFKhaleelulla1982'] = {'Khaleelulla Counterexamples in Topological Vector Spaces'}, ['CITEREFKhaleghi-Motlagh1999'] = template_names['Iranica'], ['CITEREFKhaleghi-Motlagh2001'] = template_names['Iranica'], ['CITEREFKhan2012'] = {'Cite Banglapedia'}, ['CITEREFKhatibiNegahban2013'] = {'Encyclopaedia Islamica'}, ['CITEREFKim1994'] = {'Country study'}, ['CITEREFKirnberger1774'] = {'Bach\'s compositions (sources)'}, ['CITEREFKirnberger1780'] = {'Bach\'s compositions (sources)'}, ['CITEREFKlein2006'] = {'Klein-UP-2'}, ['CITEREFKlíma1988'] = template_names['Iranica'], ['CITEREFKobayashi1978'] = {'Bach\'s compositions (sources)'}, ['CITEREFKoderHild1976'] = {'Tabula Imperii Byzantini'}, ['CITEREFKoderSoustalKoder1998'] = {'Tabula Imperii Byzantini'}, ['CITEREFKoeppel2015'] = {'Cite citygrid'}, ['CITEREFKofos1977'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFKohler1902'] = {'Cite Jewish Encyclopedia'}, ['CITEREFKolde1914'] = {'Schaff-Herzog'}, ['CITEREFKoliopoulos1978'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFKolmogorovFomin1957'] = {'Kolmogorov Fomin Elements of the Theory of Functions and Functional Analysis'}, ['CITEREFKonrad_Ameln1985'] = template_names['NDB'], ['CITEREFKoska2011'] = {'Bach\'s compositions (sources)'}, ['CITEREFKratville1962'] = {'Kratville-SSL'}, ['CITEREFKretzschmar1910'] = {'Bach\'s compositions (sources)'}, ['CITEREFKube2009'] = {'Schubert\'s compositions (references)'}, ['CITEREFKurz1983'] = template_names['Cam_Hist_Iran'], ['CITEREFKuznik2008'] = {'Bach\'s compositions (sources)'}, ['CITEREFKöthe1969'] = {'Köthe Topological Vector Spaces I'}, ['CITEREFKöthe1979'] = {'Köthe Topological Vector Spaces II'}, ['CITEREFKöthe1983'] = {'Köthe Topological Vector Spaces I'}, ['CITEREFKülzer2008'] = {'Tabula Imperii Byzantini'}, ['CITEREFKüçükaşcı2001'] = {'TDV Encyclopedia of Islam'}, ----------< L >---------- ['CITEREFLa_Porta2018'] = template_names['ODLA'], ['CITEREFLacourcière1974'] = {'Cite DCB'}, ['CITEREFLadefogedMaddieson1996'] = {'SOWL'}, ['CITEREFLandau-Tasseron2010'] = {'New Cambridge History of Islam'}, ['CITEREFLandauCondit1996'] = {'Cite nysky'}, ['CITEREFLandmann1907'] = {'Bach\'s compositions (sources)'}, ['CITEREFLang1983'] = template_names['Cam_Hist_Iran'], ['CITEREFLangaroodiCooper2008'] = {'Encyclopaedia Islamica'}, ['CITEREFLangaroodiCooper2015'] = template_names['Iranica'], ['CITEREFLangaroodiCooper2015'] = {'Encyclopaedia Islamica'}, ['CITEREFLangaroodiNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFLangaroodiNegahban2015'] = template_names['Iranica'], ['CITEREFLangaroodiNegahban2015'] = {'Encyclopaedia Islamica'}, ['CITEREFLangaroudi2001'] = template_names['Iranica'], ['CITEREFLatham1982–2021'] = template_names['Iranica'], ['CITEREFLazard1975'] = template_names['Cam_Hist_Iran'], ['CITEREFLaërtius1925'] = {'Cite Lives of the Eminent Philosophers', 'Cite LotEP'}, ['CITEREFLeCoq1986'] = template_names['Iranica'], ['CITEREFLe_Quien1740'] = {'Oriens Christianus'}, ['CITEREFLe_Strange1900'] = {'Baghdad During the Abbasid Caliphate'}, ['CITEREFLe_Strange1905'] = {'Lands of the Eastern Caliphate'}, ['CITEREFLe_Strange1922'] = {'Baghdad During the Abbasid Caliphate'}, ['CITEREFLeblanc1979'] = {'Cite DCB'}, ['CITEREFLee1903'] = {'Cite DNBIE'}, ['CITEREFLee2018'] = template_names['ODLA'], ['CITEREFLeisingerWollny1993'] = {'Bach\'s compositions (sources)'}, ['CITEREFLerner1988'] = template_names['Iranica'], ['CITEREFLev1999'] = {'Saladin in Egypt'}, ['CITEREFLevitan2001'] = {'Springer'}, ['CITEREFLewin1925'] = {'Lewin-EarlyRail'}, ['CITEREFLewis1969'] = {'Setton-A History of the Crusades'}, ['CITEREFLewis1986'] = {'Lewis-Shortline-1986'}, ['CITEREFLewis1991'] = {'Lewis-Shortline-1991'}, ['CITEREFLewis1996'] = {'Lewis-Shortline-1996'}, ['CITEREFLewis2001'] = template_names['Iranica'], ['CITEREFLi2002'] = {'Cite Cambridge History of China'}, ['CITEREFLiederNet_Archive'] = {'Schubert\'s compositions (references)'}, ['CITEREFLieu1997'] = template_names['Iranica'], ['CITEREFLighthouses_of_Australia_Inc'] = {'Cite loa'}, ['CITEREFLind1986'] = {'Lind-Limiteds'}, ['CITEREFLittle1974'] = {'Cite DCB'}, ['CITEREFLongnon1969'] = {'Setton-A History of the Crusades'}, ['CITEREFLosensky2003'] = template_names['Iranica'], ['CITEREFLoverance2018'] = template_names['ODLA'], ['CITEREFLukonin1983'] = {'Cambridge History of Iran'}, ['CITEREFLurje2010'] = template_names['Iranica'], ['CITEREFLuttrell1975'] = {'Setton-A History of the Crusades'}, ['CITEREFLuttrell1987'] = {'DBI'}, ['CITEREFLynch2004'] = {'Lynch-Penn Central'}, ['CITEREFLynch2005'] = {'Lynch-New Haven passenger'}, ['CITEREFLynch2018'] = template_names['ODLA'], ['CITEREFLéger1990'] = {'Cite DCB'}, ['CITEREFle_Fleming1953'] = {'RCTS-LocosGWR-8'}, ['CITEREFle_Fleming1960'] = {'RCTS-LocosGWR-8'}, ----------< M >---------- ['CITEREFMacDermot1927'] = {'Infobox GWR'}, ['CITEREFMacDermot1931'] = {'Infobox GWR'}, ['CITEREFMacEoin1988'] = template_names['Iranica'], ['CITEREFMacKenzie1992'] = template_names['Iranica'], ['CITEREFMadelung1975'] = template_names['Cam_Hist_Iran'], ['CITEREFMadelung1978'] = {'EI2'}, ['CITEREFMadelung1983'] = template_names['Iranica'], ['CITEREFMadelung1984'] = template_names['Iranica'], ['CITEREFMadelung1988'] = template_names['Iranica'], ['CITEREFMadelung1993'] = template_names['Iranica'], ['CITEREFMadelung2003'] = template_names['Iranica'], ['CITEREFMadelungFelix1995'] = template_names['Iranica'], ['CITEREFMaeda2009'] = template_names['Iranica'], ['CITEREFMagdalino2002'] = {'The Empire of Manuel I Komnenos'}, ['CITEREFMaiken1989'] = {'Maiken-Night Trains'}, ['CITEREFMailer2004'] = {'Mailer-Omaha Road'}, ['CITEREFMajidiNegahban'] = {'Encyclopaedia Islamica'}, ['CITEREFMalandra2009'] = template_names['Iranica'], ['CITEREFManfred_Knedlik2007'] = {'BBKL'}, ['CITEREFMarshak1994'] = template_names['Iranica'], ['CITEREFMarshak2002'] = template_names['Iranica'], ['CITEREFMarshall1823'] = {'Cite RNB1823'}, ['CITEREFMarshall1824'] = {'Cite RNB1823'}, ['CITEREFMarshall1825'] = {'Cite RNB1823'}, ['CITEREFMarshall1827'] = {'Cite RNB1823'}, ['CITEREFMarshall1828'] = {'Cite RNB1823'}, ['CITEREFMarshall1829'] = {'Cite RNB1823'}, ['CITEREFMarshall1830'] = {'Cite RNB1823'}, ['CITEREFMarshall1831'] = {'Cite RNB1823'}, ['CITEREFMarshall1832'] = {'Cite RNB1823'}, ['CITEREFMarshall1833'] = {'Cite RNB1823'}, ['CITEREFMarshall1835'] = {'Cite RNB1823'}, ['CITEREFMarshall1972'] = {'Lancashire & Yorkshire Railway 3'}, ['CITEREFMarshall2001'] = {'Marshall-INGSR'}, ['CITEREFMartin_Persch1992'] = {'BBKL'}, ['CITEREFMartin_Persch1993'] = {'BBKL'}, ['CITEREFMartin_Persch1996'] = {'BBKL'}, ['CITEREFMartindale1980'] = {'Prosopography of the Later Roman Empire', 'PLRE'}, ['CITEREFMartindale1992'] = {'Prosopography of the Later Roman Empire', 'PLRE'}, ['CITEREFMartindaleJonesMorris1971'] = {'Prosopography of the Later Roman Empire', 'PLRE'}, ['CITEREFMasoud_Jalali-Moqaddam2015'] = {'Encyclopaedia Islamica'}, ['CITEREFMatini1987'] = template_names['Iranica'], ['CITEREFMatthee2008'] = template_names['Iranica'], ['CITEREFMatthee2015'] = template_names['Iranica'], ['CITEREFMaul2005'] = {'Bach\'s compositions (sources)'}, ['CITEREFMayGray2006'] = {'MayGray-WAGRPassCar'}, ['CITEREFMazzaoui2002'] = template_names['Iranica'], ['CITEREFMcArthurMcArthur2003'] = {'Cite ogn', 'Cite Oregon Geographic Names'}, ['CITEREFMcCaffrey1990'] = template_names['Iranica'], ['CITEREFMcCorduck2004'] = {'McCorduck 2004'}, ['CITEREFMcCurdyRogers1902'] = {'Cite Jewish Encyclopedia'}, ['CITEREFMcDonnell2015'] = {'McDonnell-Locomotives-2nd'}, ['CITEREFMcGhee2008'] = {'Cite McGhee 2008'}, ['CITEREFMeiningen1704'] = {'Bach\'s compositions (sources)'}, ['CITEREFMeints1992'] = {'Meints-Companies'}, ['CITEREFMeints2005'] = {'Meints-Lines'}, ['CITEREFMelamed1988'] = {'Bach\'s compositions (sources)'}, ['CITEREFMelamed1995'] = {'Bach\'s compositions (sources)'}, ['CITEREFMelville1997'] = template_names['Iranica'], ['CITEREFMelville2003'] = template_names['Iranica'], ['CITEREFMennell1892'] = {'Dictionary of Australasian Biography'}, ['CITEREFMetcalfe2009'] = {'The Muslims of Medieval Italy'}, ['CITEREFMiddleton1961'] = {'Middleton-Interurban'}, ['CITEREFMiddleton2001'] = {'Middleton-Electrified-2nd'}, ['CITEREFMiddleton2002'] = {'Middleton-PRR-Under-Wire'}, ['CITEREFMiddletonSmerkDiehl2007'] = {'Encyclopedia of North American Railroads'}, ['CITEREFMiles1975'] = template_names['Cam_Hist_Iran'], ['CITEREFMillar2011'] = {'NZR Steam Locomotive'}, ['CITEREFMiller'] = {'Encyclopaedia Islamica'}, ['CITEREFMiller1908'] = {'The Latins in the Levant', 'Latins in the Levant'}, ['CITEREFMiller1921'] = {'Essays on the Latin Orient'}, ['CITEREFMinnich2008'] = {'Country study'}, ['CITEREFMiramar_Ship_Index'] = {'Csr', 'Cite ship register'}, ['CITEREFMitchell1965'] = {'Mitchell TOC'}, ['CITEREFMittermeierKonstantHawkinsLouis2006'] = {'LoM2'}, ['CITEREFMittermeierLouisRichardsonSchwitzer2010'] = {'LoM3'}, ['CITEREFMittermeierTattersallKonstantMeyers1994'] = {'LoM1'}, ['CITEREFMoore1875'] = {'Cite CEM'}, ['CITEREFMorana1993'] = {'Bach\'s compositions (sources)'}, ['CITEREFMorony2009'] = template_names['Iranica'], ['CITEREFMoschonas1975'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFMottahedeh1975'] = template_names['Cam_Hist_Iran'], ['CITEREFMozartHaydnHaydn2008'] = {'Schubert\'s compositions (references)'}, ['CITEREFMunkres1974'] = {'Munkres Topology'}, ['CITEREFMunkres2000'] = {'Munkres Topology'}, ['CITEREFMurray2006'] = {'Murray-Illinois Central'}, ['CITEREFMusserCarleton2005'] = {'MSW3 Muroidea'}, ['CITEREFMüller,_Hans-Christian1966'] = template_names['NDB'], ['CITEREFMyersWang2002'] = {'Cite Cambridge History of China'}, ----------< N >---------- ['CITEREFNSA_II,_15'] = {'Schubert\'s compositions (references)'}, ['CITEREFNSA_scores'] = {'Schubert\'s compositions (references)'}, ['CITEREFNSA_website'] = {'Schubert\'s compositions (references)'}, ['CITEREFNagel1990'] = template_names['Iranica'], ['CITEREFNariciBeckenstein2011'] = {'Narici Beckenstein Topological Vector Spaces'}, ['CITEREFNavāʾī1988'] = template_names['Iranica'], ['CITEREFNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFNersessian2018'] = template_names['ODLA'], ['CITEREFNetzer1998'] = template_names['Iranica'], ['CITEREFNetzer2007'] = template_names['Iranica'], ['CITEREFNeukirch1999'] = {'Neukirch ANT'}, ['CITEREFNeukirchSchmidtWingberg2000'] = {'Neukirch et al. CNF'}, ['CITEREFNew_York_City_Landmarks_Preservation_CommissionDolkartPostal2009'] = {'Cite nycland'}, ['CITEREFNewbould1999'] = {'Schubert\'s compositions (references)'}, ['CITEREFNewman1994'] = template_names['Iranica'], ['CITEREFNicholsonCanepaDaryaee2018'] = template_names['ODLA'], ['CITEREFNicol1988'] = {'Byzantium and Venice: A Study in Diplomatic and Cultural Relations'}, ['CITEREFNicol1992'] = {'The Immortal Emperor: The Life and Legend of Constantine Palaiologos, Last Emperor of the Romans'}, ['CITEREFNicol1993'] = {'The Last Centuries of Byzantium, 1261–1453', 'The Last Centuries of Byzantium'}, ['CITEREFNock1974'] = {'Nock-EustonGlasgow'}, ----------< O >---------- ['CITEREFO&#039;Byrne1849'] = {'Cite NBD1849'}, ['CITEREFO&#039;ConnorRobertson'] = {'MacTutor Biography', 'MacTutor'}, ['CITEREFO&#039;ConnorRobertson1996'] = {'MacTutor Biography', 'MacTutor'}, ['CITEREFO&#039;ConnorRobertson2000'] = {'MacTutor Biography', 'MacTutor'}, ['CITEREFO&#039;ConnorRobertson2004'] = {'MacTutor Biography', 'MacTutor'}, ['CITEREFO&#039;Donoghue1897'] = {'Cite DNB'}, ['CITEREFODB'] = template_names['ODB'], ['CITEREFODLA'] = template_names['ODLA'], ['CITEREFOberling1984'] = template_names['Iranica'], ['CITEREFOberling2008'] = template_names['Iranica'], ['CITEREFOberling2010'] = template_names['Iranica'], ['CITEREFOdisheli2018'] = template_names['ODLA'], ['CITEREFOfficial_Guide_of_the_Railways1950'] = {'Official Guide of the Railways'}, ['CITEREFOgorek2012'] = {'Ogorek-South Shore'}, ['CITEREFOikonomides1991'] = template_names['ODB'], ['CITEREFOikonomou1977'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFOlbrycht2021'] = template_names['Iranica'], ----------< P >---------- ['CITEREFPLP'] = {'Prosopographisches Lexikon der Palaiologenzeit', 'PLP'}, ['CITEREFPalmer1875'] = {'Cite ADB'}, ['CITEREFPalmerStewart1965'] = {'Palmer & Stewart'}, ['CITEREFPanainoAbdollahyBalland1990'] = template_names['Iranica'], ['CITEREFPandariHirtensteinNegahban2013'] = {'Encyclopaedia Islamica'}, ['CITEREFParvin2003'] = template_names['Iranica'], ['CITEREFParvin2009'] = template_names['Iranica'], ['CITEREFPatience1996'] = {'Patience-SteamTwilight'}, ['CITEREFPatton2005'] = {'MSW3 Geomyidae'}, ['CITEREFPaul2000'] = template_names['Iranica'], ['CITEREFPawson1979'] = {'Pawson-Delaware Valley'}, ['CITEREFPaxtonBourne1985'] = {'Paxton-Bourne'}, ['CITEREFPeacock2011'] = template_names['Iranica'], ['CITEREFPeck1898'] = {'HDCA'}, ['CITEREFPerlis2001'] = {'Springer'}, ['CITEREFPerreault2004'] = {'Bach\'s compositions (sources)'}, ['CITEREFPerry1983'] = template_names['Cam_Hist_Iran'], ['CITEREFPerry1990'] = template_names['Cam_Hist_Iran'], ['CITEREFPerry1991'] = template_names['Cam_Hist_Iran'], ['CITEREFPetropoulosKoumarianou1977'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFPetrucci1982'] = {'DBI'}, ['CITEREFPezeshk2017'] = {'Encyclopaedia Islamica'}, ['CITEREFPezeshkKhaleeli2017'] = template_names['Iranica'], ['CITEREFPezeshkKhaleeli2017'] = {'Encyclopaedia Islamica'}, ['CITEREFPfau2008'] = {'Bach\'s compositions (sources)'}, ['CITEREFPinkepank1973'] = {'Pinkepank diesel spotters guide 2'}, ['CITEREFPlantlist2016'] = {'Plantlist'}, ['CITEREFPlaten1976'] = {'Bach\'s compositions (sources)'}, ['CITEREFPloumidisAlexiou1974'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFPmbZ'] = {'Prosopographie der mittelbyzantinischen Zeit', 'PMBZ'}, ['CITEREFPolemis1968'] = {'Polemis-The Doukai'}, ['CITEREFPope2007'] = {'Encyclopaedia Judaica', 'Cite EJ', 'Cite Encyclopaedia Judaica'}, ['CITEREFPopplewell'] = {'Popplewell-Gazetteer'}, ['CITEREFPotts2018'] = template_names['ODLA'], ['CITEREFPottsCanepa2018'] = template_names['ODLA'], ['CITEREFPourshariati2017'] = {'Encyclopædia Iranica Online'}, ['CITEREFPozza1992'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFPrawer1985'] = {'Setton-A History of the Crusades'}, ['CITEREFPritsak1991'] = template_names['ODB'], ['CITEREFProsopographie_der_mittelbyz._Zeit'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ----------< Q >---------- ['CITEREFQuick2009'] = {'Quick-Stations'}, ['CITEREFQuick2019'] = {'Quick-stations-5'}, ['CITEREFQuick2020'] = {'Quick-stations-5'}, ['CITEREFQuick2022'] = {'Quick-stations-5'}, ['CITEREFQuinn2003'] = template_names['Iranica'], ----------< R >---------- ['CITEREFRaditsa1983'] = template_names['Cam_Hist_Iran'], ['CITEREFRahman1983'] = template_names['Iranica'], ['CITEREFRaja&#039;i1987'] = template_names['Iranica'], ['CITEREFRamaer1974'] = {'Ramaer-SteamLocosEAR'}, ['CITEREFRansome-Wallis1971'] = {'Ransome-Wallis 1'}, ['CITEREFRateliff2007'] = template_names['ME-ref'], ['CITEREFRavegnano2000'] = {'DBI'}, ['CITEREFReed1953'] = {'RCTS-LocosGWR-2'}, ['CITEREFReed1975'] = {'Reed-Streamline era'}, ['CITEREFReed1997'] = {'Schubert\'s compositions (references)'}, ['CITEREFReinhard_Tenberg1990'] = {'BBKL'}, ['CITEREFRettinghaus2020'] = {'BDh'}, ['CITEREFReynolds1921'] = {'Cite Collier\'s', 'Collier\'s'}, ['CITEREFReynoldsOroszi2000'] = {'Reynolds-BO'}, ['CITEREFRezaHirtensteinGholami2021'] = {'Encyclopaedia Islamica'}, ['CITEREFRezakhani2018'] = template_names['ODLA'], ['CITEREFRezvani2014'] = template_names['Iranica'], ['CITEREFRichter-Bernburg2003'] = template_names['Iranica'], ['CITEREFRichter2018'] = {'BDh'}, ['CITEREFRigo2005'] = template_names['ODB'], ['CITEREFRipleyDana1863'] = {'New American Cyclopedia'}, ['CITEREFRipleyDana1864'] = {'New American Cyclopedia'}, ['CITEREFRipleyDana1879'] = {'Cite AmCyc'}, ['CITEREFRistaino1988'] = {'Country study'}, ['CITEREFRobert_Eitner1891'] = {'Cite ADB'}, ['CITEREFRobertson1983'] = {'Robertson-OriginScot'}, ['CITEREFRoe1916'] = {'Roe1916'}, ['CITEREFRoe1937'] = {'Roe1937'}, ['CITEREFRoemer1986'] = template_names['Cam_Hist_Iran'], ['CITEREFRoemer1989'] = template_names['Iranica'], ['CITEREFRoemer2004'] = template_names['Iranica'], ['CITEREFRolt1965'] = {'Rolt1965'}, ['CITEREFRoltKichenside1982'] = {'Rolt-Red'}, ['CITEREFRose1857'] = {'Cite Newgenbio'}, ['CITEREFRosenfeld1974'] = template_names['NDB'], ['CITEREFRosenzweigBlackmar1992'] = {'Cite Central Park History', 'Cite Central Park history'}, ['CITEREFRowe2002'] = {'Cite Cambridge History of China'}, ['CITEREFRowledge1975'] = {'Rowledge-Engines of the LMS'}, ['CITEREFRowledge1993'] = {'Rowledge-Irish Steam Register'}, ['CITEREFRowlett'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowlett2007'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowlett2012'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowlett2013'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowlett2016'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowlett2017'] = {'Cite rowlett', 'Cite Rowlett'}, ['CITEREFRowson1998'] = template_names['Iranica'], ['CITEREFRudin1973'] = {'Rudin Walter Functional Analysis'}, ['CITEREFRudin1991'] = {'Rudin Walter Functional Analysis'}, ['CITEREFRunciman1951'] = {'Runciman-A History of the Crusades'}, ['CITEREFRunciman1951–1954'] = {'Runciman-A History of the Crusades'}, ['CITEREFRunciman1952'] = {'Runciman-A History of the Crusades'}, ['CITEREFRunciman1954'] = {'Runciman-A History of the Crusades'}, ['CITEREFRunciman1989'] = {'Runciman-A History of the Crusades'}, ['CITEREFRussell1985'] = {'Setton-A History of the Crusades', 'Encyclopædia Iranica Online', 'Encyclopædia Iranica', 'Encyclopaedia Iranica', 'Cite Encyclopædia Iranica Online'}, ['CITEREFRussell1986'] = template_names['Iranica'], ['CITEREFRussell1987'] = template_names['Iranica'], ['CITEREFRussellNorvig2003'] = {'Russell Norvig 2003'}, ['CITEREFRybczynski2000'] = {'Rybczynski2000'}, ['CITEREFRypka1968'] = template_names['Cam_Hist_Iran'], ----------< S >---------- ['CITEREFSR_staff2013'] = {'Houston family tree'}, ['CITEREFSadeghiTehrani2008'] = {'Encyclopaedia Islamica'}, ['CITEREFSadıkoğlu1996'] = {'TDV Encyclopedia of Islam'}, ['CITEREFSafa1987'] = template_names['Iranica'], ['CITEREFSafa1988'] = template_names['Iranica'], ['CITEREFSafa1989'] = template_names['Iranica'], ['CITEREFSafa1994'] = template_names['Iranica'], ['CITEREFSafa2003'] = template_names['Iranica'], ['CITEREFSajjadiAsatryanMelvin-Koushki'] = {'Encyclopaedia Islamica Online'}, ['CITEREFSajjadiAsatryanMelvin-Koushki'] = {'Encyclopaedia Islamica'}, ['CITEREFSajjadiAsatryanMelvin-Koushki2021'] = template_names['Iranica'], ['CITEREFSalbiev2021'] = template_names['Iranica'], ['CITEREFSalo2004'] = template_names['ME-ref'], ['CITEREFSamiʿiMelvin-Koushki2013'] = {'Encyclopaedia Islamica'}, ['CITEREFSanders1998'] = {'The Cambridge History of Egypt', 'Cambridge History of Egypt'}, ['CITEREFSanders2003'] = {'Sanders-Indiana'}, ['CITEREFSanders2006'] = {'Sanders-Heartland'}, ['CITEREFSanders2007'] = {'Sanders-Akron'}, ['CITEREFSarikakis1974'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFSaunders2001'] = {'Saunders-Merging Lines'}, ['CITEREFSaunders2013'] = {'Saunders-Giants of the Seas'}, ['CITEREFSavadaShaw1992'] = {'Country study'}, ['CITEREFSavoryKaramustafa1998'] = template_names['Iranica'], ['CITEREFScarce1986'] = template_names['Iranica'], ['CITEREFSchaeferWolff1999'] = {'Schaefer Wolff Topological Vector Spaces'}, ['CITEREFSchafer1996'] = {'Schafer-Classic-Railroads-1'}, ['CITEREFSchafer1998'] = {'Schafer-Vintage Diesel'}, ['CITEREFSchafer2000'] = {'Schafer-More-Classic'}, ['CITEREFSchafer2003'] = {'Schafer-Classic-Railroads-3'}, ['CITEREFSchaferSolomon1997'] = {'Schafer-Pennsylvania'}, ['CITEREFSchaferWelsh1997'] = {'Schafer-Classic'}, ['CITEREFSchaferWelsh2002'] = {'Schafer-Streamliners'}, ['CITEREFSchaferWelshHolland2001'] = {'Schafer-American passenger train'}, ['CITEREFSchaff-Herzog'] = {'Schaff-Herzog'}, ['CITEREFSchechter1996'] = {'Schechter Handbook of Analysis and Its Foundations'}, ['CITEREFScheide1960'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchicht1805'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchilling1997'] = {'Schilling-pop-culture'}, ['CITEREFSchindel2013'] = template_names['Iranica'], ['CITEREFSchippmann1986'] = template_names['Iranica'], ['CITEREFSchippmann1987'] = template_names['Iranica'], ['CITEREFSchlitter2005'] = {'MSW3 Tubulidentata'}, ['CITEREFSchlumberger1983'] = template_names['Cam_Hist_Iran'], ['CITEREFSchmieder1950'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchmieder1990'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchmitt1986'] = template_names['Iranica'], ['CITEREFSchmitt1989'] = template_names['Iranica'], ['CITEREFSchmitt1993'] = template_names['Iranica'], ['CITEREFSchmitt1994'] = template_names['Iranica'], ['CITEREFSchmitt1995'] = template_names['Iranica'], ['CITEREFSchmitt2002'] = template_names['Iranica'], ['CITEREFSchmitt2004'] = template_names['Iranica'], ['CITEREFSchmitt2005'] = template_names['Iranica'], ['CITEREFSchmitt2018'] = template_names['Iranica'], ['CITEREFSchmittBailey1986'] = template_names['Iranica'], ['CITEREFSchmitz1870'] = {'Cite DGRBM'}, ['CITEREFSchneider1907'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchneider1912'] = {'Bach\'s compositions (sources)'}, ['CITEREFScholze1736'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchroeter1961'] = {'Schroeter-Eisenbahnen'}, ['CITEREFSchroeterRamaer1993'] = {'Schroeter-Ramaer-Eisenbahnen'}, ['CITEREFSchubert-online'] = {'Schubert\'s compositions (references)'}, ['CITEREFSchubert1968'] = {'Schubert Topology'}, ['CITEREFSchulenberg2010'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchulenberg2013'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchulze1980'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchulze1983'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchulze1984'] = {'Bach\'s compositions (sources)'}, ['CITEREFSchwieterman2001'] = {'Schwieterman-Leaves-Eastern'}, ['CITEREFScottNegus2011'] = {'Scott-Negus-Cellar Door'}, ['CITEREFScribbins1970'] = {'Scribbins-Hiawatha'}, ['CITEREFScribbins2008'] = {'Scribbins-400-2008', 'Scribbins-Remembered'}, ['CITEREFSearle'] = {'Cite sslidx'}, ['CITEREFSegal1982'] = template_names['Iranica'], ['CITEREFSellwood1983'] = template_names['Cam_Hist_Iran'], ['CITEREFSemmensGoldfinch2003'] = {'Book-Semmens-Goldfinch-How Steam Locomotives Really Work'}, ['CITEREFSemsarZand2008'] = {'Encyclopaedia Islamica'}, ['CITEREFSetton1975'] = {'Setton-A History of the Crusades'}, ['CITEREFSetton1976'] = {'The Papacy and the Levant'}, ['CITEREFSetton1978'] = {'The Papacy and the Levant'}, ['CITEREFSetton1984'] = {'The Papacy and the Levant'}, ['CITEREFSettonHazard1975'] = {'Setton-A History of the Crusades'}, ['CITEREFSfyroeras1975'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFShahbazi1986'] = template_names['Iranica'], ['CITEREFShahbazi1987'] = template_names['Iranica'], ['CITEREFShahbazi1988'] = template_names['Iranica'], ['CITEREFShahbazi1989'] = template_names['Iranica'], ['CITEREFShahbazi1991'] = template_names['Iranica'], ['CITEREFShahbazi1994'] = template_names['Iranica'], ['CITEREFShahbazi2002'] = template_names['Iranica'], ['CITEREFShahbazi2003'] = template_names['Iranica'], ['CITEREFShahbazi2004'] = template_names['Iranica'], ['CITEREFShahbazi2005'] = template_names['Iranica'], ['CITEREFShahbaziBosworth1990'] = template_names['Iranica'], ['CITEREFShahbaziRichter-Bernburg2002'] = template_names['Iranica'], ['CITEREFShaki1991'] = template_names['Iranica'], ['CITEREFShaughnessy1997'] = {'Shaughnessy-DH'}, ['CITEREFShaw1978'] = {'Shaw-RailroadAccidents'}, ['CITEREFShayegan2004'] = template_names['Iranica'], ['CITEREFShayesteh2013'] = template_names['Iranica'], ['CITEREFSheikhsofla2018'] = {'Encyclopaedia Islamica'}, ['CITEREFShindo2004'] = {'Kaneto-shindo-shinario-jinsei'}, ['CITEREFShoarian-SattariRezaeeNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFShoshani2005'] = {'MSW3 Shoshani'}, ['CITEREFShtern2001'] = {'Springer', 'SpringerEOM'}, ['CITEREFSiegele1957'] = {'Bach\'s compositions (sources)'}, ['CITEREFSilanos2014'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFSilke2006'] = {'O\'Donnell family tree'}, ['CITEREFSimmons2005'] = {'MSW3 Chiroptera'}, ['CITEREFSimon1966'] = {'Simon-Wines Australia'}, ['CITEREFSimonWarner2011'] = {'Amtrak By the Numbers'}, ['CITEREFSinclair1911'] = {'DCBL'}, ['CITEREFSinger1905'] = {'Jewish Encyclopedia'}, ['CITEREFSix1934'] = {'Cite Six', 'Cite six'}, ['CITEREFSkjærvø2018'] = template_names['ODLA'], ['CITEREFSkoulatos1980'] = {'Les personnages byzantins de l\'Alexiade'}, ['CITEREFSloan1964'] = {'Sloan1964'}, ['CITEREFSmith1854'] = {'Cite DGRG', 'DGRG'}, ['CITEREFSmith1870'] = {'DGRBM', 'Cite DGRBM'}, ['CITEREFSmith1873'] = {'DGRBM', 'Cite DGRBM'}, ['CITEREFSmith1876'] = {'DGRBM', 'Cite DGRBM'}, ['CITEREFSmith1880'] = {'DGRBM', 'Cite DGRBM'}, ['CITEREFSmith2010'] = {'Smith-Cruise Ships-2010'}, ['CITEREFSolomentsev2001'] = {'Springer', 'SpringerEOM'}, ['CITEREFSolomon2000'] = {'Solomon-American Diesel', 'Solomon-UP'}, ['CITEREFSolomon2003'] = {'Solomon-Masterpieces'}, ['CITEREFSolomon2004'] = {'Solomon-Amtrak'}, ['CITEREFSolomon2005'] = {'Solomon-SP-Passenger'}, ['CITEREFSolomon2006'] = {'Solomon-EMD Locomotives'}, ['CITEREFSolomon2011'] = {'Solomon-Modern Diesel'}, ['CITEREFSolomon2014'] = {'Solomon-GE and EMD'}, ['CITEREFSolomonSchafer2007'] = {'Solomon-New York Central'}, ['CITEREFSolopova2009'] = template_names['ME-ref'], ['CITEREFSoucek1982'] = template_names['Iranica'], ['CITEREFSoucek1983'] = template_names['Iranica'], ['CITEREFSoustal1991'] = {'Tabula Imperii Byzantini'}, ['CITEREFSoustalKoder1981'] = {'Tabula Imperii Byzantini'}, ['CITEREFSpielhoff1991'] = {'Spielhoff-EL'}, ['CITEREFSpitta1894'] = {'Bach\'s compositions (sources)'}, ['CITEREFSpitta1899'] = {'Bach\'s compositions (sources)'}, ['CITEREFSpringirth2016'] = {'Springirth-Philadelphia'}, ['CITEREFSpuhler1986'] = template_names['Cam_Hist_Iran'], ['CITEREFSpuler1983'] = template_names['Iranica'], ['CITEREFSpuler1987'] = template_names['Iranica'], ['CITEREFStagner1993'] = {'Stagner-Transition'}, ['CITEREFStansfield1999'] = {'Stansfield-AyrRenfrew'}, ['CITEREFStatistical_Yearbook_of_the_Republic_of_Croatia_2015'] = {'Croatia Yearbook 2015'}, ['CITEREFStaufer1993'] = {'Staufer-Pennsy_III'}, ['CITEREFStauferPennypacker1962'] = {'Staufer-Pennsy'}, ['CITEREFStauferPennypacker1968'] = {'Staufer-Pennsy Power II'}, ['CITEREFStaunton1988'] = {'Australian Dictionary of Biography'}, ['CITEREFSternFishmanTilove2006'] = {'Cite New York 2000', 'Cite NY2000', 'Cite ny2000', 'Cite NY 2000', 'Cite ny 2000'}, ['CITEREFSternGilmartinMassengale1983'] = {'Cite New York 1900', 'Cite NY1900'}, ['CITEREFSternGilmartinMellins1987'] = {'Cite New York 1930', 'Cite NY 1930', 'Cite NY1930', 'Cite ny1930', 'Cite ny 1930'}, ['CITEREFSternMellinsFishman1995'] = {'Cite New York 1960', 'Cite NY1960', 'Cite NY 1960', 'Cite ny1960', 'Cite ny 1960'}, ['CITEREFSternMellinsFishman1999'] = {'Cite New York 1880', 'Cite NY1880', 'Cite NY 1880', 'Cite ny1880', 'Cite ny 1880'}, ['CITEREFStewart1974'] = {'When Steam Was King'}, ['CITEREFStrachey1981'] = template_names['ME-ref'], ['CITEREFStrickland1983'] = {'Strickland Locomotive Directory'}, ['CITEREFStähelin1909'] = {'Schaff-Herzog'}, ['CITEREFSuetin2001'] = {'Springer', 'SpringerEOM'}, ['CITEREFSundermann1988'] = template_names['Iranica'], ['CITEREFSusanne_Schurr1992'] = {'BBKL'}, ['CITEREFSusanne_Siebert1992'] = {'BBKL'}, ['CITEREFSvolopoulos1977'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFSwartz1992'] = {'Swartz An Introduction to Functional Analysis'}, ----------< T >---------- ['CITEREFLondon_Gazette'] = {'London Gazette'}, ['CITEREFTaber1977'] = {'Taber-DLW-19th'}, ['CITEREFTaberTaber1980'] = {'Taber-DLW-20th-1'}, ['CITEREFTaberTaber1981'] = {'Taber-DLW-20th-2'}, ['CITEREFTafazzoli1999'] = template_names['Iranica'], ['CITEREFTafazzoli1999'] = {'Encyclopaedia Islamica'}, ['CITEREFTafazzoli2000'] = template_names['Iranica'], ['CITEREFTalbot1991'] = template_names['ODB'], ['CITEREFTalbotKazhdan1991'] = template_names['ODB'], ['CITEREFTanındı2008'] = template_names['Iranica'], ['CITEREFTao2009'] = {'Cite Cambridge History of China'}, ['CITEREFTer-Ghewondyan1976'] = {'The Arab Emirates in Bagratid Armenia'}, ['CITEREFThe_London_Gazette1950'] = {'London Gazette'}, ['CITEREFThe_London_Gazette_26_September_1919'] = {'London Gazette'}, ['CITEREFThielemann2012'] = {'Bach\'s compositions (sources)'}, ['CITEREFThomas1970'] = {'HistoryofParliament'}, ['CITEREFThomas1971'] = {'Thomas-History-VI'}, ['CITEREFThrush2010'] = {'HistoryofParliament'}, ['CITEREFTikhomirov2001'] = {'Springer'}, ['CITEREFTittel1966'] = {'Bach\'s compositions (sources)'}, ['CITEREFTodt1996'] = {'BBKL'}, ['CITEREFTodtVest2014'] = {'Tabula Imperii Byzantini'}, ['CITEREFTolkien1937'] = template_names['ME-ref'], ['CITEREFTolkien1954'] = template_names['ME-ref'], ['CITEREFTolkien1955'] = template_names['ME-ref'], ['CITEREFTolkien1964'] = template_names['ME-ref'], ['CITEREFTolkien1966'] = template_names['ME-ref'], ['CITEREFTolkien1977'] = template_names['ME-ref'], ['CITEREFTolkien1980'] = template_names['ME-ref'], ['CITEREFTolkien1982'] = template_names['ME-ref'], ['CITEREFTolkien1983'] = template_names['ME-ref'], ['CITEREFTolkien1984'] = template_names['ME-ref'], ['CITEREFTolkien1985'] = template_names['ME-ref'], ['CITEREFTolkien1986'] = template_names['ME-ref'], ['CITEREFTolkien1987'] = template_names['ME-ref'], ['CITEREFTolkien1988'] = template_names['ME-ref'], ['CITEREFTolkien1989'] = template_names['ME-ref'], ['CITEREFTolkien1990'] = template_names['ME-ref'], ['CITEREFTolkien1992'] = template_names['ME-ref'], ['CITEREFTolkien1993'] = template_names['ME-ref'], ['CITEREFTolkien1994'] = template_names['ME-ref'], ['CITEREFTolkien1996'] = template_names['ME-ref'], ['CITEREFTolkien1998'] = template_names['ME-ref'], ['CITEREFTolkien1999'] = template_names['ME-ref'], ['CITEREFTolkien2007'] = template_names['ME-ref'], ['CITEREFTolkienSwann1978'] = template_names['ME-ref'], ['CITEREFTolkienTolkien1992'] = template_names['ME-ref'], ['CITEREFTonks1988'] = {'Tonks ironstone'}, ['CITEREFTonks1989'] = {'Tonks ironstone'}, ['CITEREFTonks1992'] = {'Tonks ironstone'}, ['CITEREFTorri2013'] = {'Bach\'s compositions (sources)'}, ['CITEREFTougher2018'] = template_names['ODLA'], ['CITEREFToumanoff1986'] = template_names['Iranica'], ['CITEREFToumanoff2010'] = template_names['Iranica'], ['CITEREFToumanoffChaumont1987'] = template_names['Iranica'], ['CITEREFTourret1995'] = {'Tourret-Allied Military Locomotives'}, ['CITEREFTrapp1991'] = template_names['ODB'], ['CITEREFTrappBeyerSturm-Schnabl1983'] = {'Prosopographisches Lexikon der Palaiologenzeit'}, ['CITEREFTrappWaltherBeyer1976'] = {'Prosopographisches Lexikon der Palaiologenzeit'}, ['CITEREFTrappWaltherBeyerSturm-Schnabl1978'] = {'Prosopographisches Lexikon der Palaiologenzeit'}, ['CITEREFTreadgold1988'] = {'The Byzantine Revival, 780–842'}, ['CITEREFTreadgold1997'] = {'A History of the Byzantine State and Society'}, ['CITEREFTrèves2006'] = {'Trèves François Topological vector spaces, distributions and kernels'}, ['CITEREFTucker2009'] = {'Encyclopaedia Islamica'}, ['CITEREFTurim1998'] = {'Turim-oshima'}, ['CITEREFTuring1950'] = {'Turing 1950'}, ----------< U >---------- ['CITEREFUS-NHub_Music_Deposit_31_(Klavierbüchlein_für_W._F._Bach)_at_Bach_Digital'] = {'Bach\'s compositions (sources)'}, ['CITEREFUtas2002'] = template_names['Iranica'], ['CITEREFUwe_Eckardt2001'] = {'BBKL'}, ['CITEREFunknown_author1881'] = {'Cite ADB'}, ['CITEREFunknown_author1882'] = {'Cite ADB'}, ----------< V >---------- ['CITEREFVakalopoulos1975'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFVan_Cleve1969'] = {'Setton-A History of the Crusades'}, ['CITEREFVan_Hoorickx1971'] = {'Schubert\'s compositions (references)'}, ['CITEREFVan_Hoorickx_1974–1976'] = {'Schubert\'s compositions (references)'}, ['CITEREFVan_Lint2018'] = template_names['ODLA'], ['CITEREFVan_Riemsdijk,_Compound_Locomotives'] = {'Book-Van Riemsdijk-Compound Locomotives'}, ['CITEREFVan_Tricht2011'] = {'The Latin Renovatio of Byzantium'}, ['CITEREFVandenberghen1989'] = {'Vandenberghen-SNCB12.2'}, ['CITEREFVarzos1984'] = {'Η Γενεαλογία των Κομνηνών', 'Varzos-Genealogy of the Komnenoi'}, ['CITEREFVasiliev1935'] = {'Byzance et les Arabes'}, ['CITEREFVasiliev1968'] = {'Byzance et les Arabes'}, ['CITEREFVendler1997'] = {'Shakespeare sonnets bibliography'}, ['CITEREFVenetis2012'] = template_names['Iranica'], ['CITEREFVenn1954'] = {'VennAC'}, ['CITEREFVesel1999'] = template_names['Iranica'], ['CITEREFVetter1713'] = {'Bach\'s compositions (sources)'}, ['CITEREFVevainaCanepa2018'] = template_names['ODLA'], ['CITEREFVeysey1958'] = {'Veysey-PE-1958'}, ['CITEREFVischer1912'] = {'Schaff-Herzog'}, ['CITEREFVogelsang2003'] = template_names['Iranica'], ['CITEREFVolkmer1991'] = {'Volkmer-Pennsy-Electric'}, ['CITEREFvan_Leyden1956'] = {'Bach\'s compositions (sources)'}, ['CITEREFvan_Lint2018'] = template_names['ODLA'], ['CITEREFvon_Prantl1879'] = {'Cite ADB'}, ----------< W >---------- ['CITEREFWagnerBäzoldZschechLüderitz1990'] = {'Wagner-EFA2.3.2'}, ['CITEREFWalter_Asmus1966'] = template_names['NDB'], ['CITEREFWayner1972'] = {'Wayner - Car names, numbers, consists'}, ['CITEREFWayner1973'] = {'Wayner-Spotter-2nd'}, ['CITEREFWebb2018'] = template_names['ODLA'], ['CITEREFWeber2016'] = template_names['Iranica'], ['CITEREFWechsler1979'] = {'Cite Cambridge History of China'}, ['CITEREFWegman2008'] = {'Wegman-Illustrated'}, ['CITEREFWeibel1994'] = {'Weibel IHA'}, ['CITEREFWeinrebHibbertKeayKeay2008'] = {'London encyclopedia'}, ['CITEREFWeisbrod1991'] = {'Weisbrod-EFA1.5'}, ['CITEREFWeisbrodMüllerPetznik1978'] = {'Weisbrod-EFA1.2'}, ['CITEREFWeiskopf1987'] = template_names['Iranica'], ['CITEREFWeiskopf1989'] = template_names['Iranica'], ['CITEREFWeiskopf1990'] = template_names['Iranica'], ['CITEREFWeiskopf1993'] = template_names['Iranica'], ['CITEREFWellhausen1927'] = {'The Arab Kingdom and its Fall'}, ['CITEREFWells1982'] = {'Accents of English'}, ['CITEREFWells2008'] = {'Cite LPD'}, ['CITEREFWelsh2006'] = {'Welsh-Broadway'}, ['CITEREFWelsh2008'] = {'Welsh-UP'}, ['CITEREFWerner_Raupp2001'] = {'BBKL'}, ['CITEREFWestcott1911'] = {'DCBL'}, ['CITEREFWestermayer,_Georg1882'] = {'Cite ADB'}, ['CITEREFWham1997'] = {'Wham-Ayrshire'}, ['CITEREFWharton1991'] = template_names['ODB'], ['CITEREFWhishaw1842'] = {'Whishaw-RailofGB-2ndEd'}, ['CITEREFWhishaw1969'] = {'Whishaw-RailofGB'}, ['CITEREFWhite1985'] = {'White-Passenger-1985'}, ['CITEREFWhite1993'] = {'White - American railroad freight car'}, ['CITEREFWhiteWillenskyLeadon2010'] = {'Cite aia5'}, ['CITEREFWhitehurst1973'] = {'Whitehurst GW Engines from 1940'}, ['CITEREFWhittow1996'] = {'The Making of Byzantium, 600–1025'}, ['CITEREFWickman1982'] = {'Country study'}, ['CITEREFWiesehöfer1986'] = template_names['Iranica'], ['CITEREFWiesehöfer2018'] = template_names['ODLA'], ['CITEREFWilansky2013'] = {'Wilansky Modern Methods in Topological Vector Spaces'}, ['CITEREFWillard2004'] = {'Willard General Topology'}, ['CITEREFWilliams1998'] = {'Williams-Philadelphia'}, ['CITEREFWilliams2003'] = {'Bach\'s compositions (sources)'}, ['CITEREFWilliams2014'] = template_names['Iranica'], ['CITEREFWillis1750'] = {'Cite Notitia Parliamentaria'}, ['CITEREFWilson2017'] = {'Wilson-Guide'}, ['CITEREFWilsonFiske1891'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'}, ['CITEREFWilsonFiske1892'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'}, ['CITEREFWilsonFiske1900'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'}, ['CITEREFWiltshire2000'] = {'Lloyd-Margaret River'}, ['CITEREFWinfieldLyon2004'] = {'Winfield'}, ['CITEREFWinkler1883'] = template_names['ADB'], ['CITEREFWitakowski2018'] = template_names['ODLA'], ['CITEREFWolff1969'] = {'Setton-A History of the Crusades'}, ['CITEREFWollny2015'] = {'Bach\'s compositions (sources)'}, ['CITEREFWood1907'] = {'Cite Nuttall', 'Nuttall'}, ['CITEREFWoodsKilpatrick2005'] = {'MSW3 Hystricognathi'}, ['CITEREFWorden2008'] = {'Country study'}, ['CITEREFWortley2010'] = {'John Skylitzes: A Synopsis of Byzantine History, 811–1057'}, ['CITEREFWozencraft2005'] = {'MSW3 Carnivora'}, ['CITEREFWright1979'] = {'Cite Cambridge History of China'}, ['CITEREFWright2000'] = {'Bach\'s compositions (sources)'}, ['CITEREFWägliJacobi2010'] = {'Schienennetz Schweiz'}, ['CITEREFWürsch2013'] = template_names['Iranica'], ----------< X >---------- ----------< Y >---------- ['CITEREFYakubova2016'] = template_names['Iranica'], ['CITEREFYarshater1983'] = template_names['Iranica'], ['CITEREFYarshater1986'] = template_names['Cam_Hist_Iran'], ['CITEREFYarshater1988'] = template_names['Iranica'], ['CITEREFYarshater2018'] = template_names['Iranica'], ['CITEREFYarshater2021'] = template_names['Iranica'], ['CITEREFYazici2002'] = template_names['Iranica'], ['CITEREFYenne2005'] = {'Yenne-Chiefs'}, ['CITEREFYildiz2004'] = template_names['Iranica'], ['CITEREFYonge1990'] = {'Quail-4'}, ['CITEREFYonge1994'] = {'Quail-5'}, ['CITEREFYonge2002'] = {'Quail-5'}, ['CITEREFYonge2008'] = {'Quail-5'}, ['CITEREFYonge2016'] = {'Quail-2-2016'}, ['CITEREFYongePadgettSzwenk2013'] = {'Quail-4-Paper-3rdEd'}, ['CITEREFYu1986'] = {'Cite Cambridge History of China'}, ['CITEREFYusofi1990'] = template_names['Iranica'], ----------< Z >---------- ['CITEREFZahn1889–1893'] = {'Bach\'s compositions (sources)'}, ['CITEREFZakeri2021'] = template_names['Iranica'], ['CITEREFZarrinkoubNegahban2008'] = {'Encyclopaedia Islamica'}, ['CITEREFZarrinkub1975'] = template_names['Cam_Hist_Iran'], ['CITEREFZeiniWiesehöfer2018'] = template_names['ODLA'], ['CITEREFZekulich2000'] = {'Zekulich-WineWA'}, ['CITEREFZimmermann2004'] = {'Zimmermann-Burlington'}, ['CITEREFZimmermann2007'] = {'Zimmermann-GrandLuxe'}, ['CITEREFZuccaric._1747'] = {'Bach\'s compositions (sources)'}, ----------< UNSORTED >---------- ['CITEREFGazette27462'] = {'London Gazette'}, ['CITEREFCawley2012'] = {'Medieval Lands by Charles Cawley'}, ['CITEREFCrone2003'] = {'Slaves on Horses'}, ['CITEREFΙστορία_του_Ελληνικού_Έθνους'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFSpyropoulos1928'] = {'Great Military and Naval Encyclopaedia'}, ['CITEREFPikros1977'] = {'Ιστορία του Ελληνικού Έθνους'}, ['CITEREFÖz1993'] = {'TDV Encyclopedia of Islam'}, ['CITEREFÖzgüdenli2008'] = template_names['Iranica'], ['CITEREFÖzaydın2002'] = {'TDV Encyclopedia of Islam'}, ['CITEREFÖzaydın2006'] = {'TDV Encyclopedia of Islam'}, ['CITEREFÖzkuyumcu2006'] = {'TDV Encyclopedia of Islam'}, ['CITEREFÖztürk2013'] = {'TDV Encyclopedia of Islam'}, ['CITEREFΜεγάλη_Στρατιωτικὴ_καὶ_Ναυτικὴ_Ἐγκυκλοπαιδεία'] = {'Great Military and Naval Encyclopaedia'}, ['CITEREFŞeşen1988'] = {'TDV Encyclopedia of Islam'}, ['CITEREFFranke1994'] = {'Cite Cambridge History of China', 'The Cambridge History of China'}, ['CITEREFTao2009'] = {'Cite Cambridge History of China', 'The Cambridge History of China'}, ['CITEREFWechsler1979'] = {'Cite Cambridge History of China', 'The Cambridge History of China'}, ['CITEREFWright1979'] = {'Cite Cambridge History of China', 'The Cambridge History of China'}, ['CITEREFHistoric_England_Benty_Grange'] = {'NHLE'}, ['CITEREFWalter1967'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFAliprantisBorder2006'] = {'Aliprantis Border Infinite Dimensional Analysis A Hitchhiker\'s Guide Third Edition'}, ['CITEREFAmanat1985'] = template_names['Iranica'], ['CITEREFBaldwin1991'] = template_names['ODB'], ['CITEREFCallwell1999'] = {'Muni Chronology'}, ['CITEREFHalmos1982'] = {'Halmos A Hilbert Space Problem Book 1982'}, ['CITEREFHistoric_England'] = {'NHLE', 'National Heritage List for England'}, ['CITEREFHitchins2001'] = template_names['Iranica'], ['CITEREFJohnson1906'] = {'BDA1906', 'Cite BDA1906'}, ['CITEREFMachinery&#039;s_Handbook1996'] = {'MachinerysHandbook25e'}, ['CITEREFMatthee2012'] = template_names['Iranica'], ['CITEREFNicholson2018'] = template_names['ODLA'], ['CITEREFNicol1968'] = {'The Byzantine Family of Kantakouzenos'}, ['CITEREFWilsonFiske1889'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'}, ['CITEREFShippey2005'] = template_names['ME-ref'], ['CITEREFColvin1947'] = {'Colvin1947'}, ['CITEREFSorensen1956'] = {'Sorensen1956'}, ['CITEREFBosworth1999'] = template_names['Iranica'], ['CITEREFGregoryKazhdan1991'] = template_names['ODB'], ['CITEREFKelley1975'] = {'Kelley General Topology'}, ['CITEREFIacocca1984'] = {'Iacocca1984'}, ['CITEREFNestruev2020'] = {'Nestruev Smooth Manifolds and Observables 2020'}, ['CITEREFOrmsby1982'] = {'Cite DCB'}, ['CITEREFVentura1963'] = {'DBI', 'Dizionario Biografico degli Italiani'}, ['CITEREFZălinescu2002'] = {'Zălinescu Convex Analysis in General Vector Spaces 2002'}, ['CITEREFGreenwoodEarnshaw1997'] = {'Greenwood&Earnshaw2nd'}, ['CITEREFMullié1852'] = {'Cite Mullié', 'Mullié'}, ['CITEREFEl-Hibri2021'] = {'The Abbasid Caliphate: A History'}, ['CITEREFHolland1989'] = {'Holland1989'}, ['CITEREFHowes1995'] = {'Howes Modern Analysis and Topology 1995'}, ['CITEREFRockafellarWets2009'] = {'Rockafellar Wets Variational Analysis 2009 Springer'}, ['CITEREFSearle1980'] = {'Searle 1980'}, ['CITEREFVan_Riemsdijk1994'] = {'Book-Van Riemsdijk-Compound Locomotives'}, ['CITEREFGaines2008'] = {'Cite Gaines 2008'}, ['CITEREFSmid2008'] = {'Smid2008'}, ['CITEREFSmid2010'] = {'Smid2010'}, ['CITEREFNesbittOikonomides1991'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFNesbittOikonomides1994'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFNesbittOikonomides1996'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFMcGeerNesbittOikonomides2001'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFMcGeerNesbittOikonomides2005'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFNesbittMorrisson2009'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITETEFCotsonis2020'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'}, ['CITEREFTolkienSwann2002'] = {'ME-ref'}, ['CITEREFApostol1976'] = {'Apostol IANT'}, ['CITEREFBournoutian2018'] = {'Cite Armenia and Imperial Decline'}, ['CITEREFCsászár1978'] = {'Császár General Topology'}, ['CITEREFHovannisian1971'] = {'Cite The Republic of Armenia Volume 1'}, ['CITEREFКавказский_календарь_на_1913_год'] = {'Cite Kavkazskiy Kalendar 1913'}, ['CITEREFКавказский_календарь_на_1917_год'] = {'Cite Kavkazskiy Kalendar 1917'}, ['CITEREFLang2002'] = {'Lang Algebra'}, ['CITEREFLurie'] = {'Lurie-HA'}, ['CITEREFTsutsiev2014'] = {'Cite Atlas of the Ethno-Political History of the Caucasus'}, ['CITEREFVenables1911'] = {'DCBL'}, ['CITEREFWilansky2008'] = {'Wilansky Topology for Analysis 2008'}, ['CITEREFKazemzadeh1951'] = {'The Struggle for Transcaucasia'}, ['CITEREFNicol1984'] = {'The Despotate of Epiros, 1267–1479'}, ['CITEREFKorkotyan1932'] = {'Cite The Population of Soviet Armenia'}, ['CITEREFHalm1991'] = {'Das Reich des Mahdi'}, ['CITEREFHalm2014'] = {'Kalifen und Assassinen'}, ['CITEREFHovannisian1982'] = {'Cite The Republic of Armenia Volume 2'}, ['CITEREFHovannisian1996'] = {'Cite The Republic of Armenia Volume 3', 'Cite The Republic of Armenia Volume 4'}, ['CITEREFHovannisian1967'] = {'Cite Armenia on the Road to Independence'}, ['CITEREFKazemzadeh1951'] = {'Cite The Struggle for Transcaucasia'}, ['CITEREFКавказский_календарь_на_1910_год'] = {'Cite Kavkazskiy Kalendar 1910'}, ['CITEREFКавказский_календарь_на_1915_год'] = {'Cite Kavkazskiy Kalendar 1915'}, ['CITEREFNicol1994'] = {'The Byzantine Lady: Ten Portraits, 1250–1500'}, ['CITEREFTolkien1979'] = {'ME-ref'}, ['CITEREFTopping1975'] = {'Setton-A History of the Crusades', 'Wisconsin History of the Crusades'}, ['CITEREFHalm2003'] = {'Die Kalifen von Kairo'}, ['CITEREFLilieLudwigPratschZielke1999'] = {'Prosopographie der mittelbyzantinischen Zeit', 'PMBZ'}, ['CITEREFDer_Matossian2020'] = {'Cite The First Republic of Armenia'}, ['CITEREFEaston1897'] = {'Eastons', 'EBD'}, ['CITEREFLilieLudwigPratschZielke2000'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFLilieLudwigPratschZielke2001'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFLilieLudwigPratschZielke2002'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFLilieLudwigPratschZielke2009'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFLilieLudwigPratschZielke2013'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFLilieLudwigPratschZielke1998–2013'] = {'Prosopographie der mittelbyzantinischen Zeit'}, ['CITEREFWells2000'] = {'Cite LPD'}, ['CITEREFWells1990'] = {'Cite LPD'}, ['CITEREFHunter2012'] = {'Cite HGOC', 'Cite Hunter'}, ['CITEREFFordCrowther1922'] = {'Ford1922'}, ['CITEREFLegifrance'] = {'Cite Legifrance'}, ['CITEREFCoverdale_&_Colpitts1946'] = {'Coverdale & Colpitts 1', 'Coverdale & Colpitts 2', 'Coverdale & Colpitts 3'}, ['CITEREFDonaghy1972'] = {'Donaghy-LMR'}, ['CITEREFKubrusly2011'] = {'Kubrusly The Elements of Operator Theory 2nd Edition 2011'}, ['CITEREFNemiroffBonnell1998'] = {'Cite APOD'}, ['CITEREFNemiroffBonnell2004'] = {'Cite APOD'}, ['CITEREFNemiroffBonnell2005'] = {'Cite APOD'}, ['CITEREFNemiroffBonnell2006'] = {'Cite APOD'}, ['CITEREFNemiroffBonnell2007'] = {'Cite APOD'}, } --[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------ ]] return { DNB_special_patterns = DNB_special_patterns, DNB_template_names = template_names['DNB'], special_patterns = special_patterns, whitelist = whitelist, wrapper_templates = wrapper_templates, } 23630084de31b60e3f29b5c4182432ec14252600 Template:Sfnm/doc 10 900 1991 1990 2023-10-01T10:44:19Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Sfnm/doc]] wikitext text/x-wiki {{Documentation subpage}} {{lua |Module:Footnotes}} <!-- PLEASE ADD TEMPLATE CATEGORIES AT THE BOTTOM OF THIS PAGE. --> This is a companion template to {{tlx|Sfn}}; see there for a more general introduction. Unlike {{tld|Sfn}}, however, {{tlx|Sfnm}} supports the inclusion of multiple sources in a single footnote. ==Usage== Each of the several sources listed in the template is identified using a set of numbered ({{var|n}}) parameters where the first source is numbered <code>1</code>, the second <code>2</code>, etc. There is no set limit to the number of sources that may be listed in a single template though editors should be aware that readability suffers with an increase of the number of sources. The following markup: <code><nowiki>{{Sfnm|1a1=Smith|1a2=Jones|1a3=Johnson|1y=2005|1p=15|2a1=Jones|2a2=Johnson|2a3=Smith|2y=2004|2p=50}}</nowiki></code> will produce the following footnote: {{Sfnm|1a1=Smith|1a2=Jones|1a3=Johnson|1y=2005|1p=15|1ignore-err=yes|2a1=Jones|2a2=Johnson|2a3=Smith|2y=2004|2p=50|2ignore-err=yes}} <!-- |#ignore-err=yes here because template can't see into transcluded doc page --> :{| style="border: 1px solid black" |{{reflist}} |} ===Parameters=== The following parameters are used where {{var|n}} always begins at 1, increases by one for each successive source; {{var|n}} has no set limit. *{{para|{{var|n}}a{{var|m}}}} – source {{var|n}} author (required) – has the form: <code>{{var|n}}a{{var|m}}</code> where <code>{{var|n}}</code> is the source number, <code>a</code> indicates that this is an author parameter, and <code>{{var|m}}</code> identifies the {{var|m}}th author of source {{var|n}} → {{para|1a1}} is first source author one, {{para|5a4}} is fifth source author four; author numbers (<code>{{var|m}}</code>) greater than <code>4</code> are ignored; *{{para|{{var|n}}y}} – year – accepted formats are: <code>YYYY</code>, <code>n.d.</code> or <code>nd</code> (no date), <code>c. YYYY</code>, <code>YYYY–YYYY</code> (endash separator); all dates may have a single lowercase letter disambiguator suffix; see [[Template:Sfn#More than one work in a year|sfn §More than one work in a year]] *{{para|{{var|n}}p}} – in-source page cited *{{para|{{var|n}}pp}} – in-source pages cited *{{para|{{var|n}}loc}} – in-source location when not pagination – appended to {{para|{{var|n}}p}} or {{para|{{var|n}}pp}} if present *{{para|{{var|n}}ref}} – alternate reference identifier used to link source to its full citation; the special keyword <code>none</code> inhibits creation of a link from source to its long form reference *{{para|{{var|n}}ps}} – source postscript – terminal character or text; defaults to none; the special keyword <code>none</code> (used by {{tld|sfn}}) is silently ignored *{{para|ps}} – postscript – template's final terminal character or text; defaults to period (<code>.</code>); the special keyword <code>none</code> inhibits the postscript character; yields to {{para|{{var|n}}ps}} where {{var|n}} is the last source When a source has a single author, use of positional parameters for author and year is supported; both <code>|{{var|author}}</code> and <code>|{{var|year}}</code> are required when there is more than one of these single-author sources listed in the template: <code><nowiki>{{Sfnm|Smith|2005|1p=15|Jones|2004|2p=2}}</nowiki></code> which will produce the following footnote: {{Sfnm|Smith|2005|1p=15|1ignore-err=yes|Jones|2004|2p=2|2ignore-err=yes}} <!-- |#ignore-err=yes here because template can't see into transcluded doc page --> :{| style="border: 1px solid black" |{{reflist}} |} ==Literature cited== *{{cite journal|last1=Jones|first1=John|year=2004|title=My Journal Article|journal=Journal of Important Studies|volume=509|issue=13 |pages=10–23}} *{{cite book|last1=Jones|first1=John|last2=Johnson|first2=John|last3=Smith|first3=John|year=2004|title=Our First Book}} *{{cite journal|last1=Smith|first1=John|year=2005|title=Another Journal Article|journal=Journal of Important Studies|volume=510|issue=14 |pages=100–134}} *{{cite book|last1=Smith|first1=John|last2=Jones|first2=John|last3=Johnson|first3=John|year=2005|title=Our Second Book}} ==See also== *{{tlx|sfnmp}} – a similar template that renders source year in parentheses <includeonly>{{sandbox other|| <!-- ADD TEMPLATE CATEGORIES BELOW THIS LINE --> [[Category:Footnote templates]] [[Category:Author–date citation templates]] }}</includeonly> fef2c7fdc6e4e76c768655462ac23beb02f19157 Module:Citation/CS1/Utilities/doc 828 901 1993 1992 2023-10-01T10:45:17Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/Utilities/doc]] wikitext text/x-wiki {{#lst:Module:Citation/CS1/doc|header}} This page contains various functions and tables that are common to multiple of the various modules that make up [[Module:Citation/CS1]]. {{#lst:Module:Citation/CS1/doc|module_components_table}} c4f3e7c1767fa08a7f9f535de814b7de4d01a10f Social Democracy 0 902 1994 2023-10-01T10:46:19Z Führerredux 2 Created page with "{{Short description|Political ideology within the socialist movement}} {{About|the political ideology within the socialist movement|socialism emphasizing democracy sometimes described as social democracy|Democratic socialism|the policy regime in Northern Europe sometimes described as social democracy|Nordic model|the social welfare model in Western Europe sometimes described as social democracy|Social market economy}} {{Hatnote|See also: Social Democrats (disambiguat..." wikitext text/x-wiki {{Short description|Political ideology within the socialist movement}} {{About|the political ideology within the socialist movement|socialism emphasizing democracy sometimes described as social democracy|Democratic socialism|the policy regime in Northern Europe sometimes described as social democracy|Nordic model|the social welfare model in Western Europe sometimes described as social democracy|Social market economy}} {{Hatnote|See also: [[Social Democrats (disambiguation)]], [[Social Democratic Party]], and [[List of social democratic parties]].}} {{Use dmy dates|date=October 2021}} {{Use Oxford spelling|date=October 2021}} {{Social democracy sidebar}} {{Party politics|platform}} '''Social democracy''' is a [[Political philosophy|political]], [[Social philosophy|social]], and [[economic philosophy]] within [[socialism]]{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1pp=80–103|2a1=Newman|2y=2005|2p=5|3a1=Heywood|3y=2007|3pp=101, 134–136, 139|4a1=Ypi|4y=2018|5a1=Watson|5y=2019}} that supports [[Liberal democracy|political]] and [[economic democracy]].{{sfnm|1a1=Wintrop|1y=1983|1p=306|2a1=Archer|2y=1995|3a1=Jones|3y=2001|3p=737|4a1=Ritzer|4y=2004|4p=479}} As a policy regime, it is described by academics as advocating [[Economic interventionism|economic]] and [[social intervention]]s to promote [[social justice]] within the framework of a [[liberal-democratic]] [[polity]] and a [[capitalist]]-oriented [[mixed economy]].{{sfnm|1a1=McCarthy|1y=2018|2a1=Berman|2y=2020}} The protocols and norms used to accomplish this involve a commitment to [[Representative democracy|representative]] and [[participatory democracy]], measures for [[income redistribution]], [[regulation of the economy]] in the [[Common good|general interest]], and [[social welfare]] provisions.{{sfnm|1a1=Miller|1y=1998|1p=827|2a1=Badie|2a2=Berg-Schlosser|2a3=Morlino|2y=2011|2p=2423|3a1=Heywood|3y=2012|3p=128}} Due to longstanding governance by social democratic parties during the [[post-war consensus]] and their influence on socioeconomic policy in Northern and Western Europe, social democracy became associated with [[Keynesianism]], the [[Nordic model]], the [[social-liberal]] paradigm, and [[welfare state]]s within political circles in the late 20th century.{{sfnm|1a1=Gombert|1y=2009|1p=8|2a1=Sejersted|2y=2011}} It has been described as the most common form of Western or modern socialism,{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1pp=81, 100|2a1=Pruitt|2y=2019|3a1=Berman|3y=2020}} as well as the [[reformist]] wing of [[democratic socialism]].{{sfnm|1a1=Williams|1y=1985|1p=289|2a1=Foley|2y=1994|2p=23|3a1=Eatwell|3a2=Wright|3y=1999|3p=80|4a1=Busky|4y=2000|4p=8|5a1=Sargent|5y=2008|5p=117|6a1=Heywood|6y=2012|6p=97|7a1=Hain|7y=2015|7p=3}} The [[history of social democracy]] stretches back to the 19th-century [[labour movement]]. It is a [[Left-wing politics|left-wing]]<ref>{{harvnb|Tsakalotos|2001|p=26}}: "...{{nbsp}}most left-wing approaches (social democratic, democratic socialist, and so on) to how the market economy works."); {{harvnb|Brandal|Bratberg|Thorsen|2013|loc=Introduction}}: "In Scandinavia, as in the rest of the world, 'social democracy' and 'democratic socialism' have often been used interchangeably to define the part of the left pursuing gradual reform through democratic means."</ref> political ideology that advocates for a [[Democracy|peaceful democratic]] [[Reformism|evolution]] from laissez-faire or [[crony capitalism]] towards [[Social_market_economy#Social_capitalism_model|social capitalism]] sometimes also referred to as a [[social market economy]]. Social democracy opposes the [[Planned economy|full centralization]] of an economy as proposed by some socialists. The main difference between social democracy and [[democratic socialism]] is that democratic socialism is a [[political philosophy]] within socialism,{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1pp=80–103|2a1=Newman|2y=2005|2p=5|3a1=Heywood|3y=2007|3pp=101, 134–136, 139|4a1=Ypi|4y=2018|5a1=Watson|5y=2019}} advocating an [[Reformism|evolutionary]] and peaceful transition from [[Capitalist mode of production (Marxist theory)|capitalism]] to [[Socialist mode of production|socialism]], using established political processes, as opposed to the [[revolutionary socialist]] approach to transition associated with [[orthodox Marxism]].{{sfn|Duignan|Kalsang Bhutia|Mahajan|2014}} On the other hand, social democracy seeks to improve the lives of people living within a [[Freedom|free]] and [[Democracy|democratic]] society, by having a well regulated [[Social_market_economy#Social_capitalism_model|market economy]]. In the early [[post-war]] era in Western Europe, social democratic parties rejected the [[Stalinism|Stalinist]] political and economic model then-current in the Soviet Union, committing themselves either to an alternative path to socialism or a compromise between capitalism and socialism.{{sfn|Adams|1993|pp=102–103}} In this period, social democrats embraced a mixed economy based on the predominance of [[private property]], with only a minority of essential utilities and public services under public ownership. Social democrats promoted [[Keynesian economics]], [[state interventionism]], and the welfare state while placing less emphasis on the goal of replacing the capitalist system ([[factor market]]s, [[private property]], and [[wage labour]]) with a qualitatively different socialist [[economic system]].{{sfnm|1a1=Weisskopf|1y=1992|1p=10|2a1=Miller|2a2=1998|2p=827|3a1=Jones|3y=2001|3p=1410|4a1=Heywood|4y=2012|4pp=125–128}} Along with [[communism]], social democracy became the dominant political tendency within the international socialist movement by the early 1920s.<ref>{{harvnb|Newman|2005|p=5}}: "Chapter 1 looks at the foundations of the doctrine by examining the contribution made by various traditions of socialism in the period between the early 19th century and the aftermath of the First World War. The two forms that emerged as dominant by the early 1920s were social democracy and communism."</ref> While retaining socialism as a long-term goal,{{sfnm|1a1=Roemer|1y=1994|1pp=25–27|2a1=Berman|2y=1998|2p=57|3a1=Bailey|3y=2009|3p=77|4a1=Lamb|4y=2015|4pp=415–416}} social democracy is distinguished from some modern forms of democratic socialism for seeking to humanize capitalism and create the conditions for it to lead to greater democratic, [[egalitarian]], and [[solidaristic]] outcomes.{{sfn|Weisskopf|1992|p=10}} It is characterized by a commitment to policies aimed at curbing [[Social inequality|inequality]], eliminating [[oppression]] of [[Social privilege|underprivileged]] groups, and eradicating [[poverty]],{{sfnm|1a1=Heywood|1y=2012|1p=97|2a1=Hoefer|2y=2013|2p=29}} as well as support for universally accessible public services like [[child care]], [[Universal education|education]], [[elderly care]], [[Universal health care|health care]], and [[workers' compensation]].{{sfn|Hinchman|Meyer|2007|p=137}} It has strong connections with the [[labour movement]] and [[trade unions]], being supportive of [[collective bargaining]] rights for workers and measures to extend decision-making beyond politics into the economic sphere in the form of [[co-determination]], or [[social ownership]], for employees and stakeholders.{{sfnm|1a1=Hinchman|1a2=Meyer|1y=2007|1p=91|2a1=Mathers|2a2=Taylor|2a3=Upchurch|2y=2009|2p=51}} The [[Third Way]], which ostensibly aims to fuse [[liberal economics]] with social democratic [[welfare]] policies, is an ideology that developed in the 1990s and is sometimes associated with social democratic parties; some analysts have characterized the Third Way as part of the [[Neoliberalism|neoliberal]] movement.{{sfn|Romano|2006|p=11}} {{toc limit|3}} ==Overview== ===Definition=== Social democracy is defined as one of many [[socialist traditions]].{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1pp=80–103|2a1=Newman|2y=2005|2p=5}} As a [[political movement]], it aims to achieve socialism through [[Gradualism|gradual]] and [[Democracy|democratic]] means.{{sfnm|1a1=Steger|1y=1997|2a1=Safra|2y=1998|2p=920|3a1=Stevens|3y=2000|3p=1504|4a1=Duignan|4a2=Kalsang Bhutia|4a3=Mahajan|4y=2014}} This definition goes back to the influence of both the [[reformist socialism]] of [[Ferdinand Lassalle]] and the [[Proletarian internationalism|internationalist]] [[revolutionary socialism]] advanced by [[Karl Marx]] and [[Friedrich Engels]], by whom social democracy was influenced.{{sfn|Aspalter|2001|p=52}} As an international political movement and [[ideology]], social democracy has undergone various major forms throughout its history.{{sfnm|1a1=Miller|1y=1998|1p=827|2a1=Durlauf|2a2=Lawrence|2y=2008}} Whereas in the 19th century, it was "organized Marxism", social democracy became "organized reformism" by the 20th century.{{sfn|Eatwell|Wright|1999|p=80}} As a policy regime,{{sfnm|1a1=Egle|1a2=Henkes|1a3=Merkel|1a4=Petring|1y=2008|2a1=Kotz|2y=2009|3a1=Foster|3a2=Tsakiroglou|3y=2014}} social democracy entails support for a [[mixed economy]] and ameliorative measures to benefit the [[working class]] within the framework of [[democratic capitalism]].{{sfnm|1a1=Hinchman|1a2=Meyer|1y=2007|1p=112|2a1=Badie|2a2=Berg-Schlosser|2a3=Morlino|2y=2011|2p=2423|3a1=Heywood|3y=2012|3p=128}} By the 21st century, a social democratic policy regime{{refn|"Social democracy therefore came to stand for a broad balance between the market economy, on the one hand, and state intervention, on the other. Although this stance has been most clearly associated with reformist socialism, it has also been embraced, to a greater or lesser extent, by others, notably modern liberals and paternalist conservatives."{{sfn|Heywood|2012}}|group=nb}} is generally defined as an increase in [[welfare]] policies or an increase in [[public service]]s and may be used synonymously with the [[Nordic model]].{{sfn|Bolton|2020}} In political science, ''democratic socialism'' and ''social democracy'' are largely seen as synonyms,{{sfnm|1a1=Busky|1y=2000|1p=8|2a1=Sargent|2y=2008|2p=118|3a1=Heywood|3y=2012|3p=97|4a1=Hain|4y=2015|4p=3}} while they are distinguished in journalistic use.{{sfnm|1a1=Qiu|1y=2015|2a1=Barro|2y=2015|3a1=Tupy|3y=2016|4y=2016|5a1=Cooper|5y=2018|6a1=Rodriguez|6y=2018|7a1=Levitz, April 2019}} Under this democratic socialist definition,{{refn|"Social democracy is a political ideology focusing on an evolutionary road to socialism or the humanization of capitalism. It includes parliamentary process of reform, the provision of state benefits to the population, agreements between labor and the state, and the revisionist movement away from revolutionary socialism."{{sfn|O'Hara|2003|p=538}} "By the early twentieth century, ... many such [social democratic] parties had come to adopt parliamentary tactics and were committed to a gradual and peaceful transition to socialism. As a result, social democracy was increasingly taken to refer to democratic socialism, in contrast to revolutionary socialism."{{sfn|Heywood|2012}} "Social democracy refers to a political theory, a social movement or a society that aims to achieve the egalitarian objectives of socialism while remaining committed to the values and institutions of liberal democracy."{{sfn|Blume|Durlauf|2016|p=606}} "In general, a label for any person or group who advocates the pursuit of socialism by democratic means. Used especially by parliamentary socialists who put parliamentarism ahead of socialism, and therefore oppose revolutionary action against democratically elected governments. Less ambiguous than social democracy, which has had, historically, the opposite meanings of (1) factions of Marxism, and (2) groupings on the right of socialist parties."{{sfn|Brown|McLean|McMillan|2018}}|group=nb}} social democracy is an ideology seeking to gradually build an alternative [[socialist economy]] through the institutions of [[liberal democracy]].{{sfn|O'Hara|2003|p=538}} Starting in the post-war period, social democracy was defined as a policy regime advocating the reformation of capitalism to align it with the ethical ideals of [[social justice]].{{sfn|Kornai|Yingi|2009|pp=11–24}} In the 19th century, it encompassed various non-revolutionary and revolutionary currents of socialism, excluding [[anarchism]].{{sfnm|1a1=Ely|1y=1883|1pp=204–205|2a1=Eatwell|2a2=Wright|2y=1999|2p=80|3a1=Lamb|3y=2015|3pp=415–416}} In the early 20th century, social democracy came to refer to support for a process of developing society through existing political structures and opposition to revolutionary means, which are often associated with Marxism.{{sfn|O'Hara|2003|p=538}} ===Political party=== ''Social Democratic'' is the name of socialist parties in several countries. The term came to be associated with the positions of the German and Swedish parties. The first advocated [[revisionist Marxism]], while the second advocated a comprehensive [[welfare state]]. By the 21st century, parties advocating social democracy include Labour, Left,{{sfn|Lafontaine|2009|pp=3–4}} and some Green parties.{{sfn|March|2008}}{{refn|"The far left is becoming the principal challenge to mainstream social democratic parties, in large part because its main parties are no longer extreme, but present themselves as defending the values and policies that social democrats have allegedly abandoned."{{sfn|March|2008}}|group=nb}} Most social democratic parties consider themselves democratic socialists and are categorized as socialists.{{sfnm|1a1=Lightfoot|1y=2005|1p=17|2a1=Docherty|2a2=Lamb|2y=2006|3a1=Lamb|3y=2015}} They continue to reference socialism,{{sfn|Adams|1998|pp=144–145}} either as a [[post-capitalist]] order{{sfnm|1a1=Schweizer Radio und Fernsehen|1y=2010|2a1=Schweizer Radio und Fernsehen, November 2016|3a1=Schweizer Radio und Fernsehen, December 2016}} or, in more ethical terms, as a just society, described as representing democratic socialism,{{sfnm|1a1=New Democratic Party of Canada|1y=2013|2a1=New Democratic Party of Canada|2y=2018}} without any explicit reference to the economic system or its structure.{{sfn|Ludlam|Smith|2017|p=3}} Parties such as the [[Social Democratic Party of Germany]] and the [[Swedish Social Democratic Party]]{{refn|The party's first chapter in its statutes says "the intention of the Swedish Social Democratic Labour Party is the struggle towards the Democratic Socialism", which is defined as a society with a democratic economy based on the socialist principle "From each according to his ability, to each according to his need."{{sfn|Samuelsson|1968}}|group=nb}} describe their goal as developing democratic socialism,{{sfn|Egle|Henkes|Merkel|Petring|2008|p=180}} with social democracy as the principle of action.{{sfn|Social Democratic Party of Germany|2007}} In the 21st century, European social democratic parties represent the [[Centre-left politics|centre-left]] and most are part of the [[European Socialist Party]], while democratic socialist parties are to their left within the [[Party of the European Left]]. Many of those social democratic parties are members of the [[Socialist International]], including several democratic socialist parties, whose [[Frankfurt Declaration]] declares the goal of developing democratic socialism.{{sfn|Busky|2000|p=8}} Others are also part of the [[Progressive Alliance]], founded in 2013 by most contemporary or former member parties of the Socialist International.{{sfnm|1a1=Lambin|1y=2014|1p=269|2a1=Imlay|2y=2018|2p=465}} What [[socialists]] such as [[anarchists]], [[communists]], social democrats, [[syndicalists]], and some social democratic proponents of the [[Third Way]] share in common is history, specifically that they can all be traced back to the individuals, groups, and literature of the [[First International]], and have retained some of the terminology and symbolism such as the colour [[Red (political adjective)|red]]. How far society should intervene and whether the government, mainly the existing government, is the right vehicle for change are issues of disagreement.{{sfn|Docherty|Lamb|2006|pp=1–2}} As the ''Historical Dictionary of Socialism'' summarizes, "there were general criticisms about the social effects of the private ownership and control of capital", "a general view that the solution to these problems lay in some form of collective control (with the degree of control varying among the proponents of socialism) over the means of production, distribution, and exchange", and "there was agreement that the outcomes of this collective control should be a society that provided social equality and justice, economic protection, and generally a more satisfying life for most people".{{sfn|Docherty|Lamb|2006|pp=1–2}} ''Socialism'' became a catch-all term for the [[critics of capitalism]] and industrial society.{{sfn|Docherty|Lamb|2006|p=2}} Social democrats are [[anti-capitalists|anticapitalists]] insofar as criticism about "poverty, low wages, unemployment, economic and social inequality, and a lack of economic security" is linked to the [[private ownership]] of the [[means of production]].{{sfn|Docherty|Lamb|2006|pp=1–2}} ===Terminology=== In the 19th century, ''social democrat'' was a broad catch-all for international socialists owing their primary ideological allegiance to Lassalle or Marx, in contrast to those advocating various forms of [[utopian socialism]]. In one of the first scholarly works on European socialism written for an American audience, [[Richard T. Ely]]'s 1883 book ''French and German Socialism in Modern Times'', social democrats were characterized as "the extreme wing of the socialists" who were "inclined to lay so much stress on equality of enjoyment, regardless of the value of one's labor, that they might, perhaps, more properly be called communists".{{sfn|Ely|1883|p=204}} Many parties in this era described themselves as ''Social Democrats'', including the [[General German Workers' Association]] and the [[Social Democratic Workers' Party of Germany]], which merged to form the [[Social Democratic Party of Germany]], the [[Social Democratic Federation]] in Britain, and the [[Russian Social Democratic Labour Party]]. ''Social Democrat'' continued to be used in this context until the [[Bolshevik Revolution]] of October 1917, when ''Communist'' came into vogue for individuals and organizations espousing a revolutionary road to socialism.{{sfn|Williams|1985|p=289}}{{refn|According to [[Richard T. Ely]], "[social democrats] have two distinguishing characteristics. The vast majority of them are laborers, and, as a rule, they expect the violent overthrow of existing institutions by revolution to precede the introduction of the socialistic state. I would not, by any means, say that they are all revolutionists, but the most of them undoubtedly are. The most general demands of the social democrats are the following: The state should exist exclusively for the laborers; land and capital must become collective property, and production be carried on unitedly. Private competition, in the ordinary sense of the term, is to cease."{{sfn|Ely|1883|pp=204–205}}|group=nb}} ''Social democracy'' or ''social democratic'' remains controversial among socialists.{{sfn|Busky|2000|p=8}}{{refn|Donald F. Busky wrote: "Social democracy is a somewhat controversial term among democratic socialists. Many democratic socialists use ''social democracy '' as a synonym for ''democratic socialism'', while others, particularly revolutionary democratic socialists, do not, the latter seeing social democracy as something less than socialism—a milder, evolutionary ideology that seeks merely to reform capitalism. Communists also use the term ''social democratic'' to mean something less than true socialism that sought only to preserve capitalism by reform rather than by overthrowing and establishing socialism. Even revolutionary democratic socialists and Communists have at times, particularly the past, called their parties 'social democratic.'"{{sfn|Busky|2000|p=8}}|group=nb}} Some define it as representing a [[Marxist]] faction and non-communist socialists or the ''right-wing'' of socialism during the split with [[communism]].{{sfn|Brown|McLean|McMillan|2018}} Others have noted its pejorative use among communists and other socialists. According to [[Lyman Tower Sargent]], "''socialism'' refers to ''social'' theories rather than to theories oriented to the individual. Because many communists now call themselves ''democratic socialists'', it is sometimes difficult to know what a political label really means. As a result, ''social democratic'' has become a common new label for democratic socialist political parties."{{sfn|Sargent|2008|p=117}} ====Marxist revisionism==== [[Marxist revisionist]] [[Eduard Bernstein]]'s views influenced and laid the groundwork for developing post-war social democracy as a policy regime, [[Labour revisionism]], and the neo-revisionism{{sfn|Eatwell|Wright|1999|p=99}} of the [[Third Way]].{{sfn|Giddens|2003|p=2}} This definition of social democracy is focused on ethical terms, with the [[type of socialism]] advocated being [[Ethical socialism|ethical]] and [[Liberal socialism|liberal]].{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1p=86|2a1=Bastow|2a2=Martin|2y=2003|2pp=72–79|3a1=Heywood|3y=2012|3p=128}} Bernstein described socialism and social democracy in particular as organized liberalism;{{sfnm|1a1=Steger|1y=1997|1p=139|2a1=O'Meara|2y=2013|2p=16|3a1=Laidler|3y=2013|3p=253}} in this sense, [[liberalism]] is the predecessor and precursor of socialism,{{sfn|Freeden|Sargent|Stears|2013|p=350}} whose restricted view of [[Liberty (liberalism)|freedom]] is to be [[Liberty (socialism)|socialized]], while democracy must entail social democracy.{{sfn|Eatwell|Wright|1999|pp=83, 86}} For those social democrats, who still describe and see themselves as socialists, ''socialism'' is used in ethical or moral terms,{{sfnm|1a1=Giddens|1y=1998a|1p=71|2a1=Jackson|2a2=Tansey|2y=2008|2p=97}} representing democracy, egalitarianism, and social justice rather than a specifically socialist economic system.{{sfn|Kornai|Yingi|2009|pp=11–24}} Under this type of definition, social democracy's goal is that of advancing those values within a capitalist [[market economy]], as its support for a mixed economy no longer denotes the coexistence between [[Private property|private]] and [[public ownership]] or that between [[Economic planning|planning]] and [[market mechanism]]s but rather, it represents [[free market]]s combined with [[government intervention]] and [[Regulated market|regulations]].{{sfn|Eatwell|Wright|1999|p=100}} Social democracy has been seen as a revision of [[orthodox Marxism]],{{sfn|Duignan|Kalsang Bhutia|Mahajan|2014}} although this has been described as misleading for modern social democracy.{{sfn|Eatwell|Wright|1999|p=86}} Some distinguish between ideological social democracy as part of the broad socialist movement and social democracy as a policy regime. The first is called ''classical social democracy'' or ''classical socialism'',{{sfnm|1a1=Adams|1y=1999|1loc="British socialism and the Labour movement", "Social democracy to New Labour"|1pp=103–106, 128–131|2a1=Romano|2y=2006|2p=4}} contrasted with ''competitive socialism'',{{sfn|Döring|2007|p=3}} ''liberal socialism'',{{sfn|Adams|1999|loc="British socialism and the Labour movement", "Social democracy to New Labour"|pp=103–106, 128–131}} ''neo-social democracy'',{{sfnm|1a1=Walters|1y=2001|1p=66|2a1=Katseli|2a2=Milios|2a3=Pelagidis|2y=2018}} and ''new social democracy''.{{sfnm|1a1=Gamble|1a2=Wright|1y=1999|1p=6|2a1=Fitzpatrick|2y=2003|3a1=Bailey|3y=2009|3pp=14–17|4a1=Meyer|4a2=Rutherford|4y=2011|4pp=111–119|5a1=Taylor|5y=2013|5p=133}} ==Philosophy== As a form of reformist [[democratic socialism]],{{sfnm|1a1=Williams|1y=1985|1p=289|2a1=Foley|2y=1994|2p=23|3a1=Eatwell|3a2=Wright|3y=1999|3p=80|4a1=Busky|4y=2000|4p=8|5a1=Sargent|5y=2008|5p=117|6a1=Heywood|6y=2012|6p=97|7a1=Hain|7y=2015|7p=3}} social democracy rejects the either/or interpretation of capitalism versus socialism.{{sfn|Harrington|2011|p=93}} It claims that fostering a progressive evolution of capitalism will gradually result in the evolution of a capitalist economy into a socialist economy.{{sfn|Bose|2005|p=41}} All citizens should be legally entitled to certain social rights: universal access to public services such as education, health care, workers' compensation, and other services, including child care and care for the elderly.{{sfn|Hinchman|Meyer|2007|p=137}} Social democrats advocate freedom from discrimination based on differences in ability/disability, age, ethnicity, gender, language, race, religion, sexual orientation, and social class.{{sfn|Groenke|Hatch|2009|p=192}} [[File:Arbeiterbew.jpg|thumb|upright|200px|A portrait highlighting the five leaders of early social democracy in Germany{{refn|They include from top to row [[August Bebel]] and [[Wilhelm Liebknecht]] from the [[Social Democratic Workers' Party of Germany]]; [[Karl Marx]] as an ideal pulse in the middle; and [[Carl Wilhelm Tölcke]] and [[Ferdinand Lassalle]] from the [[General German Workers' Association]] in the bottom row.|group=nb}}]] Later in their life, [[Karl Marx]] and [[Friedrich Engels]] argued that in some countries, workers might be able to achieve their aims through peaceful means.{{sfn|Gray|Johnson|Walker|2014|pp=119–120}} In this sense, Engels argued that socialists were evolutionists, although both Marx and Engels remained committed to [[social revolution]].{{sfn|Steger|1999|p=186}} In developing social democracy,{{sfn|Steger|1997|pp=133, 146}} [[Eduard Bernstein]] rejected [[orthodox Marxism]]'s revolutionary and materialist foundations.{{sfn|Steger|1997|pp=80, 137}} Rather than [[class conflict]] and [[socialist revolution]],{{sfn|Freeden|Sargent|Stears|2013|p=350}} Bernstein's [[Marxist revisionism]] reflected that socialism could be achieved through cooperation between people regardless of class.{{sfn|Steger|1997|p=146}} Nonetheless, Bernstein paid deference to Marx, describing him as the father of social democracy but declaring that it was necessary to revise Marx's thought in light of changing conditions.{{sfn|Lerner|1993|p=65}} Influenced by the gradualist platform favoured by the [[Fabian movement]] in Britain,{{sfn|Mosse|2018|p=269}} Bernstein advocated a similar evolutionary approach to socialist politics that he termed ''evolutionary socialism''.{{sfn|Steger|1997|pp=4, 14, 135}} Evolutionary means include [[representative democracy]] and cooperation between people regardless of class. Bernstein accepted the Marxist analysis that the creation of socialism is interconnected with the evolution of capitalism.{{sfn|Steger|1997|p=146}} [[August Bebel]], Bernstein, Engels, [[Wilhelm Liebknecht]], Marx, and [[Carl Wilhelm Tölcke]] are all considered founders of social democracy in Germany. However, Bernstein and Lassalle, along with labourists and reformists such as [[Louis Blanc]] in France,{{sfn|Wright|1999|p=82}} led to the widespread association of social democracy with socialist reformism.{{sfnm|1a1=Megill|1y=1970|1p=37|2a1=Lipset|2y=1995|2p=1149|3a1=Brandal|3a2=Bratberg|3a3=Thorsen|3y=2013|3p=24}} While Lassalle was a reformist [[state socialist]],{{sfn|Berlau|1949|p=21}} Bernstein predicted a long-term coexistence of democracy with a [[mixed economy]] during the reforming of capitalism into socialism and argued that socialists needed to accept this.{{sfn|Steger|1997|p=146}} This mixed economy would involve [[State-owned enterprise|public]], [[cooperative]], and [[private enterprise]]s, and it would be necessary for an extended period before private enterprises evolve of their own accord into cooperative enterprises.{{sfn|Pierson|2001|p=25}} Bernstein supported state ownership only for certain parts of the economy that the state could best manage and rejected a mass scale of state ownership as being too burdensome to be manageable.{{sfn|Steger|1997|p=146}} Bernstein was an advocate of Kantian socialism and [[neo-Kantianism]].{{sfnm|1a1=Steger|1y=1997|1pp=96, 115–116|2a1=Eatwell|2a2=Wright|2y=1999|2p=86|3a1=Freeden|3a2=Sargent|3a3=Stears|3y=2013|3p=349}} Although unpopular early on, his views became mainstream after World War I.{{sfn|Mosse|2018}} In ''[[The Future of Socialism]]'' (1956), [[Anthony Crosland]] argued that "traditional capitalism has been reformed and modified almost out of existence, and it is with a quite different form of society that socialists must now concern themselves. Pre-war anti-capitalism will give us very little help", for a new kind of capitalism required a new kind of socialism. Crosland believed that these features of reformed managerial capitalism were irreversible, but it has been argued within the [[Labour Party (UK)|Labour Party]] and by others that [[Margaret Thatcher]] and [[Ronald Reagan]] brought about its reversal in the 1970s and 1980s. Although the post-war consensus represented a period where social democracy was "most buoyant", it has been argued that "post-war social democracy had been altogether too confident in its analysis" because "gains which were thought to be permanent turned out to be conditional and as the reservoir of capitalist growth showed signs of drying up".{{sfn|Eatwell|Wright|1999|p=93}} In ''Socialism Now'' (1974), Crosland argued that "[m]uch more should have been achieved by a Labour Government in office and Labour pressure in opposition. Against the dogged resistance to change, we should have pitted a stronger will to change. I conclude that a move to the Left is needed".{{sfn|Crosland|1974|p=44}} In ''Origin, Ideology and Transformation of Political Parties: East-Central and Western Europe Compared'', Vít Hloušek and Lubomír Kopecek explain how socialist parties have evolved from the 19th to the early 21st centuries. As the number of people in traditional working-class occupations such as factory workers and miners declined, socialists have successfully widened their appeal to the middle class by diluting their ideology;{{sfn|Hloušek|Kopecek|2013|pp=15–40}} however, there is still continuity between parties such as the SPD, the Labour Party in Britain, and other socialist parties which remain part of the same ''famille spirituelle'', or ideological party family, as outlined by most political scientists.{{sfn|Hloušek|Kopecek|2013|pp=41–66}} For many social democrats, [[Marxism]] is loosely held to be valuable for its emphasis on changing the world for a more just, better future.{{sfn|Berman|2006|p=153}} ===Development=== {{Marxism|related}} During the late 19th century and the early 20th century, social democracy was a broad labour movement within socialism that aimed to replace [[private ownership]] with [[social ownership]] of the [[means of production, distribution and exchange]], taking influence from both [[Marxism]] and the supporters of [[Ferdinand Lassalle]].{{sfnm|1a1=Ely|1y=1883|1pp=204–205|2a1=Lamb|2y=2015|2pp=415–416}} By 1868–1869, the socialism associated with [[Karl Marx]] had become the official theoretical basis of the first social democratic party established in Europe, the [[Social Democratic Workers' Party of Germany]].{{sfn|Schorske|1993|p=2}} By the early 20th century, the German social democratic politician [[Eduard Bernstein]] rejected the ideas in [[orthodox Marxism]] that proposed [[Historical materialism|specific historical progression]] and [[Proletarian revolution|revolution]] as a means to achieve [[social equality]], advancing the position that socialism should be grounded in [[Ethical socialism|ethical and moral arguments]] for [[social justice]] and [[egalitarianism]] that are to be achieved through [[Gradualism#Politics and society|gradual]] legislative [[reform]].{{sfn|Steger|1997|pp=80, 137}} Following the split between [[reformist]] and [[Revolutionary socialism|revolutionary]] socialists in the [[Second International]], socialist parties influenced by Bernstein rejected [[revolutionary politics]] in favour of [[parliamentary]] reform while remaining committed to [[Socialization (Marxism)|socialization]].{{sfn|Miller|1998|p=827}} During the 1920s and 1930s, social democracy became dominant in the socialist movement, mainly associated with reformist socialism while [[communism]] represented revolutionary socialism.{{sfn|Newman|2005|p=5}} Under the influence of politicians like [[Carlo Rosselli]] in Italy, social democrats began disassociating themselves from orthodox Marxism altogether as represented by [[Marxism–Leninism]],{{sfn|Bronner|1999|p=103}} embracing [[liberal socialism]],{{sfn|Bronner|1999|pp=103–104}} [[Keynesianism]],{{sfn|Bronner|1999|p=103}} and appealing to morality rather than any consistent systematic, [[Scientific method|scientific]], or [[materialist]] worldview.{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1p=86|2a1=Heywood|2y=2012|2p=128}} Social democracy appealed to [[communitarian]], [[corporatist]], and sometimes [[nationalist]] sentiments while rejecting the [[Economic determinism|economic]] and [[technological determinism]] generally characteristic of orthodox Marxism and [[economic liberalism]].{{sfn|Berman|2008|pp=12–13}} By the post-[[World War II]] period and its [[Post-war consensus|economic consensus]] and [[Post–World War II economic expansion|expansion]], most social democrats in Europe had abandoned their ideological connection to orthodox Marxism. They shifted their emphasis toward social policy reform as a compromise between [[capitalism]] to [[socialism]].{{sfn|Adams|1993|p=146}} According to [[Michael Harrington]], the primary reason for this was the perspective that viewed the Stalinist-era [[Soviet Union]] as having succeeded in usurping the legacy of Marxism and distorting it in propaganda to justify [[totalitarianism]].{{sfn|Harrington|2011|p=162}} In its foundation, the [[Socialist International]] denounced the Bolshevik-inspired communist movement, "for [it] falsely claims a share in the Socialist tradition".{{sfn|Socialist International|1951}} Furthermore, core tenets of Marxism have been regarded by social democrats as having become obsolete, including the prediction that the working class was the decisive class with the development of capitalism. In their view, this did not materialize in the aftermath of mass industrialization during World War II.{{sfn|Harrington|2011|p=162}} During the [[Third Way]] development of social democracy, social democrats adjusted to the neoliberal political climate that had existed since the 1980s. Those social democrats recognized that outspoken [[opposition to capitalism]] was politically non-viable and that accepting the [[The powers that be (phrase)|powers that be]], seeking to challenge [[free-market]] and ''[[laissez-faire]]'' variations of capitalism, was a more immediate concern.{{sfn|Romano|2006|p=113}} The Third Way stands for a modernized social democracy,{{sfnm|1a1=Lowe|1y=2004|2a1=Romano|2y=2006|2p=3|3a1=Ludlam|3a2=Smith|3y=2017|3p=3}} but the social democracy that remained committed to the gradual abolition of capitalism and social democrats opposed to the Third Way merged into democratic socialism.{{sfn|Lafontaine|2009}} Although social democracy originated as a revolutionary socialist or communist movement,{{sfn|Ely|1883|pp=204–205}} one distinction between democratic socialism and social democracy is that the former can include revolutionary means.{{sfnm|1a1=Duignan|1a2=Kalsang Bhutia|1a3=Mahajan|1y=2009|2a1=Abjorensen|2y=2019|2p=115}} The latter proposes [[representative democracy]] under the [[rule of law]] as the only acceptable constitutional form of government.{{sfn|Hinchman|Meyer|2007|p=91}} Social democracy has been described as the evolutionary form of democratic socialism that aims to gradually and peacefully achieve socialism through established political processes rather than [[social revolution]] as advocated by revolutionary socialists.{{sfnm|1a1=Steger|1y=1997|2a1=Safra|2y=1998|2p=920|3a1=Stevens|3y=2000|3p=1504|4a1=Duignan|4a2=Kalsang Bhutia|4a3=Mahajan|4y=2014}} In this sense, social democracy is synonymous with ''democratic socialism'' and represents its original form, that of socialism achieved by [[Democracy|democratic]] means, usually through the [[parliament]].{{sfn|O'Hara|2003|p=539}} While social democrats continue to call and describe themselves as ''democratic socialists'' or simply ''socialists'',{{sfnm|1a1=O'Reilly|1y=2007|1p=91|2a1=Raza|2y=2012|2p=86|3a1=Gage|3y=2018}} with time, the post-war association of social democracy as a policy regime,{{sfnm|1a1=Kornai|1a2=Yingi|1y=2009|1pp=11–24|2a1=Ludlam|2a2=Smith|2y=2017|2pp=1–15}} and the development of the Third Way,{{sfnm|1a1=Barrientos|1a2=Powell|1y=2004|1pp=9–26|2a1=Cammack|2y=2004|2pp=151–166|3a1=Romano|3y=2006|4a1=Hinnfors|4y=2006|5a1=Lafontaine|5y=2009|6a1=Corfe|6y=2010}} ''democratic socialism'' has come to include [[communist]] and [[revolutionary]] tendencies,{{sfnm|1a1=Busky|1y=2000|1pp=8–10|2a1=Sargent|2y=2008|2p=117|3a1=Alt|3a2=Chambers|3a3=Garrett|3a4=Kurian|3y=2010|3p=401|4a1=Abjorensen|4y=2019|4p=115}} representing the original meaning of ''social democracy'',{{sfnm|1a1=Ely|1y=1883|1pp=204–205|2a1=Ludlam|2a2=Smith|2y=2017|2p=5}} as the latter has shifted towards reformism.{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1p=80|2a1=Ludlam|2a2=Smith|2y=2017|2p=5}} ===Communism and the Third Way=== [[File:Lenin 1920.jpg|thumb|left|upright|[[Vladimir Lenin]], one revolutionary social democrat who paved the way for the split between Communists and Social Democrats{{refn|"The notion of 'socialism' became associated with social democratic parties and the notion of 'communism' with communist parties."{{sfn|Fuchs|2019}}|group=nb}}]] Before social democracy was associated with a policy regime with a specific set of socioeconomic policies, its economics ranged from [[communism]]{{sfnm|1a1=Ely|1y=1883|1pp=204–205|2a1=Busky|2y=2000|2p=8}} to [[syndicalism]] and the [[guild socialists]],{{sfn|Busky|2000|p=5}} who rejected or were opposed to the approach of some [[Fabians]],{{sfn|Wright|1983|p=62}} regarded as being "an excessively bureaucratic and insufficiently democratic prospect".{{sfn|Eatwell|Wright|1999|p=88}} Communists and revolutionary socialists were a significant part of social democracy and represented its revolutionary wing.{{sfn|Ely|1883|pp=204–205}} Although they remained committed to social democracy representing the highest form of democracy,{{sfn|Ritzer|2004|pp=478–479}} social democracy became associated with its reformist wing since the communist split starting in 1917.{{sfn|Eatwell|Wright|1999|p=80}} The [[Russian Revolution]] further exacerbated this division, resulting in a split between those supporting the [[October Revolution]] renaming themselves as ''Communist'' and those opposing the [[Bolshevik]] development (favouring the liberal social democratic development as argued by the [[Mensheviks]]) remaining with the ''Social Democrat'' label.{{sfn|Naarden|2002|p=441}} Rather than abandoning social democracy, Communists remained committed to revolutionary social democracy, merging into communism;{{sfn|Ritzer|2004|pp=478–479}} however, they saw ''Social Democrat'' associated with reformism, found it irredeemably lost and chose ''Communist'' to represent their views.{{sfnm|1a1=Williams|1y=1985|1p=289|2a1=Busky|2y=2000|2p=8}} For the Communists, the Social Democrats betrayed the world's [[working class]] by supporting the imperialist [[Great War]] and leading their national governments into the war. The Communists also criticized their reformism, arguing that it represented "reformism without reforms".{{sfn|Steger|1997|pp=217–219}} This reformist–revolutionary division culminated in the [[German Revolution of 1919]],{{sfn|Chickering|1998|p=155}} in which the Communists wanted to overthrow the German government to turn it into a [[Soviet republic (system of government)|soviet republic]] like it was done in Russia, while the Social Democrats wanted to preserve it as what came to be known as the [[Weimar Republic]].{{sfnm|1a1=Berman|1y=1998|1pp=145–146|2a1=Childs|2y=2000|2p=2}} Those revolutions transformed the social democracy from "Marxist revolutionary" into a form of "moderate parliamentary socialism".{{sfn|Adams|2001|p=108}} [[File:Charles-Anthony-Raven-Crosland (cropped).jpg<!-- File:Ford A9572, File:Crosland Kissinger crop.jpg, File:Anthonycrossland.jpg -->|thumb|upright|[[Anthony Crosland]], who argued that traditional capitalism had been reformed and modified almost out of existence by the social democratic welfare policy regime after World War II]] While evolutionary and reformist social democrats believe that [[capitalism]] can be reformed into [[socialism]],{{sfn|Steger|1997|p=137}} revolutionary social democrats argue that this is impossible and that a [[social revolution]] would still be necessary. The revolutionary criticism of reformism but not necessarily of reforms which are part of the class struggle goes back to Marx, who proclaimed that social democrats had to support the bourgeoisie wherever it acted as a revolutionary, progressive class because "bourgeois liberties had first to be conquered and then criticised".{{sfn|Bernstein|1897}} Internal rivalry in the social democratic movement within the [[Second International]] between reformists and revolutionaries resulted in the Communists, led by the [[Bolsheviks]], founding their own separate [[Communist International]] (Comintern) in 1919 that sought to rally revolutionary social democrats together for socialist revolution. With this split, the social democratic movement was now dominated by reformists, who founded the [[Labour and Socialist International]] (LSI) in 1923. The LSI had a history of rivalry with the Comintern, with which it competed over the leadership of the international socialist and labour movement.{{sfn|Vickers|2004|p=72}} In Britain, the social democratic [[Gaitskellites]] emphasized the goals of [[personal liberty]], [[social welfare]], and [[social equality]].{{sfn|Brivati|Heffernan|2000|p=301}} The Gaitskellites were part of a political consensus between the [[Labour Party (UK)|Labour]] and [[Conservative Party (UK)|Conservative]] parties, famously dubbed [[Butskellism]].{{sfn|Haseler|1969}} Some social democratic Third Way figures such as [[Anthony Giddens]] and [[Tony Blair]], who has described himself as a Christian socialist and a socialist in ethical terms,{{sfn|Jackson|Tansey|2008|p=97}} insist that they are socialists,{{sfn|Giddens|1998b|p=71}} for they claim to believe in the same values that their anti-Third Way critics do.{{sfnm|1a1=Blair|1y=1995|1p=2|1loc="Labour Past, Present and Future"|2a1=''The Guardian''|2y=2006|3a1=Diamond|3y=2015|4a1=Eaton|4y=2017}} According to those self-proclaimed social democratic modernizers, [[Clause IV]]'s open advocacy of state socialism was alienating potential middle-class Labour supporters, and nationalization policies had been so thoroughly attacked by neoliberal economists and politicians, including rhetorical comparisons by the right of state-owned industry in the West to that in the Soviet Union and the Eastern Bloc, and nationalizations and state socialism became unpopular. [[Thatcherite]] Conservatives were adept at condemning [[state-owned enterprise]]s as economically inefficient.{{sfn|Campbell|2009|p=95}} For the Gaitskellites, nationalization was not essential to achieve all major socialist objectives; [[public ownership]] and [[nationalization]] were not explicitly rejected but were seen as merely one of numerous useful devices.{{sfn|Brivati|Heffernan|2000|p=301}} According to social democratic modernizers like Blair, nationalization policies had become politically unviable by the 1990s.{{sfnm|1a1=Lowe|1y=2004|2a1=Romano|2y=2007|2p=3|3a1=Ludlam|3a2=Smith|3y=2017|3p=1–15}} Some critics and analysts argue that many prominent social democratic parties,{{refn|"With the rise of neoliberalism, social democracy turned towards the right and increasingly adopted neoliberal policies. When Tony Blair became British Prime Minister in 1997, his neoliberal vision of social democracy influenced social democracy around the world. The consequence was that social democracy became in many respects indistinguishable from conservative parties, especially in respect to class politics."{{sfn|Fuchs|2019}}|group=nb}} such as the Labour Party in Britain and the [[Social Democratic Party of Germany]], even while maintaining references to socialism and declaring themselves democratic socialist parties, have abandoned socialism in practice, whether unwillingly or not.{{sfnm|1a1=Barrientos|1a2=Powell|1y=2004|1p=18|2a1=Cammack|2y=2004|2p=155|3a1=Romano|3y=2006|3p=11|4a1=Hinnfors|4y=2006|4pp=117, 137–139|5a1=Lafontaine|5y=2009|5p=7|6a1=Corfe|6y=2010|6pp=33, 178}} ==Social democracy and democratic socialism== {{Further|Democratic socialism}} {{Socialism sidebar|variants}} Social democracy has some significant overlap in practical policy positions with democratic socialism,{{sfnm|1a1=Denitch|1y=1981|2a1=Picard|2y=1985|3a1=Foley|3y=1994|3p=23|4a1=Busky|4y=2000|4p=8|5a1=Heywood|5y=2012|5p=97|6a1=Sunkara|6y=2020}} although they are usually distinguished from each other.{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1pp=80|2a1=Busky|2y=2000|2p=8|3a1=Anderson|3a2=Herr|3y=2007|4a1=Alt|4a2=Chambers|4a3=Garrett|4a4=Kurian|4y=2010|5a1=Sunkara|5y=2020}} In Britain, the revised version of [[Clause IV]] to the [[Labour Party Constitution]], which was implemented in the 1990s by the [[New Labour]] faction led by [[Tony Blair]],{{sfn|Ludlam|Smith|2017|pp=1–15}} affirms a formal commitment to democratic socialism,{{sfn|Adams|1998|pp=144–145}} describing it as a modernized form of social democracy;{{sfnm|1a1=Lowe|1y=2004|2a1=Romano|2y=2007|2p=3|3a1=Ludlam|3a2=Smith|3y=2017|3p=3}} however, it no longer commits the party to public ownership of industry and in its place advocates "the enterprise of the market and the rigour of competition" along with "high quality public services either owned by the public or accountable to them".{{sfn|Adams|1998|pp=144–145}} Many social democrats "refer to themselves as socialists or democratic socialists", and some such as Blair{{sfnm|1a1=Blair|1y=1995|1p=2|1loc="Labour Past, Present and Future"|2a1=''The Guardian''|2y=2006|3a1=Diamond|3y=2015|4a1=Eaton|4y=2017}} "use or have used these terms interchangeably".{{sfnm|1a1=O'Reilly|1y=2007|1p=91|2a1=Raza|2y=2012|2p=86|3a1=Gage|3y=2018}} Others argue that "there are clear differences between the three terms, and preferred to describe their own political beliefs by using the term 'social democracy' only".{{sfn|Brandal|Bratberg|Thorsen|2013|p=7}} ''Democratic socialism''{{refn|Democratic socialism is generally defined as an [[anti-Stalinist]] left-wing [[big tent]] that opposes [[authoritarian socialism]], rejecting [[self-described socialist states]], as well as [[Marxism–Leninism]] and its derivatives such as [[Maoism]] and [[Stalinism]].{{sfnm|1a1=Busky|1y=2000|1pp=7–8|2a1=Schweickart|2y=2007|2p=448}} Besides social democrats, democratic socialists also include some [[anarchists]],{{sfn|Dongyoun|2016|pp=171–174}} [[classical Marxist]]s,{{sfn|Sargent|2008|p=118}} [[democratic communists]],{{sfnm|1a1=Megill|1y=1970|1p=45|2a1=Fleet|2y=1973|3a1=Sargent|3y=2008|3p=117}} [[libertarian socialists]],{{sfnm|1a1=Draper|1y=1966|2a1=Poulantzas|2y=1978|3a1=Hain|3y=1995|4a1=Hain|4y=2000}} [[market socialist]]s,{{sfn|Schweickart|2007|p=448}} and [[orthodox Marxists]] such as [[Karl Kautsky]]{{sfnm|1a1=Muldoon|1y=2019|2a1=Post|2y=2019|3a1=Blanc|3y=2019}} and [[Rosa Luxemburg]],{{sfnm|1a1=Draper|1y=1966|1loc="The 'Revisionist' Facade"|2a1=Sunkara|2y=2020}} as well as [[Revisionism (Marxism)|revisionists]] such as [[Eduard Bernstein]], who supported social democracy.{{sfnm|1a1=Bernstein|1y=1907|2a1=Steger|2y=1997}}|group=nb}} represents social democracy before the 1970s,{{sfnm|1a1=Schumpeter|1y=1942|2a1=Thomas|2y=1953|3a1=Williams|3y=1985|4a1=Hattersley|4y=1987|5a1=Tomlinson|5y=1997|6a1=Medearis|6y=1997}} when the [[post-war displacement of Keynesianism]] by [[monetarism]] and neoliberalism caused many social democratic parties to adopt the Third Way ideology, accepting [[capitalism]] as the ''[[status quo]]'' for the time being and redefining [[socialism]] in a way that maintains the capitalist structure intact.{{sfnm|1a1=Barrientos|1a2=Powell|1y=2004|2a1=Romano|2y=2006|3a1=Hinnfors|3y=2006|4a1=Lafontaine|4y=2009|5a1=Corfe|5y=2010}} Like modern social democracy, democratic socialism tends to follow a gradual or evolutionary path to socialism rather than a revolutionary one.{{sfn|Hamilton|1989}}{{sfnm|1a1=Busky|1y=2000|1p=10|2a1=Pierson|2y=2005|3a1=Heywood|3y=2012|3p=97}} Policies commonly supported are [[Keynesian]] and include some degree of [[regulation over the economy]], [[social insurance]] schemes, public [[pension]] programs, and a gradual expansion of [[public ownership]] over major and strategic industries.{{sfn|Sargent|2008|p=117}} ===Internal debates=== During the late 20th century, those labels were embraced, contested and rejected due to the emergence of developments within the European left,{{sfn|Wintrop|1983|p=306}} such as [[Eurocommunism]],{{sfn|Kindersley|2016}} the rise of neoliberalism,{{sfnm|1a1=Lavelle|1y=2005|2a1=Birch|2a2=MacLeavy|2a3=Springer|2y=2016|3a1=Humphrys|3y=2018}} the [[Dissolution of the Soviet Union|fall of the Soviet Union]] and the [[Revolutions of 1989]],{{sfn|Docherty|Lamb|2006|p=82}} the [[Third Way]],{{sfnm|1a1=Barrientos|1a2=Powell|1y=2004|1pp=9–26|2a1=Cammack|2y=2004|2pp=151–166|3a1=Romano|3y=2006|4a1=Hinnfors|4y=2006|5a1=Lafontaine|5y=2009|6a1=Corfe|6y=2010}} and the rise of [[Anti-austerity movement|anti-austerity]]{{sfn|Calossi|2016}} and [[Occupy movement|Occupy]]{{sfn|Kwok|Rieger|2013|p=40}} movements due to the global [[financial crisis of 2007–2008]]{{refn|It peaked after the mid-September 2008 outbreak.{{sfn|CNBC|2009}}|group=nb}} and the [[Great Recession]],{{sfnm|1a1=Dionne|1a2=Galtson|1y=2019|2a1=Cassidy|2y=2019|3a1=Kvitrud|3y=2019|4a1=Sears|4y=2019|4p=243}} the causes of which have been attributed by some to the neoliberal shift and deregulation economic policies.{{sfnm|1a1=Palley|1y=2013|2a1=Amadeo|2y=2019|3a1=Sitaraman|3y=2019}} This latest development contributed to the rise of politicians, such as [[Jeremy Corbyn]] in Britain and [[Bernie Sanders]] in the United States,{{sfn|Tarnoff|2017}} who rejected [[centrist]] politicians that supported [[Triangulation (politics)|triangulation]] within the [[Labour Party (UK)|Labour]] and [[Democratic Party (United States)|Democratic]] parties.{{sfnm|1a1=Huges|1y=2016|2a1=Associated Press|2y=2018}} According to both right-wing critics and supporters alike, policies such as universal [[Universal healthcare|health care]] and [[Universal education|education]] are "pure Socialism" because they are opposed to "the hedonism of capitalist society".{{sfn|Bevan|1952|p=106}} Because of this overlap, ''democratic socialism'' refers to European socialism as represented by social democracy,{{sfnm|1a1=Busky|1y=2000|1p=8|2a1=Sargent|2y=2008|2p=118|3a1=Heywood|3y=2012|3p=97|4a1=Hain|4y=2015|4p=3|5a1=Levitz, April 2019}} especially in the United States,{{sfnm|1a1=Benson|1y=2015|2a1=Gram|2y=2015|3a1=Murphy|3y=2017}} where it is tied to the [[New Deal]].{{sfnm|1a1=Prokop|1y=2015|2a1=Sanders|2y=2015|3a1=Frizell|3y=2019|4a1=Sanders|4y=2019|5a1=Golshan|5y=2019}} Some democratic socialists who follow social democracy support practical, [[Progressivism|progressive]] reforms of capitalism and are more concerned with administrating and humanising it, with socialism relegated to the indefinite future.{{sfnm|1a1=Berman|1y=1998|1p=57|2a1=Bailey|2y=2009|2p=77}} Other democratic socialists want to go beyond mere meliorist reforms and advocate the systematic transformation of the [[mode of production]] from [[Capitalist mode of production (Marxist theory)|capitalism]] to [[Socialist mode of production|socialism]].{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1p=80|2a1=Anderson|2a2=Herr|2y=2007|3a1=Alt|3a2=Chambers|3a3=Garrett|3a4=Kurian|3y=2010}} ===In the United States=== Despite the long history of overlap between the two, with social democracy considered a form of democratic or parliamentary socialism and social democrats calling themselves democratic socialists,{{sfnm|1a1=Busky|1y=2000|1p=8|2a1=Sargent|2y=2008|2p=118|3a1=Heywood|3y=2012|3p=97|4a1=Hain|4y=2015|4p=3}} ''democratic socialism'' is considered a misnomer in the United States.{{sfnm|1a1=Qiu|1y=2015|2a1=Barro|2y=2015|3a1=Tupy|3y=2016|4y=2016|5a1=Levitz, April 2019}} One issue is that ''social democracy'' is equated with wealthy countries in the Western world, especially in Northern and Western Europe, while ''democratic socialism'' is conflated either with the [[pink tide]] in Latin America, especially with Venezuela,{{sfnm|1a1=Stephens|1y=2019|2a1=Faiola|2y=2019|3a1=Haltiwanger|3y=2020|4a1=Krugman|4y=2020}} or with communism in the form of [[Marxist–Leninist]] socialism as practised in the Soviet Union and other [[Communist state|self-declared socialist states]].{{sfnm|1a1=Qiu|1y=2015|2a1=Barro|2y=2015|3a1=Tupy|3y=2016|4y=2016|5a1=Cooper|5y=2018|6a1=Rodriguez|6y=2018|7a1=Levitz, April 2019}} ''Democratic socialism'' has been described as representing the left-wing{{sfn|Levitz, April 2019}} or socialist tradition of the [[New Deal]].{{sfnm|1a1=Marcetic|1y=2019|2a1=Ackerman|2y=2019}} The lack of a strong and influential [[socialist movement in the United States]] has been linked to the [[Red Scare]],{{sfnm|1a1=Foner|1y=1984|2a1=Oshinsky|2y=1988|3a1=Zimmerman|3y=2010}} and any ideology associated with socialism brings social stigma due to its association with [[Authoritarian socialism|authoritarian]] [[socialist states]].{{sfn|Leibovich|2007}} ''Socialism'' has been used as a pejorative term by members of the [[Right-wing politics|political right]] to stop the implementation of [[Liberalism in the United States|liberal]] and [[Progressivism in the United States|progressive]] policies and proposals and to criticize the public figures trying to implement them.{{sfnm|1a1=Truman|1y=1952|2a1=Jackson|2y=2012|3a1=Astor|3y=2019}} Although Americans may reject the idea that the United States has characteristics of a European-style social democracy, it has been argued by some observers that it has a comfortable [[social safety net]], albeit severely underfunded in comparison to other Western countries.{{sfn|Zimmerman|2010}} It has also been argued that many policies that may be considered socialist are popular but that socialism is not.{{sfn|Levitz, April 2019}} Others, such as [[Tony Judt]], described [[modern liberalism in the United States]] as representing European social democracy.{{sfn|''The Economist''|2010}} ===In South Africa=== South Africa has been governed by the [[African National Congress]] (ANC), a social-democratic party, since 1994. In 2022, The World Economic Forum said that South Africa risks state collapse and identified five major risks facing the country.<ref>{{cite web |last=Head |first=Tom |url=https://www.thesouthafrican.com/news/breaking-is-south-africa-military-coup-state-collapse-threats/ |title=South Africa 'at risk of STATE COLLAPSE' - according to top experts |date=12 January 2022 |archive-url=https://web.archive.org/web/20220112083527/https://www.thesouthafrican.com/news/breaking-is-south-africa-military-coup-state-collapse-threats/ |archive-date=12 January 2022}}</ref> Former minister Jay Naidoo has said that South Africa is in serious trouble and is showing signs of a failed state, with record unemployment levels and the fact that many young people will not find a job in their lifetime.<ref>{{cite web |url=https://mybroadband.co.za/news/investing/464455-south-africa-showing-signs-of-a-failed-state.html |title=South Africa showing signs of a failed state |date=13 October 2022 |website=mybroadband.co.za |archive-url=https://web.archive.org/web/20221013112128/https://mybroadband.co.za/news/investing/464455-south-africa-showing-signs-of-a-failed-state.html |archive-date=13 October 2022}}</ref> ==Policy regime== In the 21st century, it has become commonplace to reference social democracy as the European social democracies, namely the actually-existing states in Northern and Western European countries,{{sfn|Blume|Durlauf|2016|pp=610–611}} usually in reference to their model of the [[welfare state]] and [[corporatist]] system of [[collective bargaining]].{{sfn|Egle|Henkes|Merkel|Petring|2008}} European social democracies represent a socioeconomic order that has been described as starting in the 1930s, 1940s, or 1950s and ending in the 1970s, 1980s, or 1990s. Henning Meyer and Jonathan Rutherford associate social democracy with the socioeconomic order in Europe from the post-war period until the early 1990s.{{sfn|Meyer|Rutherford|2011}} This has been accepted or adopted across the political spectrum,{{sfn|Heywood|2012}} including [[conservatives]] ([[Christian democrats]]), [[Liberalism|liberals]] ([[social liberals]]), and [[socialists]] (social democrats);{{sfn|Esping-Andersen|2013}} one notable difference is that socialists see the welfare state "not merely to provide benefits but to build the foundation for emancipation and self-determination".{{sfn|Sacks|2019}} Social democratic roots are also observed in Latin America during the early 20th century; this was the case in Uruguay during the two presidential terms of [[José Batlle y Ordóñez]].{{sfn|Altman|2011}} Social democracy influenced the development of [[social corporatism]], a form of economic [[Tripartism|tripartite]] corporatism based upon a social partnership between the interests of [[Capital (economics)|capital]] and [[Labour (economics)|labour]], involving collective bargaining between representatives of employers and labour mediated by the government at the national level.{{sfn|Hicks|1988}} During the [[post-war consensus]], this form of social democracy has been a major component of the [[Nordic model]] and, to a lesser degree, the West European [[social market economies]].{{sfn|Rosser|Rosser|2003|p=226}} The development of social corporatism began in Norway and [[Sweden]] in the 1930s and was consolidated in the 1960s and 1970s.{{sfn|Moschonas|2002|p=65}} The system was based upon the dual compromise of capital and labour as one component and the market and the state as the other.{{sfn|Moschonas|2002|p=65}} From the 1940s through the 1970s, defining features of social democracy as a policy regime included Keynesian economic policies and industrial agreements to balance the power of capital and labour and the welfare state.{{sfn|O'Hara|2003|p=538}} This is especially associated with the Swedish [[Swedish Social Democratic Party|Social Democrats]].{{sfnm|1a1=Samuelsson|1y=1968|2a1=Carlsson|2a2=Lindgren|2y=1998}} In the 1970s, social corporatism evolved into [[neo-corporatism]], which replaced it. Neo-corporatism has represented an important concept of [[Third Way social democracy]].{{sfn|Whyman|2005|p=208}} Social democratic theorist Robin Archer wrote about the importance of social corporatism to social democracy in his work ''Economic Democracy: The Politics of a Feasible Socialism'' (1995).{{sfn|Archer|1995}} As a welfare state, social democracy is a specific type of welfare state and policy regime described as being universalist, supportive of collective bargaining, and more supportive of public provision of welfare. It is especially associated with the Nordic model.{{sfnm|1a1=Esping-Andersen|1y=2013|2a1=Brandal|2a2=Bratberg|2a3=Thorsen|2y=2013}} Social democracy rests on three fundamental features, namely "(1) democracy (e.g., equal rights to vote and form parties), (2) an economy partly regulated by the state (e.g., through Keynesianism), and (3) a welfare state offering social support to those in need (e.g., equal rights to education, health service, employment, and pensions)".{{sfn|Badie|Berg-Schlosser|Morlino|2011|p=2423}} In practice, social democratic parties have been instrumental in the social-liberal paradigm, lasting from the 1940s and 1970s, and called such because it was developed by social liberals but implemented by social democrats.{{sfnm|1a1=Adams|1y=2001|p=31|2a1=Árnason|2a2=Wittrock|2y=2012|2pp=30, 192}} Since those policies were mostly implemented by social democrats, social liberalism is sometimes called ''social democracy''.{{sfn|Kenworthy|2014}} In Britain, the social-liberal [[Beveridge Report]] drafted by the [[Liberal (UK)|Liberal]] economist [[William Beveridge]] influenced the [[Labour Party (UK)|Labour Party]]'s social policies, such as the [[National Health Service]] and Labour's welfare state development.{{sfn|Jefferys|1994}} This social-liberal paradigm represented the post-war consensus and was accepted across the political spectrum by conservatives, liberals and socialists until the 1970s.{{sfn|Adams|2001|p=37}} Similarly, the neoliberal paradigm, which replaced the previous paradigm, was accepted across the mainstream political parties, including social democratic supporters of the Third Way.{{sfn|Adams|2001|pp=212–213}} This has caused much controversy within the social democratic movement.{{sfnm|1a1=Barrientos|1a2=Powell|1y=2004|1p=18|2a1=Cammack|2y=2004|2p=155|3a1=Romano|3y=2006|3p=11|4a1=Hinnfors|4y=2006|4pp=117, 137–139|5a1=Lafontaine|5y=2009|5p=7|6a1=Corfe|6y=2010|6pp=33, 178}} ===Implementation=== From the late 19th century until the mid to late 20th century, there was greater public confidence in the idea of a state-managed economy that was a major pillar of communism, and to a substantial degree by [[conservatives]] and [[left-liberal]]s.{{sfnm|1a1=Rothestein|1y=1998|1pp=18–27|2a1=Esping-Andersen|2y=2013}} Aside from [[anarchists]] and other [[libertarian socialists]], there was confidence amongst socialists in the concept of [[state socialism]] as being the most effective form of socialism. Some early British social democrats in the 19th century and 20th century, such as the [[Fabians]], said that British society was already mostly socialist and that the economy was significantly socialist through government-run enterprises created by conservative and liberal governments which could be run for the interests of the people through their representatives' influence,{{sfn|Eatwell|Wright|1999|pp=87–88}} an argument reinvoked by some socialists in post-war Britain.{{sfnm|1a1=Crosland|1y=1952|2a1=Kynaston|2y=2009|2p=82}} Advents in economics and observation of the failure of state socialism in the [[Eastern Bloc]] countries{{sfn|Gey|Kosta|Quaisser|1987}} and the Western world with the crisis and stagflation of the 1970s,{{sfnm|1a1=Miller|1y=2008|2a1=Ehns|2y=2016|2pp=4–5}} combined with the neoliberal rebuke of [[state interventionism]], resulted in socialists re-evaluating and redesigning socialism.{{sfn|Eatwell|Wright|1999|pp=93–95}} Some social democrats have sought to keep what they deem are socialism's core values while changing their position on state involvement in the economy and retaining significant social regulations.{{sfn|Eatwell|Wright|1999|pp=96–103}} {{multiple image|total_width=330|image1=Aneurin Bevan (1943).jpg|width1=230|height1=300|caption1=[[Aneurin Bevan]], [[Minister of Health (United Kingdom)|minister of health]] (1945–1951)|image2=Bundesarchiv Bild 183-1988-0108-059, Paris, Besuch Erich Honecker, Mitterrand (cropped).jpg|width2=230|height2=300|caption2=[[François Mitterrand]], [[president of France]]<br>(1981–1995)}} When [[nationalization]] of large industries was relatively widespread in the 20th century until the 1970s, it was not uncommon for commentators to describe some European social democracies as democratic socialist states seeking to move their countries toward a [[socialist economy]].{{sfnm|1a1=Heilbroner|1y=1991|1pp=96–110|2a1=Kendall|2y=2011|2pp=125–127|3a1=Li|3y=2015|3pp=60–69}} In 1956, leading [[Labour Party (UK)|Labour Party]] politician and British author [[Anthony Crosland]] said that capitalism had been abolished in Britain,{{sfnm|1a1=Crosland|1y=1952|2a1=Eatwell|2a2=Wright|2y=1999|2p=93}} although others such as Welshman [[Aneurin Bevan]], Minister of Health in the first [[post-war Labour government]] and the architect of the [[National Health Service]], disputed the claim.{{sfnm|1a1=Socialist Party of Great Britain|1y=1958|2a1=Crosland|2y=2006|2pp=9, 89}} For Crosland and others who supported his views, Britain was a socialist state.{{sfnm|1a1=Crosland|1y=1952|2a1=Kynaston|2y=2009|2p=82}} According to Bevan, Britain had a socialist [[National Health Service]], which opposed the [[hedonism]] of Britain's capitalist society.{{sfn|Bevan|1952|p=106}} Although, as in the rest of Europe, the [[Capital accumulation|laws of capitalism]] still operated fully and [[private enterprise]] dominated the economy,{{sfn|Batson|2017}} some political commentators stated that during the post-war period, when social democratic parties were in power, countries such as Britain and France were democratic socialist states. The same claim has been applied to Nordic countries with the Nordic model.{{sfnm|1a1=Heilbroner|1y=1991|1pp=96–110|2a1=Kendall|2y=2011|2pp=125–127|3a1=Li|3y=2015|3pp=60–69}} In the 1980s, the government of President [[François Mitterrand]] aimed to expand [[dirigism]] and attempted to nationalize all French banks, but this attempt faced opposition from the [[European Economic Community]] because it demanded a free-market economy among its members.{{sfnm|1a1=Cobham|1y=1984|21pp=351–358|2a1=Cohen|2y=2010}} [[Public ownership]] never accounted for more than 15–20% of [[capital formation]], further dropping to 8% in the 1980s and below 5% in the 1990s after the rise of neoliberalism.{{sfn|Batson|2017}} One issue of social democracy is the response to the collapse of legitimacy of state socialism and state-interventionist economics of [[Keynesianism]] with the discovery of the phenomenon of [[stagflation]] which has been an issue for the legitimacy of state socialism.{{sfnm|1a1=Miller|1y=2008|2a1=Ehns|2y=2016|2pp=4–5}} This has provoked re-thinking of how socialism should be achieved by social democrats,{{sfn|Egle|Henkes|Merkel|Petring2008|p=253}} including changing views by social democrats on private property—anti-Third Way social democrats such as Robert Corfe have advocated a socialist form of private property as part of new socialism (although Corfe technically objects to ''[[private property]]'' as a term to collectively describe property that is not publicly owned as being vague) and rejecting state socialism as a failure.{{sfnm|1a1=Corfe|1y=2001|1p=74|2a1=Corfe|2a2=Miller|2y=2002|2p=51|3a1=Corfe|3y=2005|3p=20}} Third Way social democracy was formed in response to what its proponents saw as a crisis in the legitimacy of socialism—especially state socialism—and the rising legitimacy of neoliberalism, especially ''laissez-faire'' capitalism. The Third Way's view of the crisis is criticized for being too simplistic.{{sfn|Lemke|Marks|1992|p=5}} Others have criticized it because with the fall of state socialism, it was possible for "a new kind of 'third way' socialism (combining social ownership with markets and democracy), thereby heralding a revitalization of the social democratic tradition";{{sfn|Eatwell|Wright|1999|p=95}} however, it has been argued that the prospect of a new socialism was "a chimera, a hopeful invention of Western socialists who had not understood how '[[actually existing socialism]]' had totally discredited ''any'' version of socialism among those who had lived under it".{{sfn|Eatwell|Wright|1999|p=95}} ==Analysis== ===Legacy=== {{Corporatism sidebar|related}} {{Progressivism|related}} Social democratic policies were first adopted in the [[German Empire]] between the 1880s and 1890s, when the [[Conservatism in Germany|conservative]] Chancellor [[Otto von Bismarck]] put in place many [[social welfare]] proposals initially suggested by the [[Social Democratic Party of Germany|Social Democrats]] to hinder their electoral success after he instituted the [[Anti-Socialist Laws]], laying the ground of the first modern [[welfare state]].{{sfn|Sacks|2019}} Those policies were dubbed [[State Socialism (Germany)|State Socialism]] by the [[Liberalism in Germany|liberal]] opposition, but Bismarck later accepted and re-appropriated the term.{{sfn|Feuchtwanger|2002|p=221}} It was a set of social programs implemented in Germany that Bismarck initiated in 1883 as remedial measures to appease the [[working class]] and reduce support for [[socialism]] and the Social Democrats following earlier attempts to achieve the same objective through Bismarck's Anti-Socialist Laws.{{sfnm|1a1=Bismarck|1y=1884|2a1=Gregory|2a2=Stuart|2y=2003|2p=207|3a1=Sacks|3y=2019}} This did not prevent the Social Democrats from becoming the biggest party in parliament by 1912.{{sfn|Boissoneault|2017}} Similar policies were later adopted in most of Western Europe, including France and the United Kingdom (the latter in the form of the [[Liberal welfare reforms]]),{{sfn|The National Archive (Liberal Welfare Reforms 1906–11)}} with both socialist and liberal parties adopting those policies.{{sfn|Esping-Andersen|2013}} In the United States, the [[Progressivism in the United States|progressive movement]], a similar social democratic movement predominantly influenced more by [[Modern liberalism in the United States|social liberalism]] than [[Socialism in the United States|socialism]], supported progressive liberals such as [[Democratic Party (United States)|Democratic]] presidents [[Woodrow Wilson]] and [[Franklin D. Roosevelt]], whose [[The New Freedom|New Freedom]] and [[New Deal]] programmes adopted many social democratic policies.{{sfnm|1a1=Schlesinger|1y=1962|2a1=Zimmerman|2y=2010}} With the [[Great Depression]], [[economic interventionism]] and [[nationalizations]] became more common worldwide and the [[post-war consensus]] until the 1970s saw [[Keynesian]] social democratic and [[mixed economy]] policies put in place, leading to the [[post-World War II boom]] in which the United States, the Soviet Union, the Western European, and East Asian countries experienced unusually high and sustained [[economic growth]], together with [[full employment]]. Contrary to early predictions, this period of high economic growth and national development also included many countries that were devastated by the war, such as Japan ([[Japanese post-war economic miracle]]), West Germany and Austria ([[Wirtschaftswunder]]), South Korea ([[Miracle of the Han River]]), France ([[Trente Glorieuses]]), Italy ([[Italian economic miracle]]), and Greece ([[Greek economic miracle]]).{{sfnm|1a1=Marglin|1a2=Schor|1y=1991|2a1=Marglin|2a2=Schor|2y=2017}} With the [[1970s energy crisis]], the abandonment of both the [[gold standard]] and the [[Bretton Woods system]] along with Keynesian social democratic, mixed-economy policies and the implementation of [[Market-oriented economy|market-oriented]], [[monetarist]], and neoliberal policies ([[privatization]], [[deregulation]], [[free trade]], [[economic globalization]], and anti-[[inflation]]ary [[fiscal policy]], among others), the social democratic welfare state was put in doubt.{{sfn|Lewis|Surender|2004}} This caused several social democratic parties to adopt the [[Third Way]], a centrist ideology combining [[progressivism]] and [[social liberalism]] with neoliberalism;{{sfn|Whyman|2005}} however, the [[Great Recession]] in the late 2000s and early 2010s cast doubts on the [[Washington Consensus]], and [[Anti-austerity movement|protests]] against [[austerity measures]] ensued. There was a resurgence of social democratic parties and policies, especially in the United States and the United Kingdom, with the rise of politicians such as [[Bernie Sanders]] and [[Jeremy Corbyn]], who rejected the Third Way,{{sfnm|1a1=Huges|1y=2016|2a1=Tarnoff|2y=2017|3a1=Associated Press|3y=2018}} after the [[economic recession]] caused the [[Pasokification]] of many social democratic parties.{{sfnm|1a1=Lowen|1y=2013|2a1=Ludwigshafen|2a2=Piraeus|2a3=Valletta|2y=2016|3a1=Younge|3y=2017|4a1=Eaton|4y=2018|5a1=''The Economist''|5y=2018}} The United Nations [[World Happiness Report]] shows that the happiest nations are concentrated in social democratic nations,{{sfn|Conley|2019}}{{Better source needed|reason=The current source is insufficiently reliable ([[WP:NOTRS]]).|date=June 2023}} especially in Northern Europe, where the [[Nordic model]] is applied.{{sfnm|1a1=Cappelen|1a2=Fagerberg|1a3=Mjøset|1a4=Skarstein|1y=1990|1pp=60–94|2a1=Veggel|2y=2014|2pp=60–94|3a1=Dølvik|3a2=Fløtten|3a3=Hippe|3a4=Jordfald|3y=2015|3p=23|4a1=Simon Reid|4y=2015|4p=132}} This is at times attributed to the success of the social democratic Nordic model in the region, where similar [[democratic socialist]], [[labourist]], and social democratic parties dominated the region's political scene and laid the ground for their [[universal welfare state]]s in the 20th century.{{sfnm|1a1=Esping-Andersen|1y=1985|2a1=Hicks|2y=1988|3a1=Moschonas|3y=2002|4a1=Rosser |4a2=Rosser|4y=2003|5a1=Ferragina|5a2=Seeleib-Kaiser|5y=2011|6a1=Brandal|6a2=Bratberg|6a3=Thorsen|6y=2013}} The Nordic countries, including Denmark, Finland, Iceland, Norway, and Sweden, as well as Greenland and the Faroe Islands, also ranks highest on the metrics of real [[GDP per capita]], [[economic equality]], [[public health]], [[life expectancy]], [[solidarity]], perceived [[Freedom of choice|freedom to make life choices]], [[generosity]], [[quality of life]], and [[Human development (economics)|human development]], while countries practising a neoliberal form of government have registered relatively poorer results.{{sfnm|1a1=Gregoire|1y=2013|2a1=Conley|2y=2019}}{{Better source needed|reason=The current source is insufficiently reliable ([[WP:NOTRS]]).|date=June 2023}} Similarly, several reports have listed Scandinavian and other social democratic countries as ranking high on indicators such as [[civil liberties]],{{sfnm|1a1=Abramowitz|1y=2018|2a1=Aghekyan|2a2=Bhatia|2a3=Dunham|2a4=O'Toole|2y=2018|3a1=Abramowitz|3y=2019|4a1=Repucci|4y=2020}} [[democracy]],{{sfn|''The Economist''|2020}} [[Press freedom|press]],{{sfnm|1a1=Reporters Without Borders 2019 (table)|2a1=Reporters Without Borders 2019 (analysis)}} [[Labour rights|labour]] and [[Economic freedom|economic]] freedoms,{{sfnm|1a1=Kim|1a2=Miller|1y=2016|2a1=The Heritage Foundation|2y=2017}} [[peace]],{{sfn|Vision of Humanity|2019}} and freedom from [[corruption]].{{sfnm|1a1=Transparency International 2020 (table)|2a1=Transparency International 2020 (analysis)}} Numerous studies and surveys indicate that people live happier lives in countries ruled by social democratic parties than those ruled by neoliberal, centrist, and right-wing governments.{{sfnm|1a1=Pani|1a2=Panic|1y=2011|2a1=Radcliff|2y=2013|3a1=Brown|3y=2014|4a1=Flavin|4a2=Pacek|4a3=Radcliff|4y=2014|5a1=Sullivan|5a2=Hickel|5y=2023}} ===Criticism=== {{See also|Criticism of welfare|Criticism of welfare states}} Other socialists criticize social democracy because it serves to devise new means to strengthen the capitalist system, which conflicts with the socialist goal of replacing capitalism with a socialist system.{{sfn|Clarke|1981|p=2}} According to this view, social democracy fails to address the systemic issues inherent in capitalism. The American democratic socialist philosopher [[David Schweickart]] contrasts social democracy with [[democratic socialism]] by defining the former as an attempt to strengthen the [[welfare state]] and the latter as an alternative economic system to capitalism. According to Schweickart, the democratic socialist critique of social democracy is that capitalism can never be sufficiently humanized and that any attempt to suppress its economic contradictions will only cause them to emerge elsewhere. He gives the example that attempts to reduce unemployment too much would result in inflation, and too much job security would erode labour discipline.{{sfn|Schweickart|2007|p=447}} In contrast to social democracy's [[mixed economy]], democratic socialists advocate a [[post-capitalist]] economic system based on either a [[Market economy#Market socialism|market economy]] combined with [[workers' self-management]] or on some form of [[Participatory economy|participatory]], [[decentralized planning]] of the economy.{{sfn|Schweickart|2007|p=448}} [[Marxian economics|Marxian]] socialists argue that social democratic welfare policies cannot resolve the fundamental structural issues of capitalism, such as [[Business cycle#Marxian economics|cyclical fluctuations]], [[Exploitation of labour#Marxist theory|exploitation]], and [[Marx's theory of alienation|alienation]]. Accordingly, social democratic programs intended to ameliorate living conditions in capitalism, such as unemployment benefits and taxation on profits, creates further contradictions by further limiting the efficiency of the capitalist system by reducing incentives for capitalists to invest in further production.{{sfn|Ticktin|1998|pp=60–61}} The welfare state only serves to legitimize and prolong the exploitative and contradiction-laden system of capitalism to society's detriment. Critics of contemporary social democracy, such as Jonas Hinnfors, argue that when social democracy abandoned [[Marxism]], it also abandoned socialism and became a liberal capitalist movement, effectively making social democrats similar to non-socialist parties like the [[Democratic Party (United States)|Democratic Party]] in the United States.{{sfn|Hinnfors|2006|pp=117, 137–139}} [[Market socialism]] is also critical of social democratic welfare states. While one common goal of both concepts is to achieve greater social and economic equality, market socialism does so through changes in enterprise ownership and management. Social democracy attempts to do so by subsidies and taxes on privately owned enterprises to finance welfare programs. [[Franklin Delano Roosevelt III]] (grandson of United States President [[Franklin D. Roosevelt]]) and David Belkin criticize social democracy for maintaining a [[Property income|property-owning capitalist class]] with an active interest in reversing social democratic welfare policies and a disproportionate amount of power as a class to influence government policy.{{sfn|Weisskopf|1994|pp=314–315}} The economists [[John Roemer]] and [[Pranab Bardhan]] point out that social democracy requires a strong [[labour movement]] to sustain its heavy redistribution through taxes and that it is idealistic to think such redistribution can be accomplished in other countries with weaker labour movements, noting that social democracy in Scandinavian countries has been in decline as the labour movement weakened.{{sfn|Bardhan|Roemer|1992|p=104}} Some critics say social democracy abandoned socialism in the 1930s by endorsing Keynesian [[welfare capitalism]].{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1p=91|2a1=Fitzpatrick|2y=2003|2pp=2–3}} The democratic socialist political theorist [[Michael Harrington]] argued that social democracy historically supported [[Keynesianism]] as part of a "social democratic compromise" between capitalism and socialism. Although this compromise did not allow for the immediate creation of socialism, it created welfare states and "recognized noncapitalist, and even anticapitalist, principles of human need over and above the imperatives of profit".{{sfn|Harrington|2011|p=93}} Social democrats in favour of the [[Third Way]] have been accused of endorsing capitalism, including anti-Third Way social democrats who have accused Third Way proponents such as [[Anthony Giddens]] of being anti-social democratic and anti-socialist in practice.{{sfn|Cammack|2004|p=155}} Social democracy's reformism has been criticized by both the left and right,{{sfnm|1a1=Socialist Party of Great Britain|1y=2002|2a1=Patnaik|2y=2010|2pp=3–21|3a1=Nagin|3y=2018}} for if the left was to govern a capitalist economy, it would have to do so according to capitalist, not socialist, logic. This argument was previously echoed by [[Joseph Schumpeter]] in ''[[Capitalism, Socialism and Democracy]]'' (1942), writing: "Socialists had to govern in an essentially capitalist world..., a social and economic system that would not function except on capitalist lines.&nbsp;... If they were to run it, they would have to run it according to its own logic. They would have to "administer" capitalism".{{sfn|Romano|2006|p=114}} [[Irving Kristol]] argued: "Democratic socialism turns out to be an inherently unstable compound, a contradiction in terms. Every social democratic party, once in power, soon finds itself choosing, at one point after another, between the socialist society it aspires to and the liberal society that lathered it".{{sfn|Barrett|1978}} [[Joseph Stalin]] was a vocal critic of reformist social democrats, later coining the term ''[[social fascism]]'' to describe social democracy in the 1930s because, in this period, it embraced a similar [[corporatist]] economic model to the model supported by [[fascism]]. This view was adopted by the [[Communist International]], which argued that capitalist society had entered the [[Third Period]] in which a [[proletarian revolution]] was imminent but could be prevented by social democrats and other fascist forces.{{sfn|Haro|2011}} ==See also== {{Div col}} * [[Economic progressivism]] * [[History of the Social Democratic Party of Austria]] * [[History of the Social Democratic Party of Germany]] * [[International Group of Democratic Socialists]] * [[List of anti-capitalist and communist parties with national parliamentary representation]] * [[List of social democratic and democratic socialist parties that have governed]] * [[List of democratic socialist parties and organizations]] * [[List of democratic socialists]] * [[List of Labour parties]] * [[List of left-wing political parties]] * [[List of social democratic parties]] * [[List of social democrats]] * [[Social Democratic Party]] * [[Socialist Party]] * [[Socialist Union of Central-Eastern Europe]] {{Div col end}} ==References== ===Citations=== {{Reflist}} ===Notes=== {{Reflist|group=nb|30em}} {{Notelist|30em}} ===Sources=== ====Books==== {{refbegin|30em|indent=yes}} * {{cite book |last=Abjorensen |first=Norman |year=2019 |title=Historical Dictionary of Democracy |publisher=[[Rowman & Littlefield]] |isbn=978-1-5381-2074-3}} * {{cite book |last=Adams |first=Ian |year=1993 |title=Political Ideology Today |edition=1st hardcover |series=Politics Today |publisher=[[Manchester University Press]] |isbn=978-0-7190-3346-9}} * {{cite book |last=Adams |first=Ian |year=1998 |title=Ideology and Politics in Britain Today |edition=illustrated, reprint |series=Politics Today |location=Manchester, England |publisher=[[Manchester University Press]] |isbn=978-0-7190-5056-5}} * {{cite book |last=Adams |first=Ian |year=1999|title=Ideology and Politics in Britain Today |edition=illustrated, reprint |series=Politics Today |location=Manchester, England |publisher=[[Manchester University Press]] |isbn=978-0-7190-5056-5}} * {{cite book |last=Adams |first=Ian |year=2001 |title=Political Ideology Today |edition=2nd reprint, revised |series=Politics Today |location=Manchester, England |publisher=[[Manchester University Press]] |isbn=978-0-7190-6019-9 |url=https://archive.org/details/politicalideolog0000adam}} * {{cite book |last1=Anderson |first1=Gary L. |last2=Herr |first2=Kathryn G. |title=Encyclopedia of Activism and Social Justice |publisher=[[SAGE Publications]] |year=2007 |isbn=978-1-4129-1812-1}} * {{cite book |last=Archer |first=Robin |year=1995 |title=Economic Democracy: The Politics of Feasible Socialism |publisher=[[Clarendon Press]] |isbn=978-0-19-827891-7 |url=https://archive.org/details/economicdemocrac0000arch}} * {{cite book |editor1-last=Árnason |editor1-first=Jóhann Páll |editor2-last=Wittrock |editor2-first=Björn |year=2012|title=Nordic Paths to Modernity |publisher=[[Berghahn Books]] |isbn=978-0-85745-269-6}} * {{cite book |last=Aspalter |first=Christian |year=2001 |title=Importance of Christian and Social Democratic Movements in Welfare Politics: With Special Reference to Germany, Austria and Sweden |location=Huntington, New York |publisher=Nova Science Publishers |isbn=978-1-56072-975-4}} * {{cite book |last=Bailey |first=David J. |year=2009 |title=The Political Economy of European Social Democracy: A Critical Realist Approach |publisher=[[Routledge]] |isbn=978-0-415-60425-3}} * {{cite book |last1=Barrientos |first1=Armando |last2=Powell |first2=Martin |year=2004 |chapter=The Route Map of the Third Way |editor1-last=Hale |editor1-first=Sarah |editor2-last=Leggett |editor2-first=Will |editor3-last=Martell |editor3-first=Luke |title=The Third Way and Beyond: Criticisms, Futures and Alternatives |publisher=[[Manchester University Press]] |pages=9–26 |isbn=978-0-7190-6598-9}} * {{cite book |last1=Bastow |first1=Steve |last2=Martin |first2=James |year=2003 |title=Third Way Discourse: European Ideologies in the Twentieth Century |location=Edinburgh, Scotland |publisher=[[Edinburgh University Press]] |isbn=978-0-7486-1560-5}} * {{cite book |last=Berlau |first=Abraham Joseph |year=1949 |title=The German Social Democratic Party, 1914–1921 |location=New York |publisher=[[Columbia University Press]] |asin=B007T3SD0A}} * {{cite book |last=Berman |first=Sheri |year=1998 |title=The Social Democratic Moment: Ideas and Politics in the Making of Interwar Europe |url=https://archive.org/details/socialdemocratic00berm_0 |location=Cambridge, Massachusetts |publisher=[[Harvard University Press]] |isbn=978-0-674-44261-0}} * {{cite book |last=Berman |first=Sheri |year=2006 |title=The Primacy of Politics: Social Democracy and the Making of Europe's Twentieth Century |publisher=[[Cambridge University Press]] |isbn=978-0-521-81799-8}} * {{cite book |last=Bernstein |first=Eduard |translator-last=Harvey |translator-first=Edith C. |date=1907 |orig-year=1899 |url=https://www.marxists.org/reference/archive/bernstein/works/1899/evsoc/index.htm |title=Evolutionary Socialism |publisher=[[Independent Labour Party]] |via=[[Marxists Internet Archive]]}} * {{cite book |last=Bevan |first=Aneurin |year=1952 |title=In Place of Fear |location=New York |publisher=[[Simon & Schuster]]}} * {{cite book |editor1-last=Birch |editor1-first=Kean |editor2-last=MacLeavy |editor2-first=Julie |editor3-last=Springer |editor3-first=Simon |year=2016 |title=The Handbook of Neoliberalism |publisher=[[Routledge]] |isbn=978-1-138-84400-1}} * {{cite book |last=Blair |first=Tony |year=1995 |title=Let Us Face the Future |series=Fabian phamplets |location=London |publisher=[[Fabian Society]] |isbn=978-0-7163-0571-2}} * {{cite book |editor1-last=Blume |editor1-first=Lawrence E. |editor2-last=Durlauf |editor2-first=Steven N. |year=2016 |title=The New Palgrave Dictionary of Economics |edition=2nd, illustrated |publisher=Springer |isbn=978-0-7163-0571-2}} * {{cite book |last=Bose |first=Pradip |year=2005 |title=Social Democracy in Practice: Socialist International, 1951–2001 |location=Delhi |publisher=Authorspress |isbn=978-81-7273-175-5}} * {{cite book |last1=Brandal |first1=Nik |last2=Bratberg |first2=Øivind |last3=Thorsen |first3=Dag Einar |year=2013 |title=The Nordic Model of Social Democracy |location=Basingstoke, England |publisher=[[Palgrave Macmillan]] |isbn=978-1-137-01326-2}} * {{cite book |editor1-last=Brivati |editor1-first=Brian |editor2-last=Heffernan |editor2-first=Richard |year=2000 |title=The Labour Party: A Centenary History |publisher=Macmillan |isbn=978-0-333-74650-9}} * {{cite book |last=Bronner |first=Stephen Eric |year=1999 |title=Ideas in Action: Political Tradition in the Twentieth Century |url=https://archive.org/details/ideasinactionpol0000bron |location=Oxford |publisher=[[Rowman & Littlefield]] Publishers |isbn=978-0-8476-9387-0}} * {{cite book |last1=Brown |first1=Garrett W. |last2=McLean |first2=Ian |last3=McMillan |first3=Alistair |year=2018 |title=The Concise Oxford Dictionary of Politics and International Relations |location=Oxford |publisher=[[Oxford University Press]] |isbn=978-0-19-254584-8}} * {{cite book |last=Busky |first=Donald F. |year=2000 |title=Democratic Socialism: A Global Survey |location=Westport, Connecticut |publisher=[[Praeger Publishers]] |isbn=978-0-275-96886-1}} * {{cite book |last=Calossi |first=Enrico |year=2016 |title=Anti-Austerity Left Parties in the European Union. Competition, Coordination, Integration |location=Pisa |publisher=[[Pisa University Press]] |isbn=978-88-6741-665-3}} * {{cite book |last=Cammack |first=Paul |year=2004 |chapter=Giddens's Way with Words |editor1-last=Hale |editor1-first=Sarah |editor2-last=Leggett |editor2-first=Will |editor3-last=Martell |editor3-first=Luke |title=The Third Way and Beyond: Criticisms, Futures and Alternatives |publisher=[[Manchester University Press]] |pages=151–166 |isbn=978-0-7190-6598-9}} * {{cite book |last=Campbell |first=John |year=2009 |title=The Iron Lady: Margaret Thatcher from Grocer's Daughter to Prime Minister |publisher=[[Penguin Books]] |isbn=978-0-09-954003-8}} * {{cite book |last1=Carlsson|first1=Ingvar |last2=Lindgren |first2=Anne-Marie |year=1998 |title=What is Social Democracy?: A Book about Social Democracy |location=Stockholm |publisher=Socialdemokraterna |isbn=978-91-532-0413-8}} * {{cite book |last=Chickering |first=Roger |year=1998 |title=Imperial Germany and the Great War, 1914–1918 |publisher=[[Cambridge University Press]] |isbn=978-0-521-56754-1 |url=https://archive.org/details/imperialgermany00roge}} * {{cite book |last=Childs |first=David |year=2000 |title=The Two Red Flags: European Social Democracy and Soviet Communism since 1945 |location=London |publisher=[[Routledge]] |isbn=978-0-415-22195-5}} * {{cite book |last=Clarke |first=Peter |title=Liberals and Social Democrats |publisher=[[Cambridge University Press]] |year=1981 |isbn=978-0-521-28651-0}} * {{cite book |last=Corfe |first=Robert |year=2010 |title=The Future of Politics: With the Demise of the Left/Right Confrontational System |location=Bury St Edmunds, England |publisher=Arena Books |isbn=978-1-906791-46-9}} * {{cite book |last=Corfe |first=Robert |year=2001 |title=Foundations of New Socialism: A Vision for the New Millennium |location=Bury St Edmunds, England |publisher=Arena Books |isbn=978-0-9538460-2-3}} * {{cite book |last1=Corfe |first1=Robert |last2=Miller |first2=Eddie |year=2002 |title=New Socialist Business Values: For Industrial Resurgence |location=Bury St Edmunds, England |publisher=Arena Books |isbn=978-0-9538460-4-7}} * {{cite book |last=Corfe |first=Robert |year=2005 |title=The Spirit of New Socialism and the End of Class-based Politics |location=Bury St Edmunds, England |publisher=Arena Books |isbn=978-0-9543161-2-9}} * {{cite book |last=Crosland |first=Anthony |editor-last=Crossman |editor-first=Richard |editor-link=Richard Crossman |year=1952 |title=New Fabian Essays |chapter=The Transition from Capitalism |location=London |publisher=Turnstile Press |isbn=978-0-7146-4655-8 |url=https://archive.org/details/socialismcommong0000unse}} * {{cite book |last=Crosland |first=Anthony |year=1974 |title=Socialism Now |publisher=Jonathan Cape |isbn=978-0-224-00996-6 |url=https://archive.org/details/socialismnowothe0000cros}} * {{cite book |last=Crosland |first=Anthony |year=2006 |orig-year=1956 |title=The Future of Socialism |publisher=Constable |isbn=978-1-84529-485-4}} * {{cite book |last=Denitch |first=Bogdan |year=1981 |title=Democratic Socialism: The Mass Left in Advanced Industrial Societies |publisher=[[Rowman & Littlefield]] |isbn=978-0-86598-015-0 |url=https://archive.org/details/democraticsocial0000unse_g3k8}} * {{cite book |last=Diamond |first=Patrick |year=2015 |title=New Labour's Old Roots: Revisionist Thinkers in Labour's History |edition=2nd |publisher=Andrews UK Limited |isbn=978-1-84540-797-1}} * {{cite book |last1=Dølvik |first1=Jon Erik |last2=Fløtten |first2=Tone |last3=Hippe |first3=Jon M. |last4=Jordfald |first4= Bård |date=2015 |title=The Nordic Model Towards 2030: A New Chapter? |publisher=Nordmod 2030 |isbn=978-82-324-0185-7}} * {{cite book |last=Dongyoun |first=Hwang |year=2016|title=Anarchism in Korea: Independence, Transnationalism, and the Question of National Development, 1919–1984 |publisher=[[SUNY Press]] |isbn=978-1-4384-6167-0}} * {{cite book |last=Döring |first=Daniel |year=2007 |title=Is 'Third Way' Social Democracy Still a Form of Social Democracy?|location=Norderstedt, Germany |publisher=GRIN Publishing |isbn=978-3-638-86832-7}} * {{cite book |last1=Eatwell |first1=Roger |last2=Wright |first2=Anthony |date=1999 |title=Contemporary Political Ideologies |edition=2nd |location=London |publisher=[[Continuum International Publishing Group|Continuum]] |isbn=978-1-85567-605-3}} * {{cite book |last1=Egle |first1=Christoph |last2=Henkes |first2=Christian |last3=Merkel |first3=Wolfgang |last4=Petring |first4=Alexander |year=2008 |title=Social Democracy in Power: The Capacity to Reform |series=Routledge Research in Comparative Politics |location=London |publisher=[[Routledge]] |isbn=978-0-415-43820-9}} * {{cite book |last=Ehns |first=Dirk H. |year=2016 |title=Modern Monetary Theory and European Macroeconomics |publisher=[[Routledge]] |isbn=978-1-138-65477-8}} * {{cite book |last=Ely |first=Richard |year=1883 |title=French and German Socialism in Modern Times |url=https://archive.org/details/in.ernet.dli.2015.213907 |location=New York |publisher=Harper and Brothers |isbn=978-1-104-06955-1}} * {{cite book |last=Esping-Andersen |first=Gøsta |year=1985 |title=Politics Against Markets: The Social Democratic Road to Power |url=https://archive.org/details/politicsagainstm0000espi |publisher=[[Princeton University Press]] |isbn=978-0-691-65418-8 |jstor=j.ctt1m322zp}} * {{cite book |last=Esping-Andersen |first=Gøsta |year=2013 |orig-year=1990 |title=The Three Worlds of Welfare Capitalism |publisher=[[John Wiley & Sons]] |isbn=978-0-7456-6675-4}} * {{cite book |last=Feuchtwanger |first=Edgar |year=2002 |title=Bismarck |publisher=[[Routledge]] |isbn=978-0-415-21614-2}} * {{cite book |last=Fitzpatrick |first=Tony |year=2003 |title=After the New Social Democracy: Social Welfare for the Twenty-First Century |publisher=[[Manchester University Press]] |isbn=978-0-7190-6477-7}} * {{cite book |last=Foley |first=Michael |year=1994 |title=Ideas that Shape Politics |publisher=[[Manchester University Press]] |isbn=978-0-7190-3825-9}} * {{cite book |editor1-last=Freeden |editor1-first=Michael |editor2-last=Sargent |editor2-first=Lyman Tower |editor3-last=Stears |editor3-first=Marc |year=2013|title=The Oxford Handbook of Political Ideologies |location=Oxford |publisher=[[Oxford University Press]] |isbn=978-0-19-958597-7}} * {{cite book |last=Fuchs |first=Christian |year=2019 |title=Marxism: Karl Marx's Fifteen Key Concepts for Cultural and Communication Studies |location=[[Routledge]] |isbn=978-1-000-75049-2}} * {{cite book |editor1-last=Gamble |editor1-first=Peter |editor2-last=Wright |editor2-first=Tony |year=1999 |title=The New Social Democracy |publisher=[[Taylor & Francis]] |isbn=978-0-631-21765-7 |url=https://archive.org/details/newsocialdemocra0000unse}} * {{cite book |last1=Gey |first1=Peter |last2=Kosta |first2=H. G. Jiří |last3=Quaisser |first3=Wolfgang |year=1987 |title=Crisis and Reform in Socialist Economies |publisher=Avalon Publishing |isbn=978-0-8133-7332-4 |url=https://archive.org/details/crisisreforminso0000unse}} * {{cite book |last=Giddens |first=Anthony |author-link=Anthony Giddens |date=1998a |orig-year=1994 |title=Beyond Left and Right: The Future of Radical Politics |location=Cambridge, England |publisher=[[Polity Press]] |isbn=978-0-7456-1439-7 |url=https://archive.org/details/beyondleftrightf0000gidd}} * {{cite book |last=Giddens |first=Anthony |author-link=Anthony Giddens |date=1998b |title=The Third Way: The Renewal of Social Democracy |url=https://archive.org/details/thirdwayrenewalo0000gidd |location=Cambridge, England |publisher=[[Polity Press]] |isbn=978-0-7456-2266-8}} * {{cite book |last=Giddens |first=Anthony |author-link=Anthony Giddens |year=2003 |chapter=Neoprogressivism: A New Agenda for Social Democracy |editor1-last=Giddens |editor1-first=Anthony |title=The Progressive Manifesto: New Ideas for the Centre-Left |location=Cambridge, England |publisher=[[Polity Press]] |isbn=978-0-7456-3295-7 |url=https://archive.org/details/progressivemanif0000unse}} * {{cite book |last=Gombert |first=Tobias |editor1-last=Bläsius |editor1-first=Julia |editor2-last=Krell |editor2-first=Christian |editor3-last=Timpe |editor3-first=Martin |year=2009 |title=Foundations of Social Democracy|series=Social Democratic Reader |volume=1 |translator1-last=Patterson |translator1-first=James |location=Berlin |publisher=Friedrich-Ebert-Stiftung |isbn=978-3-86872-215-4}} * {{cite book |last1=Gray |first1=Daniel |last2=Johnson |first2=Elliott |last3=Walker |first3=David |year=2014 |title=Historical Dictionary of Marxism |series=Historical Dictionaries of Religions, Philosophies, and Movements |edition=2nd |location=Lanham, Maryland |publisher=[[Rowman & Littlefield]] |isbn=978-1-4422-3798-8}} * {{cite book |last1=Gregory |first1=Paul R. |last2=Stuart|first2=Robert C. |year=2003 |title=Comparing Economic Systems in the Twenty-First Century |edition=7th |publisher=[[Cengage Learning]] |isbn=978-0-618-26181-9}} * {{cite book |editor1-last=Groenke |editor1-first=Susan L. |editor2-last=Hatch |editor2-first=J. Amos |year=2009 |title=Critical Pedagogy and Teacher Education in the Neoliberal Era: Small Openings |publisher=Springer |isbn=978-1-4020-9588-7}} * {{cite book |last=Hain |first=Peter |year=1995 |title=Ayes to the Left |publisher=[[Lawrence and Wishart]] |isbn=978-0-85315-832-5 |url=https://archive.org/details/ayestoleftfuture0000hain}} * {{cite book |last=Hain |first=Peter |year=2015 |title=Back to the Future of Socialism |publisher=Policy Press |isbn=978-1-4473-2168-2}} * {{cite book |last=Hamilton |first=Malcolm |year=1989 |title=Democratic Socialism in Britain and Sweden |publisher=[[St Martin's Press]] |isbn=978-1-349-09234-5}} * {{cite book |last=Harrington |first=Michael |year=2011 |orig-year=1989 |title=Socialism: Past and Future |location=New York |publisher=Arcade Publishing |isbn=978-1-61145-335-5 |url=https://archive.org/details/socialismpastfut2011harr}} * {{cite book |last=Haseler |first=Stephen |year=1969 |title=The Gaitskellites: Revisionism in the British Labour Party, 1951–1964 |publisher=Macmillan |isbn=978-1-349-00258-0}} * {{cite book |last=Hattersley |first=Roy |year=1987 |title=Choose Freedom: The Future of Democratic Socialism |location=Harmondsworth, England |publisher=[[Penguin Books|Penguin]] |isbn=978-0-14-010494-3}} * {{cite book |last=Heywood |first=Andrew |year=2007 |title=Political Ideologies: An Introduction |edition=4th |publisher=[[Palgrave Macmillan]] |isbn=978-0-230-52180-3}} * {{cite book |last=Heywood |first=Andrew |year=2012 |title=Political Ideologies: An Introduction |edition=5th |location=Basingstoke, England |publisher=[[Palgrave Macmillan]] |isbn=978-0-230-36725-8}} * {{cite book |last1=Hinchman |first1=Lewis P. |last2=Meyer |first2=Thomas |year=2007 |title=The Theory of Social Democracy |location=Cambridge, England |publisher=[[Polity Press]] |isbn=978-0-7456-4113-3}} * {{cite book |last=Hinnfors |first=Jonas |year=2006 |title=Reinterpreting Social Democracy: A History of Stability in the British Labour Party and Swedish Social Democratic Party |series=Critical Labour Movement Studies |publisher=[[Manchester University Press]] |isbn=978-0-7190-7362-5}} * {{cite book |last1=Hloušek |first1=Vít |last2=Kopecek |first2=Lubomír |date=2013 |title=Origin, Ideology and Transformation of Political Parties: East-Central and Western Europe Compared |publisher=Ashgate |isbn=978-1-4094-9977-0}} * {{cite book |last=Hoefer |first=Richard |year=2013 |chapter=Social Welfare Policy and Politics |editor1-last=Colby |editor1-first=Ira C. |editor2-last=Dolmus |editor2-first=Catherine N. |editor3-last=Sowers |editor3-first=Karen M. |title=Connecting Social Welfare Policy to Fields of Practice |location=Hoboken, New Jersey |publisher=[[John Wiley & Sons]] |isbn=978-1-118-17700-6}} * {{cite book |last=Humphrys |first=Elizabeth |title=How Labour Built Neoliberalism: Australia's Accord, the Labour Movement and the Neoliberal Project |publisher=[[Brill Publishers|Brill Academic Publishers]] |date=8 October 2018 |isbn=978-90-04-38346-3}} * {{cite book |last=Imlay |first=Talbot C. |year=2018 |title=The Practice of Socialist Internationalism: European Socialists and International Politics, 1914–1960 |publisher=[[Oxford University Press]] |isbn=978-0-19-964104-8}} * {{cite book |last1=Jackson |first1=Nigel |last2=Tansey |first2=Stephen D. |year=2008 |title=Politics: The Basics |edition=4th |location=London |publisher=[[Routledge]] |isbn=978-0-415-42244-4}} * {{cite book |editor-last=Jefferys |editor-first=Kevin |year=1994 |title=War and Reform: British Politics during the Second World War |location=Manchester |publisher=[[Manchester University Press]] |isbn=978-0-7190-3970-6}} * {{cite book |editor-last1=Katseli |editor-first1=Louka T. |editor-last2=Milios |editor-first2=John |editor-last3=Pelagidis |editor-first3=Theodore |year=2018 |title=Welfare State and Democracy in Crisis: Reforming the European Model |publisher=[[Routledge]] |isbn=978-1-351-78839-7}} * {{cite book |last=Kendall |first=Diana |year=2011 |title=Sociology in Our Time: The Essentials |publisher=[[Cengage Learning]] |isbn=978-1-111-30550-5}} * {{cite book |editor-last=Kindersley |editor-first=Richard |year=2016 |title=In Search of Eurocommunism |publisher=Springer |isbn=978-1-349-16581-0}} * {{cite book |editor1-last=Kornai |editor1-first=János |editor2-last=Yingi |editor2-first=Qian |year=2009 |title=Market and Socialism: In the Light of the Experiences of China and Vietnam |location=New York |publisher=[[Palgrave Macmillan]] |isbn=978-0-230-55354-5}} * {{cite book |last1=Kwok |first1=Pui-lan |last2=Rieger |first2=Joerg |year=2013 |title=Occupy Religion: Theology of the Multitude |publisher=[[Rowman & Littlefield]] |isbn=978-1-4422-1792-8}} * {{cite book |last=Kynaston |first=David |year=2009 |title=Family Britain 1951–1957 |publisher=Bloomsbury |location=London |isbn=978-0-7475-8385-1 |url=https://archive.org/details/familybritain1950000kyna}} * {{cite book |last=Lafontaine |first=Oskar |year=2009 |title=Left Parties Everywhere?|series=Socialist Renewal |location=Nottingham, England |publisher=Spokesman Books |isbn=978-0-85124-764-9}} * {{cite book |last=Laidler |first=Harry W. |year=2013 |title=History of Socialism: An Historical Comparative Study of Socialism, Communism, Utopia |publisher=[[Routledge]] |isbn=978-1-136-23143-8}} * {{cite book |last=Lambin |first=Jean-Jacques |year=2014 |title=Rethinking the Market Economy: New Challenges, New Ideas, New Opportunities |publisher=[[Palgrave Macmillan]] |isbn=978-1-137-39291-6}} * {{cite book |last=Lerner |first=Warren |year=1993 |title=A History of Socialism and Communism in Modern Times: Theorists, Activists, and Humanists |publisher=[[Prentice Hall]] |isbn=978-0-13-389552-0}} * {{cite book |editor1-last=Lemke |editor1-first=Christiane |editor2-last=Marks |editor2-first=Gary |date=1992 |title=The Crisis of Socialism in Europe |location= Durham, North Carolina |publisher=[[Duke University Press]] |isbn=978-0-8223-1197-3 |url=https://archive.org/details/crisisofsocialis01unse_2}} * {{cite book |editor1-last=Lewis |editor1-first=Jane |editor1-link=Jane Lewis (academic) |editor2-last=Surender |editor2-first=Rebecca |year=2004 |title=Welfare State Change: Towards a Third Way? |publisher=[[Oxford University Press]] |isbn=978-0-19-926672-2}} * {{cite book |last=Lightfoot |first=Simon |year=2005 |title=Europeanizing Social Democracy?: The Rise of the Party of European Socialists |publisher=[[Routledge]] |isbn=978-1-134-27647-9}} * {{cite book |last=Li |first=He |year=2015 |title=Political Thought and China's Transformation: Ideas Shaping Reform in Post-Mao China |publisher=Springer |isbn=978-1-137-42781-6}} * {{cite book |last=Lowe |first=Rodney |year=2004 |orig-year=1993 |title=The Welfare State in Britain Since 1945|edition=3rd, illustrated |publisher=Macmillan Education UK |isbn=978-1-4039-1193-3}} * {{cite book |editor1-last=Ludlam |editor1-first=Steve |editor2-last=Smith |editor2-first=Martin J. |year=2017 |title=Governing as New Labour: Policy and Politics Under Blair |publisher=Macmillan International Higher Education |isbn=978-1-4039-0678-6}} * {{cite book |last=March |first=Luke |year=2008 |url=http://library.fes.de/pdf-files/id/ipa/05818.pdf |title=Contemporary Far Left Parties in Europe: From Marxism to the Mainstream? |location=Berlin |publisher=Friedrich-Ebert-Stiftung |isbn=978-3-86872-000-6 |access-date=9 November 2021}} * {{cite book |last1=Marglin |first1=Stephen A. |last2=Schor |first2=Juliet B. |year=1991 |title=The Golden Age of Capitalism: Reinterpreting the Postwar Experience |publisher=[[Clarendon Press]] |isbn=978-0-19-828741-4 |doi=10.1093/acprof:oso/9780198287414.001.0001 |url=https://archive.org/details/goldenageofcapit0000unse}} * {{cite book |last1=Marglin |first1=Stephen A. |last2=Schor |first2=Juliet B. |year=2017 |title=Reflecting on Seventy Years of Development Policy Analysis |chapter=Post-war reconstruction and development in the Golden Age of Capitalism |work=World Economic and Social Survey 2017 |series=World Economic and Social Survey |publisher=[[United Nations]] iLibrary |doi=10.18356/8310f38c-en |isbn=978-92-1-060598-4}} * {{cite book |last1=Mathers |first1=Andrew |last2=Taylor |first2=Graham |last3=Upchurch |first3=Martin |year=2009 |title=The Crisis of Social Democratic Trade Unionism in Western Europe: The Search for Alternatives |series=Contemporary Employment Relations |location=Farnham, England |publisher=[[Ashgate Publishing]] |isbn=978-0-7546-7053-7}} * {{cite book |last=Megill |first=Kenneth A. |year=1970 |title=The New Democratic Theory |location=New York |publisher=The Free Press |isbn=978-0-02-920790-1 |url=https://archive.org/details/newdemocraticthe0000unse}} * {{cite book |editor1-last=Meyer |editor1-first=Henning |editor2-last=Rutherford |editor2-first=Jonathan |year=2011 |title=The Future of European Social Democracy: Building the Good Society |publisher=Springer |isbn=978-0-230-35504-0}} * {{cite book |last=Miller |first=Toby |year=2008 |title=A Companion to Cultural Studies |publisher=[[Wiley (publisher)|Wiley]] |isbn=978-0-470-99879-3}} * {{cite book |last=Moschonas |first=Gerassimos |year=2002 |title=In the Name of Social Democracy: The Great Transformation, 1945 to the Present |translator-last=Elliott |translator-first=Gregory |location=London |publisher=[[Verso Books]] |isbn=978-1-85984-639-1}} * {{cite book |last=Mosse |first=George |year=2018 |chapter=Marxism |title=The Culture Of Western Europe: The Nineteenth And Twentieth Centuries |publisher=[[Routledge]] |isbn=978-0-429-97252-2}} * {{cite book |last=Naarden |first=Bruno |year=2002 |orig-year=1992 |title=Socialist Europe and Revolutionary Russia: Perception and Prejudice, 1848–1923 |publisher=[[Cambridge University Press]] |isbn=978-0-521-89283-4}} * {{cite book |last=Newman |first=Michael |year=2005 |title=Socialism: A Very Short Introduction |publisher=[[Oxford University Press]] |isbn=978-0-19-280431-0}} * {{cite book |last=O'Reilly |first=David |year=2007 |title=The New Progressive Dilemma: Australia and Tony Blair's Legacy |publisher=Springer |isbn=978-0-230-62547-1}} * {{cite book |last=Palley |first=Thomas I. |year=2013 |title=From Financial Crisis to Stagnation: The Destruction of Shared Prosperity and the Role of Economics |publisher=[[Cambridge University Press]] |isbn=978-1-107-61246-4}} * {{cite book |last1=Pani |first1=Mica |last2=Panic |first2=M. |year=2011 |chapter=Neoliberalism versus Social Democracy: Empirical Evidence |title=Globalization: A Threat to International Cooperation and Peace? |publisher=Springer |pages=109–141 |isbn=978-0-230-30701-8}} * {{cite book |last=Picard |first=Robert |date=6 December 1985 |title=The Press and the Decline of Democracy: Democratic Socialist Response in Public Policy |publisher=Praeger |isbn=978-0-86598-015-0 |url=https://archive.org/details/democraticsocial0000unse_g3k8}} * {{cite book |last=Pierson |first=Christopher |year=2001 |title=Hard Choices: Social Democracy in the Twenty-First Century |location=Cambridge, England; Oxford, England; Malden, Massachusetts |publisher=[[Polity Press]] |isbn=978-0-7456-1985-9}} * {{cite book |last=Raza |first=Syed Ali |year=2012 |title=Social Democratic System |publisher=[[Global Peace Trust]] |isbn=978-969-9757-00-6}} * {{cite book |last=Roemer |first=John E. |year=1994 |title=A Future for Socialism |chapter=The long term and the short term |publisher=[[Harvard University Press]] |isbn=978-0-674-33946-0}} * {{cite book |last=Romano |first=Flavio |year=2006 |title=Clinton and Blair: The Political Economy of the Third Way |series=Routledge Frontiers of Political Economy |volume=75 |location=London |publisher=[[Routledge]] |isbn=978-0-415-37858-1}} * {{cite book |last=Romano |first=Flavio |year=2007 |title=Clinton and Blair: The Political Economy of the Third Way |series=Routledge Frontiers of Political Economy |volume=75 |location=London |publisher=[[Routledge]] |isbn=978-1-134-18252-7}} * {{cite book |last1=Rosser |first1=J. Barkley Jr. |last2=Rosser |first2=Marina V. |year=2003 |title=Comparative Economics in a Transforming World Economy |edition=2nd |location=Cambridge, Massachusetts |publisher=[[MIT Press]] |isbn=978-0-262-18234-8}} * {{cite book |last=Rothestein |first=Bo |date=1998 |title=Just Institutions Matter: The Moral and Political Logic of the Universal Welfare State |location=Cambridge, England |publisher=[[Cambridge University Press]] |isbn=978-0-521-59893-4}} * {{cite book |last=Samuelsson |first=Kurt |year=1968 |title=From Great Power to Welfare State: 300 Years of Swedish Social Development |location=London |publisher=[[George Allen and Unwin]] |isbn=978-0-04-948002-5}} * {{cite book |last=Sargent |first=Lyman Tower |year=2008| title=Contemporary Political Ideologies: A Comparative Analysis |url=https://archive.org/details/contemporarypoli00sarg_0 |edition=14th |publisher=Wadsworth Publishing |isbn=978-0-495-56939-8}} * {{cite book |last=Schlesinger |first=Arthur M. Jr. |year=1962 |chapter=Liberalism in America: A Note for Europeans |title=The Politics of Hope and The Bitter Heritage |location=Boston |publisher=[[Riverside Press]]}} * {{cite book |last=Schorske |first=Carl E. |year=1993 |orig-year=1955 |title=German Social Democracy, 1905–1917: The Development of the Great Schism |series=Harvard Historical Studies |volume=65 |location=Cambridge, Massachusetts |publisher=[[Harvard University Press]] |isbn=978-0-674-35125-7 |url=https://archive.org/details/germansocialdemo0000scho}} * {{cite book |last=Schumpeter |first=Joseph |year=1942 |title=Capitalism, Socialism and Democracy |title-link=Capitalism, Socialism and Democracy |location=New York |publisher=Harper & Brothers |isbn=978-0-06-133008-7 |oclc=22556726}} * {{cite book |last=Sears |first=Kathleen |year=2019 |title=Socialism 101: From the Bolsheviks and Karl Marx to Universal Healthcare and the Democratic Socialists, Everything You Need to Know about Socialism |publisher=[[Simon & Schuster]] |isbn=978-1-5072-1136-6}} * {{cite book |last=Sejersted |first=Francis |year=2011 |editor1-last=Adams |editor1-first=Madeleine B. |title=The Age of Social Democracy: Norway and Sweden in the Twentieth Century |translator-last=Daly |translator-first=Richard |publisher=[[Princeton University Press]] |isbn=978-0-691-14774-1}} * {{cite book |last=Simon Reid |first=Henry |year=2015 |title=The Political Origins of Inequality: Why a More Equal World Is Better for Us All |publisher=[[University of Chicago Press]] |isbn=978-0-226-23679-7}} * {{cite book |last=Steger |first=Manfred B. |year=1997 |title=The Quest for Evolutionary Socialism: Eduard Bernstein and Social Democracy |location=Cambridge, United Kingdom; New York City, United States; Melbourne, Australia |publisher=[[Cambridge University Press]] |isbn=978-0-521-58200-1}} * {{cite book |last=Steger |first=Manfred B. |year=1999 |chapter=Friedrich Engels and the Origins of German Revisionism: Another Look |editor1-last=Carver |editor1-first=Terrell |editor2-last=Steger |editor2-first=Manfred B. |title=Engels After Marx |location=University Park, Pennsylvania |publisher=[[Pennsylvania State University]] |pages=181–196 |isbn=978-0-271-01891-1}} * {{cite book |last=Taylor |first=Andrew J. |year=2013 |chapter=Trade Unions and the Politics of Social Democratic Renewal |editor1-last=Gillespie |editor1-first=Richard |editor2-last=Paterson |editor2-first=William E. |title=Rethinking Social Democracy in Western Europe |publisher=[[Routledge]] |isbn=978-1-135-23618-2}} * {{cite book |last=Thomas |first=Norman |year=1953 |title=Democratic Socialism: A New Appraisal |location=New York |publisher=League for Industrial Democracy |isbn=978-0-598-69160-6}} * {{cite book |last=Ticktin |first=Hillel |year=1998 |chapter=The Problem is Market Socialism |editor1-last=Ollman |editor1-first=Bertell |title=Market Socialism: The Debate Among Socialists |location=New York |publisher=[[Routledge]] |pages=55–80 |isbn=978-0-415-91966-1}} * {{cite book |last=Tomlinson |first=Jim |year=1997 |title=Democratic Socialism and Economic Policy: The Attlee Years, 1945–1951 |url=https://archive.org/details/democraticsocial0000toml |location=Cambridge |publisher=[[Cambridge University Press]] |isbn=978-0-521-55095-6}} * {{cite book |last=Walters |first=William |year=2001 |chapter=Governing Unemployment: Transforming "the Social"? |editor1-last=Pavlich |editor1-first=George |editor2-last=Wickham |editor2-first=Gary |title=Rethinking Law, Society and Governance: Foucault's Bequest |publisher=Hart Publishing |isbn=978-1-84113-293-8}} * {{cite book |last=Weisskopf |first=Thomas E. |year=1994 |chapter=Challenges to Market Socialism: A Response to Critics |editor1-last=Roosevelt |editor1-first=Frank |editor1-link=Franklin Delano Roosevelt III |editor2-last=Belkin |editor2-first=David |title=Why Market Socialism? Voices from Dissent |location=Armonk, New York |publisher=[[M. E. Sharpe]] |pages=297–318 |isbn=978-1-56324-465-0}} * {{cite book |last=Whyman |first=Philip |year=2005 |title=Third Way Economics: Theory and Evaluation |publisher=Springer |isbn=978-0-230-51465-2}} * {{cite book |last=Williams |first=Raymond |year=1985 |orig-year=1976 |title=Keywords: A Vocabulary of Culture and Society |url=https://archive.org/details/keywordsvocabula0000will |edition=revised |location=New York |publisher=[[Oxford University Press]]|isbn=978-0-19-520469-8 |oclc=1035920683}} * {{cite book |last=Wintrop |first=Norman |year=1983 |orig-year=1982 |title=Liberal Democratic Theory and Its Critics |edition=reprint |publisher=Croom Helm |isbn=978-0-7099-2766-2}} * {{cite book |last=Wright |first=Anthony |year=1983|title=British Socialism: Socialist Thought from the 1880s to the 1960s |location=London |publisher=Longman |isbn=978-0-582-29561-2}} {{refend}} ====Conferences==== {{refbegin|30em|indent=yes}} * {{cite conference |last=Berman |first=Sheri |year=2008 |url=http://www.people.fas.harvard.edu/~ces/conferences/left/left_papers/berman.pdf |title=Understanding Social Democracy |conference=What's Left of the Left: Liberalism and Social Democracy in a Globalized World |conference-url=http://www.people.fas.harvard.edu/~ces/conferences/left/left_papers.html |location=Cambridge, Massachusetts |publisher=Minda de Gunzburg Center for European Studies, [[Harvard University]] |access-date=29 January 2016}} * {{cite conference |author=[[Social Democratic Party of Germany]] |date=28 October 2007 |url=https://www.spd.de/fileadmin/Dokumente/Beschluesse/Grundsatzprogramme/hamburger_programm_englisch.pdf |title=Hamburg Programme. Principal guidelines of the Social Democratic Party of Germany |conference=Federal Party Conference of the SPD |location=Hamburg |publisher=[[Social Democratic Party of Germany]] |access-date=26 April 2020}} {{refend}} ====Encyclopedias==== {{refbegin|30em|indent=yes}} * {{cite encyclopedia |last1=Alt |first1=James E. |last2=Chambers |first2=Simone |last3=Garrett |first3=Geoffrey |last4=Kurian |first4=George Thomas |last5=Levi |first5=Margaret |last6=McClain |first6=Paula D. |year=2010 |title=The Encyclopedia of Political Science Set |publisher=[[CQ Press]] |isbn=978-1-933116-44-0}} * {{cite encyclopedia |editor1-first=Bertrand |editor1-last=Badie |editor1-link=Bertrand Badie |editor2-first=Dirk |editor2-last=Berg-Schlosser |editor2-link=Dirk Berg-Schlosser |editor3-first=Leonardo |editor3-last=Morlino |editor3-link=Leonardo Morlino |year=2011 |title=Social Democracy |encyclopedia=International Encyclopedia of Political Science |volume=8 |publisher=[[SAGE Publications]] |isbn=978-1-4129-5963-6}} * {{cite encyclopedia |editor1-last=Docherty |editor1-first=James C. |editor2-last=Lamb |editor2-first=Peter |year=2006 |title=Social democracy |encyclopedia=Historical Dictionary of Socialism |series=Historical Dictionaries of Religions, Philosophies, and Movements |volume=73 |edition=2nd |location=Lanham, Maryland |publisher=[[Scarecrow Press]] |isbn=978-0-8108-5560-1}} * {{cite web |last1=Duignan |first1=Brian |last2=Kalsang Bhutia |first2=Thinley |last3=Mahajan |first3=Deepti |url=http://www.britannica.com/topic/social-democracy |title=Social democracy |website=Encyclopædia Britannica Online |date=17 June 2014 |archive-url=https://web.archive.org/web/20160602003943/https://www.britannica.com/topic/social-democracy |archive-date=2 June 2016 |access-date=29 February 2020}} * {{cite encyclopedia |last1=Durlauf |first1=Steven |last2=Lawrence |first2=Blume |year=2008 |title=Social Democracy |encyclopedia=New Palgrave Dictionary of Economics |edition=2nd |publisher=[[Palgrave Macmillan]] UK |isbn=978-0-333-78676-5}} * {{cite encyclopedia |editor-last=Jones |editor-first=R. J. Barry |year=2001 |title=Routledge Encyclopedia of International Political Economy |volume=III |publisher=[[Taylor & Francis]] |isbn=978-0-415-14532-9}} * {{cite encyclopedia |last=Lamb |first=Peter |year=2015 |title=Social democracy |encyclopedia=Historical Dictionary of Socialism |edition=3rd |series=Historical Dictionaries of Religions, Philosophies, and Movements |publisher=[[Rowman & Littlefield]] |isbn=978-1-4422-5826-6}} * {{cite encyclopedia |last=Lipset |first=Seymour Martin |year=1995 |title=The Encyclopedia of Democracy |volume=4 |publisher=Congressional Quarterly |isbn=978-0-87187-889-2}} * {{cite encyclopedia |last=Miller |first=David |year=1998 |title=Social Democracy |editor-last=Craig |editor-first=Edward |editor-link=Edward Craig (philosopher) |encyclopedia=Routledge Encyclopedia of Philosophy |volume=8 |publisher=[[Routledge]] |isbn=978-0-415-18713-8}} * {{cite encyclopedia |last=O'Hara |first=Phillip |year=2003 |title=Social Democracy |encyclopedia=Encyclopedia of Political Economy |volume=2 |publisher=[[Routledge]] |isbn=978-0-415-24187-8}} * {{cite encyclopedia |last=Ritzer |first=George |year=2004 |title=Marxism |encyclopedia=Encyclopedia of Social Theory |location=Thousand Oaks, California |publisher=[[SAGE Publications]] |isbn=978-1-4522-6546-9}} * {{cite encyclopedia |last=Safra |first=Jacob E. |year=1998 |title=Social democracy |encyclopedia=The New Encyclopædia Britannica |edition=15th |volume=10 |publisher=Encyclopædia Britannica}} * {{cite encyclopedia |last=Schweickart |first=David |year=2007 |editor1-last=Anderson |editor1-first=Gary L. |editor2-last=Herr |editor2-first=Kathryn G. |encyclopedia=Encyclopedia of Activism and Social Justice |title=Democratic Socialism |publisher=[[SAGE Publications]] |volume=1 |location=Thousand Oaks, California |isbn=978-1-4129-1812-1}} * {{cite encyclopedia |last=Stevens |first=Mark A. |year=2000 |title=Social democracy |encyclopedia=Merriam-Webster's Collegiate Encyclopedia |publisher=[[Merriam-Webster]] |isbn=978-0-87779-017-4}} * {{cite encyclopedia |last=Tsakalotos |first=Euclid |editor1-last=Arestis |editor1-first=Philip |editor2-last=Sawyer |editor2-first=Malcolm C. |date=2001 |encyclopedia=The Economics of the Third Way: Experiences from Around the World |title=European Employment Policies: A New Social Democratic Model for Europe |publisher=Edward Elgar Publishing |pages=26–45 |isbn=9781843762836}} {{refend}} ====Journals==== {{refbegin|30em|indent=yes}} * {{cite journal |last=Altman |first=David |title=Collegiate Executives and Direct Democracy in Switzerland and Uruguay: Similar Institutions, Opposite Political Goals, Distinct Results |journal=Swiss Political Science Review |year=2011 |volume=14 |issue=3 |pages=483–520 |doi=10.1002/j.1662-6370.2008.tb00110.x |url=https://doi.org/10.1002/j.1662-6370.2008.tb00110.x}} * {{cite journal |last1=Bardhan |first1=Pranab |last2=Roemer |first2=John E. |year=1992 |title=Market Socialism: A Case for Rejuvenation |journal=[[Journal of Economic Perspectives]] |volume=6 |issue=3 |pages=101–116 |doi=10.1257/jep.6.3.101 |issn=0895-3309 |doi-access=free}} * {{cite report |last=Batson |first=Andrew |date=March 2017 |url=http://www.cebc.org.br/sites/default/files/the_state_of_the_state_sector.pdf |title=The State of the State Sector |publisher=[[Gavekal Dragonomics]] |access-date=15 June 2020}} * {{cite journal |last=Bernstein |first=Eduard |author-link=Eduard Bernstein |date=April 1897 |url=https://www.marxists.org/reference/archive/bernstein/works/1897/04/marx-reform.htm |title=Karl Marx and Social Reform |journal=Progressive Review |issue=7 |via=[[Marxists Internet Archive]]}} * {{cite journal |last=Bolton |first=Matt |date=March 2020 |title=Democratic Socialism and the Concept of (Post)Capitalism |journal=The Political Quarterly |publisher=[[Wiley (publisher)|Wiley]] |volume=91 |issue=2 |pages=334–342 |doi=10.1111/1467-923X.12830 |s2cid=216159023}} * {{cite journal |last1=Cappelen |first1=Adne |last2=Fagerberg |first2=Jan |last3=Mjøset |first3=Lars |last4=Skarstein |first4=Rune |date=May 1990 |title=The Decline of Social-Democratic State Capitalism in Norway |journal=New Left Review |issue=181 |pages=60–94}} * {{cite journal |last=Cobham |first=David |date=November 1984 |title=The Nationalisation of the Banks in Mitterand's France: Rationalisations and Reasons |journal=[[Journal of Public Policy]] |publisher=[[Cambridge University Press]] |volume=4 |issue=4 |pages=351–358 |doi=10.1017/S0143814X00002798 |jstor=3998375 |s2cid=154543259}} * {{cite journal |last=Cohen |first=Paul |date=Winter 2010 |url=https://www.dissentmagazine.org/article/lessons-from-the-nationalization-nation-state-owned-enterprises-in-france |title=Lessons from the Nationalization Nation: State-Owned Enterprises in France |journal=Dissident |publisher=[[University of Pennsylvania Press]] |volume=57 |issue=1 |pages=15–20 |doi=10.1353/dss.0.0107 |s2cid=153581946 |issn=1946-0910 |access-date=14 April 2020}} * {{cite journal |last=Draper |first=Hal |year=1966 |url=https://www.marxists.org/archive/draper/1966/twosouls/index.htm |title=The Two Souls of Socialism |journal=New Politics |volume=5 |issue=1 |pages=57–84 |via=[[Marxists Internet Archive]]}} * {{cite journal |last1=Ferragina |first1=Emanuele |last2=Seeleib-Kaiser |first2=Martin |year=2011 |url=https://halshs.archives-ouvertes.fr/halshs-01347336/document |title=Welfare regime debate: past, present, futures |journal=Policy & Politics |volume=39 |issue=4 |pages=583–611 |doi=10.1332/030557311X603592 |s2cid=146986126}} * {{cite journal |last1=Flavin|first1=Patrick |last2=Pacek|first2=Alexander C.|last3=Radcliff|first3=Benjamin |date=2014 |title=Assessing the Impact of the Size and Scope of Government on Human Well-Being|url= |journal=[[Social Forces]]|volume=92 |issue=4 |pages=1241–1258|doi=10.1093/sf/sou010|access-date=}} * {{cite journal |last=Fleet |first=Michael H. |date=December 1973 |title=Chile's Democratic Road to Socialism |journal=The Western Political Quarterly |volume=26 |issue=4 |pages=766–786 |jstor=447149 |doi=10.2307/447149}} * {{cite journal |last=Foner |first=Eric |date=Spring 1984 |url=http://www.nyu.edu/steinhardt/e/pdf/humsocsci/mias/readings07/21.pdf |title=Why is there no socialism in the United States |journal=[[History Workshop Journal]] |volume=17 |issue=1 |pages=57–80 |doi=10.1093/hwj/17.1.57 |jstor=4288545}} * {{cite journal |last=Hain |first=Peter |date=July–August 2000 |url=https://www.chartist.org.uk/articles/britpol/july_hain.html |title=Rediscovering our libertarian roots |journal=Chartist |archive-url=https://web.archive.org/web/20130621010116/https://www.chartist.org.uk/articles/britpol/july_hain.html |archive-date=21 June 2013}} * {{cite journal |last=Haro |first=Lea |year=2011 |title=Entering a Theoretical Void: The Theory of Social Fascism and Stalinism in the German Communist Party |journal=Critique |volume=39 |issue=4 |pages=563–582 |doi=10.1080/03017605.2011.621248 |s2cid=146848013}} * {{cite journal |last=Heilbroner |first=Robert L. |date=Winter 1991 |url=https://www.dissentmagazine.org/article/from-sweden-to-socialism-social-democracy-symposium |title=From Sweden to Socialism: A Small Symposium on Big Questions |journal=Dissident |others=Barkan, Joanne; Brand, Horst; Cohen, Mitchell; Coser, Lewis; Denitch, Bogdan; Fehèr, Ferenc; Heller, Agnès; Horvat, Branko; Tyler, Gus |pages=96–110 |access-date=14 April 2020}} * {{cite journal |last=Hicks |first=Alexander |year=1988 |title=Social Democratic Corporatism and Economic Growth |journal=The Journal of Politics |publisher=[[University of Chicago Press]] |volume=50 |issue=3 |pages=677–704 |issn=0022-3816 |jstor=2131463 |doi=10.2307/2131463 |s2cid=154785976}} * {{cite journal |last=Kotz |first=David M. |date=4 May 2009 |url=http://people.umass.edu/dmkotz/Fin_Cr_and_NL_08_12.pdf |title=The Financial and Economic Crisis of 2008: A Systemic Crisis of Neoliberal Capitalism |journal=Review of Radical Political Economics |volume=41 |issue=3 |pages=305–317 |doi=10.1177/0486613409335093 |s2cid=154726132 |doi-access=free}} * {{cite journal |last=Lavelle |first=Ashley |title=Social Democrats and Neo-Liberalism: A Case Study of the Australian Labor Party |journal=Political Studies |date=1 December 2005 |volume=53 |issue=4 |pages=753–771 |doi=10.1111/j.1467-9248.2005.00555.x |s2cid=144842245}} * {{cite journal |last=Medearis |first=John |year=1997 |title=Schumpeter, the New Deal, and Democracy |journal=American Political Science Review |volume=91 |issue=4 |pages=819–832 |doi=10.2307/2952166 |jstor=2952166 |s2cid=144892143}} * {{cite journal |last=Patnaik |first=Prabhat |date=May–June 2010 |title=Socialism or Reformism? |journal=[[Social Scientist]] |volume=38 |issue=5/6 |pages=3–21 |jstor=27866707}} * {{cite journal |last=Pierson |first=Chris |year=2005 |title=Lost property: What the Third Way lacks |url=https://www.academia.edu/3423326 |journal=[[Journal of Political Ideologies]] |volume=10 |issue=2 |pages=145–163 |doi=10.1080/13569310500097265 |s2cid=144916176}} * {{cite journal |last=Poulantzas |first=Nicos |date=May–June 1978 |url=https://newleftreview.org/issues/I109/articles/nicos-poulantzas-towards-a-democratic-socialism |title=Towards a Democratic Socialism |journal=New Left Review |volume=I |issue=109}} * {{cite journal |author=[[Socialist Party of Great Britain]] |date=January 1958 |url=http://www.worldsocialism.org/spgb/socialist-standard/1950s/1958/no-641-january-1958/managerial-society-part-three-—-fabian-version |title=The Managerial Society Part Three — Fabian Version |journal=Socialist Standard |publisher=[[Socialist Party of Great Britain]] |issue=641 |access-date=7 March 2021 |archive-date=3 March 2016 |archive-url=https://web.archive.org/web/20160303232840/http://www.worldsocialism.org/spgb/socialist-standard/1950s/1958/no-641-january-1958/managerial-society-part-three-%E2%80%94-fabian-version |url-status=dead}} * {{cite journal |author=[[Socialist Party of Great Britain]] |date=March 2002 |url=https://www.worldsocialism.org/spgb/socialist-standard/2002/2000s/no-1171-march-2002/reformism-or-socialism/ |title=Reformism – or socialism? |journal=Socialist Standard |publisher=[[Socialist Party of Great Britain]] |issue=1171 |access-date=31 January 2020}} * {{cite journal |last1=Sullivan |first1=Dylan |last2=Hickel |first2=Jason |author2-link=Jason Hickel |date=2023 |title=Capitalism and extreme poverty: A global analysis of real wages, human height, and mortality since the long 16th century |url= |journal=[[World Development (journal)|World Development]] |volume=161 |issue= |page=106026 |doi=10.1016/j.worlddev.2022.106026 |s2cid=252315733 |access-date=}} * {{cite journal |last=Veggel |first=Noralv |date=November 2014 |title=The Nordic Model—Its Arrival and Decline |journal=Global Journal of Management and Business Research: Administration and Management |volume=14 |issue=9 |pages=60–94 |doi=10.13140/2.1.1557.9848}} * {{cite journal |last=Weisskopf |first=Thomas E. |year=1992 |url=https://deepblue.lib.umich.edu/bitstream/2027.42/68447/2/10.1177_048661349202400302.pdf |title=Toward the Socialism of the Future, in the Wake of the Demise of the Socialism of the Past |journal=Review of Radical Political Economics |volume=24 |issue=3–4 |pages=1–28 |doi=10.1177/048661349202400302 |issn=0486-6134 |hdl=2027.42/68447 |s2cid=20456552 |hdl-access=free}} {{refend}} ====News==== {{refbegin|30em|indent=yes}} * {{cite news |last=Ackerman |first=Seth |date=19 June 2019 |url=https://jacobinmag.com/2019/06/new-deal-socialism-bernie-sanders-democratic-primary |title=Why Bernie Talks About the New Deal |newspaper=[[Jacobin (magazine)|Jacobin]] |access-date=15 November 2019}} * {{cite news |date=20 July 2018 |url=https://www.nbcnews.com/politics/elections/democratic-socialism-hits-heartland-ocasio-cortez-sanders-campaign-deep-red-n893076 |title=Democratic socialism hits the heartland: Ocasio-Cortez, Sanders to campaign in deep-red Kansas |work=[[NBC News]] |agency=[[Associated Press]] |access-date=14 May 2019 |ref={{harvid|Associated Press|2018}} }} * {{cite news |last=Astor |first=Maggie |date=12 June 2019 |url=https://www.nytimes.com/2019/06/12/us/politics/democratic-socialism-facts-history.html |archive-url=https://web.archive.org/web/20190612170048/https://www.nytimes.com/2019/06/12/us/politics/democratic-socialism-facts-history.html |archive-date=12 June 2019 |url-access=subscription |url-status=live |title=What Is Democratic Socialism? Whose Version Are We Talking About? |newspaper=[[The New York Times]] |access-date=10 February 2020}} * {{cite news |editor-last=Barrett |editor-first=William |date=1 April 1978 |url=https://www.commentarymagazine.com/articles/capitalism-socialism-and-democracy/ |title=Capitalism, Socialism, and Democracy: A Symposium |newspaper=Commentary |access-date=12 March 2020}} * {{cite news |last=Barro |first=Josh |date=20 October 2015 |url=https://www.nytimes.com/2015/10/20/upshot/bernie-sanders-democratic-socialist-capitalist.html |archive-url=https://web.archive.org/web/20151020085134/http://www.nytimes.com/2015/10/20/upshot/bernie-sanders-democratic-socialist-capitalist.html |archive-date=2015-10-20 |url-access=subscription |url-status=live |title=Bernie Sanders, Democratic Socialist Capitalist |newspaper=[[The New York Times]] |access-date=26 March 2019}} * {{cite news |last=Benson |first=Thor |date=30 April 2015 |url=https://newrepublic.com/article/121680/bernie-sanders-democratic-socialist-not-just-socialist |title=Stop Calling Bernie Sanders a Socialist |newspaper=[[The New Republic]] |access-date=14 April 2020}} * {{cite news |last=Berman |first=Sheri |date=15 January 2020 |url=https://foreignpolicy.com/2020/01/15/social-democracy-save-world-again-socialism/ |title=Can Social Democrats Save the World (Again)? |website=[[Foreign Policy]] |access-date=10 February 2020}} * {{cite news |last=Blanc |first=Eric |date=2 April 2019 |url=https://www.jacobinmag.com/2019/04/karl-kautsky-democratic-socialism-elections-rupture |title=Why Kautsky Was Right (and Why You Should Care) |newspaper=[[Jacobin (magazine)|Jacobin]] |access-date=20 June 2019}} * {{cite news |last=Boissoneault |first=Lorraine |date=14 July 2017 |url=https://www.smithsonianmag.com/history/bismarck-tried-end-socialisms-grip-offering-government-healthcare-180964064/ |title=Bismarck Tried to End Socialism's Grip—By Offering Government Healthcare |newspaper=[[Smithsonian]] |access-date=30 January 2020}} * {{cite news |last=Brown |first=Andrew |date=12 September 2014 |url=https://www.theguardian.com/commentisfree/2014/sep/12/europe-happiest-progressives-conservatives-social-democracies-wellbeing-poll |title=Who are Europe's happiest people – progressives or conservatives? |newspaper=[[The Guardian]] |access-date=20 October 2014}} * {{cite news |last=Brown |first=Craig |date=11 May 2009 |url=https://www.commondreams.org/further/2009/05/11/worlds-happiest-countries-social-democracies |title=World's Happiest Countries? Social Democracies |website=Common Dreams |archive-url=https://web.archive.org/web/20141020154608/https://www.commondreams.org/further/2009/05/11/worlds-happiest-countries-social-democracies |access-date=11 November 2021 |archive-date=20 October 2014}} * {{cite magazine |last=Cassidy |first=John |date=18 June 2019 |url=https://www.newyorker.com/news/our-columnists/why-socialism-is-back |title=Why Socialism Is Back |magazine=[[The New Yorker]] |access-date=14 April 2020}} * {{cite news |author=[[CNBC]] |url=https://www.cnbc.com/2009/09/14/the-financial-crisis-this-dayone-year-ago-sept-15-2008.html |title=The Financial Crisis: This Day—One Year Ago, Sept. 15, 2008 |date=14 September 2009 |access-date=26 October 2021}} * {{cite news |last=Conley |first=Julia |date=20 March 2019 |url=https://www.commondreams.org/news/2019/03/20/social-democratic-nations-rank-happiest-global-index-again-us-ranking-falls-again |title=Social Democratic Nations Rank Happiest on Global Index (Again). US Ranking Falls (Again) |agency=Common Dreams |access-date=14 April 2020}} * {{cite news |last=Eaton |first=George |date=10 August 2017 |url=https://www.newstatesman.com/politics/uk/2017/08/tony-blair-isnt-only-new-labour-figure-far-left-past |title=Tony Blair isn't the only New Labour figure with a far-left past |newspaper=[[New Statesman]] |access-date=23 February 2020}} * {{cite news |last=Eaton |first=George |date=8 February 2018 |url=https://www.newstatesman.com/politics/staggers/2018/02/germany-s-spd-may-have-signed-its-death-warrant |title=Germany's SPD may have signed its death warrant |newspaper=[[New Statesman]] |access-date=23 February 2020}} * {{cite news |author=The Economist |date=31 May 2010 |url=https://www.economist.com/books-and-arts/2010/03/31/a-plea-for-liberalism |title=Social democracy – A plea for liberalism |newspaper=[[The Economist]] |access-date=29 April 2020}} * {{cite news |author=The Economist |date=30 June 2018 |url=https://www.economist.com/britain/2018/06/30/why-labour-is-obsessed-with-greek-politics |title=Why Labour is obsessed with Greek politics |newspaper=[[The Economist]] |access-date=23 February 2020}} * {{cite news |author=The Economist |date=21 January 2020 |url=https://www.eiu.com/topic/democracy-index |title=Democracy Index 2019 |newspaper=[[The Economist]] |publisher=Economist Intelligence Unit |access-date=4 February 2020}} * {{cite news |last=Faiola |first=Anthony |date=11 February 2019 |url=https://www.washingtonpost.com/world/the_americas/in-socialist-venezuela-a-crisis-of-faith-not-in-just-their-leader-but-their-economic-model/2019/02/11/ea67849e-2b33-11e9-906e-9d55b6451eb4_story.html |title=In socialist Venezuela, a crisis of faith not in just their leader but their economic model |newspaper=[[The Washington Post]] |access-date=23 February 2020}} * {{cite news |last1=Foster |first1=John Bellamy |author1-link=John Bellamy Foster |last2=Tsakiroglou |first2=Tassos |date=18 January 2014 |url=https://mronline.org/2014/01/18/foster180114-html-2/ |title=The Death of Social Democracy in the Age of Global Monopoly-Finance Capital": An Interview with John Bellamy Foster |newspaper=Monthly Review |publisher=MR Online |access-date=29 April 2020}} * {{cite news |last=Frizell |first=Sam |date=20 February 2019 |url=https://time.com/4121126/bernie-sanders-democratic-socialism/ |title=Here's How Bernie Sanders Explained Democratic Socialism |newspaper=[[Time (magazine)|Time]] |access-date=1 March 2020}} * {{cite news |last=Gage |first=Beverly |date=17 July 2018 |url=https://www.nytimes.com/2018/07/17/magazine/america-can-never-sort-out-whether-socialism-is-marginal-or-rising.html |archive-url=https://web.archive.org/web/20180717140954/https://www.nytimes.com/2018/07/17/magazine/america-can-never-sort-out-whether-socialism-is-marginal-or-rising.html |archive-date=2018-07-17 |url-access=subscription |url-status=live |title=America Can Never Sort Out Whether 'Socialism' Is Marginal or Rising |newspaper=[[The New York Times]] |access-date=17 February 2020}} * {{cite news |last=Golshan |first=Tara |date=12 June 2019 |url=https://www.vox.com/policy-and-politics/2019/6/12/18661708/bernie-sanders-definition-democratic-socialism-explained |title=Bernie Sanders's definition of democratic socialism, explained |website=[[Vox (website)|Vox]] |access-date=1 March 2020}} * {{cite news |last=Gram |first=David |date=11 May 2015 |url=https://apnews.com/572f29cef5f3431398aeb279f5aa2301 |title=Bernie Sanders has had consistent message for 4 decades |agency=[[Associated Press]] |newspaper=[[The Seattle Times]] |issn=0745-9696 |access-date=14 April 2020}} * {{cite news |last=Gregoire |first=Carolyn |date=10 September 2013 |url=https://www.huffpost.com/entry/happiest-countries_n_3894274?guccounter=1 |title=The Happiest Countries In The World |website=[[The Huffington Post]] |access-date=1 October 2013}} * {{cite news |author=[[The Guardian]] |date=16 June 2006 |url=https://www.theguardian.com/politics/2006/jun/16/past.labour |title='Dear Michael, I'm Tony Blair' |newspaper=[[The Guardian]] |access-date=15 March 2020}} * {{cite news |last=Haltiwanger |first=John |date=11 February 2020 |url=https://www.businessinsider.com/difference-between-socialist-and-democratic-socialist-2018-6?IR=T |title=Here's the difference between a 'socialist' and a 'democratic socialist' |newspaper=[[Business Insider]] |access-date=23 February 2020}} * {{cite news |last=Huges |first=Laura |date=24 February 2016 |url=https://www.telegraph.co.uk/news/politics/tony-blair/12171297/Tony-Blair-admits-he-cant-understand-the-popularity-of-Jeremy-Corbyn-and-Bernie-Sanders.html |archive-url=https://ghostarchive.org/archive/20220111/https://www.telegraph.co.uk/news/politics/tony-blair/12171297/Tony-Blair-admits-he-cant-understand-the-popularity-of-Jeremy-Corbyn-and-Bernie-Sanders.html |archive-date=11 January 2022 |url-access=subscription |url-status=live |title=Tony Blair admits he can't understand the popularity of Jeremy Corbyn and Bernie Sanders |newspaper=[[The Daily Telegraph]] |access-date=14 May 2019}}{{cbignore}} * {{cite news |last=Jackson |first=Samuel |date=6 January 2012 |url=https://www.economist.com/johnson/2012/01/06/the-failure-of-american-political-speech |title=The failure of American political speech |newspaper=[[The Economist]] |access-date=15 June 2019}} * {{cite news |last=Kenworthy |first=Lane |date=1 January 2014 |url=https://www.foreignaffairs.com/articles/united-states/2013-12-06/americas-social-democratic-future| title=America's Social Democratic Future: The Arc of Policy Is Long but Bends Toward Justice |newspaper=[[Foreign Affairs]] |issue=January/February 2014 |access-date=29 April 2020}} * {{cite news |last=Krugman |first=Paul |date=13 February 2020 |url=https://www.nytimes.com/2020/02/13/opinion/bernie-sanders-socialism.html |archive-url=https://web.archive.org/web/20200213203202/https://www.nytimes.com/2020/02/13/opinion/bernie-sanders-socialism.html |archive-date=13 February 2020 |url-access=subscription |url-status=live |title=Bernie Sanders Isn't a Socialist |newspaper=[[The New York Times]] |access-date=23 February 2020}} * {{cite news |last=Kvitrud |first=Erlend |date=29 June 2019 |url=https://foreignpolicy.com/2019/06/29/what-the-right-gets-wrong-about-socialism/ |title=What the Right Gets Wrong About Socialism |newspaper=[[Foreign Policy]] |access-date=14 April 2020}} * {{cite news |last=Leibovich |first=Mark |date=21 January 2007 |url=https://www.nytimes.com/2007/01/21/magazine/21Sanders.t.html?pagewanted=all&_r=0 |title=The Socialist Senator |newspaper=[[The New York Times]] |access-date=15 November 2019}} * {{cite news |last=Levitz |first=Eric |date=23 April 2019 |url=https://nymag.com/intelligencer/2019/04/bernie-sanders-democratic-socialism-new-deal-liberalism-cnn-town-hall.html |title=Bernie Sanders: 'Democratic Socialist' Is Just a Synonym for New Deal Liberal |newspaper=[[New York (magazine)|New York]] |access-date=24 January 2020 |ref={{harvid|Levitz, April 2019}} }} * {{cite news |last=Lowen |first=Mark |date=5 April 2013|url=https://www.bbc.co.uk/news/world-europe-22025714 |title=How Greece's once-mighty Pasok party fell from grace |agency=[[BBC News]] |access-date=23 February 2020}} * {{cite news |author1=Ludwigshafen |author2=Piraeus |author3=Valletta |date=2 April 2016 |url=https://www.economist.com/news/briefing/21695887-centre-left-sharp-decline-across-europe-rose-thou-art-sick |title=Rose thou art sick |newspaper=[[The Economist]] |access-date=23 February 2020}} * {{cite news |last=McCarthy |first=Michael |date=7 August 2018 |url=https://jacobinmag.com/2018/08/democratic-socialism-social-democracy-nordic-countries |title=Democratic Socialism Isn't Social Democracy |work=[[Jacobin (magazine)|Jacobin]] |access-date=26 October 2021}} * {{cite news |last=Muldoon |first=James |date=5 January 2019|url=https://www.jacobinmag.com/2019/01/karl-kautsky-german-revolution-democracy-socialism |title=Reclaiming the Best of Karl Kautsky |newspaper=[[Jacobin (magazine)|Jacobin]] |access-date=20 June 2019}} * {{cite news |last=Murphy |first=Patricia |date=13 April 2017 |url=https://www.thedailybeast.com/real-socialists-think-bernies-a-sellout |title=Real Socialists Think Bernie's a Sellout |website=[[The Daily Beast]] |access-date=14 April 2020}} * {{cite news |last=Nagin |first=Rick |date=20 August 2018 |url=https://www.peoplesworld.org/article/the-difference-between-socialism-and-reformism/ |title=The difference between socialism and reformism |newspaper=People's World |access-date=31 January 2020}} * {{cite news |last=Oshinsky |first=David |date=24 July 1988 |url=https://www.nytimes.com/1988/07/24/books/it-wasn-t-easy-being-a-leftist.html |title=It Wasn't Easy Being a Leftist |newspaper=[[The New York Times]] |access-date=15 November 2019}} * {{cite news |last=Prokop |first=Andrew |date=12 October 2015 |url=https://www.vox.com/2015/7/28/18093566/bernie-sanders-issues-policies |title=Bernie Sanders 2016: a primer |website=[[Vox (website)|Vox]] |access-date=1 March 2020}} * {{cite news |last=Post |first=Charlie |date=9 March 2019 |url=https://www.jacobinmag.com/2019/03/karl-kautsky-socialist-strategy-german-revolution |title=The "Best" of Karl Kautsky Isn't Good Enough |newspaper=[[Jacobin (magazine)|Jacobin]] |access-date=20 June 2019}} * {{cite news |last=Radcliff |first=Benjamin |date=25 September 2013 |url=http://edition.cnn.com/2013/09/25/opinion/radcliff-politics-of-happiness/ |title=Western nations with social safety net happier |agency=[[CNN]] |access-date=20 October 2014}} * {{cite news |agency=[[Reuters]] |date=2 August 2018|url=https://www.reuters.com/article/us-spain-politics/spains-socialists-seen-easily-winning-election-new-poll-shows-idUSKBN1KN1FW |title=Spain's Socialists seen easily winning election, new poll shows |work=[[Reuters]] |access-date=4 August 2018}} * {{cite news |last=Sacks |first=Adam J. |date=5 December 2019 |title=Why the Early German Socialists Opposed the World's First Modern Welfare State |newspaper=[[Jacobin (magazine)|Jacobin]] |url=https://jacobinmag.com/2019/12/otto-von-bismarck-germany-social-democratic-party-spd |access-date=10 September 2020}} * {{cite news |author=[[Schweizer Radio und Fernsehen]] |date=7 April 2010 |url=http://www.srf.ch/sendungen/rendez-vous/ueberwindung-des-kapitalismus-bleibt-sp-fernziel |title=Überwindung des Kapitalismus bleibt SP-Fernziel |trans-title=Overcoming capitalism remains SP's long-term goal |agency=[[Schweizer Radio und Fernsehen]] |language=de |access-date=30 April 2020}} * {{cite web |author=[[Schweizer Radio und Fernsehen]] |date=19 November 2016 |url=http://www.srf.ch/news/schweiz/positionspapier-sorgt-fuer-rote-koepfe-bei-genossen |title=Positionspapier sorgt für rote Köpfe bei Genossen |trans-title=Position paper causes red heads among comrades |agency=[[Schweizer Radio und Fernsehen]] |language=de |access-date=30 April 2020 |ref={{harvid|Schweizer Radio und Fernsehen, November 2016}}}} * {{cite web |author=[[Schweizer Radio und Fernsehen]] |date=3 December 2016 |url=http://www.srf.ch/news/schweiz/sp-will-die-ueberwindung-des-kapitalismus-konkretisieren |title=SP will die "Überwindung des Kapitalismus" konkretisieren |trans-title=SP wants to put the "overcoming of capitalism" in concrete terms |agency=[[Schweizer Radio und Fernsehen]] |language=de |access-date=30 April 2020 |ref={{harvid|Schweizer Radio und Fernsehen, December 2016}}}} * {{cite news |last=Sitaraman |first=Ganesh |date=23 December 2019 |url=https://newrepublic.com/article/155970/collapse-neoliberalism |title=The Collapse of Neoliberalism |newspaper=[[The New Republic]] |access-date=10 April 2020}} * {{cite news |last=Stephens |first=Bret |date=25 January 2019 |url=https://www.nytimes.com/2019/01/25/opinion/venezuela-maduro-socialism-government.html |archive-url=https://web.archive.org/web/20190126044835/https://www.nytimes.com/2019/01/25/opinion/venezuela-maduro-socialism-government.html |archive-date=26 January 2019 |url-access=subscription |url-status=live |title=Yes, Venezuela Is a Socialist Catastrophe |newspaper=[[The New York Times]] |access-date=23 February 2020}} * {{cite news |last=Sunkara |first=Bhaskar |date=15 January 2020 |url=https://jacobinmag.com/2020/01/social-democracy-democratic-socialism-capital-unions-strategy |title=The Long Shot of Democratic Socialism Is Our Only Shot |newspaper=[[Jacobin (magazine)|Jacobin]] |access-date=14 February 2020}} * {{cite news |last=Tarnoff |first=Ben |date=12 July 2017 |url=https://www.theguardian.com/media/2017/jul/12/social-media-socialism-jeremy-corbyn-bernie-sanders |title=How social media saved socialism |newspaper=[[The Guardian]] |access-date=14 May 2019}} * {{cite news |last=Tupy |first=Marian |date=1 March 2016 |url=https://www.theatlantic.com/international/archive/2016/03/bernie-sanders-democratic-socialism/471630/ |title=Bernie Is Not a Socialist and America Is Not Capitalist |newspaper=[[The Atlantic]] |access-date=26 March 2019}} * {{cite news |last=Watson |first=Kathryn |date=7 March 2019 |url=https://www.cbsnews.com/news/what-does-socialism-mean-and-how-is-it-shaping-2020/ |title=Defining socialism: What it means and how it's shaping 2020 |agency=[[CBS News]] |access-date=26 October 2021}} * {{cite news |last=Younge |first=Gary |date=22 May 2017 |url=https://www.theguardian.com/commentisfree/2017/may/22/jeremy-corbyn-labour-anti-austerity-manifesto |title=Jeremy Corbyn has defied his critics to become Labour's best hope of survival |newspaper=[[The Guardian]] |access-date=23 February 2020}} * {{cite news |last=Zimmerman |first=Klaus |date=19 February 2010|url=https://www.nytimes.com/2010/02/20/opinion/20iht-edzimmermann.html |archive-url=https://web.archive.org/web/20100224075910/http://www.nytimes.com/2010/02/20/opinion/20iht-edzimmermann.html |archive-date=24 February 2010 |url-access=subscription |url-status=live |title=Social Democracy in America?|newspaper=[[The Atlantic]] |access-date=1 February 2017}} {{refend}} ====Speeches==== {{refbegin|30em|indent=yes}} * {{cite speech |last=Bismarck |first=Otto |author-link=Otto von Bismarck |date=15 March 1884 |url=http://germanhistorydocs.ghi-dc.org/sub_document.cfm?document_id=1809 |title=Reichstag Speech on the Law for Workers' Compensation |location=Berlin |access-date=23 February 2020}} * {{cite speech |last=Sanders |first=Bernie |author-link=Bernie Sanders |date=19 November 2015 |url=https://www.vox.com/2015/11/19/9762028/bernie-sanders-democratic-socialism |title=Democratic Socialism in the United States |location=Georgetown University, Washington, D.C. |access-date=1 March 2020 |via=[[Vox (website)|Vox]]}} {{refend}} ====Websites==== {{refbegin|30em|indent=yes}} * {{cite web |last=Abramowitz |first=Michael J. |author-link=Michael J. Abramowitz |date=16 January 2018 |url=https://freedomhouse.org/report/freedom-world/freedom-world-2018 |title=Freedom in the World 2018 — Democracy in Crisis |publisher=Freedom House |access-date=4 February 2020}} * {{cite web |last=Abramowitz |first=Michael J. |author-link=Michael J. Abramowitz |date=5 February 2019 |url=https://freedomhouse.org/report/freedom-world/2019/democracy-retreat |title=Freedom in the World 2019 — Democracy in Retreat |publisher=Freedom House |access-date=12 March 2020}} * {{cite web |last1=Aghekyan |first1=Elen |last2=Bhatia |first2=Rukmani |last3=Dunham |first3=Jennifer |last4=O'Toole |first4=Shannon |last5=Puddington |first5=Arch |last6=Repucci |first6=Sarah |last7=Roylance |first7=Tyler |last8=Tucker |first8=Vanessa |date=16 January 2018 |url=https://freedomhouse.org/report/freedom-world-2018-table-country-scores |title=Table of Countries Score |publisher=Freedom House |archive-url=https://web.archive.org/web/20200219094235/https://freedomhouse.org/report/freedom-world-2018-table-country-scores |archive-date=19 February 2020 |access-date=4 February 2020}} * {{cite web |last=Amadeo |first=Kimberly |date=14 December 2019 |url=https://www.thebalance.com/what-caused-2008-global-financial-crisis-3306176 |title=What Caused 2008 Global Financial Crisis |website=The Balance |access-date=14 April 2020}} * {{cite web |last1=Dionne|first1=E. J.|last2=Galtson|first2=William|date=13 May 2019|url=https://www.brookings.edu/blog/fixgov/2019/05/13/socialism-a-short-primer/|title=Socialism: A Short Primer |publisher=[[Brookings Institution]] |access-date=14 April 2020}} * {{cite web |last=Eskow |first=Richard |date=15 October 2014 |url=http://ourfuture.org/20141015/new-study-finds-big-government-makes-people-happy-free-markets-dont |title=New Study Finds Big Government Makes People Happy, "Free Markets" Don't |website=Our Future |publisher=People's Action |access-date=20 October 2014}} * {{cite web |author=[[The Heritage Foundation]] |date=17 February 2017 |url=https://www.heritage.org/international-economies/impact/2017-index-economic-freedom-us-score-declines-further-world-average |title=2017 Index of Economic Freedom: U.S. Score Declines Further as World Average Increases |publisher=[[The Heritage Foundation]] |access-date=4 February 2020}} * {{cite web |last1=Kim |first1=Anthony B. |last2=Miller |first2=Terry |date=13 December 2016 |url=https://www.heritage.org/index/pdf/2017/book/index_2017.pdf |title=2017 |work=Index of Economic Freedom |publisher=[[The Heritage Foundation]] |access-date=4 February 2020}} * {{cite web |author=The [[National Archives]] |url=http://www.learningcurve.gov.uk/britain1906to1918/g1/gallery1.htm |title=Liberal Welfare Reforms 1906–11 |website=Learning Curve |publisher=The [[National Archives]] |archive-url=https://web.archive.org/web/20120202153903/http://www.nationalarchives.gov.uk/education/britain1906to1918/g1/gallery1.htm|archive-date=2 February 2012 |access-date=24 January 2010 |ref={{harvid|The National Archive (Liberal Welfare Reforms 1906–11)}} }} * {{cite web |author=[[New Democratic Party of Canada]] |date=April 2013 |url=http://xfer.ndp.ca/2013/constitution/2013_CONSTITUTION_E.pdf |title=Constitution of the New Democratic Party of Canada |publisher=[[New Democratic Party of Canada]] |access-date=9 February 2020}} * {{cite web |author=[[New Democratic Party of Canada]] |date=February 2018 |url=https://xfer.ndp.ca/2018/Documents/2018-CONSTITUTION.pdf |title=Constitution of the New Democratic Party of Canada |publisher=[[New Democratic Party of Canada]] |access-date=9 February 2020}} * {{cite web |last=Pruitt |first=Sarah |date=22 October 2019 |url=https://www.history.com/news/socialism-communism-differences |title=How Are Socialism and Communism Different? |publisher=History |access-date=10 February 2020}} * {{cite web |last=Qiu |first=Linda |title=Bernie Sanders — socialist or democratic socialist? |website=[[PolitiFact]] |date=26 August 2015 |url=https://www.politifact.com/truth-o-meter/article/2015/aug/26/bernie-sanders-socialist-or-democratic-socialist/ |access-date=26 March 2019}} * {{cite web |author=[[Reporters Without Borders]] |date=18 April 2019 |url=https://rsf.org/en/ranking |title=2019 World Press Freedom Index |publisher=[[Reporters Without Borders]] |access-date=4 February 2020 |ref={{harvid|Reporters Without Borders 2019 (table)}}}} * {{cite web |author=[[Reporters Without Borders]] |date=18 April 2019 |url=https://rsf.org/en/2019-world-press-freedom-index-cycle-fear |title=2019 World Press Freedom Index – A cycle of fear |publisher=[[Reporters Without Borders]] |access-date=4 February 2020 |ref={{harvid|Reporters Without Borders 2019 (analysis)}}}} * {{cite web |last=Repucci |first=Sarah |date=4 March 2020 |url=https://freedomhouse.org/report/freedom-world/2020/leaderless-struggle-democracy |title=Freedom in the World 2020 — A Leaderless Struggle for Democracy |publisher=Freedom House |access-date=12 March 2020}} * {{cite web |last=Sanders |first=Bernie |author-link=Bernie Sanders |date=28 May 2019 |url=https://www.sanders.senate.gov/press-releases/legislative-package-introduced-to-encourage-employee-owned-companies-3/ |title=Legislative Package Introduced to Encourage Employee-Owned Companies |publisher=Senator Bernie Sanders of Vermont |access-date=4 February 2020}} * {{cite web |author=Socialist International |date=3 July 1951 |url=http://www.socialistinternational.org/viewArticle.cfm?ArticleID=39 |title=Aims and Tasks of Democratic Socialism: Declaration of the Socialist International |publisher=Socialist International |archive-url=https://web.archive.org/web/20190122222330/https://www.socialistinternational.org/viewArticle.cfm?ArticleID=39 |archive-date=22 January 2019 |access-date=22 January 2019}} * {{cite web |author=Transparency International |date=23 January 2020 |url=https://www.transparency.org/cpi2019|title=Corruption Perceptions Index 2019 |publisher=Transparency International |access-date=4 February 2020 |ref={{harvid|Transparency International 2020 (table)}}}} * {{cite web |author=Transparency International |date=23 January 2020|url=https://www.transparency.org/en/press/2019-CPI-efforts-stagnate-in-G7 |title=2019 Corruption Perceptions Index shows anti-corruption efforts stagnating in G7 countries |publisher=Transparency International |access-date=4 February 2020 |ref={{harvid|Transparency International 2020 (analysis)}}}} * {{cite web |last=Truman |first=Harry S. |author-link=Harry S. Truman |date=10 October 1952 |url=https://www.trumanlibrary.gov/library/public-papers/289/rear-platform-and-other-informal-remarks-new-york |title=Rear Platform and Other Informal Remarks in New York |publisher=Harry S. Truman Presidential Library and Museum |access-date=10 February 2020}} * {{cite web |author=Vision of Humanity |date=June 2019 |url=http://visionofhumanity.org/app/uploads/2019/06/GPI-2019-web003.pdf |title=Global Peace Index 2019 |website=Vision of Humanity |publisher=Institute for Economics & Peace |access-date=4 February 2020 |archive-date=27 August 2019 |archive-url=https://web.archive.org/web/20190827155045/http://visionofhumanity.org/app/uploads/2019/06/GPI-2019-web003.pdf|url-status=dead}} * {{cite web |last=Ypi |first=Lea |date=22 November 2018 |url=https://blogs.lse.ac.uk/politicsandpolicy/no-left-wing-case-for-brexit/ |title=There is no left-wing case for Brexit: 21st century socialism requires transnational organization |website=British Politics and Policy |publisher=[[London School of Economics]] |access-date=26 October 2021}} {{refend}} ==Further reading== {{Library resources box}} {{Refbegin|40em|indent=yes}} * {{cite book |editor1-last=Cronin |editor1-first=James E. |editor2-last=Ross |editor2-first=George W. |editor3-last=Shoch |editor3-first=James |year=2011 |title=What's Left of the Left: Democrats and Social Democrats in Challenging Times |location=Durham, North Carolina |publisher=[[Duke University Press]] |isbn=978-0-8223-5079-8 |url=https://archive.org/details/whatsleftofleftd00unse |ref=none}} * {{cite book |last=Draper |first=Theodore |year=1966 |chapter=The Historic Left |title=The Roots of American Communism |publisher=[[Transaction Publishers]] |isbn=978-1-4128-3880-1 |ref=none}} * {{cite book |editor1-last=Evans |editor1-first=Bryan |editor2-last=Schmidt |editor2-first=Ingo |year=2012 |title=Social Democracy After the Cold War |location=Edmonton, Alberta |publisher=[[Athabasca University Press]] |isbn=978-1-926836-87-4 |url=https://archive.org/details/socialdemocracya0000unse |ref=none}} * {{cite book |last=Kenworthy |first=Lane |year=2014 |title=Social Democratic America |location=New York |publisher=[[Oxford University Press]] |isbn=978-0-19-932251-0 |ref=none}} * {{cite book |last=Lavelle |first=Ashley |year=2008 |title=The Death of Social Democracy: Political Consequences in the 21st Century |location=Aldershot, England |publisher=[[Ashgate Publishing]] |isbn=978-0-7546-7014-8 |ref=none}} * {{cite web |last=Martell |first=Luke |year=2011 |url=http://www.policy-network.net/pno_detail.aspx?ID=4089 |title=Conflicts in Cosmopolitanism and the Global Left |location=London |publisher=Policy Network |access-date=3 August 2016 |archive-date=4 February 2018 |archive-url=https://web.archive.org/web/20180204020826/http://www.policy-network.net/pno_detail.aspx?ID=4089 |url-status=dead |ref=none}} * Minehan, Philip B. ''Anti-Leftist Politics in Modern World History: Avoiding "Socialism" at All Costs'' (Bloomsbury Academic, 2022) [http://www.h-net.org/reviews/showrev.php?id=58641 online scholarly review] * {{cite journal |last=Sachs |first=Jeffrey D. |year=2006 |url=http://www.sciam.com/article.cfm?chanID=sa006&articleID=000AF3D5-6DC9-152E-A9F183414B7F0000&colID=31 |journal=[[Scientific American]] |title=The Social Welfare State, beyond Ideology |volume=295 |issue=5 |page=42 |location=New York |issn=0036-8733 |archive-url=https://web.archive.org/web/20071012141326/http://www.sciam.com/article.cfm?chanID=sa006&articleID=000AF3D5-6DC9-152E-A9F183414B7F0000&colID=31 |archive-date=12 October 2007 |access-date=2 August 2016 |ref=none}} * {{cite web |last1=Thorsen |first1=Dag Einar |last2=Brandal |first2=Nik |last3=Bratberg |first3=Øivind |year=2013 |url=http://www.fabians.org.uk/utopia-sustained-the-nordic-model-of-social-democracy/ |title=Utopia Sustained: The Nordic Model of Social Democracy |location=London |publisher=[[Fabian Society]] |access-date=2 August 2016 |ref=none}} {{Refend}} ==External links== {{Sister project links|auto=1|wikt=social democracy|d=Q121254}} *{{Britannica|551073}} *{{cite web |url=http://www.misc-iecm.mcgill.ca/socdem/epaper.htm |title=Papers on the Future of Social Democracy in Canada |publisher=McGill Institute for the Study of Canada |archive-url=https://web.archive.org/web/20060412171332/http://www.misc-iecm.mcgill.ca/socdem/epaper.htm|archive-date=12 April 2006 |access-date=11 February 2020 |ref=none}} *{{cite web |last=Shaw |first=Martin |year=1999 |url=http://users.sussex.ac.uk/~hafa3/socdem.htm |title=Social democracy in the unfinished global revolution |publisher=[[University of Sussex]] |access-date=11 February 2020 |ref=none}} {{Social democracy}} {{Socialism}} {{Portal bar|Society|Socialism}} {{Authority control}} {{DEFAULTSORT:Social Democracy}} [[Category:Social democracy]] [[Category:Capitalist systems]] [[Category:Centre-left politics]] [[Category:Centrism]] [[Category:Political philosophy]] [[Category:Types of democracy]] [[Category:Types of socialism]] [[Category:Anti-capitalism]] [[Category:Anti-Stalinist left]] [[Category:Centre-left ideologies]] [[Category:Democracy]] [[Category:Democratic socialism]] [[Category:Economic ideologies]] [[Category:Ideologies of capitalism]] [[Category:Economic progressivism]] [[Category:Left-wing ideologies]] [[Category:Liberal socialism]] [[Category:Capitalism]] [[Category:Anti-fascism]] [[Category:Mixed economies]] [[Category:Political-economic models]] [[Category:Political ideologies]] [[Category:Progressivism]] [[Category:Social justice]] [[Category:Social philosophy|Democracy]] [[Category:Socialism]] [[Category:Welfare economics]] 120431dc54c2e55c96c0bf5a6ee7e12e0e84f634 Template:Cite news 10 970 2131 2130 2023-10-01T10:48:33Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_news]] wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=news }}</includeonly><noinclude> {{documentation}} </noinclude> d8c42e9ff15cc4f8c922db4f02cd5ea0ef1c14ee Template:Cite web 10 971 2133 2132 2023-10-01T10:49:00Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_web]] wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=web }}</includeonly><noinclude> {{documentation}} </noinclude> ea1b0f38afd9728a1cf9f2e3f540887a402fab8e Template:Cite speech 10 972 2135 2134 2023-10-01T10:49:07Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_speech]] wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=speech }}</includeonly><noinclude> {{documentation}} </noinclude> cf9cd1f1cc50d72b2e007ae130b09b98802fb607 Template:Use Oxford spelling 10 973 2137 2136 2023-10-01T10:49:40Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Use_Oxford_spelling]] wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{DMCA|Use Oxford spelling|from|{{{date|}}}}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Oxford spelling template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Use Oxford spelling|Oxford spelling template]] with unknown parameter "_VALUE_"|ignoreblank=y| cs1-dates | date }}<noinclude>{{Documentation}}</noinclude> 1eda85fc7798888a17dcf7b9c4cbf511134ce261 Adam Dressler 0 464 2138 1016 2023-10-01T11:41:52Z Führerredux 2 wikitext text/x-wiki {{Infobox officeholder | name = Adam Dressler | image = File:AdamDressler.png | office = Führer of Germany | order = 1st | native_name = Adam Dressler | native_name_lang = de | alt = Portrait of Adam Dressler | country = Das Deutsche Reich | party = Valkistische Deutsche Volkspartei | cabinet = [[Dressler's Cabinet]] | allegiance = {{Unbulleted list|[[German Empire]]|[[Weimar Republic]]}} | branch_label = Branch | branch = {{Tree list}} * [[Imperial German Army]] ** [[Bavarian Army]] * ''[[Reichswehr]]'' {{Tree list/end}} | serviceyears = 1914–1920 | rank = {{lang|de|[[Gefreiter]]}} | unit = 16th Bavarian Reserve Regiment | battles_label = Wars | battles = {{Tree list}} * [[World War I]] ** [[Western Front (World War I)|Western Front]] *** [[First Battle of Ypres]] *** [[Battle of the Somme]] {{WIA}} *** [[Battle of Arras (1917)|Battle of Arras]] *** [[Battle of Passchendaele]] {{Tree list/end}} | mawards = {{Unbulleted list|[[Iron Cross First Class]]|Iron Cross Second Class|[[Wound Badge]]}} }} '''Adam Dressler''' is a notable figure in Germany, whose political journey is marked by his military service, intellectual pursuits, and eventual rise to power within the Valkist movement. Born out of the chaos of post-World War I Germany, Dressler's ascent to political prominence was a complex interplay of military exploits, intellectual pursuits, and strategic alliances. ===Military Service and Intellectual Development=== In 1914, Dressler volunteered for the German Imperial Army and quickly rose to the rank of Lieutenant. His experiences during World War I profoundly shaped his worldview. Wounded multiple times and decorated with honors such as the Iron Cross, Pour le Merit, and the Ritterkreuz, Dressler's war diaries served as the foundation for his later writings. During his military service breaks, he immersed himself in philosophical works, delving into the writings of Nietzsche, Schopenhauer, and other prominent thinkers. ===Post-War Years and Involvement in Nationalist Circles=== After the war, Dressler's intellectual pursuits led him to dadaist circles, where he encountered the writings of Oswald Spengler. His own writings on World War I garnered significant attention, propelling him into the public eye. In 1922, he joined the Freikorps, becoming a key intermediary between different nationalist movements. His association with the Organisation Consul, founded by his friend Hermann Ehrhardt, marked a crucial period in Dressler's political evolution. Following Ehrhardt's death, Dressler assumed a leading role within the Organisation Consul, skillfully leveraging his connections to expand its reach. ===Formation of the Valkist Movement=== Dressler's imprisonment in 1923 did little to dampen his influence. Upon his release, he took charge of the semi-secret Bund Wiking, incorporating smaller Freikorps organizations into a disciplined paramilitary force loyal to him. Under Dressler's leadership, the Viking League emerged, marked by the adoption of the Valknut, a symbol associated with Viking warriors. Dressler's strategic acumen came to the fore as he united the Viking League with the larger Werewolf League, creating a powerful alliance with a detailed national-revolutionary agenda. ===Political Maneuvering and Path to Power=== Dressler's political ambitions gained momentum as he skillfully navigated the volatile German political landscape. In 1927, he merged various Völkisch movements and small parties into the Valkist German People Party (VGPP), which he led. Under his leadership, the VGPP incorporated Karl Otto Paetel's movement, strengthening its populist appeal. The Valkists' popularity surged amid the economic challenges of the Great Depression. By 1930, Dressler's movement had become a significant political force, allying with agrarian movements and gaining considerable influence. Sensing the impending chaos in Germany, Dressler orchestrated strategic alliances, eventually forcing his way into power in 1933. With the support of the DNVP, Papen, and Schleicher, Dressler became the Chancellor in March, marking a pivotal moment in German politics. Dressler's ascent to power was characterized by political maneuvering, strategic alliances, and a careful consolidation of his authority. His position as Führer und Reichskanzler solidified his control, laying the groundwork for a restructuring of the German Republic, albeit with opposition and internal tensions. Despite initial skepticism, Dressler's rule reshaped the political landscape, establishing him as a prominent figure in Germany's political history. a06a6b917344b30b4ba462faa507ccc3532c9e3d Greece 0 243 2139 944 2023-10-01T11:55:39Z Führerredux 2 wikitext text/x-wiki {{Infobox country | native_name = Ἑλληνικὴ Δημοκρατία | conventional_long_name = Hellenic Republic | era = 1936 | government_type = [[Presidential Republic]] | event_start = Established | date_start = 25 March | year_start = 1924 | p1 = Kingdom of Greece | flag_p1 = Flag of Greece (1822-1978).svg | image_flag = File:Flag_of_Greece_(1822-1978).svg | flag_alt = Flag of the Hellenic Republic | flag_type = [[Flag of Greece|National flag]] | image_coat = Coat of arms of Greece (1924–1935).svg | coat_alt = Coat of arms of the Hellenic Republic | symbol = Coat of arms of Greece | symbol_type = Coat of arms | image_map = Hellenic Republic (1935).svg | image_map_alt = Locator map of the Hellenic Republic | image_map_caption = The Hellenic Republic in 1935 | capital = [[Athens]] | languages_type = Official language<br />{{nobold|and national language}} | leader_name2 = [[Elefthérios Kyriákou Venizélos]] | coa_size = 90 | englishmotto = Freedom or Death | title_leader = [[President of Greece|President]] | common_name = Greece | national_motto = Ελευθερία ή Θάνατος | national_anthem = «[[Hymn to Liberty|Ύμνος εις την Ελευθερίαν]]»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}} | common_languages = [[Greek language|Greek]] ([[Katharevousa]] had official status, while [[Demotic Greek|Demotic]] was popular) | currency = Drachmae | religion = Eastern Orthodox | ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }} | largest_city = capital | languages = [[Greek language|Greek]] | demonym = [[Greeks|Greek]], [[Greeks|Hellene]] | leader1 = [[Pavlos Kountouriotis]] | year_leader1 = 1924–1926 | leader2 = [[Theodoros Pangalos (general)|Theodoros Pangalos]] | year_leader2 = 1926 | leader3 = [[Pavlos Kountouriotis]] | year_leader3 = 1926–1929 | leader4 = [[Alexandros Zaimis]] | year_leader4 = 1929–1936 | deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}} | deputy2 = [[Eleftherios Venizelos]] | year_deputy1 = 1924 <small>(first)</small> | year_deputy2 = 1933–1936 <small>(last)</small> | title_deputy = [[Prime Minister of Greece|Prime Minister]] | leader_title1 = [[President of Greece|President]] | leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span> | leader_title2 = [[Prime Minister of Greece|Prime Minister]] | legislature = [[Hellenic Parliament|Parliament]] | house1 = [[Greek Senate|Senate]] | type_house1 = Upper house | house2 = Chamber of Deputies | type_house2 = Lower house | date_format = DD/MM/YYYY | drives_on = left | calling_code = +30 | iso3166code = GR | sovereignty_type = [[History of Greece|Establishment history]] | established_event1 = [[Greek War of Independence|Independence declared]] {{nobold|from the [[Ottoman Empire]]}} <!-- PLEASE DO NOT AMEND THE ESTABLISHED EVENTS SECTION WITHOUT OPENING A DISCUSSION ON THE TALK PAGE FIRST --> | established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the [[Greek War of Independence]]), {{nowrap|15 January 1822}} ([[First National Assembly at Epidaurus|official declaration]]) | established_event2 = [[London Protocol (1830)|Recognised]] | established_date2 = {{nowrap|3 February 1830}} | established_event3 = Second Hellenic Republic | established_date3 = 25 March 1924 | established_event4 = {{nowrap|[[Constitution of Greece|Current constitution]]}} | established_date4 = 3 June 1927 | population_estimate = 13,000,000 }} e745a8f83cb40c3a4e8bfde557e51641497eb4d8 2141 2139 2023-10-01T12:09:06Z Führerredux 2 wikitext text/x-wiki {{Infobox country | native_name = Ἑλληνικὴ Δημοκρατία | conventional_long_name = Hellenic Republic | era = 1936 | government_type = [[Presidential Republic]] | event_start = Established | date_start = 25 March | year_start = 1924 | p1 = Kingdom of Greece | flag_p1 = Flag of Greece (1822-1978).svg | image_flag = File:Flag_of_Greece_(1822-1978).svg | flag_alt = Flag of the Hellenic Republic | flag_type = [[Flag of Greece|National flag]] | image_coat = Coat of arms of Greece (1924–1935).svg | coat_alt = Coat of arms of the Hellenic Republic | symbol = Coat of arms of Greece | symbol_type = Coat of arms | image_map = Hellenic_Republic(1936).png | image_map_alt = Locator map of the Hellenic Republic | image_map_caption = The Hellenic Republic in 1935 | capital = [[Athens]] | languages_type = Official language<br />{{nobold|and national language}} | leader_name2 = [[Elefthérios Kyriákou Venizélos]] | coa_size = 90 | englishmotto = Freedom or Death | title_leader = [[President of Greece|President]] | common_name = Greece | national_motto = Ελευθερία ή Θάνατος | national_anthem = «[[Hymn to Liberty|Ύμνος εις την Ελευθερίαν]]»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}} | common_languages = [[Greek language|Greek]] ([[Katharevousa]] had official status, while [[Demotic Greek|Demotic]] was popular) | currency = Drachmae | religion = Eastern Orthodox | ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }} | largest_city = capital | languages = [[Greek language|Greek]] | demonym = [[Greeks|Greek]], [[Greeks|Hellene]] | leader1 = [[Pavlos Kountouriotis]] | year_leader1 = 1924–1926 | leader2 = [[Theodoros Pangalos (general)|Theodoros Pangalos]] | year_leader2 = 1926 | leader3 = [[Pavlos Kountouriotis]] | year_leader3 = 1926–1929 | leader4 = [[Alexandros Zaimis]] | year_leader4 = 1929–1936 | deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}} | deputy2 = [[Eleftherios Venizelos]] | year_deputy1 = 1924 <small>(first)</small> | year_deputy2 = 1933–1936 <small>(last)</small> | title_deputy = [[Prime Minister of Greece|Prime Minister]] | leader_title1 = [[President of Greece|President]] | leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span> | leader_title2 = [[Prime Minister of Greece|Prime Minister]] | legislature = [[Hellenic Parliament|Parliament]] | house1 = [[Greek Senate|Senate]] | type_house1 = Upper house | house2 = Chamber of Deputies | type_house2 = Lower house | date_format = DD/MM/YYYY | drives_on = left | calling_code = +30 | iso3166code = GR | sovereignty_type = [[History of Greece|Establishment history]] | established_event1 = [[Greek War of Independence|Independence declared]] {{nobold|from the [[Ottoman Empire]]}} <!-- PLEASE DO NOT AMEND THE ESTABLISHED EVENTS SECTION WITHOUT OPENING A DISCUSSION ON THE TALK PAGE FIRST --> | established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the [[Greek War of Independence]]), {{nowrap|15 January 1822}} ([[First National Assembly at Epidaurus|official declaration]]) | established_event2 = [[London Protocol (1830)|Recognised]] | established_date2 = {{nowrap|3 February 1830}} | established_event3 = Second Hellenic Republic | established_date3 = 25 March 1924 | established_event4 = {{nowrap|[[Constitution of Greece|Current constitution]]}} | established_date4 = 3 June 1927 | population_estimate = 13,000,000 }} e60960ac1267d8fa255c5de3e209203a1f5f869a File:Hellenic Republic(1936).png 6 974 2140 2023-10-01T12:08:16Z Führerredux 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 MediaWiki:Mobile.css 8 975 2142 2023-10-01T12:44:32Z Führerredux 2 Created page with "/* * This is the CSS common to all mobile skins on en.Wikipedia. * Styling inside .mw-parser-output should generally use TemplateStyles. * * [[mw:Recommendations for mobile friendly articles on Wikimedia wikis]] may be * worth reviewing. * * special note that this page loads late by Javascript, which may cause * [[FOUC]]s for "lead" content if styled from here. See [[phab:T190083]] */ /* Reset user agent styles. We don't reset small or blockquote here deliberat..." css text/css /* * This is the CSS common to all mobile skins on en.Wikipedia. * Styling inside .mw-parser-output should generally use TemplateStyles. * * [[mw:Recommendations for mobile friendly articles on Wikimedia wikis]] may be * worth reviewing. * * special note that this page loads late by Javascript, which may cause * [[FOUC]]s for "lead" content if styled from here. See [[phab:T190083]] */ /* Reset user agent styles. We don't reset small or blockquote here deliberately */ cite, dfn { font-style: inherit; } q { quotes: '"' '"' "'" "'"; } /* Hide stuff meant for accounts with special permissions. Made visible again in [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-patroller.css]] and [[MediaWiki:Group-autoconfirmed.css]]. */ .checkuser-show, .sysop-show, .templateeditor-show, .extendedmover-show, .patroller-show, .extendedconfirmed-show, .autoconfirmed-show { display: none; } /* Prevent flags in tables from collapsing Fix for T116318 */ .flagicon img { min-width: 25px; } /* Prevent unnecessary margin at the bottom of centralnotices */ .cnotice { margin-bottom: 0 !important; } /* * BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS; * SEE [[MediaWiki talk:Common.css/to do]] */ /* .infobox DO NOT style infobox's here. That should be taken care of in the associated templates via template styles. Styles here will lead to flash of unstyled content on mobile. */ /* removed inline from module as we work toward Tstyles support * Use three classes to match specificity of MobileFrontend/Minerva selectors */ .content .mw-parser-output .infobox-header, .content .mw-parser-output .infobox-subheader, .content .mw-parser-output .infobox-above, .content .mw-parser-output .infobox-title, .content .mw-parser-output .infobox-image, .content .mw-parser-output .infobox-full-data, .content .mw-parser-output .infobox-below { text-align: center; } /* Prevent line breaks in silly places: 1) Where desired 2) Links when we don't want them to */ .mw-parser-output .nowrap, .nowraplinks a { white-space: nowrap; } .mw-parser-output .infobox .nowrap { white-space: normal !important; } /* But allow wrapping where desired: */ .wrap, .wraplinks a { white-space: normal; } /* Generic class texhtml class for inline math */ span.texhtml { font-family: serif; white-space: nowrap; } /* Normal font styling for wikitable row headers with scope="row" tag */ .wikitable.plainrowheaders th[scope=row], .wikitable.plainrowheaders th[scope=rowgroup] { font-weight: normal; /* @noflip */ text-align: left; } /* One of the not TemplateStyles things */ /* https://phabricator.wikimedia.org/T180396#5317728 */ @media print { .navbox, .hatnote, .ambox { display: none !important; } } 935872706d3867dbe7425e4ae0ce5ab209853be8 Main page 0 976 2143 2023-10-01T12:46:36Z Führerredux 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:If empty 10 425 2145 925 2023-10-01T12:50:31Z Führerredux 2 1 revision imported from [[:wikipedia:Template:If_empty]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:If empty|main}} 0882eceea8d0ea6f2b8509518c8f1dd1779a1bb8 Module:If empty 828 426 2147 927 2023-10-01T12:50:32Z Führerredux 2 1 revision imported from [[:wikipedia:Module:If_empty]] Scribunto text/plain local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = '' lowestNil = i end end for k,v in ipairs(args) do if v ~= '' then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', '[[Category:Instances of Template:If_empty missing arguments]]', {group = 'TrackingCategory'}) frame:extensionTag('references', '', {group = 'TrackingCategory'}) end return v end end end return p 39b83f8d043283ec767774d927e2f6f3fb3078b4 Template:Icon 10 977 2149 2148 2023-10-01T12:50:32Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Icon]] wikitext text/x-wiki {{#invoke:Icon|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> bd5b855953c5eec9d9c48400aa39315cb4218558 Template:TOC limit 10 978 2151 2150 2023-10-01T12:50:33Z Führerredux 2 1 revision imported from [[:wikipedia:Template:TOC_limit]] wikitext text/x-wiki <templatestyles src="Template:TOC limit/styles.css" /><div class="toclimit-{{{1|{{{limit|3}}}}}}">__TOC__</div><noinclude> {{documentation}} </noinclude> 76fd91b1053a09dfa5aece7e60e48693d38dfc03 Template:TOC limit/styles.css 10 979 2153 2152 2023-10-01T12:50:34Z Führerredux 2 1 revision imported from [[:wikipedia:Template:TOC_limit/styles.css]] sanitized-css text/css /* {{pp-template}} Allow limiting of which header levels are shown in a TOC; <div class="toclimit-3">, for instance, will limit to showing ==headings== and ===headings=== but no further (as long as there are no =headings= on the page, which there shouldn't be according to the MoS). */ .toclimit-2 .toclevel-1 ul, .toclimit-3 .toclevel-2 ul, .toclimit-4 .toclevel-3 ul, .toclimit-5 .toclevel-4 ul, .toclimit-6 .toclevel-5 ul, .toclimit-7 .toclevel-6 ul { display: none; } 6bdcbe092c6376237fc1740ef6832611c1f3c8fa Module:Icon 828 980 2155 2154 2023-10-01T12:50:36Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Icon]] Scribunto text/plain -- This module implements [[Template:Icon]]. require("strict") local yesNo = require("Module:Yesno") local getArgs = require("Module:Arguments").getArgs local getPlain = nil local p = {} -- Determine whether we're being called from a sandbox local sandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) and '/sandbox' or '' -- Implements [[Template:Icon]] -- Returns the icon image corresponding to a string (like 'B') function p._main(args, data) local data_module = 'Module:Icon/data'..sandbox data = data or mw.loadData(data_module) local code = args.class or args[1] local iconData if code then code = code:match('^%s*(.-)%s*$'):lower() -- trim whitespace and put in lower case iconData = data[code] end if not iconData then iconData = data._DEFAULT end return string.format( '[[File:%s%s%s|%s|class=noviewer|alt=%s]]', iconData.image, iconData.tooltip and '|' .. iconData.tooltip or '', iconData.link == false and '|link=' or '', args.size or '16x16px', iconData.alt or '' ) end -- Implements [[Template:Icon link]], a superset of [[Template:Icon]] -- Returns an icon, plus a suitably formatted wikilink function p._link(args, data) args.size = args.size or args.iconsize local icon = p._main(args, data) -- If no link given in args[2], default back to [[Template:Icon]] if not args[2] then return icon end -- Strip wiki markup out of link getPlain = getPlain or require("Module:Text").Text().getPlain local link = getPlain(args[2]) local display = args[3] or args[2] -- italicize display string, if requested if yesNo(args.i) or yesNo(args.italic) or yesNo(args.italics) then display = '<i>'..display..'</i>' end -- if display is link, just use standard wlink if link == display then return icon..'&nbsp;[['..link..']]' end return icon..'&nbsp;[['..link..'|'..display..']]' end function p.main(frame) local args = getArgs(frame,{parentFirst=true}) return p._main(args) end function p.link(frame) local args = getArgs(frame,{parentFirst=true}) return p._link(args) end return p 7688d9a465bd7c4caa51f7e5c02676c162d583f5 Module:Icon/data 828 981 2157 2156 2023-10-01T12:50:37Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Icon/data]] Scribunto text/plain -- This module stores icon data for [[Module:Icon]]. -------------------------------------------------------------------------------- -- Icon data -------------------------------------------------------------------------------- local data = { fa = { image = "Featured article star.svg", tooltip = "Featured article", link = true, }, far = { image = "Cscr-star piece.png", tooltip = "Featured article review", link = true, }, farc = { image = "Cscr-star piece.png", tooltip = "Featured article removal candidate", link = true, }, ffa = { aliases = {"dfa"}, image = "Featured article star - cross.svg", tooltip = "Former featured article", link = true, }, fac = { aliases = {"fan"}, image = "Cscr-candidate.svg", tooltip = "Featured article candidate", link = true, }, ffac = { aliases = {"nofa"}, image = "Featured article star - cross.svg", tooltip = "Failed featured article candidate", link = true, }, fl = { image = "Featured article star.svg", tooltip = "Featured list", link = true, }, flrc = { aliases = {"flr"}, image = "Cscr-star piece.png", tooltip = "Featured list removal candidate", link = true, }, ffl = { aliases = {"dfl"}, image = "Cscr-featured-strike.svg", tooltip = "Former featured list", link = true, }, flc = { aliases = {"fln"}, image = "Cscr-candidate.svg", tooltip = "Featured list candidate", link = true, }, fflc = { aliases = {"nofl"}, image = "Cscr-former.svg", tooltip = "Failed featured list candidate", link = true, }, a = { image = "Symbol a class.svg", tooltip = "A-Class article", link = true, }, dac = { aliases = {"daa"}, image = "Symbol unsupport A vote.svg", tooltip = "Demoted A-Class article", link = true, }, acc = { aliases = {"acn", "aac"}, image = "A candidate.svg", tooltip = "A-Class article candidate", link = true, }, noac = { aliases = {"faac"}, image = "Symbol unsupport A vote.svg", tooltip = "Failed A-Class article candidate", link = true, }, ga = { image = "Symbol support vote.svg", tooltip = "Good article", link = false, }, gar = { image = "GA Candidate Neutral vote(ChaosNil).svg", tooltip = "Good article reassessment", link = false, }, dga = { image = "Symbol unsupport vote.svg", tooltip = "Delisted good article", link = false, }, gan = { aliases = {"gac"}, image = "GA candidate.svg", tooltip = "Good article nominee", link = false, }, ga2 = { image = "Symbol neutral vote.svg", tooltip = "Good article, 2nd opinion", link = false, }, gah = { image = "Symbol wait.svg", tooltip = "Good article on hold", link = false, }, fgan = { aliases = {"noga", "gaf", "gf"}, image = "Symbol oppose vote.svg", tooltip = "Failed good article nominee", link = false, }, fp = { image = "Cscr-featured.svg", tooltip = "Featured picture", link = true, }, fpc = { aliases = {"fpn"}, image = "Cscr-candidate.svg", tooltip = "Featured picture candidate", link = true, }, ffp = { image = "Cscr-former.svg", tooltip = "Former featured picture", link = true, }, vp = { image = "ENWP VP Logo.svg", tooltip = "Valued picture", link = true, }, vpc = { image = "Valued pics 1.svg", tooltip = "Valued picture candidate", link = true, }, fs = { image = "Cscr-featured.svg", tooltip = "Featured sound", link = true, }, ffs = { image = "Cscr-former.svg", tooltip = "Former featured sound", link = true, }, fsc = { image = "Cscr-candidate.svg", tooltip = "Featured sound candidate", link = true, }, fpo = { image = "Linecons big-star.svg", tooltip = "Before the featured portal process ceased in 2017, this had been designated as a featured portal.", link = true, }, fpor = { image = "Cscr-star piece.png", tooltip = "Featured portal review", link = true, }, ffpo = { image = "Featured article star - cross.svg", tooltip = "Former featured portal", link = true, }, fpoc = { image = "Cscr-candidate.svg", tooltip = "Featured portal candidate", link = true, }, ft = { image = "Cscr-featuredtopic.svg", tooltip = "Featured topic", link = true, }, ftrc = { image = "Cscr-star piece.png", tooltip = "Featured topic removal candidate", link = true, }, fft = { aliases = {"dft"}, image = "DFT candidate_cluster.svg", tooltip = "Former featured topic", link = true, }, ftc = { aliases = {"ftn"}, image = "FT candidate cluster.svg", tooltip = "Featured topic candidate", link = false, }, gt = { image = "Support cluster.svg", tooltip = "Good topic", link = false, }, gtrc = { image = "Symbol unsupport vote.svg", tooltip = "Good topic removal candidate", link = false, }, gtc = { aliases = {"gtn"}, image = "GA candidate cluster.svg", tooltip = "Good topic candidate", link = false, }, bplus = { aliases = {"b+"}, image = "Symbol bplus class.svg", tooltip = "Bplus-Class article", link = true, }, b = { image = "Symbol b class.svg", tooltip = "B-Class article", link = true, }, br = { aliases = {"bcr"}, image = "Bclass-checklist.svg", tooltip = "B-Class review", link = true, }, c = { image = "Symbol c class.svg", tooltip = "C-Class article", link = true, }, start = { image = "Symbol start class.svg", tooltip = "Start-Class article", link = true, }, stub = { image = "Symbol stub class.svg", tooltip = "Stub-Class article", link = true, }, list = { aliases = {"comparison"}, image = "Symbol list class.svg", tooltip = "List-Class article", link = false, }, no = { image = "Crystal button cancel.svg", tooltip = "Unknown-Class article", link = true, }, book = { image = "Symbol book class2.svg", tooltip = "Wikipedia book", link = true, }, category = { aliases = {"cat", "categ"}, image = "Symbol category class.svg", tooltip = "Category", link = false, }, disambiguation = { aliases = {"dab", "disamb", "disambig"}, image = "Symbol dab class.svg", tooltip = "Disambiguation page", link = true, }, image = { aliases = {"file"}, image = "Symbol file class.svg", tooltip = "File", link = true, }, needed = { image = "Symbol needed class.svg", tooltip = "Needed article", link = false, }, outline = { image = "Global thinking.svg", tooltip = "Outline", link = false, }, portal = { image = "Symbol portal class.svg", tooltip = "Portal", link = true, }, project = { image = "Symbol project class.svg", tooltip = "Project page", link = false, }, redirect = { aliases = {"red", "redir"}, image = "Symbol redirect vote2.svg", tooltip = "Redirect", link = true, }, template = { aliases = {"temp", "templ"}, image = "Symbol template class.svg", tooltip = "Template", link = false, }, essay = { image = "Essay.svg", tooltip = "Essay", link = false, }, na = { image = "Symbol na class.svg", tooltip = "Non-article page", link = true, }, aa = { image = "Yes check.svg", tooltip = "Audited article of limited subject matter", link = false, }, da = { image = "Symbol oppose vote.svg", tooltip = "Demoted article", link = false, }, dyk = { image = "Symbol question.svg", tooltip = "Did You Know?", link = false, }, dyk2 = { image = "DYK questionmark icon.svg", tooltip = "Did You Know?", link = false, }, pr = { image = "Nuvola apps kedit.png", tooltip = "Peer review", link = true, }, ppr = { image = "Nuvola apps kedit.png", tooltip = "Portal peer review", link = true, }, q = { aliases = {"question"}, image = "Symbol question.svg", tooltip = "Question", link = false, }, cleanup = { image = "Edit-clear.svg", tooltip = "Cleanup work", link = false, }, qi = { image = "Quality images logo.svg", tooltip = "Quality image on Wikimedia Commons", link = false, }, vi = { image = "Valued image seal.svg", tooltip = "Valued image on Wikimedia Commons", link = false, }, tfa = { image = "Wikipedia-logo.svg", tooltip = "Today's Featured Article", link = true, }, tfl = { image = "Wikipedia-logo.svg", tooltip = "Today's Featured List", link = true, }, itn = { image = "Globe current.svg", tooltip = "In The News", link = true, }, otd = { image = "Nuvola apps date.svg", tooltip = "On This Day", link = true, }, wikiproject = { image = "People icon.svg", tooltip = "WikiProject", link = false, }, goce = { image = "Writing Magnifying.PNG", tooltip = "Guild of Copy Editors", link = true, }, wikipedia = { image = "Wikipedia-logo.svg", tooltip = "Wikipedia page", link = true, }, commons = { image = "Commons-logo.svg", tooltip = "Commons page", link = false, }, wikiquote = { image = "Wikiquote-logo.svg", tooltip = "Wikiquote page", link = false, }, wikiversity = { image = "Wikiversity logo 2017.svg", tooltip = "Wikiversity page", link = true, }, wikibooks = { image = "Wikibooks-logo.svg", tooltip = "Wikibooks page", link = true, }, wikisource = { image = "Wikisource-logo.svg", tooltip = "Wikisource page", link = true, }, wiktionary = { image = "Wiktionary-logo.svg", tooltip = "Wiktionary page", link = true, }, wikinews = { image = "Wikinews-logo.svg", tooltip = "Wikinews page", link = true, }, wikispecies = { image = "Wikispecies-logo.svg", tooltip = "Wikispecies page", link = true, }, wikidata = { image = "Wikidata-logo.svg", tooltip = "Wikidata page", link = false, }, wikivoyage = { image = "Wikivoyage-logo.svg", tooltip = "Wikivoyage page", link = true, }, mediawiki = { image = "MediaWiki-2020-icon.svg", tooltip = "MediaWiki", link = false, }, phabricator = { aliases = {"phab"}, image = "Favicon-Phabricator-WM.svg", tooltip = "Phabricator", link = false, }, wikitech = { image = "Wikitech-2021-blue-icon.svg", tooltip = "Wikitech", link = false, }, meta = { image = "Wikimedia Community Logo.svg", tooltip = "Meta-wiki page", link = false, }, four = { aliases = {"4a"}, image = "Four Award.svg", tooltip = "Four Award", link = false, }, million = { image = "Million award logo.svg", tooltip = "Million Award", link = true, }, module = { image = "Lua-logo-nolabel.svg", tooltip = "Module", link = false, }, vital = { image = "Círculos_Concéntricos.svg", tooltip = "Vital article", link = false, }, potd = { image = "Wikipedia-logo.svg", tooltip = "Picture of the Day", link = true, }, _DEFAULT = { image = "Symbol question.svg", link = false, } } -------------------------------------------------------------------------------- -- End icon data -------------------------------------------------------------------------------- -- Make aliases work the same as normal keys, and remove the "aliases" subtables. local ret= {} for code, iconData in pairs(data) do iconData.canonicalCode = code if iconData.aliases then for _, alias in ipairs(iconData.aliases) do ret[alias] = iconData end iconData.aliases = nil end ret[code] = iconData end return ret d8e668d4755103abdbc8325fa35964e99198c29d Template:Further 10 982 2159 2158 2023-10-01T12:50:39Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Further]] wikitext text/x-wiki <includeonly>{{#invoke:labelled list hatnote|labelledList|Further information{{#if:{{{topic|}}}|&#32;on {{{topic|}}}}}}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> dd29c6dfb3894a2dc3f20144a654b7012c9a9214 Template:Color 10 213 2161 483 2023-10-01T12:50:41Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Color]] wikitext text/x-wiki <span style="color:{{{1|}}}">{{{2|{{{1|}}}}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude> fc48e80484b6d4a0cd1821c712d8cbbdfd9a233e Template:See 10 983 2163 2162 2023-10-01T12:50:42Z Führerredux 2 1 revision imported from [[:wikipedia:Template:See]] wikitext text/x-wiki #REDIRECT [[Template:Further]] 5d02b5a16045ac62c67ba614e550dec3a5661db7 Template:Minor planet 10 984 2165 2164 2023-10-01T12:50:44Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Minor_planet]] wikitext text/x-wiki {{#switch: {{{1}}} | s = | S = {{nowrap|S/{{{2}}} ({{{3}}}{{#if: {{{5|}}} |<sub>{{{4}}}</sub>) {{{5}}}|) {{{4}}}}}}} | {{#expr: {{{1}}}*1 }} = {{nowrap|({{{1}}}) {{{2}}}{{#if: {{{3|}}} |<sub>{{{3}}}</sub>|}}}} | #default = {{nowrap|{{{1}}}{{#if: {{{2|}}} |<sub>{{{2}}}</sub>|}}}} }}<noinclude> {{Documentation}} </noinclude> 853353b9192dc27e9ad940f8ffd53dfa024dd92e Template:Mp 10 985 2167 2166 2023-10-01T12:50:44Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Mp]] wikitext text/x-wiki #REDIRECT [[Template:Minor planet]] {{Redirect category shell| {{R from move}} }} 8ce86e91382eef3030101b778977c0f2311084fc Template:Startplainlist 10 986 2169 2168 2023-10-01T12:50:46Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Startplainlist]] wikitext text/x-wiki #REDIRECT [[Template:Plainlist]] 004e758d1686df1d3da2ef0f1c8778ff1f12077d Template:Vad 10 987 2171 2170 2023-10-01T12:50:47Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Vad]] wikitext text/x-wiki #redirect [[Template:Vertically aligned date]] {{rcat shell|{{r from template shortcut}}}} [[Category:Typing-aid templates|{{PAGENAME}}]] b90a5de41f13a9857edeae26aa461f4c09a00c01 Template:Vertically aligned date 10 988 2173 2172 2023-10-01T12:50:48Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Vertically_aligned_date]] wikitext text/x-wiki <includeonly><span style="display:inline-block; width:{{if empty|{{{2|}}}|{{{width|}}}|3.6em}}; text-align:{{if empty|{{{3|}}}|{{{align|}}}|right}}; font-weight:{{if empty|{{{4|}}}|{{{font|}}}|normal}};">{{{1}}}</span></includeonly><noinclude>{{documentation}}</noinclude> 5d09cbb92ba4b8bdbd1feae1e19a300def099a81 Template:Always substitute 10 989 2175 2174 2023-10-01T12:50:49Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Always_substitute]] wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Unsubst|main|$B= {{Ombox | name = Subst only | type = notice | text = '''This template {{#switch:{{{yesnomaybe|}}}|may=may be [[Help:Substitution|substituted]]'''|never=should ''not'' be [[Help:Substitution|substituted]]'''||#default=should always be [[Help:Substitution|substituted]]''' (i.e., use <!-- -->{{{actualtemplate|{{template other|{{Tlsp|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{BASEPAGENAME}}|{{PAGENAME}}}}}}|{{Tlsu|{{FULLPAGENAME}}}}}}}}})}}. <!-- -->{{#if:{{yesno|{{{auto|no}}}}} |Any accidental transclusions will be automatically substituted by a bot.{{{1|}}}{{#switch:{{SUBPAGENAME}}|doc|sandbox=|[[Category:Wikipedia templates to be automatically substituted]]}}}} <!-- -->{{#if:{{{alt|}}} |For transcluding, use {{Tl|{{{alt|}}}}} instead.}} }}{{#switch:{{SUBPAGENAME}}|doc|sandbox=|[[Category:Wikipedia substituted templates]]}}}}<noinclude>{{Documentation}}</noinclude> 8e567c153f4f9a6a329e76bf6a71e8a216e87919 Template:Never substitute 10 990 2177 2176 2023-10-01T12:50:51Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Never_substitute]] wikitext text/x-wiki {{Always substitute|yesnomaybe=never}}<noinclude> {{Documentation}} </noinclude> fda3e0330f5da78bbcd49a4f97ec81a6a3c78cd5 Module:Transclusion count/data/M 828 991 2179 2178 2023-10-01T12:50:52Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/M]] Scribunto text/plain return { ["M"] = 2100, ["MAD"] = 2100, ["MAR"] = 2800, ["MAS"] = 2600, ["MDG"] = 2400, ["MEX"] = 6200, ["MILHIST"] = 13000, ["MINUTE"] = 2300, ["MKD"] = 2300, ["MLB_Farm_System"] = 2100, ["MLB_Year"] = 14000, ["MLB_standings"] = 3700, ["MLBplayer"] = 3900, ["MMA_record_start"] = 3600, ["MMArecordbox"] = 3700, ["MMSI_Number"] = 3100, ["MONTH"] = 13000, ["MONTHNAME"] = 829000, ["MONTHNUMBER"] = 846000, ["MS"] = 5100, ["MV"] = 8900, ["MYS"] = 3700, ["MacTutor"] = 2000, ["Main"] = 341000, ["Main_article"] = 30000, ["Main_other"] = 9560000, ["Main_page_image"] = 26000, ["Main_page_image/DYK"] = 9500, ["Main_page_image/ITN/styles.css"] = 2600, ["Main_page_image/TFA"] = 4800, ["Maintenance_category"] = 39000, ["Malay_name"] = 2300, ["Map_requested"] = 8700, ["Map_requested/Category_helper"] = 8600, ["Maplink"] = 29000, ["Maplink-road"] = 6000, ["Marriage"] = 73000, ["Marriage/doc"] = 72000, ["Marriage/styles.css"] = 73000, ["Math"] = 9600, ["MathGenealogy"] = 7000, ["MathWorld"] = 2400, ["Mathgenealogy"] = 2100, ["Maths_rating"] = 20000, ["Max"] = 248000, ["Maybe_free_media"] = 12000, ["Mbox"] = 2970000, ["Mdash"] = 8800, ["MeSH_name"] = 6100, ["Medal"] = 113000, ["MedalBottom"] = 17000, ["MedalBronze"] = 54000, ["MedalComp"] = 2200, ["MedalCompetition"] = 88000, ["MedalCount"] = 3100, ["MedalCountry"] = 78000, ["MedalGold"] = 53000, ["MedalOlympic"] = 4000, ["MedalOlympics"] = 6100, ["MedalSilver"] = 53000, ["MedalSport"] = 78000, ["MedalTableTop"] = 17000, ["MedalTop"] = 3900, ["MedalWorldChampionships"] = 2100, ["MedalistTable"] = 15000, ["Medals_table"] = 14000, ["Media"] = 2600, ["Medical_resources"] = 6700, ["Merge_done"] = 3500, ["Merged-from"] = 16000, ["Merged-to"] = 18000, ["Merged_to"] = 2200, ["MeshName"] = 5900, ["Metacritic_film"] = 4100, ["Metadata_Population_DE-BY"] = 2100, ["Metadata_Population_DE-RP"] = 2300, ["Mhof"] = 7300, ["Mid-Class"] = 15000, ["Mid-importance"] = 15000, ["Middot"] = 6000, ["Midsize"] = 2100, ["MilHist"] = 4800, ["Military_navigation"] = 83000, ["Min"] = 22000, ["Minor_planet"] = 5000, ["Minor_planet_link"] = 2700, ["Minor_planet_list_link"] = 4200, ["Minor_planets_navigator"] = 3200, ["MirrorH"] = 5400, ["Missing_information"] = 3600, ["Mlby"] = 14000, ["Mobile_IP"] = 8800, ["MobyGames"] = 8900, ["Moby_game"] = 7000, ["Mod"] = 15000, ["Module_other"] = 3600, ["Mojo_title"] = 7800, ["Molecular_formula_index"] = 2300, ["Monday"] = 2700, ["Mono"] = 30000, ["Mono/styles.css"] = 31000, ["MonthCategoryNav"] = 35000, ["MonthlyArchive"] = 3500, ["MonthlyLinks"] = 3600, ["Monthly_archive_list"] = 3600, ["Monthly_clean-up_category"] = 16000, ["Monthly_clean-up_category/core"] = 16000, ["Monthly_clean-up_category/monthname"] = 17000, ["Monthly_clean-up_category/monthno"] = 17000, ["Monthly_clean-up_category/name_part"] = 17000, ["Monthly_clean-up_category/outer_core"] = 16000, ["Monthly_clean-up_category/to_add"] = 2800, ["Monthly_clean_up_category"] = 7200, ["Monthyear"] = 75000, ["Monthyear-1"] = 72000, ["MoreInfo"] = 2000, ["More_citations_needed"] = 367000, ["More_citations_needed_section"] = 16000, ["More_footnotes"] = 35000, ["More_footnotes_needed"] = 53000, ["More_plot"] = 2200, ["More_references"] = 3200, ["Moresources"] = 5900, ["Motorcycle_Hall_of_Fame"] = 7300, ["Motorcycling"] = 3200, ["Motorsport_season"] = 4900, ["Motorsport_season/styles.css"] = 4900, ["Moved_discussion_from"] = 2900, ["Moved_discussion_to"] = 2600, ["Mp"] = 5000, ["Mpl"] = 2700, ["MultiReplace"] = 211000, ["Multiple_image"] = 50000, ["Multiple_image/styles.css"] = 50000, ["Multiple_issues"] = 124000, ["Multiple_issues/styles.css"] = 124000, ["Music"] = 7600, ["MusicBrainz_artist"] = 2200, ["MusicBrainz_meta"] = 5100, ["MusicBrainz_release_group"] = 2200, ["Music_ratings"] = 95000, ["Mvar"] = 6900, ["Mw_lang"] = 79000, ["My"] = 2500, ["My_sandbox"] = 3800, ["Myprefs"] = 11000, ["Module:MLB_standings"] = 3700, ["Module:MLB_standings/data"] = 3700, ["Module:Main_page_image"] = 15000, ["Module:Mapframe"] = 429000, ["Module:Math"] = 1570000, ["Module:Medals_table"] = 14000, ["Module:Message_box"] = 18000000, ["Module:Message_box/ambox.css"] = 3110000, ["Module:Message_box/cmbox.css"] = 424000, ["Module:Message_box/configuration"] = 9500000, ["Module:Message_box/fmbox.css"] = 19000, ["Module:Message_box/imbox.css"] = 924000, ["Module:Message_box/ombox.css"] = 1580000, ["Module:Message_box/tmbox.css"] = 12300000, ["Module:Military_navigation"] = 83000, ["Module:Minor_planet_list_link"] = 4200, ["Module:MultiReplace"] = 1260000, ["Module:Multiple_image"] = 50000, ["Module:Music_ratings"] = 95000, ["Module:Mw_lang"] = 79000, } d6618357c3b12c8b70e8e96c698bc6bb513282ef Template:Hatnote templates 10 992 2181 2180 2023-10-01T12:50:53Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Hatnote_templates]] wikitext text/x-wiki {{Navbox | name = Hatnote templates | state = {{{state|<includeonly>autocollapse</includeonly>}}} | bodyclass = hlist | belowclass = hlist | title = [[WP:Hatnote#Hatnote templates|Hatnote templates]] | above = *[[Wikipedia:Hatnote]] *[[Wikipedia:Disambiguation]] *[[Wikipedia:Redirect]] | group1 = Generic | list1 = *{{tl|Hatnote}} *{{tl|Self-reference}} | group2 = For and about | list2 = *{{tl|For}} *{{tl|For-text}} (for custom text) *{{tl|For-multi}} (for multiple uses) *{{tl|About}} *Variations: {{tl|Other uses}} *{{tl|Other uses of}} *{{tl|Redirect-distinguish-for}} *{{tl|About-distinguish}} *{{tl|About-distinguish-text}} | group3 = Other topics | list3 = *{{tl|Other people}} *{{tl|About other people}} (adds "about" description) *{{tl|Similar names}} *{{tl|Other storms}} *{{tl|Other places}} *{{tl|Other ships}} | group4 = Redirect | list4 = *{{tl|Redirect}} *{{tl|Redirect2}} (for two redirects) *{{tl|Redirect-multi}} (for multiple redirects) *{{tl|Redirect-several}} (for several redirects, without listing each) *{{tl|Redirect-synonym}} *{{tl|Redirect-distinguish}} *{{tl|Redirect-distinguish-text}} *{{tl|Redirect-distinguish-for}} *{{tl|Technical reasons}} | group5 = Distinguish | list5 = *{{tl|Distinguish}} (supports custom text) *{{tl|About-distinguish}} *{{tl|About-distinguish-text}} (for custom text) *{{tl|Redirect-distinguish}} *{{tl|Redirect-distinguish-text}} (for custom text) *{{tl|Redirect-distinguish-for}} | group6 = For use in sections | list6 = *{{tl|Main}} *{{tl|Main if exists}} *{{tl|Main list}} *{{tl|Further}} *{{tl|Further-text}} (for custom text) *{{tl|Further interlanguage link}} *{{tl|See also}} *{{tl|See also if exists}} *{{tl|See also-text}} (for custom text) *{{tl|For outline}} *{{tl|For timeline}} | group7 = Special | list7 = *{{tl|Broader}} *{{tl|For introduction}} *{{tl|See Wiktionary}} *{{tl|Transcluding article}} *{{tl|Transcluded section}} | group8 = Subject specific | list8 = * {{tl|About year}} * {{tl|Highway detail hatnote}} * {{tl|For LMST}} * {{tl|WikiIPA}} | below = *{{Icon|cat}} [[:Category:Hatnote templates]] **[[:Category:Hatnote modules|modules]] **[[:Category:Hatnote templates for names|for [family] names]] **[[:Category:Hatnote templates for lists|for lists]] *[[Template:Category hatnote templates|hatnote templates for category pages]] }}<noinclude> {{Documentation}} </noinclude> 5ea17ab2381b3c2002e4846f08d462d2574b6015 Template:Main/doc 10 451 2183 1002 2023-10-01T12:50:54Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Main/doc]] wikitext text/x-wiki ==Description== This template is used at the start of a section to link to the main article on that subject. ==Syntax== Type {{tlx|main|page name}} anywhere on the page. For example, {{tlx|main|Help:Contents}} gives... :{{main|Help:Contents}} You can add multiple pages, up to a maximum of five. For example, {{tlx|Main|One|Two|Three|Four|Five}} gives... :{{Main|One|Two|Three|Four|Five}} ==Credits== This template's code came from [[wikia:w:c:sims:Template:Main|Template:Main]] on The Sims Wiki. <includeonly>[[Category:Other templates|{{PAGENAME}}]]</includeonly> <noinclude>[[Category:Template documentation pages|{{PAGENAME}}]]</noinclude> ==TemplateData== {{TemplateData header}} <templatedata> { "params": { "1": { "label": "Page 1", "description": "The name of the first page that you want to link to. If this is not specified, the current page name (without the namespace prefix) is used instead.", "type": "string" }, "2": { "label": "Page 2", "description": "The name of the second page you want to link to.", "type": "string" }, "3": { "label": "Page 3", "description": "The name of the third page you want to link to.", "type": "string" }, "4": { "label": "Page 4", "description": "The name of the fourth page you want to link to.", "type": "string" }, "5": { "label": "Page 5", "description": "The name of the fifth page you want to link to.", "type": "string" }, "6": { "label": "Page 6", "description": "The name of the sixth page you want to link to.", "type": "string" } }, "description": "This template is used after the heading of a section, to link to a sub-article (or sub-articles) that is entirely about the topic of the section. The template will display in italics: \"Main article: Article 1, Article 2 and Article 3\".", "paramOrder": [ "1", "2", "3", "4", "5", "6" ] } </templatedata> 06d3a43cfa1555d654afcc6d7860e3f8a1006194 Template:Lang-gr 10 995 2187 2186 2023-10-01T14:11:45Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Lang-gr]] wikitext text/x-wiki #REDIRECT [[Template:lang-el]] 5d94e6e51e5276de93e697f3f837f9a3586261c9 Template:Lang-el 10 996 2189 2188 2023-10-01T14:12:11Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Lang-el]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_inherit |code=el }}</includeonly>{{#if:{{{2|}}}|{{Main other|[[Category:Instances of Lang-el using second unnamed parameter]]}}}}<noinclude> {{Documentation}} </noinclude> 1898a92fadc3297db4e90db7600d5d1d8a945355 Template:Lang-ru 10 997 2191 2190 2023-10-01T14:12:18Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Lang-ru]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_inherit |code=ru }}</includeonly><noinclude> {{Documentation|Template:Lang-x/doc}} [[Category:Balto-Slavic multilingual support templates]] </noinclude> 695925373c486c81a8f6581d4c8d3f95e56c469c Template:Lang-fr 10 998 2193 2192 2023-10-01T14:12:19Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Lang-fr]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_italic |code=fr }}</includeonly><noinclude> {{documentation|Template:Lang-x/doc}} [[Category:Italic multilingual support templates]] </noinclude> d931674bb3f25747fd413f72d24d104de98129b6 Template:Lang-de 10 999 2195 2194 2023-10-01T14:12:26Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Lang-de]] wikitext text/x-wiki <includeonly>{{#invoke:lang|lang_xx_italic |code=de }}</includeonly><noinclude> {{Documentation}} </noinclude> fce950f3988f353d598dd94038c50a0016c8f3e7 Template:Dagger 10 1000 2197 2196 2023-10-01T14:12:28Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Dagger]] wikitext text/x-wiki †<noinclude>{{Documentation}} </noinclude> c1cff92219225378143384ca5156377ca50dd713 Template:Tlc 10 1001 2199 2198 2023-10-01T14:12:28Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tlc]] wikitext text/x-wiki #REDIRECT [[Template:Template link code]] {{Redirect category shell| {{R from template shortcut}} {{R from high-use template}} {{R from move}} }} 48ef4a029c0e27cccb1148a29fb8b7ccb211a4a2 Template:Deprecated code 10 1002 2201 2200 2023-10-01T14:12:30Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Deprecated_code]] wikitext text/x-wiki <del class="deprecated-content {{{class|}}}" style="color:{{#if:{{{red|}}}|#8B0000|#808080}}; text-decoration:none; {{#if:{{{style|}}}|{{{style}}}|}}" {{#if:{{{id|}}}|id="{{{id}}}"|}} {{#if:{{{title|{{{2|}}}}}}|title="{{{title|{{{2}}}}}}"|}}>{{{1}}}</del><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> c8fa271da275bc211fa5f70ab12b5ed41d822332 Template:!mxt 10 1003 2203 2202 2023-10-01T14:12:32Z Führerredux 2 1 revision imported from [[:wikipedia:Template:!mxt]] wikitext text/x-wiki {{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example deprecated-content example-bad monospaced example-mono" style="font-family: monospace, monospace; color: #8B0000;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<!--"monospace, monospace" needed per Wikipedia:Typography#The_monospace_'bug'--><noinclude> {{Documentation|Template:Xt/doc}} <!--This category has to be done on a per-template basis, not in the shared docs, since it only apply to four templates in the family.--> [[Category:Programming typing-aid templates]] </noinclude> 123b663ea682585bd66d348c0b22b9356b6082bb Template:Mxt 10 1004 2205 2204 2023-10-01T14:12:32Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Mxt]] wikitext text/x-wiki {{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example monospaced example-mono" style="font-family: monospace, monospace; color: #006400;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<!--"monospace, monospace" needed per Wikipedia:Typography#The_monospace_'bug'--><noinclude> {{Documentation|Template:Xt/doc}} <!--This category has to be done on a per-template basis, not in the shared docs, since it only apply to four templates in the family.--> [[Category:Programming typing-aid templates]] </noinclude> b00aa06d96188f3a153fd18bd7f0eebcb7f3b8d2 Module:Lang/documentor tool 828 1005 2207 2206 2023-10-01T14:12:34Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Lang/documentor_tool]] Scribunto text/plain require('strict') local p = {} --[[ -------------------------< P R I V A T E _ T A G S >------------------------------------------------------ {{#invoke:Lang/documentor tool|private_tags}} Reads the override{} table in Module:Lang/data and renders a wiki table of private tags and their associated languages ]] local function private_tags (frame) local override_t = mw.loadData ('Module:Lang/data').override; -- get the override table local private_t = {}; for tag, lang in pairs (override_t) do if tag:find ('%-x%-') then table.insert (private_t, table.concat ({'\n|-\n|', lang, '||', tag})) end end table.sort (private_t) table.insert (private_t, 1, '{| class="wikitable sortable"'); table.insert (private_t, 2, '\n|+ Supported private-use IETF language tags') table.insert (private_t, 3, '\n! Language !! Private-use tag') return table.concat (private_t) .. '\n|}'; -- return '<pre>' .. table.concat (private_t) .. '\n|}' .. '</pre>' --error (mw.dumpObject (private_t)) end --[[ -------------------------< L A N G - X X _ S E T T I N G S >---------------------------------------------- {{#invoke:Lang/documentor tool|lang_xx_settings|template={{ROOTPAGENAME}}}} Reads the content of the template and extracts the parameters from {{#invoke:Lang|...}} for display on the template's documentation page. ]] local function lang_xx_settings(frame) local page = mw.title.makeTitle('Template', frame.args['template'] or frame.args[1]) -- get a page object for this page in 'Template:' namespace if not page then return '' -- TODO: error message? end local content = page:getContent() -- get unparsed content if not page then return '' -- TODO: error message? end local out = {} local params local style if content:match('{{%s*#invoke:%s*[Ll]ang%s*|[^|]+|[^}]+}}') or content:match('{{%s*#invoke:%s*[Ll]ang/sandbox%s*|[^|]+|[^}]+}}') then -- if this template uses [[Module:Lang]] params = content:match('{{%s*#invoke:%s*[Ll]ang%s*|[^|]+(|[^}]+)}}') or content:match('{{%s*#invoke:%s*[Ll]ang/sandbox%s*|[^|]+(|[^}]+)}}') -- extract the #invoke:'s parameters if not params then return '' -- there should be at least one or the template/module won't work TODO: error message? end table.insert(out, '{| class="wikitable" style="text-align: right; float: right;"\n|+settings') -- start a wikitable for k, v in params:gmatch('%s*|%s*([^%s=]+)%s*=%s*([^%s|]+)') do -- get the parameter names (k) and values (v) if 'label' == k then -- special case for labels because spaces and pipes v = params:match('label%s*=%s*(%[%[[^%]]+%]%])') or params:match('label%s*=%s*([^|\n]+)') or 'missing label' end table.insert(out, table.concat({k, '\n|', v})) -- make rudimentary wikitable entries end style = content:match('lang_xx_([^|]+)'); if not style or ('italic' ~= mw.text.trim (style) and 'inherit' ~= mw.text.trim (style)) then return '<span style="color:#d33">Error: template #invoke calls unknown function</span>'; end return table.concat({table.concat(out,'\n|-\n! scope="row" | '), '\n|-\n|colspan="2"|style: ', style, '\n|-\n|}'}) -- add inter-row markup and close the wikitable and done else return '' -- does not use [[Module:Lang]] so abandon quietly end end --[[ -------------------------- < U S E S _ M O D U L E > -------------------------- {{#invoke:Lang/documentor tool|uses_module|template={{ROOTPAGENAME}}}} Reads the content of the template to determine if this {{lang-xx}} template uses Module:Lang. Returns the index of the substring '{{#invoke|lang|' in the template page content if true; empty string if false. Used in template documentation {{#if:}} parser functions. ]] local function uses_module(frame) local page = mw.title.makeTitle('Template', frame.args['template'] or frame.args[1]) -- get a page object for this page in 'Template:' namespace if not page then return '' -- TODO: error message? end local content = page:getContent() -- get unparsed content if not page then return '' -- TODO: error message? end return content:find('{{%s*#invoke:[Ll]ang%s*|') or '' -- return index or empty string end --[[ -------------------------- < S H A R E D _ C O D E > -------------------------- - Tables: -- language_categories -- error_messages -- strings - Functions: -- make_error(message, layout, parent_category, nocat) -- get_language_link(language_name, language_code) -- get_see_also_section(page_title, language_name, language_code) -- get_hidden_category_template(frame) -- get_top_section(frame) -- get_bottom_section(frame, language_name, see_also_section, parent_category) ]] local language_categories = { ["LANGUAGES_SOURCES"] = "Articles with %s-language sources (%s)", ["LANGUAGES_COLLECTIVE_SOURCES"] = "Articles with %s-collective sources (%s)", ["CS1"] = "CS1 %s-language sources (%s)", ["LANGUAGE_TEXT"] = "Articles containing %s-language text", -- old version ["LANGUAGES_COLLECTIVE_TEXT"] = "Articles with text from the %s collective", ["LANGUAGES_COLLECTIVE_TEXT"] = "Articles with text in %s", ["ENGLISH"] = "Articles containing explicitly cited %s-language text", } local error_assistance = " Please see [[Template talk:Lang]] for assistance." local error_messages = { ["ASSISTANCE"] = "Please see [[Template talk:Lang]] for assistance.", ["INCORRECT_CATEGORY_TITLE"] = "[[:%s]] is not the category being populated by the {{tlx|%s}} template. The correct category is located at: [[:%s]].", ["NO_CATEGORY_TITLE_FOUND"] = "No language category found for '''%s.'''" .. error_assistance, ["NOT_VALID_CATEGORY_FORMAT"] = "'''%s''' is not a a valid category title." .. error_assistance, ["NOT_VALID_LANGUAGE_CODE"] = "[[%s]] is not a valid ISO 639 or IETF language name." .. error_assistance, } local strings = { ["ERROR_CATEGORY"] = "[[Category:Lang and lang-xx template errors]]", ["ERROR_SPAN"] = '<span style="font-size: 100%%; font-style: normal;" class="error">Error: %s </span>', ["PURGE_DIV"] = '<div style="font-size: x-small;">%s</div>', ["SEE_ALSO"] = "\n==See also==", ["SEE_ALSO_ITEM"] = "* [[:%s]]", } --[[ -------------------------- < M A K E _ E R R O R > -------------------------- Create an error message. Does not place page in error category if args.nocat is used. Does not categorize in parent cateogory if used in category namespace (usually for /testcases). ]] local function make_error(message, layout, parent_category, nocat) table.insert(layout, string.format(strings["ERROR_SPAN"], message)) if not nocat then table.insert(layout, strings["ERROR_CATEGORY"]) end if mw.title.getCurrentTitle().nsText == "Category" then table.insert(layout, parent_category) end return table.concat(layout) end --[[ -------------------------- < G E T _ L A N G U A G E _ L I N K > -------------------------- Generates a language link for the correct style. Collective languages use the name_from_tag value, while other languages use a display name of "x-language". ]] local function get_language_link(language_name, language_code) local lang_module = require('Module:Lang') -- Is a language collective? if language_name:find('languages') then return lang_module.name_from_tag({language_code, link = "yes"}) else return lang_module.name_from_tag({language_code, link = "yes", label = lang_module.name_from_tag({language_code}) .. "-language"}) end end --[[ -------------------------- < G E T _ S E E _ A L S O _ S E C T I O N > -------------------------- Generates a consistent style See also section for {{Category articles containing non-English-language text}} and {{Non-English-language source category}}. If {{CS1 language sources}} is converted, it should also use it. ]] local function get_see_also_section(page_title, language_name, language_code) local see_also_section = {} for _, category_name in pairs(language_categories) do local category = mw.title.new(string.format(category_name, language_name, language_code), 14) if category and page_title ~= category.text and category.exists then table.insert(see_also_section, string.format(strings["SEE_ALSO_ITEM"], category.prefixedText)) end end table.sort(see_also_section) table.insert(see_also_section, 1, strings["SEE_ALSO"]) if table.getn(see_also_section) == 1 then return "" else return table.concat(see_also_section, "\n") end end --[[ -------------------------- < G E T _ H I D D E N _ C A T E G O R Y _ T E M P L A T E > -------------------------- Generates the Template:Hidden category template. This function is separate from the get_top_section() function as this should be used in both error categories and valid categories. ]] local function get_hidden_category_template(frame) return frame:expandTemplate{title = 'Hidden category'} end --[[ -------------------------- < G E T _ T O P _ S E C T I O N > -------------------------- Generates a consistent top maintenance template section which consists of: -- Template:Possibly empty category -- Template:Purge ]] local function get_top_section(frame) local top_section = {} if mw.site.stats.pagesInCategory(mw.title.getCurrentTitle().text, "all") == 0 then table.insert(top_section, frame:expandTemplate{title = 'Possibly empty category'}) else table.insert(top_section, frame:expandTemplate{title = 'Possibly empty category', args = {hidden=true}}) end local purge_module = require('Module:Purge') table.insert(top_section, string.format(strings["PURGE_DIV"], purge_module._main({"Purge page cache"}))) return table.concat(top_section, "\n\n") end --[[ -------------------------- < G E T _ B O T T O M _ S E C T I O N > -------------------------- Generates a consistent non-text section which consists of: -- Template:CatAutoTOC -- A see also section -- {{DEFAULTSORT}} -- Categorization in parent category ]] local function get_bottom_section(frame, language_name, see_also_section, parent_category) local bottom_section = {} table.insert(bottom_section, frame:expandTemplate{title = 'CatAutoTOC'}) table.insert(bottom_section, see_also_section) if mw.title.getCurrentTitle().nsText == "Category" then table.insert(bottom_section, frame:preprocess{text = "{{DEFAULTSORT:" .. language_name .. "}}"}) table.insert(bottom_section, parent_category) end return table.concat(bottom_section, "\n\n\n") end --[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ T E X T _ C A T E G O R Y > -------------------------- {{#invoke:Lang/documentor tool|non_english_language_text_category}} This function implements {{Non-English-language text category}}. ]] local non_english_language_text_strings = { ["LINE1"] = "This category contains articles with %s%s text. The primary purpose of these categories is to facilitate manual or automated checking of text in other languages.", ["LINE2"] = "This category should only be added with the %s family of templates, never explicitly.", ["LINE3"] = 'For example %s, which wraps the text with <code>&lt;span lang="%s"&gt;</code>.%s', ["LINE3_EXTRA"] = " Also available is %s which displays as %s.", ["IN_SCRIPT"] = " (in %s)", ["EXAMPLE_DEFAULT_TEXT"] = "text in %s language here", ["PARENT_CATEGORY"] = "[[Category:Articles containing non-English-language text]]", ["TEMPLATE"] = "Lang", } local function non_english_language_text_category(frame) local page = mw.title.getCurrentTitle() local args = require('Module:Arguments').getArgs(frame) -- args.test is used for /testcases if args.test then page = mw.title.new(args.test) end -- Naming style: Articles with text from the Berber languages collective local page_title_modified = page.text local split_title = "([^,]+)%%s([^,]*)" local part1 = "" local part2 = "" if page_title_modified:find('Articles with text in') then -- Naming style: Category:Articles with text from Afro-Asiatic languages (as currently implemented in Module:lang) part1, part2 = language_categories["LANGUAGES_COLLECTIVE_TEXT"]:match(split_title) elseif page_title_modified:find('explicitly cited') then part1, part2 = language_categories["ENGLISH"]:match(split_title) else -- Naming style: Category:Articles containing French-language text part1, part2 = language_categories["LANGUAGE_TEXT"]:match(split_title) end page_title_modified = page_title_modified:gsub(part1, "") page_title_modified = page_title_modified:gsub(part2, "") local language_name = page_title_modified local layout = {} table.insert(layout, get_hidden_category_template(frame)) local parent_category = non_english_language_text_strings["PARENT_CATEGORY"] if language_name == page.text then -- Error: Category title format not supported. return make_error(string.format(error_messages["NOT_VALID_CATEGORY_FORMAT"], page.text), layout, parent_category, args.nocat) end local lang_module = require('Module:Lang') local language_code = lang_module._tag_from_name({language_name}) if language_code:find('[Ee]rror') then -- Error: Language code not found in database. return make_error(string.format(error_messages["NOT_VALID_LANGUAGE_CODE"], language_name), layout, parent_category, args.nocat) end local correct_language_category_title = lang_module._category_from_tag({language_code}) if correct_language_category_title:find('[Ee]rror') then -- Error: No category title found for language code. return make_error(string.format(error_messages["NO_CATEGORY_TITLE_FOUND"], language_code), layout, parent_category, args.nocat) end local current_category_title = page.prefixedText if current_category_title ~= correct_language_category_title then -- Error: The current title used is not in the supported format. TODO: can this still be reached? return make_error( string.format(error_messages["INCORRECT_CATEGORY_TITLE"], current_category_title, non_english_language_text_strings["LANG"], correct_language_category_title), layout, parent_category, args.nocat) end table.insert(layout, get_top_section(frame)) local script_text = "" if args.script then script_text = string.format(non_english_language_text_strings["IN_SCRIPT"], args.script) end local language_link = get_language_link(language_name, language_code) table.insert(layout, string.format(non_english_language_text_strings["LINE1"], language_link, script_text)) local lang_template = frame:expandTemplate{title = 'Tl', args = {non_english_language_text_strings["TEMPLATE"]}} table.insert(layout, string.format(non_english_language_text_strings["LINE2"], lang_template)) local language_code_link = lang_module._name_from_tag({language_code, link="yes", label=language_code}) local example_default_text = string.format(non_english_language_text_strings["EXAMPLE_DEFAULT_TEXT"], language_name) local example_text = args.example or example_default_text local lang_template_example = frame:expandTemplate{title = 'Tlx', args = {non_english_language_text_strings["TEMPLATE"], language_code_link, example_text}} local lang_x = mw.title.makeTitle(10, "Lang-" .. language_code) local line3_extra = "" if lang_x.exists then local lang_x_template_example = frame:expandTemplate{title = 'Tlx', args = {lang_x.text, example_text}} local lang_x_template = frame:expandTemplate{title = lang_x.text, args = {example_text}} line3_extra = string.format(non_english_language_text_strings["LINE3_EXTRA"], lang_x_template_example, lang_x_template) end table.insert(layout, string.format(non_english_language_text_strings["LINE3"], lang_template_example, language_code, line3_extra)) local see_also_section = get_see_also_section(page.text, language_name, language_code) local bottom = get_bottom_section(frame, language_name, see_also_section, non_english_language_text_strings["PARENT_CATEGORY"]) return table.concat(layout, "\n\n") .. bottom end --[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ S O U R C E S _ C A T E G O R Y > -------------------------- {{#invoke:Lang/documentor tool|non_english_language_sources_category}} This function implements {{Non-English-language sources category}}. ]] local non_english_language_sources_strings = { ["LINE1"] = "This is a tracking category for articles that use %s to identify %s sources.", ["PARENT_CATEGORY"] = "[[Category:Articles with non-English-language sources]]", ["TEMPLATE"] = "In lang", } local function non_english_language_sources_category(frame) local page = mw.title.getCurrentTitle() local args = require('Module:Arguments').getArgs(frame) -- args.test is used for /testcases if args.test then page = mw.title.new(args.test) end local page_title = page.text local language_code = page_title:match('%(([%a%-]+)%)') local language_name = require('Module:Lang')._name_from_tag({language_code}) local layout = {} table.insert(layout, get_hidden_category_template(frame)) local parent_category = non_english_language_sources_strings["PARENT_CATEGORY"] local correct_language_category_title = require('Module:In lang')._in_lang({language_code, ["list-cats"]="yes"}) if correct_language_category_title == "" then -- Error: No category title found for language code. return make_error(string.format(error_messages["NO_CATEGORY_TITLE_FOUND"], language_code), layout, parent_category, args.nocat) end local current_category_title = page.prefixedText if correct_language_category_title ~= current_category_title then -- Error: The current title used is not in the supported format. return make_error( string.format(error_messages["INCORRECT_CATEGORY_TITLE"], current_category_title, non_english_language_sources_strings["TEMPLATE"], correct_language_category_title), layout, parent_category, args.nocat) end local language_link = get_language_link(language_name, language_code) local text = string.format(non_english_language_sources_strings["LINE1"], frame:expandTemplate{title = 'Tlx', args = {non_english_language_sources_strings["TEMPLATE"], language_code}}, language_link) table.insert(layout, get_top_section(frame)) table.insert(layout, text) local see_also_section = get_see_also_section(page_title, language_name, language_code) local bottom = get_bottom_section(frame, language_name, see_also_section, parent_category) return table.concat(layout, "\n\n") .. bottom end --[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ C S 1 _ S O U R C E S _ C A T E G O R Y > -------------------------- {{#invoke:Lang/documentor tool|non_english_language_cs1_sources_category}} This function implements {{Non-English-language CS1 sources category}}. ]] local non_english_language_cs1_text_strings = { ["LINE1"] = "This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s to identify a source in [[%s language|%s]]. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].", ["PARENT_CATEGORY"] = "[[Category:CS1 foreign language sources]]", -- #TODO change to "Articles with non-english CS1 language sources" or "CS1 non-English language sources" } --"This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s to hold a citation title that uses %s characters and contains the language prefix <code>%s:</code>. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].", --"[[Category:CS1 uses foreign language script]]", -- "This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].", -- "to identify a source in [[%s language|%s]].", -- "to hold a citation title that uses %s characters and contains the language prefix <code>%s:</code>.", local function non_english_language_cs1_sources_category(frame) local page_title_object = mw.title.getCurrentTitle() local page_title = page_title_object.text local language_code = page_title:match('%(([%a%-]+)%)') local language_name = require('Module:Lang')._name_from_tag({language_code}) local layout = {} table.insert(layout, get_hidden_category_template(frame)) local see_also_section = "" local parameter_doc = frame:expandTemplate{title = 'para', args = {"language", language_code}} table.insert(layout, get_top_section(frame)) table.insert(layout, string.format(non_english_language_cs1_text_strings["LINE1"], parameter_doc, language_name, language_name)) local see_also_section = get_see_also_section(page_title, language_name, language_code) local bottom = get_bottom_section(frame, language_name, see_also_section, non_english_language_cs1_text_strings["PARENT_CATEGORY"]) return table.concat(layout, "\n\n") .. bottom end --[[ -------------------------- < T E S T _ C A S E S _ S H A R E D _ C O D E > -------------------------- ]] local function compare_by_keys2(a, b) -- local function used by table.sort() return a[2] < b[2] -- ascending sort by code end local function compare_by_keys(a, b) -- local function used by table.sort() return a[1] < b[1] -- ascending sort by code end -- Used by testcases_iso_code_to_name() local function get_language_code_table_from_code(args) local entry = {} --if args.override_table[args.language_code] then -- table.insert(entry, args.override_table[args.language_code][1]) -- :gsub(' %b()$', '') fails here --else table.insert(entry, args.language_code) -- end return entry end -- Used by testcases_name_from_tag() local function get_language_code_and_name_table_from_code(args) local entry = {} if args.override_table[args.language_code] then table.insert(entry, args.language_code) local language_code, _ = args.override_table[args.language_code][1]:gsub(' %b()$', '') table.insert(entry, language_code) else table.insert(entry, args.language_code) table.insert(entry, args.language_table[args.language_code]) end return entry end -- Used by testcases_category_from_tag() local function get_language_code_and_category_table_from_code(args) local entry = {} table.insert(entry, args.language_code) table.insert(entry, args.test_function({args.language_code})) return entry end -- Used by testcases_iso_name_to_code() and testcases_tag_from_name() local function get_language_name_and_code_table_from_code(args) local entry = {} if args.override_table[args.language_code] then table.insert(entry, args.override_table[args.language_code][1]) -- only the first name when there are multiples table.insert(entry, args.language_code) else table.insert(entry, args.language_names[1]) -- only the first name when there are multiples table.insert(entry, args.language_code) end return entry end local function get_table(table_function, language_table, length, range, iso_number, test_function) local table_of_language_name_and_code_tables = {} local override_table_name = "override" if iso_number then override_table_name = "override_" .. iso_number end local override_table = require("Module:Language/data/ISO_639_override/sandbox")[override_table_name] -- For most ISO 639s. if range then for language_code, language_names in pairs(language_table) do if language_code:find(range) then table.insert(table_of_language_name_and_code_tables, table_function({ override_table = override_table, language_code = language_code, language_names = language_names, test_function = test_function, language_table = language_table })) end end -- For ISO 639-1. elseif length then for language_code, language_names in pairs(language_table) do if language_code:len() == 2 then table.insert(table_of_language_name_and_code_tables, table_function({ override_table = override_table, language_code = language_code, language_names = language_names, test_function = test_function, language_table = language_table })) end end -- For general /testcases. else for language_code, language_names in pairs(language_table) do table.insert(table_of_language_name_and_code_tables, table_function({ override_table = override_table, language_code = language_code, language_names = language_names, test_function = test_function, language_table = language_table })) end end return table_of_language_name_and_code_tables end local function get_undabbed_table(language_list, length, range) local undabbed_language_table = {} -- for this test, ISO 639-3 language name disambiguators must be removed; un-dabbed names go here for language_code, language_names in pairs(language_list) do -- For most ISO 639s. if range then if language_code:find(range) then undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '') -- undab and save only the first name; ignore all other names assigned to a code end -- For ISO 639-1. elseif length then if language_code:len() == 2 then undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '') -- undab and save only the first name; ignore all other names assigned to a code end -- For general /testcases. else undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '') end end return undabbed_language_table end --[[ -------------------------- < T E S T C A S E S _ C A T E G O R Y _ F R O M _ T A G > -------------------------- Entry point for the various category_from_tag testcases. Build a table of test patterns where each entry in the table is a table with two members: {"<language_code>", "<category name according to Module:Lang>"} - "Expected" column value is the category name according to Module:Lang. - "Actual" column value is the result of {{#invoke:Lang/sandbox|category_from_tag|<language_code>}}. TODO: Currently not working. ]] local function testcases_category_from_tag(self, args) local cat_from_tag_function = require('Module:Lang')._category_from_tag local language_tables = get_table(get_language_code_and_category_table_from_code, args.language_list, args.length, args.range, args.iso_number, cat_from_tag_function) table.sort(language_tables, compare_by_keys) self:preprocess_equals_preprocess_many( '{{#invoke:Lang/sandbox|category_from_tag|', '}}', '', '', language_tables, {nowiki=false} ) end --[[ -------------------------- < T E S T C A S E S _ N A M E _ F R O M _ T A G > -------------------------- Entry point for the various name_from_tag testcases. Build a table of test patterns where each entry in the table is a table with two members: {"<language_code>", "<language_name>"} - "Expected" column value is the <language_name>. - "Actual" column value is the result of sandbox version {{#invoke:Lang/sandbox|name_from_tag|<language_code>}}. ]] local function testcases_name_from_tag(self, args) local undabbed_language_table = get_undabbed_table(args.language_list, args.length, args.range, nil) local language_tables = get_table(get_language_code_and_name_table_from_code, undabbed_language_table, args.length, args.range) table.sort(language_tables, compare_by_keys) self:preprocess_equals_preprocess_many( '{{#invoke:Lang/sandbox|name_from_tag|', '}}', '', '', language_tables, {nowiki=false} ) end --[[ -------------------------- < T E S T C A S E S _ T A G _ F R O M _ N A M E > -------------------------- Entry point for the various tag_from_name testcases. Build a table of test patterns where each entry in the table is a table with two members: {"<language_name>", "<language_code>"} - "Expected" column value is the <language_code>. - "Actual" column value is the result of sandbox version {{#invoke:Lang/sandbox|tag_from_name|<language_name>}}. TODO: Currently not working. ]] local function testcases_tag_from_name(self, args) local language_tables = get_table(get_language_name_and_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil) table.sort(language_tables, compare_by_keys2) local ordered_table = {} table.sort(unordered_table) for _, key in ipairs(unordered_table) do table.insert(ordered_table, {key, reverse_table[key]}) end self:preprocess_equals_preprocess_many( '{{#invoke:Lang/sandbox|tag_from_name|', '}}', '', '', language_tables, {nowiki=false} ) end --[[ -------------------------- < T E S T C A S E S _ I S O _ C O D E _ T O _ N A M E > -------------------------- Entry point for the various iso_code_to_name testcases. Build a table of test patterns where each entry in the table is a table with one member: {"<language_code>"} - "Expected" column value is the result of the live version of {{#invoke:ISO 639 name|iso_639_name_to_code|<language_code>}}. - "Actual" column value is the result of sandbox version {{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|<language_code>}}. ]] local function testcases_iso_code_to_name(self, args) local language_tables = get_table(get_language_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil) table.sort(language_tables, compare_by_keys) self:preprocess_equals_preprocess_many( '{{#invoke:ISO 639 name/sandbox|iso_639_code_to_name|link=yes|', '}}', '{{#invoke:ISO 639 name|iso_639_code_to_name|link=yes|', '}}', language_tables, {nowiki=false} ) end --[[ -------------------------- < T E S T C A S E S _ I S O _ N A M E _ T O _ C O D E > -------------------------- Entry point for the various iso_name_to_code testcases. Build a table of test patterns where each entry in the table is a table with two members: {"<language_name>", "<language_code>"} - "Expected" column value is the <language_code>. - "Actual" column is value the result of {{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|<language_name>}}. ]] local function testcases_iso_name_to_code(self, args) local language_tables = get_table(get_language_name_and_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil) table.sort(language_tables, compare_by_keys2) self:preprocess_equals_preprocess_many( '{{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|2=' .. args.iso_number .. "|", '}}', '', '', language_tables, {nowiki=false} ) end --[[--------------------------< S E E _ A L S O >-------------------------------------------------------------- adds items to the list of items in §See also section of Template:Lang-x/doc; Evaluates single positional parameter which is a comma-separated list of items including list markup. {{#invoke:Lang/documentor tool|see_also|*{{tl|Lang-tt-Cyrl}}, *{{tl|Lang-tt-Latn}}, *{{tl|Lang-tt-Arab}}}} ]] local function see_also (frame) if nil == frame.args[1] or '' == frame.args[1] then -- if empty, ... return; -- ... return nothing end return frame:preprocess (frame.args[1]:gsub ('%s*,%s', '\n')); -- preprocess so any templates are rendered before saving and done end --[[ -------------------------< E X P O R T E D _ F U N C T I O N S > ----------------------------------------- ]] return { lang_xx_settings = lang_xx_settings, uses_module = uses_module, see_also = see_also, non_english_language_text_category = non_english_language_text_category, non_english_language_sources_category = non_english_language_sources_category, non_english_language_cs1_sources_category = non_english_language_cs1_sources_category, private_tags = private_tags, -- Module:Lang testcases testcases_category_from_tag = testcases_category_from_tag, testcases_name_from_tag = testcases_name_from_tag, testcases_tag_from_name = testcases_tag_from_name, -- Module:ISO 639 name testcases testcases_iso_code_to_name = testcases_iso_code_to_name, testcases_iso_name_to_code = testcases_iso_name_to_code, } 3db6b7c36a439f8240ae6575fc41416c18ae47fe Template:COinS safe 10 1006 2209 2208 2023-10-01T14:12:35Z Führerredux 2 1 revision imported from [[:wikipedia:Template:COinS_safe]] wikitext text/x-wiki {{notice |image={{#ifeq: {{{1|}}}|n|Stop hand nuvola.svg}} |{{#ifeq: {{{1|}}}|n |This template should not be used in citation templates such as [[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|Citation Style 2]], because it includes markup that will pollute the [[COinS]] metadata they produce; see [[Wikipedia:COinS]]. {{{addtext|}}}{{Sandbox other||[[Category:Templates not safe for use in citation templates]]}} |This template is safe for use in citation templates that produce [[COinS]] metadata; see [[Wikipedia:COinS]]. If HTML or other markup is added, then the template must be reevaluated. {{{addtext|}}} }} }}<noinclude> {{Documentation}} <!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) --> </noinclude> 47abee673d74440d28e801111bf6ee765cd998df Template:Lang-x/doc/parameters 10 1007 2211 2210 2023-10-01T14:12:45Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Lang-x/doc/parameters]] wikitext text/x-wiki ==lang-xx== <section begin=lang_xx_parameters /><!-- {{#lst:Template:Lang-x/doc/parameters|lang_xx_parameters}} --> {| class="wikitable" |+lang-xx supported parameters !parameter !! definition !! yields to !! alias |- |<code>text</code> || non-English text || – || <code><nowiki>{{{1}}}</nowiki></code> |- |<code>translit</code> || Latin script transliteration of the content in <code>text</code> || – || <code><nowiki>{{{2}}}</nowiki></code> |- |<code>translit-std</code> || standard used for the transliteration of the value of <code>translit</code>; accepted values are: <kbd>ISO</kbd>, <kbd>DIN</kbd>, <kbd>IAST</kbd>, <kbd>ALA</kbd>, <kbd>ALA-LC</kbd> || – || |- |{{nowrap|<code>translit-script</code>}} || transliteration standard's script identifier || – || |- |<code>translation</code> || literal English translation or gloss of the content in <code>text</code> || – || <code>lit</code>, <code><nowiki>{{{3}}}</nowiki></code> |- |<code>label</code> || label to be used instead of template-provided language label; may be wikilinked; special keyword <kbd>none</kbd> causes the template to render without any labels (including transliteration and translation labels) || – || |- |<code>link</code> || <kbd>yes</kbd> (default) links language name and static text associated with <code>translit</code> and <code>translation</code>; accepted values are: <kbd>no</kbd>, <kbd>yes</kbd>; {{para|link|no}} does not unlink wikilinked labels set by {{para|label}} || – || <code>links</code> |- |- |<code>code</code> || [[IETF language tag]] for the content in <code>text</code>; set by the template, overriding the template setting is discouraged || – || |- |<code>script</code> || IETF language script subtag; sometimes set by the template when the language of the content in <code>text</code> uses more than one writing system; always four alpha characters; a value of <kbd>Latn</kbd> <small>({{em|not}} "Latin"!)</small> forces italic rendering unless overridden by <code>italic</code>; overrides <code>rtl</code> || <code>italic</code> || |- |<code>region</code> || IETF language region subtag || – || |- |<code>variant</code> || IETF language variant subtag || – || |- |<code>rtl</code> || <kbd>yes</kbd> indicates that the writing system used for the content in <code>text</code> is right-to-left; accepted values are: <kbd>no</kbd> (default), <kbd>yes</kbd> || <code>script</code> || |- |<code>italic</code> || {{crossref|see table "lang-xx {{pipe}}italic{{=}} parameter operation"}}; accepted values are: <kbd>yes</kbd>, <kbd>no</kbd>, <kbd>unset</kbd>, <kbd>invert</kbd>, <kbd>default</kbd> || – || <code>italics</code>,<code>i</code> |- |<code>size</code> || specifies font size of the content in <code>text</code>; use a value suitable for use with the CSS <code>font-size</code> property; this should almost always be a relative value supplied in <kbd>{{mxt|%}}</kbd> or <kbd>{{mxt|em}}</kbd> units, not a fixed <kbd>{{!mxt|px}}</kbd> value. || – || |- |<code>cat</code> || inhibits automatic categorization; mirror version of <code>nocat</code>; accepted values are: <kbd>no</kbd>, <kbd>n</kbd>, <kbd>false</kbd>, <kbd>f</kbd>, <kbd>off</kbd>, <kbd>0</kbd> || – || |- |<code>nocat</code> || inhibits automatic categorization; mirror version of <code>cat</code>; accepted values are: <kbd>yes</kbd>, <kbd>y</kbd>, <kbd>true</kbd>, <kbd>t</kbd>, <kbd>on</kbd>, <kbd>1</kbd> || – || |- |} {| class="wikitable" |+lang-xx {{pipe}}italic= parameter operation |- !{{pipe}}italic= value !! description !! example code !! result !! html markup |- |rowspan="4"| {{plainlist| *parameter not present; *parameter present, not set; *invalid value}} |rowspan="7"| {{plainlist| *module applies style from: *&nbsp;&nbsp;template setting, or *&nbsp;&nbsp;{{para|script|latn}}; *else inherits from external markup; *invalid values treated as default}} | <code><nowiki>{{lang-ru|тундра}}</nowiki></code> || {{lang-ru|тундра}} || {{code|{{lang-ru|тундра}}}} |- | <code>{{deprecated code|red=yes|<nowiki>{{lang-ru|tûndra}}</nowiki>}}</code> || {{lang-ru|tûndra}} || {{code|{{lang-ru|tûndra}}}}<br />Incorrect markup; this requires {{para|script|latn}}. |- | <code><nowiki>{{lang-fr|toundra}}</nowiki></code> || {{lang-fr|toundra}} || {{code|{{lang-fr|toundra}}}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra}}</nowiki></code> || {{lang-ru|script=latn|tûndra}} || {{code|{{lang-ru|script=latn|tûndra}}}} |- |rowspan="3"| <kbd>default</kbd> || <code><nowiki>{{lang-ru|тундра|italic=default}}</nowiki></code> || {{lang-ru|тундра|italic=default}} || {{code|{{lang-ru|тундра|italic=default}}}} |- | <code><nowiki>{{lang-fr|toundra|italic=default}}</nowiki></code> || {{lang-fr|toundra|italic=default}} || {{code|{{lang-fr|toundra|italic=default}}}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra|italic=default}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=default}} || {{code|{{lang-ru|script=latn|tûndra|italic=default}}}} |- |rowspan="4"| <kbd>no</kbd> ||rowspan="4"| {{plainlist| *module applies upright style; *overrides {{para|script|latn}}; *overrides external markup}} | <code><nowiki>{{lang-ru|тундра|italic=no}}</nowiki></code> || {{lang-ru|тундра|italic=no}} || {{code|{{lang-ru|тундра|italic=no}}}} |- | <code><nowiki>{{lang-fr|toundra|italic=no}}</nowiki></code> || {{lang-fr|toundra|italic=no}} || {{code|{{lang-fr|toundra|italic=no}}}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra|italic=no}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=no}} || {{code|{{lang-ru|script=latn|tûndra|italic=no}}}} |- | <code><nowiki>''{{lang-ru|script=latn|tûndra|italic=no}}''</nowiki></code> || ''{{lang-ru|script=latn|tûndra|italic=no}}'' || {{code|''{{lang-ru|script=latn|tûndra|italic=no}}''}} |- |rowspan="2" | <kbd>yes</kbd> ||rowspan="2" | {{plainlist| *module applies italic style; *ignores {{para|script|latn}}}} | <code><nowiki>{{lang-ru|тундра|italic=yes}}</nowiki></code> || {{lang-ru|тундра|italic=yes}} || {{code|{{lang-ru|тундра|italic=yes}}}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra|italic=yes}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=yes}} || {{code|{{lang-ru|script=latn|tûndra|italic=yes}}}} |- |rowspan="4"| <kbd>unset</kbd> ||rowspan="4"| {{plainlist| *module applies no style; *inherits style from external markup; *overrides {{para|script|latn}}}} | <code><nowiki>{{lang-ru|тундра|italic=unset}}</nowiki></code> || {{lang-ru|тундра|italic=unset}} || {{code|{{lang-ru|тундра|italic=unset}}}} |- | <code><nowiki>''{{lang-ru|тундра|italic=unset}}''</nowiki></code> || ''{{lang-ru|тундра|italic=unset}}'' || {{code|''{{lang-ru|тундра|italic=unset}}''}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra|italic=unset}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=unset}} || {{code|{{lang-ru|script=latn|tûndra|italic=unset}}}} |- | <code><nowiki>''{{lang-ru|script=latn|tûndra|italic=unset}}''</nowiki></code> || ''{{lang-ru|script=latn|tûndra|italic=unset}}'' || {{code|''{{lang-ru|script=latn|tûndra|italic=unset}}''}} |- |rowspan="4"| <kbd>invert</kbd> ||rowspan="4"| {{plainlist| *module applies no style; *inverts style in internal markup{{dagger}}; *disables auto-italics *overrides script subtag <code>latn</code>;}} | <code><nowiki>{{lang-ru|тундра|italic=invert}}</nowiki></code> || {{lang-ru|тундра|italic=invert}} || {{code|{{lang-ru|тундра|italic=invert}}}} |- | <code><nowiki>{{lang-ru|''тундра''|italic=invert}}</nowiki></code> || {{lang-ru|''тундра''|italic=invert}} || {{code|{{lang-ru|''тундра''|italic=invert}}}} |- | <code><nowiki>{{lang-ru|script=latn|tûndra|italic=invert}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=invert}} || {{code|{{lang-ru|script=latn|tûndra|italic=invert}}}} |- | <code><nowiki>{{lang-ru|script=latn|''tûndra''|italic=invert}}</nowiki></code> || {{lang-ru|script=latn|''tûndra''|italic=invert}} || {{code|{{lang-ru|script=latn|''tûndra''|italic=invert}}}} |- |} {{dagger}} compare {{para|italic|invert}} to {{para|italic|unset}}: :<code><nowiki>{{Lang-de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}</nowiki></code> ::{{Lang-de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}} :<code><nowiki>{{Lang-de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}</nowiki></code> ::{{Lang-de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}} <section end=lang_xx_parameters /> ==lang== <section begin=lang_parameters /><!-- {{#lst:Template:Lang-x/doc/parameters|lang_parameters}} --> {| class="wikitable" |+lang supported parameters !parameter !! definition !! yields to !! alias |- |<code>code</code> || [[IETF language tag]] for the content in <code>text</code> || – || <code><nowiki>{{{1}}}</nowiki></code> |- |<code>text</code> || non-English text || – || <code><nowiki>{{{2}}}</nowiki></code> |- |<code>rtl</code> || <kbd>yes</kbd> indicates that the writing system used for the content in <code>text</code> is right-to-left; accepted values are: <kbd>no</kbd> (default), <kbd>yes</kbd> || IETF script subtag in <code>code</code> (if provided) || |- |<code>italic</code> || {{crossref|see table "lang {{pipe}}italic{{=}} parameter operation"}}; accepted values are: <kbd>yes</kbd>, <kbd>no</kbd>, <kbd>unset</kbd>, <kbd>invert</kbd>, <kbd>default</kbd> || – || <code>italics</code>,<code>i</code> |- |<code>size</code> || specifies font size of the content in <code>text</code>; use a value suitable for use with the CSS <code>font-size</code> property; this should almost always be a relative value supplied in <kbd>{{mxt|%}}</kbd> or <kbd>{{mxt|em}}</kbd> units, not a fixed <kbd>{{!mxt|px}}</kbd> value. || – || |- |<code>nocat</code> || inhibits automatic categorization; mirror version of <code>cat</code>; accepted values are: <kbd>yes</kbd>, <kbd>y</kbd>, <kbd>true</kbd>, <kbd>t</kbd>, <kbd>on</kbd>, <kbd>1</kbd> || – || |- |<code>cat</code> || inhibits automatic categorization; mirror version of <code>nocat</code>; accepted values are: <kbd>no</kbd>, <kbd>n</kbd>, <kbd>false</kbd>, <kbd>f</kbd>, <kbd>off</kbd>, <kbd>0</kbd> || – || |- |} {| class="wikitable" id="italic parameter" |+lang {{pipe}}italic= parameter operation |- !{{pipe}}italic= value !! description !! example code !! result !! html markup |- |rowspan="4"| {{plainlist| *parameter not present; *parameter present, not set; *invalid value}} |rowspan="7"| {{plainlist| *module applies style from: *&nbsp;&nbsp;auto-italics or *&nbsp;&nbsp;script subtag <code>latn</code>; *else inherits from external markup; *invalid values treated as default}} | <code><nowiki>{{lang|ru|тундра}}</nowiki></code> || {{lang|ru|тундра}} || {{code|{{lang|ru|тундра}}}} |- | <code>{{deprecated code|red=yes|<nowiki>{{lang|ru|tûndra}}</nowiki>}}</code> || {{lang|ru|tûndra}} || {{code|{{lang|ru|tûndra}}}}<br />Incorrect markup; this requires {{para||ru-Latn}}. |- | <code><nowiki>{{lang|fr|toundra}}</nowiki></code> || {{lang|fr|toundra}} || {{code|{{lang|fr|toundra}}}} |- | <code><nowiki>{{lang|ru-Latn|tûndra}}</nowiki></code> || {{lang|ru-Latn|tûndra}} || {{code|{{lang|ru-Latn|tûndra}}}} |- |rowspan="3"| <kbd>default</kbd> || <code><nowiki>{{lang|ru|тундра|italic=default}}</nowiki></code> || {{lang|ru|тундра|italic=default}} || {{code|{{lang|ru|тундра|italic=default}}}} |- | <code><nowiki>{{lang|fr|toundra|italic=default}}</nowiki></code> || {{lang|fr|toundra|italic=default}} || {{code|{{lang|fr|toundra|italic=default}}}} |- | <code><nowiki>{{lang|ru-Latn|tûndra|italic=default}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=default}} || {{code|{{lang|ru-Latn|tûndra|italic=default}}}} |- |rowspan="4"| <kbd>no</kbd> ||rowspan="4"| {{plainlist| *module applies upright style; *overrides auto-italics *overrides script subtag <code>latn</code>; *overrides external markup}} | <code><nowiki>{{lang|ru|тундра|italic=no}}</nowiki></code> || {{lang|ru|тундра|italic=no}} || {{code|{{lang|ru|тундра|italic=no}}}} |- | <code><nowiki>{{lang|fr|toundra|italic=no}}</nowiki></code> || {{lang|fr|toundra|italic=no}} || {{code|{{lang|fr|toundra|italic=no}}}} |- | <code><nowiki>{{lang|ru-Latn|tûndra|italic=no}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=no}} || {{code|{{lang|ru-Latn|tûndra|italic=no}}}} |- | <code><nowiki>''{{lang|fr|toundra|italic=no}}''</nowiki></code> || ''{{lang|fr|toundra|italic=no}}'' || {{code|''{{lang|fr|toundra|italic=no}}''}} |- |rowspan="2" | <kbd>yes</kbd> ||rowspan="2" | {{plainlist| *module applies italic style; *ignores auto-italics; *ignores script subtag <code>latn</code>}} | <code><nowiki>{{lang|ru|тундра|italic=yes}}</nowiki></code> || {{lang|ru|тундра|italic=yes}} || {{code|{{lang|ru|тундра|italic=yes}}}} |- | <code><nowiki>{{lang|ru-Latn|tûndra|italic=yes}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=yes}} || {{code|{{lang|ru-Latn|tûndra|italic=yes}}}} |- |rowspan="4"| <kbd>unset</kbd> ||rowspan="4"| {{plainlist| *module applies no style; *inherits style from external markup; *disables auto-italics *overrides script subtag <code>latn</code>;}} | <code><nowiki>{{lang|ru|тундра|italic=unset}}</nowiki></code> || {{lang|ru|тундра|italic=unset}} || {{code|{{lang|ru|тундра|italic=unset}}}} |- | <code><nowiki>''{{lang|ru|тундра|italic=unset}}''</nowiki></code> || ''{{lang|ru|тундра|italic=unset}}'' || {{code|''{{lang|ru|тундра|italic=unset}}''}} |- | <code><nowiki>{{lang|ru-Latn|tûndra|italic=unset}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=unset}} || {{code|{{lang|ru-Latn|tûndra|italic=unset}}}} |- | <code><nowiki>''{{lang|ru-Latn|tûndra|italic=unset}}''</nowiki></code> || ''{{lang|ru-Latn|tûndra|italic=unset}}'' || {{code|''{{lang|ru-Latn|tûndra|italic=unset}}''}} |- |rowspan="4"| <kbd>invert</kbd> ||rowspan="4"| {{plainlist| *module applies no style; *inverts style in internal markup{{dagger}}; *disables auto-italics *overrides script subtag <code>latn</code>;}} | <code><nowiki>{{lang|ru|тундра|italic=invert}}</nowiki></code> || {{lang|ru|тундра|italic=invert}} || {{code|{{lang|ru|тундра|italic=invert}}}} |- | <code><nowiki>{{lang|ru|''тундра''|italic=invert}}</nowiki></code> || {{lang|ru|''тундра''|italic=invert}} || {{code|{{lang|ru|''тундра''|italic=invert}}}} |- | <code><nowiki>{{lang|ru-Latn|tûndra|italic=invert}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=invert}} || {{code|{{lang|ru-Latn|tûndra|italic=invert}}}} |- | <code><nowiki>{{lang|ru-Latn|''tûndra''|italic=invert}}</nowiki></code> || {{lang|ru-Latn|''tûndra''|italic=invert}} || {{code|{{lang|ru-Latn|''tûndra''|italic=invert}}}} |- |} {{dagger}} compare {{para|italic|invert}} to {{para|italic|unset}}: :<code><nowiki>{{Lang|de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}</nowiki></code> ::{{Lang|de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}} :<code><nowiki>{{Lang|de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}</nowiki></code> ::{{Lang|de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}} <section end=lang_parameters /> 9f872259d64409fe61de99a33ab37b30ea8b89c5 Module:Transclusion count/data/L 828 1008 2213 2212 2023-10-01T14:12:45Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/L]] Scribunto text/plain return { ["LASTYEAR"] = 711000, ["LAT"] = 3600, ["LCAuth"] = 3400, ["LDSproject"] = 2800, ["LTU"] = 4300, ["LUX"] = 2300, ["LVA"] = 4200, ["La"] = 453000, ["Label"] = 6300, ["LabourProject"] = 3100, ["Lafc"] = 5500, ["Lake_project"] = 5200, ["Lang"] = 354000, ["Lang-ar"] = 42000, ["Lang-az"] = 4500, ["Lang-ba"] = 3400, ["Lang-be"] = 4300, ["Lang-bg"] = 10000, ["Lang-bn"] = 7600, ["Lang-cs"] = 3600, ["Lang-cy"] = 3800, ["Lang-da"] = 3600, ["Lang-de"] = 41000, ["Lang-el"] = 23000, ["Lang-en"] = 17000, ["Lang-es"] = 19000, ["Lang-et"] = 2200, ["Lang-fa"] = 76000, ["Lang-fi"] = 3000, ["Lang-fr"] = 24000, ["Lang-ga"] = 7600, ["Lang-gd"] = 3800, ["Lang-gr"] = 2700, ["Lang-grc"] = 7300, ["Lang-he"] = 16000, ["Lang-hr"] = 3000, ["Lang-hu"] = 9500, ["Lang-hy"] = 6700, ["Lang-id"] = 2200, ["Lang-it"] = 12000, ["Lang-ja"] = 4500, ["Lang-ka"] = 5400, ["Lang-kk"] = 2600, ["Lang-ko"] = 3700, ["Lang-ku"] = 4200, ["Lang-la"] = 12000, ["Lang-lt"] = 2200, ["Lang-lv"] = 2100, ["Lang-mk"] = 3600, ["Lang-ms"] = 2600, ["Lang-my"] = 4700, ["Lang-ne"] = 3400, ["Lang-nl"] = 4900, ["Lang-no"] = 6100, ["Lang-oc"] = 7100, ["Lang-pl"] = 8600, ["Lang-pt"] = 6800, ["Lang-ro"] = 3800, ["Lang-ru"] = 92000, ["Lang-rus"] = 3100, ["Lang-sa"] = 2300, ["Lang-si"] = 2000, ["Lang-sl"] = 3900, ["Lang-sq"] = 3500, ["Lang-sr"] = 4900, ["Lang-sr-Cyrl"] = 13000, ["Lang-sr-cyr"] = 5400, ["Lang-sr-cyrl"] = 3000, ["Lang-sv"] = 6500, ["Lang-ta"] = 2600, ["Lang-th"] = 11000, ["Lang-tr"] = 7600, ["Lang-uk"] = 19000, ["Lang-ur"] = 9300, ["Lang-zh"] = 72000, ["Lang2iso"] = 5400, ["Language_with_name"] = 9200, ["Languages"] = 2700, ["Large"] = 229000, ["Large_category_TOC"] = 11000, ["Large_category_TOC/tracking"] = 11000, ["Last_edited_by"] = 68000, ["Last_word"] = 20000, ["LaunchesByYear_footer"] = 3300, ["LaunchesByYear_header"] = 3300, ["Lc"] = 8900, ["Lcfirstletter"] = 2500, ["Lead_too_short"] = 8900, ["League_icon"] = 3300, ["Leagueicon"] = 3100, ["Leave_feedback/link"] = 75000, ["Left"] = 8600, ["Legend"] = 31000, ["Legend/styles.css"] = 129000, ["Legend0"] = 8100, ["Legend2"] = 18000, ["Legend_inline"] = 21000, ["LepIndex"] = 12000, ["LepidopteraTalk"] = 56000, ["Letter-NumberCombDisambig"] = 3700, ["Letter–number_combination_disambiguation"] = 4900, ["Libera.Chat"] = 11000, ["Library_link_about"] = 3900, ["Library_resources_box"] = 4000, ["Librivox_author"] = 6700, ["Librivox_book"] = 3600, ["License_migration"] = 52000, ["License_migration_complete"] = 23000, ["License_migration_is_redundant"] = 7600, ["License_migration_not_eligible"] = 6700, ["License_migration_redundant"] = 22000, ["Like"] = 2400, ["Like_resume"] = 3700, ["Likely"] = 4500, ["Line_link"] = 10000, ["Linescore_Amfootball"] = 2300, ["LinkCatIfExists2"] = 58000, ["LinkStatusLocal"] = 44000, ["LinkSummary"] = 241000, ["LinkSummaryLive"] = 8100, ["Link_if_exists"] = 75000, ["Link_note"] = 64000, ["Link_summary"] = 254000, ["Link_target"] = 14000, ["Linkcolor"] = 2300, ["Linkless_exists"] = 15000, ["Linksummarylive"] = 4000, ["Linktext"] = 22000, ["List-Class"] = 16000, ["Listen"] = 14000, ["Listen_live"] = 2300, ["Lists_of_people_editnotice"] = 2600, ["Lit"] = 5000, ["Literal_translation"] = 10000, ["Lnl"] = 8100, ["LoMP"] = 4200, ["Location_map"] = 711000, ["Location_map+"] = 25000, ["Location_map_data_documentation"] = 6400, ["Location_map_many"] = 4100, ["Location_map~"] = 24000, ["Log"] = 3600, ["Logo_fur"] = 30000, ["Logo_requested"] = 3500, ["London_Gazette"] = 33000, ["Long_plot"] = 3900, ["Longitem"] = 660000, ["Longlink"] = 6400, ["Look_from"] = 9300, ["Lookfrom"] = 4900, ["Loop"] = 104000, ["Loss"] = 3000, ["Low-Class"] = 15000, ["Low-importance"] = 15000, ["Lower"] = 8000, ["Lowercase"] = 5200, ["Lowercase_title"] = 15000, ["Lowercasetitle"] = 2400, ["Lt"] = 2400, ["Lua"] = 9800, ["Lx"] = 22000, ["Module:Labelled_list_hatnote"] = 545000, ["Module:Lang"] = 1470000, ["Module:Lang-zh"] = 72000, ["Module:Lang/ISO_639_synonyms"] = 1470000, ["Module:Lang/data"] = 1470000, ["Module:Lang/documentor_tool"] = 3900, ["Module:Lang/tag_from_name"] = 3000, ["Module:Language"] = 2900, ["Module:Language/data"] = 2900, ["Module:Language/data/ISO_639-1"] = 9300, ["Module:Language/data/ISO_639-2"] = 2900, ["Module:Language/data/ISO_639-3_(dep)"] = 20000, ["Module:Language/data/ISO_639_deprecated"] = 20000, ["Module:Language/data/ISO_639_name_to_code"] = 5400, ["Module:Language/data/ISO_639_override"] = 20000, ["Module:Language/data/iana_languages"] = 1470000, ["Module:Language/data/iana_regions"] = 1470000, ["Module:Language/data/iana_scripts"] = 1470000, ["Module:Language/data/iana_suppressed_scripts"] = 1470000, ["Module:Language/data/iana_variants"] = 1470000, ["Module:Large_category_TOC"] = 11000, ["Module:Large_category_TOC/styles.css"] = 11000, ["Module:Latin"] = 8300, ["Module:Librivox_book"] = 3600, ["Module:Lighthouse_tracking"] = 2600, ["Module:List"] = 2140000, ["Module:Listen"] = 14000, ["Module:Listen/styles.css"] = 13000, ["Module:Location_map"] = 745000, ["Module:Location_map/data/Antarctica"] = 2700, ["Module:Location_map/data/Arkansas"] = 3300, ["Module:Location_map/data/Australia"] = 2200, ["Module:Location_map/data/Australia_New_South_Wales"] = 3600, ["Module:Location_map/data/Australia_Queensland"] = 6000, ["Module:Location_map/data/Australia_South_Australia"] = 2400, ["Module:Location_map/data/Austria"] = 3400, ["Module:Location_map/data/Azerbaijan"] = 4900, ["Module:Location_map/data/Bangladesh"] = 2000, ["Module:Location_map/data/Bosnia_and_Herzegovina"] = 5400, ["Module:Location_map/data/Brazil"] = 4800, ["Module:Location_map/data/California"] = 6000, ["Module:Location_map/data/Canada"] = 4600, ["Module:Location_map/data/Canada_Alberta"] = 2400, ["Module:Location_map/data/Canada_British_Columbia"] = 3100, ["Module:Location_map/data/Canada_Ontario"] = 2400, ["Module:Location_map/data/China"] = 2900, ["Module:Location_map/data/Croatia"] = 3500, ["Module:Location_map/data/Czech_Republic"] = 6800, ["Module:Location_map/data/Estonia"] = 3000, ["Module:Location_map/data/Europe"] = 4300, ["Module:Location_map/data/Florida"] = 2600, ["Module:Location_map/data/France"] = 40000, ["Module:Location_map/data/France_Auvergne-Rhône-Alpes"] = 4400, ["Module:Location_map/data/France_Bourgogne-Franche-Comté"] = 3900, ["Module:Location_map/data/France_Grand_Est"] = 5300, ["Module:Location_map/data/France_Hauts-de-France"] = 3900, ["Module:Location_map/data/France_Normandy"] = 3400, ["Module:Location_map/data/France_Nouvelle-Aquitaine"] = 4800, ["Module:Location_map/data/France_Occitanie"] = 4700, ["Module:Location_map/data/Germany"] = 17000, ["Module:Location_map/data/Germany_Bavaria"] = 2900, ["Module:Location_map/data/Germany_Rhineland-Palatinate"] = 2600, ["Module:Location_map/data/Greece"] = 4000, ["Module:Location_map/data/Hungary"] = 2800, ["Module:Location_map/data/Illinois"] = 3400, ["Module:Location_map/data/India"] = 23000, ["Module:Location_map/data/India3"] = 2900, ["Module:Location_map/data/India_Andhra_Pradesh"] = 2500, ["Module:Location_map/data/India_Karnataka"] = 2100, ["Module:Location_map/data/India_Kerala"] = 2700, ["Module:Location_map/data/India_Maharashtra"] = 2700, ["Module:Location_map/data/India_Punjab"] = 2200, ["Module:Location_map/data/India_Tamil_Nadu"] = 3100, ["Module:Location_map/data/India_Uttar_Pradesh"] = 3200, ["Module:Location_map/data/India_West_Bengal"] = 3300, ["Module:Location_map/data/Indiana"] = 3400, ["Module:Location_map/data/Iowa"] = 3000, ["Module:Location_map/data/Iran"] = 50000, ["Module:Location_map/data/Ireland"] = 3600, ["Module:Location_map/data/Italy"] = 12000, ["Module:Location_map/data/Japan"] = 14000, ["Module:Location_map/data/Maine"] = 2000, ["Module:Location_map/data/Massachusetts"] = 4700, ["Module:Location_map/data/Mexico"] = 3400, ["Module:Location_map/data/Michigan"] = 3800, ["Module:Location_map/data/Minnesota"] = 4600, ["Module:Location_map/data/Nepal"] = 4600, ["Module:Location_map/data/Netherlands"] = 3000, ["Module:Location_map/data/New_York"] = 8100, ["Module:Location_map/data/North_Carolina"] = 3500, ["Module:Location_map/data/Norway"] = 4400, ["Module:Location_map/data/Ohio"] = 2200, ["Module:Location_map/data/Pakistan"] = 2800, ["Module:Location_map/data/Pennsylvania"] = 5900, ["Module:Location_map/data/Peru"] = 2900, ["Module:Location_map/data/Philippines"] = 3100, ["Module:Location_map/data/Poland"] = 52000, ["Module:Location_map/data/Queensland"] = 2200, ["Module:Location_map/data/Romania"] = 5900, ["Module:Location_map/data/Russia"] = 26000, ["Module:Location_map/data/Russia_Bashkortostan"] = 4500, ["Module:Location_map/data/Russia_Vladimir_Oblast"] = 2200, ["Module:Location_map/data/Russia_Vologda_Oblast"] = 4800, ["Module:Location_map/data/Serbia"] = 4000, ["Module:Location_map/data/Slovakia"] = 2100, ["Module:Location_map/data/Slovenia"] = 6700, ["Module:Location_map/data/South_Africa"] = 3200, ["Module:Location_map/data/Spain"] = 7700, ["Module:Location_map/data/Sweden"] = 2800, ["Module:Location_map/data/Switzerland"] = 6200, ["Module:Location_map/data/Syria"] = 2200, ["Module:Location_map/data/Texas"] = 3400, ["Module:Location_map/data/Turkey"] = 18000, ["Module:Location_map/data/USA"] = 110000, ["Module:Location_map/data/USA_Alabama"] = 2300, ["Module:Location_map/data/USA_Alaska"] = 2100, ["Module:Location_map/data/USA_Arizona"] = 2100, ["Module:Location_map/data/USA_Arkansas"] = 3500, ["Module:Location_map/data/USA_California"] = 7700, ["Module:Location_map/data/USA_Colorado"] = 2200, ["Module:Location_map/data/USA_Florida"] = 3300, ["Module:Location_map/data/USA_Georgia"] = 2000, ["Module:Location_map/data/USA_Illinois"] = 3700, ["Module:Location_map/data/USA_Indiana"] = 3600, ["Module:Location_map/data/USA_Iowa"] = 3200, ["Module:Location_map/data/USA_Kentucky"] = 3200, ["Module:Location_map/data/USA_Maine"] = 2200, ["Module:Location_map/data/USA_Maryland"] = 2500, ["Module:Location_map/data/USA_Massachusetts"] = 5000, ["Module:Location_map/data/USA_Michigan"] = 4200, ["Module:Location_map/data/USA_Minnesota"] = 5000, ["Module:Location_map/data/USA_Missouri"] = 2100, ["Module:Location_map/data/USA_New_Jersey"] = 2900, ["Module:Location_map/data/USA_New_York"] = 9100, ["Module:Location_map/data/USA_North_Carolina"] = 4300, ["Module:Location_map/data/USA_Ohio"] = 2500, ["Module:Location_map/data/USA_Oregon"] = 2600, ["Module:Location_map/data/USA_Pennsylvania"] = 7000, ["Module:Location_map/data/USA_Texas"] = 3800, ["Module:Location_map/data/USA_Virginia"] = 5100, ["Module:Location_map/data/USA_Washington"] = 2900, ["Module:Location_map/data/USA_West_Virginia"] = 4400, ["Module:Location_map/data/USA_Wisconsin"] = 2700, ["Module:Location_map/data/Ukraine"] = 3200, ["Module:Location_map/data/United_Kingdom_Greater_London"] = 2200, ["Module:Location_map/data/Virginia"] = 4000, ["Module:Location_map/data/Washington"] = 2200, ["Module:Location_map/data/West_Virginia"] = 4100, ["Module:Location_map/data/Wisconsin"] = 2300, ["Module:Location_map/data/doc"] = 6400, ["Module:Location_map/info"] = 6400, ["Module:Location_map/multi"] = 29000, ["Module:Location_map/styles.css"] = 740000, ["Module:London_Gazette_util"] = 33000, ["Module:Lua_banner"] = 9800, } 10610ced68ec302961944d7f5a685ac098e736e5 Template:Lang-el/doc 10 1009 2215 2214 2023-10-01T14:12:47Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Lang-el/doc]] wikitext text/x-wiki {{Documentation subpage}} {{COinS safe|n}} {{high-use|18556}} {{lua|Module:lang}} {{hatnote|'''This template is only for tagging [[Modern Greek]] text.''' For Ancient Greek, see {{tlx|lang-grc}}; for Medieval Greek, see {{tlx|lang-gkm}}. For custom labels, no labels, or other uses, see {{tlx|lang}}.}} ==Usage== {{#invoke:Lang/documentor tool|lang_xx_settings|template={{ROOTPAGENAME}}}} The primary objective of this template (and of the other {{tlx|lang}} templates) is to tag non-English text so that ''both'' human ''and'' machine readers are able to properly interpret, display and understand non-English text as part of an effort to move towards a [[semantic web]]. To that end, proper use of these templates helps web browsers to choose the correct display font, text-to-speech screen readers to select a more appropriate pronunciation, search engines to better index and relate the context of the content, translation services to properly interpret the words, spell checkers to properly allow and/or require diacritics, and so on. ===Important metadata=== ''Regardless of the label that is displayed in front of the text'' (e.g.: "Ancient Greek:" vs. "Greek:" vs. "Modern Greek"), this template will ''always'' wrap the supplied Greek text inside of appropriate HTML {{tag|span}} tags – that is to say that the Greek text will be tagged using the [[ISO 639-1]] language code for '''Modern Greek''': "'''el'''". The following example wikicode: ::{{tlc|lang-el|άτομο}} produces the following HTML: ::<code><nowiki><a href="/wiki/Greek language" title="Greek language">Greek</a>:</nowiki></code> ::<code><nowiki><span </nowiki>'''lang="el" xml:lang="el"'''<nowiki>>άτομο</span></nowiki></code> This [[metadata]] identifies the enclosed text as Modern Greek for the benefit of search engines, browsers, screen readers, translators, typesetters, and so on. To these "non-human readers", Modern Greek (encoded as "el") has important distinctions from e.g. Ancient Greek (appropriately encoded using "grc" by other {{tlx|lang}} templates). '''For that reason, this template should never be used with Ancient or Medieval or other Greek text'''. == Parameters == {{#lst:Template:Lang-x/doc/parameters|lang_xx_parameters}} ==Syntax== :'''<nowiki>{{lang-el</nowiki>''' ::'''|{{var|Modern Greek text}}''' – using the Greek alphabet (with [[Greek diacritics|diacritics]]). ''(mandatory)'' ::'''|{{var|<nowiki>links=value</nowiki>}}''' – valid values: '''yes''' to have the language name linked (default) and '''no''' to prevent the language name from being linked. '' (optional)'' ::'''|{{var|<nowiki>lit=string</nowiki>}}''' – valid strings are English translations of the Greek text. ''(optional)'' ::'''|{{var|<nowiki>translit=string</nowiki>}}''' – valid strings are transliterations (with the [[Latin script]]) of the Greek text. ''(optional)'' :'''<nowiki>}}</nowiki>''' ==Examples== :{| class="wikitable" |- ! Code ! Result |- | {{tlf|lang-el|άτομο}} | {{lang-el|άτομο}} |- | {{tlf|lang-el|άτομο|links{{=}}yes}} | {{lang-el|άτομο|links=yes}} |- | {{tlf|lang-el|άτομο|links{{=}}no}} | {{lang-el|άτομο|links=no}} |- | <code><nowiki>'''Nea Dimokratia''' -</nowiki></code><br/><code><nowiki>{{Lang-el|Νέα Δημοκρατία|translit=Nea Dimokratia}}</nowiki></code> | '''Nea Dimokratia''' - {{Lang-el|Νέα Δημοκρατία|translit=Nea Dimokratia}} |- | <code><nowiki>'''Eleftherotypia''' -</nowiki></code><br/><code><nowiki>{{Lang-el|Ελευθεροτυπία|lit=Freedom of the Press}}</nowiki></code> | '''Eleftherotypia''' - {{Lang-el|Ελευθεροτυπία|lit=Freedom of the Press}} |} == Tracking categories == * Articles using this template are automatically placed in {{clc|Articles containing Greek-language text}}. * {{clc|Instances of Lang-el using second unnamed parameter}} - nothing inherently wrong if supplied <code>{{{2}}}</code>, but was created to check for compliance with template scheme. == TemplateData == {{TemplateData header}} <templatedata> { "params": { "1": { "label": "Text", "description": "The Greek text to be displayed", "type": "line", "required": true }, "links": { "label": "Link?", "description": "If a link to the article Greek language is included", "type": "boolean", "default": "yes" }, "lit": { "label": "Lit", "description": "English translation of Greek text", "type": "string" }, "translit": { "label": "Transliteration", "description": "A Latin alphabet respelling of Greek text", "suggested": true, "type": "string" }, "translit-std": { "label": "Transliteration standard", "description": "The identifier for the standard used for transliteration. Accepted value must be one of: ISO, DIN, IAST, ALA, and ALA-LC.", "suggested": true, "example": "ISO", "type": "string" }, "label": { "label": "Label", "description": "label to be used instead of template-provided language label; may be wikilinked; special keyword none causes the template to render without any labels (including transliteration and translation labels)", "example": "none" } }, "description": "Insert Greek text. This template should only be used with modern Greek." } </templatedata> == See also == * {{tlx|lang-gkm}} for Medieval Greek. * {{tlx|lang-grc}} for Ancient Greek. * {{tlx|lang-grc-gre}} for which the Ancient Greek description is not satisfactory or limiting. * {{tlx|lang|2=el}} tags Modern Greek text, without the label (for use with custom display, and other uses). * {{tlx|lang|2=ell}} tags Modern Greek text, without the label (for use with custom display, and other uses). * {{tlx|lang|2=grc}} tags Ancient Greek text, without the label (for use with custom display, and other uses). * {{tlx|transl|2=el}} tags text as "Greek Transliteration" (has no visible effect other than said tag when pointer is placed on text). <includeonly>{{Sandbox other|| <!-- Categories go here and interwikis go in Wikidata. --> [[Category:Greek multilingual support templates|{{PAGENAME}}]] [[Category:Lang-x templates|el]] [[Category:Templates that add a tracking category]] }}</includeonly> 9299cd14ca31df398ffd6c1bbb96c9a03855f67c Template:Greece Old Style dating 10 1010 2217 2216 2023-10-01T14:13:22Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Greece_Old_Style_dating]] wikitext text/x-wiki #REDIRECT [[Template:Greece Old Style dates]] {{Redirect category shell| {{R from move}} }} 072c262c3e4b7221bec65f6293cf294008cd349f Template:Redirect category shell 10 1011 2219 2218 2023-10-01T14:13:25Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Redirect_category_shell]] wikitext text/x-wiki __NONEWSECTIONLINK__{{Mbox | name = Redirect category shell | type = move | image = none | style = margin-top: 1.1em; border: solid 1px darkblue; border-left-width: 0.5em; | textstyle = padding-top: 0.9em; padding-bottom: 0.9em; | text = '''This {{Talk other|talk page|page}} is a [[Wikipedia:Redirect|redirect]]. <small>The following [[Wikipedia:Categorizing redirects|categories]] are used to track and monitor this redirect:</small>'''{{#if:{{{h|}}} |:: ''{{{h}}}'' }}<!-- Automatically detect protected redirects: --><includeonly>{{#switch: {{PROTECTIONLEVEL:move}} |sysop|templateeditor|extendedconfirmed={{pp-move|small=yes}} }}{{#switch: {{PROTECTIONLEVEL:edit}} |sysop={{R protected|embed=yes}} |templateeditor={{pp-protected|small=yes}}{{R template protected|embed=yes}} |extendedconfirmed={{pp-protected|small=yes}}{{R extended-protected|embed=yes}} |autoconfirmed={{pp-protected|small=yes}}{{R semi-protected|embed=yes}} | <!--Not protected, or only semi-move-protected--> }}</includeonly>{{#if: {{{1|}}}||<includeonly> * {{red|'''Important – Please Read! {{maroon|This template should {{em|not}} be applied without parameters by bot nor by any automated or semi-automated process. It should {{em|not}} be used without parameters {{em|unless you want to learn how to categorize redirects}}. For editors who want to learn how to categorize redirects, this template is a {{em|learning tool}}. {{em|Only}} those editors who intend to return to the redirect to learn which rcats to use should apply this template without parameters, or with an empty first parameter!}}'''}}</includeonly> * '''Manifold sort''': If help is needed to determine appropriate categories, then this redirect populates '''{{Cat|Miscellaneous redirects}}'''. Monitors of that category will check this redirect and add or remove [[Wikipedia:Categorizing redirects|rcats]] as needed.{{#ifeq: {{lc:{{{nocat|false}}}}} | false |{{{category|<includeonly>[[Category:Miscellaneous redirects]]</includeonly>}}}}} }} {{#if: {{{2|}}}|{{{2}}}|{{{1|}}}}}{{#if: {{{1|}}}{{{2|}}}||{{#ifeq: {{ROOTPAGENAME}}|Redirect category shell||[[Category:Redirect category shell without parameters]]}}}} ''<small>When appropriate, [[Wikipedia:Protection policy|protection levels]] are automatically sensed, described and categorized.</small>'' }}<noinclude> {{Documentation}} </noinclude> 554b3ada8f7ca8c0e840ea18a0344d3e94d13c38 Template:Talk other 10 1012 2221 2220 2023-10-01T14:13:26Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Talk_other]] wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{TALKSPACE}} | talk | other }} }} | talk = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} </noinclude> a8a973e372c5984a59953eb0cb4767a03dc6cd3c Template:Redirect template 10 1013 2223 2222 2023-10-01T14:13:26Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Redirect_template]] wikitext text/x-wiki {{#invoke:Redirect template|main}}<noinclude> {{Documentation}}</noinclude> 0b8db63883716ef3a4d3a9492f8571ae96028547 Template:R from move 10 1014 2225 2224 2023-10-01T14:13:27Z Führerredux 2 1 revision imported from [[:wikipedia:Template:R_from_move]] wikitext text/x-wiki <noinclude>{{hatnote|This rcat template is automatically added to all new redirects that result from page moves; it must be added manually to older redirects when appropriate.}}{{This is a redirect/rcat}} </noinclude>{{Redirect template |id=R from move |name=From a page move |from=a page that has been moved (renamed) |info=This page was kept as a redirect to avoid breaking links, both internal and external, that may have been made to the old page name. |all category=Redirects from moves }}<includeonly>{{R from move/except}}</includeonly><noinclude> <!-- Place categories on /doc subpage; interwikis go to Wikidata. --> {{Documentation}} </noinclude> a54816f5e100ad6245cbc939f9c0c04671b65c05 Template:R from move/except 10 1015 2227 2226 2023-10-01T14:13:28Z Führerredux 2 1 revision imported from [[:wikipedia:Template:R_from_move/except]] wikitext text/x-wiki <noinclude>This is the exception page for {{tl|R from move}}. This page makes exceptions that include certain pages that should not inhabit either {{cat|Unsynchronized talk page redirects}} or {{cat|Redirects from moves}}. If necessary, new exceptions may be added with no need to edit the main template, {{tl|R from move}}. </noinclude>{{#switch: {{FULLPAGENAME}} |MediaWiki:Move-redirect-text= |Template:R from move/except= |#default=[[Category:Redirects from moves]] }}{{#ifeq: {{NAMESPACENUMBER}}|1| {{#ifeq: {{#invoke:redirect|isRedirect|{{FULLPAGENAME}}}}|yes| {{#ifeq: {{#invoke:redirect|isRedirect|{{SUBJECTPAGENAME}}}}|yes| {{#ifeq: {{PAGENAME:{{#invoke:redirect|main|{{TALKPAGENAME}}}}}}|{{PAGENAME:{{#invoke:redirect|main|{{SUBJECTPAGENAME}}}}}}|| {{#ifeq: {{FULLPAGENAME}}|{{SUBJECTPAGENAME}}|| {{#ifeq: {{Str left|{{PAGENAME}}|16}}|List of ships of||[[Category:Unsynchronized talk page redirects]] }} }} }} |{{#ifexist:{{SUBJECTPAGENAME}}| {{#ifeq: {{SUBJECTPAGENAME}}|{{Target of|{{SUBJECTPAGENAME:{{Target of|{{FULLPAGENAME}}}}}}}}|[[Category:Articles with unsynchronized talk page redirects]]| {{#ifexpr: {{#invoke:string|find|{{#invoke:page|getContent|{{SUBJECTPAGENAME}}|as=raw}}|#invoke:RfD}}|[[Category:Redirects for discussion with talk page redirects]]|[[Category:Articles with talk page redirects]]}}}} }} }} |{{error|Page is not a redirect, misplaced [[Template:R from move]]}} }} }}<noinclude> {{Documentation|Template:R from move/doc}} </noinclude> 58acac66a7de5fe499db8890decc66a5ef426bd4 Module:Redirect template 828 1016 2229 2228 2023-10-01T14:13:29Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Redirect_template]] Scribunto text/plain require('strict') local p = {} -- key is beginning of arg name. value is table with namespace number and link -- alternatively, a function taking the namespace number and returning a validity -- can be used local namespaceCategories = { all = { function() return true end }, main = { 0, '[[wp:mainspace|main]]' }, help = { 12, '[[wp:help namespace|help]]' }, portal = { 100, '[[wp:portal|portal]]' }, talk = { function(n) return n > 0 and n%2 == 1 end, '[[Help:Talk pages|talk]]' }, template = { 10, '[[wp:template namespace|template]]' }, wikipedia = { 4, '[[wp:project namespace|Wikipedia project]]' }, category = { 14, '[[wp:categorization|category]]' }, user = { 2, '[[wp:user pages|user]]' }, } -- remove whitespaces from beginning and end of args local function valueFunc(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil end end return val end local function getPrettyName(args) for k in pairs(namespaceCategories) do if args[k .. ' category'] then return string.format("'''[[:Category:%s|%s]]''': ", args[k .. ' category'], args.name) end end return string.format("'''%s''': ", args.name) end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Redirect template', valueFunc = valueFunc}) local namespace = mw.title.getCurrentTitle().namespace --- XXX: this is a HORRIBLE HACK. kill it with fire as soon as https://bugzilla.wikimedia.org/show_bug.cgi?id=12974 is fixed local beCompatibleWithBug12974 = args.info and (args.info:find('^[:;#*]', 1) == 1 or args.info:find('{|', 1, true) == 1) and '\n' or ' ' local content = string.format('\n<div class="rcat %s">\n*%sThis is a redirect%s%s.%s%s\n</div>', args.id and ('rcat-' .. string.gsub(args.id, ' ', '_')) or '', args.name and getPrettyName(args) or '', args.from and (' from ' .. args.from) or '', args.to and (' to ' .. args.to) or '', args.info and beCompatibleWithBug12974 or '', args.info or '' ) for k,v in pairs(namespaceCategories) do if args[k .. ' category'] then if type(v[1]) == 'function' and v[1](namespace) or v[1] == namespace then if args.sortkey then content = content .. string.format('[[Category:%s|%s]]', args[k .. ' category'], args.sortkey) else content = content .. string.format('[[Category:%s]]', args[k .. ' category']) end elseif args['other category'] then if args.sortkey then content = content .. string.format('[[Category:%s|%s]]', args['other category'], args.sortkey) else content = content .. string.format('[[Category:%s]]', args['other category']) end else content = content .. frame:expandTemplate{title = 'Incorrect redirect template', args = {v[2]}} end end end if namespace == 0 then local yesno = require('Module:Yesno') if yesno(args.printworthy) == true then return content .. '[[Category:Printworthy redirects]]' elseif yesno(args.printworthy) == false then return content .. '[[Category:Unprintworthy redirects]]' end end return content end return p bcc2d5353cffbfcb00be2d9a7c2f9f276613e488 Module:Message box/ambox.css 828 1017 2231 2230 2023-10-01T14:14:00Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Message_box/ambox.css]] sanitized-css text/css /* {{pp|small=y}} */ .ambox { border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } /* Single border between stacked boxes. Take into account base templatestyles, * user styles, and Template:Dated maintenance category. * remove link selector when T200206 is fixed */ .ambox + link + .ambox, .ambox + link + style + .ambox, .ambox + link + link + .ambox, /* TODO: raise these as "is this really that necessary???". the change was Dec 2021 */ .ambox + .mw-empty-elt + link + .ambox, .ambox + .mw-empty-elt + link + style + .ambox, .ambox + .mw-empty-elt + link + link + .ambox { margin-top: -1px; } /* For the "small=left" option. */ /* must override .ambox + .ambox styles above */ html body.mediawiki .ambox.mbox-small-left { /* @noflip */ margin: 4px 1em 4px 0; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } .ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } .ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } .ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } .ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } .ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } .ambox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.5em; width: 100%; } .ambox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.5em; text-align: center; } .ambox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.5em 2px 0; text-align: center; } /* An empty narrow cell */ .ambox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ambox .mbox-image-div { width: 52px; } /* Hack around MobileFrontend being opinionated */ html.client-js body.skin-minerva .mbox-text-span { margin-left: 23px !important; } @media (min-width: 720px) { .ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ } } 29898fdc5160b39a8f580c76efe77afa1f6f58a4 Template:Pp 10 1018 2233 2232 2023-10-01T14:14:03Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Pp]] wikitext text/x-wiki {{#invoke:Protection banner|main}}<noinclude> {{documentation}} </noinclude> 4b195ffc44cfde864ef77b55a54c006333226ced Template:Greece Old Style dates 10 1019 2235 2234 2023-10-01T14:14:22Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Greece_Old_Style_dates]] wikitext text/x-wiki <ref>Note: Greece officially [[Adoption of the Gregorian calendar#Adoption in Eastern Europe|adopted]] the [[Gregorian calendar]] on 16 February 1923 (which became 1 March). All dates prior to that, unless specifically denoted, are [[Old Style]].</ref><noinclude> [[Category:Greece templates|Old Style dating]] [[Category:Time, date and calendar templates]] </noinclude> e9074de84202392ef3087519a6a003437ebcbfe8 Template:More citations needed 10 1020 2237 2236 2023-10-01T14:14:42Z Führerredux 2 1 revision imported from [[:wikipedia:Template:More_citations_needed]] wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = {{{name|More citations needed}}} | small = {{#if:{{{small|}}}|left}} | type = content | class = ambox-Refimprove | image = [[File:Question book-new.svg|50x40px|alt=]] | issue = This {{#if:{{{1|}}}|{{{1}}}|article}} '''needs additional citations for [[Wikipedia:Verifiability|verification]]'''. | fix = Please help [[Special:Edit/{{FULLPAGENAME}}|improve this article]] by [[Help:Referencing for beginners|adding citations to reliable sources]]{{#if:{{{1|}}}|{{sp}}in this {{{1}}}}}. Unsourced material may be challenged and removed.{{#if:{{{find2|{{{unquoted|}}}}}}| <br /><small>{{find sources mainspace|{{#if:{{{find|}}}|{{{find}}}|.}}|{{{find2|{{{unquoted|}}}}}}}}</small> |{{#if:{{{find|}}}|{{#ifeq: {{{find|}}} |none ||<br /><small>{{find sources mainspace|{{{find}}} }}</small>}}|<br /><small>{{find sources mainspace}}</small>}} }} | removalnotice = yes | talk = {{{talk|}}} | date = {{{date|}}} | cat = Articles needing additional references | all = All articles needing additional references }} }}<noinclude> <!-- Please add categories to the /doc subpage, thanks --> {{Documentation}} </noinclude> f2f3be3f3c3586a16c3e9caeb10bd8b6b751fab3 Template:Ambox 10 1021 2239 2238 2023-10-01T14:14:45Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Ambox]] wikitext text/x-wiki {{#invoke:Message box|ambox}}{{#ifeq:{{{small}}};{{NAMESPACENUMBER}}|left;0|[[Category:Articles using small message boxes]]}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 0c13ec156138ae0499c998cc3d7fbbeac4aeeed6 Module:Category handler 828 143 2241 336 2023-10-01T14:14:50Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Category_handler]] Scribunto text/plain -------------------------------------------------------------------------------- -- -- -- CATEGORY HANDLER -- -- -- -- This module implements the {{category handler}} template in Lua, -- -- with a few improvements: all namespaces and all namespace aliases -- -- are supported, and namespace names are detected automatically for -- -- the local wiki. This module requires [[Module:Namespace detect]] -- -- and [[Module:Yesno]] to be available on the local wiki. It can be -- -- configured for different wikis by altering the values in -- -- [[Module:Category handler/config]], and pages can be blacklisted -- -- from categorisation by using [[Module:Category handler/blacklist]]. -- -- -- -------------------------------------------------------------------------------- -- Load required modules local yesno = require('Module:Yesno') -- Lazily load things we don't always need local mShared, mappings local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function trimWhitespace(s, removeBlanks) if type(s) ~= 'string' then return s end s = s:match('^%s*(.-)%s*$') if removeBlanks then if s ~= '' then return s else return nil end else return s end end -------------------------------------------------------------------------------- -- CategoryHandler class -------------------------------------------------------------------------------- local CategoryHandler = {} CategoryHandler.__index = CategoryHandler function CategoryHandler.new(data, args) local obj = setmetatable({ _data = data, _args = args }, CategoryHandler) -- Set the title object do local pagename = obj:parameter('demopage') local success, titleObj if pagename then success, titleObj = pcall(mw.title.new, pagename) end if success and titleObj then obj.title = titleObj if titleObj == mw.title.getCurrentTitle() then obj._usesCurrentTitle = true end else obj.title = mw.title.getCurrentTitle() obj._usesCurrentTitle = true end end -- Set suppression parameter values for _, key in ipairs{'nocat', 'categories'} do local value = obj:parameter(key) value = trimWhitespace(value, true) obj['_' .. key] = yesno(value) end do local subpage = obj:parameter('subpage') local category2 = obj:parameter('category2') if type(subpage) == 'string' then subpage = mw.ustring.lower(subpage) end if type(category2) == 'string' then subpage = mw.ustring.lower(category2) end obj._subpage = trimWhitespace(subpage, true) obj._category2 = trimWhitespace(category2) -- don't remove blank values end return obj end function CategoryHandler:parameter(key) local parameterNames = self._data.parameters[key] local pntype = type(parameterNames) if pntype == 'string' or pntype == 'number' then return self._args[parameterNames] elseif pntype == 'table' then for _, name in ipairs(parameterNames) do local value = self._args[name] if value ~= nil then return value end end return nil else error(string.format( 'invalid config key "%s"', tostring(key) ), 2) end end function CategoryHandler:isSuppressedByArguments() return -- See if a category suppression argument has been set. self._nocat == true or self._categories == false or ( self._category2 and self._category2 ~= self._data.category2Yes and self._category2 ~= self._data.category2Negative ) -- Check whether we are on a subpage, and see if categories are -- suppressed based on our subpage status. or self._subpage == self._data.subpageNo and self.title.isSubpage or self._subpage == self._data.subpageOnly and not self.title.isSubpage end function CategoryHandler:shouldSkipBlacklistCheck() -- Check whether the category suppression arguments indicate we -- should skip the blacklist check. return self._nocat == false or self._categories == true or self._category2 == self._data.category2Yes end function CategoryHandler:matchesBlacklist() if self._usesCurrentTitle then return self._data.currentTitleMatchesBlacklist else mShared = mShared or require('Module:Category handler/shared') return mShared.matchesBlacklist( self.title.prefixedText, mw.loadData('Module:Category handler/blacklist') ) end end function CategoryHandler:isSuppressed() -- Find if categories are suppressed by either the arguments or by -- matching the blacklist. return self:isSuppressedByArguments() or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist() end function CategoryHandler:getNamespaceParameters() if self._usesCurrentTitle then return self._data.currentTitleNamespaceParameters else if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end return mShared.getNamespaceParameters( self.title, mappings ) end end function CategoryHandler:namespaceParametersExist() -- Find whether any namespace parameters have been specified. -- We use the order "all" --> namespace params --> "other" as this is what -- the old template did. if self:parameter('all') then return true end if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end for ns, params in pairs(mappings) do for i, param in ipairs(params) do if self._args[param] then return true end end end if self:parameter('other') then return true end return false end function CategoryHandler:getCategories() local params = self:getNamespaceParameters() local nsCategory for i, param in ipairs(params) do local value = self._args[param] if value ~= nil then nsCategory = value break end end if nsCategory ~= nil or self:namespaceParametersExist() then -- Namespace parameters exist - advanced usage. if nsCategory == nil then nsCategory = self:parameter('other') end local ret = {self:parameter('all')} local numParam = tonumber(nsCategory) if numParam and numParam >= 1 and math.floor(numParam) == numParam then -- nsCategory is an integer ret[#ret + 1] = self._args[numParam] else ret[#ret + 1] = nsCategory end if #ret < 1 then return nil else return table.concat(ret) end elseif self._data.defaultNamespaces[self.title.namespace] then -- Namespace parameters don't exist, simple usage. return self._args[1] end return nil end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- Used for testing purposes. return { CategoryHandler = CategoryHandler } end function p._main(args, data) data = data or mw.loadData('Module:Category handler/data') local handler = CategoryHandler.new(data, args) if handler:isSuppressed() then return nil end return handler:getCategories() end function p.main(frame, data) data = data or mw.loadData('Module:Category handler/data') local args = require('Module:Arguments').getArgs(frame, { wrappers = data.wrappers, valueFunc = function (k, v) v = trimWhitespace(v) if type(k) == 'number' then if v ~= '' then return v else return nil end else return v end end }) return p._main(args, data) end return p b74dd63857b24904ac452429b11213f18647471f Module:Category handler/data 828 1022 2243 2242 2023-10-01T14:14:50Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Category_handler/data]] Scribunto text/plain -- This module assembles data to be passed to [[Module:Category handler]] using -- mw.loadData. This includes the configuration data and whether the current -- page matches the title blacklist. local data = require('Module:Category handler/config') local mShared = require('Module:Category handler/shared') local blacklist = require('Module:Category handler/blacklist') local title = mw.title.getCurrentTitle() data.currentTitleMatchesBlacklist = mShared.matchesBlacklist( title.prefixedText, blacklist ) data.currentTitleNamespaceParameters = mShared.getNamespaceParameters( title, mShared.getParamMappings() ) return data abbc68048ff698e88dda06b64ecf384bbf583120 Module:Category handler/config 828 1023 2245 2244 2023-10-01T14:14:51Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Category_handler/config]] Scribunto text/plain -------------------------------------------------------------------------------- -- [[Module:Category handler]] configuration data -- -- Language-specific parameter names and values can be set here. -- -- For blacklist config, see [[Module:Category handler/blacklist]]. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Start configuration data -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Parameter names -- -- These configuration items specify custom parameter names. -- -- To add one extra name, you can use this format: -- -- -- -- foo = 'parameter name', -- -- -- -- To add multiple names, you can use this format: -- -- -- -- foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'}, -- -------------------------------------------------------------------------------- cfg.parameters = { -- The nocat and categories parameter suppress -- categorisation. They are used with Module:Yesno, and work as follows: -- -- cfg.nocat: -- Result of yesno() Effect -- true Categorisation is suppressed -- false Categorisation is allowed, and -- the blacklist check is skipped -- nil Categorisation is allowed -- -- cfg.categories: -- Result of yesno() Effect -- true Categorisation is allowed, and -- the blacklist check is skipped -- false Categorisation is suppressed -- nil Categorisation is allowed nocat = 'nocat', categories = 'categories', -- The parameter name for the legacy "category2" parameter. This skips the -- blacklist if set to the cfg.category2Yes value, and suppresses -- categorisation if present but equal to anything other than -- cfg.category2Yes or cfg.category2Negative. category2 = 'category2', -- cfg.subpage is the parameter name to specify how to behave on subpages. subpage = 'subpage', -- The parameter for data to return in all namespaces. all = 'all', -- The parameter name for data to return if no data is specified for the -- namespace that is detected. other = 'other', -- The parameter name used to specify a page other than the current page; -- used for testing and demonstration. demopage = 'page', } -------------------------------------------------------------------------------- -- Parameter values -- -- These are set values that can be used with certain parameters. Only one -- -- value can be specified, like this: -- -- -- -- cfg.foo = 'value name' -- -- -------------------------------------------------------------------------------- -- The following settings are used with the cfg.category2 parameter. Setting -- cfg.category2 to cfg.category2Yes skips the blacklist, and if cfg.category2 -- is present but equal to anything other than cfg.category2Yes or -- cfg.category2Negative then it supresses cateogrisation. cfg.category2Yes = 'yes' cfg.category2Negative = '¬' -- The following settings are used with the cfg.subpage parameter. -- cfg.subpageNo is the value to specify to not categorise on subpages; -- cfg.subpageOnly is the value to specify to only categorise on subpages. cfg.subpageNo = 'no' cfg.subpageOnly = 'only' -------------------------------------------------------------------------------- -- Default namespaces -- -- This is a table of namespaces to categorise by default. The keys are the -- -- namespace numbers. -- -------------------------------------------------------------------------------- cfg.defaultNamespaces = { [ 0] = true, -- main [ 6] = true, -- file [ 12] = true, -- help [ 14] = true, -- category [100] = true, -- portal [108] = true, -- book } -------------------------------------------------------------------------------- -- Wrappers -- -- This is a wrapper template or a list of wrapper templates to be passed to -- -- [[Module:Arguments]]. -- -------------------------------------------------------------------------------- cfg.wrappers = 'Template:Category handler' -------------------------------------------------------------------------------- -- End configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line. 373cd107b13a5b00e6a1b7e66a749f12502c849d Module:Category handler/shared 828 1024 2247 2246 2023-10-01T14:14:51Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Category_handler/shared]] Scribunto text/plain -- This module contains shared functions used by [[Module:Category handler]] -- and its submodules. local p = {} function p.matchesBlacklist(page, blacklist) for i, pattern in ipairs(blacklist) do local match = mw.ustring.match(page, pattern) if match then return true end end return false end function p.getParamMappings(useLoadData) local dataPage = 'Module:Namespace detect/data' if useLoadData then return mw.loadData(dataPage).mappings else return require(dataPage).mappings end end function p.getNamespaceParameters(titleObj, mappings) -- We don't use title.nsText for the namespace name because it adds -- underscores. local mappingsKey if titleObj.isTalkPage then mappingsKey = 'talk' else mappingsKey = mw.site.namespaces[titleObj.namespace].name end mappingsKey = mw.ustring.lower(mappingsKey) return mappings[mappingsKey] or {} end return p d2d5de1a031e6ce97c242cbfa8afe7a92cb9eca5 Module:Category handler/blacklist 828 1025 2249 2248 2023-10-01T14:14:52Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Category_handler/blacklist]] Scribunto text/plain -- This module contains the blacklist used by [[Module:Category handler]]. -- Pages that match Lua patterns in this list will not be categorised unless -- categorisation is explicitly requested. return { '^Main Page$', -- don't categorise the main page. -- Don't categorise the following pages or their subpages. -- "%f[/\0]" matches if the next character is "/" or the end of the string. '^Wikipedia:Cascade%-protected items%f[/\0]', '^User:UBX%f[/\0]', -- The userbox "template" space. '^User talk:UBX%f[/\0]', -- Don't categorise subpages of these pages, but allow -- categorisation of the base page. '^Wikipedia:Template index/.*$', -- Don't categorise archives. '/[aA]rchive', "^Wikipedia:Administrators' noticeboard/IncidentArchive%d+$", } 87469d7a9ef2a3c41b2bf04ae18f7c59a18fb855 Template:Snd 10 1026 2251 2250 2023-10-01T14:14:52Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Snd]] wikitext text/x-wiki #REDIRECT [[Template:Spaced en dash]] {{Redirect category shell| {{R from template shortcut}} }} 3b75d99127048894a5fec4237592923ea987cd13 Template:Spaced en dash 10 1027 2253 2252 2023-10-01T14:14:53Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Spaced_en_dash]] wikitext text/x-wiki &nbsp;&ndash;&#32;<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 235afe8e7aca71d984c1bba5d8c96db414594b53 Template:Find sources mainspace 10 1028 2255 2254 2023-10-01T14:14:56Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Find_sources_mainspace]] wikitext text/x-wiki {{#invoke:Find sources|Find sources mainspace}}<noinclude> {{#invoke:Find sources/autodoc|Find sources mainspace}} </noinclude> 47c0ba9d406528e894f4077dd33ec0fe489d0af2 Module:Find sources 828 1029 2257 2256 2023-10-01T14:14:57Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Find_sources]] Scribunto text/plain -- This module implements {{find sources}} and other similar templates, and -- also provides a mechanism to easily create new source-finding templates. -- Define constants local ROOT_PAGE = 'Module:Find sources' local TEMPLATE_ROOT = ROOT_PAGE .. '/templates/' -- for template config modules local LINK_CONFIG = ROOT_PAGE .. '/links' -- for link config modules local CONFIG_PAGE = ROOT_PAGE .. '/config' -- for global config -- Load required modules local checkType = require('libraryUtil').checkType local cfg = mw.loadData(CONFIG_PAGE) local p = {} local function maybeLoadData(page) local success, data = pcall(mw.loadData, page) return success and data end local function substituteParams(msg, ...) return mw.message.newRawMessage(msg, ...):plain() end local function renderSearchString(searchTerms, separator, transformFunc) -- This takes a table of search terms and turns it into a search string -- that can be used in a URL or in a display value. The transformFunc -- parameter can be used to transform each search term in some way (for -- example, URL-encoding them). local searchStrings = {} for i, s in ipairs(searchTerms) do searchStrings[i] = s end if transformFunc then for i, s in ipairs(searchStrings) do searchStrings[i] = transformFunc(s) end end return table.concat(searchStrings, separator) end function p._renderLink(code, searchTerms, display, tooltip) -- Renders the external link wikicode for one link, given the link code, -- a table of search terms, and an optional display value and tooltip. -- Get link config. local links = maybeLoadData(LINK_CONFIG) local linkCfg = links[code] if not linkCfg then error(string.format( "invalid link code '%s'; no link config found at [[%s]]", code, LINK_CONFIG )) end -- Make URL. local url do local separator = linkCfg.separator or "+" local searchString = renderSearchString( searchTerms, separator, mw.uri.encode ) url = substituteParams(linkCfg.url, searchString) end if tooltip then return string.format('<span title="%s" style="border-bottom: 1px dotted;">[%s %s]</span>', mw.text.encode(tooltip), url, display or linkCfg.display) else return string.format('[%s %s]', url, display or linkCfg.display) end end function p._main(template, args) -- The main access point from Lua. checkType('_main', 1, template, 'string') checkType('_main', 2, args, 'table', true) args = args or {} local title = mw.title.getCurrentTitle() -- Get the template config. local templateCfgPage = TEMPLATE_ROOT .. template local templateCfg = maybeLoadData(templateCfgPage) if not templateCfg then error(string.format( "invalid template name '%s'; no template config found at [[%s]]", template, templateCfgPage )) end -- Namespace check. if not templateCfg.isUsedInMainspace and title.namespace == 0 then local formatString = '<strong class="error">%s</strong>' if cfg['namespace-error-category'] then formatString = formatString .. '[[%s:%s]]' end return string.format( formatString, cfg['namespace-error'], mw.site.namespaces[14].name, cfg['namespace-error-category'] ) end -- Get the search terms from the arguments. local searchTerms = {} for i, s in ipairs(args) do searchTerms[i] = s end if not searchTerms[1] then -- Use the current subpage name as the default search term, unless -- another title is provided. If the page uses a disambiguator like -- "Foo (bar)", make "Foo" the first term and "bar" the second. local searchTitle = args.title or title.subpageText local term, dab = searchTitle:match('^(.*) (%b())$') if dab then dab = dab:sub(2, -2) -- Remove parens end if term and dab then searchTerms[1] = term searchTerms[2] = dab else searchTerms[1] = searchTitle end end searchTerms[1] = '"' .. searchTerms[1] .. '"' -- Make the intro link local introLink if templateCfg.introLink then local code = templateCfg.introLink.code local display = templateCfg.introLink.display or renderSearchString( searchTerms, '&nbsp;' ) local tooltip = templateCfg.introLink.tooltip introLink = p._renderLink(code, searchTerms, display, tooltip) else introLink = '' end -- Make the other links local links = {} local separator = templateCfg.separator or cfg['default-separator'] local sep = '' for i, t in ipairs(templateCfg.links) do links[i] = sep .. p._renderLink(t.code, searchTerms, t.display, t.tooltip) .. (t.afterDisplay or '') sep = t.separator or separator end links = table.concat(links) -- Make the blurb. local blurb = substituteParams(templateCfg.blurb, introLink, links) local span = mw.html.create('span') span :addClass('plainlinks') :addClass(templateCfg.class) :cssText(templateCfg.style) :wikitext(blurb) return tostring(span) end setmetatable(p, { __index = function(t, template) -- The main access point from #invoke. -- Invocations will look like {{#invoke:Find sources|template name}}, -- where "template name" is a subpage of [[Module:Find sources/templates]]. local tname = template if tname:sub(-8) == '/sandbox' then -- This makes {{Find sources/sandbox|Albert Einstein}} work. tname = tname:sub(1, -9) end return function(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = mw.site.namespaces[10].name .. ':' .. tname }) return t._main(template, args) end end}) return p 10c2d5c5a05295b49581eecba936dae039a4a290 Module:Find sources/config 828 1030 2259 2258 2023-10-01T14:14:57Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Find_sources/config]] Scribunto text/plain -- Configuration data for [[Module:Find sources]]. return { -- Define the error message and category to be used if the module is used in -- the main namespace and the template config doesn't set the -- isUsedInMainspace key to true. The category is optional; if it is not -- wanted, it can be removed. ['namespace-error'] = 'Error: Please do not use this template in articles.', ['namespace-error-category'] = 'Pages with templates in the wrong namespace', -- The separator to be used if no separator is specified in the template -- config. ['default-separator'] = mw.message.new('Dot-separator'):plain() } 412ea800b842be74cd74e8289e346e8b30b1df91 Module:Find sources/templates/Find sources mainspace 828 1031 2261 2260 2023-10-01T14:14:58Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Find_sources/templates/Find_sources_mainspace]] Scribunto text/plain return { blurb = "''Find sources:''&nbsp;$1&nbsp;–&nbsp;$2", introLink = { code = 'google' }, links = { { code = 'google news', display = 'news' }, { code = 'google newspapers', display = 'newspapers' }, { code = 'google books', display = 'books' }, { code = 'google scholar', display = 'scholar' }, { code = 'jstor', display = 'JSTOR' } }, isUsedInMainspace = true } abfeb1a778b232887c9400ca7667092141e60257 Module:Find sources/links 828 1032 2263 2262 2023-10-01T14:14:58Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Find_sources/links]] Scribunto text/plain -- This is a list of links used by [[Module:Find sources]]. return { ["archive.org"] = { url = 'https://archive.org/search.php?query=$1%20AND%20mediatype:texts', display = 'Archive.org', description = "The [[Internet Archive]], a digital library of public websites.", }, ["bing"] = { url = 'https://www.bing.com/search?q=$1', display = 'Bing', description = "[[Bing (search engine)|Bing]], Microsoft's flagship search engine.", }, ["britannica"] = { url = 'https://www.britannica.com/search?nop=1a15&cse=on&query=$1&cx=ccef96e8363da4b5f&tbm=3&fxx=3', display = 'Encyclopedia Britannica', description = "[[Encyclopedia Britannica]]", }, ["british library"] = { url = 'https://explore.bl.uk/primo_library/libweb/action/search.do?fn=search&ct=search&initialSearch=true&mode=Basic&tab=local_tab&indx=1&dum=true&srt=rank&vid=BLVU1&frbg=&tb=t&vl%28freeText0%29=$1', display = 'British Library', description = "National library of the United Kingdom", }, ["ccsearch"] = { url = "https://search.creativecommons.org/search?q=$1&license_type=commercial,modification", display = "CC Search", description = "CC Search: The official search engine of [[Creative Commons]]", }, ["cochrane"] = { url = "https://www.cochranelibrary.com/en/advanced-search?searchBy=-1&isWordVariations=&resultPerPage=25&searchType=advanced&selectedType=review&displayText=&orderBy=relevancy&p_p_id=scolarissearchresultsportlet_WAR_scolarissearchresults&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=2&searchText=$1", display = "Cochrane", description = "[[Cochrane Library]]: Leading publisher of systematic reviews.", }, ["doaj"] = { url = "https://www.doaj.org/search/articles?source=%7B%22query%22%3A%7B%22query_string%22%3A%7B%22query%22%3A$1%2C%22default_operator%22%3A%22AND%22%7D%7D%7D", display = "DOAJ", description = "[[Directory of Open Access Journals|DOAJ]]: Directory of Open Access Journals", }, ["duckduckgo"] = { url = 'https://duckduckgo.com/?q=$1', display = 'DuckDuckGo', description = "[[DuckDuckGo]], a search engine that emphasizes protecting searchers' privacy and avoiding the \"filter bubble\" of personalized search results.", }, ["eowb"] = { url = 'https://search.lib.umich.edu/everything?query=$1', display = 'Encyclopedia of World Biography', tooltip = 'Encyclopedia of World Biography, by Gale Research; online results provided by University of Michigan.', }, ["free news sources"] = { url = 'https://en.wikipedia.org/wiki/Wikipedia:Free_English_newspaper_sources', display = 'free news sources', }, ["gale"] = { url = "https://go.gale.com/ps/basicSearch.do?inputFieldNames%5B0%5D=OQE&nwf=y&searchType=BasicSearchForm&userGroupName=anon%7Ee3e4f4eb&prodId=AONE&spellCheck=true&method=doSearch&dblist=&stw.option=&ebook=&singleLimiterFieldValues%5BAC%5D=y&_singleLimiterFieldValues%5BAC%5D=on&_singleLimiterFieldValues%5BRE%5D=on&standAloneLimiters=LI&_singleLimiterFieldValues%5BLI%5D=on&inputFieldValues%5B0%5D=$1", display = "Gale Academic OneFile", description = " Gale Academic OneFile: Academic publisher portal from [[Gale (publisher)|Gale]]. Access via [[Wikipedia:The Wikipedia Library|Wikipedia Library]]", }, ["gin"] = { url = "https://guidelines.ebmportal.com/guidelines-international-network?type=search&search=$1", display = "GIN guidelines", tooltip = "Content from the library and the registry of guidelines in development provided by the Guidelines International Network", }, ["globe and mail"] = { url = 'https://www.theglobeandmail.com/search/?q=$1', display = "''The Globe and Mail''", description = "The website of ''[[The Globe and Mail]]'', a [[newspaper of record]] for Canada.", }, ["google"] = { url = 'https://www.google.com/search?as_eq=wikipedia&q=$1', display = 'Google', description = "[[Google]], the flagship search engine from Google Inc.", }, ["google books"] = { url = 'https://www.google.com/search?tbs=bks:1&q=$1+-wikipedia', display = 'Google Books', description = "[[Google Books]], Google's search engine for books." }, ["google free images"] = { url = 'https://www.google.com/search?safe=off&tbs=sur:fmc&tbm=isch&q=$1+-site:wikipedia.org+-site:wikimedia.org', display = 'Free Google Images', description = "[[Google Images]], Google's search engine for images. Only images compatible with Wikipedia's licensing are included.", }, ["google news"] = { url = 'https://www.google.com/search?tbm=nws&q=$1+-wikipedia&tbs=ar:1', display = 'Google News', description = "[[Google News]], Google's search engine for news sites.", notes = "In the past this link searched news archives, but this functionality has been removed by Google. Currently, only recent news articles are searched.", }, ["google newspapers"] = { url = 'https://www.google.com/search?&q=$1&tbs=bkt:s&tbm=bks', display = 'Google Newspapers', description = "Google Newspapers, a search of Google's digital archive of print newspapers.", }, ["google scholar"] = { url = 'https://scholar.google.com/scholar?q=$1', display = 'Google Scholar', description = "[[Google Scholar]], Google's search engine for academic papers and other scholarly research.", }, ["haaretz"] = { url = 'https://www.haaretz.com/search-results?q=$1', display = "''Haaretz''", description = "The website of ''[[Haaretz]]'', a [[newspaper of record]] for Israel.", }, ["internet archive scholar"] = { url = 'https://scholar.archive.org/search?&sort_order=time_desc&q=$1', display = 'IA scholar', description = "The [[Internet Archive Scholar]], a digital library of open access academic journals.", tooltip = "The [[Internet Archive Scholar]], a digital library of open access academic journals.", }, ["infoplease"] = { url = 'https://www.infoplease.com/search/$1', display = 'Infoplease', tooltip = 'Infoplease encyclopedia, dictionary, and almanac', }, ["jstor"] = { url = 'https://www.jstor.org/action/doBasicSearch?Query=$1&acc=on&wc=on', display = 'JSTOR', description = "[[JSTOR]], an online library containing digitised versions of academic journals. Requires a subscription." }, ["library of congress"] = { url = 'https://www.loc.gov/search/?in=&q=$1', display = "Library of Congress", description = "U.S. [[Library of Congress]]", }, ["mail and guardian"] = { url = 'https://mg.co.za/?s=$1', display = "''Mail & Guardian''", description = "The website of the ''[[Mail & Guardian]]'', a [[newspaper of record]] for South Africa.", }, ["medrs"] = { url = "https://en.wikipedia.org/wiki/Wikipedia:Identifying_reliable_sources_(medicine)", display = "find medical sources", tooltip = "Ideal sources for biomedical material include recent literature reviews and medical guidelines; learn how to identify reliable sources for medical content at Wikipedia at WP:MEDRS.", description = "[[WP:MEDRS|MEDRS]]: Ideal sources for biomedical material include recent literature reviews and medical guidelines; learn how to identify reliable sources for medical content.", }, ["muse"] = { url = 'https://muse.jhu.edu/search?action=search&min=1&max=10&t=header&query=content:$1:and', display = 'MUSE', tooltip = 'Project MUSE: humanities and social science content from academic journals and societies.', }, ["new york times"] = { url = 'https://www.nytimes.com/search/$1', display = "''New York Times''", description = "The website of ''[[The New York Times]]'', a [[newspaper of record]] for the United States.", }, ["new zealand herald"] = { url = 'https://www.nzherald.co.nz/search/$1/', display = "''The New Zealand Herald''", description = "The website of ''[[The New Zealand Herald]]'', a [[newspaper of record]] for New Zealand.", }, ["openlibrary"] = { url = 'https://openlibrary.org/search?q=$1&mode=everything', display = 'OpenLibrary', separator = '+', }, ["openmd"] = { url = "https://openmd.com/search?q=$1", display = "OpenMD", description = "OpenMD: Search engine for medical literature.", }, ["pubmed"] = { url = "https://pubmed.ncbi.nlm.nih.gov/?term=$1&filter=pubt.meta-analysis&filter=pubt.review&filter=pubt.systematicreview&filter=datesearch.y_10", display = "PubMed", description = "[[PubMed]]: Search engine for biomedical literature from [[United States National Library of Medicine|NLM]].", }, ["sciencedirect"] = { url = "https://www.sciencedirect.com/search?qs=$1&articleTypes=REV%2CEN%2CCH%2CSSU%2CPGL&lastSelectedFacet=articleTypes", display = "ScienceDirect", description = "ScienceDirect: [[Elsevier]]'s scientific, technical, and medical research portal.", }, ["south china morning post"] = { url = 'https://www.scmp.com/search/$1', display = "''South China Morning Post''", description = "The website of the ''[[South China Morning Post]]'', a [[newspaper of record]] for Hong Kong.", }, ["springer"] = { url = "https://link.springer.com/search?query=$1", display = "Springer", description = "Springer Nature's portal for journals, books, and reference works.", }, ["statpearls"] = { url = "https://www.ncbi.nlm.nih.gov/books/NBK430685/?term=$1", display = "StatPearls", description = "StatPearls: the largest provider of healthcare continuing education worldwide, providing peer-reviewed practice-guiding knowledge authored by clinical experts.", }, ["straits times"] = { url = 'https://www.straitstimes.com/search?searchkey=$1', display = "''The Straits Times''", description = "The website of ''[[The Straits Times]]'', a [[newspaper of record]] for Singapore.", }, ["sydney morning herald"] = { url = 'https://www.smh.com.au/search?text=$1', display = "''The Sydney Morning Herald''", description = "The website of ''[[The Sydney Morning Herald]]'', a [[newspaper of record]] for Australia.", }, ["the age"] = { url = 'https://www.theage.com.au/search?text=$1', display = "''The Age''", description = "The website of ''[[The Age]]'', a [[newspaper of record]] for Australia.", }, ["the guardian"] = { url = 'https://www.google.co.uk/search?as_sitesearch=www.theguardian.com&q=$1', display = 'The Guardian', description = "''[[The Guardian]]'' newspaper, U.K.", }, ["the hindu"] = { url = 'https://www.thehindu.com/search/?q=$1', display = "''The Hindu''", description = "The website of ''[[The Hindu]]'', a [[newspaper of record]] for India.", }, ["the times"] = { url = 'https://www.thetimes.co.uk/search?source=search-page&q=$1', display = "''The Times''", description = "The website of ''[[The Times]]'', a [[newspaper of record]] for the United Kingdom.", }, ["times of india"] = { url = 'https://timesofindia.indiatimes.com/topic/$1', display = "''The Times of India''", description = "The website of ''[[The Times of India]]'', a [[newspaper of record]] for India.", }, ["trip"] = { url = "https://www.tripdatabase.com/Searchresult?search_type=standard&criteria=$1&from_date=2012", display = "Trip Database", description = "Trip Database: Search engine for clinical research evidence.", }, ["uptodate"] = { url = "https://www.uptodate.com/contents/search?sp=0&searchType=PLAIN_TEXT&source=USER_INPUT&searchControl=TOP_PULLDOWN&searchOffset=1&autoComplete=false&language=en&max=10&search=$1", display = "UpToDate", tooltip = "Evidence-based resource for clinical decision support written for and by physicians", }, ["vgrl"] = { url = 'https://en.wikipedia.org/wiki/Special:Search?search=$1&prefix=Wikipedia%3AWikiProject+Video+games%2FReference+library&fulltext=Search+reference+library&fulltext=Search', display = 'VGRL', description = "[[Wikipedia:WikiProject Video games/Reference library]] internal archive search.", }, ["vgrs"] = { url = 'https://www.google.com/cse?cx=009782238053898643791%3A8naerdbd-oy&q=$1', display = 'VGRS', description = "[http://www.google.com/cse/home?cx=003516479746865699832:leawcwkqifq Google RS], a [[custom Google search engine]] that limits the search to sites listed in [[Wikipedia:WikiProject Video games/Sources]].", }, ["vgtalk"] = { url = 'https://en.wikipedia.org/w/index.php?search=$1+prefix%3AWikipedia+talk%3AWikiProject+Video+games&title=Special:Search&profile=default&fulltext=1', display = 'WPVG Talk', description = "A search in the WikiProject Video games talk page and its archives under [[Wikipedia talk:WikiProject Video games]].", }, ["wikipedia library"] = { url = "https://wikipedialibrary.wmflabs.org/search/?q=$1", display = "TWL", tooltip = "The Wikipedia Library", description = "Search results from dozens of services provided via EBSCOhost to Wikipedians via [[Wikipedia:The Wikipedia Library]].", }, ["wikipedia reference search"] = { url = 'https://www.google.com/custom?hl=en&cx=007734830908295939403%3Agalkqgoksq0&cof=FORID%3A13%3BAH%3Aleft%3BCX%3AWikipedia%2520Reference%2520Search&q=$1', display = 'Wikipedia Reference Search', description = "[[WP:WRS|Wikipedia Reference Search]], a Google search that only searches sites vetted by Wikipedians.", }, ["wiley"] = { url = "https://onlinelibrary.wiley.com/action/doSearch?AllField=$1", display = "Wiley", description = "Wiley Online Library: [[Wiley (publisher)|Wiley's]] portal for academic articles, books, and collections.", }, } 4817c288e68e87936971b4b7bb22926dc62c114c Module:Redirect hatnote 828 1033 2265 2264 2023-10-01T14:15:04Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Redirect_hatnote]] Scribunto text/plain --[[ -- This module produces a "redirect" hatnote. It looks like this: -- '"X" redirects here. For other uses, see Y.' -- It implements the {{redirect}} template. --]] local mHatnote = require('Module:Hatnote') local mHatList = require('Module:Hatnote list') local mArguments --lazily initialize local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitle(...) --Calls mw.title.new and returns either a title object, or nil on error local success, titleObj = pcall(mw.title.new, ...) return success and titleObj or nil end -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.redirect(frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame, {parentOnly=true}) --Get number of redirects local numRedirects = tonumber(frame.args[1]) or 1 -- Create the options table. local options = {} options.selfref = args.selfref return p._redirect(args, numRedirects, options) end function p._redirect(args, numRedirects, options, currentTitle, redirectTitle, targetTitle) -- Validate the input. Don't bother checking currentTitle, redirectTitle or -- targetTitle, as they are only used in testing. checkType('_redirect', 1, args, 'table') checkType('_redirect', 2, numRedirects, 'number', true) numRedirects = numRedirects or 1 checkType('_redirect', 3, options, 'table', true) options = options or {} currentTitle = currentTitle or mw.title.getCurrentTitle() -- Get the table of redirects local redirect = {} for i = 1, numRedirects do -- Return an error if a redirect parameter is missing. if not args[i] then return mHatnote.makeWikitextError( 'missing redirect parameter', 'Template:Redirect#Errors', args.category ) end redirect[i] = args[i] end -- Generate the text. local formattedRedirect = {} for k,v in pairs(redirect) do formattedRedirect[k] = mHatnote.quote(v) end local text = { mHatList.andList(formattedRedirect) .. ' ' .. (#redirect == 1 and 'redirects' or 'redirect') .. ' here.', mHatList._forSee(args, #redirect + 1, {title = redirect[1], extratext = args.text}) } text = table.concat(text, ' ') -- Functionality for adding categories local categoryTable = {} local function addCategory(cat) if cat and cat ~= '' then -- Add by index to avoid duplicates categoryTable[string.format('[[Category:%s]]', cat)] = true end end --Generate tracking categories local mhOptions = {} local redirTitle for k,v in pairs(redirect) do -- We don't need a tracking category if the template invocation has been -- copied directly from the docs, or if we aren't in main- or category-space. if not v:find('^REDIRECT%d*$') and v ~= 'TERM' -- and currentTitle.namespace == 0 or currentTitle.namespace == 14 then redirTitle = redirectTitle or getTitle(v) if not redirTitle or not redirTitle.exists then addCategory('Missing redirects') elseif not redirTitle.isRedirect then if string.find(redirTitle:getContent(), '#invoke:RfD') then addCategory('Articles with redirect hatnotes impacted by RfD') else addCategory('Articles with redirect hatnotes needing review') end else local target = targetTitle or redirTitle.redirectTarget if target and target ~= currentTitle then addCategory('Articles with redirect hatnotes needing review') end end end -- Generate the options to pass to [[Module:Hatnote]]. if currentTitle.namespace == 0 and not mhOptions.selfref and redirTitle and redirTitle.namespace ~= 0 then -- We are on a mainspace page, and the hatnote starts with something -- like "Wikipedia:Foo redirects here", so automatically label it as -- a self-reference. mhOptions.selfref = true else mhOptions.selfref = options.selfref end end --concatenate all the categories local category = '' for k,v in pairs(categoryTable) do category = category .. k end return mHatnote._hatnote(text, mhOptions) .. category end return p 6609c6166f6a1124c96c97915bc7b4182f1874f9 Template:Redirect 10 1034 2267 2266 2023-10-01T14:15:06Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Redirect]] wikitext text/x-wiki <includeonly>{{#invoke:redirect hatnote|redirect|1}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> c764f9cf8b31b4d5aa3e131bf254bfc78e5ba39b Template:Redirect-distinguish 10 1035 2269 2268 2023-10-01T14:15:09Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Redirect-distinguish]] wikitext text/x-wiki <includeonly>{{#invoke:Redirect-distinguish|redirectDistinguish}}</includeonly><noinclude>{{Documentation}}</noinclude> c08b04d280b5edf1a7dbf07eefb2d946e18de6d2 Module:Redirect-distinguish 828 1036 2271 2270 2023-10-01T14:15:09Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Redirect-distinguish]] Scribunto text/plain local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local mTableTools = require('Module:TableTools') local p = {} function p.redirectDistinguish (frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame) return p._redirectDistinguish(args) end function p._redirectDistinguish(args) if not args[1] then return mHatnote.makeWikitextError( 'no redirect supplied', 'Template:Redirect-distinguish', args.category ) end local redirectTitle = mw.title.new(args[1]) local currentTitle = currentTitle or mw.title.getCurrentTitle() if string.match(args[1], 'REDIRECT%d+') or args[1] == 'TERM' or currentTitle.namespace ~= 0 then --do nothing elseif not redirectTitle or not redirectTitle.exists then args[1] = args[1] .. '[[Category:Missing redirects]]' elseif not redirectTitle.isRedirect then if string.find(redirectTitle:getContent(), '#invoke:RfD') then args[1] = args[1] .. '[[Category:Articles with redirect hatnotes impacted by RfD]]' else args[1] = args[1] .. '[[Category:Articles with redirect hatnotes needing review]]' end end if not args[2] then return mHatnote.makeWikitextError( 'no page to be distinguished supplied', 'Template:Redirect-distinguish', args.category ) end args = mTableTools.compressSparseArray(args) --Assignment by removal here makes for convenient concatenation later local redirect = table.remove(args, 1) local text = string.format( '"%s" redirects here. Not to be confused with %s.', redirect, mHatlist.orList(args, true) ) return mHatnote._hatnote(text) end return p 4bdb55228ac3e76fde51e08f10054d210d702b91 Template:Template link general 10 1037 2273 2272 2023-10-01T14:15:13Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_link_general]] wikitext text/x-wiki {{{{{|safesubst:}}}#Invoke:Template link general|main}}<noinclude> {{Documentation}} </noinclude> 9871d2f490eaedd832a0ae8016adbf807ddf7b71 Template:Tlg 10 1038 2275 2274 2023-10-01T14:15:14Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tlg]] wikitext text/x-wiki #REDIRECT [[Template:Template link general]] {{Redirect category shell| {{R from move}} }} 707ce913a3ffa8193c9377c3ded7db7b72407500 Template:Twinkle standard installation 10 1039 2277 2276 2023-10-01T14:15:17Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Twinkle_standard_installation]] wikitext text/x-wiki {{Mbox | image = [[File:Police man Twinkle Head.svg|50x40px|alt=Logo of Twinkle; Police Man|link=]] | text = If you plan to make [[Template:Twinkle standard installation#"breaking changes"|breaking changes]] to this template, move it, or nominate it for deletion, please notify [[Wikipedia:Twinkle|Twinkle]]'s users and maintainers at [[Wikipedia talk:Twinkle]] as a courtesy, as the standard installation of Twinkle adds and removes this template. Thank you!{{#if:{{{1|}}}|<br> {{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by Twinkle|{{PAGENAME}}]]}}}}</includeonly><noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> e0d214332002dd4766de972883ae89580baeaa69 Template:Template redirect 10 1040 2279 2278 2023-10-01T14:15:19Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_redirect]] wikitext text/x-wiki <includeonly>{{#invoke:Shortcut|main|template=yes|redirect=yes}}</includeonly><noinclude>{{Documentation}}</noinclude> ec5365d4636ace45dd2b6b23308dc97a0b73a7ad Template:Citation and verifiability article maintenance templates 10 1041 2281 2280 2023-10-01T14:15:21Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Citation_and_verifiability_article_maintenance_templates]] wikitext text/x-wiki {{Navbox | name = Citation and verifiability article maintenance templates | title = [[Wikipedia:Template index/Cleanup/Verifiability and sources|Citation and verifiability article maintenance templates]] | listclass = hlist | state = {{{state|autocollapse}}} | group1 = Sourcing | list1 = * {{Tlg|Circular}} * {{Tlg|Dubious}} * {{Tlg|Excessive citations}} * {{Tlg|Further reading cleanup}} * {{Tlg|More citations needed}} ** {{Tlg|More citations needed section}} * {{Tlg|More footnotes needed}} * {{Tlg|No footnotes}} * {{Tlg|No significant coverage}} * {{Tlg|One source}} ** {{Tlg|One source section}} * {{Tlg|Only primary sources}} ** {{Tlg|NRIS only}} * {{Tlg|Primary sources}} ** {{Tlg|Primary sources section}} * {{Tlg|Religious text primary}} * {{Tlg|Self-published}} * {{Tlg|Self-reference cleanup}} * {{Tlg|Self-sourcing examples}} ** {{Tlg|Refexample section}} * {{Tlg|Sources exist}} * {{Tlg|Text-source}} * {{Tlg|Third-party}} * {{Tlg|Unreferenced}} ** {{Tlg|Unreferenced section}} * {{Tlg|Unreferenced category}} * {{Tlg|Unreliable sources}} ** {{Tlg|Unreliable sources section}} * {{tlg|User-generated}} | group2 = [[Wikipedia:Biographies of living persons|BLP]]-specific | list2 = * {{Tlg|BLP unreferenced}} ** {{Tlg|BLP unreferenced section}} * {{Tlg|BLP primary sources}} * {{Tlg|BLP self-published}} * {{Tlg|BLP sources}} ** {{Tlg|BLP sources section}} * {{Tlg|BLP IMDb-only refimprove}} * {{Tlg|BLP IMDb refimprove}} * {{Tlg|BLP no footnotes}} * {{Tlg|BLP more footnotes needed}} * {{Tlg|BLP one source}} | group3 = Topic specific | list3 = * {{Tlg|Localist}} * {{Tlg|Media IMDb refimprove}} * {{Tlg|More medical citations needed}} * {{Tlg|More science citations needed}} * {{Tlg|Neologism}} * {{Tlg|Science review}} * {{Tlg|Unreferenced law}} ** {{Tlg|Unreferenced-law section}} * {{Tlg|Unreferenced medical section}} | group4 = Dispute-related | list4 = * {{Tlg|Cite check}} ** {{Tlg|Cite check section}} * {{Tlg|Content}} * {{Tlg|Disputed}} ** {{Tlg|Dispute about}} ** {{Tlg|Disputed section}} ** {{Tlg|Disputed chem}} ** {{Tlg|Disputed list}} ** {{Tlg|Disputed map}} * {{Tlg|Expert needed}} * {{Tlg|Hoax}} * {{Tlg|Original research}} ** {{Tlg|Original research section}} * {{Tlg|Speculation}} ** {{Tlg|Speculation section}} * {{Tlg|Synthesis}} * {{Tlg|Verifiability}} * {{Tlg|Verify sources}} | group5 = Citation improvements | list5 = * {{Tlg|Citation style}} * {{Tlg|Citations broken}} * {{Tlg|Cleanup bare URLs}} * {{Tlg|Format footnotes}} * {{Tlg|Full citations needed}} * {{Tlg|Ibid}} * {{Tlg|Page numbers improve}} * {{Tlg|Page numbers needed}} * {{Tlg|Shallow references}} | group6 = General advice | list6 = * [[Wikipedia:Citing sources|Citing sources]] * [[Wikipedia:Reliable sources|Reliable sources]] * [[Help:Maintenance template removal |Maintenance template removal]] * [[Wikipedia:Citation needed|Citation needed]] * [[Help:Find sources|Find sources]] * [[Wikipedia:Combining sources|Combining sources]] * [[Help:Overview of referencing styles|Referencing styles]] }}<noinclude>{{Documentation}}</noinclude> 55a6785749a09717fef857138042ad0d8abef5ef Template:AWB standard installation 10 1042 2283 2282 2023-10-01T14:15:23Z Führerredux 2 1 revision imported from [[:wikipedia:Template:AWB_standard_installation]] wikitext text/x-wiki {{ mbox | image = [[File:AWB logo draft.svg|44x50px|alt=|link=]] | text = This template is used by the standard installation of [[Wikipedia:AutoWikiBrowser|AutoWikiBrowser]] (AWB). If you are planning to make any major changes to this template, how it should be used, or nominate it for deletion, please notify AWB's user base and maintainers beforehand at [[Wikipedia talk:AutoWikiBrowser|Wikipedia talk:AWB]] as a courtesy.{{#if:{{{1|}}}|<p> {{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by AutoWikiBrowser|{{PAGENAME}}]]}}}}</includeonly><noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> 5d0e869b7d352225e1fc0aa75cb27988220928aa Template:More citations needed/doc 10 1043 2285 2284 2023-10-01T14:15:25Z Führerredux 2 1 revision imported from [[:wikipedia:Template:More_citations_needed/doc]] wikitext text/x-wiki {{Documentation subpage}} {{redirect-distinguish|Template:Additional citations|Template:Additional citation needed}} {{redirect-distinguish|Template:Not verified|Template:Failed verification}} {{redirect|Template:Verify|the template used to request clarification of the preceding sentence|Template:Clarify}} {{redirect-distinguish|Template:Mcn|Template:Medical citation needed}} {{High-use}} {{Twinkle standard installation}} {{AWB standard installation}} {{Template shortcut|rip|mcn|verify}} {{Template redirect|Additional citations|Not verified}} ==Usage== ===When to use=== This [[Wikipedia:Templates|template]] indicates that the article needs additional inline citations. This template should be used only for articles where there are some, but insufficient, inline citations to support the material currently in the article. Don't use this tag for articles that contain no unreferenced material, even if all the material is supported by a single citation. Some editors understand this template to be redundant when it is used on articles clearly marked as [[Wikipedia:Stub|stubs]], since by definition stubs are unlikely to be well referenced. For articles that have no inline citations at all, but contain some sources, use [[:Template:No footnotes]]. Only use [[:Template:Unreferenced]] for articles that have no references at all. * For articles about living persons, the more specific template {{tl|BLP sources}} should be used instead. * For articles containing biomedical information, the more specific template {{tl|More medical citations needed}} should be used instead. * Please consider marking individual unreferenced statements with the {{tl|Citation needed}} inline template, instead of placing this template. * If most of an article is supported by inline citations and a few of those use unreliable sources, use {{tlx|Unreliable source?|date{{=}}{{#time:F Y}}}} and if you are certain, then add the parameters {{tlx|Unreliable source|certain{{=}}y|reason{{=}}{{var|1=your WP:RS-based reason here.}}|date{{=}}{{#time:F Y}}}} '''Placement''' : According to [[MOS:LAYOUT]], maintenance templates, such as this one, should (except when section-specific) be placed after hatnotes, at the start of the article. That placement is supported by consensus obtained in an RfC at {{section link|Template talk:More citations needed/Archive 4|RfC: Location of Tag}}. '''User warning''' : A user warning template, {{tl|uw-refimprove}}, is available to notify contributors that an article they created needs its referencing improved. '''Auto-categorization''' : This template adds the article to [[:Category:Articles needing additional references from {{CURRENTMONTHNAME}} {{CURRENTYEAR}}]], and [[:Category:All articles needing additional references]], both [[Wikipedia:HIDDENCAT|hidden categories]]. == Parameters == There are six parameters, one positional, and five named parameters. All parameters are optional. * {{para|1}}{{snd}}scope of notification (e.g., 'section', 'article') default: 'article'. * {{para|date}}{{snd}}month name and year; e.g. '{{CURRENTMONTHNAME}} {{CURRENTYEAR}}' (no default) * {{para|find}}{{snd}}search keywords for {{tl|find sources}} param 1 (double-quoted search); default: page title. See details [[#Details|below]]. * {{para|find2}}{{snd}}search keywords for {{tl|find sources}} param 2 (unquoted search). Alias: <code>unquoted</code>. See [[#Details|below]]. * {{para|small}}{{snd}}set to <code>left</code> or <code>no</code>; see details at [[Template:Ambox/doc#small|Ambox]]. Default: standard-width banner. * {{para|talk}}{{snd}}title of talk page section where discussion can be found === Details === '''Talk parameter''' : A {{para|talk}} parameter is allowed; setting this to any value will result in the message "See talk page for details." being included in the tag. If the value is a valid anchor on the talk page (e.g., the title of a section or subsection heading), then the talk page link will go directly to that anchor; if not, then to the top of the page. '''Date parameter''' : This template also includes support for using the {{para|date}} parameter. Adding this parameter sorts the article into subcategories of [[:Category:Articles needing additional references]] and out of the parent category, allowing the oldest problems to be identified and dealt with first. A [[Wikipedia:Bot policy|bot]] will add this parameter, if it is omitted. Be careful '''''not''''' to abbreviate the date, because then it will automatically add a redlinked category instead of the correct category. The simplest way to use this parameter manually is <code><nowiki>{{More citations needed|{{subst:DATE}}}}</nowiki></code>, but it can be done more explicitly as <code><nowiki>{{More citations needed|date=</nowiki>{{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}</nowiki></code> (both result in the same output). Do ''not'' use <code><nowiki>{{More citations needed|date={{subst:DATE}}}}</nowiki></code> because <code><nowiki>{{subst:DATE}}</nowiki></code> already includes the leading <code>date=</code> code. '''Find parameters:''' : There are two 'find' parameters available to control the presentation and operation of the {{tl|find sources}} links optionally displayed by the {{tl|Unreferenced}} template. By default, the template displays {{tl|find sources}} with a quoted search query equivalent to the exact article title. Sometimes, especially if the article has a long, [[WP:NDESC|descriptive title]], or if it includes [[WP:PARENDIS|parenthetical disambiguation terms]], this may not give useful results. The find parameters can be used to provide the search keywords of your choice to the {{tl|find sources}} links. Use: :* {{para|find}} to specify keywords for an exact search (double-quoted query); this corresponds to {{tl|find sources}} positional param <code>|1</code>. :* {{para|find2}} to specify keywords for an unquoted search; this corresponds to {{tl|find sources}} param <code>|2</code>. The alias {{para|unquoted}} may be used instead. The value "none" may be passed to 'find' ({{para|find|none}}) to suppress display of ''find sources'' links. (Note that specifying {{para|find|none}} and a nonempty value for {{para|find2}} is not a valid combination.) == Examples == Listed below are several examples of usage: :{{tlc|More citations needed|2=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} or the common redirect: {{tlc|Refimprove|2=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} :{{tlc|More citations needed|2=section|3=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}&nbsp; or use the alternative template: {{tlx|More citations needed section|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} ::The template can be made smaller with {{tlc|More citations needed|section|small{{=}}y}} or use the alternative template {{tlx|More citations needed section|small{{=}}y}} :{{tlc|More citations needed|section|<nowiki>{{subst:DATE}}</nowiki>|talk{{=}}{{var|Talk page section name}}|small{{=}}y}} The optional {{para|find}} parameter is available, for modifying the operation of the {{tl|find sources mainspace}} links displayed by the template: {{tlc|More citations needed|find{{=}}search keyword(s)|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} ==Differences from related templates== ==={{tl|BLP sources}}=== * Use ''BLP sources'' in [[WP:BLP|articles about living persons]] that need additional references. If the article needs additional references but is not about a living or recently deceased subject, then use ''More citations needed''. ==={{Tl|More footnotes needed}}=== * Use ''More footnotes needed'' when the article includes a list of sources, perhaps in a "Bibliography" or "Works" appendix, but its sources remain unclear because there are [[WP:INLINECITE|insufficient inline citations]]. The ''More citations needed'' tag is more specific than ''More footnotes needed'', and should be used preferentially to that template. ==={{Tl|Unreferenced}} and {{Tl|Citation needed}}=== * Use ''Unreferenced'' when there are no citations of any kind in an article. If citations have been added to an article, but they are insufficient, then use ''More citations needed''. * Alternatively, if an article has sufficient inline citations, but lacks citations covering specific information (such as [[WP:PROVEIT|missing a citation on a quotation]]), then use the inline citation template {{Tl|Citation needed}} to indicate more precisely where additional citations are needed. Unlike the inline ''Citation needed'', ''More citations needed'' is placed as a general banner at the top of an article. * The {{Tl|More citations needed section}} and {{tl|Unreferenced section}} templates are available to use for problems that are not article-wide. * If you decide to change a tag from ''Unreferenced'' to ''More citations needed'', don't forget to update the date stamp in the tag, if necessary. ==={{Tl|Primary sources}}=== * If an article has a sufficient amount of inline citations, but the citations are from primary sources (see [[WP:USEPRIMARY]]), then use ''{{tl|Primary sources}}''. ==={{Tl|Third-party}}=== * If an article has sufficient inline citations, but the citations are from sources affiliated with the subject (see [[WP:INDY]]), then use ''{{tl|Third-party}}''. ==={{Tl|One source}}=== * If an article has exactly one source '''and''' that single source is likely to result in bias or other problems in the article (e.g., it cites one fringe-y book instead of a good textbook), then use ''{{tl|One source}}''. ==={{Tl|More medical citations needed}}=== * If the article contains biomedical information, sources must meet the standards of [[WP:MEDRS]] ("it is vital that the biomedical information in articles be based on reliable, third-party, published sources and accurately reflect current medical knowledge"). If there are inline citations for biomedical information, but they do not meet the required standards, then use ''{{Tl|More medical citations needed}}''. ==={{Tl|Citation style}}=== * The ''More citations needed'' template is intended for use in articles that need additional citations, while the ''citation style'' template is used to request consistency within the citations present in an article (see [[WP:CITEVAR]]). For example, use ''citation style'' when there is a mixture of [[WP:CITE#Footnotes|footnotes]] and [[WP:CITE#Parenthetical referencing|parenthetical references]]. ==={{Tl|No footnotes}} and {{Tl|More footnotes needed}}=== * ''More citations needed'' can be used when there are no "References" or "Further reading" sections present in the article. ==={{Tl|Sources exist}}=== * ''Sources exist'' is similar to ''More citations needed'', because both templates indicate the need for more references. However, {{tlx|Sources exist}} indicates that a user has already checked that reliable sources are available to be cited, but has not yet added them to the article. By using this template, the assertion is made that the article is notable, but needs more citations. ==<span id="Template data"></span>TemplateData== {{TemplateData header}} <templatedata> { "description": "This template generates a tag to indicate that the article needs additional inline citations.", "format": "inline", "params": { "1": { "label": "Affected area", "description": "Text to replace the word \"article\", usually \"section\"", "type": "line", "example": "section" }, "date": { "label": "Month and year", "description": "The month and year that the template was placed (in full). \"{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}\" inserts the current month and year automatically.", "type": "line", "autovalue": "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}", "example": "June 2013", "suggested": true }, "talk": { "label": "Talk page section", "description": "Section name on the talk page for further discussion", "type": "line" }, "small": { "label": "Make template small", "description": "Enter any text here to make the template box small and aligned to the left.", "type": "line", "autovalue": "y", "example": "y" }, "find": { "label": "Find", "description": "Search keywords for double-quoted search to pass to 'find sources'.", "type": "line" }, "find2": { "label": "Find2", "aliases": ["Unquoted"], "description": "Search keywords for unquoted search to pass to 'find sources'.", "type": "line" }, "name": {} }, "paramOrder": [ "1", "talk", "small", "find", "find2", "date", "name" ] } </templatedata> ==Redirects== <!-- regex (Ri|RI|tl|Additional|Cite[ _]+sources|Cleanup-cite|Cleanup-verify|Cleanup[ _]+cite|DisputeCheck|Fact-check|Fact[ _]+check|Factual|Few[ _]+references|Fewreferences|Improve-references|Improve-refs|Improve[ _]+references|Improve[ _]+refs|Improvereferences|Improverefs|More[ _]+references|More[ _]+sources|Moreref|Morereferences|Morerefs|Moresources|Not[ _]+verified|Notverified|Ref-improve|Ref[ _]+improve|Reference-improve|Refimprove|Sources|Unreliable|Verification|Verify) --> Include: {{columns-list|colwidth=15em| #{{Tl|+r}} #{{Tl|+R}} #{{tl|Add references}} #{{tl|Additional citations}} #{{Tl|Citations missing}} #{{Tl|Citations needed}} #{{Tl|Cite sources}} #{{Tl|Cleanup-cite}} #{{Tl|Cleanup-verify}} #{{Tl|Few references}} #{{Tl|Few refs}} #{{tl|Few sources}} #{{Tl|Improve-refs}} #{{Tl|Improve references}} #{{tl|Improve sources}} #{{Tl|Missing citations}} #{{tl|More citations}} #{{tl|More cn}} #{{Tl|More references}} #{{tl|More references needed}} #{{tl|More refs}} #{{Tl|More sources}} #{{tl|More sources needed}} #{{tl|Needs additional citations}} #{{tl|Needs more citations}} #{{tl|Needs more references}} #{{tl|Needs more sources}} #{{Tl|Not verified}} #{{Tl|Ref-improve}} #{{Tl|Ref improve}} #{{tl|Reference improve}} #{{tl|Referenced}} #{{Tl|Refimprove}} #{{Tl|Sources}} #{{tl|Sources needed}} #{{Tl|Verification}} #{{Tl|Verify}} }} ==See also== * {{Tl|Refbegin}} * {{Tl|Refend}} * {{Tl|Reflist}} * {{Tl|Verify source}} * [[:Template:Citation needed/doc#Inline templates]] * [[Wikipedia:Template index/Cleanup/Verifiability and sources]] {{Citation and verifiability article maintenance templates}} <includeonly>{{sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Citation and verifiability maintenance templates]] }}</includeonly> 1774ccdf3cf6159e006865ed3f0a94a770bba1f2 Template:Authority control 10 1044 2287 2286 2023-10-01T14:16:44Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Authority_control]] wikitext text/x-wiki {{#invoke:Authority control|authorityControl}}<noinclude> {{documentation}} </noinclude> e826e6e9609d825b483c2678d80f78742d321d92 Module:EditAtWikidata 828 1045 2289 2288 2023-10-01T14:16:57Z Führerredux 2 1 revision imported from [[:wikipedia:Module:EditAtWikidata]] Scribunto text/plain -- Module to display an icon with a tooltip such as "Edit this at Wikidata". -- Icon is linked to the Wikidata entry for the article where this is placed. -- This message is only displayed if a local_parameter is not supplied -- i.e. when called from a template, it can be coded not to display the message. -- The qid of a Wikidata entry can optionally be supplied for testing outside the article. -- Usage: -- {{#invoke:EditAtWikidata|showMessage|local_parameter}} -- {{#invoke:EditAtWikidata|showMessage|qid=<ArticleID>|local_parameter}} local p = {} local i18n = { ["message"] = "Edit this at Wikidata" } local function trimToNil(text) -- Return trimmed non-empty text, or nil. if type(text) == 'string' then return text:match('(%S.-)%s*$') end end function p._showMessage(args) local local_parm = trimToNil(args[1]) if local_parm then return "" end -- Parameter qid=x specifies the Wikidata ID for the article. -- This is not normally used except for testing outside the article. local qid = trimToNil(args.qid) or mw.wikibase.getEntityIdForCurrentPage() if qid and mw.wikibase.entityExists(qid) then -- Parameter pid=x uses x as an anchor in the link to the Wikidata entry. local anchor = trimToNil(args.pid) -- Parameter nbsp replaces the leading space with &nbsp; local space = trimToNil(args.nbsp) and "&nbsp;" or " " return space .. "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px" .. "|alt=" .. i18n.message .. "|link=https://www.wikidata.org/wiki/" .. qid .. (anchor and ("#" .. anchor) or "") .. "|class=noprint" .. "|" .. i18n.message .. "]]" end return "" end function p.showMessage(frame) return p._showMessage(frame.args) end return p 9753d108ec0b308834a1e692bedfe5473e10de2a Module:Authority control 828 1046 2291 2290 2023-10-01T14:16:58Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Authority_control]] Scribunto text/plain require('strict') local p = {} local configfile = 'Module:Authority control/config' -- default configuation module local arg = mw.getCurrentFrame().args.config if arg and arg~='' then configfile = 'Module:Authority control/config/' .. arg end local config if mw.title.new(configfile).exists then config = mw.loadData(configfile) else return error('Invalid configuration file',0) end local title = mw.title.getCurrentTitle() local namespace = title.namespace local testcases = title.subpageText == config.i18n.testcases local function needsAttention(sortkey) return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]' end local function addCat(cat,sortkey) if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then local redlinkcat = '' if testcases == false and mw.title.new(cat, 14).exists == false then redlinkcat = needsAttention('N') end if sortkey then cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]' else cat = '[[' .. config.i18n.category .. ':'..cat..']]' end cat = cat .. redlinkcat return cat else return '' end end local function getCatForId(id,faulty) local cat = string.format( config.i18n.cat, (faulty and config.i18n.faulty..' ' or '') .. id ) return addCat(cat) end local function getIdsFromWikidata(qid,property) local function getquals(statement,qualid) if statement.qualifiers and statement.qualifiers['P'..qualid] then return mw.wikibase.renderSnak(statement.qualifiers['P'..qualid][1]) else return false end end local ids = {} if qid then for _, statement in ipairs(mw.wikibase.getBestStatements(qid,property)) do if statement.mainsnak.datavalue then local val = statement.mainsnak.datavalue.value if val then local namedas = getquals(statement,1810) or getquals(statement,742) or '' table.insert(ids,{id=val,name=namedas}) end end end end return ids end local _makelink = function(conf,val,nextid,qid) --validate values and create a link local function tooltip(text,label) if label and label~='' then return mw.getCurrentFrame():expandTemplate{title = "Tooltip", args = {text,label}} else return text end end local link if nextid==1 then if conf.prefix then link = '*' .. conf.prefix .. '\n**' else link = '*' end else link = '\n**' end local valid_value = false if conf.customlink then -- use function to validate and generate link local label = nextid>1 and nextid local newlink= require(config.auxiliary)[conf.customlink](val.id,label) if newlink then link = link .. newlink valid_value = true end else if conf.pattern then -- use pattern to determine validity if defined valid_value = string.match(val.id,'^'..conf.pattern..'$') elseif conf.patterns then for _,pattern in ipairs(conf.patterns) do valid_value = val.id:match('^'..pattern..'$') if valid_value then break end end elseif conf.valid then -- otherwise use function to determine validity valid_value = require(config.auxiliary)[conf.valid](val.id) else -- no validation possible valid_value = val.id end if valid_value then local newlink local label = conf.label if not label or nextid>1 then label = tostring(nextid) end if conf.link then valid_value = valid_value:gsub('%%', '%%%%') newlink = '[' .. mw.ustring.gsub(conf.link,'%$1',valid_value) .. ' ' .. label .. ']' else newlink = valid_value end link = link .. '<span class="uid">'..tooltip(newlink,val.name)..'</span>' end end if valid_value then link = link .. getCatForId(conf.category or conf[1]) else --local preview = require("Module:If preview") local wdlink = qid and '[[:wikidata:' .. qid .. '#P' .. conf.property .. ']]' or '' local tooltip = string.format( config.i18n.idnotvalid, conf[1], val.id ) link = link .. '[[File:' .. config.i18n.warningicon .. '|20px|frameless|link=' .. wdlink .. '|' .. tooltip .. '.]]' if conf.errorcat then link = link .. addCat(conf.errorcat) else link = link .. getCatForId(conf.category or conf[1],true) end link = link .. addCat(config.i18n.allfaultycat,conf[1])-- .. preview._warning({'The '..conf[1]..' id '..val..' is not valid.'}) end return link end --[[==========================================================================]] --[[ Main ]] --[[==========================================================================]] function p.authorityControl(frame) local function resolveQID(qid) if qid then qid = 'Q'..mw.ustring.gsub(qid, '^[Qq]', '') if mw.wikibase.isValidEntityId(qid) and mw.wikibase.entityExists(qid) then local sitelink = mw.wikibase.getSitelink(qid) if sitelink then return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(qid).id end return mw.wikibase.getEntity(qid).id end end end local conf = config.config local parentArgs = frame:getParent().args local auxCats = '' local rct = false -- boolean to track if there are any links to be returned local qid,topic local wikilink = function(qid,hideifequal) local label,sitelink = mw.wikibase.getLabel(qid),mw.wikibase.getSitelink(qid) if label then if sitelink then local target = mw.title.new(sitelink) if target==title or (target.isRedirect and target.redirectTarget==title) then -- do not link return label else -- make wikilink to article return '[[' .. sitelink .. '|' .. label .. ']]' end else return label end else auxCats = auxCats .. needsAttention('L') return qid end end if namespace == 0 then qid = mw.wikibase.getEntityIdForCurrentPage() end if qid then -- article is connected to Wikidata item if parentArgs.qid and (resolveQID(parentArgs.qid) ~= qid) then -- non-matching qid parameter auxCats = auxCats .. needsAttention('D') end else -- page is not connected to any Wikidata item qid = resolveQID(parentArgs.qid) -- check qid parameter if no wikidata item is connected if qid then -- qid parameter is valid, set topic to display topic = mw.wikibase.getLabel(qid) if topic then if mw.ustring.lower(title.subpageText) == mw.ustring.lower(topic) then -- suppress topic display if subpagename equals topic up to case change topic = nil end if topic and mw.wikibase.getSitelink(qid) then -- make wikilink to article topic = '[[' .. mw.wikibase.getSitelink(qid) .. '|' .. topic .. ']]' end else auxCats = auxCats .. needsAttention('L') end elseif parentArgs.qid and parentArgs.qid~='' then -- invalid qid has been supplied, add to tracking cat auxCats = auxCats .. needsAttention('Q') end end local qids = {} -- setup any additional QIDs if parentArgs.additional=='auto' and qid then -- check P527 for parts to add additional qids local checkparts = function(property) local parts = mw.wikibase.getBestStatements(qid,property) if parts then for _,part in ipairs(parts) do if part.mainsnak.datavalue and part.mainsnak.datavalue.value.id then local resolvedqid = resolveQID(part.mainsnak.datavalue.value.id) if resolvedqid then table.insert(qids,resolvedqid) end end end end end for _,part in ipairs(config.auto_additional) do checkparts('P'..tostring(part)) end elseif parentArgs.additional and parentArgs.additional ~= '' then for _,v in ipairs(mw.text.split(parentArgs.additional,"%s*,%s*")) do v = resolveQID(v) if v then if v == qid then -- duplicate of qid parameter auxCats = auxCats .. needsAttention('R') end table.insert(qids,v) else -- invalid QID specified auxCats = auxCats .. needsAttention('A') end end end local sections = {} local localparams = false local numsections = 0 for _,_ in ipairs(config.sections) do numsections = numsections + 1 end for _ = 1,#qids+numsections do table.insert(sections,{}) end local qslink = '' -- setup link to add using QuickStatements -- check which identifiers to show/suppress in template local show = {} -- setup list local showall = true local function stripP(pid) if pid:match("^[Pp]%d+$") then pid = mw.ustring.gsub(pid,'[Pp]','') --strip P from property number end if pid:match("^%d+$") then return tonumber(pid) end end local function addshowlist(list) if list and list ~= '' then for _,v in ipairs(mw.text.split(string.lower(list),"%s*,%s*")) do local vprop = stripP(v) if vprop then -- e.g. show=P214 to show one particular property show[vprop] = true else -- e.g. show=arts to use whitelist if config.whitelists[v] then for _,w in ipairs(config.whitelists[v].properties) do show[w] = true end end end end showall = false end end addshowlist(frame.args.show) -- check show= parameter on wrapper template addshowlist(parentArgs.show or parentArgs.country) -- check show parameter on article template if parentArgs.suppress then local suppresslist = mw.text.split(parentArgs.suppress,"%s*,%s*") -- split parameter by comma for _,v in ipairs(suppresslist) do v = stripP(string.upper(v)) if v then show[v] = false auxCats = auxCats .. '[[' .. config.i18n.category .. ':' .. config.i18n.suppressedcat .. ']]' else auxCats = auxCats .. needsAttention('P') end end end local function makeSections(qid,addit) local tval = {} local function parameter_is_used(property) local used = false if property then if tval[property] then if tval[property][1] then used = true end elseif tval[property] == false then -- property has been manually suppressed used = true end end return used end for _, params in ipairs(conf) do tval[params.property] = getIdsFromWikidata(qid, 'P' .. params.property) -- setup table for values with property number as key local showb = true if (show[params.property] == nil) and (show[string.upper(params[1])] == nil ) then showb = showall -- if not specified then depends on showall elseif (show[params.property] == false) or (show[string.upper(params[1])] == false) then -- if either are false then id will be suppressed showb = false end if not showb then tval[params.property] = false -- indicates the identifier is suppressed elseif not addit then local val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]] if val and val~='' then -- add local parameter to list if not already in localparams = true local bnew = true for _, w in pairs(tval[params.property]) do if val == w.id then bnew = false end end if bnew then -- add new value to table if qid then qslink = qslink .. '%7C%7C' .. qid .. '%7CP' .. params.property .. '%7C%22' .. mw.uri.encode(val,"PATH") .. '%22%7CS143%7CQ328' end table.insert(tval[params.property],{id=val,name=''}) end end end local suppress = false if params.suppressedbyproperty then for _,sc in ipairs(params.suppressedbyproperty) do if parameter_is_used(sc) then suppress = true end end end if tval[params.property] ~= false and not suppress then local tlinks = {} -- setup table for links local nextIdVal = 1 local row = '' for _,val in ipairs(tval[params.property]) do local link = _makelink(params,val,nextIdVal,qid) row = row .. link table.insert(tlinks,link) nextIdVal = nextIdVal + 1 end if nextIdVal>=2 then row = row .. '\n' table.insert(sections[addit or params.section],row) rct = true end end end end local function pencil(qid) if not qid then return '' end local args = { pid = 'identifiers' } -- #target the list of identifiers args.qid = qid return require('Module:EditAtWikidata')._showMessage(args) end makeSections(qid,false) for c = 1,#qids do makeSections(qids[c],numsections+c) end --configure Navbox local outString = '' if rct or localparams then -- there is at least one link to display local Navbox = require('Module:Navbox') local sect,lastsect = 0,0 local navboxArgs = { name = 'Authority control', navboxclass = 'authority-control', bodyclass = 'hlist', state = parentArgs.state or config.i18n.autocollapse, navbar = 'off' } for c=1,numsections+#qids do if #sections[c] ~= 0 then -- section is non-empty sect = sect + 1 lastsect = c local sectname if c <= numsections then -- regular section sectname = config.sections[c].name else -- section from additional qid local qid = qids[c-numsections] sectname = wikilink(qid) .. pencil(qid) end navboxArgs['group' .. c] = sectname navboxArgs['list' .. c] = table.concat(sections[c]) end end if localparams then lastsect = lastsect + 1 sect = sect + 1 navboxArgs['group' .. lastsect] = config.i18n.warning local warning = frame:expandTemplate{title = config.i18n.errortemplate, args = {config.i18n.localparams}} if qslink ~= '' then warning = warning .. ' ' .. config.i18n.movetowd .. '<span class="qs autoconfirmed-show">&#32;[[File:Commons to Wikidata QuickStatements.svg|20px|link=https://quickstatements.toolforge.org/#/v1=' .. qslink .. '|' .. config.i18n.addtowd .. ']]</span>' elseif not qid then if namespace == 0 then warning = warning .. ' ' .. config.i18n.connecttowd elseif namespace==14 or namespace==2 or namespace==118 then warning = warning .. ' ' .. config.i18n.qidcode end end navboxArgs['list' .. lastsect] = warning end if topic then -- display in expanded form with topic navboxArgs.title = config.i18n.aclink .. ' &ndash; ' .. topic .. pencil(qid) elseif sect == 1 then -- special display when only one section if lastsect <= numsections then if config.sections[lastsect].hidelabelwhenalone then -- no special label when only general or other IDs are present navboxArgs['group' .. lastsect] = config.i18n.aclink .. pencil(qid) else -- other regular section navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] .. pencil(qid) end else -- section from additional qid navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] end else -- add title to navbox navboxArgs.title = config.i18n.aclink .. pencil(qid) end outString = Navbox._navbox(navboxArgs) end if parentArgs.state and parentArgs.state~='' and parentArgs.state~=config.i18n.collapsed and parentArgs.state~=config.i18n.expanded and parentArgs.state~=config.i18n.autocollapse then --invalid state parameter auxCats = auxCats .. needsAttention('S') end if testcases then auxCats = mw.ustring.gsub(auxCats, '(%[%[)(' .. config.i18n.category .. ')', '%1:%2') --for easier checking end --out outString = outString..auxCats if namespace ~= 0 then outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':' .. config.i18n.Articles .. ')([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4') outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':' .. config.i18n.All_articles .. ')([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4') end local check = require('Module:Check for unknown parameters')._check local sortkey if namespace == 0 then sortkey = '*' .. title.text else sortkey = title.fullText end outString = outString .. check({ ['unknown'] = '[[' .. config.i18n.category .. ':' .. config.i18n.pageswithparams .. '|' .. sortkey .. ']]', ['preview'] = config.i18n.previewwarning, 'show', 'country', 'suppress', 'additional', 'qid', 'state' }, parentArgs) return outString end p.makelink = function(conf,val,nextid,qid) return _makelink(conf,val,nextid,qid) end return p 53aaca83d7c22230cefa966b7911d2ab311588a9 Template:See also 10 1047 2293 2292 2023-10-01T14:16:59Z Führerredux 2 1 revision imported from [[:wikipedia:Template:See_also]] wikitext text/x-wiki <includeonly>{{#invoke:Labelled list hatnote|labelledList|See also}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 74d2ab6a0df5605fbe2085c405925ec659be52b7 Module:Wd 828 1048 2295 2294 2023-10-01T14:17:02Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Wd]] Scribunto text/plain -- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]]. require("strict") local p = {} local arg = ... local i18n local function loadI18n(aliasesP, frame) local title if frame then -- current module invoked by page/template, get its title from frame title = frame:getTitle() else -- current module included by other module, get its title from ... title = arg end if not i18n then i18n = require(title .. "/i18n").init(aliasesP) end end p.claimCommands = { property = "property", properties = "properties", qualifier = "qualifier", qualifiers = "qualifiers", reference = "reference", references = "references" } p.generalCommands = { label = "label", title = "title", description = "description", alias = "alias", aliases = "aliases", badge = "badge", badges = "badges" } p.flags = { linked = "linked", short = "short", raw = "raw", multilanguage = "multilanguage", unit = "unit", ------------- preferred = "preferred", normal = "normal", deprecated = "deprecated", best = "best", future = "future", current = "current", former = "former", edit = "edit", editAtEnd = "edit@end", mdy = "mdy", single = "single", sourced = "sourced" } p.args = { eid = "eid", page = "page", date = "date" } local aliasesP = { coord = "P625", ----------------------- image = "P18", author = "P50", authorNameString = "P2093", publisher = "P123", importedFrom = "P143", wikimediaImportURL = "P4656", statedIn = "P248", pages = "P304", language = "P407", hasPart = "P527", publicationDate = "P577", startTime = "P580", endTime = "P582", chapter = "P792", retrieved = "P813", referenceURL = "P854", sectionVerseOrParagraph = "P958", archiveURL = "P1065", title = "P1476", formatterURL = "P1630", quote = "P1683", shortName = "P1813", definingFormula = "P2534", archiveDate = "P2960", inferredFrom = "P3452", typeOfReference = "P3865", column = "P3903", subjectNamedAs = "P1810", wikidataProperty = "P1687", publishedIn = "P1433" } local aliasesQ = { percentage = "Q11229", prolepticJulianCalendar = "Q1985786", citeWeb = "Q5637226", citeQ = "Q22321052" } local parameters = { property = "%p", qualifier = "%q", reference = "%r", alias = "%a", badge = "%b", separator = "%s", general = "%x" } local formats = { property = "%p[%s][%r]", qualifier = "%q[%s][%r]", reference = "%r", propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]", alias = "%a[%s]", badge = "%b[%s]" } local hookNames = { -- {level_1, level_2} [parameters.property] = {"getProperty"}, [parameters.reference] = {"getReferences", "getReference"}, [parameters.qualifier] = {"getAllQualifiers"}, [parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"}, [parameters.alias] = {"getAlias"}, [parameters.badge] = {"getBadge"} } -- default value objects, should NOT be mutated but instead copied local defaultSeparators = { ["sep"] = {" "}, ["sep%s"] = {","}, ["sep%q"] = {"; "}, ["sep%q\\d"] = {", "}, ["sep%r"] = nil, -- none ["punc"] = nil -- none } local rankTable = { ["preferred"] = 1, ["normal"] = 2, ["deprecated"] = 3 } local function replaceAlias(id) if aliasesP[id] then id = aliasesP[id] end return id end local function errorText(code, param) local text = i18n["errors"][code] if param then text = mw.ustring.gsub(text, "$1", param) end return text end local function throwError(errorMessage, param) error(errorText(errorMessage, param)) end local function replaceDecimalMark(num) return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1) end local function padZeros(num, numDigits) local numZeros local negative = false if num < 0 then negative = true num = num * -1 end num = tostring(num) numZeros = numDigits - num:len() for _ = 1, numZeros do num = "0"..num end if negative then num = "-"..num end return num end local function replaceSpecialChar(chr) if chr == '_' then -- replace underscores with spaces return ' ' else return chr end end local function replaceSpecialChars(str) local chr local esc = false local strOut = "" for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then esc = true else strOut = strOut .. replaceSpecialChar(chr) end else strOut = strOut .. chr esc = false end end return strOut end local function buildWikilink(target, label) if not label or target == label then return "[[" .. target .. "]]" else return "[[" .. target .. "|" .. label .. "]]" end end -- used to make frame.args mutable, to replace #frame.args (which is always 0) -- with the actual amount and to simply copy tables local function copyTable(tIn) if not tIn then return nil end local tOut = {} for i, v in pairs(tIn) do tOut[i] = v end return tOut end -- used to merge output arrays together; -- note that it currently mutates the first input array local function mergeArrays(a1, a2) for i = 1, #a2 do a1[#a1 + 1] = a2[i] end return a1 end local function split(str, del) local out = {} local i, j = str:find(del) if i and j then out[1] = str:sub(1, i - 1) out[2] = str:sub(j + 1) else out[1] = str end return out end local function parseWikidataURL(url) local id if url:match('^http[s]?://') then id = split(url, "Q") if id[2] then return "Q" .. id[2] end end return nil end local function parseDate(dateStr, precision) precision = precision or "d" local i, j, index, ptr local parts = {nil, nil, nil} if dateStr == nil then return parts[1], parts[2], parts[3] -- year, month, day end -- 'T' for snak values, '/' for outputs with '/Julian' attached i, j = dateStr:find("[T/]") if i then dateStr = dateStr:sub(1, i-1) end local from = 1 if dateStr:sub(1,1) == "-" then -- this is a negative number, look further ahead from = 2 end index = 1 ptr = 1 i, j = dateStr:find("-", from) if i then -- year parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error if parts[index] == -0 then parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead end if precision == "y" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 i, j = dateStr:find("-", ptr) if i then -- month parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) if precision == "m" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 end end if dateStr:sub(ptr) ~= "" then -- day if we have month, month if we have year, or year parts[index] = tonumber(dateStr:sub(ptr), 10) end return parts[1], parts[2], parts[3] -- year, month, day end local function datePrecedesDate(aY, aM, aD, bY, bM, bD) if aY == nil or bY == nil then return nil end aM = aM or 1 aD = aD or 1 bM = bM or 1 bD = bD or 1 if aY < bY then return true end if aY > bY then return false end if aM < bM then return true end if aM > bM then return false end if aD < bD then return true end return false end local function getHookName(param, index) if hookNames[param] then return hookNames[param][index] elseif param:len() > 2 then return hookNames[param:sub(1, 2).."\\d"][index] else return nil end end local function alwaysTrue() return true end -- The following function parses a format string. -- -- The example below shows how a parsed string is structured in memory. -- Variables other than 'str' and 'child' are left out for clarity's sake. -- -- Example: -- "A %p B [%s[%q1]] C [%r] D" -- -- Structure: -- [ -- { -- str = "A " -- }, -- { -- str = "%p" -- }, -- { -- str = " B ", -- child = -- [ -- { -- str = "%s", -- child = -- [ -- { -- str = "%q1" -- } -- ] -- } -- ] -- }, -- { -- str = " C ", -- child = -- [ -- { -- str = "%r" -- } -- ] -- }, -- { -- str = " D" -- } -- ] -- local function parseFormat(str) local chr, esc, param, root, cur, prev, new local params = {} local function newObject(array) local obj = {} -- new object obj.str = "" array[#array + 1] = obj -- array{object} obj.parent = array return obj end local function endParam() if param > 0 then if cur.str ~= "" then cur.str = "%"..cur.str cur.param = true params[cur.str] = true cur.parent.req[cur.str] = true prev = cur cur = newObject(cur.parent) end param = 0 end end root = {} -- array root.req = {} cur = newObject(root) prev = nil esc = false param = 0 for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then endParam() esc = true elseif chr == '%' then endParam() if cur.str ~= "" then cur = newObject(cur.parent) end param = 2 elseif chr == '[' then endParam() if prev and cur.str == "" then table.remove(cur.parent) cur = prev end cur.child = {} -- new array cur.child.req = {} cur.child.parent = cur cur = newObject(cur.child) elseif chr == ']' then endParam() if cur.parent.parent then new = newObject(cur.parent.parent.parent) if cur.str == "" then table.remove(cur.parent) end cur = new end else if param > 1 then param = param - 1 elseif param == 1 then if not chr:match('%d') then endParam() end end cur.str = cur.str .. replaceSpecialChar(chr) end else cur.str = cur.str .. chr esc = false end prev = nil end endParam() -- make sure that at least one required parameter has been defined if not next(root.req) then throwError("missing-required-parameter") end -- make sure that the separator parameter "%s" is not amongst the required parameters if root.req[parameters.separator] then throwError("extra-required-parameter", parameters.separator) end return root, params end local function sortOnRank(claims) local rankPos local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default) local sorted = {} for _, v in ipairs(claims) do rankPos = rankTable[v.rank] or 4 ranks[rankPos][#ranks[rankPos] + 1] = v end sorted = ranks[1] sorted = mergeArrays(sorted, ranks[2]) sorted = mergeArrays(sorted, ranks[3]) return sorted end local Config = {} -- allows for recursive calls function Config:new() local cfg = {} setmetatable(cfg, self) self.__index = self cfg.separators = { -- single value objects wrapped in arrays so that we can pass by reference ["sep"] = {copyTable(defaultSeparators["sep"])}, ["sep%s"] = {copyTable(defaultSeparators["sep%s"])}, ["sep%q"] = {copyTable(defaultSeparators["sep%q"])}, ["sep%r"] = {copyTable(defaultSeparators["sep%r"])}, ["punc"] = {copyTable(defaultSeparators["punc"])} } cfg.entity = nil cfg.entityID = nil cfg.propertyID = nil cfg.propertyValue = nil cfg.qualifierIDs = {} cfg.qualifierIDsAndValues = {} cfg.bestRank = true cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false cfg.foundRank = #cfg.ranks cfg.flagBest = false cfg.flagRank = false cfg.periods = {true, true, true} -- future = true, current = true, former = true cfg.flagPeriod = false cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day} cfg.mdyDate = false cfg.singleClaim = false cfg.sourcedOnly = false cfg.editable = false cfg.editAtEnd = false cfg.inSitelinks = false cfg.langCode = mw.language.getContentLanguage().code cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode) cfg.langObj = mw.language.new(cfg.langCode) cfg.siteID = mw.wikibase.getGlobalSiteId() cfg.states = {} cfg.states.qualifiersCount = 0 cfg.curState = nil cfg.prefetchedRefs = nil return cfg end local State = {} function State:new(cfg, type) local stt = {} setmetatable(stt, self) self.__index = self stt.conf = cfg stt.type = type stt.results = {} stt.parsedFormat = {} stt.separator = {} stt.movSeparator = {} stt.puncMark = {} stt.linked = false stt.rawValue = false stt.shortName = false stt.anyLanguage = false stt.unitOnly = false stt.singleValue = false return stt end -- if id == nil then item connected to current page is used function Config:getLabel(id, raw, link, short) local label = nil local prefix, title= "", nil if not id then id = mw.wikibase.getEntityIdForCurrentPage() if not id then return "" end end id = id:upper() -- just to be sure if raw then -- check if given id actually exists if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then label = id end prefix, title = "d:Special:EntityPage/", label -- may be nil else -- try short name first if requested if short then label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name if label == "" then label = nil end end -- get label if not label then label = mw.wikibase.getLabelByLang(id, self.langCode) -- XXX: should use fallback labels? end end if not label then label = "" elseif link then -- build a link if requested if not title then if id:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(id) elseif id:sub(1,1) == "P" then -- properties have no sitelink, link to Wikidata instead prefix, title = "d:Special:EntityPage/", id end end label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup if title then label = buildWikilink(prefix .. title, label) end end return label end function Config:getEditIcon() local value = "" local prefix = "" local front = "&nbsp;" local back = "" if self.entityID:sub(1,1) == "P" then prefix = "Property:" end if self.editAtEnd then front = '<span style="float:' if self.langObj:isRTL() then front = front .. 'left' else front = front .. 'right' end front = front .. '">' back = '</span>' end value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode if self.propertyID then value = value .. "#" .. self.propertyID elseif self.inSitelinks then value = value .. "#sitelinks-wikipedia" end value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]" return front .. value .. back end -- used to create the final output string when it's all done, so that for references the -- function extensionTag("ref", ...) is only called when they really ended up in the final output function Config:concatValues(valuesArray) local outString = "" local j, skip for i = 1, #valuesArray do -- check if this is a reference if valuesArray[i].refHash then j = i - 1 skip = false -- skip this reference if it is part of a continuous row of references that already contains the exact same reference while valuesArray[j] and valuesArray[j].refHash do if valuesArray[i].refHash == valuesArray[j].refHash then skip = true break end j = j - 1 end if not skip then -- add <ref> tag with the reference's hash as its name (to deduplicate references) outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash}) end else outString = outString .. valuesArray[i][1] end end return outString end function Config:convertUnit(unit, raw, link, short, unitOnly) local space = " " local label = "" local itemID if unit == "" or unit == "1" then return nil end if unitOnly then space = "" end itemID = parseWikidataURL(unit) if itemID then if itemID == aliasesQ.percentage then return "%" else label = self:getLabel(itemID, raw, link, short) if label ~= "" then return space .. label end end end return "" end function State:getValue(snak) return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2)) end function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type) if snak.snaktype == 'value' then local datatype = snak.datavalue.type local subtype = snak.datatype local datavalue = snak.datavalue.value if datatype == 'string' then if subtype == 'url' and link then -- create link explicitly if raw then -- will render as a linked number like [1] return "[" .. datavalue .. "]" else return "[" .. datavalue .. " " .. datavalue .. "]" end elseif subtype == 'commonsMedia' then if link then return buildWikilink("c:File:" .. datavalue, datavalue) elseif not raw then return "[[File:" .. datavalue .. "]]" else return datavalue end elseif subtype == 'geo-shape' and link then return buildWikilink("c:" .. datavalue, datavalue) elseif subtype == 'math' and not raw then local attribute = nil if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then attribute = {qid = self.entityID} end return mw.getCurrentFrame():extensionTag("math", datavalue, attribute) elseif subtype == 'external-id' and link then local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL if url ~= "" then url = mw.ustring.gsub(url, "$1", datavalue) return "[" .. url .. " " .. datavalue .. "]" else return datavalue end else return datavalue end elseif datatype == 'monolingualtext' then if anyLang or datavalue['language'] == self.langCode then return datavalue['text'] else return nil end elseif datatype == 'quantity' then local value = "" local unit if not unitOnly then -- get value and strip + signs from front value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1") if raw then return value end -- replace decimal mark based on locale value = replaceDecimalMark(value) -- add delimiters for readability value = i18n.addDelimiters(value) end unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly) if unit then value = value .. unit end return value elseif datatype == 'time' then local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr local yFactor = 1 local sign = 1 local prefix = "" local suffix = "" local mayAddCalendar = false local calendar = "" local precision = datavalue['precision'] if precision == 11 then p = "d" elseif precision == 10 then p = "m" else p = "y" yFactor = 10^(9-precision) end y, m, d = parseDate(datavalue['time'], p) if y < 0 then sign = -1 y = y * sign end -- if precision is tens/hundreds/thousands/millions/billions of years if precision <= 8 then yDiv = y / yFactor -- if precision is tens/hundreds/thousands of years if precision >= 6 then mayAddCalendar = true if precision <= 7 then -- round centuries/millenniums up (e.g. 20th century or 3rd millennium) yRound = math.ceil(yDiv) if not raw then if precision == 6 then suffix = i18n['datetime']['suffixes']['millennium'] else suffix = i18n['datetime']['suffixes']['century'] end suffix = i18n.getOrdinalSuffix(yRound) .. suffix else -- if not verbose, take the first year of the century/millennium -- (e.g. 1901 for 20th century or 2001 for 3rd millennium) yRound = (yRound - 1) * yFactor + 1 end else -- precision == 8 -- round decades down (e.g. 2010s) yRound = math.floor(yDiv) * yFactor if not raw then prefix = i18n['datetime']['prefixes']['decade-period'] suffix = i18n['datetime']['suffixes']['decade-period'] end end if raw and sign < 0 then -- if BCE then compensate for "counting backwards" -- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE) yRound = yRound + yFactor - 1 end else local yReFactor, yReDiv, yReRound -- round to nearest for tens of thousands of years or more yRound = math.floor(yDiv + 0.5) if yRound == 0 then if precision <= 2 and y ~= 0 then yReFactor = 1e6 yReDiv = y / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years only if we have a whole number of them precision = 3 yFactor = yReFactor yRound = yReRound end end if yRound == 0 then -- otherwise, take the unrounded (original) number of years precision = 5 yFactor = 1 yRound = y mayAddCalendar = true end end if precision >= 1 and y ~= 0 then yFull = yRound * yFactor yReFactor = 1e9 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to billions of years if we're in that range precision = 0 yFactor = yReFactor yRound = yReRound else yReFactor = 1e6 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years if we're in that range precision = 3 yFactor = yReFactor yRound = yReRound end end end if not raw then if precision == 3 then suffix = i18n['datetime']['suffixes']['million-years'] elseif precision == 0 then suffix = i18n['datetime']['suffixes']['billion-years'] else yRound = yRound * yFactor if yRound == 1 then suffix = i18n['datetime']['suffixes']['year'] else suffix = i18n['datetime']['suffixes']['years'] end end else yRound = yRound * yFactor end end else yRound = y mayAddCalendar = true end if mayAddCalendar then calendarID = parseWikidataURL(datavalue['calendarmodel']) if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then if not raw then if link then calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")" else calendar = " ("..i18n['datetime']['julian']..")" end else calendar = "/"..i18n['datetime']['julian'] end end end if not raw then local ce = nil if sign < 0 then ce = i18n['datetime']['BCE'] elseif precision <= 5 then ce = i18n['datetime']['CE'] end if ce then if link then ce = buildWikilink(i18n['datetime']['common-era'], ce) end suffix = suffix .. " " .. ce end value = tostring(yRound) if m then dateStr = self.langObj:formatDate("F", "1-"..m.."-1") if d then if self.mdyDate then dateStr = dateStr .. " " .. d .. "," else dateStr = d .. " " .. dateStr end end value = dateStr .. " " .. value end value = prefix .. value .. suffix .. calendar else value = padZeros(yRound * sign, 4) if m then value = value .. "-" .. padZeros(m, 2) if d then value = value .. "-" .. padZeros(d, 2) end end value = value .. calendar end return value elseif datatype == 'globecoordinate' then -- logic from https://github.com/DataValues/Geo (v4.0.1) local precision, unitsPerDegree, numDigits, strFormat, value, globe local latitude, latConv, latValue, latLink local longitude, lonConv, lonValue, lonLink local latDirection, latDirectionN, latDirectionS, latDirectionEN local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN local degSymbol, minSymbol, secSymbol, separator local latDegrees = nil local latMinutes = nil local latSeconds = nil local lonDegrees = nil local lonMinutes = nil local lonSeconds = nil local latDegSym = "" local latMinSym = "" local latSecSym = "" local lonDegSym = "" local lonMinSym = "" local lonSecSym = "" local latDirectionEN_N = "N" local latDirectionEN_S = "S" local lonDirectionEN_E = "E" local lonDirectionEN_W = "W" if not raw then latDirectionN = i18n['coord']['latitude-north'] latDirectionS = i18n['coord']['latitude-south'] lonDirectionE = i18n['coord']['longitude-east'] lonDirectionW = i18n['coord']['longitude-west'] degSymbol = i18n['coord']['degrees'] minSymbol = i18n['coord']['minutes'] secSymbol = i18n['coord']['seconds'] separator = i18n['coord']['separator'] else latDirectionN = latDirectionEN_N latDirectionS = latDirectionEN_S lonDirectionE = lonDirectionEN_E lonDirectionW = lonDirectionEN_W degSymbol = "/" minSymbol = "/" secSymbol = "/" separator = "/" end latitude = datavalue['latitude'] longitude = datavalue['longitude'] if latitude < 0 then latDirection = latDirectionS latDirectionEN = latDirectionEN_S latitude = math.abs(latitude) else latDirection = latDirectionN latDirectionEN = latDirectionEN_N end if longitude < 0 then lonDirection = lonDirectionW lonDirectionEN = lonDirectionEN_W longitude = math.abs(longitude) else lonDirection = lonDirectionE lonDirectionEN = lonDirectionEN_E end precision = datavalue['precision'] if not precision or precision <= 0 then precision = 1 / 3600 -- precision not set (correctly), set to arcsecond end -- remove insignificant detail latitude = math.floor(latitude / precision + 0.5) * precision longitude = math.floor(longitude / precision + 0.5) * precision if precision >= 1 - (1 / 60) and precision < 1 then precision = 1 elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then precision = 1 / 60 end if precision >= 1 then unitsPerDegree = 1 elseif precision >= (1 / 60) then unitsPerDegree = 60 else unitsPerDegree = 3600 end numDigits = math.ceil(-math.log10(unitsPerDegree * precision)) if numDigits <= 0 then numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead end strFormat = "%." .. numDigits .. "f" if precision >= 1 then latDegrees = strFormat:format(latitude) lonDegrees = strFormat:format(longitude) if not raw then latDegSym = replaceDecimalMark(latDegrees) .. degSymbol lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol else latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol end else latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits if precision >= (1 / 60) then latMinutes = latConv lonMinutes = lonConv else latSeconds = latConv lonSeconds = lonConv latMinutes = math.floor(latSeconds / 60) lonMinutes = math.floor(lonSeconds / 60) latSeconds = strFormat:format(latSeconds - (latMinutes * 60)) lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60)) if not raw then latSecSym = replaceDecimalMark(latSeconds) .. secSymbol lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol else latSecSym = latSeconds .. secSymbol lonSecSym = lonSeconds .. secSymbol end end latDegrees = math.floor(latMinutes / 60) lonDegrees = math.floor(lonMinutes / 60) latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol latMinutes = latMinutes - (latDegrees * 60) lonMinutes = lonMinutes - (lonDegrees * 60) if precision >= (1 / 60) then latMinutes = strFormat:format(latMinutes) lonMinutes = strFormat:format(lonMinutes) if not raw then latMinSym = replaceDecimalMark(latMinutes) .. minSymbol lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end end latValue = latDegSym .. latMinSym .. latSecSym .. latDirection lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection value = latValue .. separator .. lonValue if link then globe = parseWikidataURL(datavalue['globe']) if globe then globe = mw.wikibase.getLabelByLang(globe, "en"):lower() else globe = "earth" end latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_") lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_") value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."&params="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]" end return value elseif datatype == 'wikibase-entityid' then local label local itemID = datavalue['numeric-id'] if subtype == 'wikibase-item' then itemID = "Q" .. itemID elseif subtype == 'wikibase-property' then itemID = "P" .. itemID else return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>' end label = self:getLabel(itemID, raw, link, short) if label == "" then label = nil end return label else return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>' end elseif snak.snaktype == 'somevalue' and not noSpecial then if raw then return " " -- single space represents 'somevalue' else return i18n['values']['unknown'] end elseif snak.snaktype == 'novalue' and not noSpecial then if raw then return "" -- empty string represents 'novalue' else return i18n['values']['none'] end else return nil end end function Config:getSingleRawQualifier(claim, qualifierID) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end if qualifiers and qualifiers[1] then return self:getValue(qualifiers[1], true) -- raw = true else return nil end end function Config:snakEqualsValue(snak, value) local snakValue = self:getValue(snak, true) -- raw = true if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end return snakValue == value end function Config:setRank(rank) local rankPos if rank == p.flags.best then self.bestRank = true self.flagBest = true -- mark that 'best' flag was given return end if rank:sub(1,9) == p.flags.preferred then rankPos = 1 elseif rank:sub(1,6) == p.flags.normal then rankPos = 2 elseif rank:sub(1,10) == p.flags.deprecated then rankPos = 3 else return end -- one of the rank flags was given, check if another one was given before if not self.flagRank then self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before self.flagRank = true -- mark that a rank flag was given end if rank:sub(-1) == "+" then for i = rankPos, 1, -1 do self.ranks[i] = true end elseif rank:sub(-1) == "-" then for i = rankPos, #self.ranks do self.ranks[i] = true end else self.ranks[rankPos] = true end end function Config:setPeriod(period) local periodPos if period == p.flags.future then periodPos = 1 elseif period == p.flags.current then periodPos = 2 elseif period == p.flags.former then periodPos = 3 else return end -- one of the period flags was given, check if another one was given before if not self.flagPeriod then self.periods = {false, false, false} -- no other period flag given before, so unset periods self.flagPeriod = true -- mark that a period flag was given end self.periods[periodPos] = true end function Config:qualifierMatches(claim, id, value) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[id] end if qualifiers then for _, v in pairs(qualifiers) do if self:snakEqualsValue(v, value) then return true end end elseif value == "" then -- if the qualifier is not present then treat it the same as the special value 'novalue' return true end return false end function Config:rankMatches(rankPos) if self.bestRank then return (self.ranks[rankPos] and self.foundRank >= rankPos) else return self.ranks[rankPos] end end function Config:timeMatches(claim) local startTime = nil local startTimeY = nil local startTimeM = nil local startTimeD = nil local endTime = nil local endTimeY = nil local endTimeM = nil local endTimeD = nil if self.periods[1] and self.periods[2] and self.periods[3] then -- any time return true end startTime = self:getSingleRawQualifier(claim, aliasesP.startTime) if startTime and startTime ~= "" and startTime ~= " " then startTimeY, startTimeM, startTimeD = parseDate(startTime) end endTime = self:getSingleRawQualifier(claim, aliasesP.endTime) if endTime and endTime ~= "" and endTime ~= " " then endTimeY, endTimeM, endTimeD = parseDate(endTime) end if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then -- invalidate end time if it precedes start time endTimeY = nil endTimeM = nil endTimeD = nil end if self.periods[1] then -- future if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then return true end end if self.periods[2] then -- current if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and (endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then return true end end if self.periods[3] then -- former if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then return true end end return false end function Config:processFlag(flag) if not flag then return false end if flag == p.flags.linked then self.curState.linked = true return true elseif flag == p.flags.raw then self.curState.rawValue = true if self.curState == self.states[parameters.reference] then -- raw reference values end with periods and require a separator (other than none) self.separators["sep%r"][1] = {" "} end return true elseif flag == p.flags.short then self.curState.shortName = true return true elseif flag == p.flags.multilanguage then self.curState.anyLanguage = true return true elseif flag == p.flags.unit then self.curState.unitOnly = true return true elseif flag == p.flags.mdy then self.mdyDate = true return true elseif flag == p.flags.single then self.singleClaim = true return true elseif flag == p.flags.sourced then self.sourcedOnly = true return true elseif flag == p.flags.edit then self.editable = true return true elseif flag == p.flags.editAtEnd then self.editable = true self.editAtEnd = true return true elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then self:setRank(flag) return true elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then self:setPeriod(flag) return true elseif flag == "" then -- ignore empty flags and carry on return true else return false end end function Config:processFlagOrCommand(flag) local param = "" if not flag then return false end if flag == p.claimCommands.property or flag == p.claimCommands.properties then param = parameters.property elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then self.states.qualifiersCount = self.states.qualifiersCount + 1 param = parameters.qualifier .. self.states.qualifiersCount self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])} elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then param = parameters.reference else return self:processFlag(flag) end if self.states[param] then return false end -- create a new state for each command self.states[param] = State:new(self, param) -- use "%x" as the general parameter name self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p" -- set the separator self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then self.states[param].singleValue = true end self.curState = self.states[param] return true end function Config:processSeparators(args) local sep for i, v in pairs(self.separators) do if args[i] then sep = replaceSpecialChars(args[i]) if sep ~= "" then self.separators[i][1] = {sep} else self.separators[i][1] = nil end end end end function Config:setFormatAndSeparators(state, parsedFormat) state.parsedFormat = parsedFormat state.separator = self.separators["sep"] state.movSeparator = self.separators["sep"..parameters.separator] state.puncMark = self.separators["punc"] end -- determines if a claim has references by prefetching them from the claim using getReferences, -- which applies some filtering that determines if a reference is actually returned, -- and caches the references for later use function State:isSourced(claim) self.conf.prefetchedRefs = self:getReferences(claim) return (#self.conf.prefetchedRefs > 0) end function State:resetCaches() -- any prefetched references of the previous claim must not be used self.conf.prefetchedRefs = nil end function State:claimMatches(claim) local matches, rankPos -- first of all, reset any cached values used for the previous claim self:resetCaches() -- if a property value was given, check if it matches the claim's property value if self.conf.propertyValue then matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue) else matches = true end -- if any qualifier values were given, check if each matches one of the claim's qualifier values for i, v in pairs(self.conf.qualifierIDsAndValues) do matches = (matches and self.conf:qualifierMatches(claim, i, v)) end -- check if the claim's rank and time period match rankPos = rankTable[claim.rank] or 4 matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim)) -- if only claims with references must be returned, check if this one has any if self.conf.sourcedOnly then matches = (matches and self:isSourced(claim)) -- prefetches and caches references end return matches, rankPos end function State:out() local result -- collection of arrays with value objects local valuesArray -- array with value objects local sep = nil -- value object local out = {} -- array with value objects local function walk(formatTable, result) local valuesArray = {} -- array with value objects for i, v in pairs(formatTable.req) do if not result[i] or not result[i][1] then -- we've got no result for a parameter that is required on this level, -- so skip this level (and its children) by returning an empty result return {} end end for _, v in ipairs(formatTable) do if v.param then valuesArray = mergeArrays(valuesArray, result[v.str]) elseif v.str ~= "" then valuesArray[#valuesArray + 1] = {v.str} end if v.child then valuesArray = mergeArrays(valuesArray, walk(v.child, result)) end end return valuesArray end -- iterate through the results from back to front, so that we know when to add separators for i = #self.results, 1, -1 do result = self.results[i] -- if there is already some output, then add the separators if #out > 0 then sep = self.separator[1] -- fixed separator result[parameters.separator] = {self.movSeparator[1]} -- movable separator else sep = nil result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark end valuesArray = walk(self.parsedFormat, result) if #valuesArray > 0 then if sep then valuesArray[#valuesArray + 1] = sep end out = mergeArrays(valuesArray, out) end end -- reset state before next iteration self.results = {} return out end -- level 1 hook function State:getProperty(claim) local value = {self:getValue(claim.mainsnak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getQualifiers(claim, param) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end if qualifiers then -- iterate through claim's qualifier statements to collect their values; -- return array with multiple value objects return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getQualifier(snak) local value = {self:getValue(snak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getAllQualifiers(claim, param, result, hooks) local out = {} -- array with value objects local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object -- iterate through the output of the separate "qualifier(s)" commands for i = 1, self.conf.states.qualifiersCount do -- if a hook has not been called yet, call it now if not result[parameters.qualifier..i] then self:callHook(parameters.qualifier..i, hooks, claim, result) end -- if there is output for this particular "qualifier(s)" command, then add it if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then -- if there is already some output, then add the separator if #out > 0 and sep then out[#out + 1] = sep end out = mergeArrays(out, result[parameters.qualifier..i]) end end return out end -- level 1 hook function State:getReferences(claim) if self.conf.prefetchedRefs then -- return references that have been prefetched by isSourced return self.conf.prefetchedRefs end if claim.references then -- iterate through claim's reference statements to collect their values; -- return array with multiple value objects return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getReference(statement) local key, citeWeb, citeQ, label local params = {} local citeParams = {['web'] = {}, ['q'] = {}} local citeMismatch = {} local useCite = nil local useParams = nil local value = "" local ref = {} local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved local numAuthorParameters = 0 local numAuthorNameStringParameters = 0 local tempLink local additionalRefProperties = {} -- will hold properties of the reference which are not in statement.snaks, namely backup title from "subject named as" and URL from an external ID local wikidataPropertiesOfSource -- will contain "Wikidata property" properties of the item in stated in, if any local version = 4 -- increment this each time the below logic is changed to avoid conflict errors if statement.snaks then -- don't include "imported from", which is added by a bot if statement.snaks[aliasesP.importedFrom] then statement.snaks[aliasesP.importedFrom] = nil end -- don't include "Wikimedia import URL" if statement.snaks[aliasesP.wikimediaImportURL] then statement.snaks[aliasesP.wikimediaImportURL] = nil -- don't include "retrieved" if no "referenceURL" is present, -- as "retrieved" probably belongs to "Wikimedia import URL" if statement.snaks[aliasesP.retrieved] and not statement.snaks[aliasesP.referenceURL] then statement.snaks[aliasesP.retrieved] = nil end end -- don't include "inferred from", which is added by a bot if statement.snaks[aliasesP.inferredFrom] then statement.snaks[aliasesP.inferredFrom] = nil end -- don't include "type of reference" if statement.snaks[aliasesP.typeOfReference] then statement.snaks[aliasesP.typeOfReference] = nil end -- don't include "image" to prevent littering if statement.snaks[aliasesP.image] then statement.snaks[aliasesP.image] = nil end -- don't include "language" if it is equal to the local one if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then statement.snaks[aliasesP.language] = nil end if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then -- "stated in" was given but "reference URL" was not. -- get "Wikidata property" properties from the item in "stated in" -- if any of the returned properties of the external-id datatype is in statement.snaks, generate a URL from it and use the URL in the reference -- find the "Wikidata property" properties in the item from "stated in" wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true) for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then tempLink = self.conf:getValue(statement.snaks[wikidataPropertyOfSource][1], false, true) -- not raw, linked if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL. additionalRefProperties[aliasesP.referenceURL] = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") -- the URL is in wiki markup, so strip the square brackets and the display text statement.snaks[wikidataPropertyOfSource] = nil break end end end end -- don't include "subject named as", but use it as the title when "title" is not present but a URL is if statement.snaks[aliasesP.subjectNamedAs] then if not statement.snaks[aliasesP.title] and (statement.snaks[aliasesP.referenceURL] or additionalRefProperties[aliasesP.referenceURL]) then additionalRefProperties[aliasesP.title] = statement.snaks[aliasesP.subjectNamedAs][1].datavalue.value end statement.snaks[aliasesP.subjectNamedAs] = nil end -- retrieve all the parameters for i in pairs(statement.snaks) do label = "" -- multiple authors may be given if i == aliasesP.author or i == aliasesP.authorNameString then params[i] = self:getReferenceDetails(statement.snaks, i, false, self.linked, true) -- link = true/false, anyLang = true else params[i] = {self:getReferenceDetail(statement.snaks, i, false, (self.linked or (i == aliasesP.statedIn)) and (statement.snaks[i][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true end if #params[i] == 0 then params[i] = nil else referenceEmpty = false if statement.snaks[i][1].datatype == 'external-id' then key = "external-id" label = self.conf:getLabel(i) if label ~= "" then label = label .. " " end else key = i end -- add the parameter to each matching type of citation for j in pairs(citeParams) do -- do so if there was no mismatch with a previous parameter if not citeMismatch[j] then -- check if this parameter is not mismatching itself if i18n['cite'][j][key] then -- continue if an option is available in the corresponding cite template if i18n['cite'][j][key] ~= "" then -- handle non-author properties (and author properties ("author" and "author name string"), if they don't use the same template parameter) if (i ~= aliasesP.author and i ~= aliasesP.authorNameString) or (i18n['cite'][j][aliasesP.author] ~= i18n['cite'][j][aliasesP.authorNameString]) then citeParams[j][i18n['cite'][j][key]] = label .. params[i][1] -- to avoid problems with non-author multiple parameters (if existent), the following old code is retained for k=2, #params[i] do citeParams[j][i18n['cite'][j][key]..k] = label .. params[i][k] end -- handle "author" and "author name string" specially if they use the same template parameter elseif i == aliasesP.author or i == aliasesP.authorNameString then if params[aliasesP.author] ~= nil then numAuthorParameters = #params[aliasesP.author] else numAuthorParameters = 0 end if params[aliasesP.authorNameString] ~= nil then numAuthorNameStringParameters = #params[aliasesP.authorNameString] else numAuthorNameStringParameters = 0 end -- execute only if both "author" and "author name string" satisfy this condition: the property is both in params and in statement.snaks or it is neither in params nor in statement.snaks -- reason: parameters are added to params each iteration of the loop, not before the loop if ((statement.snaks[aliasesP.author] == nil) == (numAuthorParameters == 0)) and ((statement.snaks[aliasesP.authorNameString] == nil) == (numAuthorNameStringParameters == 0)) then for k=1, numAuthorParameters + numAuthorNameStringParameters do if k <= numAuthorParameters then -- now handling the authors from the "author" property citeParams[j][i18n['cite'][j][aliasesP.author]..k] = label .. params[aliasesP.author][k] else -- now handling the authors from "author name string" citeParams[j][i18n['cite'][j][aliasesP.authorNameString]..k] = label .. params[aliasesP.authorNameString][k - numAuthorParameters] end end end end end else citeMismatch[j] = true end end end end end -- use additional properties for i in pairs(additionalRefProperties) do for j in pairs(citeParams) do if not citeMismatch[j] and i18n["cite"][j][i] then citeParams[j][i18n["cite"][j][i]] = additionalRefProperties[i] else citeMismatch[j] = true end end end -- get title of general template for citing web references citeWeb = split(mw.wikibase.getSitelink(aliasesQ.citeWeb) or "", ":")[2] -- split off namespace from front -- get title of template that expands stated-in references into citations citeQ = split(mw.wikibase.getSitelink(aliasesQ.citeQ) or "", ":")[2] -- split off namespace from front -- (1) use the general template for citing web references if there is a match and if at least both "reference URL" and "title" are present if citeWeb and not citeMismatch['web'] and citeParams['web'][i18n['cite']['web'][aliasesP.referenceURL]] and citeParams['web'][i18n['cite']['web'][aliasesP.title]] then useCite = citeWeb useParams = citeParams['web'] -- (2) use the template that expands stated-in references into citations if there is a match and if at least "stated in" is present elseif citeQ and not citeMismatch['q'] and citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] then -- we need the raw "stated in" Q-identifier for the this template citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] = self:getReferenceDetail(statement.snaks, aliasesP.statedIn, true) -- raw = true useCite = citeQ useParams = citeParams['q'] end if useCite and useParams then -- if this module is being substituted then build a regular template call, otherwise expand the template if mw.isSubsting() then for i, v in pairs(useParams) do value = value .. "|" .. i .. "=" .. v end value = "{{" .. useCite .. value .. "}}" else value = mw.getCurrentFrame():expandTemplate{title=useCite, args=useParams} end -- (3) if the citation couldn't be displayed using Cite web or Cite Q, but has properties other than the removed ones, throw an error elseif not referenceEmpty then value = "<span style=\"color: crimson\">" .. errorText("malformed-reference") .. "</span>" end if value ~= "" then value = {value} -- create one value object if not self.rawValue then -- this should become a <ref> tag, so save the reference's hash for later value.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['cite']['version']) + version) end ref = {value} -- wrap the value object in an array end end return ref end -- gets a detail of one particular type for a reference function State:getReferenceDetail(snaks, dType, raw, link, anyLang) local switchLang = anyLang local value = nil if not snaks[dType] then return nil end -- if anyLang, first try the local language and otherwise any language repeat for _, v in ipairs(snaks[dType]) do value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true if value then break end end if value or not anyLang then break end switchLang = not switchLang until anyLang and switchLang return value end -- gets the details of one particular type for a reference function State:getReferenceDetails(snaks, dType, raw, link, anyLang) local values = {} if not snaks[dType] then return {} end for _, v in ipairs(snaks[dType]) do -- if nil is returned then it will not be added to the table values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true end return values end -- level 1 hook function State:getAlias(object) local value = object.value local title = nil if value and self.linked then if self.conf.entityID:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(self.conf.entityID) elseif self.conf.entityID:sub(1,1) == "P" then title = "d:Property:" .. self.conf.entityID end if title then value = buildWikilink(title, value) end end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getBadge(value) value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName) if value == "" then value = nil end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end function State:callHook(param, hooks, statement, result) local valuesArray, refHash -- call a parameter's hook if it has been defined and if it has not been called before if not result[param] and hooks[param] then valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects -- add to the result if #valuesArray > 0 then result[param] = valuesArray result.count = result.count + 1 else result[param] = {} -- an empty array to indicate that we've tried this hook already return true -- miss == true end end return false end -- iterate through claims, claim's qualifiers or claim's references to collect values function State:iterate(statements, hooks, matchHook) matchHook = matchHook or alwaysTrue local matches = false local rankPos = nil local result, gotRequired for _, v in ipairs(statements) do -- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.) matches, rankPos = matchHook(self, v) if matches then result = {count = 0} -- collection of arrays with value objects local function walk(formatTable) local miss for i2, v2 in pairs(formatTable.req) do -- call a hook, adding its return value to the result miss = self:callHook(i2, hooks, v, result) if miss then -- we miss a required value for this level, so return false return false end if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point breaks the loop return true end end for _, v2 in ipairs(formatTable) do if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point prevents further childs from being processed return true end if v2.child then walk(v2.child) end end return true end gotRequired = walk(self.parsedFormat) -- only append the result if we got values for all required parameters on the root level if gotRequired then -- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank if rankPos and self.conf.foundRank > rankPos then self.conf.foundRank = rankPos end -- append the result self.results[#self.results + 1] = result -- break if we only need a single value if self.singleValue then break end end end end return self:out() end local function getEntityId(arg, eid, page, allowOmitPropPrefix) local id = nil local prop = nil if arg then if arg:sub(1,1) == ":" then page = arg eid = nil elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then eid = arg page = nil else prop = arg end end if eid then if eid:sub(1,9):lower() == "property:" then id = replaceAlias(mw.text.trim(eid:sub(10))) if id:sub(1,1):upper() ~= "P" then id = "" end else id = replaceAlias(eid) end elseif page then if page:sub(1,1) == ":" then page = mw.text.trim(page:sub(2)) end id = mw.wikibase.getEntityIdForTitle(page) or "" end if not id then id = mw.wikibase.getEntityIdForCurrentPage() or "" end id = id:upper() if not mw.wikibase.isValidEntityId(id) then id = "" end return id, prop end local function nextArg(args) local arg = args[args.pointer] if arg then args.pointer = args.pointer + 1 return mw.text.trim(arg) else return nil end end local function claimCommand(args, funcName) local cfg = Config:new() cfg:processFlagOrCommand(funcName) -- process first command (== function name) local lastArg, parsedFormat, formatParams, claims, value local hooks = {count = 0} -- set the date if given; -- must come BEFORE processing the flags if args[p.args.date] then cfg.atDate = {parseDate(args[p.args.date])} cfg.periods = {false, true, false} -- change default time constraint to 'current' end -- process flags and commands repeat lastArg = nextArg(args) until not cfg:processFlagOrCommand(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page]) if cfg.entityID == "" then return "" -- we cannot continue without a valid entity ID end cfg.entity = mw.wikibase.getEntity(cfg.entityID) if not cfg.propertyID then cfg.propertyID = nextArg(args) end cfg.propertyID = replaceAlias(cfg.propertyID) if not cfg.entity or not cfg.propertyID then return "" -- we cannot continue without an entity or a property ID end cfg.propertyID = cfg.propertyID:upper() if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then return "" -- there is no use to continue without any claims end claims = cfg.entity.claims[cfg.propertyID] if cfg.states.qualifiersCount > 0 then -- do further processing if "qualifier(s)" command was given if #args - args.pointer + 1 > cfg.states.qualifiersCount then -- claim ID or literal value has been given cfg.propertyValue = nextArg(args) end for i = 1, cfg.states.qualifiersCount do -- check if given qualifier ID is an alias and add it cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper() end elseif cfg.states[parameters.reference] then -- do further processing if "reference(s)" command was given cfg.propertyValue = nextArg(args) end -- check for special property value 'somevalue' or 'novalue' if cfg.propertyValue then cfg.propertyValue = replaceSpecialChars(cfg.propertyValue) if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue' else cfg.propertyValue = mw.text.trim(cfg.propertyValue) end end -- parse the desired format, or choose an appropriate format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given if cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier) else parsedFormat, formatParams = parseFormat(formats.qualifier) end elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.property) else -- "reference(s)" command given parsedFormat, formatParams = parseFormat(formats.reference) end -- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then cfg.separators["sep"..parameters.separator][1] = {";"} end -- if only "reference(s)" has been given, set the default separator to none (except when raw) if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0 and not cfg.states[parameters.reference].rawValue then cfg.separators["sep"][1] = nil end -- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent if cfg.states.qualifiersCount == 1 then cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"] end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hooks that should be called (getProperty, getQualifiers, getReferences); -- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given for i, v in pairs(cfg.states) do -- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q" if formatParams[i] or formatParams[i:sub(1, 2)] then hooks[i] = getHookName(i, 1) hooks.count = hooks.count + 1 end end -- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...); -- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1) hooks.count = hooks.count + 1 end -- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration; -- must come AFTER defining the hooks if not cfg.states[parameters.property] then cfg.states[parameters.property] = State:new(cfg, parameters.property) -- if the "single" flag has been given then this state should be equivalent to "property" (singular) if cfg.singleClaim then cfg.states[parameters.property].singleValue = true end end -- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values, -- which must exist in order to be able to determine if a claim has any references; -- must come AFTER defining the hooks if cfg.sourcedOnly and not cfg.states[parameters.reference] then cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead end -- set the parsed format and the separators (and optional punctuation mark); -- must come AFTER creating the additonal states cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat) -- process qualifier matching values, analogous to cfg.propertyValue for i, v in pairs(args) do i = tostring(i) if i:match('^[Pp]%d+$') or aliasesP[i] then v = replaceSpecialChars(v) -- check for special qualifier value 'somevalue' if v ~= "" and mw.text.trim(v) == "" then v = " " -- single space represents 'somevalue' end cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v end end -- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated) claims = sortOnRank(claims) -- then iterate through the claims to collect values value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook -- if desired, add a clickable icon that may be used to edit the returned values on Wikidata if cfg.editable and value ~= "" then value = value .. cfg:getEditIcon() end return value end local function generalCommand(args, funcName) local cfg = Config:new() cfg.curState = State:new(cfg) local lastArg local value = nil repeat lastArg = nextArg(args) until not cfg:processFlag(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true) if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then return "" -- we cannot continue without an entity end -- serve according to the given command if funcName == p.generalCommands.label then value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName) elseif funcName == p.generalCommands.title then cfg.inSitelinks = true if cfg.entityID:sub(1,1) == "Q" then value = mw.wikibase.getSitelink(cfg.entityID) end if cfg.curState.linked and value then value = buildWikilink(value) end elseif funcName == p.generalCommands.description then value = mw.wikibase.getDescription(cfg.entityID) else local parsedFormat, formatParams local hooks = {count = 0} cfg.entity = mw.wikibase.getEntity(cfg.entityID) if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then cfg.curState.singleValue = true end if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then return "" -- there is no use to continue without any aliasses end local aliases = cfg.entity.aliases[cfg.langCode] -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.alias) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getAlias); -- only define the hook if the parameter ("%a") has been given if formatParams[parameters.alias] then hooks[parameters.alias] = getHookName(parameters.alias, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(aliases, hooks)) elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then return "" -- there is no use to continue without any badges end local badges = cfg.entity.sitelinks[cfg.siteID].badges cfg.inSitelinks = true -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.badge) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getBadge); -- only define the hook if the parameter ("%b") has been given if formatParams[parameters.badge] then hooks[parameters.badge] = getHookName(parameters.badge, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(badges, hooks)) end end value = value or "" if cfg.editable and value ~= "" then -- if desired, add a clickable icon that may be used to edit the returned value on Wikidata value = value .. cfg:getEditIcon() end return value end -- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args) local function establishCommands(commandList, commandFunc) for _, commandName in pairs(commandList) do local function wikitextWrapper(frame) local args = copyTable(frame.args) args.pointer = 1 loadI18n(aliasesP, frame) return commandFunc(args, commandName) end p[commandName] = wikitextWrapper local function luaWrapper(args) args = copyTable(args) args.pointer = 1 loadI18n(aliasesP) return commandFunc(args, commandName) end p["_" .. commandName] = luaWrapper end end establishCommands(p.claimCommands, claimCommand) establishCommands(p.generalCommands, generalCommand) -- main function that is supposed to be used by wrapper templates function p.main(frame) if not mw.wikibase then return nil end local f, args loadI18n(aliasesP, frame) -- get the parent frame to take the arguments that were passed to the wrapper template frame = frame:getParent() or frame if not frame.args[1] then throwError("no-function-specified") end f = mw.text.trim(frame.args[1]) if f == "main" then throwError("main-called-twice") end assert(p["_"..f], errorText('no-such-function', f)) -- copy arguments from immutable to mutable table args = copyTable(frame.args) -- remove the function name from the list table.remove(args, 1) return p["_"..f](args) end return p a84f46cf7d14594003fea6e756cf41b723dd67cd Module:Wd/i18n 828 1049 2297 2296 2023-10-01T14:17:02Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Wd/i18n]] Scribunto text/plain -- The values and functions in this submodule should be localized per wiki. local p = {} function p.init(aliasesP) p = { ["errors"] = { ["unknown-data-type"] = "Unknown or unsupported datatype '$1'.", ["missing-required-parameter"] = "No required parameters defined, needing at least one", ["extra-required-parameter"] = "Parameter '$1' must be defined as optional", ["no-function-specified"] = "You must specify a function to call", -- equal to the standard module error message ["main-called-twice"] = 'The function "main" cannot be called twice', ["no-such-function"] = 'The function "$1" does not exist', -- equal to the standard module error message ["malformed-reference"] = "Error: Unable to display the reference properly. See [[Module:wd/doc#References|the documentation]] for details.[[Category:Module:Wd reference errors]]" }, ["info"] = { ["edit-on-wikidata"] = "Edit this on Wikidata" }, ["numeric"] = { ["decimal-mark"] = ".", ["delimiter"] = "," }, ["datetime"] = { ["prefixes"] = { ["decade-period"] = "" }, ["suffixes"] = { ["decade-period"] = "s", ["millennium"] = " millennium", ["century"] = " century", ["million-years"] = " million years", ["billion-years"] = " billion years", ["year"] = " year", ["years"] = " years" }, ["julian-calendar"] = "Julian calendar", -- linked page title ["julian"] = "Julian", ["BCE"] = "BCE", ["CE"] = "CE", ["common-era"] = "Common Era" -- linked page title }, ["coord"] = { ["latitude-north"] = "N", ["latitude-south"] = "S", ["longitude-east"] = "E", ["longitude-west"] = "W", ["degrees"] = "°", ["minutes"] = "'", ["seconds"] = '"', ["separator"] = ", " }, ["values"] = { ["unknown"] = "unknown", ["none"] = "none" }, ["cite"] = { ["version"] = "4", -- increment this each time the below parameters are changed to avoid conflict errors ["web"] = { -- <= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. "") [aliasesP.statedIn] = "website", [aliasesP.referenceURL] = "url", [aliasesP.publicationDate] = "date", [aliasesP.retrieved] = "access-date", [aliasesP.title] = "title", [aliasesP.archiveURL] = "archive-url", [aliasesP.archiveDate] = "archive-date", [aliasesP.language] = "language", [aliasesP.author] = "author", -- existence of author1, author2, author3, etc. is assumed [aliasesP.authorNameString] = "author", [aliasesP.publisher] = "publisher", [aliasesP.quote] = "quote", [aliasesP.pages] = "pages", -- extra option [aliasesP.publishedIn] = "website" }, ["q"] = { -- <= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. "") [aliasesP.statedIn] = "1", [aliasesP.pages] = "pages", [aliasesP.column] = "at", [aliasesP.chapter] = "chapter", [aliasesP.sectionVerseOrParagraph] = "section", ["external-id"] = "id", -- used for any type of database property ID [aliasesP.title] = "title", [aliasesP.publicationDate] = "date", [aliasesP.retrieved] = "access-date" } } } p.getOrdinalSuffix = function(num) if tostring(num):sub(-2,-2) == '1' then return "th" -- 10th, 11th, 12th, 13th, ... 19th end num = tostring(num):sub(-1) if num == '1' then return "st" elseif num == '2' then return "nd" elseif num == '3' then return "rd" else return "th" end end p.addDelimiters = function(n) local left, num, right = string.match(n, "^([^%d]*%d)(%d*)(.-)$") if left and num and right then return left .. (num:reverse():gsub("(%d%d%d)", "%1" .. p['numeric']['delimiter']):reverse()) .. right else return n end end return p end return p a860785cf3b9ad3ba0c8096d5627eae877d4e9ab Template:Tooltip 10 1050 2299 2298 2023-10-01T14:17:07Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tooltip]] wikitext text/x-wiki <templatestyles src="Template:Tooltip/styles.css" />{{#ifeq:{{yesno-no|{{{link}}}}}|yes |[[{{{1}}}|<span class="rt-commentedText tooltip {{#ifeq:{{yesno-yes|{{{dotted}}}}}|no||tooltip-dotted}} {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|&quot;}}}}">{{{1|}}}</span>]] |<span class="rt-commentedText tooltip {{#ifeq:{{yesno-yes|{{{dotted}}}}}|no||tooltip-dotted}} {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|&quot;}}}}">{{{1|}}}</span> }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using tooltip with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Tooltip]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | class | dotted | id | link | style }}<noinclude> {{Documentation|Template:Abbr/doc}} </noinclude> 0bc4ac1b7ea7d4f2cdbb94b76559770a78cd10d9 Template:Tooltip/styles.css 10 1051 2301 2300 2023-10-01T14:17:08Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tooltip/styles.css]] sanitized-css text/css /* {{pp-template}} */ .tooltip-dotted { border-bottom: 1px dotted; cursor: help; } 567ab0781901eeeb93077ef25052613364378d1e Template:Details 10 1052 2303 2302 2023-10-01T14:17:09Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Details]] wikitext text/x-wiki #REDIRECT [[Template:Further]] {{Redirect category shell| {{R from merge}} }} 1a90a51d85f6cb700979ea38f5f69bee0ff2c85e Template:Replace 10 1053 2305 2304 2023-10-01T14:17:09Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Replace]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:String|replace|source={{{1}}}|{{{2}}}|{{{3}}}|plain={{{plain|true}}}|count={{{count|}}}}}<noinclude> {{documentation}} </noinclude> 4192ba916713e0f44fdfd0f8e0d9d105c0c85472 Template:Wikidata 10 1054 2307 2306 2023-10-01T14:17:09Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Wikidata]] wikitext text/x-wiki <includeonly>{{safesubst:#invoke:Wd|main}}</includeonly><noinclude> {{Documentation}} </noinclude> 5bf277586915dfd4207113978658a5f0bfd87abf Template:Endflatlist 10 1055 2309 2308 2023-10-01T14:17:11Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Endflatlist]] wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{documentation|Template:Flatlist/doc}} </noinclude> 05fe2bc6790622a0a6caf09151a0c0640fed63dd Template:TOC right 10 1056 2311 2310 2023-10-01T14:17:11Z Führerredux 2 1 revision imported from [[:wikipedia:Template:TOC_right]] wikitext text/x-wiki <templatestyles src="Template:TOC_right/styles.css" />{{#if:{{{limit|}}}|<templatestyles src="Template:TOC limit/styles.css" />}}<!-- --><div class="tocright {{#if:{{{clear|}}}|tocright-clear-{{{clear|}}}}} {{#if:{{{limit|}}}|toclimit-{{{limit}}}}}" {{#if:{{{width|{{{1|}}}}}}|style="width: {{{width|{{{1}}}}}};"}}>__TOC__</div><noinclude> {{documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 67c60b46e441afa40d8c4c1227aa6580a0cda2e9 Template:TOC right/styles.css 10 1057 2313 2312 2023-10-01T14:17:13Z Führerredux 2 1 revision imported from [[:wikipedia:Template:TOC_right/styles.css]] sanitized-css text/css /* {{pp-template}} */ /* The TOC is hidden on Minerva (mobile skin) for width < 720px so must also hide this wrapper */ @media all and (max-width: 720px) { body.skin-minerva .tocright { display: none; } .tocright { width: 100% !important; /* fix the inline width while at small resolution */ } } @media all and (min-width: 720px) { .tocright { float: right; clear: right; width: auto; margin: 0 0 0.5em 1em; } .tocright-clear-left { clear: left; } .tocright-clear-both { clear: both; } .tocright-clear-none { clear: none; } } 60435a52ddabf7eb321fa80dbf78c0d63d13f95b Template:Str left 10 1058 2315 2314 2023-10-01T14:17:14Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Str_left]] wikitext text/x-wiki <includeonly>{{safesubst:padleft:|{{{2|1}}}|{{{1}}}}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 2048b0d7b35e156528655b1d090e8b5ffab3f400 Template:Q 10 1059 2317 2316 2023-10-01T14:17:15Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Q]] wikitext text/x-wiki #REDIRECT [[Template:Wikidata entity link]] [[Category:Wikidata templates]] {{Redirect category shell| {{R from template shortcut}} {{R from move}} }} 7f19fdcb2b05d966cd3f0f5f540cf8fa37935869 Template:Wikidata entity link 10 1060 2319 2318 2023-10-01T14:17:15Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Wikidata_entity_link]] wikitext text/x-wiki <includeonly>{{#if:{{{1|}}} | {{#switch:{{padleft:|1|{{uc:{{{1}}}}}}} | Q | P = [[d:Special:EntityPage/{{uc:{{{1}}}}}|{{#invoke:wd|label|{{uc:{{{1}}}}}}} <small>({{uc:{{{1}}}}})</small>]] | #default = [[d:Special:EntityPage/Q{{uc:{{{1}}}}}|{{#invoke:wd|label|Q{{uc:{{{1}}}}}}} <small>(Q{{uc:{{{1|}}}}})</small>]] }} | {{#if:{{#invoke:wd|label|raw}} | [[d:Special:EntityPage/{{#invoke:wd|label|raw}}|{{#invoke:wd|label}} <small>({{#invoke:wd|label|raw}})</small>]] | <small>(no entity)</small> }} }}</includeonly><noinclude>{{Documentation}}</noinclude> 3eaf99f5fdf869bc08932bb8eda9eba23858c9c8 Template:Authority control (arts) 10 1061 2321 2320 2023-10-01T14:17:16Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Authority_control_(arts)]] wikitext text/x-wiki {{#invoke:Authority control | authorityControl | show=arts }}<noinclude> {{documentation}} </noinclude> 9b8aaaf1725393b12ec20ed303eb6ff24f720e7f Template:Collapsible option 10 1062 2323 2322 2023-10-01T14:17:17Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Collapsible_option]] wikitext text/x-wiki This template's '''initial visibility currently defaults to {{param value|{{#switch:{{{default|}}}|collapsed=collapsed|expanded=expanded|autocollapse|#default=autocollapse}}}}''', meaning that {{#switch:{{{default|}}}|collapsed=it is hidden apart from its title bar.|expanded=it is fully visible.|autocollapse|#default=if there is another collapsible item on the page (a [[Wikipedia:Navigation_template#Types|navbox, sidebar]], or [[Help:Collapsing|table with the collapsible attribute]]), it is hidden apart from its title bar; if not, it is fully visible.}} To change this template's initial visibility, the {{para|{{{parameter_name|state}}}}} [[Help:Template#Parameters|parameter]] may be used: <ul> {{#ifeq:{{{default|}}}|collapsed|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}}| |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=collapsed}}</nowiki></code> will show the template collapsed, i.e. hidden apart from its title bar.</li>}} {{#ifeq:{{{default|}}}|expanded|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}} | |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=expanded}}</nowiki></code> will show the template expanded, i.e. fully visible.</li>}} {{#ifeq:{{{default|autocollapse}}}|autocollapse|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}} | |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=autocollapse}}</nowiki></code> will show the template autocollapsed, i.e. if there is another collapsible item on the page (a [[Wikipedia:Navigation_template#Types|navbox, sidebar]], or [[Help:Collapsing|table with the collapsible attribute]]), it is hidden apart from its title bar, but if not, it is fully visible.</li>}}</ul><!-- -->{{#if:{{{align|}}}|{{para|align|{{var|value}}}} is also available; where {{var|value}} can be either <code>right</code> or <code>left</code>. The default is {{kbd|center}}. }}{{#if:{{{title-background|}}}|{{para|title-background|{{var|value}}}} is also available; where {{var|value}} can be either {{kbd|navbox}} or a {{kbd|color}}. The default is {{kbd|none}}, and {{{kbd|navbox}}} defaults to the default navbox color. }}{{#if:{{{width|}}}| {{para|width|{{var|value}}}} is also available; where {{var|value}} can be either {{kbd|{{var|N}} [em/%/px]}} or {{kbd|auto}}. The default is {{kbd|100%}}. }}<!-- Add {{pp-template}} if template page where this template is transcluded is protected: -->{{template other | {{#if:{{PROTECTIONLEVEL:edit}} |{{pp-template|docusage=yes}} | {{#if:{{PROTECTIONLEVEL:move}} |{{pp-move|docusage=yes|small=yes}} }} }} }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> fa727f26d272a237bc7017c83ebd236a8ebb743a Template:Kbd 10 1063 2325 2324 2023-10-01T14:17:18Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Kbd]] wikitext text/x-wiki <kbd {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} style="background:#EEEEEE; {{#if:{{{spacing|}}}| padding-left:{{{padding|0.2em}}}; padding-right:{{{padding|0.2em}}};| letter-spacing:0.05em; padding-left:0.25em; padding-right:0.2em;}}{{#if:{{{style|}}}|{{{style}}}}}" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|user input}}}</kbd><noinclude> <!--Categories go near the bottom of the /doc page.--> {{Documentation}} </noinclude> 4717d3a6d1c5c1b826066ac2a794cc6c92b43ac3 Template:Collapse 10 1064 2327 2326 2023-10-01T14:17:18Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Collapse]] wikitext text/x-wiki {| <!-- Template:Collapse --> class="mw-collapsible mw-archivedtalk {{#switch:{{lc:{{{expand|no}}}}}|uncollapse|uncollapsed|expand|expanded|yes|y=mw-uncollapsed|#default=mw-collapsed}} {{{class|}}}" style="{{{{{|safesubst:}}}#ifeq:{{NAMESPACEE}}|{{ns:0}}|display: none;}}background-color: {{{bg1|transparent}}}; text-align: left; border: {{{border|1px}}} solid {{{b-color|silver}}}; {{{{{|safesubst:}}}#switch:{{{float|}}} | left = margin:0.2em 0.5em 0.2em 0; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; float: left; clear: {{{clear|left}}} | right = margin:0.2em 0 0.2em 0.5em; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; float: right; clear: {{{clear|right}}} | none = margin:0.2em 0; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; clear: {{{clear|none}}} | center | centre = margin:0.2em auto; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; clear: {{{clear|both}}} | #default = margin: 0.2em auto auto; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|100%}}; clear: {{{clear|both}}} }}; padding: 1px;" |- ! style="background-color: {{{background|{{{bg|#F0F2F5}}}}}}; font-size:87%; padding:0.2em 0.3em; text-align: {{{{{|safesubst:}}}#if:{{{left|}}}|left|{{{{{|safesubst:}}}#if:{{{center|}}}|center|left}}}}; {{{{{|safesubst:}}}#if:{{{fc|}}}|color: {{{fc}}};|}}" | <div style="display: inline; font-size: 115%;">{{{2|{{{title|{{{reason|{{{header|{{{heading|{{{result|Extended content}}}}}}}}}}}}}}}}}}</div> |- | style="border: solid {{{border2|1px silver}}}; padding: {{{padding|8px}}}; background-color: {{{bg2|white}}};" | <div>{{{content|{{{text|{{{1<noinclude>|{{lorem ipsum|3}}</noinclude>}}}}}}}}}</div> |}{{{{{|safesubst:}}}#ifeq:{{NAMESPACEE}}|{{ns:0}}|<span class="error noprint">[[Template:collapse]] is not available for use in articles (see [[MOS:COLLAPSE]]).</span>}}<noinclude> {{Documentation}} </noinclude> 0ab1d915780bc1110ec074c518c6f94b0bfbc597 Template:TemplateDataHeader 10 1065 2329 2328 2023-10-01T14:17:22Z Führerredux 2 1 revision imported from [[:wikipedia:Template:TemplateDataHeader]] wikitext text/x-wiki #REDIRECT [[Template:TemplateData header]] {{R from move}} 61e461016bcb3a0a6fc4d8aea35d590298c19630 Template:Template display 10 1066 2331 2330 2023-10-01T14:17:22Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_display]] wikitext text/x-wiki <includeonly>{{#invoke:Message box|ombox|type=notice |image={{#switch:{{{1}}}|adaptive=[[File:Different devices simple.svg|65x65px|link=|alt=]]|nomobile=[[File:Handheld devices no.svg|55px|link=|alt=]]|nodesktop=[[File:Desktop devices no.svg|55px|link=|alt=]]}} |text={{#switch:{{{1}}} | adaptive = This template is [[Adaptive web design|responsive]] and <strong>displays differently in mobile and desktop view</strong>. Read the documentation for an explanation of the differences and why they exist. | nomobile = This template does ''not'' display in the mobile view of Wikipedia; it is <strong>desktop only</strong>. Read the documentation for an explanation. | nodesktop = This template does ''not'' display in the desktop view of Wikipedia; it is <strong>mobile only</strong>. Read the documentation for an explanation. | nomobilesidebar = This template does ''not'' display in the mobile view of Wikipedia; it is <strong>desktop only</strong>. Read the [[Template:Sidebar/doc|parent documentation]] for an explanation. | vector2022 = This template does not work properly in the [[Wikipedia:Vector 2022|Vector 2022]] skin. Read the documentation for an explanation. | #default = {{{1}}} }}}}</includeonly><noinclude> {{Documentation}} </noinclude> 47cc41eacc2d2dec246f01b81111b280cec901a3 Template:Lua sidebar/styles.css 10 1067 2333 2332 2023-10-01T14:17:23Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Lua_sidebar/styles.css]] sanitized-css text/css .lua-sidebar { width: auto; max-width: 22em; } 9984d36eb49fae70dd00527c993784d775409a6b Template:Param value 10 1068 2335 2334 2023-10-01T14:17:24Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Param_value]] wikitext text/x-wiki <code style="border:{{{border|{{{b|thin solid #caa}}}}}};background-color:{{{bg-color|{{{bg|white}}}}}};padding:1px 2px 0 1px;margin:0 2px 0 1px;white-space:nowrap;{{{style|}}}">{{replace|{{replace|{{replace|{{replace|{{replace|<includeonly>⊗ϑ{{{1|}}}⊗ϑ</includeonly><noinclude>value</noinclude>| |{{{space|{{{sp|&nbsp;}}}}}}}}|#|&#35;}}|*|&#42;}}|:|&#58;}}|⊗ϑ|}}</code><noinclude> {{Documentation}} </noinclude> 6298b021570fa18e8e9016184d0b7a3c00563553 Template:Uses Wikidata 10 1069 2337 2336 2023-10-01T14:17:24Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Uses_Wikidata]] wikitext text/x-wiki {{Sister project | position = {{{position|}}} | project = data | text = This {{module other|module|template}} uses {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see [[#{{{section}}}|§&nbsp;{{{section}}}]] for details. | the [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}: {{#invoke:Uses Wikidata|usesProperty}} }}}}{{#switch:{{SUBPAGENAME}} |sandbox |testcases |doc= <!--no category--> |#default={{#ifeq:{{PAGENAME}} |Uses Wikidata ||{{module other |[[Category:Modules using data from Wikidata]] |{{template other |[[Category:Templates using data from Wikidata]]}} }} }} }}<!-- --><noinclude>{{documentation}}</noinclude> 4b6f6f2ef4c6d4b84fa8aab733189b440b156a3f Module:Interval 828 1070 2339 2338 2023-10-01T14:17:25Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Interval]] Scribunto text/plain -- This module powers {{interval}}. local p = {} -- Constants local lang = mw.language.getContentLanguage() local getArgs = require('Module:Arguments').getArgs local function getArgNums(args) -- Returns an array containing the keys of all positional arguments -- that contain data (i.e. non-whitespace values). -- (from Module:Unbulleted_list) local nums = {} for k, v in pairs(args) do if type(k) == 'number' and k >= 1 and math.floor(k) == k and mw.ustring.match(v, '%S') then table.insert(nums, k) end end table.sort(nums) return nums end function p.main(frame) local args = getArgs(frame) return p._main(args) end function p._main(args) local n, rule, format = args.n, args.rule, args.format local numbers = getArgNums(args) local low, high, lowpos, highpos = nil, nil, 0, #numbers + 1 -- If comparing times, convert them all to seconds after the epoch if format == 'time' then if n then n = lang:formatDate('U', '@' .. n) else n = os.time() -- Set n to now if no time provided end end n = tonumber(n) for i, num in ipairs(numbers) do local interval if format == 'time' then interval = tonumber(lang:formatDate('U', '@' .. args[num])) else interval = tonumber(args[num]) end if n and ((n >= interval and not rule) or (n > interval and rule == '>')) then low = interval lowpos = num else high = high and math.min(interval, high) or interval if high == interval then highpos = num end end end return lowpos .. '-' .. highpos end return p e9162c263908d88338f24fa3293ff72adfbc9277 Template:Wikidata property link 10 1071 2341 2340 2023-10-01T14:17:25Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Wikidata_property_link]] wikitext text/x-wiki <includeonly>{{#switch:{{str left|{{uc:{{{id|}}}}}|1}} | N <!--none--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}} | P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}}]] | [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}}]] }} | O <!--only--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}} | P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]] | [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]] }} | F <!--first--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}} | P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|{{uc:{{{1|}}}}}}}|&#58; <small>{{wikidata|label|{{uc:{{{1|}}}}}}}</small>}} | [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|P{{uc:{{{1|}}}}}}}|&#58; <small>{{wikidata|label|P{{uc:{{{1|}}}}}}}</small>}} }} | #default = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}} | P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}} <small>({{uc:{{{1|}}}}})</small>]] | [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}} <small>(P{{uc:{{{1|}}}}})</small>]] }} }}</includeonly><noinclude>{{Documentation}}</noinclude> ad40089191f2bfc6ae162a4c12411f2860ccb493 Template:Wikidata fallback link 10 1072 2343 2342 2023-10-01T14:17:26Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Wikidata_fallback_link]] wikitext text/x-wiki {{#if:{{#invoke:wd|label|raw|eid={{{1|}}}}} |{{#ifexist:{{#invoke:wd|title|{{{1|}}}}} |{{#invoke:wd|label|linked|{{{1|}}}}} |{{#if:{{#invoke:wd|label|{{{1|}}}}} |{{#ifexist:{{#invoke:wd|label|{{{1|}}}}} |{{#invoke:wd|label|{{{1|}}}}}<!--Do not link to label if it targets the wrong article--> |[[{{#invoke:wd|label|{{{1|}}}}}]] }}&nbsp; }}{{#switch:{{{wd|on}}} |off= |icon=<span class="noprint metadata ill">[[File:OOjs UI icon edit-ltr-progressive.svg|10px|link=:d:Special:EntityPage/{{{1}}}|Edit on Wikidata]]</span> |on |#default=<span class="noprint metadata ill"><small>&#91;[[:d:Special:EntityPage/{{{1}}}|{{#switch:{{{short|{{{s|}}}}}}|yes|y|true|t|on|set|1=d|Wikidata}}]]&#93;</small></span> }} }} }}<noinclude> {{documentation}} </noinclude> 4ecc9c0b6a3ff7a4df16e1793dfc11b7c649aa45 Module:Transclusion count/data/A 828 1073 2345 2344 2023-10-01T14:17:27Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/A]] Scribunto text/plain return { ["A-Class"] = 5500, ["AARTalk"] = 8900, ["ACArt"] = 5300, ["AFB_game_box_end"] = 2500, ["AFB_game_box_start"] = 2500, ["AFC_comment"] = 14000, ["AFC_submission"] = 24000, ["AFC_submission_category_header"] = 4600, ["AFD_help"] = 108000, ["AFD_help/styles.css"] = 108000, ["AFI/Picture_box/show_picture"] = 3700, ["AFI_film"] = 8100, ["AFL_Car"] = 2600, ["AFL_Col"] = 2500, ["AFL_Ess"] = 2500, ["AFL_Gee"] = 2500, ["AFL_Haw"] = 2400, ["AFL_Mel"] = 2700, ["AFL_NM"] = 2300, ["AFL_Ric"] = 2400, ["AFL_StK"] = 2900, ["AFL_Tables"] = 12000, ["AFL_Year"] = 2500, ["ALG"] = 2500, ["AMARB"] = 4400, ["AML"] = 4500, ["AMQ"] = 4500, ["AM_station_data"] = 4400, ["ARG"] = 6400, ["ASIN"] = 4600, ["ASN"] = 3400, ["ATP"] = 5000, ["AUS"] = 14000, ["AUT"] = 9500, ["AZE"] = 2600, ["A_note"] = 4300, ["A_or_an"] = 29000, ["Aan"] = 48000, ["Abbr"] = 796000, ["Abbreviation"] = 2300, ["Abbrlink"] = 18000, ["Abot"] = 12000, ["About"] = 152000, ["Absolute_page_title"] = 3900, ["Acad"] = 6500, ["Access_icon"] = 2900, ["According_to_whom"] = 4300, ["AchievementTable"] = 10000, ["Active_politician"] = 20000, ["AdSenseSummary"] = 4100, ["Added"] = 2400, ["Adjacent_communities"] = 26000, ["Adjacent_stations"] = 38000, ["Adjacent_stations/styles.css"] = 38000, ["Adjacent_stations_doc"] = 2000, ["Adjstn"] = 2200, ["Admin"] = 14000, ["Administrator_note"] = 6500, ["Adminnote"] = 3500, ["Advert"] = 18000, ["Aet"] = 5200, ["AfC_age_category"] = 3500, ["AfC_comment"] = 14000, ["AfC_date_category"] = 196000, ["AfC_status/age"] = 3600, ["AfC_status/backlog"] = 4100, ["AfC_submission"] = 37000, ["AfC_submission/comments"] = 23000, ["AfC_submission/declined"] = 23000, ["AfC_submission/declinedivbox"] = 23000, ["AfC_submission/draft"] = 16000, ["AfC_submission/helptools"] = 39000, ["AfC_submission/pending"] = 3500, ["AfC_submission/tools"] = 3600, ["AfC_submission_category_header"] = 5700, ["AfC_submission_category_header/day"] = 5500, ["AfC_submission_category_header/td"] = 5500, ["AfC_talk/C_percentage"] = 3300, ["AfC_topic"] = 25000, ["AfD_categories_horizontal_shortnames"] = 4400, ["AfD_count_link"] = 3800, ["Afd-merged-from"] = 8000, ["AfricaProject"] = 28000, ["Africa_topic"] = 6200, ["After_extra_time"] = 5200, ["Age"] = 37000, ["Age_in_days"] = 4400, ["Age_in_years"] = 3700, ["Age_in_years,_months,_weeks_and_days"] = 4100, ["Age_in_years,_months_and_days"] = 17000, ["Age_in_years_and_days"] = 4000, ["Age_in_years_and_days_nts"] = 3100, ["Agree"] = 2100, ["Ahnentafel"] = 8300, ["Ahnentafel/styles.css"] = 8300, ["Air_Force_Historical_Research_Agency"] = 4300, ["Air_force"] = 5900, ["Air_force/core"] = 5900, ["Aircontent"] = 9400, ["Aircraft_specs"] = 12000, ["Aircraft_specs/convert"] = 12000, ["Aircraft_specs/eng"] = 12000, ["Aircraft_specs/length"] = 12000, ["Aircraft_specs/range"] = 12000, ["Aircraft_specs/speed"] = 12000, ["Airport-dest-list"] = 3600, ["Airport_codes"] = 15000, ["Airport_destination_list"] = 4900, ["Aka"] = 2100, ["Al"] = 66000, ["Album"] = 204000, ["Album_chart"] = 29000, ["Album_chart/chartnote"] = 29000, ["Album_cover_fur"] = 53000, ["Album_label_category"] = 2200, ["Album_label_category/core"] = 2200, ["Album_ratings"] = 76000, ["Album_reviews"] = 5600, ["Albums"] = 7600, ["Albums_category"] = 24000, ["Albums_category/core"] = 24000, ["Albums_category/type/default"] = 24000, ["Align"] = 174000, ["Aligned_table"] = 13000, ["AllIrelandByCountyCatNav"] = 3100, ["AllMovie_name"] = 5800, ["AllMovie_title"] = 28000, ["AllMusic"] = 77000, ["Allcaps"] = 9000, ["Allcaps/styles.css"] = 9000, ["Allmovie"] = 4200, ["Allmovie_title"] = 2200, ["Allmusic"] = 17000, ["Allow_wrap"] = 19000, ["Alumni"] = 2400, ["Always_substitute"] = 8400, ["Ambox"] = 1460000, ["Ambox_globe"] = 36000, ["Ambox_globe_current_red"] = 34000, ["American_English"] = 18000, ["American_football_roster/Footer"] = 3200, ["American_football_roster/Header"] = 3200, ["American_football_roster/Player"] = 3200, ["Americanfootballbox"] = 3300, ["Amg_movie"] = 11000, ["Amg_name"] = 3200, ["Anarchism_announcements"] = 3100, ["Anarchism_announcements/shell"] = 3100, ["Anchor"] = 80000, ["Angbr"] = 2100, ["Angle_bracket"] = 3100, ["Anglican_navbox_titlestyle"] = 14000, ["Anglicise_rank"] = 569000, ["Animal_tasks"] = 19000, ["Anime_News_Network"] = 11000, ["Ann"] = 4700, ["Annotated_link"] = 7900, ["Annual_readership"] = 51000, ["Anonblock"] = 33000, ["Antonym_of_(dis)establish"] = 8700, ["Apostrophe"] = 77000, ["ArbCom_Arab-Israeli_editnotice"] = 2200, ["ArbCom_Arab-Israeli_enforcement"] = 3000, ["Arbitration_Committee_candidate/data"] = 76000, ["Archive"] = 155000, ["Archive-nav"] = 5800, ["Archive_bottom"] = 46000, ["Archive_box"] = 18000, ["Archive_list"] = 73000, ["Archive_navigation"] = 7400, ["Archive_top"] = 28000, ["Archive_top/styles.css"] = 28000, ["Archive_top_green"] = 3000, ["Archivebottom"] = 3600, ["Archivebox"] = 2600, ["Archives"] = 50000, ["Archivetop"] = 3600, ["Army"] = 15000, ["Army/core"] = 15000, ["Art_UK_bio"] = 2400, ["Art_UK_bio/plural"] = 2400, ["Article"] = 2900, ["ArticleHistory"] = 29000, ["Article_alerts_box"] = 3600, ["Article_alerts_box/styles.css"] = 3600, ["Article_for_improvement_banner/Picture_box"] = 3700, ["Article_for_improvement_banner/Picture_box/show_picture"] = 3700, ["Article_history"] = 47000, ["Articles_by_Quality"] = 2300, ["Articles_by_Quality/down"] = 2300, ["Articles_by_Quality/total"] = 2400, ["Articles_by_Quality/up"] = 2300, ["As_of"] = 79000, ["Asbox"] = 2390000, ["Asbox/styles.css"] = 2390000, ["Asia_topic"] = 9900, ["Asof"] = 7200, ["Assessed-Class"] = 18000, ["Assignment"] = 6300, ["Assignment_milestones"] = 5600, ["AstDys"] = 2900, ["Asterisk"] = 2200, ["AthAbbr"] = 4600, ["Atnhead"] = 6000, ["Atop"] = 4700, ["Atopg"] = 2600, ["Attached_KML"] = 14000, ["Au"] = 2500, ["AuEduNewbie"] = 2500, ["Audio"] = 27000, ["Audio_sample"] = 2900, ["AustralianFootball"] = 7400, ["Australian_Dictionary_of_Biography"] = 2400, ["Australian_English"] = 2800, ["Australian_party_style"] = 6000, ["Australian_politics/name"] = 4200, ["Australian_politics/party_colours"] = 6100, ["Austria_metadata_Wikidata"] = 2100, ["Austria_population_Wikidata"] = 2100, ["Aut"] = 8200, ["Authority_control"] = 2020000, ["Authority_control_(arts)"] = 16000, ["Auto_link"] = 79000, ["Autobiography"] = 2100, ["Automated_tools"] = 85000, ["Automated_tools/core"] = 85000, ["Automatic_Taxobox"] = 2500, ["Automatic_archive_navigator"] = 133000, ["Automatic_taxobox"] = 75000, ["Aviation_accidents_and_incidents"] = 2300, ["Awaiting_admin"] = 2600, ["Awaitingadmin"] = 2500, ["Award2"] = 2400, ["Awards"] = 2400, ["Awards_table"] = 5600, ["Awards_table/styles.css"] = 5600, ["Ayd"] = 3000, ["Aye"] = 26000, ["Module:A_or_an"] = 29000, ["Module:A_or_an/words"] = 29000, ["Module:About"] = 153000, ["Module:Adjacent_stations"] = 74000, ["Module:Adjacent_stations/Amtrak"] = 2600, ["Module:Adjacent_stations/Indian_Railways"] = 3200, ["Module:Adjacent_stations/JR_East"] = 2200, ["Module:Adjacent_stations/i18n"] = 74000, ["Module:Administrators'_noticeboard_archives"] = 2000, ["Module:AfC_submission_catcheck"] = 376000, ["Module:AfC_topic"] = 25000, ["Module:Age"] = 1190000, ["Module:Ahnentafel"] = 8300, ["Module:Airport_destination_list"] = 4900, ["Module:Aligned_dates_list"] = 2300, ["Module:Aligned_table"] = 13000, ["Module:Anchor"] = 80000, ["Module:Ancient_Egypt_era"] = 2800, ["Module:Ancient_Egypt_era/data"] = 2800, ["Module:Ancient_Egypt_kings"] = 2800, ["Module:Ancient_Egypt_kings/data"] = 2800, ["Module:Ancient_Olympiads"] = 2800, ["Module:Ancient_Olympiads/data"] = 2800, ["Module:Annotated_link"] = 7900, ["Module:Archive_list"] = 75000, ["Module:Arguments"] = 31900000, ["Module:Armenian"] = 2800, ["Module:Article_history"] = 47000, ["Module:Article_history/Category"] = 47000, ["Module:Article_history/config"] = 47000, ["Module:Article_history/styles.css"] = 47000, ["Module:Asbox"] = 2390000, ["Module:Asbox_stubtree"] = 36000, ["Module:Attached_KML"] = 14000, ["Module:Attached_KML/styles.css"] = 14000, ["Module:Australian_place_map"] = 16000, ["Module:Authority_control"] = 2040000, ["Module:Authority_control/auxiliary"] = 575000, ["Module:Authority_control/config"] = 2040000, ["Module:Automated_taxobox"] = 369000, ["Module:Automatic_archive_navigator"] = 133000, ["Module:Automatic_archive_navigator/config"] = 133000, ["Module:Autotaxobox"] = 569000, } a8ee40712bf0669ff0e9be9f1b4924a5abda651e Template:Template error report 10 1074 2347 2346 2023-10-01T14:17:28Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Template_error_report]] wikitext text/x-wiki #REDIRECT [[Template:Template parameter usage]] ec2d98a233a7e573eee70a96c736db071107fc23 Template:Authority control/doc 10 1075 2349 2348 2023-10-01T14:17:30Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Authority_control/doc]] wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{High-use}} {{Template display|nomobile}} {{Lua|Module:Authority control|Module:Authority control/config|Module:Check for unknown parameters}} {{Uses Wikidata|section=Wikidata}} {{Authority control/related}} {{TOC right}} == Description == {{details|Authority control|Wikipedia:Authority control}} This template links Wikipedia articles to various library (and other) catalogue systems, for biographies and other topics. This template draws its values from [[Wikidata]]. A pencil icon [[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px]] gives convenient access to the "Identifiers" section of the corresponding Wikidata item. === Empty instances === If there is no information in Wikidata for the specific subject, an empty instance of this template will be ''dormant'', meaning it will be invisible on the rendered page. Thus, using this template on a page with no authority information is harmless. An empty instance of this template stays dormant in an article, until values are added to Wikidata, when it will then display them. === Validation === The template attempts to validate digits for all values and shows an error if the check fails. <!--Wherever possible, the template also generates a link to [[WorldCat Identities]], using VIAF or LCCN values, or manually via {{para|WORLDCATID}}.--> === Position === {{See also|Wikipedia:Manual of Style/Layout#Standard appendices and footers{{!}}Wikipedia:Manual of Style/Layout}} As a metadata template, the Authority control template should be placed on a new line, after the [[Wikipedia:External links|external links]] section and [[Wikipedia:Navigation templates|navigation templates]], immediately before the categories. ==Usage== :{{kbd|<nowiki>{{Authority control}}</nowiki>}} As a general guideline: # Insert the empty version # Click "[[Help:Show preview|Show preview]]" to see which sources are automatically pulled from Wikidata # If you know of more sources, add those sources to the article's [[WP:Wikidata#Access from Wikipedia|Wikidata item]], so that other language versions of Wikipedia will automatically benefit. === Suppression of identifiers === Identifiers can be selectively suppressed via the {{para|suppress}} parameter. For example {{Q|P434}} can be suppressed by typing: :{{kbd|<nowiki>{{Authority control |suppress=P434}}</nowiki>}} === Specifying the Wikidata item === If a page is not connected to a Wikidata item (for example, a page in draft space, user space or project space), you can specify the appropriate item to draw data from, by using the {{para|qid}} parameter. :{{kbd|<nowiki>{{Authority control |qid=Q49605590}}</nowiki>}} To find the correct item, you can [[wikidata:Special:Search|search the database]]. If there is not yet an existing item, you can [[wikidata:Special:NewItem|create a new item]]. As soon as the page is connected to a Wikidata item, this parameter will be ignored so you can remove it from the template. === Additional Wikidata items === In some cases, you might need to specify additional items to draw data from. For example, * [[Bonnie and Clyde]] also draws data from {{Q|Q2319886}} and {{Q|Q3320282}} * [[North Rona]] also draws data from {{Q|Q28831543}} To specify additional items, you can use the {{para|additional}} parameter. For example: {{kbd|<nowiki>{{Authority control | additional = Q2319886, Q3320282}}</nowiki>}} To automatically add additional links from related items, use {{para|additional|auto}}. This is useful for married couples, musical groups, etc. === Whitelists === A number of whitelists are configured, which allow only a limited selection of identifiers to be displayed. These can be used with the {{para|show}} parameter. For example, including {{para|show|arts}} will only show identifiers which have identified as particularly relevant to the arts. Multiple whitelists may be used. For example: {{kbd|<nowiki>{{Authority control|show=arts,SV}}</nowiki>}} adds identifiers from the arts and Sweden whitelists. {{para|country}} can be used as an alias for {{para|show}} (but they can't both be used simultaneously). {{collapse|{{#invoke:Authority control/documentation|whitelisttable}}|List of whitelists}} ==Examples== ;[[Victor Hugo]] <kbd><nowiki>{{Authority control |qid=Q535}}</nowiki></kbd> {{Authority control |qid=Q535}} ;[[Alexander Graham Bell]] <kbd><nowiki>{{Authority control |qid=Q34286}}</nowiki></kbd> {{Authority control |qid=Q34286}} ;[[Harry Forbes Witherby]]: <kbd><nowiki>{{Authority control |qid=Q352545}}</nowiki></kbd> {{Authority control |qid=Q352545}} ;[[Carl Larsson]]: <kbd><nowiki>{{Authority control (arts) |country=SV |qid=Q187310}}</nowiki></kbd> {{Authority control (arts) |country=SV |qid=Q187310}} == Rendering == The template is split into a number of sections, including "International", "National", "Academics", "Artists" etc. The template usually displays as a navbox with a header: {{Authority control |qid=Q921242}} If all identifiers are in the same section, {{para|state}} is ignored, and the template displays on one line. If you use additional qids to draw data from additional wikidata items, then a new section will be added for each. In this case, the identifiers will not be separated further: {{Authority control |qid=Q219937|additional=Q2319886,Q3320282}} {{collapsible option}} {{Anchor|Wikidata|Tracking categories}} === Microformat === The template wraps each UID value with the [[HTML]] markup: <code><nowiki><span class="uid">...</span></nowiki></code>, which enables the first-found value to be included in an [[hCard]] [[microformat]]. == List of identifiers == {{#ifexpr:{{PAGESINCAT:All articles with faulty authority control information}}|{{error|Warning: {{plural|{{PAGESINCAT:All articles with faulty authority control information}}|article has|articles have}} faulty authority control information}}, see [[:Category:All articles with faulty authority control information|All articles with faulty authority control information]].}} The template gets its information from the following properties on [[Wikidata]]: {{#invoke:Authority control/documentation{{#ifeq:{{SUBPAGENAME}}|sandbox|/sandbox}}|docConfTable|config={{#switch:{{SUBPAGENAME}}|sandbox=sandbox|staging=staging}}}} == Additional tracking categories == This template may add the following categories: * {{Category link with count|Pages with authority control identifiers needing attention|pages}} – category to track errors ** {{Category link with count|Pages using authority control with parameters}} – identifiers should be migrated to Wikidata ** {{Category link with count|All articles with faulty authority control information}} – faulty identifiers to fix === Error reports === {{Template error report}} ==See also== * [[Wikipedia:Authority control]] – editor information * [[Help:Authority control]] – reader help * [[Template:Taxonbar]] – authority control style template for taxonomic databases * [[Template:Sports links]] – authority control style template for sports articles * [[User:UBX/Authority control]] – for self-identifying as an AC user * [[:Commons:Template:Authority control]] – template on Commons == TemplateData == {{TemplateDataHeader}} <templatedata> { "description": "A template to link Wikipedia articles to various library catalogue systems", "params": { "state": { "description": "Initial state of the template", "type": "string", "suggestedvalues": [ "autocollapse", "expanded", "collapsed" ], "default": "autocollapse" }, "qid": { "label": "qid", "description": "Wikidata QID number for an article not yet connected to a Wikidata item. Once the article is connected to a Wikidata item, then this parameter will be ignored.", "example": "Q49605590", "type": "string" }, "suppress": { "description": "Comma-separated list of identifers to suppress from the template, in the form of the Wikidata property ID (e.g. P227),", "example": "P227, P1986", "type": "string" }, "additional": { "description": "Comma-seprated list of additional Wikidata QIDs of items to display data for. Each should be related and covered by the article.", "type": "string", "example": "Q28831543" }, "show": { "aliases": [ "country" ], "label": "whitelist", "example": "ES", "type": "string", "suggestedvalues": [ "arts" ], "suggested": true, "description": "Whitelist (e.g. arts) or country code (e.g. ES) or property (e.g. P214) to show. If not specified, then every supported identifier will be displayed." } }, "format": "\n{{_|_=_}}\n", "paramOrder": [ "show", "suppress", "qid", "additional", "state" ] } </templatedata> <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Wikipedia authority control]] [[Category:Templates using data from Wikidata]] [[Category:Templates that add a tracking category]] [[Category:External link templates using Wikidata]] }}</includeonly> d58567c78dce9fd58e573d100f1f9ec327aef132 Module:Authority control/config 828 1076 2351 2350 2023-10-01T14:17:31Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Authority_control/config]] Scribunto text/plain require('strict') local p = {} p.auxiliary = 'Module:Authority control/auxiliary' p.i18n = { aclink = '[[Help:Authority control|Authority control databases]]', ACmodule = 'Module:Authority control', addtowd = 'Add values to Wikidata', attentioncat = 'Pages with authority control identifiers needing attention', All_articles = 'All articles', allfaultycat = 'All articles with faulty authority control information', Appears_as = 'Appears as', -- used on documentation table to show example Articles = 'Articles', autocollapse = 'autocollapse', -- Navbox state parameter cat = 'Articles with %s identifiers', category = 'Category', Code = 'Code', collapsed = 'collapsed', -- Navbox state parameter connecttowd = 'Please connect this article to a Wikidata item.', Description = 'Description', errortemplate = 'Error', -- e.g. [[Template:Error]], expanded = 'expanded', -- Navbox state parameter faultcat = 'Articles with faulty authority control information', Faults = 'Faults', faulty = 'faulty', identifier = 'identifier', identifiers = 'identifiers', idnotvalid = 'The %s identifier %s is not valid.', linktemplate = 'Wikidata property link', -- refers to [[Template:Wikidata property link]] localparams = 'Local parameters are deprecated.', maincat = 'Articles with authority control information', movetowd = 'Please move values to Wikidata.', name = 'Authority control', navbox = 'Module:Navbox', pages = 'pages', pageswithparams = 'Pages using authority control with parameters', -- name of category for tracking uses with parameters previewwarning = 'Warning: Local parameters are deprecated. Please move any identifiers to Wikidata.', -- preview message when local parameters are used qidcode = 'Please use the <code>|qid=</code> parameter to specify the Wikidata item.', sandbox = 'sandbox', Section = 'Section', suppressedcat = 'Articles with suppressed authority control identifiers', testcases = 'testcases', Topic = 'Topic', Totals = 'Totals', Tracking_category = 'Tracking category', warning = 'Warning', warningicon = '345-409 Ambox warning centered.svg', -- icon used for faulty ids WDproperty = 'Wikidata property', } p.config = { { 'AAG', property = 3372, section = 5, link = 'https://www.aucklandartgallery.com/explore-art-and-ideas/artist/$1/', label = 'Auckland', pattern = '%d+', }, { 'ACM-DL', property = 864, section = 4, pattern = '%d%d%d%d%d%d%d%d%d%d%d', link = 'https://dl.acm.org/profile/$1', label = 'Association for Computing Machinery', }, { 'ADB', property = 1907, section = 6, patterns = {'[a-z][-a-z]+-[1-3]%d%d?%d?%d?', '[a-z][-a-z]+-[1-9]%d?%d?%d?'}, link = 'http://adb.anu.edu.au/biography/$1', label = 'Australia', }, { 'ADK', property = 4114, section = 5, link = 'https://www.adk.de/de/akademie/mitglieder/?we_objectID=$1', label = 'ADK', patterns = {'4999[6-9]', '5[0-4]%d%d%d', '55[0-6]%d%d', '5570%d', '5571[0-8]'} }, { 'admiralty', property = 3562, patterns = {'[A-Q]%d%d%d%d', '[A-Q]%d%d%d%d%.%d+'}, section = 3, prefix = '[[Admiralty (identifier)|Admiralty]]' }, { 'AGSA', property = 6804, section = 5, pattern = '[1-9]%d*', link = 'https://www.agsa.sa.gov.au/collection-publications/collection/creators/_/$1/', label = 'South Australia', }, { 'ARLHS', property = 2980, section = 3, pattern = '[A-Z][A-Z][A-Z]%d%d%d%d?[A-Z]?', link = 'http://wlol.arlhs.com/lighthouse/$1.html', label = 'ARLHS', }, { 'autores.uy', property = 2558, section = 6, pattern = '[1-9]%d?%d?%d?%d?', link = 'https://autores.uy/autor/$1', label = 'Uruguay', remark = "autores.uy is an author's database, that focus on [[Uruguay]]an authors. It was created and maintained by the Uruguayan chapter of Creative Commons. It also provides access to digitized works of the authors in public domain." }, { 'AWR', property = 4186, section = 6, patterns = {'[A-Z][A-Z][A-Z]%d%d%d%d[a-z]', '[A-Z][A-Z]%d%d%d%d%d[a-z]'}, link = 'http://www.womenaustralia.info/biogs/$1.htm', label = 'Australian Women\'s Register', }, { 'BGCI', property = 5818, section = 3, link = 'https://www.bgci.org/garden.php?id=$1', label = 'BGCI garden', pattern = '%d+' }, { 'BIBSYS', property = 1015, section = 2, patterns = {'[1-9]%d?%d?%d?%d?%d?%d?%d?%d?', '[1-9]%d%d%d%d%d%d%d%d%d%d%d%d'}, link = 'https://authority.bibsys.no/authority/rest/authorities/html/$1', label = 'Norway', remark = 'BIBSYS is a supplier of library and information systems for all Norwegian university Libraries, the National Library of Norway, college libraries, and a number of research libraries and institutions.' }, { 'Bildindex', property = 2092, section = 7, pattern = '%d+', link = 'https://www.bildindex.de/document/obj$1', label = 'Bildindex', }, { 'BMLO', property = 865, section = 6, link = 'https://bmlo.de/$1', label = 'BMLO', pattern = '[a-z][0-9][0-9][0-9][0-9]' }, { 'BNC', property = 1890, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'http://www.bncatalogo.cl/F?func=direct&local_base=red10&doc_number=$1', label = 'Chile', }, { 'BNE', property = 950, section = 2, patterns = {'[XF][XF]%d%d%d%d%d?%d?%d?', 'a%d%d%d%d%d?%d?%d?', 'bi[mcsv][aoei]%d%d%d%d%d%d%d%d%d%d', 'Mi[sm][eoa]%d%d%d%d%d%d%d%d%d%d'}, link = 'http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=$1', label = 'Spain', remark = "National Library of Spain (BNE: ''Biblioteca Nacional de España'') is a major public library, the largest in Spain." }, { 'BNF', property = 268, section = 2, pattern = '%d%d%d%d%d%d%d%d[0-9bcdfghjkmnpqrstvwxz]', link = 'https://catalogue.bnf.fr/ark:/12148/cb$1', label = 'France', remark = 'Authority data of people listed in the general catalogue of the National Library of France' }, { 'BNFdata', property = 268, section = 2, pattern = '%d%d%d%d%d%d%d%d[0-9bcdfghjkmnpqrstvwxz]', link = 'https://data.bnf.fr/ark:/12148/cb$1', label = 'BnF data' }, { 'BNMM', property = 3788, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'https://catalogo.bn.gov.ar/F/?func=direct&local_base=BNA10&doc_number=$1', label = 'Argentina', }, { 'Botanist', property = 428, section = 4, valid = 'botanistV', link = 'https://www.ipni.org/ipni/advAuthorSearch.do?find_abbreviation=$1', label = 'International Plant Names Index', remark = 'Author citation (botany): standard form (official abbreviation) of a personal name for use in an author citation (only for names of algae, fungi and plants). Links to page at [[International Plant Names Index]] (IPNI).' }, { 'BPN', property = 651, section = 6, patterns = {'%d%d%d%d%d%d%d%d', '0?%d%d%d%d%d%d%d', '0?0?%d%d%d%d%d%d'}, link = 'http://www.biografischportaal.nl/en/persoon/$1', label = 'Netherlands', remark = 'Dutch project with material for 40,000 digitized biographies, including former colonies of the Netherlands.' }, { 'BRAHMS artist', property = 5226, section = 5, link = 'http://brahms.ircam.fr/$1', label = 'BRAHMS', pattern = '[a-z%-\\]+', remark = 'Identifier of an artist in the B.R.A.H.M.S. (Base Relationnelle d\'Articles Hypertextes sur la Musique du 20e Siècle database), by the IRCAM' }, { 'BRAHMS work', property = 5302, section = 7, link = 'https://brahms.ircam.fr/works/work/$1/', label = 'BRAHMS', pattern = '[1-9]%d*', remark = "Identifier for a musical work in the B.R.A.H.M.S. (Base Relationnelle d\'Articles Hypertextes sur la Musique du 20e Siècle database) database, by the IRCAM" }, { 'CANTICN', property = 9984, section = 2, pattern = '981[0-1]%d%d%d%d%d%d%d%d%d06706', link = 'https://cantic.bnc.cat/registre/$1', label = 'Catalonia', }, { 'CCG', property = 3920, section = 3, customlink = 'ccg', remark = 'Identifier from one of 4 volumes of List of Lights, Buoys and Fog Signals issued by the Canadian Coast Guard.' }, { 'CINII', property = 271, section = 4, pattern = 'D[AB]%d%d%d%d%d%d%d[%dX]', link = 'https://ci.nii.ac.jp/author/$1?l=en', label = 'CiNii', remark = 'CiNii is a bibliographic database service for material in Japanese academic libraries. It is maintained by the [[National Institute of Informatics]].' }, { 'CWGC', property = 1908, section = 6, pattern = '[1-9]%d*', link = 'https://www.cwgc.org/find-war-dead/casualty/$1/', label = 'Commonwealth War Graves Commission', }, { 'DAAO', property = 1707, section = 5, pattern = '[a-z%-]+%d*', link = 'https://www.daao.org.au/bio/$1', label = 'Australian Artists', }, { 'Danish List of Lights and Fog signals', property = 4038, section = 3, pattern = '[1-9]%d*[A-Za-z]?', prefix = 'Denmark', }, { 'DB', property = 8671, section = 7, label = 'Deutsche Bahn', link = 'https://iris.noncd.db.de/wbt/js/index.html?bhf=$1&zeilen=50&seclang=en', remark = 'Deutsche Bahn station code, identifier for train stations and other operating points used by Deutsche Bahn', pattern = '[ABCDEFHIJKLMNOPQRSTUVWXYZ][A-Z0-9%s][A-Z0-9%s]?[A-Z0-9%s]?[A-Z0-9%s]?' }, { 'DBI', property = 1986, section = 6, link = 'https://www.treccani.it/enciclopedia/$1_(Dizionario-Biografico)', label = 'Italian People', }, { 'DBLP', property = 2456, section = 4, patterns = {'%d%d%d?%/%d+-?[%d]*[%a]*-?[%d]*', '[%a]+%/[%w]*-?[%d]*'}, link = 'https://dblp.org/pid/$1', label = 'DBLP', }, { 'Deutsche Synchronkartei', property = 11646, section = 6, label = 'Deutsche Synchronkartei', link = 'https://www.synchronkartei.de/person/$1', remark = 'Online database of voice actors in film and television productions', pattern = string.rep('[0-9a-zA-Z_-]',9) }, { 'DIB', property = 6829, section = 6, pattern = '0[01]%d%d%d%d%.?[A-D]?', link = 'https://doi.org/10.3318/dib.$1.v1', label = 'Ireland', }, { 'DSI', property = 2349, section = 5, pattern = '[1-9]%d*', link = 'http://www.uni-stuttgart.de/hi/gnt/dsi2/index.php?table_name=dsi&function=details&where_field=id&where_value=$1', label = 'Scientific illustrators', }, { 'DTBIO', property = 7902, section = 6, pattern = '1[0-9]%d%d%d%d%d%d%d?[0-9X]', link = 'https://www.deutsche-biographie.de/pnd$1.html?language=en', label = 'Deutsche Biographie', }, { 'EBIDAT', property = 9725, section = 3, label = 'EBIDAT', link = 'https://www.ebidat.de/cgi-bin/ebidat.pl?id=$1', remark = 'Identifier for an entry in the castles inventory database EBIDAT', pattern = '[1-9]%d?%d?%d?' }, { 'Emmy', property = 8381, section = 5, link = 'https://www.emmys.com/bios/$1', label = 'Emmy Awards' }, { 'EMU', property = 4613, section = 7, pattern = '%d%d?%d?%d?%d?%d?', link = 'http://esu.com.ua/search_articles.php?id=$1', label = 'Encyclopedia of Modern Ukraine', }, { 'EUTA', property = 4535, section = 3, label = 'EUTA theatre', link = 'http://www.theatre-architecture.eu/db/?theatreId=$1', pattern = '[1-9]%d*' }, { 'EUTA person', property = 4534, section = 6, label = 'EUTA', link = 'http://www.theatre-architecture.eu/db.html?personId=$1', pattern = '[1-9]%d?%d?%d?%d?%d?%d?' }, { 'FAST', property = 2163, section = 1, pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?', link = 'http://id.worldcat.org/fast/$1/', label = 'FAST', }, { 'Finnish List of Lights', property = 4143, section = 3, pattern = '%d+', prefix = 'Finland', }, { 'FNZA', property = 6792, section = 5, pattern = '[1-9]%d*', link = 'https://findnzartists.org.nz/artist/$1/', label = 'New Zealand Artists', }, { 'GND', property = 227, section = 2, patterns = {'1[0123]?%d%d%d%d%d%d%d[0-9X]', '[47]%d%d%d%d%d%d%-%d', '[1-9]%d?%d?%d?%d?%d?%d?%d?%-[0-9X]', '3%d%d%d%d%d%d%d[0-9X]'}, link = 'https://d-nb.info/gnd/$1', label = 'Germany', remark = 'Authority data on people, corporations and subjects from the [[German National Library]] (DNB)' }, { 'Google Scholar', property = 1960, section = 4, pattern = '[%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u]', link = 'https://scholar.google.com/citations?user=$1', label = 'Google Scholar', }, { 'Grammy', property = 7303, section = 5, pattern = '%w[%w-]+%/%d+', link = 'https://www.grammy.com/grammys/artists/$1', label = 'Grammy Awards', }, { 'GVP', property = 1886, section = 3, link = 'https://volcano.si.edu/volcano.cfm?vn=$1', label = 'Global Volcanism Program', pattern = '%d%d%d%d%d%d' }, { 'HDS', property = 902, section = 7, pattern = '%d%d%d%d%d%d', label = 'Historical Dictionary of Switzerland', link = 'https://hls-dhs-dss.ch/fr/articles/$1', remark = 'Historical Dictionary of Switzerland is an encyclopedia on the history of Switzerland.' }, { 'IAAF', property = 1146, section = 6, pattern = '%d+', link = 'https://www.iaaf.org/athletes/_/$1', label = 'World Athletics', remark = 'The IAAF athlete database lists information about [[sport of athletics]] competitors.' }, { 'ICCU', property = 396, section = 2, pattern = '%u%u[%u0-3]V%d%d%d%d%d%d', link = 'https://opac.sbn.it/nome/$1', label = 'Italy', remark = 'Central Institute for the Union Catalogue (ICCU: {{lang|it|Istituto Centrale per il Catalogo Unico}}) is an Italian government agency created to build a single catalog of all the libraries in the nation. It manages National Library Service ({{lang|it|Servizio bibliotecario nazionale}}).' }, { 'ICIA', property = 1736, section = 5, pattern = '%d+', link = 'https://www.imj.org.il/artcenter/newsite/en/?artist=$1', label = 'ICIA (Israel)', }, { 'IEU', property = 9070, section = 7, pattern = '[A-Z]\\[A-Z]\\%w+', link = 'http://www.encyclopediaofukraine.com/display.asp?linkpath=pages\\$1', label = 'Internet Encyclopedia of Ukraine', }, { 'ISIL', property = 791, section = 6, customlink = 'ISILlink', remark = 'Libraries, museums and archives, decentralized national databases.' }, { 'ISNI', property = 213, section = 1, label = 'ISNI', valid = 'validateIsni', link = 'https://isni.org/isni/$1', remark = 'ISNI is a method for uniquely identifying the public identities of contributors to media content such as books, TV programmes, and newspaper articles. Please take care not to confuse ISNI and ORCID identifiers.' }, { 'J9U', property = 8189, section = 2, pattern = '9870[0-1]%d%d%d%d%d%d%d%d05171', link = 'http://uli.nli.org.il/F/?func=find-b&local_base=NLX10&find_code=UID&request=$1', label = 'Israel', }, { 'Joconde', property = 347, section = 7, pattern = ''..string.rep('[%-0-9A-Za-z]', 11)..'', link = 'https://www.pop.culture.gouv.fr/notice/joconde/$1', label = 'Joconde', }, { 'KANTO', property = 8980, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'https://urn.fi/URN:NBN:fi:au:finaf:$1', label = 'Finland', }, { 'KBR', property = 11249, section = 2, pattern = '%d%d%d%d%d%d%d%d', link = 'https://opac.kbr.be/LIBRARY/doc/AUTHORITY/$1', label = 'Belgium', }, { 'KULTURNAV', property = 1248, section = 5, pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'http://kulturnav.org/$1', label = 'KulturNav', remark = 'KulturNav is a Norwegian cloud-based software service, allowing users to create, manage and distribute name authorities and terminology, focusing on the needs of museums and other cultural heritage institutions. The software is developed by KulturIT ANS and the development project is funded by the [[Arts Council Norway]].' }, { 'LCCN', property = 244, section = 2, pattern = '%l%l?%d%d%d%d%d%d%d%d%d?%d?', link = 'https://id.loc.gov/authorities/$1', label = 'United States', remark = 'See [[Wikipedia:Authority control#LCCN]] for formatting instructions' }, { 'Leopoldina', property = 10299, section = 4, link = 'https://www.leopoldina.org/mitgliederverzeichnis/mitglieder/member/Member/show/$1/', label = 'Leopoldina', pattern = '[%-a-z]+%d?' }, { 'LexM', property = 9692, section = 5, link = 'https://www.lexm.uni-hamburg.de/object/lexm_lexmperson_$1', label = 'LexM', remark = 'Identifier for a musician in the Lexikon verfolgter Musiker und Musikerinnen der NS-Zeit', pattern = '%d%d%d%d%d%d%d%d' }, { 'Libris', property = 5587, section = 2, pattern = '%w+', link = 'https://libris.kb.se/$1', label = 'Sweden' }, { 'LIR', property = 886, section = 7, pattern = '%d+', link = 'http://www.e-lir.ch/e-LIR___Lexicon.$1.450.0.html', label = 'Lexicon Istoric Retic', remark = '{{lang|rm|Lexicon Istoric Retic}} (LIR) is a two volume version with a selection of articles published in Romansh.' }, { 'LNB', property = 1368, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number=$1&P_CON_LNG=ENG', label = 'Latvia', }, { 'Marina Militare', property = 3863, section = 3, pattern = '[1-9]%d*', link = 'http://www.marina.difesa.it/cosa-facciamo/per-la-difesa-sicurezza/fari/Pagine/$1.aspx', label = 'Italy', }, { 'MarineTraffic', property = 3601, section = 3, pattern = '%d%d%d%d%d%d%d%d%d%d', link = 'https://www.marinetraffic.com/en/ais/details/lights/$1', label = 'MarineTraffic', }, { 'MATHSN', property = 4955, section = 4, pattern = '[1-9]%d%d%d%d%d?%d?', link = 'https://mathscinet.ams.org/mathscinet/MRAuthorID/$1', label = 'MathSciNet', }, { 'MBA', property = 434, section = 5, category = 'MusicBrainz', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/artist/$1', label = 'MusicBrainz', remark = 'MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.' }, { 'MBAREA', property = 982, section = 3, category = 'MusicBrainz area', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/area/$1', label = 'MusicBrainz area', }, { 'MBI', property = 1330, section = 7, category = 'MusicBrainz instrument', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/instrument/$1', label = 'MusicBrainz instrument', }, { 'MBL', property = 966, section = 7, category = 'MusicBrainz label', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', label = 'MusicBrainz label', link = 'https://musicbrainz.org/label/$1', }, { 'MBP', property = 1004, section = 3, category = 'MusicBrainz place', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/place/$1', label = 'MusicBrainz place', }, { 'MBRG', property = 436, section = 7, category = 'MusicBrainz release group', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/release-group/$1', label = 'MusicBrainz release group', }, { 'MBS', property = 1407, section = 7, category = 'MusicBrainz series', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/series/$1', label = 'MusicBrainz series', }, { 'MBW', property = 435, section = 7, category = 'MusicBrainz work', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x', link = 'https://musicbrainz.org/work/$1', label = 'MusicBrainz work', }, { 'Mérimée', property = 380, section = 3, link = 'https://www.pop.culture.gouv.fr/notice/merimee/$1', label = 'Mérimée', patterns = {'[PEI]A%d[0-9AB]%d%d%d%d%d%d','ACR%d%d%d%d%d%d%d', 'MI%d%d%dB?', 'JAR%d%d%d%d%d%d%d', 'SPR%d%d%d%d%d%d%d'} }, { 'MGP', property = 549, section = 4, pattern = '%d%d?%d?%d?%d?%d?', link = 'https://www.mathgenealogy.org/id.php?id=$1', label = 'Mathematics Genealogy Project', remark = 'Mathematics Genealogy Project is a web-based database for the academic genealogy of mathematicians.' }, { 'MoMA', property = 2174, section = 5, link = 'https://www.moma.org/artists/$1', label = 'Museum of Modern Art', pattern = '%d+' }, { 'Musée d\'Orsay', property = 2268, section = 5, link = 'https://www.musee-orsay.fr/en/ressources/repertoire-artistes-personnalites/$1', label = 'Musée d\'Orsay', pattern = '[1-9]%d?%d?%d?%d?%d?' }, { 'NARA', property = 1225, section = 7, pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?', link = 'https://catalog.archives.gov/id/$1', label = 'NARA', remark = 'National Archives and Records Administration (NARA) is an independent agency of the United States government charged with preserving and documenting government and historical records.' }, { 'National Gallery of Canada', property = 5368, section = 5, label = 'National Gallery of Canada', link = 'https://www.gallery.ca/collection/artist/$1', pattern = '%C+' }, { 'NCL', property = 1048, section = 2, pattern = '%d+', link = 'http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence=$1&CON_LNG=ENG', label = 'Taiwan', remark = 'National Central Library is the national library of Taiwan, Republic of China.' }, { 'NDL', property = 349, section = 2, link = 'https://id.ndl.go.jp/auth/ndlna/$1', patterns = {'a1%d?%d%d%d%d%d%d%d%d', 's?%d?%d%d%d%d%d%d%d%d'}, label = 'Japan', remark = 'Authority data listed in the catalog of the national library of Japan. Search also available via [http://viaf.org/ VIAF].' }, { 'NGA', property = 3563, section = 3, pattern = '11[0-6]%-%d+%.?%d*', link = 'https://wikidata-externalid-url.toolforge.org/?url=https%3A%2F%2Fmsi.nga.mil%2FqueryResults%3Fpublications%2Fngalol%2Flights-buoys%3Fvolume%3D%251%26featureNumber%3D%252%26includeRemovals%3Dfalse%26output%3Dhtml&exp=(%5Cd%7B3%7D)-(.*)&id=$1', label = 'NGA', }, { 'NGV', property = 2041, section = 5, pattern = '%d+', link = 'https://www.ngv.vic.gov.au/explore/collection/artist/$1/', label = 'Victoria', }, { 'NKC', property = 691, section = 2, pattern = '[a-z][a-z][a-z]?[a-z]?%d%d%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?', link = 'https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=$1&CON_LNG=ENG', label = 'Czech Republic', remark = 'National Library of the Czech Republic ({{lang|cs|Národní knihovna České republiky}}) is the central library of the Czech Republic.' }, { 'NLA', property = 409, section = 2, pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?', link = 'https://nla.gov.au/anbd.aut-an$1', label = 'Australia', remark = "NLA Trove's People and Organisation view allows the discovery of biographical and other contextual information about people and organisations. Search also available via [http://viaf.org/ VIAF]." }, { 'NLG', property = 3348, section = 2, pattern = '[1-9]%d*', link = 'https://data.nlg.gr/resource/authority/record$1', label = 'Greece', }, { 'NLK', property = 5034, section = 2, link = 'https://lod.nl.go.kr/resource/$1', label = 'Korea', patterns = {'%u%u%u%d%d%d%d%a?%d%d%d%d%d?%d?', 'CNTS%-%d%d%d%d%d%d%d%d%d%d%d'} }, { 'NLR', property = 1003, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'http://aleph.bibnat.ro:8991/F/?func=direct&local_base=NLR10&doc_number=$1', label = 'Romania', }, { 'Norwegian List of Lights', property = 4055, section = 3, pattern = '%d+', prefix = 'Norway', }, { 'NSK', property = 1375, section = 2, pattern = '%d%d%d%d%d%d%d%d%d', link = 'http://katalog.nsk.hr/F/?func=direct&doc_number=$1&local_base=nsk10', label = 'Croatia', }, { 'NTA', property = 1006, section = 2, pattern = '%d%d%d%d%d%d%d%d[%dX]', link = 'http://data.bibliotheken.nl/id/thes/p$1', label = 'Netherlands', }, { 'Online List of Lights', property = 3223, section = 3, pattern = '[1-9]%d*', label = 'OLL', link = 'http://listoflights.org/leuchtfeuer/detail?id=$1.aspx' }, { 'ORCID', property = 496, section = 4, label = 'ORCID', valid = 'orcidV', link = 'https://orcid.org/$1', remark = 'Authority data on researchers, academics, etc. The ID range is a subset of the [[ISNI]] range. For free text links (for example when mentioning a person on page which is not about them), it is also possible to use {{tl|ORCID}}. Authors—including Wikipedia editors—may obtain an ORCID by signing up at [https://orcid.org/register orcid.org/register]. Please take care not to confuse ORCID and ISNI identifiers.' }, { 'PIC', property = 2750, section = 5, pattern = '[1-9]%d*', link = 'https://pic.nypl.org/constituents/$1', label = 'Photographers\' Identities', remark = "PIC is a photographer's database. It is maintained by the New York Public Library." }, { 'Pleiades', property = 1584, section = 3, label = 'Pleiades', link = 'https://pleiades.stoa.org/places/$1', pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?', remark = "Pleiades is a joint project of the Institute for the Study of the Ancient World at [[New York University]] and the Ancient World Mapping Center at the [[University of North Carolina]] at Chapel Hill." }, { 'PLWABN', property = 7293, section = 2, pattern = '981%d%d%d%d%d%d%d%d05606*', link = 'https://dbn.bn.org.pl/descriptor-details/$1', label = 'Poland', }, { 'PortugalA', property = 1005, section = 2, pattern = '[1-9]%d*', link = 'http://id.bnportugal.gov.pt/aut/catbnp/$1', label = 'Portugal', }, { 'Portuguese lighthouse', property = 4423, section = 3, patterns = {'[1-9]%d*', '[1-9]%d*.%d+'}, prefix = 'Portugal', }, { 'NLP', property = 1695, section = 2, pattern = 'a%d%d%d%d%d%d%d%d%d%d%d%d%d', link = 'https://dbn.bn.org.pl/descriptor-details/$1', label = 'Poland', suppressedbyproperty = {7293} }, { 'PhilPeople', property = 3233, section = 4, link = 'https://philpeople.org/profiles/$1', label = 'PhilPeople', patterns = {'[a-z%-]+', '[a-z%-]+%-%d'} }, { 'Prado', property = 5321, section = 5, link = 'https://www.museodelprado.es/en/the-collection/artist/wd/$1', label = 'Prado', pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x' }, { 'Publons', property = 3829, section = 4, pattern = '%d+', link = 'https://publons.com/author/$1/', label = 'Publons' }, { 'RID', property = 1053, section = 4, patterns = {'[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-19%d%d', '[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-20%d%d'}, link = 'https://www.researcherid.com/rid/$1', label = 'ResearcherID', remark = 'An identifying system for scientific authors. The system was introduced in January 2008 by [[Thomson Reuters]]. The combined use of the [[digital object identifier]] with the ResearcherID allows for a unique association of authors and scientific articles.' }, { 'RISM', property = 5504, section = 7, label = 'RISM', patterns = {'pe[1-9]%d*', 'ks[1-9]%d*', '[1-9]%d*'}, link = 'https://opac.rism.info/search?id=$1', }, { 'RKDartists', property = 650, section = 5, pattern = '[1-9]%d?%d?%d?%d?%d?', link = 'https://rkd.nl/en/explore/artists/$1', label = 'RKD Artists', remark = 'RKDartists is an online database using a controlled vocabulary currently containing around 200,000+ names and other information about artists. Names in RKDartists may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names).' }, { 'RKDID', property = 350, section = 7, pattern = '[1-9]%d?%d?%d?%d?%d?', link = 'https://rkd.nl/nl/explore/images/$1', label = 'RKD ID', }, { 'RSL', property = 947, section = 2, pattern = '%d%d?%d?%d?%d?%d?%d?%d?%d?', link = 'http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request=$1&CON_LNG=ENG', label = 'Russia', remark = 'Russian State Library ({{lang|ru|Российская государственная библиотека}}) is the national library of Russia.' }, { 'Scopus', property = 1153, section = 4, pattern = '[1-9]%d%d%d%d%d%d%d%d%d%d?', link = 'https://www.scopus.com/authid/detail.uri?authorId=$1', label = 'Scopus', remark = 'SciVerse Scopus is a bibliographic database containing abstracts and citations for academic journal articles. It covers nearly 19,500 titles from over 5,000 international publishers, of which 16,500 are peer-reviewed journals in the scientific, technical, medical, and social sciences (including arts and humanities).' }, { 'SELIBR', property = 906, section = 2, pattern = '[1-9]%d%d%d%d%d?', link = 'https://libris.kb.se/auth/$1', label = 'Sweden', remark = 'Authority data from the [[National Library of Sweden]]', suppressedbyproperty = {5587} }, { 'SIKART', property = 781, section = 5, pattern = '%d%d%d%d%d%d%d%d?%d?', link = 'http://www.sikart.ch/KuenstlerInnen.aspx?id=$1&lng=en', label = 'SIKART', remark = 'SIKART is a biographical dictionary and a database on visual art in Switzerland and Liechtenstein. It is published online by the Swiss Institute for Art Research (SIAR).' }, { 'SNAC-ID', property = 3430, section = 7, pattern = '%d*[A-Za-z][0-9A-Za-z]*', link = 'https://snaccooperative.org/ark:/99166/$1', label = 'SNAC', }, { 'Städel', property = 4581, section = 5, label = 'Städel', link = 'https://sammlung.staedelmuseum.de/en/person/$1', pattern = '%C+' }, { 'StadiumDB', property = 5288, section = 3, label = 'StadiumDB', link = 'http://stadiumdb.com/stadiums/$1', pattern = '%l%l%l/[_%w]+' }, { 'Structurae structure', property = 454, section = 3, pattern = '[12]0%d%d%d%d%d%d', label = 'Structurae', link = 'https://structurae.net/structures/$1', }, { 'Structurae person', property = 2418, section = 6, pattern = '10%d%d%d%d%d', label = 'Structurae', link = 'https://structurae.net/persons/$1', }, { 'SUDOC', property = 269, section = 7, label = 'IdRef', pattern = '%d%d%d%d%d%d%d%d[%dxX]', link = 'https://www.idref.fr/$1', remark = 'Authority data of people listed in the general catalogue of the University Documentation System of France. Also available from [http://www.sudoc.abes.fr/xslt//DB=2.1/SET=2/TTL=1/LNG=EN/ English-speaking catalog] (search author, click one book, click author name, take PPN= value of the URL)' }, { 'Sycomore', property = 1045, section = 6, link = 'https://www2.assemblee-nationale.fr/sycomore/fiche/(num_dept)/$1', label = 'Sycomore', pattern = '[1-9]%d?%d?%d?%d?' }, { 'TA98', property = 1323, section = 7, pattern = 'A%d%d%.%d%.%d%d%.%d%d%d[FM]?', link = 'http://tools.wmflabs.org/wikidata-externalid-url/?p=1323&url_prefix=https:%2F%2Fwww.unifr.ch%2Fifaa%2FPublic%2FEntryPage%2FTA98%20Tree%2FEntity%20TA98%20EN%2F&url_suffix=%20Entity%20TA98%20EN.htm&id=$1', label = 'Terminologia Anatomica', }, { 'TDVİA', property = 7314, section = 7, pattern = '[%d%l/-]+', link = 'https://islamansiklopedisi.org.tr/$1', label = 'İslâm Ansiklopedisi', }, { 'TePapa', property = 3544, section = 5, pattern = '%d+', link = 'https://collections.tepapa.govt.nz/agent/$1', label = 'Te Papa (New Zealand)' }, { 'TLS', property = 1362, section = 7, valid = 'tlsV', link = 'http://tls.theaterwissenschaft.ch/wiki/$1', label = 'Theaterlexikon', remark = '{{lang|de|Theaterlexikon der Schweiz}} (TLS) is an encyclopedia about theatre in Switzerland. It was developed by the Institute of Theatre Studies of the [[University of Berne]].' }, { 'Trove', property = 1315, section = 6, label = 'Trove', pattern = '[1-9]%d%d%d%d%d%d?%d?', link = 'https://trove.nla.gov.au/people/$1', }, { 'UKPARL', property = 6213, section = 6, pattern = '[a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d]', link = 'https://id.parliament.uk/$1', label = 'UK Parliament', remark = 'UK parliament member data' }, { 'ULAN', property = 245, section = 5, pattern = '500%d%d%d%d%d%d', link = 'https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=$1', label = 'ULAN', remark = 'ULAN is an online database using a controlled vocabulary currently containing around 293,000 names and other information about artists. Names in ULAN may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names).' }, { 'USCG', property = 3723, section = 3, prefix = '[[USCG (identifier)|USCG]]', customlink = 'uscgLink' }, { 'USCongress', property = 1157, section = 6, pattern = '[A-Z]00[01]%d%d%d', link = 'http://bioguide.congress.gov/scripts/biodisplay.pl?index=$1', label = 'US Congress', remark = 'Biographical Directory of the United States Congress is a biographical dictionary of all present and former members of the United States Congress and its predecessor, the Continental Congress. Also included are Delegates from territories and the District of Columbia and Resident Commissioners from the Philippines and Puerto Rico.' }, { 'VcBA', property = 8034, section = 2, pattern = '49[0-9]%/[1-9][0-9]?[0-9]?[0-9]?[0-9]?[0-9]?', link = 'https://wikidata-externalid-url.toolforge.org/?p=8034&url_prefix=https://opac.vatlib.it/auth/detail/&id=$1', label = 'Vatican', remark = 'Vatican Library document data' }, { 'VIAF', property = 214, section = 1, label = 'VIAF', patterns = {'[1-9]%d%d?%d?%d?%d?%d?%d?%d?', '[1-9]%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d?%d?%d?'}, link = 'https://viaf.org/viaf/$1', remark = 'International authority data from the Online Computer Library Center (OCLC)' }, { 'Vitaskrá', property = 3993, section = 3, pattern = '[1-9]%d*', prefix = 'Iceland' }, { 'WorldCat Entities', property = 10832, section = 1, link = 'https://id.oclc.org/worldcat/entity/$1', label = 'WorldCat', patterns = {'%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w', '[QP][1-9]%d*'}, remark = 'WorldCat Entities for persons and works, by [[OCLC]]', }, { 'World Waterfall', property = 3326, section = 3, link = 'https://www.worldwaterfalldatabase.com/index.php/waterfall/$1', label = 'World Waterfall', pattern = '%d+' }, { 'ZBMATH', property = 1556, section = 4, patterns = {'%l[%l%-]*','%l[%l%-]*%.%l[%l%-]*','%l[%l%-]*.%d*','%l[%l%-]*%.%l[%l%-]*%.%d*'}, link = 'https://zbmath.org/authors/?q=ai:$1', label = 'zbMATH', } } p.sections = { [1] = {name = 'International', hidelabelwhenalone = true}, [2] = {name = 'National'}, [3] = {name = 'Geographic'}, [4] = {name = 'Academics'}, [5] = {name = 'Artists'}, [6] = {name = 'People'}, [7] = {name = 'Other', hidelabelwhenalone = true} } p.whitelists = { arts = { topic = 2018526, properties = {268, 214, 7859, 3372, 6804, 1907, 4186, 2092, 1908, 1707, 6829, 2349, 6792, 227, 1960, 347, 1248, 244, 1225, 2041, 409, 2750, 650, 350, 781, 3430, 3544, 1315, 245, 1986, 7902, 651, 791, 7303} }, lighthouse = { topic = 39715, properties = {3563, 4055, 3223, 4423, 3723, 3993, 3562, 2980, 4038, 3920, 4143, 3863, 3601} }, ch = { topic = 39, properties = {902, 886, 3065, 781, 1362}, }, cz = {topic = 213, properties = {691}}, cl = {topic = 298, properties = {1890}}, es = {topic = 29, properties = {950, 9984}}, gr = {topic = 41, properties = {3348}}, hr = {topic = 224, properties = {1375}}, il = {topic = 801, properties = {8189, 1736}}, it = {topic = 38, properties = {396, 3863, 1986, 8034}}, ja = {topic = 17, properties = {349, 271}}, kr = {topic = 884, properties = {5034}}, lv = {topic = 211, properties = {1368}}, nl = {topic = 55, properties = {651, 1006, 650, 350}}, pl = {topic = 36, properties = {1695, 7293}}, ro = {topic = 218, properties = {1003}}, ru = {topic = 159, properties = {947}}, sv = {topic = 34, properties = {906, 5587}}, tr = {topic = 43, properties = {7314}}, tw = {topic = 865, properties = {1048}}, uy = {topic = 77, properties = {2558}} } p.auto_additional = { -- defines properties to check when additional=auto 527, -- has part(s) 150, -- contains the administrative territorial entity 355, -- has subsidiary } return p 9ae0144b113daabc4b65bcd79ccd0ae3152eea27 Module:Authority control/auxiliary 828 1077 2353 2352 2023-10-01T14:17:32Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Authority_control/auxiliary]] Scribunto text/plain require('strict') local p = {} --[[======================================================]] --[[ Format validation functions ]] --[[======================================================]] p.botanistV = function(id) return mw.ustring.match(id,"^[%u%l%d%. '-]+$") end p.validateIsni = function(id) --Validate ISNI (and ORCID) and retuns it as a 16 characters string or returns false if it's invalid. See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier id = id:gsub( '[ %-]', '' ):upper() if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d[%dX]$' ) then return false end local total = 0 for i = 1, 15 do local digit = id:byte( i ) - 48 --Get integer value total = (total + digit) * 2 end local remainder = total % 11 local result = (12 - remainder) % 11 local checkdigit if result == 10 then checkdigit = 'X' else checkdigit=tostring( result ) end if checkdigit ~= string.char( id:byte( 16 ) ) then return false end return id end p.orcidV = function(id) id = p.validateIsni(id) if not id then return false end return id:sub( 1, 4 )..'-'..id:sub( 5, 8 )..'-'..id:sub( 9, 12 )..'-'..id:sub( 13, 16 ) end p.tlsV = function(id) id = id:gsub(' +', '_') local idlen = mw.ustring.len(id) if idlen < 4 or idlen > 90 then return false end local regex = '^%u'..string.rep("[%w_',%.%-%(%)%*%/–&]", idlen - 1)..'$' if not mw.ustring.match(id,regex ) then return false end return id end --[[======================================================]] --[[ Custom link functions ]] --[[======================================================]] p.ISILlink = function(id,label) if not id:match('^%D%D?%D?%D?%-.+$') then return false end for _,prefix in ipairs({'AT','AU','BE','CA','CH','DE','FI','FR','IT','KR','NZ','US','ZDB'}) do if id:match('^'..prefix..'%-') then return '<span class="uid">[https://w3id.org/isil/'..id..' ' .. (label or 'ISIL') .. ']</span>' end end return '[[International Standard Identifier for Libraries and Related Organizations|ISIL]]\n**<span class="uid">' .. id .. '</span>' end p.uscgLink = function(id) local id2 = id:match( '^[1-7]%-%d%d?%d?%d?%d?$' ) or id:match( '^[1-7]%-%d%d?%d?%d?%d?%.%d*[1-9]$' ) if id2 then return '<span class="uid">[https://www.navcen.uscg.gov/pdf/lightlists/LightList%20V'..mw.ustring.sub(id2,1,1)..'.pdf '..id2..']</span>' else return false end end p.ccg = function(id) id = id:match('^[NAIP]?[1-9]%d*$') or id:match('^[NAIP]?[1-9]%d*%.%d+$') if not id then return false end local link = 'https://www.notmar.gc.ca/' local prefix = string.sub(id, 1, 1) -- get first character of id local suffix = string.sub(id, 2) -- remove first character of id local interval = require('Module:Interval')._main local v if prefix=='N' then local int = interval({1,7.5,14.4,100,121,173,211,235,269.99,326,396,450.1,471.7,499,n=suffix}) if int=='1-2' then v = 1 elseif int=='2-3' then v = 75 elseif int=='3-4' then v = 144 elseif int=='4-5' then v = 100 elseif int=='5-6' then v = 121 elseif int=='6-7' then v = 173 elseif int=='7-8' then v = 211 elseif int=='8-9' then v = 235 elseif int=='9-10' then v = 26999 elseif int=='10-11' then v = 326 elseif int=='11-12' then v = 396 elseif int=='12-13' then v = 4501 elseif int=='13-14' then v = 4717 elseif int=='14-15' then v = 499 end link = link .. 'publications/list-lights/newfoundland/n' .. v .. '-en' elseif prefix=='A' then local int = interval({5,114.5,145,163,268,271,301.5,327,686.5,704.85,883.2,942,1085,1169.1,1584.5,1773,1823.55,2190,2369,2389,n=suffix}) if int=='1-2' then v = 5 elseif int=='2-3' then v = 1145 elseif int=='3-4' then v = 145 elseif int=='4-5' then v = 162 elseif int=='5-6' then v = 268 elseif int=='6-7' then v = 271 elseif int=='7-8' then v = 3015 elseif int=='8-9' then v = 327 elseif int=='9-10' then v = 6865 elseif int=='10-11' then v = 7048 elseif int=='11-12' then v = 883 elseif int=='12-13' then v = 942 elseif int=='13-14' then v = 1085 elseif int=='14-15' then v = 11691 elseif int=='15-16' then v = 15845 elseif int=='16-17' then v = 1773 elseif int=='17-18' then v = 182355 elseif int=='18-19' then v = 2190 elseif int=='19-20' then v = 2369 elseif int=='20-21' then v = 2389 end link = link .. 'publications/list-lights/atl/a' .. v .. '-en' elseif prefix=='I' then local int = interval({0.05,401.1,403.4,551.06,552,624,708,731.2,768,814,983,1046,1059.6,1082,1162,1204.7,1233.3,1328,1330,1346.2,1377.8,1408,1410,1420,1445,1470,1520,1534,1540.6,1554,1557.7,1558.8,1563.1,1625.5,1671.7,1716.96,2545,n=suffix}) if int=='1-2' then v = '01' elseif int=='2-3' then v = 4011 elseif int=='3-4' then v = 4034 elseif int=='4-5' then v = 55106 elseif int=='5-6' then v = 552 elseif int=='6-7' then v = 624 elseif int=='7-8' then v = 708 elseif int=='8-9' then v = 7312 elseif int=='9-10' then v = 768 elseif int=='10-11' then v = 814 elseif int=='11-12' then v = 983 elseif int=='12-13' then v = 1046 elseif int=='13-14' then v = 10596 elseif int=='14-15' then v = 1082 elseif int=='15-16' then v = 1162 elseif int=='16-17' then v = 12047 elseif int=='17-18' then v = 12333 elseif int=='18-19' then v = 1328 elseif int=='19-20' then v = 1330 elseif int=='20-21' then v = 13462 elseif int=='21-22' then v = 13778 elseif int=='22-23' then v = 1408 elseif int=='23-24' then v = 1410 elseif int=='24-25' then v = 1420 elseif int=='25-26' then v = 1445 elseif int=='26-27' then v = 1470 elseif int=='27-28' then v = 1520 elseif int=='28-29' then v = 1534 elseif int=='29-30' then v = 15406 elseif int=='30-31' then v = 1554 elseif int=='31-32' then v = 15577 elseif int=='32-33' then v = 15588 elseif int=='33-34' then v = 1562 elseif int=='34-35' then v = 16255 elseif int=='35-36' then v = 16717 elseif int=='36-37' then v = 171696 elseif int=='37-38' then v = 2545 end link = link .. 'publications/list-lights/inland-waters/i' .. v .. '-en' elseif prefix=='P' then link = link .. 'publications/list-lights/pac/p' else link = link .. 'list-lights' end return '[[CCG (identifier)|CCG]] <span class="uid">[' .. link .. ' ' .. id .. ']</span>' end return p 4fe1ede4f4598dd1edc3073b3d484dee8411e094 Module:Authority control/documentation 828 1078 2355 2354 2023-10-01T14:17:33Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Authority_control/documentation]] Scribunto text/plain require('strict') local p = {} local configfile = 'Module:Authority control/config' -- default configuation module local arg = mw.getCurrentFrame().args.config if arg and arg~='' then configfile = 'Module:Authority control/config/' .. arg end local config if mw.title.new(configfile).exists then config = mw.loadData(configfile) else return error('Invalid configuration file',0) end local title = mw.title.getCurrentTitle() local namespace = title.namespace local testcases = title.subpageText == config.i18n.testcases local makelink = require(config.i18n.ACmodule).makelink local lang = mw.getContentLanguage() local function needsAttention(sortkey) return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]' end local function addCat(cat,sortkey) if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then local redlinkcat = '' if testcases == false and mw.title.new(cat, 14).exists == false then redlinkcat = needsAttention('N') end if sortkey then cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]' else cat = '[[' .. config.i18n.category .. ':'..cat..']]' end cat = cat .. redlinkcat return cat else return '' end end -- Creates a human-readable standalone wikitable version of conf, and tracking categories with page counts, for use in the documentation function p.docConfTable(frame) local function checkcat(category,label) local ret='[[:Category:'..category..'|'..label..']]' --if mw.title.new(category,14).exists == false then --ret = ret..' <span class="plainlinks" style="font-size:85%;">&#91;['..tostring(mw.uri.fullUrl('Category:'..category,'action=edit&preload=Template:Authority_control/preload'))..' create]&#93;</span>' --end return ret end local doc = '' local a, P, f = 0, 0, 0 --cumulative sums local count = frame.args.count or false local columns = 3 + (count and 1 or 0) local row = function(conf) local category = conf.category or conf[1] local articleCat = string.format(config.i18n.cat,category) local articleCount = mw.site.stats.pagesInCategory(articleCat,config.i18n.pages) local errorCat = conf.errorcat or string.format( config.i18n.cat, config.i18n.faulty .. ' ' .. category ) local errorCount = mw.site.stats.pagesInCategory(errorCat,config.i18n.pages) P = P + 1 --property count a = a + articleCount f = f + errorCount local getstatement = function(id,propid,qualid) local statement = mw.wikibase.getBestStatements('P' .. id, 'P' .. propid) local value if statement and statement[1] and statement[1].mainsnak.datavalue.value.id then value = statement[1].mainsnak.datavalue.value.id local qual if qualid and statement[1].qualifiers['P' .. qualid][1].datavalue.value then qual = statement[1].qualifiers['P' .. qualid][1].datavalue.value end return value, qual end end local _, example = getstatement(conf.property, 1855, conf.property) if not example then example = '' end example = frame:expandTemplate{title = "Hlist", args = {'\n' .. makelink(conf,{id=example},1)}} .. '\n' local getname = function(nameprop) local name = getstatement(conf.property,nameprop) if name then return frame:expandTemplate{title='Wikidata fallback link',args={name}} end end local name = getname(1629) or getname(10726) or '' local out = '' if conf.remark then out = out .. '<tr><td rowspan=2>' else out = out .. '<tr><td>' end out = out .. name .. '</td>' .. '<td style="text-align: center">' .. config.sections[conf.section].name .. '</td>' .. '<td data-sort-value=' .. conf.property .. '>' .. frame:expandTemplate{title='Wikidata property link',args={id='f',conf.property}} .. '</td>' .. '<td>' .. example .. '</td>' if count then out = out .. '<td style="text-align: right;">'..checkcat(articleCat,lang:formatNum(articleCount))..' ('..checkcat(errorCat,errorCount)..')</td>' end out = out .. '</tr>' if conf.remark then out = out .. "<tr class='expand-child'><td colspan=" .. columns .. ">'''Remarks:''' " .. frame:preprocess{text = conf.remark} .. "</td></tr>" end return out end local doc = '<table class="wikitable sortable">' .. '<tr><th>' .. lang:ucfirst(config.i18n.identifier) .. '</th>' .. '<th>' .. config.i18n.Section .. '</th>' .. '<th data-sort-type=number>' .. config.i18n.WDproperty .. '</th>' .. '<th>' .. config.i18n.Appears_as .. '</th>' if count then doc = doc .. '<th>[[:' .. config.i18n.category .. ':' .. config.i18n.maincat .. '|' .. config.i18n.Articles .. ']] ' .. '([[:' .. config.i18n.category .. ':' .. config.i18n.faultcat .. '|' .. config.i18n.Faults .. ']])</th>' end doc = doc .. '</tr>' for _, conf in pairs(config.config) do doc = doc .. row(conf) end if count then doc = doc .. '<tr><th style="text-align: right;" colspan=' .. columns-1 .. '>' .. config.i18n.Totals .. '</th>' .. '<th style="text-align: right;">' .. P .. '</th>' .. '<th style="text-align: right;">' .. lang:formatNum(a) .. ' ([[:' .. config.i18n.category .. ':' .. config.i18n.allfaultycat .. '|' .. f .. ']])</th></tr>' end doc = doc .. '</table>' return doc end function p.errorTable(frame) local Table = '<table class="wikitable sortable">'.. '<tr><th>' .. config.i18n.WDproperty .. '</th>'.. '<th>' .. lang:ucfirst(config.i18n.faulty) .. ' ' .. config.i18n.identifiers .. '</th>'.. '<th>[[:' .. config.i18n.category .. ':' .. config.i18n.faultcat .. '|' .. config.i18n.Tracking_category .. ']]</th></tr>' local f, P = 0, 0, 0 --cumulative sums for _, conf in pairs(config.config) do local category = conf.errorcat or string.format( config.i18n.cat, config.i18n.faulty .. ' ' .. (conf.category or conf[1]) ) local count = mw.site.stats.pagesInCategory(category,'pages') if count > 0 then P = P + 1 f = f + count Table = Table..'<tr><td>'..frame:expandTemplate{ title = config.i18n.linktemplate, args = { id = 'f', conf.property } } .. '</td>'.. '<td style="text-align:center;">'..tostring(count)..'</td>'.. '<td>[[:' .. config.i18n.category .. ':'..category..']]</td></tr>' end end Table = Table..'<tr><th>' .. config.i18n.Totals .. '</th>'.. '<th style="text-align:center;">' .. '[[:' .. config.i18n.category .. ':' .. config.i18n.allfaultycat .. '|' .. tostring(f) .. ']]</th>'.. '<th style="text-align:center;">'..tostring(P)..'</th></tr></table>' return Table end function p.whitelisttable(frame) local Table = '<table class="wikitable sortable">'.. '<tr><th>' .. config.i18n.Code .. '</th>'.. '<th>' .. config.i18n.Topic .. '</th>'.. '<th>' .. lang:ucfirst(config.i18n.identifiers) .. '</th></tr>' for code, wlist in pairs(config.whitelists) do Table = Table .. '<tr><th>' .. code .. '</th>'.. '<td>[[' .. mw.wikibase.getSitelink('Q' .. wlist.topic) .. ']]</td>' local plist = {} for _, property in pairs(wlist.properties) do table.insert(plist,frame:expandTemplate{title='Wikidata property link', args={'P' .. property}}) end Table = Table .. '<td>' .. table.concat(plist,', ') .. '</td></tr>' end Table = Table .. '</table>' return Table end function p.sectiontable(frame) local Table = '<table class="wikitable sortable">'.. '<tr><th>' .. config.i18n.Section .. '</th>' .. '<th>' .. config.i18n.Description .. '</th>'.. '<th>' .. lang:ucfirst(config.i18n.identifiers) .. '</th></tr>' for number,section in ipairs(config.sections) do Table = Table .. '<tr><th>' .. number .. '</th>' .. '<td>' .. section.name .. '</td>' local plist = {} for _,id in pairs(config.config) do if id.section == number then table.insert(plist,frame:expandTemplate{title=config.i18n.linktemplate, args={'P' .. id.property}}) end end Table = Table .. '<td>' .. table.concat(plist,', ') .. '</td></tr>' end Table = Table .. '</table>' return Table end -- Main/External Call for Pages with authority control identifiers function p.autoDetect(frame) local function whichTOC(frame) -- standardize TOC behavior via {{CatAutoTOC}} return frame:expandTemplate{ title = 'CatAutoTOC', args = { align = 'center' } } end local function wpa(frame,id,faulty) for _,conf in pairs(config.config) do if conf.category == id or conf[1] == id then local getname = function(nameprop) local name = mw.wikibase.getBestStatements('P'..conf.property,nameprop) if name and name[1] and name[1].mainsnak.datavalue.value.id then return frame:expandTemplate{title='Wikidata fallback link',args={name[1].mainsnak.datavalue.value.id}} end end local name = getname('P1629') or getname('P10726') or '' local outString = frame:expandTemplate{ title = 'Category explanation', args = {'articles with '..name..' identifiers.'..' Please do not add [[Wikipedia:Categorization#Subcategorization|subcategories]].\nPages in this category should only be added by [[Module:Authority control]].'}} .. frame:expandTemplate{ title = 'Cat more', args = {'Wikipedia:Authority control', ':d:Property:P'..conf.property} } .. frame:expandTemplate{ title = 'Possibly empty category' } .. frame:expandTemplate{ title = 'Wikipedia category', args = { hidden = 'yes', tracking = 'yes' } } .. frame:expandTemplate{ title = 'Polluted category' } .. whichTOC( frame ) if faulty then outString = outString .. addCat(config.i18n.faultcat,id) .. addCat(string.format(config.i18n.cat, id)) else outString = outString .. addCat(config.i18n.maincat,id) end return outString end end end if namespace == 14 then --cat space local wpfaultyID = mw.ustring.match(title.text, 'Articles with faulty (.+) identifiers') local wpID = mw.ustring.match(title.text, 'Articles with (.+) identifiers') if wpfaultyID then return wpa(frame,wpfaultyID,true)-- must be before wpID check, in case they both match elseif wpID then return wpa(frame,wpID,false) else return needsAttention('U') end end end function p.idproposal(frame) local property = frame.args.property or '' local out = '<ul><li>Wikidata property: ' .. frame:expandTemplate{title='Wikidata property link', args={'P' .. property}} .. '</li>' out = out .. '<li>Section: ' local section = frame.args.section or '' if section~='' then out = out .. config.sections[section].name .. ' (' .. section .. ')' else out = out .. 'Not specified' end out = out .. '</li><li>Link: ' local link = frame.args.link or '' if link=='' then link = mw.wikibase.getBestStatements('P'..property,'P1630') or '' link = link[1].mainsnak.datavalue.value end if link~='' then out = out .. '<code>' .. link .. '</code>' else out = out .. 'Not specified' end out = out .. '</li><li>Label: ' local label = frame.args.label or '' if label~='' then out = out .. label else out = out .. 'Not specified' end out = out .. '</li><li>Example: ' local example = mw.wikibase.getBestStatements('P'..property,'P1855') or '' if example then example = example[1].qualifiers['P'..property][1].datavalue.value example = frame:expandTemplate{title = "Hlist", args = {'\n' .. makelink({[1]='',link=link,label=label},{id=example},1)}} .. '\n' out = out .. example else out = out .. 'Not available' end out = out .. '</li></ul>' return out end return p 0cc6ccce20ffd440b927baba266e176d5980bc71 Template:Authority control/related 10 1079 2357 2356 2023-10-01T14:17:33Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Authority_control/related]] wikitext text/x-wiki {{Sidebar | templatestyles = Template:Lua sidebar/styles.css | title = [[Wikipedia:Authority control]] | content2 = '''[[Template:Authority control|Template]]''' {{flatlist}} * [[Template talk:Authority control|talk]] * [[Template:Authority control/sandbox|sandbox]] * [[Template:Authority control/staging|staging]] * [[Template:Authority control/testcases|testcases]] * [[Template:Authority control/doc|doc]] * [[Special:PrefixIndex/Template:Authority control/|subpages]] {{endflatlist}} | content3 = '''[[Module:Authority control|Module]]''' {{flatlist}} * [[Module:Authority control/sandbox|sandbox]] * [[Module talk:Authority control/testcases|testcases]] * [[Module:Authority control/doc|doc]] * [[Special:PrefixIndex/Module:Authority control/|subpages]] {{endflatlist}} | content4 = '''[[Module:Authority control/config|Config]]''' {{flatlist}} * [[Module:Authority control/config/sandbox|sandbox]] * [[Module:Authority control/config/staging|staging]] {{endflatlist}} | content5 = '''[[Module:Authority control/auxiliary|Auxiliary]]''' {{flatlist}} * [[Module:Authority control/auxiliary/sandbox|sandbox]] {{endflatlist}} | content6 = '''[[Module:Authority control/documentation|Doc module]]''' {{flatlist}} * [[Module:Authority control/documentation/sandbox|sandbox]] {{endflatlist}} | content7 = '''[[:Category:Wikipedia authority control|Category]]''' {{flatlist}} * [[:Category:Pages with authority control identifiers needing attention|attention]] * [[Wikipedia:Authority control/dashboard|dashboard]] {{endflatlist}} }} 9c16571badbcf205b4c1f96317d8abab39779051 Bonnie Parker 0 1080 2359 2358 2023-10-01T14:17:34Z Führerredux 2 1 revision imported from [[:wikipedia:Bonnie_Parker]] wikitext text/x-wiki #REDIRECT [[Bonnie and Clyde#Bonnie Parker]] {{Redirect category shell|1= {{R with Wikidata item|Q2319886}} {{R to section}} {{R to joint biography}} }} {{Authority control}} {{DEFAULTSORT:Parker, Bonnie}} [[Category:1910 births]] [[Category:1934 deaths]] [[Category:American female murderers]] [[Category:People from Runnels County, Texas]] [[Category:Barrow Gang]] [[Category:People from Dallas]] e7a0b6232a498c351b7fb36411246efb85cbee9e Clyde Barrow 0 1081 2361 2360 2023-10-01T14:17:34Z Führerredux 2 1 revision imported from [[:wikipedia:Clyde_Barrow]] wikitext text/x-wiki #REDIRECT [[Bonnie and Clyde#Clyde Barrow]] {{Redirect category shell|1= {{R with Wikidata item|Q3320282}} {{R to section}} {{R to joint biography}} }} {{DEFAULTSORT:Barrow, Clyde}} {{Authority control}} [[Category:1909 births]] [[Category:Barrow Gang]] [[Category:People from Ellis County, Texas]] [[Category:Male murderers]] [[Category:American male criminals]] [[Category:People from Dallas]] 261d36161d41327ced8a82681d5d9a5e12814e83 Module:Authority control/doc 828 1082 2363 2362 2023-10-01T14:18:04Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Authority_control/doc]] wikitext text/x-wiki {{High-risk}} {{Module rating|protected}} {{Authority control/related}} {{Lua|Module:Navbox|Module:ResolveEntityId}} This module contains the code for the {{T|Authority control}} template. Please see [[Template:Authority control/doc]]. <includeonly>{{sandbox other|| [[Category:Modules using data from Wikidata]] [[Category:Wikipedia authority control]] }}</includeonly> 7b92fcf75d5208e71e4bbc4dd06b8171884722e4 Megali Idea 0 1083 2366 2365 2023-10-01T14:19:56Z Führerredux 2 1 revision imported from [[:wikipedia:Megali_Idea]] wikitext text/x-wiki {{Short description|Irredentist concept}} {{Redirect|Greater Greece|the Ancient Greek settlements in southern Italy|Magna Graecia}} [[File:ParisPeace-Venizelos-Map.png|thumb|Map showing Greek ambitions at the Paris Peace Conference after WWI, 1919]] [[File:Map of Greater Greece.png|thumb|Map of Megali Hellas (Greater Greece) as proposed at the Paris Peace Conference of 1919 by [[Eleftherios Venizelos]], the leading major proponent of the Megali Idea at the time.]] [[File:Map Greece expansion 1832-1947-en.svg|thumb|The territorial expansion of Greece, 1832–1947.]] The '''Megali Idea''' ({{lang-el|Μεγάλη Ιδέα|Megáli Idéa|Great Idea}})<ref>{{cite book |url=https://books.google.com/books?id=AjDYlMB9amwC |title=The Mediterranean in the Age of Globalization: Migration, Welfare & Borders |last=Mateos |first=Natalia Ribas |publisher=[[Transaction Publishers]]|isbn=9781412837750 }}</ref> is a [[nationalist]]<ref>{{Citation |last=Miller |first=James Edward |title=Introduction: Manifest Destiny Meets the Megali Idea |date=2009-02-01 |url=http://dx.doi.org/10.5149/9780807887943_miller.6 |work=The United States and the Making of Modern Greece |pages=1–22 |publisher=University of North Carolina Press |doi=10.5149/9780807887943_miller.6 |isbn=9780807832479 |access-date=2022-10-21}}</ref><ref>{{Cite book |last=A. |first=Jenkins, Mary |url=http://worldcat.org/oclc/35675237 |title=To megali idea - dead or alive? : the domestic determinants of Greek foreign policy |date=1994 |publisher=Naval Postgraduate School |oclc=35675237}}</ref> and [[irredentist]] concept that expresses the goal of reviving the [[Byzantine Empire]],<ref>Roumen Daskalov, Tchavdar Marinov, Entangled Histories of the Balkans - Volume One: National Ideologies and Language Policies; BRILL, 2013; {{ISBN|900425076X}}, p. 200.</ref> by establishing a Greek state, which would include the large Greek populations that were still under [[Ottoman Empire|Ottoman]] rule after the end of the [[Greek War of Independence]] (1821–1829) and all the regions that had large Greek populations (parts of the southern [[Balkans]], [[Anatolia]] and [[Cyprus]]).<ref>{{Cite web|url=https://o.nsd.no/european_election_database/country/greece/introduction.html|title=European Election Database - Background - Greece|website=o.nsd.no}}</ref> The term appeared for the first time during the debates of [[Prime Ministers of Greece|Prime Minister]] [[Ioannis Kolettis]] with [[Otto of Greece|King Otto]] that preceded the promulgation of the 1844 constitution.<ref name="BA0">[https://www.britannica.com/place/Greece/Building-the-nation-1832-1913 ''History of Greece''] Encyclopædia Britannica Online</ref> It came to dominate foreign relations and played a significant role in domestic politics for much of the first century of Greek independence. The expression was new in 1844 but the concept had roots in the Greek popular psyche, which long had hopes of liberation from Ottoman rule and restoration of the Byzantine Empire.<ref name="BA0" /> <blockquote>Πάλι με χρόνια με καιρούς, :πάλι δικά μας θα 'ναι! (''Once more, as years and time go by, once more they shall be ours'').<ref name="BK0">D. Bolukbasi and D. Bölükbaşı, ''Turkey And Greece: The Aegean Disputes'', Routledge Cavendish 2004</ref></blockquote> The Megali Idea implies establishing a Greek state, which would be a territory encompassing mostly the former Byzantine lands from the [[Ionian Sea]] in the west to Anatolia and the [[Black Sea]] to the east and from [[Thrace]], [[Macedonia (region)|Macedonia]] and [[Epirus]] in the north to [[Crete]] and [[Cyprus]] to the south. This new state would have [[Constantinople]] as its capital: it would be the "Greece of Two Continents and Five Seas" ([[Europe]] and [[Asia]], the Ionian, [[Aegean Sea|Aegean]], [[Sea of Marmara|Marmara]], Black and [[Libyan Sea|Libyan]] Seas). If realized, this would expand modern Greece to roughly the same size and extent of the later Byzantine Empire, after its [[Byzantine Empire under the Palaiologos dynasty|restoration]] in 1261 AD. The Megali Idea dominated foreign policy and domestic politics of [[Greece]] from the [[Greek War of Independence|War of Independence]] in the 1820s through the [[Balkan wars]] in the beginning of the 20th century. It started to fade after the [[Greco-Turkish War (1919–1922)]], followed by the [[population exchange between Greece and Turkey]] in 1923. Despite the end of the Megali Idea project in 1922, by then the Greek state had expanded four times, either through military conquest or diplomacy (often with British support). After the creation of Greece in 1830, it annexed the [[Ionian Islands]] ([[Treaty of London, 1864]]), [[Thessaly]] ([[Convention of Constantinople (1881)]]), [[Macedonia (Greece)|Macedonia]], [[Crete]], [[Epirus (region)|(southern) Epirus]] and the Eastern Aegean Islands ([[Treaty of Bucharest (1913)|Treaty of Bucharest]]), and [[Western Thrace]] ([[Treaty of Neuilly]], 1920). The [[Dodecanese]] were annexed after the Second World War ([[Treaty of Peace with Italy, 1947]]). A related concept is ''[[enosis]]''. ==Fall of Constantinople== {{Main|Fall of Constantinople}} [[File:Zonaro GatesofConst.jpg|thumb|180px|Sultan [[Mehmed the Conqueror|Mehmed II]]'s entry into Constantinople.]] The [[Byzantine Empire]] was [[Division of the Roman Empire|Eastern Roman]] in origin and was called the "Roman Empire" by its inhabitants, though often not by the [[Latin West]], which regarded it as [[Greek East|Greek]]. After its fall, [[Hieronymus Wolf]] popularized the usage of "Byzantium". An informal cultural division had existed within the Roman Empire for centuries before the official political split of the Empire into Eastern and Western halves. Although Latin was the official language of the empire, Greek was the lingua franca in the East and was regularly used alongside Latin in official business. Following the adoption of Christianity in the 4th century, Greek was also the dominant liturgical language, as exemplified by the fact the New Testament was written in Greek. [[Byzantium under the Heraclians|Greek replaced Latin as the official language]] in AD 620. Byzantium held out against numerous invasions over the centuries and during the 10th and early 11th centuries managed to reclaim considerable territory in the Balkans, Anatolia and to a lesser extent Syria. The Turkish invasion of the mid to late 11th century however greatly weakened the Empire and, although it partially recovered under the [[Byzantine Empire under the Komnenos dynasty|Komnenos dynasty]], it never managed to regain control of the Anatolian interior, cutting the empire off from a valuable source of manpower and tax revenue. In 1204 Constantinople was besieged and sacked during the [[Fourth Crusade]] and became the Capital of what has come to be known as the [[Latin Empire]], a French dominated crusader state, until it was liberated by the [[Empire of Nicaea]], the Byzantine state in exile, in 1261. However, Byzantine strength would rapidly diminish towards the end of the 13th century and evaporated almost entirely during the 14th century, to the extent that by 1400 little remained of the Empire except Constantinople, the city’s immediate surroundings and some small territories in modern-day Greece. In 1453 the Ottoman Turks besieged and captured Constantinople officially marking the end of the Roman Empire and also the end of Greek predominance in the city; although it would continue to have a considerable [[Greeks in Turkey|Greek speaking population]] and the Patriarch of Constantinople continued to reside in the city. == Greeks under Ottoman rule== {{Further|Ottoman Greece|Greek Plan}} [[File:Subject Nationalities of the German Alliance (1917) (cropped).jpg|thumb|Ethnic map of [[Asia Minor]] in 1917.{{Unbulleted list|{{legend|black|Bulgars and Turks}}|{{legend|maroon|Greeks}}|{{legend|yellow|Armenians}}|{{legend|teal|Kurds}}|{{legend|orange|Lazes}}|{{legend|olive|Arabs}}|{{legend|green|Nestorians}}}}]] Under the ''[[Millet (Ottoman Empire)|millet]]'' system which was in force during the [[Ottoman Empire]], the population was classified according to religion rather than language or ethnicity. Orthodox Greeks were seen as part of the ''millet-i Rûm'' (literally "Roman community") which included all [[Orthodoxy#Christianity|Orthodox Christians]], including beside Greeks also [[Bulgarians]], [[Serbs]], [[Vlachs]], [[Slavs]], [[Georgians]], [[Romanians]] and [[Albanians]], despite their differences in ethnicity and language and despite the fact that the religious hierarchy was Greek dominated. It is not clear to what extent one can speak of a Greek identity during those times as opposed to a Christian or Orthodox identity.<ref>{{cite book |title=Greece: The Modern Sequel |last1=Koliopoulos |first1=John S. |last2=Veremis |first2=Thanos |year=2007 |publisher=C Hurst & Co Publishers Ltd }}</ref> In the late 1780s, [[Catherine II of Russia]] and [[Joseph II of Austria]] intended to reclaim the Byzantine heritage and restore the Greek statehood as part of their joint [[Greek Plan]]. During the Middle Ages and the Ottoman period, Greek-speaking Christians identified as ''Romans'' and thought of themselves as the descendants of the [[Roman Empire]] (including the medieval [[Eastern Roman Empire]]). The term ''Roman'' was often interpreted as synonymous with ''Christian'' throughout Europe and the Mediterranean during this time. The terms ''Greek'' or ''Hellene'' were largely seen by Ottoman Christians as referring to the ancient pagan peoples of the region. This changed during the late stages of the Ottoman Empire and the emergence of the Greek independence movement.<ref>{{cite book |title=Standard Languages and Multilingualism in European History |date=31 May 2012 |editor1=Honing, Matthias |editor2=Vogl, Ulrik |editor3=Moliner, Olivier |publisher=John Benjamins |url=https://books.google.com/books?id=tXAc72rjwBcC |page=163|isbn=9789027273918 }}</ref><ref>{{cite book |title=Hellenisms: Culture, Identity, and Ethnicity from Antiquity to Modernity |year=2008 |editor=Zacharia, Katerina |publisher=Ashgate Publishing |url=https://books.google.com/books?id=H1fGJRxUG6wC |page=240|isbn=9780754665250 }}</ref> ==Greek War of Independence and later== {{Main|Greek War of Independence|First Hellenic Republic|Kingdom of Greece}} {{Quote box2 |width= 30em |border= 1px |align= right |halign= left |quote= "The Kingdom of Greece is not Greece; it is merely a part: the smallest, poorest part of Greece. The Greek is not only he who inhabits the Kingdom, but also he who inhabits [[Ioannina]], [[Salonika]] or [[Serres]] or [[Adrianople]] or [[Constantinople]] or [[Trabzon|Trebizond]] or [[Crete]] or [[Samos]] or any other region belonging to the Greek history or the Greek race... There are two great centres of Hellenism. [[Athens]] is the capital of the Kingdom. Constantinople is the great capital, the dream and hope of all Greeks." |source=Kolettis voicing his convictions in the National Assembly in January 1844.<ref>Smith M., ''Ionian Vision'', (1999), p. 2</ref>}} After the [[Greek War of Independence]] ended in 1829, a new southern Greek state was established, with assistance from the [[United Kingdom of Great Britain and Ireland|British Empire]], [[July Monarchy|Kingdom of France]], and [[Imperial Russia]]. However, this new Greek state under [[John Capodistrias]] after the Greek War of Independence was, with Serbia, one of the only two countries of the era whose population was smaller than the population of the same ethnicity outside its borders; most ethnic Greeks still resided within the borders of the Ottoman Empire. This version of Greece was designed by the [[Great Powers]], who had no desire to see a larger Greek state replace the Ottoman Empire. The Great Idea embodied a desire to bring all ethnic Greeks into the Greek state, and subsequently revive the [[Byzantine Empire]]; it applied specifically to the Greeks in [[Epirus]], [[Thessaly]], [[Macedonia (region)|Macedonia]], [[Thrace]], the [[Aegean Islands]], [[Crete]], [[Cyprus]], parts of [[Anatolia]], and the city of [[Istanbul|Constantinople]] (which would replace [[Athens]] as the capital). When the young Danish prince [[George I of Greece|Wilhelm Georg]] was elected king in 1863, the title offered to him by the Greek National Assembly was ''not'' "King of Greece", the title of his deposed predecessor, King [[Otto of Greece|Otto]]; but rather "King of ''the [[Hellene]]s''". Implicit in the wording was that George I was to be king of all Greeks, regardless of whether they then lived within the borders of his new kingdom. The first additional areas to be incorporated into the Kingdom were the [[Ionian islands]] in 1864, and later [[Thessaly]] with the [[Treaty of Berlin (1878)]]. ==Revolts, Cretan crisis and Greco-Turkish War (1897)== {{See also|Epirus Revolt of 1854|Cretan Revolt (1866–69)|Epirus Revolt of 1878|1878 Greek Macedonian rebellion|Greco-Turkish War of 1897|Macedonian Struggle}} [[File:P. A. de László - Constantine I of Greece, King of the Hellenes.jpg|thumb|140px|[[Constantine I of Greece]] was called ''Constantine XII'' by his supporters, the purported successor to the Emperor [[Constantine XI Palaiologos]]]] [[File:Elefteriosvenizelos--victoryofvenizel00seliuoft.jpg|thumb|140px|[[Eleftherios Venizelos]] tried to realize the Megali Idea]] In January 1897, violence and disorder were escalating in Crete, polarizing the population. Massacres of the Christian population took place in Chania and Rethimno. The Greek government, pressured by public opinion, intransigent political elements, extreme nationalist groups (e.g. [[Ethniki Etairia]]) and with the Great Powers reluctant to intervene, decided to send warships and personnel to assist the Cretans. The Great Powers had no option then but to proceed with the occupation of the island, but they were too late. A Greek force of 1,500 men had landed at Kolymbari on 1 February 1897, and its commanding officer, Colonel [[Timoleon Vassos]], declared that he was taking over the island "in the name of the King of the Hellenes" and that he was announcing the union of Crete with Greece. This led to an uprising that spread immediately throughout the island. The Great Powers finally decided to land their troops and stopped the Greek army force from approaching Chania. At the same time their fleets blockaded Crete, preventing both Greeks and Turks from bringing any more troops to the island. The Ottoman Empire, in reaction to the rebellion of Crete and the assistance sent by Greece, relocated a significant part of its army in the Balkans to the north of Thessaly, close to the borders with Greece. Greece in reply reinforced its borders in Thessaly. However, irregular Greek forces and followers of the Megali Idea acted without orders and raided Turkish outposts, leading the Ottoman Empire to declare war on Greece; the war is known as the [[Greco-Turkish War of 1897]]. The Turkish army, far outnumbering the Greek, was also better prepared, due to the recent reforms carried out by a German mission under [[Colmar Freiherr von der Goltz|Baron von der Goltz]]. The Greek army fell back in retreat. The other Great Powers then intervened and an armistice was signed in May 1897. The war, however, only ended in December of that year. The military failure in the Greco-Turkish war cost Greece small territorial losses along the border line in northern Thessaly, and a large sum of financial reparations that wrecked Greece's economy for years, while giving no lasting solution to the Cretan Question. The Great Powers (Britain, France, Russia, and Italy) in order to prevent future clashes and trying to avoid the creation of a revanchist climate in Greece, imposed what they thought of as a lasting solution; Crete was proclaimed an autonomous ''[[Cretan State]]''. The four Great Powers assumed the administration of Crete; and, in a decisive diplomatic victory for Greece, Prince George of Greece (second son of King George I) became High Commissioner. ==Early 20th century== ===Balkan Wars=== {{Main|Greece in the Balkan Wars}} [[File:Maximal Greek claims in Epirus and Macedonia.png|thumb|200px|Greek claims in Epirus and Macedonia after the first Balkan war]] [[File:New Greece.jpg|thumb|200px|Poster celebrating the "New Hellas" after the [[Balkan Wars]].]] A major proponent of the Megali Idea was [[Eleftherios Venizelos]], under whose leadership Greek territory doubled in the [[Balkan Wars]] of 1912–13 — southern [[Epirus]], [[Crete]], [[Lesbos]], [[Chios]], [[Ikaria]], [[Samos]], [[Samothrace]], [[Lemnos]] and the majority of [[Macedonia (region)|Macedonia]] were attached to Greece. Born and raised in Crete, in 1909 Venizelos was already a prominent Cretan and had influence in mainland Greece. As such, he was invited after the [[Goudi coup]] in 1909 by the Military League to become Prime Minister of Greece. Venizelos pressed forward a series of reforms in society, as well as the military and administration, which helped Greece succeed in its goals during the Balkan Wars. ===World War I=== {{Main|Greece during World War I|Treaty of Sèvres}} [[File:Greece in the Treaty of Sèvres.jpg|thumb|200px|Map of Megali Hellas after the [[Treaty of Sèvres]] and featuring a picture of [[Eleftherios Venizelos]].]] Following the Greek gains in the Balkan Wars, the Ottomans began to persecute ethnic Greeks living in the Empire, which led to [[ethnic cleansing]] in the [[Greek genocide]]. This persecution continued into [[World War I]] when the Ottomans declared for the [[Central Powers]] on late 1914. Greece remained neutral until 1917 when they joined the [[Allies of World War I|Allies]]. Refugees reports of Turkish atrocities as well as the Allied victory in [[World War I]] seemed to promise an even greater realization of the Megali Idea. Greece gained a foothold in Asia Minor with a protectorate over [[Smyrna]] and its hinterland. Following 5 years of Greek administration, a referendum was to be held to determine whether the territory would revert to Ottoman control or join Greece. Greece also gained the islands of [[Imbros]] and [[Tenedos]], [[Western Thrace|Western]] and [[Eastern Thrace]], the border then drawn a few miles from the walls of [[Constantinople]]. ===Greco-Turkish War (1919–1922)=== {{Main|Greco-Turkish War (1919–1922)|Great Fire of Smyrna|Treaty of Lausanne|Population exchange between Greece and Turkey}} [[File:Izmir15Mayis1919.jpg|thumb|200px|Greek soldiers in Smyrna, May 1919.]] Greece's efforts to take control of Smyrna in accordance with the Treaty of Sèvres were thwarted by [[Turkish revolutionaries]], who were resisting the Allies. The Turks finally prevailed and expelled the Greeks from Anatolia during the [[Greco-Turkish War (1919–1922)]] (part of the [[Turkish War of Independence]]). The war was concluded by the [[Treaty of Lausanne]] which saw Greece cede Eastern Thrace, Imbros, Tenedos and [[Smyrna]] to the nascent Turkish Republic. To avoid any further territorial claims, both Greece and Turkey engaged in an "[[exchange of populations]]": During the conflict, 151,892 Greeks had already fled Asia Minor. The Treaty of Lausanne moved 1,104,216 Greeks from Turkey,<ref>André Billy, ''La Grèce'', Arthaud, 1937, p. 188.</ref> while 380,000 Turks left the Greek territory for Turkey. The transfers ended any further appetite for pursuing the concept of a Greater Greece and ended the 3000 year Greek habitation of Asia Minor. Further population exchanges occurred after World War I, including 40,027 Greeks from Bulgaria, 58,522 from Russia (because of the defeat of the [[White Army]] led by [[Pyotr Wrangel]]) and 10,080 from other lands (for example [[Dodecanese]] or [[Albania]]), while 70,000 Bulgarians from [[Thrace]] and [[Macedonia (Greece)|Macedonia]] had moved to [[Bulgaria]].<ref>''The [[Treaty of Neuilly-sur-Seine]] led to an exchange of 50,000 Greeks for 70,000 Bulgarians between the two countries.'' For more see: Rutsel Silvestre, J. Martha; The Financial Obligation in International Law, Oxford University Press, 2015; {{ISBN|0191055956}}, p. 70.</ref> From the Bulgarian refugees ca. 66,000 were from Greek Macedonia.<ref>"''The second wave of Bulgarian refugees took place in the 1920s, following the signing of the Neilly Treaty (1919) concerning the so-called "voluntary" exchange of population between Greece and Bulgaria. Of them 66,126 people from Greek Macedonia.''" For more see: Victor Roudometof, Collective Memory, National Identity, and Ethnic Conflict: Greece, Bulgaria, and the Macedonian Question; Greenwood Publishing Group, 2002 {{ISBN|0275976483}}, p. 97.</ref> The immediate reception of refugees to Greece cost 45 million francs, so the League of Nations arranged for a loan of 150 million francs to aid settlement of refugees. In 1930, Venizelos even went on an official visit to [[Turkey]], where he proposed that [[Mustafa Kemal Atatürk|Mustafa Kemal]] be awarded the [[Nobel Peace Prize]]. The Greek novelist [[Yiorgos Theotokas]] described the psychological impact of the defeat of 1922:<blockquote>"For a short time, while the Treaty of Serves ran its joyful but uncertain course, it seemed to them that the...long-buried hopes of their ancestors were to be fulfilled. But the terrible summer of 1922 came all too soon. From the hermitage of Arsenios they watched, tense with anxiety, the daily unfolding of the national tragedy, the last desperate efforts of the Royalist Governments of Greece to save the situation, the failure of King Constantine's attempt to take Constantinople, and the final Catastrophe.<br>In mid-August Mustapha Kemal broke through the Greek front and the Greek army, exhausted by ten years of warfare and the privations of the Asia Minor campaign, was vanquished in two weeks. The Turks, advancing rapidly, recaptured in quick succession Afion-Karahisar, Eski-Shehir, Kiutahia, Brussa, Oushak—and then Smyrna! Once again the banners of Islam floated proudly, tauntingly, over the Aegean coast opposite Chios and Mytilene. The whole of Ionia was in flames. Slaughter and pillage descended on the smiling city of Smyrna and in a few short days turned it into a ruin...As day succeeded day, Greece seemed to have become paralyzed, to have lost all will, all ability to resist the blows of fate. The swiftness of the catastrophe completely overwhelmed the State, flooded as it was by the thousands of fleeting soldiers and refugees who sought shelter on the Greek coasts.The nation was plunged into deep despair...<br>Greece had lost her big gamble and had been uprooted from Asia Minor. St. Sophia remained in the hands of the Moslems. The brilliant plans of 1918 were mocking visions, hallucinations, dreams. And the return of reality was truly heartbreaking. The tale of the years was not yet told, then, the historic hour, the fulfillment of the Great Idea, the moment they had longed for with such faith and such anxiety for five tortured, bloody centuries, had not yet come! It was all a lie!"<ref>Kaloudis, George "Ethnic Cleansing in Asia Minor and the Treaty of Lausanne" p.59-89 from ''International Journal on World Peace'', Volume 31, No. 1, March 2014 p.83-84</ref></blockquote> == World War II, annexation of Dodecanese and Cyprus dispute == {{See also|Military history of Greece during World War II|EOKA|1974 Cypriot coup d'état}} Although the Great Idea ceased to be a driving force behind Greek foreign policy, some remnants continued to influence Greek foreign policy throughout the remainder of the 20th century. Thus, after his coup d'état of 4 August 1936, [[Ioannis Metaxas]] proclaimed the advent of the "Third Hellenic Civilization", similar to Adolf Hitler's Third Reich (influenced by [[pan-germanism|pan-Germanism]]).<ref>R. Clogg, p. 118.</ref> The attack by Italy from Albania and the Greek victories enabled Greece to conquer, during the winter of 1940–1941, parts of southern [[Albania]] ([[Northern Epirus]], as it is identified by [[Greeks]]) which were administered as a province of Greece for a short time until the German offensive of April 1941. The occupation, resistance and the [[Greek civil war|civil war]] initially put the Great Idea in the background. Nevertheless, another very good diplomatic performance by the Greek side at the [[Paris Peace Conference, 1946]] secured a further enlargement of Greek territory, in the form of the Dodecanese Islands, despite the very strong opposition of [[Vyacheslav Molotov]] and the Soviet delegates.<ref>K. Svolopoulos, Greek Foreign Policy 1945–1981, p. 134.</ref> The British colony of [[Cyprus]] became the "apple of discord" between the two countries, putting an end to the positive Greco-Turkish relations that had existed since the Kemal-Venizelos agreement in the 1930s. In 1955, a [[Hellenic Army|Greek army]] colonel of Greek Cypriot origin, [[George Grivas]], began a campaign of civil disobedience whose purpose was primarily to drive the British from the island, then move for ''[[Enosis]]'' with Greece. The Greek prime minister, [[Alexandros Papagos]], was not unfavourable to this idea.{{citation needed|date=June 2014}} There was increasing polarisation of opinion between the dominant Greek population and the minority Turks.{{citation needed|date=June 2014}} The problems in Cyprus affected the continent itself. In September 1955, in response to the demand for ''Énosis'', an anti-Greek riot took place in Istanbul. During the [[Istanbul Pogrom]] 4,000 stores, 100 hotels and restaurants and 70 churches were destroyed or damaged.<ref>R. Clogg, p. 153.</ref> This led to the last great wave of migration from Turkey to Greece. [[File:Cyprus districts named.png|thumb|200px|The island of Cyprus, showing the areas controlled by the ethnic Greek Cypriots of the [[Republic of Cyprus]] (south), and the areas controlled by ethnic Turkish Cypriots (north).]] The [[Zürich and London Agreement|Zürich Agreement]] of 1959 culminated in independence of the island with Greece, Turkey and UK as guarantee powers. The inter-ethnic clashes from 1960 led to the dispatch of a [[United Nations Peacekeeping Force in Cyprus|peacekeeping force]] of the [[United Nations Organisation|United Nations]] in 1964. The Cyprus issue was revived by the [[Greek military junta of 1967-1974|dictatorship of the colonels]], who presented their April 21, 1967, ''coup d'état'' as the only way to defend the traditional values of what they called the "Hellenic-Christian Civilization". Brigadier General Ioannidis arranged, in July 1974, to overthrow Cypriot President [[Archbishop]] [[Makarios III|Makarios]], and proceed with ''[[Enosis]]'' (union with Greece).{{citation needed|date= June 2014}} This led to Turkey invading the island in response, with the expulsion of Greek Cypriots in areas controlled by Turkey, and the flight of Turkish Cypriots from the south. In 1983, the north declared independence, but to this day, the only country that recognizes [[Northern Cyprus]] is Turkey. ==Attempted revival by Golden Dawn== The [[Greek nationalism|ultra-nationalist]] [[Golden Dawn (political party)|Golden Dawn party]], which had electoral support from 2010 to 2019, supports the Megali Idea,<ref name="stoxos.gr">{{cite news|script-title=el:Μιχαλολιάκος: Του χρόνου στην Κωνσταντινούπολη, στην Σμύρνη, στην Τραπεζούντα…|url=http://www.stoxos.gr/2012/12/blog-post_7247.html|access-date=3 November 2013|newspaper=[[Stochos]]|date=31 December 2012|language=el}}</ref> with party leader, [[Nikolaos Michaloliakos]] stating: {{quote|For two thousand years, the Jews would say a wish during their festivals, "[[next year in Jerusalem]]", and ultimately after many centuries they managed to make it a reality. So I too conclude with a wish: Next year in [[Constantinople]], in [[Smyrna]], in [[Trabzon|Trebizond]]!|<ref name="stoxos.gr"/>}} Michaloliakos criticized [[Thessaloniki]] mayor [[Yiannis Boutaris]] for wanting to name a street after Atatürk, who was born in the city when it was still part of the Ottoman Empire.<ref name="todayszaman1">{{Citation |title=Greek far-right leader vows to 'take back' İstanbul, İzmir |newspaper=Today's Zaman|date=15 June 2012 |url=http://www.todayszaman.com/newsDetail_getNewsById.action?newsId=283673 |access-date=12 September 2012 | archive-url=https://web.archive.org/web/20131103095534/http://www.todayszaman.com/newsDetail_getNewsById.action?newsId=283673 |archive-date=3 November 2013}}</ref><ref name="smyrna">{{Cite web|url=https://www.hurriyetdailynews.com/greek-fuhrer-vows-to-take-back-izmir-after-istanbul-23248|title=Greek 'Führer' vows to 'take back İzmir' after Istanbul|website=Hürriyet Daily News}}</ref> In January 2013, a group of Golden Dawn supporters attacked the car of Turkish [[consul (representative)|consul-general]] Osman İlhan Şener and hurled insults at Atatürk, during an [[Anti-Turkism|anti-Turkey]] protest in [[Komotini]].<ref name=komotiniAttack>{{cite web|title=Yunanistan'da Türk konsolosun aracına saldırı|url=https://www.ntvmsnbc.com/id/25412725|publisher=NTVMSNBC|access-date=10 January 2013|language=tr}}</ref> Mihaloliakos has also called for the "liberation"{{citation needed|date=March 2021}} of Northern Epirus. Golden Dawn and its former Cypriot counterpart [[ELAM (Cyprus)|ELAM]] support enosis. In 2015, close to 100 Golden Dawn members and leaders were arrested on a range of charges, including murder and racketeering. In 2019, the party's level of support, slumped to less than 2%. In October 2020, most of Golden Dawn's leadership was convicted, including Michaloliakos. As of 2023, the party, which never enjoyed electoral support above 10% of the popular vote, now has no remaining members in either the Hellenic or European Parliament.<ref>Gatopoulos, Derek; Becatoros, Elena (7 October 2020). "Greek court rules Golden Dawn party criminal organization". Associated Press. Retrieved January 3, 2020.</ref> == See also == {{Portal|Greece}} * [[Greek diaspora]] * [[Northern Epirus]] * [[Autonomous Republic of Northern Epirus]] * [[Greece during World War I]] * [[Occupation of Constantinople]] * [[Irredentism]] * [[Zone of Smyrna]] * [[Republic of Pontus]] * * [[Georgios Grivas]] * [[Foreign relations of Greece]] * [[Greek Plan]] * [[Enosis]] * [[Succession of the Roman Empire]] ==References== {{Reflist|2}} {{Balkan Wars}} {{Megali Idea}} {{Greek nationalism}} {{Irredentism}} {{Pan-nationalist concepts}} {{Stateless nationalism in Europe}} [[Category:Megali Idea| ]] [[Category:National unifications]] [[Category:Foreign relations of Greece]] [[Category:Greece–Turkey relations]] [[Category:History of modern Greece]] [[Category:19th century in the Ottoman Empire]] [[Category:Greek nationalism]] [[Category:Nationalist movements in Europe]] [[Category:Pan-nationalism]] [[Category:Political history of Greece]] [[Category:Political movements of the Ottoman Empire]] f45ac96163cdb251665c56e33fbee9b5df193b2a Template:Citation needed 10 1084 2368 2367 2023-10-01T14:19:57Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Citation_needed]] wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Fix |name={{{name|Citation needed}}} |link=Wikipedia:Citation needed |text=citation needed |class=Template-Fact |title={{{reason|This claim needs references to reliable sources.}}} |date={{{date|}}} |cat=[[Category:All articles with unsourced statements]] |cat-date=Category:Articles with unsourced statements }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages containing citation needed template with unsupported parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Citation needed]] with unknown parameter "_VALUE_"|ignoreblank=y| date | name | reason }}}}<noinclude> {{Documentation}} </noinclude> 0da00647cf516584566df3fd518b1d55696e4b25 Template:Category handler 10 1085 2370 2369 2023-10-01T14:20:09Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Category_handler]] wikitext text/x-wiki {{#invoke:Category handler|main}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, and interwikis to Wikidata. --> </noinclude> d14e9f545cf1833acbe174ae70b615c39b18cf63 Template:Fix 10 1086 2372 2371 2023-10-01T14:20:11Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Fix]] wikitext text/x-wiki {{#switch:{{{subst|¬}}} |¬={{category handler |template=[[Category:Templates needing substitution checking]] |nocat={{{nocat|<noinclude>true</noinclude>}}} }} |SUBST=[[Category:Pages with incorrectly substituted templates]] }}{{Category handler |main={{Fix/category |cat-date={{{cat-date|}}} |cat={{{cat|}}} |cat-date2={{{cat-date2|}}} |cat2={{{cat2|}}} |cat-date3={{{cat-date3|}}} |cat3={{{cat3|}}} |date={{{date|}}} }} |template={{#if:{{{name|}}}|{{#ifeq:{{{name}}}|{{ROOTPAGENAME}}||{{#if:{{{date|}}}||[[Category:Templates including undated clean-up tags]]}}}}}} |subpage=no }}{{#if:{{{text|}}} |<sup class="noprint Inline-Template {{{class|}}}" style="white-space:nowrap;">&#91;<i>{{#if:{{{pre-text|}}} |{{{pre-text}}}&#32; }}[[{{{link|Wikipedia:Cleanup}}}|<span title="{{#invoke:string|replace|source={{delink|1={{{title|{{{link|Wikipedia:Cleanup}}}}}}{{#if:{{{date|}}}|&#32;({{{date}}})}}}}|pattern=" |replace=&quot; |plain=true}}">{{{text|}}}</span>]]{{#if:{{{post-text|}}} |&#32;{{{post-text}}} }}</i>&#93;</sup>|{{{special|}}} }}<noinclude> {{Documentation}} <!-- Add cats and interwikis to the /doc subpage, not here! --> </noinclude> 64d5219edf0f07567b3006bfc9681f9408b164b0 Template:Quote box 10 1087 2374 2373 2023-10-01T14:20:12Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Quote_box]] wikitext text/x-wiki <templatestyles src="Template:Quote_box/styles.css" /><div class="quotebox pullquote {{#switch: {{lc:{{{align|}}}}} | center = centered | left = floatleft | none = | floatright }} {{{class|}}}" style=" {{#if:{{{width|}}} |width:{{{width}}};}} {{#ifeq:{{{border}}}|none|border:none;|{{#if:{{{border|}}}|border-width: {{{border}}}}};}} {{#if:{{{fontsize|}}}|font-size: {{{fontsize}}};}} {{#if:{{{bgcolor|}}}|background-color: {{#ifeq:{{{bgcolor|}}}|none|transparent|{{{bgcolor}}}}};}} {{{style|}}}"> {{#if:{{{title|}}} |<div class="quotebox-title {{{tclass|}}}" style=" {{#if:{{{title_bg|{{{bgcolor|}}}}}}|background-color: {{#ifeq:{{{title_bg|{{{bgcolor}}}}}}|none|transparent|{{{title_bg|{{{bgcolor}}}}}}}};}} {{#if:{{{title_fnt|}}}|color: {{{title_fnt}}};}} {{{tstyle|}}}">{{{title}}}</div> }} <blockquote class="quotebox-quote {{main other||{{#if:{{{quoted|}}}|quoted}}}} {{#switch: {{lc:{{{qalign|{{{halign|left}}}}}}}} |right = right-aligned |center = center-aligned |left-aligned }} {{{qclass|}}}" style=" {{{qstyle|}}}"> {{{text|{{{content|{{{quotetext|{{{quote|{{{1|<includeonly>{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}</includeonly><noinclude>{{lorem ipsum}}</noinclude>}}}}}}}}}}}}}}} </blockquote> {{#if:{{{author|{{{source|}}}}}}{{{2|}}}{{{3|}}}|<cite class="{{#switch: {{lc:{{{salign|{{{qalign|{{{halign|left}}} }}} }}} }} |right = right-aligned |center = center-aligned |left-aligned }}" style="{{{sstyle|}}}"><!--Manually inserted dashes will need to be removed from uses of the template first, I guess, then enable this:--><!--—&thinsp;-->{{{author|{{{2|}}}}}}{{#if:{{{author|}}}{{{2|}}}|{{#if:{{{source|}}}{{{3|}}}|<!--Display comma-space only if both cite parameters are present.-->,&#32;}}}}{{{source|{{{3|}}}}}}</cite>}} </div>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using quote box with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Quote box]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | align | author | bgcolor | border | class | content | fontsize | halign | qalign | qclass | qstyle | quote | quoted | quotetext | salign | source | sstyle | style | tclass | text | title | title_bg | title_fnt | tstyle | width }}<noinclude> {{Documentation}} </noinclude> 2aa78cc6cbf64f216a9f86c2027aee9ba5b873e1 Template:Quote box/styles.css 10 1088 2376 2375 2023-10-01T14:20:13Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Quote_box/styles.css]] sanitized-css text/css /* {{pp-template}} */ .quotebox { background-color: #F9F9F9; border: 1px solid #aaa; box-sizing: border-box; padding: 10px; font-size: 88%; max-width: 100%; } .quotebox.floatleft { margin: .5em 1.4em .8em 0; } .quotebox.floatright { margin: .5em 0 .8em 1.4em; } .quotebox.centered { overflow: hidden; position: relative; margin: .5em auto .8em auto; } .quotebox.floatleft span, .quotebox.floatright span { font-style: inherit; } .quotebox > blockquote { margin: 0; padding: 0; /* Styling from Minerva */ border-left: 0; font-family: inherit; font-size: inherit; } .quotebox-title { background-color: #F9F9F9; text-align: center; font-size: 110%; font-weight: bold; } .quotebox-quote > :first-child { margin-top: 0; } .quotebox-quote:last-child > :last-child { margin-bottom: 0; } .quotebox-quote.quoted:before { font-family:'Times New Roman',serif; font-weight:bold; font-size: large; color: gray; content: ' “ '; vertical-align: -45%; line-height: 0; } .quotebox-quote.quoted:after { font-family:'Times New Roman',serif; font-weight:bold; font-size: large; color: gray; content: ' ” '; line-height: 0; } .quotebox .left-aligned { text-align: left; } .quotebox .right-aligned { text-align: right; } .quotebox .center-aligned { text-align: center; } .quotebox .quote-title, .quotebox .quotebox-quote { display: block; } .quotebox cite { display:block; font-style:normal; } @media screen and (max-width:640px) { .quotebox { /*override inline styles */ width: 100% !important; margin: 0 0 .8em !important; float: none !important; } } c6ed92a92ff9774be727e66a8b57231cb39829ff Template:Fix/category 10 1089 2378 2377 2023-10-01T14:20:15Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Fix/category]] wikitext text/x-wiki <noinclude>{{pp-template|small=yes}}</noinclude>{{{cat|[[Category:All pages needing cleanup]]}}}{{#if:{{{cat-date|}}} |[[{{{cat-date}}} {{#if:{{{date|}}} |from {{{date}}} }}]]{{#if:{{{date|}}} |{{#ifexist:{{{cat-date}}} from {{{date}}}| |[[Category:Articles with invalid date parameter in template]] }} }} }}{{#if:{{{cat2|}}}|{{{cat2}}}}}{{#if:{{{cat-date2|}}} |[[{{{cat-date2}}} {{#if:{{{date|}}} |from {{{date}}} }}]]{{#if:{{{date|}}} |{{#ifexist:{{{cat-date2}}} from {{{date}}}| |[[Category:Articles with invalid date parameter in template]] }} }} }}{{#if:{{{cat3|}}}|{{{cat3}}}}}{{#if:{{{cat-date3|}}} |[[{{{cat-date3}}} {{#if:{{{date|}}} |from {{{date}}} }}]]{{#if:{{{date|}}} |{{#ifexist:{{{cat-date3}}} from {{{date}}}| |[[Category:Articles with invalid date parameter in template]] }} }} }} 8f0a79cdee91c3d967a6d70cf7bfab4093b3d6ae Template:Comma separated entries 10 1090 2380 2379 2023-10-01T14:20:21Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Comma_separated_entries]] wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:Separated entries|comma}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> f9811ed089bab742e4aad8b8463eddcc7607f062 Template:Citation 10 1091 2382 2381 2023-10-01T14:20:22Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Citation]] wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=citation }}</includeonly><noinclude> {{Documentation}} </noinclude> 682134a60c143dec260ce779777d3be2d4c94eaa Template:Catalog lookup link 10 1092 2384 2383 2023-10-01T14:20:23Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Catalog_lookup_link]] wikitext text/x-wiki {{#invoke:Catalog lookup link|main}}<noinclude> {{documentation}} </noinclude> 90f05b4ea15a4a853b2f27af3c21c60276189820 Module:Catalog lookup link 828 1093 2386 2385 2023-10-01T14:20:24Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Catalog_lookup_link]] Scribunto text/plain --[[ |1=, |2=, |3=, |4=, |5=, |6=, |7=, |8=, |9=: Optional unnamed parameters for 0 to 9 items to be listed. Whitespace is trimmed off both ends and the strings are urlencoded as if they were query strings. |article-link=: Optional Wikipedia article name to link to. |article-name=: Optional alternative text to be displayed for |article-link= link in front of catalog link. If not specified, |article-link= is used for display as well. If both parameters are not specified, the prefix is omitted completely. |article-suffix=: Optional symbol to be displayed after article name or link (f.e. ":"; omitted, if not defined). |link-prefix=: Optional prefix portion of url to external catalog item(s). |link-suffix=: Optional suffix portion of url to external catalog item(s). |item-prefix=: Optional text displayed in front of each external link (omitted, if not defined) |item-suffix=: Optional text displayed immediately after each external link (omitted, if not defined) |list-separator=: Optional alternative separator displayed between list items (default: ", ", if not specified). Whitespace must be encoded. |list-leadout=: Optional alternative leadout text displayed between the last two list items (f.e. "and", "or", "as well as", etc., default is the |list-separator= or ", ".) |leadout-suffix=: Optional alternative suffix text of the leadout (see |list-leadout=) displayed between the last two list items. This gets added in front of the last list item instead of the default whitespace which is added without this parameter. This may be necessary if |list-separator= is used not only to define the list separator but also parts of the item prefix (except for the first one). (At present, this is used only to cope with format oddities of the {{MR}} template.) new parameters that support access icons: |allowed_icons= – comma-separated list of keywords: free, limited, registration, subscription, none, all (default; 'all' implied when this parameter empty or omitted) the icons specified in the following parameters are checked agains the list in |allowed-icons=; not in the list? not displayed |url-access-all= – applies specified icon to all items in the list; accepted keywords: free, limited, registration, subscription; |url-accessn= – applies specified icon to item n of the list (the nth positional parameter); accepted keywords: free, limited, registration, subscription; ]] require('strict'); local getArgs = require ('Module:Arguments').getArgs; local lock_icons = { --icon classes are defined in Module:Citation/CS1/styles.css ['free'] = {'id-lock-free', 'Freely accessible'}, ['registration'] = {'id-lock-registration', 'Free registration required'}, ['limited'] = {'id-lock-limited', 'Free access subject to limited trial, subscription normally required'}, ['subscription'] = {'id-lock-subscription', 'Paid subscription required'}, } --[[--------------------------< I S _ S E T >------------------------------------------------------------------ Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string. ]] local function is_set( var ) return not (var == nil or var == ''); end --[=[-------------------------< M A K E _ L A B E L >---------------------------------------------------------- Makes a wikilinked or plain text label from arguments; when both link and display text is provided, makes a wikilink in the form [[L|D]]; if only link is provided, makes a wikilinked label in the form [[L]]; if only display is provided, makes a plain-text label; if neither are provided makes a label from suffix, returns an empty string else. ]=] local function make_label (link, display, suffix) local label = ''; if is_set (link) then if is_set (display) then label = table.concat ({'[[', link, '|', display, ']]'}); -- make [[L|D]] wikilinked label else label = table.concat ({'[[', link, ']]'}); -- make [[L]] wikilinked label end elseif is_set (display) then label = display; -- plain-text label end if is_set (label) then return table.concat ({label, suffix, '&nbsp;'}); -- assemble the complete label else return suffix; -- no space after suffix if no label end end --[[--------------------------< I C O N _ I N D E X _ G E T >-------------------------------------------------- returns index into lock_icons[] if value assigned to |url-access= or |url-access-all= is a valid icon selector (free, limited, registration, subscription) icon selection may be limited to a subset of the icons with: |allow_icons=<comma-separated list of allowed icons> <comma-separated list of allowed icons> may be any of the keywords: free, limited, registration, subscription, none, all keyword 'all' is default condition; 'all' is implied when |allowed=icons= is empty or omitted keyword 'none' for use with identifiers where icons are inappropriate (isbn, issn, oclc) Templates using this module should set: |allow_icons=free for most identifiers; |allow_icons=none for isbn, issn, oclc, etc |url-access= is alias of |url-access1= ]] local function icon_index_get (args, k) local icon; local param_name = (1 == k and is_set (args['url-access']) and 'url-access') or table.concat ({'url-access', k}); -- make an enumerated parameter name if is_set (args['url-access-all']) and lock_icons[args['url-access-all']] then -- if set and valid icon = args['url-access-all']; -- tentatively elseif is_set (args[param_name]) and lock_icons[args[param_name]] then -- if set and valid icon = args[param_name]; -- tentatively else return nil; -- neither |url-access-all= nor |url-accessn= set so return nil end if args['allow_icons'] and args['allow_icons']:find ('none') then -- if 'none' keyword is present return nil; -- icons display not allowed end if not is_set (args['allow_icons']) or args['allow_icons']:find ('all') or args['allow_icons']:find (icon) then --if all allowed or specified icon is allowed return icon; -- return selected icon as index into icon table end end --[[--------------------------< M A I N >---------------------------------------------------------------------- Template entrypoint to this module; arguments come primarily from the parent frame though in templates that use this module, |allowed-icons= is typically set, if needed, in the {{#invoke:}}. ]] local function main (frame) local args = getArgs (frame); local out_text = ''; if is_set(args[1]) then local result = {}; local label; local article_suffix = args['article-suffix'] or args['article-postfix'] or ''; local link_prefix = args['link-prefix'] or ''; local link_suffix = args['link-suffix'] or args['link-postfix'] or ''; local item_prefix = args['item-prefix'] or ''; local item_suffix = args['item-suffix'] or args['item-postfix'] or ''; local list_separator = args['list-separator'] or ', '; local leadout_suffix = args['leadout-suffix'] or args['leadout-postfix'] or ' '; local list_leadout; local icon_index; if is_set (args['list-leadout']) then list_leadout = table.concat ({ mw.ustring.gsub (args['list-leadout'], '^(%a)', ' %1'), -- insert leading space if first character is a letter leadout_suffix, }); else list_leadout = ''; end label = make_label (args['article-link'], args['article-name'], article_suffix); for k, item in ipairs (args) do -- for each of the positional parameters item = mw.text.trim (item); -- remove extraneous whitespace if is_set (link_prefix) then -- if there is link prefix... item = table.concat ({ -- create an external link item '[', -- open ext link markup link_prefix, -- url prefix mw.uri.encode (item), -- item is part of url link_suffix, -- url suffix ' ', -- required space between url and label item_prefix, -- label prefix item, -- item as label item_suffix, -- item suffix ']' -- close ext link markup }); icon_index = icon_index_get (args, k); -- set if icon specified and allowed for this item; nil else if icon_index then item = table.concat ({ -- add access icon markup to this item '<span class="', -- open the opening span tag; icon classes are defined in Module:Citation/CS1/styles.css lock_icons[icon_index][1], -- add the appropriate lock icon class '" title="', -- and the title attribute lock_icons[icon_index][2], -- for an appropriate tool tip '">', -- close the opening span tag item, '</span>', -- and close the span }); end else item = table.concat ({ -- create an unlinked item item_prefix, -- label prefix item, -- item as label item_suffix, -- item suffix }); end table.insert (result, item); -- add the item to the result list end out_text = frame:callParserFunction('#tag', {'templatestyles', '', src=table.concat({ 'Module:Citation/CS1', mw.ustring.match(frame:getTitle(), '/sandbox$') or '', '/styles.css', })}); if is_set (args['list-leadout']) then out_text = table.concat ({out_text, label, mw.text.listToText (result, list_separator, list_leadout)}); else out_text = table.concat ({out_text, label, table.concat (result, list_separator)}); end end --is_set (args[1]) return out_text end return {main = main}; 21695b34c26d41971bb011f905ec0f995ecc28b7 Module:Check isxn 828 1094 2388 2387 2023-10-01T14:20:24Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Check_isxn]] Scribunto text/plain --[[ This code is derived from the ISXN validation code at Module:Citation/CS1. It allows validating ISBN, ISMN, and ISSN without invoking a citation template. ]] local p = {} --[[--------------------------< E R R _ M S G _ S U P L _ T >-------------------------------------------------- error message supplements for check_isbn(); adapted from a similarly named table at Module:Citation/CS1/Configuration ]] local err_msg_supl_t = { ['char'] = 'invalid character', ['check'] = 'checksum', ['form'] = 'invalid form', ['group'] = 'invalid group id', ['length'] = 'length', ['prefix'] = 'invalid prefix', } --[[--------------------------< IS _ V A L I D _ I S X N >----------------------------------------------------- ISBN-10 and ISSN validator code calculates checksum across all isbn/issn digits including the check digit. ISBN-13 is checked in check_isbn(). If the number is valid the result will be 0. Before calling this function, issbn/issn must be checked for length and stripped of dashes, spaces and other non-isxn characters. ]] local function is_valid_isxn (isxn_str, len) local temp = 0; isxn_str = { isxn_str:byte(1, len) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39, 'X' → 0x58 len = len+1; -- adjust to be a loop counter for i, v in ipairs( isxn_str ) do -- loop through all of the bytes and calculate the checksum if v == string.byte( "X" ) then -- if checkdigit is X (compares the byte value of 'X' which is 0x58) temp = temp + 10*( len - i ); -- it represents 10 decimal else temp = temp + tonumber( string.char(v) )*(len-i); end end return temp % 11 == 0; -- returns true if calculation result is zero end --[[--------------------------< IS _ V A L I D _ I S X N _ 1 3 >---------------------------------------------- ISBN-13 and ISMN validator code calculates checksum across all 13 isbn/ismn digits including the check digit. If the number is valid, the result will be 0. Before calling this function, isbn-13/ismn must be checked for length and stripped of dashes, spaces and other non-isxn-13 characters. ]] local function is_valid_isxn_13 (isxn_str) local temp=0; isxn_str = { isxn_str:byte(1, 13) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39 for i, v in ipairs( isxn_str ) do temp = temp + (3 - 2*(i % 2)) * tonumber( string.char(v) ); -- multiply odd index digits by 1, even index digits by 3 and sum; includes check digit end return temp % 10 == 0; -- sum modulo 10 is zero when isbn-13/ismn is correct end --[[--------------------------< C H E C K _ I S B N >------------------------------------------------------------ Determines whether an ISBN string is valid. Implements an ISBN validity check for {{ISBN}}, {{ISBNT}}, {{SBN}}, and {{Format ISBN}}. ]] local function check_isbn (isbn_str, frame) local function return_result (check, err_type) -- local function to render the various error returns if not check then -- <check> false when there is an error local template = ((frame.args.template_name and '' ~= frame.args.template_name) and frame.args.template_name) or nil; -- get template name if not template then return '<span class="error" style="font-size:100%">&nbsp;calling template requires template_name parameter</span>'; end local out_t = {'<span class="error" style="font-size:100%">'}; -- open the error message span table.insert (out_t, '&nbsp;Parameter error in {{[[Template:'); -- open 'template' markup; open wikilink with Template namespace table.insert (out_t, template); -- template name wikilink table.insert (out_t, '|'); -- its pipe table.insert (out_t, template); -- wikilink label table.insert (out_t, ']]}}:&nbsp;'); -- close wikilink; close 'template' markup table.insert (out_t, err_type); -- type of isbn error table.insert (out_t, '</span>') -- close the error message span if 0 == mw.title.getCurrentTitle().namespace then -- categorize only when this template is used in mainspace local category = table.concat ({'[[Category:Pages with ISBN errors]]'}); table.insert (out_t, category); end return table.concat (out_t); -- make a big string and done end return ''; -- no error, return an empty string end if nil ~= isbn_str:match ('[^%s-0-9X]') then return return_result (false, err_msg_supl_t.char); -- fail if isbn_str contains anything but digits, hyphens, or the uppercase X end local id = isbn_str:gsub ('[%s-]', ''); -- remove hyphens and whitespace local len = id:len(); if len ~= 10 and len ~= 13 then return return_result (false, err_msg_supl_t.length); -- fail if incorrect length end if len == 10 then if id:match ('^%d*X?$') == nil then -- fail if isbn_str has 'X' anywhere but last position return return_result (false, err_msg_supl_t.form); end if id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not valid isbn group ids but are used by amazon as numeric identifiers (asin) return return_result (false, err_msg_supl_t.group); -- fail if isbn-10 begins with 630/1 end return return_result (is_valid_isxn (id, 10), err_msg_supl_t.check); -- pass if isbn-10 is numerically valid (checksum) else if id:match ('^%d+$') == nil then return return_result (false, err_msg_supl_t.char); -- fail if ISBN-13 is not all digits end if id:match ('^97[89]%d*$') == nil then return return_result (false, err_msg_supl_t.prefix); -- fail when ISBN-13 does not begin with 978 or 979 end if id:match ('^9790') then return return_result (false, err_msg_supl_t.group); -- group identifier '0' is reserved to ISMN end return return_result (is_valid_isxn_13 (id), err_msg_supl_t.check); -- pass if isbn-10 is numerically valid (checksum) end end --[[--------------------------< C H E C K _ I S M N >------------------------------------------------------------ Determines whether an ISMN string is valid. Similar to isbn-13, ismn is 13 digits begining 979-0-... and uses the same check digit calculations. See http://www.ismn-international.org/download/Web_ISMN_Users_Manual_2008-6.pdf section 2, pages 9–12. ]] local function check_ismn (id, error_string) local text; local valid_ismn = true; id=id:gsub( "[%s-–]", "" ); -- strip spaces, hyphens, and endashes from the ismn if 13 ~= id:len() or id:match( "^9790%d*$" ) == nil then -- ismn must be 13 digits and begin 9790 valid_ismn = false; else valid_ismn=is_valid_isxn_13 (id); -- validate ismn end return valid_ismn and '' or error_string end --[[--------------------------< I S S N >---------------------------------------------------------------------- Validate and format an issn. This code fixes the case where an editor has included an ISSN in the citation but has separated the two groups of four digits with a space. When that condition occurred, the resulting link looked like this: |issn=0819 4327 gives: [http://www.worldcat.org/issn/0819 4327 0819 4327] -- can't have spaces in an external link This code now prevents that by inserting a hyphen at the issn midpoint. It also validates the issn for length and makes sure that the checkdigit agrees with the calculated value. Incorrect length (8 digits), characters other than 0-9 and X, or checkdigit / calculated value mismatch will all cause a check issn error message. ]] local function check_issn(id, error_string) local issn_copy = id; -- save a copy of unadulterated issn; use this version for display if issn does not validate local text; local valid_issn = true; if not id:match ('^%d%d%d%d%-%d%d%d[%dX]$') then return error_string; end id=id:gsub( "[%s-–]", "" ); -- strip spaces, hyphens, and endashes from the issn if 8 ~= id:len() or nil == id:match( "^%d*X?$" ) then -- validate the issn: 8 digits long, containing only 0-9 or X in the last position valid_issn=false; -- wrong length or improper character else valid_issn=is_valid_isxn(id, 8); -- validate issn end return valid_issn and '' or error_string end ------------------------------< E N T R Y P O I N T S >--------------------------------------------------==== function p.check_isbn(frame) return check_isbn(frame.args[1] or frame:getParent().args[1], frame) end function p.check_ismn(frame) return check_ismn(frame.args[1] or frame:getParent().args[1], frame.args['error'] or frame:getParent().args['error'] or 'error') end function p.check_issn(frame) return check_issn(frame.args[1] or frame:getParent().args[1], frame.args['error'] or frame:getParent().args['error'] or 'error') end return p 177daafde5a0a7d4292a7ae725b9db16f2079e4e Template:ISBN 10 1095 2390 2389 2023-10-01T14:20:26Z Führerredux 2 1 revision imported from [[:wikipedia:Template:ISBN]] wikitext text/x-wiki <includeonly>{{#if:{{{1|}}}|{{Catalog lookup link |{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}| article-link={{#ifeq:{{yesno-no|{{{plainlink|}}}}}|yes||{{#ifeq:{{yesno-yes|{{{link|}}}}}|no||ISBN (identifier)}}}} |article-name={{#ifeq:{{yesno-no|{{{plainlink|}}}}}|yes||ISBN}} |link-prefix=[Special:BookSources/ |item-prefix={{!}} |item-postfix=] |list-leadout={{{leadout|}}} }}{{#ifeq:{{yesno-no|{{{invalid1|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{1|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{2|}}} |{{#ifeq:{{yesno-no|{{{invalid2|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{2|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{3|}}} |{{#ifeq:{{yesno-no|{{{invalid3|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{3|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{4|}}} |{{#ifeq:{{yesno-no|{{{invalid4|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{4|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{5|}}} |{{#ifeq:{{yesno-no|{{{invalid5|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{5|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{6|}}} |{{#ifeq:{{yesno-no|{{{invalid6|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{6|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{7|}}} |{{#ifeq:{{yesno-no|{{{invalid7|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{7|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{8|}}} |{{#ifeq:{{yesno-no|{{{invalid8|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{8|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{9|}}} |{{#ifeq:{{yesno-no|{{{invalid9|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{9|}}}|template_name={{{template_name|ISBN}}}}}}}}}}}}}}}}}}}}}}}| {{error-small|Parameter error in {{tl|ISBN}}: Missing [[ISBN]].}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using ISBN template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:ISBN]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | invalid1 | invalid2 | invalid3 | invalid4 | invalid5 | invalid6 | invalid7 | invalid8 | invalid9 | leadout | link | plainlink |template_name }}</includeonly><noinclude>{{documentation}}<!-- Add categories and interwiki lines to the /doc subpage, not here! --></noinclude> 113f1e5cb33437d5e9ada6d1e37a951670fae7d9 Template:Interlanguage link 10 1096 2392 2391 2023-10-01T14:20:26Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Interlanguage_link]] wikitext text/x-wiki <includeonly>{{safesubst:#if:{{{quote|}}}{{{quotes|}}}|"}}{{safesubst:#if:{{{italic|}}}{{{italics|}}}|''}}[[{{{1}}}{{safesubst:#if:{{{lt|}}}|{{safesubst:!}}{{{lt}}}}}]]{{safesubst:#if:{{{italic|}}}{{{italics|}}}|&#8202;''}}{{safesubst:#if:{{{quote|}}}{{{quotes|}}}|"}}{{safesubst:#ifeq:{{subst:Substcheck}}|SUBST||<!-- -->{{#if:{{#if:{{{preserve|{{{display|}}}}}}|1|{{#ifexist:{{{1|}}}|{{#invoke:redirect|isRedirect|{{{1|}}}}}|1}}}}<!-- --> |<{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|sup|super=sup|sub=sub|span}} class="noprint" style="{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|ib|font-size:100%;|sup|super|sub=|font-size:85%;}} font-style: normal; {{#if:{{{nobold|}}}|font-weight: normal;}}">&nbsp;&#91;{{#if:{{{WD|{{{wd|}}}}}} | [[d:Special:EntityPage/{{{WD|{{{wd}}}}}}#sitelinks-wikipedia|<span title="&quot;{{{1}}}&quot; in other languages">{{#if:{{{short|{{{s|}}}}}}|d|Wikidata}}</span>]]<!-- -->{{main other||{{#if:{{{reasonator|}}}|<nowiki />; [https://tools.wmflabs.org/reasonator/?q={{urlencode:{{{WD|{{{wd}}}}}}}} Reasonator]}}}} | {{Separated entries|separator=;&#32; | {{#if:{{{2|}}}|[[:{{{2}}}:{{#if:{{{3|}}}|{{{3}}}|{{{1}}}}}|{{{2}}}]]}} | {{#if:{{{4|}}}|[[:{{{4}}}:{{#if:{{{5|}}}|{{{5}}}|{{{1}}}}}|{{{4}}}]]}} | {{#if:{{{6|}}}|[[:{{{6}}}:{{#if:{{{7|}}}|{{{7}}}|{{{1}}}}}|{{{6}}}]]}} | {{#if:{{{8|}}}{{{10|}}}{{{12|}}}|{{Separated entries|separator=;&#32; | {{#if:{{{8|}}}|[[:{{{8}}}:{{#if:{{{9|}}}|{{{9}}}|{{{1}}}}}|{{{8}}}]]}} | {{#if:{{{10|}}}|[[:{{{10}}}:{{#if:{{{11|}}}|{{{11}}}|{{{1}}}}}|{{{10}}}]]}} | {{#if:{{{12|}}}|[[:{{{12}}}:{{#if:{{{13|}}}|{{{13}}}|{{{1}}}}}|{{{12}}}]]}} | {{#if:{{{14|}}}|[[:{{{14}}}:{{#if:{{{15|}}}|{{{15}}}|{{{1}}}}}|{{{14}}}]]}} | {{#if:{{{16|}}}|[[:{{{16}}}:{{#if:{{{17|}}}|{{{17}}}|{{{1}}}}}|{{{16}}}]]}} | {{#if:{{{18|}}}|[[:{{{18}}}:{{#if:{{{19|}}}|{{{19}}}|{{{1}}}}}|{{{18}}}]]}} | {{#if:{{{20|}}}|[[:{{{20}}}:{{#if:{{{21|}}}|{{{21}}}|{{{1}}}}}|{{{20}}}]]}} | {{#if:{{{22|}}}|[[:{{{22}}}:{{#if:{{{23|}}}|{{{23}}}|{{{1}}}}}|{{{22}}}]]}} | {{#if:{{{24|}}}|[[:{{{24}}}:{{#if:{{{25|}}}|{{{25}}}|{{{1}}}}}|{{{24}}}]]}} }}}} | {{#if:{{{reasonator|}}}|[https://tools.wmflabs.org/reasonator/test/?find={{urlencode:{{{1}}}}} Reasonator search]}} }}}}&#93;</{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|sup|super=sup|sub=sub|span}}> | [[Category:Interlanguage link template existing link]]<nowiki /> }}}}</includeonly>{{main other|{{#if:{{{preserve|{{{display|}}}}}}|[[Category:Interlanguage link template forcing interwiki links]]}}}}<noinclude> {{documentation}} </noinclude> 4c50a05de0c11d15b5feac4c7e31ab97094984bb Template:Separated entries 10 1097 2394 2393 2023-10-01T14:20:27Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Separated_entries]] wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Separated entries|main}}<noinclude> {{Documentation|Module:Separated entries/doc}} </noinclude> f3648d40ca0c91acbdf52ad7f89c181d7f691251 Template:Military navigation 10 1098 2396 2395 2023-10-01T14:20:27Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Military_navigation]] wikitext text/x-wiki <includeonly>{{#invoke:Military navigation|main}}</includeonly><noinclude> {{Documentation|Wikipedia:WikiProject Military history/Military navigation}} {{Sandbox other|| [[Category:Navigational box wrapper templates]] [[Category:Military navigational boxes| ]] }}</noinclude> 10eb2cd55540aab60dd8603c113e21995e9bb545 Module:Military navigation 828 1099 2398 2397 2023-10-01T14:20:28Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Military_navigation]] Scribunto text/plain local p = { } local Navbox = require('Module:Navbox') local Styles = require('Module:WPMILHIST Infobox style') local function isblank(s) return (not s) or s == '' end local function isnotblank(s) return s and s ~= '' end function p.main(frame) local args = { } local pargs = frame:getParent().args local sargs = {} local tcats = '' -- process bodystyle and titlestyle if (pargs['style'] or '') == 'wide' then args['titlestyle'] = Styles['nav_box_wide_header'] args['bodystyle'] = Styles['nav_box_wide'] else args['titlestyle'] = Styles['nav_box_header'] if (pargs['border'] or '') == 'child' or (pargs['border'] or '') == 'subgroup' then args['bodystyle'] = Styles['nav_box_child'] tcats = tcats .. '[[Category:Pages using military navigation subgroups without wide style]]' else args['bodystyle'] = Styles['nav_box'] end end sargs['titlestyle'] = 1 sargs['bodystyle'] = 1 -- process groupstyle, abovestyle, belowstyle args['groupstyle'] = Styles['nav_box_label'] .. (pargs['groupstyle'] or '') sargs['groupstyle'] = 1 args['abovestyle'] = Styles['nav_box_label'] .. (pargs['abovestyle'] or '') sargs['abovestyle'] = 1 args['belowstyle'] = Styles['nav_box_label'] .. (pargs['belowstyle'] or '') sargs['belowstyle'] = 1 -- process oddstyle, evenstyle args['oddstyle'] = isnotblank(pargs['odd_color']) and ('background:' .. pargs['odd_color']) or nil sargs['oddstyle'] = 1 args['evenstyle'] = isnotblank(pargs['even_color']) and ('background:' .. pargs['even_color']) or nil sargs['evenstyle'] = 1 -- process name and rawname args['name'] = (isnotblank(pargs['name']) and pargs['name']) or pargs['rawname'] if isblank(args['name']) then args['navbar'] = 'plain' end sargs['name'] = 1 sargs['rawname'] = 1 -- copy the remaining args for k, v in pairs(pargs) do if v and v ~= '' and sargs[k] == nil then args[k] = v end end -- add allow wrap if args['title'] and (pargs['style'] or '') ~= 'wide' then if not mw.ustring.match(args['title'], '<span class="wrap">') then -- probably a more efficient way to match 15 or more characters local m = '[^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|]' m = m .. m .. m args['title'] = mw.ustring.gsub(args['title'], '%[%[(' .. m .. '[^%[%]<>|]*)%]%]', '[[%1|<span class="wrap">%1</span>]]') args['title'] = mw.ustring.gsub(args['title'], '%[%[([^%[%]<>|]*)|(' .. m .. '[^%[%]<>|]*)%]%]', '[[%1|<span class="wrap">%2</span>]]') end end -- add navbox-vertical for non-wide format if (pargs['style'] or '') ~= 'wide' then args['bodyclass'] = 'navbox-vertical' .. (args['bodyclass'] and (' ' .. args['bodyclass']) or '') end return tcats .. Navbox._navbox(args) end return p 26dd1b8952c65fbc4d05e418e8d7c3daed93fa49 Module:WPMILHIST Infobox style 828 1100 2400 2399 2023-10-01T14:20:29Z Führerredux 2 1 revision imported from [[:wikipedia:Module:WPMILHIST_Infobox_style]] Scribunto text/plain local retval = { main_box_raw_auto_width = 'border-spacing:2px;', header_raw = 'background-color:#C3D6EF;text-align:center;vertical-align:middle;font-size:110%;', sub_header_raw = 'background-color:#DCDCDC;text-align:center;vertical-align:middle;', header_color = 'background-color:#C3D6EF;', nav_box = 'margin:0;float:right;clear:right;width:25.5em;margin-bottom:0.5em;margin-left:1em;', nav_box_child = 'margin:0;float:right;clear:right;width:25em;margin-bottom:0.5em;', nav_box_wide = '', nav_box_header = 'background-color:#C3D6EF;', nav_box_wide_header = 'background-color:#C3D6EF;', nav_box_label = 'background-color:#DCDCDC;', image_box_raw = 'text-align:center;border-bottom:1px solid #aaa;line-height:1.5em;', image_box_plain_raw = 'text-align:center;line-height:1.5em;', internal_border = '1px dotted #aaa;', section_border = '1px solid #aaa;' } retval.main_box_raw = 'width:25.5em;' .. retval.main_box_raw_auto_width retval.header_bar = 'style="' .. retval.header_raw .. '"' retval.sub_header_bar = 'style="' .. retval.sub_header_raw .. '"' retval.image_box = 'style="' .. retval.image_box_raw .. '"' retval.image_box_plain = 'style="' .. retval.image_box_plain_raw .. '"' return retval 0f9ea47bc17e40cdabbae6de54f63e40ae502f8e Template:Quote 10 1101 2402 2401 2023-10-01T14:20:29Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Quote]] wikitext text/x-wiki #REDIRECT [[Template:Blockquote]] {{Redirect category shell| {{R from move}} }} 405f136736cb7a6c3831adc68bce0bf0a7b18c45 Template:Greater color contrast ratio 10 1102 2404 2403 2023-10-01T14:20:29Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Greater_color_contrast_ratio]] wikitext text/x-wiki <includeonly>{{safesubst:#invoke:Color contrast|greatercontrast}}</includeonly><noinclude> {{documentation}} </noinclude> eaba2f8ea92d1caa3afd9d70142b65215c23038d Template:Legend 10 1103 2406 2405 2023-10-01T14:20:33Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Legend]] wikitext text/x-wiki <includeonly><!-- --><templatestyles src="Legend/styles.css" /><!-- --><div class="legend"><!-- --><span class="legend-color mw-no-invert" style="<!-- -->{{#if:{{{border|}}}|border: {{{border}}};|{{#if:{{{outline|}}}|border: 1px solid {{{outline}}};}}}}<!-- -->{{#if:{{{1|}}}|{{greater color contrast ratio|{{{1}}}|white|black|css=y}}}}<!-- -->{{#if:{{{textcolor|}}}|color:{{{textcolor}}};}}<!-- -->{{#if:{{{size|}}}|font-size:{{{size}}};}}"><!-- -->{{#if:{{{text|}}}{{{alt|}}} | <span class="legend-text" style="{{#if:{{{alt|}}}|color:{{{1|}}};}}font-family: monospace, monospace;">{{If empty|{{{alt|}}}|{{{text|}}}|&nbsp;}}</span>|&nbsp;}}<!-- --></span><!-- -->&nbsp;{{{2|}}}<!-- --></div><!-- --></includeonly><noinclude> {{Documentation}} </noinclude> bbd1ff4b07414421f82b44f2eabe760b816e56e2 Template:Legend/styles.css 10 1104 2408 2407 2023-10-01T14:20:33Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Legend/styles.css]] sanitized-css text/css /* {{pp-template}} */ .legend { page-break-inside: avoid; break-inside: avoid-column; } .legend-color { display: inline-block; min-width: 1.25em; height: 1.25em; line-height: 1.25; margin: 1px 0; text-align: center; border: 1px solid black; background-color: transparent; color: black; } .legend-text {/*empty for now, but part of the design!*/} f55cad65402533fc931db7fefc801536194952d7 Module:Portal/images/g 828 1105 2410 2409 2023-10-01T14:20:35Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Portal/images/g]] Scribunto text/plain --[==[ This is the "G" list of portal image names. It contains a list of portal images for use with [[Module:Portal]] -- for portal names that start with the letter "G". For aliases to existing portal names, and for portal names that -- start with other letters, please use the appropriate page from the following list: -- [[Module:Portal/images/a]] - for portal names beginning with "A". -- [[Module:Portal/images/b]] - for portal names beginning with "B". -- [[Module:Portal/images/c]] - for portal names beginning with "C". -- [[Module:Portal/images/d]] - for portal names beginning with "D". -- [[Module:Portal/images/e]] - for portal names beginning with "E". -- [[Module:Portal/images/f]] - for portal names beginning with "F". -- [[Module:Portal/images/h]] - for portal names beginning with "H". -- [[Module:Portal/images/i]] - for portal names beginning with "I". -- [[Module:Portal/images/j]] - for portal names beginning with "J". -- [[Module:Portal/images/k]] - for portal names beginning with "K". -- [[Module:Portal/images/l]] - for portal names beginning with "L". -- [[Module:Portal/images/m]] - for portal names beginning with "M". -- [[Module:Portal/images/n]] - for portal names beginning with "N". -- [[Module:Portal/images/o]] - for portal names beginning with "O". -- [[Module:Portal/images/p]] - for portal names beginning with "P". -- [[Module:Portal/images/q]] - for portal names beginning with "Q". -- [[Module:Portal/images/r]] - for portal names beginning with "R". -- [[Module:Portal/images/s]] - for portal names beginning with "S". -- [[Module:Portal/images/t]] - for portal names beginning with "T". -- [[Module:Portal/images/u]] - for portal names beginning with "U". -- [[Module:Portal/images/v]] - for portal names beginning with "V". -- [[Module:Portal/images/w]] - for portal names beginning with "W". -- [[Module:Portal/images/x]] - for portal names beginning with "X". -- [[Module:Portal/images/y]] - for portal names beginning with "Y". -- [[Module:Portal/images/z]] - for portal names beginning with "Z". -- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers, -- letters with diacritics, and letters in non-Latin alphabets. -- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations -- in spelling and diacritics, etc., no matter what letter the portal begins with. -- When adding entries, please use alphabetical order. The format of the images table entries is as follows: -- ["portal name"] = "image.svg", -- The portal name should be the name of your portal, in lower case. For example, the portal name for -- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:" -- namespace prefix should be omitted. ]==] return { ["gabon"] = "Flag of Gabon.svg|border|link=|alt=flag", ["game theory"] = "Tictactoe-cgt-star.svg|link=|alt=icon", ["gaeilge"] = "Ireland smaller.svg|link=|alt=map", ["gaelic games"] = "GaelicGamesProjectLogo.png|link=|alt=icon", ["games"] = "Nuvola apps kbackgammon.png|alt=icon", ["gaming"] = "WPVG icon 2016.svg|link=|alt=", ["gardening"] = "France Loiret La Bussiere Potager 05.jpg|alt=icon", ["gastropods"] = "Grapevinesnail 01a.jpg|alt=icon", ["gene wiki"] = "Gene Wiki logo.png|link=|alt=", ["genocide"] = "GenocidePortalLogo(ESR)2.JPG|link=Genocide|alt=icon", ["geodesy"] = "Latitude and longitude graticule on an ellipsoid.svg|link=|alt=icon", ["geographical coordinates"] = "Earth clip art.svg|link=|alt=icon", ["geography"] = "Terra.png|link=|alt=icon", ["geography of india"] = "India physical map.svg|link=|alt=map", ["geology"] = "WikiProject Geology.svg|alt=icon", ["geophysics"] = "Geodynamo Between Reversals.gif|alt=icon", ["georgia (country)"] = "Flag of Georgia.svg|border|link=|alt=flag", ["georgia (u.s. state)"] = "Flag of Georgia (U.S. state).svg|border|link=|alt=flag", ["german"] = "German dialectal map.PNG|border|link=German language|alt=map", ["german empire"] = "Flag of the German Empire.svg|border|link=|alt=flag", ["germany"] = "Flag of Germany.svg|border|link=|alt=flag", ["ghana"] = "Flag of Ghana.svg|border|link=|alt=flag", ["gibraltar"] = "Flag of Gibraltar.svg|border|link=|alt=flag", ["gilbert and sullivan"] = "Pinaforeplaybill.jpg|link=|alt=", ["gilgit-baltistan"] = "Flag of Pakistan.svg|border|link=|alt=flag", ["glaciers"] = "Baltoro Glacier, Pakistan 2012.png|link=|alt=icon", ["global warming"] = "Change in Average Temperature.svg|alt=icon", ---Please do not add the file "Flag of Goa.svg" for Portal:Goa. This is due to the flag not being the offical flag and discussions on [[Template_talk:Portal#Goa_(2)] ["go"] = "GO game.png|alt=", ["goa"] = "GOA Colva Beach - panoramio.jpg|link=|alt=", ["governments of canada"] = "Canada Parliament2.jpg|alt=icon", ["great britain"] = "Flag of the United Kingdom.svg|border|link=|alt=flag", ["greater los angeles"] = "Flag of Los Angeles County, California.svg|border|link=|alt=flag", ["greater manchester"] = "England Greater Manchester numbered.svg|alt=icon", ["greece"] = "Flag of Greece.svg|border|link=|alt=flag", ["greenland"] = "Flag of Greenland.svg|border|link=|alt=flag", ["grenada"] = "Flag of Grenada.svg|border|link=|alt=flag", ["guadeloupe"] = "Flag of Guadeloupe (local).svg|border|link=|alt=flag", ["guam"] = "Flag of Guam.svg|border|link=|alt=flag", ["guatemala"] = "Flag of Guatemala.svg|border|link=|alt=flag", ["guernsey"] = "Flag of Guernsey.svg|border|link=|alt=flag", ["guinea"] = "Flag of Guinea.svg|border|link=|alt=flag", ["guinea-bissau"] = "Flag of Guinea-Bissau.svg|border|link=|alt=flag", ["gujarat"] = "Seal of Gujarat.svg|link=|alt=", ["guyana"] = "Flag of Guyana.svg|border|link=|alt=flag", } 68a8319ad516f2d3220b70d30b2ad1356bcba06f Template:Ill 10 1106 2412 2411 2023-10-01T14:20:35Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Ill]] wikitext text/x-wiki #REDIRECT [[Template:Interlanguage link]] {{R from template shortcut}} 55504a3a5908b8242853cfc46ecf93ac892b00a5 Template:Balkan Wars 10 1107 2414 2413 2023-10-01T14:20:36Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Balkan_Wars]] wikitext text/x-wiki {{Military navigation | name = Balkan Wars | style = wide | state = {{{state<includeonly>|{{{1|collapsed}}}</includeonly>}}} | bodyclass = hlist | title = [[Balkan Wars]] | category = Balkan Wars | group1 = Background | list1 = * [[Rise of nationalism in the Ottoman Empire|Nationalism in the Ottoman Empire]] ** [[Greater Albania|Albanian]] ** [[Bulgarian irredentism|Bulgarian]] ** [[Megali Idea|Greek]] ** [[Greater Serbia|Serbian]] * [[Congress of Berlin]] * Annexation of [[Eastern Rumelia]] * [[Serbo-Bulgarian War]] * [[Greco-Turkish War (1897)|Greco-Turkish War of 1897]] * [[Cretan State]] * [[Internal Macedonian Revolutionary Organization|IMRO]] & [[Ilinden–Preobrazhenie Uprising]] * [[Macedonian Struggle]] * [[Young Turk Revolution]] * [[Bosnian Crisis]] * [[Bulgarian Declaration of Independence|Bulgarian Independence]] * [[31 March Incident]] * [[Goudi coup]] * [[Italo-Turkish War]] * [[Albanian revolt of 1912]] * [[Balkan League]] |list2style = background: gainsboro; |list2 = '''[[First Balkan War]]''' | group3 = Battles | list3 = * [[Battle of Sarantaporo|Sarantaporo]] * [[Battle of Kardzhali|Kardzhali]] * [[Battle of Pente Pigadia|Pente Pigadia]] * [[Battle of Sorovich|Sorovich]] * [[Battle of Kumanovo|Kumanovo]] * [[Battle of Kirk Kilisse|Kirk Kilisse]] * [[Siege of Scutari (1912–1913)|Scutari]] * [[Battle of Lule Burgas|Lule Burgas]] * [[Battle of Yenidje|Yenidje]] * [[Siege of Adrianople (1912–1913)|Adrianople]] * [[Battle of Prilep|Prilep]] * [[Himara revolt of 1912|Himara]] * [[Battle of Monastir|Monastir]] * [[First Battle of Çatalca|First Çatalca]] * [[Battle of Kaliakra (1912)|Kaliakra]] * [[Battle of Merhamli|Merhamli]] * [[Battle of Driskos|Driskos]] * [[Battle of Elli|Elli]] * [[Capture of Korytsa|Korytsa]] * [[Battle of Lemnos (1913)|Lemnos]] * [[Battle of Bulair|Bulair]] * [[Battle of Şarköy|Şarköy]] * [[Battle of Bizani|Bizani]] * [[Second Battle of Çatalca|Second Çatalca]] | group4 = Diplomacy and politics | list4 = * [[London Conference of 1912–1913|London Conference]] * [[Independent Albania|Albanian Independence]] * [[1913 Ottoman coup d'état]] * [[Treaty of London (1913)|Treaty of London]] |list5style = background: gainsboro; |list5 = '''[[Second Balkan War]]''' | group6 = Battles | list6 = * [[Battle of Kilkis–Lachanas|Kilkis–Lachanas]] * [[Battle of Doiran (1913)|Doiran]] * [[Battle of Bregalnica|Bregalnica]] * [[Battle of Knjaževac|Knjaževac]] * [[Battle of Kalimanci|Kalimanci]] * [[Battle of Kresna Gorge|Kresna Gorge]] * [[Southern Dobruja Offensive|Southern Dobruja]] * [[Romanian landings in Bulgaria]] * [[Siege of Vidin (1913)|Vidin]] * [[Battle of Pirot (1913)|Pirot]] | group7 = Diplomacy and politics | list7 = * [[Greek–Serbian Alliance of 1913|Greek–Serbian Alliance]] * [[Provisional Government of Western Thrace]] * [[Treaty of Bucharest (1913)|Treaty of Bucharest]] * [[Treaty of Constantinople (1913)|Treaty of Constantinople]] * [[Treaty of Athens]] | group8 = Other | list8 = * [[1913 Romanian Army cholera outbreak]] |list9style = background: gainsboro; |list9 = '''General''' | group10 = Aftermath | list10 = * [[Autonomous Republic of Northern Epirus|Autonomy of Northern Epirus]] * [[Greco-Turkish crisis of 1914]] * [[Assassination of Archduke Franz Ferdinand|Sarajevo Assassination]] and [[World War I]] * [[Ottoman–Bulgarian alliance]] * [[Balkans theatre|Balkans campaign of WWI]] ** [[Serbian campaign]] ** [[Macedonian front]] | group11 = Atrocities | list11 = * [[Report of the International Commission on the Balkan Wars|Carnegie Commission]] * [[Massacres of Albanians in the Balkan Wars|Massacres of Albanians]] * [[Destruction of the Thracian Bulgarians in 1913|Bulgarians deportation program]] * [[Greek genocide#Events|Initial phase of the Greek genocide]] * [[List of places burned during the Balkan Wars|Places burned down]] | group12 = Participants | list12 = * [[Kingdom of Bulgaria|Bulgaria]] ** [[Ferdinand I of Bulgaria|Ferdinand I]] ** [[Ivan Evstratiev Geshov|Ivan Geshov]] ** [[Stoyan Danev]] ** [[Mihail Savov]] ** [[Ivan Fichev]] ** [[Vasil Kutinchev]] ** [[Nikola Ivanov]] ** [[Radko Dimitriev]] ** [[Stiliyan Kovachev]] ** [[Georgi Todorov (general)|Georgi Todorov]] * [[Greece in the Balkan Wars|Greece]] ** [[George I of Greece|George I]] ** [[Constantine I of Greece|Constantine I]] ** [[Eleftherios Venizelos]] ** [[Panagiotis Danglis]] ** [[Pavlos Kountouriotis]] ** [[Konstantinos Sapountzakis]] ** [[Viktor Dousmanis]] * [[Kingdom of Montenegro|Montenegro]] ** [[Nicholas I of Montenegro|Nicholas I]] ** [[Danilo, Crown Prince of Montenegro|Crown Prince Danilo]] ** [[Janko Vukotić]] * [[Ottoman Empire]] ** [[Mehmed V]] ** [[Nazim Pasha]] ** [[Zeki Pasha]] ** [[Mehmet Esat Bülkat|Esad Pasha]] ** [[Kölemen Abdullah Pasha]] ** [[Ali Rıza Pasha]] ** [[Hasan Tahsin Pasha]] ** [[Enver Pasha|Enver Bey]] ** [[Ahmed Izzet Pasha]] * [[Kingdom of Romania|Romania]] ** [[Carol I of Romania|Carol I]] ** [[Ferdinand I of Romania|Crown Prince Ferdinand]] ** [[Alexandru Averescu]] * [[Serbia in the Balkan Wars|Serbia]] ** [[Peter I of Serbia|Peter I]] ** [[Alexander I of Yugoslavia|Crown Prince Alexander]] ** [[Radomir Putnik]] ** [[Petar Bojović]] ** [[Stepa Stepanović]] ** [[Božidar Janković (general)|Božidar Janković]] * Other Balkan states: [[Albania during the Balkan Wars|Albania]] ([[Ismail Kemal]]) | below = * [[:Category:Balkan Wars|Category]] }}<noinclude> {{collapsible option |statename=optional |default=collapsed}} [[Category:Europe war and conflict navigational boxes]] </noinclude> 66e26a69be983c820e6ca2c449f43206837f4fed Template:Quote box2 10 1108 2416 2415 2023-10-01T14:20:36Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Quote_box2]] wikitext text/x-wiki #REDIRECT [[Template:Quote box]] {{redirect category shell|{{R from merge}}{{R tsh}}}} 4b306c94366d95b16edcb871c5a56c3885f5a64e Template:Irredentism 10 1109 2418 2417 2023-10-01T14:20:38Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Irredentism]] wikitext text/x-wiki {{Navbox |name = Irredentism |title = [[Irredentism]] |listclass = hlist |group1 = Africa |list1 = * [[Azawagh]] * [[Beninese irredentism|Benin]] * [[Burundian irredentism|Burundi]] * [[Burkinabè irredentism|Burkina Faso]] * [[Cameroonian irredentism|Cameroon]] * [[Chadian irredentism|Chad]] * [[Comorian irredentism|Comoros]] * [[Congolese (Democratic Republic of the Congo) irredentism|Democratic Republic of the Congo]] * [[Djiboutian irredentism|Djibouti]] * [[East African Federation]] * [[Ethiopian irredentism|Ethiopia]] * [[Egyptian irredentism|Egypt]] * [[Equatoguinean irredentism|Equatorial Guinea]] * [[Gabonese irredentism|Gabon]] * [[Guinean irredentism|Guinea]] * [[Bundu dia Kongo|Kongo]] * [[Libyan irredentism|Libya]] * [[Malagasy irredentism|Madagascar]] * [[Malawian irredentism|Malawi]] * [[Greater Mauritania|Mauritania]] * [[Mauritian irredentism|Mauritius]] ** [[Chagos Archipelago sovereignty dispute]] * [[Greater Morocco|Morocco]] ** [[Western Sahara conflict|Western Sahara]] * [[Nigerian irredentism|Nigeria]] * [[Nubia]] * [[Congolese (Republic of the Congo) irredentism|Republic of the Congo]] * [[Rwandan irredentism|Rwanda]] * [[Swazi irredentism|Eswatini]] * [[Seychellois irredentism|Seychelles]] * [[Greater Somalia|Somalia]] * [[Greater South Africa|South Africa]] * [[South Sudanese irredentism|South Sudan]] * [[Sudanese irredentism|Sudan]] * [[Union of Sahel States]] * [[Ugandan irredentism|Uganda]] * [[Zambian irredentism|Zambia]] * [[Zimbabwean irredentism|Zimbabwe]] |group2 = North America |list2 = * [[Proposed Canadian annexation of the Turks and Caicos Islands|Canada]] * [[Belizean–Guatemalan territorial dispute|Guatemala]] * [[Reconquista (Mexico)|Mexico]] ** [[Mexica Movement|Mexica]] * [[Manifest destiny|United States]] ** [[51st state]] ** [[Movements for the annexation of Canada to the United States|movement for the annexation of Canada]] * [[Saint Christopher-Nevis-Anguilla|Saint Kitts and Nevis]] * [[Unification of Saint Martin|Saint Martin]] |group3 = South America |list3 = * [[Argentine irredentism|Argentina]] ** [[United Provinces of the Río de la Plata|Gran La Plata]] * [[Día del Mar|Bolivia]] **[[Bolivian–Peruvian territorial dispute|Acre and Pando]] * [[Chilean expansionism|Chile]] ** [[Tricontinental Chile|Tricontinental]] * [[Gran Colombia|Colombia]] ** [[Colombian–Peruvian territorial dispute|Jaén and Maynas]] * [[Ecuadorian–Peruvian territorial dispute|Ecuador]] * [[Chilean–Peruvian territorial dispute|Peru]] ** [[Peru–Bolivian Confederation|Bolivia]] * [[Borders of Suriname|Suriname]] * [[Guayana Esequiba|Venezuela]] |group4 = Western Asia |list4 = * [[United Armenia|Armenia]] ** [[Miatsum|Artsakh]] ** [[Javakheti]] ** [[Western Armenia]] * [[Assyrian homeland|Assyria]] * [[Whole Azerbaijan|Azerbaijan]] ** [[Western Azerbaijan (irredentist concept)|Western Azerbaijan]] ** [[Southern Azerbaijan National Awakening Movement|Southern Azerbaijan]] * [[Annan Plan|Cyprus]] * [[Kurdistan]] ** [[Iraqi Kurdistan]] ** [[Iranian Kurdistan]] ** [[Turkish Kurdistan]] ** [[Syrian Kurdistan]] * [[Pan-Iranism|Iran]] * [[Iraqi nationalism|Iraq]] ** [[Kuwait Governorate|Kuwait]] * [[Greater Israel|Israel]] * [[Lebanese nationalism|Lebanon]] * [[Greater Palestine|Palestine]] * [[Unification of Saudi Arabia|Saudi Arabia]] * [[Greater Syria|Syria]] ** [[Hatay Province|Hatay]] * [[Misak-ı Millî|Turkey]] ** [[Taksim (politics)|Cyprus]] ** [[Pan-Turkism]] * [[Greater Yemen|Yemen]] |group5 = Southern Asia |list5 = * [[Akhand Bharat|India]] * [[Pashtunistan]] |group6 = Central Asia |list6 = * [[Politics of Tajikistan#Tajiks in Uzbekistan|Tajikistan]] |group7 = Eastern and Southeastern Asia |list7 = * [[Cambodian irredentism|Cambodia]] * [[Chinese irredentism|China]] ** [[Senkaku Islands dispute|Diaoyu]] ** [[Chinese unification|Taiwan]] * [[Korean reunification|Korea]] ** [[Korean claim to Tsushima Island|Daemado]] ** [[Jiandao|Gando]] ** [[Noktundo|Nokdundo]] * [[Greater Indonesia|Indonesia]] * [[Empire of Japan|Japan]] ** [[Kuril Islands dispute|Chishima]] ** [[Greater East Asia Co-Prosperity Sphere]] ** [[Liancourt Rocks dispute|Takeshima]] * [[Pan-Mongolism|Mongolia]] * [[Territories claimed by the Philippines|Philippines]] ** [[North Borneo dispute|Sabah]] * [[Pan-Thaiism|Thailand]] * [[Great Timor|Timor]] * [[Vietnamese irredentism|Vietnam]] |group8 = Central and Eastern Europe |list8 = * [[Belarusian Democratic Republic#Territory|Belarus]] ** [[Belastok Region]] ** [[Vilnius Region#Vilnius dispute|Vilnius Region]] ** [[Smolensk Governorate]] * [[Czechoslovakia]] ** [[Carpathian Ruthenia#Subcarpathian Rus' (1928–1938)|Carpathian Ruthenia]] ** [[Kłodzko Land|Kłodzko]] * [[Hungarian irredentism|Hungary]] * [[Greater Moldova|Moldova]] * [[Ossetia]] ** [[North Ossetia–Alania|North Ossetia]] ** [[South Ossetia]] * [[Polish irredentism|Poland]] ** [[Kresy]] ** [[Trans-Olza]] * [[Greater Romania|Romania]] ** [[Unification of Moldova and Romania|Moldova]] * [[Russian irredentism|Russia]] * [[United Slovenia|Slovenia]] * [[Ukrainian irredentism|Ukraine]] |group9 = Southern Europe |list9 = * [[Greater Albania|Albania]] ** [[Unification of Albania and Kosovo|Kosovo]] ** [[Albanian nationalism in North Macedonia|North Macedonia]] * [[Greater Bosnia|Bosnia and Herzegovina]] * [[Bulgarian irredentism|Bulgaria]] * [[Greater Croatia|Croatia]] ** [[Croatian Republic of Herzeg-Bosnia|Bosnia]] * [[Galicia irredenta|Galicia]] * [[Megali Idea|Greece]] ** [[Enosis|Cyprus]] * [[Italian irredentism|Italy]] ** [[Italian irredentism in Corsica|Corsica]] ** [[Italian irredentism in Dalmatia|Dalmatia]] ** [[Italian irredentism in Istria|Istria]] ** [[Italian irredentism in Switzerland|Italian Grisons]] ** [[Italian irredentism in Malta|Malta]] ** [[Italian irredentism in Nice|Nice]] ** [[Italian irredentism in Savoy|Savoy]] ** [[Italian irredentism in Switzerland|Ticino]] * [[United Macedonia|North Macedonia]] * [[Greater Serbia|Serbia]] ** [[Partition of Kosovo|Kosovo]] ** [[Proposed secession of Republika Srpska|Republika Srpska]] * [[Spanish irredentism|Spain]] ** [[Status of Gibraltar|Gibraltar]] ** [[Iberian federalism|Portugal]] * [[Yugoslav irredentism|Yugoslavia]] |group10 = Northern Europe |list10 = * [[Lands of Denmark|Denmark]] * [[Greater Finland|Finland]] * [[Rockall Bank dispute|Iceland]] * [[Historical Latvian Lands|Latvia]] ** [[Pytalovsky_District#History|Abrene]] ** [[Walk crisis#Runö question|Ruhnu]] * [[Cultural regions of Lithuania|Lithuania]] * [[Greater Norway#Former dependencies and homelands|Norway]] * [[Lands of Sweden#Historical lands|Sweden]] |group11 = Western Europe |list11 = * [[Greater Belgium|Belgium]] * [[Celtic union|Celtics]] * [[South Tyrolean secessionist movement|South Tyrol and Austria]] * [[Natural borders of France|France]] ** [[Rattachism|Wallonia]] * [[Pan-Germanism|Germany]] ** [[German nationalism in Austria|Austria]] *** [[Annexation of Austria]] ** [[Greater Germanic Reich]] ** [[Lebensraum]] * [[United Ireland|Ireland]] * [[Greater Netherlands|Netherlands]] * [[Enlargement of Switzerland|Switzerland]] |group12 = Oceania |list12 = * [[List of proposed states of Australia|Australia]] * [[Gilbert and Ellice Islands|Kiribati]] * [[Papuan unification|Papua New Guinea]] * [[Samoan unification|Samoa]] * [[Matthew Island and Hunter Island|Vanuatu]] |below = ''Related concepts:'' '''''[[List of national border changes since 1914|Border changes since 1914]] · [[Partition (politics)|Partitionism]] · [[Political union|Reunification]] · [[Revanchism]] · [[Revanchism|Revisionism]] · [[Rump state]]''''' }}<noinclude> {{Doc|content= ==See also== * [[:Category:Irredentism]] [[Category:Nationalism navigational boxes]] }}</noinclude> 5723d28ede391007e2d337926eeffd7d136d803a Template:Pan-nationalist concepts 10 1110 2420 2419 2023-10-01T14:20:39Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Pan-nationalist_concepts]] wikitext text/x-wiki {{Navbox |name = Pan-nationalist concepts |title = [[Pan-nationalism|Pan-nationalist concepts]] |listclass = hlist |group1 = Ideas |list1 = *[[Pan-Africanism]] *[[Pan-Americanism]] *[[Pan-Arabism]] *[[Pan-Asianism]] *[[Berberism]] *[[Pan-Caucasianism]] *[[Pan-Celticism]] *[[Czechoslovakism]] *[[Pan-Finnicism]] *[[Pan-Germanism]] *[[Eurasianism]] *[[Pan-European nationalism]] *[[Panhispanism]] *[[Iberian federalism|Pan-Iberism]] *[[Pan-Indianism]] *[[Pan-Iranism]] *[[Pan-Latinism]] *[[Mediterraneanism]] *[[Pan-Mongolism]] *[[Pan-Oceanian|Pan-Oceanianism]] *[[Scandinavism]] *[[Greater Serbia|Pan-Serbism]] *[[Pan-Slavism]] *[[Rattachism]] *{{ill|Pan-Tatarism|ru|Пантатаризм|tt|Пантатаризм}} *[[Turanism]] *[[Pan-Turkism]] *[[Yugoslavism]] |group2 = Territorial<br />concepts |list2 = *[[Greater Albania]] *[[Basque Country (greater region)|Basque Country]] *[[Greater Bosnia]] *[[Unionism in the United Kingdom|British unionism]] *[[Bulgarian irredentism]] *[[Cambodian irredentism|Greater Cambodia]] *[[Greater Antilles|Caribbean Antilles]] *[[Catalan Countries]] *[[Celtic union]] *[[Gran Colombia]] *[[Greater China]] *[[Greater Croatia]] *[[Eritrean nationalism|Eritrean national identity nationalism]] *[[Ethiopian nationalism|Ethiopian national identity nationalism]] *[[Greater Finland]] *''[[Galicia irredenta]]'' *[[Hungarian irredentism|Greater Hungary]] *[[Greater India]] *[[Greater Indonesia]] *[[Greater Iran]] *[[Greater Iraq]] *[[Greater Israel]] *[[Italian imperialism under Fascism|Greater Italy]] *[[Greater Mauritania]] *[[Reconquista (Mexico)|Greater Mexico]] *[[Greater Moldova]] *[[Greater Morocco]] *[[Greater Netherlands]] *[[Greater Norway]] *[[Greater Palestine]] *[[Polish irredentism|Greater Poland]] *{{ill|Portugaliza|lt=Greater Portugal|pt|Portugaliza}} *[[Greater Romania]] *[[Russian irredentism|Greater Russia]] *[[Greater Serbia]] *[[Greater Somalia]] *[[Spanish irredentism|Greater Spain]] *[[Greater Syria]] *[[Ukrainian irredentism|Greater Ukraine]] *[[Vietnamese irredentism|Greater Vietnam]] *[[Yugoslav irredentism|Greater Yugoslavia]] *[[Megali Idea|Megali Idea (Greece)]] *[[Kurdish nationalism|Kurdistan]] *[[Occitan nationalism|Occitania]] *[[Padanian nationalism]] *[[Patria Grande]] *[[Tamazgha]] *[[Misak-ı Millî|Misak-ı Millî (Turkey)]] *[[United Armenia]] *[[United Ireland]] *[[United Macedonia]] *[[Whole Azerbaijan]] *[[Turan]] |group3 = [[Panethnicity|Pan-ethnic]]<br />groups |list3 = *[[Hispanic and Latino Americans|Latinos]], [[Hispanic|Hispanic peoples]] *[[Habesha peoples]] }}<noinclude> {{Documentation|content = This template shows articles about pan-nationalist concepts. ==See also== * [[:Category:Irredentism]] [[Category:Political ideology navigational boxes]] [[Category:Nationalism navigational boxes]] }}</noinclude> b8b566c0a1d134ef4baafdb951998c12e3cb04b2 Template:Stateless nationalism in Europe 10 1111 2422 2421 2023-10-01T14:20:39Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Stateless_nationalism_in_Europe]] wikitext text/x-wiki {{navbox |navbar= |name=Stateless nationalism in Europe |title=[[List of active separatist movements in Europe|Movements]] of [[Regionalism (politics)|regionalism]], [[separatism]] and [[Stateless nation|stateless]] [[nationalism]] in Europe |listclass=hlist | group1 = Albania | list1 = *[[Autonomous Republic of Northern Epirus|Northern Epirus]] | group2 = Azerbaijan | list2 = *[[Republic of Artsakh|Artsakh]] *[[Lezgin nationalism|Lezgin]] *[[Talysh-Mughan Autonomous Republic|Talysh]] | group3 = Belgium | list3 = *[[Flemish Movement|Flemish]] *[[Walloon Movement|Walloon]] | group4 = Bosnia and<br />Herzegovina | list4 = *[[Proposed secession of Republika Srpska|Republika Srpska]] | group5 = Croatia | list5 = *[[Istrianism|Istrian]] | group6 = Cyprus | list6 = *[[Turkish Cypriot nationalism|Turkish Cypriot]] | group7 = Denmark | list7 = *[[Greenlandic independence|Greenlandic]] *[[Faroese independence movement|Faroese]] | group8 = Finland | list8 = *[[Future of Åland|Ålandic]] *[[Sápmi|Sámi]] | group9 = France | list9 = *[[Alsace independence movement|Alsatian]] *[[Basque nationalism|Basque]] *[[Breton nationalism|Breton]] *[[Corsican nationalism|Corsican]] *[[Occitan nationalism|Occitan]] *[[Catalan nationalism|North Catalan]] | group10 = Georgia | list10 = *[[Abkhazia]]n *[[Adjaria]]n *[[United Javakhk Democratic Alliance|Javakheti]] *[[Ossetia]]n | group11 = Germany | list11 = *[[Bavarian nationalism|Bavarian]] *[[Sorbs]] *[[Swabians]] | group12 = Greece | list12 = *[[Chameria|Cham Albanian]] | group13 = Italy | list13 = *[[Lombard nationalism|Lombard]] *[[Padanian nationalism|Padanian]] *[[Sardinian nationalism|Sardinian]] *[[Sicilian nationalism|Sicilian]] *[[South Tyrolean independence movement|South Tyrolean]] *[[Venetian nationalism|Venetian]] | group14 = North Macedonia | list14 = *[[Ilirida]] | group15 = Moldova | list15 = *[[Gagauzia]] *[[Transnistria]] | group16 = Netherlands | list16 = *[[Frisian nationalism|Frisian]] | group17 = Norway | list17 = *[[Sápmi|Sámi]] | group18 = Poland | list18 = *[[Kaszëbskô Jednota|Kashubian]] *[[Silesian Autonomy Movement|Silesian]] *[[Free City of Danzig Government in Exile|Free City of Danzig]] | group19 = Romania | list19 = *[[Székely autonomy movement|Székely]] *[[Transylvania–Banat League|Transylvania–Banat]] | group20 = Russia | list20 = *[[Balkar and Karachay nationalism|Balkar and Karachay]] *[[Bashkortostan|Bashkir]] *[[Chechen Republic of Ichkeria|Chechen]] *[[Chuvash nationalism|Chuvash]] *[[Circassian nationalism|Circassian]] *[[Crimean People's Republic|Crimean Tatar]] *[[Karelia]]n *[[Lezgin nationalism|Lezgin]] *[[Ossetia]]n *[[Sápmi|Sámi]] *[[Siberian regionalism|Siberian]] *[[Tatar nationalism|Tatar]] | group21 = Serbia | list21 = *[[Vojvodina Autonomist Movement|Vojvodina]] *[[Kosovo]] | group22 = Spain | list22 = *[[Andalusian nationalism|Andalusian]] *[[Aragonese nationalism|Aragonese]] *[[Asturian nationalism|Asturian]] *[[Basque nationalism|Basque]] *[[Canarian nationalism|Canarian]] *[[Castilian nationalism|Castilian]] *[[Catalan nationalism|Catalan]] *[[Galician nationalism|Galician]] *[[Navarrese nationalism|Navarrese]] *[[Valencian nationalism|Valencian]] | group23 = Sweden | list23 = *[[Sápmi|Sámi]] *[[Scania Party|Scania]] | group24 = Turkey | list24 = *[[Assyrian nationalism|Assyrian]] *[[Kurdish nationalism|Kurdish]] | group25 = Ukraine | list25 = *[[Crimean People's Republic|Crimean Tatar]] *[[Donetsk People's Republic|Donetsk]] *[[Luhansk People's Republic|Luhansk]] | group26 = United Kingdom | list26 = *[[Cornish nationalism|Cornish]] *[[Ulster nationalism|Northern Irish]] *[[Scottish nationalism|Scottish]] *[[Welsh nationalism|Welsh]] *[[Yorkshire Party|Yorkshire]] |group27= See also |list27= *[[First-level NUTS of the European Union]] |group28= Notes }}<noinclude> {{Doc|content= ==See also== * [[:Category:Stateless nationalism in Europe]] [[Category:Europe politics and government navigational boxes|Nationalism]] [[Category:Nationalism navigational boxes|Europe]] }}</noinclude> b87180dad1a4664fe28e781822eba7c933c7979b Template:Megali Idea 10 1112 2424 2423 2023-10-01T14:20:40Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Megali_Idea]] wikitext text/x-wiki {{Navbox |name = Megali Idea |title = [[Megali Idea]] |state = {{{state|autocollapse}}} |listclass = hlist |titlestyle = background:; |groupstyle = text-align:center; background:; |image= [[File:ParisPeace-Venizelos-Map.png|120px]] |group1 = Background |list1 = * [[Fall of Constantinople]] * [[Ottoman Greece]] * [[Greek Plan]] * [[Greek War of Independence]] * [[First Hellenic Republic]] * [[Kingdom of Greece]] |group2 = Annexations |list2 = * [[Ionian Islands]] (1864) * [[Thessaly]] (1881) * [[Crete]] (1912) * [[Epirus (region)|Epirus]] (1912) * [[Macedonia (Greece)|Macedonia]] (1912) * [[North Aegean islands]] (1912) * [[Western Thrace]] (1919) * [[Dodecanese]] (1947) |group3 = Temporary<br/>acquisitions |list3 = * [[Eastern Thrace]] (1920–23) * [[Imbros]] and [[Tenedos]] (1912–13, 1920–23) * [[Northern Epirus]] (1914–17, 1919–21, 1940–41) * [[Smyrna Zone]] (1919–22 as dependency) * [[Occupation of Istanbul|Constantinople, Zone of the Straits]] (1918–23 with France, Italy and United Kingdom) |group4 = Other areas |list4 = * [[Asia Minor]] which included: [[Ionia]] *[[Aeolis]] *[[Doris (Asia Minor)|Doris]] *[[Cappadocia]] ([[Cappadocian Greeks]]) *[[Lydia]] *[[Caria]] *[[Mysia]] *[[Troad|Troas]] *[[Phrygia]] *[[Galatia]] *[[Bithynia]] *[[Lycia]] *[[Cilicia]] *[[Cataonia]] *[[Lycaonia]] *[[Pamphylia]] *[[Isauria]] *[[Pisidia]] *[[Paphlagonia]] *[[Chamanene]] *[[Armenia Minor]] *Part of [[Commagene]] * [[Cyprus]] * [[Eastern Rumelia]] * [[Pelagonia]] ([[Bitola|Monastiri]] region) * [[Gevgelija|Gevgeli]] * [[Sazan|Sazan island]] * [[Pontus (region)|Pontus]] |group5 = Ideas |list5 = * [[Greek nationalism]] * [[Hellenization]] * [[Enosis]] |group6 = People/Organizations |list6 = * [[Ioannis Kolettis]] * [[Aristotelis Valaoritis]] * [[Ethniki Etaireia]] * [[Macedonian Committee]] * [[Alexandros Koumoundouros]] * [[Dimitrios Kalapothakis]] * [[Stephanos Dragoumis]] * [[Pavlos Melas]] * [[Kostis Palamas]] * [[Goudi coup|Military League]] * [[Eleftherios Venizelos]] * [[Penelope Delta]] * [[Themistoklis Sofoulis]] * [[Nikolaos Plastiras]] * [[Georgios Christakis-Zografos]] * [[Theodoros Pangalos (general)|Theodoros Pangalos]] * [[Northern Epirus Liberation Front]] * [[EOKA]] * [[Georgios Grivas]] * [[Dimitrios Ioannidis]] |group7 = Events |list7 = * [[Party of Radicals (Ionian Islands)]] * [[Epirus Revolt of 1854]] * [[1854 Macedonian rebellion]] * [[1867 Macedonian rebellion]] * [[Cretan revolt (1866–1869)]] * [[Cretan revolt (1878)]] * [[Epirus Revolt of 1878]] * [[1878 Macedonian rebellion]] * [[Macedonian Struggle]] * [[Greco-Turkish War (1897)]] * [[Theriso revolt]] * [[Balkan League]] * [[Greece in the Balkan Wars|Balkan Wars]] * [[Himara revolt of 1912]] * [[Autonomous Republic of Northern Epirus]] * [[Provisional Government of National Defence]] * [[National Defence Army Corps]] * [[Greece during World War I|Greece in WWI]] * [[Occupation of Constantinople]] * [[Greek landing at Smyrna]] * [[Republic of Pontus]] * [[Greco-Turkish War (1919–1922)]] * [[Great Fire of Smyrna]] * [[1931 Cyprus Revolt]] * [[Military history of Greece during World War II|Greece in WWII]] * [[Greco-Italian War]] * [[Cyprus Emergency]] * [[1974 Cypriot coup d'état]] |group8 = Treaties |list8 = * [[Treaty of London (1864)]] * [[Greek-Serbian Alliance of 1867]] * [[Treaty of Berlin (1878)]] * [[Convention of Constantinople (1881)]] * [[Treaty of Constantinople (1897)]] * [[Greek-Serbian Alliance of 1913]] * [[Treaty of London (1913)]] * [[Treaty of Bucharest (1913)]] * [[Treaty of Athens]] (1913) * [[Protocol of Corfu]] (1914) * [[Venizelos–Tittoni agreement]] (1919) * [[Treaty of Neuilly-sur-Seine]] (1919) * [[Treaty of Sèvres]] (1920) * [[Treaty of Lausanne|Treaty of Lausanne (1923)]] * [[Treaty of Peace with Italy, 1947|Treaty of Paris (1947)]] * [[Treaty of Guarantee (1960)]] |below = |belowstyle = background:; }}<noinclude> {{collapsible option}} [[Category:Megali Idea|τ]] [[Category:Greek nationalism|τ]] [[Category:Pan-nationalism|*]] </noinclude> 16782fa2ee56cebd2c36eca2c8f7b99db0bdd539 Greater Greece 0 1113 2426 2425 2023-10-01T14:20:40Z Führerredux 2 1 revision imported from [[:wikipedia:Greater_Greece]] wikitext text/x-wiki #REDIRECT [[Megali Idea]] {{R hatnote}} 1e2421e237e64daf0b351ac051651fb9c1da961b Template:Greek nationalism 10 1114 2428 2427 2023-10-01T14:20:41Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Greek_nationalism]] wikitext text/x-wiki {{Navbox |name = Greek nationalism |state = {{{state<includeonly>|collapsed</includeonly>}}} |title = [[Greek nationalism]] |listclass = hlist |group1 = Ideology |list1 = * [[Modern Greek Enlightenment]] * [[Megali Idea]] * [[Hellenization]] ** [[Grecoman]] * [[Venizelism]] * [[Metaxism]] * [[Enosis]] |group2 = Organizations |list2 = * [[Filiki Eteria]] * [[Ethniki Etaireia]] * [[Macedonian Committee]] * [[Goudi coup|Military League]] * [[National Youth Organisation (Greece)|National Youth Organisation]] * [[EDES]] * [[Northern Epirus Liberation Front]] * [[EOKA]] * [[EOKA B]] |group3 = Political parties |list3 = *[[Russian Party|Napist Party]] *[[Nationalist Party (Greece)|Nationalist Party]] *[[New Party (Greece, 1873)|New Party (1873)]] *[[New Party (Greece, 1947)|New Party (1947)]] *[[Liberal Party (Greece)|Liberal Party]] *[[Freethinkers' Party]] *[[Politically Independent Alignment]] *[[Greek Rally]] *[[National Party of Greece]] *[[4th of August Party]] *[[National Democratic Union (Greece)|National Democratic Union]] *[[National Alignment]] * [[United Nationalist Movement]] *[[Party of Hellenism]] *[[National Political Union (1984)|National Political Union]] *[[Hellenic Front]] *[[Front Line (political party)|Front Line]] *[[Patriotic Alliance (Greece)|Patriotic Alliance]] *[[Political Spring]] *[[National Front (Greece)]] *[[Popular Orthodox Rally]] *[[Golden Dawn (Greece)|Golden Dawn]] *[[ELAM (Cyprus)]] *[[National Unity Association]] *[[Greek Solution]] *[[LEPEN (political party)|LEPEN]] *[[Greeks for the Fatherland]] |group4 = People |list4 = * [[Adamantios Korais]] * [[Rigas Feraios]] * [[Alexander Ypsilantis]] * [[Ioannis Kapodistrias]] * [[Athanasios Diakos]] * [[Theodoros Kolokotronis]] * [[Dionysios Solomos]] * [[Constantine Paparrigopoulos]] * [[Aristotelis Valaoritis]] * [[Alexandros Koumoundouros]] * [[Theodoros Diligiannis]] * [[Kostis Palamas]] * [[Pavlos Melas]] * [[Ion Dragoumis]] * [[Eleftherios Venizelos]] * [[Nikolaos Plastiras]] * [[Ioannis Metaxas]] * [[Angelos Sikelianos]] * [[Alexandros Papagos]] * [[Napoleon Zervas]] * [[Georgios Grivas]] * [[Georgios Papadopoulos]] * [[Dimitrios Ioannidis]] * [[Antonis Samaras]] |group5 = Historical events |list5 = * [[Greco-Persian Wars]] * [[Byzantine Empire under the Palaiologos dynasty]] * [[Greek War of Independence]] * [[Epirus Revolt of 1854]] * [[1854 Macedonian rebellion]] * [[1867 Macedonian rebellion]] * [[Cretan revolt (1866–1869)]] * [[Cretan revolt (1878)]] * [[Epirus Revolt of 1878]] * [[1878 Macedonian rebellion]] * [[1896–1897 Macedonian rebellion]] * [[Greco-Turkish War (1897)]] * [[Macedonian Struggle]] * [[Maratha, Santalaris and Aloda massacre]] * [[Theriso revolt]] * [[Greece in the Balkan Wars]] * [[Autonomous Republic of Northern Epirus]] * [[Greece during World War I]] * [[Greco-Turkish War (1919–1922)]] * [[1931 Cyprus revolt]] * [[4th of August Regime]] * [[Greek resistance]] * [[Cyprus Emergency]] (1955–59) * [[Cypriot intercommunal violence#Crisis of 1963–1964|Cyprus crisis of 1963–64]] * [[Bloody Christmas (1963)]] * [[Greek junta]] (1967–74) * [[1974 Cypriot coup d'état]] * [[1990 Komotini events]] |group6 = Policies |list6 = * [[Aromanian question]] * [[Geographical name changes in Greece|Geographical name changes]] * [[Greek language question]] }}<noinclude> {{collapsible option}} [[Category:Greek nationalism|τ]] [[Category:Greece politics and government templates|Nationalism]] </noinclude> 3ac46bed7a0ab70e714050fa2c139f6db2f06842 MediaWiki:Common.js 8 449 2429 975 2023-10-01T14:59:59Z Führerredux 2 javascript text/javascript // /** // * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally // * loaded for all users on every wiki page. If possible create a gadget that is // * enabled by default instead of adding it here (since gadgets are fully // * optimized ResourceLoader modules with possibility to add dependencies etc.) // * // * Since Common.js isn't a gadget, there is no place to declare its // * dependencies, so we have to lazy load them with mw.loader.using on demand and // * then execute the rest in the callback. In most cases these dependencies will // * be loaded (or loading) already and the callback will not be delayed. In case a // * dependency hasn't arrived yet it'll make sure those are loaded before this. // */ // /* global mw, $ */ // /* jshint strict:false, browser:true */ // mw.loader.using( [ 'mediawiki.util' ] ).done( function () { // /* Begin of mw.loader.using callback */ // /** // * Map addPortletLink to mw.util // * @deprecated: Use mw.util.addPortletLink instead. // */ // mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' ); // /** // * Test if an element has a certain class // * @deprecated: Use $(element).hasClass() instead. // */ // mw.log.deprecate( window, 'hasClass', function ( element, className ) { // return $( element ).hasClass( className ); // }, 'Use jQuery.hasClass() instead' ); // /** // * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL // * @rev 6 // */ // var extraCSS = mw.util.getParamValue( 'withCSS' ), // extraJS = mw.util.getParamValue( 'withJS' ); // if ( extraCSS ) { // if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) { // mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' ); // } else { // mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } ); // } // } // if ( extraJS ) { // if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) { // mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' ); // } else { // mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } ); // } // } // /** // * WikiMiniAtlas // * // * Description: WikiMiniAtlas is a popup click and drag world map. // * This script causes all of our coordinate links to display the WikiMiniAtlas popup button. // * The script itself is located on the Meta-Wiki because it is used by many projects. // * See [[Meta:WikiMiniAtlas]] for more information. // * Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer // */ // $( function () { // var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length; // if ( requireWikiminiatlas ) { // mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' ); // } // } ); // /** // * Collapsible tables; reimplemented with mw-collapsible // * Styling is also in place to avoid FOUC // * // * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]]. // * @version 3.0.0 (2018-05-20) // * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js // * @author [[User:R. Koot]] // * @author [[User:Krinkle]] // * @author [[User:TheDJ]] // * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which // * is supported in MediaWiki core. Shimmable since MediaWiki 1.32 // * // * @param {jQuery} $content // */ // function makeCollapsibleMwCollapsible( $content ) { // var $tables = $content // .find( 'table.collapsible:not(.mw-collapsible)' ) // .addClass( 'mw-collapsible' ); // $.each( $tables, function ( index, table ) { // // mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.'); // if ( $( table ).hasClass( 'collapsed' ) ) { // $( table ).addClass( 'mw-collapsed' ); // // mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.'); // } // } ); // if ( $tables.length > 0 ) { // mw.loader.using( 'jquery.makeCollapsible' ).then( function () { // $tables.makeCollapsible(); // } ); // } // } // mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible ); // /** // * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse // * // * Maintainers: TheDJ // */ // function mwCollapsibleSetup( $collapsibleContent ) { // var $element, // $toggle, // autoCollapseThreshold = 2; // $.each( $collapsibleContent, function ( index, element ) { // $element = $( element ); // if ( $element.hasClass( 'collapsible' ) ) { // $element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) ); // } // if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) { // $element.data( 'mw-collapsible' ).collapse(); // } else if ( $element.hasClass( 'innercollapse' ) ) { // if ( $element.parents( '.outercollapse' ).length > 0 ) { // $element.data( 'mw-collapsible' ).collapse(); // } // } // // because of colored backgrounds, style the link in the text color // // to ensure accessible contrast // $toggle = $element.find( '.mw-collapsible-toggle' ); // if ( $toggle.length ) { // // Make the toggle inherit text color (Updated for T333357 2023-04-29) // if ( $toggle.parent()[ 0 ].style.color ) { // $toggle.css( 'color', 'inherit' ); // $toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' ); // } // } // } ); // } // mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup ); // /** // * Magic editintros **************************************************** // * // * Description: Adds editintros on disambiguation pages and BLP pages. // * Maintainers: [[User:RockMFR]] // * // * @param {string} name // */ // function addEditIntro( name ) { // $( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) { // el.href = $( this ).attr( 'href' ) + '&editintro=' + name; // } ); // } // if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) { // $( function () { // if ( document.getElementById( 'disambigbox' ) ) { // addEditIntro( 'Template:Disambig_editintro' ); // } // } ); // $( function () { // var cats = mw.config.get( 'wgCategories' ); // if ( !cats ) { // return; // } // if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) { // addEditIntro( 'Template:BLP_editintro' ); // } // } ); // } // /* End of mw.loader.using callback */ // } ); // /* DO NOT ADD CODE BELOW THIS LINE */ f0c2a0a14f54b923392496e02ccf2f1b3f4eaff2 2430 2429 2023-10-01T15:07:16Z Führerredux 2 javascript text/javascript /** * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally * loaded for all users on every wiki page. If possible create a gadget that is * enabled by default instead of adding it here (since gadgets are fully * optimized ResourceLoader modules with possibility to add dependencies etc.) * * Since Common.js isn't a gadget, there is no place to declare its * dependencies, so we have to lazy load them with mw.loader.using on demand and * then execute the rest in the callback. In most cases these dependencies will * be loaded (or loading) already and the callback will not be delayed. In case a * dependency hasn't arrived yet it'll make sure those are loaded before this. */ /* global mw, $ */ /* jshint strict:false, browser:true */ mw.loader.using( [ 'mediawiki.util' ] ).done( function () { /* Begin of mw.loader.using callback */ /** * Map addPortletLink to mw.util * @deprecated: Use mw.util.addPortletLink instead. */ mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' ); /** * Test if an element has a certain class * @deprecated: Use $(element).hasClass() instead. */ mw.log.deprecate( window, 'hasClass', function ( element, className ) { return $( element ).hasClass( className ); }, 'Use jQuery.hasClass() instead' ); /** * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL * @rev 6 */ var extraCSS = mw.util.getParamValue( 'withCSS' ), extraJS = mw.util.getParamValue( 'withJS' ); if ( extraCSS ) { if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } ); } } if ( extraJS ) { if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } ); } } /** * WikiMiniAtlas * * Description: WikiMiniAtlas is a popup click and drag world map. * This script causes all of our coordinate links to display the WikiMiniAtlas popup button. * The script itself is located on the Meta-Wiki because it is used by many projects. * See [[Meta:WikiMiniAtlas]] for more information. * Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer */ $( function () { var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length; if ( requireWikiminiatlas ) { mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' ); } } ); /** * Collapsible tables; reimplemented with mw-collapsible * Styling is also in place to avoid FOUC * * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]]. * @version 3.0.0 (2018-05-20) * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js * @author [[User:R. Koot]] * @author [[User:Krinkle]] * @author [[User:TheDJ]] * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which * is supported in MediaWiki core. Shimmable since MediaWiki 1.32 * * @param {jQuery} $content */ function makeCollapsibleMwCollapsible( $content ) { var $tables = $content .find( 'table.collapsible:not(.mw-collapsible)' ) .addClass( 'mw-collapsible' ); $.each( $tables, function ( index, table ) { // mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.'); if ( $( table ).hasClass( 'collapsed' ) ) { $( table ).addClass( 'mw-collapsed' ); // mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.'); } } ); if ( $tables.length > 0 ) { mw.loader.using( 'jquery.makeCollapsible' ).then( function () { $tables.makeCollapsible(); } ); } } mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible ); /* A script to add an Edit button for Visual Editor if the extension is enabled but the button is not showing up. */ // Text to be used on button here: label = 'Edit'; // Text for mouse hover: title = 'Edit this page'; // Only run script if not in editor if (!(/veaction=edit/).test(window.location.search)){ // Unhide button if it's just hidden if(document.querySelector("#ca-ve-edit")){ if (document.querySelector("#ca-ve-edit").style.display == 'none'){ document.querySelector("#ca-ve-edit").style.display = 'block'; } } // Only run if Edit button does not already exist and Edit source button does exist if((!document.querySelector("#ca-ve-edit") && document.querySelector('#ca-edit'))) { // Edit Source element editSource = document.querySelector("#ca-edit"); // Copy Edit Source element newEdit = editSource.cloneNode(true); // Get current page title pageTitle = document.querySelector('meta[property="og:title"]').content.replace(/\s/g, '_'); // Place correct link and text inside new element newEdit.innerHTML = '<a href="/w/index.php?title=' + pageTitle + '&amp;veaction=edit" title="' + title + ' [alt-shift-v]" accesskey="v">' + label + '</a>'; // Change to correct id for new element newEdit.id = 'ca-ve-edit'; // Add new element before Edit Source editSource.before(newEdit); document.querySelector("#ca-ve-edit").style.display = 'inline-block'; } } /** * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse * * Maintainers: TheDJ */ function mwCollapsibleSetup( $collapsibleContent ) { var $element, $toggle, autoCollapseThreshold = 2; $.each( $collapsibleContent, function ( index, element ) { $element = $( element ); if ( $element.hasClass( 'collapsible' ) ) { $element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) ); } if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) { $element.data( 'mw-collapsible' ).collapse(); } else if ( $element.hasClass( 'innercollapse' ) ) { if ( $element.parents( '.outercollapse' ).length > 0 ) { $element.data( 'mw-collapsible' ).collapse(); } } // because of colored backgrounds, style the link in the text color // to ensure accessible contrast $toggle = $element.find( '.mw-collapsible-toggle' ); if ( $toggle.length ) { // Make the toggle inherit text color (Updated for T333357 2023-04-29) if ( $toggle.parent()[ 0 ].style.color ) { $toggle.css( 'color', 'inherit' ); $toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' ); } } } ); } mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup ); /** * Magic editintros **************************************************** * * Description: Adds editintros on disambiguation pages and BLP pages. * Maintainers: [[User:RockMFR]] * * @param {string} name */ function addEditIntro( name ) { $( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) { el.href = $( this ).attr( 'href' ) + '&editintro=' + name; } ); } if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) { $( function () { if ( document.getElementById( 'disambigbox' ) ) { addEditIntro( 'Template:Disambig_editintro' ); } } ); $( function () { var cats = mw.config.get( 'wgCategories' ); if ( !cats ) { return; } if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) { addEditIntro( 'Template:BLP_editintro' ); } } ); } /* End of mw.loader.using callback */ } ); /* DO NOT ADD CODE BELOW THIS LINE */ fdfa19ec6bcc038f9472931ff865595578ec682b 2431 2430 2023-10-01T15:12:11Z Führerredux 2 javascript text/javascript /** * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally * loaded for all users on every wiki page. If possible create a gadget that is * enabled by default instead of adding it here (since gadgets are fully * optimized ResourceLoader modules with possibility to add dependencies etc.) * * Since Common.js isn't a gadget, there is no place to declare its * dependencies, so we have to lazy load them with mw.loader.using on demand and * then execute the rest in the callback. In most cases these dependencies will * be loaded (or loading) already and the callback will not be delayed. In case a * dependency hasn't arrived yet it'll make sure those are loaded before this. */ /* global mw, $ */ /* jshint strict:false, browser:true */ mw.loader.using( [ 'mediawiki.util' ] ).done( function () { /* Begin of mw.loader.using callback */ /** * Map addPortletLink to mw.util * @deprecated: Use mw.util.addPortletLink instead. */ mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' ); /** * Test if an element has a certain class * @deprecated: Use $(element).hasClass() instead. */ mw.log.deprecate( window, 'hasClass', function ( element, className ) { return $( element ).hasClass( className ); }, 'Use jQuery.hasClass() instead' ); /** * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL * @rev 6 */ var extraCSS = mw.util.getParamValue( 'withCSS' ), extraJS = mw.util.getParamValue( 'withJS' ); if ( extraCSS ) { if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } ); } } if ( extraJS ) { if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } ); } } /** * WikiMiniAtlas * * Description: WikiMiniAtlas is a popup click and drag world map. * This script causes all of our coordinate links to display the WikiMiniAtlas popup button. * The script itself is located on the Meta-Wiki because it is used by many projects. * See [[Meta:WikiMiniAtlas]] for more information. * Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer */ $( function () { var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length; if ( requireWikiminiatlas ) { mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' ); } } ); /** * Collapsible tables; reimplemented with mw-collapsible * Styling is also in place to avoid FOUC * * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]]. * @version 3.0.0 (2018-05-20) * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js * @author [[User:R. Koot]] * @author [[User:Krinkle]] * @author [[User:TheDJ]] * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which * is supported in MediaWiki core. Shimmable since MediaWiki 1.32 * * @param {jQuery} $content */ function makeCollapsibleMwCollapsible( $content ) { var $tables = $content .find( 'table.collapsible:not(.mw-collapsible)' ) .addClass( 'mw-collapsible' ); $.each( $tables, function ( index, table ) { // mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.'); if ( $( table ).hasClass( 'collapsed' ) ) { $( table ).addClass( 'mw-collapsed' ); // mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.'); } } ); if ( $tables.length > 0 ) { mw.loader.using( 'jquery.makeCollapsible' ).then( function () { $tables.makeCollapsible(); } ); } } mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible ); // /* // A script to add an Edit button for Visual Editor if the extension is enabled but the button is not showing up. // */ // label = 'Edit'; // title = 'Edit this page'; // if (!(/veaction=edit/).test(window.location.search)){ // // Unhide button if it's just hidden // if(document.querySelector("#ca-ve-edit")){ // if (document.querySelector("#ca-ve-edit").style.display == 'none'){ // document.querySelector("#ca-ve-edit").style.display = 'block'; // } // } // // Only run if Edit button does not already exist and Edit source button does exist // if((!document.querySelector("#ca-ve-edit") && document.querySelector('#ca-edit'))) { // // Edit Source element // editSource = document.querySelector("#ca-edit"); // // Copy Edit Source element // newEdit = editSource.cloneNode(true); // // Get current page title // pageTitle = document.querySelector('meta[property="og:title"]').content.replace(/\s/g, '_'); // // Place correct link and text inside new element // newEdit.innerHTML = '<a href="/w/index.php?title=' + pageTitle + '&amp;veaction=edit" title="' + title + ' [alt-shift-v]" accesskey="v">' + label + '</a>'; // // Change to correct id for new element // newEdit.id = 'ca-ve-edit'; // // Add new element before Edit Source // editSource.before(newEdit); // document.querySelector("#ca-ve-edit").style.display = 'inline-block'; // } // } /** * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse * * Maintainers: TheDJ */ function mwCollapsibleSetup( $collapsibleContent ) { var $element, $toggle, autoCollapseThreshold = 2; $.each( $collapsibleContent, function ( index, element ) { $element = $( element ); if ( $element.hasClass( 'collapsible' ) ) { $element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) ); } if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) { $element.data( 'mw-collapsible' ).collapse(); } else if ( $element.hasClass( 'innercollapse' ) ) { if ( $element.parents( '.outercollapse' ).length > 0 ) { $element.data( 'mw-collapsible' ).collapse(); } } // because of colored backgrounds, style the link in the text color // to ensure accessible contrast $toggle = $element.find( '.mw-collapsible-toggle' ); if ( $toggle.length ) { // Make the toggle inherit text color (Updated for T333357 2023-04-29) if ( $toggle.parent()[ 0 ].style.color ) { $toggle.css( 'color', 'inherit' ); $toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' ); } } } ); } mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup ); /** * Magic editintros **************************************************** * * Description: Adds editintros on disambiguation pages and BLP pages. * Maintainers: [[User:RockMFR]] * * @param {string} name */ function addEditIntro( name ) { $( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) { el.href = $( this ).attr( 'href' ) + '&editintro=' + name; } ); } if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) { $( function () { if ( document.getElementById( 'disambigbox' ) ) { addEditIntro( 'Template:Disambig_editintro' ); } } ); $( function () { var cats = mw.config.get( 'wgCategories' ); if ( !cats ) { return; } if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) { addEditIntro( 'Template:BLP_editintro' ); } } ); } /* End of mw.loader.using callback */ } ); /* DO NOT ADD CODE BELOW THIS LINE */ 34b575f9c9ece0cb82007ddc48d1ccb61f54f370 2432 2431 2023-10-02T11:45:40Z Führerredux 2 javascript text/javascript /** * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally * loaded for all users on every wiki page. If possible create a gadget that is * enabled by default instead of adding it here (since gadgets are fully * optimized ResourceLoader modules with possibility to add dependencies etc.) * * Since Common.js isn't a gadget, there is no place to declare its * dependencies, so we have to lazy load them with mw.loader.using on demand and * then execute the rest in the callback. In most cases these dependencies will * be loaded (or loading) already and the callback will not be delayed. In case a * dependency hasn't arrived yet it'll make sure those are loaded before this. */ /* global mw, $ */ /* jshint strict:false, browser:true */ mw.loader.using( [ 'mediawiki.util' ] ).done( function () { /* Begin of mw.loader.using callback */ /** * Map addPortletLink to mw.util * @deprecated: Use mw.util.addPortletLink instead. */ mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' ); /** * Test if an element has a certain class * @deprecated: Use $(element).hasClass() instead. */ mw.log.deprecate( window, 'hasClass', function ( element, className ) { return $( element ).hasClass( className ); }, 'Use jQuery.hasClass() instead' ); /** * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL * @rev 6 */ var extraCSS = mw.util.getParamValue( 'withCSS' ), extraJS = mw.util.getParamValue( 'withJS' ); if ( extraCSS ) { if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } ); } } if ( extraJS ) { if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } ); } } /** * WikiMiniAtlas * * Description: WikiMiniAtlas is a popup click and drag world map. * This script causes all of our coordinate links to display the WikiMiniAtlas popup button. * The script itself is located on the Meta-Wiki because it is used by many projects. * See [[Meta:WikiMiniAtlas]] for more information. * Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer */ $( function () { var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length; if ( requireWikiminiatlas ) { mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' ); } } ); /** * Collapsible tables; reimplemented with mw-collapsible * Styling is also in place to avoid FOUC * * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]]. * @version 3.0.0 (2018-05-20) * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js * @author [[User:R. Koot]] * @author [[User:Krinkle]] * @author [[User:TheDJ]] * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which * is supported in MediaWiki core. Shimmable since MediaWiki 1.32 * * @param {jQuery} $content */ function makeCollapsibleMwCollapsible( $content ) { var $tables = $content .find( 'table.collapsible:not(.mw-collapsible)' ) .addClass( 'mw-collapsible' ); $.each( $tables, function ( index, table ) { // mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.'); if ( $( table ).hasClass( 'collapsed' ) ) { $( table ).addClass( 'mw-collapsed' ); // mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.'); } } ); if ( $tables.length > 0 ) { mw.loader.using( 'jquery.makeCollapsible' ).then( function () { $tables.makeCollapsible(); } ); } } mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible ); /* A script to add an Edit button for Visual Editor if the extension is enabled but the button is not showing up. */ label = 'Edit'; title = 'Edit this page'; if (!(/veaction=edit/).test(window.location.search)){ // Unhide button if it's just hidden if(document.querySelector("#ca-ve-edit")){ if (document.querySelector("#ca-ve-edit").style.display == 'none'){ document.querySelector("#ca-ve-edit").style.display = 'block'; } } // Only run if Edit button does not already exist and Edit source button does exist if((!document.querySelector("#ca-ve-edit") && document.querySelector('#ca-edit'))) { // Edit Source element editSource = document.querySelector("#ca-edit"); // Copy Edit Source element newEdit = editSource.cloneNode(true); // Get current page title pageTitle = document.querySelector('meta[property="og:title"]').content.replace(/\s/g, '_'); // Place correct link and text inside new element newEdit.innerHTML = '<a href="/w/index.php?title=' + pageTitle + '&amp;veaction=edit" title="' + title + ' [alt-shift-v]" accesskey="v">' + label + '</a>'; // Change to correct id for new element newEdit.id = 'ca-ve-edit'; // Add new element before Edit Source editSource.before(newEdit); document.querySelector("#ca-ve-edit").style.display = 'inline-block'; } } /** * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse * * Maintainers: TheDJ */ function mwCollapsibleSetup( $collapsibleContent ) { var $element, $toggle, autoCollapseThreshold = 2; $.each( $collapsibleContent, function ( index, element ) { $element = $( element ); if ( $element.hasClass( 'collapsible' ) ) { $element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) ); } if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) { $element.data( 'mw-collapsible' ).collapse(); } else if ( $element.hasClass( 'innercollapse' ) ) { if ( $element.parents( '.outercollapse' ).length > 0 ) { $element.data( 'mw-collapsible' ).collapse(); } } // because of colored backgrounds, style the link in the text color // to ensure accessible contrast $toggle = $element.find( '.mw-collapsible-toggle' ); if ( $toggle.length ) { // Make the toggle inherit text color (Updated for T333357 2023-04-29) if ( $toggle.parent()[ 0 ].style.color ) { $toggle.css( 'color', 'inherit' ); $toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' ); } } } ); } mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup ); /** * Magic editintros **************************************************** * * Description: Adds editintros on disambiguation pages and BLP pages. * Maintainers: [[User:RockMFR]] * * @param {string} name */ function addEditIntro( name ) { $( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) { el.href = $( this ).attr( 'href' ) + '&editintro=' + name; } ); } if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) { $( function () { if ( document.getElementById( 'disambigbox' ) ) { addEditIntro( 'Template:Disambig_editintro' ); } } ); $( function () { var cats = mw.config.get( 'wgCategories' ); if ( !cats ) { return; } if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) { addEditIntro( 'Template:BLP_editintro' ); } } ); } /* End of mw.loader.using callback */ } ); /* DO NOT ADD CODE BELOW THIS LINE */ 5b356d39c5f7982ce3ca39d760b3ec4a064ec78e 2433 2432 2023-10-02T11:46:29Z Führerredux 2 javascript text/javascript /** * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally * loaded for all users on every wiki page. If possible create a gadget that is * enabled by default instead of adding it here (since gadgets are fully * optimized ResourceLoader modules with possibility to add dependencies etc.) * * Since Common.js isn't a gadget, there is no place to declare its * dependencies, so we have to lazy load them with mw.loader.using on demand and * then execute the rest in the callback. In most cases these dependencies will * be loaded (or loading) already and the callback will not be delayed. In case a * dependency hasn't arrived yet it'll make sure those are loaded before this. */ /* global mw, $ */ /* jshint strict:false, browser:true */ mw.loader.using( [ 'mediawiki.util' ] ).done( function () { /* Begin of mw.loader.using callback */ /** * Map addPortletLink to mw.util * @deprecated: Use mw.util.addPortletLink instead. */ mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' ); /** * Test if an element has a certain class * @deprecated: Use $(element).hasClass() instead. */ mw.log.deprecate( window, 'hasClass', function ( element, className ) { return $( element ).hasClass( className ); }, 'Use jQuery.hasClass() instead' ); /** * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL * @rev 6 */ var extraCSS = mw.util.getParamValue( 'withCSS' ), extraJS = mw.util.getParamValue( 'withJS' ); if ( extraCSS ) { if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } ); } } if ( extraJS ) { if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } ); } } /** * WikiMiniAtlas * * Description: WikiMiniAtlas is a popup click and drag world map. * This script causes all of our coordinate links to display the WikiMiniAtlas popup button. * The script itself is located on the Meta-Wiki because it is used by many projects. * See [[Meta:WikiMiniAtlas]] for more information. * Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer */ $( function () { var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length; if ( requireWikiminiatlas ) { mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' ); } } ); /** * Collapsible tables; reimplemented with mw-collapsible * Styling is also in place to avoid FOUC * * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]]. * @version 3.0.0 (2018-05-20) * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js * @author [[User:R. Koot]] * @author [[User:Krinkle]] * @author [[User:TheDJ]] * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which * is supported in MediaWiki core. Shimmable since MediaWiki 1.32 * * @param {jQuery} $content */ function makeCollapsibleMwCollapsible( $content ) { var $tables = $content .find( 'table.collapsible:not(.mw-collapsible)' ) .addClass( 'mw-collapsible' ); $.each( $tables, function ( index, table ) { // mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.'); if ( $( table ).hasClass( 'collapsed' ) ) { $( table ).addClass( 'mw-collapsed' ); // mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.'); } } ); if ( $tables.length > 0 ) { mw.loader.using( 'jquery.makeCollapsible' ).then( function () { $tables.makeCollapsible(); } ); } } mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible ); /** * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse * * Maintainers: TheDJ */ function mwCollapsibleSetup( $collapsibleContent ) { var $element, $toggle, autoCollapseThreshold = 2; $.each( $collapsibleContent, function ( index, element ) { $element = $( element ); if ( $element.hasClass( 'collapsible' ) ) { $element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) ); } if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) { $element.data( 'mw-collapsible' ).collapse(); } else if ( $element.hasClass( 'innercollapse' ) ) { if ( $element.parents( '.outercollapse' ).length > 0 ) { $element.data( 'mw-collapsible' ).collapse(); } } // because of colored backgrounds, style the link in the text color // to ensure accessible contrast $toggle = $element.find( '.mw-collapsible-toggle' ); if ( $toggle.length ) { // Make the toggle inherit text color (Updated for T333357 2023-04-29) if ( $toggle.parent()[ 0 ].style.color ) { $toggle.css( 'color', 'inherit' ); $toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' ); } } } ); } mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup ); /** * Magic editintros **************************************************** * * Description: Adds editintros on disambiguation pages and BLP pages. * Maintainers: [[User:RockMFR]] * * @param {string} name */ function addEditIntro( name ) { $( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) { el.href = $( this ).attr( 'href' ) + '&editintro=' + name; } ); } if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) { $( function () { if ( document.getElementById( 'disambigbox' ) ) { addEditIntro( 'Template:Disambig_editintro' ); } } ); $( function () { var cats = mw.config.get( 'wgCategories' ); if ( !cats ) { return; } if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) { addEditIntro( 'Template:BLP_editintro' ); } } ); } /* End of mw.loader.using callback */ } ); /* DO NOT ADD CODE BELOW THIS LINE */ d286d64c90e941bffbeb6dcea56850dd1ba857a5 Main Page 0 1 2434 548 2023-10-03T14:13:21Z Führerredux 2 anim html wikitext text/x-wiki __NOTOC__ == Welcome to the {{SITENAME}}! == <div class="anim-wrap"> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> </div> 551287cac4290c788e43cac1951a0075c4430d9f 2436 2434 2023-10-03T14:16:59Z Führerredux 2 wikitext text/x-wiki __NOTOC__ == Welcome to the {{SITENAME}}! == <link rel="stylesheet" href="styles.css"> <div class="anim-wrap"> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> </div> 8bd9146ffbe0418dcc1632b244c73829666346bc 2437 2436 2023-10-03T14:17:09Z Führerredux 2 wikitext text/x-wiki __NOTOC__ == Welcome to the {{SITENAME}}! == 333c236e306a4538e312b13d2b5f86f58a3b2d5f Template:Improve documentation 10 1677 3109 2023-10-03T18:00:15Z wikipedia>MusikBot II 0 Changed protection settings for "[[Template:Improve documentation]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2513 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B={{Ombox | type = content | name = Improve documentation | class = ambox-Refimprove | image = [[File:Edit-copy green with red question mark.svg|50x40px|link=|alt=Edit-copy green with red question mark]] | text = This {{#switch:{{NAMESPACE}}|Module=module|#default=template}}'s [[Wikipedia:Template documentation|documentation]] is '''missing, inadequate, or does not accurately describe its functionality and/or the [[Help:Template#Parameters|parameters]] in its code.''' Please help [{{fullurl:{{FULLPAGENAME}}{{#ifexist:{{FULLPAGENAME}}/doc|/doc}}|action=edit}} to expand and improve it]. {{#if:{{{talk|{{{1|}}}}}} |See [[{{TALKPAGENAME}}|talk page]] for details.|}} {{#if:{{{date|{{{2|}}}}}} |{{smaller|''({{{date}}})''}}}} }}<includeonly>{{Subpage other||{{Dated maintenance category|||Templates with missing or incorrect documentation}}}}</includeonly>}}<noinclude> {{Documentation}} </noinclude> f5ee14f86927e9f4417e5b2feb60ce1f765cd49f MediaWiki:Common.css 8 240 2967 539 2023-10-04T15:36:29Z Führerredux 2 css text/css /* CSS placed here will be applied to all skins */ /* * Styling inside .mw-parser-output should generally use TemplateStyles. */ /* Reset italic styling set by user agent */ /*cite,*/ /*dfn {*/ /* font-style: inherit;*/ /*}*/ /* Straight quote marks for <q> */ /*q {*/ /* quotes: '"' '"' "'" "'";*/ /*}*/ /* Avoid collision of blockquote with floating elements by swapping margin and padding */ /*blockquote {*/ /* overflow: hidden;*/ /* margin: 1em 0;*/ /* padding: 0 40px;*/ /*}*/ /* Consistent size for <small>, <sub> and <sup> */ /*small {*/ /* font-size: 85%;*/ /*}*/ /*.mw-body-content sub,*/ /*.mw-body-content sup {*/ /* font-size: 80%;*/ /*}*/ /* Same spacing for indented and unindented paragraphs on talk pages */ /*.ns-talk .mw-body-content dd {*/ /* margin-top: 0.4em;*/ /* margin-bottom: 0.4em;*/ /*}*/ /* Reduce page jumps by hiding collapsed/dismissed content */ /*.client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child),*/ /* Avoid FOUC/reflows on collapsed elements. */ /* This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115). */ /* TODO: Use :is() selector at some reasonable future when support is good for Most Clients */ /* Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75 */ /*.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p,*/ /*.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table,*/ /*.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody,*/ /*.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ),*/ /*.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content,*/ /* Hide charinsert base for those not using the gadget */ /*#editpage-specialchars {*/ /* display: none;*/ /*}*/ /* Make the list of references smaller * Keep in sync with Template:Refbegin/styles.css * And Template:Reflist/styles.css */ /*ol.references {*/ /* font-size: 90%;*/ /* margin-bottom: 0.5em;*/ /*}*/ /* Cite customizations for Parsoid * Once everything uses the one true parser these are just customizations */ /*span[ rel="mw:referencedBy" ] {*/ /* counter-reset: mw-ref-linkback 0;*/ /*}*/ /*span[ rel='mw:referencedBy' ] > a::before {*/ /* content: counter( mw-ref-linkback, lower-alpha );*/ /* font-size: 80%;*/ /* font-weight: bold;*/ /* font-style: italic;*/ /*}*/ /*a[ rel="mw:referencedBy" ]::before {*/ /* font-weight: bold;*/ /* content: "^";*/ /*}*/ /*span[ rel="mw:referencedBy" ]::before {*/ /* content: "^ ";*/ /*}*/ /*.mw-ref > a[data-mw-group=lower-alpha]::after {*/ /* content: '[' counter( mw-Ref, lower-alpha ) ']';*/ /*}*/ /*.mw-ref > a[data-mw-group=upper-alpha]::after {*/ /* content: '[' counter( mw-Ref, upper-alpha ) ']';*/ /*}*/ /*.mw-ref > a[data-mw-group=decimal]::after {*/ /* content: '[' counter( mw-Ref, decimal ) ']';*/ /*}*/ /*.mw-ref > a[data-mw-group=lower-roman]::after {*/ /* content: '[' counter( mw-Ref, lower-roman ) ']';*/ /*}*/ /*.mw-ref > a[data-mw-group=upper-roman]::after {*/ /* content: '[' counter( mw-Ref, upper-roman ) ']';*/ /*}*/ /*.mw-ref > a[data-mw-group=lower-greek]::after {*/ /* content: '[' counter( mw-Ref, lower-greek ) ']';*/ /*}*/ /* Styling for jQuery makeCollapsible, matching that of collapseButton */ /*.mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) {*/ /* font-weight: normal;*/ /* padding-right: 0.2em;*/ /* padding-left: 0.2em;*/ /*}*/ /*.mw-collapsible-leftside-toggle .mw-collapsible-toggle {*/ /* @noflip */ /* float: left;*/ /*}*/ /* Lists in wikitable data cells are always left-aligned */ /*.wikitable td ul,*/ /*.wikitable td ol,*/ /*.wikitable td dl {*/ /* @noflip */ /* text-align: left;*/ /*}*/ /* Change the external link icon to a PDF icon for all PDF files */ /*.mw-parser-output a[href$=".pdf"].external,*/ /*.mw-parser-output a[href*=".pdf?"].external,*/ /*.mw-parser-output a[href*=".pdf#"].external,*/ /*.mw-parser-output a[href$=".PDF"].external,*/ /*.mw-parser-output a[href*=".PDF?"].external,*/ /*.mw-parser-output a[href*=".PDF#"].external {*/ /* background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right;*/ /* @noflip */ /* padding: 8px 18px 8px 0;*/ /*}*/ /* System messages styled similarly to fmbox */ /* for .mw-warning-with-logexcerpt, behavior of this line differs between * the edit-protected notice and the special:Contribs for blocked users * The latter has specificity of 3 classes so we have to triple up here. */ /*.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt,*/ /*div.mw-lag-warn-high,*/ /*div.mw-cascadeprotectedwarning,*/ /*div#mw-protect-cascadeon {*/ /* clear: both;*/ /* margin: 0.2em 0;*/ /* border: 1px solid #bb7070;*/ /* background-color: #ffdbdb;*/ /* padding: 0.25em 0.9em;*/ /* box-sizing: border-box;*/ /*}*/ /* default colors for partial block message */ /* gotta get over the hump introduced by the triple class above */ /*.mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt {*/ /* border-color: #fc3;*/ /* background-color: #fef6e7;*/ /*}*/ /* Minimum thumb width */ /*figure[typeof~='mw:File/Thumb'],*/ /*figure[typeof~='mw:File/Frame'],*/ /*.thumbinner {*/ /* min-width: 100px;*/ /*}*/ /* Prevent floating boxes from overlapping any category listings, file histories, edit previews, and edit [Show changes] views. */ /*#mw-subcategories,*/ /*#mw-pages,*/ /*#mw-category-media,*/ /*#filehistory,*/ /*#wikiPreview,*/ /*#wikiDiff {*/ /* clear: both;*/ /*}*/ /* Styling for tags in changes pages */ /*.mw-tag-markers {*/ /* font-style: italic;*/ /* font-size: 90%;*/ /*}*/ /* Hide stuff meant for accounts with special permissions. Made visible again in [[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]], [[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]], [[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]], [[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. */ /*.checkuser-show,*/ /*.sysop-show,*/ /*.abusefilter-show,*/ /*.abusefilter-helper-show,*/ /*.patroller-show,*/ /*.templateeditor-show,*/ /*.extendedmover-show,*/ /*.extendedconfirmed-show,*/ /*.autoconfirmed-show,*/ /*.user-show {*/ /* display: none;*/ /*}*/ /* Hide the redlink generated by {{Editnotice}}, this overrides the ".sysop-show { display: none; }" above that applies to the same link as well. See [[phab:T45013]] Hide the images in editnotices to keep them readable in VE view. Long term, editnotices should become a core feature so that they can be designed responsive. */ /*.ve-ui-mwNoticesPopupTool-item .editnotice-redlink,*/ /*.ve-ui-mwNoticesPopupTool-item .mbox-image,*/ /*.ve-ui-mwNoticesPopupTool-item .mbox-imageright {*/ /* display: none !important;*/ /*}*/ /* Remove bullets when there are multiple edit page warnings */ /*ul.permissions-errors {*/ /* margin: 0;*/ /*}*/ /*ul.permissions-errors > li {*/ /* list-style: none;*/ /*}*/ /* larger inline math */ /*span.mwe-math-mathml-inline {*/ /* font-size: 118%;*/ /*}*/ /* Make <math display="block"> be left aligned with one space indent for * compatibility with style conventions */ /*.mwe-math-fallback-image-display,*/ /*.mwe-math-mathml-display {*/ /* margin-left: 1.6em !important;*/ /* margin-top: 0.6em;*/ /* margin-bottom: 0.6em;*/ /*}*/ /*.mwe-math-mathml-display math {*/ /* display: inline;*/ /*}*/ /*@media screen {*/ /* Put a chequered background behind images, only visible if they have transparency, * except on main, user, and portal namespaces */ /* body:not(.ns-0):not(.ns-2):not(.ns-100) .gallerybox .thumb img {*/ /* background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat;*/ /* }*/ /* Display "From Wikipedia, the free encyclopedia" in skins that support it, do not apply to print mode */ /* #siteSub {*/ /* display: block;*/ /* }*/ /*}*/ /* Hide FlaggedRevs notice UI when there are no pending changes */ /*.flaggedrevs_draft_synced,*/ /*.flaggedrevs_stable_synced,*/ /* "Temporary" to remove links in sidebar T255381 */ /*#t-upload,*/ /* Hide broken download box on Special:Book pending T285400 */ /*.mw-special-Book #coll-downloadbox {*/ /* display: none;*/ /*}*/ /* * BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS; * SEE [[MediaWiki talk:Common.css/to do]] */ /* Infobox template style */ /*.infobox {*/ /* border: 1px solid #a2a9b1;*/ /* border-spacing: 3px;*/ /* background-color: #f8f9fa;*/ /* color: black;*/ /* @noflip */ /* margin: 0.5em 0 0.5em 1em;*/ /* padding: 0.2em;*/ /* @noflip */ /* float: right;*/ /* @noflip */ /* clear: right;*/ /* font-size: 88%;*/ /* line-height: 1.5em;*/ /* width: 22em;*/ /*}*/ /*.infobox-header,*/ /*.infobox-label,*/ /*.infobox-above,*/ /*.infobox-full-data,*/ /*.infobox-data,*/ /*.infobox-below,*/ /*.infobox-subheader,*/ /*.infobox-image,*/ /*.infobox-navbar,*/ /* Remove element selector when every .infobox thing is using the standard module/templates */ /*.infobox th,*/ /*.infobox td {*/ /* vertical-align: top;*/ /*}*/ /*.infobox-label,*/ /*.infobox-data,*/ /* Remove element selector when every .infobox thing is using the standard module/templates */ /*.infobox th,*/ /*.infobox td {*/ /* @noflip */ /* text-align: left;*/ /*}*/ /* Remove .infobox when element selectors above are removed */ /*.infobox .infobox-above,*/ /*.infobox .infobox-title,*/ /* Remove element selector when every .infobox thing is using the standard module/templates */ /*.infobox caption {*/ /* font-size: 125%;*/ /* font-weight: bold;*/ /* text-align: center;*/ /*}*/ /*.infobox-title,*/ /* Remove element selector when every .infobox thing is using the standard module/templates */ /*.infobox caption {*/ /* padding: 0.2em;*/ /*}*/ /* Remove .infobox when element selectors above are removed */ /*.infobox .infobox-header,*/ /*.infobox .infobox-subheader,*/ /*.infobox .infobox-image,*/ /*.infobox .infobox-full-data,*/ /*.infobox .infobox-below {*/ /* text-align: center;*/ /*}*/ /* Remove .infobox when element selectors above are removed */ /*.infobox .infobox-navbar {*/ /* @noflip */ /* text-align: right;*/ /*}*/ /* Normal font styling for wikitable row headers with scope="row" tag */ /*.wikitable.plainrowheaders th[scope=row],*/ /*.wikitable.plainrowheaders th[scope=rowgroup] {*/ /* font-weight: normal;*/ /* @noflip */ /* text-align: left;*/ /*}*/ /* Remove underlines from certain links */ /*.nounderlines a,*/ /*.IPA a:link,*/ /*.IPA a:visited {*/ /* text-decoration: none !important;*/ /*}*/ /* Prevent line breaks in silly places where desired (nowrap) and links when we don't want them to (nowraplinks a) */ /*.nowrap,*/ /*.nowraplinks a {*/ /* white-space: nowrap;*/ /*}*/ /* But allow wrapping where desired: */ /*.wrap,*/ /*.wraplinks a {*/ /* white-space: normal;*/ /*}*/ /* texhtml class for inline math (based on generic times-serif class) */ /*span.texhtml {*/ /* font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif;*/ /* font-size: 118%;*/ /* line-height: 1;*/ /* white-space: nowrap;*/ /* Force tabular and lining display for texhtml */ /* font-variant-numeric: lining-nums tabular-nums;*/ /* font-kerning: none;*/ /*}*/ /*span.texhtml span.texhtml {*/ /* font-size: 100%;*/ /*}*/ /*@media screen {*/ /* .nochecker .gallerybox .thumb img {*/ /* background-image: none;*/ /* }*/ /*}*/ /* Put anything you mean to be a sitewide addition above the TemplateStyles * comment above. */ aab2bcf6c196b0e3e7a66df81c748044d846b50b 2969 2967 2023-10-04T15:41:17Z Führerredux 2 css text/css CSS placed here will be applied to all skins * Styling inside .mw-parser-output should generally use TemplateStyles. Reset italic styling set by user agent cite, dfn { font-style: inherit; } Straight quote marks for <q> q { quotes: '"' '"' "'" "'"; } Avoid collision of blockquote with floating elements by swapping margin and padding blockquote { overflow: hidden; margin: 1em 0; padding: 0 40px; } Consistent size for <small>, <sub> and <sup> small { font-size: 85%; } .mw-body-content sub, .mw-body-content sup { font-size: 80%; } Same spacing for indented and unindented paragraphs on talk pages .ns-talk .mw-body-content dd { margin-top: 0.4em; margin-bottom: 0.4em; } Reduce page jumps by hiding collapsed/dismissed content .client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child), Avoid FOUC/reflows on collapsed elements. This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115). TODO: Use :is() selector at some reasonable future when support is good for Most Clients Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75 .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ), .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content, Hide charinsert base for those not using the gadget #editpage-specialchars { display: none; } Make the list of references smaller * Keep in sync with Template:Refbegin/styles.css * And Template:Reflist/styles.css ol.references { font-size: 90%; margin-bottom: 0.5em; } Cite customizations for Parsoid * Once everything uses the one true parser these are just customizations span[ rel="mw:referencedBy" ] { counter-reset: mw-ref-linkback 0; } span[ rel='mw:referencedBy' ] > a::before { content: counter( mw-ref-linkback, lower-alpha ); font-size: 80%; font-weight: bold; font-style: italic; } a[ rel="mw:referencedBy" ]::before { font-weight: bold; content: "^"; } span[ rel="mw:referencedBy" ]::before { content: "^ "; } .mw-ref > a[data-mw-group=lower-alpha]::after { content: '[' counter( mw-Ref, lower-alpha ) ']'; } .mw-ref > a[data-mw-group=upper-alpha]::after { content: '[' counter( mw-Ref, upper-alpha ) ']'; } .mw-ref > a[data-mw-group=decimal]::after { content: '[' counter( mw-Ref, decimal ) ']'; } .mw-ref > a[data-mw-group=lower-roman]::after { content: '[' counter( mw-Ref, lower-roman ) ']'; } .mw-ref > a[data-mw-group=upper-roman]::after { content: '[' counter( mw-Ref, upper-roman ) ']'; } .mw-ref > a[data-mw-group=lower-greek]::after { content: '[' counter( mw-Ref, lower-greek ) ']'; } Styling for jQuery makeCollapsible, matching that of collapseButton .mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) { font-weight: normal; padding-right: 0.2em; padding-left: 0.2em; } .mw-collapsible-leftside-toggle .mw-collapsible-toggle { @noflip float: left; } Lists in wikitable data cells are always left-aligned .wikitable td ul, .wikitable td ol, .wikitable td dl { @noflip text-align: left; } Change the external link icon to a PDF icon for all PDF files .mw-parser-output a[href$=".pdf"].external, .mw-parser-output a[href*=".pdf?"].external, .mw-parser-output a[href*=".pdf#"].external, .mw-parser-output a[href$=".PDF"].external, .mw-parser-output a[href*=".PDF?"].external, .mw-parser-output a[href*=".PDF#"].external { background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right; @noflip padding: 8px 18px 8px 0; } System messages styled similarly to fmbox for .mw-warning-with-logexcerpt, behavior of this line differs between * the edit-protected notice and the special:Contribs for blocked users * The latter has specificity of 3 classes so we have to triple up here. .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } default colors for partial block message gotta get over the hump introduced by the triple class above .mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt { border-color: #fc3; background-color: #fef6e7; } Minimum thumb width figure[typeof~='mw:File/Thumb'], figure[typeof~='mw:File/Frame'], .thumbinner { min-width: 100px; } Prevent floating boxes from overlapping any category listings, file histories, edit previews, and edit [Show changes] views. #mw-subcategories, #mw-pages, #mw-category-media, #filehistory, #wikiPreview, #wikiDiff { clear: both; } Styling for tags in changes pages .mw-tag-markers { font-style: italic; font-size: 90%; } Hide stuff meant for accounts with special permissions. Made visible again in [[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]], [[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]], [[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]], [[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. .checkuser-show, .sysop-show, .abusefilter-show, .abusefilter-helper-show, .patroller-show, .templateeditor-show, .extendedmover-show, .extendedconfirmed-show, .autoconfirmed-show, .user-show { display: none; } Hide the redlink generated by {{Editnotice}}, this overrides the ".sysop-show { display: none; }" above that applies to the same link as well. See [[phab:T45013]] Hide the images in editnotices to keep them readable in VE view. Long term, editnotices should become a core feature so that they can be designed responsive. .ve-ui-mwNoticesPopupTool-item .editnotice-redlink, .ve-ui-mwNoticesPopupTool-item .mbox-image, .ve-ui-mwNoticesPopupTool-item .mbox-imageright { display: none !important; } Remove bullets when there are multiple edit page warnings ul.permissions-errors { margin: 0; } ul.permissions-errors > li { list-style: none; } larger inline math span.mwe-math-mathml-inline { font-size: 118%; } Make <math display="block"> be left aligned with one space indent for * compatibility with style conventions .mwe-math-fallback-image-display, .mwe-math-mathml-display { margin-left: 1.6em !important; margin-top: 0.6em; margin-bottom: 0.6em; } .mwe-math-mathml-display math { display: inline; } @media screen { Put a chequered background behind images, only visible if they have transparency, * except on main, user, and portal namespaces body:not(.ns-0):not(.ns-2):not(.ns-100) .gallerybox .thumb img { background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat; } Display "From Wikipedia, the free encyclopedia" in skins that support it, do not apply to print mode #siteSub { display: block; } } Hide FlaggedRevs notice UI when there are no pending changes .flaggedrevs_draft_synced, .flaggedrevs_stable_synced, "Temporary" to remove links in sidebar T255381 #t-upload, Hide broken download box on Special:Book pending T285400 .mw-special-Book #coll-downloadbox { display: none; } * BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS; * SEE [[MediaWiki talk:Common.css/to do]] Infobox template style .infobox { border: 1px solid #a2a9b1; border-spacing: 3px; background-color: #f8f9fa; color: black; @noflip margin: 0.5em 0 0.5em 1em; padding: 0.2em; @noflip float: right; @noflip clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .infobox-header, .infobox-label, .infobox-above, .infobox-full-data, .infobox-data, .infobox-below, .infobox-subheader, .infobox-image, .infobox-navbar, Remove element selector when every .infobox thing is using the standard module/templates .infobox th, .infobox td { vertical-align: top; } .infobox-label, .infobox-data, Remove element selector when every .infobox thing is using the standard module/templates .infobox th, .infobox td { @noflip text-align: left; } Remove .infobox when element selectors above are removed .infobox .infobox-above, .infobox .infobox-title, Remove element selector when every .infobox thing is using the standard module/templates .infobox caption { font-size: 125%; font-weight: bold; text-align: center; } .infobox-title, Remove element selector when every .infobox thing is using the standard module/templates .infobox caption { padding: 0.2em; } Remove .infobox when element selectors above are removed .infobox .infobox-header, .infobox .infobox-subheader, .infobox .infobox-image, .infobox .infobox-full-data, .infobox .infobox-below { text-align: center; } Remove .infobox when element selectors above are removed .infobox .infobox-navbar { @noflip text-align: right; } Normal font styling for wikitable row headers with scope="row" tag .wikitable.plainrowheaders th[scope=row], .wikitable.plainrowheaders th[scope=rowgroup] { font-weight: normal; @noflip text-align: left; } Remove underlines from certain links .nounderlines a, .IPA a:link, .IPA a:visited { text-decoration: none !important; } Prevent line breaks in silly places where desired (nowrap) and links when we don't want them to (nowraplinks a) .nowrap, .nowraplinks a { white-space: nowrap; } But allow wrapping where desired: .wrap, .wraplinks a { white-space: normal; } texhtml class for inline math (based on generic times-serif class) span.texhtml { font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif; font-size: 118%; line-height: 1; white-space: nowrap; Force tabular and lining display for texhtml font-variant-numeric: lining-nums tabular-nums; font-kerning: none; } span.texhtml span.texhtml { font-size: 100%; } @media screen { .nochecker .gallerybox .thumb img { background-image: none; } } Put anything you mean to be a sitewide addition above the TemplateStyles * comment above. 70d32240e903c0adfce5a825a305c0c21f5d142d MediaWiki:Mobile.css 8 975 2968 2142 2023-10-04T15:37:10Z Führerredux 2 test css text/css /* * This is the CSS common to all mobile skins on en.Wikipedia. * Styling inside .mw-parser-output should generally use TemplateStyles. * * [[mw:Recommendations for mobile friendly articles on Wikimedia wikis]] may be * worth reviewing. * * special note that this page loads late by Javascript, which may cause * [[FOUC]]s for "lead" content if styled from here. See [[phab:T190083]] */ /* Reset user agent styles. We don't reset small or blockquote here deliberately */ /*cite,*/ /*dfn {*/ /* font-style: inherit;*/ /*}*/ /*q {*/ /* quotes: '"' '"' "'" "'";*/ /*}*/ /* Hide stuff meant for accounts with special permissions. Made visible again in [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-patroller.css]] and [[MediaWiki:Group-autoconfirmed.css]]. */ /*.checkuser-show,*/ /*.sysop-show,*/ /*.templateeditor-show,*/ /*.extendedmover-show,*/ /*.patroller-show,*/ /*.extendedconfirmed-show,*/ /*.autoconfirmed-show {*/ /* display: none;*/ /*}*/ /* Prevent flags in tables from collapsing Fix for T116318 */ /*.flagicon img {*/ /* min-width: 25px;*/ /*}*/ /* Prevent unnecessary margin at the bottom of centralnotices */ /*.cnotice {*/ /* margin-bottom: 0 !important;*/ /*}*/ /* * BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS; * SEE [[MediaWiki talk:Common.css/to do]] */ /* .infobox DO NOT style infobox's here. That should be taken care of in the associated templates via template styles. Styles here will lead to flash of unstyled content on mobile. */ /* removed inline from module as we work toward Tstyles support * Use three classes to match specificity of MobileFrontend/Minerva selectors */ /*.content .mw-parser-output .infobox-header,*/ /*.content .mw-parser-output .infobox-subheader,*/ /*.content .mw-parser-output .infobox-above,*/ /*.content .mw-parser-output .infobox-title,*/ /*.content .mw-parser-output .infobox-image,*/ /*.content .mw-parser-output .infobox-full-data,*/ /*.content .mw-parser-output .infobox-below {*/ /* text-align: center;*/ /*}*/ /* Prevent line breaks in silly places: 1) Where desired 2) Links when we don't want them to */ /*.mw-parser-output .nowrap,*/ /*.nowraplinks a {*/ /* white-space: nowrap;*/ /*}*/ /*.mw-parser-output .infobox .nowrap {*/ /* white-space: normal !important;*/ /*}*/ /* But allow wrapping where desired: */ /*.wrap,*/ /*.wraplinks a {*/ /* white-space: normal;*/ /*}*/ /* Generic class texhtml class for inline math */ /*span.texhtml {*/ /* font-family: serif;*/ /* white-space: nowrap;*/ /*}*/ /* Normal font styling for wikitable row headers with scope="row" tag */ /*.wikitable.plainrowheaders th[scope=row],*/ /*.wikitable.plainrowheaders th[scope=rowgroup] {*/ /* font-weight: normal;*/ /* @noflip */ /* text-align: left;*/ /*}*/ /* One of the not TemplateStyles things */ /* https://phabricator.wikimedia.org/T180396#5317728 */ /*@media print {*/ /* .navbox,*/ /* .hatnote,*/ /* .ambox {*/ /* display: none !important;*/ /* }*/ /*}*/ ee5c004652378db46acd1601c8da50dc419cb547 2970 2968 2023-10-04T15:42:54Z Führerredux 2 css text/css * This is the CSS common to all mobile skins on en.Wikipedia. * Styling inside .mw-parser-output should generally use TemplateStyles. * * [[mw:Recommendations for mobile friendly articles on Wikimedia wikis]] may be * worth reviewing. * * special note that this page loads late by Javascript, which may cause * [[FOUC]]s for "lead" content if styled from here. See [[phab:T190083]] Reset user agent styles. We don't reset small or blockquote here deliberately cite, dfn { font-style: inherit; } q { quotes: '"' '"' "'" "'"; } Hide stuff meant for accounts with special permissions. Made visible again in [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-patroller.css]] and [[MediaWiki:Group-autoconfirmed.css]]. .checkuser-show, .sysop-show, .templateeditor-show, .extendedmover-show, .patroller-show, .extendedconfirmed-show, .autoconfirmed-show { display: none; } Prevent flags in tables from collapsing Fix for T116318 .flagicon img { min-width: 25px; } Prevent unnecessary margin at the bottom of centralnotices .cnotice { margin-bottom: 0 !important; } * BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS; * SEE [[MediaWiki talk:Common.css/to do]] .infobox DO NOT style infobox's here. That should be taken care of in the associated templates via template styles. Styles here will lead to flash of unstyled content on mobile. removed inline from module as we work toward Tstyles support * Use three classes to match specificity of MobileFrontend/Minerva selectors .content .mw-parser-output .infobox-header, .content .mw-parser-output .infobox-subheader, .content .mw-parser-output .infobox-above, .content .mw-parser-output .infobox-title, .content .mw-parser-output .infobox-image, .content .mw-parser-output .infobox-full-data, .content .mw-parser-output .infobox-below { text-align: center; } Prevent line breaks in silly places: 1) Where desired 2) Links when we don't want them to .mw-parser-output .nowrap, .nowraplinks a { white-space: nowrap; } .mw-parser-output .infobox .nowrap { white-space: normal !important; } But allow wrapping where desired: .wrap, .wraplinks a { white-space: normal; } Generic class texhtml class for inline math span.texhtml { font-family: serif; white-space: nowrap; } Normal font styling for wikitable row headers with scope="row" tag .wikitable.plainrowheaders th[scope=row], .wikitable.plainrowheaders th[scope=rowgroup] { font-weight: normal; @noflip text-align: left; } One of the not TemplateStyles things https://phabricator.wikimedia.org/T180396#5317728 @media print { .navbox, .hatnote, .ambox { display: none !important; } } 037be40e4ef43fbba33014ba0748fba093e80e9a Module:Lang/data 828 465 3131 1034 2023-10-06T12:06:36Z wikipedia>Trappist the monk 0 +xsc-x-pontic; Scribunto text/plain local lang_obj = mw.language.getContentLanguage(); local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag --[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------ primary table of tables that decode: lang -> language tags and names script -> ISO 15924 script tags region -> ISO 3166 region tags variant -> iana registered variant tags suppressed -> map of scripts tags and their associated language tags all of these data come from separate modules that are derived from the IANA language-subtag-registry file key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches the first name. ]] local function key_to_lower (module, src_type) local out = {}; local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data if 'var_sup' == src_type then for k, v in pairs (source) do out[k:lower()] = v; -- for variant and suppressed everything is needed end elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active) for k, v in pairs (source.active) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated) for k, v in pairs (source.deprecated) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end else -- here for all other sources for k, v in pairs (source) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end end return out; end local lang_name_table_t = { lang = key_to_lower ('Module:Language/data/iana languages', 'lang'), lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'), script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'), suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower } --[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >-------------------------------- For internationalization; not used at en.wiki The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal. Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki language list for the local language. Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all. When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens add an appropriate entry to the override table below. Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply spelling differences: bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym dv: IANA: Dhivehi MW: Divehi el: IANA: Modern Greek MW: Greek ht: IANA: Haitian MW: Haitian Creole ky: IANA: Kirghiz MW: Kyrgyz li: IANA: Limburgan MW: Limburgish or: IANA: Oriya MW: Odia os: IANA: Ossetian MW: Ossetic "pa: IANA: Panjabi MW: Punjabi "ps: IANA: Pushto MW: Pashto "to: IANA: Tonga MW: Tongan "ug: IANA: Uighur MW: Uyghur use the override table to override language names that are incorrect for your project To see the list of names that MediaWiki has for your language, enter this in the Debug colsole: =mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all')) (replacing <tag> with the language tag for your language) Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true. ]] local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki -- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all if true == media_wiki_override_enable then local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list if lang_name_table_t.lang[tag] then -- if the tag is in the main list lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki end end end --[[--------------------------< O V E R R I D E >-------------------------------------------------------------- Language codes and names in this table override the BCP47 names in lang_name_table. indexes in this table shall always be lower case ]] local override = { ------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------ ["ab"] = "Abkhaz", -- to match en.wiki article name ["ca-valencia"] = "Valencian", ["cu"] = "Church Slavonic", -- 2nd IANA name; ["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names ["de-ch"] = "Swiss Standard German", ["en-au"] = "Australian English", ["en-ca"] = "Canadian English", ["en-emodeng"] = "Early Modern English", ["en-gb"] = "British English", ["en-ie"] = "Irish English", ["en-in"] = "Indian English", ["en-nz"] = "New Zealand English", ["en-us"] = "American English", ["en-za"] = "South African English", ["fy"] = "West Frisian", -- Western Frisian ["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title ["nl-be"] = "Flemish", -- match MediaWiki ["oc-provenc"] = "Provençal", ["ps"] = "Pashto", -- Pushto ["pt-br"] = "Brazilian Portuguese", -- match MediaWiki ["tw-asante"] = "Asante Twi", ["ug"] = "Uyghur", -- 2nd IANA name; to match en.wiki article name -- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["av"] = "Avar", -- Avaric ["bo"] = "Standard Tibetan", -- Tibetan ["el"] = "Greek", -- Modern Greek -- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa ["ff"] = "Fula", -- Fulah ["ht"] = "Haitian Creole", -- Haitian ["hz"] = "Otjiherero", -- Herero ["ii"] = "Yi", -- Sichuan Yi ["ki"] = "Gikuyu", -- Kikuyu ["kl"] = "Greenlandic", -- Kalaallisut ["ky"] = "Kyrgyz", -- Kirghiz ["lg"] = "Luganda", -- Ganda ["li"] = "Limburgish", -- Limburgan ["mi"] = "Māori", -- Maori ["na"] = "Nauruan", -- Nauru ["nb"] = "Bokmål", -- Norwegian Bokmål ["nd"] = "Northern Ndebele", -- North Ndebele ["nn"] = "Nynorsk", -- Norwegian Nynorsk ["nr"] = "Southern Ndebele", -- South Ndebele ["ny"] = "Chichewa", -- Nyanja ["oj"] = "Ojibwe", -- Ojibwa ["or"] = "Odia", -- Oriya ["pa"] = "Punjabi", -- Panjabi ["rn"] = "Kirundi", -- Rundi ["sl"] = "Slovene", -- Slovenian ["ss"] = "Swazi", -- Swati ["st"] = "Sotho", -- Southern Sotho ["to"] = "Tongan", -- Tonga --<end do-not-edit except to comment out>-- ------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >---------------------------------------------- ["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash) ["arc"] = "Imperial Aramaic (700-300 BCE)", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 'preferred' name ["art"] = "constructed", -- to match en.wiki article; lowercase for category name ["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title ["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title ["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration; ["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat ["bxr"] = "Russian Buryat", -- Russia Buriat; ["bxu"] = "Chinese Buryat", -- China Buriat; ["byr"] = "Yipma", -- Baruya, Yipma ["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic ["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title ["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash) ["frr"] = "North Frisian", -- Northern Frisian ["frs"] = "East Frisian Low Saxon", -- Eastern Frisian ["gsw-fr"] = "Alsatian", -- match MediaWiki ["haa"] = "Hän", -- Han; to match en.wiki article title ["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash) ["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title ["jam"] = "Jamaican Patois", -- Jamaican Creole English ["lij-mc"] = "Monégasque", -- Ligurian as spoken in Monaco ["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo ["mhr"] = "Meadow Mari", -- Eastern Mari ["mid"] = "Modern Mandaic", -- Mandaic ['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope; ["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash) ["mla"] = "Tamambo", -- Malo ['mte'] = "Mono-Alu", -- Mono (Solomon Islands) ['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope; ["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title ["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title ["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash) ["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title ["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text ["nrf-gg"] = "Guernésiais", -- match MediaWiki ["nrf-je"] = "Jèrriais", -- match MediaWiki ["nzi"] = "Nzema", -- Nzima; to match en.wiki article title ["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash) ["orv"] = "Old East Slavic", -- Old Russian ["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article ["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article ["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title ["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name() ["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article ["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title ["stq"] = "Saterland Frisian", -- Saterfriesisch ["und"] = "undetermined", -- capitalization to match existing category ["wrg"] = "Warrongo", -- Warungu ["xal-ru"] = "Kalmyk", -- to match en.wiki article title ["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño ["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title ["zxx"] = "no linguistic content", -- capitalization -- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["ace"] = "Acehnese", -- Achinese ["aec"] = "Sa'idi Arabic", -- Saidi Arabic ["akl"] = "Aklan", -- Aklanon ["alt"] = "Altay", -- Southern Altai ["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache ["bal"] = "Balochi", -- Baluchi -- ["bcl"] = "Central Bicolano", -- Central Bikol ["bin"] = "Edo", -- Bini ["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya ["chg"] = "Chagatay", -- Chagatai ["ckb"] = "Sorani Kurdish", -- Central Kurdish ["cnu"] = "Shenwa", -- Chenoua ["coc"] = "Cocopah", -- Cocopa ["diq"] = "Zazaki", -- Dimli ["fit"] = "Meänkieli", -- Tornedalen Finnish ["fkv"] = "Kven", -- Kven Finnish ["frk"] = "Old Frankish", -- Frankish ["gez"] = "Ge'ez", -- Geez ["gju"] = "Gujari", -- Gujari ["gsw"] = "Alemannic German", -- Swiss German ["gul"] = "Gullah", -- Sea Island Creole English ["hak"] = "Hakka", -- Hakka Chinese ["hbo"] = "Biblical Hebrew", -- Ancient Hebrew ["hnd"] = "Hindko", -- Southern Hindko -- ["ikt"] = "Inuvialuk", -- Inuinnaqtun ["kaa"] = "Karakalpak", -- Kara-Kalpak ["khb"] = "Tai Lü", -- Lü ["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish ["kpo"] = "Kposo", -- Ikposo ["krj"] = "Kinaray-a", -- Kinaray-A ["ktz"] = "Juǀ'hoan", -- Juǀʼhoan ["lez"] = "Lezgian", -- Lezghian ["liv"] = "Livonian", -- Liv ["lng"] = "Lombardic", -- Langobardic ["mia"] = "Miami-Illinois", -- Miami ["miq"] = "Miskito", -- Mískito ["mix"] = "Mixtec", -- Mixtepec Mixtec ["mni"] = "Meitei", -- Manipuri ["mrj"] = "Hill Mari", -- Western Mari ["mww"] = "White Hmong", -- Hmong Daw ["nds-nl"] = "Dutch Low Saxon", -- Low German -- ["new"] = "Nepal Bhasa", -- Newari ["nso"] = "Northern Sotho", -- Pedi -- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari ["ood"] = "O'odham", -- Tohono O'odham ["otk"] = "Old Turkic", -- Old Turkish ["pal"] = "Middle Persian", -- Pahlavi ["pam"] = "Kapampangan", -- Pampanga ["phr"] = "Potwari", -- Pahari-Potwari ["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit -- ["pnb"] = "Punjabi", -- Western Panjabi ["psu"] = "Shauraseni", -- Sauraseni Prākrit ["rap"] = "Rapa Nui", -- Rapanui ["rar"] = "Cook Islands Māori", -- Rarotongan ["rmu"] = "Scandoromani", -- Tavringer Romani ["rom"] = "Romani", -- Romany ["rup"] = "Aromanian", -- Macedo-Romanian ["ryu"] = "Okinawan", -- Central Okinawan ["sdc"] = "Sassarese", -- Sassarese Sardinian ["sdn"] = "Gallurese", -- Gallurese Sardinian ["shp"] = "Shipibo", -- Shipibo-Conibo ["src"] = "Logudorese", -- Logudorese Sardinian ["sro"] = "Campidanese", -- Campidanese Sardinian ["tkl"] = "Tokelauan", -- Tokelau ["tvl"] = "Tuvaluan", -- Tuvalu ["tyv"] = "Tuvan", -- Tuvinian ["vls"] = "West Flemish", -- Vlaams ["wep"] = "Westphalian", -- Westphalien ["xal"] = "Oirat", -- Kalmyk ["xcl"] = "Old Armenian", -- Classical Armenian ["yua"] = "Yucatec Maya", -- Yucateco --<end do-not-edit except to comment out>-- ------------------------------< P R I V A T E _ U S E _ T A G S >---------------------------------------------- ["akk-x-latbabyl"] = "Late Babylonian", ["akk-x-midassyr"] = "Middle Assyrian Akkadian", ["akk-x-midbabyl"] = "Middle Babylonian Akkadian", ["akk-x-neoassyr"] = "Neo-Assyrian Akkadian", ["akk-x-neobabyl"] = "Neo-Babylonian Akkadian", ["akk-x-old"] = "Old Akkadian", ["akk-x-oldassyr"] = "Old Assyrian Akkadian", ["akk-x-oldbabyl"] = "Old Babylonian Akkadian", ["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages ["ca-x-old"] = "Old Catalan", ["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages ["egy-x-demotic"] = "Demotic Egyptian", ["egy-x-late"] = "Late Egyptian", ["egy-x-middle"] = "Middle Egyptian", ["egy-x-old"] = "Old Egyptian", ["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages ["gmw-x-ecg"] = "East Central German", ["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre ["grc-x-attic"] = "Attic Greek", ["grc-x-biblical"] = "Biblical Greek", ["grc-x-byzant"] = "Byzantine Greek", ["grc-x-classic"] = "Classical Greek", ["grc-x-doric"] = "Doric Greek", ["grc-x-hellen"] = "Hellenistic Greek", ["grc-x-ionic"] = "Ionic Greek", ["grc-x-koine"] = "Koinē Greek", ["grc-x-medieval"] = "Medieval Greek", ["grc-x-patris"] = "Patristic Greek", ["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages ["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages ["inc-x-mitanni"] = "Mitanni-Aryan", -- inc in IANA is Indic languages ["inc-x-proto"] = "Proto-Indo-Aryan", ["ine-x-proto"] = "Proto-Indo-European", ["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages ["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages ["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there ["la-x-medieval"] = "Medieval Latin", ["la-x-new"] = "New Latin", ["lmo-x-milanese"] = "Milanese", -- lmo in IANA is Lombard; Milanese is a dialect ["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages ["prg-x-old"] = "Old Prussian", ["sem-x-ammonite"] = "Ammonite", ["sem-x-aramaic"] = "Aramaic", ["sem-x-canaan"] = "Canaanite languages", ["sem-x-dumaitic"] = "Dumaitic", ["sem-x-egurage"] = "Eastern Gurage", ["sem-x-hatran"] = "Hatran Aramaic", ["sem-x-oldsoara"] = "Old South Arabian", ["sem-x-palmyren"] = "Palmyrene Aramaic", ["sem-x-proto"] = "Proto-Semitic", ["sem-x-taymanit"] = "Taymanitic", ["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages ["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai ["yuf-x-wal"] = "Walapai", ["yuf-x-yav"] = "Yavapai", ["xsc-x-pontic"] = "Pontic Scythian", -- xsc in IANA is Scythian ["xsc-x-saka"] = "Saka", ["xsc-x-sarmat"] = "Sarmatian", } --[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------ for those rare occasions when article titles don't fit with the normal '<language name>-language', this table maps language code to article title. Use of this table should be avoided and the use of redirects preferred as that is the long-standing method of handling article names that don't fit with the normal pattern ]] local article_name = { ['kue'] = "Kuman language (New Guinea)", -- Kuman (Papua New Guinea); to avoid Kuman dab page ["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab ['mbo'] = "Mbo language (Cameroon)", -- Mbo (Cameroon) ['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages ['mnr'] = "Mono language (California)", -- Mono (USA) ['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon) ['qwm'] = "Kuman (Russia)", -- Kuman (Russia); to avoid Kuman dab page ["snq"] = "Sangu language (Gabon)", -- Sangu (Gabon) ["toi"] = "Tonga language (Zambia and Zimbabwe)", -- Tonga (Zambia and Zimbabwe); to avoid Tonga language dab page ["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab ["zmw"] = "Mbo language (Congo)", -- Mbo (Democratic Republic of Congo) } --[=[-------------------------< R T L _ S C R I P T S >-------------------------------------------------------- ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]] last update to this list: 2017-12-24 ]=] local rtl_scripts = { 'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr', 'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb', 'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg', 'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole', }; --[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------ This is a table of tables of transliteration standards and the language codes or language scripts that apply to those standards. This table is used to create the tool-tip text associated with the transliterated text displayed by some of the {{lang-??}} templates. These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for the cases when no |std= parameter value is provided. ]] local translit_title_table = { ['ahl'] = { ['default'] = 'Academy of the Hebrew Language transliteration', }, ['ala'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['ala-lc'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['batr'] = { ['default'] = 'Bikdash Arabic Transliteration Rules', }, ['bgn/pcgn'] = { ['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration', }, ['din'] = { ['ar'] = 'DIN 31635 Arabic', ['fa'] = 'DIN 31635 Arabic', ['ku'] = 'DIN 31635 Arabic', ['ps'] = 'DIN 31635 Arabic', ['tg'] = 'DIN 31635 Arabic', ['ug'] = 'DIN 31635 Arabic', ['ur'] = 'DIN 31635 Arabic', ['arab'] = 'DIN 31635 Arabic', ['default'] = 'DIN transliteration', }, ['eae'] = { ['default'] = 'Encyclopaedia Aethiopica transliteration', }, ['hepburn'] = { ['default'] = 'Hepburn transliteration', }, ['hunterian'] = { ['default'] = 'Hunterian transliteration', }, ['iast'] = { ['default'] = 'International Alphabet of Sanskrit transliteration', }, ['iso'] = { -- when a transliteration standard is supplied ['ab'] = 'ISO 9 Cyrillic', ['ba'] = 'ISO 9 Cyrillic', ['be'] = 'ISO 9 Cyrillic', ['bg'] = 'ISO 9 Cyrillic', ['kk'] = 'ISO 9 Cyrillic', ['ky'] = 'ISO 9 Cyrillic', ['mn'] = 'ISO 9 Cyrillic', ['ru'] = 'ISO 9 Cyrillic', ['tg'] = 'ISO 9 Cyrillic', ['uk'] = 'ISO 9 Cyrillic', ['bua'] = 'ISO 9 Cyrillic', ['sah'] = 'ISO 9 Cyrillic', ['tut'] = 'ISO 9 Cyrillic', ['xal'] = 'ISO 9 Cyrillic', ['cyrl'] = 'ISO 9 Cyrillic', ['ar'] = 'ISO 233 Arabic', ['ku'] = 'ISO 233 Arabic', ['ps'] = 'ISO 233 Arabic', ['ug'] = 'ISO 233 Arabic', ['ur'] = 'ISO 233 Arabic', ['arab'] = 'ISO 233 Arabic', ['he'] = 'ISO 259 Hebrew', ['yi'] = 'ISO 259 Hebrew', ['hebr'] = 'ISO 259 Hebrew', ['el'] = 'ISO 843 Greek', ['grc'] = 'ISO 843 Greek', ['ja'] = 'ISO 3602 Japanese', ['hira'] = 'ISO 3602 Japanese', ['hrkt'] = 'ISO 3602 Japanese', ['jpan'] = 'ISO 3602 Japanese', ['kana'] = 'ISO 3602 Japanese', ['zh'] = 'ISO 7098 Chinese', ['chi'] = 'ISO 7098 Chinese', ['pny'] = 'ISO 7098 Chinese', ['zho'] = 'ISO 7098 Chinese', -- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani? ['hans'] = 'ISO 7098 Chinese', ['hant'] = 'ISO 7098 Chinese', ['ka'] = 'ISO 9984 Georgian', ['kat'] = 'ISO 9984 Georgian', ['arm'] = 'ISO 9985 Armenian', ['hy'] = 'ISO 9985 Armenian', ['th'] = 'ISO 11940 Thai', ['tha'] = 'ISO 11940 Thai', ['ko'] = 'ISO 11941 Korean', ['kor'] = 'ISO 11941 Korean', ['awa'] = 'ISO 15919 Indic', ['bho'] = 'ISO 15919 Indic', ['bn'] = 'ISO 15919 Indic', ['bra'] = 'ISO 15919 Indic', ['doi'] = 'ISO 15919 Indic', ['dra'] = 'ISO 15919 Indic', ['gon'] = 'ISO 15919 Indic', ['gu'] = 'ISO 15919 Indic', ['hi'] = 'ISO 15919 Indic', ['hno'] = 'ISO 15919 Indic', ['inc'] = 'ISO 15919 Indic', ['kn'] = 'ISO 15919 Indic', ['kok'] = 'ISO 15919 Indic', ['ks'] = 'ISO 15919 Indic', ['mag'] = 'ISO 15919 Indic', ['mai'] = 'ISO 15919 Indic', ['ml'] = 'ISO 15919 Indic', ['mr'] = 'ISO 15919 Indic', ['ne'] = 'ISO 15919 Indic', ['new'] = 'ISO 15919 Indic', ['or'] = 'ISO 15919 Indic', ['pa'] = 'ISO 15919 Indic', ['pnb'] = 'ISO 15919 Indic', ['raj'] = 'ISO 15919 Indic', ['sa'] = 'ISO 15919 Indic', ['sat'] = 'ISO 15919 Indic', ['sd'] = 'ISO 15919 Indic', ['si'] = 'ISO 15919 Indic', ['skr'] = 'ISO 15919 Indic', ['ta'] = 'ISO 15919 Indic', ['tcy'] = 'ISO 15919 Indic', ['te'] = 'ISO 15919 Indic', ['beng'] = 'ISO 15919 Indic', ['brah'] = 'ISO 15919 Indic', ['deva'] = 'ISO 15919 Indic', ['gujr'] = 'ISO 15919 Indic', ['guru'] = 'ISO 15919 Indic', ['knda'] = 'ISO 15919 Indic', ['mlym'] = 'ISO 15919 Indic', ['orya'] = 'ISO 15919 Indic', ['sinh'] = 'ISO 15919 Indic', ['taml'] = 'ISO 15919 Indic', ['telu'] = 'ISO 15919 Indic', ['default'] = 'ISO transliteration', }, ['jyutping'] = { ['default'] = 'Jyutping transliteration', }, ['mlcts'] = { ['default'] = 'Myanmar Language Commission Transcription System', }, ['mr'] = { ['default'] = 'McCune–Reischauer transliteration', }, ['nihon-shiki'] = { ['default'] = 'Nihon-shiki transliteration', }, ['no_std'] = { -- when no transliteration standard is supplied ['akk'] = 'Semitic transliteration', ['sem'] = 'Semitic transliteration', ['phnx'] = 'Semitic transliteration', ['xsux'] = 'Cuneiform transliteration', }, ['pinyin'] = { ['default'] = 'Pinyin transliteration', }, ['rr'] = { ['default'] = 'Revised Romanization of Korean transliteration', }, ['rtgs'] = { ['default'] = 'Royal Thai General System of Transcription', }, ['satts'] = { ['default'] = 'Standard Arabic Technical Transliteration System transliteration', }, ['scientific'] = { ['default'] = 'scientific transliteration', }, ['ukrainian'] = { ['default'] = 'Ukrainian National system of romanization', }, ['ungegn'] = { ['default'] = 'United Nations Group of Experts on Geographical Names transliteration', }, ['wadegile'] = { ['default'] = 'Wade–Giles transliteration', }, ['wehr'] = { ['default'] = 'Hans Wehr transliteration', }, }; return { this_wiki_lang_tag = this_wiki_lang_tag, this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction article_name = article_name, lang_name_table = lang_name_table_t, override = override, rtl_scripts = rtl_scripts, special_tags_table = special_tags_table, translit_title_table = translit_title_table, }; 120387552d6d88bcddb6260de37dcd404c28ccdf Template:Tracks Wikidata 10 1255 3081 2589 2023-10-06T19:37:14Z wikipedia>SWinxy 0 {{Section link}} wikitext text/x-wiki {{Sister project | image = [[File:Wikidata-logo-with-magnifying-glass-icon.svg|40px|link=Wikipedia:Wikidata]] | position = {{{position|}}} | text = This {{template other | template | {{module other | module | {{category other | category | page <!-- not template, module, or category --> }} }} }} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see {{Section link||{{{section}}}}} for details. | the [[Wikidata]] propert{{#if:{{{2|}}}|ies:|y:}} {{#invoke:Uses Wikidata|usesProperty}} }} }}<includeonly>{{#switch:{{SUBPAGENAME}} |sandbox |testcases |doc= <!--no category--> |#default = {{template other | [[Category:Templates tracking Wikidata]] | {{module other | [[Category:Modules tracking Wikidata]] | {{category other | <!-- if used in a category, don't automatically add parent category --> | <!-- not template, module, or category --> }} }} }} }}</includeonly><noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc sub-page --> </noinclude> 42e72b2011b4a187af0427756de66dc2772894cc Template:Uses Wikidata 10 1069 3087 2337 2023-10-06T20:05:41Z wikipedia>SWinxy 0 Wrap catting in <includeonly> instead of an ifeq wikitext text/x-wiki {{Sister project | position = {{{position|}}} | project = data | text = This {{module other|module|template}} uses {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see {{Section link||{{{section}}}}} for details. | the [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}: {{#invoke:Uses Wikidata|usesProperty}} }}}}<includeonly>{{#switch:{{SUBPAGENAME}} |sandbox |testcases |doc= <!--no category--> |#default={{module other |[[Category:Modules using data from Wikidata]] |{{template other |[[Category:Templates using data from Wikidata]]}} }} }}</includeonly><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage --> </noinclude> dd057e93ccd4b8fe8d6acd82c6d1d3ee2589a36a Template:Coord/doc 10 1663 3067 2023-10-10T08:18:03Z Materialscientist 50 Reverted edits by [[Special:Contributions/68.168.231.24|68.168.231.24]] ([[User talk:68.168.231.24|talk]]) ([[WP:HG|HG]]) (3.4.12) wikitext text/x-wiki {{Documentation subpage}} {{#ifeq: {{FULLPAGENAME}} | Template:Coord | {{high-use|all-pages=yes}} }} {{Transwiki guide candidate}} {{lua|Module:Coordinates}} {{#switch: {{FULLPAGENAME}} | Template:Coord | Template:Coord/doc = {{Uses Wikidata|P625}} {{Tracks Wikidata|P625|cat=Coordinates Wikidata tracking categories}} }} When this template is used with '''display=title''', the template is not displayed on mobile. {{Navbox visibility}} This template is still displayed on mobile when used with '''display=inline''', e.g. in infoboxes. ==Quick guide== {{Coord how-to}} __TOC__ ==Purpose== {{tlf|Coord}} provides a standard notation for encoding locations by their [[latitude]] and [[longitude]] coordinates. It is primarily for specifying the [[World Geodetic System|WGS84]] geographic coordinates of locations on [[Earth]], at the same time emitting a machine-readable [[Geo (microformat)|Geo microformat]]. However, it can also encode locations on natural satellites, dwarf planets, and planets other than Earth. * To specify celestial coordinates, use {{tl|Sky}} instead. * Tag articles which lack coordinates (but need them) with {{tl|Coord missing}}. * If the subject's location is truly unknown or disputed, note this with {{tl|Coord unknown}}. * If the coordinates were [[meta:Wikidata/Notes/Inclusion syntax|transcluded from Wikidata]], use {{tl|WikidataCoord}}. See also: [[Wikipedia:WikiProject Geographical coordinates]]. ==Features== Latitude and longitude may be specified (with appropriate precision) either in decimal notation or as degrees/minutes/seconds. By default, coordinates appear in the format used to specify them. However, the <code>format=</code> parameter can be used to force display in a particular format. The template also accepts and displays coordinates formatted as degrees and decimal minutes as found on charts and maritime references. The template displays the formatted coordinates with a [[hyperlink]] to [[mw:GeoHack|GeoHack]]. GeoHack displays information customized to the location, including links to external mapping services. For terrestrial locations, a blue globe ([[Image:Erioll_world.svg|18px]]) appears to the left of the hyperlink. Clicking on the globe activates the [[:meta:WikiMiniAtlas|WikiMiniAtlas]] (requires [[JavaScript]]). By default, coordinates appear "in line" with the adjacent text. However, the <code>display=</code> parameter can be used to move the coordinates up near the page title (in desktop view only; title coordinates do not display in mobile view)—or display them in both places at once. The template outputs coordinates in three formats: * [[Degree (angle)|Degree]]/[[Minute of arc|minutes]]/[[Second of arc|seconds]] ("DMS", precision is degrees, or degrees/minutes, or degrees/minutes/seconds, based on input precision). * [[Decimal degrees]] (varying the number of decimal places based on input precision) * A machine readable [[Geo (microformat)|Geo microformat]]. Additional features * Logged-in users can [[#Per-user_display_customization|customize]] how coordinates appear in their browsers. * You can get coordinates from Wikidata by transcluding this template without any numbered arguments. * You can extract information from the Coord template for use in mathematical expressions. For details, see [[:Module:Coordinates]]. * All coordinates used in a page through this template are registered in the [[mw:API:Geosearch|geosearch API]]. If a coordinate is using title display, then these coordinates will be marked as the primary coordinates with regards to the page and therefore the topic of that page. ==Caveats== The template '''must not''' be modified without prior discussion. External tools can depend on the format of both the wikitext and/or the generated html. == Usage == '''&#123;{coord|'''''latitude'''''|'''''longitude'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}&#125;''' '''&#123;{coord|'''''dd'''''|'''''N/S'''''|'''''dd'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}&#125;''' '''&#123;{coord|'''''dd'''''|'''''mm'''''|'''''N/S'''''|'''''dd'''''|'''''mm'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}&#125;''' '''&#123;{coord|'''''dd'''''|'''''mm'''''|'''''ss'''''|'''''N/S'''''|'''''dd'''''|'''''mm'''''|'''''ss'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}&#125;''' The hemisphere identifiers (''N/S'') and (''E/W''), if used, must be adjacent to the enclosing pipe "'''<code>|</code>'''" characters, and cannot be preceded or succeeded by spaces. There are two kinds of parameters, all optional: *<span id="1">'''Coordinate parameters'''</span> are parameters that {{tl|Coord}} passes to the map server. These have the format ''parameter:value'' and are separated from each other by the underscore character ( _ ). The supported coordinate parameters are ''dim:'', ''globe:'', ''region:'', ''scale:'', ''source:'', and ''type:''. See [[#Coordinate parameters|coordinate parameters]] for details and examples. *<span id="2">'''Template parameters'''</span> are parameters used by the {{tl|Coord}} template. These have format ''parameter=value'' and are separated from each other by the pipe character ( | ). The supported template parameters are ''display='', ''format='', ''name='', and ''notes=''. :* '''display=''' can be one of the following: ::* <code>display=inline</code> – Display the coordinate inline (default) ::* <code>display=title</code> – Display the coordinate at the top of the article, beside the article's title (replaces {{tl|coor title dms}} family; coordinates are displayed in desktop view only; title coordinates do not display in mobile view) ::** shortcut: <code>display=t</code> ::* <code>display=inline,title</code> – Display the coordinate both inline and beside the article's title (replaces {{tl|coor at dms}} family) ::** shortcut: <code>display=it</code> ::* <code>display=title,inline</code> has the same effect as <code>display=inline,title</code> ::Note: the <code>title</code> attribute indicates that the coordinates apply to the entire article, and not just one of (perhaps many) places mentioned in it—so it should only be omitted in the latter case. Additionally the title option will mark the coordinates as the primary coordinates for the page (and topic of the page) in the [[mw:API:Geosearch|geosearch API]]. :* '''format=''' can be used to force ''dec'' or ''dms'' coordinate display. ::* <code>format=dec</code> reformats the coordinates to <span style="text-decoration:underline;">decimal degrees</span> format. ::* <code>format=dms</code> reformats the coordinates to <span style="text-decoration:underline;">degrees | minutes | seconds</span> format. :* '''name=''' can be used to annotate inline coordinates for display in map services such as the [[:meta:WikiMiniAtlas|WikiMiniAtlas]]. If omitted, the article's title (PAGENAME) is assumed. ::Note: a ''name='' parameter causes {{tl|Coord}} to emit an [[hCard]] [[microformat]] using that name, ''even if used within an existing hCard''. Do not use when the name is that of a person (e.g for a gravesite), as the generated hCard would be invalid. Also, do not use square brackets in names. :* '''notes=''' specifies text to be displayed immediately following the coordinates. This is primarily intended for adding footnotes to coordinates displayed beside the title. :* '''qid=''' specify Q item to display the coordinates of. Used primarily by Wikidata powered infoboxes. ==Helper functions== Helper functions are available to manipulate the output from {{tl|Coord}} when it appears in a container template such as an infobox. ===To extract the latitude from a Coord template=== {{See also|Geographic coordinate conversion}} Use: <code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}</nowiki> </code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}} and similarly to extract the longitude, use: <code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}</nowiki></code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}} :'''Note: this method removes the microformat markup, and should not be used inside templates which emit parent microformats, such as infoboxes or table-row templates.''' === Displaying all coordinate links on one map === The template {{tl|GeoGroup}} can be used in an article with coordinates. This template creates links to mapping services which display all the coordinates on a single map, and links to other services which allow the coordinates to be used or downloaded in a variety of formats. == Examples == {{for|the guideline on coordinate precision|WP:OPCOORD}} {| class="wikitable" | <code><nowiki>{{coord|43.651234|-79.383333}}</nowiki></code> | {{coord|43.651234|-79.383333}} | Toronto – Fully decimal – western hemisphere implied by negation |- | <code><nowiki>{{coord|43.65|-79.38}}</nowiki></code> | {{coord|43.65|-79.38}} | Toronto – low precision decimal |- | <code><nowiki>{{coord|43.6500|-79.3800}}</nowiki></code> | {{coord|43.6500|-79.3800}} | Toronto – medium precision decimal with trailing zeroes |- | <code><nowiki>{{coord|43.653500|N|79.384000|W}}</nowiki></code> | {{coord|43.653500|N|79.384000|W}} | Toronto – high precision decimal with explicit hemisphere notation |- | <code><nowiki>{{coord|43|29|N|79|23|W}}</nowiki></code> | {{coord|43|29|N|79|23|W}} | Toronto – degrees & minutes |- | <code><nowiki>{{coord|43|29|13|N|79|23|02|W}}</nowiki></code> | {{coord|43|29|4|N|79|23|0|W}} | Toronto – degrees, minutes & seconds |- | <code><nowiki>{{coord|43|29|12.6|N|79|23|02.4|W}}</nowiki></code> | {{coord|43|29|12.6|N|79|23|02.4|W}} | Toronto – degrees, minutes, seconds & fractions of seconds |- | <code><nowiki>{{coord|55.752222|N|37.615556|E}}</nowiki></code> | {{coord|55.752222|N|37.615556|E}} | Moscow – N & E |- | <code><nowiki>{{coord|55.752222|N|37.615556|E|format=dms}}</nowiki></code> | {{coord|55.752222|N|37.615556|E|format=dms}} | Convert to dms format |- | <code><nowiki>{{coord|39.098095|-94.587307|format=dms}}</nowiki></code> | {{coord|39.098095|-94.587307|format=dms}} | Decimal conversion without N/S/E/W |- | <code><nowiki>{{coord|55.752222|N|37.615556|E|format=dec|name=Moscow}}</nowiki></code> | {{coord|55.752222|N|37.615556|E|format=dec|name=Moscow}} | Convert to decimal and label on some maps |- | <code><nowiki>{{coord|33|55|S|18|25|E}}</nowiki></code> | {{coord|33|55|S|18|25|E}} | Cape Town – S & E |- | <code><nowiki>{{coord|35|00|N|105|00|E}}</nowiki></code> | {{coord|35|00|N|105|00|E}} | People's Republic of China |- | <code><nowiki>{{coord|22|54|30|S|43|14|37|W}}</nowiki></code> | {{coord|22|54|30|S|43|14|37|W}} | Rio – S & W |- | <code><nowiki>{{coord|22|S|43|W}}</nowiki></code> | {{coord|22|S|43|W}} | A [[Degree Confluence Project|degree confluence]]. |- | <code><nowiki>{{coord|52|28|N|1|55|W|region:GB_type:city|notes=<ref>{{cite web|url=http://www.fallingrain.com/world/UK/0/Birmingham.html|title=Birmingham}}</ref>|display=inline,title}}</nowiki></code> | {{coord|52|28|N|1|55|W|region:GB_type:city|notes=<ref>{{cite web|url=http://www.fallingrain.com/world/UK/0/Birmingham.html|title=Birmingham}}</ref>|display=inline,title}} | Birmingham – with display, notes, and parameter settings; note that these coordinates are also displayed at the top of this page. |- | <code><nowiki>{{coord|51|25.813|N|0|43.945|E}}</nowiki></code> | {{coord|51|25.813|N|0|43.945|E}} | Navigation buoy in the River Medway, England. |- | <code><nowiki>{{coord|51|36.287|N|8|32.018|W}}</nowiki></code> | {{coord|51|36.287|N|8|32.018|W}} | Lighthouse at the [[Old Head of Kinsale]] as defined by the [[Commissioners of Irish Lights]]. |} ===References=== {{reflist}} == Coordinate parameters == The first unnamed parameter following the longitude is an optional string of coordinate parameters, separated by underscores. These parameters help [[mw:GeoHack|GeoHack]] select suitable map resources, and they will become more important when [[meta:Wikimaps|Wikimaps]] becomes fully functional. ===== type:''T'' ===== {{Wikipedia:WikiProject Geographical coordinates/type:}} ===== scale:''N'' ===== {{Wikipedia:WikiProject Geographical coordinates/scale:}} ===== dim:''D'' ===== The <code>dim:</code> parameter defines the [[diameter]] of a viewing circle centered on the coordinate. While the default unit of measurement is metres, the <code>km</code> suffix may be appended to indicate kilometres. [[tswiki:GeoHack|GeoHack]] uses <code>dim:</code> to select a [[Scale (map)|map scale]] such that the viewing circle appears roughly {{convert|10|cm|in|0}} in diameter on a 72 [[Dots per inch|dpi]] computer monitor. If no <code>dim:</code>, <code>type:</code>, or <code>scale:</code> parameters are provided, GeoHack uses its default viewing circle of {{convert|30|km|mi}}. {| class="wikitable" |+ Samples ! Subject ! View diameter ! Markup ! Result |- | [[Western Hemisphere]] | style="text-align:right;" | {{convert|10000|km|mi}} | <code><nowiki>{{coord|0|N|90|W|dim:10000km}}</nowiki></code> | {{coord|0|N|90|W|dim:10000km}} |- | [[Ohio]] | style="text-align:right;" | {{convert|400|km|mi}} | <code><nowiki>{{coord|40.5|-82.5|dim:400km}}</nowiki></code> | {{coord|40.5|-82.5|dim:400km}} |- | [[Dresden]] | style="text-align:right;" | {{convert|20000|m|mi}} | <code><nowiki>{{coord|51.03|13.73|dim:20000}}</nowiki></code> | {{coord|51.03|13.73|dim:20000}} |- | [[Statue of Liberty]] | style="text-align:right;" | {{convert|100|m|ft}} | <code><nowiki>{{coord|40.6892|-74.0445|dim:100}}</nowiki></code> | {{coord|40.6892|-74.0445|dim:100}} |- |} ===== region:''R'' ===== {{Wikipedia:WikiProject Geographical coordinates/region:}} ===== globe:''G'' ===== {{Wikipedia:WikiProject Geographical coordinates/globe:}} ===== source:''S'' ===== {{Wikipedia:WikiProject Geographical coordinates/source:}} ==Per-user display customization== {{UF-coord-classes}} ==Incorrect uses and maintenance categories== The template has some input checks built in. Most errors display a <span style="color:red;">'''bold, red'''</span> message inline and categorize the article in the [[Wikipedia:Hidden category|hidden]] [[Wikipedia:Categorization#Non-article and maintenance categories|maintenance category]] '''[[:Category:Pages with malformed coordinate tags|Pages with malformed coordinate tags]]'''. There {{#IFEQ:{{PAGESINCATEGORY:Pages with malformed coordinate tags}}|1|is currently '''1''' page|are currently '''{{PAGESINCATEGORY:Pages with malformed coordinate tags}}''' pages}} in that category. See the category description for further instructions. A more thorough daily report of coordinates needing repair is at [[tools:~dispenser/view/File viewer#log:coord-enwiki.log]]. ''See also:'' [[WT:GEO#To do]] ==Internals== This template is completely powered by the [[Wikipedia:Lua|Lua]] <code>[[:Module:Coordinates]]</code>. ===Class names=== The class names '''geo''', '''latitude''' and '''longitude''' are used to generate the microformat and '''MUST NOT''' be changed. ===History=== This template used to use a lot of [[Template:Coord/doc/internals|sub templates]] but these have all been replaced by {{tlm|Coordinates}}. ===Template Data=== This template uses overloading{{clarify|reason=What does this mean? Where is it defined?}} which does not work well with the [[Wikipedia:TemplateData|VisualEditor/TemplateData]]. Consider using "Edit source" instead of the visual editor until this defect is corrected. To facilitate visual editing in the meantime, consider using {{tl|coordDec}} for signed decimal degrees, {{tl|coordDMS}} when degrees minutes and seconds are specified, and {{tl|coordDM}} when just degrees and minutes are given. {{TemplateData header}} <templatedata>{ "description": "Encodes the latitude and longitude coordinates of a location, provides a link to map of the location. This template does not work well with the Visual Editor, consider using {{coordDec}} for signed decimal degrees, {{coordDMS}} when degrees minutes and seconds are specified {{coordDM}} when only degrees and minutes are specified. To use this template you will need to use positional parameter following one of these schemes: {{coord | D | M | S | NS | D | M | S | EW | geo | opts}}, {{coord | D | M | NS | D | M | EW | geo | opts}}, {{coord | D| NS | D| EW | geo | opts}} {{coord | sD | sD | geo | opts}} where D is degrees, M is minutes, S seconds, sD signed decimal degrees, NS is N or S, EW is E or W, opts are named parameter and geo are the coordinate parameters described on the main doc page.", "params": { "1": { "label": "1", "description": "Either degrees latitude or a signed decimal degrees latitude", "type": "number", "required": false, "suggested": true }, "2": { "label": "2", "description": "Either: minutes latitude, signed decimal degrees longitude or 'N' or 'S'.", "type": "string", "required": false, "suggested": true }, "3": { "label": "3", "description": "Either: second latitude, degrees longitude, 'N' or 'S' or GeoHack parameters", "type": "string", "required": false }, "4": { "label": "4", "description": "Either: degrees longitude, 'N', 'S', 'E' or 'W' or GeoHack parameters", "type": "string", "required": false }, "5": { "label": "5", "description": "Either: degrees longitude, minutes longitude or GeoHack parameters", "type": "string", "required": false }, "6": { "label": "6", "description": "Either: minutes longitude, 'E' or 'W' or GeoHack parameters", "type": "string", "required": false }, "7": { "label": "7", "description": "Either second longitude, or GeoHack parameters", "type": "string", "required": false }, "8": { "label": "8", "description": "'E' or 'W'.", "type": "string", "required": false }, "9": { "label": "9", "description": "GeoHack parameters. Example: dim:30_region:US-WI_type:event", "type": "string", "required": false }, "qid": { "label": "Wikidata item", "description": "Retrieve coordinates from a WikiData entry instead of from this template's parameters", "type": "line", "required": false, "example": "Q513" }, "display": { "label": "Display", "description": "Where it is displayed. Can be one of: 'inline' in the body of the article, 'title' at the top of the article or 'inline,title' both", "type": "line", "default": "inline", "suggested": true, "required": false, "suggestedvalues": [ "inline", "title", "inline,title" ] }, "name": { "label": "Name", "description": "a label to place on maps (default is PAGENAME)", "type": "string", "required": false }, "notes": { "label": "Notes", "description": "text displayed immediately following the coordinates", "type": "string", "required": false }, "format": { "label": "Format", "description": "How the coordinates are displayed, either 'dec' or 'dms'", "type": "line", "required": false, "suggestedvalues": [ "dec", "dms" ] }, "nosave": { "label": "Geosearch", "description": "Set to 'true' if you want to avoid this coordinate to be registered in the geosearch API.", "type": "string", "required": false } } }</templatedata> <!-- "1": { "label": "Latitude degrees", "description": "The degrees part of the latitude. This can either be a whole number in which case minutes and seconds can also be provided in subsequent parameters, or in decimal format, negative for south e.g. -79.38.", "type": "number", "required": true }, "2": { "label": "Latitude minutes", "description": "The minutes part of the latitude. Do not be overly precise, 1' is approximately 1.5km, Not used if decimal degrees are specified.", "type": "number", "required": false }, "3": { "label": "Latitude seconds", "description": "The minutes part of the latitude. Do not be overly precise, 1\" is approximately 30m. Not used if decimal degrees are specified.", "type": "number", "required": false }, "4": { "label": "Latitude direction", "description": "Direction part of latitude: N or S. Not used if decimal degrees are specified.", "type": "string", "required": false }, "5": { "label": "Longitude degrees", "description": "The degrees part of the longitude. This can either be a whole number in which case minutes and seconds can also be provided in subsequent parameters, or in decimal format, negative for west e.g. -79.38.", "type": "number", "required": true }, "6": { "label": "Longitude minutes", "description": "The minutes part of the longitude. Do not be overly precise—1' is approximately 1.5 km. Not used if decimal degrees are specified.", "type": "number", "required": false }, "7": { "label": "Longitude seconds", "description": "The minutes part of the longitude. Do not be overly precise—1\" is approximately 30 m. Not used if decimal degrees are specified.", "type": "number", "required": false }, "8": { "label": "Longitude direction", "description": "Direction part of longitude: E or W. Not used if decimal degrees are specified.", "type": "string", "required": false }, "9": { "label": "Coordinate parameters", "description": "Optional parameters separated by an underscore '_', dim:N (viewing diameter in metres), region:R (ISO 3166-1 alpha-2 or ISO 3166-2 code), type:T (e.g. landmark or city (30,000)). For example 'dim:30_region:US-WI_type:event'", "type": "string", "required": false }, --> == See also == * [[Special:PrefixIndex/Template:GeoTemplate]], for the geohack page templates used on Earth and other bodies <includeonly>{{Sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Coordinates conversion templates]] [[Category:Coordinates templates]] [[Category:TemplateData documentation with overload problems]] [[Category:Templates generating Geo]] [[Category:Title templates]] }}</includeonly> 4d777f808441ad8f957e551b553ab13de52277e4 Module:Navbar 828 37 3055 164 2023-10-10T22:34:57Z Pppery 6 Per edit request on talk Scribunto text/plain local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false, false} if template then show[2] = false show[3] = false local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} -- TODO: Consider removing TableTools dependency. for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end local remove_edit_link = args.noedit if remove_edit_link then show[3] = false end return show end local function add_link(link_description, ul, is_mini, font_style) local l if link_description.url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass('nv-' .. link_description.full) :wikitext(l[1] .. link_description.link .. l[2]) :tag(is_mini and 'abbr' or 'span') :attr('title', link_description.html_title) :cssText(font_style) :wikitext(is_mini and link_description.mini or link_description.full) :done() :wikitext(l[3]) :done() end local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style) local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace) if not title then error(cfg.invalid_title .. title_text) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' -- TODO: Get link_descriptions and show into the configuration module. -- link_descriptions should be easier... local link_descriptions = { { ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', ['link'] = title.fullText, ['url'] = false }, { ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', ['link'] = talkpage, ['url'] = false }, { ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', ['link'] = 'Special:EditPage/' .. title.fullText, ['url'] = false }, { ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template', ['link'] = 'Special:PageHistory/' .. title.fullText, ['url'] = false }, { ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template', ['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true }, { ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template', ['link'] = title:fullUrl('action=watch'), ['url'] = true } } local ul = mw.html.create('ul') if has_brackets then ul:addClass(cfg.classes.brackets) :cssText(font_style) end for i, _ in ipairs(displayed_links) do if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end end return ul:done() end function p._navbar(args) -- TODO: We probably don't need both fontstyle and fontcolor... local font_style = args.fontstyle local font_color = args.fontcolor local is_collapsible = args.collapsible local is_mini = args.mini local is_plain = args.plain local collapsible_class = nil if is_collapsible then collapsible_class = cfg.classes.collapsible if not is_plain then is_mini = 1 end if font_color then font_style = (font_style or '') .. '; color: ' .. font_color .. ';' end end local navbar_style = args.style local div = mw.html.create():tag('div') div :addClass(cfg.classes.navbar) :addClass(cfg.classes.plainlinks) :addClass(cfg.classes.horizontal_list) :addClass(collapsible_class) -- we made the determination earlier :cssText(navbar_style) if is_mini then div:addClass(cfg.classes.mini) end local box_text = (args.text or cfg.box_text) .. ' ' -- the concatenated space guarantees the box text is separated if not (is_mini or is_plain) then div :tag('span') :addClass(cfg.classes.box_text) :cssText(font_style) :wikitext(box_text) end local template = args.template local displayed_links = choose_links(template, args) local has_brackets = args.brackets local title_arg = get_title_arg(is_collapsible, template) local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style) div:node(list) if is_collapsible then local title_text_class if is_mini then title_text_class = cfg.classes.collapsible_title_mini else title_text_class = cfg.classes.collapsible_title_full end div:done() :tag('div') :addClass(title_text_class) :cssText(font_style) :wikitext(args[1]) end local frame = mw.getCurrentFrame() -- hlist -> navbar is best-effort to preserve old Common.css ordering. return frame:extensionTag{ name = 'templatestyles', args = { src = cfg.hlist_templatestyles } } .. frame:extensionTag{ name = 'templatestyles', args = { src = cfg.templatestyles } } .. tostring(div:done()) end function p.navbar(frame) return p._navbar(require('Module:Arguments').getArgs(frame)) end return p 047f307758c878eb3e99ed1768cc40920a6ec5fa Module:Disambiguation/templates 828 156 3159 362 2023-10-19T07:05:59Z wikipedia>MSGJ 0 +Hurricane season disambiguation Scribunto text/plain -- This page contains a table of all disambiguation templates and their -- redirects. Templates names are capitalized, and the Template: prefix is -- removed. Templates are grouped with the main template first, followed by -- its redirects. return { ["Disambiguation"] = true, ["Begriffsklärung"] = true, ["DAB"] = true, ["Dab"] = true, ["Dabpage"] = true, ["Dbig"] = true, ["Dis"] = true, ["Disam"] = true, ["Disamb"] = true, ["Disambig"] = true, ["Disambig misspelling"] = true, ["Disambig-plants"] = true, ["Disambiguation page"] = true, ["Meta disambig"] = true, ["Project disambiguation"] = true, ["Shortcut disambig"] = true, ["WP disambig"] = true, ["WP-disambig"] = true, ["Wikipedia disambiguation"] = true, ["Airport disambiguation"] = true, ["Airport disambig"] = true, ["Biology disambiguation"] = true, ["Call sign disambiguation"] = true, ["Callsigndis"] = true, ["Caselaw disambiguation"] = true, ["Case law disambiguation"] = true, ["Chinese title disambiguation"] = true, ["CJKVdab"] = true, ["Chinese title disambig"] = true, ["Disambig-Chinese-char-title"] = true, ["Disambiguation cleanup"] = true, ["Cleanup disambig"] = true, ["Cleanup disambiguation"] = true, ["CleanupDisambig"] = true, ["Dab cleanup"] = true, ["Dab-cleanup"] = true, ["Dabclean"] = true, ["Disamb-cleanup"] = true, ["Disambcleanup"] = true, ["Disambig cleanup"] = true, ["Disambig-CU"] = true, ["Disambig-cleanup"] = true, ["Disambig-cu"] = true, ["Disambigcleanup"] = true, ["Disambiguate-cleanup"] = true, ["Disambiguation-cleanup"] = true, ["Geodis-cleanup"] = true, ["Genus disambiguation"] = true, ["Genus disambig"] = true, ["Hangul title disambiguation"] = true, ["Hospital disambiguation"] = true, ["Hospitaldis"] = true, ["Human name disambiguation"] = true, ["Bio-dab"] = true, ["HNDIS"] = true, ["HnDis"] = true, ["Hndab"] = true, ["Hndis"] = true, ["Hndisambig"] = true, ["Human name dab"] = true, ["Personal name"] = true, ["Personal name disambiguation"] = true, ["Human name disambiguation cleanup"] = true, ["Hndis-cleanup"] = true, ["Personal name disambiguation cleanup"] = true, ["Hurricane season disambiguation"] = true, ["Letter–number combination disambiguation"] = true, ["LNCD"] = true, ["Letter-Number Combination Disambiguation"] = true, ["Letter-Number combination disambiguation"] = true, ["Letter-NumberCombDisambig"] = true, ["Letter-NumberCombdisambig"] = true, ["Letter-NumberCombinationDisambiguation"] = true, ["Letter-number combination disambiguation"] = true, ["Mathematical disambiguation"] = true, ["Math dab"] = true, ["Math disambiguation"] = true, ["Mathdab"] = true, ["Mathematics disambiguation"] = true, ["Maths disambiguation"] = true, ["Military unit disambiguation"] = true, ["Mil-unit-dis"] = true, ["Mil-unit-disambig"] = true, ["Music disambiguation"] = true, ["Music disambig"] = true, ["Number disambiguation"] = true, ["Numberdis"] = true, ["Numdab"] = true, ["Numdisambig"] = true, ["Opus number disambiguation"] = true, ["Phonetics disambiguation"] = true, ["Place name disambiguation"] = true, ["DisambigG"] = true, ["DisambigGeo"] = true, ["Disambiggeo"] = true, ["Geo-dis"] = true, ["Geodab"] = true, ["Geodis"] = true, ["Geodisambig"] = true, ["Geographic disambiguation"] = true, ["Portal disambiguation"] = true, ["Portal disambig"] = true, ["Road disambiguation"] = true, ["Roaddis"] = true, ["School disambiguation"] = true, ["School disambig"] = true, ["Schooldab"] = true, ["Schooldis"] = true, ["Species Latin name abbreviation disambiguation"] = true, ["Species Latin name disambiguation"] = true, ["LatinNameDisambig"] = true, ["SpeciesLatinNameDisambig"] = true, ["Station disambiguation"] = true, ["Station dab"] = true, ["Synagogue disambiguation"] = true, ["Taxonomic authority disambiguation"] = true, ["Taxonomic authorities disambiguation"] = true, ["Taxonomy disambiguation"] = true, ["Species disambiguation"] = true, ["Template disambiguation"] = true, ["Template ambiguous"] = true, ["Template dab"] = true, ["Template disambig"] = true, ["WoO number disambiguation"] = true, } 2cbee297a6101d351aacad836d4c2061407218dd Template:GeoTemplate 10 1685 3129 2023-10-24T21:59:21Z wikipedia>Mxn 0 Unlinked icons wikitext text/x-wiki <templatestyles src="GeoTemplate/styles.css"/><div class="toccolours plainlinks" style="font-size:92%; max-width:60em; float:right; margin-top:1rem;"> <!-- Input --> {| style="background:none; text-align:left; width:100%; border-collapse:collapse;" |- style="vertical-align:top;" ! DMS<br>Decimal | colspan="3" style="width:95%;" | <span title="Latitude">{latdegabs}°&nbsp;{latminint}′&nbsp;{latsecdec}″&nbsp;{latNS}</span>, <span title="Longitude">{londegabs}°&nbsp;{lonminint}′&nbsp;{lonsecdec}″&nbsp;{lonEW}</span><br /><span class="geo h-geo"><span class="latitude p-latitude" title="Latitude">{latdegdec}</span>, <span class="longitude p-longitude" title="Longitude">{londegdec}</span></span> | rowspan="6" class="nomobile" style="width:364px;" |<!-- minimap --> <div style="position:relative; width:360px; height:180px;"> <div style="position:absolute;">[[File:Earthmap1000x500.jpg|360x180px|Map the location of {title}|alt=|link=]]</div> <div style="position:absolute; top:94px; left:176px;"> <div style="position:absolute; bottom:{latdegint}px; left:{londegint}px;" title="Location on {title}">[[File:Locator Dot.svg|8x8px|alt=|link=]]</div> </div> <div style="position:absolute; top:0; left:0; width:360px; height:180px;">&nbsp;</div> </div> |- ! [[Geo URI]] | colspan="3" | geo:{latdegdec},{londegdec} |- ! [[Universal Transverse Mercator coordinate system|UTM]] | colspan="3" | <span title="Zone">{utmzone}</span> <span title="Easting">{utmeasting}</span> <span title="Northing">{utmnorthing}</span> |- | | colspan="3" style="text-align:center" |[https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}&params={params}_globe:export&title={titlee} More formats...] |- ! [[WP:GEO#type:T|Type]] | style="min-width:5em;" | {type}&nbsp; ! [[WP:GEO#region:R|Region]] | style="min-width:5em;" | [{{SERVER}}/wiki/ISO_3166-2:{region} {region}] |- style="vertical-align:top;" ! Article | colspan="3" style="padding-bottom:1.5em;"| [{{SERVER}}/wiki/{pagenamee} {title}] <br><span class="noprint" style="text-transform:lowercase; visibility:hidden{pagename};">([{{SERVER}}{{SCRIPTPATH}}/index.php?title={pagenamee}&action=edit Edit] | [{{SERVER}}{{SCRIPTPATH}}/index.php?title={{ns:1}}:{pagenamee}&action=edit&section=new&editintro=Template:Geodata-check/report_editintro&preloadtitle={{urlencode:Coordinate error}}&preload=Template:Geodata-check/preload Report inaccuracies])</span> |- style="border-top:2px solid #bbb; vertical-align:top;" ! Contents: __NOTOC__ | colspan="5" | [[#Global services|Global services]]&nbsp;'''·''' [[#GEOTEMPLATE-LOCAL|Local services]]&nbsp;'''·''' [[#Photos|Photos]]&nbsp;'''·''' [[#Wikipedia articles|Wikipedia articles]]&nbsp;'''·''' [[#Other information|Other]] |} </div> <div class="plainlinks" style="text-align:center;"> <h2 style="min-width:192px; display:inline-block; margin-top:1rem;">Popular</h2><br> <div style="min-width:192px; display:inline-block;"> [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=r&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ <span style="display:inline-block; text-align:center; width:96px;">[[File:Bing favicon.svg|64x64px|link=|alt=]]<br>Bing Maps</span>][https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=m&z={osmzoom} <span style="display:inline-block; text-align:center; width:96px;">[[File:Google Maps icon (2020).svg|64x64px|link=|alt=]]<br>Google Maps</span>] </div><div style="min-width:192px; display:inline-block;"> [{{fullurl:toollabs:wp-world/earth.php|long={londegdec}&lat={latdegdec}&name={pagenamee}}} <span style="display:inline-block; text-align:center; width:96px;">[[File:Google Earth icon.svg|64x64px|link=|alt=]]<br/>Google Earth</span>] [https://www.openstreetmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=M <span style="display:inline-block; text-align:center; width:96px;">[[File:Openstreetmap logo.svg|64x64px|link=|alt=]]<br>OpenStreetMap</span>] </div></div> <!-- services --> {| class="mobile-linearize plainlinks geoservices" cellpadding="0" cellspacing="0" style="background:none; border-collapse:collapse; table-layout:fixed; width:100%;" |- style="vertical-align:top;" | class="directory" style="background:#fff; overflow:hidden; width:50%;" | <div id="GEOTEMPLATE-GLOBAL"> __NOEDITSECTION__ == Global/Trans-national services == {| border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse; width:98%; margin-left:0.25em" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | More |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] ACME Mapper | [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=M&marker0={latdegdec},{londegdec},{titlee} Map] | [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=SL&marker0={latdegdec},{londegdec},{titlee} Satellite] | [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=T&marker0={latdegdec},{londegdec},{titlee} Topo], [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=R&marker0={latdegdec},{londegdec},{titlee} Terrain],&nbsp;[https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=K&marker0={latdegdec},{londegdec},{titlee} Mapnik] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Apple Maps (WatchOS).svg|16x16px|link=|alt=]] [[Apple Maps]] (Apple devices only) | [https://maps.apple.com/?q={latdegdec},{londegdec}&t=m Map] |[https://maps.apple.com/?q={latdegdec},{londegdec}&t=k Satellite] |[https://duckduckgo.com/?q={latdegdec},{londegdec}&iaxm=maps via DuckDuckGo] (other devices) |- style="background:#e0eef7" class="nomobile" <!-- goes to web search on mobile Mar-2017 --> ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Bing favicon.svg|16x16px|link=|alt=]] '''[[Bing Maps]]''' | [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=r&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Map] | [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=h&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Aerial] | [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=o&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Bird's Eye] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Blue Marble Navigator | | [https://blue-marble.de?lon={londegdec}&nlat={latdegdec}&borders&geonames&townnames&zoom&overlay=14&base=7 Satellite] | [https://blue-marble.de/nightlights?ll={latdegdec},{londegdec} Night Lights] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Copernix | [https://copernix.io/#?where={londegdec},{latdegdec},{osmzoom}&query=&map_type=roadmap&pagename={pagenamee}?language={language} Map] | [https://copernix.io/#?where={londegdec},{latdegdec},{osmzoom}&query=&pagename={pagenamee}?language={language} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[John_Walker_(programmer)#Fourmilab|Fourmilab]] | | [https://www.fourmilab.ch/cgi-bin/uncgi/Earth?imgsize=320&opt=-l&lat={latdegdec}&ns=North&lon={londegneg}&ew=West&alt={altitude}&img=nasa.evif Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[GeaBios]] | | [http://www.geabios.com/html/services/maps/PublicMap.htm?lat={latdegdec}&lon={londegdec}&fov={span}&title={titlee} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[GeoNames]] | | [http://www.geonames.org/maps/google_{latdegdec}_{londegdec}.html Satellite] | [http://ws.geonames.org/extendedFindNearby?lat={latdegdec}&lng={londegdec} Text (XML)] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Google Earth icon.svg|16x16px|link=|alt=]] [[Google Earth]]<sup>[[Template talk:GeoTemplate/FAQ#Google|note]]</sup> | | [{{fullurl:toollabs:wp-world/earth.php|long={londegdec}&lat={latdegdec}&name={pagenamee}}} Open] | [{{fullurl:toollabs:geocommons/earth.kml|latdegdec={latdegdec}&londegdec={londegdec}&scale={scale}&title={titlee}}} w/ meta data] |- style="background:#e0eef7" ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Google Maps icon (2020).svg|16x16px|link=|alt=]] '''[[Google Maps]]''' | [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=m&z={osmzoom} Map] | [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=h&z={osmzoom} Satellite] | [https://www.google.com/maps/place//@{latdegdec},{londegdec},{osmzoom}z/data=!4m2!3m1!1s0x0:0x0!5m1!1e4?hl={language} Terrain], [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=h&z={osmzoom}&layer=c&cbll={latdegdec},{londegdec} Street View], [https://earthengine.google.com/timelapse/#v={latdegdec},{londegdec},{osmzoom},latLng&t=3.04 Earth Timelapse] |- class="nomobile" <!-- Mobile users can't use files --> ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] GPS Visualizer | [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_openstreetmap&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Map] | [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_aerial_arcgis&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Satellite] | [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_arcgistopo_world&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Topo], [https://www.gpsvisualizer.com/draw/?zoom={zoom}&center={latdegdec},{londegdec}&marker={titlee} Drawing Utility] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:HERE logo.svg|16x16px|link=|alt=]] [[HERE WeGo]] | [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},normal&msg={titlee} Map] | [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},satellite&msg={titlee} Satellite] | [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},terrain&msg={titlee} Terrain] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[MapQuest]] | [https://www.mapquest.com/latlng/{latdegdec},{londegdec}?zoom={osmzoom}&maptype=map Map] | [https://www.mapquest.com/latlng/{latdegdec},{londegdec}?zoom={osmzoom}&maptype=sat Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:NASA logo.svg|16x16px|link=|alt=]] [[NASA WorldWind]] | | [worldwind://goto/world=Earth&lat={latdegdec}&lon={londegdec}&view={span} Open] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Openstreetmap logo.svg|16x16px|link=|alt=]] [[OpenHistoricalMap|Open<wbr>Historical<wbr>Map]] | [https://www.openhistoricalmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=O Map] | | [https://nominatim.openhistoricalmap.org/reverse?lat={latdegdec}&lon={londegdec}&zoom={zoom} Nominatim (reverse geocoding)] |- style="background:#e0eef7" ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Openstreetmap logo.svg|16x16px|link=|alt=]] '''[[OpenStreetMap|Open<wbr>Street<wbr>Map]]''' | [https://www.openstreetmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=M Map] | | [https://geohack.toolforge.org/geohack.php?language={language}&project=osm&pagename={pagenamee}&params={params}&title={titlee} more maps], [https://nominatim.openstreetmap.org/reverse?lat={latdegdec}&lon={londegdec}&zoom={zoom} Nominatim (reverse geocoding)], [https://openstreetbrowser.org/#map={osmzoom}/{latdegdec}/{londegdec} OpenStreetBrowser] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Sentinel-2]] | | [https://apps.sentinel-hub.com/sentinel-playground/?source=S2L2A&lat={latdegdec}&lng={londegdec} Open] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] maps.vlasenko.net | | | [http://maps.vlasenko.net/?lon={londegdec}&lat={latdegdec} Old Soviet Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Waze]] | [https://www.waze.com/livemap/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Map] | | [https://www.waze.com/editor/?lon={londegdec}&lat={latdegdec} Editor], App: [http://waze.to/?ll={latdegdec},{londegdec} Open], [http://waze.to/?ll={latdegdec},{londegdec}&navigate=yes Navigate] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Wikimapia logo without label.svg|16x16px|link=|alt=]] [[Wikimapia]] | [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=w Map] | [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=b Satellite] | [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=b&v=8 + old places] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Erioll world 2.svg|16x16px|link=|alt=]] WikiMiniAtlas | [https://wma.wmflabs.org/iframe.html?wma={latdegdec}_{londegdec}_700_500_{{CONTENTLANG}}_{zoom}_en&globe=Earth&lang={{CONTENTLANG}}&page={pagenamee} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Yandex Maps]] | [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Zoom Earth | | [https://zoom.earth/?lat={latdegdec}&lon={londegdec}&z=15&r=0&src=ggl Satellite] | |} </div> | class="directory" rowspan="2" style="background:#fff; overflow:hidden; width:50%; vertical-align:top;"| <div id="GEOTEMPLATE-LOCAL"> == Wikimedia maps == <!-- [[MediaWiki:GeoHack.js]] --> <div class="center" style="margin-left:0.25em"> <div class="thumb tnone"> <div class="thumbinner"> <div id="osmEmbed" class="OSM:{latdegdec}_{londegdec}_{osmzoom}_mapnik" style="background:#aaa; width:100%; height:500px; height:80vh;">JavaScript disabled or out of map range.</div> </div> </div> </div> </div><!--/GEOTEMPLATE-LOCAL--> <div style="text-align:center; font-weight:bold;">[https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}&params={params}_region:#regional See all regions]</div> |- | rowspan="2" style="background:#fff; overflow:hidden; width:50%; vertical-align:top;"| ==Photos== <div class="directory"> {| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Aspect |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Commons-logo.svg|16x16px|link=|alt=]] Commons | [https://wikimap.toolforge.org/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language}&wp=false WikiMap] ([https://wikimap.toolforge.org/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language} +Wikipedia]),<!-- see https://de.wikipedia.org/wiki/Benutzer:DB111/Tools#WikiMap --> [https://osm-gadget-leaflet.toolforge.org/#/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang=commons osm-gadget-leaflet map] ([https://osm-gadget-leaflet.toolforge.org/#/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language} +Wikipedia]) <!-- failing as of 2020-07-27: [https://www.google.com/maps?ll={latdegdec},{londegdec}&hq=https://geocommons.toolforge.org/web.kml&hl={language}&z={osmzoom} Map], --> <!-- failing as of 2020-07-27: [https://geocommons.toolforge.org/proximityrama?latlon={latdegdec},{londegdec} Proximityrama] --> |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Flickr large white chiclet logo - no rounded corners, no border.svg|16x16px|link=|alt=]] Flickr | [https://www.flickr.com/map/?fLat={latdegdec}&fLon={londegdec}&zl=5 Map], [https://www.flickr.com/nearby/{latdegdec},{londegdec}?show=thumb&fromfilter=1&by=everyone&taken=alltime&sort=mostrecent Listing] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Loc.alize.us | [https://loc.alize.us/#/geo:{latdegdec},{londegdec},14,m/sort:date/ Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] VirtualGlobetrotting | [https://virtualglobetrotting.com/ll/{latdegdec},{londegdec} Listing] |} <!-- blacklisted | [https://www.360cities.net/map#lat={latdegdec}&lng={londegdec}&zoom={osmzoom} 360 Cities] ([[Panoramic photography|pano]]) --> <!-- Shutdown | [https://www.panoramio.com/map/#lt={latdegdec}&ln={londegdec}&z=0&k=0&a=1&tab=2 Panoramio] <!-- ? | [http://www.planeteye.com/maps?refcon=wikipedia&pll={latdegdec},{londegdec}&z={osmzoom}&title={titlee}&type={type}&scale={scale}&region={region}&sd=photos PlanetEye] --> </div> |} ==Wikipedia articles== <div class="directory"> {| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Aspect ! scope="col" | Link |- | List of nearby articles | [{{fullurl:toollabs:wikinearby/|lang={language}&q={latdegdec},+{londegdec}}} WikiNearby]<br>[https://{language}.wikipedia.org/wiki/Special:Nearby#/coord/{latdegdec},{londegdec} Wikipedia] |- <!-- for [[Category talk:Lines of latitude#Redirects]] --> | Article on {latdegabs}° {latNS} | [https://{language}.wikipedia.org/wiki/Latitude_{latdegabs}_degrees_{latNS} Wikipedia] |- <!-- for [[Category talk:Lines of longitude#Redirects]] --> | Article on {londegabs}° {lonEW} | [https://{language}.wikipedia.org/wiki/Longitude_{londegabs}_degrees_{lonEW} Wikipedia] |- | Map of all coordinates on ''{pagename}'' | [{{fullurl:toollabs:wikimap/|lang={language}&page={pagenamee}}} WikiMap]<br>[{{fullurl:toollabs:osm4wiki/cgi-bin/wiki/wiki-osm.pl|project={language}&article={pagenamee}}} OSM for Wiki] |- | Map of nearby articles | [{{fullurl:toollabs:wikimap/|lang={language}&lon={londegdec}&lat={latdegdec}&zoom={osmzoom}&commons=false}} WikiMap]<br>[https://wiwosm.toolforge.org/osm-on-ol/kml-on-ol.php?la={language}&uselang={language}&lon={londegdec}&lat={latdegdec}&rang=50&map=1 Wikipedia World] |- | Map of nearby Wikidata items | [https://wikidata-todo.toolforge.org/around.html?lat={latdegdec}&lon={londegdec}&radius=15&lang={language} Wikidata Todo] |- | Map of nearby places with no images | [https://wikishootme.toolforge.org/#lat={latdegdec}&lng={londegdec} WikiShootMe] |} </div> ==Other information== <div class="directory"> {| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Aspect |- ! scope="row" style="font-weight:normal; text-align:left;" | Geocaching.com | [https://www.geocaching.com/seek/nearest.aspx?origin_lat={latdegdec}&origin_long={londegdec}&dist=20&submit3=Search Near by locations], [https://www.geocaching.com/map/default.aspx?lat={latdegdec}&lng={londegdec} Map this location] |- ! scope="row" style="font-weight:normal; text-align:left;" | NASA Weather | Satellite images: [https://weather.msfc.nasa.gov/cgi-bin/get-goes?satellite=Global%20Composite&lat={latdegdec}&lon={londegdec}&zoom=1&info=ir&palette=spect.pal&width=600&height=500 Radar] (Currently not updating<!-- and I don't think it is radar?-->) |- ! scope="row" style="font-weight:normal; text-align:left;" | Megalithic Portal | [https://www.megalithic.co.uk/article.php?long={londegdec}&lat={latdegdec} Prehistoric Sites, nearby] |- ! scope="row" style="font-weight:normal; text-align:left;" | Earthtools.org | [http://new.earthtools.org/height/{latdegdec}/{londegdec} Elevation (Europe and America)], [http://new.earthtools.org/timezone/{latdegdec}/{londegdec} Time zone (Outdated<!--for data in e.g. South Sudan-->)] ([[Extensible Markup Language|XML]] output) |- ! scope="row" style="font-weight:normal; text-align:left;" | SunriseSunset.com | [http://www.sunrisesunset.com/calendar.asp?comb_city_info=Long:{londegneg},Lat:{latdegdec};{londegneg};{latdegdec};0;0&month={{CURRENTMONTH}}&year={{CURRENTYEAR}}&time_type=1&use_dst=0&want_twi_civ=1&want_twi_naut=1&want_twi_astro=1&want_mrms=1&want_mphase=1 Sunrise, Sunset, Twilight, and Moon Calendar] |- ! scope="row" style="font-weight:normal; text-align:left;" | Geody | [https://www.geody.com/geolook.php?world=terra&lat={latdegdec}&lon={londegdec} Info] |- ! scope="row" style="font-weight:normal; text-align:left;" | Heavens-Above.Com | [https://www.heavens-above.com/?Loc=Newark&Lat={latdegdec}&Lng={londegdec}&Alt={altitude} Satellite / Planet Spotter] |- ! scope="row" style="font-weight:normal; text-align:left;" | Echolink | [http://www.echolink.org/links.jsp?sel=latlon&lat_deg={latdegdec}&lat_min={latmindec}&lon_deg={londegabs}&lon_min={lonmindec}&lon_EW={lonEW} Nearest gateway network] for amateur radio VoIP |- ! scope="row" style="font-weight:normal; text-align:left;" | Findu.com | [http://www.findu.com/cgi-bin/near.cgi?lat={latdegdec}&lon={londegdec} APRS stations] |- ! scope="row" style="font-weight:normal; text-align:left;" | Degree Confluence Project | [http://www.confluence.org/confluence.php?lat={latdeground}&lon={londeground} Info] |- ! scope="row" style="font-weight:normal; text-align:left;" | GeoHack | [https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}&params={latantipodes}_N_{longantipodes}_E_scale:10000000_type:{type}&title=The+Antipodes+of+{titlee} Antipodes] |- ! scope="row" style="font-weight:normal; text-align:left;" | MapIt (from [[mySociety]]) | [https://global.mapit.mysociety.org/point/4326/{londegdec},{latdegdec}.html Containing areas] (political boundaries, etc.) |- ! scope="row" style="font-weight:normal; text-align:left;" | PeakFinder.org | [https://www.peakfinder.org/?lat={latdegdec}&lng={londegdec}&name={titlee} 360° panoramic mountain views] |- ! scope="row" style="font-weight:normal; text-align:left;" | SkyVector | [https://skyvector.com/?ll={latdegdec},{londegdec}&zoom=2 Aeronautical chart] |- ! scope="row" style="font-weight:normal; text-align:left;" | Flightradar24 | [https://www.flightradar24.com/{latdegdec},{londegdec}/{osmzoom} Planes flying in the area] |- ! scope="row" style="font-weight:normal; text-align:left;" | Great Circle Mapper | [http://www.gcmap.com/search?Q={latdegdecabs}{latNS}+{londegdecabs}{lonEW} Nearby Airports] |- ! scope="row" style="font-weight:normal; text-align:left;" | OpenSeaMap | [https://map.openseamap.org/map/?zoom={osmzoom}&mlat={latdegdec}&mlon={londegdec}&layers=BTTFFFTFFFF0TFFTFTFF Sea lanes, beacons, traffic, etc.] |- ! scope="row" style="font-weight:normal; text-align:left;" | MarineTraffic | [https://www.marinetraffic.com/en/ais/home/centerx:{londegdec}/centery:{latdegdec}/zoom:{osmzoom} Ships in the area] |- ! scope="row" style="font-weight:normal; text-align:left;" | OpenRailwayMap | [https://www.openrailwaymap.org/?lang=en&lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&style=standard Railways] |- ! scope="row" style="font-weight:normal; text-align:left;" | Strava | [https://labs.strava.com/heatmap/#10.86/{londegdec}/{latdegdec}/hot/all Fitness tracking heatmap] |- ! scope="row" style="font-weight:normal; text-align:left;" | LightningMaps.org | [https://www.lightningmaps.org/?lang=fr#y={latdegdec};x={londegdec};z=12;t=1;m=oss;r=0;s=201;o=0;b=0.00;n=0;d=2;dl=2;dc=0;ts=0; Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapillary.com | [https://www.mapillary.com/app/?lat={latdegdec}&lng={londegdec}&z=osmzoom} Crowdsourced street view] |- ! scope="row" style="font-weight:normal; text-align:left;" | Old Maps Online | [http://www.oldmapsonline.org/?lat={latdegdec}&lon={londegdec} Old maps] |} </div> <!-- [http://mapmaker.nationalgeographic.org/ National Geographic MapMaker] --> <!-- Begin region specific --> <div id="GEOTEMPLATE-REGIONS" class="directory" style="margin-top:1.5em;> {| id="regional" class="toc plainlinks" summary="Other regions" |- ! scope="row" style="padding-left: 0.5em" |Regional services: |style="padding:0 0.5em" | [[#Africa|Africa]]&nbsp;'''·''' [[#Asia|Asia]]&nbsp;'''·''' [[#Australia|Australia]]&nbsp;'''·''' [[#Europe A–M|Europe (A–M)]]&nbsp;'''·''' [[#Europe N–Z|Europe (N–Z)]]&nbsp;'''·''' [[#North America|North America]]&nbsp;'''·''' [[#South America|South America]]&nbsp;'''·''' [[#Antarctica|Antarctica/Arctic]] |} =North America= <div id="GEOTEMPLATE-CA"> ==Canada== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | GPS Visualizer | [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=nrcan_toporama&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | National Atlas of Canada | [http://atlas.nrcan.gc.ca/site/english/toporama/index.html Topo] (Indirect link) |- ! scope="row" style="font-weight:normal; text-align:left;" | TopoQuest | [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=8&map=50k Topo] |} </div> <div id="GEOTEMPLATE-US"> ==United States== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Aspect |- ! scope="row" style="font-weight:normal; text-align:left;" | ACME | [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=T&marker0={latdegdec},{londegdec},{titlee} Topo] [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=N&marker0={latdegdec},{londegdec},{titlee} NEXRAD] [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=O&marker0={latdegdec},{londegdec},{titlee} DOQ] |- ! scope="row" style="font-weight:normal; text-align:left;" | CalTopo | [http://caltopo.com/map.html#ll={latdegdec},{londegdec}&z={osmzoom}&b=t Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | GPS Visualizer | [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=naip_aerial&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} USDA&nbsp;Aerial], [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=google_arcgistopo_us&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} USGS&nbsp;Topo] |- style="background:#e0eef7" ! scope="row" style="font-weight:normal; text-align:left;" | Historic Aerials | [https://historicaerials.com/?layer=map&zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Historic Aerials] |- ! scope="row" style="font-weight:normal; text-align:left;" | NASA/MSFC GOES | [https://weather.msfc.nasa.gov/cgi-bin/get-goes?satellite=GOES-E%20CONUS&lat={latdegdec}&lon={londegdec}&zoom=1&info=ir&palette=spect.pal&width=600&height=500 Weather Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | National Weather Service | [https://forecast.weather.gov/MapClick.php?textField1={latdegdec}&textField2={londegdec} Area weather and forecast]<br/> [https://forecast.weather.gov/MapClick.php?lat={latdegdec}&lon={londegdec}&unit=0&lg=english&FcstType=graphical Graphical hourly pinpoint forecast] |- ! scope="row" style="font-weight:normal; text-align:left;" | Natural Atlas | [https://naturalatlas.com/map/@{latdegdec},{londegdec},{osmzoom}z Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | TerraFly | [http://vn4.cs.fiu.edu/cgi-bin/gnis.cgi?Lat={latdegdec}&Long={londegdec}&vid=&tfaction=&referer=tfhome Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | TopoQuest | [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=4&map=sat1m USGS Aerial], [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=4 Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | Trails.com | [http://www.topozone.com/map.asp?lat={latdegdec}&lon={londegdec}&datum=nad83 Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | US EPA | [https://water.usgs.gov/cgi-bin/pointinhuc.pl?latitude={latdegabs}{latminint}{latsecint}{latNS}&longitude={londegabs}{lonminint}{lonsecint}{lonEW} Watershed Info] |- ! scope="row" style="font-weight:normal; text-align:left;" | USGS National Map Viewer | [https://apps.nationalmap.gov/viewer/viewer/index.html?marker={londegdec},{latdegdec},4326,from%20{pagenamee},,{titlee}&scale={scale} Map] <!-- before 2021: [https://viewer.nationalmap.gov/advanced-viewer/viewer/index.html?marker={londegdec},{latdegdec},4326,from%20{pagenamee},,{titlee}&scale={scale} Map],--><!-- Advanced TNM Viewer: might need to make sure scale is what we expect; also, commas should be filtered out in pagename and title somehow --> <!-- [https://viewer.nationalmap.gov/viewer/?q={latdegdec},{londegdec} Legacy TNM] -- ending May 2017 --> <!-- even older/long gone: [http://nmviewogc.cr.usgs.gov/viewer.htm?CenterPoint={latdegdec},{londegdec}&Scale=CITY&Classes=OTHER%20IMAGERY Map] --> |- ! scope="row" style="font-weight:normal; text-align:left;" | USGS TopoView | [https://ngmdb.usgs.gov/topoview/viewer/#{osmzoom}/{latdegdec}/{londegdec} Historic topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | WeatherUSA | [https://www.weatherusa.net/weathernet/live/?q={latdegdec},{londegdec}&zoom={osmzoom}&layers=obs-t,radar,alerts Live] |} </div> =Europe A–M= <div id="GEOTEMPLATE-AT"> == Austria == <!-- Dokumentation zum Geolink-Dienst siehe http://de.wikipedia.org/wiki/Vorlage:GeoTemplate/GeolinkConfig --> {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite |- | Austrian map amap.at (max 1:50,000) |[https://wikitools.toolforge.org/geolink.php?config=austriamap&lat={latdegdec}&lon={londegdec}&scale={scale} Map] | |} ===Local=== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Kärnten Atlas (Carinthia) | [https://wikitools.toolforge.org/geolink.php?config=kaerntenatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | NÖ Atlas (Lower Austria) | [https://wikitools.toolforge.org/geolink.php?config=noeatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | DORIS interMap (Upper Austria) | [https://wikitools.toolforge.org/geolink.php?config=ooeatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | SAGIS (Salzburg) | [https://wikitools.toolforge.org/geolink.php?config=salzburg&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Digitaler Atlas Steiermark (Styria) | [https://wikitools.toolforge.org/geolink.php?config=steiermark&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | tirisMaps (Tyrol) | [https://wikitools.toolforge.org/geolink.php?config=tirol&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | VoGIS (Vorarlberg) |[https://wikitools.toolforge.org/geolink.php?config=vorarlberg&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |} </div> <div id="GEOTEMPLATE-BY"> ==Belarus== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite |- ! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net | [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec} Map] | [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec}&addmap1=space10 Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki | | [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel | [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map] | |} </div> <div id="GEOTEMPLATE-BG"> ==Bulgaria== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite |- ! scope="row" style="font-weight:normal; text-align:left;" | eMaps.bg | [http://2cyr.com/emaps-bg.php?q={latdegdec},{londegdec} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | 360.bg | | [http://www.360.bg/index.php?lat={latdegdec}&lon={londegdec} Satellite] |} <!-- This service would be good to include, but #expr doesn't work as MediaWiki doesn't know the {} parameters, so it needs a GeoHack modification for the offset --> <!-- *[http://www.emaps.bg/emaps/content.asp?mapSize=1&cboMaps=0&minx={{#expr: {utmeasting}-14425}}&maxx={{#expr: {utmeasting}+14425}}&miny={{#expr: {utmnorthing}-10000}}&maxy={{#expr: {utmnorthing}+10000}} Find this location] on emaps.bg [http://www.emaps.bg/].--> </div> <div id="GEOTEMPLATE-CY"> ==Cyprus== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Cyprus on-line | [http://www.col.com.cy/?locale=en&lat={latdegdec}&long={londegdec}&level={zoom} Map] |} </div> <div id="GEOTEMPLATE-CZ"> ==Czech Republic== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapy.cz | [https://en.mapy.cz/?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Map] | [https://en.mapy.cz/?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW}&base=ophoto Labeled satellite] | [https://en.mapy.cz/19stoleti?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Historical], [https://en.mapy.cz/turisticka?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Touristic] |- ! scope="row" style="font-weight:normal; text-align:left;" | iDnes | [http://mapy.idnes.cz/#query=search({latdegabs}%C2%B0{latminint}%27{latsecdec}%22{latNS}%20{londegabs}%C2%B0{lonminint}%27{lonsecdec}%22{lonEW}@0@1) Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | ikatastr.cz | [https://www.ikatastr.cz/#&kde={latdegdec},{londegdec},19 Cadastral Map] on ikatastr.cz | | |} </div> <div id="GEOTEMPLATE-DK"> ==Denmark== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Findvej.dk | [http://www.findvej.dk/?longitude={londegdec}&latitude={latdegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Findvej.dk with Wikipedia | [http://www.findvej.dk/wikipedia?template=1&longitude={londegdec}&latitude={latdegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Eniro | [http://kort.eniro.dk/query?what=map&mapstate={zoom};{londegdec};{latdegdec} Map] |} </div> <div id="GEOTEMPLATE-EE"> ==Estonia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Estonian Land Board | [http://geoportaal.maaamet.ee/url/xgis-latlon.php?lat={latdegdec}&lon={londegdec}&out=xgis Orthophoto/Map] |} </div> <div id="GEOTEMPLATE-FI"> ==Finland== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Eniro | [http://kartor.eniro.se/?q={latdegdec},{londegdec}&z={zoom} Map] | [http://kartat.eniro.fi/query?what=map&mapstate={zoom};{londegdec};{latdegdec};o Oblique] |- ! scope="row" style="font-weight:normal; text-align:left;" | National Land Survey of Finland MapSite | [http://toolserver.org/%7Epara/EPSG3067.php?lat={latdegdec}&lon={londegdec}&url=http://kansalaisen.karttapaikka.fi/linkki?scale={scale}&srs=EPSG%3A3067&y={n}&x={e}&lang=fi&text=Coordinate%20from%20GeoHack Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | 02.fi | [https://para.toolforge.org/geo/convert/02.fi-grc.html#latlon={latdegdec},{londegdec} Map] | |} ===Local=== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | eKarjala | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.ekarjala.fi/WebEK/Default.aspx?layers=Etel%C3%A4-Karjalan%20Seutukartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- | Espoo | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=2500000&link=http://kartat.espoo.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Helsinki | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=2500000&link=http://kartta.hel.fi/opas/main/?l=1&m=1&o=1&n={Plocal}&e={Ilocal}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Hämeenlinna | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6700000&Iref=2500000&link=http://kartta.hameenlinna.fi/cgi-bin/GifMap.dll?Theme=Opaskartta&West={IlocalW}&South={PlocalS}&East={IlocalE}&North={PlocalN}&Height=600&Width=650&Command=DisplayLink&Language=fin&Info={Plocal},{Ilocal},{title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Jyväskylä | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6890000&Iref=3400000&link=http://kartta.jkl.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Kokkola | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=7000000&Iref=2400000&link=http://ipp.kokkola.fi/cgi-bin/gifmap.dll?Theme=Opaskartta&West={IlocalW}&South={PlocalS}&East={IlocalE}&North={PlocalN}&Height=400&Width=500&Command=DisplayLink_fin&Language=fin&Info={Plocal},{Ilocal},{title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Kotka | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6000000&Iref=3000000&link=http://karttapalvelu.kotka.fi/map/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Kouvola | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6740000&Iref=3470000&link=http://kartta.kouvola.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Kuopio | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.kuopionseutu.fi/map/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Lahti | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=840&Iref=-23053970&link=http://kartta.lahti.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Lappeenranta | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6700000&Iref=3500000&link=http://kartta.lappeenranta.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Oulu | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=7200000&Iref=2500000&link=http://kartta.ouka.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Pohjois-Karjala | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://pk-kartat.jns.fi/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Pori | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6800000&Iref=1500000&link=http://kartta.pori.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Rauma | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=1000000&link=http://opaskartta.rauma.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Rovaniemi | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.rovaniemi.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- | Tampere | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://www.tampere.fi/ytoteto/kartta/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Turku | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=1500000&link=http://opaskartta.turku.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Vaasa | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6900000&Iref=1500000&link=http://kartta.vaasa.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- | Vantaa | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.vantaa.fi/Default.aspx?easting={Ilocal}&northing={Plocal}}} Map] | |- | Retkikartta | | [http://www.retkikartta.fi/?x={utmeasting}&y={utmnorthing}&zoom=1 Topographical map] |} </div> <div id="GEOTEMPLATE-FR"> ==France== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Aerial ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | FranceTopo | | | [http://francetopo.fr/api.html?map_x={londegdec}&map_y={latdegdec}&zoom_osm={osmzoom} Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | IGN Géoportail | [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOGRAPHICALGRIDSYSTEMS.MAPS.3D$GEOPORTAIL:OGC:WMTS@aggregate(1)&permalink=yes Map] |[http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=ORTHOIMAGERY.ORTHOPHOTOS$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Aerial] |[http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=CADASTRALPARCELS.PARCELS$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Cadastral], [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOLOGY.GEOLOGY$EXTERNAL:OGC:EXTERNALWMS(1)&permalink=yes Geological], [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOGRAPHICALGRIDSYSTEMS.CASSINI$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Cassini (18th century)] |} </div> <div id="GEOTEMPLATE-GB"> ==Great Britain== [[Ordnance Survey National Grid|OS Grid Reference]]: '''{osgb36ref}''' (all-numeric format: {osgb36easting} {osgb36northing}) {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Topo ! scope="col" | Aerial ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | [[Bing Maps]] UK | [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title} Map] | [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title}&sty=s OS maps] | [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title}&sty=h Aerial] | [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sty=o Bird's Eye] |- ! scope="row" style="font-weight:normal; text-align:left;" | StreetMap | [http://streetmap.co.uk/grid/{osgb36easting}_{osgb36northing}_106 Map] | [http://streetmap.co.uk/grid/{osgb36easting}_{osgb36northing}_120 OS maps] | | [http://streetmap.co.uk/idgc.srf?x={osgb36easting}&y={osgb36northing} Convert] |- ! scope="row" style="font-weight:normal; text-align:left;" | Vision of Britain historical maps | [http://www.visionofbritain.org.uk/location_page.jsp?easting={osgb36easting}&northing={osgb36northing} Map] | [http://www.visionofbritain.org.uk/location_page.jsp?easting={osgb36easting}&northing={osgb36northing} OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey | | [https://explore.osmaps.com/pin?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&overlays=&style=Standard&type=2d OS maps] | | ''See other OS<br />map links below'' |- ! scope="row" style="font-weight:normal; text-align:left;" | {{abbr|Defra|Department for Environment, Food and Rural Affairs}}'s {{abbr|MAGIC|Multi-Agency Geographic Information for the Countryside}} service | [http://magic.defra.gov.uk/MagicMap.aspx?xygridref={osgb36easting},{osgb36northing} Map] | | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Elgin roadworks information | [http://v5.roadworks.org/index.cfm?api=1&page=map&coord={osgb36easting},{osgb36northing}&scale=5000 Map] | | | |- ! scope="row" style="font-weight:normal; text-align:left;" | National Library of Scotland | |[http://maps.nls.uk/geo/explore/#zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=1&b=1&marker={latdegdec},{londegdec} OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | ViaMichelin UK | [http://www.viamichelin.co.uk/viamichelin/gbr/search/Cartes/{londegdec}*{latdegdec}?zoomLevel=12 Map] | | | [http://www.viamichelin.co.uk/viamichelin/gbr/search/Trafic/{londegdec}*{latdegdec}?zoomLevel=12 Traffic] |- ! scope="row" style="font-weight:normal; text-align:left;" | Old OS maps | | [http://www.ponies.me.uk/maps/osmap.html?z=14&x={londegdec}&y={latdegdec} OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Where's the Path? | [https://wtp2.appspot.com/wheresthepath.htm?lat={latdegdec}&lon={londegdec} Map] | | | |- ! scope="row" style="font-weight:normal; text-align:left;" | SABRE Maps | [http://www.sabre-roads.org.uk/maps/index.php?view={latdegdec},{londegdec}&map=OSMMap&layer=0 Map] | [http://www.sabre-roads.org.uk/maps/index.php?view={latdegdec},{londegdec}&map=NPEMap&layer=0 OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Systematic Maps | | [http://www.sysmaps.co.uk/sysmaps_os.html?!{latdegdec}~{londegdec} OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | MapIt<br />(from [[mySociety]]) | | | |[https://mapit.mysociety.org/point/4326/{londegdec},{latdegdec}.html Containing areas]<br />(ward, constituency, etc.) <!-- different to global version, above --> |- ! scope="row" style="font-weight:normal; text-align:left;" | [[British Geological Survey]] | | | | [https://www.bgs.ac.uk/data/services/mapCreator/WmsMap.html?mapCentreLat={latdegdec}&mapCentreLong={londegdec}&mapZoom=14&boxWidth=800&boxHeight=450&geologyType=bedrock50k&mapType=HYBRID Geology] <!-- Commenting out section while OpenStreetMap street mapservers are down |- | colspan=5 | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''More OS maps'' |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey NPE 1:50000<br />(England / Wales), 1945-1955<br />(via [[OpenStreetMap]]) | | [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=B0000 OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey NPE/7th<br />1:50000 (Scotland), 1945-1955<br />(via OpenStreetMap) | | [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=0B000 OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey 7th series<br />1:50000, 1947-1960 (via<br />OpenStreetMap; partial coverage) | | [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=00B00 OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey 1st edition<br />1:25000, 1946-1960<br />(via OpenStreetMap) | | [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=000B0 OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey OpenStreet data<br />(via OpenStreetMap) | | [http://os.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=B0 OS maps] | | end of comment -->|} <!--<br />--> {| border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse; margin-top:1em" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Information |- ! scope="row" style="font-weight:normal; text-align:left;" | [[Geograph Britain and Ireland]] | [https://www.geograph.org.uk/gridref/{osgb36ref} Photos] |- ! scope="row" style="font-weight:normal; text-align:left;" | UKVillages | [http://www.ukvillages.co.uk/ukvillages.nsf/b!open&s=village%20map&x={osgb36easting}&y={osgb36northing} villages] |- ! scope="row" style="font-weight:normal; text-align:left;" | UK-postcodes.com | [http://www.uk-postcodes.com/latlng/{latdegdec},{londegdec} Postal code and local government]<br /> |- ! scope="row" style="font-weight:normal; text-align:left;" | GlobalGuide.org | [https://www.globalguide.org/index.html?lat={latdegdec}&long={londegdec}&zoom=17&title={titlee} View land use] |} </div> <div id="GEOTEMPLATE-GR"> ==Greece== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | in.gr | [http://maps.in.gr/Default.aspx?c={latdegdec},{londegdec}&z={zoom} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | umap.gr | [http://www.umap.gr/webcruiser/umap.html?locale=en&lat={latdegdec}&long={londegdec}&level={zoom} Map] |} </div> <div id="GEOTEMPLATE-IS"> ==Iceland== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Já.is | [http://en.ja.is/kort#lat={latdegdec}&lon={londegdec}&z=6&mark=1 Map] |} </div> <div id="GEOTEMPLATE-IE"> ==Ireland== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" |Ordnance Survey Ireland |[http://map.geohive.ie/ Ordnance Survey Ireland] |} </div> <div id="GEOTEMPLATE-IM"> ==Isle of Man== [[Ordnance Survey National Grid|OS Grid Reference]]: '''{osgb36ref}''' (all-numeric format: {osgb36easting} {osgb36northing}) {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Multimap | [http://www.multimap.com/p/browse.cgi?scale={mmscale}&lon={londegdec}&lat={latdegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | StreetMap | [http://www.streetmap.co.uk/newsearch.srf?mapp=newmap&searchp=newsearch&name={latdegdec},{londegdec}&Submit1=search&type=LatLong Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey OS Maps | [https://explore.osmaps.com/pin?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&overlays=&style=Standard&type=2d Map] |} * [https://www.geograph.org.uk/gridref/{osgb36ref} View photos of this location] from [[Geograph Britain and Ireland]] </div> <div id="GEOTEMPLATE-IT"> ==Italy== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | ViaMichelin Italia | [http://www.viamichelin.it/viamichelin/int/search/Cartes/{londegdec}*{latdegdec}?zoomLevel=12 Map] |} </div> <div id="GEOTEMPLATE-LI"> ==Liechtenstein== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | map.geo.admin.ch | [http://map.geo.admin.ch/?zoom=5&X={ch1903northing}&Y={ch1903easting}&lang={language}&crosshair=marker Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Swisstopo | [http://map.geodataviewer.admin.ch/geodatenviewer.php?x={ch1903easting}&y={ch1903northing}&lang={language} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | map.search.ch | [http://map.search.ch/{ch1903easting},{ch1903northing} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | MySwitzerland.com | [http://map.myswitzerland.com/myswitzerland/?x={ch1903easting}.00&y={ch1903northing}.00&lang={language} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapplus/Tydac | [http://www.mapplus.ch/frame.php?map=&x={ch1903easting}&y={ch1903northing}&zl=12 Map] |} </div><!-- div id="GEOTEMPLATE-LT"> ==Lithuania== * Geographic Information portal of Lithuania [http://www.geoportal.lt/map/#x=533712&y=6060907&l=3&s=3346 Map and Satellite] </div--> =Europe N–Z= <div id="GEOTEMPLATE-NO"> == Norway == {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Aerial ! scope="col" | Hybrid ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no | [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/+land Map] | [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+flybilder Aerial] | | [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+sjo Sea], [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+terreng Terrain], [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+enkel Basic] |- ! scope="row" style="font-weight:normal; text-align:left;" | Norge i bilder | | [http://norgeibilder.no/?x={utm33easting}&y={utm33northing}&level={osmzoom}&utm=33&projects=&layers=&planned=0 Aerial] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Høydedata | [https://hoydedata.no/LaserInnsyn/?x={utm33easting}&y={utm33northing}&level={osmzoom}&utm=33&projects=&layers=&planned=0 Map] | | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Norkart Virtual Globe | | [http://www.virtual-globe.info/VirtualGlobeStarter.php?request=page&dataset=http://www.virtual-globe.info/norge-globe-features.vgml&lookat={londegdec},{latdegdec},{scale} Satellite] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Finn.no | [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=normap Map] | [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=norortho Aerial] | [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=norhybrid Hybrid] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Gulesider.no | [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom} Map] | [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=aerial Aerial] | [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=hybrid Hybrid] | [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=nautical Sea], [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&orientation=N&l=oblique Oblique] |- ! scope="row" style="font-weight:normal; text-align:left;" | 1881 | [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=0&r=&o=&layer= Map] | [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=1&r=&o=&layer= Aerial] | [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=2&r=&o=&layer= Hybrid] | [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=5&r=&o=&layer= Oblique] |- ! scope="row" style="font-weight:normal; text-align:left;" | Statens Vegvesen | [https://www.vegvesen.no/vegkart/vegkart/#kartlag:geodata/@{utm33easting},{utm33northing},{osmzoom} Map] | [https://www.vegvesen.no/vegkart/vegkart/#kartlag:nib/@{utm33easting},{utm33northing},{osmzoom} Aerial] | | [http://www.vegvesen.no/Trafikkbeta/?lat={latdegdec}&long={londegdec}&zoom={osmzoom} Traffic] |- ! scope="row" style="font-weight:normal; text-align:left;" | UT.no | [https://www.ut.no/kart?lat={latdegdec}&lng={londegdec}&zoom={osmzoom} Map] | | | |} <div id="GEOTEMPLATE-SJ"> <!-- Vennligst ikke flytt Svalbard og Jan Mayen til alfabetisk plassering. Dette for at kodene NO-21 og NO-22 skal gi resultat.--> == Svalbard and Jan Mayen == === Svalbard === {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Aerial |- ! scope="row" style="font-weight:normal; text-align:left;" | TopoSvalbard | [http://toposvalbard.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=map Map] | [http://toposvalbard.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=aerial Aerial] |-style="background:#f5f5f5" ! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no | [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+svalbard Svalbard] | |} === Jan Mayen === {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Aerial |- ! scope="row" style="font-weight:normal; text-align:left;" | TopoJanMayen | [http://topojanmayen.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=map Map] | [http://topojanmayen.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=aerial Aerial] |-style="background:#f5f5f5" ! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no | [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+janmayen Jan Mayen] | |} </div> </div> <div id="GEOTEMPLATE-PL"> ==Poland== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapa Polski Targeo | [http://mapa.targeo.pl/{title},{londegdec},{latdegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Szukacz.pl | [http://mapa.szukacz.pl/?n={latdegdec}&e={londegdec}&z=3 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Zumi | [http://www.zumi.pl/namapie.html?long={londegdec}&lat={latdegdec}&type=3&scale=3 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Autopilot | [http://mapa.autopilot.pl/?long={londegdec}&lat={latdegdec}&zoom=12 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Polish Railways Map | [http://www.bazakolejowa.pl/index.php?dzial=mapa#{osmzoom}/{latdegdec}/{londegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | UMP | [http://mapa.ump.waw.pl/ump-www/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&mlat={latdegdec}&mlon={londegdec} Map] |} </div> <div id="GEOTEMPLATE-PT"> ==Portugal== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" rowspan="3" style="font-weight:normal; text-align:left;" | Instituto Geográfico do Exército <br /><small>Requires Internet Explorer</small> | [http://www.igeoe.pt/igeoearcweb/igeoesig/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Continente] (Portuguese mainland) |- | [http://www.igeoe.pt/igeoearcweb/acores/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Açores] |- | [http://www.igeoe.pt/igeoearcweb/madeira/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Madeira] |- ! scope="row" rowspan="3" style="font-weight:normal; text-align:left;" | SAPO <br /> | [https://mapas.sapo.pt/?o=0&M={londegdec},{latdegdec} Continente e Ilhas] |} </div> <div id="GEOTEMPLATE-RU"> ==Russia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Yandex.Maps (Russian)&nbsp;{{pipe}} {{lang|ru|Яндекс Карть}} | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Yandex.Maps (English)&nbsp;{{pipe}} {{lang|ru|Яндекс Карть}} | [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki&nbsp;{{pipe}} {{lang|ru|Космоснимки}} | [http://www.kosmosnimki.ru/index.html#mode=map&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Map] | [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net | [http://maps.vlasenko.net/?lon={londegdec}&lat={latdegdec} Old Soviet Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Rambler Maps&nbsp;{{pipe}} {{lang|ru|Рамблер}} | [http://maps.rambler.ru/?ll={londegdec},{latdegdec}&z={osmzoom} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Maps@Mail.ru&nbsp;{{pipe}} {{lang|ru|Карты@Mail.ru}} | [http://maps.mail.ru/#x={londegdec}&y={latdegdec}&z={zoom} Map] | [http://maps.mail.ru/#x={londegdec}&y={latdegdec}&z={zoom}&mode=satellite Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | eAtlas | [http://www.eatlas.ru/#z={zoom}&lat={latdegdec}&lon={londegdec} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Navitel | [http://maps.navitel.su/api/map.html?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=BF Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Progorod&nbsp;{{pipe}} {{lang|ru|Прогород}} | [http://www.pro-gorod.ru/maps/?z={osmzoom}&lon={londegdec}&lat={latdegdec} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Roscosmos Geoportal | [http://geoportal.ntsomz.ru/index.php/welcome?x={londegdec}&y={latdegdec}&z={span} Map] | [http://geoportal.ntsomz.ru/index.php/welcome?x={londegdec}&y={latdegdec}&z={span} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | 2GIS&nbsp;{{pipe}} {{lang|ru|2ГИС}} | [https://2gis.ru/moscow/geo/4504222442088225,{latdegdec},{londegdec} Map] | | |} === City-specific === {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Region |- ! scope="row" style="font-weight:normal; text-align:left;" | Moscow Map&nbsp;{{pipe}} {{lang|ru|Карта Москвы}} | [http://www.moscowmap.ru/imap_moscow.shtml?lat={latdegdec}&lng={londegdec}&zoom={osmzoom} Map] | Moscow |- ! scope="row" style="font-weight:normal; text-align:left;" | Cheboksary.ws&nbsp;{{pipe}} {{lang|ru|Чебоксары}} | [http://www.cheboksary.ws/?xy={latdegdec},{londegdec}&z={osmzoom}&t=coordinate Map] | Cheboksary |} <!-- [http://www.kartaspb.ru/index.php?v=2&x=14752&y=22463&z=6&pt=1] --> </div> <div id="GEOTEMPLATE-SK"> ==Slovakia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapy. Atlas.sk | [http://mapy.atlas.sk/GPS%3A{latdegdec}N+{londegdec}E Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | TuristickaMapa.sk | [http://www.turistickamapa.sk/?y={latdegdec}&x={londegdec} Map] |} </div> <div id="GEOTEMPLATE-SI"> ==Slovenia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | [[Orthophoto]] ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | [[Online map services of Slovenia|Geopedia]] | [http://www.geopedia.si/#L381_T13_b4_c{latdegdec},{londegdec}_s16 Map] | [http://www.geopedia.si/#L381_T13_b2_c{latdegdec},{londegdec}_s16 Orthophoto] | [http://www.geopedia.si/#L381_T13_b1-3_c{latdegdec},{londegdec}_s16 Terrain] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[GeaBios]] | [http://www.geabios.com/html/services/maps/PublicMap.htm?lat={latdegdec}&lon={londegdec}&fov={span} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Gaea+ | | | [http://gaeaplus.si/webstart?version=gaeaplus&command=FlyLookAt;{latdegdec};{londegdec};2500;WGS84;0.0;45.0; 3D Satellite] |} </div> <div id="GEOTEMPLATE-ES"> ==Spain== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Coverage ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | SigPac | style="text-align:center" | all | [http://sigpac.mapa.es/fega/antiguovisor/?ube={utm33easting};{utm33northing};{utm33easting};{utm33northing};33 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Vissir – ICC | Catalonia | [http://www.icc.cat/vissir3/?lang=eng&mp_zoom=n:{zoom}&etrs89x={londegdec}&etrs89y={latdegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Nomecalles | Community of Madrid | [http://gestiona.madrid.org/nomecalles/Inicio.icm?idioma=en&utmX={utmeasting}&utmY={utmnorthing}&zoom={altitude} Map] |} </div> <div id="GEOTEMPLATE-SE"> ==Sweden== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Eniro | [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec} Map] | [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec};h Labeled satellite] | [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec};o View] |- ! scope="row" style="font-weight:normal; text-align:left;" | hitta.se | [https://para.toolforge.org/geo/convert/WGS84toRT90.php?lat={latdegdec}&lon={londegdec}&url=http%3A//www.hitta.se/LargeMap.aspx%3Fz%3D3%26mp%3D%3Cpts%3E%3Cpt%20x%3D%22%7Brt90x%7D%22%20y%3D%22%7Brt90y%7D%22%20i%3D%22/images/point.png%22%3E%3Ct%3E{title}%3C/t%3E%3C/pt%3E%3C/pts%3E Map] | [https://para.toolforge.org/geo/convert/WGS84toRT90.php?lat={latdegdec}&lon={londegdec}&url=http%3A//www.hitta.se/LargeMap.aspx%3FShowSatellite%3Dtrue%26z%3D3%26mp%3D%3Cpts%3E%3Cpt%20x%3D%22%7Brt90x%7D%22%20y%3D%22%7Brt90y%7D%22%20i%3D%22/images/point.png%22%3E%3Ct%3E{title}%3C/t%3E%3C/pt%3E%3C/pts%3E Satellite] | |} </div> <div id="GEOTEMPLATE-CH"> ==Switzerland== [[Swiss Grid]] coordinates: '''{ch1903easting} / {ch1903northing}''' {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Cantons covered ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | map.geo.admin.ch | style="text-align:center" | all | [http://map.geo.admin.ch/?zoom=5&X={ch1903northing}&Y={ch1903easting}&lang={language}&crosshair=marker Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | map.search.ch | style="text-align:center" | all | [http://map.search.ch/{ch1903easting},{ch1903northing} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | MySwitzerland.com | style="text-align:center" | all | [http://map.myswitzerland.com/myswitzerland/?x={ch1903easting}.00&y={ch1903northing}.00&lang={language} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapplus/Tydac | style="text-align:center" | all | [http://www.mapplus.ch/frame.php?map=&x={ch1903easting}&y={ch1903northing}&zl=12 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | geoportal.ch | St. Gallen, Appenzell | [http://www.geoportal.ch/schnittstelle/aufruf.aspx?VERSION=1.0&REQUEST=GetIGis&MAP=94&TOPIC=Coord&ATTRIBUTE1={ch1903easting}&ATTRIBUTE2={ch1903northing}&sign=0&WIDTH=2000 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | AGISviewer Kanton Aargau | Aargau | [http://www.ag.ch/agisviewer/mapFrame.asp?MapWidth=531&MapHeight=492&bitte%20ausw%E4hlen!&Cmd=zoomIn&MinX={ch1903easting}.00001&MinY={ch1903northing}.1&MaxX={ch1903easting}.9&MaxY={ch1903northing}.9 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | GeoPortal Basel-Stadt | Basel-City | [http://www.geo-bs.ch/stadtplan_stadtplan_karte.cfm?X={ch1903easting}&Y={ch1903northing}&Jump=3&Zoom=1000&ZIparkhaeuser=1&ZIspitaeler=1 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | geoView.BL | Basel-Country |[https://www.geo.bl.ch/parzis/automap.jsp?LAYERS=map_3&ZOOM={ch1903easting}.000001%7C{ch1903northing}.000001%7C{ch1903easting}.99%7C{ch1903northing}.99 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | GéoPortail du Canton de Jura | Jura | [https://www.jura.ch/sit/geoportail/IndexRedir.html?Y={ch1903easting}&X={ch1903northing}&echelle=5000&theme=photoaerienne Map] |- ! scoEast={IlocalE}pe="row" style="font-weight:normal; text-align:left;" | SITN | Neuchâtel |[http://sitn.ne.ch/index.html?x={ch1903easting}&y={ch1903northing}&echelle=25000 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | GIS Schaffhausen | Schaffhausen | [http://www.gis.sh.ch/gis_sh_internet/mapservice.asp?IDProjekt=3&MapServiceUserGroup=1&MapServiceUser=0&MapServiceURL=Nav@g@22@u@West@g@{ch1903easting}@u@Nord@g@{ch1903northing}@u@B@g@1000 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | GeoShop vs.geo | Valais | [http://mapserver3.internetgalerie.ch/vs-geo/vs-geo.php?recenter_bbox={ch1903easting},{ch1903northing} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | ZugMap | Zug | [http://www.zugmap.ch/bm2_zugmap/mapservice.asp?IDProjekt=1&MapServiceUserGroup=29&MapServiceUser=0&MapServiceURL=Nav@g@22@u@West@g@{ch1903easting}@u@Nord@g@{ch1903northing}@u@B@g@5726&MapServiceDatenauswahl=89@g@94 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | GIS-Browser Kanton Zürich | Zurich | [http://maps.zh.ch?topic=BASISKARTEZH&scale=10000&x={ch1903easting}&y={ch1903northing}&markers=ring Map] |} </div> <div id="GEOTEMPLATE-UA"> ==Ukraine== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite |- ! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net | [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec} Map] | [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec}&addmap1=space10 Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | Visicom Maps | [http://maps.visicom.ua/#lng={londegdec};lat={latdegdec};z=6;map=ukraine_en;lngm={londegdec};latm={latdegdec}; Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki | | [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel | [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map] | |} </div> =Oceania= <div id="GEOTEMPLATE-AU"> ==Australia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Street-Directory.com.au | [http://www.street-directory.com.au/sd_new/genmap.cgi?x={londegdec}&y={latdegdec}&sizex=800&sizey=800&level=5&star=6 Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Bonzle Digital Atlas | [http://maps.bonzle.com/c/a?a=p&x={londegdec}&y={latdegdec} Map] | [http://maps.bonzle.com/c/a?a=p&d=ter&x={londegdec}&y={latdegdec} Terrain Slice] |- ! scope="row" style="font-weight:normal; text-align:left;" | Australian Geographic Reference Image | | [http://agri.openstreetmap.org/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Aerial] (via [[OpenStreetMap]]) |} </div> =Asia= <div id="GEOTEMPLATE-AZ"> == Azerbaijan == {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- !scope="row" style="font-weight:normal; text-align:right;" | GoMap.Az | [https://gomap.az/maps/en/@/map;lt={latdegdec};ln={londegdec};z=13 Map] |} </div> <div id="GEOTEMPLATE-CN"> ==China== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Baidu Maps (百度地图) | [http://map.baidu.com/?latlng={latdegdec},{londegdec}&title={titlee}&content={titlee}&autoOpen=true&l= Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Amap (高德地图) | [http://ditu.amap.com/regeo?lng={londegdec}&lat={latdegdec}&name={titlee} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | QQ Map (腾讯地图) |[https://map.qq.com/?type=marker&isopeninfowin=1&markertype=1&pointx={londegdec}&pointy={latdegdec}&name={titlee}&addr=ADDRESS Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Tianditu / Map World (天地图) |[https://map.tianditu.gov.cn/ Map] (Indirect link) |- | colspan="2" style="font-size:smaller" | Due to [[restrictions on geographic data in China]], all Chinese map services provide distorted maps that are shifted from GeoHack's coordinates. You may obtain coordinates suitable for these maps from [https://artoria2e5.github.io/PRCoords/demo?lat={latdegdec}&lon={londegdec}#output this link]. (Use "WGS &rarr; BD" for Baidu and "WGS &rarr; GCJ" for all other services including Google.) |} <!-- Sogou [http://map.sogou.com/index.html#c=12957437.5,4833843.75,{osmzoom}] look like 100,000*{latdegdec} ^^ Can be some sort of "web mercator" too. ^^ Official api available for conversion from WGS84/GCJ02/BD coordinate into Sougou coordinate, see http://map.sogou.com/api/documentation/javascript/api2.5/examples/index.html ^^ Fed http://api.go2map.com/maps/js/api_v2.5.1.js into https://lelinhtinh.github.io/de4js/: looks like a baidu-like web mercator with big LL2MC/MC2LL arrays for polynomial work ^^ Fed the site js /v708/js/z20190219.js in there too, no direct code paths to parse normal lat-lng Mapbar - to be investigate --> </div> <div id="GEOTEMPLATE-HK"> == Hong Kong == {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- !scope="row" style="font-weight:normal; text-align:right;" | CentaMap | [https://hk.centamap.com Map] (Indirect link) |- !GeoInfo Map | [https://www2.map.gov.hk/gih3/view/index.jsp Map] (Indirect link) |} </div> <div id="GEOTEMPLATE-IN"> == India == {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- !scope="row" style="font-weight:normal; text-align:right;" | Bhuvan | [https://bhuvan-app1.nrsc.gov.in/bhuvan2d/bhuvan/bhuvan2d.php Map] (Indirect link) |- !scope="row" style="font-weight:normal; text-align:right;" |MapmyIndia | [https://maps.mapmyindia.com/@{latdegdec},{londegdec} Map] |- !scope="row" style="font-weight:normal; text-align:right;" |Survey of India | [https://indiamaps.gov.in/soiapp/ Map] (Indirect link) |} </div> <div id="GEOTEMPLATE-IR"> == Iran == {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- !scope="row" style="font-weight:normal; text-align:right;" | Parsijoo map | [https://map.parsijoo.ir/?lat={latdegdec}&lon={londegdec}&z=14 Map] |- !scope="row" style="font-weight:normal; text-align:right;" | Balad Maps | [https://balad.ir/location?latitude={latdegdec}&longitude={londegdec}&zoom=16.500000 Map] |} </div> <div id="GEOTEMPLATE-PS"> ==Palestine== :''In addition to Palestine Open Maps, Israeli maps tend to cover the State of Palestine fairly well.''<br /><br /><!--<br />Please do not move the Palestine entry and put it in its normal alphabetical place. It is here as part of a hack, so that it shows Israeli maps.--> {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Maps from 1870s to modern |- ! scope="row" style="font-weight:normal; text-align:left;" | Palestine Open Maps | [https://palopenmaps.org/view/9999/@{latdegdec},{londegdec} Maps] |} <div id="GEOTEMPLATE-IL"> ==Israel== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | Topo ! scope="col" | Historical ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Amud Anan<br />{{lang|he|עמוד ענן|rtl=yes}} | | | [http://amudanan.co.il/?lon={londegdec}&lat={latdegdec} Topo] | [http://amudanan.co.il/?lon={londegdec}&lat={latdegdec}&map=pef 1880] | |- ! scope="row" style="font-weight:normal; text-align:left;" | govmap | [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=0 Map] | [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=1 Sat.] [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=2 <small>&#91;hybrid&#93;</small>] | [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=9 Topo] | [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=6 1935] [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=4 1940] | [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=3 3D buildings] [http://old.govmap.gov.il/viewer.asp alt.] |} ===City specific=== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | City ! scope="col" | Map ! scope="col" | Historical ! scope="col" | Other |- ! rowspan="3" scope="row" style="font-weight:normal; text-align:left;" | govmap | Haifa | | [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=8 1919] | |- | Jerusalem | | [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=7 1926] | |- | Tel Aviv | | [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=5 1930] | |} </div> </div> <div id="GEOTEMPLATE-JP"> ==Japan== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Geographical Survey Institute/CyberJapan | | | [http://maps.gsi.go.jp/#15/{latdegdec}/{londegdec} Topo/Aerial], [http://cyberjapandata.gsi.go.jp/3d/site/index.html?did=std&lat={latdegdec}&lon={londegdec}&z=14 WebGL 3D] |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapion | [http://www.mapion.co.jp/m2/{latdegdec},{londegdec},{osmzoom} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | MapFan Web | [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://www.mapfan.com/m.cgi?MAP={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}}} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Yahoo! Japan | [http://map.yahoo.co.jp/maps?lat={latdegdec}&lon={londegdec}&z={osmzoom} Map] | [http://map.yahoo.co.jp/maps?lat={latdegdec}&lon={londegdec}&z={osmzoom}&mode=aero Aero] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Goo | [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://map.goo.ne.jp/map.php?MAP={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}}} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Its-mo Guide | [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://www.its-mo.com/z.htm?m={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}&l=8}} Map] | | |} </div> <div id="GEOTEMPLATE-KZ"> ==Kazakhstan== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite |- ! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki | | [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel | [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map] | |} </div> <div id="GEOTEMPLATE-MO"> ==Macao== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapa On-line de Macau | [https://webmap.gis.gov.mo/InetGIS/port/index.html Map] (Indirect link) |} </div> <div id="GEOTEMPLATE-SG"> ==Singapore== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Gothere | [http://gothere.sg/maps#q:@{latdegdec}%2C%20{londegdec}: Map] |} </div> <div id="GEOTEMPLATE-KO"> ==South Korea== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" |Naver Map | [https://map.naver.com/?lat={latdegdec}&lng={londegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" |Kakao Map | [https://map.kakao.com/link/map/{latdegdec},{londegdec} Map] |} </div> <div id="GEOTEMPLATE-TW"> ==Taiwan== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Urmap | [http://www.urmap.com/map?center={latdegdec},{londegdec}&zoom={osmzoom} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Taiwan Map Service | [https://maps.nlsc.gov.tw/T09E/mapshow.action?lat={latdegdec}?lon={londegdec} Map] |} </div> <div id="GEOTEMPLATE-TH"> ==Thailand== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Longdo Map | [https://map.longdo.com/?locale=en&search={latdegdec},{londegdec} Map] |} </div> =South America= No specific resources added yet. =Africa= <div id="GEOTEMPLATE-NA"> ==Namibia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | South African Chief Directorate: Surveys and Mapping 1:50k Topographic (1970s/1980s) | [https://namibia-topo.openstreetmap.org.za/#zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Map] (via OpenStreetMap South Africa) |} </div> <div id="GEOTEMPLATE-ZA"> ==South Africa== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | [[Chief Directorate: National Geo-spatial Information]] aerial | [http://aerial.openstreetmap.org.za/?lon={londegdec}&lat={latdegdec}&zoom={osmzoom} Aerial Imagery] (via OpenStreetMap South Africa) |} </div> <div id="GEOTEMPLATE-AQ"><div id="GEOTEMPLATE-XS"><!--XS: Wiki assigned code elements per [[de:Vorlage:Coordinate#Ozeane]] for Southern Ocean --> =Antarctica= {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Antarctic Digital Database Map Viewer | [https://www.add.scar.org/ Map] (Indirect link) |} </div></div> <div id="GEOTEMPLATE-XN"> =Arctic= {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Arctic Web Map | [https://webmap.arcticconnect.ca/index.html#ac_3573/{osmzoom}/{latdegdec}/{londegdec} Map] |} </div> <div id="GEOTEMPLATE-XZ"> =International waters (XZ)= {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Open Sea Map | [https://map.openseamap.org/?zoom=14&lat={latdegdec}&lon={londegdec} Map] |} </div> <!-- End region-specific --> </div><noinclude> {{documentation|Template:GeoTemplate/doc}} </noinclude> f660ba8db3681adb40f06e1a48d7a6ab1c479523 Module:String 828 17 2998 998 2023-10-25T18:17:50Z wikipedia>Trappist the monk 0 Scribunto text/plain --[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ) local s = new_args['s'] or '' return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The first index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ) local s = new_args['s'] or '' local i = tonumber( new_args['i'] ) or 1 local j = tonumber( new_args['j'] ) or -1 local len = mw.ustring.len( s ) -- Convert negatives for range checking if i < 0 then i = len + i + 1 end if j < 0 then j = len + j + 1 end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ) end if j < i then return str._error( 'String subset indices out of order' ) end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ _match This function returns a substring from the source string that matches a specified pattern. It is exported for use in other modules Usage: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain_flag, nomatch ) if s == '' then return str._error( 'Target string is empty' ) end if pattern == '' then return str._error( 'Pattern string is empty' ) end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ) end if match_index == 0 then return str._error( 'Match index is out of range' ) end if plain_flag then pattern = str._escapePattern( pattern ) end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ) end local iterator = mw.ustring.gmatch(s, pattern) if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1 if match_index == 0 then result = w break end end else -- Reverse search local result_table = {} local count = 1 for w in iterator do result_table[count] = w count = count + 1 end result = result_table[ count + match_index ] end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ) else return nomatch end else return result end end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} OR {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ) local s = new_args['s'] or '' local start = tonumber( new_args['start'] ) or 1 local plain_flag = str._getBoolean( new_args['plain'] or false ) local pattern = new_args['pattern'] or '' local match_index = math.floor( tonumber(new_args['match']) or 1 ) local nomatch = new_args['nomatch'] return str._match( s, pattern, start, match_index, plain_flag, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ) local target_str = new_args['target'] or '' local pos = tonumber( new_args['pos'] ) or 0 if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ) end return mw.ustring.sub( target_str, pos, pos ) end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ) local source_str = new_args['source'] or '' local target_str = new_args['target'] or '' if target_str == '' then return 1 end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['target'] or '' local start_pos = tonumber(new_args['start']) or 1 local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return 0 end plain = str._getBoolean( plain ) local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['pattern'] or '' local replace = new_args['replace'] or '' local count = tonumber( new_args['count'] ) local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return source_str end plain = str._getBoolean( plain ) if plain then pattern = str._escapePattern( pattern ) replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end local result if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ) else result = mw.ustring.gsub( source_str, pattern, replace ) end return result end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ) end local result = str._escapePattern( pattern_str ) return result end --[[ count This function counts the number of occurrences of one string in another. ]] function str.count(frame) local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = str._getBoolean(args.plain or true) if plain then pattern = str._escapePattern(pattern) end local _, count = mw.ustring.gsub(source, pattern, '') return count end --[[ endswith This function determines whether a string ends with another string. ]] function str.endswith(frame) local args = str._getParameters(frame.args, {'source', 'pattern'}) local source = args.source or '' local pattern = args.pattern or '' if pattern == '' then -- All strings end with the empty string. return "yes" end if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then return "yes" else return "" end end --[[ join Join all non empty arguments together; the first argument is the separator. Usage: {{#invoke:String|join|sep|one|two|three}} ]] function str.join(frame) local args = {} local sep for _, v in ipairs( frame.args ) do if sep then if v ~= '' then table.insert(args, v) end else sep = v end end return table.concat( args, sep or '' ) end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {} local index = 1 local value for _, arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index] index = index + 1 end new_args[arg] = value end return new_args end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame() local error_category = frame.args.error_category or 'Errors reported by Module String' local ignore_errors = frame.args.ignore_errors or false local no_category = frame.args.no_category or false if str._getBoolean(ignore_errors) then return '' end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>' if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str end return error_str end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false else boolean_value = true end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else error( 'No boolean value found' ) end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ) end return str 2ad0905c56ef4955950b75a8f00974fe82aed5e4 Module:Wd 828 1048 3279 2295 2023-10-26T14:36:14Z wikipedia>Jonesey95 0 update version number per talk page Scribunto text/plain -- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]]. require("strict") local p = {} local arg = ... local i18n local function loadI18n(aliasesP, frame) local title if frame then -- current module invoked by page/template, get its title from frame title = frame:getTitle() else -- current module included by other module, get its title from ... title = arg end if not i18n then i18n = require(title .. "/i18n").init(aliasesP) end end p.claimCommands = { property = "property", properties = "properties", qualifier = "qualifier", qualifiers = "qualifiers", reference = "reference", references = "references" } p.generalCommands = { label = "label", title = "title", description = "description", alias = "alias", aliases = "aliases", badge = "badge", badges = "badges" } p.flags = { linked = "linked", short = "short", raw = "raw", multilanguage = "multilanguage", unit = "unit", ------------- preferred = "preferred", normal = "normal", deprecated = "deprecated", best = "best", future = "future", current = "current", former = "former", edit = "edit", editAtEnd = "edit@end", mdy = "mdy", single = "single", sourced = "sourced" } p.args = { eid = "eid", page = "page", date = "date" } local aliasesP = { coord = "P625", ----------------------- image = "P18", author = "P50", authorNameString = "P2093", publisher = "P123", importedFrom = "P143", wikimediaImportURL = "P4656", statedIn = "P248", pages = "P304", language = "P407", hasPart = "P527", publicationDate = "P577", startTime = "P580", endTime = "P582", chapter = "P792", retrieved = "P813", referenceURL = "P854", sectionVerseOrParagraph = "P958", archiveURL = "P1065", title = "P1476", formatterURL = "P1630", quote = "P1683", shortName = "P1813", definingFormula = "P2534", archiveDate = "P2960", inferredFrom = "P3452", typeOfReference = "P3865", column = "P3903", subjectNamedAs = "P1810", wikidataProperty = "P1687", publishedIn = "P1433" } local aliasesQ = { percentage = "Q11229", prolepticJulianCalendar = "Q1985786", citeWeb = "Q5637226", citeQ = "Q22321052" } local parameters = { property = "%p", qualifier = "%q", reference = "%r", alias = "%a", badge = "%b", separator = "%s", general = "%x" } local formats = { property = "%p[%s][%r]", qualifier = "%q[%s][%r]", reference = "%r", propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]", alias = "%a[%s]", badge = "%b[%s]" } local hookNames = { -- {level_1, level_2} [parameters.property] = {"getProperty"}, [parameters.reference] = {"getReferences", "getReference"}, [parameters.qualifier] = {"getAllQualifiers"}, [parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"}, [parameters.alias] = {"getAlias"}, [parameters.badge] = {"getBadge"} } -- default value objects, should NOT be mutated but instead copied local defaultSeparators = { ["sep"] = {" "}, ["sep%s"] = {","}, ["sep%q"] = {"; "}, ["sep%q\\d"] = {", "}, ["sep%r"] = nil, -- none ["punc"] = nil -- none } local rankTable = { ["preferred"] = 1, ["normal"] = 2, ["deprecated"] = 3 } local function replaceAlias(id) if aliasesP[id] then id = aliasesP[id] end return id end local function errorText(code, param) local text = i18n["errors"][code] if param then text = mw.ustring.gsub(text, "$1", param) end return text end local function throwError(errorMessage, param) error(errorText(errorMessage, param)) end local function replaceDecimalMark(num) return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1) end local function padZeros(num, numDigits) local numZeros local negative = false if num < 0 then negative = true num = num * -1 end num = tostring(num) numZeros = numDigits - num:len() for _ = 1, numZeros do num = "0"..num end if negative then num = "-"..num end return num end local function replaceSpecialChar(chr) if chr == '_' then -- replace underscores with spaces return ' ' else return chr end end local function replaceSpecialChars(str) local chr local esc = false local strOut = "" for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then esc = true else strOut = strOut .. replaceSpecialChar(chr) end else strOut = strOut .. chr esc = false end end return strOut end local function buildWikilink(target, label) if not label or target == label then return "[[" .. target .. "]]" else return "[[" .. target .. "|" .. label .. "]]" end end -- used to make frame.args mutable, to replace #frame.args (which is always 0) -- with the actual amount and to simply copy tables local function copyTable(tIn) if not tIn then return nil end local tOut = {} for i, v in pairs(tIn) do tOut[i] = v end return tOut end -- used to merge output arrays together; -- note that it currently mutates the first input array local function mergeArrays(a1, a2) for i = 1, #a2 do a1[#a1 + 1] = a2[i] end return a1 end local function split(str, del) local out = {} local i, j = str:find(del) if i and j then out[1] = str:sub(1, i - 1) out[2] = str:sub(j + 1) else out[1] = str end return out end local function parseWikidataURL(url) local id if url:match('^http[s]?://') then id = split(url, "Q") if id[2] then return "Q" .. id[2] end end return nil end local function parseDate(dateStr, precision) precision = precision or "d" local i, j, index, ptr local parts = {nil, nil, nil} if dateStr == nil then return parts[1], parts[2], parts[3] -- year, month, day end -- 'T' for snak values, '/' for outputs with '/Julian' attached i, j = dateStr:find("[T/]") if i then dateStr = dateStr:sub(1, i-1) end local from = 1 if dateStr:sub(1,1) == "-" then -- this is a negative number, look further ahead from = 2 end index = 1 ptr = 1 i, j = dateStr:find("-", from) if i then -- year parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error if parts[index] == -0 then parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead end if precision == "y" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 i, j = dateStr:find("-", ptr) if i then -- month parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) if precision == "m" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 end end if dateStr:sub(ptr) ~= "" then -- day if we have month, month if we have year, or year parts[index] = tonumber(dateStr:sub(ptr), 10) end return parts[1], parts[2], parts[3] -- year, month, day end local function datePrecedesDate(aY, aM, aD, bY, bM, bD) if aY == nil or bY == nil then return nil end aM = aM or 1 aD = aD or 1 bM = bM or 1 bD = bD or 1 if aY < bY then return true end if aY > bY then return false end if aM < bM then return true end if aM > bM then return false end if aD < bD then return true end return false end local function getHookName(param, index) if hookNames[param] then return hookNames[param][index] elseif param:len() > 2 then return hookNames[param:sub(1, 2).."\\d"][index] else return nil end end local function alwaysTrue() return true end -- The following function parses a format string. -- -- The example below shows how a parsed string is structured in memory. -- Variables other than 'str' and 'child' are left out for clarity's sake. -- -- Example: -- "A %p B [%s[%q1]] C [%r] D" -- -- Structure: -- [ -- { -- str = "A " -- }, -- { -- str = "%p" -- }, -- { -- str = " B ", -- child = -- [ -- { -- str = "%s", -- child = -- [ -- { -- str = "%q1" -- } -- ] -- } -- ] -- }, -- { -- str = " C ", -- child = -- [ -- { -- str = "%r" -- } -- ] -- }, -- { -- str = " D" -- } -- ] -- local function parseFormat(str) local chr, esc, param, root, cur, prev, new local params = {} local function newObject(array) local obj = {} -- new object obj.str = "" array[#array + 1] = obj -- array{object} obj.parent = array return obj end local function endParam() if param > 0 then if cur.str ~= "" then cur.str = "%"..cur.str cur.param = true params[cur.str] = true cur.parent.req[cur.str] = true prev = cur cur = newObject(cur.parent) end param = 0 end end root = {} -- array root.req = {} cur = newObject(root) prev = nil esc = false param = 0 for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then endParam() esc = true elseif chr == '%' then endParam() if cur.str ~= "" then cur = newObject(cur.parent) end param = 2 elseif chr == '[' then endParam() if prev and cur.str == "" then table.remove(cur.parent) cur = prev end cur.child = {} -- new array cur.child.req = {} cur.child.parent = cur cur = newObject(cur.child) elseif chr == ']' then endParam() if cur.parent.parent then new = newObject(cur.parent.parent.parent) if cur.str == "" then table.remove(cur.parent) end cur = new end else if param > 1 then param = param - 1 elseif param == 1 then if not chr:match('%d') then endParam() end end cur.str = cur.str .. replaceSpecialChar(chr) end else cur.str = cur.str .. chr esc = false end prev = nil end endParam() -- make sure that at least one required parameter has been defined if not next(root.req) then throwError("missing-required-parameter") end -- make sure that the separator parameter "%s" is not amongst the required parameters if root.req[parameters.separator] then throwError("extra-required-parameter", parameters.separator) end return root, params end local function sortOnRank(claims) local rankPos local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default) local sorted = {} for _, v in ipairs(claims) do rankPos = rankTable[v.rank] or 4 ranks[rankPos][#ranks[rankPos] + 1] = v end sorted = ranks[1] sorted = mergeArrays(sorted, ranks[2]) sorted = mergeArrays(sorted, ranks[3]) return sorted end local Config = {} -- allows for recursive calls function Config:new() local cfg = {} setmetatable(cfg, self) self.__index = self cfg.separators = { -- single value objects wrapped in arrays so that we can pass by reference ["sep"] = {copyTable(defaultSeparators["sep"])}, ["sep%s"] = {copyTable(defaultSeparators["sep%s"])}, ["sep%q"] = {copyTable(defaultSeparators["sep%q"])}, ["sep%r"] = {copyTable(defaultSeparators["sep%r"])}, ["punc"] = {copyTable(defaultSeparators["punc"])} } cfg.entity = nil cfg.entityID = nil cfg.propertyID = nil cfg.propertyValue = nil cfg.qualifierIDs = {} cfg.qualifierIDsAndValues = {} cfg.bestRank = true cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false cfg.foundRank = #cfg.ranks cfg.flagBest = false cfg.flagRank = false cfg.periods = {true, true, true} -- future = true, current = true, former = true cfg.flagPeriod = false cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day} cfg.mdyDate = false cfg.singleClaim = false cfg.sourcedOnly = false cfg.editable = false cfg.editAtEnd = false cfg.inSitelinks = false cfg.langCode = mw.language.getContentLanguage().code cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode) cfg.langObj = mw.language.new(cfg.langCode) cfg.siteID = mw.wikibase.getGlobalSiteId() cfg.states = {} cfg.states.qualifiersCount = 0 cfg.curState = nil cfg.prefetchedRefs = nil return cfg end local State = {} function State:new(cfg, type) local stt = {} setmetatable(stt, self) self.__index = self stt.conf = cfg stt.type = type stt.results = {} stt.parsedFormat = {} stt.separator = {} stt.movSeparator = {} stt.puncMark = {} stt.linked = false stt.rawValue = false stt.shortName = false stt.anyLanguage = false stt.unitOnly = false stt.singleValue = false return stt end -- if id == nil then item connected to current page is used function Config:getLabel(id, raw, link, short) local label = nil local prefix, title= "", nil if not id then id = mw.wikibase.getEntityIdForCurrentPage() if not id then return "" end end id = id:upper() -- just to be sure if raw then -- check if given id actually exists if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then label = id end prefix, title = "d:Special:EntityPage/", label -- may be nil else -- try short name first if requested if short then label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name if label == "" then label = nil end end -- get label if not label then label = mw.wikibase.getLabelByLang(id, self.langCode) -- XXX: should use fallback labels? end end if not label then label = "" elseif link then -- build a link if requested if not title then if id:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(id) elseif id:sub(1,1) == "P" then -- properties have no sitelink, link to Wikidata instead prefix, title = "d:Special:EntityPage/", id end end label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup if title then label = buildWikilink(prefix .. title, label) end end return label end function Config:getEditIcon() local value = "" local prefix = "" local front = "&nbsp;" local back = "" if self.entityID:sub(1,1) == "P" then prefix = "Property:" end if self.editAtEnd then front = '<span style="float:' if self.langObj:isRTL() then front = front .. 'left' else front = front .. 'right' end front = front .. '">' back = '</span>' end value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode if self.propertyID then value = value .. "#" .. self.propertyID elseif self.inSitelinks then value = value .. "#sitelinks-wikipedia" end value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]" return front .. value .. back end -- used to create the final output string when it's all done, so that for references the -- function extensionTag("ref", ...) is only called when they really ended up in the final output function Config:concatValues(valuesArray) local outString = "" local j, skip for i = 1, #valuesArray do -- check if this is a reference if valuesArray[i].refHash then j = i - 1 skip = false -- skip this reference if it is part of a continuous row of references that already contains the exact same reference while valuesArray[j] and valuesArray[j].refHash do if valuesArray[i].refHash == valuesArray[j].refHash then skip = true break end j = j - 1 end if not skip then -- add <ref> tag with the reference's hash as its name (to deduplicate references) outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash}) end else outString = outString .. valuesArray[i][1] end end return outString end function Config:convertUnit(unit, raw, link, short, unitOnly) local space = " " local label = "" local itemID if unit == "" or unit == "1" then return nil end if unitOnly then space = "" end itemID = parseWikidataURL(unit) if itemID then if itemID == aliasesQ.percentage then return "%" else label = self:getLabel(itemID, raw, link, short) if label ~= "" then return space .. label end end end return "" end function State:getValue(snak) return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2)) end function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type) if snak.snaktype == 'value' then local datatype = snak.datavalue.type local subtype = snak.datatype local datavalue = snak.datavalue.value if datatype == 'string' then if subtype == 'url' and link then -- create link explicitly if raw then -- will render as a linked number like [1] return "[" .. datavalue .. "]" else return "[" .. datavalue .. " " .. datavalue .. "]" end elseif subtype == 'commonsMedia' then if link then return buildWikilink("c:File:" .. datavalue, datavalue) elseif not raw then return "[[File:" .. datavalue .. "]]" else return datavalue end elseif subtype == 'geo-shape' and link then return buildWikilink("c:" .. datavalue, datavalue) elseif subtype == 'math' and not raw then local attribute = nil if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then attribute = {qid = self.entityID} end return mw.getCurrentFrame():extensionTag("math", datavalue, attribute) elseif subtype == 'external-id' and link then local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL if url ~= "" then url = mw.ustring.gsub(url, "$1", datavalue) return "[" .. url .. " " .. datavalue .. "]" else return datavalue end else return datavalue end elseif datatype == 'monolingualtext' then if anyLang or datavalue['language'] == self.langCode then return datavalue['text'] else return nil end elseif datatype == 'quantity' then local value = "" local unit if not unitOnly then -- get value and strip + signs from front value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1") if raw then return value end -- replace decimal mark based on locale value = replaceDecimalMark(value) -- add delimiters for readability value = i18n.addDelimiters(value) end unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly) if unit then value = value .. unit end return value elseif datatype == 'time' then local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr local yFactor = 1 local sign = 1 local prefix = "" local suffix = "" local mayAddCalendar = false local calendar = "" local precision = datavalue['precision'] if precision == 11 then p = "d" elseif precision == 10 then p = "m" else p = "y" yFactor = 10^(9-precision) end y, m, d = parseDate(datavalue['time'], p) if y < 0 then sign = -1 y = y * sign end -- if precision is tens/hundreds/thousands/millions/billions of years if precision <= 8 then yDiv = y / yFactor -- if precision is tens/hundreds/thousands of years if precision >= 6 then mayAddCalendar = true if precision <= 7 then -- round centuries/millenniums up (e.g. 20th century or 3rd millennium) yRound = math.ceil(yDiv) if not raw then if precision == 6 then suffix = i18n['datetime']['suffixes']['millennium'] else suffix = i18n['datetime']['suffixes']['century'] end suffix = i18n.getOrdinalSuffix(yRound) .. suffix else -- if not verbose, take the first year of the century/millennium -- (e.g. 1901 for 20th century or 2001 for 3rd millennium) yRound = (yRound - 1) * yFactor + 1 end else -- precision == 8 -- round decades down (e.g. 2010s) yRound = math.floor(yDiv) * yFactor if not raw then prefix = i18n['datetime']['prefixes']['decade-period'] suffix = i18n['datetime']['suffixes']['decade-period'] end end if raw and sign < 0 then -- if BCE then compensate for "counting backwards" -- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE) yRound = yRound + yFactor - 1 end else local yReFactor, yReDiv, yReRound -- round to nearest for tens of thousands of years or more yRound = math.floor(yDiv + 0.5) if yRound == 0 then if precision <= 2 and y ~= 0 then yReFactor = 1e6 yReDiv = y / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years only if we have a whole number of them precision = 3 yFactor = yReFactor yRound = yReRound end end if yRound == 0 then -- otherwise, take the unrounded (original) number of years precision = 5 yFactor = 1 yRound = y mayAddCalendar = true end end if precision >= 1 and y ~= 0 then yFull = yRound * yFactor yReFactor = 1e9 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to billions of years if we're in that range precision = 0 yFactor = yReFactor yRound = yReRound else yReFactor = 1e6 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years if we're in that range precision = 3 yFactor = yReFactor yRound = yReRound end end end if not raw then if precision == 3 then suffix = i18n['datetime']['suffixes']['million-years'] elseif precision == 0 then suffix = i18n['datetime']['suffixes']['billion-years'] else yRound = yRound * yFactor if yRound == 1 then suffix = i18n['datetime']['suffixes']['year'] else suffix = i18n['datetime']['suffixes']['years'] end end else yRound = yRound * yFactor end end else yRound = y mayAddCalendar = true end if mayAddCalendar then calendarID = parseWikidataURL(datavalue['calendarmodel']) if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then if not raw then if link then calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")" else calendar = " ("..i18n['datetime']['julian']..")" end else calendar = "/"..i18n['datetime']['julian'] end end end if not raw then local ce = nil if sign < 0 then ce = i18n['datetime']['BCE'] elseif precision <= 5 then ce = i18n['datetime']['CE'] end if ce then if link then ce = buildWikilink(i18n['datetime']['common-era'], ce) end suffix = suffix .. " " .. ce end value = tostring(yRound) if m then dateStr = self.langObj:formatDate("F", "1-"..m.."-1") if d then if self.mdyDate then dateStr = dateStr .. " " .. d .. "," else dateStr = d .. " " .. dateStr end end value = dateStr .. " " .. value end value = prefix .. value .. suffix .. calendar else value = padZeros(yRound * sign, 4) if m then value = value .. "-" .. padZeros(m, 2) if d then value = value .. "-" .. padZeros(d, 2) end end value = value .. calendar end return value elseif datatype == 'globecoordinate' then -- logic from https://github.com/DataValues/Geo (v4.0.1) local precision, unitsPerDegree, numDigits, strFormat, value, globe local latitude, latConv, latValue, latLink local longitude, lonConv, lonValue, lonLink local latDirection, latDirectionN, latDirectionS, latDirectionEN local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN local degSymbol, minSymbol, secSymbol, separator local latDegrees = nil local latMinutes = nil local latSeconds = nil local lonDegrees = nil local lonMinutes = nil local lonSeconds = nil local latDegSym = "" local latMinSym = "" local latSecSym = "" local lonDegSym = "" local lonMinSym = "" local lonSecSym = "" local latDirectionEN_N = "N" local latDirectionEN_S = "S" local lonDirectionEN_E = "E" local lonDirectionEN_W = "W" if not raw then latDirectionN = i18n['coord']['latitude-north'] latDirectionS = i18n['coord']['latitude-south'] lonDirectionE = i18n['coord']['longitude-east'] lonDirectionW = i18n['coord']['longitude-west'] degSymbol = i18n['coord']['degrees'] minSymbol = i18n['coord']['minutes'] secSymbol = i18n['coord']['seconds'] separator = i18n['coord']['separator'] else latDirectionN = latDirectionEN_N latDirectionS = latDirectionEN_S lonDirectionE = lonDirectionEN_E lonDirectionW = lonDirectionEN_W degSymbol = "/" minSymbol = "/" secSymbol = "/" separator = "/" end latitude = datavalue['latitude'] longitude = datavalue['longitude'] if latitude < 0 then latDirection = latDirectionS latDirectionEN = latDirectionEN_S latitude = math.abs(latitude) else latDirection = latDirectionN latDirectionEN = latDirectionEN_N end if longitude < 0 then lonDirection = lonDirectionW lonDirectionEN = lonDirectionEN_W longitude = math.abs(longitude) else lonDirection = lonDirectionE lonDirectionEN = lonDirectionEN_E end precision = datavalue['precision'] if not precision or precision <= 0 then precision = 1 / 3600 -- precision not set (correctly), set to arcsecond end -- remove insignificant detail latitude = math.floor(latitude / precision + 0.5) * precision longitude = math.floor(longitude / precision + 0.5) * precision if precision >= 1 - (1 / 60) and precision < 1 then precision = 1 elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then precision = 1 / 60 end if precision >= 1 then unitsPerDegree = 1 elseif precision >= (1 / 60) then unitsPerDegree = 60 else unitsPerDegree = 3600 end numDigits = math.ceil(-math.log10(unitsPerDegree * precision)) if numDigits <= 0 then numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead end strFormat = "%." .. numDigits .. "f" if precision >= 1 then latDegrees = strFormat:format(latitude) lonDegrees = strFormat:format(longitude) if not raw then latDegSym = replaceDecimalMark(latDegrees) .. degSymbol lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol else latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol end else latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits if precision >= (1 / 60) then latMinutes = latConv lonMinutes = lonConv else latSeconds = latConv lonSeconds = lonConv latMinutes = math.floor(latSeconds / 60) lonMinutes = math.floor(lonSeconds / 60) latSeconds = strFormat:format(latSeconds - (latMinutes * 60)) lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60)) if not raw then latSecSym = replaceDecimalMark(latSeconds) .. secSymbol lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol else latSecSym = latSeconds .. secSymbol lonSecSym = lonSeconds .. secSymbol end end latDegrees = math.floor(latMinutes / 60) lonDegrees = math.floor(lonMinutes / 60) latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol latMinutes = latMinutes - (latDegrees * 60) lonMinutes = lonMinutes - (lonDegrees * 60) if precision >= (1 / 60) then latMinutes = strFormat:format(latMinutes) lonMinutes = strFormat:format(lonMinutes) if not raw then latMinSym = replaceDecimalMark(latMinutes) .. minSymbol lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end end latValue = latDegSym .. latMinSym .. latSecSym .. latDirection lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection value = latValue .. separator .. lonValue if link then globe = parseWikidataURL(datavalue['globe']) if globe then globe = mw.wikibase.getLabelByLang(globe, "en"):lower() else globe = "earth" end latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_") lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_") value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."&params="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]" end return value elseif datatype == 'wikibase-entityid' then local label local itemID = datavalue['numeric-id'] if subtype == 'wikibase-item' then itemID = "Q" .. itemID elseif subtype == 'wikibase-property' then itemID = "P" .. itemID else return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>' end label = self:getLabel(itemID, raw, link, short) if label == "" then label = nil end return label else return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>' end elseif snak.snaktype == 'somevalue' and not noSpecial then if raw then return " " -- single space represents 'somevalue' else return i18n['values']['unknown'] end elseif snak.snaktype == 'novalue' and not noSpecial then if raw then return "" -- empty string represents 'novalue' else return i18n['values']['none'] end else return nil end end function Config:getSingleRawQualifier(claim, qualifierID) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end if qualifiers and qualifiers[1] then return self:getValue(qualifiers[1], true) -- raw = true else return nil end end function Config:snakEqualsValue(snak, value) local snakValue = self:getValue(snak, true) -- raw = true if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end return snakValue == value end function Config:setRank(rank) local rankPos if rank == p.flags.best then self.bestRank = true self.flagBest = true -- mark that 'best' flag was given return end if rank:sub(1,9) == p.flags.preferred then rankPos = 1 elseif rank:sub(1,6) == p.flags.normal then rankPos = 2 elseif rank:sub(1,10) == p.flags.deprecated then rankPos = 3 else return end -- one of the rank flags was given, check if another one was given before if not self.flagRank then self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before self.flagRank = true -- mark that a rank flag was given end if rank:sub(-1) == "+" then for i = rankPos, 1, -1 do self.ranks[i] = true end elseif rank:sub(-1) == "-" then for i = rankPos, #self.ranks do self.ranks[i] = true end else self.ranks[rankPos] = true end end function Config:setPeriod(period) local periodPos if period == p.flags.future then periodPos = 1 elseif period == p.flags.current then periodPos = 2 elseif period == p.flags.former then periodPos = 3 else return end -- one of the period flags was given, check if another one was given before if not self.flagPeriod then self.periods = {false, false, false} -- no other period flag given before, so unset periods self.flagPeriod = true -- mark that a period flag was given end self.periods[periodPos] = true end function Config:qualifierMatches(claim, id, value) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[id] end if qualifiers then for _, v in pairs(qualifiers) do if self:snakEqualsValue(v, value) then return true end end elseif value == "" then -- if the qualifier is not present then treat it the same as the special value 'novalue' return true end return false end function Config:rankMatches(rankPos) if self.bestRank then return (self.ranks[rankPos] and self.foundRank >= rankPos) else return self.ranks[rankPos] end end function Config:timeMatches(claim) local startTime = nil local startTimeY = nil local startTimeM = nil local startTimeD = nil local endTime = nil local endTimeY = nil local endTimeM = nil local endTimeD = nil if self.periods[1] and self.periods[2] and self.periods[3] then -- any time return true end startTime = self:getSingleRawQualifier(claim, aliasesP.startTime) if startTime and startTime ~= "" and startTime ~= " " then startTimeY, startTimeM, startTimeD = parseDate(startTime) end endTime = self:getSingleRawQualifier(claim, aliasesP.endTime) if endTime and endTime ~= "" and endTime ~= " " then endTimeY, endTimeM, endTimeD = parseDate(endTime) end if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then -- invalidate end time if it precedes start time endTimeY = nil endTimeM = nil endTimeD = nil end if self.periods[1] then -- future if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then return true end end if self.periods[2] then -- current if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and (endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then return true end end if self.periods[3] then -- former if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then return true end end return false end function Config:processFlag(flag) if not flag then return false end if flag == p.flags.linked then self.curState.linked = true return true elseif flag == p.flags.raw then self.curState.rawValue = true if self.curState == self.states[parameters.reference] then -- raw reference values end with periods and require a separator (other than none) self.separators["sep%r"][1] = {" "} end return true elseif flag == p.flags.short then self.curState.shortName = true return true elseif flag == p.flags.multilanguage then self.curState.anyLanguage = true return true elseif flag == p.flags.unit then self.curState.unitOnly = true return true elseif flag == p.flags.mdy then self.mdyDate = true return true elseif flag == p.flags.single then self.singleClaim = true return true elseif flag == p.flags.sourced then self.sourcedOnly = true return true elseif flag == p.flags.edit then self.editable = true return true elseif flag == p.flags.editAtEnd then self.editable = true self.editAtEnd = true return true elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then self:setRank(flag) return true elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then self:setPeriod(flag) return true elseif flag == "" then -- ignore empty flags and carry on return true else return false end end function Config:processFlagOrCommand(flag) local param = "" if not flag then return false end if flag == p.claimCommands.property or flag == p.claimCommands.properties then param = parameters.property elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then self.states.qualifiersCount = self.states.qualifiersCount + 1 param = parameters.qualifier .. self.states.qualifiersCount self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])} elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then param = parameters.reference else return self:processFlag(flag) end if self.states[param] then return false end -- create a new state for each command self.states[param] = State:new(self, param) -- use "%x" as the general parameter name self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p" -- set the separator self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then self.states[param].singleValue = true end self.curState = self.states[param] return true end function Config:processSeparators(args) local sep for i, v in pairs(self.separators) do if args[i] then sep = replaceSpecialChars(args[i]) if sep ~= "" then self.separators[i][1] = {sep} else self.separators[i][1] = nil end end end end function Config:setFormatAndSeparators(state, parsedFormat) state.parsedFormat = parsedFormat state.separator = self.separators["sep"] state.movSeparator = self.separators["sep"..parameters.separator] state.puncMark = self.separators["punc"] end -- determines if a claim has references by prefetching them from the claim using getReferences, -- which applies some filtering that determines if a reference is actually returned, -- and caches the references for later use function State:isSourced(claim) self.conf.prefetchedRefs = self:getReferences(claim) return (#self.conf.prefetchedRefs > 0) end function State:resetCaches() -- any prefetched references of the previous claim must not be used self.conf.prefetchedRefs = nil end function State:claimMatches(claim) local matches, rankPos -- first of all, reset any cached values used for the previous claim self:resetCaches() -- if a property value was given, check if it matches the claim's property value if self.conf.propertyValue then matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue) else matches = true end -- if any qualifier values were given, check if each matches one of the claim's qualifier values for i, v in pairs(self.conf.qualifierIDsAndValues) do matches = (matches and self.conf:qualifierMatches(claim, i, v)) end -- check if the claim's rank and time period match rankPos = rankTable[claim.rank] or 4 matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim)) -- if only claims with references must be returned, check if this one has any if self.conf.sourcedOnly then matches = (matches and self:isSourced(claim)) -- prefetches and caches references end return matches, rankPos end function State:out() local result -- collection of arrays with value objects local valuesArray -- array with value objects local sep = nil -- value object local out = {} -- array with value objects local function walk(formatTable, result) local valuesArray = {} -- array with value objects for i, v in pairs(formatTable.req) do if not result[i] or not result[i][1] then -- we've got no result for a parameter that is required on this level, -- so skip this level (and its children) by returning an empty result return {} end end for _, v in ipairs(formatTable) do if v.param then valuesArray = mergeArrays(valuesArray, result[v.str]) elseif v.str ~= "" then valuesArray[#valuesArray + 1] = {v.str} end if v.child then valuesArray = mergeArrays(valuesArray, walk(v.child, result)) end end return valuesArray end -- iterate through the results from back to front, so that we know when to add separators for i = #self.results, 1, -1 do result = self.results[i] -- if there is already some output, then add the separators if #out > 0 then sep = self.separator[1] -- fixed separator result[parameters.separator] = {self.movSeparator[1]} -- movable separator else sep = nil result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark end valuesArray = walk(self.parsedFormat, result) if #valuesArray > 0 then if sep then valuesArray[#valuesArray + 1] = sep end out = mergeArrays(valuesArray, out) end end -- reset state before next iteration self.results = {} return out end -- level 1 hook function State:getProperty(claim) local value = {self:getValue(claim.mainsnak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getQualifiers(claim, param) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end if qualifiers then -- iterate through claim's qualifier statements to collect their values; -- return array with multiple value objects return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getQualifier(snak) local value = {self:getValue(snak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getAllQualifiers(claim, param, result, hooks) local out = {} -- array with value objects local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object -- iterate through the output of the separate "qualifier(s)" commands for i = 1, self.conf.states.qualifiersCount do -- if a hook has not been called yet, call it now if not result[parameters.qualifier..i] then self:callHook(parameters.qualifier..i, hooks, claim, result) end -- if there is output for this particular "qualifier(s)" command, then add it if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then -- if there is already some output, then add the separator if #out > 0 and sep then out[#out + 1] = sep end out = mergeArrays(out, result[parameters.qualifier..i]) end end return out end -- level 1 hook function State:getReferences(claim) if self.conf.prefetchedRefs then -- return references that have been prefetched by isSourced return self.conf.prefetchedRefs end if claim.references then -- iterate through claim's reference statements to collect their values; -- return array with multiple value objects return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getReference(statement) local key, citeWeb, citeQ, label local params = {} local citeParams = {['web'] = {}, ['q'] = {}} local citeMismatch = {} local useCite = nil local useParams = nil local value = "" local ref = {} local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved local numAuthorParameters = 0 local numAuthorNameStringParameters = 0 local tempLink local additionalRefProperties = {} -- will hold properties of the reference which are not in statement.snaks, namely backup title from "subject named as" and URL from an external ID local wikidataPropertiesOfSource -- will contain "Wikidata property" properties of the item in stated in, if any local version = 5 -- increment this each time the below logic is changed to avoid conflict errors if statement.snaks then -- don't include "imported from", which is added by a bot if statement.snaks[aliasesP.importedFrom] then statement.snaks[aliasesP.importedFrom] = nil end -- don't include "Wikimedia import URL" if statement.snaks[aliasesP.wikimediaImportURL] then statement.snaks[aliasesP.wikimediaImportURL] = nil -- don't include "retrieved" if no "referenceURL" is present, -- as "retrieved" probably belongs to "Wikimedia import URL" if statement.snaks[aliasesP.retrieved] and not statement.snaks[aliasesP.referenceURL] then statement.snaks[aliasesP.retrieved] = nil end end -- don't include "inferred from", which is added by a bot if statement.snaks[aliasesP.inferredFrom] then statement.snaks[aliasesP.inferredFrom] = nil end -- don't include "type of reference" if statement.snaks[aliasesP.typeOfReference] then statement.snaks[aliasesP.typeOfReference] = nil end -- don't include "image" to prevent littering if statement.snaks[aliasesP.image] then statement.snaks[aliasesP.image] = nil end -- don't include "language" if it is equal to the local one if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then statement.snaks[aliasesP.language] = nil end if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then -- "stated in" was given but "reference URL" was not. -- get "Wikidata property" properties from the item in "stated in" -- if any of the returned properties of the external-id datatype is in statement.snaks, generate a URL from it and use the URL in the reference -- find the "Wikidata property" properties in the item from "stated in" wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true) for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then tempLink = self.conf:getValue(statement.snaks[wikidataPropertyOfSource][1], false, true) -- not raw, linked if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL. additionalRefProperties[aliasesP.referenceURL] = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") -- the URL is in wiki markup, so strip the square brackets and the display text statement.snaks[wikidataPropertyOfSource] = nil break end end end end -- don't include "subject named as", but use it as the title when "title" is not present but a URL is if statement.snaks[aliasesP.subjectNamedAs] then if not statement.snaks[aliasesP.title] and (statement.snaks[aliasesP.referenceURL] or additionalRefProperties[aliasesP.referenceURL]) then additionalRefProperties[aliasesP.title] = statement.snaks[aliasesP.subjectNamedAs][1].datavalue.value end statement.snaks[aliasesP.subjectNamedAs] = nil end -- retrieve all the parameters for i in pairs(statement.snaks) do label = "" -- multiple authors may be given if i == aliasesP.author or i == aliasesP.authorNameString then params[i] = self:getReferenceDetails(statement.snaks, i, false, self.linked, true) -- link = true/false, anyLang = true else params[i] = {self:getReferenceDetail(statement.snaks, i, false, (self.linked or (i == aliasesP.statedIn)) and (statement.snaks[i][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true end if #params[i] == 0 then params[i] = nil else referenceEmpty = false if statement.snaks[i][1].datatype == 'external-id' then key = "external-id" label = self.conf:getLabel(i) if label ~= "" then label = label .. " " end else key = i end -- add the parameter to each matching type of citation for j in pairs(citeParams) do -- do so if there was no mismatch with a previous parameter if not citeMismatch[j] then -- check if this parameter is not mismatching itself if i18n['cite'][j][key] then -- continue if an option is available in the corresponding cite template if i18n['cite'][j][key] ~= "" then -- handle non-author properties (and author properties ("author" and "author name string"), if they don't use the same template parameter) if (i ~= aliasesP.author and i ~= aliasesP.authorNameString) or (i18n['cite'][j][aliasesP.author] ~= i18n['cite'][j][aliasesP.authorNameString]) then citeParams[j][i18n['cite'][j][key]] = label .. params[i][1] -- to avoid problems with non-author multiple parameters (if existent), the following old code is retained for k=2, #params[i] do citeParams[j][i18n['cite'][j][key]..k] = label .. params[i][k] end -- handle "author" and "author name string" specially if they use the same template parameter elseif i == aliasesP.author or i == aliasesP.authorNameString then if params[aliasesP.author] ~= nil then numAuthorParameters = #params[aliasesP.author] else numAuthorParameters = 0 end if params[aliasesP.authorNameString] ~= nil then numAuthorNameStringParameters = #params[aliasesP.authorNameString] else numAuthorNameStringParameters = 0 end -- execute only if both "author" and "author name string" satisfy this condition: the property is both in params and in statement.snaks or it is neither in params nor in statement.snaks -- reason: parameters are added to params each iteration of the loop, not before the loop if ((statement.snaks[aliasesP.author] == nil) == (numAuthorParameters == 0)) and ((statement.snaks[aliasesP.authorNameString] == nil) == (numAuthorNameStringParameters == 0)) then for k=1, numAuthorParameters + numAuthorNameStringParameters do if k <= numAuthorParameters then -- now handling the authors from the "author" property citeParams[j][i18n['cite'][j][aliasesP.author]..k] = label .. params[aliasesP.author][k] else -- now handling the authors from "author name string" citeParams[j][i18n['cite'][j][aliasesP.authorNameString]..k] = label .. params[aliasesP.authorNameString][k - numAuthorParameters] end end end end end else citeMismatch[j] = true end end end end end -- use additional properties for i in pairs(additionalRefProperties) do for j in pairs(citeParams) do if not citeMismatch[j] and i18n["cite"][j][i] then citeParams[j][i18n["cite"][j][i]] = additionalRefProperties[i] else citeMismatch[j] = true end end end -- get title of general template for citing web references citeWeb = split(mw.wikibase.getSitelink(aliasesQ.citeWeb) or "", ":")[2] -- split off namespace from front -- get title of template that expands stated-in references into citations citeQ = split(mw.wikibase.getSitelink(aliasesQ.citeQ) or "", ":")[2] -- split off namespace from front -- (1) use the general template for citing web references if there is a match and if at least both "reference URL" and "title" are present if citeWeb and not citeMismatch['web'] and citeParams['web'][i18n['cite']['web'][aliasesP.referenceURL]] and citeParams['web'][i18n['cite']['web'][aliasesP.title]] then useCite = citeWeb useParams = citeParams['web'] -- (2) use the template that expands stated-in references into citations if there is a match and if at least "stated in" is present elseif citeQ and not citeMismatch['q'] and citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] then -- we need the raw "stated in" Q-identifier for the this template citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] = self:getReferenceDetail(statement.snaks, aliasesP.statedIn, true) -- raw = true useCite = citeQ useParams = citeParams['q'] end if useCite and useParams then -- if this module is being substituted then build a regular template call, otherwise expand the template if mw.isSubsting() then for i, v in pairs(useParams) do value = value .. "|" .. i .. "=" .. v end value = "{{" .. useCite .. value .. "}}" else value = mw.getCurrentFrame():expandTemplate{title=useCite, args=useParams} end -- (3) if the citation couldn't be displayed using Cite web or Cite Q, but has properties other than the removed ones, throw an error elseif not referenceEmpty then value = "<span style=\"color:#dd3333\">" .. errorText("malformed-reference") .. "</span>" end if value ~= "" then value = {value} -- create one value object if not self.rawValue then -- this should become a <ref> tag, so save the reference's hash for later value.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['cite']['version']) + version) end ref = {value} -- wrap the value object in an array end end return ref end -- gets a detail of one particular type for a reference function State:getReferenceDetail(snaks, dType, raw, link, anyLang) local switchLang = anyLang local value = nil if not snaks[dType] then return nil end -- if anyLang, first try the local language and otherwise any language repeat for _, v in ipairs(snaks[dType]) do value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true if value then break end end if value or not anyLang then break end switchLang = not switchLang until anyLang and switchLang return value end -- gets the details of one particular type for a reference function State:getReferenceDetails(snaks, dType, raw, link, anyLang) local values = {} if not snaks[dType] then return {} end for _, v in ipairs(snaks[dType]) do -- if nil is returned then it will not be added to the table values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true end return values end -- level 1 hook function State:getAlias(object) local value = object.value local title = nil if value and self.linked then if self.conf.entityID:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(self.conf.entityID) elseif self.conf.entityID:sub(1,1) == "P" then title = "d:Property:" .. self.conf.entityID end if title then value = buildWikilink(title, value) end end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getBadge(value) value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName) if value == "" then value = nil end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end function State:callHook(param, hooks, statement, result) local valuesArray, refHash -- call a parameter's hook if it has been defined and if it has not been called before if not result[param] and hooks[param] then valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects -- add to the result if #valuesArray > 0 then result[param] = valuesArray result.count = result.count + 1 else result[param] = {} -- an empty array to indicate that we've tried this hook already return true -- miss == true end end return false end -- iterate through claims, claim's qualifiers or claim's references to collect values function State:iterate(statements, hooks, matchHook) matchHook = matchHook or alwaysTrue local matches = false local rankPos = nil local result, gotRequired for _, v in ipairs(statements) do -- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.) matches, rankPos = matchHook(self, v) if matches then result = {count = 0} -- collection of arrays with value objects local function walk(formatTable) local miss for i2, v2 in pairs(formatTable.req) do -- call a hook, adding its return value to the result miss = self:callHook(i2, hooks, v, result) if miss then -- we miss a required value for this level, so return false return false end if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point breaks the loop return true end end for _, v2 in ipairs(formatTable) do if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point prevents further childs from being processed return true end if v2.child then walk(v2.child) end end return true end gotRequired = walk(self.parsedFormat) -- only append the result if we got values for all required parameters on the root level if gotRequired then -- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank if rankPos and self.conf.foundRank > rankPos then self.conf.foundRank = rankPos end -- append the result self.results[#self.results + 1] = result -- break if we only need a single value if self.singleValue then break end end end end return self:out() end local function getEntityId(arg, eid, page, allowOmitPropPrefix) local id = nil local prop = nil if arg then if arg:sub(1,1) == ":" then page = arg eid = nil elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then eid = arg page = nil else prop = arg end end if eid then if eid:sub(1,9):lower() == "property:" then id = replaceAlias(mw.text.trim(eid:sub(10))) if id:sub(1,1):upper() ~= "P" then id = "" end else id = replaceAlias(eid) end elseif page then if page:sub(1,1) == ":" then page = mw.text.trim(page:sub(2)) end id = mw.wikibase.getEntityIdForTitle(page) or "" end if not id then id = mw.wikibase.getEntityIdForCurrentPage() or "" end id = id:upper() if not mw.wikibase.isValidEntityId(id) then id = "" end return id, prop end local function nextArg(args) local arg = args[args.pointer] if arg then args.pointer = args.pointer + 1 return mw.text.trim(arg) else return nil end end local function claimCommand(args, funcName) local cfg = Config:new() cfg:processFlagOrCommand(funcName) -- process first command (== function name) local lastArg, parsedFormat, formatParams, claims, value local hooks = {count = 0} -- set the date if given; -- must come BEFORE processing the flags if args[p.args.date] then cfg.atDate = {parseDate(args[p.args.date])} cfg.periods = {false, true, false} -- change default time constraint to 'current' end -- process flags and commands repeat lastArg = nextArg(args) until not cfg:processFlagOrCommand(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page]) if cfg.entityID == "" then return "" -- we cannot continue without a valid entity ID end cfg.entity = mw.wikibase.getEntity(cfg.entityID) if not cfg.propertyID then cfg.propertyID = nextArg(args) end cfg.propertyID = replaceAlias(cfg.propertyID) if not cfg.entity or not cfg.propertyID then return "" -- we cannot continue without an entity or a property ID end cfg.propertyID = cfg.propertyID:upper() if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then return "" -- there is no use to continue without any claims end claims = cfg.entity.claims[cfg.propertyID] if cfg.states.qualifiersCount > 0 then -- do further processing if "qualifier(s)" command was given if #args - args.pointer + 1 > cfg.states.qualifiersCount then -- claim ID or literal value has been given cfg.propertyValue = nextArg(args) end for i = 1, cfg.states.qualifiersCount do -- check if given qualifier ID is an alias and add it cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper() end elseif cfg.states[parameters.reference] then -- do further processing if "reference(s)" command was given cfg.propertyValue = nextArg(args) end -- check for special property value 'somevalue' or 'novalue' if cfg.propertyValue then cfg.propertyValue = replaceSpecialChars(cfg.propertyValue) if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue' else cfg.propertyValue = mw.text.trim(cfg.propertyValue) end end -- parse the desired format, or choose an appropriate format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given if cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier) else parsedFormat, formatParams = parseFormat(formats.qualifier) end elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.property) else -- "reference(s)" command given parsedFormat, formatParams = parseFormat(formats.reference) end -- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then cfg.separators["sep"..parameters.separator][1] = {";"} end -- if only "reference(s)" has been given, set the default separator to none (except when raw) if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0 and not cfg.states[parameters.reference].rawValue then cfg.separators["sep"][1] = nil end -- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent if cfg.states.qualifiersCount == 1 then cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"] end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hooks that should be called (getProperty, getQualifiers, getReferences); -- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given for i, v in pairs(cfg.states) do -- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q" if formatParams[i] or formatParams[i:sub(1, 2)] then hooks[i] = getHookName(i, 1) hooks.count = hooks.count + 1 end end -- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...); -- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1) hooks.count = hooks.count + 1 end -- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration; -- must come AFTER defining the hooks if not cfg.states[parameters.property] then cfg.states[parameters.property] = State:new(cfg, parameters.property) -- if the "single" flag has been given then this state should be equivalent to "property" (singular) if cfg.singleClaim then cfg.states[parameters.property].singleValue = true end end -- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values, -- which must exist in order to be able to determine if a claim has any references; -- must come AFTER defining the hooks if cfg.sourcedOnly and not cfg.states[parameters.reference] then cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead end -- set the parsed format and the separators (and optional punctuation mark); -- must come AFTER creating the additonal states cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat) -- process qualifier matching values, analogous to cfg.propertyValue for i, v in pairs(args) do i = tostring(i) if i:match('^[Pp]%d+$') or aliasesP[i] then v = replaceSpecialChars(v) -- check for special qualifier value 'somevalue' if v ~= "" and mw.text.trim(v) == "" then v = " " -- single space represents 'somevalue' end cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v end end -- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated) claims = sortOnRank(claims) -- then iterate through the claims to collect values value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook -- if desired, add a clickable icon that may be used to edit the returned values on Wikidata if cfg.editable and value ~= "" then value = value .. cfg:getEditIcon() end return value end local function generalCommand(args, funcName) local cfg = Config:new() cfg.curState = State:new(cfg) local lastArg local value = nil repeat lastArg = nextArg(args) until not cfg:processFlag(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true) if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then return "" -- we cannot continue without an entity end -- serve according to the given command if funcName == p.generalCommands.label then value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName) elseif funcName == p.generalCommands.title then cfg.inSitelinks = true if cfg.entityID:sub(1,1) == "Q" then value = mw.wikibase.getSitelink(cfg.entityID) end if cfg.curState.linked and value then value = buildWikilink(value) end elseif funcName == p.generalCommands.description then value = mw.wikibase.getDescription(cfg.entityID) else local parsedFormat, formatParams local hooks = {count = 0} cfg.entity = mw.wikibase.getEntity(cfg.entityID) if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then cfg.curState.singleValue = true end if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then return "" -- there is no use to continue without any aliasses end local aliases = cfg.entity.aliases[cfg.langCode] -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.alias) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getAlias); -- only define the hook if the parameter ("%a") has been given if formatParams[parameters.alias] then hooks[parameters.alias] = getHookName(parameters.alias, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(aliases, hooks)) elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then return "" -- there is no use to continue without any badges end local badges = cfg.entity.sitelinks[cfg.siteID].badges cfg.inSitelinks = true -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.badge) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getBadge); -- only define the hook if the parameter ("%b") has been given if formatParams[parameters.badge] then hooks[parameters.badge] = getHookName(parameters.badge, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(badges, hooks)) end end value = value or "" if cfg.editable and value ~= "" then -- if desired, add a clickable icon that may be used to edit the returned value on Wikidata value = value .. cfg:getEditIcon() end return value end -- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args) local function establishCommands(commandList, commandFunc) for _, commandName in pairs(commandList) do local function wikitextWrapper(frame) local args = copyTable(frame.args) args.pointer = 1 loadI18n(aliasesP, frame) return commandFunc(args, commandName) end p[commandName] = wikitextWrapper local function luaWrapper(args) args = copyTable(args) args.pointer = 1 loadI18n(aliasesP) return commandFunc(args, commandName) end p["_" .. commandName] = luaWrapper end end establishCommands(p.claimCommands, claimCommand) establishCommands(p.generalCommands, generalCommand) -- main function that is supposed to be used by wrapper templates function p.main(frame) if not mw.wikibase then return nil end local f, args loadI18n(aliasesP, frame) -- get the parent frame to take the arguments that were passed to the wrapper template frame = frame:getParent() or frame if not frame.args[1] then throwError("no-function-specified") end f = mw.text.trim(frame.args[1]) if f == "main" then throwError("main-called-twice") end assert(p["_"..f], errorText('no-such-function', f)) -- copy arguments from immutable to mutable table args = copyTable(frame.args) -- remove the function name from the list table.remove(args, 1) return p["_"..f](args) end return p 279887e54847ae34d319ff4c305ab2c65fdbc474 Module:Location map 828 1395 2977 2730 2023-10-27T00:08:43Z Pppery 6 Copy from sandbox per request on talk Scribunto text/plain require('strict') local p = {} local getArgs = require('Module:Arguments').getArgs local function round(n, decimals) local pow = 10^(decimals or 0) return math.floor(n * pow + 0.5) / pow end function p.getMapParams(map, frame) if not map then error('The name of the location map definition to use must be specified', 2) end local moduletitle = mw.title.new('Module:Location map/data/' .. map) if not moduletitle then error(string.format('%q is not a valid name for a location map definition', map), 2) elseif moduletitle.exists then local mapData = mw.loadData('Module:Location map/data/' .. map) return function(name, params) if name == nil then return 'Module:Location map/data/' .. map elseif mapData[name] == nil then return '' elseif params then return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain() else return mapData[name] end end else error('Unable to find the specified location map definition: "Module:Location map/data/' .. map .. '" does not exist', 2) end end function p.data(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true}) end if not map then map = p.getMapParams(args[1], frame) end local params = {} for k,v in ipairs(args) do if k > 2 then params[k-2] = v end end return map(args[2], #params ~= 0 and params) end local hemisphereMultipliers = { longitude = { W = -1, w = -1, E = 1, e = 1 }, latitude = { S = -1, s = -1, N = 1, n = 1 } } local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction) if decimal then if degrees then error('Decimal and DMS degrees cannot both be provided for ' .. direction, 2) elseif minutes then error('Minutes can only be provided with DMS degrees for ' .. direction, 2) elseif seconds then error('Seconds can only be provided with DMS degrees for ' .. direction, 2) elseif hemisphere then error('A hemisphere can only be provided with DMS degrees for ' .. direction, 2) end local retval = tonumber(decimal) if retval then return retval end error('The value "' .. decimal .. '" provided for ' .. direction .. ' is not valid', 2) elseif seconds and not minutes then error('Seconds were provided for ' .. direction .. ' without minutes also being provided', 2) elseif not degrees then if minutes then error('Minutes were provided for ' .. direction .. ' without degrees also being provided', 2) elseif hemisphere then error('A hemisphere was provided for ' .. direction .. ' without degrees also being provided', 2) end return nil end decimal = tonumber(degrees) if not decimal then error('The degree value "' .. degrees .. '" provided for ' .. direction .. ' is not valid', 2) elseif minutes and not tonumber(minutes) then error('The minute value "' .. minutes .. '" provided for ' .. direction .. ' is not valid', 2) elseif seconds and not tonumber(seconds) then error('The second value "' .. seconds .. '" provided for ' .. direction .. ' is not valid', 2) end decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600 if hemisphere then local multiplier = hemisphereMultipliers[direction][hemisphere] if not multiplier then error('The hemisphere "' .. hemisphere .. '" provided for ' .. direction .. ' is not valid', 2) end decimal = decimal * multiplier end return decimal end -- Finds a parameter in a transclusion of {{Coord}}. local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign local lat, long = mw.ustring.match(coord,'<span class="p%-latitude latitude">([^<]+)</span><span class="p%-longitude longitude">([^<]+)</span>') if lat then return tonumber(para == 'longitude' and long or lat) end local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]') if para == 'longitude' then result = {result[3], result[4]} end if not tonumber(result[1]) or not result[2] then mw.log('Malformed coordinates value') mw.logObject(para, 'para') mw.logObject(coord, 'coord') return error('Malformed coordinates value', 2) end return tonumber(result[1]) * hemisphereMultipliers[para][result[2]] end -- effectively make removeBlanks false for caption and maplink, and true for everything else -- if useWikidata is present but blank, convert it to false instead of nil -- p.top, p.bottom, and their callers need to use this function p.valueFunc(key, value) if value then value = mw.text.trim(value) end if value ~= '' or key == 'caption' or key == 'maplink' then return value elseif key == 'useWikidata' then return false end end local function getContainerImage(args, map) if args.AlternativeMap then return args.AlternativeMap elseif args.relief then local digits = mw.ustring.match(args.relief,'^[1-9][0-9]?$') or '1' -- image1 to image99 if map('image' .. digits) ~= '' then return map('image' .. digits) end end return map('image') end function p.top(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc}) end if not map then map = p.getMapParams(args[1], frame) end local width local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*")) if not args.width then width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1)) elseif mw.ustring.sub(args.width, -2) == 'px' then width = mw.ustring.sub(args.width, 1, -3) else width = args.width end local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0; if width_as_number == 0 then -- check to see if width is junk. If it is, then use default calculation width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1)) width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0; end if args.max_width ~= "" and args.max_width ~= nil then -- check to see if width bigger than max_width local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0; if width_as_number>max_as_number and max_as_number>0 then width = args.max_width; end end local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Module:Location map/styles.css'}} if args.float == 'center' then retval = retval .. '<div class="center">' end if args.caption and args.caption ~= '' and args.border ~= 'infobox' then retval = retval .. '<div class="locmap noviewer noresize thumb ' if args.float == '"left"' or args.float == 'left' then retval = retval .. 'tleft' elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then retval = retval .. 'tnone' else retval = retval .. 'tright' end retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px' if args.border == 'none' then retval = retval .. ';border:none' elseif args.border then retval = retval .. ';border-color:' .. args.border end retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">') else retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;' if args.float == '"left"' or args.float == 'left' then retval = retval .. 'float:left;clear:left' elseif args.float == '"center"' or args.float == 'center' then retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto' elseif args.float == '"none"' or args.float == 'none' then retval = retval .. 'float:none;clear:none' else retval = retval .. 'float:right;clear:right' end retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">' end local image = getContainerImage(args, map) local currentTitle = mw.title.getCurrentTitle() retval = string.format( '%s[[File:%s|%spx|%s%s|class=notpageimage]]', retval, image, width, args.alt or ((args.label or currentTitle.text) .. ' is located in ' .. map('name')), args.maplink and ('|link=' .. args.maplink) or '' ) if args.caption and args.caption ~= '' then if (currentTitle.namespace == 0) and mw.ustring.find(args.caption, '##') then retval = retval .. '[[Category:Pages using location map with a double number sign in the caption]]' end end if args.overlay_image then return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px|class=notpageimage]]</div>' else return retval end end function p.bottom(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc}) end if not map then map = p.getMapParams(args[1], frame) end local retval = '</div>' local currentTitle = mw.title.getCurrentTitle() if not args.caption or args.border == 'infobox' then if args.border then retval = retval .. '<div style="padding-top:0.2em">' else retval = retval .. '<div style="font-size:91%;padding-top:3px">' end retval = retval .. (args.caption or (args.label or currentTitle.text) .. ' (' .. map('name') .. ')') .. '</div>' elseif args.caption ~= '' then -- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '|class=notpageimage| ]]</div>' .. args.caption .. '</div>' end if args.switcherLabel then retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>' elseif args.autoSwitcherLabel then retval = retval .. '<span class="switcher-label" style="display:none">Show map of ' .. map('name') .. '</span>' end retval = retval .. '</div></div>' if args.caption_undefined then mw.log('Removed parameter caption_undefined used.') local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') if currentTitle.namespace == 0 then retval = retval .. '[[Category:Location maps with removed parameters|caption_undefined]]' end end if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then mw.log('Removed parameter used in map definition ' .. map()) if currentTitle.namespace == 0 then local key = (map('skew') ~= '' and 'skew' or '') .. (map('lat_skew') ~= '' and 'lat_skew' or '') .. (map('crosses180') ~= '' and 'crosses180' or '') .. (map('type') ~= '' and 'type' or '') retval = retval .. '[[Category:Location maps with removed parameters|' .. key .. ' ]]' end end if string.find(map('name'), '|', 1, true) then mw.log('Pipe used in name of map definition ' .. map()) if currentTitle.namespace == 0 then retval = retval .. '[[Category:Location maps with a name containing a pipe]]' end end if args.float == 'center' then retval = retval .. '</div>' end return retval end local function markOuterDiv(x, y, imageDiv, labelDiv) return mw.html.create('div') :addClass('od') :cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%') :node(imageDiv) :node(labelDiv) end local function markImageDiv(mark, marksize, label, link, alt, title) local builder = mw.html.create('div') :addClass('id') :cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px') :attr('title', title) if marksize ~= 0 then builder:wikitext(string.format( '[[File:%s|%dx%dpx|%s|link=%s%s|class=notpageimage]]', mark, marksize, marksize, label, link, alt and ('|alt=' .. alt) or '' )) end return builder end local function markLabelDiv(label, label_size, label_width, position, background, x, marksize) if tonumber(label_size) == 0 then return mw.html.create('div'):addClass('l0'):wikitext(label) end local builder = mw.html.create('div') :cssText('font-size:' .. label_size .. '%;width:' .. label_width .. 'em') local distance = round(marksize / 2 + 1) if position == 'top' then -- specified top builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em') elseif position == 'bottom' then -- specified bottom builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em') elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left builder:addClass('pl'):cssText('right:' .. distance .. 'px') else -- specified right or autodetected to right builder:addClass('pr'):cssText('left:' .. distance .. 'px') end builder = builder:tag('div') :wikitext(label) if background then builder:cssText('background-color:' .. background) end return builder:done() end local function getX(longitude, left, right) local width = (right - left) % 360 if width == 0 then width = 360 end local distanceFromLeft = (longitude - left) % 360 -- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter if distanceFromLeft - width / 2 >= 180 then distanceFromLeft = distanceFromLeft - 360 end return 100 * distanceFromLeft / width end local function getY(latitude, top, bottom) return 100 * (top - latitude) / (top - bottom) end function p.mark(frame, args, map) if not args then args = getArgs(frame, {wrappers = 'Template:Location map~'}) end local mapnames = {} if not map then if args[1] then map = {} for mapname in mw.text.gsplit(args[1], '#', true) do map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) mapnames[#mapnames + 1] = mapname end if #map == 1 then map = map[1] end else map = p.getMapParams('World', frame) args[1] = 'World' end end if type(map) == 'table' then local outputs = {} local oldargs = args[1] for k,v in ipairs(map) do args[1] = mapnames[k] outputs[k] = tostring(p.mark(frame, args, v)) end args[1] = oldargs return table.concat(outputs, '#PlaceList#') .. '#PlaceList#' end local x, y, longitude, latitude longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude') latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude') if args.excludefrom then -- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps) for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do -- Check if this map is excluded. If so, return an empty string. if args[1] == exclusionmap then return '' end end end local builder = mw.html.create() local currentTitle = mw.title.getCurrentTitle() if args.coordinates then -- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]] -- if longitude or latitude then -- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided') -- end longitude = coord2text('longitude', args.coordinates) latitude = coord2text('latitude', args.coordinates) elseif not longitude and not latitude and args.useWikidata then -- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't. local entity = mw.wikibase.getEntity() if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then local value = entity.claims.P625[1].mainsnak.datavalue.value longitude, latitude = value.longitude, value.latitude end if args.link and (currentTitle.namespace == 0) then builder:wikitext('[[Category:Location maps with linked markers with coordinates from Wikidata]]') end end if not longitude then error('No value was provided for longitude') elseif not latitude then error('No value was provided for latitude') end if currentTitle.namespace > 0 then if (not args.lon_deg) ~= (not args.lat_deg) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Degrees]]') elseif (not args.lon_min) ~= (not args.lat_min) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Minutes]]') elseif (not args.lon_sec) ~= (not args.lat_sec) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Seconds]]') elseif (not args.lon_dir) ~= (not args.lat_dir) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Hemisphere]]') elseif (not args.long) ~= (not args.lat) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Decimal]]') end end if ((tonumber(args.lat_deg) or 0) < 0) and ((tonumber(args.lat_min) or 0) ~= 0 or (tonumber(args.lat_sec) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='')) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if ((tonumber(args.lon_deg) or 0) < 0) and ((tonumber(args.lon_min) or 0) ~= 0 or (tonumber(args.lon_sec) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '')) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if (((tonumber(args.lat_min) or 0) < 0) or ((tonumber(args.lat_sec) or 0) < 0)) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if (((tonumber(args.lon_min) or 0) < 0) or ((tonumber(args.lon_sec) or 0) < 0)) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if args.skew or args.lon_shift or args.markhigh then mw.log('Removed parameter used in invocation.') local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') if currentTitle.namespace == 0 then local key = (args.skew and 'skew' or '') .. (args.lon_shift and 'lon_shift' or '') .. (args.markhigh and 'markhigh' or '') builder:wikitext('[[Category:Location maps with removed parameters|' .. key ..' ]]') end end if map('x') ~= '' then x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude }))) else x = tonumber(getX(longitude, map('left'), map('right'))) end if map('y') ~= '' then y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude }))) else y = tonumber(getY(latitude, map('top'), map('bottom'))) end if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then mw.log('Mark placed outside map boundaries without outside flag set. x = ' .. x .. ', y = ' .. y) local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') if currentTitle.namespace == 0 then local key = currentTitle.prefixedText builder:wikitext('[[Category:Location maps with marks outside map and outside parameter not set|' .. key .. ' ]]') end end local mark = args.mark or map('mark') if mark == '' then mark = 'Red pog.svg' end local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8 local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2]) local labelDiv if args.label and args.position ~= 'none' then labelDiv = markLabelDiv(args.label, args.label_size or 91, args.label_width or 6, args.position, args.background, x, marksize) end return builder:node(markOuterDiv(x, y, imageDiv, labelDiv)) end local function switcherSeparate(s) if s == nil then return {} end local retval = {} for i in string.gmatch(s .. '#', '([^#]*)#') do i = mw.text.trim(i) retval[#retval + 1] = (i ~= '' and i) end return retval end function p.main(frame, args, map) local caption_list = {} if not args then args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc}) end if args.useWikidata == nil then args.useWikidata = true end if not map then if args[1] then map = {} for mapname in string.gmatch(args[1], '[^#]+') do map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) end if args['caption'] then if args['caption'] == "" then while #caption_list < #map do caption_list[#caption_list + 1] = args['caption'] end else for caption in mw.text.gsplit(args['caption'], '##', true) do caption_list[#caption_list + 1] = caption end end end if #map == 1 then map = map[1] end else map = p.getMapParams('World', frame) end end if type(map) == 'table' then local altmaps = switcherSeparate(args.AlternativeMap) if #altmaps > #map then error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map)) end local overlays = switcherSeparate(args.overlay_image) if #overlays > #map then error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map)) end if #caption_list > #map then error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map)) end local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do args.AlternativeMap = altmaps[k] args.overlay_image = overlays[k] args.caption = caption_list[k] outputs[k] = p.main(frame, args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' else return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map) end end return p e4ccfcc6e71c45a4355aa7240a0a8b81dc19f8eb Module:Documentation/config 828 52 2985 174 2023-10-28T01:25:16Z Pppery 6 Split [[Category:Templates sandboxes]] per CfD Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Protection template configuration ---------------------------------------------------------------------------------------------------- -- cfg['protection-reason-edit'] -- The protection reason for edit-protected templates to pass to -- [[Module:Protection banner]]. cfg['protection-reason-edit'] = 'template' --[[ ---------------------------------------------------------------------------------------------------- -- Sandbox notice configuration -- -- On sandbox pages the module can display a template notifying users that the current page is a -- sandbox, and the location of test cases pages, etc. The module decides whether the page is a -- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the -- messages that the notices contains. ---------------------------------------------------------------------------------------------------- --]] -- cfg['sandbox-notice-image'] -- The image displayed in the sandbox notice. cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]' --[[ -- cfg['sandbox-notice-pagetype-template'] -- cfg['sandbox-notice-pagetype-module'] -- cfg['sandbox-notice-pagetype-other'] -- The page type of the sandbox page. The message that is displayed depends on the current subject -- namespace. This message is used in either cfg['sandbox-notice-blurb'] or -- cfg['sandbox-notice-diff-blurb']. --]] cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page' cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page' cfg['sandbox-notice-pagetype-other'] = 'sandbox page' --[[ -- cfg['sandbox-notice-blurb'] -- cfg['sandbox-notice-diff-blurb'] -- cfg['sandbox-notice-diff-display'] -- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence -- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page -- type, which is either cfg['sandbox-notice-pagetype-template'], -- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what -- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between -- the sandbox and the main template. The display value of the diff link is set by -- cfg['sandbox-notice-compare-link-display']. --]] cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.' cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).' cfg['sandbox-notice-compare-link-display'] = 'diff' --[[ -- cfg['sandbox-notice-testcases-blurb'] -- cfg['sandbox-notice-testcases-link-display'] -- cfg['sandbox-notice-testcases-run-blurb'] -- cfg['sandbox-notice-testcases-run-link-display'] -- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit. $1 is a link to the test cases page. -- cfg['sandbox-notice-testcases-link-display'] is the display value for that link. -- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test -- cases page, and $2 is a link to the page to run it. -- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test -- cases. --]] cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.' cfg['sandbox-notice-testcases-link-display'] = 'test cases' cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).' cfg['sandbox-notice-testcases-run-link-display'] = 'run' -- cfg['sandbox-category'] - A category to add to all template sandboxes. -- cfg['module-sandbox-category'] - A category to add to all module sandboxes. -- cfg['module-sandbox-category'] - A category to add to all sandboxe not in templates or modules. cfg['sandbox-category'] = 'Template sandboxes' cfg['module-sandbox-category'] = 'Module sandboxes' cfg['other-sandbox-category'] = 'Sandboxes outside of template or module namespace' ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg 56b6127664e31128dea1cecf2e392cf9313df6a3 2986 2985 2023-11-09T13:08:22Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Documentation/config]] Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Protection template configuration ---------------------------------------------------------------------------------------------------- -- cfg['protection-reason-edit'] -- The protection reason for edit-protected templates to pass to -- [[Module:Protection banner]]. cfg['protection-reason-edit'] = 'template' --[[ ---------------------------------------------------------------------------------------------------- -- Sandbox notice configuration -- -- On sandbox pages the module can display a template notifying users that the current page is a -- sandbox, and the location of test cases pages, etc. The module decides whether the page is a -- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the -- messages that the notices contains. ---------------------------------------------------------------------------------------------------- --]] -- cfg['sandbox-notice-image'] -- The image displayed in the sandbox notice. cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]' --[[ -- cfg['sandbox-notice-pagetype-template'] -- cfg['sandbox-notice-pagetype-module'] -- cfg['sandbox-notice-pagetype-other'] -- The page type of the sandbox page. The message that is displayed depends on the current subject -- namespace. This message is used in either cfg['sandbox-notice-blurb'] or -- cfg['sandbox-notice-diff-blurb']. --]] cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page' cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page' cfg['sandbox-notice-pagetype-other'] = 'sandbox page' --[[ -- cfg['sandbox-notice-blurb'] -- cfg['sandbox-notice-diff-blurb'] -- cfg['sandbox-notice-diff-display'] -- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence -- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page -- type, which is either cfg['sandbox-notice-pagetype-template'], -- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what -- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between -- the sandbox and the main template. The display value of the diff link is set by -- cfg['sandbox-notice-compare-link-display']. --]] cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.' cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).' cfg['sandbox-notice-compare-link-display'] = 'diff' --[[ -- cfg['sandbox-notice-testcases-blurb'] -- cfg['sandbox-notice-testcases-link-display'] -- cfg['sandbox-notice-testcases-run-blurb'] -- cfg['sandbox-notice-testcases-run-link-display'] -- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit. $1 is a link to the test cases page. -- cfg['sandbox-notice-testcases-link-display'] is the display value for that link. -- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test -- cases page, and $2 is a link to the page to run it. -- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test -- cases. --]] cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.' cfg['sandbox-notice-testcases-link-display'] = 'test cases' cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).' cfg['sandbox-notice-testcases-run-link-display'] = 'run' -- cfg['sandbox-category'] - A category to add to all template sandboxes. -- cfg['module-sandbox-category'] - A category to add to all module sandboxes. -- cfg['module-sandbox-category'] - A category to add to all sandboxe not in templates or modules. cfg['sandbox-category'] = 'Template sandboxes' cfg['module-sandbox-category'] = 'Module sandboxes' cfg['other-sandbox-category'] = 'Sandboxes outside of template or module namespace' ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg 56b6127664e31128dea1cecf2e392cf9313df6a3 Module:Documentation 828 51 2983 172 2023-10-28T01:26:52Z Pppery 6 Split [[Category:Template sandboxes]] per CfD Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub local format = mw.ustring.format ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return format('[[%s|%s]]', page, display) else return format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return format( '<span class="%s">(%s)</span>', message('toolbar-class'), table.concat(ret, ' &#124; ') ) end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :wikitext(p._getModuleWikitext(args, env)) :wikitext(p.protectionTemplate(env)) :wikitext(p.sandboxNotice(args, env)) :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.protectionLevels - the protection levels table of the title object. -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.protectionLevels() -- The protection levels table of the title object. return env.title.protectionLevels end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.canonicalUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Auxiliary templates ---------------------------------------------------------------------------- p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') function p._getModuleWikitext(args, env) local currentTitle = mw.title.getCurrentTitle() if currentTitle.contentModel ~= 'Scribunto' then return end pcall(require, currentTitle.prefixedText) -- if it fails, we don't care local moduleWikitext = package.loaded["Module:Module wikitext"] if moduleWikitext then return moduleWikitext.main() end end function p.sandboxNotice(args, env) --[=[ -- Generates a sandbox notice for display above sandbox pages. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' -- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page' -- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page' -- 'sandbox-notice-pagetype-other' --> 'sandbox page' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.' -- 'sandbox-notice-testcases-link-display' --> 'test cases' -- 'sandbox-category' --> 'Template sandboxes' -- 'module-sandbox-category' --> 'Module sandboxes' -- 'other-sandbox-category' --> 'Sandboxes outside of template or module namespace' --]=] local title = env.title local sandboxTitle = env.sandboxTitle local templateTitle = env.templateTitle local subjectSpace = env.subjectSpace if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then return nil end -- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text". local omargs = {} omargs.image = message('sandbox-notice-image') -- Get the text. We start with the opening blurb, which is something like -- "This is the template sandbox for [[Template:Foo]] (diff)." local text = '' local pagetype, sandboxCat if subjectSpace == 10 then pagetype = message('sandbox-notice-pagetype-template') sandboxCat = message('sandbox-category') elseif subjectSpace == 828 then pagetype = message('sandbox-notice-pagetype-module') sandboxCat = message('module-sandbox-category') else pagetype = message('sandbox-notice-pagetype-other') sandboxCat = message('other-sandbox-category') end local templateLink = makeWikilink(templateTitle.prefixedText) local compareUrl = env.compareUrl if compareUrl then local compareDisplay = message('sandbox-notice-compare-link-display') local compareLink = makeUrlLink(compareUrl, compareDisplay) text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) else text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) end -- Get the test cases page blurb if the page exists. This is something like -- "See also the companion subpage for [[Template:Foo/testcases|test cases]]." local testcasesTitle = env.testcasesTitle if testcasesTitle and testcasesTitle.exists then if testcasesTitle.contentModel == "Scribunto" then local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink}) else local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) end end -- Add the sandbox to the sandbox category. omargs.text = text .. makeCategoryLink(sandboxCat) -- 'documentation-clear' return '<div class="' .. message('clear') .. '"></div>' .. require('Module:Message box').main('ombox', omargs) end function p.protectionTemplate(env) -- Generates the padlock icon in the top right. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local protectionLevels = env.protectionLevels if not protectionLevels then return nil end local editProt = protectionLevels.edit and protectionLevels.edit[1] local moveProt = protectionLevels.move and protectionLevels.move[1] if editProt then -- The page is edit-protected. return require('Module:Protection banner')._main{ message('protection-reason-edit'), small = true } elseif moveProt and moveProt ~= 'autoconfirmed' then -- The page is move-protected but not edit-protected. Exclude move -- protection with the level "autoconfirmed", as this is equivalent to -- no move protection at all. return require('Module:Protection banner')._main{ action = 'move', small = true } else return nil end end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end return { title = title, docTitle = docTitle, -- View, display, edit, and purge links if /doc exists. viewLinkDisplay = message('view-link-display'), editLinkDisplay = message('edit-link-display'), historyLinkDisplay = message('history-link-display'), purgeLinkDisplay = message('purge-link-display'), preload = preload, createLinkDisplay = message('create-link-display') } end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local docTitle = data.docTitle -- yes, we do intend to purge the template page on which the documentation appears local purgeLink = makeWikilink("Special:Purge/" .. data.title.prefixedText, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, data.editLinkDisplay) local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, data.historyLinkDisplay) return "&#91;" .. viewLink .. "&#93; &#91;" .. editLink .. "&#93; &#91;" .. historyLink .. "&#93; &#91;" .. purgeLink .. "&#93;" else local createLink = makeUrlLink(docTitle:canonicalUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) return "&#91;" .. createLink .. "&#93; &#91;" .. purgeLink .. "&#93;" end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editDisplay = message('edit-link-display') local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, editDisplay) local historyDisplay = message('history-link-display') local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:canonicalUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeWikilink("Special:EditPage/" .. sandboxPage, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:canonicalUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeWikilink("Special:EditPage/" .. testcasesPage, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:canonicalUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 0f0f558e631e573a8b022c2a20bfc47c4137d640 2984 2983 2023-11-09T13:08:22Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Documentation]] Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub local format = mw.ustring.format ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return format('[[%s|%s]]', page, display) else return format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return format( '<span class="%s">(%s)</span>', message('toolbar-class'), table.concat(ret, ' &#124; ') ) end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :wikitext(p._getModuleWikitext(args, env)) :wikitext(p.protectionTemplate(env)) :wikitext(p.sandboxNotice(args, env)) :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.protectionLevels - the protection levels table of the title object. -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.protectionLevels() -- The protection levels table of the title object. return env.title.protectionLevels end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.canonicalUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Auxiliary templates ---------------------------------------------------------------------------- p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') function p._getModuleWikitext(args, env) local currentTitle = mw.title.getCurrentTitle() if currentTitle.contentModel ~= 'Scribunto' then return end pcall(require, currentTitle.prefixedText) -- if it fails, we don't care local moduleWikitext = package.loaded["Module:Module wikitext"] if moduleWikitext then return moduleWikitext.main() end end function p.sandboxNotice(args, env) --[=[ -- Generates a sandbox notice for display above sandbox pages. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' -- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page' -- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page' -- 'sandbox-notice-pagetype-other' --> 'sandbox page' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.' -- 'sandbox-notice-testcases-link-display' --> 'test cases' -- 'sandbox-category' --> 'Template sandboxes' -- 'module-sandbox-category' --> 'Module sandboxes' -- 'other-sandbox-category' --> 'Sandboxes outside of template or module namespace' --]=] local title = env.title local sandboxTitle = env.sandboxTitle local templateTitle = env.templateTitle local subjectSpace = env.subjectSpace if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then return nil end -- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text". local omargs = {} omargs.image = message('sandbox-notice-image') -- Get the text. We start with the opening blurb, which is something like -- "This is the template sandbox for [[Template:Foo]] (diff)." local text = '' local pagetype, sandboxCat if subjectSpace == 10 then pagetype = message('sandbox-notice-pagetype-template') sandboxCat = message('sandbox-category') elseif subjectSpace == 828 then pagetype = message('sandbox-notice-pagetype-module') sandboxCat = message('module-sandbox-category') else pagetype = message('sandbox-notice-pagetype-other') sandboxCat = message('other-sandbox-category') end local templateLink = makeWikilink(templateTitle.prefixedText) local compareUrl = env.compareUrl if compareUrl then local compareDisplay = message('sandbox-notice-compare-link-display') local compareLink = makeUrlLink(compareUrl, compareDisplay) text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) else text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) end -- Get the test cases page blurb if the page exists. This is something like -- "See also the companion subpage for [[Template:Foo/testcases|test cases]]." local testcasesTitle = env.testcasesTitle if testcasesTitle and testcasesTitle.exists then if testcasesTitle.contentModel == "Scribunto" then local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink}) else local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) end end -- Add the sandbox to the sandbox category. omargs.text = text .. makeCategoryLink(sandboxCat) -- 'documentation-clear' return '<div class="' .. message('clear') .. '"></div>' .. require('Module:Message box').main('ombox', omargs) end function p.protectionTemplate(env) -- Generates the padlock icon in the top right. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local protectionLevels = env.protectionLevels if not protectionLevels then return nil end local editProt = protectionLevels.edit and protectionLevels.edit[1] local moveProt = protectionLevels.move and protectionLevels.move[1] if editProt then -- The page is edit-protected. return require('Module:Protection banner')._main{ message('protection-reason-edit'), small = true } elseif moveProt and moveProt ~= 'autoconfirmed' then -- The page is move-protected but not edit-protected. Exclude move -- protection with the level "autoconfirmed", as this is equivalent to -- no move protection at all. return require('Module:Protection banner')._main{ action = 'move', small = true } else return nil end end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end return { title = title, docTitle = docTitle, -- View, display, edit, and purge links if /doc exists. viewLinkDisplay = message('view-link-display'), editLinkDisplay = message('edit-link-display'), historyLinkDisplay = message('history-link-display'), purgeLinkDisplay = message('purge-link-display'), preload = preload, createLinkDisplay = message('create-link-display') } end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local docTitle = data.docTitle -- yes, we do intend to purge the template page on which the documentation appears local purgeLink = makeWikilink("Special:Purge/" .. data.title.prefixedText, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, data.editLinkDisplay) local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, data.historyLinkDisplay) return "&#91;" .. viewLink .. "&#93; &#91;" .. editLink .. "&#93; &#91;" .. historyLink .. "&#93; &#91;" .. purgeLink .. "&#93;" else local createLink = makeUrlLink(docTitle:canonicalUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) return "&#91;" .. createLink .. "&#93; &#91;" .. purgeLink .. "&#93;" end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editDisplay = message('edit-link-display') local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, editDisplay) local historyDisplay = message('history-link-display') local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:canonicalUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeWikilink("Special:EditPage/" .. sandboxPage, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:canonicalUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeWikilink("Special:EditPage/" .. testcasesPage, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:canonicalUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 0f0f558e631e573a8b022c2a20bfc47c4137d640 Template:Transclusionless 10 1686 3143 2023-10-30T21:26:42Z wikipedia>ClydeFranklin 0 use {{[[Template:Yesno|Yesno]]}} wikitext text/x-wiki {{Mbox|text=This template {{Yesno|{{{should|}}}|yes=should|no=may}} have no transclusions, because {{{reason|it is substituted by a tool or script, it is used as part of a short-term or less active Wikipedia process, or for some other reason}}}.}}<!-- --><includeonly>{{#switch: {{SUBPAGENAME}} |doc |sandbox= |[[Category:Wikipedia transclusionless templates]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 8a93407123b10ff7ce9ba5557b71bda67df7ec45 Module:Icon/data 828 981 3053 2157 2023-11-02T20:20:40Z wikipedia>SWinxy 0 Add draft icon [[File:Symbol draft class.svg]], per edit request Scribunto text/plain -- This module stores icon data for [[Module:Icon]]. -------------------------------------------------------------------------------- -- Icon data -------------------------------------------------------------------------------- local data = { fa = { image = "Featured article star.svg", tooltip = "Featured article", link = true, }, far = { image = "Cscr-star piece.png", tooltip = "Featured article review", link = true, }, farc = { image = "Cscr-star piece.png", tooltip = "Featured article removal candidate", link = true, }, ffa = { aliases = {"dfa"}, image = "Featured article star - cross.svg", tooltip = "Former featured article", link = true, }, fac = { aliases = {"fan"}, image = "Cscr-candidate.svg", tooltip = "Featured article candidate", link = true, }, ffac = { aliases = {"nofa"}, image = "Featured article star - cross.svg", tooltip = "Failed featured article candidate", link = true, }, fl = { image = "Featured article star.svg", tooltip = "Featured list", link = true, }, flrc = { aliases = {"flr"}, image = "Cscr-star piece.png", tooltip = "Featured list removal candidate", link = true, }, ffl = { aliases = {"dfl"}, image = "Cscr-featured-strike.svg", tooltip = "Former featured list", link = true, }, flc = { aliases = {"fln"}, image = "Cscr-candidate.svg", tooltip = "Featured list candidate", link = true, }, fflc = { aliases = {"nofl"}, image = "Cscr-former.svg", tooltip = "Failed featured list candidate", link = true, }, a = { image = "Symbol a class.svg", tooltip = "A-Class article", link = true, }, dac = { aliases = {"daa"}, image = "Symbol unsupport A vote.svg", tooltip = "Demoted A-Class article", link = true, }, acc = { aliases = {"acn", "aac"}, image = "A candidate.svg", tooltip = "A-Class article candidate", link = true, }, noac = { aliases = {"faac"}, image = "Symbol unsupport A vote.svg", tooltip = "Failed A-Class article candidate", link = true, }, ga = { image = "Symbol support vote.svg", tooltip = "Good article", link = false, }, gar = { image = "GA Candidate Neutral vote(ChaosNil).svg", tooltip = "Good article reassessment", link = false, }, dga = { image = "Symbol unsupport vote.svg", tooltip = "Delisted good article", link = false, }, gan = { aliases = {"gac"}, image = "GA candidate.svg", tooltip = "Good article nominee", link = false, }, ga2 = { image = "Symbol neutral vote.svg", tooltip = "Good article, 2nd opinion", link = false, }, gah = { image = "Symbol wait.svg", tooltip = "Good article on hold", link = false, }, fgan = { aliases = {"noga", "gaf", "gf"}, image = "Symbol oppose vote.svg", tooltip = "Failed good article nominee", link = false, }, fp = { image = "Cscr-featured.svg", tooltip = "Featured picture", link = true, }, fpc = { aliases = {"fpn"}, image = "Cscr-candidate.svg", tooltip = "Featured picture candidate", link = true, }, ffp = { image = "Cscr-former.svg", tooltip = "Former featured picture", link = true, }, vp = { image = "ENWP VP Logo.svg", tooltip = "Valued picture", link = true, }, vpc = { image = "Valued pics 1.svg", tooltip = "Valued picture candidate", link = true, }, fs = { image = "Cscr-featured.svg", tooltip = "Featured sound", link = true, }, ffs = { image = "Cscr-former.svg", tooltip = "Former featured sound", link = true, }, fsc = { image = "Cscr-candidate.svg", tooltip = "Featured sound candidate", link = true, }, fpo = { image = "Linecons big-star.svg", tooltip = "Before the featured portal process ceased in 2017, this had been designated as a featured portal.", link = true, }, fpor = { image = "Cscr-star piece.png", tooltip = "Featured portal review", link = true, }, ffpo = { image = "Featured article star - cross.svg", tooltip = "Former featured portal", link = true, }, fpoc = { image = "Cscr-candidate.svg", tooltip = "Featured portal candidate", link = true, }, ft = { image = "Cscr-featuredtopic.svg", tooltip = "Featured topic", link = true, }, ftrc = { image = "Cscr-star piece.png", tooltip = "Featured topic removal candidate", link = true, }, fft = { aliases = {"dft"}, image = "DFT candidate_cluster.svg", tooltip = "Former featured topic", link = true, }, ftc = { aliases = {"ftn"}, image = "FT candidate cluster.svg", tooltip = "Featured topic candidate", link = false, }, gt = { image = "Support cluster.svg", tooltip = "Good topic", link = false, }, gtrc = { image = "Symbol unsupport vote.svg", tooltip = "Good topic removal candidate", link = false, }, gtc = { aliases = {"gtn"}, image = "GA candidate cluster.svg", tooltip = "Good topic candidate", link = false, }, bplus = { aliases = {"b+"}, image = "Symbol bplus class.svg", tooltip = "Bplus-Class article", link = true, }, b = { image = "Symbol b class.svg", tooltip = "B-Class article", link = true, }, br = { aliases = {"bcr"}, image = "Bclass-checklist.svg", tooltip = "B-Class review", link = true, }, c = { image = "Symbol c class.svg", tooltip = "C-Class article", link = true, }, start = { image = "Symbol start class.svg", tooltip = "Start-Class article", link = true, }, stub = { image = "Symbol stub class.svg", tooltip = "Stub-Class article", link = true, }, list = { aliases = {"comparison"}, image = "Symbol list class.svg", tooltip = "List-Class article", link = false, }, no = { image = "Crystal button cancel.svg", tooltip = "Unknown-Class article", link = true, }, book = { image = "Symbol book class2.svg", tooltip = "Wikipedia book", link = true, }, category = { aliases = {"cat", "categ"}, image = "Symbol category class.svg", tooltip = "Category", link = false, }, disambiguation = { aliases = {"dab", "disamb", "disambig"}, image = "Symbol dab class.svg", tooltip = "Disambiguation page", link = true, }, image = { aliases = {"file"}, image = "Symbol file class.svg", tooltip = "File", link = true, }, needed = { image = "Symbol needed class.svg", tooltip = "Needed article", link = false, }, outline = { image = "Global thinking.svg", tooltip = "Outline", link = false, }, portal = { image = "Symbol portal class.svg", tooltip = "Portal", link = true, }, project = { image = "Symbol project class.svg", tooltip = "Project page", link = false, }, redirect = { aliases = {"red", "redir"}, image = "Symbol redirect vote2.svg", tooltip = "Redirect", link = true, }, template = { aliases = {"temp", "templ"}, image = "Symbol template class.svg", tooltip = "Template", link = false, }, essay = { image = "Essay.svg", tooltip = "Essay", link = false, }, na = { image = "Symbol na class.svg", tooltip = "Non-article page", link = true, }, aa = { image = "Yes check.svg", tooltip = "Audited article of limited subject matter", link = false, }, da = { image = "Symbol oppose vote.svg", tooltip = "Demoted article", link = false, }, dyk = { image = "Symbol question.svg", tooltip = "Did You Know?", link = false, }, dyk2 = { image = "DYK questionmark icon.svg", tooltip = "Did You Know?", link = false, }, pr = { image = "Nuvola apps kedit.png", tooltip = "Peer review", link = true, }, ppr = { image = "Nuvola apps kedit.png", tooltip = "Portal peer review", link = true, }, q = { aliases = {"question"}, image = "Symbol question.svg", tooltip = "Question", link = false, }, cleanup = { image = "Edit-clear.svg", tooltip = "Cleanup work", link = false, }, qi = { image = "Quality images logo.svg", tooltip = "Quality image on Wikimedia Commons", link = false, }, vi = { image = "Valued image seal.svg", tooltip = "Valued image on Wikimedia Commons", link = false, }, tfa = { image = "Wikipedia-logo.svg", tooltip = "Today's Featured Article", link = true, }, tfl = { image = "Wikipedia-logo.svg", tooltip = "Today's Featured List", link = true, }, itn = { image = "Globe current.svg", tooltip = "In The News", link = true, }, otd = { image = "Nuvola apps date.svg", tooltip = "On This Day", link = true, }, wikiproject = { image = "People icon.svg", tooltip = "WikiProject", link = false, }, goce = { image = "Writing Magnifying.PNG", tooltip = "Guild of Copy Editors", link = true, }, wikipedia = { image = "Wikipedia-logo.svg", tooltip = "Wikipedia page", link = true, }, commons = { image = "Commons-logo.svg", tooltip = "Commons page", link = false, }, wikiquote = { image = "Wikiquote-logo.svg", tooltip = "Wikiquote page", link = false, }, wikiversity = { image = "Wikiversity logo 2017.svg", tooltip = "Wikiversity page", link = true, }, wikibooks = { image = "Wikibooks-logo.svg", tooltip = "Wikibooks page", link = true, }, wikisource = { image = "Wikisource-logo.svg", tooltip = "Wikisource page", link = true, }, wiktionary = { image = "Wiktionary-logo.svg", tooltip = "Wiktionary page", link = true, }, wikinews = { image = "Wikinews-logo.svg", tooltip = "Wikinews page", link = true, }, wikispecies = { image = "Wikispecies-logo.svg", tooltip = "Wikispecies page", link = true, }, wikidata = { image = "Wikidata-logo.svg", tooltip = "Wikidata page", link = false, }, wikivoyage = { image = "Wikivoyage-logo.svg", tooltip = "Wikivoyage page", link = true, }, mediawiki = { image = "MediaWiki-2020-icon.svg", tooltip = "MediaWiki", link = false, }, phabricator = { aliases = {"phab"}, image = "Favicon-Phabricator-WM.svg", tooltip = "Phabricator", link = false, }, wikitech = { image = "Wikitech-2021-blue-icon.svg", tooltip = "Wikitech", link = false, }, meta = { image = "Wikimedia Community Logo.svg", tooltip = "Meta-wiki page", link = false, }, four = { aliases = {"4a"}, image = "Four Award.svg", tooltip = "Four Award", link = false, }, million = { image = "Million award logo.svg", tooltip = "Million Award", link = true, }, module = { image = "Lua-logo-nolabel.svg", tooltip = "Module", link = false, }, vital = { image = "Círculos_Concéntricos.svg", tooltip = "Vital article", link = false, }, potd = { image = "Wikipedia-logo.svg", tooltip = "Picture of the Day", link = true, }, draft = { image = "Symbol draft class.svg", tooltip = "Draft-Class article", link = false, }, _DEFAULT = { image = "Symbol question.svg", link = false, } } -------------------------------------------------------------------------------- -- End icon data -------------------------------------------------------------------------------- -- Make aliases work the same as normal keys, and remove the "aliases" subtables. local ret= {} for code, iconData in pairs(data) do iconData.canonicalCode = code if iconData.aliases then for _, alias in ipairs(iconData.aliases) do ret[alias] = iconData end iconData.aliases = nil end ret[code] = iconData end return ret 6a708101e10a591a8d58b2ba30b9f8dc18ff1b7e 3054 3053 2023-11-09T17:59:35Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Icon/data]] Scribunto text/plain -- This module stores icon data for [[Module:Icon]]. -------------------------------------------------------------------------------- -- Icon data -------------------------------------------------------------------------------- local data = { fa = { image = "Featured article star.svg", tooltip = "Featured article", link = true, }, far = { image = "Cscr-star piece.png", tooltip = "Featured article review", link = true, }, farc = { image = "Cscr-star piece.png", tooltip = "Featured article removal candidate", link = true, }, ffa = { aliases = {"dfa"}, image = "Featured article star - cross.svg", tooltip = "Former featured article", link = true, }, fac = { aliases = {"fan"}, image = "Cscr-candidate.svg", tooltip = "Featured article candidate", link = true, }, ffac = { aliases = {"nofa"}, image = "Featured article star - cross.svg", tooltip = "Failed featured article candidate", link = true, }, fl = { image = "Featured article star.svg", tooltip = "Featured list", link = true, }, flrc = { aliases = {"flr"}, image = "Cscr-star piece.png", tooltip = "Featured list removal candidate", link = true, }, ffl = { aliases = {"dfl"}, image = "Cscr-featured-strike.svg", tooltip = "Former featured list", link = true, }, flc = { aliases = {"fln"}, image = "Cscr-candidate.svg", tooltip = "Featured list candidate", link = true, }, fflc = { aliases = {"nofl"}, image = "Cscr-former.svg", tooltip = "Failed featured list candidate", link = true, }, a = { image = "Symbol a class.svg", tooltip = "A-Class article", link = true, }, dac = { aliases = {"daa"}, image = "Symbol unsupport A vote.svg", tooltip = "Demoted A-Class article", link = true, }, acc = { aliases = {"acn", "aac"}, image = "A candidate.svg", tooltip = "A-Class article candidate", link = true, }, noac = { aliases = {"faac"}, image = "Symbol unsupport A vote.svg", tooltip = "Failed A-Class article candidate", link = true, }, ga = { image = "Symbol support vote.svg", tooltip = "Good article", link = false, }, gar = { image = "GA Candidate Neutral vote(ChaosNil).svg", tooltip = "Good article reassessment", link = false, }, dga = { image = "Symbol unsupport vote.svg", tooltip = "Delisted good article", link = false, }, gan = { aliases = {"gac"}, image = "GA candidate.svg", tooltip = "Good article nominee", link = false, }, ga2 = { image = "Symbol neutral vote.svg", tooltip = "Good article, 2nd opinion", link = false, }, gah = { image = "Symbol wait.svg", tooltip = "Good article on hold", link = false, }, fgan = { aliases = {"noga", "gaf", "gf"}, image = "Symbol oppose vote.svg", tooltip = "Failed good article nominee", link = false, }, fp = { image = "Cscr-featured.svg", tooltip = "Featured picture", link = true, }, fpc = { aliases = {"fpn"}, image = "Cscr-candidate.svg", tooltip = "Featured picture candidate", link = true, }, ffp = { image = "Cscr-former.svg", tooltip = "Former featured picture", link = true, }, vp = { image = "ENWP VP Logo.svg", tooltip = "Valued picture", link = true, }, vpc = { image = "Valued pics 1.svg", tooltip = "Valued picture candidate", link = true, }, fs = { image = "Cscr-featured.svg", tooltip = "Featured sound", link = true, }, ffs = { image = "Cscr-former.svg", tooltip = "Former featured sound", link = true, }, fsc = { image = "Cscr-candidate.svg", tooltip = "Featured sound candidate", link = true, }, fpo = { image = "Linecons big-star.svg", tooltip = "Before the featured portal process ceased in 2017, this had been designated as a featured portal.", link = true, }, fpor = { image = "Cscr-star piece.png", tooltip = "Featured portal review", link = true, }, ffpo = { image = "Featured article star - cross.svg", tooltip = "Former featured portal", link = true, }, fpoc = { image = "Cscr-candidate.svg", tooltip = "Featured portal candidate", link = true, }, ft = { image = "Cscr-featuredtopic.svg", tooltip = "Featured topic", link = true, }, ftrc = { image = "Cscr-star piece.png", tooltip = "Featured topic removal candidate", link = true, }, fft = { aliases = {"dft"}, image = "DFT candidate_cluster.svg", tooltip = "Former featured topic", link = true, }, ftc = { aliases = {"ftn"}, image = "FT candidate cluster.svg", tooltip = "Featured topic candidate", link = false, }, gt = { image = "Support cluster.svg", tooltip = "Good topic", link = false, }, gtrc = { image = "Symbol unsupport vote.svg", tooltip = "Good topic removal candidate", link = false, }, gtc = { aliases = {"gtn"}, image = "GA candidate cluster.svg", tooltip = "Good topic candidate", link = false, }, bplus = { aliases = {"b+"}, image = "Symbol bplus class.svg", tooltip = "Bplus-Class article", link = true, }, b = { image = "Symbol b class.svg", tooltip = "B-Class article", link = true, }, br = { aliases = {"bcr"}, image = "Bclass-checklist.svg", tooltip = "B-Class review", link = true, }, c = { image = "Symbol c class.svg", tooltip = "C-Class article", link = true, }, start = { image = "Symbol start class.svg", tooltip = "Start-Class article", link = true, }, stub = { image = "Symbol stub class.svg", tooltip = "Stub-Class article", link = true, }, list = { aliases = {"comparison"}, image = "Symbol list class.svg", tooltip = "List-Class article", link = false, }, no = { image = "Crystal button cancel.svg", tooltip = "Unknown-Class article", link = true, }, book = { image = "Symbol book class2.svg", tooltip = "Wikipedia book", link = true, }, category = { aliases = {"cat", "categ"}, image = "Symbol category class.svg", tooltip = "Category", link = false, }, disambiguation = { aliases = {"dab", "disamb", "disambig"}, image = "Symbol dab class.svg", tooltip = "Disambiguation page", link = true, }, image = { aliases = {"file"}, image = "Symbol file class.svg", tooltip = "File", link = true, }, needed = { image = "Symbol needed class.svg", tooltip = "Needed article", link = false, }, outline = { image = "Global thinking.svg", tooltip = "Outline", link = false, }, portal = { image = "Symbol portal class.svg", tooltip = "Portal", link = true, }, project = { image = "Symbol project class.svg", tooltip = "Project page", link = false, }, redirect = { aliases = {"red", "redir"}, image = "Symbol redirect vote2.svg", tooltip = "Redirect", link = true, }, template = { aliases = {"temp", "templ"}, image = "Symbol template class.svg", tooltip = "Template", link = false, }, essay = { image = "Essay.svg", tooltip = "Essay", link = false, }, na = { image = "Symbol na class.svg", tooltip = "Non-article page", link = true, }, aa = { image = "Yes check.svg", tooltip = "Audited article of limited subject matter", link = false, }, da = { image = "Symbol oppose vote.svg", tooltip = "Demoted article", link = false, }, dyk = { image = "Symbol question.svg", tooltip = "Did You Know?", link = false, }, dyk2 = { image = "DYK questionmark icon.svg", tooltip = "Did You Know?", link = false, }, pr = { image = "Nuvola apps kedit.png", tooltip = "Peer review", link = true, }, ppr = { image = "Nuvola apps kedit.png", tooltip = "Portal peer review", link = true, }, q = { aliases = {"question"}, image = "Symbol question.svg", tooltip = "Question", link = false, }, cleanup = { image = "Edit-clear.svg", tooltip = "Cleanup work", link = false, }, qi = { image = "Quality images logo.svg", tooltip = "Quality image on Wikimedia Commons", link = false, }, vi = { image = "Valued image seal.svg", tooltip = "Valued image on Wikimedia Commons", link = false, }, tfa = { image = "Wikipedia-logo.svg", tooltip = "Today's Featured Article", link = true, }, tfl = { image = "Wikipedia-logo.svg", tooltip = "Today's Featured List", link = true, }, itn = { image = "Globe current.svg", tooltip = "In The News", link = true, }, otd = { image = "Nuvola apps date.svg", tooltip = "On This Day", link = true, }, wikiproject = { image = "People icon.svg", tooltip = "WikiProject", link = false, }, goce = { image = "Writing Magnifying.PNG", tooltip = "Guild of Copy Editors", link = true, }, wikipedia = { image = "Wikipedia-logo.svg", tooltip = "Wikipedia page", link = true, }, commons = { image = "Commons-logo.svg", tooltip = "Commons page", link = false, }, wikiquote = { image = "Wikiquote-logo.svg", tooltip = "Wikiquote page", link = false, }, wikiversity = { image = "Wikiversity logo 2017.svg", tooltip = "Wikiversity page", link = true, }, wikibooks = { image = "Wikibooks-logo.svg", tooltip = "Wikibooks page", link = true, }, wikisource = { image = "Wikisource-logo.svg", tooltip = "Wikisource page", link = true, }, wiktionary = { image = "Wiktionary-logo.svg", tooltip = "Wiktionary page", link = true, }, wikinews = { image = "Wikinews-logo.svg", tooltip = "Wikinews page", link = true, }, wikispecies = { image = "Wikispecies-logo.svg", tooltip = "Wikispecies page", link = true, }, wikidata = { image = "Wikidata-logo.svg", tooltip = "Wikidata page", link = false, }, wikivoyage = { image = "Wikivoyage-logo.svg", tooltip = "Wikivoyage page", link = true, }, mediawiki = { image = "MediaWiki-2020-icon.svg", tooltip = "MediaWiki", link = false, }, phabricator = { aliases = {"phab"}, image = "Favicon-Phabricator-WM.svg", tooltip = "Phabricator", link = false, }, wikitech = { image = "Wikitech-2021-blue-icon.svg", tooltip = "Wikitech", link = false, }, meta = { image = "Wikimedia Community Logo.svg", tooltip = "Meta-wiki page", link = false, }, four = { aliases = {"4a"}, image = "Four Award.svg", tooltip = "Four Award", link = false, }, million = { image = "Million award logo.svg", tooltip = "Million Award", link = true, }, module = { image = "Lua-logo-nolabel.svg", tooltip = "Module", link = false, }, vital = { image = "Círculos_Concéntricos.svg", tooltip = "Vital article", link = false, }, potd = { image = "Wikipedia-logo.svg", tooltip = "Picture of the Day", link = true, }, draft = { image = "Symbol draft class.svg", tooltip = "Draft-Class article", link = false, }, _DEFAULT = { image = "Symbol question.svg", link = false, } } -------------------------------------------------------------------------------- -- End icon data -------------------------------------------------------------------------------- -- Make aliases work the same as normal keys, and remove the "aliases" subtables. local ret= {} for code, iconData in pairs(data) do iconData.canonicalCode = code if iconData.aliases then for _, alias in ipairs(iconData.aliases) do ret[alias] = iconData end iconData.aliases = nil end ret[code] = iconData end return ret 6a708101e10a591a8d58b2ba30b9f8dc18ff1b7e Module:Language/data/iana languages 828 468 3133 1036 2023-11-03T15:39:53Z wikipedia>Trappist the monk 0 update to 2023-10-16 data; Scribunto text/plain -- File-Date: 2023-10-16 local active = { ["aa"] = {"Afar"}, ["ab"] = {"Abkhazian"}, ["ae"] = {"Avestan"}, ["af"] = {"Afrikaans"}, ["ak"] = {"Akan"}, ["am"] = {"Amharic"}, ["an"] = {"Aragonese"}, ["ar"] = {"Arabic"}, ["as"] = {"Assamese"}, ["av"] = {"Avaric"}, ["ay"] = {"Aymara"}, ["az"] = {"Azerbaijani"}, ["ba"] = {"Bashkir"}, ["be"] = {"Belarusian"}, ["bg"] = {"Bulgarian"}, ["bh"] = {"Bihari languages"}, ["bi"] = {"Bislama"}, ["bm"] = {"Bambara"}, ["bn"] = {"Bengali", "Bangla"}, ["bo"] = {"Tibetan"}, ["br"] = {"Breton"}, ["bs"] = {"Bosnian"}, ["ca"] = {"Catalan", "Valencian"}, ["ce"] = {"Chechen"}, ["ch"] = {"Chamorro"}, ["co"] = {"Corsican"}, ["cr"] = {"Cree"}, ["cs"] = {"Czech"}, ["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"}, ["cv"] = {"Chuvash"}, ["cy"] = {"Welsh"}, ["da"] = {"Danish"}, ["de"] = {"German"}, ["dv"] = {"Dhivehi", "Divehi", "Maldivian"}, ["dz"] = {"Dzongkha"}, ["ee"] = {"Ewe"}, ["el"] = {"Modern Greek (1453-)"}, ["en"] = {"English"}, ["eo"] = {"Esperanto"}, ["es"] = {"Spanish", "Castilian"}, ["et"] = {"Estonian"}, ["eu"] = {"Basque"}, ["fa"] = {"Persian"}, ["ff"] = {"Fulah"}, ["fi"] = {"Finnish"}, ["fj"] = {"Fijian"}, ["fo"] = {"Faroese"}, ["fr"] = {"French"}, ["fy"] = {"Western Frisian"}, ["ga"] = {"Irish"}, ["gd"] = {"Scottish Gaelic", "Gaelic"}, ["gl"] = {"Galician"}, ["gn"] = {"Guarani"}, ["gu"] = {"Gujarati"}, ["gv"] = {"Manx"}, ["ha"] = {"Hausa"}, ["he"] = {"Hebrew"}, ["hi"] = {"Hindi"}, ["ho"] = {"Hiri Motu"}, ["hr"] = {"Croatian"}, ["ht"] = {"Haitian", "Haitian Creole"}, ["hu"] = {"Hungarian"}, ["hy"] = {"Armenian"}, ["hz"] = {"Herero"}, ["ia"] = {"Interlingua (International Auxiliary Language Association)"}, ["id"] = {"Indonesian"}, ["ie"] = {"Interlingue", "Occidental"}, ["ig"] = {"Igbo"}, ["ii"] = {"Sichuan Yi", "Nuosu"}, ["ik"] = {"Inupiaq"}, ["io"] = {"Ido"}, ["is"] = {"Icelandic"}, ["it"] = {"Italian"}, ["iu"] = {"Inuktitut"}, ["ja"] = {"Japanese"}, ["jv"] = {"Javanese"}, ["ka"] = {"Georgian"}, ["kg"] = {"Kongo"}, ["ki"] = {"Kikuyu", "Gikuyu"}, ["kj"] = {"Kuanyama", "Kwanyama"}, ["kk"] = {"Kazakh"}, ["kl"] = {"Kalaallisut", "Greenlandic"}, ["km"] = {"Khmer", "Central Khmer"}, ["kn"] = {"Kannada"}, ["ko"] = {"Korean"}, ["kr"] = {"Kanuri"}, ["ks"] = {"Kashmiri"}, ["ku"] = {"Kurdish"}, ["kv"] = {"Komi"}, ["kw"] = {"Cornish"}, ["ky"] = {"Kirghiz", "Kyrgyz"}, ["la"] = {"Latin"}, ["lb"] = {"Luxembourgish", "Letzeburgesch"}, ["lg"] = {"Ganda", "Luganda"}, ["li"] = {"Limburgan", "Limburger", "Limburgish"}, ["ln"] = {"Lingala"}, ["lo"] = {"Lao"}, ["lt"] = {"Lithuanian"}, ["lu"] = {"Luba-Katanga"}, ["lv"] = {"Latvian"}, ["mg"] = {"Malagasy"}, ["mh"] = {"Marshallese"}, ["mi"] = {"Maori"}, ["mk"] = {"Macedonian"}, ["ml"] = {"Malayalam"}, ["mn"] = {"Mongolian"}, ["mr"] = {"Marathi"}, ["ms"] = {"Malay (macrolanguage)"}, ["mt"] = {"Maltese"}, ["my"] = {"Burmese"}, ["na"] = {"Nauru"}, ["nb"] = {"Norwegian Bokmål"}, ["nd"] = {"North Ndebele"}, ["ne"] = {"Nepali (macrolanguage)"}, ["ng"] = {"Ndonga"}, ["nl"] = {"Dutch", "Flemish"}, ["nn"] = {"Norwegian Nynorsk"}, ["no"] = {"Norwegian"}, ["nr"] = {"South Ndebele"}, ["nv"] = {"Navajo", "Navaho"}, ["ny"] = {"Nyanja", "Chewa", "Chichewa"}, ["oc"] = {"Occitan (post 1500)"}, ["oj"] = {"Ojibwa"}, ["om"] = {"Oromo"}, ["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"}, ["os"] = {"Ossetian", "Ossetic"}, ["pa"] = {"Panjabi", "Punjabi"}, ["pi"] = {"Pali"}, ["pl"] = {"Polish"}, ["ps"] = {"Pushto", "Pashto"}, ["pt"] = {"Portuguese"}, ["qu"] = {"Quechua"}, ["rm"] = {"Romansh"}, ["rn"] = {"Rundi"}, ["ro"] = {"Romanian", "Moldavian", "Moldovan"}, ["ru"] = {"Russian"}, ["rw"] = {"Kinyarwanda"}, ["sa"] = {"Sanskrit"}, ["sc"] = {"Sardinian"}, ["sd"] = {"Sindhi"}, ["se"] = {"Northern Sami"}, ["sg"] = {"Sango"}, ["sh"] = {"Serbo-Croatian"}, ["si"] = {"Sinhala", "Sinhalese"}, ["sk"] = {"Slovak"}, ["sl"] = {"Slovenian"}, ["sm"] = {"Samoan"}, ["sn"] = {"Shona"}, ["so"] = {"Somali"}, ["sq"] = {"Albanian"}, ["sr"] = {"Serbian"}, ["ss"] = {"Swati"}, ["st"] = {"Southern Sotho"}, ["su"] = {"Sundanese"}, ["sv"] = {"Swedish"}, ["sw"] = {"Swahili (macrolanguage)"}, ["ta"] = {"Tamil"}, ["te"] = {"Telugu"}, ["tg"] = {"Tajik"}, ["th"] = {"Thai"}, ["ti"] = {"Tigrinya"}, ["tk"] = {"Turkmen"}, ["tl"] = {"Tagalog"}, ["tn"] = {"Tswana"}, ["to"] = {"Tonga (Tonga Islands)"}, ["tr"] = {"Turkish"}, ["ts"] = {"Tsonga"}, ["tt"] = {"Tatar"}, ["tw"] = {"Twi"}, ["ty"] = {"Tahitian"}, ["ug"] = {"Uighur", "Uyghur"}, ["uk"] = {"Ukrainian"}, ["ur"] = {"Urdu"}, ["uz"] = {"Uzbek"}, ["ve"] = {"Venda"}, ["vi"] = {"Vietnamese"}, ["vo"] = {"Volapük"}, ["wa"] = {"Walloon"}, ["wo"] = {"Wolof"}, ["xh"] = {"Xhosa"}, ["yi"] = {"Yiddish"}, ["yo"] = {"Yoruba"}, ["za"] = {"Zhuang", "Chuang"}, ["zh"] = {"Chinese"}, ["zu"] = {"Zulu"}, ["aaa"] = {"Ghotuo"}, ["aab"] = {"Alumu-Tesu"}, ["aac"] = {"Ari"}, ["aad"] = {"Amal"}, ["aae"] = {"Arbëreshë Albanian"}, ["aaf"] = {"Aranadan"}, ["aag"] = {"Ambrak"}, ["aah"] = {"Abu' Arapesh"}, ["aai"] = {"Arifama-Miniafia"}, ["aak"] = {"Ankave"}, ["aal"] = {"Afade"}, ["aan"] = {"Anambé"}, ["aao"] = {"Algerian Saharan Arabic"}, ["aap"] = {"Pará Arára"}, ["aaq"] = {"Eastern Abnaki"}, ["aas"] = {"Aasáx"}, ["aat"] = {"Arvanitika Albanian"}, ["aau"] = {"Abau"}, ["aav"] = {"Austro-Asiatic languages"}, ["aaw"] = {"Solong"}, ["aax"] = {"Mandobo Atas"}, ["aaz"] = {"Amarasi"}, ["aba"] = {"Abé"}, ["abb"] = {"Bankon"}, ["abc"] = {"Ambala Ayta"}, ["abd"] = {"Manide"}, ["abe"] = {"Western Abnaki"}, ["abf"] = {"Abai Sungai"}, ["abg"] = {"Abaga"}, ["abh"] = {"Tajiki Arabic"}, ["abi"] = {"Abidji"}, ["abj"] = {"Aka-Bea"}, ["abl"] = {"Lampung Nyo"}, ["abm"] = {"Abanyom"}, ["abn"] = {"Abua"}, ["abo"] = {"Abon"}, ["abp"] = {"Abellen Ayta"}, ["abq"] = {"Abaza"}, ["abr"] = {"Abron"}, ["abs"] = {"Ambonese Malay"}, ["abt"] = {"Ambulas"}, ["abu"] = {"Abure"}, ["abv"] = {"Baharna Arabic"}, ["abw"] = {"Pal"}, ["abx"] = {"Inabaknon"}, ["aby"] = {"Aneme Wake"}, ["abz"] = {"Abui"}, ["aca"] = {"Achagua"}, ["acb"] = {"Áncá"}, ["acd"] = {"Gikyode"}, ["ace"] = {"Achinese"}, ["acf"] = {"Saint Lucian Creole French"}, ["ach"] = {"Acoli"}, ["aci"] = {"Aka-Cari"}, ["ack"] = {"Aka-Kora"}, ["acl"] = {"Akar-Bale"}, ["acm"] = {"Mesopotamian Arabic"}, ["acn"] = {"Achang"}, ["acp"] = {"Eastern Acipa"}, ["acq"] = {"Ta'izzi-Adeni Arabic"}, ["acr"] = {"Achi"}, ["acs"] = {"Acroá"}, ["act"] = {"Achterhoeks"}, ["acu"] = {"Achuar-Shiwiar"}, ["acv"] = {"Achumawi"}, ["acw"] = {"Hijazi Arabic"}, ["acx"] = {"Omani Arabic"}, ["acy"] = {"Cypriot Arabic"}, ["acz"] = {"Acheron"}, ["ada"] = {"Adangme"}, ["adb"] = {"Atauran"}, ["add"] = {"Lidzonka", "Dzodinka"}, ["ade"] = {"Adele"}, ["adf"] = {"Dhofari Arabic"}, ["adg"] = {"Andegerebinha"}, ["adh"] = {"Adhola"}, ["adi"] = {"Adi"}, ["adj"] = {"Adioukrou"}, ["adl"] = {"Galo"}, ["adn"] = {"Adang"}, ["ado"] = {"Abu"}, ["adq"] = {"Adangbe"}, ["adr"] = {"Adonara"}, ["ads"] = {"Adamorobe Sign Language"}, ["adt"] = {"Adnyamathanha"}, ["adu"] = {"Aduge"}, ["adw"] = {"Amundava"}, ["adx"] = {"Amdo Tibetan"}, ["ady"] = {"Adyghe", "Adygei"}, ["adz"] = {"Adzera"}, ["aea"] = {"Areba"}, ["aeb"] = {"Tunisian Arabic"}, ["aec"] = {"Saidi Arabic"}, ["aed"] = {"Argentine Sign Language"}, ["aee"] = {"Northeast Pashai", "Northeast Pashayi"}, ["aek"] = {"Haeke"}, ["ael"] = {"Ambele"}, ["aem"] = {"Arem"}, ["aen"] = {"Armenian Sign Language"}, ["aeq"] = {"Aer"}, ["aer"] = {"Eastern Arrernte"}, ["aes"] = {"Alsea"}, ["aeu"] = {"Akeu"}, ["aew"] = {"Ambakich"}, ["aey"] = {"Amele"}, ["aez"] = {"Aeka"}, ["afa"] = {"Afro-Asiatic languages"}, ["afb"] = {"Gulf Arabic"}, ["afd"] = {"Andai"}, ["afe"] = {"Putukwam"}, ["afg"] = {"Afghan Sign Language"}, ["afh"] = {"Afrihili"}, ["afi"] = {"Akrukay", "Chini"}, ["afk"] = {"Nanubae"}, ["afn"] = {"Defaka"}, ["afo"] = {"Eloyi"}, ["afp"] = {"Tapei"}, ["afs"] = {"Afro-Seminole Creole"}, ["aft"] = {"Afitti"}, ["afu"] = {"Awutu"}, ["afz"] = {"Obokuitai"}, ["aga"] = {"Aguano"}, ["agb"] = {"Legbo"}, ["agc"] = {"Agatu"}, ["agd"] = {"Agarabi"}, ["age"] = {"Angal"}, ["agf"] = {"Arguni"}, ["agg"] = {"Angor"}, ["agh"] = {"Ngelima"}, ["agi"] = {"Agariya"}, ["agj"] = {"Argobba"}, ["agk"] = {"Isarog Agta"}, ["agl"] = {"Fembe"}, ["agm"] = {"Angaataha"}, ["agn"] = {"Agutaynen"}, ["ago"] = {"Tainae"}, ["agq"] = {"Aghem"}, ["agr"] = {"Aguaruna"}, ["ags"] = {"Esimbi"}, ["agt"] = {"Central Cagayan Agta"}, ["agu"] = {"Aguacateco"}, ["agv"] = {"Remontado Dumagat"}, ["agw"] = {"Kahua"}, ["agx"] = {"Aghul"}, ["agy"] = {"Southern Alta"}, ["agz"] = {"Mt. Iriga Agta"}, ["aha"] = {"Ahanta"}, ["ahb"] = {"Axamb"}, ["ahg"] = {"Qimant"}, ["ahh"] = {"Aghu"}, ["ahi"] = {"Tiagbamrin Aizi"}, ["ahk"] = {"Akha"}, ["ahl"] = {"Igo"}, ["ahm"] = {"Mobumrin Aizi"}, ["ahn"] = {"Àhàn"}, ["aho"] = {"Ahom"}, ["ahp"] = {"Aproumu Aizi"}, ["ahr"] = {"Ahirani"}, ["ahs"] = {"Ashe"}, ["aht"] = {"Ahtena"}, ["aia"] = {"Arosi"}, ["aib"] = {"Ainu (China)"}, ["aic"] = {"Ainbai"}, ["aid"] = {"Alngith"}, ["aie"] = {"Amara"}, ["aif"] = {"Agi"}, ["aig"] = {"Antigua and Barbuda Creole English"}, ["aih"] = {"Ai-Cham"}, ["aii"] = {"Assyrian Neo-Aramaic"}, ["aij"] = {"Lishanid Noshan"}, ["aik"] = {"Ake"}, ["ail"] = {"Aimele"}, ["aim"] = {"Aimol"}, ["ain"] = {"Ainu (Japan)"}, ["aio"] = {"Aiton"}, ["aip"] = {"Burumakok"}, ["aiq"] = {"Aimaq"}, ["air"] = {"Airoran"}, ["ait"] = {"Arikem"}, ["aiw"] = {"Aari"}, ["aix"] = {"Aighon"}, ["aiy"] = {"Ali"}, ["aja"] = {"Aja (South Sudan)"}, ["ajg"] = {"Aja (Benin)"}, ["aji"] = {"Ajië"}, ["ajn"] = {"Andajin"}, ["ajs"] = {"Algerian Jewish Sign Language"}, ["aju"] = {"Judeo-Moroccan Arabic"}, ["ajw"] = {"Ajawa"}, ["ajz"] = {"Amri Karbi"}, ["akb"] = {"Batak Angkola"}, ["akc"] = {"Mpur"}, ["akd"] = {"Ukpet-Ehom"}, ["ake"] = {"Akawaio"}, ["akf"] = {"Akpa"}, ["akg"] = {"Anakalangu"}, ["akh"] = {"Angal Heneng"}, ["aki"] = {"Aiome"}, ["akj"] = {"Aka-Jeru"}, ["akk"] = {"Akkadian"}, ["akl"] = {"Aklanon"}, ["akm"] = {"Aka-Bo"}, ["ako"] = {"Akurio"}, ["akp"] = {"Siwu"}, ["akq"] = {"Ak"}, ["akr"] = {"Araki"}, ["aks"] = {"Akaselem"}, ["akt"] = {"Akolet"}, ["aku"] = {"Akum"}, ["akv"] = {"Akhvakh"}, ["akw"] = {"Akwa"}, ["akx"] = {"Aka-Kede"}, ["aky"] = {"Aka-Kol"}, ["akz"] = {"Alabama"}, ["ala"] = {"Alago"}, ["alc"] = {"Qawasqar"}, ["ald"] = {"Alladian"}, ["ale"] = {"Aleut"}, ["alf"] = {"Alege"}, ["alg"] = {"Algonquian languages"}, ["alh"] = {"Alawa"}, ["ali"] = {"Amaimon"}, ["alj"] = {"Alangan"}, ["alk"] = {"Alak"}, ["all"] = {"Allar"}, ["alm"] = {"Amblong"}, ["aln"] = {"Gheg Albanian"}, ["alo"] = {"Larike-Wakasihu"}, ["alp"] = {"Alune"}, ["alq"] = {"Algonquin"}, ["alr"] = {"Alutor"}, ["als"] = {"Tosk Albanian"}, ["alt"] = {"Southern Altai"}, ["alu"] = {"'Are'are"}, ["alv"] = {"Atlantic-Congo languages"}, ["alw"] = {"Alaba-K’abeena", "Wanbasana"}, ["alx"] = {"Amol"}, ["aly"] = {"Alyawarr"}, ["alz"] = {"Alur"}, ["ama"] = {"Amanayé"}, ["amb"] = {"Ambo"}, ["amc"] = {"Amahuaca"}, ["ame"] = {"Yanesha'"}, ["amf"] = {"Hamer-Banna"}, ["amg"] = {"Amurdak"}, ["ami"] = {"Amis"}, ["amj"] = {"Amdang"}, ["amk"] = {"Ambai"}, ["aml"] = {"War-Jaintia"}, ["amm"] = {"Ama (Papua New Guinea)"}, ["amn"] = {"Amanab"}, ["amo"] = {"Amo"}, ["amp"] = {"Alamblak"}, ["amq"] = {"Amahai"}, ["amr"] = {"Amarakaeri"}, ["ams"] = {"Southern Amami-Oshima"}, ["amt"] = {"Amto"}, ["amu"] = {"Guerrero Amuzgo"}, ["amv"] = {"Ambelau"}, ["amw"] = {"Western Neo-Aramaic"}, ["amx"] = {"Anmatyerre"}, ["amy"] = {"Ami"}, ["amz"] = {"Atampaya"}, ["ana"] = {"Andaqui"}, ["anb"] = {"Andoa"}, ["anc"] = {"Ngas"}, ["and"] = {"Ansus"}, ["ane"] = {"Xârâcùù"}, ["anf"] = {"Animere"}, ["ang"] = {"Old English (ca. 450-1100)"}, ["anh"] = {"Nend"}, ["ani"] = {"Andi"}, ["anj"] = {"Anor"}, ["ank"] = {"Goemai"}, ["anl"] = {"Anu-Hkongso Chin"}, ["anm"] = {"Anal"}, ["ann"] = {"Obolo"}, ["ano"] = {"Andoque"}, ["anp"] = {"Angika"}, ["anq"] = {"Jarawa (India)"}, ["anr"] = {"Andh"}, ["ans"] = {"Anserma"}, ["ant"] = {"Antakarinya", "Antikarinya"}, ["anu"] = {"Anuak"}, ["anv"] = {"Denya"}, ["anw"] = {"Anaang"}, ["anx"] = {"Andra-Hus"}, ["any"] = {"Anyin"}, ["anz"] = {"Anem"}, ["aoa"] = {"Angolar"}, ["aob"] = {"Abom"}, ["aoc"] = {"Pemon"}, ["aod"] = {"Andarum"}, ["aoe"] = {"Angal Enen"}, ["aof"] = {"Bragat"}, ["aog"] = {"Angoram"}, ["aoi"] = {"Anindilyakwa"}, ["aoj"] = {"Mufian"}, ["aok"] = {"Arhö"}, ["aol"] = {"Alor"}, ["aom"] = {"Ömie"}, ["aon"] = {"Bumbita Arapesh"}, ["aor"] = {"Aore"}, ["aos"] = {"Taikat"}, ["aot"] = {"Atong (India)", "A'tong"}, ["aou"] = {"A'ou"}, ["aox"] = {"Atorada"}, ["aoz"] = {"Uab Meto"}, ["apa"] = {"Apache languages"}, ["apb"] = {"Sa'a"}, ["apc"] = {"Levantine Arabic"}, ["apd"] = {"Sudanese Arabic"}, ["ape"] = {"Bukiyip"}, ["apf"] = {"Pahanan Agta"}, ["apg"] = {"Ampanang"}, ["aph"] = {"Athpariya"}, ["api"] = {"Apiaká"}, ["apj"] = {"Jicarilla Apache"}, ["apk"] = {"Kiowa Apache"}, ["apl"] = {"Lipan Apache"}, ["apm"] = {"Mescalero-Chiricahua Apache"}, ["apn"] = {"Apinayé"}, ["apo"] = {"Ambul"}, ["app"] = {"Apma"}, ["apq"] = {"A-Pucikwar"}, ["apr"] = {"Arop-Lokep"}, ["aps"] = {"Arop-Sissano"}, ["apt"] = {"Apatani"}, ["apu"] = {"Apurinã"}, ["apv"] = {"Alapmunte"}, ["apw"] = {"Western Apache"}, ["apx"] = {"Aputai"}, ["apy"] = {"Apalaí"}, ["apz"] = {"Safeyoka"}, ["aqa"] = {"Alacalufan languages"}, ["aqc"] = {"Archi"}, ["aqd"] = {"Ampari Dogon"}, ["aqg"] = {"Arigidi"}, ["aqk"] = {"Aninka"}, ["aql"] = {"Algic languages"}, ["aqm"] = {"Atohwaim"}, ["aqn"] = {"Northern Alta"}, ["aqp"] = {"Atakapa"}, ["aqr"] = {"Arhâ"}, ["aqt"] = {"Angaité"}, ["aqz"] = {"Akuntsu"}, ["arb"] = {"Standard Arabic"}, ["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"}, ["ard"] = {"Arabana"}, ["are"] = {"Western Arrarnta"}, ["arh"] = {"Arhuaco"}, ["ari"] = {"Arikara"}, ["arj"] = {"Arapaso"}, ["ark"] = {"Arikapú"}, ["arl"] = {"Arabela"}, ["arn"] = {"Mapudungun", "Mapuche"}, ["aro"] = {"Araona"}, ["arp"] = {"Arapaho"}, ["arq"] = {"Algerian Arabic"}, ["arr"] = {"Karo (Brazil)"}, ["ars"] = {"Najdi Arabic"}, ["art"] = {"Artificial languages"}, ["aru"] = {"Aruá (Amazonas State)", "Arawá"}, ["arv"] = {"Arbore"}, ["arw"] = {"Arawak"}, ["arx"] = {"Aruá (Rodonia State)"}, ["ary"] = {"Moroccan Arabic"}, ["arz"] = {"Egyptian Arabic"}, ["asa"] = {"Asu (Tanzania)"}, ["asb"] = {"Assiniboine"}, ["asc"] = {"Casuarina Coast Asmat"}, ["ase"] = {"American Sign Language"}, ["asf"] = {"Auslan", "Australian Sign Language"}, ["asg"] = {"Cishingini"}, ["ash"] = {"Abishira"}, ["asi"] = {"Buruwai"}, ["asj"] = {"Sari"}, ["ask"] = {"Ashkun"}, ["asl"] = {"Asilulu"}, ["asn"] = {"Xingú Asuriní"}, ["aso"] = {"Dano"}, ["asp"] = {"Algerian Sign Language"}, ["asq"] = {"Austrian Sign Language"}, ["asr"] = {"Asuri"}, ["ass"] = {"Ipulo"}, ["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"}, ["asu"] = {"Tocantins Asurini"}, ["asv"] = {"Asoa"}, ["asw"] = {"Australian Aborigines Sign Language"}, ["asx"] = {"Muratayak"}, ["asy"] = {"Yaosakor Asmat"}, ["asz"] = {"As"}, ["ata"] = {"Pele-Ata"}, ["atb"] = {"Zaiwa"}, ["atc"] = {"Atsahuaca"}, ["atd"] = {"Ata Manobo"}, ["ate"] = {"Atemble"}, ["atg"] = {"Ivbie North-Okpela-Arhe"}, ["ath"] = {"Athapascan languages"}, ["ati"] = {"Attié"}, ["atj"] = {"Atikamekw"}, ["atk"] = {"Ati"}, ["atl"] = {"Mt. Iraya Agta"}, ["atm"] = {"Ata"}, ["atn"] = {"Ashtiani"}, ["ato"] = {"Atong (Cameroon)"}, ["atp"] = {"Pudtol Atta"}, ["atq"] = {"Aralle-Tabulahan"}, ["atr"] = {"Waimiri-Atroari"}, ["ats"] = {"Gros Ventre"}, ["att"] = {"Pamplona Atta"}, ["atu"] = {"Reel"}, ["atv"] = {"Northern Altai"}, ["atw"] = {"Atsugewi"}, ["atx"] = {"Arutani"}, ["aty"] = {"Aneityum"}, ["atz"] = {"Arta"}, ["aua"] = {"Asumboa"}, ["aub"] = {"Alugu"}, ["auc"] = {"Waorani"}, ["aud"] = {"Anuta"}, ["auf"] = {"Arauan languages"}, ["aug"] = {"Aguna"}, ["auh"] = {"Aushi"}, ["aui"] = {"Anuki"}, ["auj"] = {"Awjilah"}, ["auk"] = {"Heyo"}, ["aul"] = {"Aulua"}, ["aum"] = {"Asu (Nigeria)"}, ["aun"] = {"Molmo One"}, ["auo"] = {"Auyokawa"}, ["aup"] = {"Makayam"}, ["auq"] = {"Anus", "Korur"}, ["aur"] = {"Aruek"}, ["aus"] = {"Australian languages"}, ["aut"] = {"Austral"}, ["auu"] = {"Auye"}, ["auw"] = {"Awyi"}, ["aux"] = {"Aurá"}, ["auy"] = {"Awiyaana"}, ["auz"] = {"Uzbeki Arabic"}, ["avb"] = {"Avau"}, ["avd"] = {"Alviri-Vidari"}, ["avi"] = {"Avikam"}, ["avk"] = {"Kotava"}, ["avl"] = {"Eastern Egyptian Bedawi Arabic"}, ["avm"] = {"Angkamuthi"}, ["avn"] = {"Avatime"}, ["avo"] = {"Agavotaguerra"}, ["avs"] = {"Aushiri"}, ["avt"] = {"Au"}, ["avu"] = {"Avokaya"}, ["avv"] = {"Avá-Canoeiro"}, ["awa"] = {"Awadhi"}, ["awb"] = {"Awa (Papua New Guinea)"}, ["awc"] = {"Cicipu"}, ["awd"] = {"Arawakan languages"}, ["awe"] = {"Awetí"}, ["awg"] = {"Anguthimri"}, ["awh"] = {"Awbono"}, ["awi"] = {"Aekyom"}, ["awk"] = {"Awabakal"}, ["awm"] = {"Arawum"}, ["awn"] = {"Awngi"}, ["awo"] = {"Awak"}, ["awr"] = {"Awera"}, ["aws"] = {"South Awyu"}, ["awt"] = {"Araweté"}, ["awu"] = {"Central Awyu"}, ["awv"] = {"Jair Awyu"}, ["aww"] = {"Awun"}, ["awx"] = {"Awara"}, ["awy"] = {"Edera Awyu"}, ["axb"] = {"Abipon"}, ["axe"] = {"Ayerrerenge"}, ["axg"] = {"Mato Grosso Arára"}, ["axk"] = {"Yaka (Central African Republic)"}, ["axl"] = {"Lower Southern Aranda"}, ["axm"] = {"Middle Armenian"}, ["axx"] = {"Xârâgurè"}, ["aya"] = {"Awar"}, ["ayb"] = {"Ayizo Gbe"}, ["ayc"] = {"Southern Aymara"}, ["ayd"] = {"Ayabadhu"}, ["aye"] = {"Ayere"}, ["ayg"] = {"Ginyanga"}, ["ayh"] = {"Hadrami Arabic"}, ["ayi"] = {"Leyigha"}, ["ayk"] = {"Akuku"}, ["ayl"] = {"Libyan Arabic"}, ["ayn"] = {"Sanaani Arabic"}, ["ayo"] = {"Ayoreo"}, ["ayp"] = {"North Mesopotamian Arabic"}, ["ayq"] = {"Ayi (Papua New Guinea)"}, ["ayr"] = {"Central Aymara"}, ["ays"] = {"Sorsogon Ayta"}, ["ayt"] = {"Magbukun Ayta"}, ["ayu"] = {"Ayu"}, ["ayz"] = {"Mai Brat"}, ["aza"] = {"Azha"}, ["azb"] = {"South Azerbaijani"}, ["azc"] = {"Uto-Aztecan languages"}, ["azd"] = {"Eastern Durango Nahuatl"}, ["azg"] = {"San Pedro Amuzgos Amuzgo"}, ["azj"] = {"North Azerbaijani"}, ["azm"] = {"Ipalapa Amuzgo"}, ["azn"] = {"Western Durango Nahuatl"}, ["azo"] = {"Awing"}, ["azt"] = {"Faire Atta"}, ["azz"] = {"Highland Puebla Nahuatl"}, ["baa"] = {"Babatana"}, ["bab"] = {"Bainouk-Gunyuño"}, ["bac"] = {"Badui"}, ["bad"] = {"Banda languages"}, ["bae"] = {"Baré"}, ["baf"] = {"Nubaca"}, ["bag"] = {"Tuki"}, ["bah"] = {"Bahamas Creole English"}, ["bai"] = {"Bamileke languages"}, ["baj"] = {"Barakai"}, ["bal"] = {"Baluchi"}, ["ban"] = {"Balinese"}, ["bao"] = {"Waimaha"}, ["bap"] = {"Bantawa"}, ["bar"] = {"Bavarian"}, ["bas"] = {"Basa (Cameroon)"}, ["bat"] = {"Baltic languages"}, ["bau"] = {"Bada (Nigeria)"}, ["bav"] = {"Vengo"}, ["baw"] = {"Bambili-Bambui"}, ["bax"] = {"Bamun"}, ["bay"] = {"Batuley"}, ["bba"] = {"Baatonum"}, ["bbb"] = {"Barai"}, ["bbc"] = {"Batak Toba"}, ["bbd"] = {"Bau"}, ["bbe"] = {"Bangba"}, ["bbf"] = {"Baibai"}, ["bbg"] = {"Barama"}, ["bbh"] = {"Bugan"}, ["bbi"] = {"Barombi"}, ["bbj"] = {"Ghomálá'"}, ["bbk"] = {"Babanki"}, ["bbl"] = {"Bats"}, ["bbm"] = {"Babango"}, ["bbn"] = {"Uneapa"}, ["bbo"] = {"Northern Bobo Madaré", "Konabéré"}, ["bbp"] = {"West Central Banda"}, ["bbq"] = {"Bamali"}, ["bbr"] = {"Girawa"}, ["bbs"] = {"Bakpinka"}, ["bbt"] = {"Mburku"}, ["bbu"] = {"Kulung (Nigeria)"}, ["bbv"] = {"Karnai"}, ["bbw"] = {"Baba"}, ["bbx"] = {"Bubia"}, ["bby"] = {"Befang"}, ["bca"] = {"Central Bai"}, ["bcb"] = {"Bainouk-Samik"}, ["bcc"] = {"Southern Balochi"}, ["bcd"] = {"North Babar"}, ["bce"] = {"Bamenyam"}, ["bcf"] = {"Bamu"}, ["bcg"] = {"Baga Pokur"}, ["bch"] = {"Bariai"}, ["bci"] = {"Baoulé"}, ["bcj"] = {"Bardi"}, ["bck"] = {"Bunuba"}, ["bcl"] = {"Central Bikol"}, ["bcm"] = {"Bannoni"}, ["bcn"] = {"Bali (Nigeria)"}, ["bco"] = {"Kaluli"}, ["bcp"] = {"Bali (Democratic Republic of Congo)"}, ["bcq"] = {"Bench"}, ["bcr"] = {"Babine"}, ["bcs"] = {"Kohumono"}, ["bct"] = {"Bendi"}, ["bcu"] = {"Awad Bing"}, ["bcv"] = {"Shoo-Minda-Nye"}, ["bcw"] = {"Bana"}, ["bcy"] = {"Bacama"}, ["bcz"] = {"Bainouk-Gunyaamolo"}, ["bda"] = {"Bayot"}, ["bdb"] = {"Basap"}, ["bdc"] = {"Emberá-Baudó"}, ["bdd"] = {"Bunama"}, ["bde"] = {"Bade"}, ["bdf"] = {"Biage"}, ["bdg"] = {"Bonggi"}, ["bdh"] = {"Baka (South Sudan)"}, ["bdi"] = {"Burun"}, ["bdj"] = {"Bai (South Sudan)", "Bai"}, ["bdk"] = {"Budukh"}, ["bdl"] = {"Indonesian Bajau"}, ["bdm"] = {"Buduma"}, ["bdn"] = {"Baldemu"}, ["bdo"] = {"Morom"}, ["bdp"] = {"Bende"}, ["bdq"] = {"Bahnar"}, ["bdr"] = {"West Coast Bajau"}, ["bds"] = {"Burunge"}, ["bdt"] = {"Bokoto"}, ["bdu"] = {"Oroko"}, ["bdv"] = {"Bodo Parja"}, ["bdw"] = {"Baham"}, ["bdx"] = {"Budong-Budong"}, ["bdy"] = {"Bandjalang"}, ["bdz"] = {"Badeshi"}, ["bea"] = {"Beaver"}, ["beb"] = {"Bebele"}, ["bec"] = {"Iceve-Maci"}, ["bed"] = {"Bedoanas"}, ["bee"] = {"Byangsi"}, ["bef"] = {"Benabena"}, ["beg"] = {"Belait"}, ["beh"] = {"Biali"}, ["bei"] = {"Bekati'"}, ["bej"] = {"Beja", "Bedawiyet"}, ["bek"] = {"Bebeli"}, ["bem"] = {"Bemba (Zambia)"}, ["beo"] = {"Beami"}, ["bep"] = {"Besoa"}, ["beq"] = {"Beembe"}, ["ber"] = {"Berber languages"}, ["bes"] = {"Besme"}, ["bet"] = {"Guiberoua Béte"}, ["beu"] = {"Blagar"}, ["bev"] = {"Daloa Bété"}, ["bew"] = {"Betawi"}, ["bex"] = {"Jur Modo"}, ["bey"] = {"Beli (Papua New Guinea)"}, ["bez"] = {"Bena (Tanzania)"}, ["bfa"] = {"Bari"}, ["bfb"] = {"Pauri Bareli"}, ["bfc"] = {"Panyi Bai", "Northern Bai"}, ["bfd"] = {"Bafut"}, ["bfe"] = {"Betaf", "Tena"}, ["bff"] = {"Bofi"}, ["bfg"] = {"Busang Kayan"}, ["bfh"] = {"Blafe"}, ["bfi"] = {"British Sign Language"}, ["bfj"] = {"Bafanji"}, ["bfk"] = {"Ban Khor Sign Language"}, ["bfl"] = {"Banda-Ndélé"}, ["bfm"] = {"Mmen"}, ["bfn"] = {"Bunak"}, ["bfo"] = {"Malba Birifor"}, ["bfp"] = {"Beba"}, ["bfq"] = {"Badaga"}, ["bfr"] = {"Bazigar"}, ["bfs"] = {"Southern Bai"}, ["bft"] = {"Balti"}, ["bfu"] = {"Gahri"}, ["bfw"] = {"Bondo"}, ["bfx"] = {"Bantayanon"}, ["bfy"] = {"Bagheli"}, ["bfz"] = {"Mahasu Pahari"}, ["bga"] = {"Gwamhi-Wuri"}, ["bgb"] = {"Bobongko"}, ["bgc"] = {"Haryanvi"}, ["bgd"] = {"Rathwi Bareli"}, ["bge"] = {"Bauria"}, ["bgf"] = {"Bangandu"}, ["bgg"] = {"Bugun"}, ["bgi"] = {"Giangan"}, ["bgj"] = {"Bangolan"}, ["bgk"] = {"Bit", "Buxinhua"}, ["bgl"] = {"Bo (Laos)"}, ["bgn"] = {"Western Balochi"}, ["bgo"] = {"Baga Koga"}, ["bgp"] = {"Eastern Balochi"}, ["bgq"] = {"Bagri"}, ["bgr"] = {"Bawm Chin"}, ["bgs"] = {"Tagabawa"}, ["bgt"] = {"Bughotu"}, ["bgu"] = {"Mbongno"}, ["bgv"] = {"Warkay-Bipim"}, ["bgw"] = {"Bhatri"}, ["bgx"] = {"Balkan Gagauz Turkish"}, ["bgy"] = {"Benggoi"}, ["bgz"] = {"Banggai"}, ["bha"] = {"Bharia"}, ["bhb"] = {"Bhili"}, ["bhc"] = {"Biga"}, ["bhd"] = {"Bhadrawahi"}, ["bhe"] = {"Bhaya"}, ["bhf"] = {"Odiai"}, ["bhg"] = {"Binandere"}, ["bhh"] = {"Bukharic"}, ["bhi"] = {"Bhilali"}, ["bhj"] = {"Bahing"}, ["bhl"] = {"Bimin"}, ["bhm"] = {"Bathari"}, ["bhn"] = {"Bohtan Neo-Aramaic"}, ["bho"] = {"Bhojpuri"}, ["bhp"] = {"Bima"}, ["bhq"] = {"Tukang Besi South"}, ["bhr"] = {"Bara Malagasy"}, ["bhs"] = {"Buwal"}, ["bht"] = {"Bhattiyali"}, ["bhu"] = {"Bhunjia"}, ["bhv"] = {"Bahau"}, ["bhw"] = {"Biak"}, ["bhx"] = {"Bhalay"}, ["bhy"] = {"Bhele"}, ["bhz"] = {"Bada (Indonesia)"}, ["bia"] = {"Badimaya"}, ["bib"] = {"Bissa", "Bisa"}, ["bid"] = {"Bidiyo"}, ["bie"] = {"Bepour"}, ["bif"] = {"Biafada"}, ["big"] = {"Biangai"}, ["bik"] = {"Bikol"}, ["bil"] = {"Bile"}, ["bim"] = {"Bimoba"}, ["bin"] = {"Bini", "Edo"}, ["bio"] = {"Nai"}, ["bip"] = {"Bila"}, ["biq"] = {"Bipi"}, ["bir"] = {"Bisorio"}, ["bit"] = {"Berinomo"}, ["biu"] = {"Biete"}, ["biv"] = {"Southern Birifor"}, ["biw"] = {"Kol (Cameroon)"}, ["bix"] = {"Bijori"}, ["biy"] = {"Birhor"}, ["biz"] = {"Baloi"}, ["bja"] = {"Budza"}, ["bjb"] = {"Banggarla"}, ["bjc"] = {"Bariji"}, ["bje"] = {"Biao-Jiao Mien"}, ["bjf"] = {"Barzani Jewish Neo-Aramaic"}, ["bjg"] = {"Bidyogo"}, ["bjh"] = {"Bahinemo"}, ["bji"] = {"Burji"}, ["bjj"] = {"Kanauji"}, ["bjk"] = {"Barok"}, ["bjl"] = {"Bulu (Papua New Guinea)"}, ["bjm"] = {"Bajelani"}, ["bjn"] = {"Banjar"}, ["bjo"] = {"Mid-Southern Banda"}, ["bjp"] = {"Fanamaket"}, ["bjr"] = {"Binumarien"}, ["bjs"] = {"Bajan"}, ["bjt"] = {"Balanta-Ganja"}, ["bju"] = {"Busuu"}, ["bjv"] = {"Bedjond"}, ["bjw"] = {"Bakwé"}, ["bjx"] = {"Banao Itneg"}, ["bjy"] = {"Bayali"}, ["bjz"] = {"Baruga"}, ["bka"] = {"Kyak"}, ["bkc"] = {"Baka (Cameroon)"}, ["bkd"] = {"Binukid", "Talaandig"}, ["bkf"] = {"Beeke"}, ["bkg"] = {"Buraka"}, ["bkh"] = {"Bakoko"}, ["bki"] = {"Baki"}, ["bkj"] = {"Pande"}, ["bkk"] = {"Brokskat"}, ["bkl"] = {"Berik"}, ["bkm"] = {"Kom (Cameroon)"}, ["bkn"] = {"Bukitan"}, ["bko"] = {"Kwa'"}, ["bkp"] = {"Boko (Democratic Republic of Congo)"}, ["bkq"] = {"Bakairí"}, ["bkr"] = {"Bakumpai"}, ["bks"] = {"Northern Sorsoganon"}, ["bkt"] = {"Boloki"}, ["bku"] = {"Buhid"}, ["bkv"] = {"Bekwarra"}, ["bkw"] = {"Bekwel"}, ["bkx"] = {"Baikeno"}, ["bky"] = {"Bokyi"}, ["bkz"] = {"Bungku"}, ["bla"] = {"Siksika"}, ["blb"] = {"Bilua"}, ["blc"] = {"Bella Coola"}, ["bld"] = {"Bolango"}, ["ble"] = {"Balanta-Kentohe"}, ["blf"] = {"Buol"}, ["blh"] = {"Kuwaa"}, ["bli"] = {"Bolia"}, ["blj"] = {"Bolongan"}, ["blk"] = {"Pa'o Karen", "Pa'O"}, ["bll"] = {"Biloxi"}, ["blm"] = {"Beli (South Sudan)"}, ["bln"] = {"Southern Catanduanes Bikol"}, ["blo"] = {"Anii"}, ["blp"] = {"Blablanga"}, ["blq"] = {"Baluan-Pam"}, ["blr"] = {"Blang"}, ["bls"] = {"Balaesang"}, ["blt"] = {"Tai Dam"}, ["blv"] = {"Kibala", "Bolo"}, ["blw"] = {"Balangao"}, ["blx"] = {"Mag-Indi Ayta"}, ["bly"] = {"Notre"}, ["blz"] = {"Balantak"}, ["bma"] = {"Lame"}, ["bmb"] = {"Bembe"}, ["bmc"] = {"Biem"}, ["bmd"] = {"Baga Manduri"}, ["bme"] = {"Limassa"}, ["bmf"] = {"Bom-Kim"}, ["bmg"] = {"Bamwe"}, ["bmh"] = {"Kein"}, ["bmi"] = {"Bagirmi"}, ["bmj"] = {"Bote-Majhi"}, ["bmk"] = {"Ghayavi"}, ["bml"] = {"Bomboli"}, ["bmm"] = {"Northern Betsimisaraka Malagasy"}, ["bmn"] = {"Bina (Papua New Guinea)"}, ["bmo"] = {"Bambalang"}, ["bmp"] = {"Bulgebi"}, ["bmq"] = {"Bomu"}, ["bmr"] = {"Muinane"}, ["bms"] = {"Bilma Kanuri"}, ["bmt"] = {"Biao Mon"}, ["bmu"] = {"Somba-Siawari"}, ["bmv"] = {"Bum"}, ["bmw"] = {"Bomwali"}, ["bmx"] = {"Baimak"}, ["bmz"] = {"Baramu"}, ["bna"] = {"Bonerate"}, ["bnb"] = {"Bookan"}, ["bnc"] = {"Bontok"}, ["bnd"] = {"Banda (Indonesia)"}, ["bne"] = {"Bintauna"}, ["bnf"] = {"Masiwang"}, ["bng"] = {"Benga"}, ["bni"] = {"Bangi"}, ["bnj"] = {"Eastern Tawbuid"}, ["bnk"] = {"Bierebo"}, ["bnl"] = {"Boon"}, ["bnm"] = {"Batanga"}, ["bnn"] = {"Bunun"}, ["bno"] = {"Bantoanon"}, ["bnp"] = {"Bola"}, ["bnq"] = {"Bantik"}, ["bnr"] = {"Butmas-Tur"}, ["bns"] = {"Bundeli"}, ["bnt"] = {"Bantu languages"}, ["bnu"] = {"Bentong"}, ["bnv"] = {"Bonerif", "Beneraf", "Edwas"}, ["bnw"] = {"Bisis"}, ["bnx"] = {"Bangubangu"}, ["bny"] = {"Bintulu"}, ["bnz"] = {"Beezen"}, ["boa"] = {"Bora"}, ["bob"] = {"Aweer"}, ["boe"] = {"Mundabli"}, ["bof"] = {"Bolon"}, ["bog"] = {"Bamako Sign Language"}, ["boh"] = {"Boma"}, ["boi"] = {"Barbareño"}, ["boj"] = {"Anjam"}, ["bok"] = {"Bonjo"}, ["bol"] = {"Bole"}, ["bom"] = {"Berom"}, ["bon"] = {"Bine"}, ["boo"] = {"Tiemacèwè Bozo"}, ["bop"] = {"Bonkiman"}, ["boq"] = {"Bogaya"}, ["bor"] = {"Borôro"}, ["bot"] = {"Bongo"}, ["bou"] = {"Bondei"}, ["bov"] = {"Tuwuli"}, ["bow"] = {"Rema"}, ["box"] = {"Buamu"}, ["boy"] = {"Bodo (Central African Republic)"}, ["boz"] = {"Tiéyaxo Bozo"}, ["bpa"] = {"Daakaka"}, ["bpc"] = {"Mbuk"}, ["bpd"] = {"Banda-Banda"}, ["bpe"] = {"Bauni"}, ["bpg"] = {"Bonggo"}, ["bph"] = {"Botlikh"}, ["bpi"] = {"Bagupi"}, ["bpj"] = {"Binji"}, ["bpk"] = {"Orowe", "'Ôrôê"}, ["bpl"] = {"Broome Pearling Lugger Pidgin"}, ["bpm"] = {"Biyom"}, ["bpn"] = {"Dzao Min"}, ["bpo"] = {"Anasi"}, ["bpp"] = {"Kaure"}, ["bpq"] = {"Banda Malay"}, ["bpr"] = {"Koronadal Blaan"}, ["bps"] = {"Sarangani Blaan"}, ["bpt"] = {"Barrow Point"}, ["bpu"] = {"Bongu"}, ["bpv"] = {"Bian Marind"}, ["bpw"] = {"Bo (Papua New Guinea)"}, ["bpx"] = {"Palya Bareli"}, ["bpy"] = {"Bishnupriya"}, ["bpz"] = {"Bilba"}, ["bqa"] = {"Tchumbuli"}, ["bqb"] = {"Bagusa"}, ["bqc"] = {"Boko (Benin)", "Boo"}, ["bqd"] = {"Bung"}, ["bqf"] = {"Baga Kaloum"}, ["bqg"] = {"Bago-Kusuntu"}, ["bqh"] = {"Baima"}, ["bqi"] = {"Bakhtiari"}, ["bqj"] = {"Bandial"}, ["bqk"] = {"Banda-Mbrès"}, ["bql"] = {"Bilakura"}, ["bqm"] = {"Wumboko"}, ["bqn"] = {"Bulgarian Sign Language"}, ["bqo"] = {"Balo"}, ["bqp"] = {"Busa"}, ["bqq"] = {"Biritai"}, ["bqr"] = {"Burusu"}, ["bqs"] = {"Bosngun"}, ["bqt"] = {"Bamukumbit"}, ["bqu"] = {"Boguru"}, ["bqv"] = {"Koro Wachi", "Begbere-Ejar"}, ["bqw"] = {"Buru (Nigeria)"}, ["bqx"] = {"Baangi"}, ["bqy"] = {"Bengkala Sign Language"}, ["bqz"] = {"Bakaka"}, ["bra"] = {"Braj"}, ["brb"] = {"Brao", "Lave"}, ["brc"] = {"Berbice Creole Dutch"}, ["brd"] = {"Baraamu"}, ["brf"] = {"Bira"}, ["brg"] = {"Baure"}, ["brh"] = {"Brahui"}, ["bri"] = {"Mokpwe"}, ["brj"] = {"Bieria"}, ["brk"] = {"Birked"}, ["brl"] = {"Birwa"}, ["brm"] = {"Barambu"}, ["brn"] = {"Boruca"}, ["bro"] = {"Brokkat"}, ["brp"] = {"Barapasi"}, ["brq"] = {"Breri"}, ["brr"] = {"Birao"}, ["brs"] = {"Baras"}, ["brt"] = {"Bitare"}, ["bru"] = {"Eastern Bru"}, ["brv"] = {"Western Bru"}, ["brw"] = {"Bellari"}, ["brx"] = {"Bodo (India)"}, ["bry"] = {"Burui"}, ["brz"] = {"Bilbil"}, ["bsa"] = {"Abinomn"}, ["bsb"] = {"Brunei Bisaya"}, ["bsc"] = {"Bassari", "Oniyan"}, ["bse"] = {"Wushi"}, ["bsf"] = {"Bauchi"}, ["bsg"] = {"Bashkardi"}, ["bsh"] = {"Kati"}, ["bsi"] = {"Bassossi"}, ["bsj"] = {"Bangwinji"}, ["bsk"] = {"Burushaski"}, ["bsl"] = {"Basa-Gumna"}, ["bsm"] = {"Busami"}, ["bsn"] = {"Barasana-Eduria"}, ["bso"] = {"Buso"}, ["bsp"] = {"Baga Sitemu"}, ["bsq"] = {"Bassa"}, ["bsr"] = {"Bassa-Kontagora"}, ["bss"] = {"Akoose"}, ["bst"] = {"Basketo"}, ["bsu"] = {"Bahonsuai"}, ["bsv"] = {"Baga Sobané"}, ["bsw"] = {"Baiso"}, ["bsx"] = {"Yangkam"}, ["bsy"] = {"Sabah Bisaya"}, ["bta"] = {"Bata"}, ["btc"] = {"Bati (Cameroon)"}, ["btd"] = {"Batak Dairi"}, ["bte"] = {"Gamo-Ningi"}, ["btf"] = {"Birgit"}, ["btg"] = {"Gagnoa Bété"}, ["bth"] = {"Biatah Bidayuh"}, ["bti"] = {"Burate"}, ["btj"] = {"Bacanese Malay"}, ["btk"] = {"Batak languages"}, ["btm"] = {"Batak Mandailing"}, ["btn"] = {"Ratagnon"}, ["bto"] = {"Rinconada Bikol"}, ["btp"] = {"Budibud"}, ["btq"] = {"Batek"}, ["btr"] = {"Baetora"}, ["bts"] = {"Batak Simalungun"}, ["btt"] = {"Bete-Bendi"}, ["btu"] = {"Batu"}, ["btv"] = {"Bateri"}, ["btw"] = {"Butuanon"}, ["btx"] = {"Batak Karo"}, ["bty"] = {"Bobot"}, ["btz"] = {"Batak Alas-Kluet"}, ["bua"] = {"Buriat"}, ["bub"] = {"Bua"}, ["buc"] = {"Bushi"}, ["bud"] = {"Ntcham"}, ["bue"] = {"Beothuk"}, ["buf"] = {"Bushoong"}, ["bug"] = {"Buginese"}, ["buh"] = {"Younuo Bunu"}, ["bui"] = {"Bongili"}, ["buj"] = {"Basa-Gurmana"}, ["buk"] = {"Bugawac"}, ["bum"] = {"Bulu (Cameroon)"}, ["bun"] = {"Sherbro"}, ["buo"] = {"Terei"}, ["bup"] = {"Busoa"}, ["buq"] = {"Brem"}, ["bus"] = {"Bokobaru"}, ["but"] = {"Bungain"}, ["buu"] = {"Budu"}, ["buv"] = {"Bun"}, ["buw"] = {"Bubi"}, ["bux"] = {"Boghom"}, ["buy"] = {"Bullom So"}, ["buz"] = {"Bukwen"}, ["bva"] = {"Barein"}, ["bvb"] = {"Bube"}, ["bvc"] = {"Baelelea"}, ["bvd"] = {"Baeggu"}, ["bve"] = {"Berau Malay"}, ["bvf"] = {"Boor"}, ["bvg"] = {"Bonkeng"}, ["bvh"] = {"Bure"}, ["bvi"] = {"Belanda Viri"}, ["bvj"] = {"Baan"}, ["bvk"] = {"Bukat"}, ["bvl"] = {"Bolivian Sign Language"}, ["bvm"] = {"Bamunka"}, ["bvn"] = {"Buna"}, ["bvo"] = {"Bolgo"}, ["bvp"] = {"Bumang"}, ["bvq"] = {"Birri"}, ["bvr"] = {"Burarra"}, ["bvt"] = {"Bati (Indonesia)"}, ["bvu"] = {"Bukit Malay"}, ["bvv"] = {"Baniva"}, ["bvw"] = {"Boga"}, ["bvx"] = {"Dibole"}, ["bvy"] = {"Baybayanon"}, ["bvz"] = {"Bauzi"}, ["bwa"] = {"Bwatoo"}, ["bwb"] = {"Namosi-Naitasiri-Serua"}, ["bwc"] = {"Bwile"}, ["bwd"] = {"Bwaidoka"}, ["bwe"] = {"Bwe Karen"}, ["bwf"] = {"Boselewa"}, ["bwg"] = {"Barwe"}, ["bwh"] = {"Bishuo"}, ["bwi"] = {"Baniwa"}, ["bwj"] = {"Láá Láá Bwamu"}, ["bwk"] = {"Bauwaki"}, ["bwl"] = {"Bwela"}, ["bwm"] = {"Biwat"}, ["bwn"] = {"Wunai Bunu"}, ["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"}, ["bwp"] = {"Mandobo Bawah"}, ["bwq"] = {"Southern Bobo Madaré"}, ["bwr"] = {"Bura-Pabir"}, ["bws"] = {"Bomboma"}, ["bwt"] = {"Bafaw-Balong"}, ["bwu"] = {"Buli (Ghana)"}, ["bww"] = {"Bwa"}, ["bwx"] = {"Bu-Nao Bunu"}, ["bwy"] = {"Cwi Bwamu"}, ["bwz"] = {"Bwisi"}, ["bxa"] = {"Tairaha"}, ["bxb"] = {"Belanda Bor"}, ["bxc"] = {"Molengue"}, ["bxd"] = {"Pela"}, ["bxe"] = {"Birale"}, ["bxf"] = {"Bilur", "Minigir"}, ["bxg"] = {"Bangala"}, ["bxh"] = {"Buhutu"}, ["bxi"] = {"Pirlatapa"}, ["bxj"] = {"Bayungu"}, ["bxk"] = {"Bukusu", "Lubukusu"}, ["bxl"] = {"Jalkunan"}, ["bxm"] = {"Mongolia Buriat"}, ["bxn"] = {"Burduna"}, ["bxo"] = {"Barikanchi"}, ["bxp"] = {"Bebil"}, ["bxq"] = {"Beele"}, ["bxr"] = {"Russia Buriat"}, ["bxs"] = {"Busam"}, ["bxu"] = {"China Buriat"}, ["bxv"] = {"Berakou"}, ["bxw"] = {"Bankagooma"}, ["bxz"] = {"Binahari"}, ["bya"] = {"Batak"}, ["byb"] = {"Bikya"}, ["byc"] = {"Ubaghara"}, ["byd"] = {"Benyadu'"}, ["bye"] = {"Pouye"}, ["byf"] = {"Bete"}, ["byg"] = {"Baygo"}, ["byh"] = {"Bhujel"}, ["byi"] = {"Buyu"}, ["byj"] = {"Bina (Nigeria)"}, ["byk"] = {"Biao"}, ["byl"] = {"Bayono"}, ["bym"] = {"Bidjara"}, ["byn"] = {"Bilin", "Blin"}, ["byo"] = {"Biyo"}, ["byp"] = {"Bumaji"}, ["byq"] = {"Basay"}, ["byr"] = {"Baruya", "Yipma"}, ["bys"] = {"Burak"}, ["byt"] = {"Berti"}, ["byv"] = {"Medumba"}, ["byw"] = {"Belhariya"}, ["byx"] = {"Qaqet"}, ["byz"] = {"Banaro"}, ["bza"] = {"Bandi"}, ["bzb"] = {"Andio"}, ["bzc"] = {"Southern Betsimisaraka Malagasy"}, ["bzd"] = {"Bribri"}, ["bze"] = {"Jenaama Bozo"}, ["bzf"] = {"Boikin"}, ["bzg"] = {"Babuza"}, ["bzh"] = {"Mapos Buang"}, ["bzi"] = {"Bisu"}, ["bzj"] = {"Belize Kriol English"}, ["bzk"] = {"Nicaragua Creole English"}, ["bzl"] = {"Boano (Sulawesi)"}, ["bzm"] = {"Bolondo"}, ["bzn"] = {"Boano (Maluku)"}, ["bzo"] = {"Bozaba"}, ["bzp"] = {"Kemberano"}, ["bzq"] = {"Buli (Indonesia)"}, ["bzr"] = {"Biri"}, ["bzs"] = {"Brazilian Sign Language"}, ["bzt"] = {"Brithenig"}, ["bzu"] = {"Burmeso"}, ["bzv"] = {"Naami"}, ["bzw"] = {"Basa (Nigeria)"}, ["bzx"] = {"Kɛlɛngaxo Bozo"}, ["bzy"] = {"Obanliku"}, ["bzz"] = {"Evant"}, ["caa"] = {"Chortí"}, ["cab"] = {"Garifuna"}, ["cac"] = {"Chuj"}, ["cad"] = {"Caddo"}, ["cae"] = {"Lehar", "Laalaa"}, ["caf"] = {"Southern Carrier"}, ["cag"] = {"Nivaclé"}, ["cah"] = {"Cahuarano"}, ["cai"] = {"Central American Indian languages"}, ["caj"] = {"Chané"}, ["cak"] = {"Kaqchikel", "Cakchiquel"}, ["cal"] = {"Carolinian"}, ["cam"] = {"Cemuhî"}, ["can"] = {"Chambri"}, ["cao"] = {"Chácobo"}, ["cap"] = {"Chipaya"}, ["caq"] = {"Car Nicobarese"}, ["car"] = {"Galibi Carib"}, ["cas"] = {"Tsimané"}, ["cau"] = {"Caucasian languages"}, ["cav"] = {"Cavineña"}, ["caw"] = {"Callawalla"}, ["cax"] = {"Chiquitano"}, ["cay"] = {"Cayuga"}, ["caz"] = {"Canichana"}, ["cba"] = {"Chibchan languages"}, ["cbb"] = {"Cabiyarí"}, ["cbc"] = {"Carapana"}, ["cbd"] = {"Carijona"}, ["cbg"] = {"Chimila"}, ["cbi"] = {"Chachi"}, ["cbj"] = {"Ede Cabe"}, ["cbk"] = {"Chavacano"}, ["cbl"] = {"Bualkhaw Chin"}, ["cbn"] = {"Nyahkur"}, ["cbo"] = {"Izora"}, ["cbq"] = {"Tsucuba", "Cuba"}, ["cbr"] = {"Cashibo-Cacataibo"}, ["cbs"] = {"Cashinahua"}, ["cbt"] = {"Chayahuita"}, ["cbu"] = {"Candoshi-Shapra"}, ["cbv"] = {"Cacua"}, ["cbw"] = {"Kinabalian"}, ["cby"] = {"Carabayo"}, ["ccc"] = {"Chamicuro"}, ["ccd"] = {"Cafundo Creole"}, ["cce"] = {"Chopi"}, ["ccg"] = {"Samba Daka"}, ["cch"] = {"Atsam"}, ["ccj"] = {"Kasanga"}, ["ccl"] = {"Cutchi-Swahili"}, ["ccm"] = {"Malaccan Creole Malay"}, ["ccn"] = {"North Caucasian languages"}, ["cco"] = {"Comaltepec Chinantec"}, ["ccp"] = {"Chakma"}, ["ccr"] = {"Cacaopera"}, ["ccs"] = {"South Caucasian languages"}, ["cda"] = {"Choni"}, ["cdc"] = {"Chadic languages"}, ["cdd"] = {"Caddoan languages"}, ["cde"] = {"Chenchu"}, ["cdf"] = {"Chiru"}, ["cdh"] = {"Chambeali"}, ["cdi"] = {"Chodri"}, ["cdj"] = {"Churahi"}, ["cdm"] = {"Chepang"}, ["cdn"] = {"Chaudangsi"}, ["cdo"] = {"Min Dong Chinese"}, ["cdr"] = {"Cinda-Regi-Tiyal"}, ["cds"] = {"Chadian Sign Language"}, ["cdy"] = {"Chadong"}, ["cdz"] = {"Koda"}, ["cea"] = {"Lower Chehalis"}, ["ceb"] = {"Cebuano"}, ["ceg"] = {"Chamacoco"}, ["cek"] = {"Eastern Khumi Chin"}, ["cel"] = {"Celtic languages"}, ["cen"] = {"Cen"}, ["cet"] = {"Centúúm"}, ["cey"] = {"Ekai Chin"}, ["cfa"] = {"Dijim-Bwilim"}, ["cfd"] = {"Cara"}, ["cfg"] = {"Como Karim"}, ["cfm"] = {"Falam Chin"}, ["cga"] = {"Changriwa"}, ["cgc"] = {"Kagayanen"}, ["cgg"] = {"Chiga"}, ["cgk"] = {"Chocangacakha"}, ["chb"] = {"Chibcha"}, ["chc"] = {"Catawba"}, ["chd"] = {"Highland Oaxaca Chontal"}, ["chf"] = {"Tabasco Chontal"}, ["chg"] = {"Chagatai"}, ["chh"] = {"Chinook"}, ["chj"] = {"Ojitlán Chinantec"}, ["chk"] = {"Chuukese"}, ["chl"] = {"Cahuilla"}, ["chm"] = {"Mari (Russia)"}, ["chn"] = {"Chinook jargon"}, ["cho"] = {"Choctaw"}, ["chp"] = {"Chipewyan", "Dene Suline"}, ["chq"] = {"Quiotepec Chinantec"}, ["chr"] = {"Cherokee"}, ["cht"] = {"Cholón"}, ["chw"] = {"Chuwabu"}, ["chx"] = {"Chantyal"}, ["chy"] = {"Cheyenne"}, ["chz"] = {"Ozumacín Chinantec"}, ["cia"] = {"Cia-Cia"}, ["cib"] = {"Ci Gbe"}, ["cic"] = {"Chickasaw"}, ["cid"] = {"Chimariko"}, ["cie"] = {"Cineni"}, ["cih"] = {"Chinali"}, ["cik"] = {"Chitkuli Kinnauri"}, ["cim"] = {"Cimbrian"}, ["cin"] = {"Cinta Larga"}, ["cip"] = {"Chiapanec"}, ["cir"] = {"Tiri", "Haméa", "Méa"}, ["ciw"] = {"Chippewa"}, ["ciy"] = {"Chaima"}, ["cja"] = {"Western Cham"}, ["cje"] = {"Chru"}, ["cjh"] = {"Upper Chehalis"}, ["cji"] = {"Chamalal"}, ["cjk"] = {"Chokwe"}, ["cjm"] = {"Eastern Cham"}, ["cjn"] = {"Chenapian"}, ["cjo"] = {"Ashéninka Pajonal"}, ["cjp"] = {"Cabécar"}, ["cjs"] = {"Shor"}, ["cjv"] = {"Chuave"}, ["cjy"] = {"Jinyu Chinese"}, ["ckb"] = {"Central Kurdish"}, ["ckh"] = {"Chak"}, ["ckl"] = {"Cibak"}, ["ckm"] = {"Chakavian"}, ["ckn"] = {"Kaang Chin"}, ["cko"] = {"Anufo"}, ["ckq"] = {"Kajakse"}, ["ckr"] = {"Kairak"}, ["cks"] = {"Tayo"}, ["ckt"] = {"Chukot"}, ["cku"] = {"Koasati"}, ["ckv"] = {"Kavalan"}, ["ckx"] = {"Caka"}, ["cky"] = {"Cakfem-Mushere"}, ["ckz"] = {"Cakchiquel-Quiché Mixed Language"}, ["cla"] = {"Ron"}, ["clc"] = {"Chilcotin"}, ["cld"] = {"Chaldean Neo-Aramaic"}, ["cle"] = {"Lealao Chinantec"}, ["clh"] = {"Chilisso"}, ["cli"] = {"Chakali"}, ["clj"] = {"Laitu Chin"}, ["clk"] = {"Idu-Mishmi"}, ["cll"] = {"Chala"}, ["clm"] = {"Clallam"}, ["clo"] = {"Lowland Oaxaca Chontal"}, ["clt"] = {"Lautu Chin"}, ["clu"] = {"Caluyanun"}, ["clw"] = {"Chulym"}, ["cly"] = {"Eastern Highland Chatino"}, ["cma"] = {"Maa"}, ["cmc"] = {"Chamic languages"}, ["cme"] = {"Cerma"}, ["cmg"] = {"Classical Mongolian"}, ["cmi"] = {"Emberá-Chamí"}, ["cml"] = {"Campalagian"}, ["cmm"] = {"Michigamea"}, ["cmn"] = {"Mandarin Chinese"}, ["cmo"] = {"Central Mnong"}, ["cmr"] = {"Mro-Khimi Chin"}, ["cms"] = {"Messapic"}, ["cmt"] = {"Camtho"}, ["cna"] = {"Changthang"}, ["cnb"] = {"Chinbon Chin"}, ["cnc"] = {"Côông"}, ["cng"] = {"Northern Qiang"}, ["cnh"] = {"Hakha Chin", "Haka Chin"}, ["cni"] = {"Asháninka"}, ["cnk"] = {"Khumi Chin"}, ["cnl"] = {"Lalana Chinantec"}, ["cno"] = {"Con"}, ["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"}, ["cnq"] = {"Chung"}, ["cnr"] = {"Montenegrin"}, ["cns"] = {"Central Asmat"}, ["cnt"] = {"Tepetotutla Chinantec"}, ["cnu"] = {"Chenoua"}, ["cnw"] = {"Ngawn Chin"}, ["cnx"] = {"Middle Cornish"}, ["coa"] = {"Cocos Islands Malay"}, ["cob"] = {"Chicomuceltec"}, ["coc"] = {"Cocopa"}, ["cod"] = {"Cocama-Cocamilla"}, ["coe"] = {"Koreguaje"}, ["cof"] = {"Colorado"}, ["cog"] = {"Chong"}, ["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"}, ["coj"] = {"Cochimi"}, ["cok"] = {"Santa Teresa Cora"}, ["col"] = {"Columbia-Wenatchi"}, ["com"] = {"Comanche"}, ["con"] = {"Cofán"}, ["coo"] = {"Comox"}, ["cop"] = {"Coptic"}, ["coq"] = {"Coquille"}, ["cot"] = {"Caquinte"}, ["cou"] = {"Wamey"}, ["cov"] = {"Cao Miao"}, ["cow"] = {"Cowlitz"}, ["cox"] = {"Nanti"}, ["coz"] = {"Chochotec"}, ["cpa"] = {"Palantla Chinantec"}, ["cpb"] = {"Ucayali-Yurúa Ashéninka"}, ["cpc"] = {"Ajyíninka Apurucayali"}, ["cpe"] = {"English-based creoles and pidgins"}, ["cpf"] = {"French-based creoles and pidgins"}, ["cpg"] = {"Cappadocian Greek"}, ["cpi"] = {"Chinese Pidgin English"}, ["cpn"] = {"Cherepon"}, ["cpo"] = {"Kpeego"}, ["cpp"] = {"Portuguese-based creoles and pidgins"}, ["cps"] = {"Capiznon"}, ["cpu"] = {"Pichis Ashéninka"}, ["cpx"] = {"Pu-Xian Chinese"}, ["cpy"] = {"South Ucayali Ashéninka"}, ["cqd"] = {"Chuanqiandian Cluster Miao"}, ["cra"] = {"Chara"}, ["crb"] = {"Island Carib"}, ["crc"] = {"Lonwolwol"}, ["crd"] = {"Coeur d'Alene"}, ["crf"] = {"Caramanta"}, ["crg"] = {"Michif"}, ["crh"] = {"Crimean Tatar", "Crimean Turkish"}, ["cri"] = {"Sãotomense"}, ["crj"] = {"Southern East Cree"}, ["crk"] = {"Plains Cree"}, ["crl"] = {"Northern East Cree"}, ["crm"] = {"Moose Cree"}, ["crn"] = {"El Nayar Cora"}, ["cro"] = {"Crow"}, ["crp"] = {"Creoles and pidgins"}, ["crq"] = {"Iyo'wujwa Chorote"}, ["crr"] = {"Carolina Algonquian"}, ["crs"] = {"Seselwa Creole French"}, ["crt"] = {"Iyojwa'ja Chorote"}, ["crv"] = {"Chaura"}, ["crw"] = {"Chrau"}, ["crx"] = {"Carrier"}, ["cry"] = {"Cori"}, ["crz"] = {"Cruzeño"}, ["csa"] = {"Chiltepec Chinantec"}, ["csb"] = {"Kashubian"}, ["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"}, ["csd"] = {"Chiangmai Sign Language"}, ["cse"] = {"Czech Sign Language"}, ["csf"] = {"Cuba Sign Language"}, ["csg"] = {"Chilean Sign Language"}, ["csh"] = {"Asho Chin"}, ["csi"] = {"Coast Miwok"}, ["csj"] = {"Songlai Chin"}, ["csk"] = {"Jola-Kasa"}, ["csl"] = {"Chinese Sign Language"}, ["csm"] = {"Central Sierra Miwok"}, ["csn"] = {"Colombian Sign Language"}, ["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"}, ["csp"] = {"Southern Ping Chinese", "Southern Pinghua"}, ["csq"] = {"Croatia Sign Language"}, ["csr"] = {"Costa Rican Sign Language"}, ["css"] = {"Southern Ohlone"}, ["cst"] = {"Northern Ohlone"}, ["csu"] = {"Central Sudanic languages"}, ["csv"] = {"Sumtu Chin"}, ["csw"] = {"Swampy Cree"}, ["csx"] = {"Cambodian Sign Language"}, ["csy"] = {"Siyin Chin"}, ["csz"] = {"Coos"}, ["cta"] = {"Tataltepec Chatino"}, ["ctc"] = {"Chetco"}, ["ctd"] = {"Tedim Chin"}, ["cte"] = {"Tepinapa Chinantec"}, ["ctg"] = {"Chittagonian"}, ["cth"] = {"Thaiphum Chin"}, ["ctl"] = {"Tlacoatzintepec Chinantec"}, ["ctm"] = {"Chitimacha"}, ["ctn"] = {"Chhintange"}, ["cto"] = {"Emberá-Catío"}, ["ctp"] = {"Western Highland Chatino"}, ["cts"] = {"Northern Catanduanes Bikol"}, ["ctt"] = {"Wayanad Chetti"}, ["ctu"] = {"Chol"}, ["cty"] = {"Moundadan Chetty"}, ["ctz"] = {"Zacatepec Chatino"}, ["cua"] = {"Cua"}, ["cub"] = {"Cubeo"}, ["cuc"] = {"Usila Chinantec"}, ["cuh"] = {"Chuka", "Gichuka"}, ["cui"] = {"Cuiba"}, ["cuj"] = {"Mashco Piro"}, ["cuk"] = {"San Blas Kuna"}, ["cul"] = {"Culina", "Kulina"}, ["cuo"] = {"Cumanagoto"}, ["cup"] = {"Cupeño"}, ["cuq"] = {"Cun"}, ["cur"] = {"Chhulung"}, ["cus"] = {"Cushitic languages"}, ["cut"] = {"Teutila Cuicatec"}, ["cuu"] = {"Tai Ya"}, ["cuv"] = {"Cuvok"}, ["cuw"] = {"Chukwa"}, ["cux"] = {"Tepeuxila Cuicatec"}, ["cuy"] = {"Cuitlatec"}, ["cvg"] = {"Chug"}, ["cvn"] = {"Valle Nacional Chinantec"}, ["cwa"] = {"Kabwa"}, ["cwb"] = {"Maindo"}, ["cwd"] = {"Woods Cree"}, ["cwe"] = {"Kwere"}, ["cwg"] = {"Chewong", "Cheq Wong"}, ["cwt"] = {"Kuwaataay"}, ["cxh"] = {"Cha'ari"}, ["cya"] = {"Nopala Chatino"}, ["cyb"] = {"Cayubaba"}, ["cyo"] = {"Cuyonon"}, ["czh"] = {"Huizhou Chinese"}, ["czk"] = {"Knaanic"}, ["czn"] = {"Zenzontepec Chatino"}, ["czo"] = {"Min Zhong Chinese"}, ["czt"] = {"Zotung Chin"}, ["daa"] = {"Dangaléat"}, ["dac"] = {"Dambi"}, ["dad"] = {"Marik"}, ["dae"] = {"Duupa"}, ["dag"] = {"Dagbani"}, ["dah"] = {"Gwahatike"}, ["dai"] = {"Day"}, ["daj"] = {"Dar Fur Daju"}, ["dak"] = {"Dakota"}, ["dal"] = {"Dahalo"}, ["dam"] = {"Damakawa"}, ["dao"] = {"Daai Chin"}, ["daq"] = {"Dandami Maria"}, ["dar"] = {"Dargwa"}, ["das"] = {"Daho-Doo"}, ["dau"] = {"Dar Sila Daju"}, ["dav"] = {"Taita", "Dawida"}, ["daw"] = {"Davawenyo"}, ["dax"] = {"Dayi"}, ["day"] = {"Land Dayak languages"}, ["daz"] = {"Dao"}, ["dba"] = {"Bangime"}, ["dbb"] = {"Deno"}, ["dbd"] = {"Dadiya"}, ["dbe"] = {"Dabe"}, ["dbf"] = {"Edopi"}, ["dbg"] = {"Dogul Dom Dogon"}, ["dbi"] = {"Doka"}, ["dbj"] = {"Ida'an"}, ["dbl"] = {"Dyirbal"}, ["dbm"] = {"Duguri"}, ["dbn"] = {"Duriankere"}, ["dbo"] = {"Dulbu"}, ["dbp"] = {"Duwai"}, ["dbq"] = {"Daba"}, ["dbr"] = {"Dabarre"}, ["dbt"] = {"Ben Tey Dogon"}, ["dbu"] = {"Bondum Dom Dogon"}, ["dbv"] = {"Dungu"}, ["dbw"] = {"Bankan Tey Dogon"}, ["dby"] = {"Dibiyaso"}, ["dcc"] = {"Deccan"}, ["dcr"] = {"Negerhollands"}, ["dda"] = {"Dadi Dadi"}, ["ddd"] = {"Dongotono"}, ["dde"] = {"Doondo"}, ["ddg"] = {"Fataluku"}, ["ddi"] = {"West Goodenough"}, ["ddj"] = {"Jaru"}, ["ddn"] = {"Dendi (Benin)"}, ["ddo"] = {"Dido"}, ["ddr"] = {"Dhudhuroa"}, ["dds"] = {"Donno So Dogon"}, ["ddw"] = {"Dawera-Daweloor"}, ["dec"] = {"Dagik"}, ["ded"] = {"Dedua"}, ["dee"] = {"Dewoin"}, ["def"] = {"Dezfuli"}, ["deg"] = {"Degema"}, ["deh"] = {"Dehwari"}, ["dei"] = {"Demisa"}, ["dek"] = {"Dek"}, ["del"] = {"Delaware"}, ["dem"] = {"Dem"}, ["den"] = {"Slave (Athapascan)"}, ["dep"] = {"Pidgin Delaware"}, ["deq"] = {"Dendi (Central African Republic)"}, ["der"] = {"Deori"}, ["des"] = {"Desano"}, ["dev"] = {"Domung"}, ["dez"] = {"Dengese"}, ["dga"] = {"Southern Dagaare"}, ["dgb"] = {"Bunoge Dogon"}, ["dgc"] = {"Casiguran Dumagat Agta"}, ["dgd"] = {"Dagaari Dioula"}, ["dge"] = {"Degenan"}, ["dgg"] = {"Doga"}, ["dgh"] = {"Dghwede"}, ["dgi"] = {"Northern Dagara"}, ["dgk"] = {"Dagba"}, ["dgl"] = {"Andaandi", "Dongolawi"}, ["dgn"] = {"Dagoman"}, ["dgo"] = {"Dogri (individual language)"}, ["dgr"] = {"Dogrib", "Tłı̨chǫ"}, ["dgs"] = {"Dogoso"}, ["dgt"] = {"Ndra'ngith"}, ["dgw"] = {"Daungwurrung"}, ["dgx"] = {"Doghoro"}, ["dgz"] = {"Daga"}, ["dhd"] = {"Dhundari"}, ["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"}, ["dhi"] = {"Dhimal"}, ["dhl"] = {"Dhalandji"}, ["dhm"] = {"Zemba"}, ["dhn"] = {"Dhanki"}, ["dho"] = {"Dhodia"}, ["dhr"] = {"Dhargari"}, ["dhs"] = {"Dhaiso"}, ["dhu"] = {"Dhurga"}, ["dhv"] = {"Dehu", "Drehu"}, ["dhw"] = {"Dhanwar (Nepal)"}, ["dhx"] = {"Dhungaloo"}, ["dia"] = {"Dia"}, ["dib"] = {"South Central Dinka"}, ["dic"] = {"Lakota Dida"}, ["did"] = {"Didinga"}, ["dif"] = {"Dieri", "Diyari"}, ["dig"] = {"Digo", "Chidigo"}, ["dih"] = {"Kumiai"}, ["dii"] = {"Dimbong"}, ["dij"] = {"Dai"}, ["dik"] = {"Southwestern Dinka"}, ["dil"] = {"Dilling"}, ["dim"] = {"Dime"}, ["din"] = {"Dinka"}, ["dio"] = {"Dibo"}, ["dip"] = {"Northeastern Dinka"}, ["diq"] = {"Dimli (individual language)"}, ["dir"] = {"Dirim"}, ["dis"] = {"Dimasa"}, ["diu"] = {"Diriku"}, ["diw"] = {"Northwestern Dinka"}, ["dix"] = {"Dixon Reef"}, ["diy"] = {"Diuwe"}, ["diz"] = {"Ding"}, ["dja"] = {"Djadjawurrung"}, ["djb"] = {"Djinba"}, ["djc"] = {"Dar Daju Daju"}, ["djd"] = {"Djamindjung", "Ngaliwurru"}, ["dje"] = {"Zarma"}, ["djf"] = {"Djangun"}, ["dji"] = {"Djinang"}, ["djj"] = {"Djeebbana"}, ["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"}, ["djm"] = {"Jamsay Dogon"}, ["djn"] = {"Jawoyn", "Djauan"}, ["djo"] = {"Jangkang"}, ["djr"] = {"Djambarrpuyngu"}, ["dju"] = {"Kapriman"}, ["djw"] = {"Djawi"}, ["dka"] = {"Dakpakha"}, ["dkg"] = {"Kadung"}, ["dkk"] = {"Dakka"}, ["dkr"] = {"Kuijau"}, ["dks"] = {"Southeastern Dinka"}, ["dkx"] = {"Mazagway"}, ["dlg"] = {"Dolgan"}, ["dlk"] = {"Dahalik"}, ["dlm"] = {"Dalmatian"}, ["dln"] = {"Darlong"}, ["dma"] = {"Duma"}, ["dmb"] = {"Mombo Dogon"}, ["dmc"] = {"Gavak"}, ["dmd"] = {"Madhi Madhi"}, ["dme"] = {"Dugwor"}, ["dmf"] = {"Medefaidrin"}, ["dmg"] = {"Upper Kinabatangan"}, ["dmk"] = {"Domaaki"}, ["dml"] = {"Dameli"}, ["dmm"] = {"Dama"}, ["dmn"] = {"Mande languages"}, ["dmo"] = {"Kemedzung"}, ["dmr"] = {"East Damar"}, ["dms"] = {"Dampelas"}, ["dmu"] = {"Dubu", "Tebi"}, ["dmv"] = {"Dumpas"}, ["dmw"] = {"Mudburra"}, ["dmx"] = {"Dema"}, ["dmy"] = {"Demta", "Sowari"}, ["dna"] = {"Upper Grand Valley Dani"}, ["dnd"] = {"Daonda"}, ["dne"] = {"Ndendeule"}, ["dng"] = {"Dungan"}, ["dni"] = {"Lower Grand Valley Dani"}, ["dnj"] = {"Dan"}, ["dnk"] = {"Dengka"}, ["dnn"] = {"Dzùùngoo"}, ["dno"] = {"Ndrulo", "Northern Lendu"}, ["dnr"] = {"Danaru"}, ["dnt"] = {"Mid Grand Valley Dani"}, ["dnu"] = {"Danau"}, ["dnv"] = {"Danu"}, ["dnw"] = {"Western Dani"}, ["dny"] = {"Dení"}, ["doa"] = {"Dom"}, ["dob"] = {"Dobu"}, ["doc"] = {"Northern Dong"}, ["doe"] = {"Doe"}, ["dof"] = {"Domu"}, ["doh"] = {"Dong"}, ["doi"] = {"Dogri (macrolanguage)"}, ["dok"] = {"Dondo"}, ["dol"] = {"Doso"}, ["don"] = {"Toura (Papua New Guinea)"}, ["doo"] = {"Dongo"}, ["dop"] = {"Lukpa"}, ["doq"] = {"Dominican Sign Language"}, ["dor"] = {"Dori'o"}, ["dos"] = {"Dogosé"}, ["dot"] = {"Dass"}, ["dov"] = {"Dombe"}, ["dow"] = {"Doyayo"}, ["dox"] = {"Bussa"}, ["doy"] = {"Dompo"}, ["doz"] = {"Dorze"}, ["dpp"] = {"Papar"}, ["dra"] = {"Dravidian languages"}, ["drb"] = {"Dair"}, ["drc"] = {"Minderico"}, ["drd"] = {"Darmiya"}, ["dre"] = {"Dolpo"}, ["drg"] = {"Rungus"}, ["dri"] = {"C'Lela"}, ["drl"] = {"Paakantyi"}, ["drn"] = {"West Damar"}, ["dro"] = {"Daro-Matu Melanau"}, ["drq"] = {"Dura"}, ["drs"] = {"Gedeo"}, ["drt"] = {"Drents"}, ["dru"] = {"Rukai"}, ["dry"] = {"Darai"}, ["dsb"] = {"Lower Sorbian"}, ["dse"] = {"Dutch Sign Language"}, ["dsh"] = {"Daasanach"}, ["dsi"] = {"Disa"}, ["dsk"] = {"Dokshi"}, ["dsl"] = {"Danish Sign Language"}, ["dsn"] = {"Dusner"}, ["dso"] = {"Desiya"}, ["dsq"] = {"Tadaksahak"}, ["dsz"] = {"Mardin Sign Language"}, ["dta"] = {"Daur"}, ["dtb"] = {"Labuk-Kinabatangan Kadazan"}, ["dtd"] = {"Ditidaht"}, ["dth"] = {"Adithinngithigh"}, ["dti"] = {"Ana Tinga Dogon"}, ["dtk"] = {"Tene Kan Dogon"}, ["dtm"] = {"Tomo Kan Dogon"}, ["dtn"] = {"Daatsʼíin"}, ["dto"] = {"Tommo So Dogon"}, ["dtp"] = {"Kadazan Dusun", "Central Dusun"}, ["dtr"] = {"Lotud"}, ["dts"] = {"Toro So Dogon"}, ["dtt"] = {"Toro Tegu Dogon"}, ["dtu"] = {"Tebul Ure Dogon"}, ["dty"] = {"Dotyali"}, ["dua"] = {"Duala"}, ["dub"] = {"Dubli"}, ["duc"] = {"Duna"}, ["due"] = {"Umiray Dumaget Agta"}, ["duf"] = {"Dumbea", "Drubea"}, ["dug"] = {"Duruma", "Chiduruma"}, ["duh"] = {"Dungra Bhil"}, ["dui"] = {"Dumun"}, ["duk"] = {"Uyajitaya"}, ["dul"] = {"Alabat Island Agta"}, ["dum"] = {"Middle Dutch (ca. 1050-1350)"}, ["dun"] = {"Dusun Deyah"}, ["duo"] = {"Dupaninan Agta"}, ["dup"] = {"Duano"}, ["duq"] = {"Dusun Malang"}, ["dur"] = {"Dii"}, ["dus"] = {"Dumi"}, ["duu"] = {"Drung"}, ["duv"] = {"Duvle"}, ["duw"] = {"Dusun Witu"}, ["dux"] = {"Duungooma"}, ["duy"] = {"Dicamay Agta"}, ["duz"] = {"Duli-Gey"}, ["dva"] = {"Duau"}, ["dwa"] = {"Diri"}, ["dwk"] = {"Dawik Kui"}, ["dwr"] = {"Dawro"}, ["dws"] = {"Dutton World Speedwords"}, ["dwu"] = {"Dhuwal"}, ["dww"] = {"Dawawa"}, ["dwy"] = {"Dhuwaya"}, ["dwz"] = {"Dewas Rai"}, ["dya"] = {"Dyan"}, ["dyb"] = {"Dyaberdyaber"}, ["dyd"] = {"Dyugun"}, ["dyg"] = {"Villa Viciosa Agta"}, ["dyi"] = {"Djimini Senoufo"}, ["dym"] = {"Yanda Dom Dogon"}, ["dyn"] = {"Dyangadi", "Dhanggatti"}, ["dyo"] = {"Jola-Fonyi"}, ["dyr"] = {"Dyarim"}, ["dyu"] = {"Dyula"}, ["dyy"] = {"Djabugay", "Dyaabugay"}, ["dza"] = {"Tunzu"}, ["dzd"] = {"Daza"}, ["dze"] = {"Djiwarli"}, ["dzg"] = {"Dazaga"}, ["dzl"] = {"Dzalakha"}, ["dzn"] = {"Dzando"}, ["eaa"] = {"Karenggapa"}, ["ebc"] = {"Beginci"}, ["ebg"] = {"Ebughu"}, ["ebk"] = {"Eastern Bontok"}, ["ebo"] = {"Teke-Ebo"}, ["ebr"] = {"Ebrié"}, ["ebu"] = {"Embu", "Kiembu"}, ["ecr"] = {"Eteocretan"}, ["ecs"] = {"Ecuadorian Sign Language"}, ["ecy"] = {"Eteocypriot"}, ["eee"] = {"E"}, ["efa"] = {"Efai"}, ["efe"] = {"Efe"}, ["efi"] = {"Efik"}, ["ega"] = {"Ega"}, ["egl"] = {"Emilian"}, ["egm"] = {"Benamanga"}, ["ego"] = {"Eggon"}, ["egx"] = {"Egyptian languages"}, ["egy"] = {"Egyptian (Ancient)"}, ["ehs"] = {"Miyakubo Sign Language"}, ["ehu"] = {"Ehueun"}, ["eip"] = {"Eipomek"}, ["eit"] = {"Eitiep"}, ["eiv"] = {"Askopan"}, ["eja"] = {"Ejamat"}, ["eka"] = {"Ekajuk"}, ["eke"] = {"Ekit"}, ["ekg"] = {"Ekari"}, ["eki"] = {"Eki"}, ["ekk"] = {"Standard Estonian"}, ["ekl"] = {"Kol (Bangladesh)", "Kol"}, ["ekm"] = {"Elip"}, ["eko"] = {"Koti"}, ["ekp"] = {"Ekpeye"}, ["ekr"] = {"Yace"}, ["eky"] = {"Eastern Kayah"}, ["ele"] = {"Elepi"}, ["elh"] = {"El Hugeirat"}, ["eli"] = {"Nding"}, ["elk"] = {"Elkei"}, ["elm"] = {"Eleme"}, ["elo"] = {"El Molo"}, ["elu"] = {"Elu"}, ["elx"] = {"Elamite"}, ["ema"] = {"Emai-Iuleha-Ora"}, ["emb"] = {"Embaloh"}, ["eme"] = {"Emerillon"}, ["emg"] = {"Eastern Meohang"}, ["emi"] = {"Mussau-Emira"}, ["emk"] = {"Eastern Maninkakan"}, ["emm"] = {"Mamulique"}, ["emn"] = {"Eman"}, ["emp"] = {"Northern Emberá"}, ["emq"] = {"Eastern Minyag"}, ["ems"] = {"Pacific Gulf Yupik"}, ["emu"] = {"Eastern Muria"}, ["emw"] = {"Emplawas"}, ["emx"] = {"Erromintxela"}, ["emy"] = {"Epigraphic Mayan"}, ["emz"] = {"Mbessa"}, ["ena"] = {"Apali"}, ["enb"] = {"Markweeta"}, ["enc"] = {"En"}, ["end"] = {"Ende"}, ["enf"] = {"Forest Enets"}, ["enh"] = {"Tundra Enets"}, ["enl"] = {"Enlhet"}, ["enm"] = {"Middle English (1100-1500)"}, ["enn"] = {"Engenni"}, ["eno"] = {"Enggano"}, ["enq"] = {"Enga"}, ["enr"] = {"Emumu", "Emem"}, ["enu"] = {"Enu"}, ["env"] = {"Enwan (Edo State)"}, ["enw"] = {"Enwan (Akwa Ibom State)"}, ["enx"] = {"Enxet"}, ["eot"] = {"Beti (Côte d'Ivoire)"}, ["epi"] = {"Epie"}, ["era"] = {"Eravallan"}, ["erg"] = {"Sie"}, ["erh"] = {"Eruwa"}, ["eri"] = {"Ogea"}, ["erk"] = {"South Efate"}, ["ero"] = {"Horpa"}, ["err"] = {"Erre"}, ["ers"] = {"Ersu"}, ["ert"] = {"Eritai"}, ["erw"] = {"Erokwanas"}, ["ese"] = {"Ese Ejja"}, ["esg"] = {"Aheri Gondi"}, ["esh"] = {"Eshtehardi"}, ["esi"] = {"North Alaskan Inupiatun"}, ["esk"] = {"Northwest Alaska Inupiatun"}, ["esl"] = {"Egypt Sign Language"}, ["esm"] = {"Esuma"}, ["esn"] = {"Salvadoran Sign Language"}, ["eso"] = {"Estonian Sign Language"}, ["esq"] = {"Esselen"}, ["ess"] = {"Central Siberian Yupik"}, ["esu"] = {"Central Yupik"}, ["esx"] = {"Eskimo-Aleut languages"}, ["esy"] = {"Eskayan"}, ["etb"] = {"Etebi"}, ["etc"] = {"Etchemin"}, ["eth"] = {"Ethiopian Sign Language"}, ["etn"] = {"Eton (Vanuatu)"}, ["eto"] = {"Eton (Cameroon)"}, ["etr"] = {"Edolo"}, ["ets"] = {"Yekhee"}, ["ett"] = {"Etruscan"}, ["etu"] = {"Ejagham"}, ["etx"] = {"Eten"}, ["etz"] = {"Semimi"}, ["eud"] = {"Eudeve"}, ["euq"] = {"Basque (family)"}, ["eve"] = {"Even"}, ["evh"] = {"Uvbie"}, ["evn"] = {"Evenki"}, ["ewo"] = {"Ewondo"}, ["ext"] = {"Extremaduran"}, ["eya"] = {"Eyak"}, ["eyo"] = {"Keiyo"}, ["eza"] = {"Ezaa"}, ["eze"] = {"Uzekwe"}, ["faa"] = {"Fasu"}, ["fab"] = {"Fa d'Ambu"}, ["fad"] = {"Wagi"}, ["faf"] = {"Fagani"}, ["fag"] = {"Finongan"}, ["fah"] = {"Baissa Fali"}, ["fai"] = {"Faiwol"}, ["faj"] = {"Faita"}, ["fak"] = {"Fang (Cameroon)"}, ["fal"] = {"South Fali"}, ["fam"] = {"Fam"}, ["fan"] = {"Fang (Equatorial Guinea)"}, ["fap"] = {"Paloor"}, ["far"] = {"Fataleka"}, ["fat"] = {"Fanti"}, ["fau"] = {"Fayu"}, ["fax"] = {"Fala"}, ["fay"] = {"Southwestern Fars"}, ["faz"] = {"Northwestern Fars"}, ["fbl"] = {"West Albay Bikol"}, ["fcs"] = {"Quebec Sign Language"}, ["fer"] = {"Feroge"}, ["ffi"] = {"Foia Foia"}, ["ffm"] = {"Maasina Fulfulde"}, ["fgr"] = {"Fongoro"}, ["fia"] = {"Nobiin"}, ["fie"] = {"Fyer"}, ["fif"] = {"Faifi"}, ["fil"] = {"Filipino", "Pilipino"}, ["fip"] = {"Fipa"}, ["fir"] = {"Firan"}, ["fit"] = {"Tornedalen Finnish", "Meänkieli"}, ["fiu"] = {"Finno-Ugrian languages"}, ["fiw"] = {"Fiwaga"}, ["fkk"] = {"Kirya-Konzəl"}, ["fkv"] = {"Kven Finnish"}, ["fla"] = {"Kalispel-Pend d'Oreille"}, ["flh"] = {"Foau"}, ["fli"] = {"Fali"}, ["fll"] = {"North Fali"}, ["fln"] = {"Flinders Island"}, ["flr"] = {"Fuliiru"}, ["fly"] = {"Flaaitaal", "Tsotsitaal"}, ["fmp"] = {"Fe'fe'"}, ["fmu"] = {"Far Western Muria"}, ["fnb"] = {"Fanbak"}, ["fng"] = {"Fanagalo"}, ["fni"] = {"Fania"}, ["fod"] = {"Foodo"}, ["foi"] = {"Foi"}, ["fom"] = {"Foma"}, ["fon"] = {"Fon"}, ["for"] = {"Fore"}, ["fos"] = {"Siraya"}, ["fox"] = {"Formosan languages"}, ["fpe"] = {"Fernando Po Creole English"}, ["fqs"] = {"Fas"}, ["frc"] = {"Cajun French"}, ["frd"] = {"Fordata"}, ["frk"] = {"Frankish"}, ["frm"] = {"Middle French (ca. 1400-1600)"}, ["fro"] = {"Old French (842-ca. 1400)"}, ["frp"] = {"Arpitan", "Francoprovençal"}, ["frq"] = {"Forak"}, ["frr"] = {"Northern Frisian"}, ["frs"] = {"Eastern Frisian"}, ["frt"] = {"Fortsenal"}, ["fse"] = {"Finnish Sign Language"}, ["fsl"] = {"French Sign Language"}, ["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"}, ["fub"] = {"Adamawa Fulfulde"}, ["fuc"] = {"Pulaar"}, ["fud"] = {"East Futuna"}, ["fue"] = {"Borgu Fulfulde"}, ["fuf"] = {"Pular"}, ["fuh"] = {"Western Niger Fulfulde"}, ["fui"] = {"Bagirmi Fulfulde"}, ["fuj"] = {"Ko"}, ["fum"] = {"Fum"}, ["fun"] = {"Fulniô"}, ["fuq"] = {"Central-Eastern Niger Fulfulde"}, ["fur"] = {"Friulian"}, ["fut"] = {"Futuna-Aniwa"}, ["fuu"] = {"Furu"}, ["fuv"] = {"Nigerian Fulfulde"}, ["fuy"] = {"Fuyug"}, ["fvr"] = {"Fur"}, ["fwa"] = {"Fwâi"}, ["fwe"] = {"Fwe"}, ["gaa"] = {"Ga"}, ["gab"] = {"Gabri"}, ["gac"] = {"Mixed Great Andamanese"}, ["gad"] = {"Gaddang"}, ["gae"] = {"Guarequena"}, ["gaf"] = {"Gende"}, ["gag"] = {"Gagauz"}, ["gah"] = {"Alekano"}, ["gai"] = {"Borei"}, ["gaj"] = {"Gadsup"}, ["gak"] = {"Gamkonora"}, ["gal"] = {"Galolen"}, ["gam"] = {"Kandawo"}, ["gan"] = {"Gan Chinese"}, ["gao"] = {"Gants"}, ["gap"] = {"Gal"}, ["gaq"] = {"Gata'"}, ["gar"] = {"Galeya"}, ["gas"] = {"Adiwasi Garasia"}, ["gat"] = {"Kenati"}, ["gau"] = {"Mudhili Gadaba"}, ["gaw"] = {"Nobonob"}, ["gax"] = {"Borana-Arsi-Guji Oromo"}, ["gay"] = {"Gayo"}, ["gaz"] = {"West Central Oromo"}, ["gba"] = {"Gbaya (Central African Republic)"}, ["gbb"] = {"Kaytetye"}, ["gbd"] = {"Karajarri"}, ["gbe"] = {"Niksek"}, ["gbf"] = {"Gaikundi"}, ["gbg"] = {"Gbanziri"}, ["gbh"] = {"Defi Gbe"}, ["gbi"] = {"Galela"}, ["gbj"] = {"Bodo Gadaba"}, ["gbk"] = {"Gaddi"}, ["gbl"] = {"Gamit"}, ["gbm"] = {"Garhwali"}, ["gbn"] = {"Mo'da"}, ["gbo"] = {"Northern Grebo"}, ["gbp"] = {"Gbaya-Bossangoa"}, ["gbq"] = {"Gbaya-Bozoum"}, ["gbr"] = {"Gbagyi"}, ["gbs"] = {"Gbesi Gbe"}, ["gbu"] = {"Gagadu"}, ["gbv"] = {"Gbanu"}, ["gbw"] = {"Gabi-Gabi"}, ["gbx"] = {"Eastern Xwla Gbe"}, ["gby"] = {"Gbari"}, ["gbz"] = {"Zoroastrian Dari"}, ["gcc"] = {"Mali"}, ["gcd"] = {"Ganggalida"}, ["gce"] = {"Galice"}, ["gcf"] = {"Guadeloupean Creole French"}, ["gcl"] = {"Grenadian Creole English"}, ["gcn"] = {"Gaina"}, ["gcr"] = {"Guianese Creole French"}, ["gct"] = {"Colonia Tovar German"}, ["gda"] = {"Gade Lohar"}, ["gdb"] = {"Pottangi Ollar Gadaba"}, ["gdc"] = {"Gugu Badhun"}, ["gdd"] = {"Gedaged"}, ["gde"] = {"Gude"}, ["gdf"] = {"Guduf-Gava"}, ["gdg"] = {"Ga'dang"}, ["gdh"] = {"Gadjerawang", "Gajirrabeng"}, ["gdi"] = {"Gundi"}, ["gdj"] = {"Gurdjar"}, ["gdk"] = {"Gadang"}, ["gdl"] = {"Dirasha"}, ["gdm"] = {"Laal"}, ["gdn"] = {"Umanakaina"}, ["gdo"] = {"Ghodoberi"}, ["gdq"] = {"Mehri"}, ["gdr"] = {"Wipi"}, ["gds"] = {"Ghandruk Sign Language"}, ["gdt"] = {"Kungardutyi"}, ["gdu"] = {"Gudu"}, ["gdx"] = {"Godwari"}, ["gea"] = {"Geruma"}, ["geb"] = {"Kire"}, ["gec"] = {"Gboloo Grebo"}, ["ged"] = {"Gade"}, ["gef"] = {"Gerai"}, ["geg"] = {"Gengle"}, ["geh"] = {"Hutterite German", "Hutterisch"}, ["gei"] = {"Gebe"}, ["gej"] = {"Gen"}, ["gek"] = {"Ywom"}, ["gel"] = {"ut-Ma'in"}, ["gem"] = {"Germanic languages"}, ["geq"] = {"Geme"}, ["ges"] = {"Geser-Gorom"}, ["gev"] = {"Eviya"}, ["gew"] = {"Gera"}, ["gex"] = {"Garre"}, ["gey"] = {"Enya"}, ["gez"] = {"Geez"}, ["gfk"] = {"Patpatar"}, ["gft"] = {"Gafat"}, ["gga"] = {"Gao"}, ["ggb"] = {"Gbii"}, ["ggd"] = {"Gugadj"}, ["gge"] = {"Gurr-goni"}, ["ggg"] = {"Gurgula"}, ["ggk"] = {"Kungarakany"}, ["ggl"] = {"Ganglau"}, ["ggt"] = {"Gitua"}, ["ggu"] = {"Gagu", "Gban"}, ["ggw"] = {"Gogodala"}, ["gha"] = {"Ghadamès"}, ["ghc"] = {"Hiberno-Scottish Gaelic"}, ["ghe"] = {"Southern Ghale"}, ["ghh"] = {"Northern Ghale"}, ["ghk"] = {"Geko Karen"}, ["ghl"] = {"Ghulfan"}, ["ghn"] = {"Ghanongga"}, ["gho"] = {"Ghomara"}, ["ghr"] = {"Ghera"}, ["ghs"] = {"Guhu-Samane"}, ["ght"] = {"Kuke", "Kutang Ghale"}, ["gia"] = {"Kija"}, ["gib"] = {"Gibanawa"}, ["gic"] = {"Gail"}, ["gid"] = {"Gidar"}, ["gie"] = {"Gaɓogbo", "Guébie"}, ["gig"] = {"Goaria"}, ["gih"] = {"Githabul"}, ["gii"] = {"Girirra"}, ["gil"] = {"Gilbertese"}, ["gim"] = {"Gimi (Eastern Highlands)"}, ["gin"] = {"Hinukh"}, ["gip"] = {"Gimi (West New Britain)"}, ["giq"] = {"Green Gelao"}, ["gir"] = {"Red Gelao"}, ["gis"] = {"North Giziga"}, ["git"] = {"Gitxsan"}, ["giu"] = {"Mulao"}, ["giw"] = {"White Gelao"}, ["gix"] = {"Gilima"}, ["giy"] = {"Giyug"}, ["giz"] = {"South Giziga"}, ["gjk"] = {"Kachi Koli"}, ["gjm"] = {"Gunditjmara"}, ["gjn"] = {"Gonja"}, ["gjr"] = {"Gurindji Kriol"}, ["gju"] = {"Gujari"}, ["gka"] = {"Guya"}, ["gkd"] = {"Magɨ (Madang Province)"}, ["gke"] = {"Ndai"}, ["gkn"] = {"Gokana"}, ["gko"] = {"Kok-Nar"}, ["gkp"] = {"Guinea Kpelle"}, ["gku"] = {"ǂUngkue"}, ["glb"] = {"Belning"}, ["glc"] = {"Bon Gula"}, ["gld"] = {"Nanai"}, ["glh"] = {"Northwest Pashai", "Northwest Pashayi"}, ["glj"] = {"Gula Iro"}, ["glk"] = {"Gilaki"}, ["gll"] = {"Garlali"}, ["glo"] = {"Galambu"}, ["glr"] = {"Glaro-Twabo"}, ["glu"] = {"Gula (Chad)"}, ["glw"] = {"Glavda"}, ["gly"] = {"Gule"}, ["gma"] = {"Gambera"}, ["gmb"] = {"Gula'alaa"}, ["gmd"] = {"Mághdì"}, ["gme"] = {"East Germanic languages"}, ["gmg"] = {"Magɨyi"}, ["gmh"] = {"Middle High German (ca. 1050-1500)"}, ["gml"] = {"Middle Low German"}, ["gmm"] = {"Gbaya-Mbodomo"}, ["gmn"] = {"Gimnime"}, ["gmq"] = {"North Germanic languages"}, ["gmr"] = {"Mirning", "Mirniny"}, ["gmu"] = {"Gumalu"}, ["gmv"] = {"Gamo"}, ["gmw"] = {"West Germanic languages"}, ["gmx"] = {"Magoma"}, ["gmy"] = {"Mycenaean Greek"}, ["gmz"] = {"Mgbolizhia"}, ["gna"] = {"Kaansa"}, ["gnb"] = {"Gangte"}, ["gnc"] = {"Guanche"}, ["gnd"] = {"Zulgo-Gemzek"}, ["gne"] = {"Ganang"}, ["gng"] = {"Ngangam"}, ["gnh"] = {"Lere"}, ["gni"] = {"Gooniyandi"}, ["gnj"] = {"Ngen"}, ["gnk"] = {"ǁGana"}, ["gnl"] = {"Gangulu"}, ["gnm"] = {"Ginuman"}, ["gnn"] = {"Gumatj"}, ["gno"] = {"Northern Gondi"}, ["gnq"] = {"Gana"}, ["gnr"] = {"Gureng Gureng"}, ["gnt"] = {"Guntai"}, ["gnu"] = {"Gnau"}, ["gnw"] = {"Western Bolivian Guaraní"}, ["gnz"] = {"Ganzi"}, ["goa"] = {"Guro"}, ["gob"] = {"Playero"}, ["goc"] = {"Gorakor"}, ["god"] = {"Godié"}, ["goe"] = {"Gongduk"}, ["gof"] = {"Gofa"}, ["gog"] = {"Gogo"}, ["goh"] = {"Old High German (ca. 750-1050)"}, ["goi"] = {"Gobasi"}, ["goj"] = {"Gowlan"}, ["gok"] = {"Gowli"}, ["gol"] = {"Gola"}, ["gom"] = {"Goan Konkani"}, ["gon"] = {"Gondi"}, ["goo"] = {"Gone Dau"}, ["gop"] = {"Yeretuar"}, ["goq"] = {"Gorap"}, ["gor"] = {"Gorontalo"}, ["gos"] = {"Gronings"}, ["got"] = {"Gothic"}, ["gou"] = {"Gavar"}, ["gov"] = {"Goo"}, ["gow"] = {"Gorowa"}, ["gox"] = {"Gobu"}, ["goy"] = {"Goundo"}, ["goz"] = {"Gozarkhani"}, ["gpa"] = {"Gupa-Abawa"}, ["gpe"] = {"Ghanaian Pidgin English"}, ["gpn"] = {"Taiap"}, ["gqa"] = {"Ga'anda"}, ["gqi"] = {"Guiqiong"}, ["gqn"] = {"Guana (Brazil)"}, ["gqr"] = {"Gor"}, ["gqu"] = {"Qau"}, ["gra"] = {"Rajput Garasia"}, ["grb"] = {"Grebo"}, ["grc"] = {"Ancient Greek (to 1453)"}, ["grd"] = {"Guruntum-Mbaaru"}, ["grg"] = {"Madi"}, ["grh"] = {"Gbiri-Niragu"}, ["gri"] = {"Ghari"}, ["grj"] = {"Southern Grebo"}, ["grk"] = {"Greek languages"}, ["grm"] = {"Kota Marudu Talantang"}, ["gro"] = {"Groma"}, ["grq"] = {"Gorovu"}, ["grr"] = {"Taznatit"}, ["grs"] = {"Gresi"}, ["grt"] = {"Garo"}, ["gru"] = {"Kistane"}, ["grv"] = {"Central Grebo"}, ["grw"] = {"Gweda"}, ["grx"] = {"Guriaso"}, ["gry"] = {"Barclayville Grebo"}, ["grz"] = {"Guramalum"}, ["gse"] = {"Ghanaian Sign Language"}, ["gsg"] = {"German Sign Language"}, ["gsl"] = {"Gusilay"}, ["gsm"] = {"Guatemalan Sign Language"}, ["gsn"] = {"Nema", "Gusan"}, ["gso"] = {"Southwest Gbaya"}, ["gsp"] = {"Wasembo"}, ["gss"] = {"Greek Sign Language"}, ["gsw"] = {"Swiss German", "Alemannic", "Alsatian"}, ["gta"] = {"Guató"}, ["gtu"] = {"Aghu-Tharnggala"}, ["gua"] = {"Shiki"}, ["gub"] = {"Guajajára"}, ["guc"] = {"Wayuu"}, ["gud"] = {"Yocoboué Dida"}, ["gue"] = {"Gurindji"}, ["guf"] = {"Gupapuyngu"}, ["gug"] = {"Paraguayan Guaraní"}, ["guh"] = {"Guahibo"}, ["gui"] = {"Eastern Bolivian Guaraní"}, ["guk"] = {"Gumuz"}, ["gul"] = {"Sea Island Creole English"}, ["gum"] = {"Guambiano"}, ["gun"] = {"Mbyá Guaraní"}, ["guo"] = {"Guayabero"}, ["gup"] = {"Gunwinggu"}, ["guq"] = {"Aché"}, ["gur"] = {"Farefare"}, ["gus"] = {"Guinean Sign Language"}, ["gut"] = {"Maléku Jaíka"}, ["guu"] = {"Yanomamö"}, ["guw"] = {"Gun"}, ["gux"] = {"Gourmanchéma"}, ["guz"] = {"Gusii", "Ekegusii"}, ["gva"] = {"Guana (Paraguay)"}, ["gvc"] = {"Guanano"}, ["gve"] = {"Duwet"}, ["gvf"] = {"Golin"}, ["gvj"] = {"Guajá"}, ["gvl"] = {"Gulay"}, ["gvm"] = {"Gurmana"}, ["gvn"] = {"Kuku-Yalanji"}, ["gvo"] = {"Gavião Do Jiparaná"}, ["gvp"] = {"Pará Gavião"}, ["gvr"] = {"Gurung"}, ["gvs"] = {"Gumawana"}, ["gvy"] = {"Guyani"}, ["gwa"] = {"Mbato"}, ["gwb"] = {"Gwa"}, ["gwc"] = {"Gawri", "Kalami"}, ["gwd"] = {"Gawwada"}, ["gwe"] = {"Gweno"}, ["gwf"] = {"Gowro"}, ["gwg"] = {"Moo"}, ["gwi"] = {"Gwichʼin"}, ["gwj"] = {"ǀGwi"}, ["gwm"] = {"Awngthim"}, ["gwn"] = {"Gwandara"}, ["gwr"] = {"Gwere"}, ["gwt"] = {"Gawar-Bati"}, ["gwu"] = {"Guwamu"}, ["gww"] = {"Kwini"}, ["gwx"] = {"Gua"}, ["gxx"] = {"Wè Southern"}, ["gya"] = {"Northwest Gbaya"}, ["gyb"] = {"Garus"}, ["gyd"] = {"Kayardild"}, ["gye"] = {"Gyem"}, ["gyf"] = {"Gungabula"}, ["gyg"] = {"Gbayi"}, ["gyi"] = {"Gyele"}, ["gyl"] = {"Gayil"}, ["gym"] = {"Ngäbere"}, ["gyn"] = {"Guyanese Creole English"}, ["gyo"] = {"Gyalsumdo"}, ["gyr"] = {"Guarayu"}, ["gyy"] = {"Gunya"}, ["gyz"] = {"Geji", "Gyaazi"}, ["gza"] = {"Ganza"}, ["gzi"] = {"Gazi"}, ["gzn"] = {"Gane"}, ["haa"] = {"Han"}, ["hab"] = {"Hanoi Sign Language"}, ["hac"] = {"Gurani"}, ["had"] = {"Hatam"}, ["hae"] = {"Eastern Oromo"}, ["haf"] = {"Haiphong Sign Language"}, ["hag"] = {"Hanga"}, ["hah"] = {"Hahon"}, ["hai"] = {"Haida"}, ["haj"] = {"Hajong"}, ["hak"] = {"Hakka Chinese"}, ["hal"] = {"Halang"}, ["ham"] = {"Hewa"}, ["han"] = {"Hangaza"}, ["hao"] = {"Hakö"}, ["hap"] = {"Hupla"}, ["haq"] = {"Ha"}, ["har"] = {"Harari"}, ["has"] = {"Haisla"}, ["hav"] = {"Havu"}, ["haw"] = {"Hawaiian"}, ["hax"] = {"Southern Haida"}, ["hay"] = {"Haya"}, ["haz"] = {"Hazaragi"}, ["hba"] = {"Hamba"}, ["hbb"] = {"Huba"}, ["hbn"] = {"Heiban"}, ["hbo"] = {"Ancient Hebrew"}, ["hbu"] = {"Habu"}, ["hca"] = {"Andaman Creole Hindi"}, ["hch"] = {"Huichol"}, ["hdn"] = {"Northern Haida"}, ["hds"] = {"Honduras Sign Language"}, ["hdy"] = {"Hadiyya"}, ["hea"] = {"Northern Qiandong Miao"}, ["hed"] = {"Herdé"}, ["heg"] = {"Helong"}, ["heh"] = {"Hehe"}, ["hei"] = {"Heiltsuk"}, ["hem"] = {"Hemba"}, ["hgm"] = {"Haiǁom"}, ["hgw"] = {"Haigwai"}, ["hhi"] = {"Hoia Hoia"}, ["hhr"] = {"Kerak"}, ["hhy"] = {"Hoyahoya"}, ["hia"] = {"Lamang"}, ["hib"] = {"Hibito"}, ["hid"] = {"Hidatsa"}, ["hif"] = {"Fiji Hindi"}, ["hig"] = {"Kamwe"}, ["hih"] = {"Pamosu"}, ["hii"] = {"Hinduri"}, ["hij"] = {"Hijuk"}, ["hik"] = {"Seit-Kaitetu"}, ["hil"] = {"Hiligaynon"}, ["him"] = {"Himachali languages", "Western Pahari languages"}, ["hio"] = {"Tsoa"}, ["hir"] = {"Himarimã"}, ["hit"] = {"Hittite"}, ["hiw"] = {"Hiw"}, ["hix"] = {"Hixkaryána"}, ["hji"] = {"Haji"}, ["hka"] = {"Kahe"}, ["hke"] = {"Hunde"}, ["hkh"] = {"Khah", "Poguli"}, ["hkk"] = {"Hunjara-Kaina Ke"}, ["hkn"] = {"Mel-Khaonh"}, ["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"}, ["hla"] = {"Halia"}, ["hlb"] = {"Halbi"}, ["hld"] = {"Halang Doan"}, ["hle"] = {"Hlersu"}, ["hlt"] = {"Matu Chin"}, ["hlu"] = {"Hieroglyphic Luwian"}, ["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"}, ["hmb"] = {"Humburi Senni Songhay"}, ["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"}, ["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"}, ["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"}, ["hmf"] = {"Hmong Don"}, ["hmg"] = {"Southwestern Guiyang Hmong"}, ["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"}, ["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"}, ["hmj"] = {"Ge", "Gejia"}, ["hmk"] = {"Maek"}, ["hml"] = {"Luopohe Hmong", "Luopohe Miao"}, ["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"}, ["hmn"] = {"Hmong", "Mong"}, ["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"}, ["hmq"] = {"Eastern Qiandong Miao"}, ["hmr"] = {"Hmar"}, ["hms"] = {"Southern Qiandong Miao"}, ["hmt"] = {"Hamtai"}, ["hmu"] = {"Hamap"}, ["hmv"] = {"Hmong Dô"}, ["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"}, ["hmx"] = {"Hmong-Mien languages"}, ["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"}, ["hmz"] = {"Hmong Shua", "Sinicized Miao"}, ["hna"] = {"Mina (Cameroon)"}, ["hnd"] = {"Southern Hindko"}, ["hne"] = {"Chhattisgarhi"}, ["hng"] = {"Hungu"}, ["hnh"] = {"ǁAni"}, ["hni"] = {"Hani"}, ["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"}, ["hnn"] = {"Hanunoo"}, ["hno"] = {"Northern Hindko"}, ["hns"] = {"Caribbean Hindustani"}, ["hnu"] = {"Hung"}, ["hoa"] = {"Hoava"}, ["hob"] = {"Mari (Madang Province)"}, ["hoc"] = {"Ho"}, ["hod"] = {"Holma"}, ["hoe"] = {"Horom"}, ["hoh"] = {"Hobyót"}, ["hoi"] = {"Holikachuk"}, ["hoj"] = {"Hadothi", "Haroti"}, ["hok"] = {"Hokan languages"}, ["hol"] = {"Holu"}, ["hom"] = {"Homa"}, ["hoo"] = {"Holoholo"}, ["hop"] = {"Hopi"}, ["hor"] = {"Horo"}, ["hos"] = {"Ho Chi Minh City Sign Language"}, ["hot"] = {"Hote", "Malê"}, ["hov"] = {"Hovongan"}, ["how"] = {"Honi"}, ["hoy"] = {"Holiya"}, ["hoz"] = {"Hozo"}, ["hpo"] = {"Hpon"}, ["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"}, ["hra"] = {"Hrangkhol"}, ["hrc"] = {"Niwer Mil"}, ["hre"] = {"Hre"}, ["hrk"] = {"Haruku"}, ["hrm"] = {"Horned Miao"}, ["hro"] = {"Haroi"}, ["hrp"] = {"Nhirrpi"}, ["hrt"] = {"Hértevin"}, ["hru"] = {"Hruso"}, ["hrw"] = {"Warwar Feni"}, ["hrx"] = {"Hunsrik"}, ["hrz"] = {"Harzani"}, ["hsb"] = {"Upper Sorbian"}, ["hsh"] = {"Hungarian Sign Language"}, ["hsl"] = {"Hausa Sign Language"}, ["hsn"] = {"Xiang Chinese"}, ["hss"] = {"Harsusi"}, ["hti"] = {"Hoti"}, ["hto"] = {"Minica Huitoto"}, ["hts"] = {"Hadza"}, ["htu"] = {"Hitu"}, ["htx"] = {"Middle Hittite"}, ["hub"] = {"Huambisa"}, ["huc"] = {"ǂHua", "ǂʼAmkhoe"}, ["hud"] = {"Huaulu"}, ["hue"] = {"San Francisco Del Mar Huave"}, ["huf"] = {"Humene"}, ["hug"] = {"Huachipaeri"}, ["huh"] = {"Huilliche"}, ["hui"] = {"Huli"}, ["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"}, ["huk"] = {"Hulung"}, ["hul"] = {"Hula"}, ["hum"] = {"Hungana"}, ["huo"] = {"Hu"}, ["hup"] = {"Hupa"}, ["huq"] = {"Tsat"}, ["hur"] = {"Halkomelem"}, ["hus"] = {"Huastec"}, ["hut"] = {"Humla"}, ["huu"] = {"Murui Huitoto"}, ["huv"] = {"San Mateo Del Mar Huave"}, ["huw"] = {"Hukumina"}, ["hux"] = {"Nüpode Huitoto"}, ["huy"] = {"Hulaulá"}, ["huz"] = {"Hunzib"}, ["hvc"] = {"Haitian Vodoun Culture Language"}, ["hve"] = {"San Dionisio Del Mar Huave"}, ["hvk"] = {"Haveke"}, ["hvn"] = {"Sabu"}, ["hvv"] = {"Santa María Del Mar Huave"}, ["hwa"] = {"Wané"}, ["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"}, ["hwo"] = {"Hwana"}, ["hya"] = {"Hya"}, ["hyw"] = {"Western Armenian"}, ["hyx"] = {"Armenian (family)"}, ["iai"] = {"Iaai"}, ["ian"] = {"Iatmul"}, ["iar"] = {"Purari"}, ["iba"] = {"Iban"}, ["ibb"] = {"Ibibio"}, ["ibd"] = {"Iwaidja"}, ["ibe"] = {"Akpes"}, ["ibg"] = {"Ibanag"}, ["ibh"] = {"Bih"}, ["ibl"] = {"Ibaloi"}, ["ibm"] = {"Agoi"}, ["ibn"] = {"Ibino"}, ["ibr"] = {"Ibuoro"}, ["ibu"] = {"Ibu"}, ["iby"] = {"Ibani"}, ["ica"] = {"Ede Ica"}, ["ich"] = {"Etkywan"}, ["icl"] = {"Icelandic Sign Language"}, ["icr"] = {"Islander Creole English"}, ["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"}, ["idb"] = {"Indo-Portuguese"}, ["idc"] = {"Idon", "Ajiya"}, ["idd"] = {"Ede Idaca"}, ["ide"] = {"Idere"}, ["idi"] = {"Idi"}, ["idr"] = {"Indri"}, ["ids"] = {"Idesa"}, ["idt"] = {"Idaté"}, ["idu"] = {"Idoma"}, ["ifa"] = {"Amganad Ifugao"}, ["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"}, ["ife"] = {"Ifè"}, ["iff"] = {"Ifo"}, ["ifk"] = {"Tuwali Ifugao"}, ["ifm"] = {"Teke-Fuumu"}, ["ifu"] = {"Mayoyao Ifugao"}, ["ify"] = {"Keley-I Kallahan"}, ["igb"] = {"Ebira"}, ["ige"] = {"Igede"}, ["igg"] = {"Igana"}, ["igl"] = {"Igala"}, ["igm"] = {"Kanggape"}, ["ign"] = {"Ignaciano"}, ["igo"] = {"Isebe"}, ["igs"] = {"Interglossa"}, ["igw"] = {"Igwe"}, ["ihb"] = {"Iha Based Pidgin"}, ["ihi"] = {"Ihievbe"}, ["ihp"] = {"Iha"}, ["ihw"] = {"Bidhawal"}, ["iin"] = {"Thiin"}, ["iir"] = {"Indo-Iranian languages"}, ["ijc"] = {"Izon"}, ["ije"] = {"Biseni"}, ["ijj"] = {"Ede Ije"}, ["ijn"] = {"Kalabari"}, ["ijo"] = {"Ijo languages"}, ["ijs"] = {"Southeast Ijo"}, ["ike"] = {"Eastern Canadian Inuktitut"}, ["ikh"] = {"Ikhin-Arokho"}, ["iki"] = {"Iko"}, ["ikk"] = {"Ika"}, ["ikl"] = {"Ikulu"}, ["iko"] = {"Olulumo-Ikom"}, ["ikp"] = {"Ikpeshi"}, ["ikr"] = {"Ikaranggal"}, ["iks"] = {"Inuit Sign Language"}, ["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"}, ["ikv"] = {"Iku-Gora-Ankwa"}, ["ikw"] = {"Ikwere"}, ["ikx"] = {"Ik"}, ["ikz"] = {"Ikizu"}, ["ila"] = {"Ile Ape"}, ["ilb"] = {"Ila"}, ["ilg"] = {"Garig-Ilgar"}, ["ili"] = {"Ili Turki"}, ["ilk"] = {"Ilongot"}, ["ilm"] = {"Iranun (Malaysia)"}, ["ilo"] = {"Iloko"}, ["ilp"] = {"Iranun (Philippines)"}, ["ils"] = {"International Sign"}, ["ilu"] = {"Ili'uun"}, ["ilv"] = {"Ilue"}, ["ima"] = {"Mala Malasar"}, ["imi"] = {"Anamgura"}, ["iml"] = {"Miluk"}, ["imn"] = {"Imonda"}, ["imo"] = {"Imbongu"}, ["imr"] = {"Imroing"}, ["ims"] = {"Marsian"}, ["imt"] = {"Imotong"}, ["imy"] = {"Milyan"}, ["inb"] = {"Inga"}, ["inc"] = {"Indic languages"}, ["ine"] = {"Indo-European languages"}, ["ing"] = {"Degexit'an"}, ["inh"] = {"Ingush"}, ["inj"] = {"Jungle Inga"}, ["inl"] = {"Indonesian Sign Language"}, ["inm"] = {"Minaean"}, ["inn"] = {"Isinai"}, ["ino"] = {"Inoke-Yate"}, ["inp"] = {"Iñapari"}, ["ins"] = {"Indian Sign Language"}, ["int"] = {"Intha"}, ["inz"] = {"Ineseño"}, ["ior"] = {"Inor"}, ["iou"] = {"Tuma-Irumu"}, ["iow"] = {"Iowa-Oto"}, ["ipi"] = {"Ipili"}, ["ipo"] = {"Ipiko"}, ["iqu"] = {"Iquito"}, ["iqw"] = {"Ikwo"}, ["ira"] = {"Iranian languages"}, ["ire"] = {"Iresim"}, ["irh"] = {"Irarutu"}, ["iri"] = {"Rigwe", "Irigwe"}, ["irk"] = {"Iraqw"}, ["irn"] = {"Irántxe"}, ["iro"] = {"Iroquoian languages"}, ["irr"] = {"Ir"}, ["iru"] = {"Irula"}, ["irx"] = {"Kamberau"}, ["iry"] = {"Iraya"}, ["isa"] = {"Isabi"}, ["isc"] = {"Isconahua"}, ["isd"] = {"Isnag"}, ["ise"] = {"Italian Sign Language"}, ["isg"] = {"Irish Sign Language"}, ["ish"] = {"Esan"}, ["isi"] = {"Nkem-Nkum"}, ["isk"] = {"Ishkashimi"}, ["ism"] = {"Masimasi"}, ["isn"] = {"Isanzu"}, ["iso"] = {"Isoko"}, ["isr"] = {"Israeli Sign Language"}, ["ist"] = {"Istriot"}, ["isu"] = {"Isu (Menchum Division)"}, ["itb"] = {"Binongan Itneg"}, ["itc"] = {"Italic languages"}, ["itd"] = {"Southern Tidung"}, ["ite"] = {"Itene"}, ["iti"] = {"Inlaod Itneg"}, ["itk"] = {"Judeo-Italian"}, ["itl"] = {"Itelmen"}, ["itm"] = {"Itu Mbon Uzo"}, ["ito"] = {"Itonama"}, ["itr"] = {"Iteri"}, ["its"] = {"Isekiri"}, ["itt"] = {"Maeng Itneg"}, ["itv"] = {"Itawit"}, ["itw"] = {"Ito"}, ["itx"] = {"Itik"}, ["ity"] = {"Moyadan Itneg"}, ["itz"] = {"Itzá"}, ["ium"] = {"Iu Mien"}, ["ivb"] = {"Ibatan"}, ["ivv"] = {"Ivatan"}, ["iwk"] = {"I-Wak"}, ["iwm"] = {"Iwam"}, ["iwo"] = {"Iwur"}, ["iws"] = {"Sepik Iwam"}, ["ixc"] = {"Ixcatec"}, ["ixl"] = {"Ixil"}, ["iya"] = {"Iyayu"}, ["iyo"] = {"Mesaka"}, ["iyx"] = {"Yaka (Congo)"}, ["izh"] = {"Ingrian"}, ["izm"] = {"Kizamani"}, ["izr"] = {"Izere"}, ["izz"] = {"Izii"}, ["jaa"] = {"Jamamadí"}, ["jab"] = {"Hyam"}, ["jac"] = {"Popti'", "Jakalteko"}, ["jad"] = {"Jahanka"}, ["jae"] = {"Yabem"}, ["jaf"] = {"Jara"}, ["jah"] = {"Jah Hut"}, ["jaj"] = {"Zazao"}, ["jak"] = {"Jakun"}, ["jal"] = {"Yalahatan"}, ["jam"] = {"Jamaican Creole English"}, ["jan"] = {"Jandai"}, ["jao"] = {"Yanyuwa"}, ["jaq"] = {"Yaqay"}, ["jas"] = {"New Caledonian Javanese"}, ["jat"] = {"Jakati"}, ["jau"] = {"Yaur"}, ["jax"] = {"Jambi Malay"}, ["jay"] = {"Yan-nhangu", "Nhangu"}, ["jaz"] = {"Jawe"}, ["jbe"] = {"Judeo-Berber"}, ["jbi"] = {"Badjiri"}, ["jbj"] = {"Arandai"}, ["jbk"] = {"Barikewa"}, ["jbm"] = {"Bijim"}, ["jbn"] = {"Nafusi"}, ["jbo"] = {"Lojban"}, ["jbr"] = {"Jofotek-Bromnya"}, ["jbt"] = {"Jabutí"}, ["jbu"] = {"Jukun Takum"}, ["jbw"] = {"Yawijibaya"}, ["jcs"] = {"Jamaican Country Sign Language"}, ["jct"] = {"Krymchak"}, ["jda"] = {"Jad"}, ["jdg"] = {"Jadgali"}, ["jdt"] = {"Judeo-Tat"}, ["jeb"] = {"Jebero"}, ["jee"] = {"Jerung"}, ["jeh"] = {"Jeh"}, ["jei"] = {"Yei"}, ["jek"] = {"Jeri Kuo"}, ["jel"] = {"Yelmek"}, ["jen"] = {"Dza"}, ["jer"] = {"Jere"}, ["jet"] = {"Manem"}, ["jeu"] = {"Jonkor Bourmataguil"}, ["jgb"] = {"Ngbee"}, ["jge"] = {"Judeo-Georgian"}, ["jgk"] = {"Gwak"}, ["jgo"] = {"Ngomba"}, ["jhi"] = {"Jehai"}, ["jhs"] = {"Jhankot Sign Language"}, ["jia"] = {"Jina"}, ["jib"] = {"Jibu"}, ["jic"] = {"Tol"}, ["jid"] = {"Bu (Kaduna State)"}, ["jie"] = {"Jilbe"}, ["jig"] = {"Jingulu", "Djingili"}, ["jih"] = {"sTodsde", "Shangzhai"}, ["jii"] = {"Jiiddu"}, ["jil"] = {"Jilim"}, ["jim"] = {"Jimi (Cameroon)"}, ["jio"] = {"Jiamao"}, ["jiq"] = {"Guanyinqiao", "Lavrung"}, ["jit"] = {"Jita"}, ["jiu"] = {"Youle Jinuo"}, ["jiv"] = {"Shuar"}, ["jiy"] = {"Buyuan Jinuo"}, ["jje"] = {"Jejueo"}, ["jjr"] = {"Bankal"}, ["jka"] = {"Kaera"}, ["jkm"] = {"Mobwa Karen"}, ["jko"] = {"Kubo"}, ["jkp"] = {"Paku Karen"}, ["jkr"] = {"Koro (India)"}, ["jks"] = {"Amami Koniya Sign Language"}, ["jku"] = {"Labir"}, ["jle"] = {"Ngile"}, ["jls"] = {"Jamaican Sign Language"}, ["jma"] = {"Dima"}, ["jmb"] = {"Zumbun"}, ["jmc"] = {"Machame"}, ["jmd"] = {"Yamdena"}, ["jmi"] = {"Jimi (Nigeria)"}, ["jml"] = {"Jumli"}, ["jmn"] = {"Makuri Naga"}, ["jmr"] = {"Kamara"}, ["jms"] = {"Mashi (Nigeria)"}, ["jmw"] = {"Mouwase"}, ["jmx"] = {"Western Juxtlahuaca Mixtec"}, ["jna"] = {"Jangshung"}, ["jnd"] = {"Jandavra"}, ["jng"] = {"Yangman"}, ["jni"] = {"Janji"}, ["jnj"] = {"Yemsa"}, ["jnl"] = {"Rawat"}, ["jns"] = {"Jaunsari"}, ["job"] = {"Joba"}, ["jod"] = {"Wojenaka"}, ["jog"] = {"Jogi"}, ["jor"] = {"Jorá"}, ["jos"] = {"Jordanian Sign Language"}, ["jow"] = {"Jowulu"}, ["jpa"] = {"Jewish Palestinian Aramaic"}, ["jpr"] = {"Judeo-Persian"}, ["jpx"] = {"Japanese (family)"}, ["jqr"] = {"Jaqaru"}, ["jra"] = {"Jarai"}, ["jrb"] = {"Judeo-Arabic"}, ["jrr"] = {"Jiru"}, ["jrt"] = {"Jakattoe"}, ["jru"] = {"Japrería"}, ["jsl"] = {"Japanese Sign Language"}, ["jua"] = {"Júma"}, ["jub"] = {"Wannu"}, ["juc"] = {"Jurchen"}, ["jud"] = {"Worodougou"}, ["juh"] = {"Hõne"}, ["jui"] = {"Ngadjuri"}, ["juk"] = {"Wapan"}, ["jul"] = {"Jirel"}, ["jum"] = {"Jumjum"}, ["jun"] = {"Juang"}, ["juo"] = {"Jiba"}, ["jup"] = {"Hupdë"}, ["jur"] = {"Jurúna"}, ["jus"] = {"Jumla Sign Language"}, ["jut"] = {"Jutish"}, ["juu"] = {"Ju"}, ["juw"] = {"Wãpha"}, ["juy"] = {"Juray"}, ["jvd"] = {"Javindo"}, ["jvn"] = {"Caribbean Javanese"}, ["jwi"] = {"Jwira-Pepesa"}, ["jya"] = {"Jiarong"}, ["jye"] = {"Judeo-Yemeni Arabic"}, ["jyy"] = {"Jaya"}, ["kaa"] = {"Kara-Kalpak", "Karakalpak"}, ["kab"] = {"Kabyle"}, ["kac"] = {"Kachin", "Jingpho"}, ["kad"] = {"Adara"}, ["kae"] = {"Ketangalan"}, ["kaf"] = {"Katso"}, ["kag"] = {"Kajaman"}, ["kah"] = {"Kara (Central African Republic)"}, ["kai"] = {"Karekare"}, ["kaj"] = {"Jju"}, ["kak"] = {"Kalanguya", "Kayapa Kallahan"}, ["kam"] = {"Kamba (Kenya)"}, ["kao"] = {"Xaasongaxango"}, ["kap"] = {"Bezhta"}, ["kaq"] = {"Capanahua"}, ["kar"] = {"Karen languages"}, ["kav"] = {"Katukína"}, ["kaw"] = {"Kawi"}, ["kax"] = {"Kao"}, ["kay"] = {"Kamayurá"}, ["kba"] = {"Kalarko"}, ["kbb"] = {"Kaxuiâna"}, ["kbc"] = {"Kadiwéu"}, ["kbd"] = {"Kabardian"}, ["kbe"] = {"Kanju"}, ["kbg"] = {"Khamba"}, ["kbh"] = {"Camsá"}, ["kbi"] = {"Kaptiau"}, ["kbj"] = {"Kari"}, ["kbk"] = {"Grass Koiari"}, ["kbl"] = {"Kanembu"}, ["kbm"] = {"Iwal"}, ["kbn"] = {"Kare (Central African Republic)"}, ["kbo"] = {"Keliko"}, ["kbp"] = {"Kabiyè"}, ["kbq"] = {"Kamano"}, ["kbr"] = {"Kafa"}, ["kbs"] = {"Kande"}, ["kbt"] = {"Abadi"}, ["kbu"] = {"Kabutra"}, ["kbv"] = {"Dera (Indonesia)"}, ["kbw"] = {"Kaiep"}, ["kbx"] = {"Ap Ma"}, ["kby"] = {"Manga Kanuri"}, ["kbz"] = {"Duhwa"}, ["kca"] = {"Khanty"}, ["kcb"] = {"Kawacha"}, ["kcc"] = {"Lubila"}, ["kcd"] = {"Ngkâlmpw Kanum"}, ["kce"] = {"Kaivi"}, ["kcf"] = {"Ukaan"}, ["kcg"] = {"Tyap"}, ["kch"] = {"Vono"}, ["kci"] = {"Kamantan"}, ["kcj"] = {"Kobiana"}, ["kck"] = {"Kalanga"}, ["kcl"] = {"Kela (Papua New Guinea)", "Kala"}, ["kcm"] = {"Gula (Central African Republic)"}, ["kcn"] = {"Nubi"}, ["kco"] = {"Kinalakna"}, ["kcp"] = {"Kanga"}, ["kcq"] = {"Kamo"}, ["kcr"] = {"Katla"}, ["kcs"] = {"Koenoem"}, ["kct"] = {"Kaian"}, ["kcu"] = {"Kami (Tanzania)"}, ["kcv"] = {"Kete"}, ["kcw"] = {"Kabwari"}, ["kcx"] = {"Kachama-Ganjule"}, ["kcy"] = {"Korandje"}, ["kcz"] = {"Konongo"}, ["kda"] = {"Worimi"}, ["kdc"] = {"Kutu"}, ["kdd"] = {"Yankunytjatjara"}, ["kde"] = {"Makonde"}, ["kdf"] = {"Mamusi"}, ["kdg"] = {"Seba"}, ["kdh"] = {"Tem"}, ["kdi"] = {"Kumam"}, ["kdj"] = {"Karamojong"}, ["kdk"] = {"Numèè", "Kwényi"}, ["kdl"] = {"Tsikimba"}, ["kdm"] = {"Kagoma"}, ["kdn"] = {"Kunda"}, ["kdo"] = {"Kordofanian languages"}, ["kdp"] = {"Kaningdon-Nindem"}, ["kdq"] = {"Koch"}, ["kdr"] = {"Karaim"}, ["kdt"] = {"Kuy"}, ["kdu"] = {"Kadaru"}, ["kdw"] = {"Koneraw"}, ["kdx"] = {"Kam"}, ["kdy"] = {"Keder", "Keijar"}, ["kdz"] = {"Kwaja"}, ["kea"] = {"Kabuverdianu"}, ["keb"] = {"Kélé"}, ["kec"] = {"Keiga"}, ["ked"] = {"Kerewe"}, ["kee"] = {"Eastern Keres"}, ["kef"] = {"Kpessi"}, ["keg"] = {"Tese"}, ["keh"] = {"Keak"}, ["kei"] = {"Kei"}, ["kej"] = {"Kadar"}, ["kek"] = {"Kekchí"}, ["kel"] = {"Kela (Democratic Republic of Congo)"}, ["kem"] = {"Kemak"}, ["ken"] = {"Kenyang"}, ["keo"] = {"Kakwa"}, ["kep"] = {"Kaikadi"}, ["keq"] = {"Kamar"}, ["ker"] = {"Kera"}, ["kes"] = {"Kugbo"}, ["ket"] = {"Ket"}, ["keu"] = {"Akebu"}, ["kev"] = {"Kanikkaran"}, ["kew"] = {"West Kewa"}, ["kex"] = {"Kukna"}, ["key"] = {"Kupia"}, ["kez"] = {"Kukele"}, ["kfa"] = {"Kodava"}, ["kfb"] = {"Northwestern Kolami"}, ["kfc"] = {"Konda-Dora"}, ["kfd"] = {"Korra Koraga"}, ["kfe"] = {"Kota (India)"}, ["kff"] = {"Koya"}, ["kfg"] = {"Kudiya"}, ["kfh"] = {"Kurichiya"}, ["kfi"] = {"Kannada Kurumba"}, ["kfj"] = {"Kemiehua"}, ["kfk"] = {"Kinnauri"}, ["kfl"] = {"Kung"}, ["kfm"] = {"Khunsari"}, ["kfn"] = {"Kuk"}, ["kfo"] = {"Koro (Côte d'Ivoire)"}, ["kfp"] = {"Korwa"}, ["kfq"] = {"Korku"}, ["kfr"] = {"Kachhi", "Kutchi"}, ["kfs"] = {"Bilaspuri"}, ["kft"] = {"Kanjari"}, ["kfu"] = {"Katkari"}, ["kfv"] = {"Kurmukar"}, ["kfw"] = {"Kharam Naga"}, ["kfx"] = {"Kullu Pahari"}, ["kfy"] = {"Kumaoni"}, ["kfz"] = {"Koromfé"}, ["kga"] = {"Koyaga"}, ["kgb"] = {"Kawe"}, ["kge"] = {"Komering"}, ["kgf"] = {"Kube"}, ["kgg"] = {"Kusunda"}, ["kgi"] = {"Selangor Sign Language"}, ["kgj"] = {"Gamale Kham"}, ["kgk"] = {"Kaiwá"}, ["kgl"] = {"Kunggari"}, ["kgn"] = {"Karingani"}, ["kgo"] = {"Krongo"}, ["kgp"] = {"Kaingang"}, ["kgq"] = {"Kamoro"}, ["kgr"] = {"Abun"}, ["kgs"] = {"Kumbainggar"}, ["kgt"] = {"Somyev"}, ["kgu"] = {"Kobol"}, ["kgv"] = {"Karas"}, ["kgw"] = {"Karon Dori"}, ["kgx"] = {"Kamaru"}, ["kgy"] = {"Kyerung"}, ["kha"] = {"Khasi"}, ["khb"] = {"Lü"}, ["khc"] = {"Tukang Besi North"}, ["khd"] = {"Bädi Kanum"}, ["khe"] = {"Korowai"}, ["khf"] = {"Khuen"}, ["khg"] = {"Khams Tibetan"}, ["khh"] = {"Kehu"}, ["khi"] = {"Khoisan languages"}, ["khj"] = {"Kuturmi"}, ["khk"] = {"Halh Mongolian"}, ["khl"] = {"Lusi"}, ["khn"] = {"Khandesi"}, ["kho"] = {"Khotanese", "Sakan"}, ["khp"] = {"Kapori", "Kapauri"}, ["khq"] = {"Koyra Chiini Songhay"}, ["khr"] = {"Kharia"}, ["khs"] = {"Kasua"}, ["kht"] = {"Khamti"}, ["khu"] = {"Nkhumbi"}, ["khv"] = {"Khvarshi"}, ["khw"] = {"Khowar"}, ["khx"] = {"Kanu"}, ["khy"] = {"Kele (Democratic Republic of Congo)"}, ["khz"] = {"Keapara"}, ["kia"] = {"Kim"}, ["kib"] = {"Koalib"}, ["kic"] = {"Kickapoo"}, ["kid"] = {"Koshin"}, ["kie"] = {"Kibet"}, ["kif"] = {"Eastern Parbate Kham"}, ["kig"] = {"Kimaama", "Kimaghima"}, ["kih"] = {"Kilmeri"}, ["kii"] = {"Kitsai"}, ["kij"] = {"Kilivila"}, ["kil"] = {"Kariya"}, ["kim"] = {"Karagas"}, ["kio"] = {"Kiowa"}, ["kip"] = {"Sheshi Kham"}, ["kiq"] = {"Kosadle", "Kosare"}, ["kis"] = {"Kis"}, ["kit"] = {"Agob"}, ["kiu"] = {"Kirmanjki (individual language)"}, ["kiv"] = {"Kimbu"}, ["kiw"] = {"Northeast Kiwai"}, ["kix"] = {"Khiamniungan Naga"}, ["kiy"] = {"Kirikiri"}, ["kiz"] = {"Kisi"}, ["kja"] = {"Mlap"}, ["kjb"] = {"Q'anjob'al", "Kanjobal"}, ["kjc"] = {"Coastal Konjo"}, ["kjd"] = {"Southern Kiwai"}, ["kje"] = {"Kisar"}, ["kjg"] = {"Khmu"}, ["kjh"] = {"Khakas"}, ["kji"] = {"Zabana"}, ["kjj"] = {"Khinalugh"}, ["kjk"] = {"Highland Konjo"}, ["kjl"] = {"Western Parbate Kham"}, ["kjm"] = {"Kháng"}, ["kjn"] = {"Kunjen"}, ["kjo"] = {"Harijan Kinnauri"}, ["kjp"] = {"Pwo Eastern Karen"}, ["kjq"] = {"Western Keres"}, ["kjr"] = {"Kurudu"}, ["kjs"] = {"East Kewa"}, ["kjt"] = {"Phrae Pwo Karen"}, ["kju"] = {"Kashaya"}, ["kjv"] = {"Kaikavian Literary Language"}, ["kjx"] = {"Ramopa"}, ["kjy"] = {"Erave"}, ["kjz"] = {"Bumthangkha"}, ["kka"] = {"Kakanda"}, ["kkb"] = {"Kwerisa"}, ["kkc"] = {"Odoodee"}, ["kkd"] = {"Kinuku"}, ["kke"] = {"Kakabe"}, ["kkf"] = {"Kalaktang Monpa"}, ["kkg"] = {"Mabaka Valley Kalinga"}, ["kkh"] = {"Khün"}, ["kki"] = {"Kagulu"}, ["kkj"] = {"Kako"}, ["kkk"] = {"Kokota"}, ["kkl"] = {"Kosarek Yale"}, ["kkm"] = {"Kiong"}, ["kkn"] = {"Kon Keu"}, ["kko"] = {"Karko"}, ["kkp"] = {"Gugubera", "Koko-Bera"}, ["kkq"] = {"Kaeku"}, ["kkr"] = {"Kir-Balar"}, ["kks"] = {"Giiwo"}, ["kkt"] = {"Koi"}, ["kku"] = {"Tumi"}, ["kkv"] = {"Kangean"}, ["kkw"] = {"Teke-Kukuya"}, ["kkx"] = {"Kohin"}, ["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"}, ["kkz"] = {"Kaska"}, ["kla"] = {"Klamath-Modoc"}, ["klb"] = {"Kiliwa"}, ["klc"] = {"Kolbila"}, ["kld"] = {"Gamilaraay"}, ["kle"] = {"Kulung (Nepal)"}, ["klf"] = {"Kendeje"}, ["klg"] = {"Tagakaulo"}, ["klh"] = {"Weliki"}, ["kli"] = {"Kalumpang"}, ["klj"] = {"Khalaj"}, ["klk"] = {"Kono (Nigeria)"}, ["kll"] = {"Kagan Kalagan"}, ["klm"] = {"Migum"}, ["kln"] = {"Kalenjin"}, ["klo"] = {"Kapya"}, ["klp"] = {"Kamasa"}, ["klq"] = {"Rumu"}, ["klr"] = {"Khaling"}, ["kls"] = {"Kalasha"}, ["klt"] = {"Nukna"}, ["klu"] = {"Klao"}, ["klv"] = {"Maskelynes"}, ["klw"] = {"Tado", "Lindu"}, ["klx"] = {"Koluwawa"}, ["kly"] = {"Kalao"}, ["klz"] = {"Kabola"}, ["kma"] = {"Konni"}, ["kmb"] = {"Kimbundu"}, ["kmc"] = {"Southern Dong"}, ["kmd"] = {"Majukayang Kalinga"}, ["kme"] = {"Bakole"}, ["kmf"] = {"Kare (Papua New Guinea)"}, ["kmg"] = {"Kâte"}, ["kmh"] = {"Kalam"}, ["kmi"] = {"Kami (Nigeria)"}, ["kmj"] = {"Kumarbhag Paharia"}, ["kmk"] = {"Limos Kalinga"}, ["kml"] = {"Tanudan Kalinga"}, ["kmm"] = {"Kom (India)"}, ["kmn"] = {"Awtuw"}, ["kmo"] = {"Kwoma"}, ["kmp"] = {"Gimme"}, ["kmq"] = {"Kwama"}, ["kmr"] = {"Northern Kurdish"}, ["kms"] = {"Kamasau"}, ["kmt"] = {"Kemtuik"}, ["kmu"] = {"Kanite"}, ["kmv"] = {"Karipúna Creole French"}, ["kmw"] = {"Komo (Democratic Republic of Congo)"}, ["kmx"] = {"Waboda"}, ["kmy"] = {"Koma"}, ["kmz"] = {"Khorasani Turkish"}, ["kna"] = {"Dera (Nigeria)"}, ["knb"] = {"Lubuagan Kalinga"}, ["knc"] = {"Central Kanuri"}, ["knd"] = {"Konda"}, ["kne"] = {"Kankanaey"}, ["knf"] = {"Mankanya"}, ["kng"] = {"Koongo"}, ["kni"] = {"Kanufi"}, ["knj"] = {"Western Kanjobal"}, ["knk"] = {"Kuranko"}, ["knl"] = {"Keninjal"}, ["knm"] = {"Kanamarí"}, ["knn"] = {"Konkani (individual language)"}, ["kno"] = {"Kono (Sierra Leone)"}, ["knp"] = {"Kwanja"}, ["knq"] = {"Kintaq"}, ["knr"] = {"Kaningra"}, ["kns"] = {"Kensiu"}, ["knt"] = {"Panoan Katukína"}, ["knu"] = {"Kono (Guinea)"}, ["knv"] = {"Tabo"}, ["knw"] = {"Kung-Ekoka"}, ["knx"] = {"Kendayan", "Salako"}, ["kny"] = {"Kanyok"}, ["knz"] = {"Kalamsé"}, ["koa"] = {"Konomala"}, ["koc"] = {"Kpati"}, ["kod"] = {"Kodi"}, ["koe"] = {"Kacipo-Bale Suri"}, ["kof"] = {"Kubi"}, ["kog"] = {"Cogui", "Kogi"}, ["koh"] = {"Koyo"}, ["koi"] = {"Komi-Permyak"}, ["kok"] = {"Konkani (macrolanguage)"}, ["kol"] = {"Kol (Papua New Guinea)"}, ["koo"] = {"Konzo"}, ["kop"] = {"Waube"}, ["koq"] = {"Kota (Gabon)"}, ["kos"] = {"Kosraean"}, ["kot"] = {"Lagwan"}, ["kou"] = {"Koke"}, ["kov"] = {"Kudu-Camo"}, ["kow"] = {"Kugama"}, ["koy"] = {"Koyukon"}, ["koz"] = {"Korak"}, ["kpa"] = {"Kutto"}, ["kpb"] = {"Mullu Kurumba"}, ["kpc"] = {"Curripaco"}, ["kpd"] = {"Koba"}, ["kpe"] = {"Kpelle"}, ["kpf"] = {"Komba"}, ["kpg"] = {"Kapingamarangi"}, ["kph"] = {"Kplang"}, ["kpi"] = {"Kofei"}, ["kpj"] = {"Karajá"}, ["kpk"] = {"Kpan"}, ["kpl"] = {"Kpala"}, ["kpm"] = {"Koho"}, ["kpn"] = {"Kepkiriwát"}, ["kpo"] = {"Ikposo"}, ["kpq"] = {"Korupun-Sela"}, ["kpr"] = {"Korafe-Yegha"}, ["kps"] = {"Tehit"}, ["kpt"] = {"Karata"}, ["kpu"] = {"Kafoa"}, ["kpv"] = {"Komi-Zyrian"}, ["kpw"] = {"Kobon"}, ["kpx"] = {"Mountain Koiali"}, ["kpy"] = {"Koryak"}, ["kpz"] = {"Kupsabiny"}, ["kqa"] = {"Mum"}, ["kqb"] = {"Kovai"}, ["kqc"] = {"Doromu-Koki"}, ["kqd"] = {"Koy Sanjaq Surat"}, ["kqe"] = {"Kalagan"}, ["kqf"] = {"Kakabai"}, ["kqg"] = {"Khe"}, ["kqh"] = {"Kisankasa"}, ["kqi"] = {"Koitabu"}, ["kqj"] = {"Koromira"}, ["kqk"] = {"Kotafon Gbe"}, ["kql"] = {"Kyenele"}, ["kqm"] = {"Khisa"}, ["kqn"] = {"Kaonde"}, ["kqo"] = {"Eastern Krahn"}, ["kqp"] = {"Kimré"}, ["kqq"] = {"Krenak"}, ["kqr"] = {"Kimaragang"}, ["kqs"] = {"Northern Kissi"}, ["kqt"] = {"Klias River Kadazan"}, ["kqu"] = {"Seroa"}, ["kqv"] = {"Okolod"}, ["kqw"] = {"Kandas"}, ["kqx"] = {"Mser"}, ["kqy"] = {"Koorete"}, ["kqz"] = {"Korana"}, ["kra"] = {"Kumhali"}, ["krb"] = {"Karkin"}, ["krc"] = {"Karachay-Balkar"}, ["krd"] = {"Kairui-Midiki"}, ["kre"] = {"Panará"}, ["krf"] = {"Koro (Vanuatu)"}, ["krh"] = {"Kurama"}, ["kri"] = {"Krio"}, ["krj"] = {"Kinaray-A"}, ["krk"] = {"Kerek"}, ["krl"] = {"Karelian"}, ["krn"] = {"Sapo"}, ["kro"] = {"Kru languages"}, ["krp"] = {"Durop"}, ["krr"] = {"Krung"}, ["krs"] = {"Gbaya (Sudan)"}, ["krt"] = {"Tumari Kanuri"}, ["kru"] = {"Kurukh"}, ["krv"] = {"Kavet"}, ["krw"] = {"Western Krahn"}, ["krx"] = {"Karon"}, ["kry"] = {"Kryts"}, ["krz"] = {"Sota Kanum"}, ["ksb"] = {"Shambala"}, ["ksc"] = {"Southern Kalinga"}, ["ksd"] = {"Kuanua"}, ["kse"] = {"Kuni"}, ["ksf"] = {"Bafia"}, ["ksg"] = {"Kusaghe"}, ["ksh"] = {"Kölsch"}, ["ksi"] = {"Krisa", "I'saka"}, ["ksj"] = {"Uare"}, ["ksk"] = {"Kansa"}, ["ksl"] = {"Kumalu"}, ["ksm"] = {"Kumba"}, ["ksn"] = {"Kasiguranin"}, ["kso"] = {"Kofa"}, ["ksp"] = {"Kaba"}, ["ksq"] = {"Kwaami"}, ["ksr"] = {"Borong"}, ["kss"] = {"Southern Kisi"}, ["kst"] = {"Winyé"}, ["ksu"] = {"Khamyang"}, ["ksv"] = {"Kusu"}, ["ksw"] = {"S'gaw Karen"}, ["ksx"] = {"Kedang"}, ["ksy"] = {"Kharia Thar"}, ["ksz"] = {"Kodaku"}, ["kta"] = {"Katua"}, ["ktb"] = {"Kambaata"}, ["ktc"] = {"Kholok"}, ["ktd"] = {"Kokata", "Kukatha"}, ["kte"] = {"Nubri"}, ["ktf"] = {"Kwami"}, ["ktg"] = {"Kalkutung"}, ["kth"] = {"Karanga"}, ["kti"] = {"North Muyu"}, ["ktj"] = {"Plapo Krumen"}, ["ktk"] = {"Kaniet"}, ["ktl"] = {"Koroshi"}, ["ktm"] = {"Kurti"}, ["ktn"] = {"Karitiâna"}, ["kto"] = {"Kuot"}, ["ktp"] = {"Kaduo"}, ["ktq"] = {"Katabaga"}, ["kts"] = {"South Muyu"}, ["ktt"] = {"Ketum"}, ["ktu"] = {"Kituba (Democratic Republic of Congo)"}, ["ktv"] = {"Eastern Katu"}, ["ktw"] = {"Kato"}, ["ktx"] = {"Kaxararí"}, ["kty"] = {"Kango (Bas-Uélé District)"}, ["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"}, ["kub"] = {"Kutep"}, ["kuc"] = {"Kwinsu"}, ["kud"] = {"'Auhelawa"}, ["kue"] = {"Kuman (Papua New Guinea)"}, ["kuf"] = {"Western Katu"}, ["kug"] = {"Kupa"}, ["kuh"] = {"Kushi"}, ["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"}, ["kuj"] = {"Kuria"}, ["kuk"] = {"Kepo'"}, ["kul"] = {"Kulere"}, ["kum"] = {"Kumyk"}, ["kun"] = {"Kunama"}, ["kuo"] = {"Kumukio"}, ["kup"] = {"Kunimaipa"}, ["kuq"] = {"Karipuna"}, ["kus"] = {"Kusaal"}, ["kut"] = {"Kutenai"}, ["kuu"] = {"Upper Kuskokwim"}, ["kuv"] = {"Kur"}, ["kuw"] = {"Kpagua"}, ["kux"] = {"Kukatja"}, ["kuy"] = {"Kuuku-Ya'u"}, ["kuz"] = {"Kunza"}, ["kva"] = {"Bagvalal"}, ["kvb"] = {"Kubu"}, ["kvc"] = {"Kove"}, ["kvd"] = {"Kui (Indonesia)"}, ["kve"] = {"Kalabakan"}, ["kvf"] = {"Kabalai"}, ["kvg"] = {"Kuni-Boazi"}, ["kvh"] = {"Komodo"}, ["kvi"] = {"Kwang"}, ["kvj"] = {"Psikye"}, ["kvk"] = {"Korean Sign Language"}, ["kvl"] = {"Kayaw"}, ["kvm"] = {"Kendem"}, ["kvn"] = {"Border Kuna"}, ["kvo"] = {"Dobel"}, ["kvp"] = {"Kompane"}, ["kvq"] = {"Geba Karen"}, ["kvr"] = {"Kerinci"}, ["kvt"] = {"Lahta Karen", "Lahta"}, ["kvu"] = {"Yinbaw Karen"}, ["kvv"] = {"Kola"}, ["kvw"] = {"Wersing"}, ["kvx"] = {"Parkari Koli"}, ["kvy"] = {"Yintale Karen", "Yintale"}, ["kvz"] = {"Tsakwambo", "Tsaukambo"}, ["kwa"] = {"Dâw"}, ["kwb"] = {"Kwa"}, ["kwc"] = {"Likwala"}, ["kwd"] = {"Kwaio"}, ["kwe"] = {"Kwerba"}, ["kwf"] = {"Kwara'ae"}, ["kwg"] = {"Sara Kaba Deme"}, ["kwh"] = {"Kowiai"}, ["kwi"] = {"Awa-Cuaiquer"}, ["kwj"] = {"Kwanga"}, ["kwk"] = {"Kwakiutl"}, ["kwl"] = {"Kofyar"}, ["kwm"] = {"Kwambi"}, ["kwn"] = {"Kwangali"}, ["kwo"] = {"Kwomtari"}, ["kwp"] = {"Kodia"}, ["kwr"] = {"Kwer"}, ["kws"] = {"Kwese"}, ["kwt"] = {"Kwesten"}, ["kwu"] = {"Kwakum"}, ["kwv"] = {"Sara Kaba Náà"}, ["kww"] = {"Kwinti"}, ["kwx"] = {"Khirwar"}, ["kwy"] = {"San Salvador Kongo"}, ["kwz"] = {"Kwadi"}, ["kxa"] = {"Kairiru"}, ["kxb"] = {"Krobu"}, ["kxc"] = {"Konso", "Khonso"}, ["kxd"] = {"Brunei"}, ["kxf"] = {"Manumanaw Karen", "Manumanaw"}, ["kxh"] = {"Karo (Ethiopia)"}, ["kxi"] = {"Keningau Murut"}, ["kxj"] = {"Kulfa"}, ["kxk"] = {"Zayein Karen"}, ["kxm"] = {"Northern Khmer"}, ["kxn"] = {"Kanowit-Tanjong Melanau"}, ["kxo"] = {"Kanoé"}, ["kxp"] = {"Wadiyara Koli"}, ["kxq"] = {"Smärky Kanum"}, ["kxr"] = {"Koro (Papua New Guinea)"}, ["kxs"] = {"Kangjia"}, ["kxt"] = {"Koiwat"}, ["kxv"] = {"Kuvi"}, ["kxw"] = {"Konai"}, ["kxx"] = {"Likuba"}, ["kxy"] = {"Kayong"}, ["kxz"] = {"Kerewo"}, ["kya"] = {"Kwaya"}, ["kyb"] = {"Butbut Kalinga"}, ["kyc"] = {"Kyaka"}, ["kyd"] = {"Karey"}, ["kye"] = {"Krache"}, ["kyf"] = {"Kouya"}, ["kyg"] = {"Keyagana"}, ["kyh"] = {"Karok"}, ["kyi"] = {"Kiput"}, ["kyj"] = {"Karao"}, ["kyk"] = {"Kamayo"}, ["kyl"] = {"Kalapuya"}, ["kym"] = {"Kpatili"}, ["kyn"] = {"Northern Binukidnon"}, ["kyo"] = {"Kelon"}, ["kyp"] = {"Kang"}, ["kyq"] = {"Kenga"}, ["kyr"] = {"Kuruáya"}, ["kys"] = {"Baram Kayan"}, ["kyt"] = {"Kayagar"}, ["kyu"] = {"Western Kayah"}, ["kyv"] = {"Kayort"}, ["kyw"] = {"Kudmali"}, ["kyx"] = {"Rapoisi"}, ["kyy"] = {"Kambaira"}, ["kyz"] = {"Kayabí"}, ["kza"] = {"Western Karaboro"}, ["kzb"] = {"Kaibobo"}, ["kzc"] = {"Bondoukou Kulango"}, ["kzd"] = {"Kadai"}, ["kze"] = {"Kosena"}, ["kzf"] = {"Da'a Kaili"}, ["kzg"] = {"Kikai"}, ["kzi"] = {"Kelabit"}, ["kzk"] = {"Kazukuru"}, ["kzl"] = {"Kayeli"}, ["kzm"] = {"Kais"}, ["kzn"] = {"Kokola"}, ["kzo"] = {"Kaningi"}, ["kzp"] = {"Kaidipang"}, ["kzq"] = {"Kaike"}, ["kzr"] = {"Karang"}, ["kzs"] = {"Sugut Dusun"}, ["kzu"] = {"Kayupulau"}, ["kzv"] = {"Komyandaret"}, ["kzw"] = {"Karirí-Xocó"}, ["kzx"] = {"Kamarian"}, ["kzy"] = {"Kango (Tshopo District)"}, ["kzz"] = {"Kalabra"}, ["laa"] = {"Southern Subanen"}, ["lab"] = {"Linear A"}, ["lac"] = {"Lacandon"}, ["lad"] = {"Ladino"}, ["lae"] = {"Pattani"}, ["laf"] = {"Lafofa"}, ["lag"] = {"Rangi"}, ["lah"] = {"Lahnda"}, ["lai"] = {"Lambya"}, ["laj"] = {"Lango (Uganda)"}, ["lal"] = {"Lalia"}, ["lam"] = {"Lamba"}, ["lan"] = {"Laru"}, ["lap"] = {"Laka (Chad)"}, ["laq"] = {"Qabiao"}, ["lar"] = {"Larteh"}, ["las"] = {"Lama (Togo)"}, ["lau"] = {"Laba"}, ["law"] = {"Lauje"}, ["lax"] = {"Tiwa"}, ["lay"] = {"Lama Bai"}, ["laz"] = {"Aribwatsa"}, ["lbb"] = {"Label"}, ["lbc"] = {"Lakkia"}, ["lbe"] = {"Lak"}, ["lbf"] = {"Tinani"}, ["lbg"] = {"Laopang"}, ["lbi"] = {"La'bi"}, ["lbj"] = {"Ladakhi"}, ["lbk"] = {"Central Bontok"}, ["lbl"] = {"Libon Bikol"}, ["lbm"] = {"Lodhi"}, ["lbn"] = {"Rmeet"}, ["lbo"] = {"Laven"}, ["lbq"] = {"Wampar"}, ["lbr"] = {"Lohorung"}, ["lbs"] = {"Libyan Sign Language"}, ["lbt"] = {"Lachi"}, ["lbu"] = {"Labu"}, ["lbv"] = {"Lavatbura-Lamusong"}, ["lbw"] = {"Tolaki"}, ["lbx"] = {"Lawangan"}, ["lby"] = {"Lamalama", "Lamu-Lamu"}, ["lbz"] = {"Lardil"}, ["lcc"] = {"Legenyem"}, ["lcd"] = {"Lola"}, ["lce"] = {"Loncong", "Sekak"}, ["lcf"] = {"Lubu"}, ["lch"] = {"Luchazi"}, ["lcl"] = {"Lisela"}, ["lcm"] = {"Tungag"}, ["lcp"] = {"Western Lawa"}, ["lcq"] = {"Luhu"}, ["lcs"] = {"Lisabata-Nuniali"}, ["lda"] = {"Kla-Dan"}, ["ldb"] = {"Dũya"}, ["ldd"] = {"Luri"}, ["ldg"] = {"Lenyima"}, ["ldh"] = {"Lamja-Dengsa-Tola"}, ["ldi"] = {"Laari"}, ["ldj"] = {"Lemoro"}, ["ldk"] = {"Leelau"}, ["ldl"] = {"Kaan"}, ["ldm"] = {"Landoma"}, ["ldn"] = {"Láadan"}, ["ldo"] = {"Loo"}, ["ldp"] = {"Tso"}, ["ldq"] = {"Lufu"}, ["lea"] = {"Lega-Shabunda"}, ["leb"] = {"Lala-Bisa"}, ["lec"] = {"Leco"}, ["led"] = {"Lendu"}, ["lee"] = {"Lyélé"}, ["lef"] = {"Lelemi"}, ["leh"] = {"Lenje"}, ["lei"] = {"Lemio"}, ["lej"] = {"Lengola"}, ["lek"] = {"Leipon"}, ["lel"] = {"Lele (Democratic Republic of Congo)"}, ["lem"] = {"Nomaande"}, ["len"] = {"Lenca"}, ["leo"] = {"Leti (Cameroon)"}, ["lep"] = {"Lepcha"}, ["leq"] = {"Lembena"}, ["ler"] = {"Lenkau"}, ["les"] = {"Lese"}, ["let"] = {"Lesing-Gelimi", "Amio-Gelimi"}, ["leu"] = {"Kara (Papua New Guinea)"}, ["lev"] = {"Lamma"}, ["lew"] = {"Ledo Kaili"}, ["lex"] = {"Luang"}, ["ley"] = {"Lemolang"}, ["lez"] = {"Lezghian"}, ["lfa"] = {"Lefa"}, ["lfn"] = {"Lingua Franca Nova"}, ["lga"] = {"Lungga"}, ["lgb"] = {"Laghu"}, ["lgg"] = {"Lugbara"}, ["lgh"] = {"Laghuu"}, ["lgi"] = {"Lengilu"}, ["lgk"] = {"Lingarak", "Neverver"}, ["lgl"] = {"Wala"}, ["lgm"] = {"Lega-Mwenga"}, ["lgn"] = {"T'apo", "Opuuo"}, ["lgo"] = {"Lango (South Sudan)"}, ["lgq"] = {"Logba"}, ["lgr"] = {"Lengo"}, ["lgs"] = {"Guinea-Bissau Sign Language", "Língua Gestual Guineense"}, ["lgt"] = {"Pahi"}, ["lgu"] = {"Longgu"}, ["lgz"] = {"Ligenza"}, ["lha"] = {"Laha (Viet Nam)"}, ["lhh"] = {"Laha (Indonesia)"}, ["lhi"] = {"Lahu Shi"}, ["lhl"] = {"Lahul Lohar"}, ["lhm"] = {"Lhomi"}, ["lhn"] = {"Lahanan"}, ["lhp"] = {"Lhokpu"}, ["lhs"] = {"Mlahsö"}, ["lht"] = {"Lo-Toga"}, ["lhu"] = {"Lahu"}, ["lia"] = {"West-Central Limba"}, ["lib"] = {"Likum"}, ["lic"] = {"Hlai"}, ["lid"] = {"Nyindrou"}, ["lie"] = {"Likila"}, ["lif"] = {"Limbu"}, ["lig"] = {"Ligbi"}, ["lih"] = {"Lihir"}, ["lij"] = {"Ligurian"}, ["lik"] = {"Lika"}, ["lil"] = {"Lillooet"}, ["lio"] = {"Liki"}, ["lip"] = {"Sekpele"}, ["liq"] = {"Libido"}, ["lir"] = {"Liberian English"}, ["lis"] = {"Lisu"}, ["liu"] = {"Logorik"}, ["liv"] = {"Liv"}, ["liw"] = {"Col"}, ["lix"] = {"Liabuku"}, ["liy"] = {"Banda-Bambari"}, ["liz"] = {"Libinza"}, ["lja"] = {"Golpa"}, ["lje"] = {"Rampi"}, ["lji"] = {"Laiyolo"}, ["ljl"] = {"Li'o"}, ["ljp"] = {"Lampung Api"}, ["ljw"] = {"Yirandali"}, ["ljx"] = {"Yuru"}, ["lka"] = {"Lakalei"}, ["lkb"] = {"Kabras", "Lukabaras"}, ["lkc"] = {"Kucong"}, ["lkd"] = {"Lakondê"}, ["lke"] = {"Kenyi"}, ["lkh"] = {"Lakha"}, ["lki"] = {"Laki"}, ["lkj"] = {"Remun"}, ["lkl"] = {"Laeko-Libuat"}, ["lkm"] = {"Kalaamaya"}, ["lkn"] = {"Lakon", "Vure"}, ["lko"] = {"Khayo", "Olukhayo"}, ["lkr"] = {"Päri"}, ["lks"] = {"Kisa", "Olushisa"}, ["lkt"] = {"Lakota"}, ["lku"] = {"Kungkari"}, ["lky"] = {"Lokoya"}, ["lla"] = {"Lala-Roba"}, ["llb"] = {"Lolo"}, ["llc"] = {"Lele (Guinea)"}, ["lld"] = {"Ladin"}, ["lle"] = {"Lele (Papua New Guinea)"}, ["llf"] = {"Hermit"}, ["llg"] = {"Lole"}, ["llh"] = {"Lamu"}, ["lli"] = {"Teke-Laali"}, ["llj"] = {"Ladji Ladji"}, ["llk"] = {"Lelak"}, ["lll"] = {"Lilau"}, ["llm"] = {"Lasalimu"}, ["lln"] = {"Lele (Chad)"}, ["llp"] = {"North Efate"}, ["llq"] = {"Lolak"}, ["lls"] = {"Lithuanian Sign Language"}, ["llu"] = {"Lau"}, ["llx"] = {"Lauan"}, ["lma"] = {"East Limba"}, ["lmb"] = {"Merei"}, ["lmc"] = {"Limilngan"}, ["lmd"] = {"Lumun"}, ["lme"] = {"Pévé"}, ["lmf"] = {"South Lembata"}, ["lmg"] = {"Lamogai"}, ["lmh"] = {"Lambichhong"}, ["lmi"] = {"Lombi"}, ["lmj"] = {"West Lembata"}, ["lmk"] = {"Lamkang"}, ["lml"] = {"Hano"}, ["lmn"] = {"Lambadi"}, ["lmo"] = {"Lombard"}, ["lmp"] = {"Limbum"}, ["lmq"] = {"Lamatuka"}, ["lmr"] = {"Lamalera"}, ["lmu"] = {"Lamenu"}, ["lmv"] = {"Lomaiviti"}, ["lmw"] = {"Lake Miwok"}, ["lmx"] = {"Laimbue"}, ["lmy"] = {"Lamboya"}, ["lna"] = {"Langbashe"}, ["lnb"] = {"Mbalanhu"}, ["lnd"] = {"Lundayeh", "Lun Bawang"}, ["lng"] = {"Langobardic"}, ["lnh"] = {"Lanoh"}, ["lni"] = {"Daantanai'"}, ["lnj"] = {"Leningitij"}, ["lnl"] = {"South Central Banda"}, ["lnm"] = {"Langam"}, ["lnn"] = {"Lorediakarkar"}, ["lns"] = {"Lamnso'"}, ["lnu"] = {"Longuda"}, ["lnw"] = {"Lanima"}, ["lnz"] = {"Lonzo"}, ["loa"] = {"Loloda"}, ["lob"] = {"Lobi"}, ["loc"] = {"Inonhan"}, ["loe"] = {"Saluan"}, ["lof"] = {"Logol"}, ["log"] = {"Logo"}, ["loh"] = {"Laarim", "Narim"}, ["loi"] = {"Loma (Côte d'Ivoire)"}, ["loj"] = {"Lou"}, ["lok"] = {"Loko"}, ["lol"] = {"Mongo"}, ["lom"] = {"Loma (Liberia)"}, ["lon"] = {"Malawi Lomwe"}, ["loo"] = {"Lombo"}, ["lop"] = {"Lopa"}, ["loq"] = {"Lobala"}, ["lor"] = {"Téén"}, ["los"] = {"Loniu"}, ["lot"] = {"Otuho"}, ["lou"] = {"Louisiana Creole"}, ["lov"] = {"Lopi"}, ["low"] = {"Tampias Lobu"}, ["lox"] = {"Loun"}, ["loy"] = {"Loke"}, ["loz"] = {"Lozi"}, ["lpa"] = {"Lelepa"}, ["lpe"] = {"Lepki"}, ["lpn"] = {"Long Phuri Naga"}, ["lpo"] = {"Lipo"}, ["lpx"] = {"Lopit"}, ["lqr"] = {"Logir"}, ["lra"] = {"Rara Bakati'"}, ["lrc"] = {"Northern Luri"}, ["lre"] = {"Laurentian"}, ["lrg"] = {"Laragia"}, ["lri"] = {"Marachi", "Olumarachi"}, ["lrk"] = {"Loarki"}, ["lrl"] = {"Lari"}, ["lrm"] = {"Marama", "Olumarama"}, ["lrn"] = {"Lorang"}, ["lro"] = {"Laro"}, ["lrr"] = {"Southern Yamphu"}, ["lrt"] = {"Larantuka Malay"}, ["lrv"] = {"Larevat"}, ["lrz"] = {"Lemerig"}, ["lsa"] = {"Lasgerdi"}, ["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"}, ["lsc"] = {"Albarradas Sign Language", "Lengua de señas Albarradas"}, ["lsd"] = {"Lishana Deni"}, ["lse"] = {"Lusengo"}, ["lsh"] = {"Lish"}, ["lsi"] = {"Lashi"}, ["lsl"] = {"Latvian Sign Language"}, ["lsm"] = {"Saamia", "Olusamia"}, ["lsn"] = {"Tibetan Sign Language"}, ["lso"] = {"Laos Sign Language"}, ["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"}, ["lsr"] = {"Aruop"}, ["lss"] = {"Lasi"}, ["lst"] = {"Trinidad and Tobago Sign Language"}, ["lsv"] = {"Sivia Sign Language"}, ["lsw"] = {"Seychelles Sign Language", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"}, ["lsy"] = {"Mauritian Sign Language"}, ["ltc"] = {"Late Middle Chinese"}, ["ltg"] = {"Latgalian"}, ["lth"] = {"Thur"}, ["lti"] = {"Leti (Indonesia)"}, ["ltn"] = {"Latundê"}, ["lto"] = {"Tsotso", "Olutsotso"}, ["lts"] = {"Tachoni", "Lutachoni"}, ["ltu"] = {"Latu"}, ["lua"] = {"Luba-Lulua"}, ["luc"] = {"Aringa"}, ["lud"] = {"Ludian"}, ["lue"] = {"Luvale"}, ["luf"] = {"Laua"}, ["lui"] = {"Luiseno"}, ["luj"] = {"Luna"}, ["luk"] = {"Lunanakha"}, ["lul"] = {"Olu'bo"}, ["lum"] = {"Luimbi"}, ["lun"] = {"Lunda"}, ["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"}, ["lup"] = {"Lumbu"}, ["luq"] = {"Lucumi"}, ["lur"] = {"Laura"}, ["lus"] = {"Lushai"}, ["lut"] = {"Lushootseed"}, ["luu"] = {"Lumba-Yakkha"}, ["luv"] = {"Luwati"}, ["luw"] = {"Luo (Cameroon)"}, ["luy"] = {"Luyia", "Oluluyia"}, ["luz"] = {"Southern Luri"}, ["lva"] = {"Maku'a"}, ["lvi"] = {"Lavi"}, ["lvk"] = {"Lavukaleve"}, ["lvl"] = {"Lwel"}, ["lvs"] = {"Standard Latvian"}, ["lvu"] = {"Levuka"}, ["lwa"] = {"Lwalu"}, ["lwe"] = {"Lewo Eleng"}, ["lwg"] = {"Wanga", "Oluwanga"}, ["lwh"] = {"White Lachi"}, ["lwl"] = {"Eastern Lawa"}, ["lwm"] = {"Laomian"}, ["lwo"] = {"Luwo"}, ["lws"] = {"Malawian Sign Language"}, ["lwt"] = {"Lewotobi"}, ["lwu"] = {"Lawu"}, ["lww"] = {"Lewo"}, ["lxm"] = {"Lakurumau"}, ["lya"] = {"Layakha"}, ["lyg"] = {"Lyngngam"}, ["lyn"] = {"Luyana"}, ["lzh"] = {"Literary Chinese"}, ["lzl"] = {"Litzlitz"}, ["lzn"] = {"Leinong Naga"}, ["lzz"] = {"Laz"}, ["maa"] = {"San Jerónimo Tecóatl Mazatec"}, ["mab"] = {"Yutanduchi Mixtec"}, ["mad"] = {"Madurese"}, ["mae"] = {"Bo-Rukul"}, ["maf"] = {"Mafa"}, ["mag"] = {"Magahi"}, ["mai"] = {"Maithili"}, ["maj"] = {"Jalapa De Díaz Mazatec"}, ["mak"] = {"Makasar"}, ["mam"] = {"Mam"}, ["man"] = {"Mandingo", "Manding"}, ["map"] = {"Austronesian languages"}, ["maq"] = {"Chiquihuitlán Mazatec"}, ["mas"] = {"Masai"}, ["mat"] = {"San Francisco Matlatzinca"}, ["mau"] = {"Huautla Mazatec"}, ["mav"] = {"Sateré-Mawé"}, ["maw"] = {"Mampruli"}, ["max"] = {"North Moluccan Malay"}, ["maz"] = {"Central Mazahua"}, ["mba"] = {"Higaonon"}, ["mbb"] = {"Western Bukidnon Manobo"}, ["mbc"] = {"Macushi"}, ["mbd"] = {"Dibabawon Manobo"}, ["mbe"] = {"Molale"}, ["mbf"] = {"Baba Malay"}, ["mbh"] = {"Mangseng"}, ["mbi"] = {"Ilianen Manobo"}, ["mbj"] = {"Nadëb"}, ["mbk"] = {"Malol"}, ["mbl"] = {"Maxakalí"}, ["mbm"] = {"Ombamba"}, ["mbn"] = {"Macaguán"}, ["mbo"] = {"Mbo (Cameroon)"}, ["mbp"] = {"Malayo"}, ["mbq"] = {"Maisin"}, ["mbr"] = {"Nukak Makú"}, ["mbs"] = {"Sarangani Manobo"}, ["mbt"] = {"Matigsalug Manobo"}, ["mbu"] = {"Mbula-Bwazza"}, ["mbv"] = {"Mbulungish"}, ["mbw"] = {"Maring"}, ["mbx"] = {"Mari (East Sepik Province)"}, ["mby"] = {"Memoni"}, ["mbz"] = {"Amoltepec Mixtec"}, ["mca"] = {"Maca"}, ["mcb"] = {"Machiguenga"}, ["mcc"] = {"Bitur"}, ["mcd"] = {"Sharanahua"}, ["mce"] = {"Itundujia Mixtec"}, ["mcf"] = {"Matsés"}, ["mcg"] = {"Mapoyo"}, ["mch"] = {"Maquiritari"}, ["mci"] = {"Mese"}, ["mcj"] = {"Mvanip"}, ["mck"] = {"Mbunda"}, ["mcl"] = {"Macaguaje"}, ["mcm"] = {"Malaccan Creole Portuguese"}, ["mcn"] = {"Masana"}, ["mco"] = {"Coatlán Mixe"}, ["mcp"] = {"Makaa"}, ["mcq"] = {"Ese"}, ["mcr"] = {"Menya"}, ["mcs"] = {"Mambai"}, ["mct"] = {"Mengisa"}, ["mcu"] = {"Cameroon Mambila"}, ["mcv"] = {"Minanibai"}, ["mcw"] = {"Mawa (Chad)"}, ["mcx"] = {"Mpiemo"}, ["mcy"] = {"South Watut"}, ["mcz"] = {"Mawan"}, ["mda"] = {"Mada (Nigeria)"}, ["mdb"] = {"Morigi"}, ["mdc"] = {"Male (Papua New Guinea)"}, ["mdd"] = {"Mbum"}, ["mde"] = {"Maba (Chad)"}, ["mdf"] = {"Moksha"}, ["mdg"] = {"Massalat"}, ["mdh"] = {"Maguindanaon"}, ["mdi"] = {"Mamvu"}, ["mdj"] = {"Mangbetu"}, ["mdk"] = {"Mangbutu"}, ["mdl"] = {"Maltese Sign Language"}, ["mdm"] = {"Mayogo"}, ["mdn"] = {"Mbati"}, ["mdp"] = {"Mbala"}, ["mdq"] = {"Mbole"}, ["mdr"] = {"Mandar"}, ["mds"] = {"Maria (Papua New Guinea)"}, ["mdt"] = {"Mbere"}, ["mdu"] = {"Mboko"}, ["mdv"] = {"Santa Lucía Monteverde Mixtec"}, ["mdw"] = {"Mbosi"}, ["mdx"] = {"Dizin"}, ["mdy"] = {"Male (Ethiopia)"}, ["mdz"] = {"Suruí Do Pará"}, ["mea"] = {"Menka"}, ["meb"] = {"Ikobi"}, ["mec"] = {"Marra"}, ["med"] = {"Melpa"}, ["mee"] = {"Mengen"}, ["mef"] = {"Megam"}, ["meh"] = {"Southwestern Tlaxiaco Mixtec"}, ["mei"] = {"Midob"}, ["mej"] = {"Meyah"}, ["mek"] = {"Mekeo"}, ["mel"] = {"Central Melanau"}, ["mem"] = {"Mangala"}, ["men"] = {"Mende (Sierra Leone)"}, ["meo"] = {"Kedah Malay"}, ["mep"] = {"Miriwoong"}, ["meq"] = {"Merey"}, ["mer"] = {"Meru"}, ["mes"] = {"Masmaje"}, ["met"] = {"Mato"}, ["meu"] = {"Motu"}, ["mev"] = {"Mano"}, ["mew"] = {"Maaka"}, ["mey"] = {"Hassaniyya"}, ["mez"] = {"Menominee"}, ["mfa"] = {"Pattani Malay"}, ["mfb"] = {"Bangka"}, ["mfc"] = {"Mba"}, ["mfd"] = {"Mendankwe-Nkwen"}, ["mfe"] = {"Morisyen"}, ["mff"] = {"Naki"}, ["mfg"] = {"Mogofin"}, ["mfh"] = {"Matal"}, ["mfi"] = {"Wandala"}, ["mfj"] = {"Mefele"}, ["mfk"] = {"North Mofu"}, ["mfl"] = {"Putai"}, ["mfm"] = {"Marghi South"}, ["mfn"] = {"Cross River Mbembe"}, ["mfo"] = {"Mbe"}, ["mfp"] = {"Makassar Malay"}, ["mfq"] = {"Moba"}, ["mfr"] = {"Marrithiyel"}, ["mfs"] = {"Mexican Sign Language"}, ["mft"] = {"Mokerang"}, ["mfu"] = {"Mbwela"}, ["mfv"] = {"Mandjak"}, ["mfw"] = {"Mulaha"}, ["mfx"] = {"Melo"}, ["mfy"] = {"Mayo"}, ["mfz"] = {"Mabaan"}, ["mga"] = {"Middle Irish (900-1200)"}, ["mgb"] = {"Mararit"}, ["mgc"] = {"Morokodo"}, ["mgd"] = {"Moru"}, ["mge"] = {"Mango"}, ["mgf"] = {"Maklew"}, ["mgg"] = {"Mpumpong"}, ["mgh"] = {"Makhuwa-Meetto"}, ["mgi"] = {"Lijili"}, ["mgj"] = {"Abureni"}, ["mgk"] = {"Mawes"}, ["mgl"] = {"Maleu-Kilenge"}, ["mgm"] = {"Mambae"}, ["mgn"] = {"Mbangi"}, ["mgo"] = {"Meta'"}, ["mgp"] = {"Eastern Magar"}, ["mgq"] = {"Malila"}, ["mgr"] = {"Mambwe-Lungu"}, ["mgs"] = {"Manda (Tanzania)"}, ["mgt"] = {"Mongol"}, ["mgu"] = {"Mailu"}, ["mgv"] = {"Matengo"}, ["mgw"] = {"Matumbi"}, ["mgy"] = {"Mbunga"}, ["mgz"] = {"Mbugwe"}, ["mha"] = {"Manda (India)"}, ["mhb"] = {"Mahongwe"}, ["mhc"] = {"Mocho"}, ["mhd"] = {"Mbugu"}, ["mhe"] = {"Besisi", "Mah Meri"}, ["mhf"] = {"Mamaa"}, ["mhg"] = {"Margu"}, ["mhi"] = {"Ma'di"}, ["mhj"] = {"Mogholi"}, ["mhk"] = {"Mungaka"}, ["mhl"] = {"Mauwake"}, ["mhm"] = {"Makhuwa-Moniga"}, ["mhn"] = {"Mócheno"}, ["mho"] = {"Mashi (Zambia)"}, ["mhp"] = {"Balinese Malay"}, ["mhq"] = {"Mandan"}, ["mhr"] = {"Eastern Mari"}, ["mhs"] = {"Buru (Indonesia)"}, ["mht"] = {"Mandahuaca"}, ["mhu"] = {"Digaro-Mishmi", "Darang Deng"}, ["mhw"] = {"Mbukushu"}, ["mhx"] = {"Maru", "Lhaovo"}, ["mhy"] = {"Ma'anyan"}, ["mhz"] = {"Mor (Mor Islands)"}, ["mia"] = {"Miami"}, ["mib"] = {"Atatláhuca Mixtec"}, ["mic"] = {"Mi'kmaq", "Micmac"}, ["mid"] = {"Mandaic"}, ["mie"] = {"Ocotepec Mixtec"}, ["mif"] = {"Mofu-Gudur"}, ["mig"] = {"San Miguel El Grande Mixtec"}, ["mih"] = {"Chayuco Mixtec"}, ["mii"] = {"Chigmecatitlán Mixtec"}, ["mij"] = {"Abar", "Mungbam"}, ["mik"] = {"Mikasuki"}, ["mil"] = {"Peñoles Mixtec"}, ["mim"] = {"Alacatlatzala Mixtec"}, ["min"] = {"Minangkabau"}, ["mio"] = {"Pinotepa Nacional Mixtec"}, ["mip"] = {"Apasco-Apoala Mixtec"}, ["miq"] = {"Mískito"}, ["mir"] = {"Isthmus Mixe"}, ["mis"] = {"Uncoded languages"}, ["mit"] = {"Southern Puebla Mixtec"}, ["miu"] = {"Cacaloxtepec Mixtec"}, ["miw"] = {"Akoye"}, ["mix"] = {"Mixtepec Mixtec"}, ["miy"] = {"Ayutla Mixtec"}, ["miz"] = {"Coatzospan Mixtec"}, ["mjb"] = {"Makalero"}, ["mjc"] = {"San Juan Colorado Mixtec"}, ["mjd"] = {"Northwest Maidu"}, ["mje"] = {"Muskum"}, ["mjg"] = {"Tu"}, ["mjh"] = {"Mwera (Nyasa)"}, ["mji"] = {"Kim Mun"}, ["mjj"] = {"Mawak"}, ["mjk"] = {"Matukar"}, ["mjl"] = {"Mandeali"}, ["mjm"] = {"Medebur"}, ["mjn"] = {"Ma (Papua New Guinea)"}, ["mjo"] = {"Malankuravan"}, ["mjp"] = {"Malapandaram"}, ["mjq"] = {"Malaryan"}, ["mjr"] = {"Malavedan"}, ["mjs"] = {"Miship"}, ["mjt"] = {"Sauria Paharia"}, ["mju"] = {"Manna-Dora"}, ["mjv"] = {"Mannan"}, ["mjw"] = {"Karbi"}, ["mjx"] = {"Mahali"}, ["mjy"] = {"Mahican"}, ["mjz"] = {"Majhi"}, ["mka"] = {"Mbre"}, ["mkb"] = {"Mal Paharia"}, ["mkc"] = {"Siliput"}, ["mke"] = {"Mawchi"}, ["mkf"] = {"Miya"}, ["mkg"] = {"Mak (China)"}, ["mkh"] = {"Mon-Khmer languages"}, ["mki"] = {"Dhatki"}, ["mkj"] = {"Mokilese"}, ["mkk"] = {"Byep"}, ["mkl"] = {"Mokole"}, ["mkm"] = {"Moklen"}, ["mkn"] = {"Kupang Malay"}, ["mko"] = {"Mingang Doso"}, ["mkp"] = {"Moikodi"}, ["mkq"] = {"Bay Miwok"}, ["mkr"] = {"Malas"}, ["mks"] = {"Silacayoapan Mixtec"}, ["mkt"] = {"Vamale"}, ["mku"] = {"Konyanka Maninka"}, ["mkv"] = {"Mafea"}, ["mkw"] = {"Kituba (Congo)"}, ["mkx"] = {"Kinamiging Manobo"}, ["mky"] = {"East Makian"}, ["mkz"] = {"Makasae"}, ["mla"] = {"Malo"}, ["mlb"] = {"Mbule"}, ["mlc"] = {"Cao Lan"}, ["mle"] = {"Manambu"}, ["mlf"] = {"Mal"}, ["mlh"] = {"Mape"}, ["mli"] = {"Malimpung"}, ["mlj"] = {"Miltu"}, ["mlk"] = {"Ilwana", "Kiwilwana"}, ["mll"] = {"Malua Bay"}, ["mlm"] = {"Mulam"}, ["mln"] = {"Malango"}, ["mlo"] = {"Mlomp"}, ["mlp"] = {"Bargam"}, ["mlq"] = {"Western Maninkakan"}, ["mlr"] = {"Vame"}, ["mls"] = {"Masalit"}, ["mlu"] = {"To'abaita"}, ["mlv"] = {"Motlav", "Mwotlap"}, ["mlw"] = {"Moloko"}, ["mlx"] = {"Malfaxal", "Naha'ai"}, ["mlz"] = {"Malaynon"}, ["mma"] = {"Mama"}, ["mmb"] = {"Momina"}, ["mmc"] = {"Michoacán Mazahua"}, ["mmd"] = {"Maonan"}, ["mme"] = {"Mae"}, ["mmf"] = {"Mundat"}, ["mmg"] = {"North Ambrym"}, ["mmh"] = {"Mehináku"}, ["mmi"] = {"Musar"}, ["mmj"] = {"Majhwar"}, ["mmk"] = {"Mukha-Dora"}, ["mml"] = {"Man Met"}, ["mmm"] = {"Maii"}, ["mmn"] = {"Mamanwa"}, ["mmo"] = {"Mangga Buang"}, ["mmp"] = {"Siawi"}, ["mmq"] = {"Musak"}, ["mmr"] = {"Western Xiangxi Miao"}, ["mmt"] = {"Malalamai"}, ["mmu"] = {"Mmaala"}, ["mmv"] = {"Miriti"}, ["mmw"] = {"Emae"}, ["mmx"] = {"Madak"}, ["mmy"] = {"Migaama"}, ["mmz"] = {"Mabaale"}, ["mna"] = {"Mbula"}, ["mnb"] = {"Muna"}, ["mnc"] = {"Manchu"}, ["mnd"] = {"Mondé"}, ["mne"] = {"Naba"}, ["mnf"] = {"Mundani"}, ["mng"] = {"Eastern Mnong"}, ["mnh"] = {"Mono (Democratic Republic of Congo)"}, ["mni"] = {"Manipuri"}, ["mnj"] = {"Munji"}, ["mnk"] = {"Mandinka"}, ["mnl"] = {"Tiale"}, ["mnm"] = {"Mapena"}, ["mnn"] = {"Southern Mnong"}, ["mno"] = {"Manobo languages"}, ["mnp"] = {"Min Bei Chinese"}, ["mnq"] = {"Minriq"}, ["mnr"] = {"Mono (USA)"}, ["mns"] = {"Mansi"}, ["mnu"] = {"Mer"}, ["mnv"] = {"Rennell-Bellona"}, ["mnw"] = {"Mon"}, ["mnx"] = {"Manikion"}, ["mny"] = {"Manyawa"}, ["mnz"] = {"Moni"}, ["moa"] = {"Mwan"}, ["moc"] = {"Mocoví"}, ["mod"] = {"Mobilian"}, ["moe"] = {"Innu", "Montagnais"}, ["mog"] = {"Mongondow"}, ["moh"] = {"Mohawk"}, ["moi"] = {"Mboi"}, ["moj"] = {"Monzombo"}, ["mok"] = {"Morori"}, ["mom"] = {"Mangue"}, ["moo"] = {"Monom"}, ["mop"] = {"Mopán Maya"}, ["moq"] = {"Mor (Bomberai Peninsula)"}, ["mor"] = {"Moro"}, ["mos"] = {"Mossi"}, ["mot"] = {"Barí"}, ["mou"] = {"Mogum"}, ["mov"] = {"Mohave"}, ["mow"] = {"Moi (Congo)"}, ["mox"] = {"Molima"}, ["moy"] = {"Shekkacho"}, ["moz"] = {"Mukulu", "Gergiko"}, ["mpa"] = {"Mpoto"}, ["mpb"] = {"Malak Malak", "Mullukmulluk"}, ["mpc"] = {"Mangarrayi"}, ["mpd"] = {"Machinere"}, ["mpe"] = {"Majang"}, ["mpg"] = {"Marba"}, ["mph"] = {"Maung"}, ["mpi"] = {"Mpade"}, ["mpj"] = {"Martu Wangka", "Wangkajunga"}, ["mpk"] = {"Mbara (Chad)"}, ["mpl"] = {"Middle Watut"}, ["mpm"] = {"Yosondúa Mixtec"}, ["mpn"] = {"Mindiri"}, ["mpo"] = {"Miu"}, ["mpp"] = {"Migabac"}, ["mpq"] = {"Matís"}, ["mpr"] = {"Vangunu"}, ["mps"] = {"Dadibi"}, ["mpt"] = {"Mian"}, ["mpu"] = {"Makuráp"}, ["mpv"] = {"Mungkip"}, ["mpw"] = {"Mapidian"}, ["mpx"] = {"Misima-Panaeati"}, ["mpy"] = {"Mapia"}, ["mpz"] = {"Mpi"}, ["mqa"] = {"Maba (Indonesia)"}, ["mqb"] = {"Mbuko"}, ["mqc"] = {"Mangole"}, ["mqe"] = {"Matepi"}, ["mqf"] = {"Momuna"}, ["mqg"] = {"Kota Bangun Kutai Malay"}, ["mqh"] = {"Tlazoyaltepec Mixtec"}, ["mqi"] = {"Mariri"}, ["mqj"] = {"Mamasa"}, ["mqk"] = {"Rajah Kabunsuwan Manobo"}, ["mql"] = {"Mbelime"}, ["mqm"] = {"South Marquesan"}, ["mqn"] = {"Moronene"}, ["mqo"] = {"Modole"}, ["mqp"] = {"Manipa"}, ["mqq"] = {"Minokok"}, ["mqr"] = {"Mander"}, ["mqs"] = {"West Makian"}, ["mqt"] = {"Mok"}, ["mqu"] = {"Mandari"}, ["mqv"] = {"Mosimo"}, ["mqw"] = {"Murupi"}, ["mqx"] = {"Mamuju"}, ["mqy"] = {"Manggarai"}, ["mqz"] = {"Pano"}, ["mra"] = {"Mlabri"}, ["mrb"] = {"Marino"}, ["mrc"] = {"Maricopa"}, ["mrd"] = {"Western Magar"}, ["mre"] = {"Martha's Vineyard Sign Language"}, ["mrf"] = {"Elseng"}, ["mrg"] = {"Mising"}, ["mrh"] = {"Mara Chin"}, ["mrj"] = {"Western Mari"}, ["mrk"] = {"Hmwaveke"}, ["mrl"] = {"Mortlockese"}, ["mrm"] = {"Merlav", "Mwerlap"}, ["mrn"] = {"Cheke Holo"}, ["mro"] = {"Mru"}, ["mrp"] = {"Morouas"}, ["mrq"] = {"North Marquesan"}, ["mrr"] = {"Maria (India)"}, ["mrs"] = {"Maragus"}, ["mrt"] = {"Marghi Central"}, ["mru"] = {"Mono (Cameroon)"}, ["mrv"] = {"Mangareva"}, ["mrw"] = {"Maranao"}, ["mrx"] = {"Maremgi", "Dineor"}, ["mry"] = {"Mandaya"}, ["mrz"] = {"Marind"}, ["msb"] = {"Masbatenyo"}, ["msc"] = {"Sankaran Maninka"}, ["msd"] = {"Yucatec Maya Sign Language"}, ["mse"] = {"Musey"}, ["msf"] = {"Mekwei"}, ["msg"] = {"Moraid"}, ["msh"] = {"Masikoro Malagasy"}, ["msi"] = {"Sabah Malay"}, ["msj"] = {"Ma (Democratic Republic of Congo)"}, ["msk"] = {"Mansaka"}, ["msl"] = {"Molof", "Poule"}, ["msm"] = {"Agusan Manobo"}, ["msn"] = {"Vurës"}, ["mso"] = {"Mombum"}, ["msp"] = {"Maritsauá"}, ["msq"] = {"Caac"}, ["msr"] = {"Mongolian Sign Language"}, ["mss"] = {"West Masela"}, ["msu"] = {"Musom"}, ["msv"] = {"Maslam"}, ["msw"] = {"Mansoanka"}, ["msx"] = {"Moresada"}, ["msy"] = {"Aruamu"}, ["msz"] = {"Momare"}, ["mta"] = {"Cotabato Manobo"}, ["mtb"] = {"Anyin Morofo"}, ["mtc"] = {"Munit"}, ["mtd"] = {"Mualang"}, ["mte"] = {"Mono (Solomon Islands)"}, ["mtf"] = {"Murik (Papua New Guinea)"}, ["mtg"] = {"Una"}, ["mth"] = {"Munggui"}, ["mti"] = {"Maiwa (Papua New Guinea)"}, ["mtj"] = {"Moskona"}, ["mtk"] = {"Mbe'"}, ["mtl"] = {"Montol"}, ["mtm"] = {"Mator"}, ["mtn"] = {"Matagalpa"}, ["mto"] = {"Totontepec Mixe"}, ["mtp"] = {"Wichí Lhamtés Nocten"}, ["mtq"] = {"Muong"}, ["mtr"] = {"Mewari"}, ["mts"] = {"Yora"}, ["mtt"] = {"Mota"}, ["mtu"] = {"Tututepec Mixtec"}, ["mtv"] = {"Asaro'o"}, ["mtw"] = {"Southern Binukidnon"}, ["mtx"] = {"Tidaá Mixtec"}, ["mty"] = {"Nabi"}, ["mua"] = {"Mundang"}, ["mub"] = {"Mubi"}, ["muc"] = {"Ajumbu"}, ["mud"] = {"Mednyj Aleut"}, ["mue"] = {"Media Lengua"}, ["mug"] = {"Musgu"}, ["muh"] = {"Mündü"}, ["mui"] = {"Musi"}, ["muj"] = {"Mabire"}, ["muk"] = {"Mugom"}, ["mul"] = {"Multiple languages"}, ["mum"] = {"Maiwala"}, ["mun"] = {"Munda languages"}, ["muo"] = {"Nyong"}, ["mup"] = {"Malvi"}, ["muq"] = {"Eastern Xiangxi Miao"}, ["mur"] = {"Murle"}, ["mus"] = {"Creek"}, ["mut"] = {"Western Muria"}, ["muu"] = {"Yaaku"}, ["muv"] = {"Muthuvan"}, ["mux"] = {"Bo-Ung"}, ["muy"] = {"Muyang"}, ["muz"] = {"Mursi"}, ["mva"] = {"Manam"}, ["mvb"] = {"Mattole"}, ["mvd"] = {"Mamboru"}, ["mve"] = {"Marwari (Pakistan)"}, ["mvf"] = {"Peripheral Mongolian"}, ["mvg"] = {"Yucuañe Mixtec"}, ["mvh"] = {"Mulgi"}, ["mvi"] = {"Miyako"}, ["mvk"] = {"Mekmek"}, ["mvl"] = {"Mbara (Australia)"}, ["mvn"] = {"Minaveha"}, ["mvo"] = {"Marovo"}, ["mvp"] = {"Duri"}, ["mvq"] = {"Moere"}, ["mvr"] = {"Marau"}, ["mvs"] = {"Massep"}, ["mvt"] = {"Mpotovoro"}, ["mvu"] = {"Marfa"}, ["mvv"] = {"Tagal Murut"}, ["mvw"] = {"Machinga"}, ["mvx"] = {"Meoswar"}, ["mvy"] = {"Indus Kohistani"}, ["mvz"] = {"Mesqan"}, ["mwa"] = {"Mwatebu"}, ["mwb"] = {"Juwal"}, ["mwc"] = {"Are"}, ["mwe"] = {"Mwera (Chimwera)"}, ["mwf"] = {"Murrinh-Patha"}, ["mwg"] = {"Aiklep"}, ["mwh"] = {"Mouk-Aria"}, ["mwi"] = {"Labo", "Ninde"}, ["mwk"] = {"Kita Maninkakan"}, ["mwl"] = {"Mirandese"}, ["mwm"] = {"Sar"}, ["mwn"] = {"Nyamwanga"}, ["mwo"] = {"Central Maewo"}, ["mwp"] = {"Kala Lagaw Ya"}, ["mwq"] = {"Mün Chin"}, ["mwr"] = {"Marwari"}, ["mws"] = {"Mwimbi-Muthambi"}, ["mwt"] = {"Moken"}, ["mwu"] = {"Mittu"}, ["mwv"] = {"Mentawai"}, ["mww"] = {"Hmong Daw"}, ["mwz"] = {"Moingi"}, ["mxa"] = {"Northwest Oaxaca Mixtec"}, ["mxb"] = {"Tezoatlán Mixtec"}, ["mxc"] = {"Manyika"}, ["mxd"] = {"Modang"}, ["mxe"] = {"Mele-Fila"}, ["mxf"] = {"Malgbe"}, ["mxg"] = {"Mbangala"}, ["mxh"] = {"Mvuba"}, ["mxi"] = {"Mozarabic"}, ["mxj"] = {"Miju-Mishmi", "Geman Deng"}, ["mxk"] = {"Monumbo"}, ["mxl"] = {"Maxi Gbe"}, ["mxm"] = {"Meramera"}, ["mxn"] = {"Moi (Indonesia)"}, ["mxo"] = {"Mbowe"}, ["mxp"] = {"Tlahuitoltepec Mixe"}, ["mxq"] = {"Juquila Mixe"}, ["mxr"] = {"Murik (Malaysia)"}, ["mxs"] = {"Huitepec Mixtec"}, ["mxt"] = {"Jamiltepec Mixtec"}, ["mxu"] = {"Mada (Cameroon)"}, ["mxv"] = {"Metlatónoc Mixtec"}, ["mxw"] = {"Namo"}, ["mxx"] = {"Mahou", "Mawukakan"}, ["mxy"] = {"Southeastern Nochixtlán Mixtec"}, ["mxz"] = {"Central Masela"}, ["myb"] = {"Mbay"}, ["myc"] = {"Mayeka"}, ["mye"] = {"Myene"}, ["myf"] = {"Bambassi"}, ["myg"] = {"Manta"}, ["myh"] = {"Makah"}, ["myj"] = {"Mangayat"}, ["myk"] = {"Mamara Senoufo"}, ["myl"] = {"Moma"}, ["mym"] = {"Me'en"}, ["myn"] = {"Mayan languages"}, ["myo"] = {"Anfillo"}, ["myp"] = {"Pirahã"}, ["myr"] = {"Muniche"}, ["mys"] = {"Mesmes"}, ["myu"] = {"Mundurukú"}, ["myv"] = {"Erzya"}, ["myw"] = {"Muyuw"}, ["myx"] = {"Masaaba"}, ["myy"] = {"Macuna"}, ["myz"] = {"Classical Mandaic"}, ["mza"] = {"Santa María Zacatepec Mixtec"}, ["mzb"] = {"Tumzabt"}, ["mzc"] = {"Madagascar Sign Language"}, ["mzd"] = {"Malimba"}, ["mze"] = {"Morawa"}, ["mzg"] = {"Monastic Sign Language"}, ["mzh"] = {"Wichí Lhamtés Güisnay"}, ["mzi"] = {"Ixcatlán Mazatec"}, ["mzj"] = {"Manya"}, ["mzk"] = {"Nigeria Mambila"}, ["mzl"] = {"Mazatlán Mixe"}, ["mzm"] = {"Mumuye"}, ["mzn"] = {"Mazanderani"}, ["mzo"] = {"Matipuhy"}, ["mzp"] = {"Movima"}, ["mzq"] = {"Mori Atas"}, ["mzr"] = {"Marúbo"}, ["mzs"] = {"Macanese"}, ["mzt"] = {"Mintil"}, ["mzu"] = {"Inapang"}, ["mzv"] = {"Manza"}, ["mzw"] = {"Deg"}, ["mzx"] = {"Mawayana"}, ["mzy"] = {"Mozambican Sign Language"}, ["mzz"] = {"Maiadomu"}, ["naa"] = {"Namla"}, ["nab"] = {"Southern Nambikuára"}, ["nac"] = {"Narak"}, ["nae"] = {"Naka'ela"}, ["naf"] = {"Nabak"}, ["nag"] = {"Naga Pidgin"}, ["nah"] = {"Nahuatl languages"}, ["nai"] = {"North American Indian languages"}, ["naj"] = {"Nalu"}, ["nak"] = {"Nakanai"}, ["nal"] = {"Nalik"}, ["nam"] = {"Ngan'gityemerri"}, ["nan"] = {"Min Nan Chinese"}, ["nao"] = {"Naaba"}, ["nap"] = {"Neapolitan"}, ["naq"] = {"Khoekhoe", "Nama (Namibia)"}, ["nar"] = {"Iguta"}, ["nas"] = {"Naasioi"}, ["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"}, ["naw"] = {"Nawuri"}, ["nax"] = {"Nakwi"}, ["nay"] = {"Ngarrindjeri"}, ["naz"] = {"Coatepec Nahuatl"}, ["nba"] = {"Nyemba"}, ["nbb"] = {"Ndoe"}, ["nbc"] = {"Chang Naga"}, ["nbd"] = {"Ngbinda"}, ["nbe"] = {"Konyak Naga"}, ["nbg"] = {"Nagarchal"}, ["nbh"] = {"Ngamo"}, ["nbi"] = {"Mao Naga"}, ["nbj"] = {"Ngarinyman"}, ["nbk"] = {"Nake"}, ["nbm"] = {"Ngbaka Ma'bo"}, ["nbn"] = {"Kuri"}, ["nbo"] = {"Nkukoli"}, ["nbp"] = {"Nnam"}, ["nbq"] = {"Nggem"}, ["nbr"] = {"Numana"}, ["nbs"] = {"Namibian Sign Language"}, ["nbt"] = {"Na"}, ["nbu"] = {"Rongmei Naga"}, ["nbv"] = {"Ngamambo"}, ["nbw"] = {"Southern Ngbandi"}, ["nby"] = {"Ningera"}, ["nca"] = {"Iyo"}, ["ncb"] = {"Central Nicobarese"}, ["ncc"] = {"Ponam"}, ["ncd"] = {"Nachering"}, ["nce"] = {"Yale"}, ["ncf"] = {"Notsi"}, ["ncg"] = {"Nisga'a"}, ["nch"] = {"Central Huasteca Nahuatl"}, ["nci"] = {"Classical Nahuatl"}, ["ncj"] = {"Northern Puebla Nahuatl"}, ["nck"] = {"Na-kara"}, ["ncl"] = {"Michoacán Nahuatl"}, ["ncm"] = {"Nambo"}, ["ncn"] = {"Nauna"}, ["nco"] = {"Sibe"}, ["ncq"] = {"Northern Katang"}, ["ncr"] = {"Ncane"}, ["ncs"] = {"Nicaraguan Sign Language"}, ["nct"] = {"Chothe Naga"}, ["ncu"] = {"Chumburung"}, ["ncx"] = {"Central Puebla Nahuatl"}, ["ncz"] = {"Natchez"}, ["nda"] = {"Ndasa"}, ["ndb"] = {"Kenswei Nsei"}, ["ndc"] = {"Ndau"}, ["ndd"] = {"Nde-Nsele-Nta"}, ["ndf"] = {"Nadruvian"}, ["ndg"] = {"Ndengereko"}, ["ndh"] = {"Ndali"}, ["ndi"] = {"Samba Leko"}, ["ndj"] = {"Ndamba"}, ["ndk"] = {"Ndaka"}, ["ndl"] = {"Ndolo"}, ["ndm"] = {"Ndam"}, ["ndn"] = {"Ngundi"}, ["ndp"] = {"Ndo"}, ["ndq"] = {"Ndombe"}, ["ndr"] = {"Ndoola"}, ["nds"] = {"Low German", "Low Saxon"}, ["ndt"] = {"Ndunga"}, ["ndu"] = {"Dugun"}, ["ndv"] = {"Ndut"}, ["ndw"] = {"Ndobo"}, ["ndx"] = {"Nduga"}, ["ndy"] = {"Lutos"}, ["ndz"] = {"Ndogo"}, ["nea"] = {"Eastern Ngad'a"}, ["neb"] = {"Toura (Côte d'Ivoire)"}, ["nec"] = {"Nedebang"}, ["ned"] = {"Nde-Gbite"}, ["nee"] = {"Nêlêmwa-Nixumwak"}, ["nef"] = {"Nefamese"}, ["neg"] = {"Negidal"}, ["neh"] = {"Nyenkha"}, ["nei"] = {"Neo-Hittite"}, ["nej"] = {"Neko"}, ["nek"] = {"Neku"}, ["nem"] = {"Nemi"}, ["nen"] = {"Nengone"}, ["neo"] = {"Ná-Meo"}, ["neq"] = {"North Central Mixe"}, ["ner"] = {"Yahadian"}, ["nes"] = {"Bhoti Kinnauri"}, ["net"] = {"Nete"}, ["neu"] = {"Neo"}, ["nev"] = {"Nyaheun"}, ["new"] = {"Newari", "Nepal Bhasa"}, ["nex"] = {"Neme"}, ["ney"] = {"Neyo"}, ["nez"] = {"Nez Perce"}, ["nfa"] = {"Dhao"}, ["nfd"] = {"Ahwai"}, ["nfl"] = {"Ayiwo", "Äiwoo"}, ["nfr"] = {"Nafaanra"}, ["nfu"] = {"Mfumte"}, ["nga"] = {"Ngbaka"}, ["ngb"] = {"Northern Ngbandi"}, ["ngc"] = {"Ngombe (Democratic Republic of Congo)"}, ["ngd"] = {"Ngando (Central African Republic)"}, ["nge"] = {"Ngemba"}, ["ngf"] = {"Trans-New Guinea languages"}, ["ngg"] = {"Ngbaka Manza"}, ["ngh"] = {"Nǁng"}, ["ngi"] = {"Ngizim"}, ["ngj"] = {"Ngie"}, ["ngk"] = {"Dalabon"}, ["ngl"] = {"Lomwe"}, ["ngm"] = {"Ngatik Men's Creole"}, ["ngn"] = {"Ngwo"}, ["ngp"] = {"Ngulu"}, ["ngq"] = {"Ngurimi", "Ngoreme"}, ["ngr"] = {"Engdewu"}, ["ngs"] = {"Gvoko"}, ["ngt"] = {"Kriang", "Ngeq"}, ["ngu"] = {"Guerrero Nahuatl"}, ["ngv"] = {"Nagumi"}, ["ngw"] = {"Ngwaba"}, ["ngx"] = {"Nggwahyi"}, ["ngy"] = {"Tibea"}, ["ngz"] = {"Ngungwel"}, ["nha"] = {"Nhanda"}, ["nhb"] = {"Beng"}, ["nhc"] = {"Tabasco Nahuatl"}, ["nhd"] = {"Chiripá", "Ava Guaraní"}, ["nhe"] = {"Eastern Huasteca Nahuatl"}, ["nhf"] = {"Nhuwala"}, ["nhg"] = {"Tetelcingo Nahuatl"}, ["nhh"] = {"Nahari"}, ["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"}, ["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"}, ["nhm"] = {"Morelos Nahuatl"}, ["nhn"] = {"Central Nahuatl"}, ["nho"] = {"Takuu"}, ["nhp"] = {"Isthmus-Pajapan Nahuatl"}, ["nhq"] = {"Huaxcaleca Nahuatl"}, ["nhr"] = {"Naro"}, ["nht"] = {"Ometepec Nahuatl"}, ["nhu"] = {"Noone"}, ["nhv"] = {"Temascaltepec Nahuatl"}, ["nhw"] = {"Western Huasteca Nahuatl"}, ["nhx"] = {"Isthmus-Mecayapan Nahuatl"}, ["nhy"] = {"Northern Oaxaca Nahuatl"}, ["nhz"] = {"Santa María La Alta Nahuatl"}, ["nia"] = {"Nias"}, ["nib"] = {"Nakame"}, ["nic"] = {"Niger-Kordofanian languages"}, ["nid"] = {"Ngandi"}, ["nie"] = {"Niellim"}, ["nif"] = {"Nek"}, ["nig"] = {"Ngalakgan"}, ["nih"] = {"Nyiha (Tanzania)"}, ["nii"] = {"Nii"}, ["nij"] = {"Ngaju"}, ["nik"] = {"Southern Nicobarese"}, ["nil"] = {"Nila"}, ["nim"] = {"Nilamba"}, ["nin"] = {"Ninzo"}, ["nio"] = {"Nganasan"}, ["niq"] = {"Nandi"}, ["nir"] = {"Nimboran"}, ["nis"] = {"Nimi"}, ["nit"] = {"Southeastern Kolami"}, ["niu"] = {"Niuean"}, ["niv"] = {"Gilyak"}, ["niw"] = {"Nimo"}, ["nix"] = {"Hema"}, ["niy"] = {"Ngiti"}, ["niz"] = {"Ningil"}, ["nja"] = {"Nzanyi"}, ["njb"] = {"Nocte Naga"}, ["njd"] = {"Ndonde Hamba"}, ["njh"] = {"Lotha Naga"}, ["nji"] = {"Gudanji"}, ["njj"] = {"Njen"}, ["njl"] = {"Njalgulgule"}, ["njm"] = {"Angami Naga"}, ["njn"] = {"Liangmai Naga"}, ["njo"] = {"Ao Naga"}, ["njr"] = {"Njerep"}, ["njs"] = {"Nisa"}, ["njt"] = {"Ndyuka-Trio Pidgin"}, ["nju"] = {"Ngadjunmaya"}, ["njx"] = {"Kunyi"}, ["njy"] = {"Njyem"}, ["njz"] = {"Nyishi"}, ["nka"] = {"Nkoya"}, ["nkb"] = {"Khoibu Naga"}, ["nkc"] = {"Nkongho"}, ["nkd"] = {"Koireng"}, ["nke"] = {"Duke"}, ["nkf"] = {"Inpui Naga"}, ["nkg"] = {"Nekgini"}, ["nkh"] = {"Khezha Naga"}, ["nki"] = {"Thangal Naga"}, ["nkj"] = {"Nakai"}, ["nkk"] = {"Nokuku"}, ["nkm"] = {"Namat"}, ["nkn"] = {"Nkangala"}, ["nko"] = {"Nkonya"}, ["nkp"] = {"Niuatoputapu"}, ["nkq"] = {"Nkami"}, ["nkr"] = {"Nukuoro"}, ["nks"] = {"North Asmat"}, ["nkt"] = {"Nyika (Tanzania)"}, ["nku"] = {"Bouna Kulango"}, ["nkv"] = {"Nyika (Malawi and Zambia)"}, ["nkw"] = {"Nkutu"}, ["nkx"] = {"Nkoroo"}, ["nkz"] = {"Nkari"}, ["nla"] = {"Ngombale"}, ["nlc"] = {"Nalca"}, ["nle"] = {"East Nyala"}, ["nlg"] = {"Gela"}, ["nli"] = {"Grangali"}, ["nlj"] = {"Nyali"}, ["nlk"] = {"Ninia Yali"}, ["nll"] = {"Nihali"}, ["nlm"] = {"Mankiyali"}, ["nlo"] = {"Ngul"}, ["nlq"] = {"Lao Naga"}, ["nlu"] = {"Nchumbulu"}, ["nlv"] = {"Orizaba Nahuatl"}, ["nlw"] = {"Walangama"}, ["nlx"] = {"Nahali"}, ["nly"] = {"Nyamal"}, ["nlz"] = {"Nalögo"}, ["nma"] = {"Maram Naga"}, ["nmb"] = {"Big Nambas", "V'ënen Taut"}, ["nmc"] = {"Ngam"}, ["nmd"] = {"Ndumu"}, ["nme"] = {"Mzieme Naga"}, ["nmf"] = {"Tangkhul Naga (India)"}, ["nmg"] = {"Kwasio"}, ["nmh"] = {"Monsang Naga"}, ["nmi"] = {"Nyam"}, ["nmj"] = {"Ngombe (Central African Republic)"}, ["nmk"] = {"Namakura"}, ["nml"] = {"Ndemli"}, ["nmm"] = {"Manangba"}, ["nmn"] = {"ǃXóõ"}, ["nmo"] = {"Moyon Naga"}, ["nmp"] = {"Nimanbur"}, ["nmq"] = {"Nambya"}, ["nmr"] = {"Nimbari"}, ["nms"] = {"Letemboi"}, ["nmt"] = {"Namonuito"}, ["nmu"] = {"Northeast Maidu"}, ["nmv"] = {"Ngamini"}, ["nmw"] = {"Nimoa", "Rifao"}, ["nmx"] = {"Nama (Papua New Guinea)"}, ["nmy"] = {"Namuyi"}, ["nmz"] = {"Nawdm"}, ["nna"] = {"Nyangumarta"}, ["nnb"] = {"Nande"}, ["nnc"] = {"Nancere"}, ["nnd"] = {"West Ambae"}, ["nne"] = {"Ngandyera"}, ["nnf"] = {"Ngaing"}, ["nng"] = {"Maring Naga"}, ["nnh"] = {"Ngiemboon"}, ["nni"] = {"North Nuaulu"}, ["nnj"] = {"Nyangatom"}, ["nnk"] = {"Nankina"}, ["nnl"] = {"Northern Rengma Naga"}, ["nnm"] = {"Namia"}, ["nnn"] = {"Ngete"}, ["nnp"] = {"Wancho Naga"}, ["nnq"] = {"Ngindo"}, ["nnr"] = {"Narungga"}, ["nnt"] = {"Nanticoke"}, ["nnu"] = {"Dwang"}, ["nnv"] = {"Nugunu (Australia)"}, ["nnw"] = {"Southern Nuni"}, ["nny"] = {"Nyangga"}, ["nnz"] = {"Nda'nda'"}, ["noa"] = {"Woun Meu"}, ["noc"] = {"Nuk"}, ["nod"] = {"Northern Thai"}, ["noe"] = {"Nimadi"}, ["nof"] = {"Nomane"}, ["nog"] = {"Nogai"}, ["noh"] = {"Nomu"}, ["noi"] = {"Noiri"}, ["noj"] = {"Nonuya"}, ["nok"] = {"Nooksack"}, ["nol"] = {"Nomlaki"}, ["non"] = {"Old Norse"}, ["nop"] = {"Numanggang"}, ["noq"] = {"Ngongo"}, ["nos"] = {"Eastern Nisu"}, ["not"] = {"Nomatsiguenga"}, ["nou"] = {"Ewage-Notu"}, ["nov"] = {"Novial"}, ["now"] = {"Nyambo"}, ["noy"] = {"Noy"}, ["noz"] = {"Nayi"}, ["npa"] = {"Nar Phu"}, ["npb"] = {"Nupbikha"}, ["npg"] = {"Ponyo-Gongwang Naga"}, ["nph"] = {"Phom Naga"}, ["npi"] = {"Nepali (individual language)"}, ["npl"] = {"Southeastern Puebla Nahuatl"}, ["npn"] = {"Mondropolon"}, ["npo"] = {"Pochuri Naga"}, ["nps"] = {"Nipsan"}, ["npu"] = {"Puimei Naga"}, ["npx"] = {"Noipx"}, ["npy"] = {"Napu"}, ["nqg"] = {"Southern Nago"}, ["nqk"] = {"Kura Ede Nago"}, ["nql"] = {"Ngendelengo"}, ["nqm"] = {"Ndom"}, ["nqn"] = {"Nen"}, ["nqo"] = {"N'Ko", "N’Ko"}, ["nqq"] = {"Kyan-Karyaw Naga"}, ["nqt"] = {"Nteng"}, ["nqy"] = {"Akyaung Ari Naga"}, ["nra"] = {"Ngom"}, ["nrb"] = {"Nara"}, ["nrc"] = {"Noric"}, ["nre"] = {"Southern Rengma Naga"}, ["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"}, ["nrg"] = {"Narango"}, ["nri"] = {"Chokri Naga"}, ["nrk"] = {"Ngarla"}, ["nrl"] = {"Ngarluma"}, ["nrm"] = {"Narom"}, ["nrn"] = {"Norn"}, ["nrp"] = {"North Picene"}, ["nrr"] = {"Norra", "Nora"}, ["nrt"] = {"Northern Kalapuya"}, ["nru"] = {"Narua"}, ["nrx"] = {"Ngurmbur"}, ["nrz"] = {"Lala"}, ["nsa"] = {"Sangtam Naga"}, ["nsb"] = {"Lower Nossob"}, ["nsc"] = {"Nshi"}, ["nsd"] = {"Southern Nisu"}, ["nse"] = {"Nsenga"}, ["nsf"] = {"Northwestern Nisu"}, ["nsg"] = {"Ngasa"}, ["nsh"] = {"Ngoshie"}, ["nsi"] = {"Nigerian Sign Language"}, ["nsk"] = {"Naskapi"}, ["nsl"] = {"Norwegian Sign Language"}, ["nsm"] = {"Sumi Naga"}, ["nsn"] = {"Nehan"}, ["nso"] = {"Pedi", "Northern Sotho", "Sepedi"}, ["nsp"] = {"Nepalese Sign Language"}, ["nsq"] = {"Northern Sierra Miwok"}, ["nsr"] = {"Maritime Sign Language"}, ["nss"] = {"Nali"}, ["nst"] = {"Tase Naga"}, ["nsu"] = {"Sierra Negra Nahuatl"}, ["nsv"] = {"Southwestern Nisu"}, ["nsw"] = {"Navut"}, ["nsx"] = {"Nsongo"}, ["nsy"] = {"Nasal"}, ["nsz"] = {"Nisenan"}, ["ntd"] = {"Northern Tidung"}, ["nte"] = {"Nathembo"}, ["ntg"] = {"Ngantangarra"}, ["nti"] = {"Natioro"}, ["ntj"] = {"Ngaanyatjarra"}, ["ntk"] = {"Ikoma-Nata-Isenye"}, ["ntm"] = {"Nateni"}, ["nto"] = {"Ntomba"}, ["ntp"] = {"Northern Tepehuan"}, ["ntr"] = {"Delo"}, ["ntu"] = {"Natügu"}, ["ntw"] = {"Nottoway"}, ["ntx"] = {"Tangkhul Naga (Myanmar)"}, ["nty"] = {"Mantsi"}, ["ntz"] = {"Natanzi"}, ["nua"] = {"Yuanga"}, ["nub"] = {"Nubian languages"}, ["nuc"] = {"Nukuini"}, ["nud"] = {"Ngala"}, ["nue"] = {"Ngundu"}, ["nuf"] = {"Nusu"}, ["nug"] = {"Nungali"}, ["nuh"] = {"Ndunda"}, ["nui"] = {"Ngumbi"}, ["nuj"] = {"Nyole"}, ["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"}, ["nul"] = {"Nusa Laut"}, ["num"] = {"Niuafo'ou"}, ["nun"] = {"Anong"}, ["nuo"] = {"Nguôn"}, ["nup"] = {"Nupe-Nupe-Tako"}, ["nuq"] = {"Nukumanu"}, ["nur"] = {"Nukuria"}, ["nus"] = {"Nuer"}, ["nut"] = {"Nung (Viet Nam)"}, ["nuu"] = {"Ngbundu"}, ["nuv"] = {"Northern Nuni"}, ["nuw"] = {"Nguluwan"}, ["nux"] = {"Mehek"}, ["nuy"] = {"Nunggubuyu"}, ["nuz"] = {"Tlamacazapa Nahuatl"}, ["nvh"] = {"Nasarian"}, ["nvm"] = {"Namiae"}, ["nvo"] = {"Nyokon"}, ["nwa"] = {"Nawathinehena"}, ["nwb"] = {"Nyabwa"}, ["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"}, ["nwe"] = {"Ngwe"}, ["nwg"] = {"Ngayawung"}, ["nwi"] = {"Southwest Tanna"}, ["nwm"] = {"Nyamusa-Molo"}, ["nwo"] = {"Nauo"}, ["nwr"] = {"Nawaru"}, ["nww"] = {"Ndwewe"}, ["nwx"] = {"Middle Newar"}, ["nwy"] = {"Nottoway-Meherrin"}, ["nxa"] = {"Nauete"}, ["nxd"] = {"Ngando (Democratic Republic of Congo)"}, ["nxe"] = {"Nage"}, ["nxg"] = {"Ngad'a"}, ["nxi"] = {"Nindi"}, ["nxk"] = {"Koki Naga"}, ["nxl"] = {"South Nuaulu"}, ["nxm"] = {"Numidian"}, ["nxn"] = {"Ngawun"}, ["nxo"] = {"Ndambomo"}, ["nxq"] = {"Naxi"}, ["nxr"] = {"Ninggerum"}, ["nxx"] = {"Nafri"}, ["nyb"] = {"Nyangbo"}, ["nyc"] = {"Nyanga-li"}, ["nyd"] = {"Nyore", "Olunyole"}, ["nye"] = {"Nyengo"}, ["nyf"] = {"Giryama", "Kigiryama"}, ["nyg"] = {"Nyindu"}, ["nyh"] = {"Nyikina"}, ["nyi"] = {"Ama (Sudan)"}, ["nyj"] = {"Nyanga"}, ["nyk"] = {"Nyaneka"}, ["nyl"] = {"Nyeu"}, ["nym"] = {"Nyamwezi"}, ["nyn"] = {"Nyankole"}, ["nyo"] = {"Nyoro"}, ["nyp"] = {"Nyang'i"}, ["nyq"] = {"Nayini"}, ["nyr"] = {"Nyiha (Malawi)"}, ["nys"] = {"Nyungar"}, ["nyt"] = {"Nyawaygi"}, ["nyu"] = {"Nyungwe"}, ["nyv"] = {"Nyulnyul"}, ["nyw"] = {"Nyaw"}, ["nyx"] = {"Nganyaywana"}, ["nyy"] = {"Nyakyusa-Ngonde"}, ["nza"] = {"Tigon Mbembe"}, ["nzb"] = {"Njebi"}, ["nzd"] = {"Nzadi"}, ["nzi"] = {"Nzima"}, ["nzk"] = {"Nzakara"}, ["nzm"] = {"Zeme Naga"}, ["nzr"] = {"Dir-Nyamzak-Mbarimi"}, ["nzs"] = {"New Zealand Sign Language"}, ["nzu"] = {"Teke-Nzikou"}, ["nzy"] = {"Nzakambay"}, ["nzz"] = {"Nanga Dama Dogon"}, ["oaa"] = {"Orok"}, ["oac"] = {"Oroch"}, ["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"}, ["oav"] = {"Old Avar"}, ["obi"] = {"Obispeño"}, ["obk"] = {"Southern Bontok"}, ["obl"] = {"Oblo"}, ["obm"] = {"Moabite"}, ["obo"] = {"Obo Manobo"}, ["obr"] = {"Old Burmese"}, ["obt"] = {"Old Breton"}, ["obu"] = {"Obulom"}, ["oca"] = {"Ocaina"}, ["och"] = {"Old Chinese"}, ["ocm"] = {"Old Cham"}, ["oco"] = {"Old Cornish"}, ["ocu"] = {"Atzingo Matlatzinca"}, ["oda"] = {"Odut"}, ["odk"] = {"Od"}, ["odt"] = {"Old Dutch"}, ["odu"] = {"Odual"}, ["ofo"] = {"Ofo"}, ["ofs"] = {"Old Frisian"}, ["ofu"] = {"Efutop"}, ["ogb"] = {"Ogbia"}, ["ogc"] = {"Ogbah"}, ["oge"] = {"Old Georgian"}, ["ogg"] = {"Ogbogolo"}, ["ogo"] = {"Khana"}, ["ogu"] = {"Ogbronuagum"}, ["oht"] = {"Old Hittite"}, ["ohu"] = {"Old Hungarian"}, ["oia"] = {"Oirata"}, ["oie"] = {"Okolie"}, ["oin"] = {"Inebu One"}, ["ojb"] = {"Northwestern Ojibwa"}, ["ojc"] = {"Central Ojibwa"}, ["ojg"] = {"Eastern Ojibwa"}, ["ojp"] = {"Old Japanese"}, ["ojs"] = {"Severn Ojibwa"}, ["ojv"] = {"Ontong Java"}, ["ojw"] = {"Western Ojibwa"}, ["oka"] = {"Okanagan"}, ["okb"] = {"Okobo"}, ["okc"] = {"Kobo"}, ["okd"] = {"Okodia"}, ["oke"] = {"Okpe (Southwestern Edo)"}, ["okg"] = {"Koko Babangk"}, ["okh"] = {"Koresh-e Rostam"}, ["oki"] = {"Okiek"}, ["okj"] = {"Oko-Juwoi"}, ["okk"] = {"Kwamtim One"}, ["okl"] = {"Old Kentish Sign Language"}, ["okm"] = {"Middle Korean (10th-16th cent.)"}, ["okn"] = {"Oki-No-Erabu"}, ["oko"] = {"Old Korean (3rd-9th cent.)"}, ["okr"] = {"Kirike"}, ["oks"] = {"Oko-Eni-Osayen"}, ["oku"] = {"Oku"}, ["okv"] = {"Orokaiva"}, ["okx"] = {"Okpe (Northwestern Edo)"}, ["okz"] = {"Old Khmer"}, ["ola"] = {"Walungge"}, ["old"] = {"Mochi"}, ["ole"] = {"Olekha"}, ["olk"] = {"Olkol"}, ["olm"] = {"Oloma"}, ["olo"] = {"Livvi"}, ["olr"] = {"Olrat"}, ["olt"] = {"Old Lithuanian"}, ["olu"] = {"Kuvale"}, ["oma"] = {"Omaha-Ponca"}, ["omb"] = {"East Ambae"}, ["omc"] = {"Mochica"}, ["omg"] = {"Omagua"}, ["omi"] = {"Omi"}, ["omk"] = {"Omok"}, ["oml"] = {"Ombo"}, ["omn"] = {"Minoan"}, ["omo"] = {"Utarmbung"}, ["omp"] = {"Old Manipuri"}, ["omq"] = {"Oto-Manguean languages"}, ["omr"] = {"Old Marathi"}, ["omt"] = {"Omotik"}, ["omu"] = {"Omurano"}, ["omv"] = {"Omotic languages"}, ["omw"] = {"South Tairora"}, ["omx"] = {"Old Mon"}, ["omy"] = {"Old Malay"}, ["ona"] = {"Ona"}, ["onb"] = {"Lingao"}, ["one"] = {"Oneida"}, ["ong"] = {"Olo"}, ["oni"] = {"Onin"}, ["onj"] = {"Onjob"}, ["onk"] = {"Kabore One"}, ["onn"] = {"Onobasulu"}, ["ono"] = {"Onondaga"}, ["onp"] = {"Sartang"}, ["onr"] = {"Northern One"}, ["ons"] = {"Ono"}, ["ont"] = {"Ontenu"}, ["onu"] = {"Unua"}, ["onw"] = {"Old Nubian"}, ["onx"] = {"Onin Based Pidgin"}, ["ood"] = {"Tohono O'odham"}, ["oog"] = {"Ong"}, ["oon"] = {"Önge"}, ["oor"] = {"Oorlams"}, ["oos"] = {"Old Ossetic"}, ["opa"] = {"Okpamheri"}, ["opk"] = {"Kopkaka"}, ["opm"] = {"Oksapmin"}, ["opo"] = {"Opao"}, ["opt"] = {"Opata"}, ["opy"] = {"Ofayé"}, ["ora"] = {"Oroha"}, ["orc"] = {"Orma"}, ["ore"] = {"Orejón"}, ["org"] = {"Oring"}, ["orh"] = {"Oroqen"}, ["orn"] = {"Orang Kanaq"}, ["oro"] = {"Orokolo"}, ["orr"] = {"Oruma"}, ["ors"] = {"Orang Seletar"}, ["ort"] = {"Adivasi Oriya"}, ["oru"] = {"Ormuri"}, ["orv"] = {"Old Russian"}, ["orw"] = {"Oro Win"}, ["orx"] = {"Oro"}, ["ory"] = {"Odia (individual language)", "Oriya (individual language)"}, ["orz"] = {"Ormu"}, ["osa"] = {"Osage"}, ["osc"] = {"Oscan"}, ["osi"] = {"Osing"}, ["osn"] = {"Old Sundanese"}, ["oso"] = {"Ososo"}, ["osp"] = {"Old Spanish"}, ["ost"] = {"Osatu"}, ["osu"] = {"Southern One"}, ["osx"] = {"Old Saxon"}, ["ota"] = {"Ottoman Turkish (1500-1928)"}, ["otb"] = {"Old Tibetan"}, ["otd"] = {"Ot Danum"}, ["ote"] = {"Mezquital Otomi"}, ["oti"] = {"Oti"}, ["otk"] = {"Old Turkish"}, ["otl"] = {"Tilapa Otomi"}, ["otm"] = {"Eastern Highland Otomi"}, ["otn"] = {"Tenango Otomi"}, ["oto"] = {"Otomian languages"}, ["otq"] = {"Querétaro Otomi"}, ["otr"] = {"Otoro"}, ["ots"] = {"Estado de México Otomi"}, ["ott"] = {"Temoaya Otomi"}, ["otu"] = {"Otuke"}, ["otw"] = {"Ottawa"}, ["otx"] = {"Texcatepec Otomi"}, ["oty"] = {"Old Tamil"}, ["otz"] = {"Ixtenco Otomi"}, ["oua"] = {"Tagargrent"}, ["oub"] = {"Glio-Oubi"}, ["oue"] = {"Oune"}, ["oui"] = {"Old Uighur"}, ["oum"] = {"Ouma"}, ["ovd"] = {"Elfdalian", "Övdalian"}, ["owi"] = {"Owiniga"}, ["owl"] = {"Old Welsh"}, ["oyb"] = {"Oy"}, ["oyd"] = {"Oyda"}, ["oym"] = {"Wayampi"}, ["oyy"] = {"Oya'oya"}, ["ozm"] = {"Koonzime"}, ["paa"] = {"Papuan languages"}, ["pab"] = {"Parecís"}, ["pac"] = {"Pacoh"}, ["pad"] = {"Paumarí"}, ["pae"] = {"Pagibete"}, ["paf"] = {"Paranawát"}, ["pag"] = {"Pangasinan"}, ["pah"] = {"Tenharim"}, ["pai"] = {"Pe"}, ["pak"] = {"Parakanã"}, ["pal"] = {"Pahlavi"}, ["pam"] = {"Pampanga", "Kapampangan"}, ["pao"] = {"Northern Paiute"}, ["pap"] = {"Papiamento"}, ["paq"] = {"Parya"}, ["par"] = {"Panamint", "Timbisha"}, ["pas"] = {"Papasena"}, ["pau"] = {"Palauan"}, ["pav"] = {"Pakaásnovos"}, ["paw"] = {"Pawnee"}, ["pax"] = {"Pankararé"}, ["pay"] = {"Pech"}, ["paz"] = {"Pankararú"}, ["pbb"] = {"Páez"}, ["pbc"] = {"Patamona"}, ["pbe"] = {"Mezontla Popoloca"}, ["pbf"] = {"Coyotepec Popoloca"}, ["pbg"] = {"Paraujano"}, ["pbh"] = {"E'ñapa Woromaipu"}, ["pbi"] = {"Parkwa"}, ["pbl"] = {"Mak (Nigeria)"}, ["pbm"] = {"Puebla Mazatec"}, ["pbn"] = {"Kpasam"}, ["pbo"] = {"Papel"}, ["pbp"] = {"Badyara"}, ["pbr"] = {"Pangwa"}, ["pbs"] = {"Central Pame"}, ["pbt"] = {"Southern Pashto"}, ["pbu"] = {"Northern Pashto"}, ["pbv"] = {"Pnar"}, ["pby"] = {"Pyu (Papua New Guinea)"}, ["pca"] = {"Santa Inés Ahuatempan Popoloca"}, ["pcb"] = {"Pear"}, ["pcc"] = {"Bouyei"}, ["pcd"] = {"Picard"}, ["pce"] = {"Ruching Palaung"}, ["pcf"] = {"Paliyan"}, ["pcg"] = {"Paniya"}, ["pch"] = {"Pardhan"}, ["pci"] = {"Duruwa"}, ["pcj"] = {"Parenga"}, ["pck"] = {"Paite Chin"}, ["pcl"] = {"Pardhi"}, ["pcm"] = {"Nigerian Pidgin"}, ["pcn"] = {"Piti"}, ["pcp"] = {"Pacahuara"}, ["pcw"] = {"Pyapun"}, ["pda"] = {"Anam"}, ["pdc"] = {"Pennsylvania German"}, ["pdi"] = {"Pa Di"}, ["pdn"] = {"Podena", "Fedan"}, ["pdo"] = {"Padoe"}, ["pdt"] = {"Plautdietsch"}, ["pdu"] = {"Kayan"}, ["pea"] = {"Peranakan Indonesian"}, ["peb"] = {"Eastern Pomo"}, ["ped"] = {"Mala (Papua New Guinea)"}, ["pee"] = {"Taje"}, ["pef"] = {"Northeastern Pomo"}, ["peg"] = {"Pengo"}, ["peh"] = {"Bonan"}, ["pei"] = {"Chichimeca-Jonaz"}, ["pej"] = {"Northern Pomo"}, ["pek"] = {"Penchal"}, ["pel"] = {"Pekal"}, ["pem"] = {"Phende"}, ["peo"] = {"Old Persian (ca. 600-400 B.C.)"}, ["pep"] = {"Kunja"}, ["peq"] = {"Southern Pomo"}, ["pes"] = {"Iranian Persian"}, ["pev"] = {"Pémono"}, ["pex"] = {"Petats"}, ["pey"] = {"Petjo"}, ["pez"] = {"Eastern Penan"}, ["pfa"] = {"Pááfang"}, ["pfe"] = {"Pere"}, ["pfl"] = {"Pfaelzisch"}, ["pga"] = {"Sudanese Creole Arabic"}, ["pgd"] = {"Gāndhārī"}, ["pgg"] = {"Pangwali"}, ["pgi"] = {"Pagi"}, ["pgk"] = {"Rerep"}, ["pgl"] = {"Primitive Irish"}, ["pgn"] = {"Paelignian"}, ["pgs"] = {"Pangseng"}, ["pgu"] = {"Pagu"}, ["pgz"] = {"Papua New Guinean Sign Language"}, ["pha"] = {"Pa-Hng"}, ["phd"] = {"Phudagi"}, ["phg"] = {"Phuong"}, ["phh"] = {"Phukha"}, ["phi"] = {"Philippine languages"}, ["phj"] = {"Pahari"}, ["phk"] = {"Phake"}, ["phl"] = {"Phalura", "Palula"}, ["phm"] = {"Phimbi"}, ["phn"] = {"Phoenician"}, ["pho"] = {"Phunoi"}, ["phq"] = {"Phana'"}, ["phr"] = {"Pahari-Potwari"}, ["pht"] = {"Phu Thai"}, ["phu"] = {"Phuan"}, ["phv"] = {"Pahlavani"}, ["phw"] = {"Phangduwali"}, ["pia"] = {"Pima Bajo"}, ["pib"] = {"Yine"}, ["pic"] = {"Pinji"}, ["pid"] = {"Piaroa"}, ["pie"] = {"Piro"}, ["pif"] = {"Pingelapese"}, ["pig"] = {"Pisabo"}, ["pih"] = {"Pitcairn-Norfolk"}, ["pij"] = {"Pijao"}, ["pil"] = {"Yom"}, ["pim"] = {"Powhatan"}, ["pin"] = {"Piame"}, ["pio"] = {"Piapoco"}, ["pip"] = {"Pero"}, ["pir"] = {"Piratapuyo"}, ["pis"] = {"Pijin"}, ["pit"] = {"Pitta Pitta"}, ["piu"] = {"Pintupi-Luritja"}, ["piv"] = {"Pileni", "Vaeakau-Taumako"}, ["piw"] = {"Pimbwe"}, ["pix"] = {"Piu"}, ["piy"] = {"Piya-Kwonci"}, ["piz"] = {"Pije"}, ["pjt"] = {"Pitjantjatjara"}, ["pka"] = {"Ardhamāgadhī Prākrit"}, ["pkb"] = {"Pokomo", "Kipfokomo"}, ["pkc"] = {"Paekche"}, ["pkg"] = {"Pak-Tong"}, ["pkh"] = {"Pankhu"}, ["pkn"] = {"Pakanha"}, ["pko"] = {"Pökoot"}, ["pkp"] = {"Pukapuka"}, ["pkr"] = {"Attapady Kurumba"}, ["pks"] = {"Pakistan Sign Language"}, ["pkt"] = {"Maleng"}, ["pku"] = {"Paku"}, ["pla"] = {"Miani"}, ["plb"] = {"Polonombauk"}, ["plc"] = {"Central Palawano"}, ["pld"] = {"Polari"}, ["ple"] = {"Palu'e"}, ["plf"] = {"Central Malayo-Polynesian languages"}, ["plg"] = {"Pilagá"}, ["plh"] = {"Paulohi"}, ["plk"] = {"Kohistani Shina"}, ["pll"] = {"Shwe Palaung"}, ["pln"] = {"Palenquero"}, ["plo"] = {"Oluta Popoluca"}, ["plq"] = {"Palaic"}, ["plr"] = {"Palaka Senoufo"}, ["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"}, ["plt"] = {"Plateau Malagasy"}, ["plu"] = {"Palikúr"}, ["plv"] = {"Southwest Palawano"}, ["plw"] = {"Brooke's Point Palawano"}, ["ply"] = {"Bolyu"}, ["plz"] = {"Paluan"}, ["pma"] = {"Paama"}, ["pmb"] = {"Pambia"}, ["pmd"] = {"Pallanganmiddang"}, ["pme"] = {"Pwaamei"}, ["pmf"] = {"Pamona"}, ["pmh"] = {"Māhārāṣṭri Prākrit"}, ["pmi"] = {"Northern Pumi"}, ["pmj"] = {"Southern Pumi"}, ["pml"] = {"Lingua Franca"}, ["pmm"] = {"Pomo"}, ["pmn"] = {"Pam"}, ["pmo"] = {"Pom"}, ["pmq"] = {"Northern Pame"}, ["pmr"] = {"Paynamar"}, ["pms"] = {"Piemontese"}, ["pmt"] = {"Tuamotuan"}, ["pmw"] = {"Plains Miwok"}, ["pmx"] = {"Poumei Naga"}, ["pmy"] = {"Papuan Malay"}, ["pmz"] = {"Southern Pame"}, ["pna"] = {"Punan Bah-Biau"}, ["pnb"] = {"Western Panjabi"}, ["pnc"] = {"Pannei"}, ["pnd"] = {"Mpinda"}, ["pne"] = {"Western Penan"}, ["png"] = {"Pangu", "Pongu"}, ["pnh"] = {"Penrhyn"}, ["pni"] = {"Aoheng"}, ["pnj"] = {"Pinjarup"}, ["pnk"] = {"Paunaka"}, ["pnl"] = {"Paleni"}, ["pnm"] = {"Punan Batu 1"}, ["pnn"] = {"Pinai-Hagahai"}, ["pno"] = {"Panobo"}, ["pnp"] = {"Pancana"}, ["pnq"] = {"Pana (Burkina Faso)"}, ["pnr"] = {"Panim"}, ["pns"] = {"Ponosakan"}, ["pnt"] = {"Pontic"}, ["pnu"] = {"Jiongnai Bunu"}, ["pnv"] = {"Pinigura"}, ["pnw"] = {"Banyjima", "Panytyima"}, ["pnx"] = {"Phong-Kniang"}, ["pny"] = {"Pinyin"}, ["pnz"] = {"Pana (Central African Republic)"}, ["poc"] = {"Poqomam"}, ["poe"] = {"San Juan Atzingo Popoloca"}, ["pof"] = {"Poke"}, ["pog"] = {"Potiguára"}, ["poh"] = {"Poqomchi'"}, ["poi"] = {"Highland Popoluca"}, ["pok"] = {"Pokangá"}, ["pom"] = {"Southeastern Pomo"}, ["pon"] = {"Pohnpeian"}, ["poo"] = {"Central Pomo"}, ["pop"] = {"Pwapwâ"}, ["poq"] = {"Texistepec Popoluca"}, ["pos"] = {"Sayula Popoluca"}, ["pot"] = {"Potawatomi"}, ["pov"] = {"Upper Guinea Crioulo"}, ["pow"] = {"San Felipe Otlaltepec Popoloca"}, ["pox"] = {"Polabian"}, ["poy"] = {"Pogolo"}, ["poz"] = {"Malayo-Polynesian languages"}, ["ppe"] = {"Papi"}, ["ppi"] = {"Paipai"}, ["ppk"] = {"Uma"}, ["ppl"] = {"Pipil", "Nicarao"}, ["ppm"] = {"Papuma"}, ["ppn"] = {"Papapana"}, ["ppo"] = {"Folopa"}, ["ppp"] = {"Pelende"}, ["ppq"] = {"Pei"}, ["pps"] = {"San Luís Temalacayuca Popoloca"}, ["ppt"] = {"Pare"}, ["ppu"] = {"Papora"}, ["pqa"] = {"Pa'a"}, ["pqe"] = {"Eastern Malayo-Polynesian languages"}, ["pqm"] = {"Malecite-Passamaquoddy"}, ["pqw"] = {"Western Malayo-Polynesian languages"}, ["pra"] = {"Prakrit languages"}, ["prc"] = {"Parachi"}, ["prd"] = {"Parsi-Dari"}, ["pre"] = {"Principense"}, ["prf"] = {"Paranan"}, ["prg"] = {"Prussian"}, ["prh"] = {"Porohanon"}, ["pri"] = {"Paicî"}, ["prk"] = {"Parauk"}, ["prl"] = {"Peruvian Sign Language"}, ["prm"] = {"Kibiri"}, ["prn"] = {"Prasuni"}, ["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"}, ["prq"] = {"Ashéninka Perené"}, ["prr"] = {"Puri"}, ["prs"] = {"Dari", "Afghan Persian"}, ["prt"] = {"Phai"}, ["pru"] = {"Puragi"}, ["prw"] = {"Parawen"}, ["prx"] = {"Purik"}, ["prz"] = {"Providencia Sign Language"}, ["psa"] = {"Asue Awyu"}, ["psc"] = {"Iranian Sign Language", "Persian Sign Language"}, ["psd"] = {"Plains Indian Sign Language"}, ["pse"] = {"Central Malay"}, ["psg"] = {"Penang Sign Language"}, ["psh"] = {"Southwest Pashai", "Southwest Pashayi"}, ["psi"] = {"Southeast Pashai", "Southeast Pashayi"}, ["psl"] = {"Puerto Rican Sign Language"}, ["psm"] = {"Pauserna"}, ["psn"] = {"Panasuan"}, ["pso"] = {"Polish Sign Language"}, ["psp"] = {"Philippine Sign Language"}, ["psq"] = {"Pasi"}, ["psr"] = {"Portuguese Sign Language"}, ["pss"] = {"Kaulong"}, ["pst"] = {"Central Pashto"}, ["psu"] = {"Sauraseni Prākrit"}, ["psw"] = {"Port Sandwich"}, ["psy"] = {"Piscataway"}, ["pta"] = {"Pai Tavytera"}, ["pth"] = {"Pataxó Hã-Ha-Hãe"}, ["pti"] = {"Pindiini", "Wangkatha"}, ["ptn"] = {"Patani"}, ["pto"] = {"Zo'é"}, ["ptp"] = {"Patep"}, ["ptq"] = {"Pattapu"}, ["ptr"] = {"Piamatsina"}, ["ptt"] = {"Enrekang"}, ["ptu"] = {"Bambam"}, ["ptv"] = {"Port Vato"}, ["ptw"] = {"Pentlatch"}, ["pty"] = {"Pathiya"}, ["pua"] = {"Western Highland Purepecha"}, ["pub"] = {"Purum"}, ["puc"] = {"Punan Merap"}, ["pud"] = {"Punan Aput"}, ["pue"] = {"Puelche"}, ["puf"] = {"Punan Merah"}, ["pug"] = {"Phuie"}, ["pui"] = {"Puinave"}, ["puj"] = {"Punan Tubu"}, ["pum"] = {"Puma"}, ["puo"] = {"Puoc"}, ["pup"] = {"Pulabu"}, ["puq"] = {"Puquina"}, ["pur"] = {"Puruborá"}, ["put"] = {"Putoh"}, ["puu"] = {"Punu"}, ["puw"] = {"Puluwatese"}, ["pux"] = {"Puare"}, ["puy"] = {"Purisimeño"}, ["pwa"] = {"Pawaia"}, ["pwb"] = {"Panawa"}, ["pwg"] = {"Gapapaiwa"}, ["pwi"] = {"Patwin"}, ["pwm"] = {"Molbog"}, ["pwn"] = {"Paiwan"}, ["pwo"] = {"Pwo Western Karen"}, ["pwr"] = {"Powari"}, ["pww"] = {"Pwo Northern Karen"}, ["pxm"] = {"Quetzaltepec Mixe"}, ["pye"] = {"Pye Krumen"}, ["pym"] = {"Fyam"}, ["pyn"] = {"Poyanáwa"}, ["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"}, ["pyu"] = {"Puyuma"}, ["pyx"] = {"Pyu (Myanmar)"}, ["pyy"] = {"Pyen"}, ["pze"] = {"Pesse"}, ["pzh"] = {"Pazeh"}, ["pzn"] = {"Jejara Naga", "Para Naga"}, ["qua"] = {"Quapaw"}, ["qub"] = {"Huallaga Huánuco Quechua"}, ["quc"] = {"K'iche'", "Quiché"}, ["qud"] = {"Calderón Highland Quichua"}, ["quf"] = {"Lambayeque Quechua"}, ["qug"] = {"Chimborazo Highland Quichua"}, ["quh"] = {"South Bolivian Quechua"}, ["qui"] = {"Quileute"}, ["quk"] = {"Chachapoyas Quechua"}, ["qul"] = {"North Bolivian Quechua"}, ["qum"] = {"Sipacapense"}, ["qun"] = {"Quinault"}, ["qup"] = {"Southern Pastaza Quechua"}, ["quq"] = {"Quinqui"}, ["qur"] = {"Yanahuanca Pasco Quechua"}, ["qus"] = {"Santiago del Estero Quichua"}, ["quv"] = {"Sacapulteco"}, ["quw"] = {"Tena Lowland Quichua"}, ["qux"] = {"Yauyos Quechua"}, ["quy"] = {"Ayacucho Quechua"}, ["quz"] = {"Cusco Quechua"}, ["qva"] = {"Ambo-Pasco Quechua"}, ["qvc"] = {"Cajamarca Quechua"}, ["qve"] = {"Eastern Apurímac Quechua"}, ["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"}, ["qvi"] = {"Imbabura Highland Quichua"}, ["qvj"] = {"Loja Highland Quichua"}, ["qvl"] = {"Cajatambo North Lima Quechua"}, ["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"}, ["qvn"] = {"North Junín Quechua"}, ["qvo"] = {"Napo Lowland Quechua"}, ["qvp"] = {"Pacaraos Quechua"}, ["qvs"] = {"San Martín Quechua"}, ["qvw"] = {"Huaylla Wanca Quechua"}, ["qvy"] = {"Queyu"}, ["qvz"] = {"Northern Pastaza Quichua"}, ["qwa"] = {"Corongo Ancash Quechua"}, ["qwc"] = {"Classical Quechua"}, ["qwe"] = {"Quechuan (family)"}, ["qwh"] = {"Huaylas Ancash Quechua"}, ["qwm"] = {"Kuman (Russia)"}, ["qws"] = {"Sihuas Ancash Quechua"}, ["qwt"] = {"Kwalhioqua-Tlatskanai"}, ["qxa"] = {"Chiquián Ancash Quechua"}, ["qxc"] = {"Chincha Quechua"}, ["qxh"] = {"Panao Huánuco Quechua"}, ["qxl"] = {"Salasaca Highland Quichua"}, ["qxn"] = {"Northern Conchucos Ancash Quechua"}, ["qxo"] = {"Southern Conchucos Ancash Quechua"}, ["qxp"] = {"Puno Quechua"}, ["qxq"] = {"Qashqa'i"}, ["qxr"] = {"Cañar Highland Quichua"}, ["qxs"] = {"Southern Qiang"}, ["qxt"] = {"Santa Ana de Tusi Pasco Quechua"}, ["qxu"] = {"Arequipa-La Unión Quechua"}, ["qxw"] = {"Jauja Wanca Quechua"}, ["qya"] = {"Quenya"}, ["qyp"] = {"Quiripi"}, ["raa"] = {"Dungmali"}, ["rab"] = {"Camling"}, ["rac"] = {"Rasawa"}, ["rad"] = {"Rade"}, ["raf"] = {"Western Meohang"}, ["rag"] = {"Logooli", "Lulogooli"}, ["rah"] = {"Rabha"}, ["rai"] = {"Ramoaaina"}, ["raj"] = {"Rajasthani"}, ["rak"] = {"Tulu-Bohuai"}, ["ral"] = {"Ralte"}, ["ram"] = {"Canela"}, ["ran"] = {"Riantana"}, ["rao"] = {"Rao"}, ["rap"] = {"Rapanui"}, ["raq"] = {"Saam"}, ["rar"] = {"Rarotongan", "Cook Islands Maori"}, ["ras"] = {"Tegali"}, ["rat"] = {"Razajerdi"}, ["rau"] = {"Raute"}, ["rav"] = {"Sampang"}, ["raw"] = {"Rawang"}, ["rax"] = {"Rang"}, ["ray"] = {"Rapa"}, ["raz"] = {"Rahambuu"}, ["rbb"] = {"Rumai Palaung"}, ["rbk"] = {"Northern Bontok"}, ["rbl"] = {"Miraya Bikol"}, ["rbp"] = {"Barababaraba"}, ["rcf"] = {"Réunion Creole French"}, ["rdb"] = {"Rudbari"}, ["rea"] = {"Rerau"}, ["reb"] = {"Rembong"}, ["ree"] = {"Rejang Kayan"}, ["reg"] = {"Kara (Tanzania)"}, ["rei"] = {"Reli"}, ["rej"] = {"Rejang"}, ["rel"] = {"Rendille"}, ["rem"] = {"Remo"}, ["ren"] = {"Rengao"}, ["rer"] = {"Rer Bare"}, ["res"] = {"Reshe"}, ["ret"] = {"Retta"}, ["rey"] = {"Reyesano"}, ["rga"] = {"Roria"}, ["rge"] = {"Romano-Greek"}, ["rgk"] = {"Rangkas"}, ["rgn"] = {"Romagnol"}, ["rgr"] = {"Resígaro"}, ["rgs"] = {"Southern Roglai"}, ["rgu"] = {"Ringgou"}, ["rhg"] = {"Rohingya"}, ["rhp"] = {"Yahang"}, ["ria"] = {"Riang (India)"}, ["rib"] = {"Bribri Sign Language"}, ["rif"] = {"Tarifit"}, ["ril"] = {"Riang Lang", "Riang (Myanmar)"}, ["rim"] = {"Nyaturu"}, ["rin"] = {"Nungu"}, ["rir"] = {"Ribun"}, ["rit"] = {"Ritharrngu"}, ["riu"] = {"Riung"}, ["rjg"] = {"Rajong"}, ["rji"] = {"Raji"}, ["rjs"] = {"Rajbanshi"}, ["rka"] = {"Kraol"}, ["rkb"] = {"Rikbaktsa"}, ["rkh"] = {"Rakahanga-Manihiki"}, ["rki"] = {"Rakhine"}, ["rkm"] = {"Marka"}, ["rkt"] = {"Rangpuri", "Kamta"}, ["rkw"] = {"Arakwal"}, ["rma"] = {"Rama"}, ["rmb"] = {"Rembarrnga"}, ["rmc"] = {"Carpathian Romani"}, ["rmd"] = {"Traveller Danish"}, ["rme"] = {"Angloromani"}, ["rmf"] = {"Kalo Finnish Romani"}, ["rmg"] = {"Traveller Norwegian"}, ["rmh"] = {"Murkim"}, ["rmi"] = {"Lomavren"}, ["rmk"] = {"Romkun"}, ["rml"] = {"Baltic Romani"}, ["rmm"] = {"Roma"}, ["rmn"] = {"Balkan Romani"}, ["rmo"] = {"Sinte Romani"}, ["rmp"] = {"Rempi"}, ["rmq"] = {"Caló"}, ["rms"] = {"Romanian Sign Language"}, ["rmt"] = {"Domari"}, ["rmu"] = {"Tavringer Romani"}, ["rmv"] = {"Romanova"}, ["rmw"] = {"Welsh Romani"}, ["rmx"] = {"Romam"}, ["rmy"] = {"Vlax Romani"}, ["rmz"] = {"Marma"}, ["rnb"] = {"Brunca Sign Language"}, ["rnd"] = {"Ruund"}, ["rng"] = {"Ronga"}, ["rnl"] = {"Ranglong"}, ["rnn"] = {"Roon"}, ["rnp"] = {"Rongpo"}, ["rnr"] = {"Nari Nari"}, ["rnw"] = {"Rungwa"}, ["roa"] = {"Romance languages"}, ["rob"] = {"Tae'"}, ["roc"] = {"Cacgia Roglai"}, ["rod"] = {"Rogo"}, ["roe"] = {"Ronji"}, ["rof"] = {"Rombo"}, ["rog"] = {"Northern Roglai"}, ["rol"] = {"Romblomanon"}, ["rom"] = {"Romany"}, ["roo"] = {"Rotokas"}, ["rop"] = {"Kriol"}, ["ror"] = {"Rongga"}, ["rou"] = {"Runga"}, ["row"] = {"Dela-Oenale"}, ["rpn"] = {"Repanbitip"}, ["rpt"] = {"Rapting"}, ["rri"] = {"Ririo"}, ["rro"] = {"Waima"}, ["rrt"] = {"Arritinngithigh"}, ["rsb"] = {"Romano-Serbian"}, ["rsk"] = {"Ruthenian", "Rusnak"}, ["rsl"] = {"Russian Sign Language"}, ["rsm"] = {"Miriwoong Sign Language"}, ["rsn"] = {"Rwandan Sign Language"}, ["rsw"] = {"Rishiwa"}, ["rtc"] = {"Rungtu Chin"}, ["rth"] = {"Ratahan"}, ["rtm"] = {"Rotuman"}, ["rts"] = {"Yurats"}, ["rtw"] = {"Rathawi"}, ["rub"] = {"Gungu"}, ["ruc"] = {"Ruuli"}, ["rue"] = {"Rusyn"}, ["ruf"] = {"Luguru"}, ["rug"] = {"Roviana"}, ["ruh"] = {"Ruga"}, ["rui"] = {"Rufiji"}, ["ruk"] = {"Che"}, ["ruo"] = {"Istro Romanian"}, ["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"}, ["ruq"] = {"Megleno Romanian"}, ["rut"] = {"Rutul"}, ["ruu"] = {"Lanas Lobu"}, ["ruy"] = {"Mala (Nigeria)"}, ["ruz"] = {"Ruma"}, ["rwa"] = {"Rawo"}, ["rwk"] = {"Rwa"}, ["rwl"] = {"Ruwila"}, ["rwm"] = {"Amba (Uganda)"}, ["rwo"] = {"Rawa"}, ["rwr"] = {"Marwari (India)"}, ["rxd"] = {"Ngardi"}, ["rxw"] = {"Karuwali", "Garuwali"}, ["ryn"] = {"Northern Amami-Oshima"}, ["rys"] = {"Yaeyama"}, ["ryu"] = {"Central Okinawan"}, ["rzh"] = {"Rāziḥī"}, ["saa"] = {"Saba"}, ["sab"] = {"Buglere"}, ["sac"] = {"Meskwaki"}, ["sad"] = {"Sandawe"}, ["sae"] = {"Sabanê"}, ["saf"] = {"Safaliba"}, ["sah"] = {"Yakut"}, ["sai"] = {"South American Indian languages"}, ["saj"] = {"Sahu"}, ["sak"] = {"Sake"}, ["sal"] = {"Salishan languages"}, ["sam"] = {"Samaritan Aramaic"}, ["sao"] = {"Sause"}, ["saq"] = {"Samburu"}, ["sar"] = {"Saraveca"}, ["sas"] = {"Sasak"}, ["sat"] = {"Santali"}, ["sau"] = {"Saleman"}, ["sav"] = {"Saafi-Saafi"}, ["saw"] = {"Sawi"}, ["sax"] = {"Sa"}, ["say"] = {"Saya"}, ["saz"] = {"Saurashtra"}, ["sba"] = {"Ngambay"}, ["sbb"] = {"Simbo"}, ["sbc"] = {"Kele (Papua New Guinea)"}, ["sbd"] = {"Southern Samo"}, ["sbe"] = {"Saliba"}, ["sbf"] = {"Chabu", "Shabo"}, ["sbg"] = {"Seget"}, ["sbh"] = {"Sori-Harengan"}, ["sbi"] = {"Seti"}, ["sbj"] = {"Surbakhal"}, ["sbk"] = {"Safwa"}, ["sbl"] = {"Botolan Sambal"}, ["sbm"] = {"Sagala"}, ["sbn"] = {"Sindhi Bhil"}, ["sbo"] = {"Sabüm"}, ["sbp"] = {"Sangu (Tanzania)"}, ["sbq"] = {"Sileibi"}, ["sbr"] = {"Sembakung Murut"}, ["sbs"] = {"Subiya"}, ["sbt"] = {"Kimki"}, ["sbu"] = {"Stod Bhoti"}, ["sbv"] = {"Sabine"}, ["sbw"] = {"Simba"}, ["sbx"] = {"Seberuang"}, ["sby"] = {"Soli"}, ["sbz"] = {"Sara Kaba"}, ["scb"] = {"Chut"}, ["sce"] = {"Dongxiang"}, ["scf"] = {"San Miguel Creole French"}, ["scg"] = {"Sanggau"}, ["sch"] = {"Sakachep"}, ["sci"] = {"Sri Lankan Creole Malay"}, ["sck"] = {"Sadri"}, ["scl"] = {"Shina"}, ["scn"] = {"Sicilian"}, ["sco"] = {"Scots"}, ["scp"] = {"Hyolmo", "Helambu Sherpa"}, ["scq"] = {"Sa'och"}, ["scs"] = {"North Slavey"}, ["sct"] = {"Southern Katang"}, ["scu"] = {"Shumcho"}, ["scv"] = {"Sheni"}, ["scw"] = {"Sha"}, ["scx"] = {"Sicel"}, ["sda"] = {"Toraja-Sa'dan"}, ["sdb"] = {"Shabak"}, ["sdc"] = {"Sassarese Sardinian"}, ["sde"] = {"Surubu"}, ["sdf"] = {"Sarli"}, ["sdg"] = {"Savi"}, ["sdh"] = {"Southern Kurdish"}, ["sdj"] = {"Suundi"}, ["sdk"] = {"Sos Kundi"}, ["sdl"] = {"Saudi Arabian Sign Language"}, ["sdn"] = {"Gallurese Sardinian"}, ["sdo"] = {"Bukar-Sadung Bidayuh"}, ["sdp"] = {"Sherdukpen"}, ["sdq"] = {"Semandang"}, ["sdr"] = {"Oraon Sadri"}, ["sds"] = {"Sened"}, ["sdt"] = {"Shuadit"}, ["sdu"] = {"Sarudu"}, ["sdv"] = {"Eastern Sudanic languages"}, ["sdx"] = {"Sibu Melanau"}, ["sdz"] = {"Sallands"}, ["sea"] = {"Semai"}, ["seb"] = {"Shempire Senoufo"}, ["sec"] = {"Sechelt"}, ["sed"] = {"Sedang"}, ["see"] = {"Seneca"}, ["sef"] = {"Cebaara Senoufo"}, ["seg"] = {"Segeju"}, ["seh"] = {"Sena"}, ["sei"] = {"Seri"}, ["sej"] = {"Sene"}, ["sek"] = {"Sekani"}, ["sel"] = {"Selkup"}, ["sem"] = {"Semitic languages"}, ["sen"] = {"Nanerigé Sénoufo"}, ["seo"] = {"Suarmin"}, ["sep"] = {"Sìcìté Sénoufo"}, ["seq"] = {"Senara Sénoufo"}, ["ser"] = {"Serrano"}, ["ses"] = {"Koyraboro Senni Songhai"}, ["set"] = {"Sentani"}, ["seu"] = {"Serui-Laut"}, ["sev"] = {"Nyarafolo Senoufo"}, ["sew"] = {"Sewa Bay"}, ["sey"] = {"Secoya"}, ["sez"] = {"Senthang Chin"}, ["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"}, ["sfe"] = {"Eastern Subanen"}, ["sfm"] = {"Small Flowery Miao"}, ["sfs"] = {"South African Sign Language"}, ["sfw"] = {"Sehwi"}, ["sga"] = {"Old Irish (to 900)"}, ["sgb"] = {"Mag-antsi Ayta"}, ["sgc"] = {"Kipsigis"}, ["sgd"] = {"Surigaonon"}, ["sge"] = {"Segai"}, ["sgg"] = {"Swiss-German Sign Language"}, ["sgh"] = {"Shughni"}, ["sgi"] = {"Suga"}, ["sgj"] = {"Surgujia"}, ["sgk"] = {"Sangkong"}, ["sgm"] = {"Singa"}, ["sgn"] = {"Sign languages"}, ["sgp"] = {"Singpho"}, ["sgr"] = {"Sangisari"}, ["sgs"] = {"Samogitian"}, ["sgt"] = {"Brokpake"}, ["sgu"] = {"Salas"}, ["sgw"] = {"Sebat Bet Gurage"}, ["sgx"] = {"Sierra Leone Sign Language"}, ["sgy"] = {"Sanglechi"}, ["sgz"] = {"Sursurunga"}, ["sha"] = {"Shall-Zwall"}, ["shb"] = {"Ninam"}, ["shc"] = {"Sonde"}, ["shd"] = {"Kundal Shahi"}, ["she"] = {"Sheko"}, ["shg"] = {"Shua"}, ["shh"] = {"Shoshoni"}, ["shi"] = {"Tachelhit"}, ["shj"] = {"Shatt"}, ["shk"] = {"Shilluk"}, ["shl"] = {"Shendu"}, ["shm"] = {"Shahrudi"}, ["shn"] = {"Shan"}, ["sho"] = {"Shanga"}, ["shp"] = {"Shipibo-Conibo"}, ["shq"] = {"Sala"}, ["shr"] = {"Shi"}, ["shs"] = {"Shuswap"}, ["sht"] = {"Shasta"}, ["shu"] = {"Chadian Arabic"}, ["shv"] = {"Shehri"}, ["shw"] = {"Shwai"}, ["shx"] = {"She"}, ["shy"] = {"Tachawit"}, ["shz"] = {"Syenara Senoufo"}, ["sia"] = {"Akkala Sami"}, ["sib"] = {"Sebop"}, ["sid"] = {"Sidamo"}, ["sie"] = {"Simaa"}, ["sif"] = {"Siamou"}, ["sig"] = {"Paasaal"}, ["sih"] = {"Zire", "Sîshëë"}, ["sii"] = {"Shom Peng"}, ["sij"] = {"Numbami"}, ["sik"] = {"Sikiana"}, ["sil"] = {"Tumulung Sisaala"}, ["sim"] = {"Mende (Papua New Guinea)"}, ["sio"] = {"Siouan languages"}, ["sip"] = {"Sikkimese"}, ["siq"] = {"Sonia"}, ["sir"] = {"Siri"}, ["sis"] = {"Siuslaw"}, ["sit"] = {"Sino-Tibetan languages"}, ["siu"] = {"Sinagen"}, ["siv"] = {"Sumariup"}, ["siw"] = {"Siwai"}, ["six"] = {"Sumau"}, ["siy"] = {"Sivandi"}, ["siz"] = {"Siwi"}, ["sja"] = {"Epena"}, ["sjb"] = {"Sajau Basap"}, ["sjd"] = {"Kildin Sami"}, ["sje"] = {"Pite Sami"}, ["sjg"] = {"Assangori"}, ["sjk"] = {"Kemi Sami"}, ["sjl"] = {"Sajalong", "Miji"}, ["sjm"] = {"Mapun"}, ["sjn"] = {"Sindarin"}, ["sjo"] = {"Xibe"}, ["sjp"] = {"Surjapuri"}, ["sjr"] = {"Siar-Lak"}, ["sjs"] = {"Senhaja De Srair"}, ["sjt"] = {"Ter Sami"}, ["sju"] = {"Ume Sami"}, ["sjw"] = {"Shawnee"}, ["ska"] = {"Skagit"}, ["skb"] = {"Saek"}, ["skc"] = {"Ma Manda"}, ["skd"] = {"Southern Sierra Miwok"}, ["ske"] = {"Seke (Vanuatu)"}, ["skf"] = {"Sakirabiá"}, ["skg"] = {"Sakalava Malagasy"}, ["skh"] = {"Sikule"}, ["ski"] = {"Sika"}, ["skj"] = {"Seke (Nepal)"}, ["skm"] = {"Kutong"}, ["skn"] = {"Kolibugan Subanon"}, ["sko"] = {"Seko Tengah"}, ["skp"] = {"Sekapan"}, ["skq"] = {"Sininkere"}, ["skr"] = {"Saraiki", "Seraiki"}, ["sks"] = {"Maia"}, ["skt"] = {"Sakata"}, ["sku"] = {"Sakao"}, ["skv"] = {"Skou"}, ["skw"] = {"Skepi Creole Dutch"}, ["skx"] = {"Seko Padang"}, ["sky"] = {"Sikaiana"}, ["skz"] = {"Sekar"}, ["sla"] = {"Slavic languages"}, ["slc"] = {"Sáliba"}, ["sld"] = {"Sissala"}, ["sle"] = {"Sholaga"}, ["slf"] = {"Swiss-Italian Sign Language"}, ["slg"] = {"Selungai Murut"}, ["slh"] = {"Southern Puget Sound Salish"}, ["sli"] = {"Lower Silesian"}, ["slj"] = {"Salumá"}, ["sll"] = {"Salt-Yui"}, ["slm"] = {"Pangutaran Sama"}, ["sln"] = {"Salinan"}, ["slp"] = {"Lamaholot"}, ["slr"] = {"Salar"}, ["sls"] = {"Singapore Sign Language"}, ["slt"] = {"Sila"}, ["slu"] = {"Selaru"}, ["slw"] = {"Sialum"}, ["slx"] = {"Salampasu"}, ["sly"] = {"Selayar"}, ["slz"] = {"Ma'ya"}, ["sma"] = {"Southern Sami"}, ["smb"] = {"Simbari"}, ["smc"] = {"Som"}, ["smf"] = {"Auwe"}, ["smg"] = {"Simbali"}, ["smh"] = {"Samei"}, ["smi"] = {"Sami languages"}, ["smj"] = {"Lule Sami"}, ["smk"] = {"Bolinao"}, ["sml"] = {"Central Sama"}, ["smm"] = {"Musasa"}, ["smn"] = {"Inari Sami"}, ["smp"] = {"Samaritan"}, ["smq"] = {"Samo"}, ["smr"] = {"Simeulue"}, ["sms"] = {"Skolt Sami"}, ["smt"] = {"Simte"}, ["smu"] = {"Somray"}, ["smv"] = {"Samvedi"}, ["smw"] = {"Sumbawa"}, ["smx"] = {"Samba"}, ["smy"] = {"Semnani"}, ["smz"] = {"Simeku"}, ["snc"] = {"Sinaugoro"}, ["sne"] = {"Bau Bidayuh"}, ["snf"] = {"Noon"}, ["sng"] = {"Sanga (Democratic Republic of Congo)"}, ["sni"] = {"Sensi"}, ["snj"] = {"Riverain Sango"}, ["snk"] = {"Soninke"}, ["snl"] = {"Sangil"}, ["snm"] = {"Southern Ma'di"}, ["snn"] = {"Siona"}, ["sno"] = {"Snohomish"}, ["snp"] = {"Siane"}, ["snq"] = {"Sangu (Gabon)"}, ["snr"] = {"Sihan"}, ["sns"] = {"South West Bay", "Nahavaq"}, ["snu"] = {"Senggi", "Viid"}, ["snv"] = {"Sa'ban"}, ["snw"] = {"Selee"}, ["snx"] = {"Sam"}, ["sny"] = {"Saniyo-Hiyewe"}, ["snz"] = {"Kou"}, ["soa"] = {"Thai Song"}, ["sob"] = {"Sobei"}, ["soc"] = {"So (Democratic Republic of Congo)"}, ["sod"] = {"Songoora"}, ["soe"] = {"Songomeno"}, ["sog"] = {"Sogdian"}, ["soh"] = {"Aka"}, ["soi"] = {"Sonha"}, ["soj"] = {"Soi"}, ["sok"] = {"Sokoro"}, ["sol"] = {"Solos"}, ["son"] = {"Songhai languages"}, ["soo"] = {"Songo"}, ["sop"] = {"Songe"}, ["soq"] = {"Kanasi"}, ["sor"] = {"Somrai"}, ["sos"] = {"Seeku"}, ["sou"] = {"Southern Thai"}, ["sov"] = {"Sonsorol"}, ["sow"] = {"Sowanda"}, ["sox"] = {"Swo"}, ["soy"] = {"Miyobe"}, ["soz"] = {"Temi"}, ["spb"] = {"Sepa (Indonesia)"}, ["spc"] = {"Sapé"}, ["spd"] = {"Saep"}, ["spe"] = {"Sepa (Papua New Guinea)"}, ["spg"] = {"Sian"}, ["spi"] = {"Saponi"}, ["spk"] = {"Sengo"}, ["spl"] = {"Selepet"}, ["spm"] = {"Akukem"}, ["spn"] = {"Sanapaná"}, ["spo"] = {"Spokane"}, ["spp"] = {"Supyire Senoufo"}, ["spq"] = {"Loreto-Ucayali Spanish"}, ["spr"] = {"Saparua"}, ["sps"] = {"Saposa"}, ["spt"] = {"Spiti Bhoti"}, ["spu"] = {"Sapuan"}, ["spv"] = {"Sambalpuri", "Kosli"}, ["spx"] = {"South Picene"}, ["spy"] = {"Sabaot"}, ["sqa"] = {"Shama-Sambuga"}, ["sqh"] = {"Shau"}, ["sqj"] = {"Albanian languages"}, ["sqk"] = {"Albanian Sign Language"}, ["sqm"] = {"Suma"}, ["sqn"] = {"Susquehannock"}, ["sqo"] = {"Sorkhei"}, ["sqq"] = {"Sou"}, ["sqr"] = {"Siculo Arabic"}, ["sqs"] = {"Sri Lankan Sign Language"}, ["sqt"] = {"Soqotri"}, ["squ"] = {"Squamish"}, ["sqx"] = {"Kufr Qassem Sign Language (KQSL)"}, ["sra"] = {"Saruga"}, ["srb"] = {"Sora"}, ["src"] = {"Logudorese Sardinian"}, ["sre"] = {"Sara"}, ["srf"] = {"Nafi"}, ["srg"] = {"Sulod"}, ["srh"] = {"Sarikoli"}, ["sri"] = {"Siriano"}, ["srk"] = {"Serudung Murut"}, ["srl"] = {"Isirawa"}, ["srm"] = {"Saramaccan"}, ["srn"] = {"Sranan Tongo"}, ["sro"] = {"Campidanese Sardinian"}, ["srq"] = {"Sirionó"}, ["srr"] = {"Serer"}, ["srs"] = {"Sarsi"}, ["srt"] = {"Sauri"}, ["sru"] = {"Suruí"}, ["srv"] = {"Southern Sorsoganon"}, ["srw"] = {"Serua"}, ["srx"] = {"Sirmauri"}, ["sry"] = {"Sera"}, ["srz"] = {"Shahmirzadi"}, ["ssa"] = {"Nilo-Saharan languages"}, ["ssb"] = {"Southern Sama"}, ["ssc"] = {"Suba-Simbiti"}, ["ssd"] = {"Siroi"}, ["sse"] = {"Balangingi", "Bangingih Sama"}, ["ssf"] = {"Thao"}, ["ssg"] = {"Seimat"}, ["ssh"] = {"Shihhi Arabic"}, ["ssi"] = {"Sansi"}, ["ssj"] = {"Sausi"}, ["ssk"] = {"Sunam"}, ["ssl"] = {"Western Sisaala"}, ["ssm"] = {"Semnam"}, ["ssn"] = {"Waata"}, ["sso"] = {"Sissano"}, ["ssp"] = {"Spanish Sign Language"}, ["ssq"] = {"So'a"}, ["ssr"] = {"Swiss-French Sign Language"}, ["sss"] = {"Sô"}, ["sst"] = {"Sinasina"}, ["ssu"] = {"Susuami"}, ["ssv"] = {"Shark Bay"}, ["ssx"] = {"Samberigi"}, ["ssy"] = {"Saho"}, ["ssz"] = {"Sengseng"}, ["sta"] = {"Settla"}, ["stb"] = {"Northern Subanen"}, ["std"] = {"Sentinel"}, ["ste"] = {"Liana-Seti"}, ["stf"] = {"Seta"}, ["stg"] = {"Trieng"}, ["sth"] = {"Shelta"}, ["sti"] = {"Bulo Stieng"}, ["stj"] = {"Matya Samo"}, ["stk"] = {"Arammba"}, ["stl"] = {"Stellingwerfs"}, ["stm"] = {"Setaman"}, ["stn"] = {"Owa"}, ["sto"] = {"Stoney"}, ["stp"] = {"Southeastern Tepehuan"}, ["stq"] = {"Saterfriesisch"}, ["str"] = {"Straits Salish"}, ["sts"] = {"Shumashti"}, ["stt"] = {"Budeh Stieng"}, ["stu"] = {"Samtao"}, ["stv"] = {"Silt'e"}, ["stw"] = {"Satawalese"}, ["sty"] = {"Siberian Tatar"}, ["sua"] = {"Sulka"}, ["sub"] = {"Suku"}, ["suc"] = {"Western Subanon"}, ["sue"] = {"Suena"}, ["sug"] = {"Suganga"}, ["sui"] = {"Suki"}, ["suj"] = {"Shubi"}, ["suk"] = {"Sukuma"}, ["suo"] = {"Bouni"}, ["suq"] = {"Tirmaga-Chai Suri", "Suri"}, ["sur"] = {"Mwaghavul"}, ["sus"] = {"Susu"}, ["sut"] = {"Subtiaba"}, ["suv"] = {"Puroik"}, ["suw"] = {"Sumbwa"}, ["sux"] = {"Sumerian"}, ["suy"] = {"Suyá"}, ["suz"] = {"Sunwar"}, ["sva"] = {"Svan"}, ["svb"] = {"Ulau-Suain"}, ["svc"] = {"Vincentian Creole English"}, ["sve"] = {"Serili"}, ["svk"] = {"Slovakian Sign Language"}, ["svm"] = {"Slavomolisano"}, ["svs"] = {"Savosavo"}, ["svx"] = {"Skalvian"}, ["swb"] = {"Maore Comorian"}, ["swc"] = {"Congo Swahili"}, ["swf"] = {"Sere"}, ["swg"] = {"Swabian"}, ["swh"] = {"Swahili (individual language)", "Kiswahili"}, ["swi"] = {"Sui"}, ["swj"] = {"Sira"}, ["swk"] = {"Malawi Sena"}, ["swl"] = {"Swedish Sign Language"}, ["swm"] = {"Samosa"}, ["swn"] = {"Sawknah"}, ["swo"] = {"Shanenawa"}, ["swp"] = {"Suau"}, ["swq"] = {"Sharwa"}, ["swr"] = {"Saweru"}, ["sws"] = {"Seluwasan"}, ["swt"] = {"Sawila"}, ["swu"] = {"Suwawa"}, ["swv"] = {"Shekhawati"}, ["sww"] = {"Sowa"}, ["swx"] = {"Suruahá"}, ["swy"] = {"Sarua"}, ["sxb"] = {"Suba"}, ["sxc"] = {"Sicanian"}, ["sxe"] = {"Sighu"}, ["sxg"] = {"Shuhi", "Shixing"}, ["sxk"] = {"Southern Kalapuya"}, ["sxl"] = {"Selian"}, ["sxm"] = {"Samre"}, ["sxn"] = {"Sangir"}, ["sxo"] = {"Sorothaptic"}, ["sxr"] = {"Saaroa"}, ["sxs"] = {"Sasaru"}, ["sxu"] = {"Upper Saxon"}, ["sxw"] = {"Saxwe Gbe"}, ["sya"] = {"Siang"}, ["syb"] = {"Central Subanen"}, ["syc"] = {"Classical Syriac"}, ["syd"] = {"Samoyedic languages"}, ["syi"] = {"Seki"}, ["syk"] = {"Sukur"}, ["syl"] = {"Sylheti"}, ["sym"] = {"Maya Samo"}, ["syn"] = {"Senaya"}, ["syo"] = {"Suoy"}, ["syr"] = {"Syriac"}, ["sys"] = {"Sinyar"}, ["syw"] = {"Kagate"}, ["syx"] = {"Samay"}, ["syy"] = {"Al-Sayyid Bedouin Sign Language"}, ["sza"] = {"Semelai"}, ["szb"] = {"Ngalum"}, ["szc"] = {"Semaq Beri"}, ["sze"] = {"Seze"}, ["szg"] = {"Sengele"}, ["szl"] = {"Silesian"}, ["szn"] = {"Sula"}, ["szp"] = {"Suabo"}, ["szs"] = {"Solomon Islands Sign Language"}, ["szv"] = {"Isu (Fako Division)"}, ["szw"] = {"Sawai"}, ["szy"] = {"Sakizaya"}, ["taa"] = {"Lower Tanana"}, ["tab"] = {"Tabassaran"}, ["tac"] = {"Lowland Tarahumara"}, ["tad"] = {"Tause"}, ["tae"] = {"Tariana"}, ["taf"] = {"Tapirapé"}, ["tag"] = {"Tagoi"}, ["tai"] = {"Tai languages"}, ["taj"] = {"Eastern Tamang"}, ["tak"] = {"Tala"}, ["tal"] = {"Tal"}, ["tan"] = {"Tangale"}, ["tao"] = {"Yami"}, ["tap"] = {"Taabwa"}, ["taq"] = {"Tamasheq"}, ["tar"] = {"Central Tarahumara"}, ["tas"] = {"Tay Boi"}, ["tau"] = {"Upper Tanana"}, ["tav"] = {"Tatuyo"}, ["taw"] = {"Tai"}, ["tax"] = {"Tamki"}, ["tay"] = {"Atayal"}, ["taz"] = {"Tocho"}, ["tba"] = {"Aikanã"}, ["tbc"] = {"Takia"}, ["tbd"] = {"Kaki Ae"}, ["tbe"] = {"Tanimbili"}, ["tbf"] = {"Mandara"}, ["tbg"] = {"North Tairora"}, ["tbh"] = {"Dharawal", "Thurawal"}, ["tbi"] = {"Gaam"}, ["tbj"] = {"Tiang"}, ["tbk"] = {"Calamian Tagbanwa"}, ["tbl"] = {"Tboli"}, ["tbm"] = {"Tagbu"}, ["tbn"] = {"Barro Negro Tunebo"}, ["tbo"] = {"Tawala"}, ["tbp"] = {"Taworta", "Diebroud"}, ["tbq"] = {"Tibeto-Burman languages"}, ["tbr"] = {"Tumtum"}, ["tbs"] = {"Tanguat"}, ["tbt"] = {"Tembo (Kitembo)"}, ["tbu"] = {"Tubar"}, ["tbv"] = {"Tobo"}, ["tbw"] = {"Tagbanwa"}, ["tbx"] = {"Kapin"}, ["tby"] = {"Tabaru"}, ["tbz"] = {"Ditammari"}, ["tca"] = {"Ticuna"}, ["tcb"] = {"Tanacross"}, ["tcc"] = {"Datooga"}, ["tcd"] = {"Tafi"}, ["tce"] = {"Southern Tutchone"}, ["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"}, ["tcg"] = {"Tamagario"}, ["tch"] = {"Turks And Caicos Creole English"}, ["tci"] = {"Wára"}, ["tck"] = {"Tchitchege"}, ["tcl"] = {"Taman (Myanmar)"}, ["tcm"] = {"Tanahmerah"}, ["tcn"] = {"Tichurong"}, ["tco"] = {"Taungyo"}, ["tcp"] = {"Tawr Chin"}, ["tcq"] = {"Kaiy"}, ["tcs"] = {"Torres Strait Creole", "Yumplatok"}, ["tct"] = {"T'en"}, ["tcu"] = {"Southeastern Tarahumara"}, ["tcw"] = {"Tecpatlán Totonac"}, ["tcx"] = {"Toda"}, ["tcy"] = {"Tulu"}, ["tcz"] = {"Thado Chin"}, ["tda"] = {"Tagdal"}, ["tdb"] = {"Panchpargania"}, ["tdc"] = {"Emberá-Tadó"}, ["tdd"] = {"Tai Nüa"}, ["tde"] = {"Tiranige Diga Dogon"}, ["tdf"] = {"Talieng"}, ["tdg"] = {"Western Tamang"}, ["tdh"] = {"Thulung"}, ["tdi"] = {"Tomadino"}, ["tdj"] = {"Tajio"}, ["tdk"] = {"Tambas"}, ["tdl"] = {"Sur"}, ["tdm"] = {"Taruma"}, ["tdn"] = {"Tondano"}, ["tdo"] = {"Teme"}, ["tdq"] = {"Tita"}, ["tdr"] = {"Todrah"}, ["tds"] = {"Doutai"}, ["tdt"] = {"Tetun Dili"}, ["tdv"] = {"Toro"}, ["tdx"] = {"Tandroy-Mahafaly Malagasy"}, ["tdy"] = {"Tadyawan"}, ["tea"] = {"Temiar"}, ["teb"] = {"Tetete"}, ["tec"] = {"Terik"}, ["ted"] = {"Tepo Krumen"}, ["tee"] = {"Huehuetla Tepehua"}, ["tef"] = {"Teressa"}, ["teg"] = {"Teke-Tege"}, ["teh"] = {"Tehuelche"}, ["tei"] = {"Torricelli"}, ["tek"] = {"Ibali Teke"}, ["tem"] = {"Timne"}, ["ten"] = {"Tama (Colombia)"}, ["teo"] = {"Teso"}, ["tep"] = {"Tepecano"}, ["teq"] = {"Temein"}, ["ter"] = {"Tereno"}, ["tes"] = {"Tengger"}, ["tet"] = {"Tetum"}, ["teu"] = {"Soo"}, ["tev"] = {"Teor"}, ["tew"] = {"Tewa (USA)"}, ["tex"] = {"Tennet"}, ["tey"] = {"Tulishi"}, ["tez"] = {"Tetserret"}, ["tfi"] = {"Tofin Gbe"}, ["tfn"] = {"Tanaina"}, ["tfo"] = {"Tefaro"}, ["tfr"] = {"Teribe"}, ["tft"] = {"Ternate"}, ["tga"] = {"Sagalla"}, ["tgb"] = {"Tobilung"}, ["tgc"] = {"Tigak"}, ["tgd"] = {"Ciwogai"}, ["tge"] = {"Eastern Gorkha Tamang"}, ["tgf"] = {"Chalikha"}, ["tgh"] = {"Tobagonian Creole English"}, ["tgi"] = {"Lawunuia"}, ["tgj"] = {"Tagin"}, ["tgn"] = {"Tandaganon"}, ["tgo"] = {"Sudest"}, ["tgp"] = {"Tangoa"}, ["tgq"] = {"Tring"}, ["tgr"] = {"Tareng"}, ["tgs"] = {"Nume"}, ["tgt"] = {"Central Tagbanwa"}, ["tgu"] = {"Tanggu"}, ["tgv"] = {"Tingui-Boto"}, ["tgw"] = {"Tagwana Senoufo"}, ["tgx"] = {"Tagish"}, ["tgy"] = {"Togoyo"}, ["tgz"] = {"Tagalaka"}, ["thd"] = {"Kuuk Thaayorre", "Thayore"}, ["the"] = {"Chitwania Tharu"}, ["thf"] = {"Thangmi"}, ["thh"] = {"Northern Tarahumara"}, ["thi"] = {"Tai Long"}, ["thk"] = {"Tharaka", "Kitharaka"}, ["thl"] = {"Dangaura Tharu"}, ["thm"] = {"Aheu"}, ["thn"] = {"Thachanadan"}, ["thp"] = {"Thompson"}, ["thq"] = {"Kochila Tharu"}, ["thr"] = {"Rana Tharu"}, ["ths"] = {"Thakali"}, ["tht"] = {"Tahltan"}, ["thu"] = {"Thuri"}, ["thv"] = {"Tahaggart Tamahaq"}, ["thy"] = {"Tha"}, ["thz"] = {"Tayart Tamajeq"}, ["tia"] = {"Tidikelt Tamazight"}, ["tic"] = {"Tira"}, ["tif"] = {"Tifal"}, ["tig"] = {"Tigre"}, ["tih"] = {"Timugon Murut"}, ["tii"] = {"Tiene"}, ["tij"] = {"Tilung"}, ["tik"] = {"Tikar"}, ["til"] = {"Tillamook"}, ["tim"] = {"Timbe"}, ["tin"] = {"Tindi"}, ["tio"] = {"Teop"}, ["tip"] = {"Trimuris"}, ["tiq"] = {"Tiéfo"}, ["tis"] = {"Masadiit Itneg"}, ["tit"] = {"Tinigua"}, ["tiu"] = {"Adasen"}, ["tiv"] = {"Tiv"}, ["tiw"] = {"Tiwi"}, ["tix"] = {"Southern Tiwa"}, ["tiy"] = {"Tiruray"}, ["tiz"] = {"Tai Hongjin"}, ["tja"] = {"Tajuasohn"}, ["tjg"] = {"Tunjung"}, ["tji"] = {"Northern Tujia"}, ["tjj"] = {"Tjungundji"}, ["tjl"] = {"Tai Laing"}, ["tjm"] = {"Timucua"}, ["tjn"] = {"Tonjon"}, ["tjo"] = {"Temacine Tamazight"}, ["tjp"] = {"Tjupany"}, ["tjs"] = {"Southern Tujia"}, ["tju"] = {"Tjurruru"}, ["tjw"] = {"Djabwurrung"}, ["tka"] = {"Truká"}, ["tkb"] = {"Buksa"}, ["tkd"] = {"Tukudede"}, ["tke"] = {"Takwane"}, ["tkf"] = {"Tukumanféd"}, ["tkg"] = {"Tesaka Malagasy"}, ["tkl"] = {"Tokelau"}, ["tkm"] = {"Takelma"}, ["tkn"] = {"Toku-No-Shima"}, ["tkp"] = {"Tikopia"}, ["tkq"] = {"Tee"}, ["tkr"] = {"Tsakhur"}, ["tks"] = {"Takestani"}, ["tkt"] = {"Kathoriya Tharu"}, ["tku"] = {"Upper Necaxa Totonac"}, ["tkv"] = {"Mur Pano"}, ["tkw"] = {"Teanu"}, ["tkx"] = {"Tangko"}, ["tkz"] = {"Takua"}, ["tla"] = {"Southwestern Tepehuan"}, ["tlb"] = {"Tobelo"}, ["tlc"] = {"Yecuatla Totonac"}, ["tld"] = {"Talaud"}, ["tlf"] = {"Telefol"}, ["tlg"] = {"Tofanma"}, ["tlh"] = {"Klingon", "tlhIngan Hol"}, ["tli"] = {"Tlingit"}, ["tlj"] = {"Talinga-Bwisi"}, ["tlk"] = {"Taloki"}, ["tll"] = {"Tetela"}, ["tlm"] = {"Tolomako"}, ["tln"] = {"Talondo'"}, ["tlo"] = {"Talodi"}, ["tlp"] = {"Filomena Mata-Coahuitlán Totonac"}, ["tlq"] = {"Tai Loi"}, ["tlr"] = {"Talise"}, ["tls"] = {"Tambotalo"}, ["tlt"] = {"Sou Nama", "Teluti"}, ["tlu"] = {"Tulehu"}, ["tlv"] = {"Taliabu"}, ["tlx"] = {"Khehek"}, ["tly"] = {"Talysh"}, ["tma"] = {"Tama (Chad)"}, ["tmb"] = {"Katbol", "Avava"}, ["tmc"] = {"Tumak"}, ["tmd"] = {"Haruai"}, ["tme"] = {"Tremembé"}, ["tmf"] = {"Toba-Maskoy"}, ["tmg"] = {"Ternateño"}, ["tmh"] = {"Tamashek"}, ["tmi"] = {"Tutuba"}, ["tmj"] = {"Samarokena"}, ["tml"] = {"Tamnim Citak"}, ["tmm"] = {"Tai Thanh"}, ["tmn"] = {"Taman (Indonesia)"}, ["tmo"] = {"Temoq"}, ["tmq"] = {"Tumleo"}, ["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"}, ["tms"] = {"Tima"}, ["tmt"] = {"Tasmate"}, ["tmu"] = {"Iau"}, ["tmv"] = {"Tembo (Motembo)"}, ["tmw"] = {"Temuan"}, ["tmy"] = {"Tami"}, ["tmz"] = {"Tamanaku"}, ["tna"] = {"Tacana"}, ["tnb"] = {"Western Tunebo"}, ["tnc"] = {"Tanimuca-Retuarã"}, ["tnd"] = {"Angosturas Tunebo"}, ["tng"] = {"Tobanga"}, ["tnh"] = {"Maiani"}, ["tni"] = {"Tandia"}, ["tnk"] = {"Kwamera"}, ["tnl"] = {"Lenakel"}, ["tnm"] = {"Tabla"}, ["tnn"] = {"North Tanna"}, ["tno"] = {"Toromono"}, ["tnp"] = {"Whitesands"}, ["tnq"] = {"Taino"}, ["tnr"] = {"Ménik"}, ["tns"] = {"Tenis"}, ["tnt"] = {"Tontemboan"}, ["tnu"] = {"Tay Khang"}, ["tnv"] = {"Tangchangya"}, ["tnw"] = {"Tonsawang"}, ["tnx"] = {"Tanema"}, ["tny"] = {"Tongwe"}, ["tnz"] = {"Ten'edn"}, ["tob"] = {"Toba"}, ["toc"] = {"Coyutla Totonac"}, ["tod"] = {"Toma"}, ["tof"] = {"Gizrra"}, ["tog"] = {"Tonga (Nyasa)"}, ["toh"] = {"Gitonga"}, ["toi"] = {"Tonga (Zambia)"}, ["toj"] = {"Tojolabal"}, ["tok"] = {"Toki Pona"}, ["tol"] = {"Tolowa"}, ["tom"] = {"Tombulu"}, ["too"] = {"Xicotepec De Juárez Totonac"}, ["top"] = {"Papantla Totonac"}, ["toq"] = {"Toposa"}, ["tor"] = {"Togbo-Vara Banda"}, ["tos"] = {"Highland Totonac"}, ["tou"] = {"Tho"}, ["tov"] = {"Upper Taromi"}, ["tow"] = {"Jemez"}, ["tox"] = {"Tobian"}, ["toy"] = {"Topoiyo"}, ["toz"] = {"To"}, ["tpa"] = {"Taupota"}, ["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"}, ["tpe"] = {"Tippera"}, ["tpf"] = {"Tarpia"}, ["tpg"] = {"Kula"}, ["tpi"] = {"Tok Pisin"}, ["tpj"] = {"Tapieté"}, ["tpk"] = {"Tupinikin"}, ["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"}, ["tpm"] = {"Tampulma"}, ["tpn"] = {"Tupinambá"}, ["tpo"] = {"Tai Pao"}, ["tpp"] = {"Pisaflores Tepehua"}, ["tpq"] = {"Tukpa"}, ["tpr"] = {"Tuparí"}, ["tpt"] = {"Tlachichilco Tepehua"}, ["tpu"] = {"Tampuan"}, ["tpv"] = {"Tanapag"}, ["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"}, ["tpy"] = {"Trumai"}, ["tpz"] = {"Tinputz"}, ["tqb"] = {"Tembé"}, ["tql"] = {"Lehali"}, ["tqm"] = {"Turumsa"}, ["tqn"] = {"Tenino"}, ["tqo"] = {"Toaripi"}, ["tqp"] = {"Tomoip"}, ["tqq"] = {"Tunni"}, ["tqr"] = {"Torona"}, ["tqt"] = {"Western Totonac"}, ["tqu"] = {"Touo"}, ["tqw"] = {"Tonkawa"}, ["tra"] = {"Tirahi"}, ["trb"] = {"Terebu"}, ["trc"] = {"Copala Triqui"}, ["trd"] = {"Turi"}, ["tre"] = {"East Tarangan"}, ["trf"] = {"Trinidadian Creole English"}, ["trg"] = {"Lishán Didán"}, ["trh"] = {"Turaka"}, ["tri"] = {"Trió"}, ["trj"] = {"Toram"}, ["trk"] = {"Turkic languages"}, ["trl"] = {"Traveller Scottish"}, ["trm"] = {"Tregami"}, ["trn"] = {"Trinitario"}, ["tro"] = {"Tarao Naga"}, ["trp"] = {"Kok Borok"}, ["trq"] = {"San Martín Itunyoso Triqui"}, ["trr"] = {"Taushiro"}, ["trs"] = {"Chicahuaxtla Triqui"}, ["trt"] = {"Tunggare"}, ["tru"] = {"Turoyo", "Surayt"}, ["trv"] = {"Sediq", "Seediq", "Taroko"}, ["trw"] = {"Torwali"}, ["trx"] = {"Tringgus-Sembaan Bidayuh"}, ["try"] = {"Turung"}, ["trz"] = {"Torá"}, ["tsa"] = {"Tsaangi"}, ["tsb"] = {"Tsamai"}, ["tsc"] = {"Tswa"}, ["tsd"] = {"Tsakonian"}, ["tse"] = {"Tunisian Sign Language"}, ["tsg"] = {"Tausug"}, ["tsh"] = {"Tsuvan"}, ["tsi"] = {"Tsimshian"}, ["tsj"] = {"Tshangla"}, ["tsk"] = {"Tseku"}, ["tsl"] = {"Ts'ün-Lao"}, ["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"}, ["tsp"] = {"Northern Toussian"}, ["tsq"] = {"Thai Sign Language"}, ["tsr"] = {"Akei"}, ["tss"] = {"Taiwan Sign Language"}, ["tst"] = {"Tondi Songway Kiini"}, ["tsu"] = {"Tsou"}, ["tsv"] = {"Tsogo"}, ["tsw"] = {"Tsishingini"}, ["tsx"] = {"Mubami"}, ["tsy"] = {"Tebul Sign Language"}, ["tsz"] = {"Purepecha"}, ["tta"] = {"Tutelo"}, ["ttb"] = {"Gaa"}, ["ttc"] = {"Tektiteko"}, ["ttd"] = {"Tauade"}, ["tte"] = {"Bwanabwana"}, ["ttf"] = {"Tuotomb"}, ["ttg"] = {"Tutong"}, ["tth"] = {"Upper Ta'oih"}, ["tti"] = {"Tobati"}, ["ttj"] = {"Tooro"}, ["ttk"] = {"Totoro"}, ["ttl"] = {"Totela"}, ["ttm"] = {"Northern Tutchone"}, ["ttn"] = {"Towei"}, ["tto"] = {"Lower Ta'oih"}, ["ttp"] = {"Tombelala"}, ["ttq"] = {"Tawallammat Tamajaq"}, ["ttr"] = {"Tera"}, ["tts"] = {"Northeastern Thai"}, ["ttt"] = {"Muslim Tat"}, ["ttu"] = {"Torau"}, ["ttv"] = {"Titan"}, ["ttw"] = {"Long Wat"}, ["tty"] = {"Sikaritai"}, ["ttz"] = {"Tsum"}, ["tua"] = {"Wiarumus"}, ["tub"] = {"Tübatulabal"}, ["tuc"] = {"Mutu"}, ["tud"] = {"Tuxá"}, ["tue"] = {"Tuyuca"}, ["tuf"] = {"Central Tunebo"}, ["tug"] = {"Tunia"}, ["tuh"] = {"Taulil"}, ["tui"] = {"Tupuri"}, ["tuj"] = {"Tugutil"}, ["tul"] = {"Tula"}, ["tum"] = {"Tumbuka"}, ["tun"] = {"Tunica"}, ["tuo"] = {"Tucano"}, ["tup"] = {"Tupi languages"}, ["tuq"] = {"Tedaga"}, ["tus"] = {"Tuscarora"}, ["tut"] = {"Altaic languages"}, ["tuu"] = {"Tututni"}, ["tuv"] = {"Turkana"}, ["tuw"] = {"Tungus languages"}, ["tux"] = {"Tuxináwa"}, ["tuy"] = {"Tugen"}, ["tuz"] = {"Turka"}, ["tva"] = {"Vaghua"}, ["tvd"] = {"Tsuvadi"}, ["tve"] = {"Te'un"}, ["tvi"] = {"Tulai"}, ["tvk"] = {"Southeast Ambrym"}, ["tvl"] = {"Tuvalu"}, ["tvm"] = {"Tela-Masbuar"}, ["tvn"] = {"Tavoyan"}, ["tvo"] = {"Tidore"}, ["tvs"] = {"Taveta"}, ["tvt"] = {"Tutsa Naga"}, ["tvu"] = {"Tunen"}, ["tvw"] = {"Sedoa"}, ["tvx"] = {"Taivoan"}, ["tvy"] = {"Timor Pidgin"}, ["twa"] = {"Twana"}, ["twb"] = {"Western Tawbuid"}, ["twc"] = {"Teshenawa"}, ["twd"] = {"Twents"}, ["twe"] = {"Tewa (Indonesia)"}, ["twf"] = {"Northern Tiwa"}, ["twg"] = {"Tereweng"}, ["twh"] = {"Tai Dón"}, ["twl"] = {"Tawara"}, ["twm"] = {"Tawang Monpa"}, ["twn"] = {"Twendi"}, ["two"] = {"Tswapong"}, ["twp"] = {"Ere"}, ["twq"] = {"Tasawaq"}, ["twr"] = {"Southwestern Tarahumara"}, ["twt"] = {"Turiwára"}, ["twu"] = {"Termanu"}, ["tww"] = {"Tuwari"}, ["twx"] = {"Tewe"}, ["twy"] = {"Tawoyan"}, ["txa"] = {"Tombonuo"}, ["txb"] = {"Tokharian B"}, ["txc"] = {"Tsetsaut"}, ["txe"] = {"Totoli"}, ["txg"] = {"Tangut"}, ["txh"] = {"Thracian"}, ["txi"] = {"Ikpeng"}, ["txj"] = {"Tarjumo"}, ["txm"] = {"Tomini"}, ["txn"] = {"West Tarangan"}, ["txo"] = {"Toto"}, ["txq"] = {"Tii"}, ["txr"] = {"Tartessian"}, ["txs"] = {"Tonsea"}, ["txt"] = {"Citak"}, ["txu"] = {"Kayapó"}, ["txx"] = {"Tatana"}, ["txy"] = {"Tanosy Malagasy"}, ["tya"] = {"Tauya"}, ["tye"] = {"Kyanga"}, ["tyh"] = {"O'du"}, ["tyi"] = {"Teke-Tsaayi"}, ["tyj"] = {"Tai Do", "Tai Yo"}, ["tyl"] = {"Thu Lao"}, ["tyn"] = {"Kombai"}, ["typ"] = {"Thaypan"}, ["tyr"] = {"Tai Daeng"}, ["tys"] = {"Tày Sa Pa"}, ["tyt"] = {"Tày Tac"}, ["tyu"] = {"Kua"}, ["tyv"] = {"Tuvinian"}, ["tyx"] = {"Teke-Tyee"}, ["tyy"] = {"Tiyaa"}, ["tyz"] = {"Tày"}, ["tza"] = {"Tanzanian Sign Language"}, ["tzh"] = {"Tzeltal"}, ["tzj"] = {"Tz'utujil"}, ["tzl"] = {"Talossan"}, ["tzm"] = {"Central Atlas Tamazight"}, ["tzn"] = {"Tugun"}, ["tzo"] = {"Tzotzil"}, ["tzx"] = {"Tabriak"}, ["uam"] = {"Uamué"}, ["uan"] = {"Kuan"}, ["uar"] = {"Tairuma"}, ["uba"] = {"Ubang"}, ["ubi"] = {"Ubi"}, ["ubl"] = {"Buhi'non Bikol"}, ["ubr"] = {"Ubir"}, ["ubu"] = {"Umbu-Ungu"}, ["uby"] = {"Ubykh"}, ["uda"] = {"Uda"}, ["ude"] = {"Udihe"}, ["udg"] = {"Muduga"}, ["udi"] = {"Udi"}, ["udj"] = {"Ujir"}, ["udl"] = {"Wuzlam"}, ["udm"] = {"Udmurt"}, ["udu"] = {"Uduk"}, ["ues"] = {"Kioko"}, ["ufi"] = {"Ufim"}, ["uga"] = {"Ugaritic"}, ["ugb"] = {"Kuku-Ugbanh"}, ["uge"] = {"Ughele"}, ["ugh"] = {"Kubachi"}, ["ugn"] = {"Ugandan Sign Language"}, ["ugo"] = {"Ugong"}, ["ugy"] = {"Uruguayan Sign Language"}, ["uha"] = {"Uhami"}, ["uhn"] = {"Damal"}, ["uis"] = {"Uisai"}, ["uiv"] = {"Iyive"}, ["uji"] = {"Tanjijili"}, ["uka"] = {"Kaburi"}, ["ukg"] = {"Ukuriguma"}, ["ukh"] = {"Ukhwejo"}, ["uki"] = {"Kui (India)"}, ["ukk"] = {"Muak Sa-aak"}, ["ukl"] = {"Ukrainian Sign Language"}, ["ukp"] = {"Ukpe-Bayobiri"}, ["ukq"] = {"Ukwa"}, ["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"}, ["uku"] = {"Ukue"}, ["ukv"] = {"Kuku"}, ["ukw"] = {"Ukwuani-Aboh-Ndoni"}, ["uky"] = {"Kuuk-Yak"}, ["ula"] = {"Fungwa"}, ["ulb"] = {"Ulukwumi"}, ["ulc"] = {"Ulch"}, ["ule"] = {"Lule"}, ["ulf"] = {"Usku", "Afra"}, ["uli"] = {"Ulithian"}, ["ulk"] = {"Meriam Mir"}, ["ull"] = {"Ullatan"}, ["ulm"] = {"Ulumanda'"}, ["uln"] = {"Unserdeutsch"}, ["ulu"] = {"Uma' Lung"}, ["ulw"] = {"Ulwa"}, ["uly"] = {"Buli"}, ["uma"] = {"Umatilla"}, ["umb"] = {"Umbundu"}, ["umc"] = {"Marrucinian"}, ["umd"] = {"Umbindhamu"}, ["umg"] = {"Morrobalama", "Umbuygamu"}, ["umi"] = {"Ukit"}, ["umm"] = {"Umon"}, ["umn"] = {"Makyan Naga"}, ["umo"] = {"Umotína"}, ["ump"] = {"Umpila"}, ["umr"] = {"Umbugarla"}, ["ums"] = {"Pendau"}, ["umu"] = {"Munsee"}, ["una"] = {"North Watut"}, ["und"] = {"Undetermined"}, ["une"] = {"Uneme"}, ["ung"] = {"Ngarinyin"}, ["uni"] = {"Uni"}, ["unk"] = {"Enawené-Nawé"}, ["unm"] = {"Unami"}, ["unn"] = {"Kurnai"}, ["unr"] = {"Mundari"}, ["unu"] = {"Unubahe"}, ["unx"] = {"Munda"}, ["unz"] = {"Unde Kaili"}, ["uon"] = {"Kulon"}, ["upi"] = {"Umeda"}, ["upv"] = {"Uripiv-Wala-Rano-Atchin"}, ["ura"] = {"Urarina"}, ["urb"] = {"Urubú-Kaapor", "Kaapor"}, ["urc"] = {"Urningangg"}, ["ure"] = {"Uru"}, ["urf"] = {"Uradhi"}, ["urg"] = {"Urigina"}, ["urh"] = {"Urhobo"}, ["uri"] = {"Urim"}, ["urj"] = {"Uralic languages"}, ["urk"] = {"Urak Lawoi'"}, ["url"] = {"Urali"}, ["urm"] = {"Urapmin"}, ["urn"] = {"Uruangnirin"}, ["uro"] = {"Ura (Papua New Guinea)"}, ["urp"] = {"Uru-Pa-In"}, ["urr"] = {"Lehalurup", "Löyöp"}, ["urt"] = {"Urat"}, ["uru"] = {"Urumi"}, ["urv"] = {"Uruava"}, ["urw"] = {"Sop"}, ["urx"] = {"Urimo"}, ["ury"] = {"Orya"}, ["urz"] = {"Uru-Eu-Wau-Wau"}, ["usa"] = {"Usarufa"}, ["ush"] = {"Ushojo"}, ["usi"] = {"Usui"}, ["usk"] = {"Usaghade"}, ["usp"] = {"Uspanteco"}, ["uss"] = {"us-Saare"}, ["usu"] = {"Uya"}, ["uta"] = {"Otank"}, ["ute"] = {"Ute-Southern Paiute"}, ["uth"] = {"ut-Hun"}, ["utp"] = {"Amba (Solomon Islands)"}, ["utr"] = {"Etulo"}, ["utu"] = {"Utu"}, ["uum"] = {"Urum"}, ["uur"] = {"Ura (Vanuatu)"}, ["uuu"] = {"U"}, ["uve"] = {"West Uvean", "Fagauvea"}, ["uvh"] = {"Uri"}, ["uvl"] = {"Lote"}, ["uwa"] = {"Kuku-Uwanh"}, ["uya"] = {"Doko-Uyanga"}, ["uzn"] = {"Northern Uzbek"}, ["uzs"] = {"Southern Uzbek"}, ["vaa"] = {"Vaagri Booli"}, ["vae"] = {"Vale"}, ["vaf"] = {"Vafsi"}, ["vag"] = {"Vagla"}, ["vah"] = {"Varhadi-Nagpuri"}, ["vai"] = {"Vai"}, ["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"}, ["val"] = {"Vehes"}, ["vam"] = {"Vanimo"}, ["van"] = {"Valman"}, ["vao"] = {"Vao"}, ["vap"] = {"Vaiphei"}, ["var"] = {"Huarijio"}, ["vas"] = {"Vasavi"}, ["vau"] = {"Vanuma"}, ["vav"] = {"Varli"}, ["vay"] = {"Wayu"}, ["vbb"] = {"Southeast Babar"}, ["vbk"] = {"Southwestern Bontok"}, ["vec"] = {"Venetian"}, ["ved"] = {"Veddah"}, ["vel"] = {"Veluws"}, ["vem"] = {"Vemgo-Mabas"}, ["veo"] = {"Ventureño"}, ["vep"] = {"Veps"}, ["ver"] = {"Mom Jango"}, ["vgr"] = {"Vaghri"}, ["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"}, ["vic"] = {"Virgin Islands Creole English"}, ["vid"] = {"Vidunda"}, ["vif"] = {"Vili"}, ["vig"] = {"Viemo"}, ["vil"] = {"Vilela"}, ["vin"] = {"Vinza"}, ["vis"] = {"Vishavan"}, ["vit"] = {"Viti"}, ["viv"] = {"Iduna"}, ["vjk"] = {"Bajjika"}, ["vka"] = {"Kariyarra"}, ["vkj"] = {"Kujarge"}, ["vkk"] = {"Kaur"}, ["vkl"] = {"Kulisusu"}, ["vkm"] = {"Kamakan"}, ["vkn"] = {"Koro Nulu"}, ["vko"] = {"Kodeoha"}, ["vkp"] = {"Korlai Creole Portuguese"}, ["vkt"] = {"Tenggarong Kutai Malay"}, ["vku"] = {"Kurrama"}, ["vkz"] = {"Koro Zuba"}, ["vlp"] = {"Valpei"}, ["vls"] = {"Vlaams"}, ["vma"] = {"Martuyhunira"}, ["vmb"] = {"Barbaram"}, ["vmc"] = {"Juxtlahuaca Mixtec"}, ["vmd"] = {"Mudu Koraga"}, ["vme"] = {"East Masela"}, ["vmf"] = {"Mainfränkisch"}, ["vmg"] = {"Lungalunga"}, ["vmh"] = {"Maraghei"}, ["vmi"] = {"Miwa"}, ["vmj"] = {"Ixtayutla Mixtec"}, ["vmk"] = {"Makhuwa-Shirima"}, ["vml"] = {"Malgana"}, ["vmm"] = {"Mitlatongo Mixtec"}, ["vmp"] = {"Soyaltepec Mazatec"}, ["vmq"] = {"Soyaltepec Mixtec"}, ["vmr"] = {"Marenje"}, ["vms"] = {"Moksela"}, ["vmu"] = {"Muluridyi"}, ["vmv"] = {"Valley Maidu"}, ["vmw"] = {"Makhuwa"}, ["vmx"] = {"Tamazola Mixtec"}, ["vmy"] = {"Ayautla Mazatec"}, ["vmz"] = {"Mazatlán Mazatec"}, ["vnk"] = {"Vano", "Lovono"}, ["vnm"] = {"Vinmavis", "Neve'ei"}, ["vnp"] = {"Vunapu"}, ["vor"] = {"Voro"}, ["vot"] = {"Votic"}, ["vra"] = {"Vera'a"}, ["vro"] = {"Võro"}, ["vrs"] = {"Varisi"}, ["vrt"] = {"Burmbar", "Banam Bay"}, ["vsi"] = {"Moldova Sign Language"}, ["vsl"] = {"Venezuelan Sign Language"}, ["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"}, ["vto"] = {"Vitou"}, ["vum"] = {"Vumbu"}, ["vun"] = {"Vunjo"}, ["vut"] = {"Vute"}, ["vwa"] = {"Awa (China)"}, ["waa"] = {"Walla Walla"}, ["wab"] = {"Wab"}, ["wac"] = {"Wasco-Wishram"}, ["wad"] = {"Wamesa", "Wondama"}, ["wae"] = {"Walser"}, ["waf"] = {"Wakoná"}, ["wag"] = {"Wa'ema"}, ["wah"] = {"Watubela"}, ["wai"] = {"Wares"}, ["waj"] = {"Waffa"}, ["wak"] = {"Wakashan languages"}, ["wal"] = {"Wolaytta", "Wolaitta"}, ["wam"] = {"Wampanoag"}, ["wan"] = {"Wan"}, ["wao"] = {"Wappo"}, ["wap"] = {"Wapishana"}, ["waq"] = {"Wagiman"}, ["war"] = {"Waray (Philippines)"}, ["was"] = {"Washo"}, ["wat"] = {"Kaninuwa"}, ["wau"] = {"Waurá"}, ["wav"] = {"Waka"}, ["waw"] = {"Waiwai"}, ["wax"] = {"Watam", "Marangis"}, ["way"] = {"Wayana"}, ["waz"] = {"Wampur"}, ["wba"] = {"Warao"}, ["wbb"] = {"Wabo"}, ["wbe"] = {"Waritai"}, ["wbf"] = {"Wara"}, ["wbh"] = {"Wanda"}, ["wbi"] = {"Vwanji"}, ["wbj"] = {"Alagwa"}, ["wbk"] = {"Waigali"}, ["wbl"] = {"Wakhi"}, ["wbm"] = {"Wa"}, ["wbp"] = {"Warlpiri"}, ["wbq"] = {"Waddar"}, ["wbr"] = {"Wagdi"}, ["wbs"] = {"West Bengal Sign Language"}, ["wbt"] = {"Warnman"}, ["wbv"] = {"Wajarri"}, ["wbw"] = {"Woi"}, ["wca"] = {"Yanomámi"}, ["wci"] = {"Waci Gbe"}, ["wdd"] = {"Wandji"}, ["wdg"] = {"Wadaginam"}, ["wdj"] = {"Wadjiginy"}, ["wdk"] = {"Wadikali"}, ["wdt"] = {"Wendat"}, ["wdu"] = {"Wadjigu"}, ["wdy"] = {"Wadjabangayi"}, ["wea"] = {"Wewaw"}, ["wec"] = {"Wè Western"}, ["wed"] = {"Wedau"}, ["weg"] = {"Wergaia"}, ["weh"] = {"Weh"}, ["wei"] = {"Kiunum"}, ["wem"] = {"Weme Gbe"}, ["wen"] = {"Sorbian languages"}, ["weo"] = {"Wemale"}, ["wep"] = {"Westphalien"}, ["wer"] = {"Weri"}, ["wes"] = {"Cameroon Pidgin"}, ["wet"] = {"Perai"}, ["weu"] = {"Rawngtu Chin"}, ["wew"] = {"Wejewa"}, ["wfg"] = {"Yafi", "Zorop"}, ["wga"] = {"Wagaya"}, ["wgb"] = {"Wagawaga"}, ["wgg"] = {"Wangkangurru", "Wangganguru"}, ["wgi"] = {"Wahgi"}, ["wgo"] = {"Waigeo"}, ["wgu"] = {"Wirangu"}, ["wgy"] = {"Warrgamay"}, ["wha"] = {"Sou Upaa", "Manusela"}, ["whg"] = {"North Wahgi"}, ["whk"] = {"Wahau Kenyah"}, ["whu"] = {"Wahau Kayan"}, ["wib"] = {"Southern Toussian"}, ["wic"] = {"Wichita"}, ["wie"] = {"Wik-Epa"}, ["wif"] = {"Wik-Keyangan"}, ["wig"] = {"Wik Ngathan"}, ["wih"] = {"Wik-Me'anha"}, ["wii"] = {"Minidien"}, ["wij"] = {"Wik-Iiyanh"}, ["wik"] = {"Wikalkan"}, ["wil"] = {"Wilawila"}, ["wim"] = {"Wik-Mungkan"}, ["win"] = {"Ho-Chunk"}, ["wir"] = {"Wiraféd"}, ["wiu"] = {"Wiru"}, ["wiv"] = {"Vitu"}, ["wiy"] = {"Wiyot"}, ["wja"] = {"Waja"}, ["wji"] = {"Warji"}, ["wka"] = {"Kw'adza"}, ["wkb"] = {"Kumbaran"}, ["wkd"] = {"Wakde", "Mo"}, ["wkl"] = {"Kalanadi"}, ["wkr"] = {"Keerray-Woorroong"}, ["wku"] = {"Kunduvadi"}, ["wkw"] = {"Wakawaka"}, ["wky"] = {"Wangkayutyuru"}, ["wla"] = {"Walio"}, ["wlc"] = {"Mwali Comorian"}, ["wle"] = {"Wolane"}, ["wlg"] = {"Kunbarlang"}, ["wlh"] = {"Welaun"}, ["wli"] = {"Waioli"}, ["wlk"] = {"Wailaki"}, ["wll"] = {"Wali (Sudan)"}, ["wlm"] = {"Middle Welsh"}, ["wlo"] = {"Wolio"}, ["wlr"] = {"Wailapa"}, ["wls"] = {"Wallisian"}, ["wlu"] = {"Wuliwuli"}, ["wlv"] = {"Wichí Lhamtés Vejoz"}, ["wlw"] = {"Walak"}, ["wlx"] = {"Wali (Ghana)"}, ["wly"] = {"Waling"}, ["wma"] = {"Mawa (Nigeria)"}, ["wmb"] = {"Wambaya"}, ["wmc"] = {"Wamas"}, ["wmd"] = {"Mamaindé"}, ["wme"] = {"Wambule"}, ["wmg"] = {"Western Minyag"}, ["wmh"] = {"Waima'a"}, ["wmi"] = {"Wamin"}, ["wmm"] = {"Maiwa (Indonesia)"}, ["wmn"] = {"Waamwang"}, ["wmo"] = {"Wom (Papua New Guinea)"}, ["wms"] = {"Wambon"}, ["wmt"] = {"Walmajarri"}, ["wmw"] = {"Mwani"}, ["wmx"] = {"Womo"}, ["wnb"] = {"Mokati"}, ["wnc"] = {"Wantoat"}, ["wnd"] = {"Wandarang"}, ["wne"] = {"Waneci"}, ["wng"] = {"Wanggom"}, ["wni"] = {"Ndzwani Comorian"}, ["wnk"] = {"Wanukaka"}, ["wnm"] = {"Wanggamala"}, ["wnn"] = {"Wunumara"}, ["wno"] = {"Wano"}, ["wnp"] = {"Wanap"}, ["wnu"] = {"Usan"}, ["wnw"] = {"Wintu"}, ["wny"] = {"Wanyi", "Waanyi"}, ["woa"] = {"Kuwema", "Tyaraity"}, ["wob"] = {"Wè Northern"}, ["woc"] = {"Wogeo"}, ["wod"] = {"Wolani"}, ["woe"] = {"Woleaian"}, ["wof"] = {"Gambian Wolof"}, ["wog"] = {"Wogamusin"}, ["woi"] = {"Kamang"}, ["wok"] = {"Longto"}, ["wom"] = {"Wom (Nigeria)"}, ["won"] = {"Wongo"}, ["woo"] = {"Manombai"}, ["wor"] = {"Woria"}, ["wos"] = {"Hanga Hundi"}, ["wow"] = {"Wawonii"}, ["woy"] = {"Weyto"}, ["wpc"] = {"Maco"}, ["wrb"] = {"Waluwarra", "Warluwara"}, ["wrg"] = {"Warungu", "Gudjal"}, ["wrh"] = {"Wiradjuri"}, ["wri"] = {"Wariyangga"}, ["wrk"] = {"Garrwa"}, ["wrl"] = {"Warlmanpa"}, ["wrm"] = {"Warumungu"}, ["wrn"] = {"Warnang"}, ["wro"] = {"Worrorra"}, ["wrp"] = {"Waropen"}, ["wrr"] = {"Wardaman"}, ["wrs"] = {"Waris"}, ["wru"] = {"Waru"}, ["wrv"] = {"Waruna"}, ["wrw"] = {"Gugu Warra"}, ["wrx"] = {"Wae Rana"}, ["wry"] = {"Merwari"}, ["wrz"] = {"Waray (Australia)"}, ["wsa"] = {"Warembori"}, ["wsg"] = {"Adilabad Gondi"}, ["wsi"] = {"Wusi"}, ["wsk"] = {"Waskia"}, ["wsr"] = {"Owenia"}, ["wss"] = {"Wasa"}, ["wsu"] = {"Wasu"}, ["wsv"] = {"Wotapuri-Katarqalai"}, ["wtb"] = {"Matambwe"}, ["wtf"] = {"Watiwa"}, ["wth"] = {"Wathawurrung"}, ["wti"] = {"Berta"}, ["wtk"] = {"Watakataui"}, ["wtm"] = {"Mewati"}, ["wtw"] = {"Wotu"}, ["wua"] = {"Wikngenchera"}, ["wub"] = {"Wunambal"}, ["wud"] = {"Wudu"}, ["wuh"] = {"Wutunhua"}, ["wul"] = {"Silimo"}, ["wum"] = {"Wumbvu"}, ["wun"] = {"Bungu"}, ["wur"] = {"Wurrugu"}, ["wut"] = {"Wutung"}, ["wuu"] = {"Wu Chinese"}, ["wuv"] = {"Wuvulu-Aua"}, ["wux"] = {"Wulna"}, ["wuy"] = {"Wauyai"}, ["wwa"] = {"Waama"}, ["wwb"] = {"Wakabunga"}, ["wwo"] = {"Wetamut", "Dorig"}, ["wwr"] = {"Warrwa"}, ["www"] = {"Wawa"}, ["wxa"] = {"Waxianghua"}, ["wxw"] = {"Wardandi"}, ["wyb"] = {"Wangaaybuwan-Ngiyambaa"}, ["wyi"] = {"Woiwurrung"}, ["wym"] = {"Wymysorys"}, ["wyn"] = {"Wyandot"}, ["wyr"] = {"Wayoró"}, ["wyy"] = {"Western Fijian"}, ["xaa"] = {"Andalusian Arabic"}, ["xab"] = {"Sambe"}, ["xac"] = {"Kachari"}, ["xad"] = {"Adai"}, ["xae"] = {"Aequian"}, ["xag"] = {"Aghwan"}, ["xai"] = {"Kaimbé"}, ["xaj"] = {"Ararandewára"}, ["xak"] = {"Máku"}, ["xal"] = {"Kalmyk", "Oirat"}, ["xam"] = {"ǀXam"}, ["xan"] = {"Xamtanga"}, ["xao"] = {"Khao"}, ["xap"] = {"Apalachee"}, ["xaq"] = {"Aquitanian"}, ["xar"] = {"Karami"}, ["xas"] = {"Kamas"}, ["xat"] = {"Katawixi"}, ["xau"] = {"Kauwera"}, ["xav"] = {"Xavánte"}, ["xaw"] = {"Kawaiisu"}, ["xay"] = {"Kayan Mahakam"}, ["xbb"] = {"Lower Burdekin"}, ["xbc"] = {"Bactrian"}, ["xbd"] = {"Bindal"}, ["xbe"] = {"Bigambal"}, ["xbg"] = {"Bunganditj"}, ["xbi"] = {"Kombio"}, ["xbj"] = {"Birrpayi"}, ["xbm"] = {"Middle Breton"}, ["xbn"] = {"Kenaboi"}, ["xbo"] = {"Bolgarian"}, ["xbp"] = {"Bibbulman"}, ["xbr"] = {"Kambera"}, ["xbw"] = {"Kambiwá"}, ["xby"] = {"Batjala", "Batyala"}, ["xcb"] = {"Cumbric"}, ["xcc"] = {"Camunic"}, ["xce"] = {"Celtiberian"}, ["xcg"] = {"Cisalpine Gaulish"}, ["xch"] = {"Chemakum", "Chimakum"}, ["xcl"] = {"Classical Armenian"}, ["xcm"] = {"Comecrudo"}, ["xcn"] = {"Cotoname"}, ["xco"] = {"Chorasmian"}, ["xcr"] = {"Carian"}, ["xct"] = {"Classical Tibetan"}, ["xcu"] = {"Curonian"}, ["xcv"] = {"Chuvantsy"}, ["xcw"] = {"Coahuilteco"}, ["xcy"] = {"Cayuse"}, ["xda"] = {"Darkinyung"}, ["xdc"] = {"Dacian"}, ["xdk"] = {"Dharuk"}, ["xdm"] = {"Edomite"}, ["xdo"] = {"Kwandu"}, ["xdq"] = {"Kaitag"}, ["xdy"] = {"Malayic Dayak"}, ["xeb"] = {"Eblan"}, ["xed"] = {"Hdi"}, ["xeg"] = {"ǁXegwi"}, ["xel"] = {"Kelo"}, ["xem"] = {"Kembayan"}, ["xep"] = {"Epi-Olmec"}, ["xer"] = {"Xerénte"}, ["xes"] = {"Kesawai"}, ["xet"] = {"Xetá"}, ["xeu"] = {"Keoru-Ahia"}, ["xfa"] = {"Faliscan"}, ["xga"] = {"Galatian"}, ["xgb"] = {"Gbin"}, ["xgd"] = {"Gudang"}, ["xgf"] = {"Gabrielino-Fernandeño"}, ["xgg"] = {"Goreng"}, ["xgi"] = {"Garingbal"}, ["xgl"] = {"Galindan"}, ["xgm"] = {"Dharumbal", "Guwinmal"}, ["xgn"] = {"Mongolian languages"}, ["xgr"] = {"Garza"}, ["xgu"] = {"Unggumi"}, ["xgw"] = {"Guwa"}, ["xha"] = {"Harami"}, ["xhc"] = {"Hunnic"}, ["xhd"] = {"Hadrami"}, ["xhe"] = {"Khetrani"}, ["xhm"] = {"Middle Khmer (1400 to 1850 CE)"}, ["xhr"] = {"Hernican"}, ["xht"] = {"Hattic"}, ["xhu"] = {"Hurrian"}, ["xhv"] = {"Khua"}, ["xib"] = {"Iberian"}, ["xii"] = {"Xiri"}, ["xil"] = {"Illyrian"}, ["xin"] = {"Xinca"}, ["xir"] = {"Xiriâna"}, ["xis"] = {"Kisan"}, ["xiv"] = {"Indus Valley Language"}, ["xiy"] = {"Xipaya"}, ["xjb"] = {"Minjungbal"}, ["xjt"] = {"Jaitmatang"}, ["xka"] = {"Kalkoti"}, ["xkb"] = {"Northern Nago"}, ["xkc"] = {"Kho'ini"}, ["xkd"] = {"Mendalam Kayan"}, ["xke"] = {"Kereho"}, ["xkf"] = {"Khengkha"}, ["xkg"] = {"Kagoro"}, ["xki"] = {"Kenyan Sign Language"}, ["xkj"] = {"Kajali"}, ["xkk"] = {"Kachok", "Kaco'"}, ["xkl"] = {"Mainstream Kenyah"}, ["xkn"] = {"Kayan River Kayan"}, ["xko"] = {"Kiorr"}, ["xkp"] = {"Kabatei"}, ["xkq"] = {"Koroni"}, ["xkr"] = {"Xakriabá"}, ["xks"] = {"Kumbewaha"}, ["xkt"] = {"Kantosi"}, ["xku"] = {"Kaamba"}, ["xkv"] = {"Kgalagadi"}, ["xkw"] = {"Kembra"}, ["xkx"] = {"Karore"}, ["xky"] = {"Uma' Lasan"}, ["xkz"] = {"Kurtokha"}, ["xla"] = {"Kamula"}, ["xlb"] = {"Loup B"}, ["xlc"] = {"Lycian"}, ["xld"] = {"Lydian"}, ["xle"] = {"Lemnian"}, ["xlg"] = {"Ligurian (Ancient)"}, ["xli"] = {"Liburnian"}, ["xln"] = {"Alanic"}, ["xlo"] = {"Loup A"}, ["xlp"] = {"Lepontic"}, ["xls"] = {"Lusitanian"}, ["xlu"] = {"Cuneiform Luwian"}, ["xly"] = {"Elymian"}, ["xma"] = {"Mushungulu"}, ["xmb"] = {"Mbonga"}, ["xmc"] = {"Makhuwa-Marrevone"}, ["xmd"] = {"Mbudum"}, ["xme"] = {"Median"}, ["xmf"] = {"Mingrelian"}, ["xmg"] = {"Mengaka"}, ["xmh"] = {"Kugu-Muminh"}, ["xmj"] = {"Majera"}, ["xmk"] = {"Ancient Macedonian"}, ["xml"] = {"Malaysian Sign Language"}, ["xmm"] = {"Manado Malay"}, ["xmn"] = {"Manichaean Middle Persian"}, ["xmo"] = {"Morerebi"}, ["xmp"] = {"Kuku-Mu'inh"}, ["xmq"] = {"Kuku-Mangk"}, ["xmr"] = {"Meroitic"}, ["xms"] = {"Moroccan Sign Language"}, ["xmt"] = {"Matbat"}, ["xmu"] = {"Kamu"}, ["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"}, ["xmw"] = {"Tsimihety Malagasy"}, ["xmx"] = {"Salawati", "Maden"}, ["xmy"] = {"Mayaguduna"}, ["xmz"] = {"Mori Bawah"}, ["xna"] = {"Ancient North Arabian"}, ["xnb"] = {"Kanakanabu"}, ["xnd"] = {"Na-Dene languages"}, ["xng"] = {"Middle Mongolian"}, ["xnh"] = {"Kuanhua"}, ["xni"] = {"Ngarigu"}, ["xnj"] = {"Ngoni (Tanzania)"}, ["xnk"] = {"Nganakarti"}, ["xnm"] = {"Ngumbarl"}, ["xnn"] = {"Northern Kankanay"}, ["xno"] = {"Anglo-Norman"}, ["xnq"] = {"Ngoni (Mozambique)"}, ["xnr"] = {"Kangri"}, ["xns"] = {"Kanashi"}, ["xnt"] = {"Narragansett"}, ["xnu"] = {"Nukunul"}, ["xny"] = {"Nyiyaparli"}, ["xnz"] = {"Kenzi", "Mattoki"}, ["xoc"] = {"O'chi'chi'"}, ["xod"] = {"Kokoda"}, ["xog"] = {"Soga"}, ["xoi"] = {"Kominimung"}, ["xok"] = {"Xokleng"}, ["xom"] = {"Komo (Sudan)"}, ["xon"] = {"Konkomba"}, ["xoo"] = {"Xukurú"}, ["xop"] = {"Kopar"}, ["xor"] = {"Korubo"}, ["xow"] = {"Kowaki"}, ["xpa"] = {"Pirriya"}, ["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"}, ["xpc"] = {"Pecheneg"}, ["xpd"] = {"Oyster Bay Tasmanian"}, ["xpe"] = {"Liberia Kpelle"}, ["xpf"] = {"Southeast Tasmanian", "Nuenonne"}, ["xpg"] = {"Phrygian"}, ["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"}, ["xpi"] = {"Pictish"}, ["xpj"] = {"Mpalitjanh"}, ["xpk"] = {"Kulina Pano"}, ["xpl"] = {"Port Sorell Tasmanian"}, ["xpm"] = {"Pumpokol"}, ["xpn"] = {"Kapinawá"}, ["xpo"] = {"Pochutec"}, ["xpp"] = {"Puyo-Paekche"}, ["xpq"] = {"Mohegan-Pequot"}, ["xpr"] = {"Parthian"}, ["xps"] = {"Pisidian"}, ["xpt"] = {"Punthamara"}, ["xpu"] = {"Punic"}, ["xpv"] = {"Northern Tasmanian", "Tommeginne"}, ["xpw"] = {"Northwestern Tasmanian", "Peerapper"}, ["xpx"] = {"Southwestern Tasmanian", "Toogee"}, ["xpy"] = {"Puyo"}, ["xpz"] = {"Bruny Island Tasmanian"}, ["xqa"] = {"Karakhanid"}, ["xqt"] = {"Qatabanian"}, ["xra"] = {"Krahô"}, ["xrb"] = {"Eastern Karaboro"}, ["xrd"] = {"Gundungurra"}, ["xre"] = {"Kreye"}, ["xrg"] = {"Minang"}, ["xri"] = {"Krikati-Timbira"}, ["xrm"] = {"Armazic"}, ["xrn"] = {"Arin"}, ["xrr"] = {"Raetic"}, ["xrt"] = {"Aranama-Tamique"}, ["xru"] = {"Marriammu"}, ["xrw"] = {"Karawa"}, ["xsa"] = {"Sabaean"}, ["xsb"] = {"Sambal"}, ["xsc"] = {"Scythian"}, ["xsd"] = {"Sidetic"}, ["xse"] = {"Sempan"}, ["xsh"] = {"Shamang"}, ["xsi"] = {"Sio"}, ["xsj"] = {"Subi"}, ["xsl"] = {"South Slavey"}, ["xsm"] = {"Kasem"}, ["xsn"] = {"Sanga (Nigeria)"}, ["xso"] = {"Solano"}, ["xsp"] = {"Silopi"}, ["xsq"] = {"Makhuwa-Saka"}, ["xsr"] = {"Sherpa"}, ["xsu"] = {"Sanumá"}, ["xsv"] = {"Sudovian"}, ["xsy"] = {"Saisiyat"}, ["xta"] = {"Alcozauca Mixtec"}, ["xtb"] = {"Chazumba Mixtec"}, ["xtc"] = {"Katcha-Kadugli-Miri"}, ["xtd"] = {"Diuxi-Tilantongo Mixtec"}, ["xte"] = {"Ketengban"}, ["xtg"] = {"Transalpine Gaulish"}, ["xth"] = {"Yitha Yitha"}, ["xti"] = {"Sinicahua Mixtec"}, ["xtj"] = {"San Juan Teita Mixtec"}, ["xtl"] = {"Tijaltepec Mixtec"}, ["xtm"] = {"Magdalena Peñasco Mixtec"}, ["xtn"] = {"Northern Tlaxiaco Mixtec"}, ["xto"] = {"Tokharian A"}, ["xtp"] = {"San Miguel Piedras Mixtec"}, ["xtq"] = {"Tumshuqese"}, ["xtr"] = {"Early Tripuri"}, ["xts"] = {"Sindihui Mixtec"}, ["xtt"] = {"Tacahua Mixtec"}, ["xtu"] = {"Cuyamecalco Mixtec"}, ["xtv"] = {"Thawa"}, ["xtw"] = {"Tawandê"}, ["xty"] = {"Yoloxochitl Mixtec"}, ["xua"] = {"Alu Kurumba"}, ["xub"] = {"Betta Kurumba"}, ["xud"] = {"Umiida"}, ["xug"] = {"Kunigami"}, ["xuj"] = {"Jennu Kurumba"}, ["xul"] = {"Ngunawal", "Nunukul"}, ["xum"] = {"Umbrian"}, ["xun"] = {"Unggaranggu"}, ["xuo"] = {"Kuo"}, ["xup"] = {"Upper Umpqua"}, ["xur"] = {"Urartian"}, ["xut"] = {"Kuthant"}, ["xuu"] = {"Kxoe", "Khwedam"}, ["xve"] = {"Venetic"}, ["xvi"] = {"Kamviri"}, ["xvn"] = {"Vandalic"}, ["xvo"] = {"Volscian"}, ["xvs"] = {"Vestinian"}, ["xwa"] = {"Kwaza"}, ["xwc"] = {"Woccon"}, ["xwd"] = {"Wadi Wadi"}, ["xwe"] = {"Xwela Gbe"}, ["xwg"] = {"Kwegu"}, ["xwj"] = {"Wajuk"}, ["xwk"] = {"Wangkumara"}, ["xwl"] = {"Western Xwla Gbe"}, ["xwo"] = {"Written Oirat"}, ["xwr"] = {"Kwerba Mamberamo"}, ["xwt"] = {"Wotjobaluk"}, ["xww"] = {"Wemba Wemba"}, ["xxb"] = {"Boro (Ghana)"}, ["xxk"] = {"Ke'o"}, ["xxm"] = {"Minkin"}, ["xxr"] = {"Koropó"}, ["xxt"] = {"Tambora"}, ["xya"] = {"Yaygir"}, ["xyb"] = {"Yandjibara"}, ["xyj"] = {"Mayi-Yapi"}, ["xyk"] = {"Mayi-Kulan"}, ["xyl"] = {"Yalakalore"}, ["xyt"] = {"Mayi-Thakurti"}, ["xyy"] = {"Yorta Yorta"}, ["xzh"] = {"Zhang-Zhung"}, ["xzm"] = {"Zemgalian"}, ["xzp"] = {"Ancient Zapotec"}, ["yaa"] = {"Yaminahua"}, ["yab"] = {"Yuhup"}, ["yac"] = {"Pass Valley Yali"}, ["yad"] = {"Yagua"}, ["yae"] = {"Pumé"}, ["yaf"] = {"Yaka (Democratic Republic of Congo)"}, ["yag"] = {"Yámana"}, ["yah"] = {"Yazgulyam"}, ["yai"] = {"Yagnobi"}, ["yaj"] = {"Banda-Yangere"}, ["yak"] = {"Yakama"}, ["yal"] = {"Yalunka"}, ["yam"] = {"Yamba"}, ["yan"] = {"Mayangna"}, ["yao"] = {"Yao"}, ["yap"] = {"Yapese"}, ["yaq"] = {"Yaqui"}, ["yar"] = {"Yabarana"}, ["yas"] = {"Nugunu (Cameroon)"}, ["yat"] = {"Yambeta"}, ["yau"] = {"Yuwana"}, ["yav"] = {"Yangben"}, ["yaw"] = {"Yawalapití"}, ["yax"] = {"Yauma"}, ["yay"] = {"Agwagwune"}, ["yaz"] = {"Lokaa"}, ["yba"] = {"Yala"}, ["ybb"] = {"Yemba"}, ["ybe"] = {"West Yugur"}, ["ybh"] = {"Yakha"}, ["ybi"] = {"Yamphu"}, ["ybj"] = {"Hasha"}, ["ybk"] = {"Bokha"}, ["ybl"] = {"Yukuben"}, ["ybm"] = {"Yaben"}, ["ybn"] = {"Yabaâna"}, ["ybo"] = {"Yabong"}, ["ybx"] = {"Yawiyo"}, ["yby"] = {"Yaweyuha"}, ["ych"] = {"Chesu"}, ["ycl"] = {"Lolopo"}, ["ycn"] = {"Yucuna"}, ["ycp"] = {"Chepya"}, ["ycr"] = {"Yilan Creole"}, ["yda"] = {"Yanda"}, ["ydd"] = {"Eastern Yiddish"}, ["yde"] = {"Yangum Dey"}, ["ydg"] = {"Yidgha"}, ["ydk"] = {"Yoidik"}, ["yea"] = {"Ravula"}, ["yec"] = {"Yeniche"}, ["yee"] = {"Yimas"}, ["yei"] = {"Yeni"}, ["yej"] = {"Yevanic"}, ["yel"] = {"Yela"}, ["yer"] = {"Tarok"}, ["yes"] = {"Nyankpa"}, ["yet"] = {"Yetfa"}, ["yeu"] = {"Yerukula"}, ["yev"] = {"Yapunda"}, ["yey"] = {"Yeyi"}, ["yga"] = {"Malyangapa"}, ["ygi"] = {"Yiningayi"}, ["ygl"] = {"Yangum Gel"}, ["ygm"] = {"Yagomi"}, ["ygp"] = {"Gepo"}, ["ygr"] = {"Yagaria"}, ["ygs"] = {"Yolŋu Sign Language"}, ["ygu"] = {"Yugul"}, ["ygw"] = {"Yagwoia"}, ["yha"] = {"Baha Buyang"}, ["yhd"] = {"Judeo-Iraqi Arabic"}, ["yhl"] = {"Hlepho Phowa"}, ["yhs"] = {"Yan-nhaŋu Sign Language"}, ["yia"] = {"Yinggarda"}, ["yif"] = {"Ache"}, ["yig"] = {"Wusa Nasu"}, ["yih"] = {"Western Yiddish"}, ["yii"] = {"Yidiny"}, ["yij"] = {"Yindjibarndi"}, ["yik"] = {"Dongshanba Lalo"}, ["yil"] = {"Yindjilandji"}, ["yim"] = {"Yimchungru Naga"}, ["yin"] = {"Riang Lai", "Yinchia"}, ["yip"] = {"Pholo"}, ["yiq"] = {"Miqie"}, ["yir"] = {"North Awyu"}, ["yis"] = {"Yis"}, ["yit"] = {"Eastern Lalu"}, ["yiu"] = {"Awu"}, ["yiv"] = {"Northern Nisu"}, ["yix"] = {"Axi Yi"}, ["yiz"] = {"Azhe"}, ["yka"] = {"Yakan"}, ["ykg"] = {"Northern Yukaghir"}, ["ykh"] = {"Khamnigan Mongol"}, ["yki"] = {"Yoke"}, ["ykk"] = {"Yakaikeke"}, ["ykl"] = {"Khlula"}, ["ykm"] = {"Kap"}, ["ykn"] = {"Kua-nsi"}, ["yko"] = {"Yasa"}, ["ykr"] = {"Yekora"}, ["ykt"] = {"Kathu"}, ["yku"] = {"Kuamasi"}, ["yky"] = {"Yakoma"}, ["yla"] = {"Yaul"}, ["ylb"] = {"Yaleba"}, ["yle"] = {"Yele"}, ["ylg"] = {"Yelogu"}, ["yli"] = {"Angguruk Yali"}, ["yll"] = {"Yil"}, ["ylm"] = {"Limi"}, ["yln"] = {"Langnian Buyang"}, ["ylo"] = {"Naluo Yi"}, ["ylr"] = {"Yalarnnga"}, ["ylu"] = {"Aribwaung"}, ["yly"] = {"Nyâlayu", "Nyelâyu"}, ["ymb"] = {"Yambes"}, ["ymc"] = {"Southern Muji"}, ["ymd"] = {"Muda"}, ["yme"] = {"Yameo"}, ["ymg"] = {"Yamongeri"}, ["ymh"] = {"Mili"}, ["ymi"] = {"Moji"}, ["ymk"] = {"Makwe"}, ["yml"] = {"Iamalele"}, ["ymm"] = {"Maay"}, ["ymn"] = {"Yamna", "Sunum"}, ["ymo"] = {"Yangum Mon"}, ["ymp"] = {"Yamap"}, ["ymq"] = {"Qila Muji"}, ["ymr"] = {"Malasar"}, ["yms"] = {"Mysian"}, ["ymx"] = {"Northern Muji"}, ["ymz"] = {"Muzi"}, ["yna"] = {"Aluo"}, ["ynd"] = {"Yandruwandha"}, ["yne"] = {"Lang'e"}, ["yng"] = {"Yango"}, ["ynk"] = {"Naukan Yupik"}, ["ynl"] = {"Yangulam"}, ["ynn"] = {"Yana"}, ["yno"] = {"Yong"}, ["ynq"] = {"Yendang"}, ["yns"] = {"Yansi"}, ["ynu"] = {"Yahuna"}, ["yob"] = {"Yoba"}, ["yog"] = {"Yogad"}, ["yoi"] = {"Yonaguni"}, ["yok"] = {"Yokuts"}, ["yol"] = {"Yola"}, ["yom"] = {"Yombe"}, ["yon"] = {"Yongkom"}, ["yot"] = {"Yotti"}, ["yox"] = {"Yoron"}, ["yoy"] = {"Yoy"}, ["ypa"] = {"Phala"}, ["ypb"] = {"Labo Phowa"}, ["ypg"] = {"Phola"}, ["yph"] = {"Phupha"}, ["ypk"] = {"Yupik languages"}, ["ypm"] = {"Phuma"}, ["ypn"] = {"Ani Phowa"}, ["ypo"] = {"Alo Phola"}, ["ypp"] = {"Phupa"}, ["ypz"] = {"Phuza"}, ["yra"] = {"Yerakai"}, ["yrb"] = {"Yareba"}, ["yre"] = {"Yaouré"}, ["yrk"] = {"Nenets"}, ["yrl"] = {"Nhengatu"}, ["yrm"] = {"Yirrk-Mel"}, ["yrn"] = {"Yerong"}, ["yro"] = {"Yaroamë"}, ["yrs"] = {"Yarsun"}, ["yrw"] = {"Yarawata"}, ["yry"] = {"Yarluyandi"}, ["ysc"] = {"Yassic"}, ["ysd"] = {"Samatao"}, ["ysg"] = {"Sonaga"}, ["ysl"] = {"Yugoslavian Sign Language"}, ["ysm"] = {"Myanmar Sign Language"}, ["ysn"] = {"Sani"}, ["yso"] = {"Nisi (China)"}, ["ysp"] = {"Southern Lolopo"}, ["ysr"] = {"Sirenik Yupik"}, ["yss"] = {"Yessan-Mayo"}, ["ysy"] = {"Sanie"}, ["yta"] = {"Talu"}, ["ytl"] = {"Tanglang"}, ["ytp"] = {"Thopho"}, ["ytw"] = {"Yout Wam"}, ["yty"] = {"Yatay"}, ["yua"] = {"Yucateco", "Yucatec Maya"}, ["yub"] = {"Yugambal"}, ["yuc"] = {"Yuchi"}, ["yud"] = {"Judeo-Tripolitanian Arabic"}, ["yue"] = {"Yue Chinese", "Cantonese"}, ["yuf"] = {"Havasupai-Walapai-Yavapai"}, ["yug"] = {"Yug"}, ["yui"] = {"Yurutí"}, ["yuj"] = {"Karkar-Yuri"}, ["yuk"] = {"Yuki"}, ["yul"] = {"Yulu"}, ["yum"] = {"Quechan"}, ["yun"] = {"Bena (Nigeria)"}, ["yup"] = {"Yukpa"}, ["yuq"] = {"Yuqui"}, ["yur"] = {"Yurok"}, ["yut"] = {"Yopno"}, ["yuw"] = {"Yau (Morobe Province)"}, ["yux"] = {"Southern Yukaghir"}, ["yuy"] = {"East Yugur"}, ["yuz"] = {"Yuracare"}, ["yva"] = {"Yawa"}, ["yvt"] = {"Yavitero"}, ["ywa"] = {"Kalou"}, ["ywg"] = {"Yinhawangka"}, ["ywl"] = {"Western Lalu"}, ["ywn"] = {"Yawanawa"}, ["ywq"] = {"Wuding-Luquan Yi"}, ["ywr"] = {"Yawuru"}, ["ywt"] = {"Xishanba Lalo", "Central Lalo"}, ["ywu"] = {"Wumeng Nasu"}, ["yww"] = {"Yawarawarga"}, ["yxa"] = {"Mayawali"}, ["yxg"] = {"Yagara"}, ["yxl"] = {"Yardliyawarra"}, ["yxm"] = {"Yinwum"}, ["yxu"] = {"Yuyu"}, ["yxy"] = {"Yabula Yabula"}, ["yyr"] = {"Yir Yoront"}, ["yyu"] = {"Yau (Sandaun Province)"}, ["yyz"] = {"Ayizi"}, ["yzg"] = {"E'ma Buyang"}, ["yzk"] = {"Zokhuo"}, ["zaa"] = {"Sierra de Juárez Zapotec"}, ["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"}, ["zac"] = {"Ocotlán Zapotec"}, ["zad"] = {"Cajonos Zapotec"}, ["zae"] = {"Yareni Zapotec"}, ["zaf"] = {"Ayoquesco Zapotec"}, ["zag"] = {"Zaghawa"}, ["zah"] = {"Zangwal"}, ["zai"] = {"Isthmus Zapotec"}, ["zaj"] = {"Zaramo"}, ["zak"] = {"Zanaki"}, ["zal"] = {"Zauzou"}, ["zam"] = {"Miahuatlán Zapotec"}, ["zao"] = {"Ozolotepec Zapotec"}, ["zap"] = {"Zapotec"}, ["zaq"] = {"Aloápam Zapotec"}, ["zar"] = {"Rincón Zapotec"}, ["zas"] = {"Santo Domingo Albarradas Zapotec"}, ["zat"] = {"Tabaa Zapotec"}, ["zau"] = {"Zangskari"}, ["zav"] = {"Yatzachi Zapotec"}, ["zaw"] = {"Mitla Zapotec"}, ["zax"] = {"Xadani Zapotec"}, ["zay"] = {"Zayse-Zergulla", "Zaysete"}, ["zaz"] = {"Zari"}, ["zba"] = {"Balaibalan"}, ["zbc"] = {"Central Berawan"}, ["zbe"] = {"East Berawan"}, ["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"}, ["zbt"] = {"Batui"}, ["zbu"] = {"Bu (Bauchi State)"}, ["zbw"] = {"West Berawan"}, ["zca"] = {"Coatecas Altas Zapotec"}, ["zcd"] = {"Las Delicias Zapotec"}, ["zch"] = {"Central Hongshuihe Zhuang"}, ["zdj"] = {"Ngazidja Comorian"}, ["zea"] = {"Zeeuws"}, ["zeg"] = {"Zenag"}, ["zeh"] = {"Eastern Hongshuihe Zhuang"}, ["zem"] = {"Zeem"}, ["zen"] = {"Zenaga"}, ["zga"] = {"Kinga"}, ["zgb"] = {"Guibei Zhuang"}, ["zgh"] = {"Standard Moroccan Tamazight"}, ["zgm"] = {"Minz Zhuang"}, ["zgn"] = {"Guibian Zhuang"}, ["zgr"] = {"Magori"}, ["zhb"] = {"Zhaba"}, ["zhd"] = {"Dai Zhuang"}, ["zhi"] = {"Zhire"}, ["zhn"] = {"Nong Zhuang"}, ["zhw"] = {"Zhoa"}, ["zhx"] = {"Chinese (family)"}, ["zia"] = {"Zia"}, ["zib"] = {"Zimbabwe Sign Language"}, ["zik"] = {"Zimakani"}, ["zil"] = {"Zialo"}, ["zim"] = {"Mesme"}, ["zin"] = {"Zinza"}, ["ziw"] = {"Zigula"}, ["ziz"] = {"Zizilivakan"}, ["zka"] = {"Kaimbulawa"}, ["zkd"] = {"Kadu"}, ["zkg"] = {"Koguryo"}, ["zkh"] = {"Khorezmian"}, ["zkk"] = {"Karankawa"}, ["zkn"] = {"Kanan"}, ["zko"] = {"Kott"}, ["zkp"] = {"São Paulo Kaingáng"}, ["zkr"] = {"Zakhring"}, ["zkt"] = {"Kitan"}, ["zku"] = {"Kaurna"}, ["zkv"] = {"Krevinian"}, ["zkz"] = {"Khazar"}, ["zla"] = {"Zula"}, ["zle"] = {"East Slavic languages"}, ["zlj"] = {"Liujiang Zhuang"}, ["zlm"] = {"Malay (individual language)"}, ["zln"] = {"Lianshan Zhuang"}, ["zlq"] = {"Liuqian Zhuang"}, ["zls"] = {"South Slavic languages"}, ["zlu"] = {"Zul"}, ["zlw"] = {"West Slavic languages"}, ["zma"] = {"Manda (Australia)"}, ["zmb"] = {"Zimba"}, ["zmc"] = {"Margany"}, ["zmd"] = {"Maridan"}, ["zme"] = {"Mangerr"}, ["zmf"] = {"Mfinu"}, ["zmg"] = {"Marti Ke"}, ["zmh"] = {"Makolkol"}, ["zmi"] = {"Negeri Sembilan Malay"}, ["zmj"] = {"Maridjabin"}, ["zmk"] = {"Mandandanyi"}, ["zml"] = {"Matngala"}, ["zmm"] = {"Marimanindji", "Marramaninyshi"}, ["zmn"] = {"Mbangwe"}, ["zmo"] = {"Molo"}, ["zmp"] = {"Mpuono"}, ["zmq"] = {"Mituku"}, ["zmr"] = {"Maranunggu"}, ["zms"] = {"Mbesa"}, ["zmt"] = {"Maringarr"}, ["zmu"] = {"Muruwari"}, ["zmv"] = {"Mbariman-Gudhinma"}, ["zmw"] = {"Mbo (Democratic Republic of Congo)"}, ["zmx"] = {"Bomitaba"}, ["zmy"] = {"Mariyedi"}, ["zmz"] = {"Mbandja"}, ["zna"] = {"Zan Gula"}, ["znd"] = {"Zande languages"}, ["zne"] = {"Zande (individual language)"}, ["zng"] = {"Mang"}, ["znk"] = {"Manangkari"}, ["zns"] = {"Mangas"}, ["zoc"] = {"Copainalá Zoque"}, ["zoh"] = {"Chimalapa Zoque"}, ["zom"] = {"Zou"}, ["zoo"] = {"Asunción Mixtepec Zapotec"}, ["zoq"] = {"Tabasco Zoque"}, ["zor"] = {"Rayón Zoque"}, ["zos"] = {"Francisco León Zoque"}, ["zpa"] = {"Lachiguiri Zapotec"}, ["zpb"] = {"Yautepec Zapotec"}, ["zpc"] = {"Choapan Zapotec"}, ["zpd"] = {"Southeastern Ixtlán Zapotec"}, ["zpe"] = {"Petapa Zapotec"}, ["zpf"] = {"San Pedro Quiatoni Zapotec"}, ["zpg"] = {"Guevea De Humboldt Zapotec"}, ["zph"] = {"Totomachapan Zapotec"}, ["zpi"] = {"Santa María Quiegolani Zapotec"}, ["zpj"] = {"Quiavicuzas Zapotec"}, ["zpk"] = {"Tlacolulita Zapotec"}, ["zpl"] = {"Lachixío Zapotec"}, ["zpm"] = {"Mixtepec Zapotec"}, ["zpn"] = {"Santa Inés Yatzechi Zapotec"}, ["zpo"] = {"Amatlán Zapotec"}, ["zpp"] = {"El Alto Zapotec"}, ["zpq"] = {"Zoogocho Zapotec"}, ["zpr"] = {"Santiago Xanica Zapotec"}, ["zps"] = {"Coatlán Zapotec"}, ["zpt"] = {"San Vicente Coatlán Zapotec"}, ["zpu"] = {"Yalálag Zapotec"}, ["zpv"] = {"Chichicapan Zapotec"}, ["zpw"] = {"Zaniza Zapotec"}, ["zpx"] = {"San Baltazar Loxicha Zapotec"}, ["zpy"] = {"Mazaltepec Zapotec"}, ["zpz"] = {"Texmelucan Zapotec"}, ["zqe"] = {"Qiubei Zhuang"}, ["zra"] = {"Kara (Korea)"}, ["zrg"] = {"Mirgan"}, ["zrn"] = {"Zerenkel"}, ["zro"] = {"Záparo"}, ["zrp"] = {"Zarphatic"}, ["zrs"] = {"Mairasi"}, ["zsa"] = {"Sarasira"}, ["zsk"] = {"Kaskean"}, ["zsl"] = {"Zambian Sign Language"}, ["zsm"] = {"Standard Malay"}, ["zsr"] = {"Southern Rincon Zapotec"}, ["zsu"] = {"Sukurum"}, ["zte"] = {"Elotepec Zapotec"}, ["ztg"] = {"Xanaguía Zapotec"}, ["ztl"] = {"Lapaguía-Guivini Zapotec"}, ["ztm"] = {"San Agustín Mixtepec Zapotec"}, ["ztn"] = {"Santa Catarina Albarradas Zapotec"}, ["ztp"] = {"Loxicha Zapotec"}, ["ztq"] = {"Quioquitani-Quierí Zapotec"}, ["zts"] = {"Tilquiapan Zapotec"}, ["ztt"] = {"Tejalapan Zapotec"}, ["ztu"] = {"Güilá Zapotec"}, ["ztx"] = {"Zaachila Zapotec"}, ["zty"] = {"Yatee Zapotec"}, ["zuh"] = {"Tokano"}, ["zum"] = {"Kumzari"}, ["zun"] = {"Zuni"}, ["zuy"] = {"Zumaya"}, ["zwa"] = {"Zay"}, ["zxx"] = {"No linguistic content", "Not applicable"}, ["zyb"] = {"Yongbei Zhuang"}, ["zyg"] = {"Yang Zhuang"}, ["zyj"] = {"Youjiang Zhuang"}, ["zyn"] = {"Yongnan Zhuang"}, ["zyp"] = {"Zyphe Chin"}, ["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"}, ["zzj"] = {"Zuojiang Zhuang"} } local deprecated = { ["in"] = {"Indonesian"}, ["iw"] = {"Hebrew"}, ["ji"] = {"Yiddish"}, ["jw"] = {"Javanese"}, ["mo"] = {"Moldavian", "Moldovan"}, ["aam"] = {"Aramanik"}, ["adp"] = {"Adap"}, ["agp"] = {"Paranan"}, ["ais"] = {"Nataoran Amis"}, ["ajp"] = {"South Levantine Arabic"}, ["ajt"] = {"Judeo-Tunisian Arabic"}, ["aoh"] = {"Arma"}, ["asd"] = {"Asas"}, ["aue"] = {"ǂKxʼauǁʼein"}, ["ayx"] = {"Ayi (China)"}, ["ayy"] = {"Tayabas Ayta"}, ["baz"] = {"Tunen"}, ["bbz"] = {"Babalia Creole Arabic"}, ["bgm"] = {"Baga Mboteni"}, ["bhk"] = {"Albay Bicolano"}, ["bic"] = {"Bikaru"}, ["bij"] = {"Vaghat-Ya-Bijim-Legeri"}, ["bjd"] = {"Bandjigali"}, ["bjq"] = {"Southern Betsimisaraka Malagasy"}, ["bkb"] = {"Finallig"}, ["blg"] = {"Balau"}, ["bmy"] = {"Bemba (Democratic Republic of Congo)"}, ["bpb"] = {"Barbacoas"}, ["btb"] = {"Beti (Cameroon)"}, ["btl"] = {"Bhatola"}, ["bxx"] = {"Borna (Democratic Republic of Congo)"}, ["byy"] = {"Buya"}, ["cbe"] = {"Chipiajes"}, ["cbh"] = {"Cagua"}, ["cca"] = {"Cauca"}, ["ccq"] = {"Chaungtha"}, ["cdg"] = {"Chamari"}, ["cjr"] = {"Chorotega"}, ["cka"] = {"Khumi Awa Chin"}, ["cmk"] = {"Chimakum"}, ["coy"] = {"Coyaima"}, ["cqu"] = {"Chilean Quechua"}, ["cug"] = {"Chungmboko", "Cung"}, ["cum"] = {"Cumeral"}, ["daf"] = {"Dan"}, ["dap"] = {"Nisi (India)"}, ["dgu"] = {"Degaru"}, ["dha"] = {"Dhanwar (India)"}, ["dit"] = {"Dirari"}, ["djl"] = {"Djiwarli"}, ["dkl"] = {"Kolum So Dogon"}, ["drh"] = {"Darkhat"}, ["drr"] = {"Dororo"}, ["drw"] = {"Darwazi"}, ["dud"] = {"Hun-Saare"}, ["duj"] = {"Dhuwal"}, ["dwl"] = {"Walo Kumbe Dogon"}, ["ekc"] = {"Eastern Karnic"}, ["elp"] = {"Elpaputih"}, ["emo"] = {"Emok"}, ["gav"] = {"Gabutamon"}, ["gbc"] = {"Garawa"}, ["gfx"] = {"Mangetti Dune ǃXung"}, ["ggn"] = {"Eastern Gurung"}, ["ggo"] = {"Southern Gondi"}, ["ggr"] = {"Aghu Tharnggalu"}, ["gio"] = {"Gelao"}, ["gji"] = {"Geji"}, ["gli"] = {"Guliguli"}, ["gti"] = {"Gbati-ri"}, ["guv"] = {"Gey"}, ["hrr"] = {"Horuru"}, ["iap"] = {"Iapama"}, ["ibi"] = {"Ibilo"}, ["ill"] = {"Iranun"}, ["ilw"] = {"Talur"}, ["ime"] = {"Imeraguen"}, ["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"}, ["jar"] = {"Jarawa (Nigeria)"}, ["jeg"] = {"Jeng"}, ["kbf"] = {"Kakauhua"}, ["kdv"] = {"Kado"}, ["kgc"] = {"Kasseng"}, ["kgd"] = {"Kataang"}, ["kgh"] = {"Upper Tanudan Kalinga"}, ["kgm"] = {"Karipúna"}, ["kjf"] = {"Khalaj [Indo-Iranian]"}, ["koj"] = {"Sara Dunjo"}, ["kox"] = {"Coxima"}, ["kpp"] = {"Paku Karen"}, ["krm"] = {"Krim"}, ["ksa"] = {"Shuwa-Zamani"}, ["ktr"] = {"Kota Marudu Tinagas"}, ["kvs"] = {"Kunggara"}, ["kwq"] = {"Kwak"}, ["kxe"] = {"Kakihum"}, ["kxl"] = {"Nepali Kurux"}, ["kxu"] = {"Kui (India)"}, ["kzh"] = {"Kenuzi-Dongola"}, ["kzj"] = {"Coastal Kadazan"}, ["kzt"] = {"Tambunan Dusun"}, ["lak"] = {"Laka (Nigeria)"}, ["lba"] = {"Lui"}, ["leg"] = {"Lengua"}, ["lii"] = {"Lingkhim"}, ["llo"] = {"Khlor"}, ["lmm"] = {"Lamam"}, ["lmz"] = {"Lumbee"}, ["lno"] = {"Lango (South Sudan)"}, ["lsg"] = {"Lyons Sign Language"}, ["meg"] = {"Mea"}, ["mgx"] = {"Omati"}, ["mhh"] = {"Maskoy Pidgin"}, ["mja"] = {"Mahei"}, ["mld"] = {"Malakhel"}, ["mnt"] = {"Maykulan"}, ["mof"] = {"Mohegan-Montauk-Narragansett"}, ["mst"] = {"Cataelano Mandaya"}, ["mvm"] = {"Muya"}, ["mwd"] = {"Mudbura"}, ["mwj"] = {"Maligo"}, ["mwx"] = {"Mediak"}, ["mwy"] = {"Mosiro"}, ["myd"] = {"Maramba"}, ["myi"] = {"Mina (India)"}, ["myq"] = {"Forest Maninka"}, ["myt"] = {"Sangab Mandaya"}, ["nad"] = {"Nijadali"}, ["nbf"] = {"Naxi"}, ["nbx"] = {"Ngura"}, ["ncp"] = {"Ndaktup"}, ["ngo"] = {"Ngoni"}, ["nln"] = {"Durango Nahuatl"}, ["nlr"] = {"Ngarla"}, ["nns"] = {"Ningye"}, ["nnx"] = {"Ngong"}, ["nom"] = {"Nocamán"}, ["noo"] = {"Nootka"}, ["nts"] = {"Natagaimas"}, ["nxu"] = {"Narau"}, ["ome"] = {"Omejes"}, ["oun"] = {"ǃOǃung"}, ["pat"] = {"Papitalai"}, ["pbz"] = {"Palu"}, ["pcr"] = {"Panang"}, ["pgy"] = {"Pongyong"}, ["pii"] = {"Pini"}, ["plj"] = {"Polci"}, ["plp"] = {"Palpa"}, ["pmc"] = {"Palumata"}, ["pmk"] = {"Pamlico"}, ["pmu"] = {"Mirpur Panjabi"}, ["pod"] = {"Ponares"}, ["ppa"] = {"Pao"}, ["ppr"] = {"Piru"}, ["prb"] = {"Lua'"}, ["prp"] = {"Parsi"}, ["pry"] = {"Pray 3"}, ["puk"] = {"Pu Ko"}, ["puz"] = {"Purum Naga"}, ["rie"] = {"Rien"}, ["rmr"] = {"Caló"}, ["rna"] = {"Runa"}, ["rsi"] = {"Rennellese Sign Language"}, ["sap"] = {"Sanapaná"}, ["sca"] = {"Sansu"}, ["sdm"] = {"Semandang"}, ["sgl"] = {"Sanglechi-Ishkashimi"}, ["sgo"] = {"Songa"}, ["skk"] = {"Sok"}, ["slq"] = {"Salchuq"}, ["smd"] = {"Sama"}, ["snb"] = {"Sebuyau"}, ["snh"] = {"Shinabo"}, ["sul"] = {"Surigaonon"}, ["sum"] = {"Sumo-Mayangna"}, ["svr"] = {"Savara"}, ["szd"] = {"Seru"}, ["tbb"] = {"Tapeba"}, ["tdu"] = {"Tempasuk Dusun"}, ["tgg"] = {"Tangga"}, ["thc"] = {"Tai Hang Tong"}, ["thw"] = {"Thudam"}, ["thx"] = {"The"}, ["tid"] = {"Tidong"}, ["tie"] = {"Tingal"}, ["tkk"] = {"Takpa"}, ["tlw"] = {"South Wemale"}, ["tmk"] = {"Northwestern Tamang"}, ["tmp"] = {"Tai Mène"}, ["tne"] = {"Tinoc Kallahan"}, ["tnf"] = {"Tangshewi"}, ["toe"] = {"Tomedes"}, ["tpw"] = {"Tupí"}, ["tsf"] = {"Southwestern Tamang"}, ["unp"] = {"Worora"}, ["uok"] = {"Uokha"}, ["uun"] = {"Kulon-Pazeh"}, ["vki"] = {"Ija-Zuba"}, ["wgw"] = {"Wagawaga"}, ["wit"] = {"Wintu"}, ["wiw"] = {"Wirangu"}, ["wra"] = {"Warapu"}, ["wrd"] = {"Warduji"}, ["wya"] = {"Wyandot"}, ["xba"] = {"Kamba (Brazil)"}, ["xbx"] = {"Kabixí"}, ["xia"] = {"Xiandao"}, ["xip"] = {"Xipináwa"}, ["xkh"] = {"Karahawyana"}, ["xrq"] = {"Karranga"}, ["xss"] = {"Assan"}, ["xtz"] = {"Tasmanian"}, ["ybd"] = {"Yangbye"}, ["yds"] = {"Yiddish Sign Language"}, ["yen"] = {"Yendang"}, ["yiy"] = {"Yir Yoront"}, ["yma"] = {"Yamphe"}, ["ymt"] = {"Mator-Taygi-Karagas"}, ["ynh"] = {"Yangho"}, ["yos"] = {"Yos"}, ["yri"] = {"Yarí"}, ["yuu"] = {"Yugh"}, ["zir"] = {"Ziriya"}, ["zkb"] = {"Koibal"}, ["zua"] = {"Zeem"} } return { active = active, deprecated = deprecated, } 7e8fcbc627dace0b48345e47103fa5243cc7add3 Module:Language/data/iana scripts 828 470 3135 1038 2023-11-03T15:39:55Z wikipedia>Trappist the monk 0 update to 2023-10-16 data; Scribunto text/plain -- File-Date: 2023-10-16 return { ["Adlm"] = {"Adlam"}, ["Afak"] = {"Afaka"}, ["Aghb"] = {"Caucasian Albanian"}, ["Ahom"] = {"Ahom", "Tai Ahom"}, ["Arab"] = {"Arabic"}, ["Aran"] = {"Arabic (Nastaliq variant)"}, ["Armi"] = {"Imperial Aramaic"}, ["Armn"] = {"Armenian"}, ["Avst"] = {"Avestan"}, ["Bali"] = {"Balinese"}, ["Bamu"] = {"Bamum"}, ["Bass"] = {"Bassa Vah"}, ["Batk"] = {"Batak"}, ["Beng"] = {"Bengali", "Bangla"}, ["Bhks"] = {"Bhaiksuki"}, ["Blis"] = {"Blissymbols"}, ["Bopo"] = {"Bopomofo"}, ["Brah"] = {"Brahmi"}, ["Brai"] = {"Braille"}, ["Bugi"] = {"Buginese"}, ["Buhd"] = {"Buhid"}, ["Cakm"] = {"Chakma"}, ["Cans"] = {"Unified Canadian Aboriginal Syllabics"}, ["Cari"] = {"Carian"}, ["Cham"] = {"Cham"}, ["Cher"] = {"Cherokee"}, ["Chis"] = {"Chisoi"}, ["Chrs"] = {"Chorasmian"}, ["Cirt"] = {"Cirth"}, ["Copt"] = {"Coptic"}, ["Cpmn"] = {"Cypro-Minoan"}, ["Cprt"] = {"Cypriot syllabary"}, ["Cyrl"] = {"Cyrillic"}, ["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"}, ["Deva"] = {"Devanagari", "Nagari"}, ["Diak"] = {"Dives Akuru"}, ["Dogr"] = {"Dogra"}, ["Dsrt"] = {"Deseret", "Mormon"}, ["Dupl"] = {"Duployan shorthand", "Duployan stenography"}, ["Egyd"] = {"Egyptian demotic"}, ["Egyh"] = {"Egyptian hieratic"}, ["Egyp"] = {"Egyptian hieroglyphs"}, ["Elba"] = {"Elbasan"}, ["Elym"] = {"Elymaic"}, ["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"}, ["Gara"] = {"Garay"}, ["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"}, ["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"}, ["Glag"] = {"Glagolitic"}, ["Gong"] = {"Gunjala Gondi"}, ["Gonm"] = {"Masaram Gondi"}, ["Goth"] = {"Gothic"}, ["Gran"] = {"Grantha"}, ["Grek"] = {"Greek"}, ["Gujr"] = {"Gujarati"}, ["Gukh"] = {"Gurung Khema"}, ["Guru"] = {"Gurmukhi"}, ["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"}, ["Hang"] = {"Hangul", "Hangŭl", "Hangeul"}, ["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"}, ["Hano"] = {"Hanunoo", "Hanunóo"}, ["Hans"] = {"Han (Simplified variant)"}, ["Hant"] = {"Han (Traditional variant)"}, ["Hatr"] = {"Hatran"}, ["Hebr"] = {"Hebrew"}, ["Hira"] = {"Hiragana"}, ["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"}, ["Hmng"] = {"Pahawh Hmong"}, ["Hmnp"] = {"Nyiakeng Puachue Hmong"}, ["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"}, ["Hung"] = {"Old Hungarian", "Hungarian Runic"}, ["Inds"] = {"Indus", "Harappan"}, ["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"}, ["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"}, ["Java"] = {"Javanese"}, ["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"}, ["Jurc"] = {"Jurchen"}, ["Kali"] = {"Kayah Li"}, ["Kana"] = {"Katakana"}, ["Kawi"] = {"Kawi"}, ["Khar"] = {"Kharoshthi"}, ["Khmr"] = {"Khmer"}, ["Khoj"] = {"Khojki"}, ["Kitl"] = {"Khitan large script"}, ["Kits"] = {"Khitan small script"}, ["Knda"] = {"Kannada"}, ["Kore"] = {"Korean (alias for Hangul + Han)"}, ["Kpel"] = {"Kpelle"}, ["Krai"] = {"Kirat Rai"}, ["Kthi"] = {"Kaithi"}, ["Lana"] = {"Tai Tham", "Lanna"}, ["Laoo"] = {"Lao"}, ["Latf"] = {"Latin (Fraktur variant)"}, ["Latg"] = {"Latin (Gaelic variant)"}, ["Latn"] = {"Latin"}, ["Leke"] = {"Leke"}, ["Lepc"] = {"Lepcha", "Róng"}, ["Limb"] = {"Limbu"}, ["Lina"] = {"Linear A"}, ["Linb"] = {"Linear B"}, ["Lisu"] = {"Lisu", "Fraser"}, ["Loma"] = {"Loma"}, ["Lyci"] = {"Lycian"}, ["Lydi"] = {"Lydian"}, ["Mahj"] = {"Mahajani"}, ["Maka"] = {"Makasar"}, ["Mand"] = {"Mandaic", "Mandaean"}, ["Mani"] = {"Manichaean"}, ["Marc"] = {"Marchen"}, ["Maya"] = {"Mayan hieroglyphs"}, ["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"}, ["Mend"] = {"Mende Kikakui"}, ["Merc"] = {"Meroitic Cursive"}, ["Mero"] = {"Meroitic Hieroglyphs"}, ["Mlym"] = {"Malayalam"}, ["Modi"] = {"Modi", "Moḍī"}, ["Mong"] = {"Mongolian"}, ["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"}, ["Mroo"] = {"Mro", "Mru"}, ["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"}, ["Mult"] = {"Multani"}, ["Mymr"] = {"Myanmar", "Burmese"}, ["Nagm"] = {"Nag Mundari"}, ["Nand"] = {"Nandinagari"}, ["Narb"] = {"Old North Arabian", "Ancient North Arabian"}, ["Nbat"] = {"Nabataean"}, ["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"}, ["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"}, ["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"}, ["Nkoo"] = {"N’Ko", "N'Ko"}, ["Nshu"] = {"Nüshu"}, ["Ogam"] = {"Ogham"}, ["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"}, ["Onao"] = {"Ol Onal"}, ["Orkh"] = {"Old Turkic", "Orkhon Runic"}, ["Orya"] = {"Oriya", "Odia"}, ["Osge"] = {"Osage"}, ["Osma"] = {"Osmanya"}, ["Ougr"] = {"Old Uyghur"}, ["Palm"] = {"Palmyrene"}, ["Pauc"] = {"Pau Cin Hau"}, ["Pcun"] = {"Proto-Cuneiform"}, ["Pelm"] = {"Proto-Elamite"}, ["Perm"] = {"Old Permic"}, ["Phag"] = {"Phags-pa"}, ["Phli"] = {"Inscriptional Pahlavi"}, ["Phlp"] = {"Psalter Pahlavi"}, ["Phlv"] = {"Book Pahlavi"}, ["Phnx"] = {"Phoenician"}, ["Piqd"] = {"Klingon (KLI pIqaD)"}, ["Plrd"] = {"Miao", "Pollard"}, ["Prti"] = {"Inscriptional Parthian"}, ["Psin"] = {"Proto-Sinaitic"}, ["Ranj"] = {"Ranjana"}, ["Rjng"] = {"Rejang", "Redjang", "Kaganga"}, ["Rohg"] = {"Hanifi Rohingya"}, ["Roro"] = {"Rongorongo"}, ["Runr"] = {"Runic"}, ["Samr"] = {"Samaritan"}, ["Sara"] = {"Sarati"}, ["Sarb"] = {"Old South Arabian"}, ["Saur"] = {"Saurashtra"}, ["Sgnw"] = {"SignWriting"}, ["Shaw"] = {"Shavian", "Shaw"}, ["Shrd"] = {"Sharada", "Śāradā"}, ["Shui"] = {"Shuishu"}, ["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"}, ["Sidt"] = {"Sidetic"}, ["Sind"] = {"Khudawadi", "Sindhi"}, ["Sinh"] = {"Sinhala"}, ["Sogd"] = {"Sogdian"}, ["Sogo"] = {"Old Sogdian"}, ["Sora"] = {"Sora Sompeng"}, ["Soyo"] = {"Soyombo"}, ["Sund"] = {"Sundanese"}, ["Sunu"] = {"Sunuwar"}, ["Sylo"] = {"Syloti Nagri"}, ["Syrc"] = {"Syriac"}, ["Syre"] = {"Syriac (Estrangelo variant)"}, ["Syrj"] = {"Syriac (Western variant)"}, ["Syrn"] = {"Syriac (Eastern variant)"}, ["Tagb"] = {"Tagbanwa"}, ["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"}, ["Tale"] = {"Tai Le"}, ["Talu"] = {"New Tai Lue"}, ["Taml"] = {"Tamil"}, ["Tang"] = {"Tangut"}, ["Tavt"] = {"Tai Viet"}, ["Tayo"] = {"Tai Yo"}, ["Telu"] = {"Telugu"}, ["Teng"] = {"Tengwar"}, ["Tfng"] = {"Tifinagh", "Berber"}, ["Tglg"] = {"Tagalog", "Baybayin", "Alibata"}, ["Thaa"] = {"Thaana"}, ["Thai"] = {"Thai"}, ["Tibt"] = {"Tibetan"}, ["Tirh"] = {"Tirhuta"}, ["Tnsa"] = {"Tangsa"}, ["Todr"] = {"Todhri"}, ["Tols"] = {"Tolong Siki"}, ["Toto"] = {"Toto"}, ["Tutg"] = {"Tulu-Tigalari"}, ["Ugar"] = {"Ugaritic"}, ["Vaii"] = {"Vai"}, ["Visp"] = {"Visible Speech"}, ["Vith"] = {"Vithkuqi"}, ["Wara"] = {"Warang Citi", "Varang Kshiti"}, ["Wcho"] = {"Wancho"}, ["Wole"] = {"Woleai"}, ["Xpeo"] = {"Old Persian"}, ["Xsux"] = {"Sumero-Akkadian cuneiform"}, ["Yezi"] = {"Yezidi"}, ["Yiii"] = {"Yi"}, ["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"}, ["Zinh"] = {"Code for inherited script"}, ["Zmth"] = {"Mathematical notation"}, ["Zsye"] = {"Symbols (Emoji variant)"}, ["Zsym"] = {"Symbols"}, ["Zxxx"] = {"Code for unwritten documents"}, ["Zyyy"] = {"Code for undetermined script"}, ["Zzzz"] = {"Code for uncoded script"} } 90e7ff616b305955e94fca8cce479cc69e5277c4 Module:Language/data/iana regions 828 472 3137 1040 2023-11-03T15:39:57Z wikipedia>Trappist the monk 0 update to 2023-10-16 data; Scribunto text/plain -- File-Date: 2023-10-16 return { ["AC"] = {"Ascension Island"}, ["AD"] = {"Andorra"}, ["AE"] = {"United Arab Emirates"}, ["AF"] = {"Afghanistan"}, ["AG"] = {"Antigua and Barbuda"}, ["AI"] = {"Anguilla"}, ["AL"] = {"Albania"}, ["AM"] = {"Armenia"}, ["AO"] = {"Angola"}, ["AQ"] = {"Antarctica"}, ["AR"] = {"Argentina"}, ["AS"] = {"American Samoa"}, ["AT"] = {"Austria"}, ["AU"] = {"Australia"}, ["AW"] = {"Aruba"}, ["AX"] = {"Åland Islands"}, ["AZ"] = {"Azerbaijan"}, ["BA"] = {"Bosnia and Herzegovina"}, ["BB"] = {"Barbados"}, ["BD"] = {"Bangladesh"}, ["BE"] = {"Belgium"}, ["BF"] = {"Burkina Faso"}, ["BG"] = {"Bulgaria"}, ["BH"] = {"Bahrain"}, ["BI"] = {"Burundi"}, ["BJ"] = {"Benin"}, ["BL"] = {"Saint Barthélemy"}, ["BM"] = {"Bermuda"}, ["BN"] = {"Brunei Darussalam"}, ["BO"] = {"Bolivia"}, ["BQ"] = {"Bonaire, Sint Eustatius and Saba"}, ["BR"] = {"Brazil"}, ["BS"] = {"Bahamas"}, ["BT"] = {"Bhutan"}, ["BV"] = {"Bouvet Island"}, ["BW"] = {"Botswana"}, ["BY"] = {"Belarus"}, ["BZ"] = {"Belize"}, ["CA"] = {"Canada"}, ["CC"] = {"Cocos (Keeling) Islands"}, ["CD"] = {"The Democratic Republic of the Congo"}, ["CF"] = {"Central African Republic"}, ["CG"] = {"Congo"}, ["CH"] = {"Switzerland"}, ["CI"] = {"Côte d'Ivoire"}, ["CK"] = {"Cook Islands"}, ["CL"] = {"Chile"}, ["CM"] = {"Cameroon"}, ["CN"] = {"China"}, ["CO"] = {"Colombia"}, ["CP"] = {"Clipperton Island"}, ["CQ"] = {"Sark"}, ["CR"] = {"Costa Rica"}, ["CU"] = {"Cuba"}, ["CV"] = {"Cabo Verde", "Cape Verde"}, ["CW"] = {"Curaçao"}, ["CX"] = {"Christmas Island"}, ["CY"] = {"Cyprus"}, ["CZ"] = {"Czechia", "Czech Republic"}, ["DE"] = {"Germany"}, ["DG"] = {"Diego Garcia"}, ["DJ"] = {"Djibouti"}, ["DK"] = {"Denmark"}, ["DM"] = {"Dominica"}, ["DO"] = {"Dominican Republic"}, ["DZ"] = {"Algeria"}, ["EA"] = {"Ceuta, Melilla"}, ["EC"] = {"Ecuador"}, ["EE"] = {"Estonia"}, ["EG"] = {"Egypt"}, ["EH"] = {"Western Sahara"}, ["ER"] = {"Eritrea"}, ["ES"] = {"Spain"}, ["ET"] = {"Ethiopia"}, ["EU"] = {"European Union"}, ["EZ"] = {"Eurozone"}, ["FI"] = {"Finland"}, ["FJ"] = {"Fiji"}, ["FK"] = {"Falkland Islands (Malvinas)"}, ["FM"] = {"Federated States of Micronesia"}, ["FO"] = {"Faroe Islands"}, ["FR"] = {"France"}, ["GA"] = {"Gabon"}, ["GB"] = {"United Kingdom"}, ["GD"] = {"Grenada"}, ["GE"] = {"Georgia"}, ["GF"] = {"French Guiana"}, ["GG"] = {"Guernsey"}, ["GH"] = {"Ghana"}, ["GI"] = {"Gibraltar"}, ["GL"] = {"Greenland"}, ["GM"] = {"Gambia"}, ["GN"] = {"Guinea"}, ["GP"] = {"Guadeloupe"}, ["GQ"] = {"Equatorial Guinea"}, ["GR"] = {"Greece"}, ["GS"] = {"South Georgia and the South Sandwich Islands"}, ["GT"] = {"Guatemala"}, ["GU"] = {"Guam"}, ["GW"] = {"Guinea-Bissau"}, ["GY"] = {"Guyana"}, ["HK"] = {"Hong Kong"}, ["HM"] = {"Heard Island and McDonald Islands"}, ["HN"] = {"Honduras"}, ["HR"] = {"Croatia"}, ["HT"] = {"Haiti"}, ["HU"] = {"Hungary"}, ["IC"] = {"Canary Islands"}, ["ID"] = {"Indonesia"}, ["IE"] = {"Ireland"}, ["IL"] = {"Israel"}, ["IM"] = {"Isle of Man"}, ["IN"] = {"India"}, ["IO"] = {"British Indian Ocean Territory"}, ["IQ"] = {"Iraq"}, ["IR"] = {"Islamic Republic of Iran"}, ["IS"] = {"Iceland"}, ["IT"] = {"Italy"}, ["JE"] = {"Jersey"}, ["JM"] = {"Jamaica"}, ["JO"] = {"Jordan"}, ["JP"] = {"Japan"}, ["KE"] = {"Kenya"}, ["KG"] = {"Kyrgyzstan"}, ["KH"] = {"Cambodia"}, ["KI"] = {"Kiribati"}, ["KM"] = {"Comoros"}, ["KN"] = {"Saint Kitts and Nevis"}, ["KP"] = {"Democratic People's Republic of Korea"}, ["KR"] = {"Republic of Korea"}, ["KW"] = {"Kuwait"}, ["KY"] = {"Cayman Islands"}, ["KZ"] = {"Kazakhstan"}, ["LA"] = {"Lao People's Democratic Republic"}, ["LB"] = {"Lebanon"}, ["LC"] = {"Saint Lucia"}, ["LI"] = {"Liechtenstein"}, ["LK"] = {"Sri Lanka"}, ["LR"] = {"Liberia"}, ["LS"] = {"Lesotho"}, ["LT"] = {"Lithuania"}, ["LU"] = {"Luxembourg"}, ["LV"] = {"Latvia"}, ["LY"] = {"Libya"}, ["MA"] = {"Morocco"}, ["MC"] = {"Monaco"}, ["MD"] = {"Moldova"}, ["ME"] = {"Montenegro"}, ["MF"] = {"Saint Martin (French part)"}, ["MG"] = {"Madagascar"}, ["MH"] = {"Marshall Islands"}, ["MK"] = {"North Macedonia"}, ["ML"] = {"Mali"}, ["MM"] = {"Myanmar"}, ["MN"] = {"Mongolia"}, ["MO"] = {"Macao"}, ["MP"] = {"Northern Mariana Islands"}, ["MQ"] = {"Martinique"}, ["MR"] = {"Mauritania"}, ["MS"] = {"Montserrat"}, ["MT"] = {"Malta"}, ["MU"] = {"Mauritius"}, ["MV"] = {"Maldives"}, ["MW"] = {"Malawi"}, ["MX"] = {"Mexico"}, ["MY"] = {"Malaysia"}, ["MZ"] = {"Mozambique"}, ["NA"] = {"Namibia"}, ["NC"] = {"New Caledonia"}, ["NE"] = {"Niger"}, ["NF"] = {"Norfolk Island"}, ["NG"] = {"Nigeria"}, ["NI"] = {"Nicaragua"}, ["NL"] = {"Netherlands"}, ["NO"] = {"Norway"}, ["NP"] = {"Nepal"}, ["NR"] = {"Nauru"}, ["NU"] = {"Niue"}, ["NZ"] = {"New Zealand"}, ["OM"] = {"Oman"}, ["PA"] = {"Panama"}, ["PE"] = {"Peru"}, ["PF"] = {"French Polynesia"}, ["PG"] = {"Papua New Guinea"}, ["PH"] = {"Philippines"}, ["PK"] = {"Pakistan"}, ["PL"] = {"Poland"}, ["PM"] = {"Saint Pierre and Miquelon"}, ["PN"] = {"Pitcairn"}, ["PR"] = {"Puerto Rico"}, ["PS"] = {"State of Palestine"}, ["PT"] = {"Portugal"}, ["PW"] = {"Palau"}, ["PY"] = {"Paraguay"}, ["QA"] = {"Qatar"}, ["RE"] = {"Réunion"}, ["RO"] = {"Romania"}, ["RS"] = {"Serbia"}, ["RU"] = {"Russian Federation"}, ["RW"] = {"Rwanda"}, ["SA"] = {"Saudi Arabia"}, ["SB"] = {"Solomon Islands"}, ["SC"] = {"Seychelles"}, ["SD"] = {"Sudan"}, ["SE"] = {"Sweden"}, ["SG"] = {"Singapore"}, ["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"}, ["SI"] = {"Slovenia"}, ["SJ"] = {"Svalbard and Jan Mayen"}, ["SK"] = {"Slovakia"}, ["SL"] = {"Sierra Leone"}, ["SM"] = {"San Marino"}, ["SN"] = {"Senegal"}, ["SO"] = {"Somalia"}, ["SR"] = {"Suriname"}, ["SS"] = {"South Sudan"}, ["ST"] = {"Sao Tome and Principe"}, ["SV"] = {"El Salvador"}, ["SX"] = {"Sint Maarten (Dutch part)"}, ["SY"] = {"Syrian Arab Republic"}, ["SZ"] = {"Eswatini", "eSwatini", "Swaziland"}, ["TA"] = {"Tristan da Cunha"}, ["TC"] = {"Turks and Caicos Islands"}, ["TD"] = {"Chad"}, ["TF"] = {"French Southern Territories"}, ["TG"] = {"Togo"}, ["TH"] = {"Thailand"}, ["TJ"] = {"Tajikistan"}, ["TK"] = {"Tokelau"}, ["TL"] = {"Timor-Leste"}, ["TM"] = {"Turkmenistan"}, ["TN"] = {"Tunisia"}, ["TO"] = {"Tonga"}, ["TR"] = {"Türkiye", "Turkey"}, ["TT"] = {"Trinidad and Tobago"}, ["TV"] = {"Tuvalu"}, ["TW"] = {"Taiwan, Province of China"}, ["TZ"] = {"United Republic of Tanzania"}, ["UA"] = {"Ukraine"}, ["UG"] = {"Uganda"}, ["UM"] = {"United States Minor Outlying Islands"}, ["UN"] = {"United Nations"}, ["US"] = {"United States"}, ["UY"] = {"Uruguay"}, ["UZ"] = {"Uzbekistan"}, ["VA"] = {"Holy See (Vatican City State)"}, ["VC"] = {"Saint Vincent and the Grenadines"}, ["VE"] = {"Venezuela"}, ["VG"] = {"British Virgin Islands"}, ["VI"] = {"U.S. Virgin Islands"}, ["VN"] = {"Viet Nam"}, ["VU"] = {"Vanuatu"}, ["WF"] = {"Wallis and Futuna"}, ["WS"] = {"Samoa"}, ["YE"] = {"Yemen"}, ["YT"] = {"Mayotte"}, ["ZA"] = {"South Africa"}, ["ZM"] = {"Zambia"}, ["ZW"] = {"Zimbabwe"}, ["001"] = {"World"}, ["002"] = {"Africa"}, ["003"] = {"North America"}, ["005"] = {"South America"}, ["009"] = {"Oceania"}, ["011"] = {"Western Africa"}, ["013"] = {"Central America"}, ["014"] = {"Eastern Africa"}, ["015"] = {"Northern Africa"}, ["017"] = {"Middle Africa"}, ["018"] = {"Southern Africa"}, ["019"] = {"Americas"}, ["021"] = {"Northern America"}, ["029"] = {"Caribbean"}, ["030"] = {"Eastern Asia"}, ["034"] = {"Southern Asia"}, ["035"] = {"South-Eastern Asia"}, ["039"] = {"Southern Europe"}, ["053"] = {"Australia and New Zealand"}, ["054"] = {"Melanesia"}, ["057"] = {"Micronesia"}, ["061"] = {"Polynesia"}, ["142"] = {"Asia"}, ["143"] = {"Central Asia"}, ["145"] = {"Western Asia"}, ["150"] = {"Europe"}, ["151"] = {"Eastern Europe"}, ["154"] = {"Northern Europe"}, ["155"] = {"Western Europe"}, ["202"] = {"Sub-Saharan Africa"}, ["419"] = {"Latin America and the Caribbean"} } 38ed555cd3945668fad81deefcc2ce6558bff172 Module:Language/data/iana variants 828 473 3139 1042 2023-11-03T15:39:59Z wikipedia>Trappist the monk 0 update to 2023-10-16 data; Scribunto text/plain -- File-Date: 2023-10-16 return { ["1606nict"] = { ["descriptions"] = {"Late Middle French (to 1606)"}, ["prefixes"] = {"frm"}, }, ["1694acad"] = { ["descriptions"] = {"Early Modern French"}, ["prefixes"] = {"fr"}, }, ["1901"] = { ["descriptions"] = {"Traditional German orthography"}, ["prefixes"] = {"de"}, }, ["1959acad"] = { ["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"}, ["prefixes"] = {"be"}, }, ["1994"] = { ["descriptions"] = {"Standardized Resian orthography"}, ["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"}, }, ["1996"] = { ["descriptions"] = {"German orthography of 1996"}, ["prefixes"] = {"de"}, }, ["abl1943"] = { ["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"}, ["prefixes"] = {"pt-br"}, }, ["akuapem"] = { ["descriptions"] = {"Akuapem Twi"}, ["prefixes"] = {"tw"}, }, ["alalc97"] = { ["descriptions"] = {"ALA-LC Romanization, 1997 edition"}, ["prefixes"] = {}, }, ["aluku"] = { ["descriptions"] = {"Aluku dialect", "Boni dialect"}, ["prefixes"] = {"djk"}, }, ["ao1990"] = { ["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"}, ["prefixes"] = {"pt", "gl"}, }, ["aranes"] = { ["descriptions"] = {"Aranese"}, ["prefixes"] = {"oc"}, }, ["arkaika"] = { ["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"}, ["prefixes"] = {"eo"}, }, ["asante"] = { ["descriptions"] = {"Asante Twi", "Ashanti Twi"}, ["prefixes"] = {"tw"}, }, ["auvern"] = { ["descriptions"] = {"Auvergnat"}, ["prefixes"] = {"oc"}, }, ["baku1926"] = { ["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"}, ["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"}, }, ["balanka"] = { ["descriptions"] = {"The Balanka dialect of Anii"}, ["prefixes"] = {"blo"}, }, ["barla"] = { ["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["basiceng"] = { ["descriptions"] = {"Basic English"}, ["prefixes"] = {"en"}, }, ["bauddha"] = { ["descriptions"] = {"Buddhist Hybrid Sanskrit"}, ["prefixes"] = {"sa"}, }, ["bciav"] = { ["descriptions"] = {"BCI Blissymbolics AV"}, ["prefixes"] = {"zbl"}, }, ["bcizbl"] = { ["descriptions"] = {"BCI Blissymbolics"}, ["prefixes"] = {"zbl"}, }, ["biscayan"] = { ["descriptions"] = {"Biscayan dialect of Basque"}, ["prefixes"] = {"eu"}, }, ["biske"] = { ["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["blasl"] = { ["descriptions"] = {"Black American Sign Language dialect"}, ["prefixes"] = {"ase", "sgn-ase"}, }, ["bohoric"] = { ["descriptions"] = {"Slovene in Bohorič alphabet"}, ["prefixes"] = {"sl"}, }, ["boont"] = { ["descriptions"] = {"Boontling"}, ["prefixes"] = {"en"}, }, ["bornholm"] = { ["descriptions"] = {"Bornholmsk"}, ["prefixes"] = {"da"}, }, ["cisaup"] = { ["descriptions"] = {"Cisalpine"}, ["prefixes"] = {"oc"}, }, ["colb1945"] = { ["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"}, ["prefixes"] = {"pt"}, }, ["cornu"] = { ["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"}, ["prefixes"] = {"en"}, }, ["creiss"] = { ["descriptions"] = {"Occitan variants of the Croissant area"}, ["prefixes"] = {"oc"}, }, ["dajnko"] = { ["descriptions"] = {"Slovene in Dajnko alphabet"}, ["prefixes"] = {"sl"}, }, ["ekavsk"] = { ["descriptions"] = {"Serbian with Ekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["emodeng"] = { ["descriptions"] = {"Early Modern English (1500-1700)"}, ["prefixes"] = {"en"}, }, ["fonipa"] = { ["descriptions"] = {"International Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonkirsh"] = { ["descriptions"] = {"Kirshenbaum Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonnapa"] = { ["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"}, ["prefixes"] = {}, }, ["fonupa"] = { ["descriptions"] = {"Uralic Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonxsamp"] = { ["descriptions"] = {"X-SAMPA transcription"}, ["prefixes"] = {}, }, ["gallo"] = { ["descriptions"] = {"Gallo"}, ["prefixes"] = {"fr"}, }, ["gascon"] = { ["descriptions"] = {"Gascon"}, ["prefixes"] = {"oc"}, }, ["grclass"] = { ["descriptions"] = {"Classical Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["grital"] = { ["descriptions"] = {"Italian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"}, }, ["grmistr"] = { ["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["hepburn"] = { ["descriptions"] = {"Hepburn romanization"}, ["prefixes"] = {"ja-latn"}, }, ["hognorsk"] = { ["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"}, ["prefixes"] = {"nn"}, }, ["hsistemo"] = { ["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, }, ["ijekavsk"] = { ["descriptions"] = {"Serbian with Ijekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["itihasa"] = { ["descriptions"] = {"Epic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["ivanchov"] = { ["descriptions"] = {"Bulgarian in 1899 orthography"}, ["prefixes"] = {"bg"}, }, ["jauer"] = { ["descriptions"] = {"Jauer dialect of Romansh"}, ["prefixes"] = {"rm"}, }, ["jyutping"] = { ["descriptions"] = {"Jyutping Cantonese Romanization"}, ["prefixes"] = {"yue"}, }, ["kkcor"] = { ["descriptions"] = {"Common Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["kociewie"] = { ["descriptions"] = {"The Kociewie dialect of Polish"}, ["prefixes"] = {"pl"}, }, ["kscor"] = { ["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"}, ["prefixes"] = {"kw"}, }, ["laukika"] = { ["descriptions"] = {"Classical Sanskrit"}, ["prefixes"] = {"sa"}, }, ["lemosin"] = { ["descriptions"] = {"Limousin"}, ["prefixes"] = {"oc"}, }, ["lengadoc"] = { ["descriptions"] = {"Languedocien"}, ["prefixes"] = {"oc"}, }, ["lipaw"] = { ["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["ltg1929"] = { ["descriptions"] = {"The Latgalian language orthography codified in 1929"}, ["prefixes"] = {"ltg"}, }, ["ltg2007"] = { ["descriptions"] = {"The Latgalian language orthography codified in the language law in 2007"}, ["prefixes"] = {"ltg"}, }, ["luna1918"] = { ["descriptions"] = {"Post-1917 Russian orthography"}, ["prefixes"] = {"ru"}, }, ["metelko"] = { ["descriptions"] = {"Slovene in Metelko alphabet"}, ["prefixes"] = {"sl"}, }, ["monoton"] = { ["descriptions"] = {"Monotonic Greek"}, ["prefixes"] = {"el"}, }, ["ndyuka"] = { ["descriptions"] = {"Ndyuka dialect", "Aukan dialect"}, ["prefixes"] = {"djk"}, }, ["nedis"] = { ["descriptions"] = {"Natisone dialect", "Nadiza dialect"}, ["prefixes"] = {"sl"}, }, ["newfound"] = { ["descriptions"] = {"Newfoundland English"}, ["prefixes"] = {"en-ca"}, }, ["nicard"] = { ["descriptions"] = {"Niçard"}, ["prefixes"] = {"oc"}, }, ["njiva"] = { ["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["nulik"] = { ["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"}, ["prefixes"] = {"vo"}, }, ["osojs"] = { ["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["oxendict"] = { ["descriptions"] = {"Oxford English Dictionary spelling"}, ["prefixes"] = {"en"}, }, ["pahawh2"] = { ["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh3"] = { ["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh4"] = { ["descriptions"] = {"Pahawh Hmong Final Version orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pamaka"] = { ["descriptions"] = {"Pamaka dialect"}, ["prefixes"] = {"djk"}, }, ["peano"] = { ["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"}, ["prefixes"] = {"la"}, }, ["petr1708"] = { ["descriptions"] = {"Petrine orthography"}, ["prefixes"] = {"ru"}, }, ["pinyin"] = { ["descriptions"] = {"Pinyin romanization"}, ["prefixes"] = {"zh-latn", "bo-latn"}, }, ["polyton"] = { ["descriptions"] = {"Polytonic Greek"}, ["prefixes"] = {"el"}, }, ["provenc"] = { ["descriptions"] = {"Provençal"}, ["prefixes"] = {"oc"}, }, ["puter"] = { ["descriptions"] = {"Puter idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["rigik"] = { ["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"}, ["prefixes"] = {"vo"}, }, ["rozaj"] = { ["descriptions"] = {"Resian", "Resianic", "Rezijan"}, ["prefixes"] = {"sl"}, }, ["rumgr"] = { ["descriptions"] = {"Rumantsch Grischun"}, ["prefixes"] = {"rm"}, }, ["scotland"] = { ["descriptions"] = {"Scottish Standard English"}, ["prefixes"] = {"en"}, }, ["scouse"] = { ["descriptions"] = {"Scouse"}, ["prefixes"] = {"en"}, }, ["simple"] = { ["descriptions"] = {"Simplified form"}, ["prefixes"] = {}, }, ["solba"] = { ["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["sotav"] = { ["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["spanglis"] = { ["descriptions"] = {"Spanglish"}, ["prefixes"] = {"en", "es"}, }, ["surmiran"] = { ["descriptions"] = {"Surmiran idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sursilv"] = { ["descriptions"] = {"Sursilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sutsilv"] = { ["descriptions"] = {"Sutsilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["synnejyl"] = { ["descriptions"] = {"Synnejysk", "South Jutish"}, ["prefixes"] = {"da"}, }, ["tarask"] = { ["descriptions"] = {"Belarusian in Taraskievica orthography"}, ["prefixes"] = {"be"}, }, ["tongyong"] = { ["descriptions"] = {"Tongyong Pinyin romanization"}, ["prefixes"] = {"zh-latn"}, }, ["tunumiit"] = { ["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"}, ["prefixes"] = {"kl"}, }, ["uccor"] = { ["descriptions"] = {"Unified Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ucrcor"] = { ["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ulster"] = { ["descriptions"] = {"Ulster dialect of Scots"}, ["prefixes"] = {"sco"}, }, ["unifon"] = { ["descriptions"] = {"Unifon phonetic alphabet"}, ["prefixes"] = {"en", "hup", "kyh", "tol", "yur"}, }, ["vaidika"] = { ["descriptions"] = {"Vedic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["valencia"] = { ["descriptions"] = {"Valencian"}, ["prefixes"] = {"ca"}, }, ["vallader"] = { ["descriptions"] = {"Vallader idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["vecdruka"] = { ["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"}, ["prefixes"] = {"lv"}, }, ["vivaraup"] = { ["descriptions"] = {"Vivaro-Alpine"}, ["prefixes"] = {"oc"}, }, ["wadegile"] = { ["descriptions"] = {"Wade-Giles romanization"}, ["prefixes"] = {"zh-latn"}, }, ["xsistemo"] = { ["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, } } fe5d6330175026010e0d8d9aef185dbd571c3d57 Module:Language/data/iana suppressed scripts 828 474 3141 1044 2023-11-03T15:40:00Z wikipedia>Trappist the monk 0 update to 2023-10-16 data; Scribunto text/plain -- File-Date: 2023-10-16 return { ["Arab"] = {"ar", "fa", "ps", "ur"}, ["Armn"] = {"hy"}, ["Beng"] = {"as", "bn"}, ["Blis"] = {"zbl"}, ["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"}, ["Deva"] = {"hi", "mr", "ne", "kok", "mai"}, ["Ethi"] = {"am", "ti"}, ["Geor"] = {"ka"}, ["Grek"] = {"el"}, ["Gujr"] = {"gu"}, ["Guru"] = {"pa"}, ["Hebr"] = {"he", "iw", "yi"}, ["Jpan"] = {"ja"}, ["Khmr"] = {"km"}, ["Knda"] = {"kn"}, ["Kore"] = {"ko"}, ["Laoo"] = {"lo"}, ["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo", "es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn", "gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb", "ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd", "nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn", "ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv", "sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb", "frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh", "tpi", "tvl"}, ["Mlym"] = {"ml"}, ["Mymr"] = {"my"}, ["Nkoo"] = {"nqo"}, ["Orya"] = {"or"}, ["Sinh"] = {"si"}, ["Taml"] = {"ta"}, ["Telu"] = {"te"}, ["Thaa"] = {"dv"}, ["Thai"] = {"th"}, ["Tibt"] = {"dz"} } 1708132b06b72c9ca4217aaa0ddc8a1e8b234646 Module:Transclusion count/data/C 828 595 3051 1339 2023-11-05T05:08:49Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["C"] = 660000, ["C-Class"] = 17000, ["C-SPAN"] = 13000, ["C-cmn"] = 2300, ["C-pl"] = 51000, ["C."] = 4300, ["CAN"] = 20000, ["CANelec"] = 14000, ["CANelec/gain"] = 2600, ["CANelec/hold"] = 4900, ["CANelec/source"] = 7100, ["CANelec/top"] = 6500, ["CANelec/total"] = 6600, ["CAS"] = 3800, ["CBB_Standings_End"] = 15000, ["CBB_Standings_Entry"] = 14000, ["CBB_Standings_Start"] = 14000, ["CBB_Yearly_Record_End"] = 3100, ["CBB_Yearly_Record_Entry"] = 3100, ["CBB_Yearly_Record_Start"] = 3000, ["CBB_Yearly_Record_Subhead"] = 3700, ["CBB_Yearly_Record_Subtotal"] = 2900, ["CBB_roster/Footer"] = 8200, ["CBB_roster/Header"] = 8200, ["CBB_roster/Player"] = 8200, ["CBB_schedule_end"] = 11000, ["CBB_schedule_entry"] = 11000, ["CBB_schedule_start"] = 11000, ["CBB_standings_end"] = 16000, ["CBB_standings_entry"] = 16000, ["CBB_standings_start"] = 16000, ["CBB_yearly_record_end"] = 4100, ["CBB_yearly_record_end/legend"] = 3700, ["CBB_yearly_record_entry"] = 4100, ["CBB_yearly_record_start"] = 4000, ["CBB_yearly_record_subhead"] = 3800, ["CBB_yearly_record_subtotal"] = 3800, ["CBSB_Standings_End"] = 4300, ["CBSB_Standings_Entry"] = 4300, ["CBSB_Standings_Start"] = 4300, ["CBSB_link"] = 3500, ["CBSB_standings_end"] = 4400, ["CBSB_standings_entry"] = 4500, ["CBSB_standings_start"] = 4500, ["CC0"] = 3800, ["CENTURY"] = 16000, ["CFB_Standings_End"] = 34000, ["CFB_Standings_Entry"] = 34000, ["CFB_Standings_Start"] = 34000, ["CFB_Yearly_Record_End"] = 6900, ["CFB_Yearly_Record_End/legend"] = 2400, ["CFB_Yearly_Record_Entry"] = 6900, ["CFB_Yearly_Record_Start"] = 6900, ["CFB_Yearly_Record_Subhead"] = 6900, ["CFB_Yearly_Record_Subtotal"] = 6800, ["CFB_schedule"] = 26000, ["CFB_schedule_entry"] = 19000, ["CFB_standings_end"] = 34000, ["CFB_standings_entry"] = 34000, ["CFB_standings_start"] = 34000, ["CFL_Year"] = 5700, ["CGF_year"] = 2600, ["CHE"] = 10000, ["CHI"] = 2800, ["CHL"] = 3700, ["CHN"] = 11000, ["CN"] = 3500, ["CO2"] = 3300, ["COI"] = 14000, ["COIUL"] = 130000, ["COI_editnotice"] = 6700, ["COL"] = 5000, ["COLON"] = 13000, ["CRI"] = 2200, ["CRO"] = 5600, ["CSK"] = 2800, ["CSS_image_crop"] = 4700, ["CUB"] = 3800, ["CURRENTDATE"] = 3600, ["CURRENTMINUTE"] = 2500, ["CYP"] = 2100, ["CZE"] = 15000, ["Calendar"] = 2400, ["California/color"] = 12000, ["Call_sign_disambiguation"] = 3100, ["Campaignbox"] = 23000, ["CanProvName"] = 14000, ["CanadaByProvinceCatNav"] = 8400, ["CanadaProvinceThe"] = 4000, ["Canadian_English"] = 7100, ["Canadian_Parliament_links"] = 5100, ["Canadian_election_result"] = 14000, ["Canadian_election_result/gain"] = 2700, ["Canadian_election_result/hold"] = 5000, ["Canadian_election_result/source"] = 8200, ["Canadian_election_result/top"] = 14000, ["Canadian_election_result/total"] = 11000, ["Canadian_party_colour"] = 8300, ["Canadian_party_colour/colour"] = 18000, ["Canadian_party_colour/colour/default"] = 18000, ["Canadian_party_colour/name"] = 15000, ["Canadian_party_colour/name/default"] = 6900, ["Canned_search"] = 5900, ["Cascite"] = 15000, ["Caselaw_source"] = 4000, ["Cassini-Ehess"] = 2900, ["Cast_listing"] = 16000, ["Castlist"] = 2600, ["Cat"] = 360000, ["CatAutoTOC"] = 664000, ["CatAutoTOC/core"] = 663000, ["CatRel"] = 3800, ["CatTrack"] = 3100, ["Cat_class"] = 6900, ["Cat_in_use"] = 50000, ["Cat_main"] = 201000, ["Cat_more"] = 102000, ["Cat_more_if_exists"] = 40000, ["Cat_see_also"] = 3600, ["Catalog_lookup_link"] = 518000, ["Category-Class"] = 14000, ["Category-inline"] = 8700, ["Category_TOC"] = 72000, ["Category_TOC/tracking"] = 72000, ["Category_U.S._State_elections_by_year"] = 7300, ["Category_U.S._State_elections_by_year/core"] = 7300, ["Category_class"] = 36000, ["Category_class/column"] = 36000, ["Category_class/second_row_column"] = 36000, ["Category_described_in_year"] = 5700, ["Category_diffuse"] = 7900, ["Category_disambiguation"] = 2400, ["Category_disambiguation/category_link"] = 2400, ["Category_explanation"] = 276000, ["Category_handler"] = 3330000, ["Category_ifexist"] = 5100, ["Category_importance"] = 10000, ["Category_importance/column"] = 10000, ["Category_importance/second_row_column"] = 10000, ["Category_link"] = 137000, ["Category_link_with_count"] = 7000, ["Category_more"] = 112000, ["Category_more_if_exists"] = 40000, ["Category_ordered_by_date"] = 11000, ["Category_other"] = 910000, ["Category_redirect"] = 109000, ["Category_see_also"] = 40000, ["Category_see_also/Category_pair_check"] = 40000, ["Category_see_also_if_exists"] = 73000, ["Category_see_also_if_exists_2"] = 89000, ["Category_series_navigation"] = 486000, ["Category_title"] = 2400, ["Catexp"] = 8000, ["CathEncy"] = 2300, ["Catholic"] = 4000, ["Catholic_Encyclopedia"] = 5100, ["Catmain"] = 28000, ["Catmore"] = 9400, ["Cbb_link"] = 8800, ["Cbignore"] = 100000, ["Cbsb_link"] = 2100, ["Cc-by-2.5"] = 3700, ["Cc-by-3.0"] = 8400, ["Cc-by-sa-2.5"] = 2500, ["Cc-by-sa-2.5,2.0,1.0"] = 2600, ["Cc-by-sa-3.0"] = 25000, ["Cc-by-sa-3.0,2.5,2.0,1.0"] = 2200, ["Cc-by-sa-3.0-migrated"] = 23000, ["Cc-by-sa-4.0"] = 10000, ["Cc-zero"] = 3700, ["CensusAU"] = 9100, ["Census_2016_AUS"] = 6800, ["Cent"] = 5800, ["Center"] = 291000, ["Centralized_discussion"] = 6200, ["Centralized_discussion/core"] = 6200, ["Centralized_discussion/styles.css"] = 6200, ["Centre"] = 3300, ["Century"] = 2100, ["Century_name_from_decade"] = 2400, ["Century_name_from_decade_or_year"] = 89000, ["Century_name_from_title_decade"] = 7700, ["Century_name_from_title_year"] = 7600, ["Certification_Cite/Title"] = 31000, ["Certification_Cite/URL"] = 34000, ["Certification_Cite/archivedate"] = 6100, ["Certification_Cite/archiveurl"] = 6100, ["Certification_Cite_Ref"] = 30000, ["Certification_Table_Bottom"] = 30000, ["Certification_Table_Entry"] = 31000, ["Certification_Table_Entry/Foot"] = 29000, ["Certification_Table_Entry/Foot/helper"] = 29000, ["Certification_Table_Entry/Region"] = 30000, ["Certification_Table_Entry/Sales"] = 29000, ["Certification_Table_Entry/Sales/AustrianPeriod"] = 2000, ["Certification_Table_Entry/Sales/BelgianPeriod"] = 2100, ["Certification_Table_Entry/Sales/DanishPeriod"] = 3300, ["Certification_Table_Entry/Sales/DanishPeriodHelper1"] = 3300, ["Certification_Table_Entry/Sales/DanishPeriodHelper2"] = 3300, ["Certification_Table_Entry/Sales/GermanPeriod"] = 4000, ["Certification_Table_Entry/Sales/ItalianHelper"] = 3300, ["Certification_Table_Entry/Sales/NewZealandPeriod"] = 2100, ["Certification_Table_Entry/Sales/SwedishPeriod"] = 2100, ["Certification_Table_Separator"] = 2400, ["Certification_Table_Top"] = 31000, ["Cfb_link"] = 24000, ["Cfd_result"] = 2400, ["Cfdend"] = 4000, ["Chart"] = 4600, ["Chart/end"] = 4700, ["Chart/start"] = 4700, ["Chart_bottom"] = 3600, ["Chart_top"] = 3600, ["Check_completeness_of_transclusions"] = 40000, ["Check_talk"] = 31000, ["Check_talk_wp"] = 1420000, ["Check_winner_by_scores"] = 13000, ["CheckedSockpuppet"] = 7200, ["Checked_sockpuppet"] = 18000, ["Checkedsockpuppet"] = 5300, ["Checkip"] = 13000, ["Checkuser"] = 76000, ["Checkuserblock-account"] = 19000, ["Chem"] = 5800, ["Chem/atom"] = 5800, ["Chem/link"] = 5800, ["Chem2"] = 5200, ["Chem_molar_mass"] = 18000, ["Chem_molar_mass/format"] = 18000, ["Chembox"] = 14000, ["Chembox/styles.css"] = 14000, ["Chembox_3DMet"] = 14000, ["Chembox_3DMet/format"] = 14000, ["Chembox_AllOtherNames"] = 13000, ["Chembox_AllOtherNames/format"] = 13000, ["Chembox_Appearance"] = 6200, ["Chembox_BoilingPt"] = 3800, ["Chembox_CASNo"] = 14000, ["Chembox_CASNo/format"] = 14000, ["Chembox_CalcTemperatures"] = 6700, ["Chembox_ChEBI"] = 14000, ["Chembox_ChEBI/format"] = 14000, ["Chembox_ChEMBL"] = 14000, ["Chembox_ChEMBL/format"] = 14000, ["Chembox_ChemSpiderID"] = 14000, ["Chembox_ChemSpiderID/format"] = 14000, ["Chembox_CompTox"] = 14000, ["Chembox_CompTox/format"] = 14000, ["Chembox_Datapage_check"] = 14000, ["Chembox_Density"] = 4900, ["Chembox_DrugBank"] = 14000, ["Chembox_DrugBank/format"] = 14000, ["Chembox_ECHA"] = 7600, ["Chembox_ECNumber"] = 14000, ["Chembox_ECNumber/format"] = 14000, ["Chembox_Elements"] = 14000, ["Chembox_Elements/molecular_formula"] = 18000, ["Chembox_Footer"] = 14000, ["Chembox_Footer/tracking"] = 14000, ["Chembox_GHS_(set)"] = 3500, ["Chembox_Hazards"] = 12000, ["Chembox_IUPHAR_ligand"] = 14000, ["Chembox_IUPHAR_ligand/format"] = 14000, ["Chembox_Identifiers"] = 14000, ["Chembox_InChI"] = 13000, ["Chembox_InChI/format"] = 13000, ["Chembox_Indexlist"] = 14000, ["Chembox_Jmol"] = 14000, ["Chembox_Jmol/format"] = 14000, ["Chembox_KEGG"] = 14000, ["Chembox_KEGG/format"] = 14000, ["Chembox_MeltingPt"] = 5900, ["Chembox_Properties"] = 14000, ["Chembox_PubChem"] = 14000, ["Chembox_PubChem/format"] = 14000, ["Chembox_RTECS"] = 14000, ["Chembox_RTECS/format"] = 14000, ["Chembox_Related"] = 3400, ["Chembox_SMILES"] = 13000, ["Chembox_SMILES/format"] = 13000, ["Chembox_SolubilityInWater"] = 3900, ["Chembox_Structure"] = 2100, ["Chembox_UNII"] = 14000, ["Chembox_UNII/format"] = 14000, ["Chembox_headerbar"] = 14000, ["Chembox_image"] = 13000, ["Chembox_image_cell"] = 12000, ["Chembox_image_sbs"] = 13000, ["Chembox_parametercheck"] = 13000, ["Chembox_setDatarow"] = 4500, ["Chembox_setHeader"] = 4500, ["Chembox_templatePar/formatPreviewMessage"] = 14000, ["Chembox_verification"] = 7200, ["Chemicals"] = 7300, ["Chemistry"] = 3100, ["Chemspidercite"] = 11000, ["Chessgames_player"] = 3700, ["Chinese"] = 6900, ["Chr"] = 9100, ["ChristianityWikiProject"] = 5700, ["Circa"] = 75000, ["Circular_reference"] = 4600, ["Citation"] = 414000, ["Citation/make_link"] = 6200, ["Citation/styles.css"] = 46000, ["Citation_needed"] = 551000, ["Citation_needed_span"] = 3500, ["Citation_style"] = 4200, ["Cite_AV_media"] = 43000, ["Cite_AV_media_notes"] = 26000, ["Cite_Appletons'"] = 2400, ["Cite_Australian_Dictionary_of_Biography"] = 3300, ["Cite_Catholic_Encyclopedia"] = 8300, ["Cite_Colledge2006"] = 3100, ["Cite_DCB"] = 2800, ["Cite_DNB"] = 18000, ["Cite_EB1911"] = 25000, ["Cite_GNIS"] = 2300, ["Cite_Gaia_DR2"] = 2100, ["Cite_Google_Maps"] = 15000, ["Cite_IUCN"] = 58000, ["Cite_Instagram"] = 2300, ["Cite_Jewish_Encyclopedia"] = 3000, ["Cite_NIE"] = 3600, ["Cite_NSW_Parliament"] = 3300, ["Cite_NSW_SHR"] = 2600, ["Cite_ODNB"] = 18000, ["Cite_POWO"] = 2100, ["Cite_Q"] = 48000, ["Cite_QHR"] = 3000, ["Cite_QPN"] = 4000, ["Cite_Rotten_Tomatoes"] = 2000, ["Cite_Rowlett"] = 2500, ["Cite_Russian_law"] = 7800, ["Cite_Ryan"] = 3200, ["Cite_Sports-Reference"] = 54000, ["Cite_USGov"] = 24000, ["Cite_WoRMS"] = 5500, ["Cite_act"] = 2800, ["Cite_arXiv"] = 5100, ["Cite_bcgnis"] = 3500, ["Cite_book"] = 1610000, ["Cite_certification"] = 34000, ["Cite_cgndb"] = 3400, ["Cite_comic"] = 2100, ["Cite_conference"] = 16000, ["Cite_court"] = 5400, ["Cite_court/styles.css"] = 5400, ["Cite_dictionary"] = 3500, ["Cite_encyclopedia"] = 206000, ["Cite_episode"] = 17000, ["Cite_gnis"] = 33000, ["Cite_interview"] = 7900, ["Cite_iucn"] = 58000, ["Cite_journal"] = 974000, ["Cite_magazine"] = 282000, ["Cite_map"] = 42000, ["Cite_news"] = 1540000, ["Cite_newspaper_The_Times"] = 6600, ["Cite_patent"] = 5600, ["Cite_patent/authors"] = 4600, ["Cite_patent/core"] = 5900, ["Cite_peakbagger"] = 4600, ["Cite_podcast"] = 4000, ["Cite_press_release"] = 67000, ["Cite_report"] = 37000, ["Cite_rowlett"] = 2500, ["Cite_simbad"] = 4500, ["Cite_sports-reference"] = 59000, ["Cite_thesis"] = 33000, ["Cite_tweet"] = 37000, ["Cite_video"] = 12000, ["Cite_video_game"] = 3100, ["Cite_web"] = 4620000, ["Cite_wikisource"] = 5700, ["Cite_wikisource/make_link"] = 59000, ["Civil_navigation"] = 2900, ["Cl"] = 134000, ["Clade"] = 7700, ["Clade/styles.css"] = 7800, ["Clarify"] = 41000, ["Class"] = 42000, ["Class/colour"] = 9210000, ["Class/icon"] = 21000, ["Class_mask"] = 314000, ["Class_mask/b"] = 272000, ["Classical"] = 6800, ["Classicon"] = 4800, ["Clc"] = 6100, ["Cleanup"] = 10000, ["Cleanup_bare_URLs"] = 25000, ["Cleanup_reorganize"] = 2500, ["Cleanup_rewrite"] = 6000, ["Clear"] = 3000000, ["Clear-left"] = 4100, ["Clear_left"] = 31000, ["Clear_right"] = 2600, ["Clerk-Note"] = 9900, ["Clerk_Request"] = 2100, ["Clerknote"] = 7500, ["Clickable_button"] = 17000, ["Clickable_button_2"] = 974000, ["Closed_access"] = 4700, ["Closed_rfc_top"] = 2300, ["Clr"] = 3500, ["Clubplayerscat"] = 8900, ["Cmbox"] = 425000, ["Cn"] = 95000, ["Cnote2"] = 2300, ["Cnote2_Begin"] = 2300, ["Cnote2_End"] = 2300, ["Coat_of_arms"] = 4800, ["Cob"] = 12000, ["Code"] = 53000, ["Col-1-of-2"] = 2400, ["Col-2"] = 172000, ["Col-2-of-2"] = 2300, ["Col-3"] = 10000, ["Col-4"] = 3600, ["Col-begin"] = 214000, ["Col-break"] = 212000, ["Col-end"] = 213000, ["Col-float"] = 2700, ["Col-float-break"] = 2600, ["Col-float-end"] = 2700, ["Col-float/styles.css"] = 2700, ["Col-start"] = 18000, ["Colbegin"] = 21000, ["Colend"] = 23000, ["Collapse"] = 9900, ["Collapse_bottom"] = 51000, ["Collapse_top"] = 52000, ["Collapsebottom"] = 3900, ["Collapsetop"] = 3800, ["Collapsible_list"] = 52000, ["Collapsible_option"] = 135000, ["College"] = 9100, ["CollegePrimaryHeader"] = 6200, ["CollegePrimaryStyle"] = 98000, ["CollegeSecondaryStyle"] = 3400, ["College_Athlete_Recruit_End"] = 3000, ["College_Athlete_Recruit_Entry"] = 3100, ["College_Athlete_Recruit_Start"] = 3100, ["College_athlete_recruit_end"] = 4200, ["College_athlete_recruit_entry"] = 4300, ["College_athlete_recruit_start"] = 4300, ["College_color_list"] = 3900, ["College_stripe_style"] = 2100, ["Colon"] = 18000, ["Color"] = 474000, ["Color_box"] = 74000, ["Colorbox"] = 3500, ["Colorbull"] = 4800, ["Colored_link"] = 64000, ["Colors"] = 3800, ["Colour"] = 5800, ["Colour_box"] = 2000, ["Coloured_link"] = 6900, ["Column"] = 2400, ["Column/styles.css"] = 2500, ["Columns-end"] = 2200, ["Columns-list"] = 96000, ["Columns-start"] = 2200, ["Comedy"] = 2600, ["Comic_Book_DB"] = 3500, ["Comicbookdb"] = 3500, ["Comics-replaceability"] = 2900, ["Comics_infobox_sec/creator_nat"] = 2800, ["Comics_infobox_sec/formcat"] = 3300, ["Comics_infobox_sec/genre"] = 4100, ["Comics_infobox_sec/genrecat"] = 3700, ["Comics_infobox_sec/styles.css"] = 8200, ["Comicsproj"] = 28000, ["Comma_separated_entries"] = 432000, ["Comma_separated_values"] = 49000, ["Comment"] = 5200, ["Committed_identity"] = 3000, ["Committed_identity/styles.css"] = 3000, ["Commons"] = 65000, ["Commons-inline"] = 20000, ["Commons_cat"] = 48000, ["Commons_category"] = 849000, ["Commons_category-inline"] = 150000, ["Commons_category_inline"] = 6100, ["Commonscat"] = 64000, ["Commonscat-inline"] = 17000, ["Commonscat_inline"] = 2400, ["Commonscatinline"] = 6800, ["Compact_TOC"] = 7000, ["Compact_ToC"] = 4700, ["Compare"] = 5300, ["Compare_image_with_Wikidata"] = 10000, ["Composition_bar"] = 11000, ["Confirmed"] = 17000, ["Confused"] = 2800, ["Confusing"] = 2300, ["CongBio"] = 9600, ["CongLinks"] = 4600, ["Connected_contributor"] = 18000, ["Connected_contributor_(paid)"] = 6900, ["Constellation_navbox"] = 6800, ["Container"] = 11000, ["Container_cat"] = 7600, ["Container_category"] = 43000, ["Containercat"] = 2600, ["Contains_special_characters"] = 4300, ["Contains_special_characters/core"] = 4300, ["Contains_special_characters/styles.css"] = 4300, ["Content_category"] = 7700, ["Contentious_topics/list"] = 13000, ["Contentious_topics/page_restriction_editnotice_base"] = 2700, ["Contentious_topics/page_restriction_talk_notice_base"] = 3800, ["Contentious_topics/talk_notice"] = 6300, ["Context"] = 2700, ["Continent2continental"] = 16000, ["Continent_adjective_to_noun"] = 2200, ["Controversial"] = 3300, ["Convert"] = 1180000, ["Convinfobox"] = 207000, ["Convinfobox/2"] = 17000, ["Convinfobox/3"] = 120000, ["Convinfobox/pri2"] = 64000, ["Convinfobox/prisec2"] = 3400, ["Convinfobox/prisec3"] = 26000, ["Convinfobox/sec2"] = 9300, ["Coord"] = 1340000, ["Coord_missing"] = 94000, ["Coord_missing/CheckCat"] = 93000, ["Coords"] = 7800, ["Copied"] = 19000, ["Copy_edit"] = 2700, ["Copy_to_Wikimedia_Commons"] = 107000, ["Cospar"] = 2600, ["Cot"] = 12000, ["Count"] = 673000, ["Country2continent"] = 36000, ["Country2continental"] = 2400, ["Country2nationality"] = 321000, ["CountryPrefixThe"] = 111000, ["Country_abbreviation"] = 89000, ["Country_alias"] = 16000, ["Country_at_games_navbox"] = 2700, ["Country_at_games_navbox/below"] = 2700, ["Country_data"] = 7300, ["Country_data_AFG"] = 2300, ["Country_data_ALB"] = 6900, ["Country_data_ALG"] = 9600, ["Country_data_AND"] = 3100, ["Country_data_ANG"] = 4000, ["Country_data_ARG"] = 48000, ["Country_data_ARM"] = 7600, ["Country_data_AUS"] = 77000, ["Country_data_AUT"] = 46000, ["Country_data_AZE"] = 9500, ["Country_data_Afghanistan"] = 13000, ["Country_data_Alaska"] = 2100, ["Country_data_Albania"] = 20000, ["Country_data_Alberta"] = 3700, ["Country_data_Algeria"] = 25000, ["Country_data_American_Samoa"] = 3000, ["Country_data_Andorra"] = 8200, ["Country_data_Angola"] = 12000, ["Country_data_Anguilla"] = 2500, ["Country_data_Antigua_and_Barbuda"] = 6300, ["Country_data_Apulia"] = 7900, ["Country_data_Argentina"] = 82000, ["Country_data_Arizona"] = 2300, ["Country_data_Arkansas"] = 2000, ["Country_data_Armenia"] = 22000, ["Country_data_Aruba"] = 3700, ["Country_data_Australia"] = 128000, ["Country_data_Austria"] = 79000, ["Country_data_Azerbaijan"] = 28000, ["Country_data_BAH"] = 4100, ["Country_data_BAN"] = 4100, ["Country_data_BAR"] = 2400, ["Country_data_BEL"] = 52000, ["Country_data_BER"] = 2400, ["Country_data_BHR"] = 4900, ["Country_data_BIH"] = 13000, ["Country_data_BLR"] = 24000, ["Country_data_BOL"] = 6000, ["Country_data_BOT"] = 2500, ["Country_data_BRA"] = 59000, ["Country_data_BUL"] = 26000, ["Country_data_Bahamas"] = 9900, ["Country_data_Bahrain"] = 12000, ["Country_data_Bangladesh"] = 19000, ["Country_data_Barbados"] = 8200, ["Country_data_Belarus"] = 44000, ["Country_data_Belgium"] = 90000, ["Country_data_Belize"] = 5300, ["Country_data_Benin"] = 7600, ["Country_data_Bermuda"] = 5900, ["Country_data_Bhutan"] = 4800, ["Country_data_Bolivia"] = 15000, ["Country_data_Bosnia_and_Herzegovina"] = 29000, ["Country_data_Botswana"] = 9400, ["Country_data_Brazil"] = 103000, ["Country_data_British_Columbia"] = 3500, ["Country_data_British_Raj"] = 2300, ["Country_data_British_Virgin_Islands"] = 3300, ["Country_data_Brunei"] = 6400, ["Country_data_Bulgaria"] = 53000, ["Country_data_Burkina_Faso"] = 10000, ["Country_data_Burma"] = 2700, ["Country_data_Burundi"] = 6300, ["Country_data_CAM"] = 2200, ["Country_data_CAN"] = 60000, ["Country_data_CGO"] = 2600, ["Country_data_CHE"] = 4900, ["Country_data_CHI"] = 18000, ["Country_data_CHL"] = 2100, ["Country_data_CHN"] = 43000, ["Country_data_CIV"] = 8400, ["Country_data_CMR"] = 9000, ["Country_data_COD"] = 3300, ["Country_data_COL"] = 26000, ["Country_data_CPV"] = 2100, ["Country_data_CRC"] = 6700, ["Country_data_CRO"] = 34000, ["Country_data_CUB"] = 10000, ["Country_data_CYP"] = 9400, ["Country_data_CZE"] = 47000, ["Country_data_California"] = 6000, ["Country_data_Cambodia"] = 9100, ["Country_data_Cameroon"] = 18000, ["Country_data_Canada"] = 124000, ["Country_data_Cape_Verde"] = 6500, ["Country_data_Castile_and_León"] = 2000, ["Country_data_Catalonia"] = 3100, ["Country_data_Cayman_Islands"] = 4200, ["Country_data_Central_African_Republic"] = 5200, ["Country_data_Chad"] = 5600, ["Country_data_Chile"] = 41000, ["Country_data_China"] = 85000, ["Country_data_Chinese_Taipei"] = 20000, ["Country_data_Colombia"] = 47000, ["Country_data_Colorado"] = 5700, ["Country_data_Comoros"] = 4500, ["Country_data_Confederate_States_of_America"] = 3000, ["Country_data_Connecticut"] = 3200, ["Country_data_Cook_Islands"] = 3900, ["Country_data_Costa_Rica"] = 18000, ["Country_data_Croatia"] = 58000, ["Country_data_Cuba"] = 23000, ["Country_data_Curaçao"] = 3600, ["Country_data_Cyprus"] = 23000, ["Country_data_Czech_Republic"] = 83000, ["Country_data_Czechoslovakia"] = 19000, ["Country_data_DEN"] = 35000, ["Country_data_DEU"] = 8900, ["Country_data_DNK"] = 3700, ["Country_data_DOM"] = 7500, ["Country_data_DRC"] = 2100, ["Country_data_Democratic_Republic_of_the_Congo"] = 13000, ["Country_data_Denmark"] = 70000, ["Country_data_Djibouti"] = 4700, ["Country_data_Dominica"] = 4300, ["Country_data_Dominican_Republic"] = 18000, ["Country_data_ECU"] = 12000, ["Country_data_EGY"] = 14000, ["Country_data_ENG"] = 48000, ["Country_data_ESA"] = 2300, ["Country_data_ESP"] = 74000, ["Country_data_EST"] = 15000, ["Country_data_ETH"] = 3700, ["Country_data_EU"] = 3700, ["Country_data_East_Germany"] = 15000, ["Country_data_East_Timor"] = 5100, ["Country_data_Ecuador"] = 25000, ["Country_data_Egypt"] = 32000, ["Country_data_El_Salvador"] = 13000, ["Country_data_Empire_of_Japan"] = 4000, ["Country_data_England"] = 98000, ["Country_data_Equatorial_Guinea"] = 5300, ["Country_data_Eritrea"] = 5500, ["Country_data_Estonia"] = 35000, ["Country_data_Eswatini"] = 5100, ["Country_data_Ethiopia"] = 13000, ["Country_data_Europe"] = 2400, ["Country_data_European_Union"] = 7400, ["Country_data_FIJ"] = 3900, ["Country_data_FIN"] = 35000, ["Country_data_FRA"] = 100000, ["Country_data_FRG"] = 15000, ["Country_data_FRO"] = 2100, ["Country_data_FR_Yugoslavia"] = 4000, ["Country_data_Faroe_Islands"] = 5500, ["Country_data_Federated_States_of_Micronesia"] = 3100, ["Country_data_Fiji"] = 12000, ["Country_data_Finland"] = 70000, ["Country_data_Florida"] = 6600, ["Country_data_France"] = 195000, ["Country_data_French_Guiana"] = 2200, ["Country_data_French_Polynesia"] = 3900, ["Country_data_GAB"] = 2500, ["Country_data_GAM"] = 2100, ["Country_data_GBR"] = 56000, ["Country_data_GDR"] = 8600, ["Country_data_GEO"] = 14000, ["Country_data_GER"] = 84000, ["Country_data_GHA"] = 10000, ["Country_data_GRE"] = 26000, ["Country_data_GUA"] = 5100, ["Country_data_GUI"] = 3300, ["Country_data_GUY"] = 2300, ["Country_data_Gabon"] = 7700, ["Country_data_Gambia"] = 7000, ["Country_data_Georgia"] = 11000, ["Country_data_Georgia_(U.S._state)"] = 2800, ["Country_data_Georgia_(country)"] = 29000, ["Country_data_German_Empire"] = 5400, ["Country_data_Germany"] = 153000, ["Country_data_Ghana"] = 24000, ["Country_data_Gibraltar"] = 5000, ["Country_data_Great_Britain"] = 75000, ["Country_data_Greece"] = 58000, ["Country_data_Greenland"] = 2900, ["Country_data_Grenada"] = 5400, ["Country_data_Guadeloupe"] = 2900, ["Country_data_Guam"] = 4900, ["Country_data_Guatemala"] = 13000, ["Country_data_Guernsey"] = 2200, ["Country_data_Guinea"] = 8600, ["Country_data_Guinea-Bissau"] = 5200, ["Country_data_Guyana"] = 7500, ["Country_data_HAI"] = 3300, ["Country_data_HKG"] = 13000, ["Country_data_HON"] = 4400, ["Country_data_HUN"] = 38000, ["Country_data_Haiti"] = 9000, ["Country_data_Honduras"] = 12000, ["Country_data_Hong_Kong"] = 27000, ["Country_data_Hungary"] = 71000, ["Country_data_IDN"] = 5100, ["Country_data_INA"] = 11000, ["Country_data_IND"] = 31000, ["Country_data_IRE"] = 11000, ["Country_data_IRI"] = 5700, ["Country_data_IRL"] = 22000, ["Country_data_IRN"] = 6500, ["Country_data_IRQ"] = 4400, ["Country_data_ISL"] = 8800, ["Country_data_ISR"] = 21000, ["Country_data_ITA"] = 88000, ["Country_data_Iceland"] = 23000, ["Country_data_Illinois"] = 4500, ["Country_data_India"] = 111000, ["Country_data_Indiana"] = 2700, ["Country_data_Indonesia"] = 37000, ["Country_data_Iowa"] = 2900, ["Country_data_Iran"] = 92000, ["Country_data_Iraq"] = 14000, ["Country_data_Ireland"] = 35000, ["Country_data_Isle_of_Man"] = 2900, ["Country_data_Israel"] = 47000, ["Country_data_Italy"] = 147000, ["Country_data_Ivory_Coast"] = 18000, ["Country_data_JAM"] = 10000, ["Country_data_JOR"] = 4200, ["Country_data_JP"] = 8200, ["Country_data_JPN"] = 61000, ["Country_data_Jamaica"] = 22000, ["Country_data_Japan"] = 121000, ["Country_data_Jersey"] = 2600, ["Country_data_Jordan"] = 12000, ["Country_data_KAZ"] = 20000, ["Country_data_KEN"] = 7700, ["Country_data_KGZ"] = 4000, ["Country_data_KOR"] = 32000, ["Country_data_KOS"] = 2600, ["Country_data_KSA"] = 6300, ["Country_data_KUW"] = 4300, ["Country_data_Kazakhstan"] = 34000, ["Country_data_Kenya"] = 20000, ["Country_data_Kingdom_of_France"] = 2200, ["Country_data_Kingdom_of_Great_Britain"] = 4800, ["Country_data_Kingdom_of_Italy"] = 4200, ["Country_data_Kiribati"] = 3000, ["Country_data_Kosovo"] = 9200, ["Country_data_Kuwait"] = 12000, ["Country_data_Kyrgyzstan"] = 9600, ["Country_data_LAT"] = 15000, ["Country_data_LBN"] = 2500, ["Country_data_LIB"] = 2600, ["Country_data_LIE"] = 3300, ["Country_data_LIT"] = 3200, ["Country_data_LTU"] = 13000, ["Country_data_LUX"] = 11000, ["Country_data_LVA"] = 2600, ["Country_data_Laos"] = 7600, ["Country_data_Latvia"] = 33000, ["Country_data_Lebanon"] = 15000, ["Country_data_Lesotho"] = 5400, ["Country_data_Liberia"] = 7400, ["Country_data_Libya"] = 8900, ["Country_data_Liechtenstein"] = 8000, ["Country_data_Lithuania"] = 32000, ["Country_data_Luxembourg"] = 24000, ["Country_data_MAC"] = 2500, ["Country_data_MAD"] = 2100, ["Country_data_MAR"] = 13000, ["Country_data_MAS"] = 11000, ["Country_data_MDA"] = 7900, ["Country_data_MEX"] = 31000, ["Country_data_MGL"] = 3100, ["Country_data_MKD"] = 7800, ["Country_data_MLI"] = 4600, ["Country_data_MLT"] = 5800, ["Country_data_MNE"] = 8100, ["Country_data_MON"] = 3900, ["Country_data_MOZ"] = 2300, ["Country_data_MRI"] = 2200, ["Country_data_MYA"] = 3200, ["Country_data_MYS"] = 3800, ["Country_data_Macau"] = 6500, ["Country_data_Macedonia"] = 4900, ["Country_data_Madagascar"] = 9300, ["Country_data_Malawi"] = 5800, ["Country_data_Malaysia"] = 37000, ["Country_data_Maldives"] = 6400, ["Country_data_Mali"] = 13000, ["Country_data_Malta"] = 17000, ["Country_data_Manitoba"] = 2600, ["Country_data_Marshall_Islands"] = 3800, ["Country_data_Martinique"] = 2900, ["Country_data_Maryland"] = 3000, ["Country_data_Massachusetts"] = 3000, ["Country_data_Mauritania"] = 5900, ["Country_data_Mauritius"] = 8300, ["Country_data_Mexico"] = 68000, ["Country_data_Michigan"] = 4400, ["Country_data_Minnesota"] = 3800, ["Country_data_Missouri"] = 2000, ["Country_data_Moldova"] = 20000, ["Country_data_Monaco"] = 10000, ["Country_data_Mongolia"] = 10000, ["Country_data_Montana"] = 2100, ["Country_data_Montenegro"] = 19000, ["Country_data_Montserrat"] = 2500, ["Country_data_Morocco"] = 28000, ["Country_data_Mozambique"] = 7500, ["Country_data_Myanmar"] = 14000, ["Country_data_NAM"] = 3600, ["Country_data_NED"] = 62000, ["Country_data_NEP"] = 3000, ["Country_data_NGA"] = 8400, ["Country_data_NGR"] = 8300, ["Country_data_NIR"] = 10000, ["Country_data_NLD"] = 6300, ["Country_data_NOR"] = 31000, ["Country_data_NZ"] = 3200, ["Country_data_NZL"] = 33000, ["Country_data_Namibia"] = 10000, ["Country_data_Nauru"] = 2600, ["Country_data_Nazi_Germany"] = 9900, ["Country_data_Nepal"] = 17000, ["Country_data_Netherlands"] = 115000, ["Country_data_Netherlands_Antilles"] = 2300, ["Country_data_New_Brunswick"] = 2500, ["Country_data_New_Caledonia"] = 3400, ["Country_data_New_Jersey"] = 4200, ["Country_data_New_South_Wales"] = 5800, ["Country_data_New_York"] = 4900, ["Country_data_New_York_(state)"] = 7000, ["Country_data_New_Zealand"] = 68000, ["Country_data_Newfoundland_and_Labrador"] = 2300, ["Country_data_Nicaragua"] = 8500, ["Country_data_Niger"] = 6100, ["Country_data_Nigeria"] = 33000, ["Country_data_North_Carolina"] = 3500, ["Country_data_North_Korea"] = 14000, ["Country_data_North_Macedonia"] = 18000, ["Country_data_Northern_Ireland"] = 16000, ["Country_data_Northern_Mariana_Islands"] = 2900, ["Country_data_Norway"] = 74000, ["Country_data_Nova_Scotia"] = 2400, ["Country_data_OMA"] = 2900, ["Country_data_Ohio"] = 4800, ["Country_data_Oman"] = 9000, ["Country_data_Ontario"] = 3800, ["Country_data_Ottoman_Empire"] = 2500, ["Country_data_PAK"] = 8200, ["Country_data_PAN"] = 5900, ["Country_data_PAR"] = 10000, ["Country_data_PER"] = 13000, ["Country_data_PHI"] = 12000, ["Country_data_PHL"] = 2600, ["Country_data_PNG"] = 2700, ["Country_data_POL"] = 51000, ["Country_data_POR"] = 32000, ["Country_data_PRC"] = 2200, ["Country_data_PRK"] = 4700, ["Country_data_PRT"] = 2900, ["Country_data_PUR"] = 7400, ["Country_data_Pakistan"] = 29000, ["Country_data_Palau"] = 3100, ["Country_data_Palestine"] = 6900, ["Country_data_Panama"] = 16000, ["Country_data_Papua_New_Guinea"] = 8100, ["Country_data_Paraguay"] = 21000, ["Country_data_Pennsylvania"] = 3700, ["Country_data_People's_Republic_of_China"] = 3200, ["Country_data_Peru"] = 31000, ["Country_data_Philippines"] = 35000, ["Country_data_Poland"] = 152000, ["Country_data_Portugal"] = 69000, ["Country_data_Prussia"] = 2600, ["Country_data_Puerto_Rico"] = 18000, ["Country_data_QAT"] = 8100, ["Country_data_Qatar"] = 18000, ["Country_data_Quebec"] = 4200, ["Country_data_ROM"] = 13000, ["Country_data_ROU"] = 27000, ["Country_data_RSA"] = 32000, ["Country_data_RUS"] = 63000, ["Country_data_RWA"] = 2100, ["Country_data_Republic_of_China"] = 5700, ["Country_data_Republic_of_Ireland"] = 26000, ["Country_data_Republic_of_the_Congo"] = 7900, ["Country_data_Romania"] = 69000, ["Country_data_Russia"] = 116000, ["Country_data_Russian_Empire"] = 4900, ["Country_data_Rwanda"] = 7800, ["Country_data_SAM"] = 3200, ["Country_data_SCG"] = 3100, ["Country_data_SCO"] = 27000, ["Country_data_SEN"] = 8200, ["Country_data_SER"] = 3600, ["Country_data_SGP"] = 3000, ["Country_data_SIN"] = 7100, ["Country_data_SLO"] = 20000, ["Country_data_SLV"] = 3100, ["Country_data_SMR"] = 3200, ["Country_data_SPA"] = 5000, ["Country_data_SRB"] = 27000, ["Country_data_SRI"] = 4800, ["Country_data_SUI"] = 43000, ["Country_data_SUR"] = 2100, ["Country_data_SVK"] = 29000, ["Country_data_SVN"] = 6800, ["Country_data_SWE"] = 58000, ["Country_data_SWI"] = 4900, ["Country_data_SYR"] = 3700, ["Country_data_Saint_Kitts_and_Nevis"] = 4900, ["Country_data_Saint_Lucia"] = 5100, ["Country_data_Saint_Vincent_and_the_Grenadines"] = 5000, ["Country_data_Samoa"] = 7800, ["Country_data_San_Marino"] = 8600, ["Country_data_Saskatchewan"] = 2900, ["Country_data_Saudi_Arabia"] = 20000, ["Country_data_Scotland"] = 52000, ["Country_data_Senegal"] = 18000, ["Country_data_Serbia"] = 55000, ["Country_data_Serbia_and_Montenegro"] = 5100, ["Country_data_Seychelles"] = 5600, ["Country_data_Sierra_Leone"] = 7500, ["Country_data_Singapore"] = 27000, ["Country_data_Slovakia"] = 51000, ["Country_data_Slovenia"] = 43000, ["Country_data_Solomon_Islands"] = 4800, ["Country_data_Somalia"] = 6300, ["Country_data_South_Africa"] = 71000, ["Country_data_South_Carolina"] = 3200, ["Country_data_South_Korea"] = 67000, ["Country_data_South_Sudan"] = 4300, ["Country_data_Soviet_Union"] = 37000, ["Country_data_Spain"] = 135000, ["Country_data_Sri_Lanka"] = 19000, ["Country_data_Sudan"] = 8300, ["Country_data_Suriname"] = 6600, ["Country_data_Sweden"] = 102000, ["Country_data_Switzerland"] = 84000, ["Country_data_Syria"] = 16000, ["Country_data_São_Tomé_and_Príncipe"] = 3400, ["Country_data_TAN"] = 2700, ["Country_data_TCH"] = 11000, ["Country_data_THA"] = 22000, ["Country_data_TJK"] = 2800, ["Country_data_TKM"] = 2900, ["Country_data_TOG"] = 2100, ["Country_data_TPE"] = 16000, ["Country_data_TRI"] = 4800, ["Country_data_TTO"] = 2000, ["Country_data_TUN"] = 11000, ["Country_data_TUR"] = 29000, ["Country_data_Taiwan"] = 13000, ["Country_data_Tajikistan"] = 9200, ["Country_data_Tanzania"] = 13000, ["Country_data_Texas"] = 5300, ["Country_data_Thailand"] = 45000, ["Country_data_Togo"] = 7200, ["Country_data_Tonga"] = 6500, ["Country_data_Trinidad_and_Tobago"] = 14000, ["Country_data_Tunisia"] = 23000, ["Country_data_Turkey"] = 72000, ["Country_data_Turkmenistan"] = 8100, ["Country_data_Turks_and_Caicos_Islands"] = 2800, ["Country_data_Tuvalu"] = 2900, ["Country_data_U.S."] = 2100, ["Country_data_U.S._Virgin_Islands"] = 4900, ["Country_data_UAE"] = 9500, ["Country_data_UGA"] = 4300, ["Country_data_UK"] = 19000, ["Country_data_UKGBI"] = 3100, ["Country_data_UKR"] = 38000, ["Country_data_URS"] = 15000, ["Country_data_URU"] = 15000, ["Country_data_US"] = 4900, ["Country_data_USA"] = 135000, ["Country_data_USSR"] = 4500, ["Country_data_UZB"] = 12000, ["Country_data_Uganda"] = 13000, ["Country_data_Ukraine"] = 75000, ["Country_data_United_Arab_Emirates"] = 20000, ["Country_data_United_Kingdom"] = 89000, ["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 4500, ["Country_data_United_Nations"] = 4100, ["Country_data_United_States"] = 285000, ["Country_data_United_States_of_America"] = 4900, ["Country_data_Uruguay"] = 30000, ["Country_data_Uzbekistan"] = 21000, ["Country_data_VEN"] = 17000, ["Country_data_VIE"] = 6600, ["Country_data_Vanuatu"] = 5200, ["Country_data_Vatican_City"] = 2400, ["Country_data_Venezuela"] = 34000, ["Country_data_Vietnam"] = 24000, ["Country_data_Virginia"] = 2900, ["Country_data_WAL"] = 18000, ["Country_data_Wales"] = 34000, ["Country_data_Washington"] = 3400, ["Country_data_Washington,_D.C."] = 2200, ["Country_data_Washington_(state)"] = 3600, ["Country_data_West_Germany"] = 24000, ["Country_data_West_Indies"] = 2600, ["Country_data_Wisconsin"] = 5200, ["Country_data_YUG"] = 9900, ["Country_data_Yemen"] = 7900, ["Country_data_Yugoslavia"] = 18000, ["Country_data_ZAF"] = 4800, ["Country_data_ZAM"] = 3400, ["Country_data_ZIM"] = 8400, ["Country_data_Zambia"] = 9900, ["Country_data_Zimbabwe"] = 18000, ["Country_flagbio"] = 28000, ["Country_name"] = 23000, ["Country_showdata"] = 6200, ["Country_topics"] = 22000, ["County"] = 7900, ["County_(judet)_of_Romania"] = 3300, ["Course_assignment"] = 4200, ["Course_details"] = 6400, ["Course_instructor"] = 2500, ["Cquote"] = 37000, ["Cr"] = 4300, ["Cr-rt"] = 2100, ["Create_taxonomy/link"] = 109000, ["Cref2"] = 2300, ["Cricinfo"] = 24000, ["Cricketarchive"] = 3100, ["Croatian_Census_2021"] = 3600, ["Cross"] = 3100, ["Crossreference"] = 2600, ["Crossreference/styles.css"] = 2600, ["Csv"] = 3000, ["Ct"] = 12000, ["Curlie"] = 6800, ["Currency"] = 3700, ["Current_events"] = 8300, ["Current_events/styles.css"] = 8300, ["Currentdate"] = 23000, ["Cvt"] = 106000, ["Cycling_Archives"] = 4300, ["Cycling_archives"] = 2400, ["Cycling_data_LTD"] = 2100, ["Cycling_data_MOV_men"] = 2000, ["Cycling_data_TJV"] = 2100, ["Cycling_team_link"] = 12000, ["Module:CFB_schedule"] = 26000, ["Module:CallAssert"] = 247000, ["Module:CanadaByProvinceCatNav"] = 8400, ["Module:Cat_main"] = 201000, ["Module:Catalog_lookup_link"] = 518000, ["Module:Category_described_in_year"] = 5700, ["Module:Category_described_in_year/conf"] = 5700, ["Module:Category_handler"] = 4560000, ["Module:Category_handler/blacklist"] = 4560000, ["Module:Category_handler/config"] = 4560000, ["Module:Category_handler/data"] = 4560000, ["Module:Category_handler/shared"] = 4560000, ["Module:Category_more_if_exists"] = 40000, ["Module:Category_pair"] = 6300, ["Module:Category_see_also"] = 40000, ["Module:Category_series_navigation"] = 486000, ["Module:Celestial_object_quadrangle"] = 2300, ["Module:Check_DYK_hook"] = 115000, ["Module:Check_for_clobbered_parameters"] = 1240000, ["Module:Check_for_deprecated_parameters"] = 63000, ["Module:Check_for_unknown_parameters"] = 19700000, ["Module:Check_isxn"] = 482000, ["Module:Check_winner_by_scores"] = 13000, ["Module:Checkuser"] = 77000, ["Module:Chem2"] = 5200, ["Module:Chem2/styles.css"] = 5200, ["Module:Citation/CS1"] = 5650000, ["Module:Citation/CS1/COinS"] = 5650000, ["Module:Citation/CS1/Configuration"] = 5650000, ["Module:Citation/CS1/Date_validation"] = 5650000, ["Module:Citation/CS1/Identifiers"] = 5650000, ["Module:Citation/CS1/Suggestions"] = 25000, ["Module:Citation/CS1/Utilities"] = 5650000, ["Module:Citation/CS1/Whitelist"] = 5650000, ["Module:Citation/CS1/styles.css"] = 5790000, ["Module:Cite_IUCN"] = 58000, ["Module:Cite_Q"] = 48000, ["Module:Cite_tweet"] = 37000, ["Module:Cite_web"] = 41000, ["Module:Clade"] = 7800, ["Module:Class"] = 10300000, ["Module:Class/definition.json"] = 10300000, ["Module:Class/styles.css"] = 9400000, ["Module:Class_mask"] = 10600000, ["Module:Clickable_button_2"] = 974000, ["Module:Collapsible_list"] = 54000, ["Module:College_color"] = 129000, ["Module:College_color/data"] = 129000, ["Module:Color_contrast"] = 505000, ["Module:Color_contrast/colors"] = 508000, ["Module:Commons_link"] = 260000, ["Module:Complex_date"] = 66000, ["Module:Convert"] = 1250000, ["Module:Convert/data"] = 1250000, ["Module:Convert/helper"] = 8800, ["Module:Convert/text"] = 1250000, ["Module:Convert/wikidata"] = 3300, ["Module:Convert/wikidata/data"] = 3300, ["Module:ConvertNumeric"] = 15000, ["Module:Convert_character_width"] = 2800, ["Module:Convert_character_width/data"] = 2800, ["Module:Coordinates"] = 1340000, ["Module:Coordinates/styles.css"] = 1340000, ["Module:Copied"] = 19000, ["Module:CountryAdjectiveDemonym"] = 45000, ["Module:CountryAdjectiveDemonym/Adjectives"] = 45000, ["Module:CountryAdjectiveDemonym/Demonyms"] = 45000, ["Module:CountryAdjectiveDemonym/The"] = 45000, ["Module:CountryData"] = 143000, ["Module:CountryData/cacheA"] = 12000, ["Module:CountryData/cacheB"] = 8400, ["Module:CountryData/cacheC"] = 12000, ["Module:CountryData/cacheD"] = 4600, ["Module:CountryData/cacheE"] = 2800, ["Module:CountryData/cacheF"] = 2700, ["Module:CountryData/cacheG"] = 2700, ["Module:CountryData/summary"] = 143000, ["Module:Country_adjective"] = 4400, ["Module:Country_alias"] = 53000, ["Module:Country_alias/data"] = 53000, ["Module:Currency"] = 3700, ["Module:Currency/Presentation"] = 3700, } d1b95c4fa4b55f69795be7c6bde731f2d8bdb767 3052 3051 2023-11-09T17:59:08Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/C]] Scribunto text/plain return { ["C"] = 660000, ["C-Class"] = 17000, ["C-SPAN"] = 13000, ["C-cmn"] = 2300, ["C-pl"] = 51000, ["C."] = 4300, ["CAN"] = 20000, ["CANelec"] = 14000, ["CANelec/gain"] = 2600, ["CANelec/hold"] = 4900, ["CANelec/source"] = 7100, ["CANelec/top"] = 6500, ["CANelec/total"] = 6600, ["CAS"] = 3800, ["CBB_Standings_End"] = 15000, ["CBB_Standings_Entry"] = 14000, ["CBB_Standings_Start"] = 14000, ["CBB_Yearly_Record_End"] = 3100, ["CBB_Yearly_Record_Entry"] = 3100, ["CBB_Yearly_Record_Start"] = 3000, ["CBB_Yearly_Record_Subhead"] = 3700, ["CBB_Yearly_Record_Subtotal"] = 2900, ["CBB_roster/Footer"] = 8200, ["CBB_roster/Header"] = 8200, ["CBB_roster/Player"] = 8200, ["CBB_schedule_end"] = 11000, ["CBB_schedule_entry"] = 11000, ["CBB_schedule_start"] = 11000, ["CBB_standings_end"] = 16000, ["CBB_standings_entry"] = 16000, ["CBB_standings_start"] = 16000, ["CBB_yearly_record_end"] = 4100, ["CBB_yearly_record_end/legend"] = 3700, ["CBB_yearly_record_entry"] = 4100, ["CBB_yearly_record_start"] = 4000, ["CBB_yearly_record_subhead"] = 3800, ["CBB_yearly_record_subtotal"] = 3800, ["CBSB_Standings_End"] = 4300, ["CBSB_Standings_Entry"] = 4300, ["CBSB_Standings_Start"] = 4300, ["CBSB_link"] = 3500, ["CBSB_standings_end"] = 4400, ["CBSB_standings_entry"] = 4500, ["CBSB_standings_start"] = 4500, ["CC0"] = 3800, ["CENTURY"] = 16000, ["CFB_Standings_End"] = 34000, ["CFB_Standings_Entry"] = 34000, ["CFB_Standings_Start"] = 34000, ["CFB_Yearly_Record_End"] = 6900, ["CFB_Yearly_Record_End/legend"] = 2400, ["CFB_Yearly_Record_Entry"] = 6900, ["CFB_Yearly_Record_Start"] = 6900, ["CFB_Yearly_Record_Subhead"] = 6900, ["CFB_Yearly_Record_Subtotal"] = 6800, ["CFB_schedule"] = 26000, ["CFB_schedule_entry"] = 19000, ["CFB_standings_end"] = 34000, ["CFB_standings_entry"] = 34000, ["CFB_standings_start"] = 34000, ["CFL_Year"] = 5700, ["CGF_year"] = 2600, ["CHE"] = 10000, ["CHI"] = 2800, ["CHL"] = 3700, ["CHN"] = 11000, ["CN"] = 3500, ["CO2"] = 3300, ["COI"] = 14000, ["COIUL"] = 130000, ["COI_editnotice"] = 6700, ["COL"] = 5000, ["COLON"] = 13000, ["CRI"] = 2200, ["CRO"] = 5600, ["CSK"] = 2800, ["CSS_image_crop"] = 4700, ["CUB"] = 3800, ["CURRENTDATE"] = 3600, ["CURRENTMINUTE"] = 2500, ["CYP"] = 2100, ["CZE"] = 15000, ["Calendar"] = 2400, ["California/color"] = 12000, ["Call_sign_disambiguation"] = 3100, ["Campaignbox"] = 23000, ["CanProvName"] = 14000, ["CanadaByProvinceCatNav"] = 8400, ["CanadaProvinceThe"] = 4000, ["Canadian_English"] = 7100, ["Canadian_Parliament_links"] = 5100, ["Canadian_election_result"] = 14000, ["Canadian_election_result/gain"] = 2700, ["Canadian_election_result/hold"] = 5000, ["Canadian_election_result/source"] = 8200, ["Canadian_election_result/top"] = 14000, ["Canadian_election_result/total"] = 11000, ["Canadian_party_colour"] = 8300, ["Canadian_party_colour/colour"] = 18000, ["Canadian_party_colour/colour/default"] = 18000, ["Canadian_party_colour/name"] = 15000, ["Canadian_party_colour/name/default"] = 6900, ["Canned_search"] = 5900, ["Cascite"] = 15000, ["Caselaw_source"] = 4000, ["Cassini-Ehess"] = 2900, ["Cast_listing"] = 16000, ["Castlist"] = 2600, ["Cat"] = 360000, ["CatAutoTOC"] = 664000, ["CatAutoTOC/core"] = 663000, ["CatRel"] = 3800, ["CatTrack"] = 3100, ["Cat_class"] = 6900, ["Cat_in_use"] = 50000, ["Cat_main"] = 201000, ["Cat_more"] = 102000, ["Cat_more_if_exists"] = 40000, ["Cat_see_also"] = 3600, ["Catalog_lookup_link"] = 518000, ["Category-Class"] = 14000, ["Category-inline"] = 8700, ["Category_TOC"] = 72000, ["Category_TOC/tracking"] = 72000, ["Category_U.S._State_elections_by_year"] = 7300, ["Category_U.S._State_elections_by_year/core"] = 7300, ["Category_class"] = 36000, ["Category_class/column"] = 36000, ["Category_class/second_row_column"] = 36000, ["Category_described_in_year"] = 5700, ["Category_diffuse"] = 7900, ["Category_disambiguation"] = 2400, ["Category_disambiguation/category_link"] = 2400, ["Category_explanation"] = 276000, ["Category_handler"] = 3330000, ["Category_ifexist"] = 5100, ["Category_importance"] = 10000, ["Category_importance/column"] = 10000, ["Category_importance/second_row_column"] = 10000, ["Category_link"] = 137000, ["Category_link_with_count"] = 7000, ["Category_more"] = 112000, ["Category_more_if_exists"] = 40000, ["Category_ordered_by_date"] = 11000, ["Category_other"] = 910000, ["Category_redirect"] = 109000, ["Category_see_also"] = 40000, ["Category_see_also/Category_pair_check"] = 40000, ["Category_see_also_if_exists"] = 73000, ["Category_see_also_if_exists_2"] = 89000, ["Category_series_navigation"] = 486000, ["Category_title"] = 2400, ["Catexp"] = 8000, ["CathEncy"] = 2300, ["Catholic"] = 4000, ["Catholic_Encyclopedia"] = 5100, ["Catmain"] = 28000, ["Catmore"] = 9400, ["Cbb_link"] = 8800, ["Cbignore"] = 100000, ["Cbsb_link"] = 2100, ["Cc-by-2.5"] = 3700, ["Cc-by-3.0"] = 8400, ["Cc-by-sa-2.5"] = 2500, ["Cc-by-sa-2.5,2.0,1.0"] = 2600, ["Cc-by-sa-3.0"] = 25000, ["Cc-by-sa-3.0,2.5,2.0,1.0"] = 2200, ["Cc-by-sa-3.0-migrated"] = 23000, ["Cc-by-sa-4.0"] = 10000, ["Cc-zero"] = 3700, ["CensusAU"] = 9100, ["Census_2016_AUS"] = 6800, ["Cent"] = 5800, ["Center"] = 291000, ["Centralized_discussion"] = 6200, ["Centralized_discussion/core"] = 6200, ["Centralized_discussion/styles.css"] = 6200, ["Centre"] = 3300, ["Century"] = 2100, ["Century_name_from_decade"] = 2400, ["Century_name_from_decade_or_year"] = 89000, ["Century_name_from_title_decade"] = 7700, ["Century_name_from_title_year"] = 7600, ["Certification_Cite/Title"] = 31000, ["Certification_Cite/URL"] = 34000, ["Certification_Cite/archivedate"] = 6100, ["Certification_Cite/archiveurl"] = 6100, ["Certification_Cite_Ref"] = 30000, ["Certification_Table_Bottom"] = 30000, ["Certification_Table_Entry"] = 31000, ["Certification_Table_Entry/Foot"] = 29000, ["Certification_Table_Entry/Foot/helper"] = 29000, ["Certification_Table_Entry/Region"] = 30000, ["Certification_Table_Entry/Sales"] = 29000, ["Certification_Table_Entry/Sales/AustrianPeriod"] = 2000, ["Certification_Table_Entry/Sales/BelgianPeriod"] = 2100, ["Certification_Table_Entry/Sales/DanishPeriod"] = 3300, ["Certification_Table_Entry/Sales/DanishPeriodHelper1"] = 3300, ["Certification_Table_Entry/Sales/DanishPeriodHelper2"] = 3300, ["Certification_Table_Entry/Sales/GermanPeriod"] = 4000, ["Certification_Table_Entry/Sales/ItalianHelper"] = 3300, ["Certification_Table_Entry/Sales/NewZealandPeriod"] = 2100, ["Certification_Table_Entry/Sales/SwedishPeriod"] = 2100, ["Certification_Table_Separator"] = 2400, ["Certification_Table_Top"] = 31000, ["Cfb_link"] = 24000, ["Cfd_result"] = 2400, ["Cfdend"] = 4000, ["Chart"] = 4600, ["Chart/end"] = 4700, ["Chart/start"] = 4700, ["Chart_bottom"] = 3600, ["Chart_top"] = 3600, ["Check_completeness_of_transclusions"] = 40000, ["Check_talk"] = 31000, ["Check_talk_wp"] = 1420000, ["Check_winner_by_scores"] = 13000, ["CheckedSockpuppet"] = 7200, ["Checked_sockpuppet"] = 18000, ["Checkedsockpuppet"] = 5300, ["Checkip"] = 13000, ["Checkuser"] = 76000, ["Checkuserblock-account"] = 19000, ["Chem"] = 5800, ["Chem/atom"] = 5800, ["Chem/link"] = 5800, ["Chem2"] = 5200, ["Chem_molar_mass"] = 18000, ["Chem_molar_mass/format"] = 18000, ["Chembox"] = 14000, ["Chembox/styles.css"] = 14000, ["Chembox_3DMet"] = 14000, ["Chembox_3DMet/format"] = 14000, ["Chembox_AllOtherNames"] = 13000, ["Chembox_AllOtherNames/format"] = 13000, ["Chembox_Appearance"] = 6200, ["Chembox_BoilingPt"] = 3800, ["Chembox_CASNo"] = 14000, ["Chembox_CASNo/format"] = 14000, ["Chembox_CalcTemperatures"] = 6700, ["Chembox_ChEBI"] = 14000, ["Chembox_ChEBI/format"] = 14000, ["Chembox_ChEMBL"] = 14000, ["Chembox_ChEMBL/format"] = 14000, ["Chembox_ChemSpiderID"] = 14000, ["Chembox_ChemSpiderID/format"] = 14000, ["Chembox_CompTox"] = 14000, ["Chembox_CompTox/format"] = 14000, ["Chembox_Datapage_check"] = 14000, ["Chembox_Density"] = 4900, ["Chembox_DrugBank"] = 14000, ["Chembox_DrugBank/format"] = 14000, ["Chembox_ECHA"] = 7600, ["Chembox_ECNumber"] = 14000, ["Chembox_ECNumber/format"] = 14000, ["Chembox_Elements"] = 14000, ["Chembox_Elements/molecular_formula"] = 18000, ["Chembox_Footer"] = 14000, ["Chembox_Footer/tracking"] = 14000, ["Chembox_GHS_(set)"] = 3500, ["Chembox_Hazards"] = 12000, ["Chembox_IUPHAR_ligand"] = 14000, ["Chembox_IUPHAR_ligand/format"] = 14000, ["Chembox_Identifiers"] = 14000, ["Chembox_InChI"] = 13000, ["Chembox_InChI/format"] = 13000, ["Chembox_Indexlist"] = 14000, ["Chembox_Jmol"] = 14000, ["Chembox_Jmol/format"] = 14000, ["Chembox_KEGG"] = 14000, ["Chembox_KEGG/format"] = 14000, ["Chembox_MeltingPt"] = 5900, ["Chembox_Properties"] = 14000, ["Chembox_PubChem"] = 14000, ["Chembox_PubChem/format"] = 14000, ["Chembox_RTECS"] = 14000, ["Chembox_RTECS/format"] = 14000, ["Chembox_Related"] = 3400, ["Chembox_SMILES"] = 13000, ["Chembox_SMILES/format"] = 13000, ["Chembox_SolubilityInWater"] = 3900, ["Chembox_Structure"] = 2100, ["Chembox_UNII"] = 14000, ["Chembox_UNII/format"] = 14000, ["Chembox_headerbar"] = 14000, ["Chembox_image"] = 13000, ["Chembox_image_cell"] = 12000, ["Chembox_image_sbs"] = 13000, ["Chembox_parametercheck"] = 13000, ["Chembox_setDatarow"] = 4500, ["Chembox_setHeader"] = 4500, ["Chembox_templatePar/formatPreviewMessage"] = 14000, ["Chembox_verification"] = 7200, ["Chemicals"] = 7300, ["Chemistry"] = 3100, ["Chemspidercite"] = 11000, ["Chessgames_player"] = 3700, ["Chinese"] = 6900, ["Chr"] = 9100, ["ChristianityWikiProject"] = 5700, ["Circa"] = 75000, ["Circular_reference"] = 4600, ["Citation"] = 414000, ["Citation/make_link"] = 6200, ["Citation/styles.css"] = 46000, ["Citation_needed"] = 551000, ["Citation_needed_span"] = 3500, ["Citation_style"] = 4200, ["Cite_AV_media"] = 43000, ["Cite_AV_media_notes"] = 26000, ["Cite_Appletons'"] = 2400, ["Cite_Australian_Dictionary_of_Biography"] = 3300, ["Cite_Catholic_Encyclopedia"] = 8300, ["Cite_Colledge2006"] = 3100, ["Cite_DCB"] = 2800, ["Cite_DNB"] = 18000, ["Cite_EB1911"] = 25000, ["Cite_GNIS"] = 2300, ["Cite_Gaia_DR2"] = 2100, ["Cite_Google_Maps"] = 15000, ["Cite_IUCN"] = 58000, ["Cite_Instagram"] = 2300, ["Cite_Jewish_Encyclopedia"] = 3000, ["Cite_NIE"] = 3600, ["Cite_NSW_Parliament"] = 3300, ["Cite_NSW_SHR"] = 2600, ["Cite_ODNB"] = 18000, ["Cite_POWO"] = 2100, ["Cite_Q"] = 48000, ["Cite_QHR"] = 3000, ["Cite_QPN"] = 4000, ["Cite_Rotten_Tomatoes"] = 2000, ["Cite_Rowlett"] = 2500, ["Cite_Russian_law"] = 7800, ["Cite_Ryan"] = 3200, ["Cite_Sports-Reference"] = 54000, ["Cite_USGov"] = 24000, ["Cite_WoRMS"] = 5500, ["Cite_act"] = 2800, ["Cite_arXiv"] = 5100, ["Cite_bcgnis"] = 3500, ["Cite_book"] = 1610000, ["Cite_certification"] = 34000, ["Cite_cgndb"] = 3400, ["Cite_comic"] = 2100, ["Cite_conference"] = 16000, ["Cite_court"] = 5400, ["Cite_court/styles.css"] = 5400, ["Cite_dictionary"] = 3500, ["Cite_encyclopedia"] = 206000, ["Cite_episode"] = 17000, ["Cite_gnis"] = 33000, ["Cite_interview"] = 7900, ["Cite_iucn"] = 58000, ["Cite_journal"] = 974000, ["Cite_magazine"] = 282000, ["Cite_map"] = 42000, ["Cite_news"] = 1540000, ["Cite_newspaper_The_Times"] = 6600, ["Cite_patent"] = 5600, ["Cite_patent/authors"] = 4600, ["Cite_patent/core"] = 5900, ["Cite_peakbagger"] = 4600, ["Cite_podcast"] = 4000, ["Cite_press_release"] = 67000, ["Cite_report"] = 37000, ["Cite_rowlett"] = 2500, ["Cite_simbad"] = 4500, ["Cite_sports-reference"] = 59000, ["Cite_thesis"] = 33000, ["Cite_tweet"] = 37000, ["Cite_video"] = 12000, ["Cite_video_game"] = 3100, ["Cite_web"] = 4620000, ["Cite_wikisource"] = 5700, ["Cite_wikisource/make_link"] = 59000, ["Civil_navigation"] = 2900, ["Cl"] = 134000, ["Clade"] = 7700, ["Clade/styles.css"] = 7800, ["Clarify"] = 41000, ["Class"] = 42000, ["Class/colour"] = 9210000, ["Class/icon"] = 21000, ["Class_mask"] = 314000, ["Class_mask/b"] = 272000, ["Classical"] = 6800, ["Classicon"] = 4800, ["Clc"] = 6100, ["Cleanup"] = 10000, ["Cleanup_bare_URLs"] = 25000, ["Cleanup_reorganize"] = 2500, ["Cleanup_rewrite"] = 6000, ["Clear"] = 3000000, ["Clear-left"] = 4100, ["Clear_left"] = 31000, ["Clear_right"] = 2600, ["Clerk-Note"] = 9900, ["Clerk_Request"] = 2100, ["Clerknote"] = 7500, ["Clickable_button"] = 17000, ["Clickable_button_2"] = 974000, ["Closed_access"] = 4700, ["Closed_rfc_top"] = 2300, ["Clr"] = 3500, ["Clubplayerscat"] = 8900, ["Cmbox"] = 425000, ["Cn"] = 95000, ["Cnote2"] = 2300, ["Cnote2_Begin"] = 2300, ["Cnote2_End"] = 2300, ["Coat_of_arms"] = 4800, ["Cob"] = 12000, ["Code"] = 53000, ["Col-1-of-2"] = 2400, ["Col-2"] = 172000, ["Col-2-of-2"] = 2300, ["Col-3"] = 10000, ["Col-4"] = 3600, ["Col-begin"] = 214000, ["Col-break"] = 212000, ["Col-end"] = 213000, ["Col-float"] = 2700, ["Col-float-break"] = 2600, ["Col-float-end"] = 2700, ["Col-float/styles.css"] = 2700, ["Col-start"] = 18000, ["Colbegin"] = 21000, ["Colend"] = 23000, ["Collapse"] = 9900, ["Collapse_bottom"] = 51000, ["Collapse_top"] = 52000, ["Collapsebottom"] = 3900, ["Collapsetop"] = 3800, ["Collapsible_list"] = 52000, ["Collapsible_option"] = 135000, ["College"] = 9100, ["CollegePrimaryHeader"] = 6200, ["CollegePrimaryStyle"] = 98000, ["CollegeSecondaryStyle"] = 3400, ["College_Athlete_Recruit_End"] = 3000, ["College_Athlete_Recruit_Entry"] = 3100, ["College_Athlete_Recruit_Start"] = 3100, ["College_athlete_recruit_end"] = 4200, ["College_athlete_recruit_entry"] = 4300, ["College_athlete_recruit_start"] = 4300, ["College_color_list"] = 3900, ["College_stripe_style"] = 2100, ["Colon"] = 18000, ["Color"] = 474000, ["Color_box"] = 74000, ["Colorbox"] = 3500, ["Colorbull"] = 4800, ["Colored_link"] = 64000, ["Colors"] = 3800, ["Colour"] = 5800, ["Colour_box"] = 2000, ["Coloured_link"] = 6900, ["Column"] = 2400, ["Column/styles.css"] = 2500, ["Columns-end"] = 2200, ["Columns-list"] = 96000, ["Columns-start"] = 2200, ["Comedy"] = 2600, ["Comic_Book_DB"] = 3500, ["Comicbookdb"] = 3500, ["Comics-replaceability"] = 2900, ["Comics_infobox_sec/creator_nat"] = 2800, ["Comics_infobox_sec/formcat"] = 3300, ["Comics_infobox_sec/genre"] = 4100, ["Comics_infobox_sec/genrecat"] = 3700, ["Comics_infobox_sec/styles.css"] = 8200, ["Comicsproj"] = 28000, ["Comma_separated_entries"] = 432000, ["Comma_separated_values"] = 49000, ["Comment"] = 5200, ["Committed_identity"] = 3000, ["Committed_identity/styles.css"] = 3000, ["Commons"] = 65000, ["Commons-inline"] = 20000, ["Commons_cat"] = 48000, ["Commons_category"] = 849000, ["Commons_category-inline"] = 150000, ["Commons_category_inline"] = 6100, ["Commonscat"] = 64000, ["Commonscat-inline"] = 17000, ["Commonscat_inline"] = 2400, ["Commonscatinline"] = 6800, ["Compact_TOC"] = 7000, ["Compact_ToC"] = 4700, ["Compare"] = 5300, ["Compare_image_with_Wikidata"] = 10000, ["Composition_bar"] = 11000, ["Confirmed"] = 17000, ["Confused"] = 2800, ["Confusing"] = 2300, ["CongBio"] = 9600, ["CongLinks"] = 4600, ["Connected_contributor"] = 18000, ["Connected_contributor_(paid)"] = 6900, ["Constellation_navbox"] = 6800, ["Container"] = 11000, ["Container_cat"] = 7600, ["Container_category"] = 43000, ["Containercat"] = 2600, ["Contains_special_characters"] = 4300, ["Contains_special_characters/core"] = 4300, ["Contains_special_characters/styles.css"] = 4300, ["Content_category"] = 7700, ["Contentious_topics/list"] = 13000, ["Contentious_topics/page_restriction_editnotice_base"] = 2700, ["Contentious_topics/page_restriction_talk_notice_base"] = 3800, ["Contentious_topics/talk_notice"] = 6300, ["Context"] = 2700, ["Continent2continental"] = 16000, ["Continent_adjective_to_noun"] = 2200, ["Controversial"] = 3300, ["Convert"] = 1180000, ["Convinfobox"] = 207000, ["Convinfobox/2"] = 17000, ["Convinfobox/3"] = 120000, ["Convinfobox/pri2"] = 64000, ["Convinfobox/prisec2"] = 3400, ["Convinfobox/prisec3"] = 26000, ["Convinfobox/sec2"] = 9300, ["Coord"] = 1340000, ["Coord_missing"] = 94000, ["Coord_missing/CheckCat"] = 93000, ["Coords"] = 7800, ["Copied"] = 19000, ["Copy_edit"] = 2700, ["Copy_to_Wikimedia_Commons"] = 107000, ["Cospar"] = 2600, ["Cot"] = 12000, ["Count"] = 673000, ["Country2continent"] = 36000, ["Country2continental"] = 2400, ["Country2nationality"] = 321000, ["CountryPrefixThe"] = 111000, ["Country_abbreviation"] = 89000, ["Country_alias"] = 16000, ["Country_at_games_navbox"] = 2700, ["Country_at_games_navbox/below"] = 2700, ["Country_data"] = 7300, ["Country_data_AFG"] = 2300, ["Country_data_ALB"] = 6900, ["Country_data_ALG"] = 9600, ["Country_data_AND"] = 3100, ["Country_data_ANG"] = 4000, ["Country_data_ARG"] = 48000, ["Country_data_ARM"] = 7600, ["Country_data_AUS"] = 77000, ["Country_data_AUT"] = 46000, ["Country_data_AZE"] = 9500, ["Country_data_Afghanistan"] = 13000, ["Country_data_Alaska"] = 2100, ["Country_data_Albania"] = 20000, ["Country_data_Alberta"] = 3700, ["Country_data_Algeria"] = 25000, ["Country_data_American_Samoa"] = 3000, ["Country_data_Andorra"] = 8200, ["Country_data_Angola"] = 12000, ["Country_data_Anguilla"] = 2500, ["Country_data_Antigua_and_Barbuda"] = 6300, ["Country_data_Apulia"] = 7900, ["Country_data_Argentina"] = 82000, ["Country_data_Arizona"] = 2300, ["Country_data_Arkansas"] = 2000, ["Country_data_Armenia"] = 22000, ["Country_data_Aruba"] = 3700, ["Country_data_Australia"] = 128000, ["Country_data_Austria"] = 79000, ["Country_data_Azerbaijan"] = 28000, ["Country_data_BAH"] = 4100, ["Country_data_BAN"] = 4100, ["Country_data_BAR"] = 2400, ["Country_data_BEL"] = 52000, ["Country_data_BER"] = 2400, ["Country_data_BHR"] = 4900, ["Country_data_BIH"] = 13000, ["Country_data_BLR"] = 24000, ["Country_data_BOL"] = 6000, ["Country_data_BOT"] = 2500, ["Country_data_BRA"] = 59000, ["Country_data_BUL"] = 26000, ["Country_data_Bahamas"] = 9900, ["Country_data_Bahrain"] = 12000, ["Country_data_Bangladesh"] = 19000, ["Country_data_Barbados"] = 8200, ["Country_data_Belarus"] = 44000, ["Country_data_Belgium"] = 90000, ["Country_data_Belize"] = 5300, ["Country_data_Benin"] = 7600, ["Country_data_Bermuda"] = 5900, ["Country_data_Bhutan"] = 4800, ["Country_data_Bolivia"] = 15000, ["Country_data_Bosnia_and_Herzegovina"] = 29000, ["Country_data_Botswana"] = 9400, ["Country_data_Brazil"] = 103000, ["Country_data_British_Columbia"] = 3500, ["Country_data_British_Raj"] = 2300, ["Country_data_British_Virgin_Islands"] = 3300, ["Country_data_Brunei"] = 6400, ["Country_data_Bulgaria"] = 53000, ["Country_data_Burkina_Faso"] = 10000, ["Country_data_Burma"] = 2700, ["Country_data_Burundi"] = 6300, ["Country_data_CAM"] = 2200, ["Country_data_CAN"] = 60000, ["Country_data_CGO"] = 2600, ["Country_data_CHE"] = 4900, ["Country_data_CHI"] = 18000, ["Country_data_CHL"] = 2100, ["Country_data_CHN"] = 43000, ["Country_data_CIV"] = 8400, ["Country_data_CMR"] = 9000, ["Country_data_COD"] = 3300, ["Country_data_COL"] = 26000, ["Country_data_CPV"] = 2100, ["Country_data_CRC"] = 6700, ["Country_data_CRO"] = 34000, ["Country_data_CUB"] = 10000, ["Country_data_CYP"] = 9400, ["Country_data_CZE"] = 47000, ["Country_data_California"] = 6000, ["Country_data_Cambodia"] = 9100, ["Country_data_Cameroon"] = 18000, ["Country_data_Canada"] = 124000, ["Country_data_Cape_Verde"] = 6500, ["Country_data_Castile_and_León"] = 2000, ["Country_data_Catalonia"] = 3100, ["Country_data_Cayman_Islands"] = 4200, ["Country_data_Central_African_Republic"] = 5200, ["Country_data_Chad"] = 5600, ["Country_data_Chile"] = 41000, ["Country_data_China"] = 85000, ["Country_data_Chinese_Taipei"] = 20000, ["Country_data_Colombia"] = 47000, ["Country_data_Colorado"] = 5700, ["Country_data_Comoros"] = 4500, ["Country_data_Confederate_States_of_America"] = 3000, ["Country_data_Connecticut"] = 3200, ["Country_data_Cook_Islands"] = 3900, ["Country_data_Costa_Rica"] = 18000, ["Country_data_Croatia"] = 58000, ["Country_data_Cuba"] = 23000, ["Country_data_Curaçao"] = 3600, ["Country_data_Cyprus"] = 23000, ["Country_data_Czech_Republic"] = 83000, ["Country_data_Czechoslovakia"] = 19000, ["Country_data_DEN"] = 35000, ["Country_data_DEU"] = 8900, ["Country_data_DNK"] = 3700, ["Country_data_DOM"] = 7500, ["Country_data_DRC"] = 2100, ["Country_data_Democratic_Republic_of_the_Congo"] = 13000, ["Country_data_Denmark"] = 70000, ["Country_data_Djibouti"] = 4700, ["Country_data_Dominica"] = 4300, ["Country_data_Dominican_Republic"] = 18000, ["Country_data_ECU"] = 12000, ["Country_data_EGY"] = 14000, ["Country_data_ENG"] = 48000, ["Country_data_ESA"] = 2300, ["Country_data_ESP"] = 74000, ["Country_data_EST"] = 15000, ["Country_data_ETH"] = 3700, ["Country_data_EU"] = 3700, ["Country_data_East_Germany"] = 15000, ["Country_data_East_Timor"] = 5100, ["Country_data_Ecuador"] = 25000, ["Country_data_Egypt"] = 32000, ["Country_data_El_Salvador"] = 13000, ["Country_data_Empire_of_Japan"] = 4000, ["Country_data_England"] = 98000, ["Country_data_Equatorial_Guinea"] = 5300, ["Country_data_Eritrea"] = 5500, ["Country_data_Estonia"] = 35000, ["Country_data_Eswatini"] = 5100, ["Country_data_Ethiopia"] = 13000, ["Country_data_Europe"] = 2400, ["Country_data_European_Union"] = 7400, ["Country_data_FIJ"] = 3900, ["Country_data_FIN"] = 35000, ["Country_data_FRA"] = 100000, ["Country_data_FRG"] = 15000, ["Country_data_FRO"] = 2100, ["Country_data_FR_Yugoslavia"] = 4000, ["Country_data_Faroe_Islands"] = 5500, ["Country_data_Federated_States_of_Micronesia"] = 3100, ["Country_data_Fiji"] = 12000, ["Country_data_Finland"] = 70000, ["Country_data_Florida"] = 6600, ["Country_data_France"] = 195000, ["Country_data_French_Guiana"] = 2200, ["Country_data_French_Polynesia"] = 3900, ["Country_data_GAB"] = 2500, ["Country_data_GAM"] = 2100, ["Country_data_GBR"] = 56000, ["Country_data_GDR"] = 8600, ["Country_data_GEO"] = 14000, ["Country_data_GER"] = 84000, ["Country_data_GHA"] = 10000, ["Country_data_GRE"] = 26000, ["Country_data_GUA"] = 5100, ["Country_data_GUI"] = 3300, ["Country_data_GUY"] = 2300, ["Country_data_Gabon"] = 7700, ["Country_data_Gambia"] = 7000, ["Country_data_Georgia"] = 11000, ["Country_data_Georgia_(U.S._state)"] = 2800, ["Country_data_Georgia_(country)"] = 29000, ["Country_data_German_Empire"] = 5400, ["Country_data_Germany"] = 153000, ["Country_data_Ghana"] = 24000, ["Country_data_Gibraltar"] = 5000, ["Country_data_Great_Britain"] = 75000, ["Country_data_Greece"] = 58000, ["Country_data_Greenland"] = 2900, ["Country_data_Grenada"] = 5400, ["Country_data_Guadeloupe"] = 2900, ["Country_data_Guam"] = 4900, ["Country_data_Guatemala"] = 13000, ["Country_data_Guernsey"] = 2200, ["Country_data_Guinea"] = 8600, ["Country_data_Guinea-Bissau"] = 5200, ["Country_data_Guyana"] = 7500, ["Country_data_HAI"] = 3300, ["Country_data_HKG"] = 13000, ["Country_data_HON"] = 4400, ["Country_data_HUN"] = 38000, ["Country_data_Haiti"] = 9000, ["Country_data_Honduras"] = 12000, ["Country_data_Hong_Kong"] = 27000, ["Country_data_Hungary"] = 71000, ["Country_data_IDN"] = 5100, ["Country_data_INA"] = 11000, ["Country_data_IND"] = 31000, ["Country_data_IRE"] = 11000, ["Country_data_IRI"] = 5700, ["Country_data_IRL"] = 22000, ["Country_data_IRN"] = 6500, ["Country_data_IRQ"] = 4400, ["Country_data_ISL"] = 8800, ["Country_data_ISR"] = 21000, ["Country_data_ITA"] = 88000, ["Country_data_Iceland"] = 23000, ["Country_data_Illinois"] = 4500, ["Country_data_India"] = 111000, ["Country_data_Indiana"] = 2700, ["Country_data_Indonesia"] = 37000, ["Country_data_Iowa"] = 2900, ["Country_data_Iran"] = 92000, ["Country_data_Iraq"] = 14000, ["Country_data_Ireland"] = 35000, ["Country_data_Isle_of_Man"] = 2900, ["Country_data_Israel"] = 47000, ["Country_data_Italy"] = 147000, ["Country_data_Ivory_Coast"] = 18000, ["Country_data_JAM"] = 10000, ["Country_data_JOR"] = 4200, ["Country_data_JP"] = 8200, ["Country_data_JPN"] = 61000, ["Country_data_Jamaica"] = 22000, ["Country_data_Japan"] = 121000, ["Country_data_Jersey"] = 2600, ["Country_data_Jordan"] = 12000, ["Country_data_KAZ"] = 20000, ["Country_data_KEN"] = 7700, ["Country_data_KGZ"] = 4000, ["Country_data_KOR"] = 32000, ["Country_data_KOS"] = 2600, ["Country_data_KSA"] = 6300, ["Country_data_KUW"] = 4300, ["Country_data_Kazakhstan"] = 34000, ["Country_data_Kenya"] = 20000, ["Country_data_Kingdom_of_France"] = 2200, ["Country_data_Kingdom_of_Great_Britain"] = 4800, ["Country_data_Kingdom_of_Italy"] = 4200, ["Country_data_Kiribati"] = 3000, ["Country_data_Kosovo"] = 9200, ["Country_data_Kuwait"] = 12000, ["Country_data_Kyrgyzstan"] = 9600, ["Country_data_LAT"] = 15000, ["Country_data_LBN"] = 2500, ["Country_data_LIB"] = 2600, ["Country_data_LIE"] = 3300, ["Country_data_LIT"] = 3200, ["Country_data_LTU"] = 13000, ["Country_data_LUX"] = 11000, ["Country_data_LVA"] = 2600, ["Country_data_Laos"] = 7600, ["Country_data_Latvia"] = 33000, ["Country_data_Lebanon"] = 15000, ["Country_data_Lesotho"] = 5400, ["Country_data_Liberia"] = 7400, ["Country_data_Libya"] = 8900, ["Country_data_Liechtenstein"] = 8000, ["Country_data_Lithuania"] = 32000, ["Country_data_Luxembourg"] = 24000, ["Country_data_MAC"] = 2500, ["Country_data_MAD"] = 2100, ["Country_data_MAR"] = 13000, ["Country_data_MAS"] = 11000, ["Country_data_MDA"] = 7900, ["Country_data_MEX"] = 31000, ["Country_data_MGL"] = 3100, ["Country_data_MKD"] = 7800, ["Country_data_MLI"] = 4600, ["Country_data_MLT"] = 5800, ["Country_data_MNE"] = 8100, ["Country_data_MON"] = 3900, ["Country_data_MOZ"] = 2300, ["Country_data_MRI"] = 2200, ["Country_data_MYA"] = 3200, ["Country_data_MYS"] = 3800, ["Country_data_Macau"] = 6500, ["Country_data_Macedonia"] = 4900, ["Country_data_Madagascar"] = 9300, ["Country_data_Malawi"] = 5800, ["Country_data_Malaysia"] = 37000, ["Country_data_Maldives"] = 6400, ["Country_data_Mali"] = 13000, ["Country_data_Malta"] = 17000, ["Country_data_Manitoba"] = 2600, ["Country_data_Marshall_Islands"] = 3800, ["Country_data_Martinique"] = 2900, ["Country_data_Maryland"] = 3000, ["Country_data_Massachusetts"] = 3000, ["Country_data_Mauritania"] = 5900, ["Country_data_Mauritius"] = 8300, ["Country_data_Mexico"] = 68000, ["Country_data_Michigan"] = 4400, ["Country_data_Minnesota"] = 3800, ["Country_data_Missouri"] = 2000, ["Country_data_Moldova"] = 20000, ["Country_data_Monaco"] = 10000, ["Country_data_Mongolia"] = 10000, ["Country_data_Montana"] = 2100, ["Country_data_Montenegro"] = 19000, ["Country_data_Montserrat"] = 2500, ["Country_data_Morocco"] = 28000, ["Country_data_Mozambique"] = 7500, ["Country_data_Myanmar"] = 14000, ["Country_data_NAM"] = 3600, ["Country_data_NED"] = 62000, ["Country_data_NEP"] = 3000, ["Country_data_NGA"] = 8400, ["Country_data_NGR"] = 8300, ["Country_data_NIR"] = 10000, ["Country_data_NLD"] = 6300, ["Country_data_NOR"] = 31000, ["Country_data_NZ"] = 3200, ["Country_data_NZL"] = 33000, ["Country_data_Namibia"] = 10000, ["Country_data_Nauru"] = 2600, ["Country_data_Nazi_Germany"] = 9900, ["Country_data_Nepal"] = 17000, ["Country_data_Netherlands"] = 115000, ["Country_data_Netherlands_Antilles"] = 2300, ["Country_data_New_Brunswick"] = 2500, ["Country_data_New_Caledonia"] = 3400, ["Country_data_New_Jersey"] = 4200, ["Country_data_New_South_Wales"] = 5800, ["Country_data_New_York"] = 4900, ["Country_data_New_York_(state)"] = 7000, ["Country_data_New_Zealand"] = 68000, ["Country_data_Newfoundland_and_Labrador"] = 2300, ["Country_data_Nicaragua"] = 8500, ["Country_data_Niger"] = 6100, ["Country_data_Nigeria"] = 33000, ["Country_data_North_Carolina"] = 3500, ["Country_data_North_Korea"] = 14000, ["Country_data_North_Macedonia"] = 18000, ["Country_data_Northern_Ireland"] = 16000, ["Country_data_Northern_Mariana_Islands"] = 2900, ["Country_data_Norway"] = 74000, ["Country_data_Nova_Scotia"] = 2400, ["Country_data_OMA"] = 2900, ["Country_data_Ohio"] = 4800, ["Country_data_Oman"] = 9000, ["Country_data_Ontario"] = 3800, ["Country_data_Ottoman_Empire"] = 2500, ["Country_data_PAK"] = 8200, ["Country_data_PAN"] = 5900, ["Country_data_PAR"] = 10000, ["Country_data_PER"] = 13000, ["Country_data_PHI"] = 12000, ["Country_data_PHL"] = 2600, ["Country_data_PNG"] = 2700, ["Country_data_POL"] = 51000, ["Country_data_POR"] = 32000, ["Country_data_PRC"] = 2200, ["Country_data_PRK"] = 4700, ["Country_data_PRT"] = 2900, ["Country_data_PUR"] = 7400, ["Country_data_Pakistan"] = 29000, ["Country_data_Palau"] = 3100, ["Country_data_Palestine"] = 6900, ["Country_data_Panama"] = 16000, ["Country_data_Papua_New_Guinea"] = 8100, ["Country_data_Paraguay"] = 21000, ["Country_data_Pennsylvania"] = 3700, ["Country_data_People's_Republic_of_China"] = 3200, ["Country_data_Peru"] = 31000, ["Country_data_Philippines"] = 35000, ["Country_data_Poland"] = 152000, ["Country_data_Portugal"] = 69000, ["Country_data_Prussia"] = 2600, ["Country_data_Puerto_Rico"] = 18000, ["Country_data_QAT"] = 8100, ["Country_data_Qatar"] = 18000, ["Country_data_Quebec"] = 4200, ["Country_data_ROM"] = 13000, ["Country_data_ROU"] = 27000, ["Country_data_RSA"] = 32000, ["Country_data_RUS"] = 63000, ["Country_data_RWA"] = 2100, ["Country_data_Republic_of_China"] = 5700, ["Country_data_Republic_of_Ireland"] = 26000, ["Country_data_Republic_of_the_Congo"] = 7900, ["Country_data_Romania"] = 69000, ["Country_data_Russia"] = 116000, ["Country_data_Russian_Empire"] = 4900, ["Country_data_Rwanda"] = 7800, ["Country_data_SAM"] = 3200, ["Country_data_SCG"] = 3100, ["Country_data_SCO"] = 27000, ["Country_data_SEN"] = 8200, ["Country_data_SER"] = 3600, ["Country_data_SGP"] = 3000, ["Country_data_SIN"] = 7100, ["Country_data_SLO"] = 20000, ["Country_data_SLV"] = 3100, ["Country_data_SMR"] = 3200, ["Country_data_SPA"] = 5000, ["Country_data_SRB"] = 27000, ["Country_data_SRI"] = 4800, ["Country_data_SUI"] = 43000, ["Country_data_SUR"] = 2100, ["Country_data_SVK"] = 29000, ["Country_data_SVN"] = 6800, ["Country_data_SWE"] = 58000, ["Country_data_SWI"] = 4900, ["Country_data_SYR"] = 3700, ["Country_data_Saint_Kitts_and_Nevis"] = 4900, ["Country_data_Saint_Lucia"] = 5100, ["Country_data_Saint_Vincent_and_the_Grenadines"] = 5000, ["Country_data_Samoa"] = 7800, ["Country_data_San_Marino"] = 8600, ["Country_data_Saskatchewan"] = 2900, ["Country_data_Saudi_Arabia"] = 20000, ["Country_data_Scotland"] = 52000, ["Country_data_Senegal"] = 18000, ["Country_data_Serbia"] = 55000, ["Country_data_Serbia_and_Montenegro"] = 5100, ["Country_data_Seychelles"] = 5600, ["Country_data_Sierra_Leone"] = 7500, ["Country_data_Singapore"] = 27000, ["Country_data_Slovakia"] = 51000, ["Country_data_Slovenia"] = 43000, ["Country_data_Solomon_Islands"] = 4800, ["Country_data_Somalia"] = 6300, ["Country_data_South_Africa"] = 71000, ["Country_data_South_Carolina"] = 3200, ["Country_data_South_Korea"] = 67000, ["Country_data_South_Sudan"] = 4300, ["Country_data_Soviet_Union"] = 37000, ["Country_data_Spain"] = 135000, ["Country_data_Sri_Lanka"] = 19000, ["Country_data_Sudan"] = 8300, ["Country_data_Suriname"] = 6600, ["Country_data_Sweden"] = 102000, ["Country_data_Switzerland"] = 84000, ["Country_data_Syria"] = 16000, ["Country_data_São_Tomé_and_Príncipe"] = 3400, ["Country_data_TAN"] = 2700, ["Country_data_TCH"] = 11000, ["Country_data_THA"] = 22000, ["Country_data_TJK"] = 2800, ["Country_data_TKM"] = 2900, ["Country_data_TOG"] = 2100, ["Country_data_TPE"] = 16000, ["Country_data_TRI"] = 4800, ["Country_data_TTO"] = 2000, ["Country_data_TUN"] = 11000, ["Country_data_TUR"] = 29000, ["Country_data_Taiwan"] = 13000, ["Country_data_Tajikistan"] = 9200, ["Country_data_Tanzania"] = 13000, ["Country_data_Texas"] = 5300, ["Country_data_Thailand"] = 45000, ["Country_data_Togo"] = 7200, ["Country_data_Tonga"] = 6500, ["Country_data_Trinidad_and_Tobago"] = 14000, ["Country_data_Tunisia"] = 23000, ["Country_data_Turkey"] = 72000, ["Country_data_Turkmenistan"] = 8100, ["Country_data_Turks_and_Caicos_Islands"] = 2800, ["Country_data_Tuvalu"] = 2900, ["Country_data_U.S."] = 2100, ["Country_data_U.S._Virgin_Islands"] = 4900, ["Country_data_UAE"] = 9500, ["Country_data_UGA"] = 4300, ["Country_data_UK"] = 19000, ["Country_data_UKGBI"] = 3100, ["Country_data_UKR"] = 38000, ["Country_data_URS"] = 15000, ["Country_data_URU"] = 15000, ["Country_data_US"] = 4900, ["Country_data_USA"] = 135000, ["Country_data_USSR"] = 4500, ["Country_data_UZB"] = 12000, ["Country_data_Uganda"] = 13000, ["Country_data_Ukraine"] = 75000, ["Country_data_United_Arab_Emirates"] = 20000, ["Country_data_United_Kingdom"] = 89000, ["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 4500, ["Country_data_United_Nations"] = 4100, ["Country_data_United_States"] = 285000, ["Country_data_United_States_of_America"] = 4900, ["Country_data_Uruguay"] = 30000, ["Country_data_Uzbekistan"] = 21000, ["Country_data_VEN"] = 17000, ["Country_data_VIE"] = 6600, ["Country_data_Vanuatu"] = 5200, ["Country_data_Vatican_City"] = 2400, ["Country_data_Venezuela"] = 34000, ["Country_data_Vietnam"] = 24000, ["Country_data_Virginia"] = 2900, ["Country_data_WAL"] = 18000, ["Country_data_Wales"] = 34000, ["Country_data_Washington"] = 3400, ["Country_data_Washington,_D.C."] = 2200, ["Country_data_Washington_(state)"] = 3600, ["Country_data_West_Germany"] = 24000, ["Country_data_West_Indies"] = 2600, ["Country_data_Wisconsin"] = 5200, ["Country_data_YUG"] = 9900, ["Country_data_Yemen"] = 7900, ["Country_data_Yugoslavia"] = 18000, ["Country_data_ZAF"] = 4800, ["Country_data_ZAM"] = 3400, ["Country_data_ZIM"] = 8400, ["Country_data_Zambia"] = 9900, ["Country_data_Zimbabwe"] = 18000, ["Country_flagbio"] = 28000, ["Country_name"] = 23000, ["Country_showdata"] = 6200, ["Country_topics"] = 22000, ["County"] = 7900, ["County_(judet)_of_Romania"] = 3300, ["Course_assignment"] = 4200, ["Course_details"] = 6400, ["Course_instructor"] = 2500, ["Cquote"] = 37000, ["Cr"] = 4300, ["Cr-rt"] = 2100, ["Create_taxonomy/link"] = 109000, ["Cref2"] = 2300, ["Cricinfo"] = 24000, ["Cricketarchive"] = 3100, ["Croatian_Census_2021"] = 3600, ["Cross"] = 3100, ["Crossreference"] = 2600, ["Crossreference/styles.css"] = 2600, ["Csv"] = 3000, ["Ct"] = 12000, ["Curlie"] = 6800, ["Currency"] = 3700, ["Current_events"] = 8300, ["Current_events/styles.css"] = 8300, ["Currentdate"] = 23000, ["Cvt"] = 106000, ["Cycling_Archives"] = 4300, ["Cycling_archives"] = 2400, ["Cycling_data_LTD"] = 2100, ["Cycling_data_MOV_men"] = 2000, ["Cycling_data_TJV"] = 2100, ["Cycling_team_link"] = 12000, ["Module:CFB_schedule"] = 26000, ["Module:CallAssert"] = 247000, ["Module:CanadaByProvinceCatNav"] = 8400, ["Module:Cat_main"] = 201000, ["Module:Catalog_lookup_link"] = 518000, ["Module:Category_described_in_year"] = 5700, ["Module:Category_described_in_year/conf"] = 5700, ["Module:Category_handler"] = 4560000, ["Module:Category_handler/blacklist"] = 4560000, ["Module:Category_handler/config"] = 4560000, ["Module:Category_handler/data"] = 4560000, ["Module:Category_handler/shared"] = 4560000, ["Module:Category_more_if_exists"] = 40000, ["Module:Category_pair"] = 6300, ["Module:Category_see_also"] = 40000, ["Module:Category_series_navigation"] = 486000, ["Module:Celestial_object_quadrangle"] = 2300, ["Module:Check_DYK_hook"] = 115000, ["Module:Check_for_clobbered_parameters"] = 1240000, ["Module:Check_for_deprecated_parameters"] = 63000, ["Module:Check_for_unknown_parameters"] = 19700000, ["Module:Check_isxn"] = 482000, ["Module:Check_winner_by_scores"] = 13000, ["Module:Checkuser"] = 77000, ["Module:Chem2"] = 5200, ["Module:Chem2/styles.css"] = 5200, ["Module:Citation/CS1"] = 5650000, ["Module:Citation/CS1/COinS"] = 5650000, ["Module:Citation/CS1/Configuration"] = 5650000, ["Module:Citation/CS1/Date_validation"] = 5650000, ["Module:Citation/CS1/Identifiers"] = 5650000, ["Module:Citation/CS1/Suggestions"] = 25000, ["Module:Citation/CS1/Utilities"] = 5650000, ["Module:Citation/CS1/Whitelist"] = 5650000, ["Module:Citation/CS1/styles.css"] = 5790000, ["Module:Cite_IUCN"] = 58000, ["Module:Cite_Q"] = 48000, ["Module:Cite_tweet"] = 37000, ["Module:Cite_web"] = 41000, ["Module:Clade"] = 7800, ["Module:Class"] = 10300000, ["Module:Class/definition.json"] = 10300000, ["Module:Class/styles.css"] = 9400000, ["Module:Class_mask"] = 10600000, ["Module:Clickable_button_2"] = 974000, ["Module:Collapsible_list"] = 54000, ["Module:College_color"] = 129000, ["Module:College_color/data"] = 129000, ["Module:Color_contrast"] = 505000, ["Module:Color_contrast/colors"] = 508000, ["Module:Commons_link"] = 260000, ["Module:Complex_date"] = 66000, ["Module:Convert"] = 1250000, ["Module:Convert/data"] = 1250000, ["Module:Convert/helper"] = 8800, ["Module:Convert/text"] = 1250000, ["Module:Convert/wikidata"] = 3300, ["Module:Convert/wikidata/data"] = 3300, ["Module:ConvertNumeric"] = 15000, ["Module:Convert_character_width"] = 2800, ["Module:Convert_character_width/data"] = 2800, ["Module:Coordinates"] = 1340000, ["Module:Coordinates/styles.css"] = 1340000, ["Module:Copied"] = 19000, ["Module:CountryAdjectiveDemonym"] = 45000, ["Module:CountryAdjectiveDemonym/Adjectives"] = 45000, ["Module:CountryAdjectiveDemonym/Demonyms"] = 45000, ["Module:CountryAdjectiveDemonym/The"] = 45000, ["Module:CountryData"] = 143000, ["Module:CountryData/cacheA"] = 12000, ["Module:CountryData/cacheB"] = 8400, ["Module:CountryData/cacheC"] = 12000, ["Module:CountryData/cacheD"] = 4600, ["Module:CountryData/cacheE"] = 2800, ["Module:CountryData/cacheF"] = 2700, ["Module:CountryData/cacheG"] = 2700, ["Module:CountryData/summary"] = 143000, ["Module:Country_adjective"] = 4400, ["Module:Country_alias"] = 53000, ["Module:Country_alias/data"] = 53000, ["Module:Currency"] = 3700, ["Module:Currency/Presentation"] = 3700, } d1b95c4fa4b55f69795be7c6bde731f2d8bdb767 Module:Transclusion count/data/F 828 1725 3252 2023-11-05T05:09:19Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["F1"] = 4700, ["FA-Class"] = 15000, ["FAA-airport"] = 3700, ["FACClosed"] = 5100, ["FAR_link"] = 102000, ["FCC-LMS-Facility"] = 5500, ["FIDE"] = 2200, ["FIFA_player"] = 10000, ["FIN"] = 9200, ["FIPS"] = 2000, ["FJC_Bio"] = 4200, ["FL-Class"] = 12000, ["FLCClosed"] = 2600, ["FM-Class"] = 2800, ["FMA"] = 3300, ["FMARB"] = 10000, ["FML"] = 9100, ["FMQ"] = 12000, ["FMXL"] = 2400, ["FM_station_data"] = 8700, ["FPCnom/VotingEnds"] = 9700, ["FPCresult"] = 16000, ["FRA"] = 19000, ["FRG"] = 3700, ["FULLBASEPAGENAME"] = 5400, ["FULLROOTPAGENAME"] = 2440000, ["FXL"] = 2200, ["Fa_bottom"] = 2200, ["Fa_top"] = 2200, ["Facebook"] = 14000, ["Facepalm"] = 2600, ["Fact"] = 36000, ["FadedPage"] = 2400, ["FailedGA"] = 3300, ["Failed_verification"] = 15000, ["Family_name_explanation"] = 80000, ["Family_name_explanation/core"] = 80000, ["Family_name_hatnote"] = 79000, ["Farl"] = 102000, ["Fb"] = 26000, ["Fb-rt"] = 5800, ["Fb_cs_footer"] = 2900, ["Fb_gd"] = 8800, ["Fb_overview"] = 3700, ["Fb_overview2"] = 3400, ["Fb_rs"] = 8500, ["Fb_rs_footer"] = 8400, ["Fba/core"] = 24000, ["Fba/list"] = 29000, ["Fbaicon"] = 7200, ["Fbaicon/core"] = 8200, ["Fbicon"] = 2900, ["Fbu"] = 3700, ["Fbu-rt"] = 2200, ["Fbw"] = 4900, ["Fdacite"] = 14000, ["FeaturedPicture"] = 6300, ["Featured_article"] = 6700, ["Featured_article_tools"] = 11000, ["Featured_list"] = 4300, ["Featured_picture"] = 7700, ["Featured_topic_box"] = 3100, ["Featured_topic_box/styles.css"] = 3100, ["Feedback_link"] = 4600, ["Fiction-based_redirects_to_list_entries_category_handler"] = 2300, ["File-Class"] = 12000, ["File_other"] = 934000, ["Film"] = 54000, ["Film_date"] = 119000, ["Film_lists_by_country"] = 2300, ["Find"] = 8200, ["FindYDCportal"] = 176000, ["Find_a_Grave"] = 28000, ["Find_a_Grave_cemetery"] = 2300, ["Find_country"] = 233000, ["Find_general_sources"] = 868000, ["Find_medical_sources"] = 7400, ["Find_page_text"] = 636000, ["Find_sources"] = 631000, ["Find_sources/proj/is_biography"] = 619000, ["Find_sources/proj/is_med"] = 631000, ["Find_sources/proj/is_video"] = 624000, ["Find_sources/top_proj"] = 631000, ["Find_sources_AFD"] = 200000, ["Find_sources_mainspace"] = 694000, ["Find_video_game_sources"] = 5000, ["Find_video_game_sources_short"] = 3100, ["Findsources"] = 42000, ["First_nonempty"] = 14000, ["First_word"] = 442000, ["FishBase"] = 14000, ["FishBase_genus"] = 4600, ["Fishproject"] = 10000, ["Fix"] = 913000, ["Fix-span"] = 55000, ["Fix/category"] = 867000, ["Fix_comma_category"] = 562000, ["Fixed"] = 8900, ["Flag"] = 567000, ["Flag/core"] = 567000, ["FlagIOC"] = 11000, ["FlagIOC2"] = 16000, ["FlagIOC2athlete"] = 11000, ["FlagIOC2medalist"] = 4500, ["FlagIOC2team"] = 6700, ["FlagIOCathlete"] = 17000, ["FlagIOCteam"] = 2700, ["FlagIPC"] = 3400, ["FlagPASO"] = 2700, ["FlagPASOathlete"] = 2500, ["Flag_data"] = 7300, ["Flag_icon"] = 15000, ["Flagathlete"] = 28000, ["Flagbig"] = 4500, ["Flagbig/core"] = 7700, ["Flagcountry"] = 40000, ["Flagcountry/core"] = 40000, ["Flagdeco"] = 113000, ["Flagdeco/core"] = 113000, ["Flagg"] = 21000, ["Flagicon"] = 601000, ["Flagicon/core"] = 601000, ["Flagicon/nt"] = 5000, ["Flagicon_image"] = 41000, ["Flaglink/core"] = 78000, ["Flagmedalist"] = 2200, ["Flagmedalist/core"] = 2200, ["Flagright/core"] = 23000, ["Flagteam"] = 6100, ["Flagu"] = 24000, ["Flagu/core"] = 24000, ["Flat_list"] = 8000, ["Flatlist"] = 2090000, ["FloraBase"] = 5600, ["Floruit"] = 4100, ["Fmbox"] = 19000, ["Font"] = 8900, ["Font_color"] = 38000, ["Fontcolor"] = 6600, ["Fooian_expatriate_sportspeople_in_Bar_cat"] = 10000, ["Fooian_expatriate_sportspeople_in_Bar_cat/core"] = 10000, ["Fooian_expatriate_sportspeople_in_Bar_cat/sortname"] = 10000, ["Fooian_fooers"] = 13000, ["Football"] = 57000, ["FootballDatabase.eu"] = 8600, ["FootballFacts.ru"] = 5700, ["Football_box"] = 25000, ["Football_box_collapsible"] = 24000, ["Football_kit"] = 48000, ["Football_manager_history"] = 21000, ["Football_squad"] = 47000, ["Football_squad2_player"] = 50000, ["Football_squad_end"] = 19000, ["Football_squad_manager"] = 47000, ["Football_squad_mid"] = 17000, ["Football_squad_player"] = 19000, ["Football_squad_player/role"] = 6800, ["Football_squad_player/styles.css"] = 19000, ["Football_squad_start"] = 19000, ["Footballbox"] = 7200, ["Footballbox_collapsible"] = 7200, ["Footballstats"] = 2900, ["Foo–Bar_relations_category"] = 9200, ["Foo–Bar_relations_category/core"] = 9200, ["Foo–Bar_relations_category/countrynamesortfix"] = 9200, ["Foo–Bar_relations_category/fixcountryname"] = 9200, ["Foo–Bar_relations_category/inner_core"] = 9200, ["Foo–Bar_relations_category/mapname"] = 9200, ["For"] = 186000, ["For-multi"] = 9600, ["For_loop"] = 777000, ["For_multi"] = 7900, ["For_nowiki"] = 8700, ["ForaDeJogo"] = 4100, ["Force_plural"] = 3200, ["Format_linkr"] = 4400, ["Format_numeric_span"] = 3600, ["Format_price"] = 8200, ["Format_price/digits"] = 8100, ["Formatprice"] = 3200, ["Fossil_range"] = 12000, ["Fossil_range/bar"] = 21000, ["Fossil_range/marker"] = 21000, ["Fossilrange"] = 5800, ["Frac"] = 31000, ["Fraction"] = 35000, ["Fraction/styles.css"] = 94000, ["France_metadata_Wikidata"] = 36000, ["Free_access"] = 4300, ["Free_in_US_media"] = 15000, ["Free_media"] = 156000, ["Frequency"] = 3400, ["Friday"] = 2700, ["Fs_end"] = 18000, ["Fs_mid"] = 16000, ["Fs_player"] = 18000, ["Fs_start"] = 18000, ["Full_citation_needed"] = 8300, ["Full_party_name_with_color"] = 4000, ["Fullurl"] = 6500, ["Fullurl:"] = 6400, ["Further"] = 63000, ["Fussballdaten"] = 4300, ["Module:Fb_overview"] = 3800, ["Module:FeaturedTopicSum"] = 6800, ["Module:Fedi-share"] = 3100, ["Module:Fiction-based_redirects_to_list_entries_category_handler"] = 2300, ["Module:Fiction-based_redirects_to_list_entries_category_handler/RedirectType"] = 2300, ["Module:Fiction_redirect_category_handler"] = 2900, ["Module:File_link"] = 68000, ["Module:FindYDCportal"] = 309000, ["Module:Find_country"] = 184000, ["Module:Find_sources"] = 1570000, ["Module:Find_sources/config"] = 1570000, ["Module:Find_sources/links"] = 1570000, ["Module:Find_sources/templates/Find_general_sources"] = 868000, ["Module:Find_sources/templates/Find_sources_mainspace"] = 694000, ["Module:Find_sources/templates/Find_sources_medical"] = 7400, ["Module:Find_sources/templates/Find_sources_video_games"] = 5000, ["Module:FishRef"] = 7000, ["Module:Flag"] = 51000, ["Module:Flagg"] = 126000, ["Module:Football_box"] = 26000, ["Module:Football_box/styles.css"] = 26000, ["Module:Football_box_collapsible"] = 24000, ["Module:Football_manager_history"] = 21000, ["Module:Football_squad"] = 47000, ["Module:Footnotes"] = 291000, ["Module:Footnotes/anchor_id_list"] = 210000, ["Module:Footnotes/anchor_id_list/data"] = 210000, ["Module:Footnotes/whitelist"] = 210000, ["Module:For"] = 187000, ["Module:For_loop"] = 777000, ["Module:For_nowiki"] = 8700, ["Module:Format_link"] = 1330000, ["Module:Formatted_appearance"] = 5000, } 2a1e6682573b7aa8fdbcb99e8d139cefa6e9e0f9 Module:Transclusion count/data/K 828 1691 3155 2023-11-05T05:10:09Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["KAZ"] = 4500, ["KEN"] = 3500, ["KIA"] = 8000, ["KOR"] = 7400, ["K_League_player"] = 2100, ["Keep_local"] = 6000, ["Keggcite"] = 4300, ["Kent_tasks"] = 4600, ["Key_press"] = 3700, ["Key_press/styles.css"] = 3800, ["KillMarkers"] = 44000, ["Ko-hhrm"] = 5500, ["Korean"] = 14000, ["Module:Key"] = 3800, } d8aa48998c354abd6c316d082ff432f36e3e4b37 Module:Transclusion count/data/L 828 1008 2993 2213 2023-11-05T05:10:19Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["LASTYEAR"] = 717000, ["LAT"] = 3600, ["LCAuth"] = 3400, ["LDSproject"] = 2800, ["LTU"] = 4300, ["LUX"] = 2300, ["LVA"] = 4200, ["La"] = 455000, ["Label"] = 6600, ["LabourProject"] = 3100, ["Lafc"] = 5500, ["Lake_project"] = 5300, ["Lang"] = 357000, ["Lang-ar"] = 43000, ["Lang-az"] = 4500, ["Lang-ba"] = 3400, ["Lang-be"] = 4400, ["Lang-bg"] = 10000, ["Lang-bn"] = 7700, ["Lang-cs"] = 3600, ["Lang-cy"] = 3800, ["Lang-da"] = 3700, ["Lang-de"] = 38000, ["Lang-el"] = 23000, ["Lang-en"] = 17000, ["Lang-es"] = 19000, ["Lang-et"] = 2200, ["Lang-fa"] = 76000, ["Lang-fi"] = 3100, ["Lang-fr"] = 24000, ["Lang-ga"] = 7600, ["Lang-gd"] = 3800, ["Lang-gr"] = 2700, ["Lang-grc"] = 7400, ["Lang-he"] = 17000, ["Lang-hr"] = 3000, ["Lang-hu"] = 9500, ["Lang-hy"] = 6700, ["Lang-id"] = 2300, ["Lang-it"] = 12000, ["Lang-ja"] = 4500, ["Lang-ka"] = 5400, ["Lang-kk"] = 2700, ["Lang-ko"] = 3800, ["Lang-ku"] = 4200, ["Lang-la"] = 13000, ["Lang-lt"] = 2200, ["Lang-lv"] = 2100, ["Lang-mk"] = 3600, ["Lang-ms"] = 2600, ["Lang-my"] = 4700, ["Lang-ne"] = 3400, ["Lang-nl"] = 4900, ["Lang-no"] = 6200, ["Lang-oc"] = 7100, ["Lang-pl"] = 8700, ["Lang-pt"] = 6900, ["Lang-ro"] = 3800, ["Lang-ru"] = 92000, ["Lang-rus"] = 3100, ["Lang-sa"] = 2400, ["Lang-si"] = 2000, ["Lang-sl"] = 3900, ["Lang-sq"] = 3500, ["Lang-sr"] = 4900, ["Lang-sr-Cyrl"] = 13000, ["Lang-sr-cyr"] = 5300, ["Lang-sr-cyrl"] = 3000, ["Lang-sv"] = 6500, ["Lang-ta"] = 2600, ["Lang-th"] = 11000, ["Lang-tr"] = 7700, ["Lang-uk"] = 19000, ["Lang-ur"] = 9300, ["Lang-zh"] = 73000, ["Lang2iso"] = 5400, ["Language_with_name"] = 9200, ["Languages"] = 2700, ["Large"] = 231000, ["Large_category_TOC"] = 11000, ["Large_category_TOC/tracking"] = 10000, ["Last_edited_by"] = 67000, ["Last_word"] = 21000, ["LaunchesByYear_footer"] = 3300, ["LaunchesByYear_header"] = 3300, ["Lc"] = 8900, ["Lcfirstletter"] = 2500, ["Lead_too_short"] = 9000, ["League_icon"] = 3300, ["Leagueicon"] = 3200, ["Leave_feedback/link"] = 76000, ["Left"] = 8700, ["Legend"] = 32000, ["Legend/styles.css"] = 130000, ["Legend0"] = 8200, ["Legend2"] = 18000, ["Legend_inline"] = 21000, ["LepIndex"] = 12000, ["LepidopteraTalk"] = 56000, ["Letter-NumberCombDisambig"] = 3700, ["Letter–number_combination_disambiguation"] = 4900, ["Libera.Chat"] = 11000, ["Library_link_about"] = 3900, ["Library_resources_box"] = 4000, ["Librivox_author"] = 6700, ["Librivox_book"] = 3700, ["License_migration"] = 52000, ["License_migration_complete"] = 23000, ["License_migration_is_redundant"] = 7600, ["License_migration_not_eligible"] = 6800, ["License_migration_redundant"] = 22000, ["Like"] = 2400, ["Like_resume"] = 3800, ["Likely"] = 4600, ["Line_link"] = 10000, ["Linescore_Amfootball"] = 2300, ["LinkCatIfExists2"] = 58000, ["LinkStatusLocal"] = 44000, ["LinkSummary"] = 242000, ["LinkSummaryLive"] = 8300, ["Link_if_exists"] = 75000, ["Link_note"] = 62000, ["Link_summary"] = 255000, ["Link_target"] = 15000, ["Linkcolor"] = 2300, ["Linkless_exists"] = 15000, ["Linksummarylive"] = 4100, ["Linktext"] = 23000, ["List-Class"] = 16000, ["Listen"] = 14000, ["Listen_live"] = 2400, ["Lists_of_people_editnotice"] = 2600, ["Lit"] = 5300, ["Literal_translation"] = 10000, ["Lnl"] = 8100, ["LoMP"] = 4200, ["Location_map"] = 713000, ["Location_map+"] = 25000, ["Location_map_data_documentation"] = 6400, ["Location_map_many"] = 4200, ["Location_map~"] = 24000, ["Log"] = 3600, ["Logo_fur"] = 33000, ["Logo_requested"] = 3800, ["London_Gazette"] = 33000, ["Long_plot"] = 3900, ["Longitem"] = 663000, ["Longlink"] = 6400, ["Look_from"] = 9300, ["Lookfrom"] = 4900, ["Loop"] = 104000, ["Loss"] = 3000, ["Low-Class"] = 15000, ["Low-importance"] = 15000, ["Lower"] = 8000, ["Lowercase"] = 5200, ["Lowercase_title"] = 15000, ["Lowercasetitle"] = 2500, ["Lt"] = 2400, ["Lua"] = 9900, ["Lx"] = 22000, ["Module:Labelled_list_hatnote"] = 548000, ["Module:Lang"] = 1470000, ["Module:Lang-zh"] = 74000, ["Module:Lang/ISO_639_synonyms"] = 1470000, ["Module:Lang/data"] = 1470000, ["Module:Lang/documentor_tool"] = 4000, ["Module:Lang/tag_from_name"] = 3100, ["Module:Language"] = 3000, ["Module:Language/data"] = 3000, ["Module:Language/data/ISO_639-1"] = 9400, ["Module:Language/data/ISO_639-2"] = 2900, ["Module:Language/data/ISO_639-3_(dep)"] = 20000, ["Module:Language/data/ISO_639_deprecated"] = 20000, ["Module:Language/data/ISO_639_name_to_code"] = 5400, ["Module:Language/data/ISO_639_override"] = 20000, ["Module:Language/data/iana_languages"] = 1470000, ["Module:Language/data/iana_regions"] = 1470000, ["Module:Language/data/iana_scripts"] = 1470000, ["Module:Language/data/iana_suppressed_scripts"] = 1470000, ["Module:Language/data/iana_variants"] = 1470000, ["Module:Large_category_TOC"] = 11000, ["Module:Large_category_TOC/styles.css"] = 11000, ["Module:Latin"] = 8300, ["Module:Librivox_book"] = 3700, ["Module:Lighthouse_tracking"] = 2600, ["Module:List"] = 2160000, ["Module:Listen"] = 14000, ["Module:Listen/styles.css"] = 13000, ["Module:Location_map"] = 747000, ["Module:Location_map/data/Antarctica"] = 2700, ["Module:Location_map/data/Arkansas"] = 3300, ["Module:Location_map/data/Australia"] = 2200, ["Module:Location_map/data/Australia_New_South_Wales"] = 3600, ["Module:Location_map/data/Australia_Queensland"] = 6000, ["Module:Location_map/data/Australia_South_Australia"] = 2400, ["Module:Location_map/data/Austria"] = 3400, ["Module:Location_map/data/Azerbaijan"] = 4900, ["Module:Location_map/data/Bangladesh"] = 2000, ["Module:Location_map/data/Bosnia_and_Herzegovina"] = 5400, ["Module:Location_map/data/Brazil"] = 4800, ["Module:Location_map/data/California"] = 6000, ["Module:Location_map/data/Canada"] = 4600, ["Module:Location_map/data/Canada_Alberta"] = 2400, ["Module:Location_map/data/Canada_British_Columbia"] = 3100, ["Module:Location_map/data/Canada_Ontario"] = 2400, ["Module:Location_map/data/China"] = 2900, ["Module:Location_map/data/Croatia"] = 3500, ["Module:Location_map/data/Czech_Republic"] = 6800, ["Module:Location_map/data/Estonia"] = 3000, ["Module:Location_map/data/Europe"] = 4400, ["Module:Location_map/data/Florida"] = 2600, ["Module:Location_map/data/France"] = 40000, ["Module:Location_map/data/France_Auvergne-Rhône-Alpes"] = 4400, ["Module:Location_map/data/France_Bourgogne-Franche-Comté"] = 3900, ["Module:Location_map/data/France_Grand_Est"] = 5300, ["Module:Location_map/data/France_Hauts-de-France"] = 3900, ["Module:Location_map/data/France_Normandy"] = 3400, ["Module:Location_map/data/France_Nouvelle-Aquitaine"] = 4800, ["Module:Location_map/data/France_Occitanie"] = 4700, ["Module:Location_map/data/Germany"] = 17000, ["Module:Location_map/data/Germany_Bavaria"] = 2900, ["Module:Location_map/data/Germany_Rhineland-Palatinate"] = 2600, ["Module:Location_map/data/Greece"] = 4100, ["Module:Location_map/data/Hungary"] = 2800, ["Module:Location_map/data/Illinois"] = 3400, ["Module:Location_map/data/India"] = 23000, ["Module:Location_map/data/India3"] = 2900, ["Module:Location_map/data/India_Andhra_Pradesh"] = 2600, ["Module:Location_map/data/India_Karnataka"] = 2100, ["Module:Location_map/data/India_Kerala"] = 2700, ["Module:Location_map/data/India_Maharashtra"] = 2800, ["Module:Location_map/data/India_Punjab"] = 2200, ["Module:Location_map/data/India_Tamil_Nadu"] = 3100, ["Module:Location_map/data/India_Uttar_Pradesh"] = 3200, ["Module:Location_map/data/India_West_Bengal"] = 3300, ["Module:Location_map/data/Indiana"] = 3400, ["Module:Location_map/data/Iowa"] = 3000, ["Module:Location_map/data/Iran"] = 50000, ["Module:Location_map/data/Ireland"] = 3700, ["Module:Location_map/data/Italy"] = 12000, ["Module:Location_map/data/Japan"] = 14000, ["Module:Location_map/data/Maine"] = 2100, ["Module:Location_map/data/Maryland"] = 2000, ["Module:Location_map/data/Massachusetts"] = 4700, ["Module:Location_map/data/Mexico"] = 3400, ["Module:Location_map/data/Michigan"] = 3800, ["Module:Location_map/data/Minnesota"] = 4600, ["Module:Location_map/data/Nepal"] = 4600, ["Module:Location_map/data/Netherlands"] = 3000, ["Module:Location_map/data/New_York"] = 8100, ["Module:Location_map/data/North_Carolina"] = 3500, ["Module:Location_map/data/Norway"] = 4500, ["Module:Location_map/data/Ohio"] = 2300, ["Module:Location_map/data/Pakistan"] = 2900, ["Module:Location_map/data/Pennsylvania"] = 5900, ["Module:Location_map/data/Peru"] = 2900, ["Module:Location_map/data/Philippines"] = 3100, ["Module:Location_map/data/Poland"] = 53000, ["Module:Location_map/data/Queensland"] = 2200, ["Module:Location_map/data/Romania"] = 5900, ["Module:Location_map/data/Russia"] = 26000, ["Module:Location_map/data/Russia_Bashkortostan"] = 4500, ["Module:Location_map/data/Russia_Vladimir_Oblast"] = 2200, ["Module:Location_map/data/Russia_Vologda_Oblast"] = 4800, ["Module:Location_map/data/Serbia"] = 4000, ["Module:Location_map/data/Slovakia"] = 2100, ["Module:Location_map/data/Slovenia"] = 6700, ["Module:Location_map/data/South_Africa"] = 3200, ["Module:Location_map/data/Spain"] = 7700, ["Module:Location_map/data/Sweden"] = 2800, ["Module:Location_map/data/Switzerland"] = 6200, ["Module:Location_map/data/Syria"] = 2200, ["Module:Location_map/data/Texas"] = 3400, ["Module:Location_map/data/Turkey"] = 18000, ["Module:Location_map/data/USA"] = 110000, ["Module:Location_map/data/USA_Alabama"] = 2300, ["Module:Location_map/data/USA_Alaska"] = 2100, ["Module:Location_map/data/USA_Arizona"] = 2100, ["Module:Location_map/data/USA_Arkansas"] = 3500, ["Module:Location_map/data/USA_California"] = 7800, ["Module:Location_map/data/USA_Colorado"] = 2200, ["Module:Location_map/data/USA_Florida"] = 3300, ["Module:Location_map/data/USA_Georgia"] = 2000, ["Module:Location_map/data/USA_Illinois"] = 3700, ["Module:Location_map/data/USA_Indiana"] = 3600, ["Module:Location_map/data/USA_Iowa"] = 3200, ["Module:Location_map/data/USA_Kentucky"] = 3200, ["Module:Location_map/data/USA_Maine"] = 2200, ["Module:Location_map/data/USA_Maryland"] = 2600, ["Module:Location_map/data/USA_Massachusetts"] = 5000, ["Module:Location_map/data/USA_Michigan"] = 4200, ["Module:Location_map/data/USA_Minnesota"] = 5000, ["Module:Location_map/data/USA_Missouri"] = 2100, ["Module:Location_map/data/USA_New_Jersey"] = 2900, ["Module:Location_map/data/USA_New_York"] = 9100, ["Module:Location_map/data/USA_North_Carolina"] = 4300, ["Module:Location_map/data/USA_Ohio"] = 2600, ["Module:Location_map/data/USA_Oregon"] = 2600, ["Module:Location_map/data/USA_Pennsylvania"] = 7100, ["Module:Location_map/data/USA_Texas"] = 3800, ["Module:Location_map/data/USA_Virginia"] = 5100, ["Module:Location_map/data/USA_Washington"] = 3000, ["Module:Location_map/data/USA_West_Virginia"] = 4400, ["Module:Location_map/data/USA_Wisconsin"] = 2700, ["Module:Location_map/data/Ukraine"] = 3300, ["Module:Location_map/data/United_Kingdom_Greater_London"] = 2200, ["Module:Location_map/data/Virginia"] = 4000, ["Module:Location_map/data/Washington"] = 2200, ["Module:Location_map/data/West_Virginia"] = 4100, ["Module:Location_map/data/Wisconsin"] = 2300, ["Module:Location_map/data/doc"] = 6400, ["Module:Location_map/info"] = 6400, ["Module:Location_map/multi"] = 29000, ["Module:Location_map/styles.css"] = 742000, ["Module:London_Gazette_util"] = 33000, ["Module:Lua_banner"] = 9900, } 85197ddfd1dd0dc8edfd3b21c138215cdc658bbd 2994 2993 2023-11-09T13:08:27Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/L]] Scribunto text/plain return { ["LASTYEAR"] = 717000, ["LAT"] = 3600, ["LCAuth"] = 3400, ["LDSproject"] = 2800, ["LTU"] = 4300, ["LUX"] = 2300, ["LVA"] = 4200, ["La"] = 455000, ["Label"] = 6600, ["LabourProject"] = 3100, ["Lafc"] = 5500, ["Lake_project"] = 5300, ["Lang"] = 357000, ["Lang-ar"] = 43000, ["Lang-az"] = 4500, ["Lang-ba"] = 3400, ["Lang-be"] = 4400, ["Lang-bg"] = 10000, ["Lang-bn"] = 7700, ["Lang-cs"] = 3600, ["Lang-cy"] = 3800, ["Lang-da"] = 3700, ["Lang-de"] = 38000, ["Lang-el"] = 23000, ["Lang-en"] = 17000, ["Lang-es"] = 19000, ["Lang-et"] = 2200, ["Lang-fa"] = 76000, ["Lang-fi"] = 3100, ["Lang-fr"] = 24000, ["Lang-ga"] = 7600, ["Lang-gd"] = 3800, ["Lang-gr"] = 2700, ["Lang-grc"] = 7400, ["Lang-he"] = 17000, ["Lang-hr"] = 3000, ["Lang-hu"] = 9500, ["Lang-hy"] = 6700, ["Lang-id"] = 2300, ["Lang-it"] = 12000, ["Lang-ja"] = 4500, ["Lang-ka"] = 5400, ["Lang-kk"] = 2700, ["Lang-ko"] = 3800, ["Lang-ku"] = 4200, ["Lang-la"] = 13000, ["Lang-lt"] = 2200, ["Lang-lv"] = 2100, ["Lang-mk"] = 3600, ["Lang-ms"] = 2600, ["Lang-my"] = 4700, ["Lang-ne"] = 3400, ["Lang-nl"] = 4900, ["Lang-no"] = 6200, ["Lang-oc"] = 7100, ["Lang-pl"] = 8700, ["Lang-pt"] = 6900, ["Lang-ro"] = 3800, ["Lang-ru"] = 92000, ["Lang-rus"] = 3100, ["Lang-sa"] = 2400, ["Lang-si"] = 2000, ["Lang-sl"] = 3900, ["Lang-sq"] = 3500, ["Lang-sr"] = 4900, ["Lang-sr-Cyrl"] = 13000, ["Lang-sr-cyr"] = 5300, ["Lang-sr-cyrl"] = 3000, ["Lang-sv"] = 6500, ["Lang-ta"] = 2600, ["Lang-th"] = 11000, ["Lang-tr"] = 7700, ["Lang-uk"] = 19000, ["Lang-ur"] = 9300, ["Lang-zh"] = 73000, ["Lang2iso"] = 5400, ["Language_with_name"] = 9200, ["Languages"] = 2700, ["Large"] = 231000, ["Large_category_TOC"] = 11000, ["Large_category_TOC/tracking"] = 10000, ["Last_edited_by"] = 67000, ["Last_word"] = 21000, ["LaunchesByYear_footer"] = 3300, ["LaunchesByYear_header"] = 3300, ["Lc"] = 8900, ["Lcfirstletter"] = 2500, ["Lead_too_short"] = 9000, ["League_icon"] = 3300, ["Leagueicon"] = 3200, ["Leave_feedback/link"] = 76000, ["Left"] = 8700, ["Legend"] = 32000, ["Legend/styles.css"] = 130000, ["Legend0"] = 8200, ["Legend2"] = 18000, ["Legend_inline"] = 21000, ["LepIndex"] = 12000, ["LepidopteraTalk"] = 56000, ["Letter-NumberCombDisambig"] = 3700, ["Letter–number_combination_disambiguation"] = 4900, ["Libera.Chat"] = 11000, ["Library_link_about"] = 3900, ["Library_resources_box"] = 4000, ["Librivox_author"] = 6700, ["Librivox_book"] = 3700, ["License_migration"] = 52000, ["License_migration_complete"] = 23000, ["License_migration_is_redundant"] = 7600, ["License_migration_not_eligible"] = 6800, ["License_migration_redundant"] = 22000, ["Like"] = 2400, ["Like_resume"] = 3800, ["Likely"] = 4600, ["Line_link"] = 10000, ["Linescore_Amfootball"] = 2300, ["LinkCatIfExists2"] = 58000, ["LinkStatusLocal"] = 44000, ["LinkSummary"] = 242000, ["LinkSummaryLive"] = 8300, ["Link_if_exists"] = 75000, ["Link_note"] = 62000, ["Link_summary"] = 255000, ["Link_target"] = 15000, ["Linkcolor"] = 2300, ["Linkless_exists"] = 15000, ["Linksummarylive"] = 4100, ["Linktext"] = 23000, ["List-Class"] = 16000, ["Listen"] = 14000, ["Listen_live"] = 2400, ["Lists_of_people_editnotice"] = 2600, ["Lit"] = 5300, ["Literal_translation"] = 10000, ["Lnl"] = 8100, ["LoMP"] = 4200, ["Location_map"] = 713000, ["Location_map+"] = 25000, ["Location_map_data_documentation"] = 6400, ["Location_map_many"] = 4200, ["Location_map~"] = 24000, ["Log"] = 3600, ["Logo_fur"] = 33000, ["Logo_requested"] = 3800, ["London_Gazette"] = 33000, ["Long_plot"] = 3900, ["Longitem"] = 663000, ["Longlink"] = 6400, ["Look_from"] = 9300, ["Lookfrom"] = 4900, ["Loop"] = 104000, ["Loss"] = 3000, ["Low-Class"] = 15000, ["Low-importance"] = 15000, ["Lower"] = 8000, ["Lowercase"] = 5200, ["Lowercase_title"] = 15000, ["Lowercasetitle"] = 2500, ["Lt"] = 2400, ["Lua"] = 9900, ["Lx"] = 22000, ["Module:Labelled_list_hatnote"] = 548000, ["Module:Lang"] = 1470000, ["Module:Lang-zh"] = 74000, ["Module:Lang/ISO_639_synonyms"] = 1470000, ["Module:Lang/data"] = 1470000, ["Module:Lang/documentor_tool"] = 4000, ["Module:Lang/tag_from_name"] = 3100, ["Module:Language"] = 3000, ["Module:Language/data"] = 3000, ["Module:Language/data/ISO_639-1"] = 9400, ["Module:Language/data/ISO_639-2"] = 2900, ["Module:Language/data/ISO_639-3_(dep)"] = 20000, ["Module:Language/data/ISO_639_deprecated"] = 20000, ["Module:Language/data/ISO_639_name_to_code"] = 5400, ["Module:Language/data/ISO_639_override"] = 20000, ["Module:Language/data/iana_languages"] = 1470000, ["Module:Language/data/iana_regions"] = 1470000, ["Module:Language/data/iana_scripts"] = 1470000, ["Module:Language/data/iana_suppressed_scripts"] = 1470000, ["Module:Language/data/iana_variants"] = 1470000, ["Module:Large_category_TOC"] = 11000, ["Module:Large_category_TOC/styles.css"] = 11000, ["Module:Latin"] = 8300, ["Module:Librivox_book"] = 3700, ["Module:Lighthouse_tracking"] = 2600, ["Module:List"] = 2160000, ["Module:Listen"] = 14000, ["Module:Listen/styles.css"] = 13000, ["Module:Location_map"] = 747000, ["Module:Location_map/data/Antarctica"] = 2700, ["Module:Location_map/data/Arkansas"] = 3300, ["Module:Location_map/data/Australia"] = 2200, ["Module:Location_map/data/Australia_New_South_Wales"] = 3600, ["Module:Location_map/data/Australia_Queensland"] = 6000, ["Module:Location_map/data/Australia_South_Australia"] = 2400, ["Module:Location_map/data/Austria"] = 3400, ["Module:Location_map/data/Azerbaijan"] = 4900, ["Module:Location_map/data/Bangladesh"] = 2000, ["Module:Location_map/data/Bosnia_and_Herzegovina"] = 5400, ["Module:Location_map/data/Brazil"] = 4800, ["Module:Location_map/data/California"] = 6000, ["Module:Location_map/data/Canada"] = 4600, ["Module:Location_map/data/Canada_Alberta"] = 2400, ["Module:Location_map/data/Canada_British_Columbia"] = 3100, ["Module:Location_map/data/Canada_Ontario"] = 2400, ["Module:Location_map/data/China"] = 2900, ["Module:Location_map/data/Croatia"] = 3500, ["Module:Location_map/data/Czech_Republic"] = 6800, ["Module:Location_map/data/Estonia"] = 3000, ["Module:Location_map/data/Europe"] = 4400, ["Module:Location_map/data/Florida"] = 2600, ["Module:Location_map/data/France"] = 40000, ["Module:Location_map/data/France_Auvergne-Rhône-Alpes"] = 4400, ["Module:Location_map/data/France_Bourgogne-Franche-Comté"] = 3900, ["Module:Location_map/data/France_Grand_Est"] = 5300, ["Module:Location_map/data/France_Hauts-de-France"] = 3900, ["Module:Location_map/data/France_Normandy"] = 3400, ["Module:Location_map/data/France_Nouvelle-Aquitaine"] = 4800, ["Module:Location_map/data/France_Occitanie"] = 4700, ["Module:Location_map/data/Germany"] = 17000, ["Module:Location_map/data/Germany_Bavaria"] = 2900, ["Module:Location_map/data/Germany_Rhineland-Palatinate"] = 2600, ["Module:Location_map/data/Greece"] = 4100, ["Module:Location_map/data/Hungary"] = 2800, ["Module:Location_map/data/Illinois"] = 3400, ["Module:Location_map/data/India"] = 23000, ["Module:Location_map/data/India3"] = 2900, ["Module:Location_map/data/India_Andhra_Pradesh"] = 2600, ["Module:Location_map/data/India_Karnataka"] = 2100, ["Module:Location_map/data/India_Kerala"] = 2700, ["Module:Location_map/data/India_Maharashtra"] = 2800, ["Module:Location_map/data/India_Punjab"] = 2200, ["Module:Location_map/data/India_Tamil_Nadu"] = 3100, ["Module:Location_map/data/India_Uttar_Pradesh"] = 3200, ["Module:Location_map/data/India_West_Bengal"] = 3300, ["Module:Location_map/data/Indiana"] = 3400, ["Module:Location_map/data/Iowa"] = 3000, ["Module:Location_map/data/Iran"] = 50000, ["Module:Location_map/data/Ireland"] = 3700, ["Module:Location_map/data/Italy"] = 12000, ["Module:Location_map/data/Japan"] = 14000, ["Module:Location_map/data/Maine"] = 2100, ["Module:Location_map/data/Maryland"] = 2000, ["Module:Location_map/data/Massachusetts"] = 4700, ["Module:Location_map/data/Mexico"] = 3400, ["Module:Location_map/data/Michigan"] = 3800, ["Module:Location_map/data/Minnesota"] = 4600, ["Module:Location_map/data/Nepal"] = 4600, ["Module:Location_map/data/Netherlands"] = 3000, ["Module:Location_map/data/New_York"] = 8100, ["Module:Location_map/data/North_Carolina"] = 3500, ["Module:Location_map/data/Norway"] = 4500, ["Module:Location_map/data/Ohio"] = 2300, ["Module:Location_map/data/Pakistan"] = 2900, ["Module:Location_map/data/Pennsylvania"] = 5900, ["Module:Location_map/data/Peru"] = 2900, ["Module:Location_map/data/Philippines"] = 3100, ["Module:Location_map/data/Poland"] = 53000, ["Module:Location_map/data/Queensland"] = 2200, ["Module:Location_map/data/Romania"] = 5900, ["Module:Location_map/data/Russia"] = 26000, ["Module:Location_map/data/Russia_Bashkortostan"] = 4500, ["Module:Location_map/data/Russia_Vladimir_Oblast"] = 2200, ["Module:Location_map/data/Russia_Vologda_Oblast"] = 4800, ["Module:Location_map/data/Serbia"] = 4000, ["Module:Location_map/data/Slovakia"] = 2100, ["Module:Location_map/data/Slovenia"] = 6700, ["Module:Location_map/data/South_Africa"] = 3200, ["Module:Location_map/data/Spain"] = 7700, ["Module:Location_map/data/Sweden"] = 2800, ["Module:Location_map/data/Switzerland"] = 6200, ["Module:Location_map/data/Syria"] = 2200, ["Module:Location_map/data/Texas"] = 3400, ["Module:Location_map/data/Turkey"] = 18000, ["Module:Location_map/data/USA"] = 110000, ["Module:Location_map/data/USA_Alabama"] = 2300, ["Module:Location_map/data/USA_Alaska"] = 2100, ["Module:Location_map/data/USA_Arizona"] = 2100, ["Module:Location_map/data/USA_Arkansas"] = 3500, ["Module:Location_map/data/USA_California"] = 7800, ["Module:Location_map/data/USA_Colorado"] = 2200, ["Module:Location_map/data/USA_Florida"] = 3300, ["Module:Location_map/data/USA_Georgia"] = 2000, ["Module:Location_map/data/USA_Illinois"] = 3700, ["Module:Location_map/data/USA_Indiana"] = 3600, ["Module:Location_map/data/USA_Iowa"] = 3200, ["Module:Location_map/data/USA_Kentucky"] = 3200, ["Module:Location_map/data/USA_Maine"] = 2200, ["Module:Location_map/data/USA_Maryland"] = 2600, ["Module:Location_map/data/USA_Massachusetts"] = 5000, ["Module:Location_map/data/USA_Michigan"] = 4200, ["Module:Location_map/data/USA_Minnesota"] = 5000, ["Module:Location_map/data/USA_Missouri"] = 2100, ["Module:Location_map/data/USA_New_Jersey"] = 2900, ["Module:Location_map/data/USA_New_York"] = 9100, ["Module:Location_map/data/USA_North_Carolina"] = 4300, ["Module:Location_map/data/USA_Ohio"] = 2600, ["Module:Location_map/data/USA_Oregon"] = 2600, ["Module:Location_map/data/USA_Pennsylvania"] = 7100, ["Module:Location_map/data/USA_Texas"] = 3800, ["Module:Location_map/data/USA_Virginia"] = 5100, ["Module:Location_map/data/USA_Washington"] = 3000, ["Module:Location_map/data/USA_West_Virginia"] = 4400, ["Module:Location_map/data/USA_Wisconsin"] = 2700, ["Module:Location_map/data/Ukraine"] = 3300, ["Module:Location_map/data/United_Kingdom_Greater_London"] = 2200, ["Module:Location_map/data/Virginia"] = 4000, ["Module:Location_map/data/Washington"] = 2200, ["Module:Location_map/data/West_Virginia"] = 4100, ["Module:Location_map/data/Wisconsin"] = 2300, ["Module:Location_map/data/doc"] = 6400, ["Module:Location_map/info"] = 6400, ["Module:Location_map/multi"] = 29000, ["Module:Location_map/styles.css"] = 742000, ["Module:London_Gazette_util"] = 33000, ["Module:Lua_banner"] = 9900, } 85197ddfd1dd0dc8edfd3b21c138215cdc658bbd Module:Transclusion count/data/M 828 991 3063 2179 2023-11-05T05:10:29Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["M"] = 2100, ["MAD"] = 2100, ["MAR"] = 2800, ["MAS"] = 2600, ["MDG"] = 2400, ["MEX"] = 6200, ["MILHIST"] = 13000, ["MINUTE"] = 2300, ["MKD"] = 2300, ["MLB_Farm_System"] = 2100, ["MLB_Year"] = 14000, ["MLB_standings"] = 3700, ["MLBplayer"] = 4000, ["MMA_record_start"] = 3600, ["MMArecordbox"] = 3700, ["MMSI_Number"] = 3100, ["MONTH"] = 13000, ["MONTHNAME"] = 834000, ["MONTHNUMBER"] = 852000, ["MS"] = 5100, ["MV"] = 8900, ["MYS"] = 3800, ["MacTutor"] = 2000, ["Main"] = 343000, ["Main_article"] = 30000, ["Main_articles"] = 2000, ["Main_other"] = 9610000, ["Main_page_image"] = 26000, ["Main_page_image/DYK"] = 9700, ["Main_page_image/ITN/styles.css"] = 2700, ["Main_page_image/TFA"] = 4900, ["Maintenance_category"] = 38000, ["Malay_name"] = 2300, ["Map_requested"] = 6600, ["Map_requested/Category_helper"] = 6500, ["Maplink"] = 29000, ["Maplink-road"] = 6100, ["Marriage"] = 74000, ["Marriage/doc"] = 73000, ["Marriage/styles.css"] = 74000, ["Math"] = 9800, ["MathGenealogy"] = 7000, ["MathWorld"] = 2400, ["Mathgenealogy"] = 2100, ["Maths_rating"] = 20000, ["Max"] = 249000, ["Maybe_free_media"] = 12000, ["Mbox"] = 3010000, ["Mdash"] = 8900, ["MeSH_name"] = 6100, ["Medal"] = 114000, ["MedalBottom"] = 17000, ["MedalBronze"] = 55000, ["MedalComp"] = 2200, ["MedalCompetition"] = 88000, ["MedalCount"] = 3200, ["MedalCountry"] = 79000, ["MedalGold"] = 54000, ["MedalOlympic"] = 4000, ["MedalOlympics"] = 6100, ["MedalSilver"] = 53000, ["MedalSport"] = 78000, ["MedalTableTop"] = 17000, ["MedalTop"] = 3900, ["MedalWorldChampionships"] = 2100, ["MedalistTable"] = 15000, ["Medals_table"] = 14000, ["Media"] = 2600, ["Medical_resources"] = 6700, ["Merge_done"] = 3600, ["Merged-from"] = 17000, ["Merged-to"] = 19000, ["Merged_to"] = 2200, ["MeshName"] = 5900, ["Metacritic_film"] = 4100, ["Metadata_Population_DE-BY"] = 2100, ["Metadata_Population_DE-RP"] = 2300, ["Mhof"] = 7400, ["Mid-Class"] = 15000, ["Mid-importance"] = 15000, ["Middot"] = 6000, ["Midsize"] = 2200, ["MilHist"] = 5200, ["Military_navigation"] = 84000, ["Min"] = 22000, ["Minor_planet"] = 5000, ["Minor_planet_link"] = 2700, ["Minor_planet_list_link"] = 4200, ["Minor_planets_navigator"] = 3200, ["MirrorH"] = 5700, ["Missing_information"] = 3600, ["Mlby"] = 14000, ["Mobile_IP"] = 8800, ["MobyGames"] = 8900, ["Moby_game"] = 7000, ["Mod"] = 7500, ["Module_other"] = 3600, ["Mojo_title"] = 7800, ["Molecular_formula_index"] = 2300, ["Monday"] = 2700, ["Mono"] = 30000, ["Mono/styles.css"] = 31000, ["MonthCategoryNav"] = 35000, ["MonthlyArchive"] = 3500, ["MonthlyLinks"] = 3600, ["Monthly_archive_list"] = 3600, ["Monthly_clean-up_category"] = 16000, ["Monthly_clean-up_category/core"] = 16000, ["Monthly_clean-up_category/monthname"] = 17000, ["Monthly_clean-up_category/monthno"] = 17000, ["Monthly_clean-up_category/name_part"] = 17000, ["Monthly_clean-up_category/outer_core"] = 16000, ["Monthly_clean-up_category/to_add"] = 2800, ["Monthly_clean_up_category"] = 7100, ["Monthyear"] = 72000, ["Monthyear-1"] = 71000, ["MoreInfo"] = 2000, ["More_citations_needed"] = 368000, ["More_citations_needed_section"] = 16000, ["More_footnotes"] = 35000, ["More_footnotes_needed"] = 53000, ["More_plot"] = 2300, ["More_references"] = 3100, ["Moresources"] = 5900, ["Motorcycle_Hall_of_Fame"] = 7400, ["Motorcycling"] = 3200, ["Motorsport_season"] = 4900, ["Motorsport_season/styles.css"] = 4900, ["Moved_discussion_from"] = 2900, ["Moved_discussion_to"] = 2600, ["Mp"] = 5000, ["Mpl"] = 2700, ["MultiReplace"] = 212000, ["Multiple_image"] = 51000, ["Multiple_image/styles.css"] = 51000, ["Multiple_issues"] = 123000, ["Multiple_issues/styles.css"] = 123000, ["Music"] = 7600, ["MusicBrainz_artist"] = 2200, ["MusicBrainz_meta"] = 5200, ["MusicBrainz_release_group"] = 2200, ["Music_ratings"] = 96000, ["Mvar"] = 7100, ["Mw_lang"] = 80000, ["My"] = 2500, ["My_sandbox"] = 3800, ["Myprefs"] = 11000, ["Module:MLB_standings"] = 3700, ["Module:MLB_standings/data"] = 3700, ["Module:Main_page_image"] = 15000, ["Module:Mapframe"] = 432000, ["Module:Math"] = 1570000, ["Module:Medals_table"] = 14000, ["Module:Message_box"] = 18100000, ["Module:Message_box/ambox.css"] = 3130000, ["Module:Message_box/cmbox.css"] = 426000, ["Module:Message_box/configuration"] = 9590000, ["Module:Message_box/fmbox.css"] = 19000, ["Module:Message_box/imbox.css"] = 928000, ["Module:Message_box/ombox.css"] = 1590000, ["Module:Message_box/tmbox.css"] = 12300000, ["Module:Military_navigation"] = 84000, ["Module:Minor_planet_list_link"] = 4200, ["Module:MultiReplace"] = 1260000, ["Module:Multiple_image"] = 51000, ["Module:Music_ratings"] = 96000, ["Module:Mw_lang"] = 80000, } 3398be67b8a99e9a751d47de4b690c5775cf1147 3064 3063 2023-11-09T17:59:53Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/M]] Scribunto text/plain return { ["M"] = 2100, ["MAD"] = 2100, ["MAR"] = 2800, ["MAS"] = 2600, ["MDG"] = 2400, ["MEX"] = 6200, ["MILHIST"] = 13000, ["MINUTE"] = 2300, ["MKD"] = 2300, ["MLB_Farm_System"] = 2100, ["MLB_Year"] = 14000, ["MLB_standings"] = 3700, ["MLBplayer"] = 4000, ["MMA_record_start"] = 3600, ["MMArecordbox"] = 3700, ["MMSI_Number"] = 3100, ["MONTH"] = 13000, ["MONTHNAME"] = 834000, ["MONTHNUMBER"] = 852000, ["MS"] = 5100, ["MV"] = 8900, ["MYS"] = 3800, ["MacTutor"] = 2000, ["Main"] = 343000, ["Main_article"] = 30000, ["Main_articles"] = 2000, ["Main_other"] = 9610000, ["Main_page_image"] = 26000, ["Main_page_image/DYK"] = 9700, ["Main_page_image/ITN/styles.css"] = 2700, ["Main_page_image/TFA"] = 4900, ["Maintenance_category"] = 38000, ["Malay_name"] = 2300, ["Map_requested"] = 6600, ["Map_requested/Category_helper"] = 6500, ["Maplink"] = 29000, ["Maplink-road"] = 6100, ["Marriage"] = 74000, ["Marriage/doc"] = 73000, ["Marriage/styles.css"] = 74000, ["Math"] = 9800, ["MathGenealogy"] = 7000, ["MathWorld"] = 2400, ["Mathgenealogy"] = 2100, ["Maths_rating"] = 20000, ["Max"] = 249000, ["Maybe_free_media"] = 12000, ["Mbox"] = 3010000, ["Mdash"] = 8900, ["MeSH_name"] = 6100, ["Medal"] = 114000, ["MedalBottom"] = 17000, ["MedalBronze"] = 55000, ["MedalComp"] = 2200, ["MedalCompetition"] = 88000, ["MedalCount"] = 3200, ["MedalCountry"] = 79000, ["MedalGold"] = 54000, ["MedalOlympic"] = 4000, ["MedalOlympics"] = 6100, ["MedalSilver"] = 53000, ["MedalSport"] = 78000, ["MedalTableTop"] = 17000, ["MedalTop"] = 3900, ["MedalWorldChampionships"] = 2100, ["MedalistTable"] = 15000, ["Medals_table"] = 14000, ["Media"] = 2600, ["Medical_resources"] = 6700, ["Merge_done"] = 3600, ["Merged-from"] = 17000, ["Merged-to"] = 19000, ["Merged_to"] = 2200, ["MeshName"] = 5900, ["Metacritic_film"] = 4100, ["Metadata_Population_DE-BY"] = 2100, ["Metadata_Population_DE-RP"] = 2300, ["Mhof"] = 7400, ["Mid-Class"] = 15000, ["Mid-importance"] = 15000, ["Middot"] = 6000, ["Midsize"] = 2200, ["MilHist"] = 5200, ["Military_navigation"] = 84000, ["Min"] = 22000, ["Minor_planet"] = 5000, ["Minor_planet_link"] = 2700, ["Minor_planet_list_link"] = 4200, ["Minor_planets_navigator"] = 3200, ["MirrorH"] = 5700, ["Missing_information"] = 3600, ["Mlby"] = 14000, ["Mobile_IP"] = 8800, ["MobyGames"] = 8900, ["Moby_game"] = 7000, ["Mod"] = 7500, ["Module_other"] = 3600, ["Mojo_title"] = 7800, ["Molecular_formula_index"] = 2300, ["Monday"] = 2700, ["Mono"] = 30000, ["Mono/styles.css"] = 31000, ["MonthCategoryNav"] = 35000, ["MonthlyArchive"] = 3500, ["MonthlyLinks"] = 3600, ["Monthly_archive_list"] = 3600, ["Monthly_clean-up_category"] = 16000, ["Monthly_clean-up_category/core"] = 16000, ["Monthly_clean-up_category/monthname"] = 17000, ["Monthly_clean-up_category/monthno"] = 17000, ["Monthly_clean-up_category/name_part"] = 17000, ["Monthly_clean-up_category/outer_core"] = 16000, ["Monthly_clean-up_category/to_add"] = 2800, ["Monthly_clean_up_category"] = 7100, ["Monthyear"] = 72000, ["Monthyear-1"] = 71000, ["MoreInfo"] = 2000, ["More_citations_needed"] = 368000, ["More_citations_needed_section"] = 16000, ["More_footnotes"] = 35000, ["More_footnotes_needed"] = 53000, ["More_plot"] = 2300, ["More_references"] = 3100, ["Moresources"] = 5900, ["Motorcycle_Hall_of_Fame"] = 7400, ["Motorcycling"] = 3200, ["Motorsport_season"] = 4900, ["Motorsport_season/styles.css"] = 4900, ["Moved_discussion_from"] = 2900, ["Moved_discussion_to"] = 2600, ["Mp"] = 5000, ["Mpl"] = 2700, ["MultiReplace"] = 212000, ["Multiple_image"] = 51000, ["Multiple_image/styles.css"] = 51000, ["Multiple_issues"] = 123000, ["Multiple_issues/styles.css"] = 123000, ["Music"] = 7600, ["MusicBrainz_artist"] = 2200, ["MusicBrainz_meta"] = 5200, ["MusicBrainz_release_group"] = 2200, ["Music_ratings"] = 96000, ["Mvar"] = 7100, ["Mw_lang"] = 80000, ["My"] = 2500, ["My_sandbox"] = 3800, ["Myprefs"] = 11000, ["Module:MLB_standings"] = 3700, ["Module:MLB_standings/data"] = 3700, ["Module:Main_page_image"] = 15000, ["Module:Mapframe"] = 432000, ["Module:Math"] = 1570000, ["Module:Medals_table"] = 14000, ["Module:Message_box"] = 18100000, ["Module:Message_box/ambox.css"] = 3130000, ["Module:Message_box/cmbox.css"] = 426000, ["Module:Message_box/configuration"] = 9590000, ["Module:Message_box/fmbox.css"] = 19000, ["Module:Message_box/imbox.css"] = 928000, ["Module:Message_box/ombox.css"] = 1590000, ["Module:Message_box/tmbox.css"] = 12300000, ["Module:Military_navigation"] = 84000, ["Module:Minor_planet_list_link"] = 4200, ["Module:MultiReplace"] = 1260000, ["Module:Multiple_image"] = 51000, ["Module:Music_ratings"] = 96000, ["Module:Mw_lang"] = 80000, } 3398be67b8a99e9a751d47de4b690c5775cf1147 Template:Infobox country 10 241 3266 1254 2023-11-05T15:16:38Z wikipedia>Primefac 0 add p/s22 per talk page, simplify param check wikitext text/x-wiki {{infobox |templatestyles = Template:Infobox country/styles.css | bodyclass = ib-country vcard | aboveclass = adr | above = {{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}} | {{#if:{{{conventional_long_name|}}} |<div class="fn org country-name">{{{conventional_long_name|}}}</div> }}{{#if:{{{native_name|}}}{{{name|}}} |<div class="ib-country-names"><!-- -->{{br separated entries |{{{native_name|}}} |{{#if:{{{name|}}} |<div class="ib-country-name-style fn org country-name">{{{name|}}}</div> }}}}</div> }}<!-- -->{{#ifeq:{{{micronation|}}}|yes |<span class="fn org">[[Micronation]]</span> }} }} | subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }} | image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}} |{{infobox country/imagetable |image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}} |caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }} |image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }} }} }} | data1 = {{#if:{{{national_motto|}}}{{{motto|}}} |'''Motto:&nbsp;'''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!-- -->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }} }} | class2 = anthem | data2 = {{#if:{{{national_anthem|}}}{{{anthem|}}} |'''Anthem:'''&nbsp;{{if empty|{{{national_anthem|}}}|{{{anthem|}}}}} }}{{#if:{{{anthems|}}} |'''Anthems:'''&nbsp;{{{anthems}}} }}{{#if:{{{royal_anthem|}}} | <div class="ib-country-anthem">'''[[Royal anthem]]:'''&nbsp;{{{royal_anthem}}}</div> }}{{#if:{{{flag_anthem|}}} | <div class="ib-country-anthem">'''[[Flag anthem]]:'''&nbsp;{{{flag_anthem}}}</div> }}{{#if:{{{national_march|}}} | <div class="ib-country-anthem">'''National march:'''&nbsp;{{{national_march}}}</div> }}{{#if:{{{territorial_anthem|}}} | <div class="ib-country-anthem">'''Territorial anthem:'''&nbsp;{{{territorial_anthem}}}</div> }}{{#if:{{{regional_anthem|}}} | <div class="ib-country-anthem">'''Regional anthem:'''&nbsp;{{{regional_anthem}}}</div> }}{{#if:{{{state_anthem|}}} | <div class="ib-country-anthem">'''State anthem:'''&nbsp;{{{state_anthem}}}</div> }}{{#if:{{{march|}}} | <div class="ib-country-anthem">'''March:'''&nbsp;{{{march}}}</div> }} | data3 = {{#if:{{{other_symbol|}}}{{{text_symbol|}}} |{{#if:{{{other_symbol_type|}}}{{{text_symbol_type|}}} | '''{{if empty|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}'''<br/>}}<!-- -->{{if empty|{{{other_symbol|}}}|{{{text_symbol|}}}}} }} | data4 = {{#if:{{{image_map|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_width|{{{image_map_size|}}}}}}|upright=1.15|alt={{{alt_map|{{{image_map_alt|}}}}}}|title={{{map_caption|{{{image_map_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption|{{{image_map_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption|{{{image_map_caption|}}}}}}</div>}} }} | data5 = {{#if:{{{image_map2|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map2|}}}|size={{{map2_width|{{{image_map2_size|}}}}}}|upright=1.15|alt={{{alt_map2|{{{image_map2_alt|}}}}}}|title={{{map_caption2|{{{image_map2_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption2|{{{image_map2_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption2|{{{image_map2_caption|}}}}}}</div>}} }} | label6 = Status | data6 = {{#if:{{{status|}}}|{{Infobox country/status text|status={{{status|}}}|status_text={{{status_text|}}}|empire={{{empire|}}}|year_end={{{year_end|}}}|year_exile_start={{{year_exile_start|}}}|year_exile_end={{{year_exile_end|}}} }} }} | label7 = Location | data7 = {{{loctext|}}} | label8 = {{#if:{{{capital_type|}}} | {{{capital_type}}} | Capital }}{{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital |capital<!-- -->|{{#switch:{{{capital}}} | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital | {{{largest_city|}}}{{{largest_settlement|}}} = capital | not capital }}<!-- -->}}|capital <!-- (#ifeq:)-->|<!------------------------------------------ capital is largest_city/_settlement: ------------------------------------------- --><div class="ib-country-largest">and {{{largest_settlement_type|largest city}}}</div> }} | data8 = {{#if:{{{capital|}}}|{{{capital}}}{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} | rowclass9 = {{#if:{{{capital|}}}|mergedrow}} | label9 = Capital-in-exile | data9 = {{#ifexist:{{{capital_exile|}}}|[[{{{capital_exile|}}}]]|{{{capital_exile|}}}}} | rowclass10 = {{#if:{{{capital|}}}|mergedrow}} | label10 = {{#if:{{{admin_center_type|}}}| {{{admin_center_type}}} | Administrative&nbsp;center }} | data10 = {{#switch:{{{admin_center|}}} |capital | = |[[{{{capital|}}}]] = |{{{capital|}}} = |#default = {{{admin_center}}}{{#if:{{{capital|}}}||{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} }} | rowclass11 = {{#if:{{{capital|}}}{{{admin_center|}}}|mergedbottomrow}} | label11 = Largest {{{largest_settlement_type|city}}} | data11 = {{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital |capital<!-- -->|{{#switch:{{{capital}}} | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital | {{{largest_city|}}}{{{largest_settlement|}}} = capital | not capital }}<!-- -->}}|capital <!-- (#ifeq:)-->|<!-- nothing already appears above --> | {{if empty| {{{largest_city|}}} | {{{largest_settlement|}}} }} }} | rowclass12 = mergedtoprow | label12 = Official&nbsp;languages | data12 = {{{official_languages|}}} | rowclass13 = mergedrow | label13 = <span class="ib-country-lang">{{#if:{{{recognized_languages|}}}|Recognized|Recognised}}&nbsp;languages</span> | data13 = {{if empty| {{{recognized_languages|}}} | {{{recognised_languages|}}} }} | rowclass14 = mergedrow | label14 = <span class="ib-country-lang">{{#if:{{{recognized_national_languages|}}}|Recognized|Recognised}} national&nbsp;languages</span> | data14 = {{if empty| {{{recognized_national_languages|}}} | {{{recognised_national_languages|}}} | {{{national_languages|}}} }} | rowclass15 = mergedrow | label15 = <span class="ib-country-lang">{{#if:{{{recognized_regional_languages|}}}|Recognized|Recognised}} regional&nbsp;languages</span> | data15 = {{if empty| {{{recognized_regional_languages|}}} | {{{recognised_regional_languages|}}} | {{{regional_languages|}}} }} | label16 = Common&nbsp;languages | data16 = {{{common_languages|}}} | rowclass17 = {{#ifeq:{{{languages2_sub|}}}|yes |{{#ifeq:{{{languages_sub|}}}|yes |mergedrow}} |{{#ifeq:{{{languages_sub|}}}|yes |mergedbottomrow}} }} | label17 ={{#ifeq:{{{languages_sub|}}}|yes |<div class="ib-country-lang">{{if empty| {{{languages_type|}}} | Other&nbsp;languages }}</div> |{{if empty| {{{languages_type|}}} | Other&nbsp;languages }} }} | data17 = {{{languages|}}} | rowclass18 = {{#ifeq:{{{languages2_sub|}}}|yes |mergedbottomrow}} | label18 = {{#ifeq:{{{languages2_sub|}}}|yes |<div class="ib-country-lang">{{if empty|{{{languages2_type|}}} | Other&nbsp;languages }}</div> |{{if empty|{{{languages2_type|}}} | Other&nbsp;languages }} }} | data18 = {{{languages2|}}} | label19 = [[Ethnic group|Ethnic&nbsp;groups]] <!-- -->{{#if:{{{ethnic_groups_year|}}} |<div class="ib-country-ethnic"> ({{{ethnic_groups_year}}}){{{ethnic_groups_ref|}}}</div>|<div class="ib-country-ethnic">{{{ethnic_groups_ref|}}}</div>}} | data19 = {{{ethnic_groups|}}} | label20 = Religion <!-- -->{{#if:{{{religion_year|}}} |<div class="ib-country-religion"> ({{{religion_year}}}){{{religion_ref|}}}</div>|<div class="ib-country-religion">{{{religion_ref|}}}</div>}} | data20 = {{{religion|}}} | label21 = [[Demonym|Demonym(s)]] | data21 = {{#if:{{{demonym|}}} |{{#ifexist:{{{demonym}}} people | [[{{{demonym}}} people|{{{demonym}}}]] | {{{demonym}}} }} }} | label22 = Type | data22 = {{{org_type|}}} | label23 = {{if empty|{{{membership_type|}}} | Membership }} | data23 = {{{membership|}}} | label24 = {{#if:{{{government_type|}}} | {{#if:{{{politics_link|}}} | [[{{{politics_link}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!-- -->| {{#ifexist:Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!-- -->| {{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}<!-- -->}}<!-- -->}}<!-- -->}} | data24 = {{{government_type|}}} | header25 = {{#if:{{{government_type|}}} || {{#if:{{{leader_title1|}}}{{{leader_name1|}}} | {{#if:{{{name|}}}{{{membership|}}} | <!--template being used for geopolitical org:-->Leaders | <!--template being used for country/territory: -->Government }} }} }} | rowclass26 = mergedrow | data26 = {{#if:{{{leader_name1|}}}|{{Infobox country/multirow|{{{leader_title1|}}} |{{{leader_name1|}}} |{{{leader_title2|}}} |{{{leader_name2|}}} |{{{leader_title3|}}} |{{{leader_name3|}}} |{{{leader_title4|}}} |{{{leader_name4|}}} |{{{leader_title5|}}} |{{{leader_name5|}}} |{{{leader_title6|}}} |{{{leader_name6|}}} |{{{leader_title7|}}} |{{{leader_name7|}}} |{{{leader_title8|}}} |{{{leader_name8|}}} |{{{leader_title9|}}} |{{{leader_name9|}}} |{{{leader_title10|}}} |{{{leader_name10|}}} |{{{leader_title11|}}} |{{{leader_name11|}}} |{{{leader_title12|}}} |{{{leader_name12|}}} |{{{leader_title13|}}} |{{{leader_name13|}}} |{{{leader_title14|}}} |{{{leader_name14|}}} |{{{leader_title15|}}} |{{{leader_name15|}}} }} }} | rowclass27 = mergedrow | label27 = {{#if:{{{title_leader|}}}| {{{title_leader}}} }} | data27 = {{#if:{{{title_leader|}}}|&nbsp;}} | rowclass28 = mergedrow | data28 = {{#if:{{{year_leader1|}}} | {{Infobox country/multirow|{{{year_leader1|}}} |{{{leader1|}}} |{{{year_leader2|}}} |{{{leader2|}}} |{{{year_leader3|}}} |{{{leader3|}}} |{{{year_leader4|}}} |{{{leader4|}}} |{{{year_leader5|}}} |{{{leader5|}}} |{{{year_leader6|}}} |{{{leader6|}}} |{{{year_leader7|}}} |{{{leader7|}}} |{{{year_leader8|}}} |{{{leader8|}}} |{{{year_leader9|}}} |{{{leader9|}}} |{{{year_leader10|}}} |{{{leader10|}}} |{{{year_leader11|}}} |{{{leader11|}}}|{{{year_leader12|}}} |{{{leader12|}}}|{{{year_leader13|}}} |{{{leader13|}}}|{{{year_leader14|}}} |{{{leader14|}}}|{{{year_leader15|}}} |{{{leader15|}}} }} }} | rowclass29 = mergedrow | label29 = {{#if:{{{title_representative|}}}| {{{title_representative}}} }} | data29 = {{#if:{{{title_representative|}}}|&nbsp;}} | rowclass30 = mergedrow | data30 = {{#if:{{{year_representative1|}}}|{{Infobox country/multirow|{{{year_representative1|}}} |{{{representative1|}}} |{{{year_representative2|}}} |{{{representative2|}}} |{{{year_representative3|}}} |{{{representative3|}}} |{{{year_representative4|}}} |{{{representative4|}}} |{{{year_representative5|}}} |{{{representative5|}}}|{{{year_representative6|}}} |{{{representative6|}}}|{{{year_representative7|}}} |{{{representative7|}}}|{{{year_representative8|}}} |{{{representative8|}}} }} }} | rowclass31 = mergedrow | label31 = {{#if:{{{title_deputy|}}}|{{{title_deputy}}} }} | data31 = {{#if:{{{title_deputy|}}}|&nbsp;}} | rowclass32 = mergedrow | data32 = {{#if:{{{year_deputy1|}}}|{{Infobox country/multirow|{{{year_deputy1|}}} |{{{deputy1|}}} |{{{year_deputy2|}}} |{{{deputy2|}}} |{{{year_deputy3|}}} |{{{deputy3|}}} |{{{year_deputy4|}}} |{{{deputy4|}}} |{{{year_deputy5|}}} |{{{deputy5|}}} |{{{year_deputy6|}}} |{{{deputy6|}}}|{{{year_deputy7|}}} |{{{deputy7|}}}|{{{year_deputy8|}}} |{{{deputy8|}}}|{{{year_deputy9|}}} |{{{deputy9|}}}|{{{year_deputy10|}}} |{{{deputy10|}}}|{{{year_deputy11|}}} |{{{deputy11|}}}|{{{year_deputy12|}}} |{{{deputy12|}}}|{{{year_deputy13|}}} |{{{deputy13|}}}|{{{year_deputy14|}}} |{{{deputy14|}}}|{{{year_deputy15|}}} |{{{deputy15|}}} }} }} | label40 = Legislature | data40 = {{{legislature|}}} | rowclass41 = mergedrow | label41 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{type_house1|}}}|{{{type_house1}}}|[[Upper house]]}}</div> | data41 = {{{upper_house|{{{house1|}}}}}} | rowclass42 = mergedbottomrow | label42 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{type_house2|}}}|{{{type_house2}}}|[[Lower house]]}}</div> | data42 = {{{lower_house|{{{house2|}}}}}} | rowclass43 = {{#if:{{{established_event1|}}} |mergedtoprow}} | header43 = {{#if:{{{established_event1|}}}{{{sovereignty_type|}}} |{{#if:{{{sovereignty_type|}}} | {{{sovereignty_type}}}<!-- -->{{#if:{{{sovereignty_note|}}} |&nbsp;<div class="ib-country-sovereignty">{{{sovereignty_note}}}</div>}} | {{#if:{{{established|}}}| | Establishment }} }} }} | label44 = Establishment | data44 = {{#if:{{{sovereignty_type|}}} | |{{{established|}}} }} | label45 = {{#if:{{{era|}}}|Historical era|History}} | data45 = {{#if:{{{era|}}} |{{#ifexist:{{{era|}}}|[[{{{era}}}]]|{{{era}}}}} | {{#if:{{{date_start|}}}{{{year_start|}}}|&nbsp;}}}} | rowclass46 = {{#if:{{{established_event1|}}} |mergedrow |mergedbottomrow}} | data46 = {{#if:{{{established_date1|}}}|{{Infobox country/multirow |{{{established_event1|}}} |{{{established_date1||}}} |{{{established_event2|}}} |{{{established_date2||}}} |{{{established_event3|}}} |{{{established_date3|}}} |{{{established_event4|}}} |{{{established_date4|}}} |{{{established_event5|}}} |{{{established_date5|}}} |{{{established_event6|}}} |{{{established_date6|}}} |{{{established_event7|}}} |{{{established_date7|}}} |{{{established_event8|}}} |{{{established_date8|}}} |{{{established_event9|}}} |{{{established_date9|}}} |{{{established_event10|}}} |{{{established_date10|}}} |{{{established_event11|}}} |{{{established_date11|}}} |{{{established_event12|}}} |{{{established_date12|}}} |{{{established_event13|}}} |{{{established_date13|}}} |{{{established_event14|}}} |{{{established_date14|}}} |{{{established_event15|}}} |{{{established_date15|}}} |{{{established_event16|}}} |{{{established_date16|}}} |{{{established_event17|}}} |{{{established_date17|}}} |{{{established_event18|}}} |{{{established_date18|}}} |{{{established_event19|}}} |{{{established_date19|}}} |{{{established_event20|}}} |{{{established_date20|}}} }} }} | rowclass47 = {{#if:{{{date_start|}}}{{{year_start|}}} |mergedrow |mergedbottomrow}} | data47 = {{#if:{{{date_start|}}}{{{year_start|}}}|{{Infobox country/multirow |{{{event_pre|}}} |{{{date_pre|}}} |{{if empty|{{{event_start|}}}|Established}} |{{{date_start|}}} {{{year_start|}}} |{{{event1|}}} |{{{date_event1|}}} |{{{event2|}}} |{{{date_event2|}}} |{{{event3|}}} |{{{date_event3|}}} |{{{event4|}}} |{{{date_event4|}}} |{{{event5|}}} |{{{date_event5|}}} |{{{event6|}}} |{{{date_event6|}}}|{{{event7|}}} |{{{date_event7|}}}|{{{event8|}}} |{{{date_event8|}}}|{{{event9|}}} |{{{date_event9|}}}|{{{event10|}}} |{{{date_event10|}}} |{{if empty|{{{event_end|}}}|Disestablished}} |{{{date_end|}}} {{{year_end|}}} |{{{event_post|}}} |{{{date_post|}}} }} }} | rowclass60 = mergedtoprow | header60 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}} | {{#if:{{{area_link|}}} | [[{{{area_link}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]] | {{#ifexist:Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]] | Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}<!-- -->}}<!-- -->}} }} | rowclass61 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label61 = <div class="ib-country-fake-li">•&nbsp;{{{area_label|Total}}}{{{FR_foot4|}}}</div> | data61 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}} |{{#if:{{{area_km2|}}}{{{area_sq_mi|}}} |{{convinfobox|{{{area_km2|}}}|km2|{{{area_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_ha|}}}{{{area_acre|}}} |{{convinfobox|{{{area_ha|}}}|ha|{{{area_acre|}}}|acre|abbr=on}} }} }}{{{area_footnote|}}}{{#if:{{{area_rank|}}} |&#32;([[List of countries and dependencies by area|{{{area_rank}}}]]) }} }} | rowclass62 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label62 = <div class="ib-country-fake-li">•&nbsp;Land</div> | data62 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}} |{{#if:{{{area_land_km2|}}}{{{area_land_sq_mi|}}} |{{convinfobox|{{{area_land_km2|}}}|km2|{{{area_land_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_land_ha|}}}{{{area_land_acre|}}} |{{convinfobox|{{{area_land_ha|}}}|ha|{{{area_land_acre|}}}|acre|abbr=on}} }} }}{{{area_land_footnote|}}} }} | rowclass63 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label63 = <div class="ib-country-fake-li">•&nbsp;Water</div> | data63 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}} |{{#if:{{{area_water_km2|}}}{{{area_water_sq_mi|}}} |{{convinfobox|{{{area_water_km2|}}}|km2|{{{area_water_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_water_ha|}}}{{{area_water_acre|}}} |{{convinfobox|{{{area_water_ha|}}}|ha|{{{area_water_acre|}}}|acre|abbr=on}} }} }}{{{area_water_footnote|}}} }} | rowclass64 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label64 = <div class="ib-country-fake-li">•&nbsp;Water&nbsp;(%)</div> | data64 = {{{percent_water|}}} | rowclass65 = {{#if:{{{FR_metropole|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label65 = <div class="ib-country-fake-li">•&nbsp;{{{area_label2|}}}</div> | data65 = {{#if:{{{area_label2|}}}| {{{area_data2|}}} }} | rowclass66 = {{#if:{{{FR_metropole|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label66 = <div class="ib-country-fake-li">•&nbsp;{{{area_label3|}}}</div> | data66 = {{#if:{{{area_label3|}}}| {{{area_data3|}}} }} | rowclass67 = {{#if:{{{FR_metropole|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label67 = {{{stat_year1|}}}{{{ref_area1|}}} | data67 = {{#if: {{{stat_area1|}}} | {{convinfobox|{{{stat_area1|}}}|km2||sqmi}} }} | rowclass68 = {{#if:{{{FR_metropole|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label68 = {{{stat_year2|}}}{{{ref_area2|}}} | data68 = {{#if: {{{stat_area2|}}} | {{convinfobox|{{{stat_area2|}}}|km2||sqmi}} }} | rowclass69 = {{#if:{{{FR_metropole|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label69 = {{{stat_year3|}}}{{{ref_area3|}}} | data69 = {{#if: {{{stat_area3|}}} | {{convinfobox|{{{stat_area3|}}}|km2||sqmi}} }} | rowclass70 = {{#if:{{{FR_metropole|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label70 = {{{stat_year4|}}}{{{ref_area4|}}} | data70 = {{#if: {{{stat_area4|}}} | {{convinfobox|{{{stat_area4|}}}|km2||sqmi}} }} | rowclass71 = {{#if:{{{FR_metropole|}}}|mergedrow|mergedbottomrow}} | label71 = {{{stat_year5|}}}{{{ref_area5|}}} | data71 = {{#if: {{{stat_area5|}}} | {{convinfobox|{{{stat_area5|}}}|km2||sqmi}} }} | rowclass72 = mergedrow | label72 = <div class="ib-country-fake-li">•&nbsp;{{{FR_metropole}}}</div> | data72 = {{#if:{{{FR_metropole|}}}| <nowiki /> }} | rowclass73 = mergedrow | label73 = <div class="ib-country-fake-li2">•&nbsp;[[Institut Géographique National|IGN]]{{{FR_foot2|}}}</div> | data73 = {{#if:{{{FR_metropole|}}} |{{#if:{{{FR_IGN_area_km2|}}}{{{FR_IGN_area_sq_mi|}}} |{{convinfobox|{{{FR_IGN_area_km2|}}}|km2|{{{FR_IGN_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_IGN_area_rank|}}}|&#32;([[List of countries and dependencies by area|{{{FR_IGN_area_rank|}}}]])}} }} }} | rowclass89 = mergedbottomrow | label89 = <div class="ib-country-fake-li2">•&nbsp;[[Cadastre]]{{{FR_foot3|}}}</div> | data89 = {{#if:{{{FR_metropole|}}} |{{#if:{{{FR_cadastre_area_km2|}}}{{{FR_cadastre_area_sq_mi|}}} | {{convinfobox|{{{FR_cadastre_area_km2|}}}|km2|{{{FR_cadastre_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_cadastre_area_rank|}}}|&#32;([[List of countries and dependencies by area|{{{FR_cadastre_area_rank|}}}]])}} }} }} | rowclass90 = mergedtoprow | header90 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}} |{{#if:{{{population_link|}}} | {{#ifeq:{{{population_link}}}|no|Population|[[{{{population_link}}}|Population]]}}<!-- -->| {{#ifexist:Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Population]]<!-- -->| Population<!-- -->}}<!-- -->}} }} | rowclass91 = mergedrow | label91 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{population_estimate_year|}}} |{{{population_estimate_year}}} estimate|Estimate}}</div> | data91 = {{#if:{{{population_estimate|}}} |{{{population_estimate}}}<!-- -->{{#if:{{{population_estimate_rank|}}} |&#32;([[List of countries and dependencies by population|{{{population_estimate_rank}}}]])}} }} | rowclass92 = mergedrow | label92= <div class="ib-country-fake-li">•&nbsp;{{{population_label2|}}}</div> | data92= {{#if:{{{population_label2|}}}|{{{population_data2|}}}}} | rowclass93= mergedrow | label93= <div class="ib-country-fake-li">•&nbsp;{{{population_label3|}}}</div> | data93= {{#if:{{{population_label3|}}}|{{{population_data3|}}}}} | rowclass94= mergedrow | data94= {{#if:{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}|{{infobox country/multirow|{{{stat_year1|}}}{{{ref_pop1|}}} |{{{stat_pop1|}}}|{{{stat_year2|}}}{{{ref_pop2|}}} |{{{stat_pop2|}}}|{{{stat_year3|}}}{{{ref_pop3|}}} |{{{stat_pop3|}}}|{{{stat_year4|}}}{{{ref_pop4|}}} |{{{stat_pop4|}}}|{{{stat_year5|}}}{{{ref_pop5|}}} |{{{stat_pop5|}}} }} }} | rowclass95= mergedrow | label95= <div class="ib-country-fake-li">•&nbsp;{{#if:{{{population_census_year|}}} |{{{population_census_year}}}&nbsp;census|Census}}</div> | data95= {{#if:{{{population_census|}}} |{{{population_census}}}<!-- -->{{#if:{{{population_census_rank|}}} |&#32;([[List of countries and dependencies by population|{{{population_census_rank}}}]])}} }} | rowclass96= mergedrow | label96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|{{nobold|1=&nbsp;({{{FR_total_population_estimate_year}}})}}}}}} | data96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|<nowiki />}}}} | rowclass97 = mergedrow | label97= <div class="ib-country-fake-li">•&nbsp;Total{{{FR_foot|}}}</div> | data97= {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate|}}} |{{{FR_total_population_estimate}}}{{#if:{{{FR_total_population_estimate_rank|}}}|&#32;([[List of countries by population in 2005|{{{FR_total_population_estimate_rank}}}]])}} }} }} | rowclass98 = mergedrow | label98= <div class="ib-country-fake-li">•&nbsp;{{{FR_metropole}}}</div> | data98= {{#if:{{{FR_metropole_population|}}}|{{{FR_metropole_population}}}{{#if:{{{FR_metropole_population_estimate_rank|}}} |&#32;([[List of countries by population in 2005|{{{FR_metropole_population_estimate_rank}}}]])}} }} | rowclass99 = mergedbottomrow | label99= <div class="ib-country-fake-li">•&nbsp;Density{{{FR_foot5|}}}</div> | data99= {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}} | {{convinfobox|{{{population_density_km2|}}}|/km2|{{{population_density_sq_mi|}}}|/sqmi|1|abbr=on}}{{{pop_den_footnote|}}}<!-- -->{{#if:{{{population_density_rank|}}} |&#32;([[List of countries and dependencies by population density|{{{population_density_rank}}}]])}} }} | rowclass100 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}|mergedbottomrow|mergedtoprow}} | label100 = Membership | data100= {{{nummembers|}}} | rowclass101= mergedtoprow | label101= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&nbsp;{{nobold|([[Purchasing power parity|PPP]])}} | data101= {{#if:{{{GDP_PPP|}}}{{{GDP_PPP_per_capita|}}} |{{#if:{{{GDP_PPP_year|}}} |{{{GDP_PPP_year}}}&nbsp;}}estimate }} | rowclass102= mergedrow | label102= <div class="ib-country-fake-li">•&nbsp;Total</div> | data102= {{#if:{{{GDP_PPP|}}} |{{{GDP_PPP}}}<!-- -->{{#if:{{{GDP_PPP_rank|}}} |&#32;([[List of countries by GDP (PPP)|{{{GDP_PPP_rank}}}]])}} }} | rowclass103= mergedbottomrow | label103= <div class="ib-country-fake-li">•&nbsp;Per capita</div> | data103= {{#if:{{{GDP_PPP_per_capita|}}} |{{{GDP_PPP_per_capita}}}<!-- -->{{#if:{{{GDP_PPP_per_capita_rank|}}} |&#32;([[List of countries by GDP (PPP) per capita|{{{GDP_PPP_per_capita_rank}}}]])}} }} | rowclass104= mergedtoprow | label104= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&nbsp;{{nobold|(nominal)}} | data104= {{#if:{{{GDP_nominal|}}}{{{GDP_nominal_per_capita|}}} |{{#if:{{{GDP_nominal_year|}}} |{{{GDP_nominal_year}}}&nbsp;}}estimate }} | rowclass105= mergedrow | label105= <div class="ib-country-fake-li">•&nbsp;Total</div> | data105= {{#if:{{{GDP_nominal|}}} |{{{GDP_nominal}}}<!-- -->{{#if:{{{GDP_nominal_rank|}}} |&#32;([[List of countries by GDP (nominal)|{{{GDP_nominal_rank}}}]])}} }} | rowclass106= mergedbottomrow | label106= <div class="ib-country-fake-li">•&nbsp;Per capita</div> | data106= {{#if:{{{GDP_nominal_per_capita|}}} | {{{GDP_nominal_per_capita}}}<!-- -->{{#if:{{{GDP_nominal_per_capita_rank|}}} |&#32;([[List of countries by GDP (nominal) per capita|{{{GDP_nominal_per_capita_rank}}}]])}} }} | label107= [[Gini_coefficient|Gini]]{{#if:{{{Gini_year|}}} |&nbsp;{{nobold|1=({{{Gini_year}}})}}}} | data107= {{#if:{{{Gini|}}} | {{#switch:{{{Gini_change|}}} |increase = {{increaseNegative}}&nbsp;<!-- -->|decrease = {{decreasePositive}}&nbsp;<!-- -->|steady = {{steady}}&nbsp;<!-- -->}}{{{Gini}}}{{{Gini_ref|}}}<br/><!-- ---------Evaluate and add Gini category:---------- -->{{nowrap|1=<!-- -->{{#iferror:<!-- -->{{#ifexpr:{{{Gini}}}>100 <!-- -->| {{error|Error: Gini value above 100}}<!--Handled by outer #iferror, not visible to users--><!-- -->| {{#ifexpr:{{{Gini}}}>=60 |{{color|red|very high}}<!-- -->| {{#ifexpr:{{{Gini}}}>=46 <!-- -->| {{color|darkred|high}}<!-- -->| {{#ifexpr:{{{Gini}}}>=30 <!-- -->| {{color|orange|medium}}<!-- -->| {{#ifexpr:{{{Gini}}}>=0 <!-- -->| {{color|forestgreen|low}}<!-- -->| {{error|Error:Gini value below 0}}<!--Handled by outer #iferror, not visible to users--><!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->| {{error|Error: Invalid Gini value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!-- -->}}<!-- -->}}<!-- -----------Add Gini_rank (if supplied):---------- -->{{#if:{{{Gini_rank|}}} |&nbsp;·&nbsp;[[List of countries by income equality|{{{Gini_rank}}}]]<!-- -->}}<!-- -->}} | label108= [[Human Development Index|HDI]]{{#if:{{{HDI_year|}}} |&nbsp;{{nobold|1=({{{HDI_year}}})}}}} | data108= {{#if:{{{HDI|}}} | {{#switch:{{{HDI_change|}}} |increase = {{increase}}&nbsp;<!-- -->|decrease = {{decrease}}&nbsp;<!-- -->|steady = {{steady}}&nbsp;<!-- -->}}{{{HDI}}}{{{HDI_ref|}}}<br/><!-- ---------Evaluate and add HDI category:--------- -->{{nowrap|1=<!-- -->{{#iferror:<!-- -->{{#ifexpr:{{{HDI}}}>1 <!-- -->| {{error|Error: HDI value greater than 1}}<!--Handled by outer #iferror, not visible to users--><!-- -->| {{#ifexpr:{{{HDI}}}>0.799 <!-- -->| {{color|darkgreen|very high}}<!-- -->| {{#ifexpr:{{{HDI}}}>0.699 <!-- -->| {{color|forestgreen|high}}<!-- -->| {{#ifexpr:{{{HDI}}}>0.549 <!-- -->| {{color|orange|medium}}<!-- -->| {{#ifexpr:{{{HDI}}}>=0.000<!-- -->| {{color|red|low}}<!-- -->| {{error|Error: HDI value less than 0}}<!--Handled by outer #iferror, not visible to users--><!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->| {{error|Error: Invalid HDI value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!-- -->}}<!-- -->}}<!-- ----------Add HDI_rank (if supplied):----------- -->{{#if:{{{HDI_rank|}}} |&nbsp;·&nbsp;[[List of countries by Human Development Index|{{{HDI_rank}}}]]<!-- -->}}<!-- -->}} | label109= {{#ifeq:{{{micronation|}}}|yes|Purported currency|Currency}} | data109= {{#if:{{{currency|}}} | {{{currency}}} {{#if:{{{currency_code|}}} |([[ISO 4217|{{{currency_code}}}]])}} }} | rowclass119= {{#if:{{{utc_offset_DST|}}}{{{DST_note|}}} |mergedtoprow}} | label119= Time zone | data119= {{#if:{{{utc_offset|}}} |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset}}}}} {{#if:{{{time_zone|}}}|({{{time_zone}}})}} |{{{time_zone|}}} }} | rowclass120= {{#if:{{{DST_note|}}} |mergedrow |mergedbottomrow}} | label120= <div class="ib-country-fake-li">•&nbsp;Summer&nbsp;([[Daylight saving time|DST]])</div> | data120= {{#if:{{{utc_offset_DST|}}} |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset_DST}}}}} {{#if:{{{time_zone_DST|}}}|({{{time_zone_DST}}})|{{#if:{{{DST|}}}|({{{DST}}})}}}} |{{#if:{{{time_zone_DST|}}}|{{{time_zone_DST}}}|{{{DST|}}}}} }} | rowclass121= mergedbottomrow | label121= <nowiki /> | data121= {{{DST_note|}}} | label122 = [[Antipodes]] | data122= {{{antipodes|}}} | label123 = Date format | data123= {{{date_format|}}} | label125= [[Left- and right-hand traffic|Driving side]] | data125= {{#if:{{{drives_on|}}} | {{lcfirst:{{{drives_on}}}}} }} | label126= {{#if:{{{calling_code|}}} |{{#ifexist:Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Calling code]] | Calling code }} }} | data126= {{{calling_code|}}} | label127= [[ISO 3166|ISO 3166 code]] | data127= {{#switch:{{{iso3166code|}}} |omit = <!--(do nothing)--> | = <!--if iso3166code is not supplied: -->{{#if:{{{common_name|}}} | {{#if:{{ISO 3166 code|{{{common_name}}}|nocat=true}} | [[ISO 3166-2:{{ISO 3166 code|{{{common_name}}}}}|{{ISO 3166 code|{{{common_name}}}}}]] }} }} |#default = [[ISO 3166-2:{{uc:{{{iso3166code}}}}}|{{uc:{{{iso3166code}}}}}]] }} | label128= [[Country code top-level domain|Internet TLD]] | data128= {{{cctld|}}} | data129 = {{#if:{{{official_website|}}} |<div class="ib-country-website">'''Website'''<br/>{{{official_website}}}</div> }} | data130= {{#if:{{{image_map3|{{{location_map|}}}}}} | {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map3|{{{location_map|}}}}}}|size={{{map3_width|}}}|upright=1.15|alt={{{alt_map3|}}}|title=Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption3|}}}|<div class="ib-country-map-caption3">{{{map_caption3|}}}</div>}} }} | data134 = {{#if:{{{p1|}}}{{{s1|}}} |{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_p22={{{flag_p22|}}}|image_p22={{{image_p22|}}}|p22={{{p22|}}}|border_p22={{{border_p22|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}|flag_s22={{{flag_s22|}}}|image_s22={{{image_s22|}}}|s22={{{s22|}}}|border_s22={{{border_s22|}}}}} }} | label135 = Today part of | data135 = {{{today|}}} | data136 = {{#if:{{{footnote_a|}}}{{{footnote_b|}}}{{{footnote_c|}}}{{{footnote_d|}}}{{{footnote_e|}}}{{{footnote_f|}}}{{{footnote_g|}}}{{{footnote_h|}}} |<div class="ib-country-fn"><ol class="ib-country-fn-alpha"> {{#if:{{{footnote_a|}}}|<li value=1>{{{footnote_a|}}}</li> }}{{#if:{{{footnote_b|}}}|<li value=2>{{{footnote_b|}}}</li> }}{{#if:{{{footnote_c|}}}|<li value=3>{{{footnote_c|}}}</li> }}{{#if:{{{footnote_d|}}}|<li value=4>{{{footnote_d|}}}</li> }}{{#if:{{{footnote_e|}}}|<li value=5>{{{footnote_e|}}}</li> }}{{#if:{{{footnote_f|}}}|<li value=6>{{{footnote_f|}}}</li> }}{{#if:{{{footnote_g|}}}|<li value=7>{{{footnote_g|}}}</li> }}{{#if:{{{footnote_h|}}}|<li value=8>{{{footnote_h|}}}</li>}} </ol></div>}} | data137 = {{#if:{{{footnote1|}}}{{{footnote2|}}}{{{footnote3|}}}{{{footnote4|}}}{{{footnote5|}}}{{{footnote6|}}}{{{footnote7|}}}{{{footnote8|}}} |<div class="ib-country-fn"><ol class="ib-country-fn-num"> {{#if:{{{footnote1|}}}|<li value=1>{{{footnote1|}}}</li> }}{{#if:{{{footnote2|}}}|<li value=2>{{{footnote2|}}}</li> }}{{#if:{{{footnote3|}}}|<li value=3>{{{footnote3|}}}</li> }}{{#if:{{{footnote4|}}}|<li value=4>{{{footnote4|}}}</li> }}{{#if:{{{footnote5|}}}|<li value=5>{{{footnote5|}}}</li> }}{{#if:{{{footnote6|}}}|<li value=6>{{{footnote6|}}}</li> }}{{#if:{{{footnote7|}}}|<li value=7>{{{footnote7|}}}</li> }}{{#if:{{{footnote8|}}}|<li value=8>{{{footnote8|}}}</li>}} </ol></div>}} | data138 = {{#if:{{{footnotes|}}}|<div class="ib-country-fn">{{{footnotes}}}{{#if:{{{footnotes2|}}}|<br>{{{footnotes2}}}}}</div>}} | belowclass = mergedtoprow noprint | below = {{#if:{{{navbar|}}}| {{navbar|{{{navbar|}}}}} }} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox country with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox country]] with unknown parameter "_VALUE_"|ignoreblank=y| admin_center_type | admin_center | alt_coat | alt_flag | alt_flag2 | alt_map | alt_map2 | alt_map3 | alt_symbol | anthem | anthems | antipodes | area_acre | area_data2 | area_data3 | area_footnote | area_ha | area_km2 | area_label | area_label2 | area_label3 | area_land_acre | area_land_footnote | area_land_ha | area_land_km2 | area_land_sq_mi | area_link | area_rank | area_sq_mi | area_water_acre | area_water_footnote | area_water_ha | area_water_km2 | area_water_sq_mi | regexp1 = border_[ps][%d]+ | calling_code | capital_exile | capital_type | capital | cctld | coa_size | coat_alt | common_languages | common_name | conventional_long_name | coordinates | currency_code | currency | date_end | regexp2 = date_event[%d]+ | date_format | date_post | date_pre | date_start | demonym | regexp3 = deputy[%d]+ | drives_on | DST_note | DST | empire | englishmotto | era | regexp4 = established_date[%d]+ | regexp5 = established_event[%d]+ | established | ethnic_groups_ref | ethnic_groups_year | ethnic_groups | event_end | event_post | event_pre | event_start | regexp6 = event[%d]+ | flag| flag_alt | flag_alt2 | flag_border | flag_caption | flag_caption | regexp7 = flag_[ps][%d]+ | flag_size | flag_type | flag_type_article | flag_width | flag2_border | regexp8 = footnote_[a-h] | regexp9 = footnote[%d]+ | footnotes | footnotes2 | FR_cadastre_area_km2 | FR_cadastre_area_rank | FR_cadastre_area_sq_mi | FR_foot | FR_foot2 | FR_foot3 | FR_foot4 | FR_foot5 | FR_IGN_area_km2 | FR_IGN_area_rank | FR_IGN_area_sq_mi | FR_metropole_population_estimate_rank | FR_metropole_population | FR_metropole | FR_total_population_estimate_rank | FR_total_population_estimate_year | FR_total_population_estimate | GDP_nominal_per_capita_rank | GDP_nominal_per_capita | GDP_nominal_rank | GDP_nominal_year | GDP_nominal | GDP_PPP_per_capita_rank | GDP_PPP_per_capita | GDP_PPP_rank | GDP_PPP_year | GDP_PPP | Gini_change | Gini_rank | Gini_ref | Gini_year | Gini | government_type | HDI_change | HDI_rank | HDI_ref | HDI_year | HDI | house1 | house2 | image_coat | image_flag | image_flag2 | image_map_alt | image_map_caption | image_map_size | image_map | image_map2_alt | image_map2_caption | image_map2_size | image_map2 | image_map3 | regexp10 = image_[ps][%d]+ | image_symbol | iso3166code | languages_sub | languages_type | languages | languages2_sub | languages2_type | languages2 | largest_city | largest_settlement_type | largest_settlement | regexp11 = leader_name[%d]+ | regexp12 = leader_title[%d]+ | regexp13 = leader[%d]+ | legislature | life_span | linking_name | location_map | loctext | lower_house | map_caption | map_caption2 | map_caption3 | map_width | map2_width | map3_width | membership_type | membership | micronation | motto | name | national_anthem | national_languages | national_motto | native_name | navbar | nummembers | official_languages | official_website | org_type | other_symbol_type | other_symbol | regexp14 = [ps][%d]+ | patron_saint | patron_saints | percent_water | politics_link | pop_den_footnote | population_census_rank | population_census_year | population_census | population_data2 | population_data3 | population_density_km2 | population_density_rank | population_density_sq_mi | population_estimate_rank | population_estimate_year | population_estimate | population_label2 | population_label3 | population_link | recognised_languages | recognised_national_languages | recognised_regional_languages | recognized_languages | recognized_national_languages | regexp15 = ref_area[%d]+ | regexp16 = ref_pop[%d]+ | regional_languages | recognized_regional_languages | religion_ref | religion_year | religion | regexp17 = representative[%d]+ | royal_anthem | flag_anthem | march | national_march | regional_anthem | territorial_anthem | state_anthem | sovereignty_note | sovereignty_type | regexp18 = stat_area[%d]+ | regexp19 = stat_pop[%d]+ | regexp20 = stat_year[%d]+ | status_text | status | symbol| symbol_type_article | symbol_type | symbol_width | text_symbol_type | text_symbol | time_zone_DST | time_zone | title_deputy | title_leader | title_representative | today | type_house1 | type_house2 | upper_house | utc_offset_DST | utc_offset | regexp21 = year_deputy[%d]+ | year_end | year_exile_end | year_exile_start | regexp22 = year_leader[%d]+ | regexp23 = year_representative[%d]+ | year_start}}{{main other| {{#if:{{both|{{{image_coat|}}}|{{{image_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|A]] }}{{#if:{{both|{{{alt_coat|}}}|{{{alt_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|B]] }}{{#if:{{both|{{{motto|}}}|{{{national_motto|}}}}}|[[Category:Pages using infobox country with syntax problems|C]] }}{{#if:{{both|{{{national_anthem|}}}|{{{anthem|}}}}}|[[Category:Pages using infobox country with syntax problems|D]] }}{{#if:{{both|{{{other_symbol|}}}|{{{text_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|E]] }}{{#if:{{both|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}|[[Category:Pages using infobox country with syntax problems|F]] }}{{#if:{{both|{{{largest_city|}}}|{{{largest_settlement|}}}}}|[[Category:Pages using infobox country with syntax problems|G]] }}{{#if:{{both|{{{recognized_languages|}}}|{{{recognised_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|H]] }}{{#if:{{both|{{{recognized_national_languages|}}}|{{{recognised_national_languages|}}}}}{{both|{{{recognized_regional_languages|}}}|{{{recognised_regional_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|I]] }}{{#if:{{{official_languages|}}}||{{#if:{{{recognized_languages|}}}{{{recognised_languages|}}}{{{recognized_national_languages|}}}{{{recognised_national_languages|}}}{{{recognized_regional_languages|}}}{{{recognised_regional_languages|}}}|[[Category:Pages using infobox country with syntax problems|J]]}} }}{{#if:{{both|{{{area_km2|}}}|{{{area_ha|}}}}}{{both|{{{area_land_km2|}}}|{{{area_land_ha|}}}}}{{both|{{{area_water_km2|}}}|{{{area_water_ha|}}}}}|[[Category:Pages using infobox country with syntax problems|K]] }}{{#if:{{both|{{{DST|}}}|{{{time_zone_DST|}}}}}|[[Category:Pages using infobox country with syntax problems|L]] }}{{#if:{{{time_zone|}}}{{{utc_offset|}}}||{{#if:{{{time_zone_DST|}}}{{{utc_offset_DST|}}}|[[Category:Pages using infobox country with syntax problems|M]]}} }}{{#if:{{both|{{{sovereignty_type|}}}|{{{established|}}} }}|[[Category:Pages using infobox country with syntax problems|O]] }}{{#if:{{{languages|}}}|{{#if:{{{languages_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}} }}{{#if:{{{languages2|}}}|{{#if:{{{languages2_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}} }}{{#if:{{{flag_type|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|T{{PAGENAME}}]] }}{{#if:{{{flag_caption|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|C{{PAGENAME}}]] }}{{#if:{{{symbol_type|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|T{{PAGENAME}}]] }}{{#if:{{{symbol_caption|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|C{{PAGENAME}}]] }}}}<!-- Tracking categories from merge with {{infobox former country}}. After all cats are empty/have been checked, these can be removed. -->{{#if:{{{status_text|}}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Colony|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Exile|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}}}}} }}<!--End of former country tracking cats--><noinclude> {{documentation}} </noinclude> 7b1a18da8309a84e21d417a3332665cdc72535c5 Module:Citation/CS1/Configuration 828 880 3069 1951 2023-11-06T02:06:31Z wikipedia>Trappist the monk 0 bump s2cid; Scribunto text/plain local lang_obj = mw.language.getContentLanguage(); -- make a language object for the local language; used here for languages and dates --[[--------------------------< S E T T I N G S >-------------------------------------------------------------- boolean settings used to control various things. these setting located here to make them easy to find ]] -- these settings local to this module only local local_digits_from_mediawiki = false; -- for i18n; when true, module fills date_names['local_digits'] from MediaWiki; manual fill required else; always false at en.wiki local local_date_names_from_mediawiki = false; -- for i18n; when true, module fills date_names['local']['long'] and date_names['local']['short'] from MediaWiki; -- manual translation required else; ; always false at en.wiki -- these settings exported to other modules local use_identifier_redirects = true; -- when true use redirect name for identifier label links; always true at en.wiki local local_lang_cat_enable = false; -- when true categorizes pages where |language=<local wiki's language>; always false at en.wiki local date_name_auto_xlate_enable = false; -- when true translates English month-names to the local-wiki's language month names; always false at en.wiki local date_digit_auto_xlate_enable = false; -- when true translates Western date digit to the local-wiki's language digits (date_names['local_digits']); always false at en.wiki --[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------ List of namespaces identifiers for namespaces that will not be included in citation error categories. Same as setting notracking = true by default. For wikis that have a current version of Module:cs1 documentation support, this #invoke will return an unordered list of namespace names and their associated identifiers: {{#invoke:cs1 documentation support|uncategorized_namespace_lister|all=<anything>}} ]] uncategorized_namespaces_t = {[2]=true}; -- init with user namespace id for k, _ in pairs (mw.site.talkNamespaces) do -- add all talk namespace ids uncategorized_namespaces_t[k] = true; end local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases', '/[^/]*[Ll]og', '/[Aa]rchive'}; -- list of Lua patterns found in page names of pages we should not categorize --[[--------------------------< M E S S A G E S >-------------------------------------------------------------- Translation table The following contains fixed text that may be output as part of a citation. This is separated from the main body to aid in future translations of this module. ]] local messages = { ['agency'] = '$1 $2', -- $1 is sepc, $2 is agency ['archived-dead'] = 'Archived from $1 on $2', ['archived-live'] = '$1 from the original on $2', ['archived-unfit'] = 'Archived from the original on ', ['archived'] = 'Archived', ['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword ['cartography'] = 'Cartography by $1', ['editor'] = 'ed.', ['editors'] = 'eds.', ['edition'] = '($1&nbsp;ed.)', ['episode'] = 'Episode $1', ['et al'] = 'et&nbsp;al.', ['in'] = 'In', -- edited works ['inactive'] = 'inactive', ['inset'] = '$1 inset', ['interview'] = 'Interviewed by $1', ['mismatch'] = '<code class="cs1-code">&#124;$1=</code> / <code class="cs1-code">&#124;$2=</code> mismatch', -- $1 is year param name; $2 is date param name ['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]:&nbsp;$1', ['notitle'] = 'No title', -- for |title=(()) and (in the future) |title=none ['original'] = 'the original', ['origdate'] = ' [$1]', ['published'] = ' (published $1)', ['retrieved'] = 'Retrieved $1', ['season'] = 'Season $1', ['section'] = '§&nbsp;$1', ['sections'] = '§§&nbsp;$1', ['series'] = '$1 $2', -- $1 is sepc, $2 is series ['seriesnum'] = 'Series $1', ['translated'] = 'Translated by $1', ['type'] = ' ($1)', -- for titletype ['written'] = 'Written at $1', ['vol'] = '$1 Vol.&nbsp;$2', -- $1 is sepc; bold journal style volume is in presentation{} ['vol-no'] = '$1 Vol.&nbsp;$2, no.&nbsp;$3', -- sepc, volume, issue (alternatively insert $1 after $2, but then we'd also have to change capitalization) ['issue'] = '$1 No.&nbsp;$2', -- $1 is sepc ['art'] = '$1 Art.&nbsp;$2', -- $1 is sepc; for {{cite conference}} only ['vol-art'] = '$1 Vol.&nbsp;$2, art.&nbsp;$3', -- sepc, volume, article-number; for {{cite conference}} only ['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{} ['j-issue'] = ' ($1)', ['j-article-num'] = ' $1', -- TODO: any punctuation here? static text? ['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc ['p-prefix'] = "$1 p.&nbsp;$2", -- $1 is sepc ['pp-prefix'] = "$1 pp.&nbsp;$2", -- $1 is sepc ['j-page(s)'] = ': $1', -- same for page and pages ['sheet'] = '$1 Sheet&nbsp;$2', -- $1 is sepc ['sheets'] = '$1 Sheets&nbsp;$2', -- $1 is sepc ['j-sheet'] = ': Sheet&nbsp;$1', ['j-sheets'] = ': Sheets&nbsp;$1', ['language'] = '(in $1)', ['via'] = " &ndash; via $1", ['event'] = 'Event occurs at', ['minutes'] = 'minutes in', -- Determines the location of the help page ['help page link'] = 'Help:CS1 errors', ['help page label'] = 'help', -- categories ['cat wikilink'] = '[[Category:$1]]', -- $1 is the category name [':cat wikilink'] = '[[:Category:$1|link]]', -- category name as maintenance message wikilink; $1 is the category name -- Internal errors (should only occur if configuration is bad) ['undefined_error'] = 'Called with an undefined error condition', ['unknown_ID_key'] = 'Unrecognized ID key: ', -- an ID key in id_handlers not found in ~/Identifiers func_map{} ['unknown_ID_access'] = 'Unrecognized ID access keyword: ', -- an ID access keyword in id_handlers not found in keywords_lists['id-access']{} ['unknown_argument_map'] = 'Argument map not defined for this variable', ['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty', ['warning_msg_e'] = '<span style="color:#d33">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">&#123;{$1}}</code> templates have errors</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link ['warning_msg_m'] = '<span style="color:#3a3">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">&#123;{$1}}</code> templates have maintenance messages</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link } --[[--------------------------< C I T A T I O N _ C L A S S _ M A P >------------------------------------------ this table maps the value assigned to |CitationClass= in the cs1|2 templates to the canonical template name when the value assigned to |CitationClass= is different from the canonical template name. |CitationClass= values are used as class attributes in the <cite> tag that encloses the citation so these names may not contain spaces while the canonical template name may. These names are used in warning_msg_e and warning_msg_m to create links to the template's documentation when an article is displayed in preview mode. Most cs1|2 template |CitationClass= values at en.wiki match their canonical template names so are not listed here. ]] local citation_class_map_t = { -- TODO: if kept, these and all other config.CitationClass 'names' require some sort of i18n ['arxiv'] = 'arXiv', ['audio-visual'] = 'AV media', ['AV-media-notes'] = 'AV media notes', ['biorxiv'] = 'bioRxiv', ['citeseerx'] = 'CiteSeerX', ['encyclopaedia'] = 'encyclopedia', ['mailinglist'] = 'mailing list', ['medrxiv'] = 'medRxiv', ['pressrelease'] = 'press release', ['ssrn'] = 'SSRN', ['techreport'] = 'tech report', } --[=[-------------------------< E T _ A L _ P A T T E R N S >-------------------------------------------------- This table provides Lua patterns for the phrase "et al" and variants in name text (author, editor, etc.). The main module uses these to identify and emit the 'etal' message. ]=] local et_al_patterns = { "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.;,\"']*$", -- variations on the 'et al' theme "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][AaIi][Ee]?[%.;,\"']*$", -- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match) "[;,]? *%f[%a]and [Oo]thers", -- an alternative to et al. "%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form "%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax) "[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form } --[[--------------------------< P R E S E N T A T I O N >------------------------ Fixed presentation markup. Originally part of citation_config.messages it has been moved into its own, more semantically correct place. ]] local presentation = { -- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display ['hidden-error'] = '<span class="cs1-hidden-error citation-comment">$1</span>', ['visible-error'] = '<span class="cs1-visible-error citation-comment">$1</span>', ['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>', ['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal CSS ['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like ['cite'] = '<cite class="$1">$2</cite>'; -- for use when citation does not have a namelist and |ref= not set so no id="..." attribute ['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when when |ref= is set or when citation has a namelist ['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc. ['interwiki'] = ' <span class="cs1-format">[in $1]</span>', -- for interwiki-language-linked author, editor, etc ['interproj'] = ' <span class="cs1-format">[at $1]</span>', -- for interwiki-project-linked author, editor, etc (:d: and :s: supported; :w: ignored) -- various access levels, for |access=, |doi-access=, |arxiv=, ... -- narrow no-break space &#8239; may work better than nowrap CSS. Or not? Browser support? ['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon ['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css ['registration'] = {class='cs1-lock-registration', title='Free registration required'}, ['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'}, ['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'}, ['interwiki-icon'] = '<span class="$1" title="$2">$3</span>', ['class-wikisource'] = 'cs1-ws-icon', ['italic-title'] = "''$1''", ['kern-left'] = '<span class="cs1-kern-left"></span>$1', -- spacing to use when title contains leading single or double quote mark ['kern-right'] = '$1<span class="cs1-kern-right"></span>', -- spacing to use when title contains trailing single or double quote mark ['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span> ['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space) ['ocins'] = '<span title="$1" class="Z3988"></span>', ['parameter'] = '<code class="cs1-code">&#124;$1=</code>', ['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character ['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string) ['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content ['quoted-title'] = '"$1"', ['sep_cs1'] = '.', -- CS1 element separator ['sep_cs2'] = ',', -- CS2 separator ['sep_nl'] = ';', -- CS1|2 style name-list separator between names is a semicolon ['sep_nl_and'] = ' and ', -- used as last nl sep when |name-list-style=and and list has 2 items ['sep_nl_end'] = '; and ', -- used as last nl sep when |name-list-style=and and list has 3+ names ['sep_name'] = ', ', -- CS1|2 style last/first separator is <comma><space> ['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma ['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space ['sep_list'] = ', ', -- used for |language= when list has 3+ items except for last sep which uses sep_list_end ['sep_list_pair'] = ' and ', -- used for |language= when list has 2 items ['sep_list_end'] = ', and ', -- used as last list sep for |language= when list has 3+ items ['trans-italic-title'] = "&#91;''$1''&#93;", ['trans-quoted-title'] = "&#91;$1&#93;", -- for |trans-title= and |trans-quote= ['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{} } --[[--------------------------< A L I A S E S >--------------------------------- Aliases table for commonly passed parameters. Parameter names on the right side in the assignments in this table must have been defined in the Whitelist before they will be recognized as valid parameter names ]] local aliases = { ['AccessDate'] = {'access-date', 'accessdate'}, -- Used by InternetArchiveBot ['Agency'] = 'agency', ['ArchiveDate'] = {'archive-date', 'archivedate'}, -- Used by InternetArchiveBot ['ArchiveFormat'] = 'archive-format', ['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- Used by InternetArchiveBot ['ArticleNumber'] = 'article-number', ['ASINTLD'] = 'asin-tld', ['At'] = 'at', -- Used by InternetArchiveBot ['Authors'] = {'authors', 'people', 'credits'}, ['BookTitle'] = {'book-title', 'booktitle'}, ['Cartography'] = 'cartography', ['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'}, ['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format', 'article-format', 'section-format'}; ['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl'}, -- Used by InternetArchiveBot ['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access', 'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot ['Class'] = 'class', -- cite arxiv and arxiv identifier ['Collaboration'] = 'collaboration', ['Conference'] = {'conference', 'event'}, ['ConferenceFormat'] = 'conference-format', ['ConferenceURL'] = 'conference-url', -- Used by InternetArchiveBot ['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only ['Degree'] = 'degree', ['DF'] = 'df', ['DisplayAuthors'] = {'display-authors', 'display-subjects'}, ['DisplayContributors'] = 'display-contributors', ['DisplayEditors'] = 'display-editors', ['DisplayInterviewers'] = 'display-interviewers', ['DisplayTranslators'] = 'display-translators', ['Docket'] = 'docket', ['DoiBroken'] = 'doi-broken-date', ['Edition'] = 'edition', ['Embargo'] = 'pmc-embargo-date', ['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only ['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode? ['Format'] = 'format', ['ID'] = {'id', 'ID'}, ['Inset'] = 'inset', ['Issue'] = {'issue', 'number'}, ['Language'] = {'language', 'lang'}, ['MailingList'] = {'mailing-list', 'mailinglist'}, -- cite mailing list only ['Map'] = 'map', -- cite map only ['MapFormat'] = 'map-format', -- cite map only ['MapURL'] = {'map-url', 'mapurl'}, -- cite map only -- Used by InternetArchiveBot ['MapUrlAccess'] = 'map-url-access', -- cite map only -- Used by InternetArchiveBot ['Minutes'] = 'minutes', ['Mode'] = 'mode', ['NameListStyle'] = 'name-list-style', ['Network'] = 'network', ['Newsgroup'] = 'newsgroup', -- cite newsgroup only ['NoPP'] = {'no-pp', 'nopp'}, ['NoTracking'] = {'no-tracking', 'template-doc-demo'}, ['Number'] = 'number', -- this case only for cite techreport ['OrigDate'] = {'orig-date', 'orig-year', 'origyear'}, ['Others'] = 'others', ['Page'] = {'page', 'p'}, -- Used by InternetArchiveBot ['Pages'] = {'pages', 'pp'}, -- Used by InternetArchiveBot ['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work'}, ['Place'] = {'place', 'location'}, ['PostScript'] = 'postscript', ['PublicationDate'] = {'publication-date', 'publicationdate'}, ['PublicationPlace'] = {'publication-place', 'publicationplace'}, ['PublisherName'] = {'publisher', 'institution'}, ['Quote'] = {'quote', 'quotation'}, ['QuotePage'] = 'quote-page', ['QuotePages'] = 'quote-pages', ['Ref'] = 'ref', ['Scale'] = 'scale', ['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry', 'script-article', 'script-section'}, ['ScriptMap'] = 'script-map', ['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-website', 'script-work'}, ['ScriptQuote'] = 'script-quote', ['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot ['Season'] = 'season', ['Sections'] = 'sections', -- cite map only ['Series'] = {'series', 'version'}, ['SeriesLink'] = {'series-link', 'serieslink'}, ['SeriesNumber'] = {'series-number', 'series-no'}, ['Sheet'] = 'sheet', -- cite map only ['Sheets'] = 'sheets', -- cite map only ['Station'] = 'station', ['Time'] = 'time', ['TimeCaption'] = 'time-caption', ['Title'] = 'title', -- Used by InternetArchiveBot ['TitleLink'] = {'title-link', 'episode-link', 'episodelink'}, -- Used by InternetArchiveBot ['TitleNote'] = {'title-note', 'department'}, ['TitleType'] = {'type', 'medium'}, ['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution', 'trans-entry', 'trans-section'}, ['Transcript'] = 'transcript', ['TranscriptFormat'] = 'transcript-format', ['TranscriptURL'] = 'transcript-url', -- Used by InternetArchiveBot ['TransMap'] = 'trans-map', -- cite map only ['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper', 'trans-periodical', 'trans-website', 'trans-work'}, ['TransQuote'] = 'trans-quote', ['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot ['URL'] = {'url', 'URL'}, -- Used by InternetArchiveBot ['UrlAccess'] = 'url-access', -- Used by InternetArchiveBot ['UrlStatus'] = 'url-status', -- Used by InternetArchiveBot ['Vauthors'] = 'vauthors', ['Veditors'] = 'veditors', ['Via'] = 'via', ['Volume'] = 'volume', ['Year'] = 'year', ['AuthorList-First'] = {"first#", "author-first#", "author#-first", "author-given#", "author#-given", "subject-first#", "subject#-first", "subject-given#", "subject#-given", "given#"}, ['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "author-surname#", "author#-surname", "subject-last#", "subject#-last", "subject-surname#", "subject#-surname", "author#", 'host#', "subject#", "surname#"}, ['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#", "subject#-link", "authorlink#", "author#link"}, ['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask"}, ['ContributorList-First'] = {'contributor-first#', 'contributor#-first', 'contributor-given#', 'contributor#-given'}, ['ContributorList-Last'] = {'contributor-last#', 'contributor#-last', 'contributor-surname#', 'contributor#-surname', 'contributor#'}, ['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'}, ['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'}, ['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"}, ['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#", "editor#-surname", "editor#"}, ['EditorList-Link'] = {"editor-link#", "editor#-link"}, ['EditorList-Mask'] = {"editor-mask#", "editor#-mask"}, ['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first', 'interviewer-given#', 'interviewer#-given'}, ['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last', 'interviewer-surname#', 'interviewer#-surname', 'interviewer#'}, ['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'}, ['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'}, ['TranslatorList-First'] = {'translator-first#', 'translator#-first', 'translator-given#', 'translator#-given'}, ['TranslatorList-Last'] = {'translator-last#', 'translator#-last', 'translator-surname#', 'translator#-surname', 'translator#'}, ['TranslatorList-Link'] = {'translator-link#', 'translator#-link'}, ['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'}, } --[[--------------------------< P U N C T _ S K I P >--------------------------- builds a table of parameter names that the extraneous terminal punctuation check should not check. ]] local punct_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value 'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters 'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators 'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous 'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'MapURL', 'TranscriptURL', 'URL', -- URL-holding parameters } local url_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value 'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'ID', 'MapURL', 'TranscriptURL', 'URL', -- parameters allowed to hold urls 'Page', 'Pages', 'At', 'QuotePage', 'QuotePages', -- insource locators allowed to hold urls } local function build_skip_table (skip_t, meta_params) for _, meta_param in ipairs (meta_params) do -- for each meta parameter key local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name if 'string' == type (params) then skip_t[params] = 1; -- just a single parameter else for _, param in ipairs (params) do -- get the parameter name skip_t[param] = 1; -- add the parameter name to the skip table local count; param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters if 0 ~= count then -- if removed skip_t[param] = 1; -- add param name without enumerator marker end end end end return skip_t; end local punct_skip = {}; local url_skip = {}; --[[--------------------------< S I N G L E - L E T T E R S E C O N D - L E V E L D O M A I N S >---------- this is a list of tlds that are known to have single-letter second-level domain names. This list does not include ccTLDs which are accepted in is_domain_name(). ]] local single_letter_2nd_lvl_domains_t = {'cash', 'company', 'foundation', 'org', 'today'}; --[[-----------< S P E C I A L C A S E T R A N S L A T I O N S >------------ This table is primarily here to support internationalization. Translations in this table are used, for example, when an error message, category name, etc., is extracted from the English alias key. There may be other cases where this translation table may be useful. ]] local is_Latn = 'A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143'; local special_case_translation = { ['AuthorList'] = 'authors list', -- used to assemble maintenance category names ['ContributorList'] = 'contributors list', -- translation of these names plus translation of the base maintenance category names in maint_cats{} table below ['EditorList'] = 'editors list', -- must match the names of the actual categories ['InterviewerList'] = 'interviewers list', -- this group or translations used by name_has_ed_markup() and name_has_mult_names() ['TranslatorList'] = 'translators list', -- Lua patterns to match pseudo-titles used by InternetArchiveBot and others as placeholder for unknown |title= value ['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title ['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki ['local'] = nil, -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language }, -- Lua patterns to match generic titles; usually created by bots or reference filling tools -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language -- generic titles and patterns in this table should be lowercase only -- leave ['local'] nil except when there is a matching generic title in your language -- boolean 'true' for plain-text searches; 'false' for pattern searches ['generic_titles'] = { ['accept'] = { }, ['reject'] = { {['en'] = {'^wayback%s+machine$', false}, ['local'] = nil}, {['en'] = {'are you a robot', true}, ['local'] = nil}, {['en'] = {'hugedomains.com', true}, ['local'] = nil}, {['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil}, {['en'] = {'page not found', true}, ['local'] = nil}, {['en'] = {'subscribe to read', true}, ['local'] = nil}, {['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil}, {['en'] = {'website is for sale', true}, ['local'] = nil}, {['en'] = {'^404', false}, ['local'] = nil}, {['en'] = {'internet archive wayback machine', true}, ['local'] = nil}, {['en'] = {'log into facebook', true}, ['local'] = nil}, {['en'] = {'login • instagram', true}, ['local'] = nil}, {['en'] = {'redirecting...', true}, ['local'] = nil}, {['en'] = {'usurped title', true}, ['local'] = nil}, -- added by a GreenC bot {['en'] = {'webcite query result', true}, ['local'] = nil}, {['en'] = {'wikiwix\'s cache', true}, ['local'] = nil}, } }, -- boolean 'true' for plain-text searches, search string must be lowercase only -- boolean 'false' for pattern searches -- leave ['local'] nil except when there is a matching generic name in your language ['generic_names'] = { ['accept'] = { {['en'] = {'%[%[[^|]*%(author%) *|[^%]]*%]%]', false}, ['local'] = nil}, }, ['reject'] = { {['en'] = {'about us', true}, ['local'] = nil}, {['en'] = {'%f[%a][Aa]dvisor%f[%A]', false}, ['local'] = nil}, {['en'] = {'allmusic', true}, ['local'] = nil}, {['en'] = {'%f[%a][Aa]uthor%f[%A]', false}, ['local'] = nil}, {['en'] = {'business', true}, ['local'] = nil}, {['en'] = {'cnn', true}, ['local'] = nil}, {['en'] = {'collaborator', true}, ['local'] = nil}, {['en'] = {'contributor', true}, ['local'] = nil}, {['en'] = {'contact us', true}, ['local'] = nil}, {['en'] = {'directory', true}, ['local'] = nil}, {['en'] = {'%f[%(%[][%(%[]%s*eds?%.?%s*[%)%]]?$', false}, ['local'] = nil}, {['en'] = {'[,%.%s]%f[e]eds?%.?$', false}, ['local'] = nil}, {['en'] = {'^eds?[%.,;]', false}, ['local'] = nil}, {['en'] = {'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', false}, ['local'] = nil}, {['en'] = {'%f[%a][Ee]dited%f[%A]', false}, ['local'] = nil}, {['en'] = {'%f[%a][Ee]ditors?%f[%A]', false}, ['local'] = nil}, {['en'] = {'%f[%a]]Ee]mail%f[%A]', false}, ['local'] = nil}, {['en'] = {'facebook', true}, ['local'] = nil}, {['en'] = {'google', true}, ['local'] = nil}, {['en'] = {'home page', true}, ['local'] = nil}, {['en'] = {'^[Ii]nc%.?$', false}, ['local'] = nil}, {['en'] = {'instagram', true}, ['local'] = nil}, {['en'] = {'interviewer', true}, ['local'] = nil}, {['en'] = {'linkedIn', true}, ['local'] = nil}, {['en'] = {'^[Nn]ews$', false}, ['local'] = nil}, {['en'] = {'pinterest', true}, ['local'] = nil}, {['en'] = {'policy', true}, ['local'] = nil}, {['en'] = {'privacy', true}, ['local'] = nil}, {['en'] = {'reuters', true}, ['local'] = nil}, {['en'] = {'translator', true}, ['local'] = nil}, {['en'] = {'tumblr', true}, ['local'] = nil}, {['en'] = {'twitter', true}, ['local'] = nil}, {['en'] = {'site name', true}, ['local'] = nil}, {['en'] = {'statement', true}, ['local'] = nil}, {['en'] = {'submitted', true}, ['local'] = nil}, {['en'] = {'super.?user', false}, ['local'] = nil}, {['en'] = {'%f['..is_Latn..'][Uu]ser%f[^'..is_Latn..']', false}, ['local'] = nil}, {['en'] = {'verfasser', true}, ['local'] = nil}, } } } --[[--------------------------< D A T E _ N A M E S >---------------------------------------------------------- This table of tables lists local language date names and fallback English date names. The code in Date_validation will look first in the local table for valid date names. If date names are not found in the local table, the code will look in the English table. Because citations can be copied to the local wiki from en.wiki, the English is required when the date-name translation function date_name_xlate() is used. In these tables, season numbering is defined by Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. CS1|2 only supports generic seasons. EDTF does support the distinction between north and south hemisphere seasons but CS1|2 has no way to make that distinction. 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) The standard does not address 'named' dates so, for the purposes of CS1|2, Easter and Christmas are defined here as 98 and 99, which should be out of the ISO 8601 (EDTF) range of uses for a while. local_date_names_from_mediawiki is a boolean. When set to: true – module will fetch local month names from MediaWiki for both date_names['local']['long'] and date_names['local']['short'] false – module will *not* fetch local month names from MediaWiki Caveat lector: There is no guarantee that MediaWiki will provide short month names. At your wiki you can test the results of the MediaWiki fetch in the debug console with this command (the result is alpha sorted): =mw.dumpObject (p.date_names['local']) While the module can fetch month names from MediaWiki, it cannot fetch the quarter, season, and named date names from MediaWiki. Those must be translated manually. ]] local local_date_names_from_mediawiki = true; -- when false, manual translation required for date_names['local']['long'] and date_names['local']['short'] -- when true, module fetches long and short month names from MediaWiki local date_names = { ['en'] = { -- English ['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12}, ['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12}, ['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36}, ['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23}, ['named'] = {['Easter'] = 98, ['Christmas'] = 99}, }, -- when local_date_names_from_mediawiki = false ['local'] = { -- replace these English date names with the local language equivalents ['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12}, ['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12}, ['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36}, ['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23}, ['named'] = {['Easter'] = 98, ['Christmas'] = 99}, }, ['inv_local_long'] = {}, -- used in date reformatting & translation; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc. ['inv_local_short'] = {}, -- used in date reformatting & translation; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc. ['inv_local_quarter'] = {}, -- used in date translation; copy of date_names['local'].quarter where k/v are inverted: [1]='<local name>' etc. ['inv_local_season'] = {}, -- used in date translation; copy of date_names['local'].season where k/v are inverted: [1]='<local name>' etc. ['inv_local_named'] = {}, -- used in date translation; copy of date_names['local'].named where k/v are inverted: [1]='<local name>' etc. ['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9 ['xlate_digits'] = {}, } if local_date_names_from_mediawiki then -- if fetching local month names from MediaWiki is enabled local long_t = {}; local short_t = {}; for i=1, 12 do -- loop 12x and local name = lang_obj:formatDate('F', '2022-' .. i .. '-1'); -- get long month name for each i long_t[name] = i; -- save it name = lang_obj:formatDate('M', '2022-' .. i .. '-1'); -- get short month name for each i short_t[name] = i; -- save it end date_names['local']['long'] = long_t; -- write the long table – overwrites manual translation date_names['local']['short'] = short_t; -- write the short table – overwrites manual translation end -- create inverted date-name tables for reformatting and/or translation for _, invert_t in pairs {{'long', 'inv_local_long'}, {'short', 'inv_local_short'}, {'quarter', 'inv_local_quarter'}, {'season', 'inv_local_season'}, {'named', 'inv_local_named'}} do for name, i in pairs (date_names['local'][invert_t[1]]) do -- this table is ['name'] = i date_names[invert_t[2]][i] = name; -- invert to get [i] = 'name' for conversions from ymd end end if local_digits_from_mediawiki then -- if fetching local digits from MediaWiki is enabled local digits_t = {}; for i=0, 9 do -- loop 10x and digits_t [lang_obj:formatNum (i)] = tostring (i); -- format the loop indexer as local lang table index and assign loop indexer (a string) as the value end date_names['local_digits'] = digits_t; end for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value end local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}} '{{ *[Uu]se +(dmy) +dates *[|}]', -- 1159k -- sorted by approximate transclusion count '{{ *[Uu]se +(mdy) +dates *[|}]', -- 212k '{{ *[Uu]se +(MDY) +dates *[|}]', -- 788 '{{ *[Uu]se +(DMY) +dates *[|}]', -- 343 '{{ *([Mm]dy) *[|}]', -- 176 '{{ *[Uu]se *(dmy) *[|}]', -- 156 + 18 '{{ *[Uu]se *(mdy) *[|}]', -- 149 + 11 '{{ *([Dd]my) *[|}]', -- 56 '{{ *[Uu]se +(MDY) *[|}]', -- 5 '{{ *([Dd]MY) *[|}]', -- 3 '{{ *[Uu]se(mdy)dates *[|}]', -- 1 '{{ *[Uu]se +(DMY) *[|}]', -- 0 '{{ *([Mm]DY) *[|}]', -- 0 } local title_object = mw.title.getCurrentTitle(); local content; -- done this way so that unused templates appear in unused-template-reports; self-transcluded makes them look like they are used if 10 ~= title_object.namespace then -- all namespaces except Template content = title_object:getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625 end local function get_date_format () -- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports; if not content then -- nil content when we're in template return nil; -- auto-formatting does not work in Template space so don't set global_df end for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format if match then local use_dates_template = content:match ('%b{}', start); -- get the whole template if use_dates_template:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length return match:lower() .. '-' .. use_dates_template:match ('| *cs1%-dates *= *([lsy][sy]?)'); else return match:lower() .. '-all'; -- no |cs1-dates= k/v pair; return value appropriate for use in |df= end end end end local global_df; -- TODO: add this to <global_cs1_config_t>? --[[-----------------< V O L U M E , I S S U E , P A G E S >------------------ These tables hold cite class values (from the template invocation) and identify those templates that support |volume=, |issue=, and |page(s)= parameters. Cite conference and cite map require further qualification which is handled in the main module. ]] local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'} local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'} local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'} --[[ These tables control when it is appropriate for {{citation}} to render |volume= and/or |issue=. The parameter names in the tables constrain {{citation}} so that its renderings match the renderings of the equivalent cs1 templates. For example, {{cite web}} does not support |volume= so the equivalent {{citation |website=...}} must not support |volume=. ]] local citation_no_volume_t = { -- {{citation}} does not render |volume= when these parameters are used 'website', 'mailinglist', 'script-website', } local citation_issue_t = { -- {{citation}} may render |issue= when these parameters are used 'journal', 'magazine', 'newspaper', 'periodical', 'work', 'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work', } --[[ Patterns for finding extra text in |volume=, |issue=, |page=, |pages= ]] local vol_iss_pg_patterns = { good_ppattern = '^P[^%.PpGg]', -- OK to begin with uppercase P: P7 (page 7 of section P), but not p123 (page 123); TODO: this allows 'Pages' which it should not bad_ppatterns = { -- patterns for |page= and |pages= '^[Pp][PpGg]?%.?[ %d]', '^[Pp][Pp]?%.&nbsp;', -- from {{p.}} and {{pp.}} templates '^[Pp]ages?', '^[Pp]gs.?', }, vpatterns = { -- patterns for |volume= '^volumes?', '^vols?[%.:=]?' }, ipatterns = { -- patterns for |issue= '^issues?', '^iss[%.:=]?', '^numbers?', '^nos?%A', -- don't match 'november' or 'nostradamus' '^nr[%.:=]?', '^n[%.:= ]' -- might be a valid issue without separator (space char is sep char here) } } --[[--------------------------< K E Y W O R D S >------------------------------- These tables hold keywords for those parameters that have defined sets of acceptable keywords. ]] --[[-------------------< K E Y W O R D S T A B L E >-------------------------- this is a list of keywords; each key in the list is associated with a table of synonymous keywords possibly from different languages. for I18N: add local-language keywords to value table; do not change the key. For example, adding the German keyword 'ja': ['affirmative'] = {'yes', 'true', 'y', 'ja'}, Because CS1|2 templates from en.wiki articles are often copied to other local wikis, it is recommended that the English keywords remain in these tables. ]] local keywords = { ['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style= ['and'] = {'and', 'serial'}, -- |name-list-style= ['affirmative'] = {'yes', 'true', 'y'}, -- |no-tracking=, |no-pp= -- Used by InternetArchiveBot ['afterword'] = {'afterword'}, -- |contribution= ['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot ['cs1'] = {'cs1'}, -- |mode= ['cs2'] = {'cs2'}, -- |mode= ['dead'] = {'dead', 'deviated'}, -- |url-status= -- Used by InternetArchiveBot ['dmy'] = {'dmy'}, -- |df= ['dmy-all'] = {'dmy-all'}, -- |df= ['foreword'] = {'foreword'}, -- |contribution= ['free'] = {'free'}, -- |<id>-access= -- Used by InternetArchiveBot ['harv'] = {'harv'}, -- |ref=; this no longer supported; is_valid_parameter_value() called with <invert> = true ['introduction'] = {'introduction'}, -- |contribution= ['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot ['live'] = {'live'}, -- |url-status= -- Used by InternetArchiveBot ['mdy'] = {'mdy'}, -- |df= ['mdy-all'] = {'mdy-all'}, -- |df= ['none'] = {'none'}, -- |postscript=, |ref=, |title=, |type= -- Used by InternetArchiveBot ['off'] = {'off'}, -- |title= (potentially also: |title-link=, |postscript=, |ref=, |type=) ['preface'] = {'preface'}, -- |contribution= ['registration'] = {'registration'}, -- |url-access= -- Used by InternetArchiveBot ['subscription'] = {'subscription'}, -- |url-access= -- Used by InternetArchiveBot ['unfit'] = {'unfit'}, -- |url-status= -- Used by InternetArchiveBot ['usurped'] = {'usurped'}, -- |url-status= -- Used by InternetArchiveBot ['vanc'] = {'vanc'}, -- |name-list-style= ['ymd'] = {'ymd'}, -- |df= ['ymd-all'] = {'ymd-all'}, -- |df= -- ['yMd'] = {'yMd'}, -- |df=; not supported at en.wiki -- ['yMd-all'] = {'yMd-all'}, -- |df=; not supported at en.wiki } --[[------------------------< X L A T E _ K E Y W O R D S >--------------------- this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{} become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}: ['affirmative'] = {'yes', 'true', 'y'}, -- in keywords{} becomes ['yes'] = 'affirmative', -- in keywords_xlate{} ['true'] = 'affirmative', ['y'] = 'affirmative', the purpose of this function is to act as a translator between a non-English keyword and its English equivalent that may be used in other modules of this suite ]] local function xlate_keywords () local out_table = {}; -- output goes here for k, keywords_t in pairs (keywords) do -- spin through the keywords table for _, keyword in ipairs (keywords_t) do -- for each keyword out_table[keyword] = k; -- create an entry in the output table where keyword is the key end end return out_table; end local keywords_xlate = xlate_keywords (); -- the list of translated keywords --[[----------------< M A K E _ K E Y W O R D S _ L I S T >--------------------- this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter. keywords_lists{}, is a table of tables from keywords{} ]] local function make_keywords_list (keywords_lists) local out_table = {}; -- output goes here for _, keyword_list in ipairs (keywords_lists) do -- spin through keywords_lists{} and get a table of keywords for _, keyword in ipairs (keyword_list) do -- spin through keyword_list{} and add each keyword, ... table.insert (out_table, keyword); -- ... as plain text, to the output list end end return out_table; end --[[----------------< K E Y W O R D S _ L I S T S >----------------------------- this is a list of lists of valid keywords for the various parameters in [key]. Generally the keys in this table are the canonical en.wiki parameter names though some are contrived because of use in multiple differently named parameters: ['yes_true_y'], ['id-access']. The function make_keywords_list() extracts the individual keywords from the appropriate list in keywords{}. The lists in this table are used to validate the keyword assignment for the parameters named in this table's keys. ]] local keywords_lists = { ['yes_true_y'] = make_keywords_list ({keywords.affirmative}), ['contribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}), ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all']}), -- ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all'], keywords.yMd, keywords['yMd-all']}), -- not supported at en.wiki ['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}), ['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}), ['ref'] = make_keywords_list ({keywords.harv}), -- inverted check; |ref=harv no longer supported ['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}), ['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}), ['id-access'] = make_keywords_list ({keywords.free}), } --[[--------------------------< C S 1 _ C O N F I G _ G E T >-------------------------------------------------- fetch and validate values from {{cs1 config}} template to fill <global_cs1_config_t> no error messages; when errors are detected, the parameter value from {{cs1 config}} is blanked. Supports all parameters and aliases associated with the metaparameters: DisplayAuthors, DisplayContributors, DisplayEditors, DisplayInterviewers, DisplayTranslators, NameListStyle, and Mode. The DisplayWhatever metaparameters accept numeric values only (|display-authors=etal and the like is not supported). ]] local global_cs1_config_t = {}; -- TODO: add value returned from get_date_format() to this table? local function get_cs1_config () -- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports; if not content then -- nil content when we're in template return nil; -- auto-formatting does not work in Template space so don't set global_df end local start = content:find('{{ *[Cc][Ss]1 config *[|}]'); -- <start> is offset into <content> when {{cs1 config}} found; nil else if start then local cs1_config_template = content:match ('%b{}', start); -- get the whole template if not cs1_config_template then return nil; end local params_t = mw.text.split (cs1_config_template:gsub ('^{{%s*', ''):gsub ('%s*}}$', ''), '%s*|%s*'); -- remove '{{' and '}}'; make a sequence of parameter/value pairs (split on the pipe) table.remove (params_t, 1); -- remove the template name because it isn't a parameter/value pair local config_meta_params_t = {'DisplayAuthors', 'DisplayContributors', 'DisplayEditors', 'DisplayInterviewers', 'DisplayTranslators', 'NameListStyle', 'Mode'}; local meta_param_map_t = {}; -- list of accepted parameter names usable in {{cs1 config}} goes here for _, meta_param in ipairs (config_meta_params_t) do -- for i18n using <config_meta_params_t>, map template parameter names to their metaparameter equivalents if 'table' == type (aliases[meta_param]) then -- if <meta_param> is a sequence, for _, param in ipairs (aliases[meta_param]) do -- extract its contents meta_param_map_t[param] = meta_param; -- and add to <meta_param_map_t> end else meta_param_map_t[aliases[meta_param]] = meta_param; -- not a sequence so just add the parameter to <meta_param_map_t> end end local keywords_t = {}; -- map valid keywords to their associate metaparameter; reverse form of <keyword_lists[key] for these metaparameters for _, metaparam_t in ipairs ({{'NameListStyle', 'name-list-style'}, {'Mode', 'mode'}}) do -- only these metaparameter / keywords_lists key pairs for _, keyword in ipairs (keywords_lists[metaparam_t[2]]) do -- spin through the list of keywords keywords_t[keyword] = metaparam_t[1]; -- add [keyword] = metaparameter to the map end end for _, param in ipairs (params_t) do -- spin through the {{cs1 config}} parameters and fill <global_cs1_config_t> local k, v = param:match ('([^=]-)%s*=%s*(.+)'); -- <k> is the parameter name; <v> is parameter's assigned value if k then if k:find ('^display') then -- if <k> is one of the |display-<namelist>= parameters if v:match ('%d+') then -- the assigned value must be digits; doesn't accept 'etal' global_cs1_config_t[meta_param_map_t[k]]=v; -- add the display param and its value to globals table end else if keywords_t[v] == meta_param_map_t[k] then -- keywords_t[v] returns nil or the metaparam name; these must be the same global_cs1_config_t[meta_param_map_t[k]]=v; -- add the parameter and its value to globals table end end end end end end get_cs1_config (); -- fill <global_cs1_config_t> --[[---------------------< S T R I P M A R K E R S >---------------------------- Common pattern definition location for stripmarkers so that we don't have to go hunting for them if (when) MediaWiki changes their form. ]] local stripmarkers = { ['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker ['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker() } --[[------------< I N V I S I B L E _ C H A R A C T E R S >--------------------- This table holds non-printing or invisible characters indexed either by name or by Unicode group. Values are decimal representations of UTF-8 codes. The table is organized as a table of tables because the Lua pairs keyword returns table data in an arbitrary order. Here, we want to process the table from top to bottom because the entries at the top of the table are also found in the ranges specified by the entries at the bottom of the table. Also here is a pattern that recognizes stripmarkers that begin and end with the delete characters. The nowiki stripmarker is not an error but some others are because the parameter values that include them become part of the template's metadata before stripmarker replacement. ]] local invisible_defs = { del = '\127', -- used to distinguish between stripmarker and del char zwj = '\226\128\141', -- used with capture because zwj may be allowed } local invisible_chars = { {'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD {'zero width joiner', '('.. invisible_defs.zwj .. ')'}, -- U+200D, E2 80 8D; capture because zwj may be allowed {'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B {'hair space', '\226\128\138'}, -- U+200A, E2 80 8A {'soft hyphen', '\194\173'}, -- U+00AD, C2 AD {'horizontal tab', '\009'}, -- U+0009 (HT), 09 {'line feed', '\010'}, -- U+000A (LF), 0A {'no-break space', '\194\160'}, -- U+00A0 (NBSP), C2 A0 {'carriage return', '\013'}, -- U+000D (CR), 0D {'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type {'delete', '('.. invisible_defs.del .. ')'}, -- U+007F (DEL), 7F; must be done after stripmarker test; capture to distinguish isolated del chars not part of stripmarker {'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D)) {'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F -- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF -- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF -- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD -- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD } --[[ Indic script makes use of zero width joiner as a character modifier so zwj characters must be left in. This pattern covers all of the unicode characters for these languages: Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf plus the not-necessarily Indic scripts for Sinhala and Burmese: Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf the pattern is used by has_invisible_chars() and coins_cleanup() ]] local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]'; -- list of emoji that use a zwj character (U+200D) to combine with another emoji -- from: https://unicode.org/Public/emoji/15.0/emoji-zwj-sequences.txt; version: 15.0; 2022-05-06 -- table created by: [[:en:Module:Make emoji zwj table]] local emoji_t = { -- indexes are decimal forms of the hex values in U+xxxx [9760] = true, -- U+2620 ☠ skull and crossbones [9792] = true, -- U+2640 ♀ female sign [9794] = true, -- U+2642 ♂ male sign [9877] = true, -- U+2695 ⚕ staff of aesculapius [9878] = true, -- U+2696 ⚖ scales [9895] = true, -- U+26A7 ⚧ male with stroke and male and female sign [9992] = true, -- U+2708 ✈ airplane [10052] = true, -- U+2744 ❄ snowflake [10084] = true, -- U+2764 ❤ heavy black heart [11035] = true, -- U+2B1B ⬛ black large square [127752] = true, -- U+1F308 🌈 rainbow [127787] = true, -- U+1F32B 🌫 fog [127806] = true, -- U+1F33E 🌾 ear of rice [127859] = true, -- U+1F373 🍳 cooking [127868] = true, -- U+1F37C 🍼 baby bottle [127876] = true, -- U+1F384 🎄 christmas tree [127891] = true, -- U+1F393 🎓 graduation cap [127908] = true, -- U+1F3A4 🎤 microphone [127912] = true, -- U+1F3A8 🎨 artist palette [127979] = true, -- U+1F3EB 🏫 school [127981] = true, -- U+1F3ED 🏭 factory [128102] = true, -- U+1F466 👦 boy [128103] = true, -- U+1F467 👧 girl [128104] = true, -- U+1F468 👨 man [128105] = true, -- U+1F469 👩 woman [128139] = true, -- U+1F48B 💋 kiss mark [128168] = true, -- U+1F4A8 💨 dash symbol [128171] = true, -- U+1F4AB 💫 dizzy symbol [128187] = true, -- U+1F4BB 💻 personal computer [128188] = true, -- U+1F4BC 💼 brief case [128293] = true, -- U+1F525 🔥 fire [128295] = true, -- U+1F527 🔧 wrench [128300] = true, -- U+1F52C 🔬 microscope [128488] = true, -- U+1F5E8 🗨 left speech bubble [128640] = true, -- U+1F680 🚀 rocket [128658] = true, -- U+1F692 🚒 fire engine [129309] = true, -- U+1F91D 🤝 handshake [129455] = true, -- U+1F9AF 🦯 probing cane [129456] = true, -- U+1F9B0 🦰 emoji component red hair [129457] = true, -- U+1F9B1 🦱 emoji component curly hair [129458] = true, -- U+1F9B2 🦲 emoji component bald [129459] = true, -- U+1F9B3 🦳 emoji component white hair [129466] = true, -- U+1F9BA 🦺 safety vest [129468] = true, -- U+1F9BC 🦼 motorized wheelchair [129469] = true, -- U+1F9BD 🦽 manual wheelchair [129489] = true, -- U+1F9D1 🧑 adult [129657] = true, -- U+1FA79 🩹 adhesive bandage [129778] = true, -- U+1FAF2 🫲 leftwards hand } --[[----------------------< L A N G U A G E S U P P O R T >------------------- These tables and constants support various language-specific functionality. ]] --local this_wiki_code = mw.getContentLanguage():getCode(); -- get this wiki's language code local this_wiki_code = lang_obj:getCode(); -- get this wiki's language code if string.match (mw.site.server, 'wikidata') then this_wiki_code = mw.getCurrentFrame():callParserFunction('int', {'lang'}); -- on Wikidata so use interface language setting instead end local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a table of language tag/name pairs known to Wikimedia; used for interwiki tests local mw_languages_by_name_t = {}; for k, v in pairs (mw_languages_by_tag_t) do -- build a 'reversed' table name/tag language pairs know to MediaWiki; used for |language= v = mw.ustring.lower (v); -- lowercase for tag fetch; get name's proper case from mw_languages_by_tag_t[<tag>] if mw_languages_by_name_t[v] then -- when name already in the table if 2 == #k or 3 == #k then -- if tag does not have subtags mw_languages_by_name_t[v] = k; -- prefer the shortest tag for this name end else -- here when name not in the table mw_languages_by_name_t[v] = k; -- so add name and matching tag end end local inter_wiki_map = {}; -- map of interwiki prefixes that are language-code prefixes for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base interwiki map (limited to local) if mw_languages_by_tag_t[v["prefix"]] then -- if the prefix matches a known language tag inter_wiki_map[v["prefix"]] = true; -- add it to our local map end end --[[--------------------< S C R I P T _ L A N G _ C O D E S >------------------- This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character language codes that apply only to |script-title= and |script-chapter= ]] local script_lang_codes = { 'ab', 'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu', 'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo', 'mk', 'ml', 'mn', 'mni', 'mr', 'my', 'ne', 'or', 'ota', 'pa', 'ps', 'ru', 'sd', 'si', 'sr', 'syc', 'ta', 'te', 'tg', 'th', 'ti', 'tt', 'ug', 'uk', 'ur', 'uz', 'yi', 'yue', 'zh' }; --[[---------------< L A N G U A G E R E M A P P I N G >---------------------- These tables hold language information that is different (correct) from MediaWiki's definitions For each ['<tag>'] = 'language name' in lang_code_remap{} there must be a matching ['language name'] = {'language name', '<tag>'} in lang_name_remap{} lang_tag_remap{}: key is always lowercase ISO 639-1, -2, -3 language tag or a valid lowercase IETF language tag value is properly spelled and capitalized language name associated with <tag> only one language name per <tag>; key/value pair must have matching entry in lang_name_remap{} lang_name_remap{}: key is always lowercase language name value is a table the holds correctly spelled and capitalized language name [1] and associated tag [2] (tag must match a tag key in lang_tag_remap{}) may have multiple keys referring to a common preferred name and tag; For example: ['kolsch'] and ['kölsch'] both refer to 'Kölsch' and 'ksh' ]] local lang_tag_remap = { -- used for |language= and |script-title= / |script-chapter= ['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch ['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org ['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name ['bn'] = 'Bengali', -- MediaWiki returns Bangla ['ca-valencia'] = 'Valencian', -- IETF variant of Catalan ['fkv'] = 'Kven', -- MediaWiki returns Kvensk ['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name ['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name ['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data ['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data ['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name } local lang_name_remap = { -- used for |language=; names require proper capitalization; tags must be lowercase ['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org ['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap ['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code ['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org ['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found ['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name ['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh ['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name ['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö) ['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name ['kven'] = {'Kven', 'fkv'}, -- Unicode CLDR have decided not to support English language name for these two... ['kvensk'] = {'Kven', 'fkv'}, -- ...they say to refer to IANA registry for English names ['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639 ['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-tw'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese ['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found ['valencian'] = {'Valencian', 'ca-valencia'}, -- variant of Catalan; categorizes as Valencian } --[[---------------< P R O P E R T I E S _ C A T E G O R I E S >---------------- Properties categories. These are used for investigating qualities of citations. ]] local prop_cats = { ['foreign-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code ['foreign-lang-source-2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key ['jul-greg-uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926 ['local-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false ['location-test'] = 'CS1 location test', ['long-vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 characters ['script'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code ['tracked-param'] = 'CS1 tracked parameter: $1', -- $1 is base (enumerators removed) parameter name ['year-range-abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form } --[[-------------------< T I T L E _ T Y P E S >-------------------------------- Here we map a template's CitationClass to TitleType (default values for |type= parameter) ]] local title_types = { ['AV-media-notes'] = 'Media notes', ['document'] = 'Document', ['interview'] = 'Interview', ['mailinglist'] = 'Mailing list', ['map'] = 'Map', ['podcast'] = 'Podcast', ['pressrelease'] = 'Press release', ['report'] = 'Report', ['speech'] = 'Speech', ['techreport'] = 'Technical report', ['thesis'] = 'Thesis', } --[[===================<< E R R O R M E S S A G I N G >>====================== ]] --[[----------< E R R O R M E S S A G E S U P P L I M E N T S >------------- I18N for those messages that are supplemented with additional specific text that describes the reason for the error TODO: merge this with special_case_translations{}? ]] local err_msg_supl = { ['char'] = 'invalid character', -- |isbn=, |sbn= ['check'] = 'checksum', -- |isbn=, |sbn= ['flag'] = 'flag', -- |archive-url= ['form'] = 'invalid form', -- |isbn=, |sbn= ['group'] = 'invalid group id', -- |isbn= ['initials'] = 'initials', -- Vancouver ['invalid language code'] = 'invalid language code', -- |script-<param>= ['journal'] = 'journal', -- |bibcode= ['length'] = 'length', -- |isbn=, |bibcode=, |sbn= ['liveweb'] = 'liveweb', -- |archive-url= ['missing comma'] = 'missing comma', -- Vancouver ['missing prefix'] = 'missing prefix', -- |script-<param>= ['missing title part'] = 'missing title part', -- |script-<param>= ['name'] = 'name', -- Vancouver ['non-Latin char'] = 'non-Latin character', -- Vancouver ['path'] = 'path', -- |archive-url= ['prefix'] = 'invalid prefix', -- |isbn= ['punctuation'] = 'punctuation', -- Vancouver ['save'] = 'save command', -- |archive-url= ['suffix'] = 'suffix', -- Vancouver ['timestamp'] = 'timestamp', -- |archive-url= ['unknown language code'] = 'unknown language code', -- |script-<param>= ['value'] = 'value', -- |bibcode= ['year'] = 'year', -- |bibcode= } --[[--------------< E R R O R _ C O N D I T I O N S >--------------------------- Error condition table. This table has two sections: errors at the top, maintenance at the bottom. Maint 'messaging' does not have a 'message' (message=nil) The following contains a list of IDs for various error conditions defined in the code. For each ID, we specify a text message to display, an error category to include, and whether the error message should be wrapped as a hidden comment. Anchor changes require identical changes to matching anchor in Help:CS1 errors TODO: rename error_conditions{} to something more generic; create separate error and maint tables inside that? ]] local error_conditions = { err_accessdate_missing_url = { message = '<code class="cs1-code">&#124;access-date=</code> requires <code class="cs1-code">&#124;url=</code>', anchor = 'accessdate_missing_url', category = 'CS1 errors: access-date without URL', hidden = false }, err_apostrophe_markup = { message = 'Italic or bold markup not allowed in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'apostrophe_markup', category = 'CS1 errors: markup', hidden = false }, err_archive_date_missing_url = { message = '<code class="cs1-code">&#124;archive-date=</code> requires <code class="cs1-code">&#124;archive-url=</code>', anchor = 'archive_date_missing_url', category = 'CS1 errors: archive-url', hidden = false }, err_archive_date_url_ts_mismatch = { message = '<code class="cs1-code">&#124;archive-date=</code> / <code class="cs1-code">&#124;archive-url=</code> timestamp mismatch', anchor = 'archive_date_url_ts_mismatch', category = 'CS1 errors: archive-url', hidden = false }, err_archive_missing_date = { message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;archive-date=</code>', anchor = 'archive_missing_date', category = 'CS1 errors: archive-url', hidden = false }, err_archive_missing_url = { message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;url=</code>', anchor = 'archive_missing_url', category = 'CS1 errors: archive-url', hidden = false }, err_archive_url = { message = '<code class="cs1-code">&#124;archive-url=</code> is malformed: $1', -- $1 is error message detail anchor = 'archive_url', category = 'CS1 errors: archive-url', hidden = false }, err_arxiv_missing = { message = '<code class="cs1-code">&#124;arxiv=</code> required', anchor = 'arxiv_missing', category = 'CS1 errors: arXiv', -- same as bad arxiv hidden = false }, err_asintld_missing_asin = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;asin=</code>', -- $1 is parameter name anchor = 'asintld_missing_asin', category = 'CS1 errors: ASIN TLD', hidden = false }, err_bad_arxiv = { message = 'Check <code class="cs1-code">&#124;arxiv=</code> value', anchor = 'bad_arxiv', category = 'CS1 errors: arXiv', hidden = false }, err_bad_asin = { message = 'Check <code class="cs1-code">&#124;asin=</code> value', anchor = 'bad_asin', category ='CS1 errors: ASIN', hidden = false }, err_bad_asin_tld = { message = 'Check <code class="cs1-code">&#124;asin-tld=</code> value', anchor = 'bad_asin_tld', category ='CS1 errors: ASIN TLD', hidden = false }, err_bad_bibcode = { message = 'Check <code class="cs1-code">&#124;bibcode=</code> $1', -- $1 is error message detail anchor = 'bad_bibcode', category = 'CS1 errors: bibcode', hidden = false }, err_bad_biorxiv = { message = 'Check <code class="cs1-code">&#124;biorxiv=</code> value', anchor = 'bad_biorxiv', category = 'CS1 errors: bioRxiv', hidden = false }, err_bad_citeseerx = { message = 'Check <code class="cs1-code">&#124;citeseerx=</code> value', anchor = 'bad_citeseerx', category = 'CS1 errors: citeseerx', hidden = false }, err_bad_date = { message = 'Check date values in: $1', -- $1 is a parameter name list anchor = 'bad_date', category = 'CS1 errors: dates', hidden = false }, err_bad_doi = { message = 'Check <code class="cs1-code">&#124;doi=</code> value', anchor = 'bad_doi', category = 'CS1 errors: DOI', hidden = false }, err_bad_hdl = { message = 'Check <code class="cs1-code">&#124;hdl=</code> value', anchor = 'bad_hdl', category = 'CS1 errors: HDL', hidden = false }, err_bad_isbn = { message = 'Check <code class="cs1-code">&#124;isbn=</code> value: $1', -- $1 is error message detail anchor = 'bad_isbn', category = 'CS1 errors: ISBN', hidden = false }, err_bad_ismn = { message = 'Check <code class="cs1-code">&#124;ismn=</code> value', anchor = 'bad_ismn', category = 'CS1 errors: ISMN', hidden = false }, err_bad_issn = { message = 'Check <code class="cs1-code">&#124;$1issn=</code> value', -- $1 is 'e' or '' for eissn or issn anchor = 'bad_issn', category = 'CS1 errors: ISSN', hidden = false }, err_bad_jfm = { message = 'Check <code class="cs1-code">&#124;jfm=</code> value', anchor = 'bad_jfm', category = 'CS1 errors: JFM', hidden = false }, err_bad_jstor = { message = 'Check <code class="cs1-code">&#124;jstor=</code> value', anchor = 'bad_jstor', category = 'CS1 errors: JSTOR', hidden = false }, err_bad_lccn = { message = 'Check <code class="cs1-code">&#124;lccn=</code> value', anchor = 'bad_lccn', category = 'CS1 errors: LCCN', hidden = false }, err_bad_medrxiv = { message = 'Check <code class="cs1-code">&#124;medrxiv=</code> value', anchor = 'bad_medrxiv', category = 'CS1 errors: medRxiv', hidden = false }, err_bad_mr = { message = 'Check <code class="cs1-code">&#124;mr=</code> value', anchor = 'bad_mr', category = 'CS1 errors: MR', hidden = false }, err_bad_oclc = { message = 'Check <code class="cs1-code">&#124;oclc=</code> value', anchor = 'bad_oclc', category = 'CS1 errors: OCLC', hidden = false }, err_bad_ol = { message = 'Check <code class="cs1-code">&#124;ol=</code> value', anchor = 'bad_ol', category = 'CS1 errors: OL', hidden = false }, err_bad_osti = { message = 'Check <code class="cs1-code">&#124;osti=</code> value', anchor = 'bad_osti', category = 'CS1 errors: OSTI', hidden = false }, err_bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link= message = 'Check <code class="cs1-code">&#124;$1=</code> value', -- $1 is parameter name anchor = 'bad_paramlink', category = 'CS1 errors: parameter link', hidden = false }, err_bad_pmc = { message = 'Check <code class="cs1-code">&#124;pmc=</code> value', anchor = 'bad_pmc', category = 'CS1 errors: PMC', hidden = false }, err_bad_pmid = { message = 'Check <code class="cs1-code">&#124;pmid=</code> value', anchor = 'bad_pmid', category = 'CS1 errors: PMID', hidden = false }, err_bad_rfc = { message = 'Check <code class="cs1-code">&#124;rfc=</code> value', anchor = 'bad_rfc', category = 'CS1 errors: RFC', hidden = false }, err_bad_s2cid = { message = 'Check <code class="cs1-code">&#124;s2cid=</code> value', anchor = 'bad_s2cid', category = 'CS1 errors: S2CID', hidden = false }, err_bad_sbn = { message = 'Check <code class="cs1-code">&#124;sbn=</code> value: $1', -- $1 is error message detail anchor = 'bad_sbn', category = 'CS1 errors: SBN', hidden = false }, err_bad_ssrn = { message = 'Check <code class="cs1-code">&#124;ssrn=</code> value', anchor = 'bad_ssrn', category = 'CS1 errors: SSRN', hidden = false }, err_bad_url = { message = 'Check $1 value', -- $1 is parameter name anchor = 'bad_url', category = 'CS1 errors: URL', hidden = false }, err_bad_usenet_id = { message = 'Check <code class="cs1-code">&#124;message-id=</code> value', anchor = 'bad_message_id', category = 'CS1 errors: message-id', hidden = false }, err_bad_zbl = { message = 'Check <code class="cs1-code">&#124;zbl=</code> value', anchor = 'bad_zbl', category = 'CS1 errors: Zbl', hidden = false }, err_bare_url_missing_title = { message = '$1 missing title', -- $1 is parameter name anchor = 'bare_url_missing_title', category = 'CS1 errors: bare URL', hidden = false }, err_biorxiv_missing = { message = '<code class="cs1-code">&#124;biorxiv=</code> required', anchor = 'biorxiv_missing', category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv hidden = false }, err_chapter_ignored = { message = '<code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'chapter_ignored', category = 'CS1 errors: chapter ignored', hidden = false }, err_citation_missing_title = { message = 'Missing or empty <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'citation_missing_title', category = 'CS1 errors: missing title', hidden = false }, err_citeseerx_missing = { message = '<code class="cs1-code">&#124;citeseerx=</code> required', anchor = 'citeseerx_missing', category = 'CS1 errors: citeseerx', -- same as bad citeseerx hidden = false }, err_cite_web_url = { -- this error applies to cite web and to cite podcast message = 'Missing or empty <code class="cs1-code">&#124;url=</code>', anchor = 'cite_web_url', category = 'CS1 errors: requires URL', hidden = false }, err_class_ignored = { message = '<code class="cs1-code">&#124;class=</code> ignored', anchor = 'class_ignored', category = 'CS1 errors: class', hidden = false }, err_contributor_ignored = { message = '<code class="cs1-code">&#124;contributor=</code> ignored', anchor = 'contributor_ignored', category = 'CS1 errors: contributor', hidden = false }, err_contributor_missing_required_param = { message = '<code class="cs1-code">&#124;contributor=</code> requires <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'contributor_missing_required_param', category = 'CS1 errors: contributor', hidden = false }, err_deprecated_params = { message = 'Cite uses deprecated parameter <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'deprecated_params', category = 'CS1 errors: deprecated parameters', hidden = false }, err_disp_name = { message = 'Invalid <code class="cs1-code">&#124;$1=$2</code>', -- $1 is parameter name; $2 is the assigned value anchor = 'disp_name', category = 'CS1 errors: display-names', hidden = false, }, err_doibroken_missing_doi = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;doi=</code>', -- $1 is parameter name anchor = 'doibroken_missing_doi', category = 'CS1 errors: DOI', hidden = false }, err_embargo_missing_pmc = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;pmc=</code>', -- $1 is parameter name anchor = 'embargo_missing_pmc', category = 'CS1 errors: PMC embargo', hidden = false }, err_empty_citation = { message = 'Empty citation', anchor = 'empty_citation', category = 'CS1 errors: empty citation', hidden = false }, err_etal = { message = 'Explicit use of et al. in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'explicit_et_al', category = 'CS1 errors: explicit use of et al.', hidden = false }, err_extra_text_edition = { message = '<code class="cs1-code">&#124;edition=</code> has extra text', anchor = 'extra_text_edition', category = 'CS1 errors: extra text: edition', hidden = false, }, err_extra_text_issue = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_issue', category = 'CS1 errors: extra text: issue', hidden = false, }, err_extra_text_pages = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_pages', category = 'CS1 errors: extra text: pages', hidden = false, }, err_extra_text_volume = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_volume', category = 'CS1 errors: extra text: volume', hidden = true, }, err_first_missing_last = { message = '<code class="cs1-code">&#124;$1=</code> missing <code class="cs1-code">&#124;$2=</code>', -- $1 is first alias, $2 is matching last alias anchor = 'first_missing_last', category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator hidden = false }, err_format_missing_url = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;$2=</code>', -- $1 is format parameter $2 is url parameter anchor = 'format_missing_url', category = 'CS1 errors: format without URL', hidden = false }, err_generic_name = { message = '<code class="cs1-code">&#124;$1=</code> has generic name', -- $1 is parameter name anchor = 'generic_name', category = 'CS1 errors: generic name', hidden = false, }, err_generic_title = { message = 'Cite uses generic title', anchor = 'generic_title', category = 'CS1 errors: generic title', hidden = false, }, err_invalid_param_val = { message = 'Invalid <code class="cs1-code">&#124;$1=$2</code>', -- $1 is parameter name $2 is parameter value anchor = 'invalid_param_val', category = 'CS1 errors: invalid parameter value', hidden = false }, err_invisible_char = { message = '$1 in $2 at position $3', -- $1 is invisible char $2 is parameter name $3 is position number anchor = 'invisible_char', category = 'CS1 errors: invisible characters', hidden = false }, err_medrxiv_missing = { message = '<code class="cs1-code">&#124;medrxiv=</code> required', anchor = 'medrxiv_missing', category = 'CS1 errors: medRxiv', -- same as bad medRxiv hidden = false }, err_missing_name = { message = 'Missing <code class="cs1-code">&#124;$1$2=</code>', -- $1 is modified NameList; $2 is enumerator anchor = 'missing_name', category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator hidden = false }, err_missing_periodical = { message = 'Cite $1 requires <code class="cs1-code">&#124;$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1 anchor = 'missing_periodical', category = 'CS1 errors: missing periodical', hidden = true }, err_missing_pipe = { message = 'Missing pipe in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'missing_pipe', category = 'CS1 errors: missing pipe', hidden = false }, err_missing_publisher = { message = 'Cite $1 requires <code class="cs1-code">&#124;$2=</code>', -- $1 is cs1 template name; $2 is canonical publisher parameter name for cite $1 anchor = 'missing_publisher', category = 'CS1 errors: missing publisher', hidden = false }, err_param_access_requires_param = { message = '<code class="cs1-code">&#124;$1-access=</code> requires <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'param_access_requires_param', category = 'CS1 errors: param-access', hidden = false }, err_param_has_ext_link = { message = 'External link in <code class="cs1-code">$1</code>', -- $1 is parameter name anchor = 'param_has_ext_link', category = 'CS1 errors: external links', hidden = false }, err_parameter_ignored = { message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'parameter_ignored', category = 'CS1 errors: unsupported parameter', hidden = false }, err_parameter_ignored_suggest = { message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored (<code class="cs1-code">&#124;$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name anchor = 'parameter_ignored_suggest', category = 'CS1 errors: unsupported parameter', hidden = false }, err_periodical_ignored = { message = '<code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'periodical_ignored', category = 'CS1 errors: periodical ignored', hidden = false }, err_redundant_parameters = { message = 'More than one of $1 specified', -- $1 is error message detail anchor = 'redundant_parameters', category = 'CS1 errors: redundant parameter', hidden = false }, err_script_parameter = { message = 'Invalid <code class="cs1-code">&#124;$1=</code>: $2', -- $1 is parameter name $2 is script language code or error detail anchor = 'script_parameter', category = 'CS1 errors: script parameters', hidden = false }, err_ssrn_missing = { message = '<code class="cs1-code">&#124;ssrn=</code> required', anchor = 'ssrn_missing', category = 'CS1 errors: SSRN', hidden = false }, err_text_ignored = { message = 'Text "$1" ignored', -- $1 is ignored text anchor = 'text_ignored', category = 'CS1 errors: unrecognized parameter', hidden = false }, err_trans_missing_title = { message = '<code class="cs1-code">&#124;trans-$1=</code> requires <code class="cs1-code">&#124;$1=</code> or <code class="cs1-code">&#124;script-$1=</code>', -- $1 is base parameter name anchor = 'trans_missing_title', category = 'CS1 errors: translated title', hidden = false }, err_param_unknown_empty = { message = 'Cite has empty unknown parameter$1: $2', -- $1 is 's' or empty space; $2 is emty unknown param list anchor = 'param_unknown_empty', category = 'CS1 errors: empty unknown parameters', hidden = false }, err_vancouver = { message = 'Vancouver style error: $1 in name $2', -- $1 is error detail, $2 is the nth name anchor = 'vancouver', category = 'CS1 errors: Vancouver style', hidden = false }, err_wikilink_in_url = { message = 'URL–wikilink conflict', -- uses ndash anchor = 'wikilink_in_url', category = 'CS1 errors: URL–wikilink conflict', -- uses ndash hidden = false }, --[[--------------------------< M A I N T >------------------------------------- maint messages do not have a message (message = nil); otherwise the structure is the same as error messages ]] maint_archived_copy = { message = nil, anchor = 'archived_copy', category = 'CS1 maint: archived copy as title', hidden = true, }, maint_authors = { message = nil, anchor = 'authors', category = 'CS1 maint: uses authors parameter', hidden = true, }, maint_bibcode = { message = nil, anchor = 'bibcode', category = 'CS1 maint: bibcode', hidden = true, }, maint_location_no_publisher = { -- cite book, conference, encyclopedia; citation as book cite or encyclopedia cite message = nil, anchor = 'location_no_publisher', category = 'CS1 maint: location missing publisher', hidden = true, }, maint_bot_unknown = { message = nil, anchor = 'bot:_unknown', category = 'CS1 maint: bot: original URL status unknown', hidden = true, }, maint_date_auto_xlated = { -- date auto-translation not supported by en.wiki message = nil, anchor = 'date_auto_xlated', category = 'CS1 maint: date auto-translated', hidden = true, }, maint_date_format = { message = nil, anchor = 'date_format', category = 'CS1 maint: date format', hidden = true, }, maint_date_year = { message = nil, anchor = 'date_year', category = 'CS1 maint: date and year', hidden = true, }, maint_doi_ignore = { message = nil, anchor = 'doi_ignore', category = 'CS1 maint: ignored DOI errors', hidden = true, }, maint_doi_inactive = { message = nil, anchor = 'doi_inactive', category = 'CS1 maint: DOI inactive', hidden = true, }, maint_doi_inactive_dated = { message = nil, anchor = 'doi_inactive_dated', category = 'CS1 maint: DOI inactive as of $2$3$1', -- $1 is year, $2 is month-name or empty string, $3 is space or empty string hidden = true, }, maint_extra_punct = { message = nil, anchor = 'extra_punct', category = 'CS1 maint: extra punctuation', hidden = true, }, maint_isbn_ignore = { message = nil, anchor = 'ignore_isbn_err', category = 'CS1 maint: ignored ISBN errors', hidden = true, }, maint_issn_ignore = { message = nil, anchor = 'ignore_issn', category = 'CS1 maint: ignored ISSN errors', hidden = true, }, maint_jfm_format = { message = nil, anchor = 'jfm_format', category = 'CS1 maint: JFM format', hidden = true, }, maint_location = { message = nil, anchor = 'location', category = 'CS1 maint: location', hidden = true, }, maint_mr_format = { message = nil, anchor = 'mr_format', category = 'CS1 maint: MR format', hidden = true, }, maint_mult_names = { message = nil, anchor = 'mult_names', category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table hidden = true, }, maint_numeric_names = { message = nil, anchor = 'numeric_names', category = 'CS1 maint: numeric names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table hidden = true, }, maint_others = { message = nil, anchor = 'others', category = 'CS1 maint: others', hidden = true, }, maint_others_avm = { message = nil, anchor = 'others_avm', category = 'CS1 maint: others in cite AV media (notes)', hidden = true, }, maint_overridden_setting = { message = nil, anchor = 'overridden', category = 'CS1 maint: overridden setting', hidden = true, }, maint_pmc_embargo = { message = nil, anchor = 'embargo', category = 'CS1 maint: PMC embargo expired', hidden = true, }, maint_pmc_format = { message = nil, anchor = 'pmc_format', category = 'CS1 maint: PMC format', hidden = true, }, maint_postscript = { message = nil, anchor = 'postscript', category = 'CS1 maint: postscript', hidden = true, }, maint_ref_duplicates_default = { message = nil, anchor = 'ref_default', category = 'CS1 maint: ref duplicates default', hidden = true, }, maint_unfit = { message = nil, anchor = 'unfit', category = 'CS1 maint: unfit URL', hidden = true, }, maint_unknown_lang = { message = nil, anchor = 'unknown_lang', category = 'CS1 maint: unrecognized language', hidden = true, }, maint_untitled = { message = nil, anchor = 'untitled', category = 'CS1 maint: untitled periodical', hidden = true, }, maint_url_status = { message = nil, anchor = 'url_status', category = 'CS1 maint: url-status', hidden = true, }, maint_zbl = { message = nil, anchor = 'zbl', category = 'CS1 maint: Zbl', hidden = true, }, } --[[--------------------------< I D _ H A N D L E R S >-------------------------------------------------------- The following contains a list of values for various defined identifiers. For each identifier we specify a variety of information necessary to properly render the identifier in the citation. parameters: a list of parameter aliases for this identifier; first in the list is the canonical form link: Wikipedia article name redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number' q: Wikidata q number for the identifier label: the label preceding the identifier; label is linked to a Wikipedia article (in this order): redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true Wikidata-supplied article name for the local wiki from id_handlers['<id>'].q local article name from id_handlers['<id>'].link prefix: the first part of a URL that will be concatenated with a second part which usually contains the identifier suffix: optional third part to be added after the identifier encode: true if URI should be percent-encoded; otherwise false COinS: identifier link or keyword for use in COinS: for identifiers registered at info-uri.info use: info:.... where '...' is the appropriate identifier label for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn for |asin= and |ol=, which require assembly, use the keyword: url for others make a URL using the value in prefix/suffix and #label, use the keyword: pre (not checked; any text other than 'info', 'rft', or 'url' works here) set to nil to leave the identifier out of the COinS separator: character or text between label and the identifier in the rendered citation id_limit: for those identifiers with established limits, this property holds the upper limit access: use this parameter to set the access level for all instances of this identifier. the value must be a valid access level for an identifier (see ['id-access'] in this file). custom_access: to enable custom access level for an identifier, set this parameter to the parameter that should control it (normally 'id-access') ]] local id_handlers = { ['ARXIV'] = { parameters = {'arxiv', 'eprint'}, link = 'arXiv', redirect = 'arXiv (identifier)', q = 'Q118398', label = 'arXiv', prefix = 'https://arxiv.org/abs/', encode = false, COinS = 'info:arxiv', separator = ':', access = 'free', -- free to read }, ['ASIN'] = { parameters = { 'asin', 'ASIN' }, link = 'Amazon Standard Identification Number', redirect = 'ASIN (identifier)', q = 'Q1753278', label = 'ASIN', prefix = 'https://www.amazon.', COinS = 'url', separator = '&nbsp;', encode = false; }, ['BIBCODE'] = { parameters = {'bibcode'}, link = 'Bibcode', redirect = 'Bibcode (identifier)', q = 'Q25754', label = 'Bibcode', prefix = 'https://ui.adsabs.harvard.edu/abs/', encode = false, COinS = 'info:bibcode', separator = ':', custom_access = 'bibcode-access', }, ['BIORXIV'] = { parameters = {'biorxiv'}, link = 'bioRxiv', redirect = 'bioRxiv (identifier)', q = 'Q19835482', label = 'bioRxiv', prefix = 'https://doi.org/', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = true, separator = '&nbsp;', }, ['CITESEERX'] = { parameters = {'citeseerx'}, link = 'CiteSeerX', redirect = 'CiteSeerX (identifier)', q = 'Q2715061', label = 'CiteSeerX', prefix = 'https://citeseerx.ist.psu.edu/viewdoc/summary?doi=', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = true, separator = '&nbsp;', }, ['DOI'] = { -- Used by InternetArchiveBot parameters = { 'doi', 'DOI'}, link = 'Digital object identifier', redirect = 'doi (identifier)', q = 'Q25670', label = 'doi', prefix = 'https://doi.org/', COinS = 'info:doi', separator = ':', encode = true, custom_access = 'doi-access', }, ['EISSN'] = { parameters = {'eissn', 'EISSN'}, link = 'International Standard Serial Number#Electronic ISSN', redirect = 'eISSN (identifier)', q = 'Q46339674', label = 'eISSN', prefix = 'https://www.worldcat.org/issn/', COinS = 'rft.eissn', encode = false, separator = '&nbsp;', }, ['HDL'] = { parameters = { 'hdl', 'HDL' }, link = 'Handle System', redirect = 'hdl (identifier)', q = 'Q3126718', label = 'hdl', prefix = 'https://hdl.handle.net/', COinS = 'info:hdl', separator = ':', encode = true, custom_access = 'hdl-access', }, ['ISBN'] = { -- Used by InternetArchiveBot parameters = {'isbn', 'ISBN'}, link = 'International Standard Book Number', redirect = 'ISBN (identifier)', q = 'Q33057', label = 'ISBN', prefix = 'Special:BookSources/', COinS = 'rft.isbn', separator = '&nbsp;', }, ['ISMN'] = { parameters = {'ismn', 'ISMN'}, link = 'International Standard Music Number', redirect = 'ISMN (identifier)', q = 'Q1666938', label = 'ISMN', prefix = '', -- not currently used; COinS = nil, -- nil because we can't use pre or rft or info: separator = '&nbsp;', }, ['ISSN'] = { parameters = {'issn', 'ISSN'}, link = 'International Standard Serial Number', redirect = 'ISSN (identifier)', q = 'Q131276', label = 'ISSN', prefix = 'https://www.worldcat.org/issn/', COinS = 'rft.issn', encode = false, separator = '&nbsp;', }, ['JFM'] = { parameters = {'jfm', 'JFM'}, link = 'Jahrbuch über die Fortschritte der Mathematik', redirect = 'JFM (identifier)', q = '', label = 'JFM', prefix = 'https://zbmath.org/?format=complete&q=an:', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, ['JSTOR'] = { parameters = {'jstor', 'JSTOR'}, link = 'JSTOR', redirect = 'JSTOR (identifier)', q = 'Q1420342', label = 'JSTOR', prefix = 'https://www.jstor.org/stable/', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', custom_access = 'jstor-access', }, ['LCCN'] = { parameters = {'lccn', 'LCCN'}, link = 'Library of Congress Control Number', redirect = 'LCCN (identifier)', q = 'Q620946', label = 'LCCN', prefix = 'https://lccn.loc.gov/', COinS = 'info:lccn', encode = false, separator = '&nbsp;', }, ['MEDRXIV'] = { parameters = {'medrxiv'}, link = 'medRxiv', redirect = 'medRxiv (identifier)', q = 'Q58465838', label = 'medRxiv', prefix = 'https://www.medrxiv.org/content/', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = false, separator = '&nbsp;', }, ['MR'] = { parameters = {'mr', 'MR'}, link = 'Mathematical Reviews', redirect = 'MR (identifier)', q = 'Q211172', label = 'MR', prefix = 'https://mathscinet.ams.org/mathscinet-getitem?mr=', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, ['OCLC'] = { parameters = {'oclc', 'OCLC'}, link = 'OCLC', redirect = 'OCLC (identifier)', q = 'Q190593', label = 'OCLC', prefix = 'https://www.worldcat.org/oclc/', COinS = 'info:oclcnum', encode = true, separator = '&nbsp;', id_limit = 10030000000, }, ['OL'] = { parameters = { 'ol', 'OL' }, link = 'Open Library', redirect = 'OL (identifier)', q = 'Q1201876', label = 'OL', prefix = 'https://openlibrary.org/', COinS = 'url', separator = '&nbsp;', encode = true, custom_access = 'ol-access', }, ['OSTI'] = { parameters = {'osti', 'OSTI'}, link = 'Office of Scientific and Technical Information', redirect = 'OSTI (identifier)', q = 'Q2015776', label = 'OSTI', prefix = 'https://www.osti.gov/biblio/', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 23010000, custom_access = 'osti-access', }, ['PMC'] = { parameters = {'pmc', 'PMC'}, link = 'PubMed Central', redirect = 'PMC (identifier)', q = 'Q229883', label = 'PMC', prefix = 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC', suffix = '', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 10700000, access = 'free', -- free to read }, ['PMID'] = { parameters = {'pmid', 'PMID'}, link = 'PubMed Identifier', redirect = 'PMID (identifier)', q = 'Q2082879', label = 'PMID', prefix = 'https://pubmed.ncbi.nlm.nih.gov/', COinS = 'info:pmid', encode = false, separator = '&nbsp;', id_limit = 38400000, }, ['RFC'] = { parameters = {'rfc', 'RFC'}, link = 'Request for Comments', redirect = 'RFC (identifier)', q = 'Q212971', label = 'RFC', prefix = 'https://tools.ietf.org/html/rfc', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', id_limit = 9300, access = 'free', -- free to read }, ['SBN'] = { parameters = {'sbn', 'SBN'}, link = 'Standard Book Number', -- redirect to International_Standard_Book_Number#History redirect = 'SBN (identifier)', label = 'SBN', prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn COinS = nil, -- nil because we can't use pre or rft or info: separator = '&nbsp;', }, ['SSRN'] = { parameters = {'ssrn', 'SSRN'}, link = 'Social Science Research Network', redirect = 'SSRN (identifier)', q = 'Q7550801', label = 'SSRN', prefix = 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 4600000, custom_access = 'ssrn-access', }, ['S2CID'] = { parameters = {'s2cid', 'S2CID'}, link = 'Semantic Scholar', redirect = 'S2CID (identifier)', q = 'Q22908627', label = 'S2CID', prefix = 'https://api.semanticscholar.org/CorpusID:', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', id_limit = 266000000, custom_access = 's2cid-access', }, ['USENETID'] = { parameters = {'message-id'}, link = 'Usenet', redirect = 'Usenet (identifier)', q = 'Q193162', label = 'Usenet:', prefix = 'news:', encode = false, COinS = 'pre', -- use prefix value separator = '&nbsp;', }, ['ZBL'] = { parameters = {'zbl', 'ZBL' }, link = 'Zentralblatt MATH', redirect = 'Zbl (identifier)', q = 'Q190269', label = 'Zbl', prefix = 'https://zbmath.org/?format=complete&q=an:', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, } --[[--------------------------< E X P O R T S >--------------------------------- ]] return { use_identifier_redirects = use_identifier_redirects, -- booleans defined in the settings at the top of this module local_lang_cat_enable = local_lang_cat_enable, date_name_auto_xlate_enable = date_name_auto_xlate_enable, date_digit_auto_xlate_enable = date_digit_auto_xlate_enable, -- tables and variables created when this module is loaded global_df = get_date_format (), -- this line can be replaced with "global_df = 'dmy-all'," to have all dates auto translated to dmy format. global_cs1_config_t = global_cs1_config_t, -- global settings from {{cs1 config}} punct_skip = build_skip_table (punct_skip, punct_meta_params), url_skip = build_skip_table (url_skip, url_meta_params), aliases = aliases, special_case_translation = special_case_translation, date_names = date_names, err_msg_supl = err_msg_supl, error_conditions = error_conditions, editor_markup_patterns = editor_markup_patterns, et_al_patterns = et_al_patterns, id_handlers = id_handlers, keywords_lists = keywords_lists, keywords_xlate = keywords_xlate, stripmarkers = stripmarkers, invisible_chars = invisible_chars, invisible_defs = invisible_defs, indic_script = indic_script, emoji_t = emoji_t, maint_cats = maint_cats, messages = messages, presentation = presentation, prop_cats = prop_cats, script_lang_codes = script_lang_codes, lang_tag_remap = lang_tag_remap, lang_name_remap = lang_name_remap, this_wiki_code = this_wiki_code, title_types = title_types, uncategorized_namespaces = uncategorized_namespaces_t, uncategorized_subpages = uncategorized_subpages, templates_using_volume = templates_using_volume, templates_using_issue = templates_using_issue, templates_not_using_page = templates_not_using_page, vol_iss_pg_patterns = vol_iss_pg_patterns, single_letter_2nd_lvl_domains_t = single_letter_2nd_lvl_domains_t, inter_wiki_map = inter_wiki_map, mw_languages_by_tag_t = mw_languages_by_tag_t, mw_languages_by_name_t = mw_languages_by_name_t, citation_class_map_t = citation_class_map_t, citation_issue_t = citation_issue_t, citation_no_volume_t = citation_no_volume_t, } 3e2dde0333a73a0a39271b2bb53463ec90587d77 3070 3069 2023-11-09T18:00:46Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Citation/CS1/Configuration]] Scribunto text/plain local lang_obj = mw.language.getContentLanguage(); -- make a language object for the local language; used here for languages and dates --[[--------------------------< S E T T I N G S >-------------------------------------------------------------- boolean settings used to control various things. these setting located here to make them easy to find ]] -- these settings local to this module only local local_digits_from_mediawiki = false; -- for i18n; when true, module fills date_names['local_digits'] from MediaWiki; manual fill required else; always false at en.wiki local local_date_names_from_mediawiki = false; -- for i18n; when true, module fills date_names['local']['long'] and date_names['local']['short'] from MediaWiki; -- manual translation required else; ; always false at en.wiki -- these settings exported to other modules local use_identifier_redirects = true; -- when true use redirect name for identifier label links; always true at en.wiki local local_lang_cat_enable = false; -- when true categorizes pages where |language=<local wiki's language>; always false at en.wiki local date_name_auto_xlate_enable = false; -- when true translates English month-names to the local-wiki's language month names; always false at en.wiki local date_digit_auto_xlate_enable = false; -- when true translates Western date digit to the local-wiki's language digits (date_names['local_digits']); always false at en.wiki --[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------ List of namespaces identifiers for namespaces that will not be included in citation error categories. Same as setting notracking = true by default. For wikis that have a current version of Module:cs1 documentation support, this #invoke will return an unordered list of namespace names and their associated identifiers: {{#invoke:cs1 documentation support|uncategorized_namespace_lister|all=<anything>}} ]] uncategorized_namespaces_t = {[2]=true}; -- init with user namespace id for k, _ in pairs (mw.site.talkNamespaces) do -- add all talk namespace ids uncategorized_namespaces_t[k] = true; end local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases', '/[^/]*[Ll]og', '/[Aa]rchive'}; -- list of Lua patterns found in page names of pages we should not categorize --[[--------------------------< M E S S A G E S >-------------------------------------------------------------- Translation table The following contains fixed text that may be output as part of a citation. This is separated from the main body to aid in future translations of this module. ]] local messages = { ['agency'] = '$1 $2', -- $1 is sepc, $2 is agency ['archived-dead'] = 'Archived from $1 on $2', ['archived-live'] = '$1 from the original on $2', ['archived-unfit'] = 'Archived from the original on ', ['archived'] = 'Archived', ['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword ['cartography'] = 'Cartography by $1', ['editor'] = 'ed.', ['editors'] = 'eds.', ['edition'] = '($1&nbsp;ed.)', ['episode'] = 'Episode $1', ['et al'] = 'et&nbsp;al.', ['in'] = 'In', -- edited works ['inactive'] = 'inactive', ['inset'] = '$1 inset', ['interview'] = 'Interviewed by $1', ['mismatch'] = '<code class="cs1-code">&#124;$1=</code> / <code class="cs1-code">&#124;$2=</code> mismatch', -- $1 is year param name; $2 is date param name ['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]:&nbsp;$1', ['notitle'] = 'No title', -- for |title=(()) and (in the future) |title=none ['original'] = 'the original', ['origdate'] = ' [$1]', ['published'] = ' (published $1)', ['retrieved'] = 'Retrieved $1', ['season'] = 'Season $1', ['section'] = '§&nbsp;$1', ['sections'] = '§§&nbsp;$1', ['series'] = '$1 $2', -- $1 is sepc, $2 is series ['seriesnum'] = 'Series $1', ['translated'] = 'Translated by $1', ['type'] = ' ($1)', -- for titletype ['written'] = 'Written at $1', ['vol'] = '$1 Vol.&nbsp;$2', -- $1 is sepc; bold journal style volume is in presentation{} ['vol-no'] = '$1 Vol.&nbsp;$2, no.&nbsp;$3', -- sepc, volume, issue (alternatively insert $1 after $2, but then we'd also have to change capitalization) ['issue'] = '$1 No.&nbsp;$2', -- $1 is sepc ['art'] = '$1 Art.&nbsp;$2', -- $1 is sepc; for {{cite conference}} only ['vol-art'] = '$1 Vol.&nbsp;$2, art.&nbsp;$3', -- sepc, volume, article-number; for {{cite conference}} only ['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{} ['j-issue'] = ' ($1)', ['j-article-num'] = ' $1', -- TODO: any punctuation here? static text? ['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc ['p-prefix'] = "$1 p.&nbsp;$2", -- $1 is sepc ['pp-prefix'] = "$1 pp.&nbsp;$2", -- $1 is sepc ['j-page(s)'] = ': $1', -- same for page and pages ['sheet'] = '$1 Sheet&nbsp;$2', -- $1 is sepc ['sheets'] = '$1 Sheets&nbsp;$2', -- $1 is sepc ['j-sheet'] = ': Sheet&nbsp;$1', ['j-sheets'] = ': Sheets&nbsp;$1', ['language'] = '(in $1)', ['via'] = " &ndash; via $1", ['event'] = 'Event occurs at', ['minutes'] = 'minutes in', -- Determines the location of the help page ['help page link'] = 'Help:CS1 errors', ['help page label'] = 'help', -- categories ['cat wikilink'] = '[[Category:$1]]', -- $1 is the category name [':cat wikilink'] = '[[:Category:$1|link]]', -- category name as maintenance message wikilink; $1 is the category name -- Internal errors (should only occur if configuration is bad) ['undefined_error'] = 'Called with an undefined error condition', ['unknown_ID_key'] = 'Unrecognized ID key: ', -- an ID key in id_handlers not found in ~/Identifiers func_map{} ['unknown_ID_access'] = 'Unrecognized ID access keyword: ', -- an ID access keyword in id_handlers not found in keywords_lists['id-access']{} ['unknown_argument_map'] = 'Argument map not defined for this variable', ['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty', ['warning_msg_e'] = '<span style="color:#d33">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">&#123;{$1}}</code> templates have errors</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link ['warning_msg_m'] = '<span style="color:#3a3">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">&#123;{$1}}</code> templates have maintenance messages</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link } --[[--------------------------< C I T A T I O N _ C L A S S _ M A P >------------------------------------------ this table maps the value assigned to |CitationClass= in the cs1|2 templates to the canonical template name when the value assigned to |CitationClass= is different from the canonical template name. |CitationClass= values are used as class attributes in the <cite> tag that encloses the citation so these names may not contain spaces while the canonical template name may. These names are used in warning_msg_e and warning_msg_m to create links to the template's documentation when an article is displayed in preview mode. Most cs1|2 template |CitationClass= values at en.wiki match their canonical template names so are not listed here. ]] local citation_class_map_t = { -- TODO: if kept, these and all other config.CitationClass 'names' require some sort of i18n ['arxiv'] = 'arXiv', ['audio-visual'] = 'AV media', ['AV-media-notes'] = 'AV media notes', ['biorxiv'] = 'bioRxiv', ['citeseerx'] = 'CiteSeerX', ['encyclopaedia'] = 'encyclopedia', ['mailinglist'] = 'mailing list', ['medrxiv'] = 'medRxiv', ['pressrelease'] = 'press release', ['ssrn'] = 'SSRN', ['techreport'] = 'tech report', } --[=[-------------------------< E T _ A L _ P A T T E R N S >-------------------------------------------------- This table provides Lua patterns for the phrase "et al" and variants in name text (author, editor, etc.). The main module uses these to identify and emit the 'etal' message. ]=] local et_al_patterns = { "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.;,\"']*$", -- variations on the 'et al' theme "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][AaIi][Ee]?[%.;,\"']*$", -- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match) "[;,]? *%f[%a]and [Oo]thers", -- an alternative to et al. "%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form "%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax) "[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form } --[[--------------------------< P R E S E N T A T I O N >------------------------ Fixed presentation markup. Originally part of citation_config.messages it has been moved into its own, more semantically correct place. ]] local presentation = { -- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display ['hidden-error'] = '<span class="cs1-hidden-error citation-comment">$1</span>', ['visible-error'] = '<span class="cs1-visible-error citation-comment">$1</span>', ['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>', ['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal CSS ['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like ['cite'] = '<cite class="$1">$2</cite>'; -- for use when citation does not have a namelist and |ref= not set so no id="..." attribute ['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when when |ref= is set or when citation has a namelist ['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc. ['interwiki'] = ' <span class="cs1-format">[in $1]</span>', -- for interwiki-language-linked author, editor, etc ['interproj'] = ' <span class="cs1-format">[at $1]</span>', -- for interwiki-project-linked author, editor, etc (:d: and :s: supported; :w: ignored) -- various access levels, for |access=, |doi-access=, |arxiv=, ... -- narrow no-break space &#8239; may work better than nowrap CSS. Or not? Browser support? ['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon ['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css ['registration'] = {class='cs1-lock-registration', title='Free registration required'}, ['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'}, ['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'}, ['interwiki-icon'] = '<span class="$1" title="$2">$3</span>', ['class-wikisource'] = 'cs1-ws-icon', ['italic-title'] = "''$1''", ['kern-left'] = '<span class="cs1-kern-left"></span>$1', -- spacing to use when title contains leading single or double quote mark ['kern-right'] = '$1<span class="cs1-kern-right"></span>', -- spacing to use when title contains trailing single or double quote mark ['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span> ['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space) ['ocins'] = '<span title="$1" class="Z3988"></span>', ['parameter'] = '<code class="cs1-code">&#124;$1=</code>', ['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character ['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string) ['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content ['quoted-title'] = '"$1"', ['sep_cs1'] = '.', -- CS1 element separator ['sep_cs2'] = ',', -- CS2 separator ['sep_nl'] = ';', -- CS1|2 style name-list separator between names is a semicolon ['sep_nl_and'] = ' and ', -- used as last nl sep when |name-list-style=and and list has 2 items ['sep_nl_end'] = '; and ', -- used as last nl sep when |name-list-style=and and list has 3+ names ['sep_name'] = ', ', -- CS1|2 style last/first separator is <comma><space> ['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma ['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space ['sep_list'] = ', ', -- used for |language= when list has 3+ items except for last sep which uses sep_list_end ['sep_list_pair'] = ' and ', -- used for |language= when list has 2 items ['sep_list_end'] = ', and ', -- used as last list sep for |language= when list has 3+ items ['trans-italic-title'] = "&#91;''$1''&#93;", ['trans-quoted-title'] = "&#91;$1&#93;", -- for |trans-title= and |trans-quote= ['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{} } --[[--------------------------< A L I A S E S >--------------------------------- Aliases table for commonly passed parameters. Parameter names on the right side in the assignments in this table must have been defined in the Whitelist before they will be recognized as valid parameter names ]] local aliases = { ['AccessDate'] = {'access-date', 'accessdate'}, -- Used by InternetArchiveBot ['Agency'] = 'agency', ['ArchiveDate'] = {'archive-date', 'archivedate'}, -- Used by InternetArchiveBot ['ArchiveFormat'] = 'archive-format', ['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- Used by InternetArchiveBot ['ArticleNumber'] = 'article-number', ['ASINTLD'] = 'asin-tld', ['At'] = 'at', -- Used by InternetArchiveBot ['Authors'] = {'authors', 'people', 'credits'}, ['BookTitle'] = {'book-title', 'booktitle'}, ['Cartography'] = 'cartography', ['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'}, ['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format', 'article-format', 'section-format'}; ['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl'}, -- Used by InternetArchiveBot ['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access', 'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot ['Class'] = 'class', -- cite arxiv and arxiv identifier ['Collaboration'] = 'collaboration', ['Conference'] = {'conference', 'event'}, ['ConferenceFormat'] = 'conference-format', ['ConferenceURL'] = 'conference-url', -- Used by InternetArchiveBot ['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only ['Degree'] = 'degree', ['DF'] = 'df', ['DisplayAuthors'] = {'display-authors', 'display-subjects'}, ['DisplayContributors'] = 'display-contributors', ['DisplayEditors'] = 'display-editors', ['DisplayInterviewers'] = 'display-interviewers', ['DisplayTranslators'] = 'display-translators', ['Docket'] = 'docket', ['DoiBroken'] = 'doi-broken-date', ['Edition'] = 'edition', ['Embargo'] = 'pmc-embargo-date', ['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only ['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode? ['Format'] = 'format', ['ID'] = {'id', 'ID'}, ['Inset'] = 'inset', ['Issue'] = {'issue', 'number'}, ['Language'] = {'language', 'lang'}, ['MailingList'] = {'mailing-list', 'mailinglist'}, -- cite mailing list only ['Map'] = 'map', -- cite map only ['MapFormat'] = 'map-format', -- cite map only ['MapURL'] = {'map-url', 'mapurl'}, -- cite map only -- Used by InternetArchiveBot ['MapUrlAccess'] = 'map-url-access', -- cite map only -- Used by InternetArchiveBot ['Minutes'] = 'minutes', ['Mode'] = 'mode', ['NameListStyle'] = 'name-list-style', ['Network'] = 'network', ['Newsgroup'] = 'newsgroup', -- cite newsgroup only ['NoPP'] = {'no-pp', 'nopp'}, ['NoTracking'] = {'no-tracking', 'template-doc-demo'}, ['Number'] = 'number', -- this case only for cite techreport ['OrigDate'] = {'orig-date', 'orig-year', 'origyear'}, ['Others'] = 'others', ['Page'] = {'page', 'p'}, -- Used by InternetArchiveBot ['Pages'] = {'pages', 'pp'}, -- Used by InternetArchiveBot ['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work'}, ['Place'] = {'place', 'location'}, ['PostScript'] = 'postscript', ['PublicationDate'] = {'publication-date', 'publicationdate'}, ['PublicationPlace'] = {'publication-place', 'publicationplace'}, ['PublisherName'] = {'publisher', 'institution'}, ['Quote'] = {'quote', 'quotation'}, ['QuotePage'] = 'quote-page', ['QuotePages'] = 'quote-pages', ['Ref'] = 'ref', ['Scale'] = 'scale', ['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry', 'script-article', 'script-section'}, ['ScriptMap'] = 'script-map', ['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-website', 'script-work'}, ['ScriptQuote'] = 'script-quote', ['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot ['Season'] = 'season', ['Sections'] = 'sections', -- cite map only ['Series'] = {'series', 'version'}, ['SeriesLink'] = {'series-link', 'serieslink'}, ['SeriesNumber'] = {'series-number', 'series-no'}, ['Sheet'] = 'sheet', -- cite map only ['Sheets'] = 'sheets', -- cite map only ['Station'] = 'station', ['Time'] = 'time', ['TimeCaption'] = 'time-caption', ['Title'] = 'title', -- Used by InternetArchiveBot ['TitleLink'] = {'title-link', 'episode-link', 'episodelink'}, -- Used by InternetArchiveBot ['TitleNote'] = {'title-note', 'department'}, ['TitleType'] = {'type', 'medium'}, ['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution', 'trans-entry', 'trans-section'}, ['Transcript'] = 'transcript', ['TranscriptFormat'] = 'transcript-format', ['TranscriptURL'] = 'transcript-url', -- Used by InternetArchiveBot ['TransMap'] = 'trans-map', -- cite map only ['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper', 'trans-periodical', 'trans-website', 'trans-work'}, ['TransQuote'] = 'trans-quote', ['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot ['URL'] = {'url', 'URL'}, -- Used by InternetArchiveBot ['UrlAccess'] = 'url-access', -- Used by InternetArchiveBot ['UrlStatus'] = 'url-status', -- Used by InternetArchiveBot ['Vauthors'] = 'vauthors', ['Veditors'] = 'veditors', ['Via'] = 'via', ['Volume'] = 'volume', ['Year'] = 'year', ['AuthorList-First'] = {"first#", "author-first#", "author#-first", "author-given#", "author#-given", "subject-first#", "subject#-first", "subject-given#", "subject#-given", "given#"}, ['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "author-surname#", "author#-surname", "subject-last#", "subject#-last", "subject-surname#", "subject#-surname", "author#", 'host#', "subject#", "surname#"}, ['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#", "subject#-link", "authorlink#", "author#link"}, ['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask"}, ['ContributorList-First'] = {'contributor-first#', 'contributor#-first', 'contributor-given#', 'contributor#-given'}, ['ContributorList-Last'] = {'contributor-last#', 'contributor#-last', 'contributor-surname#', 'contributor#-surname', 'contributor#'}, ['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'}, ['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'}, ['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"}, ['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#", "editor#-surname", "editor#"}, ['EditorList-Link'] = {"editor-link#", "editor#-link"}, ['EditorList-Mask'] = {"editor-mask#", "editor#-mask"}, ['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first', 'interviewer-given#', 'interviewer#-given'}, ['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last', 'interviewer-surname#', 'interviewer#-surname', 'interviewer#'}, ['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'}, ['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'}, ['TranslatorList-First'] = {'translator-first#', 'translator#-first', 'translator-given#', 'translator#-given'}, ['TranslatorList-Last'] = {'translator-last#', 'translator#-last', 'translator-surname#', 'translator#-surname', 'translator#'}, ['TranslatorList-Link'] = {'translator-link#', 'translator#-link'}, ['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'}, } --[[--------------------------< P U N C T _ S K I P >--------------------------- builds a table of parameter names that the extraneous terminal punctuation check should not check. ]] local punct_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value 'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters 'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators 'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous 'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'MapURL', 'TranscriptURL', 'URL', -- URL-holding parameters } local url_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value 'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'ID', 'MapURL', 'TranscriptURL', 'URL', -- parameters allowed to hold urls 'Page', 'Pages', 'At', 'QuotePage', 'QuotePages', -- insource locators allowed to hold urls } local function build_skip_table (skip_t, meta_params) for _, meta_param in ipairs (meta_params) do -- for each meta parameter key local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name if 'string' == type (params) then skip_t[params] = 1; -- just a single parameter else for _, param in ipairs (params) do -- get the parameter name skip_t[param] = 1; -- add the parameter name to the skip table local count; param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters if 0 ~= count then -- if removed skip_t[param] = 1; -- add param name without enumerator marker end end end end return skip_t; end local punct_skip = {}; local url_skip = {}; --[[--------------------------< S I N G L E - L E T T E R S E C O N D - L E V E L D O M A I N S >---------- this is a list of tlds that are known to have single-letter second-level domain names. This list does not include ccTLDs which are accepted in is_domain_name(). ]] local single_letter_2nd_lvl_domains_t = {'cash', 'company', 'foundation', 'org', 'today'}; --[[-----------< S P E C I A L C A S E T R A N S L A T I O N S >------------ This table is primarily here to support internationalization. Translations in this table are used, for example, when an error message, category name, etc., is extracted from the English alias key. There may be other cases where this translation table may be useful. ]] local is_Latn = 'A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143'; local special_case_translation = { ['AuthorList'] = 'authors list', -- used to assemble maintenance category names ['ContributorList'] = 'contributors list', -- translation of these names plus translation of the base maintenance category names in maint_cats{} table below ['EditorList'] = 'editors list', -- must match the names of the actual categories ['InterviewerList'] = 'interviewers list', -- this group or translations used by name_has_ed_markup() and name_has_mult_names() ['TranslatorList'] = 'translators list', -- Lua patterns to match pseudo-titles used by InternetArchiveBot and others as placeholder for unknown |title= value ['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title ['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki ['local'] = nil, -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language }, -- Lua patterns to match generic titles; usually created by bots or reference filling tools -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language -- generic titles and patterns in this table should be lowercase only -- leave ['local'] nil except when there is a matching generic title in your language -- boolean 'true' for plain-text searches; 'false' for pattern searches ['generic_titles'] = { ['accept'] = { }, ['reject'] = { {['en'] = {'^wayback%s+machine$', false}, ['local'] = nil}, {['en'] = {'are you a robot', true}, ['local'] = nil}, {['en'] = {'hugedomains.com', true}, ['local'] = nil}, {['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil}, {['en'] = {'page not found', true}, ['local'] = nil}, {['en'] = {'subscribe to read', true}, ['local'] = nil}, {['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil}, {['en'] = {'website is for sale', true}, ['local'] = nil}, {['en'] = {'^404', false}, ['local'] = nil}, {['en'] = {'internet archive wayback machine', true}, ['local'] = nil}, {['en'] = {'log into facebook', true}, ['local'] = nil}, {['en'] = {'login • instagram', true}, ['local'] = nil}, {['en'] = {'redirecting...', true}, ['local'] = nil}, {['en'] = {'usurped title', true}, ['local'] = nil}, -- added by a GreenC bot {['en'] = {'webcite query result', true}, ['local'] = nil}, {['en'] = {'wikiwix\'s cache', true}, ['local'] = nil}, } }, -- boolean 'true' for plain-text searches, search string must be lowercase only -- boolean 'false' for pattern searches -- leave ['local'] nil except when there is a matching generic name in your language ['generic_names'] = { ['accept'] = { {['en'] = {'%[%[[^|]*%(author%) *|[^%]]*%]%]', false}, ['local'] = nil}, }, ['reject'] = { {['en'] = {'about us', true}, ['local'] = nil}, {['en'] = {'%f[%a][Aa]dvisor%f[%A]', false}, ['local'] = nil}, {['en'] = {'allmusic', true}, ['local'] = nil}, {['en'] = {'%f[%a][Aa]uthor%f[%A]', false}, ['local'] = nil}, {['en'] = {'business', true}, ['local'] = nil}, {['en'] = {'cnn', true}, ['local'] = nil}, {['en'] = {'collaborator', true}, ['local'] = nil}, {['en'] = {'contributor', true}, ['local'] = nil}, {['en'] = {'contact us', true}, ['local'] = nil}, {['en'] = {'directory', true}, ['local'] = nil}, {['en'] = {'%f[%(%[][%(%[]%s*eds?%.?%s*[%)%]]?$', false}, ['local'] = nil}, {['en'] = {'[,%.%s]%f[e]eds?%.?$', false}, ['local'] = nil}, {['en'] = {'^eds?[%.,;]', false}, ['local'] = nil}, {['en'] = {'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', false}, ['local'] = nil}, {['en'] = {'%f[%a][Ee]dited%f[%A]', false}, ['local'] = nil}, {['en'] = {'%f[%a][Ee]ditors?%f[%A]', false}, ['local'] = nil}, {['en'] = {'%f[%a]]Ee]mail%f[%A]', false}, ['local'] = nil}, {['en'] = {'facebook', true}, ['local'] = nil}, {['en'] = {'google', true}, ['local'] = nil}, {['en'] = {'home page', true}, ['local'] = nil}, {['en'] = {'^[Ii]nc%.?$', false}, ['local'] = nil}, {['en'] = {'instagram', true}, ['local'] = nil}, {['en'] = {'interviewer', true}, ['local'] = nil}, {['en'] = {'linkedIn', true}, ['local'] = nil}, {['en'] = {'^[Nn]ews$', false}, ['local'] = nil}, {['en'] = {'pinterest', true}, ['local'] = nil}, {['en'] = {'policy', true}, ['local'] = nil}, {['en'] = {'privacy', true}, ['local'] = nil}, {['en'] = {'reuters', true}, ['local'] = nil}, {['en'] = {'translator', true}, ['local'] = nil}, {['en'] = {'tumblr', true}, ['local'] = nil}, {['en'] = {'twitter', true}, ['local'] = nil}, {['en'] = {'site name', true}, ['local'] = nil}, {['en'] = {'statement', true}, ['local'] = nil}, {['en'] = {'submitted', true}, ['local'] = nil}, {['en'] = {'super.?user', false}, ['local'] = nil}, {['en'] = {'%f['..is_Latn..'][Uu]ser%f[^'..is_Latn..']', false}, ['local'] = nil}, {['en'] = {'verfasser', true}, ['local'] = nil}, } } } --[[--------------------------< D A T E _ N A M E S >---------------------------------------------------------- This table of tables lists local language date names and fallback English date names. The code in Date_validation will look first in the local table for valid date names. If date names are not found in the local table, the code will look in the English table. Because citations can be copied to the local wiki from en.wiki, the English is required when the date-name translation function date_name_xlate() is used. In these tables, season numbering is defined by Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. CS1|2 only supports generic seasons. EDTF does support the distinction between north and south hemisphere seasons but CS1|2 has no way to make that distinction. 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) The standard does not address 'named' dates so, for the purposes of CS1|2, Easter and Christmas are defined here as 98 and 99, which should be out of the ISO 8601 (EDTF) range of uses for a while. local_date_names_from_mediawiki is a boolean. When set to: true – module will fetch local month names from MediaWiki for both date_names['local']['long'] and date_names['local']['short'] false – module will *not* fetch local month names from MediaWiki Caveat lector: There is no guarantee that MediaWiki will provide short month names. At your wiki you can test the results of the MediaWiki fetch in the debug console with this command (the result is alpha sorted): =mw.dumpObject (p.date_names['local']) While the module can fetch month names from MediaWiki, it cannot fetch the quarter, season, and named date names from MediaWiki. Those must be translated manually. ]] local local_date_names_from_mediawiki = true; -- when false, manual translation required for date_names['local']['long'] and date_names['local']['short'] -- when true, module fetches long and short month names from MediaWiki local date_names = { ['en'] = { -- English ['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12}, ['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12}, ['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36}, ['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23}, ['named'] = {['Easter'] = 98, ['Christmas'] = 99}, }, -- when local_date_names_from_mediawiki = false ['local'] = { -- replace these English date names with the local language equivalents ['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12}, ['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12}, ['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36}, ['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23}, ['named'] = {['Easter'] = 98, ['Christmas'] = 99}, }, ['inv_local_long'] = {}, -- used in date reformatting & translation; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc. ['inv_local_short'] = {}, -- used in date reformatting & translation; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc. ['inv_local_quarter'] = {}, -- used in date translation; copy of date_names['local'].quarter where k/v are inverted: [1]='<local name>' etc. ['inv_local_season'] = {}, -- used in date translation; copy of date_names['local'].season where k/v are inverted: [1]='<local name>' etc. ['inv_local_named'] = {}, -- used in date translation; copy of date_names['local'].named where k/v are inverted: [1]='<local name>' etc. ['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9 ['xlate_digits'] = {}, } if local_date_names_from_mediawiki then -- if fetching local month names from MediaWiki is enabled local long_t = {}; local short_t = {}; for i=1, 12 do -- loop 12x and local name = lang_obj:formatDate('F', '2022-' .. i .. '-1'); -- get long month name for each i long_t[name] = i; -- save it name = lang_obj:formatDate('M', '2022-' .. i .. '-1'); -- get short month name for each i short_t[name] = i; -- save it end date_names['local']['long'] = long_t; -- write the long table – overwrites manual translation date_names['local']['short'] = short_t; -- write the short table – overwrites manual translation end -- create inverted date-name tables for reformatting and/or translation for _, invert_t in pairs {{'long', 'inv_local_long'}, {'short', 'inv_local_short'}, {'quarter', 'inv_local_quarter'}, {'season', 'inv_local_season'}, {'named', 'inv_local_named'}} do for name, i in pairs (date_names['local'][invert_t[1]]) do -- this table is ['name'] = i date_names[invert_t[2]][i] = name; -- invert to get [i] = 'name' for conversions from ymd end end if local_digits_from_mediawiki then -- if fetching local digits from MediaWiki is enabled local digits_t = {}; for i=0, 9 do -- loop 10x and digits_t [lang_obj:formatNum (i)] = tostring (i); -- format the loop indexer as local lang table index and assign loop indexer (a string) as the value end date_names['local_digits'] = digits_t; end for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value end local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}} '{{ *[Uu]se +(dmy) +dates *[|}]', -- 1159k -- sorted by approximate transclusion count '{{ *[Uu]se +(mdy) +dates *[|}]', -- 212k '{{ *[Uu]se +(MDY) +dates *[|}]', -- 788 '{{ *[Uu]se +(DMY) +dates *[|}]', -- 343 '{{ *([Mm]dy) *[|}]', -- 176 '{{ *[Uu]se *(dmy) *[|}]', -- 156 + 18 '{{ *[Uu]se *(mdy) *[|}]', -- 149 + 11 '{{ *([Dd]my) *[|}]', -- 56 '{{ *[Uu]se +(MDY) *[|}]', -- 5 '{{ *([Dd]MY) *[|}]', -- 3 '{{ *[Uu]se(mdy)dates *[|}]', -- 1 '{{ *[Uu]se +(DMY) *[|}]', -- 0 '{{ *([Mm]DY) *[|}]', -- 0 } local title_object = mw.title.getCurrentTitle(); local content; -- done this way so that unused templates appear in unused-template-reports; self-transcluded makes them look like they are used if 10 ~= title_object.namespace then -- all namespaces except Template content = title_object:getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625 end local function get_date_format () -- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports; if not content then -- nil content when we're in template return nil; -- auto-formatting does not work in Template space so don't set global_df end for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format if match then local use_dates_template = content:match ('%b{}', start); -- get the whole template if use_dates_template:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length return match:lower() .. '-' .. use_dates_template:match ('| *cs1%-dates *= *([lsy][sy]?)'); else return match:lower() .. '-all'; -- no |cs1-dates= k/v pair; return value appropriate for use in |df= end end end end local global_df; -- TODO: add this to <global_cs1_config_t>? --[[-----------------< V O L U M E , I S S U E , P A G E S >------------------ These tables hold cite class values (from the template invocation) and identify those templates that support |volume=, |issue=, and |page(s)= parameters. Cite conference and cite map require further qualification which is handled in the main module. ]] local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'} local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'} local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'} --[[ These tables control when it is appropriate for {{citation}} to render |volume= and/or |issue=. The parameter names in the tables constrain {{citation}} so that its renderings match the renderings of the equivalent cs1 templates. For example, {{cite web}} does not support |volume= so the equivalent {{citation |website=...}} must not support |volume=. ]] local citation_no_volume_t = { -- {{citation}} does not render |volume= when these parameters are used 'website', 'mailinglist', 'script-website', } local citation_issue_t = { -- {{citation}} may render |issue= when these parameters are used 'journal', 'magazine', 'newspaper', 'periodical', 'work', 'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work', } --[[ Patterns for finding extra text in |volume=, |issue=, |page=, |pages= ]] local vol_iss_pg_patterns = { good_ppattern = '^P[^%.PpGg]', -- OK to begin with uppercase P: P7 (page 7 of section P), but not p123 (page 123); TODO: this allows 'Pages' which it should not bad_ppatterns = { -- patterns for |page= and |pages= '^[Pp][PpGg]?%.?[ %d]', '^[Pp][Pp]?%.&nbsp;', -- from {{p.}} and {{pp.}} templates '^[Pp]ages?', '^[Pp]gs.?', }, vpatterns = { -- patterns for |volume= '^volumes?', '^vols?[%.:=]?' }, ipatterns = { -- patterns for |issue= '^issues?', '^iss[%.:=]?', '^numbers?', '^nos?%A', -- don't match 'november' or 'nostradamus' '^nr[%.:=]?', '^n[%.:= ]' -- might be a valid issue without separator (space char is sep char here) } } --[[--------------------------< K E Y W O R D S >------------------------------- These tables hold keywords for those parameters that have defined sets of acceptable keywords. ]] --[[-------------------< K E Y W O R D S T A B L E >-------------------------- this is a list of keywords; each key in the list is associated with a table of synonymous keywords possibly from different languages. for I18N: add local-language keywords to value table; do not change the key. For example, adding the German keyword 'ja': ['affirmative'] = {'yes', 'true', 'y', 'ja'}, Because CS1|2 templates from en.wiki articles are often copied to other local wikis, it is recommended that the English keywords remain in these tables. ]] local keywords = { ['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style= ['and'] = {'and', 'serial'}, -- |name-list-style= ['affirmative'] = {'yes', 'true', 'y'}, -- |no-tracking=, |no-pp= -- Used by InternetArchiveBot ['afterword'] = {'afterword'}, -- |contribution= ['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot ['cs1'] = {'cs1'}, -- |mode= ['cs2'] = {'cs2'}, -- |mode= ['dead'] = {'dead', 'deviated'}, -- |url-status= -- Used by InternetArchiveBot ['dmy'] = {'dmy'}, -- |df= ['dmy-all'] = {'dmy-all'}, -- |df= ['foreword'] = {'foreword'}, -- |contribution= ['free'] = {'free'}, -- |<id>-access= -- Used by InternetArchiveBot ['harv'] = {'harv'}, -- |ref=; this no longer supported; is_valid_parameter_value() called with <invert> = true ['introduction'] = {'introduction'}, -- |contribution= ['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot ['live'] = {'live'}, -- |url-status= -- Used by InternetArchiveBot ['mdy'] = {'mdy'}, -- |df= ['mdy-all'] = {'mdy-all'}, -- |df= ['none'] = {'none'}, -- |postscript=, |ref=, |title=, |type= -- Used by InternetArchiveBot ['off'] = {'off'}, -- |title= (potentially also: |title-link=, |postscript=, |ref=, |type=) ['preface'] = {'preface'}, -- |contribution= ['registration'] = {'registration'}, -- |url-access= -- Used by InternetArchiveBot ['subscription'] = {'subscription'}, -- |url-access= -- Used by InternetArchiveBot ['unfit'] = {'unfit'}, -- |url-status= -- Used by InternetArchiveBot ['usurped'] = {'usurped'}, -- |url-status= -- Used by InternetArchiveBot ['vanc'] = {'vanc'}, -- |name-list-style= ['ymd'] = {'ymd'}, -- |df= ['ymd-all'] = {'ymd-all'}, -- |df= -- ['yMd'] = {'yMd'}, -- |df=; not supported at en.wiki -- ['yMd-all'] = {'yMd-all'}, -- |df=; not supported at en.wiki } --[[------------------------< X L A T E _ K E Y W O R D S >--------------------- this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{} become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}: ['affirmative'] = {'yes', 'true', 'y'}, -- in keywords{} becomes ['yes'] = 'affirmative', -- in keywords_xlate{} ['true'] = 'affirmative', ['y'] = 'affirmative', the purpose of this function is to act as a translator between a non-English keyword and its English equivalent that may be used in other modules of this suite ]] local function xlate_keywords () local out_table = {}; -- output goes here for k, keywords_t in pairs (keywords) do -- spin through the keywords table for _, keyword in ipairs (keywords_t) do -- for each keyword out_table[keyword] = k; -- create an entry in the output table where keyword is the key end end return out_table; end local keywords_xlate = xlate_keywords (); -- the list of translated keywords --[[----------------< M A K E _ K E Y W O R D S _ L I S T >--------------------- this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter. keywords_lists{}, is a table of tables from keywords{} ]] local function make_keywords_list (keywords_lists) local out_table = {}; -- output goes here for _, keyword_list in ipairs (keywords_lists) do -- spin through keywords_lists{} and get a table of keywords for _, keyword in ipairs (keyword_list) do -- spin through keyword_list{} and add each keyword, ... table.insert (out_table, keyword); -- ... as plain text, to the output list end end return out_table; end --[[----------------< K E Y W O R D S _ L I S T S >----------------------------- this is a list of lists of valid keywords for the various parameters in [key]. Generally the keys in this table are the canonical en.wiki parameter names though some are contrived because of use in multiple differently named parameters: ['yes_true_y'], ['id-access']. The function make_keywords_list() extracts the individual keywords from the appropriate list in keywords{}. The lists in this table are used to validate the keyword assignment for the parameters named in this table's keys. ]] local keywords_lists = { ['yes_true_y'] = make_keywords_list ({keywords.affirmative}), ['contribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}), ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all']}), -- ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all'], keywords.yMd, keywords['yMd-all']}), -- not supported at en.wiki ['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}), ['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}), ['ref'] = make_keywords_list ({keywords.harv}), -- inverted check; |ref=harv no longer supported ['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}), ['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}), ['id-access'] = make_keywords_list ({keywords.free}), } --[[--------------------------< C S 1 _ C O N F I G _ G E T >-------------------------------------------------- fetch and validate values from {{cs1 config}} template to fill <global_cs1_config_t> no error messages; when errors are detected, the parameter value from {{cs1 config}} is blanked. Supports all parameters and aliases associated with the metaparameters: DisplayAuthors, DisplayContributors, DisplayEditors, DisplayInterviewers, DisplayTranslators, NameListStyle, and Mode. The DisplayWhatever metaparameters accept numeric values only (|display-authors=etal and the like is not supported). ]] local global_cs1_config_t = {}; -- TODO: add value returned from get_date_format() to this table? local function get_cs1_config () -- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports; if not content then -- nil content when we're in template return nil; -- auto-formatting does not work in Template space so don't set global_df end local start = content:find('{{ *[Cc][Ss]1 config *[|}]'); -- <start> is offset into <content> when {{cs1 config}} found; nil else if start then local cs1_config_template = content:match ('%b{}', start); -- get the whole template if not cs1_config_template then return nil; end local params_t = mw.text.split (cs1_config_template:gsub ('^{{%s*', ''):gsub ('%s*}}$', ''), '%s*|%s*'); -- remove '{{' and '}}'; make a sequence of parameter/value pairs (split on the pipe) table.remove (params_t, 1); -- remove the template name because it isn't a parameter/value pair local config_meta_params_t = {'DisplayAuthors', 'DisplayContributors', 'DisplayEditors', 'DisplayInterviewers', 'DisplayTranslators', 'NameListStyle', 'Mode'}; local meta_param_map_t = {}; -- list of accepted parameter names usable in {{cs1 config}} goes here for _, meta_param in ipairs (config_meta_params_t) do -- for i18n using <config_meta_params_t>, map template parameter names to their metaparameter equivalents if 'table' == type (aliases[meta_param]) then -- if <meta_param> is a sequence, for _, param in ipairs (aliases[meta_param]) do -- extract its contents meta_param_map_t[param] = meta_param; -- and add to <meta_param_map_t> end else meta_param_map_t[aliases[meta_param]] = meta_param; -- not a sequence so just add the parameter to <meta_param_map_t> end end local keywords_t = {}; -- map valid keywords to their associate metaparameter; reverse form of <keyword_lists[key] for these metaparameters for _, metaparam_t in ipairs ({{'NameListStyle', 'name-list-style'}, {'Mode', 'mode'}}) do -- only these metaparameter / keywords_lists key pairs for _, keyword in ipairs (keywords_lists[metaparam_t[2]]) do -- spin through the list of keywords keywords_t[keyword] = metaparam_t[1]; -- add [keyword] = metaparameter to the map end end for _, param in ipairs (params_t) do -- spin through the {{cs1 config}} parameters and fill <global_cs1_config_t> local k, v = param:match ('([^=]-)%s*=%s*(.+)'); -- <k> is the parameter name; <v> is parameter's assigned value if k then if k:find ('^display') then -- if <k> is one of the |display-<namelist>= parameters if v:match ('%d+') then -- the assigned value must be digits; doesn't accept 'etal' global_cs1_config_t[meta_param_map_t[k]]=v; -- add the display param and its value to globals table end else if keywords_t[v] == meta_param_map_t[k] then -- keywords_t[v] returns nil or the metaparam name; these must be the same global_cs1_config_t[meta_param_map_t[k]]=v; -- add the parameter and its value to globals table end end end end end end get_cs1_config (); -- fill <global_cs1_config_t> --[[---------------------< S T R I P M A R K E R S >---------------------------- Common pattern definition location for stripmarkers so that we don't have to go hunting for them if (when) MediaWiki changes their form. ]] local stripmarkers = { ['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker ['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker() } --[[------------< I N V I S I B L E _ C H A R A C T E R S >--------------------- This table holds non-printing or invisible characters indexed either by name or by Unicode group. Values are decimal representations of UTF-8 codes. The table is organized as a table of tables because the Lua pairs keyword returns table data in an arbitrary order. Here, we want to process the table from top to bottom because the entries at the top of the table are also found in the ranges specified by the entries at the bottom of the table. Also here is a pattern that recognizes stripmarkers that begin and end with the delete characters. The nowiki stripmarker is not an error but some others are because the parameter values that include them become part of the template's metadata before stripmarker replacement. ]] local invisible_defs = { del = '\127', -- used to distinguish between stripmarker and del char zwj = '\226\128\141', -- used with capture because zwj may be allowed } local invisible_chars = { {'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD {'zero width joiner', '('.. invisible_defs.zwj .. ')'}, -- U+200D, E2 80 8D; capture because zwj may be allowed {'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B {'hair space', '\226\128\138'}, -- U+200A, E2 80 8A {'soft hyphen', '\194\173'}, -- U+00AD, C2 AD {'horizontal tab', '\009'}, -- U+0009 (HT), 09 {'line feed', '\010'}, -- U+000A (LF), 0A {'no-break space', '\194\160'}, -- U+00A0 (NBSP), C2 A0 {'carriage return', '\013'}, -- U+000D (CR), 0D {'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type {'delete', '('.. invisible_defs.del .. ')'}, -- U+007F (DEL), 7F; must be done after stripmarker test; capture to distinguish isolated del chars not part of stripmarker {'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D)) {'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F -- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF -- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF -- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD -- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD } --[[ Indic script makes use of zero width joiner as a character modifier so zwj characters must be left in. This pattern covers all of the unicode characters for these languages: Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf plus the not-necessarily Indic scripts for Sinhala and Burmese: Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf the pattern is used by has_invisible_chars() and coins_cleanup() ]] local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]'; -- list of emoji that use a zwj character (U+200D) to combine with another emoji -- from: https://unicode.org/Public/emoji/15.0/emoji-zwj-sequences.txt; version: 15.0; 2022-05-06 -- table created by: [[:en:Module:Make emoji zwj table]] local emoji_t = { -- indexes are decimal forms of the hex values in U+xxxx [9760] = true, -- U+2620 ☠ skull and crossbones [9792] = true, -- U+2640 ♀ female sign [9794] = true, -- U+2642 ♂ male sign [9877] = true, -- U+2695 ⚕ staff of aesculapius [9878] = true, -- U+2696 ⚖ scales [9895] = true, -- U+26A7 ⚧ male with stroke and male and female sign [9992] = true, -- U+2708 ✈ airplane [10052] = true, -- U+2744 ❄ snowflake [10084] = true, -- U+2764 ❤ heavy black heart [11035] = true, -- U+2B1B ⬛ black large square [127752] = true, -- U+1F308 🌈 rainbow [127787] = true, -- U+1F32B 🌫 fog [127806] = true, -- U+1F33E 🌾 ear of rice [127859] = true, -- U+1F373 🍳 cooking [127868] = true, -- U+1F37C 🍼 baby bottle [127876] = true, -- U+1F384 🎄 christmas tree [127891] = true, -- U+1F393 🎓 graduation cap [127908] = true, -- U+1F3A4 🎤 microphone [127912] = true, -- U+1F3A8 🎨 artist palette [127979] = true, -- U+1F3EB 🏫 school [127981] = true, -- U+1F3ED 🏭 factory [128102] = true, -- U+1F466 👦 boy [128103] = true, -- U+1F467 👧 girl [128104] = true, -- U+1F468 👨 man [128105] = true, -- U+1F469 👩 woman [128139] = true, -- U+1F48B 💋 kiss mark [128168] = true, -- U+1F4A8 💨 dash symbol [128171] = true, -- U+1F4AB 💫 dizzy symbol [128187] = true, -- U+1F4BB 💻 personal computer [128188] = true, -- U+1F4BC 💼 brief case [128293] = true, -- U+1F525 🔥 fire [128295] = true, -- U+1F527 🔧 wrench [128300] = true, -- U+1F52C 🔬 microscope [128488] = true, -- U+1F5E8 🗨 left speech bubble [128640] = true, -- U+1F680 🚀 rocket [128658] = true, -- U+1F692 🚒 fire engine [129309] = true, -- U+1F91D 🤝 handshake [129455] = true, -- U+1F9AF 🦯 probing cane [129456] = true, -- U+1F9B0 🦰 emoji component red hair [129457] = true, -- U+1F9B1 🦱 emoji component curly hair [129458] = true, -- U+1F9B2 🦲 emoji component bald [129459] = true, -- U+1F9B3 🦳 emoji component white hair [129466] = true, -- U+1F9BA 🦺 safety vest [129468] = true, -- U+1F9BC 🦼 motorized wheelchair [129469] = true, -- U+1F9BD 🦽 manual wheelchair [129489] = true, -- U+1F9D1 🧑 adult [129657] = true, -- U+1FA79 🩹 adhesive bandage [129778] = true, -- U+1FAF2 🫲 leftwards hand } --[[----------------------< L A N G U A G E S U P P O R T >------------------- These tables and constants support various language-specific functionality. ]] --local this_wiki_code = mw.getContentLanguage():getCode(); -- get this wiki's language code local this_wiki_code = lang_obj:getCode(); -- get this wiki's language code if string.match (mw.site.server, 'wikidata') then this_wiki_code = mw.getCurrentFrame():callParserFunction('int', {'lang'}); -- on Wikidata so use interface language setting instead end local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a table of language tag/name pairs known to Wikimedia; used for interwiki tests local mw_languages_by_name_t = {}; for k, v in pairs (mw_languages_by_tag_t) do -- build a 'reversed' table name/tag language pairs know to MediaWiki; used for |language= v = mw.ustring.lower (v); -- lowercase for tag fetch; get name's proper case from mw_languages_by_tag_t[<tag>] if mw_languages_by_name_t[v] then -- when name already in the table if 2 == #k or 3 == #k then -- if tag does not have subtags mw_languages_by_name_t[v] = k; -- prefer the shortest tag for this name end else -- here when name not in the table mw_languages_by_name_t[v] = k; -- so add name and matching tag end end local inter_wiki_map = {}; -- map of interwiki prefixes that are language-code prefixes for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base interwiki map (limited to local) if mw_languages_by_tag_t[v["prefix"]] then -- if the prefix matches a known language tag inter_wiki_map[v["prefix"]] = true; -- add it to our local map end end --[[--------------------< S C R I P T _ L A N G _ C O D E S >------------------- This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character language codes that apply only to |script-title= and |script-chapter= ]] local script_lang_codes = { 'ab', 'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu', 'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo', 'mk', 'ml', 'mn', 'mni', 'mr', 'my', 'ne', 'or', 'ota', 'pa', 'ps', 'ru', 'sd', 'si', 'sr', 'syc', 'ta', 'te', 'tg', 'th', 'ti', 'tt', 'ug', 'uk', 'ur', 'uz', 'yi', 'yue', 'zh' }; --[[---------------< L A N G U A G E R E M A P P I N G >---------------------- These tables hold language information that is different (correct) from MediaWiki's definitions For each ['<tag>'] = 'language name' in lang_code_remap{} there must be a matching ['language name'] = {'language name', '<tag>'} in lang_name_remap{} lang_tag_remap{}: key is always lowercase ISO 639-1, -2, -3 language tag or a valid lowercase IETF language tag value is properly spelled and capitalized language name associated with <tag> only one language name per <tag>; key/value pair must have matching entry in lang_name_remap{} lang_name_remap{}: key is always lowercase language name value is a table the holds correctly spelled and capitalized language name [1] and associated tag [2] (tag must match a tag key in lang_tag_remap{}) may have multiple keys referring to a common preferred name and tag; For example: ['kolsch'] and ['kölsch'] both refer to 'Kölsch' and 'ksh' ]] local lang_tag_remap = { -- used for |language= and |script-title= / |script-chapter= ['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch ['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org ['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name ['bn'] = 'Bengali', -- MediaWiki returns Bangla ['ca-valencia'] = 'Valencian', -- IETF variant of Catalan ['fkv'] = 'Kven', -- MediaWiki returns Kvensk ['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name ['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name ['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data ['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data ['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name } local lang_name_remap = { -- used for |language=; names require proper capitalization; tags must be lowercase ['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org ['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap ['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code ['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org ['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found ['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name ['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh ['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name ['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö) ['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name ['kven'] = {'Kven', 'fkv'}, -- Unicode CLDR have decided not to support English language name for these two... ['kvensk'] = {'Kven', 'fkv'}, -- ...they say to refer to IANA registry for English names ['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639 ['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-tw'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese ['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found ['valencian'] = {'Valencian', 'ca-valencia'}, -- variant of Catalan; categorizes as Valencian } --[[---------------< P R O P E R T I E S _ C A T E G O R I E S >---------------- Properties categories. These are used for investigating qualities of citations. ]] local prop_cats = { ['foreign-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code ['foreign-lang-source-2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key ['jul-greg-uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926 ['local-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false ['location-test'] = 'CS1 location test', ['long-vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 characters ['script'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code ['tracked-param'] = 'CS1 tracked parameter: $1', -- $1 is base (enumerators removed) parameter name ['year-range-abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form } --[[-------------------< T I T L E _ T Y P E S >-------------------------------- Here we map a template's CitationClass to TitleType (default values for |type= parameter) ]] local title_types = { ['AV-media-notes'] = 'Media notes', ['document'] = 'Document', ['interview'] = 'Interview', ['mailinglist'] = 'Mailing list', ['map'] = 'Map', ['podcast'] = 'Podcast', ['pressrelease'] = 'Press release', ['report'] = 'Report', ['speech'] = 'Speech', ['techreport'] = 'Technical report', ['thesis'] = 'Thesis', } --[[===================<< E R R O R M E S S A G I N G >>====================== ]] --[[----------< E R R O R M E S S A G E S U P P L I M E N T S >------------- I18N for those messages that are supplemented with additional specific text that describes the reason for the error TODO: merge this with special_case_translations{}? ]] local err_msg_supl = { ['char'] = 'invalid character', -- |isbn=, |sbn= ['check'] = 'checksum', -- |isbn=, |sbn= ['flag'] = 'flag', -- |archive-url= ['form'] = 'invalid form', -- |isbn=, |sbn= ['group'] = 'invalid group id', -- |isbn= ['initials'] = 'initials', -- Vancouver ['invalid language code'] = 'invalid language code', -- |script-<param>= ['journal'] = 'journal', -- |bibcode= ['length'] = 'length', -- |isbn=, |bibcode=, |sbn= ['liveweb'] = 'liveweb', -- |archive-url= ['missing comma'] = 'missing comma', -- Vancouver ['missing prefix'] = 'missing prefix', -- |script-<param>= ['missing title part'] = 'missing title part', -- |script-<param>= ['name'] = 'name', -- Vancouver ['non-Latin char'] = 'non-Latin character', -- Vancouver ['path'] = 'path', -- |archive-url= ['prefix'] = 'invalid prefix', -- |isbn= ['punctuation'] = 'punctuation', -- Vancouver ['save'] = 'save command', -- |archive-url= ['suffix'] = 'suffix', -- Vancouver ['timestamp'] = 'timestamp', -- |archive-url= ['unknown language code'] = 'unknown language code', -- |script-<param>= ['value'] = 'value', -- |bibcode= ['year'] = 'year', -- |bibcode= } --[[--------------< E R R O R _ C O N D I T I O N S >--------------------------- Error condition table. This table has two sections: errors at the top, maintenance at the bottom. Maint 'messaging' does not have a 'message' (message=nil) The following contains a list of IDs for various error conditions defined in the code. For each ID, we specify a text message to display, an error category to include, and whether the error message should be wrapped as a hidden comment. Anchor changes require identical changes to matching anchor in Help:CS1 errors TODO: rename error_conditions{} to something more generic; create separate error and maint tables inside that? ]] local error_conditions = { err_accessdate_missing_url = { message = '<code class="cs1-code">&#124;access-date=</code> requires <code class="cs1-code">&#124;url=</code>', anchor = 'accessdate_missing_url', category = 'CS1 errors: access-date without URL', hidden = false }, err_apostrophe_markup = { message = 'Italic or bold markup not allowed in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'apostrophe_markup', category = 'CS1 errors: markup', hidden = false }, err_archive_date_missing_url = { message = '<code class="cs1-code">&#124;archive-date=</code> requires <code class="cs1-code">&#124;archive-url=</code>', anchor = 'archive_date_missing_url', category = 'CS1 errors: archive-url', hidden = false }, err_archive_date_url_ts_mismatch = { message = '<code class="cs1-code">&#124;archive-date=</code> / <code class="cs1-code">&#124;archive-url=</code> timestamp mismatch', anchor = 'archive_date_url_ts_mismatch', category = 'CS1 errors: archive-url', hidden = false }, err_archive_missing_date = { message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;archive-date=</code>', anchor = 'archive_missing_date', category = 'CS1 errors: archive-url', hidden = false }, err_archive_missing_url = { message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;url=</code>', anchor = 'archive_missing_url', category = 'CS1 errors: archive-url', hidden = false }, err_archive_url = { message = '<code class="cs1-code">&#124;archive-url=</code> is malformed: $1', -- $1 is error message detail anchor = 'archive_url', category = 'CS1 errors: archive-url', hidden = false }, err_arxiv_missing = { message = '<code class="cs1-code">&#124;arxiv=</code> required', anchor = 'arxiv_missing', category = 'CS1 errors: arXiv', -- same as bad arxiv hidden = false }, err_asintld_missing_asin = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;asin=</code>', -- $1 is parameter name anchor = 'asintld_missing_asin', category = 'CS1 errors: ASIN TLD', hidden = false }, err_bad_arxiv = { message = 'Check <code class="cs1-code">&#124;arxiv=</code> value', anchor = 'bad_arxiv', category = 'CS1 errors: arXiv', hidden = false }, err_bad_asin = { message = 'Check <code class="cs1-code">&#124;asin=</code> value', anchor = 'bad_asin', category ='CS1 errors: ASIN', hidden = false }, err_bad_asin_tld = { message = 'Check <code class="cs1-code">&#124;asin-tld=</code> value', anchor = 'bad_asin_tld', category ='CS1 errors: ASIN TLD', hidden = false }, err_bad_bibcode = { message = 'Check <code class="cs1-code">&#124;bibcode=</code> $1', -- $1 is error message detail anchor = 'bad_bibcode', category = 'CS1 errors: bibcode', hidden = false }, err_bad_biorxiv = { message = 'Check <code class="cs1-code">&#124;biorxiv=</code> value', anchor = 'bad_biorxiv', category = 'CS1 errors: bioRxiv', hidden = false }, err_bad_citeseerx = { message = 'Check <code class="cs1-code">&#124;citeseerx=</code> value', anchor = 'bad_citeseerx', category = 'CS1 errors: citeseerx', hidden = false }, err_bad_date = { message = 'Check date values in: $1', -- $1 is a parameter name list anchor = 'bad_date', category = 'CS1 errors: dates', hidden = false }, err_bad_doi = { message = 'Check <code class="cs1-code">&#124;doi=</code> value', anchor = 'bad_doi', category = 'CS1 errors: DOI', hidden = false }, err_bad_hdl = { message = 'Check <code class="cs1-code">&#124;hdl=</code> value', anchor = 'bad_hdl', category = 'CS1 errors: HDL', hidden = false }, err_bad_isbn = { message = 'Check <code class="cs1-code">&#124;isbn=</code> value: $1', -- $1 is error message detail anchor = 'bad_isbn', category = 'CS1 errors: ISBN', hidden = false }, err_bad_ismn = { message = 'Check <code class="cs1-code">&#124;ismn=</code> value', anchor = 'bad_ismn', category = 'CS1 errors: ISMN', hidden = false }, err_bad_issn = { message = 'Check <code class="cs1-code">&#124;$1issn=</code> value', -- $1 is 'e' or '' for eissn or issn anchor = 'bad_issn', category = 'CS1 errors: ISSN', hidden = false }, err_bad_jfm = { message = 'Check <code class="cs1-code">&#124;jfm=</code> value', anchor = 'bad_jfm', category = 'CS1 errors: JFM', hidden = false }, err_bad_jstor = { message = 'Check <code class="cs1-code">&#124;jstor=</code> value', anchor = 'bad_jstor', category = 'CS1 errors: JSTOR', hidden = false }, err_bad_lccn = { message = 'Check <code class="cs1-code">&#124;lccn=</code> value', anchor = 'bad_lccn', category = 'CS1 errors: LCCN', hidden = false }, err_bad_medrxiv = { message = 'Check <code class="cs1-code">&#124;medrxiv=</code> value', anchor = 'bad_medrxiv', category = 'CS1 errors: medRxiv', hidden = false }, err_bad_mr = { message = 'Check <code class="cs1-code">&#124;mr=</code> value', anchor = 'bad_mr', category = 'CS1 errors: MR', hidden = false }, err_bad_oclc = { message = 'Check <code class="cs1-code">&#124;oclc=</code> value', anchor = 'bad_oclc', category = 'CS1 errors: OCLC', hidden = false }, err_bad_ol = { message = 'Check <code class="cs1-code">&#124;ol=</code> value', anchor = 'bad_ol', category = 'CS1 errors: OL', hidden = false }, err_bad_osti = { message = 'Check <code class="cs1-code">&#124;osti=</code> value', anchor = 'bad_osti', category = 'CS1 errors: OSTI', hidden = false }, err_bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link= message = 'Check <code class="cs1-code">&#124;$1=</code> value', -- $1 is parameter name anchor = 'bad_paramlink', category = 'CS1 errors: parameter link', hidden = false }, err_bad_pmc = { message = 'Check <code class="cs1-code">&#124;pmc=</code> value', anchor = 'bad_pmc', category = 'CS1 errors: PMC', hidden = false }, err_bad_pmid = { message = 'Check <code class="cs1-code">&#124;pmid=</code> value', anchor = 'bad_pmid', category = 'CS1 errors: PMID', hidden = false }, err_bad_rfc = { message = 'Check <code class="cs1-code">&#124;rfc=</code> value', anchor = 'bad_rfc', category = 'CS1 errors: RFC', hidden = false }, err_bad_s2cid = { message = 'Check <code class="cs1-code">&#124;s2cid=</code> value', anchor = 'bad_s2cid', category = 'CS1 errors: S2CID', hidden = false }, err_bad_sbn = { message = 'Check <code class="cs1-code">&#124;sbn=</code> value: $1', -- $1 is error message detail anchor = 'bad_sbn', category = 'CS1 errors: SBN', hidden = false }, err_bad_ssrn = { message = 'Check <code class="cs1-code">&#124;ssrn=</code> value', anchor = 'bad_ssrn', category = 'CS1 errors: SSRN', hidden = false }, err_bad_url = { message = 'Check $1 value', -- $1 is parameter name anchor = 'bad_url', category = 'CS1 errors: URL', hidden = false }, err_bad_usenet_id = { message = 'Check <code class="cs1-code">&#124;message-id=</code> value', anchor = 'bad_message_id', category = 'CS1 errors: message-id', hidden = false }, err_bad_zbl = { message = 'Check <code class="cs1-code">&#124;zbl=</code> value', anchor = 'bad_zbl', category = 'CS1 errors: Zbl', hidden = false }, err_bare_url_missing_title = { message = '$1 missing title', -- $1 is parameter name anchor = 'bare_url_missing_title', category = 'CS1 errors: bare URL', hidden = false }, err_biorxiv_missing = { message = '<code class="cs1-code">&#124;biorxiv=</code> required', anchor = 'biorxiv_missing', category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv hidden = false }, err_chapter_ignored = { message = '<code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'chapter_ignored', category = 'CS1 errors: chapter ignored', hidden = false }, err_citation_missing_title = { message = 'Missing or empty <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'citation_missing_title', category = 'CS1 errors: missing title', hidden = false }, err_citeseerx_missing = { message = '<code class="cs1-code">&#124;citeseerx=</code> required', anchor = 'citeseerx_missing', category = 'CS1 errors: citeseerx', -- same as bad citeseerx hidden = false }, err_cite_web_url = { -- this error applies to cite web and to cite podcast message = 'Missing or empty <code class="cs1-code">&#124;url=</code>', anchor = 'cite_web_url', category = 'CS1 errors: requires URL', hidden = false }, err_class_ignored = { message = '<code class="cs1-code">&#124;class=</code> ignored', anchor = 'class_ignored', category = 'CS1 errors: class', hidden = false }, err_contributor_ignored = { message = '<code class="cs1-code">&#124;contributor=</code> ignored', anchor = 'contributor_ignored', category = 'CS1 errors: contributor', hidden = false }, err_contributor_missing_required_param = { message = '<code class="cs1-code">&#124;contributor=</code> requires <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'contributor_missing_required_param', category = 'CS1 errors: contributor', hidden = false }, err_deprecated_params = { message = 'Cite uses deprecated parameter <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'deprecated_params', category = 'CS1 errors: deprecated parameters', hidden = false }, err_disp_name = { message = 'Invalid <code class="cs1-code">&#124;$1=$2</code>', -- $1 is parameter name; $2 is the assigned value anchor = 'disp_name', category = 'CS1 errors: display-names', hidden = false, }, err_doibroken_missing_doi = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;doi=</code>', -- $1 is parameter name anchor = 'doibroken_missing_doi', category = 'CS1 errors: DOI', hidden = false }, err_embargo_missing_pmc = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;pmc=</code>', -- $1 is parameter name anchor = 'embargo_missing_pmc', category = 'CS1 errors: PMC embargo', hidden = false }, err_empty_citation = { message = 'Empty citation', anchor = 'empty_citation', category = 'CS1 errors: empty citation', hidden = false }, err_etal = { message = 'Explicit use of et al. in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'explicit_et_al', category = 'CS1 errors: explicit use of et al.', hidden = false }, err_extra_text_edition = { message = '<code class="cs1-code">&#124;edition=</code> has extra text', anchor = 'extra_text_edition', category = 'CS1 errors: extra text: edition', hidden = false, }, err_extra_text_issue = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_issue', category = 'CS1 errors: extra text: issue', hidden = false, }, err_extra_text_pages = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_pages', category = 'CS1 errors: extra text: pages', hidden = false, }, err_extra_text_volume = { message = '<code class="cs1-code">&#124;$1=</code> has extra text', -- $1 is parameter name anchor = 'extra_text_volume', category = 'CS1 errors: extra text: volume', hidden = true, }, err_first_missing_last = { message = '<code class="cs1-code">&#124;$1=</code> missing <code class="cs1-code">&#124;$2=</code>', -- $1 is first alias, $2 is matching last alias anchor = 'first_missing_last', category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator hidden = false }, err_format_missing_url = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;$2=</code>', -- $1 is format parameter $2 is url parameter anchor = 'format_missing_url', category = 'CS1 errors: format without URL', hidden = false }, err_generic_name = { message = '<code class="cs1-code">&#124;$1=</code> has generic name', -- $1 is parameter name anchor = 'generic_name', category = 'CS1 errors: generic name', hidden = false, }, err_generic_title = { message = 'Cite uses generic title', anchor = 'generic_title', category = 'CS1 errors: generic title', hidden = false, }, err_invalid_param_val = { message = 'Invalid <code class="cs1-code">&#124;$1=$2</code>', -- $1 is parameter name $2 is parameter value anchor = 'invalid_param_val', category = 'CS1 errors: invalid parameter value', hidden = false }, err_invisible_char = { message = '$1 in $2 at position $3', -- $1 is invisible char $2 is parameter name $3 is position number anchor = 'invisible_char', category = 'CS1 errors: invisible characters', hidden = false }, err_medrxiv_missing = { message = '<code class="cs1-code">&#124;medrxiv=</code> required', anchor = 'medrxiv_missing', category = 'CS1 errors: medRxiv', -- same as bad medRxiv hidden = false }, err_missing_name = { message = 'Missing <code class="cs1-code">&#124;$1$2=</code>', -- $1 is modified NameList; $2 is enumerator anchor = 'missing_name', category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator hidden = false }, err_missing_periodical = { message = 'Cite $1 requires <code class="cs1-code">&#124;$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1 anchor = 'missing_periodical', category = 'CS1 errors: missing periodical', hidden = true }, err_missing_pipe = { message = 'Missing pipe in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'missing_pipe', category = 'CS1 errors: missing pipe', hidden = false }, err_missing_publisher = { message = 'Cite $1 requires <code class="cs1-code">&#124;$2=</code>', -- $1 is cs1 template name; $2 is canonical publisher parameter name for cite $1 anchor = 'missing_publisher', category = 'CS1 errors: missing publisher', hidden = false }, err_param_access_requires_param = { message = '<code class="cs1-code">&#124;$1-access=</code> requires <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'param_access_requires_param', category = 'CS1 errors: param-access', hidden = false }, err_param_has_ext_link = { message = 'External link in <code class="cs1-code">$1</code>', -- $1 is parameter name anchor = 'param_has_ext_link', category = 'CS1 errors: external links', hidden = false }, err_parameter_ignored = { message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'parameter_ignored', category = 'CS1 errors: unsupported parameter', hidden = false }, err_parameter_ignored_suggest = { message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored (<code class="cs1-code">&#124;$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name anchor = 'parameter_ignored_suggest', category = 'CS1 errors: unsupported parameter', hidden = false }, err_periodical_ignored = { message = '<code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'periodical_ignored', category = 'CS1 errors: periodical ignored', hidden = false }, err_redundant_parameters = { message = 'More than one of $1 specified', -- $1 is error message detail anchor = 'redundant_parameters', category = 'CS1 errors: redundant parameter', hidden = false }, err_script_parameter = { message = 'Invalid <code class="cs1-code">&#124;$1=</code>: $2', -- $1 is parameter name $2 is script language code or error detail anchor = 'script_parameter', category = 'CS1 errors: script parameters', hidden = false }, err_ssrn_missing = { message = '<code class="cs1-code">&#124;ssrn=</code> required', anchor = 'ssrn_missing', category = 'CS1 errors: SSRN', hidden = false }, err_text_ignored = { message = 'Text "$1" ignored', -- $1 is ignored text anchor = 'text_ignored', category = 'CS1 errors: unrecognized parameter', hidden = false }, err_trans_missing_title = { message = '<code class="cs1-code">&#124;trans-$1=</code> requires <code class="cs1-code">&#124;$1=</code> or <code class="cs1-code">&#124;script-$1=</code>', -- $1 is base parameter name anchor = 'trans_missing_title', category = 'CS1 errors: translated title', hidden = false }, err_param_unknown_empty = { message = 'Cite has empty unknown parameter$1: $2', -- $1 is 's' or empty space; $2 is emty unknown param list anchor = 'param_unknown_empty', category = 'CS1 errors: empty unknown parameters', hidden = false }, err_vancouver = { message = 'Vancouver style error: $1 in name $2', -- $1 is error detail, $2 is the nth name anchor = 'vancouver', category = 'CS1 errors: Vancouver style', hidden = false }, err_wikilink_in_url = { message = 'URL–wikilink conflict', -- uses ndash anchor = 'wikilink_in_url', category = 'CS1 errors: URL–wikilink conflict', -- uses ndash hidden = false }, --[[--------------------------< M A I N T >------------------------------------- maint messages do not have a message (message = nil); otherwise the structure is the same as error messages ]] maint_archived_copy = { message = nil, anchor = 'archived_copy', category = 'CS1 maint: archived copy as title', hidden = true, }, maint_authors = { message = nil, anchor = 'authors', category = 'CS1 maint: uses authors parameter', hidden = true, }, maint_bibcode = { message = nil, anchor = 'bibcode', category = 'CS1 maint: bibcode', hidden = true, }, maint_location_no_publisher = { -- cite book, conference, encyclopedia; citation as book cite or encyclopedia cite message = nil, anchor = 'location_no_publisher', category = 'CS1 maint: location missing publisher', hidden = true, }, maint_bot_unknown = { message = nil, anchor = 'bot:_unknown', category = 'CS1 maint: bot: original URL status unknown', hidden = true, }, maint_date_auto_xlated = { -- date auto-translation not supported by en.wiki message = nil, anchor = 'date_auto_xlated', category = 'CS1 maint: date auto-translated', hidden = true, }, maint_date_format = { message = nil, anchor = 'date_format', category = 'CS1 maint: date format', hidden = true, }, maint_date_year = { message = nil, anchor = 'date_year', category = 'CS1 maint: date and year', hidden = true, }, maint_doi_ignore = { message = nil, anchor = 'doi_ignore', category = 'CS1 maint: ignored DOI errors', hidden = true, }, maint_doi_inactive = { message = nil, anchor = 'doi_inactive', category = 'CS1 maint: DOI inactive', hidden = true, }, maint_doi_inactive_dated = { message = nil, anchor = 'doi_inactive_dated', category = 'CS1 maint: DOI inactive as of $2$3$1', -- $1 is year, $2 is month-name or empty string, $3 is space or empty string hidden = true, }, maint_extra_punct = { message = nil, anchor = 'extra_punct', category = 'CS1 maint: extra punctuation', hidden = true, }, maint_isbn_ignore = { message = nil, anchor = 'ignore_isbn_err', category = 'CS1 maint: ignored ISBN errors', hidden = true, }, maint_issn_ignore = { message = nil, anchor = 'ignore_issn', category = 'CS1 maint: ignored ISSN errors', hidden = true, }, maint_jfm_format = { message = nil, anchor = 'jfm_format', category = 'CS1 maint: JFM format', hidden = true, }, maint_location = { message = nil, anchor = 'location', category = 'CS1 maint: location', hidden = true, }, maint_mr_format = { message = nil, anchor = 'mr_format', category = 'CS1 maint: MR format', hidden = true, }, maint_mult_names = { message = nil, anchor = 'mult_names', category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table hidden = true, }, maint_numeric_names = { message = nil, anchor = 'numeric_names', category = 'CS1 maint: numeric names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table hidden = true, }, maint_others = { message = nil, anchor = 'others', category = 'CS1 maint: others', hidden = true, }, maint_others_avm = { message = nil, anchor = 'others_avm', category = 'CS1 maint: others in cite AV media (notes)', hidden = true, }, maint_overridden_setting = { message = nil, anchor = 'overridden', category = 'CS1 maint: overridden setting', hidden = true, }, maint_pmc_embargo = { message = nil, anchor = 'embargo', category = 'CS1 maint: PMC embargo expired', hidden = true, }, maint_pmc_format = { message = nil, anchor = 'pmc_format', category = 'CS1 maint: PMC format', hidden = true, }, maint_postscript = { message = nil, anchor = 'postscript', category = 'CS1 maint: postscript', hidden = true, }, maint_ref_duplicates_default = { message = nil, anchor = 'ref_default', category = 'CS1 maint: ref duplicates default', hidden = true, }, maint_unfit = { message = nil, anchor = 'unfit', category = 'CS1 maint: unfit URL', hidden = true, }, maint_unknown_lang = { message = nil, anchor = 'unknown_lang', category = 'CS1 maint: unrecognized language', hidden = true, }, maint_untitled = { message = nil, anchor = 'untitled', category = 'CS1 maint: untitled periodical', hidden = true, }, maint_url_status = { message = nil, anchor = 'url_status', category = 'CS1 maint: url-status', hidden = true, }, maint_zbl = { message = nil, anchor = 'zbl', category = 'CS1 maint: Zbl', hidden = true, }, } --[[--------------------------< I D _ H A N D L E R S >-------------------------------------------------------- The following contains a list of values for various defined identifiers. For each identifier we specify a variety of information necessary to properly render the identifier in the citation. parameters: a list of parameter aliases for this identifier; first in the list is the canonical form link: Wikipedia article name redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number' q: Wikidata q number for the identifier label: the label preceding the identifier; label is linked to a Wikipedia article (in this order): redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true Wikidata-supplied article name for the local wiki from id_handlers['<id>'].q local article name from id_handlers['<id>'].link prefix: the first part of a URL that will be concatenated with a second part which usually contains the identifier suffix: optional third part to be added after the identifier encode: true if URI should be percent-encoded; otherwise false COinS: identifier link or keyword for use in COinS: for identifiers registered at info-uri.info use: info:.... where '...' is the appropriate identifier label for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn for |asin= and |ol=, which require assembly, use the keyword: url for others make a URL using the value in prefix/suffix and #label, use the keyword: pre (not checked; any text other than 'info', 'rft', or 'url' works here) set to nil to leave the identifier out of the COinS separator: character or text between label and the identifier in the rendered citation id_limit: for those identifiers with established limits, this property holds the upper limit access: use this parameter to set the access level for all instances of this identifier. the value must be a valid access level for an identifier (see ['id-access'] in this file). custom_access: to enable custom access level for an identifier, set this parameter to the parameter that should control it (normally 'id-access') ]] local id_handlers = { ['ARXIV'] = { parameters = {'arxiv', 'eprint'}, link = 'arXiv', redirect = 'arXiv (identifier)', q = 'Q118398', label = 'arXiv', prefix = 'https://arxiv.org/abs/', encode = false, COinS = 'info:arxiv', separator = ':', access = 'free', -- free to read }, ['ASIN'] = { parameters = { 'asin', 'ASIN' }, link = 'Amazon Standard Identification Number', redirect = 'ASIN (identifier)', q = 'Q1753278', label = 'ASIN', prefix = 'https://www.amazon.', COinS = 'url', separator = '&nbsp;', encode = false; }, ['BIBCODE'] = { parameters = {'bibcode'}, link = 'Bibcode', redirect = 'Bibcode (identifier)', q = 'Q25754', label = 'Bibcode', prefix = 'https://ui.adsabs.harvard.edu/abs/', encode = false, COinS = 'info:bibcode', separator = ':', custom_access = 'bibcode-access', }, ['BIORXIV'] = { parameters = {'biorxiv'}, link = 'bioRxiv', redirect = 'bioRxiv (identifier)', q = 'Q19835482', label = 'bioRxiv', prefix = 'https://doi.org/', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = true, separator = '&nbsp;', }, ['CITESEERX'] = { parameters = {'citeseerx'}, link = 'CiteSeerX', redirect = 'CiteSeerX (identifier)', q = 'Q2715061', label = 'CiteSeerX', prefix = 'https://citeseerx.ist.psu.edu/viewdoc/summary?doi=', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = true, separator = '&nbsp;', }, ['DOI'] = { -- Used by InternetArchiveBot parameters = { 'doi', 'DOI'}, link = 'Digital object identifier', redirect = 'doi (identifier)', q = 'Q25670', label = 'doi', prefix = 'https://doi.org/', COinS = 'info:doi', separator = ':', encode = true, custom_access = 'doi-access', }, ['EISSN'] = { parameters = {'eissn', 'EISSN'}, link = 'International Standard Serial Number#Electronic ISSN', redirect = 'eISSN (identifier)', q = 'Q46339674', label = 'eISSN', prefix = 'https://www.worldcat.org/issn/', COinS = 'rft.eissn', encode = false, separator = '&nbsp;', }, ['HDL'] = { parameters = { 'hdl', 'HDL' }, link = 'Handle System', redirect = 'hdl (identifier)', q = 'Q3126718', label = 'hdl', prefix = 'https://hdl.handle.net/', COinS = 'info:hdl', separator = ':', encode = true, custom_access = 'hdl-access', }, ['ISBN'] = { -- Used by InternetArchiveBot parameters = {'isbn', 'ISBN'}, link = 'International Standard Book Number', redirect = 'ISBN (identifier)', q = 'Q33057', label = 'ISBN', prefix = 'Special:BookSources/', COinS = 'rft.isbn', separator = '&nbsp;', }, ['ISMN'] = { parameters = {'ismn', 'ISMN'}, link = 'International Standard Music Number', redirect = 'ISMN (identifier)', q = 'Q1666938', label = 'ISMN', prefix = '', -- not currently used; COinS = nil, -- nil because we can't use pre or rft or info: separator = '&nbsp;', }, ['ISSN'] = { parameters = {'issn', 'ISSN'}, link = 'International Standard Serial Number', redirect = 'ISSN (identifier)', q = 'Q131276', label = 'ISSN', prefix = 'https://www.worldcat.org/issn/', COinS = 'rft.issn', encode = false, separator = '&nbsp;', }, ['JFM'] = { parameters = {'jfm', 'JFM'}, link = 'Jahrbuch über die Fortschritte der Mathematik', redirect = 'JFM (identifier)', q = '', label = 'JFM', prefix = 'https://zbmath.org/?format=complete&q=an:', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, ['JSTOR'] = { parameters = {'jstor', 'JSTOR'}, link = 'JSTOR', redirect = 'JSTOR (identifier)', q = 'Q1420342', label = 'JSTOR', prefix = 'https://www.jstor.org/stable/', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', custom_access = 'jstor-access', }, ['LCCN'] = { parameters = {'lccn', 'LCCN'}, link = 'Library of Congress Control Number', redirect = 'LCCN (identifier)', q = 'Q620946', label = 'LCCN', prefix = 'https://lccn.loc.gov/', COinS = 'info:lccn', encode = false, separator = '&nbsp;', }, ['MEDRXIV'] = { parameters = {'medrxiv'}, link = 'medRxiv', redirect = 'medRxiv (identifier)', q = 'Q58465838', label = 'medRxiv', prefix = 'https://www.medrxiv.org/content/', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = false, separator = '&nbsp;', }, ['MR'] = { parameters = {'mr', 'MR'}, link = 'Mathematical Reviews', redirect = 'MR (identifier)', q = 'Q211172', label = 'MR', prefix = 'https://mathscinet.ams.org/mathscinet-getitem?mr=', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, ['OCLC'] = { parameters = {'oclc', 'OCLC'}, link = 'OCLC', redirect = 'OCLC (identifier)', q = 'Q190593', label = 'OCLC', prefix = 'https://www.worldcat.org/oclc/', COinS = 'info:oclcnum', encode = true, separator = '&nbsp;', id_limit = 10030000000, }, ['OL'] = { parameters = { 'ol', 'OL' }, link = 'Open Library', redirect = 'OL (identifier)', q = 'Q1201876', label = 'OL', prefix = 'https://openlibrary.org/', COinS = 'url', separator = '&nbsp;', encode = true, custom_access = 'ol-access', }, ['OSTI'] = { parameters = {'osti', 'OSTI'}, link = 'Office of Scientific and Technical Information', redirect = 'OSTI (identifier)', q = 'Q2015776', label = 'OSTI', prefix = 'https://www.osti.gov/biblio/', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 23010000, custom_access = 'osti-access', }, ['PMC'] = { parameters = {'pmc', 'PMC'}, link = 'PubMed Central', redirect = 'PMC (identifier)', q = 'Q229883', label = 'PMC', prefix = 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC', suffix = '', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 10700000, access = 'free', -- free to read }, ['PMID'] = { parameters = {'pmid', 'PMID'}, link = 'PubMed Identifier', redirect = 'PMID (identifier)', q = 'Q2082879', label = 'PMID', prefix = 'https://pubmed.ncbi.nlm.nih.gov/', COinS = 'info:pmid', encode = false, separator = '&nbsp;', id_limit = 38400000, }, ['RFC'] = { parameters = {'rfc', 'RFC'}, link = 'Request for Comments', redirect = 'RFC (identifier)', q = 'Q212971', label = 'RFC', prefix = 'https://tools.ietf.org/html/rfc', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', id_limit = 9300, access = 'free', -- free to read }, ['SBN'] = { parameters = {'sbn', 'SBN'}, link = 'Standard Book Number', -- redirect to International_Standard_Book_Number#History redirect = 'SBN (identifier)', label = 'SBN', prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn COinS = nil, -- nil because we can't use pre or rft or info: separator = '&nbsp;', }, ['SSRN'] = { parameters = {'ssrn', 'SSRN'}, link = 'Social Science Research Network', redirect = 'SSRN (identifier)', q = 'Q7550801', label = 'SSRN', prefix = 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 4600000, custom_access = 'ssrn-access', }, ['S2CID'] = { parameters = {'s2cid', 'S2CID'}, link = 'Semantic Scholar', redirect = 'S2CID (identifier)', q = 'Q22908627', label = 'S2CID', prefix = 'https://api.semanticscholar.org/CorpusID:', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', id_limit = 266000000, custom_access = 's2cid-access', }, ['USENETID'] = { parameters = {'message-id'}, link = 'Usenet', redirect = 'Usenet (identifier)', q = 'Q193162', label = 'Usenet:', prefix = 'news:', encode = false, COinS = 'pre', -- use prefix value separator = '&nbsp;', }, ['ZBL'] = { parameters = {'zbl', 'ZBL' }, link = 'Zentralblatt MATH', redirect = 'Zbl (identifier)', q = 'Q190269', label = 'Zbl', prefix = 'https://zbmath.org/?format=complete&q=an:', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, } --[[--------------------------< E X P O R T S >--------------------------------- ]] return { use_identifier_redirects = use_identifier_redirects, -- booleans defined in the settings at the top of this module local_lang_cat_enable = local_lang_cat_enable, date_name_auto_xlate_enable = date_name_auto_xlate_enable, date_digit_auto_xlate_enable = date_digit_auto_xlate_enable, -- tables and variables created when this module is loaded global_df = get_date_format (), -- this line can be replaced with "global_df = 'dmy-all'," to have all dates auto translated to dmy format. global_cs1_config_t = global_cs1_config_t, -- global settings from {{cs1 config}} punct_skip = build_skip_table (punct_skip, punct_meta_params), url_skip = build_skip_table (url_skip, url_meta_params), aliases = aliases, special_case_translation = special_case_translation, date_names = date_names, err_msg_supl = err_msg_supl, error_conditions = error_conditions, editor_markup_patterns = editor_markup_patterns, et_al_patterns = et_al_patterns, id_handlers = id_handlers, keywords_lists = keywords_lists, keywords_xlate = keywords_xlate, stripmarkers = stripmarkers, invisible_chars = invisible_chars, invisible_defs = invisible_defs, indic_script = indic_script, emoji_t = emoji_t, maint_cats = maint_cats, messages = messages, presentation = presentation, prop_cats = prop_cats, script_lang_codes = script_lang_codes, lang_tag_remap = lang_tag_remap, lang_name_remap = lang_name_remap, this_wiki_code = this_wiki_code, title_types = title_types, uncategorized_namespaces = uncategorized_namespaces_t, uncategorized_subpages = uncategorized_subpages, templates_using_volume = templates_using_volume, templates_using_issue = templates_using_issue, templates_not_using_page = templates_not_using_page, vol_iss_pg_patterns = vol_iss_pg_patterns, single_letter_2nd_lvl_domains_t = single_letter_2nd_lvl_domains_t, inter_wiki_map = inter_wiki_map, mw_languages_by_tag_t = mw_languages_by_tag_t, mw_languages_by_name_t = mw_languages_by_name_t, citation_class_map_t = citation_class_map_t, citation_issue_t = citation_issue_t, citation_no_volume_t = citation_no_volume_t, } 3e2dde0333a73a0a39271b2bb53463ec90587d77 Template:Div col/styles.css 10 46 3071 424 2023-11-07T21:54:12Z wikipedia>Izno 0 revert per talk page sanitized-css text/css /* {{pp|small=yes}} */ .div-col { margin-top: 0.3em; column-width: 30em; } .div-col-small { font-size: 90%; } .div-col-rules { column-rule: 1px solid #aaa; } /* Reset top margin for lists in div col */ .div-col dl, .div-col ol, .div-col ul { margin-top: 0; } /* Avoid elements breaking between columns See also Template:No col break */ .div-col li, .div-col dd { page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */ break-inside: avoid-column; } c6c2dc0cb2bab7a5f7b4eb938eebc5c67df087bc 3072 3071 2023-11-09T18:01:01Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Div_col/styles.css]] sanitized-css text/css /* {{pp|small=yes}} */ .div-col { margin-top: 0.3em; column-width: 30em; } .div-col-small { font-size: 90%; } .div-col-rules { column-rule: 1px solid #aaa; } /* Reset top margin for lists in div col */ .div-col dl, .div-col ol, .div-col ul { margin-top: 0; } /* Avoid elements breaking between columns See also Template:No col break */ .div-col li, .div-col dd { page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */ break-inside: avoid-column; } c6c2dc0cb2bab7a5f7b4eb938eebc5c67df087bc Template:Columns-list 10 608 3073 1375 2023-11-08T20:02:10Z wikipedia>Frietjes 0 wikitext text/x-wiki {{#if:{{{1|}}}|{{<includeonly>safesubst:</includeonly>#invoke:Template wrapper|wrap|_template=div col|_alias-map=1:content|colwidth=30em}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using columns-list with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Columns-list]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | class | content | colwidth | gap | rules | small | style }}<noinclude> {{documentation}} </noinclude> 6af253b4919acd8f8e076f26b5bbc4c4ffef47b5 3074 3073 2023-11-09T18:01:09Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Columns-list]] wikitext text/x-wiki {{#if:{{{1|}}}|{{<includeonly>safesubst:</includeonly>#invoke:Template wrapper|wrap|_template=div col|_alias-map=1:content|colwidth=30em}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using columns-list with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Columns-list]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | class | content | colwidth | gap | rules | small | style }}<noinclude> {{documentation}} </noinclude> 6af253b4919acd8f8e076f26b5bbc4c4ffef47b5 Module:Location map/data/USA Minnesota 828 1631 2972 2971 2023-11-09T13:08:11Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Location_map/data/USA_Minnesota]] Scribunto text/plain return { name = 'Minnesota', top = 49.6, bottom = 43.3, left = -97.4, right = -89.3, image = 'USA Minnesota location map.svg', image1 = 'USA Minnesota relief location map.svg' } cbeccbdc44b6fb67f064c0fd0fe0857151aefb98 Template:Location map+ 10 1632 2974 2973 2023-11-09T13:08:17Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Location_map+]] wikitext text/x-wiki <includeonly>{{#invoke:Location map/multi|container}}</includeonly><noinclude>{{documentation}}</noinclude> 6d8191274535019dfbe086080294788b4c2e6602 Template:Location map~ 10 1633 2976 2975 2023-11-09T13:08:18Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Location_map~]] wikitext text/x-wiki <includeonly>{{#invoke:Location map|mark}}</includeonly><noinclude> {{Documentation}} </noinclude> 0dc485fa8e546ebe81ad6c28972fbea662afcf39 Module:Location map 828 1395 2978 2977 2023-11-09T13:08:19Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Location_map]] Scribunto text/plain require('strict') local p = {} local getArgs = require('Module:Arguments').getArgs local function round(n, decimals) local pow = 10^(decimals or 0) return math.floor(n * pow + 0.5) / pow end function p.getMapParams(map, frame) if not map then error('The name of the location map definition to use must be specified', 2) end local moduletitle = mw.title.new('Module:Location map/data/' .. map) if not moduletitle then error(string.format('%q is not a valid name for a location map definition', map), 2) elseif moduletitle.exists then local mapData = mw.loadData('Module:Location map/data/' .. map) return function(name, params) if name == nil then return 'Module:Location map/data/' .. map elseif mapData[name] == nil then return '' elseif params then return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain() else return mapData[name] end end else error('Unable to find the specified location map definition: "Module:Location map/data/' .. map .. '" does not exist', 2) end end function p.data(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true}) end if not map then map = p.getMapParams(args[1], frame) end local params = {} for k,v in ipairs(args) do if k > 2 then params[k-2] = v end end return map(args[2], #params ~= 0 and params) end local hemisphereMultipliers = { longitude = { W = -1, w = -1, E = 1, e = 1 }, latitude = { S = -1, s = -1, N = 1, n = 1 } } local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction) if decimal then if degrees then error('Decimal and DMS degrees cannot both be provided for ' .. direction, 2) elseif minutes then error('Minutes can only be provided with DMS degrees for ' .. direction, 2) elseif seconds then error('Seconds can only be provided with DMS degrees for ' .. direction, 2) elseif hemisphere then error('A hemisphere can only be provided with DMS degrees for ' .. direction, 2) end local retval = tonumber(decimal) if retval then return retval end error('The value "' .. decimal .. '" provided for ' .. direction .. ' is not valid', 2) elseif seconds and not minutes then error('Seconds were provided for ' .. direction .. ' without minutes also being provided', 2) elseif not degrees then if minutes then error('Minutes were provided for ' .. direction .. ' without degrees also being provided', 2) elseif hemisphere then error('A hemisphere was provided for ' .. direction .. ' without degrees also being provided', 2) end return nil end decimal = tonumber(degrees) if not decimal then error('The degree value "' .. degrees .. '" provided for ' .. direction .. ' is not valid', 2) elseif minutes and not tonumber(minutes) then error('The minute value "' .. minutes .. '" provided for ' .. direction .. ' is not valid', 2) elseif seconds and not tonumber(seconds) then error('The second value "' .. seconds .. '" provided for ' .. direction .. ' is not valid', 2) end decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600 if hemisphere then local multiplier = hemisphereMultipliers[direction][hemisphere] if not multiplier then error('The hemisphere "' .. hemisphere .. '" provided for ' .. direction .. ' is not valid', 2) end decimal = decimal * multiplier end return decimal end -- Finds a parameter in a transclusion of {{Coord}}. local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign local lat, long = mw.ustring.match(coord,'<span class="p%-latitude latitude">([^<]+)</span><span class="p%-longitude longitude">([^<]+)</span>') if lat then return tonumber(para == 'longitude' and long or lat) end local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]') if para == 'longitude' then result = {result[3], result[4]} end if not tonumber(result[1]) or not result[2] then mw.log('Malformed coordinates value') mw.logObject(para, 'para') mw.logObject(coord, 'coord') return error('Malformed coordinates value', 2) end return tonumber(result[1]) * hemisphereMultipliers[para][result[2]] end -- effectively make removeBlanks false for caption and maplink, and true for everything else -- if useWikidata is present but blank, convert it to false instead of nil -- p.top, p.bottom, and their callers need to use this function p.valueFunc(key, value) if value then value = mw.text.trim(value) end if value ~= '' or key == 'caption' or key == 'maplink' then return value elseif key == 'useWikidata' then return false end end local function getContainerImage(args, map) if args.AlternativeMap then return args.AlternativeMap elseif args.relief then local digits = mw.ustring.match(args.relief,'^[1-9][0-9]?$') or '1' -- image1 to image99 if map('image' .. digits) ~= '' then return map('image' .. digits) end end return map('image') end function p.top(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc}) end if not map then map = p.getMapParams(args[1], frame) end local width local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*")) if not args.width then width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1)) elseif mw.ustring.sub(args.width, -2) == 'px' then width = mw.ustring.sub(args.width, 1, -3) else width = args.width end local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0; if width_as_number == 0 then -- check to see if width is junk. If it is, then use default calculation width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1)) width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0; end if args.max_width ~= "" and args.max_width ~= nil then -- check to see if width bigger than max_width local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0; if width_as_number>max_as_number and max_as_number>0 then width = args.max_width; end end local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Module:Location map/styles.css'}} if args.float == 'center' then retval = retval .. '<div class="center">' end if args.caption and args.caption ~= '' and args.border ~= 'infobox' then retval = retval .. '<div class="locmap noviewer noresize thumb ' if args.float == '"left"' or args.float == 'left' then retval = retval .. 'tleft' elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then retval = retval .. 'tnone' else retval = retval .. 'tright' end retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px' if args.border == 'none' then retval = retval .. ';border:none' elseif args.border then retval = retval .. ';border-color:' .. args.border end retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">') else retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;' if args.float == '"left"' or args.float == 'left' then retval = retval .. 'float:left;clear:left' elseif args.float == '"center"' or args.float == 'center' then retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto' elseif args.float == '"none"' or args.float == 'none' then retval = retval .. 'float:none;clear:none' else retval = retval .. 'float:right;clear:right' end retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">' end local image = getContainerImage(args, map) local currentTitle = mw.title.getCurrentTitle() retval = string.format( '%s[[File:%s|%spx|%s%s|class=notpageimage]]', retval, image, width, args.alt or ((args.label or currentTitle.text) .. ' is located in ' .. map('name')), args.maplink and ('|link=' .. args.maplink) or '' ) if args.caption and args.caption ~= '' then if (currentTitle.namespace == 0) and mw.ustring.find(args.caption, '##') then retval = retval .. '[[Category:Pages using location map with a double number sign in the caption]]' end end if args.overlay_image then return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px|class=notpageimage]]</div>' else return retval end end function p.bottom(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc}) end if not map then map = p.getMapParams(args[1], frame) end local retval = '</div>' local currentTitle = mw.title.getCurrentTitle() if not args.caption or args.border == 'infobox' then if args.border then retval = retval .. '<div style="padding-top:0.2em">' else retval = retval .. '<div style="font-size:91%;padding-top:3px">' end retval = retval .. (args.caption or (args.label or currentTitle.text) .. ' (' .. map('name') .. ')') .. '</div>' elseif args.caption ~= '' then -- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '|class=notpageimage| ]]</div>' .. args.caption .. '</div>' end if args.switcherLabel then retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>' elseif args.autoSwitcherLabel then retval = retval .. '<span class="switcher-label" style="display:none">Show map of ' .. map('name') .. '</span>' end retval = retval .. '</div></div>' if args.caption_undefined then mw.log('Removed parameter caption_undefined used.') local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') if currentTitle.namespace == 0 then retval = retval .. '[[Category:Location maps with removed parameters|caption_undefined]]' end end if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then mw.log('Removed parameter used in map definition ' .. map()) if currentTitle.namespace == 0 then local key = (map('skew') ~= '' and 'skew' or '') .. (map('lat_skew') ~= '' and 'lat_skew' or '') .. (map('crosses180') ~= '' and 'crosses180' or '') .. (map('type') ~= '' and 'type' or '') retval = retval .. '[[Category:Location maps with removed parameters|' .. key .. ' ]]' end end if string.find(map('name'), '|', 1, true) then mw.log('Pipe used in name of map definition ' .. map()) if currentTitle.namespace == 0 then retval = retval .. '[[Category:Location maps with a name containing a pipe]]' end end if args.float == 'center' then retval = retval .. '</div>' end return retval end local function markOuterDiv(x, y, imageDiv, labelDiv) return mw.html.create('div') :addClass('od') :cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%') :node(imageDiv) :node(labelDiv) end local function markImageDiv(mark, marksize, label, link, alt, title) local builder = mw.html.create('div') :addClass('id') :cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px') :attr('title', title) if marksize ~= 0 then builder:wikitext(string.format( '[[File:%s|%dx%dpx|%s|link=%s%s|class=notpageimage]]', mark, marksize, marksize, label, link, alt and ('|alt=' .. alt) or '' )) end return builder end local function markLabelDiv(label, label_size, label_width, position, background, x, marksize) if tonumber(label_size) == 0 then return mw.html.create('div'):addClass('l0'):wikitext(label) end local builder = mw.html.create('div') :cssText('font-size:' .. label_size .. '%;width:' .. label_width .. 'em') local distance = round(marksize / 2 + 1) if position == 'top' then -- specified top builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em') elseif position == 'bottom' then -- specified bottom builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em') elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left builder:addClass('pl'):cssText('right:' .. distance .. 'px') else -- specified right or autodetected to right builder:addClass('pr'):cssText('left:' .. distance .. 'px') end builder = builder:tag('div') :wikitext(label) if background then builder:cssText('background-color:' .. background) end return builder:done() end local function getX(longitude, left, right) local width = (right - left) % 360 if width == 0 then width = 360 end local distanceFromLeft = (longitude - left) % 360 -- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter if distanceFromLeft - width / 2 >= 180 then distanceFromLeft = distanceFromLeft - 360 end return 100 * distanceFromLeft / width end local function getY(latitude, top, bottom) return 100 * (top - latitude) / (top - bottom) end function p.mark(frame, args, map) if not args then args = getArgs(frame, {wrappers = 'Template:Location map~'}) end local mapnames = {} if not map then if args[1] then map = {} for mapname in mw.text.gsplit(args[1], '#', true) do map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) mapnames[#mapnames + 1] = mapname end if #map == 1 then map = map[1] end else map = p.getMapParams('World', frame) args[1] = 'World' end end if type(map) == 'table' then local outputs = {} local oldargs = args[1] for k,v in ipairs(map) do args[1] = mapnames[k] outputs[k] = tostring(p.mark(frame, args, v)) end args[1] = oldargs return table.concat(outputs, '#PlaceList#') .. '#PlaceList#' end local x, y, longitude, latitude longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude') latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude') if args.excludefrom then -- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps) for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do -- Check if this map is excluded. If so, return an empty string. if args[1] == exclusionmap then return '' end end end local builder = mw.html.create() local currentTitle = mw.title.getCurrentTitle() if args.coordinates then -- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]] -- if longitude or latitude then -- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided') -- end longitude = coord2text('longitude', args.coordinates) latitude = coord2text('latitude', args.coordinates) elseif not longitude and not latitude and args.useWikidata then -- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't. local entity = mw.wikibase.getEntity() if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then local value = entity.claims.P625[1].mainsnak.datavalue.value longitude, latitude = value.longitude, value.latitude end if args.link and (currentTitle.namespace == 0) then builder:wikitext('[[Category:Location maps with linked markers with coordinates from Wikidata]]') end end if not longitude then error('No value was provided for longitude') elseif not latitude then error('No value was provided for latitude') end if currentTitle.namespace > 0 then if (not args.lon_deg) ~= (not args.lat_deg) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Degrees]]') elseif (not args.lon_min) ~= (not args.lat_min) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Minutes]]') elseif (not args.lon_sec) ~= (not args.lat_sec) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Seconds]]') elseif (not args.lon_dir) ~= (not args.lat_dir) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Hemisphere]]') elseif (not args.long) ~= (not args.lat) then builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Decimal]]') end end if ((tonumber(args.lat_deg) or 0) < 0) and ((tonumber(args.lat_min) or 0) ~= 0 or (tonumber(args.lat_sec) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='')) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if ((tonumber(args.lon_deg) or 0) < 0) and ((tonumber(args.lon_min) or 0) ~= 0 or (tonumber(args.lon_sec) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '')) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if (((tonumber(args.lat_min) or 0) < 0) or ((tonumber(args.lat_sec) or 0) < 0)) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if (((tonumber(args.lon_min) or 0) < 0) or ((tonumber(args.lon_sec) or 0) < 0)) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if args.skew or args.lon_shift or args.markhigh then mw.log('Removed parameter used in invocation.') local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') if currentTitle.namespace == 0 then local key = (args.skew and 'skew' or '') .. (args.lon_shift and 'lon_shift' or '') .. (args.markhigh and 'markhigh' or '') builder:wikitext('[[Category:Location maps with removed parameters|' .. key ..' ]]') end end if map('x') ~= '' then x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude }))) else x = tonumber(getX(longitude, map('left'), map('right'))) end if map('y') ~= '' then y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude }))) else y = tonumber(getY(latitude, map('top'), map('bottom'))) end if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then mw.log('Mark placed outside map boundaries without outside flag set. x = ' .. x .. ', y = ' .. y) local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') if currentTitle.namespace == 0 then local key = currentTitle.prefixedText builder:wikitext('[[Category:Location maps with marks outside map and outside parameter not set|' .. key .. ' ]]') end end local mark = args.mark or map('mark') if mark == '' then mark = 'Red pog.svg' end local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8 local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2]) local labelDiv if args.label and args.position ~= 'none' then labelDiv = markLabelDiv(args.label, args.label_size or 91, args.label_width or 6, args.position, args.background, x, marksize) end return builder:node(markOuterDiv(x, y, imageDiv, labelDiv)) end local function switcherSeparate(s) if s == nil then return {} end local retval = {} for i in string.gmatch(s .. '#', '([^#]*)#') do i = mw.text.trim(i) retval[#retval + 1] = (i ~= '' and i) end return retval end function p.main(frame, args, map) local caption_list = {} if not args then args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc}) end if args.useWikidata == nil then args.useWikidata = true end if not map then if args[1] then map = {} for mapname in string.gmatch(args[1], '[^#]+') do map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) end if args['caption'] then if args['caption'] == "" then while #caption_list < #map do caption_list[#caption_list + 1] = args['caption'] end else for caption in mw.text.gsplit(args['caption'], '##', true) do caption_list[#caption_list + 1] = caption end end end if #map == 1 then map = map[1] end else map = p.getMapParams('World', frame) end end if type(map) == 'table' then local altmaps = switcherSeparate(args.AlternativeMap) if #altmaps > #map then error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map)) end local overlays = switcherSeparate(args.overlay_image) if #overlays > #map then error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map)) end if #caption_list > #map then error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map)) end local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do args.AlternativeMap = altmaps[k] args.overlay_image = overlays[k] args.caption = caption_list[k] outputs[k] = p.main(frame, args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' else return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map) end end return p e4ccfcc6e71c45a4355aa7240a0a8b81dc19f8eb Module:Location map/multi 828 1634 2980 2979 2023-11-09T13:08:20Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Location_map/multi]] Scribunto text/plain require('strict') local p = {} local getArgs = require('Module:Arguments').getArgs local locmap = require('Module:Location map') local function switcherSeparate(s) if s == nil then return {} end local retval = {} for i in string.gmatch(s .. '#', '([^#]*)#') do i = mw.text.trim(i) retval[#retval + 1] = (i ~= '' and i) end return retval end function p.container(frame, args, map) local caption_list = {} if not args then args = getArgs(frame, {wrappers = 'Template:Location map+', valueFunc = locmap.valueFunc}) end if not map then if args[1] then map = {} for mapname in string.gmatch(args[1], '[^#]+') do map[#map + 1] = locmap.getMapParams(mapname, frame) end if args['caption'] then if args['caption'] == "" then while #caption_list < #map do caption_list[#caption_list + 1] = args['caption'] end else for caption in mw.text.gsplit(args['caption'], '##', true) do caption_list[#caption_list + 1] = caption end end end if #map == 1 then map = map[1] end else map = locmap.getMapParams('World', frame) end end if type(map) == 'table' then local placeslist = mw.text.gsplit(args.places, '#PlaceList#') local permaplaces = {} local numbermaps = #map local count = 0 for i = 1,numbermaps do permaplaces[i] = {} end for place in placeslist do table.insert(permaplaces[count%numbermaps + 1],place) count = count + 1 end local altmaps = switcherSeparate(args.AlternativeMap) if #altmaps > #map then error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map)) end local overlays = switcherSeparate(args.overlay_image) if #overlays > #map then error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map)) end if #caption_list > #map then error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map)) end local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do args.AlternativeMap = altmaps[k] args.overlay_image = overlays[k] args.caption = caption_list[k] args.places = table.concat(permaplaces[k]) outputs[k] = p.container(frame, args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' else return locmap.top(frame, args, map) .. (args.places and args.places:gsub('%s*\n%s*', '') or '') .. locmap.bottom(frame, args, map) end end local function manyMakeArgs(fullArgs, n) if n == 1 then return { lat = fullArgs.lat1 or fullArgs.lat, long = fullArgs.long1 or fullArgs.long, coordinates = fullArgs.coordinates1 or fullArgs.coordinates, lat_deg = fullArgs.lat1_deg or fullArgs.lat_deg, lat_min = fullArgs.lat1_min or fullArgs.lat_min, lat_sec = fullArgs.lat1_sec or fullArgs.lat_sec, lat_dir = fullArgs.lat1_dir or fullArgs.lat_dir, lon_deg = fullArgs.lon1_deg or fullArgs.lon_deg, lon_min = fullArgs.lon1_min or fullArgs.lon_min, lon_sec = fullArgs.lon1_sec or fullArgs.lon_sec, lon_dir = fullArgs.lon1_dir or fullArgs.lon_dir, outside = fullArgs.outside1 or fullArgs.outside, mark = fullArgs.mark1 or fullArgs.mark, marksize = fullArgs.mark1size or fullArgs.marksize, link = fullArgs.link1 or fullArgs.link, label = fullArgs.label1 or fullArgs.label, label_size = fullArgs.label1_size or fullArgs.label_size, label_width = fullArgs.label1_width or fullArgs.label_width, position = fullArgs.position1 or fullArgs.pos1 or fullArgs.position or fullArgs.pos, background = fullArgs.background1 or fullArgs.bg1 or fullArgs.background or fullArgs.bg } else return { lat = fullArgs['lat' .. n], long = fullArgs['long' .. n], coordinates = fullArgs['coordinates' .. n], lat_deg = fullArgs['lat' .. n .. '_deg'], lat_min = fullArgs['lat' .. n .. '_min'], lat_sec = fullArgs['lat' .. n .. '_sec'], lat_dir = fullArgs['lat' .. n .. '_dir'], lon_deg = fullArgs['lon' .. n .. '_deg'], lon_min = fullArgs['lon' .. n .. '_min'], lon_sec = fullArgs['lon' .. n .. '_sec'], lon_dir = fullArgs['lon' .. n .. '_dir'], outside = fullArgs['outside' .. n], mark = fullArgs['mark' .. n], marksize = fullArgs['mark' .. n .. 'size'], link = fullArgs['link' .. n], label = fullArgs['label' .. n], label_size = fullArgs['label' .. n .. '_size'], label_width = fullArgs['label' .. n .. '_width'], position = fullArgs['position' .. n] or fullArgs['pos' .. n], background = fullArgs['background' .. n] or fullArgs['bg' .. n] } end end function p.many(frame, args, map) if not args then args = getArgs(frame, {wrappers = 'Template:Location map many', valueFunc = locmap.valueFunc}) end if not args[1] then args[1] = 'World' end if not map then map = {} for mapname in string.gmatch(args[1], '[^#]+') do map[#map + 1] = locmap.getMapParams(mapname, frame) end if #map ~= 1 then local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do outputs[k] = p.many(frame, args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' end map = map[1] end local marks = {} local markhigh if args.markhigh then mw.log('Removed parameter markhigh used.') local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') markhigh = true end for k, v in pairs(args) do -- @todo change to uargs once we have that if v then if string.sub(k, -4) == '_deg' then k = string.sub(k, 1, -5) end if string.sub(k, 1, 3) == 'lat' then k = tonumber(string.sub(k, 4)) if k then table.insert(marks, k) end elseif string.sub(k, 1, 11) == 'coordinates' then k = tonumber(string.sub(k, 12)) if k then table.insert(marks,k) end end end end table.sort(marks) if marks[1] ~= 1 and (args.lat or args.lat_deg or args.coordinates) then table.insert(marks, 1, 1) end local body = '' for _, v in ipairs(marks) do -- don't try to consolidate this into the above loop. ordering of elements from pairs() is unspecified body = body .. tostring( locmap.mark(frame, manyMakeArgs(args, v), map) ) if args['mark' .. v .. 'high'] then mw.log('Removed parameter mark' .. v .. 'high used.') local parent = frame:getParent() if parent then mw.log('Parent is ' .. parent:getTitle()) end mw.logObject(args, 'args') markhigh = true end end args.label = nil -- there is no global label return locmap.top(frame, args, map) .. body .. locmap.bottom(frame, args, map) .. (markhigh and '[[Category:Location maps with possible errors|Page using removed parameter]]' or '') end function p.load(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true}) end local dataModule = mw.loadData(frame.args[1]) if not map then map = {} for mapname in string.gmatch(dataModule.containerArgs[1], '[^#]+') do map[#map + 1] = locmap.getMapParams(mapname, frame) end if #map ~= 1 then local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do outputs[k] = p.load(frame, args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' end map = map[1] end local marks = {} if dataModule.marks then for k,markArgs in ipairs(dataModule.marks) do marks[k] = tostring(locmap.mark(frame, markArgs, map)) end end if dataModule.secondaryModules then for _,modname in ipairs(dataModule.secondaryModules) do for _,markArgs in ipairs(mw.loadData(modname).marks) do marks[#marks + 1] = tostring(locmap.mark(frame, markArgs, map)) end end end return locmap.top(frame, dataModule.containerArgs, map) .. table.concat(marks) .. locmap.bottom(frame, dataModule.containerArgs, map) end return p 1acc0ca37712cbe36ee567f805a46c941859c489 Template:Location map many 10 1635 2982 2981 2023-11-09T13:08:21Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Location_map_many]] wikitext text/x-wiki <includeonly>{{#invoke:Location map/multi|many}}</includeonly><noinclude> {{Documentation}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 72cc22fd09760697977eba240c5a13c892f971f0 Module:Location map/data/doc 828 1636 2988 2987 2023-11-09T13:08:23Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Location_map/data/doc]] wikitext text/x-wiki #REDIRECT [[Template:Location map data documentation]] {{Redirect category shell| {{R from move}} {{R from documentation page}} }} e51e2661650b2ce62f1b5840282f71fc1c8e86d5 Module:Location map/info 828 1637 2990 2989 2023-11-09T13:08:24Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Location_map/info]] Scribunto text/plain local p = {} function p.main(frame) local map = mw.loadData(string.gsub(mw.title.getCurrentTitle().prefixedText,'/doc$','')) local retval = [=[{| class="wikitable" style="text-align:center; margin-top:0;" |+ Location map of ]=] .. map.name .. '\n' .. [=[ |- ! name |colspan="3"| ]=] .. map.name .. [=[ |- ]=] if map.top then retval = retval .. [=[!rowspan="4"|border<br/>coordinates |- |colspan="3"| ]=] .. map.top .. '\n' .. [=[ |- |style="width:7em;"| ]=] .. map.left .. '\n' .. [=[ | ←↕→ |style="width:7em;"| ]=] .. map.right if map.right > 180 then retval = retval .. ' (' .. map.right - 360 .. ')' end retval = retval .. '\n' .. [=[ |- |colspan="3"| ]=] .. map.bottom .. '\n' .. [=[ |- ! map center |colspan="4"| ]=] local width = (map.right - map.left) % 360 if width == 0 then width = 360 end local center = (map.left + width/2) % 360 if center >= 180 then center = center - 360 end retval = retval .. frame:expandTemplate{title = 'coord', args = { (map.top + map.bottom)/2, center }} retval = retval .. '\n' .. [=[ |-]=] end if map.x then retval = retval .. '\n' .. [=[ ! x |colspan="3" style="overflow: auto; white-space: auto; width: 350px"| ]=] .. map.x .. '\n' .. [=[ |- ! y |colspan="3" style="overflow: auto; white-space: auto; width: 350px"| ]=] .. map.y .. '\n' .. [=[ |-]=] end retval = retval .. '\n' .. [=[ ! image |colspan="3"| <code>[[:File:]=] .. map.image .. '|' .. map.image .. [=[]]</code> |- |colspan="4"|[[File:]=] .. map.image .. [=[|400x400px]] |-]=] local i = 0 while map['image' .. (i+1)] or map['image' .. (i+2)] do i = i + 1 if map['image' .. i] then retval = retval .. '\n' .. [=[ ! image]=] .. i .. '\n' .. [=[ |colspan="3"| <code>[[:File:]=] .. map['image' .. i] .. '|' .. map['image' .. i] .. [=[]]</code> |- |colspan="4"|[[File:]=] .. map['image' .. i] .. [=[|400x400px]] |-]=] end end if map.skew then retval = retval .. '\n' .. [=[ ! skew |colspan="3"| ]=] .. map.skew .. '\n' .. [=[ |-]=] end if map.lat_skew then retval = retval .. '\n' .. [=[ ! lat_skew |colspan="3"| ]=] .. map.lat_skew .. '\n' .. [=[ |-]=] end if map.mark then retval = retval .. '\n' .. [=[ ! mark |colspan="3"| <code>[[:File:]=] .. map.mark .. '|' .. map.mark .. [=[]]</code> |-]=] end if map.marksize then retval = retval .. '\n' .. [=[ ! marksize |colspan="3"| ]=] .. map.marksize .. '\n' .. [=[ |-]=] end retval = retval .. '\n|}' return retval end return p 6de577a38f924784dc5d0f48ae864c6199f783ed Template:Location map data documentation 10 1638 2992 2991 2023-11-09T13:08:25Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Location_map_data_documentation]] wikitext text/x-wiki <includeonly>__NOEDITSECTION__{{#invoke:Location map/info|main}} {{{image|}}} '''{{#titleparts:{{FULLPAGENAME}}|3}}''' is a location map definition used to overlay markers and labels on {{{projection|an [[equirectangular projection]]}}} map of {{{name|[[{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|name}}]]}}}. The markers are placed by [[latitude]] and [[longitude]] coordinates on the default map or a similar map image. == Usage == These definitions are used by the following templates when invoked with parameter "{{#titleparts:{{FULLPAGENAME}}|1|3}}": * {{tlx|Location map | {{#titleparts:{{FULLPAGENAME}}|1|3}}&nbsp;| ...}} * {{tlx|Location map many | {{#titleparts:{{FULLPAGENAME}}|1|3}}&nbsp;| ...}} * {{tlx|Location map+ | {{#titleparts:{{FULLPAGENAME}}|1|3}}&nbsp;| ...}} * {{tlx|Location map~ | {{#titleparts:{{FULLPAGENAME}}|1|3}}&nbsp;| ...}} == Map definition == * <code>'''name''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|name}}</code> *: Name used in the default map caption * <code>'''image''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image}}]]</code> *: The default map image, without "Image:" or "File:" {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}| * <code>'''image1''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}]]</code> *: An alternative map image, usually a relief map, which can be displayed via the ''relief'' or ''AlternativeMap'' parameters }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}| * <code>'''image2''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}]]</code>{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}| * <code>'''image3''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}]]</code> }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}| * <code>'''image4''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}]]</code> }} *: Alternative map image{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|s}} which can be displayed via the ''AlternativeMap'' parameter }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}| * <code>'''top''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}</code> *: [[Latitude]] at top edge of map, in [[decimal degrees]] * <code>'''bottom''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}</code> *: Latitude at bottom edge of map, in decimal degrees * <code>'''left''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}</code> *: [[Longitude]] at left edge of map, in decimal degrees * <code>'''right''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}</code> *: Longitude at right edge of map, in decimal degrees }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|x}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|y}}| * <code>'''x''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|x}}</code> *: An expression to calculate a location on the map via its [[longitude]]; evaluates as 0 along the left edge and 100 along the right edge * <code>'''y''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|y}}</code> *: An expression to calculate a location on the map via its [[latitude]]; evaluates as 0 along the top edge and 100 along the bottom edge }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}| * <code>'''mark''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}]] ([[File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|8px]])</code> *: The default mark image to display with this map. This can be overridden by the <code>mark</code> parameter in [[Template:Location map]], which would otherwise default to [[:File:Red pog.svg|Red pog.svg]] ([[File:Red pog.svg|8px]]). }}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}| * <code>'''marksize''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}</code> *: The default mark size (in [[pixel]]s) for the mark image displayed with this map (should not include <code>px</code>, for example <code>marksize={{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}</code>, not <code>marksize={{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}px</code>). This can be overridden by the <code>marksize</code> parameter in [[Template:Location map]], which would otherwise default to 8. }} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}| == Alternative map == The {{tl|Location map}}, {{tl|Location map many}}, and {{tl|Location map+}} templates have parameters to specify an alternative map image. {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}} | The map displayed as '''image1''' can be used with the ''relief'' or ''AlternativeMap'' parameters. }} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}} | The map{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|s}} displayed as '''image2''' {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|/ '''image3'''}} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}|/ '''image4'''}} can be used with the ''AlternativeMap'' parameter. }} Examples may be found below or in the following: {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}| * [[Template:Location map#Relief parameter]] * [[Template:Location map+/relief]] }} * [[Template:Location map#AlternativeMap parameter]] * [[Template:Location map+/AlternativeMap]] }} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}| == Precision == {{#if:{{{precision|}}}|{{{precision}}}| [[Longitude]]: from West to East this map definition covers {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 round 4}} degrees. * At an image width of 200 [[pixel]]s, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 / 200 round 4}} degrees per pixel. * At an image width of 1000 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 / 1000 round 4}} degrees per pixel. [[Latitude]]: from North to South this map definition covers {{#expr: {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} round 4}} degrees. * At an image height of 200 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} ) / 200 round 4}} degrees per pixel. * At an image height of 1000 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} ) / 1000 round 4}} degrees per pixel. }}}} {{#if:{{{examples|}}}| == Examples using location map templates == {{{examples}}} {{clear}} }} == See also == {{{see also|}}} === Location map templates === * [[Template:Location map]], to display one mark and label using latitude and longitude * [[Template:Location map many]], to display up to nine marks and labels * [[Template:Location map+]], to display an unlimited number of marks and labels === Creating new map definitions === * [[Template:Location map/Creating a new map definition]]</includeonly><noinclude> {{Documentation}} </noinclude> 1fb38b8a638db2fc998cb284051bcbe9a98f1e5e Module:Location map/data/USA Minnesota/doc 828 1639 2996 2995 2023-11-09T13:08:30Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Location_map/data/USA_Minnesota/doc]] wikitext text/x-wiki <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE --> {{high-use| 3782 }}{{Module:Location map/data/doc |image=[[File:Map of Minnesota NA.png|thumb|400px|Map of Minnesota (click on map to see larger image)]] |examples= === Location map === {{Location map | USA Minnesota | width = 250 | lat_deg = 44 | lat_min = 56 | lat_sec = 39 | lat_dir = N | lon_deg = 93 | lon_min = 05 | lon_sec = 07 | lon_dir = W | label = Saint Paul }} <pre style="width:40em"> {{Location map | USA Minnesota | width = 250 | lat_deg = 44 | lat_min = 56 | lat_sec = 39 | lat_dir = N | lon_deg = 93 | lon_min = 05 | lon_sec = 07 | lon_dir = W | label = Saint Paul }} </pre> {{clear}} === Location map many === {{Location map many | USA Minnesota | width = 250 | caption = Locations in Minnesota | lat1 = 49.345 | long1 = -95.063 | label1 = Angle Inlet | lat2 = 43.502 | long2 = -93.488 | label2 = Emmons | lat3 = 47.930 | long3 = -97.024 | label3 = East Grand Forks | lat4 = 48.005 | long4 = -89.492 | label4 = Pigeon Point }} <pre style="width:40em"> {{Location map many | USA Minnesota | width = 250 | caption = Locations in Minnesota | lat1 = 49.345 | long1 = -95.063 | label1 = Angle Inlet | lat2 = 43.502 | long2 = -93.488 | label2 = Emmons | lat3 = 47.930 | long3 = -97.024 | label3 = East Grand Forks | lat4 = 48.005 | long4 = -89.492 | label4 = Pigeon Point }} </pre> {{clear}} === Location map+ === {{Location map+ | USA Minnesota | width = 250 | caption = Locations in Minnesota | places = {{Location map~ | USA Minnesota | lat = 49.345 | long = -95.063 | label = Angle Inlet }} {{Location map~ | USA Minnesota | lat = 43.502 | long = -93.488 | label = Emmons }} {{Location map~ | USA Minnesota | lat = 47.930 | long = -97.024 | label = East Grand Forks }} {{Location map~ | USA Minnesota | lat = 48.005 | long = -89.492 | label = Pigeon Point }} }} <pre style="width:40em"> {{Location map+ | USA Minnesota | width = 250 | caption = Locations in Minnesota | places = {{Location map~ | USA Minnesota | lat = 49.345 | long = -95.063 | label = Angle Inlet }} {{Location map~ | USA Minnesota | lat = 43.502 | long = -93.488 | label = Emmons }} {{Location map~ | USA Minnesota | lat = 47.930 | long = -97.024 | label = East Grand Forks }} {{Location map~ | USA Minnesota | lat = 48.005 | long = -89.492 | label = Pigeon Point }} }} </pre> {{clear}} |see also= * [[Module:Location map/data/USA]] }} <includeonly> <!-- Categories go here --> {{DEFAULTSORT:Minnesota, Location map USA}} [[Category:Minnesota location map modules| ]] </includeonly> 832b31c167acdd324bb1673432ae8fcb8192fedd Containment War Against Wickedonezz 0 1640 2997 2023-11-09T13:16:59Z Führerredux 2 Created page with "{{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community Conflicts against Wickedonezz]] | map_type = https://fuhrerredux.miraheze.org/w/index.php?title=Template:USA_Minnesota&action=edit&redlink=1 {{location map | USA Minnesota | width = 250 | label = Cambridge | lat_deg = 45 | lat_min = 33 | lat_sec = 56 | lat_..." wikitext text/x-wiki {{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community Conflicts against Wickedonezz]] | map_type = https://fuhrerredux.miraheze.org/w/index.php?title=Template:USA_Minnesota&action=edit&redlink=1 {{location map | USA Minnesota | width = 250 | label = Cambridge | lat_deg = 45 | lat_min = 33 | lat_sec = 56 | lat_dir = N | lon_deg = 93 | lon_min = 13 | lon_sec = 34 | lon_dir = W }} }} dce6e7e0f54fd482407f72c44b90a5a79876be1f 3006 2997 2023-11-09T13:22:09Z Führerredux 2 wikitext text/x-wiki {{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community Conflicts against Wickedonezz]] | map_type = {{Location map | USA Minnesota | width = 250 | lat_deg = 45 | lat_min = 33 | lat_sec = 56 | lat_dir = N | lon_deg = 93 | lon_min = 13 | lon_sec = 34 | lon_dir = W | label = Cambridge }} }} 85741a47b52c52913fa2101aec674e19fa4e0148 Module:String 828 17 2999 2998 2023-11-09T13:20:05Z Führerredux 2 1 revision imported from [[:wikipedia:Module:String]] Scribunto text/plain --[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ) local s = new_args['s'] or '' return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The first index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ) local s = new_args['s'] or '' local i = tonumber( new_args['i'] ) or 1 local j = tonumber( new_args['j'] ) or -1 local len = mw.ustring.len( s ) -- Convert negatives for range checking if i < 0 then i = len + i + 1 end if j < 0 then j = len + j + 1 end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ) end if j < i then return str._error( 'String subset indices out of order' ) end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ _match This function returns a substring from the source string that matches a specified pattern. It is exported for use in other modules Usage: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain_flag, nomatch ) if s == '' then return str._error( 'Target string is empty' ) end if pattern == '' then return str._error( 'Pattern string is empty' ) end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ) end if match_index == 0 then return str._error( 'Match index is out of range' ) end if plain_flag then pattern = str._escapePattern( pattern ) end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ) end local iterator = mw.ustring.gmatch(s, pattern) if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1 if match_index == 0 then result = w break end end else -- Reverse search local result_table = {} local count = 1 for w in iterator do result_table[count] = w count = count + 1 end result = result_table[ count + match_index ] end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ) else return nomatch end else return result end end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} OR {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ) local s = new_args['s'] or '' local start = tonumber( new_args['start'] ) or 1 local plain_flag = str._getBoolean( new_args['plain'] or false ) local pattern = new_args['pattern'] or '' local match_index = math.floor( tonumber(new_args['match']) or 1 ) local nomatch = new_args['nomatch'] return str._match( s, pattern, start, match_index, plain_flag, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ) local target_str = new_args['target'] or '' local pos = tonumber( new_args['pos'] ) or 0 if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ) end return mw.ustring.sub( target_str, pos, pos ) end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ) local source_str = new_args['source'] or '' local target_str = new_args['target'] or '' if target_str == '' then return 1 end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['target'] or '' local start_pos = tonumber(new_args['start']) or 1 local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return 0 end plain = str._getBoolean( plain ) local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['pattern'] or '' local replace = new_args['replace'] or '' local count = tonumber( new_args['count'] ) local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return source_str end plain = str._getBoolean( plain ) if plain then pattern = str._escapePattern( pattern ) replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end local result if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ) else result = mw.ustring.gsub( source_str, pattern, replace ) end return result end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ) end local result = str._escapePattern( pattern_str ) return result end --[[ count This function counts the number of occurrences of one string in another. ]] function str.count(frame) local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = str._getBoolean(args.plain or true) if plain then pattern = str._escapePattern(pattern) end local _, count = mw.ustring.gsub(source, pattern, '') return count end --[[ endswith This function determines whether a string ends with another string. ]] function str.endswith(frame) local args = str._getParameters(frame.args, {'source', 'pattern'}) local source = args.source or '' local pattern = args.pattern or '' if pattern == '' then -- All strings end with the empty string. return "yes" end if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then return "yes" else return "" end end --[[ join Join all non empty arguments together; the first argument is the separator. Usage: {{#invoke:String|join|sep|one|two|three}} ]] function str.join(frame) local args = {} local sep for _, v in ipairs( frame.args ) do if sep then if v ~= '' then table.insert(args, v) end else sep = v end end return table.concat( args, sep or '' ) end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {} local index = 1 local value for _, arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index] index = index + 1 end new_args[arg] = value end return new_args end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame() local error_category = frame.args.error_category or 'Errors reported by Module String' local ignore_errors = frame.args.ignore_errors or false local no_category = frame.args.no_category or false if str._getBoolean(ignore_errors) then return '' end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>' if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str end return error_str end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false else boolean_value = true end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else error( 'No boolean value found' ) end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ) end return str 2ad0905c56ef4955950b75a8f00974fe82aed5e4 Template:U 10 1641 3001 3000 2023-11-09T13:20:07Z Führerredux 2 1 revision imported from [[:wikipedia:Template:U]] wikitext text/x-wiki #REDIRECT [[Template:User link]] {{Redirect category shell| {{R from template shortcut}} }} 4e19f83e5bbe5d6e452f64e86adc28c022309e09 Template:User link 10 1642 3003 3002 2023-11-09T13:20:08Z Führerredux 2 1 revision imported from [[:wikipedia:Template:User_link]] wikitext text/x-wiki [[User:{{{1<noinclude>|Example</noinclude>}}}|{{<includeonly>safesubst:</includeonly>#if:{{{2|}}}|{{{2}}}|{{{1<noinclude>|Example</noinclude>}}}}}]]<noinclude> {{documentation}} </noinclude> 77cabe6631a64537cdf8e5ca3d3d8d3ae2734552 Module:Location map/doc 828 1643 3005 3004 2023-11-09T13:20:17Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Location_map/doc]] wikitext text/x-wiki {{Module rating|protected}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> {{High-use}} {{Lua|Module:Arguments}} {{Uses TemplateStyles|Module:Location map/styles.css}} == Usage == This module implements the {{tl|Location map}} and {{tl|Location map~}} templates. Please see the template pages for usage instructions. == Known issues == Since the introduction of support for different captions when multiple maps are utilized, an issue has been highlighted.<br /> Some infobox templates use their caption parameter directly instead of passing it to this module. This results in the display of a "##" between the two captions.<br /> If you are unable to edit the infobox template, contact {{u|Bellezzasolo}}. == Tracking/maintenance categories == * [[:Category:Location maps with possible errors|Category:Location maps with possible errors]] ** {{clc|Location maps with different longitude and latitude precisions}} ** {{clc|Location maps with marks outside map and outside parameter not set}} ** {{clc|Location maps with a name containing a pipe‎}} ** {{clc|Location maps with removed parameters‎}} ** {{clc|Location maps with negative degrees and minutes or seconds}} * Tracking for a change (see talk): {{clc|Pages using location map with a double number sign in the caption}} == See also == * [https://en.wikipedia.org/wiki/Special:PrefixIndex?prefix=Location+map&namespace=828 All Module: pages beginning with "Location map"] * [[Module:Location map/info]] * [[Module:Location map/multi]] <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories go here and interwikis go in Wikidata. --> [[Category:Location map modules]] [[Category:Modules that add a tracking category]] }}</includeonly> 6f1bdaf5bdd99aa938bc7aade80cdddc02494599 Module:Navbar 828 37 3056 3055 2023-11-09T17:59:36Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Navbar]] Scribunto text/plain local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false, false} if template then show[2] = false show[3] = false local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} -- TODO: Consider removing TableTools dependency. for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end local remove_edit_link = args.noedit if remove_edit_link then show[3] = false end return show end local function add_link(link_description, ul, is_mini, font_style) local l if link_description.url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass('nv-' .. link_description.full) :wikitext(l[1] .. link_description.link .. l[2]) :tag(is_mini and 'abbr' or 'span') :attr('title', link_description.html_title) :cssText(font_style) :wikitext(is_mini and link_description.mini or link_description.full) :done() :wikitext(l[3]) :done() end local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style) local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace) if not title then error(cfg.invalid_title .. title_text) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' -- TODO: Get link_descriptions and show into the configuration module. -- link_descriptions should be easier... local link_descriptions = { { ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', ['link'] = title.fullText, ['url'] = false }, { ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', ['link'] = talkpage, ['url'] = false }, { ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', ['link'] = 'Special:EditPage/' .. title.fullText, ['url'] = false }, { ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template', ['link'] = 'Special:PageHistory/' .. title.fullText, ['url'] = false }, { ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template', ['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true }, { ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template', ['link'] = title:fullUrl('action=watch'), ['url'] = true } } local ul = mw.html.create('ul') if has_brackets then ul:addClass(cfg.classes.brackets) :cssText(font_style) end for i, _ in ipairs(displayed_links) do if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end end return ul:done() end function p._navbar(args) -- TODO: We probably don't need both fontstyle and fontcolor... local font_style = args.fontstyle local font_color = args.fontcolor local is_collapsible = args.collapsible local is_mini = args.mini local is_plain = args.plain local collapsible_class = nil if is_collapsible then collapsible_class = cfg.classes.collapsible if not is_plain then is_mini = 1 end if font_color then font_style = (font_style or '') .. '; color: ' .. font_color .. ';' end end local navbar_style = args.style local div = mw.html.create():tag('div') div :addClass(cfg.classes.navbar) :addClass(cfg.classes.plainlinks) :addClass(cfg.classes.horizontal_list) :addClass(collapsible_class) -- we made the determination earlier :cssText(navbar_style) if is_mini then div:addClass(cfg.classes.mini) end local box_text = (args.text or cfg.box_text) .. ' ' -- the concatenated space guarantees the box text is separated if not (is_mini or is_plain) then div :tag('span') :addClass(cfg.classes.box_text) :cssText(font_style) :wikitext(box_text) end local template = args.template local displayed_links = choose_links(template, args) local has_brackets = args.brackets local title_arg = get_title_arg(is_collapsible, template) local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style) div:node(list) if is_collapsible then local title_text_class if is_mini then title_text_class = cfg.classes.collapsible_title_mini else title_text_class = cfg.classes.collapsible_title_full end div:done() :tag('div') :addClass(title_text_class) :cssText(font_style) :wikitext(args[1]) end local frame = mw.getCurrentFrame() -- hlist -> navbar is best-effort to preserve old Common.css ordering. return frame:extensionTag{ name = 'templatestyles', args = { src = cfg.hlist_templatestyles } } .. frame:extensionTag{ name = 'templatestyles', args = { src = cfg.templatestyles } } .. tostring(div:done()) end function p.navbar(frame) return p._navbar(require('Module:Arguments').getArgs(frame)) end return p 047f307758c878eb3e99ed1768cc40920a6ec5fa Template:Fix-span 10 1659 3058 3057 2023-11-09T17:59:40Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Fix-span]] wikitext text/x-wiki {{#if:{{{content|}}}|<span class="{{{span-class|cleanup-needed-content}}}" style="padding-left:0.1em; padding-right:0.1em; color:#595959; border:1px solid #DDD;">{{{content|}}}</span>}}{{#switch:{{{subst|¬}}} |¬={{category handler |template=[[Category:Templates needing substitution checking]] |nocat={{{nocat|<noinclude>true</noinclude>}}} }} |SUBST=[[Category:Pages with incorrectly substituted templates]] }}{{Category handler |main={{Fix/category |cat-date={{{cat-date|}}} |cat={{{cat|}}} |cat-date2={{{cat-date2|}}} |cat2={{{cat2|}}} |cat-date3={{{cat-date3|}}} |cat3={{{cat3|}}} |date={{{date|}}} }} |template={{#if:{{{name|}}}|{{#ifeq:{{{name}}}|{{ROOTPAGENAME}}||{{#if:{{{date|}}}||[[Category:Templates including undated clean-up tags]]}}}}}} |subpage=no }}{{#if:{{{special|}}} |{{{special|}}} |<sup class="noprint Inline-Template {{{class|}}}" style="margin-left:0.1em; white-space:nowrap;">&#91;<i>{{#if:{{{pre-text|}}} |{{{pre-text}}}&#32; }}[[{{{link|Wikipedia:Cleanup}}}|<span title="{{#invoke:decodeEncode|encode|s={{{title|{{{link|Wikipedia:Cleanup}}}}}} {{#if:{{{date|}}}|({{{date}}})}}}}">{{{text|}}}</span>]]{{#if:{{{post-text|}}} |&#32;{{{post-text}}} }}</i>&#93;</sup> }}<noinclude> {{Documentation}} </noinclude> 317c176dc9f5cfc1624f68935fdea73d852d3991 Module:DecodeEncode 828 1660 3060 3059 2023-11-09T17:59:42Z Führerredux 2 1 revision imported from [[:wikipedia:Module:DecodeEncode]] Scribunto text/plain require('strict') local p = {} local function _getBoolean( boolean_str ) -- from: module:String; adapted -- requires an explicit true local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'true' or boolean_str == 'yes' or boolean_str == '1' then boolean_value = true else boolean_value = false end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else boolean_value = false end return boolean_value end function p.decode( frame ) local s = frame.args['s'] or '' local subset_only = _getBoolean(frame.args['subset_only'] or false) return p._decode( s, subset_only ) end function p._decode( s, subset_only ) -- U+2009 THIN SPACE: workaround for bug: HTML entity &thinsp; is decoded incorrect. Entity &ThinSpace; gets decoded properly s = mw.ustring.gsub( s, '&thinsp;', '&ThinSpace;' ) -- U+03B5 ε GREEK SMALL LETTER EPSILON: workaround for bug (phab:T328840): HTML entity &epsilon; is decoded incorrect for gsub(). Entity &epsi; gets decoded properly s = mw.ustring.gsub( s, '&epsilon;', '&epsi;' ) local ret = mw.text.decode( s, not subset_only ) return ret end function p.encode( frame ) local s = frame.args['s'] or '' local charset = frame.args['charset'] return p._encode( s, charset ) end function p._encode( s, charset ) -- example: charset = '_&©−°\\\"\'\=' -- do escape with backslash not %; local ret if charset and charset ~= '' then ret = mw.text.encode( s, charset ) else -- use default: chartset = '<>&"\' ' (outer quotes = lua required; space = NBSP) ret = mw.text.encode( s ) end return ret end return p 9bb0f28593a5597a72c90c6075ceef68f9298cf8 Template:Clarify 10 1661 3062 3061 2023-11-09T17:59:42Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Clarify]] wikitext text/x-wiki {{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B= {{Fix-span |link=Wikipedia:Please clarify |text=clarification needed |title={{delink|{{{reason|The text near this tag may need clarification or removal of jargon.}}}}} |date={{{date|}}} |pre-text={{{pre-text|}}} |post-text={{{post-text|}}} |cat-date=Category:Wikipedia articles needing clarification |content={{{text|}}} }} }}<noinclude> {{documentation}} </noinclude> afe686147e4423132c07ddd2f1d9c73c4bdcca30 Template:Navbox visibility 10 1294 3085 2629 2023-11-09T17:59:45Z wikipedia>MusikBot II 0 Protected "[[Template:Navbox visibility]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 32281 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) wikitext text/x-wiki Templates using the classes <code>class=navbox</code> ({{tl|navbox}}) or <code>class=nomobile</code> ({{tl|sidebar}}) are not displayed on the [https://en.m.wikipedia.org/ mobile web site] of English Wikipedia. Mobile page views account for approximately 65% of all page views (90-day average {{as of|May 2023|lc=y}}).<noinclude> {{documentation}} </noinclude> 3b1f65df829fd9f96b9c4f002fba38a0fd987a6b Module:Math/doc 828 1662 3066 3065 2023-11-09T17:59:55Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Math/doc]] wikitext text/x-wiki {{for|''formatting'' mathematical expressions, LATEX-style|Template:Math}} {{High-risk|1,607,000+}} {{module rating|protected}} This module provides a number of mathematical functions. These functions can be used from #invoke or from other Lua modules. == Use from other Lua modules == To use the module from normal wiki pages, no special preparation is needed. If you are using the module from another Lua module, first you need to load it, like this: <syntaxhighlight lang="lua"> local mm = require('Module:Math') </syntaxhighlight> (The <code>mm</code> variable stands for '''M'''odule '''M'''ath; you can choose something more descriptive if you prefer.) Most functions in the module have a version for Lua and a version for #invoke. It is possible to use the #invoke functions from other Lua modules, but using the Lua functions has the advantage that you do not need to access a Lua [[mw:Extension:Scribunto/Lua reference manual#Frame object|frame object]]. Lua functions are preceded by <code>_</code>, whereas #invoke functions are not. == random == {{see also|Module:Random}} &#123;{#invoke:math|random}} &#123;{#invoke:math|random|''max_value''}} &#123;{#invoke:math|random|''min_value''|''max_value''}} <syntaxhighlight lang="lua"> mm._random() mm._random(max_value) mm._random(min_value, max_value) </syntaxhighlight> Generates a random number. * If no arguments are specified, the number produced is greater than or equal to 0 and less than 1. * If one argument is provided, the number produced is an integer between 1 and that argument. The argument must be a positive integer. * If two arguments are provided, the number produced is an integer between the first and second arguments. Both arguments must be integers, but can be negative. This function will not work properly for numbers less than &minus;2<sup>32</sup> and greater than 2<sup>32</sup> &minus; 1. If you need to use numbers outside of this range, it is recommended that you use [[Module:Random]]. == order == &#123;{#invoke:math|order|''n''}} <syntaxhighlight lang="lua"> mm._order(n) </syntaxhighlight> Determines the [[order of magnitude]] of a number. == precision == &#123;{#invoke:math|precision|''n''}} &#123;{#invoke:math|precision|x=''n''}} <syntaxhighlight lang="lua"> mm._precision(number_string) </syntaxhighlight> Detemines the precision of a number. For example, for "4" it will return "0", for "4.567" it will return "3", and for "100" it will return "-2". The function attempts to parse the string representation of the number, and detects whether the number uses [[Scientific notation#E notation|E notation]]. For this reason, when called from Lua, very large numbers or very precise numbers should be directly input as strings to get accurate results. If they are input as numbers, the Lua interpreter will change them to E notation and this function will return the precision of the E notation rather than that of the original number. This is not a problem when the number is called from #invoke, as all input from #invoke is in string format. == max == &#123;{#invoke:math|max|''v1''|''v2''|''v3''|...}} <syntaxhighlight lang="lua"> mm._max(v1, v2, v3, ...) </syntaxhighlight> Returns the maximum value from the values specified. Values that cannot be converted to numbers are ignored. == median == &#123;{#invoke:math|median|''v1''|''v2''|''v3''|...}} <syntaxhighlight lang="lua"> mm._median(v1, v2, v3, ...) </syntaxhighlight> Returns the [[median]] value from the values specified. Values that cannot be converted to numbers are ignored. == min == &#123;{#invoke:math|min|''v1''|''v2''|''v3''|...}} <syntaxhighlight lang="lua"> mm._min(v1, v2, v3, ...) </syntaxhighlight> Returns the minimum value from the values specified. Values that cannot be converted to numbers are ignored. == sum == &#123;{#invoke:math|sum|''v1''|''v2''|''v3''|...}} <syntaxhighlight lang="lua"> mm._sum(v1, v2, v3, ...) </syntaxhighlight> Returns the sum of the values specified. Values that cannot be converted to numbers are ignored. == average == &#123;{#invoke:math|average|''v1''|''v2''|''v3''|...}} <syntaxhighlight lang="lua"> mm._average(v1, v2, v3, ...) </syntaxhighlight> Returns the average of the values specified. (More precisely, the value returned is the [[Mean#Arithmetic mean (AM)|arithmetic mean]].) Values that cannot be converted to numbers are ignored. == round == &#123;{#invoke:math|round|''value''|''precision''}} &#123;{#invoke:math|round|value=''value''|precision=''precision''}} <syntaxhighlight lang="lua"> mm._round(value, precision) </syntaxhighlight> [[Rounding|Rounds]] a number to the specified precision{{clarify|reason=What method exactly is used?}}. Note: As of October 2019, there is a bug in the display of some rounded numbers. When trying to round a number that rounds to "n.0", like "1.02", to the nearest tenth of a digit (i.e. {{para|r|1}}), this function should display "1.0", but it unexpectedly displays "1". Use the {{para|precision_format}} parameter instead. == log10 == &#123;{#invoke:math | log10 | ''x''}} <syntaxhighlight lang="lua"> mm._log10(x) </syntaxhighlight> Returns <code>log<sub>10</sub>(''x'')</code>, the [[logarithm]] of ''x'' using base 10. == mod == &#123;{#invoke:math|mod|''x''|''y''}} <syntaxhighlight lang="lua"> mm._mod(x, y) </syntaxhighlight> Gets <code>''x''</code> [[Modulo operation|modulo]] <code>''y''</code>, or the remainder after <code>''x''</code> has been divided by <code>''y''</code>. This is accurate for integers up to 2<sup>53</sup>; for larger integers Lua's modulo operator may return an erroneous value. This function deals with this problem by returning <code>0</code> if the modulo given by Lua's modulo operator is less than 0 or greater than <code>''y''</code>. == gcd == &#123;{#invoke:math|gcd|''v1''|''v2''|...}} <syntaxhighlight lang="lua"> mm._gcd(v1, v2, ...) </syntaxhighlight> Finds the [[greatest common divisor]] of the values specified. Values that cannot be converted to numbers are ignored. == precision_format == &#123;{#invoke:math|precision_format|''value_string''|''precision''}} <syntaxhighlight lang="lua"> mm._precision_format(value_string, precision) </syntaxhighlight> Rounds a number to the specified precision and formats according to rules originally used for {{tl|Rnd}}. Output is a string. Parameter <var>precision</var> should be an integer number of digits after the decimal point. Negative values are permitted. Non-integers give unexpected results. Positive values greater than the input precision add zero-padding, negative values greater than the input order can consume all digits. Formatting 8,765.567 with {{tlc|#invoke:Math|precision_format|8765.567|<var>precision</var>}} gives: {|class="wikitable" |+ !<code><var>precision</var></code>!!Result |- |style="text-align:right"|2||{{#invoke:Math|precision_format|8765.567|2}} |- |style="text-align:right"| -2||{{#invoke:Math|precision_format|8765.567|-2}} |- |style="text-align:right"|6||{{#invoke:Math|precision_format|8765.567|6}} |- |style="text-align:right"| -6||{{#invoke:Math|precision_format|8765.567|-6}} |- |style="text-align:right"|2.5||{{#invoke:Math|precision_format|8765.567|2.5}} |- |style="text-align:right"| -2.5||{{#invoke:Math|precision_format|8765.567|-2.5}} |} == divide == &#123;{#invoke:Math|divide|''x''|''y''|''round=''|''precision=''}} <syntaxhighlight lang="lua"> mm._divide(x, y, round, precision) </syntaxhighlight> Divide x by y. * If y if not a number, it is returned. * Otherwise, if x is not a number, it is returned. * If round is true ("yes" for #invoke), the result has no decimals * Precision indicates how many digits of precision the result should have If any of the arguments contain HTML tags, they are returned unchanged, allowing any errors in calculating the arguments to the division function to be propagated to the calling template. == cleanNumber == <syntaxhighlight lang="lua"> local number, number_string = mm._cleanNumber(number_string) </syntaxhighlight> A helper function that can be called from other Lua modules, but not from #invoke. This takes a string or a number value as input, and if the value can be converted to a number, cleanNumber returns the number and the number string. If the value cannot be converted to a number, cleanNumber returns <code>nil, nil</code>. ==See also== {{Math templates}} 58f1eada1ab7de23905e945547ffa5f823a88b94 Template:Coord/doc 10 1663 3068 3067 2023-11-09T18:00:40Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Coord/doc]] wikitext text/x-wiki {{Documentation subpage}} {{#ifeq: {{FULLPAGENAME}} | Template:Coord | {{high-use|all-pages=yes}} }} {{Transwiki guide candidate}} {{lua|Module:Coordinates}} {{#switch: {{FULLPAGENAME}} | Template:Coord | Template:Coord/doc = {{Uses Wikidata|P625}} {{Tracks Wikidata|P625|cat=Coordinates Wikidata tracking categories}} }} When this template is used with '''display=title''', the template is not displayed on mobile. {{Navbox visibility}} This template is still displayed on mobile when used with '''display=inline''', e.g. in infoboxes. ==Quick guide== {{Coord how-to}} __TOC__ ==Purpose== {{tlf|Coord}} provides a standard notation for encoding locations by their [[latitude]] and [[longitude]] coordinates. It is primarily for specifying the [[World Geodetic System|WGS84]] geographic coordinates of locations on [[Earth]], at the same time emitting a machine-readable [[Geo (microformat)|Geo microformat]]. However, it can also encode locations on natural satellites, dwarf planets, and planets other than Earth. * To specify celestial coordinates, use {{tl|Sky}} instead. * Tag articles which lack coordinates (but need them) with {{tl|Coord missing}}. * If the subject's location is truly unknown or disputed, note this with {{tl|Coord unknown}}. * If the coordinates were [[meta:Wikidata/Notes/Inclusion syntax|transcluded from Wikidata]], use {{tl|WikidataCoord}}. See also: [[Wikipedia:WikiProject Geographical coordinates]]. ==Features== Latitude and longitude may be specified (with appropriate precision) either in decimal notation or as degrees/minutes/seconds. By default, coordinates appear in the format used to specify them. However, the <code>format=</code> parameter can be used to force display in a particular format. The template also accepts and displays coordinates formatted as degrees and decimal minutes as found on charts and maritime references. The template displays the formatted coordinates with a [[hyperlink]] to [[mw:GeoHack|GeoHack]]. GeoHack displays information customized to the location, including links to external mapping services. For terrestrial locations, a blue globe ([[Image:Erioll_world.svg|18px]]) appears to the left of the hyperlink. Clicking on the globe activates the [[:meta:WikiMiniAtlas|WikiMiniAtlas]] (requires [[JavaScript]]). By default, coordinates appear "in line" with the adjacent text. However, the <code>display=</code> parameter can be used to move the coordinates up near the page title (in desktop view only; title coordinates do not display in mobile view)—or display them in both places at once. The template outputs coordinates in three formats: * [[Degree (angle)|Degree]]/[[Minute of arc|minutes]]/[[Second of arc|seconds]] ("DMS", precision is degrees, or degrees/minutes, or degrees/minutes/seconds, based on input precision). * [[Decimal degrees]] (varying the number of decimal places based on input precision) * A machine readable [[Geo (microformat)|Geo microformat]]. Additional features * Logged-in users can [[#Per-user_display_customization|customize]] how coordinates appear in their browsers. * You can get coordinates from Wikidata by transcluding this template without any numbered arguments. * You can extract information from the Coord template for use in mathematical expressions. For details, see [[:Module:Coordinates]]. * All coordinates used in a page through this template are registered in the [[mw:API:Geosearch|geosearch API]]. If a coordinate is using title display, then these coordinates will be marked as the primary coordinates with regards to the page and therefore the topic of that page. ==Caveats== The template '''must not''' be modified without prior discussion. External tools can depend on the format of both the wikitext and/or the generated html. == Usage == '''&#123;{coord|'''''latitude'''''|'''''longitude'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}&#125;''' '''&#123;{coord|'''''dd'''''|'''''N/S'''''|'''''dd'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}&#125;''' '''&#123;{coord|'''''dd'''''|'''''mm'''''|'''''N/S'''''|'''''dd'''''|'''''mm'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}&#125;''' '''&#123;{coord|'''''dd'''''|'''''mm'''''|'''''ss'''''|'''''N/S'''''|'''''dd'''''|'''''mm'''''|'''''ss'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}&#125;''' The hemisphere identifiers (''N/S'') and (''E/W''), if used, must be adjacent to the enclosing pipe "'''<code>|</code>'''" characters, and cannot be preceded or succeeded by spaces. There are two kinds of parameters, all optional: *<span id="1">'''Coordinate parameters'''</span> are parameters that {{tl|Coord}} passes to the map server. These have the format ''parameter:value'' and are separated from each other by the underscore character ( _ ). The supported coordinate parameters are ''dim:'', ''globe:'', ''region:'', ''scale:'', ''source:'', and ''type:''. See [[#Coordinate parameters|coordinate parameters]] for details and examples. *<span id="2">'''Template parameters'''</span> are parameters used by the {{tl|Coord}} template. These have format ''parameter=value'' and are separated from each other by the pipe character ( | ). The supported template parameters are ''display='', ''format='', ''name='', and ''notes=''. :* '''display=''' can be one of the following: ::* <code>display=inline</code> – Display the coordinate inline (default) ::* <code>display=title</code> – Display the coordinate at the top of the article, beside the article's title (replaces {{tl|coor title dms}} family; coordinates are displayed in desktop view only; title coordinates do not display in mobile view) ::** shortcut: <code>display=t</code> ::* <code>display=inline,title</code> – Display the coordinate both inline and beside the article's title (replaces {{tl|coor at dms}} family) ::** shortcut: <code>display=it</code> ::* <code>display=title,inline</code> has the same effect as <code>display=inline,title</code> ::Note: the <code>title</code> attribute indicates that the coordinates apply to the entire article, and not just one of (perhaps many) places mentioned in it—so it should only be omitted in the latter case. Additionally the title option will mark the coordinates as the primary coordinates for the page (and topic of the page) in the [[mw:API:Geosearch|geosearch API]]. :* '''format=''' can be used to force ''dec'' or ''dms'' coordinate display. ::* <code>format=dec</code> reformats the coordinates to <span style="text-decoration:underline;">decimal degrees</span> format. ::* <code>format=dms</code> reformats the coordinates to <span style="text-decoration:underline;">degrees | minutes | seconds</span> format. :* '''name=''' can be used to annotate inline coordinates for display in map services such as the [[:meta:WikiMiniAtlas|WikiMiniAtlas]]. If omitted, the article's title (PAGENAME) is assumed. ::Note: a ''name='' parameter causes {{tl|Coord}} to emit an [[hCard]] [[microformat]] using that name, ''even if used within an existing hCard''. Do not use when the name is that of a person (e.g for a gravesite), as the generated hCard would be invalid. Also, do not use square brackets in names. :* '''notes=''' specifies text to be displayed immediately following the coordinates. This is primarily intended for adding footnotes to coordinates displayed beside the title. :* '''qid=''' specify Q item to display the coordinates of. Used primarily by Wikidata powered infoboxes. ==Helper functions== Helper functions are available to manipulate the output from {{tl|Coord}} when it appears in a container template such as an infobox. ===To extract the latitude from a Coord template=== {{See also|Geographic coordinate conversion}} Use: <code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}</nowiki> </code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}} and similarly to extract the longitude, use: <code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}</nowiki></code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}} :'''Note: this method removes the microformat markup, and should not be used inside templates which emit parent microformats, such as infoboxes or table-row templates.''' === Displaying all coordinate links on one map === The template {{tl|GeoGroup}} can be used in an article with coordinates. This template creates links to mapping services which display all the coordinates on a single map, and links to other services which allow the coordinates to be used or downloaded in a variety of formats. == Examples == {{for|the guideline on coordinate precision|WP:OPCOORD}} {| class="wikitable" | <code><nowiki>{{coord|43.651234|-79.383333}}</nowiki></code> | {{coord|43.651234|-79.383333}} | Toronto – Fully decimal – western hemisphere implied by negation |- | <code><nowiki>{{coord|43.65|-79.38}}</nowiki></code> | {{coord|43.65|-79.38}} | Toronto – low precision decimal |- | <code><nowiki>{{coord|43.6500|-79.3800}}</nowiki></code> | {{coord|43.6500|-79.3800}} | Toronto – medium precision decimal with trailing zeroes |- | <code><nowiki>{{coord|43.653500|N|79.384000|W}}</nowiki></code> | {{coord|43.653500|N|79.384000|W}} | Toronto – high precision decimal with explicit hemisphere notation |- | <code><nowiki>{{coord|43|29|N|79|23|W}}</nowiki></code> | {{coord|43|29|N|79|23|W}} | Toronto – degrees & minutes |- | <code><nowiki>{{coord|43|29|13|N|79|23|02|W}}</nowiki></code> | {{coord|43|29|4|N|79|23|0|W}} | Toronto – degrees, minutes & seconds |- | <code><nowiki>{{coord|43|29|12.6|N|79|23|02.4|W}}</nowiki></code> | {{coord|43|29|12.6|N|79|23|02.4|W}} | Toronto – degrees, minutes, seconds & fractions of seconds |- | <code><nowiki>{{coord|55.752222|N|37.615556|E}}</nowiki></code> | {{coord|55.752222|N|37.615556|E}} | Moscow – N & E |- | <code><nowiki>{{coord|55.752222|N|37.615556|E|format=dms}}</nowiki></code> | {{coord|55.752222|N|37.615556|E|format=dms}} | Convert to dms format |- | <code><nowiki>{{coord|39.098095|-94.587307|format=dms}}</nowiki></code> | {{coord|39.098095|-94.587307|format=dms}} | Decimal conversion without N/S/E/W |- | <code><nowiki>{{coord|55.752222|N|37.615556|E|format=dec|name=Moscow}}</nowiki></code> | {{coord|55.752222|N|37.615556|E|format=dec|name=Moscow}} | Convert to decimal and label on some maps |- | <code><nowiki>{{coord|33|55|S|18|25|E}}</nowiki></code> | {{coord|33|55|S|18|25|E}} | Cape Town – S & E |- | <code><nowiki>{{coord|35|00|N|105|00|E}}</nowiki></code> | {{coord|35|00|N|105|00|E}} | People's Republic of China |- | <code><nowiki>{{coord|22|54|30|S|43|14|37|W}}</nowiki></code> | {{coord|22|54|30|S|43|14|37|W}} | Rio – S & W |- | <code><nowiki>{{coord|22|S|43|W}}</nowiki></code> | {{coord|22|S|43|W}} | A [[Degree Confluence Project|degree confluence]]. |- | <code><nowiki>{{coord|52|28|N|1|55|W|region:GB_type:city|notes=<ref>{{cite web|url=http://www.fallingrain.com/world/UK/0/Birmingham.html|title=Birmingham}}</ref>|display=inline,title}}</nowiki></code> | {{coord|52|28|N|1|55|W|region:GB_type:city|notes=<ref>{{cite web|url=http://www.fallingrain.com/world/UK/0/Birmingham.html|title=Birmingham}}</ref>|display=inline,title}} | Birmingham – with display, notes, and parameter settings; note that these coordinates are also displayed at the top of this page. |- | <code><nowiki>{{coord|51|25.813|N|0|43.945|E}}</nowiki></code> | {{coord|51|25.813|N|0|43.945|E}} | Navigation buoy in the River Medway, England. |- | <code><nowiki>{{coord|51|36.287|N|8|32.018|W}}</nowiki></code> | {{coord|51|36.287|N|8|32.018|W}} | Lighthouse at the [[Old Head of Kinsale]] as defined by the [[Commissioners of Irish Lights]]. |} ===References=== {{reflist}} == Coordinate parameters == The first unnamed parameter following the longitude is an optional string of coordinate parameters, separated by underscores. These parameters help [[mw:GeoHack|GeoHack]] select suitable map resources, and they will become more important when [[meta:Wikimaps|Wikimaps]] becomes fully functional. ===== type:''T'' ===== {{Wikipedia:WikiProject Geographical coordinates/type:}} ===== scale:''N'' ===== {{Wikipedia:WikiProject Geographical coordinates/scale:}} ===== dim:''D'' ===== The <code>dim:</code> parameter defines the [[diameter]] of a viewing circle centered on the coordinate. While the default unit of measurement is metres, the <code>km</code> suffix may be appended to indicate kilometres. [[tswiki:GeoHack|GeoHack]] uses <code>dim:</code> to select a [[Scale (map)|map scale]] such that the viewing circle appears roughly {{convert|10|cm|in|0}} in diameter on a 72 [[Dots per inch|dpi]] computer monitor. If no <code>dim:</code>, <code>type:</code>, or <code>scale:</code> parameters are provided, GeoHack uses its default viewing circle of {{convert|30|km|mi}}. {| class="wikitable" |+ Samples ! Subject ! View diameter ! Markup ! Result |- | [[Western Hemisphere]] | style="text-align:right;" | {{convert|10000|km|mi}} | <code><nowiki>{{coord|0|N|90|W|dim:10000km}}</nowiki></code> | {{coord|0|N|90|W|dim:10000km}} |- | [[Ohio]] | style="text-align:right;" | {{convert|400|km|mi}} | <code><nowiki>{{coord|40.5|-82.5|dim:400km}}</nowiki></code> | {{coord|40.5|-82.5|dim:400km}} |- | [[Dresden]] | style="text-align:right;" | {{convert|20000|m|mi}} | <code><nowiki>{{coord|51.03|13.73|dim:20000}}</nowiki></code> | {{coord|51.03|13.73|dim:20000}} |- | [[Statue of Liberty]] | style="text-align:right;" | {{convert|100|m|ft}} | <code><nowiki>{{coord|40.6892|-74.0445|dim:100}}</nowiki></code> | {{coord|40.6892|-74.0445|dim:100}} |- |} ===== region:''R'' ===== {{Wikipedia:WikiProject Geographical coordinates/region:}} ===== globe:''G'' ===== {{Wikipedia:WikiProject Geographical coordinates/globe:}} ===== source:''S'' ===== {{Wikipedia:WikiProject Geographical coordinates/source:}} ==Per-user display customization== {{UF-coord-classes}} ==Incorrect uses and maintenance categories== The template has some input checks built in. Most errors display a <span style="color:red;">'''bold, red'''</span> message inline and categorize the article in the [[Wikipedia:Hidden category|hidden]] [[Wikipedia:Categorization#Non-article and maintenance categories|maintenance category]] '''[[:Category:Pages with malformed coordinate tags|Pages with malformed coordinate tags]]'''. There {{#IFEQ:{{PAGESINCATEGORY:Pages with malformed coordinate tags}}|1|is currently '''1''' page|are currently '''{{PAGESINCATEGORY:Pages with malformed coordinate tags}}''' pages}} in that category. See the category description for further instructions. A more thorough daily report of coordinates needing repair is at [[tools:~dispenser/view/File viewer#log:coord-enwiki.log]]. ''See also:'' [[WT:GEO#To do]] ==Internals== This template is completely powered by the [[Wikipedia:Lua|Lua]] <code>[[:Module:Coordinates]]</code>. ===Class names=== The class names '''geo''', '''latitude''' and '''longitude''' are used to generate the microformat and '''MUST NOT''' be changed. ===History=== This template used to use a lot of [[Template:Coord/doc/internals|sub templates]] but these have all been replaced by {{tlm|Coordinates}}. ===Template Data=== This template uses overloading{{clarify|reason=What does this mean? Where is it defined?}} which does not work well with the [[Wikipedia:TemplateData|VisualEditor/TemplateData]]. Consider using "Edit source" instead of the visual editor until this defect is corrected. To facilitate visual editing in the meantime, consider using {{tl|coordDec}} for signed decimal degrees, {{tl|coordDMS}} when degrees minutes and seconds are specified, and {{tl|coordDM}} when just degrees and minutes are given. {{TemplateData header}} <templatedata>{ "description": "Encodes the latitude and longitude coordinates of a location, provides a link to map of the location. This template does not work well with the Visual Editor, consider using {{coordDec}} for signed decimal degrees, {{coordDMS}} when degrees minutes and seconds are specified {{coordDM}} when only degrees and minutes are specified. To use this template you will need to use positional parameter following one of these schemes: {{coord | D | M | S | NS | D | M | S | EW | geo | opts}}, {{coord | D | M | NS | D | M | EW | geo | opts}}, {{coord | D| NS | D| EW | geo | opts}} {{coord | sD | sD | geo | opts}} where D is degrees, M is minutes, S seconds, sD signed decimal degrees, NS is N or S, EW is E or W, opts are named parameter and geo are the coordinate parameters described on the main doc page.", "params": { "1": { "label": "1", "description": "Either degrees latitude or a signed decimal degrees latitude", "type": "number", "required": false, "suggested": true }, "2": { "label": "2", "description": "Either: minutes latitude, signed decimal degrees longitude or 'N' or 'S'.", "type": "string", "required": false, "suggested": true }, "3": { "label": "3", "description": "Either: second latitude, degrees longitude, 'N' or 'S' or GeoHack parameters", "type": "string", "required": false }, "4": { "label": "4", "description": "Either: degrees longitude, 'N', 'S', 'E' or 'W' or GeoHack parameters", "type": "string", "required": false }, "5": { "label": "5", "description": "Either: degrees longitude, minutes longitude or GeoHack parameters", "type": "string", "required": false }, "6": { "label": "6", "description": "Either: minutes longitude, 'E' or 'W' or GeoHack parameters", "type": "string", "required": false }, "7": { "label": "7", "description": "Either second longitude, or GeoHack parameters", "type": "string", "required": false }, "8": { "label": "8", "description": "'E' or 'W'.", "type": "string", "required": false }, "9": { "label": "9", "description": "GeoHack parameters. Example: dim:30_region:US-WI_type:event", "type": "string", "required": false }, "qid": { "label": "Wikidata item", "description": "Retrieve coordinates from a WikiData entry instead of from this template's parameters", "type": "line", "required": false, "example": "Q513" }, "display": { "label": "Display", "description": "Where it is displayed. Can be one of: 'inline' in the body of the article, 'title' at the top of the article or 'inline,title' both", "type": "line", "default": "inline", "suggested": true, "required": false, "suggestedvalues": [ "inline", "title", "inline,title" ] }, "name": { "label": "Name", "description": "a label to place on maps (default is PAGENAME)", "type": "string", "required": false }, "notes": { "label": "Notes", "description": "text displayed immediately following the coordinates", "type": "string", "required": false }, "format": { "label": "Format", "description": "How the coordinates are displayed, either 'dec' or 'dms'", "type": "line", "required": false, "suggestedvalues": [ "dec", "dms" ] }, "nosave": { "label": "Geosearch", "description": "Set to 'true' if you want to avoid this coordinate to be registered in the geosearch API.", "type": "string", "required": false } } }</templatedata> <!-- "1": { "label": "Latitude degrees", "description": "The degrees part of the latitude. This can either be a whole number in which case minutes and seconds can also be provided in subsequent parameters, or in decimal format, negative for south e.g. -79.38.", "type": "number", "required": true }, "2": { "label": "Latitude minutes", "description": "The minutes part of the latitude. Do not be overly precise, 1' is approximately 1.5km, Not used if decimal degrees are specified.", "type": "number", "required": false }, "3": { "label": "Latitude seconds", "description": "The minutes part of the latitude. Do not be overly precise, 1\" is approximately 30m. Not used if decimal degrees are specified.", "type": "number", "required": false }, "4": { "label": "Latitude direction", "description": "Direction part of latitude: N or S. Not used if decimal degrees are specified.", "type": "string", "required": false }, "5": { "label": "Longitude degrees", "description": "The degrees part of the longitude. This can either be a whole number in which case minutes and seconds can also be provided in subsequent parameters, or in decimal format, negative for west e.g. -79.38.", "type": "number", "required": true }, "6": { "label": "Longitude minutes", "description": "The minutes part of the longitude. Do not be overly precise—1' is approximately 1.5 km. Not used if decimal degrees are specified.", "type": "number", "required": false }, "7": { "label": "Longitude seconds", "description": "The minutes part of the longitude. Do not be overly precise—1\" is approximately 30 m. Not used if decimal degrees are specified.", "type": "number", "required": false }, "8": { "label": "Longitude direction", "description": "Direction part of longitude: E or W. Not used if decimal degrees are specified.", "type": "string", "required": false }, "9": { "label": "Coordinate parameters", "description": "Optional parameters separated by an underscore '_', dim:N (viewing diameter in metres), region:R (ISO 3166-1 alpha-2 or ISO 3166-2 code), type:T (e.g. landmark or city (30,000)). For example 'dim:30_region:US-WI_type:event'", "type": "string", "required": false }, --> == See also == * [[Special:PrefixIndex/Template:GeoTemplate]], for the geohack page templates used on Earth and other bodies <includeonly>{{Sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Coordinates conversion templates]] [[Category:Coordinates templates]] [[Category:TemplateData documentation with overload problems]] [[Category:Templates generating Geo]] [[Category:Title templates]] }}</includeonly> 4d777f808441ad8f957e551b553ab13de52277e4 Template:Terminate sentence 10 248 3076 550 2023-11-09T18:01:10Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Terminate_sentence]] wikitext text/x-wiki {{{1}}}{{#if:{{#invoke:text|sentenceTerminated|{{{1|}}}}}||{{{2|.}}}}}<noinclude>{{documentation}}</noinclude> e4142b47b3d7959b82f582bab87ca10768d4d93b Template:Navbar-header 10 1664 3078 3077 2023-11-09T18:01:12Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Navbar-header]] wikitext text/x-wiki <templatestyles src="Navbar-header/styles.css"/><div class="navbar-header" {{#if:{{{fontcolor|}}}|style="color:{{{fontcolor}}};"}}>{{{1}}}<!-- -->{{#invoke:navbar|navbar | 1 = {{{2<noinclude>|Navbar-header</noinclude>}}} | {{#ifeq: {{{plain|}}} |<!--equals:-->1 |<!--then:-->plain |<!--else:-->mini }} = 1 | {{#if: {{{fontcolor|}}} | fontstyle | NULL }} = color:{{{fontcolor}}}; }}<!-- --></div><noinclude> {{documentation}} <!-- Add cats and interwikis to the /doc subpage, not here! --> </noinclude> f24c880cdd077ccfcd14829309531bb17c5bb430 Template:Navbar-header/styles.css 10 1665 3080 3079 2023-11-09T18:01:13Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Navbar-header/styles.css]] sanitized-css text/css /* {{pp|small=y}} */ .navbar-header { text-align: center; position: relative; white-space: nowrap; } .navbar-header .navbar { position: absolute; right: 0; top: 0; margin: 0 5px; } cb7fd125aebdbd99d22411362a9b5007e97c32be Template:Tracks Wikidata 10 1255 3082 3081 2023-11-09T18:01:17Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tracks_Wikidata]] wikitext text/x-wiki {{Sister project | image = [[File:Wikidata-logo-with-magnifying-glass-icon.svg|40px|link=Wikipedia:Wikidata]] | position = {{{position|}}} | text = This {{template other | template | {{module other | module | {{category other | category | page <!-- not template, module, or category --> }} }} }} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see {{Section link||{{{section}}}}} for details. | the [[Wikidata]] propert{{#if:{{{2|}}}|ies:|y:}} {{#invoke:Uses Wikidata|usesProperty}} }} }}<includeonly>{{#switch:{{SUBPAGENAME}} |sandbox |testcases |doc= <!--no category--> |#default = {{template other | [[Category:Templates tracking Wikidata]] | {{module other | [[Category:Modules tracking Wikidata]] | {{category other | <!-- if used in a category, don't automatically add parent category --> | <!-- not template, module, or category --> }} }} }} }}</includeonly><noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc sub-page --> </noinclude> 42e72b2011b4a187af0427756de66dc2772894cc Template:Coord how-to 10 1666 3084 3083 2023-11-09T18:01:17Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Coord_how-to]] wikitext text/x-wiki <div class="{{{class|}}}" style="display:table; background:#f5fffa; color: #222; margin: 1em 0; border: 1px solid #a2a9b1;{{{style|}}}"> <div style="background:#cef2e0; font-weight:bold; border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;"> {{{{{navbar|navbar-header}}}|1= {{{title|Quick how to}}} |2=Coord_how-to}} </div><!--end header --> <div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;"> To add {{Coord|57|18|22|N|4|27|32|W}} to the top of an article, use {{Tl|Coord}}, thus: :'''<code><nowiki>{{Coord|57|18|22|N|4|27|32|W|display=title}}</nowiki></code>''' These [[Geographic coordinate system|coordinates]] are in [[Degree (angle)|degrees]], [[Minute and second of arc|minutes, and seconds of arc]]. "title" means that the coordinates will be displayed next to the article's title at the top of the page (in desktop view only; title coordinates do not display in mobile view) and before any other text or images. It also records the coordinates as the primary location of the page's subject in Wikipedia's geosearch API. </div><!-- end of section 1 --> <div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;"> To add {{Coord|44.1124|N|87.9130|W}} to the top of an article, use either :'''<code><nowiki>{{Coord|44.1124|N|87.9130|W|display=title}}</nowiki></code>''' (which does not require minutes or seconds but does require the user to specify north/ south and east/west) ''or'' :'''<code><nowiki>{{Coord|44.1124|-87.9130|display=title}}</nowiki></code>''' (in which the north and east are presumed by positive values while the south and west are negative ones). These coordinates are in [[decimal degrees]]. </div><!-- end of section 2 --> <div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;"> * Degrees, minutes and seconds, when used, must each be separated by a [[Vertical bar|pipe ("|")]]. * [[Geodetic datum|Map datum]] must be [[WGS84]] if possible (except for off-Earth bodies). * Avoid [[Wikipedia:WikiProject Geographical coordinates#Precision guidelines|excessive precision]] (0.0001° is <11 m, 1″ is <31 m). * Maintain [[MOS:UNCERTAINTY|consistency]] of decimal places or minutes/seconds between latitude and longitude. * Latitude (N/S) must appear before longitude (E/W). </div><!-- end of section 3 --> <div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;"> Optional coordinate parameters follow the longitude and are separated by [[Underscore|an underscore ("_")]]:<br /> *[[Template:Coord#dim:D|dim]]: <code>dim:</code>'''''N''''' (viewing <u>d</u>iameter <u>i</u>n <u>m</u>etres) *[[Template:Coord#region:R|region]]: <code>region:</code>'''''R''''' ([[ISO 3166-1 alpha-2]] or [[ISO 3166-2]] code) *[[Template:Coord#type:T|type]]: <code>type:</code>'''''T''''' (<code>landmark</code> or <code>city(30,000)</code>, for example) Other optional parameters are separated by [[Vertical bar|a pipe ("|")]]:<br /> *[[Template:Coord#Display|display]] *: {{Para|display|inline}} (the default) to display in the body of the article only, *: {{Para|display|title}} to display at the top of the article only (in desktop view only; title coordinates do not display in mobile view), or *: {{Para|display|inline,title}} to display in both places. *[[Template:Coord#Name|name]] *: <code>name=</code>'''''X''''' to label the place on maps (default is [[mw:Help:Magic words#Page names|PAGENAME]]) Thus: '''<code><nowiki>{{Coord|44.1172|-87.9135|dim:30_region:US-WI_type:event</nowiki></code>''' ::'''<code><nowiki>|display=inline,title|name=accident site}}</nowiki></code>''' Use {{Para|display|title}} (or {{Para|display|inline,title}}) once per article, for the subject of the article, where appropriate. </div><!-- end of section 4 --> <div style="padding: 0.2em 0.4em;"> * Per [[WP:ORDER]], the template is placed at the bottom of the article in the 'end matter', after any [[Wikipedia:Navigation template|navigation templates]], but before all [[Wikipedia:Categorization|categories]], including the {{tl|DEFAULTSORT}} template. This template may also be placed within an [[Help:Infobox|infobox]], instead of at the bottom of the article. * For full details, refer to {{tl|Coord/doc}}. * Additional guidance is available at [[Wikipedia:Obtaining geographic coordinates|obtaining coordinates]] and [[Geographic coordinate conversion|converting coordinates]]. </div><!-- end of section 5 --> </div><noinclude> {{documentation|content= ==Usage== This a sub-tempate for {{tl|Coord/doc}}. [[Category:WikiProject Geographical coordinates]] }}</noinclude> 35f82b649ae37b5b4c2a11e6a668f083bab05a26 Template:Navbox visibility 10 1294 3086 3085 2023-11-09T18:01:18Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Navbox_visibility]] wikitext text/x-wiki Templates using the classes <code>class=navbox</code> ({{tl|navbox}}) or <code>class=nomobile</code> ({{tl|sidebar}}) are not displayed on the [https://en.m.wikipedia.org/ mobile web site] of English Wikipedia. Mobile page views account for approximately 65% of all page views (90-day average {{as of|May 2023|lc=y}}).<noinclude> {{documentation}} </noinclude> 3b1f65df829fd9f96b9c4f002fba38a0fd987a6b Template:Uses Wikidata 10 1069 3088 3087 2023-11-09T18:01:19Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Uses_Wikidata]] wikitext text/x-wiki {{Sister project | position = {{{position|}}} | project = data | text = This {{module other|module|template}} uses {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see {{Section link||{{{section}}}}} for details. | the [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}: {{#invoke:Uses Wikidata|usesProperty}} }}}}<includeonly>{{#switch:{{SUBPAGENAME}} |sandbox |testcases |doc= <!--no category--> |#default={{module other |[[Category:Modules using data from Wikidata]] |{{template other |[[Category:Templates using data from Wikidata]]}} }} }}</includeonly><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage --> </noinclude> dd057e93ccd4b8fe8d6acd82c6d1d3ee2589a36a Führerredux Wiki:WikiProject Geographical coordinates/globe: 4 1667 3090 3089 2023-11-09T18:01:21Z Führerredux 2 1 revision imported from [[:wikipedia:Wikipedia:WikiProject_Geographical_coordinates/globe:]] wikitext text/x-wiki The <code>globe:</code> parameter specifies the [[planet]], [[dwarf planet]], [[asteroid]], or [[natural satellite]] upon which the coordinates reside. Apart from ''[[earth]]'' (the default), recognized values are: ''[[Mercury (planet)|mercury]]'', ''[[venus]]'', ''[[moon]]'', ''[[mars]]'', ''[[Phobos (moon)|phobos]]'', ''[[Deimos (moon)|deimos]]'', ''[[Ceres (dwarf planet)|ceres]]'', ''[[4 Vesta|vesta]]'', ''[[jupiter]]'', ''[[Ganymede (moon)|ganymede]]'', ''[[Callisto (moon)|callisto]]'', ''[[Io (moon)|io]]'', ''[[Europa (moon)|europa]]'', ''[[Mimas (moon)|mimas]]'', ''[[enceladus]]'', ''[[Tethys (moon)|tethys]]'', ''[[Dione (moon)|dione]]'', ''[[Rhea (moon)|rhea]]'', ''[[Titan (moon)|titan]]'', ''[[Hyperion (moon)|hyperion]]'', ''[[Iapetus (moon)|iapetus]]'', ''[[Phoebe (moon)|phoebe]]'', ''[[Miranda (moon)|miranda]]'', ''[[Ariel (moon)|ariel]]'', ''[[Umbriel (moon)|umbriel]]'', ''[[Titania (moon)|titania]]'', ''[[Oberon (moon)|oberon]]'', ''[[Triton (moon)|triton]]'', ''[[pluto]]'', and ''[[Charon (moon)|charon]]''. {| class="wikitable sortable" |+ Samples ! Subject ! G ! Markup ! Result |- | [[Kittu (crater)|Kittu Crater]] | ganymede | <code><nowiki>{{coord|0.4|N|334.6|W|globe:ganymede}}</nowiki></code> | {{coord|0.4|N|334.6|W|globe:ganymede}} |- | [[Viking 2]] lander | mars | <code><nowiki>{{coord|48.269|N|225.990|W|globe:mars}}</nowiki></code> | {{coord|48.269|N|225.990|W|globe:mars}} |- | [[Mozart (crater)|Mozart Crater]] | mercury | <code><nowiki>{{coord|7.8|N|190.5|W|globe:mercury}}</nowiki></code> | {{coord|7.8|N|190.5|W|globe:mercury}} |- | [[Apollo 11]] lander | moon | <code><nowiki>{{coord|0|40|26.69|N|23|28|22.69|E|globe:moon}}</nowiki></code> | {{coord|0|40|26.69|N|23|28|22.69|E|globe:moon}} |- | [[Ksa (crater)|Ksa Crater]] | titan | <code><nowiki>{{coord|14.0|N|65.4|W|globe:titan}}</nowiki></code> | {{coord|14.0|N|65.4|W|globe:titan}} |- | [[Venera 13]] lander | venus | <code><nowiki>{{coord|7.5|S|303|E|globe:venus}}</nowiki></code> | {{coord|7.5|S|303|E|globe:venus}} |- | [[Stickney (crater)|Stickney Crater]] | phobos | <code><nowiki>{{coord|1|N|49|W|globe:phobos}}</nowiki></code> | {{coord|1|N|49|W|globe:phobos}} |} Very rough mapping is provided on geohack for almost all supported globes. The pop-out WikiMiniAtlas system provides limited mapping for Moon, Mars, Mercury, Venus, Io, and Titan, {{as of|2021|02|lc=1}}. The maps roughly implies a coordinate reference system, but does not clearly specify one (unlike Earth's WGS84). Since the template defaults to east longitude, the <code>|W|</code> direction must be specified for globes that measure longitude westward. For celestial coordinates, use {{tl|Sky}} instead. [[Category:WikiProject Geographical coordinates]] ac8ba8717272d81a67cf6d6c89bd07c44965c6dc Führerredux Wiki:WikiProject Geographical coordinates/region: 4 1668 3092 3091 2023-11-09T18:01:23Z Führerredux 2 1 revision imported from [[:wikipedia:Wikipedia:WikiProject_Geographical_coordinates/region:]] wikitext text/x-wiki The <code>region:</code> parameter specifies the political region for terrestrial coordinates. It is used to select appropriate map resources. If no <code>region:</code> parameter is provided, [[tswiki:GeoHack|GeoHack]] attempts to determine the region from the coordinates. The region should be supplied as either a two character [[ISO 3166-1 alpha-2]] country code or an [[ISO 3166-2]] region code. Examples of [[ISO 3166-1 alpha-2]] codes: {{columns-list| * '''AQ''' Antarctica * '''AU''' Australia * '''BR''' Brazil * '''DE''' Germany * '''GB''' United Kingdom * '''HK''' Hong Kong * '''IN''' India * '''LK''' Sri Lanka * '''RU''' Russia * '''US''' United States}} Examples of [[ISO 3166-2]] region codes: {{columns-list| * '''DE-TH''' Thuringia, Germany * '''GB-BIR''' Birmingham, England * '''NO-03''' Oslo, Norway * '''US-NY''' New York state, US}} The oceans have the following Wiki assigned code elements per [[:de:Vorlage:Coordinate#Ozeane]]. * '''XN''' Arctic Ocean * '''XA''' Atlantic Ocean * '''XI''' Indian Ocean * '''XP''' Pacific Ocean * '''XS''' Southern Ocean In addition, two Wiki assigned code elements can be used with {{tl|coord}}: * '''XZ''' for objects in or above international waters (similar to [[UN/LOCODE]]). * '''ZZ''' for use in examples. {| class="wikitable" cellpadding="20" |+ Samples ! Focus region ! Region ! Markup ! Result |- | Switzerland | <code>CH</code> | <code><nowiki>{{coord|46.9524|N|7.4396|E|region:CH}}</nowiki></code> | {{coord|46.9524|N|7.4396|E|region:CH}} |- | Berlin, Germany | <code>DE-BE</code> | <code><nowiki>{{coord|52.5164|N|13.3775|E|region:DE-BE}}</nowiki></code> | {{coord|52.5164|N|13.3775|E|region:DE-BE}} |} [[Category:WikiProject Geographical coordinates]] af478499a611b769b017fad30805b13e8221cc30 Führerredux Wiki:WikiProject Geographical coordinates/scale: 4 1669 3094 3093 2023-11-09T18:01:23Z Führerredux 2 1 revision imported from [[:wikipedia:Wikipedia:WikiProject_Geographical_coordinates/scale:]] wikitext text/x-wiki The <code>scale:</code> parameter specifies the desired [[scale (map)|map scale]] as 1:''N'', overriding the scale implied by any <code>[[#type:T|type:]]</code> parameter. [[tswiki:GeoHack|GeoHack]] uses <code>scale:</code> to select a map scale for a 72 [[Dots per inch|dpi]] computer monitor. If no <code>dim:</code>, <code>type:</code>, or <code>scale:</code> parameters are provided, GeoHack uses its default scale of 1:300,000. {| class="wikitable" |+ Samples ! Subject ! Scale ! Markup ! Result |- |[[Big Ben]] |align=right|1:500 |<code><nowiki>{{coord|51.500611|N|0.124611|W|scale:500}}</nowiki></code> |{{coord|51.500611|N|0.124611|W|scale:500}} |- |[[Palace of Westminster]] |align=right|1:5,000 |<code><nowiki>{{coord|51.5006|N|0.1246|W|scale:5000}}</nowiki></code> |{{coord|51.5006|N|0.1246|W|scale:5000}} |- |[[City of Westminster]] |align=right|1:50,000 |<code><nowiki>{{coord|51.501|N|0.125|W|scale:50000}}</nowiki></code> |{{coord|51.501|N|0.125|W|scale:50000}} |- |[[Greater London]] |align=right|1:500,000 |<code><nowiki>{{coord|51.50|N|0.12|W|scale:500000}}</nowiki></code> |{{coord|51.50|N|0.12|W|scale:500000}} |} [[Category:WikiProject Geographical coordinates]] a577d814da250e0ddf28a80dccfa978d6bda0027 Führerredux Wiki:WikiProject Geographical coordinates/source: 4 1670 3096 3095 2023-11-09T18:01:24Z Führerredux 2 1 revision imported from [[:wikipedia:Wikipedia:WikiProject_Geographical_coordinates/source:]] wikitext text/x-wiki Specifies, where present, the data source and data source format/datum, and optionally, the original data, presented in parentheses. This is initially primarily intended for use by geotagging robots, so that data is not blindly repeatedly copied from format to format and Wikipedia to Wikipedia, with progressive loss of precision and attributability. Examples: * A lat/long geotag derived from an [[Ordnance Survey]] [[Ordnance Survey National Grid|National Grid Reference]] NM&nbsp;435&nbsp;355 found in the English-language Wikipedia would be tagged as "source:enwiki-osgb36(NM435355)" * A latitude-longitude location sourced from data taken from the German-language Wikipedia would be tagged as "source:dewiki" – and so on, for other language codes; * A location sourced from the public domain [[GEOnet Names Server|GeoNet Names Server]] database would be tagged as "source:GNS". No datum or format information is needed, since by default all Wikipedia coordinates are in latitude/longitude format based on the [[World Geodetic System|WGS84]] datum. Similarly, US locations sourced from the similar public domain [[Geographic Names Information System|GNIS]] database would be tagged as "source:GNIS". [[Category:WikiProject Geographical coordinates]] caf1408990661ff81d9edcc1ee786751081527aa Führerredux Wiki:WikiProject Geographical coordinates/type: 4 1671 3098 3097 2023-11-09T18:01:24Z Führerredux 2 1 revision imported from [[:wikipedia:Wikipedia:WikiProject_Geographical_coordinates/type:]] wikitext text/x-wiki The <code>type:</code> parameter specifies the type of location for reverse mapping (for instance, to select a marker icon in the [[Wikipedia:WikiMiniAtlas|WikiMiniAtlas]]). It also sets the [[Scale (map)|map scale]], which can however be overridden by ''[[#dim:D|dim:]]'' or ''[[#scale:N|scale:]]''. Valid types are: {| align="center" class="wikitable" ! T ! Description ! Map scale |- | '''adm1st''' | Administrative unit of country, 1st level (province, state), see [[List of administrative divisions by country|table]], e.g. [[U.S. state]]s |align="right" | 1:1,000,000 |- | '''adm2nd''' | Administrative unit of country, 2nd level, see [[List of administrative divisions by country|table]], e.g. [[county (United States)]] |align="right" | 1:300,000 |- | '''adm3rd''' | Administrative unit of country, 3rd level, see [[List of administrative divisions by country|table]] |align="right" | 1:100,000 |- | '''airport''' | airports and airbases |align="right" | 1:30,000 |- | '''city('''''pop''''')''' | cities, towns, villages, hamlets, suburbs, subdivisions, neighborhoods, and other human settlements (including unincorporated and/or abandoned ones) with known population<br/>Please replace ''pop'' with a number. Commas in ''pop'' will be ignored. There should be no blanks. |align="right" | 1:30,000 ... 1:300,000 |- | '''city''' | cities, towns, villages, hamlets, suburbs, subdivisions, neighborhoods, and other human settlements (including unincorporated and/or abandoned ones) with unspecified population</br>These are treated as minor cities. |align="right" | 1:100,000 |- | '''country''' | (e.g. "type:country") |align="right" | 1:10,000,000 |- | '''edu''' | schools, colleges, and universities |align="right" | 1:10,000 |- | '''event''' | one-time or regular events and incidents that occurred at a specific location, including battles, earthquakes, festivals, and shipwrecks |align="right" | 1:50,000 |- | '''forest''' | forests and woodlands |align="right" | 1:50,000 |- | '''glacier''' | glaciers and icecaps |align="right" | 1:50,000 |- | '''isle''' | islands and isles |align="right" | 1:100,000 |- | '''landmark''' | buildings (including churches, factories, museums, theatres, and power plants but excluding schools and railway stations), caves, cemeteries, cultural landmarks, geologic faults, headlands, intersections, mines, ranches, roads, structures (including antennas, bridges, castles, dams, lighthouses, monuments, and stadiums), tourist attractions, valleys, and other points of interest |align="right" | 1:10,000 |- | '''mountain''' | peaks, mountain ranges, hills, submerged reefs, and seamounts |align="right" | 1:100,000 |- | '''pass''' | mountain passes |align="right" | 1:10,000 |- | '''railwaystation''' | stations, stops, and maintenance areas of railways and trains, including railroad, metro, rapid transit, underground, subway, elevated railway, etc. |align="right" | 1:10,000 |- | '''river''' | rivers, canals, creeks, brooks, and streams, including intermittent ones |align="right" | 1:100,000 |- | '''satellite''' | geo-stationary satellites |align="right" | 1:10,000,000 |- | '''waterbody''' | bays, fjords, lakes, reservoirs, ponds, lochs, loughs, meres, lagoons, estuaries, inland seas, and waterfalls |align="right" | 1:100,000 |- | '''camera''' | To indicate the location of where a specific image was taken. This type is used by coordinate templates on File pages. |align="right" | 1:10,000 |- | | ''Default scale: if no type is used or the type is not defined in the GeoHack extension'' |align="right" | 1:300,000 |} {| class="wikitable" |+ Samples ! T ! Markup ! Result |- | '''waterbody''' | <code><nowiki>{{coord|46|43|N|7|58|E|type:waterbody}}</nowiki></code> | {{coord|46|43|N|7|58|E|type:waterbody}} |} [[Category:WikiProject Geographical coordinates]] 7016fdfb370cc695e3f6ab439d3a71a4351a5cb8 Template:UF-coord-classes 10 1672 3100 3099 2023-11-09T18:01:25Z Führerredux 2 1 revision imported from [[:wikipedia:Template:UF-coord-classes]] wikitext text/x-wiki To always display coordinates as DMS values, add this to [[Special:Mypage/common.css|your common.css]]: <syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px"> .geo-default { display: inline } .geo-nondefault { display: inline } .geo-dec { display: none } .geo-dms { display: inline } </syntaxhighlight> To always display coordinates as decimal values, add this to [[Special:Mypage/common.css|your common.css]]: <syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px"> .geo-default { display: inline } .geo-nondefault { display: inline } .geo-dec { display: inline } .geo-dms { display: none } </syntaxhighlight> To display coordinates in both formats, add this to [[Special:Mypage/common.css|your common.css]]: <syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px"> .geo-default { display: inline } .geo-nondefault { display: inline } .geo-dec { display: inline } .geo-dms { display: inline } .geo-multi-punct { display: inline } </syntaxhighlight> If CSS is disabled, or you have an old copy of [[MediaWiki:Common.css]] cached, you will see both formats. (You can either clear your cache or manually refresh this URL: {{Plain link|url=https://en.wikipedia.org/w/index.php?title=MediaWiki:Common.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=2678400}}.) To disable display of the blue globe adjacent to coordinates, add this to [[Special:Mypage/common.js|your common.js]]: <syntaxhighlight lang="javascript" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px"> var wma_settings = {enabled:false} </syntaxhighlight> Note that this will disable [[meta:WikiMiniAtlas|WikiMiniAtlas]]. See also: {{section link|Wikipedia:Manual of Style/Dates and numbers|Geographical coordinates}}.<noinclude> [[Category:Coordinates templates]] [[Category:Microformat (uF) message templates]] [[Category:WikiProject Geographical coordinates|τ]] </noinclude> 31012e4b57af9d700090a8426a0a905684be6518 Template:Tlm 10 1673 3102 3101 2023-11-09T18:01:25Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tlm]] wikitext text/x-wiki {{#invoke:tlm|format_link}}<noinclude>{{documentation}} 4ad7a6ab500f2a6f21da459c329c828b24999af4 Module:Tlm 828 1674 3104 3103 2023-11-09T18:01:26Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Tlm]] Scribunto text/plain local export = {} local variables_nullary = { ["CURRENTYEAR"] = "mw:Help:Magic words#Date and time"; ["CURRENTMONTH"] = "mw:Help:Magic words#Date and time"; ["CURRENTMONTH1"] = "mw:Help:Magic words#Date and time"; -- undocumented ["CURRENTMONTH2"] = "mw:Help:Magic words#Date and time"; -- undocumented ["CURRENTMONTHNAME"] = "mw:Help:Magic words#Date and time"; ["CURRENTMONTHNAMEGEN"] = "mw:Help:Magic words#Date and time"; ["CURRENTMONTHABBREV"] = "mw:Help:Magic words#Date and time"; ["CURRENTDAY"] = "mw:Help:Magic words#Date and time"; ["CURRENTDAY2"] = "mw:Help:Magic words#Date and time"; ["CURRENTDOW"] = "mw:Help:Magic words#Date and time"; ["CURRENTDAYNAME"] = "mw:Help:Magic words#Date and time"; ["CURRENTTIME"] = "mw:Help:Magic words#Date and time"; ["CURRENTHOUR"] = "mw:Help:Magic words#Date and time"; ["CURRENTWEEK"] = "mw:Help:Magic words#Date and time"; ["CURRENTTIMESTAMP"] = "mw:Help:Magic words#Date and time"; ["LOCALYEAR"] = "mw:Help:Magic words#Date and time"; ["LOCALMONTH"] = "mw:Help:Magic words#Date and time"; ["LOCALMONTH1"] = "mw:Help:Magic words#Date and time"; -- undocumented ["LOCALMONTH2"] = "mw:Help:Magic words#Date and time"; -- undocumented ["LOCALMONTHNAME"] = "mw:Help:Magic words#Date and time"; ["LOCALMONTHNAMEGEN"] = "mw:Help:Magic words#Date and time"; ["LOCALMONTHABBREV"] = "mw:Help:Magic words#Date and time"; ["LOCALDAY"] = "mw:Help:Magic words#Date and time"; ["LOCALDAY2"] = "mw:Help:Magic words#Date and time"; ["LOCALDOW"] = "mw:Help:Magic words#Date and time"; ["LOCALDAYNAME"] = "mw:Help:Magic words#Date and time"; ["LOCALTIME"] = "mw:Help:Magic words#Date and time"; ["LOCALHOUR"] = "mw:Help:Magic words#Date and time"; ["LOCALWEEK"] = "mw:Help:Magic words#Date and time"; ["LOCALTIMESTAMP"] = "mw:Help:Magic words#Date and time"; ["SITENAME"] = "mw:Help:Magic words#Technical metadata"; ["SERVER"] = "mw:Help:Magic words#Technical metadata"; ["SERVERNAME"] = "mw:Help:Magic words#Technical metadata"; ["DIRMARK"] = "mw:Help:Magic words#Technical metadata"; ["DIRECTIONMARK"] = "mw:Help:Magic words#Technical metadata"; ["ARTICLEPATH"] = "mw:Help:Magic words#Technical metadata"; -- undocumented ["SCRIPTPATH"] = "mw:Help:Magic words#Technical metadata"; ["STYLEPATH"] = "mw:Help:Magic words#Technical metadata"; ["CURRENTVERSION"] = "mw:Help:Magic words#Technical metadata"; ["CONTENTLANGUAGE"] = "mw:Help:Magic words#Technical metadata"; ["CONTENTLANG"] = "mw:Help:Magic words#Technical metadata"; ["PAGEID"] = "mw:Help:Magic words#Technical metadata"; ["CASCADINGSOURCES"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONID"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONDAY"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONDAY2"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONMONTH"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONMONTH1"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONYEAR"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONTIMESTAMP"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONUSER"] = "mw:Help:Magic words#Technical metadata"; ["REVISIONSIZE"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFPAGES"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFARTICLES"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFFILES"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFEDITS"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFVIEWS"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFUSERS"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFADMINS"] = "mw:Help:Magic words#Technical metadata"; ["NUMBEROFACTIVEUSERS"] = "mw:Help:Magic words#Technical metadata"; ["FULLPAGENAME"] = "mw:Help:Magic words#Page names"; ["PAGENAME"] = "mw:Help:Magic words#Page names"; ["BASEPAGENAME"] = "mw:Help:Magic words#Page names"; ["SUBPAGENAME"] = "mw:Help:Magic words#Page names"; ["SUBJECTPAGENAME"] = "mw:Help:Magic words#Page names"; ["ARTICLEPAGENAME"] = "mw:Help:Magic words#Page names"; ["TALKPAGENAME"] = "mw:Help:Magic words#Page names"; ["ROOTPAGENAME"] = "mw:Help:Magic words#Page names"; -- undocumented ["FULLPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["PAGENAMEE"] = "mw:Help:Magic words#Page names"; ["BASEPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["SUBPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["SUBJECTPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["ARTICLEPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["TALKPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["ROOTPAGENAMEE"] = "mw:Help:Magic words#Page names"; -- undocumented ["NAMESPACE"] = "mw:Help:Magic words#Namespaces"; ["NAMESPACENUMBER"] = "mw:Help:Magic words#Namespaces"; ["SUBJECTSPACE"] = "mw:Help:Magic words#Namespaces"; ["ARTICLESPACE"] = "mw:Help:Magic words#Namespaces"; ["TALKSPACE"] = "mw:Help:Magic words#Namespaces"; ["NAMESPACEE"] = "mw:Help:Magic words#Namespaces"; ["SUBJECTSPACEE"] = "mw:Help:Magic words#Namespaces"; ["TALKSPACEE"] = "mw:Help:Magic words#Namespaces"; ["!"] = "mw:Help:Magic words#Other"; ["="] = "mw:Help:Magic words#Other"; -- case-insensitive! ["noexternallanglinks"] = "mw:Extension:Wikibase Client"; ["wbreponame"] = "mw:Extension:Wikibase Client"; ["pendingchangelevel"] = "mw:Extension:FlaggedRevs"; -- not documented yet ["numberofwikis"] = "mw:Extension:SiteMatrix"; } local variables_nonnullary = { ["PROTECTIONLEVEL"] = "mw:Help:Magic words#Technical metadata"; ["DISPLAYTITLE"] = "mw:Help:Magic words#Technical metadata"; ["DEFAULTSORT"] = "mw:Help:Magic words#Technical metadata"; ["PAGESINCATEGORY"] = "mw:Help:Magic words#Technical metadata"; ["PAGESINCAT"] = "mw:Help:Magic words#Technical metadata"; ["NUMBERINGROUP"] = "mw:Help:Magic words#Technical metadata"; ["PAGESINNS"] = "mw:Help:Magic words#Technical metadata"; ["PAGESINNAMESPACE"] = "mw:Help:Magic words#Technical metadata"; ["FULLPAGENAME"] = "mw:Help:Magic words#Page names"; ["PAGENAME"] = "mw:Help:Magic words#Page names"; ["BASEPAGENAME"] = "mw:Help:Magic words#Page names"; ["SUBPAGENAME"] = "mw:Help:Magic words#Page names"; ["SUBJECTPAGENAME"] = "mw:Help:Magic words#Page names"; ["ARTICLEPAGENAME"] = "mw:Help:Magic words#Page names"; ["TALKPAGENAME"] = "mw:Help:Magic words#Page names"; ["ROOTPAGENAME"] = "mw:Help:Magic words#Page names"; -- undocumented ["FULLPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["PAGENAMEE"] = "mw:Help:Magic words#Page names"; ["BASEPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["SUBPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["SUBJECTPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["ARTICLEPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["TALKPAGENAMEE"] = "mw:Help:Magic words#Page names"; ["ROOTPAGENAMEE"] = "mw:Help:Magic words#Page names"; -- undocumented ["NAMESPACE"] = "mw:Help:Magic words#Namespaces"; ["NAMESPACENUMBER"] = "mw:Help:Magic words#Namespaces"; ["SUBJECTSPACE"] = "mw:Help:Magic words#Namespaces"; ["ARTICLESPACE"] = "mw:Help:Magic words#Namespaces"; ["TALKSPACE"] = "mw:Help:Magic words#Namespaces"; ["NAMESPACEE"] = "mw:Help:Magic words#Namespaces"; ["SUBJECTSPACEE"] = "mw:Help:Magic words#Namespaces"; ["TALKSPACEE"] = "mw:Help:Magic words#Namespaces"; ["PAGEID"] = "mw:Help:Magic words#Technical metadata of another page"; ["PAGESIZE"] = "mw:Help:Magic words#Technical metadata of another page"; ["PROTECTIONLEVEL"] = "mw:Help:Magic words#Technical metadata of another page"; ["CASCADINGSOURCES"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONID"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONDAY"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONDAY2"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONMONTH"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONMONTH1"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONYEAR"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONTIMESTAMP"] = "mw:Help:Magic words#Technical metadata of another page"; ["REVISIONUSER"] = "mw:Help:Magic words#Technical metadata of another page"; ["SHORTDESC"] = "mw:Extension:Wikibase Client"; } local parser_functions = { -- built-ins ["localurl"] = "mw:Help:Magic words#URL data"; ["localurle"] = "mw:Help:Magic words#URL data"; ["fullurl"] = "mw:Help:Magic words#URL data"; ["fullurle"] = "mw:Help:Magic words#URL data"; ["canonicalurl"] = "mw:Help:Magic words#URL data"; ["canonicalurle"] = "mw:Help:Magic words#URL data"; ["filepath"] = "mw:Help:Magic words#URL data"; ["urlencode"] = "mw:Help:Magic words#URL data"; ["urldecode"] = "mw:Help:Magic words#URL data"; ["anchorencode"] = "mw:Help:Magic words#URL data"; ["ns"] = "mw:Help:Magic words#Namespaces"; ["nse"] = "mw:Help:Magic words#Namespaces"; ["formatnum"] = "mw:Help:Magic words#Formatting"; ["#dateformat"] = "mw:Help:Magic words#Formatting"; ["#formatdate"] = "mw:Help:Magic words#Formatting"; ["lc"] = "mw:Help:Magic words#Formatting"; ["lcfirst"] = "mw:Help:Magic words#Formatting"; ["uc"] = "mw:Help:Magic words#Formatting"; ["ucfirst"] = "mw:Help:Magic words#Formatting"; ["padleft"] = "mw:Help:Magic words#Formatting"; ["padright"] = "mw:Help:Magic words#Formatting"; ["plural"] = "mw:Help:Magic words#Localization"; ["grammar"] = "mw:Help:Magic words#Localization"; ["gender"] = "mw:Help:Magic words#Localization"; ["int"] = "mw:Help:Magic words#Localization"; ["#language"] = "mw:Help:Magic words#Miscellaneous"; ["#special"] = "mw:Help:Magic words#Miscellaneous"; ["#speciale"] = "mw:Help:Magic words#Miscellaneous"; ["#tag"] = "mw:Help:Magic words#Miscellaneous"; -- [[mw:Extension:ParserFunctions]] ["#expr"] = "mw:Help:Extension:ParserFunctions##expr"; ["#if"] = "mw:Help:Extension:ParserFunctions##if"; ["#ifeq"] = "mw:Help:Extension:ParserFunctions##ifeq"; ["#iferror"] = "mw:Help:Extension:ParserFunctions##iferror"; ["#ifexpr"] = "mw:Help:Extension:ParserFunctions##ifexpr"; ["#ifexist"] = "mw:Help:Extension:ParserFunctions##ifexist"; ["#rel2abs"] = "mw:Help:Extension:ParserFunctions##rel2abs"; ["#switch"] = "mw:Help:Extension:ParserFunctions##switch"; ["#time"] = "mw:Help:Extension:ParserFunctions##time"; ["#timel"] = "mw:Help:Extension:ParserFunctions##timel"; ["#titleparts"] = "mw:Help:Extension:ParserFunctions##titleparts"; -- other extensions ["#babel"] = "mw:Extension:Babel#Usage"; ["#categorytree"] = "mw:Extension:CategoryTree#The {{#categorytree}} parser function"; ["#commaseparatedlist"] = "mw:Extension:Wikibase Client"; ["#coordinates"] = "mw:Extension:GeoData#Parser function"; ["#invoke"] = "mw:Extension:Scribunto#Usage"; ["#lst"] = "mw:Extension:Labeled Section Transclusion#How it works"; ["#lsth"] = "mw:Extension:Labeled Section Transclusion#How it works"; -- not available, it seems ["#lstx"] = "mw:Extension:Labeled Section Transclusion#How it works"; ["noexternallanglinks"] = "mw:Extension:Wikibase Client"; ["noreplace"] = "mw:Extension:Wikibase Client"; ["pendingchangelevel"] = "mw:Extension:FlaggedRevs"; -- not documented yet ["#property"] = "mw:Extension:Wikibase Client"; ["#statements"] = "mw:Extension:Wikibase Client"; ["#target"] = "mw:Extension:MassMessage"; -- not documented yet } -- rudimentary local function is_valid_pagename(pagename) if (pagename == "") or pagename:match("[%[%]%|%{%}#\127<>]") then return false end return true end local function hook_special(page) if is_valid_pagename(page) then return "[[Special:" .. page .. "|" .. page .. "]]" else return page end end local function hook_wdprop(name) if mw.wikibase.resolvePropertyId(name) then return ("[[:d:Special:EntityPage/%s|%s]]"):format(mw.wikibase.resolvePropertyId(name), name) else return name end end local parser_function_hooks = { ["#special"] = hook_special; ["#speciale"] = hook_special; ["int"] = function (mesg) if is_valid_pagename(mesg) then return ("[[:MediaWiki:" .. mesg .. "|" .. mesg .. "]]") else return mesg end end; ["#categorytree"] = function (cat) if is_valid_pagename(cat) and not (mw.title.getCurrentTitle().fullText == ("Category:" .. cat)) then return ("[[:Category:" .. cat .. "|" .. cat .. "]]") else return cat end end; ["#invoke"] = function (mod) if is_valid_pagename(mod) and not (mw.title.getCurrentTitle().fullText == ("Module:" .. mod)) then return ("[[Module:%s|%s]]"):format(mod, mod) else return mod end end; -- ["#tag"] = function (tag) -- local doc_table = require('Module:wikitag link').doc_table -- if doc_table[tag] then -- return ("[[%s|%s]]"):format(doc_table[tag], tag) -- else -- return tag -- end -- end; ["#property"] = hook_wdprop; ["#statements"] = hook_wdprop; } function export.format_link(frame) local args = frame:getParent().args local output = { frame.args.nested and "&#123;&#123;" or "<code>&#123;&#123;" } local templ = args[1] local noargs = true if not templ then if mw.title.getCurrentTitle().fullText == frame:getParent():getTitle() then -- demo mode return "<code>{{<var>{{{1}}}</var>|<var>{{{2}}}</var>|...}}</code>" else error("The template name must be given.") end end for key, value in pairs(args) do if key ~= 1 then noargs = false break end end local function render_title(templ) local marker, rest marker, rest = templ:match("^([Ss][Uu][Bb][Ss][Tt]):(.*)") if not marker then marker, rest = templ:match("^([Ss][Aa][Ff][Ee][Ss][Uu][Bb][Ss][Tt]):(.*)") end if marker then templ = rest table.insert(output, ("[[mw:Manual:Substitution|%s]]:"):format(marker)) end if noargs and variables_nullary[templ] then table.insert(output, ("[[%s|%s]]"):format(variables_nullary[templ], templ)) return end marker, rest = templ:match("^([Mm][Ss][Gg][Nn][Ww]):(.*)") if marker then templ = rest -- not the most accurate documentation ever table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker)) else marker, rest = templ:match("^([Mm][Ss][Gg]):(.*)") if marker then templ = rest table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker)) -- ditto end end marker, rest = templ:match("^([Rr][Aa][Ww]):(.*)") if marker then table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker)) -- missingno. templ = rest end if templ:match("^%s*/") then table.insert(output, ("[[%s]]"):format(templ)) return end marker, rest = templ:match("^(.-):(.*)") if marker then local lcmarker = marker:lower() if parser_functions[lcmarker] then if parser_function_hooks[lcmarker] then rest = parser_function_hooks[lcmarker](rest) end table.insert(output, ("[[%s|%s]]:%s"):format(mw.uri.encode(parser_functions[lcmarker], "WIKI"), marker, rest)) return elseif variables_nonnullary[marker] then table.insert(output, ("[[%s|%s]]:%s"):format(variables_nonnullary[marker], marker, rest)) return end end if templ:match("[%[%]%|%{%}#\127<>]") then table.insert(output, templ) return end if marker then if mw.site.namespaces[marker] then if (title == "") or (mw.title.getCurrentTitle().fullText == templ) then table.insert(output, templ) else table.insert(output, ("[[:%s|%s]]"):format(templ, templ)) end return elseif mw.site.interwikiMap()[marker:lower()] then -- XXX: not sure what to do now… table.insert(output, ("[[:%s:|%s]]:%s"):format(marker, marker, rest)) return end end if (templ == "") or (mw.title.getCurrentTitle().fullText == ("Template:" .. templ)) then table.insert(output, templ) else table.insert(output, ("[[Template:%s|%s]]"):format(templ, templ)) end end render_title(templ) local i = 2 while args[i] do table.insert(output, "&#124;" .. args[i]) i = i + 1 end for key, value in pairs(args) do if type(key) == "string" then table.insert(output, "&#124;" .. key .. "=" .. value) end end table.insert(output, frame.args.nested and "&#125;&#125;" or "&#125;&#125;</code>") return table.concat(output) end return export 526fb2fa1758bae142ff0b2b0cea935a7bf1d07f Template:Transwiki guide candidate 10 1675 3106 3105 2023-11-09T18:01:27Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Transwiki_guide_candidate]] wikitext text/x-wiki <includeonly>{{ombox |style=border:#38C400 1px solid; |image=[[File:Edit-copy purple-wikit.svg|48px|alt=|link=]] |text=This is a candidate to have a [[Help:Transwiki guide|transwiki guide]]. Due to the complexity of the project or template, this guide will help editors adapt it to a remote wiki when this cannot be done by simply copying the codes of one single template. If you know this template syntax very well, feel free to start the guide in {{#if:{{{1|}}}|[[{{{1}}}]]|[[{{FULLPAGENAME}}/Transwiki guide]]}}. Once the transwiki guide page is complete, replace this tag by {{tl|Transwiki guide}}. }}[[Category:Transwiki guide candidate|{{{2|{{PAGENAME}}}}}]]</includeonly><noinclude> {{doc|content= {{Transwiki guide candidate||*}} Adding this tag to the page will automatically include it in [[:Category:Transwiki guide candidate]]. If the template has a document page, you should add it inside the <code><nowiki><includeonly></nowiki></code> tag in the document. Parameter {{{1}}} provides the option to change the page name of the transwiki guide if desired, <nowiki>[[{{FULLPAGENAME}}/Transwiki guide]]</nowiki> by default. Parameter {{{2}}} is for changing the category sorting, <nowiki>{{PAGENAME}}</nowiki> by default. }} f23b4f6bbbd56c5c856fbb1bcead70c17a389838 Template:Coord/longitude 10 1676 3108 3107 2023-11-09T18:02:23Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Coord/longitude]] wikitext text/x-wiki {{#invoke:coordinates|coord2text|{{{1|{{Coord}}}}}|long}}<noinclude> {{documentation |content= {{no documentation}} [[Category:Coordinates templates]] [[Category:Wikidata templates]] }} </noinclude> 620a82b0a398fde71313e56c3ace7b5f84699cbd Template:Improve documentation 10 1677 3110 3109 2023-11-09T18:02:29Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Improve_documentation]] wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B={{Ombox | type = content | name = Improve documentation | class = ambox-Refimprove | image = [[File:Edit-copy green with red question mark.svg|50x40px|link=|alt=Edit-copy green with red question mark]] | text = This {{#switch:{{NAMESPACE}}|Module=module|#default=template}}'s [[Wikipedia:Template documentation|documentation]] is '''missing, inadequate, or does not accurately describe its functionality and/or the [[Help:Template#Parameters|parameters]] in its code.''' Please help [{{fullurl:{{FULLPAGENAME}}{{#ifexist:{{FULLPAGENAME}}/doc|/doc}}|action=edit}} to expand and improve it]. {{#if:{{{talk|{{{1|}}}}}} |See [[{{TALKPAGENAME}}|talk page]] for details.|}} {{#if:{{{date|{{{2|}}}}}} |{{smaller|''({{{date}}})''}}}} }}<includeonly>{{Subpage other||{{Dated maintenance category|||Templates with missing or incorrect documentation}}}}</includeonly>}}<noinclude> {{Documentation}} </noinclude> f5ee14f86927e9f4417e5b2feb60ce1f765cd49f Template:No documentation 10 1678 3112 3111 2023-11-09T18:02:30Z Führerredux 2 1 revision imported from [[:wikipedia:Template:No_documentation]] wikitext text/x-wiki #REDIRECT [[Template:Improve documentation]] e143e50c85e46c0394365f74e3688aa439b542fe Module:Coordinates 828 589 3113 1327 2023-11-09T18:05:04Z Führerredux 2 Scribunto text/plain --[[ This module is intended to replace the functionality of {{Coord}} and related templates. It provides several methods, including {{#invoke:Coordinates | coord }} : General function formatting and displaying coordinate values. {{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal degree values to DMS format. {{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format to decimal degree format. {{#invoke:Coordinates | link }} : Export the link used to reach the tools ]] require('strict') local math_mod = require("Module:Math") local coordinates = {}; local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true); local current_page = mw.title.getCurrentTitle() local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' ); local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '&params=' --[[ Helper function, replacement for {{coord/display/title}} ]] local function displaytitle(coords) return mw.getCurrentFrame():extensionTag{ name = 'indicator', args = { name = 'coordinates' }, content = '<span id="coordinates">: ' .. coords .. '</span>' } end --[[ Helper function, used in detecting DMS formatting ]] local function dmsTest(first, second) if type(first) ~= 'string' or type(second) ~= 'string' then return nil end local s = (first .. second):upper() return s:find('^[NS][EW]$') or s:find('^[EW][NS]$') end --[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]] local function makeInvokeFunc(funcName) return function (frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Coord' }) return coordinates[funcName](args, frame) end end --[[ Helper function, handle optional args. ]] local function optionalArg(arg, supplement) return arg and arg .. supplement or '' end --[[ Formats any error messages generated for display ]] local function errorPrinter(errors) local result = "" for i,v in ipairs(errors) do result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />' end return result end --[[ Determine the required CSS class to display coordinates Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself default is the mode as specificied by the user when calling the {{coord}} template mode is the display mode (dec or dms) that we will need to determine the css class for ]] local function displayDefault(default, mode) if default == "" then default = "dec" end if default == mode then return "geo-default" else return "geo-nondefault" end end --[[ specPrinter Output formatter. Takes the structure generated by either parseDec or parseDMS and formats it for inclusion on Wikipedia. ]] local function specPrinter(args, coordinateSpec) local uriComponents = coordinateSpec["param"] if uriComponents == "" then -- RETURN error, should never be empty or nil return "ERROR param was empty" end if args["name"] then uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"]) end local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">' .. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> ' .. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>' .. '</span>' local lat = tonumber( coordinateSpec["dec-lat"] ) or 0 local geodeclat if lat < 0 then -- FIXME this breaks the pre-existing precision geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S" else geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N" end local long = tonumber( coordinateSpec["dec-long"] ) or 0 local geodeclong if long < 0 then -- FIXME does not handle unicode minus geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W" else geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E" end local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">' .. geodeclat .. ' ' .. geodeclong .. '</span>' local geonumhtml = '<span class="geo">' .. coordinateSpec["dec-lat"] .. '; ' .. coordinateSpec["dec-long"] .. '</span>' local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>' .. '<span class="geo-multi-punct">&#xfeff; / &#xfeff;</span>' .. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">'; if not args["name"] then inner = inner .. geodechtml .. '<span style="display:none">&#xfeff; / ' .. geonumhtml .. '</span></span>' else inner = inner .. '<span class="vcard">' .. geodechtml .. '<span style="display:none">&#xfeff; / ' .. geonumhtml .. '</span>' .. '<span style="display:none">&#xfeff; (<span class="fn org">' .. args["name"] .. '</span>)</span></span></span>' end local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css' return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = stylesheetLink } } .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents .. ' ' .. inner .. ']</span>' end --[[ Helper function, convert decimal to degrees ]] local function convert_dec2dms_d(coordinate) local d = math_mod._round( coordinate, 0 ) .. "°" return d .. "" end --[[ Helper function, convert decimal to degrees and minutes ]] local function convert_dec2dms_dm(coordinate) coordinate = math_mod._round( coordinate * 60, 0 ); local m = coordinate % 60; coordinate = math.floor( (coordinate - m) / 60 ); local d = coordinate % 360 .."°" return d .. string.format( "%02d′", m ) end --[[ Helper function, convert decimal to degrees, minutes, and seconds ]] local function convert_dec2dms_dms(coordinate) coordinate = math_mod._round( coordinate * 60 * 60, 0 ); local s = coordinate % 60 coordinate = math.floor( (coordinate - s) / 60 ); local m = coordinate % 60 coordinate = math.floor( (coordinate - m) / 60 ); local d = coordinate % 360 .."°" return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s ) end --[[ Helper function, convert decimal latitude or longitude to degrees, minutes, and seconds format based on the specified precision. ]] local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) local coord = tonumber(coordinate) local postfix if coord >= 0 then postfix = firstPostfix else postfix = secondPostfix end precision = precision:lower(); if precision == "dms" then return convert_dec2dms_dms( math.abs( coord ) ) .. postfix; elseif precision == "dm" then return convert_dec2dms_dm( math.abs( coord ) ) .. postfix; elseif precision == "d" then return convert_dec2dms_d( math.abs( coord ) ) .. postfix; end end --[[ Convert DMS format into a N or E decimal coordinate ]] local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str) local degrees = tonumber(degrees_str) local minutes = tonumber(minutes_str) or 0 local seconds = tonumber(seconds_str) or 0 local factor = 1 if direction == "S" or direction == "W" then factor = -1 end local precision = 0 if seconds_str then precision = 5 + math.max( math_mod._precision(seconds_str), 0 ); elseif minutes_str and minutes_str ~= '' then precision = 3 + math.max( math_mod._precision(minutes_str), 0 ); else precision = math.max( math_mod._precision(degrees_str), 0 ); end local decimal = factor * (degrees+(minutes+seconds/60)/60) return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based. end --[[ Checks input values to for out of range errors. ]] local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong ) local errors = {}; lat_d = tonumber( lat_d ) or 0; lat_m = tonumber( lat_m ) or 0; lat_s = tonumber( lat_s ) or 0; long_d = tonumber( long_d ) or 0; long_m = tonumber( long_m ) or 0; long_s = tonumber( long_s ) or 0; if strong then if lat_d < 0 then table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"}) end if long_d < 0 then table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"}) end --[[ #coordinates is inconsistent about whether this is an error. If globe: is specified, it won't error on this condition, but otherwise it will. For not simply disable this check. if long_d > 180 then table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"}) end ]] end if lat_d > 90 then table.insert(errors, {source, "latitude degrees > 90"}) end if lat_d < -90 then table.insert(errors, {source, "latitude degrees < -90"}) end if lat_m >= 60 then table.insert(errors, {source, "latitude minutes >= 60"}) end if lat_m < 0 then table.insert(errors, {source, "latitude minutes < 0"}) end if lat_s >= 60 then table.insert(errors, {source, "latitude seconds >= 60"}) end if lat_s < 0 then table.insert(errors, {source, "latitude seconds < 0"}) end if long_d >= 360 then table.insert(errors, {source, "longitude degrees >= 360"}) end if long_d <= -360 then table.insert(errors, {source, "longitude degrees <= -360"}) end if long_m >= 60 then table.insert(errors, {source, "longitude minutes >= 60"}) end if long_m < 0 then table.insert(errors, {source, "longitude minutes < 0"}) end if long_s >= 60 then table.insert(errors, {source, "longitude seconds >= 60"}) end if long_s < 0 then table.insert(errors, {source, "longitude seconds < 0"}) end return errors; end --[[ parseDec Transforms decimal format latitude and longitude into the structure to be used in displaying coordinates ]] local function parseDec( lat, long, format ) local coordinateSpec = {} local errors = {} if not long then return nil, {{"parseDec", "Missing longitude"}} elseif not tonumber(long) then return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}} end errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false ); coordinateSpec["dec-lat"] = lat; coordinateSpec["dec-long"] = long; local mode = coordinates.determineMode( lat, long ); coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} if format then coordinateSpec.default = format else coordinateSpec.default = "dec" end return coordinateSpec, errors end --[[ parseDMS Transforms degrees, minutes, seconds format latitude and longitude into the a structure to be used in displaying coordinates ]] local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format ) local coordinateSpec, errors, backward = {}, {} lat_f = lat_f:upper(); long_f = long_f:upper(); -- Check if specified backward if lat_f == 'E' or lat_f == 'W' then lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true; end errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true ); if not long_d then return nil, {{"parseDMS", "Missing longitude" }} elseif not tonumber(long_d) then return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }} end if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then if lat_f:upper() == 'S' then lat_d = '-' .. lat_d; end if long_f:upper() == 'W' then long_d = '-' .. long_d; end return parseDec( lat_d, long_d, format ); end end coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}} coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}} if format then coordinateSpec.default = format else coordinateSpec.default = "dms" end return coordinateSpec, errors, backward end --[[ Check the input arguments for coord to determine the kind of data being provided and then make the necessary processing. ]] local function formatTest(args) local result, errors local backward, primary = false, false local function getParam(args, lim) local ret = {} for i = 1, lim do ret[i] = args[i] or '' end return table.concat(ret, '_') end if not args[1] then -- no lat logic return errorPrinter( {{"formatTest", "Missing latitude"}} ) elseif not tonumber(args[1]) then -- bad lat logic return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} ) elseif not args[4] and not args[5] and not args[6] then -- dec logic result, errors = parseDec(args[1], args[2], args.format) if not result then return errorPrinter(errors); end -- formatting for geohack: geohack expects D_N_D_E notation or D;D notation -- wikiminiatlas doesn't support D;D notation -- #coordinates parserfunction doesn't support negative decimals with NSWE result.param = table.concat({ math.abs(tonumber(args[1])), ((tonumber(args[1]) or 0) < 0) and 'S' or 'N', math.abs(tonumber(args[2])), ((tonumber(args[2]) or 0) < 0) and 'W' or 'E', args[3] or ''}, '_') elseif dmsTest(args[4], args[8]) then -- dms logic result, errors, backward = parseDMS(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args.format) if args[10] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 9) elseif dmsTest(args[3], args[6]) then -- dm logic result, errors, backward = parseDMS(args[1], args[2], nil, args[3], args[4], args[5], nil, args[6], args['format']) if args[8] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 7) elseif dmsTest(args[2], args[4]) then -- d logic result, errors, backward = parseDMS(args[1], nil, nil, args[2], args[3], nil, nil, args[4], args.format) if args[6] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 5) else -- Error return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]' end result.name = args.name local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'} for _, v in ipairs(extra_param) do if args[v] then table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' }) end end local ret = specPrinter(args, result) if #errors > 0 then ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]' end return ret, backward end --[[ Generate Wikidata tracking categories. ]] local function makeWikidataCategories(qid) local ret local qid = qid or mw.wikibase.getEntityIdForCurrentPage() if mw.wikibase and current_page.namespace == 0 then if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype if snaktype == 'value' then -- coordinates exist both here and on Wikidata, and can be compared. ret = 'Coordinates on Wikidata' elseif snaktype == 'somevalue' then ret = 'Coordinates on Wikidata set to unknown value' elseif snaktype == 'novalue' then ret = 'Coordinates on Wikidata set to no value' end else -- We have to either import the coordinates to Wikidata or remove them here. ret = 'Coordinates not on Wikidata' end end if ret then return string.format('[[Category:%s]]', ret) else return '' end end --[[ link Simple function to export the coordinates link for other uses. Usage: {{#invoke:Coordinates | link }} ]] function coordinates.link(frame) return coord_link; end --[[ dec2dms Wrapper to allow templates to call dec2dms directly. Usage: {{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix | negative_suffix | precision }} decimal_coordinate is converted to DMS format. If positive, the positive_suffix is appended (typical N or E), if negative, the negative suffix is appended. The specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail to use. ]] coordinates.dec2dms = makeInvokeFunc('_dec2dms') function coordinates._dec2dms(args) local coordinate = args[1] local firstPostfix = args[2] or '' local secondPostfix = args[3] or '' local precision = args[4] or '' return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) end --[[ Helper function to determine whether to use D, DM, or DMS format depending on the precision of the decimal input. ]] function coordinates.determineMode( value1, value2 ) local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) ); if precision <= 0 then return 'd' elseif precision <= 2 then return 'dm'; else return 'dms'; end end --[[ dms2dec Wrapper to allow templates to call dms2dec directly. Usage: {{#invoke:Coordinates | dms2dec | direction_flag | degrees | minutes | seconds }} Converts DMS values specified as degrees, minutes, seconds too decimal format. direction_flag is one of N, S, E, W, and determines whether the output is positive (i.e. N and E) or negative (i.e. S and W). ]] coordinates.dms2dec = makeInvokeFunc('_dms2dec') function coordinates._dms2dec(args) local direction = args[1] local degrees = args[2] local minutes = args[3] local seconds = args[4] return convert_dms2dec(direction, degrees, minutes, seconds) end --[[ coord Main entry point for Lua function to replace {{coord}} Usage: {{#invoke:Coordinates | coord }} {{#invoke:Coordinates | coord | lat | long }} {{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }} ... Refer to {{coord}} documentation page for many additional parameters and configuration options. Note: This function provides the visual display elements of {{coord}}. In order to load coordinates into the database, the {{#coordinates:}} parser function must also be called, this is done automatically in the Lua version of {{coord}}. ]] coordinates.coord = makeInvokeFunc('_coord') function coordinates._coord(args) if not tonumber(args[1]) and not args[2] then args[3] = args[1]; args[1] = nil local entity = mw.wikibase.getEntityObject(args.qid) if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude if precision then precision = -math_mod._round(math.log(precision)/math.log(10),0) args[1] = math_mod._round(args[1],precision) args[2] = math_mod._round(args[2],precision) end end end local contents, backward = formatTest(args) local Notes = args.notes or '' local Display = args.display and args.display:lower() or 'inline' -- it and ti are short for inline,title and title,inline local function isInline(s) -- Finds whether coordinates are displayed inline. return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti' end local function isInTitle(s) -- Finds whether coordinates are displayed in the title. return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti' end local function coord_wrapper(in_args) -- Calls the parser function {{#coordinates:}}. return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or '' end local text = '' if isInline(Display) then text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>' end if isInTitle(Display) then -- Add to output since indicator content is invisible to Lua later on if not isInline(Display) then text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>' end text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid) end if not args.nosave then local page_title, count = mw.title.getCurrentTitle(), 1 if backward then local tmp = {} while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end tmp.count = count; count = 2*(count-1) while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end for i, v in ipairs(tmp) do args[i] = v end else while count <= 9 do args[count] = (args[count] or ''); count = count+1 end end if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end args.notes, args.format, args.display = nil text = text .. coord_wrapper(args) end return text end --[[ coord2text Extracts a single value from a transclusion of {{Coord}}. IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED. Usage: {{#invoke:Coordinates | coord2text | {{Coord}} | parameter }} Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source ]] function coordinates._coord2text(coord,type) if coord == '' or type == '' or not type then return nil end type = mw.text.trim(type) if type == 'lat' or type == 'long' then local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ') if type == 'lat' then result, negative = result[1], 'S' else result, negative = result[2], 'W' end result = mw.text.split(result, '°') if result[2] == negative then result[1] = '-'..result[1] end return result[1] else return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]') end end function coordinates.coord2text(frame) return coordinates._coord2text(frame.args[1],frame.args[2]) end --[[ coordinsert Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}. IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED. Usage: {{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }} Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation. ]] function coordinates.coordinsert(frame) -- for the 2nd or later integer parameter (the first is the coord template, as above) for i, v in ipairs(frame.args) do if i ~= 1 then -- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then -- find from the params= up to the first possibly-present underscore -- and append the i_th coordinsert parameter and a space -- IDK why we're adding a space but it does seem somewhat convenient frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ') end end end if frame.args.name then -- if we can't find the vcard class if not mw.ustring.find(frame.args[1], '<span class="vcard">') then -- take something that looks like a coord template and add the vcard span with class and fn org class local namestr = frame.args.name frame.args[1] = mw.ustring.gsub( frame.args[1], '(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)', '%1<span class="vcard">%2<span style="display:none">&#xfeff; (<span class="fn org">' .. namestr .. '</span>)</span></span>%3' ) -- then find anything from coordinates parameters to the 'end' and attach the title parameter frame.args[1] = mw.ustring.gsub( frame.args[1], '(&params=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ' ) end end -- replace the existing indicator with a new indicator using the modified content frame.args[1] = mw.ustring.gsub( frame.args[1], '(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127', function (inline, coord) return inline .. displaytitle(coord) end ) return frame.args[1] end return coordinates 1592702a4af73583ab80e9e6dba72ae9163d06f5 3114 3113 2023-11-09T18:05:49Z Führerredux 2 Scribunto text/plain --[[ This module is intended to replace the functionality of {{Coord}} and related templates. It provides several methods, including {{#invoke:Coordinates | coord }} : General function formatting and displaying coordinate values. {{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal degree values to DMS format. {{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format to decimal degree format. {{#invoke:Coordinates | link }} : Export the link used to reach the tools ]] require('strict') local math_mod = require("Module:Math") local coordinates = {}; local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true); local current_page = mw.title.getCurrentTitle() local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' ); local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '&params=' --[[ Helper function, replacement for {{coord/display/title}} ]] local function displaytitle(coords) return mw.getCurrentFrame():extensionTag{ name = 'indicator', args = { name = 'coordinates' }, content = '<span id="coordinates">Coordinates: ' .. coords .. '</span>' } end --[[ Helper function, used in detecting DMS formatting ]] local function dmsTest(first, second) if type(first) ~= 'string' or type(second) ~= 'string' then return nil end local s = (first .. second):upper() return s:find('^[NS][EW]$') or s:find('^[EW][NS]$') end --[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]] local function makeInvokeFunc(funcName) return function (frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Coord' }) return coordinates[funcName](args, frame) end end --[[ Helper function, handle optional args. ]] local function optionalArg(arg, supplement) return arg and arg .. supplement or '' end --[[ Formats any error messages generated for display ]] local function errorPrinter(errors) local result = "" for i,v in ipairs(errors) do result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />' end return result end --[[ Determine the required CSS class to display coordinates Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself default is the mode as specificied by the user when calling the {{coord}} template mode is the display mode (dec or dms) that we will need to determine the css class for ]] local function displayDefault(default, mode) if default == "" then default = "dec" end if default == mode then return "geo-default" else return "geo-nondefault" end end --[[ specPrinter Output formatter. Takes the structure generated by either parseDec or parseDMS and formats it for inclusion on Wikipedia. ]] local function specPrinter(args, coordinateSpec) local uriComponents = coordinateSpec["param"] if uriComponents == "" then -- RETURN error, should never be empty or nil return "ERROR param was empty" end if args["name"] then uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"]) end local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">' .. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> ' .. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>' .. '</span>' local lat = tonumber( coordinateSpec["dec-lat"] ) or 0 local geodeclat if lat < 0 then -- FIXME this breaks the pre-existing precision geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S" else geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N" end local long = tonumber( coordinateSpec["dec-long"] ) or 0 local geodeclong if long < 0 then -- FIXME does not handle unicode minus geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W" else geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E" end local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">' .. geodeclat .. ' ' .. geodeclong .. '</span>' local geonumhtml = '<span class="geo">' .. coordinateSpec["dec-lat"] .. '; ' .. coordinateSpec["dec-long"] .. '</span>' local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>' .. '<span class="geo-multi-punct">&#xfeff; / &#xfeff;</span>' .. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">'; if not args["name"] then inner = inner .. geodechtml .. '<span style="display:none">&#xfeff; / ' .. geonumhtml .. '</span></span>' else inner = inner .. '<span class="vcard">' .. geodechtml .. '<span style="display:none">&#xfeff; / ' .. geonumhtml .. '</span>' .. '<span style="display:none">&#xfeff; (<span class="fn org">' .. args["name"] .. '</span>)</span></span></span>' end local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css' return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = stylesheetLink } } .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents .. ' ' .. inner .. ']</span>' end --[[ Helper function, convert decimal to degrees ]] local function convert_dec2dms_d(coordinate) local d = math_mod._round( coordinate, 0 ) .. "°" return d .. "" end --[[ Helper function, convert decimal to degrees and minutes ]] local function convert_dec2dms_dm(coordinate) coordinate = math_mod._round( coordinate * 60, 0 ); local m = coordinate % 60; coordinate = math.floor( (coordinate - m) / 60 ); local d = coordinate % 360 .."°" return d .. string.format( "%02d′", m ) end --[[ Helper function, convert decimal to degrees, minutes, and seconds ]] local function convert_dec2dms_dms(coordinate) coordinate = math_mod._round( coordinate * 60 * 60, 0 ); local s = coordinate % 60 coordinate = math.floor( (coordinate - s) / 60 ); local m = coordinate % 60 coordinate = math.floor( (coordinate - m) / 60 ); local d = coordinate % 360 .."°" return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s ) end --[[ Helper function, convert decimal latitude or longitude to degrees, minutes, and seconds format based on the specified precision. ]] local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) local coord = tonumber(coordinate) local postfix if coord >= 0 then postfix = firstPostfix else postfix = secondPostfix end precision = precision:lower(); if precision == "dms" then return convert_dec2dms_dms( math.abs( coord ) ) .. postfix; elseif precision == "dm" then return convert_dec2dms_dm( math.abs( coord ) ) .. postfix; elseif precision == "d" then return convert_dec2dms_d( math.abs( coord ) ) .. postfix; end end --[[ Convert DMS format into a N or E decimal coordinate ]] local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str) local degrees = tonumber(degrees_str) local minutes = tonumber(minutes_str) or 0 local seconds = tonumber(seconds_str) or 0 local factor = 1 if direction == "S" or direction == "W" then factor = -1 end local precision = 0 if seconds_str then precision = 5 + math.max( math_mod._precision(seconds_str), 0 ); elseif minutes_str and minutes_str ~= '' then precision = 3 + math.max( math_mod._precision(minutes_str), 0 ); else precision = math.max( math_mod._precision(degrees_str), 0 ); end local decimal = factor * (degrees+(minutes+seconds/60)/60) return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based. end --[[ Checks input values to for out of range errors. ]] local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong ) local errors = {}; lat_d = tonumber( lat_d ) or 0; lat_m = tonumber( lat_m ) or 0; lat_s = tonumber( lat_s ) or 0; long_d = tonumber( long_d ) or 0; long_m = tonumber( long_m ) or 0; long_s = tonumber( long_s ) or 0; if strong then if lat_d < 0 then table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"}) end if long_d < 0 then table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"}) end --[[ #coordinates is inconsistent about whether this is an error. If globe: is specified, it won't error on this condition, but otherwise it will. For not simply disable this check. if long_d > 180 then table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"}) end ]] end if lat_d > 90 then table.insert(errors, {source, "latitude degrees > 90"}) end if lat_d < -90 then table.insert(errors, {source, "latitude degrees < -90"}) end if lat_m >= 60 then table.insert(errors, {source, "latitude minutes >= 60"}) end if lat_m < 0 then table.insert(errors, {source, "latitude minutes < 0"}) end if lat_s >= 60 then table.insert(errors, {source, "latitude seconds >= 60"}) end if lat_s < 0 then table.insert(errors, {source, "latitude seconds < 0"}) end if long_d >= 360 then table.insert(errors, {source, "longitude degrees >= 360"}) end if long_d <= -360 then table.insert(errors, {source, "longitude degrees <= -360"}) end if long_m >= 60 then table.insert(errors, {source, "longitude minutes >= 60"}) end if long_m < 0 then table.insert(errors, {source, "longitude minutes < 0"}) end if long_s >= 60 then table.insert(errors, {source, "longitude seconds >= 60"}) end if long_s < 0 then table.insert(errors, {source, "longitude seconds < 0"}) end return errors; end --[[ parseDec Transforms decimal format latitude and longitude into the structure to be used in displaying coordinates ]] local function parseDec( lat, long, format ) local coordinateSpec = {} local errors = {} if not long then return nil, {{"parseDec", "Missing longitude"}} elseif not tonumber(long) then return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}} end errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false ); coordinateSpec["dec-lat"] = lat; coordinateSpec["dec-long"] = long; local mode = coordinates.determineMode( lat, long ); coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} if format then coordinateSpec.default = format else coordinateSpec.default = "dec" end return coordinateSpec, errors end --[[ parseDMS Transforms degrees, minutes, seconds format latitude and longitude into the a structure to be used in displaying coordinates ]] local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format ) local coordinateSpec, errors, backward = {}, {} lat_f = lat_f:upper(); long_f = long_f:upper(); -- Check if specified backward if lat_f == 'E' or lat_f == 'W' then lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true; end errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true ); if not long_d then return nil, {{"parseDMS", "Missing longitude" }} elseif not tonumber(long_d) then return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }} end if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then if lat_f:upper() == 'S' then lat_d = '-' .. lat_d; end if long_f:upper() == 'W' then long_d = '-' .. long_d; end return parseDec( lat_d, long_d, format ); end end coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}} coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}} if format then coordinateSpec.default = format else coordinateSpec.default = "dms" end return coordinateSpec, errors, backward end --[[ Check the input arguments for coord to determine the kind of data being provided and then make the necessary processing. ]] local function formatTest(args) local result, errors local backward, primary = false, false local function getParam(args, lim) local ret = {} for i = 1, lim do ret[i] = args[i] or '' end return table.concat(ret, '_') end if not args[1] then -- no lat logic return errorPrinter( {{"formatTest", "Missing latitude"}} ) elseif not tonumber(args[1]) then -- bad lat logic return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} ) elseif not args[4] and not args[5] and not args[6] then -- dec logic result, errors = parseDec(args[1], args[2], args.format) if not result then return errorPrinter(errors); end -- formatting for geohack: geohack expects D_N_D_E notation or D;D notation -- wikiminiatlas doesn't support D;D notation -- #coordinates parserfunction doesn't support negative decimals with NSWE result.param = table.concat({ math.abs(tonumber(args[1])), ((tonumber(args[1]) or 0) < 0) and 'S' or 'N', math.abs(tonumber(args[2])), ((tonumber(args[2]) or 0) < 0) and 'W' or 'E', args[3] or ''}, '_') elseif dmsTest(args[4], args[8]) then -- dms logic result, errors, backward = parseDMS(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args.format) if args[10] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 9) elseif dmsTest(args[3], args[6]) then -- dm logic result, errors, backward = parseDMS(args[1], args[2], nil, args[3], args[4], args[5], nil, args[6], args['format']) if args[8] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 7) elseif dmsTest(args[2], args[4]) then -- d logic result, errors, backward = parseDMS(args[1], nil, nil, args[2], args[3], nil, nil, args[4], args.format) if args[6] then table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) end if not result then return errorPrinter(errors) end result.param = getParam(args, 5) else -- Error return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]' end result.name = args.name local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'} for _, v in ipairs(extra_param) do if args[v] then table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' }) end end local ret = specPrinter(args, result) if #errors > 0 then ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]' end return ret, backward end --[[ Generate Wikidata tracking categories. ]] local function makeWikidataCategories(qid) local ret local qid = qid or mw.wikibase.getEntityIdForCurrentPage() if mw.wikibase and current_page.namespace == 0 then if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype if snaktype == 'value' then -- coordinates exist both here and on Wikidata, and can be compared. ret = 'Coordinates on Wikidata' elseif snaktype == 'somevalue' then ret = 'Coordinates on Wikidata set to unknown value' elseif snaktype == 'novalue' then ret = 'Coordinates on Wikidata set to no value' end else -- We have to either import the coordinates to Wikidata or remove them here. ret = 'Coordinates not on Wikidata' end end if ret then return string.format('[[Category:%s]]', ret) else return '' end end --[[ link Simple function to export the coordinates link for other uses. Usage: {{#invoke:Coordinates | link }} ]] function coordinates.link(frame) return coord_link; end --[[ dec2dms Wrapper to allow templates to call dec2dms directly. Usage: {{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix | negative_suffix | precision }} decimal_coordinate is converted to DMS format. If positive, the positive_suffix is appended (typical N or E), if negative, the negative suffix is appended. The specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail to use. ]] coordinates.dec2dms = makeInvokeFunc('_dec2dms') function coordinates._dec2dms(args) local coordinate = args[1] local firstPostfix = args[2] or '' local secondPostfix = args[3] or '' local precision = args[4] or '' return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) end --[[ Helper function to determine whether to use D, DM, or DMS format depending on the precision of the decimal input. ]] function coordinates.determineMode( value1, value2 ) local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) ); if precision <= 0 then return 'd' elseif precision <= 2 then return 'dm'; else return 'dms'; end end --[[ dms2dec Wrapper to allow templates to call dms2dec directly. Usage: {{#invoke:Coordinates | dms2dec | direction_flag | degrees | minutes | seconds }} Converts DMS values specified as degrees, minutes, seconds too decimal format. direction_flag is one of N, S, E, W, and determines whether the output is positive (i.e. N and E) or negative (i.e. S and W). ]] coordinates.dms2dec = makeInvokeFunc('_dms2dec') function coordinates._dms2dec(args) local direction = args[1] local degrees = args[2] local minutes = args[3] local seconds = args[4] return convert_dms2dec(direction, degrees, minutes, seconds) end --[[ coord Main entry point for Lua function to replace {{coord}} Usage: {{#invoke:Coordinates | coord }} {{#invoke:Coordinates | coord | lat | long }} {{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }} ... Refer to {{coord}} documentation page for many additional parameters and configuration options. Note: This function provides the visual display elements of {{coord}}. In order to load coordinates into the database, the {{#coordinates:}} parser function must also be called, this is done automatically in the Lua version of {{coord}}. ]] coordinates.coord = makeInvokeFunc('_coord') function coordinates._coord(args) if not tonumber(args[1]) and not args[2] then args[3] = args[1]; args[1] = nil local entity = mw.wikibase.getEntityObject(args.qid) if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude if precision then precision = -math_mod._round(math.log(precision)/math.log(10),0) args[1] = math_mod._round(args[1],precision) args[2] = math_mod._round(args[2],precision) end end end local contents, backward = formatTest(args) local Notes = args.notes or '' local Display = args.display and args.display:lower() or 'inline' -- it and ti are short for inline,title and title,inline local function isInline(s) -- Finds whether coordinates are displayed inline. return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti' end local function isInTitle(s) -- Finds whether coordinates are displayed in the title. return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti' end local function coord_wrapper(in_args) -- Calls the parser function {{#coordinates:}}. return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or '' end local text = '' if isInline(Display) then text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>' end if isInTitle(Display) then -- Add to output since indicator content is invisible to Lua later on if not isInline(Display) then text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>' end text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid) end if not args.nosave then local page_title, count = mw.title.getCurrentTitle(), 1 if backward then local tmp = {} while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end tmp.count = count; count = 2*(count-1) while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end for i, v in ipairs(tmp) do args[i] = v end else while count <= 9 do args[count] = (args[count] or ''); count = count+1 end end if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end args.notes, args.format, args.display = nil text = text .. coord_wrapper(args) end return text end --[[ coord2text Extracts a single value from a transclusion of {{Coord}}. IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED. Usage: {{#invoke:Coordinates | coord2text | {{Coord}} | parameter }} Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source ]] function coordinates._coord2text(coord,type) if coord == '' or type == '' or not type then return nil end type = mw.text.trim(type) if type == 'lat' or type == 'long' then local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ') if type == 'lat' then result, negative = result[1], 'S' else result, negative = result[2], 'W' end result = mw.text.split(result, '°') if result[2] == negative then result[1] = '-'..result[1] end return result[1] else return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]') end end function coordinates.coord2text(frame) return coordinates._coord2text(frame.args[1],frame.args[2]) end --[[ coordinsert Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}. IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED. Usage: {{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }} Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation. ]] function coordinates.coordinsert(frame) -- for the 2nd or later integer parameter (the first is the coord template, as above) for i, v in ipairs(frame.args) do if i ~= 1 then -- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then -- find from the params= up to the first possibly-present underscore -- and append the i_th coordinsert parameter and a space -- IDK why we're adding a space but it does seem somewhat convenient frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ') end end end if frame.args.name then -- if we can't find the vcard class if not mw.ustring.find(frame.args[1], '<span class="vcard">') then -- take something that looks like a coord template and add the vcard span with class and fn org class local namestr = frame.args.name frame.args[1] = mw.ustring.gsub( frame.args[1], '(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)', '%1<span class="vcard">%2<span style="display:none">&#xfeff; (<span class="fn org">' .. namestr .. '</span>)</span></span>%3' ) -- then find anything from coordinates parameters to the 'end' and attach the title parameter frame.args[1] = mw.ustring.gsub( frame.args[1], '(&params=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ' ) end end -- replace the existing indicator with a new indicator using the modified content frame.args[1] = mw.ustring.gsub( frame.args[1], '(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127', function (inline, coord) return inline .. displaytitle(coord) end ) return frame.args[1] end return coordinates 7537667347a7cb2dff4b1094247d64e7b112a9fb Template:Coord/latitude 10 1679 3116 3115 2023-11-09T18:05:57Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Coord/latitude]] wikitext text/x-wiki {{#invoke:coordinates|coord2text|{{{1|{{Coord}}}}}|lat}}<noinclude> {{documentation |content= {{no documentation}} [[Category:Coordinates templates]] [[Category:Wikidata templates]] }} </noinclude> bf7d2fa824206215be0980b599e5f89862c58995 Containment War Against Wickedonezz 0 1640 3117 3006 2023-11-09T18:06:25Z Führerredux 2 wikitext text/x-wiki {{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community Conflicts against Wickedonezz]] | map_type = USA_Minnesota | map_relief = yes | map_label = Cambridge | coordinates = {{Coord|45|33|56|N|93|13|34|W|type:event|display=inline,title}} | map_size = 300 | map_marksize = 7 }} 7b5c070c9f313fe59a212bb34a1d88cb985b5b53 3128 3117 2023-11-09T18:17:53Z Führerredux 2 wikitext text/x-wiki {{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community conflicts against Wickedonezz]] | map_type = USA | map_relief = yes | map_label = Cambridge | coordinates = {{Coord|45|33|56|N|93|13|34|W|type:event|display=inline,title}} | map_size = 300 | map_marksize = 7 }} d3b2e7e2bfe45dee5b636709088c85736aa562cc 3151 3128 2023-11-09T20:14:46Z Führerredux 2 wikitext text/x-wiki {{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community conflicts against Wickedonezz]] | map_type = USA Minnesota | map_relief = yes | map_label = Cambridge | coordinates = {{Coord|45|33|56|N|93|13|34|W|type:event|display=inline,title}} | map_size = 300 | map_marksize = 7 }} 394222b29e14152c1a9faa17e7fac761a595a238 3154 3151 2023-11-09T20:28:46Z Führerredux 2 wikitext text/x-wiki {{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community conflicts against Wickedonezz]] | map_type = USA Minnesota | map_relief = yes | map_label = Cambridge | coordinates = {{Coord|45|33|56|N|93|13|34|W}} | map_size = 300 | map_marksize = 7 | date = 8, November 2023 | territory = The Modder's Coalition gains control of the rest of the world. | result = Modder's Coalition Victory | combatant1 = The Modder's Coalition{{bulletedlist|Führerredux Team|Red Dusk Team|Judgement Day Team}} }} 5250914723f9f3fe644db15831907b05604224a6 3165 3154 2023-11-09T21:10:17Z Führerredux 2 wikitext text/x-wiki {{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community conflicts against Wickedonezz]] | map_type = USA Minnesota | map_relief = yes | map_label = Cambridge | coordinates = {{Coord|45|33|56|N|93|13|34|W}} | map_size = 300 | map_marksize = 7 | date = 8, November 2023 | territory = The Modder's Coalition gains control of the rest of the world. | result = Modder's Coalition Victory | combatant1 = The Modder's Coalition{{bulletedlist | Führerredux Team | Red Dusk Team | Judgement Day Team | Other Associates }} | combatant2 = FuhrerReich: Ice Cold (later: <br>FuhrerReich: Infernal Flames) | commander1 = <strong>Führerredux team</strong>{{bulletedlist | Dax | Thanasis Lanaras | The Detailed Bread | Pascal | Denis_MD }} <strong>Red Dusk team</strong>{{bulletedlist | comrade doggo | DUKESLAYER | sifi-gayming | The Masked Hungarian }} <strong>Judgement Day team</strong>{{bulletedlist | Copernicus | GrievingOhio150 | GDestruction | Pascal }} | commander2 = <strong>FuhrerReich: Ice Cold team</strong>{{bulletedlist | Wickedonezz {{KIA}} | KillerKemzstar | Bookthecook | Lucien }} <strong>Ex-Ice Cold Developers</strong><br>(until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] formed) {{bulletedlist | Professional Janny Curb stomper | Pol | BozuyukKeresteFabrikası | Panzerschokolade Addict }} | combatant1a = Associates{{bulletedlist|FuhrerReich: Ice Cold ex developers}} | casualties2 = Wickedonnezz {{KIA}} KillerKemzstar {{POW}} Lucien {{POW}} }} dec913c2b49a45ecefe8d0088a05a92a8b1088a2 3166 3165 2023-11-09T21:12:55Z Führerredux 2 wikitext text/x-wiki {{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community conflicts against Wickedonezz]] | map_type = USA Minnesota | map_relief = yes | map_label = Cambridge | coordinates = {{Coord|45|33|56|N|93|13|34|W}} | map_size = 300 | map_marksize = 7 | date = 8, November 2023 | territory = The Modder's Coalition gains control of the rest of the world. | result = Modder's Coalition Victory | combatant1 = The Modder's Coalition{{bulletedlist | Führerredux Team | Red Dusk Team | Judgement Day Team | Other Associates }} | combatant2 = FuhrerReich: Ice Cold (later: <br>FuhrerReich: Infernal Flames) | commander1 = <strong>Führerredux team</strong>{{bulletedlist | Dax | Thanasis Lanaras | The Detailed Bread | Pascal | Denis_MD }} <strong>Red Dusk team</strong>{{bulletedlist | comrade doggo | DUKESLAYER | sifi-gayming | The Masked Hungarian }} <strong>Judgement Day team</strong>{{bulletedlist | Copernicus | GrievingOhio150 | GDestruction | Pascal }} <strong>Ex-Ice Cold Developers</strong><br>(on opposing side up until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] was formed) {{bulletedlist | Professional Janny Curb stomper | Pol | BozuyukKeresteFabrikası | Panzerschokolade Addict }} | commander2 = <strong>FuhrerReich: Ice Cold team</strong>{{bulletedlist | Wickedonezz {{KIA}} | KillerKemzstar | Bookthecook | Lucien }} <strong>Ex-Ice Cold Developers</strong><br>(until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] formed) {{bulletedlist | Professional Janny Curb stomper | Pol | BozuyukKeresteFabrikası | Panzerschokolade Addict }} | combatant1a = Associates{{bulletedlist|FuhrerReich: Ice Cold ex developers}} | casualties2 = Wickedonnezz {{KIA}} KillerKemzstar {{POW}} Lucien {{POW}} }} 5e0e1ee5129325cf76738f611b2f7a942b63d6f5 Template:Coord/wikidata 10 1680 3119 3118 2023-11-09T18:07:31Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Coord/wikidata]] wikitext text/x-wiki <includeonly>{{#invoke:coordinates|coord|3={{{1|}}}|format={{{format|}}}|display={{{display|}}}}}</includeonly><noinclude> {{documentation|content= This is a temporary fork of [[Template:coord]] for demonstrating the ability to parse coordinates from wikidata. }}</noinclude> e4b606dc74efb921276bc7f6eed1ed8a23329387 Module:Location map/data/USA 828 1681 3121 3120 2023-11-09T18:16:53Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Location_map/data/USA]] Scribunto text/plain return { name = 'the United States', x = '50.0 + 124.03149777329222 * ((1.9694462586094064-($1 * pi / 180)) * sin(0.6010514667026994 * ($2 + 96) * pi / 180))', y = '50.0 + 1.6155950752393982 * 124.03149777329222 * ( 0.02613325650382181 - (1.3236744353715044 - (1.9694462586094064 - ($1 * pi / 180)) * cos(0.6010514667026994 * ($2 + 96) * pi / 180)))', image = 'Usa edcp location map.svg', image1 = 'Usa edcp relief location map.png' } d2c98c333c13b7dc164dbaccae5a3365c15aa096 Module:Location map/data/North America 828 1682 3123 3122 2023-11-09T18:17:05Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Location_map/data/North_America]] Scribunto text/plain return { name = 'North America', x = '(69.398)*( cos( $1*0.01745329252 )*sin( ($2-(-100.0))*0.01745329252 ) ) * ( ((1 + sin( $1*0.01745329252 )*sin( 47.5*0.01745329252 ) + cos( $1*0.01745329252 )*cos( 47.5*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) *0.5)^ -0.5) - (-50.0)', y = '(100 + (-50.0) ) - (68.9773)*( cos( 47.5*0.01745329252 )*sin( $1*0.01745329252 ) - sin( 47.5*0.01745329252 )*cos( $1*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) * ( ((1 + sin( $1*0.01745329252 )*sin( 47.5*0.01745329252 ) + cos( $1*0.01745329252 )*cos( 47.5*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) *0.5)^ -0.5)', image = 'North_America_laea_location map.svg', image1 = 'North America laea relief location map with borders.jpg' } 5023e7c80f1e6a04f4c3eba9557784b383579454 Module:Location map/data/USA Tennessee 828 1683 3125 3124 2023-11-09T18:17:07Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Location_map/data/USA_Tennessee]] Scribunto text/plain return { name = 'Tennessee', top = 38.1, bottom = 33.6, left = -90.5, right = -81.4, image = 'USA Tennessee location map.svg', image1 = 'USA Tennessee relief location map.svg' } 575b36ab0fd4a6a90399da47a84bac37db2fd8f9 Module:Location map/data/USA/doc 828 1684 3127 3126 2023-11-09T18:17:09Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Location_map/data/USA/doc]] wikitext text/x-wiki <!-- Categories go at the bottom of this page. --> {{Module:Location map/data/doc|name=the [[United States]]|projection=an [[equidistant conic projection]]|examples= === Location map, using default map (image) === {{Location map | USA | width = 250 | label = Washington, D.C. | lat_deg = 38.89 | lon_deg = -77.04 }} <pre style="width:30em"> {{Location map | USA | width = 250 | label = Washington, D.C. | lat_deg = 38.89 | lon_deg = -77.04 }} </pre> {{clear}} === Location map many, using relief map (image1) === {{Location map many | USA | relief = yes | width = 250 | caption = Two locations in the United States | label1 = Washington, D.C. | lat1_deg = 38.89 | lon1_deg = -77.04 | label2 = Seattle | lat2_deg = 47.61 | lon2_deg = -122.33 }} <pre style="width:30em"> {{Location map many | USA | relief = yes | width = 250 | caption = Two locations in the United States | label1 = Washington, D.C. | lat1_deg = 38.89 | lon1_deg = -77.04 | label2 = Seattle | lat2_deg = 47.61 | lon2_deg = -122.33 }} </pre> {{clear}} === Location map+, using AlternativeMap === {{Location map+ | USA | AlternativeMap = Usa edcp relief location map.png | caption = Two locations in the United States | width = 250 | places = {{Location map~ | USA | label = Washington, D.C. | lat_deg = 38.89 | lon_deg = -77.04 }} {{Location map~ | USA | label = Seattle | lat_deg = 47.61 | lon_deg = -122.33 }} }} <pre style="width:35em"> {{Location map+ | USA | AlternativeMap = Usa edcp relief location map.png | caption = Two locations in the United States | width = 250 | places = {{Location map~ | USA | label = Washington, D.C. | lat_deg = 38.89 | lon_deg = -77.04 }} {{Location map~ | USA | label = Seattle | lat_deg = 47.61 | lon_deg = -122.33 }} }} </pre> === Location map, one location on three maps === {{Location map | USA#USA Tennessee#North America | relief = yes | width = 250 | lat_deg = 36.167 | lon_deg = -86.783 | label = Nashville }} <pre style="width:30em"> {{Location map | USA#USA Tennessee#North America | relief = yes | width = 250 | lat_deg = 36.167 | lon_deg = -86.783 | label = Nashville }} </pre> {{clear}} === Location map, three maps and three captions === {{Location map | USA#USA Tennessee#North America | relief = yes | width = 250 | lat_deg = 36.167 | lon_deg = -86.783 | label = Nashville | caption = Location in the [[United States]]##Location in [[Tennessee]]##Location in [[North America]] }} <pre style="width:30em"> {{Location map | USA#USA Tennessee#North America | relief = yes | width = 250 | lat_deg = 36.167 | lon_deg = -86.783 | label = Nashville | caption = Location in the [[United States]]##Location in [[Tennessee]]##Location in [[North America]] }} </pre> {{clear}} }}<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:United States location map modules| ]] }}</includeonly> 9dd62ef3a72e4f7861f16e83e8a8696e68358a0c Template:GeoTemplate 10 1685 3130 3129 2023-11-09T20:07:07Z Führerredux 2 1 revision imported from [[:wikipedia:Template:GeoTemplate]] wikitext text/x-wiki <templatestyles src="GeoTemplate/styles.css"/><div class="toccolours plainlinks" style="font-size:92%; max-width:60em; float:right; margin-top:1rem;"> <!-- Input --> {| style="background:none; text-align:left; width:100%; border-collapse:collapse;" |- style="vertical-align:top;" ! DMS<br>Decimal | colspan="3" style="width:95%;" | <span title="Latitude">{latdegabs}°&nbsp;{latminint}′&nbsp;{latsecdec}″&nbsp;{latNS}</span>, <span title="Longitude">{londegabs}°&nbsp;{lonminint}′&nbsp;{lonsecdec}″&nbsp;{lonEW}</span><br /><span class="geo h-geo"><span class="latitude p-latitude" title="Latitude">{latdegdec}</span>, <span class="longitude p-longitude" title="Longitude">{londegdec}</span></span> | rowspan="6" class="nomobile" style="width:364px;" |<!-- minimap --> <div style="position:relative; width:360px; height:180px;"> <div style="position:absolute;">[[File:Earthmap1000x500.jpg|360x180px|Map the location of {title}|alt=|link=]]</div> <div style="position:absolute; top:94px; left:176px;"> <div style="position:absolute; bottom:{latdegint}px; left:{londegint}px;" title="Location on {title}">[[File:Locator Dot.svg|8x8px|alt=|link=]]</div> </div> <div style="position:absolute; top:0; left:0; width:360px; height:180px;">&nbsp;</div> </div> |- ! [[Geo URI]] | colspan="3" | geo:{latdegdec},{londegdec} |- ! [[Universal Transverse Mercator coordinate system|UTM]] | colspan="3" | <span title="Zone">{utmzone}</span> <span title="Easting">{utmeasting}</span> <span title="Northing">{utmnorthing}</span> |- | | colspan="3" style="text-align:center" |[https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}&params={params}_globe:export&title={titlee} More formats...] |- ! [[WP:GEO#type:T|Type]] | style="min-width:5em;" | {type}&nbsp; ! [[WP:GEO#region:R|Region]] | style="min-width:5em;" | [{{SERVER}}/wiki/ISO_3166-2:{region} {region}] |- style="vertical-align:top;" ! Article | colspan="3" style="padding-bottom:1.5em;"| [{{SERVER}}/wiki/{pagenamee} {title}] <br><span class="noprint" style="text-transform:lowercase; visibility:hidden{pagename};">([{{SERVER}}{{SCRIPTPATH}}/index.php?title={pagenamee}&action=edit Edit] | [{{SERVER}}{{SCRIPTPATH}}/index.php?title={{ns:1}}:{pagenamee}&action=edit&section=new&editintro=Template:Geodata-check/report_editintro&preloadtitle={{urlencode:Coordinate error}}&preload=Template:Geodata-check/preload Report inaccuracies])</span> |- style="border-top:2px solid #bbb; vertical-align:top;" ! Contents: __NOTOC__ | colspan="5" | [[#Global services|Global services]]&nbsp;'''·''' [[#GEOTEMPLATE-LOCAL|Local services]]&nbsp;'''·''' [[#Photos|Photos]]&nbsp;'''·''' [[#Wikipedia articles|Wikipedia articles]]&nbsp;'''·''' [[#Other information|Other]] |} </div> <div class="plainlinks" style="text-align:center;"> <h2 style="min-width:192px; display:inline-block; margin-top:1rem;">Popular</h2><br> <div style="min-width:192px; display:inline-block;"> [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=r&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ <span style="display:inline-block; text-align:center; width:96px;">[[File:Bing favicon.svg|64x64px|link=|alt=]]<br>Bing Maps</span>][https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=m&z={osmzoom} <span style="display:inline-block; text-align:center; width:96px;">[[File:Google Maps icon (2020).svg|64x64px|link=|alt=]]<br>Google Maps</span>] </div><div style="min-width:192px; display:inline-block;"> [{{fullurl:toollabs:wp-world/earth.php|long={londegdec}&lat={latdegdec}&name={pagenamee}}} <span style="display:inline-block; text-align:center; width:96px;">[[File:Google Earth icon.svg|64x64px|link=|alt=]]<br/>Google Earth</span>] [https://www.openstreetmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=M <span style="display:inline-block; text-align:center; width:96px;">[[File:Openstreetmap logo.svg|64x64px|link=|alt=]]<br>OpenStreetMap</span>] </div></div> <!-- services --> {| class="mobile-linearize plainlinks geoservices" cellpadding="0" cellspacing="0" style="background:none; border-collapse:collapse; table-layout:fixed; width:100%;" |- style="vertical-align:top;" | class="directory" style="background:#fff; overflow:hidden; width:50%;" | <div id="GEOTEMPLATE-GLOBAL"> __NOEDITSECTION__ == Global/Trans-national services == {| border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse; width:98%; margin-left:0.25em" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | More |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] ACME Mapper | [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=M&marker0={latdegdec},{londegdec},{titlee} Map] | [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=SL&marker0={latdegdec},{londegdec},{titlee} Satellite] | [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=T&marker0={latdegdec},{londegdec},{titlee} Topo], [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=R&marker0={latdegdec},{londegdec},{titlee} Terrain],&nbsp;[https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=K&marker0={latdegdec},{londegdec},{titlee} Mapnik] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Apple Maps (WatchOS).svg|16x16px|link=|alt=]] [[Apple Maps]] (Apple devices only) | [https://maps.apple.com/?q={latdegdec},{londegdec}&t=m Map] |[https://maps.apple.com/?q={latdegdec},{londegdec}&t=k Satellite] |[https://duckduckgo.com/?q={latdegdec},{londegdec}&iaxm=maps via DuckDuckGo] (other devices) |- style="background:#e0eef7" class="nomobile" <!-- goes to web search on mobile Mar-2017 --> ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Bing favicon.svg|16x16px|link=|alt=]] '''[[Bing Maps]]''' | [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=r&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Map] | [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=h&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Aerial] | [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=o&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Bird's Eye] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Blue Marble Navigator | | [https://blue-marble.de?lon={londegdec}&nlat={latdegdec}&borders&geonames&townnames&zoom&overlay=14&base=7 Satellite] | [https://blue-marble.de/nightlights?ll={latdegdec},{londegdec} Night Lights] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Copernix | [https://copernix.io/#?where={londegdec},{latdegdec},{osmzoom}&query=&map_type=roadmap&pagename={pagenamee}?language={language} Map] | [https://copernix.io/#?where={londegdec},{latdegdec},{osmzoom}&query=&pagename={pagenamee}?language={language} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[John_Walker_(programmer)#Fourmilab|Fourmilab]] | | [https://www.fourmilab.ch/cgi-bin/uncgi/Earth?imgsize=320&opt=-l&lat={latdegdec}&ns=North&lon={londegneg}&ew=West&alt={altitude}&img=nasa.evif Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[GeaBios]] | | [http://www.geabios.com/html/services/maps/PublicMap.htm?lat={latdegdec}&lon={londegdec}&fov={span}&title={titlee} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[GeoNames]] | | [http://www.geonames.org/maps/google_{latdegdec}_{londegdec}.html Satellite] | [http://ws.geonames.org/extendedFindNearby?lat={latdegdec}&lng={londegdec} Text (XML)] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Google Earth icon.svg|16x16px|link=|alt=]] [[Google Earth]]<sup>[[Template talk:GeoTemplate/FAQ#Google|note]]</sup> | | [{{fullurl:toollabs:wp-world/earth.php|long={londegdec}&lat={latdegdec}&name={pagenamee}}} Open] | [{{fullurl:toollabs:geocommons/earth.kml|latdegdec={latdegdec}&londegdec={londegdec}&scale={scale}&title={titlee}}} w/ meta data] |- style="background:#e0eef7" ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Google Maps icon (2020).svg|16x16px|link=|alt=]] '''[[Google Maps]]''' | [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=m&z={osmzoom} Map] | [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=h&z={osmzoom} Satellite] | [https://www.google.com/maps/place//@{latdegdec},{londegdec},{osmzoom}z/data=!4m2!3m1!1s0x0:0x0!5m1!1e4?hl={language} Terrain], [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=h&z={osmzoom}&layer=c&cbll={latdegdec},{londegdec} Street View], [https://earthengine.google.com/timelapse/#v={latdegdec},{londegdec},{osmzoom},latLng&t=3.04 Earth Timelapse] |- class="nomobile" <!-- Mobile users can't use files --> ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] GPS Visualizer | [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_openstreetmap&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Map] | [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_aerial_arcgis&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Satellite] | [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_arcgistopo_world&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Topo], [https://www.gpsvisualizer.com/draw/?zoom={zoom}&center={latdegdec},{londegdec}&marker={titlee} Drawing Utility] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:HERE logo.svg|16x16px|link=|alt=]] [[HERE WeGo]] | [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},normal&msg={titlee} Map] | [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},satellite&msg={titlee} Satellite] | [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},terrain&msg={titlee} Terrain] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[MapQuest]] | [https://www.mapquest.com/latlng/{latdegdec},{londegdec}?zoom={osmzoom}&maptype=map Map] | [https://www.mapquest.com/latlng/{latdegdec},{londegdec}?zoom={osmzoom}&maptype=sat Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:NASA logo.svg|16x16px|link=|alt=]] [[NASA WorldWind]] | | [worldwind://goto/world=Earth&lat={latdegdec}&lon={londegdec}&view={span} Open] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Openstreetmap logo.svg|16x16px|link=|alt=]] [[OpenHistoricalMap|Open<wbr>Historical<wbr>Map]] | [https://www.openhistoricalmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=O Map] | | [https://nominatim.openhistoricalmap.org/reverse?lat={latdegdec}&lon={londegdec}&zoom={zoom} Nominatim (reverse geocoding)] |- style="background:#e0eef7" ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Openstreetmap logo.svg|16x16px|link=|alt=]] '''[[OpenStreetMap|Open<wbr>Street<wbr>Map]]''' | [https://www.openstreetmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=M Map] | | [https://geohack.toolforge.org/geohack.php?language={language}&project=osm&pagename={pagenamee}&params={params}&title={titlee} more maps], [https://nominatim.openstreetmap.org/reverse?lat={latdegdec}&lon={londegdec}&zoom={zoom} Nominatim (reverse geocoding)], [https://openstreetbrowser.org/#map={osmzoom}/{latdegdec}/{londegdec} OpenStreetBrowser] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Sentinel-2]] | | [https://apps.sentinel-hub.com/sentinel-playground/?source=S2L2A&lat={latdegdec}&lng={londegdec} Open] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] maps.vlasenko.net | | | [http://maps.vlasenko.net/?lon={londegdec}&lat={latdegdec} Old Soviet Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Waze]] | [https://www.waze.com/livemap/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Map] | | [https://www.waze.com/editor/?lon={londegdec}&lat={latdegdec} Editor], App: [http://waze.to/?ll={latdegdec},{londegdec} Open], [http://waze.to/?ll={latdegdec},{londegdec}&navigate=yes Navigate] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Wikimapia logo without label.svg|16x16px|link=|alt=]] [[Wikimapia]] | [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=w Map] | [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=b Satellite] | [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=b&v=8 + old places] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Erioll world 2.svg|16x16px|link=|alt=]] WikiMiniAtlas | [https://wma.wmflabs.org/iframe.html?wma={latdegdec}_{londegdec}_700_500_{{CONTENTLANG}}_{zoom}_en&globe=Earth&lang={{CONTENTLANG}}&page={pagenamee} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Yandex Maps]] | [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Zoom Earth | | [https://zoom.earth/?lat={latdegdec}&lon={londegdec}&z=15&r=0&src=ggl Satellite] | |} </div> | class="directory" rowspan="2" style="background:#fff; overflow:hidden; width:50%; vertical-align:top;"| <div id="GEOTEMPLATE-LOCAL"> == Wikimedia maps == <!-- [[MediaWiki:GeoHack.js]] --> <div class="center" style="margin-left:0.25em"> <div class="thumb tnone"> <div class="thumbinner"> <div id="osmEmbed" class="OSM:{latdegdec}_{londegdec}_{osmzoom}_mapnik" style="background:#aaa; width:100%; height:500px; height:80vh;">JavaScript disabled or out of map range.</div> </div> </div> </div> </div><!--/GEOTEMPLATE-LOCAL--> <div style="text-align:center; font-weight:bold;">[https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}&params={params}_region:#regional See all regions]</div> |- | rowspan="2" style="background:#fff; overflow:hidden; width:50%; vertical-align:top;"| ==Photos== <div class="directory"> {| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Aspect |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Commons-logo.svg|16x16px|link=|alt=]] Commons | [https://wikimap.toolforge.org/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language}&wp=false WikiMap] ([https://wikimap.toolforge.org/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language} +Wikipedia]),<!-- see https://de.wikipedia.org/wiki/Benutzer:DB111/Tools#WikiMap --> [https://osm-gadget-leaflet.toolforge.org/#/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang=commons osm-gadget-leaflet map] ([https://osm-gadget-leaflet.toolforge.org/#/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language} +Wikipedia]) <!-- failing as of 2020-07-27: [https://www.google.com/maps?ll={latdegdec},{londegdec}&hq=https://geocommons.toolforge.org/web.kml&hl={language}&z={osmzoom} Map], --> <!-- failing as of 2020-07-27: [https://geocommons.toolforge.org/proximityrama?latlon={latdegdec},{londegdec} Proximityrama] --> |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Flickr large white chiclet logo - no rounded corners, no border.svg|16x16px|link=|alt=]] Flickr | [https://www.flickr.com/map/?fLat={latdegdec}&fLon={londegdec}&zl=5 Map], [https://www.flickr.com/nearby/{latdegdec},{londegdec}?show=thumb&fromfilter=1&by=everyone&taken=alltime&sort=mostrecent Listing] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Loc.alize.us | [https://loc.alize.us/#/geo:{latdegdec},{londegdec},14,m/sort:date/ Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] VirtualGlobetrotting | [https://virtualglobetrotting.com/ll/{latdegdec},{londegdec} Listing] |} <!-- blacklisted | [https://www.360cities.net/map#lat={latdegdec}&lng={londegdec}&zoom={osmzoom} 360 Cities] ([[Panoramic photography|pano]]) --> <!-- Shutdown | [https://www.panoramio.com/map/#lt={latdegdec}&ln={londegdec}&z=0&k=0&a=1&tab=2 Panoramio] <!-- ? | [http://www.planeteye.com/maps?refcon=wikipedia&pll={latdegdec},{londegdec}&z={osmzoom}&title={titlee}&type={type}&scale={scale}&region={region}&sd=photos PlanetEye] --> </div> |} ==Wikipedia articles== <div class="directory"> {| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Aspect ! scope="col" | Link |- | List of nearby articles | [{{fullurl:toollabs:wikinearby/|lang={language}&q={latdegdec},+{londegdec}}} WikiNearby]<br>[https://{language}.wikipedia.org/wiki/Special:Nearby#/coord/{latdegdec},{londegdec} Wikipedia] |- <!-- for [[Category talk:Lines of latitude#Redirects]] --> | Article on {latdegabs}° {latNS} | [https://{language}.wikipedia.org/wiki/Latitude_{latdegabs}_degrees_{latNS} Wikipedia] |- <!-- for [[Category talk:Lines of longitude#Redirects]] --> | Article on {londegabs}° {lonEW} | [https://{language}.wikipedia.org/wiki/Longitude_{londegabs}_degrees_{lonEW} Wikipedia] |- | Map of all coordinates on ''{pagename}'' | [{{fullurl:toollabs:wikimap/|lang={language}&page={pagenamee}}} WikiMap]<br>[{{fullurl:toollabs:osm4wiki/cgi-bin/wiki/wiki-osm.pl|project={language}&article={pagenamee}}} OSM for Wiki] |- | Map of nearby articles | [{{fullurl:toollabs:wikimap/|lang={language}&lon={londegdec}&lat={latdegdec}&zoom={osmzoom}&commons=false}} WikiMap]<br>[https://wiwosm.toolforge.org/osm-on-ol/kml-on-ol.php?la={language}&uselang={language}&lon={londegdec}&lat={latdegdec}&rang=50&map=1 Wikipedia World] |- | Map of nearby Wikidata items | [https://wikidata-todo.toolforge.org/around.html?lat={latdegdec}&lon={londegdec}&radius=15&lang={language} Wikidata Todo] |- | Map of nearby places with no images | [https://wikishootme.toolforge.org/#lat={latdegdec}&lng={londegdec} WikiShootMe] |} </div> ==Other information== <div class="directory"> {| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Aspect |- ! scope="row" style="font-weight:normal; text-align:left;" | Geocaching.com | [https://www.geocaching.com/seek/nearest.aspx?origin_lat={latdegdec}&origin_long={londegdec}&dist=20&submit3=Search Near by locations], [https://www.geocaching.com/map/default.aspx?lat={latdegdec}&lng={londegdec} Map this location] |- ! scope="row" style="font-weight:normal; text-align:left;" | NASA Weather | Satellite images: [https://weather.msfc.nasa.gov/cgi-bin/get-goes?satellite=Global%20Composite&lat={latdegdec}&lon={londegdec}&zoom=1&info=ir&palette=spect.pal&width=600&height=500 Radar] (Currently not updating<!-- and I don't think it is radar?-->) |- ! scope="row" style="font-weight:normal; text-align:left;" | Megalithic Portal | [https://www.megalithic.co.uk/article.php?long={londegdec}&lat={latdegdec} Prehistoric Sites, nearby] |- ! scope="row" style="font-weight:normal; text-align:left;" | Earthtools.org | [http://new.earthtools.org/height/{latdegdec}/{londegdec} Elevation (Europe and America)], [http://new.earthtools.org/timezone/{latdegdec}/{londegdec} Time zone (Outdated<!--for data in e.g. South Sudan-->)] ([[Extensible Markup Language|XML]] output) |- ! scope="row" style="font-weight:normal; text-align:left;" | SunriseSunset.com | [http://www.sunrisesunset.com/calendar.asp?comb_city_info=Long:{londegneg},Lat:{latdegdec};{londegneg};{latdegdec};0;0&month={{CURRENTMONTH}}&year={{CURRENTYEAR}}&time_type=1&use_dst=0&want_twi_civ=1&want_twi_naut=1&want_twi_astro=1&want_mrms=1&want_mphase=1 Sunrise, Sunset, Twilight, and Moon Calendar] |- ! scope="row" style="font-weight:normal; text-align:left;" | Geody | [https://www.geody.com/geolook.php?world=terra&lat={latdegdec}&lon={londegdec} Info] |- ! scope="row" style="font-weight:normal; text-align:left;" | Heavens-Above.Com | [https://www.heavens-above.com/?Loc=Newark&Lat={latdegdec}&Lng={londegdec}&Alt={altitude} Satellite / Planet Spotter] |- ! scope="row" style="font-weight:normal; text-align:left;" | Echolink | [http://www.echolink.org/links.jsp?sel=latlon&lat_deg={latdegdec}&lat_min={latmindec}&lon_deg={londegabs}&lon_min={lonmindec}&lon_EW={lonEW} Nearest gateway network] for amateur radio VoIP |- ! scope="row" style="font-weight:normal; text-align:left;" | Findu.com | [http://www.findu.com/cgi-bin/near.cgi?lat={latdegdec}&lon={londegdec} APRS stations] |- ! scope="row" style="font-weight:normal; text-align:left;" | Degree Confluence Project | [http://www.confluence.org/confluence.php?lat={latdeground}&lon={londeground} Info] |- ! scope="row" style="font-weight:normal; text-align:left;" | GeoHack | [https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}&params={latantipodes}_N_{longantipodes}_E_scale:10000000_type:{type}&title=The+Antipodes+of+{titlee} Antipodes] |- ! scope="row" style="font-weight:normal; text-align:left;" | MapIt (from [[mySociety]]) | [https://global.mapit.mysociety.org/point/4326/{londegdec},{latdegdec}.html Containing areas] (political boundaries, etc.) |- ! scope="row" style="font-weight:normal; text-align:left;" | PeakFinder.org | [https://www.peakfinder.org/?lat={latdegdec}&lng={londegdec}&name={titlee} 360° panoramic mountain views] |- ! scope="row" style="font-weight:normal; text-align:left;" | SkyVector | [https://skyvector.com/?ll={latdegdec},{londegdec}&zoom=2 Aeronautical chart] |- ! scope="row" style="font-weight:normal; text-align:left;" | Flightradar24 | [https://www.flightradar24.com/{latdegdec},{londegdec}/{osmzoom} Planes flying in the area] |- ! scope="row" style="font-weight:normal; text-align:left;" | Great Circle Mapper | [http://www.gcmap.com/search?Q={latdegdecabs}{latNS}+{londegdecabs}{lonEW} Nearby Airports] |- ! scope="row" style="font-weight:normal; text-align:left;" | OpenSeaMap | [https://map.openseamap.org/map/?zoom={osmzoom}&mlat={latdegdec}&mlon={londegdec}&layers=BTTFFFTFFFF0TFFTFTFF Sea lanes, beacons, traffic, etc.] |- ! scope="row" style="font-weight:normal; text-align:left;" | MarineTraffic | [https://www.marinetraffic.com/en/ais/home/centerx:{londegdec}/centery:{latdegdec}/zoom:{osmzoom} Ships in the area] |- ! scope="row" style="font-weight:normal; text-align:left;" | OpenRailwayMap | [https://www.openrailwaymap.org/?lang=en&lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&style=standard Railways] |- ! scope="row" style="font-weight:normal; text-align:left;" | Strava | [https://labs.strava.com/heatmap/#10.86/{londegdec}/{latdegdec}/hot/all Fitness tracking heatmap] |- ! scope="row" style="font-weight:normal; text-align:left;" | LightningMaps.org | [https://www.lightningmaps.org/?lang=fr#y={latdegdec};x={londegdec};z=12;t=1;m=oss;r=0;s=201;o=0;b=0.00;n=0;d=2;dl=2;dc=0;ts=0; Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapillary.com | [https://www.mapillary.com/app/?lat={latdegdec}&lng={londegdec}&z=osmzoom} Crowdsourced street view] |- ! scope="row" style="font-weight:normal; text-align:left;" | Old Maps Online | [http://www.oldmapsonline.org/?lat={latdegdec}&lon={londegdec} Old maps] |} </div> <!-- [http://mapmaker.nationalgeographic.org/ National Geographic MapMaker] --> <!-- Begin region specific --> <div id="GEOTEMPLATE-REGIONS" class="directory" style="margin-top:1.5em;> {| id="regional" class="toc plainlinks" summary="Other regions" |- ! scope="row" style="padding-left: 0.5em" |Regional services: |style="padding:0 0.5em" | [[#Africa|Africa]]&nbsp;'''·''' [[#Asia|Asia]]&nbsp;'''·''' [[#Australia|Australia]]&nbsp;'''·''' [[#Europe A–M|Europe (A–M)]]&nbsp;'''·''' [[#Europe N–Z|Europe (N–Z)]]&nbsp;'''·''' [[#North America|North America]]&nbsp;'''·''' [[#South America|South America]]&nbsp;'''·''' [[#Antarctica|Antarctica/Arctic]] |} =North America= <div id="GEOTEMPLATE-CA"> ==Canada== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | GPS Visualizer | [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=nrcan_toporama&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | National Atlas of Canada | [http://atlas.nrcan.gc.ca/site/english/toporama/index.html Topo] (Indirect link) |- ! scope="row" style="font-weight:normal; text-align:left;" | TopoQuest | [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=8&map=50k Topo] |} </div> <div id="GEOTEMPLATE-US"> ==United States== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Aspect |- ! scope="row" style="font-weight:normal; text-align:left;" | ACME | [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=T&marker0={latdegdec},{londegdec},{titlee} Topo] [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=N&marker0={latdegdec},{londegdec},{titlee} NEXRAD] [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=O&marker0={latdegdec},{londegdec},{titlee} DOQ] |- ! scope="row" style="font-weight:normal; text-align:left;" | CalTopo | [http://caltopo.com/map.html#ll={latdegdec},{londegdec}&z={osmzoom}&b=t Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | GPS Visualizer | [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=naip_aerial&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} USDA&nbsp;Aerial], [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=google_arcgistopo_us&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} USGS&nbsp;Topo] |- style="background:#e0eef7" ! scope="row" style="font-weight:normal; text-align:left;" | Historic Aerials | [https://historicaerials.com/?layer=map&zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Historic Aerials] |- ! scope="row" style="font-weight:normal; text-align:left;" | NASA/MSFC GOES | [https://weather.msfc.nasa.gov/cgi-bin/get-goes?satellite=GOES-E%20CONUS&lat={latdegdec}&lon={londegdec}&zoom=1&info=ir&palette=spect.pal&width=600&height=500 Weather Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | National Weather Service | [https://forecast.weather.gov/MapClick.php?textField1={latdegdec}&textField2={londegdec} Area weather and forecast]<br/> [https://forecast.weather.gov/MapClick.php?lat={latdegdec}&lon={londegdec}&unit=0&lg=english&FcstType=graphical Graphical hourly pinpoint forecast] |- ! scope="row" style="font-weight:normal; text-align:left;" | Natural Atlas | [https://naturalatlas.com/map/@{latdegdec},{londegdec},{osmzoom}z Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | TerraFly | [http://vn4.cs.fiu.edu/cgi-bin/gnis.cgi?Lat={latdegdec}&Long={londegdec}&vid=&tfaction=&referer=tfhome Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | TopoQuest | [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=4&map=sat1m USGS Aerial], [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=4 Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | Trails.com | [http://www.topozone.com/map.asp?lat={latdegdec}&lon={londegdec}&datum=nad83 Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | US EPA | [https://water.usgs.gov/cgi-bin/pointinhuc.pl?latitude={latdegabs}{latminint}{latsecint}{latNS}&longitude={londegabs}{lonminint}{lonsecint}{lonEW} Watershed Info] |- ! scope="row" style="font-weight:normal; text-align:left;" | USGS National Map Viewer | [https://apps.nationalmap.gov/viewer/viewer/index.html?marker={londegdec},{latdegdec},4326,from%20{pagenamee},,{titlee}&scale={scale} Map] <!-- before 2021: [https://viewer.nationalmap.gov/advanced-viewer/viewer/index.html?marker={londegdec},{latdegdec},4326,from%20{pagenamee},,{titlee}&scale={scale} Map],--><!-- Advanced TNM Viewer: might need to make sure scale is what we expect; also, commas should be filtered out in pagename and title somehow --> <!-- [https://viewer.nationalmap.gov/viewer/?q={latdegdec},{londegdec} Legacy TNM] -- ending May 2017 --> <!-- even older/long gone: [http://nmviewogc.cr.usgs.gov/viewer.htm?CenterPoint={latdegdec},{londegdec}&Scale=CITY&Classes=OTHER%20IMAGERY Map] --> |- ! scope="row" style="font-weight:normal; text-align:left;" | USGS TopoView | [https://ngmdb.usgs.gov/topoview/viewer/#{osmzoom}/{latdegdec}/{londegdec} Historic topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | WeatherUSA | [https://www.weatherusa.net/weathernet/live/?q={latdegdec},{londegdec}&zoom={osmzoom}&layers=obs-t,radar,alerts Live] |} </div> =Europe A–M= <div id="GEOTEMPLATE-AT"> == Austria == <!-- Dokumentation zum Geolink-Dienst siehe http://de.wikipedia.org/wiki/Vorlage:GeoTemplate/GeolinkConfig --> {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite |- | Austrian map amap.at (max 1:50,000) |[https://wikitools.toolforge.org/geolink.php?config=austriamap&lat={latdegdec}&lon={londegdec}&scale={scale} Map] | |} ===Local=== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Kärnten Atlas (Carinthia) | [https://wikitools.toolforge.org/geolink.php?config=kaerntenatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | NÖ Atlas (Lower Austria) | [https://wikitools.toolforge.org/geolink.php?config=noeatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | DORIS interMap (Upper Austria) | [https://wikitools.toolforge.org/geolink.php?config=ooeatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | SAGIS (Salzburg) | [https://wikitools.toolforge.org/geolink.php?config=salzburg&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Digitaler Atlas Steiermark (Styria) | [https://wikitools.toolforge.org/geolink.php?config=steiermark&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | tirisMaps (Tyrol) | [https://wikitools.toolforge.org/geolink.php?config=tirol&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | VoGIS (Vorarlberg) |[https://wikitools.toolforge.org/geolink.php?config=vorarlberg&lat={latdegdec}&lon={londegdec}&scale={scale} Map] |} </div> <div id="GEOTEMPLATE-BY"> ==Belarus== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite |- ! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net | [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec} Map] | [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec}&addmap1=space10 Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki | | [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel | [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map] | |} </div> <div id="GEOTEMPLATE-BG"> ==Bulgaria== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite |- ! scope="row" style="font-weight:normal; text-align:left;" | eMaps.bg | [http://2cyr.com/emaps-bg.php?q={latdegdec},{londegdec} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | 360.bg | | [http://www.360.bg/index.php?lat={latdegdec}&lon={londegdec} Satellite] |} <!-- This service would be good to include, but #expr doesn't work as MediaWiki doesn't know the {} parameters, so it needs a GeoHack modification for the offset --> <!-- *[http://www.emaps.bg/emaps/content.asp?mapSize=1&cboMaps=0&minx={{#expr: {utmeasting}-14425}}&maxx={{#expr: {utmeasting}+14425}}&miny={{#expr: {utmnorthing}-10000}}&maxy={{#expr: {utmnorthing}+10000}} Find this location] on emaps.bg [http://www.emaps.bg/].--> </div> <div id="GEOTEMPLATE-CY"> ==Cyprus== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Cyprus on-line | [http://www.col.com.cy/?locale=en&lat={latdegdec}&long={londegdec}&level={zoom} Map] |} </div> <div id="GEOTEMPLATE-CZ"> ==Czech Republic== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapy.cz | [https://en.mapy.cz/?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Map] | [https://en.mapy.cz/?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW}&base=ophoto Labeled satellite] | [https://en.mapy.cz/19stoleti?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Historical], [https://en.mapy.cz/turisticka?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Touristic] |- ! scope="row" style="font-weight:normal; text-align:left;" | iDnes | [http://mapy.idnes.cz/#query=search({latdegabs}%C2%B0{latminint}%27{latsecdec}%22{latNS}%20{londegabs}%C2%B0{lonminint}%27{lonsecdec}%22{lonEW}@0@1) Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | ikatastr.cz | [https://www.ikatastr.cz/#&kde={latdegdec},{londegdec},19 Cadastral Map] on ikatastr.cz | | |} </div> <div id="GEOTEMPLATE-DK"> ==Denmark== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Findvej.dk | [http://www.findvej.dk/?longitude={londegdec}&latitude={latdegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Findvej.dk with Wikipedia | [http://www.findvej.dk/wikipedia?template=1&longitude={londegdec}&latitude={latdegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Eniro | [http://kort.eniro.dk/query?what=map&mapstate={zoom};{londegdec};{latdegdec} Map] |} </div> <div id="GEOTEMPLATE-EE"> ==Estonia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Estonian Land Board | [http://geoportaal.maaamet.ee/url/xgis-latlon.php?lat={latdegdec}&lon={londegdec}&out=xgis Orthophoto/Map] |} </div> <div id="GEOTEMPLATE-FI"> ==Finland== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Eniro | [http://kartor.eniro.se/?q={latdegdec},{londegdec}&z={zoom} Map] | [http://kartat.eniro.fi/query?what=map&mapstate={zoom};{londegdec};{latdegdec};o Oblique] |- ! scope="row" style="font-weight:normal; text-align:left;" | National Land Survey of Finland MapSite | [http://toolserver.org/%7Epara/EPSG3067.php?lat={latdegdec}&lon={londegdec}&url=http://kansalaisen.karttapaikka.fi/linkki?scale={scale}&srs=EPSG%3A3067&y={n}&x={e}&lang=fi&text=Coordinate%20from%20GeoHack Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | 02.fi | [https://para.toolforge.org/geo/convert/02.fi-grc.html#latlon={latdegdec},{londegdec} Map] | |} ===Local=== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | eKarjala | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.ekarjala.fi/WebEK/Default.aspx?layers=Etel%C3%A4-Karjalan%20Seutukartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- | Espoo | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=2500000&link=http://kartat.espoo.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Helsinki | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=2500000&link=http://kartta.hel.fi/opas/main/?l=1&m=1&o=1&n={Plocal}&e={Ilocal}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Hämeenlinna | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6700000&Iref=2500000&link=http://kartta.hameenlinna.fi/cgi-bin/GifMap.dll?Theme=Opaskartta&West={IlocalW}&South={PlocalS}&East={IlocalE}&North={PlocalN}&Height=600&Width=650&Command=DisplayLink&Language=fin&Info={Plocal},{Ilocal},{title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Jyväskylä | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6890000&Iref=3400000&link=http://kartta.jkl.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Kokkola | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=7000000&Iref=2400000&link=http://ipp.kokkola.fi/cgi-bin/gifmap.dll?Theme=Opaskartta&West={IlocalW}&South={PlocalS}&East={IlocalE}&North={PlocalN}&Height=400&Width=500&Command=DisplayLink_fin&Language=fin&Info={Plocal},{Ilocal},{title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Kotka | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6000000&Iref=3000000&link=http://karttapalvelu.kotka.fi/map/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Kouvola | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6740000&Iref=3470000&link=http://kartta.kouvola.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Kuopio | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.kuopionseutu.fi/map/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Lahti | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=840&Iref=-23053970&link=http://kartta.lahti.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Lappeenranta | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6700000&Iref=3500000&link=http://kartta.lappeenranta.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Oulu | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=7200000&Iref=2500000&link=http://kartta.ouka.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Pohjois-Karjala | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://pk-kartat.jns.fi/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Pori | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6800000&Iref=1500000&link=http://kartta.pori.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Rauma | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=1000000&link=http://opaskartta.rauma.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Rovaniemi | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.rovaniemi.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- | Tampere | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://www.tampere.fi/ytoteto/kartta/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Turku | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=1500000&link=http://opaskartta.turku.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Vaasa | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6900000&Iref=1500000&link=http://kartta.vaasa.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map] | |- | Vantaa | [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.vantaa.fi/Default.aspx?easting={Ilocal}&northing={Plocal}}} Map] | |- | Retkikartta | | [http://www.retkikartta.fi/?x={utmeasting}&y={utmnorthing}&zoom=1 Topographical map] |} </div> <div id="GEOTEMPLATE-FR"> ==France== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Aerial ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | FranceTopo | | | [http://francetopo.fr/api.html?map_x={londegdec}&map_y={latdegdec}&zoom_osm={osmzoom} Topo] |- ! scope="row" style="font-weight:normal; text-align:left;" | IGN Géoportail | [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOGRAPHICALGRIDSYSTEMS.MAPS.3D$GEOPORTAIL:OGC:WMTS@aggregate(1)&permalink=yes Map] |[http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=ORTHOIMAGERY.ORTHOPHOTOS$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Aerial] |[http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=CADASTRALPARCELS.PARCELS$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Cadastral], [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOLOGY.GEOLOGY$EXTERNAL:OGC:EXTERNALWMS(1)&permalink=yes Geological], [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOGRAPHICALGRIDSYSTEMS.CASSINI$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Cassini (18th century)] |} </div> <div id="GEOTEMPLATE-GB"> ==Great Britain== [[Ordnance Survey National Grid|OS Grid Reference]]: '''{osgb36ref}''' (all-numeric format: {osgb36easting} {osgb36northing}) {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Topo ! scope="col" | Aerial ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | [[Bing Maps]] UK | [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title} Map] | [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title}&sty=s OS maps] | [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title}&sty=h Aerial] | [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sty=o Bird's Eye] |- ! scope="row" style="font-weight:normal; text-align:left;" | StreetMap | [http://streetmap.co.uk/grid/{osgb36easting}_{osgb36northing}_106 Map] | [http://streetmap.co.uk/grid/{osgb36easting}_{osgb36northing}_120 OS maps] | | [http://streetmap.co.uk/idgc.srf?x={osgb36easting}&y={osgb36northing} Convert] |- ! scope="row" style="font-weight:normal; text-align:left;" | Vision of Britain historical maps | [http://www.visionofbritain.org.uk/location_page.jsp?easting={osgb36easting}&northing={osgb36northing} Map] | [http://www.visionofbritain.org.uk/location_page.jsp?easting={osgb36easting}&northing={osgb36northing} OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey | | [https://explore.osmaps.com/pin?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&overlays=&style=Standard&type=2d OS maps] | | ''See other OS<br />map links below'' |- ! scope="row" style="font-weight:normal; text-align:left;" | {{abbr|Defra|Department for Environment, Food and Rural Affairs}}'s {{abbr|MAGIC|Multi-Agency Geographic Information for the Countryside}} service | [http://magic.defra.gov.uk/MagicMap.aspx?xygridref={osgb36easting},{osgb36northing} Map] | | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Elgin roadworks information | [http://v5.roadworks.org/index.cfm?api=1&page=map&coord={osgb36easting},{osgb36northing}&scale=5000 Map] | | | |- ! scope="row" style="font-weight:normal; text-align:left;" | National Library of Scotland | |[http://maps.nls.uk/geo/explore/#zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=1&b=1&marker={latdegdec},{londegdec} OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | ViaMichelin UK | [http://www.viamichelin.co.uk/viamichelin/gbr/search/Cartes/{londegdec}*{latdegdec}?zoomLevel=12 Map] | | | [http://www.viamichelin.co.uk/viamichelin/gbr/search/Trafic/{londegdec}*{latdegdec}?zoomLevel=12 Traffic] |- ! scope="row" style="font-weight:normal; text-align:left;" | Old OS maps | | [http://www.ponies.me.uk/maps/osmap.html?z=14&x={londegdec}&y={latdegdec} OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Where's the Path? | [https://wtp2.appspot.com/wheresthepath.htm?lat={latdegdec}&lon={londegdec} Map] | | | |- ! scope="row" style="font-weight:normal; text-align:left;" | SABRE Maps | [http://www.sabre-roads.org.uk/maps/index.php?view={latdegdec},{londegdec}&map=OSMMap&layer=0 Map] | [http://www.sabre-roads.org.uk/maps/index.php?view={latdegdec},{londegdec}&map=NPEMap&layer=0 OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Systematic Maps | | [http://www.sysmaps.co.uk/sysmaps_os.html?!{latdegdec}~{londegdec} OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | MapIt<br />(from [[mySociety]]) | | | |[https://mapit.mysociety.org/point/4326/{londegdec},{latdegdec}.html Containing areas]<br />(ward, constituency, etc.) <!-- different to global version, above --> |- ! scope="row" style="font-weight:normal; text-align:left;" | [[British Geological Survey]] | | | | [https://www.bgs.ac.uk/data/services/mapCreator/WmsMap.html?mapCentreLat={latdegdec}&mapCentreLong={londegdec}&mapZoom=14&boxWidth=800&boxHeight=450&geologyType=bedrock50k&mapType=HYBRID Geology] <!-- Commenting out section while OpenStreetMap street mapservers are down |- | colspan=5 | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''More OS maps'' |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey NPE 1:50000<br />(England / Wales), 1945-1955<br />(via [[OpenStreetMap]]) | | [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=B0000 OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey NPE/7th<br />1:50000 (Scotland), 1945-1955<br />(via OpenStreetMap) | | [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=0B000 OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey 7th series<br />1:50000, 1947-1960 (via<br />OpenStreetMap; partial coverage) | | [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=00B00 OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey 1st edition<br />1:25000, 1946-1960<br />(via OpenStreetMap) | | [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=000B0 OS maps] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey OpenStreet data<br />(via OpenStreetMap) | | [http://os.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=B0 OS maps] | | end of comment -->|} <!--<br />--> {| border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse; margin-top:1em" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Information |- ! scope="row" style="font-weight:normal; text-align:left;" | [[Geograph Britain and Ireland]] | [https://www.geograph.org.uk/gridref/{osgb36ref} Photos] |- ! scope="row" style="font-weight:normal; text-align:left;" | UKVillages | [http://www.ukvillages.co.uk/ukvillages.nsf/b!open&s=village%20map&x={osgb36easting}&y={osgb36northing} villages] |- ! scope="row" style="font-weight:normal; text-align:left;" | UK-postcodes.com | [http://www.uk-postcodes.com/latlng/{latdegdec},{londegdec} Postal code and local government]<br /> |- ! scope="row" style="font-weight:normal; text-align:left;" | GlobalGuide.org | [https://www.globalguide.org/index.html?lat={latdegdec}&long={londegdec}&zoom=17&title={titlee} View land use] |} </div> <div id="GEOTEMPLATE-GR"> ==Greece== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | in.gr | [http://maps.in.gr/Default.aspx?c={latdegdec},{londegdec}&z={zoom} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | umap.gr | [http://www.umap.gr/webcruiser/umap.html?locale=en&lat={latdegdec}&long={londegdec}&level={zoom} Map] |} </div> <div id="GEOTEMPLATE-IS"> ==Iceland== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Já.is | [http://en.ja.is/kort#lat={latdegdec}&lon={londegdec}&z=6&mark=1 Map] |} </div> <div id="GEOTEMPLATE-IE"> ==Ireland== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" |Ordnance Survey Ireland |[http://map.geohive.ie/ Ordnance Survey Ireland] |} </div> <div id="GEOTEMPLATE-IM"> ==Isle of Man== [[Ordnance Survey National Grid|OS Grid Reference]]: '''{osgb36ref}''' (all-numeric format: {osgb36easting} {osgb36northing}) {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Multimap | [http://www.multimap.com/p/browse.cgi?scale={mmscale}&lon={londegdec}&lat={latdegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | StreetMap | [http://www.streetmap.co.uk/newsearch.srf?mapp=newmap&searchp=newsearch&name={latdegdec},{londegdec}&Submit1=search&type=LatLong Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey OS Maps | [https://explore.osmaps.com/pin?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&overlays=&style=Standard&type=2d Map] |} * [https://www.geograph.org.uk/gridref/{osgb36ref} View photos of this location] from [[Geograph Britain and Ireland]] </div> <div id="GEOTEMPLATE-IT"> ==Italy== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | ViaMichelin Italia | [http://www.viamichelin.it/viamichelin/int/search/Cartes/{londegdec}*{latdegdec}?zoomLevel=12 Map] |} </div> <div id="GEOTEMPLATE-LI"> ==Liechtenstein== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | map.geo.admin.ch | [http://map.geo.admin.ch/?zoom=5&X={ch1903northing}&Y={ch1903easting}&lang={language}&crosshair=marker Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Swisstopo | [http://map.geodataviewer.admin.ch/geodatenviewer.php?x={ch1903easting}&y={ch1903northing}&lang={language} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | map.search.ch | [http://map.search.ch/{ch1903easting},{ch1903northing} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | MySwitzerland.com | [http://map.myswitzerland.com/myswitzerland/?x={ch1903easting}.00&y={ch1903northing}.00&lang={language} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapplus/Tydac | [http://www.mapplus.ch/frame.php?map=&x={ch1903easting}&y={ch1903northing}&zl=12 Map] |} </div><!-- div id="GEOTEMPLATE-LT"> ==Lithuania== * Geographic Information portal of Lithuania [http://www.geoportal.lt/map/#x=533712&y=6060907&l=3&s=3346 Map and Satellite] </div--> =Europe N–Z= <div id="GEOTEMPLATE-NO"> == Norway == {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Aerial ! scope="col" | Hybrid ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no | [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/+land Map] | [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+flybilder Aerial] | | [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+sjo Sea], [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+terreng Terrain], [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+enkel Basic] |- ! scope="row" style="font-weight:normal; text-align:left;" | Norge i bilder | | [http://norgeibilder.no/?x={utm33easting}&y={utm33northing}&level={osmzoom}&utm=33&projects=&layers=&planned=0 Aerial] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Høydedata | [https://hoydedata.no/LaserInnsyn/?x={utm33easting}&y={utm33northing}&level={osmzoom}&utm=33&projects=&layers=&planned=0 Map] | | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Norkart Virtual Globe | | [http://www.virtual-globe.info/VirtualGlobeStarter.php?request=page&dataset=http://www.virtual-globe.info/norge-globe-features.vgml&lookat={londegdec},{latdegdec},{scale} Satellite] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Finn.no | [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=normap Map] | [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=norortho Aerial] | [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=norhybrid Hybrid] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Gulesider.no | [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom} Map] | [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=aerial Aerial] | [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=hybrid Hybrid] | [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=nautical Sea], [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&orientation=N&l=oblique Oblique] |- ! scope="row" style="font-weight:normal; text-align:left;" | 1881 | [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=0&r=&o=&layer= Map] | [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=1&r=&o=&layer= Aerial] | [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=2&r=&o=&layer= Hybrid] | [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=5&r=&o=&layer= Oblique] |- ! scope="row" style="font-weight:normal; text-align:left;" | Statens Vegvesen | [https://www.vegvesen.no/vegkart/vegkart/#kartlag:geodata/@{utm33easting},{utm33northing},{osmzoom} Map] | [https://www.vegvesen.no/vegkart/vegkart/#kartlag:nib/@{utm33easting},{utm33northing},{osmzoom} Aerial] | | [http://www.vegvesen.no/Trafikkbeta/?lat={latdegdec}&long={londegdec}&zoom={osmzoom} Traffic] |- ! scope="row" style="font-weight:normal; text-align:left;" | UT.no | [https://www.ut.no/kart?lat={latdegdec}&lng={londegdec}&zoom={osmzoom} Map] | | | |} <div id="GEOTEMPLATE-SJ"> <!-- Vennligst ikke flytt Svalbard og Jan Mayen til alfabetisk plassering. Dette for at kodene NO-21 og NO-22 skal gi resultat.--> == Svalbard and Jan Mayen == === Svalbard === {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Aerial |- ! scope="row" style="font-weight:normal; text-align:left;" | TopoSvalbard | [http://toposvalbard.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=map Map] | [http://toposvalbard.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=aerial Aerial] |-style="background:#f5f5f5" ! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no | [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+svalbard Svalbard] | |} === Jan Mayen === {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Aerial |- ! scope="row" style="font-weight:normal; text-align:left;" | TopoJanMayen | [http://topojanmayen.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=map Map] | [http://topojanmayen.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=aerial Aerial] |-style="background:#f5f5f5" ! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no | [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+janmayen Jan Mayen] | |} </div> </div> <div id="GEOTEMPLATE-PL"> ==Poland== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapa Polski Targeo | [http://mapa.targeo.pl/{title},{londegdec},{latdegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Szukacz.pl | [http://mapa.szukacz.pl/?n={latdegdec}&e={londegdec}&z=3 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Zumi | [http://www.zumi.pl/namapie.html?long={londegdec}&lat={latdegdec}&type=3&scale=3 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Autopilot | [http://mapa.autopilot.pl/?long={londegdec}&lat={latdegdec}&zoom=12 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Polish Railways Map | [http://www.bazakolejowa.pl/index.php?dzial=mapa#{osmzoom}/{latdegdec}/{londegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | UMP | [http://mapa.ump.waw.pl/ump-www/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&mlat={latdegdec}&mlon={londegdec} Map] |} </div> <div id="GEOTEMPLATE-PT"> ==Portugal== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" rowspan="3" style="font-weight:normal; text-align:left;" | Instituto Geográfico do Exército <br /><small>Requires Internet Explorer</small> | [http://www.igeoe.pt/igeoearcweb/igeoesig/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Continente] (Portuguese mainland) |- | [http://www.igeoe.pt/igeoearcweb/acores/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Açores] |- | [http://www.igeoe.pt/igeoearcweb/madeira/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Madeira] |- ! scope="row" rowspan="3" style="font-weight:normal; text-align:left;" | SAPO <br /> | [https://mapas.sapo.pt/?o=0&M={londegdec},{latdegdec} Continente e Ilhas] |} </div> <div id="GEOTEMPLATE-RU"> ==Russia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Yandex.Maps (Russian)&nbsp;{{pipe}} {{lang|ru|Яндекс Карть}} | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Yandex.Maps (English)&nbsp;{{pipe}} {{lang|ru|Яндекс Карть}} | [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki&nbsp;{{pipe}} {{lang|ru|Космоснимки}} | [http://www.kosmosnimki.ru/index.html#mode=map&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Map] | [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net | [http://maps.vlasenko.net/?lon={londegdec}&lat={latdegdec} Old Soviet Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Rambler Maps&nbsp;{{pipe}} {{lang|ru|Рамблер}} | [http://maps.rambler.ru/?ll={londegdec},{latdegdec}&z={osmzoom} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Maps@Mail.ru&nbsp;{{pipe}} {{lang|ru|Карты@Mail.ru}} | [http://maps.mail.ru/#x={londegdec}&y={latdegdec}&z={zoom} Map] | [http://maps.mail.ru/#x={londegdec}&y={latdegdec}&z={zoom}&mode=satellite Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | eAtlas | [http://www.eatlas.ru/#z={zoom}&lat={latdegdec}&lon={londegdec} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Navitel | [http://maps.navitel.su/api/map.html?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=BF Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Progorod&nbsp;{{pipe}} {{lang|ru|Прогород}} | [http://www.pro-gorod.ru/maps/?z={osmzoom}&lon={londegdec}&lat={latdegdec} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Roscosmos Geoportal | [http://geoportal.ntsomz.ru/index.php/welcome?x={londegdec}&y={latdegdec}&z={span} Map] | [http://geoportal.ntsomz.ru/index.php/welcome?x={londegdec}&y={latdegdec}&z={span} Satellite] | |- ! scope="row" style="font-weight:normal; text-align:left;" | 2GIS&nbsp;{{pipe}} {{lang|ru|2ГИС}} | [https://2gis.ru/moscow/geo/4504222442088225,{latdegdec},{londegdec} Map] | | |} === City-specific === {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Region |- ! scope="row" style="font-weight:normal; text-align:left;" | Moscow Map&nbsp;{{pipe}} {{lang|ru|Карта Москвы}} | [http://www.moscowmap.ru/imap_moscow.shtml?lat={latdegdec}&lng={londegdec}&zoom={osmzoom} Map] | Moscow |- ! scope="row" style="font-weight:normal; text-align:left;" | Cheboksary.ws&nbsp;{{pipe}} {{lang|ru|Чебоксары}} | [http://www.cheboksary.ws/?xy={latdegdec},{londegdec}&z={osmzoom}&t=coordinate Map] | Cheboksary |} <!-- [http://www.kartaspb.ru/index.php?v=2&x=14752&y=22463&z=6&pt=1] --> </div> <div id="GEOTEMPLATE-SK"> ==Slovakia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapy. Atlas.sk | [http://mapy.atlas.sk/GPS%3A{latdegdec}N+{londegdec}E Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | TuristickaMapa.sk | [http://www.turistickamapa.sk/?y={latdegdec}&x={londegdec} Map] |} </div> <div id="GEOTEMPLATE-SI"> ==Slovenia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | [[Orthophoto]] ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | [[Online map services of Slovenia|Geopedia]] | [http://www.geopedia.si/#L381_T13_b4_c{latdegdec},{londegdec}_s16 Map] | [http://www.geopedia.si/#L381_T13_b2_c{latdegdec},{londegdec}_s16 Orthophoto] | [http://www.geopedia.si/#L381_T13_b1-3_c{latdegdec},{londegdec}_s16 Terrain] |- ! scope="row" style="font-weight:normal; text-align:left;" | [[GeaBios]] | [http://www.geabios.com/html/services/maps/PublicMap.htm?lat={latdegdec}&lon={londegdec}&fov={span} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Gaea+ | | | [http://gaeaplus.si/webstart?version=gaeaplus&command=FlyLookAt;{latdegdec};{londegdec};2500;WGS84;0.0;45.0; 3D Satellite] |} </div> <div id="GEOTEMPLATE-ES"> ==Spain== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Coverage ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | SigPac | style="text-align:center" | all | [http://sigpac.mapa.es/fega/antiguovisor/?ube={utm33easting};{utm33northing};{utm33easting};{utm33northing};33 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Vissir – ICC | Catalonia | [http://www.icc.cat/vissir3/?lang=eng&mp_zoom=n:{zoom}&etrs89x={londegdec}&etrs89y={latdegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Nomecalles | Community of Madrid | [http://gestiona.madrid.org/nomecalles/Inicio.icm?idioma=en&utmX={utmeasting}&utmY={utmnorthing}&zoom={altitude} Map] |} </div> <div id="GEOTEMPLATE-SE"> ==Sweden== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Eniro | [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec} Map] | [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec};h Labeled satellite] | [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec};o View] |- ! scope="row" style="font-weight:normal; text-align:left;" | hitta.se | [https://para.toolforge.org/geo/convert/WGS84toRT90.php?lat={latdegdec}&lon={londegdec}&url=http%3A//www.hitta.se/LargeMap.aspx%3Fz%3D3%26mp%3D%3Cpts%3E%3Cpt%20x%3D%22%7Brt90x%7D%22%20y%3D%22%7Brt90y%7D%22%20i%3D%22/images/point.png%22%3E%3Ct%3E{title}%3C/t%3E%3C/pt%3E%3C/pts%3E Map] | [https://para.toolforge.org/geo/convert/WGS84toRT90.php?lat={latdegdec}&lon={londegdec}&url=http%3A//www.hitta.se/LargeMap.aspx%3FShowSatellite%3Dtrue%26z%3D3%26mp%3D%3Cpts%3E%3Cpt%20x%3D%22%7Brt90x%7D%22%20y%3D%22%7Brt90y%7D%22%20i%3D%22/images/point.png%22%3E%3Ct%3E{title}%3C/t%3E%3C/pt%3E%3C/pts%3E Satellite] | |} </div> <div id="GEOTEMPLATE-CH"> ==Switzerland== [[Swiss Grid]] coordinates: '''{ch1903easting} / {ch1903northing}''' {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Cantons covered ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | map.geo.admin.ch | style="text-align:center" | all | [http://map.geo.admin.ch/?zoom=5&X={ch1903northing}&Y={ch1903easting}&lang={language}&crosshair=marker Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | map.search.ch | style="text-align:center" | all | [http://map.search.ch/{ch1903easting},{ch1903northing} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | MySwitzerland.com | style="text-align:center" | all | [http://map.myswitzerland.com/myswitzerland/?x={ch1903easting}.00&y={ch1903northing}.00&lang={language} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapplus/Tydac | style="text-align:center" | all | [http://www.mapplus.ch/frame.php?map=&x={ch1903easting}&y={ch1903northing}&zl=12 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | geoportal.ch | St. Gallen, Appenzell | [http://www.geoportal.ch/schnittstelle/aufruf.aspx?VERSION=1.0&REQUEST=GetIGis&MAP=94&TOPIC=Coord&ATTRIBUTE1={ch1903easting}&ATTRIBUTE2={ch1903northing}&sign=0&WIDTH=2000 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | AGISviewer Kanton Aargau | Aargau | [http://www.ag.ch/agisviewer/mapFrame.asp?MapWidth=531&MapHeight=492&bitte%20ausw%E4hlen!&Cmd=zoomIn&MinX={ch1903easting}.00001&MinY={ch1903northing}.1&MaxX={ch1903easting}.9&MaxY={ch1903northing}.9 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | GeoPortal Basel-Stadt | Basel-City | [http://www.geo-bs.ch/stadtplan_stadtplan_karte.cfm?X={ch1903easting}&Y={ch1903northing}&Jump=3&Zoom=1000&ZIparkhaeuser=1&ZIspitaeler=1 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | geoView.BL | Basel-Country |[https://www.geo.bl.ch/parzis/automap.jsp?LAYERS=map_3&ZOOM={ch1903easting}.000001%7C{ch1903northing}.000001%7C{ch1903easting}.99%7C{ch1903northing}.99 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | GéoPortail du Canton de Jura | Jura | [https://www.jura.ch/sit/geoportail/IndexRedir.html?Y={ch1903easting}&X={ch1903northing}&echelle=5000&theme=photoaerienne Map] |- ! scoEast={IlocalE}pe="row" style="font-weight:normal; text-align:left;" | SITN | Neuchâtel |[http://sitn.ne.ch/index.html?x={ch1903easting}&y={ch1903northing}&echelle=25000 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | GIS Schaffhausen | Schaffhausen | [http://www.gis.sh.ch/gis_sh_internet/mapservice.asp?IDProjekt=3&MapServiceUserGroup=1&MapServiceUser=0&MapServiceURL=Nav@g@22@u@West@g@{ch1903easting}@u@Nord@g@{ch1903northing}@u@B@g@1000 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | GeoShop vs.geo | Valais | [http://mapserver3.internetgalerie.ch/vs-geo/vs-geo.php?recenter_bbox={ch1903easting},{ch1903northing} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | ZugMap | Zug | [http://www.zugmap.ch/bm2_zugmap/mapservice.asp?IDProjekt=1&MapServiceUserGroup=29&MapServiceUser=0&MapServiceURL=Nav@g@22@u@West@g@{ch1903easting}@u@Nord@g@{ch1903northing}@u@B@g@5726&MapServiceDatenauswahl=89@g@94 Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | GIS-Browser Kanton Zürich | Zurich | [http://maps.zh.ch?topic=BASISKARTEZH&scale=10000&x={ch1903easting}&y={ch1903northing}&markers=ring Map] |} </div> <div id="GEOTEMPLATE-UA"> ==Ukraine== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite |- ! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net | [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec} Map] | [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec}&addmap1=space10 Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | Visicom Maps | [http://maps.visicom.ua/#lng={londegdec};lat={latdegdec};z=6;map=ukraine_en;lngm={londegdec};latm={latdegdec}; Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki | | [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel | [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map] | |} </div> =Oceania= <div id="GEOTEMPLATE-AU"> ==Australia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Street-Directory.com.au | [http://www.street-directory.com.au/sd_new/genmap.cgi?x={londegdec}&y={latdegdec}&sizex=800&sizey=800&level=5&star=6 Map] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Bonzle Digital Atlas | [http://maps.bonzle.com/c/a?a=p&x={londegdec}&y={latdegdec} Map] | [http://maps.bonzle.com/c/a?a=p&d=ter&x={londegdec}&y={latdegdec} Terrain Slice] |- ! scope="row" style="font-weight:normal; text-align:left;" | Australian Geographic Reference Image | | [http://agri.openstreetmap.org/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Aerial] (via [[OpenStreetMap]]) |} </div> =Asia= <div id="GEOTEMPLATE-AZ"> == Azerbaijan == {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- !scope="row" style="font-weight:normal; text-align:right;" | GoMap.Az | [https://gomap.az/maps/en/@/map;lt={latdegdec};ln={londegdec};z=13 Map] |} </div> <div id="GEOTEMPLATE-CN"> ==China== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Baidu Maps (百度地图) | [http://map.baidu.com/?latlng={latdegdec},{londegdec}&title={titlee}&content={titlee}&autoOpen=true&l= Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Amap (高德地图) | [http://ditu.amap.com/regeo?lng={londegdec}&lat={latdegdec}&name={titlee} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | QQ Map (腾讯地图) |[https://map.qq.com/?type=marker&isopeninfowin=1&markertype=1&pointx={londegdec}&pointy={latdegdec}&name={titlee}&addr=ADDRESS Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Tianditu / Map World (天地图) |[https://map.tianditu.gov.cn/ Map] (Indirect link) |- | colspan="2" style="font-size:smaller" | Due to [[restrictions on geographic data in China]], all Chinese map services provide distorted maps that are shifted from GeoHack's coordinates. You may obtain coordinates suitable for these maps from [https://artoria2e5.github.io/PRCoords/demo?lat={latdegdec}&lon={londegdec}#output this link]. (Use "WGS &rarr; BD" for Baidu and "WGS &rarr; GCJ" for all other services including Google.) |} <!-- Sogou [http://map.sogou.com/index.html#c=12957437.5,4833843.75,{osmzoom}] look like 100,000*{latdegdec} ^^ Can be some sort of "web mercator" too. ^^ Official api available for conversion from WGS84/GCJ02/BD coordinate into Sougou coordinate, see http://map.sogou.com/api/documentation/javascript/api2.5/examples/index.html ^^ Fed http://api.go2map.com/maps/js/api_v2.5.1.js into https://lelinhtinh.github.io/de4js/: looks like a baidu-like web mercator with big LL2MC/MC2LL arrays for polynomial work ^^ Fed the site js /v708/js/z20190219.js in there too, no direct code paths to parse normal lat-lng Mapbar - to be investigate --> </div> <div id="GEOTEMPLATE-HK"> == Hong Kong == {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- !scope="row" style="font-weight:normal; text-align:right;" | CentaMap | [https://hk.centamap.com Map] (Indirect link) |- !GeoInfo Map | [https://www2.map.gov.hk/gih3/view/index.jsp Map] (Indirect link) |} </div> <div id="GEOTEMPLATE-IN"> == India == {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- !scope="row" style="font-weight:normal; text-align:right;" | Bhuvan | [https://bhuvan-app1.nrsc.gov.in/bhuvan2d/bhuvan/bhuvan2d.php Map] (Indirect link) |- !scope="row" style="font-weight:normal; text-align:right;" |MapmyIndia | [https://maps.mapmyindia.com/@{latdegdec},{londegdec} Map] |- !scope="row" style="font-weight:normal; text-align:right;" |Survey of India | [https://indiamaps.gov.in/soiapp/ Map] (Indirect link) |} </div> <div id="GEOTEMPLATE-IR"> == Iran == {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- !scope="row" style="font-weight:normal; text-align:right;" | Parsijoo map | [https://map.parsijoo.ir/?lat={latdegdec}&lon={londegdec}&z=14 Map] |- !scope="row" style="font-weight:normal; text-align:right;" | Balad Maps | [https://balad.ir/location?latitude={latdegdec}&longitude={londegdec}&zoom=16.500000 Map] |} </div> <div id="GEOTEMPLATE-PS"> ==Palestine== :''In addition to Palestine Open Maps, Israeli maps tend to cover the State of Palestine fairly well.''<br /><br /><!--<br />Please do not move the Palestine entry and put it in its normal alphabetical place. It is here as part of a hack, so that it shows Israeli maps.--> {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Maps from 1870s to modern |- ! scope="row" style="font-weight:normal; text-align:left;" | Palestine Open Maps | [https://palopenmaps.org/view/9999/@{latdegdec},{londegdec} Maps] |} <div id="GEOTEMPLATE-IL"> ==Israel== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | Topo ! scope="col" | Historical ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Amud Anan<br />{{lang|he|עמוד ענן|rtl=yes}} | | | [http://amudanan.co.il/?lon={londegdec}&lat={latdegdec} Topo] | [http://amudanan.co.il/?lon={londegdec}&lat={latdegdec}&map=pef 1880] | |- ! scope="row" style="font-weight:normal; text-align:left;" | govmap | [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=0 Map] | [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=1 Sat.] [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=2 <small>&#91;hybrid&#93;</small>] | [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=9 Topo] | [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=6 1935] [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=4 1940] | [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=3 3D buildings] [http://old.govmap.gov.il/viewer.asp alt.] |} ===City specific=== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | City ! scope="col" | Map ! scope="col" | Historical ! scope="col" | Other |- ! rowspan="3" scope="row" style="font-weight:normal; text-align:left;" | govmap | Haifa | | [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=8 1919] | |- | Jerusalem | | [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=7 1926] | |- | Tel Aviv | | [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=5 1930] | |} </div> </div> <div id="GEOTEMPLATE-JP"> ==Japan== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite ! scope="col" | Other |- ! scope="row" style="font-weight:normal; text-align:left;" | Geographical Survey Institute/CyberJapan | | | [http://maps.gsi.go.jp/#15/{latdegdec}/{londegdec} Topo/Aerial], [http://cyberjapandata.gsi.go.jp/3d/site/index.html?did=std&lat={latdegdec}&lon={londegdec}&z=14 WebGL 3D] |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapion | [http://www.mapion.co.jp/m2/{latdegdec},{londegdec},{osmzoom} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | MapFan Web | [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://www.mapfan.com/m.cgi?MAP={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}}} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Yahoo! Japan | [http://map.yahoo.co.jp/maps?lat={latdegdec}&lon={londegdec}&z={osmzoom} Map] | [http://map.yahoo.co.jp/maps?lat={latdegdec}&lon={londegdec}&z={osmzoom}&mode=aero Aero] | |- ! scope="row" style="font-weight:normal; text-align:left;" | Goo | [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://map.goo.ne.jp/map.php?MAP={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}}} Map] | | |- ! scope="row" style="font-weight:normal; text-align:left;" | Its-mo Guide | [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://www.its-mo.com/z.htm?m={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}&l=8}} Map] | | |} </div> <div id="GEOTEMPLATE-KZ"> ==Kazakhstan== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map ! scope="col" | Satellite |- ! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map] | [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki | | [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite] |- ! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel | [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map] | |} </div> <div id="GEOTEMPLATE-MO"> ==Macao== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Mapa On-line de Macau | [https://webmap.gis.gov.mo/InetGIS/port/index.html Map] (Indirect link) |} </div> <div id="GEOTEMPLATE-SG"> ==Singapore== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Gothere | [http://gothere.sg/maps#q:@{latdegdec}%2C%20{londegdec}: Map] |} </div> <div id="GEOTEMPLATE-KO"> ==South Korea== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" |Naver Map | [https://map.naver.com/?lat={latdegdec}&lng={londegdec} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" |Kakao Map | [https://map.kakao.com/link/map/{latdegdec},{londegdec} Map] |} </div> <div id="GEOTEMPLATE-TW"> ==Taiwan== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Urmap | [http://www.urmap.com/map?center={latdegdec},{londegdec}&zoom={osmzoom} Map] |- ! scope="row" style="font-weight:normal; text-align:left;" | Taiwan Map Service | [https://maps.nlsc.gov.tw/T09E/mapshow.action?lat={latdegdec}?lon={londegdec} Map] |} </div> <div id="GEOTEMPLATE-TH"> ==Thailand== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Longdo Map | [https://map.longdo.com/?locale=en&search={latdegdec},{londegdec} Map] |} </div> =South America= No specific resources added yet. =Africa= <div id="GEOTEMPLATE-NA"> ==Namibia== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | South African Chief Directorate: Surveys and Mapping 1:50k Topographic (1970s/1980s) | [https://namibia-topo.openstreetmap.org.za/#zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Map] (via OpenStreetMap South Africa) |} </div> <div id="GEOTEMPLATE-ZA"> ==South Africa== {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | [[Chief Directorate: National Geo-spatial Information]] aerial | [http://aerial.openstreetmap.org.za/?lon={londegdec}&lat={latdegdec}&zoom={osmzoom} Aerial Imagery] (via OpenStreetMap South Africa) |} </div> <div id="GEOTEMPLATE-AQ"><div id="GEOTEMPLATE-XS"><!--XS: Wiki assigned code elements per [[de:Vorlage:Coordinate#Ozeane]] for Southern Ocean --> =Antarctica= {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Antarctic Digital Database Map Viewer | [https://www.add.scar.org/ Map] (Indirect link) |} </div></div> <div id="GEOTEMPLATE-XN"> =Arctic= {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Arctic Web Map | [https://webmap.arcticconnect.ca/index.html#ac_3573/{osmzoom}/{latdegdec}/{londegdec} Map] |} </div> <div id="GEOTEMPLATE-XZ"> =International waters (XZ)= {| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;" |- style="background:#efefef" ! scope="col" | Service ! scope="col" | Map |- ! scope="row" style="font-weight:normal; text-align:left;" | Open Sea Map | [https://map.openseamap.org/?zoom=14&lat={latdegdec}&lon={londegdec} Map] |} </div> <!-- End region-specific --> </div><noinclude> {{documentation|Template:GeoTemplate/doc}} </noinclude> f660ba8db3681adb40f06e1a48d7a6ab1c479523 Module:Lang/data 828 465 3132 3131 2023-11-09T20:07:30Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Lang/data]] Scribunto text/plain local lang_obj = mw.language.getContentLanguage(); local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag --[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------ primary table of tables that decode: lang -> language tags and names script -> ISO 15924 script tags region -> ISO 3166 region tags variant -> iana registered variant tags suppressed -> map of scripts tags and their associated language tags all of these data come from separate modules that are derived from the IANA language-subtag-registry file key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches the first name. ]] local function key_to_lower (module, src_type) local out = {}; local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data if 'var_sup' == src_type then for k, v in pairs (source) do out[k:lower()] = v; -- for variant and suppressed everything is needed end elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active) for k, v in pairs (source.active) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated) for k, v in pairs (source.deprecated) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end else -- here for all other sources for k, v in pairs (source) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end end return out; end local lang_name_table_t = { lang = key_to_lower ('Module:Language/data/iana languages', 'lang'), lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'), script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'), suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower } --[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >-------------------------------- For internationalization; not used at en.wiki The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal. Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki language list for the local language. Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all. When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens add an appropriate entry to the override table below. Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply spelling differences: bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym dv: IANA: Dhivehi MW: Divehi el: IANA: Modern Greek MW: Greek ht: IANA: Haitian MW: Haitian Creole ky: IANA: Kirghiz MW: Kyrgyz li: IANA: Limburgan MW: Limburgish or: IANA: Oriya MW: Odia os: IANA: Ossetian MW: Ossetic "pa: IANA: Panjabi MW: Punjabi "ps: IANA: Pushto MW: Pashto "to: IANA: Tonga MW: Tongan "ug: IANA: Uighur MW: Uyghur use the override table to override language names that are incorrect for your project To see the list of names that MediaWiki has for your language, enter this in the Debug colsole: =mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all')) (replacing <tag> with the language tag for your language) Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true. ]] local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki -- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all if true == media_wiki_override_enable then local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list if lang_name_table_t.lang[tag] then -- if the tag is in the main list lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki end end end --[[--------------------------< O V E R R I D E >-------------------------------------------------------------- Language codes and names in this table override the BCP47 names in lang_name_table. indexes in this table shall always be lower case ]] local override = { ------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------ ["ab"] = "Abkhaz", -- to match en.wiki article name ["ca-valencia"] = "Valencian", ["cu"] = "Church Slavonic", -- 2nd IANA name; ["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names ["de-ch"] = "Swiss Standard German", ["en-au"] = "Australian English", ["en-ca"] = "Canadian English", ["en-emodeng"] = "Early Modern English", ["en-gb"] = "British English", ["en-ie"] = "Irish English", ["en-in"] = "Indian English", ["en-nz"] = "New Zealand English", ["en-us"] = "American English", ["en-za"] = "South African English", ["fy"] = "West Frisian", -- Western Frisian ["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title ["nl-be"] = "Flemish", -- match MediaWiki ["oc-provenc"] = "Provençal", ["ps"] = "Pashto", -- Pushto ["pt-br"] = "Brazilian Portuguese", -- match MediaWiki ["tw-asante"] = "Asante Twi", ["ug"] = "Uyghur", -- 2nd IANA name; to match en.wiki article name -- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["av"] = "Avar", -- Avaric ["bo"] = "Standard Tibetan", -- Tibetan ["el"] = "Greek", -- Modern Greek -- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa ["ff"] = "Fula", -- Fulah ["ht"] = "Haitian Creole", -- Haitian ["hz"] = "Otjiherero", -- Herero ["ii"] = "Yi", -- Sichuan Yi ["ki"] = "Gikuyu", -- Kikuyu ["kl"] = "Greenlandic", -- Kalaallisut ["ky"] = "Kyrgyz", -- Kirghiz ["lg"] = "Luganda", -- Ganda ["li"] = "Limburgish", -- Limburgan ["mi"] = "Māori", -- Maori ["na"] = "Nauruan", -- Nauru ["nb"] = "Bokmål", -- Norwegian Bokmål ["nd"] = "Northern Ndebele", -- North Ndebele ["nn"] = "Nynorsk", -- Norwegian Nynorsk ["nr"] = "Southern Ndebele", -- South Ndebele ["ny"] = "Chichewa", -- Nyanja ["oj"] = "Ojibwe", -- Ojibwa ["or"] = "Odia", -- Oriya ["pa"] = "Punjabi", -- Panjabi ["rn"] = "Kirundi", -- Rundi ["sl"] = "Slovene", -- Slovenian ["ss"] = "Swazi", -- Swati ["st"] = "Sotho", -- Southern Sotho ["to"] = "Tongan", -- Tonga --<end do-not-edit except to comment out>-- ------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >---------------------------------------------- ["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash) ["arc"] = "Imperial Aramaic (700-300 BCE)", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 'preferred' name ["art"] = "constructed", -- to match en.wiki article; lowercase for category name ["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title ["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title ["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration; ["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat ["bxr"] = "Russian Buryat", -- Russia Buriat; ["bxu"] = "Chinese Buryat", -- China Buriat; ["byr"] = "Yipma", -- Baruya, Yipma ["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic ["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title ["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash) ["frr"] = "North Frisian", -- Northern Frisian ["frs"] = "East Frisian Low Saxon", -- Eastern Frisian ["gsw-fr"] = "Alsatian", -- match MediaWiki ["haa"] = "Hän", -- Han; to match en.wiki article title ["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash) ["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title ["jam"] = "Jamaican Patois", -- Jamaican Creole English ["lij-mc"] = "Monégasque", -- Ligurian as spoken in Monaco ["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo ["mhr"] = "Meadow Mari", -- Eastern Mari ["mid"] = "Modern Mandaic", -- Mandaic ['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope; ["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash) ["mla"] = "Tamambo", -- Malo ['mte'] = "Mono-Alu", -- Mono (Solomon Islands) ['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope; ["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title ["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title ["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash) ["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title ["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text ["nrf-gg"] = "Guernésiais", -- match MediaWiki ["nrf-je"] = "Jèrriais", -- match MediaWiki ["nzi"] = "Nzema", -- Nzima; to match en.wiki article title ["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash) ["orv"] = "Old East Slavic", -- Old Russian ["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article ["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article ["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title ["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name() ["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article ["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title ["stq"] = "Saterland Frisian", -- Saterfriesisch ["und"] = "undetermined", -- capitalization to match existing category ["wrg"] = "Warrongo", -- Warungu ["xal-ru"] = "Kalmyk", -- to match en.wiki article title ["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño ["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title ["zxx"] = "no linguistic content", -- capitalization -- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["ace"] = "Acehnese", -- Achinese ["aec"] = "Sa'idi Arabic", -- Saidi Arabic ["akl"] = "Aklan", -- Aklanon ["alt"] = "Altay", -- Southern Altai ["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache ["bal"] = "Balochi", -- Baluchi -- ["bcl"] = "Central Bicolano", -- Central Bikol ["bin"] = "Edo", -- Bini ["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya ["chg"] = "Chagatay", -- Chagatai ["ckb"] = "Sorani Kurdish", -- Central Kurdish ["cnu"] = "Shenwa", -- Chenoua ["coc"] = "Cocopah", -- Cocopa ["diq"] = "Zazaki", -- Dimli ["fit"] = "Meänkieli", -- Tornedalen Finnish ["fkv"] = "Kven", -- Kven Finnish ["frk"] = "Old Frankish", -- Frankish ["gez"] = "Ge'ez", -- Geez ["gju"] = "Gujari", -- Gujari ["gsw"] = "Alemannic German", -- Swiss German ["gul"] = "Gullah", -- Sea Island Creole English ["hak"] = "Hakka", -- Hakka Chinese ["hbo"] = "Biblical Hebrew", -- Ancient Hebrew ["hnd"] = "Hindko", -- Southern Hindko -- ["ikt"] = "Inuvialuk", -- Inuinnaqtun ["kaa"] = "Karakalpak", -- Kara-Kalpak ["khb"] = "Tai Lü", -- Lü ["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish ["kpo"] = "Kposo", -- Ikposo ["krj"] = "Kinaray-a", -- Kinaray-A ["ktz"] = "Juǀ'hoan", -- Juǀʼhoan ["lez"] = "Lezgian", -- Lezghian ["liv"] = "Livonian", -- Liv ["lng"] = "Lombardic", -- Langobardic ["mia"] = "Miami-Illinois", -- Miami ["miq"] = "Miskito", -- Mískito ["mix"] = "Mixtec", -- Mixtepec Mixtec ["mni"] = "Meitei", -- Manipuri ["mrj"] = "Hill Mari", -- Western Mari ["mww"] = "White Hmong", -- Hmong Daw ["nds-nl"] = "Dutch Low Saxon", -- Low German -- ["new"] = "Nepal Bhasa", -- Newari ["nso"] = "Northern Sotho", -- Pedi -- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari ["ood"] = "O'odham", -- Tohono O'odham ["otk"] = "Old Turkic", -- Old Turkish ["pal"] = "Middle Persian", -- Pahlavi ["pam"] = "Kapampangan", -- Pampanga ["phr"] = "Potwari", -- Pahari-Potwari ["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit -- ["pnb"] = "Punjabi", -- Western Panjabi ["psu"] = "Shauraseni", -- Sauraseni Prākrit ["rap"] = "Rapa Nui", -- Rapanui ["rar"] = "Cook Islands Māori", -- Rarotongan ["rmu"] = "Scandoromani", -- Tavringer Romani ["rom"] = "Romani", -- Romany ["rup"] = "Aromanian", -- Macedo-Romanian ["ryu"] = "Okinawan", -- Central Okinawan ["sdc"] = "Sassarese", -- Sassarese Sardinian ["sdn"] = "Gallurese", -- Gallurese Sardinian ["shp"] = "Shipibo", -- Shipibo-Conibo ["src"] = "Logudorese", -- Logudorese Sardinian ["sro"] = "Campidanese", -- Campidanese Sardinian ["tkl"] = "Tokelauan", -- Tokelau ["tvl"] = "Tuvaluan", -- Tuvalu ["tyv"] = "Tuvan", -- Tuvinian ["vls"] = "West Flemish", -- Vlaams ["wep"] = "Westphalian", -- Westphalien ["xal"] = "Oirat", -- Kalmyk ["xcl"] = "Old Armenian", -- Classical Armenian ["yua"] = "Yucatec Maya", -- Yucateco --<end do-not-edit except to comment out>-- ------------------------------< P R I V A T E _ U S E _ T A G S >---------------------------------------------- ["akk-x-latbabyl"] = "Late Babylonian", ["akk-x-midassyr"] = "Middle Assyrian Akkadian", ["akk-x-midbabyl"] = "Middle Babylonian Akkadian", ["akk-x-neoassyr"] = "Neo-Assyrian Akkadian", ["akk-x-neobabyl"] = "Neo-Babylonian Akkadian", ["akk-x-old"] = "Old Akkadian", ["akk-x-oldassyr"] = "Old Assyrian Akkadian", ["akk-x-oldbabyl"] = "Old Babylonian Akkadian", ["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages ["ca-x-old"] = "Old Catalan", ["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages ["egy-x-demotic"] = "Demotic Egyptian", ["egy-x-late"] = "Late Egyptian", ["egy-x-middle"] = "Middle Egyptian", ["egy-x-old"] = "Old Egyptian", ["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages ["gmw-x-ecg"] = "East Central German", ["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre ["grc-x-attic"] = "Attic Greek", ["grc-x-biblical"] = "Biblical Greek", ["grc-x-byzant"] = "Byzantine Greek", ["grc-x-classic"] = "Classical Greek", ["grc-x-doric"] = "Doric Greek", ["grc-x-hellen"] = "Hellenistic Greek", ["grc-x-ionic"] = "Ionic Greek", ["grc-x-koine"] = "Koinē Greek", ["grc-x-medieval"] = "Medieval Greek", ["grc-x-patris"] = "Patristic Greek", ["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages ["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages ["inc-x-mitanni"] = "Mitanni-Aryan", -- inc in IANA is Indic languages ["inc-x-proto"] = "Proto-Indo-Aryan", ["ine-x-proto"] = "Proto-Indo-European", ["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages ["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages ["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there ["la-x-medieval"] = "Medieval Latin", ["la-x-new"] = "New Latin", ["lmo-x-milanese"] = "Milanese", -- lmo in IANA is Lombard; Milanese is a dialect ["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages ["prg-x-old"] = "Old Prussian", ["sem-x-ammonite"] = "Ammonite", ["sem-x-aramaic"] = "Aramaic", ["sem-x-canaan"] = "Canaanite languages", ["sem-x-dumaitic"] = "Dumaitic", ["sem-x-egurage"] = "Eastern Gurage", ["sem-x-hatran"] = "Hatran Aramaic", ["sem-x-oldsoara"] = "Old South Arabian", ["sem-x-palmyren"] = "Palmyrene Aramaic", ["sem-x-proto"] = "Proto-Semitic", ["sem-x-taymanit"] = "Taymanitic", ["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages ["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai ["yuf-x-wal"] = "Walapai", ["yuf-x-yav"] = "Yavapai", ["xsc-x-pontic"] = "Pontic Scythian", -- xsc in IANA is Scythian ["xsc-x-saka"] = "Saka", ["xsc-x-sarmat"] = "Sarmatian", } --[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------ for those rare occasions when article titles don't fit with the normal '<language name>-language', this table maps language code to article title. Use of this table should be avoided and the use of redirects preferred as that is the long-standing method of handling article names that don't fit with the normal pattern ]] local article_name = { ['kue'] = "Kuman language (New Guinea)", -- Kuman (Papua New Guinea); to avoid Kuman dab page ["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab ['mbo'] = "Mbo language (Cameroon)", -- Mbo (Cameroon) ['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages ['mnr'] = "Mono language (California)", -- Mono (USA) ['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon) ['qwm'] = "Kuman (Russia)", -- Kuman (Russia); to avoid Kuman dab page ["snq"] = "Sangu language (Gabon)", -- Sangu (Gabon) ["toi"] = "Tonga language (Zambia and Zimbabwe)", -- Tonga (Zambia and Zimbabwe); to avoid Tonga language dab page ["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab ["zmw"] = "Mbo language (Congo)", -- Mbo (Democratic Republic of Congo) } --[=[-------------------------< R T L _ S C R I P T S >-------------------------------------------------------- ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]] last update to this list: 2017-12-24 ]=] local rtl_scripts = { 'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr', 'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb', 'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg', 'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole', }; --[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------ This is a table of tables of transliteration standards and the language codes or language scripts that apply to those standards. This table is used to create the tool-tip text associated with the transliterated text displayed by some of the {{lang-??}} templates. These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for the cases when no |std= parameter value is provided. ]] local translit_title_table = { ['ahl'] = { ['default'] = 'Academy of the Hebrew Language transliteration', }, ['ala'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['ala-lc'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['batr'] = { ['default'] = 'Bikdash Arabic Transliteration Rules', }, ['bgn/pcgn'] = { ['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration', }, ['din'] = { ['ar'] = 'DIN 31635 Arabic', ['fa'] = 'DIN 31635 Arabic', ['ku'] = 'DIN 31635 Arabic', ['ps'] = 'DIN 31635 Arabic', ['tg'] = 'DIN 31635 Arabic', ['ug'] = 'DIN 31635 Arabic', ['ur'] = 'DIN 31635 Arabic', ['arab'] = 'DIN 31635 Arabic', ['default'] = 'DIN transliteration', }, ['eae'] = { ['default'] = 'Encyclopaedia Aethiopica transliteration', }, ['hepburn'] = { ['default'] = 'Hepburn transliteration', }, ['hunterian'] = { ['default'] = 'Hunterian transliteration', }, ['iast'] = { ['default'] = 'International Alphabet of Sanskrit transliteration', }, ['iso'] = { -- when a transliteration standard is supplied ['ab'] = 'ISO 9 Cyrillic', ['ba'] = 'ISO 9 Cyrillic', ['be'] = 'ISO 9 Cyrillic', ['bg'] = 'ISO 9 Cyrillic', ['kk'] = 'ISO 9 Cyrillic', ['ky'] = 'ISO 9 Cyrillic', ['mn'] = 'ISO 9 Cyrillic', ['ru'] = 'ISO 9 Cyrillic', ['tg'] = 'ISO 9 Cyrillic', ['uk'] = 'ISO 9 Cyrillic', ['bua'] = 'ISO 9 Cyrillic', ['sah'] = 'ISO 9 Cyrillic', ['tut'] = 'ISO 9 Cyrillic', ['xal'] = 'ISO 9 Cyrillic', ['cyrl'] = 'ISO 9 Cyrillic', ['ar'] = 'ISO 233 Arabic', ['ku'] = 'ISO 233 Arabic', ['ps'] = 'ISO 233 Arabic', ['ug'] = 'ISO 233 Arabic', ['ur'] = 'ISO 233 Arabic', ['arab'] = 'ISO 233 Arabic', ['he'] = 'ISO 259 Hebrew', ['yi'] = 'ISO 259 Hebrew', ['hebr'] = 'ISO 259 Hebrew', ['el'] = 'ISO 843 Greek', ['grc'] = 'ISO 843 Greek', ['ja'] = 'ISO 3602 Japanese', ['hira'] = 'ISO 3602 Japanese', ['hrkt'] = 'ISO 3602 Japanese', ['jpan'] = 'ISO 3602 Japanese', ['kana'] = 'ISO 3602 Japanese', ['zh'] = 'ISO 7098 Chinese', ['chi'] = 'ISO 7098 Chinese', ['pny'] = 'ISO 7098 Chinese', ['zho'] = 'ISO 7098 Chinese', -- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani? ['hans'] = 'ISO 7098 Chinese', ['hant'] = 'ISO 7098 Chinese', ['ka'] = 'ISO 9984 Georgian', ['kat'] = 'ISO 9984 Georgian', ['arm'] = 'ISO 9985 Armenian', ['hy'] = 'ISO 9985 Armenian', ['th'] = 'ISO 11940 Thai', ['tha'] = 'ISO 11940 Thai', ['ko'] = 'ISO 11941 Korean', ['kor'] = 'ISO 11941 Korean', ['awa'] = 'ISO 15919 Indic', ['bho'] = 'ISO 15919 Indic', ['bn'] = 'ISO 15919 Indic', ['bra'] = 'ISO 15919 Indic', ['doi'] = 'ISO 15919 Indic', ['dra'] = 'ISO 15919 Indic', ['gon'] = 'ISO 15919 Indic', ['gu'] = 'ISO 15919 Indic', ['hi'] = 'ISO 15919 Indic', ['hno'] = 'ISO 15919 Indic', ['inc'] = 'ISO 15919 Indic', ['kn'] = 'ISO 15919 Indic', ['kok'] = 'ISO 15919 Indic', ['ks'] = 'ISO 15919 Indic', ['mag'] = 'ISO 15919 Indic', ['mai'] = 'ISO 15919 Indic', ['ml'] = 'ISO 15919 Indic', ['mr'] = 'ISO 15919 Indic', ['ne'] = 'ISO 15919 Indic', ['new'] = 'ISO 15919 Indic', ['or'] = 'ISO 15919 Indic', ['pa'] = 'ISO 15919 Indic', ['pnb'] = 'ISO 15919 Indic', ['raj'] = 'ISO 15919 Indic', ['sa'] = 'ISO 15919 Indic', ['sat'] = 'ISO 15919 Indic', ['sd'] = 'ISO 15919 Indic', ['si'] = 'ISO 15919 Indic', ['skr'] = 'ISO 15919 Indic', ['ta'] = 'ISO 15919 Indic', ['tcy'] = 'ISO 15919 Indic', ['te'] = 'ISO 15919 Indic', ['beng'] = 'ISO 15919 Indic', ['brah'] = 'ISO 15919 Indic', ['deva'] = 'ISO 15919 Indic', ['gujr'] = 'ISO 15919 Indic', ['guru'] = 'ISO 15919 Indic', ['knda'] = 'ISO 15919 Indic', ['mlym'] = 'ISO 15919 Indic', ['orya'] = 'ISO 15919 Indic', ['sinh'] = 'ISO 15919 Indic', ['taml'] = 'ISO 15919 Indic', ['telu'] = 'ISO 15919 Indic', ['default'] = 'ISO transliteration', }, ['jyutping'] = { ['default'] = 'Jyutping transliteration', }, ['mlcts'] = { ['default'] = 'Myanmar Language Commission Transcription System', }, ['mr'] = { ['default'] = 'McCune–Reischauer transliteration', }, ['nihon-shiki'] = { ['default'] = 'Nihon-shiki transliteration', }, ['no_std'] = { -- when no transliteration standard is supplied ['akk'] = 'Semitic transliteration', ['sem'] = 'Semitic transliteration', ['phnx'] = 'Semitic transliteration', ['xsux'] = 'Cuneiform transliteration', }, ['pinyin'] = { ['default'] = 'Pinyin transliteration', }, ['rr'] = { ['default'] = 'Revised Romanization of Korean transliteration', }, ['rtgs'] = { ['default'] = 'Royal Thai General System of Transcription', }, ['satts'] = { ['default'] = 'Standard Arabic Technical Transliteration System transliteration', }, ['scientific'] = { ['default'] = 'scientific transliteration', }, ['ukrainian'] = { ['default'] = 'Ukrainian National system of romanization', }, ['ungegn'] = { ['default'] = 'United Nations Group of Experts on Geographical Names transliteration', }, ['wadegile'] = { ['default'] = 'Wade–Giles transliteration', }, ['wehr'] = { ['default'] = 'Hans Wehr transliteration', }, }; return { this_wiki_lang_tag = this_wiki_lang_tag, this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction article_name = article_name, lang_name_table = lang_name_table_t, override = override, rtl_scripts = rtl_scripts, special_tags_table = special_tags_table, translit_title_table = translit_title_table, }; 120387552d6d88bcddb6260de37dcd404c28ccdf Module:Language/data/iana languages 828 468 3134 3133 2023-11-09T20:07:31Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/data/iana_languages]] Scribunto text/plain -- File-Date: 2023-10-16 local active = { ["aa"] = {"Afar"}, ["ab"] = {"Abkhazian"}, ["ae"] = {"Avestan"}, ["af"] = {"Afrikaans"}, ["ak"] = {"Akan"}, ["am"] = {"Amharic"}, ["an"] = {"Aragonese"}, ["ar"] = {"Arabic"}, ["as"] = {"Assamese"}, ["av"] = {"Avaric"}, ["ay"] = {"Aymara"}, ["az"] = {"Azerbaijani"}, ["ba"] = {"Bashkir"}, ["be"] = {"Belarusian"}, ["bg"] = {"Bulgarian"}, ["bh"] = {"Bihari languages"}, ["bi"] = {"Bislama"}, ["bm"] = {"Bambara"}, ["bn"] = {"Bengali", "Bangla"}, ["bo"] = {"Tibetan"}, ["br"] = {"Breton"}, ["bs"] = {"Bosnian"}, ["ca"] = {"Catalan", "Valencian"}, ["ce"] = {"Chechen"}, ["ch"] = {"Chamorro"}, ["co"] = {"Corsican"}, ["cr"] = {"Cree"}, ["cs"] = {"Czech"}, ["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"}, ["cv"] = {"Chuvash"}, ["cy"] = {"Welsh"}, ["da"] = {"Danish"}, ["de"] = {"German"}, ["dv"] = {"Dhivehi", "Divehi", "Maldivian"}, ["dz"] = {"Dzongkha"}, ["ee"] = {"Ewe"}, ["el"] = {"Modern Greek (1453-)"}, ["en"] = {"English"}, ["eo"] = {"Esperanto"}, ["es"] = {"Spanish", "Castilian"}, ["et"] = {"Estonian"}, ["eu"] = {"Basque"}, ["fa"] = {"Persian"}, ["ff"] = {"Fulah"}, ["fi"] = {"Finnish"}, ["fj"] = {"Fijian"}, ["fo"] = {"Faroese"}, ["fr"] = {"French"}, ["fy"] = {"Western Frisian"}, ["ga"] = {"Irish"}, ["gd"] = {"Scottish Gaelic", "Gaelic"}, ["gl"] = {"Galician"}, ["gn"] = {"Guarani"}, ["gu"] = {"Gujarati"}, ["gv"] = {"Manx"}, ["ha"] = {"Hausa"}, ["he"] = {"Hebrew"}, ["hi"] = {"Hindi"}, ["ho"] = {"Hiri Motu"}, ["hr"] = {"Croatian"}, ["ht"] = {"Haitian", "Haitian Creole"}, ["hu"] = {"Hungarian"}, ["hy"] = {"Armenian"}, ["hz"] = {"Herero"}, ["ia"] = {"Interlingua (International Auxiliary Language Association)"}, ["id"] = {"Indonesian"}, ["ie"] = {"Interlingue", "Occidental"}, ["ig"] = {"Igbo"}, ["ii"] = {"Sichuan Yi", "Nuosu"}, ["ik"] = {"Inupiaq"}, ["io"] = {"Ido"}, ["is"] = {"Icelandic"}, ["it"] = {"Italian"}, ["iu"] = {"Inuktitut"}, ["ja"] = {"Japanese"}, ["jv"] = {"Javanese"}, ["ka"] = {"Georgian"}, ["kg"] = {"Kongo"}, ["ki"] = {"Kikuyu", "Gikuyu"}, ["kj"] = {"Kuanyama", "Kwanyama"}, ["kk"] = {"Kazakh"}, ["kl"] = {"Kalaallisut", "Greenlandic"}, ["km"] = {"Khmer", "Central Khmer"}, ["kn"] = {"Kannada"}, ["ko"] = {"Korean"}, ["kr"] = {"Kanuri"}, ["ks"] = {"Kashmiri"}, ["ku"] = {"Kurdish"}, ["kv"] = {"Komi"}, ["kw"] = {"Cornish"}, ["ky"] = {"Kirghiz", "Kyrgyz"}, ["la"] = {"Latin"}, ["lb"] = {"Luxembourgish", "Letzeburgesch"}, ["lg"] = {"Ganda", "Luganda"}, ["li"] = {"Limburgan", "Limburger", "Limburgish"}, ["ln"] = {"Lingala"}, ["lo"] = {"Lao"}, ["lt"] = {"Lithuanian"}, ["lu"] = {"Luba-Katanga"}, ["lv"] = {"Latvian"}, ["mg"] = {"Malagasy"}, ["mh"] = {"Marshallese"}, ["mi"] = {"Maori"}, ["mk"] = {"Macedonian"}, ["ml"] = {"Malayalam"}, ["mn"] = {"Mongolian"}, ["mr"] = {"Marathi"}, ["ms"] = {"Malay (macrolanguage)"}, ["mt"] = {"Maltese"}, ["my"] = {"Burmese"}, ["na"] = {"Nauru"}, ["nb"] = {"Norwegian Bokmål"}, ["nd"] = {"North Ndebele"}, ["ne"] = {"Nepali (macrolanguage)"}, ["ng"] = {"Ndonga"}, ["nl"] = {"Dutch", "Flemish"}, ["nn"] = {"Norwegian Nynorsk"}, ["no"] = {"Norwegian"}, ["nr"] = {"South Ndebele"}, ["nv"] = {"Navajo", "Navaho"}, ["ny"] = {"Nyanja", "Chewa", "Chichewa"}, ["oc"] = {"Occitan (post 1500)"}, ["oj"] = {"Ojibwa"}, ["om"] = {"Oromo"}, ["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"}, ["os"] = {"Ossetian", "Ossetic"}, ["pa"] = {"Panjabi", "Punjabi"}, ["pi"] = {"Pali"}, ["pl"] = {"Polish"}, ["ps"] = {"Pushto", "Pashto"}, ["pt"] = {"Portuguese"}, ["qu"] = {"Quechua"}, ["rm"] = {"Romansh"}, ["rn"] = {"Rundi"}, ["ro"] = {"Romanian", "Moldavian", "Moldovan"}, ["ru"] = {"Russian"}, ["rw"] = {"Kinyarwanda"}, ["sa"] = {"Sanskrit"}, ["sc"] = {"Sardinian"}, ["sd"] = {"Sindhi"}, ["se"] = {"Northern Sami"}, ["sg"] = {"Sango"}, ["sh"] = {"Serbo-Croatian"}, ["si"] = {"Sinhala", "Sinhalese"}, ["sk"] = {"Slovak"}, ["sl"] = {"Slovenian"}, ["sm"] = {"Samoan"}, ["sn"] = {"Shona"}, ["so"] = {"Somali"}, ["sq"] = {"Albanian"}, ["sr"] = {"Serbian"}, ["ss"] = {"Swati"}, ["st"] = {"Southern Sotho"}, ["su"] = {"Sundanese"}, ["sv"] = {"Swedish"}, ["sw"] = {"Swahili (macrolanguage)"}, ["ta"] = {"Tamil"}, ["te"] = {"Telugu"}, ["tg"] = {"Tajik"}, ["th"] = {"Thai"}, ["ti"] = {"Tigrinya"}, ["tk"] = {"Turkmen"}, ["tl"] = {"Tagalog"}, ["tn"] = {"Tswana"}, ["to"] = {"Tonga (Tonga Islands)"}, ["tr"] = {"Turkish"}, ["ts"] = {"Tsonga"}, ["tt"] = {"Tatar"}, ["tw"] = {"Twi"}, ["ty"] = {"Tahitian"}, ["ug"] = {"Uighur", "Uyghur"}, ["uk"] = {"Ukrainian"}, ["ur"] = {"Urdu"}, ["uz"] = {"Uzbek"}, ["ve"] = {"Venda"}, ["vi"] = {"Vietnamese"}, ["vo"] = {"Volapük"}, ["wa"] = {"Walloon"}, ["wo"] = {"Wolof"}, ["xh"] = {"Xhosa"}, ["yi"] = {"Yiddish"}, ["yo"] = {"Yoruba"}, ["za"] = {"Zhuang", "Chuang"}, ["zh"] = {"Chinese"}, ["zu"] = {"Zulu"}, ["aaa"] = {"Ghotuo"}, ["aab"] = {"Alumu-Tesu"}, ["aac"] = {"Ari"}, ["aad"] = {"Amal"}, ["aae"] = {"Arbëreshë Albanian"}, ["aaf"] = {"Aranadan"}, ["aag"] = {"Ambrak"}, ["aah"] = {"Abu' Arapesh"}, ["aai"] = {"Arifama-Miniafia"}, ["aak"] = {"Ankave"}, ["aal"] = {"Afade"}, ["aan"] = {"Anambé"}, ["aao"] = {"Algerian Saharan Arabic"}, ["aap"] = {"Pará Arára"}, ["aaq"] = {"Eastern Abnaki"}, ["aas"] = {"Aasáx"}, ["aat"] = {"Arvanitika Albanian"}, ["aau"] = {"Abau"}, ["aav"] = {"Austro-Asiatic languages"}, ["aaw"] = {"Solong"}, ["aax"] = {"Mandobo Atas"}, ["aaz"] = {"Amarasi"}, ["aba"] = {"Abé"}, ["abb"] = {"Bankon"}, ["abc"] = {"Ambala Ayta"}, ["abd"] = {"Manide"}, ["abe"] = {"Western Abnaki"}, ["abf"] = {"Abai Sungai"}, ["abg"] = {"Abaga"}, ["abh"] = {"Tajiki Arabic"}, ["abi"] = {"Abidji"}, ["abj"] = {"Aka-Bea"}, ["abl"] = {"Lampung Nyo"}, ["abm"] = {"Abanyom"}, ["abn"] = {"Abua"}, ["abo"] = {"Abon"}, ["abp"] = {"Abellen Ayta"}, ["abq"] = {"Abaza"}, ["abr"] = {"Abron"}, ["abs"] = {"Ambonese Malay"}, ["abt"] = {"Ambulas"}, ["abu"] = {"Abure"}, ["abv"] = {"Baharna Arabic"}, ["abw"] = {"Pal"}, ["abx"] = {"Inabaknon"}, ["aby"] = {"Aneme Wake"}, ["abz"] = {"Abui"}, ["aca"] = {"Achagua"}, ["acb"] = {"Áncá"}, ["acd"] = {"Gikyode"}, ["ace"] = {"Achinese"}, ["acf"] = {"Saint Lucian Creole French"}, ["ach"] = {"Acoli"}, ["aci"] = {"Aka-Cari"}, ["ack"] = {"Aka-Kora"}, ["acl"] = {"Akar-Bale"}, ["acm"] = {"Mesopotamian Arabic"}, ["acn"] = {"Achang"}, ["acp"] = {"Eastern Acipa"}, ["acq"] = {"Ta'izzi-Adeni Arabic"}, ["acr"] = {"Achi"}, ["acs"] = {"Acroá"}, ["act"] = {"Achterhoeks"}, ["acu"] = {"Achuar-Shiwiar"}, ["acv"] = {"Achumawi"}, ["acw"] = {"Hijazi Arabic"}, ["acx"] = {"Omani Arabic"}, ["acy"] = {"Cypriot Arabic"}, ["acz"] = {"Acheron"}, ["ada"] = {"Adangme"}, ["adb"] = {"Atauran"}, ["add"] = {"Lidzonka", "Dzodinka"}, ["ade"] = {"Adele"}, ["adf"] = {"Dhofari Arabic"}, ["adg"] = {"Andegerebinha"}, ["adh"] = {"Adhola"}, ["adi"] = {"Adi"}, ["adj"] = {"Adioukrou"}, ["adl"] = {"Galo"}, ["adn"] = {"Adang"}, ["ado"] = {"Abu"}, ["adq"] = {"Adangbe"}, ["adr"] = {"Adonara"}, ["ads"] = {"Adamorobe Sign Language"}, ["adt"] = {"Adnyamathanha"}, ["adu"] = {"Aduge"}, ["adw"] = {"Amundava"}, ["adx"] = {"Amdo Tibetan"}, ["ady"] = {"Adyghe", "Adygei"}, ["adz"] = {"Adzera"}, ["aea"] = {"Areba"}, ["aeb"] = {"Tunisian Arabic"}, ["aec"] = {"Saidi Arabic"}, ["aed"] = {"Argentine Sign Language"}, ["aee"] = {"Northeast Pashai", "Northeast Pashayi"}, ["aek"] = {"Haeke"}, ["ael"] = {"Ambele"}, ["aem"] = {"Arem"}, ["aen"] = {"Armenian Sign Language"}, ["aeq"] = {"Aer"}, ["aer"] = {"Eastern Arrernte"}, ["aes"] = {"Alsea"}, ["aeu"] = {"Akeu"}, ["aew"] = {"Ambakich"}, ["aey"] = {"Amele"}, ["aez"] = {"Aeka"}, ["afa"] = {"Afro-Asiatic languages"}, ["afb"] = {"Gulf Arabic"}, ["afd"] = {"Andai"}, ["afe"] = {"Putukwam"}, ["afg"] = {"Afghan Sign Language"}, ["afh"] = {"Afrihili"}, ["afi"] = {"Akrukay", "Chini"}, ["afk"] = {"Nanubae"}, ["afn"] = {"Defaka"}, ["afo"] = {"Eloyi"}, ["afp"] = {"Tapei"}, ["afs"] = {"Afro-Seminole Creole"}, ["aft"] = {"Afitti"}, ["afu"] = {"Awutu"}, ["afz"] = {"Obokuitai"}, ["aga"] = {"Aguano"}, ["agb"] = {"Legbo"}, ["agc"] = {"Agatu"}, ["agd"] = {"Agarabi"}, ["age"] = {"Angal"}, ["agf"] = {"Arguni"}, ["agg"] = {"Angor"}, ["agh"] = {"Ngelima"}, ["agi"] = {"Agariya"}, ["agj"] = {"Argobba"}, ["agk"] = {"Isarog Agta"}, ["agl"] = {"Fembe"}, ["agm"] = {"Angaataha"}, ["agn"] = {"Agutaynen"}, ["ago"] = {"Tainae"}, ["agq"] = {"Aghem"}, ["agr"] = {"Aguaruna"}, ["ags"] = {"Esimbi"}, ["agt"] = {"Central Cagayan Agta"}, ["agu"] = {"Aguacateco"}, ["agv"] = {"Remontado Dumagat"}, ["agw"] = {"Kahua"}, ["agx"] = {"Aghul"}, ["agy"] = {"Southern Alta"}, ["agz"] = {"Mt. Iriga Agta"}, ["aha"] = {"Ahanta"}, ["ahb"] = {"Axamb"}, ["ahg"] = {"Qimant"}, ["ahh"] = {"Aghu"}, ["ahi"] = {"Tiagbamrin Aizi"}, ["ahk"] = {"Akha"}, ["ahl"] = {"Igo"}, ["ahm"] = {"Mobumrin Aizi"}, ["ahn"] = {"Àhàn"}, ["aho"] = {"Ahom"}, ["ahp"] = {"Aproumu Aizi"}, ["ahr"] = {"Ahirani"}, ["ahs"] = {"Ashe"}, ["aht"] = {"Ahtena"}, ["aia"] = {"Arosi"}, ["aib"] = {"Ainu (China)"}, ["aic"] = {"Ainbai"}, ["aid"] = {"Alngith"}, ["aie"] = {"Amara"}, ["aif"] = {"Agi"}, ["aig"] = {"Antigua and Barbuda Creole English"}, ["aih"] = {"Ai-Cham"}, ["aii"] = {"Assyrian Neo-Aramaic"}, ["aij"] = {"Lishanid Noshan"}, ["aik"] = {"Ake"}, ["ail"] = {"Aimele"}, ["aim"] = {"Aimol"}, ["ain"] = {"Ainu (Japan)"}, ["aio"] = {"Aiton"}, ["aip"] = {"Burumakok"}, ["aiq"] = {"Aimaq"}, ["air"] = {"Airoran"}, ["ait"] = {"Arikem"}, ["aiw"] = {"Aari"}, ["aix"] = {"Aighon"}, ["aiy"] = {"Ali"}, ["aja"] = {"Aja (South Sudan)"}, ["ajg"] = {"Aja (Benin)"}, ["aji"] = {"Ajië"}, ["ajn"] = {"Andajin"}, ["ajs"] = {"Algerian Jewish Sign Language"}, ["aju"] = {"Judeo-Moroccan Arabic"}, ["ajw"] = {"Ajawa"}, ["ajz"] = {"Amri Karbi"}, ["akb"] = {"Batak Angkola"}, ["akc"] = {"Mpur"}, ["akd"] = {"Ukpet-Ehom"}, ["ake"] = {"Akawaio"}, ["akf"] = {"Akpa"}, ["akg"] = {"Anakalangu"}, ["akh"] = {"Angal Heneng"}, ["aki"] = {"Aiome"}, ["akj"] = {"Aka-Jeru"}, ["akk"] = {"Akkadian"}, ["akl"] = {"Aklanon"}, ["akm"] = {"Aka-Bo"}, ["ako"] = {"Akurio"}, ["akp"] = {"Siwu"}, ["akq"] = {"Ak"}, ["akr"] = {"Araki"}, ["aks"] = {"Akaselem"}, ["akt"] = {"Akolet"}, ["aku"] = {"Akum"}, ["akv"] = {"Akhvakh"}, ["akw"] = {"Akwa"}, ["akx"] = {"Aka-Kede"}, ["aky"] = {"Aka-Kol"}, ["akz"] = {"Alabama"}, ["ala"] = {"Alago"}, ["alc"] = {"Qawasqar"}, ["ald"] = {"Alladian"}, ["ale"] = {"Aleut"}, ["alf"] = {"Alege"}, ["alg"] = {"Algonquian languages"}, ["alh"] = {"Alawa"}, ["ali"] = {"Amaimon"}, ["alj"] = {"Alangan"}, ["alk"] = {"Alak"}, ["all"] = {"Allar"}, ["alm"] = {"Amblong"}, ["aln"] = {"Gheg Albanian"}, ["alo"] = {"Larike-Wakasihu"}, ["alp"] = {"Alune"}, ["alq"] = {"Algonquin"}, ["alr"] = {"Alutor"}, ["als"] = {"Tosk Albanian"}, ["alt"] = {"Southern Altai"}, ["alu"] = {"'Are'are"}, ["alv"] = {"Atlantic-Congo languages"}, ["alw"] = {"Alaba-K’abeena", "Wanbasana"}, ["alx"] = {"Amol"}, ["aly"] = {"Alyawarr"}, ["alz"] = {"Alur"}, ["ama"] = {"Amanayé"}, ["amb"] = {"Ambo"}, ["amc"] = {"Amahuaca"}, ["ame"] = {"Yanesha'"}, ["amf"] = {"Hamer-Banna"}, ["amg"] = {"Amurdak"}, ["ami"] = {"Amis"}, ["amj"] = {"Amdang"}, ["amk"] = {"Ambai"}, ["aml"] = {"War-Jaintia"}, ["amm"] = {"Ama (Papua New Guinea)"}, ["amn"] = {"Amanab"}, ["amo"] = {"Amo"}, ["amp"] = {"Alamblak"}, ["amq"] = {"Amahai"}, ["amr"] = {"Amarakaeri"}, ["ams"] = {"Southern Amami-Oshima"}, ["amt"] = {"Amto"}, ["amu"] = {"Guerrero Amuzgo"}, ["amv"] = {"Ambelau"}, ["amw"] = {"Western Neo-Aramaic"}, ["amx"] = {"Anmatyerre"}, ["amy"] = {"Ami"}, ["amz"] = {"Atampaya"}, ["ana"] = {"Andaqui"}, ["anb"] = {"Andoa"}, ["anc"] = {"Ngas"}, ["and"] = {"Ansus"}, ["ane"] = {"Xârâcùù"}, ["anf"] = {"Animere"}, ["ang"] = {"Old English (ca. 450-1100)"}, ["anh"] = {"Nend"}, ["ani"] = {"Andi"}, ["anj"] = {"Anor"}, ["ank"] = {"Goemai"}, ["anl"] = {"Anu-Hkongso Chin"}, ["anm"] = {"Anal"}, ["ann"] = {"Obolo"}, ["ano"] = {"Andoque"}, ["anp"] = {"Angika"}, ["anq"] = {"Jarawa (India)"}, ["anr"] = {"Andh"}, ["ans"] = {"Anserma"}, ["ant"] = {"Antakarinya", "Antikarinya"}, ["anu"] = {"Anuak"}, ["anv"] = {"Denya"}, ["anw"] = {"Anaang"}, ["anx"] = {"Andra-Hus"}, ["any"] = {"Anyin"}, ["anz"] = {"Anem"}, ["aoa"] = {"Angolar"}, ["aob"] = {"Abom"}, ["aoc"] = {"Pemon"}, ["aod"] = {"Andarum"}, ["aoe"] = {"Angal Enen"}, ["aof"] = {"Bragat"}, ["aog"] = {"Angoram"}, ["aoi"] = {"Anindilyakwa"}, ["aoj"] = {"Mufian"}, ["aok"] = {"Arhö"}, ["aol"] = {"Alor"}, ["aom"] = {"Ömie"}, ["aon"] = {"Bumbita Arapesh"}, ["aor"] = {"Aore"}, ["aos"] = {"Taikat"}, ["aot"] = {"Atong (India)", "A'tong"}, ["aou"] = {"A'ou"}, ["aox"] = {"Atorada"}, ["aoz"] = {"Uab Meto"}, ["apa"] = {"Apache languages"}, ["apb"] = {"Sa'a"}, ["apc"] = {"Levantine Arabic"}, ["apd"] = {"Sudanese Arabic"}, ["ape"] = {"Bukiyip"}, ["apf"] = {"Pahanan Agta"}, ["apg"] = {"Ampanang"}, ["aph"] = {"Athpariya"}, ["api"] = {"Apiaká"}, ["apj"] = {"Jicarilla Apache"}, ["apk"] = {"Kiowa Apache"}, ["apl"] = {"Lipan Apache"}, ["apm"] = {"Mescalero-Chiricahua Apache"}, ["apn"] = {"Apinayé"}, ["apo"] = {"Ambul"}, ["app"] = {"Apma"}, ["apq"] = {"A-Pucikwar"}, ["apr"] = {"Arop-Lokep"}, ["aps"] = {"Arop-Sissano"}, ["apt"] = {"Apatani"}, ["apu"] = {"Apurinã"}, ["apv"] = {"Alapmunte"}, ["apw"] = {"Western Apache"}, ["apx"] = {"Aputai"}, ["apy"] = {"Apalaí"}, ["apz"] = {"Safeyoka"}, ["aqa"] = {"Alacalufan languages"}, ["aqc"] = {"Archi"}, ["aqd"] = {"Ampari Dogon"}, ["aqg"] = {"Arigidi"}, ["aqk"] = {"Aninka"}, ["aql"] = {"Algic languages"}, ["aqm"] = {"Atohwaim"}, ["aqn"] = {"Northern Alta"}, ["aqp"] = {"Atakapa"}, ["aqr"] = {"Arhâ"}, ["aqt"] = {"Angaité"}, ["aqz"] = {"Akuntsu"}, ["arb"] = {"Standard Arabic"}, ["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"}, ["ard"] = {"Arabana"}, ["are"] = {"Western Arrarnta"}, ["arh"] = {"Arhuaco"}, ["ari"] = {"Arikara"}, ["arj"] = {"Arapaso"}, ["ark"] = {"Arikapú"}, ["arl"] = {"Arabela"}, ["arn"] = {"Mapudungun", "Mapuche"}, ["aro"] = {"Araona"}, ["arp"] = {"Arapaho"}, ["arq"] = {"Algerian Arabic"}, ["arr"] = {"Karo (Brazil)"}, ["ars"] = {"Najdi Arabic"}, ["art"] = {"Artificial languages"}, ["aru"] = {"Aruá (Amazonas State)", "Arawá"}, ["arv"] = {"Arbore"}, ["arw"] = {"Arawak"}, ["arx"] = {"Aruá (Rodonia State)"}, ["ary"] = {"Moroccan Arabic"}, ["arz"] = {"Egyptian Arabic"}, ["asa"] = {"Asu (Tanzania)"}, ["asb"] = {"Assiniboine"}, ["asc"] = {"Casuarina Coast Asmat"}, ["ase"] = {"American Sign Language"}, ["asf"] = {"Auslan", "Australian Sign Language"}, ["asg"] = {"Cishingini"}, ["ash"] = {"Abishira"}, ["asi"] = {"Buruwai"}, ["asj"] = {"Sari"}, ["ask"] = {"Ashkun"}, ["asl"] = {"Asilulu"}, ["asn"] = {"Xingú Asuriní"}, ["aso"] = {"Dano"}, ["asp"] = {"Algerian Sign Language"}, ["asq"] = {"Austrian Sign Language"}, ["asr"] = {"Asuri"}, ["ass"] = {"Ipulo"}, ["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"}, ["asu"] = {"Tocantins Asurini"}, ["asv"] = {"Asoa"}, ["asw"] = {"Australian Aborigines Sign Language"}, ["asx"] = {"Muratayak"}, ["asy"] = {"Yaosakor Asmat"}, ["asz"] = {"As"}, ["ata"] = {"Pele-Ata"}, ["atb"] = {"Zaiwa"}, ["atc"] = {"Atsahuaca"}, ["atd"] = {"Ata Manobo"}, ["ate"] = {"Atemble"}, ["atg"] = {"Ivbie North-Okpela-Arhe"}, ["ath"] = {"Athapascan languages"}, ["ati"] = {"Attié"}, ["atj"] = {"Atikamekw"}, ["atk"] = {"Ati"}, ["atl"] = {"Mt. Iraya Agta"}, ["atm"] = {"Ata"}, ["atn"] = {"Ashtiani"}, ["ato"] = {"Atong (Cameroon)"}, ["atp"] = {"Pudtol Atta"}, ["atq"] = {"Aralle-Tabulahan"}, ["atr"] = {"Waimiri-Atroari"}, ["ats"] = {"Gros Ventre"}, ["att"] = {"Pamplona Atta"}, ["atu"] = {"Reel"}, ["atv"] = {"Northern Altai"}, ["atw"] = {"Atsugewi"}, ["atx"] = {"Arutani"}, ["aty"] = {"Aneityum"}, ["atz"] = {"Arta"}, ["aua"] = {"Asumboa"}, ["aub"] = {"Alugu"}, ["auc"] = {"Waorani"}, ["aud"] = {"Anuta"}, ["auf"] = {"Arauan languages"}, ["aug"] = {"Aguna"}, ["auh"] = {"Aushi"}, ["aui"] = {"Anuki"}, ["auj"] = {"Awjilah"}, ["auk"] = {"Heyo"}, ["aul"] = {"Aulua"}, ["aum"] = {"Asu (Nigeria)"}, ["aun"] = {"Molmo One"}, ["auo"] = {"Auyokawa"}, ["aup"] = {"Makayam"}, ["auq"] = {"Anus", "Korur"}, ["aur"] = {"Aruek"}, ["aus"] = {"Australian languages"}, ["aut"] = {"Austral"}, ["auu"] = {"Auye"}, ["auw"] = {"Awyi"}, ["aux"] = {"Aurá"}, ["auy"] = {"Awiyaana"}, ["auz"] = {"Uzbeki Arabic"}, ["avb"] = {"Avau"}, ["avd"] = {"Alviri-Vidari"}, ["avi"] = {"Avikam"}, ["avk"] = {"Kotava"}, ["avl"] = {"Eastern Egyptian Bedawi Arabic"}, ["avm"] = {"Angkamuthi"}, ["avn"] = {"Avatime"}, ["avo"] = {"Agavotaguerra"}, ["avs"] = {"Aushiri"}, ["avt"] = {"Au"}, ["avu"] = {"Avokaya"}, ["avv"] = {"Avá-Canoeiro"}, ["awa"] = {"Awadhi"}, ["awb"] = {"Awa (Papua New Guinea)"}, ["awc"] = {"Cicipu"}, ["awd"] = {"Arawakan languages"}, ["awe"] = {"Awetí"}, ["awg"] = {"Anguthimri"}, ["awh"] = {"Awbono"}, ["awi"] = {"Aekyom"}, ["awk"] = {"Awabakal"}, ["awm"] = {"Arawum"}, ["awn"] = {"Awngi"}, ["awo"] = {"Awak"}, ["awr"] = {"Awera"}, ["aws"] = {"South Awyu"}, ["awt"] = {"Araweté"}, ["awu"] = {"Central Awyu"}, ["awv"] = {"Jair Awyu"}, ["aww"] = {"Awun"}, ["awx"] = {"Awara"}, ["awy"] = {"Edera Awyu"}, ["axb"] = {"Abipon"}, ["axe"] = {"Ayerrerenge"}, ["axg"] = {"Mato Grosso Arára"}, ["axk"] = {"Yaka (Central African Republic)"}, ["axl"] = {"Lower Southern Aranda"}, ["axm"] = {"Middle Armenian"}, ["axx"] = {"Xârâgurè"}, ["aya"] = {"Awar"}, ["ayb"] = {"Ayizo Gbe"}, ["ayc"] = {"Southern Aymara"}, ["ayd"] = {"Ayabadhu"}, ["aye"] = {"Ayere"}, ["ayg"] = {"Ginyanga"}, ["ayh"] = {"Hadrami Arabic"}, ["ayi"] = {"Leyigha"}, ["ayk"] = {"Akuku"}, ["ayl"] = {"Libyan Arabic"}, ["ayn"] = {"Sanaani Arabic"}, ["ayo"] = {"Ayoreo"}, ["ayp"] = {"North Mesopotamian Arabic"}, ["ayq"] = {"Ayi (Papua New Guinea)"}, ["ayr"] = {"Central Aymara"}, ["ays"] = {"Sorsogon Ayta"}, ["ayt"] = {"Magbukun Ayta"}, ["ayu"] = {"Ayu"}, ["ayz"] = {"Mai Brat"}, ["aza"] = {"Azha"}, ["azb"] = {"South Azerbaijani"}, ["azc"] = {"Uto-Aztecan languages"}, ["azd"] = {"Eastern Durango Nahuatl"}, ["azg"] = {"San Pedro Amuzgos Amuzgo"}, ["azj"] = {"North Azerbaijani"}, ["azm"] = {"Ipalapa Amuzgo"}, ["azn"] = {"Western Durango Nahuatl"}, ["azo"] = {"Awing"}, ["azt"] = {"Faire Atta"}, ["azz"] = {"Highland Puebla Nahuatl"}, ["baa"] = {"Babatana"}, ["bab"] = {"Bainouk-Gunyuño"}, ["bac"] = {"Badui"}, ["bad"] = {"Banda languages"}, ["bae"] = {"Baré"}, ["baf"] = {"Nubaca"}, ["bag"] = {"Tuki"}, ["bah"] = {"Bahamas Creole English"}, ["bai"] = {"Bamileke languages"}, ["baj"] = {"Barakai"}, ["bal"] = {"Baluchi"}, ["ban"] = {"Balinese"}, ["bao"] = {"Waimaha"}, ["bap"] = {"Bantawa"}, ["bar"] = {"Bavarian"}, ["bas"] = {"Basa (Cameroon)"}, ["bat"] = {"Baltic languages"}, ["bau"] = {"Bada (Nigeria)"}, ["bav"] = {"Vengo"}, ["baw"] = {"Bambili-Bambui"}, ["bax"] = {"Bamun"}, ["bay"] = {"Batuley"}, ["bba"] = {"Baatonum"}, ["bbb"] = {"Barai"}, ["bbc"] = {"Batak Toba"}, ["bbd"] = {"Bau"}, ["bbe"] = {"Bangba"}, ["bbf"] = {"Baibai"}, ["bbg"] = {"Barama"}, ["bbh"] = {"Bugan"}, ["bbi"] = {"Barombi"}, ["bbj"] = {"Ghomálá'"}, ["bbk"] = {"Babanki"}, ["bbl"] = {"Bats"}, ["bbm"] = {"Babango"}, ["bbn"] = {"Uneapa"}, ["bbo"] = {"Northern Bobo Madaré", "Konabéré"}, ["bbp"] = {"West Central Banda"}, ["bbq"] = {"Bamali"}, ["bbr"] = {"Girawa"}, ["bbs"] = {"Bakpinka"}, ["bbt"] = {"Mburku"}, ["bbu"] = {"Kulung (Nigeria)"}, ["bbv"] = {"Karnai"}, ["bbw"] = {"Baba"}, ["bbx"] = {"Bubia"}, ["bby"] = {"Befang"}, ["bca"] = {"Central Bai"}, ["bcb"] = {"Bainouk-Samik"}, ["bcc"] = {"Southern Balochi"}, ["bcd"] = {"North Babar"}, ["bce"] = {"Bamenyam"}, ["bcf"] = {"Bamu"}, ["bcg"] = {"Baga Pokur"}, ["bch"] = {"Bariai"}, ["bci"] = {"Baoulé"}, ["bcj"] = {"Bardi"}, ["bck"] = {"Bunuba"}, ["bcl"] = {"Central Bikol"}, ["bcm"] = {"Bannoni"}, ["bcn"] = {"Bali (Nigeria)"}, ["bco"] = {"Kaluli"}, ["bcp"] = {"Bali (Democratic Republic of Congo)"}, ["bcq"] = {"Bench"}, ["bcr"] = {"Babine"}, ["bcs"] = {"Kohumono"}, ["bct"] = {"Bendi"}, ["bcu"] = {"Awad Bing"}, ["bcv"] = {"Shoo-Minda-Nye"}, ["bcw"] = {"Bana"}, ["bcy"] = {"Bacama"}, ["bcz"] = {"Bainouk-Gunyaamolo"}, ["bda"] = {"Bayot"}, ["bdb"] = {"Basap"}, ["bdc"] = {"Emberá-Baudó"}, ["bdd"] = {"Bunama"}, ["bde"] = {"Bade"}, ["bdf"] = {"Biage"}, ["bdg"] = {"Bonggi"}, ["bdh"] = {"Baka (South Sudan)"}, ["bdi"] = {"Burun"}, ["bdj"] = {"Bai (South Sudan)", "Bai"}, ["bdk"] = {"Budukh"}, ["bdl"] = {"Indonesian Bajau"}, ["bdm"] = {"Buduma"}, ["bdn"] = {"Baldemu"}, ["bdo"] = {"Morom"}, ["bdp"] = {"Bende"}, ["bdq"] = {"Bahnar"}, ["bdr"] = {"West Coast Bajau"}, ["bds"] = {"Burunge"}, ["bdt"] = {"Bokoto"}, ["bdu"] = {"Oroko"}, ["bdv"] = {"Bodo Parja"}, ["bdw"] = {"Baham"}, ["bdx"] = {"Budong-Budong"}, ["bdy"] = {"Bandjalang"}, ["bdz"] = {"Badeshi"}, ["bea"] = {"Beaver"}, ["beb"] = {"Bebele"}, ["bec"] = {"Iceve-Maci"}, ["bed"] = {"Bedoanas"}, ["bee"] = {"Byangsi"}, ["bef"] = {"Benabena"}, ["beg"] = {"Belait"}, ["beh"] = {"Biali"}, ["bei"] = {"Bekati'"}, ["bej"] = {"Beja", "Bedawiyet"}, ["bek"] = {"Bebeli"}, ["bem"] = {"Bemba (Zambia)"}, ["beo"] = {"Beami"}, ["bep"] = {"Besoa"}, ["beq"] = {"Beembe"}, ["ber"] = {"Berber languages"}, ["bes"] = {"Besme"}, ["bet"] = {"Guiberoua Béte"}, ["beu"] = {"Blagar"}, ["bev"] = {"Daloa Bété"}, ["bew"] = {"Betawi"}, ["bex"] = {"Jur Modo"}, ["bey"] = {"Beli (Papua New Guinea)"}, ["bez"] = {"Bena (Tanzania)"}, ["bfa"] = {"Bari"}, ["bfb"] = {"Pauri Bareli"}, ["bfc"] = {"Panyi Bai", "Northern Bai"}, ["bfd"] = {"Bafut"}, ["bfe"] = {"Betaf", "Tena"}, ["bff"] = {"Bofi"}, ["bfg"] = {"Busang Kayan"}, ["bfh"] = {"Blafe"}, ["bfi"] = {"British Sign Language"}, ["bfj"] = {"Bafanji"}, ["bfk"] = {"Ban Khor Sign Language"}, ["bfl"] = {"Banda-Ndélé"}, ["bfm"] = {"Mmen"}, ["bfn"] = {"Bunak"}, ["bfo"] = {"Malba Birifor"}, ["bfp"] = {"Beba"}, ["bfq"] = {"Badaga"}, ["bfr"] = {"Bazigar"}, ["bfs"] = {"Southern Bai"}, ["bft"] = {"Balti"}, ["bfu"] = {"Gahri"}, ["bfw"] = {"Bondo"}, ["bfx"] = {"Bantayanon"}, ["bfy"] = {"Bagheli"}, ["bfz"] = {"Mahasu Pahari"}, ["bga"] = {"Gwamhi-Wuri"}, ["bgb"] = {"Bobongko"}, ["bgc"] = {"Haryanvi"}, ["bgd"] = {"Rathwi Bareli"}, ["bge"] = {"Bauria"}, ["bgf"] = {"Bangandu"}, ["bgg"] = {"Bugun"}, ["bgi"] = {"Giangan"}, ["bgj"] = {"Bangolan"}, ["bgk"] = {"Bit", "Buxinhua"}, ["bgl"] = {"Bo (Laos)"}, ["bgn"] = {"Western Balochi"}, ["bgo"] = {"Baga Koga"}, ["bgp"] = {"Eastern Balochi"}, ["bgq"] = {"Bagri"}, ["bgr"] = {"Bawm Chin"}, ["bgs"] = {"Tagabawa"}, ["bgt"] = {"Bughotu"}, ["bgu"] = {"Mbongno"}, ["bgv"] = {"Warkay-Bipim"}, ["bgw"] = {"Bhatri"}, ["bgx"] = {"Balkan Gagauz Turkish"}, ["bgy"] = {"Benggoi"}, ["bgz"] = {"Banggai"}, ["bha"] = {"Bharia"}, ["bhb"] = {"Bhili"}, ["bhc"] = {"Biga"}, ["bhd"] = {"Bhadrawahi"}, ["bhe"] = {"Bhaya"}, ["bhf"] = {"Odiai"}, ["bhg"] = {"Binandere"}, ["bhh"] = {"Bukharic"}, ["bhi"] = {"Bhilali"}, ["bhj"] = {"Bahing"}, ["bhl"] = {"Bimin"}, ["bhm"] = {"Bathari"}, ["bhn"] = {"Bohtan Neo-Aramaic"}, ["bho"] = {"Bhojpuri"}, ["bhp"] = {"Bima"}, ["bhq"] = {"Tukang Besi South"}, ["bhr"] = {"Bara Malagasy"}, ["bhs"] = {"Buwal"}, ["bht"] = {"Bhattiyali"}, ["bhu"] = {"Bhunjia"}, ["bhv"] = {"Bahau"}, ["bhw"] = {"Biak"}, ["bhx"] = {"Bhalay"}, ["bhy"] = {"Bhele"}, ["bhz"] = {"Bada (Indonesia)"}, ["bia"] = {"Badimaya"}, ["bib"] = {"Bissa", "Bisa"}, ["bid"] = {"Bidiyo"}, ["bie"] = {"Bepour"}, ["bif"] = {"Biafada"}, ["big"] = {"Biangai"}, ["bik"] = {"Bikol"}, ["bil"] = {"Bile"}, ["bim"] = {"Bimoba"}, ["bin"] = {"Bini", "Edo"}, ["bio"] = {"Nai"}, ["bip"] = {"Bila"}, ["biq"] = {"Bipi"}, ["bir"] = {"Bisorio"}, ["bit"] = {"Berinomo"}, ["biu"] = {"Biete"}, ["biv"] = {"Southern Birifor"}, ["biw"] = {"Kol (Cameroon)"}, ["bix"] = {"Bijori"}, ["biy"] = {"Birhor"}, ["biz"] = {"Baloi"}, ["bja"] = {"Budza"}, ["bjb"] = {"Banggarla"}, ["bjc"] = {"Bariji"}, ["bje"] = {"Biao-Jiao Mien"}, ["bjf"] = {"Barzani Jewish Neo-Aramaic"}, ["bjg"] = {"Bidyogo"}, ["bjh"] = {"Bahinemo"}, ["bji"] = {"Burji"}, ["bjj"] = {"Kanauji"}, ["bjk"] = {"Barok"}, ["bjl"] = {"Bulu (Papua New Guinea)"}, ["bjm"] = {"Bajelani"}, ["bjn"] = {"Banjar"}, ["bjo"] = {"Mid-Southern Banda"}, ["bjp"] = {"Fanamaket"}, ["bjr"] = {"Binumarien"}, ["bjs"] = {"Bajan"}, ["bjt"] = {"Balanta-Ganja"}, ["bju"] = {"Busuu"}, ["bjv"] = {"Bedjond"}, ["bjw"] = {"Bakwé"}, ["bjx"] = {"Banao Itneg"}, ["bjy"] = {"Bayali"}, ["bjz"] = {"Baruga"}, ["bka"] = {"Kyak"}, ["bkc"] = {"Baka (Cameroon)"}, ["bkd"] = {"Binukid", "Talaandig"}, ["bkf"] = {"Beeke"}, ["bkg"] = {"Buraka"}, ["bkh"] = {"Bakoko"}, ["bki"] = {"Baki"}, ["bkj"] = {"Pande"}, ["bkk"] = {"Brokskat"}, ["bkl"] = {"Berik"}, ["bkm"] = {"Kom (Cameroon)"}, ["bkn"] = {"Bukitan"}, ["bko"] = {"Kwa'"}, ["bkp"] = {"Boko (Democratic Republic of Congo)"}, ["bkq"] = {"Bakairí"}, ["bkr"] = {"Bakumpai"}, ["bks"] = {"Northern Sorsoganon"}, ["bkt"] = {"Boloki"}, ["bku"] = {"Buhid"}, ["bkv"] = {"Bekwarra"}, ["bkw"] = {"Bekwel"}, ["bkx"] = {"Baikeno"}, ["bky"] = {"Bokyi"}, ["bkz"] = {"Bungku"}, ["bla"] = {"Siksika"}, ["blb"] = {"Bilua"}, ["blc"] = {"Bella Coola"}, ["bld"] = {"Bolango"}, ["ble"] = {"Balanta-Kentohe"}, ["blf"] = {"Buol"}, ["blh"] = {"Kuwaa"}, ["bli"] = {"Bolia"}, ["blj"] = {"Bolongan"}, ["blk"] = {"Pa'o Karen", "Pa'O"}, ["bll"] = {"Biloxi"}, ["blm"] = {"Beli (South Sudan)"}, ["bln"] = {"Southern Catanduanes Bikol"}, ["blo"] = {"Anii"}, ["blp"] = {"Blablanga"}, ["blq"] = {"Baluan-Pam"}, ["blr"] = {"Blang"}, ["bls"] = {"Balaesang"}, ["blt"] = {"Tai Dam"}, ["blv"] = {"Kibala", "Bolo"}, ["blw"] = {"Balangao"}, ["blx"] = {"Mag-Indi Ayta"}, ["bly"] = {"Notre"}, ["blz"] = {"Balantak"}, ["bma"] = {"Lame"}, ["bmb"] = {"Bembe"}, ["bmc"] = {"Biem"}, ["bmd"] = {"Baga Manduri"}, ["bme"] = {"Limassa"}, ["bmf"] = {"Bom-Kim"}, ["bmg"] = {"Bamwe"}, ["bmh"] = {"Kein"}, ["bmi"] = {"Bagirmi"}, ["bmj"] = {"Bote-Majhi"}, ["bmk"] = {"Ghayavi"}, ["bml"] = {"Bomboli"}, ["bmm"] = {"Northern Betsimisaraka Malagasy"}, ["bmn"] = {"Bina (Papua New Guinea)"}, ["bmo"] = {"Bambalang"}, ["bmp"] = {"Bulgebi"}, ["bmq"] = {"Bomu"}, ["bmr"] = {"Muinane"}, ["bms"] = {"Bilma Kanuri"}, ["bmt"] = {"Biao Mon"}, ["bmu"] = {"Somba-Siawari"}, ["bmv"] = {"Bum"}, ["bmw"] = {"Bomwali"}, ["bmx"] = {"Baimak"}, ["bmz"] = {"Baramu"}, ["bna"] = {"Bonerate"}, ["bnb"] = {"Bookan"}, ["bnc"] = {"Bontok"}, ["bnd"] = {"Banda (Indonesia)"}, ["bne"] = {"Bintauna"}, ["bnf"] = {"Masiwang"}, ["bng"] = {"Benga"}, ["bni"] = {"Bangi"}, ["bnj"] = {"Eastern Tawbuid"}, ["bnk"] = {"Bierebo"}, ["bnl"] = {"Boon"}, ["bnm"] = {"Batanga"}, ["bnn"] = {"Bunun"}, ["bno"] = {"Bantoanon"}, ["bnp"] = {"Bola"}, ["bnq"] = {"Bantik"}, ["bnr"] = {"Butmas-Tur"}, ["bns"] = {"Bundeli"}, ["bnt"] = {"Bantu languages"}, ["bnu"] = {"Bentong"}, ["bnv"] = {"Bonerif", "Beneraf", "Edwas"}, ["bnw"] = {"Bisis"}, ["bnx"] = {"Bangubangu"}, ["bny"] = {"Bintulu"}, ["bnz"] = {"Beezen"}, ["boa"] = {"Bora"}, ["bob"] = {"Aweer"}, ["boe"] = {"Mundabli"}, ["bof"] = {"Bolon"}, ["bog"] = {"Bamako Sign Language"}, ["boh"] = {"Boma"}, ["boi"] = {"Barbareño"}, ["boj"] = {"Anjam"}, ["bok"] = {"Bonjo"}, ["bol"] = {"Bole"}, ["bom"] = {"Berom"}, ["bon"] = {"Bine"}, ["boo"] = {"Tiemacèwè Bozo"}, ["bop"] = {"Bonkiman"}, ["boq"] = {"Bogaya"}, ["bor"] = {"Borôro"}, ["bot"] = {"Bongo"}, ["bou"] = {"Bondei"}, ["bov"] = {"Tuwuli"}, ["bow"] = {"Rema"}, ["box"] = {"Buamu"}, ["boy"] = {"Bodo (Central African Republic)"}, ["boz"] = {"Tiéyaxo Bozo"}, ["bpa"] = {"Daakaka"}, ["bpc"] = {"Mbuk"}, ["bpd"] = {"Banda-Banda"}, ["bpe"] = {"Bauni"}, ["bpg"] = {"Bonggo"}, ["bph"] = {"Botlikh"}, ["bpi"] = {"Bagupi"}, ["bpj"] = {"Binji"}, ["bpk"] = {"Orowe", "'Ôrôê"}, ["bpl"] = {"Broome Pearling Lugger Pidgin"}, ["bpm"] = {"Biyom"}, ["bpn"] = {"Dzao Min"}, ["bpo"] = {"Anasi"}, ["bpp"] = {"Kaure"}, ["bpq"] = {"Banda Malay"}, ["bpr"] = {"Koronadal Blaan"}, ["bps"] = {"Sarangani Blaan"}, ["bpt"] = {"Barrow Point"}, ["bpu"] = {"Bongu"}, ["bpv"] = {"Bian Marind"}, ["bpw"] = {"Bo (Papua New Guinea)"}, ["bpx"] = {"Palya Bareli"}, ["bpy"] = {"Bishnupriya"}, ["bpz"] = {"Bilba"}, ["bqa"] = {"Tchumbuli"}, ["bqb"] = {"Bagusa"}, ["bqc"] = {"Boko (Benin)", "Boo"}, ["bqd"] = {"Bung"}, ["bqf"] = {"Baga Kaloum"}, ["bqg"] = {"Bago-Kusuntu"}, ["bqh"] = {"Baima"}, ["bqi"] = {"Bakhtiari"}, ["bqj"] = {"Bandial"}, ["bqk"] = {"Banda-Mbrès"}, ["bql"] = {"Bilakura"}, ["bqm"] = {"Wumboko"}, ["bqn"] = {"Bulgarian Sign Language"}, ["bqo"] = {"Balo"}, ["bqp"] = {"Busa"}, ["bqq"] = {"Biritai"}, ["bqr"] = {"Burusu"}, ["bqs"] = {"Bosngun"}, ["bqt"] = {"Bamukumbit"}, ["bqu"] = {"Boguru"}, ["bqv"] = {"Koro Wachi", "Begbere-Ejar"}, ["bqw"] = {"Buru (Nigeria)"}, ["bqx"] = {"Baangi"}, ["bqy"] = {"Bengkala Sign Language"}, ["bqz"] = {"Bakaka"}, ["bra"] = {"Braj"}, ["brb"] = {"Brao", "Lave"}, ["brc"] = {"Berbice Creole Dutch"}, ["brd"] = {"Baraamu"}, ["brf"] = {"Bira"}, ["brg"] = {"Baure"}, ["brh"] = {"Brahui"}, ["bri"] = {"Mokpwe"}, ["brj"] = {"Bieria"}, ["brk"] = {"Birked"}, ["brl"] = {"Birwa"}, ["brm"] = {"Barambu"}, ["brn"] = {"Boruca"}, ["bro"] = {"Brokkat"}, ["brp"] = {"Barapasi"}, ["brq"] = {"Breri"}, ["brr"] = {"Birao"}, ["brs"] = {"Baras"}, ["brt"] = {"Bitare"}, ["bru"] = {"Eastern Bru"}, ["brv"] = {"Western Bru"}, ["brw"] = {"Bellari"}, ["brx"] = {"Bodo (India)"}, ["bry"] = {"Burui"}, ["brz"] = {"Bilbil"}, ["bsa"] = {"Abinomn"}, ["bsb"] = {"Brunei Bisaya"}, ["bsc"] = {"Bassari", "Oniyan"}, ["bse"] = {"Wushi"}, ["bsf"] = {"Bauchi"}, ["bsg"] = {"Bashkardi"}, ["bsh"] = {"Kati"}, ["bsi"] = {"Bassossi"}, ["bsj"] = {"Bangwinji"}, ["bsk"] = {"Burushaski"}, ["bsl"] = {"Basa-Gumna"}, ["bsm"] = {"Busami"}, ["bsn"] = {"Barasana-Eduria"}, ["bso"] = {"Buso"}, ["bsp"] = {"Baga Sitemu"}, ["bsq"] = {"Bassa"}, ["bsr"] = {"Bassa-Kontagora"}, ["bss"] = {"Akoose"}, ["bst"] = {"Basketo"}, ["bsu"] = {"Bahonsuai"}, ["bsv"] = {"Baga Sobané"}, ["bsw"] = {"Baiso"}, ["bsx"] = {"Yangkam"}, ["bsy"] = {"Sabah Bisaya"}, ["bta"] = {"Bata"}, ["btc"] = {"Bati (Cameroon)"}, ["btd"] = {"Batak Dairi"}, ["bte"] = {"Gamo-Ningi"}, ["btf"] = {"Birgit"}, ["btg"] = {"Gagnoa Bété"}, ["bth"] = {"Biatah Bidayuh"}, ["bti"] = {"Burate"}, ["btj"] = {"Bacanese Malay"}, ["btk"] = {"Batak languages"}, ["btm"] = {"Batak Mandailing"}, ["btn"] = {"Ratagnon"}, ["bto"] = {"Rinconada Bikol"}, ["btp"] = {"Budibud"}, ["btq"] = {"Batek"}, ["btr"] = {"Baetora"}, ["bts"] = {"Batak Simalungun"}, ["btt"] = {"Bete-Bendi"}, ["btu"] = {"Batu"}, ["btv"] = {"Bateri"}, ["btw"] = {"Butuanon"}, ["btx"] = {"Batak Karo"}, ["bty"] = {"Bobot"}, ["btz"] = {"Batak Alas-Kluet"}, ["bua"] = {"Buriat"}, ["bub"] = {"Bua"}, ["buc"] = {"Bushi"}, ["bud"] = {"Ntcham"}, ["bue"] = {"Beothuk"}, ["buf"] = {"Bushoong"}, ["bug"] = {"Buginese"}, ["buh"] = {"Younuo Bunu"}, ["bui"] = {"Bongili"}, ["buj"] = {"Basa-Gurmana"}, ["buk"] = {"Bugawac"}, ["bum"] = {"Bulu (Cameroon)"}, ["bun"] = {"Sherbro"}, ["buo"] = {"Terei"}, ["bup"] = {"Busoa"}, ["buq"] = {"Brem"}, ["bus"] = {"Bokobaru"}, ["but"] = {"Bungain"}, ["buu"] = {"Budu"}, ["buv"] = {"Bun"}, ["buw"] = {"Bubi"}, ["bux"] = {"Boghom"}, ["buy"] = {"Bullom So"}, ["buz"] = {"Bukwen"}, ["bva"] = {"Barein"}, ["bvb"] = {"Bube"}, ["bvc"] = {"Baelelea"}, ["bvd"] = {"Baeggu"}, ["bve"] = {"Berau Malay"}, ["bvf"] = {"Boor"}, ["bvg"] = {"Bonkeng"}, ["bvh"] = {"Bure"}, ["bvi"] = {"Belanda Viri"}, ["bvj"] = {"Baan"}, ["bvk"] = {"Bukat"}, ["bvl"] = {"Bolivian Sign Language"}, ["bvm"] = {"Bamunka"}, ["bvn"] = {"Buna"}, ["bvo"] = {"Bolgo"}, ["bvp"] = {"Bumang"}, ["bvq"] = {"Birri"}, ["bvr"] = {"Burarra"}, ["bvt"] = {"Bati (Indonesia)"}, ["bvu"] = {"Bukit Malay"}, ["bvv"] = {"Baniva"}, ["bvw"] = {"Boga"}, ["bvx"] = {"Dibole"}, ["bvy"] = {"Baybayanon"}, ["bvz"] = {"Bauzi"}, ["bwa"] = {"Bwatoo"}, ["bwb"] = {"Namosi-Naitasiri-Serua"}, ["bwc"] = {"Bwile"}, ["bwd"] = {"Bwaidoka"}, ["bwe"] = {"Bwe Karen"}, ["bwf"] = {"Boselewa"}, ["bwg"] = {"Barwe"}, ["bwh"] = {"Bishuo"}, ["bwi"] = {"Baniwa"}, ["bwj"] = {"Láá Láá Bwamu"}, ["bwk"] = {"Bauwaki"}, ["bwl"] = {"Bwela"}, ["bwm"] = {"Biwat"}, ["bwn"] = {"Wunai Bunu"}, ["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"}, ["bwp"] = {"Mandobo Bawah"}, ["bwq"] = {"Southern Bobo Madaré"}, ["bwr"] = {"Bura-Pabir"}, ["bws"] = {"Bomboma"}, ["bwt"] = {"Bafaw-Balong"}, ["bwu"] = {"Buli (Ghana)"}, ["bww"] = {"Bwa"}, ["bwx"] = {"Bu-Nao Bunu"}, ["bwy"] = {"Cwi Bwamu"}, ["bwz"] = {"Bwisi"}, ["bxa"] = {"Tairaha"}, ["bxb"] = {"Belanda Bor"}, ["bxc"] = {"Molengue"}, ["bxd"] = {"Pela"}, ["bxe"] = {"Birale"}, ["bxf"] = {"Bilur", "Minigir"}, ["bxg"] = {"Bangala"}, ["bxh"] = {"Buhutu"}, ["bxi"] = {"Pirlatapa"}, ["bxj"] = {"Bayungu"}, ["bxk"] = {"Bukusu", "Lubukusu"}, ["bxl"] = {"Jalkunan"}, ["bxm"] = {"Mongolia Buriat"}, ["bxn"] = {"Burduna"}, ["bxo"] = {"Barikanchi"}, ["bxp"] = {"Bebil"}, ["bxq"] = {"Beele"}, ["bxr"] = {"Russia Buriat"}, ["bxs"] = {"Busam"}, ["bxu"] = {"China Buriat"}, ["bxv"] = {"Berakou"}, ["bxw"] = {"Bankagooma"}, ["bxz"] = {"Binahari"}, ["bya"] = {"Batak"}, ["byb"] = {"Bikya"}, ["byc"] = {"Ubaghara"}, ["byd"] = {"Benyadu'"}, ["bye"] = {"Pouye"}, ["byf"] = {"Bete"}, ["byg"] = {"Baygo"}, ["byh"] = {"Bhujel"}, ["byi"] = {"Buyu"}, ["byj"] = {"Bina (Nigeria)"}, ["byk"] = {"Biao"}, ["byl"] = {"Bayono"}, ["bym"] = {"Bidjara"}, ["byn"] = {"Bilin", "Blin"}, ["byo"] = {"Biyo"}, ["byp"] = {"Bumaji"}, ["byq"] = {"Basay"}, ["byr"] = {"Baruya", "Yipma"}, ["bys"] = {"Burak"}, ["byt"] = {"Berti"}, ["byv"] = {"Medumba"}, ["byw"] = {"Belhariya"}, ["byx"] = {"Qaqet"}, ["byz"] = {"Banaro"}, ["bza"] = {"Bandi"}, ["bzb"] = {"Andio"}, ["bzc"] = {"Southern Betsimisaraka Malagasy"}, ["bzd"] = {"Bribri"}, ["bze"] = {"Jenaama Bozo"}, ["bzf"] = {"Boikin"}, ["bzg"] = {"Babuza"}, ["bzh"] = {"Mapos Buang"}, ["bzi"] = {"Bisu"}, ["bzj"] = {"Belize Kriol English"}, ["bzk"] = {"Nicaragua Creole English"}, ["bzl"] = {"Boano (Sulawesi)"}, ["bzm"] = {"Bolondo"}, ["bzn"] = {"Boano (Maluku)"}, ["bzo"] = {"Bozaba"}, ["bzp"] = {"Kemberano"}, ["bzq"] = {"Buli (Indonesia)"}, ["bzr"] = {"Biri"}, ["bzs"] = {"Brazilian Sign Language"}, ["bzt"] = {"Brithenig"}, ["bzu"] = {"Burmeso"}, ["bzv"] = {"Naami"}, ["bzw"] = {"Basa (Nigeria)"}, ["bzx"] = {"Kɛlɛngaxo Bozo"}, ["bzy"] = {"Obanliku"}, ["bzz"] = {"Evant"}, ["caa"] = {"Chortí"}, ["cab"] = {"Garifuna"}, ["cac"] = {"Chuj"}, ["cad"] = {"Caddo"}, ["cae"] = {"Lehar", "Laalaa"}, ["caf"] = {"Southern Carrier"}, ["cag"] = {"Nivaclé"}, ["cah"] = {"Cahuarano"}, ["cai"] = {"Central American Indian languages"}, ["caj"] = {"Chané"}, ["cak"] = {"Kaqchikel", "Cakchiquel"}, ["cal"] = {"Carolinian"}, ["cam"] = {"Cemuhî"}, ["can"] = {"Chambri"}, ["cao"] = {"Chácobo"}, ["cap"] = {"Chipaya"}, ["caq"] = {"Car Nicobarese"}, ["car"] = {"Galibi Carib"}, ["cas"] = {"Tsimané"}, ["cau"] = {"Caucasian languages"}, ["cav"] = {"Cavineña"}, ["caw"] = {"Callawalla"}, ["cax"] = {"Chiquitano"}, ["cay"] = {"Cayuga"}, ["caz"] = {"Canichana"}, ["cba"] = {"Chibchan languages"}, ["cbb"] = {"Cabiyarí"}, ["cbc"] = {"Carapana"}, ["cbd"] = {"Carijona"}, ["cbg"] = {"Chimila"}, ["cbi"] = {"Chachi"}, ["cbj"] = {"Ede Cabe"}, ["cbk"] = {"Chavacano"}, ["cbl"] = {"Bualkhaw Chin"}, ["cbn"] = {"Nyahkur"}, ["cbo"] = {"Izora"}, ["cbq"] = {"Tsucuba", "Cuba"}, ["cbr"] = {"Cashibo-Cacataibo"}, ["cbs"] = {"Cashinahua"}, ["cbt"] = {"Chayahuita"}, ["cbu"] = {"Candoshi-Shapra"}, ["cbv"] = {"Cacua"}, ["cbw"] = {"Kinabalian"}, ["cby"] = {"Carabayo"}, ["ccc"] = {"Chamicuro"}, ["ccd"] = {"Cafundo Creole"}, ["cce"] = {"Chopi"}, ["ccg"] = {"Samba Daka"}, ["cch"] = {"Atsam"}, ["ccj"] = {"Kasanga"}, ["ccl"] = {"Cutchi-Swahili"}, ["ccm"] = {"Malaccan Creole Malay"}, ["ccn"] = {"North Caucasian languages"}, ["cco"] = {"Comaltepec Chinantec"}, ["ccp"] = {"Chakma"}, ["ccr"] = {"Cacaopera"}, ["ccs"] = {"South Caucasian languages"}, ["cda"] = {"Choni"}, ["cdc"] = {"Chadic languages"}, ["cdd"] = {"Caddoan languages"}, ["cde"] = {"Chenchu"}, ["cdf"] = {"Chiru"}, ["cdh"] = {"Chambeali"}, ["cdi"] = {"Chodri"}, ["cdj"] = {"Churahi"}, ["cdm"] = {"Chepang"}, ["cdn"] = {"Chaudangsi"}, ["cdo"] = {"Min Dong Chinese"}, ["cdr"] = {"Cinda-Regi-Tiyal"}, ["cds"] = {"Chadian Sign Language"}, ["cdy"] = {"Chadong"}, ["cdz"] = {"Koda"}, ["cea"] = {"Lower Chehalis"}, ["ceb"] = {"Cebuano"}, ["ceg"] = {"Chamacoco"}, ["cek"] = {"Eastern Khumi Chin"}, ["cel"] = {"Celtic languages"}, ["cen"] = {"Cen"}, ["cet"] = {"Centúúm"}, ["cey"] = {"Ekai Chin"}, ["cfa"] = {"Dijim-Bwilim"}, ["cfd"] = {"Cara"}, ["cfg"] = {"Como Karim"}, ["cfm"] = {"Falam Chin"}, ["cga"] = {"Changriwa"}, ["cgc"] = {"Kagayanen"}, ["cgg"] = {"Chiga"}, ["cgk"] = {"Chocangacakha"}, ["chb"] = {"Chibcha"}, ["chc"] = {"Catawba"}, ["chd"] = {"Highland Oaxaca Chontal"}, ["chf"] = {"Tabasco Chontal"}, ["chg"] = {"Chagatai"}, ["chh"] = {"Chinook"}, ["chj"] = {"Ojitlán Chinantec"}, ["chk"] = {"Chuukese"}, ["chl"] = {"Cahuilla"}, ["chm"] = {"Mari (Russia)"}, ["chn"] = {"Chinook jargon"}, ["cho"] = {"Choctaw"}, ["chp"] = {"Chipewyan", "Dene Suline"}, ["chq"] = {"Quiotepec Chinantec"}, ["chr"] = {"Cherokee"}, ["cht"] = {"Cholón"}, ["chw"] = {"Chuwabu"}, ["chx"] = {"Chantyal"}, ["chy"] = {"Cheyenne"}, ["chz"] = {"Ozumacín Chinantec"}, ["cia"] = {"Cia-Cia"}, ["cib"] = {"Ci Gbe"}, ["cic"] = {"Chickasaw"}, ["cid"] = {"Chimariko"}, ["cie"] = {"Cineni"}, ["cih"] = {"Chinali"}, ["cik"] = {"Chitkuli Kinnauri"}, ["cim"] = {"Cimbrian"}, ["cin"] = {"Cinta Larga"}, ["cip"] = {"Chiapanec"}, ["cir"] = {"Tiri", "Haméa", "Méa"}, ["ciw"] = {"Chippewa"}, ["ciy"] = {"Chaima"}, ["cja"] = {"Western Cham"}, ["cje"] = {"Chru"}, ["cjh"] = {"Upper Chehalis"}, ["cji"] = {"Chamalal"}, ["cjk"] = {"Chokwe"}, ["cjm"] = {"Eastern Cham"}, ["cjn"] = {"Chenapian"}, ["cjo"] = {"Ashéninka Pajonal"}, ["cjp"] = {"Cabécar"}, ["cjs"] = {"Shor"}, ["cjv"] = {"Chuave"}, ["cjy"] = {"Jinyu Chinese"}, ["ckb"] = {"Central Kurdish"}, ["ckh"] = {"Chak"}, ["ckl"] = {"Cibak"}, ["ckm"] = {"Chakavian"}, ["ckn"] = {"Kaang Chin"}, ["cko"] = {"Anufo"}, ["ckq"] = {"Kajakse"}, ["ckr"] = {"Kairak"}, ["cks"] = {"Tayo"}, ["ckt"] = {"Chukot"}, ["cku"] = {"Koasati"}, ["ckv"] = {"Kavalan"}, ["ckx"] = {"Caka"}, ["cky"] = {"Cakfem-Mushere"}, ["ckz"] = {"Cakchiquel-Quiché Mixed Language"}, ["cla"] = {"Ron"}, ["clc"] = {"Chilcotin"}, ["cld"] = {"Chaldean Neo-Aramaic"}, ["cle"] = {"Lealao Chinantec"}, ["clh"] = {"Chilisso"}, ["cli"] = {"Chakali"}, ["clj"] = {"Laitu Chin"}, ["clk"] = {"Idu-Mishmi"}, ["cll"] = {"Chala"}, ["clm"] = {"Clallam"}, ["clo"] = {"Lowland Oaxaca Chontal"}, ["clt"] = {"Lautu Chin"}, ["clu"] = {"Caluyanun"}, ["clw"] = {"Chulym"}, ["cly"] = {"Eastern Highland Chatino"}, ["cma"] = {"Maa"}, ["cmc"] = {"Chamic languages"}, ["cme"] = {"Cerma"}, ["cmg"] = {"Classical Mongolian"}, ["cmi"] = {"Emberá-Chamí"}, ["cml"] = {"Campalagian"}, ["cmm"] = {"Michigamea"}, ["cmn"] = {"Mandarin Chinese"}, ["cmo"] = {"Central Mnong"}, ["cmr"] = {"Mro-Khimi Chin"}, ["cms"] = {"Messapic"}, ["cmt"] = {"Camtho"}, ["cna"] = {"Changthang"}, ["cnb"] = {"Chinbon Chin"}, ["cnc"] = {"Côông"}, ["cng"] = {"Northern Qiang"}, ["cnh"] = {"Hakha Chin", "Haka Chin"}, ["cni"] = {"Asháninka"}, ["cnk"] = {"Khumi Chin"}, ["cnl"] = {"Lalana Chinantec"}, ["cno"] = {"Con"}, ["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"}, ["cnq"] = {"Chung"}, ["cnr"] = {"Montenegrin"}, ["cns"] = {"Central Asmat"}, ["cnt"] = {"Tepetotutla Chinantec"}, ["cnu"] = {"Chenoua"}, ["cnw"] = {"Ngawn Chin"}, ["cnx"] = {"Middle Cornish"}, ["coa"] = {"Cocos Islands Malay"}, ["cob"] = {"Chicomuceltec"}, ["coc"] = {"Cocopa"}, ["cod"] = {"Cocama-Cocamilla"}, ["coe"] = {"Koreguaje"}, ["cof"] = {"Colorado"}, ["cog"] = {"Chong"}, ["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"}, ["coj"] = {"Cochimi"}, ["cok"] = {"Santa Teresa Cora"}, ["col"] = {"Columbia-Wenatchi"}, ["com"] = {"Comanche"}, ["con"] = {"Cofán"}, ["coo"] = {"Comox"}, ["cop"] = {"Coptic"}, ["coq"] = {"Coquille"}, ["cot"] = {"Caquinte"}, ["cou"] = {"Wamey"}, ["cov"] = {"Cao Miao"}, ["cow"] = {"Cowlitz"}, ["cox"] = {"Nanti"}, ["coz"] = {"Chochotec"}, ["cpa"] = {"Palantla Chinantec"}, ["cpb"] = {"Ucayali-Yurúa Ashéninka"}, ["cpc"] = {"Ajyíninka Apurucayali"}, ["cpe"] = {"English-based creoles and pidgins"}, ["cpf"] = {"French-based creoles and pidgins"}, ["cpg"] = {"Cappadocian Greek"}, ["cpi"] = {"Chinese Pidgin English"}, ["cpn"] = {"Cherepon"}, ["cpo"] = {"Kpeego"}, ["cpp"] = {"Portuguese-based creoles and pidgins"}, ["cps"] = {"Capiznon"}, ["cpu"] = {"Pichis Ashéninka"}, ["cpx"] = {"Pu-Xian Chinese"}, ["cpy"] = {"South Ucayali Ashéninka"}, ["cqd"] = {"Chuanqiandian Cluster Miao"}, ["cra"] = {"Chara"}, ["crb"] = {"Island Carib"}, ["crc"] = {"Lonwolwol"}, ["crd"] = {"Coeur d'Alene"}, ["crf"] = {"Caramanta"}, ["crg"] = {"Michif"}, ["crh"] = {"Crimean Tatar", "Crimean Turkish"}, ["cri"] = {"Sãotomense"}, ["crj"] = {"Southern East Cree"}, ["crk"] = {"Plains Cree"}, ["crl"] = {"Northern East Cree"}, ["crm"] = {"Moose Cree"}, ["crn"] = {"El Nayar Cora"}, ["cro"] = {"Crow"}, ["crp"] = {"Creoles and pidgins"}, ["crq"] = {"Iyo'wujwa Chorote"}, ["crr"] = {"Carolina Algonquian"}, ["crs"] = {"Seselwa Creole French"}, ["crt"] = {"Iyojwa'ja Chorote"}, ["crv"] = {"Chaura"}, ["crw"] = {"Chrau"}, ["crx"] = {"Carrier"}, ["cry"] = {"Cori"}, ["crz"] = {"Cruzeño"}, ["csa"] = {"Chiltepec Chinantec"}, ["csb"] = {"Kashubian"}, ["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"}, ["csd"] = {"Chiangmai Sign Language"}, ["cse"] = {"Czech Sign Language"}, ["csf"] = {"Cuba Sign Language"}, ["csg"] = {"Chilean Sign Language"}, ["csh"] = {"Asho Chin"}, ["csi"] = {"Coast Miwok"}, ["csj"] = {"Songlai Chin"}, ["csk"] = {"Jola-Kasa"}, ["csl"] = {"Chinese Sign Language"}, ["csm"] = {"Central Sierra Miwok"}, ["csn"] = {"Colombian Sign Language"}, ["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"}, ["csp"] = {"Southern Ping Chinese", "Southern Pinghua"}, ["csq"] = {"Croatia Sign Language"}, ["csr"] = {"Costa Rican Sign Language"}, ["css"] = {"Southern Ohlone"}, ["cst"] = {"Northern Ohlone"}, ["csu"] = {"Central Sudanic languages"}, ["csv"] = {"Sumtu Chin"}, ["csw"] = {"Swampy Cree"}, ["csx"] = {"Cambodian Sign Language"}, ["csy"] = {"Siyin Chin"}, ["csz"] = {"Coos"}, ["cta"] = {"Tataltepec Chatino"}, ["ctc"] = {"Chetco"}, ["ctd"] = {"Tedim Chin"}, ["cte"] = {"Tepinapa Chinantec"}, ["ctg"] = {"Chittagonian"}, ["cth"] = {"Thaiphum Chin"}, ["ctl"] = {"Tlacoatzintepec Chinantec"}, ["ctm"] = {"Chitimacha"}, ["ctn"] = {"Chhintange"}, ["cto"] = {"Emberá-Catío"}, ["ctp"] = {"Western Highland Chatino"}, ["cts"] = {"Northern Catanduanes Bikol"}, ["ctt"] = {"Wayanad Chetti"}, ["ctu"] = {"Chol"}, ["cty"] = {"Moundadan Chetty"}, ["ctz"] = {"Zacatepec Chatino"}, ["cua"] = {"Cua"}, ["cub"] = {"Cubeo"}, ["cuc"] = {"Usila Chinantec"}, ["cuh"] = {"Chuka", "Gichuka"}, ["cui"] = {"Cuiba"}, ["cuj"] = {"Mashco Piro"}, ["cuk"] = {"San Blas Kuna"}, ["cul"] = {"Culina", "Kulina"}, ["cuo"] = {"Cumanagoto"}, ["cup"] = {"Cupeño"}, ["cuq"] = {"Cun"}, ["cur"] = {"Chhulung"}, ["cus"] = {"Cushitic languages"}, ["cut"] = {"Teutila Cuicatec"}, ["cuu"] = {"Tai Ya"}, ["cuv"] = {"Cuvok"}, ["cuw"] = {"Chukwa"}, ["cux"] = {"Tepeuxila Cuicatec"}, ["cuy"] = {"Cuitlatec"}, ["cvg"] = {"Chug"}, ["cvn"] = {"Valle Nacional Chinantec"}, ["cwa"] = {"Kabwa"}, ["cwb"] = {"Maindo"}, ["cwd"] = {"Woods Cree"}, ["cwe"] = {"Kwere"}, ["cwg"] = {"Chewong", "Cheq Wong"}, ["cwt"] = {"Kuwaataay"}, ["cxh"] = {"Cha'ari"}, ["cya"] = {"Nopala Chatino"}, ["cyb"] = {"Cayubaba"}, ["cyo"] = {"Cuyonon"}, ["czh"] = {"Huizhou Chinese"}, ["czk"] = {"Knaanic"}, ["czn"] = {"Zenzontepec Chatino"}, ["czo"] = {"Min Zhong Chinese"}, ["czt"] = {"Zotung Chin"}, ["daa"] = {"Dangaléat"}, ["dac"] = {"Dambi"}, ["dad"] = {"Marik"}, ["dae"] = {"Duupa"}, ["dag"] = {"Dagbani"}, ["dah"] = {"Gwahatike"}, ["dai"] = {"Day"}, ["daj"] = {"Dar Fur Daju"}, ["dak"] = {"Dakota"}, ["dal"] = {"Dahalo"}, ["dam"] = {"Damakawa"}, ["dao"] = {"Daai Chin"}, ["daq"] = {"Dandami Maria"}, ["dar"] = {"Dargwa"}, ["das"] = {"Daho-Doo"}, ["dau"] = {"Dar Sila Daju"}, ["dav"] = {"Taita", "Dawida"}, ["daw"] = {"Davawenyo"}, ["dax"] = {"Dayi"}, ["day"] = {"Land Dayak languages"}, ["daz"] = {"Dao"}, ["dba"] = {"Bangime"}, ["dbb"] = {"Deno"}, ["dbd"] = {"Dadiya"}, ["dbe"] = {"Dabe"}, ["dbf"] = {"Edopi"}, ["dbg"] = {"Dogul Dom Dogon"}, ["dbi"] = {"Doka"}, ["dbj"] = {"Ida'an"}, ["dbl"] = {"Dyirbal"}, ["dbm"] = {"Duguri"}, ["dbn"] = {"Duriankere"}, ["dbo"] = {"Dulbu"}, ["dbp"] = {"Duwai"}, ["dbq"] = {"Daba"}, ["dbr"] = {"Dabarre"}, ["dbt"] = {"Ben Tey Dogon"}, ["dbu"] = {"Bondum Dom Dogon"}, ["dbv"] = {"Dungu"}, ["dbw"] = {"Bankan Tey Dogon"}, ["dby"] = {"Dibiyaso"}, ["dcc"] = {"Deccan"}, ["dcr"] = {"Negerhollands"}, ["dda"] = {"Dadi Dadi"}, ["ddd"] = {"Dongotono"}, ["dde"] = {"Doondo"}, ["ddg"] = {"Fataluku"}, ["ddi"] = {"West Goodenough"}, ["ddj"] = {"Jaru"}, ["ddn"] = {"Dendi (Benin)"}, ["ddo"] = {"Dido"}, ["ddr"] = {"Dhudhuroa"}, ["dds"] = {"Donno So Dogon"}, ["ddw"] = {"Dawera-Daweloor"}, ["dec"] = {"Dagik"}, ["ded"] = {"Dedua"}, ["dee"] = {"Dewoin"}, ["def"] = {"Dezfuli"}, ["deg"] = {"Degema"}, ["deh"] = {"Dehwari"}, ["dei"] = {"Demisa"}, ["dek"] = {"Dek"}, ["del"] = {"Delaware"}, ["dem"] = {"Dem"}, ["den"] = {"Slave (Athapascan)"}, ["dep"] = {"Pidgin Delaware"}, ["deq"] = {"Dendi (Central African Republic)"}, ["der"] = {"Deori"}, ["des"] = {"Desano"}, ["dev"] = {"Domung"}, ["dez"] = {"Dengese"}, ["dga"] = {"Southern Dagaare"}, ["dgb"] = {"Bunoge Dogon"}, ["dgc"] = {"Casiguran Dumagat Agta"}, ["dgd"] = {"Dagaari Dioula"}, ["dge"] = {"Degenan"}, ["dgg"] = {"Doga"}, ["dgh"] = {"Dghwede"}, ["dgi"] = {"Northern Dagara"}, ["dgk"] = {"Dagba"}, ["dgl"] = {"Andaandi", "Dongolawi"}, ["dgn"] = {"Dagoman"}, ["dgo"] = {"Dogri (individual language)"}, ["dgr"] = {"Dogrib", "Tłı̨chǫ"}, ["dgs"] = {"Dogoso"}, ["dgt"] = {"Ndra'ngith"}, ["dgw"] = {"Daungwurrung"}, ["dgx"] = {"Doghoro"}, ["dgz"] = {"Daga"}, ["dhd"] = {"Dhundari"}, ["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"}, ["dhi"] = {"Dhimal"}, ["dhl"] = {"Dhalandji"}, ["dhm"] = {"Zemba"}, ["dhn"] = {"Dhanki"}, ["dho"] = {"Dhodia"}, ["dhr"] = {"Dhargari"}, ["dhs"] = {"Dhaiso"}, ["dhu"] = {"Dhurga"}, ["dhv"] = {"Dehu", "Drehu"}, ["dhw"] = {"Dhanwar (Nepal)"}, ["dhx"] = {"Dhungaloo"}, ["dia"] = {"Dia"}, ["dib"] = {"South Central Dinka"}, ["dic"] = {"Lakota Dida"}, ["did"] = {"Didinga"}, ["dif"] = {"Dieri", "Diyari"}, ["dig"] = {"Digo", "Chidigo"}, ["dih"] = {"Kumiai"}, ["dii"] = {"Dimbong"}, ["dij"] = {"Dai"}, ["dik"] = {"Southwestern Dinka"}, ["dil"] = {"Dilling"}, ["dim"] = {"Dime"}, ["din"] = {"Dinka"}, ["dio"] = {"Dibo"}, ["dip"] = {"Northeastern Dinka"}, ["diq"] = {"Dimli (individual language)"}, ["dir"] = {"Dirim"}, ["dis"] = {"Dimasa"}, ["diu"] = {"Diriku"}, ["diw"] = {"Northwestern Dinka"}, ["dix"] = {"Dixon Reef"}, ["diy"] = {"Diuwe"}, ["diz"] = {"Ding"}, ["dja"] = {"Djadjawurrung"}, ["djb"] = {"Djinba"}, ["djc"] = {"Dar Daju Daju"}, ["djd"] = {"Djamindjung", "Ngaliwurru"}, ["dje"] = {"Zarma"}, ["djf"] = {"Djangun"}, ["dji"] = {"Djinang"}, ["djj"] = {"Djeebbana"}, ["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"}, ["djm"] = {"Jamsay Dogon"}, ["djn"] = {"Jawoyn", "Djauan"}, ["djo"] = {"Jangkang"}, ["djr"] = {"Djambarrpuyngu"}, ["dju"] = {"Kapriman"}, ["djw"] = {"Djawi"}, ["dka"] = {"Dakpakha"}, ["dkg"] = {"Kadung"}, ["dkk"] = {"Dakka"}, ["dkr"] = {"Kuijau"}, ["dks"] = {"Southeastern Dinka"}, ["dkx"] = {"Mazagway"}, ["dlg"] = {"Dolgan"}, ["dlk"] = {"Dahalik"}, ["dlm"] = {"Dalmatian"}, ["dln"] = {"Darlong"}, ["dma"] = {"Duma"}, ["dmb"] = {"Mombo Dogon"}, ["dmc"] = {"Gavak"}, ["dmd"] = {"Madhi Madhi"}, ["dme"] = {"Dugwor"}, ["dmf"] = {"Medefaidrin"}, ["dmg"] = {"Upper Kinabatangan"}, ["dmk"] = {"Domaaki"}, ["dml"] = {"Dameli"}, ["dmm"] = {"Dama"}, ["dmn"] = {"Mande languages"}, ["dmo"] = {"Kemedzung"}, ["dmr"] = {"East Damar"}, ["dms"] = {"Dampelas"}, ["dmu"] = {"Dubu", "Tebi"}, ["dmv"] = {"Dumpas"}, ["dmw"] = {"Mudburra"}, ["dmx"] = {"Dema"}, ["dmy"] = {"Demta", "Sowari"}, ["dna"] = {"Upper Grand Valley Dani"}, ["dnd"] = {"Daonda"}, ["dne"] = {"Ndendeule"}, ["dng"] = {"Dungan"}, ["dni"] = {"Lower Grand Valley Dani"}, ["dnj"] = {"Dan"}, ["dnk"] = {"Dengka"}, ["dnn"] = {"Dzùùngoo"}, ["dno"] = {"Ndrulo", "Northern Lendu"}, ["dnr"] = {"Danaru"}, ["dnt"] = {"Mid Grand Valley Dani"}, ["dnu"] = {"Danau"}, ["dnv"] = {"Danu"}, ["dnw"] = {"Western Dani"}, ["dny"] = {"Dení"}, ["doa"] = {"Dom"}, ["dob"] = {"Dobu"}, ["doc"] = {"Northern Dong"}, ["doe"] = {"Doe"}, ["dof"] = {"Domu"}, ["doh"] = {"Dong"}, ["doi"] = {"Dogri (macrolanguage)"}, ["dok"] = {"Dondo"}, ["dol"] = {"Doso"}, ["don"] = {"Toura (Papua New Guinea)"}, ["doo"] = {"Dongo"}, ["dop"] = {"Lukpa"}, ["doq"] = {"Dominican Sign Language"}, ["dor"] = {"Dori'o"}, ["dos"] = {"Dogosé"}, ["dot"] = {"Dass"}, ["dov"] = {"Dombe"}, ["dow"] = {"Doyayo"}, ["dox"] = {"Bussa"}, ["doy"] = {"Dompo"}, ["doz"] = {"Dorze"}, ["dpp"] = {"Papar"}, ["dra"] = {"Dravidian languages"}, ["drb"] = {"Dair"}, ["drc"] = {"Minderico"}, ["drd"] = {"Darmiya"}, ["dre"] = {"Dolpo"}, ["drg"] = {"Rungus"}, ["dri"] = {"C'Lela"}, ["drl"] = {"Paakantyi"}, ["drn"] = {"West Damar"}, ["dro"] = {"Daro-Matu Melanau"}, ["drq"] = {"Dura"}, ["drs"] = {"Gedeo"}, ["drt"] = {"Drents"}, ["dru"] = {"Rukai"}, ["dry"] = {"Darai"}, ["dsb"] = {"Lower Sorbian"}, ["dse"] = {"Dutch Sign Language"}, ["dsh"] = {"Daasanach"}, ["dsi"] = {"Disa"}, ["dsk"] = {"Dokshi"}, ["dsl"] = {"Danish Sign Language"}, ["dsn"] = {"Dusner"}, ["dso"] = {"Desiya"}, ["dsq"] = {"Tadaksahak"}, ["dsz"] = {"Mardin Sign Language"}, ["dta"] = {"Daur"}, ["dtb"] = {"Labuk-Kinabatangan Kadazan"}, ["dtd"] = {"Ditidaht"}, ["dth"] = {"Adithinngithigh"}, ["dti"] = {"Ana Tinga Dogon"}, ["dtk"] = {"Tene Kan Dogon"}, ["dtm"] = {"Tomo Kan Dogon"}, ["dtn"] = {"Daatsʼíin"}, ["dto"] = {"Tommo So Dogon"}, ["dtp"] = {"Kadazan Dusun", "Central Dusun"}, ["dtr"] = {"Lotud"}, ["dts"] = {"Toro So Dogon"}, ["dtt"] = {"Toro Tegu Dogon"}, ["dtu"] = {"Tebul Ure Dogon"}, ["dty"] = {"Dotyali"}, ["dua"] = {"Duala"}, ["dub"] = {"Dubli"}, ["duc"] = {"Duna"}, ["due"] = {"Umiray Dumaget Agta"}, ["duf"] = {"Dumbea", "Drubea"}, ["dug"] = {"Duruma", "Chiduruma"}, ["duh"] = {"Dungra Bhil"}, ["dui"] = {"Dumun"}, ["duk"] = {"Uyajitaya"}, ["dul"] = {"Alabat Island Agta"}, ["dum"] = {"Middle Dutch (ca. 1050-1350)"}, ["dun"] = {"Dusun Deyah"}, ["duo"] = {"Dupaninan Agta"}, ["dup"] = {"Duano"}, ["duq"] = {"Dusun Malang"}, ["dur"] = {"Dii"}, ["dus"] = {"Dumi"}, ["duu"] = {"Drung"}, ["duv"] = {"Duvle"}, ["duw"] = {"Dusun Witu"}, ["dux"] = {"Duungooma"}, ["duy"] = {"Dicamay Agta"}, ["duz"] = {"Duli-Gey"}, ["dva"] = {"Duau"}, ["dwa"] = {"Diri"}, ["dwk"] = {"Dawik Kui"}, ["dwr"] = {"Dawro"}, ["dws"] = {"Dutton World Speedwords"}, ["dwu"] = {"Dhuwal"}, ["dww"] = {"Dawawa"}, ["dwy"] = {"Dhuwaya"}, ["dwz"] = {"Dewas Rai"}, ["dya"] = {"Dyan"}, ["dyb"] = {"Dyaberdyaber"}, ["dyd"] = {"Dyugun"}, ["dyg"] = {"Villa Viciosa Agta"}, ["dyi"] = {"Djimini Senoufo"}, ["dym"] = {"Yanda Dom Dogon"}, ["dyn"] = {"Dyangadi", "Dhanggatti"}, ["dyo"] = {"Jola-Fonyi"}, ["dyr"] = {"Dyarim"}, ["dyu"] = {"Dyula"}, ["dyy"] = {"Djabugay", "Dyaabugay"}, ["dza"] = {"Tunzu"}, ["dzd"] = {"Daza"}, ["dze"] = {"Djiwarli"}, ["dzg"] = {"Dazaga"}, ["dzl"] = {"Dzalakha"}, ["dzn"] = {"Dzando"}, ["eaa"] = {"Karenggapa"}, ["ebc"] = {"Beginci"}, ["ebg"] = {"Ebughu"}, ["ebk"] = {"Eastern Bontok"}, ["ebo"] = {"Teke-Ebo"}, ["ebr"] = {"Ebrié"}, ["ebu"] = {"Embu", "Kiembu"}, ["ecr"] = {"Eteocretan"}, ["ecs"] = {"Ecuadorian Sign Language"}, ["ecy"] = {"Eteocypriot"}, ["eee"] = {"E"}, ["efa"] = {"Efai"}, ["efe"] = {"Efe"}, ["efi"] = {"Efik"}, ["ega"] = {"Ega"}, ["egl"] = {"Emilian"}, ["egm"] = {"Benamanga"}, ["ego"] = {"Eggon"}, ["egx"] = {"Egyptian languages"}, ["egy"] = {"Egyptian (Ancient)"}, ["ehs"] = {"Miyakubo Sign Language"}, ["ehu"] = {"Ehueun"}, ["eip"] = {"Eipomek"}, ["eit"] = {"Eitiep"}, ["eiv"] = {"Askopan"}, ["eja"] = {"Ejamat"}, ["eka"] = {"Ekajuk"}, ["eke"] = {"Ekit"}, ["ekg"] = {"Ekari"}, ["eki"] = {"Eki"}, ["ekk"] = {"Standard Estonian"}, ["ekl"] = {"Kol (Bangladesh)", "Kol"}, ["ekm"] = {"Elip"}, ["eko"] = {"Koti"}, ["ekp"] = {"Ekpeye"}, ["ekr"] = {"Yace"}, ["eky"] = {"Eastern Kayah"}, ["ele"] = {"Elepi"}, ["elh"] = {"El Hugeirat"}, ["eli"] = {"Nding"}, ["elk"] = {"Elkei"}, ["elm"] = {"Eleme"}, ["elo"] = {"El Molo"}, ["elu"] = {"Elu"}, ["elx"] = {"Elamite"}, ["ema"] = {"Emai-Iuleha-Ora"}, ["emb"] = {"Embaloh"}, ["eme"] = {"Emerillon"}, ["emg"] = {"Eastern Meohang"}, ["emi"] = {"Mussau-Emira"}, ["emk"] = {"Eastern Maninkakan"}, ["emm"] = {"Mamulique"}, ["emn"] = {"Eman"}, ["emp"] = {"Northern Emberá"}, ["emq"] = {"Eastern Minyag"}, ["ems"] = {"Pacific Gulf Yupik"}, ["emu"] = {"Eastern Muria"}, ["emw"] = {"Emplawas"}, ["emx"] = {"Erromintxela"}, ["emy"] = {"Epigraphic Mayan"}, ["emz"] = {"Mbessa"}, ["ena"] = {"Apali"}, ["enb"] = {"Markweeta"}, ["enc"] = {"En"}, ["end"] = {"Ende"}, ["enf"] = {"Forest Enets"}, ["enh"] = {"Tundra Enets"}, ["enl"] = {"Enlhet"}, ["enm"] = {"Middle English (1100-1500)"}, ["enn"] = {"Engenni"}, ["eno"] = {"Enggano"}, ["enq"] = {"Enga"}, ["enr"] = {"Emumu", "Emem"}, ["enu"] = {"Enu"}, ["env"] = {"Enwan (Edo State)"}, ["enw"] = {"Enwan (Akwa Ibom State)"}, ["enx"] = {"Enxet"}, ["eot"] = {"Beti (Côte d'Ivoire)"}, ["epi"] = {"Epie"}, ["era"] = {"Eravallan"}, ["erg"] = {"Sie"}, ["erh"] = {"Eruwa"}, ["eri"] = {"Ogea"}, ["erk"] = {"South Efate"}, ["ero"] = {"Horpa"}, ["err"] = {"Erre"}, ["ers"] = {"Ersu"}, ["ert"] = {"Eritai"}, ["erw"] = {"Erokwanas"}, ["ese"] = {"Ese Ejja"}, ["esg"] = {"Aheri Gondi"}, ["esh"] = {"Eshtehardi"}, ["esi"] = {"North Alaskan Inupiatun"}, ["esk"] = {"Northwest Alaska Inupiatun"}, ["esl"] = {"Egypt Sign Language"}, ["esm"] = {"Esuma"}, ["esn"] = {"Salvadoran Sign Language"}, ["eso"] = {"Estonian Sign Language"}, ["esq"] = {"Esselen"}, ["ess"] = {"Central Siberian Yupik"}, ["esu"] = {"Central Yupik"}, ["esx"] = {"Eskimo-Aleut languages"}, ["esy"] = {"Eskayan"}, ["etb"] = {"Etebi"}, ["etc"] = {"Etchemin"}, ["eth"] = {"Ethiopian Sign Language"}, ["etn"] = {"Eton (Vanuatu)"}, ["eto"] = {"Eton (Cameroon)"}, ["etr"] = {"Edolo"}, ["ets"] = {"Yekhee"}, ["ett"] = {"Etruscan"}, ["etu"] = {"Ejagham"}, ["etx"] = {"Eten"}, ["etz"] = {"Semimi"}, ["eud"] = {"Eudeve"}, ["euq"] = {"Basque (family)"}, ["eve"] = {"Even"}, ["evh"] = {"Uvbie"}, ["evn"] = {"Evenki"}, ["ewo"] = {"Ewondo"}, ["ext"] = {"Extremaduran"}, ["eya"] = {"Eyak"}, ["eyo"] = {"Keiyo"}, ["eza"] = {"Ezaa"}, ["eze"] = {"Uzekwe"}, ["faa"] = {"Fasu"}, ["fab"] = {"Fa d'Ambu"}, ["fad"] = {"Wagi"}, ["faf"] = {"Fagani"}, ["fag"] = {"Finongan"}, ["fah"] = {"Baissa Fali"}, ["fai"] = {"Faiwol"}, ["faj"] = {"Faita"}, ["fak"] = {"Fang (Cameroon)"}, ["fal"] = {"South Fali"}, ["fam"] = {"Fam"}, ["fan"] = {"Fang (Equatorial Guinea)"}, ["fap"] = {"Paloor"}, ["far"] = {"Fataleka"}, ["fat"] = {"Fanti"}, ["fau"] = {"Fayu"}, ["fax"] = {"Fala"}, ["fay"] = {"Southwestern Fars"}, ["faz"] = {"Northwestern Fars"}, ["fbl"] = {"West Albay Bikol"}, ["fcs"] = {"Quebec Sign Language"}, ["fer"] = {"Feroge"}, ["ffi"] = {"Foia Foia"}, ["ffm"] = {"Maasina Fulfulde"}, ["fgr"] = {"Fongoro"}, ["fia"] = {"Nobiin"}, ["fie"] = {"Fyer"}, ["fif"] = {"Faifi"}, ["fil"] = {"Filipino", "Pilipino"}, ["fip"] = {"Fipa"}, ["fir"] = {"Firan"}, ["fit"] = {"Tornedalen Finnish", "Meänkieli"}, ["fiu"] = {"Finno-Ugrian languages"}, ["fiw"] = {"Fiwaga"}, ["fkk"] = {"Kirya-Konzəl"}, ["fkv"] = {"Kven Finnish"}, ["fla"] = {"Kalispel-Pend d'Oreille"}, ["flh"] = {"Foau"}, ["fli"] = {"Fali"}, ["fll"] = {"North Fali"}, ["fln"] = {"Flinders Island"}, ["flr"] = {"Fuliiru"}, ["fly"] = {"Flaaitaal", "Tsotsitaal"}, ["fmp"] = {"Fe'fe'"}, ["fmu"] = {"Far Western Muria"}, ["fnb"] = {"Fanbak"}, ["fng"] = {"Fanagalo"}, ["fni"] = {"Fania"}, ["fod"] = {"Foodo"}, ["foi"] = {"Foi"}, ["fom"] = {"Foma"}, ["fon"] = {"Fon"}, ["for"] = {"Fore"}, ["fos"] = {"Siraya"}, ["fox"] = {"Formosan languages"}, ["fpe"] = {"Fernando Po Creole English"}, ["fqs"] = {"Fas"}, ["frc"] = {"Cajun French"}, ["frd"] = {"Fordata"}, ["frk"] = {"Frankish"}, ["frm"] = {"Middle French (ca. 1400-1600)"}, ["fro"] = {"Old French (842-ca. 1400)"}, ["frp"] = {"Arpitan", "Francoprovençal"}, ["frq"] = {"Forak"}, ["frr"] = {"Northern Frisian"}, ["frs"] = {"Eastern Frisian"}, ["frt"] = {"Fortsenal"}, ["fse"] = {"Finnish Sign Language"}, ["fsl"] = {"French Sign Language"}, ["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"}, ["fub"] = {"Adamawa Fulfulde"}, ["fuc"] = {"Pulaar"}, ["fud"] = {"East Futuna"}, ["fue"] = {"Borgu Fulfulde"}, ["fuf"] = {"Pular"}, ["fuh"] = {"Western Niger Fulfulde"}, ["fui"] = {"Bagirmi Fulfulde"}, ["fuj"] = {"Ko"}, ["fum"] = {"Fum"}, ["fun"] = {"Fulniô"}, ["fuq"] = {"Central-Eastern Niger Fulfulde"}, ["fur"] = {"Friulian"}, ["fut"] = {"Futuna-Aniwa"}, ["fuu"] = {"Furu"}, ["fuv"] = {"Nigerian Fulfulde"}, ["fuy"] = {"Fuyug"}, ["fvr"] = {"Fur"}, ["fwa"] = {"Fwâi"}, ["fwe"] = {"Fwe"}, ["gaa"] = {"Ga"}, ["gab"] = {"Gabri"}, ["gac"] = {"Mixed Great Andamanese"}, ["gad"] = {"Gaddang"}, ["gae"] = {"Guarequena"}, ["gaf"] = {"Gende"}, ["gag"] = {"Gagauz"}, ["gah"] = {"Alekano"}, ["gai"] = {"Borei"}, ["gaj"] = {"Gadsup"}, ["gak"] = {"Gamkonora"}, ["gal"] = {"Galolen"}, ["gam"] = {"Kandawo"}, ["gan"] = {"Gan Chinese"}, ["gao"] = {"Gants"}, ["gap"] = {"Gal"}, ["gaq"] = {"Gata'"}, ["gar"] = {"Galeya"}, ["gas"] = {"Adiwasi Garasia"}, ["gat"] = {"Kenati"}, ["gau"] = {"Mudhili Gadaba"}, ["gaw"] = {"Nobonob"}, ["gax"] = {"Borana-Arsi-Guji Oromo"}, ["gay"] = {"Gayo"}, ["gaz"] = {"West Central Oromo"}, ["gba"] = {"Gbaya (Central African Republic)"}, ["gbb"] = {"Kaytetye"}, ["gbd"] = {"Karajarri"}, ["gbe"] = {"Niksek"}, ["gbf"] = {"Gaikundi"}, ["gbg"] = {"Gbanziri"}, ["gbh"] = {"Defi Gbe"}, ["gbi"] = {"Galela"}, ["gbj"] = {"Bodo Gadaba"}, ["gbk"] = {"Gaddi"}, ["gbl"] = {"Gamit"}, ["gbm"] = {"Garhwali"}, ["gbn"] = {"Mo'da"}, ["gbo"] = {"Northern Grebo"}, ["gbp"] = {"Gbaya-Bossangoa"}, ["gbq"] = {"Gbaya-Bozoum"}, ["gbr"] = {"Gbagyi"}, ["gbs"] = {"Gbesi Gbe"}, ["gbu"] = {"Gagadu"}, ["gbv"] = {"Gbanu"}, ["gbw"] = {"Gabi-Gabi"}, ["gbx"] = {"Eastern Xwla Gbe"}, ["gby"] = {"Gbari"}, ["gbz"] = {"Zoroastrian Dari"}, ["gcc"] = {"Mali"}, ["gcd"] = {"Ganggalida"}, ["gce"] = {"Galice"}, ["gcf"] = {"Guadeloupean Creole French"}, ["gcl"] = {"Grenadian Creole English"}, ["gcn"] = {"Gaina"}, ["gcr"] = {"Guianese Creole French"}, ["gct"] = {"Colonia Tovar German"}, ["gda"] = {"Gade Lohar"}, ["gdb"] = {"Pottangi Ollar Gadaba"}, ["gdc"] = {"Gugu Badhun"}, ["gdd"] = {"Gedaged"}, ["gde"] = {"Gude"}, ["gdf"] = {"Guduf-Gava"}, ["gdg"] = {"Ga'dang"}, ["gdh"] = {"Gadjerawang", "Gajirrabeng"}, ["gdi"] = {"Gundi"}, ["gdj"] = {"Gurdjar"}, ["gdk"] = {"Gadang"}, ["gdl"] = {"Dirasha"}, ["gdm"] = {"Laal"}, ["gdn"] = {"Umanakaina"}, ["gdo"] = {"Ghodoberi"}, ["gdq"] = {"Mehri"}, ["gdr"] = {"Wipi"}, ["gds"] = {"Ghandruk Sign Language"}, ["gdt"] = {"Kungardutyi"}, ["gdu"] = {"Gudu"}, ["gdx"] = {"Godwari"}, ["gea"] = {"Geruma"}, ["geb"] = {"Kire"}, ["gec"] = {"Gboloo Grebo"}, ["ged"] = {"Gade"}, ["gef"] = {"Gerai"}, ["geg"] = {"Gengle"}, ["geh"] = {"Hutterite German", "Hutterisch"}, ["gei"] = {"Gebe"}, ["gej"] = {"Gen"}, ["gek"] = {"Ywom"}, ["gel"] = {"ut-Ma'in"}, ["gem"] = {"Germanic languages"}, ["geq"] = {"Geme"}, ["ges"] = {"Geser-Gorom"}, ["gev"] = {"Eviya"}, ["gew"] = {"Gera"}, ["gex"] = {"Garre"}, ["gey"] = {"Enya"}, ["gez"] = {"Geez"}, ["gfk"] = {"Patpatar"}, ["gft"] = {"Gafat"}, ["gga"] = {"Gao"}, ["ggb"] = {"Gbii"}, ["ggd"] = {"Gugadj"}, ["gge"] = {"Gurr-goni"}, ["ggg"] = {"Gurgula"}, ["ggk"] = {"Kungarakany"}, ["ggl"] = {"Ganglau"}, ["ggt"] = {"Gitua"}, ["ggu"] = {"Gagu", "Gban"}, ["ggw"] = {"Gogodala"}, ["gha"] = {"Ghadamès"}, ["ghc"] = {"Hiberno-Scottish Gaelic"}, ["ghe"] = {"Southern Ghale"}, ["ghh"] = {"Northern Ghale"}, ["ghk"] = {"Geko Karen"}, ["ghl"] = {"Ghulfan"}, ["ghn"] = {"Ghanongga"}, ["gho"] = {"Ghomara"}, ["ghr"] = {"Ghera"}, ["ghs"] = {"Guhu-Samane"}, ["ght"] = {"Kuke", "Kutang Ghale"}, ["gia"] = {"Kija"}, ["gib"] = {"Gibanawa"}, ["gic"] = {"Gail"}, ["gid"] = {"Gidar"}, ["gie"] = {"Gaɓogbo", "Guébie"}, ["gig"] = {"Goaria"}, ["gih"] = {"Githabul"}, ["gii"] = {"Girirra"}, ["gil"] = {"Gilbertese"}, ["gim"] = {"Gimi (Eastern Highlands)"}, ["gin"] = {"Hinukh"}, ["gip"] = {"Gimi (West New Britain)"}, ["giq"] = {"Green Gelao"}, ["gir"] = {"Red Gelao"}, ["gis"] = {"North Giziga"}, ["git"] = {"Gitxsan"}, ["giu"] = {"Mulao"}, ["giw"] = {"White Gelao"}, ["gix"] = {"Gilima"}, ["giy"] = {"Giyug"}, ["giz"] = {"South Giziga"}, ["gjk"] = {"Kachi Koli"}, ["gjm"] = {"Gunditjmara"}, ["gjn"] = {"Gonja"}, ["gjr"] = {"Gurindji Kriol"}, ["gju"] = {"Gujari"}, ["gka"] = {"Guya"}, ["gkd"] = {"Magɨ (Madang Province)"}, ["gke"] = {"Ndai"}, ["gkn"] = {"Gokana"}, ["gko"] = {"Kok-Nar"}, ["gkp"] = {"Guinea Kpelle"}, ["gku"] = {"ǂUngkue"}, ["glb"] = {"Belning"}, ["glc"] = {"Bon Gula"}, ["gld"] = {"Nanai"}, ["glh"] = {"Northwest Pashai", "Northwest Pashayi"}, ["glj"] = {"Gula Iro"}, ["glk"] = {"Gilaki"}, ["gll"] = {"Garlali"}, ["glo"] = {"Galambu"}, ["glr"] = {"Glaro-Twabo"}, ["glu"] = {"Gula (Chad)"}, ["glw"] = {"Glavda"}, ["gly"] = {"Gule"}, ["gma"] = {"Gambera"}, ["gmb"] = {"Gula'alaa"}, ["gmd"] = {"Mághdì"}, ["gme"] = {"East Germanic languages"}, ["gmg"] = {"Magɨyi"}, ["gmh"] = {"Middle High German (ca. 1050-1500)"}, ["gml"] = {"Middle Low German"}, ["gmm"] = {"Gbaya-Mbodomo"}, ["gmn"] = {"Gimnime"}, ["gmq"] = {"North Germanic languages"}, ["gmr"] = {"Mirning", "Mirniny"}, ["gmu"] = {"Gumalu"}, ["gmv"] = {"Gamo"}, ["gmw"] = {"West Germanic languages"}, ["gmx"] = {"Magoma"}, ["gmy"] = {"Mycenaean Greek"}, ["gmz"] = {"Mgbolizhia"}, ["gna"] = {"Kaansa"}, ["gnb"] = {"Gangte"}, ["gnc"] = {"Guanche"}, ["gnd"] = {"Zulgo-Gemzek"}, ["gne"] = {"Ganang"}, ["gng"] = {"Ngangam"}, ["gnh"] = {"Lere"}, ["gni"] = {"Gooniyandi"}, ["gnj"] = {"Ngen"}, ["gnk"] = {"ǁGana"}, ["gnl"] = {"Gangulu"}, ["gnm"] = {"Ginuman"}, ["gnn"] = {"Gumatj"}, ["gno"] = {"Northern Gondi"}, ["gnq"] = {"Gana"}, ["gnr"] = {"Gureng Gureng"}, ["gnt"] = {"Guntai"}, ["gnu"] = {"Gnau"}, ["gnw"] = {"Western Bolivian Guaraní"}, ["gnz"] = {"Ganzi"}, ["goa"] = {"Guro"}, ["gob"] = {"Playero"}, ["goc"] = {"Gorakor"}, ["god"] = {"Godié"}, ["goe"] = {"Gongduk"}, ["gof"] = {"Gofa"}, ["gog"] = {"Gogo"}, ["goh"] = {"Old High German (ca. 750-1050)"}, ["goi"] = {"Gobasi"}, ["goj"] = {"Gowlan"}, ["gok"] = {"Gowli"}, ["gol"] = {"Gola"}, ["gom"] = {"Goan Konkani"}, ["gon"] = {"Gondi"}, ["goo"] = {"Gone Dau"}, ["gop"] = {"Yeretuar"}, ["goq"] = {"Gorap"}, ["gor"] = {"Gorontalo"}, ["gos"] = {"Gronings"}, ["got"] = {"Gothic"}, ["gou"] = {"Gavar"}, ["gov"] = {"Goo"}, ["gow"] = {"Gorowa"}, ["gox"] = {"Gobu"}, ["goy"] = {"Goundo"}, ["goz"] = {"Gozarkhani"}, ["gpa"] = {"Gupa-Abawa"}, ["gpe"] = {"Ghanaian Pidgin English"}, ["gpn"] = {"Taiap"}, ["gqa"] = {"Ga'anda"}, ["gqi"] = {"Guiqiong"}, ["gqn"] = {"Guana (Brazil)"}, ["gqr"] = {"Gor"}, ["gqu"] = {"Qau"}, ["gra"] = {"Rajput Garasia"}, ["grb"] = {"Grebo"}, ["grc"] = {"Ancient Greek (to 1453)"}, ["grd"] = {"Guruntum-Mbaaru"}, ["grg"] = {"Madi"}, ["grh"] = {"Gbiri-Niragu"}, ["gri"] = {"Ghari"}, ["grj"] = {"Southern Grebo"}, ["grk"] = {"Greek languages"}, ["grm"] = {"Kota Marudu Talantang"}, ["gro"] = {"Groma"}, ["grq"] = {"Gorovu"}, ["grr"] = {"Taznatit"}, ["grs"] = {"Gresi"}, ["grt"] = {"Garo"}, ["gru"] = {"Kistane"}, ["grv"] = {"Central Grebo"}, ["grw"] = {"Gweda"}, ["grx"] = {"Guriaso"}, ["gry"] = {"Barclayville Grebo"}, ["grz"] = {"Guramalum"}, ["gse"] = {"Ghanaian Sign Language"}, ["gsg"] = {"German Sign Language"}, ["gsl"] = {"Gusilay"}, ["gsm"] = {"Guatemalan Sign Language"}, ["gsn"] = {"Nema", "Gusan"}, ["gso"] = {"Southwest Gbaya"}, ["gsp"] = {"Wasembo"}, ["gss"] = {"Greek Sign Language"}, ["gsw"] = {"Swiss German", "Alemannic", "Alsatian"}, ["gta"] = {"Guató"}, ["gtu"] = {"Aghu-Tharnggala"}, ["gua"] = {"Shiki"}, ["gub"] = {"Guajajára"}, ["guc"] = {"Wayuu"}, ["gud"] = {"Yocoboué Dida"}, ["gue"] = {"Gurindji"}, ["guf"] = {"Gupapuyngu"}, ["gug"] = {"Paraguayan Guaraní"}, ["guh"] = {"Guahibo"}, ["gui"] = {"Eastern Bolivian Guaraní"}, ["guk"] = {"Gumuz"}, ["gul"] = {"Sea Island Creole English"}, ["gum"] = {"Guambiano"}, ["gun"] = {"Mbyá Guaraní"}, ["guo"] = {"Guayabero"}, ["gup"] = {"Gunwinggu"}, ["guq"] = {"Aché"}, ["gur"] = {"Farefare"}, ["gus"] = {"Guinean Sign Language"}, ["gut"] = {"Maléku Jaíka"}, ["guu"] = {"Yanomamö"}, ["guw"] = {"Gun"}, ["gux"] = {"Gourmanchéma"}, ["guz"] = {"Gusii", "Ekegusii"}, ["gva"] = {"Guana (Paraguay)"}, ["gvc"] = {"Guanano"}, ["gve"] = {"Duwet"}, ["gvf"] = {"Golin"}, ["gvj"] = {"Guajá"}, ["gvl"] = {"Gulay"}, ["gvm"] = {"Gurmana"}, ["gvn"] = {"Kuku-Yalanji"}, ["gvo"] = {"Gavião Do Jiparaná"}, ["gvp"] = {"Pará Gavião"}, ["gvr"] = {"Gurung"}, ["gvs"] = {"Gumawana"}, ["gvy"] = {"Guyani"}, ["gwa"] = {"Mbato"}, ["gwb"] = {"Gwa"}, ["gwc"] = {"Gawri", "Kalami"}, ["gwd"] = {"Gawwada"}, ["gwe"] = {"Gweno"}, ["gwf"] = {"Gowro"}, ["gwg"] = {"Moo"}, ["gwi"] = {"Gwichʼin"}, ["gwj"] = {"ǀGwi"}, ["gwm"] = {"Awngthim"}, ["gwn"] = {"Gwandara"}, ["gwr"] = {"Gwere"}, ["gwt"] = {"Gawar-Bati"}, ["gwu"] = {"Guwamu"}, ["gww"] = {"Kwini"}, ["gwx"] = {"Gua"}, ["gxx"] = {"Wè Southern"}, ["gya"] = {"Northwest Gbaya"}, ["gyb"] = {"Garus"}, ["gyd"] = {"Kayardild"}, ["gye"] = {"Gyem"}, ["gyf"] = {"Gungabula"}, ["gyg"] = {"Gbayi"}, ["gyi"] = {"Gyele"}, ["gyl"] = {"Gayil"}, ["gym"] = {"Ngäbere"}, ["gyn"] = {"Guyanese Creole English"}, ["gyo"] = {"Gyalsumdo"}, ["gyr"] = {"Guarayu"}, ["gyy"] = {"Gunya"}, ["gyz"] = {"Geji", "Gyaazi"}, ["gza"] = {"Ganza"}, ["gzi"] = {"Gazi"}, ["gzn"] = {"Gane"}, ["haa"] = {"Han"}, ["hab"] = {"Hanoi Sign Language"}, ["hac"] = {"Gurani"}, ["had"] = {"Hatam"}, ["hae"] = {"Eastern Oromo"}, ["haf"] = {"Haiphong Sign Language"}, ["hag"] = {"Hanga"}, ["hah"] = {"Hahon"}, ["hai"] = {"Haida"}, ["haj"] = {"Hajong"}, ["hak"] = {"Hakka Chinese"}, ["hal"] = {"Halang"}, ["ham"] = {"Hewa"}, ["han"] = {"Hangaza"}, ["hao"] = {"Hakö"}, ["hap"] = {"Hupla"}, ["haq"] = {"Ha"}, ["har"] = {"Harari"}, ["has"] = {"Haisla"}, ["hav"] = {"Havu"}, ["haw"] = {"Hawaiian"}, ["hax"] = {"Southern Haida"}, ["hay"] = {"Haya"}, ["haz"] = {"Hazaragi"}, ["hba"] = {"Hamba"}, ["hbb"] = {"Huba"}, ["hbn"] = {"Heiban"}, ["hbo"] = {"Ancient Hebrew"}, ["hbu"] = {"Habu"}, ["hca"] = {"Andaman Creole Hindi"}, ["hch"] = {"Huichol"}, ["hdn"] = {"Northern Haida"}, ["hds"] = {"Honduras Sign Language"}, ["hdy"] = {"Hadiyya"}, ["hea"] = {"Northern Qiandong Miao"}, ["hed"] = {"Herdé"}, ["heg"] = {"Helong"}, ["heh"] = {"Hehe"}, ["hei"] = {"Heiltsuk"}, ["hem"] = {"Hemba"}, ["hgm"] = {"Haiǁom"}, ["hgw"] = {"Haigwai"}, ["hhi"] = {"Hoia Hoia"}, ["hhr"] = {"Kerak"}, ["hhy"] = {"Hoyahoya"}, ["hia"] = {"Lamang"}, ["hib"] = {"Hibito"}, ["hid"] = {"Hidatsa"}, ["hif"] = {"Fiji Hindi"}, ["hig"] = {"Kamwe"}, ["hih"] = {"Pamosu"}, ["hii"] = {"Hinduri"}, ["hij"] = {"Hijuk"}, ["hik"] = {"Seit-Kaitetu"}, ["hil"] = {"Hiligaynon"}, ["him"] = {"Himachali languages", "Western Pahari languages"}, ["hio"] = {"Tsoa"}, ["hir"] = {"Himarimã"}, ["hit"] = {"Hittite"}, ["hiw"] = {"Hiw"}, ["hix"] = {"Hixkaryána"}, ["hji"] = {"Haji"}, ["hka"] = {"Kahe"}, ["hke"] = {"Hunde"}, ["hkh"] = {"Khah", "Poguli"}, ["hkk"] = {"Hunjara-Kaina Ke"}, ["hkn"] = {"Mel-Khaonh"}, ["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"}, ["hla"] = {"Halia"}, ["hlb"] = {"Halbi"}, ["hld"] = {"Halang Doan"}, ["hle"] = {"Hlersu"}, ["hlt"] = {"Matu Chin"}, ["hlu"] = {"Hieroglyphic Luwian"}, ["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"}, ["hmb"] = {"Humburi Senni Songhay"}, ["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"}, ["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"}, ["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"}, ["hmf"] = {"Hmong Don"}, ["hmg"] = {"Southwestern Guiyang Hmong"}, ["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"}, ["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"}, ["hmj"] = {"Ge", "Gejia"}, ["hmk"] = {"Maek"}, ["hml"] = {"Luopohe Hmong", "Luopohe Miao"}, ["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"}, ["hmn"] = {"Hmong", "Mong"}, ["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"}, ["hmq"] = {"Eastern Qiandong Miao"}, ["hmr"] = {"Hmar"}, ["hms"] = {"Southern Qiandong Miao"}, ["hmt"] = {"Hamtai"}, ["hmu"] = {"Hamap"}, ["hmv"] = {"Hmong Dô"}, ["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"}, ["hmx"] = {"Hmong-Mien languages"}, ["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"}, ["hmz"] = {"Hmong Shua", "Sinicized Miao"}, ["hna"] = {"Mina (Cameroon)"}, ["hnd"] = {"Southern Hindko"}, ["hne"] = {"Chhattisgarhi"}, ["hng"] = {"Hungu"}, ["hnh"] = {"ǁAni"}, ["hni"] = {"Hani"}, ["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"}, ["hnn"] = {"Hanunoo"}, ["hno"] = {"Northern Hindko"}, ["hns"] = {"Caribbean Hindustani"}, ["hnu"] = {"Hung"}, ["hoa"] = {"Hoava"}, ["hob"] = {"Mari (Madang Province)"}, ["hoc"] = {"Ho"}, ["hod"] = {"Holma"}, ["hoe"] = {"Horom"}, ["hoh"] = {"Hobyót"}, ["hoi"] = {"Holikachuk"}, ["hoj"] = {"Hadothi", "Haroti"}, ["hok"] = {"Hokan languages"}, ["hol"] = {"Holu"}, ["hom"] = {"Homa"}, ["hoo"] = {"Holoholo"}, ["hop"] = {"Hopi"}, ["hor"] = {"Horo"}, ["hos"] = {"Ho Chi Minh City Sign Language"}, ["hot"] = {"Hote", "Malê"}, ["hov"] = {"Hovongan"}, ["how"] = {"Honi"}, ["hoy"] = {"Holiya"}, ["hoz"] = {"Hozo"}, ["hpo"] = {"Hpon"}, ["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"}, ["hra"] = {"Hrangkhol"}, ["hrc"] = {"Niwer Mil"}, ["hre"] = {"Hre"}, ["hrk"] = {"Haruku"}, ["hrm"] = {"Horned Miao"}, ["hro"] = {"Haroi"}, ["hrp"] = {"Nhirrpi"}, ["hrt"] = {"Hértevin"}, ["hru"] = {"Hruso"}, ["hrw"] = {"Warwar Feni"}, ["hrx"] = {"Hunsrik"}, ["hrz"] = {"Harzani"}, ["hsb"] = {"Upper Sorbian"}, ["hsh"] = {"Hungarian Sign Language"}, ["hsl"] = {"Hausa Sign Language"}, ["hsn"] = {"Xiang Chinese"}, ["hss"] = {"Harsusi"}, ["hti"] = {"Hoti"}, ["hto"] = {"Minica Huitoto"}, ["hts"] = {"Hadza"}, ["htu"] = {"Hitu"}, ["htx"] = {"Middle Hittite"}, ["hub"] = {"Huambisa"}, ["huc"] = {"ǂHua", "ǂʼAmkhoe"}, ["hud"] = {"Huaulu"}, ["hue"] = {"San Francisco Del Mar Huave"}, ["huf"] = {"Humene"}, ["hug"] = {"Huachipaeri"}, ["huh"] = {"Huilliche"}, ["hui"] = {"Huli"}, ["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"}, ["huk"] = {"Hulung"}, ["hul"] = {"Hula"}, ["hum"] = {"Hungana"}, ["huo"] = {"Hu"}, ["hup"] = {"Hupa"}, ["huq"] = {"Tsat"}, ["hur"] = {"Halkomelem"}, ["hus"] = {"Huastec"}, ["hut"] = {"Humla"}, ["huu"] = {"Murui Huitoto"}, ["huv"] = {"San Mateo Del Mar Huave"}, ["huw"] = {"Hukumina"}, ["hux"] = {"Nüpode Huitoto"}, ["huy"] = {"Hulaulá"}, ["huz"] = {"Hunzib"}, ["hvc"] = {"Haitian Vodoun Culture Language"}, ["hve"] = {"San Dionisio Del Mar Huave"}, ["hvk"] = {"Haveke"}, ["hvn"] = {"Sabu"}, ["hvv"] = {"Santa María Del Mar Huave"}, ["hwa"] = {"Wané"}, ["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"}, ["hwo"] = {"Hwana"}, ["hya"] = {"Hya"}, ["hyw"] = {"Western Armenian"}, ["hyx"] = {"Armenian (family)"}, ["iai"] = {"Iaai"}, ["ian"] = {"Iatmul"}, ["iar"] = {"Purari"}, ["iba"] = {"Iban"}, ["ibb"] = {"Ibibio"}, ["ibd"] = {"Iwaidja"}, ["ibe"] = {"Akpes"}, ["ibg"] = {"Ibanag"}, ["ibh"] = {"Bih"}, ["ibl"] = {"Ibaloi"}, ["ibm"] = {"Agoi"}, ["ibn"] = {"Ibino"}, ["ibr"] = {"Ibuoro"}, ["ibu"] = {"Ibu"}, ["iby"] = {"Ibani"}, ["ica"] = {"Ede Ica"}, ["ich"] = {"Etkywan"}, ["icl"] = {"Icelandic Sign Language"}, ["icr"] = {"Islander Creole English"}, ["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"}, ["idb"] = {"Indo-Portuguese"}, ["idc"] = {"Idon", "Ajiya"}, ["idd"] = {"Ede Idaca"}, ["ide"] = {"Idere"}, ["idi"] = {"Idi"}, ["idr"] = {"Indri"}, ["ids"] = {"Idesa"}, ["idt"] = {"Idaté"}, ["idu"] = {"Idoma"}, ["ifa"] = {"Amganad Ifugao"}, ["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"}, ["ife"] = {"Ifè"}, ["iff"] = {"Ifo"}, ["ifk"] = {"Tuwali Ifugao"}, ["ifm"] = {"Teke-Fuumu"}, ["ifu"] = {"Mayoyao Ifugao"}, ["ify"] = {"Keley-I Kallahan"}, ["igb"] = {"Ebira"}, ["ige"] = {"Igede"}, ["igg"] = {"Igana"}, ["igl"] = {"Igala"}, ["igm"] = {"Kanggape"}, ["ign"] = {"Ignaciano"}, ["igo"] = {"Isebe"}, ["igs"] = {"Interglossa"}, ["igw"] = {"Igwe"}, ["ihb"] = {"Iha Based Pidgin"}, ["ihi"] = {"Ihievbe"}, ["ihp"] = {"Iha"}, ["ihw"] = {"Bidhawal"}, ["iin"] = {"Thiin"}, ["iir"] = {"Indo-Iranian languages"}, ["ijc"] = {"Izon"}, ["ije"] = {"Biseni"}, ["ijj"] = {"Ede Ije"}, ["ijn"] = {"Kalabari"}, ["ijo"] = {"Ijo languages"}, ["ijs"] = {"Southeast Ijo"}, ["ike"] = {"Eastern Canadian Inuktitut"}, ["ikh"] = {"Ikhin-Arokho"}, ["iki"] = {"Iko"}, ["ikk"] = {"Ika"}, ["ikl"] = {"Ikulu"}, ["iko"] = {"Olulumo-Ikom"}, ["ikp"] = {"Ikpeshi"}, ["ikr"] = {"Ikaranggal"}, ["iks"] = {"Inuit Sign Language"}, ["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"}, ["ikv"] = {"Iku-Gora-Ankwa"}, ["ikw"] = {"Ikwere"}, ["ikx"] = {"Ik"}, ["ikz"] = {"Ikizu"}, ["ila"] = {"Ile Ape"}, ["ilb"] = {"Ila"}, ["ilg"] = {"Garig-Ilgar"}, ["ili"] = {"Ili Turki"}, ["ilk"] = {"Ilongot"}, ["ilm"] = {"Iranun (Malaysia)"}, ["ilo"] = {"Iloko"}, ["ilp"] = {"Iranun (Philippines)"}, ["ils"] = {"International Sign"}, ["ilu"] = {"Ili'uun"}, ["ilv"] = {"Ilue"}, ["ima"] = {"Mala Malasar"}, ["imi"] = {"Anamgura"}, ["iml"] = {"Miluk"}, ["imn"] = {"Imonda"}, ["imo"] = {"Imbongu"}, ["imr"] = {"Imroing"}, ["ims"] = {"Marsian"}, ["imt"] = {"Imotong"}, ["imy"] = {"Milyan"}, ["inb"] = {"Inga"}, ["inc"] = {"Indic languages"}, ["ine"] = {"Indo-European languages"}, ["ing"] = {"Degexit'an"}, ["inh"] = {"Ingush"}, ["inj"] = {"Jungle Inga"}, ["inl"] = {"Indonesian Sign Language"}, ["inm"] = {"Minaean"}, ["inn"] = {"Isinai"}, ["ino"] = {"Inoke-Yate"}, ["inp"] = {"Iñapari"}, ["ins"] = {"Indian Sign Language"}, ["int"] = {"Intha"}, ["inz"] = {"Ineseño"}, ["ior"] = {"Inor"}, ["iou"] = {"Tuma-Irumu"}, ["iow"] = {"Iowa-Oto"}, ["ipi"] = {"Ipili"}, ["ipo"] = {"Ipiko"}, ["iqu"] = {"Iquito"}, ["iqw"] = {"Ikwo"}, ["ira"] = {"Iranian languages"}, ["ire"] = {"Iresim"}, ["irh"] = {"Irarutu"}, ["iri"] = {"Rigwe", "Irigwe"}, ["irk"] = {"Iraqw"}, ["irn"] = {"Irántxe"}, ["iro"] = {"Iroquoian languages"}, ["irr"] = {"Ir"}, ["iru"] = {"Irula"}, ["irx"] = {"Kamberau"}, ["iry"] = {"Iraya"}, ["isa"] = {"Isabi"}, ["isc"] = {"Isconahua"}, ["isd"] = {"Isnag"}, ["ise"] = {"Italian Sign Language"}, ["isg"] = {"Irish Sign Language"}, ["ish"] = {"Esan"}, ["isi"] = {"Nkem-Nkum"}, ["isk"] = {"Ishkashimi"}, ["ism"] = {"Masimasi"}, ["isn"] = {"Isanzu"}, ["iso"] = {"Isoko"}, ["isr"] = {"Israeli Sign Language"}, ["ist"] = {"Istriot"}, ["isu"] = {"Isu (Menchum Division)"}, ["itb"] = {"Binongan Itneg"}, ["itc"] = {"Italic languages"}, ["itd"] = {"Southern Tidung"}, ["ite"] = {"Itene"}, ["iti"] = {"Inlaod Itneg"}, ["itk"] = {"Judeo-Italian"}, ["itl"] = {"Itelmen"}, ["itm"] = {"Itu Mbon Uzo"}, ["ito"] = {"Itonama"}, ["itr"] = {"Iteri"}, ["its"] = {"Isekiri"}, ["itt"] = {"Maeng Itneg"}, ["itv"] = {"Itawit"}, ["itw"] = {"Ito"}, ["itx"] = {"Itik"}, ["ity"] = {"Moyadan Itneg"}, ["itz"] = {"Itzá"}, ["ium"] = {"Iu Mien"}, ["ivb"] = {"Ibatan"}, ["ivv"] = {"Ivatan"}, ["iwk"] = {"I-Wak"}, ["iwm"] = {"Iwam"}, ["iwo"] = {"Iwur"}, ["iws"] = {"Sepik Iwam"}, ["ixc"] = {"Ixcatec"}, ["ixl"] = {"Ixil"}, ["iya"] = {"Iyayu"}, ["iyo"] = {"Mesaka"}, ["iyx"] = {"Yaka (Congo)"}, ["izh"] = {"Ingrian"}, ["izm"] = {"Kizamani"}, ["izr"] = {"Izere"}, ["izz"] = {"Izii"}, ["jaa"] = {"Jamamadí"}, ["jab"] = {"Hyam"}, ["jac"] = {"Popti'", "Jakalteko"}, ["jad"] = {"Jahanka"}, ["jae"] = {"Yabem"}, ["jaf"] = {"Jara"}, ["jah"] = {"Jah Hut"}, ["jaj"] = {"Zazao"}, ["jak"] = {"Jakun"}, ["jal"] = {"Yalahatan"}, ["jam"] = {"Jamaican Creole English"}, ["jan"] = {"Jandai"}, ["jao"] = {"Yanyuwa"}, ["jaq"] = {"Yaqay"}, ["jas"] = {"New Caledonian Javanese"}, ["jat"] = {"Jakati"}, ["jau"] = {"Yaur"}, ["jax"] = {"Jambi Malay"}, ["jay"] = {"Yan-nhangu", "Nhangu"}, ["jaz"] = {"Jawe"}, ["jbe"] = {"Judeo-Berber"}, ["jbi"] = {"Badjiri"}, ["jbj"] = {"Arandai"}, ["jbk"] = {"Barikewa"}, ["jbm"] = {"Bijim"}, ["jbn"] = {"Nafusi"}, ["jbo"] = {"Lojban"}, ["jbr"] = {"Jofotek-Bromnya"}, ["jbt"] = {"Jabutí"}, ["jbu"] = {"Jukun Takum"}, ["jbw"] = {"Yawijibaya"}, ["jcs"] = {"Jamaican Country Sign Language"}, ["jct"] = {"Krymchak"}, ["jda"] = {"Jad"}, ["jdg"] = {"Jadgali"}, ["jdt"] = {"Judeo-Tat"}, ["jeb"] = {"Jebero"}, ["jee"] = {"Jerung"}, ["jeh"] = {"Jeh"}, ["jei"] = {"Yei"}, ["jek"] = {"Jeri Kuo"}, ["jel"] = {"Yelmek"}, ["jen"] = {"Dza"}, ["jer"] = {"Jere"}, ["jet"] = {"Manem"}, ["jeu"] = {"Jonkor Bourmataguil"}, ["jgb"] = {"Ngbee"}, ["jge"] = {"Judeo-Georgian"}, ["jgk"] = {"Gwak"}, ["jgo"] = {"Ngomba"}, ["jhi"] = {"Jehai"}, ["jhs"] = {"Jhankot Sign Language"}, ["jia"] = {"Jina"}, ["jib"] = {"Jibu"}, ["jic"] = {"Tol"}, ["jid"] = {"Bu (Kaduna State)"}, ["jie"] = {"Jilbe"}, ["jig"] = {"Jingulu", "Djingili"}, ["jih"] = {"sTodsde", "Shangzhai"}, ["jii"] = {"Jiiddu"}, ["jil"] = {"Jilim"}, ["jim"] = {"Jimi (Cameroon)"}, ["jio"] = {"Jiamao"}, ["jiq"] = {"Guanyinqiao", "Lavrung"}, ["jit"] = {"Jita"}, ["jiu"] = {"Youle Jinuo"}, ["jiv"] = {"Shuar"}, ["jiy"] = {"Buyuan Jinuo"}, ["jje"] = {"Jejueo"}, ["jjr"] = {"Bankal"}, ["jka"] = {"Kaera"}, ["jkm"] = {"Mobwa Karen"}, ["jko"] = {"Kubo"}, ["jkp"] = {"Paku Karen"}, ["jkr"] = {"Koro (India)"}, ["jks"] = {"Amami Koniya Sign Language"}, ["jku"] = {"Labir"}, ["jle"] = {"Ngile"}, ["jls"] = {"Jamaican Sign Language"}, ["jma"] = {"Dima"}, ["jmb"] = {"Zumbun"}, ["jmc"] = {"Machame"}, ["jmd"] = {"Yamdena"}, ["jmi"] = {"Jimi (Nigeria)"}, ["jml"] = {"Jumli"}, ["jmn"] = {"Makuri Naga"}, ["jmr"] = {"Kamara"}, ["jms"] = {"Mashi (Nigeria)"}, ["jmw"] = {"Mouwase"}, ["jmx"] = {"Western Juxtlahuaca Mixtec"}, ["jna"] = {"Jangshung"}, ["jnd"] = {"Jandavra"}, ["jng"] = {"Yangman"}, ["jni"] = {"Janji"}, ["jnj"] = {"Yemsa"}, ["jnl"] = {"Rawat"}, ["jns"] = {"Jaunsari"}, ["job"] = {"Joba"}, ["jod"] = {"Wojenaka"}, ["jog"] = {"Jogi"}, ["jor"] = {"Jorá"}, ["jos"] = {"Jordanian Sign Language"}, ["jow"] = {"Jowulu"}, ["jpa"] = {"Jewish Palestinian Aramaic"}, ["jpr"] = {"Judeo-Persian"}, ["jpx"] = {"Japanese (family)"}, ["jqr"] = {"Jaqaru"}, ["jra"] = {"Jarai"}, ["jrb"] = {"Judeo-Arabic"}, ["jrr"] = {"Jiru"}, ["jrt"] = {"Jakattoe"}, ["jru"] = {"Japrería"}, ["jsl"] = {"Japanese Sign Language"}, ["jua"] = {"Júma"}, ["jub"] = {"Wannu"}, ["juc"] = {"Jurchen"}, ["jud"] = {"Worodougou"}, ["juh"] = {"Hõne"}, ["jui"] = {"Ngadjuri"}, ["juk"] = {"Wapan"}, ["jul"] = {"Jirel"}, ["jum"] = {"Jumjum"}, ["jun"] = {"Juang"}, ["juo"] = {"Jiba"}, ["jup"] = {"Hupdë"}, ["jur"] = {"Jurúna"}, ["jus"] = {"Jumla Sign Language"}, ["jut"] = {"Jutish"}, ["juu"] = {"Ju"}, ["juw"] = {"Wãpha"}, ["juy"] = {"Juray"}, ["jvd"] = {"Javindo"}, ["jvn"] = {"Caribbean Javanese"}, ["jwi"] = {"Jwira-Pepesa"}, ["jya"] = {"Jiarong"}, ["jye"] = {"Judeo-Yemeni Arabic"}, ["jyy"] = {"Jaya"}, ["kaa"] = {"Kara-Kalpak", "Karakalpak"}, ["kab"] = {"Kabyle"}, ["kac"] = {"Kachin", "Jingpho"}, ["kad"] = {"Adara"}, ["kae"] = {"Ketangalan"}, ["kaf"] = {"Katso"}, ["kag"] = {"Kajaman"}, ["kah"] = {"Kara (Central African Republic)"}, ["kai"] = {"Karekare"}, ["kaj"] = {"Jju"}, ["kak"] = {"Kalanguya", "Kayapa Kallahan"}, ["kam"] = {"Kamba (Kenya)"}, ["kao"] = {"Xaasongaxango"}, ["kap"] = {"Bezhta"}, ["kaq"] = {"Capanahua"}, ["kar"] = {"Karen languages"}, ["kav"] = {"Katukína"}, ["kaw"] = {"Kawi"}, ["kax"] = {"Kao"}, ["kay"] = {"Kamayurá"}, ["kba"] = {"Kalarko"}, ["kbb"] = {"Kaxuiâna"}, ["kbc"] = {"Kadiwéu"}, ["kbd"] = {"Kabardian"}, ["kbe"] = {"Kanju"}, ["kbg"] = {"Khamba"}, ["kbh"] = {"Camsá"}, ["kbi"] = {"Kaptiau"}, ["kbj"] = {"Kari"}, ["kbk"] = {"Grass Koiari"}, ["kbl"] = {"Kanembu"}, ["kbm"] = {"Iwal"}, ["kbn"] = {"Kare (Central African Republic)"}, ["kbo"] = {"Keliko"}, ["kbp"] = {"Kabiyè"}, ["kbq"] = {"Kamano"}, ["kbr"] = {"Kafa"}, ["kbs"] = {"Kande"}, ["kbt"] = {"Abadi"}, ["kbu"] = {"Kabutra"}, ["kbv"] = {"Dera (Indonesia)"}, ["kbw"] = {"Kaiep"}, ["kbx"] = {"Ap Ma"}, ["kby"] = {"Manga Kanuri"}, ["kbz"] = {"Duhwa"}, ["kca"] = {"Khanty"}, ["kcb"] = {"Kawacha"}, ["kcc"] = {"Lubila"}, ["kcd"] = {"Ngkâlmpw Kanum"}, ["kce"] = {"Kaivi"}, ["kcf"] = {"Ukaan"}, ["kcg"] = {"Tyap"}, ["kch"] = {"Vono"}, ["kci"] = {"Kamantan"}, ["kcj"] = {"Kobiana"}, ["kck"] = {"Kalanga"}, ["kcl"] = {"Kela (Papua New Guinea)", "Kala"}, ["kcm"] = {"Gula (Central African Republic)"}, ["kcn"] = {"Nubi"}, ["kco"] = {"Kinalakna"}, ["kcp"] = {"Kanga"}, ["kcq"] = {"Kamo"}, ["kcr"] = {"Katla"}, ["kcs"] = {"Koenoem"}, ["kct"] = {"Kaian"}, ["kcu"] = {"Kami (Tanzania)"}, ["kcv"] = {"Kete"}, ["kcw"] = {"Kabwari"}, ["kcx"] = {"Kachama-Ganjule"}, ["kcy"] = {"Korandje"}, ["kcz"] = {"Konongo"}, ["kda"] = {"Worimi"}, ["kdc"] = {"Kutu"}, ["kdd"] = {"Yankunytjatjara"}, ["kde"] = {"Makonde"}, ["kdf"] = {"Mamusi"}, ["kdg"] = {"Seba"}, ["kdh"] = {"Tem"}, ["kdi"] = {"Kumam"}, ["kdj"] = {"Karamojong"}, ["kdk"] = {"Numèè", "Kwényi"}, ["kdl"] = {"Tsikimba"}, ["kdm"] = {"Kagoma"}, ["kdn"] = {"Kunda"}, ["kdo"] = {"Kordofanian languages"}, ["kdp"] = {"Kaningdon-Nindem"}, ["kdq"] = {"Koch"}, ["kdr"] = {"Karaim"}, ["kdt"] = {"Kuy"}, ["kdu"] = {"Kadaru"}, ["kdw"] = {"Koneraw"}, ["kdx"] = {"Kam"}, ["kdy"] = {"Keder", "Keijar"}, ["kdz"] = {"Kwaja"}, ["kea"] = {"Kabuverdianu"}, ["keb"] = {"Kélé"}, ["kec"] = {"Keiga"}, ["ked"] = {"Kerewe"}, ["kee"] = {"Eastern Keres"}, ["kef"] = {"Kpessi"}, ["keg"] = {"Tese"}, ["keh"] = {"Keak"}, ["kei"] = {"Kei"}, ["kej"] = {"Kadar"}, ["kek"] = {"Kekchí"}, ["kel"] = {"Kela (Democratic Republic of Congo)"}, ["kem"] = {"Kemak"}, ["ken"] = {"Kenyang"}, ["keo"] = {"Kakwa"}, ["kep"] = {"Kaikadi"}, ["keq"] = {"Kamar"}, ["ker"] = {"Kera"}, ["kes"] = {"Kugbo"}, ["ket"] = {"Ket"}, ["keu"] = {"Akebu"}, ["kev"] = {"Kanikkaran"}, ["kew"] = {"West Kewa"}, ["kex"] = {"Kukna"}, ["key"] = {"Kupia"}, ["kez"] = {"Kukele"}, ["kfa"] = {"Kodava"}, ["kfb"] = {"Northwestern Kolami"}, ["kfc"] = {"Konda-Dora"}, ["kfd"] = {"Korra Koraga"}, ["kfe"] = {"Kota (India)"}, ["kff"] = {"Koya"}, ["kfg"] = {"Kudiya"}, ["kfh"] = {"Kurichiya"}, ["kfi"] = {"Kannada Kurumba"}, ["kfj"] = {"Kemiehua"}, ["kfk"] = {"Kinnauri"}, ["kfl"] = {"Kung"}, ["kfm"] = {"Khunsari"}, ["kfn"] = {"Kuk"}, ["kfo"] = {"Koro (Côte d'Ivoire)"}, ["kfp"] = {"Korwa"}, ["kfq"] = {"Korku"}, ["kfr"] = {"Kachhi", "Kutchi"}, ["kfs"] = {"Bilaspuri"}, ["kft"] = {"Kanjari"}, ["kfu"] = {"Katkari"}, ["kfv"] = {"Kurmukar"}, ["kfw"] = {"Kharam Naga"}, ["kfx"] = {"Kullu Pahari"}, ["kfy"] = {"Kumaoni"}, ["kfz"] = {"Koromfé"}, ["kga"] = {"Koyaga"}, ["kgb"] = {"Kawe"}, ["kge"] = {"Komering"}, ["kgf"] = {"Kube"}, ["kgg"] = {"Kusunda"}, ["kgi"] = {"Selangor Sign Language"}, ["kgj"] = {"Gamale Kham"}, ["kgk"] = {"Kaiwá"}, ["kgl"] = {"Kunggari"}, ["kgn"] = {"Karingani"}, ["kgo"] = {"Krongo"}, ["kgp"] = {"Kaingang"}, ["kgq"] = {"Kamoro"}, ["kgr"] = {"Abun"}, ["kgs"] = {"Kumbainggar"}, ["kgt"] = {"Somyev"}, ["kgu"] = {"Kobol"}, ["kgv"] = {"Karas"}, ["kgw"] = {"Karon Dori"}, ["kgx"] = {"Kamaru"}, ["kgy"] = {"Kyerung"}, ["kha"] = {"Khasi"}, ["khb"] = {"Lü"}, ["khc"] = {"Tukang Besi North"}, ["khd"] = {"Bädi Kanum"}, ["khe"] = {"Korowai"}, ["khf"] = {"Khuen"}, ["khg"] = {"Khams Tibetan"}, ["khh"] = {"Kehu"}, ["khi"] = {"Khoisan languages"}, ["khj"] = {"Kuturmi"}, ["khk"] = {"Halh Mongolian"}, ["khl"] = {"Lusi"}, ["khn"] = {"Khandesi"}, ["kho"] = {"Khotanese", "Sakan"}, ["khp"] = {"Kapori", "Kapauri"}, ["khq"] = {"Koyra Chiini Songhay"}, ["khr"] = {"Kharia"}, ["khs"] = {"Kasua"}, ["kht"] = {"Khamti"}, ["khu"] = {"Nkhumbi"}, ["khv"] = {"Khvarshi"}, ["khw"] = {"Khowar"}, ["khx"] = {"Kanu"}, ["khy"] = {"Kele (Democratic Republic of Congo)"}, ["khz"] = {"Keapara"}, ["kia"] = {"Kim"}, ["kib"] = {"Koalib"}, ["kic"] = {"Kickapoo"}, ["kid"] = {"Koshin"}, ["kie"] = {"Kibet"}, ["kif"] = {"Eastern Parbate Kham"}, ["kig"] = {"Kimaama", "Kimaghima"}, ["kih"] = {"Kilmeri"}, ["kii"] = {"Kitsai"}, ["kij"] = {"Kilivila"}, ["kil"] = {"Kariya"}, ["kim"] = {"Karagas"}, ["kio"] = {"Kiowa"}, ["kip"] = {"Sheshi Kham"}, ["kiq"] = {"Kosadle", "Kosare"}, ["kis"] = {"Kis"}, ["kit"] = {"Agob"}, ["kiu"] = {"Kirmanjki (individual language)"}, ["kiv"] = {"Kimbu"}, ["kiw"] = {"Northeast Kiwai"}, ["kix"] = {"Khiamniungan Naga"}, ["kiy"] = {"Kirikiri"}, ["kiz"] = {"Kisi"}, ["kja"] = {"Mlap"}, ["kjb"] = {"Q'anjob'al", "Kanjobal"}, ["kjc"] = {"Coastal Konjo"}, ["kjd"] = {"Southern Kiwai"}, ["kje"] = {"Kisar"}, ["kjg"] = {"Khmu"}, ["kjh"] = {"Khakas"}, ["kji"] = {"Zabana"}, ["kjj"] = {"Khinalugh"}, ["kjk"] = {"Highland Konjo"}, ["kjl"] = {"Western Parbate Kham"}, ["kjm"] = {"Kháng"}, ["kjn"] = {"Kunjen"}, ["kjo"] = {"Harijan Kinnauri"}, ["kjp"] = {"Pwo Eastern Karen"}, ["kjq"] = {"Western Keres"}, ["kjr"] = {"Kurudu"}, ["kjs"] = {"East Kewa"}, ["kjt"] = {"Phrae Pwo Karen"}, ["kju"] = {"Kashaya"}, ["kjv"] = {"Kaikavian Literary Language"}, ["kjx"] = {"Ramopa"}, ["kjy"] = {"Erave"}, ["kjz"] = {"Bumthangkha"}, ["kka"] = {"Kakanda"}, ["kkb"] = {"Kwerisa"}, ["kkc"] = {"Odoodee"}, ["kkd"] = {"Kinuku"}, ["kke"] = {"Kakabe"}, ["kkf"] = {"Kalaktang Monpa"}, ["kkg"] = {"Mabaka Valley Kalinga"}, ["kkh"] = {"Khün"}, ["kki"] = {"Kagulu"}, ["kkj"] = {"Kako"}, ["kkk"] = {"Kokota"}, ["kkl"] = {"Kosarek Yale"}, ["kkm"] = {"Kiong"}, ["kkn"] = {"Kon Keu"}, ["kko"] = {"Karko"}, ["kkp"] = {"Gugubera", "Koko-Bera"}, ["kkq"] = {"Kaeku"}, ["kkr"] = {"Kir-Balar"}, ["kks"] = {"Giiwo"}, ["kkt"] = {"Koi"}, ["kku"] = {"Tumi"}, ["kkv"] = {"Kangean"}, ["kkw"] = {"Teke-Kukuya"}, ["kkx"] = {"Kohin"}, ["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"}, ["kkz"] = {"Kaska"}, ["kla"] = {"Klamath-Modoc"}, ["klb"] = {"Kiliwa"}, ["klc"] = {"Kolbila"}, ["kld"] = {"Gamilaraay"}, ["kle"] = {"Kulung (Nepal)"}, ["klf"] = {"Kendeje"}, ["klg"] = {"Tagakaulo"}, ["klh"] = {"Weliki"}, ["kli"] = {"Kalumpang"}, ["klj"] = {"Khalaj"}, ["klk"] = {"Kono (Nigeria)"}, ["kll"] = {"Kagan Kalagan"}, ["klm"] = {"Migum"}, ["kln"] = {"Kalenjin"}, ["klo"] = {"Kapya"}, ["klp"] = {"Kamasa"}, ["klq"] = {"Rumu"}, ["klr"] = {"Khaling"}, ["kls"] = {"Kalasha"}, ["klt"] = {"Nukna"}, ["klu"] = {"Klao"}, ["klv"] = {"Maskelynes"}, ["klw"] = {"Tado", "Lindu"}, ["klx"] = {"Koluwawa"}, ["kly"] = {"Kalao"}, ["klz"] = {"Kabola"}, ["kma"] = {"Konni"}, ["kmb"] = {"Kimbundu"}, ["kmc"] = {"Southern Dong"}, ["kmd"] = {"Majukayang Kalinga"}, ["kme"] = {"Bakole"}, ["kmf"] = {"Kare (Papua New Guinea)"}, ["kmg"] = {"Kâte"}, ["kmh"] = {"Kalam"}, ["kmi"] = {"Kami (Nigeria)"}, ["kmj"] = {"Kumarbhag Paharia"}, ["kmk"] = {"Limos Kalinga"}, ["kml"] = {"Tanudan Kalinga"}, ["kmm"] = {"Kom (India)"}, ["kmn"] = {"Awtuw"}, ["kmo"] = {"Kwoma"}, ["kmp"] = {"Gimme"}, ["kmq"] = {"Kwama"}, ["kmr"] = {"Northern Kurdish"}, ["kms"] = {"Kamasau"}, ["kmt"] = {"Kemtuik"}, ["kmu"] = {"Kanite"}, ["kmv"] = {"Karipúna Creole French"}, ["kmw"] = {"Komo (Democratic Republic of Congo)"}, ["kmx"] = {"Waboda"}, ["kmy"] = {"Koma"}, ["kmz"] = {"Khorasani Turkish"}, ["kna"] = {"Dera (Nigeria)"}, ["knb"] = {"Lubuagan Kalinga"}, ["knc"] = {"Central Kanuri"}, ["knd"] = {"Konda"}, ["kne"] = {"Kankanaey"}, ["knf"] = {"Mankanya"}, ["kng"] = {"Koongo"}, ["kni"] = {"Kanufi"}, ["knj"] = {"Western Kanjobal"}, ["knk"] = {"Kuranko"}, ["knl"] = {"Keninjal"}, ["knm"] = {"Kanamarí"}, ["knn"] = {"Konkani (individual language)"}, ["kno"] = {"Kono (Sierra Leone)"}, ["knp"] = {"Kwanja"}, ["knq"] = {"Kintaq"}, ["knr"] = {"Kaningra"}, ["kns"] = {"Kensiu"}, ["knt"] = {"Panoan Katukína"}, ["knu"] = {"Kono (Guinea)"}, ["knv"] = {"Tabo"}, ["knw"] = {"Kung-Ekoka"}, ["knx"] = {"Kendayan", "Salako"}, ["kny"] = {"Kanyok"}, ["knz"] = {"Kalamsé"}, ["koa"] = {"Konomala"}, ["koc"] = {"Kpati"}, ["kod"] = {"Kodi"}, ["koe"] = {"Kacipo-Bale Suri"}, ["kof"] = {"Kubi"}, ["kog"] = {"Cogui", "Kogi"}, ["koh"] = {"Koyo"}, ["koi"] = {"Komi-Permyak"}, ["kok"] = {"Konkani (macrolanguage)"}, ["kol"] = {"Kol (Papua New Guinea)"}, ["koo"] = {"Konzo"}, ["kop"] = {"Waube"}, ["koq"] = {"Kota (Gabon)"}, ["kos"] = {"Kosraean"}, ["kot"] = {"Lagwan"}, ["kou"] = {"Koke"}, ["kov"] = {"Kudu-Camo"}, ["kow"] = {"Kugama"}, ["koy"] = {"Koyukon"}, ["koz"] = {"Korak"}, ["kpa"] = {"Kutto"}, ["kpb"] = {"Mullu Kurumba"}, ["kpc"] = {"Curripaco"}, ["kpd"] = {"Koba"}, ["kpe"] = {"Kpelle"}, ["kpf"] = {"Komba"}, ["kpg"] = {"Kapingamarangi"}, ["kph"] = {"Kplang"}, ["kpi"] = {"Kofei"}, ["kpj"] = {"Karajá"}, ["kpk"] = {"Kpan"}, ["kpl"] = {"Kpala"}, ["kpm"] = {"Koho"}, ["kpn"] = {"Kepkiriwát"}, ["kpo"] = {"Ikposo"}, ["kpq"] = {"Korupun-Sela"}, ["kpr"] = {"Korafe-Yegha"}, ["kps"] = {"Tehit"}, ["kpt"] = {"Karata"}, ["kpu"] = {"Kafoa"}, ["kpv"] = {"Komi-Zyrian"}, ["kpw"] = {"Kobon"}, ["kpx"] = {"Mountain Koiali"}, ["kpy"] = {"Koryak"}, ["kpz"] = {"Kupsabiny"}, ["kqa"] = {"Mum"}, ["kqb"] = {"Kovai"}, ["kqc"] = {"Doromu-Koki"}, ["kqd"] = {"Koy Sanjaq Surat"}, ["kqe"] = {"Kalagan"}, ["kqf"] = {"Kakabai"}, ["kqg"] = {"Khe"}, ["kqh"] = {"Kisankasa"}, ["kqi"] = {"Koitabu"}, ["kqj"] = {"Koromira"}, ["kqk"] = {"Kotafon Gbe"}, ["kql"] = {"Kyenele"}, ["kqm"] = {"Khisa"}, ["kqn"] = {"Kaonde"}, ["kqo"] = {"Eastern Krahn"}, ["kqp"] = {"Kimré"}, ["kqq"] = {"Krenak"}, ["kqr"] = {"Kimaragang"}, ["kqs"] = {"Northern Kissi"}, ["kqt"] = {"Klias River Kadazan"}, ["kqu"] = {"Seroa"}, ["kqv"] = {"Okolod"}, ["kqw"] = {"Kandas"}, ["kqx"] = {"Mser"}, ["kqy"] = {"Koorete"}, ["kqz"] = {"Korana"}, ["kra"] = {"Kumhali"}, ["krb"] = {"Karkin"}, ["krc"] = {"Karachay-Balkar"}, ["krd"] = {"Kairui-Midiki"}, ["kre"] = {"Panará"}, ["krf"] = {"Koro (Vanuatu)"}, ["krh"] = {"Kurama"}, ["kri"] = {"Krio"}, ["krj"] = {"Kinaray-A"}, ["krk"] = {"Kerek"}, ["krl"] = {"Karelian"}, ["krn"] = {"Sapo"}, ["kro"] = {"Kru languages"}, ["krp"] = {"Durop"}, ["krr"] = {"Krung"}, ["krs"] = {"Gbaya (Sudan)"}, ["krt"] = {"Tumari Kanuri"}, ["kru"] = {"Kurukh"}, ["krv"] = {"Kavet"}, ["krw"] = {"Western Krahn"}, ["krx"] = {"Karon"}, ["kry"] = {"Kryts"}, ["krz"] = {"Sota Kanum"}, ["ksb"] = {"Shambala"}, ["ksc"] = {"Southern Kalinga"}, ["ksd"] = {"Kuanua"}, ["kse"] = {"Kuni"}, ["ksf"] = {"Bafia"}, ["ksg"] = {"Kusaghe"}, ["ksh"] = {"Kölsch"}, ["ksi"] = {"Krisa", "I'saka"}, ["ksj"] = {"Uare"}, ["ksk"] = {"Kansa"}, ["ksl"] = {"Kumalu"}, ["ksm"] = {"Kumba"}, ["ksn"] = {"Kasiguranin"}, ["kso"] = {"Kofa"}, ["ksp"] = {"Kaba"}, ["ksq"] = {"Kwaami"}, ["ksr"] = {"Borong"}, ["kss"] = {"Southern Kisi"}, ["kst"] = {"Winyé"}, ["ksu"] = {"Khamyang"}, ["ksv"] = {"Kusu"}, ["ksw"] = {"S'gaw Karen"}, ["ksx"] = {"Kedang"}, ["ksy"] = {"Kharia Thar"}, ["ksz"] = {"Kodaku"}, ["kta"] = {"Katua"}, ["ktb"] = {"Kambaata"}, ["ktc"] = {"Kholok"}, ["ktd"] = {"Kokata", "Kukatha"}, ["kte"] = {"Nubri"}, ["ktf"] = {"Kwami"}, ["ktg"] = {"Kalkutung"}, ["kth"] = {"Karanga"}, ["kti"] = {"North Muyu"}, ["ktj"] = {"Plapo Krumen"}, ["ktk"] = {"Kaniet"}, ["ktl"] = {"Koroshi"}, ["ktm"] = {"Kurti"}, ["ktn"] = {"Karitiâna"}, ["kto"] = {"Kuot"}, ["ktp"] = {"Kaduo"}, ["ktq"] = {"Katabaga"}, ["kts"] = {"South Muyu"}, ["ktt"] = {"Ketum"}, ["ktu"] = {"Kituba (Democratic Republic of Congo)"}, ["ktv"] = {"Eastern Katu"}, ["ktw"] = {"Kato"}, ["ktx"] = {"Kaxararí"}, ["kty"] = {"Kango (Bas-Uélé District)"}, ["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"}, ["kub"] = {"Kutep"}, ["kuc"] = {"Kwinsu"}, ["kud"] = {"'Auhelawa"}, ["kue"] = {"Kuman (Papua New Guinea)"}, ["kuf"] = {"Western Katu"}, ["kug"] = {"Kupa"}, ["kuh"] = {"Kushi"}, ["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"}, ["kuj"] = {"Kuria"}, ["kuk"] = {"Kepo'"}, ["kul"] = {"Kulere"}, ["kum"] = {"Kumyk"}, ["kun"] = {"Kunama"}, ["kuo"] = {"Kumukio"}, ["kup"] = {"Kunimaipa"}, ["kuq"] = {"Karipuna"}, ["kus"] = {"Kusaal"}, ["kut"] = {"Kutenai"}, ["kuu"] = {"Upper Kuskokwim"}, ["kuv"] = {"Kur"}, ["kuw"] = {"Kpagua"}, ["kux"] = {"Kukatja"}, ["kuy"] = {"Kuuku-Ya'u"}, ["kuz"] = {"Kunza"}, ["kva"] = {"Bagvalal"}, ["kvb"] = {"Kubu"}, ["kvc"] = {"Kove"}, ["kvd"] = {"Kui (Indonesia)"}, ["kve"] = {"Kalabakan"}, ["kvf"] = {"Kabalai"}, ["kvg"] = {"Kuni-Boazi"}, ["kvh"] = {"Komodo"}, ["kvi"] = {"Kwang"}, ["kvj"] = {"Psikye"}, ["kvk"] = {"Korean Sign Language"}, ["kvl"] = {"Kayaw"}, ["kvm"] = {"Kendem"}, ["kvn"] = {"Border Kuna"}, ["kvo"] = {"Dobel"}, ["kvp"] = {"Kompane"}, ["kvq"] = {"Geba Karen"}, ["kvr"] = {"Kerinci"}, ["kvt"] = {"Lahta Karen", "Lahta"}, ["kvu"] = {"Yinbaw Karen"}, ["kvv"] = {"Kola"}, ["kvw"] = {"Wersing"}, ["kvx"] = {"Parkari Koli"}, ["kvy"] = {"Yintale Karen", "Yintale"}, ["kvz"] = {"Tsakwambo", "Tsaukambo"}, ["kwa"] = {"Dâw"}, ["kwb"] = {"Kwa"}, ["kwc"] = {"Likwala"}, ["kwd"] = {"Kwaio"}, ["kwe"] = {"Kwerba"}, ["kwf"] = {"Kwara'ae"}, ["kwg"] = {"Sara Kaba Deme"}, ["kwh"] = {"Kowiai"}, ["kwi"] = {"Awa-Cuaiquer"}, ["kwj"] = {"Kwanga"}, ["kwk"] = {"Kwakiutl"}, ["kwl"] = {"Kofyar"}, ["kwm"] = {"Kwambi"}, ["kwn"] = {"Kwangali"}, ["kwo"] = {"Kwomtari"}, ["kwp"] = {"Kodia"}, ["kwr"] = {"Kwer"}, ["kws"] = {"Kwese"}, ["kwt"] = {"Kwesten"}, ["kwu"] = {"Kwakum"}, ["kwv"] = {"Sara Kaba Náà"}, ["kww"] = {"Kwinti"}, ["kwx"] = {"Khirwar"}, ["kwy"] = {"San Salvador Kongo"}, ["kwz"] = {"Kwadi"}, ["kxa"] = {"Kairiru"}, ["kxb"] = {"Krobu"}, ["kxc"] = {"Konso", "Khonso"}, ["kxd"] = {"Brunei"}, ["kxf"] = {"Manumanaw Karen", "Manumanaw"}, ["kxh"] = {"Karo (Ethiopia)"}, ["kxi"] = {"Keningau Murut"}, ["kxj"] = {"Kulfa"}, ["kxk"] = {"Zayein Karen"}, ["kxm"] = {"Northern Khmer"}, ["kxn"] = {"Kanowit-Tanjong Melanau"}, ["kxo"] = {"Kanoé"}, ["kxp"] = {"Wadiyara Koli"}, ["kxq"] = {"Smärky Kanum"}, ["kxr"] = {"Koro (Papua New Guinea)"}, ["kxs"] = {"Kangjia"}, ["kxt"] = {"Koiwat"}, ["kxv"] = {"Kuvi"}, ["kxw"] = {"Konai"}, ["kxx"] = {"Likuba"}, ["kxy"] = {"Kayong"}, ["kxz"] = {"Kerewo"}, ["kya"] = {"Kwaya"}, ["kyb"] = {"Butbut Kalinga"}, ["kyc"] = {"Kyaka"}, ["kyd"] = {"Karey"}, ["kye"] = {"Krache"}, ["kyf"] = {"Kouya"}, ["kyg"] = {"Keyagana"}, ["kyh"] = {"Karok"}, ["kyi"] = {"Kiput"}, ["kyj"] = {"Karao"}, ["kyk"] = {"Kamayo"}, ["kyl"] = {"Kalapuya"}, ["kym"] = {"Kpatili"}, ["kyn"] = {"Northern Binukidnon"}, ["kyo"] = {"Kelon"}, ["kyp"] = {"Kang"}, ["kyq"] = {"Kenga"}, ["kyr"] = {"Kuruáya"}, ["kys"] = {"Baram Kayan"}, ["kyt"] = {"Kayagar"}, ["kyu"] = {"Western Kayah"}, ["kyv"] = {"Kayort"}, ["kyw"] = {"Kudmali"}, ["kyx"] = {"Rapoisi"}, ["kyy"] = {"Kambaira"}, ["kyz"] = {"Kayabí"}, ["kza"] = {"Western Karaboro"}, ["kzb"] = {"Kaibobo"}, ["kzc"] = {"Bondoukou Kulango"}, ["kzd"] = {"Kadai"}, ["kze"] = {"Kosena"}, ["kzf"] = {"Da'a Kaili"}, ["kzg"] = {"Kikai"}, ["kzi"] = {"Kelabit"}, ["kzk"] = {"Kazukuru"}, ["kzl"] = {"Kayeli"}, ["kzm"] = {"Kais"}, ["kzn"] = {"Kokola"}, ["kzo"] = {"Kaningi"}, ["kzp"] = {"Kaidipang"}, ["kzq"] = {"Kaike"}, ["kzr"] = {"Karang"}, ["kzs"] = {"Sugut Dusun"}, ["kzu"] = {"Kayupulau"}, ["kzv"] = {"Komyandaret"}, ["kzw"] = {"Karirí-Xocó"}, ["kzx"] = {"Kamarian"}, ["kzy"] = {"Kango (Tshopo District)"}, ["kzz"] = {"Kalabra"}, ["laa"] = {"Southern Subanen"}, ["lab"] = {"Linear A"}, ["lac"] = {"Lacandon"}, ["lad"] = {"Ladino"}, ["lae"] = {"Pattani"}, ["laf"] = {"Lafofa"}, ["lag"] = {"Rangi"}, ["lah"] = {"Lahnda"}, ["lai"] = {"Lambya"}, ["laj"] = {"Lango (Uganda)"}, ["lal"] = {"Lalia"}, ["lam"] = {"Lamba"}, ["lan"] = {"Laru"}, ["lap"] = {"Laka (Chad)"}, ["laq"] = {"Qabiao"}, ["lar"] = {"Larteh"}, ["las"] = {"Lama (Togo)"}, ["lau"] = {"Laba"}, ["law"] = {"Lauje"}, ["lax"] = {"Tiwa"}, ["lay"] = {"Lama Bai"}, ["laz"] = {"Aribwatsa"}, ["lbb"] = {"Label"}, ["lbc"] = {"Lakkia"}, ["lbe"] = {"Lak"}, ["lbf"] = {"Tinani"}, ["lbg"] = {"Laopang"}, ["lbi"] = {"La'bi"}, ["lbj"] = {"Ladakhi"}, ["lbk"] = {"Central Bontok"}, ["lbl"] = {"Libon Bikol"}, ["lbm"] = {"Lodhi"}, ["lbn"] = {"Rmeet"}, ["lbo"] = {"Laven"}, ["lbq"] = {"Wampar"}, ["lbr"] = {"Lohorung"}, ["lbs"] = {"Libyan Sign Language"}, ["lbt"] = {"Lachi"}, ["lbu"] = {"Labu"}, ["lbv"] = {"Lavatbura-Lamusong"}, ["lbw"] = {"Tolaki"}, ["lbx"] = {"Lawangan"}, ["lby"] = {"Lamalama", "Lamu-Lamu"}, ["lbz"] = {"Lardil"}, ["lcc"] = {"Legenyem"}, ["lcd"] = {"Lola"}, ["lce"] = {"Loncong", "Sekak"}, ["lcf"] = {"Lubu"}, ["lch"] = {"Luchazi"}, ["lcl"] = {"Lisela"}, ["lcm"] = {"Tungag"}, ["lcp"] = {"Western Lawa"}, ["lcq"] = {"Luhu"}, ["lcs"] = {"Lisabata-Nuniali"}, ["lda"] = {"Kla-Dan"}, ["ldb"] = {"Dũya"}, ["ldd"] = {"Luri"}, ["ldg"] = {"Lenyima"}, ["ldh"] = {"Lamja-Dengsa-Tola"}, ["ldi"] = {"Laari"}, ["ldj"] = {"Lemoro"}, ["ldk"] = {"Leelau"}, ["ldl"] = {"Kaan"}, ["ldm"] = {"Landoma"}, ["ldn"] = {"Láadan"}, ["ldo"] = {"Loo"}, ["ldp"] = {"Tso"}, ["ldq"] = {"Lufu"}, ["lea"] = {"Lega-Shabunda"}, ["leb"] = {"Lala-Bisa"}, ["lec"] = {"Leco"}, ["led"] = {"Lendu"}, ["lee"] = {"Lyélé"}, ["lef"] = {"Lelemi"}, ["leh"] = {"Lenje"}, ["lei"] = {"Lemio"}, ["lej"] = {"Lengola"}, ["lek"] = {"Leipon"}, ["lel"] = {"Lele (Democratic Republic of Congo)"}, ["lem"] = {"Nomaande"}, ["len"] = {"Lenca"}, ["leo"] = {"Leti (Cameroon)"}, ["lep"] = {"Lepcha"}, ["leq"] = {"Lembena"}, ["ler"] = {"Lenkau"}, ["les"] = {"Lese"}, ["let"] = {"Lesing-Gelimi", "Amio-Gelimi"}, ["leu"] = {"Kara (Papua New Guinea)"}, ["lev"] = {"Lamma"}, ["lew"] = {"Ledo Kaili"}, ["lex"] = {"Luang"}, ["ley"] = {"Lemolang"}, ["lez"] = {"Lezghian"}, ["lfa"] = {"Lefa"}, ["lfn"] = {"Lingua Franca Nova"}, ["lga"] = {"Lungga"}, ["lgb"] = {"Laghu"}, ["lgg"] = {"Lugbara"}, ["lgh"] = {"Laghuu"}, ["lgi"] = {"Lengilu"}, ["lgk"] = {"Lingarak", "Neverver"}, ["lgl"] = {"Wala"}, ["lgm"] = {"Lega-Mwenga"}, ["lgn"] = {"T'apo", "Opuuo"}, ["lgo"] = {"Lango (South Sudan)"}, ["lgq"] = {"Logba"}, ["lgr"] = {"Lengo"}, ["lgs"] = {"Guinea-Bissau Sign Language", "Língua Gestual Guineense"}, ["lgt"] = {"Pahi"}, ["lgu"] = {"Longgu"}, ["lgz"] = {"Ligenza"}, ["lha"] = {"Laha (Viet Nam)"}, ["lhh"] = {"Laha (Indonesia)"}, ["lhi"] = {"Lahu Shi"}, ["lhl"] = {"Lahul Lohar"}, ["lhm"] = {"Lhomi"}, ["lhn"] = {"Lahanan"}, ["lhp"] = {"Lhokpu"}, ["lhs"] = {"Mlahsö"}, ["lht"] = {"Lo-Toga"}, ["lhu"] = {"Lahu"}, ["lia"] = {"West-Central Limba"}, ["lib"] = {"Likum"}, ["lic"] = {"Hlai"}, ["lid"] = {"Nyindrou"}, ["lie"] = {"Likila"}, ["lif"] = {"Limbu"}, ["lig"] = {"Ligbi"}, ["lih"] = {"Lihir"}, ["lij"] = {"Ligurian"}, ["lik"] = {"Lika"}, ["lil"] = {"Lillooet"}, ["lio"] = {"Liki"}, ["lip"] = {"Sekpele"}, ["liq"] = {"Libido"}, ["lir"] = {"Liberian English"}, ["lis"] = {"Lisu"}, ["liu"] = {"Logorik"}, ["liv"] = {"Liv"}, ["liw"] = {"Col"}, ["lix"] = {"Liabuku"}, ["liy"] = {"Banda-Bambari"}, ["liz"] = {"Libinza"}, ["lja"] = {"Golpa"}, ["lje"] = {"Rampi"}, ["lji"] = {"Laiyolo"}, ["ljl"] = {"Li'o"}, ["ljp"] = {"Lampung Api"}, ["ljw"] = {"Yirandali"}, ["ljx"] = {"Yuru"}, ["lka"] = {"Lakalei"}, ["lkb"] = {"Kabras", "Lukabaras"}, ["lkc"] = {"Kucong"}, ["lkd"] = {"Lakondê"}, ["lke"] = {"Kenyi"}, ["lkh"] = {"Lakha"}, ["lki"] = {"Laki"}, ["lkj"] = {"Remun"}, ["lkl"] = {"Laeko-Libuat"}, ["lkm"] = {"Kalaamaya"}, ["lkn"] = {"Lakon", "Vure"}, ["lko"] = {"Khayo", "Olukhayo"}, ["lkr"] = {"Päri"}, ["lks"] = {"Kisa", "Olushisa"}, ["lkt"] = {"Lakota"}, ["lku"] = {"Kungkari"}, ["lky"] = {"Lokoya"}, ["lla"] = {"Lala-Roba"}, ["llb"] = {"Lolo"}, ["llc"] = {"Lele (Guinea)"}, ["lld"] = {"Ladin"}, ["lle"] = {"Lele (Papua New Guinea)"}, ["llf"] = {"Hermit"}, ["llg"] = {"Lole"}, ["llh"] = {"Lamu"}, ["lli"] = {"Teke-Laali"}, ["llj"] = {"Ladji Ladji"}, ["llk"] = {"Lelak"}, ["lll"] = {"Lilau"}, ["llm"] = {"Lasalimu"}, ["lln"] = {"Lele (Chad)"}, ["llp"] = {"North Efate"}, ["llq"] = {"Lolak"}, ["lls"] = {"Lithuanian Sign Language"}, ["llu"] = {"Lau"}, ["llx"] = {"Lauan"}, ["lma"] = {"East Limba"}, ["lmb"] = {"Merei"}, ["lmc"] = {"Limilngan"}, ["lmd"] = {"Lumun"}, ["lme"] = {"Pévé"}, ["lmf"] = {"South Lembata"}, ["lmg"] = {"Lamogai"}, ["lmh"] = {"Lambichhong"}, ["lmi"] = {"Lombi"}, ["lmj"] = {"West Lembata"}, ["lmk"] = {"Lamkang"}, ["lml"] = {"Hano"}, ["lmn"] = {"Lambadi"}, ["lmo"] = {"Lombard"}, ["lmp"] = {"Limbum"}, ["lmq"] = {"Lamatuka"}, ["lmr"] = {"Lamalera"}, ["lmu"] = {"Lamenu"}, ["lmv"] = {"Lomaiviti"}, ["lmw"] = {"Lake Miwok"}, ["lmx"] = {"Laimbue"}, ["lmy"] = {"Lamboya"}, ["lna"] = {"Langbashe"}, ["lnb"] = {"Mbalanhu"}, ["lnd"] = {"Lundayeh", "Lun Bawang"}, ["lng"] = {"Langobardic"}, ["lnh"] = {"Lanoh"}, ["lni"] = {"Daantanai'"}, ["lnj"] = {"Leningitij"}, ["lnl"] = {"South Central Banda"}, ["lnm"] = {"Langam"}, ["lnn"] = {"Lorediakarkar"}, ["lns"] = {"Lamnso'"}, ["lnu"] = {"Longuda"}, ["lnw"] = {"Lanima"}, ["lnz"] = {"Lonzo"}, ["loa"] = {"Loloda"}, ["lob"] = {"Lobi"}, ["loc"] = {"Inonhan"}, ["loe"] = {"Saluan"}, ["lof"] = {"Logol"}, ["log"] = {"Logo"}, ["loh"] = {"Laarim", "Narim"}, ["loi"] = {"Loma (Côte d'Ivoire)"}, ["loj"] = {"Lou"}, ["lok"] = {"Loko"}, ["lol"] = {"Mongo"}, ["lom"] = {"Loma (Liberia)"}, ["lon"] = {"Malawi Lomwe"}, ["loo"] = {"Lombo"}, ["lop"] = {"Lopa"}, ["loq"] = {"Lobala"}, ["lor"] = {"Téén"}, ["los"] = {"Loniu"}, ["lot"] = {"Otuho"}, ["lou"] = {"Louisiana Creole"}, ["lov"] = {"Lopi"}, ["low"] = {"Tampias Lobu"}, ["lox"] = {"Loun"}, ["loy"] = {"Loke"}, ["loz"] = {"Lozi"}, ["lpa"] = {"Lelepa"}, ["lpe"] = {"Lepki"}, ["lpn"] = {"Long Phuri Naga"}, ["lpo"] = {"Lipo"}, ["lpx"] = {"Lopit"}, ["lqr"] = {"Logir"}, ["lra"] = {"Rara Bakati'"}, ["lrc"] = {"Northern Luri"}, ["lre"] = {"Laurentian"}, ["lrg"] = {"Laragia"}, ["lri"] = {"Marachi", "Olumarachi"}, ["lrk"] = {"Loarki"}, ["lrl"] = {"Lari"}, ["lrm"] = {"Marama", "Olumarama"}, ["lrn"] = {"Lorang"}, ["lro"] = {"Laro"}, ["lrr"] = {"Southern Yamphu"}, ["lrt"] = {"Larantuka Malay"}, ["lrv"] = {"Larevat"}, ["lrz"] = {"Lemerig"}, ["lsa"] = {"Lasgerdi"}, ["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"}, ["lsc"] = {"Albarradas Sign Language", "Lengua de señas Albarradas"}, ["lsd"] = {"Lishana Deni"}, ["lse"] = {"Lusengo"}, ["lsh"] = {"Lish"}, ["lsi"] = {"Lashi"}, ["lsl"] = {"Latvian Sign Language"}, ["lsm"] = {"Saamia", "Olusamia"}, ["lsn"] = {"Tibetan Sign Language"}, ["lso"] = {"Laos Sign Language"}, ["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"}, ["lsr"] = {"Aruop"}, ["lss"] = {"Lasi"}, ["lst"] = {"Trinidad and Tobago Sign Language"}, ["lsv"] = {"Sivia Sign Language"}, ["lsw"] = {"Seychelles Sign Language", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"}, ["lsy"] = {"Mauritian Sign Language"}, ["ltc"] = {"Late Middle Chinese"}, ["ltg"] = {"Latgalian"}, ["lth"] = {"Thur"}, ["lti"] = {"Leti (Indonesia)"}, ["ltn"] = {"Latundê"}, ["lto"] = {"Tsotso", "Olutsotso"}, ["lts"] = {"Tachoni", "Lutachoni"}, ["ltu"] = {"Latu"}, ["lua"] = {"Luba-Lulua"}, ["luc"] = {"Aringa"}, ["lud"] = {"Ludian"}, ["lue"] = {"Luvale"}, ["luf"] = {"Laua"}, ["lui"] = {"Luiseno"}, ["luj"] = {"Luna"}, ["luk"] = {"Lunanakha"}, ["lul"] = {"Olu'bo"}, ["lum"] = {"Luimbi"}, ["lun"] = {"Lunda"}, ["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"}, ["lup"] = {"Lumbu"}, ["luq"] = {"Lucumi"}, ["lur"] = {"Laura"}, ["lus"] = {"Lushai"}, ["lut"] = {"Lushootseed"}, ["luu"] = {"Lumba-Yakkha"}, ["luv"] = {"Luwati"}, ["luw"] = {"Luo (Cameroon)"}, ["luy"] = {"Luyia", "Oluluyia"}, ["luz"] = {"Southern Luri"}, ["lva"] = {"Maku'a"}, ["lvi"] = {"Lavi"}, ["lvk"] = {"Lavukaleve"}, ["lvl"] = {"Lwel"}, ["lvs"] = {"Standard Latvian"}, ["lvu"] = {"Levuka"}, ["lwa"] = {"Lwalu"}, ["lwe"] = {"Lewo Eleng"}, ["lwg"] = {"Wanga", "Oluwanga"}, ["lwh"] = {"White Lachi"}, ["lwl"] = {"Eastern Lawa"}, ["lwm"] = {"Laomian"}, ["lwo"] = {"Luwo"}, ["lws"] = {"Malawian Sign Language"}, ["lwt"] = {"Lewotobi"}, ["lwu"] = {"Lawu"}, ["lww"] = {"Lewo"}, ["lxm"] = {"Lakurumau"}, ["lya"] = {"Layakha"}, ["lyg"] = {"Lyngngam"}, ["lyn"] = {"Luyana"}, ["lzh"] = {"Literary Chinese"}, ["lzl"] = {"Litzlitz"}, ["lzn"] = {"Leinong Naga"}, ["lzz"] = {"Laz"}, ["maa"] = {"San Jerónimo Tecóatl Mazatec"}, ["mab"] = {"Yutanduchi Mixtec"}, ["mad"] = {"Madurese"}, ["mae"] = {"Bo-Rukul"}, ["maf"] = {"Mafa"}, ["mag"] = {"Magahi"}, ["mai"] = {"Maithili"}, ["maj"] = {"Jalapa De Díaz Mazatec"}, ["mak"] = {"Makasar"}, ["mam"] = {"Mam"}, ["man"] = {"Mandingo", "Manding"}, ["map"] = {"Austronesian languages"}, ["maq"] = {"Chiquihuitlán Mazatec"}, ["mas"] = {"Masai"}, ["mat"] = {"San Francisco Matlatzinca"}, ["mau"] = {"Huautla Mazatec"}, ["mav"] = {"Sateré-Mawé"}, ["maw"] = {"Mampruli"}, ["max"] = {"North Moluccan Malay"}, ["maz"] = {"Central Mazahua"}, ["mba"] = {"Higaonon"}, ["mbb"] = {"Western Bukidnon Manobo"}, ["mbc"] = {"Macushi"}, ["mbd"] = {"Dibabawon Manobo"}, ["mbe"] = {"Molale"}, ["mbf"] = {"Baba Malay"}, ["mbh"] = {"Mangseng"}, ["mbi"] = {"Ilianen Manobo"}, ["mbj"] = {"Nadëb"}, ["mbk"] = {"Malol"}, ["mbl"] = {"Maxakalí"}, ["mbm"] = {"Ombamba"}, ["mbn"] = {"Macaguán"}, ["mbo"] = {"Mbo (Cameroon)"}, ["mbp"] = {"Malayo"}, ["mbq"] = {"Maisin"}, ["mbr"] = {"Nukak Makú"}, ["mbs"] = {"Sarangani Manobo"}, ["mbt"] = {"Matigsalug Manobo"}, ["mbu"] = {"Mbula-Bwazza"}, ["mbv"] = {"Mbulungish"}, ["mbw"] = {"Maring"}, ["mbx"] = {"Mari (East Sepik Province)"}, ["mby"] = {"Memoni"}, ["mbz"] = {"Amoltepec Mixtec"}, ["mca"] = {"Maca"}, ["mcb"] = {"Machiguenga"}, ["mcc"] = {"Bitur"}, ["mcd"] = {"Sharanahua"}, ["mce"] = {"Itundujia Mixtec"}, ["mcf"] = {"Matsés"}, ["mcg"] = {"Mapoyo"}, ["mch"] = {"Maquiritari"}, ["mci"] = {"Mese"}, ["mcj"] = {"Mvanip"}, ["mck"] = {"Mbunda"}, ["mcl"] = {"Macaguaje"}, ["mcm"] = {"Malaccan Creole Portuguese"}, ["mcn"] = {"Masana"}, ["mco"] = {"Coatlán Mixe"}, ["mcp"] = {"Makaa"}, ["mcq"] = {"Ese"}, ["mcr"] = {"Menya"}, ["mcs"] = {"Mambai"}, ["mct"] = {"Mengisa"}, ["mcu"] = {"Cameroon Mambila"}, ["mcv"] = {"Minanibai"}, ["mcw"] = {"Mawa (Chad)"}, ["mcx"] = {"Mpiemo"}, ["mcy"] = {"South Watut"}, ["mcz"] = {"Mawan"}, ["mda"] = {"Mada (Nigeria)"}, ["mdb"] = {"Morigi"}, ["mdc"] = {"Male (Papua New Guinea)"}, ["mdd"] = {"Mbum"}, ["mde"] = {"Maba (Chad)"}, ["mdf"] = {"Moksha"}, ["mdg"] = {"Massalat"}, ["mdh"] = {"Maguindanaon"}, ["mdi"] = {"Mamvu"}, ["mdj"] = {"Mangbetu"}, ["mdk"] = {"Mangbutu"}, ["mdl"] = {"Maltese Sign Language"}, ["mdm"] = {"Mayogo"}, ["mdn"] = {"Mbati"}, ["mdp"] = {"Mbala"}, ["mdq"] = {"Mbole"}, ["mdr"] = {"Mandar"}, ["mds"] = {"Maria (Papua New Guinea)"}, ["mdt"] = {"Mbere"}, ["mdu"] = {"Mboko"}, ["mdv"] = {"Santa Lucía Monteverde Mixtec"}, ["mdw"] = {"Mbosi"}, ["mdx"] = {"Dizin"}, ["mdy"] = {"Male (Ethiopia)"}, ["mdz"] = {"Suruí Do Pará"}, ["mea"] = {"Menka"}, ["meb"] = {"Ikobi"}, ["mec"] = {"Marra"}, ["med"] = {"Melpa"}, ["mee"] = {"Mengen"}, ["mef"] = {"Megam"}, ["meh"] = {"Southwestern Tlaxiaco Mixtec"}, ["mei"] = {"Midob"}, ["mej"] = {"Meyah"}, ["mek"] = {"Mekeo"}, ["mel"] = {"Central Melanau"}, ["mem"] = {"Mangala"}, ["men"] = {"Mende (Sierra Leone)"}, ["meo"] = {"Kedah Malay"}, ["mep"] = {"Miriwoong"}, ["meq"] = {"Merey"}, ["mer"] = {"Meru"}, ["mes"] = {"Masmaje"}, ["met"] = {"Mato"}, ["meu"] = {"Motu"}, ["mev"] = {"Mano"}, ["mew"] = {"Maaka"}, ["mey"] = {"Hassaniyya"}, ["mez"] = {"Menominee"}, ["mfa"] = {"Pattani Malay"}, ["mfb"] = {"Bangka"}, ["mfc"] = {"Mba"}, ["mfd"] = {"Mendankwe-Nkwen"}, ["mfe"] = {"Morisyen"}, ["mff"] = {"Naki"}, ["mfg"] = {"Mogofin"}, ["mfh"] = {"Matal"}, ["mfi"] = {"Wandala"}, ["mfj"] = {"Mefele"}, ["mfk"] = {"North Mofu"}, ["mfl"] = {"Putai"}, ["mfm"] = {"Marghi South"}, ["mfn"] = {"Cross River Mbembe"}, ["mfo"] = {"Mbe"}, ["mfp"] = {"Makassar Malay"}, ["mfq"] = {"Moba"}, ["mfr"] = {"Marrithiyel"}, ["mfs"] = {"Mexican Sign Language"}, ["mft"] = {"Mokerang"}, ["mfu"] = {"Mbwela"}, ["mfv"] = {"Mandjak"}, ["mfw"] = {"Mulaha"}, ["mfx"] = {"Melo"}, ["mfy"] = {"Mayo"}, ["mfz"] = {"Mabaan"}, ["mga"] = {"Middle Irish (900-1200)"}, ["mgb"] = {"Mararit"}, ["mgc"] = {"Morokodo"}, ["mgd"] = {"Moru"}, ["mge"] = {"Mango"}, ["mgf"] = {"Maklew"}, ["mgg"] = {"Mpumpong"}, ["mgh"] = {"Makhuwa-Meetto"}, ["mgi"] = {"Lijili"}, ["mgj"] = {"Abureni"}, ["mgk"] = {"Mawes"}, ["mgl"] = {"Maleu-Kilenge"}, ["mgm"] = {"Mambae"}, ["mgn"] = {"Mbangi"}, ["mgo"] = {"Meta'"}, ["mgp"] = {"Eastern Magar"}, ["mgq"] = {"Malila"}, ["mgr"] = {"Mambwe-Lungu"}, ["mgs"] = {"Manda (Tanzania)"}, ["mgt"] = {"Mongol"}, ["mgu"] = {"Mailu"}, ["mgv"] = {"Matengo"}, ["mgw"] = {"Matumbi"}, ["mgy"] = {"Mbunga"}, ["mgz"] = {"Mbugwe"}, ["mha"] = {"Manda (India)"}, ["mhb"] = {"Mahongwe"}, ["mhc"] = {"Mocho"}, ["mhd"] = {"Mbugu"}, ["mhe"] = {"Besisi", "Mah Meri"}, ["mhf"] = {"Mamaa"}, ["mhg"] = {"Margu"}, ["mhi"] = {"Ma'di"}, ["mhj"] = {"Mogholi"}, ["mhk"] = {"Mungaka"}, ["mhl"] = {"Mauwake"}, ["mhm"] = {"Makhuwa-Moniga"}, ["mhn"] = {"Mócheno"}, ["mho"] = {"Mashi (Zambia)"}, ["mhp"] = {"Balinese Malay"}, ["mhq"] = {"Mandan"}, ["mhr"] = {"Eastern Mari"}, ["mhs"] = {"Buru (Indonesia)"}, ["mht"] = {"Mandahuaca"}, ["mhu"] = {"Digaro-Mishmi", "Darang Deng"}, ["mhw"] = {"Mbukushu"}, ["mhx"] = {"Maru", "Lhaovo"}, ["mhy"] = {"Ma'anyan"}, ["mhz"] = {"Mor (Mor Islands)"}, ["mia"] = {"Miami"}, ["mib"] = {"Atatláhuca Mixtec"}, ["mic"] = {"Mi'kmaq", "Micmac"}, ["mid"] = {"Mandaic"}, ["mie"] = {"Ocotepec Mixtec"}, ["mif"] = {"Mofu-Gudur"}, ["mig"] = {"San Miguel El Grande Mixtec"}, ["mih"] = {"Chayuco Mixtec"}, ["mii"] = {"Chigmecatitlán Mixtec"}, ["mij"] = {"Abar", "Mungbam"}, ["mik"] = {"Mikasuki"}, ["mil"] = {"Peñoles Mixtec"}, ["mim"] = {"Alacatlatzala Mixtec"}, ["min"] = {"Minangkabau"}, ["mio"] = {"Pinotepa Nacional Mixtec"}, ["mip"] = {"Apasco-Apoala Mixtec"}, ["miq"] = {"Mískito"}, ["mir"] = {"Isthmus Mixe"}, ["mis"] = {"Uncoded languages"}, ["mit"] = {"Southern Puebla Mixtec"}, ["miu"] = {"Cacaloxtepec Mixtec"}, ["miw"] = {"Akoye"}, ["mix"] = {"Mixtepec Mixtec"}, ["miy"] = {"Ayutla Mixtec"}, ["miz"] = {"Coatzospan Mixtec"}, ["mjb"] = {"Makalero"}, ["mjc"] = {"San Juan Colorado Mixtec"}, ["mjd"] = {"Northwest Maidu"}, ["mje"] = {"Muskum"}, ["mjg"] = {"Tu"}, ["mjh"] = {"Mwera (Nyasa)"}, ["mji"] = {"Kim Mun"}, ["mjj"] = {"Mawak"}, ["mjk"] = {"Matukar"}, ["mjl"] = {"Mandeali"}, ["mjm"] = {"Medebur"}, ["mjn"] = {"Ma (Papua New Guinea)"}, ["mjo"] = {"Malankuravan"}, ["mjp"] = {"Malapandaram"}, ["mjq"] = {"Malaryan"}, ["mjr"] = {"Malavedan"}, ["mjs"] = {"Miship"}, ["mjt"] = {"Sauria Paharia"}, ["mju"] = {"Manna-Dora"}, ["mjv"] = {"Mannan"}, ["mjw"] = {"Karbi"}, ["mjx"] = {"Mahali"}, ["mjy"] = {"Mahican"}, ["mjz"] = {"Majhi"}, ["mka"] = {"Mbre"}, ["mkb"] = {"Mal Paharia"}, ["mkc"] = {"Siliput"}, ["mke"] = {"Mawchi"}, ["mkf"] = {"Miya"}, ["mkg"] = {"Mak (China)"}, ["mkh"] = {"Mon-Khmer languages"}, ["mki"] = {"Dhatki"}, ["mkj"] = {"Mokilese"}, ["mkk"] = {"Byep"}, ["mkl"] = {"Mokole"}, ["mkm"] = {"Moklen"}, ["mkn"] = {"Kupang Malay"}, ["mko"] = {"Mingang Doso"}, ["mkp"] = {"Moikodi"}, ["mkq"] = {"Bay Miwok"}, ["mkr"] = {"Malas"}, ["mks"] = {"Silacayoapan Mixtec"}, ["mkt"] = {"Vamale"}, ["mku"] = {"Konyanka Maninka"}, ["mkv"] = {"Mafea"}, ["mkw"] = {"Kituba (Congo)"}, ["mkx"] = {"Kinamiging Manobo"}, ["mky"] = {"East Makian"}, ["mkz"] = {"Makasae"}, ["mla"] = {"Malo"}, ["mlb"] = {"Mbule"}, ["mlc"] = {"Cao Lan"}, ["mle"] = {"Manambu"}, ["mlf"] = {"Mal"}, ["mlh"] = {"Mape"}, ["mli"] = {"Malimpung"}, ["mlj"] = {"Miltu"}, ["mlk"] = {"Ilwana", "Kiwilwana"}, ["mll"] = {"Malua Bay"}, ["mlm"] = {"Mulam"}, ["mln"] = {"Malango"}, ["mlo"] = {"Mlomp"}, ["mlp"] = {"Bargam"}, ["mlq"] = {"Western Maninkakan"}, ["mlr"] = {"Vame"}, ["mls"] = {"Masalit"}, ["mlu"] = {"To'abaita"}, ["mlv"] = {"Motlav", "Mwotlap"}, ["mlw"] = {"Moloko"}, ["mlx"] = {"Malfaxal", "Naha'ai"}, ["mlz"] = {"Malaynon"}, ["mma"] = {"Mama"}, ["mmb"] = {"Momina"}, ["mmc"] = {"Michoacán Mazahua"}, ["mmd"] = {"Maonan"}, ["mme"] = {"Mae"}, ["mmf"] = {"Mundat"}, ["mmg"] = {"North Ambrym"}, ["mmh"] = {"Mehináku"}, ["mmi"] = {"Musar"}, ["mmj"] = {"Majhwar"}, ["mmk"] = {"Mukha-Dora"}, ["mml"] = {"Man Met"}, ["mmm"] = {"Maii"}, ["mmn"] = {"Mamanwa"}, ["mmo"] = {"Mangga Buang"}, ["mmp"] = {"Siawi"}, ["mmq"] = {"Musak"}, ["mmr"] = {"Western Xiangxi Miao"}, ["mmt"] = {"Malalamai"}, ["mmu"] = {"Mmaala"}, ["mmv"] = {"Miriti"}, ["mmw"] = {"Emae"}, ["mmx"] = {"Madak"}, ["mmy"] = {"Migaama"}, ["mmz"] = {"Mabaale"}, ["mna"] = {"Mbula"}, ["mnb"] = {"Muna"}, ["mnc"] = {"Manchu"}, ["mnd"] = {"Mondé"}, ["mne"] = {"Naba"}, ["mnf"] = {"Mundani"}, ["mng"] = {"Eastern Mnong"}, ["mnh"] = {"Mono (Democratic Republic of Congo)"}, ["mni"] = {"Manipuri"}, ["mnj"] = {"Munji"}, ["mnk"] = {"Mandinka"}, ["mnl"] = {"Tiale"}, ["mnm"] = {"Mapena"}, ["mnn"] = {"Southern Mnong"}, ["mno"] = {"Manobo languages"}, ["mnp"] = {"Min Bei Chinese"}, ["mnq"] = {"Minriq"}, ["mnr"] = {"Mono (USA)"}, ["mns"] = {"Mansi"}, ["mnu"] = {"Mer"}, ["mnv"] = {"Rennell-Bellona"}, ["mnw"] = {"Mon"}, ["mnx"] = {"Manikion"}, ["mny"] = {"Manyawa"}, ["mnz"] = {"Moni"}, ["moa"] = {"Mwan"}, ["moc"] = {"Mocoví"}, ["mod"] = {"Mobilian"}, ["moe"] = {"Innu", "Montagnais"}, ["mog"] = {"Mongondow"}, ["moh"] = {"Mohawk"}, ["moi"] = {"Mboi"}, ["moj"] = {"Monzombo"}, ["mok"] = {"Morori"}, ["mom"] = {"Mangue"}, ["moo"] = {"Monom"}, ["mop"] = {"Mopán Maya"}, ["moq"] = {"Mor (Bomberai Peninsula)"}, ["mor"] = {"Moro"}, ["mos"] = {"Mossi"}, ["mot"] = {"Barí"}, ["mou"] = {"Mogum"}, ["mov"] = {"Mohave"}, ["mow"] = {"Moi (Congo)"}, ["mox"] = {"Molima"}, ["moy"] = {"Shekkacho"}, ["moz"] = {"Mukulu", "Gergiko"}, ["mpa"] = {"Mpoto"}, ["mpb"] = {"Malak Malak", "Mullukmulluk"}, ["mpc"] = {"Mangarrayi"}, ["mpd"] = {"Machinere"}, ["mpe"] = {"Majang"}, ["mpg"] = {"Marba"}, ["mph"] = {"Maung"}, ["mpi"] = {"Mpade"}, ["mpj"] = {"Martu Wangka", "Wangkajunga"}, ["mpk"] = {"Mbara (Chad)"}, ["mpl"] = {"Middle Watut"}, ["mpm"] = {"Yosondúa Mixtec"}, ["mpn"] = {"Mindiri"}, ["mpo"] = {"Miu"}, ["mpp"] = {"Migabac"}, ["mpq"] = {"Matís"}, ["mpr"] = {"Vangunu"}, ["mps"] = {"Dadibi"}, ["mpt"] = {"Mian"}, ["mpu"] = {"Makuráp"}, ["mpv"] = {"Mungkip"}, ["mpw"] = {"Mapidian"}, ["mpx"] = {"Misima-Panaeati"}, ["mpy"] = {"Mapia"}, ["mpz"] = {"Mpi"}, ["mqa"] = {"Maba (Indonesia)"}, ["mqb"] = {"Mbuko"}, ["mqc"] = {"Mangole"}, ["mqe"] = {"Matepi"}, ["mqf"] = {"Momuna"}, ["mqg"] = {"Kota Bangun Kutai Malay"}, ["mqh"] = {"Tlazoyaltepec Mixtec"}, ["mqi"] = {"Mariri"}, ["mqj"] = {"Mamasa"}, ["mqk"] = {"Rajah Kabunsuwan Manobo"}, ["mql"] = {"Mbelime"}, ["mqm"] = {"South Marquesan"}, ["mqn"] = {"Moronene"}, ["mqo"] = {"Modole"}, ["mqp"] = {"Manipa"}, ["mqq"] = {"Minokok"}, ["mqr"] = {"Mander"}, ["mqs"] = {"West Makian"}, ["mqt"] = {"Mok"}, ["mqu"] = {"Mandari"}, ["mqv"] = {"Mosimo"}, ["mqw"] = {"Murupi"}, ["mqx"] = {"Mamuju"}, ["mqy"] = {"Manggarai"}, ["mqz"] = {"Pano"}, ["mra"] = {"Mlabri"}, ["mrb"] = {"Marino"}, ["mrc"] = {"Maricopa"}, ["mrd"] = {"Western Magar"}, ["mre"] = {"Martha's Vineyard Sign Language"}, ["mrf"] = {"Elseng"}, ["mrg"] = {"Mising"}, ["mrh"] = {"Mara Chin"}, ["mrj"] = {"Western Mari"}, ["mrk"] = {"Hmwaveke"}, ["mrl"] = {"Mortlockese"}, ["mrm"] = {"Merlav", "Mwerlap"}, ["mrn"] = {"Cheke Holo"}, ["mro"] = {"Mru"}, ["mrp"] = {"Morouas"}, ["mrq"] = {"North Marquesan"}, ["mrr"] = {"Maria (India)"}, ["mrs"] = {"Maragus"}, ["mrt"] = {"Marghi Central"}, ["mru"] = {"Mono (Cameroon)"}, ["mrv"] = {"Mangareva"}, ["mrw"] = {"Maranao"}, ["mrx"] = {"Maremgi", "Dineor"}, ["mry"] = {"Mandaya"}, ["mrz"] = {"Marind"}, ["msb"] = {"Masbatenyo"}, ["msc"] = {"Sankaran Maninka"}, ["msd"] = {"Yucatec Maya Sign Language"}, ["mse"] = {"Musey"}, ["msf"] = {"Mekwei"}, ["msg"] = {"Moraid"}, ["msh"] = {"Masikoro Malagasy"}, ["msi"] = {"Sabah Malay"}, ["msj"] = {"Ma (Democratic Republic of Congo)"}, ["msk"] = {"Mansaka"}, ["msl"] = {"Molof", "Poule"}, ["msm"] = {"Agusan Manobo"}, ["msn"] = {"Vurës"}, ["mso"] = {"Mombum"}, ["msp"] = {"Maritsauá"}, ["msq"] = {"Caac"}, ["msr"] = {"Mongolian Sign Language"}, ["mss"] = {"West Masela"}, ["msu"] = {"Musom"}, ["msv"] = {"Maslam"}, ["msw"] = {"Mansoanka"}, ["msx"] = {"Moresada"}, ["msy"] = {"Aruamu"}, ["msz"] = {"Momare"}, ["mta"] = {"Cotabato Manobo"}, ["mtb"] = {"Anyin Morofo"}, ["mtc"] = {"Munit"}, ["mtd"] = {"Mualang"}, ["mte"] = {"Mono (Solomon Islands)"}, ["mtf"] = {"Murik (Papua New Guinea)"}, ["mtg"] = {"Una"}, ["mth"] = {"Munggui"}, ["mti"] = {"Maiwa (Papua New Guinea)"}, ["mtj"] = {"Moskona"}, ["mtk"] = {"Mbe'"}, ["mtl"] = {"Montol"}, ["mtm"] = {"Mator"}, ["mtn"] = {"Matagalpa"}, ["mto"] = {"Totontepec Mixe"}, ["mtp"] = {"Wichí Lhamtés Nocten"}, ["mtq"] = {"Muong"}, ["mtr"] = {"Mewari"}, ["mts"] = {"Yora"}, ["mtt"] = {"Mota"}, ["mtu"] = {"Tututepec Mixtec"}, ["mtv"] = {"Asaro'o"}, ["mtw"] = {"Southern Binukidnon"}, ["mtx"] = {"Tidaá Mixtec"}, ["mty"] = {"Nabi"}, ["mua"] = {"Mundang"}, ["mub"] = {"Mubi"}, ["muc"] = {"Ajumbu"}, ["mud"] = {"Mednyj Aleut"}, ["mue"] = {"Media Lengua"}, ["mug"] = {"Musgu"}, ["muh"] = {"Mündü"}, ["mui"] = {"Musi"}, ["muj"] = {"Mabire"}, ["muk"] = {"Mugom"}, ["mul"] = {"Multiple languages"}, ["mum"] = {"Maiwala"}, ["mun"] = {"Munda languages"}, ["muo"] = {"Nyong"}, ["mup"] = {"Malvi"}, ["muq"] = {"Eastern Xiangxi Miao"}, ["mur"] = {"Murle"}, ["mus"] = {"Creek"}, ["mut"] = {"Western Muria"}, ["muu"] = {"Yaaku"}, ["muv"] = {"Muthuvan"}, ["mux"] = {"Bo-Ung"}, ["muy"] = {"Muyang"}, ["muz"] = {"Mursi"}, ["mva"] = {"Manam"}, ["mvb"] = {"Mattole"}, ["mvd"] = {"Mamboru"}, ["mve"] = {"Marwari (Pakistan)"}, ["mvf"] = {"Peripheral Mongolian"}, ["mvg"] = {"Yucuañe Mixtec"}, ["mvh"] = {"Mulgi"}, ["mvi"] = {"Miyako"}, ["mvk"] = {"Mekmek"}, ["mvl"] = {"Mbara (Australia)"}, ["mvn"] = {"Minaveha"}, ["mvo"] = {"Marovo"}, ["mvp"] = {"Duri"}, ["mvq"] = {"Moere"}, ["mvr"] = {"Marau"}, ["mvs"] = {"Massep"}, ["mvt"] = {"Mpotovoro"}, ["mvu"] = {"Marfa"}, ["mvv"] = {"Tagal Murut"}, ["mvw"] = {"Machinga"}, ["mvx"] = {"Meoswar"}, ["mvy"] = {"Indus Kohistani"}, ["mvz"] = {"Mesqan"}, ["mwa"] = {"Mwatebu"}, ["mwb"] = {"Juwal"}, ["mwc"] = {"Are"}, ["mwe"] = {"Mwera (Chimwera)"}, ["mwf"] = {"Murrinh-Patha"}, ["mwg"] = {"Aiklep"}, ["mwh"] = {"Mouk-Aria"}, ["mwi"] = {"Labo", "Ninde"}, ["mwk"] = {"Kita Maninkakan"}, ["mwl"] = {"Mirandese"}, ["mwm"] = {"Sar"}, ["mwn"] = {"Nyamwanga"}, ["mwo"] = {"Central Maewo"}, ["mwp"] = {"Kala Lagaw Ya"}, ["mwq"] = {"Mün Chin"}, ["mwr"] = {"Marwari"}, ["mws"] = {"Mwimbi-Muthambi"}, ["mwt"] = {"Moken"}, ["mwu"] = {"Mittu"}, ["mwv"] = {"Mentawai"}, ["mww"] = {"Hmong Daw"}, ["mwz"] = {"Moingi"}, ["mxa"] = {"Northwest Oaxaca Mixtec"}, ["mxb"] = {"Tezoatlán Mixtec"}, ["mxc"] = {"Manyika"}, ["mxd"] = {"Modang"}, ["mxe"] = {"Mele-Fila"}, ["mxf"] = {"Malgbe"}, ["mxg"] = {"Mbangala"}, ["mxh"] = {"Mvuba"}, ["mxi"] = {"Mozarabic"}, ["mxj"] = {"Miju-Mishmi", "Geman Deng"}, ["mxk"] = {"Monumbo"}, ["mxl"] = {"Maxi Gbe"}, ["mxm"] = {"Meramera"}, ["mxn"] = {"Moi (Indonesia)"}, ["mxo"] = {"Mbowe"}, ["mxp"] = {"Tlahuitoltepec Mixe"}, ["mxq"] = {"Juquila Mixe"}, ["mxr"] = {"Murik (Malaysia)"}, ["mxs"] = {"Huitepec Mixtec"}, ["mxt"] = {"Jamiltepec Mixtec"}, ["mxu"] = {"Mada (Cameroon)"}, ["mxv"] = {"Metlatónoc Mixtec"}, ["mxw"] = {"Namo"}, ["mxx"] = {"Mahou", "Mawukakan"}, ["mxy"] = {"Southeastern Nochixtlán Mixtec"}, ["mxz"] = {"Central Masela"}, ["myb"] = {"Mbay"}, ["myc"] = {"Mayeka"}, ["mye"] = {"Myene"}, ["myf"] = {"Bambassi"}, ["myg"] = {"Manta"}, ["myh"] = {"Makah"}, ["myj"] = {"Mangayat"}, ["myk"] = {"Mamara Senoufo"}, ["myl"] = {"Moma"}, ["mym"] = {"Me'en"}, ["myn"] = {"Mayan languages"}, ["myo"] = {"Anfillo"}, ["myp"] = {"Pirahã"}, ["myr"] = {"Muniche"}, ["mys"] = {"Mesmes"}, ["myu"] = {"Mundurukú"}, ["myv"] = {"Erzya"}, ["myw"] = {"Muyuw"}, ["myx"] = {"Masaaba"}, ["myy"] = {"Macuna"}, ["myz"] = {"Classical Mandaic"}, ["mza"] = {"Santa María Zacatepec Mixtec"}, ["mzb"] = {"Tumzabt"}, ["mzc"] = {"Madagascar Sign Language"}, ["mzd"] = {"Malimba"}, ["mze"] = {"Morawa"}, ["mzg"] = {"Monastic Sign Language"}, ["mzh"] = {"Wichí Lhamtés Güisnay"}, ["mzi"] = {"Ixcatlán Mazatec"}, ["mzj"] = {"Manya"}, ["mzk"] = {"Nigeria Mambila"}, ["mzl"] = {"Mazatlán Mixe"}, ["mzm"] = {"Mumuye"}, ["mzn"] = {"Mazanderani"}, ["mzo"] = {"Matipuhy"}, ["mzp"] = {"Movima"}, ["mzq"] = {"Mori Atas"}, ["mzr"] = {"Marúbo"}, ["mzs"] = {"Macanese"}, ["mzt"] = {"Mintil"}, ["mzu"] = {"Inapang"}, ["mzv"] = {"Manza"}, ["mzw"] = {"Deg"}, ["mzx"] = {"Mawayana"}, ["mzy"] = {"Mozambican Sign Language"}, ["mzz"] = {"Maiadomu"}, ["naa"] = {"Namla"}, ["nab"] = {"Southern Nambikuára"}, ["nac"] = {"Narak"}, ["nae"] = {"Naka'ela"}, ["naf"] = {"Nabak"}, ["nag"] = {"Naga Pidgin"}, ["nah"] = {"Nahuatl languages"}, ["nai"] = {"North American Indian languages"}, ["naj"] = {"Nalu"}, ["nak"] = {"Nakanai"}, ["nal"] = {"Nalik"}, ["nam"] = {"Ngan'gityemerri"}, ["nan"] = {"Min Nan Chinese"}, ["nao"] = {"Naaba"}, ["nap"] = {"Neapolitan"}, ["naq"] = {"Khoekhoe", "Nama (Namibia)"}, ["nar"] = {"Iguta"}, ["nas"] = {"Naasioi"}, ["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"}, ["naw"] = {"Nawuri"}, ["nax"] = {"Nakwi"}, ["nay"] = {"Ngarrindjeri"}, ["naz"] = {"Coatepec Nahuatl"}, ["nba"] = {"Nyemba"}, ["nbb"] = {"Ndoe"}, ["nbc"] = {"Chang Naga"}, ["nbd"] = {"Ngbinda"}, ["nbe"] = {"Konyak Naga"}, ["nbg"] = {"Nagarchal"}, ["nbh"] = {"Ngamo"}, ["nbi"] = {"Mao Naga"}, ["nbj"] = {"Ngarinyman"}, ["nbk"] = {"Nake"}, ["nbm"] = {"Ngbaka Ma'bo"}, ["nbn"] = {"Kuri"}, ["nbo"] = {"Nkukoli"}, ["nbp"] = {"Nnam"}, ["nbq"] = {"Nggem"}, ["nbr"] = {"Numana"}, ["nbs"] = {"Namibian Sign Language"}, ["nbt"] = {"Na"}, ["nbu"] = {"Rongmei Naga"}, ["nbv"] = {"Ngamambo"}, ["nbw"] = {"Southern Ngbandi"}, ["nby"] = {"Ningera"}, ["nca"] = {"Iyo"}, ["ncb"] = {"Central Nicobarese"}, ["ncc"] = {"Ponam"}, ["ncd"] = {"Nachering"}, ["nce"] = {"Yale"}, ["ncf"] = {"Notsi"}, ["ncg"] = {"Nisga'a"}, ["nch"] = {"Central Huasteca Nahuatl"}, ["nci"] = {"Classical Nahuatl"}, ["ncj"] = {"Northern Puebla Nahuatl"}, ["nck"] = {"Na-kara"}, ["ncl"] = {"Michoacán Nahuatl"}, ["ncm"] = {"Nambo"}, ["ncn"] = {"Nauna"}, ["nco"] = {"Sibe"}, ["ncq"] = {"Northern Katang"}, ["ncr"] = {"Ncane"}, ["ncs"] = {"Nicaraguan Sign Language"}, ["nct"] = {"Chothe Naga"}, ["ncu"] = {"Chumburung"}, ["ncx"] = {"Central Puebla Nahuatl"}, ["ncz"] = {"Natchez"}, ["nda"] = {"Ndasa"}, ["ndb"] = {"Kenswei Nsei"}, ["ndc"] = {"Ndau"}, ["ndd"] = {"Nde-Nsele-Nta"}, ["ndf"] = {"Nadruvian"}, ["ndg"] = {"Ndengereko"}, ["ndh"] = {"Ndali"}, ["ndi"] = {"Samba Leko"}, ["ndj"] = {"Ndamba"}, ["ndk"] = {"Ndaka"}, ["ndl"] = {"Ndolo"}, ["ndm"] = {"Ndam"}, ["ndn"] = {"Ngundi"}, ["ndp"] = {"Ndo"}, ["ndq"] = {"Ndombe"}, ["ndr"] = {"Ndoola"}, ["nds"] = {"Low German", "Low Saxon"}, ["ndt"] = {"Ndunga"}, ["ndu"] = {"Dugun"}, ["ndv"] = {"Ndut"}, ["ndw"] = {"Ndobo"}, ["ndx"] = {"Nduga"}, ["ndy"] = {"Lutos"}, ["ndz"] = {"Ndogo"}, ["nea"] = {"Eastern Ngad'a"}, ["neb"] = {"Toura (Côte d'Ivoire)"}, ["nec"] = {"Nedebang"}, ["ned"] = {"Nde-Gbite"}, ["nee"] = {"Nêlêmwa-Nixumwak"}, ["nef"] = {"Nefamese"}, ["neg"] = {"Negidal"}, ["neh"] = {"Nyenkha"}, ["nei"] = {"Neo-Hittite"}, ["nej"] = {"Neko"}, ["nek"] = {"Neku"}, ["nem"] = {"Nemi"}, ["nen"] = {"Nengone"}, ["neo"] = {"Ná-Meo"}, ["neq"] = {"North Central Mixe"}, ["ner"] = {"Yahadian"}, ["nes"] = {"Bhoti Kinnauri"}, ["net"] = {"Nete"}, ["neu"] = {"Neo"}, ["nev"] = {"Nyaheun"}, ["new"] = {"Newari", "Nepal Bhasa"}, ["nex"] = {"Neme"}, ["ney"] = {"Neyo"}, ["nez"] = {"Nez Perce"}, ["nfa"] = {"Dhao"}, ["nfd"] = {"Ahwai"}, ["nfl"] = {"Ayiwo", "Äiwoo"}, ["nfr"] = {"Nafaanra"}, ["nfu"] = {"Mfumte"}, ["nga"] = {"Ngbaka"}, ["ngb"] = {"Northern Ngbandi"}, ["ngc"] = {"Ngombe (Democratic Republic of Congo)"}, ["ngd"] = {"Ngando (Central African Republic)"}, ["nge"] = {"Ngemba"}, ["ngf"] = {"Trans-New Guinea languages"}, ["ngg"] = {"Ngbaka Manza"}, ["ngh"] = {"Nǁng"}, ["ngi"] = {"Ngizim"}, ["ngj"] = {"Ngie"}, ["ngk"] = {"Dalabon"}, ["ngl"] = {"Lomwe"}, ["ngm"] = {"Ngatik Men's Creole"}, ["ngn"] = {"Ngwo"}, ["ngp"] = {"Ngulu"}, ["ngq"] = {"Ngurimi", "Ngoreme"}, ["ngr"] = {"Engdewu"}, ["ngs"] = {"Gvoko"}, ["ngt"] = {"Kriang", "Ngeq"}, ["ngu"] = {"Guerrero Nahuatl"}, ["ngv"] = {"Nagumi"}, ["ngw"] = {"Ngwaba"}, ["ngx"] = {"Nggwahyi"}, ["ngy"] = {"Tibea"}, ["ngz"] = {"Ngungwel"}, ["nha"] = {"Nhanda"}, ["nhb"] = {"Beng"}, ["nhc"] = {"Tabasco Nahuatl"}, ["nhd"] = {"Chiripá", "Ava Guaraní"}, ["nhe"] = {"Eastern Huasteca Nahuatl"}, ["nhf"] = {"Nhuwala"}, ["nhg"] = {"Tetelcingo Nahuatl"}, ["nhh"] = {"Nahari"}, ["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"}, ["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"}, ["nhm"] = {"Morelos Nahuatl"}, ["nhn"] = {"Central Nahuatl"}, ["nho"] = {"Takuu"}, ["nhp"] = {"Isthmus-Pajapan Nahuatl"}, ["nhq"] = {"Huaxcaleca Nahuatl"}, ["nhr"] = {"Naro"}, ["nht"] = {"Ometepec Nahuatl"}, ["nhu"] = {"Noone"}, ["nhv"] = {"Temascaltepec Nahuatl"}, ["nhw"] = {"Western Huasteca Nahuatl"}, ["nhx"] = {"Isthmus-Mecayapan Nahuatl"}, ["nhy"] = {"Northern Oaxaca Nahuatl"}, ["nhz"] = {"Santa María La Alta Nahuatl"}, ["nia"] = {"Nias"}, ["nib"] = {"Nakame"}, ["nic"] = {"Niger-Kordofanian languages"}, ["nid"] = {"Ngandi"}, ["nie"] = {"Niellim"}, ["nif"] = {"Nek"}, ["nig"] = {"Ngalakgan"}, ["nih"] = {"Nyiha (Tanzania)"}, ["nii"] = {"Nii"}, ["nij"] = {"Ngaju"}, ["nik"] = {"Southern Nicobarese"}, ["nil"] = {"Nila"}, ["nim"] = {"Nilamba"}, ["nin"] = {"Ninzo"}, ["nio"] = {"Nganasan"}, ["niq"] = {"Nandi"}, ["nir"] = {"Nimboran"}, ["nis"] = {"Nimi"}, ["nit"] = {"Southeastern Kolami"}, ["niu"] = {"Niuean"}, ["niv"] = {"Gilyak"}, ["niw"] = {"Nimo"}, ["nix"] = {"Hema"}, ["niy"] = {"Ngiti"}, ["niz"] = {"Ningil"}, ["nja"] = {"Nzanyi"}, ["njb"] = {"Nocte Naga"}, ["njd"] = {"Ndonde Hamba"}, ["njh"] = {"Lotha Naga"}, ["nji"] = {"Gudanji"}, ["njj"] = {"Njen"}, ["njl"] = {"Njalgulgule"}, ["njm"] = {"Angami Naga"}, ["njn"] = {"Liangmai Naga"}, ["njo"] = {"Ao Naga"}, ["njr"] = {"Njerep"}, ["njs"] = {"Nisa"}, ["njt"] = {"Ndyuka-Trio Pidgin"}, ["nju"] = {"Ngadjunmaya"}, ["njx"] = {"Kunyi"}, ["njy"] = {"Njyem"}, ["njz"] = {"Nyishi"}, ["nka"] = {"Nkoya"}, ["nkb"] = {"Khoibu Naga"}, ["nkc"] = {"Nkongho"}, ["nkd"] = {"Koireng"}, ["nke"] = {"Duke"}, ["nkf"] = {"Inpui Naga"}, ["nkg"] = {"Nekgini"}, ["nkh"] = {"Khezha Naga"}, ["nki"] = {"Thangal Naga"}, ["nkj"] = {"Nakai"}, ["nkk"] = {"Nokuku"}, ["nkm"] = {"Namat"}, ["nkn"] = {"Nkangala"}, ["nko"] = {"Nkonya"}, ["nkp"] = {"Niuatoputapu"}, ["nkq"] = {"Nkami"}, ["nkr"] = {"Nukuoro"}, ["nks"] = {"North Asmat"}, ["nkt"] = {"Nyika (Tanzania)"}, ["nku"] = {"Bouna Kulango"}, ["nkv"] = {"Nyika (Malawi and Zambia)"}, ["nkw"] = {"Nkutu"}, ["nkx"] = {"Nkoroo"}, ["nkz"] = {"Nkari"}, ["nla"] = {"Ngombale"}, ["nlc"] = {"Nalca"}, ["nle"] = {"East Nyala"}, ["nlg"] = {"Gela"}, ["nli"] = {"Grangali"}, ["nlj"] = {"Nyali"}, ["nlk"] = {"Ninia Yali"}, ["nll"] = {"Nihali"}, ["nlm"] = {"Mankiyali"}, ["nlo"] = {"Ngul"}, ["nlq"] = {"Lao Naga"}, ["nlu"] = {"Nchumbulu"}, ["nlv"] = {"Orizaba Nahuatl"}, ["nlw"] = {"Walangama"}, ["nlx"] = {"Nahali"}, ["nly"] = {"Nyamal"}, ["nlz"] = {"Nalögo"}, ["nma"] = {"Maram Naga"}, ["nmb"] = {"Big Nambas", "V'ënen Taut"}, ["nmc"] = {"Ngam"}, ["nmd"] = {"Ndumu"}, ["nme"] = {"Mzieme Naga"}, ["nmf"] = {"Tangkhul Naga (India)"}, ["nmg"] = {"Kwasio"}, ["nmh"] = {"Monsang Naga"}, ["nmi"] = {"Nyam"}, ["nmj"] = {"Ngombe (Central African Republic)"}, ["nmk"] = {"Namakura"}, ["nml"] = {"Ndemli"}, ["nmm"] = {"Manangba"}, ["nmn"] = {"ǃXóõ"}, ["nmo"] = {"Moyon Naga"}, ["nmp"] = {"Nimanbur"}, ["nmq"] = {"Nambya"}, ["nmr"] = {"Nimbari"}, ["nms"] = {"Letemboi"}, ["nmt"] = {"Namonuito"}, ["nmu"] = {"Northeast Maidu"}, ["nmv"] = {"Ngamini"}, ["nmw"] = {"Nimoa", "Rifao"}, ["nmx"] = {"Nama (Papua New Guinea)"}, ["nmy"] = {"Namuyi"}, ["nmz"] = {"Nawdm"}, ["nna"] = {"Nyangumarta"}, ["nnb"] = {"Nande"}, ["nnc"] = {"Nancere"}, ["nnd"] = {"West Ambae"}, ["nne"] = {"Ngandyera"}, ["nnf"] = {"Ngaing"}, ["nng"] = {"Maring Naga"}, ["nnh"] = {"Ngiemboon"}, ["nni"] = {"North Nuaulu"}, ["nnj"] = {"Nyangatom"}, ["nnk"] = {"Nankina"}, ["nnl"] = {"Northern Rengma Naga"}, ["nnm"] = {"Namia"}, ["nnn"] = {"Ngete"}, ["nnp"] = {"Wancho Naga"}, ["nnq"] = {"Ngindo"}, ["nnr"] = {"Narungga"}, ["nnt"] = {"Nanticoke"}, ["nnu"] = {"Dwang"}, ["nnv"] = {"Nugunu (Australia)"}, ["nnw"] = {"Southern Nuni"}, ["nny"] = {"Nyangga"}, ["nnz"] = {"Nda'nda'"}, ["noa"] = {"Woun Meu"}, ["noc"] = {"Nuk"}, ["nod"] = {"Northern Thai"}, ["noe"] = {"Nimadi"}, ["nof"] = {"Nomane"}, ["nog"] = {"Nogai"}, ["noh"] = {"Nomu"}, ["noi"] = {"Noiri"}, ["noj"] = {"Nonuya"}, ["nok"] = {"Nooksack"}, ["nol"] = {"Nomlaki"}, ["non"] = {"Old Norse"}, ["nop"] = {"Numanggang"}, ["noq"] = {"Ngongo"}, ["nos"] = {"Eastern Nisu"}, ["not"] = {"Nomatsiguenga"}, ["nou"] = {"Ewage-Notu"}, ["nov"] = {"Novial"}, ["now"] = {"Nyambo"}, ["noy"] = {"Noy"}, ["noz"] = {"Nayi"}, ["npa"] = {"Nar Phu"}, ["npb"] = {"Nupbikha"}, ["npg"] = {"Ponyo-Gongwang Naga"}, ["nph"] = {"Phom Naga"}, ["npi"] = {"Nepali (individual language)"}, ["npl"] = {"Southeastern Puebla Nahuatl"}, ["npn"] = {"Mondropolon"}, ["npo"] = {"Pochuri Naga"}, ["nps"] = {"Nipsan"}, ["npu"] = {"Puimei Naga"}, ["npx"] = {"Noipx"}, ["npy"] = {"Napu"}, ["nqg"] = {"Southern Nago"}, ["nqk"] = {"Kura Ede Nago"}, ["nql"] = {"Ngendelengo"}, ["nqm"] = {"Ndom"}, ["nqn"] = {"Nen"}, ["nqo"] = {"N'Ko", "N’Ko"}, ["nqq"] = {"Kyan-Karyaw Naga"}, ["nqt"] = {"Nteng"}, ["nqy"] = {"Akyaung Ari Naga"}, ["nra"] = {"Ngom"}, ["nrb"] = {"Nara"}, ["nrc"] = {"Noric"}, ["nre"] = {"Southern Rengma Naga"}, ["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"}, ["nrg"] = {"Narango"}, ["nri"] = {"Chokri Naga"}, ["nrk"] = {"Ngarla"}, ["nrl"] = {"Ngarluma"}, ["nrm"] = {"Narom"}, ["nrn"] = {"Norn"}, ["nrp"] = {"North Picene"}, ["nrr"] = {"Norra", "Nora"}, ["nrt"] = {"Northern Kalapuya"}, ["nru"] = {"Narua"}, ["nrx"] = {"Ngurmbur"}, ["nrz"] = {"Lala"}, ["nsa"] = {"Sangtam Naga"}, ["nsb"] = {"Lower Nossob"}, ["nsc"] = {"Nshi"}, ["nsd"] = {"Southern Nisu"}, ["nse"] = {"Nsenga"}, ["nsf"] = {"Northwestern Nisu"}, ["nsg"] = {"Ngasa"}, ["nsh"] = {"Ngoshie"}, ["nsi"] = {"Nigerian Sign Language"}, ["nsk"] = {"Naskapi"}, ["nsl"] = {"Norwegian Sign Language"}, ["nsm"] = {"Sumi Naga"}, ["nsn"] = {"Nehan"}, ["nso"] = {"Pedi", "Northern Sotho", "Sepedi"}, ["nsp"] = {"Nepalese Sign Language"}, ["nsq"] = {"Northern Sierra Miwok"}, ["nsr"] = {"Maritime Sign Language"}, ["nss"] = {"Nali"}, ["nst"] = {"Tase Naga"}, ["nsu"] = {"Sierra Negra Nahuatl"}, ["nsv"] = {"Southwestern Nisu"}, ["nsw"] = {"Navut"}, ["nsx"] = {"Nsongo"}, ["nsy"] = {"Nasal"}, ["nsz"] = {"Nisenan"}, ["ntd"] = {"Northern Tidung"}, ["nte"] = {"Nathembo"}, ["ntg"] = {"Ngantangarra"}, ["nti"] = {"Natioro"}, ["ntj"] = {"Ngaanyatjarra"}, ["ntk"] = {"Ikoma-Nata-Isenye"}, ["ntm"] = {"Nateni"}, ["nto"] = {"Ntomba"}, ["ntp"] = {"Northern Tepehuan"}, ["ntr"] = {"Delo"}, ["ntu"] = {"Natügu"}, ["ntw"] = {"Nottoway"}, ["ntx"] = {"Tangkhul Naga (Myanmar)"}, ["nty"] = {"Mantsi"}, ["ntz"] = {"Natanzi"}, ["nua"] = {"Yuanga"}, ["nub"] = {"Nubian languages"}, ["nuc"] = {"Nukuini"}, ["nud"] = {"Ngala"}, ["nue"] = {"Ngundu"}, ["nuf"] = {"Nusu"}, ["nug"] = {"Nungali"}, ["nuh"] = {"Ndunda"}, ["nui"] = {"Ngumbi"}, ["nuj"] = {"Nyole"}, ["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"}, ["nul"] = {"Nusa Laut"}, ["num"] = {"Niuafo'ou"}, ["nun"] = {"Anong"}, ["nuo"] = {"Nguôn"}, ["nup"] = {"Nupe-Nupe-Tako"}, ["nuq"] = {"Nukumanu"}, ["nur"] = {"Nukuria"}, ["nus"] = {"Nuer"}, ["nut"] = {"Nung (Viet Nam)"}, ["nuu"] = {"Ngbundu"}, ["nuv"] = {"Northern Nuni"}, ["nuw"] = {"Nguluwan"}, ["nux"] = {"Mehek"}, ["nuy"] = {"Nunggubuyu"}, ["nuz"] = {"Tlamacazapa Nahuatl"}, ["nvh"] = {"Nasarian"}, ["nvm"] = {"Namiae"}, ["nvo"] = {"Nyokon"}, ["nwa"] = {"Nawathinehena"}, ["nwb"] = {"Nyabwa"}, ["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"}, ["nwe"] = {"Ngwe"}, ["nwg"] = {"Ngayawung"}, ["nwi"] = {"Southwest Tanna"}, ["nwm"] = {"Nyamusa-Molo"}, ["nwo"] = {"Nauo"}, ["nwr"] = {"Nawaru"}, ["nww"] = {"Ndwewe"}, ["nwx"] = {"Middle Newar"}, ["nwy"] = {"Nottoway-Meherrin"}, ["nxa"] = {"Nauete"}, ["nxd"] = {"Ngando (Democratic Republic of Congo)"}, ["nxe"] = {"Nage"}, ["nxg"] = {"Ngad'a"}, ["nxi"] = {"Nindi"}, ["nxk"] = {"Koki Naga"}, ["nxl"] = {"South Nuaulu"}, ["nxm"] = {"Numidian"}, ["nxn"] = {"Ngawun"}, ["nxo"] = {"Ndambomo"}, ["nxq"] = {"Naxi"}, ["nxr"] = {"Ninggerum"}, ["nxx"] = {"Nafri"}, ["nyb"] = {"Nyangbo"}, ["nyc"] = {"Nyanga-li"}, ["nyd"] = {"Nyore", "Olunyole"}, ["nye"] = {"Nyengo"}, ["nyf"] = {"Giryama", "Kigiryama"}, ["nyg"] = {"Nyindu"}, ["nyh"] = {"Nyikina"}, ["nyi"] = {"Ama (Sudan)"}, ["nyj"] = {"Nyanga"}, ["nyk"] = {"Nyaneka"}, ["nyl"] = {"Nyeu"}, ["nym"] = {"Nyamwezi"}, ["nyn"] = {"Nyankole"}, ["nyo"] = {"Nyoro"}, ["nyp"] = {"Nyang'i"}, ["nyq"] = {"Nayini"}, ["nyr"] = {"Nyiha (Malawi)"}, ["nys"] = {"Nyungar"}, ["nyt"] = {"Nyawaygi"}, ["nyu"] = {"Nyungwe"}, ["nyv"] = {"Nyulnyul"}, ["nyw"] = {"Nyaw"}, ["nyx"] = {"Nganyaywana"}, ["nyy"] = {"Nyakyusa-Ngonde"}, ["nza"] = {"Tigon Mbembe"}, ["nzb"] = {"Njebi"}, ["nzd"] = {"Nzadi"}, ["nzi"] = {"Nzima"}, ["nzk"] = {"Nzakara"}, ["nzm"] = {"Zeme Naga"}, ["nzr"] = {"Dir-Nyamzak-Mbarimi"}, ["nzs"] = {"New Zealand Sign Language"}, ["nzu"] = {"Teke-Nzikou"}, ["nzy"] = {"Nzakambay"}, ["nzz"] = {"Nanga Dama Dogon"}, ["oaa"] = {"Orok"}, ["oac"] = {"Oroch"}, ["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"}, ["oav"] = {"Old Avar"}, ["obi"] = {"Obispeño"}, ["obk"] = {"Southern Bontok"}, ["obl"] = {"Oblo"}, ["obm"] = {"Moabite"}, ["obo"] = {"Obo Manobo"}, ["obr"] = {"Old Burmese"}, ["obt"] = {"Old Breton"}, ["obu"] = {"Obulom"}, ["oca"] = {"Ocaina"}, ["och"] = {"Old Chinese"}, ["ocm"] = {"Old Cham"}, ["oco"] = {"Old Cornish"}, ["ocu"] = {"Atzingo Matlatzinca"}, ["oda"] = {"Odut"}, ["odk"] = {"Od"}, ["odt"] = {"Old Dutch"}, ["odu"] = {"Odual"}, ["ofo"] = {"Ofo"}, ["ofs"] = {"Old Frisian"}, ["ofu"] = {"Efutop"}, ["ogb"] = {"Ogbia"}, ["ogc"] = {"Ogbah"}, ["oge"] = {"Old Georgian"}, ["ogg"] = {"Ogbogolo"}, ["ogo"] = {"Khana"}, ["ogu"] = {"Ogbronuagum"}, ["oht"] = {"Old Hittite"}, ["ohu"] = {"Old Hungarian"}, ["oia"] = {"Oirata"}, ["oie"] = {"Okolie"}, ["oin"] = {"Inebu One"}, ["ojb"] = {"Northwestern Ojibwa"}, ["ojc"] = {"Central Ojibwa"}, ["ojg"] = {"Eastern Ojibwa"}, ["ojp"] = {"Old Japanese"}, ["ojs"] = {"Severn Ojibwa"}, ["ojv"] = {"Ontong Java"}, ["ojw"] = {"Western Ojibwa"}, ["oka"] = {"Okanagan"}, ["okb"] = {"Okobo"}, ["okc"] = {"Kobo"}, ["okd"] = {"Okodia"}, ["oke"] = {"Okpe (Southwestern Edo)"}, ["okg"] = {"Koko Babangk"}, ["okh"] = {"Koresh-e Rostam"}, ["oki"] = {"Okiek"}, ["okj"] = {"Oko-Juwoi"}, ["okk"] = {"Kwamtim One"}, ["okl"] = {"Old Kentish Sign Language"}, ["okm"] = {"Middle Korean (10th-16th cent.)"}, ["okn"] = {"Oki-No-Erabu"}, ["oko"] = {"Old Korean (3rd-9th cent.)"}, ["okr"] = {"Kirike"}, ["oks"] = {"Oko-Eni-Osayen"}, ["oku"] = {"Oku"}, ["okv"] = {"Orokaiva"}, ["okx"] = {"Okpe (Northwestern Edo)"}, ["okz"] = {"Old Khmer"}, ["ola"] = {"Walungge"}, ["old"] = {"Mochi"}, ["ole"] = {"Olekha"}, ["olk"] = {"Olkol"}, ["olm"] = {"Oloma"}, ["olo"] = {"Livvi"}, ["olr"] = {"Olrat"}, ["olt"] = {"Old Lithuanian"}, ["olu"] = {"Kuvale"}, ["oma"] = {"Omaha-Ponca"}, ["omb"] = {"East Ambae"}, ["omc"] = {"Mochica"}, ["omg"] = {"Omagua"}, ["omi"] = {"Omi"}, ["omk"] = {"Omok"}, ["oml"] = {"Ombo"}, ["omn"] = {"Minoan"}, ["omo"] = {"Utarmbung"}, ["omp"] = {"Old Manipuri"}, ["omq"] = {"Oto-Manguean languages"}, ["omr"] = {"Old Marathi"}, ["omt"] = {"Omotik"}, ["omu"] = {"Omurano"}, ["omv"] = {"Omotic languages"}, ["omw"] = {"South Tairora"}, ["omx"] = {"Old Mon"}, ["omy"] = {"Old Malay"}, ["ona"] = {"Ona"}, ["onb"] = {"Lingao"}, ["one"] = {"Oneida"}, ["ong"] = {"Olo"}, ["oni"] = {"Onin"}, ["onj"] = {"Onjob"}, ["onk"] = {"Kabore One"}, ["onn"] = {"Onobasulu"}, ["ono"] = {"Onondaga"}, ["onp"] = {"Sartang"}, ["onr"] = {"Northern One"}, ["ons"] = {"Ono"}, ["ont"] = {"Ontenu"}, ["onu"] = {"Unua"}, ["onw"] = {"Old Nubian"}, ["onx"] = {"Onin Based Pidgin"}, ["ood"] = {"Tohono O'odham"}, ["oog"] = {"Ong"}, ["oon"] = {"Önge"}, ["oor"] = {"Oorlams"}, ["oos"] = {"Old Ossetic"}, ["opa"] = {"Okpamheri"}, ["opk"] = {"Kopkaka"}, ["opm"] = {"Oksapmin"}, ["opo"] = {"Opao"}, ["opt"] = {"Opata"}, ["opy"] = {"Ofayé"}, ["ora"] = {"Oroha"}, ["orc"] = {"Orma"}, ["ore"] = {"Orejón"}, ["org"] = {"Oring"}, ["orh"] = {"Oroqen"}, ["orn"] = {"Orang Kanaq"}, ["oro"] = {"Orokolo"}, ["orr"] = {"Oruma"}, ["ors"] = {"Orang Seletar"}, ["ort"] = {"Adivasi Oriya"}, ["oru"] = {"Ormuri"}, ["orv"] = {"Old Russian"}, ["orw"] = {"Oro Win"}, ["orx"] = {"Oro"}, ["ory"] = {"Odia (individual language)", "Oriya (individual language)"}, ["orz"] = {"Ormu"}, ["osa"] = {"Osage"}, ["osc"] = {"Oscan"}, ["osi"] = {"Osing"}, ["osn"] = {"Old Sundanese"}, ["oso"] = {"Ososo"}, ["osp"] = {"Old Spanish"}, ["ost"] = {"Osatu"}, ["osu"] = {"Southern One"}, ["osx"] = {"Old Saxon"}, ["ota"] = {"Ottoman Turkish (1500-1928)"}, ["otb"] = {"Old Tibetan"}, ["otd"] = {"Ot Danum"}, ["ote"] = {"Mezquital Otomi"}, ["oti"] = {"Oti"}, ["otk"] = {"Old Turkish"}, ["otl"] = {"Tilapa Otomi"}, ["otm"] = {"Eastern Highland Otomi"}, ["otn"] = {"Tenango Otomi"}, ["oto"] = {"Otomian languages"}, ["otq"] = {"Querétaro Otomi"}, ["otr"] = {"Otoro"}, ["ots"] = {"Estado de México Otomi"}, ["ott"] = {"Temoaya Otomi"}, ["otu"] = {"Otuke"}, ["otw"] = {"Ottawa"}, ["otx"] = {"Texcatepec Otomi"}, ["oty"] = {"Old Tamil"}, ["otz"] = {"Ixtenco Otomi"}, ["oua"] = {"Tagargrent"}, ["oub"] = {"Glio-Oubi"}, ["oue"] = {"Oune"}, ["oui"] = {"Old Uighur"}, ["oum"] = {"Ouma"}, ["ovd"] = {"Elfdalian", "Övdalian"}, ["owi"] = {"Owiniga"}, ["owl"] = {"Old Welsh"}, ["oyb"] = {"Oy"}, ["oyd"] = {"Oyda"}, ["oym"] = {"Wayampi"}, ["oyy"] = {"Oya'oya"}, ["ozm"] = {"Koonzime"}, ["paa"] = {"Papuan languages"}, ["pab"] = {"Parecís"}, ["pac"] = {"Pacoh"}, ["pad"] = {"Paumarí"}, ["pae"] = {"Pagibete"}, ["paf"] = {"Paranawát"}, ["pag"] = {"Pangasinan"}, ["pah"] = {"Tenharim"}, ["pai"] = {"Pe"}, ["pak"] = {"Parakanã"}, ["pal"] = {"Pahlavi"}, ["pam"] = {"Pampanga", "Kapampangan"}, ["pao"] = {"Northern Paiute"}, ["pap"] = {"Papiamento"}, ["paq"] = {"Parya"}, ["par"] = {"Panamint", "Timbisha"}, ["pas"] = {"Papasena"}, ["pau"] = {"Palauan"}, ["pav"] = {"Pakaásnovos"}, ["paw"] = {"Pawnee"}, ["pax"] = {"Pankararé"}, ["pay"] = {"Pech"}, ["paz"] = {"Pankararú"}, ["pbb"] = {"Páez"}, ["pbc"] = {"Patamona"}, ["pbe"] = {"Mezontla Popoloca"}, ["pbf"] = {"Coyotepec Popoloca"}, ["pbg"] = {"Paraujano"}, ["pbh"] = {"E'ñapa Woromaipu"}, ["pbi"] = {"Parkwa"}, ["pbl"] = {"Mak (Nigeria)"}, ["pbm"] = {"Puebla Mazatec"}, ["pbn"] = {"Kpasam"}, ["pbo"] = {"Papel"}, ["pbp"] = {"Badyara"}, ["pbr"] = {"Pangwa"}, ["pbs"] = {"Central Pame"}, ["pbt"] = {"Southern Pashto"}, ["pbu"] = {"Northern Pashto"}, ["pbv"] = {"Pnar"}, ["pby"] = {"Pyu (Papua New Guinea)"}, ["pca"] = {"Santa Inés Ahuatempan Popoloca"}, ["pcb"] = {"Pear"}, ["pcc"] = {"Bouyei"}, ["pcd"] = {"Picard"}, ["pce"] = {"Ruching Palaung"}, ["pcf"] = {"Paliyan"}, ["pcg"] = {"Paniya"}, ["pch"] = {"Pardhan"}, ["pci"] = {"Duruwa"}, ["pcj"] = {"Parenga"}, ["pck"] = {"Paite Chin"}, ["pcl"] = {"Pardhi"}, ["pcm"] = {"Nigerian Pidgin"}, ["pcn"] = {"Piti"}, ["pcp"] = {"Pacahuara"}, ["pcw"] = {"Pyapun"}, ["pda"] = {"Anam"}, ["pdc"] = {"Pennsylvania German"}, ["pdi"] = {"Pa Di"}, ["pdn"] = {"Podena", "Fedan"}, ["pdo"] = {"Padoe"}, ["pdt"] = {"Plautdietsch"}, ["pdu"] = {"Kayan"}, ["pea"] = {"Peranakan Indonesian"}, ["peb"] = {"Eastern Pomo"}, ["ped"] = {"Mala (Papua New Guinea)"}, ["pee"] = {"Taje"}, ["pef"] = {"Northeastern Pomo"}, ["peg"] = {"Pengo"}, ["peh"] = {"Bonan"}, ["pei"] = {"Chichimeca-Jonaz"}, ["pej"] = {"Northern Pomo"}, ["pek"] = {"Penchal"}, ["pel"] = {"Pekal"}, ["pem"] = {"Phende"}, ["peo"] = {"Old Persian (ca. 600-400 B.C.)"}, ["pep"] = {"Kunja"}, ["peq"] = {"Southern Pomo"}, ["pes"] = {"Iranian Persian"}, ["pev"] = {"Pémono"}, ["pex"] = {"Petats"}, ["pey"] = {"Petjo"}, ["pez"] = {"Eastern Penan"}, ["pfa"] = {"Pááfang"}, ["pfe"] = {"Pere"}, ["pfl"] = {"Pfaelzisch"}, ["pga"] = {"Sudanese Creole Arabic"}, ["pgd"] = {"Gāndhārī"}, ["pgg"] = {"Pangwali"}, ["pgi"] = {"Pagi"}, ["pgk"] = {"Rerep"}, ["pgl"] = {"Primitive Irish"}, ["pgn"] = {"Paelignian"}, ["pgs"] = {"Pangseng"}, ["pgu"] = {"Pagu"}, ["pgz"] = {"Papua New Guinean Sign Language"}, ["pha"] = {"Pa-Hng"}, ["phd"] = {"Phudagi"}, ["phg"] = {"Phuong"}, ["phh"] = {"Phukha"}, ["phi"] = {"Philippine languages"}, ["phj"] = {"Pahari"}, ["phk"] = {"Phake"}, ["phl"] = {"Phalura", "Palula"}, ["phm"] = {"Phimbi"}, ["phn"] = {"Phoenician"}, ["pho"] = {"Phunoi"}, ["phq"] = {"Phana'"}, ["phr"] = {"Pahari-Potwari"}, ["pht"] = {"Phu Thai"}, ["phu"] = {"Phuan"}, ["phv"] = {"Pahlavani"}, ["phw"] = {"Phangduwali"}, ["pia"] = {"Pima Bajo"}, ["pib"] = {"Yine"}, ["pic"] = {"Pinji"}, ["pid"] = {"Piaroa"}, ["pie"] = {"Piro"}, ["pif"] = {"Pingelapese"}, ["pig"] = {"Pisabo"}, ["pih"] = {"Pitcairn-Norfolk"}, ["pij"] = {"Pijao"}, ["pil"] = {"Yom"}, ["pim"] = {"Powhatan"}, ["pin"] = {"Piame"}, ["pio"] = {"Piapoco"}, ["pip"] = {"Pero"}, ["pir"] = {"Piratapuyo"}, ["pis"] = {"Pijin"}, ["pit"] = {"Pitta Pitta"}, ["piu"] = {"Pintupi-Luritja"}, ["piv"] = {"Pileni", "Vaeakau-Taumako"}, ["piw"] = {"Pimbwe"}, ["pix"] = {"Piu"}, ["piy"] = {"Piya-Kwonci"}, ["piz"] = {"Pije"}, ["pjt"] = {"Pitjantjatjara"}, ["pka"] = {"Ardhamāgadhī Prākrit"}, ["pkb"] = {"Pokomo", "Kipfokomo"}, ["pkc"] = {"Paekche"}, ["pkg"] = {"Pak-Tong"}, ["pkh"] = {"Pankhu"}, ["pkn"] = {"Pakanha"}, ["pko"] = {"Pökoot"}, ["pkp"] = {"Pukapuka"}, ["pkr"] = {"Attapady Kurumba"}, ["pks"] = {"Pakistan Sign Language"}, ["pkt"] = {"Maleng"}, ["pku"] = {"Paku"}, ["pla"] = {"Miani"}, ["plb"] = {"Polonombauk"}, ["plc"] = {"Central Palawano"}, ["pld"] = {"Polari"}, ["ple"] = {"Palu'e"}, ["plf"] = {"Central Malayo-Polynesian languages"}, ["plg"] = {"Pilagá"}, ["plh"] = {"Paulohi"}, ["plk"] = {"Kohistani Shina"}, ["pll"] = {"Shwe Palaung"}, ["pln"] = {"Palenquero"}, ["plo"] = {"Oluta Popoluca"}, ["plq"] = {"Palaic"}, ["plr"] = {"Palaka Senoufo"}, ["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"}, ["plt"] = {"Plateau Malagasy"}, ["plu"] = {"Palikúr"}, ["plv"] = {"Southwest Palawano"}, ["plw"] = {"Brooke's Point Palawano"}, ["ply"] = {"Bolyu"}, ["plz"] = {"Paluan"}, ["pma"] = {"Paama"}, ["pmb"] = {"Pambia"}, ["pmd"] = {"Pallanganmiddang"}, ["pme"] = {"Pwaamei"}, ["pmf"] = {"Pamona"}, ["pmh"] = {"Māhārāṣṭri Prākrit"}, ["pmi"] = {"Northern Pumi"}, ["pmj"] = {"Southern Pumi"}, ["pml"] = {"Lingua Franca"}, ["pmm"] = {"Pomo"}, ["pmn"] = {"Pam"}, ["pmo"] = {"Pom"}, ["pmq"] = {"Northern Pame"}, ["pmr"] = {"Paynamar"}, ["pms"] = {"Piemontese"}, ["pmt"] = {"Tuamotuan"}, ["pmw"] = {"Plains Miwok"}, ["pmx"] = {"Poumei Naga"}, ["pmy"] = {"Papuan Malay"}, ["pmz"] = {"Southern Pame"}, ["pna"] = {"Punan Bah-Biau"}, ["pnb"] = {"Western Panjabi"}, ["pnc"] = {"Pannei"}, ["pnd"] = {"Mpinda"}, ["pne"] = {"Western Penan"}, ["png"] = {"Pangu", "Pongu"}, ["pnh"] = {"Penrhyn"}, ["pni"] = {"Aoheng"}, ["pnj"] = {"Pinjarup"}, ["pnk"] = {"Paunaka"}, ["pnl"] = {"Paleni"}, ["pnm"] = {"Punan Batu 1"}, ["pnn"] = {"Pinai-Hagahai"}, ["pno"] = {"Panobo"}, ["pnp"] = {"Pancana"}, ["pnq"] = {"Pana (Burkina Faso)"}, ["pnr"] = {"Panim"}, ["pns"] = {"Ponosakan"}, ["pnt"] = {"Pontic"}, ["pnu"] = {"Jiongnai Bunu"}, ["pnv"] = {"Pinigura"}, ["pnw"] = {"Banyjima", "Panytyima"}, ["pnx"] = {"Phong-Kniang"}, ["pny"] = {"Pinyin"}, ["pnz"] = {"Pana (Central African Republic)"}, ["poc"] = {"Poqomam"}, ["poe"] = {"San Juan Atzingo Popoloca"}, ["pof"] = {"Poke"}, ["pog"] = {"Potiguára"}, ["poh"] = {"Poqomchi'"}, ["poi"] = {"Highland Popoluca"}, ["pok"] = {"Pokangá"}, ["pom"] = {"Southeastern Pomo"}, ["pon"] = {"Pohnpeian"}, ["poo"] = {"Central Pomo"}, ["pop"] = {"Pwapwâ"}, ["poq"] = {"Texistepec Popoluca"}, ["pos"] = {"Sayula Popoluca"}, ["pot"] = {"Potawatomi"}, ["pov"] = {"Upper Guinea Crioulo"}, ["pow"] = {"San Felipe Otlaltepec Popoloca"}, ["pox"] = {"Polabian"}, ["poy"] = {"Pogolo"}, ["poz"] = {"Malayo-Polynesian languages"}, ["ppe"] = {"Papi"}, ["ppi"] = {"Paipai"}, ["ppk"] = {"Uma"}, ["ppl"] = {"Pipil", "Nicarao"}, ["ppm"] = {"Papuma"}, ["ppn"] = {"Papapana"}, ["ppo"] = {"Folopa"}, ["ppp"] = {"Pelende"}, ["ppq"] = {"Pei"}, ["pps"] = {"San Luís Temalacayuca Popoloca"}, ["ppt"] = {"Pare"}, ["ppu"] = {"Papora"}, ["pqa"] = {"Pa'a"}, ["pqe"] = {"Eastern Malayo-Polynesian languages"}, ["pqm"] = {"Malecite-Passamaquoddy"}, ["pqw"] = {"Western Malayo-Polynesian languages"}, ["pra"] = {"Prakrit languages"}, ["prc"] = {"Parachi"}, ["prd"] = {"Parsi-Dari"}, ["pre"] = {"Principense"}, ["prf"] = {"Paranan"}, ["prg"] = {"Prussian"}, ["prh"] = {"Porohanon"}, ["pri"] = {"Paicî"}, ["prk"] = {"Parauk"}, ["prl"] = {"Peruvian Sign Language"}, ["prm"] = {"Kibiri"}, ["prn"] = {"Prasuni"}, ["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"}, ["prq"] = {"Ashéninka Perené"}, ["prr"] = {"Puri"}, ["prs"] = {"Dari", "Afghan Persian"}, ["prt"] = {"Phai"}, ["pru"] = {"Puragi"}, ["prw"] = {"Parawen"}, ["prx"] = {"Purik"}, ["prz"] = {"Providencia Sign Language"}, ["psa"] = {"Asue Awyu"}, ["psc"] = {"Iranian Sign Language", "Persian Sign Language"}, ["psd"] = {"Plains Indian Sign Language"}, ["pse"] = {"Central Malay"}, ["psg"] = {"Penang Sign Language"}, ["psh"] = {"Southwest Pashai", "Southwest Pashayi"}, ["psi"] = {"Southeast Pashai", "Southeast Pashayi"}, ["psl"] = {"Puerto Rican Sign Language"}, ["psm"] = {"Pauserna"}, ["psn"] = {"Panasuan"}, ["pso"] = {"Polish Sign Language"}, ["psp"] = {"Philippine Sign Language"}, ["psq"] = {"Pasi"}, ["psr"] = {"Portuguese Sign Language"}, ["pss"] = {"Kaulong"}, ["pst"] = {"Central Pashto"}, ["psu"] = {"Sauraseni Prākrit"}, ["psw"] = {"Port Sandwich"}, ["psy"] = {"Piscataway"}, ["pta"] = {"Pai Tavytera"}, ["pth"] = {"Pataxó Hã-Ha-Hãe"}, ["pti"] = {"Pindiini", "Wangkatha"}, ["ptn"] = {"Patani"}, ["pto"] = {"Zo'é"}, ["ptp"] = {"Patep"}, ["ptq"] = {"Pattapu"}, ["ptr"] = {"Piamatsina"}, ["ptt"] = {"Enrekang"}, ["ptu"] = {"Bambam"}, ["ptv"] = {"Port Vato"}, ["ptw"] = {"Pentlatch"}, ["pty"] = {"Pathiya"}, ["pua"] = {"Western Highland Purepecha"}, ["pub"] = {"Purum"}, ["puc"] = {"Punan Merap"}, ["pud"] = {"Punan Aput"}, ["pue"] = {"Puelche"}, ["puf"] = {"Punan Merah"}, ["pug"] = {"Phuie"}, ["pui"] = {"Puinave"}, ["puj"] = {"Punan Tubu"}, ["pum"] = {"Puma"}, ["puo"] = {"Puoc"}, ["pup"] = {"Pulabu"}, ["puq"] = {"Puquina"}, ["pur"] = {"Puruborá"}, ["put"] = {"Putoh"}, ["puu"] = {"Punu"}, ["puw"] = {"Puluwatese"}, ["pux"] = {"Puare"}, ["puy"] = {"Purisimeño"}, ["pwa"] = {"Pawaia"}, ["pwb"] = {"Panawa"}, ["pwg"] = {"Gapapaiwa"}, ["pwi"] = {"Patwin"}, ["pwm"] = {"Molbog"}, ["pwn"] = {"Paiwan"}, ["pwo"] = {"Pwo Western Karen"}, ["pwr"] = {"Powari"}, ["pww"] = {"Pwo Northern Karen"}, ["pxm"] = {"Quetzaltepec Mixe"}, ["pye"] = {"Pye Krumen"}, ["pym"] = {"Fyam"}, ["pyn"] = {"Poyanáwa"}, ["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"}, ["pyu"] = {"Puyuma"}, ["pyx"] = {"Pyu (Myanmar)"}, ["pyy"] = {"Pyen"}, ["pze"] = {"Pesse"}, ["pzh"] = {"Pazeh"}, ["pzn"] = {"Jejara Naga", "Para Naga"}, ["qua"] = {"Quapaw"}, ["qub"] = {"Huallaga Huánuco Quechua"}, ["quc"] = {"K'iche'", "Quiché"}, ["qud"] = {"Calderón Highland Quichua"}, ["quf"] = {"Lambayeque Quechua"}, ["qug"] = {"Chimborazo Highland Quichua"}, ["quh"] = {"South Bolivian Quechua"}, ["qui"] = {"Quileute"}, ["quk"] = {"Chachapoyas Quechua"}, ["qul"] = {"North Bolivian Quechua"}, ["qum"] = {"Sipacapense"}, ["qun"] = {"Quinault"}, ["qup"] = {"Southern Pastaza Quechua"}, ["quq"] = {"Quinqui"}, ["qur"] = {"Yanahuanca Pasco Quechua"}, ["qus"] = {"Santiago del Estero Quichua"}, ["quv"] = {"Sacapulteco"}, ["quw"] = {"Tena Lowland Quichua"}, ["qux"] = {"Yauyos Quechua"}, ["quy"] = {"Ayacucho Quechua"}, ["quz"] = {"Cusco Quechua"}, ["qva"] = {"Ambo-Pasco Quechua"}, ["qvc"] = {"Cajamarca Quechua"}, ["qve"] = {"Eastern Apurímac Quechua"}, ["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"}, ["qvi"] = {"Imbabura Highland Quichua"}, ["qvj"] = {"Loja Highland Quichua"}, ["qvl"] = {"Cajatambo North Lima Quechua"}, ["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"}, ["qvn"] = {"North Junín Quechua"}, ["qvo"] = {"Napo Lowland Quechua"}, ["qvp"] = {"Pacaraos Quechua"}, ["qvs"] = {"San Martín Quechua"}, ["qvw"] = {"Huaylla Wanca Quechua"}, ["qvy"] = {"Queyu"}, ["qvz"] = {"Northern Pastaza Quichua"}, ["qwa"] = {"Corongo Ancash Quechua"}, ["qwc"] = {"Classical Quechua"}, ["qwe"] = {"Quechuan (family)"}, ["qwh"] = {"Huaylas Ancash Quechua"}, ["qwm"] = {"Kuman (Russia)"}, ["qws"] = {"Sihuas Ancash Quechua"}, ["qwt"] = {"Kwalhioqua-Tlatskanai"}, ["qxa"] = {"Chiquián Ancash Quechua"}, ["qxc"] = {"Chincha Quechua"}, ["qxh"] = {"Panao Huánuco Quechua"}, ["qxl"] = {"Salasaca Highland Quichua"}, ["qxn"] = {"Northern Conchucos Ancash Quechua"}, ["qxo"] = {"Southern Conchucos Ancash Quechua"}, ["qxp"] = {"Puno Quechua"}, ["qxq"] = {"Qashqa'i"}, ["qxr"] = {"Cañar Highland Quichua"}, ["qxs"] = {"Southern Qiang"}, ["qxt"] = {"Santa Ana de Tusi Pasco Quechua"}, ["qxu"] = {"Arequipa-La Unión Quechua"}, ["qxw"] = {"Jauja Wanca Quechua"}, ["qya"] = {"Quenya"}, ["qyp"] = {"Quiripi"}, ["raa"] = {"Dungmali"}, ["rab"] = {"Camling"}, ["rac"] = {"Rasawa"}, ["rad"] = {"Rade"}, ["raf"] = {"Western Meohang"}, ["rag"] = {"Logooli", "Lulogooli"}, ["rah"] = {"Rabha"}, ["rai"] = {"Ramoaaina"}, ["raj"] = {"Rajasthani"}, ["rak"] = {"Tulu-Bohuai"}, ["ral"] = {"Ralte"}, ["ram"] = {"Canela"}, ["ran"] = {"Riantana"}, ["rao"] = {"Rao"}, ["rap"] = {"Rapanui"}, ["raq"] = {"Saam"}, ["rar"] = {"Rarotongan", "Cook Islands Maori"}, ["ras"] = {"Tegali"}, ["rat"] = {"Razajerdi"}, ["rau"] = {"Raute"}, ["rav"] = {"Sampang"}, ["raw"] = {"Rawang"}, ["rax"] = {"Rang"}, ["ray"] = {"Rapa"}, ["raz"] = {"Rahambuu"}, ["rbb"] = {"Rumai Palaung"}, ["rbk"] = {"Northern Bontok"}, ["rbl"] = {"Miraya Bikol"}, ["rbp"] = {"Barababaraba"}, ["rcf"] = {"Réunion Creole French"}, ["rdb"] = {"Rudbari"}, ["rea"] = {"Rerau"}, ["reb"] = {"Rembong"}, ["ree"] = {"Rejang Kayan"}, ["reg"] = {"Kara (Tanzania)"}, ["rei"] = {"Reli"}, ["rej"] = {"Rejang"}, ["rel"] = {"Rendille"}, ["rem"] = {"Remo"}, ["ren"] = {"Rengao"}, ["rer"] = {"Rer Bare"}, ["res"] = {"Reshe"}, ["ret"] = {"Retta"}, ["rey"] = {"Reyesano"}, ["rga"] = {"Roria"}, ["rge"] = {"Romano-Greek"}, ["rgk"] = {"Rangkas"}, ["rgn"] = {"Romagnol"}, ["rgr"] = {"Resígaro"}, ["rgs"] = {"Southern Roglai"}, ["rgu"] = {"Ringgou"}, ["rhg"] = {"Rohingya"}, ["rhp"] = {"Yahang"}, ["ria"] = {"Riang (India)"}, ["rib"] = {"Bribri Sign Language"}, ["rif"] = {"Tarifit"}, ["ril"] = {"Riang Lang", "Riang (Myanmar)"}, ["rim"] = {"Nyaturu"}, ["rin"] = {"Nungu"}, ["rir"] = {"Ribun"}, ["rit"] = {"Ritharrngu"}, ["riu"] = {"Riung"}, ["rjg"] = {"Rajong"}, ["rji"] = {"Raji"}, ["rjs"] = {"Rajbanshi"}, ["rka"] = {"Kraol"}, ["rkb"] = {"Rikbaktsa"}, ["rkh"] = {"Rakahanga-Manihiki"}, ["rki"] = {"Rakhine"}, ["rkm"] = {"Marka"}, ["rkt"] = {"Rangpuri", "Kamta"}, ["rkw"] = {"Arakwal"}, ["rma"] = {"Rama"}, ["rmb"] = {"Rembarrnga"}, ["rmc"] = {"Carpathian Romani"}, ["rmd"] = {"Traveller Danish"}, ["rme"] = {"Angloromani"}, ["rmf"] = {"Kalo Finnish Romani"}, ["rmg"] = {"Traveller Norwegian"}, ["rmh"] = {"Murkim"}, ["rmi"] = {"Lomavren"}, ["rmk"] = {"Romkun"}, ["rml"] = {"Baltic Romani"}, ["rmm"] = {"Roma"}, ["rmn"] = {"Balkan Romani"}, ["rmo"] = {"Sinte Romani"}, ["rmp"] = {"Rempi"}, ["rmq"] = {"Caló"}, ["rms"] = {"Romanian Sign Language"}, ["rmt"] = {"Domari"}, ["rmu"] = {"Tavringer Romani"}, ["rmv"] = {"Romanova"}, ["rmw"] = {"Welsh Romani"}, ["rmx"] = {"Romam"}, ["rmy"] = {"Vlax Romani"}, ["rmz"] = {"Marma"}, ["rnb"] = {"Brunca Sign Language"}, ["rnd"] = {"Ruund"}, ["rng"] = {"Ronga"}, ["rnl"] = {"Ranglong"}, ["rnn"] = {"Roon"}, ["rnp"] = {"Rongpo"}, ["rnr"] = {"Nari Nari"}, ["rnw"] = {"Rungwa"}, ["roa"] = {"Romance languages"}, ["rob"] = {"Tae'"}, ["roc"] = {"Cacgia Roglai"}, ["rod"] = {"Rogo"}, ["roe"] = {"Ronji"}, ["rof"] = {"Rombo"}, ["rog"] = {"Northern Roglai"}, ["rol"] = {"Romblomanon"}, ["rom"] = {"Romany"}, ["roo"] = {"Rotokas"}, ["rop"] = {"Kriol"}, ["ror"] = {"Rongga"}, ["rou"] = {"Runga"}, ["row"] = {"Dela-Oenale"}, ["rpn"] = {"Repanbitip"}, ["rpt"] = {"Rapting"}, ["rri"] = {"Ririo"}, ["rro"] = {"Waima"}, ["rrt"] = {"Arritinngithigh"}, ["rsb"] = {"Romano-Serbian"}, ["rsk"] = {"Ruthenian", "Rusnak"}, ["rsl"] = {"Russian Sign Language"}, ["rsm"] = {"Miriwoong Sign Language"}, ["rsn"] = {"Rwandan Sign Language"}, ["rsw"] = {"Rishiwa"}, ["rtc"] = {"Rungtu Chin"}, ["rth"] = {"Ratahan"}, ["rtm"] = {"Rotuman"}, ["rts"] = {"Yurats"}, ["rtw"] = {"Rathawi"}, ["rub"] = {"Gungu"}, ["ruc"] = {"Ruuli"}, ["rue"] = {"Rusyn"}, ["ruf"] = {"Luguru"}, ["rug"] = {"Roviana"}, ["ruh"] = {"Ruga"}, ["rui"] = {"Rufiji"}, ["ruk"] = {"Che"}, ["ruo"] = {"Istro Romanian"}, ["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"}, ["ruq"] = {"Megleno Romanian"}, ["rut"] = {"Rutul"}, ["ruu"] = {"Lanas Lobu"}, ["ruy"] = {"Mala (Nigeria)"}, ["ruz"] = {"Ruma"}, ["rwa"] = {"Rawo"}, ["rwk"] = {"Rwa"}, ["rwl"] = {"Ruwila"}, ["rwm"] = {"Amba (Uganda)"}, ["rwo"] = {"Rawa"}, ["rwr"] = {"Marwari (India)"}, ["rxd"] = {"Ngardi"}, ["rxw"] = {"Karuwali", "Garuwali"}, ["ryn"] = {"Northern Amami-Oshima"}, ["rys"] = {"Yaeyama"}, ["ryu"] = {"Central Okinawan"}, ["rzh"] = {"Rāziḥī"}, ["saa"] = {"Saba"}, ["sab"] = {"Buglere"}, ["sac"] = {"Meskwaki"}, ["sad"] = {"Sandawe"}, ["sae"] = {"Sabanê"}, ["saf"] = {"Safaliba"}, ["sah"] = {"Yakut"}, ["sai"] = {"South American Indian languages"}, ["saj"] = {"Sahu"}, ["sak"] = {"Sake"}, ["sal"] = {"Salishan languages"}, ["sam"] = {"Samaritan Aramaic"}, ["sao"] = {"Sause"}, ["saq"] = {"Samburu"}, ["sar"] = {"Saraveca"}, ["sas"] = {"Sasak"}, ["sat"] = {"Santali"}, ["sau"] = {"Saleman"}, ["sav"] = {"Saafi-Saafi"}, ["saw"] = {"Sawi"}, ["sax"] = {"Sa"}, ["say"] = {"Saya"}, ["saz"] = {"Saurashtra"}, ["sba"] = {"Ngambay"}, ["sbb"] = {"Simbo"}, ["sbc"] = {"Kele (Papua New Guinea)"}, ["sbd"] = {"Southern Samo"}, ["sbe"] = {"Saliba"}, ["sbf"] = {"Chabu", "Shabo"}, ["sbg"] = {"Seget"}, ["sbh"] = {"Sori-Harengan"}, ["sbi"] = {"Seti"}, ["sbj"] = {"Surbakhal"}, ["sbk"] = {"Safwa"}, ["sbl"] = {"Botolan Sambal"}, ["sbm"] = {"Sagala"}, ["sbn"] = {"Sindhi Bhil"}, ["sbo"] = {"Sabüm"}, ["sbp"] = {"Sangu (Tanzania)"}, ["sbq"] = {"Sileibi"}, ["sbr"] = {"Sembakung Murut"}, ["sbs"] = {"Subiya"}, ["sbt"] = {"Kimki"}, ["sbu"] = {"Stod Bhoti"}, ["sbv"] = {"Sabine"}, ["sbw"] = {"Simba"}, ["sbx"] = {"Seberuang"}, ["sby"] = {"Soli"}, ["sbz"] = {"Sara Kaba"}, ["scb"] = {"Chut"}, ["sce"] = {"Dongxiang"}, ["scf"] = {"San Miguel Creole French"}, ["scg"] = {"Sanggau"}, ["sch"] = {"Sakachep"}, ["sci"] = {"Sri Lankan Creole Malay"}, ["sck"] = {"Sadri"}, ["scl"] = {"Shina"}, ["scn"] = {"Sicilian"}, ["sco"] = {"Scots"}, ["scp"] = {"Hyolmo", "Helambu Sherpa"}, ["scq"] = {"Sa'och"}, ["scs"] = {"North Slavey"}, ["sct"] = {"Southern Katang"}, ["scu"] = {"Shumcho"}, ["scv"] = {"Sheni"}, ["scw"] = {"Sha"}, ["scx"] = {"Sicel"}, ["sda"] = {"Toraja-Sa'dan"}, ["sdb"] = {"Shabak"}, ["sdc"] = {"Sassarese Sardinian"}, ["sde"] = {"Surubu"}, ["sdf"] = {"Sarli"}, ["sdg"] = {"Savi"}, ["sdh"] = {"Southern Kurdish"}, ["sdj"] = {"Suundi"}, ["sdk"] = {"Sos Kundi"}, ["sdl"] = {"Saudi Arabian Sign Language"}, ["sdn"] = {"Gallurese Sardinian"}, ["sdo"] = {"Bukar-Sadung Bidayuh"}, ["sdp"] = {"Sherdukpen"}, ["sdq"] = {"Semandang"}, ["sdr"] = {"Oraon Sadri"}, ["sds"] = {"Sened"}, ["sdt"] = {"Shuadit"}, ["sdu"] = {"Sarudu"}, ["sdv"] = {"Eastern Sudanic languages"}, ["sdx"] = {"Sibu Melanau"}, ["sdz"] = {"Sallands"}, ["sea"] = {"Semai"}, ["seb"] = {"Shempire Senoufo"}, ["sec"] = {"Sechelt"}, ["sed"] = {"Sedang"}, ["see"] = {"Seneca"}, ["sef"] = {"Cebaara Senoufo"}, ["seg"] = {"Segeju"}, ["seh"] = {"Sena"}, ["sei"] = {"Seri"}, ["sej"] = {"Sene"}, ["sek"] = {"Sekani"}, ["sel"] = {"Selkup"}, ["sem"] = {"Semitic languages"}, ["sen"] = {"Nanerigé Sénoufo"}, ["seo"] = {"Suarmin"}, ["sep"] = {"Sìcìté Sénoufo"}, ["seq"] = {"Senara Sénoufo"}, ["ser"] = {"Serrano"}, ["ses"] = {"Koyraboro Senni Songhai"}, ["set"] = {"Sentani"}, ["seu"] = {"Serui-Laut"}, ["sev"] = {"Nyarafolo Senoufo"}, ["sew"] = {"Sewa Bay"}, ["sey"] = {"Secoya"}, ["sez"] = {"Senthang Chin"}, ["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"}, ["sfe"] = {"Eastern Subanen"}, ["sfm"] = {"Small Flowery Miao"}, ["sfs"] = {"South African Sign Language"}, ["sfw"] = {"Sehwi"}, ["sga"] = {"Old Irish (to 900)"}, ["sgb"] = {"Mag-antsi Ayta"}, ["sgc"] = {"Kipsigis"}, ["sgd"] = {"Surigaonon"}, ["sge"] = {"Segai"}, ["sgg"] = {"Swiss-German Sign Language"}, ["sgh"] = {"Shughni"}, ["sgi"] = {"Suga"}, ["sgj"] = {"Surgujia"}, ["sgk"] = {"Sangkong"}, ["sgm"] = {"Singa"}, ["sgn"] = {"Sign languages"}, ["sgp"] = {"Singpho"}, ["sgr"] = {"Sangisari"}, ["sgs"] = {"Samogitian"}, ["sgt"] = {"Brokpake"}, ["sgu"] = {"Salas"}, ["sgw"] = {"Sebat Bet Gurage"}, ["sgx"] = {"Sierra Leone Sign Language"}, ["sgy"] = {"Sanglechi"}, ["sgz"] = {"Sursurunga"}, ["sha"] = {"Shall-Zwall"}, ["shb"] = {"Ninam"}, ["shc"] = {"Sonde"}, ["shd"] = {"Kundal Shahi"}, ["she"] = {"Sheko"}, ["shg"] = {"Shua"}, ["shh"] = {"Shoshoni"}, ["shi"] = {"Tachelhit"}, ["shj"] = {"Shatt"}, ["shk"] = {"Shilluk"}, ["shl"] = {"Shendu"}, ["shm"] = {"Shahrudi"}, ["shn"] = {"Shan"}, ["sho"] = {"Shanga"}, ["shp"] = {"Shipibo-Conibo"}, ["shq"] = {"Sala"}, ["shr"] = {"Shi"}, ["shs"] = {"Shuswap"}, ["sht"] = {"Shasta"}, ["shu"] = {"Chadian Arabic"}, ["shv"] = {"Shehri"}, ["shw"] = {"Shwai"}, ["shx"] = {"She"}, ["shy"] = {"Tachawit"}, ["shz"] = {"Syenara Senoufo"}, ["sia"] = {"Akkala Sami"}, ["sib"] = {"Sebop"}, ["sid"] = {"Sidamo"}, ["sie"] = {"Simaa"}, ["sif"] = {"Siamou"}, ["sig"] = {"Paasaal"}, ["sih"] = {"Zire", "Sîshëë"}, ["sii"] = {"Shom Peng"}, ["sij"] = {"Numbami"}, ["sik"] = {"Sikiana"}, ["sil"] = {"Tumulung Sisaala"}, ["sim"] = {"Mende (Papua New Guinea)"}, ["sio"] = {"Siouan languages"}, ["sip"] = {"Sikkimese"}, ["siq"] = {"Sonia"}, ["sir"] = {"Siri"}, ["sis"] = {"Siuslaw"}, ["sit"] = {"Sino-Tibetan languages"}, ["siu"] = {"Sinagen"}, ["siv"] = {"Sumariup"}, ["siw"] = {"Siwai"}, ["six"] = {"Sumau"}, ["siy"] = {"Sivandi"}, ["siz"] = {"Siwi"}, ["sja"] = {"Epena"}, ["sjb"] = {"Sajau Basap"}, ["sjd"] = {"Kildin Sami"}, ["sje"] = {"Pite Sami"}, ["sjg"] = {"Assangori"}, ["sjk"] = {"Kemi Sami"}, ["sjl"] = {"Sajalong", "Miji"}, ["sjm"] = {"Mapun"}, ["sjn"] = {"Sindarin"}, ["sjo"] = {"Xibe"}, ["sjp"] = {"Surjapuri"}, ["sjr"] = {"Siar-Lak"}, ["sjs"] = {"Senhaja De Srair"}, ["sjt"] = {"Ter Sami"}, ["sju"] = {"Ume Sami"}, ["sjw"] = {"Shawnee"}, ["ska"] = {"Skagit"}, ["skb"] = {"Saek"}, ["skc"] = {"Ma Manda"}, ["skd"] = {"Southern Sierra Miwok"}, ["ske"] = {"Seke (Vanuatu)"}, ["skf"] = {"Sakirabiá"}, ["skg"] = {"Sakalava Malagasy"}, ["skh"] = {"Sikule"}, ["ski"] = {"Sika"}, ["skj"] = {"Seke (Nepal)"}, ["skm"] = {"Kutong"}, ["skn"] = {"Kolibugan Subanon"}, ["sko"] = {"Seko Tengah"}, ["skp"] = {"Sekapan"}, ["skq"] = {"Sininkere"}, ["skr"] = {"Saraiki", "Seraiki"}, ["sks"] = {"Maia"}, ["skt"] = {"Sakata"}, ["sku"] = {"Sakao"}, ["skv"] = {"Skou"}, ["skw"] = {"Skepi Creole Dutch"}, ["skx"] = {"Seko Padang"}, ["sky"] = {"Sikaiana"}, ["skz"] = {"Sekar"}, ["sla"] = {"Slavic languages"}, ["slc"] = {"Sáliba"}, ["sld"] = {"Sissala"}, ["sle"] = {"Sholaga"}, ["slf"] = {"Swiss-Italian Sign Language"}, ["slg"] = {"Selungai Murut"}, ["slh"] = {"Southern Puget Sound Salish"}, ["sli"] = {"Lower Silesian"}, ["slj"] = {"Salumá"}, ["sll"] = {"Salt-Yui"}, ["slm"] = {"Pangutaran Sama"}, ["sln"] = {"Salinan"}, ["slp"] = {"Lamaholot"}, ["slr"] = {"Salar"}, ["sls"] = {"Singapore Sign Language"}, ["slt"] = {"Sila"}, ["slu"] = {"Selaru"}, ["slw"] = {"Sialum"}, ["slx"] = {"Salampasu"}, ["sly"] = {"Selayar"}, ["slz"] = {"Ma'ya"}, ["sma"] = {"Southern Sami"}, ["smb"] = {"Simbari"}, ["smc"] = {"Som"}, ["smf"] = {"Auwe"}, ["smg"] = {"Simbali"}, ["smh"] = {"Samei"}, ["smi"] = {"Sami languages"}, ["smj"] = {"Lule Sami"}, ["smk"] = {"Bolinao"}, ["sml"] = {"Central Sama"}, ["smm"] = {"Musasa"}, ["smn"] = {"Inari Sami"}, ["smp"] = {"Samaritan"}, ["smq"] = {"Samo"}, ["smr"] = {"Simeulue"}, ["sms"] = {"Skolt Sami"}, ["smt"] = {"Simte"}, ["smu"] = {"Somray"}, ["smv"] = {"Samvedi"}, ["smw"] = {"Sumbawa"}, ["smx"] = {"Samba"}, ["smy"] = {"Semnani"}, ["smz"] = {"Simeku"}, ["snc"] = {"Sinaugoro"}, ["sne"] = {"Bau Bidayuh"}, ["snf"] = {"Noon"}, ["sng"] = {"Sanga (Democratic Republic of Congo)"}, ["sni"] = {"Sensi"}, ["snj"] = {"Riverain Sango"}, ["snk"] = {"Soninke"}, ["snl"] = {"Sangil"}, ["snm"] = {"Southern Ma'di"}, ["snn"] = {"Siona"}, ["sno"] = {"Snohomish"}, ["snp"] = {"Siane"}, ["snq"] = {"Sangu (Gabon)"}, ["snr"] = {"Sihan"}, ["sns"] = {"South West Bay", "Nahavaq"}, ["snu"] = {"Senggi", "Viid"}, ["snv"] = {"Sa'ban"}, ["snw"] = {"Selee"}, ["snx"] = {"Sam"}, ["sny"] = {"Saniyo-Hiyewe"}, ["snz"] = {"Kou"}, ["soa"] = {"Thai Song"}, ["sob"] = {"Sobei"}, ["soc"] = {"So (Democratic Republic of Congo)"}, ["sod"] = {"Songoora"}, ["soe"] = {"Songomeno"}, ["sog"] = {"Sogdian"}, ["soh"] = {"Aka"}, ["soi"] = {"Sonha"}, ["soj"] = {"Soi"}, ["sok"] = {"Sokoro"}, ["sol"] = {"Solos"}, ["son"] = {"Songhai languages"}, ["soo"] = {"Songo"}, ["sop"] = {"Songe"}, ["soq"] = {"Kanasi"}, ["sor"] = {"Somrai"}, ["sos"] = {"Seeku"}, ["sou"] = {"Southern Thai"}, ["sov"] = {"Sonsorol"}, ["sow"] = {"Sowanda"}, ["sox"] = {"Swo"}, ["soy"] = {"Miyobe"}, ["soz"] = {"Temi"}, ["spb"] = {"Sepa (Indonesia)"}, ["spc"] = {"Sapé"}, ["spd"] = {"Saep"}, ["spe"] = {"Sepa (Papua New Guinea)"}, ["spg"] = {"Sian"}, ["spi"] = {"Saponi"}, ["spk"] = {"Sengo"}, ["spl"] = {"Selepet"}, ["spm"] = {"Akukem"}, ["spn"] = {"Sanapaná"}, ["spo"] = {"Spokane"}, ["spp"] = {"Supyire Senoufo"}, ["spq"] = {"Loreto-Ucayali Spanish"}, ["spr"] = {"Saparua"}, ["sps"] = {"Saposa"}, ["spt"] = {"Spiti Bhoti"}, ["spu"] = {"Sapuan"}, ["spv"] = {"Sambalpuri", "Kosli"}, ["spx"] = {"South Picene"}, ["spy"] = {"Sabaot"}, ["sqa"] = {"Shama-Sambuga"}, ["sqh"] = {"Shau"}, ["sqj"] = {"Albanian languages"}, ["sqk"] = {"Albanian Sign Language"}, ["sqm"] = {"Suma"}, ["sqn"] = {"Susquehannock"}, ["sqo"] = {"Sorkhei"}, ["sqq"] = {"Sou"}, ["sqr"] = {"Siculo Arabic"}, ["sqs"] = {"Sri Lankan Sign Language"}, ["sqt"] = {"Soqotri"}, ["squ"] = {"Squamish"}, ["sqx"] = {"Kufr Qassem Sign Language (KQSL)"}, ["sra"] = {"Saruga"}, ["srb"] = {"Sora"}, ["src"] = {"Logudorese Sardinian"}, ["sre"] = {"Sara"}, ["srf"] = {"Nafi"}, ["srg"] = {"Sulod"}, ["srh"] = {"Sarikoli"}, ["sri"] = {"Siriano"}, ["srk"] = {"Serudung Murut"}, ["srl"] = {"Isirawa"}, ["srm"] = {"Saramaccan"}, ["srn"] = {"Sranan Tongo"}, ["sro"] = {"Campidanese Sardinian"}, ["srq"] = {"Sirionó"}, ["srr"] = {"Serer"}, ["srs"] = {"Sarsi"}, ["srt"] = {"Sauri"}, ["sru"] = {"Suruí"}, ["srv"] = {"Southern Sorsoganon"}, ["srw"] = {"Serua"}, ["srx"] = {"Sirmauri"}, ["sry"] = {"Sera"}, ["srz"] = {"Shahmirzadi"}, ["ssa"] = {"Nilo-Saharan languages"}, ["ssb"] = {"Southern Sama"}, ["ssc"] = {"Suba-Simbiti"}, ["ssd"] = {"Siroi"}, ["sse"] = {"Balangingi", "Bangingih Sama"}, ["ssf"] = {"Thao"}, ["ssg"] = {"Seimat"}, ["ssh"] = {"Shihhi Arabic"}, ["ssi"] = {"Sansi"}, ["ssj"] = {"Sausi"}, ["ssk"] = {"Sunam"}, ["ssl"] = {"Western Sisaala"}, ["ssm"] = {"Semnam"}, ["ssn"] = {"Waata"}, ["sso"] = {"Sissano"}, ["ssp"] = {"Spanish Sign Language"}, ["ssq"] = {"So'a"}, ["ssr"] = {"Swiss-French Sign Language"}, ["sss"] = {"Sô"}, ["sst"] = {"Sinasina"}, ["ssu"] = {"Susuami"}, ["ssv"] = {"Shark Bay"}, ["ssx"] = {"Samberigi"}, ["ssy"] = {"Saho"}, ["ssz"] = {"Sengseng"}, ["sta"] = {"Settla"}, ["stb"] = {"Northern Subanen"}, ["std"] = {"Sentinel"}, ["ste"] = {"Liana-Seti"}, ["stf"] = {"Seta"}, ["stg"] = {"Trieng"}, ["sth"] = {"Shelta"}, ["sti"] = {"Bulo Stieng"}, ["stj"] = {"Matya Samo"}, ["stk"] = {"Arammba"}, ["stl"] = {"Stellingwerfs"}, ["stm"] = {"Setaman"}, ["stn"] = {"Owa"}, ["sto"] = {"Stoney"}, ["stp"] = {"Southeastern Tepehuan"}, ["stq"] = {"Saterfriesisch"}, ["str"] = {"Straits Salish"}, ["sts"] = {"Shumashti"}, ["stt"] = {"Budeh Stieng"}, ["stu"] = {"Samtao"}, ["stv"] = {"Silt'e"}, ["stw"] = {"Satawalese"}, ["sty"] = {"Siberian Tatar"}, ["sua"] = {"Sulka"}, ["sub"] = {"Suku"}, ["suc"] = {"Western Subanon"}, ["sue"] = {"Suena"}, ["sug"] = {"Suganga"}, ["sui"] = {"Suki"}, ["suj"] = {"Shubi"}, ["suk"] = {"Sukuma"}, ["suo"] = {"Bouni"}, ["suq"] = {"Tirmaga-Chai Suri", "Suri"}, ["sur"] = {"Mwaghavul"}, ["sus"] = {"Susu"}, ["sut"] = {"Subtiaba"}, ["suv"] = {"Puroik"}, ["suw"] = {"Sumbwa"}, ["sux"] = {"Sumerian"}, ["suy"] = {"Suyá"}, ["suz"] = {"Sunwar"}, ["sva"] = {"Svan"}, ["svb"] = {"Ulau-Suain"}, ["svc"] = {"Vincentian Creole English"}, ["sve"] = {"Serili"}, ["svk"] = {"Slovakian Sign Language"}, ["svm"] = {"Slavomolisano"}, ["svs"] = {"Savosavo"}, ["svx"] = {"Skalvian"}, ["swb"] = {"Maore Comorian"}, ["swc"] = {"Congo Swahili"}, ["swf"] = {"Sere"}, ["swg"] = {"Swabian"}, ["swh"] = {"Swahili (individual language)", "Kiswahili"}, ["swi"] = {"Sui"}, ["swj"] = {"Sira"}, ["swk"] = {"Malawi Sena"}, ["swl"] = {"Swedish Sign Language"}, ["swm"] = {"Samosa"}, ["swn"] = {"Sawknah"}, ["swo"] = {"Shanenawa"}, ["swp"] = {"Suau"}, ["swq"] = {"Sharwa"}, ["swr"] = {"Saweru"}, ["sws"] = {"Seluwasan"}, ["swt"] = {"Sawila"}, ["swu"] = {"Suwawa"}, ["swv"] = {"Shekhawati"}, ["sww"] = {"Sowa"}, ["swx"] = {"Suruahá"}, ["swy"] = {"Sarua"}, ["sxb"] = {"Suba"}, ["sxc"] = {"Sicanian"}, ["sxe"] = {"Sighu"}, ["sxg"] = {"Shuhi", "Shixing"}, ["sxk"] = {"Southern Kalapuya"}, ["sxl"] = {"Selian"}, ["sxm"] = {"Samre"}, ["sxn"] = {"Sangir"}, ["sxo"] = {"Sorothaptic"}, ["sxr"] = {"Saaroa"}, ["sxs"] = {"Sasaru"}, ["sxu"] = {"Upper Saxon"}, ["sxw"] = {"Saxwe Gbe"}, ["sya"] = {"Siang"}, ["syb"] = {"Central Subanen"}, ["syc"] = {"Classical Syriac"}, ["syd"] = {"Samoyedic languages"}, ["syi"] = {"Seki"}, ["syk"] = {"Sukur"}, ["syl"] = {"Sylheti"}, ["sym"] = {"Maya Samo"}, ["syn"] = {"Senaya"}, ["syo"] = {"Suoy"}, ["syr"] = {"Syriac"}, ["sys"] = {"Sinyar"}, ["syw"] = {"Kagate"}, ["syx"] = {"Samay"}, ["syy"] = {"Al-Sayyid Bedouin Sign Language"}, ["sza"] = {"Semelai"}, ["szb"] = {"Ngalum"}, ["szc"] = {"Semaq Beri"}, ["sze"] = {"Seze"}, ["szg"] = {"Sengele"}, ["szl"] = {"Silesian"}, ["szn"] = {"Sula"}, ["szp"] = {"Suabo"}, ["szs"] = {"Solomon Islands Sign Language"}, ["szv"] = {"Isu (Fako Division)"}, ["szw"] = {"Sawai"}, ["szy"] = {"Sakizaya"}, ["taa"] = {"Lower Tanana"}, ["tab"] = {"Tabassaran"}, ["tac"] = {"Lowland Tarahumara"}, ["tad"] = {"Tause"}, ["tae"] = {"Tariana"}, ["taf"] = {"Tapirapé"}, ["tag"] = {"Tagoi"}, ["tai"] = {"Tai languages"}, ["taj"] = {"Eastern Tamang"}, ["tak"] = {"Tala"}, ["tal"] = {"Tal"}, ["tan"] = {"Tangale"}, ["tao"] = {"Yami"}, ["tap"] = {"Taabwa"}, ["taq"] = {"Tamasheq"}, ["tar"] = {"Central Tarahumara"}, ["tas"] = {"Tay Boi"}, ["tau"] = {"Upper Tanana"}, ["tav"] = {"Tatuyo"}, ["taw"] = {"Tai"}, ["tax"] = {"Tamki"}, ["tay"] = {"Atayal"}, ["taz"] = {"Tocho"}, ["tba"] = {"Aikanã"}, ["tbc"] = {"Takia"}, ["tbd"] = {"Kaki Ae"}, ["tbe"] = {"Tanimbili"}, ["tbf"] = {"Mandara"}, ["tbg"] = {"North Tairora"}, ["tbh"] = {"Dharawal", "Thurawal"}, ["tbi"] = {"Gaam"}, ["tbj"] = {"Tiang"}, ["tbk"] = {"Calamian Tagbanwa"}, ["tbl"] = {"Tboli"}, ["tbm"] = {"Tagbu"}, ["tbn"] = {"Barro Negro Tunebo"}, ["tbo"] = {"Tawala"}, ["tbp"] = {"Taworta", "Diebroud"}, ["tbq"] = {"Tibeto-Burman languages"}, ["tbr"] = {"Tumtum"}, ["tbs"] = {"Tanguat"}, ["tbt"] = {"Tembo (Kitembo)"}, ["tbu"] = {"Tubar"}, ["tbv"] = {"Tobo"}, ["tbw"] = {"Tagbanwa"}, ["tbx"] = {"Kapin"}, ["tby"] = {"Tabaru"}, ["tbz"] = {"Ditammari"}, ["tca"] = {"Ticuna"}, ["tcb"] = {"Tanacross"}, ["tcc"] = {"Datooga"}, ["tcd"] = {"Tafi"}, ["tce"] = {"Southern Tutchone"}, ["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"}, ["tcg"] = {"Tamagario"}, ["tch"] = {"Turks And Caicos Creole English"}, ["tci"] = {"Wára"}, ["tck"] = {"Tchitchege"}, ["tcl"] = {"Taman (Myanmar)"}, ["tcm"] = {"Tanahmerah"}, ["tcn"] = {"Tichurong"}, ["tco"] = {"Taungyo"}, ["tcp"] = {"Tawr Chin"}, ["tcq"] = {"Kaiy"}, ["tcs"] = {"Torres Strait Creole", "Yumplatok"}, ["tct"] = {"T'en"}, ["tcu"] = {"Southeastern Tarahumara"}, ["tcw"] = {"Tecpatlán Totonac"}, ["tcx"] = {"Toda"}, ["tcy"] = {"Tulu"}, ["tcz"] = {"Thado Chin"}, ["tda"] = {"Tagdal"}, ["tdb"] = {"Panchpargania"}, ["tdc"] = {"Emberá-Tadó"}, ["tdd"] = {"Tai Nüa"}, ["tde"] = {"Tiranige Diga Dogon"}, ["tdf"] = {"Talieng"}, ["tdg"] = {"Western Tamang"}, ["tdh"] = {"Thulung"}, ["tdi"] = {"Tomadino"}, ["tdj"] = {"Tajio"}, ["tdk"] = {"Tambas"}, ["tdl"] = {"Sur"}, ["tdm"] = {"Taruma"}, ["tdn"] = {"Tondano"}, ["tdo"] = {"Teme"}, ["tdq"] = {"Tita"}, ["tdr"] = {"Todrah"}, ["tds"] = {"Doutai"}, ["tdt"] = {"Tetun Dili"}, ["tdv"] = {"Toro"}, ["tdx"] = {"Tandroy-Mahafaly Malagasy"}, ["tdy"] = {"Tadyawan"}, ["tea"] = {"Temiar"}, ["teb"] = {"Tetete"}, ["tec"] = {"Terik"}, ["ted"] = {"Tepo Krumen"}, ["tee"] = {"Huehuetla Tepehua"}, ["tef"] = {"Teressa"}, ["teg"] = {"Teke-Tege"}, ["teh"] = {"Tehuelche"}, ["tei"] = {"Torricelli"}, ["tek"] = {"Ibali Teke"}, ["tem"] = {"Timne"}, ["ten"] = {"Tama (Colombia)"}, ["teo"] = {"Teso"}, ["tep"] = {"Tepecano"}, ["teq"] = {"Temein"}, ["ter"] = {"Tereno"}, ["tes"] = {"Tengger"}, ["tet"] = {"Tetum"}, ["teu"] = {"Soo"}, ["tev"] = {"Teor"}, ["tew"] = {"Tewa (USA)"}, ["tex"] = {"Tennet"}, ["tey"] = {"Tulishi"}, ["tez"] = {"Tetserret"}, ["tfi"] = {"Tofin Gbe"}, ["tfn"] = {"Tanaina"}, ["tfo"] = {"Tefaro"}, ["tfr"] = {"Teribe"}, ["tft"] = {"Ternate"}, ["tga"] = {"Sagalla"}, ["tgb"] = {"Tobilung"}, ["tgc"] = {"Tigak"}, ["tgd"] = {"Ciwogai"}, ["tge"] = {"Eastern Gorkha Tamang"}, ["tgf"] = {"Chalikha"}, ["tgh"] = {"Tobagonian Creole English"}, ["tgi"] = {"Lawunuia"}, ["tgj"] = {"Tagin"}, ["tgn"] = {"Tandaganon"}, ["tgo"] = {"Sudest"}, ["tgp"] = {"Tangoa"}, ["tgq"] = {"Tring"}, ["tgr"] = {"Tareng"}, ["tgs"] = {"Nume"}, ["tgt"] = {"Central Tagbanwa"}, ["tgu"] = {"Tanggu"}, ["tgv"] = {"Tingui-Boto"}, ["tgw"] = {"Tagwana Senoufo"}, ["tgx"] = {"Tagish"}, ["tgy"] = {"Togoyo"}, ["tgz"] = {"Tagalaka"}, ["thd"] = {"Kuuk Thaayorre", "Thayore"}, ["the"] = {"Chitwania Tharu"}, ["thf"] = {"Thangmi"}, ["thh"] = {"Northern Tarahumara"}, ["thi"] = {"Tai Long"}, ["thk"] = {"Tharaka", "Kitharaka"}, ["thl"] = {"Dangaura Tharu"}, ["thm"] = {"Aheu"}, ["thn"] = {"Thachanadan"}, ["thp"] = {"Thompson"}, ["thq"] = {"Kochila Tharu"}, ["thr"] = {"Rana Tharu"}, ["ths"] = {"Thakali"}, ["tht"] = {"Tahltan"}, ["thu"] = {"Thuri"}, ["thv"] = {"Tahaggart Tamahaq"}, ["thy"] = {"Tha"}, ["thz"] = {"Tayart Tamajeq"}, ["tia"] = {"Tidikelt Tamazight"}, ["tic"] = {"Tira"}, ["tif"] = {"Tifal"}, ["tig"] = {"Tigre"}, ["tih"] = {"Timugon Murut"}, ["tii"] = {"Tiene"}, ["tij"] = {"Tilung"}, ["tik"] = {"Tikar"}, ["til"] = {"Tillamook"}, ["tim"] = {"Timbe"}, ["tin"] = {"Tindi"}, ["tio"] = {"Teop"}, ["tip"] = {"Trimuris"}, ["tiq"] = {"Tiéfo"}, ["tis"] = {"Masadiit Itneg"}, ["tit"] = {"Tinigua"}, ["tiu"] = {"Adasen"}, ["tiv"] = {"Tiv"}, ["tiw"] = {"Tiwi"}, ["tix"] = {"Southern Tiwa"}, ["tiy"] = {"Tiruray"}, ["tiz"] = {"Tai Hongjin"}, ["tja"] = {"Tajuasohn"}, ["tjg"] = {"Tunjung"}, ["tji"] = {"Northern Tujia"}, ["tjj"] = {"Tjungundji"}, ["tjl"] = {"Tai Laing"}, ["tjm"] = {"Timucua"}, ["tjn"] = {"Tonjon"}, ["tjo"] = {"Temacine Tamazight"}, ["tjp"] = {"Tjupany"}, ["tjs"] = {"Southern Tujia"}, ["tju"] = {"Tjurruru"}, ["tjw"] = {"Djabwurrung"}, ["tka"] = {"Truká"}, ["tkb"] = {"Buksa"}, ["tkd"] = {"Tukudede"}, ["tke"] = {"Takwane"}, ["tkf"] = {"Tukumanféd"}, ["tkg"] = {"Tesaka Malagasy"}, ["tkl"] = {"Tokelau"}, ["tkm"] = {"Takelma"}, ["tkn"] = {"Toku-No-Shima"}, ["tkp"] = {"Tikopia"}, ["tkq"] = {"Tee"}, ["tkr"] = {"Tsakhur"}, ["tks"] = {"Takestani"}, ["tkt"] = {"Kathoriya Tharu"}, ["tku"] = {"Upper Necaxa Totonac"}, ["tkv"] = {"Mur Pano"}, ["tkw"] = {"Teanu"}, ["tkx"] = {"Tangko"}, ["tkz"] = {"Takua"}, ["tla"] = {"Southwestern Tepehuan"}, ["tlb"] = {"Tobelo"}, ["tlc"] = {"Yecuatla Totonac"}, ["tld"] = {"Talaud"}, ["tlf"] = {"Telefol"}, ["tlg"] = {"Tofanma"}, ["tlh"] = {"Klingon", "tlhIngan Hol"}, ["tli"] = {"Tlingit"}, ["tlj"] = {"Talinga-Bwisi"}, ["tlk"] = {"Taloki"}, ["tll"] = {"Tetela"}, ["tlm"] = {"Tolomako"}, ["tln"] = {"Talondo'"}, ["tlo"] = {"Talodi"}, ["tlp"] = {"Filomena Mata-Coahuitlán Totonac"}, ["tlq"] = {"Tai Loi"}, ["tlr"] = {"Talise"}, ["tls"] = {"Tambotalo"}, ["tlt"] = {"Sou Nama", "Teluti"}, ["tlu"] = {"Tulehu"}, ["tlv"] = {"Taliabu"}, ["tlx"] = {"Khehek"}, ["tly"] = {"Talysh"}, ["tma"] = {"Tama (Chad)"}, ["tmb"] = {"Katbol", "Avava"}, ["tmc"] = {"Tumak"}, ["tmd"] = {"Haruai"}, ["tme"] = {"Tremembé"}, ["tmf"] = {"Toba-Maskoy"}, ["tmg"] = {"Ternateño"}, ["tmh"] = {"Tamashek"}, ["tmi"] = {"Tutuba"}, ["tmj"] = {"Samarokena"}, ["tml"] = {"Tamnim Citak"}, ["tmm"] = {"Tai Thanh"}, ["tmn"] = {"Taman (Indonesia)"}, ["tmo"] = {"Temoq"}, ["tmq"] = {"Tumleo"}, ["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"}, ["tms"] = {"Tima"}, ["tmt"] = {"Tasmate"}, ["tmu"] = {"Iau"}, ["tmv"] = {"Tembo (Motembo)"}, ["tmw"] = {"Temuan"}, ["tmy"] = {"Tami"}, ["tmz"] = {"Tamanaku"}, ["tna"] = {"Tacana"}, ["tnb"] = {"Western Tunebo"}, ["tnc"] = {"Tanimuca-Retuarã"}, ["tnd"] = {"Angosturas Tunebo"}, ["tng"] = {"Tobanga"}, ["tnh"] = {"Maiani"}, ["tni"] = {"Tandia"}, ["tnk"] = {"Kwamera"}, ["tnl"] = {"Lenakel"}, ["tnm"] = {"Tabla"}, ["tnn"] = {"North Tanna"}, ["tno"] = {"Toromono"}, ["tnp"] = {"Whitesands"}, ["tnq"] = {"Taino"}, ["tnr"] = {"Ménik"}, ["tns"] = {"Tenis"}, ["tnt"] = {"Tontemboan"}, ["tnu"] = {"Tay Khang"}, ["tnv"] = {"Tangchangya"}, ["tnw"] = {"Tonsawang"}, ["tnx"] = {"Tanema"}, ["tny"] = {"Tongwe"}, ["tnz"] = {"Ten'edn"}, ["tob"] = {"Toba"}, ["toc"] = {"Coyutla Totonac"}, ["tod"] = {"Toma"}, ["tof"] = {"Gizrra"}, ["tog"] = {"Tonga (Nyasa)"}, ["toh"] = {"Gitonga"}, ["toi"] = {"Tonga (Zambia)"}, ["toj"] = {"Tojolabal"}, ["tok"] = {"Toki Pona"}, ["tol"] = {"Tolowa"}, ["tom"] = {"Tombulu"}, ["too"] = {"Xicotepec De Juárez Totonac"}, ["top"] = {"Papantla Totonac"}, ["toq"] = {"Toposa"}, ["tor"] = {"Togbo-Vara Banda"}, ["tos"] = {"Highland Totonac"}, ["tou"] = {"Tho"}, ["tov"] = {"Upper Taromi"}, ["tow"] = {"Jemez"}, ["tox"] = {"Tobian"}, ["toy"] = {"Topoiyo"}, ["toz"] = {"To"}, ["tpa"] = {"Taupota"}, ["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"}, ["tpe"] = {"Tippera"}, ["tpf"] = {"Tarpia"}, ["tpg"] = {"Kula"}, ["tpi"] = {"Tok Pisin"}, ["tpj"] = {"Tapieté"}, ["tpk"] = {"Tupinikin"}, ["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"}, ["tpm"] = {"Tampulma"}, ["tpn"] = {"Tupinambá"}, ["tpo"] = {"Tai Pao"}, ["tpp"] = {"Pisaflores Tepehua"}, ["tpq"] = {"Tukpa"}, ["tpr"] = {"Tuparí"}, ["tpt"] = {"Tlachichilco Tepehua"}, ["tpu"] = {"Tampuan"}, ["tpv"] = {"Tanapag"}, ["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"}, ["tpy"] = {"Trumai"}, ["tpz"] = {"Tinputz"}, ["tqb"] = {"Tembé"}, ["tql"] = {"Lehali"}, ["tqm"] = {"Turumsa"}, ["tqn"] = {"Tenino"}, ["tqo"] = {"Toaripi"}, ["tqp"] = {"Tomoip"}, ["tqq"] = {"Tunni"}, ["tqr"] = {"Torona"}, ["tqt"] = {"Western Totonac"}, ["tqu"] = {"Touo"}, ["tqw"] = {"Tonkawa"}, ["tra"] = {"Tirahi"}, ["trb"] = {"Terebu"}, ["trc"] = {"Copala Triqui"}, ["trd"] = {"Turi"}, ["tre"] = {"East Tarangan"}, ["trf"] = {"Trinidadian Creole English"}, ["trg"] = {"Lishán Didán"}, ["trh"] = {"Turaka"}, ["tri"] = {"Trió"}, ["trj"] = {"Toram"}, ["trk"] = {"Turkic languages"}, ["trl"] = {"Traveller Scottish"}, ["trm"] = {"Tregami"}, ["trn"] = {"Trinitario"}, ["tro"] = {"Tarao Naga"}, ["trp"] = {"Kok Borok"}, ["trq"] = {"San Martín Itunyoso Triqui"}, ["trr"] = {"Taushiro"}, ["trs"] = {"Chicahuaxtla Triqui"}, ["trt"] = {"Tunggare"}, ["tru"] = {"Turoyo", "Surayt"}, ["trv"] = {"Sediq", "Seediq", "Taroko"}, ["trw"] = {"Torwali"}, ["trx"] = {"Tringgus-Sembaan Bidayuh"}, ["try"] = {"Turung"}, ["trz"] = {"Torá"}, ["tsa"] = {"Tsaangi"}, ["tsb"] = {"Tsamai"}, ["tsc"] = {"Tswa"}, ["tsd"] = {"Tsakonian"}, ["tse"] = {"Tunisian Sign Language"}, ["tsg"] = {"Tausug"}, ["tsh"] = {"Tsuvan"}, ["tsi"] = {"Tsimshian"}, ["tsj"] = {"Tshangla"}, ["tsk"] = {"Tseku"}, ["tsl"] = {"Ts'ün-Lao"}, ["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"}, ["tsp"] = {"Northern Toussian"}, ["tsq"] = {"Thai Sign Language"}, ["tsr"] = {"Akei"}, ["tss"] = {"Taiwan Sign Language"}, ["tst"] = {"Tondi Songway Kiini"}, ["tsu"] = {"Tsou"}, ["tsv"] = {"Tsogo"}, ["tsw"] = {"Tsishingini"}, ["tsx"] = {"Mubami"}, ["tsy"] = {"Tebul Sign Language"}, ["tsz"] = {"Purepecha"}, ["tta"] = {"Tutelo"}, ["ttb"] = {"Gaa"}, ["ttc"] = {"Tektiteko"}, ["ttd"] = {"Tauade"}, ["tte"] = {"Bwanabwana"}, ["ttf"] = {"Tuotomb"}, ["ttg"] = {"Tutong"}, ["tth"] = {"Upper Ta'oih"}, ["tti"] = {"Tobati"}, ["ttj"] = {"Tooro"}, ["ttk"] = {"Totoro"}, ["ttl"] = {"Totela"}, ["ttm"] = {"Northern Tutchone"}, ["ttn"] = {"Towei"}, ["tto"] = {"Lower Ta'oih"}, ["ttp"] = {"Tombelala"}, ["ttq"] = {"Tawallammat Tamajaq"}, ["ttr"] = {"Tera"}, ["tts"] = {"Northeastern Thai"}, ["ttt"] = {"Muslim Tat"}, ["ttu"] = {"Torau"}, ["ttv"] = {"Titan"}, ["ttw"] = {"Long Wat"}, ["tty"] = {"Sikaritai"}, ["ttz"] = {"Tsum"}, ["tua"] = {"Wiarumus"}, ["tub"] = {"Tübatulabal"}, ["tuc"] = {"Mutu"}, ["tud"] = {"Tuxá"}, ["tue"] = {"Tuyuca"}, ["tuf"] = {"Central Tunebo"}, ["tug"] = {"Tunia"}, ["tuh"] = {"Taulil"}, ["tui"] = {"Tupuri"}, ["tuj"] = {"Tugutil"}, ["tul"] = {"Tula"}, ["tum"] = {"Tumbuka"}, ["tun"] = {"Tunica"}, ["tuo"] = {"Tucano"}, ["tup"] = {"Tupi languages"}, ["tuq"] = {"Tedaga"}, ["tus"] = {"Tuscarora"}, ["tut"] = {"Altaic languages"}, ["tuu"] = {"Tututni"}, ["tuv"] = {"Turkana"}, ["tuw"] = {"Tungus languages"}, ["tux"] = {"Tuxináwa"}, ["tuy"] = {"Tugen"}, ["tuz"] = {"Turka"}, ["tva"] = {"Vaghua"}, ["tvd"] = {"Tsuvadi"}, ["tve"] = {"Te'un"}, ["tvi"] = {"Tulai"}, ["tvk"] = {"Southeast Ambrym"}, ["tvl"] = {"Tuvalu"}, ["tvm"] = {"Tela-Masbuar"}, ["tvn"] = {"Tavoyan"}, ["tvo"] = {"Tidore"}, ["tvs"] = {"Taveta"}, ["tvt"] = {"Tutsa Naga"}, ["tvu"] = {"Tunen"}, ["tvw"] = {"Sedoa"}, ["tvx"] = {"Taivoan"}, ["tvy"] = {"Timor Pidgin"}, ["twa"] = {"Twana"}, ["twb"] = {"Western Tawbuid"}, ["twc"] = {"Teshenawa"}, ["twd"] = {"Twents"}, ["twe"] = {"Tewa (Indonesia)"}, ["twf"] = {"Northern Tiwa"}, ["twg"] = {"Tereweng"}, ["twh"] = {"Tai Dón"}, ["twl"] = {"Tawara"}, ["twm"] = {"Tawang Monpa"}, ["twn"] = {"Twendi"}, ["two"] = {"Tswapong"}, ["twp"] = {"Ere"}, ["twq"] = {"Tasawaq"}, ["twr"] = {"Southwestern Tarahumara"}, ["twt"] = {"Turiwára"}, ["twu"] = {"Termanu"}, ["tww"] = {"Tuwari"}, ["twx"] = {"Tewe"}, ["twy"] = {"Tawoyan"}, ["txa"] = {"Tombonuo"}, ["txb"] = {"Tokharian B"}, ["txc"] = {"Tsetsaut"}, ["txe"] = {"Totoli"}, ["txg"] = {"Tangut"}, ["txh"] = {"Thracian"}, ["txi"] = {"Ikpeng"}, ["txj"] = {"Tarjumo"}, ["txm"] = {"Tomini"}, ["txn"] = {"West Tarangan"}, ["txo"] = {"Toto"}, ["txq"] = {"Tii"}, ["txr"] = {"Tartessian"}, ["txs"] = {"Tonsea"}, ["txt"] = {"Citak"}, ["txu"] = {"Kayapó"}, ["txx"] = {"Tatana"}, ["txy"] = {"Tanosy Malagasy"}, ["tya"] = {"Tauya"}, ["tye"] = {"Kyanga"}, ["tyh"] = {"O'du"}, ["tyi"] = {"Teke-Tsaayi"}, ["tyj"] = {"Tai Do", "Tai Yo"}, ["tyl"] = {"Thu Lao"}, ["tyn"] = {"Kombai"}, ["typ"] = {"Thaypan"}, ["tyr"] = {"Tai Daeng"}, ["tys"] = {"Tày Sa Pa"}, ["tyt"] = {"Tày Tac"}, ["tyu"] = {"Kua"}, ["tyv"] = {"Tuvinian"}, ["tyx"] = {"Teke-Tyee"}, ["tyy"] = {"Tiyaa"}, ["tyz"] = {"Tày"}, ["tza"] = {"Tanzanian Sign Language"}, ["tzh"] = {"Tzeltal"}, ["tzj"] = {"Tz'utujil"}, ["tzl"] = {"Talossan"}, ["tzm"] = {"Central Atlas Tamazight"}, ["tzn"] = {"Tugun"}, ["tzo"] = {"Tzotzil"}, ["tzx"] = {"Tabriak"}, ["uam"] = {"Uamué"}, ["uan"] = {"Kuan"}, ["uar"] = {"Tairuma"}, ["uba"] = {"Ubang"}, ["ubi"] = {"Ubi"}, ["ubl"] = {"Buhi'non Bikol"}, ["ubr"] = {"Ubir"}, ["ubu"] = {"Umbu-Ungu"}, ["uby"] = {"Ubykh"}, ["uda"] = {"Uda"}, ["ude"] = {"Udihe"}, ["udg"] = {"Muduga"}, ["udi"] = {"Udi"}, ["udj"] = {"Ujir"}, ["udl"] = {"Wuzlam"}, ["udm"] = {"Udmurt"}, ["udu"] = {"Uduk"}, ["ues"] = {"Kioko"}, ["ufi"] = {"Ufim"}, ["uga"] = {"Ugaritic"}, ["ugb"] = {"Kuku-Ugbanh"}, ["uge"] = {"Ughele"}, ["ugh"] = {"Kubachi"}, ["ugn"] = {"Ugandan Sign Language"}, ["ugo"] = {"Ugong"}, ["ugy"] = {"Uruguayan Sign Language"}, ["uha"] = {"Uhami"}, ["uhn"] = {"Damal"}, ["uis"] = {"Uisai"}, ["uiv"] = {"Iyive"}, ["uji"] = {"Tanjijili"}, ["uka"] = {"Kaburi"}, ["ukg"] = {"Ukuriguma"}, ["ukh"] = {"Ukhwejo"}, ["uki"] = {"Kui (India)"}, ["ukk"] = {"Muak Sa-aak"}, ["ukl"] = {"Ukrainian Sign Language"}, ["ukp"] = {"Ukpe-Bayobiri"}, ["ukq"] = {"Ukwa"}, ["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"}, ["uku"] = {"Ukue"}, ["ukv"] = {"Kuku"}, ["ukw"] = {"Ukwuani-Aboh-Ndoni"}, ["uky"] = {"Kuuk-Yak"}, ["ula"] = {"Fungwa"}, ["ulb"] = {"Ulukwumi"}, ["ulc"] = {"Ulch"}, ["ule"] = {"Lule"}, ["ulf"] = {"Usku", "Afra"}, ["uli"] = {"Ulithian"}, ["ulk"] = {"Meriam Mir"}, ["ull"] = {"Ullatan"}, ["ulm"] = {"Ulumanda'"}, ["uln"] = {"Unserdeutsch"}, ["ulu"] = {"Uma' Lung"}, ["ulw"] = {"Ulwa"}, ["uly"] = {"Buli"}, ["uma"] = {"Umatilla"}, ["umb"] = {"Umbundu"}, ["umc"] = {"Marrucinian"}, ["umd"] = {"Umbindhamu"}, ["umg"] = {"Morrobalama", "Umbuygamu"}, ["umi"] = {"Ukit"}, ["umm"] = {"Umon"}, ["umn"] = {"Makyan Naga"}, ["umo"] = {"Umotína"}, ["ump"] = {"Umpila"}, ["umr"] = {"Umbugarla"}, ["ums"] = {"Pendau"}, ["umu"] = {"Munsee"}, ["una"] = {"North Watut"}, ["und"] = {"Undetermined"}, ["une"] = {"Uneme"}, ["ung"] = {"Ngarinyin"}, ["uni"] = {"Uni"}, ["unk"] = {"Enawené-Nawé"}, ["unm"] = {"Unami"}, ["unn"] = {"Kurnai"}, ["unr"] = {"Mundari"}, ["unu"] = {"Unubahe"}, ["unx"] = {"Munda"}, ["unz"] = {"Unde Kaili"}, ["uon"] = {"Kulon"}, ["upi"] = {"Umeda"}, ["upv"] = {"Uripiv-Wala-Rano-Atchin"}, ["ura"] = {"Urarina"}, ["urb"] = {"Urubú-Kaapor", "Kaapor"}, ["urc"] = {"Urningangg"}, ["ure"] = {"Uru"}, ["urf"] = {"Uradhi"}, ["urg"] = {"Urigina"}, ["urh"] = {"Urhobo"}, ["uri"] = {"Urim"}, ["urj"] = {"Uralic languages"}, ["urk"] = {"Urak Lawoi'"}, ["url"] = {"Urali"}, ["urm"] = {"Urapmin"}, ["urn"] = {"Uruangnirin"}, ["uro"] = {"Ura (Papua New Guinea)"}, ["urp"] = {"Uru-Pa-In"}, ["urr"] = {"Lehalurup", "Löyöp"}, ["urt"] = {"Urat"}, ["uru"] = {"Urumi"}, ["urv"] = {"Uruava"}, ["urw"] = {"Sop"}, ["urx"] = {"Urimo"}, ["ury"] = {"Orya"}, ["urz"] = {"Uru-Eu-Wau-Wau"}, ["usa"] = {"Usarufa"}, ["ush"] = {"Ushojo"}, ["usi"] = {"Usui"}, ["usk"] = {"Usaghade"}, ["usp"] = {"Uspanteco"}, ["uss"] = {"us-Saare"}, ["usu"] = {"Uya"}, ["uta"] = {"Otank"}, ["ute"] = {"Ute-Southern Paiute"}, ["uth"] = {"ut-Hun"}, ["utp"] = {"Amba (Solomon Islands)"}, ["utr"] = {"Etulo"}, ["utu"] = {"Utu"}, ["uum"] = {"Urum"}, ["uur"] = {"Ura (Vanuatu)"}, ["uuu"] = {"U"}, ["uve"] = {"West Uvean", "Fagauvea"}, ["uvh"] = {"Uri"}, ["uvl"] = {"Lote"}, ["uwa"] = {"Kuku-Uwanh"}, ["uya"] = {"Doko-Uyanga"}, ["uzn"] = {"Northern Uzbek"}, ["uzs"] = {"Southern Uzbek"}, ["vaa"] = {"Vaagri Booli"}, ["vae"] = {"Vale"}, ["vaf"] = {"Vafsi"}, ["vag"] = {"Vagla"}, ["vah"] = {"Varhadi-Nagpuri"}, ["vai"] = {"Vai"}, ["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"}, ["val"] = {"Vehes"}, ["vam"] = {"Vanimo"}, ["van"] = {"Valman"}, ["vao"] = {"Vao"}, ["vap"] = {"Vaiphei"}, ["var"] = {"Huarijio"}, ["vas"] = {"Vasavi"}, ["vau"] = {"Vanuma"}, ["vav"] = {"Varli"}, ["vay"] = {"Wayu"}, ["vbb"] = {"Southeast Babar"}, ["vbk"] = {"Southwestern Bontok"}, ["vec"] = {"Venetian"}, ["ved"] = {"Veddah"}, ["vel"] = {"Veluws"}, ["vem"] = {"Vemgo-Mabas"}, ["veo"] = {"Ventureño"}, ["vep"] = {"Veps"}, ["ver"] = {"Mom Jango"}, ["vgr"] = {"Vaghri"}, ["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"}, ["vic"] = {"Virgin Islands Creole English"}, ["vid"] = {"Vidunda"}, ["vif"] = {"Vili"}, ["vig"] = {"Viemo"}, ["vil"] = {"Vilela"}, ["vin"] = {"Vinza"}, ["vis"] = {"Vishavan"}, ["vit"] = {"Viti"}, ["viv"] = {"Iduna"}, ["vjk"] = {"Bajjika"}, ["vka"] = {"Kariyarra"}, ["vkj"] = {"Kujarge"}, ["vkk"] = {"Kaur"}, ["vkl"] = {"Kulisusu"}, ["vkm"] = {"Kamakan"}, ["vkn"] = {"Koro Nulu"}, ["vko"] = {"Kodeoha"}, ["vkp"] = {"Korlai Creole Portuguese"}, ["vkt"] = {"Tenggarong Kutai Malay"}, ["vku"] = {"Kurrama"}, ["vkz"] = {"Koro Zuba"}, ["vlp"] = {"Valpei"}, ["vls"] = {"Vlaams"}, ["vma"] = {"Martuyhunira"}, ["vmb"] = {"Barbaram"}, ["vmc"] = {"Juxtlahuaca Mixtec"}, ["vmd"] = {"Mudu Koraga"}, ["vme"] = {"East Masela"}, ["vmf"] = {"Mainfränkisch"}, ["vmg"] = {"Lungalunga"}, ["vmh"] = {"Maraghei"}, ["vmi"] = {"Miwa"}, ["vmj"] = {"Ixtayutla Mixtec"}, ["vmk"] = {"Makhuwa-Shirima"}, ["vml"] = {"Malgana"}, ["vmm"] = {"Mitlatongo Mixtec"}, ["vmp"] = {"Soyaltepec Mazatec"}, ["vmq"] = {"Soyaltepec Mixtec"}, ["vmr"] = {"Marenje"}, ["vms"] = {"Moksela"}, ["vmu"] = {"Muluridyi"}, ["vmv"] = {"Valley Maidu"}, ["vmw"] = {"Makhuwa"}, ["vmx"] = {"Tamazola Mixtec"}, ["vmy"] = {"Ayautla Mazatec"}, ["vmz"] = {"Mazatlán Mazatec"}, ["vnk"] = {"Vano", "Lovono"}, ["vnm"] = {"Vinmavis", "Neve'ei"}, ["vnp"] = {"Vunapu"}, ["vor"] = {"Voro"}, ["vot"] = {"Votic"}, ["vra"] = {"Vera'a"}, ["vro"] = {"Võro"}, ["vrs"] = {"Varisi"}, ["vrt"] = {"Burmbar", "Banam Bay"}, ["vsi"] = {"Moldova Sign Language"}, ["vsl"] = {"Venezuelan Sign Language"}, ["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"}, ["vto"] = {"Vitou"}, ["vum"] = {"Vumbu"}, ["vun"] = {"Vunjo"}, ["vut"] = {"Vute"}, ["vwa"] = {"Awa (China)"}, ["waa"] = {"Walla Walla"}, ["wab"] = {"Wab"}, ["wac"] = {"Wasco-Wishram"}, ["wad"] = {"Wamesa", "Wondama"}, ["wae"] = {"Walser"}, ["waf"] = {"Wakoná"}, ["wag"] = {"Wa'ema"}, ["wah"] = {"Watubela"}, ["wai"] = {"Wares"}, ["waj"] = {"Waffa"}, ["wak"] = {"Wakashan languages"}, ["wal"] = {"Wolaytta", "Wolaitta"}, ["wam"] = {"Wampanoag"}, ["wan"] = {"Wan"}, ["wao"] = {"Wappo"}, ["wap"] = {"Wapishana"}, ["waq"] = {"Wagiman"}, ["war"] = {"Waray (Philippines)"}, ["was"] = {"Washo"}, ["wat"] = {"Kaninuwa"}, ["wau"] = {"Waurá"}, ["wav"] = {"Waka"}, ["waw"] = {"Waiwai"}, ["wax"] = {"Watam", "Marangis"}, ["way"] = {"Wayana"}, ["waz"] = {"Wampur"}, ["wba"] = {"Warao"}, ["wbb"] = {"Wabo"}, ["wbe"] = {"Waritai"}, ["wbf"] = {"Wara"}, ["wbh"] = {"Wanda"}, ["wbi"] = {"Vwanji"}, ["wbj"] = {"Alagwa"}, ["wbk"] = {"Waigali"}, ["wbl"] = {"Wakhi"}, ["wbm"] = {"Wa"}, ["wbp"] = {"Warlpiri"}, ["wbq"] = {"Waddar"}, ["wbr"] = {"Wagdi"}, ["wbs"] = {"West Bengal Sign Language"}, ["wbt"] = {"Warnman"}, ["wbv"] = {"Wajarri"}, ["wbw"] = {"Woi"}, ["wca"] = {"Yanomámi"}, ["wci"] = {"Waci Gbe"}, ["wdd"] = {"Wandji"}, ["wdg"] = {"Wadaginam"}, ["wdj"] = {"Wadjiginy"}, ["wdk"] = {"Wadikali"}, ["wdt"] = {"Wendat"}, ["wdu"] = {"Wadjigu"}, ["wdy"] = {"Wadjabangayi"}, ["wea"] = {"Wewaw"}, ["wec"] = {"Wè Western"}, ["wed"] = {"Wedau"}, ["weg"] = {"Wergaia"}, ["weh"] = {"Weh"}, ["wei"] = {"Kiunum"}, ["wem"] = {"Weme Gbe"}, ["wen"] = {"Sorbian languages"}, ["weo"] = {"Wemale"}, ["wep"] = {"Westphalien"}, ["wer"] = {"Weri"}, ["wes"] = {"Cameroon Pidgin"}, ["wet"] = {"Perai"}, ["weu"] = {"Rawngtu Chin"}, ["wew"] = {"Wejewa"}, ["wfg"] = {"Yafi", "Zorop"}, ["wga"] = {"Wagaya"}, ["wgb"] = {"Wagawaga"}, ["wgg"] = {"Wangkangurru", "Wangganguru"}, ["wgi"] = {"Wahgi"}, ["wgo"] = {"Waigeo"}, ["wgu"] = {"Wirangu"}, ["wgy"] = {"Warrgamay"}, ["wha"] = {"Sou Upaa", "Manusela"}, ["whg"] = {"North Wahgi"}, ["whk"] = {"Wahau Kenyah"}, ["whu"] = {"Wahau Kayan"}, ["wib"] = {"Southern Toussian"}, ["wic"] = {"Wichita"}, ["wie"] = {"Wik-Epa"}, ["wif"] = {"Wik-Keyangan"}, ["wig"] = {"Wik Ngathan"}, ["wih"] = {"Wik-Me'anha"}, ["wii"] = {"Minidien"}, ["wij"] = {"Wik-Iiyanh"}, ["wik"] = {"Wikalkan"}, ["wil"] = {"Wilawila"}, ["wim"] = {"Wik-Mungkan"}, ["win"] = {"Ho-Chunk"}, ["wir"] = {"Wiraféd"}, ["wiu"] = {"Wiru"}, ["wiv"] = {"Vitu"}, ["wiy"] = {"Wiyot"}, ["wja"] = {"Waja"}, ["wji"] = {"Warji"}, ["wka"] = {"Kw'adza"}, ["wkb"] = {"Kumbaran"}, ["wkd"] = {"Wakde", "Mo"}, ["wkl"] = {"Kalanadi"}, ["wkr"] = {"Keerray-Woorroong"}, ["wku"] = {"Kunduvadi"}, ["wkw"] = {"Wakawaka"}, ["wky"] = {"Wangkayutyuru"}, ["wla"] = {"Walio"}, ["wlc"] = {"Mwali Comorian"}, ["wle"] = {"Wolane"}, ["wlg"] = {"Kunbarlang"}, ["wlh"] = {"Welaun"}, ["wli"] = {"Waioli"}, ["wlk"] = {"Wailaki"}, ["wll"] = {"Wali (Sudan)"}, ["wlm"] = {"Middle Welsh"}, ["wlo"] = {"Wolio"}, ["wlr"] = {"Wailapa"}, ["wls"] = {"Wallisian"}, ["wlu"] = {"Wuliwuli"}, ["wlv"] = {"Wichí Lhamtés Vejoz"}, ["wlw"] = {"Walak"}, ["wlx"] = {"Wali (Ghana)"}, ["wly"] = {"Waling"}, ["wma"] = {"Mawa (Nigeria)"}, ["wmb"] = {"Wambaya"}, ["wmc"] = {"Wamas"}, ["wmd"] = {"Mamaindé"}, ["wme"] = {"Wambule"}, ["wmg"] = {"Western Minyag"}, ["wmh"] = {"Waima'a"}, ["wmi"] = {"Wamin"}, ["wmm"] = {"Maiwa (Indonesia)"}, ["wmn"] = {"Waamwang"}, ["wmo"] = {"Wom (Papua New Guinea)"}, ["wms"] = {"Wambon"}, ["wmt"] = {"Walmajarri"}, ["wmw"] = {"Mwani"}, ["wmx"] = {"Womo"}, ["wnb"] = {"Mokati"}, ["wnc"] = {"Wantoat"}, ["wnd"] = {"Wandarang"}, ["wne"] = {"Waneci"}, ["wng"] = {"Wanggom"}, ["wni"] = {"Ndzwani Comorian"}, ["wnk"] = {"Wanukaka"}, ["wnm"] = {"Wanggamala"}, ["wnn"] = {"Wunumara"}, ["wno"] = {"Wano"}, ["wnp"] = {"Wanap"}, ["wnu"] = {"Usan"}, ["wnw"] = {"Wintu"}, ["wny"] = {"Wanyi", "Waanyi"}, ["woa"] = {"Kuwema", "Tyaraity"}, ["wob"] = {"Wè Northern"}, ["woc"] = {"Wogeo"}, ["wod"] = {"Wolani"}, ["woe"] = {"Woleaian"}, ["wof"] = {"Gambian Wolof"}, ["wog"] = {"Wogamusin"}, ["woi"] = {"Kamang"}, ["wok"] = {"Longto"}, ["wom"] = {"Wom (Nigeria)"}, ["won"] = {"Wongo"}, ["woo"] = {"Manombai"}, ["wor"] = {"Woria"}, ["wos"] = {"Hanga Hundi"}, ["wow"] = {"Wawonii"}, ["woy"] = {"Weyto"}, ["wpc"] = {"Maco"}, ["wrb"] = {"Waluwarra", "Warluwara"}, ["wrg"] = {"Warungu", "Gudjal"}, ["wrh"] = {"Wiradjuri"}, ["wri"] = {"Wariyangga"}, ["wrk"] = {"Garrwa"}, ["wrl"] = {"Warlmanpa"}, ["wrm"] = {"Warumungu"}, ["wrn"] = {"Warnang"}, ["wro"] = {"Worrorra"}, ["wrp"] = {"Waropen"}, ["wrr"] = {"Wardaman"}, ["wrs"] = {"Waris"}, ["wru"] = {"Waru"}, ["wrv"] = {"Waruna"}, ["wrw"] = {"Gugu Warra"}, ["wrx"] = {"Wae Rana"}, ["wry"] = {"Merwari"}, ["wrz"] = {"Waray (Australia)"}, ["wsa"] = {"Warembori"}, ["wsg"] = {"Adilabad Gondi"}, ["wsi"] = {"Wusi"}, ["wsk"] = {"Waskia"}, ["wsr"] = {"Owenia"}, ["wss"] = {"Wasa"}, ["wsu"] = {"Wasu"}, ["wsv"] = {"Wotapuri-Katarqalai"}, ["wtb"] = {"Matambwe"}, ["wtf"] = {"Watiwa"}, ["wth"] = {"Wathawurrung"}, ["wti"] = {"Berta"}, ["wtk"] = {"Watakataui"}, ["wtm"] = {"Mewati"}, ["wtw"] = {"Wotu"}, ["wua"] = {"Wikngenchera"}, ["wub"] = {"Wunambal"}, ["wud"] = {"Wudu"}, ["wuh"] = {"Wutunhua"}, ["wul"] = {"Silimo"}, ["wum"] = {"Wumbvu"}, ["wun"] = {"Bungu"}, ["wur"] = {"Wurrugu"}, ["wut"] = {"Wutung"}, ["wuu"] = {"Wu Chinese"}, ["wuv"] = {"Wuvulu-Aua"}, ["wux"] = {"Wulna"}, ["wuy"] = {"Wauyai"}, ["wwa"] = {"Waama"}, ["wwb"] = {"Wakabunga"}, ["wwo"] = {"Wetamut", "Dorig"}, ["wwr"] = {"Warrwa"}, ["www"] = {"Wawa"}, ["wxa"] = {"Waxianghua"}, ["wxw"] = {"Wardandi"}, ["wyb"] = {"Wangaaybuwan-Ngiyambaa"}, ["wyi"] = {"Woiwurrung"}, ["wym"] = {"Wymysorys"}, ["wyn"] = {"Wyandot"}, ["wyr"] = {"Wayoró"}, ["wyy"] = {"Western Fijian"}, ["xaa"] = {"Andalusian Arabic"}, ["xab"] = {"Sambe"}, ["xac"] = {"Kachari"}, ["xad"] = {"Adai"}, ["xae"] = {"Aequian"}, ["xag"] = {"Aghwan"}, ["xai"] = {"Kaimbé"}, ["xaj"] = {"Ararandewára"}, ["xak"] = {"Máku"}, ["xal"] = {"Kalmyk", "Oirat"}, ["xam"] = {"ǀXam"}, ["xan"] = {"Xamtanga"}, ["xao"] = {"Khao"}, ["xap"] = {"Apalachee"}, ["xaq"] = {"Aquitanian"}, ["xar"] = {"Karami"}, ["xas"] = {"Kamas"}, ["xat"] = {"Katawixi"}, ["xau"] = {"Kauwera"}, ["xav"] = {"Xavánte"}, ["xaw"] = {"Kawaiisu"}, ["xay"] = {"Kayan Mahakam"}, ["xbb"] = {"Lower Burdekin"}, ["xbc"] = {"Bactrian"}, ["xbd"] = {"Bindal"}, ["xbe"] = {"Bigambal"}, ["xbg"] = {"Bunganditj"}, ["xbi"] = {"Kombio"}, ["xbj"] = {"Birrpayi"}, ["xbm"] = {"Middle Breton"}, ["xbn"] = {"Kenaboi"}, ["xbo"] = {"Bolgarian"}, ["xbp"] = {"Bibbulman"}, ["xbr"] = {"Kambera"}, ["xbw"] = {"Kambiwá"}, ["xby"] = {"Batjala", "Batyala"}, ["xcb"] = {"Cumbric"}, ["xcc"] = {"Camunic"}, ["xce"] = {"Celtiberian"}, ["xcg"] = {"Cisalpine Gaulish"}, ["xch"] = {"Chemakum", "Chimakum"}, ["xcl"] = {"Classical Armenian"}, ["xcm"] = {"Comecrudo"}, ["xcn"] = {"Cotoname"}, ["xco"] = {"Chorasmian"}, ["xcr"] = {"Carian"}, ["xct"] = {"Classical Tibetan"}, ["xcu"] = {"Curonian"}, ["xcv"] = {"Chuvantsy"}, ["xcw"] = {"Coahuilteco"}, ["xcy"] = {"Cayuse"}, ["xda"] = {"Darkinyung"}, ["xdc"] = {"Dacian"}, ["xdk"] = {"Dharuk"}, ["xdm"] = {"Edomite"}, ["xdo"] = {"Kwandu"}, ["xdq"] = {"Kaitag"}, ["xdy"] = {"Malayic Dayak"}, ["xeb"] = {"Eblan"}, ["xed"] = {"Hdi"}, ["xeg"] = {"ǁXegwi"}, ["xel"] = {"Kelo"}, ["xem"] = {"Kembayan"}, ["xep"] = {"Epi-Olmec"}, ["xer"] = {"Xerénte"}, ["xes"] = {"Kesawai"}, ["xet"] = {"Xetá"}, ["xeu"] = {"Keoru-Ahia"}, ["xfa"] = {"Faliscan"}, ["xga"] = {"Galatian"}, ["xgb"] = {"Gbin"}, ["xgd"] = {"Gudang"}, ["xgf"] = {"Gabrielino-Fernandeño"}, ["xgg"] = {"Goreng"}, ["xgi"] = {"Garingbal"}, ["xgl"] = {"Galindan"}, ["xgm"] = {"Dharumbal", "Guwinmal"}, ["xgn"] = {"Mongolian languages"}, ["xgr"] = {"Garza"}, ["xgu"] = {"Unggumi"}, ["xgw"] = {"Guwa"}, ["xha"] = {"Harami"}, ["xhc"] = {"Hunnic"}, ["xhd"] = {"Hadrami"}, ["xhe"] = {"Khetrani"}, ["xhm"] = {"Middle Khmer (1400 to 1850 CE)"}, ["xhr"] = {"Hernican"}, ["xht"] = {"Hattic"}, ["xhu"] = {"Hurrian"}, ["xhv"] = {"Khua"}, ["xib"] = {"Iberian"}, ["xii"] = {"Xiri"}, ["xil"] = {"Illyrian"}, ["xin"] = {"Xinca"}, ["xir"] = {"Xiriâna"}, ["xis"] = {"Kisan"}, ["xiv"] = {"Indus Valley Language"}, ["xiy"] = {"Xipaya"}, ["xjb"] = {"Minjungbal"}, ["xjt"] = {"Jaitmatang"}, ["xka"] = {"Kalkoti"}, ["xkb"] = {"Northern Nago"}, ["xkc"] = {"Kho'ini"}, ["xkd"] = {"Mendalam Kayan"}, ["xke"] = {"Kereho"}, ["xkf"] = {"Khengkha"}, ["xkg"] = {"Kagoro"}, ["xki"] = {"Kenyan Sign Language"}, ["xkj"] = {"Kajali"}, ["xkk"] = {"Kachok", "Kaco'"}, ["xkl"] = {"Mainstream Kenyah"}, ["xkn"] = {"Kayan River Kayan"}, ["xko"] = {"Kiorr"}, ["xkp"] = {"Kabatei"}, ["xkq"] = {"Koroni"}, ["xkr"] = {"Xakriabá"}, ["xks"] = {"Kumbewaha"}, ["xkt"] = {"Kantosi"}, ["xku"] = {"Kaamba"}, ["xkv"] = {"Kgalagadi"}, ["xkw"] = {"Kembra"}, ["xkx"] = {"Karore"}, ["xky"] = {"Uma' Lasan"}, ["xkz"] = {"Kurtokha"}, ["xla"] = {"Kamula"}, ["xlb"] = {"Loup B"}, ["xlc"] = {"Lycian"}, ["xld"] = {"Lydian"}, ["xle"] = {"Lemnian"}, ["xlg"] = {"Ligurian (Ancient)"}, ["xli"] = {"Liburnian"}, ["xln"] = {"Alanic"}, ["xlo"] = {"Loup A"}, ["xlp"] = {"Lepontic"}, ["xls"] = {"Lusitanian"}, ["xlu"] = {"Cuneiform Luwian"}, ["xly"] = {"Elymian"}, ["xma"] = {"Mushungulu"}, ["xmb"] = {"Mbonga"}, ["xmc"] = {"Makhuwa-Marrevone"}, ["xmd"] = {"Mbudum"}, ["xme"] = {"Median"}, ["xmf"] = {"Mingrelian"}, ["xmg"] = {"Mengaka"}, ["xmh"] = {"Kugu-Muminh"}, ["xmj"] = {"Majera"}, ["xmk"] = {"Ancient Macedonian"}, ["xml"] = {"Malaysian Sign Language"}, ["xmm"] = {"Manado Malay"}, ["xmn"] = {"Manichaean Middle Persian"}, ["xmo"] = {"Morerebi"}, ["xmp"] = {"Kuku-Mu'inh"}, ["xmq"] = {"Kuku-Mangk"}, ["xmr"] = {"Meroitic"}, ["xms"] = {"Moroccan Sign Language"}, ["xmt"] = {"Matbat"}, ["xmu"] = {"Kamu"}, ["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"}, ["xmw"] = {"Tsimihety Malagasy"}, ["xmx"] = {"Salawati", "Maden"}, ["xmy"] = {"Mayaguduna"}, ["xmz"] = {"Mori Bawah"}, ["xna"] = {"Ancient North Arabian"}, ["xnb"] = {"Kanakanabu"}, ["xnd"] = {"Na-Dene languages"}, ["xng"] = {"Middle Mongolian"}, ["xnh"] = {"Kuanhua"}, ["xni"] = {"Ngarigu"}, ["xnj"] = {"Ngoni (Tanzania)"}, ["xnk"] = {"Nganakarti"}, ["xnm"] = {"Ngumbarl"}, ["xnn"] = {"Northern Kankanay"}, ["xno"] = {"Anglo-Norman"}, ["xnq"] = {"Ngoni (Mozambique)"}, ["xnr"] = {"Kangri"}, ["xns"] = {"Kanashi"}, ["xnt"] = {"Narragansett"}, ["xnu"] = {"Nukunul"}, ["xny"] = {"Nyiyaparli"}, ["xnz"] = {"Kenzi", "Mattoki"}, ["xoc"] = {"O'chi'chi'"}, ["xod"] = {"Kokoda"}, ["xog"] = {"Soga"}, ["xoi"] = {"Kominimung"}, ["xok"] = {"Xokleng"}, ["xom"] = {"Komo (Sudan)"}, ["xon"] = {"Konkomba"}, ["xoo"] = {"Xukurú"}, ["xop"] = {"Kopar"}, ["xor"] = {"Korubo"}, ["xow"] = {"Kowaki"}, ["xpa"] = {"Pirriya"}, ["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"}, ["xpc"] = {"Pecheneg"}, ["xpd"] = {"Oyster Bay Tasmanian"}, ["xpe"] = {"Liberia Kpelle"}, ["xpf"] = {"Southeast Tasmanian", "Nuenonne"}, ["xpg"] = {"Phrygian"}, ["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"}, ["xpi"] = {"Pictish"}, ["xpj"] = {"Mpalitjanh"}, ["xpk"] = {"Kulina Pano"}, ["xpl"] = {"Port Sorell Tasmanian"}, ["xpm"] = {"Pumpokol"}, ["xpn"] = {"Kapinawá"}, ["xpo"] = {"Pochutec"}, ["xpp"] = {"Puyo-Paekche"}, ["xpq"] = {"Mohegan-Pequot"}, ["xpr"] = {"Parthian"}, ["xps"] = {"Pisidian"}, ["xpt"] = {"Punthamara"}, ["xpu"] = {"Punic"}, ["xpv"] = {"Northern Tasmanian", "Tommeginne"}, ["xpw"] = {"Northwestern Tasmanian", "Peerapper"}, ["xpx"] = {"Southwestern Tasmanian", "Toogee"}, ["xpy"] = {"Puyo"}, ["xpz"] = {"Bruny Island Tasmanian"}, ["xqa"] = {"Karakhanid"}, ["xqt"] = {"Qatabanian"}, ["xra"] = {"Krahô"}, ["xrb"] = {"Eastern Karaboro"}, ["xrd"] = {"Gundungurra"}, ["xre"] = {"Kreye"}, ["xrg"] = {"Minang"}, ["xri"] = {"Krikati-Timbira"}, ["xrm"] = {"Armazic"}, ["xrn"] = {"Arin"}, ["xrr"] = {"Raetic"}, ["xrt"] = {"Aranama-Tamique"}, ["xru"] = {"Marriammu"}, ["xrw"] = {"Karawa"}, ["xsa"] = {"Sabaean"}, ["xsb"] = {"Sambal"}, ["xsc"] = {"Scythian"}, ["xsd"] = {"Sidetic"}, ["xse"] = {"Sempan"}, ["xsh"] = {"Shamang"}, ["xsi"] = {"Sio"}, ["xsj"] = {"Subi"}, ["xsl"] = {"South Slavey"}, ["xsm"] = {"Kasem"}, ["xsn"] = {"Sanga (Nigeria)"}, ["xso"] = {"Solano"}, ["xsp"] = {"Silopi"}, ["xsq"] = {"Makhuwa-Saka"}, ["xsr"] = {"Sherpa"}, ["xsu"] = {"Sanumá"}, ["xsv"] = {"Sudovian"}, ["xsy"] = {"Saisiyat"}, ["xta"] = {"Alcozauca Mixtec"}, ["xtb"] = {"Chazumba Mixtec"}, ["xtc"] = {"Katcha-Kadugli-Miri"}, ["xtd"] = {"Diuxi-Tilantongo Mixtec"}, ["xte"] = {"Ketengban"}, ["xtg"] = {"Transalpine Gaulish"}, ["xth"] = {"Yitha Yitha"}, ["xti"] = {"Sinicahua Mixtec"}, ["xtj"] = {"San Juan Teita Mixtec"}, ["xtl"] = {"Tijaltepec Mixtec"}, ["xtm"] = {"Magdalena Peñasco Mixtec"}, ["xtn"] = {"Northern Tlaxiaco Mixtec"}, ["xto"] = {"Tokharian A"}, ["xtp"] = {"San Miguel Piedras Mixtec"}, ["xtq"] = {"Tumshuqese"}, ["xtr"] = {"Early Tripuri"}, ["xts"] = {"Sindihui Mixtec"}, ["xtt"] = {"Tacahua Mixtec"}, ["xtu"] = {"Cuyamecalco Mixtec"}, ["xtv"] = {"Thawa"}, ["xtw"] = {"Tawandê"}, ["xty"] = {"Yoloxochitl Mixtec"}, ["xua"] = {"Alu Kurumba"}, ["xub"] = {"Betta Kurumba"}, ["xud"] = {"Umiida"}, ["xug"] = {"Kunigami"}, ["xuj"] = {"Jennu Kurumba"}, ["xul"] = {"Ngunawal", "Nunukul"}, ["xum"] = {"Umbrian"}, ["xun"] = {"Unggaranggu"}, ["xuo"] = {"Kuo"}, ["xup"] = {"Upper Umpqua"}, ["xur"] = {"Urartian"}, ["xut"] = {"Kuthant"}, ["xuu"] = {"Kxoe", "Khwedam"}, ["xve"] = {"Venetic"}, ["xvi"] = {"Kamviri"}, ["xvn"] = {"Vandalic"}, ["xvo"] = {"Volscian"}, ["xvs"] = {"Vestinian"}, ["xwa"] = {"Kwaza"}, ["xwc"] = {"Woccon"}, ["xwd"] = {"Wadi Wadi"}, ["xwe"] = {"Xwela Gbe"}, ["xwg"] = {"Kwegu"}, ["xwj"] = {"Wajuk"}, ["xwk"] = {"Wangkumara"}, ["xwl"] = {"Western Xwla Gbe"}, ["xwo"] = {"Written Oirat"}, ["xwr"] = {"Kwerba Mamberamo"}, ["xwt"] = {"Wotjobaluk"}, ["xww"] = {"Wemba Wemba"}, ["xxb"] = {"Boro (Ghana)"}, ["xxk"] = {"Ke'o"}, ["xxm"] = {"Minkin"}, ["xxr"] = {"Koropó"}, ["xxt"] = {"Tambora"}, ["xya"] = {"Yaygir"}, ["xyb"] = {"Yandjibara"}, ["xyj"] = {"Mayi-Yapi"}, ["xyk"] = {"Mayi-Kulan"}, ["xyl"] = {"Yalakalore"}, ["xyt"] = {"Mayi-Thakurti"}, ["xyy"] = {"Yorta Yorta"}, ["xzh"] = {"Zhang-Zhung"}, ["xzm"] = {"Zemgalian"}, ["xzp"] = {"Ancient Zapotec"}, ["yaa"] = {"Yaminahua"}, ["yab"] = {"Yuhup"}, ["yac"] = {"Pass Valley Yali"}, ["yad"] = {"Yagua"}, ["yae"] = {"Pumé"}, ["yaf"] = {"Yaka (Democratic Republic of Congo)"}, ["yag"] = {"Yámana"}, ["yah"] = {"Yazgulyam"}, ["yai"] = {"Yagnobi"}, ["yaj"] = {"Banda-Yangere"}, ["yak"] = {"Yakama"}, ["yal"] = {"Yalunka"}, ["yam"] = {"Yamba"}, ["yan"] = {"Mayangna"}, ["yao"] = {"Yao"}, ["yap"] = {"Yapese"}, ["yaq"] = {"Yaqui"}, ["yar"] = {"Yabarana"}, ["yas"] = {"Nugunu (Cameroon)"}, ["yat"] = {"Yambeta"}, ["yau"] = {"Yuwana"}, ["yav"] = {"Yangben"}, ["yaw"] = {"Yawalapití"}, ["yax"] = {"Yauma"}, ["yay"] = {"Agwagwune"}, ["yaz"] = {"Lokaa"}, ["yba"] = {"Yala"}, ["ybb"] = {"Yemba"}, ["ybe"] = {"West Yugur"}, ["ybh"] = {"Yakha"}, ["ybi"] = {"Yamphu"}, ["ybj"] = {"Hasha"}, ["ybk"] = {"Bokha"}, ["ybl"] = {"Yukuben"}, ["ybm"] = {"Yaben"}, ["ybn"] = {"Yabaâna"}, ["ybo"] = {"Yabong"}, ["ybx"] = {"Yawiyo"}, ["yby"] = {"Yaweyuha"}, ["ych"] = {"Chesu"}, ["ycl"] = {"Lolopo"}, ["ycn"] = {"Yucuna"}, ["ycp"] = {"Chepya"}, ["ycr"] = {"Yilan Creole"}, ["yda"] = {"Yanda"}, ["ydd"] = {"Eastern Yiddish"}, ["yde"] = {"Yangum Dey"}, ["ydg"] = {"Yidgha"}, ["ydk"] = {"Yoidik"}, ["yea"] = {"Ravula"}, ["yec"] = {"Yeniche"}, ["yee"] = {"Yimas"}, ["yei"] = {"Yeni"}, ["yej"] = {"Yevanic"}, ["yel"] = {"Yela"}, ["yer"] = {"Tarok"}, ["yes"] = {"Nyankpa"}, ["yet"] = {"Yetfa"}, ["yeu"] = {"Yerukula"}, ["yev"] = {"Yapunda"}, ["yey"] = {"Yeyi"}, ["yga"] = {"Malyangapa"}, ["ygi"] = {"Yiningayi"}, ["ygl"] = {"Yangum Gel"}, ["ygm"] = {"Yagomi"}, ["ygp"] = {"Gepo"}, ["ygr"] = {"Yagaria"}, ["ygs"] = {"Yolŋu Sign Language"}, ["ygu"] = {"Yugul"}, ["ygw"] = {"Yagwoia"}, ["yha"] = {"Baha Buyang"}, ["yhd"] = {"Judeo-Iraqi Arabic"}, ["yhl"] = {"Hlepho Phowa"}, ["yhs"] = {"Yan-nhaŋu Sign Language"}, ["yia"] = {"Yinggarda"}, ["yif"] = {"Ache"}, ["yig"] = {"Wusa Nasu"}, ["yih"] = {"Western Yiddish"}, ["yii"] = {"Yidiny"}, ["yij"] = {"Yindjibarndi"}, ["yik"] = {"Dongshanba Lalo"}, ["yil"] = {"Yindjilandji"}, ["yim"] = {"Yimchungru Naga"}, ["yin"] = {"Riang Lai", "Yinchia"}, ["yip"] = {"Pholo"}, ["yiq"] = {"Miqie"}, ["yir"] = {"North Awyu"}, ["yis"] = {"Yis"}, ["yit"] = {"Eastern Lalu"}, ["yiu"] = {"Awu"}, ["yiv"] = {"Northern Nisu"}, ["yix"] = {"Axi Yi"}, ["yiz"] = {"Azhe"}, ["yka"] = {"Yakan"}, ["ykg"] = {"Northern Yukaghir"}, ["ykh"] = {"Khamnigan Mongol"}, ["yki"] = {"Yoke"}, ["ykk"] = {"Yakaikeke"}, ["ykl"] = {"Khlula"}, ["ykm"] = {"Kap"}, ["ykn"] = {"Kua-nsi"}, ["yko"] = {"Yasa"}, ["ykr"] = {"Yekora"}, ["ykt"] = {"Kathu"}, ["yku"] = {"Kuamasi"}, ["yky"] = {"Yakoma"}, ["yla"] = {"Yaul"}, ["ylb"] = {"Yaleba"}, ["yle"] = {"Yele"}, ["ylg"] = {"Yelogu"}, ["yli"] = {"Angguruk Yali"}, ["yll"] = {"Yil"}, ["ylm"] = {"Limi"}, ["yln"] = {"Langnian Buyang"}, ["ylo"] = {"Naluo Yi"}, ["ylr"] = {"Yalarnnga"}, ["ylu"] = {"Aribwaung"}, ["yly"] = {"Nyâlayu", "Nyelâyu"}, ["ymb"] = {"Yambes"}, ["ymc"] = {"Southern Muji"}, ["ymd"] = {"Muda"}, ["yme"] = {"Yameo"}, ["ymg"] = {"Yamongeri"}, ["ymh"] = {"Mili"}, ["ymi"] = {"Moji"}, ["ymk"] = {"Makwe"}, ["yml"] = {"Iamalele"}, ["ymm"] = {"Maay"}, ["ymn"] = {"Yamna", "Sunum"}, ["ymo"] = {"Yangum Mon"}, ["ymp"] = {"Yamap"}, ["ymq"] = {"Qila Muji"}, ["ymr"] = {"Malasar"}, ["yms"] = {"Mysian"}, ["ymx"] = {"Northern Muji"}, ["ymz"] = {"Muzi"}, ["yna"] = {"Aluo"}, ["ynd"] = {"Yandruwandha"}, ["yne"] = {"Lang'e"}, ["yng"] = {"Yango"}, ["ynk"] = {"Naukan Yupik"}, ["ynl"] = {"Yangulam"}, ["ynn"] = {"Yana"}, ["yno"] = {"Yong"}, ["ynq"] = {"Yendang"}, ["yns"] = {"Yansi"}, ["ynu"] = {"Yahuna"}, ["yob"] = {"Yoba"}, ["yog"] = {"Yogad"}, ["yoi"] = {"Yonaguni"}, ["yok"] = {"Yokuts"}, ["yol"] = {"Yola"}, ["yom"] = {"Yombe"}, ["yon"] = {"Yongkom"}, ["yot"] = {"Yotti"}, ["yox"] = {"Yoron"}, ["yoy"] = {"Yoy"}, ["ypa"] = {"Phala"}, ["ypb"] = {"Labo Phowa"}, ["ypg"] = {"Phola"}, ["yph"] = {"Phupha"}, ["ypk"] = {"Yupik languages"}, ["ypm"] = {"Phuma"}, ["ypn"] = {"Ani Phowa"}, ["ypo"] = {"Alo Phola"}, ["ypp"] = {"Phupa"}, ["ypz"] = {"Phuza"}, ["yra"] = {"Yerakai"}, ["yrb"] = {"Yareba"}, ["yre"] = {"Yaouré"}, ["yrk"] = {"Nenets"}, ["yrl"] = {"Nhengatu"}, ["yrm"] = {"Yirrk-Mel"}, ["yrn"] = {"Yerong"}, ["yro"] = {"Yaroamë"}, ["yrs"] = {"Yarsun"}, ["yrw"] = {"Yarawata"}, ["yry"] = {"Yarluyandi"}, ["ysc"] = {"Yassic"}, ["ysd"] = {"Samatao"}, ["ysg"] = {"Sonaga"}, ["ysl"] = {"Yugoslavian Sign Language"}, ["ysm"] = {"Myanmar Sign Language"}, ["ysn"] = {"Sani"}, ["yso"] = {"Nisi (China)"}, ["ysp"] = {"Southern Lolopo"}, ["ysr"] = {"Sirenik Yupik"}, ["yss"] = {"Yessan-Mayo"}, ["ysy"] = {"Sanie"}, ["yta"] = {"Talu"}, ["ytl"] = {"Tanglang"}, ["ytp"] = {"Thopho"}, ["ytw"] = {"Yout Wam"}, ["yty"] = {"Yatay"}, ["yua"] = {"Yucateco", "Yucatec Maya"}, ["yub"] = {"Yugambal"}, ["yuc"] = {"Yuchi"}, ["yud"] = {"Judeo-Tripolitanian Arabic"}, ["yue"] = {"Yue Chinese", "Cantonese"}, ["yuf"] = {"Havasupai-Walapai-Yavapai"}, ["yug"] = {"Yug"}, ["yui"] = {"Yurutí"}, ["yuj"] = {"Karkar-Yuri"}, ["yuk"] = {"Yuki"}, ["yul"] = {"Yulu"}, ["yum"] = {"Quechan"}, ["yun"] = {"Bena (Nigeria)"}, ["yup"] = {"Yukpa"}, ["yuq"] = {"Yuqui"}, ["yur"] = {"Yurok"}, ["yut"] = {"Yopno"}, ["yuw"] = {"Yau (Morobe Province)"}, ["yux"] = {"Southern Yukaghir"}, ["yuy"] = {"East Yugur"}, ["yuz"] = {"Yuracare"}, ["yva"] = {"Yawa"}, ["yvt"] = {"Yavitero"}, ["ywa"] = {"Kalou"}, ["ywg"] = {"Yinhawangka"}, ["ywl"] = {"Western Lalu"}, ["ywn"] = {"Yawanawa"}, ["ywq"] = {"Wuding-Luquan Yi"}, ["ywr"] = {"Yawuru"}, ["ywt"] = {"Xishanba Lalo", "Central Lalo"}, ["ywu"] = {"Wumeng Nasu"}, ["yww"] = {"Yawarawarga"}, ["yxa"] = {"Mayawali"}, ["yxg"] = {"Yagara"}, ["yxl"] = {"Yardliyawarra"}, ["yxm"] = {"Yinwum"}, ["yxu"] = {"Yuyu"}, ["yxy"] = {"Yabula Yabula"}, ["yyr"] = {"Yir Yoront"}, ["yyu"] = {"Yau (Sandaun Province)"}, ["yyz"] = {"Ayizi"}, ["yzg"] = {"E'ma Buyang"}, ["yzk"] = {"Zokhuo"}, ["zaa"] = {"Sierra de Juárez Zapotec"}, ["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"}, ["zac"] = {"Ocotlán Zapotec"}, ["zad"] = {"Cajonos Zapotec"}, ["zae"] = {"Yareni Zapotec"}, ["zaf"] = {"Ayoquesco Zapotec"}, ["zag"] = {"Zaghawa"}, ["zah"] = {"Zangwal"}, ["zai"] = {"Isthmus Zapotec"}, ["zaj"] = {"Zaramo"}, ["zak"] = {"Zanaki"}, ["zal"] = {"Zauzou"}, ["zam"] = {"Miahuatlán Zapotec"}, ["zao"] = {"Ozolotepec Zapotec"}, ["zap"] = {"Zapotec"}, ["zaq"] = {"Aloápam Zapotec"}, ["zar"] = {"Rincón Zapotec"}, ["zas"] = {"Santo Domingo Albarradas Zapotec"}, ["zat"] = {"Tabaa Zapotec"}, ["zau"] = {"Zangskari"}, ["zav"] = {"Yatzachi Zapotec"}, ["zaw"] = {"Mitla Zapotec"}, ["zax"] = {"Xadani Zapotec"}, ["zay"] = {"Zayse-Zergulla", "Zaysete"}, ["zaz"] = {"Zari"}, ["zba"] = {"Balaibalan"}, ["zbc"] = {"Central Berawan"}, ["zbe"] = {"East Berawan"}, ["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"}, ["zbt"] = {"Batui"}, ["zbu"] = {"Bu (Bauchi State)"}, ["zbw"] = {"West Berawan"}, ["zca"] = {"Coatecas Altas Zapotec"}, ["zcd"] = {"Las Delicias Zapotec"}, ["zch"] = {"Central Hongshuihe Zhuang"}, ["zdj"] = {"Ngazidja Comorian"}, ["zea"] = {"Zeeuws"}, ["zeg"] = {"Zenag"}, ["zeh"] = {"Eastern Hongshuihe Zhuang"}, ["zem"] = {"Zeem"}, ["zen"] = {"Zenaga"}, ["zga"] = {"Kinga"}, ["zgb"] = {"Guibei Zhuang"}, ["zgh"] = {"Standard Moroccan Tamazight"}, ["zgm"] = {"Minz Zhuang"}, ["zgn"] = {"Guibian Zhuang"}, ["zgr"] = {"Magori"}, ["zhb"] = {"Zhaba"}, ["zhd"] = {"Dai Zhuang"}, ["zhi"] = {"Zhire"}, ["zhn"] = {"Nong Zhuang"}, ["zhw"] = {"Zhoa"}, ["zhx"] = {"Chinese (family)"}, ["zia"] = {"Zia"}, ["zib"] = {"Zimbabwe Sign Language"}, ["zik"] = {"Zimakani"}, ["zil"] = {"Zialo"}, ["zim"] = {"Mesme"}, ["zin"] = {"Zinza"}, ["ziw"] = {"Zigula"}, ["ziz"] = {"Zizilivakan"}, ["zka"] = {"Kaimbulawa"}, ["zkd"] = {"Kadu"}, ["zkg"] = {"Koguryo"}, ["zkh"] = {"Khorezmian"}, ["zkk"] = {"Karankawa"}, ["zkn"] = {"Kanan"}, ["zko"] = {"Kott"}, ["zkp"] = {"São Paulo Kaingáng"}, ["zkr"] = {"Zakhring"}, ["zkt"] = {"Kitan"}, ["zku"] = {"Kaurna"}, ["zkv"] = {"Krevinian"}, ["zkz"] = {"Khazar"}, ["zla"] = {"Zula"}, ["zle"] = {"East Slavic languages"}, ["zlj"] = {"Liujiang Zhuang"}, ["zlm"] = {"Malay (individual language)"}, ["zln"] = {"Lianshan Zhuang"}, ["zlq"] = {"Liuqian Zhuang"}, ["zls"] = {"South Slavic languages"}, ["zlu"] = {"Zul"}, ["zlw"] = {"West Slavic languages"}, ["zma"] = {"Manda (Australia)"}, ["zmb"] = {"Zimba"}, ["zmc"] = {"Margany"}, ["zmd"] = {"Maridan"}, ["zme"] = {"Mangerr"}, ["zmf"] = {"Mfinu"}, ["zmg"] = {"Marti Ke"}, ["zmh"] = {"Makolkol"}, ["zmi"] = {"Negeri Sembilan Malay"}, ["zmj"] = {"Maridjabin"}, ["zmk"] = {"Mandandanyi"}, ["zml"] = {"Matngala"}, ["zmm"] = {"Marimanindji", "Marramaninyshi"}, ["zmn"] = {"Mbangwe"}, ["zmo"] = {"Molo"}, ["zmp"] = {"Mpuono"}, ["zmq"] = {"Mituku"}, ["zmr"] = {"Maranunggu"}, ["zms"] = {"Mbesa"}, ["zmt"] = {"Maringarr"}, ["zmu"] = {"Muruwari"}, ["zmv"] = {"Mbariman-Gudhinma"}, ["zmw"] = {"Mbo (Democratic Republic of Congo)"}, ["zmx"] = {"Bomitaba"}, ["zmy"] = {"Mariyedi"}, ["zmz"] = {"Mbandja"}, ["zna"] = {"Zan Gula"}, ["znd"] = {"Zande languages"}, ["zne"] = {"Zande (individual language)"}, ["zng"] = {"Mang"}, ["znk"] = {"Manangkari"}, ["zns"] = {"Mangas"}, ["zoc"] = {"Copainalá Zoque"}, ["zoh"] = {"Chimalapa Zoque"}, ["zom"] = {"Zou"}, ["zoo"] = {"Asunción Mixtepec Zapotec"}, ["zoq"] = {"Tabasco Zoque"}, ["zor"] = {"Rayón Zoque"}, ["zos"] = {"Francisco León Zoque"}, ["zpa"] = {"Lachiguiri Zapotec"}, ["zpb"] = {"Yautepec Zapotec"}, ["zpc"] = {"Choapan Zapotec"}, ["zpd"] = {"Southeastern Ixtlán Zapotec"}, ["zpe"] = {"Petapa Zapotec"}, ["zpf"] = {"San Pedro Quiatoni Zapotec"}, ["zpg"] = {"Guevea De Humboldt Zapotec"}, ["zph"] = {"Totomachapan Zapotec"}, ["zpi"] = {"Santa María Quiegolani Zapotec"}, ["zpj"] = {"Quiavicuzas Zapotec"}, ["zpk"] = {"Tlacolulita Zapotec"}, ["zpl"] = {"Lachixío Zapotec"}, ["zpm"] = {"Mixtepec Zapotec"}, ["zpn"] = {"Santa Inés Yatzechi Zapotec"}, ["zpo"] = {"Amatlán Zapotec"}, ["zpp"] = {"El Alto Zapotec"}, ["zpq"] = {"Zoogocho Zapotec"}, ["zpr"] = {"Santiago Xanica Zapotec"}, ["zps"] = {"Coatlán Zapotec"}, ["zpt"] = {"San Vicente Coatlán Zapotec"}, ["zpu"] = {"Yalálag Zapotec"}, ["zpv"] = {"Chichicapan Zapotec"}, ["zpw"] = {"Zaniza Zapotec"}, ["zpx"] = {"San Baltazar Loxicha Zapotec"}, ["zpy"] = {"Mazaltepec Zapotec"}, ["zpz"] = {"Texmelucan Zapotec"}, ["zqe"] = {"Qiubei Zhuang"}, ["zra"] = {"Kara (Korea)"}, ["zrg"] = {"Mirgan"}, ["zrn"] = {"Zerenkel"}, ["zro"] = {"Záparo"}, ["zrp"] = {"Zarphatic"}, ["zrs"] = {"Mairasi"}, ["zsa"] = {"Sarasira"}, ["zsk"] = {"Kaskean"}, ["zsl"] = {"Zambian Sign Language"}, ["zsm"] = {"Standard Malay"}, ["zsr"] = {"Southern Rincon Zapotec"}, ["zsu"] = {"Sukurum"}, ["zte"] = {"Elotepec Zapotec"}, ["ztg"] = {"Xanaguía Zapotec"}, ["ztl"] = {"Lapaguía-Guivini Zapotec"}, ["ztm"] = {"San Agustín Mixtepec Zapotec"}, ["ztn"] = {"Santa Catarina Albarradas Zapotec"}, ["ztp"] = {"Loxicha Zapotec"}, ["ztq"] = {"Quioquitani-Quierí Zapotec"}, ["zts"] = {"Tilquiapan Zapotec"}, ["ztt"] = {"Tejalapan Zapotec"}, ["ztu"] = {"Güilá Zapotec"}, ["ztx"] = {"Zaachila Zapotec"}, ["zty"] = {"Yatee Zapotec"}, ["zuh"] = {"Tokano"}, ["zum"] = {"Kumzari"}, ["zun"] = {"Zuni"}, ["zuy"] = {"Zumaya"}, ["zwa"] = {"Zay"}, ["zxx"] = {"No linguistic content", "Not applicable"}, ["zyb"] = {"Yongbei Zhuang"}, ["zyg"] = {"Yang Zhuang"}, ["zyj"] = {"Youjiang Zhuang"}, ["zyn"] = {"Yongnan Zhuang"}, ["zyp"] = {"Zyphe Chin"}, ["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"}, ["zzj"] = {"Zuojiang Zhuang"} } local deprecated = { ["in"] = {"Indonesian"}, ["iw"] = {"Hebrew"}, ["ji"] = {"Yiddish"}, ["jw"] = {"Javanese"}, ["mo"] = {"Moldavian", "Moldovan"}, ["aam"] = {"Aramanik"}, ["adp"] = {"Adap"}, ["agp"] = {"Paranan"}, ["ais"] = {"Nataoran Amis"}, ["ajp"] = {"South Levantine Arabic"}, ["ajt"] = {"Judeo-Tunisian Arabic"}, ["aoh"] = {"Arma"}, ["asd"] = {"Asas"}, ["aue"] = {"ǂKxʼauǁʼein"}, ["ayx"] = {"Ayi (China)"}, ["ayy"] = {"Tayabas Ayta"}, ["baz"] = {"Tunen"}, ["bbz"] = {"Babalia Creole Arabic"}, ["bgm"] = {"Baga Mboteni"}, ["bhk"] = {"Albay Bicolano"}, ["bic"] = {"Bikaru"}, ["bij"] = {"Vaghat-Ya-Bijim-Legeri"}, ["bjd"] = {"Bandjigali"}, ["bjq"] = {"Southern Betsimisaraka Malagasy"}, ["bkb"] = {"Finallig"}, ["blg"] = {"Balau"}, ["bmy"] = {"Bemba (Democratic Republic of Congo)"}, ["bpb"] = {"Barbacoas"}, ["btb"] = {"Beti (Cameroon)"}, ["btl"] = {"Bhatola"}, ["bxx"] = {"Borna (Democratic Republic of Congo)"}, ["byy"] = {"Buya"}, ["cbe"] = {"Chipiajes"}, ["cbh"] = {"Cagua"}, ["cca"] = {"Cauca"}, ["ccq"] = {"Chaungtha"}, ["cdg"] = {"Chamari"}, ["cjr"] = {"Chorotega"}, ["cka"] = {"Khumi Awa Chin"}, ["cmk"] = {"Chimakum"}, ["coy"] = {"Coyaima"}, ["cqu"] = {"Chilean Quechua"}, ["cug"] = {"Chungmboko", "Cung"}, ["cum"] = {"Cumeral"}, ["daf"] = {"Dan"}, ["dap"] = {"Nisi (India)"}, ["dgu"] = {"Degaru"}, ["dha"] = {"Dhanwar (India)"}, ["dit"] = {"Dirari"}, ["djl"] = {"Djiwarli"}, ["dkl"] = {"Kolum So Dogon"}, ["drh"] = {"Darkhat"}, ["drr"] = {"Dororo"}, ["drw"] = {"Darwazi"}, ["dud"] = {"Hun-Saare"}, ["duj"] = {"Dhuwal"}, ["dwl"] = {"Walo Kumbe Dogon"}, ["ekc"] = {"Eastern Karnic"}, ["elp"] = {"Elpaputih"}, ["emo"] = {"Emok"}, ["gav"] = {"Gabutamon"}, ["gbc"] = {"Garawa"}, ["gfx"] = {"Mangetti Dune ǃXung"}, ["ggn"] = {"Eastern Gurung"}, ["ggo"] = {"Southern Gondi"}, ["ggr"] = {"Aghu Tharnggalu"}, ["gio"] = {"Gelao"}, ["gji"] = {"Geji"}, ["gli"] = {"Guliguli"}, ["gti"] = {"Gbati-ri"}, ["guv"] = {"Gey"}, ["hrr"] = {"Horuru"}, ["iap"] = {"Iapama"}, ["ibi"] = {"Ibilo"}, ["ill"] = {"Iranun"}, ["ilw"] = {"Talur"}, ["ime"] = {"Imeraguen"}, ["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"}, ["jar"] = {"Jarawa (Nigeria)"}, ["jeg"] = {"Jeng"}, ["kbf"] = {"Kakauhua"}, ["kdv"] = {"Kado"}, ["kgc"] = {"Kasseng"}, ["kgd"] = {"Kataang"}, ["kgh"] = {"Upper Tanudan Kalinga"}, ["kgm"] = {"Karipúna"}, ["kjf"] = {"Khalaj [Indo-Iranian]"}, ["koj"] = {"Sara Dunjo"}, ["kox"] = {"Coxima"}, ["kpp"] = {"Paku Karen"}, ["krm"] = {"Krim"}, ["ksa"] = {"Shuwa-Zamani"}, ["ktr"] = {"Kota Marudu Tinagas"}, ["kvs"] = {"Kunggara"}, ["kwq"] = {"Kwak"}, ["kxe"] = {"Kakihum"}, ["kxl"] = {"Nepali Kurux"}, ["kxu"] = {"Kui (India)"}, ["kzh"] = {"Kenuzi-Dongola"}, ["kzj"] = {"Coastal Kadazan"}, ["kzt"] = {"Tambunan Dusun"}, ["lak"] = {"Laka (Nigeria)"}, ["lba"] = {"Lui"}, ["leg"] = {"Lengua"}, ["lii"] = {"Lingkhim"}, ["llo"] = {"Khlor"}, ["lmm"] = {"Lamam"}, ["lmz"] = {"Lumbee"}, ["lno"] = {"Lango (South Sudan)"}, ["lsg"] = {"Lyons Sign Language"}, ["meg"] = {"Mea"}, ["mgx"] = {"Omati"}, ["mhh"] = {"Maskoy Pidgin"}, ["mja"] = {"Mahei"}, ["mld"] = {"Malakhel"}, ["mnt"] = {"Maykulan"}, ["mof"] = {"Mohegan-Montauk-Narragansett"}, ["mst"] = {"Cataelano Mandaya"}, ["mvm"] = {"Muya"}, ["mwd"] = {"Mudbura"}, ["mwj"] = {"Maligo"}, ["mwx"] = {"Mediak"}, ["mwy"] = {"Mosiro"}, ["myd"] = {"Maramba"}, ["myi"] = {"Mina (India)"}, ["myq"] = {"Forest Maninka"}, ["myt"] = {"Sangab Mandaya"}, ["nad"] = {"Nijadali"}, ["nbf"] = {"Naxi"}, ["nbx"] = {"Ngura"}, ["ncp"] = {"Ndaktup"}, ["ngo"] = {"Ngoni"}, ["nln"] = {"Durango Nahuatl"}, ["nlr"] = {"Ngarla"}, ["nns"] = {"Ningye"}, ["nnx"] = {"Ngong"}, ["nom"] = {"Nocamán"}, ["noo"] = {"Nootka"}, ["nts"] = {"Natagaimas"}, ["nxu"] = {"Narau"}, ["ome"] = {"Omejes"}, ["oun"] = {"ǃOǃung"}, ["pat"] = {"Papitalai"}, ["pbz"] = {"Palu"}, ["pcr"] = {"Panang"}, ["pgy"] = {"Pongyong"}, ["pii"] = {"Pini"}, ["plj"] = {"Polci"}, ["plp"] = {"Palpa"}, ["pmc"] = {"Palumata"}, ["pmk"] = {"Pamlico"}, ["pmu"] = {"Mirpur Panjabi"}, ["pod"] = {"Ponares"}, ["ppa"] = {"Pao"}, ["ppr"] = {"Piru"}, ["prb"] = {"Lua'"}, ["prp"] = {"Parsi"}, ["pry"] = {"Pray 3"}, ["puk"] = {"Pu Ko"}, ["puz"] = {"Purum Naga"}, ["rie"] = {"Rien"}, ["rmr"] = {"Caló"}, ["rna"] = {"Runa"}, ["rsi"] = {"Rennellese Sign Language"}, ["sap"] = {"Sanapaná"}, ["sca"] = {"Sansu"}, ["sdm"] = {"Semandang"}, ["sgl"] = {"Sanglechi-Ishkashimi"}, ["sgo"] = {"Songa"}, ["skk"] = {"Sok"}, ["slq"] = {"Salchuq"}, ["smd"] = {"Sama"}, ["snb"] = {"Sebuyau"}, ["snh"] = {"Shinabo"}, ["sul"] = {"Surigaonon"}, ["sum"] = {"Sumo-Mayangna"}, ["svr"] = {"Savara"}, ["szd"] = {"Seru"}, ["tbb"] = {"Tapeba"}, ["tdu"] = {"Tempasuk Dusun"}, ["tgg"] = {"Tangga"}, ["thc"] = {"Tai Hang Tong"}, ["thw"] = {"Thudam"}, ["thx"] = {"The"}, ["tid"] = {"Tidong"}, ["tie"] = {"Tingal"}, ["tkk"] = {"Takpa"}, ["tlw"] = {"South Wemale"}, ["tmk"] = {"Northwestern Tamang"}, ["tmp"] = {"Tai Mène"}, ["tne"] = {"Tinoc Kallahan"}, ["tnf"] = {"Tangshewi"}, ["toe"] = {"Tomedes"}, ["tpw"] = {"Tupí"}, ["tsf"] = {"Southwestern Tamang"}, ["unp"] = {"Worora"}, ["uok"] = {"Uokha"}, ["uun"] = {"Kulon-Pazeh"}, ["vki"] = {"Ija-Zuba"}, ["wgw"] = {"Wagawaga"}, ["wit"] = {"Wintu"}, ["wiw"] = {"Wirangu"}, ["wra"] = {"Warapu"}, ["wrd"] = {"Warduji"}, ["wya"] = {"Wyandot"}, ["xba"] = {"Kamba (Brazil)"}, ["xbx"] = {"Kabixí"}, ["xia"] = {"Xiandao"}, ["xip"] = {"Xipináwa"}, ["xkh"] = {"Karahawyana"}, ["xrq"] = {"Karranga"}, ["xss"] = {"Assan"}, ["xtz"] = {"Tasmanian"}, ["ybd"] = {"Yangbye"}, ["yds"] = {"Yiddish Sign Language"}, ["yen"] = {"Yendang"}, ["yiy"] = {"Yir Yoront"}, ["yma"] = {"Yamphe"}, ["ymt"] = {"Mator-Taygi-Karagas"}, ["ynh"] = {"Yangho"}, ["yos"] = {"Yos"}, ["yri"] = {"Yarí"}, ["yuu"] = {"Yugh"}, ["zir"] = {"Ziriya"}, ["zkb"] = {"Koibal"}, ["zua"] = {"Zeem"} } return { active = active, deprecated = deprecated, } 7e8fcbc627dace0b48345e47103fa5243cc7add3 Module:Language/data/iana scripts 828 470 3136 3135 2023-11-09T20:07:32Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/data/iana_scripts]] Scribunto text/plain -- File-Date: 2023-10-16 return { ["Adlm"] = {"Adlam"}, ["Afak"] = {"Afaka"}, ["Aghb"] = {"Caucasian Albanian"}, ["Ahom"] = {"Ahom", "Tai Ahom"}, ["Arab"] = {"Arabic"}, ["Aran"] = {"Arabic (Nastaliq variant)"}, ["Armi"] = {"Imperial Aramaic"}, ["Armn"] = {"Armenian"}, ["Avst"] = {"Avestan"}, ["Bali"] = {"Balinese"}, ["Bamu"] = {"Bamum"}, ["Bass"] = {"Bassa Vah"}, ["Batk"] = {"Batak"}, ["Beng"] = {"Bengali", "Bangla"}, ["Bhks"] = {"Bhaiksuki"}, ["Blis"] = {"Blissymbols"}, ["Bopo"] = {"Bopomofo"}, ["Brah"] = {"Brahmi"}, ["Brai"] = {"Braille"}, ["Bugi"] = {"Buginese"}, ["Buhd"] = {"Buhid"}, ["Cakm"] = {"Chakma"}, ["Cans"] = {"Unified Canadian Aboriginal Syllabics"}, ["Cari"] = {"Carian"}, ["Cham"] = {"Cham"}, ["Cher"] = {"Cherokee"}, ["Chis"] = {"Chisoi"}, ["Chrs"] = {"Chorasmian"}, ["Cirt"] = {"Cirth"}, ["Copt"] = {"Coptic"}, ["Cpmn"] = {"Cypro-Minoan"}, ["Cprt"] = {"Cypriot syllabary"}, ["Cyrl"] = {"Cyrillic"}, ["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"}, ["Deva"] = {"Devanagari", "Nagari"}, ["Diak"] = {"Dives Akuru"}, ["Dogr"] = {"Dogra"}, ["Dsrt"] = {"Deseret", "Mormon"}, ["Dupl"] = {"Duployan shorthand", "Duployan stenography"}, ["Egyd"] = {"Egyptian demotic"}, ["Egyh"] = {"Egyptian hieratic"}, ["Egyp"] = {"Egyptian hieroglyphs"}, ["Elba"] = {"Elbasan"}, ["Elym"] = {"Elymaic"}, ["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"}, ["Gara"] = {"Garay"}, ["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"}, ["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"}, ["Glag"] = {"Glagolitic"}, ["Gong"] = {"Gunjala Gondi"}, ["Gonm"] = {"Masaram Gondi"}, ["Goth"] = {"Gothic"}, ["Gran"] = {"Grantha"}, ["Grek"] = {"Greek"}, ["Gujr"] = {"Gujarati"}, ["Gukh"] = {"Gurung Khema"}, ["Guru"] = {"Gurmukhi"}, ["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"}, ["Hang"] = {"Hangul", "Hangŭl", "Hangeul"}, ["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"}, ["Hano"] = {"Hanunoo", "Hanunóo"}, ["Hans"] = {"Han (Simplified variant)"}, ["Hant"] = {"Han (Traditional variant)"}, ["Hatr"] = {"Hatran"}, ["Hebr"] = {"Hebrew"}, ["Hira"] = {"Hiragana"}, ["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"}, ["Hmng"] = {"Pahawh Hmong"}, ["Hmnp"] = {"Nyiakeng Puachue Hmong"}, ["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"}, ["Hung"] = {"Old Hungarian", "Hungarian Runic"}, ["Inds"] = {"Indus", "Harappan"}, ["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"}, ["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"}, ["Java"] = {"Javanese"}, ["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"}, ["Jurc"] = {"Jurchen"}, ["Kali"] = {"Kayah Li"}, ["Kana"] = {"Katakana"}, ["Kawi"] = {"Kawi"}, ["Khar"] = {"Kharoshthi"}, ["Khmr"] = {"Khmer"}, ["Khoj"] = {"Khojki"}, ["Kitl"] = {"Khitan large script"}, ["Kits"] = {"Khitan small script"}, ["Knda"] = {"Kannada"}, ["Kore"] = {"Korean (alias for Hangul + Han)"}, ["Kpel"] = {"Kpelle"}, ["Krai"] = {"Kirat Rai"}, ["Kthi"] = {"Kaithi"}, ["Lana"] = {"Tai Tham", "Lanna"}, ["Laoo"] = {"Lao"}, ["Latf"] = {"Latin (Fraktur variant)"}, ["Latg"] = {"Latin (Gaelic variant)"}, ["Latn"] = {"Latin"}, ["Leke"] = {"Leke"}, ["Lepc"] = {"Lepcha", "Róng"}, ["Limb"] = {"Limbu"}, ["Lina"] = {"Linear A"}, ["Linb"] = {"Linear B"}, ["Lisu"] = {"Lisu", "Fraser"}, ["Loma"] = {"Loma"}, ["Lyci"] = {"Lycian"}, ["Lydi"] = {"Lydian"}, ["Mahj"] = {"Mahajani"}, ["Maka"] = {"Makasar"}, ["Mand"] = {"Mandaic", "Mandaean"}, ["Mani"] = {"Manichaean"}, ["Marc"] = {"Marchen"}, ["Maya"] = {"Mayan hieroglyphs"}, ["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"}, ["Mend"] = {"Mende Kikakui"}, ["Merc"] = {"Meroitic Cursive"}, ["Mero"] = {"Meroitic Hieroglyphs"}, ["Mlym"] = {"Malayalam"}, ["Modi"] = {"Modi", "Moḍī"}, ["Mong"] = {"Mongolian"}, ["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"}, ["Mroo"] = {"Mro", "Mru"}, ["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"}, ["Mult"] = {"Multani"}, ["Mymr"] = {"Myanmar", "Burmese"}, ["Nagm"] = {"Nag Mundari"}, ["Nand"] = {"Nandinagari"}, ["Narb"] = {"Old North Arabian", "Ancient North Arabian"}, ["Nbat"] = {"Nabataean"}, ["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"}, ["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"}, ["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"}, ["Nkoo"] = {"N’Ko", "N'Ko"}, ["Nshu"] = {"Nüshu"}, ["Ogam"] = {"Ogham"}, ["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"}, ["Onao"] = {"Ol Onal"}, ["Orkh"] = {"Old Turkic", "Orkhon Runic"}, ["Orya"] = {"Oriya", "Odia"}, ["Osge"] = {"Osage"}, ["Osma"] = {"Osmanya"}, ["Ougr"] = {"Old Uyghur"}, ["Palm"] = {"Palmyrene"}, ["Pauc"] = {"Pau Cin Hau"}, ["Pcun"] = {"Proto-Cuneiform"}, ["Pelm"] = {"Proto-Elamite"}, ["Perm"] = {"Old Permic"}, ["Phag"] = {"Phags-pa"}, ["Phli"] = {"Inscriptional Pahlavi"}, ["Phlp"] = {"Psalter Pahlavi"}, ["Phlv"] = {"Book Pahlavi"}, ["Phnx"] = {"Phoenician"}, ["Piqd"] = {"Klingon (KLI pIqaD)"}, ["Plrd"] = {"Miao", "Pollard"}, ["Prti"] = {"Inscriptional Parthian"}, ["Psin"] = {"Proto-Sinaitic"}, ["Ranj"] = {"Ranjana"}, ["Rjng"] = {"Rejang", "Redjang", "Kaganga"}, ["Rohg"] = {"Hanifi Rohingya"}, ["Roro"] = {"Rongorongo"}, ["Runr"] = {"Runic"}, ["Samr"] = {"Samaritan"}, ["Sara"] = {"Sarati"}, ["Sarb"] = {"Old South Arabian"}, ["Saur"] = {"Saurashtra"}, ["Sgnw"] = {"SignWriting"}, ["Shaw"] = {"Shavian", "Shaw"}, ["Shrd"] = {"Sharada", "Śāradā"}, ["Shui"] = {"Shuishu"}, ["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"}, ["Sidt"] = {"Sidetic"}, ["Sind"] = {"Khudawadi", "Sindhi"}, ["Sinh"] = {"Sinhala"}, ["Sogd"] = {"Sogdian"}, ["Sogo"] = {"Old Sogdian"}, ["Sora"] = {"Sora Sompeng"}, ["Soyo"] = {"Soyombo"}, ["Sund"] = {"Sundanese"}, ["Sunu"] = {"Sunuwar"}, ["Sylo"] = {"Syloti Nagri"}, ["Syrc"] = {"Syriac"}, ["Syre"] = {"Syriac (Estrangelo variant)"}, ["Syrj"] = {"Syriac (Western variant)"}, ["Syrn"] = {"Syriac (Eastern variant)"}, ["Tagb"] = {"Tagbanwa"}, ["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"}, ["Tale"] = {"Tai Le"}, ["Talu"] = {"New Tai Lue"}, ["Taml"] = {"Tamil"}, ["Tang"] = {"Tangut"}, ["Tavt"] = {"Tai Viet"}, ["Tayo"] = {"Tai Yo"}, ["Telu"] = {"Telugu"}, ["Teng"] = {"Tengwar"}, ["Tfng"] = {"Tifinagh", "Berber"}, ["Tglg"] = {"Tagalog", "Baybayin", "Alibata"}, ["Thaa"] = {"Thaana"}, ["Thai"] = {"Thai"}, ["Tibt"] = {"Tibetan"}, ["Tirh"] = {"Tirhuta"}, ["Tnsa"] = {"Tangsa"}, ["Todr"] = {"Todhri"}, ["Tols"] = {"Tolong Siki"}, ["Toto"] = {"Toto"}, ["Tutg"] = {"Tulu-Tigalari"}, ["Ugar"] = {"Ugaritic"}, ["Vaii"] = {"Vai"}, ["Visp"] = {"Visible Speech"}, ["Vith"] = {"Vithkuqi"}, ["Wara"] = {"Warang Citi", "Varang Kshiti"}, ["Wcho"] = {"Wancho"}, ["Wole"] = {"Woleai"}, ["Xpeo"] = {"Old Persian"}, ["Xsux"] = {"Sumero-Akkadian cuneiform"}, ["Yezi"] = {"Yezidi"}, ["Yiii"] = {"Yi"}, ["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"}, ["Zinh"] = {"Code for inherited script"}, ["Zmth"] = {"Mathematical notation"}, ["Zsye"] = {"Symbols (Emoji variant)"}, ["Zsym"] = {"Symbols"}, ["Zxxx"] = {"Code for unwritten documents"}, ["Zyyy"] = {"Code for undetermined script"}, ["Zzzz"] = {"Code for uncoded script"} } 90e7ff616b305955e94fca8cce479cc69e5277c4 Module:Language/data/iana regions 828 472 3138 3137 2023-11-09T20:07:33Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/data/iana_regions]] Scribunto text/plain -- File-Date: 2023-10-16 return { ["AC"] = {"Ascension Island"}, ["AD"] = {"Andorra"}, ["AE"] = {"United Arab Emirates"}, ["AF"] = {"Afghanistan"}, ["AG"] = {"Antigua and Barbuda"}, ["AI"] = {"Anguilla"}, ["AL"] = {"Albania"}, ["AM"] = {"Armenia"}, ["AO"] = {"Angola"}, ["AQ"] = {"Antarctica"}, ["AR"] = {"Argentina"}, ["AS"] = {"American Samoa"}, ["AT"] = {"Austria"}, ["AU"] = {"Australia"}, ["AW"] = {"Aruba"}, ["AX"] = {"Åland Islands"}, ["AZ"] = {"Azerbaijan"}, ["BA"] = {"Bosnia and Herzegovina"}, ["BB"] = {"Barbados"}, ["BD"] = {"Bangladesh"}, ["BE"] = {"Belgium"}, ["BF"] = {"Burkina Faso"}, ["BG"] = {"Bulgaria"}, ["BH"] = {"Bahrain"}, ["BI"] = {"Burundi"}, ["BJ"] = {"Benin"}, ["BL"] = {"Saint Barthélemy"}, ["BM"] = {"Bermuda"}, ["BN"] = {"Brunei Darussalam"}, ["BO"] = {"Bolivia"}, ["BQ"] = {"Bonaire, Sint Eustatius and Saba"}, ["BR"] = {"Brazil"}, ["BS"] = {"Bahamas"}, ["BT"] = {"Bhutan"}, ["BV"] = {"Bouvet Island"}, ["BW"] = {"Botswana"}, ["BY"] = {"Belarus"}, ["BZ"] = {"Belize"}, ["CA"] = {"Canada"}, ["CC"] = {"Cocos (Keeling) Islands"}, ["CD"] = {"The Democratic Republic of the Congo"}, ["CF"] = {"Central African Republic"}, ["CG"] = {"Congo"}, ["CH"] = {"Switzerland"}, ["CI"] = {"Côte d'Ivoire"}, ["CK"] = {"Cook Islands"}, ["CL"] = {"Chile"}, ["CM"] = {"Cameroon"}, ["CN"] = {"China"}, ["CO"] = {"Colombia"}, ["CP"] = {"Clipperton Island"}, ["CQ"] = {"Sark"}, ["CR"] = {"Costa Rica"}, ["CU"] = {"Cuba"}, ["CV"] = {"Cabo Verde", "Cape Verde"}, ["CW"] = {"Curaçao"}, ["CX"] = {"Christmas Island"}, ["CY"] = {"Cyprus"}, ["CZ"] = {"Czechia", "Czech Republic"}, ["DE"] = {"Germany"}, ["DG"] = {"Diego Garcia"}, ["DJ"] = {"Djibouti"}, ["DK"] = {"Denmark"}, ["DM"] = {"Dominica"}, ["DO"] = {"Dominican Republic"}, ["DZ"] = {"Algeria"}, ["EA"] = {"Ceuta, Melilla"}, ["EC"] = {"Ecuador"}, ["EE"] = {"Estonia"}, ["EG"] = {"Egypt"}, ["EH"] = {"Western Sahara"}, ["ER"] = {"Eritrea"}, ["ES"] = {"Spain"}, ["ET"] = {"Ethiopia"}, ["EU"] = {"European Union"}, ["EZ"] = {"Eurozone"}, ["FI"] = {"Finland"}, ["FJ"] = {"Fiji"}, ["FK"] = {"Falkland Islands (Malvinas)"}, ["FM"] = {"Federated States of Micronesia"}, ["FO"] = {"Faroe Islands"}, ["FR"] = {"France"}, ["GA"] = {"Gabon"}, ["GB"] = {"United Kingdom"}, ["GD"] = {"Grenada"}, ["GE"] = {"Georgia"}, ["GF"] = {"French Guiana"}, ["GG"] = {"Guernsey"}, ["GH"] = {"Ghana"}, ["GI"] = {"Gibraltar"}, ["GL"] = {"Greenland"}, ["GM"] = {"Gambia"}, ["GN"] = {"Guinea"}, ["GP"] = {"Guadeloupe"}, ["GQ"] = {"Equatorial Guinea"}, ["GR"] = {"Greece"}, ["GS"] = {"South Georgia and the South Sandwich Islands"}, ["GT"] = {"Guatemala"}, ["GU"] = {"Guam"}, ["GW"] = {"Guinea-Bissau"}, ["GY"] = {"Guyana"}, ["HK"] = {"Hong Kong"}, ["HM"] = {"Heard Island and McDonald Islands"}, ["HN"] = {"Honduras"}, ["HR"] = {"Croatia"}, ["HT"] = {"Haiti"}, ["HU"] = {"Hungary"}, ["IC"] = {"Canary Islands"}, ["ID"] = {"Indonesia"}, ["IE"] = {"Ireland"}, ["IL"] = {"Israel"}, ["IM"] = {"Isle of Man"}, ["IN"] = {"India"}, ["IO"] = {"British Indian Ocean Territory"}, ["IQ"] = {"Iraq"}, ["IR"] = {"Islamic Republic of Iran"}, ["IS"] = {"Iceland"}, ["IT"] = {"Italy"}, ["JE"] = {"Jersey"}, ["JM"] = {"Jamaica"}, ["JO"] = {"Jordan"}, ["JP"] = {"Japan"}, ["KE"] = {"Kenya"}, ["KG"] = {"Kyrgyzstan"}, ["KH"] = {"Cambodia"}, ["KI"] = {"Kiribati"}, ["KM"] = {"Comoros"}, ["KN"] = {"Saint Kitts and Nevis"}, ["KP"] = {"Democratic People's Republic of Korea"}, ["KR"] = {"Republic of Korea"}, ["KW"] = {"Kuwait"}, ["KY"] = {"Cayman Islands"}, ["KZ"] = {"Kazakhstan"}, ["LA"] = {"Lao People's Democratic Republic"}, ["LB"] = {"Lebanon"}, ["LC"] = {"Saint Lucia"}, ["LI"] = {"Liechtenstein"}, ["LK"] = {"Sri Lanka"}, ["LR"] = {"Liberia"}, ["LS"] = {"Lesotho"}, ["LT"] = {"Lithuania"}, ["LU"] = {"Luxembourg"}, ["LV"] = {"Latvia"}, ["LY"] = {"Libya"}, ["MA"] = {"Morocco"}, ["MC"] = {"Monaco"}, ["MD"] = {"Moldova"}, ["ME"] = {"Montenegro"}, ["MF"] = {"Saint Martin (French part)"}, ["MG"] = {"Madagascar"}, ["MH"] = {"Marshall Islands"}, ["MK"] = {"North Macedonia"}, ["ML"] = {"Mali"}, ["MM"] = {"Myanmar"}, ["MN"] = {"Mongolia"}, ["MO"] = {"Macao"}, ["MP"] = {"Northern Mariana Islands"}, ["MQ"] = {"Martinique"}, ["MR"] = {"Mauritania"}, ["MS"] = {"Montserrat"}, ["MT"] = {"Malta"}, ["MU"] = {"Mauritius"}, ["MV"] = {"Maldives"}, ["MW"] = {"Malawi"}, ["MX"] = {"Mexico"}, ["MY"] = {"Malaysia"}, ["MZ"] = {"Mozambique"}, ["NA"] = {"Namibia"}, ["NC"] = {"New Caledonia"}, ["NE"] = {"Niger"}, ["NF"] = {"Norfolk Island"}, ["NG"] = {"Nigeria"}, ["NI"] = {"Nicaragua"}, ["NL"] = {"Netherlands"}, ["NO"] = {"Norway"}, ["NP"] = {"Nepal"}, ["NR"] = {"Nauru"}, ["NU"] = {"Niue"}, ["NZ"] = {"New Zealand"}, ["OM"] = {"Oman"}, ["PA"] = {"Panama"}, ["PE"] = {"Peru"}, ["PF"] = {"French Polynesia"}, ["PG"] = {"Papua New Guinea"}, ["PH"] = {"Philippines"}, ["PK"] = {"Pakistan"}, ["PL"] = {"Poland"}, ["PM"] = {"Saint Pierre and Miquelon"}, ["PN"] = {"Pitcairn"}, ["PR"] = {"Puerto Rico"}, ["PS"] = {"State of Palestine"}, ["PT"] = {"Portugal"}, ["PW"] = {"Palau"}, ["PY"] = {"Paraguay"}, ["QA"] = {"Qatar"}, ["RE"] = {"Réunion"}, ["RO"] = {"Romania"}, ["RS"] = {"Serbia"}, ["RU"] = {"Russian Federation"}, ["RW"] = {"Rwanda"}, ["SA"] = {"Saudi Arabia"}, ["SB"] = {"Solomon Islands"}, ["SC"] = {"Seychelles"}, ["SD"] = {"Sudan"}, ["SE"] = {"Sweden"}, ["SG"] = {"Singapore"}, ["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"}, ["SI"] = {"Slovenia"}, ["SJ"] = {"Svalbard and Jan Mayen"}, ["SK"] = {"Slovakia"}, ["SL"] = {"Sierra Leone"}, ["SM"] = {"San Marino"}, ["SN"] = {"Senegal"}, ["SO"] = {"Somalia"}, ["SR"] = {"Suriname"}, ["SS"] = {"South Sudan"}, ["ST"] = {"Sao Tome and Principe"}, ["SV"] = {"El Salvador"}, ["SX"] = {"Sint Maarten (Dutch part)"}, ["SY"] = {"Syrian Arab Republic"}, ["SZ"] = {"Eswatini", "eSwatini", "Swaziland"}, ["TA"] = {"Tristan da Cunha"}, ["TC"] = {"Turks and Caicos Islands"}, ["TD"] = {"Chad"}, ["TF"] = {"French Southern Territories"}, ["TG"] = {"Togo"}, ["TH"] = {"Thailand"}, ["TJ"] = {"Tajikistan"}, ["TK"] = {"Tokelau"}, ["TL"] = {"Timor-Leste"}, ["TM"] = {"Turkmenistan"}, ["TN"] = {"Tunisia"}, ["TO"] = {"Tonga"}, ["TR"] = {"Türkiye", "Turkey"}, ["TT"] = {"Trinidad and Tobago"}, ["TV"] = {"Tuvalu"}, ["TW"] = {"Taiwan, Province of China"}, ["TZ"] = {"United Republic of Tanzania"}, ["UA"] = {"Ukraine"}, ["UG"] = {"Uganda"}, ["UM"] = {"United States Minor Outlying Islands"}, ["UN"] = {"United Nations"}, ["US"] = {"United States"}, ["UY"] = {"Uruguay"}, ["UZ"] = {"Uzbekistan"}, ["VA"] = {"Holy See (Vatican City State)"}, ["VC"] = {"Saint Vincent and the Grenadines"}, ["VE"] = {"Venezuela"}, ["VG"] = {"British Virgin Islands"}, ["VI"] = {"U.S. Virgin Islands"}, ["VN"] = {"Viet Nam"}, ["VU"] = {"Vanuatu"}, ["WF"] = {"Wallis and Futuna"}, ["WS"] = {"Samoa"}, ["YE"] = {"Yemen"}, ["YT"] = {"Mayotte"}, ["ZA"] = {"South Africa"}, ["ZM"] = {"Zambia"}, ["ZW"] = {"Zimbabwe"}, ["001"] = {"World"}, ["002"] = {"Africa"}, ["003"] = {"North America"}, ["005"] = {"South America"}, ["009"] = {"Oceania"}, ["011"] = {"Western Africa"}, ["013"] = {"Central America"}, ["014"] = {"Eastern Africa"}, ["015"] = {"Northern Africa"}, ["017"] = {"Middle Africa"}, ["018"] = {"Southern Africa"}, ["019"] = {"Americas"}, ["021"] = {"Northern America"}, ["029"] = {"Caribbean"}, ["030"] = {"Eastern Asia"}, ["034"] = {"Southern Asia"}, ["035"] = {"South-Eastern Asia"}, ["039"] = {"Southern Europe"}, ["053"] = {"Australia and New Zealand"}, ["054"] = {"Melanesia"}, ["057"] = {"Micronesia"}, ["061"] = {"Polynesia"}, ["142"] = {"Asia"}, ["143"] = {"Central Asia"}, ["145"] = {"Western Asia"}, ["150"] = {"Europe"}, ["151"] = {"Eastern Europe"}, ["154"] = {"Northern Europe"}, ["155"] = {"Western Europe"}, ["202"] = {"Sub-Saharan Africa"}, ["419"] = {"Latin America and the Caribbean"} } 38ed555cd3945668fad81deefcc2ce6558bff172 Module:Language/data/iana variants 828 473 3140 3139 2023-11-09T20:07:34Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/data/iana_variants]] Scribunto text/plain -- File-Date: 2023-10-16 return { ["1606nict"] = { ["descriptions"] = {"Late Middle French (to 1606)"}, ["prefixes"] = {"frm"}, }, ["1694acad"] = { ["descriptions"] = {"Early Modern French"}, ["prefixes"] = {"fr"}, }, ["1901"] = { ["descriptions"] = {"Traditional German orthography"}, ["prefixes"] = {"de"}, }, ["1959acad"] = { ["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"}, ["prefixes"] = {"be"}, }, ["1994"] = { ["descriptions"] = {"Standardized Resian orthography"}, ["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"}, }, ["1996"] = { ["descriptions"] = {"German orthography of 1996"}, ["prefixes"] = {"de"}, }, ["abl1943"] = { ["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"}, ["prefixes"] = {"pt-br"}, }, ["akuapem"] = { ["descriptions"] = {"Akuapem Twi"}, ["prefixes"] = {"tw"}, }, ["alalc97"] = { ["descriptions"] = {"ALA-LC Romanization, 1997 edition"}, ["prefixes"] = {}, }, ["aluku"] = { ["descriptions"] = {"Aluku dialect", "Boni dialect"}, ["prefixes"] = {"djk"}, }, ["ao1990"] = { ["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"}, ["prefixes"] = {"pt", "gl"}, }, ["aranes"] = { ["descriptions"] = {"Aranese"}, ["prefixes"] = {"oc"}, }, ["arkaika"] = { ["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"}, ["prefixes"] = {"eo"}, }, ["asante"] = { ["descriptions"] = {"Asante Twi", "Ashanti Twi"}, ["prefixes"] = {"tw"}, }, ["auvern"] = { ["descriptions"] = {"Auvergnat"}, ["prefixes"] = {"oc"}, }, ["baku1926"] = { ["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"}, ["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"}, }, ["balanka"] = { ["descriptions"] = {"The Balanka dialect of Anii"}, ["prefixes"] = {"blo"}, }, ["barla"] = { ["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["basiceng"] = { ["descriptions"] = {"Basic English"}, ["prefixes"] = {"en"}, }, ["bauddha"] = { ["descriptions"] = {"Buddhist Hybrid Sanskrit"}, ["prefixes"] = {"sa"}, }, ["bciav"] = { ["descriptions"] = {"BCI Blissymbolics AV"}, ["prefixes"] = {"zbl"}, }, ["bcizbl"] = { ["descriptions"] = {"BCI Blissymbolics"}, ["prefixes"] = {"zbl"}, }, ["biscayan"] = { ["descriptions"] = {"Biscayan dialect of Basque"}, ["prefixes"] = {"eu"}, }, ["biske"] = { ["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["blasl"] = { ["descriptions"] = {"Black American Sign Language dialect"}, ["prefixes"] = {"ase", "sgn-ase"}, }, ["bohoric"] = { ["descriptions"] = {"Slovene in Bohorič alphabet"}, ["prefixes"] = {"sl"}, }, ["boont"] = { ["descriptions"] = {"Boontling"}, ["prefixes"] = {"en"}, }, ["bornholm"] = { ["descriptions"] = {"Bornholmsk"}, ["prefixes"] = {"da"}, }, ["cisaup"] = { ["descriptions"] = {"Cisalpine"}, ["prefixes"] = {"oc"}, }, ["colb1945"] = { ["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"}, ["prefixes"] = {"pt"}, }, ["cornu"] = { ["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"}, ["prefixes"] = {"en"}, }, ["creiss"] = { ["descriptions"] = {"Occitan variants of the Croissant area"}, ["prefixes"] = {"oc"}, }, ["dajnko"] = { ["descriptions"] = {"Slovene in Dajnko alphabet"}, ["prefixes"] = {"sl"}, }, ["ekavsk"] = { ["descriptions"] = {"Serbian with Ekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["emodeng"] = { ["descriptions"] = {"Early Modern English (1500-1700)"}, ["prefixes"] = {"en"}, }, ["fonipa"] = { ["descriptions"] = {"International Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonkirsh"] = { ["descriptions"] = {"Kirshenbaum Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonnapa"] = { ["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"}, ["prefixes"] = {}, }, ["fonupa"] = { ["descriptions"] = {"Uralic Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonxsamp"] = { ["descriptions"] = {"X-SAMPA transcription"}, ["prefixes"] = {}, }, ["gallo"] = { ["descriptions"] = {"Gallo"}, ["prefixes"] = {"fr"}, }, ["gascon"] = { ["descriptions"] = {"Gascon"}, ["prefixes"] = {"oc"}, }, ["grclass"] = { ["descriptions"] = {"Classical Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["grital"] = { ["descriptions"] = {"Italian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"}, }, ["grmistr"] = { ["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["hepburn"] = { ["descriptions"] = {"Hepburn romanization"}, ["prefixes"] = {"ja-latn"}, }, ["hognorsk"] = { ["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"}, ["prefixes"] = {"nn"}, }, ["hsistemo"] = { ["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, }, ["ijekavsk"] = { ["descriptions"] = {"Serbian with Ijekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["itihasa"] = { ["descriptions"] = {"Epic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["ivanchov"] = { ["descriptions"] = {"Bulgarian in 1899 orthography"}, ["prefixes"] = {"bg"}, }, ["jauer"] = { ["descriptions"] = {"Jauer dialect of Romansh"}, ["prefixes"] = {"rm"}, }, ["jyutping"] = { ["descriptions"] = {"Jyutping Cantonese Romanization"}, ["prefixes"] = {"yue"}, }, ["kkcor"] = { ["descriptions"] = {"Common Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["kociewie"] = { ["descriptions"] = {"The Kociewie dialect of Polish"}, ["prefixes"] = {"pl"}, }, ["kscor"] = { ["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"}, ["prefixes"] = {"kw"}, }, ["laukika"] = { ["descriptions"] = {"Classical Sanskrit"}, ["prefixes"] = {"sa"}, }, ["lemosin"] = { ["descriptions"] = {"Limousin"}, ["prefixes"] = {"oc"}, }, ["lengadoc"] = { ["descriptions"] = {"Languedocien"}, ["prefixes"] = {"oc"}, }, ["lipaw"] = { ["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["ltg1929"] = { ["descriptions"] = {"The Latgalian language orthography codified in 1929"}, ["prefixes"] = {"ltg"}, }, ["ltg2007"] = { ["descriptions"] = {"The Latgalian language orthography codified in the language law in 2007"}, ["prefixes"] = {"ltg"}, }, ["luna1918"] = { ["descriptions"] = {"Post-1917 Russian orthography"}, ["prefixes"] = {"ru"}, }, ["metelko"] = { ["descriptions"] = {"Slovene in Metelko alphabet"}, ["prefixes"] = {"sl"}, }, ["monoton"] = { ["descriptions"] = {"Monotonic Greek"}, ["prefixes"] = {"el"}, }, ["ndyuka"] = { ["descriptions"] = {"Ndyuka dialect", "Aukan dialect"}, ["prefixes"] = {"djk"}, }, ["nedis"] = { ["descriptions"] = {"Natisone dialect", "Nadiza dialect"}, ["prefixes"] = {"sl"}, }, ["newfound"] = { ["descriptions"] = {"Newfoundland English"}, ["prefixes"] = {"en-ca"}, }, ["nicard"] = { ["descriptions"] = {"Niçard"}, ["prefixes"] = {"oc"}, }, ["njiva"] = { ["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["nulik"] = { ["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"}, ["prefixes"] = {"vo"}, }, ["osojs"] = { ["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["oxendict"] = { ["descriptions"] = {"Oxford English Dictionary spelling"}, ["prefixes"] = {"en"}, }, ["pahawh2"] = { ["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh3"] = { ["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh4"] = { ["descriptions"] = {"Pahawh Hmong Final Version orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pamaka"] = { ["descriptions"] = {"Pamaka dialect"}, ["prefixes"] = {"djk"}, }, ["peano"] = { ["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"}, ["prefixes"] = {"la"}, }, ["petr1708"] = { ["descriptions"] = {"Petrine orthography"}, ["prefixes"] = {"ru"}, }, ["pinyin"] = { ["descriptions"] = {"Pinyin romanization"}, ["prefixes"] = {"zh-latn", "bo-latn"}, }, ["polyton"] = { ["descriptions"] = {"Polytonic Greek"}, ["prefixes"] = {"el"}, }, ["provenc"] = { ["descriptions"] = {"Provençal"}, ["prefixes"] = {"oc"}, }, ["puter"] = { ["descriptions"] = {"Puter idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["rigik"] = { ["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"}, ["prefixes"] = {"vo"}, }, ["rozaj"] = { ["descriptions"] = {"Resian", "Resianic", "Rezijan"}, ["prefixes"] = {"sl"}, }, ["rumgr"] = { ["descriptions"] = {"Rumantsch Grischun"}, ["prefixes"] = {"rm"}, }, ["scotland"] = { ["descriptions"] = {"Scottish Standard English"}, ["prefixes"] = {"en"}, }, ["scouse"] = { ["descriptions"] = {"Scouse"}, ["prefixes"] = {"en"}, }, ["simple"] = { ["descriptions"] = {"Simplified form"}, ["prefixes"] = {}, }, ["solba"] = { ["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["sotav"] = { ["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["spanglis"] = { ["descriptions"] = {"Spanglish"}, ["prefixes"] = {"en", "es"}, }, ["surmiran"] = { ["descriptions"] = {"Surmiran idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sursilv"] = { ["descriptions"] = {"Sursilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sutsilv"] = { ["descriptions"] = {"Sutsilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["synnejyl"] = { ["descriptions"] = {"Synnejysk", "South Jutish"}, ["prefixes"] = {"da"}, }, ["tarask"] = { ["descriptions"] = {"Belarusian in Taraskievica orthography"}, ["prefixes"] = {"be"}, }, ["tongyong"] = { ["descriptions"] = {"Tongyong Pinyin romanization"}, ["prefixes"] = {"zh-latn"}, }, ["tunumiit"] = { ["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"}, ["prefixes"] = {"kl"}, }, ["uccor"] = { ["descriptions"] = {"Unified Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ucrcor"] = { ["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ulster"] = { ["descriptions"] = {"Ulster dialect of Scots"}, ["prefixes"] = {"sco"}, }, ["unifon"] = { ["descriptions"] = {"Unifon phonetic alphabet"}, ["prefixes"] = {"en", "hup", "kyh", "tol", "yur"}, }, ["vaidika"] = { ["descriptions"] = {"Vedic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["valencia"] = { ["descriptions"] = {"Valencian"}, ["prefixes"] = {"ca"}, }, ["vallader"] = { ["descriptions"] = {"Vallader idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["vecdruka"] = { ["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"}, ["prefixes"] = {"lv"}, }, ["vivaraup"] = { ["descriptions"] = {"Vivaro-Alpine"}, ["prefixes"] = {"oc"}, }, ["wadegile"] = { ["descriptions"] = {"Wade-Giles romanization"}, ["prefixes"] = {"zh-latn"}, }, ["xsistemo"] = { ["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, } } fe5d6330175026010e0d8d9aef185dbd571c3d57 Module:Language/data/iana suppressed scripts 828 474 3142 3141 2023-11-09T20:07:34Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Language/data/iana_suppressed_scripts]] Scribunto text/plain -- File-Date: 2023-10-16 return { ["Arab"] = {"ar", "fa", "ps", "ur"}, ["Armn"] = {"hy"}, ["Beng"] = {"as", "bn"}, ["Blis"] = {"zbl"}, ["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"}, ["Deva"] = {"hi", "mr", "ne", "kok", "mai"}, ["Ethi"] = {"am", "ti"}, ["Geor"] = {"ka"}, ["Grek"] = {"el"}, ["Gujr"] = {"gu"}, ["Guru"] = {"pa"}, ["Hebr"] = {"he", "iw", "yi"}, ["Jpan"] = {"ja"}, ["Khmr"] = {"km"}, ["Knda"] = {"kn"}, ["Kore"] = {"ko"}, ["Laoo"] = {"lo"}, ["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo", "es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn", "gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb", "ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd", "nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn", "ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv", "sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb", "frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh", "tpi", "tvl"}, ["Mlym"] = {"ml"}, ["Mymr"] = {"my"}, ["Nkoo"] = {"nqo"}, ["Orya"] = {"or"}, ["Sinh"] = {"si"}, ["Taml"] = {"ta"}, ["Telu"] = {"te"}, ["Thaa"] = {"dv"}, ["Thai"] = {"th"}, ["Tibt"] = {"dz"} } 1708132b06b72c9ca4217aaa0ddc8a1e8b234646 Template:Transclusionless 10 1686 3144 3143 2023-11-09T20:07:45Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Transclusionless]] wikitext text/x-wiki {{Mbox|text=This template {{Yesno|{{{should|}}}|yes=should|no=may}} have no transclusions, because {{{reason|it is substituted by a tool or script, it is used as part of a short-term or less active Wikipedia process, or for some other reason}}}.}}<!-- --><includeonly>{{#switch: {{SUBPAGENAME}} |doc |sandbox= |[[Category:Wikipedia transclusionless templates]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 8a93407123b10ff7ce9ba5557b71bda67df7ec45 Template:UF-geo-other 10 1687 3146 3145 2023-11-09T20:07:45Z Führerredux 2 1 revision imported from [[:wikipedia:Template:UF-geo-other]] wikitext text/x-wiki The HTML markup produced by this template emits an [[Geo (microformat)| Geo microformat]], which makes the location's [[Geographic coordinate system|coordinates]] (latitude & longitude) [[Parsing|parsable]], so that they can be, say, looked up on a map. As yet, [http://microformats.org/wiki/geo-extension-strawman the standard for doing this] for off-world bodies is still under development, but is supported in some microformat parsers (e.g. [http://buzzword.org.uk/swignition/ Swignition]). For more information about the use of [[microformat]]s on Wikipedia, please see [[WP:UF|the microformat project]]. Geo is usually produced by calling {{tl|coord}}, and uses HTML classes: {{Flatlist| *body *geo *latitude *longitude }} '''Please do not rename or remove these classes.''' When giving coordinates, please don't be [[Wikipedia:WikiProject Geographical coordinates#Precision|overly precise]]. [[Category:Templates generating Geo]]<noinclude> [[Category:Microformat (uF) message templates]] </noinclude> 613bb35611b91e35da4f93aa2271dff142885821 Template:GeoTemplate/doc 10 1688 3148 3147 2023-11-09T20:07:47Z Führerredux 2 1 revision imported from [[:wikipedia:Template:GeoTemplate/doc]] wikitext text/x-wiki {{Documentation subpage}} {{transclusionless|reason=this template is used by [[:mw:GeoHack]] to display maps on pages linked from, but outside of, the English Wikipedia. The GeoTemplate family of templates is used by {{tl|coord}} links on articles about places on Earth and on extraterrestrial bodies. See {{tl|Surface features of space objects}} for links to many such articles.}} See [[:mw:GeoHack]] for more information about the GeoTemplate family of templates and how they are used. == Microformat == {{UF-geo-other}} [[Category:WikiProject Geographical coordinates]] [[Category:GeoTemplates]] [[Category:External link templates]] af4c59f784148170319b0a83bfbec60a1b6dcc58 Template:GeoTemplate/styles.css 10 1689 3150 3149 2023-11-09T20:07:48Z Führerredux 2 1 revision imported from [[:wikipedia:Template:GeoTemplate/styles.css]] sanitized-css text/css .geoservices tr:nth-child(odd) { background: #f0f0f0; } 1202731d4eca686823cf4e9af4933104fe73ccb6 Template:Bulletedlist 10 1690 3153 3152 2023-11-09T20:28:31Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Bulletedlist]] wikitext text/x-wiki #REDIRECT [[Template:Bulleted list]] fc3e32ae77e74a144ca12970d1e03f8429824b63 Module:Transclusion count/data/K 828 1691 3156 3155 2023-11-09T20:32:09Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/K]] Scribunto text/plain return { ["KAZ"] = 4500, ["KEN"] = 3500, ["KIA"] = 8000, ["KOR"] = 7400, ["K_League_player"] = 2100, ["Keep_local"] = 6000, ["Keggcite"] = 4300, ["Kent_tasks"] = 4600, ["Key_press"] = 3700, ["Key_press/styles.css"] = 3800, ["KillMarkers"] = 44000, ["Ko-hhrm"] = 5500, ["Korean"] = 14000, ["Module:Key"] = 3800, } d8aa48998c354abd6c316d082ff432f36e3e4b37 Template:KIA/doc 10 1692 3158 3157 2023-11-09T20:32:11Z Führerredux 2 1 revision imported from [[:wikipedia:Template:KIA/doc]] wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE --> {{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}} {{Notice |{{about|the "[[killed in action]]" symbol|the template for the automobile company|Template:Kia}}}} This template is used after a person's name in the <code>{{tl|Infobox military conflict}}</code> template to indicate that the person was [[killed in action]]. == Usage == <code>{{tl|KIA}}</code> displays dagger symbol: {{KIA}}<br/> <code>{{tlx|KIA|<nowiki>bold=no</nowiki>}}</code> does not bold the symbol: {{KIA|bold=no}}<br/> <code>{{tlx|KIA|<nowiki>alt=yes</nowiki>}}</code> (or <code>{{tlx|KIA2}}</code> for short) displays the abbreviation: {{KIA|alt=yes}} The text displayed is linked to [[Killed in action]]. == See also == *{{tl|DOW}} *{{tl|Executed}} *{{tl|Assassinated}} *{{tl|POW}} *{{tl|Surrendered}} *{{tl|WIA}} *{{tl|MIA}} *{{tl|Natural Causes}} <includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc|| <!--Categories below here, please; interwikis to Wikidata.--> [[Category:Military abbreviation templates|{{PAGENAME}}]] }}}}</includeonly> 18858e746e8994ff29072294d2b27dc74c7983b4 Module:Disambiguation/templates 828 156 3160 3159 2023-11-09T20:32:11Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Disambiguation/templates]] Scribunto text/plain -- This page contains a table of all disambiguation templates and their -- redirects. Templates names are capitalized, and the Template: prefix is -- removed. Templates are grouped with the main template first, followed by -- its redirects. return { ["Disambiguation"] = true, ["Begriffsklärung"] = true, ["DAB"] = true, ["Dab"] = true, ["Dabpage"] = true, ["Dbig"] = true, ["Dis"] = true, ["Disam"] = true, ["Disamb"] = true, ["Disambig"] = true, ["Disambig misspelling"] = true, ["Disambig-plants"] = true, ["Disambiguation page"] = true, ["Meta disambig"] = true, ["Project disambiguation"] = true, ["Shortcut disambig"] = true, ["WP disambig"] = true, ["WP-disambig"] = true, ["Wikipedia disambiguation"] = true, ["Airport disambiguation"] = true, ["Airport disambig"] = true, ["Biology disambiguation"] = true, ["Call sign disambiguation"] = true, ["Callsigndis"] = true, ["Caselaw disambiguation"] = true, ["Case law disambiguation"] = true, ["Chinese title disambiguation"] = true, ["CJKVdab"] = true, ["Chinese title disambig"] = true, ["Disambig-Chinese-char-title"] = true, ["Disambiguation cleanup"] = true, ["Cleanup disambig"] = true, ["Cleanup disambiguation"] = true, ["CleanupDisambig"] = true, ["Dab cleanup"] = true, ["Dab-cleanup"] = true, ["Dabclean"] = true, ["Disamb-cleanup"] = true, ["Disambcleanup"] = true, ["Disambig cleanup"] = true, ["Disambig-CU"] = true, ["Disambig-cleanup"] = true, ["Disambig-cu"] = true, ["Disambigcleanup"] = true, ["Disambiguate-cleanup"] = true, ["Disambiguation-cleanup"] = true, ["Geodis-cleanup"] = true, ["Genus disambiguation"] = true, ["Genus disambig"] = true, ["Hangul title disambiguation"] = true, ["Hospital disambiguation"] = true, ["Hospitaldis"] = true, ["Human name disambiguation"] = true, ["Bio-dab"] = true, ["HNDIS"] = true, ["HnDis"] = true, ["Hndab"] = true, ["Hndis"] = true, ["Hndisambig"] = true, ["Human name dab"] = true, ["Personal name"] = true, ["Personal name disambiguation"] = true, ["Human name disambiguation cleanup"] = true, ["Hndis-cleanup"] = true, ["Personal name disambiguation cleanup"] = true, ["Hurricane season disambiguation"] = true, ["Letter–number combination disambiguation"] = true, ["LNCD"] = true, ["Letter-Number Combination Disambiguation"] = true, ["Letter-Number combination disambiguation"] = true, ["Letter-NumberCombDisambig"] = true, ["Letter-NumberCombdisambig"] = true, ["Letter-NumberCombinationDisambiguation"] = true, ["Letter-number combination disambiguation"] = true, ["Mathematical disambiguation"] = true, ["Math dab"] = true, ["Math disambiguation"] = true, ["Mathdab"] = true, ["Mathematics disambiguation"] = true, ["Maths disambiguation"] = true, ["Military unit disambiguation"] = true, ["Mil-unit-dis"] = true, ["Mil-unit-disambig"] = true, ["Music disambiguation"] = true, ["Music disambig"] = true, ["Number disambiguation"] = true, ["Numberdis"] = true, ["Numdab"] = true, ["Numdisambig"] = true, ["Opus number disambiguation"] = true, ["Phonetics disambiguation"] = true, ["Place name disambiguation"] = true, ["DisambigG"] = true, ["DisambigGeo"] = true, ["Disambiggeo"] = true, ["Geo-dis"] = true, ["Geodab"] = true, ["Geodis"] = true, ["Geodisambig"] = true, ["Geographic disambiguation"] = true, ["Portal disambiguation"] = true, ["Portal disambig"] = true, ["Road disambiguation"] = true, ["Roaddis"] = true, ["School disambiguation"] = true, ["School disambig"] = true, ["Schooldab"] = true, ["Schooldis"] = true, ["Species Latin name abbreviation disambiguation"] = true, ["Species Latin name disambiguation"] = true, ["LatinNameDisambig"] = true, ["SpeciesLatinNameDisambig"] = true, ["Station disambiguation"] = true, ["Station dab"] = true, ["Synagogue disambiguation"] = true, ["Taxonomic authority disambiguation"] = true, ["Taxonomic authorities disambiguation"] = true, ["Taxonomy disambiguation"] = true, ["Species disambiguation"] = true, ["Template disambiguation"] = true, ["Template ambiguous"] = true, ["Template dab"] = true, ["Template disambig"] = true, ["WoO number disambiguation"] = true, } 2cbee297a6101d351aacad836d4c2061407218dd Template:POW 10 1693 3162 3161 2023-11-09T21:09:56Z Führerredux 2 1 revision imported from [[:wikipedia:Template:POW]] wikitext text/x-wiki &nbsp;([[Prisoner of war|{{abbr|POW|Prisoner of war}}]])<noinclude> <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> {{Documentation}} </noinclude> a3d34013543a96d966a6abd9a34f756a40c80826 Template:POW/doc 10 1694 3164 3163 2023-11-09T21:10:01Z Führerredux 2 1 revision imported from [[:wikipedia:Template:POW/doc]] wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> == Information == This template is used to indicate commanders who were captured or surrendered in {{tl|Infobox military conflict}}. == Usage == <code>{{tl|POW}}</code> produces: {{POW}} == See also == *{{tl|WIA}} *{{tl|Executed}} *{{tl|Surrendered}} *{{tl|KIA}} *{{tl|DOW}} *{{tl|MIA}} <includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Military abbreviation templates|{{PAGENAME}}]] }}}}</includeonly> d1623cfcea1bfa435326fcdeec6262db4ab599c8 Containment War Against Wickedonezz 0 1640 3167 3166 2023-11-09T21:15:21Z Führerredux 2 Protected "[[Containment War Against Wickedonezz]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community conflicts against Wickedonezz]] | map_type = USA Minnesota | map_relief = yes | map_label = Cambridge | coordinates = {{Coord|45|33|56|N|93|13|34|W}} | map_size = 300 | map_marksize = 7 | date = 8, November 2023 | territory = The Modder's Coalition gains control of the rest of the world. | result = Modder's Coalition Victory | combatant1 = The Modder's Coalition{{bulletedlist | Führerredux Team | Red Dusk Team | Judgement Day Team | Other Associates }} | combatant2 = FuhrerReich: Ice Cold (later: <br>FuhrerReich: Infernal Flames) | commander1 = <strong>Führerredux team</strong>{{bulletedlist | Dax | Thanasis Lanaras | The Detailed Bread | Pascal | Denis_MD }} <strong>Red Dusk team</strong>{{bulletedlist | comrade doggo | DUKESLAYER | sifi-gayming | The Masked Hungarian }} <strong>Judgement Day team</strong>{{bulletedlist | Copernicus | GrievingOhio150 | GDestruction | Pascal }} <strong>Ex-Ice Cold Developers</strong><br>(on opposing side up until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] was formed) {{bulletedlist | Professional Janny Curb stomper | Pol | BozuyukKeresteFabrikası | Panzerschokolade Addict }} | commander2 = <strong>FuhrerReich: Ice Cold team</strong>{{bulletedlist | Wickedonezz {{KIA}} | KillerKemzstar | Bookthecook | Lucien }} <strong>Ex-Ice Cold Developers</strong><br>(until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] formed) {{bulletedlist | Professional Janny Curb stomper | Pol | BozuyukKeresteFabrikası | Panzerschokolade Addict }} | combatant1a = Associates{{bulletedlist|FuhrerReich: Ice Cold ex developers}} | casualties2 = Wickedonnezz {{KIA}} KillerKemzstar {{POW}} Lucien {{POW}} }} 5e0e1ee5129325cf76738f611b2f7a942b63d6f5 3172 3167 2023-11-09T22:54:04Z Führerredux 2 wikitext text/x-wiki {{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community conflicts against Wickedonezz]] | map_type = USA Minnesota | map_relief = yes | map_label = Cambridge | coordinates = {{Coord|45|33|56|N|93|13|34|W}} | map_size = 300 | map_marksize = 7 | date = 8, November 2023 | territory = The Modder's Coalition gains control of the rest of the world. | result = Modder's Coalition Victory | combatant1 = The Modder's Coalition{{bulletedlist | Führerredux Team | Red Dusk Team | Judgement Day Team | Other Associates }} | combatant2 = FuhrerReich: Ice Cold (later: <br>FuhrerReich: Infernal Flames) | commander1 = <strong>Führerredux team</strong>{{bulletedlist | Dax | Thanasis Lanaras | The Detailed Bread | Pascal | Denis_MD }} <strong>Red Dusk team</strong>{{bulletedlist | comrade doggo | DUKESLAYER | sifi-gayming | The Masked Hungarian }} <strong>Judgement Day team</strong>{{bulletedlist | Copernicus | GrievingOhio150 | GDestruction | Pascal | meth }} <strong>Ex-Ice Cold Developers</strong><br>(on opposing side up until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] was formed) {{bulletedlist | Professional Janny Curb stomper | Pol | BozuyukKeresteFabrikası | Panzerschokolade Addict }} | commander2 = <strong>FuhrerReich: Ice Cold team</strong>{{bulletedlist | Wickedonezz {{KIA}} | KillerKemzstar | Bookthecook | Lucien }} <strong>Ex-Ice Cold Developers</strong><br>(until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] formed) {{bulletedlist | Professional Janny Curb stomper | Pol | BozuyukKeresteFabrikası | Panzerschokolade Addict }} | combatant1a = Associates{{bulletedlist|FuhrerReich: Ice Cold ex developers}} | casualties2 = Wickedonnezz {{KIA}} KillerKemzstar {{POW}} Lucien {{POW}} }} b0d287a44ed4ab7f80c1ea1dc34db85189b6b239 MediaWiki:Common.css 8 240 3168 2969 2023-11-09T21:23:50Z Führerredux 2 css text/css CSS placed here will be applied to all skins * Styling inside .mw-parser-output should generally use TemplateStyles. Reset italic styling set by user agent cite, dfn { font-style: inherit; } Straight quote marks for <q> q { quotes: '"' '"' "'" "'"; } Avoid collision of blockquote with floating elements by swapping margin and padding blockquote { overflow: hidden; margin: 1em 0; padding: 0 40px; } Consistent size for <small>, <sub> and <sup> small { font-size: 85%; } .mw-body-content sub, .mw-body-content sup { font-size: 80%; } Same spacing for indented and unindented paragraphs on talk pages .ns-talk .mw-body-content dd { margin-top: 0.4em; margin-bottom: 0.4em; } Reduce page jumps by hiding collapsed/dismissed content .client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child), Avoid FOUC/reflows on collapsed elements. This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115). TODO: Use :is() selector at some reasonable future when support is good for Most Clients Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75 .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ), .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content, Hide charinsert base for those not using the gadget #editpage-specialchars { display: none; } Make the list of references smaller * Keep in sync with Template:Refbegin/styles.css * And Template:Reflist/styles.css ol.references { font-size: 90%; margin-bottom: 0.5em; } Cite customizations for Parsoid * Once everything uses the one true parser these are just customizations span[ rel="mw:referencedBy" ] { counter-reset: mw-ref-linkback 0; } span[ rel='mw:referencedBy' ] > a::before { content: counter( mw-ref-linkback, lower-alpha ); font-size: 80%; font-weight: bold; font-style: italic; } a[ rel="mw:referencedBy" ]::before { font-weight: bold; content: "^"; } span[ rel="mw:referencedBy" ]::before { content: "^ "; } .mw-ref > a[data-mw-group=lower-alpha]::after { content: '[' counter( mw-Ref, lower-alpha ) ']'; } .mw-ref > a[data-mw-group=upper-alpha]::after { content: '[' counter( mw-Ref, upper-alpha ) ']'; } .mw-ref > a[data-mw-group=decimal]::after { content: '[' counter( mw-Ref, decimal ) ']'; } .mw-ref > a[data-mw-group=lower-roman]::after { content: '[' counter( mw-Ref, lower-roman ) ']'; } .mw-ref > a[data-mw-group=upper-roman]::after { content: '[' counter( mw-Ref, upper-roman ) ']'; } .mw-ref > a[data-mw-group=lower-greek]::after { content: '[' counter( mw-Ref, lower-greek ) ']'; } Styling for jQuery makeCollapsible, matching that of collapseButton .mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) { font-weight: normal; padding-right: 0.2em; padding-left: 0.2em; } .mw-collapsible-leftside-toggle .mw-collapsible-toggle { @noflip float: left; } Lists in wikitable data cells are always left-aligned .wikitable td ul, .wikitable td ol, .wikitable td dl { @noflip text-align: left; } Change the external link icon to a PDF icon for all PDF files .mw-parser-output a[href$=".pdf"].external, .mw-parser-output a[href*=".pdf?"].external, .mw-parser-output a[href*=".pdf#"].external, .mw-parser-output a[href$=".PDF"].external, .mw-parser-output a[href*=".PDF?"].external, .mw-parser-output a[href*=".PDF#"].external { background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right; @noflip padding: 8px 18px 8px 0; } System messages styled similarly to fmbox for .mw-warning-with-logexcerpt, behavior of this line differs between * the edit-protected notice and the special:Contribs for blocked users * The latter has specificity of 3 classes so we have to triple up here. .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } default colors for partial block message gotta get over the hump introduced by the triple class above .mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt { border-color: #fc3; background-color: #fef6e7; } Minimum thumb width figure[typeof~='mw:File/Thumb'], figure[typeof~='mw:File/Frame'], .thumbinner { min-width: 100px; } Prevent floating boxes from overlapping any category listings, file histories, edit previews, and edit [Show changes] views. #mw-subcategories, #mw-pages, #mw-category-media, #filehistory, #wikiPreview, #wikiDiff { clear: both; } Styling for tags in changes pages .mw-tag-markers { font-style: italic; font-size: 90%; } Hide stuff meant for accounts with special permissions. Made visible again in [[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]], [[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]], [[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]], [[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. .checkuser-show, .sysop-show, .abusefilter-show, .abusefilter-helper-show, .patroller-show, .templateeditor-show, .extendedmover-show, .extendedconfirmed-show, .autoconfirmed-show, .user-show { display: none; } Hide the redlink generated by {{Editnotice}}, this overrides the ".sysop-show { display: none; }" above that applies to the same link as well. See [[phab:T45013]] Hide the images in editnotices to keep them readable in VE view. Long term, editnotices should become a core feature so that they can be designed responsive. .ve-ui-mwNoticesPopupTool-item .editnotice-redlink, .ve-ui-mwNoticesPopupTool-item .mbox-image, .ve-ui-mwNoticesPopupTool-item .mbox-imageright { display: none !important; } Remove bullets when there are multiple edit page warnings ul.permissions-errors { margin: 0; } ul.permissions-errors > li { list-style: none; } larger inline math span.mwe-math-mathml-inline { font-size: 118%; } Make <math display="block"> be left aligned with one space indent for * compatibility with style conventions .mwe-math-fallback-image-display, .mwe-math-mathml-display { margin-left: 1.6em !important; margin-top: 0.6em; margin-bottom: 0.6em; } .mwe-math-mathml-display math { display: inline; } @media screen { Put a chequered background behind images, only visible if they have transparency, * except on main, user, and portal namespaces body:not(.ns-0):not(.ns-2):not(.ns-100) .gallerybox .thumb img { background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat; } Display "From Wikipedia, the free encyclopedia" in skins that support it, do not apply to print mode #siteSub { display: block; } } Hide FlaggedRevs notice UI when there are no pending changes .flaggedrevs_draft_synced, .flaggedrevs_stable_synced, "Temporary" to remove links in sidebar T255381 #t-upload, Hide broken download box on Special:Book pending T285400 .mw-special-Book #coll-downloadbox { display: none; } * BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS; * SEE [[MediaWiki talk:Common.css/to do]] */ /* Infobox template style */ .infobox { border: 1px solid #a2a9b1; border-spacing: 3px; background-color: #f8f9fa; color: black; /* @noflip */ margin: 0.5em 0 0.5em 1em; padding: 0.2em; /* @noflip */ float: right; /* @noflip */ clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .infobox-header, .infobox-label, .infobox-above, .infobox-full-data, .infobox-data, .infobox-below, .infobox-subheader, .infobox-image, .infobox-navbar, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox th, .infobox td { vertical-align: top; } .infobox-label, .infobox-data, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox th, .infobox td { /* @noflip */ text-align: left; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-above, .infobox .infobox-title, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox caption { font-size: 125%; font-weight: bold; text-align: center; } .infobox-title, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox caption { padding: 0.2em; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-header, .infobox .infobox-subheader, .infobox .infobox-image, .infobox .infobox-full-data, .infobox .infobox-below { text-align: center; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-navbar { /* @noflip */ text-align: right; } Normal font styling for wikitable row headers with scope="row" tag .wikitable.plainrowheaders th[scope=row], .wikitable.plainrowheaders th[scope=rowgroup] { font-weight: normal; @noflip text-align: left; } Remove underlines from certain links .nounderlines a, .IPA a:link, .IPA a:visited { text-decoration: none !important; } Prevent line breaks in silly places where desired (nowrap) and links when we don't want them to (nowraplinks a) .nowrap, .nowraplinks a { white-space: nowrap; } But allow wrapping where desired: .wrap, .wraplinks a { white-space: normal; } texhtml class for inline math (based on generic times-serif class) span.texhtml { font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif; font-size: 118%; line-height: 1; white-space: nowrap; Force tabular and lining display for texhtml font-variant-numeric: lining-nums tabular-nums; font-kerning: none; } span.texhtml span.texhtml { font-size: 100%; } @media screen { .nochecker .gallerybox .thumb img { background-image: none; } } Put anything you mean to be a sitewide addition above the TemplateStyles * comment above. 8917880f435e31d1d842a8d55193a6ff12d8338f 3169 3168 2023-11-09T21:24:13Z Führerredux 2 css text/css /* * This is the CSS common to all desktop skins on en.Wikipedia. * Styling inside .mw-parser-output should generally use TemplateStyles. */ /* Reset italic styling set by user agent */ cite, dfn { font-style: inherit; } /* Straight quote marks for <q> */ q { quotes: '"' '"' "'" "'"; } /* Avoid collision of blockquote with floating elements by swapping margin and padding */ blockquote { overflow: hidden; margin: 1em 0; padding: 0 40px; } /* Consistent size for <small>, <sub> and <sup> */ small { font-size: 85%; } .mw-body-content sub, .mw-body-content sup { font-size: 80%; } /* Same spacing for indented and unindented paragraphs on talk pages */ .ns-talk .mw-body-content dd { margin-top: 0.4em; margin-bottom: 0.4em; } /* Reduce page jumps by hiding collapsed/dismissed content */ .client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child), /* Avoid FOUC/reflows on collapsed elements. */ /* This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115). */ /* TODO: Use :is() selector at some reasonable future when support is good for Most Clients */ /* Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75 */ .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ), .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content, /* Hide charinsert base for those not using the gadget */ #editpage-specialchars { display: none; } /* Make the list of references smaller * Keep in sync with Template:Refbegin/styles.css * And Template:Reflist/styles.css */ ol.references { font-size: 90%; margin-bottom: 0.5em; } /* Cite customizations for Parsoid * Once everything uses the one true parser these are just customizations */ span[ rel="mw:referencedBy" ] { counter-reset: mw-ref-linkback 0; } span[ rel='mw:referencedBy' ] > a::before { content: counter( mw-ref-linkback, lower-alpha ); font-size: 80%; font-weight: bold; font-style: italic; } a[ rel="mw:referencedBy" ]::before { font-weight: bold; content: "^"; } span[ rel="mw:referencedBy" ]::before { content: "^ "; } .mw-ref > a[data-mw-group=lower-alpha]::after { content: '[' counter( mw-Ref, lower-alpha ) ']'; } .mw-ref > a[data-mw-group=upper-alpha]::after { content: '[' counter( mw-Ref, upper-alpha ) ']'; } .mw-ref > a[data-mw-group=decimal]::after { content: '[' counter( mw-Ref, decimal ) ']'; } .mw-ref > a[data-mw-group=lower-roman]::after { content: '[' counter( mw-Ref, lower-roman ) ']'; } .mw-ref > a[data-mw-group=upper-roman]::after { content: '[' counter( mw-Ref, upper-roman ) ']'; } .mw-ref > a[data-mw-group=lower-greek]::after { content: '[' counter( mw-Ref, lower-greek ) ']'; } /* Styling for jQuery makeCollapsible, matching that of collapseButton */ .mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) { font-weight: normal; padding-right: 0.2em; padding-left: 0.2em; } .mw-collapsible-leftside-toggle .mw-collapsible-toggle { /* @noflip */ float: left; } /* Lists in wikitable data cells are always left-aligned */ .wikitable td ul, .wikitable td ol, .wikitable td dl { /* @noflip */ text-align: left; } /* Change the external link icon to a PDF icon for all PDF files */ .mw-parser-output a[href$=".pdf"].external, .mw-parser-output a[href*=".pdf?"].external, .mw-parser-output a[href*=".pdf#"].external, .mw-parser-output a[href$=".PDF"].external, .mw-parser-output a[href*=".PDF?"].external, .mw-parser-output a[href*=".PDF#"].external { background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right; /* @noflip */ padding: 8px 18px 8px 0; } /* System messages styled similarly to fmbox */ /* for .mw-warning-with-logexcerpt, behavior of this line differs between * the edit-protected notice and the special:Contribs for blocked users * The latter has specificity of 3 classes so we have to triple up here. */ .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* default colors for partial block message */ /* gotta get over the hump introduced by the triple class above */ .mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt { border-color: #fc3; background-color: #fef6e7; } /* Minimum thumb width */ figure[typeof~='mw:File/Thumb'], figure[typeof~='mw:File/Frame'], .thumbinner { min-width: 100px; } /* Prevent floating boxes from overlapping any category listings, file histories, edit previews, and edit [Show changes] views. */ #mw-subcategories, #mw-pages, #mw-category-media, #filehistory, #wikiPreview, #wikiDiff { clear: both; } /* Styling for tags in changes pages */ .mw-tag-markers { font-style: italic; font-size: 90%; } /* Hide stuff meant for accounts with special permissions. Made visible again in [[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]], [[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]], [[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]], [[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. */ .checkuser-show, .sysop-show, .abusefilter-show, .abusefilter-helper-show, .patroller-show, .templateeditor-show, .extendedmover-show, .extendedconfirmed-show, .autoconfirmed-show, .user-show { display: none; } /* Hide the redlink generated by {{Editnotice}}, this overrides the ".sysop-show { display: none; }" above that applies to the same link as well. See [[phab:T45013]] Hide the images in editnotices to keep them readable in VE view. Long term, editnotices should become a core feature so that they can be designed responsive. */ .ve-ui-mwNoticesPopupTool-item .editnotice-redlink, .ve-ui-mwNoticesPopupTool-item .mbox-image, .ve-ui-mwNoticesPopupTool-item .mbox-imageright { display: none !important; } /* Remove bullets when there are multiple edit page warnings */ ul.permissions-errors { margin: 0; } ul.permissions-errors > li { list-style: none; } /* larger inline math */ span.mwe-math-mathml-inline { font-size: 118%; } /* Make <math display="block"> be left aligned with one space indent for * compatibility with style conventions */ .mwe-math-fallback-image-display, .mwe-math-mathml-display { margin-left: 1.6em !important; margin-top: 0.6em; margin-bottom: 0.6em; } .mwe-math-mathml-display math { display: inline; } @media screen { /* Put a chequered background behind images, only visible if they have transparency, * except on main, user, and portal namespaces */ body:not(.ns-0):not(.ns-2):not(.ns-100) .gallerybox .thumb img { background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat; } /* Display "From Wikipedia, the free encyclopedia" in skins that support it, do not apply to print mode */ #siteSub { display: block; } } /* Hide FlaggedRevs notice UI when there are no pending changes */ .flaggedrevs_draft_synced, .flaggedrevs_stable_synced, /* "Temporary" to remove links in sidebar T255381 */ #t-upload, /* Hide broken download box on Special:Book pending T285400 */ .mw-special-Book #coll-downloadbox { display: none; } /* * BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS; * SEE [[MediaWiki talk:Common.css/to do]] */ /* Infobox template style */ .infobox { border: 1px solid #a2a9b1; border-spacing: 3px; background-color: #f8f9fa; color: black; /* @noflip */ margin: 0.5em 0 0.5em 1em; padding: 0.2em; /* @noflip */ float: right; /* @noflip */ clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .infobox-header, .infobox-label, .infobox-above, .infobox-full-data, .infobox-data, .infobox-below, .infobox-subheader, .infobox-image, .infobox-navbar, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox th, .infobox td { vertical-align: top; } .infobox-label, .infobox-data, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox th, .infobox td { /* @noflip */ text-align: left; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-above, .infobox .infobox-title, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox caption { font-size: 125%; font-weight: bold; text-align: center; } .infobox-title, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox caption { padding: 0.2em; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-header, .infobox .infobox-subheader, .infobox .infobox-image, .infobox .infobox-full-data, .infobox .infobox-below { text-align: center; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-navbar { /* @noflip */ text-align: right; } /* Normal font styling for wikitable row headers with scope="row" tag */ .wikitable.plainrowheaders th[scope=row], .wikitable.plainrowheaders th[scope=rowgroup] { font-weight: normal; /* @noflip */ text-align: left; } /* Remove underlines from certain links */ .nounderlines a, .IPA a:link, .IPA a:visited { text-decoration: none !important; } /* Prevent line breaks in silly places where desired (nowrap) and links when we don't want them to (nowraplinks a) */ .nowrap, .nowraplinks a { white-space: nowrap; } /* But allow wrapping where desired: */ .wrap, .wraplinks a { white-space: normal; } /* texhtml class for inline math (based on generic times-serif class) */ span.texhtml { font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif; font-size: 118%; line-height: 1; white-space: nowrap; /* Force tabular and lining display for texhtml */ font-variant-numeric: lining-nums tabular-nums; font-kerning: none; } span.texhtml span.texhtml { font-size: 100%; } @media screen { .nochecker .gallerybox .thumb img { background-image: none; } } /* Put anything you mean to be a sitewide addition above the TemplateStyles * comment above. */ 6fb8f3b49a11a996e92a6014fa1eb15459a6daa4 File:FX LOGO WIKI.png 6 1695 3170 2023-11-09T21:47:17Z Führerredux 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 3171 3170 2023-11-09T21:51:15Z Führerredux 2 Führerredux uploaded a new version of [[File:FX LOGO WIKI.png]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Philippines 0 437 3185 1432 2023-11-10T12:35:57Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = National language | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_flag2 = Flag of the United States (1912-1959).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}} | image_map = PHL orthographic.svg | image_map_caption = Location of the Philippines in [[Southeast Asia]] | status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] (1935–1946){{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}}<br />[[Government in exile of the Commonwealth of the Philippines|Government-in-exile]] (1942–1945) </div> | life_span = 1935–1942<br />1942–1945: [[Government in exile of the Commonwealth of the Philippines|Government-in-exile]]<br />1945–1946 | p1 = Insular Government of the Philippine Islands{{!}}'''1935:'''<br />Insular Government of the Philippine Islands | flag_p1 = Flag of the Philippines (1919-1936).svg | p2 = Second Philippine Republic{{!}}'''1945:'''<br />Second Philippine Republic | flag_p2 = Flag of the Philippines (1943-1945).svg | s1 = Philippine Executive Commission{{!}}'''1942:'''<br />Philippine Executive Commission | flag_s1 = Flag of Japan (1870-1999).svg | s2 = Third Philippine Republic{{!}}'''1946:'''<br />{{nowrap|Third Philippine}}<br />Republic | flag_s2 = Flag of the Philippines (1936–1985, 1986–1998).svg | official_languages = {{plainlist| * [[English language|English]] * [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref> }} | ethnic_groups = {{#invoke:list|unbulleted | 33.7% Visayan | 24.4% Tagalog | 8.4% Ilocano | 6.8% Bicolano | 26.2% other }} | demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | languages_sub = no | religion = [[Separation of church and state|None official]] | government_type = Devolved presidential constitutional dependency | legislature = National Assembly | upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946) | lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946) | era = [[Interwar period|Interwar]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | currency = Philippine Peso | drives_on = left | calling_code = +63 | iso3166 = PH | time_zone = [[Philippine Standard Time|PST]] | utc_offset = +08:00 | date_format = {{plainlist| * {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}} * {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}} }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. == History== ===Pre-Colonial Period (pre-1521)=== {{Main article|Philippine Pre-Colonial History}} The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas. Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers. ===Spanish Colonial Period (1521-1898)=== {{Main article|Philippine Spanish Colonial History}} The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world. Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892. The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War. ===Filipino-American War and American Colonial Period (1898-1936)=== {{Main article|Filipino-American War}} The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. {{Main article|Philippine American Colony}} After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao. However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner. <references group="lower-alpha" /> <references /> eeead3b19d42564953bcaf9a574b7d82793f9908 3186 3185 2023-11-10T12:40:12Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = National language | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_flag2 = Flag of the United States (1912-1959).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}} | image_map = PHL orthographic.svg | image_map_caption = Location of the Philippines in [[Southeast Asia]] | status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] (1935–1946){{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}}<br />[[Government in exile of the Commonwealth of the Philippines|Government-in-exile]] (1942–1945) </div> | official_languages = {{plainlist| * [[English language|English]] * [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref> }} | ethnic_groups = {{#invoke:list|unbulleted | 33.7% Visayan | 24.4% Tagalog | 8.4% Ilocano | 6.8% Bicolano | 26.2% other }} | demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | languages_sub = no | religion = [[Separation of church and state|None official]] | government_type = Devolved presidential constitutional dependency | legislature = National Assembly | upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946) | lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946) | era = [[Interwar period|Interwar]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | currency = Philippine Peso | drives_on = left | calling_code = +63 | iso3166 = PH | time_zone = [[Philippine Standard Time|PST]] | utc_offset = +08:00 | date_format = {{plainlist| * {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}} * {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}} }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. == History== ===Pre-Colonial Period (pre-1521)=== {{Main article|Philippine Pre-Colonial History}} The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas. Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers. ===Spanish Colonial Period (1521-1898)=== {{Main article|Philippine Spanish Colonial History}} The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world. Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892. The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War. ===Filipino-American War and American Colonial Period (1898-1936)=== {{Main article|Filipino-American War}} The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. {{Main article|Philippine American Colony}} After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao. However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner. <references group="lower-alpha" /> <references /> 727dc50b628e56e506cf0120f2114daef29ef0de 3187 3186 2023-11-10T12:42:54Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = National language | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_flag2 = Flag of the United States (1912-1959).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}} | image_map = PHL orthographic.svg | image_map_caption = Location of the Philippines in [[Southeast Asia]] | status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] (1935–1946){{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}} </div> | official_languages = {{plainlist| * [[English language|English]] * [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref> }} | ethnic_groups = {{#invoke:list|unbulleted | 33.7% Visayan | 24.4% Tagalog | 8.4% Ilocano | 6.8% Bicolano | 26.2% other }} | demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | languages_sub = no | religion = [[Separation of church and state|None official]] | government_type = Devolved presidential constitutional dependency | legislature = National Assembly | upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946) | lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946) | era = [[Interwar period|Interwar]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | currency = Philippine Peso | drives_on = left | calling_code = +63 | iso3166 = PH | time_zone = [[Philippine Standard Time|PST]] | utc_offset = +08:00 | date_format = {{plainlist| * {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}} * {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}} }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. == History== ===Pre-Colonial Period (pre-1521)=== {{Main article|Philippine Pre-Colonial History}} The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas. Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers. ===Spanish Colonial Period (1521-1898)=== {{Main article|Philippine Spanish Colonial History}} The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world. Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892. The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War. ===Filipino-American War and American Colonial Period (1898-1936)=== {{Main article|Filipino-American War}} The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. {{Main article|Philippine American Colony}} After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao. However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner. <references group="lower-alpha" /> <references /> 115f31e3674223bf94396cde4b63b73732bc0e00 3188 3187 2023-11-10T12:43:17Z Dax0102 32 wikitext text/x-wiki {{Infobox country | languages_type = National language | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_flag2 = Flag of the United States (1912-1959).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}} | image_map = PHL orthographic.svg | image_map_caption = Location of the Philippines in [[Southeast Asia]] | status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] {{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}} </div> | official_languages = {{plainlist| * [[English language|English]] * [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref> }} | ethnic_groups = {{#invoke:list|unbulleted | 33.7% Visayan | 24.4% Tagalog | 8.4% Ilocano | 6.8% Bicolano | 26.2% other }} | demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | languages_sub = no | religion = [[Separation of church and state|None official]] | government_type = Devolved presidential constitutional dependency | legislature = National Assembly | upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946) | lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946) | era = [[Interwar period|Interwar]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | currency = Philippine Peso | drives_on = left | calling_code = +63 | iso3166 = PH | time_zone = [[Philippine Standard Time|PST]] | utc_offset = +08:00 | date_format = {{plainlist| * {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}} * {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}} }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. == History== ===Pre-Colonial Period (pre-1521)=== {{Main article|Philippine Pre-Colonial History}} The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas. Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers. ===Spanish Colonial Period (1521-1898)=== {{Main article|Philippine Spanish Colonial History}} The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world. Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892. The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War. ===Filipino-American War and American Colonial Period (1898-1936)=== {{Main article|Filipino-American War}} The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. {{Main article|Philippine American Colony}} After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao. However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner. <references group="lower-alpha" /> <references /> 026b7a9420ef3d1dc9414005ed3985ad21749dc2 3189 3188 2023-11-10T12:45:21Z Führerredux 2 wikitext text/x-wiki {{Infobox country | languages_type = National language | conventional_long_name = The Commonwealth of the Philippines | image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg | image_flag2 = Flag of the United States (1912-1959).svg | image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg | symbol_type = [[Coat of arms of the Philippines|Coat of arms]] | native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br> | common_name = Philippines | capital = [[Manila]] | largest_city = [[Balintawak City]] | englishmotto = "For God, People, Nature, and Country" | national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa | national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}} | image_map = PHL orthographic.svg | image_map_caption = Location of the Philippines in [[Southeast Asia]] | status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] {{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}} </div> | official_languages = {{plainlist| * [[English language|English]] * [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref> }} | ethnic_groups = {{#invoke:list|unbulleted | 33.7% Visayan | 24.4% Tagalog | 8.4% Ilocano | 6.8% Bicolano | 26.2% other }} | demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br /> Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br /> Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). --> | languages_sub = no | religion = [[Separation of church and state|None official]] | government_type = Devolved presidential constitutional dependency | legislature = National Assembly | upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946) | lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946) | era = [[Interwar period|Interwar]] | leader_title1 = [[President of the Philippines|President]] | leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span> | leader_title2 = [[Foreign Minister|Foreign Secretary]] | leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span> | leader_title3 = [[Economy Minister|Economic Secretary]] | leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span> | leader_title4 = [[Security Minister|Defense Secretary]] | leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span> | currency = Philippine Peso | drives_on = left | calling_code = +63 | iso3166 = PH | time_zone = [[Philippine Standard Time|PST]] | utc_offset = +08:00 | date_format = {{plainlist| * {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}} * {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}} }} The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected. As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner. The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo. == History== ===Pre-Colonial Period (pre-1521)=== The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas. Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers. ===Spanish Colonial Period (1521-1898)=== The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world. Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892. The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War. ===Filipino-American War and American Colonial Period (1898-1936)=== The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao. However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner. <references group="lower-alpha" /> <references /> 1812ef43073259554f930a66aa00f128c5682be7 Template:Infobox country/doc 10 245 3190 950 2023-11-11T10:21:05Z Führerredux 2 wikitext text/x-wiki {{#ifeq:{{{nested|no}}}|no|{{documentation subpage}}{{hatnote|{{tl|Infobox geopolitical organisation}} and {{tl|Infobox former country}} redirect here; related parameters and examples are included below.}}}} {{High-use}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}} {{Uses TemplateStyles|Template:Infobox country/styles.css}} This infobox template is used to generate an infobox for the right-hand side of two specific types of article: on a country or territory, or on a geopolitical organisation. Parameter syntax and examples are detailed in the collapsed sections immediately below. __FORCETOC__ == Syntax == <!---------------------- Country/territory use ----------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox country |micronation = <!--yes if a micronation--> |conventional_long_name = <!--Formal or official full name of the country in English--> |native_name = <!--Country's name (usually full name) in its official/defacto language(s), hence in italics (double quotemarks)--> |common_name = <!--Common name in English (used for wikilinks, captions, and to produce a default iso3166 code)--> |status = <!--Status of country, especially useful for micronations--> |image_flag = <!--e.g. Flag of country.svg--> |alt_flag = <!--alt text for flag (text shown when pointer hovers over flag)--> |flag_border = <!--set to no to disable border around the flag--> |image_flag2 = <!--e.g. Second-flag of country.svg--> |alt_flag2 = <!--alt text for second flag--> |flag2_border = <!--set to no to disable border around the flag--> |image_coat = <!--e.g. Coat of arms of country.svg--> |alt_coat = <!--alt text for coat of arms--> |symbol_type = <!--emblem, seal, etc (if not a coat of arms)--> |national_motto = <!--in inverted commas and wikilinked if link exists--> |englishmotto = <!--English language version of motto--> |national_anthem = <!--in inverted commas and wikilinked if link exists--> |royal_anthem = <!--in inverted commas and wikilinked if link exists--> |other_symbol_type = <!--Use if a further symbol exists, e.g. hymn--> |other_symbol = |image_map = <!--e.g. LocationCountry.svg--> |loctext = <!--text description of location of country--> |alt_map = <!--alt text for map--> |map_caption = <!--Caption to place below map--> |image_map_size = <!--Map size in number of pixels--> |image_map2 = <!--Another map, if required--> |alt_map2 = <!--alt text for second map--> |map_caption2 = <!--Caption to place below second map--> |image_map2_size = <!--Map size in number of pixels--> |capital = <!--Name of country/territory's capital, wikilinked if link exists--> |coordinates = <!-- Coordinates for capital, using {{tl|coord}} --> |largest_city = <!--Name of country/territory's largest city. Use "capital" (without quotation marks) if it's the capital.--> |largest_settlement_type = <!--Type of settlement if largest settlement not a city--> |largest_settlement = <!--Name of largest settlement--> |overlord = <!--Name of Overlord wikilinked--> |official_languages = <!--Languages recognised in legislation, constitution, etc--> |national_languages = <!--Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc--> |regional_languages = <!--Languages recognised or associated with particular regions within the country/territory--> |languages_type = <!--Use to specify a further type of language, if not official, national or regional--> |languages = <!--Languages of the further type--> |languages_sub = <!--Is this further type of language a sub-item of the previous non-sub type? ("yes" or "no")--> |languages2_type = <!--Another further type of language--> |languages2 = <!--Languages of this second further type--> |languages2_sub = <!--Is the second alternative type of languages a sub-item of the previous non-sub type? ("yes" or "no")--> |ethnic_groups = <!--List/breakdown of ethnic groups within the country/territory--> |ethnic_groups_year = <!--Year of ethnic groups data (if provided)--> |ethnic_groups_ref = <!--(for any ref/s to associate with ethnic groups data)--> |religion = <!--Religion--> |religion_year = <!--Year of religion data (if provided)--> |religion_ref = <!--(for any ref/s to associate with religion data)--> |demonym = <!--Term/s describing those associated with the country/territory (e.g. "Belgian" for the country Belgium)--> |government_type = <!--Wikilinked if link exists--> |leader_title1 = <!--(for a country, usually the head of state's (wikilinked) title, e.g. "President", "Monarch")--> |leader_name1 = |leader_title2 = <!--(could be "Vice President", otherwise "Prime Minster", etc, etc)--> |leader_name2 = |leader_title14 = <!--(up to 14 distinct leaders may be included)--> |leader_name14 = |legislature = <!--Name of the country/territory's governing body, e.g. "Parliament", "Congress", etc--> |upper_house = <!--Name of governing body's upper house, if given (e.g. "Senate")--> |lower_house = <!--Name of governing body's lower house, if given (e.g. "Chamber of Deputies")--> |sovereignty_type = <!--Brief description of country/territory's status ("Independence [from...]", "Autonomous province [of...]", etc)--> |sovereignty_note = |established_event1 = <!--First key event in history of country/territory's status or formation--> |established_date1 = <!--Date of first key event--> |established_event2 = <!--Second key event--> |established_date2 = <!--Date of second key event--> |established_event13 = <!--(up to 13 distinct events may be included)--> |established_date13 = |area_rank = |area = <!--Major area size (in [[Template:convert]] either km2 or sqmi first)--> |area_km2 = <!--Major area size (in square km)--> |area_sq_mi = <!--Area in square mi (requires area_km2)--> |area_footnote = <!--Optional footnote for area--> |percent_water = |area_label = <!--Label under "Area" (default is "Total")--> |area_label2 = <!--Label below area_label (optional)--> |area_data2 = <!--Text after area_label2 (optional)--> |population_estimate = |population_estimate_rank = |population_estimate_year = |population_census = |population_census_year = |population_density_km2 = |population_density_sq_mi = |population_density_rank = |nummembers = <!--An alternative to population for micronation--> |GDP_PPP = <!--(Gross Domestic Product from Purchasing Power Parity)--> |GDP_PPP_rank = |GDP_PPP_year = |GDP_PPP_per_capita = |GDP_PPP_per_capita_rank = |GDP_nominal = |GDP_nominal_rank = |GDP_nominal_year = |GDP_nominal_per_capita = |GDP_nominal_per_capita_rank = |Gini = <!--(Gini measure of income inequality; input number only; valid values are between 0 and 100)--> |Gini_ref = <!--(for any ref/s to associate with Gini number)--> |Gini_rank = |Gini_year = |HDI_year = <!-- Please use the year to which the data refers, not the publication year--> |HDI = <!--(Human Development Index; input number only; valid values are between 0 and 1)--> |HDI_change = <!--increase/decrease/steady; rank change from previous year--> |HDI_rank = |HDI_ref = <!--(for any ref/s to associate with HDI number)--> |currency = <!--Name/s of currency/ies used in country/territory--> |currency_code = <!--ISO 4217 code/s for currency/ies (each usually three capital letters)--> |time_zone = <!--e.g. GMT, PST, AST, etc, etc (wikilinked if possible)--> |utc_offset = <!--in the form "+N", where N is number of hours offset--> |time_zone_DST = <!--Link to DST (Daylight Saving Time) used, otherwise leave empty--> |utc_offset_DST = <!--in the form "+N", where N is number of hours offset--> |DST_note = <!--Optional note regarding DST use--> |antipodes = <!--Place/s exactly on the opposite side of the world to country/territory--> |date_format = <!--all-numeric date format and era, such as [[Common Era|CE]], [[Anno Domini|AD]], [[Hijri year|AH]], etc.; e.g. {{abbr|yyyy|year}}-{{abbr|mm|month}}-{{abbr|dd|day}} ([[Anno Domini|AD]]) --> |drives_on = <!--"right" or "left" (side of road)--> |cctld = <!--Internet country code top-level domain identifier (e.g. [[.br]], [[.de]], etc)--> |iso3166code = <!--ISO code only; no extra text. Use to override default from common_name parameter above; omit using "omit".--> |calling_code = <!--e.g. [[+1]], [[+531]], [[+44]], etc--> |patron_saint = <!--Use patron_saints for multiple--> |image_map3 = <!--Optional third map position, e.g. for use with reference to footnotes below it--> |alt_map3 = <!--alt text for third map position--> |footnote_a = <!--For any footnote <sup>a</sup> used above--> |footnote_b = <!--For any footnote <sup>b</sup> used above--> |footnote_h = <!--For any footnote <sup>h</sup> used above--> |footnotes = <!--For any generic non-numbered footnotes--> }} </syntaxhighlight> {{hidden end}} {{hidden begin |toggle=left|title=France-specific parameters}}<!--(France-specific parameters)--> Note: Now redundant. <syntaxhighlight lang="wikitext"> |metropole = |metropole_area = |metropole_area_rank = |metropole_area_magnitude = |metropole_areami² = |metropole_population = |metropole_population_estimate_rank = |foot = |foot2 = |foot3 = |foot4 = |foot5 = </syntaxhighlight> <!--(France-specific parameters)--> {{smaller|* If, on a particular page, the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use ''flag_width'' (as % or px) to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included).}} {{hidden end}} <!------------------------- Geopolitical use --------------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox geopolitical organization |name = <!-- (in English) --> |native_name = <!-- Long-form name in native or any/all non-English languages --> |linking_name = <!-- For wikilinks, if diff from name --> |image_flag = <!-- Flag image's filename --> |alt_flag = <!-- alt text for flag--> |flag_border = <!--set to no to disable border around the flag--> |symbol_type = <!-- Symbol, Emblem, Logo, etc. --> |image_symbol = <!-- Symbol image's filename --> |alt_symbol = <!-- alt text for symbol --> |symbol_width = <!-- Symbol image's width (default 85px) --> |motto = <!-- "[motto]" --> |englishmotto = <!--English language version of motto--> |anthem = <!-- ''[anthem name]'' --> |text_symbol_type = <!-- for other types of text symbol --> |text_symbol = <!-- e.g. ''[hymn name]'' --> |image_map = <!-- Map image's filename --> |loctext = <!--text description of location of organization--> |alt_map = <!-- alt text for map image --> |map_width = <!-- Map image's width (default 250px) --> |map_caption = |org_type = <!-- e.g. Trade bloc --> |membership_type = <!-- (default "Membership") --> |membership = <!-- Type/s and/or number/s of members --> |admin_center_type = <!-- e.g. "Administrative center" (default) --> |admin_center = <!-- Location/s of administrative center/s --> |languages_type = <!-- e.g. "[[Official language]]s" (default) --> |languages = |leader_title1 = <!-- e.g. "Chair", "President", etc. --> |leader_name1 = |leader_title2 = <!-- e.g. "Deputy chair", etc. --> |leader_name2 = |leader_title14 = |leader_name14 = |established = <!-- Usually a date, in lieu of event/s hereafter --> |established_event1 = |established_date1 = |established_event2 = |established_date2 = |established_event9 = |established_date9 = |official_website = |area_km2 = <!-- major area size (in sq_km) --> |area_sq_mi = <!-- area in square mi (requires area_km2) --> |area_footnote = <!-- optional footnote for area --> |percent_water = |area_label = <!-- label under "Area" (default is "Total") --> |area_label2 = <!-- label below area_label (optional) --> |area_dabodyalign = <!-- text after area_label2 (optional) --> |population_estimate = |population_estimate_year = |population_density_km2 = |population_density_sq_mi = |GDP_PPP = |GDP_PPP_rank = |GDP_PPP_year = |GDP_PPP_per_capita = |GDP_nominal = |GDP_nominal_year = |GDP_nominal_per_capita = |Gini = <!-- number only, 0-100 --> |Gini_ref = <!-- for any ref/s to associate with Gini number --> |Gini_year = |HDI = <!-- number only, 0-1 --> |HDI_ref = <!-- for any ref/s to associate with HDI number --> |HDI_year = |currency = |currency_code = |time_zone = |utc_offset = <!-- +N, where N is number of hours --> |footnote1 = |footnote2 = |footnote7 = |footnotes = <!-- For generic non-numbered footnotes --> }} </syntaxhighlight> {{hidden end}} <!-------------------- Former country use ----------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox former country |native_name = <!-- Name in a modern syntax of native language(s). Leave blank if name is only in English. Separate with line breaks<br/> or use Template:Plainlist. If language uses Latin characters, place name(s) in italics. --> |conventional_long_name = <!-- Full name in English --> |common_name = <!-- Name to be used in constructing links and category names; not for display --> |iso3166code = omit <!-- For a country or geopolitical version of a country that ceased to exist prior to the introduction of iso3166--> |era = <!-- Use: "Napoleonic Wars", "Cold War", etc. --> |status = <!-- Status: see Category list on template page --> |status_text = <!-- A free text to describe status at the top of the infobox. Use sparingly. --> |empire = <!-- The empire or country to which the entity was in a state of dependency --> |government_type = <!-- To generate categories: "Monarchy", "Republic", etc. to generate categories --> <!-- Rise and fall, events, years and dates --> <!-- only fill in the start/end event entry if a specific article exists. Don't just say "abolition" or "declaration" --> |event_start = <!-- Default: "Established" --> |date_start = <!-- Optional: Date of establishment, in format 1 January (no year) --> |year_start = <!-- Year of establishment --> |event_end = <!-- Default: "Disestablished" --> |date_end = <!-- Optional: Date of disestablishment, in format 1 January (no year) --> |year_end = <!-- Year of disestablishment --> |year_exile_start = <!-- Year of start of exile (if dealing with exiled government: status="Exile") --> |year_exile_end = <!-- Year of end of exile (leave blank if still in exile) --> |event1 = <!-- Optional: other events between "start" and "end" --> |date_event1 = |event2 = |date_event2 = |event3 = |date_event3 = |event4 = |date_event4 = |event5 = |date_event5 = |event6 = |date_event6 = |event_pre = <!-- Optional: A crucial event that took place before "event_start" --> |date_pre = |event_post = <!-- Optional: A crucial event that took place after "event_end" --> |date_post = <!-- Flag navigation: Preceding and succeeding entities p1 to p5 and s1 to s5 --> |p1 = <!-- Name of the article for preceding entity, numbered 1-5 --> |flag_p1 = <!-- Default: "Flag of {{{p1}}}.svg" (size 30) --> |image_p1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] --> |p2 = |flag_p2 = |p3 = |flag_p3 = |p4 = |flag_p4 = |p5 = |flag_p5 = |s1 = <!-- Name of the article for succeeding entity, numbered 1-5 --> |flag_s1 = <!-- Default: "Flag of {{{s1}}}.svg" (size 30) --> |image_s1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] --> |s2 = |flag_s2 = |s3 = |flag_s3 = |s4 = |flag_s4 = |s5 = |flag_s5 = |image_flag = <!-- Default: Flag of {{{common_name}}}.svg --> |flag_alt = <!-- Alt text for flag --> |image_flag2 = <!-- Second flag --> |flag_alt2 = <!-- Alt text for second flag --> |flag = <!-- Link target under flag image. Default: Flag of {{{common_name}}} --> |flag2 = <!-- Link target under flag2 image. Default: Flag of {{{common_name}}} --> |flag_type = <!-- Displayed text for link under flag. Default "Flag" --> |flag2_type = <!-- Displayed text for link under flag2. Default "Flag" --> |image_coat = <!-- Default: Coat of arms of {{{common_name}}}.svg --> |coa_size = <!-- Size of coat of arms --> |coat_alt = <!-- Alt text for coat of arms --> |symbol_type = <!-- Displayed text for link under symbol. Default "Coat of arms" --> |symbol_type_article = <!-- Link target under symbol image. Default: Coat of arms of {{{common_name}}} --> |image_map = |image_map_size = <!--Map size in number of pixels--> |image_map_alt = |image_map_caption = |image_map2 = <!-- If second map is needed; does not appear by default --> |image_map2_size = <!--Map size in number of pixels--> |image_map2_alt = |image_map2_caption = |capital = |capital_exile = <!-- If status="Exile" --> |national_motto = |national_anthem = |common_languages = |religion = |demonym = |currency = <!-- Titles and names of the first and last leaders and their deputies --> |leader1 = <!-- Name of king or president --> |leader2 = |leader3 = |leader4 = |leader21 = <!--(up to 21 distinct leaders may be included)--> |year_leader1 = <!-- Years served --> |year_leader2 = |year_leader3 = |year_leader4 = |year_leader21 = |title_leader = <!-- Default: "King" for monarchy, otherwise "President" --> |representative1 = <!-- Name of representative of head of state (e.g. colonial governor) --> |representative2 = |representative3 = |representative4 = |representative5 = |year_representative1 = <!-- Years served --> |year_representative2 = |year_representative3 = |year_representative4 = |year_representative5 = |title_representative = <!-- Default: "Governor" --> |deputy1 = <!-- Name of prime minister --> |deputy2 = |deputy3 = |deputy4 = |year_deputy1 = <!-- Years served --> |year_deputy2 = |year_deputy3 = |year_deputy4 = |title_deputy = <!-- Default: "Prime minister" --> <!-- Legislature --> |legislature = <!-- Name of legislature --> |house1 = <!-- Name of first chamber --> |type_house1 = <!-- Default: "Upper house" --> |house2 = <!-- Name of second chamber --> |type_house2 = <!-- Default: "Lower house" --> <!-- Area and population of a given year --> |stat_year1 = <!-- year of the statistic, specify either area, population or both --> |stat_area1 = <!-- area in square kilometres (w/o commas or spaces); area in square miles is calculated --> |stat_pop1 = <!-- population (w/o commas or spaces) --> |stat_year2 = |stat_area2 = |stat_pop2 = |stat_year3 = |stat_area3 = |stat_pop3 = |stat_year4 = |stat_area4 = |stat_pop4 = |stat_year5 = |stat_area5 = |stat_pop5 = |today = <!-- Present-day countries that overlap with the territorial extent of the former country. Do not use this parameter if there are more than four such countries. --><!-- Do NOT add flags, per MOS:INFOBOXFLAG --> |footnote_a = <!-- Accepts wikilinks --> |footnote_b = <!-- Accepts wikilinks --> ... |footnote_h = <!-- Accepts wikilinks --> |footnotes = <!-- Accepts wikilinks --> }} </syntaxhighlight> {{hidden end}} == Examples == <!------------------ Country/territory example -------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}} {{Infobox country |conventional_long_name = Republic of Cameroon |native_name = {{lang|fr|République du Cameroun}} |common_name = Cameroon |image_flag = Flag of Cameroon.svg |alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red. |image_coat = Coat of arms of Cameroon.svg |symbol_type = Coat of arms |image_map = Cameroon (orthographic projection).svg |alt_map = Location of Cameroon on the globe. |national_motto = <br/>{{native phrase|fr|"Paix &ndash; Travail &ndash; Patrie"|italics=off}}<br/>{{small|"Peace &ndash; Work &ndash; Fatherland"}} |national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}}&nbsp;{{lower|0.1em|<sup>a</sup>}}}} |official_languages = {{hlist |[[French language|French]] |[[English language|English]]}} |demonym = Cameroonian |ethnic_groups = {{unbulleted list | {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}} | 19% [[Bantu peoples|Equatorial Bantu]] | 11% [[Kirdi]] | 10% [[Fula people|Fulani]] | {{0|0}}8% [[Bantu peoples|Northwestern Bantu]] | {{0|0}}7% Eastern Nigritic | 13% other African | &lt;1% non-African }} |capital = [[Yaoundé]] |coordinates = {{coord|3|52|N|11|31|E}} |largest_city = [[Douala]] |government_type = [[Republic]] |leader_title1 = [[List of heads of state of Cameroon|President]] |leader_name1 = [[Paul Biya]] |leader_title2 = [[Prime Minister of Cameroon|Prime Minister]] |leader_name2 = [[Philémon Yang]] |legislature = [[National Assembly (Cameroon)|National Assembly]] |area_rank = 54th <!--Demographic Yearbook 1.--> |area_km2 = 475,442 |area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 1.3 <!--CIA World Factbook--> |population_estimate = 20,129,878 |population_estimate_rank = 58th <!--UN World Population Prospects--> |population_estimate_year = July 2012 |population_census = 17,463,836 |population_census_year = 2005 |population_density_km2 = 39.7 |population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]--> |population_density_rank = 167th <!--UN World Population Prospects--> |GDP_PPP = $47.251&nbsp;billion |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $2,257 |GDP_PPP_per_capita_rank = |GDP_nominal = $25.759&nbsp;billion |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $1,230 |sovereignty_type = Independence {{nobold|from [[France]]}} |established_event1 = Declared |established_date1 = 1 January 1960 |established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}} |established_date2 = 1 October 1961 |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.482 <!--number only--> |HDI_ref = |HDI_rank = 150th |Gini_year = 2001 |Gini_change = <!--increase/decrease/steady--> |Gini = 44.6 <!--number only--> |Gini_ref = |Gini_rank = |currency = [[Central African CFA franc]] |currency_code = XAF |time_zone = [[West Africa Time|WAT]] |utc_offset = +1 |time_zone_DST = |utc_offset_DST = |drives_on = right |calling_code = [[+237]] |cctld = [[.cm]] |footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61. }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox country |conventional_long_name = Republic of Cameroon |native_name = {{lang|fr|République du Cameroun}} |common_name = Cameroon |image_flag = Flag of Cameroon.svg |alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red. |image_coat = Coat of arms of Cameroon.svg |symbol_type = Coat of arms |image_map = Cameroon (orthographic projection).svg |alt_map = Location of Cameroon on the globe. |national_motto = <br/>{{native phrase|fr|"Paix &ndash; Travail &ndash; Patrie"|italics=off}}<br/>{{small|"Peace &ndash; Work &ndash; Fatherland"}} |national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}}&nbsp;{{lower|0.1em|<sup>a</sup>}}}} |official_languages = {{hlist |[[French language|French]] |[[English language|English]]}} |demonym = Cameroonian |ethnic_groups = {{unbulleted list | {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}} | 19% [[Bantu peoples|Equatorial Bantu]] | 11% [[Kirdi]] | 10% [[Fula people|Fulani]] | {{0|0}}8% [[Bantu peoples|Northwestern Bantu]] | {{0|0}}7% Eastern Nigritic | 13% other African | &lt;1% non-African }} |capital = [[Yaoundé]] |coordinates = {{coord|3|52|N|11|31|E}} |largest_city = [[Douala]] |government_type = [[Republic]] |leader_title1 = [[List of heads of state of Cameroon|President]] |leader_name1 = [[Paul Biya]] |leader_title2 = [[Prime Minister of Cameroon|Prime Minister]] |leader_name2 = [[Philémon Yang]] |legislature = [[National Assembly (Cameroon)|National Assembly]] |area_rank = 54th <!--Demographic Yearbook 1.--> |area_km2 = 475,442 |area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 1.3 <!--CIA World Factbook--> |population_estimate = 20,129,878 |population_estimate_rank = 58th <!--UN World Population Prospects--> |population_estimate_year = July 2012 |population_census = 17,463,836 |population_census_year = 2005 |population_density_km2 = 39.7 |population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]--> |population_density_rank = 167th <!--UN World Population Prospects--> |GDP_PPP = $47.251&nbsp;billion |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $2,257 |GDP_PPP_per_capita_rank = |GDP_nominal = $25.759&nbsp;billion |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $1,230 |sovereignty_type = Independence {{nobold|from [[France]]}} |established_event1 = Declared |established_date1 = 1 January 1960 |established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}} |established_date2 = 1 October 1961 |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.482 <!--number only--> |HDI_ref = |HDI_rank = 150th |Gini_year = 2001 |Gini_change = <!--increase/decrease/steady--> |Gini = 44.6 <!--number only--> |Gini_ref = |Gini_rank = |currency = [[Central African CFA franc]] |currency_code = XAF |time_zone = [[West Africa Time|WAT]] |utc_offset = +1 |time_zone_DST = not observed |utc_offset_DST = +1 |drives_on = right |calling_code = [[+237]] |cctld = [[.cm]] |footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61. }} </syntaxhighlight> {{hidden end}} <!-------------- Geopolitical organization example ---------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}} {{Infobox geopolitical organization |name = {{collapsible list |titlestyle = background:transparent;text-align:center;font-size:85%; |title = {{resize|130%|European Union}} |liststyle = text-align:center; | {{smaller|{{native name|bg|Европейски съюз}}<br/><!-- -->{{native name|hr|Europska unija}}<br/><!-- -->{{native name|cs|Evropská unie}}<br/><!-- -->{{native name|da|Den Europæiske Union}}<br/><!-- -->{{native name|nl|Europese Unie}}<br /><!-- -->{{native name|et|Euroopa Liit}}<br/><!-- -->{{native name|fi|Euroopan unioni}}<br/><!-- -->{{native name|fr|Union européenne}}<br/><!-- -->{{native name|de|Europäische Union}}<br/><!-- -->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!-- -->{{native name|hu|Európai Unió}}<br/><!-- -->{{native name|ga|An tAontas Eorpach}}<br/><!-- -->{{native name|it|Unione europea}}<br/><!-- -->{{native name|lv|Eiropas Savienība}}<br/><!-- -->{{native name|lt|Europos Sąjunga}}<br/><!-- -->{{native name|mt|Unjoni Ewropea}}<br/><!-- -->{{native name|pl|Unia Europejska}}<br/><!-- -->{{native name|pt|União Europeia}}<br/><!-- -->{{native name|ro|Uniunea Europeană}}<br/><!-- -->{{native name|sk|Európska únia}}<br/><!-- -->{{native name|sl|Evropska unija}}<br/><!-- -->{{native name|es|Unión Europea}}<br/><!-- -->{{native name|sv|Europeiska unionen}}<!-- -->}} }} |linking_name = Europe |image_flag = Flag of Europe.svg |alt_flag = Circle of 12 gold stars on a blue background |motto = "[[Motto of the European Union|United in diversity]]" |anthem = <div style="padding-bottom:0.2em;">"[[Anthem of Europe|Ode to Joy]]"&nbsp;&nbsp;{{small|(orchestral)}}</div>[[File:Anthem of Europe (US Navy instrumental short version).ogg|center]] |image_map = EU Globe No Borders.svg |map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green). |map_width = 220px |admin_center_type = Political centres |admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}} |largest_city = [[London]] |official_languages = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = [[Languages of the European Union|24 languages]] | {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}} }} |demonym = [[Citizenship of the European Union|European]] |membership_type = [[Member state of the European Union|Member state]]s |membership = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = 27 states |{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}} |{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}} |{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}} |{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}} |{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}} |{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}} |{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}} |{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}} |{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}} }} |leader_title1 = [[President of the European Council|President of the European Council]] |leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}} |leader_title2 = [[President of the European Commission|President of the Commission]] |leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}} |legislature = [[Legislature of the European Union]] |upper_house = {{nowrap|[[Council of the European Union]]}} |lower_house = [[European Parliament]] |established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]] |established_date1 = 23 July 1952 |established_event2 = [[Treaty of Rome]] |established_date2 = 1 January 1958 |established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}} |established_date3 = 1 November 1993 |official_website = {{URL|europa.eu}} |area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]--> |area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 3.08 |population_estimate = 507,890,191 |population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |population_estimate_year = 2012 |population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)--> |population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)--> |population_density_rank = <!--Calculated by taking out EU members from the list--> <!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011--> |GDP_PPP = $15.821 trillion |GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $31,607<!--same ref as above--> |GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal = $17.577 trillion |GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $35,116 |GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |Gini_year = 2010 |Gini_change = <!--increase/decrease/steady--> |Gini = 30.4 <!--number only--> |Gini_ref = |Gini_rank = |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.876 <!--number only--> |HDI_ref = |HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list--> |currency = {{(!}} cellspacing="0" cellpadding="0" {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}} {{!-}} style="height: 22px;" ! {{flagicon|EU}} ! [[Euro]] ! [[Euro sign|€]] ! [[ISO 4217|EUR]] {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Bulgaria}} {{!}} [[Bulgarian lev|Lev]] {{!}} лв {{!}} [[ISO 4217|BGN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Croatia}} {{!}} [[Croatian kuna|Kuna]] {{!}} kn {{!}} [[ISO 4217|HRK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Czech Republic}} {{!}} [[Czech koruna|Koruna]] {{!}} Kč {{!}} [[ISO 4217|CZK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Denmark}} {{!}} [[Danish krone|Krone]] {{!}} kr {{!}} [[ISO 4217|DKK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Hungary}} {{!}} [[Hungarian forint|Forint]] {{!}} Ft {{!}} [[ISO 4217|HUF]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Latvia}} {{!}} [[Latvian lats|Lats]] {{!}} Ls {{!}} [[ISO 4217|LVL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Lithuania}} {{!}} [[Lithuanian litas|Litas]] {{!}} Lt {{!}} [[ISO 4217|LTL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Poland}} {{!}} [[Polish złoty|Złoty]] {{!}} zł {{!}} [[ISO 4217|PLN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Romania}} {{!}} [[Romanian Leu|Leu]] {{!}} L {{!}} [[ISO 4217|RON]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Sweden}} {{!}} [[Swedish krona|Krona]] {{!}} kr {{!}} [[ISO 4217|SEK]] {{!)}} |time_zone = |utc_offset = +0 to +2 |time_zone_DST = |utc_offset_DST = +1 to +3 |date_format = |cctld = [[.eu]] |calling_code = [[Telephone numbers in the European Union|27 codes]] |footnote_a = If considered as a single entity. }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox geopolitical organization |name = {{collapsible list |titlestyle = background:transparent;text-align:center;font-size:85%; |title = {{resize|130%|European Union}} |liststyle = text-align:center; | {{smaller|{{native name|bg|Европейски съюз}}<br/><!-- -->{{native name|hr|Europska unija}}<br/><!-- -->{{native name|cs|Evropská unie}}<br/><!-- -->{{native name|da|Den Europæiske Union}}<br/><!-- -->{{native name|nl|Europese Unie}}<br /><!-- -->{{native name|et|Euroopa Liit}}<br/><!-- -->{{native name|fi|Euroopan unioni}}<br/><!-- -->{{native name|fr|Union européenne}}<br/><!-- -->{{native name|de|Europäische Union}}<br/><!-- -->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!-- -->{{native name|hu|Európai Unió}}<br/><!-- -->{{native name|ga|An tAontas Eorpach}}<br/><!-- -->{{native name|it|Unione europea}}<br/><!-- -->{{native name|lv|Eiropas Savienība}}<br/><!-- -->{{native name|lt|Europos Sąjunga}}<br/><!-- -->{{native name|mt|Unjoni Ewropea}}<br/><!-- -->{{native name|pl|Unia Europejska}}<br/><!-- -->{{native name|pt|União Europeia}}<br/><!-- -->{{native name|ro|Uniunea Europeană}}<br/><!-- -->{{native name|sk|Európska únia}}<br/><!-- -->{{native name|sl|Evropska unija}}<br/><!-- -->{{native name|es|Unión Europea}}<br/><!-- -->{{native name|sv|Europeiska unionen}}<!-- -->}} }} |linking_name = Europe |image_flag = Flag of Europe.svg |alt_flag = Circle of 12 gold stars on a blue background |motto = "[[Motto of the European Union|United in diversity]]" |anthem = <div style="padding-bottom:0.2em;">''[[Anthem of Europe|Ode to Joy]]''&nbsp;&nbsp;{{small|(orchestral)}}</div>{{center|[[File:Anthem of Europe (US Navy instrumental short version).ogg]]}} |image_map = EU Globe No Borders.svg |map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green). |map_width = 220px |admin_center_type = Political centres |admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}} |largest_city = [[London]] |official_languages = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = [[Languages of the European Union|24 languages]] | {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}} }} |demonym = [[Citizenship of the European Union|European]] |membership_type = [[Member state of the European Union|Member state]]s |membership = {{collapsible list |titlestyle = background:transparent;text-align:left;font-weight:normal; |title = 27 states |{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}} |{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}} |{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}} |{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}} |{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}} |{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}} |{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}} |{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}} |{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}} }} |leader_title1 = [[President of the European Council|President of the European Council]] |leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}} |leader_title2 = [[President of the European Commission|President of the Commission]] |leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}} |legislature = [[Legislature of the European Union]] |upper_house = {{nowrap|[[Council of the European Union]]}} |lower_house = [[European Parliament]] |established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]] |established_date1 = 23 July 1952 |established_event2 = [[Treaty of Rome]] |established_date2 = 1 January 1958 |established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}} |established_date3 = 1 November 1993 |official_website = {{URL|europa.eu}} |area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]--> |area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]--> |percent_water = 3.08 |population_estimate = 507,890,191 |population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |population_estimate_year = 2012 |population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)--> |population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)--> |population_density_rank = <!--Calculated by taking out EU members from the list--> <!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011--> |GDP_PPP = $15.821 trillion |GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |GDP_PPP_year = 2011 |GDP_PPP_per_capita = $31,607 |GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal = $17.577 trillion |GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list--> |GDP_nominal_year = 2011 |GDP_nominal_per_capita = $35,116 |GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list--> |Gini_year = 2010 |Gini_change = <!--increase/decrease/steady--> |Gini = 30.4 <!--number only--> |Gini_ref = |Gini_rank = |HDI_year = 2011 |HDI_change = increase <!--increase/decrease/steady--> |HDI = 0.876 <!--number only--> |HDI_ref = |HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list--> |currency = {{(!}} cellspacing="0" cellpadding="0" {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}} {{!-}} style="height: 22px;" ! {{flagicon|EU}} ! [[Euro]] ! [[Euro sign|€]] ! [[ISO 4217|EUR]] {{!-}} style="height: 22px;" ! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Bulgaria}} {{!}} [[Bulgarian lev|Lev]] {{!}} лв {{!}} [[ISO 4217|BGN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Croatia}} {{!}} [[Croatian kuna|Kuna]] {{!}} kn {{!}} [[ISO 4217|HRK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Czech Republic}} {{!}} [[Czech koruna|Koruna]] {{!}} Kč {{!}} [[ISO 4217|CZK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Denmark}} {{!}} [[Danish krone|Krone]] {{!}} kr {{!}} [[ISO 4217|DKK]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Hungary}} {{!}} [[Hungarian forint|Forint]] {{!}} Ft {{!}} [[ISO 4217|HUF]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Latvia}} {{!}} [[Latvian lats|Lats]] {{!}} Ls {{!}} [[ISO 4217|LVL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Lithuania}} {{!}} [[Lithuanian litas|Litas]] {{!}} Lt {{!}} [[ISO 4217|LTL]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Poland}} {{!}} [[Polish złoty|Złoty]] {{!}} zł {{!}} [[ISO 4217|PLN]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Romania}} {{!}} [[Romanian Leu|Leu]] {{!}} L {{!}} [[ISO 4217|RON]] {{!-}} style="height: 22px;" {{!}} {{flagicon|Sweden}} {{!}} [[Swedish krona|Krona]] {{!}} kr {{!}} [[ISO 4217|SEK]] {{!)}} |time_zone = |utc_offset = +0 to +2 |time_zone_DST = |utc_offset_DST = +1 to +3 |date_format = |cctld = [[.eu]] |calling_code = [[Telephone numbers in the European Union|27 codes]] |footnote_a = If considered as a single entity. }} </syntaxhighlight> {{hidden end}} <!------------------ Former country example -------------------> {{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}} {{Infobox former country |native_name = ''Deutsches Reich'' |conventional_long_name = German Empire |common_name = Germany |iso3166code = omit |status = Empire |era = [[New Imperialism]]/[[World War I|WWI]] |event_start = [[Unification of Germany|Unification]] |date_start = 18 January |year_start = 1871 |event_end = [[German Revolution of 1918–1919|Republic declared]] |date_end = 9 November |year_end = 1918 |event_post = Formal abdication |date_post = 28 November 1918 |p1 = North German Confederation |flag_p1 = Flag of the German Empire.svg |p2 = Kingdom of Bavaria |flag_p2 = Flag of Bavaria (striped).svg |p3 = Kingdom of Württemberg |flag_p3 = Flagge Königreich Württemberg.svg |p4 = Grand Duchy of Baden |flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg |p5 = Grand Duchy of Hesse |flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg |p6 = Alsace-Lorraine |flag_p6 = Flag of France.svg |s1 = Weimar Republic |s2 = Republic of Alsace-Lorraine |s3 = Free City of Danzig |s4 = Second Polish Republic |s5 = Klaipėda Region |s6 = Saar (League of Nations) |s7 = Hlučín Region |s8 = South Jutland County{{!}}Northern Schleswig |s9 = Eupen-Malmedy |flag_s1 = Flag of Germany (3-2 aspect ratio).svg |flag_s2 = Flag of the Republic of Alsace-Lorraine.svg |flag_s3 = Gdansk flag.svg |flag_s4 = Flag of Poland.svg |flag_s5 = Flag of Lithuania 1918-1940.svg |flag_s6 = Flag of Saar 1920-1935.svg |flag_s7 = Flag of Bohemia.svg |flag_s8 = Flag of Denmark.svg |flag_s9 = Flag of Belgium.svg |image_flag = Flag of the German Empire.svg |flag_alt = Horizontal tricolor (black, white, red) |flag_caption = Flag of the German Empire |image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg |symbol_type = Imperial Coat of arms |coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons. |image_map = German Empire, Wilhelminian third version.svg |image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland |image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]] |national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}} |national_anthem = {{plainlist| * ''(none official)'' * "[[Heil dir im Siegerkranz]]" (Imperial) * "[[Deutschlandlied]]" (popular) * "[[Die Wacht am Rhein]]" (unofficial) }} |capital = Berlin |common_languages = ;Official language :[[German language|German]] ;Unofficial minority languages :[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]] ;Colonial languages :[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies) :[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay) :[[Papuan languages]] (German New Guinea) :[[Samoan language|Samoan]] (German Samoa) |government_type = Constitutional monarchy |title_leader = [[German Emperor|Emperor]] |leader1 = [[William I, German Emperor|William I]] |year_leader1 = 1871–1888 |leader2 = [[Frederick III, German Emperor|Frederick III]] |year_leader2 = 1888 |leader3 = [[Wilhelm II, German Emperor|Wilhelm II]] |year_leader3 = 1888–1918 |title_deputy = [[List of Chancellors of Germany|Chancellor]] |deputy1 = [[Otto von Bismarck]] (first) |year_deputy1 = 1871–1890 |deputy2 = [[Friedrich Ebert]] (last) |year_deputy2 = 8–9 Nov 1918 |legislature = [[Reichstag (German Empire)|Reichstag]] |house1 = [[Reichsrat (Germany)|Reichsrat]] |type_house1 = State council |stat_year1 = 1871 |religion = {{plainlist| * [[Lutherans]]~60% * [[Roman Catholics]]~40% }} |stat_pop1 = {{formatnum:41058792}} |stat_year2 = 1890 |stat_pop2 = {{formatnum:49428470}} |stat_year4 = 1910 |stat_pop4 = {{formatnum:64925993}} |stat_area4 = 540857.54 |currency = {{plainlist| * [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}} * [[German gold mark|Goldmark]] {{small|(1873–1914)}} * [[German Papiermark|Papiermark]] {{small|(after 1914)}} }} |footnotes = Area and population not including colonial possessions |today = }} <syntaxhighlight lang="wikitext" style="overflow:auto;"> {{Infobox former country |native_name = ''Deutsches Reich'' |conventional_long_name = German Empire |common_name = Germany |iso3166code = omit |status = Empire |era = [[New Imperialism]]/[[World War I|WWI]] |event_start = [[Unification of Germany|Unification]] |date_start = 18 January |year_start = 1871 |event_end = [[German Revolution of 1918–1919|Republic declared]] |date_end = 9 November |year_end = 1918 |event_post = Formal abdication |date_post = 28 November 1918 |p1 = North German Confederation |flag_p1 = Flag of the German Empire.svg |p2 = Kingdom of Bavaria |flag_p2 = Flag of Bavaria (striped).svg |p3 = Kingdom of Württemberg |flag_p3 = Flagge Königreich Württemberg.svg |p4 = Grand Duchy of Baden |flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg |p5 = Grand Duchy of Hesse |flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg |p6 = Alsace-Lorraine |flag_p6 = Flag of France.svg |s1 = Weimar Republic |s2 = Republic of Alsace-Lorraine |s3 = Free City of Danzig |s4 = Second Polish Republic |s5 = Klaipėda Region |s6 = Saar (League of Nations) |s7 = Hlučín Region |s8 = South Jutland County{{!}}Northern Schleswig |s9 = Eupen-Malmedy |flag_s1 = Flag of Germany (3-2 aspect ratio).svg |flag_s2 = Flag of the Republic of Alsace-Lorraine.svg |flag_s3 = Gdansk flag.svg |flag_s4 = Flag of Poland.svg |flag_s5 = Flag of Lithuania 1918-1940.svg |flag_s6 = Flag of Saar 1920-1935.svg |flag_s7 = Flag of Bohemia.svg |flag_s8 = Flag of Denmark.svg |flag_s9 = Flag of Belgium.svg |image_flag = Flag of the German Empire.svg |flag_alt = Horizontal tricolor (black, white, red) |flag_caption = Flag of the German Empire |image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg |symbol_type = Imperial Coat of arms |coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons. |image_map = German Empire, Wilhelminian third version.svg |image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland |image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]] |national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}} |national_anthem = {{plainlist| * ''(none official)'' * "[[Heil dir im Siegerkranz]]" (Imperial) * "[[Deutschlandlied]]" (popular) * "[[Die Wacht am Rhein]]" (unofficial) }} |capital = Berlin |common_languages = ;Official language :[[German language|German]] ;Unofficial minority languages :[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]] ;Colonial languages :[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies) :[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay) :[[Papuan languages]] (German New Guinea) :[[Samoan language|Samoan]] (German Samoa) |government_type = Constitutional monarchy |title_leader = [[German Emperor|Emperor]] |leader1 = [[William I, German Emperor|William I]] |year_leader1 = 1871–1888 |leader2 = [[Frederick III, German Emperor|Frederick III]] |year_leader2 = 1888 |leader3 = [[Wilhelm II, German Emperor|Wilhelm II]] |year_leader3 = 1888–1918 |title_deputy = [[List of Chancellors of Germany|Chancellor]] |deputy1 = [[Otto von Bismarck]] (first) |year_deputy1 = 1871–1890 |deputy2 = [[Friedrich Ebert]] (last) |year_deputy2 = 8–9 Nov 1918 |legislature = [[Reichstag (German Empire)|Reichstag]] |house1 = [[Reichsrat (Germany)|Reichsrat]] |type_house1 = State council |stat_year1 = 1871 |religion = {{plainlist| * [[Lutherans]]~60% * [[Roman Catholics]]~40% }} |stat_pop1 = {{formatnum:41058792}} |stat_year2 = 1890 |stat_pop2 = {{formatnum:41058792}} |stat_year4 = 1910 |stat_pop4 = {{formatnum:41058792}} |stat_area4 = 540857.54 |currency = {{plainlist| * [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}} * [[German gold mark|Goldmark]] {{small|(1873–1914)}} * [[German Papiermark|Papiermark]] {{small|(after 1914)}} }} |footnotes = Area and population not including colonial possessions |today = }} </syntaxhighlight> {{hidden end}} == Errors == If the template generates errors when calculating data for the Gini or HDI fields, it will add the article to [[:Category:Country articles requiring maintenance]]. This only happens if the page is in the [[WP:MAINSPACE|main article space]], not any other [[WP:NAMESPACE|namespaces]]. == Microformat == {{UF-hcard-place}} == Tracking categories == * {{clc|Country articles requiring maintenance}} * {{clc|Pages using infobox country with unknown parameters}} * {{clc|Pages using infobox country with syntax problems}} * {{clc|Pages using infobox country or infobox former country with the flag caption or type parameters}} * {{clc|Pages using infobox country or infobox former country with the symbol caption or type parameters}} * {{clc|Former country articles using status text with Colony or Exile}} == TemplateData == {{TemplateData header}} {{collapse top|title=TemplateData}} <templatedata> { "description": "This template produces an infobox for countries that covers their major attributes such as their flags, ethnic makeup, and political system.", "format": "{{_\n| ______________________ = _\n}}\n", "params": { "conventional_long_name": { "label": "Full name", "type": "string", "required": false, "description": "Formal or official full name of the country in English. This entry should not be enclosed in brackets.", "example": "The United States of America" }, "common_name": {}, "linking_name": {}, "native_name": { "label": "Native name", "type": "string", "required": false, "example": "{{native name|Bundesrepublik Deutschland}}", "description": "Country's name (usually full name) in its native language, hence in italics (double quotemarks). The template {{native name}} should be used with this parameter to automatically italicize the text." }, "name": { "label": "Geopolitical organisation name", "type": "string", "required": false, "description": "Name of the geopolitical organisation in English." }, "overlord" : { "label": "Overlord", "type": "string", "required": false, "description": "Name of the Overlord if any, wiki-linked" }, "image_flag": { "label": "Flag", "type": "wiki-file-name", "required": false, "example": "Flag of Iceland.svg", "description": "File name of an image file on Wikipedia or on Commons that contains the country's current flag. Do not enclose this entry in double brackets and do not give it a prefix such as File:" }, "flag_width": { "label": "Flag width", "type": "string", "required": false, "description": "If the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use this to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included). Can be done as a % or px." }, "alt_flag": { "label": "Flag alt text", "type": "string", "required": false, "description": "Alternate text for flag (text shown when pointer hovers over flag)." }, "flag_border": { "label": "Flag border", "type": "string", "required": false, "description": "Set to no to disable border around the flag." }, "flag_caption": { "label": "Flag caption", "type": "string", "required": false, "description": "Use this parameter to enter a caption for the flag, if one is necessary. Do not end this entry with a period.", "example": "1992 version of the flag prior to the country's dissolution" }, "image_flag2": { "label": "Second flag", "type": "wiki-file-name", "required": false, "example": "Secondflag of Namibia.svg", "description": "If a country has a second flag— perhaps because of an ongoing civil war or a dispute over sovereignty— you can provide the file name of that second flag in this parameter. Do not include the prefix File:, and do not enclose it in double brackets." }, "alt_flag2": { "label": "Second flag alt text", "type": "string", "required": false, "description": "Alt text for second flag (text shown when pointer hovers over flag)." }, "flag2_border": { "label": "Second flag border", "type": "string", "required": false, "description": "Set to no to disable border around the flag." }, "image_coat": { "label": "Coat of arms", "type": "wiki-file-name", "aliases": [ "image_symbol" ], "example": "Great Seal of the United States (obverse).svg" }, "symbol_width": { "label": "Symbol width", "type": "string", "required": false, "description": "Symbol image's width.", "default": "85px" }, "alt_coat": { "label": "Coat of arms alt text", "type": "string", "aliases": [ "alt_symbol", "coat_alt" ], "required": false, "description": "Alt text for coat of arms." }, "symbol_type": { "label": "Symbol type", "type": "string", "required": false, "description": "If not a coat of arms.", "example": "emblem, seal, etc" }, "symbol_type_article": { "label": "Symbol type article", "type": "string", "description": "An article about the type of symbol of the country" }, "text_symbol": { "label": "Text symbol", "type": "string", "required": false, "description": "For other types of text symbol.", "example": "''[hymn name]''" }, "text_symbol_type": { "label": "Text symbol type", "type": "string", "required": false, "description": "For other types of text symbol." }, "other_symbol": { "label": "Other symbol", "type": "string", "required": false, "description": "Use if a further symbol exists." }, "other_symbol_type": { "label": "Other symbol type", "type": "string", "required": false }, "national_motto": { "label": "National motto", "type": "string", "required": false, "example": "{{lang|de|''{{lang|de|[[Das Lied der Deutschen|Einigkeit und Recht und Freiheit]]}}''}}", "description": "In inverted commas and wikilinked if link exists. Can also be used with the {{lang}} template and correct two-letter language code to designate the language of the motto where not provided in English." }, "motto": { "label": "Motto", "type": "string", "required": false }, "national_anthem": { "label": "National anthem", "type": "string", "required": false, "description": "In inverted commas and wikilinked if link exists." }, "anthem": { "label": "Anthem", "type": "string", "required": false }, "royal_anthem": { "label": "Royal anthem", "type": "string", "required": false, "description": "In inverted commas and wikilinked if link exists." }, "image_map": { "label": "Map", "type": "string", "required": false, "example": "LocationCountry.svg" }, "map_width": { "label": "Map width", "type": "string", "required": false, "description": "Map image's width.", "default": "250px" }, "alt_map": { "label": "Map alt text", "type": "string", "required": false }, "map_caption": { "label": "Map caption", "type": "string", "required": false, "description": "Caption to place below map." }, "image_map2": { "label": "Map 2", "type": "string", "required": false, "description": "Another map, if required." }, "map2_width": { "label": "Map 2 width", "type": "string", "required": false }, "alt_map2": { "label": "Map 2 alt text", "type": "string", "required": false }, "map_caption2": { "label": "Map 2 caption", "type": "string", "required": false, "description": "Caption to place below second map." }, "image_map3": {}, "map3_width": {}, "alt_map3": {}, "map_caption3": {}, "capital": { "label": "Capital", "type": "string", "required": false, "description": "Name of country/territory's capital, wikilinked if link exists." }, "capital_type": { "label": "Capital type", "type": "string", "required": false }, "coordinates": { "label": "Coordinates", "type": "string", "required": false, "description": "The geographic coordinates of the capital." }, "latd": { "label": "Latitude degrees", "type": "string", "required": false, "description": "The degrees of the capital's latitude." }, "latm": { "label": "Latitude minutes", "type": "string", "description": "The minutes of the capital's latitude." }, "latNS": { "label": "Latitude NS", "type": "string", "description": "The direction of the capital's latitude." }, "longd": { "label": "Longitude degrees", "type": "string", "description": "The degrees of the capital's longitude." }, "longm": { "label": "Longitude minutes", "type": "string", "description": "The minutes of the capital's longitude." }, "longEW": { "label": "Longitude EW", "type": "string", "description": "The direction of the capital's longitude." }, "admin_center": { "label": "Administrative center", "type": "string", "required": false, "description": "Location/s of administrative center/s." }, "admin_center_type": { "label": "Administrative center type", "type": "string", "required": false, "default": "Administrative center" }, "capital2": { "label": "Capital 2", "type": "string", "required": false, "description": "Name of country/territory's capital, wikilinked if link exists." }, "capital_type2": { "label": "Capital 2 type", "type": "string", "required": false }, "admin_center2": { "label": "Administrative center 2", "type": "string", "required": false }, "admin_center_type2": { "label": "Administrative center 2 type", "type": "string", "required": false }, "largest_city": { "label": "Largest city", "type": "string", "required": false, "description": "Name of country/territory's largest city. Use \"capital\" (without quotemarks) if it's the capital." }, "largest_settlement": { "label": "Largest settlement", "type": "string", "required": false, "description": "Name of largest settlement if not a city." }, "largest_settlement_type": { "label": "Largest settlement type", "type": "string", "required": false, "description": "Type of settlement if largest settlement not a city." }, "official_languages": { "label": "Official languages", "type": "string", "required": false, "description": "Languages recognised in legislation, constitution, etc." }, "national_languages": { "label": "National languages", "type": "string", "required": false, "description": "Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc." }, "regional_languages": { "label": "Regional languages", "type": "string", "required": false, "description": "Languages recognised or associated with particular regions within the country/territory." }, "languages_type": { "label": "Languages type", "type": "string", "description": "Use to specify a further type of language, if not official, national or regional." }, "languages_sub": { "label": "Languages sub", "type": "string", "required": false, "description": "Is this further type of language a sub-item of the previous non-sub type?", "example": "'yes' or 'no'" }, "languages": { "label": "Languages", "type": "string", "required": false, "description": "Languages of the further type." }, "languages2_type": { "label": "2nd languages type", "type": "string", "description": "Use to specify a 2nd further type of language, if not official, national or regional." }, "languages2_sub": { "label": "Languages 2 sub", "type": "string", "required": false, "description": "Is the second alternative type of languages a sub-item of the previous non-sub type?", "example": "'yes or 'no'" }, "languages2": { "label": "Languages 2", "type": "string", "required": false, "description": "Languages of the second further type." }, "ethnic_groups": { "label": "Ethnic groups", "type": "string", "required": false, "description": "The primary ethnic groups of the country", "example": "{{unbulleted list | 68.8% [[Bumiputera (Malaysia)|Bumiputera]] | 23.2% [[Malaysian Chinese|Chinese]] | &nbsp;7.0% [[Malaysian Indian|Indian]] | &nbsp;1.0% Others }}" }, "ethnic_groups_ref": { "label": "Ethnic groups reference", "type": "string", "required": false, "description": "Reference, in <ref> format, of ethnic composition" }, "ethnic_groups_year": { "label": "Ethnic groups year", "type": "number", "required": false, "description": "Year the ethnic group statistic is from", "example": "2017" }, "religion": { "label": "Religions", "type": "string", "required": false, "description": "List of religious affiliations in {{ublist}} format", "example": "{{ublist|list_style=line-height:1.3em; |class=nowrap | 33.2% [[Buddhism in Singapore|Buddhism]]...}}" }, "religion_ref": { "label": "Religions reference", "type": "string", "required": false, "description": "Reference, in <ref> format, of religious composition" }, "demonym": { "label": "Demonym", "type": "string", "required": false, "description": "Name of residents of this country", "example": "Singaporean", "suggested": true }, "org_type": { "label": "Organization type", "type": "string", "required": false }, "membership": { "label": "membership", "type": "string", "required": false }, "membership_type": { "label": "membership_type", "type": "string", "required": false }, "government_type": { "label": "Type of government", "type": "string", "required": false, "description": "The type of government, e.g. federal republic", "example": "[[Monarchy]]" }, "politics_link": { "label": "Politics link", "type": "string", "required": false }, "leader_title1": { "label": "Leader 1 title", "type": "line", "required": false, "description": "Title of principal leader", "example": "[[President of Singapore|President]]" }, "leader_name1": { "label": "Leader 1 name", "type": "line", "required": false, "description": "Name of principal leader", "example": "[[Halimah Yacob]]" }, "leader_title2": { "label": "Leader 2 title", "type": "line", "required": false, "description": "Title of 2nd leader", "example": "[[Prime Minister of Singapore|Prime Minister]]" }, "leader_name2": { "label": "Leader 2 name", "type": "line", "description": "Name of 2nd leader", "example": "[[Lee Hsien Loong]]" }, "leader_title3": { "label": "Leader 3 title", "type": "line", "required": false, "description": "Title of 3rd leader", "example": "[[Deputy Prime Minister of Singapore|Deputy Prime Ministers]]" }, "leader_name3": { "label": "Leader 3 name", "type": "line", "description": "Name of 3rd leader", "example": "[[Teo Chee Hean]]<br>[[Tharman Shanmugaratnam]]" }, "leader_title4": { "label": "Leader 4 title", "type": "line", "required": false, "description": "Title of the 4th leader", "example": "[[President pro tempore of the United States Senate|President pro tempore]]" }, "leader_name4": { "label": "Leader 4 name", "type": "line", "description": "Name of the 4th leader" }, "leader_title5": { "label": "leader_title5", "type": "string", "required": false }, "leader_name5": { "label": "Leader name 5", "type": "string" }, "leader_title6": { "label": "Leader title 6", "type": "string", "required": false }, "leader_name6": { "label": "Leader name 6", "type": "string" }, "leader_title7": { "label": "Leader title7", "type": "string", "required": false }, "leader_name7": { "label": "Leader name 7", "type": "string" }, "leader_title8": { "label": "Leader title 8", "type": "string", "required": false }, "leader_name8": { "label": "Leader name 8", "type": "string" }, "leader_title9": { "label": "Leader title 9", "type": "string", "required": false }, "leader_name9": { "label": "Leader name 9", "type": "string" }, "leader_title10": { "label": "Leader title 10", "type": "string", "required": false }, "leader_name10": { "label": "Leader name 10", "type": "string" }, "leader_title11": { "label": "Leader title 11", "type": "string", "required": false }, "leader_name11": { "label": "Leader name 11", "type": "string" }, "leader_title12": { "label": "Leader title 12", "type": "string", "required": false }, "leader_name12": { "label": "Leader name 12", "type": "string" }, "leader_title13": { "label": "Leader title 13", "type": "string", "required": false }, "leader_name13": { "label": "Leader name 13", "type": "string" }, "leader_title14": { "label": "Leader title 14", "type": "string", "required": false }, "leader_name14": { "label": "Leader name 14", "type": "string" }, "legislature": { "label": "Legislature", "type": "line", "description": "Name of, and link to, the country's national legislature", "example": "[[Parliament of Singapore|Parliament]]" }, "upper_house": { "description": "Upper house of the country or organization's legislature", "type": "string", "example": "[[United States House of Representatives|House of Representatives]]" }, "lower_house": { "description": "Lower house of the country or organization's legislature", "label": "Lower house", "type": "string", "example": "[[United States House of Representatives|House of Representatives]]" }, "sovereignty_type": { "label": "Sovereignty type", "type": "line", "required": false, "description": "Type of sovereignty this country has", "example": "Independence" }, "sovereignty_note": { "label": "Sovereignty note", "type": "content", "required": false, "description": "Note about this country's sovereignty", "example": "from the [[United Kingdom]]" }, "established": { "label": "established", "type": "string", "required": false }, "established_event1": { "label": "Establishment event 1", "type": "string", "required": false }, "established_date1": { "label": "Establishment date 1", "type": "string", "required": false }, "established_event2": { "label": "Establishment event 2", "type": "string", "required": false }, "established_date2": { "label": "Establishment date 2", "type": "string", "required": false }, "established_event3": { "label": "Establishment event 3", "type": "string", "required": false }, "established_date3": { "label": "Establishment date 3", "type": "string", "required": false }, "established_event4": { "label": "Establishment event 4", "type": "string", "required": false }, "established_date4": { "label": "established_date4", "type": "string", "required": false }, "established_event5": { "label": "Establishment event 5", "type": "string", "required": false }, "established_date5": { "label": "established_date5", "type": "string", "required": false }, "established_event6": { "label": "established_event6", "type": "string", "required": false }, "established_date6": { "label": "established_date6", "type": "string", "required": false }, "established_event7": { "label": "established_event7", "type": "string", "required": false }, "established_date7": { "label": "established_date7", "type": "string", "required": false }, "established_event8": { "label": "established_event8", "type": "string", "required": false }, "established_date8": { "label": "established_date8", "type": "string", "required": false }, "established_event9": { "label": "established_event9", "type": "string", "required": false }, "established_date9": { "label": "established_date9", "type": "string", "required": false }, "established_event10": { "label": "established_event10", "type": "string", "required": false }, "established_date10": { "label": "established_date10", "type": "string", "required": false }, "established_event11": { "label": "established_event11", "type": "string", "required": false }, "established_date11": { "label": "established_date11", "type": "string", "required": false }, "established_event12": { "label": "established_event12", "type": "string", "required": false }, "established_date12": { "label": "established_date12", "type": "string", "required": false }, "area_km2": { "label": "Land area (km²)", "type": "number", "required": false, "description": "Land area of the country in square kilometers", "example": "722.5", "suggested": true }, "area_link": { "label": "area_link", "type": "string", "required": false }, "area_label": { "label": "area_label", "type": "string", "required": false }, "FR_foot4": { "label": "FR_foot4", "type": "string", "required": false, "deprecated": true }, "area_footnote": { "label": "area_footnote", "type": "string", "required": false }, "area_rank": { "label": "Area rank", "type": "string", "required": false, "description": "Rank among countries of land area", "example": "174th", "suggested": true }, "area_sq_mi": { "label": "Land area (mi²)", "type": "number", "required": false, "description": "Land area of the country in square miles", "example": "290" }, "percent_water": { "label": "percent_water", "type": "string", "required": false }, "area_label2": { "label": "area_label2", "type": "string", "required": false }, "area_data2": { "label": "area_data2", "type": "string", "required": false }, "area_label3": { "label": "area_label3", "type": "string", "required": false }, "area_data3": { "label": "area_data3", "type": "string", "required": false }, "FR_metropole": { "label": "FR_metropole", "type": "string", "required": false, "deprecated": true }, "FR_foot2": { "label": "FR_foot2", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_km2": { "label": "FR_IGN_area_km2", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_rank": { "label": "FR_IGN_area_rank", "type": "string", "required": false, "deprecated": true }, "FR_IGN_area_sq_mi": { "label": "FR_IGN_area_sq_mi", "type": "string", "required": false, "deprecated": true }, "FR_foot3": { "label": "FR_foot3", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_km2": { "label": "FR_cadastre_area_km2", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_rank": { "label": "FR_cadastre_area_rank", "type": "string", "required": false, "deprecated": true }, "FR_cadastre_area_sq_mi": { "label": "FR_cadastre_area_sq_mi", "type": "string", "required": false, "deprecated": true }, "population_estimate": { "label": "Population estimate", "type": "number", "required": false, "description": "An estimate of the country's population", "example": "24,000,000" }, "population_census": { "label": "Population census", "type": "string" }, "population_link": { "label": "Population link", "type": "url" }, "population_estimate_year": { "label": "Population estimate year", "type": "number", "description": "The year the population estimate is from", "example": "2018" }, "population_estimate_rank": { "label": "Population estimate rank", "type": "string", "description": "Rank among countries in estimated population", "example": "3rd" }, "population_label2": { "label": "population_label2", "type": "string", "required": false }, "population_data2": { "label": "Population data 2", "type": "string", "required": false }, "population_label3": { "label": "Population label 3", "type": "string", "required": false }, "population_data3": { "label": "Population data 3", "type": "string", "required": false }, "population_census_year": { "label": "Population census year", "type": "number", "required": false, "description": "Year the population census statistics are from", "example": "2010" }, "population_census_rank": { "label": "Population census rank", "type": "string", "description": "Rank among countries in census population", "example": "3rd" }, "population_density_km2": { "label": "Population density per km²", "type": "number", "example": "20,212", "description": "Population density per square kilometer" }, "population_density_sq_mi": { "label": "Population density per mi²", "type": "number", "description": "Population density per square mile", "example": "20,212" }, "pop_den_footnote": { "label": "Population density footnote", "type": "string", "description": "footnote about the population density statistic" }, "population_density_rank": { "label": "Population density rank", "type": "string", "required": false, "description": "Rank among countries in population density", "example": "3rd" }, "FR_metropole_population": { "label": "FR_metropole_population", "type": "string", "required": false, "deprecated": true }, "FR_total_population_estimate_year": { "label": "FR_total_population_estimate_year", "type": "string", "deprecated": true }, "FR_foot": { "label": "FR_foot", "type": "string", "deprecated": true }, "FR_total_population_estimate": { "label": "FR_total_population_estimate", "type": "string", "deprecated": true }, "FR_total_population_estimate_rank": { "label": "FR_total_population_estimate_rank", "type": "string", "deprecated": true }, "FR_metropole_population_estimate_rank": { "label": "FR_metropole_population_estimate_rank", "type": "string", "deprecated": true }, "FR_foot5": { "label": "FR_foot5", "type": "string", "required": false, "deprecated": true }, "GDP_PPP": { "label": "GDP (PPP)", "type": "line", "required": false, "description": "Gross domestic product (purchasing power parity)", "example": "$554.855 billion", "suggested": true }, "GDP_PPP_year": { "label": "GDP (PPP) year cited", "type": "number", "required": false, "description": "Year the GDP (PPP) statistic is cited from", "example": "2018", "suggested": true }, "GDP_PPP_rank": { "label": "GDP (PPP) rank", "type": "string", "required": false, "description": "Rank among countries for GDP PPP", "example": "39th" }, "GDP_PPP_per_capita": { "label": "GDP_PPP_per_capita", "type": "line", "required": false, "description": "Gross domestic product (purchasing power parity) per capita", "example": "$98,014" }, "GDP_PPP_per_capita_rank": { "label": "GDP (PPP) per capita rank", "type": "line", "required": false, "description": "Rank among countries for GDP PPP per capita", "example": "3rd" }, "GDP_nominal": { "label": "GDP (nominal)", "type": "string", "required": false, "description": "Nominal GDP of the country" }, "GDP_nominal_year": { "label": "GDP (nominal) year", "type": "number", "required": false, "description": "Year cited for the country's nominal GDP statistic" }, "GDP_nominal_rank": { "label": "GDP (nominal) rank", "type": "string", "required": false, "description": "Rank among countries for nominal GDP", "example": "41st" }, "GDP_nominal_per_capita": { "label": "GDP (nominal) per capita", "type": "string", "required": false, "description": "Nominal GDP per capita in the country", "example": "$61,766" }, "GDP_nominal_per_capita_rank": { "label": "GDP (nominal) per capita rank", "type": "string", "required": false, "description": "Rank among countries for nominal GDP per capita", "example": "8th" }, "Gini": { "label": "Gini index", "type": "number", "required": false, "description": "Gini index of the country", "example": "46.4" }, "Gini_year": { "label": "Gini index year cited", "type": "number", "required": false, "description": "Year the gini index statistic is cited for", "example": "2014" }, "Gini_change": { "label": "Gini change", "type": "string", "required": false, "description": "\"increase\" or \"decrease\" (over last year)", "example": "increase" }, "Gini_ref": { "label": "Gini index reference", "type": "line", "required": false, "description": "Reference for cited Gini index statistic" }, "Gini_rank": { "label": "Gini rank", "type": "string", "required": false, "description": "Rank of Gini indices", "example": "30th" }, "HDI": { "label": "Human development index", "type": "number", "required": false, "example": "0.932", "suggested": true, "description": "The country's human development index (HDI)" }, "HDI_year": { "label": "Human Development Index year", "type": "number", "required": false, "description": "Year to which the HDI statistic refers", "example": "2017", "suggested": true }, "HDI_change": { "label": "HDI change", "type": "string", "required": false, "description": "\"increase\" or \"decrease\" from previous year", "example": "increase" }, "HDI_ref": { "label": "Human Development Index reference", "type": "line", "required": false, "description": "Reference for HDI statistic" }, "HDI_rank": { "label": "Human development index rank", "type": "string", "required": false, "description": "Rank among countries for HDI score", "example": "9th" }, "currency": { "label": "Currency", "type": "line", "required": false, "description": "National/official currency name and article link", "example": "[[Singapore dollar]]" }, "currency_code": { "label": "Currency code", "type": "line", "required": false, "description": "Currency code of the official currency", "example": "SGD" }, "time_zone": { "label": "Time zone", "type": "line", "required": false, "description": "National time zone(s)", "example": "[[Singapore Standard Time|SST]]" }, "utc_offset": { "label": "UTC offsets", "type": "string", "example": "−4 to −12, +10, +11" }, "utc_offset_DST": { "label": "UTF offsets (DST)", "type": "string", "example": "−4 to −10" }, "DST_note": { "label": "DST note", "type": "string", "example": "{{efn|name=\"time\"}}" }, "time_zone_DST": { "label": "Time zones (DST)", "type": "string", "required": false }, "DST": { "label": "Daylight savings time", "type": "string", "required": false }, "antipodes": { "label": "antipodes", "type": "string", "required": false }, "date_format": { "label": "Date format", "type": "string", "required": false }, "drives_on": { "label": "drives on", "type": "string", "required": false }, "rail gauge": { "label": "Rail gauge", "type": "string", "required": false }, "calling_code": { "label": "Calling code", "type": "string", "example": "+1" }, "patron_saint": { "label": "Patron saint", "aliases": [ "patron_saints" ], "type": "string", "required": false }, "iso3166code": { "label": "ISO 3166 code", "type": "string", "description": "ISO 3166 code for the country", "example": "US" }, "cctld": { "label": "Country code top level domain", "type": "string", "example": ".se" }, "official_website": { "label": "official_website", "type": "string", "required": false, "description": "For geopolitical entities: do not use government website (e.g. usa.gov) for countries (e.g. [[United States]])." }, "footnote_a": { "label": "footnote_a", "type": "string", "required": false }, "footnote_b": { "label": "footnote_b", "type": "string", "required": false }, "footnote_c": { "label": "footnote_c", "type": "string", "required": false }, "footnote_d": { "label": "footnote_d", "type": "string", "required": false }, "footnote_e": { "label": "footnote_e", "type": "string", "required": false }, "footnote_f": { "label": "footnote_f", "type": "string", "required": false }, "footnote_g": { "label": "footnote_g", "type": "string", "required": false }, "footnote_h": { "label": "footnote_h", "type": "string", "required": false }, "footnote1": { "label": "footnote1", "type": "string", "required": false }, "footnote2": { "label": "footnote2", "type": "string", "required": false }, "footnote3": { "label": "footnote3", "type": "string", "required": false }, "footnote4": { "label": "footnote4", "type": "string", "required": false }, "footnote5": { "label": "footnote5", "type": "string", "required": false }, "footnote6": { "label": "footnote6", "type": "string", "required": false }, "footnote7": { "label": "footnote7", "type": "string", "required": false }, "footnote8": { "label": "footnote8", "type": "string", "required": false }, "footnotes": { "label": "footnotes", "type": "string", "required": false }, "navbar": { "label": "navbar", "type": "string", "required": false }, "micronation": {}, "status": { "type": "line" }, "status_text": { "type": "line" }, "empire": {}, "year_end": { "type": "number" }, "year_exile_start": { "type": "number" }, "year_exile_end": { "type": "number" }, "life_span": { "type": "line" }, "year_start": { "type": "number" }, "flag_size": { "type": "line" }, "flag_alt": { "type": "string" }, "flag_alt2": { "type": "string" }, "flag_type": { "type": "string" }, "coa_size": { "type": "line" }, "englishmotto": { "type": "string", "label": "Motto in English", "description": "The country's motto translated into English" }, "image_map_size": { "type": "line" }, "image_map_alt": { "type": "string" }, "image_map_caption": { "type": "content" }, "image_map2_size": { "type": "line" }, "image_map2_alt": { "type": "string" }, "image_map2_caption": { "type": "content" }, "loctext": { "type": "string" }, "capital_exile": { "type": "string" }, "recognized_languages": { "aliases": [ "recognised_languages" ], "type": "content", "label": "Recognized languages", "description": "Recognized languages of the country, possibly in list format" }, "recognized_national_languages": { "aliases": [ "recognised_national_languages" ], "type": "content", "label": "Recognized national languages", "description": "Recognized national languages of the country, possibly in list format" }, "recognized_regional_languages": { "aliases": [ "recognised_regional_languages" ], "type": "content", "label": "Recognized regional languages", "description": "Recognized regional languages of the country, possibly in list format" }, "common_languages": { "type": "content", "label": "Common languages", "description": "Common languages of the country, possibly in list format", "example": "{{ublist|[[English language|English]]|[[Spanish language|Spanish]]|[[Chinese language|Chinese]]}}" }, "religion_year": { "type": "number", "label": "Religion statistic year", "description": "Year the religion statistic is from", "example": "2015" }, "leader_title15": { "type": "line" }, "leader_name15": { "type": "line" }, "title_leader": { "type": "line", "label": "Leader's title", "description": "Title of the country's leader", "example": "[[President of the United States|President]]" }, "year_leader1": { "type": "line", "label": "Leader 1 years", "description": "Years the first leader reigned", "example": "1776-1795" }, "leader1": { "type": "line", "label": "Leader 1", "description": "The first leader of the country", "example": "[[George Washington]]" }, "year_leader2": { "type": "line" }, "leader2": { "type": "line" }, "year_leader3": { "type": "line" }, "leader3": { "type": "line" }, "year_leader4": { "type": "line" }, "leader4": { "type": "line" }, "year_leader5": { "type": "line" }, "leader5": { "type": "line" }, "year_leader6": { "type": "line" }, "leader6": { "type": "line" }, "year_leader7": { "type": "line" }, "leader7": { "type": "line" }, "year_leader8": { "type": "line" }, "leader8": { "type": "line" }, "year_leader9": { "type": "line" }, "leader9": { "type": "line" }, "year_leader10": { "type": "line" }, "leader10": { "type": "line" }, "year_leader11": { "type": "line", "label": "Leader 11 years", "description": "Year of leader 11", "example": "1980-1987" }, "leader11": { "type": "line" }, "title_representative": { "type": "line", "label": "Representative title", "description": "Title of the country's representative", "example": "[[Governor General of Canada|Governor General]]" }, "year_representative1": { "type": "line", "label": "Representative 1 years", "description": "Year of representative 1", "example": "1492-1506" }, "representative1": { "type": "line", "label": "Representative 1", "description": "First representative" }, "year_representative2": { "type": "line", "label": "Representative 2 years", "description": "Year of representative 2", "example": "1552-1580" }, "representative2": { "type": "line" }, "year_representative3": { "type": "line", "label": "Representative 3 years", "description": "Year of representative 3", "example": "1652-1666" }, "representative3": { "type": "line" }, "year_representative4": { "type": "line", "label": "Representative 4 year", "description": "Year of representative 4", "example": "1652-1666" }, "representative4": { "type": "line" }, "year_representative5": { "type": "line", "label": "Representative 5 years", "description": "Year of representative 5", "example": "1652-1666" }, "representative5": { "type": "line" }, "title_deputy": { "type": "line" }, "year_deputy1": { "type": "line", "label": "Deputy 1 years", "description": "Years of the 1st deputy", "example": "2006-2009" }, "deputy1": { "type": "line", "label": "Deputy 1", "description": "First deputy" }, "year_deputy2": { "type": "line", "label": "Deputy 2 years", "description": "Years of the 2nd deputy", "example": "2009-2011" }, "deputy2": { "type": "line" }, "year_deputy3": { "type": "line", "label": "Deputy 3 years", "description": "Years of the 3rd deputy", "example": "2011-2013" }, "deputy3": { "type": "line" }, "year_deputy4": { "type": "line", "label": "Deputy 4 years", "description": "Years of the 4th deputy", "example": "2013-2016" }, "deputy4": { "type": "line" }, "year_deputy5": { "type": "line", "label": "Deputy 5 years", "description": "Years of the 5th deputy", "example": "2016-2018" }, "deputy5": { "type": "line" }, "year_deputy6": { "type": "line", "label": "Deputy 6 years", "description": "Years of the 6th deputy", "example": "2018-" }, "deputy6": { "type": "line" }, "type_house1": { "type": "line" }, "house1": { "type": "line" }, "type_house2": { "type": "line" }, "house2": { "type": "line" }, "event_pre": { "type": "line" }, "established_event13": { "label": "Establishment event 13", "type": "line" }, "established_date13": { "label": "Establishment date 13", "type": "date" }, "established_event14": { "type": "line" }, "established_date14": { "type": "line" }, "established_event15": { "type": "line" }, "established_date15": { "type": "line" }, "event_start": { "label": "Starting event", "description": "The foundational event of the country", "example": "Established", "type": "string" }, "date_pre": {}, "date_start": { "label": "Date established", "description": "Date the country, dynasty or organization was established (date of event_start)", "example": "601 CE", "type": "string" }, "event1": { "label": "Event 1", "description": "First significant event", "example": "Signing of the [[Chanyuan Treaty]] with [[Liao dynasty|Liao]]", "type": "string" }, "date_event1": { "label": "Event 1 date", "description": "Date of the first significant event", "example": "601", "type": "date" }, "event2": { "label": "Event 2", "description": "Second significant event", "example": "[[Alliance Conducted at Sea|Alliance with Jin]]", "type": "string" }, "date_event2": { "label": "Event 2 date", "description": "Date of the second significant event", "type": "string" }, "event3": { "label": "Event 3", "description": "Third significant event", "example": "[[Jingkang Incident]]", "type": "string" }, "date_event3": {}, "event4": { "label": "Event 4", "description": "Fourth significant event", "example": "Beginning of [[Mongol conquest of the Song dynasty|Mongol invasion]]", "type": "string" }, "date_event4": {}, "event5": { "label": "Event 5", "description": "Fifth significant event", "example": "Fall of [[Hangzhou|Lin'an]]", "type": "string" }, "date_event5": {}, "event6": { "label": "Event 6", "description": "Sixth significant event", "example": "[[Krystallnacht]]", "type": "string" }, "date_event6": {}, "event_end": { "label": "Event ending the country", "description": "The event that caused the country to stop existing or transition, if applicable", "example": "[[Battle of Yamen]] (end of dynasty)", "type": "string" }, "date_end": { "label": "End date", "description": "Date the country stopped existing or transitioned, if applicable", "example": "1433", "type": "date" }, "event_post": {}, "date_post": {}, "area_ha": {}, "area_acre": {}, "area_land_km2": {}, "area_land_ha": {}, "area_land_sq_mi": {}, "area_land_acre": {}, "area_water_km2": {}, "area_water_ha": {}, "area_water_sq_mi": {}, "area_water_acre": {}, "stat_area1": {}, "stat_area2": {}, "stat_area3": {}, "stat_area4": {}, "stat_area5": {}, "area_land_footnote": {}, "area_water_footnote": {}, "stat_year1": {}, "ref_area1": {}, "stat_year2": {}, "ref_area2": {}, "stat_year3": {}, "ref_area3": {}, "stat_year4": {}, "ref_area4": {}, "stat_year5": { "label": "Statistic 5 year", "description": "Year of statistic 5", "example": "1933", "type": "number" }, "ref_area5": {}, "stat_pop1": {}, "stat_pop2": {}, "stat_pop3": {}, "stat_pop4": {}, "stat_pop5": {}, "ref_pop1": {}, "ref_pop2": {}, "ref_pop3": {}, "ref_pop4": {}, "ref_pop5": {}, "nummembers": {}, "p1": {}, "s1": {}, "flag_p1": {}, "image_p1": {}, "border_p1": {}, "flag_p2": {}, "image_p2": {}, "p2": {}, "border_p2": {}, "flag_p3": {}, "image_p3": {}, "p3": {}, "border_p3": {}, "flag_p4": {}, "image_p4": {}, "p4": {}, "border_p4": {}, "flag_p5": {}, "image_p5": {}, "p5": {}, "border_p5": {}, "flag_p6": {}, "image_p6": {}, "p6": {}, "border_p6": {}, "flag_p7": {}, "image_p7": {}, "p7": {}, "border_p7": {}, "flag_p8": {}, "image_p8": {}, "p8": {}, "border_p8": {}, "flag_p9": {}, "image_p9": {}, "p9": {}, "border_p9": {}, "flag_p10": {}, "image_p10": {}, "p10": {}, "border_p10": {}, "flag_p11": {}, "image_p11": {}, "p11": {}, "border_p11": {}, "flag_p12": {}, "image_p12": {}, "p12": {}, "border_p12": {}, "flag_p13": {}, "image_p13": {}, "p13": {}, "border_p13": {}, "flag_p14": {}, "image_p14": {}, "p14": {}, "border_p14": {}, "flag_p15": {}, "image_p15": {}, "p15": {}, "border_p15": {}, "flag_s1": {}, "image_s1": {}, "border_s1": {}, "flag_s2": {}, "image_s2": {}, "s2": {}, "border_s2": {}, "flag_s3": {}, "image_s3": {}, "s3": {}, "border_s3": {}, "flag_s4": {}, "image_s4": {}, "s4": {}, "border_s4": {}, "flag_s5": {}, "image_s5": {}, "s5": {}, "border_s5": {}, "flag_s6": {}, "image_s6": {}, "s6": {}, "border_s6": {}, "flag_s7": {}, "image_s7": {}, "s7": {}, "border_s7": {}, "flag_s8": {}, "image_s8": {}, "s8": {}, "border_s8": {}, "flag_s9": {}, "image_s9": {}, "s9": {}, "border_s9": {}, "flag_s10": {}, "image_s10": {}, "s10": {}, "border_s10": {}, "flag_s11": {}, "image_s11": {}, "s11": {}, "border_s11": {}, "flag_s12": {}, "image_s12": {}, "s12": {}, "border_s12": {}, "flag_s13": {}, "image_s13": {}, "s13": {}, "border_s13": {}, "flag_s14": {}, "image_s14": {}, "s14": {}, "border_s14": {}, "flag_s15": {}, "image_s15": {}, "s15": {}, "border_s15": {}, "today": { "label": "Today part of", "description": "For former countries, a list of countries of which the former country's territories are now part, if no more than four.", "example": "{{plainlist| *[[Czech Republic]] *[[Denmark]] *[[France]] *[[Germany]] }}", "type": "content", "suggested": true }, "footnotes2": {}, "symbol_caption": {}, "nested": {} }, "paramOrder": [ "conventional_long_name", "common_name", "linking_name", "native_name", "name", "image_flag", "flag_width", "alt_flag", "flag_border", "flag_caption", "image_flag2", "alt_flag2", "flag2_border", "image_coat", "symbol_width", "alt_coat", "symbol_type", "symbol_type_article", "text_symbol", "text_symbol_type", "other_symbol", "other_symbol_type", "national_motto", "motto", "national_anthem", "anthem", "royal_anthem", "image_map", "map_width", "alt_map", "map_caption", "image_map2", "map2_width", "alt_map2", "map_caption2", "image_map3", "map3_width", "alt_map3", "map_caption3", "capital", "capital_type", "overlord", "coordinates", "latd", "latm", "latNS", "longd", "longm", "longEW", "admin_center", "admin_center_type", "capital2", "capital_type2", "admin_center2", "admin_center_type2", "largest_city", "largest_settlement", "largest_settlement_type", "official_languages", "national_languages", "regional_languages", "languages_type", "languages_sub", "languages", "languages2_type", "languages2_sub", "languages2", "ethnic_groups", "ethnic_groups_ref", "ethnic_groups_year", "religion", "religion_ref", "demonym", "org_type", "membership", "membership_type", "government_type", "politics_link", "leader_title1", "leader_name1", "leader_title2", "leader_name2", "leader_title3", "leader_name3", "leader_title4", "leader_name4", "leader_title5", "leader_name5", "leader_title6", "leader_name6", "leader_title7", "leader_name7", "leader_title8", "leader_name8", "leader_title9", "leader_name9", "leader_title10", "leader_name10", "leader_title11", "leader_name11", "leader_title12", "leader_name12", "leader_title13", "leader_name13", "leader_title14", "leader_name14", "legislature", "upper_house", "lower_house", "sovereignty_type", "sovereignty_note", "established", "established_event1", "established_date1", "established_event2", "established_date2", "established_event3", "established_date3", "established_event4", "established_date4", "established_event5", "established_date5", "established_event6", "established_date6", "established_event7", "established_date7", "established_event8", "established_date8", "established_event9", "established_date9", "established_event10", "established_date10", "established_event11", "established_date11", "established_event12", "established_date12", "area_km2", "area_link", "area_label", "FR_foot4", "area_footnote", "area_rank", "area_sq_mi", "percent_water", "area_label2", "area_data2", "area_label3", "area_data3", "FR_metropole", "FR_foot2", "FR_IGN_area_km2", "FR_IGN_area_rank", "FR_IGN_area_sq_mi", "FR_foot3", "FR_cadastre_area_km2", "FR_cadastre_area_rank", "FR_cadastre_area_sq_mi", "population_estimate", "population_census", "population_link", "population_estimate_year", "population_estimate_rank", "population_label2", "population_data2", "population_label3", "population_data3", "population_census_year", "population_census_rank", "population_density_km2", "population_density_sq_mi", "pop_den_footnote", "population_density_rank", "FR_metropole_population", "FR_total_population_estimate_year", "FR_foot", "FR_total_population_estimate", "FR_total_population_estimate_rank", "FR_metropole_population_estimate_rank", "FR_foot5", "GDP_PPP", "GDP_PPP_year", "GDP_PPP_rank", "GDP_PPP_per_capita", "GDP_PPP_per_capita_rank", "GDP_nominal", "GDP_nominal_year", "GDP_nominal_rank", "GDP_nominal_per_capita", "GDP_nominal_per_capita_rank", "Gini", "Gini_year", "Gini_change", "Gini_ref", "Gini_rank", "HDI", "HDI_year", "HDI_change", "HDI_ref", "HDI_rank", "currency", "currency_code", "time_zone", "utc_offset", "utc_offset_DST", "DST_note", "time_zone_DST", "DST", "antipodes", "date_format", "drives_on", "rail gauge", "calling_code", "patron_saint", "iso3166code", "cctld", "official_website", "footnote_a", "footnote_b", "footnote_c", "footnote_d", "footnote_e", "footnote_f", "footnote_g", "footnote_h", "footnote1", "footnote2", "footnote3", "footnote4", "footnote5", "footnote6", "footnote7", "footnote8", "footnotes", "navbar", "micronation", "status", "status_text", "empire", "year_end", "year_exile_start", "year_exile_end", "life_span", "year_start", "flag_size", "flag_alt", "flag_alt2", "flag_type", "coa_size", "englishmotto", "image_map_size", "image_map_alt", "image_map_caption", "image_map2_size", "image_map2_alt", "image_map2_caption", "loctext", "capital_exile", "recognized_languages", "recognized_national_languages", "recognized_regional_languages", "common_languages", "religion_year", "leader_title15", "leader_name15", "title_leader", "year_leader1", "leader1", "year_leader2", "leader2", "year_leader3", "leader3", "year_leader4", "leader4", "year_leader5", "leader5", "year_leader6", "leader6", "year_leader7", "leader7", "year_leader8", "leader8", "year_leader9", "leader9", "year_leader10", "leader10", "year_leader11", "leader11", "title_representative", "year_representative1", "representative1", "year_representative2", "representative2", "year_representative3", "representative3", "year_representative4", "representative4", "year_representative5", "representative5", "title_deputy", "year_deputy1", "deputy1", "year_deputy2", "deputy2", "year_deputy3", "deputy3", "year_deputy4", "deputy4", "year_deputy5", "deputy5", "year_deputy6", "deputy6", "type_house1", "house1", "type_house2", "house2", "established_event13", "established_date13", "established_event14", "established_date14", "established_event15", "established_date15", "event_pre", "date_pre", "event_start", "date_start", "event1", "date_event1", "event2", "date_event2", "event3", "date_event3", "event4", "date_event4", "event5", "date_event5", "event6", "date_event6", "event_end", "date_end", "event_post", "date_post", "area_ha", "area_acre", "area_land_km2", "area_land_ha", "area_land_sq_mi", "area_land_acre", "area_water_km2", "area_water_ha", "area_water_sq_mi", "area_water_acre", "stat_area1", "stat_area2", "stat_area3", "stat_area4", "stat_area5", "area_land_footnote", "area_water_footnote", "stat_year1", "ref_area1", "stat_year2", "ref_area2", "stat_year3", "ref_area3", "stat_year4", "ref_area4", "stat_year5", "ref_area5", "stat_pop1", "stat_pop2", "stat_pop3", "stat_pop4", "stat_pop5", "ref_pop1", "ref_pop2", "ref_pop3", "ref_pop4", "ref_pop5", "nummembers", "p1", "s1", "flag_p1", "image_p1", "border_p1", "flag_p2", "image_p2", "p2", "border_p2", "flag_p3", "image_p3", "p3", "border_p3", "flag_p4", "image_p4", "p4", "border_p4", "flag_p5", "image_p5", "p5", "border_p5", "flag_p6", "image_p6", "p6", "border_p6", "flag_p7", "image_p7", "p7", "border_p7", "flag_p8", "image_p8", "p8", "border_p8", "flag_p9", "image_p9", "p9", "border_p9", "flag_p10", "image_p10", "p10", "border_p10", "flag_p11", "image_p11", "p11", "border_p11", "flag_p12", "image_p12", "p12", "border_p12", "flag_p13", "image_p13", "p13", "border_p13", "flag_p14", "image_p14", "p14", "border_p14", "flag_p15", "image_p15", "p15", "border_p15", "flag_s1", "image_s1", "border_s1", "flag_s2", "image_s2", "s2", "border_s2", "flag_s3", "image_s3", "s3", "border_s3", "flag_s4", "image_s4", "s4", "border_s4", "flag_s5", "image_s5", "s5", "border_s5", "flag_s6", "image_s6", "s6", "border_s6", "flag_s7", "image_s7", "s7", "border_s7", "flag_s8", "image_s8", "s8", "border_s8", "flag_s9", "image_s9", "s9", "border_s9", "flag_s10", "image_s10", "s10", "border_s10", "flag_s11", "image_s11", "s11", "border_s11", "flag_s12", "image_s12", "s12", "border_s12", "flag_s13", "image_s13", "s13", "border_s13", "flag_s14", "image_s14", "s14", "border_s14", "flag_s15", "image_s15", "s15", "border_s15", "today", "footnotes2", "symbol_caption", "nested" ] } </templatedata> {{cob}} <includeonly>{{Sandbox other|| <!--Categories below this line, please; interwikis at Wikidata--> [[Category:Country infobox templates| ]] [[Category:Templates that add a tracking category]] }}</includeonly> fc821aaf0ce6dab1cb45342f04d77bfe226fae77 Template:Infobox nation 10 1696 3191 2023-11-11T10:38:55Z Führerredux 2 Created page with "<includeonly>{{infobox |templatestyles = Template:Infobox country/styles.css |bodyclass = ib-country vcard |aboveclass = adr |bodyclass = ib-adminunit |title = |above= {{#if:{{{full_name|}}}{{{native_name|}}}{{{name|}}} | {{#if:{{{full_name|}}} |<div class="fn org country-name">{{{full_name|}}}</div> }} {{#if:{{{native_name|}}}{{{name|}}} |<div class="ib-country-names"><!-- -->{{br separated entries |{{{na..." wikitext text/x-wiki <includeonly>{{infobox |templatestyles = Template:Infobox country/styles.css |bodyclass = ib-country vcard |aboveclass = adr |bodyclass = ib-adminunit |title = |above= {{#if:{{{full_name|}}}{{{native_name|}}}{{{name|}}} | {{#if:{{{full_name|}}} |<div class="fn org country-name">{{{full_name|}}}</div> }} {{#if:{{{native_name|}}}{{{name|}}} |<div class="ib-country-names"><!-- -->{{br separated entries |{{{native_name|}}} |{{#if:{{{name|}}} | <div class="ib-country-name-style fn org country-name">{{{name|}}}</div> }} }} </div> }} }} |subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }} | image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}} |{{infobox country/imagetable |image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}} |caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }} |image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }} }} }} |data1 = {{#if:{{{national_motto|}}}{{{motto|}}} |'''Motto:&nbsp;'''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!-- -->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }} }} |class2 = anthem |data2 = {{#if: {{{anthem|}}}|<b>{{{anthem_type|{{#if: {{{second_anthem|}}}|National anthem|Anthem}}}}}:</b> {{{anthem|}}}|}} |data3 = {{#if: {{{second_anthem|}}}|<b>{{{second_anthem_type|Royal anthem}}}:</b> {{{second_anthem|}}}|}} |data4 = {{#if: {{{motto|}}}|<b>{{{motto_type|Motto}}}</b>: {{{motto|}}}|}} |label4 = Status |data4 = {{{status|}}} |rowclass5 = mergedrow |label5 = {{{members_type|Membership}}} |data5 = {{{members|}}} |label6 = {{{membership_type|Country}}} |data6 = {{{membership|}}} |rowclass7 = mergedrow |label7 = {{{membership_type2|State}}} |data7 = {{{membership2|}}} |rowclass8 = mergedrow |label8 = {{{membership_type3|}}} |data8 = {{{membership3|}}} |label9 = {{{capital_type|Capital}}}<br>{{#ifeq:{{{capital}}}|{{{largest}}}|<div style="font-weight: normal">and largest {{{largest_type|city}}}</div>|}} |data9 = {{{capital|}}} |rowclass10 = mergedrow |label10 = Largest {{{largest_type|city}}} |data10 = {{#ifeq:{{{capital|}}}|{{{largest|}}}||{{{largest|}}}}} |label11 = {{nowrap|{{{language_type|Official language}}}}} |data11 = {{{language|}}} |rowclass12 = {{#if: {{{language|}}}|mergedrow|}} |label12 = {{nowrap|{{{languages_type|Common languages}}}}} |data12 = {{{languages|}}} |label13 = Demonyms |data13 = {{{demonyms|}}} |label14 = {{{religion_type|State religion}}} |data14 = {{{religion|}}} |label15 = {{#if:{{{government|}}}|{{{government_type|Government}}}|}} |header15 = {{#if:{{{government|}}}||{{#if:{{{leader1|}}}{{{historical_leader1|}}}|{{{government_type|Government}}}}}}} |data15 = {{{government|}}} |label16 = <div style="font-weight: normal;text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{ideology_type|State ideology}}}</div> |data16 = {{{ideology|}}} |rowclass16 = mergedrow |label17 = <div style="font-weight: normal;text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{party_type|Ruling party}}}</div> |data17 = {{{party|}}} |rowclass17 = mergedrow |rowclass18 = mergedrow |data18 = {{#if:{{{leader1|}}}|{{Infobox country/multirow|{{{title_leader1|}}} |{{{leader1|}}} |{{{title_leader2|}}} |{{{leader2|}}} |{{{title_leader3|}}} |{{{leader3|}}} |{{{title_leader4|}}} |{{{leader4|}}} |{{{title_leader5|}}} |{{{leader5|}}}|{{{title_leader6|}}} |{{{leader6|}}}|{{{title_leader7|}}} |{{{leader7|}}}|{{{title_leader8|}}} |{{{leader8|}}} }} }} |rowclass19 = mergedrow |header19 = {{{historical_title_leader|}}} |rowclass20 = mergedrow |data20 = {{#if:{{{historical_leader1|}}}|{{Infobox country/multirow|{{{historical_year1|}}} |{{{historical_leader1|}}} |{{{historical_year2|}}} |{{{historical_leader2|}}} |{{{historical_year3|}}} |{{{historical_leader3|}}} |{{{historical_year4|}}} |{{{historical_leader4|}}} |{{{historical_year5|}}} |{{{historical_leader5|}}}|{{{historical_year6|}}} |{{{historical_leader6|}}}|{{{historical_year7|}}} |{{{historical_leader7|}}}|{{{historical_year8|}}} |{{{historical_leader8|}}} }} }} |rowclass21 = mergedrow |header21 = {{{historical2_title_leader|}}} |rowclass22 = mergedrow |data22 = {{#if:{{{historical2_leader1|}}}|{{Infobox country/multirow|{{{historical2_year1|}}} |{{{historical2_leader1|}}} |{{{historical2_year2|}}} |{{{historical2_leader2|}}} |{{{historical2_year3|}}} |{{{historical2_leader3|}}} |{{{historical2_year4|}}} |{{{historical2_leader4|}}} |{{{historical2_year5|}}} |{{{historical2_leader5|}}}|{{{historical2_year6|}}} |{{{historical2_leader6|}}}|{{{historical2_year7|}}} |{{{historical2_leader7|}}}|{{{historical2_year8|}}} |{{{historical2_leader8|}}} }} }} |rowclass23 = mergedrow |header23 = {{{historical3_title_leader|}}} |rowclass24 = mergedrow |data24 = {{#if:{{{historical3_leader1|}}}|{{Infobox country/multirow|{{{historical3_year1|}}} |{{{historical3_leader1|}}} |{{{historical3_year2|}}} |{{{historical3_leader2|}}} |{{{historical3_year3|}}} |{{{historical3_leader3|}}} |{{{historical3_year4|}}} |{{{historical3_leader4|}}} |{{{historical3_year5|}}} |{{{historical3_leader5|}}}|{{{historical3_year6|}}} |{{{historical3_leader6|}}}|{{{historical3_year7|}}} |{{{historical3_leader7|}}}|{{{historical3_year8|}}} |{{{historical3_leader8|}}} }} }} |rowclass25 = mergedrow |header25 = {{{historical4_title_leader|}}} |rowclass26 = mergedrow |data26 = {{#if:{{{historical4_leader1|}}}|{{Infobox country/multirow|{{{historical4_year1|}}} |{{{historical4_leader1|}}} |{{{historical4_year2|}}} |{{{historical4_leader2|}}} |{{{historical4_year3|}}} |{{{historical4_leader3|}}} |{{{historical4_year4|}}} |{{{historical4_leader4|}}} |{{{historical4_year5|}}} |{{{historical4_leader5|}}}|{{{historical4_year6|}}} |{{{historical4_leader6|}}}|{{{historical4_year7|}}} |{{{historical4_leader7|}}}|{{{historical4_year8|}}} |{{{historical4_leader8|}}} }} }} |header26 = {{#if:{{{upper_house|}}}{{{lower_house|}}}|{{#if:{{{legislature|}}}||{{{legislature_type|Legislature}}}}}|}} |label27 = {{#if:{{{legislature|}}}|{{{legislature_type|Legislature}}}|}} |data27 = {{{legislature|}}} |rowclass28 = mergedrow |label28 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{upper_house_type|Upper house}}}</div> |data28 = {{{upper_house|}}} |rowclass29 = mergedrow |label29 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{lower_house_type|Lower house}}}</div> |data29 = {{{lower_house|}}} |label30 = Economy |data30 = {{{economy|}}} |header31 = {{#if: {{{history_year1|}}}|{{{history|History}}}|}} |rowclass32 = mergedrow |data32 = {{#if:{{{history_year1|}}}|{{Infobox country/multirow|{{{history_event1|}}} |{{{history_year1|}}} |{{{history_event2|}}} |{{{history_year2|}}} |{{{history_event3|}}} |{{{history_year3|}}} |{{{history_event4|}}} |{{{history_year4|}}} |{{{history_event5|}}} |{{{history_year5|}}}|{{{history_event6|}}} |{{{history_year6|}}}|{{{history_event7|}}} |{{{history_year7|}}}|{{{history_event8|}}} |{{{history_year8|}}} }} }} |header33 = {{#if: {{{area_year|}}}||{{#if: {{{area_total|}}}|Area|}}}} |label33 = {{#if: {{{area_year|}}}|{{#if: {{{area_total|}}}|Area|}}|}} |data33 = {{{area_year|}}} |rowclass34 = mergedrow |label34 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;Total</div> |data34 = {{#if: {{{area_total|}}}|{{{area_total|}}} km<sup>2</sup>|}} |rowclass35 = mergedrow |label35 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;Water </div> |data35 = {{#if: {{{area_water|}}}|{{{area_water|}}} km<sup>2</sup>|}} |header36 = {{#if: {{{population_estimate|}}}{{{population_census|}}}|Population|}} |rowclass37 = mergedrow |label37 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{population_estimate_year|}}} estimate</div> |data37 = {{{population_estimate|}}} |rowclass38 = mergedrow |label38 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;{{{population_census_year|}}} census</div> |data38 = {{{population_census|}}} |rowclass39 = mergedrow |label39 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;Density</div> |data39 = {{{population_density|}}} |header40 = {{#if: {{{gdp_ppp|}}}|GDP <div style="font-weight: normal;"> (PPP)</div>|}} |rowclass41 = mergedrow |label41 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;Total</div> |data41 = {{{gdp_ppp|}}} |rowclass42 = mergedrow |label42 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;Per capita</div> |data42 = {{{gdp_ppp_capita|}}} |header43 = {{#if: {{{gdp_nominal|}}}|GDP <div style="font-weight: normal;"> (nominal)</div>|}} |rowclass44 = mergedrow |label44 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;Total</div> |data44 = {{{gdp_nominal|}}} |rowclass45 = mergedrow |label45 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;Per capita</div> |data45 = {{{gdp_nominal_capita|}}} |label46 = Gini {{#if:{{{gini_year|}}}|({{{gini_year|}}})|}} |data46 = {{{gini|}}} |label47 = HDI {{#if:{{{hdi_year|}}}|({{{hdi_year|}}})|}} |data47 = {{{hdi|}}} |label48 = Currency |data48 = {{{currency|}}} {{#if:{{{currency_symbol|}}}|({{{currency_symbol|}}})}} {{#if:{{{currency_code|}}}|({{{currency_code|}}})}} |label49 = Time zone |data49 = {{{time_zone|}}} |rowclass50 = mergedrow |label50 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">•&nbsp;Summer (DST)</div> |data50 = {{{time_zone_dst|}}} |label51 = Date format |data51 = {{{date_format|}}} |label52 = Driving side |data52 = {{{driving_side|}}} |label53 = Calling code |data53 = {{{calling_code|}}} |label54 = ISO 3166 code |data54 = {{{iso_3166_code|}}} |label55 = Internet TLD |data55 = {{{internet_tld|}}} |data80 = {{#if:{{{p1|}}}{{{s1|}}} |{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}}} }} }}</includeonly><noinclude>{{documentation}}</noinclude> c306f1c3bbb78ab388e870a789e59b4da3f3a9a0 Greece 0 243 3192 2141 2023-11-11T10:51:43Z Führerredux 2 wikitext text/x-wiki {{Infobox country | native_name = Ἑλληνικὴ Δημοκρατία | conventional_long_name = Hellenic Republic | era = 1936 | government_type = [[Presidential Republic]] | event_start = Established | date_start = 25 March | year_start = 1924 | p1 = Kingdom of Greece | flag_p1 = Flag of Greece (1822-1978).svg | image_flag = File:Flag_of_Greece_(1822-1978).svg | flag_alt = Flag of the Hellenic Republic | flag_type = National flag | image_coat = Coat of arms of Greece (1924–1935).svg | coat_alt = Coat of arms of the Hellenic Republic | symbol = Coat of arms of Greece | symbol_type = Coat of arms | image_map = Hellenic_Republic(1936).png | image_map_alt = Locator map of the Hellenic Republic | image_map_caption = The Hellenic Republic in 1935 | capital = Athens | languages_type = Official language<br />{{nobold|and national language}} | leader_name2 = [[Elefthérios Kyriákou Venizélos]] | coa_size = 90 | englishmotto = Freedom or Death | title_leader = [[President of the Hellenic Republic|President]] | common_name = Greece | national_motto = Ελευθερία ή Θάνατος | national_anthem = «Ύμνος εις την Ελευθερίαν»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}} | common_languages = Greek (Katharevousa has official status, while Demotic is popular) | currency = Drachmae | religion = Eastern Orthodox | ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.32% [[Albabians]] | 9.40% [[Turks]] }} | largest_city = capital | languages = Greek | demonym = Greek, Hellene | leader1 = Pavlos Kountouriotis | year_leader1 = 1924–1926 | leader2 = Theodoros Pangalos | year_leader2 = 1926 | leader3 = Pavlos Kountouriotis | year_leader3 = 1926–1929 | leader4 = Alexandros Zaimis | year_leader4 = 1929–1936 | deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}} | deputy2 = [[Eleftherios Venizelos]] | year_deputy1 = 1924 <small>(first)</small> | year_deputy2 = 1933–1936 <small>(last)</small> | title_deputy = Prime Minister | leader_title1 = President of the Hellenic Republic | leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span> | leader_title2 = Prime Minister | legislature = Hellenic Parliament | house1 = Hellenic Senate | type_house1 = Upper house | house2 = Chamber of Deputies | type_house2 = Lower house | date_format = DD/MM/YYYY | drives_on = left | calling_code = +30 | iso3166code = GR | sovereignty_type = Establishment history | established_event1 = Independence declared {{nobold|from the [[Ottoman Empire]]}} | established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the Greek War of Independence), {{nowrap|15 January 1822}} (official declaration) | established_event2 = Recognised | established_date2 = {{nowrap|3 February 1830}} | established_event3 = Second Hellenic Republic | established_date3 = 25 March 1924 | established_event4 = {{nowrap|Current constitution}} | established_date4 = 3 June 1927 | population_estimate = 13,000,000 }} 67d382c40a0a254e8584ff6344c5c4af0e9a5e7a 3193 3192 2023-11-11T11:13:46Z Führerredux 2 wikitext text/x-wiki {{Infobox country | native_name = | conventional_long_name = Hellenic Republic | era = 1936 | government_type = [[Presidential Republic]] | event_start = Established | date_start = 25 March | year_start = 1924 | p1 = Kingdom of Greece | flag_p1 = Flag of Greece (1822-1978).svg | image_flag = File:Flag_of_Greece_(1822-1978).svg | flag_alt = Flag of the Hellenic Republic | flag_type = National flag | image_coat = Coat of arms of Greece (1924–1935).svg | coat_alt = Coat of arms of the Hellenic Republic | symbol = Coat of arms of Greece | symbol_type = Coat of arms | image_map = Hellenic_Republic(1936).png | image_map_alt = Locator map of the Hellenic Republic | image_map_caption = The Hellenic Republic in 1935 | capital = Athens | languages_type = Official language<br />{{nobold|and national language}} | leader_name2 = [[Elefthérios Kyriákou Venizélos]] | coa_size = 90 | englishmotto = Freedom or Death | title_leader = [[President of the Hellenic Republic|President]] | common_name = Greece | national_motto = Ελευθερία ή Θάνατος | national_anthem = «Ύμνος εις την Ελευθερίαν»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}} | common_languages = Greek (Katharevousa has official status, while Demotic is popular) | currency = Drachmae | religion = Eastern Orthodox | ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.32% [[Albabians]] | 9.40% [[Turks]] }} | largest_city = capital | languages = Greek | demonym = Greek, Hellene | leader1 = Pavlos Kountouriotis | year_leader1 = 1924–1926 | leader2 = Theodoros Pangalos | year_leader2 = 1926 | leader3 = Pavlos Kountouriotis | year_leader3 = 1926–1929 | leader4 = Alexandros Zaimis | year_leader4 = 1929–1936 | deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}} | deputy2 = [[Eleftherios Venizelos]] | year_deputy1 = 1924 <small>(first)</small> | year_deputy2 = 1933–1936 <small>(last)</small> | title_deputy = Prime Minister | leader_title1 = President of the Hellenic Republic | leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span> | leader_title2 = Prime Minister | legislature = Hellenic Parliament | house1 = Hellenic Senate | type_house1 = Upper house | house2 = Chamber of Deputies | type_house2 = Lower house | date_format = DD/MM/YYYY | drives_on = left | calling_code = +30 | iso3166code = GR | sovereignty_type = Establishment history | established_event1 = Independence declared {{nobold|from the [[Ottoman Empire]]}} | established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the Greek War of Independence), {{nowrap|15 January 1822}} (official declaration) | established_event2 = Recognised | established_date2 = {{nowrap|3 February 1830}} | established_event3 = Second Hellenic Republic | established_date3 = 25 March 1924 | established_event4 = {{nowrap|Current constitution}} | established_date4 = 3 June 1927 | population_estimate = 13,000,000 }} The Second Hellenic Republic, established in 1924, emerged from the aftermath of the Balkan Wars and World War I, marked by territorial expansion and political upheavals. Led by Ethnarch Elefthérios Venizélos, the Republic faced internal power struggles, economic challenges, and the impending threat of conflict. This article delves into the key events and circumstances that shaped the political landscape of Greece during this period. == History == === The Formation of the Second Hellenic Republic === Following the victorious outcome of the 1912-1913 Balkan Wars, Greece experienced territorial growth but found itself navigating a complex international situation. The assassination of Archduke Franz Ferdinand in 1914 triggered a chain of events that led to a divergence in Greece's stance, with Venizélos advocating for Entente support while the monarchy leaned towards [[Germany]]. This disagreement culminated in a power struggle between Liberals led by Venizélos and Royalists supporting the monarchy. Unconstitutional actions, including the dismissal of Venizélos by the King, set the stage for the establishment of the State of National Defense in Thessaloniki, aligning Greece with the Entente. Venizélos, rejecting the monarchy, declared the establishment of the Second Hellenic Republic, leading to a divided nation for nine months until an Allied ultimatum forced the Royal Family into exile. === The Great War and the Greco-Turkish War === Under Venizélos' leadership, Greece actively participated in World War I, securing victory alongside the Entente. The subsequent Asia Minor Campaign, aimed at the Partition of the Ottoman Empire, further shaped the Republic's destiny. The Treaty of Sèvres ratified the outcomes, but economic challenges loomed large. The years following the war saw Venizélos' Liberal Party dominating elections, implementing reforms, and purging remaining royalist sentiments. Despite these political successes, economic woes persisted, particularly in Smyrna, which lacked access to deep Anatolian raw materials and faced mounting debts. Unrest simmered within the population as the Hellenic Republic entered 1936. === The Rise of Valkism in Greece === As the threat of war loomed, the Hellenic Republic faced new challenges. Anti-Venizelist sentiment, a persistent issue, threatened political stability. The specter of conflict with the Ottomans, seeking the return of lost territories, added to the Republic's vulnerabilities. Additionally, the rise of the [[Golden Dawn]] [[Valkism|Valkists]], fueled by anti-Turkish sentiments, presented a formidable force. === Prospects for the Future === As the Second Hellenic Republic approaches the 1936 elections, uncertainties abide. The nation stands at a crossroads, grappling with economic hardships, political divisions, and the looming threat of external conflicts. The anti-Venizelist sentiment and the rise of Valkism cast a shadow over Greece's future. Only time will reveal whether the nation of the Hellenes ccan withstand the challenges that lay ahead. Amidst political tensions and potential military conflicts, the economic crisis stands out as a paramount concern. Ignoring the economic challenges may have dire consequences for the Greece. === The International Straits Commision === {{main|International Straits Commision}} Established in the aftermath of the [[Ottoman Empire]]'s defeat in the Great War, the ISC's primary objective is to ensure free access to the Bosporus for all vessels and maintain peace in the region. Despite facing challenges, the ISC has demonstrated stability, garnering international support and providing citizens with various freedoms. Over the years, the ISC has transformed into more than just a strategic waterway. The commission's support for freedom of religion has led to an increase in membership for the Patriarchate of Constantinople. This has resulted in the straits taking on characteristics akin to a new state, complete with its own unique culture. However, this evolution has also given rise to a significant portion of the population advocating for the abolition of the ISC and the declaration of an independent state. The ISC's stability faces external threats from expansionist ambitions of Greece and the revanchism of the Turks. Both Athens and Ankara harbor dissatisfaction with the outcomes of the Great War, placing the ISC in a precarious position. To ensure the survival of the free straits, decisive action is imperative, considering the looming threats and geopolitical challenges. 5fffcb1d548212939518077b1fffc42399cdf411 3241 3193 2023-11-11T12:48:27Z Führerredux 2 wikitext text/x-wiki {{Infobox country | native_name = | conventional_long_name = Hellenic Republic | era = 1936 | government_type = [[Presidential Republic]] | event_start = Established | date_start = 25 March | year_start = 1924 | p1 = Kingdom of Greece | flag_p1 = Flag of Greece (1822-1978).svg | image_flag = File:Flag_of_Greece_(1822-1978).svg | flag_alt = Flag of the Hellenic Republic | flag_type = National flag | image_coat = Coat of arms of Greece (1924–1935).svg | coat_alt = Coat of arms of the Hellenic Republic | symbol = Coat of arms of Greece | symbol_type = Coat of arms | image_map = Hellenic_Republic(1936).png | image_map_alt = Locator map of the Hellenic Republic | image_map_caption = The Hellenic Republic in 1935 | capital = Athens | languages_type = Official language<br />{{nobold|and national language}} | leader_name2 = [[Elefthérios Kyriákou Venizélos]] | coa_size = 90 | englishmotto = Freedom or Death | title_leader = [[President of the Hellenic Republic|President]] | common_name = Greece | national_motto = Ελευθερία ή Θάνατος | national_anthem = «Ύμνος εις την Ελευθερίαν»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}} | common_languages = Greek (Katharevousa has official status, while Demotic is popular) | currency = Drachmae | religion = Eastern Orthodox | ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.32% [[Albabians]] | 9.40% [[Turks]] }} | largest_city = capital | languages = Greek | demonym = Greek, Hellene | leader1 = Pavlos Kountouriotis | year_leader1 = 1924–1926 | leader2 = Theodoros Pangalos | year_leader2 = 1926 | leader3 = Pavlos Kountouriotis | year_leader3 = 1926–1929 | leader4 = Alexandros Zaimis | year_leader4 = 1929–1936 | deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}} | deputy2 = [[Eleftherios Venizelos]] | year_deputy1 = 1924 <small>(first)</small> | year_deputy2 = 1933–1936 <small>(last)</small> | title_deputy = Prime Minister | leader_title1 = President of the Hellenic Republic | leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span> | leader_title2 = Prime Minister | legislature = Hellenic Parliament | house1 = Hellenic Senate | type_house1 = Upper house | house2 = Chamber of Deputies | type_house2 = Lower house | date_format = DD/MM/YYYY | drives_on = left | calling_code = +30 | iso3166code = GR | sovereignty_type = Establishment history | established_event1 = Independence declared {{nobold|from the [[Ottoman Empire]]}} | established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the Greek War of Independence), {{nowrap|15 January 1822}} (official declaration) | established_event2 = Recognised | established_date2 = {{nowrap|3 February 1830}} | established_event3 = Second Hellenic Republic | established_date3 = 25 March 1924 | established_event4 = {{nowrap|Current constitution}} | established_date4 = 3 June 1927 | population_estimate = 13,000,000 }} The Second Hellenic Republic, established in 1924, emerged from the aftermath of the Balkan Wars and World War I, marked by territorial expansion and political upheavals. Led by Ethnarch Elefthérios Venizélos, the Republic faced internal power struggles, economic challenges, and the impending threat of conflict. This article delves into the key events and circumstances that shaped the political landscape of Greece during this period. == History == === The Formation of the Second Hellenic Republic === Following the victorious outcome of the 1912-1913 Balkan Wars, Greece experienced territorial growth but found itself navigating a complex international situation. The assassination of Archduke Franz Ferdinand in 1914 triggered a chain of events that led to a divergence in Greece's stance, with Venizélos advocating for Entente support while the monarchy leaned towards [[Germany]]. This disagreement culminated in a power struggle between Liberals led by Venizélos and Royalists supporting the monarchy. Unconstitutional actions, including the dismissal of Venizélos by the King, set the stage for the establishment of the State of National Defense in Thessaloniki, aligning Greece with the Entente. Venizélos, rejecting the monarchy, declared the establishment of the Second Hellenic Republic, leading to a divided nation for nine months until an Allied ultimatum forced the Royal Family into exile. === The Great War and the Greco-Turkish War === Under Venizélos' leadership, Greece actively participated in World War I, securing victory alongside the Entente. The subsequent Asia Minor Campaign, aimed at the Partition of the Ottoman Empire, further shaped the Republic's destiny. The Treaty of Sèvres ratified the outcomes, but economic challenges loomed large. The years following the war saw Venizélos' Liberal Party dominating elections, implementing reforms, and purging remaining royalist sentiments. Despite these political successes, economic woes persisted, particularly in Smyrna, which lacked access to deep Anatolian raw materials and faced mounting debts. Unrest simmered within the population as the Hellenic Republic entered 1936. === The Rise of Valkism in Greece === As the threat of war loomed, the Hellenic Republic faced new challenges. Anti-Venizelist sentiment, a persistent issue, threatened political stability. The specter of conflict with the Ottomans, seeking the return of lost territories, added to the Republic's vulnerabilities. Additionally, the rise of the [[Golden Dawn]] [[Valkism|Valkists]], fueled by anti-Turkish sentiments, presented a formidable force. === Prospects for the Future === As the Second Hellenic Republic approaches the 1936 elections, uncertainties abide. The nation stands at a crossroads, grappling with economic hardships, political divisions, and the looming threat of external conflicts. The anti-Venizelist sentiment and the rise of Valkism cast a shadow over Greece's future. Only time will reveal whether the nation of the Hellenes ccan withstand the challenges that lay ahead. Amidst political tensions and potential military conflicts, the economic crisis stands out as a paramount concern. Ignoring the economic challenges may have dire consequences for the Greece. === The International Straits Commision === {{main|International Straits Commision}} Established in the aftermath of the [[Ottoman Empire]]'s defeat in the Great War, the ISC's primary objective is to ensure free access to the Bosporus for all vessels and maintain peace in the region. Despite facing challenges, the ISC has demonstrated stability, garnering international support and providing citizens with various freedoms. Over the years, the ISC has transformed into more than just a strategic waterway. The commission's support for freedom of religion has led to an increase in membership for the Patriarchate of Constantinople. This has resulted in the straits taking on characteristics akin to a new state, complete with its own unique culture. However, this evolution has also given rise to a significant portion of the population advocating for the abolition of the ISC and the declaration of an independent state. The ISC's stability faces external threats from expansionist ambitions of Greece and the revanchism of the Turks. Both Athens and Ankara harbor dissatisfaction with the outcomes of the Great War, placing the ISC in a precarious position. To ensure the survival of the free straits, decisive action is imperative, considering the looming threats and geopolitical challenges. [[Category:Important_Minors]] c7934c21f112e458eb864c57dcfb25de3fe65ba6 File:Alexandros Zaimis.png 6 1697 3194 2023-11-11T11:16:41Z Führerredux 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Eleftherios Kyriakou Venizelos.png 6 1698 3195 2023-11-11T11:17:11Z Führerredux 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Aléxandros Zaímis 0 1699 3196 2023-11-11T11:20:04Z Führerredux 2 Created page with "{{Infobox officeholder | name = Aléxandros Zaímis | office = President of the Hellenic Republic | order = 4th | native_name = Αλέξανδρος Ζαίμης | native_name_lang = el | image = Alexandros Zaimis.png | alt = Portrait of Alexandros Zaimis }} He was born in Athens and was the son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was..." wikitext text/x-wiki {{Infobox officeholder | name = Aléxandros Zaímis | office = President of the Hellenic Republic | order = 4th | native_name = Αλέξανδρος Ζαίμης | native_name_lang = el | image = Alexandros Zaimis.png | alt = Portrait of Alexandros Zaimis }} He was born in Athens and was the son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was Asimakis Zaimis. On his father's side, he was the grandson of Andreas Zaimis, another former Prime Minister of Greece, and related to the great Kalavrytan family with notable participation in the Greek War of Independence from 1821. From his mother's side he was a descendant of an important Fanariote family of the Mourozidon. His family lived in Kerpini, Kalavryta in the Achaia prefecture. He studied law at the University of Athens and at the University of Heidelberg. He also attended the universities of Leipzig, Paris and Berlin.\nIn 1929 he was elected senator and then president of the Senate. With the resignation of Koundouriotis on December 9, 1929, Eleftherios Venizelos nominated Alexandros Zaimis as the next President of the Republic. Papanastasiou and Argyropoulos opposed Zaimi's candidacy. Venizelos justified his choice for the person of Zaimis that he came from a historical family. He was also not always democratic, but he was a moderate conservative. During the voting in the joint session of the two Legislatures held at 11 in the morning of December 14, 1929, 101 senators voted out of a total of 120 and 226 deputies out of a total of 250, Zaimis was elected with 257 votes. 15f337bb7048321aa94dfbabc0a5c582f5cdf66a 3197 3196 2023-11-11T11:27:31Z Führerredux 2 wikitext text/x-wiki {{Infobox officeholder | name = Aléxandros Zaímis | office = President of the Hellenic Republic | order = 4th | native_name = {{Nobold|{{Lang|el|Αλέξανδρος Ζαΐμης}}}} | native_name_lang = el | image = Alexandros Zaimis.png | alt = Portrait of Alexandros Zaimis | predecessor = [[Pavlos Kountouriotis]] | primeminister = [[Eleftherios Venizelos]]<br>[[Alexandros Papanastasiou]] | term_start = 10 December 1929 | office2 = Prime Minister of Greece |term_start2 = 4 December 1926 |term_end2 = 4 July 1928 |president2 = Pavlos Kountouriotis |predecessor2 = [[Georgios Kondilis]] |successor2 = [[Eleftherios Venizelos]] |term_start3 = 5 February 1917 |term_end3 = 27 June 1917 |monarch3 = [[Constantine I of Greece|Constantine I]]<br>[[Alexander of Greece|Alexander]] |predecessor3 = [[Spyridon Lambros]] |successor3 = [[Eleftherios Venizelos]] |term_start4 = 22 June 1916 |term_end4 = 16 September 1916 |monarch4 = Constantine I |predecessor4 = [[Stephanos Skouloudis]] |successor4 = [[Nikolaos Kalogeropoulos]] |term_start5 = 7 October 1915 |term_end5 = 7 November 1915 |monarch5 = Constantine I |predecessor5 = [[Eleftherios Venizelos]] |successor5 = [[Stephanos Skouloudis]] |term_start6 = 25 November 1901 |term_end6 = 6 December 1902 |monarch6 = [[George I of Greece|George I]] |predecessor6 = [[Georgios Theotokis]] |successor6 = [[Theodoros Deligiannis]] |term_start7 = 3 October 1897 |term_end7 = 14 April 1899 |monarch7 = [[George I of Greece|George I]] |predecessor7 = [[Dimitrios Rallis]] |successor7 = [[Georgios Theotokis]] |office8 = [[High Commissioner]] of [[Cretan State|Crete]] |term_start8 = 18 September 1906 |term_end8 = 24 September 1908 |monarch8 = [[George I of Greece|George I]] |predecessor8 = [[Prince George of Greece]] |successor8 = ([[Enosis|Unification with Greece]] unilaterally declared) | party = [[Nationalist Party (Greece)|Nationalist Party]]<ref>[[Papyrus Larousse Britannica]], tome 25, p. 298, 299</ref><br />{{small|(1887–1902)}}<br />[[Third Party (Greece)|Third Party]] {{small|(1902–1924)}}<br />[[Independent politician|Independent]] {{small|(1924–1935)}} | successor2 = [[Eleftherios Venizelos]] | birth_date = {{birth date|1855|11|9|df=y}}{{Greece Old Style dating}} | birth_place = Athens, Kingdom of Greece | residence = [[Kerpini]], [[Kalavryta]], [[Achaea|Achaia]] prefecture, [[Peloponnese]], [[Greece]] | occupation = Politician }} He was born in Athens and was the son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was Asimakis Zaimis. On his father's side, he was the grandson of Andreas Zaimis, another former Prime Minister of Greece, and related to the great Kalavrytan family with notable participation in the Greek War of Independence from 1821. From his mother's side he was a descendant of an important Fanariote family of the Mourozidon. His family lived in Kerpini, Kalavryta in the Achaia prefecture. He studied law at the University of Athens and at the University of Heidelberg. He also attended the universities of Leipzig, Paris and Berlin.\nIn 1929 he was elected senator and then president of the Senate. With the resignation of Koundouriotis on December 9, 1929, Eleftherios Venizelos nominated Alexandros Zaimis as the next President of the Republic. Papanastasiou and Argyropoulos opposed Zaimi's candidacy. Venizelos justified his choice for the person of Zaimis that he came from a historical family. He was also not always democratic, but he was a moderate conservative. During the voting in the joint session of the two Legislatures held at 11 in the morning of December 14, 1929, 101 senators voted out of a total of 120 and 226 deputies out of a total of 250, Zaimis was elected with 257 votes. 4a730544da88a0747bff53e75cf4c2fad0926a9b 3198 3197 2023-11-11T11:32:52Z Führerredux 2 wikitext text/x-wiki {{Infobox officeholder | name = Aléxandros Zaímis | office = President of the Hellenic Republic | order = 4th | native_name = {{Nobold|{{Lang|el|Αλέξανδρος Ζαΐμης}}}} | native_name_lang = el | image = Alexandros Zaimis.png | alt = Portrait of Alexandros Zaimis | predecessor = Pavlos Kountouriotis | primeminister = [[Eleftherios Venizelos]]<br>[[Alexandros Papanastasiou]] | term_start = 10 December 1929 | office2 = Prime Minister of Greece |term_start2 = 4 December 1926 |term_end2 = 4 July 1928 |president2 = Pavlos Kountouriotis |predecessor2 = Georgios Kondylis |successor2 = [[Eleftherios Venizelos]] |term_start3 = 5 February 1917 |term_end3 = 27 June 1917 |monarch3 = Constantine I<br>Alexander |predecessor3 = Spyridon Lambros |successor3 = [[Eleftherios Venizelos]] |term_start4 = 22 June 1916 |term_end4 = 16 September 1916 |monarch4 = Constantine I |predecessor4 = Stephanos Skouloudis |successor4 = Nikolaos Kalogeropoulos |term_start5 = 7 October 1915 |term_end5 = 7 November 1915 |monarch5 = Constantine I |predecessor5 = [[Eleftherios Venizelos]] |successor5 = Stephanos Skouloudis |term_start6 = 25 November 1901 |term_end6 = 6 December 1902 |monarch6 = George I |predecessor6 = Georgios Theotokis |successor6 = Theodoros Deligiannis |term_start7 = 3 October 1897 |term_end7 = 14 April 1899 |monarch7 = George |predecessor7 = [[Dimitrios Rallis]] |successor7 = Georgios Theotokis |office8 = High Commissioner of Crete |term_start8 = 18 September 1906 |term_end8 = 24 September 1908 |monarch8 = George I |predecessor8 = Prince George of Greece |successor8 = (Unification with Greece unilaterally declared) | party = [[Nationalist Party (Greece)|Nationalist Party]]<ref>Papyrus Larousse Britannica, tome 25, p. 298, 299</ref><br />{{small|(1887–1902)}}<br />[[Third Party (Greece)|Third Party]] {{small|(1902–1924)}}<br />[[Independent politician|Independent]] {{small|(1924–1935)}} | successor2 = [[Eleftherios Venizelos]] | birth_date = {{birth date|1855|11|9|df=y}}{{Greece Old Style dating}} | birth_place = Athens, Kingdom of Greece | residence = Kerpini, Kalavryta, Achaia prefecture, Peloponnese, [[Greece]] | occupation = Politician }} '''{{PAGENAME}}''' was born in Athens and was the son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was Asimakis Zaimis. On his father's side, he was the grandson of Andreas Zaimis, another former Prime Minister of Greece, and related to the great Kalavrytan family with notable participation in the Greek War of Independence from 1821. From his mother's side he was a descendant of an important Fanariote family of the Mourozidon. His family lived in Kerpini, Kalavryta in the Achaia prefecture. He studied law at the University of Athens and at the University of Heidelberg. He also attended the universities of Leipzig, Paris and Berlin. In 1929 he was elected senator and then president of the Senate. With the resignation of Koundouriotis on December 9, 1929, [[Eleftherios Venizelos]] nominated Alexandros Zaimis as the next President of the Republic. Papanastasiou and Argyropoulos opposed Zaimi's candidacy. Venizelos justified his choice for the person of Zaimis that he came from a historical family. He was also not always democratic, but he was a moderate conservative. During the voting in the joint session of the two Legislatures held at 11 in the morning of December 14, 1929, 101 senators voted out of a total of 120 and 226 deputies out of a total of 250, Zaimis was elected with 257 votes. 4d330785e199d1014a752ef9beb0d28d90a20320 3207 3198 2023-11-11T11:51:10Z Führerredux 2 wikitext text/x-wiki {{Infobox officeholder | name = Aléxandros Zaímis | office = President of the Hellenic Republic | order = 4th | native_name = {{Nobold|{{Lang|el|Αλέξανδρος Ζαΐμης}}}} | native_name_lang = el | image = Alexandros Zaimis.png | alt = Portrait of Alexandros Zaimis | predecessor = Pavlos Kountouriotis | primeminister = [[Eleftherios Venizelos]]<br>[[Alexandros Papanastasiou]] | term_start = 10 December 1929 | office2 = Prime Minister of Greece | term_start2 = 4 December 1926 | term_end2 = 4 July 1928 | president2 = Pavlos Kountouriotis | predecessor2 = Georgios Kondylis | successor2 = [[Eleftherios Venizelos]] | term_start3 = 5 February 1917 | term_end3 = 27 June 1917 | monarch3 = Constantine I<br>Alexander | predecessor3 = Spyridon Lambros | successor3 = [[Eleftherios Venizelos]] | term_start4 = 22 June 1916 | term_end4 = 16 September 1916 | monarch4 = Constantine I | predecessor4 = Stephanos Skouloudis | successor4 = Nikolaos Kalogeropoulos | term_start5 = 7 October 1915 | term_end5 = 7 November 1915 | monarch5 = Constantine I | predecessor5 = [[Eleftherios Venizelos]] | successor5 = Stephanos Skouloudis | term_start6 = 25 November 1901 | term_end6 = 6 December 1902 | monarch6 = George I | predecessor6 = Georgios Theotokis | successor6 = Theodoros Deligiannis | term_start7 = 3 October 1897 | term_end7 = 14 April 1899 | monarch7 = George | predecessor7 = [[Dimitrios Rallis]] | successor7 = Georgios Theotokis | office8 = High Commissioner of Crete | term_start8 = 18 September 1906 | term_end8 = 24 September 1908 | monarch8 = George I | predecessor8 = Prince George of Greece | successor8 = (Unification with Greece unilaterally declared) | party = [[Nationalist Party (Greece)|Nationalist Party]]<ref>Papyrus Larousse Britannica, tome 25, p. 298, 299</ref><br />{{small|(1887–1902)}}<br />[[Third Party (Greece)|Third Party]] {{small|(1902–1924)}}<br />[[Independent politician|Independent]] {{small|(1924–1935)}} | birth_date = {{birth date|1855|11|9|df=y}}{{Greece Old Style dating}} | birth_place = Athens, Kingdom of Greece | residence = Kerpini, Kalavryta, Achaia prefecture, Peloponnese, [[Greece]] | occupation = Politician | parents = Thrasyvoulos Zaimis<br>Eleni Mourouzi | relations = Asimakis Zaimis (Brother) }} '''Alexandros Zaimis''' (Greek: Αλέξανδρος Ζαΐμης; 9 November 1855 – 15 September 1936) was a Greek politician who currently serves as Greece's Prime Minister, and has previously served as Minister of the Interior, Minister of Justice, and High Commissioner of Crete. He served as Prime Minister six times. Although he was a leader of the monarchist faction, Zaimis is the fourth and President of Greece. == Early life and family == Zaimis was born in Athens, a son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was Asimakis Zaimis. On his father's side he was the grandson of Andreas Zaimis, another former Prime Minister of Greece, and related to the great Kalavrytan family with notable participation in the Greek War of Independence from 1821. From his mother's side he was a descendant of an important Fanariote family of the Mourozidon. His family lived in Kerpini, Kalavryta in the Achaia prefecture. He studied law at the University of Athens and at the University of Heidelberg. He also attended the universities of Leipzig, Paris and Berlin. == Political Career == Alexandros became involved in politics after the death of his father who was the elected member of parliament for Kalavryta. He became a Member of Parliament in 1885. He served as Minister of the Interior and Justice Minister in Theodoros Deligiannis' government (1890–92) and Speaker of the Hellenic Parliament (1895-97). He became Prime Minister for the first time in 1897. ==== Appointement as High Commisioner ==== In 1906, he was appointed as High Commissioner of Crete and presided over a critical period of the island's history up to the ''de facto'' union of Crete with Greece in 1908. ==== Re-election as Prime Minister ==== Alexandros Zaimis was re-elected as Prime Minister a further five times. He was appointed Prime Minister under King Constantine I to succeed Venizelos in October 1915, but resigned a month later when his government failed to receive a vote of confidence. In 1917, Zaimis served again as Prime Minister under King Constantine I, while Eleftherios Venizelos led a rival government controlling northern Greece. Under Entente pressure, he resigned in favor of Venizelos in June of the same year. During World War I, he was generally supposed to favor neutrality for Greece, but to be personally in favor of the Allies. A moderate conservative, he served again as Prime Minister in the Hellenic Republic, from 1926 to 1928, in a coalition government of Venizelist and moderate conservatives. Zaimis was elected the fourth President of the Hellenic Republic in 1929. He was reelected in 1933. ==References== {{Reflist}} ==Sources== * {{cite book| last=Svolopoulos | first=Konstantinos | chapter= Η Περίοδος της Αυτονομίας ("The Period of Autonomy") | pages=459–492 |editor-first=Nikolaos M. |editor-last=Panagiotakis | title=Crete, History and Civilization| volume=II | publisher=Vikelea Library, Association of Regional Associations of Regional Municipalities |year= 1988|language=Greek}} * {{Cite Americana|wstitle=Zaimis, Alexander}} 71227422ee1179e781068338e90ae9a7975e6c95 3226 3207 2023-11-11T11:54:56Z Führerredux 2 wikitext text/x-wiki {{Infobox officeholder | name = Aléxandros Zaímis | office = President of the Hellenic Republic | order = 4th | native_name = {{Nobold|{{Lang|el|Αλέξανδρος Ζαΐμης}}}} | native_name_lang = el | image = Alexandros Zaimis.png | alt = Portrait of Alexandros Zaimis | predecessor = Pavlos Kountouriotis | primeminister = [[Eleftherios Venizelos]]<br>[[Alexandros Papanastasiou]] | term_start = 10 December 1929 | office2 = Prime Minister of Greece | term_start2 = 4 December 1926 | term_end2 = 4 July 1928 | president2 = Pavlos Kountouriotis | predecessor2 = Georgios Kondylis | successor2 = [[Eleftherios Venizelos]] | term_start3 = 5 February 1917 | term_end3 = 27 June 1917 | monarch3 = Constantine I<br>Alexander | predecessor3 = Spyridon Lambros | successor3 = [[Eleftherios Venizelos]] | term_start4 = 22 June 1916 | term_end4 = 16 September 1916 | monarch4 = Constantine I | predecessor4 = Stephanos Skouloudis | successor4 = Nikolaos Kalogeropoulos | term_start5 = 7 October 1915 | term_end5 = 7 November 1915 | monarch5 = Constantine I | predecessor5 = [[Eleftherios Venizelos]] | successor5 = Stephanos Skouloudis | term_start6 = 25 November 1901 | term_end6 = 6 December 1902 | monarch6 = George I | predecessor6 = Georgios Theotokis | successor6 = Theodoros Deligiannis | term_start7 = 3 October 1897 | term_end7 = 14 April 1899 | monarch7 = George | predecessor7 = [[Dimitrios Rallis]] | successor7 = Georgios Theotokis | office8 = High Commissioner of Crete | term_start8 = 18 September 1906 | term_end8 = 24 September 1908 | monarch8 = George I | predecessor8 = Prince George of Greece | successor8 = (Unification with Greece unilaterally declared) | party = [[Nationalist Party (Greece)|Nationalist Party]]<ref>Papyrus Larousse Britannica, tome 25, p. 298, 299</ref><br />{{small|(1887–1902)}}<br />[[Third Party (Greece)|Third Party]] {{small|(1902–1924)}}<br />[[Independent politician|Independent]] {{small|(1924–1935)}} | birth_date = {{birth date|1855|11|9|df=y}}{{Greece Old Style dating}} | birth_place = Athens, Kingdom of Greece | residence = Kerpini, Kalavryta, Achaia prefecture, Peloponnese, [[Greece]] | occupation = Politician | parents = Thrasyvoulos Zaimis<br>Eleni Mourouzi | relations = Asimakis Zaimis (Brother) }} '''Alexandros Zaimis''' (Greek: Αλέξανδρος Ζαΐμης; 9 November 1855 – 15 September 1936) was a Greek politician who currently serves as Greece's Prime Minister, and has previously served as Minister of the Interior, Minister of Justice, and High Commissioner of Crete. He served as Prime Minister six times. Although he was a leader of the monarchist faction, Zaimis is the fourth and President of Greece. == Early life and family == Zaimis was born in Athens, a son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was Asimakis Zaimis. On his father's side he was the grandson of Andreas Zaimis, another former Prime Minister of Greece, and related to the great Kalavrytan family with notable participation in the Greek War of Independence from 1821. From his mother's side he was a descendant of an important Fanariote family of the Mourozidon. His family lived in Kerpini, Kalavryta in the Achaia prefecture. He studied law at the University of Athens and at the University of Heidelberg. He also attended the universities of Leipzig, Paris and Berlin. == Political Career == Alexandros became involved in politics after the death of his father who was the elected member of parliament for Kalavryta. He became a Member of Parliament in 1885. He served as Minister of the Interior and Justice Minister in Theodoros Deligiannis' government (1890–92) and Speaker of the Hellenic Parliament (1895-97). He became Prime Minister for the first time in 1897. ==== Appointement as High Commisioner ==== In 1906, he was appointed as High Commissioner of Crete and presided over a critical period of the island's history up to the ''de facto'' union of Crete with Greece in 1908. ==== Re-election as Prime Minister ==== Alexandros Zaimis was re-elected as Prime Minister a further five times. He was appointed Prime Minister under King Constantine I to succeed Venizelos in October 1915, but resigned a month later when his government failed to receive a vote of confidence. In 1917, Zaimis served again as Prime Minister under King Constantine I, while Eleftherios Venizelos led a rival government controlling northern Greece. Under Entente pressure, he resigned in favor of Venizelos in June of the same year. During World War I, he was generally supposed to favor neutrality for Greece, but to be personally in favor of the Allies. A moderate conservative, he served again as Prime Minister in the Hellenic Republic, from 1926 to 1928, in a coalition government of Venizelist and moderate conservatives. Zaimis was elected the fourth President of the Hellenic Republic in 1929. He was reelected in 1933. ==References== {{Reflist}} ==Sources== * {{cite book| last=Svolopoulos | first=Konstantinos | chapter= Η Περίοδος της Αυτονομίας ("The Period of Autonomy") | pages=459–492 |editor-first=Nikolaos M. |editor-last=Panagiotakis | title=Crete, History and Civilization| volume=II | publisher=Vikelea Library, Association of Regional Associations of Regional Municipalities |year= 1988|language=Greek}} * {{Cite Americana|wstitle=Zaimis, Alexander}} * [https://en.wikipedia.org/w/index.php?title=Alexandros_Zaimis Wikipedia. "Alexandros Zaimis"] 9ca89e4c83be573aa00080a49305b83b5141e9ef Template:Cite Americana 10 1700 3200 3199 2023-11-11T11:50:01Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_Americana]] wikitext text/x-wiki <!-- optional icon - included by default -->{{#if:{{{noicon|}}}||{{#if:{{{wstitle|}}}||[[File:PD-icon.svg|12px|class=noviewer|alt=public domain|link=]]&nbsp;}}}}<!-- optional verbatim message - not included by default -->{{#if:{{{vb|}}}|{{#if: {{{inline|}}}|One or more of the preceding sentences|This article}} incorporates text from a publication now in the [[public domain]]:&nbsp;|}}<!--no white space -->{{#invoke:template wrapper|{{#if:{{{_debug|}}}|list|wrap}}|_template=cite encyclopedia |_exclude=display, inline, no-icon, noicon, short, wstitle, vb, _debug |_reuse=title <!-- these are reused --> <!-- set defaults for some parameters--> |year={{{year|1920}}} |editor-first={{{editor-first|{{#if:{{{short|}}}| |George Edwin}}}}} |editor-last={{{editor-last|{{#if:{{{short|}}}| |Rines}}}}} |encyclopedia=[[Encyclopedia Americana]] |title={{#if:{{{title|}}}|{{{title}}}|{{#if:{{{wstitle|}}}|{{cite wikisource/make link |link=The Encyclopedia Americana ({{{year|1920}}})/{{{wstitle|}}} |anchor= |label={{{display|{{{wstitle|}}}}}} |noicon={{{no-icon|{{{noicon|}}}}}} }}}}}} }}<includeonly><!-- -->{{#ifeq: {{NAMESPACEE}} |<!--is not set--> |<!--Set: sort out the parameters--> {{#if: {{{wstitle|}}} |[[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with a Wikisource reference]] |<!--else--> {{#if: {{{title|}}} | [[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana without a Wikisource reference]] |<!--else--> {{#if: {{{1|}}} | [[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with an unnamed parameter]] |<!--else--> [[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with no wstitle or title parameter]] }} }} }} }}</includeonly><noinclude> {{documentation}} </noinclude> ed5c9ece372ad2d5f69121e72f392dbb30307c17 Template:Cite encyclopedia 10 1701 3202 3201 2023-11-11T11:50:12Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_encyclopedia]] wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=encyclopaedia }}</includeonly><noinclude> {{documentation}} [[Category:Lua-based templates]] </noinclude> a5fbaa0493d06b11ef4dd711383f9fd5174a4238 Template:Cite wikisource/make link 10 1702 3204 3203 2023-11-11T11:50:16Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_wikisource/make_link]] wikitext text/x-wiki {{#if:{{{noicon|}}} |[[:s:{{#if:{{{language|}}}|{{{language}}}:}}{{#if:{{{anchor|}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}#{{{anchor}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}}}|{{{label|{{{link|}}}}}}]] |[[s:{{#if:{{{language|}}}|{{{language}}}:}}{{#if:{{{anchor|}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}#{{{anchor}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}}}|{{{label|{{{link|}}}}}}]]}}<noinclude> {{documentation}} </noinclude> 8811d0350c08f66930c6b4d5ea7dc16afa99541c Template:Cite Americana/doc 10 1703 3206 3205 2023-11-11T11:50:22Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cite_Americana/doc]] wikitext text/x-wiki {{Documentation subpage}} === Purpose === This template facilitates the citation of articles from editions of ''[[Encyclopedia Americana]]'' that are in the [[public domain]] using {{tl|cite encyclopedia}}. The template can also be used to cite articles from editions that are not in the public domain. In these cases, the <code>noicon</code> parameter should be used to suppress the icon. === Usage === <code><nowiki>{{Cite Americana|wstitle=''name of the Americana article here''}}</nowiki></code> or with a specification of additional options: <pre><nowiki>{{</nowiki>Cite Americana</pre> |noicon=''1'' — suppress the leading icon |inline=''1'' — changes the prescript and should be used when this template is used as an inline citation |short=''1'' — suppresses some of the fields such as editor's name |ref=''harv'' — can be overridden (if you need to ask you do not need to change it) |wstitle=''Americana article'' — if the article is available on Wikisource |display=''alternative name'' — displayed inplace of the wstitle name |title=''Americana article'' — if the article is not available on Wikisource |url= — will not be set unless the parameter ''title='' is set If not set, set in the template Cite Americana to default values |encyclopedia= — "''Encyclopedia Americana''" |editor-first= — defaults to "''George Edwin''" |editor-last= — defaults to "''Rines''" |{encyclopedia= |year — defaults to 1920 If set pass in other standard parameters: |first= |first1= |first2= |last= |last1= |last2= |author= |author1= |author2= |authors= |authorlink= |coauthors= |volume= |page= |pages= |separator= |postscript= <pre>}}</pre> Some parameters, unless set to other values, are pre-set: *<code>editor-first</code> defaults to "''George Edwin''" *<code>editor-last</code> defaults to "''Rines''" *<code>year</code> defaults to "''1920''" === Examples === ====Simple==== <code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon}}</nowiki></code> displays as: {{Cite Americana|wstitle=Cogniet, Leon}} ====With comment==== <code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon}} A French history and portrait painter with many famous students.</nowiki></code> displays as: {{Cite Americana|wstitle=Cogniet, Leon}} A French history and portrait painter with many famous students. ====Using <code>author</code>==== <code><nowiki>{{Cite Americana|author=[[Wilbur L. Cross]] |wstitle=David Copperfield}}</nowiki></code> displays as: {{Cite Americana|author=[[Wilbur L. Cross]] |wstitle=David Copperfield}} ====Using <code>volume</code>, <code>pages</code>, <code>page</code>==== These work as with other {{tl|cite journal}} templates: <code><nowiki>{{Cite Americana |title=Pulte, Joseph Hippolyt |volume=22 |page=799 }}</nowiki></code> displays as: {{Cite Americana |title=Pulte, Joseph Hippolyt |volume=22 |page=799 }} ====Using <code>display</code>==== The mechanics of Wikisource will sometimes require that a link have disambiguation information which is not part of the original title. The <code>display</code> parameter allows this information to be hidden for the purpose of the citation. For example: <code><nowiki>{{Cite Americana|wstitle=Monroe (Louisiana) |display=Monroe, La.}}</nowiki></code> displays as: {{Cite Americana|wstitle=Monroe (Louisiana) |display=Monroe, La.}} ====Using <code>noicon</code>==== <code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon|noicon=x}}</nowiki></code> displays as: {{Cite Americana|wstitle=Cogniet, Leon|noicon=x}} ====Using <code>vb</code>==== If text is incorporated verbatim into an article, the <code>vb</code> parameter can be used to tack on a notice appropriate to the policy in [[Wikipedia:Plagiarism]]. <code><nowiki>{{Cite Americana|wstitle=Schlatter, Michael |vb=x}}</nowiki></code> displays as: {{Cite Americana|wstitle=Schlatter, Michael |vb=x}} This option is depreciated. Instead use {{tl|Americana}} which does the same thing without the need for a ''vb=x'' parameter. ====Using <code>title</code> (no Wikisource link)==== <code><nowiki>{{Cite Americana |title=Sterne, Simon}}</nowiki></code> displays as: {{Cite Americana |title=Sterne, Simon}} When <code>title</code> is being used, <code>url</code> can be used to specify an external link. For example: <pre><nowiki> {{Cite Americana |title=Sterne, Simon |url=https://books.google.com/books?id=cr9PAAAAMAAJ&pg=PA632 }} At [[Google Books]]. </nowiki></pre> displays as: {{Cite Americana |title=Sterne, Simon |url=https://books.google.com/books?id=cr9PAAAAMAAJ&pg=PA632 }} At [[Google Books]]. ====Using <code>short</code>==== If a shorter citation is desired, excluding the editor of the 1920 edition, the <code>short</code> option can be used. For example: <code><nowiki>{{Cite Americana|wstitle=Schlatter, Michael|short=x}}</nowiki></code> displays as: {{Cite Americana|wstitle=Schlatter, Michael|short=x}} If another edition besides 1920 is being used, the editor name can be customized using <code>editor-first</code> and <code>editor-last</code>. If used, these two items will be displayed whether or not the <code>short</code> option is specified. == Hidden categories == This template places articles into a hidden category with sub-categories to aid maintenance: *[[:Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana]] == See also == * {{tl|Americana}} Similar in effect to setting the parameter vb=''x'' * {{tl|Americana Poster}} <includeonly>{{Sandbox other|| <!-- CATEGORIES AND INTERWIKIS HERE, THANKS --> {{DEFAULTSORT:Americana Cite}} [[Category:Attribution templates]] [[Category:Encyclopedia source templates]] [[Category:Wikisource link templates]] [[ja:Template:Cite Americana]] }}</includeonly> 51b57656e51c3431a29d8167fb0a29bcf06f68ea Main Page 0 1 3227 2437 2023-11-11T12:04:59Z Führerredux 2 wikitext text/x-wiki __NOTOC__ == Welcome to the {{SITENAME}}! == {{#css:Main Page/styles.css}} <table style="width: 90%; position: relative; left: 5%"> <tr> <td style="padding: 10px"> '''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process. Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]]. While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary. </td> <td style="padding: 10px"> {{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br> {{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br> {{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}} </td> </tr> </table> == Majors == 386587fb2f059c5d5dc8c6e240d2f625e50ee610 3228 3227 2023-11-11T12:12:00Z Führerredux 2 wikitext text/x-wiki __NOTOC__ == Welcome to the {{SITENAME}}! == {{#css:Main Page/styles.css}} <table style="width: 90%; position: relative; left: 5%"> <tr> <td style="padding: 10px"> '''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process. Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]]. While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary. </td> <td style="padding: 10px"> {{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br> {{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br> {{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}} </td> </tr> </table> == Countries == {| class="wikitable sortable" |- ! Articles ! Information |- |data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Great Powers Articles</categorytree>'' | ''{{Miniflag}} '''[[:Category:Majors|Majors]]''' are articles which contain information about the Great Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Minor Articles</categorytree>'' | ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minor Articles</categorytree> |{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Personss</categorytree> |{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders'' |} 46dedc5fee260b2a279a9ee3ae3fa17bfb8c13e7 3233 3228 2023-11-11T12:41:46Z Führerredux 2 wikitext text/x-wiki __NOTOC__ == Welcome to the {{SITENAME}}! == {{#css:Main Page/styles.css}} <table style="width: 90%; position: relative; left: 5%"> <tr> <td style="padding: 10px"> '''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process. Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]]. While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary. </td> <td style="padding: 10px"> {{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br> {{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br> {{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}} </td> </tr> </table> == Countries == {| class="wikitable sortable" |- ! Articles ! Information |- |data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Great Powers Articles</categorytree>'' | ''{{Miniflag}} '''[[:Category:Majors|Majors]]''' are articles which contain information about the Great Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Minor Articles</categorytree>'' | ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minor Articles</categorytree> |{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Personss</categorytree> |{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders'' |} __NOTOC____NOEDITSECTION__ 84e7b3c0cd570078463487a74d0737eeae33cc1e 3234 3233 2023-11-11T12:42:16Z Führerredux 2 wikitext text/x-wiki == Welcome to the {{SITENAME}}! == {{#css:Main Page/styles.css}} <table style="width: 90%; position: relative; left: 5%"> <tr> <td style="padding: 10px"> '''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process. Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]]. While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary. </td> <td style="padding: 10px"> {{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br> {{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br> {{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}} </td> </tr> </table> == Countries == {| class="wikitable sortable" |- ! Articles ! Information |- |data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Great Powers Articles</categorytree>'' | ''{{Miniflag}} '''[[:Category:Majors|Majors]]''' are articles which contain information about the Great Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Minor Articles</categorytree>'' | ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minor Articles</categorytree> |{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Personss</categorytree> |{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders'' |} __NOTOC____NOEDITSECTION__ 6cd5d69246db6c17811be0ae41084667d2928571 3239 3234 2023-11-11T12:47:54Z Führerredux 2 wikitext text/x-wiki == Welcome to the {{SITENAME}}! == {{#css:Main Page/styles.css}} <table style="width: 90%; position: relative; left: 5%"> <tr> <td style="padding: 10px"> '''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process. Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]]. While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary. </td> <td style="padding: 10px"> {{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br> {{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br> {{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}} </td> </tr> </table> == Articles == {| class="wikitable sortable" |- ! Articles ! Information |- |data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Great Powers Articles</categorytree>'' | ''{{Miniflag}} '''[[:Category:Majors|Majors]]''' are articles which contain information about the Great Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Minor Articles</categorytree>'' | ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minor Articles</categorytree> |{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Personss</categorytree> |{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders'' |} __NOTOC____NOEDITSECTION__ 125c369b6683f459591a090890dc3afd4cfa8a67 3242 3239 2023-11-11T12:50:20Z Führerredux 2 wikitext text/x-wiki == Welcome to the {{SITENAME}}! == {{#css:Main Page/styles.css}} <table style="width: 90%; position: relative; left: 5%"> <tr> <td style="padding: 10px"> '''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process. Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]]. While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary. </td> <td style="padding: 10px"> {{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br> {{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br> {{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}} </td> </tr> </table> == Articles == {| class="wikitable sortable" |- ! Articles ! Information |- |data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Majors</categorytree>'' | ''{{Miniflag}} '''[[:Category:Majors|Great Powers Articles]]''' are articles which contain information about the Great Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important_Minors</categorytree>'' | ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minors</categorytree> |{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important_Persons</categorytree> |{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders'' |} __NOTOC____NOEDITSECTION__ d9c6ac9597ba00631d251c7879a4cf84b0383283 Template:Flagicon image/doc 10 1712 3230 3229 2023-11-11T12:14:14Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Flagicon_image/doc]] wikitext text/x-wiki {{Documentation subpage}} Produces an icon for the supplied image parameter, of the same size, CSS class, etc. as images produced by [[Template:Flagicon]]. This template can be used for arbitrary images that are not included in any [[:Category:Country data templates|country data template]]. Caution is advised if this is used in infoboxes, as flags are [[MOS:INFOBOXFLAG|generally discouraged there]], and additional concerns (such as not using flags purely for decoration, and not using them in an anachronistic manner) may apply. Further guidance is given at [[MOS:FLAGS]]. ''Please do not use this template to render [[Wikipedia:Non-free content|non-free images]], which would also not be acceptable within a country data template.'' ;Usage : <code><nowiki>{{flagicon image|image name|size=optional|border=optional|link=optional}}</nowiki></code> ;Examples : <code><nowiki>{{flagicon image|Red flag.svg}}</nowiki></code> → {{flagicon image|Red flag.svg}} : <code><nowiki>{{flagicon image|Red flag.svg|size=30x20px|link=Japan}}</nowiki></code> → {{flagicon image|Red flag.svg|size=30x20px|link=Japan}} : <code><nowiki>{{flagicon image|ICS Alfa.svg|border=}}</nowiki></code> → {{flagicon image|ICS Alfa.svg|border=}} == See also == {{tl|ListFlag}} <includeonly>{{Sandbox other|| [[Category:Flag template system| ]] }}</includeonly> 3dd2992a52b7ced3a23804de680b1806d5957e78 Hellenic Republic 0 1713 3231 2023-11-11T12:15:56Z Führerredux 2 Redirected page to [[Greece]] wikitext text/x-wiki #REDIRECT [[Greece]] 7a92884986e626a5493cf380531153dc9baa8f8d Template:Miniflag 10 1714 3232 2023-11-11T12:16:40Z Führerredux 2 Redirected page to [[Template:Flagicon image]] wikitext text/x-wiki #REDIRECT [[Template:Flagicon image]] 5353026e0dede54cf40ed8a19564aabff5c20d77 Main Page/styles.css 0 1715 3235 2023-11-11T12:42:53Z Führerredux 2 Created page with "/* {{pp|small=yes}} */ .header-img { width: 100%; border-radius: 15px; transform: scale(1) !important; } .mp-box { border: 1px solid #aaa; /* all border colors overriden on specific elements */ padding: 0 0.5em 0.5em; margin-top: 4px; } .mp-h2, body.skin-timeless .mp-h2 { /* Timeless needs a higher specificity */ border: 1px solid #aaa; /* all border colors overriden on specific elements */ margin: 0.5em 0; padding: 0.2em 0.4em; font-size: 120%; font-weight..." wikitext text/x-wiki /* {{pp|small=yes}} */ .header-img { width: 100%; border-radius: 15px; transform: scale(1) !important; } .mp-box { border: 1px solid #aaa; /* all border colors overriden on specific elements */ padding: 0 0.5em 0.5em; margin-top: 4px; } .mp-h2, body.skin-timeless .mp-h2 { /* Timeless needs a higher specificity */ border: 1px solid #aaa; /* all border colors overriden on specific elements */ margin: 0.5em 0; padding: 0.2em 0.4em; font-size: 120%; font-weight: bold; font-family: inherit; } .mp-later { font-size: 85%; font-weight: normal; } #mp-topbanner { background: #f9f9f9; border-color: #ddd; } #mp-welcomecount { text-align: center; margin: 0.4em; } #mp-welcome { font-size: 162%; padding: 0.1em; } #mp-welcome h1 { font-size: inherit; font-family: inherit; display: inline; border: none; } #mp-free { font-size: 95%; } #articlecount { font-size: 85%; } /* clear fix */ .mp-contains-float::after { content: ""; display: block; clear: both; } #mp-banner { background: #fffaf5; border-color: #f2e0ce; } #mp-left { background: #f5fffa; border-color: #cef2e0; } #mp-left .mp-h2 { background: #cef2e0; border-color: #a3bfb1; } #mp-right { background: #f5faff; border-color: #cedff2; } #mp-right .mp-h2 { background: #cedff2; border-color: #a3b0bf; } #mp-middle { background: #fff5fa; border-color: #f2cedd; } #mp-middle .mp-h2 { background: #f2cedd; border-color: #bfa3af; } #mp-lower { background: #faf5ff; border-color: #ddcef2; } #mp-lower .mp-h2 { background: #ddcef2; border-color: #afa3bf; } #mp-bottom { /* no background */ border-color: #e2e2e2; } #mp-bottom .mp-h2 { background: #eee; border-color: #ddd; } @media (max-width: 875px) { /* We need to improve Template:POTD as used on the main page so that these * hacks aren't necessary */ #mp-tfp table, #mp-tfp tr, #mp-tfp td, #mp-tfp tbody { display: block !important; width: 100% !important; box-sizing: border-box; } #mp-tfp tr:first-child td:first-child a { text-align: center; display: table; margin: 0 auto; } } @media (min-width: 875px) { #mp-upper { display: flex; } #mp-left { flex: 1 1 55%; margin-right: 2px; } #mp-right { flex: 1 1 45%; margin-left: 2px; } } 6ee75e52a445c7f66cafc3f7504fdb328ac4956d Category:Majors 14 1716 3236 2023-11-11T12:46:42Z Führerredux 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Category:Important Minors 14 1717 3237 2023-11-11T12:47:05Z Führerredux 2 Created page with " " wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Category:Minors 14 1718 3238 2023-11-11T12:47:38Z Führerredux 2 Created page with " " wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Category:Important Persons 14 1719 3240 2023-11-11T12:48:01Z Führerredux 2 Created page with " " wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Country mini flag 10 1720 3243 2023-11-11T13:08:08Z Führerredux 2 Created page with "<span class="flagicon">[[File:{{#if:{{{1|}}}|{{{1}}}|Flag placeholder.svg}}|{{{size|23x15px}}}|{{{border|{{#if:{{{1|}}}|border}}}}} |alt=|link={{{link|}}}]]</span><noinclude>{{documentation}}</noinclude> " wikitext text/x-wiki <span class="flagicon">[[File:{{#if:{{{1|}}}|{{{1}}}|Flag placeholder.svg}}|{{{size|23x15px}}}|{{{border|{{#if:{{{1|}}}|border}}}}} |alt=|link={{{link|}}}]]</span><noinclude>{{documentation}}</noinclude> 057d0b94a9367359ad010c3da1fcdcb1e880dcb5 Template:Flagdeco 10 1721 3245 3244 2023-11-11T13:10:11Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Flagdeco]] wikitext text/x-wiki <includeonly>{{#ifeq: {{Yesno-no|{{{noredlink|}}}}}|yes<!-- -->|<!-- #Check for existence of Template: Country data foo before invoking it -->{{#ifexist: Template: Country data {{{1|}}}<!-- -->|<!-- # It exists, so proceed -->{{country data {{{1|}}}|flagdeco/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<!-- -->|<!-- # It doesn't exist, so do nothing -->}}<!-- -->|<!-- # DEFAULT call Template: Country data {{{1|}}} # with no prior checks -->{{country data {{{1|}}}|flagdeco/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<!-- # Track use where "Template:Country data Foo" does not exist -->{{#ifexist: Template:Country data {{{1|}}}||{{namespace detect showall | 1 = | 2 = [[Category:Flagdeco with missing country data templates]] | user = 1 | talk = 1 | other = 2 }}}}<!-- -->}}</includeonly><noinclude> {{Documentation}} </noinclude> 2cd50bb91e18505de93484a7348c92b68745dbf9 Template:Flagdeco/core 10 1722 3247 3246 2023-11-11T13:10:12Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Flagdeco/core]] wikitext text/x-wiki <span class="flagicon">[[File:{{{flag alias-{{{variant}}}|{{{flag alias}}}}}}|{{#if:{{{size|}}}|{{{size}}}|{{{size flag alias-{{{variant}}}|{{#if:{{{variant|}}}|23x15px|{{{size flag alias|23x15px}}}}}}}}}}|{{{border-{{{variant}}}|{{{border|border}}}}}} |alt=|link=]]</span><noinclude>{{documentation}}</noinclude> 42dea5caf343aa87e6e075eb1bec3aebe1f396b1 Template:Country data Peru 10 1723 3249 3248 2023-11-11T13:10:19Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Country_data_Peru]] wikitext text/x-wiki {{ {{{1<noinclude>|country showdata</noinclude>}}} | alias = Peru | flag alias = Flag of Peru.svg | flag alias-spain = Flag of Cross of Burgundy.svg | flag alias-1820 = Flag of Tacna Regiment (1820 proposal).svg | flag alias-1821 = Flag of Peru (1821-1822).svg | flag alias-1822 = Flag of Peru (1822).svg | flag alias-1822a = Flag of Peru (1822-1825).svg | flag alias-1825 = Flag of Peru (1825–1884).svg | flag alias-confederation = Flag of the Peru-Bolivian Confederation.svg | flag alias-north = Flag of Peru (1825–1884).svg | link alias-north = North Peru | flag alias-south = Flag of South Peru.svg | link alias-south = South Peru | flag alias-1884 = Flag of Peru (1884–1950).svg | flag alias-state = Flag of Peru (state).svg | flag alias-football = Flag of Peru (state).svg | flag alias-army = Flag of the Peruvian Army.svg | link alias-army = Peruvian Army | flag alias-naval= Flag of the Peruvian Navy.svg | link alias-naval = Peruvian Navy | flag alias-air force= Flag of the Peruvian Air Force.svg | link alias-air force = Peruvian Air Force | flag alias-military=Flag of Peru (war).svg | link alias-military=Peruvian Armed Forces | flag alias-marines = Flag of the Peruvian Navy.svg | link alias-marines = Peruvian Naval Infantry | flag alias-navy = Flag of Peru (state).svg | link alias-navy = Peruvian Navy | size = {{{size|}}} | name = {{{name|}}} | altvar = {{{altvar|}}} | altlink = {{{altlink|}}} | variant = {{{variant|}}} <noinclude> | var1 = spain | var2 = 1820 | var3 = 1821 | var4 = 1822 | var5 = 1822a | var6 = 1825 | var7 = confederation | var8 = north | var9 = south | var10 = 1884 | var11 = state | var12 = football | redir1 = PER </noinclude> }} 49f1c34c9465c56dbcb96877d044cb5aa1b9f728 Template:Country data PER 10 1724 3251 3250 2023-11-11T13:10:20Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Country_data_PER]] wikitext text/x-wiki #REDIRECT [[Template:Country data Peru]] [[category:country data redirects|PER]] ab47b4cecba4ecbadf1dd2e33112395e6a627818 Module:Transclusion count/data/F 828 1725 3253 3252 2023-11-11T13:10:26Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/F]] Scribunto text/plain return { ["F1"] = 4700, ["FA-Class"] = 15000, ["FAA-airport"] = 3700, ["FACClosed"] = 5100, ["FAR_link"] = 102000, ["FCC-LMS-Facility"] = 5500, ["FIDE"] = 2200, ["FIFA_player"] = 10000, ["FIN"] = 9200, ["FIPS"] = 2000, ["FJC_Bio"] = 4200, ["FL-Class"] = 12000, ["FLCClosed"] = 2600, ["FM-Class"] = 2800, ["FMA"] = 3300, ["FMARB"] = 10000, ["FML"] = 9100, ["FMQ"] = 12000, ["FMXL"] = 2400, ["FM_station_data"] = 8700, ["FPCnom/VotingEnds"] = 9700, ["FPCresult"] = 16000, ["FRA"] = 19000, ["FRG"] = 3700, ["FULLBASEPAGENAME"] = 5400, ["FULLROOTPAGENAME"] = 2440000, ["FXL"] = 2200, ["Fa_bottom"] = 2200, ["Fa_top"] = 2200, ["Facebook"] = 14000, ["Facepalm"] = 2600, ["Fact"] = 36000, ["FadedPage"] = 2400, ["FailedGA"] = 3300, ["Failed_verification"] = 15000, ["Family_name_explanation"] = 80000, ["Family_name_explanation/core"] = 80000, ["Family_name_hatnote"] = 79000, ["Farl"] = 102000, ["Fb"] = 26000, ["Fb-rt"] = 5800, ["Fb_cs_footer"] = 2900, ["Fb_gd"] = 8800, ["Fb_overview"] = 3700, ["Fb_overview2"] = 3400, ["Fb_rs"] = 8500, ["Fb_rs_footer"] = 8400, ["Fba/core"] = 24000, ["Fba/list"] = 29000, ["Fbaicon"] = 7200, ["Fbaicon/core"] = 8200, ["Fbicon"] = 2900, ["Fbu"] = 3700, ["Fbu-rt"] = 2200, ["Fbw"] = 4900, ["Fdacite"] = 14000, ["FeaturedPicture"] = 6300, ["Featured_article"] = 6700, ["Featured_article_tools"] = 11000, ["Featured_list"] = 4300, ["Featured_picture"] = 7700, ["Featured_topic_box"] = 3100, ["Featured_topic_box/styles.css"] = 3100, ["Feedback_link"] = 4600, ["Fiction-based_redirects_to_list_entries_category_handler"] = 2300, ["File-Class"] = 12000, ["File_other"] = 934000, ["Film"] = 54000, ["Film_date"] = 119000, ["Film_lists_by_country"] = 2300, ["Find"] = 8200, ["FindYDCportal"] = 176000, ["Find_a_Grave"] = 28000, ["Find_a_Grave_cemetery"] = 2300, ["Find_country"] = 233000, ["Find_general_sources"] = 868000, ["Find_medical_sources"] = 7400, ["Find_page_text"] = 636000, ["Find_sources"] = 631000, ["Find_sources/proj/is_biography"] = 619000, ["Find_sources/proj/is_med"] = 631000, ["Find_sources/proj/is_video"] = 624000, ["Find_sources/top_proj"] = 631000, ["Find_sources_AFD"] = 200000, ["Find_sources_mainspace"] = 694000, ["Find_video_game_sources"] = 5000, ["Find_video_game_sources_short"] = 3100, ["Findsources"] = 42000, ["First_nonempty"] = 14000, ["First_word"] = 442000, ["FishBase"] = 14000, ["FishBase_genus"] = 4600, ["Fishproject"] = 10000, ["Fix"] = 913000, ["Fix-span"] = 55000, ["Fix/category"] = 867000, ["Fix_comma_category"] = 562000, ["Fixed"] = 8900, ["Flag"] = 567000, ["Flag/core"] = 567000, ["FlagIOC"] = 11000, ["FlagIOC2"] = 16000, ["FlagIOC2athlete"] = 11000, ["FlagIOC2medalist"] = 4500, ["FlagIOC2team"] = 6700, ["FlagIOCathlete"] = 17000, ["FlagIOCteam"] = 2700, ["FlagIPC"] = 3400, ["FlagPASO"] = 2700, ["FlagPASOathlete"] = 2500, ["Flag_data"] = 7300, ["Flag_icon"] = 15000, ["Flagathlete"] = 28000, ["Flagbig"] = 4500, ["Flagbig/core"] = 7700, ["Flagcountry"] = 40000, ["Flagcountry/core"] = 40000, ["Flagdeco"] = 113000, ["Flagdeco/core"] = 113000, ["Flagg"] = 21000, ["Flagicon"] = 601000, ["Flagicon/core"] = 601000, ["Flagicon/nt"] = 5000, ["Flagicon_image"] = 41000, ["Flaglink/core"] = 78000, ["Flagmedalist"] = 2200, ["Flagmedalist/core"] = 2200, ["Flagright/core"] = 23000, ["Flagteam"] = 6100, ["Flagu"] = 24000, ["Flagu/core"] = 24000, ["Flat_list"] = 8000, ["Flatlist"] = 2090000, ["FloraBase"] = 5600, ["Floruit"] = 4100, ["Fmbox"] = 19000, ["Font"] = 8900, ["Font_color"] = 38000, ["Fontcolor"] = 6600, ["Fooian_expatriate_sportspeople_in_Bar_cat"] = 10000, ["Fooian_expatriate_sportspeople_in_Bar_cat/core"] = 10000, ["Fooian_expatriate_sportspeople_in_Bar_cat/sortname"] = 10000, ["Fooian_fooers"] = 13000, ["Football"] = 57000, ["FootballDatabase.eu"] = 8600, ["FootballFacts.ru"] = 5700, ["Football_box"] = 25000, ["Football_box_collapsible"] = 24000, ["Football_kit"] = 48000, ["Football_manager_history"] = 21000, ["Football_squad"] = 47000, ["Football_squad2_player"] = 50000, ["Football_squad_end"] = 19000, ["Football_squad_manager"] = 47000, ["Football_squad_mid"] = 17000, ["Football_squad_player"] = 19000, ["Football_squad_player/role"] = 6800, ["Football_squad_player/styles.css"] = 19000, ["Football_squad_start"] = 19000, ["Footballbox"] = 7200, ["Footballbox_collapsible"] = 7200, ["Footballstats"] = 2900, ["Foo–Bar_relations_category"] = 9200, ["Foo–Bar_relations_category/core"] = 9200, ["Foo–Bar_relations_category/countrynamesortfix"] = 9200, ["Foo–Bar_relations_category/fixcountryname"] = 9200, ["Foo–Bar_relations_category/inner_core"] = 9200, ["Foo–Bar_relations_category/mapname"] = 9200, ["For"] = 186000, ["For-multi"] = 9600, ["For_loop"] = 777000, ["For_multi"] = 7900, ["For_nowiki"] = 8700, ["ForaDeJogo"] = 4100, ["Force_plural"] = 3200, ["Format_linkr"] = 4400, ["Format_numeric_span"] = 3600, ["Format_price"] = 8200, ["Format_price/digits"] = 8100, ["Formatprice"] = 3200, ["Fossil_range"] = 12000, ["Fossil_range/bar"] = 21000, ["Fossil_range/marker"] = 21000, ["Fossilrange"] = 5800, ["Frac"] = 31000, ["Fraction"] = 35000, ["Fraction/styles.css"] = 94000, ["France_metadata_Wikidata"] = 36000, ["Free_access"] = 4300, ["Free_in_US_media"] = 15000, ["Free_media"] = 156000, ["Frequency"] = 3400, ["Friday"] = 2700, ["Fs_end"] = 18000, ["Fs_mid"] = 16000, ["Fs_player"] = 18000, ["Fs_start"] = 18000, ["Full_citation_needed"] = 8300, ["Full_party_name_with_color"] = 4000, ["Fullurl"] = 6500, ["Fullurl:"] = 6400, ["Further"] = 63000, ["Fussballdaten"] = 4300, ["Module:Fb_overview"] = 3800, ["Module:FeaturedTopicSum"] = 6800, ["Module:Fedi-share"] = 3100, ["Module:Fiction-based_redirects_to_list_entries_category_handler"] = 2300, ["Module:Fiction-based_redirects_to_list_entries_category_handler/RedirectType"] = 2300, ["Module:Fiction_redirect_category_handler"] = 2900, ["Module:File_link"] = 68000, ["Module:FindYDCportal"] = 309000, ["Module:Find_country"] = 184000, ["Module:Find_sources"] = 1570000, ["Module:Find_sources/config"] = 1570000, ["Module:Find_sources/links"] = 1570000, ["Module:Find_sources/templates/Find_general_sources"] = 868000, ["Module:Find_sources/templates/Find_sources_mainspace"] = 694000, ["Module:Find_sources/templates/Find_sources_medical"] = 7400, ["Module:Find_sources/templates/Find_sources_video_games"] = 5000, ["Module:FishRef"] = 7000, ["Module:Flag"] = 51000, ["Module:Flagg"] = 126000, ["Module:Football_box"] = 26000, ["Module:Football_box/styles.css"] = 26000, ["Module:Football_box_collapsible"] = 24000, ["Module:Football_manager_history"] = 21000, ["Module:Football_squad"] = 47000, ["Module:Footnotes"] = 291000, ["Module:Footnotes/anchor_id_list"] = 210000, ["Module:Footnotes/anchor_id_list/data"] = 210000, ["Module:Footnotes/whitelist"] = 210000, ["Module:For"] = 187000, ["Module:For_loop"] = 777000, ["Module:For_nowiki"] = 8700, ["Module:Format_link"] = 1330000, ["Module:Formatted_appearance"] = 5000, } 2a1e6682573b7aa8fdbcb99e8d139cefa6e9e0f9 3273 3253 2023-11-12T05:11:24Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["F1"] = 4700, ["FA-Class"] = 15000, ["FAA-airport"] = 3700, ["FACClosed"] = 5200, ["FAR_link"] = 102000, ["FCC-LMS-Facility"] = 5600, ["FIDE"] = 2200, ["FIFA_player"] = 10000, ["FIN"] = 9200, ["FIPS"] = 2000, ["FJC_Bio"] = 4200, ["FL-Class"] = 12000, ["FLCClosed"] = 2600, ["FLC_link"] = 102000, ["FM-Class"] = 2800, ["FMA"] = 3300, ["FMARB"] = 10000, ["FML"] = 9100, ["FMQ"] = 12000, ["FMXL"] = 2400, ["FM_station_data"] = 8700, ["FPCnom/VotingEnds"] = 9800, ["FPCresult"] = 16000, ["FRA"] = 19000, ["FRG"] = 3700, ["FULLBASEPAGENAME"] = 5400, ["FULLROOTPAGENAME"] = 2470000, ["FXL"] = 2200, ["Fa_bottom"] = 2200, ["Fa_top"] = 2200, ["Facebook"] = 14000, ["Facepalm"] = 2600, ["Fact"] = 37000, ["FadedPage"] = 2400, ["FailedGA"] = 3300, ["Failed_verification"] = 15000, ["Family_name_explanation"] = 80000, ["Family_name_explanation/core"] = 80000, ["Family_name_hatnote"] = 79000, ["Farl"] = 102000, ["Fb"] = 26000, ["Fb-rt"] = 5800, ["Fb_cs_footer"] = 2900, ["Fb_gd"] = 8800, ["Fb_overview"] = 3700, ["Fb_overview2"] = 3400, ["Fb_rs"] = 8500, ["Fb_rs_footer"] = 8400, ["Fba/core"] = 24000, ["Fba/list"] = 29000, ["Fbaicon"] = 7200, ["Fbaicon/core"] = 8200, ["Fbicon"] = 2900, ["Fbu"] = 3700, ["Fbu-rt"] = 2200, ["Fbw"] = 5000, ["Fdacite"] = 14000, ["FeaturedPicture"] = 6300, ["Featured_article"] = 6700, ["Featured_article_tools"] = 11000, ["Featured_list"] = 4300, ["Featured_picture"] = 7700, ["Featured_topic_box"] = 3100, ["Featured_topic_box/styles.css"] = 3100, ["Feedback_link"] = 4600, ["Fiction-based_redirects_to_list_entries_category_handler"] = 2400, ["File-Class"] = 12000, ["File_other"] = 934000, ["Film"] = 54000, ["Film_date"] = 119000, ["Film_lists_by_country"] = 2300, ["Find"] = 8200, ["FindYDCportal"] = 176000, ["Find_a_Grave"] = 28000, ["Find_a_Grave_cemetery"] = 2300, ["Find_country"] = 234000, ["Find_general_sources"] = 868000, ["Find_medical_sources"] = 7400, ["Find_page_text"] = 635000, ["Find_sources"] = 631000, ["Find_sources/proj/is_biography"] = 619000, ["Find_sources/proj/is_med"] = 631000, ["Find_sources/proj/is_video"] = 624000, ["Find_sources/top_proj"] = 631000, ["Find_sources_AFD"] = 201000, ["Find_sources_mainspace"] = 694000, ["Find_video_game_sources"] = 5000, ["Find_video_game_sources_short"] = 3100, ["Findsources"] = 42000, ["First_nonempty"] = 14000, ["First_word"] = 453000, ["FishBase"] = 14000, ["FishBase_genus"] = 4600, ["Fishproject"] = 10000, ["Fix"] = 914000, ["Fix-span"] = 55000, ["Fix/category"] = 868000, ["Fix_comma_category"] = 563000, ["Fixed"] = 8900, ["Flag"] = 568000, ["Flag/core"] = 568000, ["FlagIOC"] = 11000, ["FlagIOC2"] = 16000, ["FlagIOC2athlete"] = 11000, ["FlagIOC2medalist"] = 4500, ["FlagIOC2team"] = 6700, ["FlagIOCathlete"] = 17000, ["FlagIOCteam"] = 2700, ["FlagIPC"] = 3400, ["FlagPASO"] = 2800, ["FlagPASOathlete"] = 2600, ["Flag_data"] = 7300, ["Flag_icon"] = 15000, ["Flagathlete"] = 28000, ["Flagbig"] = 4500, ["Flagbig/core"] = 7700, ["Flagcountry"] = 40000, ["Flagcountry/core"] = 40000, ["Flagdeco"] = 113000, ["Flagdeco/core"] = 113000, ["Flagg"] = 21000, ["Flagicon"] = 600000, ["Flagicon/core"] = 601000, ["Flagicon/nt"] = 5000, ["Flagicon_image"] = 41000, ["Flaglink/core"] = 78000, ["Flagmedalist"] = 2200, ["Flagmedalist/core"] = 2200, ["Flagright/core"] = 23000, ["Flagteam"] = 6100, ["Flagu"] = 24000, ["Flagu/core"] = 24000, ["Flat_list"] = 8000, ["Flatlist"] = 2090000, ["Flcl"] = 102000, ["FloraBase"] = 5600, ["Floruit"] = 4100, ["Fmbox"] = 19000, ["Font"] = 9000, ["Font_color"] = 38000, ["Fontcolor"] = 6600, ["Fooian_expatriate_sportspeople_in_Bar_cat"] = 10000, ["Fooian_expatriate_sportspeople_in_Bar_cat/core"] = 10000, ["Fooian_expatriate_sportspeople_in_Bar_cat/sortname"] = 10000, ["Fooian_fooers"] = 13000, ["Football"] = 57000, ["FootballDatabase.eu"] = 8600, ["FootballFacts.ru"] = 5700, ["Football_box"] = 25000, ["Football_box_collapsible"] = 24000, ["Football_kit"] = 48000, ["Football_manager_history"] = 21000, ["Football_squad"] = 47000, ["Football_squad2_player"] = 50000, ["Football_squad_end"] = 19000, ["Football_squad_manager"] = 47000, ["Football_squad_mid"] = 17000, ["Football_squad_player"] = 19000, ["Football_squad_player/role"] = 6800, ["Football_squad_player/styles.css"] = 19000, ["Football_squad_start"] = 19000, ["Footballbox"] = 7200, ["Footballbox_collapsible"] = 7200, ["Footballstats"] = 2900, ["Foo–Bar_relations_category"] = 9200, ["Foo–Bar_relations_category/core"] = 9200, ["Foo–Bar_relations_category/countrynamesortfix"] = 9200, ["Foo–Bar_relations_category/fixcountryname"] = 9200, ["Foo–Bar_relations_category/inner_core"] = 9200, ["Foo–Bar_relations_category/mapname"] = 9200, ["For"] = 186000, ["For-multi"] = 9600, ["For_loop"] = 779000, ["For_multi"] = 7900, ["For_nowiki"] = 8700, ["ForaDeJogo"] = 4100, ["Force_plural"] = 3300, ["Format_linkr"] = 4500, ["Format_numeric_span"] = 3600, ["Format_price"] = 8200, ["Format_price/digits"] = 8100, ["Formatprice"] = 3200, ["Fossil_range"] = 12000, ["Fossil_range/bar"] = 21000, ["Fossil_range/marker"] = 21000, ["Fossilrange"] = 5900, ["Frac"] = 31000, ["Fraction"] = 35000, ["Fraction/styles.css"] = 94000, ["France_metadata_Wikidata"] = 36000, ["Free_access"] = 4300, ["Free_in_US_media"] = 15000, ["Free_media"] = 156000, ["Frequency"] = 3400, ["Friday"] = 2700, ["Fs_end"] = 18000, ["Fs_mid"] = 16000, ["Fs_player"] = 18000, ["Fs_start"] = 18000, ["Full_citation_needed"] = 8300, ["Full_party_name_with_color"] = 4100, ["Fullurl"] = 6500, ["Fullurl:"] = 6400, ["Further"] = 63000, ["Fussballdaten"] = 4300, ["Module:Fb_overview"] = 3800, ["Module:FeaturedTopicSum"] = 6800, ["Module:Fedi-share"] = 3300, ["Module:Fiction-based_redirects_to_list_entries_category_handler"] = 2400, ["Module:Fiction-based_redirects_to_list_entries_category_handler/RedirectType"] = 2400, ["Module:Fiction_redirect_category_handler"] = 2900, ["Module:File_link"] = 68000, ["Module:FindYDCportal"] = 309000, ["Module:Find_country"] = 184000, ["Module:Find_sources"] = 1570000, ["Module:Find_sources/config"] = 1570000, ["Module:Find_sources/links"] = 1570000, ["Module:Find_sources/templates/Find_general_sources"] = 868000, ["Module:Find_sources/templates/Find_sources_mainspace"] = 694000, ["Module:Find_sources/templates/Find_sources_medical"] = 7400, ["Module:Find_sources/templates/Find_sources_video_games"] = 5000, ["Module:FishRef"] = 7000, ["Module:Flag"] = 51000, ["Module:Flagg"] = 126000, ["Module:Football_box"] = 26000, ["Module:Football_box/styles.css"] = 26000, ["Module:Football_box_collapsible"] = 24000, ["Module:Football_manager_history"] = 21000, ["Module:Football_squad"] = 47000, ["Module:Footnotes"] = 291000, ["Module:Footnotes/anchor_id_list"] = 210000, ["Module:Footnotes/anchor_id_list/data"] = 210000, ["Module:Footnotes/whitelist"] = 210000, ["Module:For"] = 187000, ["Module:For_loop"] = 779000, ["Module:For_nowiki"] = 8700, ["Module:Format_link"] = 1330000, ["Module:Formatted_appearance"] = 5000, } c4dc69810385b6bbce6e5430d153c8c6202559d1 Template:Flagicon/doc 10 1726 3255 3254 2023-11-11T13:10:31Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Flagicon/doc]] wikitext text/x-wiki {{documentation subpage}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> {{high-use}} '''Template:Flagicon''' displays a flag of the named parameter in "icon" size, currently 23×15 pixels maximally (defined in [[Template:Flagicon/core]]), plus a one-pixel border. The image also has a clickable link to the associated article. For an unlinked flag icon, use [[Template:Flagdeco]] instead. Please consider the [[Wikipedia:Manual of Style (icons)#Flags|Manual of Style section on flag]]s before using this template. ==Usage== <code><nowiki>{{flagicon|name|variant=|size=|noredlink=}}</nowiki></code> ;name: The first parameter is mandatory, and identifies the name of the country, region, city, etc. A full list of available values can be found in [[:Category:Country data templates]]. For example, [[:Template:Country data Peru]] is used when the ''name'' parameter is specified as <code>Peru</code>. Many flags are also available via shortened "aliases", such as standard three-letter country codes as specified by [[ISO 3166-1 alpha-3]], [[List of IOC country codes|IOC]], or [[List of FIFA country codes|FIFA]]. The list of available "aliases" is found in [[:Category:Country data redirects]]. Many of these country codes could be considered obscure, so it is recommended to use the full country name. ;variant: The second parameter is optional, and identifies a flag variant to be used instead of the standard flag. This is most often used for historical flags but can also be used to specify naval flags, sport-use flags, etc. The list of available flag variants for each country is documented on the specific page for the country data template. For example, [[Template:Country data Peru]] includes a description of each of the available flag variations for Peru. This parameter can be a named parameter (e.g.. "<code>variant=1815</code>"), or a positional parameter, always after the country name. ;size: This parameter is optional, and is used to specify the maximum width and/or height of the flag image. This parameter is specified using standard [[Wikipedia:Extended image syntax|image syntax]]. ==Template data== {{TemplateData header}} <templatedata> { "description": "This template displays a wikilinked flag of the named parameter in 'icon' size, currently 23×15 pixels (defined in Template:Flagicon/core) plus a one-pixel border.", "params": { "1": { "label": "Name", "description": "Name of the country, region, city, etc.; full name is recommended for countries", "type": "string", "required": true }, "variant": { "label": "Variant", "description": "Identifies a flag variant to be used instead of the standard flag, e.g. 1815", "type": "string", "required": false, "aliases": [ "2" ] }, "size": { "label": "Maximum dimension", "description": "The maximum width or height, specified via standard 'extended image syntax' (e.g. x30px)", "type": "string", "required": false }, "noredlink": { "label": "No redlink", "description": "If set to any value which evaluates as true (i.e. '1', 'true', 'yes', or 'y'), it displays nothing if the country data file doesn't exist. (The default is to display a redlink)", "type": "string", "required": false } } } </templatedata> ==Examples== {| class="wikitable" ! Wikicode !! Results !! Notes |- | <code><nowiki>{{flagicon|Peru}}</nowiki></code> || {{flagicon|Peru}} || |- | <code><nowiki>{{flagicon|PER}}</nowiki></code> || {{flagicon|PER}} || Uses the ISO/IOC/FIFA country code |- | <code><nowiki>{{flagicon|Peru|1822}}</nowiki></code> || {{flagicon|Peru|1822}} || rowspan="2"| Specifies a historical flag |- | <code><nowiki>{{flagicon|Peru|variant=1822}}</nowiki></code> || {{flagicon|Peru|variant=1822}} |- | <code><nowiki>{{flagicon|PER|naval}}</nowiki></code> || {{flagicon|PER|naval}} || Specifies the naval ensign |- | <code><nowiki>{{flagicon|PER|air force}}</nowiki></code> || {{flagicon|PER|air force}} || Specifies the air force flag |- | <code><nowiki>{{flagicon|Peru|size=50px}}</nowiki></code> || {{flagicon|Peru|size=50px}} || Sets width to 50 pixels |- | <code><nowiki>{{flagicon|Xanadu}}</nowiki></code> || [[Template:Country data Xanadu]] || No flag for Xanadu, so displays redlink |- | <code><nowiki>{{flagicon|Xanadu|noredlink=yes}}</nowiki></code> || {{flagicon|Xanadu|noredlink=yes}} || No flag, so displays nothing |} ==Implementation notes== This template uses the data templates listed under [[:Category:Country data templates]], which contain the data specifying '''what''' to display and the formatter [[Template:Flagicon/core]], which contains the logic of '''how''' to display the flag. * <code><nowiki>{{flagicon|Peru}}</nowiki></code> → {{flagicon|Peru}} — uses [[Template:Country data Peru]] * <code><nowiki>{{flagicon|PER}}</nowiki></code> → {{flagicon|PER}} — uses [[Template:Country data PER]], which is a redirect to [[Template:Country data Peru]] Inside each country data template, this template uses the following parameters: * <code>flag alias</code> — name of the image file to display * <code>flag alias-xxxx</code> — name of the image file of flag variant <code>xxxx</code> * <code>alias</code> — used to display the [[alt attribute]] of the image (defaults to "Flag of ''alias''") == Tracking categories == *{{clc|Pages using flagicon template with unknown parameters}} Where <code><nowiki>{{Flagicon|Foo}}</nowiki></code> is used, but the <code><nowiki>Template:Country data Foo</nowiki></code> does not exist, then a [[WP:Red link|redlink]] is displayed, ''unless'' the {{para|noredlink|yes}} parameter has been set. Where the redlink is displayed, the page is addded to a tracking category: * [[:Category:Flagicons with missing country data templates]] (population: {{PAGESINCATEGORY:Flagicons with missing country data templates}}) ==Related templates== * [[Template:Flag]] is used to display a wikilinked name next to the flag. The displayed name will be the same as the parameter used with the template, but the link target will be the main article for the country (in these examples, [[Peru]]). ** <code><nowiki>{{flag|Peru}}</nowiki></code> → {{flag|Peru}} ** <code><nowiki>{{flag|PER}}</nowiki></code> → {{flag|Peru}} * [[Template:Flagcountry]] is also used to display a wikilinked name next to the flag. The displayed name will always be the same, regardless of whether or not a country code alias is used as the template parameter. ** <code><nowiki>{{flagcountry|Peru}}</nowiki></code> → {{flagcountry|Peru}} ** <code><nowiki>{{flagcountry|PER}}</nowiki></code> → {{flagcountry|PER}} * [[Template:Flagdeco]] displays an unlinked flag icon without country name. ** <code><nowiki>{{flagdeco|Peru}}</nowiki></code> → {{flagdeco|Peru}} For a full list of flag templates, see [[:Category:Flag template system]]. ==Alternatives to avoid Wikipedia's [[WP:PEIS|Post-expand include size]] limit== Pages with many flag icons may come close to or exceed Wikipedia's [[WP:PEIS|Post-expand include size]] limit. In these cases consider using modules or module-wrapper templates instead: * {{tl|flagg}} is a simple wrapper for [[Module:Flagg]]: For basic use, <code><nowiki>{{flagicon|</nowiki>''country''<nowiki>}}</nowiki></code> can be replaced with <code><nowiki>{{flagg|cxxlo|</nowiki>''country''<nowiki>}}</nowiki></code> ==See also== * [[Template:Flagicon image]] * [[Template:Coat of arms]] * [[Wikipedia:WikiProject Flag Template]] * [[Regional indicator symbol]] <includeonly>{{Sandbox other|| [[Category:Flag template system]] }}</includeonly> 879ee079273663abd7cfb598fedbf382231852c7 Module:Transclusion count/data/I 828 70 3285 1094 2023-11-12T05:11:54Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["IAST"] = 6400, ["IBDB_name"] = 9200, ["ICD10"] = 4700, ["ICD9"] = 4400, ["ICS"] = 2900, ["IDN"] = 3400, ["IMDb_episode"] = 10000, ["IMDb_episodes"] = 2700, ["IMDb_name"] = 154000, ["IMDb_title"] = 191000, ["IMO_Number"] = 4100, ["IMSLP"] = 8300, ["INA"] = 2200, ["IND"] = 7700, ["INR"] = 6600, ["INRConvert"] = 5700, ["INRConvert/CurrentRate"] = 5600, ["INRConvert/USD"] = 5600, ["INRConvert/out"] = 5600, ["IOC_profile"] = 5000, ["IP"] = 2600, ["IPA"] = 143000, ["IPA-de"] = 8200, ["IPA-es"] = 7900, ["IPA-fr"] = 44000, ["IPA-it"] = 5900, ["IPA-nl"] = 3900, ["IPA-pl"] = 4100, ["IPA-pt"] = 3300, ["IPA-sl"] = 6900, ["IPA-th"] = 3000, ["IPA_audio_link"] = 3500, ["IPA_link"] = 3500, ["IPAc-cmn"] = 2300, ["IPAc-en"] = 49000, ["IPAc-pl"] = 51000, ["IPC_athlete"] = 2800, ["IPSummary"] = 78000, ["IP_summary"] = 79000, ["IPtalk"] = 18000, ["IPuser"] = 7100, ["IPvandal"] = 2700, ["IRC"] = 7300, ["IRI"] = 2300, ["IRL"] = 5500, ["IRN"] = 3700, ["ISBN"] = 462000, ["ISBN?"] = 2100, ["ISBNT"] = 39000, ["ISBN_missing"] = 2600, ["ISFDB_name"] = 4100, ["ISFDB_title"] = 4600, ["ISL"] = 2100, ["ISO_15924/script-example-character"] = 2800, ["ISO_15924/wp-article"] = 2800, ["ISO_15924/wp-article/format"] = 2800, ["ISO_15924/wp-article/label"] = 2700, ["ISO_3166_code"] = 494000, ["ISO_3166_name"] = 16000, ["ISO_639_name"] = 8200, ["ISP"] = 5300, ["ISR"] = 4900, ["ISSN"] = 12000, ["ISSN_link"] = 30000, ["ISTAT"] = 8100, ["ISU_figure_skater"] = 2500, ["ITA"] = 17000, ["ITF"] = 6300, ["ITF_profile"] = 9100, ["ITIS"] = 4400, ["ITN_talk"] = 10000, ["ITN_talk/date"] = 10000, ["IUCN_banner"] = 15000, ["I_sup"] = 4600, ["Ice_hockey"] = 19000, ["Ice_hockey_stats"] = 19000, ["Icehockeystats"] = 12000, ["Icon"] = 582000, ["If"] = 277000, ["If_all"] = 6500, ["If_between"] = 3800, ["If_both"] = 129000, ["If_empty"] = 3680000, ["If_first_display_both"] = 73000, ["If_in_page"] = 10000, ["If_last_display_both"] = 30000, ["If_number"] = 2300, ["If_preview"] = 58000, ["If_then_show"] = 294000, ["Ifempty"] = 4000, ["Ifeq"] = 17000, ["Iferror_then_show"] = 3300, ["Ifexist_not_redirect"] = 1310000, ["Ifnotempty"] = 15000, ["Ifnumber"] = 36000, ["Ifsubst"] = 453000, ["Ih"] = 7600, ["Ill"] = 121000, ["Illm"] = 6700, ["Image_frame"] = 4900, ["Image_label"] = 4500, ["Image_label_begin"] = 3800, ["Image_label_end"] = 3800, ["Image_label_small"] = 2600, ["Image_needed"] = 4500, ["Image_other"] = 272000, ["Image_requested"] = 168000, ["Image_requested/Category_helper"] = 161000, ["Imbox"] = 922000, ["Imdb_name"] = 5400, ["Imdb_title"] = 4000, ["Import_style"] = 11000, ["Import_style/inputbox.css"] = 11000, ["Importance"] = 5660000, ["Importance/colour"] = 5670000, ["Importance_mask"] = 10400000, ["Improve_categories"] = 7400, ["Improve_documentation"] = 2600, ["In_class"] = 5700, ["In_lang"] = 358000, ["In_progress"] = 3300, ["In_string"] = 77000, ["In_title"] = 20000, ["Inactive_userpage_blanked"] = 4900, ["Include-USGov"] = 29000, ["Incomplete_list"] = 23000, ["Inconclusive"] = 2100, ["Increase"] = 44000, ["Incumbent_pope"] = 4300, ["Indent"] = 4400, ["IndexFungorum"] = 2200, ["Indian_English"] = 4300, ["Indian_Rupee"] = 10000, ["Indian_railway_code"] = 3200, ["Inflation"] = 21000, ["Inflation-fn"] = 5400, ["Inflation-year"] = 4500, ["Inflation/IN/startyear"] = 5600, ["Inflation/UK"] = 4400, ["Inflation/UK/dataset"] = 4400, ["Inflation/UK/startyear"] = 4400, ["Inflation/US"] = 12000, ["Inflation/US-GDP"] = 2400, ["Inflation/US-GDP/dataset"] = 2400, ["Inflation/US-GDP/startyear"] = 2400, ["Inflation/US/dataset"] = 12000, ["Inflation/US/startyear"] = 12000, ["Inflation/fn"] = 6300, ["Inflation/year"] = 26000, ["Info"] = 7200, ["Infobox"] = 3240000, ["Infobox/Columns"] = 2400, ["Infobox/mobileviewfix.css"] = 148000, ["Infobox3cols"] = 17000, ["Infobox_AFL_biography"] = 14000, ["Infobox_Aircraft_Begin"] = 5300, ["Infobox_Aircraft_Type"] = 4700, ["Infobox_Athletics_Championships"] = 2700, ["Infobox_Australian_place"] = 15000, ["Infobox_CFL_biography"] = 2200, ["Infobox_COA_wide"] = 3200, ["Infobox_Canada_electoral_district"] = 2500, ["Infobox_Canadian_Football_League_biography"] = 5700, ["Infobox_Canadian_Football_League_biography/position"] = 5700, ["Infobox_Chinese"] = 20000, ["Infobox_Chinese/Chinese"] = 2700, ["Infobox_Chinese/Footer"] = 8700, ["Infobox_Chinese/Header"] = 8700, ["Infobox_Chinese/Korean"] = 17000, ["Infobox_Christian_leader"] = 18000, ["Infobox_French_commune"] = 38000, ["Infobox_GAA_player"] = 2700, ["Infobox_Gaelic_games_player"] = 5000, ["Infobox_German_location"] = 13000, ["Infobox_German_place"] = 14000, ["Infobox_Grand_Prix_race_report"] = 2000, ["Infobox_Greece_place"] = 2900, ["Infobox_Greek_Dimos"] = 2800, ["Infobox_Hindu_temple"] = 2400, ["Infobox_Indian_constituency"] = 4700, ["Infobox_Indian_constituency/defaultdata"] = 4700, ["Infobox_Italian_comune"] = 8100, ["Infobox_Korean_name"] = 15000, ["Infobox_Korean_name/categories"] = 15000, ["Infobox_NASCAR_race_report"] = 2200, ["Infobox_NCAA_team_season"] = 17000, ["Infobox_NFL_biography"] = 28000, ["Infobox_NFL_player"] = 7600, ["Infobox_NFL_team_season"] = 3900, ["Infobox_NRHP"] = 72000, ["Infobox_NRHP/conv"] = 18000, ["Infobox_NRHP/locmapin2region"] = 66000, ["Infobox_Officeholder"] = 4700, ["Infobox_Olympic_event"] = 7300, ["Infobox_Olympic_event/games_text"] = 7300, ["Infobox_Pan_American_Games_event"] = 2200, ["Infobox_Paralympic_event"] = 2600, ["Infobox_Paralympic_event/games_text"] = 2600, ["Infobox_Politician"] = 2200, ["Infobox_Romanian_subdivision"] = 3200, ["Infobox_Russian_district"] = 2000, ["Infobox_Russian_inhabited_locality"] = 4500, ["Infobox_SCOTUS_case"] = 3700, ["Infobox_Site_of_Special_Scientific_Interest"] = 2000, ["Infobox_Swiss_town"] = 2800, ["Infobox_Switzerland_municipality"] = 2900, ["Infobox_Turkey_place"] = 19000, ["Infobox_U.S._county"] = 3000, ["Infobox_U.S._county/district"] = 3000, ["Infobox_UK_constituency"] = 2100, ["Infobox_UK_constituency/year"] = 2100, ["Infobox_UK_legislation"] = 3400, ["Infobox_UK_place"] = 26000, ["Infobox_UK_place/NoDialCode"] = 8100, ["Infobox_UK_place/NoPostCode"] = 3200, ["Infobox_UK_place/area"] = 2400, ["Infobox_UK_place/dist"] = 2500, ["Infobox_UK_place/local"] = 26000, ["Infobox_UK_place/styles.css"] = 26000, ["Infobox_UN_resolution"] = 2300, ["Infobox_US_Supreme_Court_case"] = 3900, ["Infobox_US_Supreme_Court_case/courts"] = 3800, ["Infobox_Wikipedia_user"] = 9800, ["Infobox_YouTube_personality"] = 2700, ["Infobox_YouTube_personality/styles.css"] = 2700, ["Infobox_academic"] = 14000, ["Infobox_aircraft_begin"] = 14000, ["Infobox_aircraft_occurrence"] = 2300, ["Infobox_aircraft_type"] = 13000, ["Infobox_airline"] = 4600, ["Infobox_airport"] = 15000, ["Infobox_airport/datatable"] = 15000, ["Infobox_album"] = 162000, ["Infobox_album/color"] = 193000, ["Infobox_album/link"] = 162000, ["Infobox_anatomy"] = 4500, ["Infobox_ancient_site"] = 5400, ["Infobox_animanga/Footer"] = 6900, ["Infobox_animanga/Header"] = 6900, ["Infobox_animanga/Print"] = 5500, ["Infobox_animanga/Video"] = 4700, ["Infobox_architect"] = 3700, ["Infobox_artist"] = 29000, ["Infobox_artist_discography"] = 6000, ["Infobox_artwork"] = 11000, ["Infobox_athlete"] = 2800, ["Infobox_automobile"] = 8500, ["Infobox_award"] = 13000, ["Infobox_badminton_player"] = 3200, ["Infobox_baseball_biography"] = 28000, ["Infobox_baseball_biography/style"] = 28000, ["Infobox_baseball_biography/styles.css"] = 28000, ["Infobox_baseball_team_season"] = 3200, ["Infobox_baseball_team_season/leagueseason"] = 3200, ["Infobox_baseball_team_season/season"] = 3200, ["Infobox_baseball_team_season/styles.css"] = 3200, ["Infobox_basketball_biography"] = 21000, ["Infobox_basketball_biography/style"] = 21000, ["Infobox_basketball_club"] = 3000, ["Infobox_beauty_pageant"] = 2400, ["Infobox_bilateral_relations"] = 4400, ["Infobox_body_of_water"] = 18000, ["Infobox_book"] = 52000, ["Infobox_boxer"] = 5700, ["Infobox_bridge"] = 6000, ["Infobox_building"] = 28000, ["Infobox_character"] = 7500, ["Infobox_chess_biography"] = 4000, ["Infobox_chess_player"] = 3200, ["Infobox_church"] = 15000, ["Infobox_church/denomination"] = 15000, ["Infobox_church/font_color"] = 15000, ["Infobox_civil_conflict"] = 2400, ["Infobox_civilian_attack"] = 5600, ["Infobox_college_coach"] = 12000, ["Infobox_college_football_game"] = 2100, ["Infobox_college_football_player"] = 2100, ["Infobox_college_sports_team_season"] = 40000, ["Infobox_college_sports_team_season/link"] = 40000, ["Infobox_college_sports_team_season/name"] = 40000, ["Infobox_college_sports_team_season/succession"] = 40000, ["Infobox_college_sports_team_season/team"] = 40000, ["Infobox_comic_book_title"] = 3000, ["Infobox_comics_character"] = 3500, ["Infobox_comics_creator"] = 3500, ["Infobox_comics_creator/styles.css"] = 3500, ["Infobox_company"] = 84000, ["Infobox_computing_device"] = 2400, ["Infobox_concert"] = 3300, ["Infobox_constituency"] = 5500, ["Infobox_country"] = 6500, ["Infobox_country/formernext"] = 6000, ["Infobox_country/imagetable"] = 5200, ["Infobox_country/multirow"] = 8300, ["Infobox_country/status_text"] = 2800, ["Infobox_country/styles.css"] = 6500, ["Infobox_country_at_games"] = 15000, ["Infobox_country_at_games/core"] = 15000, ["Infobox_country_at_games/see_also"] = 12000, ["Infobox_court_case"] = 4700, ["Infobox_court_case/images"] = 2400, ["Infobox_cricket_tournament"] = 2400, ["Infobox_cricketer"] = 32000, ["Infobox_cricketer/career"] = 32000, ["Infobox_cricketer/national_side"] = 7500, ["Infobox_criminal"] = 6400, ["Infobox_curler"] = 2600, ["Infobox_cycling_race_report"] = 4500, ["Infobox_cyclist"] = 16000, ["Infobox_dam"] = 5700, ["Infobox_deity"] = 2000, ["Infobox_deity/color"] = 2000, ["Infobox_designation_list"] = 20000, ["Infobox_designation_list/entry"] = 17000, ["Infobox_dim"] = 7000, ["Infobox_dim/core"] = 7000, ["Infobox_diocese"] = 3800, ["Infobox_drug"] = 9800, ["Infobox_drug/chemical_formula"] = 9800, ["Infobox_drug/data_page_link"] = 9800, ["Infobox_drug/formatATC"] = 9700, ["Infobox_drug/formatCASnumber"] = 9800, ["Infobox_drug/formatChEBI"] = 9800, ["Infobox_drug/formatChEMBL"] = 9800, ["Infobox_drug/formatChemDBNIAID"] = 9800, ["Infobox_drug/formatChemSpider"] = 9800, ["Infobox_drug/formatCompTox"] = 9800, ["Infobox_drug/formatDrugBank"] = 9800, ["Infobox_drug/formatIUPHARBPS"] = 9800, ["Infobox_drug/formatJmol"] = 9800, ["Infobox_drug/formatKEGG"] = 9800, ["Infobox_drug/formatPDBligand"] = 9200, ["Infobox_drug/formatPubChemCID"] = 9800, ["Infobox_drug/formatPubChemSID"] = 9800, ["Infobox_drug/formatUNII"] = 9800, ["Infobox_drug/legal_status"] = 10000, ["Infobox_drug/licence"] = 9900, ["Infobox_drug/maintenance_categories"] = 9800, ["Infobox_drug/non-ref-space"] = 4300, ["Infobox_drug/pregnancy_category"] = 9900, ["Infobox_drug/title"] = 9800, ["Infobox_election"] = 30000, ["Infobox_election/row"] = 30000, ["Infobox_election/shortname"] = 28000, ["Infobox_enzyme"] = 5100, ["Infobox_ethnic_group"] = 7300, ["Infobox_event"] = 5500, ["Infobox_family"] = 2200, ["Infobox_figure_skater"] = 4200, ["Infobox_film"] = 157000, ["Infobox_film/short_description"] = 153000, ["Infobox_film_awards"] = 2700, ["Infobox_film_awards/link"] = 2600, ["Infobox_film_awards/style"] = 2700, ["Infobox_food"] = 6900, ["Infobox_football_biography"] = 207000, ["Infobox_football_club"] = 28000, ["Infobox_football_club_season"] = 20000, ["Infobox_football_league"] = 2600, ["Infobox_football_league_season"] = 20000, ["Infobox_football_match"] = 5900, ["Infobox_football_tournament_season"] = 8100, ["Infobox_former_subdivision"] = 3300, ["Infobox_former_subdivision/styles.css"] = 3300, ["Infobox_galaxy"] = 2100, ["Infobox_game"] = 2600, ["Infobox_game_score"] = 3400, ["Infobox_gene"] = 13000, ["Infobox_given_name"] = 4100, ["Infobox_golfer"] = 4400, ["Infobox_golfer/highest_ranking"] = 4400, ["Infobox_government_agency"] = 10000, ["Infobox_government_cabinet"] = 2600, ["Infobox_gridiron_football_person"] = 2400, ["Infobox_gridiron_football_person/position"] = 5700, ["Infobox_gymnast"] = 3500, ["Infobox_handball_biography"] = 4900, ["Infobox_historic_site"] = 12000, ["Infobox_horseraces"] = 2600, ["Infobox_hospital"] = 6300, ["Infobox_hospital/care_system"] = 6300, ["Infobox_hospital/lists"] = 6300, ["Infobox_ice_hockey_biography"] = 20000, ["Infobox_ice_hockey_player"] = 19000, ["Infobox_ice_hockey_team"] = 3000, ["Infobox_ice_hockey_team_season"] = 2000, ["Infobox_international_football_competition"] = 5800, ["Infobox_islands"] = 8900, ["Infobox_islands/area"] = 9300, ["Infobox_islands/density"] = 9300, ["Infobox_islands/length"] = 8900, ["Infobox_islands/styles.css"] = 8900, ["Infobox_journal"] = 9800, ["Infobox_journal/Abbreviation_search"] = 9600, ["Infobox_journal/Bluebook_check"] = 9400, ["Infobox_journal/Former_check"] = 9400, ["Infobox_journal/ISO_4_check"] = 9400, ["Infobox_journal/ISSN-eISSN"] = 9500, ["Infobox_journal/Indexing_search"] = 9500, ["Infobox_journal/MathSciNet_check"] = 9400, ["Infobox_journal/NLM_check"] = 9400, ["Infobox_journal/frequency"] = 8600, ["Infobox_lake"] = 4300, ["Infobox_language"] = 9600, ["Infobox_language/family-color"] = 11000, ["Infobox_language/genetic"] = 6600, ["Infobox_language/linguistlist"] = 9600, ["Infobox_language/ref"] = 7100, ["Infobox_legislature"] = 3700, ["Infobox_library"] = 2200, ["Infobox_lighthouse"] = 2600, ["Infobox_lighthouse/light"] = 2600, ["Infobox_locomotive"] = 4900, ["Infobox_magazine"] = 7600, ["Infobox_manner_of_address"] = 3300, ["Infobox_mapframe"] = 81000, ["Infobox_martial_artist"] = 5700, ["Infobox_martial_artist/record"] = 5700, ["Infobox_medal_templates"] = 425000, ["Infobox_medical_condition"] = 10000, ["Infobox_medical_condition_(new)"] = 8200, ["Infobox_medical_details"] = 2100, ["Infobox_military_conflict"] = 22000, ["Infobox_military_installation"] = 9800, ["Infobox_military_person"] = 45000, ["Infobox_military_unit"] = 26000, ["Infobox_mine"] = 2100, ["Infobox_model"] = 2300, ["Infobox_monument"] = 2100, ["Infobox_mountain"] = 28000, ["Infobox_multi-sport_competition_event"] = 2400, ["Infobox_museum"] = 11000, ["Infobox_musical_artist"] = 122000, ["Infobox_musical_artist/color"] = 122000, ["Infobox_musical_artist/hCard_class"] = 314000, ["Infobox_musical_composition"] = 2900, ["Infobox_name"] = 7500, ["Infobox_name_module"] = 7100, ["Infobox_newspaper"] = 9700, ["Infobox_nobility"] = 2400, ["Infobox_noble"] = 7400, ["Infobox_officeholder"] = 221000, ["Infobox_officeholder/office"] = 226000, ["Infobox_official_post"] = 8100, ["Infobox_organization"] = 36000, ["Infobox_pageant_titleholder"] = 3000, ["Infobox_park"] = 7500, ["Infobox_person"] = 477000, ["Infobox_person/Wikidata"] = 4600, ["Infobox_person/height"] = 103000, ["Infobox_person/length"] = 7000, ["Infobox_person/weight"] = 67000, ["Infobox_philosopher"] = 3500, ["Infobox_planet"] = 4700, ["Infobox_play"] = 3900, ["Infobox_political_party"] = 14000, ["Infobox_power_station"] = 3100, ["Infobox_prepared_food"] = 3100, ["Infobox_professional_wrestler"] = 4300, ["Infobox_professional_wrestling_event"] = 2700, ["Infobox_protected_area"] = 14000, ["Infobox_protein_family"] = 2100, ["Infobox_publisher"] = 2400, ["Infobox_racehorse"] = 5500, ["Infobox_racing_driver"] = 3900, ["Infobox_racing_driver_series_section"] = 2100, ["Infobox_radio_station"] = 22000, ["Infobox_rail"] = 2900, ["Infobox_rail_line"] = 7300, ["Infobox_rail_service"] = 3000, ["Infobox_rail_service/doc"] = 2900, ["Infobox_reality_competition_season"] = 3500, ["Infobox_record_label"] = 4000, ["Infobox_recurring_event"] = 6500, ["Infobox_religious_biography"] = 5300, ["Infobox_religious_building"] = 12000, ["Infobox_religious_building/color"] = 17000, ["Infobox_restaurant"] = 3000, ["Infobox_river"] = 30000, ["Infobox_river/calcunit"] = 30000, ["Infobox_river/discharge"] = 30000, ["Infobox_river/row-style"] = 30000, ["Infobox_river/source"] = 30000, ["Infobox_road"] = 24000, ["Infobox_road/meta/mask/category"] = 24000, ["Infobox_road/meta/mask/country"] = 24000, ["Infobox_road/styles.css"] = 25000, ["Infobox_road_small"] = 2300, ["Infobox_rockunit"] = 6500, ["Infobox_royalty"] = 22000, ["Infobox_royalty/short_description"] = 12000, ["Infobox_rugby_biography"] = 16000, ["Infobox_rugby_biography/correct_date"] = 16000, ["Infobox_rugby_biography/depcheck"] = 16000, ["Infobox_rugby_league_biography"] = 10000, ["Infobox_rugby_league_biography/PLAYER"] = 9900, ["Infobox_rugby_team"] = 2600, ["Infobox_sailboat_specifications"] = 2300, ["Infobox_saint"] = 5000, ["Infobox_school"] = 38000, ["Infobox_school/short_description"] = 38000, ["Infobox_school_district"] = 5700, ["Infobox_school_district/styles.css"] = 5700, ["Infobox_scientist"] = 49000, ["Infobox_service_record"] = 2600, ["Infobox_settlement"] = 563000, ["Infobox_settlement/areadisp"] = 238000, ["Infobox_settlement/columns"] = 95000, ["Infobox_settlement/columns/styles.css"] = 95000, ["Infobox_settlement/densdisp"] = 438000, ["Infobox_settlement/impus"] = 82000, ["Infobox_settlement/lengthdisp"] = 169000, ["Infobox_settlement/link"] = 95000, ["Infobox_settlement/metric"] = 211000, ["Infobox_settlement/pref"] = 294000, ["Infobox_settlement/styles.css"] = 563000, ["Infobox_ship_begin"] = 41000, ["Infobox_ship_career"] = 37000, ["Infobox_ship_characteristics"] = 41000, ["Infobox_ship_class_overview"] = 4100, ["Infobox_ship_image"] = 40000, ["Infobox_shopping_mall"] = 3500, ["Infobox_short_story"] = 2400, ["Infobox_skier"] = 2500, ["Infobox_soap_character"] = 2900, ["Infobox_software"] = 14000, ["Infobox_software/simple"] = 14000, ["Infobox_song"] = 76000, ["Infobox_song/color"] = 76000, ["Infobox_song/link"] = 76000, ["Infobox_spaceflight"] = 3600, ["Infobox_spaceflight/styles.css"] = 3600, ["Infobox_sport_event"] = 2200, ["Infobox_sports_competition_event"] = 18000, ["Infobox_sports_competition_event/medalrow"] = 12000, ["Infobox_sports_league"] = 5000, ["Infobox_sports_season"] = 5500, ["Infobox_sports_team"] = 2200, ["Infobox_sportsperson"] = 107000, ["Infobox_stadium"] = 3500, ["Infobox_station"] = 55000, ["Infobox_station/doc"] = 55000, ["Infobox_station/services"] = 55000, ["Infobox_station/styles.css"] = 55000, ["Infobox_street"] = 3500, ["Infobox_swimmer"] = 9400, ["Infobox_television"] = 57000, ["Infobox_television/Short_description"] = 55000, ["Infobox_television_channel"] = 6200, ["Infobox_television_episode"] = 12000, ["Infobox_television_episode/styles.css"] = 12000, ["Infobox_television_season"] = 9500, ["Infobox_television_station"] = 3700, ["Infobox_tennis_biography"] = 10000, ["Infobox_tennis_event"] = 2500, ["Infobox_tennis_tournament_event"] = 19000, ["Infobox_tennis_tournament_year"] = 9200, ["Infobox_tennis_tournament_year/color"] = 28000, ["Infobox_tennis_tournament_year/footer"] = 28000, ["Infobox_train"] = 2300, ["Infobox_union"] = 2000, ["Infobox_university"] = 26000, ["Infobox_user"] = 2700, ["Infobox_venue"] = 18000, ["Infobox_video_game"] = 28000, ["Infobox_video_game/styles.css"] = 28000, ["Infobox_volleyball_biography"] = 5400, ["Infobox_weapon"] = 7300, ["Infobox_weather_event"] = 2000, ["Infobox_weather_event/Footer"] = 2000, ["Infobox_weather_event/styles.css"] = 2000, ["Infobox_website"] = 7700, ["Infobox_writer"] = 39000, ["Information"] = 101000, ["Information/styles.css"] = 101000, ["Inline_block"] = 4600, ["Inprogress"] = 2400, ["Input_link"] = 32000, ["Instagram"] = 11000, ["Interlanguage_link"] = 159000, ["Interlanguage_link_multi"] = 19000, ["Internet_Archive_author"] = 19000, ["Internet_Archive_film"] = 2500, ["Intitle"] = 12000, ["Invalid_SVG"] = 2900, ["Invalid_SVG/styles.css"] = 2900, ["Iptalk"] = 17000, ["IranCensus2006"] = 46000, ["IranNCSGN"] = 3200, ["Iran_Census_2006"] = 46000, ["Irc"] = 2100, ["Irish_place_name"] = 2700, ["IsIPAddress"] = 36000, ["IsValidPageName"] = 143000, ["Is_MLB_league"] = 3200, ["Is_NPB_league"] = 3200, ["Is_country_in_Central_America"] = 13000, ["Is_country_in_the_Caribbean"] = 14000, ["Is_interwiki_link"] = 5900, ["Is_italic_taxon"] = 487000, ["Is_redirect"] = 27000, ["Isbn"] = 7700, ["Isfdb_name"] = 3600, ["Isfdb_title"] = 4400, ["Isnumeric"] = 142000, ["Iso2continent"] = 36000, ["Iso2country"] = 23000, ["Iso2country/article"] = 22000, ["Iso2country/data"] = 23000, ["Iso2nationality"] = 202000, ["Issubst"] = 72000, ["Isu_name"] = 2200, ["Italic_dab2"] = 5300, ["Italic_title"] = 280000, ["Italic_title_prefixed"] = 8700, ["Italics_colon"] = 3800, ["Italictitle"] = 4200, ["Ivm"] = 5700, ["Ivm/styles.css"] = 5700, ["Ivmbox"] = 123000, ["Ivory_messagebox"] = 143000, ["Module:I18n/complex_date"] = 66000, ["Module:IP"] = 132000, ["Module:IPA"] = 143000, ["Module:IPA/data"] = 129000, ["Module:IPA/styles.css"] = 115000, ["Module:IPA_symbol"] = 4800, ["Module:IPA_symbol/data"] = 4800, ["Module:IPAc-en"] = 49000, ["Module:IPAc-en/data"] = 49000, ["Module:IPAc-en/phonemes"] = 49000, ["Module:IPAc-en/pronunciation"] = 49000, ["Module:IPAddress"] = 187000, ["Module:ISO_3166"] = 1010000, ["Module:ISO_3166/data/AT"] = 2500, ["Module:ISO_3166/data/BA"] = 3400, ["Module:ISO_3166/data/CA"] = 2500, ["Module:ISO_3166/data/CN"] = 2100, ["Module:ISO_3166/data/DE"] = 14000, ["Module:ISO_3166/data/ES"] = 3600, ["Module:ISO_3166/data/FR"] = 38000, ["Module:ISO_3166/data/GB"] = 6400, ["Module:ISO_3166/data/GR"] = 3100, ["Module:ISO_3166/data/IN"] = 29000, ["Module:ISO_3166/data/IR"] = 9100, ["Module:ISO_3166/data/National"] = 1010000, ["Module:ISO_3166/data/PL"] = 6700, ["Module:ISO_3166/data/RS"] = 3200, ["Module:ISO_3166/data/RU"] = 25000, ["Module:ISO_3166/data/US"] = 85000, ["Module:ISO_639_name"] = 20000, ["Module:ISOdate"] = 66000, ["Module:Icon"] = 583000, ["Module:Icon/data"] = 583000, ["Module:If_empty"] = 3680000, ["Module:If_in_page"] = 10000, ["Module:If_preview"] = 295000, ["Module:If_preview/configuration"] = 295000, ["Module:If_preview/styles.css"] = 295000, ["Module:Import_style"] = 11000, ["Module:In_lang"] = 359000, ["Module:Indent"] = 4400, ["Module:Infobox"] = 4130000, ["Module:Infobox/dates"] = 69000, ["Module:Infobox/styles.css"] = 4390000, ["Module:Infobox3cols"] = 298000, ["Module:InfoboxImage"] = 4440000, ["Module:Infobox_body_of_water_tracking"] = 18000, ["Module:Infobox_cyclist_tracking"] = 16000, ["Module:Infobox_gene"] = 13000, ["Module:Infobox_mapframe"] = 407000, ["Module:Infobox_military_conflict"] = 22000, ["Module:Infobox_military_conflict/styles.css"] = 22000, ["Module:Infobox_multi-lingual_name"] = 20000, ["Module:Infobox_multi-lingual_name/data"] = 20000, ["Module:Infobox_power_station"] = 3100, ["Module:Infobox_road"] = 25000, ["Module:Infobox_road/browselinks"] = 25000, ["Module:Infobox_road/errors"] = 24000, ["Module:Infobox_road/length"] = 25000, ["Module:Infobox_road/locations"] = 24000, ["Module:Infobox_road/map"] = 25000, ["Module:Infobox_road/route"] = 25000, ["Module:Infobox_road/sections"] = 24000, ["Module:Infobox_television"] = 57000, ["Module:Infobox_television_disambiguation_check"] = 64000, ["Module:Infobox_television_episode"] = 12000, ["Module:Infobox_television_season_disambiguation_check"] = 9100, ["Module:Infobox_television_season_name"] = 9500, ["Module:Internet_Archive"] = 19000, ["Module:IrelandByCountyCatNav"] = 3400, ["Module:Is_infobox_in_lead"] = 378000, ["Module:Is_instance"] = 337000, ["Module:Italic_title"] = 1120000, ["Module:Italic_title2"] = 5300, } 5d035dc37ac3c3fcd01d436985bf0942e4d13b49 Module:Transclusion count/data/M 828 991 3289 3064 2023-11-12T05:12:34Z wikipedia>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["M"] = 2100, ["MAD"] = 2100, ["MAR"] = 2800, ["MAS"] = 2600, ["MDG"] = 2400, ["MEX"] = 6200, ["MILHIST"] = 13000, ["MINUTE"] = 2300, ["MKD"] = 2300, ["MLB_Farm_System"] = 2100, ["MLB_Year"] = 14000, ["MLB_standings"] = 3700, ["MLBplayer"] = 4000, ["MMA_record_start"] = 3600, ["MMArecordbox"] = 3700, ["MMSI_Number"] = 3100, ["MONTH"] = 13000, ["MONTHNAME"] = 835000, ["MONTHNUMBER"] = 853000, ["MS"] = 5100, ["MV"] = 8900, ["MYS"] = 3800, ["MacTutor"] = 2000, ["Main"] = 343000, ["Main_article"] = 30000, ["Main_articles"] = 2000, ["Main_other"] = 9660000, ["Main_page_image"] = 26000, ["Main_page_image/DYK"] = 9700, ["Main_page_image/ITN/styles.css"] = 2700, ["Main_page_image/TFA"] = 4900, ["Maintenance_category"] = 38000, ["Malay_name"] = 2300, ["Map_requested"] = 6400, ["Map_requested/Category_helper"] = 6400, ["Maplink"] = 29000, ["Maplink-road"] = 6100, ["Marriage"] = 74000, ["Marriage/doc"] = 74000, ["Marriage/styles.css"] = 74000, ["Math"] = 9800, ["MathGenealogy"] = 7000, ["MathWorld"] = 2400, ["Mathgenealogy"] = 2100, ["Maths_rating"] = 20000, ["Max"] = 249000, ["Maybe_free_media"] = 12000, ["Mbox"] = 3030000, ["Mdash"] = 8900, ["MeSH_name"] = 6100, ["Medal"] = 114000, ["MedalBottom"] = 17000, ["MedalBronze"] = 55000, ["MedalComp"] = 2200, ["MedalCompetition"] = 88000, ["MedalCount"] = 3200, ["MedalCountry"] = 79000, ["MedalGold"] = 54000, ["MedalOlympic"] = 4000, ["MedalOlympics"] = 6100, ["MedalSilver"] = 53000, ["MedalSport"] = 78000, ["MedalTableTop"] = 17000, ["MedalTop"] = 3900, ["MedalWorldChampionships"] = 2100, ["MedalistTable"] = 15000, ["Medals_table"] = 14000, ["Media"] = 2600, ["Medical_resources"] = 6700, ["Merge_done"] = 3600, ["Merged-from"] = 17000, ["Merged-to"] = 19000, ["Merged_to"] = 2200, ["MeshName"] = 5900, ["Metacritic_film"] = 4100, ["Metadata_Population_DE-BY"] = 2100, ["Metadata_Population_DE-RP"] = 2300, ["Mhof"] = 7400, ["Mid-Class"] = 15000, ["Mid-importance"] = 15000, ["Middot"] = 6000, ["Midsize"] = 2200, ["MilHist"] = 5200, ["Military_navigation"] = 84000, ["Min"] = 22000, ["Minor_planet"] = 5000, ["Minor_planet_link"] = 2700, ["Minor_planet_list_link"] = 4200, ["Minor_planets_navigator"] = 3200, ["MirrorH"] = 5700, ["Missing_information"] = 3600, ["Mlby"] = 14000, ["Mobile_IP"] = 8800, ["MobyGames"] = 8900, ["Moby_game"] = 7000, ["Mod"] = 7500, ["Module_other"] = 3600, ["Mojo_title"] = 7800, ["Molecular_formula_index"] = 2300, ["Monday"] = 2700, ["Mono"] = 30000, ["Mono/styles.css"] = 31000, ["MonthCategoryNav"] = 35000, ["MonthlyArchive"] = 3600, ["MonthlyLinks"] = 3600, ["Monthly_archive_list"] = 3600, ["Monthly_clean-up_category"] = 16000, ["Monthly_clean-up_category/core"] = 16000, ["Monthly_clean-up_category/monthname"] = 17000, ["Monthly_clean-up_category/monthno"] = 17000, ["Monthly_clean-up_category/name_part"] = 17000, ["Monthly_clean-up_category/outer_core"] = 16000, ["Monthly_clean-up_category/to_add"] = 2800, ["Monthly_clean_up_category"] = 7100, ["Monthyear"] = 71000, ["Monthyear-1"] = 70000, ["MoreInfo"] = 2100, ["More_citations_needed"] = 368000, ["More_citations_needed_section"] = 16000, ["More_footnotes"] = 35000, ["More_footnotes_needed"] = 53000, ["More_plot"] = 2300, ["More_references"] = 3100, ["Moresources"] = 5900, ["Motorcycle_Hall_of_Fame"] = 7400, ["Motorcycling"] = 3200, ["Motorsport_season"] = 4900, ["Motorsport_season/styles.css"] = 4900, ["Moved_discussion_from"] = 2900, ["Moved_discussion_to"] = 2600, ["Mp"] = 5000, ["Mpl"] = 2700, ["MultiReplace"] = 212000, ["Multiple_image"] = 51000, ["Multiple_image/styles.css"] = 51000, ["Multiple_issues"] = 123000, ["Multiple_issues/styles.css"] = 123000, ["Music"] = 7600, ["MusicBrainz_artist"] = 2200, ["MusicBrainz_meta"] = 5200, ["MusicBrainz_release_group"] = 2200, ["Music_ratings"] = 96000, ["Mvar"] = 7100, ["Mw_lang"] = 80000, ["My"] = 2500, ["My_sandbox"] = 3800, ["Myprefs"] = 11000, ["Module:MLB_standings"] = 3700, ["Module:MLB_standings/data"] = 3700, ["Module:Main_page_image"] = 15000, ["Module:Mapframe"] = 432000, ["Module:Math"] = 1570000, ["Module:Medals_table"] = 14000, ["Module:Message_box"] = 18100000, ["Module:Message_box/ambox.css"] = 3140000, ["Module:Message_box/cmbox.css"] = 427000, ["Module:Message_box/configuration"] = 9610000, ["Module:Message_box/fmbox.css"] = 19000, ["Module:Message_box/imbox.css"] = 929000, ["Module:Message_box/ombox.css"] = 1590000, ["Module:Message_box/tmbox.css"] = 12400000, ["Module:Military_navigation"] = 84000, ["Module:Minor_planet_list_link"] = 4200, ["Module:MultiReplace"] = 1270000, ["Module:Multiple_image"] = 51000, ["Module:Music_ratings"] = 96000, ["Module:Mw_lang"] = 80000, } 22a58a02f62dce5a2a147541a49e16eb70c16b8d 3290 3289 2023-11-12T13:12:05Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/M]] Scribunto text/plain return { ["M"] = 2100, ["MAD"] = 2100, ["MAR"] = 2800, ["MAS"] = 2600, ["MDG"] = 2400, ["MEX"] = 6200, ["MILHIST"] = 13000, ["MINUTE"] = 2300, ["MKD"] = 2300, ["MLB_Farm_System"] = 2100, ["MLB_Year"] = 14000, ["MLB_standings"] = 3700, ["MLBplayer"] = 4000, ["MMA_record_start"] = 3600, ["MMArecordbox"] = 3700, ["MMSI_Number"] = 3100, ["MONTH"] = 13000, ["MONTHNAME"] = 835000, ["MONTHNUMBER"] = 853000, ["MS"] = 5100, ["MV"] = 8900, ["MYS"] = 3800, ["MacTutor"] = 2000, ["Main"] = 343000, ["Main_article"] = 30000, ["Main_articles"] = 2000, ["Main_other"] = 9660000, ["Main_page_image"] = 26000, ["Main_page_image/DYK"] = 9700, ["Main_page_image/ITN/styles.css"] = 2700, ["Main_page_image/TFA"] = 4900, ["Maintenance_category"] = 38000, ["Malay_name"] = 2300, ["Map_requested"] = 6400, ["Map_requested/Category_helper"] = 6400, ["Maplink"] = 29000, ["Maplink-road"] = 6100, ["Marriage"] = 74000, ["Marriage/doc"] = 74000, ["Marriage/styles.css"] = 74000, ["Math"] = 9800, ["MathGenealogy"] = 7000, ["MathWorld"] = 2400, ["Mathgenealogy"] = 2100, ["Maths_rating"] = 20000, ["Max"] = 249000, ["Maybe_free_media"] = 12000, ["Mbox"] = 3030000, ["Mdash"] = 8900, ["MeSH_name"] = 6100, ["Medal"] = 114000, ["MedalBottom"] = 17000, ["MedalBronze"] = 55000, ["MedalComp"] = 2200, ["MedalCompetition"] = 88000, ["MedalCount"] = 3200, ["MedalCountry"] = 79000, ["MedalGold"] = 54000, ["MedalOlympic"] = 4000, ["MedalOlympics"] = 6100, ["MedalSilver"] = 53000, ["MedalSport"] = 78000, ["MedalTableTop"] = 17000, ["MedalTop"] = 3900, ["MedalWorldChampionships"] = 2100, ["MedalistTable"] = 15000, ["Medals_table"] = 14000, ["Media"] = 2600, ["Medical_resources"] = 6700, ["Merge_done"] = 3600, ["Merged-from"] = 17000, ["Merged-to"] = 19000, ["Merged_to"] = 2200, ["MeshName"] = 5900, ["Metacritic_film"] = 4100, ["Metadata_Population_DE-BY"] = 2100, ["Metadata_Population_DE-RP"] = 2300, ["Mhof"] = 7400, ["Mid-Class"] = 15000, ["Mid-importance"] = 15000, ["Middot"] = 6000, ["Midsize"] = 2200, ["MilHist"] = 5200, ["Military_navigation"] = 84000, ["Min"] = 22000, ["Minor_planet"] = 5000, ["Minor_planet_link"] = 2700, ["Minor_planet_list_link"] = 4200, ["Minor_planets_navigator"] = 3200, ["MirrorH"] = 5700, ["Missing_information"] = 3600, ["Mlby"] = 14000, ["Mobile_IP"] = 8800, ["MobyGames"] = 8900, ["Moby_game"] = 7000, ["Mod"] = 7500, ["Module_other"] = 3600, ["Mojo_title"] = 7800, ["Molecular_formula_index"] = 2300, ["Monday"] = 2700, ["Mono"] = 30000, ["Mono/styles.css"] = 31000, ["MonthCategoryNav"] = 35000, ["MonthlyArchive"] = 3600, ["MonthlyLinks"] = 3600, ["Monthly_archive_list"] = 3600, ["Monthly_clean-up_category"] = 16000, ["Monthly_clean-up_category/core"] = 16000, ["Monthly_clean-up_category/monthname"] = 17000, ["Monthly_clean-up_category/monthno"] = 17000, ["Monthly_clean-up_category/name_part"] = 17000, ["Monthly_clean-up_category/outer_core"] = 16000, ["Monthly_clean-up_category/to_add"] = 2800, ["Monthly_clean_up_category"] = 7100, ["Monthyear"] = 71000, ["Monthyear-1"] = 70000, ["MoreInfo"] = 2100, ["More_citations_needed"] = 368000, ["More_citations_needed_section"] = 16000, ["More_footnotes"] = 35000, ["More_footnotes_needed"] = 53000, ["More_plot"] = 2300, ["More_references"] = 3100, ["Moresources"] = 5900, ["Motorcycle_Hall_of_Fame"] = 7400, ["Motorcycling"] = 3200, ["Motorsport_season"] = 4900, ["Motorsport_season/styles.css"] = 4900, ["Moved_discussion_from"] = 2900, ["Moved_discussion_to"] = 2600, ["Mp"] = 5000, ["Mpl"] = 2700, ["MultiReplace"] = 212000, ["Multiple_image"] = 51000, ["Multiple_image/styles.css"] = 51000, ["Multiple_issues"] = 123000, ["Multiple_issues/styles.css"] = 123000, ["Music"] = 7600, ["MusicBrainz_artist"] = 2200, ["MusicBrainz_meta"] = 5200, ["MusicBrainz_release_group"] = 2200, ["Music_ratings"] = 96000, ["Mvar"] = 7100, ["Mw_lang"] = 80000, ["My"] = 2500, ["My_sandbox"] = 3800, ["Myprefs"] = 11000, ["Module:MLB_standings"] = 3700, ["Module:MLB_standings/data"] = 3700, ["Module:Main_page_image"] = 15000, ["Module:Mapframe"] = 432000, ["Module:Math"] = 1570000, ["Module:Medals_table"] = 14000, ["Module:Message_box"] = 18100000, ["Module:Message_box/ambox.css"] = 3140000, ["Module:Message_box/cmbox.css"] = 427000, ["Module:Message_box/configuration"] = 9610000, ["Module:Message_box/fmbox.css"] = 19000, ["Module:Message_box/imbox.css"] = 929000, ["Module:Message_box/ombox.css"] = 1590000, ["Module:Message_box/tmbox.css"] = 12400000, ["Module:Military_navigation"] = 84000, ["Module:Minor_planet_list_link"] = 4200, ["Module:MultiReplace"] = 1270000, ["Module:Multiple_image"] = 51000, ["Module:Music_ratings"] = 96000, ["Module:Mw_lang"] = 80000, } 22a58a02f62dce5a2a147541a49e16eb70c16b8d Main Page 0 1 3256 3242 2023-11-12T12:24:08Z Führerredux 2 wikitext text/x-wiki == Welcome to the {{SITENAME}}! == {{#css:Main Page/styles.css}} <table style="width: 90%; position: relative; left: 5%"> <tr> <td style="padding: 10px"> '''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod, Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process. Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]]. While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary. </td> <td style="padding: 10px"> {{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br> {{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br> {{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}} </td> </tr> </table> == Articles == {| class="wikitable sortable" |- ! Articles ! Information |- |data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Majors</categorytree>'' | ''{{Miniflag}} '''[[:Category:Majors|Great Powers Articles]]''' are articles which contain information about the Great Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important_Minors</categorytree>'' | ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers'' |- |data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minors</categorytree> |{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations'' |- |data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important_Persons</categorytree> |{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders'' |} __NOTOC____NOEDITSECTION__ 9f326b2957a459541c9f31e55298cf5b57405f9f File:Flag of Germany.png 6 1727 3257 2023-11-12T12:33:28Z Führerredux 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Germany 0 450 3258 986 2023-11-12T12:49:41Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = Das Deutches Reich | common_name = Germany | native_name = Deutschland | image_flag = Flag of Germany.png | alt_flag = Flag of Germany | image_coat = Coat_of_arms_of_Germany.svg | alt_coat = The Coat of Arms of Germany | capital = Berlin | demonym = Germans }} 47b11e2353e9ae06287992a7914cf8c446b599ef 3259 3258 2023-11-12T12:57:29Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = Das Deutches Reich | common_name = Germany | native_name = {{native name|de|Deutschland}} | image_flag = Flag of Germany.png | alt_flag = Flag of Germany | image_coat = Coat_of_arms_of_Germany.svg | alt_coat = The Coat of Arms of Germany | capital = Berlin | coordinates = {{Coord|52|31|N|13|23|E}} | largest_city = capital | official_languages = German | demonym = Germans | government_type = One Party State | leader_title1 = [[Führer]] | leader_name1 = [[Adam Dressler]] | coa_size = 80 | image_map = {{switcher|[[File:EU-Germany (orthographic projection).svg|frameless]]|Show globe|[[File:EU-Germany.svg|upright=1.15|frameless]]|Show map of Europe|default=1}} | map_caption = {{map caption | location_color = dark green | region = Europe | region_color = dark grey | subregion = the [[European Union]] | subregion_color = light green }} | map_width = 250px }} [[Category:Majors]] 67a0014177deb2c60f8676261b908cee5e99a397 3272 3259 2023-11-12T12:59:41Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = Das Deutches Reich | common_name = Germany | native_name = {{native name|de|Deutschland}} | image_flag = Flag of Germany.png | alt_flag = Flag of Germany | image_coat = Coat_of_arms_of_Germany.svg | alt_coat = The Coat of Arms of Germany | capital = Berlin | coordinates = {{Coord|52|31|N|13|23|E}} | largest_city = capital | official_languages = German | demonym = Germans | government_type = One Party State | leader_title1 = [[Führer]] | leader_name1 = [[Adam Dressler]] | coa_size = 80 | image_map = {{switcher|[[File:EU-Germany (orthographic projection).svg|frameless]]|Show globe|[[File:EU-Germany.svg|upright=1.15|frameless]]|Show map of Europe|default=1}} | map_caption = {{map caption | location_color = dark green | region = Europe | region_color = dark grey | subregion = the [[European Union]] | subregion_color = light green }} | map_width = 250px }} [[Category:Articles containing German-language text]] [[Category:Majors]] 71ea062437a8cc1929d28371a0ae484fed64de96 3301 3272 2023-11-12T14:20:25Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = Das Deutches Reich | common_name = Germany | native_name = {{native name|de|Deutschland}} | image_flag = Flag of Germany.png | alt_flag = Flag of Germany | image_coat = Coat_of_arms_of_Germany.svg | alt_coat = The Coat of Arms of Germany | capital = Berlin | coordinates = {{Coord|52|31|N|13|23|E}} | largest_city = capital | official_languages = German | demonym = Germans | government_type = One Party State | leader_title1 = [[Führer]] | leader_name1 = [[Adam Dressler]] | coa_size = 80 | image_map = [[File:World_Map_1936.svg]] | map_caption = Germany | map_width = 250px }} [[Category:Articles containing German-language text]] [[Category:Majors]] 1e7367759f85c45e5e57fe4ff1fc4ea44d4ba09c 3302 3301 2023-11-12T14:22:41Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = Das Deutches Reich | common_name = Germany | native_name = {{native name|de|Deutschland}} | image_flag = Flag of Germany.png | alt_flag = Flag of Germany | image_coat = Coat_of_arms_of_Germany.svg | alt_coat = The Coat of Arms of Germany | capital = Berlin | coordinates = {{Coord|52|31|N|13|23|E}} | largest_city = capital | official_languages = German | demonym = Germans | government_type = One Party State | leader_title1 = [[Führer]] | leader_name1 = [[Adam Dressler]] | coa_size = 80 }} [[Category:Articles containing German-language text]] [[Category:Majors]] f9493ecefde828a9060d41ff3d9f832a0ef52dd5 3304 3302 2023-11-12T14:29:18Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = Das Deutches Reich | common_name = Germany | native_name = {{native name|de|Deutschland}} | image_flag = Flag of Germany.png | alt_flag = Flag of Germany | image_coat = Coat of Arms of Deutsches Reich.png | alt_coat = The Coat of Arms of Germany | national_anthem = {{lang|de|"[[Lied der Deutschen]]"|italics=no}}{{efn|From 1952 to 1990, the entire "Lied der Deutschen" was the national anthem, but only the third verse was sung on official occasions. Since 1991, the third verse alone has been the national anthem.<ref name="PresidentsOffice">{{cite web|url=http://www.bundespraesident.de/DE/Amt-und-Aufgaben/Wirken-im-Inland/Repraesentation-und-Integration/repraesentation-und-integration-node.html|title=Repräsentation und Integration|publisher=[[Bundespräsidialamt]]|language=de|url-status=live|archiveurl=https://web.archive.org/web/20160307221541/http://www.bundespraesident.de/DE/Amt-und-Aufgaben/Wirken-im-Inland/Repraesentation-und-Integration/repraesentation-und-integration-node.html|archivedate=7 March 2016|accessdate=8 March 2016}}</ref>}}<br />("Song of the Germans")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:German national anthem performed by the US Navy Band.ogg]]}}</div> | capital = Berlin | coordinates = {{Coord|52|31|N|13|23|E}} | largest_city = capital | official_languages = German | demonym = Germans | government_type = One Party State | leader_title1 = [[Führer]] | leader_name1 = [[Adam Dressler]] | coa_size = 80 }} [[Category:Articles containing German-language text]] [[Category:Majors]] 4475e167e2b7bc2cf55dfb6d03d9c340cf8c69f1 3305 3304 2023-11-12T14:30:40Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = Das Deutches Reich | common_name = Germany | native_name = {{native name|de|Deutschland}} | image_flag = Flag of Germany.png | alt_flag = Flag of Germany | image_coat = Coat of Arms of Deutsches Reich.png | alt_coat = The Coat of Arms of Germany | national_anthem = {{lang|de|"[[Lied der Deutschen]]"|italics=no}}<br />("Song of the Germans")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:German national anthem performed by the US Navy Band.ogg]]}}</div> | capital = Berlin | coordinates = {{Coord|52|31|N|13|23|E}} | largest_city = capital | official_languages = German | demonym = Germans | government_type = One Party State | leader_title1 = [[Führer]] | leader_name1 = [[Adam Dressler]] | coa_size = 80 }} [[Category:Articles containing German-language text]] [[Category:CS1 German-language sources (de)]] [[Category:Majors]] [[Category:Pages with reference errors]] 6928c3eeac2282e935351c811de7183b3600be33 3306 3305 2023-11-12T14:31:08Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = Das Deutches Reich | common_name = Germany | native_name = {{native name|de|Deutschland}} | image_flag = Flag of Germany.png | alt_flag = Flag of Germany | image_coat = Coat of Arms of Deutsches Reich.png | alt_coat = The Coat of Arms of Germany | national_anthem = {{lang|de|"Lied der Deutschen"|italics=no}}<br />("Song of the Germans")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:German national anthem performed by the US Navy Band.ogg]]}}</div> | capital = Berlin | coordinates = {{Coord|52|31|N|13|23|E}} | largest_city = capital | official_languages = German | demonym = Germans | government_type = One Party State | leader_title1 = [[Führer]] | leader_name1 = [[Adam Dressler]] | coa_size = 80 }} [[Category:Articles containing German-language text]] [[Category:CS1 German-language sources (de)]] [[Category:Majors]] [[Category:Pages with reference errors]] 02bc7f9ee28dc4790dc4d27885bff9cecf9f1d59 3307 3306 2023-11-12T14:41:41Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = Das Deutches Reich | common_name = Germany | languages = German | native_name = {{native name|de|Deutschland}} | image_flag = Flag of Germany.png | alt_flag = Flag of Germany | image_coat = Coat of Arms of Deutsches Reich.png | alt_coat = The Coat of Arms of Germany | national_anthem = {{lang|de|"Lied der Deutschen"|italics=no}}<br />("Song of the Germans")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:German national anthem performed by the US Navy Band.ogg]]}}</div> | capital = Berlin | coordinates = {{Coord|52|31|N|13|23|E}} | largest_city = capital | demonym = Germans | government_type = One Party State | leader_title1 = [[Führer]] | leader_name1 = [[Adam Dressler]] | population_estimate = 72,375,281 | population_estimate_year = 1936 | coa_size = 80 }} [[Category:Articles containing German-language text]] [[Category:CS1 German-language sources (de)]] [[Category:Majors]] [[Category:Pages with reference errors]] 4f85562d55915d690bdb012994c2742c55b230a8 3308 3307 2023-11-12T15:12:14Z Führerredux 2 wikitext text/x-wiki {{Infobox country | conventional_long_name = Das Deutches Reich | common_name = Germany | languages = German | native_name = {{native name|de|Deutschland}} | image_flag = Flag of Germany.png | alt_flag = Flag of Germany | image_coat = Coat of Arms of Deutsches Reich.png | alt_coat = The Coat of Arms of Germany | national_anthem = {{lang|de|"Lied der Deutschen"|italics=no}}<br />("Song of the Germans")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:German national anthem performed by the US Navy Band.ogg]]}}</div> | capital = Berlin | coordinates = {{Coord|52|31|N|13|23|E}} | largest_city = capital | religion = {{unbulleted list |list_style=line-height:1.3em; |class=nowrap | 59% Protestantism | 34% Catholicism | 4% Gottgläubig | 1.5% Atheism | 1.5% Other Religions}} | demonym = Germans | government_type = Federal one-party [[Valkism|Valkist]] state | leader_title1 = Führer und Reichspräsident | leader_name1 = [[Adam Dressler]] | leader_title2 = Chancellor | leader_name2 = Vacant | legislature = {{unbulleted list |list_style=line-height:1.3em; |class=nowrap | Reichstag|Reich Chamber of Valkism|Reich Economic Chamber}} | sovereignty_type = Establishment history | established_event1 = Signing of the Treaty of Versailles | established_date1 = {{nowrap|August 28 1919}} | established_event2 = Establishment of the Valkist<br>Bavarian government | established_date2 = {{nowrap|October 25 1923}} | established_event3 = {{nowrap|Reichspräsident election}} | established_date3 = April 10 1923 | established_event4 = March on Berlin | established_date4 = April 25 1932 | established_event5 = {{nowrap|First Battle of Berlin}} | established_date5 = April 28 1932 | established_event6 = Inauguration<br>of [[Adam Dressler]] | established_date6 = April 29 1932 | established_event7 = Second Battle of Berlin | established_date7 = May 1 1932 | established_event8 = Snap election of 1932 | established_date8 = May 10 1932 | population_estimate = 72,375,281 | population_estimate_year = 1936 | currency = Reichsmark | currency_code = ℛ︁ℳ︁ | coa_size = 80 | title_leader = Führer und Reichspräsident | year_leader1 = Incumbent | leader1 = [[Adam Dressler]] }} [[Category:Articles containing German-language text]] [[Category:CS1 German-language sources (de)]] [[Category:Majors]] [[Category:Pages using infobox country with syntax problems|P]] [[Category:Pages with reference errors]] 546ddc2559dc8a717c5eeba346b161f185a24549 Template:Switcher 10 1728 3261 3260 2023-11-12T12:57:55Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Switcher]] wikitext text/x-wiki <includeonly><div class="switcher-container">{{ safesubst:#if:{{{2|}}}|<div>{{{1|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|1|data-switcher-default=""}}>{{safesubst:#if:trim|{{{2|}}}}}</span></div>}}{{ safesubst:#if:{{{4|}}}|<div>{{{3|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|2|data-switcher-default=""}}>{{safesubst:#if:trim|{{{4|}}}}}</span></div>}}{{ safesubst:#if:{{{6|}}}|<div>{{{5|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|3|data-switcher-default=""}}>{{safesubst:#if:trim|{{{6|}}}}}</span></div>}}{{ safesubst:#if:{{{8|}}}|<div>{{{7|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|4|data-switcher-default=""}}>{{safesubst:#if:trim|{{{8|}}}}}</span></div>}}{{ safesubst:#if:{{{10|}}}|<div>{{{9|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|5|data-switcher-default=""}}>{{safesubst:#if:trim|{{{10|}}}}}</span></div>}}{{ safesubst:#if:{{{12|}}}|<div>{{{11|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|6|data-switcher-default=""}}>{{safesubst:#if:trim|{{{12|}}}}}</span></div>}}{{ safesubst:#if:{{{14|}}}|<div>{{{13|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|7|data-switcher-default=""}}>{{safesubst:#if:trim|{{{14|}}}}}</span></div>}}{{ safesubst:#if:{{{16|}}}|<div>{{{15|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|8|data-switcher-default=""}}>{{safesubst:#if:trim|{{{16|}}}}}</span></div>}}{{ safesubst:#if:{{{18|}}}|<div>{{{17|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|9|data-switcher-default=""}}>{{safesubst:#if:trim|{{{18|}}}}}</span></div>}}{{ safesubst:#if:{{{20|}}}|<div>{{{19|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|10|data-switcher-default=""}}>{{safesubst:#if:trim|{{{20|}}}}}</span></div>}}{{ safesubst:#if:{{{22|}}}|<div>{{{21|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|11|data-switcher-default=""}}>{{safesubst:#if:trim|{{{22|}}}}}</span></div>}}{{ safesubst:#if:{{{24|}}}|<div>{{{23|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|12|data-switcher-default=""}}>{{safesubst:#if:trim|{{{24|}}}}}</span></div>}}{{ safesubst:#if:{{{26|}}}|<div>{{{25|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|13|data-switcher-default=""}}>{{safesubst:#if:trim|{{{26|}}}}}</span></div>}}{{ safesubst:#if:{{{28|}}}|<div>{{{27|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|14|data-switcher-default=""}}>{{safesubst:#if:trim|{{{28|}}}}}</span></div>}}{{ safesubst:#if:{{{30|}}}|<div>{{{29|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|15|data-switcher-default=""}}>{{safesubst:#if:trim|{{{30|}}}}}</span></div>}}{{ safesubst:#if:{{{32|}}}|<div>{{{31|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|16|data-switcher-default=""}}>{{safesubst:#if:trim|{{{32|}}}}}</span></div>}}{{ safesubst:#if:{{{34|}}}|<div>{{{33|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|17|data-switcher-default=""}}>{{safesubst:#if:trim|{{{34|}}}}}</span></div>}}{{ safesubst:#if:{{{36|}}}|<div>{{{35|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|18|data-switcher-default=""}}>{{safesubst:#if:trim|{{{36|}}}}}</span></div>}}{{ safesubst:#if:{{{38|}}}|<div>{{{37|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|19|data-switcher-default=""}}>{{safesubst:#if:trim|{{{38|}}}}}</span></div>}}{{ safesubst:#if:{{{40|}}}|<div>{{{39|}}}<span class="switcher-label" style="display:none" {{ safesubst:#ifeq:{{{default|}}}|20|data-switcher-default=""}}>{{safesubst:#if:trim|{{{40|}}}}}</span></div>}}</div></includeonly><noinclude><!-- NOTES The includeonly tags prevent the safesubst from substituting. #if:trim is the same as trim but lowers the post-expand include size. -->{{Documentation}}</noinclude> 27599f049d0a8b8213aed569de1293a6910d6e40 Template:Switcher/doc 10 1729 3263 3262 2023-11-12T12:58:07Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Switcher/doc]] wikitext text/x-wiki {{Documentation subpage}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> This template is used to create a switchable image with caption, for use in infoboxes. Note that this template does not work in the editing preview. == Parameters == Odd numbered parameters provide the image in wikitext; even numbered parameters provide the captions. Up to 20 images are supported. == Example == <syntaxhighlight lang="wikitext"> {{Switcher | [[File:Example.png|300px]] | An example | [[File:Example image not to be used in article namespace.jpg|300px]] | A different example }} </syntaxhighlight> Output: {{Switcher | [[File:Example.png|300px]] | An example | [[File:Example image not to be used in article namespace.jpg|300px]] | A different example }} ==TemplateData== <templatedata> { "params": { "1": { "description": "Image 1 wikitext", "example": "[[File:Example.png|300px]]", "type": "unbalanced-wikitext" }, "2": { "description": "Image 1 caption", "example": "This is just an example.", "type": "string" }, "3": { "description": "See {{{1}}} (recursive)", "type": "unbalanced-wikitext" }, "4": { "description": "See {{{2}}} (recursive)", "type": "string" } }, "description": "Creates a switchable image with caption for use in infoboxes" } </templatedata> 330b78009be757eea7e8649ba816537c6af1f65d Template:Map caption 10 1730 3265 3264 2023-11-12T12:58:45Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Map_caption]] wikitext text/x-wiki <div style="text-align:center;line-height:1.15em;">Location of{{#if:{{{countryprefix|}}} |&nbsp;{{{countryprefix}}} }}&nbsp;{{#ifexist:{{{country}}} |[[{{{country}}}]] |{{{country|{{PAGENAME}}}}} }}{{#ifeq:{{{location|{{{location_color|any}}}}}}|none| |&nbsp;({{{location|{{{location_color|orange}}}}}}) }}{{#if:{{{region|{{{legend|}}}}}} |{{#if:{{{subregion|}}} |<p style="text-align:left;margin-left:1.2ex;margin-top:0px;margin-bottom:0px;line-height:1.15em;">–&nbsp; |<p style="text-align:center;margin-top:0px;margin-bottom:0px;line-height:1.15em;"> }}{{#switch:{{{region|none}}} | none = | Europe | [[Europe]] | in Europe | in [[Europe]] | on the European continent | on the [[Europe|European continent]] = in [[Europe]] | Pacific | [[Pacific]] | the Pacific | the [[Pacific]] | the Pacific Ocean = in the [[Pacific Ocean]] | Middle East | [[Middle East]] | Arctic Circle | [[Arctic Circle]] | Pacific Ocean | [[Pacific Ocean]] = in the {{#ifexist:{{{region}}}|[[{{{region}}}]]|{{{region}}}}} | #default = in {{#ifexist:{{{region}}} |[[{{{region}}}]] |{{{region}}} }} }}{{#if:{{{region|}}} |{{#ifeq:{{{region_color|any}}}|none| |&nbsp;({{#if:{{{subregion|}}} |{{#ifeq:{{{subregion_color|tan}}}|{{{region_color|white}}}| |{{#ifeq:{{{subregion_color|any}}}|none| |{{{subregion_color|tan}}} &&nbsp; }} }} }}{{{region_color|white}}}) }}{{#if:{{{subregion|}}} |<br />–&nbsp;{{#switch:{{{subregion|none}}} | EU | [[EU]] | the EU | the [[EU]] | European Union | [[European Union]] | the European Union | the [[European Union]] = in the [[European Union]] | #default = in {{#ifexist:{{{subregion}}} |[[{{{subregion}}}]] |{{{subregion}}} }} }}{{#ifeq:{{{subregion_color|any}}}|none| |&nbsp;({{{subregion_color|tan}}}) }} }} }}{{#if:{{{legend|}}} |{{#switch:<!--[13]-->{{{subregion|none}}} | EU | [[EU]] | the EU | the [[EU]] | European Union | [[European Union]] | the European Union | the [[European Union]] = {{#ifeq:{{{subregion_color|tan}}}|tan |&nbsp; |&nbsp; –&nbsp; }} | none = {{#ifeq:{{{region|none}}}|none| |&nbsp; –&nbsp; }} | #default = &nbsp; –&nbsp; }} &#91;[[:File:{{{legend}}}|Legend]]&#93; }}</p> }}</div><noinclude> {{documentation}} </noinclude> 6f689b2b33b7f1e8612ae284122114c91acec1f2 Template:Infobox country 10 241 3267 3266 2023-11-12T12:59:21Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Infobox_country]] wikitext text/x-wiki {{infobox |templatestyles = Template:Infobox country/styles.css | bodyclass = ib-country vcard | aboveclass = adr | above = {{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}} | {{#if:{{{conventional_long_name|}}} |<div class="fn org country-name">{{{conventional_long_name|}}}</div> }}{{#if:{{{native_name|}}}{{{name|}}} |<div class="ib-country-names"><!-- -->{{br separated entries |{{{native_name|}}} |{{#if:{{{name|}}} |<div class="ib-country-name-style fn org country-name">{{{name|}}}</div> }}}}</div> }}<!-- -->{{#ifeq:{{{micronation|}}}|yes |<span class="fn org">[[Micronation]]</span> }} }} | subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }} | image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}} |{{infobox country/imagetable |image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}} |caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }} |image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}} |caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }} }} }} | data1 = {{#if:{{{national_motto|}}}{{{motto|}}} |'''Motto:&nbsp;'''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!-- -->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }} }} | class2 = anthem | data2 = {{#if:{{{national_anthem|}}}{{{anthem|}}} |'''Anthem:'''&nbsp;{{if empty|{{{national_anthem|}}}|{{{anthem|}}}}} }}{{#if:{{{anthems|}}} |'''Anthems:'''&nbsp;{{{anthems}}} }}{{#if:{{{royal_anthem|}}} | <div class="ib-country-anthem">'''[[Royal anthem]]:'''&nbsp;{{{royal_anthem}}}</div> }}{{#if:{{{flag_anthem|}}} | <div class="ib-country-anthem">'''[[Flag anthem]]:'''&nbsp;{{{flag_anthem}}}</div> }}{{#if:{{{national_march|}}} | <div class="ib-country-anthem">'''National march:'''&nbsp;{{{national_march}}}</div> }}{{#if:{{{territorial_anthem|}}} | <div class="ib-country-anthem">'''Territorial anthem:'''&nbsp;{{{territorial_anthem}}}</div> }}{{#if:{{{regional_anthem|}}} | <div class="ib-country-anthem">'''Regional anthem:'''&nbsp;{{{regional_anthem}}}</div> }}{{#if:{{{state_anthem|}}} | <div class="ib-country-anthem">'''State anthem:'''&nbsp;{{{state_anthem}}}</div> }}{{#if:{{{march|}}} | <div class="ib-country-anthem">'''March:'''&nbsp;{{{march}}}</div> }} | data3 = {{#if:{{{other_symbol|}}}{{{text_symbol|}}} |{{#if:{{{other_symbol_type|}}}{{{text_symbol_type|}}} | '''{{if empty|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}'''<br/>}}<!-- -->{{if empty|{{{other_symbol|}}}|{{{text_symbol|}}}}} }} | data4 = {{#if:{{{image_map|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_width|{{{image_map_size|}}}}}}|upright=1.15|alt={{{alt_map|{{{image_map_alt|}}}}}}|title={{{map_caption|{{{image_map_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption|{{{image_map_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption|{{{image_map_caption|}}}}}}</div>}} }} | data5 = {{#if:{{{image_map2|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map2|}}}|size={{{map2_width|{{{image_map2_size|}}}}}}|upright=1.15|alt={{{alt_map2|{{{image_map2_alt|}}}}}}|title={{{map_caption2|{{{image_map2_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption2|{{{image_map2_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption2|{{{image_map2_caption|}}}}}}</div>}} }} | label6 = Status | data6 = {{#if:{{{status|}}}|{{Infobox country/status text|status={{{status|}}}|status_text={{{status_text|}}}|empire={{{empire|}}}|year_end={{{year_end|}}}|year_exile_start={{{year_exile_start|}}}|year_exile_end={{{year_exile_end|}}} }} }} | label7 = Location | data7 = {{{loctext|}}} | label8 = {{#if:{{{capital_type|}}} | {{{capital_type}}} | Capital }}{{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital |capital<!-- -->|{{#switch:{{{capital}}} | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital | {{{largest_city|}}}{{{largest_settlement|}}} = capital | not capital }}<!-- -->}}|capital <!-- (#ifeq:)-->|<!------------------------------------------ capital is largest_city/_settlement: ------------------------------------------- --><div class="ib-country-largest">and {{{largest_settlement_type|largest city}}}</div> }} | data8 = {{#if:{{{capital|}}}|{{{capital}}}{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} | rowclass9 = {{#if:{{{capital|}}}|mergedrow}} | label9 = Capital-in-exile | data9 = {{#ifexist:{{{capital_exile|}}}|[[{{{capital_exile|}}}]]|{{{capital_exile|}}}}} | rowclass10 = {{#if:{{{capital|}}}|mergedrow}} | label10 = {{#if:{{{admin_center_type|}}}| {{{admin_center_type}}} | Administrative&nbsp;center }} | data10 = {{#switch:{{{admin_center|}}} |capital | = |[[{{{capital|}}}]] = |{{{capital|}}} = |#default = {{{admin_center}}}{{#if:{{{capital|}}}||{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} }} | rowclass11 = {{#if:{{{capital|}}}{{{admin_center|}}}|mergedbottomrow}} | label11 = Largest {{{largest_settlement_type|city}}} | data11 = {{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital |capital<!-- -->|{{#switch:{{{capital}}} | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital | {{{largest_city|}}}{{{largest_settlement|}}} = capital | not capital }}<!-- -->}}|capital <!-- (#ifeq:)-->|<!-- nothing already appears above --> | {{if empty| {{{largest_city|}}} | {{{largest_settlement|}}} }} }} | rowclass12 = mergedtoprow | label12 = Official&nbsp;languages | data12 = {{{official_languages|}}} | rowclass13 = mergedrow | label13 = <span class="ib-country-lang">{{#if:{{{recognized_languages|}}}|Recognized|Recognised}}&nbsp;languages</span> | data13 = {{if empty| {{{recognized_languages|}}} | {{{recognised_languages|}}} }} | rowclass14 = mergedrow | label14 = <span class="ib-country-lang">{{#if:{{{recognized_national_languages|}}}|Recognized|Recognised}} national&nbsp;languages</span> | data14 = {{if empty| {{{recognized_national_languages|}}} | {{{recognised_national_languages|}}} | {{{national_languages|}}} }} | rowclass15 = mergedrow | label15 = <span class="ib-country-lang">{{#if:{{{recognized_regional_languages|}}}|Recognized|Recognised}} regional&nbsp;languages</span> | data15 = {{if empty| {{{recognized_regional_languages|}}} | {{{recognised_regional_languages|}}} | {{{regional_languages|}}} }} | label16 = Common&nbsp;languages | data16 = {{{common_languages|}}} | rowclass17 = {{#ifeq:{{{languages2_sub|}}}|yes |{{#ifeq:{{{languages_sub|}}}|yes |mergedrow}} |{{#ifeq:{{{languages_sub|}}}|yes |mergedbottomrow}} }} | label17 ={{#ifeq:{{{languages_sub|}}}|yes |<div class="ib-country-lang">{{if empty| {{{languages_type|}}} | Other&nbsp;languages }}</div> |{{if empty| {{{languages_type|}}} | Other&nbsp;languages }} }} | data17 = {{{languages|}}} | rowclass18 = {{#ifeq:{{{languages2_sub|}}}|yes |mergedbottomrow}} | label18 = {{#ifeq:{{{languages2_sub|}}}|yes |<div class="ib-country-lang">{{if empty|{{{languages2_type|}}} | Other&nbsp;languages }}</div> |{{if empty|{{{languages2_type|}}} | Other&nbsp;languages }} }} | data18 = {{{languages2|}}} | label19 = [[Ethnic group|Ethnic&nbsp;groups]] <!-- -->{{#if:{{{ethnic_groups_year|}}} |<div class="ib-country-ethnic"> ({{{ethnic_groups_year}}}){{{ethnic_groups_ref|}}}</div>|<div class="ib-country-ethnic">{{{ethnic_groups_ref|}}}</div>}} | data19 = {{{ethnic_groups|}}} | label20 = Religion <!-- -->{{#if:{{{religion_year|}}} |<div class="ib-country-religion"> ({{{religion_year}}}){{{religion_ref|}}}</div>|<div class="ib-country-religion">{{{religion_ref|}}}</div>}} | data20 = {{{religion|}}} | label21 = [[Demonym|Demonym(s)]] | data21 = {{#if:{{{demonym|}}} |{{#ifexist:{{{demonym}}} people | [[{{{demonym}}} people|{{{demonym}}}]] | {{{demonym}}} }} }} | label22 = Type | data22 = {{{org_type|}}} | label23 = {{if empty|{{{membership_type|}}} | Membership }} | data23 = {{{membership|}}} | label24 = {{#if:{{{government_type|}}} | {{#if:{{{politics_link|}}} | [[{{{politics_link}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!-- -->| {{#ifexist:Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!-- -->| {{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}<!-- -->}}<!-- -->}}<!-- -->}} | data24 = {{{government_type|}}} | header25 = {{#if:{{{government_type|}}} || {{#if:{{{leader_title1|}}}{{{leader_name1|}}} | {{#if:{{{name|}}}{{{membership|}}} | <!--template being used for geopolitical org:-->Leaders | <!--template being used for country/territory: -->Government }} }} }} | rowclass26 = mergedrow | data26 = {{#if:{{{leader_name1|}}}|{{Infobox country/multirow|{{{leader_title1|}}} |{{{leader_name1|}}} |{{{leader_title2|}}} |{{{leader_name2|}}} |{{{leader_title3|}}} |{{{leader_name3|}}} |{{{leader_title4|}}} |{{{leader_name4|}}} |{{{leader_title5|}}} |{{{leader_name5|}}} |{{{leader_title6|}}} |{{{leader_name6|}}} |{{{leader_title7|}}} |{{{leader_name7|}}} |{{{leader_title8|}}} |{{{leader_name8|}}} |{{{leader_title9|}}} |{{{leader_name9|}}} |{{{leader_title10|}}} |{{{leader_name10|}}} |{{{leader_title11|}}} |{{{leader_name11|}}} |{{{leader_title12|}}} |{{{leader_name12|}}} |{{{leader_title13|}}} |{{{leader_name13|}}} |{{{leader_title14|}}} |{{{leader_name14|}}} |{{{leader_title15|}}} |{{{leader_name15|}}} }} }} | rowclass27 = mergedrow | label27 = {{#if:{{{title_leader|}}}| {{{title_leader}}} }} | data27 = {{#if:{{{title_leader|}}}|&nbsp;}} | rowclass28 = mergedrow | data28 = {{#if:{{{year_leader1|}}} | {{Infobox country/multirow|{{{year_leader1|}}} |{{{leader1|}}} |{{{year_leader2|}}} |{{{leader2|}}} |{{{year_leader3|}}} |{{{leader3|}}} |{{{year_leader4|}}} |{{{leader4|}}} |{{{year_leader5|}}} |{{{leader5|}}} |{{{year_leader6|}}} |{{{leader6|}}} |{{{year_leader7|}}} |{{{leader7|}}} |{{{year_leader8|}}} |{{{leader8|}}} |{{{year_leader9|}}} |{{{leader9|}}} |{{{year_leader10|}}} |{{{leader10|}}} |{{{year_leader11|}}} |{{{leader11|}}}|{{{year_leader12|}}} |{{{leader12|}}}|{{{year_leader13|}}} |{{{leader13|}}}|{{{year_leader14|}}} |{{{leader14|}}}|{{{year_leader15|}}} |{{{leader15|}}} }} }} | rowclass29 = mergedrow | label29 = {{#if:{{{title_representative|}}}| {{{title_representative}}} }} | data29 = {{#if:{{{title_representative|}}}|&nbsp;}} | rowclass30 = mergedrow | data30 = {{#if:{{{year_representative1|}}}|{{Infobox country/multirow|{{{year_representative1|}}} |{{{representative1|}}} |{{{year_representative2|}}} |{{{representative2|}}} |{{{year_representative3|}}} |{{{representative3|}}} |{{{year_representative4|}}} |{{{representative4|}}} |{{{year_representative5|}}} |{{{representative5|}}}|{{{year_representative6|}}} |{{{representative6|}}}|{{{year_representative7|}}} |{{{representative7|}}}|{{{year_representative8|}}} |{{{representative8|}}} }} }} | rowclass31 = mergedrow | label31 = {{#if:{{{title_deputy|}}}|{{{title_deputy}}} }} | data31 = {{#if:{{{title_deputy|}}}|&nbsp;}} | rowclass32 = mergedrow | data32 = {{#if:{{{year_deputy1|}}}|{{Infobox country/multirow|{{{year_deputy1|}}} |{{{deputy1|}}} |{{{year_deputy2|}}} |{{{deputy2|}}} |{{{year_deputy3|}}} |{{{deputy3|}}} |{{{year_deputy4|}}} |{{{deputy4|}}} |{{{year_deputy5|}}} |{{{deputy5|}}} |{{{year_deputy6|}}} |{{{deputy6|}}}|{{{year_deputy7|}}} |{{{deputy7|}}}|{{{year_deputy8|}}} |{{{deputy8|}}}|{{{year_deputy9|}}} |{{{deputy9|}}}|{{{year_deputy10|}}} |{{{deputy10|}}}|{{{year_deputy11|}}} |{{{deputy11|}}}|{{{year_deputy12|}}} |{{{deputy12|}}}|{{{year_deputy13|}}} |{{{deputy13|}}}|{{{year_deputy14|}}} |{{{deputy14|}}}|{{{year_deputy15|}}} |{{{deputy15|}}} }} }} | label40 = Legislature | data40 = {{{legislature|}}} | rowclass41 = mergedrow | label41 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{type_house1|}}}|{{{type_house1}}}|[[Upper house]]}}</div> | data41 = {{{upper_house|{{{house1|}}}}}} | rowclass42 = mergedbottomrow | label42 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{type_house2|}}}|{{{type_house2}}}|[[Lower house]]}}</div> | data42 = {{{lower_house|{{{house2|}}}}}} | rowclass43 = {{#if:{{{established_event1|}}} |mergedtoprow}} | header43 = {{#if:{{{established_event1|}}}{{{sovereignty_type|}}} |{{#if:{{{sovereignty_type|}}} | {{{sovereignty_type}}}<!-- -->{{#if:{{{sovereignty_note|}}} |&nbsp;<div class="ib-country-sovereignty">{{{sovereignty_note}}}</div>}} | {{#if:{{{established|}}}| | Establishment }} }} }} | label44 = Establishment | data44 = {{#if:{{{sovereignty_type|}}} | |{{{established|}}} }} | label45 = {{#if:{{{era|}}}|Historical era|History}} | data45 = {{#if:{{{era|}}} |{{#ifexist:{{{era|}}}|[[{{{era}}}]]|{{{era}}}}} | {{#if:{{{date_start|}}}{{{year_start|}}}|&nbsp;}}}} | rowclass46 = {{#if:{{{established_event1|}}} |mergedrow |mergedbottomrow}} | data46 = {{#if:{{{established_date1|}}}|{{Infobox country/multirow |{{{established_event1|}}} |{{{established_date1||}}} |{{{established_event2|}}} |{{{established_date2||}}} |{{{established_event3|}}} |{{{established_date3|}}} |{{{established_event4|}}} |{{{established_date4|}}} |{{{established_event5|}}} |{{{established_date5|}}} |{{{established_event6|}}} |{{{established_date6|}}} |{{{established_event7|}}} |{{{established_date7|}}} |{{{established_event8|}}} |{{{established_date8|}}} |{{{established_event9|}}} |{{{established_date9|}}} |{{{established_event10|}}} |{{{established_date10|}}} |{{{established_event11|}}} |{{{established_date11|}}} |{{{established_event12|}}} |{{{established_date12|}}} |{{{established_event13|}}} |{{{established_date13|}}} |{{{established_event14|}}} |{{{established_date14|}}} |{{{established_event15|}}} |{{{established_date15|}}} |{{{established_event16|}}} |{{{established_date16|}}} |{{{established_event17|}}} |{{{established_date17|}}} |{{{established_event18|}}} |{{{established_date18|}}} |{{{established_event19|}}} |{{{established_date19|}}} |{{{established_event20|}}} |{{{established_date20|}}} }} }} | rowclass47 = {{#if:{{{date_start|}}}{{{year_start|}}} |mergedrow |mergedbottomrow}} | data47 = {{#if:{{{date_start|}}}{{{year_start|}}}|{{Infobox country/multirow |{{{event_pre|}}} |{{{date_pre|}}} |{{if empty|{{{event_start|}}}|Established}} |{{{date_start|}}} {{{year_start|}}} |{{{event1|}}} |{{{date_event1|}}} |{{{event2|}}} |{{{date_event2|}}} |{{{event3|}}} |{{{date_event3|}}} |{{{event4|}}} |{{{date_event4|}}} |{{{event5|}}} |{{{date_event5|}}} |{{{event6|}}} |{{{date_event6|}}}|{{{event7|}}} |{{{date_event7|}}}|{{{event8|}}} |{{{date_event8|}}}|{{{event9|}}} |{{{date_event9|}}}|{{{event10|}}} |{{{date_event10|}}} |{{if empty|{{{event_end|}}}|Disestablished}} |{{{date_end|}}} {{{year_end|}}} |{{{event_post|}}} |{{{date_post|}}} }} }} | rowclass60 = mergedtoprow | header60 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}} | {{#if:{{{area_link|}}} | [[{{{area_link}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]] | {{#ifexist:Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]] | Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}<!-- -->}}<!-- -->}} }} | rowclass61 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label61 = <div class="ib-country-fake-li">•&nbsp;{{{area_label|Total}}}{{{FR_foot4|}}}</div> | data61 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}} |{{#if:{{{area_km2|}}}{{{area_sq_mi|}}} |{{convinfobox|{{{area_km2|}}}|km2|{{{area_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_ha|}}}{{{area_acre|}}} |{{convinfobox|{{{area_ha|}}}|ha|{{{area_acre|}}}|acre|abbr=on}} }} }}{{{area_footnote|}}}{{#if:{{{area_rank|}}} |&#32;([[List of countries and dependencies by area|{{{area_rank}}}]]) }} }} | rowclass62 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label62 = <div class="ib-country-fake-li">•&nbsp;Land</div> | data62 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}} |{{#if:{{{area_land_km2|}}}{{{area_land_sq_mi|}}} |{{convinfobox|{{{area_land_km2|}}}|km2|{{{area_land_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_land_ha|}}}{{{area_land_acre|}}} |{{convinfobox|{{{area_land_ha|}}}|ha|{{{area_land_acre|}}}|acre|abbr=on}} }} }}{{{area_land_footnote|}}} }} | rowclass63 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label63 = <div class="ib-country-fake-li">•&nbsp;Water</div> | data63 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}} |{{#if:{{{area_water_km2|}}}{{{area_water_sq_mi|}}} |{{convinfobox|{{{area_water_km2|}}}|km2|{{{area_water_sq_mi|}}}|sqmi|abbr=on}} |{{#if:{{{area_water_ha|}}}{{{area_water_acre|}}} |{{convinfobox|{{{area_water_ha|}}}|ha|{{{area_water_acre|}}}|acre|abbr=on}} }} }}{{{area_water_footnote|}}} }} | rowclass64 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label64 = <div class="ib-country-fake-li">•&nbsp;Water&nbsp;(%)</div> | data64 = {{{percent_water|}}} | rowclass65 = {{#if:{{{FR_metropole|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label65 = <div class="ib-country-fake-li">•&nbsp;{{{area_label2|}}}</div> | data65 = {{#if:{{{area_label2|}}}| {{{area_data2|}}} }} | rowclass66 = {{#if:{{{FR_metropole|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label66 = <div class="ib-country-fake-li">•&nbsp;{{{area_label3|}}}</div> | data66 = {{#if:{{{area_label3|}}}| {{{area_data3|}}} }} | rowclass67 = {{#if:{{{FR_metropole|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label67 = {{{stat_year1|}}}{{{ref_area1|}}} | data67 = {{#if: {{{stat_area1|}}} | {{convinfobox|{{{stat_area1|}}}|km2||sqmi}} }} | rowclass68 = {{#if:{{{FR_metropole|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label68 = {{{stat_year2|}}}{{{ref_area2|}}} | data68 = {{#if: {{{stat_area2|}}} | {{convinfobox|{{{stat_area2|}}}|km2||sqmi}} }} | rowclass69 = {{#if:{{{FR_metropole|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label69 = {{{stat_year3|}}}{{{ref_area3|}}} | data69 = {{#if: {{{stat_area3|}}} | {{convinfobox|{{{stat_area3|}}}|km2||sqmi}} }} | rowclass70 = {{#if:{{{FR_metropole|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}} | label70 = {{{stat_year4|}}}{{{ref_area4|}}} | data70 = {{#if: {{{stat_area4|}}} | {{convinfobox|{{{stat_area4|}}}|km2||sqmi}} }} | rowclass71 = {{#if:{{{FR_metropole|}}}|mergedrow|mergedbottomrow}} | label71 = {{{stat_year5|}}}{{{ref_area5|}}} | data71 = {{#if: {{{stat_area5|}}} | {{convinfobox|{{{stat_area5|}}}|km2||sqmi}} }} | rowclass72 = mergedrow | label72 = <div class="ib-country-fake-li">•&nbsp;{{{FR_metropole}}}</div> | data72 = {{#if:{{{FR_metropole|}}}| <nowiki /> }} | rowclass73 = mergedrow | label73 = <div class="ib-country-fake-li2">•&nbsp;[[Institut Géographique National|IGN]]{{{FR_foot2|}}}</div> | data73 = {{#if:{{{FR_metropole|}}} |{{#if:{{{FR_IGN_area_km2|}}}{{{FR_IGN_area_sq_mi|}}} |{{convinfobox|{{{FR_IGN_area_km2|}}}|km2|{{{FR_IGN_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_IGN_area_rank|}}}|&#32;([[List of countries and dependencies by area|{{{FR_IGN_area_rank|}}}]])}} }} }} | rowclass89 = mergedbottomrow | label89 = <div class="ib-country-fake-li2">•&nbsp;[[Cadastre]]{{{FR_foot3|}}}</div> | data89 = {{#if:{{{FR_metropole|}}} |{{#if:{{{FR_cadastre_area_km2|}}}{{{FR_cadastre_area_sq_mi|}}} | {{convinfobox|{{{FR_cadastre_area_km2|}}}|km2|{{{FR_cadastre_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_cadastre_area_rank|}}}|&#32;([[List of countries and dependencies by area|{{{FR_cadastre_area_rank|}}}]])}} }} }} | rowclass90 = mergedtoprow | header90 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}} |{{#if:{{{population_link|}}} | {{#ifeq:{{{population_link}}}|no|Population|[[{{{population_link}}}|Population]]}}<!-- -->| {{#ifexist:Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Population]]<!-- -->| Population<!-- -->}}<!-- -->}} }} | rowclass91 = mergedrow | label91 = <div class="ib-country-fake-li">•&nbsp;{{#if:{{{population_estimate_year|}}} |{{{population_estimate_year}}} estimate|Estimate}}</div> | data91 = {{#if:{{{population_estimate|}}} |{{{population_estimate}}}<!-- -->{{#if:{{{population_estimate_rank|}}} |&#32;([[List of countries and dependencies by population|{{{population_estimate_rank}}}]])}} }} | rowclass92 = mergedrow | label92= <div class="ib-country-fake-li">•&nbsp;{{{population_label2|}}}</div> | data92= {{#if:{{{population_label2|}}}|{{{population_data2|}}}}} | rowclass93= mergedrow | label93= <div class="ib-country-fake-li">•&nbsp;{{{population_label3|}}}</div> | data93= {{#if:{{{population_label3|}}}|{{{population_data3|}}}}} | rowclass94= mergedrow | data94= {{#if:{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}|{{infobox country/multirow|{{{stat_year1|}}}{{{ref_pop1|}}} |{{{stat_pop1|}}}|{{{stat_year2|}}}{{{ref_pop2|}}} |{{{stat_pop2|}}}|{{{stat_year3|}}}{{{ref_pop3|}}} |{{{stat_pop3|}}}|{{{stat_year4|}}}{{{ref_pop4|}}} |{{{stat_pop4|}}}|{{{stat_year5|}}}{{{ref_pop5|}}} |{{{stat_pop5|}}} }} }} | rowclass95= mergedrow | label95= <div class="ib-country-fake-li">•&nbsp;{{#if:{{{population_census_year|}}} |{{{population_census_year}}}&nbsp;census|Census}}</div> | data95= {{#if:{{{population_census|}}} |{{{population_census}}}<!-- -->{{#if:{{{population_census_rank|}}} |&#32;([[List of countries and dependencies by population|{{{population_census_rank}}}]])}} }} | rowclass96= mergedrow | label96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|{{nobold|1=&nbsp;({{{FR_total_population_estimate_year}}})}}}}}} | data96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|<nowiki />}}}} | rowclass97 = mergedrow | label97= <div class="ib-country-fake-li">•&nbsp;Total{{{FR_foot|}}}</div> | data97= {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate|}}} |{{{FR_total_population_estimate}}}{{#if:{{{FR_total_population_estimate_rank|}}}|&#32;([[List of countries by population in 2005|{{{FR_total_population_estimate_rank}}}]])}} }} }} | rowclass98 = mergedrow | label98= <div class="ib-country-fake-li">•&nbsp;{{{FR_metropole}}}</div> | data98= {{#if:{{{FR_metropole_population|}}}|{{{FR_metropole_population}}}{{#if:{{{FR_metropole_population_estimate_rank|}}} |&#32;([[List of countries by population in 2005|{{{FR_metropole_population_estimate_rank}}}]])}} }} | rowclass99 = mergedbottomrow | label99= <div class="ib-country-fake-li">•&nbsp;Density{{{FR_foot5|}}}</div> | data99= {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}} | {{convinfobox|{{{population_density_km2|}}}|/km2|{{{population_density_sq_mi|}}}|/sqmi|1|abbr=on}}{{{pop_den_footnote|}}}<!-- -->{{#if:{{{population_density_rank|}}} |&#32;([[List of countries and dependencies by population density|{{{population_density_rank}}}]])}} }} | rowclass100 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}|mergedbottomrow|mergedtoprow}} | label100 = Membership | data100= {{{nummembers|}}} | rowclass101= mergedtoprow | label101= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&nbsp;{{nobold|([[Purchasing power parity|PPP]])}} | data101= {{#if:{{{GDP_PPP|}}}{{{GDP_PPP_per_capita|}}} |{{#if:{{{GDP_PPP_year|}}} |{{{GDP_PPP_year}}}&nbsp;}}estimate }} | rowclass102= mergedrow | label102= <div class="ib-country-fake-li">•&nbsp;Total</div> | data102= {{#if:{{{GDP_PPP|}}} |{{{GDP_PPP}}}<!-- -->{{#if:{{{GDP_PPP_rank|}}} |&#32;([[List of countries by GDP (PPP)|{{{GDP_PPP_rank}}}]])}} }} | rowclass103= mergedbottomrow | label103= <div class="ib-country-fake-li">•&nbsp;Per capita</div> | data103= {{#if:{{{GDP_PPP_per_capita|}}} |{{{GDP_PPP_per_capita}}}<!-- -->{{#if:{{{GDP_PPP_per_capita_rank|}}} |&#32;([[List of countries by GDP (PPP) per capita|{{{GDP_PPP_per_capita_rank}}}]])}} }} | rowclass104= mergedtoprow | label104= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&nbsp;{{nobold|(nominal)}} | data104= {{#if:{{{GDP_nominal|}}}{{{GDP_nominal_per_capita|}}} |{{#if:{{{GDP_nominal_year|}}} |{{{GDP_nominal_year}}}&nbsp;}}estimate }} | rowclass105= mergedrow | label105= <div class="ib-country-fake-li">•&nbsp;Total</div> | data105= {{#if:{{{GDP_nominal|}}} |{{{GDP_nominal}}}<!-- -->{{#if:{{{GDP_nominal_rank|}}} |&#32;([[List of countries by GDP (nominal)|{{{GDP_nominal_rank}}}]])}} }} | rowclass106= mergedbottomrow | label106= <div class="ib-country-fake-li">•&nbsp;Per capita</div> | data106= {{#if:{{{GDP_nominal_per_capita|}}} | {{{GDP_nominal_per_capita}}}<!-- -->{{#if:{{{GDP_nominal_per_capita_rank|}}} |&#32;([[List of countries by GDP (nominal) per capita|{{{GDP_nominal_per_capita_rank}}}]])}} }} | label107= [[Gini_coefficient|Gini]]{{#if:{{{Gini_year|}}} |&nbsp;{{nobold|1=({{{Gini_year}}})}}}} | data107= {{#if:{{{Gini|}}} | {{#switch:{{{Gini_change|}}} |increase = {{increaseNegative}}&nbsp;<!-- -->|decrease = {{decreasePositive}}&nbsp;<!-- -->|steady = {{steady}}&nbsp;<!-- -->}}{{{Gini}}}{{{Gini_ref|}}}<br/><!-- ---------Evaluate and add Gini category:---------- -->{{nowrap|1=<!-- -->{{#iferror:<!-- -->{{#ifexpr:{{{Gini}}}>100 <!-- -->| {{error|Error: Gini value above 100}}<!--Handled by outer #iferror, not visible to users--><!-- -->| {{#ifexpr:{{{Gini}}}>=60 |{{color|red|very high}}<!-- -->| {{#ifexpr:{{{Gini}}}>=46 <!-- -->| {{color|darkred|high}}<!-- -->| {{#ifexpr:{{{Gini}}}>=30 <!-- -->| {{color|orange|medium}}<!-- -->| {{#ifexpr:{{{Gini}}}>=0 <!-- -->| {{color|forestgreen|low}}<!-- -->| {{error|Error:Gini value below 0}}<!--Handled by outer #iferror, not visible to users--><!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->| {{error|Error: Invalid Gini value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!-- -->}}<!-- -->}}<!-- -----------Add Gini_rank (if supplied):---------- -->{{#if:{{{Gini_rank|}}} |&nbsp;·&nbsp;[[List of countries by income equality|{{{Gini_rank}}}]]<!-- -->}}<!-- -->}} | label108= [[Human Development Index|HDI]]{{#if:{{{HDI_year|}}} |&nbsp;{{nobold|1=({{{HDI_year}}})}}}} | data108= {{#if:{{{HDI|}}} | {{#switch:{{{HDI_change|}}} |increase = {{increase}}&nbsp;<!-- -->|decrease = {{decrease}}&nbsp;<!-- -->|steady = {{steady}}&nbsp;<!-- -->}}{{{HDI}}}{{{HDI_ref|}}}<br/><!-- ---------Evaluate and add HDI category:--------- -->{{nowrap|1=<!-- -->{{#iferror:<!-- -->{{#ifexpr:{{{HDI}}}>1 <!-- -->| {{error|Error: HDI value greater than 1}}<!--Handled by outer #iferror, not visible to users--><!-- -->| {{#ifexpr:{{{HDI}}}>0.799 <!-- -->| {{color|darkgreen|very high}}<!-- -->| {{#ifexpr:{{{HDI}}}>0.699 <!-- -->| {{color|forestgreen|high}}<!-- -->| {{#ifexpr:{{{HDI}}}>0.549 <!-- -->| {{color|orange|medium}}<!-- -->| {{#ifexpr:{{{HDI}}}>=0.000<!-- -->| {{color|red|low}}<!-- -->| {{error|Error: HDI value less than 0}}<!--Handled by outer #iferror, not visible to users--><!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->| {{error|Error: Invalid HDI value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!-- -->}}<!-- -->}}<!-- ----------Add HDI_rank (if supplied):----------- -->{{#if:{{{HDI_rank|}}} |&nbsp;·&nbsp;[[List of countries by Human Development Index|{{{HDI_rank}}}]]<!-- -->}}<!-- -->}} | label109= {{#ifeq:{{{micronation|}}}|yes|Purported currency|Currency}} | data109= {{#if:{{{currency|}}} | {{{currency}}} {{#if:{{{currency_code|}}} |([[ISO 4217|{{{currency_code}}}]])}} }} | rowclass119= {{#if:{{{utc_offset_DST|}}}{{{DST_note|}}} |mergedtoprow}} | label119= Time zone | data119= {{#if:{{{utc_offset|}}} |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset}}}}} {{#if:{{{time_zone|}}}|({{{time_zone}}})}} |{{{time_zone|}}} }} | rowclass120= {{#if:{{{DST_note|}}} |mergedrow |mergedbottomrow}} | label120= <div class="ib-country-fake-li">•&nbsp;Summer&nbsp;([[Daylight saving time|DST]])</div> | data120= {{#if:{{{utc_offset_DST|}}} |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset_DST}}}}} {{#if:{{{time_zone_DST|}}}|({{{time_zone_DST}}})|{{#if:{{{DST|}}}|({{{DST}}})}}}} |{{#if:{{{time_zone_DST|}}}|{{{time_zone_DST}}}|{{{DST|}}}}} }} | rowclass121= mergedbottomrow | label121= <nowiki /> | data121= {{{DST_note|}}} | label122 = [[Antipodes]] | data122= {{{antipodes|}}} | label123 = Date format | data123= {{{date_format|}}} | label125= [[Left- and right-hand traffic|Driving side]] | data125= {{#if:{{{drives_on|}}} | {{lcfirst:{{{drives_on}}}}} }} | label126= {{#if:{{{calling_code|}}} |{{#ifexist:Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}} | [[Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Calling code]] | Calling code }} }} | data126= {{{calling_code|}}} | label127= [[ISO 3166|ISO 3166 code]] | data127= {{#switch:{{{iso3166code|}}} |omit = <!--(do nothing)--> | = <!--if iso3166code is not supplied: -->{{#if:{{{common_name|}}} | {{#if:{{ISO 3166 code|{{{common_name}}}|nocat=true}} | [[ISO 3166-2:{{ISO 3166 code|{{{common_name}}}}}|{{ISO 3166 code|{{{common_name}}}}}]] }} }} |#default = [[ISO 3166-2:{{uc:{{{iso3166code}}}}}|{{uc:{{{iso3166code}}}}}]] }} | label128= [[Country code top-level domain|Internet TLD]] | data128= {{{cctld|}}} | data129 = {{#if:{{{official_website|}}} |<div class="ib-country-website">'''Website'''<br/>{{{official_website}}}</div> }} | data130= {{#if:{{{image_map3|{{{location_map|}}}}}} | {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map3|{{{location_map|}}}}}}|size={{{map3_width|}}}|upright=1.15|alt={{{alt_map3|}}}|title=Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}<!-- -->{{#if:{{{map_caption3|}}}|<div class="ib-country-map-caption3">{{{map_caption3|}}}</div>}} }} | data134 = {{#if:{{{p1|}}}{{{s1|}}} |{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_p22={{{flag_p22|}}}|image_p22={{{image_p22|}}}|p22={{{p22|}}}|border_p22={{{border_p22|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}|flag_s22={{{flag_s22|}}}|image_s22={{{image_s22|}}}|s22={{{s22|}}}|border_s22={{{border_s22|}}}}} }} | label135 = Today part of | data135 = {{{today|}}} | data136 = {{#if:{{{footnote_a|}}}{{{footnote_b|}}}{{{footnote_c|}}}{{{footnote_d|}}}{{{footnote_e|}}}{{{footnote_f|}}}{{{footnote_g|}}}{{{footnote_h|}}} |<div class="ib-country-fn"><ol class="ib-country-fn-alpha"> {{#if:{{{footnote_a|}}}|<li value=1>{{{footnote_a|}}}</li> }}{{#if:{{{footnote_b|}}}|<li value=2>{{{footnote_b|}}}</li> }}{{#if:{{{footnote_c|}}}|<li value=3>{{{footnote_c|}}}</li> }}{{#if:{{{footnote_d|}}}|<li value=4>{{{footnote_d|}}}</li> }}{{#if:{{{footnote_e|}}}|<li value=5>{{{footnote_e|}}}</li> }}{{#if:{{{footnote_f|}}}|<li value=6>{{{footnote_f|}}}</li> }}{{#if:{{{footnote_g|}}}|<li value=7>{{{footnote_g|}}}</li> }}{{#if:{{{footnote_h|}}}|<li value=8>{{{footnote_h|}}}</li>}} </ol></div>}} | data137 = {{#if:{{{footnote1|}}}{{{footnote2|}}}{{{footnote3|}}}{{{footnote4|}}}{{{footnote5|}}}{{{footnote6|}}}{{{footnote7|}}}{{{footnote8|}}} |<div class="ib-country-fn"><ol class="ib-country-fn-num"> {{#if:{{{footnote1|}}}|<li value=1>{{{footnote1|}}}</li> }}{{#if:{{{footnote2|}}}|<li value=2>{{{footnote2|}}}</li> }}{{#if:{{{footnote3|}}}|<li value=3>{{{footnote3|}}}</li> }}{{#if:{{{footnote4|}}}|<li value=4>{{{footnote4|}}}</li> }}{{#if:{{{footnote5|}}}|<li value=5>{{{footnote5|}}}</li> }}{{#if:{{{footnote6|}}}|<li value=6>{{{footnote6|}}}</li> }}{{#if:{{{footnote7|}}}|<li value=7>{{{footnote7|}}}</li> }}{{#if:{{{footnote8|}}}|<li value=8>{{{footnote8|}}}</li>}} </ol></div>}} | data138 = {{#if:{{{footnotes|}}}|<div class="ib-country-fn">{{{footnotes}}}{{#if:{{{footnotes2|}}}|<br>{{{footnotes2}}}}}</div>}} | belowclass = mergedtoprow noprint | below = {{#if:{{{navbar|}}}| {{navbar|{{{navbar|}}}}} }} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox country with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox country]] with unknown parameter "_VALUE_"|ignoreblank=y| admin_center_type | admin_center | alt_coat | alt_flag | alt_flag2 | alt_map | alt_map2 | alt_map3 | alt_symbol | anthem | anthems | antipodes | area_acre | area_data2 | area_data3 | area_footnote | area_ha | area_km2 | area_label | area_label2 | area_label3 | area_land_acre | area_land_footnote | area_land_ha | area_land_km2 | area_land_sq_mi | area_link | area_rank | area_sq_mi | area_water_acre | area_water_footnote | area_water_ha | area_water_km2 | area_water_sq_mi | regexp1 = border_[ps][%d]+ | calling_code | capital_exile | capital_type | capital | cctld | coa_size | coat_alt | common_languages | common_name | conventional_long_name | coordinates | currency_code | currency | date_end | regexp2 = date_event[%d]+ | date_format | date_post | date_pre | date_start | demonym | regexp3 = deputy[%d]+ | drives_on | DST_note | DST | empire | englishmotto | era | regexp4 = established_date[%d]+ | regexp5 = established_event[%d]+ | established | ethnic_groups_ref | ethnic_groups_year | ethnic_groups | event_end | event_post | event_pre | event_start | regexp6 = event[%d]+ | flag| flag_alt | flag_alt2 | flag_border | flag_caption | flag_caption | regexp7 = flag_[ps][%d]+ | flag_size | flag_type | flag_type_article | flag_width | flag2_border | regexp8 = footnote_[a-h] | regexp9 = footnote[%d]+ | footnotes | footnotes2 | FR_cadastre_area_km2 | FR_cadastre_area_rank | FR_cadastre_area_sq_mi | FR_foot | FR_foot2 | FR_foot3 | FR_foot4 | FR_foot5 | FR_IGN_area_km2 | FR_IGN_area_rank | FR_IGN_area_sq_mi | FR_metropole_population_estimate_rank | FR_metropole_population | FR_metropole | FR_total_population_estimate_rank | FR_total_population_estimate_year | FR_total_population_estimate | GDP_nominal_per_capita_rank | GDP_nominal_per_capita | GDP_nominal_rank | GDP_nominal_year | GDP_nominal | GDP_PPP_per_capita_rank | GDP_PPP_per_capita | GDP_PPP_rank | GDP_PPP_year | GDP_PPP | Gini_change | Gini_rank | Gini_ref | Gini_year | Gini | government_type | HDI_change | HDI_rank | HDI_ref | HDI_year | HDI | house1 | house2 | image_coat | image_flag | image_flag2 | image_map_alt | image_map_caption | image_map_size | image_map | image_map2_alt | image_map2_caption | image_map2_size | image_map2 | image_map3 | regexp10 = image_[ps][%d]+ | image_symbol | iso3166code | languages_sub | languages_type | languages | languages2_sub | languages2_type | languages2 | largest_city | largest_settlement_type | largest_settlement | regexp11 = leader_name[%d]+ | regexp12 = leader_title[%d]+ | regexp13 = leader[%d]+ | legislature | life_span | linking_name | location_map | loctext | lower_house | map_caption | map_caption2 | map_caption3 | map_width | map2_width | map3_width | membership_type | membership | micronation | motto | name | national_anthem | national_languages | national_motto | native_name | navbar | nummembers | official_languages | official_website | org_type | other_symbol_type | other_symbol | regexp14 = [ps][%d]+ | patron_saint | patron_saints | percent_water | politics_link | pop_den_footnote | population_census_rank | population_census_year | population_census | population_data2 | population_data3 | population_density_km2 | population_density_rank | population_density_sq_mi | population_estimate_rank | population_estimate_year | population_estimate | population_label2 | population_label3 | population_link | recognised_languages | recognised_national_languages | recognised_regional_languages | recognized_languages | recognized_national_languages | regexp15 = ref_area[%d]+ | regexp16 = ref_pop[%d]+ | regional_languages | recognized_regional_languages | religion_ref | religion_year | religion | regexp17 = representative[%d]+ | royal_anthem | flag_anthem | march | national_march | regional_anthem | territorial_anthem | state_anthem | sovereignty_note | sovereignty_type | regexp18 = stat_area[%d]+ | regexp19 = stat_pop[%d]+ | regexp20 = stat_year[%d]+ | status_text | status | symbol| symbol_type_article | symbol_type | symbol_width | text_symbol_type | text_symbol | time_zone_DST | time_zone | title_deputy | title_leader | title_representative | today | type_house1 | type_house2 | upper_house | utc_offset_DST | utc_offset | regexp21 = year_deputy[%d]+ | year_end | year_exile_end | year_exile_start | regexp22 = year_leader[%d]+ | regexp23 = year_representative[%d]+ | year_start}}{{main other| {{#if:{{both|{{{image_coat|}}}|{{{image_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|A]] }}{{#if:{{both|{{{alt_coat|}}}|{{{alt_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|B]] }}{{#if:{{both|{{{motto|}}}|{{{national_motto|}}}}}|[[Category:Pages using infobox country with syntax problems|C]] }}{{#if:{{both|{{{national_anthem|}}}|{{{anthem|}}}}}|[[Category:Pages using infobox country with syntax problems|D]] }}{{#if:{{both|{{{other_symbol|}}}|{{{text_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|E]] }}{{#if:{{both|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}|[[Category:Pages using infobox country with syntax problems|F]] }}{{#if:{{both|{{{largest_city|}}}|{{{largest_settlement|}}}}}|[[Category:Pages using infobox country with syntax problems|G]] }}{{#if:{{both|{{{recognized_languages|}}}|{{{recognised_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|H]] }}{{#if:{{both|{{{recognized_national_languages|}}}|{{{recognised_national_languages|}}}}}{{both|{{{recognized_regional_languages|}}}|{{{recognised_regional_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|I]] }}{{#if:{{{official_languages|}}}||{{#if:{{{recognized_languages|}}}{{{recognised_languages|}}}{{{recognized_national_languages|}}}{{{recognised_national_languages|}}}{{{recognized_regional_languages|}}}{{{recognised_regional_languages|}}}|[[Category:Pages using infobox country with syntax problems|J]]}} }}{{#if:{{both|{{{area_km2|}}}|{{{area_ha|}}}}}{{both|{{{area_land_km2|}}}|{{{area_land_ha|}}}}}{{both|{{{area_water_km2|}}}|{{{area_water_ha|}}}}}|[[Category:Pages using infobox country with syntax problems|K]] }}{{#if:{{both|{{{DST|}}}|{{{time_zone_DST|}}}}}|[[Category:Pages using infobox country with syntax problems|L]] }}{{#if:{{{time_zone|}}}{{{utc_offset|}}}||{{#if:{{{time_zone_DST|}}}{{{utc_offset_DST|}}}|[[Category:Pages using infobox country with syntax problems|M]]}} }}{{#if:{{both|{{{sovereignty_type|}}}|{{{established|}}} }}|[[Category:Pages using infobox country with syntax problems|O]] }}{{#if:{{{languages|}}}|{{#if:{{{languages_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}} }}{{#if:{{{languages2|}}}|{{#if:{{{languages2_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}} }}{{#if:{{{flag_type|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|T{{PAGENAME}}]] }}{{#if:{{{flag_caption|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|C{{PAGENAME}}]] }}{{#if:{{{symbol_type|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|T{{PAGENAME}}]] }}{{#if:{{{symbol_caption|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|C{{PAGENAME}}]] }}}}<!-- Tracking categories from merge with {{infobox former country}}. After all cats are empty/have been checked, these can be removed. -->{{#if:{{{status_text|}}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Colony|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Exile|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}}}}} }}<!--End of former country tracking cats--><noinclude> {{documentation}} </noinclude> 7b1a18da8309a84e21d417a3332665cdc72535c5 Template:Tsp 10 1731 3269 3268 2023-11-12T12:59:28Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tsp]] wikitext text/x-wiki #REDIRECT [[Template:Thin space]] [[Category:Inline spacing templates|Thinsp]] [[Category:Typing-aid templates|Thinsp]] 5c0846b57ba875d535c1e5602e2c070f41d4cf23 Template:Map caption/doc 10 1732 3271 3270 2023-11-12T12:59:35Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Map_caption/doc]] wikitext text/x-wiki {{Documentation subpage}} <!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE --> <p style="width:100%;">Template intended to simplify adding a standardized and formatted caption below a map indicating the location of something (e.g. a country), possibly referring to the map's main region and optionally also to a shown subregion. Original use within infoboxes (e.g. see articles on [[Template:Countries of Europe|European countries]]). For a complete set of elements of reasonable length, a width of (minimally) 250px (without extra padding or margins) should be available.</p> ===Parameters=== Required parameters shown in '''''bold italics''''' {{Aligned table |cols=3 |class=wikitable |style=font-size:95%; |colstyle=padding-left:0.5em;padding-right:0.5em; |col1style=font-style:italic; |col3align=center |row1header=on| Parameter | Description | Default | countryprefix | {{plainlist|1= * Neither linked nor styled prefix e.g. "the" (for articles named e.g. "United Kingdom", "Czech Republic", "Netherlands"). }} | &ndash; | country |{{plainlist|1= * Only if the country name at the map should not be identical to the article name (e.g. "Metropolitan France"). * <nowiki>Template sets [[...]]</nowiki> (if article or redirect exists). }} | &lt;{{tsp|''article&nbsp;name''}}&gt; | location |{{plainlist|1= * Only if ''colour'' is not used and its default is not appropriate: Description identifying ''country''{{'}}s location (e.g. "circled in inset") * This parameter must never be empty; "none" suppresses it. If passed, ''location_color'' cannot be shown. }} | &ndash; | location_color |{{plainlist|1= * Only if ''description'' is not used: Colour identifying ''country''{{'}}s location; "none" suppresses the default. }} | orange | region |{{plainlist|1= * Name (or equally extremely short description) for approximately the entire area depicted by the map. * <span style{{=}}"visibility:hidden;">special:&nbsp;</span>"<nowiki>[[</nowiki>Antarctica<nowiki>]]</nowiki>" shown as "on [[Antarctica]]", * <span style{{=}}"visibility:hidden;">special:&nbsp;</span>"<nowiki>[[</nowiki>Middle East<nowiki>]]</nowiki>", "<nowiki>[[</nowiki>Arctic Circle<nowiki>]]</nowiki>" or "<nowiki>[[</nowiki>Pacific Ocean<nowiki>]]</nowiki>" shown as "in the ...", * <span style{{=}}"visibility:hidden;">special:&nbsp;</span>versus any other: shown as "in ...", e.g. "<nowiki>[[</nowiki>Africa<nowiki>]]</nowiki>" shown as "in Africa" }} | &ndash; | region_color |{{plainlist|1= * Colour identifying ''region''; "none" suppresses the default. }} | white | subregion |{{plainlist|1= * Subregion indicated within region <span style{{=}}"font-size:87%;">(only if used: aligning both region and subregion lines to the left, else single region line centered as top line)</span> * Must not occur without parameter ''region''. * <span style{{=}}"visibility:hidden;">special:&nbsp;</span>"<nowiki>[[</nowiki>EU<nowiki>]]</nowiki>" or "<nowiki>[[</nowiki>European Union<nowiki>]]</nowiki>" shown as "in the [[European Union]]", * <span style{{=}}"visibility:hidden;">special:&nbsp;</span>versus any other: shown as "in ...", e.g. "the <nowiki>[[</nowiki>Caucasus<nowiki>]]</nowiki>" shown as "in the [[Caucasus]]" }} | &ndash; | subregion_color |{{plainlist|1= * Colour identifying ''subregion''; "none" suppresses showing the default. }} | tan | legend |{{plainlist|1= * Filename of image providing a map legend. }} | &ndash; }}<!--(end Aligned table)--> ; Note : <div style="font-size:95%;line-height:1.35em;font-weight:400;"> If ''country'', ''region'' or ''subregion'' is exactly the name of a page in article space, the template automatically creates a link to it. You can still put a link here manually, using the usual syntax.</div> ===Examples=== {| style="width:100%; border:1px solid #a0a0a0; background-color:#f8f8ff;"<!-- no class formatting other than article space: mustnot show result in any different style here --> |- style="vertical-align:top;text-align:left;" |style="width:50%; font-size:110%;font-weight:bold;"| Code || <span style="font-size:110%;font-weight:bold;">Raw result</span> (in unformatted box, compare to handling in Infobox) |- style="vertical-align:top;" |colspan="2" style="padding-top:.5em; font-size:87%;"|<code style="color:#705000;"><nowiki>{{map caption}}</nowiki></code> |- | || {|style="border:1px solid #000000;" |- |style="padding:0;"|{{map caption}} |} |- style="vertical-align:top;" |colspan="2" style="padding-top:1.5em; font-size:87%; color:#705000;"|<code><nowiki>{{map caption |region=Europe |legend=European location legend en.png}}</nowiki></code> |- | || {|style="border:1px solid #000000;" |- |style="padding:0;"|{{map caption |region=Europe |legend=European location legend en.png}} |} |- style="vertical-align:top;" |colspan="2" style="padding-top:1.5em; font-size:87%; color:#705000;"| <code><nowiki>{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}</nowiki></code> |- | || {|style="border:1px solid #000000;" |- |style="padding:0;"|{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}} |} |- style="vertical-align:top;" |colspan="2" style="padding-top:1.5em; font-size:87%;"| ''&nbsp;Typical sample for an article on a European Union member that needs no "the" before its name, for otherwise identical output:''<br /><code style="color:#705000;"><nowiki>{{map caption |region=Europe |subregion=EU |legend=European location legend en.png}}</nowiki></code> |- | || {|style="border:1px solid #000000;" |- |style="padding:0;|{{map caption |region=Europe |subregion=EU |legend=European location legend en.png}} |} |} {| xclass="toccolours" style="width:100%; margin-top:.5em;border:1px solid #a0a0a0;background-color:#f8f8ff;" <!-- no class formatting other than article space --> |- style="text-align:left;" |'''<span style="font-size:110%;">Infobox usage of code</span> (as intended)''' — in which the alignment, the padding/margins, and font are rendered differently (''this'' template adjusts for ''that'' infobox): |- style="text-align:left;line-height:1.4em;font-size:87%;" |style="white-space:normal;"|'''Sample for article named 'Armenia', about a non-European country'''<br /> <code><nowiki> {{Infobox Country or territory|</nowiki><br /> <nowiki> |common_name = Armenia</nowiki><br /> <nowiki> |image_map = Europe location ARM.png</nowiki><br /> <nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption}}</nowiki></span><br /> ''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br /> <nowiki>}}</nowiki></code><span style="line-height:.9em;"><br /><br /></span>'''Sample for article named 'Belarus', about a non-member of the EU'''<br /> <code><nowiki> {{Infobox Country or territory|</nowiki><br /> <nowiki> |common_name = Belarus</nowiki><br /> <nowiki> |image_map = Europe location BLR.png</nowiki><br /> <nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption |region=Europe |legend=European location legend en.png}}</nowiki></span><br /> ''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br /> <nowiki>}}</nowiki></code><span style="line-height:.9em;"><br /><br /></span> '''Sample for article named 'Netherlands', about a member of the EU'''<br /> <code><nowiki> {{Infobox Country or territory|</nowiki><br /> <nowiki> |common_name = the Netherlands</nowiki><br /> <nowiki> |image_map = EU location NED.png</nowiki><br /> <nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}</nowiki></span><br /> ''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br /> <nowiki>}}</nowiki></code> |- | {| style="background-color:#f8f8ff;" |- |colspan="3" |<span style="font-size:110%;">'''Net result'''</span> — The three simplified samples above, shown here side by side<br /><span style="font-size:110%;visibility:hidden;">'''Net result''' —&nbsp;</span><span style="font-size:87%;">(called here without country parameter, and with placeholder values for population to prevent error messages)</span>: |- style="vertical-align:top;" |{{Infobox country| |common_name = Armenia |image_map = Europe location ARM.png |map_caption = {{map caption}} |capital = <span style="display:none">x</span> |government_type = <span style="display:none">x</span> |official_languages = <span style="display:none">x</span> |area_km2 = 10 |area_sq_mi = <span style="display:none">0</span> |population_density_km2 = 10 |population_density_rank = <span style="display:none">0</span> |population_density_sq_mi = <span style="display:none">0</span> |time_zone = <span style="display:none">x</span> |utc_offset = <span style="display:none">0</span> |cctld = <span style="display:none">x</span> |currency = <span style="display:none">x</span> |currency_code = <span style="display:none">x</span> |calling_code = <span style="display:none">0</span> |footnotes = }} |{{Infobox country| |common_name = Belarus |image_map = Europe location BLR.png |map_caption = {{map caption |region=Europe |legend=European location legend en.png}} |capital = <span style="display:none">x</span> |government_type = <span style="display:none">x</span> |official_languages = <span style="display:none">x</span> |area_km2 = 10 |area_sq_mi = <span style="display:none">0</span> |population_density_km2 = 10 |population_density_rank = <span style="display:none">0</span> |population_density_sq_mi = <span style="display:none">0</span> |time_zone = <span style="display:none">x</span> |utc_offset = <span style="display:none">0</span> |cctld = <span style="display:none">x</span> |currency = <span style="display:none">x</span> |currency_code = <span style="display:none">x</span> |calling_code = <span style="display:none">0</span> |footnotes = }} |{{Infobox country| |common_name = the Netherlands |image_map = EU location NED.png |map_caption = {{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}} |capital = <span style="display:none">x</span> |government_type = <span style="display:none">x</span> |official_languages = <span style="display:none">x</span> |area_km2 = 10 |area_sq_mi = <span style="display:none">0</span> |population_density_km2 = 10 |population_density_rank = <span style="display:none">0</span> |population_density_sq_mi = <span style="display:none">0</span> |time_zone = <span style="display:none">x</span> |utc_offset = <span style="display:none">0</span> |cctld = <span style="display:none">x</span> |currency = <span style="display:none">x</span> |currency_code = <span style="display:none">x</span> |calling_code = <span style="display:none">0</span> |footnotes = }} |} |} <includeonly>{{Sandbox other| | <!-- CATEGORIES BELOW THIS LINE, PLEASE: --> [[Category:Map formatting and function templates]] }}</includeonly> a4d3dff2acaf90414f21b798752523e1efbb574e Module:Transclusion count/data/F 828 1725 3274 3273 2023-11-12T13:02:07Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/F]] Scribunto text/plain return { ["F1"] = 4700, ["FA-Class"] = 15000, ["FAA-airport"] = 3700, ["FACClosed"] = 5200, ["FAR_link"] = 102000, ["FCC-LMS-Facility"] = 5600, ["FIDE"] = 2200, ["FIFA_player"] = 10000, ["FIN"] = 9200, ["FIPS"] = 2000, ["FJC_Bio"] = 4200, ["FL-Class"] = 12000, ["FLCClosed"] = 2600, ["FLC_link"] = 102000, ["FM-Class"] = 2800, ["FMA"] = 3300, ["FMARB"] = 10000, ["FML"] = 9100, ["FMQ"] = 12000, ["FMXL"] = 2400, ["FM_station_data"] = 8700, ["FPCnom/VotingEnds"] = 9800, ["FPCresult"] = 16000, ["FRA"] = 19000, ["FRG"] = 3700, ["FULLBASEPAGENAME"] = 5400, ["FULLROOTPAGENAME"] = 2470000, ["FXL"] = 2200, ["Fa_bottom"] = 2200, ["Fa_top"] = 2200, ["Facebook"] = 14000, ["Facepalm"] = 2600, ["Fact"] = 37000, ["FadedPage"] = 2400, ["FailedGA"] = 3300, ["Failed_verification"] = 15000, ["Family_name_explanation"] = 80000, ["Family_name_explanation/core"] = 80000, ["Family_name_hatnote"] = 79000, ["Farl"] = 102000, ["Fb"] = 26000, ["Fb-rt"] = 5800, ["Fb_cs_footer"] = 2900, ["Fb_gd"] = 8800, ["Fb_overview"] = 3700, ["Fb_overview2"] = 3400, ["Fb_rs"] = 8500, ["Fb_rs_footer"] = 8400, ["Fba/core"] = 24000, ["Fba/list"] = 29000, ["Fbaicon"] = 7200, ["Fbaicon/core"] = 8200, ["Fbicon"] = 2900, ["Fbu"] = 3700, ["Fbu-rt"] = 2200, ["Fbw"] = 5000, ["Fdacite"] = 14000, ["FeaturedPicture"] = 6300, ["Featured_article"] = 6700, ["Featured_article_tools"] = 11000, ["Featured_list"] = 4300, ["Featured_picture"] = 7700, ["Featured_topic_box"] = 3100, ["Featured_topic_box/styles.css"] = 3100, ["Feedback_link"] = 4600, ["Fiction-based_redirects_to_list_entries_category_handler"] = 2400, ["File-Class"] = 12000, ["File_other"] = 934000, ["Film"] = 54000, ["Film_date"] = 119000, ["Film_lists_by_country"] = 2300, ["Find"] = 8200, ["FindYDCportal"] = 176000, ["Find_a_Grave"] = 28000, ["Find_a_Grave_cemetery"] = 2300, ["Find_country"] = 234000, ["Find_general_sources"] = 868000, ["Find_medical_sources"] = 7400, ["Find_page_text"] = 635000, ["Find_sources"] = 631000, ["Find_sources/proj/is_biography"] = 619000, ["Find_sources/proj/is_med"] = 631000, ["Find_sources/proj/is_video"] = 624000, ["Find_sources/top_proj"] = 631000, ["Find_sources_AFD"] = 201000, ["Find_sources_mainspace"] = 694000, ["Find_video_game_sources"] = 5000, ["Find_video_game_sources_short"] = 3100, ["Findsources"] = 42000, ["First_nonempty"] = 14000, ["First_word"] = 453000, ["FishBase"] = 14000, ["FishBase_genus"] = 4600, ["Fishproject"] = 10000, ["Fix"] = 914000, ["Fix-span"] = 55000, ["Fix/category"] = 868000, ["Fix_comma_category"] = 563000, ["Fixed"] = 8900, ["Flag"] = 568000, ["Flag/core"] = 568000, ["FlagIOC"] = 11000, ["FlagIOC2"] = 16000, ["FlagIOC2athlete"] = 11000, ["FlagIOC2medalist"] = 4500, ["FlagIOC2team"] = 6700, ["FlagIOCathlete"] = 17000, ["FlagIOCteam"] = 2700, ["FlagIPC"] = 3400, ["FlagPASO"] = 2800, ["FlagPASOathlete"] = 2600, ["Flag_data"] = 7300, ["Flag_icon"] = 15000, ["Flagathlete"] = 28000, ["Flagbig"] = 4500, ["Flagbig/core"] = 7700, ["Flagcountry"] = 40000, ["Flagcountry/core"] = 40000, ["Flagdeco"] = 113000, ["Flagdeco/core"] = 113000, ["Flagg"] = 21000, ["Flagicon"] = 600000, ["Flagicon/core"] = 601000, ["Flagicon/nt"] = 5000, ["Flagicon_image"] = 41000, ["Flaglink/core"] = 78000, ["Flagmedalist"] = 2200, ["Flagmedalist/core"] = 2200, ["Flagright/core"] = 23000, ["Flagteam"] = 6100, ["Flagu"] = 24000, ["Flagu/core"] = 24000, ["Flat_list"] = 8000, ["Flatlist"] = 2090000, ["Flcl"] = 102000, ["FloraBase"] = 5600, ["Floruit"] = 4100, ["Fmbox"] = 19000, ["Font"] = 9000, ["Font_color"] = 38000, ["Fontcolor"] = 6600, ["Fooian_expatriate_sportspeople_in_Bar_cat"] = 10000, ["Fooian_expatriate_sportspeople_in_Bar_cat/core"] = 10000, ["Fooian_expatriate_sportspeople_in_Bar_cat/sortname"] = 10000, ["Fooian_fooers"] = 13000, ["Football"] = 57000, ["FootballDatabase.eu"] = 8600, ["FootballFacts.ru"] = 5700, ["Football_box"] = 25000, ["Football_box_collapsible"] = 24000, ["Football_kit"] = 48000, ["Football_manager_history"] = 21000, ["Football_squad"] = 47000, ["Football_squad2_player"] = 50000, ["Football_squad_end"] = 19000, ["Football_squad_manager"] = 47000, ["Football_squad_mid"] = 17000, ["Football_squad_player"] = 19000, ["Football_squad_player/role"] = 6800, ["Football_squad_player/styles.css"] = 19000, ["Football_squad_start"] = 19000, ["Footballbox"] = 7200, ["Footballbox_collapsible"] = 7200, ["Footballstats"] = 2900, ["Foo–Bar_relations_category"] = 9200, ["Foo–Bar_relations_category/core"] = 9200, ["Foo–Bar_relations_category/countrynamesortfix"] = 9200, ["Foo–Bar_relations_category/fixcountryname"] = 9200, ["Foo–Bar_relations_category/inner_core"] = 9200, ["Foo–Bar_relations_category/mapname"] = 9200, ["For"] = 186000, ["For-multi"] = 9600, ["For_loop"] = 779000, ["For_multi"] = 7900, ["For_nowiki"] = 8700, ["ForaDeJogo"] = 4100, ["Force_plural"] = 3300, ["Format_linkr"] = 4500, ["Format_numeric_span"] = 3600, ["Format_price"] = 8200, ["Format_price/digits"] = 8100, ["Formatprice"] = 3200, ["Fossil_range"] = 12000, ["Fossil_range/bar"] = 21000, ["Fossil_range/marker"] = 21000, ["Fossilrange"] = 5900, ["Frac"] = 31000, ["Fraction"] = 35000, ["Fraction/styles.css"] = 94000, ["France_metadata_Wikidata"] = 36000, ["Free_access"] = 4300, ["Free_in_US_media"] = 15000, ["Free_media"] = 156000, ["Frequency"] = 3400, ["Friday"] = 2700, ["Fs_end"] = 18000, ["Fs_mid"] = 16000, ["Fs_player"] = 18000, ["Fs_start"] = 18000, ["Full_citation_needed"] = 8300, ["Full_party_name_with_color"] = 4100, ["Fullurl"] = 6500, ["Fullurl:"] = 6400, ["Further"] = 63000, ["Fussballdaten"] = 4300, ["Module:Fb_overview"] = 3800, ["Module:FeaturedTopicSum"] = 6800, ["Module:Fedi-share"] = 3300, ["Module:Fiction-based_redirects_to_list_entries_category_handler"] = 2400, ["Module:Fiction-based_redirects_to_list_entries_category_handler/RedirectType"] = 2400, ["Module:Fiction_redirect_category_handler"] = 2900, ["Module:File_link"] = 68000, ["Module:FindYDCportal"] = 309000, ["Module:Find_country"] = 184000, ["Module:Find_sources"] = 1570000, ["Module:Find_sources/config"] = 1570000, ["Module:Find_sources/links"] = 1570000, ["Module:Find_sources/templates/Find_general_sources"] = 868000, ["Module:Find_sources/templates/Find_sources_mainspace"] = 694000, ["Module:Find_sources/templates/Find_sources_medical"] = 7400, ["Module:Find_sources/templates/Find_sources_video_games"] = 5000, ["Module:FishRef"] = 7000, ["Module:Flag"] = 51000, ["Module:Flagg"] = 126000, ["Module:Football_box"] = 26000, ["Module:Football_box/styles.css"] = 26000, ["Module:Football_box_collapsible"] = 24000, ["Module:Football_manager_history"] = 21000, ["Module:Football_squad"] = 47000, ["Module:Footnotes"] = 291000, ["Module:Footnotes/anchor_id_list"] = 210000, ["Module:Footnotes/anchor_id_list/data"] = 210000, ["Module:Footnotes/whitelist"] = 210000, ["Module:For"] = 187000, ["Module:For_loop"] = 779000, ["Module:For_nowiki"] = 8700, ["Module:Format_link"] = 1330000, ["Module:Formatted_appearance"] = 5000, } c4dc69810385b6bbce6e5430d153c8c6202559d1 Module:File link/doc 828 1733 3276 3275 2023-11-12T13:02:08Z Führerredux 2 1 revision imported from [[:wikipedia:Module:File_link/doc]] wikitext text/x-wiki {{high-use}} {{Module rating|protected}} {{Lua|Module:Yesno|Module:Arguments}} This module is used to construct wikitext links to files. It is primarily useful for templates and modules that use complicated logic to make file links. Simple file links should be made with wikitext markup directly, as it uses less resources than calling this module. For help with wikitext file markup please refer to the [[mw:Help:Images|documentation at mediawiki.org]]. == Usage from wikitext == From wikitext, this module should be called from a template, usually {{tl|file link}}. Please see the template page for documentation. However, it can also be called using the syntax <code><nowiki>{{#invoke:File link|main|</nowiki>''arguments''<nowiki>}}</nowiki></code>. == Usage from Lua == First, you need to import the module. <syntaxhighlight lang="lua"> local mFileLink = require('Module:File link') </syntaxhighlight> Then you can make file links using the <code>_main</code> function. <syntaxhighlight lang="lua"> mFileLink._main(args) </syntaxhighlight> <var>args</var> is a table of arguments that can have the following keys: * <code>file</code> - the filename. (required) * <code>format</code> - the file format, e.g. 'thumb', 'thumbnail', 'frame', 'framed', or 'frameless'. * <code>formatfile</code> - a filename to specify with the 'thumbnail' format option. The filename specified will be used instead of the automatically generated thumbnail. * <code>border</code> - set this to true or "yes" (or any other value recognized as true by [[Module:Yesno]]) to set a border for the image. * <code>location</code> - the horizontal alignment of the file, e.g. 'right', 'left', 'center', or 'none'. * <code>alignment</code> - the vertical alignment of the file, e.g. 'baseline', 'middle', 'sub', 'super', 'text-top', 'text-bottom', 'top', or 'bottom'. * <code>size</code> - the size of the image, e.g. '100px', 'x100px' or '100x100px'. * <code>upright</code> - the 'upright' parameter, used for setting the size of tall and thin images. * <code>link</code> - the page that the file should link to. Use the blank string <nowiki>''</nowiki> to suppress the default link to the file description page. * <code>alt</code> - the alt text. Use the blank string <nowiki>''</nowiki> to suppress the default alt text. * <code>caption</code> - a caption for the file. * <code>page</code> - sets a page number for multi-paged files such as PDFs. * <code>class</code> - adds a <code>class</code> parameter to image links. The MediaWiki software adds this parameter to the <code>class="..."</code> attribute of the image's <code><nowiki><img /></nowiki></code> element when the page is rendered into HTML. * <code>lang</code> - adds a language attribute to specify what language to render the file in. * <code>start</code> - specifies a start time for audio and video files. * <code>end</code> - specifies an end time for audio and video files. * <code>thumbtime</code> - specifies the time to use to generate the thumbnail image for video files. To see the effect of each of these parameters, see the [[mw:Help:Images#Format|images help page on mediawiki.org]]. === Examples === With the file only: <syntaxhighlight lang="lua"> mFileLink.main{file = 'Example.png'} -- Renders as [[File:Example.png]] </syntaxhighlight> With format, size, link and caption options: <syntaxhighlight lang="lua"> mFileLink.main{ file = 'Example.png', format = 'thumb', size = '220px', link = 'Wikipedia:Sandbox', caption = 'An example.' } -- Renders as [[File:Example.png|thumb|220px|link=Wikipedia:Sandbox|An example.]] </syntaxhighlight> With format, size, and border: <syntaxhighlight lang="lua"> mFileLink.main{ file = 'Example.png', format = 'frameless', size = '220px', border = true } -- Renders as [[File:Example.png|frameless|border|220px]] </syntaxhighlight> <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories go here and interwikis go in Wikidata. --> }}</includeonly> 3ed97b9b6e53a4e041285a77da0c01f25e581d13 Module:Switcher 828 1734 3278 3277 2023-11-12T13:03:14Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Switcher]] Scribunto text/plain local p = {} function p.main(frame) local root = mw.html.create('div'):addClass('switcher-container') local default = (tonumber(frame.args.default) or 0) * 2 - 1 for i,v in ipairs(frame.args) do if i % 2 == 1 then local span = root :tag('div') :wikitext(frame.args[i]) :tag('span') :addClass('switcher-label') :css('display', 'none') :wikitext(mw.text.trim(frame.args[i + 1])) if i == default then span:attr('data-switcher-default', '') end end end return root end return p 9393d11155145cb28d5fdad5ce6b9cde1bbad60f Module:Wd 828 1048 3280 3279 2023-11-12T13:10:57Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Wd]] Scribunto text/plain -- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]]. require("strict") local p = {} local arg = ... local i18n local function loadI18n(aliasesP, frame) local title if frame then -- current module invoked by page/template, get its title from frame title = frame:getTitle() else -- current module included by other module, get its title from ... title = arg end if not i18n then i18n = require(title .. "/i18n").init(aliasesP) end end p.claimCommands = { property = "property", properties = "properties", qualifier = "qualifier", qualifiers = "qualifiers", reference = "reference", references = "references" } p.generalCommands = { label = "label", title = "title", description = "description", alias = "alias", aliases = "aliases", badge = "badge", badges = "badges" } p.flags = { linked = "linked", short = "short", raw = "raw", multilanguage = "multilanguage", unit = "unit", ------------- preferred = "preferred", normal = "normal", deprecated = "deprecated", best = "best", future = "future", current = "current", former = "former", edit = "edit", editAtEnd = "edit@end", mdy = "mdy", single = "single", sourced = "sourced" } p.args = { eid = "eid", page = "page", date = "date" } local aliasesP = { coord = "P625", ----------------------- image = "P18", author = "P50", authorNameString = "P2093", publisher = "P123", importedFrom = "P143", wikimediaImportURL = "P4656", statedIn = "P248", pages = "P304", language = "P407", hasPart = "P527", publicationDate = "P577", startTime = "P580", endTime = "P582", chapter = "P792", retrieved = "P813", referenceURL = "P854", sectionVerseOrParagraph = "P958", archiveURL = "P1065", title = "P1476", formatterURL = "P1630", quote = "P1683", shortName = "P1813", definingFormula = "P2534", archiveDate = "P2960", inferredFrom = "P3452", typeOfReference = "P3865", column = "P3903", subjectNamedAs = "P1810", wikidataProperty = "P1687", publishedIn = "P1433" } local aliasesQ = { percentage = "Q11229", prolepticJulianCalendar = "Q1985786", citeWeb = "Q5637226", citeQ = "Q22321052" } local parameters = { property = "%p", qualifier = "%q", reference = "%r", alias = "%a", badge = "%b", separator = "%s", general = "%x" } local formats = { property = "%p[%s][%r]", qualifier = "%q[%s][%r]", reference = "%r", propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]", alias = "%a[%s]", badge = "%b[%s]" } local hookNames = { -- {level_1, level_2} [parameters.property] = {"getProperty"}, [parameters.reference] = {"getReferences", "getReference"}, [parameters.qualifier] = {"getAllQualifiers"}, [parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"}, [parameters.alias] = {"getAlias"}, [parameters.badge] = {"getBadge"} } -- default value objects, should NOT be mutated but instead copied local defaultSeparators = { ["sep"] = {" "}, ["sep%s"] = {","}, ["sep%q"] = {"; "}, ["sep%q\\d"] = {", "}, ["sep%r"] = nil, -- none ["punc"] = nil -- none } local rankTable = { ["preferred"] = 1, ["normal"] = 2, ["deprecated"] = 3 } local function replaceAlias(id) if aliasesP[id] then id = aliasesP[id] end return id end local function errorText(code, param) local text = i18n["errors"][code] if param then text = mw.ustring.gsub(text, "$1", param) end return text end local function throwError(errorMessage, param) error(errorText(errorMessage, param)) end local function replaceDecimalMark(num) return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1) end local function padZeros(num, numDigits) local numZeros local negative = false if num < 0 then negative = true num = num * -1 end num = tostring(num) numZeros = numDigits - num:len() for _ = 1, numZeros do num = "0"..num end if negative then num = "-"..num end return num end local function replaceSpecialChar(chr) if chr == '_' then -- replace underscores with spaces return ' ' else return chr end end local function replaceSpecialChars(str) local chr local esc = false local strOut = "" for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then esc = true else strOut = strOut .. replaceSpecialChar(chr) end else strOut = strOut .. chr esc = false end end return strOut end local function buildWikilink(target, label) if not label or target == label then return "[[" .. target .. "]]" else return "[[" .. target .. "|" .. label .. "]]" end end -- used to make frame.args mutable, to replace #frame.args (which is always 0) -- with the actual amount and to simply copy tables local function copyTable(tIn) if not tIn then return nil end local tOut = {} for i, v in pairs(tIn) do tOut[i] = v end return tOut end -- used to merge output arrays together; -- note that it currently mutates the first input array local function mergeArrays(a1, a2) for i = 1, #a2 do a1[#a1 + 1] = a2[i] end return a1 end local function split(str, del) local out = {} local i, j = str:find(del) if i and j then out[1] = str:sub(1, i - 1) out[2] = str:sub(j + 1) else out[1] = str end return out end local function parseWikidataURL(url) local id if url:match('^http[s]?://') then id = split(url, "Q") if id[2] then return "Q" .. id[2] end end return nil end local function parseDate(dateStr, precision) precision = precision or "d" local i, j, index, ptr local parts = {nil, nil, nil} if dateStr == nil then return parts[1], parts[2], parts[3] -- year, month, day end -- 'T' for snak values, '/' for outputs with '/Julian' attached i, j = dateStr:find("[T/]") if i then dateStr = dateStr:sub(1, i-1) end local from = 1 if dateStr:sub(1,1) == "-" then -- this is a negative number, look further ahead from = 2 end index = 1 ptr = 1 i, j = dateStr:find("-", from) if i then -- year parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error if parts[index] == -0 then parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead end if precision == "y" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 i, j = dateStr:find("-", ptr) if i then -- month parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) if precision == "m" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 end end if dateStr:sub(ptr) ~= "" then -- day if we have month, month if we have year, or year parts[index] = tonumber(dateStr:sub(ptr), 10) end return parts[1], parts[2], parts[3] -- year, month, day end local function datePrecedesDate(aY, aM, aD, bY, bM, bD) if aY == nil or bY == nil then return nil end aM = aM or 1 aD = aD or 1 bM = bM or 1 bD = bD or 1 if aY < bY then return true end if aY > bY then return false end if aM < bM then return true end if aM > bM then return false end if aD < bD then return true end return false end local function getHookName(param, index) if hookNames[param] then return hookNames[param][index] elseif param:len() > 2 then return hookNames[param:sub(1, 2).."\\d"][index] else return nil end end local function alwaysTrue() return true end -- The following function parses a format string. -- -- The example below shows how a parsed string is structured in memory. -- Variables other than 'str' and 'child' are left out for clarity's sake. -- -- Example: -- "A %p B [%s[%q1]] C [%r] D" -- -- Structure: -- [ -- { -- str = "A " -- }, -- { -- str = "%p" -- }, -- { -- str = " B ", -- child = -- [ -- { -- str = "%s", -- child = -- [ -- { -- str = "%q1" -- } -- ] -- } -- ] -- }, -- { -- str = " C ", -- child = -- [ -- { -- str = "%r" -- } -- ] -- }, -- { -- str = " D" -- } -- ] -- local function parseFormat(str) local chr, esc, param, root, cur, prev, new local params = {} local function newObject(array) local obj = {} -- new object obj.str = "" array[#array + 1] = obj -- array{object} obj.parent = array return obj end local function endParam() if param > 0 then if cur.str ~= "" then cur.str = "%"..cur.str cur.param = true params[cur.str] = true cur.parent.req[cur.str] = true prev = cur cur = newObject(cur.parent) end param = 0 end end root = {} -- array root.req = {} cur = newObject(root) prev = nil esc = false param = 0 for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then endParam() esc = true elseif chr == '%' then endParam() if cur.str ~= "" then cur = newObject(cur.parent) end param = 2 elseif chr == '[' then endParam() if prev and cur.str == "" then table.remove(cur.parent) cur = prev end cur.child = {} -- new array cur.child.req = {} cur.child.parent = cur cur = newObject(cur.child) elseif chr == ']' then endParam() if cur.parent.parent then new = newObject(cur.parent.parent.parent) if cur.str == "" then table.remove(cur.parent) end cur = new end else if param > 1 then param = param - 1 elseif param == 1 then if not chr:match('%d') then endParam() end end cur.str = cur.str .. replaceSpecialChar(chr) end else cur.str = cur.str .. chr esc = false end prev = nil end endParam() -- make sure that at least one required parameter has been defined if not next(root.req) then throwError("missing-required-parameter") end -- make sure that the separator parameter "%s" is not amongst the required parameters if root.req[parameters.separator] then throwError("extra-required-parameter", parameters.separator) end return root, params end local function sortOnRank(claims) local rankPos local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default) local sorted = {} for _, v in ipairs(claims) do rankPos = rankTable[v.rank] or 4 ranks[rankPos][#ranks[rankPos] + 1] = v end sorted = ranks[1] sorted = mergeArrays(sorted, ranks[2]) sorted = mergeArrays(sorted, ranks[3]) return sorted end local Config = {} -- allows for recursive calls function Config:new() local cfg = {} setmetatable(cfg, self) self.__index = self cfg.separators = { -- single value objects wrapped in arrays so that we can pass by reference ["sep"] = {copyTable(defaultSeparators["sep"])}, ["sep%s"] = {copyTable(defaultSeparators["sep%s"])}, ["sep%q"] = {copyTable(defaultSeparators["sep%q"])}, ["sep%r"] = {copyTable(defaultSeparators["sep%r"])}, ["punc"] = {copyTable(defaultSeparators["punc"])} } cfg.entity = nil cfg.entityID = nil cfg.propertyID = nil cfg.propertyValue = nil cfg.qualifierIDs = {} cfg.qualifierIDsAndValues = {} cfg.bestRank = true cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false cfg.foundRank = #cfg.ranks cfg.flagBest = false cfg.flagRank = false cfg.periods = {true, true, true} -- future = true, current = true, former = true cfg.flagPeriod = false cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day} cfg.mdyDate = false cfg.singleClaim = false cfg.sourcedOnly = false cfg.editable = false cfg.editAtEnd = false cfg.inSitelinks = false cfg.langCode = mw.language.getContentLanguage().code cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode) cfg.langObj = mw.language.new(cfg.langCode) cfg.siteID = mw.wikibase.getGlobalSiteId() cfg.states = {} cfg.states.qualifiersCount = 0 cfg.curState = nil cfg.prefetchedRefs = nil return cfg end local State = {} function State:new(cfg, type) local stt = {} setmetatable(stt, self) self.__index = self stt.conf = cfg stt.type = type stt.results = {} stt.parsedFormat = {} stt.separator = {} stt.movSeparator = {} stt.puncMark = {} stt.linked = false stt.rawValue = false stt.shortName = false stt.anyLanguage = false stt.unitOnly = false stt.singleValue = false return stt end -- if id == nil then item connected to current page is used function Config:getLabel(id, raw, link, short) local label = nil local prefix, title= "", nil if not id then id = mw.wikibase.getEntityIdForCurrentPage() if not id then return "" end end id = id:upper() -- just to be sure if raw then -- check if given id actually exists if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then label = id end prefix, title = "d:Special:EntityPage/", label -- may be nil else -- try short name first if requested if short then label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name if label == "" then label = nil end end -- get label if not label then label = mw.wikibase.getLabelByLang(id, self.langCode) -- XXX: should use fallback labels? end end if not label then label = "" elseif link then -- build a link if requested if not title then if id:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(id) elseif id:sub(1,1) == "P" then -- properties have no sitelink, link to Wikidata instead prefix, title = "d:Special:EntityPage/", id end end label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup if title then label = buildWikilink(prefix .. title, label) end end return label end function Config:getEditIcon() local value = "" local prefix = "" local front = "&nbsp;" local back = "" if self.entityID:sub(1,1) == "P" then prefix = "Property:" end if self.editAtEnd then front = '<span style="float:' if self.langObj:isRTL() then front = front .. 'left' else front = front .. 'right' end front = front .. '">' back = '</span>' end value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode if self.propertyID then value = value .. "#" .. self.propertyID elseif self.inSitelinks then value = value .. "#sitelinks-wikipedia" end value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]" return front .. value .. back end -- used to create the final output string when it's all done, so that for references the -- function extensionTag("ref", ...) is only called when they really ended up in the final output function Config:concatValues(valuesArray) local outString = "" local j, skip for i = 1, #valuesArray do -- check if this is a reference if valuesArray[i].refHash then j = i - 1 skip = false -- skip this reference if it is part of a continuous row of references that already contains the exact same reference while valuesArray[j] and valuesArray[j].refHash do if valuesArray[i].refHash == valuesArray[j].refHash then skip = true break end j = j - 1 end if not skip then -- add <ref> tag with the reference's hash as its name (to deduplicate references) outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash}) end else outString = outString .. valuesArray[i][1] end end return outString end function Config:convertUnit(unit, raw, link, short, unitOnly) local space = " " local label = "" local itemID if unit == "" or unit == "1" then return nil end if unitOnly then space = "" end itemID = parseWikidataURL(unit) if itemID then if itemID == aliasesQ.percentage then return "%" else label = self:getLabel(itemID, raw, link, short) if label ~= "" then return space .. label end end end return "" end function State:getValue(snak) return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2)) end function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type) if snak.snaktype == 'value' then local datatype = snak.datavalue.type local subtype = snak.datatype local datavalue = snak.datavalue.value if datatype == 'string' then if subtype == 'url' and link then -- create link explicitly if raw then -- will render as a linked number like [1] return "[" .. datavalue .. "]" else return "[" .. datavalue .. " " .. datavalue .. "]" end elseif subtype == 'commonsMedia' then if link then return buildWikilink("c:File:" .. datavalue, datavalue) elseif not raw then return "[[File:" .. datavalue .. "]]" else return datavalue end elseif subtype == 'geo-shape' and link then return buildWikilink("c:" .. datavalue, datavalue) elseif subtype == 'math' and not raw then local attribute = nil if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then attribute = {qid = self.entityID} end return mw.getCurrentFrame():extensionTag("math", datavalue, attribute) elseif subtype == 'external-id' and link then local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL if url ~= "" then url = mw.ustring.gsub(url, "$1", datavalue) return "[" .. url .. " " .. datavalue .. "]" else return datavalue end else return datavalue end elseif datatype == 'monolingualtext' then if anyLang or datavalue['language'] == self.langCode then return datavalue['text'] else return nil end elseif datatype == 'quantity' then local value = "" local unit if not unitOnly then -- get value and strip + signs from front value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1") if raw then return value end -- replace decimal mark based on locale value = replaceDecimalMark(value) -- add delimiters for readability value = i18n.addDelimiters(value) end unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly) if unit then value = value .. unit end return value elseif datatype == 'time' then local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr local yFactor = 1 local sign = 1 local prefix = "" local suffix = "" local mayAddCalendar = false local calendar = "" local precision = datavalue['precision'] if precision == 11 then p = "d" elseif precision == 10 then p = "m" else p = "y" yFactor = 10^(9-precision) end y, m, d = parseDate(datavalue['time'], p) if y < 0 then sign = -1 y = y * sign end -- if precision is tens/hundreds/thousands/millions/billions of years if precision <= 8 then yDiv = y / yFactor -- if precision is tens/hundreds/thousands of years if precision >= 6 then mayAddCalendar = true if precision <= 7 then -- round centuries/millenniums up (e.g. 20th century or 3rd millennium) yRound = math.ceil(yDiv) if not raw then if precision == 6 then suffix = i18n['datetime']['suffixes']['millennium'] else suffix = i18n['datetime']['suffixes']['century'] end suffix = i18n.getOrdinalSuffix(yRound) .. suffix else -- if not verbose, take the first year of the century/millennium -- (e.g. 1901 for 20th century or 2001 for 3rd millennium) yRound = (yRound - 1) * yFactor + 1 end else -- precision == 8 -- round decades down (e.g. 2010s) yRound = math.floor(yDiv) * yFactor if not raw then prefix = i18n['datetime']['prefixes']['decade-period'] suffix = i18n['datetime']['suffixes']['decade-period'] end end if raw and sign < 0 then -- if BCE then compensate for "counting backwards" -- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE) yRound = yRound + yFactor - 1 end else local yReFactor, yReDiv, yReRound -- round to nearest for tens of thousands of years or more yRound = math.floor(yDiv + 0.5) if yRound == 0 then if precision <= 2 and y ~= 0 then yReFactor = 1e6 yReDiv = y / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years only if we have a whole number of them precision = 3 yFactor = yReFactor yRound = yReRound end end if yRound == 0 then -- otherwise, take the unrounded (original) number of years precision = 5 yFactor = 1 yRound = y mayAddCalendar = true end end if precision >= 1 and y ~= 0 then yFull = yRound * yFactor yReFactor = 1e9 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to billions of years if we're in that range precision = 0 yFactor = yReFactor yRound = yReRound else yReFactor = 1e6 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years if we're in that range precision = 3 yFactor = yReFactor yRound = yReRound end end end if not raw then if precision == 3 then suffix = i18n['datetime']['suffixes']['million-years'] elseif precision == 0 then suffix = i18n['datetime']['suffixes']['billion-years'] else yRound = yRound * yFactor if yRound == 1 then suffix = i18n['datetime']['suffixes']['year'] else suffix = i18n['datetime']['suffixes']['years'] end end else yRound = yRound * yFactor end end else yRound = y mayAddCalendar = true end if mayAddCalendar then calendarID = parseWikidataURL(datavalue['calendarmodel']) if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then if not raw then if link then calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")" else calendar = " ("..i18n['datetime']['julian']..")" end else calendar = "/"..i18n['datetime']['julian'] end end end if not raw then local ce = nil if sign < 0 then ce = i18n['datetime']['BCE'] elseif precision <= 5 then ce = i18n['datetime']['CE'] end if ce then if link then ce = buildWikilink(i18n['datetime']['common-era'], ce) end suffix = suffix .. " " .. ce end value = tostring(yRound) if m then dateStr = self.langObj:formatDate("F", "1-"..m.."-1") if d then if self.mdyDate then dateStr = dateStr .. " " .. d .. "," else dateStr = d .. " " .. dateStr end end value = dateStr .. " " .. value end value = prefix .. value .. suffix .. calendar else value = padZeros(yRound * sign, 4) if m then value = value .. "-" .. padZeros(m, 2) if d then value = value .. "-" .. padZeros(d, 2) end end value = value .. calendar end return value elseif datatype == 'globecoordinate' then -- logic from https://github.com/DataValues/Geo (v4.0.1) local precision, unitsPerDegree, numDigits, strFormat, value, globe local latitude, latConv, latValue, latLink local longitude, lonConv, lonValue, lonLink local latDirection, latDirectionN, latDirectionS, latDirectionEN local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN local degSymbol, minSymbol, secSymbol, separator local latDegrees = nil local latMinutes = nil local latSeconds = nil local lonDegrees = nil local lonMinutes = nil local lonSeconds = nil local latDegSym = "" local latMinSym = "" local latSecSym = "" local lonDegSym = "" local lonMinSym = "" local lonSecSym = "" local latDirectionEN_N = "N" local latDirectionEN_S = "S" local lonDirectionEN_E = "E" local lonDirectionEN_W = "W" if not raw then latDirectionN = i18n['coord']['latitude-north'] latDirectionS = i18n['coord']['latitude-south'] lonDirectionE = i18n['coord']['longitude-east'] lonDirectionW = i18n['coord']['longitude-west'] degSymbol = i18n['coord']['degrees'] minSymbol = i18n['coord']['minutes'] secSymbol = i18n['coord']['seconds'] separator = i18n['coord']['separator'] else latDirectionN = latDirectionEN_N latDirectionS = latDirectionEN_S lonDirectionE = lonDirectionEN_E lonDirectionW = lonDirectionEN_W degSymbol = "/" minSymbol = "/" secSymbol = "/" separator = "/" end latitude = datavalue['latitude'] longitude = datavalue['longitude'] if latitude < 0 then latDirection = latDirectionS latDirectionEN = latDirectionEN_S latitude = math.abs(latitude) else latDirection = latDirectionN latDirectionEN = latDirectionEN_N end if longitude < 0 then lonDirection = lonDirectionW lonDirectionEN = lonDirectionEN_W longitude = math.abs(longitude) else lonDirection = lonDirectionE lonDirectionEN = lonDirectionEN_E end precision = datavalue['precision'] if not precision or precision <= 0 then precision = 1 / 3600 -- precision not set (correctly), set to arcsecond end -- remove insignificant detail latitude = math.floor(latitude / precision + 0.5) * precision longitude = math.floor(longitude / precision + 0.5) * precision if precision >= 1 - (1 / 60) and precision < 1 then precision = 1 elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then precision = 1 / 60 end if precision >= 1 then unitsPerDegree = 1 elseif precision >= (1 / 60) then unitsPerDegree = 60 else unitsPerDegree = 3600 end numDigits = math.ceil(-math.log10(unitsPerDegree * precision)) if numDigits <= 0 then numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead end strFormat = "%." .. numDigits .. "f" if precision >= 1 then latDegrees = strFormat:format(latitude) lonDegrees = strFormat:format(longitude) if not raw then latDegSym = replaceDecimalMark(latDegrees) .. degSymbol lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol else latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol end else latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits if precision >= (1 / 60) then latMinutes = latConv lonMinutes = lonConv else latSeconds = latConv lonSeconds = lonConv latMinutes = math.floor(latSeconds / 60) lonMinutes = math.floor(lonSeconds / 60) latSeconds = strFormat:format(latSeconds - (latMinutes * 60)) lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60)) if not raw then latSecSym = replaceDecimalMark(latSeconds) .. secSymbol lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol else latSecSym = latSeconds .. secSymbol lonSecSym = lonSeconds .. secSymbol end end latDegrees = math.floor(latMinutes / 60) lonDegrees = math.floor(lonMinutes / 60) latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol latMinutes = latMinutes - (latDegrees * 60) lonMinutes = lonMinutes - (lonDegrees * 60) if precision >= (1 / 60) then latMinutes = strFormat:format(latMinutes) lonMinutes = strFormat:format(lonMinutes) if not raw then latMinSym = replaceDecimalMark(latMinutes) .. minSymbol lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end end latValue = latDegSym .. latMinSym .. latSecSym .. latDirection lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection value = latValue .. separator .. lonValue if link then globe = parseWikidataURL(datavalue['globe']) if globe then globe = mw.wikibase.getLabelByLang(globe, "en"):lower() else globe = "earth" end latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_") lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_") value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."&params="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]" end return value elseif datatype == 'wikibase-entityid' then local label local itemID = datavalue['numeric-id'] if subtype == 'wikibase-item' then itemID = "Q" .. itemID elseif subtype == 'wikibase-property' then itemID = "P" .. itemID else return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>' end label = self:getLabel(itemID, raw, link, short) if label == "" then label = nil end return label else return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>' end elseif snak.snaktype == 'somevalue' and not noSpecial then if raw then return " " -- single space represents 'somevalue' else return i18n['values']['unknown'] end elseif snak.snaktype == 'novalue' and not noSpecial then if raw then return "" -- empty string represents 'novalue' else return i18n['values']['none'] end else return nil end end function Config:getSingleRawQualifier(claim, qualifierID) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end if qualifiers and qualifiers[1] then return self:getValue(qualifiers[1], true) -- raw = true else return nil end end function Config:snakEqualsValue(snak, value) local snakValue = self:getValue(snak, true) -- raw = true if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end return snakValue == value end function Config:setRank(rank) local rankPos if rank == p.flags.best then self.bestRank = true self.flagBest = true -- mark that 'best' flag was given return end if rank:sub(1,9) == p.flags.preferred then rankPos = 1 elseif rank:sub(1,6) == p.flags.normal then rankPos = 2 elseif rank:sub(1,10) == p.flags.deprecated then rankPos = 3 else return end -- one of the rank flags was given, check if another one was given before if not self.flagRank then self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before self.flagRank = true -- mark that a rank flag was given end if rank:sub(-1) == "+" then for i = rankPos, 1, -1 do self.ranks[i] = true end elseif rank:sub(-1) == "-" then for i = rankPos, #self.ranks do self.ranks[i] = true end else self.ranks[rankPos] = true end end function Config:setPeriod(period) local periodPos if period == p.flags.future then periodPos = 1 elseif period == p.flags.current then periodPos = 2 elseif period == p.flags.former then periodPos = 3 else return end -- one of the period flags was given, check if another one was given before if not self.flagPeriod then self.periods = {false, false, false} -- no other period flag given before, so unset periods self.flagPeriod = true -- mark that a period flag was given end self.periods[periodPos] = true end function Config:qualifierMatches(claim, id, value) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[id] end if qualifiers then for _, v in pairs(qualifiers) do if self:snakEqualsValue(v, value) then return true end end elseif value == "" then -- if the qualifier is not present then treat it the same as the special value 'novalue' return true end return false end function Config:rankMatches(rankPos) if self.bestRank then return (self.ranks[rankPos] and self.foundRank >= rankPos) else return self.ranks[rankPos] end end function Config:timeMatches(claim) local startTime = nil local startTimeY = nil local startTimeM = nil local startTimeD = nil local endTime = nil local endTimeY = nil local endTimeM = nil local endTimeD = nil if self.periods[1] and self.periods[2] and self.periods[3] then -- any time return true end startTime = self:getSingleRawQualifier(claim, aliasesP.startTime) if startTime and startTime ~= "" and startTime ~= " " then startTimeY, startTimeM, startTimeD = parseDate(startTime) end endTime = self:getSingleRawQualifier(claim, aliasesP.endTime) if endTime and endTime ~= "" and endTime ~= " " then endTimeY, endTimeM, endTimeD = parseDate(endTime) end if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then -- invalidate end time if it precedes start time endTimeY = nil endTimeM = nil endTimeD = nil end if self.periods[1] then -- future if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then return true end end if self.periods[2] then -- current if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and (endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then return true end end if self.periods[3] then -- former if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then return true end end return false end function Config:processFlag(flag) if not flag then return false end if flag == p.flags.linked then self.curState.linked = true return true elseif flag == p.flags.raw then self.curState.rawValue = true if self.curState == self.states[parameters.reference] then -- raw reference values end with periods and require a separator (other than none) self.separators["sep%r"][1] = {" "} end return true elseif flag == p.flags.short then self.curState.shortName = true return true elseif flag == p.flags.multilanguage then self.curState.anyLanguage = true return true elseif flag == p.flags.unit then self.curState.unitOnly = true return true elseif flag == p.flags.mdy then self.mdyDate = true return true elseif flag == p.flags.single then self.singleClaim = true return true elseif flag == p.flags.sourced then self.sourcedOnly = true return true elseif flag == p.flags.edit then self.editable = true return true elseif flag == p.flags.editAtEnd then self.editable = true self.editAtEnd = true return true elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then self:setRank(flag) return true elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then self:setPeriod(flag) return true elseif flag == "" then -- ignore empty flags and carry on return true else return false end end function Config:processFlagOrCommand(flag) local param = "" if not flag then return false end if flag == p.claimCommands.property or flag == p.claimCommands.properties then param = parameters.property elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then self.states.qualifiersCount = self.states.qualifiersCount + 1 param = parameters.qualifier .. self.states.qualifiersCount self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])} elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then param = parameters.reference else return self:processFlag(flag) end if self.states[param] then return false end -- create a new state for each command self.states[param] = State:new(self, param) -- use "%x" as the general parameter name self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p" -- set the separator self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then self.states[param].singleValue = true end self.curState = self.states[param] return true end function Config:processSeparators(args) local sep for i, v in pairs(self.separators) do if args[i] then sep = replaceSpecialChars(args[i]) if sep ~= "" then self.separators[i][1] = {sep} else self.separators[i][1] = nil end end end end function Config:setFormatAndSeparators(state, parsedFormat) state.parsedFormat = parsedFormat state.separator = self.separators["sep"] state.movSeparator = self.separators["sep"..parameters.separator] state.puncMark = self.separators["punc"] end -- determines if a claim has references by prefetching them from the claim using getReferences, -- which applies some filtering that determines if a reference is actually returned, -- and caches the references for later use function State:isSourced(claim) self.conf.prefetchedRefs = self:getReferences(claim) return (#self.conf.prefetchedRefs > 0) end function State:resetCaches() -- any prefetched references of the previous claim must not be used self.conf.prefetchedRefs = nil end function State:claimMatches(claim) local matches, rankPos -- first of all, reset any cached values used for the previous claim self:resetCaches() -- if a property value was given, check if it matches the claim's property value if self.conf.propertyValue then matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue) else matches = true end -- if any qualifier values were given, check if each matches one of the claim's qualifier values for i, v in pairs(self.conf.qualifierIDsAndValues) do matches = (matches and self.conf:qualifierMatches(claim, i, v)) end -- check if the claim's rank and time period match rankPos = rankTable[claim.rank] or 4 matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim)) -- if only claims with references must be returned, check if this one has any if self.conf.sourcedOnly then matches = (matches and self:isSourced(claim)) -- prefetches and caches references end return matches, rankPos end function State:out() local result -- collection of arrays with value objects local valuesArray -- array with value objects local sep = nil -- value object local out = {} -- array with value objects local function walk(formatTable, result) local valuesArray = {} -- array with value objects for i, v in pairs(formatTable.req) do if not result[i] or not result[i][1] then -- we've got no result for a parameter that is required on this level, -- so skip this level (and its children) by returning an empty result return {} end end for _, v in ipairs(formatTable) do if v.param then valuesArray = mergeArrays(valuesArray, result[v.str]) elseif v.str ~= "" then valuesArray[#valuesArray + 1] = {v.str} end if v.child then valuesArray = mergeArrays(valuesArray, walk(v.child, result)) end end return valuesArray end -- iterate through the results from back to front, so that we know when to add separators for i = #self.results, 1, -1 do result = self.results[i] -- if there is already some output, then add the separators if #out > 0 then sep = self.separator[1] -- fixed separator result[parameters.separator] = {self.movSeparator[1]} -- movable separator else sep = nil result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark end valuesArray = walk(self.parsedFormat, result) if #valuesArray > 0 then if sep then valuesArray[#valuesArray + 1] = sep end out = mergeArrays(valuesArray, out) end end -- reset state before next iteration self.results = {} return out end -- level 1 hook function State:getProperty(claim) local value = {self:getValue(claim.mainsnak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getQualifiers(claim, param) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end if qualifiers then -- iterate through claim's qualifier statements to collect their values; -- return array with multiple value objects return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getQualifier(snak) local value = {self:getValue(snak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getAllQualifiers(claim, param, result, hooks) local out = {} -- array with value objects local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object -- iterate through the output of the separate "qualifier(s)" commands for i = 1, self.conf.states.qualifiersCount do -- if a hook has not been called yet, call it now if not result[parameters.qualifier..i] then self:callHook(parameters.qualifier..i, hooks, claim, result) end -- if there is output for this particular "qualifier(s)" command, then add it if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then -- if there is already some output, then add the separator if #out > 0 and sep then out[#out + 1] = sep end out = mergeArrays(out, result[parameters.qualifier..i]) end end return out end -- level 1 hook function State:getReferences(claim) if self.conf.prefetchedRefs then -- return references that have been prefetched by isSourced return self.conf.prefetchedRefs end if claim.references then -- iterate through claim's reference statements to collect their values; -- return array with multiple value objects return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getReference(statement) local key, citeWeb, citeQ, label local params = {} local citeParams = {['web'] = {}, ['q'] = {}} local citeMismatch = {} local useCite = nil local useParams = nil local value = "" local ref = {} local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved local numAuthorParameters = 0 local numAuthorNameStringParameters = 0 local tempLink local additionalRefProperties = {} -- will hold properties of the reference which are not in statement.snaks, namely backup title from "subject named as" and URL from an external ID local wikidataPropertiesOfSource -- will contain "Wikidata property" properties of the item in stated in, if any local version = 5 -- increment this each time the below logic is changed to avoid conflict errors if statement.snaks then -- don't include "imported from", which is added by a bot if statement.snaks[aliasesP.importedFrom] then statement.snaks[aliasesP.importedFrom] = nil end -- don't include "Wikimedia import URL" if statement.snaks[aliasesP.wikimediaImportURL] then statement.snaks[aliasesP.wikimediaImportURL] = nil -- don't include "retrieved" if no "referenceURL" is present, -- as "retrieved" probably belongs to "Wikimedia import URL" if statement.snaks[aliasesP.retrieved] and not statement.snaks[aliasesP.referenceURL] then statement.snaks[aliasesP.retrieved] = nil end end -- don't include "inferred from", which is added by a bot if statement.snaks[aliasesP.inferredFrom] then statement.snaks[aliasesP.inferredFrom] = nil end -- don't include "type of reference" if statement.snaks[aliasesP.typeOfReference] then statement.snaks[aliasesP.typeOfReference] = nil end -- don't include "image" to prevent littering if statement.snaks[aliasesP.image] then statement.snaks[aliasesP.image] = nil end -- don't include "language" if it is equal to the local one if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then statement.snaks[aliasesP.language] = nil end if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then -- "stated in" was given but "reference URL" was not. -- get "Wikidata property" properties from the item in "stated in" -- if any of the returned properties of the external-id datatype is in statement.snaks, generate a URL from it and use the URL in the reference -- find the "Wikidata property" properties in the item from "stated in" wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true) for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then tempLink = self.conf:getValue(statement.snaks[wikidataPropertyOfSource][1], false, true) -- not raw, linked if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL. additionalRefProperties[aliasesP.referenceURL] = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") -- the URL is in wiki markup, so strip the square brackets and the display text statement.snaks[wikidataPropertyOfSource] = nil break end end end end -- don't include "subject named as", but use it as the title when "title" is not present but a URL is if statement.snaks[aliasesP.subjectNamedAs] then if not statement.snaks[aliasesP.title] and (statement.snaks[aliasesP.referenceURL] or additionalRefProperties[aliasesP.referenceURL]) then additionalRefProperties[aliasesP.title] = statement.snaks[aliasesP.subjectNamedAs][1].datavalue.value end statement.snaks[aliasesP.subjectNamedAs] = nil end -- retrieve all the parameters for i in pairs(statement.snaks) do label = "" -- multiple authors may be given if i == aliasesP.author or i == aliasesP.authorNameString then params[i] = self:getReferenceDetails(statement.snaks, i, false, self.linked, true) -- link = true/false, anyLang = true else params[i] = {self:getReferenceDetail(statement.snaks, i, false, (self.linked or (i == aliasesP.statedIn)) and (statement.snaks[i][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true end if #params[i] == 0 then params[i] = nil else referenceEmpty = false if statement.snaks[i][1].datatype == 'external-id' then key = "external-id" label = self.conf:getLabel(i) if label ~= "" then label = label .. " " end else key = i end -- add the parameter to each matching type of citation for j in pairs(citeParams) do -- do so if there was no mismatch with a previous parameter if not citeMismatch[j] then -- check if this parameter is not mismatching itself if i18n['cite'][j][key] then -- continue if an option is available in the corresponding cite template if i18n['cite'][j][key] ~= "" then -- handle non-author properties (and author properties ("author" and "author name string"), if they don't use the same template parameter) if (i ~= aliasesP.author and i ~= aliasesP.authorNameString) or (i18n['cite'][j][aliasesP.author] ~= i18n['cite'][j][aliasesP.authorNameString]) then citeParams[j][i18n['cite'][j][key]] = label .. params[i][1] -- to avoid problems with non-author multiple parameters (if existent), the following old code is retained for k=2, #params[i] do citeParams[j][i18n['cite'][j][key]..k] = label .. params[i][k] end -- handle "author" and "author name string" specially if they use the same template parameter elseif i == aliasesP.author or i == aliasesP.authorNameString then if params[aliasesP.author] ~= nil then numAuthorParameters = #params[aliasesP.author] else numAuthorParameters = 0 end if params[aliasesP.authorNameString] ~= nil then numAuthorNameStringParameters = #params[aliasesP.authorNameString] else numAuthorNameStringParameters = 0 end -- execute only if both "author" and "author name string" satisfy this condition: the property is both in params and in statement.snaks or it is neither in params nor in statement.snaks -- reason: parameters are added to params each iteration of the loop, not before the loop if ((statement.snaks[aliasesP.author] == nil) == (numAuthorParameters == 0)) and ((statement.snaks[aliasesP.authorNameString] == nil) == (numAuthorNameStringParameters == 0)) then for k=1, numAuthorParameters + numAuthorNameStringParameters do if k <= numAuthorParameters then -- now handling the authors from the "author" property citeParams[j][i18n['cite'][j][aliasesP.author]..k] = label .. params[aliasesP.author][k] else -- now handling the authors from "author name string" citeParams[j][i18n['cite'][j][aliasesP.authorNameString]..k] = label .. params[aliasesP.authorNameString][k - numAuthorParameters] end end end end end else citeMismatch[j] = true end end end end end -- use additional properties for i in pairs(additionalRefProperties) do for j in pairs(citeParams) do if not citeMismatch[j] and i18n["cite"][j][i] then citeParams[j][i18n["cite"][j][i]] = additionalRefProperties[i] else citeMismatch[j] = true end end end -- get title of general template for citing web references citeWeb = split(mw.wikibase.getSitelink(aliasesQ.citeWeb) or "", ":")[2] -- split off namespace from front -- get title of template that expands stated-in references into citations citeQ = split(mw.wikibase.getSitelink(aliasesQ.citeQ) or "", ":")[2] -- split off namespace from front -- (1) use the general template for citing web references if there is a match and if at least both "reference URL" and "title" are present if citeWeb and not citeMismatch['web'] and citeParams['web'][i18n['cite']['web'][aliasesP.referenceURL]] and citeParams['web'][i18n['cite']['web'][aliasesP.title]] then useCite = citeWeb useParams = citeParams['web'] -- (2) use the template that expands stated-in references into citations if there is a match and if at least "stated in" is present elseif citeQ and not citeMismatch['q'] and citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] then -- we need the raw "stated in" Q-identifier for the this template citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] = self:getReferenceDetail(statement.snaks, aliasesP.statedIn, true) -- raw = true useCite = citeQ useParams = citeParams['q'] end if useCite and useParams then -- if this module is being substituted then build a regular template call, otherwise expand the template if mw.isSubsting() then for i, v in pairs(useParams) do value = value .. "|" .. i .. "=" .. v end value = "{{" .. useCite .. value .. "}}" else value = mw.getCurrentFrame():expandTemplate{title=useCite, args=useParams} end -- (3) if the citation couldn't be displayed using Cite web or Cite Q, but has properties other than the removed ones, throw an error elseif not referenceEmpty then value = "<span style=\"color:#dd3333\">" .. errorText("malformed-reference") .. "</span>" end if value ~= "" then value = {value} -- create one value object if not self.rawValue then -- this should become a <ref> tag, so save the reference's hash for later value.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['cite']['version']) + version) end ref = {value} -- wrap the value object in an array end end return ref end -- gets a detail of one particular type for a reference function State:getReferenceDetail(snaks, dType, raw, link, anyLang) local switchLang = anyLang local value = nil if not snaks[dType] then return nil end -- if anyLang, first try the local language and otherwise any language repeat for _, v in ipairs(snaks[dType]) do value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true if value then break end end if value or not anyLang then break end switchLang = not switchLang until anyLang and switchLang return value end -- gets the details of one particular type for a reference function State:getReferenceDetails(snaks, dType, raw, link, anyLang) local values = {} if not snaks[dType] then return {} end for _, v in ipairs(snaks[dType]) do -- if nil is returned then it will not be added to the table values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true end return values end -- level 1 hook function State:getAlias(object) local value = object.value local title = nil if value and self.linked then if self.conf.entityID:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(self.conf.entityID) elseif self.conf.entityID:sub(1,1) == "P" then title = "d:Property:" .. self.conf.entityID end if title then value = buildWikilink(title, value) end end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getBadge(value) value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName) if value == "" then value = nil end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end function State:callHook(param, hooks, statement, result) local valuesArray, refHash -- call a parameter's hook if it has been defined and if it has not been called before if not result[param] and hooks[param] then valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects -- add to the result if #valuesArray > 0 then result[param] = valuesArray result.count = result.count + 1 else result[param] = {} -- an empty array to indicate that we've tried this hook already return true -- miss == true end end return false end -- iterate through claims, claim's qualifiers or claim's references to collect values function State:iterate(statements, hooks, matchHook) matchHook = matchHook or alwaysTrue local matches = false local rankPos = nil local result, gotRequired for _, v in ipairs(statements) do -- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.) matches, rankPos = matchHook(self, v) if matches then result = {count = 0} -- collection of arrays with value objects local function walk(formatTable) local miss for i2, v2 in pairs(formatTable.req) do -- call a hook, adding its return value to the result miss = self:callHook(i2, hooks, v, result) if miss then -- we miss a required value for this level, so return false return false end if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point breaks the loop return true end end for _, v2 in ipairs(formatTable) do if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point prevents further childs from being processed return true end if v2.child then walk(v2.child) end end return true end gotRequired = walk(self.parsedFormat) -- only append the result if we got values for all required parameters on the root level if gotRequired then -- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank if rankPos and self.conf.foundRank > rankPos then self.conf.foundRank = rankPos end -- append the result self.results[#self.results + 1] = result -- break if we only need a single value if self.singleValue then break end end end end return self:out() end local function getEntityId(arg, eid, page, allowOmitPropPrefix) local id = nil local prop = nil if arg then if arg:sub(1,1) == ":" then page = arg eid = nil elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then eid = arg page = nil else prop = arg end end if eid then if eid:sub(1,9):lower() == "property:" then id = replaceAlias(mw.text.trim(eid:sub(10))) if id:sub(1,1):upper() ~= "P" then id = "" end else id = replaceAlias(eid) end elseif page then if page:sub(1,1) == ":" then page = mw.text.trim(page:sub(2)) end id = mw.wikibase.getEntityIdForTitle(page) or "" end if not id then id = mw.wikibase.getEntityIdForCurrentPage() or "" end id = id:upper() if not mw.wikibase.isValidEntityId(id) then id = "" end return id, prop end local function nextArg(args) local arg = args[args.pointer] if arg then args.pointer = args.pointer + 1 return mw.text.trim(arg) else return nil end end local function claimCommand(args, funcName) local cfg = Config:new() cfg:processFlagOrCommand(funcName) -- process first command (== function name) local lastArg, parsedFormat, formatParams, claims, value local hooks = {count = 0} -- set the date if given; -- must come BEFORE processing the flags if args[p.args.date] then cfg.atDate = {parseDate(args[p.args.date])} cfg.periods = {false, true, false} -- change default time constraint to 'current' end -- process flags and commands repeat lastArg = nextArg(args) until not cfg:processFlagOrCommand(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page]) if cfg.entityID == "" then return "" -- we cannot continue without a valid entity ID end cfg.entity = mw.wikibase.getEntity(cfg.entityID) if not cfg.propertyID then cfg.propertyID = nextArg(args) end cfg.propertyID = replaceAlias(cfg.propertyID) if not cfg.entity or not cfg.propertyID then return "" -- we cannot continue without an entity or a property ID end cfg.propertyID = cfg.propertyID:upper() if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then return "" -- there is no use to continue without any claims end claims = cfg.entity.claims[cfg.propertyID] if cfg.states.qualifiersCount > 0 then -- do further processing if "qualifier(s)" command was given if #args - args.pointer + 1 > cfg.states.qualifiersCount then -- claim ID or literal value has been given cfg.propertyValue = nextArg(args) end for i = 1, cfg.states.qualifiersCount do -- check if given qualifier ID is an alias and add it cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper() end elseif cfg.states[parameters.reference] then -- do further processing if "reference(s)" command was given cfg.propertyValue = nextArg(args) end -- check for special property value 'somevalue' or 'novalue' if cfg.propertyValue then cfg.propertyValue = replaceSpecialChars(cfg.propertyValue) if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue' else cfg.propertyValue = mw.text.trim(cfg.propertyValue) end end -- parse the desired format, or choose an appropriate format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given if cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier) else parsedFormat, formatParams = parseFormat(formats.qualifier) end elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.property) else -- "reference(s)" command given parsedFormat, formatParams = parseFormat(formats.reference) end -- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then cfg.separators["sep"..parameters.separator][1] = {";"} end -- if only "reference(s)" has been given, set the default separator to none (except when raw) if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0 and not cfg.states[parameters.reference].rawValue then cfg.separators["sep"][1] = nil end -- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent if cfg.states.qualifiersCount == 1 then cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"] end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hooks that should be called (getProperty, getQualifiers, getReferences); -- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given for i, v in pairs(cfg.states) do -- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q" if formatParams[i] or formatParams[i:sub(1, 2)] then hooks[i] = getHookName(i, 1) hooks.count = hooks.count + 1 end end -- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...); -- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1) hooks.count = hooks.count + 1 end -- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration; -- must come AFTER defining the hooks if not cfg.states[parameters.property] then cfg.states[parameters.property] = State:new(cfg, parameters.property) -- if the "single" flag has been given then this state should be equivalent to "property" (singular) if cfg.singleClaim then cfg.states[parameters.property].singleValue = true end end -- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values, -- which must exist in order to be able to determine if a claim has any references; -- must come AFTER defining the hooks if cfg.sourcedOnly and not cfg.states[parameters.reference] then cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead end -- set the parsed format and the separators (and optional punctuation mark); -- must come AFTER creating the additonal states cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat) -- process qualifier matching values, analogous to cfg.propertyValue for i, v in pairs(args) do i = tostring(i) if i:match('^[Pp]%d+$') or aliasesP[i] then v = replaceSpecialChars(v) -- check for special qualifier value 'somevalue' if v ~= "" and mw.text.trim(v) == "" then v = " " -- single space represents 'somevalue' end cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v end end -- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated) claims = sortOnRank(claims) -- then iterate through the claims to collect values value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook -- if desired, add a clickable icon that may be used to edit the returned values on Wikidata if cfg.editable and value ~= "" then value = value .. cfg:getEditIcon() end return value end local function generalCommand(args, funcName) local cfg = Config:new() cfg.curState = State:new(cfg) local lastArg local value = nil repeat lastArg = nextArg(args) until not cfg:processFlag(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true) if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then return "" -- we cannot continue without an entity end -- serve according to the given command if funcName == p.generalCommands.label then value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName) elseif funcName == p.generalCommands.title then cfg.inSitelinks = true if cfg.entityID:sub(1,1) == "Q" then value = mw.wikibase.getSitelink(cfg.entityID) end if cfg.curState.linked and value then value = buildWikilink(value) end elseif funcName == p.generalCommands.description then value = mw.wikibase.getDescription(cfg.entityID) else local parsedFormat, formatParams local hooks = {count = 0} cfg.entity = mw.wikibase.getEntity(cfg.entityID) if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then cfg.curState.singleValue = true end if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then return "" -- there is no use to continue without any aliasses end local aliases = cfg.entity.aliases[cfg.langCode] -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.alias) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getAlias); -- only define the hook if the parameter ("%a") has been given if formatParams[parameters.alias] then hooks[parameters.alias] = getHookName(parameters.alias, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(aliases, hooks)) elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then return "" -- there is no use to continue without any badges end local badges = cfg.entity.sitelinks[cfg.siteID].badges cfg.inSitelinks = true -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.badge) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getBadge); -- only define the hook if the parameter ("%b") has been given if formatParams[parameters.badge] then hooks[parameters.badge] = getHookName(parameters.badge, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(badges, hooks)) end end value = value or "" if cfg.editable and value ~= "" then -- if desired, add a clickable icon that may be used to edit the returned value on Wikidata value = value .. cfg:getEditIcon() end return value end -- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args) local function establishCommands(commandList, commandFunc) for _, commandName in pairs(commandList) do local function wikitextWrapper(frame) local args = copyTable(frame.args) args.pointer = 1 loadI18n(aliasesP, frame) return commandFunc(args, commandName) end p[commandName] = wikitextWrapper local function luaWrapper(args) args = copyTable(args) args.pointer = 1 loadI18n(aliasesP) return commandFunc(args, commandName) end p["_" .. commandName] = luaWrapper end end establishCommands(p.claimCommands, claimCommand) establishCommands(p.generalCommands, generalCommand) -- main function that is supposed to be used by wrapper templates function p.main(frame) if not mw.wikibase then return nil end local f, args loadI18n(aliasesP, frame) -- get the parent frame to take the arguments that were passed to the wrapper template frame = frame:getParent() or frame if not frame.args[1] then throwError("no-function-specified") end f = mw.text.trim(frame.args[1]) if f == "main" then throwError("main-called-twice") end assert(p["_"..f], errorText('no-such-function', f)) -- copy arguments from immutable to mutable table args = copyTable(frame.args) -- remove the function name from the list table.remove(args, 1) return p["_"..f](args) end return p 279887e54847ae34d319ff4c305ab2c65fdbc474 Template:Tt 10 1735 3282 3281 2023-11-12T13:11:06Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Tt]] wikitext text/x-wiki #REDIRECT [[Template:Mono]] a7a3647ba0499a71e399c9dd87e77998307f51bf Template:Cot 10 1736 3284 3283 2023-11-12T13:11:13Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Cot]] wikitext text/x-wiki #REDIRECT [[Template:Collapse top]] {{Redirect category shell| {{R from template shortcut}} }} 708f8bf79aefbfe8ee62f4fa68561059be0372d2 Module:Transclusion count/data/I 828 70 3286 3285 2023-11-12T13:11:19Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Transclusion_count/data/I]] Scribunto text/plain return { ["IAST"] = 6400, ["IBDB_name"] = 9200, ["ICD10"] = 4700, ["ICD9"] = 4400, ["ICS"] = 2900, ["IDN"] = 3400, ["IMDb_episode"] = 10000, ["IMDb_episodes"] = 2700, ["IMDb_name"] = 154000, ["IMDb_title"] = 191000, ["IMO_Number"] = 4100, ["IMSLP"] = 8300, ["INA"] = 2200, ["IND"] = 7700, ["INR"] = 6600, ["INRConvert"] = 5700, ["INRConvert/CurrentRate"] = 5600, ["INRConvert/USD"] = 5600, ["INRConvert/out"] = 5600, ["IOC_profile"] = 5000, ["IP"] = 2600, ["IPA"] = 143000, ["IPA-de"] = 8200, ["IPA-es"] = 7900, ["IPA-fr"] = 44000, ["IPA-it"] = 5900, ["IPA-nl"] = 3900, ["IPA-pl"] = 4100, ["IPA-pt"] = 3300, ["IPA-sl"] = 6900, ["IPA-th"] = 3000, ["IPA_audio_link"] = 3500, ["IPA_link"] = 3500, ["IPAc-cmn"] = 2300, ["IPAc-en"] = 49000, ["IPAc-pl"] = 51000, ["IPC_athlete"] = 2800, ["IPSummary"] = 78000, ["IP_summary"] = 79000, ["IPtalk"] = 18000, ["IPuser"] = 7100, ["IPvandal"] = 2700, ["IRC"] = 7300, ["IRI"] = 2300, ["IRL"] = 5500, ["IRN"] = 3700, ["ISBN"] = 462000, ["ISBN?"] = 2100, ["ISBNT"] = 39000, ["ISBN_missing"] = 2600, ["ISFDB_name"] = 4100, ["ISFDB_title"] = 4600, ["ISL"] = 2100, ["ISO_15924/script-example-character"] = 2800, ["ISO_15924/wp-article"] = 2800, ["ISO_15924/wp-article/format"] = 2800, ["ISO_15924/wp-article/label"] = 2700, ["ISO_3166_code"] = 494000, ["ISO_3166_name"] = 16000, ["ISO_639_name"] = 8200, ["ISP"] = 5300, ["ISR"] = 4900, ["ISSN"] = 12000, ["ISSN_link"] = 30000, ["ISTAT"] = 8100, ["ISU_figure_skater"] = 2500, ["ITA"] = 17000, ["ITF"] = 6300, ["ITF_profile"] = 9100, ["ITIS"] = 4400, ["ITN_talk"] = 10000, ["ITN_talk/date"] = 10000, ["IUCN_banner"] = 15000, ["I_sup"] = 4600, ["Ice_hockey"] = 19000, ["Ice_hockey_stats"] = 19000, ["Icehockeystats"] = 12000, ["Icon"] = 582000, ["If"] = 277000, ["If_all"] = 6500, ["If_between"] = 3800, ["If_both"] = 129000, ["If_empty"] = 3680000, ["If_first_display_both"] = 73000, ["If_in_page"] = 10000, ["If_last_display_both"] = 30000, ["If_number"] = 2300, ["If_preview"] = 58000, ["If_then_show"] = 294000, ["Ifempty"] = 4000, ["Ifeq"] = 17000, ["Iferror_then_show"] = 3300, ["Ifexist_not_redirect"] = 1310000, ["Ifnotempty"] = 15000, ["Ifnumber"] = 36000, ["Ifsubst"] = 453000, ["Ih"] = 7600, ["Ill"] = 121000, ["Illm"] = 6700, ["Image_frame"] = 4900, ["Image_label"] = 4500, ["Image_label_begin"] = 3800, ["Image_label_end"] = 3800, ["Image_label_small"] = 2600, ["Image_needed"] = 4500, ["Image_other"] = 272000, ["Image_requested"] = 168000, ["Image_requested/Category_helper"] = 161000, ["Imbox"] = 922000, ["Imdb_name"] = 5400, ["Imdb_title"] = 4000, ["Import_style"] = 11000, ["Import_style/inputbox.css"] = 11000, ["Importance"] = 5660000, ["Importance/colour"] = 5670000, ["Importance_mask"] = 10400000, ["Improve_categories"] = 7400, ["Improve_documentation"] = 2600, ["In_class"] = 5700, ["In_lang"] = 358000, ["In_progress"] = 3300, ["In_string"] = 77000, ["In_title"] = 20000, ["Inactive_userpage_blanked"] = 4900, ["Include-USGov"] = 29000, ["Incomplete_list"] = 23000, ["Inconclusive"] = 2100, ["Increase"] = 44000, ["Incumbent_pope"] = 4300, ["Indent"] = 4400, ["IndexFungorum"] = 2200, ["Indian_English"] = 4300, ["Indian_Rupee"] = 10000, ["Indian_railway_code"] = 3200, ["Inflation"] = 21000, ["Inflation-fn"] = 5400, ["Inflation-year"] = 4500, ["Inflation/IN/startyear"] = 5600, ["Inflation/UK"] = 4400, ["Inflation/UK/dataset"] = 4400, ["Inflation/UK/startyear"] = 4400, ["Inflation/US"] = 12000, ["Inflation/US-GDP"] = 2400, ["Inflation/US-GDP/dataset"] = 2400, ["Inflation/US-GDP/startyear"] = 2400, ["Inflation/US/dataset"] = 12000, ["Inflation/US/startyear"] = 12000, ["Inflation/fn"] = 6300, ["Inflation/year"] = 26000, ["Info"] = 7200, ["Infobox"] = 3240000, ["Infobox/Columns"] = 2400, ["Infobox/mobileviewfix.css"] = 148000, ["Infobox3cols"] = 17000, ["Infobox_AFL_biography"] = 14000, ["Infobox_Aircraft_Begin"] = 5300, ["Infobox_Aircraft_Type"] = 4700, ["Infobox_Athletics_Championships"] = 2700, ["Infobox_Australian_place"] = 15000, ["Infobox_CFL_biography"] = 2200, ["Infobox_COA_wide"] = 3200, ["Infobox_Canada_electoral_district"] = 2500, ["Infobox_Canadian_Football_League_biography"] = 5700, ["Infobox_Canadian_Football_League_biography/position"] = 5700, ["Infobox_Chinese"] = 20000, ["Infobox_Chinese/Chinese"] = 2700, ["Infobox_Chinese/Footer"] = 8700, ["Infobox_Chinese/Header"] = 8700, ["Infobox_Chinese/Korean"] = 17000, ["Infobox_Christian_leader"] = 18000, ["Infobox_French_commune"] = 38000, ["Infobox_GAA_player"] = 2700, ["Infobox_Gaelic_games_player"] = 5000, ["Infobox_German_location"] = 13000, ["Infobox_German_place"] = 14000, ["Infobox_Grand_Prix_race_report"] = 2000, ["Infobox_Greece_place"] = 2900, ["Infobox_Greek_Dimos"] = 2800, ["Infobox_Hindu_temple"] = 2400, ["Infobox_Indian_constituency"] = 4700, ["Infobox_Indian_constituency/defaultdata"] = 4700, ["Infobox_Italian_comune"] = 8100, ["Infobox_Korean_name"] = 15000, ["Infobox_Korean_name/categories"] = 15000, ["Infobox_NASCAR_race_report"] = 2200, ["Infobox_NCAA_team_season"] = 17000, ["Infobox_NFL_biography"] = 28000, ["Infobox_NFL_player"] = 7600, ["Infobox_NFL_team_season"] = 3900, ["Infobox_NRHP"] = 72000, ["Infobox_NRHP/conv"] = 18000, ["Infobox_NRHP/locmapin2region"] = 66000, ["Infobox_Officeholder"] = 4700, ["Infobox_Olympic_event"] = 7300, ["Infobox_Olympic_event/games_text"] = 7300, ["Infobox_Pan_American_Games_event"] = 2200, ["Infobox_Paralympic_event"] = 2600, ["Infobox_Paralympic_event/games_text"] = 2600, ["Infobox_Politician"] = 2200, ["Infobox_Romanian_subdivision"] = 3200, ["Infobox_Russian_district"] = 2000, ["Infobox_Russian_inhabited_locality"] = 4500, ["Infobox_SCOTUS_case"] = 3700, ["Infobox_Site_of_Special_Scientific_Interest"] = 2000, ["Infobox_Swiss_town"] = 2800, ["Infobox_Switzerland_municipality"] = 2900, ["Infobox_Turkey_place"] = 19000, ["Infobox_U.S._county"] = 3000, ["Infobox_U.S._county/district"] = 3000, ["Infobox_UK_constituency"] = 2100, ["Infobox_UK_constituency/year"] = 2100, ["Infobox_UK_legislation"] = 3400, ["Infobox_UK_place"] = 26000, ["Infobox_UK_place/NoDialCode"] = 8100, ["Infobox_UK_place/NoPostCode"] = 3200, ["Infobox_UK_place/area"] = 2400, ["Infobox_UK_place/dist"] = 2500, ["Infobox_UK_place/local"] = 26000, ["Infobox_UK_place/styles.css"] = 26000, ["Infobox_UN_resolution"] = 2300, ["Infobox_US_Supreme_Court_case"] = 3900, ["Infobox_US_Supreme_Court_case/courts"] = 3800, ["Infobox_Wikipedia_user"] = 9800, ["Infobox_YouTube_personality"] = 2700, ["Infobox_YouTube_personality/styles.css"] = 2700, ["Infobox_academic"] = 14000, ["Infobox_aircraft_begin"] = 14000, ["Infobox_aircraft_occurrence"] = 2300, ["Infobox_aircraft_type"] = 13000, ["Infobox_airline"] = 4600, ["Infobox_airport"] = 15000, ["Infobox_airport/datatable"] = 15000, ["Infobox_album"] = 162000, ["Infobox_album/color"] = 193000, ["Infobox_album/link"] = 162000, ["Infobox_anatomy"] = 4500, ["Infobox_ancient_site"] = 5400, ["Infobox_animanga/Footer"] = 6900, ["Infobox_animanga/Header"] = 6900, ["Infobox_animanga/Print"] = 5500, ["Infobox_animanga/Video"] = 4700, ["Infobox_architect"] = 3700, ["Infobox_artist"] = 29000, ["Infobox_artist_discography"] = 6000, ["Infobox_artwork"] = 11000, ["Infobox_athlete"] = 2800, ["Infobox_automobile"] = 8500, ["Infobox_award"] = 13000, ["Infobox_badminton_player"] = 3200, ["Infobox_baseball_biography"] = 28000, ["Infobox_baseball_biography/style"] = 28000, ["Infobox_baseball_biography/styles.css"] = 28000, ["Infobox_baseball_team_season"] = 3200, ["Infobox_baseball_team_season/leagueseason"] = 3200, ["Infobox_baseball_team_season/season"] = 3200, ["Infobox_baseball_team_season/styles.css"] = 3200, ["Infobox_basketball_biography"] = 21000, ["Infobox_basketball_biography/style"] = 21000, ["Infobox_basketball_club"] = 3000, ["Infobox_beauty_pageant"] = 2400, ["Infobox_bilateral_relations"] = 4400, ["Infobox_body_of_water"] = 18000, ["Infobox_book"] = 52000, ["Infobox_boxer"] = 5700, ["Infobox_bridge"] = 6000, ["Infobox_building"] = 28000, ["Infobox_character"] = 7500, ["Infobox_chess_biography"] = 4000, ["Infobox_chess_player"] = 3200, ["Infobox_church"] = 15000, ["Infobox_church/denomination"] = 15000, ["Infobox_church/font_color"] = 15000, ["Infobox_civil_conflict"] = 2400, ["Infobox_civilian_attack"] = 5600, ["Infobox_college_coach"] = 12000, ["Infobox_college_football_game"] = 2100, ["Infobox_college_football_player"] = 2100, ["Infobox_college_sports_team_season"] = 40000, ["Infobox_college_sports_team_season/link"] = 40000, ["Infobox_college_sports_team_season/name"] = 40000, ["Infobox_college_sports_team_season/succession"] = 40000, ["Infobox_college_sports_team_season/team"] = 40000, ["Infobox_comic_book_title"] = 3000, ["Infobox_comics_character"] = 3500, ["Infobox_comics_creator"] = 3500, ["Infobox_comics_creator/styles.css"] = 3500, ["Infobox_company"] = 84000, ["Infobox_computing_device"] = 2400, ["Infobox_concert"] = 3300, ["Infobox_constituency"] = 5500, ["Infobox_country"] = 6500, ["Infobox_country/formernext"] = 6000, ["Infobox_country/imagetable"] = 5200, ["Infobox_country/multirow"] = 8300, ["Infobox_country/status_text"] = 2800, ["Infobox_country/styles.css"] = 6500, ["Infobox_country_at_games"] = 15000, ["Infobox_country_at_games/core"] = 15000, ["Infobox_country_at_games/see_also"] = 12000, ["Infobox_court_case"] = 4700, ["Infobox_court_case/images"] = 2400, ["Infobox_cricket_tournament"] = 2400, ["Infobox_cricketer"] = 32000, ["Infobox_cricketer/career"] = 32000, ["Infobox_cricketer/national_side"] = 7500, ["Infobox_criminal"] = 6400, ["Infobox_curler"] = 2600, ["Infobox_cycling_race_report"] = 4500, ["Infobox_cyclist"] = 16000, ["Infobox_dam"] = 5700, ["Infobox_deity"] = 2000, ["Infobox_deity/color"] = 2000, ["Infobox_designation_list"] = 20000, ["Infobox_designation_list/entry"] = 17000, ["Infobox_dim"] = 7000, ["Infobox_dim/core"] = 7000, ["Infobox_diocese"] = 3800, ["Infobox_drug"] = 9800, ["Infobox_drug/chemical_formula"] = 9800, ["Infobox_drug/data_page_link"] = 9800, ["Infobox_drug/formatATC"] = 9700, ["Infobox_drug/formatCASnumber"] = 9800, ["Infobox_drug/formatChEBI"] = 9800, ["Infobox_drug/formatChEMBL"] = 9800, ["Infobox_drug/formatChemDBNIAID"] = 9800, ["Infobox_drug/formatChemSpider"] = 9800, ["Infobox_drug/formatCompTox"] = 9800, ["Infobox_drug/formatDrugBank"] = 9800, ["Infobox_drug/formatIUPHARBPS"] = 9800, ["Infobox_drug/formatJmol"] = 9800, ["Infobox_drug/formatKEGG"] = 9800, ["Infobox_drug/formatPDBligand"] = 9200, ["Infobox_drug/formatPubChemCID"] = 9800, ["Infobox_drug/formatPubChemSID"] = 9800, ["Infobox_drug/formatUNII"] = 9800, ["Infobox_drug/legal_status"] = 10000, ["Infobox_drug/licence"] = 9900, ["Infobox_drug/maintenance_categories"] = 9800, ["Infobox_drug/non-ref-space"] = 4300, ["Infobox_drug/pregnancy_category"] = 9900, ["Infobox_drug/title"] = 9800, ["Infobox_election"] = 30000, ["Infobox_election/row"] = 30000, ["Infobox_election/shortname"] = 28000, ["Infobox_enzyme"] = 5100, ["Infobox_ethnic_group"] = 7300, ["Infobox_event"] = 5500, ["Infobox_family"] = 2200, ["Infobox_figure_skater"] = 4200, ["Infobox_film"] = 157000, ["Infobox_film/short_description"] = 153000, ["Infobox_film_awards"] = 2700, ["Infobox_film_awards/link"] = 2600, ["Infobox_film_awards/style"] = 2700, ["Infobox_food"] = 6900, ["Infobox_football_biography"] = 207000, ["Infobox_football_club"] = 28000, ["Infobox_football_club_season"] = 20000, ["Infobox_football_league"] = 2600, ["Infobox_football_league_season"] = 20000, ["Infobox_football_match"] = 5900, ["Infobox_football_tournament_season"] = 8100, ["Infobox_former_subdivision"] = 3300, ["Infobox_former_subdivision/styles.css"] = 3300, ["Infobox_galaxy"] = 2100, ["Infobox_game"] = 2600, ["Infobox_game_score"] = 3400, ["Infobox_gene"] = 13000, ["Infobox_given_name"] = 4100, ["Infobox_golfer"] = 4400, ["Infobox_golfer/highest_ranking"] = 4400, ["Infobox_government_agency"] = 10000, ["Infobox_government_cabinet"] = 2600, ["Infobox_gridiron_football_person"] = 2400, ["Infobox_gridiron_football_person/position"] = 5700, ["Infobox_gymnast"] = 3500, ["Infobox_handball_biography"] = 4900, ["Infobox_historic_site"] = 12000, ["Infobox_horseraces"] = 2600, ["Infobox_hospital"] = 6300, ["Infobox_hospital/care_system"] = 6300, ["Infobox_hospital/lists"] = 6300, ["Infobox_ice_hockey_biography"] = 20000, ["Infobox_ice_hockey_player"] = 19000, ["Infobox_ice_hockey_team"] = 3000, ["Infobox_ice_hockey_team_season"] = 2000, ["Infobox_international_football_competition"] = 5800, ["Infobox_islands"] = 8900, ["Infobox_islands/area"] = 9300, ["Infobox_islands/density"] = 9300, ["Infobox_islands/length"] = 8900, ["Infobox_islands/styles.css"] = 8900, ["Infobox_journal"] = 9800, ["Infobox_journal/Abbreviation_search"] = 9600, ["Infobox_journal/Bluebook_check"] = 9400, ["Infobox_journal/Former_check"] = 9400, ["Infobox_journal/ISO_4_check"] = 9400, ["Infobox_journal/ISSN-eISSN"] = 9500, ["Infobox_journal/Indexing_search"] = 9500, ["Infobox_journal/MathSciNet_check"] = 9400, ["Infobox_journal/NLM_check"] = 9400, ["Infobox_journal/frequency"] = 8600, ["Infobox_lake"] = 4300, ["Infobox_language"] = 9600, ["Infobox_language/family-color"] = 11000, ["Infobox_language/genetic"] = 6600, ["Infobox_language/linguistlist"] = 9600, ["Infobox_language/ref"] = 7100, ["Infobox_legislature"] = 3700, ["Infobox_library"] = 2200, ["Infobox_lighthouse"] = 2600, ["Infobox_lighthouse/light"] = 2600, ["Infobox_locomotive"] = 4900, ["Infobox_magazine"] = 7600, ["Infobox_manner_of_address"] = 3300, ["Infobox_mapframe"] = 81000, ["Infobox_martial_artist"] = 5700, ["Infobox_martial_artist/record"] = 5700, ["Infobox_medal_templates"] = 425000, ["Infobox_medical_condition"] = 10000, ["Infobox_medical_condition_(new)"] = 8200, ["Infobox_medical_details"] = 2100, ["Infobox_military_conflict"] = 22000, ["Infobox_military_installation"] = 9800, ["Infobox_military_person"] = 45000, ["Infobox_military_unit"] = 26000, ["Infobox_mine"] = 2100, ["Infobox_model"] = 2300, ["Infobox_monument"] = 2100, ["Infobox_mountain"] = 28000, ["Infobox_multi-sport_competition_event"] = 2400, ["Infobox_museum"] = 11000, ["Infobox_musical_artist"] = 122000, ["Infobox_musical_artist/color"] = 122000, ["Infobox_musical_artist/hCard_class"] = 314000, ["Infobox_musical_composition"] = 2900, ["Infobox_name"] = 7500, ["Infobox_name_module"] = 7100, ["Infobox_newspaper"] = 9700, ["Infobox_nobility"] = 2400, ["Infobox_noble"] = 7400, ["Infobox_officeholder"] = 221000, ["Infobox_officeholder/office"] = 226000, ["Infobox_official_post"] = 8100, ["Infobox_organization"] = 36000, ["Infobox_pageant_titleholder"] = 3000, ["Infobox_park"] = 7500, ["Infobox_person"] = 477000, ["Infobox_person/Wikidata"] = 4600, ["Infobox_person/height"] = 103000, ["Infobox_person/length"] = 7000, ["Infobox_person/weight"] = 67000, ["Infobox_philosopher"] = 3500, ["Infobox_planet"] = 4700, ["Infobox_play"] = 3900, ["Infobox_political_party"] = 14000, ["Infobox_power_station"] = 3100, ["Infobox_prepared_food"] = 3100, ["Infobox_professional_wrestler"] = 4300, ["Infobox_professional_wrestling_event"] = 2700, ["Infobox_protected_area"] = 14000, ["Infobox_protein_family"] = 2100, ["Infobox_publisher"] = 2400, ["Infobox_racehorse"] = 5500, ["Infobox_racing_driver"] = 3900, ["Infobox_racing_driver_series_section"] = 2100, ["Infobox_radio_station"] = 22000, ["Infobox_rail"] = 2900, ["Infobox_rail_line"] = 7300, ["Infobox_rail_service"] = 3000, ["Infobox_rail_service/doc"] = 2900, ["Infobox_reality_competition_season"] = 3500, ["Infobox_record_label"] = 4000, ["Infobox_recurring_event"] = 6500, ["Infobox_religious_biography"] = 5300, ["Infobox_religious_building"] = 12000, ["Infobox_religious_building/color"] = 17000, ["Infobox_restaurant"] = 3000, ["Infobox_river"] = 30000, ["Infobox_river/calcunit"] = 30000, ["Infobox_river/discharge"] = 30000, ["Infobox_river/row-style"] = 30000, ["Infobox_river/source"] = 30000, ["Infobox_road"] = 24000, ["Infobox_road/meta/mask/category"] = 24000, ["Infobox_road/meta/mask/country"] = 24000, ["Infobox_road/styles.css"] = 25000, ["Infobox_road_small"] = 2300, ["Infobox_rockunit"] = 6500, ["Infobox_royalty"] = 22000, ["Infobox_royalty/short_description"] = 12000, ["Infobox_rugby_biography"] = 16000, ["Infobox_rugby_biography/correct_date"] = 16000, ["Infobox_rugby_biography/depcheck"] = 16000, ["Infobox_rugby_league_biography"] = 10000, ["Infobox_rugby_league_biography/PLAYER"] = 9900, ["Infobox_rugby_team"] = 2600, ["Infobox_sailboat_specifications"] = 2300, ["Infobox_saint"] = 5000, ["Infobox_school"] = 38000, ["Infobox_school/short_description"] = 38000, ["Infobox_school_district"] = 5700, ["Infobox_school_district/styles.css"] = 5700, ["Infobox_scientist"] = 49000, ["Infobox_service_record"] = 2600, ["Infobox_settlement"] = 563000, ["Infobox_settlement/areadisp"] = 238000, ["Infobox_settlement/columns"] = 95000, ["Infobox_settlement/columns/styles.css"] = 95000, ["Infobox_settlement/densdisp"] = 438000, ["Infobox_settlement/impus"] = 82000, ["Infobox_settlement/lengthdisp"] = 169000, ["Infobox_settlement/link"] = 95000, ["Infobox_settlement/metric"] = 211000, ["Infobox_settlement/pref"] = 294000, ["Infobox_settlement/styles.css"] = 563000, ["Infobox_ship_begin"] = 41000, ["Infobox_ship_career"] = 37000, ["Infobox_ship_characteristics"] = 41000, ["Infobox_ship_class_overview"] = 4100, ["Infobox_ship_image"] = 40000, ["Infobox_shopping_mall"] = 3500, ["Infobox_short_story"] = 2400, ["Infobox_skier"] = 2500, ["Infobox_soap_character"] = 2900, ["Infobox_software"] = 14000, ["Infobox_software/simple"] = 14000, ["Infobox_song"] = 76000, ["Infobox_song/color"] = 76000, ["Infobox_song/link"] = 76000, ["Infobox_spaceflight"] = 3600, ["Infobox_spaceflight/styles.css"] = 3600, ["Infobox_sport_event"] = 2200, ["Infobox_sports_competition_event"] = 18000, ["Infobox_sports_competition_event/medalrow"] = 12000, ["Infobox_sports_league"] = 5000, ["Infobox_sports_season"] = 5500, ["Infobox_sports_team"] = 2200, ["Infobox_sportsperson"] = 107000, ["Infobox_stadium"] = 3500, ["Infobox_station"] = 55000, ["Infobox_station/doc"] = 55000, ["Infobox_station/services"] = 55000, ["Infobox_station/styles.css"] = 55000, ["Infobox_street"] = 3500, ["Infobox_swimmer"] = 9400, ["Infobox_television"] = 57000, ["Infobox_television/Short_description"] = 55000, ["Infobox_television_channel"] = 6200, ["Infobox_television_episode"] = 12000, ["Infobox_television_episode/styles.css"] = 12000, ["Infobox_television_season"] = 9500, ["Infobox_television_station"] = 3700, ["Infobox_tennis_biography"] = 10000, ["Infobox_tennis_event"] = 2500, ["Infobox_tennis_tournament_event"] = 19000, ["Infobox_tennis_tournament_year"] = 9200, ["Infobox_tennis_tournament_year/color"] = 28000, ["Infobox_tennis_tournament_year/footer"] = 28000, ["Infobox_train"] = 2300, ["Infobox_union"] = 2000, ["Infobox_university"] = 26000, ["Infobox_user"] = 2700, ["Infobox_venue"] = 18000, ["Infobox_video_game"] = 28000, ["Infobox_video_game/styles.css"] = 28000, ["Infobox_volleyball_biography"] = 5400, ["Infobox_weapon"] = 7300, ["Infobox_weather_event"] = 2000, ["Infobox_weather_event/Footer"] = 2000, ["Infobox_weather_event/styles.css"] = 2000, ["Infobox_website"] = 7700, ["Infobox_writer"] = 39000, ["Information"] = 101000, ["Information/styles.css"] = 101000, ["Inline_block"] = 4600, ["Inprogress"] = 2400, ["Input_link"] = 32000, ["Instagram"] = 11000, ["Interlanguage_link"] = 159000, ["Interlanguage_link_multi"] = 19000, ["Internet_Archive_author"] = 19000, ["Internet_Archive_film"] = 2500, ["Intitle"] = 12000, ["Invalid_SVG"] = 2900, ["Invalid_SVG/styles.css"] = 2900, ["Iptalk"] = 17000, ["IranCensus2006"] = 46000, ["IranNCSGN"] = 3200, ["Iran_Census_2006"] = 46000, ["Irc"] = 2100, ["Irish_place_name"] = 2700, ["IsIPAddress"] = 36000, ["IsValidPageName"] = 143000, ["Is_MLB_league"] = 3200, ["Is_NPB_league"] = 3200, ["Is_country_in_Central_America"] = 13000, ["Is_country_in_the_Caribbean"] = 14000, ["Is_interwiki_link"] = 5900, ["Is_italic_taxon"] = 487000, ["Is_redirect"] = 27000, ["Isbn"] = 7700, ["Isfdb_name"] = 3600, ["Isfdb_title"] = 4400, ["Isnumeric"] = 142000, ["Iso2continent"] = 36000, ["Iso2country"] = 23000, ["Iso2country/article"] = 22000, ["Iso2country/data"] = 23000, ["Iso2nationality"] = 202000, ["Issubst"] = 72000, ["Isu_name"] = 2200, ["Italic_dab2"] = 5300, ["Italic_title"] = 280000, ["Italic_title_prefixed"] = 8700, ["Italics_colon"] = 3800, ["Italictitle"] = 4200, ["Ivm"] = 5700, ["Ivm/styles.css"] = 5700, ["Ivmbox"] = 123000, ["Ivory_messagebox"] = 143000, ["Module:I18n/complex_date"] = 66000, ["Module:IP"] = 132000, ["Module:IPA"] = 143000, ["Module:IPA/data"] = 129000, ["Module:IPA/styles.css"] = 115000, ["Module:IPA_symbol"] = 4800, ["Module:IPA_symbol/data"] = 4800, ["Module:IPAc-en"] = 49000, ["Module:IPAc-en/data"] = 49000, ["Module:IPAc-en/phonemes"] = 49000, ["Module:IPAc-en/pronunciation"] = 49000, ["Module:IPAddress"] = 187000, ["Module:ISO_3166"] = 1010000, ["Module:ISO_3166/data/AT"] = 2500, ["Module:ISO_3166/data/BA"] = 3400, ["Module:ISO_3166/data/CA"] = 2500, ["Module:ISO_3166/data/CN"] = 2100, ["Module:ISO_3166/data/DE"] = 14000, ["Module:ISO_3166/data/ES"] = 3600, ["Module:ISO_3166/data/FR"] = 38000, ["Module:ISO_3166/data/GB"] = 6400, ["Module:ISO_3166/data/GR"] = 3100, ["Module:ISO_3166/data/IN"] = 29000, ["Module:ISO_3166/data/IR"] = 9100, ["Module:ISO_3166/data/National"] = 1010000, ["Module:ISO_3166/data/PL"] = 6700, ["Module:ISO_3166/data/RS"] = 3200, ["Module:ISO_3166/data/RU"] = 25000, ["Module:ISO_3166/data/US"] = 85000, ["Module:ISO_639_name"] = 20000, ["Module:ISOdate"] = 66000, ["Module:Icon"] = 583000, ["Module:Icon/data"] = 583000, ["Module:If_empty"] = 3680000, ["Module:If_in_page"] = 10000, ["Module:If_preview"] = 295000, ["Module:If_preview/configuration"] = 295000, ["Module:If_preview/styles.css"] = 295000, ["Module:Import_style"] = 11000, ["Module:In_lang"] = 359000, ["Module:Indent"] = 4400, ["Module:Infobox"] = 4130000, ["Module:Infobox/dates"] = 69000, ["Module:Infobox/styles.css"] = 4390000, ["Module:Infobox3cols"] = 298000, ["Module:InfoboxImage"] = 4440000, ["Module:Infobox_body_of_water_tracking"] = 18000, ["Module:Infobox_cyclist_tracking"] = 16000, ["Module:Infobox_gene"] = 13000, ["Module:Infobox_mapframe"] = 407000, ["Module:Infobox_military_conflict"] = 22000, ["Module:Infobox_military_conflict/styles.css"] = 22000, ["Module:Infobox_multi-lingual_name"] = 20000, ["Module:Infobox_multi-lingual_name/data"] = 20000, ["Module:Infobox_power_station"] = 3100, ["Module:Infobox_road"] = 25000, ["Module:Infobox_road/browselinks"] = 25000, ["Module:Infobox_road/errors"] = 24000, ["Module:Infobox_road/length"] = 25000, ["Module:Infobox_road/locations"] = 24000, ["Module:Infobox_road/map"] = 25000, ["Module:Infobox_road/route"] = 25000, ["Module:Infobox_road/sections"] = 24000, ["Module:Infobox_television"] = 57000, ["Module:Infobox_television_disambiguation_check"] = 64000, ["Module:Infobox_television_episode"] = 12000, ["Module:Infobox_television_season_disambiguation_check"] = 9100, ["Module:Infobox_television_season_name"] = 9500, ["Module:Internet_Archive"] = 19000, ["Module:IrelandByCountyCatNav"] = 3400, ["Module:Is_infobox_in_lead"] = 378000, ["Module:Is_instance"] = 337000, ["Module:Italic_title"] = 1120000, ["Module:Italic_title2"] = 5300, } 5d035dc37ac3c3fcd01d436985bf0942e4d13b49 Module:Infobox mapframe/doc 828 1737 3288 3287 2023-11-12T13:11:22Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Infobox_mapframe/doc]] wikitext text/x-wiki {{Module rating|beta}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{High-use}} {{Lua sidebar}} == Usage == Module that automatically makes a mapframe suitable for an infobox automatically, with minimal user input. ===Generic usage=== Just use the template {{tl|Infobox mapframe}}, following the documentation there. This module may also be imported to another Lua module. ===Automatic maps in infoboxes=== :''Example edits: [https://en.wikipedia.org/w/index.php?title=Template%3AInfobox_prison&type=revision&diff=962824818&oldid=782742135 Template:Infobox prison], [https://en.wikipedia.org/w/index.php?title=Template%3AInfobox_prison%2Fdoc&type=revision&diff=962825435&oldid=768262729 Template:Infobox prison/doc]'' Edit the infobox template (or its sandbox). Add lines like the following examples to the infobox. Replace numbers ({{kbd|4}}, or {{kbd|97}} to {{kbd|99}}), with the appropriate number based on how many other image or data parameters are already present. {|style=width:100% |- ! If placing near the top of infobox !! If placing at/near the bottom of the infobox |- |<pre> | image4 = {{#invoke:Infobox mapframe|auto}} | caption4 = {{#invoke:Infobox mapframe|autocaption}} </pre> |<pre> | header97 = {{#if:{{{mapframe|}}}|Location}} | data98 = {{#invoke:Infobox mapframe|auto}} | data99 = {{#invoke:Infobox mapframe|autocaption}} </pre> |} If the template has a <code><nowiki>{{#invoke:</nowiki>[[Module:Check for unknown parameters|Check for unknown parameters]]<nowiki>}}</nowiki></code>, add the following parameters: <pre> | mapframe | mapframe-area_km2 | mapframe-area_mi2 | mapframe-caption | mapframe-coord | mapframe-coordinates | mapframe-custom | mapframe-frame-coord | mapframe-frame-coordinates | mapframe-frame-height | mapframe-frame-width | mapframe-geomask | mapframe-geomask-fill | mapframe-geomask-fill-opacity | mapframe-geomask-stroke-color | mapframe-geomask-stroke-colour | mapframe-geomask-stroke-width | mapframe-height | mapframe-id | mapframe-length_km | mapframe-length_mi | mapframe-marker | mapframe-marker-color | mapframe-marker-colour | mapframe-point | mapframe-shape | mapframe-shape-fill | mapframe-shape-fill-opacity | mapframe-stroke-color | mapframe-stroke-colour | mapframe-stroke-width | mapframe-switcher | mapframe-width | mapframe-wikidata | mapframe-zoom </pre> Once this is done, the above parameters will be available to users of the template. * Defaults values for these parameters can also be specified in the {{kbd|#invoke}} calls above, e.g. <code><nowiki>{{#invoke:Infobox mapframe|auto|mapframe-marker=library}}</nowiki></code> means that the library marker will be used, unless a different value is passed in to the template. * The maps are off by default, which means maps will not be displayed unless {{para|mapframe|yes}} is present in the template call. To turn maps on by default, in the {{kbd|#invoke}} calls above add {{para|onByDefault|yes}} – which means maps will be displayed unless {{para|mapframe|no}} is present in the template call. {{kbd|onByDefault}} can also be set to a conditional, such as if another parameters is present, e.g. {{para|onByDefault|2=<nowiki>{{#if:{{{pushpin_map|}}}|no|yes}}</nowiki>}} * Add the new parameters to the document. You can use {{tlx|Infobox mapframe/doc/parameters}}. Specify default values (if any are used in the {{kbd|#invoke}} calls) using by adding parameters in the form {{tt|{{!}}}}''parameter-name''{{tt|{{=}}}}''value''. The default output is shown here collapsed: {{cot}} {{Infobox mapframe/doc/parameters}} {{cob}} *Parameters can also be added to the TemplateData can also be added by copy-pasting from {{edit|Template:Infobox mapframe/doc/templatedata|Template:Infobox mapframe/doc/templatedata}} == See also == * [[Wikipedia:Mapframe maps in infoboxes]] * [[Module:Mapframe]] & [[Template:Maplink]] <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> }}</includeonly> 51cd0f5b193959f102c4be64250d13289a60a5fa Template:Wde 10 1738 3292 3291 2023-11-12T13:12:07Z Führerredux 2 1 revision imported from [[:wikipedia:Template:Wde]] wikitext text/x-wiki #REDIRECT [[Template:Wikidata entity link]] [[Category:Wikidata templates]] 6ef9e52b49c26bd5d901ebd61f6b059c8971384b Module:Mapframe/doc 828 1739 3294 3293 2023-11-12T13:12:08Z Führerredux 2 1 revision imported from [[:wikipedia:Module:Mapframe/doc]] wikitext text/x-wiki {{Module rating |beta}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{High-use}} {{Lua|Module:Transcluder}} On English Wikipedia, this module is called by {{tlx|Maplink}}, see that template's documentation for usage instructions. == Usage == ;Standard usage: :Just use {{tl|Maplink}}, which passes its parameters to this module's {{mono|main}} function. ;From another module: :# Import this module, e.g. <code><nowiki>local mf = require('Module:Mapframe')</nowiki></code> :# Pass a table of parameter names/values to the {{mono|_main}} function. See {{tl|Maplink}} documentation for parameter names and descriptions. E.g. <code><nowiki>local mapframe = mf._main(parameters)</nowiki></code> :# Preprocess {{mono|_main}}'s output before returning it, e.g. <code><nowiki>return frame:preprocess(mapframe)</nowiki></code> == Set up on another wiki == # '''Create template and module:''' #* Import this module and its template to that wiki (or copy the code over, giving attribution in the edit summary). Optionally, give them a name that makes sense in that wiki's language #* On Wikidata, add them to the items {{wde|Q52554979}} and {{wde|Q27882107}} # '''Localise the module''' #* Edit the top bits of the module, between the comments <code>-- ##### Localisation (L10n) settings #####</code> and <code>-- #### End of L10n settings ####</code>, replacing values between <code>"</code> <code>"</code> symbols with local values (when necessary) # '''Add documentation''' #* to the template (e.g. by translating [[Template:Maplink/doc]], adjusting as necessary per any localisations made in the previous step) #* to the module (please transfer/translate these instructions so that wikimedians who read your wiki but not the English Wikipedia can also set up the module and template on another wiki). <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> }}</includeonly> 47c4c6915b49b24acb2d97871354c5d87de5b5a7 Template:WIA 10 1740 3296 3295 2023-11-12T13:13:56Z Führerredux 2 1 revision imported from [[:wikipedia:Template:WIA]] wikitext text/x-wiki &nbsp;([[Wounded in action|{{abbr|WIA|Wounded in action}}]])<noinclude>{{documentation}}</noinclude> e1621e089aafa654395dd85099656f4d070e1f5e Template:WIA/doc 10 1741 3298 3297 2023-11-12T13:14:10Z Führerredux 2 1 revision imported from [[:wikipedia:Template:WIA/doc]] wikitext text/x-wiki {{Documentation subpage}} ===Usage=== {{tlx|WIA}} produces: {{WIA}} This template is used to indicate wounded commanders in {{tlx|Infobox military conflict}}. ===See also=== *{{tl|DOW}} *{{tl|Executed}} *{{tl|KIA}} *{{tl|POW}} *{{tl|Surrendered}} *{{tl|MIA}} *{{tl|Natural Causes}} <includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc|| <!--Categories below here, please; interwikis to Wikidata.--> [[Category:Military abbreviation templates|{{PAGENAME}}]] }}}}</includeonly> 365dec2816e1ee347d5d8be208b2bc63cc7df513 Greece 0 243 3299 3241 2023-11-12T13:27:53Z Führerredux 2 wikitext text/x-wiki {{Infobox country | native_name = Ἑλληνικὴ Δημοκρατία | conventional_long_name = Hellenic Republic | era = 1936 | government_type = [[Presidential Republic]] | event_start = Established | date_start = 25 March | year_start = 1924 | p1 = Kingdom of Greece | flag_p1 = Flag of Greece (1822-1978).svg | image_flag = File:Flag_of_Greece_(1822-1978).svg | flag_alt = Flag of the Hellenic Republic | flag_type = National flag | image_coat = Coat of arms of Greece (1924–1935).svg | coat_alt = Coat of arms of the Hellenic Republic | symbol = Coat of arms of Greece | symbol_type = Coat of arms | image_map = Hellenic_Republic(1936).png | image_map_alt = Locator map of the Hellenic Republic | image_map_caption = The Hellenic Republic in 1935 | capital = Athens | languages_type = Official language<br />{{nobold|and national language}} | leader_name2 = [[Elefthérios Kyriákou Venizélos]] | coa_size = 90 | englishmotto = Freedom or Death | title_leader = [[President of the Hellenic Republic|President]] | common_name = Greece | national_motto = Ελευθερία ή Θάνατος | national_anthem = «Ύμνος εις την Ελευθερίαν»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}} | common_languages = Greek (Katharevousa has official status, while Demotic is popular) | currency = Drachmae | religion = Eastern Orthodox | ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.32% [[Albabians]] | 9.40% [[Turks]] }} | largest_city = capital | languages = Greek | demonym = Greek, Hellene | leader1 = Pavlos Kountouriotis | year_leader1 = 1924–1926 | leader2 = Theodoros Pangalos | year_leader2 = 1926 | leader3 = Pavlos Kountouriotis | year_leader3 = 1926–1929 | leader4 = Alexandros Zaimis | year_leader4 = 1929–1936 | deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}} | deputy2 = [[Eleftherios Venizelos]] | year_deputy1 = 1924 <small>(first)</small> | year_deputy2 = 1933–1936 <small>(last)</small> | title_deputy = Prime Minister | leader_title1 = President of the Hellenic Republic | leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span> | leader_title2 = Prime Minister | legislature = Hellenic Parliament | house1 = Hellenic Senate | type_house1 = Upper house | house2 = Chamber of Deputies | type_house2 = Lower house | date_format = DD/MM/YYYY | drives_on = left | calling_code = +30 | iso3166code = GR | sovereignty_type = Establishment history | established_event1 = Independence declared {{nobold|from the [[Ottoman Empire]]}} | established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the Greek War of Independence), {{nowrap|15 January 1822}} (official declaration) | established_event2 = Recognised | established_date2 = {{nowrap|3 February 1830}} | established_event3 = Second Hellenic Republic | established_date3 = 25 March 1924 | established_event4 = {{nowrap|Current constitution}} | established_date4 = 3 June 1927 | population_estimate = 13,000,000 }} The Second Hellenic Republic, established in 1924, emerged from the aftermath of the Balkan Wars and World War I, marked by territorial expansion and political upheavals. Led by Ethnarch Elefthérios Venizélos, the Republic faced internal power struggles, economic challenges, and the impending threat of conflict. This article delves into the key events and circumstances that shaped the political landscape of Greece during this period. == History == === The Formation of the Second Hellenic Republic === Following the victorious outcome of the 1912-1913 Balkan Wars, Greece experienced territorial growth but found itself navigating a complex international situation. The assassination of Archduke Franz Ferdinand in 1914 triggered a chain of events that led to a divergence in Greece's stance, with Venizélos advocating for Entente support while the monarchy leaned towards [[Germany]]. This disagreement culminated in a power struggle between Liberals led by Venizélos and Royalists supporting the monarchy. Unconstitutional actions, including the dismissal of Venizélos by the King, set the stage for the establishment of the State of National Defense in Thessaloniki, aligning Greece with the Entente. Venizélos, rejecting the monarchy, declared the establishment of the Second Hellenic Republic, leading to a divided nation for nine months until an Allied ultimatum forced the Royal Family into exile. === The Great War and the Greco-Turkish War === Under Venizélos' leadership, Greece actively participated in World War I, securing victory alongside the Entente. The subsequent Asia Minor Campaign, aimed at the Partition of the Ottoman Empire, further shaped the Republic's destiny. The Treaty of Sèvres ratified the outcomes, but economic challenges loomed large. The years following the war saw Venizélos' Liberal Party dominating elections, implementing reforms, and purging remaining royalist sentiments. Despite these political successes, economic woes persisted, particularly in Smyrna, which lacked access to deep Anatolian raw materials and faced mounting debts. Unrest simmered within the population as the Hellenic Republic entered 1936. === The Rise of Valkism in Greece === As the threat of war loomed, the Hellenic Republic faced new challenges. Anti-Venizelist sentiment, a persistent issue, threatened political stability. The specter of conflict with the Ottomans, seeking the return of lost territories, added to the Republic's vulnerabilities. Additionally, the rise of the [[Golden Dawn]] [[Valkism|Valkists]], fueled by anti-Turkish sentiments, presented a formidable force. === Prospects for the Future === As the Second Hellenic Republic approaches the 1936 elections, uncertainties abide. The nation stands at a crossroads, grappling with economic hardships, political divisions, and the looming threat of external conflicts. The anti-Venizelist sentiment and the rise of Valkism cast a shadow over Greece's future. Only time will reveal whether the nation of the Hellenes ccan withstand the challenges that lay ahead. Amidst political tensions and potential military conflicts, the economic crisis stands out as a paramount concern. Ignoring the economic challenges may have dire consequences for the Greece. === The International Straits Commision === {{main|International Straits Commision}} Established in the aftermath of the [[Ottoman Empire]]'s defeat in the Great War, the ISC's primary objective is to ensure free access to the Bosporus for all vessels and maintain peace in the region. Despite facing challenges, the ISC has demonstrated stability, garnering international support and providing citizens with various freedoms. Over the years, the ISC has transformed into more than just a strategic waterway. The commission's support for freedom of religion has led to an increase in membership for the Patriarchate of Constantinople. This has resulted in the straits taking on characteristics akin to a new state, complete with its own unique culture. However, this evolution has also given rise to a significant portion of the population advocating for the abolition of the ISC and the declaration of an independent state. The ISC's stability faces external threats from expansionist ambitions of Greece and the revanchism of the Turks. Both Athens and Ankara harbor dissatisfaction with the outcomes of the Great War, placing the ISC in a precarious position. To ensure the survival of the free straits, decisive action is imperative, considering the looming threats and geopolitical challenges. [[Category:Articles with hatnote templates targeting a nonexistent page]] [[Category:Important Minors]] [[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|TGreece]] [[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|TGreece]] 370e147749c5f725ce58f51d146c43e0058039d0 File:World Map 1936.svg 6 1742 3300 2023-11-12T14:08:40Z Führerredux 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Coat of Arms of Deutsches Reich.png 6 1743 3303 2023-11-12T14:27:33Z Führerredux 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 UserWiki:Führerredux 200 1744 3309 2023-11-12T18:53:59Z Führerredux 2 import user wiki wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709